(57)【要約】【課題】メモリおよびコントローラを備える装置およびデータ記憶装置を備える装置を提供する。【解決手段】データ記憶装置のデータ記憶領域が、データ記憶装置と、外部装置またはソフトウェアとの間の情報をやり取りするために用いられることができる。いくつかの例において、データ記憶領域内に記憶される構成データは、データの組を決定して、第１のデータ記憶媒体から第２のデータ記憶媒体へとコピーまたは移動させるために用いられることができる。データ記憶領域は、一意のパーティションとすることができ、データ記憶装置は、パーティションの情報を、そのパーティションの場所を決定するために配置することができる。データ記憶装置は、次に、そのパーティションを用いて、データ記憶装置と、外部システム、装置またはソフトウェアとの間の二方向の通信のためにデータを保存することができる。【選択図】図２
2015158902.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリと、
第２のメモリと、
前記第１のメモリおよび前記第２のメモリに結合されるコントローラとを備え、
前記コントローラは、前記第１のメモリの第１のデータ記憶領域に記憶されるべき第１のデータを受取るように構成され、前記第１のデータは、前記第１のメモリから前記第２のメモリへと転送されるべき他のデータのインジケータを含み、
前記コントローラは、前記第１のデータに基づいて、前記第２のメモリに、前記他のデータを保存するように構成される、装置。
【請求項２】
前記第１のデータ記憶領域は、前記第１のデータを保存するために予約されたパーティションである、ダイレクトヒントパーティションである、請求項１に記載の装置。
【請求項３】
前記コントローラは、さらに、前記ダイレクトヒントパーティションの一意識別子を検索することによって、前記第１のデータ記憶領域を決定するように構成される、請求項２に記載の装置。
【請求項４】
前記第１のメモリは、不揮発性メモリであり、
前記第２のメモリは、前記第１のメモリと異なるメモリ特性を有する、不揮発性ソリッドステートメモリである、請求項１に記載の装置。
【請求項５】
前記インジケータは、前記第１のメモリに記憶される前記他のデータに対応する第１のデータ領域アドレスを含む、請求項１に記載の装置。
【請求項６】
前記インジケータは、前記第１のメモリに記憶される前記他のデータに対応する複数のデータ領域アドレスを含む、請求項１に記載の装置。
【請求項７】
前記第１のデータは、前記インジケータが保存されるファイルを含む、請求項１に記載の装置。
【請求項８】
前記第１のデータは、ヘッダを含み、
前記インジケータは、１以上の論理ブロックアドレス（ＬＢＡ）であり、
前記ヘッダは、前記１以上のＬＢＡに関連付けられた前記他のデータが、前記第２のメモリに記憶されるべきであることを示す第２のインジケータを含む、請求項１に記載の装置。
【請求項９】
前記装置は、ホストをさらに備え、前記ホストは、
ホストプロセッサと、
前記ホストプロセッサによって実行されるように構成されたソフトウェアと、
データ記憶装置に接続するように適合されたホストインターフェイスとを含み、
前記装置は、データ記憶装置をさらに備え、データ記憶装置は、
前記ホストインターフェイスと接続されて、前記データ記憶装置に対する前記ホストの接続および切り離しを可能にするとともに、前記ホストと前記データ記憶装置との間で、通信およびデータの伝送を可能にするように適合されたデータ記憶インターフェイスと、
前記第１のメモリと、
前記第２のメモリと、
前記コントローラとを含む、請求項１に記載の装置。
【請求項１０】
データ記憶装置を備え、前記データ記憶装置は、
第１のデータ記憶媒体と、
第２のデータ記憶媒体と、
前記第１のデータ記憶媒体および前記第２のデータ記憶媒体に結合されたコントローラとを含み、前記コントローラは、ホストから受けた第１のデータを、前記第１のデータ記憶媒体の第１のデータ記憶領域に保存するように適合され、前記第１のデータは、前記データ記憶装置を構成するための前記ホストからの情報を含み、
前記コントローラは、前記情報に基づいて前記データ記憶装置を構成するように適合される、装置。
【請求項１１】
前記装置は、ホストをさらに備え、前記ホストは、
ホストプロセッサと、
前記ホストプロセッサによって実行されるように構成されたソフトウェアとを含み、
前記データ記憶装置は、さらに、
前記ホストと接続されて、前記データ記憶装置に対する前記ホストの接続および切り離しを可能にするとともに、前記ホストと前記データ記憶装置との間で、データの転送を可能にするように適合された、データ記憶インターフェイスをさらに含む、請求項１０に記載の装置。
【請求項１２】
前記ソフトウェアは、
前記情報を決定し、
前記データ記憶装置の予約されたパーティションに、前記情報の保存を開始するように構成される、請求項１１に記載の装置。
【請求項１３】
前記情報は、前記第２のデータ記憶媒体にコピーされるべき、前記第１のデータ記憶媒体に記憶されるデータのインジケータを含み、
前記コントローラは、前記インジケータに基づいて、前記第２のデータ記憶媒体に前記データを保存するように構成される、請求項１２に記載の装置。
【請求項１４】
前記ソフトウェアは、選択されたデータに関連付けられた１以上の論理ブロックアドレス（ＬＢＡ）を決定し、前記ホストからの情報に、前記１以上のＬＢＡを含めることによって、前記インジケータを生成するように適合される、請求項１３に記載の装置。
【請求項１５】
前記ソフトウェアは、前記１以上のＬＢＡのリストを含むファイルを生成して、前記情報に前記ファイルを含めるように適合される、請求項１４に記載の装置。
【請求項１６】
前記情報は、バックグラウンドアクティビティ、フォアグラウンドアクティビティ、電源、バッテリレベル、ホストまたはシステム構成、リソース利用、アドレスに書込まれるコンテンツの識別子、故障の間の動作における処理、故障の間の動作におけるコマンド、時間に厳しい動作の間にバックグラウンドアクティビティを遅延させるための要求、起動指示の終了、フォアグラウンドアクティビティアクセスの識別子、バックグラウンドアクティビティアクセスの識別子、およびスワップファイル識別子のうちの少なくとも１つを含む、請求項１０に記載の装置。
【請求項１７】
データ記憶装置を備え、前記データ記憶装置は、
前記データ記憶装置内に記憶されるコンフィギュレーションデータを読出し、
前記コンフィギュレーションデータに基づいて、第１のデータ記憶媒体から第２のデータ記憶媒体へとユーザデータを転送するように構成される、装置。
【請求項１８】
前記データ記憶装置は、前記コンフィギュレーションデータを受けて前記コンフィギュレーションデータを記憶するように構成され、前記コンフィギュレーションデータは、前記ホストを介してユーザによって選択されたファイルに対するポインタを含み、前記第１のデータ記憶媒体における前記ユーザデータは、前記ファイルと関連付けられる、請求項１７に記載の装置。
【請求項１９】
前記データ記憶装置は、
不揮発性メモリである前記第１のデータ記憶媒体と、
不揮発性記憶媒体である前記第２のデータ記憶媒体と、
前記第１のデータ記憶媒体および前記第２のデータ記憶媒体のためのデータ記憶動作を開始するように構成されたコントローラと、
前記データ記憶装置に対する前記ホストの接続および切り離しを可能にするとともに、前記ホストと前記データ記憶装置との間で、データの転送を可能にするように適合されたインターフェイスとを含む、請求項１７に記載の装置。
【請求項２０】
前記コンフィギュレーションデータは、ホストデータのために用いられるすべてのパーティションから分離された特定のパーティション内に保存される、請求項１７に記載の装置。
【請求項２１】
前記特定のパーティションは、前記コンフィギュレーションデータを保存するために、ヘッダと１以上の保存領域とを含む予め定められたデータ構造を有し、前記ヘッダは、予約された領域において識別されるデータ記憶領域が、前記第２のデータ記憶媒体において記憶されるべきであるということのインジケータを含む、請求項２０に記載の装置。
【発明の詳細な説明】
【発明の概要】
【課題を解決するための手段】
【０００１】
概要
いくつかの実施の形態において、装置は、第１のメモリと、第２のメモリと、第１のメモリおよび第２のメモリに結合されたコントローラとを備えることができる。コントローラは、第１のメモリの第１のデータ記憶領域に記憶されるべき第１のデータを受けるように構成されることができ、第１のデータは、第１のメモリから第２のメモリへと転送されるべき他のデータのインジケータを含み、コントローラは、第１のデータに基づいて第２のメモリに他のデータを保存するように構成されることができる。
【０００２】
いくつかの実施の形態において、装置は、第１のデータ記憶媒体と、第２のデータ記憶媒体と、第１のデータ記憶媒体および第２のデータ記憶媒体に結合されるコントローラとを含むデータ記憶装置を備えることができる。コントローラは、ホストから受けた第１のデータを、第１のデータ記憶媒体の第１のデータ記憶領域において保存するように適合されることができ、第１のデータは、データ記憶装置を構成するためにホストからのデータを含み、コントローラは、情報に基づいてデータ記憶装置を構成するように適合されることができる。
【０００３】
いくつかの実施形態において、装置は、データ記憶装置内に記憶されたコンフィギュレーションデータを読出して、コンフィギュレーションデータに基づいて第１のデータ記憶媒体から第２のデータ記憶媒体へとユーザデータを転送するように構成されたデータ記憶装置を備えることができる。
【図面の簡単な説明】
【０００４】
【図１】ダイレクトヒントパーティションを有するメモリ装置を示す図である。
【図２】ダイレクトヒントパーティションを有するパーティション構造を示す図である。
【図３】ダイレクトヒントパーティションのデータ構造を示す図である。
【図４】ダイレクトヒントパーティションに情報を保存する方法を示す図である。
【図５】ダイレクトヒントパーティションに記憶される情報に基づいてメモリ装置を構成する方法を示す図である。
【図６】ダイレクトヒントパーティションに情報を保存する方法を示す図である。
【図７】ダイレクトヒントパーティションに保存される情報に基づいてメモリ装置を構成する別の方法を示す図である。
【図８】ダイレクトヒントパーティションを実現するように適合されたシステムを示す図である。
【発明を実施するための形態】
【０００５】
詳細な説明
以下の詳細な説明において、この詳細な説明の一部を形成し、図示によって示される添付の図面が参照される。この開示の範囲を逸脱することなく、さまざまな記述された実施の形態の特徴が組合せ可能であり、他の実施の形態が利用可能であり、構造的な変更がなされてもよい、ということが理解されるべきである。この開示の範囲を逸脱することなく、本明細書でのさまざまな実施の形態および実施例が組合わせ可能であり、交換可能であり、取除くことが可能である、ということが理解されるべきである。たとえば、以下の詳細な説明は、主にディスクドライブとフラッシュメモリとを参照するであろう。しかしながら、本明細書において記述される実施の形態は、如何なる種類のデータ記憶装置またはメモリ、または異なる種類のメモリの如何なる組合せにも適用可能である。いくつかの実施例において、１以上の異なる記憶特性を有する第１のメモリおよび第２のメモリを、たとえば第２のメモリタイプが第１のメモリタイプよりも高速のデータアクセス能力を有するように利用することができる。いくつかの実施形態において、たとえば単一レベルセル不揮発性ソリッドステートメモリおよびマルチレベルセル不揮発性ソリッドステートメモリ、または不揮発性ソリッドステートメモリおよび磁気ディスクメモリのように、異なるメモリ特性は、異なる構造の種類のメモリであってもよい。さまざまな構成において、メモリは、不揮発性ソリッドステートメモリ、揮発性ソリッドステートメモリ、磁気ディスクメモリ、他の種類のメモリ、またはそれらの如何なる組合せであってもよい。
【０００６】
メモリ（すなわちデータ記憶装置）の例が、ディスクドライブ１００として図１に示される。ディスクドライブ１００は、クランプ１２０によるカップリングを通じてスピンドルモータ（図示せず）によって回転させられる。アクチュエータアセンブリ１３０は、モータ１４０によって動かされて、磁気媒体１１０の表面に対して相対的にトランスデューサ（図示せず）を位置付ける。ディスクドライブ１００は、さらに、ＤＲＡＭまたは不揮発性メモリ（たとえばフラッシュメモリのような）、またはその両方とすることができるメモリ１５０を含む。ファームウェア１６０は、ハードウェア１７０を制御してディスクドライブ１００の機能を実行する。これらの機能のうちのいくつかは、後に詳細に説明されるであろう。ストレージコントローラは、ファームウェア１６０およびハードウェア１７０を含むことができる。ファームウェア１６０は、メモリ１５０、磁気媒体１１０、ハードウェア１７０、または図示されない他のメモリに存在することができる。
【０００７】
データ記憶装置について有利な機会は、記憶されたデータにアクセスする時間を減少させることである。例示すると、デスクトップコンピュータは、ＤＲＡＭとともに同じマザーボードに搭載されたマイクロプロセッサを用いることができる。ディスクドライブのようなデータ記憶装置は、ストレージインターフェイス標準コネクタおよびインターフェイス通信プロトコルを介してマザーボードに接続される。このアーキテクチャにおいて、ＤＲＡＭ中のデータ、情報およびプログラムにアクセスする時間は、ディスクドライブにアクセスする時間の数オーダー分の１の大きさである。
【０００８】
データ記憶装置におけるアクセス時間を減少するための１つの方法は、キャッシングを介することである。ディスクドライブにおいて、キャッシングは、ＤＲＡＭのような、ディスクドライブの磁気媒体よりも高速のアクセス時間を有することができるキャッシュメモリによって達成可能である。たとえば、図１におけるメモリ１５０は、キャッシュメモリとして用いることができる。あるキャッシングの方法は、頻繁にアクセスされるデータをキャッシュに格納することであってもよい。他の方法は、データをキャッシュに格納するために時間的または空間的関係を用いることができる。これらのキャッシングの方法は、アクセス時間を減少することが可能であるが、高速のアクセス時間がさらに望ましい。
【０００９】
いくつかの実施例において、ソリッドステートハイブリッドドライブ（ＳＳＨＤ）は、フラッシュメモリのような不揮発性ソリッドステートメモリにデータをキャッシングすることによってディスクドライブの性能を改善することができ、そのような不揮発性ソリッドステートメモリは、キャッシュされたデータを読み出すときにレイテンシを減少する。すなわち、図１におけるメモリ１５０は、フラッシュメモリのような不揮発性ソリッドステートメモリとすることができる。磁気媒体の容量よりも不揮発性ソリッドステートメモリの容量が小さくあり得るため、不揮発性メモリにどのデータを記憶するのが有利であるかについて判断することができる。ＳＳＨＤは、ホストオペレーティングシステムが行う（たとえばアクセス頻度、一時的関係、など）ときのような、これらの判断を行なうのに有利に役立つ情報（たとえばアクセス頻度、空間的および時間的関係、シーケンシャルアクセス、レイテンシなど）を有することができる。メモリは、キャッシュデータを記憶するように選択されてもよいが、それは、そのメモリが、より高速で、より信頼性が高く、他のメモリよりも電力の使用が少なく、あるいは他の理由によるためである。いくつかの例において、メモリの一部は、磁気ディスクの一部または、不揮発性ソリッドステートメモリの一部のようなキャッシュのために用いられることができる。
【００１０】
「自己ピニング」ＳＳＨＤは、どのデータをキャッシュに格納するかを判断するためにＳＳＨＤの内部ファームウェアを用いることができる。これは、ホストシステムにデータキャッシングを制御させる設計において意義のある改善をもたらすことができる。改善は、いくつかの局面に由来する。その局面とは、たとえば、どのアクセスが長いレイテンシをもたらすかということをドライブが知っていること、ドライブファームウェアが、不揮発性メモリ内および磁気媒体上に塊データがあるということを確保できること、および判断およびデータの移動が、ホストシステムの何らかのリソースを利用することなく達成可能であるということである。
【００１１】
上記のように、どのデータをデータ記憶装置にキャッシュするかを判断するのに有益であり得るホストシステム（たとえばオペレーティングシステム）またはソフトウェアアプリケーションによって、情報を所有することができる。この情報により、データ記憶装置は、より大きな性能ゲインを与えることができる。ホストシステムは、読出および書込命令を介してドライブに示唆を送ることによって、どのデータ（たとえば、どのＬＢＡ）がキャッシュされるべきかをデータ記憶装置に対して「ヒントを与える」メカニズムを用いることができる。このメカニズムの実現は、問題があり得るとともに、ホストアルゴリズムとＳＳＨＤアルゴリズムとがともにうまく動くのを確保するために、開発において重要な相互作用を含み得る。そのメカニカルの実現は、また、ホストシステムソフトウェア開発において相当な作業を生成する。これは、データ記憶装置に情報を渡す間接的な方法と見なすことができる。
【００１２】
いくつかの実施例において、情報は、ソフトウェアアプリケーションまたはホスト（集合的には「システム」の例）オペレーティングシステム（ＯＳ）からデータ記憶装置に、データ記憶装置上の１組のＬＢＡを、ソフトウェアアプリケーションまたはホストＯＳとデータ記憶装置との通信のための１組のレジスタとして使用することによって、渡されることができる。ある実施の形態において、アプリケーションソフトウェアまたはホストＯＳによって、一意のパーティションが、排他的使用のためにデータ記憶装置上に作成可能である。これは、あらゆる他のＯＳまたはソフトウェアアプリケーション機能が、一意のパーティションにおいてデータが衝突することを防ぐことが可能な、指定された１組のＬＢＡを保存することができる。それは、一意のパーティションに割当てられた１組のＬＢＡが変わらないであろうことを保証することができる。
【００１３】
パーティションおよびパーティションタイプは、マスタブートレコード（ＭＢＲ）またはグローバル一意識別子（ＧＵＩＤ）パーティションテーブル（ＧＰＴ）から決定することができる。ＭＢＲパーティションテーブルは、パーティションタイプおよびロケーションを決定するために、電源投入時にホストシステムＢＩＯＳによって読出されることができる。ＧＰＴは、ユニファイドエクステンシブルファームウェアインターフェイス（「ＵＥＦＩ」）バイアス規格を用いる。ＵＥＦＩバイアスを有するＧＰＴは、ベンダーカスタマイゼーションに適用可能であるとともに、より簡単な実現を可能にする。ＧＰＴを用いることにより、特定のパーティションタイプ（「ダイレクトヒントパーティション」）は、ソフトウェアアプリケーションまたはホストＯＳが、カスタムコマンドまたは特別コマンドを実現するためにドライバを使用する必要なしに通信可能なように生成可能である。いくつかの実施の形態において、ダイレクトヒントパーティションは、ホストまたはデータ記憶デバイスシステム情報のために用いられる如何なるパーティションからも分離される。
【００１４】
ＧＰＴを用いるために、データ記憶装置において記憶されるパーティション構造が図２ａを参照してまず説明される。ＧＰＴパーティション構造２００は、レガシーシステムに用いられるプロテクティブＭＢＲ２１０を含む。プライマリＧＰＴヘッダ２２０は、パーティションに利用可能なＬＢＡアドバイス範囲を定義し、他のシステム情報を含む。パーティションエントリ２３０は、各々のパーティションのためのエントリを含む。ＧＰＴパーティション構造２００の残りは、パーティション２４０として説明される。
【００１５】
図２ｂを参照して、パーティションエントリ２３０が説明される。示されているのは、パーティションエントリ２３０′であり、パーティションエントリ２３０′は、パーティションタイプＧＵＩＤエントリを含み、パーティションタイプＧＵＩＤエントリは、パーティションタイプに含まれるデータの種類と、どのようにパーティションタイプが使われるかとを識別する。一意パーティションＧＵＩＤは、一意識別子として、ダイレクトヒントパーティションに割当てられる。スタートＬＢＡエントリおよびエンドＬＢＡエントリは、パーティションのＬＢＡ範囲を定義する。属性エントリは、どのようにしてパーティションが用いられるかを記述する。パーティションネームエントリは、パーティションを名付けるために用いることができる。ユーザ、ソフトウェアアプリケーションまたは他のユーティリティが、パーティションを生成することができる。ウインドウズにおける「diskpart」機能が、データ記憶装置においてパーティションを生成するために用いられることができる。「create partition primary」コマンドは、「ＩＢ＝ＸＸ」という因数とともに、パーティションエントリの一意パーティションＧＵＩＤのためのフィールドに、値ＸＸを保存する。たとえば、ダイレクトヒントパーティションは、図１における磁気媒体１１０に作成することができる。
【００１６】
ダイレクトヒントパーティションが作成された後、ソフトウェアアプリケーションまたはホストＯＳは、ＯＳファイルシステム、またはホストとデータ記憶装置との間で用いられる記憶インターフェイス規格への変更なしに、ダイレクトヒントパーティションを用いて、データ記憶装置との通信を可能にする。すなわち、ホストＯＳファイルシステムとインターフェイスシステムとに、ダイレクトヒントパーティションの使用に気付かなくすることができる。例示のため、ウインドウズＯＳにおいて実行されるソフトウェアアプリケーションが、ＳＳＨＤのフラッシュメモリ（たとえば図１におけるメモリ１５０）へ、指定されたある特定のファイルを選択的に配置することができる。これを行うために、ソフトウェアアプリケーションは、DeviceIOControlと呼ばれるFSCTL_GET_RETRIEVAL_POINTERS制御コードを有するウインドウズカーネルＡＰＩ機能を呼出してファイルのためのＬＢＡを取得することができる。これらの対応するＬＢＡが読み出されると、ソフトウェアアプリケーションは、別のファイルへとＬＢＡのリストを保存し、そのファイルは次にダイレクトヒントパーティションへと保存される。
【００１７】
図３には、ダイレクトヒントパーティション内の予め定義されたデータ構造が示される。そのデータ構造は、保存されたファイルにおける情報から取り込まれることができる。情報は、フラッシュメモリのようなＳＳＨＤの選択されたメモリに移動またはコピーされることが可能な、ヘッダ３００およびＬＢＡ情報を含むことができる。ヘッダ３００は、続くＬＢＡが選択されたメモリ内に記憶されるということのインジケータを含むことができる。ヘッダ３００は、また、ファイル情報が衝突していないことを確かめるためのチェックとして用いられることができる。エントリ３１０は、フラッシュメモリにおいて保存されるべき第１のＬＢＡを識別する。エントリ３２０は、保存されるべき第１のＬＢＡからＬＢＡ長さを識別する。エントリ３１０および３２０は、ファイルの一部、ファイル全体、複数のファイル、またはそれらの任意の組合せに対応するＬＢＡとすることができる。エントリ３３０によって示されるように、追加のＬＢＡが識別可能である。各エントリは、５バイトのような、予め定義されたサイズであるとともに同じサイズであり得る。
【００１８】
図２ａ，２ｂおよび図３を参照して、保存されたファイルを読出すための、データ記憶装置のための方法が説明される。データ記憶装置のファームウェアは、磁気媒体のＬＢＡ０が、図２ａのパーティション構造２００のプロテクティブＭＢＲ２１０のために保存されていることを把握する。ファームウェアは、また、プライマリＧＰＴヘッダ２２０のためにＬＢＡ１が保存されることを把握する。ファームウェアは、さらに、ＬＢＡ２〜３３が、最大１２８のパーティションエントリ２３０を含むということを認識する。各パーティションエントリは１２８バイトであり、各ＬＢＡにおいて４つのエントリを有する。４つのエントリのうちの第１番目の各々が、ＬＢＡ境界で開始される。
【００１９】
ファームウェアは、また、図２Ｂにおいてパーティションエントリ２３０′によって示されるような、各々のエントリの構造を把握する。ファームウェアは、ダイレクトヒントパーティションを識別する一意パーティションＧＵＩＤ（上記のＸＸ）を探すＬＢＡ２〜３３を通じて検索を開始する。一度見つかると、ファームウェアはパーティションエントリ２３０′のバイトを読出して、ダイレクトヒントパーティションのスタートＬＢＡおよびエンドＬＢＡを決定する。一度ファームウェアが、ダイレクトヒントパーティションのスタートＬＢＡおよびエンドＬＢＡを認識すると、それはそこに保存される情報を読出すことができる。すなわち、ファームウェアは、図３に示されるデータ構造を読出して、ソフトウェアアプリケーションが必要とするどのＬＢＡが、ＳＳＨＤのフラッシュメモリに保存されているかを決定する。これは、このデータの書込および読出への素早いアクセスを可能とするであろう。スタートＬＢＡとエンドＬＢＡとは、ファームウェアによって、将来の使用のために保存されることができる。
【００２０】
図４は、プロセス４００を示す。ステップ４１０によりプロセス４００が開始される。ステップ４２０において、ソフトウェアアプリケーションは、データ記憶装置にキャッシュされるべきであるとソフトウェアアプリケーションが決定したファイルネームを、アプリケーションプログラムインターフェイス（ＡＰＩ）に与える。プロセス４００は、次にステップ４３０に進む。ステップ４３０において、ＡＰＩは、ＯＳに問合せを行ない、ファイルネームに関連付けられたＬＢＡを取得する。ステップ４４０において、ＡＰＩは、ＬＢＡの関連するリストをダイレクトヒントパーティションに書込むことができる。ＡＰＩは、ダイレクトヒントパーティションにアクセスして、ＬＢＡの関連するリストを書込むことができる。その代わりに、ＬＢＡは、ソフトウェアアプリケーションに戻されることもできる。ソフトウェアアプリケーションは、次に別のファイルにＬＢＡのリストを保存し、次に、ダイレクトヒントパーティションに別のファイル（すなわちＬＢＡのリスト）を保存する。プロセス４００は、ステップ４５０において終了する。ＡＰＩは、ソフトウェアアプリケーションから分離されたアプリケーションとすることができる。その代わりに、ＡＰＩは、ソフトウェアアプリケーションのソースコード、モジュールまたはソフトウェアアプリケーションによって呼出される機能へと組込まれることができる。あるいは、ＡＰＩは、ダイナミックリングライブラリ（ＤＬＬ）のような、ソフトウェアアプリケーションが実行可能なファイルと関連付けられたファイルとすることができる。
【００２１】
図５のプロセス５００において示されるように、データ記憶装置は、関連するＬＢＡを使用することができる。ステップ５１０において開始された後、データ記憶装置のファームウェア（たとえば図１におけるファームウェア１６０）は、任意のリスト／ファイルを含む、ダイレクトヒントパーティションを読出して、指定されたＬＢＡをステップ５２０において決定することができる。ステップ５３０において、指定されたＬＢＡに関連するファイルおよびデータは、キャッシュメモリ（たとえば図１におけるメモリ１５０）に記憶することができる。プロセス５００は、ステップ５４０において終了する。
【００２２】
上記の方法および装置は、任意の記憶インターフェイス規格（たとえばＳＣＳＩ，ＳＡＴＡ，ＵＳＢ）、ハードウェアおよびソフトウェア、ドライバ、ＯＳファイルシステムなどとは独立に実現可能である。すなわち、インターフェイス制御システムと、ＯＳファイルシステムとは、ソフトウェアプログラムが、キャッシュに記憶されるべき選択されたファイルを示すデータ記憶装置に情報を渡すことができるということに気付かなくてもよい。このシステムを実現するために、ＯＳまたは規格インターフェイスに対する特別な変更は必要ではない。
【００２３】
上記の方法および装置は、また、ＬＢＡ情報に加えて他の情報をデータ記憶装置に渡すために用いることができる。これは、図６および図７のプロセス６００および７００によって示される。ステップ６１０においてプロセス６００が開始されると、プロセスはステップ６１０に進む。ステップ６１０において、ホストＯＳまたはソフトウェアアプリケーションは、ダイレクトヒントパーティションアドレスに情報を書込む。プロセス６００は、ステップ６３０において終了する。プロセス７００は、ダイレクトヒントパーティションにおいて情報を処理するためにデータ記憶装置によって用いられるステップを示す。ステップ７１０においてプロセスが開始されると、ステップ７２０において、データ記憶装置のファームウェアは、ダイレクトヒントパーティションから情報を読出す。そこから、ファームウェアは、たとえばダイレクトヒントパーティションから読出された情報を使用して、パラメータ、アルゴリズムまたは記憶装置の機能を最適化し、あるいはデータ記憶装置における優先度を設定することによって、データ記憶装置を構成する。
【００２４】
図８は、上記の方法および装置を使用することができるシステム８００を示す。ソフトウェアアプリケーション８１０は、通信により、データ記憶装置８５０のＬＢＡスペース８４０におけるダイレクトヒントパーティション８３０に保存したいファイルネームまたは情報を、ダイレクトヒントＡＰＩ８２０に与える。ダイレクトヒントＡＰＩ８２０は、システムＯＳ８６０と接続されて、関連するＬＢＡまたは他の必要な情報を取得して、ソフトウェアアプリケーション８１０によって与えられたファイルまたは情報を保存する。ダイレクトヒントＡＰＩ８２０は、データ記憶装置８５０に、関連するＬＢＡまたは他の必要な情報を書込む。ファームウェア８７０は、ダイレクトヒントパーティション８３０を読出す。ソフトウェアアプリケーション８１０がキャッシュメモリ８８０に保存されるデータを必要とする場合、ファームウェア８７０は、データ記憶装置のデータ記憶媒体から、関連するＬＢＡを読出して、ＬＢＡに配置されたデータを、キャッシュメモリ８８０に保存する。ファイル以外の情報（たとえばコンフィギュレーション情報）が、ダイレクトヒントパーティション８３０に送られた場合、応じて、ファームウェア８７０が応答する。また、破線によって示されるように、ＯＳ８６０は、ダイレクトヒントパーティション８３０に直接書込むことができる。
【００２５】
特に上記の方法および装置は、バックグラウンドアクティビティおよびフォアグラウンドアクティビティ、ホストまたはシステムの電源およびバッテリレベル、および他の環境情報、ＯＳおよびドライバのようなホストまたはシステム構成、ホストまたはシステムのリソースの利用、などといった、ホスト情報またはシステム情報を与えることができる。１つの具体的な情報は、ホストまたはシステムが、データ記憶装置に対して、ＬＢＡに書き込まれるコンテンツの種類を特定するというものである。たとえば、ホストまたはシステムは、データ記憶装置に、特定のＬＢＡに記憶されるデータが、メタデータまたは音声／画像データであるということを知らせることができる。データ記憶装置は、サービス品質最適化のような、データ記憶装置それ自身を構成するための情報を用いることができる。これは特にデジタルビデオデコーダにおいて有用であるが、それは、より速い応答および低い消費電力のために、メタデータがキャッシュされることが可能であるためである。ＡＰＩは、データ記憶装置の構成を変更し、ファームウェアをダウンロードするために用いることができる。
【００２６】
診断目的のため、ソフトウェアモニタが、どのプロセスまたはコマンドが現在動作中であるかをデータ記憶装置に知らせることが可能であるシステム上に配置することが可能であるだろう。データ記憶装置の故障発生時、任意の故障分析が、入力として、これらの通知されたコマンドまたはプロセスを有してもよい。
【００２７】
バックグラウンドアクティビティを実行するデータ記憶装置によって引起されるレイテンシに対して特に敏感なシステムおよびソフトウェアは、ドライブに対して、時間に厳しい動作の間に、これらのバックグラウンドアクティビティが遅延するということを知らせることができてもよいであろう。逆に、データ記憶装置は、システムに対して、バックグラウンドアクティビティの準備中または、その実行中に通知してもよいであろう。したがってシステムは、動作を再調整可能であり得る。
【００２８】
以下のさらなる情報の例において、それらのいくつかは、ホストから受取られたとき、データ記憶装置の拡張されたキャッシングを可能にするであろう。ＳＳＨＤによって得られる１つの利点は、ＯＳのより速い起動である。ＳＳＨＤは、起動に関連するすべてのデータを固定する事ができ、それを将来の起動のために保存することができる。ＳＳＨＤは、直ちに始まるものと起動条件によって仮定することによって、起動プロセスの開始を決定することができる。しかしながら、起動プロセスの終わりと、最初のアプリケーションローディングの開始との間に区別があるときには困難が生じる。起動情報の終わりをＳＳＨＤに与えるホストは、フラッシュメモリの不要な使用を最小限とするであろう。
【００２９】
本明細書に記述されるシステムを実行するデータ記憶装置は、ユーザアプリケーションに関連するアクセスを識別することによって、エンドユーザに対して性能の利点を提供することができ、レイテンシの減少のために、キャッシュメモリにそれらを保存することができる。しかしながら、ウイルススキャンのような多くのバックグラウンドタスクが、データ記憶装置が、そうでなければユーザアクティビティと気づかずに識別して、データのキャッシングを起こすようなアクセスパターンを生成し得る。この種の誤った積極的なキャッシングのトリガは、多数のキャッシュメモリ容量を配置することができる一方で、エンドユーザに対して将来の利点をほとんど与えない。しかしながら、誤った積極的なキャッシュのトリガは、エンドユーザには一般的には見えないバックグラウンドアクティビティに対して性能ゲインを与えることができる。しかしながら、ホストＯＳは、ダイレクトヒントパーティションを介してデータ記憶装置を識別することができ、そのアクセスが、（フラッシュメモリにあることが好ましい）フォアグラウンドアクティビティ対（フラッシュメモリにあることが好ましくない）バックグラウンドアクティビティによって実行され、それは、キャッシュメモリが使用される効率を改善することができる。
【００３０】
他の例において、ホストＯＳは、実行のためにホストＤＲＡＭにアプリケーションファイルをロードするであろう。すべての開いたアプリケーションに関連付けられたファイルデータの量がＤＲＡＭのサイズを上回る場合、ホストＯＳは、ファイルスワッピングの技術を適用することができる。ホストが新しいアプリケーションをロードしようとして、システムＤＲＡＭに十分な空きがない場合、ホストは、最近使われていない、ＤＲＡＭの既に存在するデータの部分を用い、ＤＲＡＭにおいて空きを作るために、データ記憶装置の特定の領域にそれを保存するであろう。将来のユーザの相互作用が、再び、データ記憶装置に移されたデータを必要とするならば、ＯＳは、データ記憶装置に以前に記憶されたデータのために、ＤＲＡＭにおけるいくつかのデータの他の部分を「スワップ」するであろう。これは、ユーザパターンが変わるにつれて継続可能である。データ記憶装置に対しておよびデータ記憶装置からのデータのスワッピングは、ユーザに対して、性能の直接的な影響を与える。したがって、この動作は素早く完了することが望ましい。データ記憶装置が、ダイレクトヒントパーティションを介して、書込まれたデータが「スワップされた」ファイルであると知らされるならば、データ記憶装置は、このデータがキャッシュメモリに保存されるべきであると知ったであろう。次に、この「スワップされた」ファイルが、再び、ＤＲＡＭにロードされる必要がある場合、スワップされたファイルは、ダイレクトヒントパーティションに保存されたインジケータにより、より高速のキャッシュメモリから読出されて、データ記憶装置の異なる記憶媒体からの場合に比べて高速になる可能性がある。
【００３１】
また、さらなる例において、電源投入後に、頻繁に使用されるアプリケーションのローディングを改善するために、いくつかのＯＳプリフェッチファイルは、素早く復帰するデータ記憶装置上のフォーマットでアプリケーションを保存する。最大の性能の利点のためには、プリフェッチされたファイルの読出は、キャッシュメモリから行なわれることが有利である。ＯＳが、ダイレクトヒントパーティションを介して、データ記憶装置に、書込むファイルが、プリフェッチされるべきファイルであるという指示を与えるなら、データ記憶装置は、将来の高速の読出のために、これをキャッシュメモリに書込むということを知るだろう。
【００３２】
さらに、ノートブックシステムに実装されるデータ記憶装置の場合、ダイレクトヒントパーティションを介してキャッシュメモリに置かれるべきコンテンツを決定するために用いられるポリシーは、システムがＡＣ電源に接続された場合、あるいはバッテリの電力で動作する場合に依存して変わり得る。ＡＣに接続された場合、最も優先度の高いパラメータは、性能であり得る。この場合、データ記憶装置は、性能のためにキャッシュメモリを利用することができるが、他のメモリを、必要なデータがそこにある場合に高速のアクセスを与える状態としたままにするであろう。しかしながら、バッテリで動作する場合、選択肢は、電力節約のためにキャッシュメモリを使用するということである可能性がある。このモードにおいて、データ記憶装置は、他のメモリを、できるだけ低消費電力状態に保ち、キャッシュメモリを、他のメモリからの必要なデータがほとんどないように、使用される読出および書込データを一時的に格納するために用いるであろう。
【００３３】
ソフトウェアアプリケーションは、システムがＡＣまたはバッテリ電力のいずれで動作しているかを、バッテリ電力レベルによって決定することができる。たとえば、ウインドウズＯＳの場合、ソフトウェアアプリケーションは、ISensOnNowインターフェイスおよびBatteryLow、OnACPower、OnBatteryPowerの方法を有するシステムイベント通知サービスを用いることができる。すなわち、ソフトウェアアプリケーションは、システムがＡＣまたはバッテリ電力を用いていることを知らさせるであろう。次に、上記のように、ソフトウェアアプリケーションは、ファイルにおけるこの情報を、ダイレクトヒントパーティション保存することができる。図３において用いられたのとは異なるフォーマットを、情報を伝達するために使用することができる。そこから、データ記憶装置ソフトウェアは、ダイレクトヒントパーティションにおけるファイルを読出すことができ、システムが、ＡＣ上またはバッテリ電力上のいずれであるかに基づいて、データ記憶装置自身を構成することができる。
【００３４】
したがって、ファイルは、データの識別子とすることができる。外部または別のソフトウェアアプリケーションまたはシステムは、そのファイルを使用して、異なる装置上でデータと相互作用、たとえば消去、変更、移動、保存、読出、などを行なうことができる。ＯＳのファイルシステムは、ファイルを、データ記憶装置の関連するＬＢＡに翻訳することができる。この場合、ＯＳおよび記憶インターフェイス規格は、変更する必要がない。
【００３５】
ダイレクトヒントパーティションにおける情報は、データ記憶装置の電源投入時、データ記憶装置の動作中のモニタ時、またはその両方において読出可能である。さらに、ダイレクトヒントパーティションに書込まれるべき情報は、ダイレクトヒントパーティションへの書込コマンドの処理中に決定可能である。ダイレクトヒントパーティションは、また、図１におけるメモリ１５０のような、データ記憶装置のメモリに含まれることができる。
【００３６】
上記の如何なる方法および装置も、ソフトウェアアプリケーションまたはホストＯＳとの通信のために、データ記憶装置のための機構を与えるために逆にすることができる。たとえば、データ記憶装置を、自己固定が可能なように使用し、装置が、固定されたＬＢＡ情報を、ダイレクトヒントパーティションに保存することができる。この情報は、次に、ホストによって読出されて、アクセスパターンへの見通しを高めることができる。この情報は、階層化記憶システムにおいてデータを移動させるときに有益であり得る。
【００３７】
上記のデータ記憶装置は、ハードディスクドライブ、ＳＳＨＤ、光学またはテープドライブ、ＲＡＩＤのような記憶サブシステム、ネットワークに接続された記憶装置、記憶領域ネットワーク、分散ファイルシステム、およびクラウドとすることができる。データ記憶装置は、周辺デバイスであってもよく、ホストマザーボード上にあってもよい。オペレーティングシステムは、Linux（登録商標）、Unix（登録商標）、Windows（登録商標）、Apple（登録商標）、Android（登録商標）ベースおよびそれらの変形とすることができる。
【００３８】
階層化記憶システムにおいて、ダイレクトヒントパーティションは、任意の階層における任意のメモリとすることができる。階層化記憶システムのコントローラは、次にパーティションに保存されたファイルを読出して、応じてシステムを構成するであろう。たとえば、コントローラは、低速性能階層から高速性能階層へ、低速アクセス階層から高速アクセス階層へ、あるいは、より信頼性の低い階層からより信頼性の高い階層へとデータを移動させてもよいであろう。
【００３９】
さまざまな実施形態に従うと、本明細書に記述される機能および方法は、コンピュータプロセッサまたはコントローラ装置において実行される１以上のソフトウェアプログラムとして実現可能である。他の実施形態に従うと、本明細書において記述される機能および方法は、ディスクドライブのようなデータ記憶装置を用いるパーソナルコンピュータのようなコンピューティングデバイスにおいて実行される１以上のソフトウェアプログラムとして実現可能である。以下に限定されないが、特定用途集積回路、プログラマブルロジックアレイ、および他のハードウェア装置のような専用のハードウェアでの実現例が、同様に、本明細書において記述される方法を実現するために構成可能である。さらに、本明細書において記述される機能および方法は、実行されたときにプロセッサにその方法を実行させる命令を保存するハードウェア部品のような、コンピュータ読取可能な記憶媒体または装置として実現可能である。本明細書において開示される機能および方法を実行するための命令は、また、コンピュータ読取可能な伝送媒体を用いて、実行するための装置に対して配布されてもよい。
【００４０】
本明細書において記述された実施形態の図示は、さまざまな実施形態の構造の一般的な理解を与えるためのものであることを意図する。図示は、本明細書において記述された構造または方法を利用する装置およびシステムのすべての要素および特徴の完全な記述として与えられるということを意図するものではない。当業者にとっては、本開示を検討すれば多くの他の実施形態が明らかであり得る。他の実施形態が利用可能であるとともに本開示から導き出されることができる。たとえば、構造および論理の置き換えおよび変更が、本開示の範囲を逸脱することなくなされ得る。さらに、本明細書において特定の実施形態が図示され説明されたが、同じまたは類似の目的を達成するために設計された任意の後に続く構成が、示された特定の実施形態に置き換え可能であることが理解されるべきである。
【００４１】
本開示は、さまざまな実施形態の任意のおよびすべての後に続く適用または変形を包含することを意図する。上記の実施形態、および本明細書において具体的に記述されていない他の実施形態の組合せが、当業者にとって記述を検討すれば明らかであるだろう。さらに、図示は、単に表現のためであって、寸法通りに描かれていない可能性がある。図示において、特定の部分が強調される一方で、他の部分が削除されている可能性がある。したがって、開示および図面は、図示のためであり、限定とみなされるものではない。
【図１】
2015158902.tif 000003
【図２】
2015158902.tif 000004
【図３】
2015158902.tif 000005
【図６】
2015158902.tif 000006
【図７】
2015158902.tif 000007
【図８】
2015158902.tif 000008
【図４】
2015158902.tif 000009
【図５】
2015158902.tif 000010
【手続補正書】
【提出日】平成27年3月10日(2015.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のメモリと、
第２のメモリと、
前記第１のメモリおよび前記第２のメモリに結合されるコントローラとを備え、
前記コントローラは、前記第１のメモリの第１のデータ記憶領域に記憶されるべき第１のデータを受取るように構成され、前記第１のデータは、前記第１のメモリから前記第２のメモリへと転送されるべき他のデータのインジケータを含み、
前記コントローラは、前記第１のデータに基づいて、前記第２のメモリに、前記他のデータを保存するように構成される、装置。
【請求項２】
前記第１のデータ記憶領域は、前記第１のデータを保存するために予約されたパーティションである、ダイレクトヒントパーティションである、請求項１に記載の装置。
【請求項３】
前記コントローラは、さらに、前記ダイレクトヒントパーティションの一意識別子を検索することによって、前記第１のデータ記憶領域を決定するように構成される、請求項２に記載の装置。
【請求項４】
前記第１のデータは、ヘッダを含み、
前記インジケータは、１以上の論理ブロックアドレス（ＬＢＡ）であり、
前記ヘッダは、前記１以上のＬＢＡに関連付けられた前記他のデータが、前記第２のメモリに記憶されるべきであることを示す第２のインジケータを含む、請求項１に記載の装置。
【請求項５】
データ記憶装置を備え、前記データ記憶装置は、
第１のデータ記憶媒体と、
第２のデータ記憶媒体と、
前記第１のデータ記憶媒体および前記第２のデータ記憶媒体に結合されたコントローラとを含み、前記コントローラは、ホストから受けた第１のデータを、前記第１のデータ記憶媒体の第１のデータ記憶領域に保存するように適合され、前記第１のデータは、前記データ記憶装置を構成するための前記ホストからの情報を含み、
前記コントローラは、前記情報に基づいて前記データ記憶装置を構成するように適合される、装置。
【外国語明細書】
2015158902000001.pdf