(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5943096
(24)【登録日】2016年6月3日
(45)【発行日】2016年6月29日
(54)【発明の名称】複合不揮発性記憶装置のためのデータ移行
(51)【国際特許分類】
G06F 3/06 20060101AFI20160616BHJP
G06F 3/08 20060101ALI20160616BHJP
G06F 12/08 20160101ALI20160616BHJP
G06F 12/0802 20160101ALI20160616BHJP
【FI】
G06F3/06 302A
G06F3/06 304N
G06F3/08 H
G06F12/08 551Z
G06F12/08 557
G06F12/08 501Z
【請求項の数】17
【全頁数】13
(21)【出願番号】特願2014-557710(P2014-557710)
(86)(22)【出願日】2013年2月11日
(65)【公表番号】特表2015-512098(P2015-512098A)
(43)【公表日】2015年4月23日
(86)【国際出願番号】US2013025597
(87)【国際公開番号】WO2013122881
(87)【国際公開日】20130822
【審査請求日】2014年10月15日
(31)【優先権主張番号】61/599,927
(32)【優先日】2012年2月16日
(33)【優先権主張国】US
(31)【優先権主張番号】61/599,930
(32)【優先日】2012年2月16日
(33)【優先権主張国】US
(31)【優先権主張番号】13/605,921
(32)【優先日】2012年9月6日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
(74)【代理人】
【識別番号】100092093
【弁理士】
【氏名又は名称】辻居 幸一
(74)【代理人】
【識別番号】100082005
【弁理士】
【氏名又は名称】熊倉 禎男
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100122563
【弁理士】
【氏名又は名称】越柴 絵里
(72)【発明者】
【氏名】マクコ ピーター
(72)【発明者】
【氏名】ワン ウェングアン
【審査官】
田中 啓介
(56)【参考文献】
【文献】
米国特許出願公開第2011/0276744(US,A1)
【文献】
特開2008−027444(JP,A)
【文献】
国際公開第2011/144477(WO,A1)
【文献】
米国特許出願公開第2012/0017041(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06−3/08
12/08−12/12
(57)【特許請求の範囲】
【請求項1】
マルチデバイス複合データ記憶システムへのアクセスを管理する方法であって、
第1の不揮発性データ記憶装置上の第1のユニットセット内の各ユニットに関する状態及び最近アクセス数を示す第1のデータ構造を管理するステップであって、前記マルチデバイス複合データ記憶システム上の第1のブロックへのアクセス要求を受け取ること、前記第1の不揮発性データ記憶装置上の第1のユニットセット内の第1ユニットからの前記第1のブロックにアクセスすること、前記第1ユニットに対する最近アクセス数を更新すること、を含む前記管理するステップと、
第2の不揮発性データ記憶装置上の第2ユニットが、最近参照されたか否かを、確率論的に示す第2のデータ構造を管理するステップと、を含み、
前記第2のデータ構造は、1つ以上のブルームフィルタのキューである、方法。
【請求項2】
前記第2のデータ構造を管理するステップは、
前記マルチデバイス複合データ記憶システム上の第2のブロックへのアクセス要求を受け取るステップと、
前記第2のデータ構造に対して、前記第2の不揮発性データ記憶装置上の第2ユニットの識別子を表すデータを追加するステップであって、前記第2ユニットは前記マルチデバイス複合データ記憶システムの前記第2のブロックを含む当該ステップと、
前記第2ユニットを前記第1の不揮発性データ記憶装置に移行するステップと、を含む請求項1に記載の方法。
【請求項3】
前記第2の不揮発性データ記憶装置上の前記第2ユニットの前記識別子を表すデータを、前記第2のデータ構造に追加するステップは、
前記第2ユニットの前記識別子のハッシュを計算するステップと、
前記第2ユニットの前記識別子の前記ハッシュにより定義されたインデックスに、前記第2ユニットが参照されたことを示す値を設定するステップと、を含む請求項2に記載の方法。
【請求項4】
前記第2ユニットの識別子の複数のハッシュ値を計算するために、複数のハッシュ関数が使用される、請求項3に記載の方法。
【請求項5】
前記第2の不揮発性データ記憶装置から前記第2ユニットを前記第1の不揮発性データ記憶装置に移行するステップは、
前記第2ユニットが参照されたことを示す前記値を求めて、各ハッシュにより定義されたインデックスで、前記第2のデータ構造を検索するステップと、
検索したインデックス各々が、前記第2ユニットが参照されたことを示す前記値を含む場合、前記第2の不揮発性データ記憶装置から前記第1のデータ記憶装置へ、前記第2ユニットを移動させるステップと、を含む請求項4に記載の方法。
【請求項6】
前記第2の不揮発性データ記憶装置から前記第1の不揮発性データ記憶装置へ、前記第2ユニットを移動させるステップは、多数のデータブロックを単一のユニットとして移動させるステップを含む、請求項5に記載の方法。
【請求項7】
マルチデバイス複合データ記憶装置へのアクセスを管理するためのシステムであって、
第1のユニットセット内にデータを記憶する第1の不揮発データ記憶装置と、
前記第1の不揮発データ記憶装置上の前記第1のユニットセット内の各ユニットへのアクセスのリセンシーを示す第1のデータ構造であって、第1のデータ構造は、クロックアルゴリズムを使用して保守される環状キューであり、前記環状キューは、前記第1の不揮発データ記憶装置上の第1のユニットセット内のユニットに関する状態及び最近アクセス数を示す、当該第1のデータ構造と、
第2のユニットセット内にデータを記憶するため、前記第1の不揮発性データ記憶装置に結合された第2の不揮発性データ記憶装置と、
前記第2の不揮発性データ記憶装置上のユニットが最近参照されたか否かを確率論的に示す第2のデータ構造と、を備え、
前記第2のデータ構造が、前記第1の不揮発性データ記憶装置に移行する前記第2のユニットセット内のユニットを示すブルームフィルタのキューであり、前記第1及び第2のユニットセット内の各ユニットが、1以上の論理ブロックを含む、システム。
【請求項8】
前記第1の不揮発性データ記憶装置が半導体ドライブであり、前記第2の不揮発性データ記憶装置が磁気ハードディスクドライブであり、
前記第1の不揮発性データ記憶装置及び前記第2の不揮発性データ記憶装置は、ファイルシステムによって単一論理ボリュームとしてアドレスされる、請求項7に記載のシステム。
【請求項9】
前記第2のデータ構造のサイズが、
前記第1の不揮発性データ記憶装置上のユニットの数と、
前記キュー内で許可された前記ブルームフィルタの数と、
前記ブルームフィルタ内に記憶されるユニットの最大数と、
前記ブルームフィルタ各々のサイズと、を含むパラメータにより前記第2のデータ構造が定義された、請求項7に記載のシステム。
【請求項10】
各ユニットがマルチ論理ブロックを含み、前記第1のデータ構造は、前記第1の不揮発性データ記憶装置上の各ユニットに対し1つの要素を含み、前記第1のデータ構造の要素が、前記第1の不揮発性データ記憶装置上のユニットがフリーであることを示す、請求項7に記載のシステム。
【請求項11】
マシーンにマルチデバイス複合データ記憶システムへのアクセスを管理するための動作を行わせる命令を記憶した不揮発性のマシーン読み取り可能な記憶媒体であって、前記動作は、
第1の不揮発性データ記憶装置上の第1のユニットセット内の各ユニットに関する状態及び最近アクセス数を示し、且つクロックアルゴリズムを介して管理される、第1のデータ構造を初期化するステップと、
第2の不揮発データ記憶装置上のユニットが、最近参照されたことを確率論的に示し、ブルームフィルタのキューである、第2のデータ構造を初期化するステップと、
前記マルチデバイス複合データ記憶システムの論理ブロックへのアクセス要求を受け取るステップと、
前記論理ブロックが前記第1の不揮発性データ記憶装置上に含まれている場合、要求された前記論理ブロックを前記第1の不揮発性データ記憶装置上のユニットからアクセスするステップ、及び前記ユニットが前記第1の不揮発性データ記憶装置に固定されていない限り、前記マルチデバイス複合データ記憶システムの要求された前記論理ブロックが、前記第1の不揮発性データ記憶装置上のユニットから最近アクセスされたことを示すように、前記第1のデータ構造を更新するステップと、
要求された前記論理ブロックが前記第1の不揮発性データ記憶装置上のユニットで見つからない場合、要求された前記論理ブロックを求めて前記第2のデータ構造を検索するステップと、
要求された前記論理ブロックが前記第2のデータ構造内で見つからない場合、要求された前記論理ブロックを含む前記ユニットの識別子を前記第2のデータ構造に追加するステップと、
要求された前記論理ブロックを含むユニットが前記第2のデータ構造内で見つかった場合、要求された前記論理ブロックを含む前記ユニットを、前記第2の不揮発性データ記憶装置から前記第1の不揮発性データ記憶装置へ移行させるステップと、を含む、記憶媒体。
【請求項12】
要求された前記論理ブロックを含む前記ユニットの識別子を追加するステップは、
前記ユニットの前記識別子に対して、ハッシュ値のセットを計算するステップと、ハッシュ値の前記セット内のハッシュにより定義されたインデックス各々に、前記ユニットが参照されたことを示す値を設定するステップと、を更に備える請求項11に記載のマシーン可読記憶媒体。
【請求項13】
ハッシュ値の前記セットの計算は複数のハッシュ関数を使用する、請求項12に記載のマシーン読み取り可能な記憶媒体。
【請求項14】
前記第2のデータ構造内のブルームフィルタをリセットするステップを更に備える、請求項13に記載のマシーン読み取り可能な記憶媒体。
【請求項15】
前記第2のデータ構造に、追加のブルームフィルタを追加するステップを更に備える、請求項13に記載のマシーン読み取り可能な記憶媒体。
【請求項16】
前記第2のデータ構造からブルームフィルタを除去するステップを更に備える、請求項15に記載のマシーン読み取り可能な記憶媒体。
【請求項17】
データ処理システムに、請求項1又は請求項2〜6に記載のどれか1つの方法を行わせる命令を有する、マシーン読み取り可能な記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
本出願は、2012年2月16日に出願した仮出願第61/599,930号の優位性を主張するものであり、この仮出願は、参照により本明細書に組み込まれている。本出願はまた、2012年2月16日に出願した、同時係属出願である第61/599,927号にも関連しており、これも参照により本明細書に組み込まれている。
【0002】
本発明は、低速メモリ装置と高速メモリ装置とを複合した、複合不揮発性メモリ内の、データの記憶の管理方法に関する。複合ディスクシステムでは、大容量だが、アクセススピードは遅く、低価格である磁気ハードドライブと、半導体ドライブのような小型で、アクセススピードは速いが、高価な記憶装置とを組合せて論理ボリュームを形成することができる。これにより、磁気ハードディスクドライブ(HDD)の大容量が提供される一方で、半導体ドライブ(SSD)の高速アクセスのメリットも提供することができる。そのような複合ディスクを管理する従来技術は、LRU(least recently used)アルゴリズム、CLOCKアルゴリズム、又はSong Jiangが記載しているClockProアルゴリズムのようなアルゴリズムを使用してきた。これらの従来の技術は、複合ディスクの高速部分と低速部分の間のデータの割り当てを向上させることができる。けれども、複合ディスクの2つの部分間でデータを割り当てるためのこれらの技術で使用されるデータ構造を実装するためには、大容量DRAMのような、大容量のメインメモリが必要になるという点で、スペース効率が悪化しやすい。それ故、複合ディスクの2つ以上の構成要素間で、データを割り当てる、又は移行させるのに使用するデータ構造を記憶するのに、あまり大きなメモリを必要としない、改良されたスペース効率の良い技術が必要となる。
【発明の概要】
【0003】
一実施形態では、半導体装置のような、高速不揮発性記憶装置と、磁気ハードドライブのような、低速不揮発性記憶装置へのアクセスの管理方法は、SSD装置のような高速不揮発性記憶装置内のユニットのセット内の各ユニットにアクセスするリセンシーを示す、第1のデータ構造を維持するステップと、HDD装置のような低速記憶装置内のユニット、又はブロックが、最近参照されたかどうか(例えば、最近参照されたのが1回だけであるユニット、又はブロック)を示す、第2のデータ構造を維持するステップとを含むことができる。一実施形態では、第2のデータ構造は、メモリオーバヘッドが小さいブルームフィルタのキューであってもよい。ブルームフィルタのキューは、低速の記憶装置内のユニット、又はブロックが最近参照されたかどうかということに関しては、大体の場合は正しいが、正しい解を常に提供するかついては保証はない。
【0004】
本発明の他の特徴は、添付の図面と、下記の発明の詳細な説明から明らかになるであろう。
【0005】
上記概要には、本発明の全ての態様の網羅的なリストを挙げてはいない。本発明は、上記で概説した種々の態様、更には、以下の詳細な説明の中で開示されている態様の適切な全ての組み合わせから実施可能とする全てのシステム及び方法も含むことも想定される。
【0006】
本発明は、添付図面の図の例により説明するが、それに限定されることはない。また同じ参照記号は同じ要素を示している。
【図面の簡単な説明】
【0007】
【
図1】データ処理システムの例であり、本発明の実施形態に用いられている。
【
図2】本発明の一実施形態に係る複合不揮発性メモリの例である。
【
図3】クロックアルゴリズムと呼んでもよいアルゴリズムのデータ構造の例である。
【
図4】本発明の一実施形態に係る本明細書に記載された、1つ以上の方法と共に使用することができるゴーストテーブルのようなデータ構造の例である。
【
図5】本発明の少なくとも一実施形態に係る方法を描いたフローチャートである。
【
図6】本発明の少なくとも一実施形態に係る方法を描いたフローチャートである。
【
図7】本発明の一実施形態に係る方法を描いたフローチャートである。
【
図8】本発明の少なくとも一実施形態と共に使用することができるブルームフィルタデータ構造の例である。
【
図9】本発明の一実施形態に係る方法を示すフローチャートである。
【
図10】本発明の一実施形態に係る方法を示すフローチャートである。
【発明を実施するための形態】
【0008】
複合不揮発性データ記憶装置の管理を向上する方法を説明する。本発明の様々な実施形態や態様は、下記で議論する詳細を参照して説明し、添付の図面は、様々な実施形態を図示する。以下の記述や図面は、本発明を説明するものであり、本発明を制限するものと解釈するものではない。本発明の種々の実施形態に関する十分な理解をもたらすために、多くの具体的な詳細について述べる。だが、場合によっては、本発明の実施形態に関する議論を簡潔化するために、公知、または、従来の詳細については、説明しない。
【0009】
本明細書中における「一実施形態(one embodiment)」又は「一実施形態(an embodiment)」への言及は、その実施形態に関連して説明される特定の機能、構造又は特徴を、本発明の少なくとも1つの実施形態の中に含まれることを意味する。本明細書における様々な箇所での、語句「一実施形態では」の出現は、必ずしも全てが同じ実施形態を言及しているものではない。以下の図面に描かれているプロセスは、ハードウェア(例えば、回路、専用ロジック)、(永続的な機械可読記憶媒体上の命令のような)ソフトウェア、又はその両者の組合せからなる、処理ロジックにより実施される。以下でプロセスについて幾つかの逐次的な操作の観点で述べるが、説明する操作の一部は、異なる順序で実施できることを認識すべきである。更に、一部の操作は、逐次的ではなく並列的に実施可能である。
【0010】
図1は、データ処理システムの形式で、本明細書に記載された1つ以上の実施形態と共に使用することができる、コンピューティングシステム10の例を示す。システム10は、デスクトップコンピュータシステム、ラップトップコンピュータシステム、スマートフォン、又は他の電子装置や消費者電子装置でもよい。システム10は、当技術分野では周知のように、一実施形態ではSRAMでもよい、オプションキャッシュ14に接続された、1つ以上のマイクロプロセッサ、又は他の論理ユニット12を含むことができる。1つ以上のマイクロプロセッサ12が、1つ以上のバス18を介して残りのシステムに接続される。このバスは、1つ以上のマイクロプロセッサ12を、揮発性RAM16でもよい、メインメモリに接続する。一実施形態では、揮発性RAMは、コンピュータシステムで使用される従来のDRAMでもよい。コンピュータシステムでは、DRAMはバスを介して、システム10内の残りの構成要素に接続される。システム10はまた、1つ以上の入出力装置22を1つ以上のバス18を介して残りのシステムに接続する、1つ以上の入出力コントローラ20を備えることができる。システム10はまた、ソリッドステートドライブ形式のフラッシュメモリドライブと、従来の磁気ハードドライブの組合せのような複合ディスクでもよい不揮発性メモリ19を含む。
【0011】
図2は、一実施形態に係る複合ディスクの一例を示す。不揮発性メモリ19は、ソリッドステートドライブ51と磁気ハードドライブ52を備える。この2つは、ファイルシステムやオペレーティングシステムにより、単一論理ボリューム、又はブロック装置として扱うことが可能であり、ソリッドステートドライブコントローラを有するコントローラ54、ハードディスクコントローラを有するコントローラ53のような、1つ以上のコントローラにより制御される。この1つ以上のコントローラは、バス18を介して、
図2に示す複合ドライブをシステム10の残りの構成要素に接続する。当然のことだが、フラッシュメモリは高速不揮発性記憶装置の1つの形態であり、他の高速記憶装置は、高速記憶装置よりも低速な、従来の磁気ハードドライブ、又は他の不揮発性記憶装置でもよい低速記憶装置と共に、代わりに使用することができる。当然のことだが、この説明ではSSD、又はHDDといえば、高速、又は低速不揮発性記憶装置を意味するものと解釈されるものであり、限定したり任意の記憶装置技術に特化するとは解釈されない。
【0012】
図3は、第1のデータ構造の例を示し、本発明の一実施形態に係るクロックアルゴリズムと共に使用される。一実施形態のクロックアルゴリズムは、従来技術で使用されている従来のクロックアルゴリズムに類似している可能性がある。このクロックアルゴリズムは、データ構造301を使用することができるが、このデータ構造は、クロックポインタ304を持つ環状キューでもよい。このクロックポインタは、クロックアルゴリズムに基づき、キュー内の特定の場所を指す。環状キュー内の各場所は、高速不揮発性メモリ装置内の特定のユニット、例えば、フラッシュメモリシステムを介して実装されたソリッドステートドライブに対応している。ある意味では、第1のデータ構造は、どのブロックがフリーで、どのブロックがハードドライブ上に割り当てられている(フリーでない)か、を示すファイルシステムにより維持されている、ブロック割り当てビットマップに類似している。
【0013】
例えば、場所302は、SSD上のユニットゼロに対応し、右側の次のユニットはSSD上のユニット1に対応し、場所303は、SSD上の別のユニットに対応する。各場所では、SSD内の対応する記憶ユニットの状態を示す値が記憶されている。一実施形態では、2ビット値が使用でき、ゼロという値は、SSD上の特定のユニット内の、1つ以上のブロック、又は他の構成要素はフリーだが、ある場所の1という値は、SSD上の特定のユニットは最近参照されていない、2という値はSSD内のそのユニットは最近参照されたということを示すことができる。3という値は、あるユニットがSSDに固定され、HDDへ移せないことを示すことができる。あるいは、一実施形態では、ユニットへの特定のアクセス回数を追跡することができる、3ビットの値を使用することができる。この実施形態では、ゼロ値はそのユニットが、フリーであることを示すこともできる。つまり、1という値は、そのユニットが最近参照されていないことを示すことができ、最大値である7は、そのユニットが動けないことを示すことができる。他の値は、あるユニットが最近参照された回数を示すことができる。例えば、6という値は、最近5回参照されたことを示す。
【0014】
一実施形態では、第1のデータ構造301は、以下の様に管理することができる。即ち、SSDからHDDに移す候補をアルゴリズムを見つける必要がある時は、クロックポインタ304を使用する。一実施形態では、そのユニットが最近参照されないことを意味する、1という値を持つユニットが見つかるまで、クロックポインタ304は、時計方向に1つのユニットから次のユニットへ走査する。一実施形態では、クロックポインタ304は反時計回りに走査することができる。もしユニット内の値が最大値に設定されると、そのユニットはSSDに固定され、HDDに移せなくなる。もしこの数値が1よりも大きいが、最大値ではなければ、クロックポインタが次のユニットに移る前に1だけ減らされ、最小値である1まで減らされる。SSD内の特定のユニットがアクセスされると、SSD上でそのユニットに対応する場所のカウント値を増やすことができる。この方法を使用すると、SSD上の頻繁にアクセスされるユニットは、SSD上のそのユニットに対応するデータ構造のユニット内で、予め設定したカウント値の上限に達するまでカウント値が益々大きくなる。けれども、移動する候補が必要となる度に、クロックポインタ304がユニットからユニットへ掃引するので、順番に並んだユニット(例えば、302と303)各々は、クロックポインタ304がそのユニットを通過するたびに、カウント値が減らされ、そのユニットは最近アクセスされていないことを示す、1という最小値まで減らされる。第2のデータ構造に関するクロックアルゴリズムの使用に関するさらなる詳細は、次に説明するが、
図5,6,7にと共に提示される。
【0015】
図4は、第2のデータ構造の例を示す。ゴーストテーブルとも呼ぶことができ、1回以上の最近のアクセスを超えるアクセス、又は所定回数以上の最近のアクセスを超えるアクセスのために、HDDのような低速不揮発性メモリ上のユニットのアクセスを追跡するのに使用される。一実施形態では、第2のデータ構造は、データ構造内の場所の数に関して、SSD内のユニット数と同じであってもよいし、又はSSD内のユニット数の大きさに比例してもよい。一実施形態では、HDD内の特定のユニット数のためのシグニチャ値を、第2のデータ構造の各場所に記憶することができる。一実施形態では、ファイルシステムの観点からは、ユニットは磁気ハードドライブ上の論理ブロックでもよい。第2のデータ構造401は、他の場所と同様に3つの位置402,403,404を含み、これらの場所各々は、HDD内のユニット数のシグニチャを記憶することができる。場所404は、HDD上のユニット内のデータが、少なくとも1回、又は少なくとも所定の回数(読み出し、又は書き込みによって)最近アクセスされたことを示す、HDD内のユニットXのためのシグニチャ値の例を示す。
【0016】
図5は、データ構造301のような第1のデータ構造と、データ構造401のような第2のデータ構造を利用して、SSDのような高速記憶装置と、HDDのような低速記憶装置間のデータの移行を制御するための、本発明の一実施形態による方法の例を示す。不揮発性メモリに対する読み出し、又は書き込みアクセス要求をシステムが受け取る、動作501にて、
図5の方法が開始される。一実施形態では、ファイルシステムが複合ディスクの制御を行い、複合ディスクを単一論理ボリュームとして取り扱う。次いで、データ処理システム内のファイルシステム、又は別の構成要素は、
図5に示す方法を使用して、複合ディスクの2つ以上の部分間でデータをどのように割り当てるかを決定する。読み出し、又は書き込みアクセス要求の受け取りに応じて、この方法は動作503に進み、要求されたデータが、高速記憶装置内にあるか否かを判定する。もしそのデータが高速記憶装置内にあれば、SSD内でヒットする。その場合は、処理は動作505に進み、SSD上で発見されたユニットのための、データ構造301のような環状キュー内のカウントが、1だけ増える。これは、クロックポインタ304を動かさずに行われる。このようにして、第1のデータ構造を介して、クロックアルゴリズムは、SSD内のユニットへのアクセス回数を追跡する。もし動作503で、SSD内でミスが起こると、システムは動作507へ進み、確率論のハッシュテーブルの形式である、
図4に示すゴーストテーブル401のような、第2のデータ構造内に、データがあるか否かを判定する。第2のデータ構造内でのデータの探索を
図7に示し、以下で説明する。
【0017】
動作507が、ユニットが既に第2のデータ構造内にないと判定すると、動作509に進み、ゴーストテーブル401でもよい、第2のデータ構造に、ユニット番号又はユニット番号の表示が追加される。動作509に関する追加情報を、以下で説明する
図6に関連して提供する。動作507にて、要求データを含むユニットが、既に第2のデータ構造内にあると判定されると、処理は動作507から動作511に進み、高速記憶装置が満杯になっているか否かが判定される。もし満杯でなければ、動作515に進む。様々な従来のアルゴリズムを使用して、SSDが満杯ではないか否かを判定することができるので、クロックアルゴリズム、又は第1のデータ構造301を使用することに依存する必要はない。
【0018】
動作515では、アクセスされているHDDのユニット内のデータが、当分野で周知の技術を使用して、HDDからSSDに移行される。更に、移動済み、又はこれから移動するデータのユニットのユニット番号は、ゴーストテーブル401のような、第2のデータ構造から除去される。操作511にて、SSDが満杯であるとシステムが判定すると、操作515の前に操作513が行われる。当然のことながら、ファイルシステムは、操作515でのデータの移動に応じた、様々なデータの場所を示す従来のデータ構造を尚も維持している。操作513にて、一実施形態ではクロックアルゴリズムを使用して、システムはSSD上にスペースを作成する。この場合、クロックアルゴリズムは、クロックポインタ304を使用して、環状配列を順番に、クロックポインタの現在の位置から始めて、最近参照されていないSSD内のユニットを示す場所まで移動する。一実施形態では、環状配列内のある場所に記憶された1という値がこのことを示している。クロックポインタ304が、環状配列を環状に移動するにつれ、各場所の値は1つ減らされる。クロックポインタ304が、各位置での値を減らしながら列を移動するにつれて、最後にはユニットの1つが、利用可能なユニットであるということを示す値を受信する。クロックアルゴリズムが、SSD内で次に利用可能なユニットの場所を決定すると、SSDのそのユニット内のデータを、HDDにフラッシュすることができるし、操作513の後で行うことができる操作515にて、HDD上でアクセスされたデータは、HDDからSSD内の場所、又はユニットに移動させることができる。第2のデータ構造からユニット番号を除去することについて、
図7と共に更に説明する。
【0019】
図6は、第2のデータ構造にデータを追加する方法の例を示す。Xは、ハードドライブ上の1つ以上の論理ブロックのような、HDD内のユニット番号を表すことができる。当然のことながら、
図6,
図7の方法は、
図4に示すデータ構造401でもよい、確率論的なハッシュテーブルの生成を考慮している。ハッシュ及びシグナチャーは第2のデータ構造に記憶される値を生成するために使用され、データ構造内の場所を特定するのに使用されるという事実のために、確率論的なハッシュテーブルは、HDD上のユニットのアクセス数については、常には正しくないかもしれない。ハッシュが使用されると、ハッシュ関数への1つ以上の入力が、同じハッシュ値を返すことができる。これは、異なるユニットと同じシグナチャーを共有するユニットは、適切なユニットではなく、SSDに移してもよいことを意味する。けれども、それが発生する可能性は小さい。従って、HDD上の1つのユニットが受け取ったアクセス数に関しては、ハッシュテーブルは常に正しいということはないかもしれないが、データ構造は殆ど常に正しく、消費されたメモリの量に対して大容量の情報を記憶することができるという点で、スペース効率がよい。
【0020】
図6に示す方法は、
図5の動作509で実行することができる。動作601では、システムは、リード要求、又はライト要求によりアクセスされているHDD内のユニット番号に対するハッシュ値のセットを計算する。ハッシュ値のセットは、異なるハッシュ関数のセットから得られる。例えば一実施形態では、3つの異なるハッシュ関数h1、h2、h3が使用できるが、1以上の任意の数のハッシュ関数が、使用できる。更に、動作601ではXのシグナチャーが計算される。それはS(X)と表され、SはXの値のシグナチャーを表す。シグナチャーは暗号アルゴリズム、又は他のアルゴリズムから得ることができるが、そのアルゴリズムは、ある入力に対して、相対的に唯一の値を生成しようとするが、Xの可能性がある値各々の唯一の値を生成することは保証されない。このように全体的な唯一性がないことは、ハッシュテーブルの確率論的な性質に寄与している。動作601にてこの値を計算してから、システムは動作603へ進み、ハッシュ値により指定された場所のどれかが、第2データ構造内で空か否かを判定する。換言すれば、ハッシュ値により指定されたこれらの場所は各々、ゴーストテーブル内で調べられ、一実施形態では空であるか否かが判定される。もし、どれか1つが空であれば、動作605が行われ、HDDのユニット番号のS(X)のようなシグナチャーが、ハッシュ値の1つにより指定された空の場所の1つに記憶される。一方、動作603がこれらの場所がどれも空でないと判定すると、動作607が行われ、第2のデータ構造内のランダムな場所が動作607でランダムに選択され、動作609でシグナチャーが選択されたランダムな場所に記憶される。ランダムな場所を使用するので、その場所に記憶されている前のシグナチャーが上書きされてしまうことがある。
【0021】
図7は、データ構造からデータを見つける、又は除去する方法の例を示す。データを見つけるために、
図7の方法が使用された場合は、動作707は行わない。データを見つけるための
図7に示された方法は、
図5の動作507により行うことができる。
図7に示された方法がデータをゴーストテーブルから除去するために使用された時は、動作707が行われ、この方法は
図5に示す動作515の一部として使用される。
図7の方法は、動作701より開始され、ハッシュ値のセットがXに対して計算される。このハッシュ値のセットは、以前動作601で使用されたのと同じハッシュ関数のセット及び同じハッシュ値のセットに対応する必要がある。同様に、Xの値に対してシグナチャーが計算されるが、それは動作601で計算したシグナチャーと類似したものである。次いで動作703では、システムはゴーストテーブルの場所内でシグナチャーの値を探すが、それは動作701で計算されたハッシュ値のセットにより指定されたものである。動作705でシグナチャーが見つかれば、ユニット番号のシグナチャーが
図7に示すように動作707で第2のデータ構造から除去される。一実施形態では、データ構造の寸法は、データ構造の性能と、利用可能なメモリの容量とに基づき倍にしたり、又は半分にしたりすることができる。
【0022】
本発明の別の実施形態では、ゴーストテーブルとして実装することができる、確率論的なハッシュテーブルよりはむしろ、ブルームフィルタを使用することができる。ブルームフィルタの例を
図8に示す。ブルームフィルタは、第2の記憶装置上のユニットが、最近アクセスされたか否かの確実性を判定するテストで使用することができる、確率論的なデータ構造である。ブルームフィルタが確率論的であるのは、誤った肯定的な結果が返される、つまり実際にはそうではないのに、ユニットがデータ構造内にあると判定されてしまうからである。けれども、誤った否定的な結果は返されないので、第2のデータ構造のクエリは、そのユニットは恐らく最近アクセスされた、又はそのユニットは決して最近アクセスされていない、という結果を返されることになる。ブルームフィルタは、SSDの各ユニットに対応する、又はSSDのユニット数に比例した多数の場所を持つことができる。各場所は、1又はゼロを記憶しており、一実施形態ではHDD上の特定のユニットのアクセス数の状態を示す。HDDのユニット番号のハッシュ値は、ブルームフィルタ内の特定の場所にアクセスするためのアドレスとして使用される。
図8に示すように、ブルームフィルタ801は、場所802,803,804を有する。場所803は、この場所を指定する、Xのハッシュ関数h1により指定される。1という値は、場所803に設定され、更にXのアドレスh2とXのアドレスh3により指定された、他の2つの場所内にも設定される。
図8に示すブルームフィルタは、動作507でゴーストテーブルをブルームフィルタで置き換え、動作509でゴーストテーブルをブルームフィルタで置き換えることにより、
図5の方法で使用され得る。けれども、ブルームフィルタからユニットを除去して、ブルームフィルタは誤った否定的な結果を生成しないということを保証するのは不可能なので、ブルームフィルタをゴーストテーブルの代わりに使用する場合は、動作515ではブルームフィルタからユニット番号は除去されない。従って一実施形態では第2のデータ構造内のブルームフィルタが満杯になると、環状キュー内にブルームフィルタを追加してもよい。
【0023】
図9は、HDD内のユニットを、ブルームフィルタに追加する方法の例を示す。
図9に示す操作は、ブルームフィルタがゴーストテーブルの代わりに使用される場合に、動作509で行われる。一実施形態では、
図9から明らかなように、一番新しいブルームフィルタが値を記憶するのに使用され、より古いブルームフィルタが環状キューを循環する、環状キュー内に、複数のブルームフィルタが保持されるように、ブルームフィルタの環状キューを使用することができる。動作509が開始されると、
図5を実装したブルームフィルタの場合、操作901は、一番新しいブルームフィルタが満杯か否かを判定する。満杯でなければ、操作905が続き、ハッシュ値のセット内で指定された各々の場所を、例えば1のような所定値に設定することにより、HDD上の現在アクセス中のユニットを表すデータが、一番新しいブルームフィルタに追加される。一実施形態では、操作1001のようにハッシュ値のセットが計算され、それらのハッシュ値各々は、ブルームフィルタ内の特定の場所、又はアドレスを指定し、1という値がハッシュ値のセット内で指定されたそれらのアドレス、又は場所各々に書き込まれる。
【0024】
図10は、HDD内の特定のユニット番号が第2のデータ構造、この場合はブルームフィルタ、内にあるか否かを見つける方法を示す。
図5の方法がゴーストテーブルではなく、ブルームフィルタを使用する場合は、
図10は、動作507の一部として行うことができる。操作1001では、システムはHDD内のユニット番号のハッシュ値のセットを計算する。一実施形態では、3つの異なるハッシュ関数を使用して、3つのハッシュ値を計算することができる。次に操作1003では、キュー内のブルームフィルタの少なくとも1つで、ハッシュ値のセットにより指定された各場所で、1つのビットが、1のような所定値に設定されているか否かをシステムがチェックする。操作1005では、ハッシュ値のセット内のハッシュ値により指定された各場所内で、全てのビットが1に設定されているか否かをシステムが判定する。配列内の各ブルームフィルタ内の場所の少なくとも1つが設定されていないと、システムはユニットが見つからないと結論付け、操作1007に進み、
図5の動作509に続けさせる。一方、システムが、全てのビットがハッシュ値のセットにより決定された適切な場所内に設定されていると判定すれば、処理は操作1009に進み、
図5の動作511に続けさせる。
図4内のゴーストテーブルについては、本発明の実施形態のいくつかは、第2のデータ構造の寸法を、必要に応じて、増やしたり減らしたりすることができる。環状キュー内のブルームフィルタが満杯になるにつれて、環状キューにブルームフィルタを追加してもよい。ブルームフィルタの環状キューの寸法が規定値を超えると、一番古いブルームフィルタをリストから除去することができる。
【0025】
上述の明細書において、本発明はその特定の実施形態に関して記載されている。しかし、本発明のより広い趣旨及び範囲から逸脱することなく種々の修正及び変更がそれになされ得ることは明らかであろう。したがって、明細書及び図面は、限定的でなく、例示的な意味で考慮されるべきである。