JP2017515238A - 再構成可能なメモリシステムのための仮想化された物理アドレス - Google Patents

再構成可能なメモリシステムのための仮想化された物理アドレス Download PDF

Info

Publication number
JP2017515238A
JP2017515238A JP2016566610A JP2016566610A JP2017515238A JP 2017515238 A JP2017515238 A JP 2017515238A JP 2016566610 A JP2016566610 A JP 2016566610A JP 2016566610 A JP2016566610 A JP 2016566610A JP 2017515238 A JP2017515238 A JP 2017515238A
Authority
JP
Japan
Prior art keywords
memory
zone
address
logic
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016566610A
Other languages
English (en)
Other versions
JP6201065B2 (ja
Inventor
シー. マーフィー,リチャード
シー. マーフィー,リチャード
ラブリー,ジョン
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2017515238A publication Critical patent/JP2017515238A/ja
Application granted granted Critical
Publication of JP6201065B2 publication Critical patent/JP6201065B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

システムと方法は、抽象化メモリモジュールでのメモリアドレス要求の仮想物理マッピングを可能とする抽象化メモリプロトコルを用いるメモリシステムを規定する。メモリ抽象化ユニットは、一つ以上のクライアントからのメモリのタイミングおよびネーミングを、一つ以上のメモリデバイスにおけるタイミングおよびネーミングに抽象化する。メモリ抽象化ユニットは、クライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理を含む。メモリ抽象化ユニットは、また、要求するクライアントによるメモリアクセス要求によって規定されるネーミングを、少なくとも一つのメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、仮想物理アドレスにおけるメモリデバイスにアクセスするためのメモリ制御論理とを含む。【選択図】図7

Description

[優先権主張]
本出願は、2014年5月9日に出願された米国仮特許出願整理番号14/274,195の“Virtualized Physical Addresses for Reconfigurable Memory Systems”の出願日の利益を享受する権利を主張する。
本開示は、概して、仮想メモリマッピングに関する。より詳細には、本開示は、メモリ抽象化プロトコルを用いて再構成可能なメモリシステムにおける仮想メモリマッピングに関する。
メモリデバイスは、典型的には、コンピュータまたは他の電子デバイスにおける半導体集積回路および/または外部リムーバブルデバイスとして、多くのデータ処理システム内で提供される。とりわけ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、同期式DRAM(SDRAM)、フラッシュメモリおよび抵抗可変メモリを含む多くの様々な種類のメモリが存在する。
従来のメモリシステムは、デュアル・インライン・メモリモジュール(DIMM)と呼ばれる、プリント回路基板(PCB)上にマウントされたDRAMなどの一つ以上のメモリデバイスで典型的に構成される。メモリシステムは、メモリ制御サブシステムまたは中央処理装置(CPU)またはマイクロプロセッサと通信する。幾つかの構成においては、メモリコントローラは、プロセッサと同一の物理チップに物理的に組み込まれる。他の構成においては、メモリコントローラは、メモリコントローラハブ(MCH)を含む多くの論理コンポーネントのうちの唯一つにすぎないことがある。メモリコントローラハブは、しばしば様々な種類の半導体メモリを用いて、または様々な目的で、完全に分離された、個別のメモリアドレススペースを典型的にサポートする。例えば、メモリコントローラは、グラフィックアプリケーション用のビデオDRAM、ディスクドライブ加速用のフラッシュメモリ、プロセッサのメイン外部メモリとしてのDRAM製品の利用をサポートすることが出来る。
多くのコンピュータシステムは、特定のプロセッサ、特定のプロセスおよびその組み合わせに割り当てられた仮想メモリを作成するように構成される。マシン仮想化(例えば、“ハイパーバイザ”)を提供するための現在のソフトウェアベースの機構は、様々なオペレーティングシステムの中でも、マシンリソースを分割するための比較的セキュリティの低い機構を提供する。幾つかのハイパーバイザは、IBMメインフレーム内で最も特に顕著であるが、これらの機構の幾つかに対するハードウェアエンフォースメントをもたらす。x86アーキテクチャでさえも、命令のプリビレッジを記述するためにCPUリングを含む。VMWAREのような幾つかのソフトウェアハイパーバイザは、これらのリングに構築することが出来る。幾つかのマシンは、単一の大規模対称型マルチプロセッサ(SMP)または大規模分散システム内にハードウェア“ドメイン”を提供することが出来、同一のハードウェアプラットフォーム上でオペレーティングシステムの複数のインスタンスを実行することが出来、ドメイン間の干渉からのハードウェア保護を提供することが出来る。これらの種類のシステムは、しかしながら、ボードレベルにおけるリソースのドメインレベルの割り当てのみを可能とされる。ハードウェアレベルにおける再構成は、典型的にはコースグレーン(coarse−grain)(例えば、プロセッサとメモリリソースの双方を、一緒に割り当てることを必要とする)である。ソフトウェアレベルにおける再構成は、典型的にはファイングレーン(fine−grain)であるが、強制力は小さい。
現在、データセンター内の“分離(disaggregation)”に向かう業界の傾向が存在し、プロセッサ、メモリおよびストレージリソースは、物理ユニット(典型的には“スレッド”と呼ばれる)内に割り当てられ、データセンタースケールのネットワークを介して相互接続される。これらのリソースは、リソース、レイテンシーおよび典型的なネットワークプロトコル、しばしばTCP/IPを介したスループットの点で、アクセスのコストが高い。メモリリソースがプロセッサリソースと共に割り当てられる必要がないという点で(分離前に、別のCPUおよびオペレーティングシステム(OS)インスタンスの追加を必要とする新規メモリコントローラまたはディスクコントローラを追加する場合)これらの種類の分離型システムは、リソースの幾らかのバランスの改善を可能とし、それによって依然高いオーバーヘッドを被る。ネットワーク処理のみで、相当のファームウェアと内蔵制御を必要とし、複雑なプロトコルは、レイテンシーオーバーヘッドおよび帯域幅制限などを課す。典型的には、これらの構成においては、4次以上の大きさの性能が失われることがある。さらに、これらの分離型システムは、コースグレーンコンピュータ構成を表す。
抽象化メモリプロトコルを用いるシステムの一例として、ハイブリッドメモリキューブを含むデータ処理システムの図である。 ハイブリッドメモリキューブ内のDRAMの可能な分画を図示する。 ハイブリッドメモリキューブ内のDRAMの分画の一例の論理図を図示する。 リンクインターフェイスおよびハイブリッドメモリキューブ内のDRAMの制御用の論理ベースを図示する。 ハイブリッドメモリキューブの連鎖を図示する。 本開示の実施形態により、抽象化メモリプロトコルを用いるシステムと、抽象化メモリにおける仮想メモリ割り当てとを図示する。 本開示の実施形態による、メモリ抽象化モジュールのブロック図を図示する。 連続的に割り当てられた物理アドレススペースと、仮想アドレススペースとを示すメモリ図を図示する。 非連続的に割り当てられ得る物理アドレススペースと、仮想アドレススペースとを示すメモリ図を図示する。 抽象化メモリプロトコルを用いた仮想アドレススペースにアクセスするプロセスを図示する。
以下の詳細な説明において、本明細書の一部を形成する添付の図面が参照され、図面内では、例示として、本開示が実施され得る特定の例示的実施形態が示される。これらの実施形態は、本開示を当業者が実施することが可能なほど十分詳細に記述される。しかしながら、他の実施形態も使用することが出来、構造、材料およびプロセスの変更は、本開示の範囲から逸脱することなく行われることが出来る。本明細書に提示された図示は、任意の特定の方法、システム、デバイスまたは構造の実際の外観を意味するものではなく、本開示の実施形態を記述するために使用される単なる理想化された表現に過ぎない。本明細書に提示された図面は、必ずしも同一の縮尺で描かれるとは限らない。様々な図面における類似の構造またはコンポーネントは、読者の簡便のために、同一または類似の番号を維持することがある。しかしながら、番号の類似性は、構造またはコンポーネントが、サイズ、組成、構成または任意の他の特性において必ずしも同一であることを意味するものではない。
素子、回路、モジュールおよび機能は、不必要に詳細にして、本開示を不明瞭にしないように、ブロック図の形式で図示されることがある。さらに、図示され、記述される特定の実装は、単に例示的なものにすぎず、本明細書でそうではないと特定されない限りは、本開示を実現するための唯一の方法として解釈されるべきではない。さらに、様々なブロック間の論理のブロック画定および分画は、特定の実装の例示に過ぎない。本開示は、多くの他の分画方法によって実現できることを当業者は容易に理解するだろう。このような詳細が本開示の完全な理解を得るために必要ではなく、業界における当業者の能力の範囲内である場合に、大部分において、タイミングの考察などに関する詳細などは、省略されることがある。
本明細書で開示された実施形態に関連して記述される様々な例示的論理ブロック、モジュール、回路およびアルゴリズムアクトが、電子ハードウェア、コンピュータソフトウェア、または双方の組み合わせとして実装されてもよいことを当業者は理解するだろう。このハードウェアとソフトウェアとの互換性を明瞭に図示するために、様々な例示的コンポーネント、ブロック、モジュール、回路およびアクトは、これらの機能性の観点から一般的に記述される。このような機能がハードウェアまたはソフトウェアとして実装されるか否かは、システム全体に課された特定のアプリケーションおよび設計の制約に依存する。当業者は、各特定のアプリケーションのための様々な方法で、記述された機能を実装することが出来るが、このような実装の決定は、本明細書に記述された実施形態の範囲からの逸脱を引き起こすと解釈されるべきではない。
ハードウェアで実装されるとき、本明細書に開示された実施形態は、汎用プロセッサ、専用プロセッサ、デジタル信号プロセッサ(DSP)、プロセッサインメモリ(PIM)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタ論理素子、ディスクリートハードウェアコンポーネント、または本明細書に記述された機能を実施するように設計されたその任意の組み合わせで、実装または実施されてもよい。汎用プロセッサは、マイクロプロセッサであってもよいが、代替的には、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。本明細書に記述された実施形態のためにプロセスを実行するためのソフトウェアを実行するとき、汎用プロセッサは、このようなプロセスを実行するために構成された専用プロセッサと考えられるべきである。プロセッサは、また、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと組み合わせられた一つ以上のマイクロプロセッサ、または任意の他のこのような構成として実装されてもよい。
さらに、実施形態は、フローチャート、フロー図、構造図またはブロック図として図示されたプロセスに関して記述されることがあることに留意されたい。フローチャートは、順次的なプロセスとして動作挙動を記述することがあるが、これらの挙動のうちの多くは、別のシーケンスで、パラレルに、または実質的に同時に実施することが出来る。さらに、挙動の順序は再配列されてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応してもよい。さらに、本明細書に開示された方法は、ハードウェア、ソフトウェア、またはその双方で実装されてもよい。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上の一つ以上の命令またはコードとして格納され、または伝送されることが出来る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含むコンピュータ記憶媒体と通信媒体との双方を含む。
情報および信号は、様々な異なる技術および技法のうちの任意のものを用いて表されてもよいことを当業者は理解するだろう。例えば、本記述を通じて参照されることがあるデータ、命令、コマンド、情報、信号、ビット、シンボルおよびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光学場もしくは光子、またはその任意の組み合わせによって表されてもよい。幾つかの図面は、提示と記述を明瞭にするために、単一の信号として複数の信号を図示することがある。信号は、信号を伝送するためのバスを表すことがあり、バスは、様々なビット幅を有することが出来ることを当業者は理解するだろう。
“第一(first)”“第二(second)”などの指定を用いる本明細書の要素に対するあらゆる参照は、その限定が明示的にされていない限りは、これらの要素の量または順序を限定するわけではないことを理解するべきである。むしろ、これらの指定は、二つ以上の要素または要素の例の間で区別する簡便な方法として、本明細書で用いられることがある。したがって、第一および第二の要素に対する参照は、そこで二つの要素だけが使用され得ること、第一用要素が何らかの形で第二の要素に対して先行しなければならないことを意味するものではない。さらに、そうでないと言及されない限りは、要素の組は、一つ以上の要素を含んでもよい。
本明細書に記述される要素は、同一要素の複数の例を含んでもよい。これらの要素は、数字表示(例えば、110)によって包括的に示されてもよいし、アルファベット表示(例えば、110A)が後に続く数字表示、または、“ダッシュ”によって先行される数字表示(例えば、110−1)によって具体的に示されてもよい。以下の記述を容易にするために、大部分で、要素の番号表示は、その要素が紹介されるか、ほぼ全て議論される図面番号で開始する。したがって、例えば、図1における要素の表示は、ほぼ、数字のフォーマット1XXであるだろうし、図4における要素は、ほぼ、数字のフォーマット4XXであるだろう。
本明細書で用いられるように、所定のパラメータ、特性または条件に対する“実質的に(substantially)”という語は、許容可能な製造公差内など、小程度の相違で所定のパラメータ、特性または条件が満たされることを当業者が理解するだろう程度を、意味し、含む。例示として、実質的に満たされる特定のパラメータ、特性または条件によって、そのパラメータ、特性または条件は、少なくとも90%満たされるか、少なくとも95%満たされるか、または少なくとも99%も満たされることもある。
本明細書で用いられるように、“の上(over)”“の下(under)”“の上(on)”“の下(underlying)”“より上(upper)”“より下(lower)”等の任意の相対的な語は、本開示と添付の図面を理解するうえでの明瞭性および簡便性のために用いられるものであり、文脈がそうでないと明確に示さない限りは、任意の特定の優先度、方向もしくは順序を含意し、または依存するものではない。
ある要素が、別の要素“の上(on)”“に接続される(connected to)”“に結合される(coupled to)”“と結合される(coupled with)”と言及されるときには、その要素は、別の要素の直接上にあるか、接続されるか、もしくは結合されることが出来、または、中間要素が存在してもよいことが理解されるだろう。対照的に、ある要素が、別の要素“の直接上(directly on)”“に直接接続される(directly connected to)”“に直接結合される(directly coupled to)”と言及されるときには、中間要素または中間層は存在しない。本明細書で用いられるように、“および/または(and/or)”という語は、関連付けられて記載された多数の項目のあらゆる組み合わせと全ての組み合わせを含む。
本開示は、抽象化メモリプロトコルを用いて再構成可能なメモリスステム内で仮想化された物理アドレスを提供することによって、メモリサブシステムを改良するための方法および装置を記述する。
本明細書で用いられるように、“抽象化メモリプロトコル”“抽象化メモリ”および“メモリの抽象化”という語は、クライアント側の要求と、物理メモリデバイスに対する実際のアクセスとの間でのタイミングおよびネーミングのデカップリングを意味する。メモリを読み出すためのタイミング抽象化の限定しない例としては、クライアントは、特定のアドレスに対して、パケット化されたメモリ要求を発行することが出来る。確定できないがその幾らか後で、メモリシステムは、パケット化されたメモリ応答で要求されたデータを供給する。メモリがDRAMである場合、DRAMにおけるタイミングは、所望のデータを得るための、特定の行アドレスストローブ、列アドレスストローブ、読み出し応答時間を含むだろう。したがって、DRAMのタイミングは、クライアントの要求のタイミングから抽象化される。
本明細書で用いられるように、“ネーミング(naming)”という語は、メモリの一つ以上の特定の位置のアドレスを指定するためのプロセスまたはデータ構造を意味する。したがって、クライアントによって作成されるネーミングは、プロセッサによって閲覧されるように、特定のメモリ位置を組み合わせる複数のデータ構造を含んでもよい。限定しない例として、クライアントは、特定のデバイスと、そのデバイス内のアドレスとを選択するために、デバイスID番号で特定の位置をアドレス指定することが出来る。別の限定しない例として、クライアントは、ゾーンIDとそのゾーン内のアドレスを有する特定の位置をアドレス指定することが出来る。ゾーンIDおよびデバイスIDに関するさらなる詳細は、以下に議論される。物理メモリデバイスにおけるネーミングは、そのメモリデバイス上のデータの一つ以上の特定の位置を指示する。限定しない一例として、DRAMデバイス上のネーミングは、特定の位置のアドレスを指定するために組み合わせる行アドレスと列アドレスとを含んでもよい。したがって、限定しない具体的な一例として、ネーミング抽象化は、クライアントによって提供されるデバイスIDおよびアドレスと、特定のメモリデバイスにおける行アドレスおよび列アドレスとの間の変換(即ち、デカップリング)を含んでもよい。
ネーミングおよびタイミングの抽象化によって、本開示の実施形態は、DRAM以外の様々なメモリおよび記憶デバイスと使用されてもよい。限定しない例として、RAMデバイス、フラッシュメモリおよび記憶デバイス(例えば、ディスクドライブ)もまた使用されてもよい。
本開示の実施形態は、抽象化メモリデバイス内で、“保護ゾーン(protection zone)”を画定し、保護ゾーンをサポートするために抽象化メモリプロトコルを拡張する。したがって、抽象化メモリデバイス内に保護ゾーンを有するメモリシステムは、抽象化プロトコルを介して、所定のメモリモジュール(例えば、ハイブリッドメモリキューブ、プロセッサインメモリ(PIM)メモリなど)上で、物理メモリのセグメントをクライアント(例えば、CPU)が割り当てるかまたは割り当てを解除することを可能とする。さらに、保護ゾーンは、メモリデバイス内の仮想物理アドレスを抽象化メモリデバイスが作成することを可能とする。換言すると、クライアントから提示されたアドレスは、保護ゾーンによって規定される抽象化メモリデバイス内の特定の物理アドレスに変換されてもよい。メモリモジュールにおいて規定されたこれらの保護ゾーンは、ソフトウェアレベルの仮想化ではなくむしろ、メモリスペースのハードウェアレベルの仮想化を提供する。さらに、アドレス変換は、メモリシステム中に分散されてもよい。なぜなら、アドレス変換は、クライアント内、またはメモリコントロールハブ内ではなく、メモリモジュールレベルで実施されるからである。
本開示によるメモリシステムは、任意の適切な抽象化メモリプロトコルを用いて構成されてもよい。詳述を提供するために、抽象化メモリプロトコルの一例が詳細に定義される。この詳細な記述は、保護ゾーンによって規定される仮想物理アドレスをサポートすることが出来る抽象化メモリプロトコルの限定しない一例として、ハイブリッドメモリキューブ(HMC)プロトコルに焦点をあてる。そして、より一般的なシステムは、他の抽象化メモリプロトコルおよび仮想物理アドレスが、このような一般的システムで如何にして規定することが出来るかを示すために記述される。
図1は、クライアント110と通信するための抽象化メモリプロトコル130を用いるメモリバス上で動作するためのデバイスの一例として、ハイブリッドメモリキューブデバイス200を含むデータ処理システム100の図である。記述を容易にするために、この開示は、HMCプロトコルバスに焦点をあてる。しかしながら、本開示の利益を有する当業者が理解するように、本開示の実施形態は、データを保持するデバイスと、データバス上のプロトコルとの間の抽象化を含む他の高速データバスで実施することが出来る。
“クライアント”110という語は、DRAMメモリなどのデータを格納するためのデバイスではなく、主にデータのコンシューマおよびジェネレータとして構成されるメモリバス上のデバイスを区別するために本明細書で用いられる。限定しない例として、クライアント110は、例えば、汎用プロセッサ、専用プロセッサ、グラフィックプロセッサ、プロセッサインメモリ、およびデジタル信号プロセッサなどのプロセッサ(本明細書では処理デバイスとも呼ばれる)と考えることが出来る。さらに、クライアント110は、例えば、特定のオペレーティングシステムなどのプロセッサ上で実行するプロセスと考えることが出来る。別の限定しない例として、クライアント110は、通信デバイスと考えることが出来る。例えば、通信型クライアント110は、メモリバスと、例えば、入力/出力(I/O)バスまたはネットワークバスなどの幾つかの他の種類の通信バスとの間でデータを伝送するように構成されてもよい。無論、クライアント110は、また、プロセッサ素子と通信素子との双方を含んでもよい。このように、本明細書の記述は、また、クライアント110をシステムオンチップ(SoC)110と記述してもよい。そうでないと具体的に言及されない限りは、本明細書で呼ばれるSoC110は、クライアント110と等価であると考えられるべきである。最後に、クライアント110は、データを処理または移動することに焦点をあてられていると考えられてもよいが、レジスタ、バッファ、キャッシュ、およびクライアント110の他の種類のローカルメモリの形式で、相当量のメモリを含むこともできる。
ハイブリッドメモリキューブデバイス200(HMC200)は、論理ベース400を含み、論理ベース400は、クライアント110とHMC200との間のメモリリンク120を作成するために、抽象化メモリプロトコル130を定義する。パラレルバス410の集合は、論理ベース400とHMC200上のDRAM250のグループとの間をインターフェイスで接続する。HMC200のさらなる詳細は、図2から図4に関連して以下に議論される。
メモリリンク120は、クライアント110に向かうアップストリームリンクと、クライアント110から離れるダウンストリームリンクとに区分化される。抽象化メモリプロトコル130の一部として、メモリリンク120は、以下に完全に説明されるようにパケット化される。結果として、メモリリンク120は、本明細書で、パケット化メモリリンク120とも、ハイブリッドメモリキューブリンク120ともよばれる。さらに、メモリリンク120上で伝送されるパケットは、パケット要求およびパケット化要求と呼ばれることがある。
図2は、HMC200内のDRAM250の可能な分画を図示する。HMC200は、論理ベース400に結合されたDRAMダイ250の3次元積層と考えることが出来る。論理ベース400は、個別のダイとして構成されてもよく、DRAMダイ250とインターフェイス接続するように構成されてもよい。積層されると、様々なダイの間の相互接続は、シリコンビアを通じて達成されてもよい。これらのデバイスは3次元積層として物理的に構成されてもよいが、そのように構成される必要はなく、相互接続の外観から依然3次元と考えることもできる。
図3は、HMC200内のDRAM250の分画の一例の論理図を図示する。図2および図3を参照すると、複数のダイ層の相互接続は、メモリストレージ層と一つ以上の論理層との組み合わせをメモリデバイスが有することを可能とする。この方法では、デバイスは、HMC200として構成された単一のダイパッケージ内の、物理メモリストレージと論理メモリトランザクション処理を提供する。最終結果は、デバイス毎に320GB/秒までの使用可能な帯域幅容量を有する、非常に小型で、電力効率の良いパッケージである。
HMC200は、設計に対する階層的でパラレルなアプローチを介して、このような帯域幅を可能とする。例えば、デバイスの階層は、論理層に対して垂直方向に生じることが出来、ハードウェアの平行度は、所定のダイ層にわたって生じることがある。論理ベース400は、内部ルーティングおよびトランザクション論理とともに、HMC200に対する外部リンクアクセスの双方を提供する複数のコンポーネントを含む。
HMC200は、“ボールト(vault)”としばしば呼ばれる垂直方向のスライス220に断片化することが出来る。各ボールトは、そのボールトと関連するDRAM250の断片を制御するために、論理ベース400に組み込まれたボールト論理450を含んでもよい。ボールト論理450は、そのボールト内のメモリ区分に対する、メモリ参照動作を管理する。各ボールトコントローラ450は、それ自体のタイミング要求とリフレッシュ動作を決定することが出来、それによって、各ボールトに対して異なるタイミングを可能とし、また、ホストメモリコントローラ内のこれらの機能に対するニーズを排除する。さらに、そのボールトのメモリに対する参照をバッファするために、各ボールトコントローラ450には待ち行列(キュー)が含まれてもよい。ボールトコントローラ450は、到着順序ではなく、ニーズに基づいて、この待ち行列内の参照を実行することが出来る。したがって、外部メモリリンク120(図1)に対するボールト動作からの応答は、幾つかの場合には、順序が違うことがある。
メモリリンク120は、4つまたは8つの論理リンクを提供するように構成されてもよい。各メモリリンク120は、16または8つのシリアルおよび双方向I/Oリンクのグループとして構成されてもよい。4つのリンクを有するように構成されたデバイスは、10、12.5および15Gbpsで動作する性能を有する。8つのリンクを有するように構成されたデバイスは、10Gbpsで動作する性能を有する。
物理メモリストレージの階層的特性を考えると、HMCデバイスの仕様は、従来のバンクDRAMデバイスとは異なる物理アドレシングとインターリーブモデルを定義する。HMCデバイス200に対する物理アドレスは、ボールト、バンクおよびアドレスビットを含む34ビットのフィールドにエンコードされる。現在の仕様は、フィールドのうちの下位の32ビットを使用するための4つのリンクのデバイスと、フィールドのうちの下位33ビットを使用するための8つのリンクのデバイスとを定義する。単一のアドレシング構造に依存するのではなく、仕様は、対象のメモリアクセス特性に対して最適化されたアドレスマッピングスキームを開発者およびユーザが規定することを可能にする。それは、また、所望の最大ブロック要求サイズに物理的ボールトおよびバンク構造を合わせる、一連のデフォルトアドレスマップモードを提供する。デフォルトのマップスキームは、ボールトアドレスに下位のアドレスビットをマッピングし、その直後に、バンクアドレスビットをマッピングすることによって、低いインターリーブモデルを実装する。この方法は、バンクコンフリクトを回避するために、一連のアドレスを、ボールトにわたってまずインターリーブさせ、その後、ボールト内のバンクにわたってインターリーブさせる。
ホストデバイスとHMCデバイス200との間の全ての帯域内通信は、パケット化フォーマットを介して実施される。このフォーマットは、3つの主要なパケット分類である、要求パケット、応答パケットおよびフロー制御パケットを含む。パケットは、単一の16バイトのフローユニット(FLITとも呼ばれる)の倍数として構成されてもよい。パケットサイズは、9FLIT(即ち、144バイト)と同じ大きさであってもよい。最小のパケットは、パケットヘッダおよびパケットテイルを含むただ一つの16バイトのFLITを含んでもよい。
すべてのメモリペイロードサイズに対するメモリ読み出し要求パケットは、パケットヘッダ、パケットテイルおよび其々の物理メモリアドレスを要求するだけである。このように、読み出し要求は、単一のFLITを用いて構成されてもよい。メモリ読み出し要求は、対応するメモリ読み出しパケット内で要求されたアドレスにおけるデータを含む個別のパケットである。しかしながら、書き込み要求およびアトミック要求パケットは、其々、書き込みおよび読み出し/修正/書き込み動作のために、関連する入力データを含まなければならない。このように、これらの要求の種類は、2−9FLITのパケット幅を有することがある。HMCデバイスの仕様は、パケット間の弱い順序付けのモデルを規定する。このように、対象実装内に存在する複数のパケット再順序付け点が存在してもよい。補助デバイスが宛先の到着パケットは、ローカルボールトアクセス用に待機するパケットを追い越すことが出来る。ローカルボールトは、また、其々のボールトバンクとやり取りする帯域幅を最も効率的に利用するために、待ち行列型パケットを再順序付けすることが出来る。しかしながら、所定のHMC実装内に存在する再順序付け点は、特定のリンクからボールト内の特定のバンクに、パケットのストリームの順序を維持するように規定されてもよい。この順序付けは、メモリ読み出し要求がその後に続くメモリ書き込み要求が、正確かつ決定的な挙動を果たすことを保証する。
HMC200内のリンク構造は、複数のHMC200の連鎖(chaining:チェイニング)を可能とし、リンク構造およびパケット化トランザクションプロトコルを維持しながら、単一のHMC200デバイスよりも大きい容量を必要とするメモリサブシステムの構造を可能とする。連鎖に関するさらなる詳細は、図5を参照して以下に議論される。
図4は、論理ベース400を図示し、論理ベース400は、リンクインターフェイス120を作成して、HMC200内のDRAM250(図1から図3)を制御するために使用され得る。アップストリームリンクとダウンストリームリンクとを含むメモリリンク120は、各メモリリンク120に対するリンクインターフェイスコントローラ410によって制御されてもよい。リンクインターフェイスコントローラ410を通過するパケットは、クロスバースイッチ430を通過してもよい。パケットの宛先がHMC200におけるボールトである場合、クロスバースイッチ430は、メモリ制御論理440にパケットを渡すことが出来る。パケットの宛先が別のHMC200である場合、クロスバースイッチ430は、適切なHMC200に送信されるように、適切なリンクインターフェイスコントローラ410にパケットを渡すことが出来る。様々なボールトに対するメモリ制御論理440およびボールト論理450は、適切なボールトおよび選択されたボールトに対する適切なタイミングを選択するために組み合わせられてもよい。
図5は、ハイブリッドメモリキューブ(200−0から200−5)の連鎖を図示する。前述されたように、複数のHMCデバイス200は、CPU510に対して使用可能なメモリの総容量を増加させるために、ともに連鎖されてもよい。HMCメモリシステムにおいては、各HMC200は、要求パケットヘッダ内の3ビットチップIDフィールド内の値を通じて同定される。3ビットチップIDフィールドは、また、“CUBフィールド”または“デバイスID”と本明細書で呼ばれることがある。したがって、8つまでのHMCデバイス200のネットワークは、CPU510に対してサポートされることが出来る。
HMC200を相互接続するための様々なトポロジーがサポートされ、異なるHMC200に対するルーティングは複雑に成り得、複数の経路を含むことがある。したがって、ホストプロセッサは、ルーティングトポロジーの制御中であり、各HMC200にルーティング構成情報をロードし、そのHMC200のためのものではないパケットが、HMC200における他のリンクに如何にしてルーティングされるべきかを判定する。このルーティング情報は、適切な宛先に要求パケットをルーティングするために、各HMC200がCUBフィールドを使用することを可能とする。結果として、自体が宛先とされていないパケットをHMC200が処理するとき、HMC200は連鎖し、別のHMC200に送信されるべき、HMC200における別のリンクへとパケットを通過させる。
例えば、図5において、CPU510が5のCUBフィールドで要求パケットを送信する場合、第一のHMC200−1は、第四のHMC200−4に要求パケットを渡すだろう。第四のHMC200−4は、要求パケットを使用可能にする第五のHMC520−5に要求パケットを渡すだろう。応答パケットは、同一の連鎖経路を辿ってCPU510に至る。
図6は、本開示の実施形態による、抽象化メモリにおける抽象化メモリプロトコルと仮想メモリ割り当てを利用するシステムを図示する。複数のクライアント(610Aから610C)は、抽象化メモリシステム相互接続620に対するアクセスを有する。システム相互接続620は、多くの異なる種類の複雑なトポロジーにおいて、任意の数の抽象化メモリモジュール700を含んでもよい。パケット化メモリ要求を使用する抽象化メモリプロトコルは、図5を参照して上述された、より単純なHMCトポロジーと類似の方法で、連鎖法およびデバイスIDを用いて、これらの複雑なトポロジーを作成することが出来る。このようなシステムにおいては、要求パケットが、自体を宛先とされるか、または抽象化メモリモジュール700にプログラムされた連鎖方向に基づいて、別の抽象化メモリモジュール700に渡されるべきかを全ての抽象化メモリモジュール700が、わかるように、要求パケットは、それに含まれるデバイスIDを有する。したがって、デバイスIDは、要求パケット内のアドレスと共に、クライアント(610Aから610C)によって要求されたアドレスの一部と考えることが出来る。
各抽象化メモリモジュール700は、メモリ抽象化ユニットと、一つ以上のメモリデバイスとを含む。二つの抽象化メモリモジュール700−1および700−2に対して、拡大図が図示される。限定しない例として、これらの拡大図は、各抽象化メモリモジュール(700−1および700−2)のアドレススペース内に、4つの保護ゾーンを示す。無論、抽象化メモリモジュール700内に、より多くの保護ゾーンが規定されてもよいし、または、抽象化メモリモジュールは、単一の保護ゾーンを含んでもよい。
抽象化メモリモジュール700―2を検討すると、二つの上部保護ゾーンが、クライアントB610Bに割り当てられたことが分かる。左下保護ゾーンは、クライアントC610Cに割り当てられ、右下保護ゾーンはクライアントA610Aに割り当てられた。抽象化メモリモジュール700−1を検討すると、左上および右下の保護ゾーンはクライアントA610Aに割り当てられたことが分かる。左下保護ゾーンは、クライアントC610Cに割り当てられ、右上保護ゾーンは割り当てられなかった。
図7は、本開示の実施形態による抽象化メモリモジュール700のブロック図を図示する。抽象化メモリモジュール700は、メモリ抽象化ユニット740と、一つ以上のメモリデバイスと(730−1から730−3)を含む。抽象化メモリモジュール700内のメモリデバイス730の数は、数十分の1からそれ以上に、大きく変化することが出来る。図示されるように、抽象化メモリモジュール700は、パケット化メモリリンクとして構成されることが出来る、一つ以上のメモリリンク720を含む。抽象化メモリモジュール700が、(例えば、HMCプロトコルに類似して)連鎖およびパケット通過をサポートするように構成される場合、抽象化メモリモジュール700は、二以上のメモリリンク720を一般的に有するだろう。複数のクライアント710および複数の抽象化メモリモジュール700を含む様々な複雑性を有するネットワークを生成するために、メモリリンク720は、クライアント710、または他の抽象化メモリモジュール700に結合されてもよい。
抽象化メモリプロトコル論理750は、メモリリンク720から受信されたメモリ要求パケットを解釈し、応答パケットを生成する。複数のメモリリンク720が存在する場合、受信されたパケットがこの特定の抽象化メモリモジュール700のためのものであるか否か、または別のメモリリンク720に転送されるべきか否かを判定するために、リンクルーティングモジュール760が含まれてもよく、メモリ要求が、別の抽象化メモリモジュール700によって取り扱われるようにする。
メモリ要求が抽象化メモリモジュール700のためのものである場合、その要求は、メモリ要求によってアドレス指定されるべき特定のメモリデバイス(730−1から730−3)にアクセスするための信号を生成する、メモリ制御論理770にルーティングされる。
マッピング論理780は、要求パケット内のクライアント710によって規定されるアドレスと、メモリデバイス(730−1から730−3)内の物理アドレスからの変換を作成するために含まれる。マッピング論理780は、実際の仮想アドレスの物理アドレスへの変換を作成するための多数の方法で構成されてもよい。
限定しない一例として、変換テーブル782は、ページテーブルにアドレスを作成するために、仮想アドレスの一部(例えば、メモリ要求内の上位アドレスビットの幾つかから派生されるキー)を取得するためのページテーブルを含んでもよく、ページテーブルは、メモリ用の上位物理アドレスを作成する。したがって、ページテーブルは、保護ゾーンのベース位置を作成する。この状況においては、メモリ要求内の下位アドレスビットは、保護ゾーン内の適切なアドレスを選択するために使用されるだろう。
別の限定しない例として、変換テーブル782は、例えば、保護ゾーンのベース位置を規定するためのベースレジスタおよび保護ゾーンのサイズを規定するためのバウンドレジスタなどのレジスタで達成することが出来る。この状況においては、パケット要求は、適切なベースレジスタを選択するゾーンIDを含んでもよく、それによって、物理アドレスの上位アドレスビットと、保護ゾーン内の全てのメモリ位置をアドレス指定するために、バウンドレジスタによって規定されるであろうビット幅を有するアドレスフィールドと、を規定することが出来る。
HMCデバイスを用いるシステムにおいては、保護ゾーンは、上記で説明されたように、HMCデバイス内で既に規定されたボールトに基づいてもよい。ボールトの物理位置とサイズは、HMCデバイスによって既に規定され、ボールトは、割り当てを要求するクライアントに割り当てられ、結び付けられなければならないだけである。
ゾーン許可論理790は、どのクライアント710が、任意の特定のゾーンへのアクセスを有するかを規定するために含まれてもよい。ゾーン許可論理790は、また、以下により完全に議論されるように、様々なクライアント710に様々な可能性のある保護ゾーンを割り当てるために、マッピング論理780と組み合わせて使用されてもよい。
保護ゾーンの割り当ては、クライアントに対して様々な種類の仮想メモリ環境を作成することが出来る。幾つかのマッピングにおいては、クライアント710のための仮想アドレススペースは、アドレススペースのベースとアドレススペースの上部との間で、穴がなく、連続的であるように見えることがある。他のマッピングにおいては、クライアント710のための仮想アドレススペースは、不連続(即ち、断片化されている)に見えることがある。この断片化された構成においては、クライアント710は、それに割り当てられた様々なゾーンIDおよびそのゾーン内のアドレスのアドレス指定だけすることを知ることが出来る。
要約すると、幾つかの実施形態においては、装置は、一つ以上のクライアントからのメモリ要求のタイミングおよびネーミングを、一つ以上のメモリデバイスにおけるタイミングおよびネーミングに抽象化するためのメモリ抽象化ユニットを含む。メモリ抽象化ユニットは、一つ以上のクライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理を含む。メモリ抽象化ユニットは、また、一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンで、要求するクライアントによるメモリアクセス要求によって規定されたネーミングを、仮想物理アドレスに変換するためのマッピング論理もまた含む。メモリ抽象化ユニットは、また、仮想物理アドレスで、一つ以上のメモリデバイスにアクセスするためのメモリ制御論理を含む。また、装置においては、選択された保護ゾーンは、既に規定され、メモリ抽象化ユニットによって、要求するクライアントに割り当てられる。
他の実施形態においては、ハイブリッドメモリキューブは、複数のメモリデバイスと論理ベースとを含む。論理ベースは、パケット化メモリ要求を解釈するように構成された一つ以上のリンクインターフェイスコントローラと、パケット化メモリ要求内で提供されたアドレスを、複数のメモリデバイスのうちの一つ以上での仮想物理アドレスに変換するように構成されたマッピング論理とを含み、仮想物理アドレスは、予め規定された保護ゾーンに属する。論理ベースは、また、仮想物理アドレスを有する複数のメモリデバイスのうちの一つ以上にアクセスするように構成されたメモリ制御論理を含む。
他の実施形態においては、システムは、一つ以上のクライアントと、一つ以上の抽象化メモリモジュールとを含む。各抽象化メモリモジュールは、一つ以上のメモリデバイスと、抽象化メモリプロトコル論理とを含む。抽象化メモリプロトコル論理は、一つ以上のクライアントからのメモリ要求を解釈するためのものであり、抽象化メモリモジュールに関連する一つ以上のメモリデバイスを宛先にしたメモリ要求を処理するためのものである。抽象化メモリプロトコル論理は、また、その抽象化メモリモジュールが宛先にされていないメモリ要求を、別の抽象化メモリモジュールに渡すためのものでもある。各抽象化メモリモジュールは、また、一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、要求するクライアントによるメモリアクセス要求によって規定されるアドレスを変換するためのマッピング論理をも含む。各抽象化メモリモジュールは、また、仮想物理アドレスにおける一つ以上のメモリデバイスの少なくとも一つにアクセスするためのメモリ制御論理をも含む。
図8は、連続的に割り当てられる物理アドレススペース820と仮想アドレススペース(830および840)を示すメモリ図を図示する。この高度に仮想化されたマッピングにおいては、仮想アドレススペース(830および840)は、保護ゾーンがいくつ割り当てられたかに基づいて、一般的にゼロから開始し、最大アドレスまで連続的に増える。より多くのゾーンが割り当てられると、それらは、アドレススペースの上部に一般的に加えられる。限定しない例として、この種類のマッピングは、仮想ソフトウェアマシンで有用とすることが出来る。例えば、複数のオペレーティングシステムは、単一のクライアント上で実行する。オペレーティングシステムは、あるソフトウェア素子が特定のアドレスに現れることを予測することが出来る。したがって、仮想ソフトウェア環境において実行するオペレーティングシステムは、ゼロから開始し、連続的に構築する仮想アドレスを有することが出来る。
図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にマッピングされる。
第二のクライアント810Bは、二つの仮想保護ゾーン(840−1および840−2)を割り当てられ、連続的仮想メモリスペース840を作成する。図7をまた参照すると、一つ以上の抽象化メモリモジュール700内のマッピング論理780は、物理保護ゾーン820−2に仮想保護ゾーン840−1をマッピングする。同様に、仮想保護ゾーン840−2は、物理保護ゾーン820−4にマッピングされる。
無論、複雑なシステムにおいては、物理アドレススペースは、非常に大きくなることがあり、数百もの保護ゾーンを含むことがある。さらに、複雑なシステムは、非常に大きな仮想アドレススペースを有する多くのクライアントを含むことがある。
したがって、メモリシステムは、物理メモリアドレススペースと、一つ以上の仮想メモリアドレススペースとを規定する複数のメモリデバイスを含む。各仮想メモリアドレススペースは、連続的な仮想アドレススペースを形成するために、複数の仮想保護ゾーンを含み、各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる。
図9は、不連続に(即ち、断片化されて)割り当てられ得る物理アドレススペース920および仮想アドレススペース(930および940)を示すメモリ図を図示する。非常に大きいアドレススペース(例えば、64ビットのアドレスシステム)と、プロセッサおよび/または高度に分割されたアドレススペース内で動作することが出来る仮想クライアントを有するシステムにおいては、アドレス変換を実施する必要がない。このようなシステムにおいては、クライアントが見る仮想アドレススペース(930および940)は、断片化されたように見えることがある。しかしながら、保護ゾーンは、図8の実施形態と同様に依然割り当てられ、保護されてもよいが、アドレス変換の必要はない。図9の実施形態は、アドレススペースのうちの一セグメントから別のセグメントにオーバーランすることによって、多くのセキュリティの脆弱性(およびプログラムバグ)が生成し得るとき、さらなるセキュリティを潜在的に提供することが出来る。異なるメモリ部分からセグメントを割り当てる複数のクライアントによって自然に作製される“穴”は、クライアントが自身に割り当てられなかった保護ゾーンにアクセスを試みる場合には、例外の原因となることがある。
図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にマッピングされる。
第二のクライアント910Bは、二つの保護ゾーン(940−1および940−2)を割り当てられ、断片化された仮想メモリスペース940を作成する。図7をまた参照すると、一つ以上の抽象化メモリモジュール700内のマッピング論理780は、物理保護ゾーン920−2に仮想保護ゾーン940−1をマッピングする。同様に、仮想保護ゾーン940−2は、物理保護ゾーン920−4にマッピングされる。物理保護ゾーン920−3は、クライアントに未だ割り当てられていないため、使用可能な保護ゾーンである。
無論、複雑なシステムにおいては、物理アドレススペースは、非常に大きくなることがあり、数百もの保護ゾーンを含むことがある。さらに、複雑なシステムは、非常に大きな仮想アドレススペースを有する多くのクライアントを含むことがある。
したがって、メモリシステムは、物理メモリアドレススペースと、一つ以上の仮想メモリアドレススペースとを規定する複数のメモリデバイスを含む。各仮想メモリアドレススペースは、断片化された仮想アドレススペースを形成するために、複数の仮想保護ゾーンを含み、各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる。
図10は、抽象化メモリプロトコル内の保護ゾーンを利用する仮想アドレススペースにアクセスするプロセスを図示する。動作1010において、クライアントは、仮想位置を要求する。限定しない例として、この要求は、適切な抽象化メモリモジュール700(図7)を選択するためのデバイスIDと、抽象化メモリモジュール700上で選択された保護ゾーンを規定するためのゾーンIDと、保護ゾーン内のアドレスとによって規定されるネームであってもよい。動作1020において、適切な抽象化メモリモジュール700上のマッピング論理780(図7)は、物理アドレス位置に対する要求におけるネームを変換する。さらに、この要求は、どのクライアントがその要求を作成したかを示すクライアントIDを含んでもよく、ゾーン許可論理790(図7)は、物理保護ゾーンにアクセスするための許可をクライアントが有することをベリファイしてもよい。ルックアップが失敗するか、またはクライアントが許可を有していない場合、動作ブロック1050は、要求するクライアントにエラーが報告されることを示す。ルックアップが成功し、クライアントが許可を有する場合、物理メモリアドレススペース1030内の物理保護ゾーン1040は、アクセスすることが出来る。
保護ゾーンは、多数の異なる方法で割り当てられてもよい。限定しない例として、クライアントは、特定の抽象化メモリモジュール700(図7)に保護ゾーンを割り当てるための要求を送信することが出来る。幾つかの実施形態においては、クライアントは、また、要求された保護ゾーンに対する特定のサイズを要求してもよい。他の実施形態においては、サイズが要求されなくてもよく、抽象化メモリモジュール700は、保護ゾーンのサイズを規定してもよい。抽象化メモリモジュール700が利用可能な保護ゾーンを有する場合、要求するクライアントに保護ゾーンを割り当てて、ゾーンIDを有するクライアントに割り当てを報告することが出来る。幾つかの実施形態においては、抽象化メモリモジュール700は、クライアントIDを有する要求するクライアントの追跡を維持することが出来るので、その保護ゾーンに対するその後のアクセスが、その保護ゾーンへのアクセスに対する許可を有するクライアントからのものであることをベリファイすることが出来る。この方法では、同一の保護ゾーンに対するアクセスを複数のクライアントが与えられることが出来、各クライアントは、物理アドレス変換に対する異なる仮想アドレスを有することが出来る。
あるいは、クライアントは、特定の抽象化メモリモジュール700から保護ゾーンを要求するのではなく、クライアントは、一般的な割り当て要求を送信してもよい。この一般的な割り当て要求は、割り当てるためのフリーの保護ゾーンを有する第一のモジュールを発見するために、抽象化メモリモジュール700のネットワークを通じて連鎖アルゴリズムに従う。
別の割り当てプロセスにおいては、クライアントは、抽象化メモリモジュール700内のパブリックテーブルを読み出すことが出来、保護ゾーン(例えば、固定数の可変サイズセグメントまたは固定数のページ状構造)用のフリースペースをモジュールが有するか否かを判定する。クライアントは、また、プロトコルの一部として、抽象化メモリモジュール700に問い合わせを行うことが出来る。例えば、クライアントは、“私にXGバイトを割り当ててください”等のような要求を送信することが出来、それは、成功するかまたは失敗する。あるいは、クライアントは、“XGバイト持っていますか?”などの二つの問い合わせへと、問い合わせを分割することが出来、答えが「はい」の場合には、クライアントは、そのクライアントにXGバイトの保護ゾーンを与えるための要求を後に行うことが出来る。
割り当て要求の成功に応じて、抽象化メモリモジュール700は、“メモリのこのブロックは、現在、アドレスX−Yを有するゾーンAに属する”などの応答パケットを作成することが出来、ここで、AはキーまたはゾーンIDであり、X−Yは、新規の物理メモリアドレスを記述する。
ゾーン許可論理790(図7)は、他の許可フィールド(例えば、読み出しアクセスまたは書き込みアクセス)を含んでもよく、他の許可フィールドは、共有データベースを可能とするためのセグメント毎/ID毎に可能とすることが出来る。
各クライアントは、どの保護ゾーンが自身に割り当てられたことに気がつく。クライアントがその保護ゾーンをもう必要としない場合、割り当て解除要求を送信することが出来る。抽象化メモリモジュール700は、割り当て解除要求を承認して、割り当てられた保護ゾーンをマッピング論理から除去することが出来る。
したがって、メモリにアクセスする方法は、抽象化メモリプロトコルでメモリアクセス要求を作成することと、抽象化メモリモジュールでメモリアクセス要求を承認することとを含む。この方法は、また、抽象化メモリモジュールと関連する一つ以上のメモリデバイスにおいて選択された保護ゾーンにおける仮想物理アドレスに、メモリアクセス要求によって規定されたネーミングを変換することと、仮想物理アドレスにおける一つ以上のメモリデバイスにアクセスすることとを含む。
本開示の実施形態は、限定することなく、以下に説明されるように更に特徴づけることが出来る。
実施形態1。一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、
一つ以上のクライアントからのメモリ要求を解釈するための抽象化メモリプロトコル論理と、
一つ以上のメモリデバイスの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、一つ以上のクライアントのうちの要求するクライアントによるメモリアクセス要求のネーミングを変換するためのマッピング論理と、
仮想物理アドレスにおける一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
を含むメモリ抽象化ユニットを含む装置であって、
選択された保護ゾーンは、予め規定され、メモリ抽象化ユニットによって要求するクライアントに割り当てられたものである、装置。
実施形態2。メモリ抽象化ユニットは、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有するときに、メモリアクセス要求を完了することを可能にするように構成され、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有していないときに、エラーを報告するように構成されたメモリ抽象化ユニット内のゾーン許可論理をさらに含む、実施形態1の装置。
実施形態3。ゾーン許可論理は、メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えるようにさらに構成される、実施形態2の装置。
実施形態4。メモリ抽象化ユニットは、メモリアクセス要求内で提供されたアドレスが選択された保護ゾーン内にあるときにメモリアクセス要求を完了することを可能するように構成され、メモリアクセス要求内で提供されたアドレスが、規定されたどの保護ゾーン内にもない場合にエラーを報告するように構成されたメモリ抽象化ユニット内のゾーン許可論理をさらに含む、実施形態1の装置。
実施形態5。マッピング論理は、
一つ以上のクライアントのうちの割り当てを要求するクライアントからの割り当て要求を承認することと、
一つ以上のメモリデバイスのうちのメモリデバイスにおいて使用可能な保護ゾーンを判定することと、
割り当てを要求するクライアントに使用可能な保護ゾーンを割り当てることと、
割り当てを要求するクライアントに、割り当てられた保護ゾーンの位置を報告することとのためにさらに構成される、実施形態1から実施形態4のうちのいずれかによる装置。
実施形態6。マッピング論理は、
割り当てを要求するクライアントからの割り当て解除要求を承認することと、
割り当てられた保護ゾーンをマッピング論理から除去することとのためにさらに構成される、実施形態5の装置。
実施形態7。割り当てを要求するクライアントからの割り当て要求を承認することは、要求されたサイズを承認することを含み、使用可能な保護ゾーンを割り当てることは、要求されたサイズで使用可能な保護ゾーンを割り当てることを含む、実施形態5の装置。
実施形態8。抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用するメモリアクセスを解釈するために構成される、実施形態1から実施形態7のうちのいずれかによる装置。
実施形態9。保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、実施形態8の装置。
実施形態10。マッピング論理は、要求するクライアントからのネーミングを、アクセスされるべき一つ以上のメモリデバイスのうちのメモリデバイスに対するネーミングに変換するためのアドレス変換テーブルを含む、実施形態1から実施形態9のいずれかによる装置。
実施形態11。マッピング論理は、メモリ内で割り当てられた各保護ゾーンの位置とサイズを規定するためのベースレジスタとバウンダリレジスタとを含む、実施形態1から実施形態9のいずれかによる装置。
実施形態12。メモリアクセス要求は、要求するクライアントに対するクライアントIDを含み、クライアントIDが選択された保護ゾーンに対する許可を有していない場合には、メモリ制御論理は、仮想物理アドレスにアクセスしない、実施形態1から実施形態11のうちのいずれかによる装置。
実施形態13。メモリアクセス要求によって規定されたアドレスはゾーンIDを含み、選択された保護ゾーン内のアドレスとマッピング論理は、ゾーンIDに応じて、仮想物理アドレスの少なくとも一部を作成する、実施形態1から実施形態11のうちのいずれかによる装置。
実施形態14。
複数のメモリデバイスと、
パケット化メモリ要求を解釈するように構成された一つ以上のリンクインターフェイスコントローラと、
複数のメモリデバイスのうちの一つ以上の仮想物理アドレスに、パケット化メモリ要求内で提供されたアドレスを変換するように構成されたマッピング論理であって、仮想物理アドレスは予め規定された保護ゾーンに属する、マッピング論理と、
仮想物理アドレスで複数のメモリデバイスのうちの一つ以上にアクセスするように構成されたメモリ制御論理と、
を含む論理ベースと、
を含むハイブリッドメモリキューブ。
実施形態15。論理ベースは、パケット化メモリ要求内に提供されたアドレスが予め規定された保護ゾーン内にあるときに、パケット化メモリ要求を完了することを可能にするように構成され、パケット化メモリ要求内で提供されたアドレスが規定されたどの保護ゾーン内にもないときにエラーを報告するように構成されたゾーン許可論理をさらに含む、実施形態14のハイブリッドメモリキューブ。
実施形態16。予め規定された保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、実施形態14および実施形態15のうちのいずれかによるハイブリッドメモリキューブ。
実施形態17。マッピング論理は、
割り当てを要求するクライアントからの割り当て要求を承認することと、
複数のメモリデバイスのうちの一つ以上のメモリデバイス内で使用可能な保護ゾーンを判定することと、
割り当てを要求するクライアントに、使用可能な保護ゾーンを割り当てることと、
割り当てを要求するクライアントに、割り当てられた保護ゾーンの位置を報告することと、
のためにさらに構成される、
実施形態14から実施形態16のうちのいずれかによるハイブリッドメモリキューブ。
実施形態18。マッピング論理は、
割り当てを要求するクライアントからの割り当て解除要求を承認することと、
割り当てられた保護ゾーンをマッピング論理から除去することと、
のためにさらに構成される、実施形態17のハイブリッドメモリキューブ。
実施形態19。割り当てを要求するクライアントからの割り当て要求を承認することは、要求されたサイズを承認することを含み、使用可能な保護ゾーンを割り当てることは、要求されたサイズで使用可能な保護ゾーンを割り当てることを含む、実施形態17のハイブリッドメモリキューブ。
実施形態20。
一つ以上の抽象化メモリモジュールであって、各抽象化メモリモジュールは、
一つ以上のメモリデバイスと、
一つ以上のクライアントからのメモリ要求を解釈することと、
抽象化メモリモジュールに関連する一つ以上のメモリデバイスを宛先とされたメモリ要求を処理することと、
抽象化メモリモジュールを宛先とされていないメモリ要求を、別の抽象化メモリモジュールに渡すことと
のための抽象化メモリプロトコル論理と、
一つ以上のメモリデバイスのうちの少なくとも一つにおいて選択された保護ゾーンにおける仮想物理アドレスに、一つ以上のクライアントのうちの要求するクライアントによるメモリアクセス要求によって規定されたアドレスを変換するためのマッピング論理と、
仮想物理アドレスにおける一つ以上のメモリデバイスのうちの少なくとも一つにアクセスするためのメモリ制御論理と、
を含む、抽象化メモリモジュールを含むシステム。
実施形態21。一つ以上の抽象化メモリモジュールの各々がモジュールIDをさらに含み、メモリ要求は、一つ以上のメモリモジュールの抽象化メモリモジュールがアドレスを使用するためのものであることを同定するモジュールIDを含む、実施形態20のシステム。
実施形態22。メモリアクセス要求によって規定されたアドレスは、ゾーンIDと、選択された保護ゾーン内のアドレスとを含み、マッピング論理は、ゾーンIDに応じて、仮想物理アドレスの少なくとも一部を作成する、実施形態20および実施形態21のうちのいずれかによるシステム。
実施形態23。一つ以上の抽象化メモリモジュールは、ハイブリッドメモリキューブを含む、実施形態20から実施形態22のうちのいずれかによるシステム。
実施形態24。
物理メモリアドレススペースを規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレススペースであって、各仮想メモリアドレススペースは連続的仮想アドレススペースを形成するための複数の仮想保護ゾーンを含む、仮想メモリアドレススペースと、を含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる、メモリシステム。
実施形態25。物理保護ゾーンは、抽象化メモリモジュールによって、選択された保護ゾーンにアクセスするための許可を与えられた要求するクライアントによってのみアクセス可能である、実施形態24のメモリシステム。
実施形態26。少なくとも一つの物理保護ゾーンは、二つ以上の仮想メモリアドレススペースのうちの少なくとも二つにおける仮想保護ゾーンにマッピングされる、実施形態24および実施形態25のうちのいずれかによるメモリシステム。
実施形態27。
物理メモリアドレススペースを規定する複数のメモリデバイスと、
一つ以上の仮想メモリアドレススペースであって、各仮想メモリアドレススペースは、断片化された仮想アドレススペースを形成するための複数の仮想保護ゾーンを含む、仮想メモリアドレススペースと、
を含み、
各仮想保護ゾーンは、抽象化メモリプロトコルと通信するように構成された抽象化メモリモジュールによって、物理メモリアドレススペース内の物理保護ゾーンにマッピングされる、メモリシステム。
実施形態28。物理保護ゾーンは、抽象化メモリモジュールによって、選択された保護ゾーンにアクセスするための許可を与えられた要求するクライアントによってのみアクセス可能である、実施形態27のメモリシステム。
実施形態29。少なくとも一つの物理保護ゾーンは、二つ以上の仮想メモリアドレススペースのうちの少なくとも二つにおける仮想保護ゾーンにマッピングされる、実施形態27および実施形態28のうちのいずれかのメモリシステム。
実施形態30。
抽象化メモリプロトコルでメモリアクセス要求を作成することと、
抽象化メモリモジュールでメモリアクセス要求を承認することと、
メモリアクセス要求によって規定されるネーミングを、抽象化メモリモジュールに関連する一つ以上のメモリデバイス内の選択された保護ゾーンにおける仮想物理アドレスに変換することと、
仮想物理アドレスで一つ以上のメモリデバイスにアクセスすることと、
を含む、メモリにアクセスする方法。
実施形態31。メモリ要求を作成した要求するクライアントが、選択された保護ゾーンにアクセスするための許可を有しているときに、メモリアクセス要求を完了することを可能にすることと、要求するクライアントが選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、実施形態30の方法。
実施形態32。メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、実施形態30および実施形態32のうちのいずれかによる方法。
実施形態33。メモリアクセス要求内で提供されたアドレスが選択された保護ゾーン内にあるときに、メモリアクセス要求を完了することを可能にすることと、メモリアクセス要求内で提供されたアドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告することとをさらに含む、実施形態30の方法。
上述され、添付の図面に図示された本開示の実施形態は、本発明の範囲を限定するものではない。なぜなら、これらの実施形態は本開示の実施形態の単なる例に過ぎないからである。本発明は、添付の請求項とその法的均等物によって定義される。あらゆる均等な実施形態は、本開示の範囲内にある。実際に、本明細書に図示され記述された実施形態に加えて、記述された要素の代替的な有用な組み合わせなど、本開示の様々な改変は、この記述から当業者に明らかとなるだろう。このような改変および実施形態は、また、添付の請求項とその法的均等物の範囲内にある。
例えば、図5において、CPU510が5のCUBフィールドで要求パケットを送信する場合、第一のHMC200−1は、第四のHMC200−4に要求パケットを渡すだろう。第四のHMC200−4は、要求パケットを使用可能にする第五のHMC200−5に要求パケットを渡すだろう。応答パケットは、同一の連鎖経路を辿ってCPU510に至る。
実施形態32。メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、実施形態30および実施形態31のうちのいずれかによる方法。

Claims (20)

  1. 一つ以上のクライアントからのメモリアクセス要求のネーミングを、一つ以上のメモリデバイスにおけるネーミングに抽象化するように構成されたメモリ抽象化ユニットであって、前記メモリ抽象化ユニットは、
    前記一つ以上のクライアントからの前記メモリ要求を解釈するための抽象化メモリプロトコル論理と、
    前記一つ以上のクライアントのうちの要求するクライアントによる前記メモリアクセス要求の前記ネーミングを、前記一つ以上のメモリデバイスの少なくとも一つで選択された保護ゾーンにおける仮想物理アドレスに変換するためのマッピング論理と、
    前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスするためのメモリ制御論理と、
    を含む、メモリ抽象化ユニットを含み、
    前記選択された保護ゾーンは、予め規定され、前記メモリ抽象化ユニットによって前記要求するクライアントに割り当てられる、
    装置。
  2. 前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有するときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記要求するクライアントが、前記選択された保護ゾーンにアクセスする許可を有していないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
    請求項1の装置。
  3. 前記ゾーン許可論理は、前記メモリアクセス要求が読み出しアクセスか、書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスする許可を与えるようにさらに構成される、
    請求項2の装置。
  4. 前記メモリアクセス要求内で提供されたアドレスが前記選択された保護ゾーン内にあるときに、前記メモリアクセス要求を完了することを可能にするように構成され、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときにエラーを報告するように構成された前記メモリ抽象化ユニット内のゾーン許可論理を、前記メモリ抽象化ユニットがさらに含む、
    請求項1の装置。
  5. 前記マッピング論理は、
    前記一つ以上のクライアントのうちの割り当てを要求するクライアントから割り当て要求を承認することと、
    前記一つ以上のメモリデバイスのうちのメモリデバイス内で使用可能な保護ゾーンを判定することと、
    前記割り当てを要求するクライアントに、前記使用可能な保護ゾーンを割り当てることと、
    前記割り当てを要求するクライアントに、前記割り当てられた保護ゾーンの位置を報告することと、
    のためにさらに構成される、
    請求項1の装置。
  6. 前記マッピング論理は、
    前記割り当てを要求するクライアントからの割り当て解除要求を承認することと、
    前記割り当てられた保護ゾーンを前記マッピング論理から除去することと、
    のためにさらに構成される、
    請求項5の装置。
  7. 前記割り当てを要求するクライアントからの前記割り当て要求を承認することは、要求されたサイズを承認することを含み、前記使用可能な保護ゾーンを割り当てることは、前記要求されたサイズで前記使用可能な保護ゾーンを割り当てることを含む、
    請求項5の装置。
  8. 前記抽象化メモリプロトコル論理は、ハイブリッドメモリキューブプロトコルを使用して、メモリアクセスを解釈するために構成される、
    請求項1の装置。
  9. 前記保護ゾーンは、ハイブリッドメモリキューブ内のボールトとして構成される、
    請求項8の装置。
  10. 前記マッピング論理は、前記要求するクライアントからの前記ネーミングを、アクセスされるべき前記一つ以上のメモリデバイスのうちのメモリデバイスに対する前記ネーミングに変換するためのアドレス変換テーブルを含む、
    請求項1の装置。
  11. 前記マッピング論理は、メモリ内に割り当てられた各保護ゾーンの位置とサイズとを規定するためのベースレジスタと、バウンダリレジスタとを含む、
    請求項1の装置。
  12. 前記メモリアクセス要求は、前記要求するクライアントに対するクライアントIDを含み、前記クライアントIDが前記選択された保護ゾーンに対する許可を有していない場合に、前記メモリ制御論理は、前記仮想物理アドレスにアクセスしない、
    請求項1の装置。
  13. 前記メモリアクセス要求によって規定される前記アドレスは、ゾーンIDと、前記選択された保護ゾーン内のアドレスとを含み、前記マッピング論理は、前記ゾーンIDに応じて、前記仮想物理アドレスの少なくとも一部を作成する、
    請求項1の装置。
  14. 前記一つ以上のメモリデバイスと、
    前記メモリ抽象化ユニットを含む論理ベースと、
    をさらに含む、
    請求項1から13のうちのいずれか一項による装置。
  15. 前記一つ以上のメモリデバイスと、
    前記論理ベースと、
    を含む、抽象化メモリモジュールであって、
    前記論理ベースの前記抽象化メモリプロトコル論理は、
    前記抽象化メモリモジュールに関連する前記一つ以上のメモリデバイスが宛先とされる前記メモリ要求を処理することと、
    前記抽象化メモリモジュールが宛先とされていない前記メモリ要求を、前記別の抽象化メモリモジュールに渡すことと、
    のためにさらに構成される、
    抽象化メモリモジュールをさらに含む、
    請求項14の装置。
  16. 前記一つ以上のメモリデバイスは、物理メモリアドレススペースを規定し、
    前記論理ベースの前記メモリ抽象化ユニットは、一つ以上の仮想メモリアドレススペースを規定し、各仮想メモリアドレススペースは、連続的仮想アドレススペースと断片化された仮想アドレススペースのうちの一つを形成するための、複数の仮想保護ゾーンを含む、
    請求項14の装置。
  17. 抽象化メモリプロトコルでメモリアクセス要求を作成することと、
    抽象化メモリモジュールで前記メモリアクセス要求を承認することと、
    前記抽象化メモリモジュールに関連する一つ以上のメモリデバイス内で選択された保護ゾーンにおける仮想物理アドレスに、前記メモリアクセス要求によって規定されるネーミングを変換することと、
    前記仮想物理アドレスで、前記一つ以上のメモリデバイスにアクセスすることと、
    を含む、
    メモリにアクセスする方法。
  18. 前記メモリ要求を作成した要求するクライアントが、前記選択された保護ゾーンにアクセスするための許可を有するときに、前記メモリアクセス要求を完了することを可能にすることと、前記要求するクライアントが前記選択された保護ゾーンにアクセスするための許可を有していないときにエラーを報告することと、をさらに含む、
    請求項17の方法。
  19. 前記メモリアクセス要求が読み出しアクセスか書き込みアクセスかに応じて、前記選択された保護ゾーンにアクセスするための許可を与えることをさらに含む、
    請求項17の方法。
  20. 前記メモリアクセス要求内で提供された前記アドレスが前記選択された保護ゾーン内にあるときに、メモリアクセス要求を完了することを可能にすることと、前記メモリアクセス要求内で提供された前記アドレスが、規定されたどの保護ゾーン内にもないときに、エラーを報告することと、をさらに含む、
    請求項17の方法。
JP2016566610A 2014-05-09 2015-05-01 再構成可能なメモリシステムのための仮想化された物理アドレス Active JP6201065B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/274,195 2014-05-09
US14/274,195 US9501222B2 (en) 2014-05-09 2014-05-09 Protection zones in virtualized physical addresses for reconfigurable memory systems using a memory abstraction
PCT/US2015/028882 WO2015171464A1 (en) 2014-05-09 2015-05-01 Virtualized physical addresses for reconfigurable memory systems

Publications (2)

Publication Number Publication Date
JP2017515238A true JP2017515238A (ja) 2017-06-08
JP6201065B2 JP6201065B2 (ja) 2017-09-20

Family

ID=54367950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016566610A Active JP6201065B2 (ja) 2014-05-09 2015-05-01 再構成可能なメモリシステムのための仮想化された物理アドレス

Country Status (7)

Country Link
US (1) US9501222B2 (ja)
EP (1) EP3140745A4 (ja)
JP (1) JP6201065B2 (ja)
KR (2) KR101857937B1 (ja)
CN (1) CN106462361B (ja)
TW (1) TWI588654B (ja)
WO (1) WO2015171464A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558143B2 (en) 2014-05-09 2017-01-31 Micron Technology, Inc. Interconnect systems and methods using hybrid memory cube links to send packetized data over different endpoints of a data handling device
US9823846B2 (en) * 2014-08-20 2017-11-21 Qualcomm Incorporated Systems and methods for expanding memory for a system on chip
KR20160093147A (ko) * 2015-01-28 2016-08-08 에스케이하이닉스 주식회사 재구성 가능한 반도체 메모리 장치 및 그 동작 방법
US20180004681A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Systems, Apparatuses, and Methods for Platform Security
JP2019117979A (ja) * 2017-12-26 2019-07-18 ファナック株式会社 制御装置
CN110413201B (zh) * 2018-04-28 2023-06-27 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11334253B2 (en) * 2018-12-07 2022-05-17 Intel Corporation Storage system that provides protection levels at stored data item granularity
US11055249B2 (en) * 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US12061971B2 (en) 2019-08-12 2024-08-13 Micron Technology, Inc. Predictive maintenance of automotive engines
US20230042551A1 (en) * 2021-08-03 2023-02-09 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for the management of device local memory
CN115422098B (zh) * 2022-02-15 2023-08-29 摩尔线程智能科技(北京)有限责任公司 基于扩展页表的gpu访存自适应优化方法及装置
CN115617274A (zh) * 2022-10-27 2023-01-17 亿铸科技(杭州)有限责任公司 一种具备坏块管理功能的存内计算装置及操作方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219046A (ja) * 1986-03-19 1987-09-26 Fujitsu Ltd 記憶保護方式
JPH0644140A (ja) * 1992-07-27 1994-02-18 Kobe Nippon Denki Software Kk メモリの割り当て方式
JP2006293516A (ja) * 2005-04-07 2006-10-26 Matsushita Electric Ind Co Ltd バスアクセス制御装置
WO2007129482A1 (ja) * 2006-04-06 2007-11-15 Sony Corporation ブリッジ、プロセッサユニット、情報処理装置およびアクセス制御方法
JP2009015783A (ja) * 2007-07-09 2009-01-22 Toshiba Corp インタフェースコントローラ
JP2010518543A (ja) * 2007-02-16 2010-05-27 モサイド・テクノロジーズ・インコーポレーテッド 半導体デバイスおよび複数の相互接続デバイスを有するシステムの電力消費を低減するための方法
US20110131363A1 (en) * 2002-12-27 2011-06-02 Hall Clifford D Mechanism for remapping post virtual machine memory pages
US20140013027A1 (en) * 2012-07-06 2014-01-09 Seagate Technology Llc Layered architecture for hybrid controller
WO2014014711A1 (en) * 2012-07-18 2014-01-23 Micron Technology, Inc Memory management for a hierarchical memory system

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4481573A (en) 1980-11-17 1984-11-06 Hitachi, Ltd. Shared virtual address translation unit for a multiprocessor system
US4528624A (en) 1981-03-25 1985-07-09 International Business Machines Corporation Method and apparatus for allocating memory space based upon free space in diverse memory devices
US5561622A (en) 1993-09-13 1996-10-01 International Business Machines Corporation Integrated memory cube structure
US5541914A (en) 1994-01-19 1996-07-30 Krishnamoorthy; Ashok V. Packet-switched self-routing multistage interconnection network having contention-free fanout, low-loss routing, and fanin buffering to efficiently realize arbitrarily low packet loss
US5448511A (en) 1994-06-01 1995-09-05 Storage Technology Corporation Memory stack with an integrated interconnect and mounting structure
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6763328B1 (en) 2000-06-15 2004-07-13 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory utilizing threads
US7239641B1 (en) 2001-04-24 2007-07-03 Brocade Communications Systems, Inc. Quality of service using virtual channel translation
US6871294B2 (en) 2001-09-25 2005-03-22 Sun Microsystems, Inc. Dynamically reconfigurable interconnection
KR100448709B1 (ko) 2001-11-29 2004-09-13 삼성전자주식회사 데이터 버스 시스템 및 그 제어방법
JP3867624B2 (ja) 2002-06-06 2007-01-10 セイコーエプソン株式会社 不揮発性半導体記憶装置およびその駆動方法
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US7475174B2 (en) * 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US7120723B2 (en) 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
DE102004062287A1 (de) * 2004-12-23 2006-07-13 Fujitsu Siemens Computers Gmbh Verfahren zur Aktualisierung von Einträgen von Adressumsetzpuffern in einem Mehrprozessor-Computersystem
US20060153185A1 (en) 2004-12-28 2006-07-13 Intel Corporation Method and apparatus for dynamically changing ring size in network processing
US8645665B1 (en) 2012-12-14 2014-02-04 Intel Corporation Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7565496B2 (en) 2005-01-22 2009-07-21 Cisco Technology, Inc. Sharing memory among multiple information channels
US7383374B2 (en) 2005-03-31 2008-06-03 Intel Corporation Method and apparatus for managing virtual addresses
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US20080010417A1 (en) * 2006-04-28 2008-01-10 Zeffer Hakan E Read/Write Permission Bit Support for Efficient Hardware to Software Handover
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US8392565B2 (en) * 2006-07-20 2013-03-05 Oracle America, Inc. Network memory pools for packet destinations and virtual machines
JP4755050B2 (ja) 2006-08-18 2011-08-24 富士通株式会社 データ処理装置、モード管理装置、及びモード管理方法
WO2008055272A2 (en) 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
US20080155224A1 (en) * 2006-12-21 2008-06-26 Unisys Corporation System and method for performing input/output operations on a data processing platform that supports multiple memory page sizes
WO2009001153A1 (en) 2007-06-28 2008-12-31 Nokia Corporation Memory protection unit in a virtual processing environment
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US7743375B2 (en) 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
US8195916B2 (en) * 2009-03-04 2012-06-05 Qualcomm Incorporated Apparatus and method to translate virtual addresses to physical addresses in a base plus offset addressing mode
US8719069B2 (en) 2009-07-23 2014-05-06 Brocade Communications Systems, Inc. Method and apparatus for providing virtual machine information to a network interface
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US8739177B2 (en) * 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines
US20140108701A1 (en) * 2010-07-16 2014-04-17 Memory Technologies Llc Memory protection unit in a virtual processing environment
US8874808B2 (en) * 2010-09-07 2014-10-28 International Business Machines Corporation Hierarchical buffer system enabling precise data delivery through an asynchronous boundary
US8943313B2 (en) 2011-07-19 2015-01-27 Elwha Llc Fine-grained security in federated data sets
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
US9690694B2 (en) * 2011-09-27 2017-06-27 Sandisk Technologies, Llc Apparatus, system, and method for an address translation layer
JP5803502B2 (ja) * 2011-09-27 2015-11-04 富士通株式会社 監視装置、制御方法及び制御プログラム
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US9348385B2 (en) 2012-07-09 2016-05-24 L. Pierre deRochement Hybrid computing module
JP5987560B2 (ja) * 2012-08-31 2016-09-07 富士通株式会社 データ転送装置、データ転送方法およびデータ転送プログラム
US9223635B2 (en) * 2012-10-28 2015-12-29 Citrix Systems, Inc. Network offering in cloud computing environment
US9319349B2 (en) * 2013-06-20 2016-04-19 Micron Technology, Inc. Encapsulation enabled PCIE virtualisation
US20140379846A1 (en) * 2013-06-20 2014-12-25 Nvidia Corporation Technique for coordinating memory access requests from clients in a mobile device
US20150106547A1 (en) * 2013-10-14 2015-04-16 Micron Technology, Inc. Distributed memory systems and methods

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62219046A (ja) * 1986-03-19 1987-09-26 Fujitsu Ltd 記憶保護方式
JPH0644140A (ja) * 1992-07-27 1994-02-18 Kobe Nippon Denki Software Kk メモリの割り当て方式
US20110131363A1 (en) * 2002-12-27 2011-06-02 Hall Clifford D Mechanism for remapping post virtual machine memory pages
JP2006293516A (ja) * 2005-04-07 2006-10-26 Matsushita Electric Ind Co Ltd バスアクセス制御装置
WO2007129482A1 (ja) * 2006-04-06 2007-11-15 Sony Corporation ブリッジ、プロセッサユニット、情報処理装置およびアクセス制御方法
JP2010518543A (ja) * 2007-02-16 2010-05-27 モサイド・テクノロジーズ・インコーポレーテッド 半導体デバイスおよび複数の相互接続デバイスを有するシステムの電力消費を低減するための方法
JP2009015783A (ja) * 2007-07-09 2009-01-22 Toshiba Corp インタフェースコントローラ
US20140013027A1 (en) * 2012-07-06 2014-01-09 Seagate Technology Llc Layered architecture for hybrid controller
WO2014014711A1 (en) * 2012-07-18 2014-01-23 Micron Technology, Inc Memory management for a hierarchical memory system
JP2015522886A (ja) * 2012-07-18 2015-08-06 マイクロン テクノロジー, インク. 階層メモリシステムのためのメモリ管理

Also Published As

Publication number Publication date
EP3140745A4 (en) 2018-01-31
KR101857937B1 (ko) 2018-05-14
KR20170076821A (ko) 2017-07-04
US20150324285A1 (en) 2015-11-12
WO2015171464A1 (en) 2015-11-12
US9501222B2 (en) 2016-11-22
KR101754549B1 (ko) 2017-07-05
TWI588654B (zh) 2017-06-21
EP3140745A1 (en) 2017-03-15
JP6201065B2 (ja) 2017-09-20
TW201606508A (zh) 2016-02-16
CN106462361B (zh) 2018-06-08
CN106462361A (zh) 2017-02-22
KR20160145848A (ko) 2016-12-20

Similar Documents

Publication Publication Date Title
JP6201065B2 (ja) 再構成可能なメモリシステムのための仮想化された物理アドレス
CN106462524B (zh) 使用混合存储器立方体链路的互连系统及方法
US9331958B2 (en) Distributed packet switching in a source routed cluster server
US20200136971A1 (en) Hash-table lookup with controlled latency
WO2014113059A1 (en) Network overlay system and method using offload processors
US11403023B2 (en) Method of organizing a programmable atomic unit instruction memory
WO2022115166A2 (en) Registering a custom atomic operation with the operating system
CN114072779A (zh) 基于互连地址的QoS规则
US9515929B2 (en) Traffic data pre-filtering
US9727499B2 (en) Hardware first come first serve arbiter using multiple request buckets
KR101690568B1 (ko) 네트워크 온 칩 소켓 프로토콜
US11740800B2 (en) Alleviating memory hotspots on systems with multiple memory controllers
US11409539B2 (en) On-demand programmable atomic kernel loading
WO2022212055A1 (en) Avoiding deadlock with a fabric having multiple systems on chip
US20240111538A1 (en) Efficient processing of nested loops for computing device with multiple configurable processing elements using multiple spoke counts
Wang et al. High Performance Network Virtualization Architecture on FPGA SmartNIC

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170420

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170420

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170728

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170815

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170828

R150 Certificate of patent or registration of utility model

Ref document number: 6201065

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250