(57)【要約】本発明は、メモリバスと相互接続されたプロセッサアセンブリと、メモリバスと相互接続されたメモリ・ストレージコンバインとを有するシステムを提供する。メモリ・ストレージコンバインは、ランダムアクセスメモリ（ＲＡＭ）ベースのデータストレージと不揮発性マスデータストレージの組合せのメモリバスを通してアクセスを許すように適合されている。コントローラは、ＲＡＭベースのデータストレージと不揮発性マスデータストレージのいずれも統一されたアドレス空間の一部としてＲＡＭの方式でアドレス指定するように構成されている。
2019518286.tif 000002
【特許請求の範囲】
【請求項１】
メモリバスと相互接続されたプロセッサアセンブリと、
メモリバスと相互接続され、メモリバスを通して種々のメモリタイプの組合せへのアクセスを許すように適合されたメモリ・ストレージコンバインと、
メモリバスを介して前記メモリタイプの組合せを統一されたアドレス空間の一部としてアドレス指定するように構成されたコントローラと、
を有するコンピューティングシステム。
【請求項２】
前記組合せはメモリの階層において編成され、その際にメモリの少なくとも１つの階層がプロセッサによって使用されるデータのための最終格納場所をなすようにされている、請求項１に記載のコンピューティングシステム。
【請求項３】
更に、不揮発性マスデータストレージにアクセスするためのＩ／Ｏ相互接続を有する、請求項２に記載のコンピューティングシステム。
【請求項４】
更に、外部デバイスと不揮発性マスデータストレージとの間の通信を許すバックドア相互接続を有する、請求項２に記載のコンピューティングシステム。
【請求項５】
前記種々のメモリタイプは、ランダムアクセスメモリ（ＲＡＭ）データストレージ及び不揮発性マスデータストレージを包含する、請求項２に記載のコンピューティングシステム。
【請求項６】
前記ＲＡＭデータストレージがＮＶＤＩＭＭメモリ構造を定義する、請求項５に記載のコンピューティングシステム。
【請求項７】
ＮＶＤＩＭＭメモリ構造がストレージクラスメモリを包含する、請求項４に記載のコンピューティングシステム。
【請求項８】
ＮＶＤＩＭＭメモリ構造は、少なくともＤＲＡＭを有する第１階層のＮＶＤキャッシュと、ストレージクラスメモリを有する第２階層のＮＶＤキャッシュと、を包含するように編成されている、請求項７に記載のコンピューティングシステム。
【請求項９】
第２階層のＮＶＤキャッシュは、ソリッドステートドライブ（ＳＳＤ）を包含する、請求項７に記載のコンピューティングシステム。
【請求項１０】
コントローラ及びメモリバスを包含するプロセッサと、
メモリバスと相互接続された複数のメモリ構造と、
メモリ構造と相互接続され、プロセッサ、メモリ構造及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能なマスストレージと、
データのパケットがインターリーブされてメモリ構造の間に分散され、プロセッサとマスストレージの各々において編成されたパターンにデインターリーブされるようにパケットを配置するインターリーバ及びデインターリーバと、
を有するインターコンピューティングシステム。
【請求項１１】
前記インターリーバ及びデインターリーバは、パケットがメモリに書き込まれてプロセッサにおいて編成されたパターンからインターリーブされ、メモリ構造を通過して、マスストレージにおいて編成されたパターンに保存されるようにする、請求項１０に記載のコンピューティングシステム。
【請求項１２】
前記インターリーバ及びデインターリーバは、パケットがメモリから読み出されてマスストレージにおいて編成されたパターンからインターリーブされ、メモリ構造を通過して、プロセッサによって編成されたパターンに受容されるようにする、請求項１１に記載のコンピューティングシステム。
【請求項１３】
前記インターリーバ及びデインターリーバは、メモリ構造全体の配置構成におけるメモリ構造の各々の位置に応答して、パケットが配置構成におけるメモリ構造の各々の位置に基づいてインターリーブ及びデインターリーブされる、請求項１２に記載のコンピューティングシステム。
【請求項１４】
コントローラ及びメモリバスを包含するプロセッサと、
メモリバスと相互接続された複数のメモリ構造と、
メモリ構造と相互接続され、プロセッサ、メモリ構造及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能であるマスストレージと、
を有しており、
マスストレージが当該マスストレージをメモリ構造に接続する通信プロトコルトポロジーのためのルートを定義する、
コンピューティングシステム。
【請求項１５】
前記プロトコルは、ＰＣＩｅ、Ｇｅｎ−Ｚ、ＳＡＴＡ、ＳＡＳ、イーサネット、インフィニバンド（登録商標）、ＳＣＳＩ及びｉＳＣＳＩの少なくとも１つを含む、請求項１４に記載のコンピューティングシステム。
【請求項１６】
前記メモリ構造はＮＶＤＩＭＭを含む、請求項１４に記載のコンピューティングシステム。
【請求項１７】
コントローラ及びメモリバスを包含するプロセッサと、
メモリバスと相互接続されたコントローラを有するＮＶＤＩＭＭ配置構成と、
ＮＶＤＩＭＭ配置構成と相互接続され、プロセッサ、ＮＶＤＩＭＭ配置構成及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能であり、ＮＶＤＩＭＭ配置構成とマスストレージがメモリコンバインを定義する、マスストレージと、
ＮＶＤＩＭＭコントローラをマスストレージと接続するプライベート高速接続と、
を有するコンピューティングシステム。
【請求項１８】
コントローラ及びメモリバスを包含するプロセッサと、
メモリバスと相互接続された複数のメモリ構造と、
メモリ構造と相互接続され、プロセッサ、メモリ構造及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能であるマスストレージと、
マスストレージをプロセッサと相互接続することなく外部デバイスと相互接続するバックドア配置構成と、
を有するコンピューティングシステム。
【請求項１９】
コンピューティングシステムにおいてデータを処理するための方法であって、
プロセッサにＮＶＤＩＭＭ配置構成と相互接続されたメッセージを備えるステップと、
メモリバス上のアドレス空間の一部を定義するマスストレージと相互接続するステップと、メモリをＮＶＤＩＭＭ配置構成とマスストレージの各々にプロセッサによって使用される全体アドレス空間の一部としてアドレス指定して、データがその最終格納場所であるマスストレージに保存されるステップと、
を含む上記方法。
【請求項２０】
更に、データを保存して、少なくとも１つの階層を最終格納場所として指定するためのキャッシュの階層を提供することを含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本発明は、コンピュータシステムのためのデータストレージ及びメモリに関する。
【０００２】
背景技術
図１は、４つのコア（コアｌ−コア４）を有するプロセッサ１１０を備えたサーバまたはＰＣステーション配置構成１００のための典型的なアーキテクチャの例を示す。プロセッサの内部で、各コアは専用キャッシュ（コアｌ−ＬＩ−コア４−Ｌｌ、コアｌ−Ｌ２−コア４−Ｌ２）及び共有キャッシュ（この例ではＬ３）を持っている。これらすべての内部メモリ素子は典型的に（例えば）ＳＲＡＭ技術に基づいている。ＳＲＡＭはレイテンシが非常に小さく、非常に高速で、しかも耐久性は制限されない。しかしながらその実装はコストがかかり、容量が限られ、揮発性である（電力の供給がなくなるとデータが失われる）。
【０００３】
プロセッサ１００から離れると、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１２０が、現在入手可能な最も動作の速いメモリである。ＤＲＡＭコンポーネントは様々なフォームファクターで利用可能である。即ち、デュアルインラインメモリモジュール（ＤＩＭＭ）、不揮発性ＤＩＭＭ（ＮＶＤＩＭＭ）、又は他のカスタマイズされたメモリ配置構成であるが、これらは当業者には自明である。図１に示す、例示的なコンピューティング配置構成１００では、プロセッサ１１０は慣用的なノースブリッジ１２４を包含するデュアルデータレート（ＤＤＲ）インターフェース１２２を通してＤＲＡＭコンポーネントにアクセスする。ＤＲＡＭはスタティックＲＡＭ（ＳＲＡＭ）と比較して非常に面積効率が良く、そのためＳＲＡＭと比べて低い単位原価で比較的高い容量を提供する。ＤＲＡＭはまたレイテンシが短く、高速で、耐久性が高く、コストはＳＲＡＭより比較的低い。しかしながらＤＲＡＭは他のストレージメディアと比べるとコストはなおも高く、しかも揮発性である。
【０００４】
ＤＲＡＭの他にも、様々なストレージメモリ技術、例えばフラッシュ、磁気及び／又は光学ストレージが大規模不揮発性データストレージに利用可能であり、これらを総じて「伝統的マスストレージ」１４０と呼ぶ。伝統的マスストレージの容量は、テラバイト（ＴＢ）、ペタバイト（ＰＢ）及びそれ以上に達することがある。プロセッサは、図１に示すＩ／Ｏ相互接続１３０及びこれと関連するサウスブリッジ１３２を通して伝統的マスストレージデバイスにアクセスする。Ｉ／Ｏ相互接続は更に、個々のマスストレージデバイス１４２、１４４、１４６、１４８及び１４９に到達するために、幾つかのバスベースのインターフェースアーキテクチャ１５０、例えばＧｅｎ−Ｚ、イーサネット、ＳＡＴＡ、ＰＣＩｅ、ＳＡＳ、ＳＣＳＩ、ｉＳＣＳＩなどを提供することに留意されたい。「伝統的マスストレージ」デバイスは、比較的非常に低いギガ（ＧＢ）単価で大容量の不揮発性メモリを提供する。しかしながら、そのようなマスストレージ配置構成はレイテンシが大きく、速度は遅く、耐久性は制限されている。
【０００５】
広く「ストレージクラスメモリ」と呼ばれる新しいデジタル電子メモリ実装は、ほとんどすべてのマトリクスでＤＲＡＭとマスストレージメモリの間に入るように設計されている。これらはとりわけ抵抗変化ＲＡＭ（ＲｅＲＡＭ）、相変化メモリ（ＰＣＭ）のような先端技術を包含する。図１に図示及び説明されているメモリバス（１２２）及びＩ／Ｏ相互接続（１３０）に対するトポロジーに加えて、図２及び図３のコンピュータ配置構成２００及び３００において、それぞれ追加の例示的なトポロジーが提供されている。上述したように、図１の配置構成１００ではメモリバス（ダブルデータレートプロトコル、ＤＤＲ使用）１２０及びＩ／Ｏ相互接続１３０が、それぞれノースブリッジ１２４及びサウスブリッジ１３２と関連する離散チップセット／ダイにおいて各々インスタンス化されている。
【０００６】
従って図２の例示的な配置構成２００において、メモリバス２２２は直接プロセッサ２１０を起点としているのに対し、Ｉ／Ｏ相互接続２３０（バスアーキテクチャ２５０を使用してマスストレージ２４０に接続）は外部Ｉ／Ｏチップセット２３４を起点としている。関連するＩ／Ｏ接続２１２及び２１４はそれぞれＩ／Ｏチップセット２３４及びメモリバス２２２を接続及び制御し、この例ではプロセッサ２１０のダイで提供されている。メモリバス２２２は慣用的なやり方でＤＲＡＭ（ＤＩＭＭ及びＮＶＤＩＭＭ）２２０にアクセスする。
【０００７】
図３の例示的な配置構成３００では、すべてのインターフェース（Ｉ／Ｏ相互接続３３０、ＳＡＳ３５２、イーサネット３５４、ＳＡＴＡ３５６、ＰＣＩｅ３５８、その他３５９、及びメモリコントローラ３１４）は、直接プロセッサ３１０のダイ内部でインスタンス化されている。これらは適当なデータバスアーキテクチャを介して、上述したように様々なタイプの伝統的マスデータストレージ３４０と通信する。上述したように慣用的な実装による、例示的なプロセッサ配置構成３１０は、メモリバス３２２を通してＤＲＡＭ（ＤＩＭＭ、ＮＶＤＩＭＭ）３２０にアクセスする。Ｇｅｎ−Ｚ及び／又は類似の先端技術を用いる他の例示的なトポロジーも、図１、図２及び／又は図３に示すトポロジーの組合せとし利用可能である。
【０００８】
一部のＮＶＤＩＭＭ実装（ＮＶＤＩＭＭ−Ｎ）はＤＲＡＭとフラッシュメモリを有しており、これらはフラッシュがちょうどＤＲＡＭに保存された内容を受け入れるのに十分なスペースを持つように配置されている。例えば８ＧＢＤＲＡＭを有するＮＶＤＩＭＭは、これと関連する８ＧＢ〜１６ＧＢのフラッシュメモリを持つであろう。停電又はその他の故障状態の場合に、ＤＲＡＭからのデータはフラッシュメモリにバックアップされ、それによってフェイルオーバーソリューションを提供する。電力が回復したらデータがフラッシュメモリからＤＲＡＭに戻されて、処理はそれ以前と同様に継続する。この実装においては、図４の例示的な配置構成４００に示されているように、ＤＩＭＭ／ＮＶＤＩＭＭモジュール４２０のＤＲＡＭ４２４のみが直接メモリバス４２２上でアドレス指定可能であり、フラッシュメモリ４２６は直接メモリバス４２２上でアドレス指定可能ではない。コントローラ４２８、及び関連機能は、ＤＲＡＭ４２４とフラッシュ４２６の間の相互作用を管理し、より詳しくはデータが揮発性ＤＲＡＭからフラッシュメモリに、及びその逆に移動することを容易にする。従って、ＤＩＭＭ／ＮＶＤＩＭＭモジュール上で２タイプのメモリがインスタンス化されているにもかかわらず、アドレス指定可能なメモリの１階層のみ有効である。
【０００９】
他のＮＶＤＩＭＭ実装（ＮＶＤＩＭＭ−Ｆ）において、ＤＲＡＭは内部バッファとして使用され、メモリバス上でプロセッサ配置構成４１０などによってアドレス指定可能ではない。代わりにフラッシュメモリがメモリバス上で直接アドレス指定可能である。ＮＶＤＩＭＭ−Ｎと同様に、ＮＶＤＩＭＭ上に２タイプのメモリがあるにもかかわらず、アドレス指定可能なメモリは１階層しかない。上記の各々の実装においてＮＶＤＩＭＭは、ＤＩＭＭモジュール上で利用可能なリアルエステートが制限されているために容量が限られていることに留意されたい。同様に、図示された配置構成では、永続的なストレージ素子（例えばフラッシュ４２６、マスストレージ５２５）を物理的に切り離して直接的にＩ／Ｏバス４３０に再接続することがなく（することなしに）、データをプロセッサからＮＶＤＩＭＭに、及びその逆に移動できる唯一の方法は、メモリバス（即ちＤＤＲインターフェース）を通ることである。これはＮＶＤＩＭＭへのデータ移動及びＮＶＤＩＭＭからのデータ移動のために大量の処理を要するという代償を招く。ＮＶＤＩＭＭデータはＩ／Ｏ相互接続（図４４３０）及び（バスアーキテクチャ４５０を介して）関連するマスストレージ４４０上で利用可能ではないので、この例ではＮＶＤＩＭＭはデータのための最終格納場所ではあり得ない。
【００１０】
上述した配置構成はいずれも本質的にマスストレージとリンクするＩ／Ｏ及びＤＲＡＭとリンクするＩ／Ｏを２つの別個のチャネルに分離し、各々のチャネルはその固有のアドレス指定と通信プロトコルと機能を必要とした。ＤＲＡＭは、比較的同時期に発生するプロセスで使用されるワーキングデータメモリのためにアクセスされ、このデータ空間のサイズは比較的限られているのに対し、マスストレージは大きなデータファイルのためにアクセスされ、処理結果を限定されない将来の時点における後続の検索のために保存し、そのサイズは事実上無制限である。
【発明の概要】
【００１１】
本発明は、先行技術の短所を、ＤＲＡＭ（又は同等のもの）とマスストレージの両方のアクセス及び使用を互換的に許すコンピュータプロセッサ及びデータストレージアーキテクチャ及び関連するオペレーティングシステムを提供することによって克服する。そのために両タイプのメモリを統一されたメモリとして有効に扱うバスアーキテクチャ及びオペレーティングシステムを採用し、それによりプロセッサ動作と協働して非常に大規模なワーキングメモリを可能にする。マスストレージは、外部バスアーキテクチャを介してもアクセスしてＩ／Ｏバス上の永続的なストレージとして用いることができ、又はメモリバスを介してアクセスしてメモリチャネルを通して永続的なメモリにアクセスすることができ、又はその両方である。
【００１２】
図示の実施態様では、コンピューティングシステムは、メモリバス及びメモリ・ストレージコンバインと相互接続され、メモリバスを通して種々のメモリタイプの組合せへのアクセスを許すように適合されたプロセッサアセンブリを包含する。コントローラは、メモリバスを介してメモリタイプの組合せを統一されたアドレス空間の一部としてアドレス指定するように構成されている。この組合せは、メモリの複数の階層で編成されて、それらの階層の少なくとも１つがプロセッサによって使用されるデータのための最終格納場所をなすようにされている。例示的に、不揮発性マスデータストレージにアクセスするためにＩ／Ｏ相互接続が提供され、及び／又は外部デバイスと不揮発性マスデータストレージの間の通信を許すバックドア相互接続が提供されている。種々のメモリタイプはランダムアクセスメモリ（ＲＡＭ／ＤＲＡＭ）及び不揮発性マスデータストレージを包含できる。ＲＡＭベースのデータストレージは、ストレージクラスメモリを含むがこれに限らないＮＶＤＩＭＭメモリ構造を定義できる。ＮＶＤＩＭＭメモリ構造は、少なくともＤＲＡＭを有する第１階層ＮＶＤキャッシュ及びストレージクラスメモリを有する第２階層ＮＶＤキャッシュを包含するように編成できる。第２階層ＮＶＤキャッシュは、非限定的な例でソリッドステートドライブ（ＳＳＤ）であることができる。
【００１３】
他の図示の実施態様では、コントローラ及びメモリバスを包含するプロセッサを有するコンピューティングシステムが提供されている。複数のメモリ構造がメモリバスと相互接続され、マスストレージはメモリ構造と相互接続されていて、プロセッサ、メモリ構造及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能である。インターリーバ及びデインターリーバ（モジュール、プロセッサなど）は、データのパケットがインターリーブされてメモリ構造の間に分散され、プロセッサとマスストレージの各々において編成されたパターンにデインターリーブされるようにパケットを配置する。例示的に、インターリーバ及びデインターリーバは、パケットがメモリに書き込まれてプロセッサにおいて編成されたパターンからインターリーブされ、メモリ構造を通過して、マスストレージにおいて編成されたパターンに保存されるようにする。インターリーバ及びデインターリーバはまた、パケットがメモリから読み出されてマスストレージにおいて編成されたパターンからインターリーブされ、メモリ構造を通過して、プロセッサによって編成されたパターンに受容されるようにする。インターリーバ及びデインターリーバはまた、メモリ構造全体の配置構成におけるメモリ構造の各々の位置に応答して、パケットが配置構成におけるメモリ構造の各々の位置に基づいてインターリーブ及びデインターリーブされる。それゆえ、たとえメモリ構造、例えばＮＶＤＩＭＭがプリント基板上の異なるスロットに移されても、編成は同じままである。
【００１４】
他の図示の実施態様では、コンピューティングシステムは、コントローラとメモリバスを有するプロセッサ、及びメモリバスと相互接続された複数のメモリ構造を包含する。マスストレージはメモリ構造並びに、プロセッサ、メモリ構造及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能である。とりわけマスストレージは、トポロジーマスストレージをメモリ構造に接続する通信プロトコルのためのルートを定義する。非限定的な例を挙げれば、プロトコルはＰＣＩｅ、Ｇｅｎ−Ｚ、ＳＡＴＡ、ＳＡＳ、イーサネット、インフィニバンド（登録商標）、ＳＣＳＩ、及びｉＳＣＳＩの少なくとも１つを含み、及び／又はメモリ構造はＮＶＤＩＭＭを含むことができる。
【００１５】
他の図示の実施態様では、コンピューティングシステムはコントローラとメモリバスを有するプロセッサ、及びやはりメモリバスと相互接続されたコントローラを有するＮＶＤＩＭＭ配置構成を包含する。マスストレージはＮＶＤＩＭＭ配置構成並びに、プロセッサ、ＮＶＤＩＭＭ配置構成及びマスストレージのあいだを通過するデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能である。ＮＶＤＩＭＭ配置構成とマスストレージは共にメモリコンバインを定義する。プライベート高速接続は、ＮＶＤＩＭＭコントローラをマスストレージと接続する。
【００１６】
他の図示の実施態様では、コンピューティングシステムは、コントローラとメモリバスを有するプロセッサ、及びメモリバスと相互接続された複数のメモリ構造を包含する。マスストレージはメモリ構造並びに、プロセッサ、メモリ構造及びマスストレージの間を通るデータのための最終格納場所を用意するメモリバスを介してアドレス指定可能である。バックドア配置構成は、プロセッサと相互接続することなくマスストレージを外部デバイスと相互接続する。
【００１７】
他の図示の実施態様では、コンピューティングシステムにおいてデータを処理するための方法が提供される。メモリバスを有するプロセッサはＮＶＤＩＭＭ配置構成並びに、マスストレージはやはりメモリバスと相互接続されている。マスストレージはメモリバス上のアドレス空間の一部を定義する。ＮＶＤＩＭＭ配置構成とマスストレージの各々は、プロセッサによって使用される全体アドレス空間の一部としてアドレス指定され得る。データは、当該データの最終格納場所としてマスストレージに保存される。例示的に、データを保存して、少なくとも１つの階層を最終格納場所として指定するためのキャッシュの階層が提供され得る。
【００１８】
以下に本発明を添付の図面を参照して説明する。
【図面の簡単な説明】
【００１９】
【図１】先行技術の実装による（例えば）ノースブリッジとメモリバスを通してアクセス可能なＤＲＡＭメモリ、及びサウスブリッジを通してアクセス可能なデータストレージ（例えばディスク、電気光学ＳＳＤ）を有するサーバ環境に見られるような伝統的／慣用的なコンピューティングシステムのブロック図である。
【００２０】
【図２】先行技術の実装によるデータストレージが外部Ｉ／Ｏチップセットを用いてアクセス可能である、概ね図１のアーキテクチャによる慣用的なコンピューティングシステムのブロック図である。
【００２１】
【図３】メモリ及びデータストレージは各々プロセッサのフレームワーク（例えばチップセット又はダイ）内で、直接インターフェースを用いてアクセス可能である先行技術の実装による概ね図１のアーキテクチャによる慣用的なコンピューティングシステムのブロック図である。
【００２２】
【図４】先行技術の実装によるメモリがフラッシュコンポーネントを包含する、概ね図１のアーキテクチャによる慣用的なコンピューティングシステムのブロック図である。
【００２３】
【図５】図示の実施態様による新規のメモリ・ストレージコンバイン及びメモリバス上に存在する関連コントローラを包含するブロック図である。
【００２４】
【図６】類似のＮＶＤＩＭＭの間に分散したＮＶＤ−Ｌ２キャッシュを示す、本明細書に記載の実施態様によるメモリ・ストレージコンバインに適用可能なＮＶＤＩＭＭ配置構成を示すブロック図である。
【００２５】
【図７】異なるＮＶＤＩＭＭの間に分散したＮＶＤ−Ｌ２キャッシュを示す、本明細書に記載の実施態様によるメモリ・ストレージコンバインに適用可能なＮＶＤＩＭＭ配置構成を示すブロック図である。
【００２６】
【図８Ａ】ＮＶＤＩＭＭとマスストレージデバイスが一対一で対応する本明細書に記載のメモリ・ストレージコンバインで使用するための例示的なＮＶＤＩＭＭ配置構成を示すブロック図である。
【００２７】
【図８Ｂ】代替的な実施態様によるＮＶＤ−Ｌ２キャッシュがＮＶＤマスストレージデバイスに配置された本明細書に記載のメモリ・ストレージコンバインで使用するための一対一対応ＮＶＤＩＭＭ配置構成を示すブロック図である。
【００２８】
【図８Ｃ】代替的な実施態様によるＮＶＤマスストレージデバイスに配置されたＮＶＤ−Ｌ２キャッシュとマスストレージのためのビルディングブロックとして使用されるＳＳＤを有する、本明細書に記載のメモリ・ストレージコンバインで使用するための一対一対応ＮＶＤＩＭＭ配置構成を示すブロック図である。
【００２９】
【図９Ａ】ＮＶＤＩＭＭとマスストレージデバイスが多対一で対応する、本明細書に記載のメモリ・ストレージコンバインで使用するための例示的なＮＶＤＩＭＭ配置構成を示すブロック図である。
【００３０】
【図９Ｂ】代替的な実施態様によるＮＶＤ−Ｌ２キャッシュがＮＶＤマスストレージデバイスに配置された本明細書に記載のメモリ・ストレージコンバインで使用するための多対一対応ＮＶＤＩＭＭ配置構成を示すブロック図である。
【００３１】
【図９Ｃ】代替的な実施態様による、ＮＶＤマスストレージデバイスに配置されたＮＶＤ−Ｌ２キャッシュとマスストレージのためのビルディングブロックとして使用されるＳＳＤを有する、本明細書に記載のメモリ・ストレージコンバインで使用するための多対一対応ＮＶＤＩＭＭ配置構成を示すブロック図である。
【００３２】
【図１０】一対一対応マッピングを有する本明細書に記載の実施態様によるメモリコンバインのブロック図である。
【００３３】
【図１１】本明細書に記載の実施態様による多対一対応マッピングを有するメモリコンバインのブロック図である。
【００３４】
【図１２Ａ】プロセッサがＮＶＤマスストレージデバイスのバックドアＩ／Ｏアクセス接続を通して及びＩ／Ｏ相互接続を介してＮＶＤマスストレージ並びに外部世界（例えばイーサネットを通して）と相互接続されている、本明細書に記載の実施態様による多対一対応マッピングを有するメモリコンバインのブロック図である。
【００３５】
【図１２Ｂ】プロセッサがＮＶＤマスストレージ並びに外部世界と専らＮＶＤＩＭＭ及びそれらのバックドアＩ／Ｏアクセス接続を通して相互接続され、内部又は外部マスストレージ内のデータにアクセスするための直接接続がない、本明細書に記載の実施態様による多対一対応マッピングを有するメモリコンバインのブロック図である。
【００３６】
【図１３】慣用的（伝統的）なデータフロー実装による、イーサネットを通したマスストレージへのデータ移動及びメモリ・ストレージコンバインのＮＶＤＩＭＭにおけるデータフロー読出しを示すメモリ・ストレージコンバインを有するコンピューティングシステムのブロック図である。
【００３７】
【図１４】慣用的（伝統的）なデータフロー実装によるイーサネットを通したマスストレージからのデータ移動及びメモリ・ストレージコンバインのＮＶＤＩＭＭにおけるデータフロー書込みを示す、図１３のメモリ・ストレージコンバインを有するコンピューティングシステムのブロック図である。
【００３８】
【図１５】例示的な実施態様によるイーサネット及びバックドアアクセスを通したＮＶＤマスストレージ又は他のＮＶＤ層（ＮＶＤ−Ｌ１又はＮＶＤ−Ｌ２又は両方）へのＮＶＤデータフロー読出しを示す、メモリ・ストレージコンバインを有するコンピューティングシステムのブロック図である。
【００３９】
【図１６】バックドアアクセス及びイーサネットを通るＮＶＤマスストレージ又は他のＮＶＤ層（ＮＶＤ−Ｌ１又はＮＶＤ−Ｌ２又は両方）からのＮＶＤ書込みデータフローを示す、図１５のメモリ・ストレージコンバインを有するコンピューティングシステムのブロック図である。
【００４０】
【図１７】Ｉ／Ｏ相互接続を解するＮＶＤマスストレージへのバックドアアクセスを示す、例示的な実施態様によるメモリ・ストレージコンバインを有するコンピューティングシステムのブロック図である。
【００４１】
【図１８Ａ】インターリーブ及びバックドアアクセスを表わし、ＮＶＤＩＭＭとＮＶＤマスストレージはメモリマップ上で別個にアドレス指定可能である、例示的な実施態様によるメモリ・ストレージコンバインを有するコンピューティングシステムのアドレス指定可能な領域の統合されたメモリマップの図である。
【００４２】
【図１８Ｂ】Ｉ／Ｏ相互接続が任意であり、アドレス指定可能であり、メモリバス上でバッファ又はキャッシュとして作用するＮＶＤＩＭＭを有する、他の例示的な実施態様によるメモリ・ストレージコンバインを有するコンピューティングシステムのアドレス指定可能な領域の統合されたメモリマップの図である。
【００４３】
【図１９Ａ】ＮＶＤマスストレージと別個に組み合わされたＮＶＤＩＭＭを表わし、ＮＶＤＩＭＭとＮＶＤマスストレージはメモリマップ上で別個にアドレス指定可能である、例示的な実施態様によるメモリ・ストレージコンバインを有するコンピューティングシステムのアドレス指定可能な領域の統合されたメモリマップの図である。
【００４４】
【図１９Ｂ】Ｉ／Ｏ相互接続が任意であり、アドレス指定可能であり、メモリバス上でバッファ又はキャッシュとして作用するＮＶＤＩＭＭを有する、他の例示的な実施態様によるメモリ・ストレージコンバインを有するコンピューティングシステムのアドレス指定可能な領域の統合されたメモリマップの図である。
【００４５】
【図１９Ｃ】単一のＮＶＤマスストレージ装置がメモリマップ上でアドレス指定可能であり、メモリバス上でバッファ又はキャッシュとして作用するＮＶＤＩＭＭを有する、他の例示的な実施態様によるメモリ・ストレージコンバインを有するコンピューティングシステムのアドレス指定可能な領域の統合されたメモリマップの図である。
【００４６】
【図２０Ａ】一実施態様によるＮＶＤ−Ｌ１、ＮＶＤ−Ｌ２及びＮＶＤマスストレージがＮＶＤＩＭＭ上にあり、ＮＶＤコントローラを用いて外部世界と通信するＮＶＤＩＭＭ配置構成の図である。
【００４７】
【図２０Ｂ】一実施態様によるＮＶＤ−Ｌ１及びＮＶＤ−Ｌ２がＮＶＤＩＭＭ上にあり、ＮＶＤコントローラを用いてＮＶＤマスストレージデバイスと通信し、ストレージメディアの一部がＮＶＤＩＭＭ上にあり、ストレージメディアの一部がＮＶＤマスストレージデバイス上にあることによって分岐ストレージを提供する層構造ＮＶＤＩＭＭ配置構成の図である。
【００４８】
【図２１】一実施態様によるＮＶＤ−ＬｌがＮＶＤＩＭＭ上にあり、ＮＶＤ−Ｌ２がＮＶＤマスストレージデバイス上にある層構造ＮＶＤＩＭＭ配置構成の図である。
【００４９】
【図２２】例示的な実施態様によるＮＶＤマスストレージデバイスのブロック図である。
【００５０】
【図２３】例示的な実施態様によるＮＶＤＩＭＭへのパスにＮＶＤインターリーブ／デインターリーブモジュールを有するＮＶＤマスストレージのブロック図である。
【００５１】
【図２４Ａ】例示的な実施態様によるＩ／Ｏ相互接続へのパスにＩ／Ｏインターリーブ／デインターリーブモジュールを有するＮＶＤマスストレージのブロック図である。
【００５２】
【図２４Ｂ】代替的な実施態様による相互接続とマスストレージの間に置かれたインターリーブ／デインターリーブモジュールを有するＮＶＤマスストレージを有するＮＶＤマスストレージのブロック図である。
【００５３】
【図２４Ｃ】例示的な実施態様による書込み操作においてマスストレージとホストプロセッサの間でＮＶＤＩＭＭを通して転送されるインターリーブ／デインターリーブパケットデータのハンドリングを示すブロック図である。
【００５４】
【図２４Ｄ】例示的な実施態様による読出し操作においてマスストレージとホストプロセッサの間でＮＶＤＩＭＭを通して転送されるインターリーブ／デインターリーブパケットデータのハンドリングを示すブロック図である。
【００５５】
【図２５】例示的な実施態様による統合されたエネルギー源を有するＮＶＤマスストレージのブロック図である。
【００５６】
【図２６】例示的な実施態様による別個の相互接続されたエネルギー源を有するＮＶＤマスストレージのブロック図である。
【発明を実施するための形態】
【００５７】
ＤＲＡＭ又は同等のものとマスストレージの両方で利用可能なメモリ、例えばストレージクラスメモリの能力と性能を用いて、より効率的に利用するために、以下の記述は、ＮＶＤＩＭＭに基づくマルチレベルキャッシュ及びストレージのためのシステムの様々な実施態様を提供する。
【００５８】
Ｉ．メモリバス上のマルチレベル拡張メモリ・ストレージコンバイン
【００５９】
メモリバス上のアドレス指定可能なメモリに関して、慣用的なＮＶＤＩＭＭ解決策は単一階層のメモリ（即ちＤＲＡＭ又はフラッシュ）を有する。ＮＶＤＩＭＭ解決策において存在するメモリのタイプに関して、慣用的なＮＶＤＩＭＭは最大２種類のメモリ、即ち揮発性メモリ（ＳＲＡＭ又はＤＲＡＭ）と不揮発性メモリ（例えばフラッシュメモリ）を有する。第２階層は典型的に永続性、即ちデータ（電源）故障イベント時のＤＲＡＭバックアップのために用いられ、メモリバス上でアドレス指定可能ではないことに留意されたい。また、そのような実装において、フラッシュメモリの容量は、ＤＲＡＭ容量の乗数である容量に限られている。例えば、８ＧＢのＮＶＤＩＭＭモジュールでは、フラッシュ容量は８ＧＢ〜１６ＧＢであり得る。別の実施態様ではフラッシュは１２８ＧＢ又はそれ以上の容量を持ち得る。以下に説明する図示の実施態様によれば、２階層以上のアドレス指定可能なメモリは、最初の数メモリ階層が拡張キャッシュレベル（本明細書では「ＮＶＤキャッシュ」と呼ぶ）として働き、最後の階層がデータの最終格納場所であることができるように配置され得る。
【００６０】
図５に示す実施態様で設けられている配置構成５００では、プロセッサ５１０が（ＤＤＲ）インターフェース５２２（これはメモリアクセスを伝える）によってメモリ・ストレージコンバイン５２３と相互接続されたメモリコントローラを包含する。ＤＲＡＭ５２０（又は同等以上のレイテンシ／速度を有する技術）は、ＮＶＤ−Ｌ１と呼ばれるメモリ・ストレージコンバインの第１階層を形成する。ＤＲＡＭ、ＳＲＡＭ、ストレージクラスメモリ又はフラッシュメモリ（又は類似の技術）は、ＮＶＤ−Ｌ２と呼ばれるアドレス指定可能なメモリの第２階層を形成する。フラッシュ、磁気メディア、ストレージクラスメモリ又は類似のメモリに基づく大容量不揮発性メモリは、ＮＶＤマスストレージ５２５として定義されるアドレス指定可能なメモリの最後の階層を形成しており、適当な通信バスアーキテクチャ５２６（例えばＳＡＴＡ、ＰＣＩｅ及び／又は他のインターフェース）を介して相互接続されたＮＶＤＩＭＭの外部に位置することができる。ＮＶＤコントローラ５２７は示されているように関連するＮＶＤ−Ｌ１及びＮＶＤ−Ｌ２キャッシュコントローラ５２８及び５２９を包含する。上記のすべてのレベルは一緒に「マルチレベル拡張キャッシュストレージ組合せ」を構成する。別の例示的な実施態様では、これより多くの階層又はメモリを当業者にとって適切且つ明瞭に設けることができる。
【００６１】
図５の例によって実装されたマルチレベル拡張キャッシュストレージ組合せの様々なコンポーネント、及びそれらの特徴は、次の通り設けることができる。
【００６２】
１．ＮＶＤ−Ｌ１：
ＤＲＡＭ又は他の技術がＮＶＤＩＭＭ拡張キャッシュＬＩ又はＮＶＤ−Ｌｌを形成し、実施態様において、ＮＶＤ−Ｌｌは１６ＧＢの揮発性メモリ、例えばレイテンシは数１０ナノ秒及び速度は２４００メガ転送／秒（１２００ＨｚＤＤＲ４クロック）又はそれ以上のＤＲＡＭである。別の実施態様において、ＮＶＤ−Ｌｌは不揮発性メモリ、例えばレイテンシが１ナノ秒以下のＭＲＡＭ（磁気ＲＡＭ）である。図５の実施態様では、ＮＶＤ−ＬｌはＮＶＤＩＭＭＰＣＢ上に置かれている。
【００６３】
２．ＮＶＤ−Ｌ２：
高速キャッシュとして使用されるメモリは、ＮＶＤＩＭＭ拡張キャッシュＬ２又はＮＶＤ−Ｌ２と呼ばれる。幾つかの実施態様において、これらはレイテンシ及び速度をＮＶＤ−Ｌｌより低くした永続的なメディアであってよい。別の実施態様では、ＮＶＤ−Ｌ２は、データが真に永続的なドメインに移されるまで人為的に駆動され得る、又は単に揮発性バッファとして働く揮発性ＤＲＡＭからなることができよう。１実施態様において、ＮＶＤ−Ｌ２は（例えば）数１０ナノ秒のレイテンシを有する４ＧＢのＤＲＡＭチップであり得よう。例示的な実施態様において、ＮＶＤ−Ｌ２は数百ナノ秒のレイテンシを有する２５６ＧＢの不揮発性ＲｅＲＡＭメモリであってよい。別の例示的な実施態様において、ＮＶＤ−Ｌ２は、数１０マイクロ秒のオーダーのレイテンシを有する５１２ＧＢ不揮発性ＮＡＮＤフラッシュメモリである。ＮＶＤ−Ｌ２は、（ａ）ＮＶＤＩＭＭ上に物理的に存在し、（ｂ）多数のＮＶＤＩＭＭに物理的に散在しているが、データ及び管理インターフェースを通して接続されて１つのＮＶＤＩＭＭコントローラに論理的にアクセス可能にされ、（ｃ）ＤＩＭＭフォームファクターを有する幾つかのＰＣＢに散在しているが、データ及び管理インターフェースを通して接続されて１つのＮＶＤＩＭＭコントローラに論理的にアクセス可能にされ、又は（ｄ）ＮＶＤＩＭＭ、ＤＩＭＭ及びデータ及び管理インターフェースを通してＮＶＤＩＭＭに接続された装置に散在できる。これは１つの装置に統合されているか、又は幾つかの装置に散在しているかに応じて、統合ＮＶＤ−Ｌ２又は分散ＮＶＤ−Ｌ２であることができる。図６の例示的な配置構成６００を参照すると、図５のＮＶＤＩＭＭｌ５２０はインターフェース６１０を介して他の３つの類似のＮＶＤＩＭＭ（ＮＶＤＩＭＭ２、ＮＶＤＩＭＭ３及びＮＶＤＩＭＭ４）（６３０、６３２及び６３４）に接続されており、それぞれが同様に関連するＮＶＤ−ＬＩ及びＮＶＤ−Ｌ２に対する同一のＮＶＤコントローラ及びキャッシュコントローラアーキテクチャを有している。この配置構成は、類似のＮＶＤＩＭＭの間に効果的な分散ＮＶＤ−Ｌ２キャッシュを提供する。図７の例示的な配置構成７００では、１つのＮＶＤＩＭＭ（ＮＶＤＩＭＭｌ）５２０が、図５に一般的に示されているように、インターフェース７１０を介して類似のＮＶＤＩＭＭ（ＮＶＩＤＭＭ４およびＮＶＤＩＭＭ５）７３０及び７３２に接続され、並びにインターフェース７１２を介して（例えば）ＮＶＤ−Ｌ２ストレージクラスメモリと任意の内部バッファのみを有する（即ちＮＶＤ−Ｌ１配置構成／キャッシュが省かれている）２つの異なるＮＶＤＩＭＭ７３４及び７３６（ＮＶＤＩＭＭ２及びＮＶＤＩＭＭ３）に接続されている。更に代替的な実施態様において、多様な他の相互接続されたメモリ配置構成を実装できる。
【００６４】
３．ＮＶＤマスストレージ：
伝統的ストレージ技術、例えばフラッシュメモリ、磁気ハードディスク、光学ドライブ又はストレージクラスメモリのいずれも、ＮＶＤＩＭＭ上にデータのための最終格納場所を用意する大容量ストレージデバイスを設けるために採用できる。このストレージ装置は「ＮＶＤマスストレージ」と呼ばれ、図８Ａにおける例示的な実施態様において、ＮＶＤマスストレージデバイスは約１ミリ秒のレイテンシを有する２ＴＢのハードディスクストレージを含んでいる。別の例示的な実施態様において、ＮＶＤマスストレージデバイスは１００マイクロ秒のレイテンシを有する７ＴＢの３ＤＮＡＮＤストレージを含むことができる。更に別の例示的な実施態様において、ＮＶＤマスストレージは個別のソリッドステートドライブ（ＳＳＤ）の集合であることができる。ＮＶＤマスストレージは、（ａ）物理的にＮＶＤＩＭＭ上に配置され、（ｂ）物理的に多数のＮＶＤＩＭＭに散在しているが、データ及び管理インターフェースを通して接続されて１つのＮＶＤＩＭＭコントローラに論理的にアクセス可能にされ、又は（ｃ）物理的に１以上のデータ及び管理インターフェースを通して単一のＮＶＤＩＭＭ又は多数のＮＶＤＩＭＭに接続された別個の装置に配置されているものとして実装できる。図８Ａの例示的な配置構成８００に図示されているように、「ＮＶＤプライベート接続」８１０と呼ばれるプライベート高速接続は、図５の例示的なＮＶＤＩＭＭｌ５２０のＮＶＤＩＭＭコントローラ５２７又はＮＶＤＩＭＭキャッシュコントローラ５２８、５２９をＮＶＤマスストレージデバイス８３０と接続するために使用できる。デバイス８３０は、１以上のストレージメディアチップ／パッケージ８３２と、チップ／パッケージ８３２にアクセスするための関連するメディアコントローラ８３４を包含する。当業者に従いプライベート高速接続としてＰＣＩｅ又は類似の高速技術を使用でき、高速インターフェースブロック８１２及び８１４として表されている。図示されているように、図８の配置構成８００は、例示的なＮＶＤＩＭＭ（図５のＮＶＤＩＭＭｌ５２０）と対応するＮＶＤマスストレージ装置の一対一対応マッピングを提供する。
【００６５】
図８Ｂは、代替的な配置構成８４０を示しており、ここではＮＶＤ−Ｌ１（例えばＤＲＡＭ又は類似のメモリ構造）８４４はＮＶＤＩＭＭ上にありＮＶＤ−Ｌ２８４６はＮＶＤマスストレージ８４８上にある。コントローラ８５０、８５２及び８５４、ストレージメディアチップ８５６、並びに他のコンポーネントも図示されており、一般的に上述した通りに動作する（図８Ａ参照）。
【００６６】
図８Ｃは別の代替的な配置構成８６０を示しており、ここではＮＶＤＩＭＭ８６２はＮＶＤ−Ｌｌ（例えばＤＲＡＭ又は類似のメモリ構造）８６４を保持し、ＮＶＤ−Ｌ２８６６はＮＶＤマスストレージ８６８上にある。この実施態様では、ＳＳＤ８７６は上述したストレージメディアチップ（図８Ｂにおける８５６）の代わりにストレージビルディングブロックとして提供されている。一般的に上述したように配置構成の様々なコンポーネントを制御するために、適当なコントローラ８７０、８７２及び８７４が設けられている。
【００６７】
図９Ａに示す他の例示的な配置構成９００では、複数のＮＶＤＩＭＭ９２０、９２２、９２４及び９２６（アーキテクチャは図５のＮＶＤＩＭＭ５２０と類似又は同一）が、関連するＮＶＤプライベート接続／インターフェース、９１０、９１２、９１４及び９１６を介して、それぞれ単一のＮＶＤマスストレージデバイス９３０にマッピングされている。この例ではデバイス９３０は、複数の例示的なストレージメディアチップ／パッケージ及び関連するメディアコントローラ９３４を包含している。
【００６８】
図９Ｂで、配置構成９４０は多数のＮＶＤＩＭＭ９４２が単一のＮＶＤマスストレージデバイス９４４と組み合わされた実施態様を示している。ＮＶＤ−Ｌｌ９４６はコントローラ９４８と共に各ＮＶＤＩＭＭ９４２内にある。ＮＶＤ−Ｌ２９５０（と適当なコントローラ９５２）は単一のＮＶＤマスストレージデバイス９４４内にあり、すべてのＮＶＤＩＭＭ９４２の間で共有されている。ＮＶＤマスストレージデバイス９４４では、複数のストレージメディアチップ９５６及び関連するメディアコントローラ９５４が採用されている。
【００６９】
図９Ｃの配置構成９６０においては、図９Ｂと類似のＮＶＤＩＭＭ９４２の配置構成が単一のＮＶＤマスストレージデバイス９６８と相互接続されている。この実施態様ではＮＶＤマスストレージデバイス９６８は、ストレージメディアチップ（図９Ｂにおける９５６）の代わりにストレージビルディングブロックとしてＳＳＤ９７６を採用している。ＮＶＤ−Ｌ２キャッシュ９７０がコントローラ９７４及びメディアコントローラ９７２と共に示されている。
【００７０】
ＮＶＤ−ＬｌとＮＶＤ−Ｌ２は一緒に、「ＮＶＤＩＭＭキャッシュ（ＮＶＤ−キャッシュ）」とも呼ばれるマルチレベル拡張キャッシュを形成する。図１０の配置構成１０００には、以下に説明するマルチレベル拡張キャッシュストレージ組合せの様々なシステムファームウェアコンポーネントのマッピングが図示されている。
【００７１】
最上位の階層又はレベル１００２では、カスタマーソフトウェア１０１２、ミドルウェア１０１４及びＮＶＤＩＭＭメモリ・ストレージドライバ１０１６は、ホストプロセッサ又はホストエンジン（コプロセッサ、ハードウェアアクセラレータなど）１０１０内で実行している。この階層１００２は、離散チャネル（この例ではチャネル１−チャネル４）を介して中位の階層１００４と通信する。
【００７２】
中位の階層／レベル１００４は、ＤＤＲメモリバス１０２１の各々のチャネル（チャネル１−チャネル４）上のＮＶＤＩＭＭ１−ＮＶＤＩＭＭ４１０２０からなる。ＮＶＤＩＭＭコントローラファームウェア１０２２、ＮＶＤ−Ｌｌファームウェア１０２４及びＮＶＤ−Ｌ２ファームウェア１０２６は、図示されているようにそれぞれＮＶＤＩＭＭ１０２０上で動作している。各ＮＶＤＩＭＭ１０２０内のＮＶＤ−ＬｌとＮＶＤ−Ｌ２はいずれも関連するＮＶＤ−Ｌｌ又はＮＶＤ−Ｌ２ファームウェアによって独立に、又はプロセッサ／ホストエンジン１０１０内で実行する関連ＮＶＤＩＭＭメモリ・ストレージドライバ１０１６と連動して管理できる。
【００７３】
図示された最下位の階層１００６は、適当なバスアーキテクチャ（例えばケーブル又は光学リンクとして実装されたＰＣＩｅバス又は他の同等のインターフェース）により相互接続されたＮＶＤマスストレージモジュール（Ａ−Ｄ）１０４０からなる。ＮＶＤマスストレージファームウェア１０４２はＮＶＤマスストレージ上で動作していることが示され、マスストレージメディア（データ）１０４４並びにそのＮＶＤＩＭＭコンポーネント相互作用を管理する。
【００７４】
図１０の例示的な配置構成１０００において、キャッシュ制御はハードウェアとファームウェアの混合であってもよい。同様に、以下に掲げるハードウェアとファームウェアコンポーネントは一緒に「ＮＶＤＣコンポーネント」と呼ばれ、ＮＶＤＩＭＭコントローラ、ＮＶＤＩＭＭコントローラファームウェア、ＮＶＤ−Ｌｌコントローラ、ＮＶＤ−Ｌｌファームウェア、ＮＶＤ−Ｌ２コントローラ及びＮＶＤ−Ｌ２ファームウェアからなることができる。図１０の例示的な実施態様では、１つのＮＶＤＩＭＭ１０２０がメモリバス１０２１の各ＤＤＲチャネル（１−４）上に置かれており、各々のＮＶＤＩＭＭ１、２、３及び４はそれぞれＰＣＩｅ接続（又は同等のもの）を通して専用ＮＶＤマスストレージデバイスＡ、Ｂ、Ｃ及びＤに個別に接続されていることに留意されたい。とりわけＰＣＩｅアーキテクチャ及び通信プロトコルは、配置することができる、インターフェースの例として使用されているが、代替的な実施態様においてハイスループットを提供する任意の類似のアーキテクチャ／プロトコルを使用できる。
【００７５】
図１１は、多数のＮＶＤＩＭＭが単一のＮＶＤマスストレージデバイスにマッピングされている他の実施態様による配置構成１１００を示している。図１０の例示的な配置構成１０００におけるように、カスタマーソフトウェア１１１２、ミドルウェア１１１４及びＮＶＤＩＭＭメモリ・ストレージドライバ１１１６が、ホストプロセッサ又はホストエンジン（コプロセッサ、ハードウェアアクセラレータなど）１１１０内で実行している。図示されているようにＤＤＲメモリインターフェース１１２１はチャネル１−チャネル４を包含し、各々がそれぞれの複数のＮＶＤＩＭＭ（１１２０）と相互接続している。各ＮＶＤＩＭＭは上図１０におけるＮＶＤＩＭＭ１０２０の記述に従い編成されている。この例示的な配置構成に示されているように、（ＤＤＲチャネル１上の）ＮＶＤＩＭＭｌ及びＮＶＤＩＭＭ２は、ＮＶＤマスストレージＡにマッピングされている。同様に、（ＤＤＲチャネル２上の）ＮＶＤＩＭＭ３及びＮＶＤＩＭＭ４は、ＮＶＤマスストレージＡにマッピングされて、ＮＶＤＩＭＭ（１１２０）とマスストレージ（１１４０）の多対一対応のマッピングを生み出している。この例では同様に（ＤＤＲチャネル３上の）ＮＶＤＩＭＭ５及びＮＶＤＩＭＭ６はＮＶＤマスストレージＢにマッピングされ、最後に（ＤＤＲチャネル４上の）ＮＶＤＩＭＭ７及びＮＶＤＩＭＭ８もＮＶＤマスストレージＢにマッピングされている。インターフェース１１５０は、各ＮＶＤＩＭＭ１０２０をマスストレージデバイス１１４０とリンクしている。代替的な実施態様において、各ＮＶＤＩＭＭ対（ＮＶＤＩＭＭｌと２、ＮＶＤＩＭＭ３と４、ＮＶＤＩＭＭ５と６、及びＮＶＤＩＭＭ７と８）は、それぞれの離散マスストレージデバイス、例えば図１０の配置構成１０００に関して述べたようにマスストレージＡ−Ｄとリンクできる。
【００７６】
図１１の例示的な配置構成１１００において、ＮＶＤＩＭＭメモリ・ストレージドライバ１１１６が、すべてのＮＶＤＩＭＭキャッシュ、（各ＮＶＤＩＭＭモジュール１１２０内の）ＮＶＤ−Ｌ１、ＮＶＤ−Ｌ２、及びそれらのＮＶＤマスストレージデバイスにおける最終的な場所におけるコンテンツの位置情報を保持する役割を果たす。システムが自動的にＮＶＤＩＭＭの位置を検出し、当該位置に関係するデータを投入する。ＮＶＤＩＭＭ１１２０の相対的位置に基づいて、同じ位置をＮＶＤマスストレージファームウェア１１４２において再構成できる。ＮＶＤＩＭＭ１１２０及びＮＶＤマスストレージ１１４０に入るすべてのデータは、メモリバス１１２１を経由していることに留意されたい。
【００７７】
反対に、図１２Ａは、ＮＶＤマスストレージデバイス１２４０がシステムのＩ／Ｏ相互接続１２３０並びにメモリバス１２２１に接続されている配置構成１２００を図示している。この配置構成１２００では、ＮＶＤマスストレージ１２４０はプロセッサ又はホストエンジン１２１０により（上の図１０及び図１１で一般的に述べたように）直接的にＩ／Ｏ相互接続１２３０を通して、又は間接的にメモリバス１２２１を通してよりアクセスできる。図示の通り、Ｉ／Ｏ相互接続１２３０はバスブランチ１２３２を介してＩ／Ｏチップセット及び／又はプロセッサ若しくはホストエンジン１２１０と関連するブリッジ１２３６とリンクしている。それゆえＩ／Ｏ相互接続１２３０及び関連するチップセット／ブリッジ１２３６は、（図１の例に示されているような）慣用的な分岐メモリ及びストレージ実装と類似の方法でマスストレージデバイス配置構成１２４０へのバックドアアクセス（中位階層におけるＮＶＤＩＭＭ１２２０のバイパス）を提供する。
【００７８】
代替的に、図１２Ｂの図示の配置構成１２５０において、ＮＶＤマスストレージ１２６０は、プロセッサ又はホストエンジン１２７０によって専らＮＶＤＩＭＭ１２６２を通してアクセスされる。Ｉ／Ｏチップセット（ある場合）１２７６は、データ移動に直接関係していない他の機能を自由に扱える。従ってプロセッサ／ホスト１２７０は、ＤＤＲインターフェース１２７８、ＮＶＤＩＭＭ又は複数のＮＶＤＩＭＭ１２６２、単一若しくは複数のＮＶＤマスストレージデバイス１２６０を使用して、Ｉ／Ｏチップセット１２７６を用いることなくバックプレーン相互接続１２８０を通して何らかの外部フィード又はストレージデバイスに到達する。
【００７９】
ＩＩ．Ｉ／ＯへのアクセスＮＶＤマスストレージ及びＮＶＤＩＭＭ最適化フロー
【００８０】
図１３に示す伝統的なデータフロー配置構成１３００において（上述した図２のコンピューティング配置構成２００と同様に）、プロセッサ１３１０又は類似のデータ移動エンジン（例えばリモートデータ移動エンジン又はＲＤＭＡ）が、プロセッサ１３１０及びそのメモリインターフェース１３２２を通してデータをマスストレージ１３４０からＤＩＭＭ又はＮＶＤＩＭＭ１３２０に、及びその逆に移動させる役割を果たす。メモリモジュール１３２０はＤＲＡＭ、ＳＲＡＭ、フラッシュ、又は他の何らかの適当なメモリ技術を包含できることに留意されたい。非限定的な例を挙げれば、更にメモリモジュール１３２０は先端メモリ技術、例えば相変化メモリ（ＰＣＭ）、３ＤＸＰｏｉｎｔTM、及び同種のものを包含できる。プロセッサ（ｓ）１３１０は、Ｉ／Ｏチップセット１３３４又は他の類似の配置構成（例えば移動エンジン、例えばダイレクトメモリアクセス（ＲＤＭＡ）など）を通してマスストレージデバイス１３４０にアクセスする。これらはＩ／Ｏ相互接続１３３０を介してコンピューティングシステム（例えばサーバ環境）の外部ネットワーク、内部マスストレージデバイス並びに外部マスストレージデバイスへのアクセスを提供する。
【００８１】
図示された「読出しフロー」パス１３６０の例では、外部データはイーサネット１３６２を通して移動されて、内部ＳＡＴＡ（１３６４）をベースとするマスストレージデバイス１３６６内に置かれる（ローカルストレージパス１３７０へのロードとして示されている）。次にプロセッサ１３１０はＩ／Ｏ相互接続１３３０を通してデータを「読み出し」、必要があればこれをＮＶＤＩＭＭ１３２０内に置く。代替的な方法において、イーサネット１３６２を通るデータは、直接ＤＩＭＭ／ＮＶＤＩＭＭ１３２０内に置くことができることに留意されたい。同様に図１４に図示されているように、同じ配置構成１３００に対する「書込みフロー」パス１４６０では、プロセッサ１３１０はＤＩＭＭ／ＮＶＤＩＭＭ１３２０から読み出したデータを、及び内部ＳＡＴＡ１３６４をベースとする伝統的マスストレージデバイス１３６６に書き込む。次にデータは伝統的マスストレージデバイス１３６６から、パス１４７０に沿って必要とされるイーサネットポートを通して移動される。「読出しフロー」におけると同様、「書込みフロー」においてもデータは直接ＤＩＭＭ／ＮＶＤＩＭＭ１３２０から、プロセッサ１３１０とそのメモリインターフェース１３２２によりイーサネットポート１３６２を通して外部ネットワークに移動できる。従ってＤＩＭＭ／ＮＶＤＩＭＭ１３２０に投入するためにプロセッサ１３１０を使用することは、多大な処理オーバーヘッドという代償を招く。更にメモリバス１３２２はデータがＤＩＭＭ／ＮＶＤＩＭＭに／から移動されるときに塞がっていて、この読出し又は書込みインターバル中にプロセッサ１３１０上で実行される他のプロセス又は読出しがメモリバス１３２２にアクセスするのを阻止する。ＮＶＤＩＭＭが数百ギガバイトのストレージ容量を有することができる例では、データのＮＶＤＩＭＭへの／からの転送は、相当な時間にわたりメモリバスに沿った動作を阻止する可能性がある。これは、その他の点では高速で極めて効率的な処理構成に難所を生み出す。
【００８２】
例示的な実施態様の図示のシステムは、ＮＶＤマスストレージデバイスへのバックドアＩ／Ｏアクセスを提供することによって、上述したＮＶＤＩＭＭメモリ・ストレージコンバインを拡張する。このことはデータをＮＶＤＩＭＭに／から移動するためにメモリバスを使用することを回避する。この新規のデータ移動の技術は、本明細書では「ＮＶＤ読出しフロー」及び「ＮＶＤ書込みフロー」と呼ばれ、以下に説明する。
【００８３】
図１５は、例示的なコンピューティング配置構成１５００の線図を示しており、そのデータフローは上述した「ＮＶＤ読出しフロー」及び「ＮＶＤ書込みフロー」を採用することにより、ＮＶＤＩＭＭ１５２０上のＤＲＡＭメモリへのデータ移動がメモリバス１５２２を通過しない。実線矢印１５６０、１５６２によって示されているように、図１３に示された内部ＳＡＴＡベースのマスストレージデバイス（１３４０）の代わりに、データは直接ＮＶＤマスストレージデバイス１５４０に移動され得る。続いて図１５に示されているように、「ＮＶＤ読出しフロー」のために、ＮＶＤＣメモリ・ストレージコンバイン１５２３のコンポーネントはデータをＮＶＤマスストレージ１５４０からＮＶＤＩＭＭモジュール１５２０内のＮＶＤ−Ｌ１（例えばＤＲＡＭ）又はＮＶＤ−Ｌ２（ストレージクラスメモリ若しくはこれと同等のもの）に、或いは適当ならば（通信アーキテクチャ／プロトコル１５５０を介して）両方に読み出すことができ（矢印１５６２）、メモリコントローラ１５１４又はメモリバス１５２２は関与しない。データは、必要ならばＮＶＤ−Ｌ２又はＮＶＤ−Ｌ１まで転送して移動され得ることに留意されたい。
【００８４】
とりわけ、この図示の配置構成１５００におけるＮＶＤマスストレージデバイス１５４０は、Ｉ／Ｏ相互接続１５３０上で（Ｉ／Ｏチップセット及びブリッジ１５３２を用いて）、又はメモリバス１５２２上で（ＮＶＤＩＭＭの拡張キャッシュを通して）アクセスできる。図示されているように、ネットワークストレージ若しくはデータフィード１５７０からのデータは、バックドアパスウェイを経てＮＶＤマスストレージデバイス１５４０にロードでき（矢印１５６０）、バックドアパスウェイはイーサネット１５７２、Ｉ／Ｏチップセット１５３２の制御下でＲＤＭＡエンジンなどを包含できる。
【００８５】
図１６は、図１５の例示的なコンピューティング配置構成１５００を参照して「ＮＶＤ書込みフロー」を示している。このフローでは、ＮＶＤＣコンポーネントがＮＶＤ−Ｌ１、ＮＶＤ−Ｌ２及びＮＶＤマスストレージデバイス１５４０の間でデータを移動する（矢印１６６２）役割を果たす。続いて、種々のサーバ（図示せず）内のＩ／Ｏチップセット又はプロセッサ上のいずれかのＤＭＡエンジンは、データを（例えば）イーサネット１５７０を介してＮＶＤマスストレージデバイス１５４０から他のサーバ（矢印１６６０）に移動できる。データはイーサネット１５７２を通してＮＶＤ−Ｌ１又はＮＶＤ−Ｌ２から直接ネットワークストレージ１５７０に移動することもできることに留意されたい。図１５を参照して述べたデータフロー方法は、図１３及び図１４を参照して述べた慣用的なデータフローをサポートできることに留意されたい。
【００８６】
図１５及び図１６の配置構成１５００におけるメモリ・ストレージコンバイン１５２３のアドレス空間は、アプリケーションは本質的に全ストレージ環境を大きいメモリスペースとして「見て」、アプリケーションによる操作中にそのようなものとして利用するように定義されている。
【００８７】
Ｉ／Ｏ相互接続１５３０上でＮＶＤマスストレージ１５４０と併せて他の内部マスストレージデバイスが利用可能である実施態様において、適当ならばメモリバス１５２２を使用しないやり方でデータをそれらに移動できる。そのような方法は、プロセッサ１５１０がＮＶＤ−Ｌ１、ＮＶＤ−Ｌ２及びＮＶＤマスストレージデバイス１５４０間のすべてのデータ転送の管理をＮＶＤＣコンポーネント（１５２３）にアンロードすることを可能にする。同様に、ＮＶＤマスストレージと他のストレージ素子間のすべてのデータ転送はＩ／Ｏチップセット又は他のＤＭＡエンジン１５３２にアンロードされ、そうしてプロセッサ１５１０及びそのメモリバス１５２２の資源を開放する。従ってこの配置構成は慣用的な実装に比して、顕著な性能上の利点を提供し、システムのストレージとネットワークされたデータソースの間に２つの離散パスを可能にする。
【００８８】
図１７の配置構成１７００において、Ｉ／Ｏ接続及びＩ／Ｏチップセット１７３４は顕著な処理オーバーヘッドから解放されている。コンピューティング配置構成１７００は、伝統的マスストレージデバイス１７４０と、本明細書に記載の実施態様によるＮＶＤマスストレージデバイス１７８０の両方を包含する。伝統的マスストレージ１７８０はプロセッサ１７１０に接続されており、メモリ・ストレージコンバイン１７２３内のＮＶＤＩＭＭへの直接パスを持たない（を必要としない）。反対に、この実施態様ではマスストレージ１７８０はプロセッサ１７１０に直接Ｉ／Ｏ相互接続１７３０及び関連するチップセット１７３４を通して接続している。
【００８９】
反対に、図１７の配置構成１７００では、ＮＶＤマスストレージデバイス１７４０はＩ／Ｏ相互接続１７３０を通して（バックドア１７３６を経由して）プロセッサ１７１０に接続され、並びにコントローラ１７１４を使用してメモリバス１７２２に接続されている。実施態様は、ＮＶＤマスストレージ１７４０がＮＶＤＩＭＭマスストレージデータ移動エンジン（ＮＶＤＭＳ−ＤＭＡ）１７４４を包含することも示している。そのようなものとしてマスストレージデバイス１７８０又はＩ／Ｏ相互接続１７３０に接続されたＮＶＤマスストレージデバイス１７４０へのデータ移動は、Ｉ／Ｏチップセット１７３４内のＤＭＡエンジン又はＩ／Ｏ相互接続１７３０へのアクセスを有する他のＤＭＡエンジンによって管理され得る。しかしながらこの実施態様ではＮＶＤＭＳ−ＤＭＡ１７４４を使用して、データをＮＶＤマスストレージ１７４０から伝統的マスストレージ１７８０に、及びその逆に移動できる。別の例示的な実施態様において、ＮＶＤＭＳ−ＤＭＡ１７４４はデータをＮＶＤマスストレージデバイス１７４０から、（例えば）イーサネット１７６２を介してコンピューティング配置構成（サーバ）１７００の外部にある位置１７７０に、又はその逆に移動できるように構成することもできる。
【００９０】
上述した例示的な実施態様によって提供される利点は、更に図１８Ａのメモリマップ１８００によって表現されているプロセッサのメモリ図によって示すことができる。このマップ１８００は、プロセッサ配置構成において直接的又は間接的にアドレス指定可能なすべてのエリアの統合図である。本明細書に記載するシステムと方法に従い、すべての（又は実質的にすべての）アドレス指定可能な位置（又は仮想的論理アドレス）を、相互接続された全体的な配置構成の内部で様々なコンポーネント又はデバイスにマッピングできる。メモリマップ１８００はこれによりプロセッサに接続された様々なデバイスの可能なマッピングを図示している。図示のシステムと方法の配置構成は（その様々な実施態様において）、ＮＶＤＩＭＭメモリ１８２０、１８２２と、ＮＶＤマスストレージ（Ａ／Ｂ）１８３０、１８３２との間でのデータ移動（橋渡し矢印１８１０および矢印１８１２）をＮＶＤプライベート接続を通して許す。この配置構成はまたＮＶＤマスストレージ（例えばＢ）１８３２と伝統的マスストレージ１８６０との間でのデータ移動（橋渡し矢印１８５０）もＩ／Ｏ相互接続１８６２を通して許す。
【００９１】
図１８Ａの実施態様は、チャネル１上のすべてのＮＶＤＩＭＭ（１−４）は、（例えば当業者に公知のメモリインターリーブの技術又は方法により）１つのユニット１８２０として扱われ、チャネル２上のＮＶＤＩＭＭ（５−８）は別のユニット１８２２として扱われ、これらすべてがメモリコントローラ及びメモリバス１８６４の接続及び制御下にあることを示している。ＮＶＤ−Ｌ２はすべてのＮＶＤＩＭＭ（１−４）の間で共有でき、ＮＶＤマスストレージに置かれることができることに留意されたい。これについて以下に図２８で詳しく説明する。
【００９２】
図１８Ｂの配置構成１８７０では、ＮＶＤＩＭＭ（１−４）１８２０及び（５−８）１８２２の集合はメモリバス１８６４上で２以上のグループとして直接的にアクセス可能であるのに対し、マスストレージ素子（Ａ、Ｂ及び伝統的ストレージ）１８３０、１８３２及び１８６０はＮＶＤＩＭＭの後に隠れている。マスストレージは直接的にアクセス可能ではないが、データはＮＶＤＩＭＭとマスストレージ装置の間でバックドアインターフェースを通して移動できる（橋渡し矢印１８５０）。従ってアプリケーションはメモリコントローラバスインターフェース１８６４を通して依然としてＮＶＤマスストレージＡ１８３０、マスストレージＢ１８３２及び伝統的マスストレージ１８６０にアクセスできる。メモリマップにおけるアドレス指定可能性に関して、１配置構成ではＮＶＤＩＭＭグループ１８２０及び１８２２のＮＶＤ−Ｌ１、ＮＶＤ−Ｌ２又は両方がアプリケーションメモリマップ図１８８０上でメモリマップにおける伝統的メモリスペースに類似しているメモリバス１８６４を通して直接的にアドレス指定可能であり得るのに対し、ＮＶＤマスストレージＡ、Ｂ１８３２及び１８６０はアプリケーションメモリマップ図１８８０上で間接的にアドレス指定される。
【００９３】
別の配置構成では、ＮＶＤＩＭＭグループ１８２０及び１８２２のＮＶＤ−Ｌ１、ＮＶＤ−Ｌ２又は両方は、ＮＶＤマスストレージ１８２０、１８３２に対するキャッシュ又はバッファを形成でき、従ってアプリケーションメモリマップ図１８８０上で直接的にアドレス指定可能ではない。その代わりにＮＶＤマスストレージＡ１８３０及びＢ１８３２のそれぞれと、伝統的マスストレージ１８６０が、図示されたアプリケーションメモリマップ図１８８０上に現れるのみである。アプリケーションは任意にＩ／Ｏ相互接続１８６２（ここでは仮想線で示す）を通してこれらのマスストレージデバイス１８３０、１８３２、１８６０にアクセスできるが、そのような操作は機能性を達成するためには必要ないことに留意されたい。図１８Ｂにおける破線括弧１８６６は、外部デバイス（例えばＲＤＭＡ）がマスストレージＡ１８３０、マスストレージＢ１８３２及び伝統的マスストレージ１８６０に直接的にアクセスできることも示している。これらのデバイスは、バックドアインターフェースを通してＮＶＤＩＭＭ１−４（１８２０）及びＮＶＤＩＭＭ５−８（１８２２）内のコンテンツにもアクセスできる（橋渡し矢印１８５０）。
この矢印１８８０及び全配置構成にわたる括弧１８８２は、全ＮＶＤＩＭＭとストレージ組合せを包含するシステムメモリ図を表していることに留意されたい。
【００９４】
同様に、図１９Ａは統合されたメモリマップ１９００はＮＶＤＩＭＭがインターリーブされない（即ちインターリーブがない）場合の例を示している。図１８に図示されたマップ１８００と同様に、ＮＶＤＩＭＭ１９２０とＮＶＤマスストレージデバイス１９４０との間のデータ移動は本明細書に示され説明されているように、ＮＶＤプライベート接続を通して実現できる。より詳しくはＮＶＤＩＭＭ１−４はデータＮＶＤマスストレージＡ（橋渡し矢印１９１２）に転送し、ＮＶＤＩＭＭ５−８はデータをＮＶＤマスストレージＢ（橋渡し矢印１９１４）に転送することが示されている。処理環境の必要性に応じて、ＮＶＤＩＭＭ、ＮＶＤマスストレージ及び／又は伝統的マスストレージのグループ分けの間でその他のデータ転送配置構成を実装できることが想定されている。
【００９５】
図１９Ｂは例示的な配置構成１９５０を示しており、ここではＮＶＤＩＭＭ１からＮＶＤＩＭＭ８１９５４までの集合の各ＮＶＤＩＭＭがメモリバス１９５２上で個別に直接的にアクセス可能であるのに対し、マスストレージ素子（マスストレージＡ１９６０、マスストレージＢ１９６２及び伝統的ストレージ（図示せず））は、メモリ図（矢印１９６６及び括弧１９６８）によって示されている通りＮＶＤＩＭＭ１９５４の後に隠れている。マスストレージ１９６０、１９６２は直接的にアクセス可能ではない（直接アクセスがない）が、データはバックドアインターフェースを通してＮＶＤＩＭＭ１９５４とマスストレージデバイス１９６０、１９６２の間で移動できる。従ってアプリケーションはメモリコントローラバスインターフェース１９５２を通して、依然としてＮＶＤマスストレージＡ１９６０、マスストレージＢ１９６２及び伝統的マスストレージ（ある場合）にアクセスできる。図１８Ｂで説明したアドレス指定可能性の内容は、図１９Ｂに示す実施態様にも該当する。任意に、アプリケーションはＩ／Ｏ相互接続１９７０（仮想線で示す）を通してこれらのマスストレージデバイスにアクセスできるが、その必要はない。破線括弧１９７２は、外部デバイス（例えばＲＤＭＡ）がマスストレージＡ１９６０、マスストレージＢ１９６２及び伝統的マスストレージ（ある場合）に直接的にアクセスできることを示す。これらのデバイスはバックドアインターフェースを通してＮＶＤＩＭＭ１−ＮＶＤＩＭＭ８１９５４内のコンテンツにもアクセスできる。
【００９６】
図１９Ｃの例示的な配置構成１９８０は、すべてのＮＶＤＩＭＭ並びにシステムマスストレージ１９８４がメモリコントローラバス１９８６上で直接的にアクセス可能である別の実施態様を提供する。単一のシステムマスストレージデバイスが図示されているが、図１８Ａ、１８Ｂ、１９Ａ及び／又は１９Ｂと同様のやり方で２以上のマスストレージデバイスを設けられることが明確に想定されている。任意に、アプリケーションはＩ／Ｏ相互接続１９８８（仮想線で示す）を通してマスストレージデバイスに任意にアクセスできる。破線括弧１９９０は、外部デバイス（例えばＲＤＭＡ）がシステムマスストレージ１９８４及び伝統的マスストレージ１９９２に直接的にアクセスできることを示す。外部デバイスはＮＶＤＩＭＭ１−ＮＶＤＩＭＭ８内のコンテンツにもアクセスできる。概して、橋渡し矢印１９９４によって表現されているように、マスストレージ１９８４と伝統的マスストレージとの間のデータの転送は、システムネットワーク上でプロセッサ又はホストエンジンからのいかなる干渉もなく行なわれることができる。上記の通り、システムはＮＶＤＩＭＭ１９８２とストレージ１９８４及び１９９２を単一のユニットとして見る（矢印１９９６及び括弧１９９８）。
【００９７】
ＩＩＩ．ＮＶＤＩＭＭ層
【００９８】
図２０Ａに、マルチレベルキャッシュを有する配置構成２０００が非限定的な例として示されている。図示されているように、メトリクス（性能、耐久性、レイテンシ、電力など）の一部又は全部を共有するＤＲＡＭ又は他の技術は、ＮＶＤＩＭＭ（１、２、３、４など）２０１１のＮＶＤ−Ｌｌキャッシュ２０１０を形成する。技術はＳＲＡＭ、ＤＲＡＭ、フラッシュ又は他のストレージクラスメモリを含むがこれに限るものではなく、ＮＶＤ−Ｌ２キャッシュ２０２０を包含できる。ＮＶＤ−Ｌ１キャッシュ２０１０は揮発性又は不揮発性であることができ、ＮＶＤ−Ｌ２キャッシュ２０２０は典型的に本来不揮発性であるが、ある場合には揮発性であることもできる。ＮＶＤマスストレージ２０３０用のメディアは何らかの永続的なメモリ技術を含んでよい。図２０における例示的な実施態様は、すべての層ＮＶＤ−Ｌ１２０１０、ＮＶＤ−Ｌ２２０２０及びＮＶＤマスストレージ２０３０はＮＶＤコントローラ２０３２の制御下ですべて同じＮＶＤＩＭＭＰＣＢ上に置かれることができ、外部世界（２０５２）との接続性を提供するＮＶＤプライベート接続２０５０を有することを示している。
【００９９】
図２０Ｂの実施態様における配置構成２０４０は、上述したＮＶＤ−Ｌ１２０１０及びＮＶＤ−Ｌ２２０２０が、ここではＮＶＤＩＭＭ２０４１に置かれているが、ストレージ層は２つのコンポーネントにわたって散在しており、ストレージメディアの一部２０３１はＮＶＤＩＭＭ２０４１に置かれ、ストレージメディアの一部２０３２はＮＶＤマスストレージ２０４４に置かれ得ることを示している。Ｉ／Ｏ相互接続又は他の外部エンティティ（２０５１）との外部接続性２０５０が接続２０６０を通して提供され得る。ＮＶＤコントローラ２０４２はＮＶＤＩＭＭ２０４１上にあり、（ブリッジ２０４５によって）相互接続されたＮＶＤストレージスイッチ及びコントローラ２０４３はＮＶＤマスストレージ２０４４上にある。
【０１００】
図２１の実施態様にはマルチレベルキャッシュを有する他の配置構成２１００が、非限定的な例として示されている。図２１における例示的な実施態様は、ＮＶＤ−Ｌ１２１１０がＮＶＤＩＭＭ２１２０上に置かれていることを示している。しかしながらＮＶＤ−Ｌ２２１２０及びＮＶＤマスストレージメディア２１３０はＮＶＤマスストレージデバイス２１４０上に置かれている。外部接続性は接続２１６０によって設けられている。ＮＶＤコントローラ２１５０はＮＶＤＩＭＭ２１２０上にあり、ＮＶＤストレージスイッチ及びコントローラ２１６０はＮＶＤマスストレージ２１４０上にある。コンポーネントはブリッジ２１７０によって接続されている。
【０１０１】
ＩＶ．ＮＶＤマスストレージデバイス
【０１０２】
ＮＶＤマスストレージデバイスは、高い密度と容量を提供する何らかの利用可能な不揮発性ストレージ技術を使用できることに留意されたい。ＮＶＤマスストレージデバイスは依然として何らかの利用可能なメモリ及び／又はストレージ技術の組合せをデータバッファ又はデータキャッシュとして使用できる。これらの不揮発性ストレージ技術のインスタンス又はコンポーネントは「マスストレージメディア」と呼ばれる。ＮＶＤＩＭＭとＮＶＤマスストレージデバイスとの間の接続に使用されるプロトコルは、何らかの適当な高速プロトコル技術であってよく、これはＰＣＩｅを含むがこれに限られない。データリンクは伝統的ケーブル（例えばＰＣＩｅケーブル）、コンパクトな実装を提供する光学ケーブル、又は他の何らかの物理的接続又は無線接続であることができる。ＮＶＤマスストレージデバイスは、何らかのエンティティにとってＩ／Ｏ相互接続並びにデバイスに接続されたＮＶＤＩＭＭを通してアクセス可能であり得る。これによりプロセッサ又はＩ／Ｏチップセット内のＤＭＡは、データをＮＶＤマスストレージデバイスからネットワークドライブなどを含む他の位置に、又はその逆に移動することができる。
【０１０３】
図２２における例示的な実施態様は、ＰＣＩｅデータ相互接続２２１０、２２１２を有するＮＶＤマスストレージデバイス２２００を非限定的な例として示している。実施態様において、全体的なマスストレージ環境の内部で種々のモジュール及び／又はデバイスの間に種々の通信プロトコルを採用できる。例えばプロトコルＡはＮＶＤＩＭＭと（コネクタ２２２０を介して）ＮＶＤマスストレージデバイス２２００との間を接続するために使用され、プロトコルＢは、プロセッサＩ／Ｏを（コネクタ２２３０を介して）接続するために使用され、プロトコルＣはＮＶＤマスストレージメモリコントローラ２２４０に接続するために使用される。
【０１０４】
上の図２に示された伝統的マスストレージデバイス２４０の例示的な配置構成２００において、（ＰＣＩｅバス上の）デバイスはＮＶＭドライブであることができよう。ＮＶＭドライブは、ＰＣＩｅトポロジーに接続するＰＣＩｅスレイブ（ＰＣＩｅエンドポイントと呼ばれる）を有する。ＰＣＩｅトポロジーのルートにはＰＣＩｅマスタ（ＰＣＩｅルートコンプレックスと呼ばれる）がある。この配置構成はプロセッサそのものの一部であるか、又は図２に示されているようにＩ／Ｏチップセット２３４の内部でインスタンス化されている。図２２におけるＩ／ＯとのＰＣＩｅエンドポイントコネクタ２２３０は、この図２の伝統的配置構成と同様に配置されている。例示的に、図２２ではＮＶＤＩＭＭ２２２０とのコネクタとして示されている他のＮＶＤマスストレージデバイスアクセスポートが、それぞれ使用中の通信プロトコルのスレイブ又はマスタであることができる。例を挙げれば、ＰＣＩｅプロトコルを使用するために、ＮＶＤＩＭＭ２２２０とのコネクタはＰＣＩｅエンドポイント又はＰＣＩｅルートコンプレックスとして配置できる。ＮＶＤＩＭＭ２２２０とのコネクタがＰＣＩｅルートコンプレックスである本発明の実施態様において、ＮＶＤマスストレージデバイス２２００はＮＶＤマスストレージデバイスをＮＶＤＩＭＭ又はＮＶＤＩＭＭと接続するローカルＰＣＩｅトポロジーのルートとなる。同じことはＰＣＩｅが他のプロトコルで置き替えられた場合にも該当する。この図示の配置構成の利点は、ＮＶＤマスストレージがプライベート接続１５５０上でマスタとして作用する際に、メモリインターフェース１５２２の場所にかかわりなく又はその場所で、多数のＮＶＤＩＭＭが自然にＰＣＩｅトポロジー又は他のプロトコルに効率的に供給され得ることである。例示的なマスストレージ配置構成２２００は、データをＮＶＤマスストレージデバイス２２００に出し入れするために使用できるＮＶＤＭＳ−ＤＭＡ２２５０も図示している。
【０１０５】
Ｖ．ＮＶＤマスストレージデバイス−インターリーブ
【０１０６】
ＤＲＡＭチップは典型的に多数のバンクで構成される。ＤＤＲアクセスを複数のＤＲＡＭバンクにわたって非常に効率的にするために、「インターリーブ」と呼ばれる方法が採用される。この方法はメモリバス上で接続された様々なＤＩＭＭ／ＮＶＤＩＭＭに隣接アクセスを広げる。この方法では連続的ＤＤＲアクセスは同じＮＶＤＩＭＭ内にはないが、代わりにＮＶＤＩＭＭにわたって散在している。プロセッサがデータを伝統的マスストレージデバイスからインターリーブされるＮＶＤＩＭＭのグループに移動するとき、各ＮＶＤＩＭＭはオリジナルデータの一部のみ有する。このＮＶＤＩＭＭのグループ内のデータがＮＶＤ書込みフローを通して下流のＮＶＤマスストレージデバイスに押し出されると（図１６に示す矢印１６６２参照）、各ＮＶＤＩＭＭはオリジナルデータの一部に過ぎないデータ流を提供する。それゆえＮＶＤマスストレージデバイスがインターリーブされる幾つかのＮＶＤＩＭＭに接続される場合、ＮＶＤマスストレージに到達するデータはオリジナルデータが再配置されたバージョンである。この再配置されたデータがＩ／Ｏ相互接続を通してプロセッサによって読み出された場合は、読み出されたデータはインターリーブされた編成では認識し得ないであろう。同様に、ＮＶＤＩＭＭ内の永続的なデータはＮＶＤＩＭＭと一緒に移動するので、ＮＶＤＩＭＭは同じ相対的位置に挿入されなければならない。ＮＶＤＩＭＭを再配置すると、インターリーブされたセットアップではデータが認識できなくなることがある。類似の特性は、データがＮＶＤマスストレージデバイスからインターリーブされたＮＶＤＩＭＭのグループに移動されるときに、ＮＶＤ読出しフローで発生する（図１５の矢印１５６２参照）。
【０１０７】
従って図２３のマスストレージデバイス配置構成２３００に示されたデータ処理システムと方法は、上述した難点を軽減するためにＮＶＤＩＭＭ配置構成ＮＶＤインターリーブ／デインターリーブブロック２３６０を採用して、インターリーブされたすべてのＮＶＤＩＭＭから来るデータを処理して、ＮＶＤマスストレージデバイス２３００に書き込む前にインターリーブを補償する。これによりＮＶＤマスストレージデバイス内のデータはオリジナルデータと同じ構造のままであり、それゆえＩ／Ｏ相互接続またはメモリバスを通して読み出されたときにプロセッサによって認識可能であることが保証される。同様に、外部ソースがＮＶＤマスストレージ装置内のコンテンツを読み出すときに、データインテグリティが維持される。この実施態様では、Ｉ／Ｏ２３３０とのコネクタ、ＮＶＤＩＭＭ２３２０とのコネクタ、ローカル相互接続（例えばＰＣＩｅ）２３１０、ＮＶＤマスストレージコントローラ２３４０及びＮＶＤＭＳ−ＤＭＡ２３５０はすべてそれ以外の点では、マスストレージデバイス２２００内の対応する素子と類似又は同一に機能する。
【０１０８】
図２４Ａに示すマスストレージ配置構成２４００の代替的な実施態様において、ＮＶＤマスストレージデバイス２４００に別個のデータ流として入るデータは、いかなる処理もされずにそのまま保存される。インターリーブ／デインターリーブ論理／モジュールは、Ｉ／Ｏインターリーブ／デインターリーブ２４６０と呼ばれるＩ／Ｏ相互接続パス上に置かれている。この配置構成では、ＮＶＤマスストレージデバイス２４００に保存されるデータは、ＮＶＤＩＭＭに保存されるインターリーブされたデータと類似している。しかしながらデータは、Ｉ／Ｏ相互接続に渡される前に処理される。同様に、Ｉ／Ｏ相互接続から来るデータは、メディアに書き込まれる前にＩ／Ｏインターリーブ／デインターリーブモジュール２４３６を通過する。この実施態様では、Ｉ／Ｏ２４３０とのコネクタ、コネクタ−ＮＶＤＩＭＭ２４２０とのコネクタ−、ローカル相互接続（例えばＰＣＩｅ）２４１０、ＮＶＤマスストレージコントローラ２４３２及びＮＶＤＭＳ−ＤＭＡ２４３４はすべてそれ以外の点では、上述したマスストレージデバイス２２００及び２３００内の対応する素子と類似又は同一に機能する。
【０１０９】
図２４Ｂは代替的な実施態様による配置構成２４４０を示しており、ここではインターリーブ及びデインターリーブプロセス／プロセッサ２４４２は相互接続２４４４とＮＶＤマスストレージコントローラ２４４６との間に配置されている。
【０１１０】
図２４Ｃは、図２４Ｂにおける例示的な配置構成２４４０の片半分２４５０（即ちメモリチャネル１及び２）を詳細に図示して、配置構成がホストプロセッサ２４５２から出るインターリーブされたデータをいかに処理するかを解説している。この例はホスト書込み操作（矢印２４６２及び２４６４）をインターリーブされたモードで図示しており、プロセッサはデータパケット（例えばパケット０−パケット７）２４５４をＤＩＭＭ又はＮＶＤＩＭＭ（ＮＶＤＩＭＭ−Ａ、ＮＶＤＩＭＭ−Ｂ、ＮＶＤＩＭＭ−Ｃ及びＮＶＤＩＭＭ−Ｄ）２４５６にわたって散在させる。この新規の実装及び技術において、配置構成２４５０は一般的にＮＶＤ書込みフロー（矢印２４６２及び２４６４による）の方式で作動し、ＮＶＤＩＭＭからＮＶＤマスストレージデバイス２４５８に移動する分散したデータパケット（０−７）は、再びＮＶＤマスストレージデバイス２４５８に統合されて、ホストプロセッサ２４５２内で設けられたオリジナルの順序（即ちパケット２４６６）を回復できる。
【０１１１】
図２４Ｄは、図２４の配置構成２４５０と類似又は同一の配置構成２４７０を示しており、ＮＶＤ読出しフロー（矢印２４７２及び２４７４）が明示されている。図示されている新規の方策において、マスストレージ２４５８からのデータパケット２４７６（例えばパケット０−７）は、ホストプロセッサ２４５２がパケットをインターリーブされたモードで読み出すようにＮＶＤＩＭＭ２４５６に適当に散在しており、再構成プロセス／プロセッサ２４７２を用いてオリジナルの順序を適当に再構成することができる。
【０１１２】
典型的なＮＶＤＩＭＭがデータコンテンツをＮＶＤＩＭＭと一緒に移動して、ＮＶＤＩＭＭ（ＮＶＤＩＭＭ−Ｄ、ＮＶＤＩＭＭ−Ｃ、ＮＶＤＩＭＭ−Ａ及びＮＶＤＩＭＭ−Ｂ）２４５６を以下に示すように再配置することは、伝統的にシステムクラッシュを招くことがある。しかしながら本明細書に記載する新規の配置構成及び技術は各ＮＶＤＩＭＭの位置を認識でき、データをＮＶＤＩＭＭの識別性よりもむしろＮＶＤＩＭＭの位置に基づいて適当に移動する。従って例を挙げれば、たとえシステムメモリ基板の第１のメモリスロット（これは通常（例えば）ＮＶＤＩＭＭ−Ａによって塞がっている）にＮＶＤＩＭＭ−Ｄが挿入されても、配置構成帰納的にロバストに保たれる。換言すれば、ＮＶＤＩＭＭ又は他のメモリ構造は、マスストレージとプロセッサの間を移動するデータパケットの全体的な編成に影響することなく（影響なしに）スロットにわたり交換可能である。
【０１１３】
ＶＩＩ．ＮＶＤマスストレージデバイス−エネルギー装置
【０１１４】
ＮＶＤ−Ｌ１キャッシュが揮発性メモリからなる場合、ＮＶＤＩＭＭはデータをキャッシュ階層における下流の不揮発性メモリにバックアップする必要がある。この理由から、揮発性メモリをＮＶＤ−Ｌ１キャッシュとして持つＮＶＤＩＭＭは、典型的にバックアップ操作用にモジュール及び関連コンポーネントに電力を供給するためにエネルギー源を必要とする。同様に、ＮＶＤ−Ｌ２及びマスストレージさえも予期しないイベント中のデータの喪失を避けるために限られた電力供給を必要とする。例示的な実施態様において、図２５に示されているようにエネルギー源／電源２５７０は、ＮＶＤＩＭＭＰＣＢそれ自体か又はＮＶＤマスストレージデバイス２５００上に置くことができる。別の例示的な実施態様において、図２６に示されているように、エネルギー源／電源はＮＶＤマスストレージデバイス２６００から離して配置できる。システムプラットフォーム全体で電力が喪失された場合に、このエネルギー源はプラットフォームのエネルギー源の状態にかかわりなく永続的なバックアップを提供できる。そのようなエネルギー源は、マスストレージアレー内部でストレージ操作を完了するのに充分であるべきである。既存の実装においてＮＶＤＩＭＭは、ＮＶＤＩＭＭにわたって分散しているか又は１つの場所に統合された別個の電力供給を有する。同様に、ソリッドステートドライブ（ＳＳＤ）は、停電が発生したときに進行中のトランザクションを完了するためにそれ自身の供給源を備えていることがしばしばある。これらの実施態様で記述された新規の配置構成及び技術において、全マルチレベルメモリ、ストレージ階層、及びすべてのＮＶＤストレージ層及びＮＶＤマスストレージを含む関連アセンブリは、残余のシステムから離して設けられた単一の電力ドメインに分配できる。
【０１１５】
上述したメモリバス上のストレージのマルチレベルデータキャッシュの実施態様が、すべての利用可能なストレージの使用を最適化するために堅牢で効率的なシステムと方法を、プロセッサ配置構成と関連して提供するものであることは明らかであろう。このシステムと方法は伝統的方法によるデータアクセスを許す一方で、ＤＲＡＭアクセスメモリバスを採用して、ＤＲＡＭベースのメモリ、及び先端メモリタイプ、例えばストレージクラスメモリを含む他の形態の不揮発性ストレージの両方に直接的にアクセスできるようにもする。このシステムと方法は、効率を高めるためにメモリとストレージ構造のインターリーブも可能にする。
【０１１６】
以上、本発明の例示的な実施形態を詳細に説明した。本発明の精神と範囲を逸脱することなく種々の改変及び追加を行うことができる。上述した種々の実施形態の各々の特徴は、関連する新しい実施形態において多数の特徴の組合わせを提供するのに適する限り、別の記載された実施形態の特徴と組み合わされてよい。更に、上に本発明の装置と方法の多数の別個の実施形態を記したが、ここに記載されたものは本発明の原理の応用を例示したものに過ぎない。加えて、与えられた測定、値又は特徴に関して「実質的に」又は「近似的に」という言葉が用いられている場合、それは所期の結果を達成するための通常の操作範囲内にある量を指しているが、システムに許容された誤差の範囲内の固有の不正確さや誤りに起因するある程度のばらつきを含む（例えば１〜２パーセント）。本明細書中で使用される「プロセス」及び／又は「プロセッサ」という言葉は広く電子ハードウェア及び／又はソフトウェアをベースとする多様な機能及びコンポーネントント（或いは機能的「モジュール」又は「エレメント」と呼ぶことがある）を含むものと解釈されるべきであることにも留意されたい。更に、図示されたプロセス又はプロセッサは他のプロセス及び／又はプロセッサと組合わせ、又は種々のサブプロセス又はサブプロセッサに分割されてよい。そのようなサブプロセス及び／又はサブプロセッサは、本明細書に記載された実施形態によって多様に組み合わせることができる。同様に、本明細書中の何らかの機能、プロセス及び／又はプロセッサは、プログラム命令の非一時的コンピュータ可読媒体からなる電子ハードウェア、ソフトウェア、或いはハードウェアとソフトウェアの組合わせ（例えばファームウェア）を用いて実施できることが明確に想定されている。より一般的に、本明細書で想定されているコンピューティングシステムは、（例えば）図１−図４に記載された慣用的システムの１以上の特徴を含むことができ、新規のメモリ・ストレージコンバイン及び図示の実施態様によって記載された他の特徴と相互運用するように適合されている。更に本明細書で使用されるＮＶＤＩＭＭという言葉は、当業者にとって明白な多様なメモリ構造及び／又はメモリコンポーネントの組合せを包含するものと広く解されるべきであり、ＤＲＡＭ又は他の同様の配置構成に限定されるべきではない。従ってこの説明は例示の方法によるものとしてのみ受け取られるべきであり、それ以外に本発明の範囲を限定することを意味するものではない。
【０１１７】
以下に特許請求の範囲を記載する。
【図１】
2019518286.tif 000003
【図２】
2019518286.tif 000004
【図３】
2019518286.tif 000005
【図４】
2019518286.tif 000006
【図５】
2019518286.tif 000007
【図６】
2019518286.tif 000008
【図７】
2019518286.tif 000009
【図８Ａ】
2019518286.tif 000010
【図８Ｂ】
2019518286.tif 000011
【図８Ｃ】
2019518286.tif 000012
【図９Ａ】
2019518286.tif 000013
【図９Ｂ】
2019518286.tif 000014
【図９Ｃ】
2019518286.tif 000015
【図１０】
2019518286.tif 000016
【図１１】
2019518286.tif 000017
【図１２Ａ】
2019518286.tif 000018
【図１２Ｂ】
2019518286.tif 000019
【図１３】
2019518286.tif 000020
【図１４】
2019518286.tif 000021
【図１５】
2019518286.tif 000022
【図１６】
2019518286.tif 000023
【図１７】
2019518286.tif 000024
【図１８Ａ】
2019518286.tif 000025
【図１８Ｂ】
2019518286.tif 000026
【図１９Ａ】
2019518286.tif 000027
【図１９Ｂ】
2019518286.tif 000028
【図１９Ｃ】
2019518286.tif 000029
【図２０Ａ】
2019518286.tif 000030
【図２０Ｂ】
2019518286.tif 000031
【図２１】
2019518286.tif 000032
【図２２】
2019518286.tif 000033
【図２３】
2019518286.tif 000034
【図２４Ａ】
2019518286.tif 000035
【図２４Ｂ】
2019518286.tif 000036
【図２４Ｃ】
2019518286.tif 000037
【図２４Ｄ】
2019518286.tif 000038
【図２５】
2019518286.tif 000039
【図２６】
2019518286.tif 000040
【国際調査報告】
2019518286.tif 000041
2019518286.tif 000042