説明

データストレージデバイスにおけるバックグラウンドガーベッジコレクションのホスト制御

装置は、フラッシュメモリデータストレージデバイス(100)と、インターフェイス(108)を介してデータストレージデバイス(100)に機能的に結合されたホスト(106、350)とを含む。フラッシュメモリデータストレージデバイス(100)は、複数のメモリチップ(118a、118b、218)を含む。ホスト(106、350)は、ホスト(106、350)のアクティビティを監視する(402)ように構成されたホストアクティビティ監視エンジン(360)と、メモリチップ(118a、118b、218)で実行されるバックグラウンドガーベッジコレクションを制御する(408)ように構成されたガーベッジコレクション制御エンジン(358)とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2009年4月8日に出願された「データストレージデバイス(Data Storage Device)」と題する米国仮出願第61/167,709号、2009年6月17日に出願された「フラッシュメモリデータストレージデバイスにおけるパーティショニング及びストライピング(Partitioning and Striping in a Flash Memory Data Storage Device)」と題する米国仮出願第61/187,835号、2010年2月14日に出願された「データストレージデバイス(Data Storage Device)」と題する米国仮出願第61/304,469号、2010年2月14日に出願された「データストレージデバイス(Data Storage Device)」と題する米国仮出願第61/304,468号、及び2010年2月14日に出願された「データストレージデバイス(Data Storage Device)」と題する米国仮出願第61/304,475号の利益を主張するものである。上記で参照される出願は各々、全体として引用により本明細書中に組み込まれている。
【0002】
(技術分野)
本説明は、データストレージデバイスに関し、具体的には、データストレージデバイスにおけるバックグラウンドガーベッジコレクションのホスト制御に関する。
【背景技術】
【0003】
(背景)
データストレージデバイスは、データを格納するために使用することができる。データストレージデバイスは、コンピューティングデバイスのデータストレージの必要性に備えるためにコンピューティングデバイスと共に使用することができる。場合によっては、膨大量のデータをデータストレージデバイスに格納することが望ましいこともある。また、データストレージデバイスとの間でデータの迅速な読み取り及び書き込みを行うためのコマンドを実行することが望ましい場合もある。
【発明の概要】
【課題を解決するための手段】
【0004】
(要旨)
一般的な態様において、ホストとメモリデバイスとの間でデータを転送する方法は、ホストのアクティビティを監視することと、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することとを含む。
【0005】
実施態様は、1つ以上の以下の特徴を含む。たとえば、メモリデバイスは、フラッシュメモリチップを含むことができる。ホストのアクティビティを監視することは、ホストのプロセッサの使用レベルを監視することを含むことができ、方法はさらに、使用レベルがあらかじめ定められたレベルを超えると決定することを含むことができ、次いで、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、使用レベルがあらかじめ定められたレベルを超えるという決定に応答してバックグラウンドガーベッジコレクションに充てられるデータストレージデバイスのプロセッサのサイクルの量を制限することを含むことができる。ホストのアクティビティを監視することは、メモリデバイスからホストへのデータ読み取りの速度を監視することを含むことができ、方法はさらに、データ読み取りの速度があらかじめ定められた速度を超えると決定することを含むことができ、次いで、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データ読み取りの速度があらかじめ定められたレベルを超えている間、バックグラウンドガーベッジコレクションを一時停止させることを含むことができる。
【0006】
ホストのアクティビティを監視することは、メモリデバイスからホストへのデータ読み取りの速度を監視することを含むことができ、方法はさらに、データ読み取りの速度があらかじめ定められた速度を超えると決定することを含み、次いで、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データ読み取りの速度があらかじめ定められた速度を超えている間、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを含むことができる。ホストのアクティビティを監視することは、メモリデバイスからホストにデータが読み取られる特定の読み取りイベントが発生するという信号を受信することを含むことができ、次いで、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、信号の受信に応答して、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを含むことができる。
【0007】
監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、ホストデバイスから、メモリデバイスのメモリブロックのブロックで実行される書き込み操作を監視することと、メモリデバイスの対象メモリブロックでバックグラウンドガーベッジコレクションを実行するよう指示する命令をホストデバイスからメモリデバイスに送信することと、ホストにおいて、バックグラウンドガーベッジコレクションをしきい値量未満に制限することと、次いで、後に、バックグラウンドガーベッジコレクションがしきい値量を超えることを許容することとを含むことができる。監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、バックグラウンドガーベッジコレクションをしきい値量未満に制限するようメモリデバイスのガーベッジコレクタに指示するための信号をホストからメモリデバイスに送信することと、次いで、後に、バックグラウンドガーベッジコレクションの制限が終了したことをメモリデバイスのガーベッジコレクタに指示するための信号をホストからメモリデバイスに送信することとを含むことができる。
【0008】
方法はさらに、特定の高優先順位読み取りイベントの発生が予想されると決定することを含むことができ、バックグラウンドガーベッジコレクションをしきい値量未満に制限するようメモリデバイスのガーベッジコレクタに指示するための信号は、決定に基づいてもよい。1つ以上のドキュメントに対するクエリが受信されてもよく、監視されたアクティビティは、クエリに応答してメモリデバイスからデータを取り出すことを含むことができ、バックグラウンドガーベッジコレクションをしきい値量未満に制限するようメモリデバイスのガーベッジコレクタに指示するために、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データがメモリデバイスから取り出される間、バックグラウンドガーベッジコレクションをブロックすることを含む。
【0009】
もう1つの一般的な態様において、装置は、フラッシュメモリデータストレージデバイスと、インターフェイスを介してデータストレージデバイスに機能的に結合されたホストとを含む。フラッシュメモリデータストレージデバイスは、複数のメモリチップを含む。ホストは、ホストのアクティビティを監視するように構成されたホストアクティビティ監視エンジンと、データストレージデバイスのガーベッジコレクタによって実行されるバックグラウンドガーベッジコレクションを制御するように構成されたガーベッジコレクション制御エンジンとを含む。
【0010】
実施態様は、1つ以上の以下の特徴を含む。たとえば、ホストのアクティビティを監視することは、ホストのプロセッサの使用レベルを監視することを含むことができ、ホストアクティビティ監視エンジンはさらに、使用レベルがあらかじめ定められたレベルを超えると決定するように構成されてもよく、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、使用レベルがあらかじめ定められたレベルを超えるという決定に応答してバックグラウンドガーベッジコレクションに充てられるデータストレージデバイスのプロセッサのサイクルの量を制限することを含むことができる。
【0011】
ホストのアクティビティを監視することは、メモリデバイスからホストへのデータ読み取りの速度を監視すること、及びデータ読み取りの速度があらかじめ定められた速度を超えると決定することを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データ読み取りの速度があらかじめ定められたレベルを超えている間、バックグラウンドガーベッジコレクションを一時停止させることを含むことができる。ホストのアクティビティを監視することは、メモリデバイスからホストへのデータ読み取りの速度を監視すること、及びデータ読み取りの速度があらかじめ定められた速度を超えると決定することを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データ読み取りの速度があらかじめ定められた速度を超えている間、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを含むことができる。
【0012】
ホストのアクティビティを監視することは、メモリデバイスからホストにデータが読み取られる特定の読み取りイベントが発生するという信号を受信することを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、信号の受信に応答して、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを含むことができる。監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、ホストデバイスから、メモリデバイスのメモリブロックのブロックで実行される書き込み操作を監視することと、メモリデバイスの対象メモリブロックでバックグラウンドガーベッジコレクションを開始するよう指示する命令をホストデバイスからメモリデバイスに送信することと、ホストにおいて、バックグラウンドガーベッジコレクションをしきい値量未満に制限することと、次いで、後に、バックグラウンドガーベッジコレクションがしきい値量を超えることを許容することとを含むことができる。
【0013】
ホストは、特定の高優先順位読み取りイベントの発生が予想されると決定するように構成されたプロセッサをさらに含むことができ、バックグラウンドガーベッジコレクションをしきい値量未満に制限することは、決定に基づいてもよい。ホストは、1つ以上のドキュメントに対するクエリを受信するように適合されたクエリハンドラをさらに含むことができ、監視されたアクティビティは、クエリに応答してメモリデバイスからデータを取り出すことを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データがメモリデバイスから取り出される間、バックグラウンドガーベッジコレクションをブロックすることを含むことができる。
【0014】
メモリデバイスは、複数のメモリチップを含むことができる。バックグラウンドガーベッジコレクションを制御することは、複数のメモリチップの異なるメモリチップ上でバックグラウンドガーベッジコレクションの量を別々に制御することを含むことができる。
【0015】
もう1つの一般的な態様において、装置は、フラッシュメモリデータストレージデバイスと、インターフェイスを介してデータストレージデバイスに機能的に結合されたホストとを含む。フラッシュメモリデータストレージデバイスは、複数のメモリチップと、メモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを実行するように構成されたガーベッジコレクタとを含む。ホストは、ホストのアクティビティを監視するように構成されたホストアクティビティ監視エンジンと、データストレージデバイスのガーベッジコレクタによって実行されるバックグラウンドガーベッジコレクションを制御するように構成されたガーベッジコレクション制御エンジンとを含む。
【0016】
実施態様は、1つ以上の以下の特徴を含む。たとえば、ホストのアクティビティを監視することは、ホストのプロセッサの使用レベルを監視することを含むことができ、ホストアクティビティ監視エンジンは、使用レベルがあらかじめ定められたレベルを超えると決定するようにさらに構成され、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、使用レベルがあらかじめ定められたレベルを超えるという決定に応答してバックグラウンドガーベッジコレクションに充てられるデータストレージデバイスのプロセッサのサイクルの量を制限することを含むことができる。ホストのアクティビティを監視することは、メモリデバイスからホストへのデータ読み取りの速度を監視すること、及びデータ読み取りの速度があらかじめ定められたレベルを超えると決定することを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データ読み取りの速度があらかじめ定められたレベルを超えている間、バックグラウンドガーベッジコレクションを一時停止させることを含むことができる。
【0017】
ホストのアクティビティを監視することは、メモリデバイスからホストへのデータ読み取りの速度を監視すること、及びデータ読み取りの速度があらかじめ定められた速度を超えると決定することを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データ読み取りの速度があらかじめ定められた速度を超えている間、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを含むことができる。ホストのアクティビティを監視することは、メモリデバイスからホストにデータが読み取られる特定の読み取りイベントが発生するという信号を受信することを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、信号の受信に応答して、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを含むことができる。
【0018】
監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、バックグラウンドガーベッジコレクションをしきい値量未満に制限するようメモリデバイスのガーベッジコレクタに指示するための信号をホストからメモリデバイスに送信することと、次いで、後に、バックグラウンドガーベッジコレクションの制限が終了したことをメモリデバイスのガーベッジコレクタに指示するための信号をホストからメモリデバイスに送信することとを含むことができる。ホストは、特定の高優先順位読み取りイベントの発生が予想されると決定するように構成されたプロセッサを含むことができ、信号は、決定に基づいてもよい。
【0019】
ホストは、1つ以上のドキュメントに対するクエリを受信するように適合されたクエリハンドラをさらに含むことができ、監視されたアクティビティは、クエリに応答してメモリデバイスからデータを取り出すことを含むことができ、監視されたアクティビティに応答してメモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することは、データがメモリデバイスから取り出される間、バックグラウンドガーベッジコレクションをブロックすることを含むことができる。
【0020】
メモリデバイスは、複数のメモリチップを含むことができる。データストレージデバイスのガーベッジコレクタによって実行されるバックグラウンドガーベッジコレクションを制御することは、データストレージデバイスのガーベッジコレクタによって実行される複数のメモリチップの異なるメモリチップ上のバックグラウンドガーベッジコレクションの量を別々に制御することを含むことができる。データストレージデバイスのガーベッジコレクタによって実行されるバックグラウンドガーベッジコレクションを制御することは、データストレージデバイスのガーベッジコレクタによって実行される複数のメモリチップの異なるメモリチップ上のバックグラウンドガーベッジコレクションの量を別々に制御することを含むことができる。
【0021】
1つ以上の実施態様の詳細は、添付の図面及び以下の説明において示される。その他の特徴は、説明及び図面、並びに特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0022】
【図1】データストレージデバイスを示す例示的なブロック図である。
【0023】
【図2】図1のデータストレージデバイスにおいて使用されうるFPGAコントローラを示す例示的なブロック図である。
【0024】
【図3A】図1のデータストレージデバイスと共に使用する例示的なコンピューティングデバイスを示す例示的なブロック図である。
【0025】
【図3B】図1のデータストレージデバイスと共に使用する例示的なコンピューティングデバイスを示す例示的なブロック図である。
【0026】
【図4】図1のデータストレージデバイスをパーティションする例示のプロセスを示す例示的な流れ図である。
【発明を実施するための形態】
【0027】
(詳細な説明)
本文書は、データストレージのための装置、(1つ以上の)システム、及び技法を説明する。そのようなデータストレージ装置は、1つ以上の異なるメモリボードと共に使用されうるコントローラを有するコントローラボードを含むことができ、メモリボードは各々複数のフラッシュメモリチップを有する。データストレージ装置は、コントローラボード上のインターフェイスを使用してホストと通信することができる。このように、コントローラボード上のコントローラは、インターフェイスを使用してホストからコマンドを受信し、メモリボード上のフラッシュメモリチップを使用してそれらのコマンドを実行するように構成されてもよい。
【0028】
図1は、データストレージデバイス100を示すブロック図である。データストレージデバイス100は、コントローラボード102及び1つ以上のメモリボード104a及び104bを含むことができる。データストレージデバイス100は、インターフェイス108を介してホスト106と通信することができる。インターフェイス108は、ホスト106とコントローラボード102の間にあってもよい。コントローラボード102は、コントローラ110、DRAM 111、複数のチャネル112、電源モジュール114、及びメモリモジュール116を含むことができる。メモリボード104a及び104bは、各メモリボード上に複数のフラッシュメモリチップ118a及び118bを含むことができる。メモリボード104a及び104bはまた、メモリデバイス120a及び120bを含むことができる。
【0029】
一般に、データストレージデバイス100は、フラッシュメモリチップ118a及び118b上にデータを格納するように構成されてもよい。ホスト106は、フラッシュメモリチップ118a及び118bとの間でデータの書き込み及び読み取りを行うことができ、さらにフラッシュメモリチップ118a及び118bに関してその他の操作を実行させるようにすることができる。ホスト106とフラッシュメモリチップ118a及び118bとの間のデータの読み取り及び書き込み、並びにその他の操作は、コントローラボード102上のコントローラ110を通じて処理され、制御されてもよい。コントローラ110は、ホスト106からコマンドを受信して、メモリボード104a及び104b上のフラッシュメモリチップ118a及び118bを使用してそれらのコマンドを実行させてもよい。ホスト106とコントローラ110との間の通信は、インターフェイス108を通じて行われてもよい。コントローラ110は、チャネル112を使用して、フラッシュメモリチップ118a及び118bと通信することができる。
【0030】
コントローラボード102は、DRAM 111を含むことができる。DRAM 111は、コントローラ110に機能的に結合されてもよく、情報を格納するために使用されてもよい。たとえば、DRAM 111は、論理アドレスから物理アドレスへのマップ及び不良ブロックの情報を格納するために使用されてもよい。DRAM 111はまた、ホスト106とフラッシュメモリチップ118a及び118bとの間のバッファとして機能するように構成されてもよい。
【0031】
1つの例示的な実施態様において、コントローラボード102及び各々のメモリボード104a及び104bは、物理的に別個のプリント基板(PCB)である。メモリボード104aは、コントローラボード102のPCBに機能的に接続されている1つのPCB上にあってもよい。たとえば、メモリボード104aは、コントローラボード102に物理的及び/又は電気的に接続されてもよい。同様に、メモリボード104bは、メモリボード104aから分離されたPCBでもよく、コントローラボード102のPCBに機能的に接続されてもよい。たとえば、メモリボード104bは、コントローラボード102に物理的及び/又は電気的に接続されてもよい。
【0032】
メモリボード104a及び104bは各々、コントローラボード102から別個に切断されて取り外し可能であってもよい。たとえば、メモリボード104aは、コントローラボード102から切断されて、別のメモリボード(図示せず)に置き換えられてもよく、その別のメモリボードはコントローラボード102に機能的に接続される。この例において、メモリボード104a及び104bのいずれか又は両方は、他のメモリボードが同じコントローラボード102及びコントローラ110で動作できるように、他のメモリボードでスワップアウトされてもよい。
【0033】
1つの例示的な実施態様において、コントローラボード102及び各々のメモリボード104a及び104bは、ディスクドライブフォームファクタで物理的に接続されてもよい。ディスクドライブフォームファクタは、たとえば3.5”ディスクドライブフォームファクタ及び2.5”ディスクドライブフォームファクタのような、さまざまなサイズを含むことができる。
【0034】
1つの例示的な実施態様において、コントローラボード102及び各々のメモリボード104a及び104bは、高密度ボールグリッドアレイ(ball grid array)(BGA)コネクタを使用して電気的に接続されてもよい。たとえば、ファインボールグリッドアレイ(fine ball grid array)(FBGA)コネクタ、ウルトラファインボールグリッドアレイ(ultra fine ball grid array)(UBGA)コネクタ、及びマイクロボールグリッドアレイ(micro ball grid array)(MBGA)コネクタを含むその他のBGAコネクタの変種が使用されてもよい。その他のタイプの電気接続手段が使用されてもよい。
【0035】
インターフェイス108は、コントローラ110とホスト106との間の高速インターフェイスを含むことができる。高速インターフェイスは、ホスト106とフラッシュメモリチップ118a及び118bとの間のデータの高速転送を可能にすることができる。1つの例示的な実施態様において、高速インターフェイスは、Peripheral Component Interconnect Express(PCIe)インターフェイスを含むことができる。たとえば、PCIeインターフェイスは、PCIe x4インターフェイス又はPCIe x8インターフェイスであってもよい。PCIeインターフェイス108は、ホスト106へのPCIeコネクタケーブルアセンブリを含むことができる。この例において、110は、ホスト106とインターフェイス108との間のインターフェイスをとるように構成されたインターフェイスコントローラを含むことができる。インターフェイスコントローラは、PCIeエンドポイントコントローラを含むことができる。その他の高速インターフェイス、コネクタ、及びコネクタアセンブリが使用されてもよい。
【0036】
1つの例示的な実施態様において、コントローラボード102とメモリボード104a及び104b上のフラッシュメモリチップ118a及び118bとの間の通信は、複数のチャネル112に配置されて構成されてもよい。各々のチャネル112は、1つ以上のフラッシュメモリチップ118a及び118bと通信することができる。コントローラ110は、ホスト106から受信されたコマンドが、各々のチャネル112を使用して、同時に、又は少なくとも実質的に同時にコントローラ110によって実行されうるように構成されてもよい。このように、複数のコマンドは、異なるチャネル112で同時に実行することができ、データストレージデバイス100のスループットを向上させることができる。
【0037】
図1の例において、20個のチャネル112が示される。完全な実線は、コントローラ110とメモリボード104a上のフラッシュメモリチップ118aとの間の10個のチャネルを示す。実線及び破線の混合線は、コントローラ110とメモリボード104b上のフラッシュメモリチップ118bとの間の10個のチャネルを示す。図1に示すように、各々のチャネル112は、複数のフラッシュメモリチップをサポートすることができる。たとえば、各々のチャネル112は、最大32個のフラッシュメモリチップをサポートすることができる。1つの例示的な実施態様において、20個のチャネルは各々、6個のフラッシュメモリチップをサポートして通信するように構成されてもよい。この例において、各々のメモリボード104a及び104bは、それぞれ60個のフラッシュメモリチップを含むことができる。フラッシュメモリチップ118a及び118bのタイプ及び数に応じて、データストレージ100デバイスは、最大多数テラバイトのデータまで格納するように構成されてもよい。
【0038】
コントローラ110は、マイクロコントローラ、FPGAコントローラ、その他のタイプのコントローラ、又はそれらのコントローラの組み合わせを含むことができる。1つの例示的な実施態様において、コントローラ110はマイクロコントローラである。マイクロコントローラは、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実施されてもよい。たとえば、マイクロコントローラは、実行されると、特定の方法でマイクロコントローラに実行させることができる命令を含むコンピュータプログラム製品がメモリ(たとえば、メモリモジュール116)からロードされてもよい。マイクロコントローラは、インターフェイス108を使用してホスト106からコマンドを受信し、コマンドを実行するように構成されてもよい。たとえば、コマンドは、フラッシュメモリチップ118a及び118bを使用してデータのブロックの読み取り、書き込み、コピー、及び削除を行うコマンド、並びにその他のコマンドを含むことができる。
【0039】
もう1つの例示的な実施態様において、コントローラ110はFPGAコントローラである。FPGAコントローラは、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実施されてもよい。たとえば、FPGAコントローラは、実行されると、特定の方法でFPGAコントローラに実行させることができる命令を含むファームウェアがメモリ(たとえば、メモリモジュール116)からロードされてもよい。FPGAコントローラは、インターフェイス108を使用してホスト106からコマンドを受信し、コマンドを実行するように構成されてもよい。たとえば、コマンドは、フラッシュメモリチップ118a及び118bを使用してデータのブロックの読み取り、書き込み、コピー、及び削除を行うコマンド、並びにその他のコマンドを含むことができる。
【0040】
メモリモジュール116は、コントローラ110にロードされうるデータを格納するように構成されてもよい。たとえば、メモリモジュール116は、FPGAコントローラの1つ以上のイメージを格納するように構成されてもよく、イメージはFPGAコントローラによって使用されるファームウェアを含む。メモリモジュール116は、ホスト106と通信するために、ホスト106とのインターフェイスをとることができる。メモリモジュール116は、ホスト106と直接インターフェイスをとることができる、及び/又はコントローラ110を通じてホスト106と間接的にインターフェイスをとることができる。たとえば、ホスト106は、ファームウェアの1つ以上のイメージを、格納のためにメモリモジュール116に伝達することができる。1つの例示的な実施態様において、メモリモジュール116は、電気的消去可能プログラマブルROM(electrically erasable programmable read-only memory)(EEPROM)を含む。メモリモジュール116はまた、その他のタイプのメモリモジュールを含むことができる。
【0041】
メモリボード104a及び104bは、さまざまなタイプのフラッシュメモリチップ118a及び118bで動作するように構成されてもよい。1つの例示的な実施態様において、フラッシュメモリチップ118a及びフラッシュメモリチップ118bは、電源モジュール114から同じ電圧を必要とすること、及び同じフラッシュメモリチップベンダーのものであることを含む同じタイプのフラッシュメモリチップであってもよい。ベンダー及び製造元という用語は、本文書全体を通じて同義的に使用される。
【0042】
1つの例示的な実施態様において、メモリボード104a上のフラッシュメモリチップ118aは、メモリボード104b上のフラッシュメモリチップ118bとは異なるタイプであってもよい。たとえば、メモリボード104aはSLC NANDフラッシュメモリチップを含むことができ、メモリボード104bはMLC NANDフラッシュメモリチップを含むことができる。もう1つの例において、メモリボード104aはあるフラッシュメモリチップ製造元によるラッシュメモリチップを含むこともあり、メモリボード104bは別のフラッシュメモリチップ製造元によるフラッシュメモリチップを含むこともある。すべて同じタイプのフラッシュメモリチップを備えるか、又は異なるタイプのフラッシュメモリチップを備えるという柔軟性があるため、データストレージデバイス100は、ホスト106に使用されているさまざまなアプリケーションに合わせて調整することができる。
【0043】
もう1つの例示的な実施態様において、メモリボード104a及び104bは、同じメモリボード上に異なるタイプのフラッシュメモリチップを含むことができる。たとえば、メモリボード104aは、同じPCB上にSLC NANDチップとMLC NANDチップの両方を含むことができる。同様に、メモリボード104bは、SLC NANDチップとMLC NANDチップの両方を含むことができる。このように、データストレージデバイス100は、ホスト106の仕様に適合するように有利に調整されてもよい。
【0044】
もう1つの例示的な実施態様において、メモリボード104a及び104bは、フラッシュメモリ以外のチップを含む、その他のタイプのメモリデバイスを含むことができる。たとえば、メモリボード104a及び104bは、たとえばダイナミックRAM(DRAM)及びスタティックRAM(SRAM)のようなランダムアクセスメモリ(RAM)、並びにその他のタイプのRAM及びその他のタイプのメモリデバイスを含むこともできる。1つの例示的な実施態様において、メモリボード104a及び104bはいずれも、RAMを含むことができる。もう1つの例示的な実施態様において、メモリボードの一方はRAMを含み、もう一方のメモリボードはフラッシュメモリチップを含むことができる。また、メモリボードの一方は、RAM及びフラッシュメモリチップの両方を含むことができる。
【0045】
メモリボード104a及び104b上のメモリモジュール120a及び120bは、それぞれフラッシュメモリチップ118a及び118bに関連する情報を格納するために使用されてもよい。1つの例示的な実施態様において、メモリモジュール120a及び120bは、フラッシュメモリチップのデバイス特性を格納することができる。デバイス特性は、チップがSLCチップ又はMLCのいずれであるか、チップがNAND又はNORチップのいずれであるか、チップセレクトの数、ブロックの数、ブロックあたりのページの数、ページあたりのバイトの数、及びチップの速度を含むことができる。
【0046】
1つの例示的な実施態様において、メモリモジュール120a及び120bは、シリアルEEPROMを含むことができる。EEPROMは、デバイス特性を格納することができる。デバイス特性は、任意の所定のタイプのフラッシュメモリチップに対して1回コンパイルされてもよく、適切なEEPROMイメージがデバイス特性と共に生成されてもよい。メモリボード104a及び104bがコントローラボード102に機能的に接続される場合、デバイス特性は、コントローラ110が制御しているフラッシュメモリチップ118a及び118bのタイプをコントローラ110が自動的に認識できるように、EEPROMから読み取られてもよい。加えて、デバイス特性は、特定の1つ以上のタイプのフラッシュメモリチップ118a及び118bの適切なパラメータにコントローラ110を構成するために使用されてもよい。
【0047】
1つの例示的な実施態様において、データストレージデバイス100は、データストレージデバイス100から迅速に読み取られて、ホスト106に供給される必要のある膨大量のデータ(たとえば、多数ギガバイト又はテラバイトのデータ)を格納するために使用されてもよい。たとえば、データストレージデバイス100は、クエリに応答してホストが取り出すことのできる大量の公的にアクセス可能な情報(たとえば、ワールドワイドウェブからの大量のウェブページのコーパス、電子版書籍の大規模なライブラリ、又は大量の通信を表すデジタル情報など)をキャッシュに入れるために使用されてもよい。もう1つの例において、データストレージデバイス100は、公的にアクセス可能なドキュメントの索引を格納するために使用されてもよく、索引はクエリに応答してドキュメントの位置を見つけるために使用されてもよい。つまり、関連データは、ホストによって発行される読み取りコマンドに応答して極めて迅速にアクセスされ、返されることが重要となりうる。しかし、データストレージデバイスに格納されている情報はまた、関連情報の変化に応じて情報を最新の状態に維持するために、常時更新される必要もある。たとえば、ストレージデバイス上の情報がウェブページのコーパスに関連する場合、ストレージデバイス上に格納されている情報は、ウェブページが変更されるごと、及び新しいウェブページが作成されるごとに更新される必要もある。
【0048】
上記で説明されるように、コントローラ110は、FPGAコントローラを含むことができる。図2を参照すると、FPGAコントローラ210を示す例示的なブロック図が示される。FPGAコントローラは、図1のコントローラ110に関して上記で説明されたように動作するよう構成されてもよい。FPGAコントローラ210は、複数のチャネル112をフラッシュメモリチップ218に接続するために複数のチャネルコントローラ250を含むことができる。フラッシュメモリチップ218は、各々のチャネルコントローラ250に接続する複数のフラッシュメモリチップとして示される。フラッシュメモリチップ218は、図1の別個のメモリボード104a及び104b上にある、図1のフラッシュメモリチップ118a及び118bの代表である。別個のメモリボードは、図2の例には示されていない。FPGAコントローラ210は、PCIeインターフェイスモジュール208、双方向ダイレクトメモリアクセス(DMA)コントローラ252、ダイナミックランダムアクセスメモリ(DRAM)コントローラ254、コマンドプロセッサ/キュー256、情報及び構成インターフェイスモジュール258、及びガーベッジコレクタコントローラ260を含むことができる。
【0049】
情報は、インターフェイスを使用してホスト(たとえば、図1のホスト106)との間で伝達されてもよい。図2に示される例において、FPGAコントローラ210は、ホスト及びPCIeインターフェイスモジュール208と通信するためにPCIeインターフェイスを含む。PCIeインターフェイスモジュール208は、ホストからコマンドを受信して、ホストにコマンドを送信するように、配置され構成されてもよい。PCIeインターフェイスモジュール208は、ホストとデータストレージデバイスとの間のデータフロー制御をもたらすことができる。PCIeインターフェイスモジュール208は、ホストとコントローラ210、及び最終的にはフラッシュメモリチップ218との間のデータの高速転送を可能にすることができる。1つの例示的な実施態様において、PCIeインターフェイス及びPCIeインターフェイスモジュール208は、64ビットバスを含むことができる。双方向ダイレクトメモリアクセス(DMA)コントローラ252は、PCIeインターフェイスモジュール208とコマンドプロセッサ/キュー256間のバスの動作を制御するように配置され構成されてもよい。
【0050】
双方向DMAコントローラ252は、PCIeインターフェイス208、及び各々のチャネルコントローラ250とのインターフェイスをとるように構成されてもよい。双方向DMAコントローラ252は、ホスト106とフラッシュメモリチップ218との間の双方向ダイレクトメモリアクセスを可能にする。
【0051】
DRAMコントローラ254は、論理アドレスから物理アドレスへの変換を制御するように配置され構成されてもよい。たとえば、ホストが論理アドレスを使用してメモリスペースをアドレス指定する実施態様において、DRAMコントローラ254は、コマンドプロセッサ/キュー256が、ホストに使用されている論理アドレスを、フラッシュメモリチップ218との間で書き込み中又は読み取り中のデータに関連するフラッシュメモリチップ218内の実際の物理アドレスに変換する操作を補助することができる。ホストから受信された論理アドレスは、フラッシュメモリチップ218の1つの位置の物理アドレスに変換されてもよい。同様に、フラッシュメモリチップ218の1つの位置の物理アドレスは、論理アドレスに変換されて、ホストに伝達されてもよい。
【0052】
コマンドプロセッサ/キュー256は、PCIeインターフェイスモジュール208を通じてホストからコマンドを受信し、チャネルコントローラ250を通じてコマンドの実行を制御するように、配置され構成されてもよい。コマンドプロセッサ/キュー256は、実行されるべき複数のコマンドのキューを保持し、最も古いコマンドが確実に最初に処理されるように番号付きリストを使用してコマンドを順序付けることができる。コマンドプロセッサ/キュー256は、同じフラッシュメモリチップに指定されているコマンドの順序を保持することができ、異なるフラッシュメモリチップに指定されているコマンドを再配列することができる。このように、複数のコマンドは同時に実行されてもよく、各々のチャネル112は、同時に、又は少なくとも実質的に同時に使用されてもよい。
【0053】
コマンドプロセッサ/キュー256は、異なるチャネル112のコマンドを順不同に処理して、チャネルごとのコマンド順序付けを保持するように構成されてもよい。たとえば、ホストから受信されて、異なるチャネルに指定されているコマンドは、コマンドプロセッサ/キュー256によって順不同に処理されてもよい。このように、チャネルはビジー状態の場合もある。同じチャネルで処理されるようにホストから受信されるコマンドは、コマンドがホストからコマンドプロセッサ/キュー256によって受信された順序で処理されてもよい。1つの例示的な実施態様において、コマンドプロセッサ/キュー256は、コマンドが確実に適時に実行されるようにするため、古いもの順でホストから受信されたコマンドのリストを保持するように構成されてもよい。
【0054】
チャネルコントローラ250は、コマンドプロセッサ/キュー256からのコマンドを処理するように配置されて構成されてもよい。各々のチャネルコントローラ250は、複数のフラッシュメモリチップ218のコマンドを処理するように構成されてもよい。1つの例示的な実施態様において、各々のチャネルコントローラ250は、最大32個のフラッシュメモリチップ218のコマンドを処理するように構成されてもよい。
【0055】
チャネルコントローラ250は、コマンドプロセッサ/キュー256によって指定された順序で、コマンドプロセッサ/キュー256からのコマンドを処理するように構成されてもよい。処理されうるコマンドの例は、フラッシュページの読み取り、フラッシュページのプログラミング、フラッシュページのコピー、フラッシュブロックの消去、フラッシュブロックのメタデータの読み取り、フラッシュメモリチップの不良ブロックのマッピング、フラッシュメモリチップのリセットを含むが、これらに限定されることはない。
【0056】
情報及び構成インターフェイスモジュール258は、FPGAコントローラ210の構成情報を受信するために、メモリモジュール(たとえば、図1のメモリモジュール116)とのインターフェイスをとるように配置され構成されてもよい。たとえば、情報及び構成インターフェイスモジュール258は、ファームウェアをFPGAコントローラ210に提供するために、メモリモジュールから1つ以上のイメージを受信することができる。イメージ及びファームウェアへの変更は、ホストにより情報及び構成インターフェイスモジュール258を通じてコントローラ210に提供されてもよい。情報及び構成インターフェイスモジュール258を通じて受信された変更は、たとえば、PCIeインターフェイスモジュール208、双方向ダイレクトメモリアクセス(DMA)コントローラ252、DRAMコントローラ254、コマンドプロセッサ/キュー256、及びチャネルコントローラ250を含むコントローラ210のコンポーネントのいずれかに適用されてもよい。情報及び構成インターフェイスモジュール258は、1つ以上のレジスタを含むことができ、レジスタはホストからの命令により必要に応じて変更されてもよい。
【0057】
FPGAコントローラ210は、ホストと共に協働してコマンドを処理するように配置されて構成されてもよい。FPGAコントローラ210は、エラー訂正、不良ブロック管理、論理から物理へのマッピング、ガーベッジコレクション、消耗平準化、パーティショニング、及びフラッシュメモリチップ218に関連する低レベルフォーマッティングを実行することができるか、又は少なくともその操作を補助することができる。
【0058】
FPGAコントローラ210のガーベッジコレクションコントローラ260は、データストレージデバイス100のガーベッジコレクション操作を調整及び制御するために使用されてもよい。上記で説明されるように、メモリチップ218のセルはブロック単位で編成され、各ブロックは複数のページを含む。データは、メモリチップ218との間で、ページサイズの単位で書き込み及び読み取りされてもよいが、データは、メモリチップ218から消去されると、ブロックサイズの単位で消去される。加えて、フラッシュメモリチップ218は同じ場所で更新することはできない、すなわち、チップのページに書き込まれたデータは、新しいデータで上書きすることができない。代わりに、新しいデータは異なる位置に書き込む必要があり、古いデータは無効であることを宣言される必要がある。これらの制約により、データストレージデバイスのデータの更新時に、新しいデータが古いデータとは異なる物理位置に書き込まれて古いデータが無効を宣言される、アウトオブプレース更新方式が使用される必要がある。
【0059】
したがって、フラッシュメモリチップ218のページは、(1)フリー(ページはデータを含まず、新しいデータ又は更新されたデータの格納に使用することができる);(2)有効(ページは、読み取りに使用することができる新しいデータ又は最近更新されたデータを含む);又は(3)無効(ページは、廃止データ又は削除のマークが付けられたデータを含む)の3つの状態のうちの1つを有することができる。想像できるように、アウトオブプレース更新手順を使用してフラッシュメモリチップ218のデータを更新する一部のサイクルの後、多数のブロックが、有効ページ及び無効の両方を有することになり、新しいデータ又は更新されたデータを受信することができるフリーページの数が減少してしまう。
【0060】
したがって、メモリチップのフリーページを取り戻すためにガーベッジコレクションプロセスが使用される。ガーベッジコレクションプロセスにおいて、ブロックのページがフリーページとして取り戻されうるように、ブロックは、そのすべてのデータを消去させる対象となる。ブロックのページを消去する前に、ブロックの有効ページは、1つ以上の異なるブロックのフリーページ、又は1つ以上の異なるチップ218への新しい位置にコピーされる。対象ブロックのすべての有効ページが新しい位置に正常にコピーされた後、データが自由に書き込まれてもよいように、対象ブロックのページは消去される。
【0061】
ガーベッジコレクションはフラッシュメモリデバイスを使用するために重要であるが、ガーベッジコレクションはまた多大な時間を要する。それは、フラッシュメモリストレージデバイスにおいて、フラッシュメモリチップへの書き込み操作が、フラッシュメモリチップからの読み取り操作よりも、はるかに長い時間を要すること(たとえば、約10倍長い)、及び消去操作が書き込み操作よりもはるかに長い時間を要すること(たとえば、約10倍長い)に起因する。したがって、データストレージデバイス100からホスト106にファイルを読み取ることに関連する読み取り操作にガーベッジコレクション操作をインターリーブすることで、データストレージデバイスからホストへのデータファイルの読み取りを大幅に遅らせることができる。
【0062】
ガーベッジコレクションは、新しいデータ又は更新されたデータをチップに書き込むために、メモリチップ上にフリースペースを取り戻すことが必要な場合に実行されてもよい。たとえば、チップが、チップへの書き込みを意図されるデータを受信するために必要なフリーページよりも少ないフリーページしか含まない場合、チップに書き込まれるデータを受信するのに十分なページ数を取り戻すために、ガーベッジコレクションが十分なブロックを消去するように実行される必要がある。
【0063】
あるいは、メモリチップ218に書き込まれるデータを受信するのに十分なフリーページの数が存在するように、ガーベッジコレクションは、定期的にブロックを消去するため、及び比較的低い量で無効ページの数を保持するために、バックグラウンド操作で実行されてもよい。したがって、ガーベッジコレクタコントローラ260は、メモリチップ218のブロックで実行されている読み取り及び/又は書き込み操作を監視して、監視されたアクティビティを考慮してガーベッジコレクションを実行することができる。たとえば、そのような操作が実行されていない場合、ガーベッジコレクタコントローラ260は、ブロックの無効ページの数に基づいて対象とされうる対象ブロックでガーベッジコレクションプロセスを開始するようコマンドプロセッサ/キュー256に指示することができる。もう1つの例において、読み取り及び/又は書き込み操作の速度は、ガーベッジコレクタコントローラ260によって監視されてもよく、読み取り及び/又は書き込み操作の速度がしきい値を下回る場合、ガーベッジコレクタコントローラ260は、対象ブロックでガーベッジコレクションプロセスを開始するようコマンドプロセッサ/キュー256に指示することができる。メモリブロックごとのレベルで読み取り又は書き込み操作を監視することに加えて、ガーベッジコレクタ260は、メモリチップごとのレベル又はチャネルごとのレベルでも読み取り又は書き込み操作を監視することができ、監視された操作を考慮してバックグラウンドガーベッジコレクションを実行することができる。
【0064】
しかし、ガーベッジコレクションは、読み取り操作と比較すると、また書き込み操作と比較しても、多大な時間を要するので、さらに読み取り及び書き込みのパフォーマンスがデータストレージデバイス100にとって重要なパフォーマンスメトリックであることから、バックグラウンドガーベッジコレクションは、データストレージデバイス100の読み取り及び/又は書き込みパフォーマンスを高めるために、特定の時間帯にホスト106によって抑止又は制限されてもよい。
【0065】
図3は、ホスト350及びデータストレージデバイス210を含むデータストレージ装置300を示す概略ブロック図である。上記で説明されるように、データストレージデバイス210は、たとえばPCIeインターフェイスのような高速インターフェイスであってもよいインターフェイス308を通じてホスト350に接続されてもよい。ホストは、たとえば、プロセッサ352、第1のメモリ354、第2のメモリ356、及びホストアクティビティ監視エンジン360を含むことができる。第1のメモリ354は、たとえば、プロセッサ352によって実行されうる機械可読の実行可能コード命令を格納するように適合される不揮発性メモリデバイス(たとえば、ハードディスク)を含むことができる。第1のメモリ354に格納されるコード命令は、第2のメモリ(たとえば、ランダムアクセスメモリのような揮発性メモリ)356にロードすることができ、ここでコード命令はプロセッサ352によって実行されて、ガーベッジコレクション制御エンジン358及びホストアクティビティ監視エンジン360を作成することができる。第2のメモリは、ユーザモードアプリケーションに専用の「ユーザスペース」362の論理ブロック、及びユーザレベルアプリケーションがそれらの機能を実行するために制御する必要のある低レベルリソースの実行に専用の「カーネルスペース」364の論理ブロックを含むことができる。ガーベッジコレクション制御エンジン358及びホストアクティビティ監視エンジン360は、第2のメモリ356のカーネルスペース364に常駐することができる。
【0066】
ホストアクティビティ監視エンジン360は、ホスト106のアクティビティを監視するように構成されてもよい。ガーベッジコレクション制御エンジン358は、データストレージデバイスのバックグラウンドガーベッジコレクタ260によって実行されるバックグラウンドガーベッジコレクションを制御するように構成されてもよい。たとえば、1つの実施態様において、ホストアクティビティ監視エンジン360は、ホスト106のプロセッサ(たとえば、プロセッサ352)の使用レベルを決定することができ、1つの実施態様において、プロセッサは、ホスト106とデータストレージデバイス210との間のデータの転送に関与してもよい。たとえば、使用レベルは、プロセッサが動作する事前定義された能力の比率、又はプロセッサが操作を実行する速度を含むことができる。決定された使用レベルは、あらかじめ定められた使用レベルと比較されてもよい。使用レベルがあらかじめ定められたレベルを超えた場合、ガーベッジコレクション制御エンジン358は、使用レベルがあらかじめ定められたレベルを超えるという決定に応答してバックグラウンドガーベッジコレクションに充てられるデータストレージデバイス210のプロセッサ(たとえば、読み取り、書き込み、コピー、及び消去操作を実行するプロセッサ)のサイクルの量を制限することができる。ガーベッジコレクション制御エンジン358は、あらかじめ定められたレベルを超えることがないように、バックグラウンドガーベッジコレクションをしきい値量未満に制限するため、バックグラウンドガーベッジコレクションを一時停止するよう指示する信号をデータストレージデバイスのバックグラウンドガーベッジコレクタ260に送信することによって、この制限を行うことができる。
【0067】
もう1つの実施態様において、ホストアクティビティ監視エンジン360は、メモリデバイス210からホスト106にデータが読み取られる速度を監視することができる。監視エンジンはさらに、データ読み取りの速度があらかじめ定められた速度を超えるかどうかを決定することができる。あらかじめ定められた速度を超える場合、ガーベッジコレクション制御エンジン358は、監視されたアクティビティに応答して、データ読み取りの速度があらかじめ定められたレベルを超えている間、バックグラウンドガーベッジコレクションを一時停止させることにより、メモリデバイス210のメモリブロックのバックグラウンドガーベッジコレクションを制御することができる。このように、バックグラウンドガーベッジコレクションは、データストレージデバイス210からホスト350へのデータの読み取りのバースト中に抑止されてもよい。
【0068】
もう1つの実施態様において、ガーベッジコレクション制御エンジン358は、データストレージデバイス210のバックグラウンドガーベッジコレクションを事前対応的に制御することができる。たとえば、ホストは、データストレージデバイスのバックグラウンドガーベッジコレクションによって中断されてはならない複数の重要な読み取りイベントがまもなく発生することを認識することができる。そのような場合、ホストアクティビティ監視エンジン360は、データがメモリデバイス210からホスト350に読み取られる特定の読み取りイベントが発生するという信号を(たとえば、メモリ364のユーザスペース部分362に常駐するアプリケーションレイヤプログラムを実行中のプロセッサ352から)受信することができる。次いで、ホストアクティビティ監視エンジン360は、予想される読み取りイベントについて、ガーベッジコレクション制御エンジン358に通知することができる。それに応じて、ガーベッジコレクション制御エンジン358は、信号の受信に応答してメモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することにより、メモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションを制御することができる。この場合も同様に、ガーベッジコレクション制御エンジン358は、バックグラウンドガーベッジコレクションをしきい値量未満に制限するため、バックグラウンドガーベッジコレクションを一時停止するよう指示する信号をデータストレージデバイスのバックグラウンドガーベッジコレクタ260に送信することによって、この制限を行うことができる。たとえば、ガーベッジコレクション又は消去イベントの量は、読み取り及び/又は書き込みイベントの特定の比率未満に制限されてもよい。識別された重要な読み取りイベントが発生した後、バックグラウンドガーベッジコレクションへの制限は解除されてもよい。たとえば、ホストは、バックグラウンドガーベッジコレクションの制限が終了したことをメモリデバイス210のガーベッジコレクタ260に指示するための信号を送信することができる。
【0069】
1つの実施態様において、ホストは、データストレージデバイス302に常駐する1つ以上のドキュメントに対するクエリを受信するように構成される、ユーザスペース362で動作しているクエリハンドラ363を含むことができる。次いで、1つ以上のドキュメントがデータストレージデバイス210からホスト350に取り出されている間、ガーベッジコレクション制御エンジン358は、ドキュメントが取り出されてしまうまでデータストレージデバイスで発生するバックグラウンドガーベッジコレクションをブロックすることができる。
【0070】
上記で説明されるように、メモリデバイス210は、複数のメモリチップ218、及び各々複数のメモリチップに機能的に接続される複数のチャネル112を含むことができる。ガーベッジコレクタ260は、時を異にして、ガーベッジコレクションを他のメモリチップのブロックを除く特定のメモリチップのブロックで実行するか、又は他のチャネル112に接続されたメモリチップ218のブロックを除く特定のチャネル112に接続されたメモリチップ218のブロックで実行するように構成されてもよい。これにより、ガーベッジコレクション制御エンジン358は、複数のメモリチップ218の異なるメモリチップ上のバックグラウンドガーベッジコレクションの量を別々に制御することにより、又は複数のチャネル112の異なるチャネルに接続されたチップ上のバックグラウンドガーベッジコレクションの量を別々に制御することにより、データストレージデバイスのガーベッジコレクタ260によって実行されるバックグラウンドガーベッジコレクションを制御するように構成されてもよい。すなわち、バックグラウンドガーベッジコレクションは、高速の読み取りイベントが認められるか又は認められると予測される特定のチップ又はチャネルで制限されてもよく、その間、他のチップ又は他のチャネルに接続されたチップでの無制限のバックグラウンドガーベッジコレクションの進行が許容される。
【0071】
もう1つの実施態様において、ガーベッジコレクションは、コントローラ210に常駐するガーベッジコレクタ260によって実行されるのではなく、ホスト350から制御され実行されてもよい。たとえば、ガーベッジコレクション制御エンジン358は、使用レベルがあらかじめ定められたレベルを超えるという決定に応答してバックグラウンドガーベッジコレクションに充てられるプロセッサのサイクルの量を制限することに加えて、特定の実施態様においてガーベッジコレクタ260によって実行されることが上記で説明されるガーベッジコレクション機能を実行することもできる。したがって、ホスト350上のガーベッジコレクション制御エンジン358は、メモリチップ218のブロックで実行されている読み取り及び/又は書き込み操作を監視することができ、監視されたアクティビティを考慮してガーベッジコレクションを実行することができる。たとえば、そのような操作が実行されていない場合、ガーベッジコレクション制御エンジン358は、ブロックの無効ページの数に基づいて対象とされうる対象ブロックでガーベッジコレクションプロセスを開始するようコントローラ210のコマンドプロセッサ/キュー256に指示することができる。もう1つの例において、読み取り及び/又は書き込み操作の速度は、ガーベッジコレクション制御エンジン358によって監視されてもよく、読み取り及び/又は書き込み操作の速度がしきい値を下回る場合、ガーベッジコレクション制御エンジン358は、対象ブロックでガーベッジコレクションプロセスを開始するようコマンドプロセッサ/キュー256に指示することができる。メモリブロックごとのレベルで読み取り又は書き込み操作を監視することに加えて、ガーベッジコレクション制御エンジン358は、メモリチップごとのレベル又はチャネルごとのレベルでも読み取り又は書き込み操作を監視することができ、監視された操作を考慮してバックグラウンドガーベッジコレクションを実行することができる。
【0072】
図4は、データストレージデバイスからホストにデータを読み取る例示のプロセス400を示す例示的な流れ図である。ホスト上のアクティビティが監視されてもよい(402)。たとえば、メモリデバイスからホストにデータが読み取られる速度が監視されてもよく(404)、速度があらかじめ定められた速度を超えるかどうかについてと決定が行われてもよい(406)。ホストの監視されたアクティビティに応答して、メモリデバイスのメモリブロックのバックグラウンドガーベッジコレクションが制御されてもよい。たとえば、データ読み取りの速度があらかじめ定められた速度を超えている間、メモリデバイスからホストへのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量が制限されてもよい。
【0073】
本明細書において説明されるさまざまな技法の実施態様は、デジタル電子回路において、又はコンピュータハードウェア、ファームウェア、ソフトウェア、若しくはその組み合わせで実施されてもよい。実施態様は、コンピュータプログラム製品として、すなわち、たとえばプログラム可能プロセッサ、コンピュータ、又は複数のコンピュータなどのデータ処理装置により実行するため、若しくはその動作を制御するための、たとえば機械可読ストレージデバイスなどの情報担体において実体的に具現されるコンピュータプログラムとして、実施されてもよい。上記で説明される(1つ以上の)コンピュータプログラムのような、コンピュータプログラムは、コンパイル済み又は解釈済みの言語を含む任意の形態のプログラミング言語で記述されてもよく、スタンドアロンのプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくはコンピューティング環境において使用に適した他のユニットとしてなど、任意の形態で配置されてもよい。コンピュータプログラムは、1つのサイトにおける1つのコンピュータ上、又は複数サイトに分散されて通信ネットワークにより相互接続された複数コンピュータ上で実行されるように配置されてもよい。
【0074】
方法ステップは、入力データを操作して出力を生成することにより機能を実行するようにコンピュータプログラムを実行している1つ以上のプログラム可能プロセッサによって実行されてもよい。たとえばFPGA又はASIC(特殊用途向け集積回路)などの特殊用途論理回路によって、方法ステップはまた実行されてもよく、装置は特殊用途論理回路として実施されてもよい。
【0075】
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用及び特殊用途マイクロプロセッサ、及び任意の種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ又はランダムアクセスメモリ、若しくはその両方から命令及びデータを受信する。コンピュータの要素は、命令を実行するための少なくとも1つのプロセッサと、命令及びデータを格納するための1つ以上のメモリデバイスを含むことができる。一般に、コンピュータはまた、たとえば磁気、光磁気ディスク、又は光ディスクなど、データを格納するための1つ以上の大容量ストレージデバイスを含むことができるか、又は大容量ストレージデバイスとの間でデータを受信又は転送若しくはその両方を行うように機能的に結合されてもよい。コンピュータプログラム命令及びデータを具現するために適した情報担体は、一例として、たとえばEPROM、EEPROM、及びフラッシュメモリデバイスのような半導体メモリデバイス;たとえば内蔵ハードディスク又はリムーバブルディスクのような磁気ディスク;光磁気ディスク;並びにCD-ROM及びDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリを含む。プロセッサ及びメモリは、特殊用途論理回路によって補完されてもよいか、又は特殊用途論理回路に組み込まれてもよい。
【0076】
ユーザとの対話に備えるため、実施態様は、情報をユーザに表示するための、たとえばブラウン管(CRT)又は液晶ディスプレイ(LCD)モニタのような表示デバイス、並びにキーボード及び、たとえばマウス又はトラックボールのような、ユーザがコンピュータに入力を行うことができるポインティングデバイスを有するコンピュータで実施されてもよい。その他の種類のデバイスも、ユーザとの対話を行うために使用されてもよく;たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、又は触覚フィードバックのような任意の形態の知覚的フィードバックであってもよく;ユーザからの入力は、音響、発語、又は触覚入力を含む任意の形態で受信されてもよい。
【0077】
実施態様は、たとえばデータサーバのようなバックエンドコンポーネントを含むか、又はたとえばアプリケーションサーバのようなミドルウェアコンポーネントを含むか、又はたとえばユーザが実施態様と対話することができるグラフィカルユーザインターフェイス又はWebブラウザを有するクライアントコンピュータのようなフロントエンドコンポーネントを含むか、若しくはそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実施されてもよい。コンポーネントは、たとえば通信ネットワークのようなデジタルデータ通信の任意の形態又は媒体によって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、及びたとえばインターネットのようなワイドエリアネットワーク(WAN)を含む。
【0078】
説明された実施態様の特定の特徴が本明細書において説明されるように示されたが、当業者には多数の修正、代替、変更、及び等価が考案されよう。したがって、添付の特許請求の範囲は、すべてのそのような修正及び変更を、実施態様の範囲内に含まれるものとして扱うことが意図されていることを理解されたい。

