(57)【要約】      （修正有）【課題】不揮発性メモリ装置内でデータ属性基盤データ配置を利用するインターフェイス提供方法及びコンピュータ装置を提供する。【解決手段】データ項目変更の更新統計として、データ項目の少なくとも一部に対する１つ以上の更新頻度、各ファイルタイプに対する累積された更新及び削除頻度、並びにデータ項目の出処を監視するソフトウェア構成要素を、オペレーティングシステムレベルで実行する段階を含み、ソフトウェア構成要素によって、データベース内にデータ項目及びデータ項目タイプに対する更新統計を格納する段階と、データ項目に対してアプリケーションによって実行されるすべての動作を遮断して、データベース内の現在の更新統計に基づいてデータ項目の各々に対してデータ属性識別子を自動的に割り当て、データ項目と割り当てられたデータ属性識別子がメモリチャンネルを通じてストレージ用の不揮発性メモリ装置に伝送される段階と、を有する。【選択図】図２
2017021805.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置が不揮発性メモリ装置内のデータ属性基盤データ配置を利用可能にするインターフェイスを提供する方法であって、
前記不揮発性メモリ装置へのデータ項目変更の更新統計として、前記データ項目の少なくとも一部に対する１つ以上の更新頻度、各ファイルタイプに対する累積された更新及び削除頻度、並びに前記データ項目の出処を監視するソフトウェア構成要素を、前記コンピュータ装置のオペレーティングシステムレベルで実行する段階と、
前記ソフトウェア構成要素によって、データベース内に前記データ項目及びデータ項目タイプに対する前記更新統計を格納する段階と、
前記データ項目に対してアプリケーションによって実行される生成、書込み、及び更新を含むすべての動作を遮断して、前記データベース内の現在の更新統計に基づいて前記データ項目の各々に対してデータ属性識別子を自動的に割り当て、前記データ項目及び前記割り当てられたデータ属性識別子を、メモリチャンネルを通じてストレージ用の前記不揮発性メモリ装置に伝送する段階と、を有することを特徴とする方法。
【請求項２】
前記ソフトウェア構成要素は、前記コンピュータ装置の装置コントローラ内で実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記ソフトウェア構成要素は、データ類似性を示す１つ以上のデータ属性に基づいて前記データ項目に対して前記データ属性識別子を割り当てるために現在の更新統計を使用し、
前記１つ以上のデータ属性は、データ寿命、データ種類、データサイズ、論理ブロックアドレス（ＬＢＡ）範囲、ＬＢＡアクセスパターン、及び物理データソースを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ソフトウェア構成要素は、
前記コンピュータ装置のオペレーティングシステムにインストールされた統計デーモンと、
ファイルシステムレベルで具現されたシステムコールフックと、を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記統計デーモンは、前記不揮発性メモリ装置に対してデータ項目変更の少なくとも１つのデータベースを管理及び維持するためにバックグラウンドで連続的に動作することを特徴とする請求項４に記載の方法。
【請求項６】
前記データ項目は、ファイルを含み、
前記少なくとも１つのデータベース内に格納された前記更新統計は、ファイル名基盤統計及びファイルタイプ基盤統計を含み、
前記ファイル名基盤統計は、前記データ項目に対して再書込み、更新、削除、及びトランケート動作を含む更新頻度を記録した統計であり、
前記ファイルタイプ基盤統計は、特定のファイルタイプに対する累積された更新及び削除頻度を記録した統計であることを特徴とする請求項５に記載の方法。
【請求項７】
前記ファイル名基盤統計及び前記ファイルタイプ基盤統計の少なくとも一部は、前記コンピュータ装置のメモリ及び前記不揮発性メモリ装置上のメモリの両方に格納されることを特徴とする請求項６に記載の方法。
【請求項８】
前記ファイル名基盤統計のファイル名基盤統計テーブル及び前記ファイルタイプ基盤統計のファイルタイプ基盤統計テーブルは、ハッシュテーブルとして具現されることを特徴とする請求項７に記載の方法。
【請求項９】
前記ファイル名基盤統計テーブル内の各エントリは、キー及び値を含み、
前記値は、前記ファイルの寿命の間に前記ファイルに対する全更新数を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記統計デーモンは、新規ファイルの生成に応答して前記ファイル名基盤統計テーブル内に新規エントリを生成し、前記ファイルの削除に応答して前記ファイル名基盤テーブル内の対応するエントリを削除することを特徴とする請求項９に記載の方法。
【請求項１１】
前記ファイルタイプ基盤統計テーブル内の各エントリは、キー及び値を含み、
前記値は、前記ファイルタイプのファイル数で前記ファイルタイプのファイルに対して加えられたすべての更新を除算した値であることを特徴とする請求項８に記載の方法。
【請求項１２】
前記統計デーモンは、新規ファイルタイプの生成に応答して前記ファイルタイプ基盤統計テーブル内に新規エントリを生成し、前記エントリが追加された後に何れのエントリも削除しないことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記統計デーモンは、オペレーティングシステムのブートアップ後、前記ファイル名基盤統計テーブル及び前記ファイルタイプ基盤統計テーブルを前記コンピュータ装置のメモリにロードし、永久格納のために前記ファイル名基盤統計テーブル及び前記ファイルタイプ基盤統計テーブルを前記不揮発性メモリ装置に周期的にフラッシュ（ｆｌｕｓｈ）することを特徴とする請求項７に記載の方法。
【請求項１４】
前記システムコールフックは、すべてのファイル更新動作を遮断し、前記データベース内の現在の統計にしたがって前記ファイル更新動作の各々に対する動的属性識別子を自動的に割り当てることを特徴とする請求項４に記載の方法。
【請求項１５】
前記ファイル名基盤統計及びファイルタイプ基盤統計は、少なくとも１つのデータベース内に格納され、
前記システムコールフックは、
ファイル更新動作の遮断に応答して、関連情報を前記統計デーモンへ送信するためにデータベース更新動作を実行し、
前記データベースを読み出し、現在の統計にしたがって実際のファイル書込みに対してデータ属性識別子を計算して割り当てるデータ属性識別子の計算を実行し、ファイル生成又は新たなファイル書込みを、前記ファイルのタイプ及び現在のファイルタイプの統計にしたがってデータ属性識別子に割り当て、ファイルデータ更新を、その更新頻度及び現在の更新頻度の統計にしたがってデータ属性識別子として割り当て、
前記実際のファイル書込みを前記ファイルシステムへ伝送することを特徴とする請求項７に記載の方法。
【請求項１６】
前記データ属性識別子の計算は、新たなファイル書込みに応答して、下記数式１のデータ属性ＩＤ（識別子）を含むことを特徴とする請求項１５に記載の方法。
【数１】
2017021805.tif 000005
【請求項１７】
前記データ属性識別子の計算は、ファイル更新に応答して、下記数式２のデータ属性ＩＤ（識別子）を含むことを特徴とする請求項１５に記載の方法。
【数２】
2017021805.tif 000006
【請求項１８】
新しくインストールされたオペレーティングシステムに応答して、前記データ属性識別子を効率的に割り当てるための充分な統計を収集するために、構成可能なウォームアップ区間を有するための前記ソフトウェア構成要素を要求する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１９】
メモリと、
オペレーティングシステムと、
前記メモリに連結されたプロセッサと、を備え、
前記プロセッサは、前記オペレーティングシステム内に提供されたソフトウェア構成要素を実行し、
前記ソフトウェア構成要素は、
不揮発性メモリ装置へのデータ項目変更の更新統計として、前記データ項目の少なくとも一部に対する１つ以上の更新頻度、各ファイルタイプに対する累積された更新及び削除頻度、並びに前記データ項目の出処を監視し、
データベース内に前記データ項目及びデータ項目タイプに対する前記更新統計を格納し、
前記データ項目に対してアプリケーションによって実行される生成、書込み、及び更新を含むすべての動作を遮断して、前記データベース内の現在の更新統計に基づいて前記データ項目の各々に対してデータ属性識別子を自動的に割り当て、前記データ項目及び前記割り当てられたデータ属性識別子を、メモリチャンネルを通じてストレージ用の前記不揮発性メモリ装置に伝送するように構成されることを特徴とするコンピュータ装置。
【請求項２０】
前記ソフトウェア構成要素は、前記コンピュータ装置の装置コントローラ内で実行されることを特徴とする請求項１９に記載のコンピュータ装置。
【請求項２１】
前記ソフトウェア構成要素は、データ類似性を示す１つ以上のデータ属性に基づいて前記データ項目に対して前記データ属性識別子を割り当てるために現在の更新統計を使用し、
前記１つ以上のデータ属性は、データ寿命、データ種類、データサイズ、論理ブロックアドレス（ＬＢＡ）範囲、ＬＢＡアクセスパターン、及び物理データソースを含むことを特徴とする請求項１９に記載のコンピュータ装置。
【請求項２２】
前記ソフトウェア構成要素は、
前記コンピュータ装置のオペレーティングシステムにインストールされた統計デーモンと、
ファイルシステムレベルで具現されたシステムコールフックと、を含むことを特徴とする請求項１９に記載のコンピュータ装置。
【請求項２３】
前記統計デーモンは、前記不揮発性メモリ装置に対してデータ項目変更の少なくとも１つのデータベースを管理及び維持するためにバックグラウンドで連続的に動作することを特徴とする請求項２２に記載のコンピュータ装置。
【請求項２４】
前記データ項目は、ファイルを含み、
前記少なくとも１つのデータベース内に格納された前記更新統計は、ファイル名基盤統計及びファイルタイプ基盤統計を含み、
前記ファイル名基盤統計は、前記データ項目に対して再書込み、更新、削除、及びトランケート動作を含む更新頻度を記録した統計であり、
前記ファイルタイプ基盤統計は、特定のファイルタイプに対する累積された更新及び削除頻度を記録した統計であることを特徴とする請求項２３に記載のコンピュータ装置。
【請求項２５】
前記ファイル名基盤統計及び前記ファイルタイプ基盤統計の少なくとも一部は、前記コンピュータ装置のメモリ及び前記不揮発性メモリ装置上のメモリの両方に格納されることを特徴とする請求項２４に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリ装置内でデータ属性基盤データ配置（ｄａｔａ  ｐｒｏｐｅｒｔｙ  ｂａｓｅｄ  ｄａｔａ  ｐｌａｃｅｍｅｎｔ）を利用可能にするインターフェイス提供方法及びコンピュータ装置に関する。
【背景技術】
【０００２】
フラッシュメモリ基盤のソリッドステートドライブ（ＳＳＤ）は消費者向けコンピュータ及び企業サーバーの両方で広く使用されて来た。
ＮＡＮＤ及びＮＯＲ論理ゲートにちなんで命名された主に２つのタイプのフラッシュメモリがある。ＮＡＮＤ型フラッシュメモリは、ブロック内へデータがライト（ｗｒｉｔｅ）され、ブロックからデータがリード（ｒｅａｄ）される。ブロックの各々は複数のページを含む。
【０００３】
ＳＳＤ内でのＮＡＮＤフラッシュメモリのストレージセルは、非常に独特な属性を有するので、ＳＳＤの一般使用は非常に非効率的である。例えば、ＮＡＮＤフラッシュメモリは、一度にバイト又はワード単位でランダムにリードされるか又はプログラム（ライト）されるが、消去の場合は、一度にブロック単位でのみ実行される。単一ＮＡＮＤフラッシュメモリのページを再書込み（ｒｅｗｒｉｔｅ）するためには消去ブロック全体（全消去ブロックは多数のフラッシュページを含む）が先に消去されなければならない。
【０００４】
ＮＡＮＤフラッシュメモリ基盤のストレージ装置（例えばＳＳＤ）は、原位置更新（ｉｎ−ｐｌａｃｅ  ｕｐｄａｔｉｎｇ）が許されないので、以後のライトのためのメモリ空間を準備するために、利用可能な空きブロック数が閾値に到達すると、ガーベッジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）動作が実行される。ガーベッジコレクションは、１つの消去ブロックから有効データをリードすること及び他のブロックに有効データをライトすることを含む。一方、ガーベッジコレクションの間に無効（ｉｎｖａｌｉｄ）データは新しいブロックに伝達されない。ＮＡＮＤフラッシュメモリの消去ブロックを消去するのには相対的に長い時間が掛かり、各消去ブロックは消去サイクルの制限回数（約３、０００回〜１０、０００回）を有する。したがって、ガーベッジコレクションのオーバーヘッドは、高いデータＩ／Ｏレイテンシ及び低いＩ／Ｏパフォーマンスを発生させ、この技術分野の中で最も大きい速度制限要因の１つである。
【０００５】
したがって、ホット（ｈｏｔ）／コールド（ｃｏｌｄ）データを別個に取り扱わないで、それらのデータを共に格納するオペレーティングシステム及びアプリケーションは、別個に取り扱う場合に比べて時間の経過とともにパフォーマンスの劣化が見られる。また、より多くの消去サイクルを必要とすることによって、ＳＳＤの寿命はさらに短くなり、これはＮＡＮＤセルをさらに速やかに劣化させることになる。
【０００６】
ＳＳＤベンダー（ｖｅｎｄｏｒ）及びストレージ技術委員会はこの問題を克服するためにいわゆる「マルチストリーム（ｍｕｌｔｉ−ｓｔｒｅａｍ）ＳＳＤ」と称される新たなＳＳＤ及び標準を提案した。この提案は、ストリーム（ｓｔｒｅａｍ）と称される異なる寿命を有するデータを分離して格納するインターフェイスをオペレーティングシステム及びアプリケーションに提供するものである。ストリームは、データライトが互いに関連しているか又は類似の寿命を有することを示すホストヒント（ｈｏｓｔ  ｈｉｎｔ）である。即ち、個別的データライトのグループはストリーム集合であり、各ストリームにはＯＳやアプリケーションによってストリームＩＤが与えられる。例えば、「ホット」データは、固有のストリームＩＤを割り当てられ、ストリームＩＤに対するデータは、ＳＳＤ内の同一の消去ブロックにライトされる。消去ブロック内のデータが類似の寿命を有するか又は互いに関連して存在するので、データがホストシステムによって削除される時、全体の消去ブロックが自由になる大きな機会がある。それによって、全対象ブロックが有効（よって、消去する必要がない）又は無効（消去できるが、ライトする必要はない）になるので、ガーベッジコレクションのオーバーヘッドが顕著に減少する。したがって、装置の耐久性及びパフォーマンスが向上する。
【０００７】
しかし、この新しいインターフェイスを利用するためにはアプリケーション（ソースコードを含む）及びオペレーティングシステム内で多くの変更が要求される。一般的なコンピュータは、インストールされて実行される数十〜数百のソフトウェアアプリケーションを有し、より効率的にＳＳＤを使用するためにすべてのアプリケーション、特にレガシ（ｌｅｇａｃｙ）及び閉ソース（ｃｌｏｓｅｄ−ｓｏｕｒｃｅ）アプリケーションに対してそのような変更を適用することは非常に難しい。また、マルチストリームＳＳＤがオペレーティングシステム及びアプリケーションによる使用のみに互換性があるという点でマルチストリームＳＳＤはその応用性が限定される。
【０００８】
ストレージ装置で改善されたデータ属性基盤データ配置が必要になり、特にコンピュータ装置がデータ属性基盤データ配置（例えば、マルチストリーム）ＳＳＤを利用可能にする自律的プロセスが要求される。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、上記の問題点に鑑みてなされたものであって、本発明の目的は、コンピュータ装置が不揮発性メモリ装置内のデータ属性基盤データ配置を利用可能にするインターフェイスを提供する方法及びコンピュータ装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するためになされた本発明の一態様によるコンピュータ装置が不揮発性メモリ装置内のデータ属性基盤データ配置を利用可能にするインターフェイスを提供する方法は、前記不揮発性メモリ装置へのデータ項目変更の更新統計として、前記データ項目の少なくとも一部に対する１つ以上の更新頻度、各ファイルタイプに対する累積された更新及び削除頻度、並びに前記データ項目の出処を監視するソフトウェア構成要素を、前記コンピュータ装置のオペレーティングシステムレベルで実行する段階と、前記ソフトウェア構成要素によって、データベース内に前記データ項目及びデータ項目タイプに対する前記更新統計を格納する段階と、前記データ項目に対してアプリケーションによって実行される生成、書込み、及び更新を含むすべての動作を遮断して、前記データベース内の現在の更新統計に基づいて前記データ項目の各々に対してデータ属性識別子を自動的に割り当て、前記データ項目及び前記割り当てられたデータ属性識別子を、メモリチャンネルを通じてストレージ用の前記不揮発性メモリ装置に伝送する段階と、有することを特徴とする。
【００１１】
上記目的を達成するためになされた本発明の一態様によるコンピュータ装置は、メモリと、前記メモリに連結されたプロセッサとを備え、前記プロセッサは、前記オペレーティングシステム内に提供されたソフトウェア構成要素を実行し、前記ソフトウェア構成要素は、不揮発性メモリ装置へのデータ項目変更の更新統計として、前記データ項目の少なくとも一部に対する１つ以上の更新頻度、各ファイルタイプに対する累積された更新及び削除頻度、並びに前記データ項目の出処を監視し、データベース内に前記データ項目及びデータ項目タイプに対する前記更新統計を格納し、前記データ項目に対してアプリケーションによって実行される生成、書込み、及び更新を含むすべての動作を遮断して、前記データベース内の現在の更新統計に基づいて前記データ項目の各々に対してデータ属性識別子を自動的に割り当て、前記データ項目及び割り当てられたデータ属性識別子を、メモリチャンネルを通じてストレージ用の前記不揮発性メモリ装置に伝送するように構成されることを特徴とする。したがって、前記コンピュータ装置が不揮発性メモリ装置でデータ属性基盤データ配置を利用することが可能になる。
【００１２】
本発明の一態様によるコンピュータ装置が不揮発性メモリ装置内のデータ属性基盤データ配置を利用可能にするインターフェイスを提供するプログラムを含む非一時的コンピュータ読み出し可能な記録媒体は、前記不揮発性メモリ装置へのデータ項目変更の更新統計として、前記データ項目の少なくとも一部に対する１つ以上の更新頻度、各ファイルタイプに対する累積された更新及び削除頻度、及び前記データ項目の出処を監視するソフトウェア構成要素を、前記コンピュータ装置のオペレーティングシステムレベルで実行する手段と、前記ソフトウェア構成要素によって、データベース内に前記データ項目及びデータ項目タイプに対する前記更新統計を格納する手段と、前記データ項目に対してアプリケーションによって実行される生成、書込み、及び更新を含むすべての動作を遮断して、前記データベース内の現在の更新統計に基づいて前記データ項目の各々に対してデータ属性識別子を自動的に割り当て、前記データ項目及び割り当てられたデータ属性識別子をメモリチャンネルを通じてストレージ用の前記不揮発性メモリ装置に伝送する手段と、を前記コンピュータ装置に実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、不揮発性メモリ装置内でデータ属性基盤データ配置を活用するコンピュータ装置及びそのコンピュータ装置を駆動するインターフェイス方法が具現される。
【図面の簡単な説明】
【００１４】
【図１】経験的インターフェイスによって提供される不揮発性メモリ装置内のデータ属性基盤データ配置のためのシステムの一実施形態を示すブロック図である。
【図２】本発明の一実施形態による経験的インターフェイスを提供するホストシステム上で実行されるプロセスを示すフローチャートである。
【図３】多様な種類のコンピューティング装置内で具現された一実施形態による経験的インターフェイスを示す図である。
【図４】本発明の一実施形態による不揮発性メモリ装置のストレージコントローラによって実行されるデータ属性基盤データ配置のためのプロセスを示すフローチャートである。
【図５】データベースアプリケーションによって実行されるストレージ動作に関して経験的インターフェイスの動作の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面を参照しながら詳細に説明する。類似の参照符号は全般的に類似の要素を参照する。
【００１６】
本発明の長所、特徴、及びそれを達成する方法は、以下の実施形態の詳細な説明と図面を参照することにより容易に理解できる。しかし、本発明の技術思想は多くの他の形態で具現されるものであり、ここに記載した実施形態に限定されない。むしろ、これらの実施形態は本発明が属する技術分野の通常の技術者に本発明の技術思想を完全且つ全体的に理解できるようにするために提供される。本発明の技術思想は請求項のみによって限定される。図面でレイヤーの厚さや領域は明瞭性のために誇張される。
【００１７】
本明細書で使用する「１つ（ａ）」、「１つ（ａｎ）」、「その（ｔｈｅ）」、及び類似の参照（ｒｅｆｅｒｅｎｔ）の各用語は、本明細書中で明確に記載されない限り、単数及び複数の全てをカバーする。「含む（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、及び「保有する（ｃｏｎｔａｉｎｉｎｇ）」の用語は、特に記載されない限り、オープン終結（ｏｐｅｎ−ｅｎｄｅｄ）用語（例えば、含まれているが、それに限定されないことを意味）である。
【００１８】
本明細書で使用される「アルゴリズム」又は「モジュール」という用語は、ソフトウェアやハードウェア構成要素に制限されない。ハードウェアの構成要素は、特定のタスクを実行するＦＰＧＡ（登録商標：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）を含む。アルゴリズム又はモジュールは、アドレス可能なストレージ媒体内に常駐して、１つ以上のプロセッサで実行されるよう適切に構成される。したがって、アルゴリズム又はモジュールは、以下に示すような構成要素を含む。それらの構成要素は、ソフトウェア構成要素（ｓｏｆｔｗａｒｅ  ｃｏｍｐｏｎｅｎｔｓ）、オブジェクト指向ソフトウェア構成要素（ｏｂｊｅｃｔ−ｏｒｉｅｎｔｅｄ  ｓｏｆｔｗａｒｅ  ｃｏｍｐｏｎｅｎｔｓ）、クラス構成要素及びタスク構成要素（ｃｌａｓｓ  ｃｏｍｐｏｎｅｎｔｓ  ａｎｄ  ｔａｓｋ  ｃｏｍｐｏｎｅｎｔｓ）、プロセス（ｐｒｏｃｅｓｓｅｓ）、機能（ｆｕｎｃｔｉｏｎｓ）、属性（ａｔｔｒｉｂｕｔｅｓ）、プロシージャー（ｐｒｏｃｅｄｕｒｅｓ）、サブルーチン（ｓｕｂｒｏｕｔｉｎｅｓ）、プログラムコードのセグメント（ｓｅｇｍｅｎｔｓ  ｏｆ  ｐｒｏｇｒａｍ  ｃｏｄｅ）、ドライバ（ｄｒｉｖｅｒｓ）、ファームウェア（ｆｉｒｍｗａｒｅ）、プログラムコード（ｍｉｃｒｏｃｏｄｅ）、回路（ｃｉｒｃｕｉｔｒｙ）、データ（ｄａｔａ）、データベース（ｄａｔａｂａｓｅｓ）、データ構造（ｄａｔａ  ｓｔｒｕｃｔｕｒｅｓ）、テーブル（ｔａｂｌｅｓ）、アレイ（ａｒｒａｙｓ）、及び変数（ｖａｒｉａｂｌｅｓ）を含む。構成要素に対して提供された機能及び構成要素又はモジュールは、より少数の構成要素又はモジュールに結合されるか、又は付加的な構成要素及び構成要素又若しくはモジュールにさらに分離される。
【００１９】
他に定義しない限り、本明細書で使用されるすべての技術用語及び科学用語は本発明が属する技術分野の通常の知識を有する者によって一般的に理解されることと同一の意味を有する。いずれか及びすべての例の使用、又はここに提供された用語例は、本発明をさらに明確にするために使用したものであり、他に特定しない限り、本発明の範囲を制限しない。さらに、他に定義しない限り、一般的に使用される辞書内に定義されたすべての用語は過度に厳格に解釈しない。
【００２０】
一例として、本発明の実施形態は、経験的及び自律的インターフェイス（ｈｅｕｒｉｓｔｉｃ  ａｎｄ  ａｕｔｏｎｏｍｏｕｓ  ｉｎｔｅｒｆａｃｅ）を提供する。経験的及び自律的インターフェイスは、コンピュータシステムがＳＳＤのようなストレージ装置内でデータ属性基盤データ配置（ｄａｔａ  ｐｒｏｐｅｒｔｙ−ｂａｓｅｄ  ｄａｔａ  ｐｌａｃｅｍｅｎｔ）方法（例えば、マルチストリーミング）を利用することを可能にする。なお、ストレージ装置はアプリケーションに対する変更を要求しない装置である。
【００２１】
図１は、経験的インターフェイスによって提供された不揮発性メモリ装置内のデータ属性基盤データ配置のためのシステムの一実施形態を示すブロック図である。本明細書に開示される実施形態は、ガーベッジコレクションを要求する任意の不揮発性メモリ装置に適用でき、不揮発性メモリ装置がＳＳＤを含む場合の実施形態に関して説明する。
【００２２】
本システムは、メモリチャンネル１４を通じてＳＳＤ１２に連結されたホストシステム１０を含む。周知のように、ＳＳＤはデータを格納するための可動部品を有しないので、データを維持するための持続的なパワーを必要としない。本発明の一実施形態によるホストシステム１０の構成要素は、プロセッサ１６を含む。プロセッサ１６は、ＯＳ（オペレーティングシステム）２０及びファイルシステム２１を含むメモリ１８からコンピュータ命令を実行する。ホストシステム１０は、メモリチャンネル１４とインターフェイシングするメモリコントローラのような他の構成要素（図示せず）を含む。ホストシステム１０とＳＳＤ１２とは、メモリチャンネル１４を通じてコマンド及びデータ項目（ｄａｔａ  ｉｔｅｍｓ）２８を通信する。一実施形態において、ホストシステム１０は、任意の種類のＯＳを運用する一般的なコンピュータ又はサーバーである。ＯＳの種類の例は、シングル及びマルチユーザー、分散（ｄｉｓｔｒｉｂｕｔｅｄ）、テンプレート（ｔｅｍｐｌａｔｅｄ）、組み込み（ｅｍｂｅｄｄｅｄ）、実時間、及びライブラリを含む。他の実施形態において、本システムは、装置コントローラのような単独構成要素であってもよい。単独構成要素のＯＳは、ライトウェイト（ｌｉｇｈｔｗｅｉｇｈｔ）ＯＳ（又はその一部）又はファームウェアを含む。
【００２３】
ＳＳＤ１２は、ホストシステム１０からデータを格納するためにストレージコントローラ２２及び不揮発性メモリアレイ（ＮＶＭアレイ）２４を含む。ストレージコントローラ２２は、ＮＶＭアレイ２４に格納されたデータを管理し、通信プロトコルを通じてメモリチャンネル１４を経由してホストシステム１０と通信する。ＮＶＭアレイ２４は、任意の種類の不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を含む。任意の種類の不揮発性ランダムアクセスメモリは、フラッシュメモリ、強誘電体ＲＡＭ（ＦｅＲＡＭ）、磁気抵抗性ＲＡＭ（ＭＲＡＭ）、相変化メモリ（ＰＣＭ）、ヤスデ（ｍｉｌｌｉｐｅｄｅ）メモリ等を含む。ＳＳＤ１２及びメモリチャンネル１４の両方は、デュアルチャンネルアーキテクチャ等のようなマルチチャンネルメモリアーキテクチャを支援し、またシングル、ダブル、又はクワッドレートデータ転送を支援する。
【００２４】
一例として、ＳＳＤ１２内のガーベッジコレクションオーバーヘッドを減らすために、本実施形態は、ＳＳＤ１２内で改善されたデータ属性基盤データ配置を提供する。これは経験的インターフェイス２６を提供することによって達成される。経験的インターフェイス２６は、アプリケーション及びハードウェア構成要素の両方がＳＳＤ１２内に異なる寿命を有するデータ項目を別々に格納可能にする。また、幾つかの実施形態において、経験的インターフェイス２６の使用は、ホストシステム１０上で実行中のユーザーアプリケーションに対して変更を要求しない。
【００２５】
一実施形態において、経験的インターフェイス２６は、オペレーティングシステムレベルでインストールされる少なくとも１つのソフトウェア構成要素を含む。ソフトウェア構成要素は、ファイルのようなすべてのデータ項目２８の使用及び更新統計（ｕｐｄａｔｅ  ｓｔａｔｉｓｔｉｃｓ）を継続的にモニターして格納する。初期ウォームアップ又はトレーニング期間の後に、ホストシステム１０によってデータ項目２８に対して実行される全ての生成／ライト／更新の動作は、現在の使用及び更新統計にしたがって動的なデータ属性識別子（データ属性ＩＤ）３０が割り当てられる。一実施形態において、データ属性ＩＤ３０の実際の割り当ては、ＯＳ２０のファイルシステム２１内のソフトウェアフック（ｓｏｆｔｗａｒｅ  ｈｏｏｋ）によって遂行される。
【００２６】
図２は、本発明の一実施形態による経験的インターフェイスを提供するホストシステム上で実行されるプロセスを示すフローチャートであり、経験的インターフェイスは、コンピュータ装置が不揮発性メモリ装置内でデータ属性基盤データ配置を利用可能にする。本プロセスは、コンピュータ装置内のオペレーティングシステムレベルでソフトウェア構成要素（例えば、経験的インターフェイス）を実行することを含む。ソフトウェア構成要素は、不揮発性メモリ装置へのデータ項目（例えば、ファイル）変更（ｄａｔａ  ｉｔｅｍ  ｍｏｄｉｆｉｃａｔｉｏｎｓ）の更新統計をモニターする。更新統計は、データ項目の少なくとも一部に対する更新頻度（ｕｐｄａｔｅ  ｆｒｅｑｕｅｎｃｉｅｓ）、各ファイルタイプ別に固有の累積された更新及び削除の頻度、及びデータファイルの出処（ｏｒｉｇｉｎ）を含む（段階２００）。
【００２７】
ソフトウェア構成要素は、データベース内にデータ項目及びデータ項目種類に対する更新統計を格納する（段階２０２）。一実施形態において、更新統計はホストシステムのメモリ１８とＳＳＤ１２との両方に格納される。
【００２８】
ソフトウェア構成要素は、データ項目に対してアプリケーションによって実行される生成、書込み、及び更新を含む動作を、全てではないが大部分遮断する。そして、ソフトウェア構成要素は、データベース内の現在の更新統計値に基づいてデータ項目の各々に対してデータ属性識別子を自動的に割り当て、データ項目と割り当てられたデータ属性識別子とをメモリチャンネルを通じてストレージ用不揮発性メモリ装置へ伝送する（段階２０４）。一実施形態において、データ属性識別子はタッグ（ｔａｇ）として機能し、当該データ属性識別子が何かを表す情報を実際に伝送する必要はない。
【００２９】
一実施形態によれば、経験的インターフェイス２６は、データ類似性（ｓｉｍｉｌａｒｉｔｙ）を示す１つ以上のデータ属性に基づいて、データ項目２８の各々に対してデータ属性ＩＤ３０を割り当て又は関連付けるために現在の更新統計を使用する。ここで、１つ以上のデータ属性は、データ寿命、データ種類、データサイズ、及び物理的データソースである。更なる実施形態において、論理ブロックアドレス（ＬＢＡ）範囲もまたデータ類似性を示すデータ属性として利用される。例えば、ＬＢＡアクセスのパターンは、類似性の識別子になり、データのグルーピングを要求する。このように、同一又は類似のデータ属性を有するデータ項目２８は、同一のデータ属性識別子の値に割り当てられる。
【００３０】
経験的インターフェイス２６は、オペレーティングシステムレベルで提供されるので、アプリケーションが本実施形態のデータ属性基盤データ配置プロセスと互換性を有するようにするために、現在のアプリケーションに対して変更は要求されない。したがって、経験的インターフェイス２６は、アプリケーション及びオペレーティングシステムを超えて従来のマルチストリーミング（ｃｏｎｖｅｎｔｉｏｎａｌ  ｍｕｌｔｉ−ｓｔｒｅａｍｉｎｇ）の利用を拡張するために、プロセッサ及びオペレーティングシステムを有するいずれの種類のコンピューティング装置でも具現される。
【００３１】
図３は、多様な種類のコンピューティング装置内に具現された一実施形態による経験的インターフェイスを示す図であり、これにより、コンピュータ装置は、データ属性基盤データ配置（例えば、マルチストリーミング）を有するＳＳＤ１２と互換性を有するようになる。コンピューティング装置（３００Ａ及び３００Ｂ）は、各々の経験的インターフェイス（２６Ａ及び２６Ｂ）がオペレーティングシステム（２０Ａ及び２０Ｂ）内に提供されているＰＣ、サーバー、又はストレージサブシステムのようなホスト装置を示す。経験的インターフェイス２６Ａは、アプリケーション３０４Ａによって実行されるデータ項目動作を遮断（ｉｎｔｅｒｃｅｐｔ）し、現在の更新統計に基づいてアプリケーション３０４Ａからのデータ項目の各々に対してデータ属性ＩＤ３０Ａを自動的に割り当てる。同様に、経験的インターフェイス２６Ｂは、ＯＳ２０Ｂのブロック層２３Ｂによって実行されるデータ項目動作を遮断し、現在の更新統計に基づいてブロック層２３Ｂによって動作されるデータ項目の各々に対してデータ属性ＩＤ３０Ｂを自動的に割り当てる。
【００３２】
コンピューティング装置（３００Ｃ及び３００Ｄ）は、スイッチ、ルータ、ＲＡＩＤサーバー、又はホストバスアダプター（ＨＢＡ）システムのようなハードウェア装置を示し、各々の経験的インターフェイス（２６Ｃ及び２６Ｄ）が各ハードウェアの装置コントローラ（３０６Ｃ及び３０６Ｄ）内に提供される。経験的インターフェイス２６Ｃは、装置コントローラ３０６Ｃによって実行されるデータ項目動作を遮断し、現在の更新統計に基づいて装置コントローラ３０６Ｃからのデータ項目の各々に対してデータ属性ＩＤ３０Ｃを自動的に割り当てる。同様に、経験的インターフェイス２６Ｄは、装置コントローラ３０６Ｄによって実行されるデータ項目動作を遮断し、現在の更新統計に基づいて装置コントローラ３０６Ｄからのデータ項目の各々に対してデータ属性ＩＤ３０Ｄを自動的に割り当てる。
【００３３】
図４は、本発明の一実施形態による不揮発性メモリ装置のストレージコントローラによって実行されるデータ属性基盤データ配置のためのプロセスを示すフローチャートである。図３及び図４を参照すると、本プロセスは、メモリチャンネルを通じて、少なくとも１つのオペレーティングシステム又は実行アプリケーション（例えば、ＯＳ：２０Ｂ、アプリケーション：３０４Ａ）から、格納されるデータ項目の第１シリーズ（ｆｉｒｓｔ  ｓｅｒｉｅｓ）を受信する段階を含む。ここで、データ項目の各々は、第１データ属性識別子を含む。第１データ属性識別子は、データ類似性を示す１つ以上のデータ属性に基づいたデータ項目に関連付けされている。１つ以上のデータ属性は、データ寿命、データ種類、データサイズ、及び物理的なデータソースを含む（段階４００）。
【００３４】
一実施形態において、データ種類は、元のアプリケーションの外部の属性を含む。更なる実施形態において、１つ以上のデータ属性は、また論理ブロックアドレス（ＬＢＡ）範囲を含む。ここに列挙されたデータ属性は、考慮されるデータ属性の種類のみに限定されない。例えば、現在は知られていないが、一部の他のデータ属性が将来において、データ類似性を判断するのに使用され得る。一実施形態において、オペレーティングシステムやアプリケーションから受信したデータ項目は、経験的インターフェイス２６以外に他のプロセスによるデータ項目と関連付けされたデータ属性識別子を含む。
【００３５】
ストレージコントローラは、メモリチャンネルを通じて、ハードウェアの装置コントローラ（例えば、装置コントローラ（３０６Ｃ及び３０６Ｄ））から、格納されるデータ項目の他のシリーズを受信する。ここで、データ項目の各々は、第２データ属性識別子を含む。第２データ属性識別子は、データ類似性を示す１つ以上のデータ属性に基づいたデータ項目に関連付けされている。１つ以上のデータ属性は、データ寿命、データ種類、データサイズ、及び物理的なデータソースを含む（段階４０２）。
【００３６】
ストレージコントローラは、データ属性識別子をリードし、ＮＶメモリ装置の中のいずれのブロックが、対応するデータ項目を格納するかを識別する。したがって、同一のデータ属性識別子を有するデータ項目が同一ブロック内に格納され（段階４０４）、そしてストレージコントローラは、当該データ項目を識別されたブロックに格納する（段階４０６）。
【００３７】
例えば、図３において、ＳＳＤ１２のストレージコントローラ２２は、各々データ属性ＩＤ（３０Ａ及び３０Ｂ）が割り当てられているコンピューティング装置（３００Ａ及び３００Ｂ）からデータ項目を受信する。ストレージコントローラ２２は、その後、同一の消去ブロック３０８Ａ内でデータ属性ＩＤ３０Ａと関連付けられたデータ項目を格納し、同一の消去ブロック３０８Ｂ内でデータ属性ＩＤ３０Ｂと関連付けられたデータ項目を格納する。同様に、ＳＳＤ１２のストレージコントローラ２２は、各々データ属性ＩＤ（３０Ｃ及び３０Ｄ）が割り当てられているコンピューティング装置（３００Ｃ及び３００Ｄ）の装置コントローラ（３０６Ｃ及び３０６Ｄ）からデータ項目を受信する。ストレージコントローラ２２は、その後、同一の消去ブロック３０８Ｃ内でデータ属性ＩＤ３０Ｃと関連付けられたデータ項目を格納し、同一の消去ブロック３０８Ｄ内でデータ属性ＩＤ３０Ｄと関連付けられたデータ項目を格納する。
【００３８】
一実施形態による経験的インターフェイス２６にしたがって、データ属性ＩＤ３０は、格納のために任意のタイプの入力装置から出力されたデータ項目２８に割り当てられる。例えば、経験的インターフェイス２６が、１秒に１回のように、周期的にイメージを取得するデジタル保安カメラ内に具現されていると仮定する。経験的インターフェイス２６は、イメージのキャプチャレート（ｃａｐｔｕｒｅ  ｒａｔｅ）、イメージファイルサイズ、及びイメージの出処（例えば、装置ＩＤ及び／又はＧＰＳ位置）等のような、データ類似性を示すデータ属性に基づいて各イメージファイルに対してデータ属性ＩＤ３０を割り当てる。そのようなデータ属性は、従来のマルチストリーミングによって使用されるメタデータ（ｍｅｔａｄａｔａ）のように特定のアプリケーションやファイルシステムに関連付けられる必要が無いことに注目しなければならない。
【００３９】
図５は、データベースアプリケーションによって実行されるストレージ動作に関して経験的インターフェイスの動作の一例を示す図であり、具体的に、経験的インターフェイスによる識別子割り当てプロセスの一例をより詳細に示すブロック図である。図１及び図３と同様に、経験的インターフェイス２６は、ホストシステム１０のオペレーティングシステム２０レベルで提供される。経験的インターフェイス２６は、アプリケーション３００、ファイルシステム２１、及びブロック層２３と装置ドライバの動作を監視する。経験的インターフェイス２６は、データ類似性を示す更新統計内のデータ属性に基づいてデータ項目に対してデータ属性ＩＤ３０を割り当てる。ＳＳＤ１２は、データ属性ＩＤ３０をリードし、ＳＳＤ１２のいずれのブロックが、対応するデータ項目を格納するのに使用されたかを認識して、同一のデータ属性ＩＤ３０を有するデータ項目が同一ブロック内に格納されるようにする。
【００４０】
幾つかの実施形態で、経験的インターフェイス２６は、２つのソフトウェア構成要素を含む。即ち、オペレーティングシステム２０内にインストールされた統計デーモン（ｓｔａｔｓ  ｄｅｍｏｎ）６００と、ファイルシステムレベルでシステムコールフック（ｓｙｓｔｅｍ  ｃａｌｌ  ｈｏｏｋ）として具現されたマップフック６０２である。統計デーモン６００は、ＳＳＤ１２に対するデータ項目変更を含む少なくとも１つの経験的／統計的データベース（経験的データベース）６０４を管理して維持するため（拡張された点線のボックスで示す）に、バックグラウンド（ｂａｃｋｇｒｏｕｎｄ）で継続的に実行される。マップフック６０２は、すべての更新動作を遮断し、経験的データベース６０４内の現在の統計にしたがってファイル更新動作６１０の各々に対してデータ属性ＩＤ３０を自動的に割り当てる。
【００４１】
一実施形態において、経験的データベース６０４内に格納された統計は２種類、即ちファイル名基盤統計及びファイルタイプ基盤統計を含む。ファイル名基盤統計は、各データファイルに対する更新頻度（リライト、更新、削除、トランケート（ｔｒｕｎｃａｔｅ）動作を含む）を記録する。ファイルタイプ基盤統計は、特定のファイルタイプに対する累積された更新及び削除頻度を格納する。一実施形態において、両統計のセットは、各ファイル更新によって更新され、メモリ１８とＳＳＤ１２との両方に格納される。
【００４２】
一実施形態において、経験的データベース６０４は、各々のテーブルを使用して２種類の統計を格納する。ここで、テーブルはファイル名基盤統計テーブル６０６及びファイルタイプ基盤統計テーブル６０８と称される。一実施形態において、テーブルは、ハッシュテーブル（ｈａｓｈ  ｔａｂｌｅｓ）として具現される。ファイル名基盤統計テーブル６０６内の各エントリはファイル名であるキー（ｋｅｙ）、及び全体寿命の間にファイルに対する全更新数（リライト、更新、トランケートを含む）を含む値を含む。新しいファイルの生成に応答して、統計デーモン６００は、ファイル名基盤統計テーブル６０６に対して新しいエントリを生成する。削除されたファイルに応答して、統計デーモン６００はファイル名基盤統計テーブル６０６内に対応するエントリを削除する。
【００４３】
ファイルタイプ基盤統計テーブル６０８内の各エントリは、ファイルタイプ（ｍｐ３、ｍｐｇ、ｘｌｓ等）であるキー、及びこのタイプのファイルに加えられたすべての更新（リライト、更新、トランケート、及び削除を含む）をこのファイルタイプのファイル数で除算した値を含む。新しいタイプの生成に応答して、統計デーモン６００はファイルタイプ基盤統計テーブル６０８内に新しいエントリを生成する。そして、統計デーモン６００はエントリが追加された後に何れのエントリも削除しない。
【００４４】
統計デーモン６００は、またオペレーティングシステムのブートアップ（ｂｏｏｔ  ｕｐ）後、ＳＳＤ１２からメモリ１８へこれら２つのハッシュテーブルをローディングする責任があり、永久格納のためにＳＳＤ１２へテーブルを周期的にフラッシュ（ｆｌｕｓｈ）する。２つのハッシュテーブルは、ＳＳＤ１２内に一般データファイルとして格納される。
【００４５】
新しくインストールされたオペレーティングシステムに対して、経験的インターフェイス２６は、データ属性ＩＤ３０を効果的に割り当てるための充分な統計を収集するために、構成可能なウォームアップ区間（ｃｏｎｆｉｇｕｒａｂｌｅ  ｗａｒｍ−ｕｐ  ｐｅｒｉｏｄ）を要求する。
【００４６】
マップフック６０２は、アプリケーション３００及びＯＳ（オペレーティングシステム）２０によってすべてのファイルに対して行われたすべてのファイル更新動作（生成／ライト／更新／削除）６１０を遮断するために、ファイルシステムレベルでシステムコールフックとして具現される。ウィンドウズ（登録商標）、リナックス（登録商標）等のような大部分のオペレーティングシステムは、システムプログラミング目的のためにファイルシステムフックを提供する。
【００４７】
ファイル更新動作６１０の遮断に応答して、マップフック６０２は、関連情報を統計デーモン６００へ送るために経験的データベース更新動作６１２によって実行される。マップフック６０２はその後、経験的データベース６０４をリードするブロック６１４を通じてデータ属性ＩＤ計算を実行する。そして、マップフック６０２は、現在の統計にしたがって実際のファイル書込み（ａｃｔｕａｌ  ｆｉｌｅ  ｗｒｉｔｅｓ）のためにデータ属性ＩＤ３０を計算して、ライン６１６を通じて割り当てる。ファイル生成又は新たなファイル書込み（ｆｒｅｓｈ  ｆｉｌｅ  ｗｒｉｔｅｓ）は、ファイルのタイプ及び現在のファイルタイプ統計にしたがってデータ属性ＩＤ３０へ割り当てられる。一方、ファイルデータ更新は、更新頻度及び現在の更新頻度統計にしたがってデータ属性ＩＤ３０に割り当てられる。最後に、マップフック６０２は、実際のファイル書込みを、ブロック６１８を通じて下部（ｕｎｄｅｒｌｙｉｎｇ）のファイルシステム２１へ伝送する。
【００４８】
マップフック６０２は、データ属性ＩＤを計算し、割り当てるために２つの統計ハッシュテーブル（６０６及び６０８）に基づくアルゴリズムを使用する。以下は簡略化された具現例である。ハッシュテーブルルックアップ及び計算オーバーヘッドは、非常に最小化され、ＳＳＤリード／ライトスループットには影響が無くなる。追加情報がこれらの統計ハッシュテーブル（６０６及び６０８）に追加され、より複雑なストリームＩＤ計算アルゴリズムが使用される。
【００４９】
一実施形態において、簡略化データ属性ＩＤ計算アルゴリズムの例を、以下に示す。
【００５０】
【数３】
2017021805.tif 000003
【００５１】
データ属性ＩＤ計算の例として、以下を仮定する。使用者は、ｆｏｏ．ｊｐｇ（ＪＰＧファイルタイプ）と命名されたフォトファイルを編集するためにフォトアプリを編集中であり、使用者のコンピュータのＳＳＤは、４つのデータ属性ＩＤ又はストリームＩＤを取り扱うように構成されているとする。使用者がフォトをＳＳＤ１２に格納する時、マップフック６０２はファイルセーブ要請を遮断し、ファイルタイプを決定して、その特定のファイルの更新頻度及びＪＰＥＧファイルタイプに対する更新頻度を経験的データベース６０４内に更新する。
【００５２】
マップフック６０２は、またＪＰＥＧファイルタイプに対するライト頻度（例えば、１日当たり）のみでなく、すべてのファイルタイプに亘って最大ライト頻度に対する現在の統計をサーチする。本実施形態で、ＪＰＥＧファイルタイプは、１日当たりライト頻度１０を有し、「．ｍｅｔａ」ファイルタイプが１日当たりライト頻度１００を有すると仮定すれば、ライト頻度１００はすべてのファイルタイプにおいて最も高い又は最大ライト頻度である。マップフック６０２はその後、次式を利用してファイルセーブ動作に対して割り当てられるデータ属性ＩＤを割り当てる。
【００５３】
【数４】
2017021805.tif 000004
【００５４】
１のデータ属性ＩＤは、ファイルシステム２１及びブロック層２３を通じて、格納及び０のデータ属性ＩＤが割り当られた他のデータを格納するブロックのためのＳＳＤ１２にファイルデータで伝送される。
【００５５】
他の実施形態において、経験的インターフェイス（即ち、統計デーモン６００及びマップフック６０２）２６と経験的データベース６０４内の更新統計に基づいたデータ属性ＩＤの割り当ては、ＯＳブロックストレージ層２３又はＳＳＤ１２の内部で具現される。２つの場合に対して、統計デーモン６００は、各ストレージブロックに対して更新統計を格納するためにルックアップテーブルを維持することのみが必要であり、マップフック６０２は、ルックアップテーブル内に格納された更新頻度にしたがって各ブロック更新に対してデータ属性ＩＤを計算して、割り当てる。ＯＳブロックストレージ層２３の内部での具現の場合に、マップフック６０２はファイルシステム２１の代わりにＯＳのブロック（ストレージ）層２３内に具現され、統計デーモン６００はオペレーティングシステムの一部であるカーネルモードデーモンである。統計ハッシュテーブル（６０６及び６０８）は、メモリとＳＳＤ１２内の特定パーティションの全てに格納される。データ属性基盤のＳＳＤ１２の内部に具現される場合、統計ハッシュテーブル（６０６及び６０８）は、ストレージ空間を節約するためにＮＡＮＤフラッシュメモリスペア領域内に格納され、統計ハッシュテーブル（６０６及び６０８）のインメモリ（ｉｎ−ｍｅｍｏｒｙ）部分は格納されて、現在のＳＳＤ  ＦＴＬマッピングテーブルとマージされる。
【００５６】
一実施形態において、経験的インターフェイス２６は、ソフトウェア構成要素として具現される。他の実施形態において、経験的インターフェイス２６は、ハードウェアとソフトウェアの組み合せとして具現される。統計デーモン６００とマップフック６０２とは別の構成要素として示しているが、各々の機能はより小さいか又は大きい数のモジュール／構成要素に結合される。例えば、他の実施形態において、統計デーモン６００及びマップフック６０２は、１つの集積された構成要素として具現される。
【００５７】
一実施形態による経験的インターフェイス２６は、クライアントから企業に至るストレージ市場の広範囲に亘って適用される。インターフェイス２６は、シングルスタンドアローンマシーン（ｓｉｎｇｌｅ  ｓｔａｎｄａｌｏｎｅ  ｍａｃｈｉｎｅ）のためのディスクに適用される。マシーンはデスクトップコンピュータ（ｄｅｓｋｔｏｐ）、ラップトップ（ｌａｐｔｏｐ）、ワークステーション（ｗｏｒｋｓｔａｔｉｏｎ）、サーバー（ｓｅｒｖｅｒ）等である。インターフェイス２６は、ストレージアレイ（ｓｔｏｒａｇｅ  ａｒｒａｙ）、ソフトウェア定義ストレージ（ｓｏｆｔｗａｒｅ−ｄｅｆｉｎｅ  ｓｔｏｒａｇｅ：ＳＤＳ）、応用特定ストレージ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｓｔｏｒａｇｅ）、仮想マシーン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ：ＶＭ）、仮想デスクトップコンピュータインフラストラクチャー（ｖｉｒｔｕａｌ  ｄｅｓｋｔｏｐ  ｉｎｆｒａｓｔｒｕｃｔｕｒｅ：ＶＤＩ）、コンテント分配網（ｃｏｎｔｅｎｔ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｎｅｔｗｏｒｋ：ＣＤＮ）、等に適用される。
【００５８】
一実施形態において、例えば、ＳＳＤ１２のＮＶＭアレイ２４は、複数のフラッシュメモリのような複数の不揮発性メモリチップで形成される。他の例として、ＮＶＭアレイ２４は、フラッシュメモリチップの代わりに他の種類の不揮発性メモリチップで形成される。他の種類の不揮発性メモリチップは、例えばＰＲＡＭ、ＦｅＲＡＭ、ＭＲＡＭ、又はその他のメモリである。あるいはまた、ＮＶＭアレイ２４は、ＤＲＡＭやＳＲＡＭ等のような揮発性メモリで形成されることができ、２種類以上のメモリが混合されたハイブリッド形態を有し得る。
【００５９】
以上、コンピュータシステムがデータ配置方法を利用可能にする経験的及び自律的インターフェイスのための方法及びシステムを開示した。本発明は、上述した実施形態にしたがって説明したが、実施形態に対する変更は可能である。本発明の技術的思想と技術範囲内で多様な変更が存在する。例えば、本発明の実施形態は、ハードウェア、ソフトウェア、プログラム命令を含むコンピュータ読出し可能媒体、又はそれらの組合を利用して具現される。本発明の方法を記録したソフトウェアは、メモリ、ハードディスクのようなコンピュータ読出し可能媒体の一部形式に格納されるか又はＣＤ／ＤＶＤ−ＲＯＭの一部形式に格納される。ソフトウェアはプロセッサによって実行される。したがって、多くの変更が特許請求項の範囲を逸脱しないで本技術分野の通常の知識を有する者によって行われる。
【符号の説明】
【００６０】
１０    ホストシステム（コンピューティング装置）
１２    ソリッドステートドライブ（ＳＳＤ）
１４    メモリチャンネル
１６    プロセッサ
１８    メモリ
２０、２０Ａ、２０Ｂ    ＯＳ（オペレーティングシステム）
２１    ファイルシステム
２２    ストレージコントローラ
２３    ブロック層（ＯＳブロックストレージ層）
２４    不揮発性メモリアレイ（ＮＶＭアレイ）
２６、２６Ａ、２６Ｂ、２６Ｃ、２６Ｄ    経験的インターフェイス
２８    データ項目
３０、３０Ａ、３０Ｂ、３０Ｃ、３０Ｄ    データ属性ＩＤ
３００、    アプリケーション
３００Ａ、３００Ｂ、３００Ｃ、３００Ｄ    コンピューティング装置
３０４Ａ、３０４Ｂ    アプリケーション
３０６Ｃ、３０６Ｄ    装置コントローラ
３０８Ａ、３０８Ｂ、３０８Ｃ、３０８Ｄ    消去ブロック
６００    統計デーモン（ＳＴＡＴＳデーモン）
６０２    マップフック（ＭＡＰフック）
６０４    経験的データベース（経験的／統計的データベース）
６０６    ファイル名基盤統計テーブル（統計ハッシュテーブル）
６０８    ファイルタイプ基盤統計テーブル（統計ハッシュテーブル）
６１０    ファイル更新動作
６１２    経験的データベース更新動作
６１４    ブロック（データ属性ＩＤ計算）
６１６    ライン（データ属性ＩＤ割り当て）
６１８    ブロック（実際のファイル書込み）
【図１】
2017021805.tif 000007
【図２】
2017021805.tif 000008
【図３】
2017021805.tif 000009
【図４】
2017021805.tif 000010
【図５】
2017021805.tif 000011