(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の実施例は、改善されたガーベッジコレクションを遂行できるソリッドステートドライブ、そのガーベッジコレクションに係る方法、及びその具現に係る物品を提供する。
【課題を解決するための手段】
【0007】
本発明に実施例は制限なしに、下の陳述に拡張できる。
【0008】
ステータス1.本発明の実施例はソリッドステートドライブ(SSD)を含む。
該SSDは、
データを格納するフラッシュメモリと、
フラッシュメモリへのデータのライト(write)及びフラッシュメモリからのデータのリード(read)を管理するSSDコントローラと、を含み、
前記SSDコントローラは、
データの属性に応答してストリーム識別子(ID)を選択する自動ストリーム検出ロジックと、
ガーベッジコレクションのために、フラッシュメモリ内の消去ブロックを選択し、自動ストリーム検出ロジックにより決定された第1ストリームIDに応答して第2ブロックに消去ブロックの有効データをプログラムするガーベッジコレクションロジックと、を含み、
自動ストリーム検出ロジックはガーベッジコレクションロジックがガーベッジコレクションのために消去ブロックを選択した後、第1ストリームIDを決定するように動作する。
【0009】
ステータス2.ステータス1によるSSDを含む本発明の実施例において、
SSDコントローラは、ホストコンピュータ上のアプリケーションからのリクエスト(request)を管理する入出力(I/O)キューを含み、
ガーベッジコレクションロジックは入出力キューに有効データに対するライト(write)リクエストを配置するライト(write)リクエストロジックを含む。
【0010】
ステータス3.ステータス2によるSSDを含む本発明の 実施例において、SSDコントローラは、アプリケーションからの第2ライト(write)リクエストを受信するレシーバ(receiver)をさらに含み、第2ライト(write)リクエストはアプリケーションからの有効データを含む。
【0011】
ステータス4.ステータス3によるSSDを含む本発明の実施例において、SSDは自動ストリーム検出ロジックからの第2ストリームIDに応答して、消去ブロックに有効データを書き込む。
【0012】
ステータス5.ステータス4によるSSDを含む本発明の実施例において、第1ストリームIDは第2ストリームIDである。
【0013】
ステータス6.ステータス2によるSSDを含む本発明の実施例において、ガーベッジコレクションロジックは消去ブロックを消去する消去ロジックをさらに包含する。
【0014】
ステータス7.ステータス6によるSSDを含む本発明の実施例において、消去ロジックはライトリクエストがSSDにより処理された後、消去ブロックを消去するように動作する。
【0015】
ステータス8.ステータス6によるSSDを含む本発明の実施例において、消去ロジックはライトリクエストロジックが入出力キューにライトリクエストを配置した後、そしてライトリケエストがSSDにより処理される前に、消去ブロックを消去するように動作する。
【0016】
ステータス9.ステータス1によるSSDを含む本発明の実施例において、
ガーベッジコレクションロジックは有効データをプログラムする前に、自動ストリーム検出ロジックから第1ストリームIDを要請するように動作するものの、
ガーベッジコレクションロジックは、
第1ストリームIDに応答して第2ブロックを選択するブロック選択ロジックと、及び第2ブロックに有効データを書き込むプログラミングロジックと、を包含する。
【0017】
ステータス10.ステータス9によるSSDを含む本発明の実施例において、第2ブロックはガーベッジコレクションの間プログラムされたデータだけを格納する特殊なブロックである。
【0018】
ステータス11.ステータス1によるSSDを含む本発明の実施例において、ストリームIDは有効データの論理ブロックアドレス(LBA)、SSDに有効データを元来(original)書き込んでいるアプリケーションのアプリケーションID、有効データに対する残余寿命、有効データに対する順次性、有効データに対するアップデート頻度、有効データに対する最新性、有効データに対するライト(write)サイズ、有効データに対するライト時間、有効データに対するリード(read)頻度、及び有効データに対するリード(read)温度の中で,少なくとも一つに応答する。
【0019】
ステータス12.本発明の実施例は方法を含み、方法は、
ガーベッジコレクションのためのソリッドステートドライブ(SSD)において消去ブロックを識別するステップと、
プログラミングを要請する消去ブロックの有効データを識別するステップと、及び
第2ブロックに消去ブロックの有効データをプログラミングするステップと、を包含するものの、第2ブロックはストリーム識別子(ID)に応答して選択され、ストリームIDはプログラムを要請する消去ブロックの有効データを識別するステップが識別された後に、有効データの属性に応答して決定される。
【0020】
ステータス13.ステータス12による方法を含む本発明の実施例において、
プログラミングを要請する消去ブロックの有効データを識別するステップの以前に、
アプリケーションからライトリクエストの有効データをSSDから受信するステップと、
有効データの属性に応答して第2ストリームIDを決定するステップと、
第2ストリームIDに応答して消去ブロックを選択するステップと、及び
第2ブロックに有効データを書き込むステップと、をさらに包含する。
【0021】
ステータス14.ステータス13による方法を含む本発明の実施例において、ストリームIDは第2ストリームIDである。
【0022】
ステータス15.ステータス12による方法を含む本発明の実施例において、第2ブロックに消去ブロックの有効データをプログラムするステップは、第2ブロックに有効データを書き込むように入出力(I/O)キューにライトリクエストを配置するステップ、を包含する。
【0023】
ステータス16.ステータス15による方法を含む本発明の実施例において、消去ブロックを消去するステップ、をさらに包含する。
【0024】
ステータス17.ステータス16による方法を含む本発明の実施例において、消去ブロックを消去するステップは、有効データが第2ブロックに書き込まれる前に、消去ブロックを消去するステップと、を包含する。
【0025】
ステータス18.ステータス12による方法を含む本発明の実施例において、第2ブロックに、消去ブロックの有効データをプログラムするステップは、
有効データの属性に応答して、有効データに対するストリームIDを決定するステップと、
ストリームIDに応答して第2ブロックを選択するステップと、
第2ブロックに有効データをプログラムするステップと、を包含する。
【0026】
ステータス19.ステータス18による方法を含む本発明の実施例において、ストリームIDに応答して第2ブロックを選択するステップは、ストリームIDに応答して、特殊なブロックを選択するステップを包含するものの、特殊なブロックはガーベッジコレクションの間にプログラムされたデータのみを格納する。
【0027】
ステータス20.ステータス12による方法を含む本発明の実施例において、ストリームIDは有効データの論理ブロックアドレス(LBA)、SSDに有効データを元来書き込んでいるアプリケーションのアプリケーションID、有効データに対する残余寿命、有効データに対する順次性、有効データに対するアップデート頻度、有効データに対する最新性、有効データに対するライト(write)サイズ、有効データに対するライト時間、有効データに対するリード(read)頻度及び有効データに対するリード(read)温度の中で,少なくとも一つに応答する。
【0028】
ステータス21.本発明の実施例は、ソリッドステートドライブ(SSD)のガーベッジコレクションに係る方法の具現に係る、非一時的なストレージ媒体を含む物品において、非一時的なストレージ媒体上に、マシンにより実行されると下記の手順を結果する命令語を格納している物品を含む。
ガーベッジコレクションのために、ソリッドステートドライブ(SSD)において消去ブロックを識別するステップと、
消去ブロックにおいてプログラムを要請する有効データを識別するステップと、
ストリーム識別子(ID)に応答して選択された第2ブロックに、消去ブロックの有効データをプログラムする(書き込む)ステップと、
ここで、ストリームIDはプログラミング(書き込み)を要請する消去ブロックが識別され、前記識別された消去ブロックの有効データを識別するステップがなされた後に、前記有効データの属性に応答して決定される。
【0029】
ステータス22.ステータス21による物品を含む本発明の実施例において、非一時的ストレージ媒体は、プログラムを要請する消去ブロックの有効データを識別するステップの以前に、アプリケーションからライトリクエストの有効データをSSDから受信するステップと、
有効データの属性に応答して第2ストリームIDを決定するステップと、
第2ストリームIDに応答して消去ブロックを選択するステップと、
消去ブロックに有効データを書き込むステップと、を、マシンにより実行される時、発生させる命令語を更に格納する。
【0030】
ステータス23.ステータス22による物品を含む本発明の実施例において、ストリームIDは第2ストリームIDである。
【0031】
ステータス24.ステータス21による物品を含む本発明の実施例において、第2ブロックに、消去ブロックの有効データをプログラムするステップは、第2ブロックに有効データを書き込むように入出力(I/O)キューにライトリクエストを配置するステップを包含する。
【0032】
ステータス25.ステータス24による物品を含む本発明の実施例において、非一時的なストレージ媒体は消去ブロックを消去するステップを、マシンにより実行される時、発生させる命令語を格納する。
【0033】
ステータス26.ステータス25による物品を含む本発明の実施例において、消去ブロックを消去するステップは、有効データが第2ブロックに書き込まれる前に、消去ブロックを消去するステップを包含する。
【0034】
ステータス27.ステータス21による物品を含む本発明の実施例において、第2ブロックに、消去ブロックの有効データをプログラムするステップは、
有効データの属性に応答して有効データに対するストリームIDを決定するステップと、
ストリームIDに応答して第2ブロックを選択するステップと、
第2ブロックに有効データをプログラムするステップと、を包含する。
【0035】
ステータス28.ステータス27による物品を含む本発明の実施例において、ストリームIDに応答して第2ブロックを選択するステップは、ストリームIDに応答して特殊なブロックを選択するステップを包含し、ここで特殊なブロックはガーベッジコレクションの間にプログラムされたデータのみを格納する。
【0036】
ステータス29.ステータス21による物品を含む本発明の実施例において、ストリームIDは有効データの論理ブロックアドレス(LBA)、SSDに有効データを元来書き込んでいるアプリケーションのアプリケーションID、有効データに対する残余寿命、有効データに対する順次性、有効データに対するアップデート頻度、有効データに対する最新性、有効データに対するライト(write)サイズ、有効データに対するライト時間、有効データに対するリード(read)頻度及び有効データに対するリード(read)温度の中で,少なくとも一つに応答する。
【発明の効果】
【0037】
本発明の実施例によると、ガーベッジコレクションロジックが自動ストリーム検出ロジックにより決定された第1ストリームIDに応答して第2ブロックに消去ブロックの有効データをプログラムする(書き込む)ので、第2ブロックへの書き込みと消去ブロックの消去の機会を低減し、改善されたガーベッジコレクションを提供できる。
【発明を実施するための形態】
【0039】
本発明の実施例に対する参照が詳細に提供される。本発明の例示は添付された図面に図示される。以下の詳細な説明から、本発明の完全な理解が可能となるように数多くの詳細が陳述される。但し、当業者にとっては、斯かる具体的な詳細な説明なしに本発明を実施できることが理解されるべきである。他の例示で、よく知られた方法、手順、構成要素、回路及びネットワークは実施例の態様を曖昧にしないようにするため、詳細な説明をしない。
【0040】
例えば、第1、第2などの用語が、ここで多様な要素を説明するのに使用されるが、このような要素は斯かる用語に制限されないと理解されるべきである。斯かる用語は、単純に一つの要素を、他の要素と区別するため使用される。例えば、第1モジュールは第2モジュールと命名され得るし、同様に、本発明の範囲を逸脱しない状態で、第2モジュールは第1モジュールと命名され得る。
【0041】
ここで、本発明の説明に使用された用語の目的は、特定の実施例を説明するためであって、本発明を制限する意図はない。本発明の説明及び付加された請求項に使用される時、文脈上明白に違うように指示しない限り、単数の形式の“a”、“an”及び“the”は、なお、複数の形式を含むように意図される。なお、ここで使用される“及び/又は”の用語は一つ以上の連関及び列挙された事項の任意の全ての可能な組合を意味し包含するものとして理解されるべきである。“包含する”及び/又は“包含する〜”の用語は、詳細な説明で使用される時、陳述された特徴、数字、ステップ、動作、要素及び構成要素の存在を明示するものであり、一つ以上の他の特徴、数字、ステップ、要素、構成要素及び/又はそのグループの存在又は付加を排除しない。図面の構成要素及び特徴は、必ずしも実寸通りに描かれない。
【0042】
ストリーム基盤のガーベッジコレクション(garbage collection)の場合、データがストリームIDに基づいて当初はブロックに配置されるにも拘わらず、異なる寿命を有するデータが混在する機会を提供する。このような結果は単一のストリーム内のデータの寿命が、時間の経過と共に転変(evolve)するので発生する。例えば、ホットデータ(hot data)がストリーム識別子(identifier, ID)「8」に割り当てられる時間区間が有り得る。但し、作業負荷がホスト上で変化するにつれデータ温度が変化し、従って与えられたストリームIDに割り当てられた、より古いデータブロックは、同一のストリームIDに属する、より新しいブロックと同一の期待寿命を有しない場合がある。
【0043】
しかし、ガーベッジコレクションさえストリーミングを利用できる。ガーベッジコレクションの一部として有効データをプログラムする(書き込む)際に、消去ブロックの有効データに対しては、論理ブロックアドレス(LBA:Logical Block Address)(又は任意の他の属性)を手交(pass)し、斯かる有効LBAに対して、対応して検出された現在のストリームIDに該有効データを書き込む(write)ことにより、自動ストリーム検出アルゴリズムを利用できる。しかも、ストリームIDが、データがプログラムされる時間に再決定されるので、ストリームIDをデータと共に格納する必要がない。
【0044】
ストリームIDを使用して有効データをプログラムするのに使用され得る二つの接近法がある。一つの方法は、プログラム動作を新規ライト(write、書き込み)として扱うことである。もっと具体的に、有効データは、アプリケーションからの元来のライトリクエスト(書き込み要求)のように見えるライトリクエストとして、SSDに伝送される。この接近法は2つの長所を有する。一番目に、ガーベッジコレクションは有効データを特別扱いして書き込む必要がなく、SSD内に既に存在するロジックに該書き込みプロセスを一任(leave)できる。二番目に、消去ブロックは有効データが実際に新しいブロックに書き込まれる前に消去可能になる。但し、斯かる接近法はブロックが消去された後、そして有効データの予定されたライトが完了される前に、電力障害(又は一部の類似で不運なイベント)が発生すると、データが消失するという問題点を有する。他の方法は、ガーベッジコレクションロジックに自動ストリーム検出アルゴリズムからストリームIDを要請させ、そのストリームIDを利用して有効データを書き込む場所を決定する。
【0045】
図1は本発明の実施例によるソリッドステートドライブ(SSD)を有するマシンを図示した図面である。
図1で、マシン105が図示される。マシン105は任意のマシンであって、デスクトップ(desk top)又はラップトップ(laptop)コンピュータ、サーバ(独立型サーバ(standalone))又はラックサーバ(rack server)、又は本発明の実施例を有益に使える任意の他の装置を包含するが、これに制限されない。なお、マシン105は専門化された携帯用コンピューティング装置、タブレットコンピュータ、スマートフォン及び他のコンピューティング装置を包含できる。マシン105は任意のアプリケーションを実行できるし、データベースアプリケーションが良い例示であるが、本発明の実施例は任意のアプリケーションへ拡張できる。
【0046】
マシン105は、ここに示す特定の形式に限定されないが、プロセッサ110、メモリ115及びSSD(Solid State Drive)120を包含する。プロセッサ110は任意の種類のプロセッサであり、例えば、Intelの、Xeon、Celeron、Itanium又はAtomプロセッサ、AMDのOpteronプロセッサ、或いは、ARMのプロセッサある。
図1では単一のプロセッサを示すが、マシン105は任意の個数のプロセッサを包含できる。メモリ115は、任意の種類のメモリであって、フラッシュメモリ、SRAM(Static RAM(Random Access Memory))、PRAM(Persistent RAM)、FRAM(登録商標)(Ferroelectric RAM)、又は、NVRAM(Non−Volatile RAM)(MRAM(Magnetoresistive RAM))など)の何れかであり得るが、典型的にはDRAMである。なお、メモリ115は相異なるメモリ形式の任意の組み合わせであり得る。メモリ115は、なおマシン105の一部であるメモリコントローラ125により制御される。
【0047】
SSD120は任意の種類のSSDであって、ガーベッジコレクションを遂行する(フラッシュメモリを使用しない場合を含む)他の形式のストレージを包含するように拡張され得る。SSD120は、メモリ115内に駐在(reside)する装置ドライバ130により制御される。
【0048】
図2は
図1のマシン105の追加的な詳細を図示した図面である。
図2を参照すれば、典型的に、マシン105はメモリコントローラ125とクロック205を包含する一つ以上のプロセッサ110を含み、プロセッサ110はマシン105の各構成要素の動作を調整するように使用される。なお、プロセッサ110は、例えば、RAM(Radom Access Memory)、ROM(Read−Only Memory)、又は他の、状態を保存する媒体を含むメモリ115と結合される。なお、プロセッサ110はストレージ装置120とも結合され、例えば、イーサネット(登録商標)コネクタ又は無線コネクタであるネットワークコネクタ210と結合される。なお、プロセッサ110はバス215と連結され、バス215には、使用者インタフェース220、入出力(I/O、Input/Output)エンジン225を使用して管理されるインタフェースポート、及び他の構成要素が連結される。
【0049】
図3は、
図1のSSD120の詳細を図示した図面である。
図3において、SSD120は、ホストインタフェースロジック305、SSDコントローラ310及び多様なフラッシュメモリチップ315−1〜315−8を包含し、フラッシュメモリチップ315−1〜315−8は多様なチャンネル320−1〜320−4として組織化される。ホストインタフェースロジック305は、SSD120と
図1のマシン105との間の通信を管理する。
SSDコントローラ310はフラッシュメモリチップ315−1〜315−8上のガーベッジコレクションの動作と共に、リード及びライト動作を管理する。SSDコントローラ310は、斯かる管理の一部を遂行するフラッシュ変換階層325を包含する。SSDコントローラ310の機能の本願に係る詳細については、
図7などを参照して後述する。
図3は、4個のチャンネル320−1〜320−4として組織化された8個のフラッシュメモリチップ315−1〜315−8を包含するSSD120を図示するが、本発明の実施例は任意の個数のチャンネルとして組織された任意の個数のフラッシュメモリチップを支援できる。
【0050】
図4は、ライトリクエストに対するストリームIDを決定する自動ストリーム検出ロジックを図示した図面である。
図4で、多様なライトリクエスト405−1〜405−4が図示される。各々のライトリクエスト405−1〜405−4は論理ブロックアドレス(LBA)410−1〜410−4を包含する。自動ストリーム検出ロジック415は、LBA410−1〜410−4を使用して、ライトリクエスト405−1〜405−4を割り当てるストリーム識別子(IDs)420−1〜420−4を決定する。例えば、自動ストリーム検出ロジック415は、ここでの全ての目的のための参照文献で包含される2017年4月27日出願された米国特許出願第15/499、877において説明されたように動作し、LBA410−1〜410−4に基づいてストリームID420−1〜420−4を割り当てる。但し、
図4は、LBA410−1〜410−4を使用してストリームID420−1〜420−4を決定する自動ストリーム検出ロジック415を図示するが、本発明の別の実施例はライトリクエスト405−1〜405−4の任意の属性を使用し、ストリームID420−1〜420−4を決定できる。
【0051】
フラッシュメモリ(又は、ガーベッジコレクションを遂行する他の装置)を使用するSSDにおいて、フラッシュメモリは通常、多重のページを含む消去ブロックとして組織化される。ページの各々は三つの状態の中で一つであり得る。斯かる三つの状態はフリー(free、現在どのようなデータも格納しない状態)、有効(valid、現在データを格納した状態)及び無効(invalid、以前に有効データを格納したが、最早有効データを格納せず、しかし未だフリーではない状態)である。
【0052】
新しいデータがフラッシュメモリに書き込まれる時、フリーページの位置が探し出され、斯かるフリーページにデータが書き込まれる。その後、該ページは有効データを格納するとしてマーキングされる。ページは、典型的に消去ブロック内で順序通り書き込まれる。但し、フラッシュメモリの個々のページは通常、一旦書き込まれると重ねて書き込まれ(over−written)ない。よって、フラッシュメモリに格納されたデータが、アプリケーションにより変更される時、該データを含む全体のページがフラッシュメモリの新しいページに書き込まれる。その後、元のページは無効としてマーキングされる。“ガーベッジコレクション”は、SSDが消去ブロック単位で無効ぺージを使用可能(reclaim)とする処理過程である。斯かる処理過程は、消去ブロックの全てのページをリセットするステップ及び再びフリーとして該ページをマーキングするステップを包含する。
【0053】
ページが二つではなくむしろ三つの可能な状態を有する理由は、ガーベッジコレクションが遂行される方式に起因する。もしも、ガーベッジコレクションが個々のページに対して遂行されると仮定するなら、無効状態は必要とならないであろう。ガーベッジコレクションはデータが無効化されるや否や、生起(実行)できるし、ページは即時フリーにされる。しかし実際には、ガーベッジコレクションは典型的に個々のページよりもっと大きいチャンク(chunk、塊り)に対して動作する。
斯かるチャンクは、消去ブロック又はスーパーブロック(superblocks)と命名され、任意の個数のページを包含できる。或るブロックがガーベッジコレクションの対象になると、現ブロック中の全てのページはフリー状態に遷移する。よって、現ブロック中の任意の現在有効データは、現ブロック中のページが消去される前に、何処か他のブロックのフラッシュメモリのフリーページに書き込まれ(斯かる処理過程はプログラム(プログラミング)と命名される)なければならない。
もしも、ガーベッジコレクションがブロック中の任意のデータが無効化されると直ちに、スタートすると仮定するならば、SSDは該ブロック中の有効ページから他のページにデータを移すのに相当膨大な時間を消費しなければならないはずである。消去ブロックからの有効データを他のページにプログラムすること自身が、それによる相当膨大なオーバヘッドを惹起するが、その事実を脇に措くとしても、フラッシュメモリは典型的に、限定された回数以上に書き込み(プログラム)アクセスされると信頼性が低下する(又は、より悪い場合には、使用不能になる)。
よって、消去ブロックからの有効データをプログラムするのに消費される時間量を最小化することが要求される。但し、同時に、ガーベッジコレクションは、消去ブロックの全てのページが無効としてマーキングされるまで遅延することはできない。フラッシュメモリはその全てのブロックが、有効又は無効としてマーキングされたページだけを含む(即ち、フリーページを含まない)状態になると、これは、これ以上データを該フラッシュメモリに書き込めないことを意味する。
【0054】
図5は、消去ブロックからの有効データを他のブロックにプログラムして(書き込んで)移す、
図1のSSD120におけるガーベッジコレクションを図示した図面である。
図5において、ブロック505−1〜505−10が図示され、ブロック505−2は特に詳細に示される。ブロック505−2は4個のページ510−1〜510−4を包含し、ページ510−1、510−2、510−4は現在無効としてマーキングされ、ページ510−3は現在有効データが格納されていることを意味する有効としてマーキングされている。従って、ブロック505−2がガーベッジコレクションの対象になる時、ページ510−3の有効データ(以下、単に「有効データ510−3」ともいう)は例えば、ページ515−1〜515−4を含むと図示されるブロック505−8のような他のブロックにプログラムされるべきである。ページ510−3の有効データは具体的には例えば、破線の矢印520で図示されたように、ページ515−1にプログラムされる。ページ510−3の有効データがページ515−1にプログラムされた後に、ブロック505−2の全てのページは無効としてマーキングされ、ブロック505−2全体が消去ブロックとしてガーベッジコレクションの対象になる。
【0055】
図5は、10個のブロック505−1〜505−10を図示し、各々のブロックが4個のページを有する場合を図示するが、本発明の実施例は任意の個数のブロックを含む
図1のSSD120を支援でき、各々のブロックは任意の個数のページを有し得る。本発明の実施例は、ブロック又はブロック当りのページの特定の個数に制限されない。
【0056】
図6は、
図4のストリームID420−1〜420−4を決定するのに使用され得るデータの多様な属性を図示した図面である。
図6には、属性の集合605が図示される。属性の集合605は、LBA410、アプリケーションID610及び残余寿命615を包含する。例えば、LBA410は
図1のSSD120に書き込まれるべきデータのLBAであり、アプリケーションID610は
図1のSSD120に対してデータ書き込みを要請しているアプリケーションの識別子であり、残余寿命615はデータが(新しいデータに交替されるか単純に完全に除去されることで)無効化される前に、データが
図1のSSD120に残っているであろうと期待される時間である。ストリームIDを決定するのに使用される他の可能な属性は、以下を含む。
【0057】
順次性620:書き込まれるべきデータのLBAが以前のLBA(直前のライトリクエストであるか、又は、或るウィンドウ内の以前のライトリクエスト)に順次的なページにあるか。
アップデート頻度625:書き込まれたデータがどの程度頻繁にアップデート(現在データが書き込まれる場所のページを無効化する)されるであろうと期待されるか。
最新性630:書き込まれたデータのLBAが、どの程度近い以前に書き込まれたか。
ライトサイズ635:(同じ時期になされた他のライトに関するサイズに対して相対的な)書き込まれるべきデータのサイズ。
ライト時間640:(同じ時期になされた他のライトに関する書き込み時間に対して相対的な)データの書き込み時間。
リード頻度645:(他のデータのリード頻度に対して相対的に)リードされるべきデータがどの程度頻繁にリードされたか。
リード温度650:リードされるべきデータの“温度”、即ち、リードされるべきデータが“ホット(hot)”と考慮されるか“クール(cool)”と考慮されるか。
【0058】
本発明の実施例は、
図6に図示された属性を超えて、他の属性を支援できる。例えば、データをライトするアプリケーションにより要求されるQoS(Quality of Service)に対しては、要求に応じて、任意の他の属性が使用され得る。
【0059】
従来技術においては、
図4のストリームID420−1〜420−4は、ライトリクエスト405−1〜405−4が全て受信される時、決定される。
図4のストリームID420−1〜420−4は、
図4のライトリクエスト405−1〜405−4により書き込まれたデータに対するメタデータとして格納され得るが、ストリームID420−1〜420−4はアップデートされない。しかし、有効データ510−3(正確には、「ページ510−3に格納された有効データ」であるが、以下、このように「有効データ510−3」と略称する)のような、消去ブロックの有効データがガーベッジコレクションの一部として新しいブロックに書き込まれるべき時、
図5の有効データ510−3が元来書き込まれた時に決定されたストリームIDは、
図5の有効データ510−3と現在マッチングされるストリームを適切に表わせない場合もある。
別の言葉で言えば、もし
図5の有効データ510−3がこの時新しいライトリクエストの対象として受信されたと仮定すると、
図5の有効データ510−3は、元来書き込まれた時に割り当てられたストリームと異なるストリームに割り当てられるであろう。
図5の有効データ510−3をプログラムする時にストリームIDをアップデートすることの長所は、元来のストリームIDが
図5の有効データ510−3を書き込むためのブロックを選択するのに使用されると仮定した場合に生起するであろう属性よりも、さらに類似した属性を有するデータを格納するブロックに有効データ510−3がプログラムされ得るという点である。
【0060】
以上、ガーベッジコレクションの処理過程、及びガーベッジコレクションの処理過程において
図4のストリームID420−1〜420−4を適用する場合の長所を説明したが、ここで本発明の実施例を追加して記述する。
図7は、
図3のSSDコントローラ310の詳細を図示した図面である。
図7においてSSDコントローラ310は、フラッシュ変換階層315の外に、レシーバ705、入出力(I/O)キュー710、自動ストリーム検出ロジック415、及びガーベッジコレクションロジック715を含む。レシーバ705は、
図1のマシン105上で走る(実行される)アプリケーションなどの任意のソースから
図4のライト(write)リクエスト405−1〜405−4を受信する。一旦受信されると、
図4のライト(write)リクエスト405−1〜405−4は処理のために、I/Oキュー710に配置される。特定のライト(write)リクエストがI/Oキュー710から消去される時に、自動ストリーム検出ロジック415が該ライト(write)リクエストに対する適切なストリームIDを決定するために使用され、その後、データが
図3の適切なフラッシュメモリ315−1〜315−8に書き込まれる。
【0061】
ガーベッジコレクションロジック715は、
図3の適切なフラッシュメモリ315−1〜315−8から消去ブロックを復旧させる。消去ブロックは、任意のアルゴリズムを使用して選択される。但し、任意の使用可能なページをランダムに採用してそのページに
図5の有効データ510−3をプログラムする場合に比べて、ガーベッジコレクションロジック715は、
図5の有効データ510−3をプログラムするべき適切なブロックを選択するにあたって、自動ストリーム検出ロジック415を有利に活用できる。ガーベッジコレクションロジックは、下記の
図8を参照してさらに説明される。
【0062】
図8は、
図7のガーベッジコレクションロジック715の詳細を図示した図面である。本発明の一実施例において、ガーベッジコレクションロジック715はライト(write)リクエストロジック805及び消去ロジック810を含む。ガーベッジコレクションロジック715が
図5の消去ブロック502−2のような消去ブロックを消去するように起動される際に、該消去ブロック内に
図5の有効データを含むページ510−3がある場合には、まるでライト(write)リクエストが
図1のマシン105上で走るアプリケーションによって提起された場合のように、ライト(write)リクエストロジック805はライト(write)リクエストを
図7のレシーバ705を介してI/Oキュー710に伝達する。(もし、消去ブロックが有効データを有するページを含まないならば、プログラムが要求される有効データが無いことは自明である。一方、該消去ブロック内の全てのページが無効データを含む場合は、該消去ブロックを直接消去できる。)
このような方式でライト(write)リクエストが処理される場合、有効データ510−3は、
図1のSSD120の新たなページに書き込まれる。
図1のSSD120の観点からは、このようなライト(write)リクエストは、
図1のマシン105上を走るアプリケーションによって提起されるライト(write)リクエストと異なることはなく、同様に処理される。一旦ライト(write)リクエストが
図7のI/Oキュー710に伝達されると、消去ロジック810は
図5の消去ブロック505−2を消去する。ガーベッジコレクションロジック715は消去ロジック810を開始する前に、有効データが新たなページに書き込まれることを待つ必要のない点に留意されたい。何故ならば、該有効データは
図7のI/Oキュー710内に完全に存在し、順に書き込まれるであろうから。もちろん、電力障害のような想定外の状況によってもデータが消失しないことを保証され場合には、消去ロジック810は
図5の消去ブロック505−2を消去処理する前に、データの書き込みが成功するまで待たねばならない。但し、
図1のSSD120がこのような保証を提供する場合は、想定外の状況によってもデータが消失しないように
図7のI/Oキュー710のデータを保証する他のメカニズムが既に
図1のSSD120内に通常、存在する。
【0063】
図9は本発明の実施例によって、有効データをプログラムするように
図7のI/Oキュー710に有効データを伝達する
図8のライト(write)リクエストロジック805を図示した図面である。
図9において、一旦、ブロック505−2が消去ブロックとして選択されて有効データ510−3が識別されると、ライト(write)リクエストロジック805は、ライト(write)リクエストを生成して、
図1のSSD120上の新たなページに戻り、有効データ510−3を再書き込みする。このようなライト(write)リクエストはI/Oキュー710に伝達でき、
図1のマシン105上を走るアプリケーションに由来する元来のライト(write)リクエストと同様に処理できる。
【0064】
図7のガーベッジコレクションロジック715によって有効データ510−3を直接プログラムすることを避けるために、I/Oキュー710に有効データ510−3を配置すると、元来のライト(write)リクエストの書き込み遅延(latency)を増加させうると考えられがちであるが、書き込み遅延への実際の影響は僅かである。理想的には、
図7のガーベッジコレクションロジック715は、
図1のSSD120に対する他の需要が低い場合に動作する。
図1のSSD120が多数の元来のライト(write)リクエストを
図1のマシン105上で走るアプリケーションから受信している最中には、
図7のガーベッジコレクションロジック715は消去ブロックの復旧を、望ましくは開始しない。
図7のガーベッジコレクションロジック715は、
図1のSSD120が異常に低いフリーページカウントを示す場合に開始され得る。但し、このような状況が発生すれば、有効データのプログラミング(書き込み)は何れにしても発生し、元来のライト(write)リクエストの書き込み遅延に対しては類似の影響を予期せざるを得ない。よって、有効データ510−3をプログラムする際に、あたかも元来のライト(write)リクエストの場合のようにI/Oキュー710を使用することは、伝統的な従来のガーベッジコレクションにおけるよりも大きい影響を惹起する可能性がない。そして、有効データ510−3は、残余寿命などの類似する属性を有する他のデータと共に配置される可能性が大きいので、ガーベッジコレクションの性能は、将来の有効データに対するプログラミング(書き込み)の機会を低減することにより、向上できる。
【0065】
図8に戻って、本発明の他の実施例によるガーベッジコレクションロジック715は消去ロジック810、ブロック選択ロジック815、及びプログラミングロジック820を含む。ブロック選択ロジック815は、
図7の自動ストリーム検出ロジック415にアクセスして、
図5の有効データ510−3に対する新たなストリームIDを決定する。即ち、ブロック選択ロジック815は
図5の有効データ510−3に係る
図6の属性の集合605内の一つの属性を
図7の自動ストリーム検出ロジック415に伝達し、これに応答してストリームIDを受信する。その後、ブロック選択ロジック815は、そのストリームIDを使用して、有効データ510−3をプログラミングするための適切なブロックを選択する。これは、従来の伝統的な技術を使用するプログラミングロジック820によって行われうる。
ブロック選択ロジック815は、
図7の自動ストリーム検出ロジック415から受信されたストリームIDに基づいて任意の適切なブロックを選択できる点に留意されたい。例えば、選択されたブロックは、選択されたストリームIDを有する
図1のマシン105上で走るアプリケーションから受信された元来のライト(write)リクエストに応答して、書き込みされたデータを保有するブロックでありうる。又は、選択されたブロックは、ガーベッジコレクションの結果としてプログラムされ、このようなストリームIDによって、割り当てられたデータのみ格納する特殊ブロックでありうる。なお、本発明の実施例は、他の方式で受信されたストリームIDに応答してブロックを選択するように、ブロック選択ロジック815を具現できる。
【0066】
図10は本発明の実施例によって、
図7の自動ストリーム検出ロジック415から受信されたストリームIDに応答するブロックを選択する
図8のブロック選択ロジック815を図示した図面である。
図10において、ブロック選択ロジック815は、自動ストリーム検出ロジック415からストリームID1005を受信する。ストリームID1005は、有効データ510−3の属性を使用して決定される。一旦、ブロック505−8のようなブロックが選択されると、フリーページ1010−3のような、ブロック505−8のフリーページの位置が探され、プログラミングロジック820は、有効データ510−3を例えばフリーページ1010−3に書き込む。一旦、このような動作が完了されると、
図8の消去ロジック810は消去ブロック505−2を消去し、この消去ブロック505−2のページ510−1〜510−4は全て、フリーになる。
【0067】
図7のガーベッジコレクションロジック715が具現される方法に関わらず、本発明の実施例は、大略、有効データ510−3がプログラムされるべき時に、有効データ510−3をプログラムするのに使用されるストリームIDを決定する。即ち、
図7のガーベッジコレクションロジック715は、有効データ510−3が元来プログラムされる時に決定される
図4のストリームID420−1〜420−4に依存しない。代わりに、
図7のガーベッジコレクションロジック715は、大略、有効データ510−3が新たな(フリー)ページにプログラムされるべき時に、有効データ510−3をプログラムする際に使用されるストリームIDを決定する。また、
図7のガーベッジコレクションロジック715は、有効データ510−3とともに格納されていたかも知れないストリームIDに依存しない。何故ならば、以前に決定されたストリームIDは最早、有効データ510−3をプログラムするための最善のストリーム選択を反映しない、からである。
【0068】
図11は、本発明の実施例によって、
図10のストリームID1005を用いたガーベッジコレクションを行うための例示的な手順に対するフローチャートを図示した図面である。
図11のステップ1105において、
図7のレシーバ705は一つ以上の
図4の書き込みコマンド(ライトリクエスト)405−1〜405−4を受信する。ステップ1110において、
図7の自動ストリーム検出ロジック415は、
図4の書き込みコマンド405−1〜405−4に対するストリームID420−1〜420−4を決定する。ステップ1115において、
図3のSSDコントローラ310は、
図4のストリームID420−1〜420−4に関連されたデータが書き込まれるべきブロックを選択し、ステップ1120において、
図3のSSDコントローラ310は、
図3のフラッシュメモリ315−1〜315−8にデータを書き込むように書き込みコマンド405−1〜405−4を実行する。
【0069】
ステップ1125において、
図3のSSDコントローラ310はガーベッジコレクションを行うべき時であるかを確認する。もしそうでなければ、この後の処理ステップは、ステップ1105に戻って追加的な書き込み(又は他の)コマンドを処理する。しかしながら、もし、
図3のSSDコントローラ310がガーベッジコレクションを行うべき時間であれば、この後、処理ステップはステップ1130に続けられ、
図3のSSDコントローラ310は、フォアグラウンド(Foreground)動作又はバックグラウンド(Background)動作の何れかとしてガーベッジコレクションを行う。後者の場合、ステップ1125における確認事項は、
図3のSSDコントローラ310がガーベッジコレクションをするための時が到来したか否かに関することよりも、むしろ、アプリケーションからのリード(read)及びライト(write)リクエストに対して僅かな、又は最小限の影響しか与えずにガーベッジコレクションが進行できるレベルにまで活動が落ちたか否かに関することになる。
ステップ1130において、
図7のガーベッジコレクションロジック715は、
図5の消去ブロック505−2のような消去ブロックを識別する。ステップ1135において、
図3のガーベッジコレクションロジック715は、
図5の消去ブロック505−2内の有効データを識別する。そして、ステップ1140において、
図7のガーベッジコレクションロジック715は、
図7の自動ストリーム検出ロジック415によって決定されたとおりに、
図10のストリームID1005に基づいて選択された、消去ブロック505−2とは相異なる第2ブロック505−8に
図5の有効データ510−3をプログラムする。処理ステップはこの後、他の書き込み(又は他の)コマンドを処理するステップ1105に戻る。又は、他に消去すべきブロックがある場合はその消去ブロックを識別するステップ1130に戻る(図示せず)。
【0070】
注意深い読者は、
図11に図示された例示的な手順が消去ブロックを消去すること自身に関して陳述しなかった点に気付くであろう。これは、消去動作のタイミングは本発明の実施例に依存して変化できるためである。消去動作は、
図12に図示され、後述される。
【0071】
図12は、本発明の一実施例によって、ガーベッジコレクションの間、
図5の消去ブロック505−2内の
図5の有効データ510−3(正確には、「ページ510−3に格納された有効データ」であるが、以下、簡略に「有効データ510−3」という)を、該選択された第2ブロック505−8のフリーページにプログラムする(書き込む)ための例示的な手順のフローチャートを図示した図面である。
図12は実際に、プログラム動作を行う二つの異なる接近法を説明する。本発明の一実施例の場合、ステップ1205において、
図8のライト(write)リクエストロジック805は、
図7のI/Oキュー710にライト(write)リクエストを配置する。実効的には、ステップ1205は、ライト(write)リクエストのソースを除外して、
図11のステップ1105と同一である。その時点で、フリーページに
図5の有効データ510−3を書き込む動作は、
図1のマシン105上で走るアプリケーションに由来する書き込みとともに処理される。ステップ1210にて、
図8の消去ロジック810は、この後、ライト(write)リクエストが完了されることを待つか、又は、待たずに
図5の消去ブロック505−2を消去する。
【0072】
本発明の他の実施例の場合、ステップ1215において、
図8のブロック選択ロジック815は、
図7の自動ストリーム検出ロジック415から
図10のストリームID1005を要請する。ステップ1220において、
図8のブロック選択ロジック815は
図10のストリームID1005に基づいてブロックを選択する。ステップ1225において、
図8のプログラミングロジック820は、
図5の有効データ510−3を選択されたブロックのフリーページに書き込む。その後、ステップ1230にて、
図8の消去ブロック810が
図5の消去ブロック505−2を消去する。
【0073】
図11及び
図12において、本発明の一部の実施例が図示される。但し、当業者は、本発明の他の実施例がステップの順序の変更、ステップの省略、及び/又は、図面に図示されてないリンクの追加により、尚、具現可能であることを認識するであろう。このような全てのフローチャートの変化は明示的な記述の有無に関わらず、本発明の実施例として見なされる。
【0074】
次の記述は、本発明の或る一部の態様が具現できる適切な単数又は複数のマシンの簡略且つ一般的な説明を提供する意図がある。単数又は複数のマシンは、少なくとも部分的には、他のマシン、バーチャルリアリティー(VR)環境との相互作用、バイオ認識フィードバック、又は他の入力信号から受信された指示のみならず、キーボード、マウス等のような伝統的な入力装置からの入力によって制御される。ここで使用される「マシン」の用語は、単一マシン、仮想マシン、又は複数のマシン、複数の仮想マシン、又は共に動作する装置と通信的に結合されたシステムを広く含むように意図される。例示的なマシンは、例えば、自動車、汽車、タクシー等の個人的又は公的な運送手段のような運送装置のみならず、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置、電話、タブレットのようなコンピューティング装置を含む。
【0075】
単数又は複数のマシンはプログラム可能か、又は、プログラム不可なロジック装置又はアレイ、ASIC(Application Specific Integrated Circuits)、組込み式(エンベデッド)のコンピュータ、スマートカード等のような組込み式(embedded)のコントローラを含む。単数又は複数のマシンは、ネットワークインタフェース、モデム、又は他の通信的結合などを介して一つ以上の遠隔マシンとの一つ以上の連結を用いることができる。マシンはイントラネット、インタネット、LAN(Local Area Networks)、 WAN(Wide Area Networks)等のように、物理的及び/又は論理的ネットワーク方式により互いに連結できる。当業者は、ネットワーク通信がRF(Radio Frequency)、衛星、マイクロ波、IEEE(Institute of Electrical and Electronics Engineers)802.11、Bluetooth(登録商標)、光学、赤外線、ケーブル、レーザー等を含む様々な有線及び/又は無線の短距離又は長距離のキャリアとプロトコルを用い得ることを理解するであろう。
【0076】
本発明の実施例は、機能、手順、データ構造、アプリケーションプログラム等を含む関連データと結合して、又は該関連データを参照して記述できる。該関連データはマシンによってアクセスされると、該マシンを、実作業を行うか、又は抽象的なデータ形式又は低いレベルのハードウェア文脈を定義するマシンに帰着する。関連するデータは、例えば、RAM、ROM等の揮発性及び/又は不揮発性メモリ、又はハードドライブ、フロッピーディスク、光学ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的ストレージ等を含む他のストレージ装置、及びそれらの関連するストレージ媒体に格納できる。関連するデータはパケット、シリアルデータ、並列データ、伝播された信号等の形式で、物理的及び/又は論理的ネットワークを含む伝送環境を通じて移動できる。そして、関連するデータは、圧縮又は暗号化されたフォマットで使用できる。関連するデータは分離された環境で使用でき、マシンアクセスのために、ローカル及び/又は遠隔で格納されうる。
【0077】
本発明の実施例は、一つ以上のプロセッサによって実行可能な命令語を含む類型の非一時的なマシン判読できる媒体を含むことができ、命令語は、ここで説明されるように、本発明の要素を行うための命令語を含むことができる。
【0078】
図示された実施例を参照して、本発明の原理を説明及び図示したように、図示された実施例は、このような原理を逸脱しない詳細及び配列に変更されうるし、任意の方式に組み合わせることができる。上述の説明は、特定の実施例にフォーカシングされたが、他の構成が考慮されうる。特に、「本発明の実施例による」等の表現がここで使用されるが、このようなフレーズは、一般的に実施例の可能性を参考することを意味し、本発明の特定の実施例の構成を制限するものと意図されない。ここで使用されたように、このような用語は、他の実施例と組み合わせられる同一又は他の実施例を参考できる。
【0079】
前もって図示された実施例は、本発明をそれによって制限するものと解釈されてはならない。たとえ、一部の実施例が説明されたとしても、当業者は、数々の変更が本発明の新たな教示及び長所から実質的に逸脱しない実施例にできることを容易に理解できるであろう。よって、このような全ての変更は、請求項に定義されることによって、本発明の範囲内に含まれるものと意図される。
【0080】
結論的に、ここで説明された実施例に対する置き換えの多様性の観点で、このような詳細な説明及び添付資料は、単純に図示的なものと意図され、本発明の範囲を制限するものと受け入れられてはならない。よって、本発明で請求されたものは、下記の請求項及びその均等物の範囲及び思想内に有り得るこのような全ての変更である。