IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

特許7170093記憶デバイスのための改良された先読み能力
<>
  • 特許-記憶デバイスのための改良された先読み能力 図1
  • 特許-記憶デバイスのための改良された先読み能力 図2
  • 特許-記憶デバイスのための改良された先読み能力 図3
  • 特許-記憶デバイスのための改良された先読み能力 図4
  • 特許-記憶デバイスのための改良された先読み能力 図5
  • 特許-記憶デバイスのための改良された先読み能力 図6
  • 特許-記憶デバイスのための改良された先読み能力 図7
  • 特許-記憶デバイスのための改良された先読み能力 図8
  • 特許-記憶デバイスのための改良された先読み能力 図9A
  • 特許-記憶デバイスのための改良された先読み能力 図9B
  • 特許-記憶デバイスのための改良された先読み能力 図10
  • 特許-記憶デバイスのための改良された先読み能力 図11
  • 特許-記憶デバイスのための改良された先読み能力 図12
  • 特許-記憶デバイスのための改良された先読み能力 図13
  • 特許-記憶デバイスのための改良された先読み能力 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-02
(45)【発行日】2022-11-11
(54)【発明の名称】記憶デバイスのための改良された先読み能力
(51)【国際特許分類】
   G06F 3/06 20060101AFI20221104BHJP
   G06F 13/10 20060101ALI20221104BHJP
   G06F 12/06 20060101ALI20221104BHJP
   G06F 12/0862 20160101ALI20221104BHJP
