(57)【要約】ストレージ媒体における論理ブロックの範囲にデータを書き込む方法であって、開始論理ブロックアドレス、書き込まれる論理ブロックアドレスの範囲を示す値、及びデータの論理ブロックを含むコマンドを受信するステップと、第１のテンポラリストレージにデータの論理ブロックを記憶するステップと、データの論理ブロックを、論理ページを含む複数の論理ブロックの数に対応する複数個複製することにより、論理ページを生成し、生成された論理ページを第２のテンポラリストレージに移動し、生成された論理ページを第２のテンポラリストレージに記憶するステップと、生成された論理ページを、第２のテンポラリストレージから、開始論理ブロックアドレスから開始するストレージ媒体に書き込むステップと、第１の書き込み処理が論理ページ境界で開始しない、又は最後の書き込み処理が論理ページ境界で終了しない場合に、リードモディファイライト処理を行うステップと、を備える方法。【選択図】図１
2016530648.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ媒体における論理ブロックの範囲にデータを書き込む方法であって、
開始論理ブロックアドレス、書き込まれる論理ブロックアドレスの範囲を示す値、及びデータの論理ブロックを含むコマンドを受信するステップと、
第１のテンポラリストレージに前記データの論理ブロックを記憶するステップと、
前記データの論理ブロックを、論理ページを含む複数の論理ブロックの数に対応する複数個複製することにより、論理ページを生成し、生成された論理ページを第２のテンポラリストレージに転送し、前記生成された論理ページを前記第２のテンポラリストレージに記憶するステップと、
前記生成された論理ページを、前記第２のテンポラリストレージから、前記開始論理ブロックアドレスから開始する前記ストレージ媒体に書き込むステップと、
第１の書き込み処理が論理ページ境界で開始しない、又は最後の書き込み処理が論理ページ境界で終了しない場合に、リードモディファイライト処理を行うステップと、
を備える方法。
【請求項２】
前記第２のテンポラリストレージは、リードモディファイライトモジュールにおける待ち行列である請求項１に記載の方法。
【請求項３】
前記待ち行列に前記生成された論理ページを転送及び記憶する前に、前記リードモディファイライトモジュールに前記待ち行列を予約するステップを更に備える請求項２に記載の方法。
【請求項４】
現在の論理ページにおける前記ストレージ媒体に書き込まれた論理ブロックアドレスの範囲における論理ブロックの数に基づいてカウントを更新するステップと、
前記カウントを、前記論理ブロックアドレスの範囲を示す値と比較するステップと、
前記カウントが、前記論理ブロックアドレスの範囲を示す値と一致する場合には、前記書き込みが完了したことを示す信号を生成するステップと、
を更に備える請求項１に記載の方法。
【請求項５】
各論理ページは、所定数の論理ブロックを含む請求項１に記載の方法。
【請求項６】
各論理ブロックは、約５１２バイトのデータ、約１０２４バイトのデータ、約２０４８バイトのデータ、及び約４０９６バイトのデータのうちの１つを含む請求項５に記載の方法。
【請求項７】
前記データのバイトは、全て１又は全て０を含む請求項６に記載の方法。
【請求項８】
前記データのバイトは、所定のデータを含む請求項６に記載の方法。
【請求項９】
各論理ブロックは、別のバイト数のメタデータを更に含む請求項６に記載の方法。
【請求項１０】
各論理ブロックについての前記メタデータは、前記論理ブロックが書き込まれる前記論理ブロックアドレスで更新される請求項９に記載の方法。
【請求項１１】
前記論理ブロックアドレスの範囲を示す値は、前記ストレージ媒体の前記論理ブロックアドレスの全てを示す値である請求項１に記載の方法。
【請求項１２】
前記論理ページを生成するステップは、プロセッサによって行われる請求項１に記載の方法。
【請求項１３】
前記生成された論理ページを書き込むステップは、マージを含む他の書き込み処理へのバックグラウンドタスクとして行われる請求項１に記載の方法。
【請求項１４】
データを論理ブロックの範囲に書き込む装置であって、
開始論理ブロックアドレス、論理ブロックアドレスの範囲を示す値、及びデータの論理ブロックを含むコマンドを受信するように構成される第１のデバイスと、
前記データの論理ブロックを記憶するように構成される第１のテンポラリストレージと、
前記データの論理ブロックを、論理ページを含む複数の論理ブロックの数に対応する複数個複製することにより、論理ページを生成し、生成された論理ページを第２のテンポラリストレージに転送するように構成されるプロセッサと、
論理ページを記憶するように構成されるストレージ媒体と、
前記生成された論理ページを、前記第２のテンポラリストレージから、前記開始論理ブロックアドレスから開始する前記ストレージ媒体に書き込むように構成される書き込み回路と、
第１の書き込み処理が論理ページ境界で開始しない、又は最後の書き込み処理が論理ページ境界で終了しない場合に、リードモディファイライト処理を行うリードモディファイライトモジュールと、
を備える装置。
【請求項１５】
前記第２のテンポラリストレージは、前記リードモディファイライトモジュールにおける待ち行列である請求項１４に記載の装置。
【請求項１６】
前記待ち行列の前記生成された論理ページを転送及び記憶する前に、前記リードモディファイライトモジュールに前記待ち行列を予約することを更に含む請求項１５に記載の装置。
【請求項１７】
現在の論理ページにおける前記ストレージ媒体に書き込まれた論理ブロックアドレスの範囲における論理ブロックの数をカウントし、前記カウントを、前記論理ブロックアドレスの範囲を示す値と比較するように構成されるカウンタを更に備える請求項１４に記載の装置。
【請求項１８】
前記比較が前記論理ブロックアドレスの範囲を示す値に到達したことを示す場合には、指示信号を生成するように構成される回路を更に備える請求項１７に記載の装置。
【請求項１９】
前記書き込み回路は、マージを含む他の書き込み処理へのバックグラウンドタスクとして、前記論理ページを前記第２のテンポラリストレージから前記ストレージ媒体に書き込む請求項１４に記載の装置。
【請求項２０】
ブロック−バイ−ブロックベースで出力論理ページへ書き込まれる前記論理ブロックの巡回冗長コード（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｏｄｅ（ＣＲＣ））データを累積することにより、前記生成された論理ページに対する前記ＣＲＣデータを生成するように構成される回路を含むリードモディファイライトモジュールを更に備える請求項１４に記載の装置。
【請求項２１】
前記リードモディファイライトモジュールは、更に、各ブロックについてのデータインテグリティフィールドを算出し、前記算出されたデータインテグリティフィールドを前記ブロック間に挿入するように構成される請求項２０に記載の装置。
【請求項２２】
データの論理ページをマージする方法であって、
開始論理ブロックアドレス、論理ブロックアドレスの範囲を示す値、及び書き込みマスクを含むコマンドを受信するステップと、
前記コマンドに関連付けられた第１の複数の論理ブロックを受信するステップと、
前記書き込みマスクを、論理ページを含む論理ブロックの数に対応する部分に分割するステップと、
現在の論理ページに対応する前記書き込みマスクの部分を取得するステップと、
前記第１の複数の論理ブロックを用いて前記書き込みマスクの対応する部分に基づいて第１の論理ページを構築するステップと、
第２の複数の論理ブロックを含む第２の論理ページをストレージ媒体から検索するステップと、
前記開始論理ブロックアドレスから開始する前記書き込みマスクの対応する論理ページ部分に基づいて前記第２の論理ページの論理ブロックを前記第１の論理ページの論理ブロックとマージすることにより、マージされた出力論理ページを生成するステップと、
を備える方法。
【請求項２３】
前記書き込みマスクの論理ページ部分の値が全て１である場合には、前記第２の論理ページは、マージされずに前記出力論理ページとして出力される請求項２２に記載の方法。
【請求項２４】
前記書き込みマスクの論理ページ部分の値が全て０である場合には、論理ページを出力しない請求項２２に記載の方法。
【請求項２５】
前記マージは、複数のマルチプレクサを含む複数のデータパスに亘って行われる請求項２２に記載の方法。
【請求項２６】
前記書き込みマスクは、第１及び第２の論理ページの論理ブロックが出力論理ページにマージされる前記開始論理ブロックアドレスから開始し、かつインデックス付けされる前記論理ブロックアドレスの範囲について示す請求項２２に記載の方法。
【請求項２７】
各論理ページは、所定数の論理ブロックを含み、別の第１の論理ページは、前記書き込みマスクの対応する論理ページ部分に基づいて構築され、別の第２の論理ページは、前記ストレージ媒体から検索され、複数のマージされた出力論理ページは、論理ブロックアドレスの範囲、及び論理ページを含む前記所定数の論理ブロックに基づいて、対応する第１及び第２の論理ページをマージすることにより、生成される請求項２６に記載の方法。
【請求項２８】
マージされる前記論理ブロックのアドレスは、非連続的である請求項２６に記載の方法。
【請求項２９】
ブロック−バイ−ブロックベースで前記出力論理ページへマージされる前記論理ブロックの巡回冗長コード（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｏｄｅ（ＣＲＣ））データを累積することにより、マージされる前記出力論理ページに対する前記ＣＲＣデータを生成するステップを更に備える請求項２２に記載の方法。
【請求項３０】
データの論理ページをマージする装置であって、
開始論理ブロックアドレス、論理ブロックアドレスの範囲を示す値、及び書き込みマスクを含むコマンドを受信するコマンド入力デバイスと、
前記コマンドに関連付けられた第１の複数の論理ブロックを受信及び記憶するように構成されるテンポラリストレージと、
前記テンポラリストレージから前記コマンドに関連付けられた前記第１の複数の論理ブロックを受信し、第２の複数の論理ブロックを含む第２の論理ページをストレージ媒体から検索し、前記書き込みマスクを、論理ページを含む論理ブロックの数に対応する部分に分割し、前記第１の複数の論理ブロックを用いて前記書き込みマスクの対応する部分に基づいて第１の論理ページを構築するように構成される入力論理デバイスと、
複数のマルチプレクサを含む複数のデータパスを含むデータパス回路であって、前記データパス回路は、前記書き込みマスクの対応する論理ページ部分に基づいて、前記開始論理ブロックアドレスから開始して、第２の論理ページの論理ブロックを第１の論理ページの論理ブロックとマージすることにより、前記複数のデータパスを用いて、マージされた出力論理ページを生成するように構成される、データパス回路と、
を備える装置。
【請求項３１】
前記書き込みマスクの論理ページ部分の値が全て１である場合、前記第２の論理ページは、マージされずに前記出力論理ページとして出力される請求項３０に記載の装置。
【請求項３２】
前記書き込みマスクの論理ページ部分の値が全て０である場合、論理ページを出力しない請求項３０に記載の装置。
【請求項３３】
前記開始論理ブロックアドレスから開始する、処理された論理ブロックの数を、前記範囲を示す値までカウントするように構成される論理ブロックカウンタを更に備え、
前記論理ブロックカウンタは、前記カウントの値が、前記コマンドで受信された論理ブロックアドレス範囲値と一致する場合には、指示信号を生成する、請求項３０に記載の装置。
【請求項３４】
前記書き込みマスクは、第１及び第２の論理ページの論理ブロックが出力論理ページにマージされる前記開始論理ブロックアドレスから開始し、かつインデックス付けされる前記論理ブロックアドレスの範囲について示す請求項３０に記載の装置。
【請求項３５】
各論理ページは、所定数の論理ブロックを含み、別の第１の論理ページは、前記書き込みマスクの対応する論理ページ部分に基づいて構築され、別の第２の論理ページは、前記ストレージ媒体から検索され、複数のマージされた出力論理ページは、前記論理ブロックアドレスの範囲、及び論理ページを含む前記所定数の論理ブロックに基づいて、対応する第１及び第２の論理ページをマージすることにより、生成される請求項３４に記載の装置。
【請求項３６】
マージされる前記論理ブロックのアドレスは、非連続的である請求項３４に記載の装置。
【請求項３７】
マージされる前記論理ブロックのアドレスは、連続的である請求項３４に記載の装置。
【請求項３８】
ブロック−バイ−ブロックベースで前記出力論理ページへマージされる前記論理ブロックの巡回冗長コード（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｏｄｅ（ＣＲＣ））データを累積することにより、前記出力論理ページに対して前記ＣＲＣを生成するように構成される第２の論理デバイスを更に備える請求項３０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータシステムのためのデータストレージシステムに関する。より具体的には、本開示は、選択されたデータをストレージ媒体に書き込むことに関する。
【背景技術】
【０００２】
データストレージシステムは、ホストシステムのデータのためにストレージを提供する。
【発明の概要】
【０００３】
データは、ストレージ媒体に書き込まれる論理ブロックと呼ばれる所定サイズの単位のストレージにグループ化される。例えば、ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ（ＳＳＤ））又はハイブリッドドライブに、データの論理ブロックをストレージ媒体に書き込むときに、データは、例えば、複数の論理ブロックからなる、論理ページ（Ｌページ）のような大きなユニットで書き込まれる。同一の新たなデータを、ストレージ媒体のいくつかの論理ページにまたがる多数の論理ブロックに書き込む、又は新たな異なるデータを、ストレージ媒体の論理ページに含まれる論理ブロックの一部のみに書き込むときに有利となる。
【図面の簡単な説明】
【０００４】
本発明の概念の態様及び構成は、添付の図面を参照しながら例示的な実施形態を説明することによってより明らかとなるであろう。
【０００５】
【図１】図１は、本発明の一例の実施形態に係る多数の論理ブロックに同一の新たなデータを書き込むデータストレージ装置を示すブロック図である。
【図２】図２は、本発明の一例の実施形態に係るｗｒｉｔｅ−ｓａｍｅ処理を実行するための方法を示すフローチャートである。
【図３】図３は、本発明の一例の実施形態に係るｓｋｉｐ−ｗｒｉｔｅ処理を実行するためのデータストレージ装置を示すブロック図である。
【図４】図４は、本発明の一例の実施形態に係るｓｋｉｐ−ｗｒｉｔｅ処理を実行するための方法を示すフローチャートである。
【図５Ａ】図５Ａは、本発明の一例の実施形態に係る書き込みマスクを示す図である。
【図５Ｂ】図５Ｂは、本発明の一例の実施形態に係る論理ページに含まれる論理ブロックの数に対応する部分に分割された書き込みマスクを示す図である。
【図６】図６は、本発明の一例の実施形態に係る書き込みマスクの対応する部分を用いて第１の論理ページ及び第２の論理ページのマージの方法を示す図である。
【発明を実施するための形態】
【０００６】
特定の実施形態が説明されるが、これらの実施形態は例示のみを目的とするもので本発明の保護範囲を限定する意図はない。本稿において説明される方法及び装置は他の様々な形態で実施され得る。更に、本稿において説明される方法及びシステムの形態には、多様な省略、置換、変更が、本発明の保護範囲を逸脱すること無く行われ得る。
【０００７】
概要
ソリッドステートドライブ（Ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅｓ（ＳＳＤｓ））は、コンピュータシステム用のデータストレージシステムとして採用される。このようなデータストレージシステムのメモリロケーションに記憶されたデータを変更するために、データは、例えば、複数の論理ブロックからなる論理ページのような、大きなユニットに書き込まれる。例えば、４キロバイト（ｋＢ）の論理ページは、８つの５１２バイトの論理ブロックからなる。同じデータを連続的な論理ブロックの範囲に書き込む、又はデータを連続的な論理ブロックの範囲内の非連続的な論理ブロックに変更するときに有利となる。
【０００８】
システム概要
本発明の一態様は、同一のデータを連続的な複数の論理ブロックに書き込むＷｒｉｔｅ  Ｓａｍｅ装置及び方法に関する。Ｗｒｉｔｅ  Ｓａｍｅ装置の一例の実施形態では、当該装置は、開始論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ（ＬＢＡ））、ＬＢＡの範囲（すなわち、データが書き込まれるべき論理ブロックの数を示す値）、及び論理ブロックに書き込まれるべきデータのブロックを含むコマンドを受信する。
【０００９】
Ｗｒｉｔｅ  Ｓａｍｅ装置は、受信されたデータのブロックを、開始ＬＢＡで開始するＬＢＡの特定の範囲の各論理ブロックに書き込むために処理する。Ｗｒｉｔｅ  Ｓａｍｅ装置は、リードモディファイライト処理（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ  ｏｐｅｒａｔｉｏｎ（ＲＭＷ））を実行し、第１の書き込み処理が論理ページ境界で開始しない、又は最後の書き込み処理が論理ページ境界で終了しない場合に、オンザフライで論理ページブロックをマージし、適切なビット変更を行う。
【００１０】
本発明の別の態様は、Ｓｋｉｐ  Ｗｒｉｔｅ装置及び方法に関する。Ｓｋｉｐ  Ｗｒｉｔｅ装置の一例の実施形態では、当該装置は、開始論理ブロックアドレス、論理ブロックアドレスの範囲を示す値、及び書き込みマスクを含むコマンドを受信する。出力論理ページは、書き込みマスクの対応する部分に基づいて、論理ブロックを論理ページにマージすることにより、生成される。
【００１１】
Ｓｋｉｐ  Ｗｒｉｔｅ装置は、書き込みマスクによって決定された論理ページで処理し、ハードウェア最適化を以前のソフトウェアプロセスのものに適用する。Ｓｋｉｐ  Ｗｒｉｔｅ装置は、オンザフライで論理ブロックをマージし、書き込みマスクに基づいて適切なビット−モディフィケーション（ｂｉｔ−ｍｏｄｉｆｉｃａｔｉｏｎｓ）を行う。
【００１２】
ＷＲＩＴＥ  ＳＡＭＥ
図１は、本発明の一例の実施形態に係る多数の論理ブロックに同一の新たなデータを書き込むデータストレージ装置を示すブロック図である。図１を参照すると、本発明の一例の実施形態では、データストレージ装置１００は、コマンド入力デバイスと、第１のテンポラリストレージ１２０と、プロセッサ１３０と、第２のテンポラリストレージ１４０と、巡回冗長検査（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｈｅｃｋ（ＣＲＣ））生成回路１５０と、比較回路１６０と、書き込み回路１７０と、カウンタ１８０と、ストレージ媒体１９０と、を含んでもよい。ストレージ媒体は、ソリッドステート半導体メモリ（例えば、ＮＡＮＤ）のような不揮発性メモリを含んでもよい。
【００１３】
データストレージ装置１００の要素は、１つの半導体チップに集積されてもよく、又は１つの半導体パッケージに集積された別々のダイであってもよい。当業者は、他の構成が本発明の範囲内で可能かつ含まれることを理解するであろう。例えば、記載された要素で実行される機能は、他の要素で実行されてもよく、当該要素は、いくつかの要素を組み合わせてもよく、及び／又はより多数の要素に分割（ｓｕｂ−ｄｉｖｉｄｅｄ）されてもよい。
【００１４】
一実施形態では、コマンド入力デバイス１１０は、開始論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ（ＬＢＡ））、ＬＢＡの範囲を示す値、及びＬＢＡの範囲内の論理ブロックに書き込まれるべきデータのブロックを含むコマンドを受信する。例えば、コマンドは、データストレージ装置１００に接続されるホストから受信されてもよい。データの受信された論理ブロックは、第１のテンポラリストレージ１２０に転送される。第１のテンポラリストレージ１２０は、プロセッサ１３０の内部又は外部であってもよい。プロセッサ１３０は、受信されたデータの論理ブロックと同一のデータを有する各論理ブロックを備える論理ページを生成するために、データの受信された論理ブロックを複製する。例えば、８つの論理ブロックを含む論理ページについて、プロセッサ１３０は、それぞれが同一のデータを含む８つの論理ブロックを含む論理ページを生成するために、受信された論理ブロックを７つ（７回）複製する。
【００１５】
各論理ブロックは、これに限定されないが、例えば、約５１２バイトのデータ、約１０２４バイトのデータ、約２０４８バイトのデータ又は約４０９６バイトのデータを含んでもよい。一部の場合には、例えば、ストレージ媒体が消去又は再フォーマットされたとき、データの受信された論理ブロックは、全て１又は全て０であってもよく、論理ブロックアドレスの範囲を示す値は、ストレージ媒体の論理ブロックアドレスの全てを示してもよい。
【００１６】
プロセッサ１３０は、生成された論理ページを第２のテンポラリストレージ１４０に転送させる。第２のテンポラリストレージ１４０は、（ＲＭＷ）モジュール１９５に含まれる待ち行列（ｑｕｅｕｅ）であってもよい。プロセッサ１３０は、生成された論理ページを転送する前に、第２のテンポラリストレージ１４０を予約させてもよい。図示されるように、ＲＭＷモジュール１９５は、ＣＲＣ回路１５０と、書き込み回路１７０と、を更に含んでもよい。
【００１７】
一実施形態では、ＣＲＣ回路１５０は、少なくともデータ及び各論理ブロックのＬＢＡに基づいてＣＲＣ値を生成し、書き込まれる論理ブロックデータレディのＣＲＣを、受信された論理ブロックデータのＣＲＣと比較する。ＣＲＣが一致しない場合には、書き込まれる論理ブロックデータは、無効であるとマークされる。ＣＲＣが、本開示の例示的な実施形態で記述されるが、例えば、これに限定されないが、チェックサム及びハッシュ関数等のような他の誤り検出メカニズムの使用も一部の実施形態では可能である。
【００１８】
一実施形態では、書き込み回路１７０は、有効データをストレージ媒体１９０に出力する。カウンタ１８０は、ストレージ媒体１９０に書き込まれる論理ブロックの数をカウントし、カウント値を生成する。比較回路１７０は、カウント値を、書き込まれるべきＬＢＡの範囲を示す値と比較する。値が一致する場合には、比較回路１６０は、ｗｒｉｔｅ  ｓａｍｅ処理が完了したことを示す信号を生成する。一部の実施形態では、ｗｒｉｔｅ  ｓａｍｅ処理は、他の（ＲＭＷ）処理よりも下位にされ、そのため、書き込み回路は、マージを含む他の書き込み処理へのバックグラウンドタスクとして、論理ページを第２のテンポラリストレージからストレージ媒体に書き込む。
【００１９】
一部の場合には、第１（初め）の書き込み処理は、論理ページ境界で開始しない、及び／又は最後の書き込み処理は、論理ページ境界で終了しない。このような場合に、（ＲＭＷ）モジュール１９５は、対応する論理ページに対する書き込みマスクのために特定される論理ブロックのみを変更するために、ＲＭＷ処理を行う。
【００２０】
ＲＭＷ処理では、生成された論理ページは、第２のテンポラリストレージ１４０に記憶されてもよい。複数のブロックを含む第２の論理ページは、ＲＭＷモジュール１９５によってストレージ媒体１９０から検索される。生成された論理ページ及び第２の論理ページのセクタは、複数のデータパス及びマルチプレクサを介してマークされ、マージされた出力論理ページを生成する。また、マージされた出力論理ページに対するＣＲＣは、マージされた出力論理ページを生成するために、生成された論理ページ及びマージされた第２の論理ページのブロック−バイ−ブロックベース（ｂｌｏｃｋ−ｂｙ−ｂｌｏｃｋ  ｂａｓｉｓ）のＣＲＣデータを算出及び累積することにより生成される。
【００２１】
生成された論理ページ及び第２の論理ページの少なくとも１つのブロックは、マージされた出力論理ページが生成されると、チェックデータ論理ページに再構築される。それに代えて、生成された論理ページ及び第２の論理ページの両方は、生成された、マージされた出力論理ページとして、チェックデータ論理ページに再構築されてもよい。
【００２２】
ＣＲＣは、チェックデータ論理ページのためのブロック−バイ−ブロックベースで算出及び累積され、誤り検出は、生成された論理ページ及び第２の論理ページのものに対応するブロックを含む少なくとも１つのチェックデータ論理ページで行われ、マージされた出力論理ページの対応するブロックを検証する。チェックデータ論理ページのブロックの少なくともいくつかが、マージされた出力論理ページのブロックを転送する複数のデータパスのサブセットで送信されるため、少なくとも１つのチェックデータ論理ページの誤り検出は、マージされた出力論理ページの少なくとも１つのチェックデータ論理ページからブロックを検証する。一例の実施形態では、両方のチェックデータ論理ページの誤り検出は、マージされた出力論理ページの第１及び第２のチェックデータ論理ページのブロックを検証する。
【００２３】
一実施形態では、ＲＭＷモジュールは、更に、各ブロックについてデータインテグリティフィールド（ｄａｔａ  ｉｎｔｅｇｒｉｔｙ  ｆｉｅｌｄ）を算出し、算出されたデータインテグリティフィールドをブロック間に挿入するように構成される。データ転送時のデータインテグリティエラーを防ぐための保護スキームは、ＡＮＳＩ  Ｔ１０  Ｄａｔａ  Ｉｎｔｅｇｒｉｔｙ  Ｆｅａｔｕｒｅ（Ｔ１０  ＤＩＦ）スタンダードによって定義される。Ｔ１０  ＤＩＦは、ホストバスアダプタからディスクへ、及びストレージエリアネットワーク（ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ  （ＳＡＮ））ファブリックを通じて戻って、読み出される及び書き込まれるデータのインテグリティ（完全性）をチェックするための手法を提供する。このチェックは、Ｔ１０スタンダードで定義されるデータインテグリティフィールド（ｄａｔａ  ｉｎｔｅｇｒｉｔｙ  ｆｉｅｌｄ（ＤＩＦ））を通じて実装される。
【００２４】
図２は、本発明の一例の実施形態に係るｗｒｉｔｅ−ｓａｍｅ処理を実行するための方法を示すフローチャートである。図２を参照すると、開始論理ブロックアドレス、書き込まれる論理ブロックアドレスの範囲を示す値、及びデータの論理ブロックを含むコマンドを受信する。データの論理ブロックは、第１のテンポラリストレージへ転送され、記憶される（２１５）。第１のテンポラリストレージは、プロセッサの内部のメモリであってもよく、半導体チップに集積された他のメモリであってもよい。論理ページは、第１のテンポラリストレージに記憶されるデータの論理ブロックを、論理ページに含まれる論理ブロックの数、例えば、８つの論理ブロック、に対応する複数個（複数回）複製することにより生成される（２２０）。よって、論理ページは、生成され、第２のテンポラリストレージ、例えば、待ち行列に転送される（２２５）。
【００２５】
複製された論理ページの第１の論理ブロックアドレスが、現在の論理ページの論理ページ境界で開始するかどうか、又は複製された論理ページの最後の論理ブロックアドレスが、現在の論理ページの論理ページ境界で終了するかどうかの判定がなされる（２３０）。そうである場合（２３０−Ｙ）、ＣＲＣは、ストレージ媒体に書き込まれる論理ページに、上述されたように、算出される。複製された論理ページの第１の論理ブロックアドレスが、現在の論理ページの論理ページ境界で開始しない場合、又は複製された論理ページの最後の論理ブロックアドレスが、現在の論理ページの最後の論理ブロックアドレスに対応しない場合（２３０−Ｎ）、複製された論理ページの対応する論理ブロックを現在の論理ページにマージするためにＲＭＷ処理を行う（２５５）。
【００２６】
論理ページがストレージ媒体に書き込まれた後、カウンタは、書き込まれた論理ブロックアドレスの範囲におけるブロックの数で更新される。カウンタの値が、書き込まれた論理ブロックアドレスの範囲における論理ブロックの数に等しくない場合（２４５−Ｎ）、ＬＢＡは、現在の論理ページにおいて書き込まれる、論理ブロックアドレスの範囲において、論理ブロックの数でインクリメントされ（２６０）、処理は、処理２３０から繰り返す。書き込まれる論理ブロックアドレスの範囲において全てのブロックが書き込まれている場合（２４５−Ｙ）、書き込み完了信号は、処理の最後に生成される。
【００２７】
ＳＫＩＰ  ＷＲＩＴＥ
図３は、本発明の一例の実施形態に係るｓｋｉｐ−ｗｒｉｔｅ処理を実行するためのデータストレージ装置を示すブロック図である。図３を参照すると、本発明の一例の実施形態では、データストレージ装置３００は、コマンド出力デバイス３１０と、ストレージ３２０と、入力論理デバイス３３０と、マルチプレクサ３４０と、第１の論理デバイス３５０と、第２の論理デバイス３６０と、カウンタ３７０と、を含んでもよい。
【００２８】
データストレージ装置３００の要素は、１つの半導体チップに集積されてもよく、又は１つの半導体パッケージに集積された別々のダイであってもよい。当業者は、他の構成が本発明の範囲内で可能かつ含まれることを理解するであろう。例えば、記載された要素で実行される機能は、他の要素で実行されてもよく、当該要素は、いくつかの要素を組み合わせてもよく、及び／又はより多数の要素に分割（ｓｕｂ−ｄｉｖｉｄｅｄ）されてもよい。
【００２９】
コマンド入力デバイス３１０は、開始論理ブロックアドレス（ＬＢＡ）、ＬＢＡの範囲を示す値、及び書き込みマスクを含むコマンドを受信する。書き込みマスクは、異なるデータを含む論理ブロックがマージされる論理ブロックのＬＢＡを特定する。コマンドに関連付けられた新たな論理ブロックは、受信され、テンポラリストレージ３２０に記憶される。各論理ブロックは、これに限定されないが、例えば、約５１２バイトのデータ、約１０２４バイトのデータ、約２０４８バイトのデータ又は約４０９６バイトのデータを含んでもよい。
【００３０】
一実施形態では、入力論理デバイス３３０は、書き込みマスクを、論理ページを含む論理ブロックの数に対応する部分に分割し、書き込みマスクの対応する部分に基づいて第１の論理ページを構築する。例えば、８つの論理ブロックを含む論理ページについて、書き込みマスクは、ＬＢＡに関連付けられたマージインジケータとしてそれぞれが８ビットを含む部分に分割される。
【００３１】
図５Ａは、本発明の一例の実施形態に係る書き込みマスクを示す図である。図５Ａを参照すると、書き込みマスクは、２０４８ビットを含み、各ビットは、コマンドで受信された開始ＬＢＡで開始するＬＢＡに対応する。一例として、図５Ａは、‘８’の開始ＬＢＡ及び‘２０５５’の終了ＬＢＡを示す。書き込みマスクのビット０、２及び３は、新たな論理ブロックが、対応するＬＢＡで挿入される‘１’に設定される。マージされる論理ブロックのＬＢＡは、連続的である又は非連続的であってもよい。
【００３２】
図５Ｂは、本発明の一例の実施形態に係る論理ページに含まれる論理ブロックの数に対応する部分に分割された書き込みマスクを示す図である。図５Ｂに示されるように、８つのＬＢＡを含む論理ページについて、書き込みマスクは、論理ページのＬＢＡに対応するそれぞれが８ビットを含む２５６の部分に分割される。第１の論理ページに対応する部分では、ＬＢＡ８，１０及び１１に対応する論理ブロックは、受信されたコマンドに関連付けられた論理ブロックを、それらのＬＢＡで論理ページに挿入することにより、置き換えられる。当業者は、この例が単に理解を深めるためのものであり、論理ページ、論理ブロック及びＬＢＡの他の構成にも適用可能であることを理解するであろう。
【００３３】
一実施形態では、入力論理デバイス３３０は、第１の論理ページを構築し、例えば図１に示されるストレージ媒体１９０のようなストレージ媒体から第２の論理ページを検索し、各論理ページのヘッダーに含まれるＣＲＣを検証する。ＣＲＣは、本開示の例示的な実施形態で記述されているが、これに限定されないが、一部の実施形態では、例えば、チェックサム及びハッシュ関数等の他の誤り検出メカニズムを使用することが可能であることを留意しなければならない。また、一部の実施形態では、ＣＲＣ検証は、装置の他の場所で実行されてもよい。第１及び第２の論理ページは、システムクロックをデータパス回路３４０に同期した入力論理デバイス３３０からブロック−バイ−ブロックで転送され、ここで、第１及び第２の論理ページのセクタは、書き込みマスクの対応する部分に基づいて、システムクロック速度とほぼ同じ速度でマージされる。
【００３４】
一例の実施形態では、第１の論理ページは、第２の論理ページが検索されるまで記憶される。第２の論理ページは、ほぼシステムクロック速度でブロック−バイ−ブロックでＳｋｉｐ  Ｗｒｉｔｅ装置３００を通過され、記憶された第１の論理ページでマージされる。第１及び第２の論理ページは、マージされた出力論理ページが有効であるかどうかを判定するために処理される。
【００３５】
図６は、本発明の一例の実施形態に係る書き込みマスクの対応する部分を用いて第１の論理ページ及び第２の論理ページのマージの方法を示す図である。図６の例示的な図では、書き込みマスクは、出力論理ページを“１”でマージするための論理ブロックと、第２の論理ページに対して“０”で破棄するための論理ブロックを示し、出力論理ページを“０”でマージするための論理ブロックと、第１の論理ページに対して“１”で破棄するための論理ブロックと、を示す。当業者は、指定“１”及び“０”は、単に例示であり、本開示の範囲から逸脱せずに他の指定を取りうることを理解するであろう。
【００３６】
図６を参照すると、書き込みマスク６７０の対応する部分は、破棄されるであろう（破棄するためのＬＢ６２０として示される）第１の論理ページ６１０の論理ブロックの代わりに、第１の論理ページ６１０の論理ブロックとマージされる第２の論理ページの論理ブロックを特定する。書き込みマスク６７０の対応する部分によって出力論理ページにマージするために特定されない第２の論理ページ６４０の論理ブロックは、破棄され（破棄するためのＬＢ６５０として示される）、書き込みマスク６７０の対応する部分によって出力論理ページにマージするために特定される第２の論理ページ６４０の論理ブロック（保持するためのＬＢ６６０として示される）は、マージされた出力論理ページ６８０を生成するために、第１の論理ページ６１０とマージされる。
【００３７】
逆に、書き込みマスク６７０の対応する部分によって出力論理ページにマージするために特定されない第１の論理ページ６１０の論理ブロックは、破棄され（破棄するためのＬＢ６２０として示される）、書き込みマスク６７０の対応する部分によって出力論理ページ（マージするためのＬＢ６３０として示される）にマージするために特定される第１の論理ページ６１０の論理ブロックは、論理ブロックで第２の論理ページ６４０のマージ６６０にマージされ、マージされた出力論理ページ６８０を生成する。すなわち、書き込みマスクの対応する部分によって特定される第１の論理ページの論理ブロックは、マージされた出力論理ページを生成するために、第２の論理ページの対応する論理ブロックにより置き換えられ、第１及び第２の論理ページの使用されないセクタは、破棄される。
【００３８】
上記のマージ処理は、第１の論理ページの論理ブロックとマージされる第２の論理ページの特定された論理ブロックについて説明されたが、当業者は、本発明の範囲が、第１の論理ページの特定された論理ブロックを第２の論理ページの論理ブロックとマージすることも含むことを理解するであろう。また、図６のように示されいるが、第１の論理ページ及び第２の論理ページの複数の論理ブロックにおける論理ブロックの数は、同一でなくてもよい。
【００３９】
図３を再度参照すると、一例の実施形態では、第２の論理デバイス３６０は、マージされた出力論理ページに対して算出及び累積する。マージされた出力論理ページｌの各論理ブロックは、ブロック−バイ−ブロックベースでＳｋｉｐ  Ｗｒｉｔｅ装置３００から出力される。マージされた出力論理ページの生成は、システムクロック速度とほぼ同じ速度で行われる。
【００４０】
一例の実施形態では、第１の論理デバイス３５０は、第１及び第２のチェックデータページとして第１及び第２の論理ページをそれぞれ再構築し、チェックデータページのＣＲＣは、ブロック−バイ−ブロックベースで第１の論理デバイス３５０により算出及び累積される。第１のチェックデータページは、出力論理ページにマージされた第１の論理ページの論理ブロックが送信されるデータパスのサブセットとは異なるデータパスの第１のサブセットで送信される論理ブロックを含んでもよく、第２のチェックデータページは、出力論理ページにマージされた第２の論理ページの論理ブロックが送信されるデータパスのサブセットとは異なるデータパスの第２のサブセットで送信される論理ブロックを含んでもよい。
【００４１】
第１及び第２の論理ページの最後の論理ブロックを処理した後に、第１の論理ページのＣＲＣは、第１の論理デバイス３５０に送信される。同時に、第２の論理ページのＣＲＣは、第１の論理デバイス３５０に送信される。
【００４２】
一例の実施形態では、第１の論理デバイス３５０は、第１の論理ページの送信されたＣＲＣを、第１のチェックデータページに対して算出されたＣＲＣと比較し、第２の論理ページの送信されたＣＲＣを、第２のチェックデータページに対して算出されたＣＲＣと比較することにより、誤り検出を行う。受信された論理ページＣＲＣがチェックデータページのＣＲＣと一致する場合には、マージされた出力論理ページは、マージされた出力論理ページの論理ブロックがチェックデータページの論理ブロックと同じロジックを通過されるため、有効であり、誤りは導入されない。ＣＲＣが一致しない場合には、メッセージは、生成され、マージされた出力論理ページが有効でないことを示す。チェックデータページの論理ブロックの少なくともいくつかが、マージされた出力論理ページの論理ブロックも送信する複数のデータパスのサブセットに送信され、少なくとも１つのチェックデータページの誤り検出は、マージされた出力論理ページを検証するため、有効性は、このように検証されうる。チェックデータページＣＲＣの算出の一部として、実際のマージされた論理ページからの出力データの使用は、論理ページマージメカニズムのパスに沿って導入される誤りが検出されることを確実にする。
【００４３】
マージされた出力論理ページの生成とは逆に、第２の論理デバイス３６０は、ブロック−バイ−ブロックベースのマージされた出力論理ページに対するＣＲＣを生成する。マージされた出力論理ページの最後の論理ブロックが出力された後、マージされた出力論理ページに対して第２の論理デバイス３６０によって生成されたＣＲＣは、出力される。
【００４４】
書き込みマスクの論理ページ部分の値が全て１である場合、第２の論理ページは、マージされずに、出力論理ページとして出力される。逆に、書き込みマスク値の論理ページ部分が全て０である場合、論理ページは出力されず、ストレージ媒体に記憶される対応する論理ページは、変更されない。
【００４５】
図３を再度参照すると、カウンタ３７０は、ストレージ媒体に書き込まれる論理ブロックの数に基づいてインクリメントされる。カウンタ３７０での値は、コマンドにおいて受信されたＬＢＡ範囲の値と比較され、カウンタ値がＬＢＡ範囲と一致した場合には、カウンタ３７０は、ｓｋｉｐ  ｗｒｉｔｅ処理が完了したことを示す信号を生成する。
【００４６】
図４は、本発明の一例の実施形態に係るｓｋｉｐ−ｗｒｉｔｅ処理を実行するための方法を示すフローチャートである。図４を参照すると、開始論理ブロックアドレス（ｓｔａｒｔｉｎｇ  ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ（ＬＢＡ））、ＬＢＡの範囲を示す値及び書き込みマスクを含むコマンドは、受信される（４１０）。コマンドと関連付けられた新たな論理ブロックは、受信され、テンポラリストレージに記憶される（４１５）。書き込みマスクは、論理ページを含む論理ブロックの数に対応する部分に分割され（４２５）、現在の論理ページに対応する書き込みマスクの部分は、取得される（４３０）。
【００４７】
書き込みマスクの対応する部分の値が全て同一である場合（４３５−Ｙ）、新たなデータは、書き込みマスクの当該部分に対応する論理ページのＬＢＡの全てに書き込まれる、例えば、書き込みマスクの対応する部分の全てのビットが‘１’に設定される、又は論理ページに書き込まれる新たなデータを必要としない、例えば、書き込みマスクの対応する部分の全てのビットが‘０’に設定される。新たなデータが、論理ページのＬＢＡの全てに書き込まれる場合（４４０−Ｙ）、第１の論理ページは、コマンドに関連付けられた、受信された論理ブロックを用いて構築される（４５０）。ＣＲＣは、再構築された論理ページに対して算出され、論理ページは、ストレージ媒体に書き込まれる（４７０）。カウンタは、処理されたＬＢＡの数に基づいてインクリメントされる（４７５）。カウンタでの値は、コマンドにおいて受信されたＬＢＡ範囲の値と比較され（４８０）、カウンタ値がＬＢＡ範囲と一致した場合には（４８０−Ｙ）、カウンタは、ｓｋｉｐ  ｗｒｉｔｅ処理が完了したことを示す信号を生成する（４８５）。そうでなければ、処理は、処理４３０に戻る。
【００４８】
新たなデータが論理ページに書き込まれることを必要としない場合には（４４０−Ｎ）、ストレージ媒体への書き込み処理は行われない（４４５）。カウンタは、処理されたＬＢＡの数に基づいてインクリメントされる（４７５）。カウンタでの値は、コマンドにおいて受信されたＬＢＡ範囲の値と比較され（４８０）、カウンタ値がＬＢＡ範囲と一致した場合には（４８０−Ｙ）、カウンタは、ｓｋｉｐ  ｗｒｉｔｅ処理が完了したことを示す信号を生成する（４８５）。そうでなければ、処理は、処理４３０に戻る。
【００４９】
書き込みマスク値の全てが同一ではない場合（４３５−Ｎ）には、第２の論理ページは検索され（４５５）、第１の論理ページは、書き込みマスクに対応する部分に基づいて、コマンドに関連付けられた、受信された論理ブロックを用いて構築される（４６０）。第１及び第２の論理ページは、上述されたように、ＲＭＷ処理でマージされる（４６５）。ＣＲＣは、構築された論理ページに対して算出され、論理ページは、ストレージ媒体に書き込まれる（４７０）。カウンタは、処理されたＬＢＡの数に基づいてインクリメントされる（４７５）。カウンタでの値は、コマンドにおいて受信されたＬＢＡ範囲の値と比較され（４８０）、カウンタ値がＬＢＡ範囲と一致した場合には（４８０−Ｙ）、カウンタは、ｓｋｉｐ  ｗｒｉｔｅ処理が完了したことを示す信号を生成する（４８５）。そうでなければ、処理は、処理４３０に戻る。
【００５０】
本発明の処理は、記載された順序、異なる順序で行われてもよく、又は処理は、組み合わせられてもよい。当業者は、前述の処理は、例示であり、本発明の範囲を逸脱せずに他の変更も可能であることを理解するであろう。
【００５１】
特定の実施形態が記載されたが、これらの実施形態は例示のためにのみ提供されたものであり、本開示の保護の範囲を限定することを意図しない。実際に、本稿に記載の新規な方法及びシステムは他の多様な形態で実施され得る。本稿に記載の方法及びシステムの形態の様々な省略、置換、及び変更が、保護の精神から逸脱することなく加えられ得る。
【００５２】
添付の請求の範囲及びその等価物は、このような形態又は変形をも、本開示の精神及び範囲に含まれるものとして包含するよう意図されている。例えば、本稿で開示された例示的な装置及び方法は、ソリッドステートドライブ、ハードディスクドライブ、ハイブリッドハードドライブ等に適用されることができる。また、ストレージの他の形態、例えば、これに限定されないが、ＤＲＡＭ、ＳＲＡＭ、バッテリバックアップ揮発性ＤＲＡＭ又はＳＲＡＭデバイス、ＥＰＲＯＭ、ＥＥＰＲＯＭメモリ等は、追加又は代替的に用いられてもよい。別の例として、図面に示された様々な構成要素は、ソフトウェア及び／又はプロセッサ上のファームウェア、ＡＳＩＣ／ＦＰＧＡ、又は専用ハードウェアとして実装されてもよい。また、上述した特定の実施形態の機能及び属性は、異なる方法で組み合わせられて追加の実施形態を成立し得て、その全てが、本開示の範囲に包含される。
【００５３】
本開示は特定の好適な実施形態及び応用を提供しているが、本稿に記載の全ての機能及び利点を提供しない実施形態を含む、当業者にとって明白なその他の実施形態も、本開示の範囲に包含される。したがって、本開示の範囲は、添付の請求の範囲を参照することによってのみ定義されるように意図される。
【図１】
2016530648.tif 000003
【図２】
2016530648.tif 000004
【図３】
2016530648.tif 000005
【図４】
2016530648.tif 000006
【図５Ａ】
2016530648.tif 000007
【図５Ｂ】
2016530648.tif 000008
【図６】
2016530648.tif 000009
【国際調査報告】
2016530648.tif 000010
2016530648.tif 000011
2016530648.tif 000012
2016530648.tif 000013
2016530648.tif 000014