特許第6201065号(P6201065)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロン テクノロジー, インク.の特許一覧

特許6201065再構成可能なメモリシステムのための仮想化された物理アドレス
<>
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000002
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000003
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000004
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000005
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000006
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000007
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000008
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000009
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000010
  • 特許6201065-再構成可能なメモリシステムのための仮想化された物理アドレス 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6201065
(24)【登録日】2017年9月1日
(45)【発行日】2017年9月20日
(54)【発明の名称】再構成可能なメモリシステムのための仮想化された物理アドレス
(51)【国際特許分類】
   G06F 12/14 20060101AFI20170911BHJP
   G06F 12/02 20060101ALI20170911BHJP
【FI】
   G06F12/14 510D
   G06F12/02 570K
   G06F12/02 510M
【請求項の数】18
【全頁数】26
(21)【出願番号】特願2016-566610(P2016-566610)
(86)(22)【出願日】2015年5月1日
(65)【公表番号】特表2017-515238(P2017-515238A)
(43)【公表日】2017年6月8日
(86)【国際出願番号】US2015028882
(87)【国際公開番号】WO2015171464
(87)【国際公開日】20151112
【審査請求日】2017年1月12日
(31)【優先権主張番号】14/274,195
(32)【優先日】2014年5月9日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー, インク.
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100106851
【弁理士】
【氏名又は名称】野村 泰久
(72)【発明者】
【氏名】マーフィー,リチャード シー.
(72)【発明者】
【氏名】ラブリー,ジョン
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開昭62−219046(JP,A)
【文献】 特開2006−293516(JP,A)
【文献】 特開平06−044140(JP,A)
【文献】 特表2010−518543(JP,A)
【文献】 国際公開第2014/014711(WO,A1)
【文献】 特表2015−522886(JP,A)
【文献】 米国特許出願公開第2014/0013027(US,A1)
【文献】 米国特許出願公開第2011/0131363(US,A1)
【文献】 特開2009−015783(JP,A)
【文献】 国際公開第2007/129482(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングによって定義されるアドレスを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含む、メモリ抽象化ユニットを含み、
前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられ、
前記メモリアクセス要求内で提供されたアドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
装置。
【請求項2】
前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有するときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有していないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
請求項1の装置。
【請求項3】
前記ゾーン許可論理は、前記メモリアクセス要求が読み出しアクセスか、書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスする許可を与えるようにさらに構成される、
請求項2の装置。
【請求項4】
前記マッピング論理は、
前記一つ以上のクライアントのうちの割り当てを要求するクライアントから割り当て要求を承認することと、
前記一つ以上のメモリデバイスのうちのメモリデバイス内で使用可能な保護ゾーンを判定することと、
前記割り当てを要求するクライアントに、前記使用可能な保護ゾーンを割り当てることと、
前記割り当てを要求するクライアントに、前記割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
請求項1の装置。
【請求項5】
前記マッピング論理は、
前記割り当てを要求するクライアントからの割り当て解除要求を承認することと、
前記割り当てられた保護ゾーンを前記マッピング論理から除去することと、
のためにさらに構成される、
請求項の装置。
【請求項6】
前記割り当てを要求するクライアントからの前記割り当て要求を承認することは、要求されたサイズを承認することを含み、前記使用可能な保護ゾーンを割り当てることは、前記要求されたサイズで前記使用可能な保護ゾーンを割り当てることを含む、
請求項の装置。
【請求項7】
前記抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用して、メモリアクセスを解釈するために構成される、
請求項1の装置。
【請求項8】
一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングによって定義されるアドレスを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含む、メモリ抽象化ユニットを含み、
前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられ、
前記抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用して、メモリアクセスを解釈するために構成され、
前記保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される
置。
【請求項9】
前記マッピング論理は、前記要求するクライアントからの前記ネーミングを、アクセスされるべき前記一つ以上のメモリデバイスのうちのメモリデバイスに対する前記ネーミングに変換するためのアドレス変換テーブルを含む、
請求項1の装置。
【請求項10】
前記マッピング論理は、メモリ内に割り当てられた各保護ゾーンの位置とサイズとを規定するためのベースレジスタと、バウンダリレジスタとを含む、
請求項1の装置。
【請求項11】
前記メモリアクセス要求は、前記要求するクライアントに対するクライアントIDを含み、前記クライアントIDが前記選択された保護ゾーンに対する許可を有していない場合に、前記メモリ制御論理は、前記仮想物理アドレスにアクセスしない、
請求項1の装置。
【請求項12】
一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングによって定義されるアドレスを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含む、メモリ抽象化ユニットを含み、
前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられ、
前記メモリアクセス要求によって規定される前記アドレスは、ゾーンIDと、前記選択された保護ゾーン内のアドレスとを含み、前記マッピング論理は、前記ゾーンIDに応じて、前記仮想物理アドレスの少なくとも一部を作成する
置。
【請求項13】
一つ以上の抽象化メモリモジュールを含み、各抽象化メモリモジュールは、
一つ以上のメモリデバイスと、
一つ以上のクライアントからのメモリ要求を解釈し、前記抽象化メモリモジュールに関連した前記一つ以上のメモリデバイスを宛先とする前記メモリ要求を供給し、前記抽象化メモリモジュールを宛先としていない前記メモリ要求を他の抽象化メモリモジュールに渡すための抽象化メモリプロトコル論理と、
前記一つ以上のクライアントのうちの要求クライアントによるメモリアクセス要求により規定されるアドレスを、前記一つ以上のメモリデバイスのうちの少なくとも一つ内の選択された保護ゾーンの仮想物理アドレスへ変換するマッピング論理と、
前記仮想物理アドレスにおける前記一つ以上のメモリデバイスのうちの前記少なくとも一つにアクセスするメモリ制御論理と、
を含み
前記メモリアクセス要求により規定される前記アドレスは、ゾーンIDと、前記選択された保護ゾーン内のアドレスを含み、前記マッピング論理は、前記ゾーンIDに応答して、前記仮想物理アドレスの少なくとも一部を生成する、
システム。
【請求項14】
前記一つ以上の抽象化メモリモジュールのそれぞれは、更に、モジュールIDを含み、メモリ要求は、前記一つ以上のメモリモジュールの内のどの抽象化メモリモジュールが、前記アドレスを用いるかを特定するモジュールIDを含む、請求項13に記載のシステム。
【請求項15】
前記一つ以上の抽象化メモリモジュールは、ハイブリッドメモリキューブを含む、請求項13に記載のシステム。
【請求項16】
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールで前記メモリアクセス要求を承認することと、
前記抽象化メモリモジュールに関連する一つ以上のメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに、前記メモリアクセス要求によって規定されるネーミングによって定義されるアドレスを変換することと、
前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスすることと、
を含み
前記メモリアクセス要求内で提供された前記アドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にすることと、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときに、エラーを報告することと、をさらに含む、
メモリにアクセスする方法。
【請求項17】
前記メモリ要求を作成した要求するクライアントが、前記選択された保護ゾーンにアクセスするための許可を有するときに、前記メモリアクセス要求を完了することを可能にすることと、前記要求するクライアントが前記選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、
請求項16の方法。
【請求項18】
前記メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、
請求項16の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[優先権主張]
本出願は、2014年5月9日に出願された米国仮特許出願整理番号14/274,195の“Virtualized Physical Addresses for Reconfigurable Memory Systems”の出願日の利益を享受する権利を主張する。
【0002】
本開示は、概して、仮想メモリマッピングに関する。より詳細には、本開示は、メモリ抽象化プロトコルを用いて再構成可能なメモリシステムにおける仮想メモリマッピングに関する。
【背景技術】
【0003】
メモリデバイスは、典型的には、コンピュータまたは他の電子デバイスにおける半導体集積回路および/または外部リムーバブルデバイスとして、多くのデータ処理システム内で提供される。とりわけ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、同期式DRAM(SDRAM)、フラッシュメモリおよび抵抗可変メモリを含む多くの様々な種類のメモリが存在する。
【0004】
従来のメモリシステムは、デュアル・インライン・メモリモジュール(DIMM)と呼ばれる、プリント回路基板(PCB)上にマウントされたDRAMなどの一つ以上のメモリデバイスで典型的に構成される。メモリシステムは、メモリ制御サブシステムまたは中央処理装置(CPU)またはマイクロプロセッサと通信する。幾つかの構成においては、メモリコントローラは、プロセッサと同一の物理チップに物理的に組み込まれる。他の構成においては、メモリコントローラは、メモリコントローラハブ(MCH)を含む多くの論理コンポーネントのうちの唯一つにすぎないことがある。メモリコントローラハブは、しばしば様々な種類の半導体メモリを用いて、または様々な目的で、完全に分離された、個別のメモリアドレススペースを典型的にサポートする。例えば、メモリコントローラは、グラフィックアプリケーション用のビデオDRAM、ディスクドライブ加速用のフラッシュメモリ、プロセッサのメイン外部メモリとしてのDRAM製品の利用をサポートすることが出来る。
【0005】
多くのコンピュータシステムは、特定のプロセッサ、特定のプロセスおよびその組み合わせに割り当てられた仮想メモリを作成するように構成される。マシン仮想化(例えば、“ハイパーバイザ”)を提供するための現在のソフトウェアベースの機構は、様々なオペレーティングシステムの中でも、マシンリソースを分割するための比較的セキュリティの低い機構を提供する。幾つかのハイパーバイザは、IBMメインフレーム内で最も特に顕著であるが、これらの機構の幾つかに対するハードウェアエンフォースメントをもたらす。x86アーキテクチャでさえも、命令のプリビレッジを記述するためにCPUリングを含む。VMWAREのような幾つかのソフトウェアハイパーバイザは、これらのリングに構築することが出来る。幾つかのマシンは、単一の大規模対称型マルチプロセッサ(SMP)または大規模分散システム内にハードウェア“ドメイン”を提供することが出来、同一のハードウェアプラットフォーム上でオペレーティングシステムの複数のインスタンスを実行することが出来、ドメイン間の干渉からのハードウェア保護を提供することが出来る。これらの種類のシステムは、しかしながら、ボードレベルにおけるリソースのドメインレベルの割り当てのみを可能とされる。ハードウェアレベルにおける再構成は、典型的にはコースグレーン(coarse−grain)(例えば、プロセッサとメモリリソースの双方を、一緒に割り当てることを必要とする)である。ソフトウェアレベルにおける再構成は、典型的にはファイングレーン(fine−grain)であるが、強制力は小さい。
【0006】
現在、データセンター内の“分離(disaggregation)”に向かう業界の傾向が存在し、プロセッサ、メモリおよびストレージリソースは、物理ユニット(典型的には“スレッド”と呼ばれる)内に割り当てられ、データセンタースケールのネットワークを介して相互接続される。これらのリソースは、リソース、レイテンシーおよび典型的なネットワークプロトコル、しばしばTCP/IPを介したスループットの点で、アクセスのコストが高い。メモリリソースがプロセッサリソースと共に割り当てられる必要がないという点で(分離前に、別のCPUおよびオペレーティングシステム(OS)インスタンスの追加を必要とする新規メモリコントローラまたはディスクコントローラを追加する場合)これらの種類の分離型システムは、リソースの幾らかのバランスの改善を可能とし、それによって依然高いオーバーヘッドを被る。ネットワーク処理のみで、相当のファームウェアと内蔵制御を必要とし、複雑なプロトコルは、レイテンシーオーバーヘッドおよび帯域幅制限などを課す。典型的には、これらの構成においては、4次以上の大きさの性能が失われることがある。さらに、これらの分離型システムは、コースグレーンコンピュータ構成を表す。
【図面の簡単な説明】
【0007】
図1】抽象化メモリプロトコルを用いるシステムの一例として、ハイブリッドメモリキューブを含むデータ処理システムの図である。
図2】ハイブリッドメモリキューブ内のDRAMの可能な分画を図示する。
図3】ハイブリッドメモリキューブ内のDRAMの分画の一例の論理図を図示する。
図4】リンクインターフェイスおよびハイブリッドメモリキューブ内のDRAMの制御用の論理ベースを図示する。
図5】ハイブリッドメモリキューブの連鎖を図示する。
図6】本開示の実施形態により、抽象化メモリプロトコルを用いるシステムと、抽象化メモリにおける仮想メモリ割り当てとを図示する。
図7】本開示の実施形態による、メモリ抽象化モジュールのブロック図を図示する。
図8】連続的に割り当てられた物理アドレススペースと、仮想アドレススペースとを示すメモリ図を図示する。
図9】非連続的に割り当てられ得る物理アドレススペースと、仮想アドレススペースとを示すメモリ図を図示する。
図10】抽象化メモリプロトコルを用いた仮想アドレススペースにアクセスするプロセスを図示する。
【発明を実施するための形態】
【0008】
以下の詳細な説明において、本明細書の一部を形成する添付の図面が参照され、図面内では、例示として、本開示が実施され得る特定の例示的実施形態が示される。これらの実施形態は、本開示を当業者が実施することが可能なほど十分詳細に記述される。しかしながら、他の実施形態も使用することが出来、構造、材料およびプロセスの変更は、本開示の範囲から逸脱することなく行われることが出来る。本明細書に提示された図示は、任意の特定の方法、システム、デバイスまたは構造の実際の外観を意味するものではなく、本開示の実施形態を記述するために使用される単なる理想化された表現に過ぎない。本明細書に提示された図面は、必ずしも同一の縮尺で描かれるとは限らない。様々な図面における類似の構造またはコンポーネントは、読者の簡便のために、同一または類似の番号を維持することがある。しかしながら、番号の類似性は、構造またはコンポーネントが、サイズ、組成、構成または任意の他の特性において必ずしも同一であることを意味するものではない。
【0009】
素子、回路、モジュールおよび機能は、不必要に詳細にして、本開示を不明瞭にしないように、ブロック図の形式で図示されることがある。さらに、図示され、記述される特定の実装は、単に例示的なものにすぎず、本明細書でそうではないと特定されない限りは、本開示を実現するための唯一の方法として解釈されるべきではない。さらに、様々なブロック間の論理のブロック画定および分画は、特定の実装の例示に過ぎない。本開示は、多くの他の分画方法によって実現できることを当業者は容易に理解するだろう。このような詳細が本開示の完全な理解を得るために必要ではなく、業界における当業者の能力の範囲内である場合に、大部分において、タイミングの考察などに関する詳細などは、省略されることがある。
【0010】
本明細書で開示された実施形態に関連して記述される様々な例示的論理ブロック、モジュール、回路およびアルゴリズムアクトが、電子ハードウェア、コンピュータソフトウェア、または双方の組み合わせとして実装されてもよいことを当業者は理解するだろう。このハードウェアとソフトウェアとの互換性を明瞭に図示するために、様々な例示的コンポーネント、ブロック、モジュール、回路およびアクトは、これらの機能性の観点から一般的に記述される。このような機能がハードウェアまたはソフトウェアとして実装されるか否かは、システム全体に課された特定のアプリケーションおよび設計の制約に依存する。当業者は、各特定のアプリケーションのための様々な方法で、記述された機能を実装することが出来るが、このような実装の決定は、本明細書に記述された実施形態の範囲からの逸脱を引き起こすと解釈されるべきではない。
【0011】
ハードウェアで実装されるとき、本明細書に開示された実施形態は、汎用プロセッサ、専用プロセッサ、デジタル信号プロセッサ(DSP)、プロセッサインメモリ(PIM)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタ論理素子、ディスクリートハードウェアコンポーネント、または本明細書に記述された機能を実施するように設計されたその任意の組み合わせで、実装または実施されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、代替的には、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。本明細書に記述された実施形態のためにプロセスを実行するためのソフトウェアを実行するとき、汎用プロセッサは、このようなプロセスを実行するために構成された専用プロセッサと考えられるべきである。プロセッサは、また、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと組み合わせられた一つ以上のマイクロプロセッサ、または任意の他のこのような構成として実装されてもよい。
【0012】
さらに、実施形態は、フローチャート、フロー図、構造図またはブロック図として図示されたプロセスに関して記述されることがあることに留意されたい。フローチャートは、順次的なプロセスとして動作挙動を記述することがあるが、これらの挙動のうちの多くは、別のシーケンスで、パラレルに、または実質的に同時に実施することが出来る。さらに、挙動の順序は再配列されてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応してもよい。さらに、本明細書に開示された方法は、ハードウェア、ソフトウェア、またはその双方で実装されてもよい。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上の一つ以上の命令またはコードとして格納され、または伝送されることが出来る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含むコンピュータ記憶媒体と通信媒体との双方を含む。
【0013】
情報および信号は、様々な異なる技術および技法のうちの任意のものを用いて表されてもよいことを当業者は理解するだろう。例えば、本記述を通じて参照されることがあるデータ、命令、コマンド、情報、信号、ビット、シンボルおよびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光学場もしくは光子、またはその任意の組み合わせによって表されてもよい。幾つかの図面は、提示と記述を明瞭にするために、単一の信号として複数の信号を図示することがある。信号は、信号を伝送するためのバスを表すことがあり、バスは、様々なビット幅を有することが出来ることを当業者は理解するだろう。
【0014】
“第一(first)”“第二(second)”などの指定を用いる本明細書の要素に対するあらゆる参照は、その限定が明示的にされていない限りは、これらの要素の量または順序を限定するわけではないことを理解するべきである。むしろ、これらの指定は、二つ以上の要素または要素の例の間で区別する簡便な方法として、本明細書で用いられることがある。したがって、第一および第二の要素に対する参照は、そこで二つの要素だけが使用され得ること、第一用要素が何らかの形で第二の要素に対して先行しなければならないことを意味するものではない。さらに、そうでないと言及されない限りは、要素の組は、一つ以上の要素を含んでもよい。
【0015】
本明細書に記述される要素は、同一要素の複数の例を含んでもよい。これらの要素は、数字表示(例えば、110)によって包括的に示されてもよいし、アルファベット表示(例えば、110A)が後に続く数字表示、または、“ダッシュ”によって先行される数字表示(例えば、110−1)によって具体的に示されてもよい。以下の記述を容易にするために、大部分で、要素の番号表示は、その要素が紹介されるか、ほぼ全て議論される図面番号で開始する。したがって、例えば、図1における要素の表示は、ほぼ、数字のフォーマット1XXであるだろうし、図4における要素は、ほぼ、数字のフォーマット4XXであるだろう。
【0016】
本明細書で用いられるように、所定のパラメータ、特性または条件に対する“実質的に(substantially)”という語は、許容可能な製造公差内など、小程度の相違で所定のパラメータ、特性または条件が満たされることを当業者が理解するだろう程度を、意味し、含む。例示として、実質的に満たされる特定のパラメータ、特性または条件によって、そのパラメータ、特性または条件は、少なくとも90%満たされるか、少なくとも95%満たされるか、または少なくとも99%も満たされることもある。
【0017】
本明細書で用いられるように、“の上(over)”“の下(under)”“の上(on)”“の下(underlying)”“より上(upper)”“より下(lower)”等の任意の相対的な語は、本開示と添付の図面を理解するうえでの明瞭性および簡便性のために用いられるものであり、文脈がそうでないと明確に示さない限りは、任意の特定の優先度、方向もしくは順序を含意し、または依存するものではない。
【0018】
ある要素が、別の要素“の上(on)”“に接続される(connected to)”“に結合される(coupled to)”“と結合される(coupled with)”と言及されるときには、その要素は、別の要素の直接上にあるか、接続されるか、もしくは結合されることが出来、または、中間要素が存在してもよいことが理解されるだろう。対照的に、ある要素が、別の要素“の直接上(directly on)”“に直接接続される(directly connected to)”“に直接結合される(directly coupled to)”と言及されるときには、中間要素または中間層は存在しない。本明細書で用いられるように、“および/または(and/or)”という語は、関連付けられて記載された多数の項目のあらゆる組み合わせと全ての組み合わせを含む。
【0019】
本開示は、抽象化メモリプロトコルを用いて再構成可能なメモリスステム内で仮想化された物理アドレスを提供することによって、メモリサブシステムを改良するための方法および装置を記述する。
【0020】
本明細書で用いられるように、“抽象化メモリプロトコル”“抽象化メモリ”および“メモリの抽象化”という語は、クライアント側の要求と、物理メモリデバイスに対する実際のアクセスとの間でのタイミングおよびネーミングのデカップリングを意味する。メモリを読み出すためのタイミング抽象化の限定しない例としては、クライアントは、特定のアドレスに対して、パケット化されたメモリ要求を発行することが出来る。確定できないがその幾らか後で、メモリシステムは、パケット化されたメモリ応答で要求されたデータを供給する。メモリがDRAMである場合、DRAMにおけるタイミングは、所望のデータを得るための、特定の行アドレスストローブ、列アドレスストローブ、読み出し応答時間を含むだろう。したがって、DRAMのタイミングは、クライアントの要求のタイミングから抽象化される。
【0021】
本明細書で用いられるように、“ネーミング(naming)”という語は、メモリの一つ以上の特定の位置のアドレスを指定するためのプロセスまたはデータ構造を意味する。したがって、クライアントによって作成されるネーミングは、プロセッサによって閲覧されるように、特定のメモリ位置を組み合わせる複数のデータ構造を含んでもよい。限定しない例として、クライアントは、特定のデバイスと、そのデバイス内のアドレスとを選択するために、デバイスID番号で特定の位置をアドレス指定することが出来る。別の限定しない例として、クライアントは、ゾーンIDとそのゾーン内のアドレスを有する特定の位置をアドレス指定することが出来る。ゾーンIDおよびデバイスIDに関するさらなる詳細は、以下に議論される。物理メモリデバイスにおけるネーミングは、そのメモリデバイス上のデータの一つ以上の特定の位置を指示する。限定しない一例として、DRAMデバイス上のネーミングは、特定の位置のアドレスを指定するために組み合わせる行アドレスと列アドレスとを含んでもよい。したがって、限定しない具体的な一例として、ネーミング抽象化は、クライアントによって提供されるデバイスIDおよびアドレスと、特定のメモリデバイスにおける行アドレスおよび列アドレスとの間の変換(即ち、デカップリング)を含んでもよい。
【0022】
ネーミングおよびタイミングの抽象化によって、本開示の実施形態は、DRAM以外の様々なメモリおよび記憶デバイスと使用されてもよい。限定しない例として、RAMデバイス、フラッシュメモリおよび記憶デバイス(例えば、ディスクドライブ)もまた使用されてもよい。
【0023】
本開示の実施形態は、抽象化メモリデバイス内で、“保護ゾーン(protection zone)”を画定し、保護ゾーンをサポートするために抽象化メモリプロトコルを拡張する。したがって、抽象化メモリデバイス内に保護ゾーンを有するメモリシステムは、抽象化プロトコルを介して、所定のメモリモジュール(例えば、ハイブリッドメモリキューブ、プロセッサインメモリ(PIM)メモリなど)上で、物理メモリのセグメントをクライアント(例えば、CPU)が割り当てるかまたは割り当てを解除することを可能とする。さらに、保護ゾーンは、メモリデバイス内の仮想物理アドレスを抽象化メモリデバイスが作成することを可能とする。換言すると、クライアントから提示されたアドレスは、保護ゾーンによって規定される抽象化メモリデバイス内の特定の物理アドレスに変換されてもよい。メモリモジュールにおいて規定されたこれらの保護ゾーンは、ソフトウェアレベルの仮想化ではなくむしろ、メモリスペースのハードウェアレベルの仮想化を提供する。さらに、アドレス変換は、メモリシステム中に分散されてもよい。なぜなら、アドレス変換は、クライアント内、またはメモリコントロールハブ内ではなく、メモリモジュールレベルで実施されるからである。
【0024】
本開示によるメモリシステムは、任意の適切な抽象化メモリプロトコルを用いて構成されてもよい。詳述を提供するために、抽象化メモリプロトコルの一例が詳細に定義される。この詳細な記述は、保護ゾーンによって規定される仮想物理アドレスをサポートすることが出来る抽象化メモリプロトコルの限定しない一例として、ハイブリッドメモリキューブ(HMC)プロトコルに焦点をあてる。そして、より一般的なシステムは、他の抽象化メモリプロトコルおよび仮想物理アドレスが、このような一般的システムで如何にして規定することが出来るかを示すために記述される。
【0025】
図1は、クライアント110と通信するための抽象化メモリプロトコル130を用いるメモリバス上で動作するためのデバイスの一例として、ハイブリッドメモリキューブデバイス200を含むデータ処理システム100の図である。記述を容易にするために、この開示は、HMCプロトコルバスに焦点をあてる。しかしながら、本開示の利益を有する当業者が理解するように、本開示の実施形態は、データを保持するデバイスと、データバス上のプロトコルとの間の抽象化を含む他の高速データバスで実施することが出来る。
【0026】
“クライアント”110という語は、DRAMメモリなどのデータを格納するためのデバイスではなく、主にデータのコンシューマおよびジェネレータとして構成されるメモリバス上のデバイスを区別するために本明細書で用いられる。限定しない例として、クライアント110は、例えば、汎用プロセッサ、専用プロセッサ、グラフィックプロセッサ、プロセッサインメモリ、およびデジタル信号プロセッサなどのプロセッサ(本明細書では処理デバイスとも呼ばれる)と考えることが出来る。さらに、クライアント110は、例えば、特定のオペレーティングシステムなどのプロセッサ上で実行するプロセスと考えることが出来る。別の限定しない例として、クライアント110は、通信デバイスと考えることが出来る。例えば、通信型クライアント110は、メモリバスと、例えば、入力/出力(I/O)バスまたはネットワークバスなどの幾つかの他の種類の通信バスとの間でデータを伝送するように構成されてもよい。無論、クライアント110は、また、プロセッサ素子と通信素子との双方を含んでもよい。このように、本明細書の記述は、また、クライアント110をシステムオンチップ(SoC)110と記述してもよい。そうでないと具体的に言及されない限りは、本明細書で呼ばれるSoC110は、クライアント110と等価であると考えられるべきである。最後に、クライアント110は、データを処理または移動することに焦点をあてられていると考えられてもよいが、レジスタ、バッファ、キャッシュ、およびクライアント110の他の種類のローカルメモリの形式で、相当量のメモリを含むこともできる。
【0027】
ハイブリッドメモリキューブデバイス200(HMC200)は、論理ベース400を含み、論理ベース400は、クライアント110とHMC200との間のメモリリンク120を作成するために、抽象化メモリプロトコル130を定義する。パラレルバス410の集合は、論理ベース400とHMC200上のDRAM250のグループとの間をインターフェイスで接続する。HMC200のさらなる詳細は、図2から図4に関連して以下に議論される。
【0028】
メモリリンク120は、クライアント110に向かうアップストリームリンクと、クライアント110から離れるダウンストリームリンクとに区分化される。抽象化メモリプロトコル130の一部として、メモリリンク120は、以下に完全に説明されるようにパケット化される。結果として、メモリリンク120は、本明細書で、パケット化メモリリンク120とも、ハイブリッドメモリキューブリンク120ともよばれる。さらに、メモリリンク120上で伝送されるパケットは、パケット要求およびパケット化要求と呼ばれることがある。
【0029】
図2は、HMC200内のDRAM250の可能な分画を図示する。HMC200は、論理ベース400に結合されたDRAMダイ250の3次元積層と考えることが出来る。論理ベース400は、個別のダイとして構成されてもよく、DRAMダイ250とインターフェイス接続するように構成されてもよい。積層されると、様々なダイの間の相互接続は、シリコンビアを通じて達成されてもよい。これらのデバイスは3次元積層として物理的に構成されてもよいが、そのように構成される必要はなく、相互接続の外観から依然3次元と考えることもできる。
【0030】
図3は、HMC200内のDRAM250の分画の一例の論理図を図示する。図2および図3を参照すると、複数のダイ層の相互接続は、メモリストレージ層と一つ以上の論理層との組み合わせをメモリデバイスが有することを可能とする。この方法では、デバイスは、HMC200として構成された単一のダイパッケージ内の、物理メモリストレージと論理メモリトランザクション処理を提供する。最終結果は、デバイス毎に320GB/秒までの使用可能な帯域幅容量を有する、非常に小型で、電力効率の良いパッケージである。
【0031】
HMC200は、設計に対する階層的でパラレルなアプローチを介して、このような帯域幅を可能とする。例えば、デバイスの階層は、論理層に対して垂直方向に生じることが出来、ハードウェアの平行度は、所定のダイ層にわたって生じることがある。論理ベース400は、内部ルーティングおよびトランザクション論理とともに、HMC200に対する外部リンクアクセスの双方を提供する複数のコンポーネントを含む。
【0032】
HMC200は、“ボールト(vault)”としばしば呼ばれる垂直方向のスライス220に断片化することが出来る。各ボールトは、そのボールトと関連するDRAM250の断片を制御するために、論理ベース400に組み込まれたボールト論理450を含んでもよい。ボールト論理450は、そのボールト内のメモリ区分に対する、メモリ参照動作を管理する。各ボールトコントローラ450は、それ自体のタイミング要求とリフレッシュ動作を決定することが出来、それによって、各ボールトに対して異なるタイミングを可能とし、また、ホストメモリコントローラ内のこれらの機能に対するニーズを排除する。さらに、そのボールトのメモリに対する参照をバッファするために、各ボールトコントローラ450には待ち行列(キュー)が含まれてもよい。ボールトコントローラ450は、到着順序ではなく、ニーズに基づいて、この待ち行列内の参照を実行することが出来る。したがって、外部メモリリンク120(図1)に対するボールト動作からの応答は、幾つかの場合には、順序が違うことがある。
【0033】
メモリリンク120は、4つまたは8つの論理リンクを提供するように構成されてもよい。各メモリリンク120は、16または8つのシリアルおよび双方向I/Oリンクのグループとして構成されてもよい。4つのリンクを有するように構成されたデバイスは、10、12.5および15Gbpsで動作する性能を有する。8つのリンクを有するように構成されたデバイスは、10Gbpsで動作する性能を有する。
【0034】
物理メモリストレージの階層的特性を考えると、HMCデバイスの仕様は、従来のバンクDRAMデバイスとは異なる物理アドレシングとインターリーブモデルを定義する。HMCデバイス200に対する物理アドレスは、ボールト、バンクおよびアドレスビットを含む34ビットのフィールドにエンコードされる。現在の仕様は、フィールドのうちの下位の32ビットを使用するための4つのリンクのデバイスと、フィールドのうちの下位33ビットを使用するための8つのリンクのデバイスとを定義する。単一のアドレシング構造に依存するのではなく、仕様は、対象のメモリアクセス特性に対して最適化されたアドレスマッピングスキームを開発者およびユーザが規定することを可能にする。それは、また、所望の最大ブロック要求サイズに物理的ボールトおよびバンク構造を合わせる、一連のデフォルトアドレスマップモードを提供する。デフォルトのマップスキームは、ボールトアドレスに下位のアドレスビットをマッピングし、その直後に、バンクアドレスビットをマッピングすることによって、低いインターリーブモデルを実装する。この方法は、バンクコンフリクトを回避するために、一連のアドレスを、ボールトにわたってまずインターリーブさせ、その後、ボールト内のバンクにわたってインターリーブさせる。
【0035】
ホストデバイスとHMCデバイス200との間の全ての帯域内通信は、パケット化フォーマットを介して実施される。このフォーマットは、3つの主要なパケット分類である、要求パケット、応答パケットおよびフロー制御パケットを含む。パケットは、単一の16バイトのフローユニット(FLITとも呼ばれる)の倍数として構成されてもよい。パケットサイズは、9FLIT(即ち、144バイト)と同じ大きさであってもよい。最小のパケットは、パケットヘッダおよびパケットテイルを含むただ一つの16バイトのFLITを含んでもよい。
【0036】
すべてのメモリペイロードサイズに対するメモリ読み出し要求パケットは、パケットヘッダ、パケットテイルおよび其々の物理メモリアドレスを要求するだけである。このように、読み出し要求は、単一のFLITを用いて構成されてもよい。メモリ読み出し要求は、対応するメモリ読み出しパケット内で要求されたアドレスにおけるデータを含む個別のパケットである。しかしながら、書き込み要求およびアトミック要求パケットは、其々、書き込みおよび読み出し/修正/書き込み動作のために、関連する入力データを含まなければならない。このように、これらの要求の種類は、2−9FLITのパケット幅を有することがある。HMCデバイスの仕様は、パケット間の弱い順序付けのモデルを規定する。このように、対象実装内に存在する複数のパケット再順序付け点が存在してもよい。補助デバイスが宛先の到着パケットは、ローカルボールトアクセス用に待機するパケットを追い越すことが出来る。ローカルボールトは、また、其々のボールトバンクとやり取りする帯域幅を最も効率的に利用するために、待ち行列型パケットを再順序付けすることが出来る。しかしながら、所定のHMC実装内に存在する再順序付け点は、特定のリンクからボールト内の特定のバンクに、パケットのストリームの順序を維持するように規定されてもよい。この順序付けは、メモリ読み出し要求がその後に続くメモリ書き込み要求が、正確かつ決定的な挙動を果たすことを保証する。
【0037】
HMC200内のリンク構造は、複数のHMC200の連鎖(chaining:チェイニング)を可能とし、リンク構造およびパケット化トランザクションプロトコルを維持しながら、単一のHMC200デバイスよりも大きい容量を必要とするメモリサブシステムの構造を可能とする。連鎖に関するさらなる詳細は、図5を参照して以下に議論される。
【0038】
図4は、論理ベース400を図示し、論理ベース400は、リンクインターフェイス120を作成して、HMC200内のDRAM250(図1から図3)を制御するために使用され得る。アップストリームリンクとダウンストリームリンクとを含むメモリリンク120は、各メモリリンク120に対するリンクインターフェイスコントローラ410によって制御されてもよい。リンクインターフェイスコントローラ410を通過するパケットは、クロスバースイッチ430を通過してもよい。パケットの宛先がHMC200におけるボールトである場合、クロスバースイッチ430は、メモリ制御論理440にパケットを渡すことが出来る。パケットの宛先が別のHMC200である場合、クロスバースイッチ430は、適切なHMC200に送信されるように、適切なリンクインターフェイスコントローラ410にパケットを渡すことが出来る。様々なボールトに対するメモリ制御論理440およびボールト論理450は、適切なボールトおよび選択されたボールトに対する適切なタイミングを選択するために組み合わせられてもよい。
【0039】
図5は、ハイブリッドメモリキューブ(200−0から200−5)の連鎖を図示する。前述されたように、複数のHMCデバイス200は、CPU510に対して使用可能なメモリの総容量を増加させるために、ともに連鎖されてもよい。HMCメモリシステムにおいては、各HMC200は、要求パケットヘッダ内の3ビットチップIDフィールド内の値を通じて同定される。3ビットチップIDフィールドは、また、“CUBフィールド”または“デバイスID”と本明細書で呼ばれることがある。したがって、8つまでのHMCデバイス200のネットワークは、CPU510に対してサポートされることが出来る。
【0040】
HMC200を相互接続するための様々なトポロジーがサポートされ、異なるHMC200に対するルーティングは複雑に成り得、複数の経路を含むことがある。したがって、ホストプロセッサは、ルーティングトポロジーの制御中であり、各HMC200にルーティング構成情報をロードし、そのHMC200のためのものではないパケットが、HMC200における他のリンクに如何にしてルーティングされるべきかを判定する。このルーティング情報は、適切な宛先に要求パケットをルーティングするために、各HMC200がCUBフィールドを使用することを可能とする。結果として、自体が宛先とされていないパケットをHMC200が処理するとき、HMC200は連鎖し、別のHMC200に送信されるべき、HMC200における別のリンクへとパケットを通過させる。
【0041】
例えば、図5において、CPU510が5のCUBフィールドで要求パケットを送信する場合、第一のHMC200−1は、第四のHMC200−4に要求パケットを渡すだろう。第四のHMC200−4は、要求パケットを使用可能にする第五のHMC200−5に要求パケットを渡すだろう。応答パケットは、同一の連鎖経路を辿ってCPU510に至る。
【0042】
図6は、本開示の実施形態による、抽象化メモリにおける抽象化メモリプロトコルと仮想メモリ割り当てを利用するシステムを図示する。複数のクライアント(610Aから610C)は、抽象化メモリシステム相互接続620に対するアクセスを有する。システム相互接続620は、多くの異なる種類の複雑なトポロジーにおいて、任意の数の抽象化メモリモジュール700を含んでもよい。パケット化メモリ要求を使用する抽象化メモリプロトコルは、図5を参照して上述された、より単純なHMCトポロジーと類似の方法で、連鎖法およびデバイスIDを用いて、これらの複雑なトポロジーを作成することが出来る。このようなシステムにおいては、要求パケットが、自体を宛先とされるか、または抽象化メモリモジュール700にプログラムされた連鎖方向に基づいて、別の抽象化メモリモジュール700に渡されるべきかを全ての抽象化メモリモジュール700が、わかるように、要求パケットは、それに含まれるデバイスIDを有する。したがって、デバイスIDは、要求パケット内のアドレスと共に、クライアント(610Aから610C)によって要求されたアドレスの一部と考えることが出来る。
【0043】
各抽象化メモリモジュール700は、メモリ抽象化ユニットと、一つ以上のメモリデバイスとを含む。二つの抽象化メモリモジュール700−1および700−2に対して、拡大図が図示される。限定しない例として、これらの拡大図は、各抽象化メモリモジュール(700−1および700−2)のアドレススペース内に、4つの保護ゾーンを示す。無論、抽象化メモリモジュール700内に、より多くの保護ゾーンが規定されてもよいし、または、抽象化メモリモジュールは、単一の保護ゾーンを含んでもよい。
【0044】
抽象化メモリモジュール700―2を検討すると、二つの上部保護ゾーンが、クライアントB610Bに割り当てられたことが分かる。左下保護ゾーンは、クライアントC610Cに割り当てられ、右下保護ゾーンはクライアントA610Aに割り当てられた。抽象化メモリモジュール700−1を検討すると、左上および右下の保護ゾーンはクライアントA610Aに割り当てられたことが分かる。左下保護ゾーンは、クライアントC610Cに割り当てられ、右上保護ゾーンは割り当てられなかった。
【0045】
図7は、本開示の実施形態による抽象化メモリモジュール700のブロック図を図示する。抽象化メモリモジュール700は、メモリ抽象化ユニット740と、一つ以上のメモリデバイスと(730−1から730−3)を含む。抽象化メモリモジュール700内のメモリデバイス730の数は、数十分の1からそれ以上に、大きく変化することが出来る。図示されるように、抽象化メモリモジュール700は、パケット化メモリリンクとして構成されることが出来る、一つ以上のメモリリンク720を含む。抽象化メモリモジュール700が、(例えば、HMCプロトコルに類似して)連鎖およびパケット通過をサポートするように構成される場合、抽象化メモリモジュール700は、二以上のメモリリンク720を一般的に有するだろう。複数のクライアント710および複数の抽象化メモリモジュール700を含む様々な複雑性を有するネットワークを生成するために、メモリリンク720は、クライアント710、または他の抽象化メモリモジュール700に結合されてもよい。
【0046】
抽象化メモリプロトコル論理750は、メモリリンク720から受信されたメモリ要求パケットを解釈し、応答パケットを生成する。複数のメモリリンク720が存在する場合、受信されたパケットがこの特定の抽象化メモリモジュール700のためのものであるか否か、または別のメモリリンク720に転送されるべきか否かを判定するために、リンクルーティングモジュール760が含まれてもよく、メモリ要求が、別の抽象化メモリモジュール700によって取り扱われるようにする。
【0047】
メモリ要求が抽象化メモリモジュール700のためのものである場合、その要求は、メモリ要求によってアドレス指定されるべき特定のメモリデバイス(730−1から730−3)にアクセスするための信号を生成する、メモリ制御論理770にルーティングされる。
【0048】
マッピング論理780は、要求パケット内のクライアント710によって規定されるアドレスと、メモリデバイス(730−1から730−3)内の物理アドレスからの変換を作成するために含まれる。マッピング論理780は、実際の仮想アドレスの物理アドレスへの変換を作成するための多数の方法で構成されてもよい。
【0049】
限定しない一例として、変換テーブル782は、ページテーブルにアドレスを作成するために、仮想アドレスの一部(例えば、メモリ要求内の上位アドレスビットの幾つかから派生されるキー)を取得するためのページテーブルを含んでもよく、ページテーブルは、メモリ用の上位物理アドレスを作成する。したがって、ページテーブルは、保護ゾーンのベース位置を作成する。この状況においては、メモリ要求内の下位アドレスビットは、保護ゾーン内の適切なアドレスを選択するために使用されるだろう。
【0050】
別の限定しない例として、変換テーブル782は、例えば、保護ゾーンのベース位置を規定するためのベースレジスタおよび保護ゾーンのサイズを規定するためのバウンドレジスタなどのレジスタで達成することが出来る。この状況においては、パケット要求は、適切なベースレジスタを選択するゾーンIDを含んでもよく、それによって、物理アドレスの上位アドレスビットと、保護ゾーン内の全てのメモリ位置をアドレス指定するために、バウンドレジスタによって規定されるであろうビット幅を有するアドレスフィールドと、を規定することが出来る。
【0051】
HMCデバイスを用いるシステムにおいては、保護ゾーンは、上記で説明されたように、HMCデバイス内で既に規定されたボールトに基づいてもよい。ボールトの物理位置とサイズは、HMCデバイスによって既に規定され、ボールトは、割り当てを要求するクライアントに割り当てられ、結び付けられなければならないだけである。
【0052】
ゾーン許可論理790は、どのクライアント710が、任意の特定のゾーンへのアクセスを有するかを規定するために含まれてもよい。ゾーン許可論理790は、また、以下により完全に議論されるように、様々なクライアント710に様々な可能性のある保護ゾーンを割り当てるために、マッピング論理780と組み合わせて使用されてもよい。
【0053】
保護ゾーンの割り当ては、クライアントに対して様々な種類の仮想メモリ環境を作成することが出来る。幾つかのマッピングにおいては、クライアント710のための仮想アドレススペースは、アドレススペースのベースとアドレススペースの上部との間で、穴がなく、連続的であるように見えることがある。他のマッピングにおいては、クライアント710のための仮想アドレススペースは、不連続(即ち、断片化されている)に見えることがある。この断片化された構成においては、クライアント710は、それに割り当てられた様々なゾーンIDおよびそのゾーン内のアドレスのアドレス指定だけすることを知ることが出来る。
【0054】
要約すると、幾つかの実施形態においては、装置は、一つ以上のクライアントからのメモリ要求のタイミングおよびネーミングを、一つ以上のメモリデバイスにおけるタイミングおよびネーミングに抽象化するためのメモリ抽象化ユニットを含む。メモリ抽象化ユニットは、一つ以上のクライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理を含む。メモリ抽象化ユニットは、また、一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンで、要求するクライアントによるメモリアクセス要求によって規定されたネーミングを、仮想物理アドレスに変換するためのマッピング論理もまた含む。メモリ抽象化ユニットは、また、仮想物理アドレスで、一つ以上のメモリデバイスにアクセスするためのメモリ制御論理を含む。また、装置においては、選択された保護ゾーンは、既に規定され、メモリ抽象化ユニットによって、要求するクライアントに割り当てられる。
【0055】
他の実施形態においては、ハイブリッドメモリキューブは、複数のメモリデバイスと論理ベースとを含む。論理ベースは、パケット化メモリ要求を解釈するように構成された一つ以上のリンクインターフェイスコントローラと、パケット化メモリ要求内で提供されたアドレスを、複数のメモリデバイスのうちの一つ以上での仮想物理アドレスに変換するように構成されたマッピング論理とを含み、仮想物理アドレスは、予め規定された保護ゾーンに属する。論理ベースは、また、仮想物理アドレスを有する複数のメモリデバイスのうちの一つ以上にアクセスするように構成されたメモリ制御論理を含む。
【0056】
他の実施形態においては、システムは、一つ以上のクライアントと、一つ以上の抽象化メモリモジュールとを含む。各抽象化メモリモジュールは、一つ以上のメモリデバイスと、抽象化メモリプロトコル論理とを含む。抽象化メモリプロトコル論理は、一つ以上のクライアントからのメモリ要求を解釈するためのものであり、抽象化メモリモジュールに関連する一つ以上のメモリデバイスを宛先にしたメモリ要求を処理するためのものである。抽象化メモリプロトコル論理は、また、その抽象化メモリモジュールが宛先にされていないメモリ要求を、別の抽象化メモリモジュールに渡すためのものでもある。各抽象化メモリモジュールは、また、一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、要求するクライアントによるメモリアクセス要求によって規定されるアドレスを変換するためのマッピング論理をも含む。各抽象化メモリモジュールは、また、仮想物理アドレスにおける一つ以上のメモリデバイスの少なくとも一つにアクセスするためのメモリ制御論理をも含む。
【0057】
図8は、連続的に割り当てられる物理アドレススペース820と仮想アドレススペース(830および840)を示すメモリ図を図示する。この高度に仮想化されたマッピングにおいては、仮想アドレススペース(830および840)は、保護ゾーンがいくつ割り当てられたかに基づいて、一般的にゼロから開始し、最大アドレスまで連続的に増える。より多くのゾーンが割り当てられると、それらは、アドレススペースの上部に一般的に加えられる。限定しない例として、この種類のマッピングは、仮想ソフトウェアマシンで有用とすることが出来る。例えば、複数のオペレーティングシステムは、単一のクライアント上で実行する。オペレーティングシステムは、あるソフトウェア素子が特定のアドレスに現れることを予測することが出来る。したがって、仮想ソフトウェア環境において実行するオペレーティングシステムは、ゼロから開始し、連続的に構築する仮想アドレスを有することが出来る。
【0058】
図8は、第一のクライアント810Aおよび第二のクライアント810Bを図示する。双方のクライアント(810Aおよび810B)は、同一の物理メモリ820にアクセスしている。物理メモリ820は、様々なサイズの物理保護ゾーン(820−1から820−6)に分割される。第一のクライアント810Aは、4つの仮想保護ゾーン(830−1から830−4)を割り当てられ、連続的仮想メモリスペース830を作成する。また図7を参照すると、一つ以上の抽象化メモリモジュール700内のマッピング論理780は、仮想保護ゾーン830−1を物理保護ゾーン820−1にマッピングする。同様に、仮想保護ゾーン830−2は、物理保護ゾーン820−5にマッピングされ、仮想保護ゾーン830−3は、物理保護ゾーン820−3にマッピングされ、仮想保護ゾーン830−4は、物理保護ゾーン820−6にマッピングされる。
【0059】
第二のクライアント810Bは、二つの仮想保護ゾーン(840−1および840−2)を割り当てられ、連続的仮想メモリスペース840を作成する。図7をまた参照すると、一つ以上の抽象化メモリモジュール700内のマッピング論理780は、物理保護ゾーン820−2に仮想保護ゾーン840−1をマッピングする。同様に、仮想保護ゾーン840−2は、物理保護ゾーン820−4にマッピングされる。
【0060】
無論、複雑なシステムにおいては、物理アドレススペースは、非常に大きくなることがあり、数百もの保護ゾーンを含むことがある。さらに、複雑なシステムは、非常に大きな仮想アドレススペースを有する多くのクライアントを含むことがある。
【0061】
したがって、メモリシステムは、物理メモリアドレススペースと、一つ以上の仮想メモリアドレススペースとを規定する複数のメモリデバイスを含む。各仮想メモリアドレススペースは、連続的な仮想アドレススペースを形成するために、複数の仮想保護ゾーンを含み、各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる。
【0062】
図9は、不連続に(即ち、断片化されて)割り当てられ得る物理アドレススペース920および仮想アドレススペース(930および940)を示すメモリ図を図示する。非常に大きいアドレススペース(例えば、64ビットのアドレスシステム)と、プロセッサおよび/または高度に分割されたアドレススペース内で動作することが出来る仮想クライアントを有するシステムにおいては、アドレス変換を実施する必要がない。このようなシステムにおいては、クライアントが見る仮想アドレススペース(930および940)は、断片化されたように見えることがある。しかしながら、保護ゾーンは、図8の実施形態と同様に依然割り当てられ、保護されてもよいが、アドレス変換の必要はない。図9の実施形態は、アドレススペースのうちの一セグメントから別のセグメントにオーバーランすることによって、多くのセキュリティの脆弱性(およびプログラムバグ)が生成し得るとき、さらなるセキュリティを潜在的に提供することが出来る。異なるメモリ部分からセグメントを割り当てる複数のクライアントによって自然に作製される“穴”は、クライアントが自身に割り当てられなかった保護ゾーンにアクセスを試みる場合には、例外の原因となることがある。
【0063】
図9は、第一のクライアント910Aおよび第二のクライアント910Bを図示する。双方のクライアント(910Aおよび910B)は、同一の物理メモリ920にアクセスしている。物理メモリ920は、様々なサイズの物理保護ゾーン(920−1から920−6)に分割される。第一のクライアント910Aは、3つの仮想保護ゾーン(930−1から930−3)を割り当てられ、断片化された仮想メモリスペース930を作成する。図7をまた参照すると、一つ以上の抽象化メモリモジュール700内のマッピング論理780は、仮想保護ゾーン930−1を物理保護ゾーン920−1にマッピングされる。同様に、仮想保護ゾーン930−2は、物理保護ゾーン920−5にマッピングされ、仮想保護ゾーン930−3は、物理保護ゾーン920−6にマッピングされる。
【0064】
第二のクライアント910Bは、二つの保護ゾーン(940−1および940−2)を割り当てられ、断片化された仮想メモリスペース940を作成する。図7をまた参照すると、一つ以上の抽象化メモリモジュール700内のマッピング論理780は、物理保護ゾーン920−2に仮想保護ゾーン940−1をマッピングする。同様に、仮想保護ゾーン940−2は、物理保護ゾーン920−4にマッピングされる。物理保護ゾーン920−3は、クライアントに未だ割り当てられていないため、使用可能な保護ゾーンである。
【0065】
無論、複雑なシステムにおいては、物理アドレススペースは、非常に大きくなることがあり、数百もの保護ゾーンを含むことがある。さらに、複雑なシステムは、非常に大きな仮想アドレススペースを有する多くのクライアントを含むことがある。
【0066】
したがって、メモリシステムは、物理メモリアドレススペースと、一つ以上の仮想メモリアドレススペースとを規定する複数のメモリデバイスを含む。各仮想メモリアドレススペースは、断片化された仮想アドレススペースを形成するために、複数の仮想保護ゾーンを含み、各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる。
【0067】
図10は、抽象化メモリプロトコル内の保護ゾーンを利用する仮想アドレススペースにアクセスするプロセスを図示する。動作1010において、クライアントは、仮想位置を要求する。限定しない例として、この要求は、適切な抽象化メモリモジュール700(図7)を選択するためのデバイスIDと、抽象化メモリモジュール700上で選択された保護ゾーンを規定するためのゾーンIDと、保護ゾーン内のアドレスとによって規定されるネームであってもよい。動作1020において、適切な抽象化メモリモジュール700上のマッピング論理780(図7)は、物理アドレス位置に対する要求におけるネームを変換する。さらに、この要求は、どのクライアントがその要求を作成したかを示すクライアントIDを含んでもよく、ゾーン許可論理790(図7)は、物理保護ゾーンにアクセスするための許可をクライアントが有することをベリファイしてもよい。ルックアップが失敗するか、またはクライアントが許可を有していない場合、動作ブロック1050は、要求するクライアントにエラーが報告されることを示す。ルックアップが成功し、クライアントが許可を有する場合、物理メモリアドレススペース1030内の物理保護ゾーン1040は、アクセスすることが出来る。
【0068】
保護ゾーンは、多数の異なる方法で割り当てられてもよい。限定しない例として、クライアントは、特定の抽象化メモリモジュール700(図7)に保護ゾーンを割り当てるための要求を送信することが出来る。幾つかの実施形態においては、クライアントは、また、要求された保護ゾーンに対する特定のサイズを要求してもよい。他の実施形態においては、サイズが要求されなくてもよく、抽象化メモリモジュール700は、保護ゾーンのサイズを規定してもよい。抽象化メモリモジュール700が利用可能な保護ゾーンを有する場合、要求するクライアントに保護ゾーンを割り当てて、ゾーンIDを有するクライアントに割り当てを報告することが出来る。幾つかの実施形態においては、抽象化メモリモジュール700は、クライアントIDを有する要求するクライアントの追跡を維持することが出来るので、その保護ゾーンに対するその後のアクセスが、その保護ゾーンへのアクセスに対する許可を有するクライアントからのものであることをベリファイすることが出来る。この方法では、同一の保護ゾーンに対するアクセスを複数のクライアントが与えられることが出来、各クライアントは、物理アドレス変換に対する異なる仮想アドレスを有することが出来る。
【0069】
あるいは、クライアントは、特定の抽象化メモリモジュール700から保護ゾーンを要求するのではなく、クライアントは、一般的な割り当て要求を送信してもよい。この一般的な割り当て要求は、割り当てるためのフリーの保護ゾーンを有する第一のモジュールを発見するために、抽象化メモリモジュール700のネットワークを通じて連鎖アルゴリズムに従う。
【0070】
別の割り当てプロセスにおいては、クライアントは、抽象化メモリモジュール700内のパブリックテーブルを読み出すことが出来、保護ゾーン(例えば、固定数の可変サイズセグメントまたは固定数のページ状構造)用のフリースペースをモジュールが有するか否かを判定する。クライアントは、また、プロトコルの一部として、抽象化メモリモジュール700に問い合わせを行うことが出来る。例えば、クライアントは、“私にXGバイトを割り当ててください”等のような要求を送信することが出来、それは、成功するかまたは失敗する。あるいは、クライアントは、“XGバイト持っていますか?”などの二つの問い合わせへと、問い合わせを分割することが出来、答えが「はい」の場合には、クライアントは、そのクライアントにXGバイトの保護ゾーンを与えるための要求を後に行うことが出来る。
【0071】
割り当て要求の成功に応じて、抽象化メモリモジュール700は、“メモリのこのブロックは、現在、アドレスX−Yを有するゾーンAに属する”などの応答パケットを作成することが出来、ここで、AはキーまたはゾーンIDであり、X−Yは、新規の物理メモリアドレスを記述する。
【0072】
ゾーン許可論理790(図7)は、他の許可フィールド(例えば、読み出しアクセスまたは書き込みアクセス)を含んでもよく、他の許可フィールドは、共有データベースを可能とするためのセグメント毎/ID毎に可能とすることが出来る。
【0073】
各クライアントは、どの保護ゾーンが自身に割り当てられたことに気がつく。クライアントがその保護ゾーンをもう必要としない場合、割り当て解除要求を送信することが出来る。抽象化メモリモジュール700は、割り当て解除要求を承認して、割り当てられた保護ゾーンをマッピング論理から除去することが出来る。
【0074】
したがって、メモリにアクセスする方法は、抽象化メモリプロトコルでメモリアクセス要求を作成することと、抽象化メモリモジュールでメモリアクセス要求を承認することとを含む。この方法は、また、抽象化メモリモジュールと関連する一つ以上のメモリデバイスにおいて選択された保護ゾーンにおける仮想物理アドレスに、メモリアクセス要求によって規定されたネーミングを変換することと、仮想物理アドレスにおける一つ以上のメモリデバイスにアクセスすることとを含む。
【0075】
本開示の実施形態は、限定することなく、以下に説明されるように更に特徴づけることが出来る。
【0076】
実施形態1。一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、
一つ以上のクライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理と、
一つ以上のメモリデバイスの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、一つ以上のクライアントのうちの要求するクライアントによるメモリアクセス要求のネーミングを変換するためのマッピング論理と、
仮想物理アドレスにおける一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含むメモリ抽象化ユニットを含む装置であって、
選択された保護ゾーンは、予め規定され、メモリ抽象化ユニットによって要求するクライアントに割り当てられたものである、装置。
【0077】
実施形態2。メモリ抽象化ユニットは、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有するときに、メモリアクセス要求を完了することを可能にするように構成され、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有していないときに、エラーを報告するように構成されたメモリ抽象化ユニット内のゾーン許可論理をさらに含む、実施形態1の装置。
【0078】
実施形態3。ゾーン許可論理は、メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えるようにさらに構成される、実施形態2の装置。
【0079】
実施形態4。メモリ抽象化ユニットは、メモリアクセス要求内で提供されたアドレスが選択された保護ゾーン内にあるときにメモリアクセス要求を完了することを可能するように構成され、メモリアクセス要求内で提供されたアドレスが、規定されたどの保護ゾーン内にもない場合にエラーを報告するように構成されたメモリ抽象化ユニット内のゾーン許可論理をさらに含む、実施形態1の装置。
【0080】
実施形態5。マッピング論理は、
一つ以上のクライアントのうちの割り当てを要求するクライアントからの割り当て要求を承認することと、
一つ以上のメモリデバイスのうちのメモリデバイスにおいて使用可能な保護ゾーンを判定することと、
割り当てを要求するクライアントに使用可能な保護ゾーンを割り当てることと、
割り当てを要求するクライアントに、割り当てられた保護ゾーンの位置を報告することとのためにさらに構成される、実施形態1から実施形態4のうちのいずれかによる装置。
【0081】
実施形態6。マッピング論理は、
割り当てを要求するクライアントからの割り当て解除要求を承認することと、
割り当てられた保護ゾーンをマッピング論理から除去することとのためにさらに構成される、実施形態5の装置。
【0082】
実施形態7。割り当てを要求するクライアントからの割り当て要求を承認することは、要求されたサイズを承認することを含み、使用可能な保護ゾーンを割り当てることは、要求されたサイズで使用可能な保護ゾーンを割り当てることを含む、実施形態5の装置。
【0083】
実施形態8。抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用するメモリアクセスを解釈するために構成される、実施形態1から実施形態7のうちのいずれかによる装置。
【0084】
実施形態9。保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、実施形態8の装置。
【0085】
実施形態10。マッピング論理は、要求するクライアントからのネーミングを、アクセスされるべき一つ以上のメモリデバイスのうちのメモリデバイスに対するネーミングに変換するためのアドレス変換テーブルを含む、実施形態1から実施形態9のいずれかによる装置。
【0086】
実施形態11。マッピング論理は、メモリ内で割り当てられた各保護ゾーンの位置とサイズを規定するためのベースレジスタとバウンダリレジスタとを含む、実施形態1から実施形態9のいずれかによる装置。
【0087】
実施形態12。メモリアクセス要求は、要求するクライアントに対するクライアントIDを含み、クライアントIDが選択された保護ゾーンに対する許可を有していない場合には、メモリ制御論理は、仮想物理アドレスにアクセスしない、実施形態1から実施形態11のうちのいずれかによる装置。
【0088】
実施形態13。メモリアクセス要求によって規定されたアドレスはゾーンIDを含み、選択された保護ゾーン内のアドレスとマッピング論理は、ゾーンIDに応じて、仮想物理アドレスの少なくとも一部を作成する、実施形態1から実施形態11のうちのいずれかによる装置。
【0089】
実施形態14。
複数のメモリデバイスと、
パケット化メモリ要求を解釈するように構成された一つ以上のリンクインターフェイスコントローラと、
複数のメモリデバイスのうちの一つ以上の仮想物理アドレスに、パケット化メモリ要求内で提供されたアドレスを変換するように構成されたマッピング論理であって、仮想物理アドレスは予め規定された保護ゾーンに属する、マッピング論理と、
仮想物理アドレスで複数のメモリデバイスのうちの一つ以上にアクセスするように構成されたメモリ制御論理と、
を含む論理ベースと、
を含むハイブリッドメモリキューブ。
【0090】
実施形態15。論理ベースは、パケット化メモリ要求内に提供されたアドレスが予め規定された保護ゾーン内にあるときに、パケット化メモリ要求を完了することを可能にするように構成され、パケット化メモリ要求内で提供されたアドレスが規定されたどの保護ゾーン内にもないときにエラーを報告するように構成されたゾーン許可論理をさらに含む、実施形態14のハイブリッドメモリキューブ。
【0091】
実施形態16。予め規定された保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、実施形態14および実施形態15のうちのいずれかによるハイブリッドメモリキューブ。
【0092】
実施形態17。マッピング論理は、
割り当てを要求するクライアントからの割り当て要求を承認することと、
複数のメモリデバイスのうちの一つ以上のメモリデバイス内で使用可能な保護ゾーンを判定することと、
割り当てを要求するクライアントに、使用可能な保護ゾーンを割り当てることと、
割り当てを要求するクライアントに、割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
実施形態14から実施形態16のうちのいずれかによるハイブリッドメモリキューブ。
【0093】
実施形態18。マッピング論理は、
割り当てを要求するクライアントからの割り当て解除要求を承認することと、
割り当てられた保護ゾーンをマッピング論理から除去することと、
のためにさらに構成される、実施形態17のハイブリッドメモリキューブ。
【0094】
実施形態19。割り当てを要求するクライアントからの割り当て要求を承認することは、要求されたサイズを承認することを含み、使用可能な保護ゾーンを割り当てることは、要求されたサイズで使用可能な保護ゾーンを割り当てることを含む、実施形態17のハイブリッドメモリキューブ。
【0095】
実施形態20。
一つ以上の抽象化メモリモジュールであって、各抽象化メモリモジュールは、
一つ以上のメモリデバイスと、
一つ以上のクライアントからのメモリ要求を解釈することと、
抽象化メモリモジュールに関連する一つ以上のメモリデバイスを宛先とされたメモリ要求を処理することと、
抽象化メモリモジュールを宛先とされていないメモリ要求を、別の抽象化メモリモジュールに渡すことと
のための抽象化メモリプロトコル論理と、
一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、一つ以上のクライアントのうちの要求するクライアントによるメモリアクセス要求によって規定されたアドレスを変換するためのマッピング論理と、
仮想物理アドレスにおける一つ以上のメモリデバイスのうちの少なくとも一つにアクセスするためのメモリ制御論理と、
を含む、抽象化メモリモジュールを含むシステム。
【0096】
実施形態21。一つ以上の抽象化メモリモジュールの各々がモジュールIDをさらに含み、メモリ要求は、一つ以上のメモリモジュールの抽象化メモリモジュールがアドレスを使用するためのものであることを同定するモジュールIDを含む、実施形態20のシステム。
【0097】
実施形態22。メモリアクセス要求によって規定されたアドレスは、ゾーンIDと、選択された保護ゾーン内のアドレスとを含み、マッピング論理は、ゾーンIDに応じて、仮想物理アドレスの少なくとも一部を作成する、実施形態20および実施形態21のうちのいずれかによるシステム。
【0098】
実施形態23。一つ以上の抽象化メモリモジュールは、ハイブリッドメモリキューブを含む、実施形態20から実施形態22のうちのいずれかによるシステム。
【0099】
実施形態24。
物理メモリアドレススペースを規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレススペースであって、各仮想メモリアドレススペースは連続的仮想アドレススペースを形成するための複数の仮想保護ゾーンを含む、仮想メモリアドレススペースと、を含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる、メモリシステム。
【0100】
実施形態25。物理保護ゾーンは、抽象化メモリモジュールによって、選択された保護ゾーンにアクセスするための許可を与えられた要求するクライアントによってのみアクセス可能である、実施形態24のメモリシステム。
【0101】
実施形態26。少なくとも一つの物理保護ゾーンは、二つ以上の仮想メモリアドレススペースのうちの少なくとも二つにおける仮想保護ゾーンにマッピングされる、実施形態24および実施形態25のうちのいずれかによるメモリシステム。
【0102】
実施形態27。
物理メモリアドレススペースを規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレススペースであって、各仮想メモリアドレススペースは、断片化された仮想アドレススペースを形成するための複数の仮想保護ゾーンを含む、仮想メモリアドレススペースと、
を含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる、メモリシステム。
【0103】
実施形態28。物理保護ゾーンは、抽象化メモリモジュールによって、選択された保護ゾーンにアクセスするための許可を与えられた要求するクライアントによってのみアクセス可能である、実施形態27のメモリシステム。
【0104】
実施形態29。少なくとも一つの物理保護ゾーンは、二つ以上の仮想メモリアドレススペースのうちの少なくとも二つにおける仮想保護ゾーンにマッピングされる、実施形態27および実施形態28のうちのいずれかのメモリシステム。
【0105】
実施形態30。
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールでメモリアクセス要求を承認することと、
メモリアクセス要求によって規定されるネーミングを、抽象化メモリモジュールに関連する一つ以上のメモリデバイス内の選択された保護ゾーンにおける仮想物理アドレスに変換することと、
仮想物理アドレスで一つ以上のメモリデバイスにアクセスすることと、
を含む、メモリにアクセスする方法。
【0106】
実施形態31。メモリ要求を作成した要求するクライアントが、選択された保護ゾーンにアクセスするための許可を有しているときに、メモリアクセス要求を完了することを可能にすることと、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、実施形態30の方法。
【0107】
実施形態32。メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、実施形態30および実施形態31のうちのいずれかによる方法。
【0108】
実施形態33。メモリアクセス要求内で提供されたアドレスが選択された保護ゾーン内にあるときに、メモリアクセス要求を完了することを可能にすることと、メモリアクセス要求内で提供されたアドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告することとをさらに含む、実施形態30の方法。
【0109】
上述され、添付の図面に図示された本開示の実施形態は、本発明の範囲を限定するものではない。なぜなら、これらの実施形態は本開示の実施形態の単なる例に過ぎないからである。本発明は、添付の請求項とその法的均等物によって定義される。あらゆる均等な実施形態は、本開示の範囲内にある。実際に、本明細書に図示され記述された実施形態に加えて、記述された要素の代替的な有用な組み合わせなど、本開示の様々な改変は、この記述から当業者に明らかとなるだろう。このような改変および実施形態は、また、添付の請求項とその法的均等物の範囲内にある。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10