(57)【要約】システムと方法は、抽象化メモリモジュールでのメモリアドレス要求の仮想物理マッピングを可能とする抽象化メモリプロトコルを用いるメモリシステムを規定する。メモリ抽象化ユニットは、一つ以上のクライアントからのメモリのタイミングおよびネーミングを、一つ以上のメモリデバイスにおけるタイミングおよびネーミングに抽象化する。メモリ抽象化ユニットは、クライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理を含む。メモリ抽象化ユニットは、また、要求するクライアントによるメモリアクセス要求によって規定されるネーミングを、少なくとも一つのメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、仮想物理アドレスにおけるメモリデバイスにアクセスするためのメモリ制御論理とを含む。【選択図】図７
2017515238.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含む、メモリ抽象化ユニットを含み、
前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられる、
装置。
【請求項２】
前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有するときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有していないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項１の装置。
【請求項３】
前記ゾーン許可論理は、前記メモリアクセス要求が読み出しアクセスか、書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスする許可を与えるようにさらに構成される、
請求項２の装置。
【請求項４】
前記メモリアクセス要求内で提供されたアドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項１の装置。
【請求項５】
前記マッピング論理は、
前記一つ以上のクライアントのうちの割り当てを要求するクライアントから割り当て要求を承認することと、
前記一つ以上のメモリデバイスのうちのメモリデバイス内で使用可能な保護ゾーンを判定することと、
前記割り当てを要求するクライアントに、前記使用可能な保護ゾーンを割り当てることと、
前記割り当てを要求するクライアントに、前記割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
請求項１の装置。
【請求項６】
前記マッピング論理は、
前記割り当てを要求するクライアントからの割り当て解除要求を承認することと、
前記割り当てられた保護ゾーンを前記マッピング論理から除去することと、
のためにさらに構成される、
請求項５の装置。
【請求項７】
前記割り当てを要求するクライアントからの前記割り当て要求を承認することは、要求されたサイズを承認することを含み、前記使用可能な保護ゾーンを割り当てることは、前記要求されたサイズで前記使用可能な保護ゾーンを割り当てることを含む、
請求項５の装置。
【請求項８】
前記抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用して、メモリアクセスを解釈するために構成される、
請求項１の装置。
【請求項９】
前記保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、
請求項８の装置。
【請求項１０】
前記マッピング論理は、前記要求するクライアントからの前記ネーミングを、アクセスされるべき前記一つ以上のメモリデバイスのうちのメモリデバイスに対する前記ネーミングに変換するためのアドレス変換テーブルを含む、
請求項１の装置。
【請求項１１】
前記マッピング論理は、メモリ内に割り当てられた各保護ゾーンの位置とサイズとを規定するためのベースレジスタと、バウンダリレジスタとを含む、
請求項１の装置。
【請求項１２】
前記メモリアクセス要求は、前記要求するクライアントに対するクライアントＩＤを含み、前記クライアントＩＤが前記選択された保護ゾーンに対する許可を有していない場合に、前記メモリ制御論理は、前記仮想物理アドレスにアクセスしない、
請求項１の装置。
【請求項１３】
前記メモリアクセス要求によって規定される前記アドレスは、ゾーンＩＤと、前記選択された保護ゾーン内のアドレスとを含み、前記マッピング論理は、前記ゾーンＩＤに応じて、前記仮想物理アドレスの少なくとも一部を作成する、
請求項１の装置。
【請求項１４】
前記一つ以上のメモリデバイスと、
前記メモリ抽象化ユニットを含む論理ベースと、
をさらに含む、
請求項１から１３のうちのいずれか一項による装置。
【請求項１５】
前記一つ以上のメモリデバイスと、
前記論理ベースと、
を含む、抽象化メモリモジュールであって、
前記論理ベースの前記抽象化メモリプロトコル論理は、
前記抽象化メモリモジュールに関連する前記一つ以上のメモリデバイスが宛先とされる前記メモリ要求を処理することと、
前記抽象化メモリモジュールが宛先とされていない前記メモリ要求を、前記別の抽象化メモリモジュールに渡すことと、
のためにさらに構成される、
抽象化メモリモジュールをさらに含む、
請求項１４の装置。
【請求項１６】
前記一つ以上のメモリデバイスは、物理メモリアドレススペースを規定し、
前記論理ベースの前記メモリ抽象化ユニットは、一つ以上の仮想メモリアドレススペースを規定し、各仮想メモリアドレススペースは、連続的仮想アドレススペースと断片化された仮想アドレススペースのうちの一つを形成するための、複数の仮想保護ゾーンを含む、
請求項１４の装置。
【請求項１７】
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールで前記メモリアクセス要求を承認することと、
前記抽象化メモリモジュールに関連する一つ以上のメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに、前記メモリアクセス要求によって規定されるネーミングを変換することと、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスすることと、
を含む、
メモリにアクセスする方法。
【請求項１８】
前記メモリ要求を作成した要求するクライアントが、前記選択された保護ゾーンにアクセスするための許可を有するときに、前記メモリアクセス要求を完了することを可能にすることと、前記要求するクライアントが前記選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、
請求項１７の方法。
【請求項１９】
前記メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、
請求項１７の方法。
【請求項２０】
前記メモリアクセス要求内で提供された前記アドレスが前記選択された保護ゾーン内にあるときに、メモリアクセス要求を完了することを可能にすることと、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときに、エラーを報告することと、をさらに含む、
請求項１７の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権主張］
本出願は、２０１４年５月９日に出願された米国仮特許出願整理番号１４／２７４，１９５の“Ｖｉｒｔｕａｌｉｚｅｄ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓｅｓ  ｆｏｒ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍｓ”の出願日の利益を享受する権利を主張する。
【０００２】
本開示は、概して、仮想メモリマッピングに関する。より詳細には、本開示は、メモリ抽象化プロトコルを用いて再構成可能なメモリシステムにおける仮想メモリマッピングに関する。
【背景技術】
【０００３】
メモリデバイスは、典型的には、コンピュータまたは他の電子デバイスにおける半導体集積回路および／または外部リムーバブルデバイスとして、多くのデータ処理システム内で提供される。とりわけ、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期式ＤＲＡＭ（ＳＤＲＡＭ）、フラッシュメモリおよび抵抗可変メモリを含む多くの様々な種類のメモリが存在する。
【０００４】
従来のメモリシステムは、デュアル・インライン・メモリモジュール（ＤＩＭＭ）と呼ばれる、プリント回路基板（ＰＣＢ）上にマウントされたＤＲＡＭなどの一つ以上のメモリデバイスで典型的に構成される。メモリシステムは、メモリ制御サブシステムまたは中央処理装置（ＣＰＵ）またはマイクロプロセッサと通信する。幾つかの構成においては、メモリコントローラは、プロセッサと同一の物理チップに物理的に組み込まれる。他の構成においては、メモリコントローラは、メモリコントローラハブ（ＭＣＨ）を含む多くの論理コンポーネントのうちの唯一つにすぎないことがある。メモリコントローラハブは、しばしば様々な種類の半導体メモリを用いて、または様々な目的で、完全に分離された、個別のメモリアドレススペースを典型的にサポートする。例えば、メモリコントローラは、グラフィックアプリケーション用のビデオＤＲＡＭ、ディスクドライブ加速用のフラッシュメモリ、プロセッサのメイン外部メモリとしてのＤＲＡＭ製品の利用をサポートすることが出来る。
【０００５】
多くのコンピュータシステムは、特定のプロセッサ、特定のプロセスおよびその組み合わせに割り当てられた仮想メモリを作成するように構成される。マシン仮想化（例えば、“ハイパーバイザ”）を提供するための現在のソフトウェアベースの機構は、様々なオペレーティングシステムの中でも、マシンリソースを分割するための比較的セキュリティの低い機構を提供する。幾つかのハイパーバイザは、ＩＢＭメインフレーム内で最も特に顕著であるが、これらの機構の幾つかに対するハードウェアエンフォースメントをもたらす。ｘ８６アーキテクチャでさえも、命令のプリビレッジを記述するためにＣＰＵリングを含む。ＶＭＷＡＲＥのような幾つかのソフトウェアハイパーバイザは、これらのリングに構築することが出来る。幾つかのマシンは、単一の大規模対称型マルチプロセッサ（ＳＭＰ）または大規模分散システム内にハードウェア“ドメイン”を提供することが出来、同一のハードウェアプラットフォーム上でオペレーティングシステムの複数のインスタンスを実行することが出来、ドメイン間の干渉からのハードウェア保護を提供することが出来る。これらの種類のシステムは、しかしながら、ボードレベルにおけるリソースのドメインレベルの割り当てのみを可能とされる。ハードウェアレベルにおける再構成は、典型的にはコースグレーン（ｃｏａｒｓｅ−ｇｒａｉｎ）（例えば、プロセッサとメモリリソースの双方を、一緒に割り当てることを必要とする）である。ソフトウェアレベルにおける再構成は、典型的にはファイングレーン（ｆｉｎｅ−ｇｒａｉｎ）であるが、強制力は小さい。
【０００６】
現在、データセンター内の“分離（ｄｉｓａｇｇｒｅｇａｔｉｏｎ）”に向かう業界の傾向が存在し、プロセッサ、メモリおよびストレージリソースは、物理ユニット（典型的には“スレッド”と呼ばれる）内に割り当てられ、データセンタースケールのネットワークを介して相互接続される。これらのリソースは、リソース、レイテンシーおよび典型的なネットワークプロトコル、しばしばＴＣＰ／ＩＰを介したスループットの点で、アクセスのコストが高い。メモリリソースがプロセッサリソースと共に割り当てられる必要がないという点で（分離前に、別のＣＰＵおよびオペレーティングシステム（ＯＳ）インスタンスの追加を必要とする新規メモリコントローラまたはディスクコントローラを追加する場合）これらの種類の分離型システムは、リソースの幾らかのバランスの改善を可能とし、それによって依然高いオーバーヘッドを被る。ネットワーク処理のみで、相当のファームウェアと内蔵制御を必要とし、複雑なプロトコルは、レイテンシーオーバーヘッドおよび帯域幅制限などを課す。典型的には、これらの構成においては、４次以上の大きさの性能が失われることがある。さらに、これらの分離型システムは、コースグレーンコンピュータ構成を表す。
【図面の簡単な説明】
【０００７】
【図１】抽象化メモリプロトコルを用いるシステムの一例として、ハイブリッドメモリキューブを含むデータ処理システムの図である。
【図２】ハイブリッドメモリキューブ内のＤＲＡＭの可能な分画を図示する。
【図３】ハイブリッドメモリキューブ内のＤＲＡＭの分画の一例の論理図を図示する。
【図４】リンクインターフェイスおよびハイブリッドメモリキューブ内のＤＲＡＭの制御用の論理ベースを図示する。
【図５】ハイブリッドメモリキューブの連鎖を図示する。
【図６】本開示の実施形態により、抽象化メモリプロトコルを用いるシステムと、抽象化メモリにおける仮想メモリ割り当てとを図示する。
【図７】本開示の実施形態による、メモリ抽象化モジュールのブロック図を図示する。
【図８】連続的に割り当てられた物理アドレススペースと、仮想アドレススペースとを示すメモリ図を図示する。
【図９】非連続的に割り当てられ得る物理アドレススペースと、仮想アドレススペースとを示すメモリ図を図示する。
【図１０】抽象化メモリプロトコルを用いた仮想アドレススペースにアクセスするプロセスを図示する。
【発明を実施するための形態】
【０００８】
以下の詳細な説明において、本明細書の一部を形成する添付の図面が参照され、図面内では、例示として、本開示が実施され得る特定の例示的実施形態が示される。これらの実施形態は、本開示を当業者が実施することが可能なほど十分詳細に記述される。しかしながら、他の実施形態も使用することが出来、構造、材料およびプロセスの変更は、本開示の範囲から逸脱することなく行われることが出来る。本明細書に提示された図示は、任意の特定の方法、システム、デバイスまたは構造の実際の外観を意味するものではなく、本開示の実施形態を記述するために使用される単なる理想化された表現に過ぎない。本明細書に提示された図面は、必ずしも同一の縮尺で描かれるとは限らない。様々な図面における類似の構造またはコンポーネントは、読者の簡便のために、同一または類似の番号を維持することがある。しかしながら、番号の類似性は、構造またはコンポーネントが、サイズ、組成、構成または任意の他の特性において必ずしも同一であることを意味するものではない。
【０００９】
素子、回路、モジュールおよび機能は、不必要に詳細にして、本開示を不明瞭にしないように、ブロック図の形式で図示されることがある。さらに、図示され、記述される特定の実装は、単に例示的なものにすぎず、本明細書でそうではないと特定されない限りは、本開示を実現するための唯一の方法として解釈されるべきではない。さらに、様々なブロック間の論理のブロック画定および分画は、特定の実装の例示に過ぎない。本開示は、多くの他の分画方法によって実現できることを当業者は容易に理解するだろう。このような詳細が本開示の完全な理解を得るために必要ではなく、業界における当業者の能力の範囲内である場合に、大部分において、タイミングの考察などに関する詳細などは、省略されることがある。
【００１０】
本明細書で開示された実施形態に関連して記述される様々な例示的論理ブロック、モジュール、回路およびアルゴリズムアクトが、電子ハードウェア、コンピュータソフトウェア、または双方の組み合わせとして実装されてもよいことを当業者は理解するだろう。このハードウェアとソフトウェアとの互換性を明瞭に図示するために、様々な例示的コンポーネント、ブロック、モジュール、回路およびアクトは、これらの機能性の観点から一般的に記述される。このような機能がハードウェアまたはソフトウェアとして実装されるか否かは、システム全体に課された特定のアプリケーションおよび設計の制約に依存する。当業者は、各特定のアプリケーションのための様々な方法で、記述された機能を実装することが出来るが、このような実装の決定は、本明細書に記述された実施形態の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００１１】
ハードウェアで実装されるとき、本明細書に開示された実施形態は、汎用プロセッサ、専用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、プロセッサインメモリ（ＰＩＭ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタ論理素子、ディスクリートハードウェアコンポーネント、または本明細書に記述された機能を実施するように設計されたその任意の組み合わせで、実装または実施されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、代替的には、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。本明細書に記述された実施形態のためにプロセスを実行するためのソフトウェアを実行するとき、汎用プロセッサは、このようなプロセスを実行するために構成された専用プロセッサと考えられるべきである。プロセッサは、また、コンピューティングデバイスの組み合わせ、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと組み合わせられた一つ以上のマイクロプロセッサ、または任意の他のこのような構成として実装されてもよい。
【００１２】
さらに、実施形態は、フローチャート、フロー図、構造図またはブロック図として図示されたプロセスに関して記述されることがあることに留意されたい。フローチャートは、順次的なプロセスとして動作挙動を記述することがあるが、これらの挙動のうちの多くは、別のシーケンスで、パラレルに、または実質的に同時に実施することが出来る。さらに、挙動の順序は再配列されてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応してもよい。さらに、本明細書に開示された方法は、ハードウェア、ソフトウェア、またはその双方で実装されてもよい。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上の一つ以上の命令またはコードとして格納され、または伝送されることが出来る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含むコンピュータ記憶媒体と通信媒体との双方を含む。
【００１３】
情報および信号は、様々な異なる技術および技法のうちの任意のものを用いて表されてもよいことを当業者は理解するだろう。例えば、本記述を通じて参照されることがあるデータ、命令、コマンド、情報、信号、ビット、シンボルおよびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光学場もしくは光子、またはその任意の組み合わせによって表されてもよい。幾つかの図面は、提示と記述を明瞭にするために、単一の信号として複数の信号を図示することがある。信号は、信号を伝送するためのバスを表すことがあり、バスは、様々なビット幅を有することが出来ることを当業者は理解するだろう。
【００１４】
“第一（ｆｉｒｓｔ）”“第二（ｓｅｃｏｎｄ）”などの指定を用いる本明細書の要素に対するあらゆる参照は、その限定が明示的にされていない限りは、これらの要素の量または順序を限定するわけではないことを理解するべきである。むしろ、これらの指定は、二つ以上の要素または要素の例の間で区別する簡便な方法として、本明細書で用いられることがある。したがって、第一および第二の要素に対する参照は、そこで二つの要素だけが使用され得ること、第一用要素が何らかの形で第二の要素に対して先行しなければならないことを意味するものではない。さらに、そうでないと言及されない限りは、要素の組は、一つ以上の要素を含んでもよい。
【００１５】
本明細書に記述される要素は、同一要素の複数の例を含んでもよい。これらの要素は、数字表示（例えば、１１０）によって包括的に示されてもよいし、アルファベット表示（例えば、１１０Ａ）が後に続く数字表示、または、“ダッシュ”によって先行される数字表示（例えば、１１０−１）によって具体的に示されてもよい。以下の記述を容易にするために、大部分で、要素の番号表示は、その要素が紹介されるか、ほぼ全て議論される図面番号で開始する。したがって、例えば、図１における要素の表示は、ほぼ、数字のフォーマット１ＸＸであるだろうし、図４における要素は、ほぼ、数字のフォーマット４ＸＸであるだろう。
【００１６】
本明細書で用いられるように、所定のパラメータ、特性または条件に対する“実質的に（ｓｕｂｓｔａｎｔｉａｌｌｙ）”という語は、許容可能な製造公差内など、小程度の相違で所定のパラメータ、特性または条件が満たされることを当業者が理解するだろう程度を、意味し、含む。例示として、実質的に満たされる特定のパラメータ、特性または条件によって、そのパラメータ、特性または条件は、少なくとも９０％満たされるか、少なくとも９５％満たされるか、または少なくとも９９％も満たされることもある。
【００１７】
本明細書で用いられるように、“の上（ｏｖｅｒ）”“の下（ｕｎｄｅｒ）”“の上（ｏｎ）”“の下（ｕｎｄｅｒｌｙｉｎｇ）”“より上（ｕｐｐｅｒ）”“より下（ｌｏｗｅｒ）”等の任意の相対的な語は、本開示と添付の図面を理解するうえでの明瞭性および簡便性のために用いられるものであり、文脈がそうでないと明確に示さない限りは、任意の特定の優先度、方向もしくは順序を含意し、または依存するものではない。
【００１８】
ある要素が、別の要素“の上（ｏｎ）”“に接続される（ｃｏｎｎｅｃｔｅｄ  ｔｏ）”“に結合される（ｃｏｕｐｌｅｄ  ｔｏ）”“と結合される（ｃｏｕｐｌｅｄ  ｗｉｔｈ）”と言及されるときには、その要素は、別の要素の直接上にあるか、接続されるか、もしくは結合されることが出来、または、中間要素が存在してもよいことが理解されるだろう。対照的に、ある要素が、別の要素“の直接上（ｄｉｒｅｃｔｌｙ  ｏｎ）”“に直接接続される（ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ  ｔｏ）”“に直接結合される（ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ  ｔｏ）”と言及されるときには、中間要素または中間層は存在しない。本明細書で用いられるように、“および／または（ａｎｄ／ｏｒ）”という語は、関連付けられて記載された多数の項目のあらゆる組み合わせと全ての組み合わせを含む。
【００１９】
本開示は、抽象化メモリプロトコルを用いて再構成可能なメモリスステム内で仮想化された物理アドレスを提供することによって、メモリサブシステムを改良するための方法および装置を記述する。
【００２０】
本明細書で用いられるように、“抽象化メモリプロトコル”“抽象化メモリ”および“メモリの抽象化”という語は、クライアント側の要求と、物理メモリデバイスに対する実際のアクセスとの間でのタイミングおよびネーミングのデカップリングを意味する。メモリを読み出すためのタイミング抽象化の限定しない例としては、クライアントは、特定のアドレスに対して、パケット化されたメモリ要求を発行することが出来る。確定できないがその幾らか後で、メモリシステムは、パケット化されたメモリ応答で要求されたデータを供給する。メモリがＤＲＡＭである場合、ＤＲＡＭにおけるタイミングは、所望のデータを得るための、特定の行アドレスストローブ、列アドレスストローブ、読み出し応答時間を含むだろう。したがって、ＤＲＡＭのタイミングは、クライアントの要求のタイミングから抽象化される。
【００２１】
本明細書で用いられるように、“ネーミング（ｎａｍｉｎｇ）”という語は、メモリの一つ以上の特定の位置のアドレスを指定するためのプロセスまたはデータ構造を意味する。したがって、クライアントによって作成されるネーミングは、プロセッサによって閲覧されるように、特定のメモリ位置を組み合わせる複数のデータ構造を含んでもよい。限定しない例として、クライアントは、特定のデバイスと、そのデバイス内のアドレスとを選択するために、デバイスＩＤ番号で特定の位置をアドレス指定することが出来る。別の限定しない例として、クライアントは、ゾーンＩＤとそのゾーン内のアドレスを有する特定の位置をアドレス指定することが出来る。ゾーンＩＤおよびデバイスＩＤに関するさらなる詳細は、以下に議論される。物理メモリデバイスにおけるネーミングは、そのメモリデバイス上のデータの一つ以上の特定の位置を指示する。限定しない一例として、ＤＲＡＭデバイス上のネーミングは、特定の位置のアドレスを指定するために組み合わせる行アドレスと列アドレスとを含んでもよい。したがって、限定しない具体的な一例として、ネーミング抽象化は、クライアントによって提供されるデバイスＩＤおよびアドレスと、特定のメモリデバイスにおける行アドレスおよび列アドレスとの間の変換（即ち、デカップリング）を含んでもよい。
【００２２】
ネーミングおよびタイミングの抽象化によって、本開示の実施形態は、ＤＲＡＭ以外の様々なメモリおよび記憶デバイスと使用されてもよい。限定しない例として、ＲＡＭデバイス、フラッシュメモリおよび記憶デバイス（例えば、ディスクドライブ）もまた使用されてもよい。
【００２３】
本開示の実施形態は、抽象化メモリデバイス内で、“保護ゾーン（ｐｒｏｔｅｃｔｉｏｎ  ｚｏｎｅ）”を画定し、保護ゾーンをサポートするために抽象化メモリプロトコルを拡張する。したがって、抽象化メモリデバイス内に保護ゾーンを有するメモリシステムは、抽象化プロトコルを介して、所定のメモリモジュール（例えば、ハイブリッドメモリキューブ、プロセッサインメモリ（ＰＩＭ）メモリなど）上で、物理メモリのセグメントをクライアント（例えば、ＣＰＵ）が割り当てるかまたは割り当てを解除することを可能とする。さらに、保護ゾーンは、メモリデバイス内の仮想物理アドレスを抽象化メモリデバイスが作成することを可能とする。換言すると、クライアントから提示されたアドレスは、保護ゾーンによって規定される抽象化メモリデバイス内の特定の物理アドレスに変換されてもよい。メモリモジュールにおいて規定されたこれらの保護ゾーンは、ソフトウェアレベルの仮想化ではなくむしろ、メモリスペースのハードウェアレベルの仮想化を提供する。さらに、アドレス変換は、メモリシステム中に分散されてもよい。なぜなら、アドレス変換は、クライアント内、またはメモリコントロールハブ内ではなく、メモリモジュールレベルで実施されるからである。
【００２４】
本開示によるメモリシステムは、任意の適切な抽象化メモリプロトコルを用いて構成されてもよい。詳述を提供するために、抽象化メモリプロトコルの一例が詳細に定義される。この詳細な記述は、保護ゾーンによって規定される仮想物理アドレスをサポートすることが出来る抽象化メモリプロトコルの限定しない一例として、ハイブリッドメモリキューブ（ＨＭＣ）プロトコルに焦点をあてる。そして、より一般的なシステムは、他の抽象化メモリプロトコルおよび仮想物理アドレスが、このような一般的システムで如何にして規定することが出来るかを示すために記述される。
【００２５】
図１は、クライアント１１０と通信するための抽象化メモリプロトコル１３０を用いるメモリバス上で動作するためのデバイスの一例として、ハイブリッドメモリキューブデバイス２００を含むデータ処理システム１００の図である。記述を容易にするために、この開示は、ＨＭＣプロトコルバスに焦点をあてる。しかしながら、本開示の利益を有する当業者が理解するように、本開示の実施形態は、データを保持するデバイスと、データバス上のプロトコルとの間の抽象化を含む他の高速データバスで実施することが出来る。
【００２６】
“クライアント”１１０という語は、ＤＲＡＭメモリなどのデータを格納するためのデバイスではなく、主にデータのコンシューマおよびジェネレータとして構成されるメモリバス上のデバイスを区別するために本明細書で用いられる。限定しない例として、クライアント１１０は、例えば、汎用プロセッサ、専用プロセッサ、グラフィックプロセッサ、プロセッサインメモリ、およびデジタル信号プロセッサなどのプロセッサ（本明細書では処理デバイスとも呼ばれる）と考えることが出来る。さらに、クライアント１１０は、例えば、特定のオペレーティングシステムなどのプロセッサ上で実行するプロセスと考えることが出来る。別の限定しない例として、クライアント１１０は、通信デバイスと考えることが出来る。例えば、通信型クライアント１１０は、メモリバスと、例えば、入力／出力（Ｉ／Ｏ）バスまたはネットワークバスなどの幾つかの他の種類の通信バスとの間でデータを伝送するように構成されてもよい。無論、クライアント１１０は、また、プロセッサ素子と通信素子との双方を含んでもよい。このように、本明細書の記述は、また、クライアント１１０をシステムオンチップ（ＳｏＣ）１１０と記述してもよい。そうでないと具体的に言及されない限りは、本明細書で呼ばれるＳｏＣ１１０は、クライアント１１０と等価であると考えられるべきである。最後に、クライアント１１０は、データを処理または移動することに焦点をあてられていると考えられてもよいが、レジスタ、バッファ、キャッシュ、およびクライアント１１０の他の種類のローカルメモリの形式で、相当量のメモリを含むこともできる。
【００２７】
ハイブリッドメモリキューブデバイス２００（ＨＭＣ２００）は、論理ベース４００を含み、論理ベース４００は、クライアント１１０とＨＭＣ２００との間のメモリリンク１２０を作成するために、抽象化メモリプロトコル１３０を定義する。パラレルバス４１０の集合は、論理ベース４００とＨＭＣ２００上のＤＲＡＭ２５０のグループとの間をインターフェイスで接続する。ＨＭＣ２００のさらなる詳細は、図２から図４に関連して以下に議論される。
【００２８】
メモリリンク１２０は、クライアント１１０に向かうアップストリームリンクと、クライアント１１０から離れるダウンストリームリンクとに区分化される。抽象化メモリプロトコル１３０の一部として、メモリリンク１２０は、以下に完全に説明されるようにパケット化される。結果として、メモリリンク１２０は、本明細書で、パケット化メモリリンク１２０とも、ハイブリッドメモリキューブリンク１２０ともよばれる。さらに、メモリリンク１２０上で伝送されるパケットは、パケット要求およびパケット化要求と呼ばれることがある。
【００２９】
図２は、ＨＭＣ２００内のＤＲＡＭ２５０の可能な分画を図示する。ＨＭＣ２００は、論理ベース４００に結合されたＤＲＡＭダイ２５０の３次元積層と考えることが出来る。論理ベース４００は、個別のダイとして構成されてもよく、ＤＲＡＭダイ２５０とインターフェイス接続するように構成されてもよい。積層されると、様々なダイの間の相互接続は、シリコンビアを通じて達成されてもよい。これらのデバイスは３次元積層として物理的に構成されてもよいが、そのように構成される必要はなく、相互接続の外観から依然３次元と考えることもできる。
【００３０】
図３は、ＨＭＣ２００内のＤＲＡＭ２５０の分画の一例の論理図を図示する。図２および図３を参照すると、複数のダイ層の相互接続は、メモリストレージ層と一つ以上の論理層との組み合わせをメモリデバイスが有することを可能とする。この方法では、デバイスは、ＨＭＣ２００として構成された単一のダイパッケージ内の、物理メモリストレージと論理メモリトランザクション処理を提供する。最終結果は、デバイス毎に３２０ＧＢ/秒までの使用可能な帯域幅容量を有する、非常に小型で、電力効率の良いパッケージである。
【００３１】
ＨＭＣ２００は、設計に対する階層的でパラレルなアプローチを介して、このような帯域幅を可能とする。例えば、デバイスの階層は、論理層に対して垂直方向に生じることが出来、ハードウェアの平行度は、所定のダイ層にわたって生じることがある。論理ベース４００は、内部ルーティングおよびトランザクション論理とともに、ＨＭＣ２００に対する外部リンクアクセスの双方を提供する複数のコンポーネントを含む。
【００３２】
ＨＭＣ２００は、“ボールト（ｖａｕｌｔ）”としばしば呼ばれる垂直方向のスライス２２０に断片化することが出来る。各ボールトは、そのボールトと関連するＤＲＡＭ２５０の断片を制御するために、論理ベース４００に組み込まれたボールト論理４５０を含んでもよい。ボールト論理４５０は、そのボールト内のメモリ区分に対する、メモリ参照動作を管理する。各ボールトコントローラ４５０は、それ自体のタイミング要求とリフレッシュ動作を決定することが出来、それによって、各ボールトに対して異なるタイミングを可能とし、また、ホストメモリコントローラ内のこれらの機能に対するニーズを排除する。さらに、そのボールトのメモリに対する参照をバッファするために、各ボールトコントローラ４５０には待ち行列（キュー）が含まれてもよい。ボールトコントローラ４５０は、到着順序ではなく、ニーズに基づいて、この待ち行列内の参照を実行することが出来る。したがって、外部メモリリンク１２０（図１）に対するボールト動作からの応答は、幾つかの場合には、順序が違うことがある。
【００３３】
メモリリンク１２０は、４つまたは８つの論理リンクを提供するように構成されてもよい。各メモリリンク１２０は、１６または８つのシリアルおよび双方向Ｉ／Ｏリンクのグループとして構成されてもよい。４つのリンクを有するように構成されたデバイスは、１０、１２．５および１５Ｇｂｐｓで動作する性能を有する。８つのリンクを有するように構成されたデバイスは、１０Ｇｂｐｓで動作する性能を有する。
【００３４】
物理メモリストレージの階層的特性を考えると、ＨＭＣデバイスの仕様は、従来のバンクＤＲＡＭデバイスとは異なる物理アドレシングとインターリーブモデルを定義する。ＨＭＣデバイス２００に対する物理アドレスは、ボールト、バンクおよびアドレスビットを含む３４ビットのフィールドにエンコードされる。現在の仕様は、フィールドのうちの下位の３２ビットを使用するための４つのリンクのデバイスと、フィールドのうちの下位３３ビットを使用するための８つのリンクのデバイスとを定義する。単一のアドレシング構造に依存するのではなく、仕様は、対象のメモリアクセス特性に対して最適化されたアドレスマッピングスキームを開発者およびユーザが規定することを可能にする。それは、また、所望の最大ブロック要求サイズに物理的ボールトおよびバンク構造を合わせる、一連のデフォルトアドレスマップモードを提供する。デフォルトのマップスキームは、ボールトアドレスに下位のアドレスビットをマッピングし、その直後に、バンクアドレスビットをマッピングすることによって、低いインターリーブモデルを実装する。この方法は、バンクコンフリクトを回避するために、一連のアドレスを、ボールトにわたってまずインターリーブさせ、その後、ボールト内のバンクにわたってインターリーブさせる。
【００３５】
ホストデバイスとＨＭＣデバイス２００との間の全ての帯域内通信は、パケット化フォーマットを介して実施される。このフォーマットは、３つの主要なパケット分類である、要求パケット、応答パケットおよびフロー制御パケットを含む。パケットは、単一の１６バイトのフローユニット（ＦＬＩＴとも呼ばれる）の倍数として構成されてもよい。パケットサイズは、９ＦＬＩＴ（即ち、１４４バイト）と同じ大きさであってもよい。最小のパケットは、パケットヘッダおよびパケットテイルを含むただ一つの１６バイトのＦＬＩＴを含んでもよい。
【００３６】
すべてのメモリペイロードサイズに対するメモリ読み出し要求パケットは、パケットヘッダ、パケットテイルおよび其々の物理メモリアドレスを要求するだけである。このように、読み出し要求は、単一のＦＬＩＴを用いて構成されてもよい。メモリ読み出し要求は、対応するメモリ読み出しパケット内で要求されたアドレスにおけるデータを含む個別のパケットである。しかしながら、書き込み要求およびアトミック要求パケットは、其々、書き込みおよび読み出し／修正／書き込み動作のために、関連する入力データを含まなければならない。このように、これらの要求の種類は、２−９ＦＬＩＴのパケット幅を有することがある。ＨＭＣデバイスの仕様は、パケット間の弱い順序付けのモデルを規定する。このように、対象実装内に存在する複数のパケット再順序付け点が存在してもよい。補助デバイスが宛先の到着パケットは、ローカルボールトアクセス用に待機するパケットを追い越すことが出来る。ローカルボールトは、また、其々のボールトバンクとやり取りする帯域幅を最も効率的に利用するために、待ち行列型パケットを再順序付けすることが出来る。しかしながら、所定のＨＭＣ実装内に存在する再順序付け点は、特定のリンクからボールト内の特定のバンクに、パケットのストリームの順序を維持するように規定されてもよい。この順序付けは、メモリ読み出し要求がその後に続くメモリ書き込み要求が、正確かつ決定的な挙動を果たすことを保証する。
【００３７】
ＨＭＣ２００内のリンク構造は、複数のＨＭＣ２００の連鎖（ｃｈａｉｎｉｎｇ：チェイニング）を可能とし、リンク構造およびパケット化トランザクションプロトコルを維持しながら、単一のＨＭＣ２００デバイスよりも大きい容量を必要とするメモリサブシステムの構造を可能とする。連鎖に関するさらなる詳細は、図５を参照して以下に議論される。
【００３８】
図４は、論理ベース４００を図示し、論理ベース４００は、リンクインターフェイス１２０を作成して、ＨＭＣ２００内のＤＲＡＭ２５０（図１から図３）を制御するために使用され得る。アップストリームリンクとダウンストリームリンクとを含むメモリリンク１２０は、各メモリリンク１２０に対するリンクインターフェイスコントローラ４１０によって制御されてもよい。リンクインターフェイスコントローラ４１０を通過するパケットは、クロスバースイッチ４３０を通過してもよい。パケットの宛先がＨＭＣ２００におけるボールトである場合、クロスバースイッチ４３０は、メモリ制御論理４４０にパケットを渡すことが出来る。パケットの宛先が別のＨＭＣ２００である場合、クロスバースイッチ４３０は、適切なＨＭＣ２００に送信されるように、適切なリンクインターフェイスコントローラ４１０にパケットを渡すことが出来る。様々なボールトに対するメモリ制御論理４４０およびボールト論理４５０は、適切なボールトおよび選択されたボールトに対する適切なタイミングを選択するために組み合わせられてもよい。
【００３９】
図５は、ハイブリッドメモリキューブ（２００−０から２００−５）の連鎖を図示する。前述されたように、複数のＨＭＣデバイス２００は、ＣＰＵ５１０に対して使用可能なメモリの総容量を増加させるために、ともに連鎖されてもよい。ＨＭＣメモリシステムにおいては、各ＨＭＣ２００は、要求パケットヘッダ内の３ビットチップＩＤフィールド内の値を通じて同定される。３ビットチップＩＤフィールドは、また、“ＣＵＢフィールド”または“デバイスＩＤ”と本明細書で呼ばれることがある。したがって、８つまでのＨＭＣデバイス２００のネットワークは、ＣＰＵ５１０に対してサポートされることが出来る。
【００４０】
ＨＭＣ２００を相互接続するための様々なトポロジーがサポートされ、異なるＨＭＣ２００に対するルーティングは複雑に成り得、複数の経路を含むことがある。したがって、ホストプロセッサは、ルーティングトポロジーの制御中であり、各ＨＭＣ２００にルーティング構成情報をロードし、そのＨＭＣ２００のためのものではないパケットが、ＨＭＣ２００における他のリンクに如何にしてルーティングされるべきかを判定する。このルーティング情報は、適切な宛先に要求パケットをルーティングするために、各ＨＭＣ２００がＣＵＢフィールドを使用することを可能とする。結果として、自体が宛先とされていないパケットをＨＭＣ２００が処理するとき、ＨＭＣ２００は連鎖し、別のＨＭＣ２００に送信されるべき、ＨＭＣ２００における別のリンクへとパケットを通過させる。
【００４１】
例えば、図５において、ＣＰＵ５１０が５のＣＵＢフィールドで要求パケットを送信する場合、第一のＨＭＣ２００−１は、第四のＨＭＣ２００−４に要求パケットを渡すだろう。第四のＨＭＣ２００−４は、要求パケットを使用可能にする第五のＨＭＣ５２０−５に要求パケットを渡すだろう。応答パケットは、同一の連鎖経路を辿ってＣＰＵ５１０に至る。
【００４２】
図６は、本開示の実施形態による、抽象化メモリにおける抽象化メモリプロトコルと仮想メモリ割り当てを利用するシステムを図示する。複数のクライアント（６１０Ａから６１０Ｃ）は、抽象化メモリシステム相互接続６２０に対するアクセスを有する。システム相互接続６２０は、多くの異なる種類の複雑なトポロジーにおいて、任意の数の抽象化メモリモジュール７００を含んでもよい。パケット化メモリ要求を使用する抽象化メモリプロトコルは、図５を参照して上述された、より単純なＨＭＣトポロジーと類似の方法で、連鎖法およびデバイスＩＤを用いて、これらの複雑なトポロジーを作成することが出来る。このようなシステムにおいては、要求パケットが、自体を宛先とされるか、または抽象化メモリモジュール７００にプログラムされた連鎖方向に基づいて、別の抽象化メモリモジュール７００に渡されるべきかを全ての抽象化メモリモジュール７００が、わかるように、要求パケットは、それに含まれるデバイスＩＤを有する。したがって、デバイスＩＤは、要求パケット内のアドレスと共に、クライアント（６１０Ａから６１０Ｃ）によって要求されたアドレスの一部と考えることが出来る。
【００４３】
各抽象化メモリモジュール７００は、メモリ抽象化ユニットと、一つ以上のメモリデバイスとを含む。二つの抽象化メモリモジュール７００−１および７００−２に対して、拡大図が図示される。限定しない例として、これらの拡大図は、各抽象化メモリモジュール（７００−１および７００−２）のアドレススペース内に、４つの保護ゾーンを示す。無論、抽象化メモリモジュール７００内に、より多くの保護ゾーンが規定されてもよいし、または、抽象化メモリモジュールは、単一の保護ゾーンを含んでもよい。
【００４４】
抽象化メモリモジュール７００―２を検討すると、二つの上部保護ゾーンが、クライアントＢ６１０Ｂに割り当てられたことが分かる。左下保護ゾーンは、クライアントＣ６１０Ｃに割り当てられ、右下保護ゾーンはクライアントＡ６１０Ａに割り当てられた。抽象化メモリモジュール７００−１を検討すると、左上および右下の保護ゾーンはクライアントＡ６１０Ａに割り当てられたことが分かる。左下保護ゾーンは、クライアントＣ６１０Ｃに割り当てられ、右上保護ゾーンは割り当てられなかった。
【００４５】
図７は、本開示の実施形態による抽象化メモリモジュール７００のブロック図を図示する。抽象化メモリモジュール７００は、メモリ抽象化ユニット７４０と、一つ以上のメモリデバイスと（７３０−１から７３０−３）を含む。抽象化メモリモジュール７００内のメモリデバイス７３０の数は、数十分の１からそれ以上に、大きく変化することが出来る。図示されるように、抽象化メモリモジュール７００は、パケット化メモリリンクとして構成されることが出来る、一つ以上のメモリリンク７２０を含む。抽象化メモリモジュール７００が、（例えば、ＨＭＣプロトコルに類似して）連鎖およびパケット通過をサポートするように構成される場合、抽象化メモリモジュール７００は、二以上のメモリリンク７２０を一般的に有するだろう。複数のクライアント７１０および複数の抽象化メモリモジュール７００を含む様々な複雑性を有するネットワークを生成するために、メモリリンク７２０は、クライアント７１０、または他の抽象化メモリモジュール７００に結合されてもよい。
【００４６】
抽象化メモリプロトコル論理７５０は、メモリリンク７２０から受信されたメモリ要求パケットを解釈し、応答パケットを生成する。複数のメモリリンク７２０が存在する場合、受信されたパケットがこの特定の抽象化メモリモジュール７００のためのものであるか否か、または別のメモリリンク７２０に転送されるべきか否かを判定するために、リンクルーティングモジュール７６０が含まれてもよく、メモリ要求が、別の抽象化メモリモジュール７００によって取り扱われるようにする。
【００４７】
メモリ要求が抽象化メモリモジュール７００のためのものである場合、その要求は、メモリ要求によってアドレス指定されるべき特定のメモリデバイス（７３０−１から７３０−３）にアクセスするための信号を生成する、メモリ制御論理７７０にルーティングされる。
【００４８】
マッピング論理７８０は、要求パケット内のクライアント７１０によって規定されるアドレスと、メモリデバイス（７３０−１から７３０−３）内の物理アドレスからの変換を作成するために含まれる。マッピング論理７８０は、実際の仮想アドレスの物理アドレスへの変換を作成するための多数の方法で構成されてもよい。
【００４９】
限定しない一例として、変換テーブル７８２は、ページテーブルにアドレスを作成するために、仮想アドレスの一部（例えば、メモリ要求内の上位アドレスビットの幾つかから派生されるキー）を取得するためのページテーブルを含んでもよく、ページテーブルは、メモリ用の上位物理アドレスを作成する。したがって、ページテーブルは、保護ゾーンのベース位置を作成する。この状況においては、メモリ要求内の下位アドレスビットは、保護ゾーン内の適切なアドレスを選択するために使用されるだろう。
【００５０】
別の限定しない例として、変換テーブル７８２は、例えば、保護ゾーンのベース位置を規定するためのベースレジスタおよび保護ゾーンのサイズを規定するためのバウンドレジスタなどのレジスタで達成することが出来る。この状況においては、パケット要求は、適切なベースレジスタを選択するゾーンＩＤを含んでもよく、それによって、物理アドレスの上位アドレスビットと、保護ゾーン内の全てのメモリ位置をアドレス指定するために、バウンドレジスタによって規定されるであろうビット幅を有するアドレスフィールドと、を規定することが出来る。
【００５１】
ＨＭＣデバイスを用いるシステムにおいては、保護ゾーンは、上記で説明されたように、ＨＭＣデバイス内で既に規定されたボールトに基づいてもよい。ボールトの物理位置とサイズは、ＨＭＣデバイスによって既に規定され、ボールトは、割り当てを要求するクライアントに割り当てられ、結び付けられなければならないだけである。
【００５２】
ゾーン許可論理７９０は、どのクライアント７１０が、任意の特定のゾーンへのアクセスを有するかを規定するために含まれてもよい。ゾーン許可論理７９０は、また、以下により完全に議論されるように、様々なクライアント７１０に様々な可能性のある保護ゾーンを割り当てるために、マッピング論理７８０と組み合わせて使用されてもよい。
【００５３】
保護ゾーンの割り当ては、クライアントに対して様々な種類の仮想メモリ環境を作成することが出来る。幾つかのマッピングにおいては、クライアント７１０のための仮想アドレススペースは、アドレススペースのベースとアドレススペースの上部との間で、穴がなく、連続的であるように見えることがある。他のマッピングにおいては、クライアント７１０のための仮想アドレススペースは、不連続（即ち、断片化されている）に見えることがある。この断片化された構成においては、クライアント７１０は、それに割り当てられた様々なゾーンＩＤおよびそのゾーン内のアドレスのアドレス指定だけすることを知ることが出来る。
【００５４】
要約すると、幾つかの実施形態においては、装置は、一つ以上のクライアントからのメモリ要求のタイミングおよびネーミングを、一つ以上のメモリデバイスにおけるタイミングおよびネーミングに抽象化するためのメモリ抽象化ユニットを含む。メモリ抽象化ユニットは、一つ以上のクライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理を含む。メモリ抽象化ユニットは、また、一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンで、要求するクライアントによるメモリアクセス要求によって規定されたネーミングを、仮想物理アドレスに変換するためのマッピング論理もまた含む。メモリ抽象化ユニットは、また、仮想物理アドレスで、一つ以上のメモリデバイスにアクセスするためのメモリ制御論理を含む。また、装置においては、選択された保護ゾーンは、既に規定され、メモリ抽象化ユニットによって、要求するクライアントに割り当てられる。
【００５５】
他の実施形態においては、ハイブリッドメモリキューブは、複数のメモリデバイスと論理ベースとを含む。論理ベースは、パケット化メモリ要求を解釈するように構成された一つ以上のリンクインターフェイスコントローラと、パケット化メモリ要求内で提供されたアドレスを、複数のメモリデバイスのうちの一つ以上での仮想物理アドレスに変換するように構成されたマッピング論理とを含み、仮想物理アドレスは、予め規定された保護ゾーンに属する。論理ベースは、また、仮想物理アドレスを有する複数のメモリデバイスのうちの一つ以上にアクセスするように構成されたメモリ制御論理を含む。
【００５６】
他の実施形態においては、システムは、一つ以上のクライアントと、一つ以上の抽象化メモリモジュールとを含む。各抽象化メモリモジュールは、一つ以上のメモリデバイスと、抽象化メモリプロトコル論理とを含む。抽象化メモリプロトコル論理は、一つ以上のクライアントからのメモリ要求を解釈するためのものであり、抽象化メモリモジュールに関連する一つ以上のメモリデバイスを宛先にしたメモリ要求を処理するためのものである。抽象化メモリプロトコル論理は、また、その抽象化メモリモジュールが宛先にされていないメモリ要求を、別の抽象化メモリモジュールに渡すためのものでもある。各抽象化メモリモジュールは、また、一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、要求するクライアントによるメモリアクセス要求によって規定されるアドレスを変換するためのマッピング論理をも含む。各抽象化メモリモジュールは、また、仮想物理アドレスにおける一つ以上のメモリデバイスの少なくとも一つにアクセスするためのメモリ制御論理をも含む。
【００５７】
図８は、連続的に割り当てられる物理アドレススペース８２０と仮想アドレススペース（８３０および８４０）を示すメモリ図を図示する。この高度に仮想化されたマッピングにおいては、仮想アドレススペース（８３０および８４０）は、保護ゾーンがいくつ割り当てられたかに基づいて、一般的にゼロから開始し、最大アドレスまで連続的に増える。より多くのゾーンが割り当てられると、それらは、アドレススペースの上部に一般的に加えられる。限定しない例として、この種類のマッピングは、仮想ソフトウェアマシンで有用とすることが出来る。例えば、複数のオペレーティングシステムは、単一のクライアント上で実行する。オペレーティングシステムは、あるソフトウェア素子が特定のアドレスに現れることを予測することが出来る。したがって、仮想ソフトウェア環境において実行するオペレーティングシステムは、ゼロから開始し、連続的に構築する仮想アドレスを有することが出来る。
【００５８】
図８は、第一のクライアント８１０Ａおよび第二のクライアント８１０Ｂを図示する。双方のクライアント（８１０Ａおよび８１０Ｂ）は、同一の物理メモリ８２０にアクセスしている。物理メモリ８２０は、様々なサイズの物理保護ゾーン（８２０−１から８２０−６）に分割される。第一のクライアント８１０Ａは、４つの仮想保護ゾーン（８３０−１から８３０−４）を割り当てられ、連続的仮想メモリスペース８３０を作成する。また図７を参照すると、一つ以上の抽象化メモリモジュール７００内のマッピング論理７８０は、仮想保護ゾーン８３０−１を物理保護ゾーン８２０−１にマッピングする。同様に、仮想保護ゾーン８３０−２は、物理保護ゾーン８２０−５にマッピングされ、仮想保護ゾーン８３０−３は、物理保護ゾーン８２０−３にマッピングされ、仮想保護ゾーン８３０−４は、物理保護ゾーン８２０−６にマッピングされる。
【００５９】
第二のクライアント８１０Ｂは、二つの仮想保護ゾーン（８４０−１および８４０−２）を割り当てられ、連続的仮想メモリスペース８４０を作成する。図７をまた参照すると、一つ以上の抽象化メモリモジュール７００内のマッピング論理７８０は、物理保護ゾーン８２０−２に仮想保護ゾーン８４０−１をマッピングする。同様に、仮想保護ゾーン８４０−２は、物理保護ゾーン８２０−４にマッピングされる。
【００６０】
無論、複雑なシステムにおいては、物理アドレススペースは、非常に大きくなることがあり、数百もの保護ゾーンを含むことがある。さらに、複雑なシステムは、非常に大きな仮想アドレススペースを有する多くのクライアントを含むことがある。
【００６１】
したがって、メモリシステムは、物理メモリアドレススペースと、一つ以上の仮想メモリアドレススペースとを規定する複数のメモリデバイスを含む。各仮想メモリアドレススペースは、連続的な仮想アドレススペースを形成するために、複数の仮想保護ゾーンを含み、各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる。
【００６２】
図９は、不連続に（即ち、断片化されて）割り当てられ得る物理アドレススペース９２０および仮想アドレススペース（９３０および９４０）を示すメモリ図を図示する。非常に大きいアドレススペース（例えば、６４ビットのアドレスシステム）と、プロセッサおよび／または高度に分割されたアドレススペース内で動作することが出来る仮想クライアントを有するシステムにおいては、アドレス変換を実施する必要がない。このようなシステムにおいては、クライアントが見る仮想アドレススペース（９３０および９４０）は、断片化されたように見えることがある。しかしながら、保護ゾーンは、図８の実施形態と同様に依然割り当てられ、保護されてもよいが、アドレス変換の必要はない。図９の実施形態は、アドレススペースのうちの一セグメントから別のセグメントにオーバーランすることによって、多くのセキュリティの脆弱性（およびプログラムバグ）が生成し得るとき、さらなるセキュリティを潜在的に提供することが出来る。異なるメモリ部分からセグメントを割り当てる複数のクライアントによって自然に作製される“穴”は、クライアントが自身に割り当てられなかった保護ゾーンにアクセスを試みる場合には、例外の原因となることがある。
【００６３】
図９は、第一のクライアント９１０Ａおよび第二のクライアント９１０Ｂを図示する。双方のクライアント（９１０Ａおよび９１０Ｂ）は、同一の物理メモリ９２０にアクセスしている。物理メモリ９２０は、様々なサイズの物理保護ゾーン（９２０−１から９２０−６）に分割される。第一のクライアント９１０Ａは、３つの仮想保護ゾーン（９３０−１から９３０−３）を割り当てられ、断片化された仮想メモリスペース９３０を作成する。図７をまた参照すると、一つ以上の抽象化メモリモジュール７００内のマッピング論理７８０は、仮想保護ゾーン９３０−１を物理保護ゾーン９２０−１にマッピングされる。同様に、仮想保護ゾーン９３０−２は、物理保護ゾーン９２０−５にマッピングされ、仮想保護ゾーン９３０−３は、物理保護ゾーン９２０−６にマッピングされる。
【００６４】
第二のクライアント９１０Ｂは、二つの保護ゾーン（９４０−１および９４０−２）を割り当てられ、断片化された仮想メモリスペース９４０を作成する。図７をまた参照すると、一つ以上の抽象化メモリモジュール７００内のマッピング論理７８０は、物理保護ゾーン９２０−２に仮想保護ゾーン９４０−１をマッピングする。同様に、仮想保護ゾーン９４０−２は、物理保護ゾーン９２０−４にマッピングされる。物理保護ゾーン９２０−３は、クライアントに未だ割り当てられていないため、使用可能な保護ゾーンである。
【００６５】
無論、複雑なシステムにおいては、物理アドレススペースは、非常に大きくなることがあり、数百もの保護ゾーンを含むことがある。さらに、複雑なシステムは、非常に大きな仮想アドレススペースを有する多くのクライアントを含むことがある。
【００６６】
したがって、メモリシステムは、物理メモリアドレススペースと、一つ以上の仮想メモリアドレススペースとを規定する複数のメモリデバイスを含む。各仮想メモリアドレススペースは、断片化された仮想アドレススペースを形成するために、複数の仮想保護ゾーンを含み、各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる。
【００６７】
図１０は、抽象化メモリプロトコル内の保護ゾーンを利用する仮想アドレススペースにアクセスするプロセスを図示する。動作１０１０において、クライアントは、仮想位置を要求する。限定しない例として、この要求は、適切な抽象化メモリモジュール７００（図７）を選択するためのデバイスＩＤと、抽象化メモリモジュール７００上で選択された保護ゾーンを規定するためのゾーンＩＤと、保護ゾーン内のアドレスとによって規定されるネームであってもよい。動作１０２０において、適切な抽象化メモリモジュール７００上のマッピング論理７８０（図７）は、物理アドレス位置に対する要求におけるネームを変換する。さらに、この要求は、どのクライアントがその要求を作成したかを示すクライアントＩＤを含んでもよく、ゾーン許可論理７９０（図７）は、物理保護ゾーンにアクセスするための許可をクライアントが有することをベリファイしてもよい。ルックアップが失敗するか、またはクライアントが許可を有していない場合、動作ブロック１０５０は、要求するクライアントにエラーが報告されることを示す。ルックアップが成功し、クライアントが許可を有する場合、物理メモリアドレススペース１０３０内の物理保護ゾーン１０４０は、アクセスすることが出来る。
【００６８】
保護ゾーンは、多数の異なる方法で割り当てられてもよい。限定しない例として、クライアントは、特定の抽象化メモリモジュール７００（図７）に保護ゾーンを割り当てるための要求を送信することが出来る。幾つかの実施形態においては、クライアントは、また、要求された保護ゾーンに対する特定のサイズを要求してもよい。他の実施形態においては、サイズが要求されなくてもよく、抽象化メモリモジュール７００は、保護ゾーンのサイズを規定してもよい。抽象化メモリモジュール７００が利用可能な保護ゾーンを有する場合、要求するクライアントに保護ゾーンを割り当てて、ゾーンＩＤを有するクライアントに割り当てを報告することが出来る。幾つかの実施形態においては、抽象化メモリモジュール７００は、クライアントＩＤを有する要求するクライアントの追跡を維持することが出来るので、その保護ゾーンに対するその後のアクセスが、その保護ゾーンへのアクセスに対する許可を有するクライアントからのものであることをベリファイすることが出来る。この方法では、同一の保護ゾーンに対するアクセスを複数のクライアントが与えられることが出来、各クライアントは、物理アドレス変換に対する異なる仮想アドレスを有することが出来る。
【００６９】
あるいは、クライアントは、特定の抽象化メモリモジュール７００から保護ゾーンを要求するのではなく、クライアントは、一般的な割り当て要求を送信してもよい。この一般的な割り当て要求は、割り当てるためのフリーの保護ゾーンを有する第一のモジュールを発見するために、抽象化メモリモジュール７００のネットワークを通じて連鎖アルゴリズムに従う。
【００７０】
別の割り当てプロセスにおいては、クライアントは、抽象化メモリモジュール７００内のパブリックテーブルを読み出すことが出来、保護ゾーン（例えば、固定数の可変サイズセグメントまたは固定数のページ状構造）用のフリースペースをモジュールが有するか否かを判定する。クライアントは、また、プロトコルの一部として、抽象化メモリモジュール７００に問い合わせを行うことが出来る。例えば、クライアントは、“私にＸＧバイトを割り当ててください”等のような要求を送信することが出来、それは、成功するかまたは失敗する。あるいは、クライアントは、“ＸＧバイト持っていますか？”などの二つの問い合わせへと、問い合わせを分割することが出来、答えが「はい」の場合には、クライアントは、そのクライアントにＸＧバイトの保護ゾーンを与えるための要求を後に行うことが出来る。
【００７１】
割り当て要求の成功に応じて、抽象化メモリモジュール７００は、“メモリのこのブロックは、現在、アドレスＸ−Ｙを有するゾーンＡに属する”などの応答パケットを作成することが出来、ここで、ＡはキーまたはゾーンＩＤであり、Ｘ−Ｙは、新規の物理メモリアドレスを記述する。
【００７２】
ゾーン許可論理７９０（図７）は、他の許可フィールド（例えば、読み出しアクセスまたは書き込みアクセス）を含んでもよく、他の許可フィールドは、共有データベースを可能とするためのセグメント毎／ＩＤ毎に可能とすることが出来る。
【００７３】
各クライアントは、どの保護ゾーンが自身に割り当てられたことに気がつく。クライアントがその保護ゾーンをもう必要としない場合、割り当て解除要求を送信することが出来る。抽象化メモリモジュール７００は、割り当て解除要求を承認して、割り当てられた保護ゾーンをマッピング論理から除去することが出来る。
【００７４】
したがって、メモリにアクセスする方法は、抽象化メモリプロトコルでメモリアクセス要求を作成することと、抽象化メモリモジュールでメモリアクセス要求を承認することとを含む。この方法は、また、抽象化メモリモジュールと関連する一つ以上のメモリデバイスにおいて選択された保護ゾーンにおける仮想物理アドレスに、メモリアクセス要求によって規定されたネーミングを変換することと、仮想物理アドレスにおける一つ以上のメモリデバイスにアクセスすることとを含む。
【００７５】
本開示の実施形態は、限定することなく、以下に説明されるように更に特徴づけることが出来る。
【００７６】
実施形態１。一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、
一つ以上のクライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理と、
一つ以上のメモリデバイスの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、一つ以上のクライアントのうちの要求するクライアントによるメモリアクセス要求のネーミングを変換するためのマッピング論理と、
仮想物理アドレスにおける一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含むメモリ抽象化ユニットを含む装置であって、
選択された保護ゾーンは、予め規定され、メモリ抽象化ユニットによって要求するクライアントに割り当てられたものである、装置。
【００７７】
実施形態２。メモリ抽象化ユニットは、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有するときに、メモリアクセス要求を完了することを可能にするように構成され、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有していないときに、エラーを報告するように構成されたメモリ抽象化ユニット内のゾーン許可論理をさらに含む、実施形態１の装置。
【００７８】
実施形態３。ゾーン許可論理は、メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えるようにさらに構成される、実施形態２の装置。
【００７９】
実施形態４。メモリ抽象化ユニットは、メモリアクセス要求内で提供されたアドレスが選択された保護ゾーン内にあるときにメモリアクセス要求を完了することを可能するように構成され、メモリアクセス要求内で提供されたアドレスが、規定されたどの保護ゾーン内にもない場合にエラーを報告するように構成されたメモリ抽象化ユニット内のゾーン許可論理をさらに含む、実施形態１の装置。
【００８０】
実施形態５。マッピング論理は、
一つ以上のクライアントのうちの割り当てを要求するクライアントからの割り当て要求を承認することと、
一つ以上のメモリデバイスのうちのメモリデバイスにおいて使用可能な保護ゾーンを判定することと、
割り当てを要求するクライアントに使用可能な保護ゾーンを割り当てることと、
割り当てを要求するクライアントに、割り当てられた保護ゾーンの位置を報告することとのためにさらに構成される、実施形態１から実施形態４のうちのいずれかによる装置。
【００８１】
実施形態６。マッピング論理は、
割り当てを要求するクライアントからの割り当て解除要求を承認することと、
割り当てられた保護ゾーンをマッピング論理から除去することとのためにさらに構成される、実施形態５の装置。
【００８２】
実施形態７。割り当てを要求するクライアントからの割り当て要求を承認することは、要求されたサイズを承認することを含み、使用可能な保護ゾーンを割り当てることは、要求されたサイズで使用可能な保護ゾーンを割り当てることを含む、実施形態５の装置。
【００８３】
実施形態８。抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用するメモリアクセスを解釈するために構成される、実施形態１から実施形態７のうちのいずれかによる装置。
【００８４】
実施形態９。保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、実施形態８の装置。
【００８５】
実施形態１０。マッピング論理は、要求するクライアントからのネーミングを、アクセスされるべき一つ以上のメモリデバイスのうちのメモリデバイスに対するネーミングに変換するためのアドレス変換テーブルを含む、実施形態１から実施形態９のいずれかによる装置。
【００８６】
実施形態１１。マッピング論理は、メモリ内で割り当てられた各保護ゾーンの位置とサイズを規定するためのベースレジスタとバウンダリレジスタとを含む、実施形態１から実施形態９のいずれかによる装置。
【００８７】
実施形態１２。メモリアクセス要求は、要求するクライアントに対するクライアントＩＤを含み、クライアントＩＤが選択された保護ゾーンに対する許可を有していない場合には、メモリ制御論理は、仮想物理アドレスにアクセスしない、実施形態１から実施形態１１のうちのいずれかによる装置。
【００８８】
実施形態１３。メモリアクセス要求によって規定されたアドレスはゾーンＩＤを含み、選択された保護ゾーン内のアドレスとマッピング論理は、ゾーンＩＤに応じて、仮想物理アドレスの少なくとも一部を作成する、実施形態１から実施形態１１のうちのいずれかによる装置。
【００８９】
実施形態１４。
複数のメモリデバイスと、
パケット化メモリ要求を解釈するように構成された一つ以上のリンクインターフェイスコントローラと、
複数のメモリデバイスのうちの一つ以上の仮想物理アドレスに、パケット化メモリ要求内で提供されたアドレスを変換するように構成されたマッピング論理であって、仮想物理アドレスは予め規定された保護ゾーンに属する、マッピング論理と、
仮想物理アドレスで複数のメモリデバイスのうちの一つ以上にアクセスするように構成されたメモリ制御論理と、
を含む論理ベースと、
を含むハイブリッドメモリキューブ。
【００９０】
実施形態１５。論理ベースは、パケット化メモリ要求内に提供されたアドレスが予め規定された保護ゾーン内にあるときに、パケット化メモリ要求を完了することを可能にするように構成され、パケット化メモリ要求内で提供されたアドレスが規定されたどの保護ゾーン内にもないときにエラーを報告するように構成されたゾーン許可論理をさらに含む、実施形態１４のハイブリッドメモリキューブ。
【００９１】
実施形態１６。予め規定された保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、実施形態１４および実施形態１５のうちのいずれかによるハイブリッドメモリキューブ。
【００９２】
実施形態１７。マッピング論理は、
割り当てを要求するクライアントからの割り当て要求を承認することと、
複数のメモリデバイスのうちの一つ以上のメモリデバイス内で使用可能な保護ゾーンを判定することと、
割り当てを要求するクライアントに、使用可能な保護ゾーンを割り当てることと、
割り当てを要求するクライアントに、割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
実施形態１４から実施形態１６のうちのいずれかによるハイブリッドメモリキューブ。
【００９３】
実施形態１８。マッピング論理は、
割り当てを要求するクライアントからの割り当て解除要求を承認することと、
割り当てられた保護ゾーンをマッピング論理から除去することと、
のためにさらに構成される、実施形態１７のハイブリッドメモリキューブ。
【００９４】
実施形態１９。割り当てを要求するクライアントからの割り当て要求を承認することは、要求されたサイズを承認することを含み、使用可能な保護ゾーンを割り当てることは、要求されたサイズで使用可能な保護ゾーンを割り当てることを含む、実施形態１７のハイブリッドメモリキューブ。
【００９５】
実施形態２０。
一つ以上の抽象化メモリモジュールであって、各抽象化メモリモジュールは、
一つ以上のメモリデバイスと、
一つ以上のクライアントからのメモリ要求を解釈することと、
抽象化メモリモジュールに関連する一つ以上のメモリデバイスを宛先とされたメモリ要求を処理することと、
抽象化メモリモジュールを宛先とされていないメモリ要求を、別の抽象化メモリモジュールに渡すことと
のための抽象化メモリプロトコル論理と、
一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、一つ以上のクライアントのうちの要求するクライアントによるメモリアクセス要求によって規定されたアドレスを変換するためのマッピング論理と、
仮想物理アドレスにおける一つ以上のメモリデバイスのうちの少なくとも一つにアクセスするためのメモリ制御論理と、
を含む、抽象化メモリモジュールを含むシステム。  
【００９６】
実施形態２１。一つ以上の抽象化メモリモジュールの各々がモジュールＩＤをさらに含み、メモリ要求は、一つ以上のメモリモジュールの抽象化メモリモジュールがアドレスを使用するためのものであることを同定するモジュールＩＤを含む、実施形態２０のシステム。
【００９７】
実施形態２２。メモリアクセス要求によって規定されたアドレスは、ゾーンＩＤと、選択された保護ゾーン内のアドレスとを含み、マッピング論理は、ゾーンＩＤに応じて、仮想物理アドレスの少なくとも一部を作成する、実施形態２０および実施形態２１のうちのいずれかによるシステム。
【００９８】
実施形態２３。一つ以上の抽象化メモリモジュールは、ハイブリッドメモリキューブを含む、実施形態２０から実施形態２２のうちのいずれかによるシステム。
【００９９】
実施形態２４。
物理メモリアドレススペースを規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレススペースであって、各仮想メモリアドレススペースは連続的仮想アドレススペースを形成するための複数の仮想保護ゾーンを含む、仮想メモリアドレススペースと、を含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる、メモリシステム。
【０１００】
実施形態２５。物理保護ゾーンは、抽象化メモリモジュールによって、選択された保護ゾーンにアクセスするための許可を与えられた要求するクライアントによってのみアクセス可能である、実施形態２４のメモリシステム。
【０１０１】
実施形態２６。少なくとも一つの物理保護ゾーンは、二つ以上の仮想メモリアドレススペースのうちの少なくとも二つにおける仮想保護ゾーンにマッピングされる、実施形態２４および実施形態２５のうちのいずれかによるメモリシステム。
【０１０２】
実施形態２７。
物理メモリアドレススペースを規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレススペースであって、各仮想メモリアドレススペースは、断片化された仮想アドレススペースを形成するための複数の仮想保護ゾーンを含む、仮想メモリアドレススペースと、
を含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる、メモリシステム。
【０１０３】
実施形態２８。物理保護ゾーンは、抽象化メモリモジュールによって、選択された保護ゾーンにアクセスするための許可を与えられた要求するクライアントによってのみアクセス可能である、実施形態２７のメモリシステム。
【０１０４】
実施形態２９。少なくとも一つの物理保護ゾーンは、二つ以上の仮想メモリアドレススペースのうちの少なくとも二つにおける仮想保護ゾーンにマッピングされる、実施形態２７および実施形態２８のうちのいずれかのメモリシステム。
【０１０５】
実施形態３０。
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールでメモリアクセス要求を承認することと、
メモリアクセス要求によって規定されるネーミングを、抽象化メモリモジュールに関連する一つ以上のメモリデバイス内の選択された保護ゾーンにおける仮想物理アドレスに変換することと、
仮想物理アドレスで一つ以上のメモリデバイスにアクセスすることと、
を含む、メモリにアクセスする方法。
【０１０６】
実施形態３１。メモリ要求を作成した要求するクライアントが、選択された保護ゾーンにアクセスするための許可を有しているときに、メモリアクセス要求を完了することを可能にすることと、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、実施形態３０の方法。
【０１０７】
実施形態３２。メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、実施形態３０および実施形態３２のうちのいずれかによる方法。
【０１０８】
実施形態３３。メモリアクセス要求内で提供されたアドレスが選択された保護ゾーン内にあるときに、メモリアクセス要求を完了することを可能にすることと、メモリアクセス要求内で提供されたアドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告することとをさらに含む、実施形態３０の方法。
【０１０９】
上述され、添付の図面に図示された本開示の実施形態は、本発明の範囲を限定するものではない。なぜなら、これらの実施形態は本開示の実施形態の単なる例に過ぎないからである。本発明は、添付の請求項とその法的均等物によって定義される。あらゆる均等な実施形態は、本開示の範囲内にある。実際に、本明細書に図示され記述された実施形態に加えて、記述された要素の代替的な有用な組み合わせなど、本開示の様々な改変は、この記述から当業者に明らかとなるだろう。このような改変および実施形態は、また、添付の請求項とその法的均等物の範囲内にある。
【図１】
2017515238.tif 000003
【図２】
2017515238.tif 000004
【図３】
2017515238.tif 000005
【図４】
2017515238.tif 000006
【図５】
2017515238.tif 000007
【図６】
2017515238.tif 000008
【図７】
2017515238.tif 000009
【図８】
2017515238.tif 000010
【図９】
2017515238.tif 000011
【図１０】
2017515238.tif 000012
【手続補正書】
【提出日】平成29年1月12日(2017.1.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングによって定義されるアドレスを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含む、メモリ抽象化ユニットを含み、
前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられる、
装置。
【請求項２】
前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有するときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有していないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項１の装置。
【請求項３】
前記ゾーン許可論理は、前記メモリアクセス要求が読み出しアクセスか、書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスする許可を与えるようにさらに構成される、
請求項２の装置。
【請求項４】
前記メモリアクセス要求内で提供されたアドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項１の装置。
【請求項５】
前記マッピング論理は、
前記一つ以上のクライアントのうちの割り当てを要求するクライアントから割り当て要求を承認することと、
前記一つ以上のメモリデバイスのうちのメモリデバイス内で使用可能な保護ゾーンを判定することと、
前記割り当てを要求するクライアントに、前記使用可能な保護ゾーンを割り当てることと、
前記割り当てを要求するクライアントに、前記割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
請求項１の装置。
【請求項６】
前記マッピング論理は、
前記割り当てを要求するクライアントからの割り当て解除要求を承認することと、
前記割り当てられた保護ゾーンを前記マッピング論理から除去することと、
のためにさらに構成される、
請求項５の装置。
【請求項７】
前記割り当てを要求するクライアントからの前記割り当て要求を承認することは、要求されたサイズを承認することを含み、前記使用可能な保護ゾーンを割り当てることは、前記要求されたサイズで前記使用可能な保護ゾーンを割り当てることを含む、
請求項５の装置。
【請求項８】
前記抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用して、メモリアクセスを解釈するために構成される、
請求項１の装置。
【請求項９】
前記保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、
請求項８の装置。
【請求項１０】
前記マッピング論理は、前記要求するクライアントからの前記ネーミングを、アクセスされるべき前記一つ以上のメモリデバイスのうちのメモリデバイスに対する前記ネーミングに変換するためのアドレス変換テーブルを含む、
請求項１の装置。
【請求項１１】
前記マッピング論理は、メモリ内に割り当てられた各保護ゾーンの位置とサイズとを規定するためのベースレジスタと、バウンダリレジスタとを含む、
請求項１の装置。
【請求項１２】
前記メモリアクセス要求は、前記要求するクライアントに対するクライアントＩＤを含み、前記クライアントＩＤが前記選択された保護ゾーンに対する許可を有していない場合に、前記メモリ制御論理は、前記仮想物理アドレスにアクセスしない、
請求項１の装置。
【請求項１３】
前記メモリアクセス要求によって規定される前記アドレスは、ゾーンＩＤと、前記選択された保護ゾーン内のアドレスとを含み、前記マッピング論理は、前記ゾーンＩＤに応じて、前記仮想物理アドレスの少なくとも一部を作成する、
請求項１の装置。
【請求項１４】
前記一つ以上のメモリデバイスと、
前記メモリ抽象化ユニットを含む論理ベースと、
をさらに含む、
請求項１から１３のうちのいずれか一項による装置。
【請求項１５】
前記一つ以上のメモリデバイスと、
前記論理ベースと、
を含む、抽象化メモリモジュールであって、
前記論理ベースの前記抽象化メモリプロトコル論理は、
前記抽象化メモリモジュールに関連する前記一つ以上のメモリデバイスが宛先とされる前記メモリ要求を処理することと、
前記抽象化メモリモジュールが宛先とされていない前記メモリ要求を、別の抽象化メモリモジュールに渡すことと、
のためにさらに構成される、
抽象化メモリモジュールをさらに含む、
請求項１４の装置。
【請求項１６】
前記一つ以上のメモリデバイスは、物理メモリアドレススペースを規定し、
前記論理ベースの前記メモリ抽象化ユニットは、一つ以上の仮想メモリアドレススペースを規定し、各仮想メモリアドレススペースは、連続的仮想アドレススペースと断片化された仮想アドレススペースのうちの一つを形成するための、複数の仮想保護ゾーンを含む、
請求項１４の装置。
【請求項１７】
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールで前記メモリアクセス要求を承認することと、
前記抽象化メモリモジュールに関連する一つ以上のメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに、前記メモリアクセス要求によって規定されるネーミングによって定義されるアドレスを変換することと、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスすることと、
を含む、
メモリにアクセスする方法。
【請求項１８】
前記メモリ要求を作成した要求するクライアントが、前記選択された保護ゾーンにアクセスするための許可を有するときに、前記メモリアクセス要求を完了することを可能にすることと、前記要求するクライアントが前記選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、
請求項１７の方法。
【請求項１９】
前記メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、
請求項１７の方法。
【請求項２０】
前記メモリアクセス要求内で提供された前記アドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にすることと、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときに、エラーを報告することと、をさらに含む、
請求項１７の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
例えば、図５において、ＣＰＵ５１０が５のＣＵＢフィールドで要求パケットを送信する場合、第一のＨＭＣ２００−１は、第四のＨＭＣ２００−４に要求パケットを渡すだろう。第四のＨＭＣ２００−４は、要求パケットを使用可能にする第五のＨＭＣ２００−５に要求パケットを渡すだろう。応答パケットは、同一の連鎖経路を辿ってＣＰＵ５１０に至る。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
実施形態３２。メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、実施形態３０および実施形態３１のうちのいずれかによる方法。
【手続補正書】
【提出日】平成29年4月20日(2017.4.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングによって定義されるアドレスを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含む、メモリ抽象化ユニットを含み、
前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられる、
装置。
【請求項２】
前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有するときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有していないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項１の装置。
【請求項３】
前記ゾーン許可論理は、前記メモリアクセス要求が読み出しアクセスか、書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスする許可を与えるようにさらに構成される、
請求項２の装置。
【請求項４】
前記メモリアクセス要求内で提供されたアドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項１の装置。
【請求項５】
前記マッピング論理は、
前記一つ以上のクライアントのうちの割り当てを要求するクライアントから割り当て要求を承認することと、
前記一つ以上のメモリデバイスのうちのメモリデバイス内で使用可能な保護ゾーンを判定することと、
前記割り当てを要求するクライアントに、前記使用可能な保護ゾーンを割り当てることと、
前記割り当てを要求するクライアントに、前記割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
請求項１の装置。
【請求項６】
前記マッピング論理は、
前記割り当てを要求するクライアントからの割り当て解除要求を承認することと、
前記割り当てられた保護ゾーンを前記マッピング論理から除去することと、
のためにさらに構成される、
請求項５の装置。
【請求項７】
前記割り当てを要求するクライアントからの前記割り当て要求を承認することは、要求されたサイズを承認することを含み、前記使用可能な保護ゾーンを割り当てることは、前記要求されたサイズで前記使用可能な保護ゾーンを割り当てることを含む、
請求項５の装置。
【請求項８】
前記抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用して、メモリアクセスを解釈するために構成される、
請求項１の装置。
【請求項９】
前記保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、
請求項８の装置。
【請求項１０】
前記マッピング論理は、前記要求するクライアントからの前記ネーミングを、アクセスされるべき前記一つ以上のメモリデバイスのうちのメモリデバイスに対する前記ネーミングに変換するためのアドレス変換テーブルを含む、
請求項１の装置。
【請求項１１】
前記マッピング論理は、メモリ内に割り当てられた各保護ゾーンの位置とサイズとを規定するためのベースレジスタと、バウンダリレジスタとを含む、
請求項１の装置。
【請求項１２】
前記メモリアクセス要求は、前記要求するクライアントに対するクライアントＩＤを含み、前記クライアントＩＤが前記選択された保護ゾーンに対する許可を有していない場合に、前記メモリ制御論理は、前記仮想物理アドレスにアクセスしない、
請求項１の装置。
【請求項１３】
前記メモリアクセス要求によって規定される前記アドレスは、ゾーンＩＤと、前記選択された保護ゾーン内のアドレスとを含み、前記マッピング論理は、前記ゾーンＩＤに応じて、前記仮想物理アドレスの少なくとも一部を作成する、
請求項１の装置。
【請求項１４】
一つ以上の抽象化メモリモジュールを含み、各抽象化メモリモジュールは、
一つ以上のメモリデバイスと、
一つ以上のクライアントからのメモリ要求を解釈し、前記抽象化メモリモジュールに関連した前記一つ以上のメモリデバイスを宛先とする前記メモリ要求を供給し、前記抽象化メモリモジュールを宛先としていない前記メモリ要求を他の抽象化メモリモジュールに渡すための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求クライアントによるメモリアクセス要求により規定されるアドレスを、前記一つ以上のメモリデバイスのうちの少なくとも一つ内の選択された保護ゾーンの仮想物理アドレスへ変換するマッピング論理と、
前記仮想物理アドレスにおける前記一つ以上のメモリデバイスのうちの前記少なくとも一つにアクセスするメモリ制御論理と、
を含む、システム。
【請求項１５】
前記一つ以上の抽象化メモリモジュールのそれぞれは、更に、モジュールＩＤを含み、メモリ要求は、前記一つ以上のメモリモジュールの内のどの抽象化メモリモジュールが、前記アドレスを用いるかを特定するモジュールＩＤを含む、請求項１４に記載のシステム。
【請求項１６】
前記メモリアクセス要求により規定される前記アドレスは、ゾーンＩＤと、前記選択された保護ゾーン内のアドレスを含み、前記マッピング論理は、前記ゾーンＩＤに応答して、前記仮想物理アドレスの少なくとも一部を生成する、請求項１４に記載のシステム。
【請求項１７】
前記一つ以上の抽象化メモリモジュールは、ハイブリッドメモリキューブを含む、請求項１４に記載のシステム。
【請求項１８】
複数の物理保護ゾーンを含む物理メモリアドレス空間を規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレス空間と、を含み、
各仮想メモリアドレス空間は、連続した仮想アドレス空間を形成するための複数の仮想保護ゾーンを含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信し且つ前記複数の物理保護ゾーンへのアクセスを制御するように構成された抽象化メモリモジュールによって、前記物理メモリアドレス空間内の前記複数の物理保護ゾーンのうちの対応する物理保護ゾーンにマッピングされる、メモリシステム。
【請求項１９】
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールで前記メモリアクセス要求を承認することと、
前記抽象化メモリモジュールに関連する一つ以上のメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに、前記メモリアクセス要求によって規定されるネーミングによって定義されるアドレスを変換することと、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスすることと、
を含む、
メモリにアクセスする方法。
【請求項２０】
前記メモリ要求を作成した要求するクライアントが、前記選択された保護ゾーンにアクセスするための許可を有するときに、前記メモリアクセス要求を完了することを可能にすることと、前記要求するクライアントが前記選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、
請求項１９の方法。
【請求項２１】
前記メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、
請求項１９の方法。
【請求項２２】
前記メモリアクセス要求内で提供された前記アドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にすることと、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときに、エラーを報告することと、をさらに含む、
請求項１９の方法。
【国際調査報告】
2017515238.tif 000013
2017515238.tif 000014
2017515238.tif 000015