【特許請求の範囲】
【請求項1】
ホスト(106、350)とメモリデバイス(100)との間でデータを転送する方法であって、
該ホスト(106、350)のアクティビティを監視すること(402)と、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)とを備える、前記方法。
【請求項2】
前記メモリデバイスチップ(100)が複数のフラッシュメモリチップ(118a、118b、218)を備える、請求項1記載の方法。
【請求項3】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、該ホスト(106、350)のプロセッサの使用レベルを監視することを備える、請求項1又は2記載の方法であって、
該使用レベルがあらかじめ定められたレベルを超えると決定することをさらに備え、
該監視されたアクティビティに応答して前記メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、該使用レベルが該あらかじめ定められたレベルを超えるという該決定に応答してバックグラウンドガーベッジコレクションに充てられる前記データストレージデバイスのプロセッサのサイクルの量を制限することを備える、前記方法。
【請求項4】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、前記メモリデバイス(100)から該ホスト(106、350)へのデータ読み取りの速度を監視すること(404)を備える、請求項1から3のいずれか1項記載の方法であって、
データ読み取りの該速度があらかじめ定められた速度を超えると決定すること(406)をさらに備え、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、データ読み取りの該速度が該あらかじめ定められたレベルを超えている間、該バックグラウンドガーベッジコレクションを一時停止させることを備える、前記方法。
【請求項5】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、前記メモリデバイス(100)から該ホスト(106、350)へのデータ読み取りの速度を監視すること(404)を備える、請求項1から4のいずれか1項記載の方法であって、
データ読み取りの該速度があらかじめ定められた速度を超えると決定すること(406)をさらに備え、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、データ読み取りの該速度が該あらかじめ定められた速度を超えている間、該メモリデバイス(100)から該ホスト(106、350)へのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限すること(410)を備える、前記方法。
【請求項6】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、前記メモリデバイス(100)から該ホスト(106、350)にデータが読み取られる特定の読み取りイベントが発生するという信号を受信することを備え、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、該信号の受信に応答して該メモリデバイス(100)から該ホスト(106、350)へのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限すること(410)を備える、請求項1から5のいずれか1項記載の方法。
【請求項7】
前記監視されたアクティビティに応答して前記メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、
ホスト(106、350)デバイスから、該メモリデバイス(100)のメモリブロックのブロックで実行される書き込み操作を監視することと、
該メモリデバイス(100)の対象メモリブロックでバックグラウンドガーベッジコレクションを実行するよう指示する命令を該ホスト(106、350)デバイスから該メモリデバイス(100)に送信することと、
該ホスト(106、350)において、バックグラウンドガーベッジコレクションをしきい値量未満に制限することと、次いで、後に、
バックグラウンドガーベッジコレクションが該しきい値量を超えることを許容することとを備える、請求項1から6のいずれか1項記載の方法。
【請求項8】
前記監視されたアクティビティに応答して前記メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、
バックグラウンドガーベッジコレクションをしきい値量未満に制限するよう該メモリデバイス(100)のガーベッジコレクタに指示するための信号を前記ホスト(106、350)から該メモリデバイス(100)に送信することと、次いで、後に、
バックグラウンドガーベッジコレクションの該制限が終了したことを該メモリデバイス(100)のガーベッジコレクタに指示するための信号を該ホスト(106、350)から該メモリデバイス(100)に送信することとを備える、請求項1から7のいずれか1項記載の方法。
【請求項9】
特定の高優先順位読み取りイベントの発生が予想されると決定することをさらに備え、
前記信号は該決定に基づく、請求項8記載の方法。
【請求項10】
1つ以上のドキュメントに対するクエリを受信することをさらに備え、
前記監視されたアクティビティが、該クエリに応答して前記メモリデバイス(100)からデータを取り出すことを含み、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、該データが該メモリデバイス(100)から取り出される間、該バックグラウンドガーベッジコレクションをブロックすることを備える、請求項8又は9記載の方法。
【請求項11】
複数のメモリチップ(118a、118b、218)を含むフラッシュメモリデータストレージデバイス(100)と、
インターフェイス(108)を介して該データストレージデバイス(100)に機能的に結合されたホスト(106、350)であって、
該メモリチップ(118a、118b、218)で実行される前記バックグラウンドガーベッジコレクションを制御するように構成されたガーベッジコレクション制御エンジン(358)と、
該ホスト(106、350)のアクティビティを監視するように構成されたホストアクティビティ監視エンジン(360)とを含む、前記ホストとを備える、装置。
【請求項12】
前記データストレージデバイス(100)が、前記メモリチップ(118a、118b、218)で前記バックグラウンドガーベッジコレクションを実行するように構成されたガーベッジコレクタ(260)を含む、請求項11記載の装置。
【請求項13】
前記ガーベッジコレクション制御エンジン(358)が、前記メモリチップ(118a、118b、218)で前記バックグラウンドガーベッジコレクションを実行するように構成される、請求項11記載の装置。
【請求項14】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、該ホスト(106、350)のプロセッサの使用レベルを監視することを備え、該ホスト(106、350)アクティビティ監視エンジンが、
該使用レベルがあらかじめ定められたレベルを超えると決定するようにさらに構成され、
該監視されたアクティビティに応答して前記メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、該使用レベルが該あらかじめ定められたレベルを超えるという該決定に応答してバックグラウンドガーベッジコレクションに充てられる前記データストレージデバイス(100)のプロセッサのサイクルの量を制限することを備える、請求項1から13のいずれか1項記載の装置。
【請求項15】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、前記メモリデバイス(100)から該ホスト(106、350)へのデータ読み取りの速度を監視して、データ読み取りの該速度があらかじめ定められた速度を超えると決定することを備え、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、データ読み取りの該速度が該あらかじめ定められたレベルを超えている間、該バックグラウンドガーベッジコレクションを一時停止させることを備える、請求項1から14のいずれか1項記載の装置。
【請求項16】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、前記メモリデバイス(100)から該ホスト(106、350)へのデータ読み取りの速度を監視すること(404)と、データ読み取りの該速度があらかじめ定められた速度を超えると決定すること(406)とを備え、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、データ読み取りの該速度が該あらかじめ定められた速度を超えている間、該メモリデバイス(100)から該ホスト(106、350)へのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限すること(410)を備える、請求項1から15のいずれか1項記載の装置。
【請求項17】
前記ホスト(106、350)の前記アクティビティを監視すること(402)が、前記メモリデバイス(100)から該ホスト(106、350)にデータが読み取られる特定の読み取りイベントが発生するという信号を受信することを備え、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、該信号の受信に応答して該メモリデバイス(100)から該ホスト(106、350)へのデータの読み取りに充てられる作業の量と比較して、バックグラウンドガーベッジコレクションに充てられる作業の量を制限することを備える、請求項1から16のいずれか1項記載の装置。
【請求項18】
前記監視されたアクティビティに応答して前記メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、
ホスト(106、350)デバイスから、該メモリデバイス(100)のメモリブロックのブロックで実行される書き込み操作を監視することと、
該メモリデバイス(100)の対象メモリブロックでバックグラウンドガーベッジコレクションを開始するよう指示する命令を該ホスト(106、350)デバイスから該メモリデバイス(100)に送信することと、
該ホスト(106、350)において、バックグラウンドガーベッジコレクションをしきい値量未満に制限することと、次いで、後に、
バックグラウンドガーベッジコレクションが該しきい値量を超えることを許容することとを備える、請求項1から17のいずれか1項記載の装置。
【請求項19】
前記ホスト(106、350)が、特定の高優先順位読み取りイベントの発生が予想されると決定するように構成されたプロセッサ(352)をさらに含み、
バックグラウンドガーベッジコレクションを前記しきい値量未満に制限することが該決定に基づく、請求項18記載の装置。
【請求項20】
前記ホスト(106、350)が、1つ以上のドキュメントに対するクエリを受信するように適合されたクエリハンドラをさらに備え、
前記アクティビティを監視すること(402)が、該クエリに応答して前記メモリデバイス(100)からデータを取り出すことを含み、
該監視されたアクティビティに応答して該メモリデバイス(100)のメモリブロックのバックグラウンドガーベッジコレクションを制御すること(408)が、該データが該メモリデバイス(100)から取り出される間、該バックグラウンドガーベッジコレクションをブロックすることを備える、請求項18記載の装置。
【請求項21】
前記バックグラウンドガーベッジコレクションを制御すること(408)が、前記複数のメモリチップ(118a、118b、218)の異なるメモリチップ上でバックグラウンドガーベッジコレクションの量を別々に制御することを含む、請求項1から20のいずれか1項記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2012−523631(P2012−523631A)
【公表日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願番号】特願2012−504862(P2012−504862)
【出願日】平成22年4月8日(2010.4.8)
【国際出願番号】PCT/US2010/030389
【国際公開番号】WO2010/118230
【国際公開日】平成22年10月14日(2010.10.14)
【出願人】(502208397)グーグル インコーポレイテッド (161)
【Fターム(参考)】