【FI】
G06F3/06 302Z
G06F3/06 302A
G06F13/10 340A
G06F12/06 550A
G06F12/0862
【請求項の数】 20
(21)【出願番号】P 2021103245
(22)【出願日】2021-06-22
(65)【公開番号】P2022046413
(43)【公開日】2022-03-23
【審査請求日】2021-06-22
(31)【優先権主張番号】17/017,626
(32)【優先日】2020-09-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】シャイ・べニスティ
(72)【発明者】
【氏名】アリエル・ナヴォン
(72)【発明者】
【氏名】トメル・エリアッシュ
【審査官】松平 英
(56)【参考文献】
【文献】国際公開第2017/017842(WO,A1)
【文献】国際公開第2012/140813(WO,A1)
【文献】特開2018-120346(JP,A)
【文献】特表2019-537097(JP,A)
【文献】国際公開第2018/116937(WO,A1)
【文献】特開2014-049135(JP,A)
【文献】特表2016-520226(JP,A)
【文献】特開2012-128646(JP,A)
【文献】特開2009-301595(JP,A)
【文献】特開2019-204150(JP,A)
【文献】特開2017-045452(JP,A)
【文献】特表2016-539423(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/00
3/06-3/08
3/18
12/00-12/128
13/10-13/42
(57)【特許請求の範囲】
【請求項1】
電子デバイスであって、
不揮発性記憶媒体と、
読み出しキューと、
前記不揮発性記憶媒体に結合された制御回路であって、
対応するデータ記憶アドレスを含む読み出し要求をホストから受信し、前記読み出し要求を前記読み出しキュー内に配置し、
対応する次のデータ記憶アドレスを含む次の読み出し要求を前記ホストから受信し、前記次の読み出し要求を前記読み出しキュー内に配置し、
前記不揮発性記憶媒体内の前記読み出し要求に対応するメタデータを、前記次の読み出し要求からの前記次のデータ記憶アドレスで更新するように構成された、制御回路と、
を備えており、
前記制御回路は、
前記ホストから前記読み出し要求を再度受信することに応答して、
前記不揮発性記憶媒体から、前記読み出し要求に対応する前記メタデータから前記次のデータ記憶アドレスを読み出し、
後続の読み出し要求を処理する前に、前記次のデータ記憶アドレスから次のデータをフェッチするように構成されている、
電子デバイス。
【請求項2】
前記制御回路が、
前記読み出しキューに対応するアイドル処理時間の発生に応答して、前記次のデータ記憶アドレスから前記次のデータをフェッチするように更に構成されている、請求項1に記載の電子デバイス
【請求項3】
前記不揮発性記憶媒体における前記読み出し要求に対応する前記メタデータの前記更新が、書き込み要求を除いた前記次の読み出し要求に基づき、かつ前記次の読み出し要求に応答してのものである、請求項1に記載の電子デバイス
【請求項4】
前記読み出し要求に対応する前記メタデータ内で更新される前記次のデータ記憶アドレスが、前記次の読み出し要求に対応する論理ブロックアドレス(LBA)である、請求項1に記載の電子デバイス
【請求項5】
前記制御回路が、
キャッシュバッファ内に前記次のデータ記憶アドレスからの次のデータを配置するように更に構成されている、請求項1に記載の電子デバイス
【請求項6】
前記制御回路が、
前記ホストから前記次の読み出し要求を再度受信することに応答して、前記キャッシュバッファから前記次のデータを前記ホストに返すように更に構成されている、請求項に記載の電子デバイス
【請求項7】
前記制御回路が、
前記メタデータの前記更新が、リード・モディファイ・ライト・コマンドを利用して、前記不揮発性記憶媒体に前記次のデータ記憶アドレスを書き込むことを含むように更に構成されている、請求項1に記載の電子デバイス
【請求項8】
前記制御回路が、
前記読み出し要求の各々に対応するアプリケーション識別子に基づいて、1つ以上のホストからの読み出し要求をソートするように更に構成されており、
前記不揮発性記憶媒体における前記読み出し要求に対応する前記メタデータの前記次のデータ記憶アドレスでの前記更新が、同じアプリケーション識別子に対応する前記読み出し要求と前記次の読み出し要求の両方にのみ応答してのものである、請求項1に記載の電子デバイス
【請求項9】
前記制御回路が、
各異なるアプリケーション識別子に対応するそれぞれのトラッカ処理を実行して、各それぞれのアプリケーション識別子に対応する読み出し要求に対応する前記メタデータを更新するように更に構成されている、請求項に記載の電子デバイス
【請求項10】
前記電子デバイスが、データ記憶デバイスである、請求項1に記載の電子デバイス。
【請求項11】
コンピュータが実行する方法であって、
対応するデータ記憶アドレスを含む読み出し要求をホストから受信し、前記読み出し要求を読み出しキュー内に配置することと、
対応する次のデータ記憶アドレスを含む次の読み出し要求を前記ホストから受信し、前記次の読み出し要求を前記読み出しキュー内に配置することと、
不揮発性記憶装置における前記読み出し要求に対応するメタデータを、前記次の読み出し要求からの前記次のデータ記憶アドレスに対応する論理アドレスで更新することと、
前記ホストから前記読み出し要求を再度受信することに応答して、前記不揮発性記憶装置から、前記読み出し要求に対応する前記メタデータから前記次のデータ記憶アドレスを読み出すことと、後続の読み出し要求を処理する前に、前記次のデータ記憶アドレスから次のデータをフェッチすることと、を含む、方法。
【請求項12】
前記読み出しキューに対応するアイドル処理時間の発生に応答して、前記次のデータ記憶アドレスからの次のデータをフェッチすることを更に含む、請求項11に記載の方法。
【請求項13】
キャッシュバッファ内に前記次のデータ記憶アドレスからの次のデータを配置することを更に含む、請求項11に記載の方法。
【請求項14】
前記ホストから前記次の読み出し要求を再度受信することに応答して、前記キャッシュバッファから前記次のデータを前記ホストに返すことを更に含む、請求項13に記載の方法。
【請求項15】
前記メタデータの前記更新が、リード・モディファイ・ライト・コマンドを利用して、前記不揮発性記憶装置に前記次のデータ記憶アドレスに対応する前記論理アドレスを書き込むことを含む、請求項11に記載の方法。
【請求項16】
前記読み出し要求の各々に対応するアプリケーション識別子に基づいて、1つ以上のホストからの読み出し要求をソートすることを更に含み、前記読み出し要求に対応する前記メタデータの前記更新が、同じアプリケーション識別子に対応する前記読み出し要求と前記次の読み出し要求との両方にのみ応答して行われる、請求項11に記載の方法。
【請求項17】
各異なるアプリケーション識別子に対応するそれぞれのトラッカ処理を実行して、各それぞれのアプリケーション識別子に対応する読み出し要求に対応する前記メタデータを更新することを更に含む、請求項16に記載の方法。
【請求項18】
コンピューティングシステムであって、
対応するデータ記憶アドレスを含む読み出し要求をホストから受信し、前記読み出し要求を読み出しキュー内に配置するための手段と、
対応する次のデータ記憶アドレスを含む次の読み出し要求を前記ホストから受信し、前記次の読み出し要求を前記読み出しキュー内に配置するための手段と、
不揮発性メモリにおける前記読み出し要求に対応するメタデータを、前記次の読み出し要求からの前記次のデータ記憶アドレスで更新するための手段と、
前記ホストから前記読み出し要求を再度受信することに応答して、前記不揮発性メモリから、前記読み出し要求に対応する前記メタデータから前記次のデータ記憶アドレスを読み出すための手段と、
後続の読み出し要求を処理する前に、前記次のデータ記憶アドレスから次のデータをフェッチするための手段と、
を備える、コンピューティングシステム。
【請求項19】
電子デバイスであって、
不揮発性記憶媒体と、
読み出しキューと、
前記不揮発性記憶媒体に結合された制御回路であって、
対応するデータ記憶アドレスを含む読み出し要求をホストから受信し、前記読み出し要求を前記読み出しキュー内に配置し、
対応する次のデータ記憶アドレスを含む次の読み出し要求を前記ホストから受信し、前記次の読み出し要求を前記読み出しキュー内に配置し、
前記読み出し要求の各々に対応するアプリケーション識別子に基づいて、1つ以上のホストからの読み出し要求をソートし、
同じアプリケーション識別子に対応する前記読み出し要求と前記次の読み出し要求の両方にのみ応答して、前記不揮発性記憶媒体内の前記読み出し要求に対応するメタデータを、前記次の読み出し要求からの前記次のデータ記憶アドレスで更新し、
前記読み出しキューに対応するアイドル処理時間の発生に応答して、前記次のデータ記憶アドレスから次のデータをフェッチするように構成された、制御回路と、
を備える、電子デバイス。
【請求項20】
コンピュータが実行する方法であって、
対応するデータ記憶アドレスを含む読み出し要求をホストから受信し、前記読み出し要求を読み出しキュー内に配置することと、
対応する次のデータ記憶アドレスを含む次の読み出し要求を前記ホストから受信し、前記次の読み出し要求を前記読み出しキュー内に配置することと、
前記読み出し要求の各々に対応するアプリケーション識別子に基づいて、1つ以上のホストからの読み出し要求をソートすることと、
同じアプリケーション識別子に対応する前記読み出し要求と前記次の読み出し要求との両方にのみ応答して、不揮発性記憶装置における前記読み出し要求に対応するメタデータを、前記次の読み出し要求からの前記次のデータ記憶アドレスに対応する論理アドレスで更新することと、
前記読み出しキューに対応するアイドル処理時間の発生に応答して、前記次のデータ記憶アドレスからの次のデータをフェッチすることと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2018年6月19日に出願された米国特許出願第16/012,311号の一部継続出願であり、その優先権の利益を主張し、その全体の内容は、あたかも本明細書に完全に記載されているかのように、あらゆる目的で参照により組み込まれる。
【0002】
(発明の分野)
本開示の態様は、記憶デバイスの分野に関し、より詳細には、読み出し動作の速度を改善するための改良された先読み能力に関する。
【背景技術】
【0003】
中央処理装置、グラフィックスプロセッサ、及び他の処理要素が高速化するにつれて、記憶デバイスは、コンピューティングシステムの全体的な性能のボトルネックとなってきた。ハード・ディスク・ドライブ(HDD)と比較すると、ソリッド・ステート・ドライブ(SSD)の動作速度はこの問題を幾分緩和している。しかしながら、所与のSSDがホスト上の障害となる可能性が依然としてあり、またSSDの性能は個々に大きく異なり得る。
【0004】
記憶デバイスの相対的な性能は、所与のデバイスの容量並びにその読み出し速度及び書き込み速度などの多数の要因に基づいて評価することができる。書き込み速度は概ね徐々に増加しているが、読み出し時間は、記憶デバイスの性能を大きく制限する要因となっている。順次読み出し技術は、トグル率を増加させることである程度まで速度を増加させたが、電力消費の増加という犠牲を伴う。
【0005】
ランダム読み出しは、速度の増加という目標に向けてのとりわけ難しい課題である。媒体上の隣接する位置からの大きな連続的なブロックデータの読み出しを可能にする順次読み出しとは対照的に、ランダム読み出しは、媒体上の様々な隣接していない位置にわたって散在するデータを対象とする。したがって、ランダム読み出しは、読み出しプロセスに待ち時間を生じさせ、そのために関連するホストの記憶デバイスの全体的な性能に影響を及ぼす。
【発明の概要】
【0006】
本明細書では、記憶デバイスによるデータ読み出しを高速化するための先読み技術が開示される。所与の書き込み動作のデータを、次の書き込み位置がデータと共に格納されるような方法で記憶装置に書き込んでもよい。データをその後記憶装置から読み出す際に、データと共に書き込まれた次の書き込み位置から他のデータをプリフェッチしてもよい。次の位置が後続の読み出し動作のターゲットである場合、他のデータは、格納された位置から既に読み出されているため、直ちにホストに返されてもよい。このプロセスにより、後続の読み出し動作が高速化される。
【0007】
データ記憶装置において、読み出し要求の前にデータをプリフェッチするアプローチが、読み出し要求及び次の読み出し要求を受信することと、読み出し要求に対応するメタデータを、次の読み出し要求に対応する次のデータ記憶アドレスで更新することと、を含む。読み出し要求を後の時点で再度受信することに応答して、次のデータ記憶アドレスを読み出し要求メタデータから読み出すことができ、次の読み出し要求を処理する前に、次のデータ記憶アドレスから次のデータをプリフェッチすることができる。更に、次の読み出し要求の別の受信を予測して、次のデータを読み出しキューアイドル時間の間にプリフェッチし、キャッシュバッファ内に格納することができ、この受信に応答して、次のデータを、不揮発性メモリの読み出しからではなくバッファからホストに返すことができる。
【図面の簡単な説明】
【0008】
本開示の多くの態様は、以下の図面を参照してよりよく理解され得る。図面の構成要素は必ずしも縮尺通りではなく、代わりに本開示の原理を明確に示すことに重点が置かれている。更に、図面において、同様の参照番号は、いくつかの図を通して対応する部分を示す。これらの図面に関連していくつかの実施形態が説明されているが、本開示は本明細書に開示された実施形態に限定されない。逆に、全ての代替物、修正物、及び等価物を含むことが意図される。
【0009】
図1】一実施形態におけるコンピューティングシステムを示す。
【0010】
図2】一実施形態における書き込みプロセスを示す。
【0011】
図3】一実施形態における読み出しプロセスを示す。
【0012】
図4】一実施形態における動作シナリオを示す。
【0013】
図5】一実施形態におけるコンピューティングシステムを示す。
【0014】
図6】一実施形態における書き込みプロセスを示す。
【0015】
図7】一実施形態における読み出しプロセスを示す。
【0016】
図8】一実施形態における動作アーキテクチャを示す。
【0017】
図9A】一実施形態における動作アーキテクチャを示す。
図9B】一実施形態における動作アーキテクチャを示す。
【0018】
図10】一実施形態における電力制御プロセスを示す。
【0019】
図11】一実施形態における、簡略化されたコンピューティング・システム・アーキテクチャを示す。
【0020】
図12】一実施形態における、読み出し時間を短縮するアプローチを示す。
【0021】
図13】一実施形態におけるデータのプリフェッチ方法を示す。
【0022】
図14】一実施形態における、データを読み出しキューにプリフェッチする方法を示す。
【発明を実施するための形態】
【0023】
改良された先読み能力を有する改善された記憶デバイスを本明細書に開示する。様々な実施形態において、所与の読み出し動作後にどのアドレスが次に読み出されるかを予測することによって、読み出し時間が短縮される(及び速度が向上する)。そのアドレスにおけるデータは、そのアドレスをターゲットとする後続の読み出し要求よりも前にプリフェッチされてもよい。
【0024】
予測アドレスは、書き込みコマンドがキュー内に現れた時に書き込みコマンドに関して保存された情報から導出されてもよい。そのようなアドレス追跡が、各アドレスの読み出し中に、次の読み出しコマンドのプレディクタとして使用されてもよい。一例では、予測アドレスは、先行する読み出し動作のペイロードから取得される。すなわち、前の書き込み動作中に、次の書き込みアドレスが、所与の書き込みのペイロード内のデータと共に記憶装置に書き込まれてもよい。その後、そのペイロードが読み出し要求の対象である時に、そのペイロードが、次の書き込みアドレスであったアドレスを取得するためにパースされてもよい。次の書き込みアドレスを、次の/予測読み出しアドレスとして利用してもよい。
【0025】
したがって、予測アドレスにおけるデータは、同じアドレス宛てである可能性のある任意の後続の読み出しよりも前にプリフェッチされてもよい。データは、関連する読み出しを予測してバッファリングされてもよい。次の読み出し要求が予測アドレス宛てである場合には、バッファリングされたデータは、読み出し動作を待つ必要なく直ちに返されてもよい。次の読み出しが予測アドレス宛てではない場合には、データは廃棄されてもよい。
【0026】
次の書き込みコマンドのアドレスを取得することが可能であるのは、媒体上にデータをプログラムするのにかかる時間の量のために、所与の書き込みを実行している間にキュー内に他の書き込みコマンドを有する確率が高いためである。逆に、書き込みに対する読み出しの相対的な速度のために、キュー内に他の読み出し要求を有する確率は低い。読み出しの間は読み出しキューが空である可能性が高いことから、次の読み出しをこのように予測することは有用である。
【0027】
いくつかの実施形態では、全ての予測が成功するわけではないために、先読みが強化された結果として電力消費が増加する可能性がある。冗長なオーバーヘッド及び余分な電力消費を低減するための一対策が、上記に提案する予測の成功率の追跡である。予測読み出しは、条件に応じて、成功率が所定の閾値を上回る場合は有効化され、閾値を下回る場合は無効化されてもよい。
【0028】
様々な実施形態では、記憶デバイスは、例えば、ソリッド・ステート・ドライブ(SSD)、ハード・ディスク・ドライブ(HDD)、ハイブリッドSSD-HDD、又は任意の他の種類の記憶デバイスであってもよい。デバイスは、NANDベースのフラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、磁気データ記憶装置、光学データ記憶装置、及び/又は任意の他の種類の記憶技術などの、媒体へのデータの書き込み及び媒体からのデータの読み出し方法を管理するコントローラを含む。
【0029】
コントローラは、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実装されてもよく、デバイスのメモリ構成要素をホストにブリッジしてもよい。ハードウェア実装では、コントローラは、記憶媒体に結合された制御回路を含む。制御回路は、ホストから書き込み要求を受信する受信回路を含む。各書き込み要求は、書き込み要求の対象であるデータと、データのターゲットアドレスとを含む。ターゲットアドレスは、データを格納する位置を記述する論理ブロックアドレス(logical block address:LBA)、物理ブロックアドレス(physical block address:PBA)、又は他のそのような識別子であってもよい。
【0030】
制御回路はまた、前の書き込み要求の後の次の書き込み要求のための次の書き込みアドレスを特定する位置特定回路を含む。制御回路内の書き込み回路は、書き込み要求のデータと、書き込み要求のターゲットアドレスへの次の書き込みアドレスの指示とを書き込む。換言すれば、書き込み要求の対象であるデータは、次の書き込み要求のアドレスと共に記憶装置に書き込まれる。本明細書で使用される場合、「指示」は、後に媒体に格納されるデータセットの位置を特定するか、あるいは確認するために使用され得る任意のデータ値、ビット、値、信号、フラグ、条件、オフセット、コード、又は数字を指す。
【0031】
簡単な例では、書き込み中の16kbのページのうちの4バイトを、次の書き込みのアドレス(0.025%のオーバーヘッド)に使用してもよい。次の書き込みのアドレスは、所与のページのヘッダセクションに書き込まれてもよいが、ページのユーザデータセクションにアドレスを格納することも可能である。アドレスの例には、次の書き込みの位置を表すPBA、LBA、又はその両方、並びに任意の他の情報が含まれる。いくつかの実施形態では、次の書き込みアドレスは、ダイ、ページ、及びブロック情報などの、次のデータが格納されている位置の絶対アドレスである。他の実施形態では、次の書き込みアドレスの指示は、次のアドレスを解明するために使用することのできる現在のLBA又はPBAからのオフセットであってもよい。更に他の例では、次のアドレスは、アドレスのショートハンドバージョンで書き込まれてもよい。次の書き込みのアドレスは、符号化された形式、符号化されていない形式、又は他の任意の方法で格納されてもよい。
【0032】
書き込み要求に続いて、ホストは、最初の書き込み要求と同じアドレスをターゲットとする読み出し要求を送信してもよい。制御回路内の読み出し回路は、ターゲットアドレスからデータ及び次の書き込みアドレスを読み出す。また、読み出し回路は、次の書き込みアドレスによって示される位置で先読みを行い、次の読み出し要求よりも前に次のデータを取得する。上述のように、先読みアドレスとして機能する次の書き込みアドレスは、LBA、PBA、オフセット、フラグなどによって示されてもよい。例えば、LBAの場合、制御回路は、次のデータをフェッチするためにLBAをPBAに変換する。別の例では、次の書き込みアドレスがPBAとして格納された場合、変換は必要とされない。オフセット、信号、フラグなどの場合、制御回路は、現在のPBA及びオフセット、信号、フラグなどに関連する値から先読みPBAを計算してもよい。次の読み出し要求がホストによって送信されると、次のデータは直ちにホストに返される準備が整う。場合によっては、最初の読み出し要求及び次の読み出し要求の両方がランダム読み出し要求と見なされ、したがって読み出し動作はランダム読み出しと見なされる。いくつかの実施形態では、制御回路は、次の書き込みアドレスの指示を格納し、次のデータを格納するためのバッファ回路を更に備える。バッファリングされた次の書き込みアドレスの指示は、後続の読み出し要求に関連したターゲットアドレスと比較することができる値として格納されてもよい。例えば、バッファリングされた値はLBAであってもよく、これを後続の読み出し要求のLBAと比較することができる。いくつかの実施形態では、後続の読み出し要求がPBAを利用する場合、バッファリングされた値は、LBAの代わりにPBAであってもよい。いくつかのシナリオでは、複数の先読み動作に関連付けられたアドレス及びデータをバッファに同時に格納してもよい。バッファは、1つ以上のページのデータを収容できるようなサイズであってもよい。一シナリオでは、バッファは、96kB以下のRAM、又は約4ページのデータのサイズであってもよい。しかしながら、ページサイズと同様に、RAMサイズが増加する可能性があることが理解されよう。
【0033】
次いで、制御回路のコンパレータ部分が、次の読み出し要求で特定される次のターゲットアドレスが次の書き込みアドレスと一致すると判定してもよい。これを、バッファ内の次の書き込みアドレスの値を次の読み出し要求内のアドレスの値と比較することによって達成してもよい。例えば、次の読み出し要求内のLBAが、バッファ内のLBAと比較されてもよい。別の例では、次の読み出し要求内のPBAが、バッファ内のPBAと比較されてもよい。いくつかの代替的な実施形態では、バッファに格納された値は、媒体に格納されている、又は先読み動作中に計算された次の書き込みアドレスの実際の値からのオフセットだけ異なってもよい。そのような状況では、実際の値を次の読み出し要求の値と比較する前に、制御回路が実際の値を計算する。制御回路のコンパレータ又は他の要素は、値が互いに一致する状況で、次の読み出し要求に応答して次のデータをホストに返してもよい。コンパレータは、次の読み出し要求で指定された次のターゲットアドレスが次の書き込みアドレスと一致しない場合、次のデータを破棄してもよい。
【0034】
コントローラは、いくつかの実施形態では、書き込みキュー及び読み出しキューを含んでもよい。読み出しキューはホストから読み出し要求を受信し、書き込みキューは書き込み要求を受信する。読み出し要求は、不揮発性記憶媒体内のどこでデータを読み出すかを指示し、それによって、コントローラが所与の読み出し要求によって指示される位置からデータをフェッチすることを可能にしてもよい。
【0035】
そうすると、コントローラは、その位置から読み出されたペイロードから次の読み出し要求の予測アドレスをパースする。次に、コントローラは、次の読み出し要求を実際に受信する前に、次の読み出し要求の予測位置から更なるデータをプリフェッチしてもよい。次の読み出し要求の実際の位置が予測位置と異なる場合、コントローラは、単に次のデータを破棄し、実際の位置からの読み出しに進んでもよい。
【0036】
書き込みキューに関して、キュー内の書き込み要求の各々は、所与の書き込み要求のデータをどこに書き込むかを指示する。コントローラのプレディクタ部分が、前の書き込み要求後の次の書き込み要求によって指示される位置に基づいて、次の読み出し要求の予測位置を特定する。コントローラの書き込み部分が、前の書き込み要求によって指示される位置に、前の書き込み要求のデータと予測位置の指示とを書き込んでもよい。コントローラのバッファ部分が、次の読み出し要求の予測位置の指示と次のデータとを格納してもよい。
【0037】
上述のように、コンパレータ部分は、次の読み出し要求によって指示される位置が次の読み出し要求の予測位置と一致すると判定してもよい。コンパレータ又はコントローラの他の部分が、次のデータをホストに返してもよい。次の読み出し要求によって指示される位置が次の読み出し要求の予測位置と一致しない場合には、次のデータを破棄してもよい。
【0038】
このような改良された先読み技術は、上記の説明及び図1図10の以下の説明から明らかであり得るように、様々な技術的利点を提供する。例えば、読み出し要求よりも前にデータをプリフェッチすることで、読み出しが高速化する。このことが、これらのデータが媒体上に散在しているために、完了までの時間量が長いランダム読み出しの場合に特に有益であってもよい。別の例では、ホスト上の要求アプリケーションは、コントローラに知られている必要はない。むしろ、コントローラは、要求アプリケーションを知らずに、改良された先読みを行ってもよい。
【0039】
ここで図面を参照すると、図1は、改良された先読み技術の一実施形態におけるコンピューティングシステム100を示す。コンピューティングシステム100は、ホスト101及び記憶デバイス110を含む。ホスト101は、記憶デバイス110にデータを書き込み、記憶デバイス110からデータを読み出すことができる任意のホストサブシステムを表す。記憶デバイス110は、データの読み出し及び書き込みの目的でホスト101に内部又は外部で接続することの可能な任意のデバイスを表す。記憶デバイス110の例としては、ソリッド・ステート・ドライブ(SSD)、サムドライブ、ハード・ディスク・ドライブ(HDD)、ハイブリッドSSD/HDDドライブ、及びこれらの任意の変形又は組み合わせが挙げられるが、これらに限定されない。コンピューティングシステム100の例としては、1つ以上の記憶デバイスを利用するパーソナルコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータ、携帯電話、ネットワークドライブ、家庭用電子デバイス(例えば、カメラ、テレビ、及びメディアプレーヤ)、ゲーム機器、耐久消費財機器、及び任意の他のシステム、変形、又はそれらの組み合わせが挙げられるが、これらに限定されない。
【0040】
ホスト101は、接続103を介して記憶デバイス110と通信を行う。接続103は、ホスト101と記憶デバイス110とを結合し、記憶装置の通信をこれら2つの間で行うことができる1つ以上の物理的な相互接続を表す。ホスト101は、(これらに限定されないが)シリアルATA(SATA)、ファイバチャネル、ファイアワイヤ、シリアルアタッチドSCSI(SAS)、アドバンスド・テクノロジー・アタッチメント/インテグレーティド・ドライブ・エレクトロニクス(ATA/IDE)、ユニバーサル・シリアル・バス(USB)、及びPCI Express(PCIe)などの記憶デバイス110と通信する際に、1つ以上のインターフェースプロトコルを利用してもよい。
【0041】
記憶デバイス110は、コントローラ111及び記憶媒体115を含む。コントローラ111は、記憶媒体115へのデータの書き込み及び記憶媒体115からのデータの読み出しに対する監視の役割を実行する1つ以上の処理要素を表す。コントローラ111は、図2及び図3でそれぞれより詳細に説明される書き込みプロセス200及び読み出しプロセス300を実行することが可能であり、これらはハードウェアに実装されてもよいが、コントローラ111によって実行可能なファームウェア、ソフトウェア、又は他の形態のプログラム命令に実装されてもよい。記憶媒体115は、データの書き込み及び読み出しが可能な任意の不揮発性媒体である。例としては、限定するものではないが、NANDフラッシュ媒体、DRAM媒体、相変化媒体、磁気媒体、及び光学媒体が挙げられる。接続113は、コントローラ111と記憶媒体115とを結合する1つ以上の物理的相互接続を表す。
【0042】
動作時に、ホスト101は記憶媒体115上で実行される、書き込み要求121及び読み出し要求125で表される読み出し及び書き込み要求を、コントローラ111に送信する。コントローラ111は、書き込み要求121を処理する時は書き込みプロセス200を実行し、読み出し要求125を処理する時は読み出しプロセス300を実行する。以下は、書き込みプロセス200及び読み出しプロセス300の詳細な説明であり、それぞれ図2及び図3のステップを補足的に参照する。
【0043】
図2を参照すると、コントローラ111は、ホスト101から所与の書き込み要求を受信する(ステップ201)。書き込み要求は、書き込まれるデータと、記憶媒体115上のどこにデータを書き込むかを示す位置とを含む。位置は、物理ブロックアドレス(PBA)、論理ブロックアドレス(LBA)、又は任意の他の好適な指示によって指定されてもよい。場合によっては、この位置は、書き込み要求自体ではなく、ホスト101によって別々に指定されもよく、又は書き込み要求を受信した時にコントローラ111によって決定されてもよい。
【0044】
次に、コントローラ111は、ホスト101によって提出された次の書き込み要求の次の位置を特定する(ステップ203)。このことが、例えば、書き込みキュー内の次の書き込み要求に関連付けられたアドレスを読み出すことによって達成されてもよい。次いで、コントローラ111は、最初の書き込み要求によって指定された位置に書き込むペイロードを生成する(ステップ205)。ペイロードは、少なくとも、第1の書き込み要求のデータ及び次の書き込み要求の次の位置を含んでもよい。次の位置はPBAであってもよいが、代わりにLBAであってもよい。
【0045】
この例では単一の次の位置のみがペイロードに含まれているが、複数の位置を単一のペイロードに格納できることを理解されたい。例えば、次のアドレスとそれ以降の次のアドレスとの両方を所与のペイロードに格納することができる。更に、本明細書で使用される「次」という用語は、キュー内の直後のアドレスを指すが、変形が可能である。例えば、直後のアドレスをスキップし、その次のアドレスを代わりに使用してペイロードに含めることができる。
【0046】
ペイロードを生成すると、コントローラ111は、ペイロードを書き込み要求によって指定された最初の位置に書き込む(ステップ207)。このようにして、書き込み要求のデータは、キュー内の次の書き込み要求の位置の識別情報と共に格納される。書き込みプロセス200は、後続の書き込み要求を続行して、各先行する要求に続く次の書き込み要求のアドレスを、その要求のデータと共に書き込んでもよい。後続の位置情報は、以下に説明するように、読み出しプロセス300の予測位置として機能してもよい。
【0047】
図3の読み出しプロセス300を参照すると、コントローラ111は、ホスト101から所与の読み出し要求を受信する(ステップ301)。読み出し要求は、コントローラ111がデータを読み出すアドレスを含む。この位置はPBA又はLBAとして指定されてもよく、この場合、コントローラ111はLBAをPBAに変換する。
【0048】
コントローラ111は、読み出し要求によって指定されたアドレスで記憶媒体115からペイロードをフェッチし(ステップ303)、ペイロードを、そのデータと書き込みプロセス200でデータと共に格納された次の位置とにパースする(ステップ305)。データは、ホスト101に返されてもよく(ステップ306)、一方、次の位置は、次のデータをプリフェッチするために使用される(ステップ307)。
【0049】
プリフェッチステップは必ずしも行われる必要はないことが理解されよう。むしろ、ペイロードがヌル値を含むか、又は次の位置を含まない場合、コントローラ111はデータをプリフェッチしようと試みなくてもよい。別の任意の一例では、読み出し要求がランダム読み出し要求でない場合、コントローラ111はパースステップ及びプリフェッチステップを行わなくてもよい。すなわち、コントローラ111は、ステップ305及びステップ307に進む前に、読み出し要求がランダム読み出し要求であるかどうかを最初に判定してもよい。コントローラ111は、読み出し要求がランダム読み出しであることを自ら確認してもよいが、ホスト101によってその事実を知らされてもよい。
【0050】
次の位置のアドレス及びプリフェッチされたデータをバッファリングして、後続の読み出し要求を受信した時に利用可能となるようにしてもよい。いくつかの実施態様では、ペイロードが2つ以上の次のアドレスを含んでもよく、その場合、コントローラは複数の位置からデータをプリフェッチ及びバッファリングしてもよい。その場合、複数の「次のアドレス」もバッファリングされる。
【0051】
コントローラ111は、後続の読み出し要求のアドレスをバッファ内の次のアドレス(又は、バッファ内に存在する場合には複数の次のアドレス)と比較して、それらが同じであるかどうかを判定してもよい。その場合、コントローラ111は、プリフェッチされたデータをフェッチする必要がなく、代わりに後続の読み出し要求に応答してホスト101に返してもよい。
【0052】
図1に示す例示的なシナリオを再び参照すると、ホスト101は、書き込み要求121を記憶デバイス110に提出する。書き込み要求121は、データd1及びアドレスL1を有する第1の要求を含む。第2の要求は、データd2及び位置L2を含み、第nの要求は、データdn及び位置Lnを含む。
【0053】
コントローラ111は、書き込みプロセス200を第1の書き込み要求に適用して、記憶媒体115に書き込まれるペイロード123を生成する。コントローラ111は、第1の要求のデータ及び第2の要求のアドレスから、ペイロードd1_L2を生成する。ペイロードは、記憶媒体115に書き込まれる。同様に、コントローラ111は、第2の要求のペイロードd2_L3を生成する。第nの要求の生成されたペイロードは、第nの要求からのデータ及びキュー内の次の書き込み要求の位置、又はdn_Ln+を含む。
【0054】
ホスト101はまた、読み出し要求125で表される読み出し要求を提出する。読み出し要求125は、例えばランダム読み出し要求を表してもよい位置L1を特定するが、他の種類の読み出しも可能である。
【0055】
コントローラ111は、ホスト101からの読み出し要求に応答し、読み出しプロセス300を適用して、ペイロード127をフェッチ(及びプリフェッチ)する。例えば、コントローラ111は、上述の第1の書き込み要求のペイロードである位置L1又はd1_L2からペイロードをフェッチする。
【0056】
コントローラ111は、ペイロードをパースして次の位置L2を取得する。ペイロードのデータ部分(d1)は、ホスト101に返されてもよい。コントローラ111はまた、L2宛ての別の読み出し要求を予測して、位置L2でペイロードをプリフェッチする。そのペイロードも、データ部分(d2)と位置部分(L3)とにパースされる。
【0057】
コントローラ111は、L2宛ての別の読み出し要求が受信された場合に、データをフェッチする必要なく、データd2を含む応答を直ちに返してもよい。しかしながら、データd2は、L2宛ての読み出し要求が受信されない場合には、一定期間後に破棄又は上書きされてもよい。コントローラは、任意選択的に、ペイロードを位置L3でプリフェッチし、次いで、制約限界に達するまで位置Ln+・・・で再度プリフェッチしてもよい。
【0058】
図4は、本明細書に開示する改良された先読み技術の様々なタイミングの局面を説明する実施形態における動作シナリオ400を示す。動作シナリオ400は、ホスト401、書き込みキュー403、読み出しキュー404、コントローラ405、及び媒体407を含む。別々に図示されているが、書き込みキュー404及び読み出しキュー404は、コントローラ405に対して外部又は内部のいずれに実装されてもよい。他の要素、接続などが含まれてもよいが、明確化の目的で図示されていないことが理解されよう。
【0059】
動作時に、ホスト401は、w1(d1、L1)及びw2(d2、L2)で表される2つの書き込み要求を書き込みキュー403に送信する。要求は、ホスト401とキューとの間の直接通信として示されているが、書き込みキュー403に到達する前にコントローラ405などの他の物理的な又は論理的な要素を経由してもよいことが理解されよう。
【0060】
コントローラ405は、キューで受信される一般的な順序で書き込み要求を実行する。したがって、コントローラ405は、最初にw1を、続いてw2を実行する。第1の書き込み要求に関して、コントローラ405は、次の書き込み要求のアドレス、すなわちw2を特定するためにキューを調べる。L2が既知である場合、コントローラ405は、d1及びL2を含むw1のペイロードを生成する。次いで、コントローラ405は、第1の書き込み要求によって指定された媒体407の位置L1にd1及びL2を書き込む。
【0061】
コントローラ405は次いで、キューの一般的な順序に従って第2の書き込み要求を処理する。例示の目的で、第3の書き込み要求が書き込みキュー403内でw2の後ろにあり、L3にアドレス指定されていると仮定する。したがって、コントローラ405は、d2及びL3を含むw2のペイロードを生成する。ペイロードは次いで、媒体407内のL2に書き込まれる。
【0062】
その後、書き込みが完了した後に、ホスト401は、以前にw1について書き込まれたデータを取得するために読み出し要求を提出してもよい。データを取得するアドレスを指示する読み出し要求が読み出しキュー404に追加される。コントローラ405は、データ(d1)及び次の位置(L2)を含む、指示されたアドレスに格納されたペイロードをフェッチする。
【0063】
コントローラ405は、ペイロードをそのデータと位置構成要素とにパースし、データ部分をホスト401に返す。この位置部分を使用して、コントローラ405は位置L2でペイロードをプリフェッチする。ペイロードは、データ(d2)及び別の「次の」位置(L3)を含む。コントローラ405は、データと共に格納された位置ではなく、データを取得した位置(L2)と共にデータをバッファリングする。コントローラ405は、任意選択的に、L3に格納されたペイロードに対して別のプリフェッチを実行することができる。
【0064】
ホスト401は、後続の読み出し要求を送信する。コントローラ405は、これに応答して、後続の読み出し要求内の位置をバッファに格納された位置と比較する。この例では、双方のアドレスがL2を反映する。このように、コントローラ405は、媒体407からデータをフェッチする必要なく、バッファリングされたデータd2で読み出し要求に応答することができる。
【0065】
図5は、マルチスレッド環境において適用される、改良された先読み技術の別の一実施形態におけるコンピューティングシステム500を示す。コンピューティングシステム500は、ホスト501及び記憶デバイス510を含む。ホスト501は、記憶デバイス510にデータを書き込み、記憶デバイス510からデータを読み出すことができる任意のマルチスレッドサブシステムを表す。記憶デバイス510は、データの読み出し及び書き込みの目的でホスト501に内部又は外部で接続することの可能な任意のデバイスを表す。
【0066】
スレッド502及びスレッド504は各々、マルチスレッド環境で利用可能であってもよい様々なスレッドを表す。各スレッドは、ホスト501内で実行される異なるアプリケーション、ユーティリティ又はコンポーネントにランタイムで動的に割り当てられてもよい。スレッドは、(スレッド502に関連付けられた)要求522及び(スレッド504に関連付けられた)要求524で表される読み出し要求を記憶デバイス510に提出する。
【0067】
ホスト501は、接続503を介して記憶デバイス510と通信を行う。接続503は、ホスト501と記憶デバイス510とを通信可能に結合する1つ以上の物理的相互接続を表す。ホスト501は、(これらに限定されないが)シリアルATA(SATA)、ファイバチャネル、ファイアワイヤ、シリアルアタッチドSCSI(SAS)、アドバンスド・テクノロジー・アタッチメント/インテグレーティド・ドライブ・エレクトロニクス(ATA/IDE)、ユニバーサル・シリアル・バス(USB)、及びPCI Express(PCIe)などの記憶デバイス510と通信する際に、1つ以上のインターフェースプロトコルを利用してもよい。
【0068】
記憶デバイス510は、コントローラ511及び媒体515を含む。コントローラ511は、媒体515に対する読み出しプロセス及び書き込みプロセスを制御する1つ以上の処理要素を表す。コントローラ511は、図6及び図7にそれぞれより詳細に記載される書き込みプロセス600及び読み出しプロセス700を実行することが可能である。媒体515は、データの書き込み及び読み出しが可能な任意の不揮発性媒体である。例としては、限定するものではないが、NANDフラッシュ媒体、DRAM媒体、相変化媒体、磁気媒体、及び光学媒体が挙げられる。接続513は、コントローラ511と媒体515とを結合する1つ以上の相互接続を表す。
【0069】
動作時に、ホスト501は、読み出し要求及び書き込み要求をコントローラ511に送信する。コントローラ511は、書き込み要求を処理する時は書き込みプロセス600を実行し、読み出し要求を処理する時は読み出しプロセス700を実行する。以下は、書き込みプロセス600及び読み出しプロセス600の詳細な説明であり、それぞれ図6及び図7のステップを補足的に参照する。
【0070】
図6を参照すると、コントローラ511は、ホスト501から複数の書き込み要求2を受信する(ステップ501)。各書き込み要求は、書き込まれるデータと、媒体515上のどこにデータを書き込むかを示す位置とを含む。位置は、物理ブロックアドレス(PBA)、論理ブロックアドレス(LBA)、又は任意の他の好適なアドレスによって指定されてもよい。場合によっては、この位置は、書き込み要求自体ではなく、ホスト501によって別々に指定されてもよく、又は書き込み要求を受信した時にコントローラ511によって決定されてもよい。
【0071】
コントローラ511は、書き込み要求ごとにそれ以降の次の要求に関連付けられたスレッドを特定する(ステップ603)。スレッドは、次の書き込み要求で特定されてもよく、又は他の何らかの方法で決定されてもよい。コントローラ511は、現在の要求に関連付けられたスレッドを、次の要求に関連付けられたスレッドと比較して、それらが同じであるか否かを判定する(ステップ605)。
【0072】
スレッドが同じである場合、コントローラ511は、現在の要求のデータ及び次の書き込み要求の次のアドレスから構成されるペイロードを生成する(ステップ607)。ペイロードは次いで、指示されたアドレスに書き込まれる(ステップ609)。しかしながら、スレッドが同じではない場合、コントローラ511は、単にデータを指示されたアドレスに書き込む(ステップ606)ことにより、ペイロードを生成するステップを回避してリソースを節約する。
【0073】
図7を参照すると、コントローラ511は、ターゲットアドレスを特定する読み出し要求を受信する(ステップ701)。これに応答して、コントローラ511は先読みフラグをチェックし、以前の読み出し要求について情報がバッファリングされていたか否かを判定する(ステップ703)。フラグが有効である場合、コントローラ511は、バッファに格納されているアドレスに対して要求内のターゲットアドレスを評価する(ステップ705)。それらが同じである場合、コントローラは、以前の読み出し要求の処理においてプリフェッチされたバッファからデータを読み出してもよい(ステップ706)。
【0074】
アドレスが同じではない場合、コントローラ511は次いで、読み出し要求内の指定されたアドレスでペイロードをフェッチする(ステップ707)。コントローラ511は、ペイロードを、少なくともデータを含むその構成部分と、対象データの後に書き込まれる次のデータに関係するアドレスとにパースする(ステップ709)。
【0075】
コントローラ511は、これらのデータを手持ちのデータと共にホスト501に読み出してもよい(ステップ710)。コントローラ511はまた、次のアドレスが記憶装置に書き込まれなかったことを示すヌル又は他の何らかの値であるかどうかをチェックする(ステップ711)。これは、例えば、所与の書き込み要求に続く次の書き込み要求が同じスレッドから発生したものではない場合であり得る(図6に関する上記のステップ605を参照)。
【0076】
次のアドレス値がヌルである場合、コントローラ511は、後続の読み出し要求を受信した時にアドレスを比較するステップをスキップすることができるように、フラグを無効に設定する(ステップ712)。次のアドレスがヌルでない場合、コントローラ511は、後続の読み出し要求内のターゲットアドレスを比較することができるように、フラグ値を有効に設定する(又は維持する)(ステップ713)。
【0077】
フラグを設定すると、コントローラ511は、対象ペイロードからパースされた次のアドレスの位置に格納されたペイロードをプリフェッチする(ステップ715)。コントローラ511は、プリフェッチされたペイロードからの次のデータを、次のデータに対応するアドレスと共にバッファに格納する(ステップ717)。次のアドレスを、読み出しプロセス700がステップ705に戻る時に、後続の読み出し要求に含まれる後続のターゲットアドレスと比較してもよい。
【0078】
図8は、改良された先読み技術の書き込み側の実装における動作アーキテクチャ800及び関連する例示的なシナリオを示す。図8図9A、及び図9Bは、改良された頭読み技術の読み出し側の実装における動作アーキテクチャ900並びに関連する例示的なシナリオを示す。2つのアーキテクチャは、SSD、ハイブリッドHDD/SSDなどの好適な記憶デバイスにおいて(冗長要素なしで)組み合わせることができることが理解されよう。
【0079】
図8を参照すると、動作アーキテクチャ800は、書き込みキュー810、媒体810並びに、位置特定モジュール801、受信モジュール803及び書き込みモジュール805で表される様々な動作モジュールを含む。位置特定モジュール801、受信モジュール803及び書き込みモジュールは、ハードウェア、ファームウェア、又は他のソフトウェア、並びにこれらの任意の変形又は組み合わせで実装されてもよい。書き込みキュー810は、媒体830の外部に実装されてもよいが、内部に実装されてもよい。いずれの場合も、書き込みキュー810は、位置特定モジュール801、受信モジュール803及び書き込みモジュール805のうちの1つ以上にアクセス可能である。動作アーキテクチャ800が、システムバス、インターフェース及び相互接続などの、明確化のために省略される他の要素を含んでもよいことが理解されよう。
【0080】
動作時に、書き込み要求は、ホスト(図示せず)から書き込みキュー810に受信され、キュー内の順序又は位置を占める。書き込み要求は、位置811の要求w1、位置813の要求w2、位置815のw3及び位置817の要求nによって表される。したがって、書き込み要求は、w1、w2、w3、wnなどの順序で処理される。
【0081】
受信モジュール803は、書き込み要求が実行のために書き込みキュー810から送信されると、これらの書き込み要求を受信する。一例として、受信モジュール803は、要求w1を受信し、これを書き込みモジュール805に渡す。要求w1は、データ(d1)と、データの書き込み先の位置特定情報(L1)とを含む。
【0082】
位置特定モジュール801は、書き込みキュー810を調べて、対象の書き込み要求の後のキュー内の、この場合はw2である次の書き込み要求の位置を特定する。w2の位置はL2であり、したがって位置特定モジュール801はL2を書き込みモジュール805に渡す。書き込みモジュール805は、受信モジュール803からの情報及び位置特定モジュールからの情報の両方を受信し、L1に書き込まれるペイロードを生成する。この例では、ペイロード831はd1とL2との組み合わせである。
【0083】
同様の動作が、キュー内の他の書き込み要求に対して実行される。ペイロード833は、w2と関連付けて生成され、データd2及び位置L3を含む。ペイロード835は、w3と関連付けて生成され、データd3及び位置L4を含む。最後に、ペイロード837は、wnと関連付けて生成され、データdn及び位置Ln+を含む。このようにして、読み出しプロセス中にペイロードを調べ、適切な場合にはプリフェッチすることで、読み出しプロセスを加速させてもよい。
【0084】
図9Aを参照すると、動作アーキテクチャ900は、読み出しキュー950、媒体910並びに、比較モジュール941、読み出しモジュール943及びバッファ947で表される様々な動作モジュールを含む。読み出しモジュール943がパースモジュール945を含んでもよいが、パースモジュールが読み出しモジュール943の外部に実装されてもよい。比較モジュール941、読み出しモジュール943、バッファ947及びパースモジュール945は、ハードウェア、ファームウェア、又は他のソフトウェア、並びにこれらの任意の変形又は組み合わせで実装されてもよい。読み出しキュー910は、媒体930の外部に実装されてもよいが、内部に実装されてもよい。いずれの場合も、読み出しキュー910は、比較モジュール941、読み出しモジュール943及びバッファ947のうちの1つ以上にアクセス可能である。動作アーキテクチャ900が、システムバス、インターフェース及び相互接続などの、明確化のために省略される他の要素を含んでもよいことが理解されよう。
【0085】
動作時に、読み出し要求がホストから読み出しキュー950に受信される。読み出し要求は、図9Aではr1、図9Bではr2及びr3で表される。要求は、位置951、位置953及び位置955でそれぞれ表される、キュー内の順序又は位置を有する。読み出し要求は、例示の目的で順次読み出し要求ではなくランダム読み出し要求とされているが、順次読み出し要求がランダム読み出し要求の間に散在する可能性がある。
【0086】
キューから読み出し要求が取得され、比較モジュール941に送信される。比較モジュール941は、所与の読み出し要求内のアドレスを、(存在する場合には)バッファ947内にバッファリングされたアドレスと比較して、対象データをフェッチする必要があるか、又は既にプリフェッチされているかを判定する。この例では、読み出し要求r1は位置L1に関連している。L1をバッファ947内のLxと比較する。これらが一致しないので、比較モジュール941はアドレスを読み出しモジュール943に渡す。
【0087】
読み出しモジュール943責任のあるは位置L1からペイロード931をフェッチする。パースモジュール945は、ペイロードをその構成部品d1とL2とにパースする。読み出しモジュール943は、d1をホストに戻し、ペイロード933をL2からプリフェッチすることができる。ペイロード933は、データd2及び位置L3を含む。データd2は、バッファ947に送信され、位置L2に関連付けて格納される。
【0088】
図9Bは、図9Aで開始された例示的シナリオの続きを示す。図9Bでは、読み出し要求r2が受信され、比較モジュール941によってキューから取り出される。ここで、比較モジュール941は、r2内のターゲットアドレスがバッファ947内の格納されているアドレスと同じであると判定する。したがって、比較モジュール941は、バッファ942からホストにデータd2を読み出すように読み出しモジュール943に指示する。このステップでは、読み出しモジュール943を省略することができる。
【0089】
位置L2のペイロードはL3の次のアドレスを参照しているので、読み出しモジュールは、L3のペイロード935を任意選択的にプリフェッチすることができる。そうする場合には、パースモジュールはペイロード935をパースしてデータd3を取得する。データd3及び位置L3は、バッファ947に格納され、1つ以上の後続の読み出し要求と比較される。
【0090】
図10は、本明細書に開示される改良された先読み技術が、様々な動作条件に基づいて動的に有効化及び無効化される一実施形態における電力制御プロセス1000を示す。ソリッド・ステート・ドライブ又は他の好適な記憶デバイス内のコントローラが、ハードウェア、ファームウェア、又は他のソフトウェアで実装され得る電力制御プロセス1000を用いてもよい。
【0091】
動作時に、所与のコントローラが、改良された読み出しプロセスにおいて行われる先読み試行のヒット率を追跡する(ステップ1001)。ヒット率は、プリフェッチされたデータが後続の読み出し要求によって実際に要求される割合に関連してもよい。例えば、第1の位置宛ての最初の読み出し要求が、第2の位置を特定するペイロードをもたらしてもよい。次いで、第2の位置のデータは、第2の位置をターゲットとしても(又はしなくても)よい任意の後続の読み出し要求よりも前にプリフェッチされる。次の読み出し要求が第2の位置宛てである場合には、プリフェッチはヒットと見なされ、一方、次の読み出し要求が別の位置宛てである場合には、プリフェッチはミスと見なされる。
【0092】
コントローラは、プリフェッチされたデータが後続の読み出し要求の対象になる回数をカウントすることによって、プリフェッチ動作の成功率を追跡してもよい。コントローラはまた、ヒット率が所定の閾値を下回るか否かを分析してもよい(ステップ1003)。
【0093】
ヒット率が閾値以上のままである場合、コントローラは、先読みプロセスが有効な状態で動作し続けてもよい。ヒットレートが閾値を下回ると、コントローラは先読みプロセスを無効にする(ステップ1005)。
【0094】
先読みプロセスを再有効化するために、コントローラは、1つ以上の他の条件を定期的に評価する(ステップ1006)。例えば、先読みは一定期間無効にされ、有効期限になると自動的に再有効化されてもよい。別の一例では、バッテリレベル又は他の電力条件が満たされるまで、先読みが無効化されたままであってもよい。それまで、コントローラは先読みプロセスが無効な状態で動作する。
【0095】
先読み試行の失敗の割合が高い場合に先読みプロセスを無効にすることで、電力、処理サイクル、又は他のリソースを節約することができる。条件の変化に応じてプロセスを再有効化することで、デバイスが先読みの利点を取り戻すことができる。
例示的な動作コンテキストの物理的説明:データ記憶システム
【0096】
データの読み出し及び書き込みの目的でホスト1150に接続することの可能な、ソリッド・ステート・ドライブ(SSD)及び/又はハード・ディスク・ドライブ(HDD)及び/又はハイブリッドSSD-HDDドライブあるいは任意の他の種類の記憶デバイス又はそれらの変形もしくは組み合わせなどの複数のデータ記憶デバイス(data storage device:DSD)が共通のエンクロージャ内に収容され得る大容量のデジタルデータ記憶システムが商業的に求められている。データ記憶システムは、多くの場合、複数のDSD列がその上に取り付けられた複数のシェルフを収容する大きなエンクロージャを含む。
【0097】
前述のように、ランダム読み出し性能は、データ記憶デバイスの性能を制限する要因であり、読み出しプロセスに待ち時間を生じさせ、そのためにデバイスの全体的な性能に影響を及ぼすおそれがある。したがって、次にどのアドレスが読み出されるのかを予測する手段は、時間を節約し、デバイス全体の待ち時間の短縮につながると考えられる。このように、どのデータが次にコントローラから要求されるかを予測し、「先読み」(又は「プリフェッチ」)を開始する方法は、ランダム読み出し性能を向上させ、デバイスの待ち時間を短縮することができる。
【0098】
図11は、一実施形態に係る、簡略化されたコンピューティングシステムのアーキテクチャを示すブロック図である。例示するコンピューティングシステムアーキテクチャは、複数のデータ記憶デバイス(DSD)1104a(DSD1)、1104b(DSD2)、及び1104n(DSDn)(集合的に1104a~1104n)を含むデータ記憶システム1100を含み、nは実装ごとに異なってもよいDSDの任意の数を表す。各DSD1104a~1104nは、対応する通信又はインターフェースプロトコル1115に従って、それぞれの通信インターフェース1114を介してシステムコントローラ1102と通信を行い、システムコントローラ1102のある程度のレベルの監視制御下にある。各DSD1104a~1104nは、対応する不揮発性メモリ(non-volatile memory:NVM)1106(例えば、典型的には、SSDの場合はNANDフラッシュメモリの形態であり、HDDの場合は回転磁気ディスク媒体の形態である)との間でどのようにデータの書き込み及び読み出しが行われるのかを監督するそれぞれのDSDメモリコントローラ1108によって制御される、対応するNVM1106を含む。
【0099】
データ記憶システム1100のシステムコントローラ1102は、少なくともメモリ1110、プロセッサ1112及び読み出しキュー1113を含む。読み出しキュー1113は、ホスト1150からの読み出し要求を受信し、及び/又は読み出し要求によって追加され、読み出し要求は、(例えば、論理ブロックアドレス又は「LBA」、あるいは物理ブロックアドレス又は「PBA」を介して)要求されたデータを取得するか又は読み出すNVM 1106内の位置を指示することによって、対応するDSDコントローラ1108が所与の読み出し要求によって指示される適切なNVM 1106メモリ位置からデータをフェッチすることを可能にしてもよい。読み出しキュー1113は、内部に別個に図示されているが、システムコントローラ1102の外部又は内部のいずれに実装されてもよく、あるいはメモリ1110内に実装されてもよい。他の要素、接続などがシステムコントローラ1102に関与し得るが、明確化の目的で本明細書には図示されていないことが理解されよう。
【0100】
システムコントローラ1102又はDSDメモリコントローラ1108によって実行又は実行可能であるものとして本明細書で説明される処理、機能、手順、動作、方法ステップなどは、1つ以上のメモリユニットに格納され、1つ以上のプロセッサによって実行されるとそのような実行を引き起こす命令の1つ以上のシーケンスを実行することによる実行を含んでもよい。システムコントローラ1102及びDSDコントローラ1108は、ソフトウェア、ハードウェア、及びファームウェアの任意の形態及び/又は組み合わせで具現化されてもよい。例えば、システムコントローラ1102は、そのような命令(非限定的な例として、ファームウェアなど)を格納するための少なくとも1つのメモリユニット(例えば、メモリ1110)と、そのような命令を実行するための少なくとも1つのプロセッサ(例えば、プロセッサ1112)とを含む特定用途向け集積回路(ASIC)を備え、本明細書の他の箇所に記載されているような先読み機能を可能にしてもよい。
【0101】
データ記憶システム1100は、ホスト1150と通信可能に結合されてもよく、ホストは、実行可能コードが実行されるハードウェアマシン(非限定的な例として、コンピュータもしくはハードウェアサーバなど)内で、又は1つ以上のプロセッサ(非限定的な例として、ストレージサーバ、ファイルサーバ、データベースサーバ、アプリケーションサーバ、メディアサーバなどのソフトウェアサーバなど)によって実行可能なソフトウェア命令として具現化されてもよい。ホスト1150は、一般に、データ記憶システム1100のクライアントを表し、データ記憶システム1100との間で読み出し要求及び書き込み要求(入出力又は「IO」)を行う能力を有する。システムコントローラ1102は、データ記憶デバイス又はDSD1104a~1104nなどのデバイスのアレイにIO呼び出しを行う任意のデバイスに関して「ホスト」という用語がしばしば使用されることから、「ホスト」とも称され得ることに留意されたい。ホスト1150は、これらに限定されないが、シリアルATA(SATA)、ファイバチャネル、ファイアワイヤ、シリアルアタッチドSCSI(SAS)、アドバンスド・テクノロジー・アタッチメント/インテグレーティド・ドライブ・エレクトロニクス(ATA/IDE)、ユニバーサル・シリアル・バス(USB)、PCI Express(PCIe)などのデータ記憶システム1100と通信する際に、1つ以上のインターフェースプロトコルを利用してもよい。
以前の読み出し動作に基づくメタデータヒントを使用した読み出し予測
【0102】
分析によれば、ランダム読み出しログは、かなりの量の反復パターンを示す。一実施形態では、「先読み」の1つのアプローチが、現在の読み出しアドレスのメタデータに次の読み出しコマンドアドレスを保存することを含む。このメタデータ更新は、一実施形態では、メモリ位置の読み出しとその中への新しい値の書き込みとの両方をアトミック操作として同時に行う従来の「リード・モディファイ・ライト」操作によって実行されてもよい。先読みのこのアプローチは、一般に、受信する読み出しコマンドごとに、以前の読み出しコマンドのメタデータを現在の読み出しコマンドの位置(及びサイズ)への指示(例えば、「ヒント」)で更新することを含んでもよい。その後、この情報を、将来、すなわち、同じ読み出しコマンドを受信した時に、将来のランダム読み出しコマンドのプリフェッチを実行するために使用することができる。したがって、サービス品質(QoS)パラメータを大幅に向上させることができる。すなわち、(例えば、コマンドの受信から完了ポスティングまでなどの)コマンド実行待ち時間において、先読み予測ヒット率が高い場合、媒体からの事前の読み出しによってコマンド実行の待ち時間が短縮される。したがって、コマンド実行待ち時間などの形のQoSは、例えば、ホストがデバイスに(例えば最大8個などの)少数の未処理コマンドしか一度に送信しない低キュー深度シナリオにおいては、特に注目に値するパラメータである。
【0103】
図12は、一実施形態による、読み出し時間を短縮するアプローチを説明するブロック図である。例えば、このようなプロセスは、マルチアプリケーション及び/又はマルチホストメモリシステム環境内で実施されてもよい。このアプローチ又は動作は、(i)ランダム読み出し動作の基礎となるパターン発見又は特定し、プロセス間を区別すること、及び(ii)データ/メタデータを予測及び更新することの2つのプロセスを含むように実施されてもよい。
【0104】
図12は、複数のホスト読み出し要求又はコマンドがその中に配置又は一時的に格納されて処理を待機している読み出しキュー1113を示す。例えば、一連の受信された読み出し要求「Read n」、「Read n+1」、「Read n+x」が読み出しキュー1113内に図示されており、nは、処理のための次の(すなわち、キューの先頭にある)読み出し要求を表し、xは、任意の所与の時点で読み出しキュー1113内に保持されている任意の数の読み出し要求を表す。一実施形態では、現在の読み出し要求「Read n」(プロセス1202としてラベル付けされている)を反復的に処理することは、ブロック1203において、要求「Read n」の送信元の(例えば、図11のホスト1150上で実行する)アプリケーションを識別するアプリケーション識別子(「ID」)に基づき、読み出しキュー1113から処理された読み出し要求の集合から読み出しパターンをソートすることを含む。例えば、コントローラ1102(図11)は、アクティブな現在のアプリケーションIDのテーブルを維持してもよく、コントローラ1102は、所与のアプリケーションIDに関連付けられた読み出し要求の受信に応答して、そのアプリケーションIDに関連付けられた次の読み出し要求「Read n+1」の読み出しキュー1113を監視する。したがって、ブロック1204において、アプリケーションIDごとに対応する読み出しパターンが決定又は特定される。
【0105】
ブロック1205において、ブロック1204で特定された読み出しパターンから、一実施形態に係る書き込み要求、コマンド又はパターンを除いて(例えば、読み出し要求及び書き込み要求は、多くの場合、システム性能能力/メトリックの面で別々に考慮されるため)、次の読み出し要求が予測される(「Read n+1」の予測)。そこから、ブロック1206において、ブロック1205の次の読み出し要求予測に基づき、「Read n+1」に対応する次の記憶アドレスを含む、「Read n」に対応するメタデータ1207に対する更新が、NVM 1106にプッシュ又は格納される。すなわち、「Read n」要求に対応するNVM 1106内のメタデータ1207は、次の読み出し要求、すなわち「Read n+1」要求から取得された次のデータ記憶アドレスで更新される。一実施形態では、上述のように、ホスト書き込みコマンドに応答してではなく、例えば読み出しキュー1113からの「Read n+1」要求の処理に応答して、ブロック1206で「Read n」メタデータ更新が「リード・モディファイ・ライト」操作を利用してNVM 1106にプッシュされる。したがって、「余分な」書き込み動作を追加しながら、結果として将来の読み出し性能に関する利点が得られる。更に、一実施形態では、「Read n」要求に対応するメタデータ1207内で更新される次のデータ記憶アドレスは、(例えばPBAなどの)物理アドレスではなく、(例えばLBAなどの)論理アドレスであり、したがって、ガベージコレクション中にNVM 1106内のメタデータ1207を更新しなければならないことに伴うパフォーマンスヒットが回避される。
【0106】
したがって、上記に基づいて、別の「Read n」読み出し要求がコントローラ1102(図11)によって処理されるたびに、次の読み出し要求「Read n+1」の記憶位置(例えば記憶アドレス)の「ヒント」又は予測を「Read n」に関連付けられたメタデータ1207から入手することが可能であり、「Read n+1」データを、後続の読み出し要求を処理する前にNVM 1106(図11)からプリフェッチすることができる。したがって、読み出しパターンに基づく予測が正確である場合は、「Read n+1」であると予想される次の読み出し要求に対応するデータは、既にコントローラ1102に利用可能となっており、その時点で応答読み出しコマンドを実行する必要がない。一実施形態によれば、(ブロック1203で)読み出し要求がそれぞれのアプリケーションIDに基づいてソートされていることを考慮して、「Read n」に対応するNVM 1106内のメタデータ1207は、同じアプリケーションIDに対応する「Read n」及び「Read n+1」の両方に応答してのみ、「Read n+1」の次の記憶アドレスを含むように更新される。
【0107】
一実施形態によれば、以前の「Read n+1」から特定されたNVM 1106の次の記憶位置からの「次のデータ」1209は、読み出しキュー1113に対応するアイドル1208処理時間の発生に応答してフェッチされる。関連する一実施形態では、アイドル1208時間中にプリフェッチされたものなどの予測される次の読み出し要求「Read n+1」に対応する次のデータ1209は、ブロック1210において、キャッシュバッファ1211内に配置又は格納される(例えば、メモリ1110内に実装されてもよい)。したがって、次の読み出し要求「Read n+1」に対応するデータは、次の読み出し要求「Read n+1」を再び受信したことに応答して、読み出しコマンドを実行する必要なしにキャッシュバッファ1211内で既に利用可能となっており、したがって、キャッシュバッファ1211から直接ホスト1150(図11)に返すことができる。
【0108】
実装アーキテクチャの問題として、複数のアプリケーションIDについて前述の手順を維持するために、いくつかの「トラッカ」プロセス又は処理スレッドを維持し、各それぞれのトラッカがそれ自体のアプリケーションID及び対応する読み出し要求の受信、並びに対応する「先読み」要求及び/又はメタデータ更新を処理できるようにすることが好ましい。
データのプリフェッチ方法
【0109】
図13は、一実施形態におけるデータのプリフェッチ方法を示すフロー図である。図13のプロセス又は手順を、1つ以上のメモリユニットに格納され、1つ以上のプロセッサによって実行されるとプロセスの実行を引き起こす命令の1つ以上のシーケンスとして実行するために実装してもよい。例えば、1つ以上のメモリユニット(例えば、図11のメモリ1110、又はファームウェアに固有の読み出し専用メモリ(ROM))に格納され、1つ以上のプロセッサ(例えば、図11のシステムコントローラ1102のプロセッサ1112)によって実行されると、図13に示すプロセスを実行及び/又は実行させることができる命令のシーケンス。
【0110】
ブロック1302において、対応するデータ記憶アドレスを含む読み出し要求がホストから受信され、読み出し要求が読み出しキュー内に配置される。例えば、読み出し要求「Read n」(図12)がホスト1150(図11)から読み出しキュー1113(図11図12)に受信される。
【0111】
ブロック1304において、対応する次のデータ記憶アドレスを含む次の読み出し要求がホストから受信され、次の読み出し要求が読み出しキュー内に配置される。例えば、読み出し要求「Read n+1」(図12)がホスト1150から読み出しキュー1113に受信される。
【0112】
ブロック1306において、不揮発性メモリ内の読み出し要求に対応するメタデータが、次の読み出し要求からの次のデータ記憶アドレスで更新される。例えば、読み出し要求「Read n」に対応するメタデータ1207は、NVM 1106内で、次の読み出し要求「Read n+1」からの次のデータ記憶アドレスで更新される。
【0113】
ブロック1308において、ホストからの読み出し要求を再度受信することに応答して、読み出し要求に対応するメタデータから次のデータ記憶アドレスが不揮発性メモリから読み出される。例えば、読み出し要求「Read n」をホスト1150から再度受信することに応答して、読み出し要求「Read n」に対応するメタデータ1207(図12)からの次のデータ記憶アドレスがNVM 1106から読み出される。
【0114】
ブロック1310において、読み出しキューからの後続の読み出し要求を処理する前に、次のデータ記憶アドレスからの次のデータがフェッチされる。例えば、ブロック1308でNVM 1106から読み出される次のデータ記憶アドレスからの次のデータは、読み出しキューからの後続の読み出し要求を処理する前に、すなわち、後続の読み出し要求が実際に読み出し要求「Read n+1」となることを予測してフェッチされる。
【0115】
図14は、一実施形態における、データを読み出しキューにプリフェッチする方法を示すフロー図である。図13と同様に、図14のプロセス又は手順を、1つ以上のメモリユニットに格納され、1つ以上のプロセッサによって実行されるとプロセスの実行を引き起こす命令の1つ以上のシーケンスとして実行するために実装してもよい。例えば、1つ以上のメモリユニット(例えば、図11のメモリ1110、又はファームウェアに固有の読み出し専用メモリ(ROM))に格納され、1つ以上のプロセッサ(例えば、図11のシステムコントローラ1102のプロセッサ1112)によって実行されると、図13のプロセスの任意の継続プロセス及び/又は拡張プロセスとして理解することができる図14に示すプロセスを実行及び/又は実行させることができる命令のシーケンス。
【0116】
ブロック1402において、読み出しキューに関連付けられた、又は対応するアイドル処理時間の発生に応答して、次のデータ記憶アドレスからの次のデータがフェッチされる。例えば、NVM 1106から読み出される次のデータ記憶アドレスからの次のデータは、読み出しキュー1113内の後続の読み出し要求が読み出し要求「Read n+1」となることを予測して、アイドル時間中にNVM 1106からフェッチされる。
【0117】
ブロック1404において、次のデータ記憶アドレスからの次のデータがキャッシュバッファ内に配置される。例えば、ブロック1402でフェッチされた次のデータは、読み出し要求「Read n」に関連付けられたメタデータ1207から(元々は読み出し要求「Read n+1」から)の次のデータ記憶アドレスに基づいて、キャッシュバッファ1211に格納される。
【0118】
ブロック1406において、ホストから次の読み出し要求を再度受信することに応答して、次のデータがキャッシュバッファ1211からホストに返される。例えば、ホスト1150から次の読み出し要求「Read n+1」を再度受信することに応答して、次のデータがキャッシュバッファ1211から読み出され、ホスト1150に戻される。
【0119】
このような改良された先読み技術は、上述の記載及び例示から明らかであり得るように、様々な技術的利点を提供する。例えば、予測される次の読み出し要求よりも前にデータをプリフェッチすることで、読み出しが高速化する。このことが、これらのデータが媒体上に散在しているために、完了までの時間量が長いランダム読み出しの場合に特に有益であってもよい。
【0120】
本発明の態様が、システム、方法、又はコンピュータプログラム製品として具現化されてもよいことは、当業者に理解されよう。よって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様及びハードウェアの態様を組み合わせた実施形態の形をとってもよく、これら全ては概して本明細書において「回路」、「モジュール」、又は「システム」として参照され得る。更に、本開示の態様は、コンピュータ可読プログラムコードがその上で具現化されている1つ以上のコンピュータ可読媒体において具現化されるコンピュータプログラム製品の形を取ってもよい。
【0121】
含まれる説明及び図は、当業者に最良の形態を作製及び使用する方法を教示するための特定の実施形態を描写する。本発明の原理を教示する目的で、いくつかの従来の態様は、簡略化又は省略されている。当業者は、本開示の範囲内に含まれるこれらの実施形態からの変形を理解するであろう。当業者であれば、上記の特徴を様々な手法で組み合わせて、複数の実施形態を形成してもよいことも理解するであろう。その結果、本発明は、上述の特定の実施形態に限定されるものではなく、特許請求の範囲及びそれらの均等物によってのみ限定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10
図11
図12
図13
図14