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

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

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

<>
  • 特許6367797-階層メモリシステムのためのメモリ管理 図000002
  • 特許6367797-階層メモリシステムのためのメモリ管理 図000003
  • 特許6367797-階層メモリシステムのためのメモリ管理 図000004
  • 特許6367797-階層メモリシステムのためのメモリ管理 図000005
  • 特許6367797-階層メモリシステムのためのメモリ管理 図000006
  • 特許6367797-階層メモリシステムのためのメモリ管理 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6367797
(24)【登録日】2018年7月13日
(45)【発行日】2018年8月1日
(54)【発明の名称】階層メモリシステムのためのメモリ管理
(51)【国際特許分類】
   G06F 12/1036 20160101AFI20180723BHJP
   G06F 12/1009 20160101ALI20180723BHJP
【FI】
   G06F12/1036
   G06F12/1009
【請求項の数】21
【全頁数】13
(21)【出願番号】特願2015-523126(P2015-523126)
(86)(22)【出願日】2013年7月9日
(65)【公表番号】特表2015-522886(P2015-522886A)
(43)【公表日】2015年8月6日
(86)【国際出願番号】US2013049753
(87)【国際公開番号】WO2014014711
(87)【国際公開日】20140123
【審査請求日】2016年6月20日
(31)【優先権主張番号】13/552,491
(32)【優先日】2012年7月18日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー, インク.
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100106851
【弁理士】
【氏名又は名称】野村 泰久
(72)【発明者】
【氏名】クライン,ディーン エー.
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 特開2007−304747(JP,A)
【文献】 特開平05−233452(JP,A)
【文献】 米国特許第05481688(US,A)
【文献】 特開昭63−244152(JP,A)
【文献】 米国特許出願公開第2012/0023300(US,A1)
【文献】 特開2008−090554(JP,A)
【文献】 特開2004−157686(JP,A)
【文献】 特開2000−231549(JP,A)
【文献】 米国特許出願公開第2010/0005269(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/10 − 12/109
(57)【特許請求の範囲】
【請求項1】
タイプの異なる複数のメモリ装置に接続されたメモリ管理システムであって、
第1の仮想メモリアドレスに対して、第1の物理メモリアドレス、前記第1の物理メモリアドレスがアクセスされた頻度に関する第1のデータおよび前記複数のメモリ装置のうち前記第1の物理メモリアドレスが対応するメモリ装置のタイプを特定する第2のデータを関連付けて保存するように構成された第1のメモリ変換テーブルと、
第2の仮想メモリアドレスに対して、第2の物理メモリアドレス、前記第2の物理メモリアドレスがアクセスされた頻度に関する第3のデータおよび前記複数のメモリ装置のうち前記第2の物理メモリアドレスが対応するメモリ装置のタイプを特定する第4のデータを関連付けて保存するように構成された第2のメモリ変換テーブルと、
少なくとも部分的に前記第1のメモリ変換テーブル及び第2のメモリ変換テーブルに基づいて前記複数のメモリ装置の動作を制御するように構成された制御ユニットと、
を含む、メモリ管理システム。
【請求項2】
前記第1のメモリ変換テーブルが変換装置に保存され、前記第2のメモリ変換テーブルが変換索引バッファに保存されている、請求項1に記載のメモリ管理システム。
【請求項3】
前記第1のメモリ変換テーブルは、前記第1の仮想メモリアドレスがアクセスされた頻度に関する第5のデータに対応するように構成され、
前記第2のメモリ変換テーブルは、前記第2の仮想メモリアドレスがアクセスされた頻度に関する第6のデータに対応するように構成された、請求項1に記載のメモリ管理システム。
【請求項4】
前記メモリ管理システムが、前記第1及び第3のデータの少なくとも一部に基づいて、
前記第1の仮想メモリアドレスと前記第1の物理メモリアドレス、前記第1のデータ及び前記第2のデータとの関係を示す第1のテーブルエントリを、前記第1のメモリ変換テーブルから前記第2のメモリ変換テーブルに移動し、
前記第2の仮想メモリアドレスと前記第2の物理メモリアドレス、前記第3のデータ及び前記第4のデータとの関係を示す第2のテーブルエントリを、前記第2のメモリ変換テーブルから前記第1のメモリ変換テーブルに移動するように構成されている、請求項1に記載のメモリ管理システム。
【請求項5】
タイプの異なる複数のメモリ装置に接続されたメモリ管理システムであって、
第1のメモリ変換テーブルを保存するように構成された変換装置を含み、
前記第1のメモリ変換テーブルは、第1の複数の仮想メモリアドレスと第1の複数の物理メモリアドレスをマッピングし、且つ、前記第1の複数の仮想メモリアドレスに対して、前記第1の複数の物理メモリアドレスの夫々がアクセスされた頻度に関する第1のデータおよび前記複数のメモリ装置のうち前記第1の複数の物理メモリアドレスのそれぞれが対応するメモリ装置のタイプを特定する第2のデータをマッピングするように構成され、
第2のメモリ変換テーブルを保持するように構成された変換索引バッファを含み、
前記第2のメモリ変換テーブルは、第2の複数の仮想メモリアドレスと第2の複数の物理メモリアドレスをマッピングし、且つ、前記第2の複数の仮想メモリアドレスに対して、前記第2の複数の物理メモリアドレスの夫々がアクセスされた頻度に関する第3のデータおよび前記複数のメモリ装置のうち前記第2の複数の物理メモリアドレスのそれぞれが対応するメモリ装置のタイプを特定する第4のデータをマッピングするように構成され、
前記第1及び第2のメモリ変換テーブルは、互いにオーバーラップするものではなく、
少なくとも部分的に前記第1のメモリ変換テーブルおよび前記第2のメモリ変換テーブルに基づいて、前記複数のメモリ装置のうち前記第1の複数の物理メモリアドレスまたは前記第2の複数の物理メモリアドレス中の少なくとも一つの物理メモリアドレスに対応するメモリ装置の動作を制御するように構成された制御ユニットを含む、メモリ管理システム。
【請求項6】
前記制御ユニットは、第1の仮想メモリアドレスを特定するために前記第1のメモリ変換テーブルを検索するように構成された、請求項5に記載のメモリ管理システム。
【請求項7】
前記制御ユニットは、前記メモリ管理システム外部の処理装置とは独立して、前記第1のメモリ変換テーブルを検索するように構成された、請求項6に記載のメモリ管理システム。
【請求項8】
前記変換装置が高性能メモリアレイを含む、請求項5に記載のメモリ管理システム。
【請求項9】
前記高性能メモリアレイがハイブリッドメモリキューブを含む、請求項8に記載のメモリ管理システム。
【請求項10】
前記ハイブリッドメモリキューブが前記第1のメモリ変換テーブルのテーブルウォークを実行するように構成された、請求項9に記載のメモリ管理システム。
【請求項11】
データバスを介して前記複数のメモリ装置に接続された、請求項5に記載のメモリ管理システム。
【請求項12】
前記変換装置が補助検索メモリ装置を含む、請求項5に記載のメモリ管理システム。
【請求項13】
前記変換索引バッファがコンテントアドレッサブルメモリを含む、請求項5に記載のメモリ管理システム。
【請求項14】
前記変換索引バッファがnウェイ連想メモリ装置を含む、請求項5に記載のメモリ管理システム。
【請求項15】
前記変換索引バッファおよび前記変換装置が単一装置内に組み込まれた、請求項5に記載のメモリ管理システム。
【請求項16】
前記変換索引バッファが第一の装置内に組み込まれ、前記変換装置が第二の装置内に組み込まれた、請求項5に記載のメモリ管理システム。
【請求項17】
前記制御ユニットは、第1の仮想メモリアドレスと第1の物理メモリアドレスの関係を示すテーブルエントリを、前記第1の仮想メモリアドレスが前記第1のメモリ変換テーブル内の仮想メモリアドレスとヒットしたとき、前記第1のメモリ変換テーブルから前記第2のメモリ変換テーブルに移動するように構成された、請求項5に記載のメモリ管理システム。
【請求項18】
前記制御ユニットは、前記第1及び第2のメモリ変換テーブルを同時に検索されるように構成された、請求項5に記載のメモリ管理システム。
【請求項19】
前記制御ユニットは、前記第1のメモリ変換テーブルを検索する前に、前記第2のメモリ変換テーブルを検索するように構成された、請求項5に記載のメモリ管理システム。
【請求項20】
前記制御ユニットは、仮想メモリアドレスを含むテーブルエントリが前記第1又は第2のメモリ変換テーブルにて発見された後に前記第1又は第2のメモリ変換テーブルへの検索を停止するように構成された、請求項5に記載のメモリ管理システム。
【請求項21】
前記第1及び第のデータは、夫々LRUデータを含む、請求項5に記載のメモリ管理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概してメモリ管理に関する。より具体的には、本発明の実施形態は、階層メモリシステムにおけるメモリ管理のための1つまたは複数の技術を提供できる。
【背景技術】
【0002】
コンピュータシステムは、一般的に、多数の構成において利用され、様々な演算機能を提供する。処理速度、システムの自在性、消費電力およびサイズ制限が、通常、コンピュータシステムおよびシステムコンポーネントを開発する任務を負う設計技師によって考慮される。コンピュータシステムは、一般的に、複数個のメモリ装置を含み(例えば、デュアルインラインメモリモジュール(DIMM)は、8、16、またはそれ以上のメモリ装置を含むことができ、積重されたNANDフラッシュパッケージは、2、4または8のNANDダイを含むことができる)、そして複数個のメモリタイプ(すなわち、種々の性能および/または電力特性を有することができるメモリ装置)を含む。これらを使用して、データ(例えば、プログラムおよびユーザデータ)を保存し、プロセッサまたは周辺装置などの他のシステムコンポーネントにアクセスできる。そのようなメモリ装置は、揮発性および不揮発性メモリ装置を含むことができる。
【0003】
通常、コンピューティングシステムのメモリアドレス空間は、メモリ管理システムによって管理される。特定のコンピューティングシステムでは、メモリ管理システムは、メモリアドレス空間の一部を、プロセッサによって実行されているプログラムに動的に割り当て、そしてメモリアドレス空間の別個の部分を、そのようなプログラムによって使用されるデータに割り当てることができる。反対に、メモリ管理システムは、プログラムがもはやプロセッサによって実行されていないときに、メモリアドレス空間の一部の割り当てをプログラムから解除できる。メモリ管理システムは、プロセッサによって使用される仮想メモリアドレスを物理メモリアドレス空間にマッピングするのに使用されるテーブルを含むことができる。これらのテーブルは、メインメモリ変換テーブル(MMXT)および変換索引バッファ(TLB)を含むことができる。多くの場合に、TLBは、MMXTにおけるメモリアドレスよりも頻繁に使用されるメモリアドレスのためのメモリマッピングを含む。メモリマッピングのためのMMXTおよび/またはTLBを通じた検索は、時間がかかり、その結果としてデータ検索が遅延することがある。
【0004】
メモリシステムは、多くの場合、メモリ階層に配列される。例えば、特定のメモリは、レジスタ、キャッシュメモリ(例えば、レベル1、レベル2、レベル3)、メインメモリ(例えば、RAM)、ディスクストレージなどに見ることができる。認識できるように、一部のメモリシステムは、種々の動作特性を有する(例えば、異なる速度で動作する)メモリタイプを含む。しかしながら、メモリ管理システムは、通常、メモリシステムにおけるメモリのタイプ(例えば、メインメモリ)の違いを識別しない。従って、そのようなメモリ管理システムは、全てのタイプのメモリを同じ様に処理することがある。さらに、メモリシステムにおける一部のメモリ装置は、メモリシステムにおける他のメモリ装置よりも遥かに多い回数アクセス(例えば、それからの読み出し、かつ/またはそれへの書き込み)されることがある。そのようなものとして、メモリ管理システムでは、メモリシステム内でどのメモリ装置が特定の速度で動作するかを特定する(例えば、決定する)ことが困難であり得る。同様に、メモリ管理システムでは、どのメモリ装置が他のものよりも多くアクセスされたかを特定することが困難であり得る。
【発明の概要】
【発明が解決しようとする課題】
【0005】
従って、本発明の実施形態は、先に説明した1つまたは複数の問題に関し得る。
【図面の簡単な説明】
【0006】
図1】本発明の実施形態による、プロセッサベースのシステムのブロック図を図示する。
図2】本発明の実施形態による、メモリ管理システムのブロック図を図示する。
図3】本発明の実施形態による、変換索引バッファのブロック図を図示する。
図4】本発明の実施形態による、変換装置のブロック図を図示する。
図5】本発明の実施形態による、メモリ管理システムが仮想メモリアドレスを受信する場合の、物理メモリアドレスにアクセスするための方法のフローチャートを図示する。
図6】本発明の実施形態による、コンピューティングシステムの物理メモリアドレス空間を管理するための方法のフローチャートを図示する。
【発明を実施するための形態】
【0007】
以下に論じた実施形態の一部は、複数の異なるタイプのメモリ装置を使用するメモリシステム、および異なるタイプのメモリ装置に保存されたデータを動的に再配列するメモリシステムなどのメモリシステムのより一層の多用途性を促進できる。以下に詳細に記述するように、メモリ管理システムは、物理メモリアドレスとメモリ装置のタイプとを相互に関連付けるテーブルを含むことができる。例えば、メモリ管理システムは、複数の仮想メモリアドレスを有するテーブルを含むことができる。各仮想メモリアドレスは、物理メモリアドレス、および対応するメモリ装置のタイプを特定するデータに対応し得る。物理メモリアドレスを使用して、テーブルヒットが発生したときにメモリ装置にアクセスできる。そのようなものとして、以下の論述は、現在の技術の実施形態による装置および方法を記述する。
【0008】
ここで図面に注意を向け、最初に図1を参照する。この図は、全体を参照番号10で指定したプロセッサベースのシステムを描写するブロック図を図示する。システム10は、コンピュータ、ポケベル、携帯電話、電子手帳、制御回路などの様々なタイプのいずれかのものでもよい。標準的なプロセッサベースの装置では、マイクロプロセッサなどの1つまたは複数のプロセッサ12が、システム10内のシステム機能およびリクエストの処理を制御する。認識されるように、プロセッサ12は、コンポーネントをそこに連結するための、埋め込まれたノースまたはサウスブリッジ(図示せず)を含むことができる。あるいは、システム10は、プロセッサ12とシステム10の様々なコンポーネントとの間を連結する個々のブリッジを含むことができる。図示するように、プロセッサ12は、プロセッサ12がメモリにアクセスするのにかかる平均時間を短縮するためのキャッシュメモリ13(例えば、CPUキャッシュ)を含むことができる。
【0009】
様々な装置を、システム10が実行する機能に応じてプロセッサ12に連結できる。例えば、ユーザインターフェースをプロセッサ12に連結できる。ユーザインターフェースは、例えば、ボタン、スイッチ、キーボード、ライトペン、マウス、ディスプレイおよび/または音声認識システムを含むことができる。ディスプレイは、例えば、タッチスクリーンディスプレイ、LCDディスプレイ、CRT、LEDおよび/または聴覚ディスプレイを含むことができる。1つまたは複数の通信ポートもプロセッサ12に連結できる。通信ポートは、モデム、プリンタ、コンピュータなどの1つまたは複数の周辺装置、または例えば、ローカルエリアネットワーク、リモートエリアネットワーク、イントラネットもしくはインターネットなどのネットワークに連結するように適応できる。
【0010】
一般的に、ソフトウェアプログラムを実装することによってプロセッサ12がシステム10の機能を制御するため、メモリが、プロセッサ12に動作可能に連結され、様々なプログラムを保存し、その実行を促進する。従って、階層メモリシステム14は、システムバス16を介してプロセッサ12に動作可能に連結される。階層メモリシステム14は、メモリ管理システム18および任意の数のメモリ装置を含む。例えば、階層メモリシステム14は、(例えば、第一のタイプの)メモリ_0 20、(例えば、第二のタイプの)メモリ_1 22、および(例えば、n番目のタイプの)メモリ_N 24によって表される任意の追加のメモリ装置を含むことができる。
【0011】
メモリ管理システム18は、様々なメモリ管理機能を実行できる。例えば、メモリ管理システム18は、仮想メモリアドレスの物理メモリアドレスへの変換、メモリの再割り当て、メモリ構成、メモリ使用量などを管理できる。図示するように、メモリ管理システム18は、データバスPA_0 26、PA_1 28およびPA_N 30によって、それぞれ、メモリ装置20、22および24に動作可能に連結される。認識されるように、PA_N 30は、メモリ装置であるメモリ_N 24に対応するデータバスの番号を表すことができる。
【0012】
メモリ装置20、22および24の1つまたは複数は、揮発性メモリでもよく、ダイナミックランダムアクセスメモリ(DRAM)および/またはスタティックランダムアクセスメモリ(SRAM)を含むことができる。揮発性メモリは、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、および/またはハイブリッドメモリキューブ(HMC)などの多くのメモリモジュールを含むことができる。認識されるように、揮発性メモリは、簡単に「システムメモリ」と呼ぶことができる。揮発性メモリは、通常、動的にロードされたアプリケーションおよびデータを保存できる程度にかなり大きい。
【0013】
さらに、メモリ装置20、22および24の1つまたは複数は、不揮発性メモリでもよく、EPROM、フラッシュメモリ(例えば、NORおよび/またはNAND)などのリードオンリーメモリ(ROM)、および/または揮発性メモリと連結して使用される相変化メモリ(PCM)を含むことができる。ROMのサイズは、通常、任意の必須のオペレーティングシステム、アプリケーションプログラムおよび固定データを保存するのに十分に大きいように選択される。また、不揮発性メモリは、テープまたはディスクドライブメモリなどの大容量メモリを含むことができる。従って、メモリ装置20、22および24は、ブロックストレージデバイスとなる必要がない。
【0014】
そのようなものとして、階層メモリシステム14は多用途であり、プロセッサ12に動作可能に連結された多くのタイプのメモリ装置20、22および24を可能にする。従って、メモリ管理システム14は、メモリ装置20、22および24の性能を最適化するように階層メモリシステム14に適応できる。階層メモリシステム14において使用されるように適応したメモリ管理システム18の一部の例を、図2図4に図示する。具体的には、図2は、変換(XLAT)変換装置および変換索引バッファを含むメモリ管理システム18を図示し、図3および図4は、それぞれ、変換索引バッファおよびXLAT変換装置をさらに図示する。図5および図6は、メモリ管理システム18を使用してメモリ装置20、22および24を管理できる方法を図示する。
【0015】
ここで図2を参照し、メモリ管理システム18のブロック図を図示する。動作中、メモリ管理システム18は、(例えば、プロセッサ12から)仮想メモリアドレス32を受信する。メモリ管理システム18は、仮想メモリアドレス32にマッピングされ、メモリ装置20、22および24の1つへのアクセスに使用される物理メモリアドレス34を特定する。どの物理メモリアドレス34が仮想メモリアドレス32にマッピングされたかをメモリ管理システム18が特定できない場合には、次にメモリ管理システム18は、ページフォールト36を作り出し(例えば、生成し)、これをプロセッサ12に伝送できる。
【0016】
仮想メモリアドレス32にマッピングされた物理メモリアドレス34を特定するために、メモリ管理システム18は、XLAT変換装置38および変換索引バッファ(TLB)40を使用する。XLAT変換装置38およびTLB40は、各々、仮想メモリアドレスを物理メモリアドレスにマッピングするそれぞれのテーブルを保存できる。XLAT変換装置38およびTLB40は別々に図示したが、特定の実施形態では、XLAT変換装置38およびTLB40は単一装置内に組み込むことができる。認識されるように、XLAT変換装置38とTLB40とは、非重複データを含むことができる。例えば、XLAT変換装置38は、仮想メモリアドレスの第一の部分に関するテーブル項目を含み、TLB40は、仮想メモリアドレスの第二の部分に関するテーブル項目を含むことができる。
【0017】
通常、TLB40は、XLAT変換装置38内に保存された仮想メモリアドレスよりも頻繁にアクセスされる仮想メモリアドレスに関するテーブル項目を含む。特定の実施形態では、仮想メモリアドレス32に関する検索は、XLAT変換装置38およびTLB40において同時に発生できる。他の実施形態では、TLB40における仮想メモリアドレス32に関する検索が、XLAT変換装置38において発生する検索よりも前に発生できる。しかしながら、仮想メモリアドレス32を含むテーブル項目が特定された(例えば、検出された)後は、XLAT変換装置38およびTLB40の両方が、仮想メモリアドレス32に関する検索を停止する。
【0018】
本実施形態では、XLAT変換装置38およびTLB40は、各々、特定の仮想メモリアドレスおよび/または物理メモリアドレスがアクセスされた頻度に関するデータを保存できる。さらに、XLAT変換装置38およびTLB40は、各々、物理メモリアドレスに対応するメモリ装置のタイプを特定するデータを保存できる。以下に詳細に説明するように、この追加のデータを使用して、メモリ管理システム18は、メモリ使用量ならびに/またはXLAT変換装置38およびTLB40に保存されたデータをマッピングするテーブルを最適化できる。
【0019】
従って、図3は、特定の仮想メモリアドレスおよび/または物理メモリアドレスがアクセスされた頻度に関するデータ、ならびに特定の物理メモリアドレスに対応するメモリ装置のタイプを特定するデータを保存できるTLB40のブロック図を図示する。特定の実施形態では、TLB40は、コンテントアドレッサブルメモリ(CAM)装置またはnウェイ連想メモリ装置でもよい。具体的には、TLB40は、行44および列(46〜52)を有するテーブル42を保存する。実施形態では、各行44は、個々のテーブル項目に関する。そのようなものとして、各行44は、仮想メモリアドレス列46、物理メモリアドレス列48、最長時間未使用(LRU)列50、および装置特定(TYPE)列52を含む。
【0020】
仮想メモリアドレス列46は、TLB40内に含まれた全ての仮想メモリアドレスのリストを含む。さらに、物理メモリアドレス列48は、それぞれの行42の仮想メモリアドレス列46における仮想メモリアドレスに対応する各行42における物理メモリアドレスを含む。LRU列50は、それぞれの物理メモリアドレスがアクセスされた頻度に関するデータ(例えば、アクセスまたは使用データ)を含む。例えば、LRU列50は、その対応する仮想メモリアドレスおよび/または物理メモリアドレスがアクセスされた全回数を表す値を含むことができる。そのようなものとして、LRU列50を使用して、テーブル項目をテーブル42から削除すべきか否かを特定できる。例えば、アクセスされた回数が最も少ない(例えば、LRU列50に保存された値が最低の)行44を、テーブル42から削除できる。
【0021】
TYPE列52は、各行42に装置特定データを含み、このデータは、それぞれの行42の物理メモリアドレス列48における物理メモリアドレスに対応する装置のタイプを特定する。装置は、(例えば、テーブルヒットが発生したときに)物理メモリアドレスを使用してアクセスされる。例えば、装置特定データは、装置のタイプに対応する値でもよい。認識されるように、メモリ管理システム18は、各装置に対応するデータを含むことができる。例えば、メモリ管理システム18は、各装置の名称、各装置の動作速度、各装置に割り当てられたバス、他の物理装置に対する各装置の相対速度の表示、各装置の耐久性などのデータを含むことができる。動作中、物理アドレスを使用してメモリ装置20、22および24に直接にアクセスすることによって、メモリ装置20、22および24に保存されたデータに迅速にアクセスできる。
【0022】
図4に注意を向け、XLAT変換装置38のブロック図を図示する。XLAT変換装置38は、変換テーブル(XT)54を含む。これは、特定の仮想メモリアドレスおよび/または物理メモリアドレスがアクセスされた頻度に関するデータ、ならびに各物理メモリアドレスに対応するメモリ装置のタイプを特定するデータを保存できる。さらに、XLAT変換装置38は、XLAT変換装置38の様々な動作を制御するための制御ユニット56(例えば、ハイブリッドメモリキューブの論理ダイ)を含む。具体的には、XT54は、行58および列(60〜66)を有するテーブルを保存する。本実施形態では、各行58は、個々のテーブル項目に関する。そのようなものとして、各行58は、仮想メモリアドレス列60、物理メモリアドレス列62、LRU列64、およびTYPE列66を含む。
【0023】
仮想メモリアドレス列60は、XT54内に含まれた全ての仮想メモリアドレスのリストを含む。さらに、物理メモリアドレス列62は、それぞれの行58の仮想メモリアドレス列60における仮想メモリアドレスに対応する各行58における物理メモリアドレスを含む。LRU列64は、それぞれの物理メモリアドレスがアクセスされた頻度に関するデータ(例えば、アクセスまたは使用データ)を含む。例えば、LRU列64は、そのそれぞれの仮想メモリアドレスおよび/または物理メモリアドレスがアクセスされた全回数を表す値を含むことができる。そのようなものとして、LRU列64を使用して、テーブル項目を(例えば、変換装置38の制御ユニット56によって)XT54からTLB40に移動すべきか否かを特定できる。例えば、アクセスされた回数が最も多い(例えば、LRU列64に保存された値が最高の)行58を、少なくともいくつかの状況では、XT54からTLB40に移動できる。
【0024】
TYPE列66は、各行58に装置特定データを含み、このデータは、それぞれの行58の物理メモリアドレス列62における物理メモリアドレスに対応する装置のタイプを特定する。装置は、(例えば、テーブルヒットが発生したときに)物理メモリアドレスを使用してアクセスされる。例えば、装置特定データは、装置のタイプに対応する値でもよい。動作中、物理メモリアドレスを使用してメモリ装置20、22および24に直接にアクセスすることによって、メモリ装置20、22および24に保存されたデータに迅速にアクセスできる。
【0025】
XLAT変換装置38は、例えば米国公開番号第2010/0138575号に開示されているハイブリッドメモリキューブ(HMC)またはパターン認識装置などの様々な異なる装置のいずれかでもよい。さらに、ハードウェア(例えば、プロセッサ)および/またはソフトウェアを使用して、XT54の検索を実行できる。認識されるように、XT54への長時間のアクセスは、特にメインメモリに保存されている場合に、(例えば、HMC装置に統合された状況にあり得るように、変換装置38それ自体がメインメモリとしての機能を果たすときには、)顕著な性能の不利益を生じることがある。従って、特定の変換装置38は、メモリセルに加えてハードウェアおよび/またはソフトウェア論理を含むことができる。例えば、XT54は、高性能メモリアレイ(HPMA)(例えば、HMC)、または前に言及したパターン認識装置などの補助検索メモリ装置に保存できる。そのような装置は、XT54内の仮想メモリアドレスを検索する(例えば、テーブルウォークを実行する)ように構成できる。TLB40がHPMAまたは補助検索メモリ装置にも保存できることに留意すべきである。特定の実施形態では、TLB40とXT54とは同じ装置に保存できる。HPMAまたは補助検索メモリ装置を使用することによって、性能の改善を達成できる。特定の実施形態では、制御ユニット56を使用して様々な機能を実行できる。例えば、制御ユニット56は、ページテーブルウォーク、TLB更新、LRU演算、LRU更新、ページ移動のためのダイレクトメモリアクセスを制御し、装置に割り当てられたデータを動的に再配列し、仮想メモリアドレスの物理メモリアドレスへのマッピングを動的に変化させることなどができる。
【0026】
制御ユニット56は、メモリ管理システム18の機能を援助するためのソフトウェアおよび/またはハードウェアを含むことができる。そのようなものとして、図5は、メモリ管理システム18が仮想メモリアドレスを受信する場合の、物理メモリアドレスにアクセスするための方法68のフローチャートを図示する。ブロック70において、メモリ管理システム18が仮想メモリアドレスを受信する。次に、ブロック72において、メモリ管理システム18は、TLB40内の仮想メモリアドレスを検索する(例えば、ルックアップを実行する)。次に、ブロック74において、メモリ管理システム18がTLB40内の仮想メモリアドレスを特定した(例えば、発見した)か否かについての決定が為される。TLBが「ミス」した場合には、ブロック76において、メモリ管理システム18は、XT54内の仮想メモリアドレスを検索する(例えば、ルックアップまたはテーブルウォークを実行する)。次に、ブロック78において、メモリ管理システム18がXT54内の仮想メモリアドレスを特定したか否かについての決定が為される。XTが「ミス」した場合には、ブロック80において、メモリ管理システム18は、プロセッサ12に送信されるページフォールト36を生成する。
【0027】
XTが「ヒット」した場合には、ブロック82において、メモリ管理システムは、XTテーブル項目をTLB40に移動させる。さらに、ブロック82において、メモリ管理システム18は、最も使用されていないTLB40の項目をXT54に移動させる。次に、ブロック84において、メモリ管理システム18は、仮想メモリアドレスを物理メモリアドレスに変換する。このブロックは、ブロック82の後、またはブロック74において発生したTLBの「ヒット」に応答して起こる。認識されるように、仮想メモリアドレスの物理メモリアドレスへの変換は、仮想メモリアドレスに関する、項目内の全てのデータへのアクセスを含むことができる。例えば、メモリ管理システム18は、メモリ装置にアクセスするために、テーブル項目からTYPE列データを検索できる。ブロック86において、アクセスされたテーブル項目に関するLRUデータを更新する(例えば、変更する)。例えば、LRU列に保存された値は、1だけ増大できる。次に、ブロック88において、物理メモリアドレスがアクセスされる。
【0028】
ここで図6に注意を向け、コンピューティングシステムのメモリアドレス空間を管理するための方法のフローチャート90を図示する。ブロック92において、メモリ管理システム18は、LRUデータを使用してテーブル項目をランク付けできる。例えば、テーブル項目の仮想メモリアドレスおよび/または物理メモリアドレスがアクセスされた回数に基づいてテーブル項目をランク付けする。次に、ブロック94において、メモリ管理システム18は、他のテーブル項目よりも使用量が多いテーブル項目を特定し、かつ/または他のテーブル項目よりも使用量が少ないテーブル項目を特定できる。次に、ブロック96において、メモリ管理システム18は、特定された項目に割り当てられたメモリ装置のタイプと、メモリ装置の利用可能なタイプとを比較できる。例えば、メモリ管理システム18は、使用量が多い(例えば、アクセス速度がより高い)テーブル項目が、使用量が少ないテーブル項目よりも優れたメモリタイプ(例えば、より速いメモリ、改善された耐久性)に割り当てられたか否かを特定できる。ブロック98において、メモリ管理システム18は、物理メモリアドレスがアクセスされた回数と、物理メモリアドレスに対応するメモリ装置のタイプとの間にミスマッチがあるか否かを特定できる。
【0029】
ミスマッチがない場合には、方法は、ブロック92に戻ることができる。しかしながら、物理メモリアドレスがアクセスされた回数と、物理メモリアドレスに対応するメモリ装置のタイプとの間にミスマッチがある場合には、メモリ管理システム18は、ブロック100において、メモリスワップを実行できるか否かを特定できる。特定の実施形態では、メモリスワップは、第一のタイプのメモリに保存された第一の組のデータと、第二のタイプのメモリに保存された第二の組のデータとの交換を含むことができる。例えば、メモリ管理システム18は、第一のタイプのメモリに保存された第一の組のデータを第二のタイプのメモリに移動させ、第二のタイプのメモリに保存された第二の組のデータを第一のタイプのメモリに移動させることができる。さらに、第一の組のデータおよび第二の組のデータの移動は、同時に起こることができる。例えば、特定のタイプのメモリは、DRAM DIMMとHMC、およびDRAM DIMMとPCMなどの両方向に同時に起こるデータ移動をサポートできる。メモリスワップを実行できない場合には、メモリ管理システム18は、ブロック102において、ミスマッチしたデータを移動させるのに利用可能な任意のメモリがあるか否かを特定できる。利用可能な任意のメモリがない場合には、方法はブロック100に戻ることができる。
【0030】
利用可能なメモリがある場合には、ブロック104において、メモリ管理システム18は、データを特定された項目のメモリから利用可能なメモリに移動させることができる。例えば、メモリ管理システム18は、特定されたテーブル項目に対応するデータを、異なるタイプのメモリ装置に移動させて、物理メモリアドレスがアクセスされた回数と、物理メモリアドレスに対応するメモリのタイプとの間のミスマッチを除去できる。ブロック100に戻り、メモリ管理システム18がメモリスワップを実行できる場合には、メモリ管理システム18は、ブロック106において、メモリ装置間でデータをスワップできる。ブロック104またはブロック106の後、メモリ管理システム18は、TLB40および/またはXT54のテーブル項目を更新する。例えば、メモリ管理システム18は、仮想メモリアドレスと物理メモリアドレスとの間で修正したマッピング、修正された装置データおよび/または更新されたLRUデータを用いて、TLB40および/またはXT54のテーブル項目を更新できる。
【0031】
ブロック92完全な108をメモリ管理システム18が実行するものとして記述したが、メモリ管理システム18の任意の一部(例えば、ハードウェアおよび/またはソフトウェア)が、記述した事項を実行できることに留意すべきである。例えば、ブロック92完全な108のいずれかは、制御ユニット56によって実行できる。特定の実施形態では、メモリ管理システム18および/または制御ユニット56は、仮想メモリアドレスの物理メモリアドレスへのマッピングを、メモリタイプの耐久性または速度に基づいて動的に変化させるように構成できる。本明細書に記述する技術を使用して、メモリ管理システム18は、システム10の性能を最大限にし、かつ/またはソフトウェアオーバーヘッドを最小限にできる。
【0032】
本発明は様々な変更および代替形態を受け入れることができるが、具体的な実施形態を図面に例証として示し、本明細書に詳細に記述した。しかしながら、本発明が、開示した特定の形態に限定されることを意図しないことが理解されるべきである。むしろ、本発明は、以下の請求項によって定義されるような本発明の本質および範囲内に収まる全ての変更、均等物および代替物を包含できる。
図1
図2
図3
図4
図5
図6