(57)【特許請求の範囲】
【請求項１】
アレイコントローラであって、前記アレイコントローラは記憶システム内に配置され、前記記憶システムは、前記アレイコントローラおよびソリッドステートディスクを含み、前記ソリッドステートディスクはフラッシュメモリチップを含み、前記フラッシュメモリチップは複数のブロックを含み、
前記アレイコントローラは、通信インタフェースおよびプロセッサを含み、
前記通信インタフェースは、前記ソリッドステートディスクと通信するように構成され、
前記プロセッサは、前記ソリッドステートディスクによって送信される論理ブロックに関する情報を受信し、
複数の書き込みデータ要求に含まれるターゲットデータが前記論理ブロックのサイズに達したとき、前記複数の書き込みデータ要求に含まれるターゲットデータを前記ソリッドステートディスクに送信するように構成され、
前記論理ブロックに関する前記情報は、前記論理ブロックのサイズおよび前記論理ブロックの指示情報を含み、前記論理ブロックは1つ以上のブロックを含み、前記論理ブロックの指示情報は、前記論理ブロックに割り当てられた識別子または論理アドレス範囲を含み、各書き込みデータ要求はターゲットデータを含み、各書き込みデータ要求は、前記ソリッドステートディスクに、前記指示情報によって指示される前記論理ブロックに前記ターゲットデータを書き込むように命令するための前記指示情報を含む、
アレイコントローラ。
【請求項２】
前記論理ブロックに含まれる前記ブロックは異なるチャネル内に配置される、請求項1に記載のアレイコントローラ。
【請求項３】
前記論理ブロックは、書き込まれるべき状態であり、前記書き込まれるべき状態における前記論理ブロックは、前記論理ブロックが、データを格納するために前記ソリッドステートディスクによって割り当てられていることを示す、請求項1または2に記載のアレイコントローラ。
【請求項４】
前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた識別子を含み、各書き込みデータ要求は、前記論理ブロックの前記識別子を含む、請求項1乃至3のいずれか1項に記載のアレイコントローラ。
【請求項５】
前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた論理アドレス範囲を含み、各書き込みデータ要求は、前記論理アドレス範囲の副範囲を含む、請求項1乃至3のいずれか1項に記載のアレイコントローラ。
【請求項６】
データを書き込むようにソリッドステートディスクを制御するための方法であって、前記方法は記憶システムに適用され、前記記憶システムはアレイコントローラおよび前記ソリッドステートディスクを含み、前記ソリッドステートディスクはフラッシュメモリチップを含み、前記フラッシュメモリチップは複数のブロックを含み、且つ、前記方法は前記アレイコントローラによって実行されるとともに、
前記ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するステップであって、前記論理ブロックに関する前記情報は、前記論理ブロックのサイズおよび前記論理ブロックの指示情報を含み、前記論理ブロックは1つ以上のブロックを含み、前記論理ブロックの指示情報は、前記論理ブロックに割り当てられた識別子または論理アドレス範囲を含む、ステップと、
複数の書き込みデータ要求に含まれるターゲットデータが前記論理ブロックのサイズに達したとき、前記複数の書き込みデータ要求に含まれるターゲットデータを前記ソリッドステートディスクに送信するステップであって、各書き込みデータ要求はターゲットデータを含み、各書き込みデータ要求は、前記ソリッドステートディスクに、前記指示情報によって指示される前記論理ブロックに前記ターゲットデータを書き込むように命令するための前記指示情報を含む、ステップと
を含む、方法。
【請求項７】
前記論理ブロックに含まれる前記ブロックは異なるチャネル内に配置される、請求項6に記載の方法。
【請求項８】
前記論理ブロックは、書き込まれるべき状態であり、前記書き込まれるべき状態における前記論理ブロックは、前記論理ブロックが、データを格納するために前記ソリッドステートディスクによって割り当てられていることを示す、請求項6または7に記載の方法。
【請求項９】
前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた識別子を含み、各書き込みデータ要求は、前記論理ブロックの前記識別子を含む、請求項6乃至8のいずれか1項に記載の方法。
【請求項１０】
前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた論理アドレス範囲を含み、各書き込みデータ要求は、前記論理アドレス範囲の副範囲を含む、請求項6乃至8のいずれか1項に記載の方法。
【請求項１１】
データを書き込むようにソリッドステートディスクを制御するための装置であって、前記ソリッドステートディスクは記憶システム内に配置され、前記ソリッドステートディスクはフラッシュメモリチップを含み、前記フラッシュメモリチップは複数のブロックを含み、前記記憶システムはアレイコントローラをさらに含み、前記装置は前記アレイコントローラ内に配置されるとともに、
前記ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するように構成される受信モジュールであって、前記論理ブロックに関する前記情報は、前記論理ブロックのサイズおよび前記論理ブロックの指示情報を含み、前記論理ブロックは1つ以上のブロックを含み、前記論理ブロックの指示情報は、前記論理ブロックに割り当てられた識別子または論理アドレス範囲を含む、受信モジュールと、
複数の書き込みデータ要求に含まれるターゲットデータが前記論理ブロックのサイズに達したとき、前記複数の書き込みデータ要求に含まれるターゲットデータを前記ソリッドステートディスクに送信するように構成される処理モジュールであって、各書き込みデータ要求はターゲットデータを含み、各書き込みデータ要求は、前記ソリッドステートディスクに、前記論理ブロックの前記指示情報によって指示される前記論理ブロックに前記ターゲットデータを書き込むように命令するための前記指示情報を含む、処理モジュールと
を含む、装置。
【請求項１２】
前記論理ブロックに含まれる前記ブロックは異なるチャネル内に配置される、請求項11に記載の装置。
【請求項１３】
前記論理ブロックは、書き込まれるべき状態であり、前記書き込まれるべき状態における前記論理ブロックは、論理ブロックが、データを格納するために前記ソリッドステートディスクによって割り当てられていることを示す、請求項11または12に記載の装置。
【請求項１４】
前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた識別子を含み、各書き込みデータ要求は、前記論理ブロックの前記識別子を含む、請求項11乃至13のいずれか1項に記載の装置。
【請求項１５】
前記論理ブロックの前記指示情報は、前記ソリッドステートディスクによって前記論理ブロックに割り当てられた論理アドレス範囲を含み、各書き込みデータ要求は、前記論理アドレス範囲の副範囲を含む、請求項11乃至13のいずれか1項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は記憶技術の分野に関し、詳細には、データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法に関する。
【背景技術】
【０００２】
Flash Memory（フラッシュメモリ）装置は不揮発性メモリである。フラッシュメモリ装置の記憶媒体は、パワーオフ後にデータが消失しないことを特徴とするフラッシュメモリチップである。従って、フラッシュメモリ装置は、外部または内部メモリとして広く使用される。記憶媒体としてフラッシュメモリチップを使用するフラッシュメモリ装置は、ソリッドステートドライブ（フルネーム：Solid State Drive、略してSSD）としても知られている、ソリッドステートディスク（フルネーム：Solid State Device、略してSSD）であってよく、または別のメモリであってよい。
【０００３】
1つのSSDは一般に、複数のフラッシュメモリチップを含み、ここで、各フラッシュメモリチップはいくつかのブロック（block）を含む。一般に、外部から受信されたデータを格納するとき、SSDはデータを複数のブロックに同時に書き込み、データ処理効率を改善することができる。ガベージコレクション処理を実行するとき、SSDは複数のブロックから有効なデータを取得して、有効なデータを空きブロックに移動する必要があり、このことは書き込み増幅を引き起こす。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明の実施形態は、データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法を提案し、これらは、1つ以上のブロックを埋めるために、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントを1つ以上のブロックに書き込むことができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
【０００５】
実施形態の第1の態様はアレイコントローラを提供し、ここで、アレイコントローラは記憶システム内に配置され、記憶システムはソリッドステートディスクをさらに含み、アレイコントローラは、通信インタフェースおよびプロセッサを含み、ここで、通信インタフェースは、ソリッドステートディスクと通信するように構成され、プロセッサは、ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、且つ、プロセッサは、複数の書き込みデータ要求をソリッドステートディスクに送信し、ここで、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用され、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい。複数の書き込みデータ要求を受信した後、ソリッドステートディスクは、各書き込みデータ要求内の指示情報に従って、指示情報によって指示される論理ブロックに、書き込みデータ要求で搬送されるターゲットデータを書き込む。論理ブロックは1つ以上のブロックを含むため、論理ブロックにターゲットデータを書き込むことは、実際は、論理ブロックに含まれる1つ以上のブロックにターゲットデータを書き込むことであることは留意されるべきである。
【０００６】
本実施方式では、プロセッサによってソリッドステートディスクに送信される複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、且つ、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用されるため、ソリッドステートディスクは、指示情報に従って、複数の書き込みデータ要求で搬送されるターゲットデータの全てを同じ論理ブロックに書き込み、論理ブロックを埋めることができる。本実施形態では、1つの論理ブロックは1つ以上のブロックを含むため、ターゲットデータは1つ以上のブロックに書き込まれ、且つ、これらのブロックは埋められることを意味する。ガベージコレクションの間、ソリッドステートディスクがブロック内でコレクションを実行することは当業者によって理解されることができる。ターゲットデータは全て1つ以上のブロックに書き込まれ、且つ、1つ以上のブロックは他のデータを含まないため、ターゲットデータが全てその後アレイコントローラによって解放された場合、すなわち、無効データとしてマークされた場合、SSDは、有効データを移動することなく、論理ブロック内の全てのブロックからデータを直接消去してよく、それによって、ガベージコレクション中の書き込み増幅を低減する。
【０００７】
第1の態様を参照すると、第1の態様の第1の実施方式では、論理ブロックに含まれるブロックは、異なるチャネル内に配置される。一般に、ソリッドステートディスク内では、チャネル間で同時の読み出しおよび書き込みが実施されてよい。従って、論理ブロックに含まれるブロックが異なるチャネル内に配置されるとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはデータ書き込み効率を改善する。
【０００８】
第1の態様を参照すると、第1の態様の第2の実施方式では、論理ブロックに含まれるブロックは、同じチャネルに属する。いくつかの場合では、また、1つのチャネルにおける複数のブロック間で同時の読み出しおよび書き込みが実施されてもよい。従って、論理ブロックに含まれるブロックが同じチャネルに属するとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはまた、書き込みデータ効率を改善することができる。
【０００９】
第1の態様の前述の実施方式のどちらかを参照すると、第1の態様の第3の実施方式では、論理ブロックは書き込まれるべき状態における論理ブロックであり、ここで、書き込まれるべき状態における論理ブロックは、データを格納するためにソリッドステートディスクによって割り当てられている論理ブロックを指す。本実施形態では、論理ブロックは、空いている、書き込まれる、埋まっている、悪い、の4つの状態を有する。ソリッドステートディスクは、書き込まれるべき状態における論理ブロックをアレイコントローラに報告し、ここで、データは、書き込まれるべき状態における論理ブロックに直接書き込まれることができる。従って、アレイコントローラによって送信される書き込みデータ要求を受信するとき、ソリッドステートディスクは、書き込みデータ要求で搬送される指示情報に従って、書き込まれるべき状態における論理ブロックにターゲットデータを直接書き込んでよい。
【００１０】
第1の態様の前述の実施方式のいずれか1つを参照すると、第1の態様の第4の実施方式では、論理ブロックの指示情報について、特定の実施方式では、指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる識別子である。指示情報が論理ブロックの識別子であるとき、アレイコントローラによってソリッドステートディスクに送信される各書き込みデータ要求は識別子を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、識別子に対応する論理ブロックを埋めるために、識別子に従って、各書き込みデータ要求内のターゲットデータを識別子に対応する論理ブロックに書き込んでよい。
【００１１】
第1の態様の前述の実施方式のいずれか1つを参照すると、本実施形態は、第1の態様の第4の実施方式の代わりとなる実施方式、すなわち、第1の態様の第5の実施方式をさらに提供し、且つ、本実施方式では、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる論理アドレス範囲を含む。指示情報が論理アドレス範囲であるとき、アレイコントローラによってソリッドステートディスクに送信される各書き込みデータ要求は、論理アドレス範囲の副範囲を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、副範囲に従って、各書き込みデータ要求内のターゲットデータに対応する論理ブロックを決定するとともに、論理ブロックを埋めるために、論理ブロックにターゲットデータを書き込んでよい。
【００１２】
第1の態様の前述の実施方式のいずれか1つを参照すると、第1の態様の第6の実施方式では、アレイコントローラはキャッシュをさらに含み、且つ、プロセッサは、複数個のターゲットデータをキャッシュから読み出すようにさらに構成される。アレイコントローラはキャッシュを含むため、外部データを受信した後、アレイコントローラは、データを記憶用のソリッドステートディスクに直接送信する代わりにデータをキャッシュ内に一時的に格納して、キャッシュ内のデータのサイズが特定の基準値（例えば、論理ブロックのサイズ）に達したときにデータをソリッドステートディスクに送信してよい。
【００１３】
第1の態様の第6の実施方式を参照すると、第1の態様の第7の実施方式では、記憶システムはホストをさらに含み、且つ、アレイコントローラはホストとソリッドステートディスクとの間に配置される。本実施方式では、アレイコントローラはデータをホストから受信して、データをキャッシュに書き込んでよい。
【００１４】
実施形態の第2の態様はソリッドステートディスクを提供し、ここで、ソリッドステートディスクはフラッシュメモリチップおよびソリッドステートディスクコントローラを含み、ここで、フラッシュメモリチップは複数のチャネルを含み、各チャネルは複数のブロックを含み、ソリッドステートディスクコントローラは、論理ブロックに関する情報をアレイコントローラに送信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、加えて、ソリッドステートディスクコントローラは、アレイコントローラによって送信される複数の書き込みデータ要求を受信するようにさらに構成され、ここで、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用される。加えて、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、且つ、ソリッドステートディスクコントローラは、次いで、各書き込みデータ要求で搬送されるターゲットデータを、指示情報によって指示される論理ブロックに書き込む。論理ブロックは1つ以上のブロックを含むため、論理ブロックにターゲットデータを書き込むことは、実際は、論理ブロックに含まれる1つ以上のブロックにターゲットデータを書き込むことであることは留意されるべきである。
【００１５】
本実施方式では、ソリッドステートディスクは、論理ブロックに関する情報をアレイコントローラに報告する。論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含む。従って、アレイコントローラは、論理ブロックに関する情報に従って、書き込みデータ要求をソリッドステートディスクに送信してよい。具体的には、アレイコントローラによってソリッドステートディスクに送信される複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、且つ、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用される。従って、ソリッドステートディスクは、指示情報に従って、複数の書き込みデータ要求で搬送されるターゲットデータの全てを同じ論理ブロックに書き込み、論理ブロックを埋めてよい。本実施形態では、1つの論理ブロックは1つ以上のブロックを含むため、ターゲットデータは1つ以上のブロックに書き込まれ、且つ、これらのブロックは埋められることを意味する。ガベージコレクションの間、ソリッドステートディスクがブロック内でコレクションを実行することは当業者によって理解されることができる。ターゲットデータは全て1つ以上のブロックに書き込まれ、且つ、1つ以上のブロックは他のデータを含まないため、ターゲットデータが全てその後アレイコントローラによって解放された場合、すなわち、無効データとしてマークされた場合、SSDは、有効データを移動することなく、論理ブロック内の全てのブロックからデータを直接消去してよく、それによって、ガベージコレクション中の書き込み増幅を低減する。
【００１６】
第2の態様を参照すると、第2の態様の第1の実施方式では、論理ブロックに含まれるブロックは、異なるチャネル内に配置される。一般に、ソリッドステートディスク内では、チャネル間で同時の読み出しおよび書き込みが実施されてよい。従って、論理ブロックに含まれるブロックが異なるチャネル内に配置されるとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはデータ書き込み効率を改善する。
【００１７】
第2の態様を参照すると、第2の態様の第2の実施方式では、論理ブロックに含まれるブロックは、同じチャネルに属する。いくつかの場合では、また、1つのチャネルにおける複数のブロック間で同時の読み出しおよび書き込みが実施されてもよい。従って、論理ブロックに含まれるブロックが同じチャネルに属するとき、ターゲットデータは、論理ブロックに同時に書き込まれることができ、このことはまた、書き込みデータ効率を改善することができる。
【００１８】
第2の態様の前述の実施方式のどちらかを参照すると、第2の態様の第3の実施方式では、論理ブロックは書き込まれるべき状態における論理ブロックであり、ここで、書き込まれるべき状態における論理ブロックは、データを格納するためにソリッドステートディスクによって割り当てられている論理ブロックを指す。本実施形態では、論理ブロックは、空いている、書き込まれる、埋まっている、悪い、の4つの状態を有する。ソリッドステートディスクは、書き込まれるべき状態における論理ブロックをアレイコントローラに報告し、ここで、データは、書き込まれるべき状態における論理ブロックに直接書き込まれることができる。従って、アレイコントローラによって送信される書き込みデータ要求を受信するとき、ソリッドステートディスクは、書き込みデータ要求で搬送される指示情報に従って、書き込まれるべき状態における論理ブロックにターゲットデータを直接書き込んでよい。
【００１９】
第2の態様の前述の実施方式のいずれか1つを参照すると、第2の態様の第4の実施方式では、論理ブロックの指示情報について、特定の実施方式では、指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる識別子である。指示情報が論理ブロックの識別子であるとき、ソリッドステートディスクによって受信される各書き込みデータ要求は識別子を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、識別子に対応する論理ブロックを埋めるために、識別子に従って、各書き込みデータ要求内のターゲットデータを識別子に対応する論理ブロックに書き込んでよい。
【００２０】
第2の態様の前述の実施方式のいずれか1つを参照すると、本実施形態は、第2の態様の第4の実施方式の代わりとなる実施方式、すなわち、第2の態様の第5の実施方式をさらに提供し、且つ、本実施方式では、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる論理アドレス範囲を含む。指示情報が論理アドレス範囲であるとき、ソリッドステートディスクによって受信される各書き込みデータ要求は、論理アドレス範囲の副範囲を搬送する。書き込みデータ要求を受信した後、ソリッドステートディスクは、副範囲に従って、各書き込みデータ要求内のターゲットデータに対応する論理ブロックを決定するとともに、論理ブロックを埋めるために、論理ブロックにターゲットデータを書き込んでよい。
【００２１】
第2の態様の第3乃至第5の実施方式を参照すると、第2の態様の第6の実施方式では、ソリッドステートディスクコントローラは、論理ブロックに割り当てられた指示情報を回収するようにさらに構成される。指示情報は書き込まれるべき状態における論理ブロックのみに割り当てられるため、論理ブロックが埋められたとき、論理ブロックの指示情報は、書き込まれるべき状態における別の論理ブロックが使用するために回収されることができる。
【００２２】
第2の態様の前述の実施方式のいずれか1つを参照すると、第2の態様の第7の実施方式では、ソリッドステートディスクコントローラは、具体的には、SCSI WRITEコマンドをアレイコントローラに送信するように構成され、ここで、コマンドはGROUP NUMBERフィールドを含み、且つ、フィールドは論理ブロックの指示情報を搬送するために使用される。本実施方式では、プライベートコマンドは論理ブロックの指示情報を報告するために提供される。従来のSCSIコマンドはGROUP NUMBERフィールドを含まない。本実施形態では、GROUP NUMBERフィールドは、具体的には、論理ブロックの指示情報を報告するためのSCSI WRITEコマンドに追加される。
【００２３】
本発明の実施形態の第3の態様は、データを書き込むようにソリッドステートディスクを制御するための方法を提供し、ここで、方法は、第1の態様で提供されるアレイコントローラに適用される。
【００２４】
本発明の実施形態の第4の態様は、データを書き込むようにソリッドステートディスクを制御するための方法を提供し、ここで、方法は、第2の態様で提供されるアレイコントローラに適用される。
【００２５】
本発明の実施形態の第5の態様は、データを書き込むようにソリッドステートディスクを制御するための装置を提供し、ここで、装置は、第1の態様で提供されるアレイコントローラ内に配置される。
【００２６】
本発明の実施形態の第6の態様は、データを書き込むようにソリッドステートディスクを制御するための装置を提供し、ここで、装置は、第2の態様で提供されるアレイコントローラ内に配置される。
【００２７】
第3の態様乃至第6の態様で提供されるデータを書き込むようにソリッドステートディスクを制御するための方法およびデータを書き込むようにソリッドステートディスクを制御するための装置によると、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントは、1つ以上のブロックを埋めるために、1つ以上のブロックに書き込まれることができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
【００２８】
本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品を提供し、ここで、プログラムコードに含まれる命令は第1の態様におけるアレイコントローラによって実行されてよいとともに、第3の態様における少なくとも1つの方法を実行するために使用される。
【００２９】
本発明の実施形態は、プログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品を提供し、ここで、プログラムコードに含まれる命令は第2の態様におけるアレイコントローラによって実行されてよいとともに、第4の態様における少なくとも1つの方法を実行するために使用される。
【００３０】
本発明の実施形態で提供される前述のコンピュータプログラム製品は、1つ以上のブロックを埋めるために、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントを1つ以上のブロックに書き込むことができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
【図面の簡単な説明】
【００３１】
本発明の実施形態における技術的解決手段をより明確に説明するために、以下では、実施形態を説明するために必要な、または従来技術における添付図面を簡潔に導入する。明らかに、以下の説明における添付図面は、単に本発明のいくつかの実施形態を示し、且つ、当業者は、創造的努力無しにこれらの添付図面から他の図面をさらに導出することができる。
【００３２】
【図１】図1は、本発明の実施形態に係るアプリケーションシナリオの図である。
【図２】図2は、本発明の実施形態に係るフラッシュメモリチップの概略図である。
【図３】図3は、本発明の実施形態に係るブロックの概略図である。
【図４】図4は、本発明の実施形態に係る、従来技術におけるソリッドステートディスクによってデータを格納することの概略図である。
【図５】図5は、本発明の実施形態に係る論理ブロックの概略図である。
【図６】図6は、本発明の実施形態に係るアレイコントローラの概略構成図である。
【図７】図7は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための方法の概略フローチャートである。
【図８】図8は、本発明の実施形態に係る、ソリッドステートディスクによってデータを格納することの概略図である。
【図９】図9は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための別の方法の概略フローチャートである。
【図１０】図10は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するためのさらに別の方法の概略フローチャートである。
【図１１】図11は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための装置の概略構成図である。
【図１２】図12は、本発明の実施形態に係る、データを書き込むようにソリッドステートディスクを制御するための別の装置の概略構成図である。
【発明を実施するための形態】
【００３３】
本発明の実施形態は、データを書き込むようにソリッドステートディスクを制御するためのアレイコントローラ、ソリッドステートディスクおよび方法を提案し、これらは、1つ以上のブロックを埋めるために、そのサイズがブロックの標準サイズの整数倍に等しいデータのセグメントを1つ以上のブロックに書き込むことができ、それによって、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅を低減する。
【００３４】
図1は、本発明の実施形態に係る記憶システムの構成図である。図1に示される記憶システムは、ホスト33、アレイコントローラ11およびソリッドステートディスク22を含む。ホスト33は、サーバまたはデスクトップコンピュータ等の端末デバイスであってよい。
【００３５】
アレイコントローラ11は、ホスト33とソリッドステートディスク22との間に配置されるとともに、コンピューティングデバイス、例えば、サーバまたはデスクトップコンピュータであってよい。オペレーティングシステムおよび別のアプリケーションプログラムは、アレイコントローラ11にインストールされる。アレイコントローラ11は、入力/出力（I/O）要求をホスト33から受信し、I/O要求で搬送されるデータを格納し、特定の条件が満たされたときに、アレイコントローラ11内に格納されるデータをソリッドステートディスク22に書き込んでよい。
【００３６】
ソリッドステートディスク（Solid State Device, SSD）22は、記憶媒体としてフラッシュメモリチップを使用するメモリであり、ソリッドステートドライブ（Solid State Drive, SSD）とも呼ばれ、または別のメモリを含んでよい。本実施形態では、ソリッドステートディスク22は、例としてSSDを使用することによって説明される。
【００３７】
図1は説明のための例示でしかないとともに、特定のネットワーキング方式への限定を構成しない。例えば、アレイコントローラ11およびソリッドステートディスク22が互いに通信することができる限り、カスケーディングツリーネットワークまたはリングネットワークが使用されてよい。
【００３８】
ソリッドステートディスク22は、SSDコントローラ220および記憶媒体221を含む。SSDコントローラ220は、アレイコントローラ11によって送信される書き込みデータ要求または読み出しデータ要求等の操作を実行するように構成される。
【００３９】
記憶媒体221は一般に、いくつかのフラッシュメモリ（Flash）チップを含む。各フラッシュメモリチップは複数のチャネルを含み、且つ、各チャネルはいくつかのブロック（block）を含む（図2に示されるように）。一般に、フラッシュメモリチップは、固定サイズに従って、いくつかのブロックに分割されてよい。従って、ブロックは標準サイズを有する。ブロックの標準サイズは、アイドル状態であるとともにバッドページ（bad page）を含まないブロック内に格納されることができるデータのサイズを指す。一般に、ブロックの標準サイズは2（M）のN乗であってよく、ここで、Nは正の整数である。SSDによって実行される消去操作はブロック内で実行される。例えば、SSDがガベージコレクションを実行する必要があるとき、SSDは第1に、1つのブロックから別の新しいブロックに有効データを移動し、次いで、元のブロックに格納される全てのデータ（有効データおよび無効データを含む）を消去してよい。本発明の本実施形態では、ブロック内の有効データは、ブロック内に格納されるとともに修正されていないデータを指し、且つ、データのこの部分は読み出し可能であり、ブロック内の無効データは、ブロック内に格納されるとともに修正されているデータを指し、且つ、データのこの部分は読み出し不可能である。フラッシュメモリチップの消去機能により、ブロックに格納されたデータは、共通の機械的なハードドライブにおけるデータのように直接修正されないことは、当業者によって知られることができる。ブロック内のデータが修正される必要があるとき、SSDコントローラ220は新しいブロックを見つけるとともに修正されたデータを新しいブロックに書き込み、且つ、元のブロック内のデータは無効データになる。無効データは、SSDがガベージコレクションを実行するときに消去される。
【００４０】
加えて、図3に示されるように、各ブロックはいくつかのページ（page）を含む。SSDは、書き込みデータ要求を実行するときにデータをページに書き込む。例えば、アレイコントローラ11は書き込みデータ要求をSSDコントローラ220に送信し、ここで、書き込みデータ要求は論理ブロックアドレス（logical block Address, LBA）およびデータを搬送し、且つ、LBAは可視であるとともにアレイコントローラ11にアクセス可能なアドレスである。書き込みデータ要求を受信した後、SSDコントローラ220は、セットポリシーに従って、1つ以上のブロックのページにデータを書き込む。データが書き込まれるページのアドレスは、データが実際に格納されるアドレスであるとともに、物理アドレスとも呼ばれる。SSDは、LBAと物理アドレスとの間の対応関係を確立および格納するように構成されるフラッシュ変換レイヤ（Flash Translation Layer, FTL）を含む。アレイコントローラ11がその後、LBAを搬送する読み出しデータ要求をSSDコントローラ220に送信して、データの読み出しを要求するとき、SSDコントローラ220は、LBAおよびLBAと物理アドレスとの間の対応関係に従ってデータを読み出して、アレイコントローラ11にデータを送信してよい。
【００４１】
アレイコントローラ11がデータのセグメントをキャッシュから読み出して、データのセグメントをSSDに送信するとき、一般に、データのセグメントは、連続的な論理アドレスを有するデータのセグメントである。しかしながら、書き込みデータ要求を受信するとき、SSDコントローラ220は、SSDコントローラ220によるポリシーセットに従って、データを1つ以上のブロックのページ（すなわち、物理アドレス）に書き込む。実際、これらの物理アドレスは必ずしも連続的でないことは当業者によって理解されることができる。すなわち、アレイコントローラ11の観点から、連続的な論理アドレスを有するデータのセグメントは、実際は、散在した方式でSSDの物理スペースに書き込まれる。以下では、図4を参照して、従来技術におけるSSDによってデータを書き込む方法を説明する。
【００４２】
図4は、従来技術におけるSSDによってデータを書き込む方法の概略図である。一般に、ソリッドステートディスク22はデータをチャネルに同時に書き込むことができるため、アレイコントローラ11がデータをソリッドステートディスク22に送信した後、SSDコントローラ220は一般に、1つのブロックを各チャネルから選択するとともに、データを複数のブロックに同時に書き込む。ソリッドステートディスク22はまた、データを1つのチャネル内の複数のブロックに同時に書き込んでよいことは理解されることができる。図4に示されるように、データが複数のブロックに書き込まれた後、各ブロックはデータの一部を記憶するためにスペースの一部を提供する。図4では、ブロックの白い部分はブロックの空きスペースを表し、且つ、グレーの部分は、データの一部がブロックに書き込まれた後のブロックの使用されたスペースを表す。従って、アレイコントローラ11の観点から、連続的な論理アドレスを有するデータのセグメントは、散在した方式で複数のブロックに格納され、且つ、異なる論理アドレスセグメントに属するデータは異なるブロックに書き込まれる。ガベージコレクション操作は、SSDにおいて定期的に実行され、ガベージコレクション操作の間、消去がブロック内で実行されることは当業者によって知られることができる。連続的な論理アドレスを有するデータのセグメントは散在した方式で複数のブロックに格納され、且つ、異なる論理アドレスセグメントに属するデータは異なるブロックに書き込まれるため、ガベージコレクションの間、有効データは複数のブロックから空きブロックに移動される必要があり、このことは、ガベージコレクションによって引き起こされる書き込み増幅を増加させる。書き込み増幅は、フラッシュメモリチップに書き込まれるデータは、ホストによってSSDに書き込まれるデータよりも多いことを意味する。
【００４３】
本実施形態では、図5に示されるように、1つのブロックは、論理ブロック（logical block）を形成するために、各チャネルから取り出されてよい。すなわち、本実施形態における論理ブロックは複数のブロックを含み、且つ、ブロックは異なるチャネル内に配置される。1つのブロックがまた、チャネルの一部のそれぞれから取り出され、論理ブロックを形成してもよいことは理解されることができる。同様に、論理ブロックに含まれる複数のブロックは、異なるチャネル内に別々に配置される。論理ブロックのサイズは、ブロックの標準サイズの整数倍であるとともに、論理ブロックに含まれるブロックの数に依存する。本実施形態では、論理ブロックのサイズは、事前にアレイコントローラ11内に格納されてよい。ホスト33によって送信される書き込みデータ要求を受信した後、アレイコントローラ11は、アレイコントローラ11のキャッシュ内に書き込みデータ要求を一時的に格納し、キャッシュ内のデータが論理ブロックのサイズに達したとき、データを記憶用のSSDに送信してよい。
【００４４】
本実施形態では、論理ブロックは、論理ブロックの状態に従って、空いている（free）論理ブロック、書き込まれるべき（または書き込む）論理ブロック、埋まっている（full）論理ブロック、悪い（bad）論理ブロックの4種類に分類される。空き状態における論理ブロックは、データが消去されている論理ブロックを指し、書き込まれるべき状態における論理ブロックは、データ書き込み用に割り当てられている論理ブロックを指し、埋まっている状態における論理ブロックは、そのスペースが埋まっている論理ブロックを指し、且つ、埋まっている状態における論理ブロックは、消去後、空き状態における論理ブロックになってよく、悪い状態における論理ブロックは、使用されることができない破損した論理ブロックを指す。本実施形態で言及されるデータを格納するための論理ブロックは、実際は、書き込まれるべき状態における論理ブロックである。従って、以下の説明で述べられない限り、論理ブロックは、書き込まれるべき状態における論理ブロックを指す。
【００４５】
これらの、書き込まれるべき状態における論理ブロックを識別するために、任意の実施方式では、SSDは各論理ブロックに識別子を割り当てる。識別子は、論理ブロックを一意に識別するための数字、文字または別の記号であってよく、または数字、文字または別の記号の任意の組み合わせであってよい。例えば、論理ブロックの識別子は0であり、別の論理ブロックの識別子は1であり、さらに別の論理ブロックの識別子は2である等々である。
【００４６】
別の任意の実施方式では、SSDは論理アドレス範囲を各論理ブロックに割り当てる。例えば、論理ブロックに対応する論理アドレス範囲は0MBから1023MBであり、別の論理ブロックに対応する論理アドレス範囲は1024MBから2047MBであり、さらに別の論理ブロックに対応する論理アドレス範囲は2048MBから3071MBである等々である。
【００４７】
SSDコントローラ220は、論理ブロックの識別子または論理ブロックの論理アドレス範囲をアレイコントローラ11に報告する必要があり、その結果、データを記憶用のSSDに送信するとき、アレイコントローラ11は論理ブロックの識別子を書き込みデータ要求に追加して、書き込みデータ要求をSSDに送信し、SSDに、データを識別子に対応する論理ブロックに書き込むように命令することができる。あるいは、書き込みデータ要求における開始論理アドレスおよび長さは、論理ブロックの論理アドレス範囲に従って指定される。書き込まれるべき状態における複数の論理ブロックがある場合、アレイコントローラ11は、複数の論理ブロックの識別子または複数の論理ブロックの論理アドレス範囲を受信し、次いで、複数の論理ブロックのいずれか1つを選択し、論理ブロックの識別子または論理アドレス範囲に従って、書き込みデータ要求をSSDに送信する。
【００４８】
以下では、アレイコントローラ11のハードウェア構成を説明する。図6は、本発明の実施形態に係るアレイコントローラ11の概略構成図である。図6に示されるように、アレイコントローラ11は主に、プロセッサ（processor）118、キャッシュ（cache）120、メモリ（memory）122、通信バス（略してバス）126および通信インタフェース（Communications Interface）128を含む。プロセッサ118、キャッシュ120、メモリ122および通信インタフェース128は、通信バス126を使用することによって互いに通信する。
【００４９】
通信インタフェース128は、ホスト33またはソリッドステートディスク22と通信するように構成される。
【００５０】
プロセッサ118は、中央処理ユニットCPUまたは特定用途向け集積回路ASIC（Application Specific Integrated Circuit）であってよく、または本発明の本実施形態を実施する1つ以上の集積回路として構成される。本発明の本実施形態では、プロセッサ118は、書き込みデータ要求または読み出しデータ要求をホスト33から受信し、書き込みデータ要求または読み出しデータ要求を処理し、書き込みデータ要求または読み出しデータ要求をソリッドステートディスク22に送信し、別の操作を実行するように構成されてよい。
【００５１】
メモリ122はプログラム124を格納するように構成される。メモリ122は、高速RAMメモリを含んでよく、且つ、少なくとも1つの磁気ディスクメモリ等の不揮発性メモリ（non-volatile memory）をさらに含んでよい。メモリ122はランダムアクセスメモリ（Random Access Memory, RAM）、磁気ディスク、ハードディスク、光ディスク、ソリッドステートディスク（Solid State Disk, SSD）または不揮発性メモリ等の、プログラムコードを格納することができる、任意の非一時的（non-transitory）コンピュータ可読媒体であってよいことは理解されることができる。
【００５２】
プログラム124はプログラムコードを含んでよく、ここで、プログラムコードはコンピュータ操作命令を含む。
【００５３】
キャッシュ120（Cache）は、ホスト33から受信されたデータまたはソリッドステートディスク22から読み出されたデータを一時的に格納するように構成される。キャッシュ120は、RAM、ROM、フラッシュメモリ（Flash memory）またはソリッドステートディスク（Solid State Disk, SSD）等のデータを格納することができる任意の非一時的（non-transitory）機械可読媒体であってよく、ここでは限定されない。例えば、ホスト33によって送信される書き込みデータ要求を受信するとき、アレイコントローラ11は書き込みデータ要求をキャッシュ120内に格納してよく、且つ、プロセッサ118は書き込みデータ要求を処理する。任意で、ホスト33によって送信される複数の書き込みデータ要求を受信するとき、アレイコントローラ11は、複数の書き込みデータ要求をキャッシュ120内に一時的に格納してよく、且つ、キャッシュ120におけるサイズが基準値に達したとき（例えば、キャッシュ120に格納されたデータのサイズが論理ブロックのサイズに達したとき）に、そのサイズが論理ブロックのサイズと等しいデータをキャッシュ120から読み出し、データを永続的な記憶用のソリッドステートディスク22に送信してよい。
【００５４】
加えて、メモリ122およびキャッシュ120は、別々に統合または配置されてよく、このことは本発明の本実施形態では限定されない。
【００５５】
以下では、本発明の実施形態に係る、データをソリッドステートディスクに書き込むための方法のプロセスを説明する。本発明の本実施形態における、データをソリッドステートディスクに書き込むための方法は、図1に示される記憶システムおよび図6に示されるアレイコントローラ11に適用されてよい。図7に示されるように、方法は以下のステップを含む。
【００５６】
ステップS301：SSDコントローラ220は、論理ブロックの指示情報をアレイコントローラ11に送信する。
【００５７】
具体的には、SSDコントローラ220は、論理ブロックの指示情報を、アレイコントローラ11のプロセッサ118に送信する。論理ブロックの指示情報は、ソリッドステートディスク22によって論理ブロックに割り当てられる識別子であってよく、または、ソリッドステートディスク22によって論理ブロックに割り当てられる論理アドレス範囲、または特定の論理ブロックを示すための他の情報であってよい。
【００５８】
ステップS302：SSDコントローラ220は、論理ブロックのサイズをアレイコントローラ11に送信する。
【００５９】
具体的には、SSDコントローラ220は、論理ブロックのサイズをアレイコントローラ11のプロセッサ118に送信し、且つ、プロセッサ118は論理ブロックのサイズを受信する。ステップS302およびステップS301は必ずしも特定の順序で実行されないことは留意されるべきである。すなわち、本実施形態では、SSDコントローラ220が論理ブロックのサイズをアレイコントローラ11に送信する限り、論理ブロックのサイズがアレイコントローラ11に送信される期間またはステップは限定されない。さらに、情報は別々に送信されてよく、または他の情報、例えば論理ブロックの識別子と一緒に送信されてよい。
【００６０】
ステップS303：アレイコントローラ11は複数個のターゲットデータをSSDコントローラ220に送信し、ここで、複数個のターゲットデータの長さの合計は、論理ブロックのサイズと等しい。
【００６１】
具体的には、アレイコントローラ11のプロセッサ118は、複数個のターゲットデータを複数の書き込みデータ要求に追加して、複数の書き込みデータ要求をSSDコントローラ220に送信する。
【００６２】
指示情報が論理ブロックの識別子であるとき、各書き込みデータ要求は、論理ブロックの識別子を搬送する必要がさらにある。指示情報が論理ブロックの論理アドレス範囲であるとき、各書き込みデータ要求は、論理アドレス範囲の副範囲を搬送する必要がさらにある。これらの2つの場合は、図9および図10に示される実施方式で詳細に説明される。
【００６３】
ステップS304：SSDコントローラ220は、論理ブロックに複数個のターゲットデータを書き込む。
【００６４】
具体的には、ステップS303 で複数の書き込みデータ要求を受信した後、SSDコントローラ220は、各書き込みデータ要求における指示情報に従って、指示情報によって指示される論理ブロックを決定するとともに、次いで、各書き込みデータ要求におけるターゲットデータを論理ブロックに書き込んでよい。
【００６５】
従来技術では、アレイコントローラ11によってソリッドステートディスク22に送信される書き込みデータ要求は、論理ブロックの指示情報を含まない。従って、書き込みデータ要求を受信した後、従来技術におけるSSDコントローラ220は一般に、複数のブロックを選択するとともに、データを複数のブロックに同時に書き込み、このことは、データが散在した方式でブロックに格納されることを引き起こす。しかしながら、本実施形態では、プロセッサ118は、論理ブロックの識別子を複数の書き込みデータ要求に追加するとともに複数の書き込みデータ要求をソリッドステートディスク22に送信し、ソリッドステートディスク22に、これらの書き込みデータ要求における全てのターゲットデータを指示情報によって指示される論理ブロックに書き込むことを命令する。論理ブロックは1つ以上のブロックを含むため、論理ブロックにターゲットデータを書き込むことは、実際は、論理ブロックに含まれる1つ以上のブロックにターゲットデータを書き込むことであることは留意されるべきである。
【００６６】
従って、ステップS304では、複数の書き込みデータ要求を受信した後、SSDコントローラ220は、各書き込みデータ要求で搬送されるターゲットデータを指示情報によって指示される論理ブロックに書き込んでよい。さらに、ターゲットデータの長さの合計は論理ブロックのサイズと等しいため、論理ブロックは、SSDコントローラ220が書き込みデータ要求で搬送されるターゲットデータを論理ブロックに書き込んだ後にちょうど埋められる（図8に示されるように）。
【００６７】
図7に示される実施方式によると、複数個のターゲットデータは1つの論理ブロック、すなわち、1つ以上のブロックに格納される。これらのターゲットデータは全て1つ以上のブロックに書き込まれ、且つ、1つ以上のブロックは他のデータを含まないため、これらのターゲットデータが全てその後アレイコントローラによって解放された場合、すなわち、無効データとしてマークされた場合、消去操作は、有効データを移動することなく、ブロックに対して直接実行されてよく、このことは、ガベージコレクション中の書き込み増幅の課題を低減する。
【００６８】
具体的には、アレイコントローラ11がソリッドステートディスクに対してガベージコレクション操作を実行する必要があるとき、アレイコントローラ11は一般に、ソリッドステートディスク22の論理ブロックにおける有効データを読み出すように要求するために、読み出しコマンドをソリッドステートディスク22に送信してよい。ソリッドステートディスク22が有効データをアレイコントローラ11に送信した後、アレイコントローラ11は、書き込みコマンドをソリッドステートディスク22に送信して、有効データを新しい論理ブロックに書き込むように要求する。次いで、アレイコントローラ11は、ソリッドステートディスク22にトリムコマンドを送信して、元の論理ブロックが無効になったことを示す。ソリッドステートディスク内でガベージコレクション操作を実行したとき、ソリッドステートディスクは、論理ブロックが無効であると分かるとともに、論理ブロックに格納される全てのデータが無効データであるとみなしてよく、それによって、有効データを取得または有効データを再び移動することなく、論理ブロックに含まれるブロックからのデータの消去を直接実行する。このようにして、ソリッドステートディスクがガベージコレクションを実行するときの書き込み増幅の課題は低減される。
【００６９】
以下では、本発明の実施形態に係る、データをソリッドステートディスクに書き込むための方法のプロセスを説明する。本発明の本実施形態における、データをフラッシュメモリ装置に書き込むための方法は、図1に示される記憶システムおよび図6に示されるアレイコントローラ11に適用されてよい。図8に示されるように、方法は以下のステップを含む。
【００７０】
ステップS101：SSDコントローラ220は、SSDに含まれる複数の論理ブロックから、書き込まれるべき状態における論理ブロックを決定する。
【００７１】
上述のように、論理ブロックは一般に、空いている、書き込まれる、埋まっている、悪い、の4つの状態である。本実施形態では、書き込まれるべき状態における論理ブロックはこれらの論理ブロックから選択されるとともに、論理ブロックキュー内に置かれる。データが書き込まれる必要があるとき、任意の論理ブロックが、データ書き込みのために論理ブロックキューから直接取得されてよい。論理ブロックキューは、書き込まれるべき状態における論理ブロックを管理するためのデータ構造である。本実施形態では、キューに加えて、別のデータ構造、例えば、連結リストもまた、論理ブロックを管理するために使用されてよいことが理解されることができる。論理ブロックキューは、SSDコントローラ220またはフラッシュメモリチップのキャッシュに格納されてよい。
【００７２】
1つ以上の決定された書き込まれるべき状態における論理ブロックがあってよい。
【００７３】
ステップS102：SSDコントローラ220は、識別子を書き込まれるべき状態における論理ブロックに割り当てる。
【００７４】
識別子は数字、例えば、0, 1, 2, …であってよく、または、書き込まれるべき状態における論理ブロックを一意に識別するための別の記号であってよく、または、数字、文字または別の記号の任意の組み合わせであってよい。
【００７５】
ステップS103：SSDコントローラ220は、ステップS102において論理ブロックに割り当てられた識別子をアレイコントローラ11に送信する。
【００７６】
本実施形態では、SSDコントローラ220は、SCSI WRITEコマンドを使用することによって、アレイコントローラ11に識別子を送信してよく、ここで、SCSI WRITEコマンドはGROUP NUMBERフィールドを含み、且つ、フィールドは識別子を搬送するために使用されてよい。
【００７７】
ステップS104：SSDコントローラ220は、論理ブロックのサイズをアレイコントローラ11に送信する。
【００７８】
このステップは、図7におけるステップS302と同様であり、且つ、詳細はここでは再び説明されない。
【００７９】
ステップS105：アレイコントローラ11は、ホスト33によって送信される複数個のデータを受信する。
【００８０】
複数個のデータは、複数の書き込みコマンドを使用することによって、ホスト33によってアレイコントローラ11に送信されてよい。具体的には、アレイコントローラ11のプロセッサ118は、ホスト33によって送信される複数個のデータを受信し、ここで、各書き込みコマンドは、少なくとも1個のデータおよびデータのホスト論理アドレス範囲を搬送する。ホスト論理アドレスは、アレイコントローラ11によってホスト33に表される記憶スペースのアドレスを指す。データのホスト論理アドレス範囲は連続的でなくてよい。例えば、1個のデータのホスト論理アドレス範囲は0x40000から0x40020であり、別のデータのホスト論理アドレス範囲は0x10010から0x10020であり、これらの2個のデータのホスト論理アドレス範囲は連続的でない。実際の適用では、書き込みコマンドは、開始ホスト論理アドレスおよび長さを搬送してよく、且つ、ホスト論理アドレス範囲は、開始ホスト論理アドレスおよび長さに従って得られることは留意されるべきである。
【００８１】
ステップS106：アレイコントローラ11は、受信された複数個のデータをキャッシュ120に書き込む。
【００８２】
具体的には、アレイコントローラ11のプロセッサ118は、受信された複数個のデータをキャッシュ120に書き込む。
【００８３】
一般に、ホスト33によって送信されるデータを受信した後、アレイコントローラ11は、データをソリッドステートディスク22に直接書き込む代わりに、データをキャッシュ120に一時的に書き込む。キャッシュ120の記憶スペースが特定の基準値に達したとき、プロセッサ118は、キャッシュ120からデータの一部または全てを読み出して、データを永続的な記憶用のSSD22に送信する。
【００８４】
ステップS105およびS106 およびステップS101からS104は、必ずしも特定の順序で実行されないことは留意されるべきである。すなわち、アレイコントローラ11によって、ホスト33によって送信されるターゲットデータを受信して一時的に格納するプロセスおよびSSD22によって送信される論理ブロックに関する情報を受信するプロセスは矛盾せず、且つ、必ずしも特定の順序で実行されないとともに、同時に実行されてもよい。
【００８５】
ステップS107：アレイコントローラ11は、複数個のターゲットデータをキャッシュ120から読み出す。
【００８６】
具体的には、アレイコントローラ11のプロセッサ118は、複数個のターゲットデータをキャッシュ120から読み出す。
【００８７】
複数個のターゲットデータの長さの合計は、論理ブロックのサイズと等しい。本実施形態では、アレイコントローラ11によってホスト33から受信されるデータと区別されるために、キャッシュ120から読み出されるデータはターゲットデータと呼ばれる。これらのターゲットデータの長さの合計は、論理ブロックのサイズと等しい。プロセッサ118が複数の書き込みデータ要求を生成して、複数の書き込みデータ要求をソリッドステートディスク22に送信するとき、各書き込みデータ要求は1個のターゲットデータを搬送すると考えられてよい。アレイコントローラ11によってホスト33から受信されるとともにキャッシュ120に格納されるデータのサイズが論理ブロックのサイズを超過するとき、プロセッサ118は、そのサイズが論理ブロックのサイズと等しい複数個のターゲットデータのみキャッシュ120から読み出す必要があることは理解されることができる。さらに、プロセッサ118によってホスト33から受信されるとともにキャッシュ120に格納されるデータのサイズが論理ブロックのサイズに達しないとき、プロセッサ118は、キャッシュ120からデータを読み出さなくてよく、キャッシュ120内のデータが論理ブロックのサイズに達するまで処理を実行しなくてよい。
【００８８】
ステップS108：アレイコントローラ11は、複数の書き込みデータ要求をソリッドステートディスク22に送信し、ここで、各書き込みデータ要求はターゲットデータを搬送し、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい必要があり、各書き込みデータ要求は、論理ブロックの識別子を搬送する。
【００８９】
具体的には、アレイコントローラ11のプロセッサ118は、複数の書き込みデータ要求をソリッドステートディスク22に送信する。
【００９０】
ソリッドステートディスク22が複数の論理ブロックの識別子をアレイコントローラ11に送信する場合、アレイコントローラ11は識別子から任意の識別子を選択し、識別子を複数の書き込みデータ要求に追加してよいことは理解されることができる。
【００９１】
加えて、本実施形態では、アレイコントローラ11によってソリッドステートディスク22に送信される書き込みデータ要求はまた、それぞれのターゲットデータの開始論理アドレスおよび長さ（または論理アドレス範囲）を含んでもよい。ここでの論理アドレスは、ステップS105におけるホスト論理アドレスとは異なる。ステップS105におけるホスト論理アドレスは、アレイコントローラ11によってホスト33に表される記憶スペースの論理アドレスである一方、ここでの論理アドレスは、ソリッドステートディスク22によってアレイコントローラ11に表される記憶スペースのアドレスである。加えて、アレイコントローラ11が論理アドレス範囲を指定するとき、全てのターゲットデータの論理アドレス範囲は連続的であることは留意されるべきである。アレイコントローラ11は、それぞれのターゲットデータの開始論理アドレスおよび長さをソリッドステートディスク22に送信する。ターゲットデータを論理ブロックに含まれるブロックに書き込んだ後、SSDコントローラ220は、FTL内に、開始論理アドレスとターゲットデータが実際に書き込まれる物理アドレスとの間の対応関係を格納してよい。アレイコントローラ11がその後ターゲットデータを読み出す必要がある場合、アレイコントローラ11は、ターゲットデータの開始論理アドレスおよび長さを読み出しデータ要求に追加して、読み出しデータ要求をソリッドステートディスク22に送信してよい。SSDコントローラ220は、ターゲットデータを読み出してターゲットデータをアレイコントローラ11に送信するために、FTLに格納される論理アドレス、長さおよび対応関係に従って、ターゲットデータの物理アドレスを取得してよい。
【００９２】
ステップS110：SSDコントローラ220は、論理ブロックの識別子を回収する。
【００９３】
論理ブロックはデータで埋められているとともに、埋められている（full）状態であるため、SSDコントローラ220は、識別子を回収し、論理ブロックを論理ブロックキューから削除し、識別子を書き込まれるべき状態における別の論理ブロックに割り当ててよい。
【００９４】
以下では、本発明の実施形態に係る、データをソリッドステートディスクに書き込むための別の方法のプロセスを説明する。本発明の本実施形態における、データをフラッシュメモリ装置に書き込むための方法は、図1に示される記憶システムおよび図6に示されるアレイコントローラ11に適用されてよい。図10に示されるように、方法は以下のステップを含む。
【００９５】
ステップS201：アレイコントローラ11は、ホスト33によって送信される複数個のデータを受信する。このステップは、図8に示されるステップS105と同様であり、ステップS105の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
【００９６】
ステップS202：アレイコントローラ11は受信された複数個のデータをキャッシュ120に書き込む。このステップは、図8に示されるステップS106と同様であり、ステップS106の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
【００９７】
ステップS203：アレイコントローラ11は、SSDコントローラ220によって送信される論理ブロックの論理アドレス範囲を受信する。
【００９８】
具体的には、アレイコントローラ11のプロセッサ118は、論理ブロックの論理アドレス範囲を受信する。本実施形態では、各論理ブロックは、1つの論理アドレス範囲に対応する。例えば、論理ブロックに対応する論理アドレス範囲は0MBから1023MBであり、別の論理ブロックに対応する論理アドレス範囲は1024MBから2047MBであり、さらに別の論理ブロックに対応する論理アドレス範囲は2048MBから3071MBである。
【００９９】
これらの論理ブロックは、全て書き込まれるべき状態における論理ブロックであり、且つ、SSDコントローラ220は、これらの論理ブロックの論理アドレス範囲をアレイコントローラ11に報告する必要がある。
【０１００】
ステップS204：アレイコントローラ11は、SSDコントローラ220によって送信される論理ブロックのサイズを受信する。このステップは、図8に示されるステップS104と同様であり、ステップS104の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
【０１０１】
同様に、ステップS201からS203およびステップS204は、必ずしも特定の順序で実行されない。
【０１０２】
ステップS205：アレイコントローラ11は、ターゲットデータをキャッシュ120から読み出す。このステップは、図8に示されるステップS107と同様であり、ステップS107の説明に対して参照が行われることができ、詳細はここでは再び説明されない。
【０１０３】
ステップS206：アレイコントローラ11は、複数の書き込みデータ要求をソリッドステートディスク22に送信する。
【０１０４】
具体的には、アレイコントローラ11のプロセッサ118は、複数の書き込みデータ要求をソリッドステートディスク22に送信し、ここで、各書き込みデータ要求はターゲットデータを搬送してよく、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい必要があり、各書き込みデータ要求は、ターゲットデータの開始論理アドレスおよび長さを搬送する。ターゲットデータの開始論理アドレスおよびターゲットデータの終了論理アドレスの両方は、同じ論理ブロックの論理アドレス範囲に属し、且つ、終了論理アドレスは、開始論理アドレスおよび長さに従って得られる。従って、各書き込みデータ要求で搬送されるターゲットデータの論理アドレス範囲は、論理ブロックの論理アドレス範囲の副範囲であると考えられてよい。複数の論理ブロックの論理アドレス範囲を受信するとき、アレイコントローラ11は、ターゲットデータの開始論理アドレスおよび長さを決定するために、論理アドレス範囲からいずれか1つを選択してよい。
【０１０５】
ステップS207：複数の書き込みデータ要求を受信した後、SSDコントローラ220は、各書き込みデータ要求で搬送されるターゲットデータに対応する論理ブロックを決定する。
【０１０６】
本実施形態では、各論理ブロックは1つの論理アドレス範囲に対応するため、SSDコントローラ220は、各書き込みデータ要求で搬送される開始論理アドレスおよび長さと、各論理ブロックに対応する論理アドレス範囲とに従って、それぞれのターゲットデータに対応する論理ブロックを決定してよい。例えば、書き込みデータ要求の1つで搬送されるターゲットデータについて、開始論理アドレスが1010MBであるとともに長さが10KBである場合、ターゲットデータに対応する論理ブロックは、その論理アドレス範囲が0MBから1023MBである論理ブロックである。
【０１０７】
ステップS208：SSDコントローラ220は、各書き込みデータ要求で搬送されるターゲットデータを対応する論理ブロックに書き込む。
【０１０８】
図10で示される実施方式に従って、アレイコントローラ11はまた、連続的な論理アドレスを有するデータのセグメントを1つ以上のブロックに書き込んでよい。
【０１０９】
図9および図10に示される実施方式を参照すると、本発明の別の実施方式では、ソリッドステートディスク22は、フラッシュメモリチップ222の記憶スペースを少なくとも2つの部分に分割してよく、ここで、各部分はいくつかの論理ブロックを含む。部分のうちの1つに対して、ソリッドステートディスク22は、その部分に含まれる各論理ブロックに識別子を割り当て、他の部分に対して、ソリッドステートディスク22は、その部分に含まれる各論理ブロックに論理アドレス範囲を割り当てる。第1の部分における各論理ブロックの識別子および第2の部分における各論理ブロックの論理アドレス範囲は、アレイコントローラ11に報告される。その長さが論理ブロックのサイズと等しい複数個のターゲットデータをキャッシュ120から読み出した後、アレイコントローラ11は、複数個のターゲットデータを複数の書き込みデータ要求に追加し、且つ、複数の書き込みデータ要求をソリッドステートディスク22に送信し、ここで、複数の書き込みデータ要求の各書き込みデータ要求は、論理ブロックの識別子を含んでよく、または、開始論理アドレスおよび長さ（論理アドレス範囲の副範囲と考えられてよい）を含んでよい。すなわち、本実施方式では、アレイコントローラ11は複数の書き込みデータ要求を、図9に示される実施方式におけるソリッドステートディスク22に送信してよく、または、複数の書き込みデータ要求を、図10に示される実施方式におけるソリッドステートディスク22に送信してよい。ソリッドステートディスク22について、ソリッドステートディスク22によって受信される書き込みデータ要求が論理ブロックの識別子を搬送するとき、ソリッドステートディスク22は、識別子に従って論理ブロックを決定するとともにデータを論理ブロックに書き込み、ソリッドステートディスク22によって受信される書き込みデータ要求が論理アドレス範囲の副範囲を搬送するとき、ソリッドステートディスク22は、各論理ブロックに対応する副範囲および論理アドレス範囲に従って論理ブロックを決定するとともにデータを論理ブロックに書き込んでよい。
【０１１０】
任意で、前述の実施方式では、フラッシュメモリチップ222の記憶スペースは別の部分をさらに含んでよい。この部分内で、ソリッドステートディスク22は、アレイコントローラ11によって送信されるデータが書き込まれるブロックを決定してよい。すなわち、アレイコントローラ11によってソリッドステートディスク22に送信される書き込みデータ要求は、論理ブロックの識別子または論理ブロックの論理アドレス範囲を搬送しなくてよい。この場合、ソリッドステートディスク22は、データをアレイコントローラ11によって指定される論理ブロックに書き込む代わりに、データ書き込みのための1つ以上のブロックを選択する。
【０１１１】
記憶スペースの分割の前述の3つのタイプのうちの任意の2つと実施方式は組み合わされてよく、このことは、図9または図10に示される実施方式のみの実行と比較してより柔軟であるとともに複数の要件を満たすことができることは理解されることができる。
【０１１２】
図11に示されるように、本発明の実施形態は、データを書き込むようにソリッドステートディスクを制御するための装置700をさらに提供し、ここで、ソリッドステートディスクは記憶システム内に配置され、記憶システムはアレイコントローラをさらに含み、装置はアレイコントローラ内に配置される。具体的には、装置は受信モジュール701および処理モジュール702を含み、ここで、
受信モジュール701は、ソリッドステートディスクによって送信される論理ブロックに関する情報を受信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、
処理モジュール702は、複数の書き込みデータ要求をソリッドステートディスクに送信するように構成され、ここで、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用され、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しい。
【０１１３】
任意で、ソリッドステートディスクはフラッシュメモリチップを含み、ここで、フラッシュメモリチップは複数のチャネルを含み、各チャネルは複数のブロックを含み、論理ブロックは1つ以上のブロックを含み、論理ブロックに含まれるブロックは異なるチャネル内に配置される。
【０１１４】
任意で、論理ブロックは、書き込まれるべき状態における論理ブロックであり、ここで、書き込まれるべき状態における論理ブロックは、データを格納するためにソリッドステートディスクによって割り当てられている論理ブロックを指す。
【０１１５】
任意で、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる識別子を含み、且つ、各書き込みデータ要求は論理ブロックの識別子を含む。
【０１１６】
任意で、論理ブロックの指示情報は、ソリッドステートディスクによって論理ブロックに割り当てられる論理アドレス範囲を含み、且つ、各書き込みデータ要求は、論理アドレス範囲の副範囲を含む。
【０１１７】
図12に示されるように、実施形態は、データを書き込むようにソリッドステートディスクを制御するための別の装置800をさらに提供し、ここで、ソリッドステートディスクはフラッシュメモリチップおよびソリッドステートディスクコントローラを含み、フラッシュメモリチップは複数のチャネルを含み、各チャネルは複数のブロックを含み、装置はソリッドステートディスクコントローラ内に配置される。装置は、具体的には、送受信モジュール801および書き込みモジュール802を含み、ここで、
送受信モジュール801は、論理ブロックに関する情報をアレイコントローラに送信し、アレイコントローラによって送信された複数の書き込みデータ要求を受信するように構成され、ここで、論理ブロックに関する情報は、論理ブロックのサイズおよび論理ブロックの指示情報を含み、各書き込みデータ要求はターゲットデータを搬送し、各書き込みデータ要求は、ソリッドステートディスクに、論理ブロックの指示情報によって指示される論理ブロックにターゲットデータを書き込むように命令するために使用され、複数の書き込みデータ要求で搬送されるターゲットデータの長さの合計は、論理ブロックのサイズと等しく、
書き込みモジュール802は、指示情報によって指示される論理ブロックに、各書き込みデータ要求で搬送されるターゲットデータを書き込むように構成される。
【０１１８】
任意で、論理ブロックは1つ以上のブロックを含み、且つ、論理ブロックに含まれるブロックは異なるチャネル内に配置される。
【０１１９】
任意で、装置800は、論理ブロックが書き込まれるべき状態における論理ブロックであると決定し、指示情報を書き込まれるべき状態における論理ブロックに割り当てるように構成される割り当てモジュール803をさらに含み、ここで、書き込まれるべき状態における論理ブロックは、データを格納するために割り当てられている論理ブロックを指す。
【０１２０】
任意で、論理ブロックの指示情報は、論理ブロックの識別子を含み、各書き込みデータ要求は、論理ブロックの識別子を含み、且つ、書き込みモジュールは、具体的には、論理ブロックの識別子に従って、各書き込みデータ要求内のターゲットデータを、識別子に対応する論理ブロックに書き込むように構成される。
【０１２１】
任意で、論理ブロックの指示情報は、論理ブロックの論理アドレス範囲を含み、各書き込みデータ要求は、論理アドレス範囲の副範囲を含み、且つ、書き込みモジュールは、具体的には、各書き込みデータ要求内の論理アドレス範囲の副範囲および論理ブロックの論理アドレス範囲に従って、各書き込みデータ要求内のターゲットデータに対応する論理ブロックを決定し、各書き込みデータ要求内のターゲットデータを対応する論理ブロックに書き込むように構成される。
【０１２２】
任意で、割り当てモジュール803は、論理ブロックに割り当てられた指示情報を回収するようにさらに構成される。
【符号の説明】
【０１２３】
11  アレイコントローラ
33  ホスト
118  プロセッサ
120  キャッシュ
122  メモリ
124  プログラム
126  バス
128  通信インタフェース
220  SSDコントローラ
222  フラッシュメモリチップ
700  データを書き込むようにソリッドステートディスクを制御するための装置
701  受信モジュール
702  処理モジュール
800  データを書き込むようにソリッドステートディスクを制御するための装置
801  送受信モジュール
802  書き込みモジュール
【図１】
0006319607.tif 000002
【図２】
0006319607.tif 000003
【図３】
0006319607.tif 000004
【図４】
0006319607.tif 000005
【図５】
0006319607.tif 000006
【図６】
0006319607.tif 000007
【図７】
0006319607.tif 000008
【図８】
0006319607.tif 000009
【図９】
0006319607.tif 000010
【図１０】
0006319607.tif 000011
【図１１】
0006319607.tif 000012
【図１２】
0006319607.tif 000013