(58)【調査した分野】(Int.Cl.,DB名)
前記書き込まれたデータブロックの論理ブロックアドレスを、前記データ記憶装置の前記粒状記憶領域内の新しい物理ブロックアドレスに動的にマッピングすることをさらに含む、請求項1に記載の方法。
前記記憶コントローラが、前記書き込まれたデータブロックの論理ブロックアドレスを、前記データ記憶装置の前記粒状記憶領域内の新しい物理ブロックアドレスに動的にマッピングするようにさらに構成される、請求項6に記載のデータ記憶システム。
データ記憶システム内でシステム実装プロセスを実行するためにプロセッサ読み取り可能命令を記憶する1つ以上のプロセッサ読み取り可能記憶媒体であって、前記プロセスが、
論理ブロックアドレスのサブセットに従って、データブロックを前記論理ブロックのアドレスのサブセットにソートすることと、
前記ソートすることによって、前記論理ブロックアドレスのサブセットにグループ化され、かつソートされた前記データブロックをデータ記憶装置の粒状記憶領域内の1つ以上の個別の粒状体に書き込むことを含み、各粒状体が、前記論理ブロックアドレスのサブセットに動的に制約され、
前記プロセスが、
前記データ記憶装置の前記粒状記憶領域に記録された複数の個別にソートされた粒状体をランダムアクセスメモリに読み込むことと、
別の論理ブロックアドレスのサブセットに従って、前記ランダムアクセスメモリ内のの前記個別にソートされた粒状体から読み込まれた前記データブロックを再ソートすることと、
前記個別に再ソートされたデータブロックを前記粒状記憶領域の新しい粒状体に書き込むことと、をさらに含み、前記新しい粒状体が、他の論理ブロックアドレスのサブセットに制約される、1つ以上のプロセッサ読み取り可能記憶媒体。
前記プロセスが、前記書き込まれたデータブロックの論理ブロックアドレスを前記データ記憶装置の前記粒状記憶領域内の新しい物理ブロックアドレスに動的にマッピングすることをさらに含む、請求項10に記載の1つ以上のプロセッサ読み取り可能記憶媒体。
【発明を実施するための形態】
【0008】
図1は、中間レイテンシ記憶のステージング領域102でソートされたデータをステージするためのデータ記憶システムの例100を図解する。図解される実施例において、データ記憶システム100は、1つ以上の磁気記憶ディスク104を有するハードディスクドライブを表すが、他の実施形態のそのような記憶媒体は、光ディスク読み取り装置(例えば、CD読み取り/書き込み装置またはDVD読み取り/書き込み装置)、テープドライブ、ソリッドステートドライブ(SSD)等の形態であってもよい。データ記憶システム100は、データ記憶システム100に書き込みデータを送信し、かつデータ記憶システム100から読み込みデータを受信するホストデバイス106と通信する。
【0009】
例えば、ホストデバイス106は、磁気記憶ディスク104上にデータファイルを記録するデータ記憶システム100にデータファイルを書き込むことができ、後にデータ記憶システム100からデータファイルを読み込むことができる。ホストレベルにおいて、ユーザデータは、多くの場合、1つ以上の固定長データブロックから構成され得る可変長ファイル単位で構造化される。データブロックは、論理ブロックアドレス(LBA)を用いてホストデバイス106によってアドレス可能である。データ記憶システム100は、データ記憶システム100によって使用される符号化スキームに従って、データブロックを符号化するデータ書き込み回路108を有する書き込みチャネルを含む。1つ以上のデータブロックを冗長情報と組み合わせて、エラー検出および/または訂正のための自己完結型コードワードを形成することができる。
【0010】
データ書き込み回路108は、書き込みコントローラ110によって書き込まれるデータブロックの物理的位置および順序付けを判定する書き込みコントローラ110を通して、データブロックをデータ記憶システム100内のデータ記憶装置の1つ以上のレベルに書き込む。データブロックが記憶ディスク104に書き込まれるとき、データブロックは、記憶ディスク104上の物理ブロックアドレス(PBA)に書き込まれる。LBAとPBAとの間のマッピングは、経時的に変化することができ、「動的マッピング」として称される。書き込みコントローラ110は、そのマッピングが経時的に変化するにもかかわらず、LBAとPBAとの間の動的マッピングを管理する。メモリ116は、動的マッピング、ソート、再配置、オーバープロビジョニング、および書き込みコントローラ110によって実行される他の機能を実装するように書き込みコントローラ110によって処理されるファームウェア命令を記憶し得る。
【0011】
データ記憶システム100において、連続した論理アドレスを有するデータブロック群は、ある一組のデータに対するシーク動作の後、継続的なデータアクセスに対するより低いレイテンシを達成するために、記憶ディスク104上のおおよそ連続した物理的位置に記録され得る。加えて、動的マッピングは、そこで物理記憶の異なるレベルが、異なる平均アクセスレイテンシを提供することができるデータ記憶システム100内の物理記憶の複数のレベルを支持するために、高度処理的に拡張され得る。
【0012】
前述のように、書き込みコントローラ110は、データブロックをデータ記憶システム100内のデータ記憶装置の1つ以上のレベルに書き込むことができる。例えば、「宛先記憶」と称される記憶ディスク104のデータ記憶領域112は、概して長期記憶として意図される物理記憶領域を表す。宛先記憶内のデータは長期記憶として意図されているが、そのようなデータは、宛先記憶位置から他の宛先記憶位置に経時的に移動され得る。加えて、「粒状記憶装置(granule storage)」と称される記憶ディスク104のデータ記憶領域114は、中間物理記憶を表し、そこで、それぞれの動的に寸法決定可能な粒状体に記憶されたデータが、物理ブロックアドレス(LBA)のある特定のサブセットに制約される。粒状体の大きさの例は、約1MBであり得るが、他の大きさが用いられてもよい。実際、粒状体は、同一のディスク表面上または同一の瓦書き媒体記録帯域内でさえ、多くの異なる大きさのものであり得る。
【0013】
さらに、「ステージング領域」と称される記憶ディスク104のデータ記憶領域102は、そこで、論理ブロック群が漸次書き込まれ、ならびにLBA順序に次第に隣接して再度書き込まれ得る物理記憶領域を表す。例えば、データブロックは、任意のまたはランダムなLBA順序で、ホストデバイス106からデータ記憶システム100によって最初に受信され得る(例えば、データブロックは、論理空間の多様な領域から受信される)。そのようなデータブロックは、物理的に隣接する様式でステージング領域に書き込まれてもよい。
【0014】
ランダムアクセスメモリ118はまた、データ記憶システム100の記憶領域を表す。そのランダムアクセス特性および低アクセスレイテンシは、ある制約(例えば、LBA順序付け、PBA順序付け、最も頻繁にアクセスされる順序、優先データ順序等)に従って、データブロックをソートするのに適切な記憶領域を提供する。一実施形態において、LBA順序に従ってソートされたデータは、ランダムアクセスメモリ118内に受信され、ランダムアクセスメモリ118の利用可能な量との関係によって大きさが決めされる「チャンク」と呼ばれるデータ群でステージング領域に書き込まれる。チャンクの大きさの一例は、64MBであり得るが、他の大きさが用いられてもよい。
【0015】
データ読み込みおよび復旧回路120は、磁気記憶ディスク104から(またはランダムアクセスメモリ118から)データ(適切なエラー訂正コーディングを有する)を読み込み、エラー(磁気記憶ディスク104のスクラッチ損傷によって生じるデータエラー等)を検出するおよび/または訂正するためのエラー訂正コーディングを使用することができる。次いで、データ読み込みおよび復旧回路120は、読み込みデータ(それは訂正された読み込みデータであり得る)をホストデバイス106に転送する。
【0016】
ランダムアクセスメモリ118に受信されたデータブロックのソートは、様々な方法によって達成され得る。一実施形態において、ソートは、データブロックがランダムアクセスメモリ118に存在する間に、プロセッサまたは他の制御回路によって達成され得る。代替の実施形態において、ソートは、分散−収集DMA(直接メモリアクセス)転送スキームを使用して等、データブロックのランダムアクセスメモリ118への転送、および/またはランダムアクセスメモリ118からの転送の間に達成され得る。他のソート技術および構成が、用いられてもよい。
【0017】
図1のデータ記憶システム100等のデータ記憶システムにおいて、ステージング領域は、非瓦書きまたは瓦書き磁気記録領域であり得る。非瓦書き磁気媒体において、磁化媒体上のセルのそれぞれは、任意の囲んでいるセルにデータを上書きすることなく書き込み磁極がデータをセルに書き込むことを可能にするように、書き込み磁極の大きさに対して十分に大きいサイズのものである。その結果、データは、磁気媒体上のどこかの利用可能なセルにランダムに書き込まれ得る。しかしながら、データ記憶密度の必要性が磁気媒体に対して増加するにつれて、セルの大きさは縮小する。書き込み磁極の大きさの同等の縮小は、より大きい書き込み磁極によって提供される強い書き込み磁場勾配が、磁化媒体上のセルの極性をシフトさせるためにしばしば必要とされるため、困難である。その結果、比較的大きい書き込み磁極を使用する磁化媒体上のより小さいセルへのデータの書き込みは、隣接セルの極性化に影響し得る(すなわち、隣接セルに上書きする)。書き込み動作中に隣接したデータが上書きされることを防ぎながら、より小さいセルを利用するように磁気媒体を適応するための一技術が、瓦書き磁気記録(SMR)である。
【0018】
SMRは、書き込み磁極によって生成される強く大きい書き込み磁場を利用する。瓦書き磁気記録の1つの制約は、データが磁気媒体に書き込まれるとき、増加または減少する半径トラックで連続的に書き込まれることである。強い書き込み磁場は、そこに書き込まれるトラックおよび1つ以上の書き込み済みトラックを含む2つ以上の隣接するトラックに影響する。その結果、瓦書きデータ内の任意のデータセルを変更するために、瓦書きデータのすべてが選択された連続した書き込み順序で再度書き込まれる。
【0019】
そのようなシステムのランダム書き込み機能の欠乏を補完しながら、SMRから生成され得る増加したセル密度を達成するために、1つ以上の分離領域が瓦書きデータ内に作成され得る。ガードトラックとも称される分離領域は、記録することができない瓦書きデータ内の1つ以上の隣接するデータトラックのグループである。動作中、分離領域は、瓦書きデータの独立したデータ帯域(すなわち、ガードトラックによって境界された論理セクタ群)を画定する。典型的に、各ガードトラックは、ガードトラックを横切る任意の上書きを防ぐのに十分広い。その結果、ガードトラックは、他の帯域から分離された1つ以上の隣接するトラックを含む瓦書きデータの帯域を作成する。その結果として、帯域内の1つ以上のセルが変更されるとき、(ディスク上の瓦書きデータのすべてよりもむしろ)瓦書きデータの単一の帯域が再度書き込まれる。
【0020】
しかしながら、データ帯域内のデータの1つ以上のセルを書き込むことは、なお典型的に、すべてのデータ帯域を読み込むことと、データ帯域のデータをディクス上の媒体のスクラッチパッド(例えば、一時キャッシュ)に書き込むことと、媒体のスクラッチパッドからデータを読み込むことと、データを1つ以上の偏向されたセルを有する元のデータ帯域に再度書き込むことと、を含む、複数のステップを必要とする。その結果として、瓦書きデータ書き込む動作は、典型的には、非瓦書きデータ書き込み動作よりもより時間を要し、電力効率が悪い。
【0021】
冗長情報は、複数の論理ブロックサイズのコードワードを作成するために書き込まれたデータと組み合わされ得る。冗長情報が存在する予測可能な位置に達するのに十分な追加データを受信する前にステージング領域が数回追加される場合、増分冗長度が維持され得るように、冗長情報は、ステージング領域に書き込まれた各時間データに含まれ得る、あるいは冗長情報は、予測可能な間隔で記録され得る。さらに、データの
図1のステージング領域(または他のステージング領域)への書き込みは、ステージング領域空間を消費するプロセスの前にステージング領域空間を空けるプロセスを実行するように速度調整される。このようにして、ステージング領域空間は、新しい書き込みデータブロックを利用可能にする傾向が強い。
【0022】
図2は、ソートされたデータのチャンクに対する1つ以上のステージング領域(ステージング領域202等)を有する記憶媒体の例200を図解する。一実施形態において、データ記憶装置ディスク204の表面は、いくつかの同心円トラック206を含む。トラック206は、記憶装置204の表面上に分散され、限定することなく、従来の瓦書き以前の連続記録、離散トラック記録、および瓦書き磁気記録を含む、いくつもの異なる形態をとってもよい。一部の実施形態において、単一の記憶ディスク表面は、例えば、従来の瓦書き以前の連続記録および瓦書き磁気記録の両方を支持し得る。さらに、単一のディスク表面の同一の領域は、異なる時間で従来の瓦書き以前の連続記録および瓦書き磁気記録の両方に使用され得る。他の実施形態において、異なる記憶ディスク表面は、異なる記録種類に割り当てられ得る(例えば、一記憶ディスクの表面が、一種類の記録に使用され得、同一の記憶ディスクまたは別の記憶ディスクの表面が、異なる種類の記録に使用され得る)。
【0023】
異なる種類の記録は、異なるレベルのアクセスレイテンシの一因となる。従来の連続記録パターンは、書き込みヘッドが、放射状サーボバーストセクタ(サーボバーストセクタ208等)に記憶されたサーボ情報によって指定されたトラックに沿ってデータを書き込むことによって形成される。書き込みヘッドは、それがデータを記憶媒体に書き込むように、トラックの部分を再度書き込み、経時的に個別のトラックの限界内に僅かな変更をもたらす可能性がある。対照的に、離散トラック記録パターンは、非磁気トラック間分離を有する同心円離散トラックを含み、データは、各分離されたトラックに沿って連続的に記録される。そのように、書き込みヘッドは、書き込み動作中にデータを一貫した一組の離散標的トラックに書き込む。これら種類の記録領域への読み込みおよび書き込みアクセスは、それらの間で異なり、さらに、トラックに沿ったデータブロックの分離および順序付けもまた、アクセスレイテンシに影響を与え得る。
【0024】
瓦書き磁気記録は、読み込みセンサに必要とされるものよりも広いトラックを記録する書き込み磁極を用いる。しかしながら、瓦書き磁気記録において、書き込み動作は、典型的に、所与の方向で隣接するトラックの上書きをもたらす。したがって、書き込みトラックは、所与の方向で互いに重複して書き込まれ、読み込みヘッドによって正しく読み込まれ得るデータの狭いトラックを残す。そのように、重複したトラックは、他のトラックから分離される、またはさもなければ、独立するトラックのグループまたは帯域で書き込まれる。
【0025】
放射状サーボバーストセクタ208を伴って構成されるとき、各トラック206は、サーボバーストセクタ208の間のデータウェッジまたはセクタ210と称される断片に分割される。サーボバーストセクタは、標的トラック上に読み込み/書き込みヘッドの正確な位置付けを維持するためのデータを含み、記憶ディスク204の周りの既定の間隔で配置される位置に位置付けられる。
【0026】
記憶ディスク204が回転するにつれて、読み込み/書き込みヘッドは、サーボバーストセクタ208内のアドレスを含むサーボ情報を読み込み、サーボ情報をサーボ制御システムに返送する。サーボ制御システムは、標的トラック位置に対応するサーボバーストセクタ208からサーボ情報内のアドレスが読み込まれたかどうかを確認する。アドレスが標的トラック位置に対応しない場合、サーボ制御システムは、シーク動作の一部として、読み込み/書き込みヘッドの位置を正しいトラック位置に調整する。
【0027】
上記で示されるように、各トラック206は、記憶されたユーザ情報を含む離散データセクタ210を含む。特定のトラック上に含まれるいくつかのデータセクタ210は、ある程度、トラックの長さ(例えば、外周)に左右される。ユーザ情報を含むことに加えて、各データセクタはまた、ユーザ情報の識別および処理(例えば、エラー検出および訂正コーディング)を補助する他のデータを含み得る。
【0028】
一実施形態に従って、一部分以上の記憶ディスク204は、中間記憶装置の一種であるステージング領域202としての使用のために確保される。ステージング領域202は、記憶ディスク204の外径の212に近接して位置するトラック206の円周のグループ化として、
図2に示される。ステージング領域202は、一実施例として
図2に示され、ステージング領域202は、記憶ディスク204の任意の他の領域(放射状または円周状)上に書き込まれ得ることを理解されたい。外径212に近接するトラックの一特性は、記憶ディスク204の内径214に近接するトラックよりも速いシーケンシャルデータ速度で読み込まれることができることである。
【0029】
1つ以上のステージング領域202に加えて、記憶ディスク204は、一種の中間記憶装置である1つ以上の粒状記憶領域216も含み、そこで、それぞれの動的に寸法決定可能な粒状体が、論理ブロックアドレス(LBA)のある特定のサブセットに制約される。記憶ディスク204はまた、データブロックが、典型的に、記憶ディスク204の他の領域より長期の記憶のために記録される宛先記憶領域218を含む。他の実施形態では、動的マッピングの一部の使用を伴う宛先記憶領域を含み得るが、一実施形態において、宛先記憶領域218は、少なくともある限られたアドレス範囲に対する非動的なLBA−PBA間のマッピングを特徴とする。種々の中間および宛先記憶領域の図解される配置が単なる例であり、そのような領域が記憶ディスク204上の任意の位置にあり得ることを理解されたい。さらに、ステージング領域202、粒状記憶領域216、および宛先記憶領域218のうちの1つ以上は、瓦書き磁気記録領域、非瓦書き磁気記録領域、または他の記録形態の領域であってもよい。
【0030】
最初に、一般的な意見として、書き込みデータは、種々の記憶領域へ(例えば、ランダムアクセスメモリへ、ステージング領域へ、粒状記憶領域へ、宛先記憶領域へ等)の様々なパスを取ってもよいことを理解されたい。一実施形態において、ホストデバイスは、書き込みデータブロックを、データブロックが最初にソートされてもよく、あるいはソートされなくてもよいランダムアクセスメモリに書き込む。ランダムアクセスメモリが非揮発性の場合、データブロックは、他の非揮発性記憶媒体に書き込まれることなく、ホストデバイスに読み込み要求を提供するためのランダムアクセスメモリに蓄積し得る。代替として、データブロックは、ランダムアクセスメモリからステージング領域(個別のソートされたセット内に、またはソートされていないデータブロックとして)または他の記憶に書き込まれ得る。データブロックがステージング領域または他の記憶に書き込まれるときでさえ、同一のデータブロックはまた、将来、可能性のある媒体読み取り動作を避け得るランダムアクセスメモリに保持され得る。さらに、電力損失の可能性があるため、非揮発性記憶装置(例えば、NVRAMまたは別の非揮発性記憶媒体)に少なくとも書き込みデータのコピーを保持することが典型的に望ましい。
【0031】
図3は、一般に増加するデータ編成の様々なレベルに基づく階層記憶を有するデータ記憶システム300の例を図解する。記憶コントローラ302は、データブロックの種々の記憶領域、ランダムアクセスメモリ304、データ記憶装置310の中間記憶装置(例えば、ステージング領域306または粒状記憶領域308)、またはデータ記憶装置310の宛先記憶(例えば、宛先記憶領域312)への読み込みおよび書き込みを管理する。単一の記憶ディスク上に複数のステージング領域、複数の粒状記憶領域、および複数の宛先記憶領域が存在してもよいことを理解されたい。さらに、記憶コントローラ302は、経時的に所与の記憶領域の役割を動的に調整する。例えば、ステージング領域は、種々の動作時間で宛先記憶領域として使用され得る。
【0032】
一実施形態において、記憶コントローラ302は、ホストデバイスからの1つ以上の書き込みコマンドに応答して、新しい書き込みデータのデータブロックを受信する。受信されたデータブロックは、ランダムなLBA順序で受信され得、他の書き込みコマンドがよりLBA順序ではない一方、一部の書き込みコマンドは、よりLBAの順序であり、ならびに一部の書き込みコマンドの組み合わせは、論理アドレス空間の実質的に異なる領域で標的とされ得る。それでもなお、この実施形態において、記憶コントローラ302は、データブロックをランダムアクセスメモリ304内で受信し、データブロックをソートし、ならびにソートされたデータブロックを、ステージング領域306の比較的連続した物理的空間でステージング領域306に書き込む。用語「比較的連続する」は、そこで、単一のシーク動作(または数回のシーク動作)が、読み込み/書き込み動作を完了するために使用され、およびデータブロックが1つ以上のトラック上で連続するPBAから読み込まれる/1つ以上のトラック上で連続するPBAに書き込まれる物理記憶領域からの/物理記憶領域への複数の読み込み/書き込みコマンドに関連する可能性のある読み込み/書き込み動作を指す。データ記憶装置310中の損傷のある、古い、またはさもなければ「不良な」PBAをスキップすること、またはデータ記憶装置310の複数のトラックのすぐ近くを横切るデータの読み込み/書き込みは、「比較的連続する」ことを考慮して、読み込み/書き込み動作を除外しないことを理解されたい。
【0033】
いかなるときでも、しかし典型的には低記憶活動の期間中、記憶コントローラ302は、比較的連続する読み込み動作を使用して、ステージング領域306に記憶されたデータを読み込むことができる。読み込みデータは、ランダムアクセスメモリ304に転送され、所定の順序で(例えば、LBA順序において、最も頻繁にアクセスされる順序において等)ランダムアクセスメモリ304でソートされ、次いで、ステージング領域306または別の記憶領域またはホストデバイスに書き込まれる。一実施形態において、読み込まれる、ソートされる、およびステージング領域306に書き込まれるデータの量は、「チャンク」と称され、ランダムアクセスメモリ304の大きさと同一のであるが、他の大きさが使用されてもよい(例えば、ランダムアクセスメモリ304の異なる部分は、異なる目的のために、または異なる「チャンク」のために使用され得る)。別の実施形態において、読み込まれた、およびソートされたデータは、代替として、読み込みコマンドに応じてホストデバイスに転送され得るか、あるいは、別の記憶領域(例えば、フラッシュメモリ、粒状記憶領域308、または宛先記憶領域312)に転送され得る。
【0034】
記憶コントローラ302がソートされたデータをステージング領域306に書き込むとき、記憶コントローラ302は、以前に読み込まれたデータの物理記憶を新たにソートされたデータのコピーで上書きするのではなく、典型的に、ソートされたデータをステージング領域306の新しい位置に書き込む。いったん新たにソートされたデータがステージング領域306に(または別の記憶領域に)書き込まれると、以前に読み込まれたデータを含む物理記憶は、古いものとしてマーキングされ、新しい書き込みデータとの使用のために再生され得る。再生動作は、「ガベージコレクション」と称されることがあり、複数のソートされた、およびソートされていない同一のデータのバージョンが、データ記憶装置310のステージング領域306または他の記憶領域内に、同時に存在することを可能にし得る。代替の実施形態において、先の読み込まれたPBAは、新たにソートされたデータのコピーで上書きされ得る。ステージング領域306(または他の記憶領域)に記録されたデータの読み込み、ソート、および書き込みは、(例えば、特定のデータのチャンクに対する論理的および物理的順序付けの間の相関関係を上昇するために)複数回繰り返されてもよいことも理解されたい。
【0035】
記憶コントローラ302による書き込み動作の処理は、新しい書き込みデータを受信するために、ステージング領域内により空間を作成するのに都合のよい順序で実行され得ることも理解されたい。例えば、ステージング領域内により古いPBAを生成するか、あるいは、ステージング領域内の古いPBAに比較的連続する領域をより生成するホストコマンドまたはデータ記憶システム動作は、ステージング領域内のPBAを消費するホストコマンドまたはデータ記憶システム動作の前に、実行され得る。例えば、データブロックを消去するためのホストコマンドは、新しいデータ書き込みコマンドよりも優先され得る。同様に、ステージング領域から粒状記憶領域または宛先記憶領域へデータブロックを転送するデータ記憶システム動作は、新しいデータ書き込みコマンドよりも優先され得る。このように、データ記憶システムは、ステージング領域が新しい書き込みデータを受け入れられない程に満ちる可能性を防ぐ、または低減することができる。
【0036】
図4は、古いデータが識別され、かつ古いものとしてマーキングされるステージング領域の例400を図解する。一実施形態において、古いデータは、もはやLBAではないため、古いものとして「マーキングされ」、それは古いデータを記憶する対応するPBAを変換する。
図4は、図解目的のために古いデータをマーキングするモジュール406を示す。しかしながら、古いデータをマーキングするモジュール406は、典型的には、LBAを新しいデータを含むPBAに再度マッピングし、同一のLBAの古いPBAへのマッピングを消去する動的マッピングサブシステムの機能要素である。古いデータをマーキングするモジュール406の他の態様は、物理的細分化におけるいくつかの古い位置を記録するカウンタを含み得る。
【0037】
ステージング領域400は、記憶コントローラからデータブロックを受信し、それは比較的連続する様式でブロックを記録する。
図4において、データは、書き込み動作1〜書き込み動作10の10個の継続的な書き込み動作402における、ステージング領域400への書き込みとして示される。書き込み動作402は、個別のデータブロック404(
図4の各印は、LBAに対応する)の記録をもたらす独立した媒体アクセスを指定する。例えば、書き込み動作1は、比較的連続する(例えば、物理的に連続する)様式で、LBA73、21、および94に関連するデータブロックをステージング領域400に書き込み、書き込み動作2は、比較的連続する(例えば、物理的に連続する)様式で、LBA24および92に関連するデータブロックをステージング領域400に書き込む。各書き込み動作に応答して、記憶コントローラは、各データブロックに対するLBA−PBA間のマッピングを記録する。このように、記憶コントローラは、その対応するLBAに従うそのPBAから、ホストデバイスによって要求されたデータブロックを検索することができる。関連する動的マッピング情報は、記憶コントローラ−アクセス可能動的マッピングテーブル(図示せず)に記憶され得る。
【0038】
書き込み動作4および5に関して示されるように、LBA46に関連するデータブロックは、書き込み動作4において一度、および書き込み動作5において再度、二度書き込まれる。したがって、書き込み動作4に書き込まれたデータを記憶するデータブロックは、より最新のデータブロックが書き込み動作5によって書き込まれたため、現在古いものである。さらに、記憶コントローラは、LBA46と書き込み動作5に関連する新しいPBAとの間の動的マッピングを更新する。
【0039】
古いデータをマーキングするモジュール406は、LBA46の新しい書き込みを検出し、したがって、書き込み動作4からのデータブロックを古いものとしてマーキングする(例えば、LBA46は、もはや古いデータブロックを記憶するPBAをマッピングしない)。書き込み動作7および8はまた、同一のLBA17の書き込みとして示される。したがって、古いデータをマーキングするモジュール406は、書き込み動作7によって書き込まれたLBA17に対するデータブロックを古いものとしてマーキングし、LBA17と書き込み動作8に関連する新しいPBAとの間の動的マッピングを更新する。
【0040】
記憶コントローラがステージング領域400から比較的連続したデータを読み取るため、ソート、および続いてホストデバイスまたは記憶媒体に再度書き込むためのそれらのランダムアクセスメモリへの転送を除外するために、古いデータブロックは、無視されるか、またはさもなければ管理される。物理データブロックが古いものとしてマーキングされると、物理データブロックは、新たにソートされたチャンクのためのものを含む新しいデータブロックに対して再生および再利用され得る。
【0041】
ステージング領域400に示される書き込みデータのすべて、もしくは書き込みデータの1つ以上の部分はまた、ランダムアクセスメモリ(
図4には図示せず)に保持され得ることを理解されたい。そのように、ホストデバイスから直前に書き込まれたデータのコピーは、ステージング領域と同様にランダムアクセスメモリに保持され得る。このように、ランダムアクセスメモリに直前に書き込まれたデータへのアクセスを得るための、ステージング領域からの読み込みは記憶コントローラに必要ではない。
【0042】
図5は、ステージング領域502内のソートされたデータのチャンクの発生500の例を図解する。一実施形態において、ホストデバイスがデータブロックを記憶コントローラに書き込むとき、記憶コントローラは、505に示されるように、データブロックをランダムアクセスメモリ504に直接書き込み、そこで、ランダムアクセスメモリにソートされたコピーを引き続き保持しながら、ソートされ、かつステージング領域502にコピーされ得る。代替の実施形態において、記憶コントローラは、506にデータブロックとして示されるように、データブロックのソートされていないシーケンスをステージング領域502からランダムアクセスメモリ504に読み込むことができる。
【0043】
ソートモジュール508は、510のデータブロックに示されるように、LBA順序に従って、データをソートするが、ソートモジュール508は、最も頻繁にアクセスされる、直前にアクセスされた等を含む他の順序付けの優先に従ってデータブロックをソートし得ることを理解されたい。種々のソート方法が、データブロックをソートするためにランダムアクセスメモリ504内で使用され得る。次いで、ソートされたデータ(「チャンク」)は、ステージング領域502内の別の位置、ホストデバイス、または記憶媒体の他の中間領域もしくは宛先記憶領域に比較的連続する様式で書き込まれる。先で考察されたように、代替の実施形態において、
図5は、同一のステージング領域502の独立した位置に書き込まれるようにチャンク500を示すが、ソートされたチャンクは、以前に読み込まれたデータの上に再度書き込まれ得る。
【0044】
新しいチャンク500のステージング領域502への書き込みに応答して、記憶コントローラは、ステージング領域502内のLBA(21、24、73、および94)とそれらの新しいPBAとの間の新しい関係を反映するように、動的マッピング情報を更新する。加えて、古いデータをマーキングするモジュールは、同一のLBAに対する以前のデータブロックを記憶した以前のPBAを古いものとしてマーキングする。このように、それらのPBAは、新しい書き込みデータのために再利用されるように再生され得る。典型的には、一組のデータブロックが、ソートされる、および「チャンクされる」度に、この場合のLBA順序付けにおいて、後続の読み込み動作は、より良好なLBA−PBA間のマッピングを有するデータにアクセスするため、それらのデータブロックの平均アクセスレイテンシは減少される。一つの見方として、ステージング領域への/ステージング領域からの媒体アクセス毎の複数のソートされたデータブロックの転送は、より大きいいくつかのデータブロックにわたって比較的連続する物理的媒体アクセス間のレイテンシを償却する。
【0045】
図6は、ステージング領域604の外部での使用のために一組のチャンク602からのデータのサブセットをソートするの例600を図解する。記憶コントローラは、複数のソートされた一組のデータブロック(例えば、複数の読み込みアクセスを介する複数のチャンク)を、ステージング領域604からランダムアクセスメモリ606(例えば、すべてのメモリ606またはそれらの一部分)に読み込む。注記:複数のデータの範囲は、媒体アクセス毎に、複数の範囲にわたって媒体アクセス間のレイテンシを償却するように読み込まれ得る。
【0046】
ソートモジュール608は、所定の順序(例えば、
図6のLBA順序)に従ってランダムアクセスメモリ606に受信された読み込みデータブロックをソートする。各ソートされたチャンクのヘッドから読み込むN進マージソートといった種々のソート方法が、ランダムアクセスメモリ606に受信されたデータブロックをソートするために使用され得る。610で新たにソートされたチャンクは、他の記憶装置(例えば、別のステージング領域もしくは粒状記憶領域等の他の中間記憶装置、または宛先記憶領域)に、あるいはホストデバイスに書き込まれる。新しいチャンク612の他の記憶への書き込みに応答して、記憶コントローラは、他の記憶内のLBA(1、2、11、および16)とそれらの新しいPBAとの間の新しい関係を反映するように、動的マッピング情報を更新する。614のデータブロックは、ステージング領域604にまだ記憶されている、ソートされていない、チャンクされていないデータブロックを表す。
【0047】
加えて、一実施形態において、古いデータをマーキングするモジュールは、同一のLBAに対する以前のデータブロックを記憶した以前のPBAを古いものとしてマーキングする。このように、それらのPBAは、新しい書き込みデータのために再利用されるように再生され得る。しかしながら、代替の実施形態において、他の記憶に書き込まれたデータブロックに対応するステージング領域604のデータブロックは、古いものとしてマーキングされることを必要としない。そのような実装において、データブロックの複数のコピーは、データ記憶システム内に(例えば、ステージング領域内に、フラッシュメモリキャッシュ内に、ランダムアクセスメモリ内に、粒状記憶領域内に、宛先記憶領域内に)複数の物理的位置で記録され得、記憶コントローラは、読み込み動作か書き込み動作にかかわらず、ホストに要求された一組のデータブロックへのアクセスに対する最低のレイテンシを表す物理的位置を判定し得る。データブロックの動的マッピングは、同一のデータブロックに対する複数の物理的位置を、データブロックに対する所与の読み込みまたは書き込みコマンドの平均アクセスレイテンシを減少するように、各物理的位置におけるアクセスに関連する予期されるレイテンシとの組み合わせて、管理することができる。
【0048】
一実施形態において、データは、ディスクスケジューリングロジックの適用によって、ステージング領域604から読み込まれる。例えば、読み込み要求は、シーク時間、レイテンシ時間等に基づいて実行のために待ち行列に入れられ、予定される。一部の実施形態において、ディスクスケジューリングロジックはまた、粒状記憶領域または宛先記憶領域への書き込みといった書き込み動作に使用され得る。
【0049】
図7は、ステージング領域にデータブロックをチャンクする動作の例700を図解する。受信動作702は、論理ブロックアドレスデータブロックをホストデバイスまたは他の記憶からランダムアクセスメモリに受信する。ソート動作704は、受信されたデータブロックを所定の順序にソートする。例示的な順序付けは、限定することなく、LBA順序、最も頻繁にアクセスされる順序、直前にアクセスされた順序等を含み得る。
【0050】
書き込み動作706は、ソートされたデータブロックをステージング領域に一組のソートされたデータブロック(例えば、ソートされたチャンクと称される)として書き込む。動的マッピング動作708は、データブロックのLBAをデータ記憶装置のステージング領域内の対応するPBAに動的にマッピングする。
【0051】
図8は、ステージング領域から他の中間記憶装置にデータブロックを再ソートする動作800の例を図解する。読み込み動作802は、比較的連続する一組のデータブロックを、データ記憶装置のステージング領域の異なる一組のソートされたデータブロック(例えば、チャンク)から読み込む。転送動作804は、読み込みデータブロックをランダムアクセスメモリに転送する。ソート動作806は、転送されたデータブロックを所定の順序にソートする。例示的な順序付けは、限定することなく、LBA順序、最も頻繁にアクセスされる順序、直前にアクセスされた順序等を含み得る。
【0052】
書き込み動作808は、ソートされたデータブロックを別の中間記憶領域に、宛先記憶領域に、またはホストデバイスに書き込む。例えば、ソートされたデータブロックは、チャンクの異なるステージング領域に、または粒状記憶領域に書き込まれ得る。別の実施例において、ソートされたデータブロックは、長期記憶のためのデータ記憶装置の宛先記憶領域に書き込まれ得る。さらに別の実施例において、ソートされたデータブロックは、読み込みコマンドに応じてホストデバイスに転送され得る。データブロックが、データ記憶装置に再度書き込まれる場合、動的な再マッピング動作810は、データブロックのLBAを、データ記憶装置のステージング領域内の新しい対応する物理ブロックアドレスに動的に再度マッピングする。マーキング動作812は、読み込み動作802においてデータブロックが読み込まれた所からのPBAを古いものとしてマーキングする。再生動作814は、ステージング領域の古いPBAを、例えば、ステージング領域の古いPBAを他のデータブロックを記録するために再利用することによって、再生する。例えば、データブロックが宛先記憶領域に移動される場合、それらのデータブロックを以前に記憶するステージング領域のPBAは、古くなったものとしてマーキングされ、新しいデータブロックとの使用のために再生され得る。しかしながら、オーバープロビジョニング環境において、記憶コントローラは、記憶領域の、他の中間記憶領域の、および/または宛先記憶領域の同一のデータブロックのコピーを保持し得る。このように、記憶コントローラは、最低平均アクセスレイテンシを提供する記憶から要求されるデータブロックを読み込むことができる。動的マッピングは、それぞれのLBA−PBA間の関係のためにマッピングを維持し、ある特定の読み込みコマンドに対する各関係の最低平均アクセスレイテンシの決定を支援する情報を提供し得る。
【0053】
図9は、ソートされたデータブロックが個別の粒状体902、903、および904に記憶される粒状記憶領域900の例を図解する。(粒状記憶領域900’は、粒状記憶領域900への新しいデータブロックの書き込みの前の粒状記憶領域900の状態を表す。A−B−Cおよび0〜15は、粒状記憶領域900/900’内の個別のデータブロックの座標を表す。)例示的な粒状記憶領域900は、他の粒状体も含むが、それらは、マッピングされたデータを含むか、または含まず、かつ粒状体903、906、908、910、および912を含むようには示されていない。各粒状体は、太線によって指定され、LBAのある特定のサブセット(例えば、特定のLBA範囲、直前にアクセスされたLBA範囲、最も頻繁にアクセスされたLBA範囲)に動的に制約されたデータブロックを含む。この制約は、粒状記憶領域に書き込まれる書き込みデータを記憶するために、データ記憶システムによって各粒状体について経時的に動的に定義および再定義され得る。加えて、粒状体または粒状体の任意の部分は、その粒状体、別の粒状体、または任意の他の記録されたデータ領域内の任意の他の意図されないデータを直ちに変動、消去、または上書きしない場合、別々に書き込まれ得る。粒状体内のデータブロックのLBA−PBA間の関係は、動的にマッピングされて、粒状記憶領域900内のデータブロックの再編成を可能にする。
【0054】
一実施形態において、各粒状体は一定の大きさであるが、粒状体によって大きさが異なり得る。このような方法で、データブロックの個別のより小さい粒状体がソートされ、粒状記憶領域内のより大きい粒状体に再度書き込まれ得る。複数の組の粒状体はまた、その組の粒状体が同一のLBAサブセットを満たすデータブロックを含み得るように「付加される」か、または集められ得る。例えば、複数の粒状体はそれぞれ、同一のLBA範囲からのデータブロックを記憶するように構成され得る。将来のある時点で、これらの複数の粒状体内のデータブロックは、他の粒状体(典型的には、データ編成の改善を提供するために1つ以上のより大きい粒状体)にソートおよび/または圧縮され得る。粒状記憶領域900は、非瓦書き磁気記録領域として示されるが、粒状記憶装置は、瓦書き磁気記録領域(例えば、
図11および12を参照のこと)に記憶され得る。
【0055】
粒状記憶モジュール914は、ホストデバイスから直接、ステージング領域(図示せず)から、ランダムアクセスメモリ916から等、様々なソースから書き込みデータブロックを受信し得る。そのようなデータブロックは、粒状記憶領域900’の異なる組の粒状体からも読み込まれ、その後、粒状記憶領域900内の新しい組の粒状体に書き込まれ得る。
【0056】
一例において、一組のデータブロック918は、ランダムアクセスメモリ916に受信され、粒状体ソートモジュール920によってソートされ、粒状記憶領域900内の1つ以上の個別の粒状体に転送される。データブロック918がランダムアクセスメモリ916内でソートされ得るか、または(例えば、分散−収集DMA技術を用いて)ランダムアクセスメモリに/から転送されるときにソートされ得ることを理解されたい。
【0057】
粒状体902に示されるように、データブロックは、個別の粒状体内で完全にソートされる必要はないが、それらは、所与の媒体アクセスにソートされた様式(例えば、書き込み動作)で書き込まれる。他のデータブロックは、粒状体902内のLBA40(すなわち、PBA A4)ならびに粒状体904内のLBA50、55、および56(すなわち、B10、B11、およびB12)に関して示されるように、粒状体内の空のPBA内でソートされ、書き込まれ得る。
【0058】
図10は、ソートされたデータブロックが個別の粒状体1008および1012に圧縮される粒状記憶領域1000の例を図解する。(粒状記憶領域1000’は、粒状記憶領域1000への新しいデータブロックの書き込みの前の粒状記憶領域1000の状態を表す。A−B−Cおよび0〜15は、粒状記憶領域1000内の個別のデータブロックの座標を表す。)例示的な粒状記憶領域1000は、他の粒状体も含むが、マッピングされたデータを含むか、または含まず、かつ粒状体1002、1003、1004、1006、および1010を含むようには示されていない。各粒状体は、太線によって指定され、LBAのある特定のサブセット(例えば、特定のLBA範囲、直前にアクセスされたLBA範囲、最も頻繁にアクセスされたLBA範囲)に制約されたデータブロックを含む。加えて、粒状体または粒状体の任意の部分は、その粒状体、別の粒状体、または任意の他の記録されたデータ領域内の任意の他の意図されないデータを直ちに変動、消去、または上書きしない場合、別々に書き込まれ得る。粒状体内のデータブロックのLBA−PBA間の関係は、動的にマッピングされて、粒状記憶領域1000内のデータブロックの再編成を可能にする。
【0059】
粒状記憶モジュール1014は、粒状記憶領域1000’の粒状体からデータブロックを読み込んでランダムアクセスメモリ1016に書き込み、粒状体ソートモジュール1020を用いてそれらをソートし、それらを粒状記憶領域1000/1000’内の新しい粒状体または複数の組の粒状体(この場合、粒状体1008および1012)に書き込む。結果として、粒状体1008および1012は、各粒状体のシーケンシャルPBA内に高度にLBAで順序付けされたデータブロックを含む。さらに、粒状体1002、1003、1010、1006、および1004の記憶空間は、粒状記憶領域1000への新しい書き込みデータによる使用のために空けられる。このように、粒状記憶領域1000内のデータブロックは、圧縮および高度に編成される(例えば、LBA−PBA間の順序付けにおいて動的にマッピングされる)と考えられる。また、データが適所で圧縮され、異なる粒状体、粒状体のサブセット、または一組の粒状体に圧縮/書き込まれるのではなく、同一の粒状体に戻って再度書き込まれ得ることを理解されたい。
【0060】
図11は、ソートされたデータブロックが個別の粒状体1102および1104に記録される瓦書き磁気記録帯域1108内の粒状記憶領域1100の例を図解する。(粒状記憶領域1100’は、粒状記憶領域1100への新しいデータブロックの書き込みの前の粒状記憶領域1100の状態を表す。A−B−Cおよび0〜15は、粒状記憶領域1100/1100’内の個別のデータブロックの座標を表す。)例示的な粒状記憶領域1100は、マッピングされたデータを含まないように示される同一の瓦書き磁気記録帯域内に別の粒状体1106も含む。各粒状体は、太線によって指定され、LBAのある特定のサブセット(例えば、特定のLBA範囲、直前にアクセスされたLBA範囲、最も頻繁にアクセスされたLBA範囲)に制約されたデータブロックを含む。この制約は、粒状記憶領域に書き込まれる書き込みデータを記憶するために、データ記憶システムによって各粒状体について経時的に動的に定義および再定義され得る。加えて、粒状体または粒状体の任意の部分は、その粒状体、別の粒状体、または任意の他の記録されたデータ領域内の任意の他の意図されないデータを直ちに変動、消去、または上書きしない場合、別々に書き込まれ得る。粒状体内のデータブロックのLBA−PBA間の関係は、動的にマッピングされて、粒状記憶領域1100内のデータブロックの再編成を可能にする。
【0061】
一実施形態において、各粒状体は一定の大きさであるが、粒状体によって大きさが異なり得る。このように、データブロックの個別のより小さい粒状体がソートされ、粒状記憶領域内のより大きい粒状体に再度書き込まれ得る。さらに、
図11に示されるように、単一の帯域1108は、2つ以上の粒状体を含み得る。複数の組の粒状体はまた、その組の粒状体が同一のLBAサブセット制約を満たすデータブロックを含み得るように「付加される」か、または集められ得る。例えば、複数の粒状体はそれぞれ、同一のLBA範囲からのデータブロックを記憶するように構成され得る。将来のある時点で、これらの複数の粒状体内のデータブロックは、他の粒状体(典型的には、データ編成の改善を提供するために1つ以上のより大きい粒状体)にソートおよび/または圧縮され得る。
【0062】
粒状記憶モジュール1114は、ホストデバイスから直接、ステージング領域(図示せず)から、ランダムアクセスメモリ1116から等、様々なソースから書き込みデータブロックを受信し得る。そのようなデータブロックは、粒状記憶領域1100’の異なる組の粒状体からも読み込まれ、その後、粒状記憶領域1100内の新しい組の粒状体に書き込まれ得る。
【0063】
一例において、一組のデータブロック1118は、ランダムアクセスメモリ1116に受信され、粒状体ソートモジュール1120によってソートされ、粒状記憶領域1100内の1つ以上の個別の粒状体に転送される。データブロック1118がランダムアクセスメモリ1116内でソートされ得るか、または(例えば、分散−収集DMA技術を用いて)ランダムアクセスメモリに/から転送されるときにソートされ得ることを理解されたい。
【0064】
粒状体1102に示されるように、データブロックは、個別の粒状体内で完全にソートされる必要はないが、それらは、所与の媒体アクセスにソートされた様式(例えば、書き込み動作)で書き込まれる。他のデータブロックは、粒状体1102内のLBA40(すなわち、PBA A1)ならびに粒状体1104内のLBA50、55、および56(すなわち、B8、B9、およびA7)に関して示されるように、粒状体内の空のPBA内でソートされ、書き込まれ得る。
【0065】
図12は、ソートされたデータブロックが個別の粒状体1206にソートされる瓦書き磁気記録帯域1208内の粒状記憶領域1200の例を図解する。(粒状記憶領域1200’は、粒状記憶領域1200への新しいデータブロックの書き込みの前の粒状記憶領域1200の状態を表す。A−B−Cおよび0〜15は、粒状記憶領域1200/1200’内の個別のデータブロックの座標を表す。)例示的な粒状記憶領域1200は、他の粒状体も含むが、それらは、マッピングされたデータを含むか、または含まず、かつ粒状体1202および1206を含むようには示されていない。各粒状体は、太線によって指定され、LBAのある特定のサブセット(例えば、特定のLBA範囲、直前にアクセスされたLBA範囲、最も頻繁にアクセスされたLBA範囲)に制約されたデータブロックを含む。加えて、粒状体または粒状体の任意の部分は、その粒状体、別の粒状体、または任意の他の記録されたデータ領域内の任意の他の意図されないデータを直ちに変動、消去、または上書きしない場合、別々に書き込まれ得る。粒状体内のデータブロックのLBA−PBA間の関係は、動的にマッピングされて、粒状記憶領域1200内のデータブロックの再編成を可能にする。
【0066】
粒状記憶モジュール1214は、粒状記憶領域1200’の粒状体からデータブロックを読み込んでランダムアクセスメモリ1216に書き込み、粒状体ソートモジュール1220を用いてそれらをソートし、それらを粒状記憶領域1200内の新しい粒状体または複数の組の粒状体(この場合、粒状体1206)に書き込む。結果として、粒状体1206は、各粒状体のシーケンシャルPBA内または各粒状体のシーケンシャルPBA付近(例えば、粒状体内の欠陥のあるPBAの存在下等)に高度にLBAで順序付けされたデータブロックを含む。さらに、粒状体1204の記憶空間は、粒状記憶領域1200への新しい書き込みデータによる使用のために空けられる。このように、粒状記憶領域1200内のデータブロックは、圧縮および高度に編成される(例えば、LBA−PBA間の順序付けにおいて動的にマッピングされる)と考えられる。
【0067】
その後の動作において、粒状記憶モジュール1214は、適切なLBA関連制約を満たす他のデータブロックを粒状体1202および1204に書き込み得る。例えば、動的マッピングを用いて、以前にLBA50〜59のデータブロックを記憶することになっていた粒状体1204の制約は、LBA40〜49を記憶するように変更され得る。したがって、粒状記憶モジュール1214は、LBA40〜49範囲内の新しい組のデータブロックを粒状体1204に書き込み得る。粒状体1204を粒状体1202と同一のLBAに基づく制約に付加することによって、一組の粒状体1202および1204は、データブロックの同一のLBAグループ化を支援し得る。すなわち、LBA40〜49内の古くないデータブロックは、粒状体1202および1204の両方にまたがり得る。
【0068】
同様の動作が、
図10に関して記載される粒状記憶領域等の粒状記憶領域1200内にデータブロック圧縮も提供し得る。加えて、動的マッピングは、圧縮アルゴリズムが粒状記憶領域1200内のデータに適用されることを可能にし、LBAよりも少ないPBAを要求するオプションを生み出して、粒状体内にデータを記憶し得る。
【0069】
さらに、ステージング領域と同様に、データブロックが部分的に埋められた粒状体に書き込まれるように、部分コードワードおよび/または増分コードワードが用いられ得る。このように、データブロックがデータ記憶装置書き込まれる際に、さらなるエラー訂正コード(ECC)も粒状記憶領域1200に書き込まれる。新しいデータブロックと新しいエラーコードとの組み合わせは、「コードワード」と称される。粒状記憶領域1200への書き込みの際に、可変量のデータ(例えば、可変数のデータブロック)。さらなるECCを保持するために、コードワードサイズが変化し得るか、またはさらなるECCが増加する様式で計算され、一定の境界で(例えば、可変ではなく一定のワードサイズに適切な位置で)書き込まれる。
【0070】
図13は、データ記憶システム内にランダムアクセスメモリ1300、ステージング領域1302、粒状記憶領域1304、および宛先記憶領域1306を含む記憶装置の段階の例を図解する。データブロックは、ステージング領域1302内の個別にソートされた組(「チャンク」)に記録される。これらのデータブロックは、ランダムアクセスメモリ1300のステージング領域1302に書き込まれている。一実施形態において、以前にソートされていないデータブロックは、所与のソート順序(例えば、
図13に示される場合、LBA順序)に従ってソートされる。他の実装例では、データブロックは、(例えば、分散−収集DMAプロセスを用いた)ランダムアクセスメモリ1300への/からの転送中にソートされた。
【0071】
ステージング領域が複数の組の個別にソートされたデータで埋まると、データ記憶システムは、新しい書き込みデータが使用できる空間を作成するプロセスを実行する。ある場合には、ステージング領域1302内のデータブロックは、同一のLBAに対応する新しいデータがステージング領域1302に書き込まれるため古くなり得る。したがって、データ記憶システムは、ガベージコレクションまたは圧縮を実行して、古いデータを記憶するPBAから記憶空間を再生し得る。他の場合では、ステージング領域1302内のデータブロックは、ランダムアクセスメモリ1300に読み込まれ、記憶用の記憶モジュール1308によってソートされて、粒状記憶領域1304に書き込まれ得る。
【0072】
図13に示される粒状記憶領域1304は、3つの粒状体1312、1314、および1316を含む瓦書き磁気記録帯域1310の形態である。A−B−Cおよび0〜15は、粒状記憶領域1300内の個別のデータブロックの座標を表す。一実装例において、ステージング領域1302内のデータブロックは、ランダムアクセスメモリ1300に読み込まれ、ソートモジュール1308によってソートされ、各粒状体の動的にマッピングされた制約に従って粒状体に書き込まれる。例えば、
図13において、粒状体1312は、LBA40〜49に割り当てられ、粒状体1314は、LBA50〜59に割り当てられ、粒状体1316は、LBA60〜69に割り当てられる。
【0073】
図13に示される動的にマッピングされた制約が単なる例であることを理解されたい。加えて、個別の粒状体は、同一の制約と動的にマッピングされて、同一の制約内に2つの粒状体(効果的に増大する粒状体)を付加し得る。例えば、粒状体1312および1314のLBA制約は、動的にマッピングされて、LBA30〜61を含む一組の粒状体を形成し得る。したがって、LBA60は、PBA A9に書き込まれ、LBA61は、PBA A2に書き込まれ得る。したがって、粒状体のLBAの内容が変化し得るだけでなく、複数の粒状体が集められてソートされた組の粒状体も形成し得、これは、圧縮および過剰提供を支援する。いくつかの実施形態において、データブロックは、最初に粒状記憶領域1304に記憶されることなく、ステージング領域1302からランダムアクセスメモリ1300を介して宛先記憶領域1306に書き込まれ得る。
【0074】
図13において、ステージング領域1302内のデータブロックは、それらが粒状記憶領域1304に書き込まれた後に、古いものとしてマーキングされ(例えば、データ記憶システムの動的マッピングは、論理ブロックアドレス指定データブロックをステージング領域1302内のPBAにマッピングしなくなる)、したがって、ステージング領域1302内のPBAは、新しい書き込みデータのために使用され得る。加えて、宛先記憶領域1306は、現時点でそれに書き込まれた任意のデータブロックを有しない。同一のデータブロックがステージング領域1302、粒状記憶領域1304、または宛先記憶領域1306に書き込まれた場合であっても、ランダムアクセスメモリ1300がホストデバイスによるアクセスのために1つ以上のデータブロックを保持し得ることにも留意されたい。LBAをPBAに動的にマッピングする能力によって可能にされるデータブロックの余分なコピーを保持するこの能力は、データ記憶システムが、ホストデバイスによって要求される任意の読み込みデータのためにそれが利用できる最低レイテンシアクセスオプションを決定することを可能にする。(例えば、動的マッピングは、データ記憶システムが記憶媒体またはランダムアクセスメモリから要求されたデータを読み込むかを決定することを可能にする。)
図14は、ランダムアクセスメモリ1400、ステージング領域1402、粒状記憶領域1404、および宛先記憶領域1406を含む記憶装置の段階の他の例を図解する。ステージング領域1402は、新しい個別にソートされたチャンクを含む。粒状記憶領域1404は、新しい書き込みデータのために再生および再使用され得る古いデータブロックを有する粒状体1412および1414、ならびに宛先記憶領域1406に書き込まれる間古くないデータを含む粒状体1416を含む。したがって、粒状体1416は、実データのさらなるコピーを含み、それは、記憶コントローラによって読み込まれ得る。そのようなデータコピーは、ある期間(例えば、粒状体が圧縮されるまで)保持され得る。
【0075】
宛先記憶領域1406は、非瓦書き形式(図示されるもの)または瓦書き形式であり得る。粒状記憶領域1404からソートされたデータブロックは、高度に順序付けられた構成でランダムアクセスメモリを介して宛先記憶領域1406に書き込まれて、比較的低い平均アクセスレイテンシを提供している。
【0076】
図15は、データブロックを粒状記憶領域に記憶する動作1500の例を図解する。
図15の動作1500は、ステージング領域からランダムアクセスメモリを介した粒状記憶領域への書き込み動作を示す。それでもなお、データブロックが、ステージング領域内で中間記憶装置を用いることなく、ランダムアクセスメモリを介してホストデバイスから粒状記憶装置にも書き込まれ得ることを理解されたい。
【0077】
読み込み動作1502は、ステージング領域内の個別のソートされたチャンクからデータブロックを読み込む。転送動作1504は、読み込みデータブロックをランダムアクセスメモリに転送する。ソート動作1506は、動的に定義された粒状体制約に従って転送されたデータをソートする。書き込み動作1508は、定義された粒状体制約に従ってソートされたデータブロックを粒状記憶領域1508内の1つ以上の粒状体に書き込む。
【0078】
マッピング動作1510は、データブロックのLBAを粒状記憶領域1508内の1つ以上の粒状体の書き込まれたPBAに動的に再マッピングする。マーキング動作1512は、ステージング領域内に書き込まれたデータを古いものとして以前に記憶しているPBAをマーキングする。注記:マッピング動作1510およびマーキング動作1512は、同一の動作に組み込まれ得、LBAの再マッピングは、以前のPBAを古いものとして本質的にマーキングする。再生動作1514は、新しい書き込みデータとともに使用するためにステージング領域内の古いPBAを再生する。
【0079】
図16は、データブロックを宛先記憶領域に記憶する動作1600の例を図解する。読み込み動作1602は、粒状記憶領域内の個別のソートされた粒状体の組からデータブロックを読み込む。転送動作1604は、読み込みデータブロックをランダムアクセスメモリに転送する。ソート動作1606は、定義された順序付けに従って転送されたデータをソートする。書き込み動作1608は、比較的静的なLBA−PBA間のマッピングに従ってソートされたデータブロックを宛先記憶領域に書き込む。別個の大きい領域(例えば、256MB)のLBA−PBA間のマッピングが、(例えば、デフラグ中、損傷したPBAが検出されたとき等)引き続き経時的に変化し得ることに留意されたい。
【0080】
宛先記憶領域に書き込まれたデータブロックは、データのさらなる実コピーとしてランダムアクセスメモリまたは粒状記憶領域内に保持され得る。あるいは、対応する粒状体および/またはランダムアクセスメモリは、新しい書き込みデータのために再使用され得る。
【0081】
本明細書で説明される技術の実施形態は、1つ以上のコンピュータシステムにおける論理的ステップとして実装される。本技術の論理的動作は、(1)1つ以上のコンピュータシステムにおいて実行されるプロセッサ実装ステップのシーケンスとして、かつ(2)1つ以上のコンピュータシステム内の相互接続機械または回路モジュールとして実装される。この実施形態は、本技術を実装するコンピュータシステムの性能要件に応じて選択可能である。したがって、本明細書で説明される技術の実施形態を成す論理的動作は、動作、ステップ、物体、またはモジュールとして様々に称される。さらに、論理的動作は、他で明確に特許請求されない限り、任意の順序で実行されてもよく、または特定の順序が、特許請求の範囲の言い回しによって本質的に必要とされることを理解されたい。
【0082】
データ記憶装置および/またはメモリは、ハードディスク媒体、複数の記憶デバイスを含む記憶アレイ、光媒体、ソリッドステートドライブ技術、ROM、RAM、および他の技術といった記憶の種々の種類によって具体化され得る。動作は、マイクロプロセッサ、マイクロプロセッサコア、マイクロコントローラ、専用回路、または他の処理技術によって実行される、または補助されるかを問わず、ファームウェア、ソフトウェア、ハードワイヤード回路、ゲートアレイ技術、および他の技術によって実装され得る。書き込みコントローラ、記憶コントローラ、データ書き込み回路、データ読み込みおよび復旧回路、古いデータをマーキングするモジュール、ソートモジュール、ならびにデータ記憶システムの他の機能モジュールは、システム実装プロセスを実行するためのプロセッサ読み取り可能命令を処理するために、プロセッサと接続して備えられ得る、または動作し得ることを理解されたい。
【0083】
上記の明細書、実施例、およびデータは、本技術の例示的な実施形態の構造および使用の完全な説明を提供する。本技術の多くの実施形態が、本技術の趣旨と範囲から逸脱することなく作成され得るため、本発明は、以下に添付される特許請求の範囲に属する。さらに、異なる実施形態の構造的特徴は、記載される特許請求の範囲から逸脱することなく、さらに別の実施形態と組み合わされてもよい。