(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-30
(45)【発行日】2023-09-07
(54)【発明の名称】メンテナンス動作の実行
(51)【国際特許分類】
G06F 12/1027 20160101AFI20230831BHJP
G06F 12/1036 20160101ALI20230831BHJP
【FI】
G06F12/1027 100
G06F12/1036 100
【外国語出願】
(21)【出願番号】P 2018213689
(22)【出願日】2018-11-14
【審査請求日】2021-11-05
(32)【優先日】2017-11-22
(33)【優先権主張国・地域又は機関】GR
【前置審査】
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】アンドレアス ラース サンドバーグ
(72)【発明者】
【氏名】ニコス ニコレリース
(72)【発明者】
【氏名】プラカシュ エス.ラムラキーヤニ
(72)【発明者】
【氏名】シュテファン ディーシュテルホルスト
【審査官】松平 英
(56)【参考文献】
【文献】特開平07-248974(JP,A)
【文献】特表2008-512785(JP,A)
【文献】米国特許出願公開第2014/0115267(US,A1)
【文献】特開昭57-164485(JP,A)
【文献】特開平04-353949(JP,A)
【文献】特表2016-534431(JP,A)
【文献】特開2009-140479(JP,A)
【文献】特表2017-517040(JP,A)
【文献】米国特許出願公開第2016/0188690(US,A1)
【文献】野口 健一郎 他,IT Text オペレーティングシステム(改訂2版),第2版,日本,株式会社オーム社,2018年01月25日,pp.151-162,ISBN:978-4-274-22156-9
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00-12/128
13/16-13/18
(57)【特許請求の範囲】
【請求項1】
リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信する入力ポートと、
少なくとも1つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路と、
前記入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置と
、
選択されたメンテナンス動作を前記メンテナンスキューから実行させるメンテナンス回路と
を備え、
前記入力アドレスの受信に応答して、前記出力アドレスが前記メンテナンスキューに応じて提供され、
前記メンテナンス動作の記憶に応答して、前記メンテナンスキュー回路が、前記メンテナンス動作が実行される前に、前記リクエスタに肯定応答を送信させ
、
前記選択されたメンテナンス動作が、前記アドレス記憶装置の少なくとも一部をスキャンし、条件が満たされたことに応答して動作を実行することを備え、
入力アドレスに関連するフィル動作を受信したことに応答して、前記入力アドレスが前記選択されたメンテナンス動作に関して既にスキャンされた前記アドレス記憶装置の一部に対応するときに、前記フィル動作が実行される、
装置。
【請求項2】
前記入力アドレスの受信に対する応答における前記入力アドレスとの競合について前記メンテナンスキューをスキャンするための制御回路
を備え、
競合がある場合にはミスを返し、そうでない場合には前記出力アドレスを提供することによって、前記メンテナンスキューに依存して前記出力アドレスが提供される、
請求項1に記載の装置。
【請求項3】
前記メンテナンス動作が前記アドレス記憶装置内の複数の変換にアクセスする、
請求項1または2に記載の装置。
【請求項4】
前記メンテナンス動作が前記アドレス記憶装置内の変換に順次アクセスする、
請求項1から3のいずれか1項に記載の装置。
【請求項5】
前記アドレス記憶装置が、メモリマッピングされるように適合されており、
前記メンテナンス動作が、非一時的アクセスを使用して前記アドレス記憶装置内の変換にアクセスする、
請求項3または4に記載の装置。
【請求項6】
前記メンテナンス動作が無効化動作である、
請求項1から5のいずれか1項に記載の装置。
【請求項7】
前記無効化動作が、仮想アドレス、仮想アドレスの範囲、アドレス空間識別子、仮想マシン識別子、中間物理アドレス、および物理アドレスのうちの1つ以上に基づいて、前記アドレス記憶装置における1つ以上の変換を無効にする、
請求項6に記載の装置。
【請求項8】
前記メンテナンスキューが満杯になったときにメンテナンス動作を受信したことに応答して、前記メンテナンス回路が、前記選択されたメンテナンス動作が実行されるように適合される、
請求項
1に記載の装置。
【請求項9】
前記メンテナンスキューにおける、実行される時間が最も短いメンテナンス動作に、前記選択が基づいている、
請求項
8に記載の装置。
【請求項10】
前記メンテナンスキュー内のオーバーラップメンテナンス動作とオーバーラップする前記アドレス記憶装置のエントリに関する入力アドレスに応答して、前記装置が前記オーバーラップメンテナンス動作を優先するように適合されている、
請求項
1に記載の装置。
【請求項11】
前記選択されたメンテナンス動作が、前記アドレス記憶装置の少なくとも一部をスキャンし、条件が満たされたことに応答して動作を実行することを備え、
前記入力アドレスの受信に応答して、前記入力アドレスが前記選択されたメンテナンス動作に関して既にスキャンされた前記アドレス記憶装置の一部にあるときに、前記出力アドレスが提供される、
請求項
1に記載の装置。
【請求項12】
1つ以上の条件に基づいて前記メンテナンスキューにおける複数のエントリを組み合わせるための組み合わせ回路
を備える、請求項1から
11のいずれか1項に記載の装置。
【請求項13】
プロセッサによって実行される方法であって、
リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信することと、
少なくとも1つのメンテナンス動作のメンテナンスキューを記憶することと、
前記入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することと
選択されたメンテナンス動作を前記メンテナンスキューから実行させることと、
を備え、
前記入力アドレスの受信に応答して、前記出力アドレスが前記メンテナンスキューに応じて提供され、
前記メンテナンス動作の記憶に応答して、前記メンテナンス動作が実行される前に、前記リクエスタに肯定応答を送信させ
、
前記選択されたメンテナンス動作が、前記出力アドレス空間の少なくとも一部をスキャンし、条件が満たされたことに応答して動作を実行することを備え、
入力アドレスに関連するフィル動作を受信したことに応答して、前記入力アドレスが前記選択されたメンテナンス動作に関して既にスキャンされた前記出力アドレス空間の一部に対応するときに、前記フィル動作が実行される、
方法。
【請求項14】
リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信する手段と、
少なくとも1つのメンテナンス動作のメンテナンスキューを記憶する手段と、
前記入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶する手段と
選択されたメンテナンス動作を前記メンテナンスキューから実行させるメンテナンス手段と、
を備え、
前記入力アドレスの受信に応答して、前記出力アドレスが前記メンテナンスキューに応じて提供され、
前記メンテナンス動作の記憶に応答して、前記メンテナンス動作が実行される前に、前記リクエスタに肯定応答を送信させ
、
前記選択されたメンテナンス動作が、前記記憶する手段の少なくとも一部をスキャンし、条件が満たされたことに応答して動作を実行することを備え、
入力アドレスに関連するフィル動作を受信したことに応答して、前記入力アドレスが前記選択されたメンテナンス動作に関して既にスキャンされた前記記憶する手段の一部に対応するときに、前記フィル動作が実行される、
装置。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、メンテナンス動作の実行に関する。
【背景技術】
【0002】
データ処理システムでは、データリクエスタ(プロセッサなど)は、記憶装置に保持されているデータを要求することができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、ある時点では、例えば、スムーズで効率的な記憶装置の稼働を確保するために、その記憶装置上でメンテナンスを行う必要がある。そのようなメンテナンスは、例えば、アドレス変換回路における古い変換の除去を必要とすることができる。メンテナンスが実行されている間、記憶装置は、通常、割り当てを解除するためにエントリをスキャンする必要があることがあるため、アクセス不能であると考えられる。したがって、メンテナンスを実行するためのリクエスタからの要求は、リクエスタおよび/または記憶装置をブロックさせる可能性がある。しかしながら、記憶装置のサイズが大きくなるにつれて、記憶装置がブロックされる時間が長くなることが予想される。ある時点で、リクエスタ(またはリクエスタの記憶装置へのアクセス)がブロックされる時間の長さは許容できないほど長くなる。したがって、リクエスタがブロックされている時間を短縮しながらメンテナンスが行われる方法を見つけることが望ましい。
【課題を解決するための手段】
【0004】
第1の構成例から見ると、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信する入力ポートと、少なくとも1つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置とを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、メンテナンスキュー回路がリクエスタに肯定応答を送信させる、装置が提供される。
【0005】
第2の構成例から見ると、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信することと、少なくとも1つのメンテナンス動作のメンテナンスキューを記憶することと、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することとを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、リクエスタに肯定応答を送信させる、方法が提供される。
【0006】
第3の構成例から見ると、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信する手段と、少なくとも1つのメンテナンス動作のメンテナンスキューを記憶する手段と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶する手段とを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、リクエスタに肯定応答を送信させる、装置が提供される。
【0007】
本技術は、添付図面に示されている実施形態を参照して、単なる例として、さらに説明される。
【図面の簡単な説明】
【0008】
【
図1】
図1は、いくつかの実施形態にかかる装置を示している。
【
図2】
図2は、いくつかの実施形態にかかる装置を示している。
【
図3A】
図3Aは、いくつかの実施形態にかかるCPUによって異なる要求が分配される方法をまとめて示している。
【
図3B】
図3Bは、いくつかの実施形態にかかるCPUによって異なる要求が分配される方法をまとめて示している。
【
図4】
図4は、いくつかの実施形態にかかるメンテナンス動作を示している。
【
図5】
図5は、重複する要求を処理するプロセスを示している。
【
図6】
図6は、いくつかの実施形態にかかる新たなメンテナンス動作を受信するプロセスを示している。
【
図7】
図7は、いくつかの実施形態にかかるメンテナンス動作の組み合わせを示している。
【
図8】
図8は、いくつかの実施形態にかかるフィルキューの使用を示している。
【
図9】
図9は、いくつかの実施形態にかかる、フィルキューに対して協議するプロセスをフローチャート形式で示している。
【
図10A】
図10Aは、いくつかの実施形態にかかるフィル動作およびメンテナンス動作を実行する第1のプロセスを示している。
【
図10B】
図10Bは、いくつかの実施形態にかかるフィル動作およびメンテナンス動作を実行する第2のプロセスを示している。
【
図11】
図11は、いくつかの実施形態にかかるメンテナンス動作中にアクセス要求を実行するプロセスを示している。
【
図12】
図12は、いくつかの実施形態にかかる例示的な装置を示している。
【
図13】
図13は、いくつかの実施形態にかかるキャッシュ内のウェイの再割り当てを示している。
【
図14】
図14は、いくつかの実施形態にかかる、単一のメモリがポインタを使用して複数の目的に割り当てられることができる方法を示している。
【
図15】
図15は、いくつかの実施形態にかかる、データおよびアドレス変換を動的に再割り当てする例示的な方法を示している。
【
図16】
図16は、いくつかの実施形態にかかる、異なる割り当てポリシーの使用がキャッシュウェイの分配を変更する方法を示している。
【
図17A】
図17Aは、いくつかの実施形態にかかる、TLBにおけるアドレスの要求が転送される方法を示している。
【
図17B】
図17Bは、いくつかの実施形態にかかる、アドレスの要求を並行して発行することを示している。
【
図17C】
図17Cは、いくつかの実施形態にかかる、アドレスの変換を実行することによって変換されたアドレスが提供されてデータがフェッチされるプロセスを示している。
【
図18】
図18は、いくつかの実施形態にかかる、到来要求を処理する方法を示すフローチャートを示している。
【
図20】
図20は、アドレス変換回路およびDRAMにおける変換データの記憶装置を概略的に示している。
【
図23】
図23は、方法を示す概略的なフローチャートである。
【
図28】
図28は、ハッシュジェネレータを概略的に示している。
【
図30】
図30は、各方法を示す概略的なフローチャートである。
【
図31】
図31は、各方法を示す概略的なフローチャートである。
【発明を実施するための形態】
【0009】
この説明は、任意の組み合わせでともに使用されることができる潜在的に直交するいくつかの技術に関する。
図1は、以下に記載される全ての技術が同時に使用される例示的な装置100を示している。本装置は、出力空間における出力アドレスへの入力アドレスの変換のための専用変換ルックアサイドバッファ110a、110b、・・・をそれぞれ有する複数のプロセッサ105a、105b・・・、を含む。各プロセッサは、1つ以上の入力ポート135を介して相互接続部125にメンテナンス動作、ルックアップ動作、およびフィル動作を送信することができる。これらの動作のそれぞれは、相互接続部125に関連するアドレス記憶装置155(変換データバッファとして機能することができる)に関する。ルックアップ動作は、出力空間における出力アドレスが供給されるべき入力または初期アドレスを含む。フィル動作は、そのような変換を提供するために使用される。一方、メンテナンスキュー145は、プロセッサ110aが実行されることになるメンテナンス動作を待機する必要がないように、メンテナンス回路150によってアドレス記憶装置155上で非同期的に実行されるメンテナンス動作を記憶する。アドレス記憶装置155は、変換データが実際にメモリ115に記憶されることができ且ついわゆるページテーブルウォークのためにメモリ115にアクセスしてアドレス記憶装置を占有することもできる、さらなるTLBにアクセスするための回路の形態をとることができる。相互接続部125は、1つ以上の出力ポート140を介したメインメモリ115への接続を提供する。メインメモリは、コントローラ120を介して制御される。メインメモリ115から読み出されるまたはメインメモリに書き込まれることになるデータは、相互接続部125に関連するキャッシュ160に記憶されることができる。キャッシュを提供することによって、プロセッサ105a、105b、・・・は、相互接続部125から要求が送信されてメモリコントローラ120によって処理される必要がある場合よりも迅速にメモリ115からデータにアクセスすることができる。キャッシュ160からの記憶装置は、アドレス変換を記憶するのに利用可能な記憶装置の量がアドレス記憶装置自体155の容量を超えて増加されることができるように、アドレス記憶装置155による使用のために「盗まれる」(一時的にまたは他の方法で再割り当てされる)ことができる。盗まれた記憶装置の管理は、メンテナンスキュー145、アドレス記憶装置155、およびキャッシュ160の動作と同様に、制御回路130によって処理される。制御回路は、TLB110aからの特定の変換要求に対して、ページテーブルウォークがTLBルックアップの完了前に開始されることができるように、ページテーブルウォークおよびTLBアクセスのタイミングを制御することができる。コントローラ120および制御回路130は、いくつかの例では、そのような複数のペアがメモリ115の(メモリ115の行バッファ(図示せず)によってアクセス可能な)メモリセルの単一行に記憶されることができるように、キー-値ペアの形態で変換データのメモリ115への記憶および変換データのメモリからの取得を監視するように協働することができる。メインメモリ115およびキャッシュ160自体は、DRAMを使用して実装されることができることに留意されたい。
【0010】
非同期メンテナンス
図2は、いくつかの実施形態にかかる装置200の例を示している。この装置は、ルックアップ動作およびメンテナンス動作(「要求」と総称する)を制御回路240に提供する1組の入力ポート210を備える。入力アドレスを有するルックアップ動作(ルックアップ要求)は、例えば変換ルックアサイドバッファ(TLB:Translation Lookaside Buffer)の形態をとることができるルックアップ回路230に渡される。いくつかの実施形態では、TLBは、DRAMを介して提供されることができる。メンテナンス動作(メンテナンス要求)は、メンテナンスキュー220に渡される。そのような装置200は、記憶装置システムにおける非同期メンテナンスを提供するために使用されることができ、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか1つを受信する入力ポート210と、少なくとも1つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路220と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置230とを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、メンテナンスキュー回路がリクエスタに肯定応答を送信させる装置200の例として提供される。
【0011】
そのような実施形態では、リクエスタは、中央処理装置(CPU:Central Processing Unit)などのプロセッサの形態をとることができる。装置200の入力ポート210を介して、リクエスタは、入力アドレスを含むルックアップ動作を発行することができる。リクエスタはまた、入力ポート210を介してメンテナンス要求を発行することもできる。例えば、メンテナンス動作は、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置230におけるエントリのメンテナンスに向けることができる。出力アドレス空間における出力アドレスは、物理アドレス(PA:Physical Address)または中間物理アドレス(IPA:Intermediate Physical Address)の形態をとることができる。例えば、仮想アドレス(VA:Virtual Address)と物理アドレス(PA)との間で部分的に変換するためにIPAが使用されることができる。
【0012】
2つのさらなる動作は、装置200が非同期的にメンテナンス動作を実行することを可能にする。第1に、メンテナンス動作が受信されたことに応答して、メンテナンス動作は記憶され、メンテナンスキュー回路220に肯定応答をリクエスタに返送させる。この肯定応答は、直ちに(例えば、メンテナンス動作が完了するのを待たずに)送信される。したがって、リクエスタは、メンテナンス動作が実行されるまで、ストールまたはブロックされない。しかしながら、メンテナンス動作はすぐに実行されないため、古いデータが提供されるのをアドレス記憶装置230が禁止する必要がある。換言すれば、装置200は、メンテナンス動作が実行されたかのように動作し続ける必要がある。
【0013】
第2に、入力アドレス(すなわち、変換されるアドレス)の受信に応答して、対応する出力アドレスは、メンテナンスキュー回路220によって維持されるキューに応じて提供される。同様に、これは、キューに入れられたメンテナンス動作が実行された場合に返されないデータの戻りを防ぐためにも必要である。これらのプロセスのそれぞれは、以下の
図3Aおよび
図3Bを参照してより詳細に説明される。
【0014】
図2の回路はまた、以下の例を提供する:入力アドレスの受信に対する応答における入力アドレスとの競合についてメンテナンスキューをスキャンするための制御回路240。ここで、競合がある場合にはミスを返すことによってキューとは独立して出力アドレスが提供され、そうでない場合には出力アドレスを提供する。
【0015】
入力ポート210に提供された入力アドレスがメンテナンスキュー220に保持されたメンテナンス動作の影響を受けるアドレスに関連する場合、競合が発生する可能性がある。換言すれば、メンテナンスキュー220に保持されたメンテナンス動作が実行された場合、入力アドレスに対する異なる結果がルックアップ回路230に記憶される。そのような競合が発生した結果として、また、古いデータが返されるのを防ぐために、入力アドレスに応答してTLBミスが提供される。これは、順次ページウォークプロセスを開始させ、正しい出力アドレスが取得される。競合がない場合、出力アドレスが提供されることができる。
【0016】
図2はまた、選択されたメンテナンス動作をメンテナンスキューから実行させるメンテナンス回路250の例を示している。メンテナンス回路250がメンテナンス動作を選択し、メンテナンスキュー回路220によって維持されるキューから選択されたメンテナンス動作を実行させるいくつかの方法が存在する。いくつかの実施形態では、メンテナンス回路250は、ルックアップ回路230が他の方法では接続されていない場合に実行されることになるメンテナンス動作を選択する。例えば、入力アドレスが入力ポート210において受信されない期間がある場合、メンテナンス回路250は、メンテナンス動作の1つ以上を実行させるために、このダウンタイムを利用することができる。いくつかの実施形態では、メンテナンス回路250は、メンテナンス動作を継続的にメンテナンスキュー220から選択させ、何も残らないまで実行させることができる。いくつかの実施形態では、メンテナンス動作は、メンテナンスキュー220に追加されてから、またはメンテナンスキュー220が満杯になってからある期間が経過した場合に実行されるようにスケジューリングされる。キュー選択の他の技術は、当業者に知られている。
【0017】
図2はまた、1つ以上の条件に基づいてメンテナンスキュー内の複数のエントリを組み合わせる組み合わせ回路260の例を示している。そのようなプロセスは、
図7を参照してより詳細に説明される。
【0018】
図3Aおよび
図3Bは、入力アドレスを含む到来ルックアップ動作を処理するプロセスをまとめて示している。前述したように、出力アドレス空間(例えば、物理アドレス空間または部分/中間アドレス空間)における対応する出力アドレスは、メンテナンスキューに応じて提供される。
図3Aおよび
図3Bは同時に説明される。
【0019】
プロセスは、ステップ300において開始し、例えば仮想アドレスから物理アドレスへのルックアップ動作が受信される。これは、ルックアップ回路230に送信されるCPU310などのリクエスタから生じる。これは、TLBルックアップの形態をとることができる。ステップ320において、ルックアップ回路230は、メンテナンスキュー220にアクセスしてルックアップする。次に、ステップ330において、TLBルックアップを伴うメンテナンスキュー220に競合があるかどうかが判定される。メンテナンスキュー220からルックアップ回路230への結果が、そのような競合が存在することを示す場合、ステップ340において、ルックアップ回路230は、TLBミスを発行する。これは、いくつかの実施形態では、物理アドレスを取得するために、CPU310によってまたはページテーブルウォーカとして知られている特別な回路によって開始されるページウォークを発生させる。しかしながら、ステップ330において、メンテナンスキュー220によってルックアップ回路230に発行された結果が、競合が存在しないことを示す場合、ステップ350において、タグ一致があるかどうかが判定される。競合が存在するかどうかをチェックするのと並行して、ステップ360において、TLB230でルックアップが実行され、その後、ステップ350において、タグを有する関連エントリがチェックされる。タグ一致プロセスは、ルックアップ回路230に入力アドレスが与えられた対応する出力アドレスがあるかどうかを判定する。実際には、これは、一般に、入力アドレスの一部(タグと呼ばれる)をルックアップ回路230のエントリと照合することによって生じる。そのようなタグが見つからない場合、プロセスは、ステップ340に進み、CPU310またはページウォーカ回路にTLBミスが戻される。あるいは、一致するタグが見つかった場合、ステップ370において、対応する出力アドレスがCPU310に返される。
図3Aに示すように、CPU310がメンテナンス動作を発行すると、これは、メンテナンスキュー220に発行される。例えば、ルックアップ回路230がアイドル状態にあるとき、メンテナンスキュー220は、実行されるべきメンテナンス動作を選択することができる。そして、これは、ルックアップ回路230によって記憶された変換のセットに対して実行される。肯定応答は、CPU310によって発行されたメンテナンス動作に応答してメンテナンスキュー220によって送信されることに留意されたい。したがって、CPU310は、メンテナンス動作を発行し且つそのメンテナンス動作が実行されるのを待機する結果としてブロックまたはストールする必要はない。代わりに、メンテナンス動作をキューに入れ、次に都合のよい時間に実行することが可能である。したがって、これらの図は、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のいずれか1つを受信すること300と、少なくとも1つのメンテナンス動作のメンテナンスキュー220を記憶することと、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することとを備え、入力アドレスの受信に応答して、メンテナンスキュー330に応じて出力アドレスが提供され、メンテナンス動作の記憶に応答して、リクエスタに肯定応答を送信させる方法の例を提供する。
【0020】
図4は、いくつかの実施形態にかかるメンテナンス動作を示している。特に、
図4は、メンテナンス動作がアドレス記憶装置230内の複数の変換にアクセスする例を示している。
図4はまた、メンテナンス動作がアドレス記憶装置230内の変換に順次アクセスする例と、アドレス記憶装置がメモリマッピングされるように適合され、メンテナンス動作が非一時アクセスを使用してアドレス記憶装置230内の変換にアクセスする例とを示している。
【0021】
非一時アクセスは、そのアクセスの結果として新たなエントリがキャッシュにインストールされないものである。例えば、非一時アクセスの結果として、エントリは、最終レベルキャッシュ(LLC:Last Level Cache)に記憶されない。そのようなアクションは、メンテナンス動作の結果としてキャッシュに不要なデータを追加することを回避する。したがって、近い将来にデータが再び使用されることはなく、そのため他の有用なデータを取り除くべきではない(キャッシュしてはならない)という前提がある。いくつかの実施形態では、非一時アクセスを使用するのではなく、通常のアクセスが使用され、キャッシュに追加された結果のエントリは、エントリがより容易に置き換えられるように高い置換優先度が与えられる。
【0022】
図4は、メンテナンス動作が無効化動作である例を示している。いくつかの実施形態では、無効化動作は、エントリがもはや使用可能ではないことを示すためにテーブル内の1つ以上のエントリの有効フラグを作成させる(例えば、クリアされる)。したがって、これらのエントリは、必要に応じて他のエントリに置き換えることができる。いくつかの他の実施形態では、無効化動作は、エントリを完全に削除させることができる。
【0023】
図4はまた、無効化動作が、仮想アドレス、仮想アドレスの範囲、アドレス空間識別子、仮想マシン識別子、中間物理アドレス、および物理アドレスのうちの1つ以上に基づいて、アドレス記憶装置230における1つ以上の変換を無効にする例を示している。したがって、無効化は、無効化の対象とすべきエントリを示すために、そのようなパラメータの1つ以上(任意の組み合わせ)を使用することができる。いくつかの実施形態では、他のパラメータは、追加で(またはその代わりに)使用されることができる。
【0024】
この特定の例では、無効化動作は、アドレス空間識別子(ASID:Address Space Identifier)または仮想マシン識別子(VMID:Virtual Machine Identifier)が1であるエントリを無効にすることである。これは、アドレス記憶装置の各エントリをスキャンし、1に等しい任意のエントリについてのASIDおよびVMIDの値をチェックすることによって達成される。そのようなエントリが見つかると、そのエントリがもはや有効でないことを示すために、そのエントリについての有効フラグがクリアされる。
図4の例では、これは、有効フラグをゼロ(無効)に設定することによって達成される。無効化動作は、他のフィールドに基づいて実行されることができることが理解される。フィールドは、テーブル自体にある必要はなく、他のテーブル、レジスタ、またはフラグを介してテーブルのエントリに関連付けられることができる。アドレス空間識別子および仮想マシン識別子は、双方とも、テーブルのエントリをグループに分割するために使用される技術である。特に、仮想マシン識別子(VMID)は、多数の仮想マシンを有するシステム内の特定の仮想マシンインスタンスに属するエントリを識別するために使用されることができる。同様に、アドレス空間は、各セクションがそれ自体の識別子を有する多数のセクションにセグメント化されてもよい。これらの技術は、各仮想マシンがその使用可能なメモリをその仮想マシンに応じていくつかの異なるセグメントに分割することができるように、さらに組み合わせられることができる。例えば、各アドレス空間は、特定の仮想マシンインスタンス上で実行されている異なるアプリケーションに割り当てられることができる。このようにして、アドレス記憶装置230の各エントリは、特定の目的に関連付けられることができる。したがって、無効化動作は、特定の目的に関連するアドレスを対象とすることができる。例えば、特定の仮想マシン上で実行されている特定のアプリケーションに関連する全てのアドレスに関して、例えばそのアプリケーションが終了するときに、無効化動作が実行されることができる。同様に、無効化動作は、例えばその仮想マシンが終了されるべきであった場合に、単純に仮想マシン識別子に基づいて対象とすることができる。
【0025】
上記の段落から、メンテナンス動作に時間がかかることが理解される。したがって、
図2、
図3Aおよび
図3Bを参照して説明した装置200を使用することによって、メンテナンス動作が実行される間にCPUなどのリクエスタがブロックまたはストールされる必要がないように非同期にメンテナンスを行うことができる。メンテナンス動作が実行されている記憶装置が特に大きい場合は、特に重要である。メンテナンス動作は、すぐには実行されないため、ルックアップとキューに入れられたメンテナンス動作との間に発生する可能性がある競合を解決する必要がある。これは、そのような競合をテストし、競合が検出された場合に、元のデータを検索させる(例えば、ページウォークを実行させるTLBミスを発行することによって)ことにより達成されることができる。このようにして、メンテナンス動作のキューが維持されることができ、適切なときに実行されることができる。
【0026】
複数のメンテナンス動作を同時に実行することによる非同期メンテナンス効率の向上
図4は、選択されたメンテナンス動作が、アドレス記憶装置230の少なくとも一部をスキャンすることと、満たされた条件に応答して動作を実行することとを備える例を示しており、スキャンの間、メンテナンス回路250は、さらなる条件が満たされたことに応答してさらなる動作を実行し、さらなる動作およびさらなる条件は、メンテナンスキューから実行されるさらなるメンテナンス動作に対応する。
【0027】
この特定の例では、ASIDが1である場合に無効にするための第1のメンテナンス動作が存在すると考えることができる。VMIDが1である場合、無効化を実行するための第2のメンテナンス動作が存在することがある。ルックアップ回路230内の各エントリを介して、ASIDが1であるエントリに対して第1のスキャンを実行するのではなく、VMIDが1であるルックアップ回路230のエントリのそれぞれを介して第2のスキャンを実行する。ASIDまたはVMIDの値が1であるかどうかを判定するために、各エントリが検査される単一のスキャンが実行されることができる。このようにして、ルックアップ回路230のエントリを解した単一のスキャンのみが必要とされ、これは、メンテナンス動作のオーバヘッドを低減するために使用可能である。したがって、複数のメンテナンス動作がより効率的に実行可能である。動作およびさらなる動作が同じであってもよいことが理解される。同様に、条件およびさらなる条件も同じとすることができる。
【0028】
ASIDまたはVMIDの再利用を認識することによる非同期メンテナンス効率の向上
図5は、メンテナンスキュー内のオーバーラップメンテナンス動作とオーバーラップするアドレス記憶装置230のエントリに関する入力アドレスに応答して、装置200がオーバーラップメンテナンス動作を優先するように適合された例を示している。
【0029】
特定のアプリケーションまたは仮想マシンが終了すると、そのアプリケーションに関連付けられたASID値を持つTLBエントリ、またはその仮想マシンに関連付けられたVMID値が無効化される必要がある。同じASID/VMIDの要求が受信され始めると、TLBが新たなエントリによって埋められる必要があることを意味する。しかしながら、これは、メンテナンス動作が実行される前には行うことができない。したがって、ルックアップ動作(例えば、変換要求)がそのようなメンテナンス動作とオーバーラップした場合、メンテナンス動作を促進することが望ましい場合がある。
【0030】
図5は、この改善のために調整された、
図3Bに提示されたフローチャートと同様のフローチャートを示している。プロセスは、
図3Bに関して説明したように進行する。しかしながら、ステップ330において、メンテナンス競合が検出された場合、ステップ500において、競合が発生するメンテナンス動作が、特定のASIDまたはVMIDを対象とした無効化であるかどうかが判定される。そうでなければ、プロセスは、ステップ340に進み、TLBミスが発行される。そうでなければ、ステップ510において、メンテナンス動作の優先が促進される。これは、メンテナンス動作をより迅速に実行させる。いくつかの実施形態では、メンテナンス動作の優先は、実行されることになる次のメンテナンス動作であるように、最高レベルに促進される。そして、プロセスは、TLBミスが実行されるステップ340に進み、それによりページウォークをもたらす。
【0031】
完全なメンテナンスキューに応答することによる非同期メンテナンス効率の向上
図6のフローチャートは、メンテナンスキューが満杯になったときにメンテナンス動作を受信したことに応答して、メンテナンス回路が選択されたメンテナンス動作を実行するように適合された例に関する。特に、
図6は、実行される時間が最も短いメンテナンスキューにおけるメンテナンス動作に選択が基づいている例に関する。
【0032】
いくつかの場合では、メンテナンス動作のキュー220が既に満杯になったときに、メンテナンス動作が受信されることができる。そのような場合、リクエスタは、空間がキュー220内で利用可能となるような時間まで、ブロックまたはストールされる可能性がある。これに対処する1つの方法は、メンテナンス回路250がメンテナンスキュー220に保持されているメンテナンス動作の1つを直ちに実行することであり、例えば、いくつかの実施形態では、メンテナンス回路250は、メンテナンスキュー220から実行されるべき最速のメンテナンス動作を選択し、その動作を直ちに実行する。例えば、
図6のステップ600に示すように、メンテナンス動作が受信される。ステップ610において、メンテナンスキュー220が満杯であるか否かが判定される。そうでない場合、プロセスは、ステップ670に進み、新たなメンテナンス動作がキューに追加される。そうでなければ、ステップ620において、メンテナンスキュー220内に保持されているメンテナンス動作の次のメンテナンス動作がフェッチされるループが開始される。ステップ630において、このメンテナンス動作がこれまでに判定された最速のメンテナンス動作よりも速いかどうかが判定される。デフォルトでは、メンテナンス動作がまだ検査されていない場合、これは真である。いずれにしても、この条件が満たされている場合、ステップ640において、検査されている現在のメンテナンス動作が、現在の最速動作として設定される。そして、プロセスは、ステップ650に進み、検査されている現在のメンテナンス動作がステップ630においてより高速でない場合、プロセスはステップ650に直接進む。ステップ650において、メンテナンスキュー220から検査すべきさらなるメンテナンス動作があるかどうかが判定される。そうであれば、プロセスは、ステップ620に戻り、次のメンテナンス動作がフェッチされる。そうでなければ、ステップ660において、現在の最速動作が実行される。ステップ600において受信された新たに受信したメンテナンス動作は、ステップ670においてメンテナンスキュー220に追加される。
【0033】
メンテナンス作業の組み合わせによる非同期メンテナンス効率の向上
図7はまた、1つ以上の条件に基づいてメンテナンスキュー内の複数のエントリを組み合わせる組み合わせ回路260の例を示している。例えば、いくつかの実施形態では、組み合わせ回路260は、アドレス記憶装置230内の隣接するアドレスを組み合わせる。例えば、アドレスが隣接する同じASIDおよびVMIDに関連するエントリである。このようにして、メンテナンス動作のキューは、隣接するアドレスに関連する複数のエントリをアドレスの範囲に関する単一のエントリに置き換えることによって圧縮されることができる。
【0034】
いくつかの実施形態では、1つ以上の条件は、以下を含む:(i)オーバーラップまたは隣接するVA/IPA領域がマージされることができる;(ii)VAによる無効化は、VAがASIDに属する場合、ASIDによるオーバーラップ無効化によって包含される。(iii)IPAによる無効化は、IPAがVMIDに属する場合、VMIDによるオーバーラップ無効化によって包含される。(iv)ASIDによる無効化は、ASIDがVMIDに属する場合、VMIDによる無効化によって包含される。これらの条件は、VAが関連付けられたASIDを有し、ASIDが関連付けられたVMIDを有し、IPAが関連付けられたVMIDを有するという関係に基づいている。
【0035】
図7の例を考えると、キューは、当初は5つの動作を有する。最初の2つの動作は、同じASID(1)および同じVMID(1)に関連し、アドレスが隣接している(0x1121は0x1122に隣接している)ため、単一動作にマージされることができる。したがって、条件(i)が適用される。したがって、これらの動作は、ASIDが1であり且つVMIDが1である0x1121から0x1122の範囲内のアドレスを無効にするための単一の無効化動作に置き換えることができる。同様に、初期メンテナンス動作キューの次の2つの動作はまた、同じASID(2)およびVMID(1)を対象とし、隣接アドレス(0x009Dは0x009Eに隣接する)にも関連する。したがって、これらは、2のASIDおよび1のVMIDについて、0x009Dから0x009Eの範囲を無効にするための単一のメンテナンス動作を生成するために、圧縮されることができる。したがって、圧縮されたメンテナンスキューは、3つのエントリを有する。この例では、各メンテナンス動作は、優先度に関連付けられている。この例では、新たなエントリの優先度は、組み合わせられたメンテナンス動作の優先度の最高値に等しい。このようにして、メンテナンス動作は、他の動作と組み合わされた結果として優先順位が低下することはない。他の実施形態では、新たな動作を構成する全ての動作の間で優先度を平均化することができる。他の選択肢も利用可能であり、当業者に知られることが理解される。
【0036】
したがって、メンテナンスキュー220は圧縮にされることができ、それによってリクエスタがストールまたはブロックされる必要なくメンテナンスキュー220にさらなるメンテナンス動作が追加されることができることがわかる。圧縮プロセスは、いかなるメンテナンス動作も失うことはない。組み合わせプロセスは、単にエントリを一緒に組み合わせるだけである。
【0037】
フィルキューを使用することによる非同期メンテナンス効率の向上
図8は、新たな変換のための少なくとも1つのフィル動作をアドレス記憶装置230に記憶するフィルキュー回路800の例を示しており、入力ポート210は、フィル動作を受信するように適合され、メンテナンスキュー内のオーバーラップメンテナンス動作と少なくとも一部オーバーラップするフィル動作に応答して、フィルキュー回路800は、フィル動作を記憶し、フィル動作がメンテナンス動作と完全にオーバーラップする場合、メンテナンス動作は、メンテナンスキューから除去され、そうでなければオーバーラップメンテナンス動作の優先度が高くなる。
【0038】
例えば、ページテーブルウォークが発生した場合など、新たなエントリがアドレス記憶装置230に追加される場合、保留中のメンテナンス動作と競合することがある。これが発生する可能性がある場合の1つの例は、メンテナンス動作が特定のASIDにしたがって無効化を実行するように指示され、その後に特定のマッピングを満たすフィルが行われる場合である。他の例では、特定のVAにしたがった無効化および同じVAについてのフィルは、同様の時間に発行されることができる。この場合、無効化は解除されることができ、エントリは直接入力されることができる。
【0039】
フィル動作が記憶されることができるフィルキュー800を提供することによって、フィル動作は、競合するメンテナンス動作が処理されるまで遅延されることができる。競合しているメンテナンス動作をより迅速に解決させるために、競合する(すなわち、オーバーラップする)メンテナンス動作の優先順位を高めることができる。
図8に示すように、フィル動作が受信されると、フィル動作は、最初にフィルキュー800に送られる。ルックアップ回路230がTLBの形式をとる場合、フィルキュー800は、それ自体がより小さいTLBの形式をとることができる。ここで、動作がルックアップ回路230に直接進むことができるかどうかまたは動作がフィルキュー800に保持されなければならないかどうかを判定するために、メンテナンスキューによる協議が行われる。この判定を行うプロセスは、
図9に関してより詳細に示される。競合するメンテナンス動作が完了すると、そのメンテナンス動作と競合するいかなるエントリも、フィルキュー800からルックアップ回路230に促進される。同様に、メンテナンスキュー220に入るメンテナンス動作は、既存のフィル動作がメンテナンス動作によって確実に行われるように、フィルキュー800によって協議する。いくつかの実施形態では、メンテナンス動作は、フィル動作が実行されるまで進めることができないことがある。同様に、入力アドレスがルックアップ動作の一部として提供されるとき、これは、ルックアップ回路230と同様にフィルキュー800に対してチェックされることができる。
【0040】
図9は、フィルキュー800、例えばメンテナンスキュー220から生じる協議プロセスの例を示している。ステップ900において、フィル動作が受信される。ステップ910において、メンテナンスキュー220が協議される。ステップ920において、メンテナンスキュー内のエントリのいずれかとフィル動作との間にオーバーラップがあるかどうかが判定される。例えば、メンテナンス動作のいずれかが、受信されたフィル動作に影響を与える可能性があるかどうかが判定されることができる。そのようなオーバーラップが存在しない場合、ステップ930において、フィル動作が実行される。これは、ルックアップ回路230の1つ以上のエントリを更新させる。そして、プロセスは、ステップ900に戻る。あるいは、オーバーラップが検出された場合、フィル動作は、フィルキュー800に追加され、競合するメンテナンス動作の優先順位は、ステップ940において増加される。再び、プロセスは、ステップ900に戻る。
【0041】
このプロセスは、メンテナンス動作が実行された後にフィル動作が行われる
図10Aに示されている。この例では、メンテナンス動作がアドレス記憶装置230内のエントリのいずれも影響を受けないと仮定される。しかしながら、メンテナンス動作を実行すると、その後に実行されるフィル動作は、太字で示される新たなエントリの追加をもたらす。
【0042】
したがって、
図10Aは、オーバーラップメンテナンス動作が完了したことに応答して(例えば、スキャンされているエントリの一部として)、フィル動作がアドレス記憶装置230上で実行される例を示している。代替として、
図10Bは、メンテナンス動作が実行されるときにアドレス記憶装置230に対してフィル動作が実行される例を示している。特に、メンテナンス動作は、アドレス記憶装置230のエントリをスキャンする。フィル動作が新たなエントリを挿入する位置でメンテナンス動作を実行した後、フィル動作が実行され、それにより新たなエントリを挿入する。そして、メンテナンス動作の残りの部分は、残りのエントリに対して実行されることができる。このようにして、フィル動作が行われるエントリにメンテナンス動作が影響を与えた後にフィル動作が行われるので、メンテナンス動作は、フィル動作に影響を与えない。このアプローチは、複数の動作が同時に記憶装置内の同じ空間で実行されるという点で、ローカルの主体から利益を得る。これは、フィル動作が実行されるエントリを配置するために、アドレス記憶装置230の各エントリを再スキャンする必要性を回避することができる。
【0043】
中間メンテナンスの要求を許可することによる非同期メンテナンス効率の向上
図11は、選択されたメンテナンス動作が、アドレス記憶装置230の少なくとも一部をスキャンし、満たされた条件に応答して動作を実行することを備える例を提供し、入力アドレスに関連するフィル動作を受信したことに応答して、フィル動作は、入力アドレスが選択されたメンテナンス動作に関して既にスキャンされたアドレス記憶装置230の一部に対応するときに実行される。
【0044】
したがって、メンテナンス動作が実行されている間に、入力された入力アドレスに応答して出力アドレスが同時に提供されることが可能となる。特に、既にメンテナンス動作を受けているアドレス記憶装置230の部分は、アクセス可能であるとみなすことができる一方で、アドレス記憶装置230の残りの部分は、アクセス不可能であるとみなすことができる。このようにして、入力アドレスが選択された進行中のメンテナンス動作に関して既にスキャンされたアドレス記憶装置230のエントリに関連する場合、対応する出力アドレスが提供されることができる。あるいは、入力アドレスが選択されたメンテナンス動作に関してスキャンされていないアドレス記憶装置230の一部に関連する場合、または入力アドレスがアドレス記憶装置230のエントリのいずれにも関連しない場合、ミスがリクエスタに返される。したがって、変換が提供されるためにメンテナンス動作を完了する必要はない。したがって、ミスを提供する代わりに、変換の結果が提供されることができる。メンテナンス動作が行われたアドレス記憶装置230内のポイントを追跡するために、カウンタ1000が設けられている。アドレス記憶装置230の一部がメンテナンス動作によって既にスキャンされたルックアップ動作またはフィル動作に影響を与えるかどうかを判定するために、比較器が使用可能である。
【0045】
したがって、
図2および
図11はまた、複数のエントリを記憶する記憶装置回路230であって、複数のエントリの少なくとも一部をスキャンすることによって選択されたエントリの検索を実行するように適合された記憶装置回路230と、検索の一部としてさらにスキャンされるべきである記憶装置回路230の一部に指示を記憶する基準回路1000と、基準回路によって示されるように検索の一部としてさらにスキャンされるべきである記憶装置回路230の一部からは存在しない複数のエントリの前記1つに応答して複数のエントリの1つに影響を及ぼす動作を実行する処理回路240とを備える装置の例を提供する。この場合、さらにスキャンされるべき記憶装置回路230の一部は、検索中に更新されるカウンタ1000によって指示される。いくつかの実施形態では、可能なエントリのサブセットのみが最初からであっても検索プロセスの一部であることに留意されたい。例えば、記憶装置回路230がハッシュテーブルを利用し、エントリがどこに位置するかをほぼ判定した場合、一致するエントリを見つけるためにエントリのサブセットのみが検索されることになる。このようにして、例えば、検索が実行されている間であっても記憶装置回路にエントリが挿入されることができる。
【0046】
記憶装置の盗難
図12は、プロセッサ要素1220が入力アドレスを入力ポート1210に提供するいくつかの実施形態にかかる装置1200を示している。入力アドレスは、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶する変換ルックアサイドバッファ(TLB)1230に提供される。出力アドレスポート1240は、そのアドレスにおいてメモリ1290にアクセスするために、出力アドレス(または出力アドレスのさらなる変換)が出力されることを可能にする。同時に、プロセッサ要素1220は、入力データポート1250を介してデータを受信することができる。いくつかの実施形態(
図12に示すものなど)では、入力データポートは、メモリ1290がアクセスされるとメモリ1290内のその位置におけるデータが装置に返されるようにメモリ1290から装置1200へのものである。このデータは、例えばDRAMによって裏付けられたキャッシュ1260に記憶されることができる。最後に、データが出力される出力データポート1270がある。
図12に示すものなどのいくつかの実施形態では、データ出力ポートは、装置1200がデータをプロセッサ要素に出力し返すことを可能にするために提供される。制御回路1280は、TLB1230および1260を制御するために使用される。さらにまた、キャッシュ1260は、データを記憶するために使用されるが、いくつかの変換を記憶するためにも使用される。このようにして、TLB1230は、例えば、TLB1230が変換を記憶することができないときに、変換を記憶するために記憶空間をキャッシュ1260から「盗む」。入力データポート1250および出力データポートが、それらのやり方で配置されるという義務はないことに留意されたい。例えば、データは、プロセッサ要素1220から受信され、メモリ1290に出力されることができる。実際には、データがメモリ1290から読み出され且つメモリに書き込まれる結果、データは双方向に受信および出力されることができる。さらにまた、様々なポート1210、1240、1250、1270は、入力ポート1210、1250をともにおよび出力ポート1240、1270をともに組み合わせることによって、またはプロセッサポート1210、1270をともにおよびメモリポート1240、1250をともに組み合わせることによって、または4つのポート1210、1240、1250、1270をともに組み合わせることによって-組み合わせることができる。
【0047】
結果として、
図12は、プロセッサ回路1220から入力アドレスを受信する入力アドレスポート1210と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置1230と、出力アドレスを出力する出力アドレスポート1240と、データを受信する入力データポート1250と、複数の位置の1つにデータを記憶するデータ記憶装置1260と、データ記憶装置1260に記憶されたデータを出力する出力データポート1270と、データ記憶装置1260に入力アドレスと出力アドレスとの間の変換を記憶させる制御回路1280とを備え、制御回路が、アドレス記憶装置およびデータ記憶装置からの入力アドレスが存在しないことに応答してページウォークを発生させる信号を発行するように適合される、装置1200の例を提供する。
【0048】
このようにして、変換にとって利用可能な空間量が増加することができても、アドレス記憶装置1230自体のサイズは、変更されないままである。その結果、アドレス記憶装置1230内の変換をルックアップするのに要する時間は、大幅に変更する必要はない。特に、変換がTLB1230に記憶されていることがわかっている場合、追加のアクセス時間はほとんどまたはまったく必要ではない。これは、例えば、変換がどこで見つかるかを推測するために使用される予測子を使用することによって達成されることができる。位置が不明である場合、TLB1230およびキャッシュ1260へのアクセスは、アドレス記憶装置1230およびデータ記憶装置1260の双方で変換が同時に検索されるように、並列化されることができる。この場合も、必要な検索時間の任意の増加を大幅に制限する可能性がある。
【0049】
同様に、回路サイズは、この変更の結果として大幅に増加する必要はない。特に、アドレス記憶装置1230のサイズは変更されないままであり、そのような回路上に存在すると予想されるかもしれないデータ記憶装置1260に変換が記憶されるため、変換を記憶するために「盗まれる」記憶装置は、特別なハードウェアを追加する必要はない。その結果、装置1200全体の回路空間を増加させる必要はない。したがって、回路空間の増大を必要とせずに、性能の向上が達成されることができる。
図12はまた、データ記憶装置1260およびアドレス記憶装置1230が別個のメモリである例を提供することに留意されたい。特に、変換ルックアサイドバッファ(TLB)1230およびデータキャッシュ1260は、データ回路上の別個のデバイスである。いくつかの実施形態では、これらの装置のそれぞれは、それ自体の制御回路1280の代わりにまたはそれ自体の制御回路とともに、それ自体の個別の制御回路を有することができる。しかしながら、データ記憶装置およびアドレス記憶装置を別個のメモリにする必要はない。特に、いくつかの実施形態では、アドレス記憶装置1230およびデータ記憶装置1260は、同じメモリとすることができ、それによって複数の目的のために同じメモリ領域をプールする。
【0050】
図13は、複数の位置がnウェイセット連想メモリの形態をとる例を示しており、制御回路1280は、データ記憶装置1260にnウェイの1つ以上の再利用されたウェイに変換を記憶させるように適合される。セット連想メモリには、データの部分が記憶されることができる位置がいくつかある。そのような各位置は、「ウェイ」と呼ばれる。これは、例えば、記憶されるべきデータのセットよりも著しく少ないセット連想メモリ内の記憶量が結果として生じる可能性がある。いくつかのウェイがあるそのような方法でメモリを考案することにより、メモリの柔軟性が高めることができる。例えば、記憶されるべき位置を特定するために、アドレスに対してハッシュが実行されることができる。いくつかのデータ部分が同じ位置に記憶されることを望む場合、いくつかのデータ部分が同じハッシュ値で記憶されることができるように、いくつかの「ウェイ」が提供される。1つの範囲では、メモリは、「直接マッピング」され、その場合、データが記憶されることができる位置はちょうど1つである。他の範囲では、メモリは、完全連想であり、データは、どこにでも記憶されることができる。
図13の例では、nは5であるため、メモリは、5ウェイ連想である。したがって、所与のデータ部分について、そのデータが記憶されることができる5つの異なる位置が存在する。各ウェイはまた、11個の異なるデータ部分が各ウェイ内に記憶されるのを可能にする11個のインデックス(大抵の場合、セットと呼ばれる)から構成されている。
図13の場合、2つのウェイ(斜線)は、変換ルックアサイドバッファTLB1230によって使用されることができるように再利用されている。通常これらの再利用されたウェイの1つに記憶されるデータは、代わりに他のウェイの1つに割り当てられる。
【0051】
データ記憶装置の再利用を可能にする他の方法は、アドレスの使用によるものである。
図14は、複数の位置がnウェイセット連想メモリの形態をとる例を示しており、制御回路1280は、データ記憶装置1260にメモリの1つ以上の再利用されたセット1410に変換を記憶させるように適合される。この例では、領域ポインタ1400は、アドレス記憶装置1230によって記憶される変換とデータ記憶装置1260によって記憶されるデータとの間の境界をマークするアドレスを指し示す。この例では、データ記憶装置1260内のセットが変換の記憶のために再利用されるため、境界は移動として示される。結果として、入力(および出力)アドレスがプロセッサ回路によって提供されるとき、新たな変換を作成するために、変換は、この再利用された領域に記憶されることができる。セットが再利用されると、データ記憶装置1260へのインデキシングに使用されるハッシュ関数は、もはや非再利用セットを参照しないように適合しなければならないことが理解される。一方、データ記憶装置1260の残りのセット1420は、データを記憶するために使用されることができる。この境界は、例えば、セットインデックスによって参照されてもよい。このようにして、
図14は、データ記憶装置1260およびアドレス記憶装置1230が同じメモリ内の異なる領域である例を示している。したがって、
図14はまた、アドレス記憶装置1410によって使用される領域とデータ記憶装置1420によって使用される領域との間の境界を示すための領域ポインタ1400の例を提供する。この説明の残りの目的のために、用語「アドレス記憶装置」および「データ記憶装置」が使用されるが、これは、別個の記憶を必要とするものとして解釈されるべきではない。さらにまた、以下の例は、方法、記憶位置、またはアドレスを参照することができるが、再利用ウェイまたは再利用セットの使用は交換可能な技術であることを当業者は理解する。したがって、
図14は、プロセッサ回路から入力アドレスを受信することと、アドレス記憶装置1230において、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することと、データを受信することと、データをデータ記憶装置1260に記憶することと、データ記憶装置1260に入力アドレスと出力アドレスとの間の変換を記憶させることと、入力アドレスがアドレス記憶装置およびデータ記憶装置にないことに応答して、ページウォークを発生させるための信号を発行することとを備える方法を示している。
【0052】
ポリシーを使用した記憶装置の盗難
図15は、いくつかの実施形態にかかるポリシーの例を示している。特に、
図15は、ポリシーが複数の位置のそれぞれに対してデータと比較して変換を記憶するためのプリファレンスを示す例を示している。ポリシーは、フローチャート1500の形態で示される。ステップ1510において、新たな変換が受信される。ステップ1520において、記憶位置wが変換に基づいて判定される。これは、変換の対象である入力アドレスまたは出力アドレスに対してモジュラス演算を実行するなど、ハッシュ演算を実行することに基づいて計算されることができる。ステップ1530において、現在のアドレスミス率が記憶位置wの値xよりも大きいかどうかが判定される1560。
図15の例では、wのxの値は、1000のうち5である。したがって、この場合のアドレスミス率が、プロセッサ回路1220によって実行される1000の命令ごとに5よりも大きい場合、プロセスは、ステップ1540に進み、変換が(例えばデータ記憶装置1260に)記憶される。そうでなければ、ステップ1550において、データミス率が記憶位置wの値yよりも大きいかどうかが判定される1570。この場合、値は、1000のうち30に設定される。したがって、記憶装置ミス率が、プロセッサ回路1220によって実行される1000の命令ごとに30よりも大きい場合、プロセスは、ステップ1540に進み、変換が(例えばデータ記憶装置1260に)記憶される。あるいは、プロセスは、ステップ1555に進み、アドレス記憶装置アクセス速度が記憶位置wの値zよりも大きいかどうかが判定される1580。この場合、値は、4のうち3に設定される。したがって、アドレス記憶装置に対するアクセス速度がプロセッサ回路1220によって実行される4つの命令のうち3つよりも大きい場合、プロセスは、ステップ1540に進み、変換がデータ記憶装置1260に記憶される。あるいは、プロセスは、1510に戻る。換言すれば、変換は記憶されない。この例では、変換は、3つの条件のいずれかが満たされた結果としてデータ記憶装置に記憶される。第1の点は、アドレスミス率が第1の変数xよりも大きいことである。この例では、xの値は、プロセッサ回路1220によって実行される1000の命令につき5として与えられる。しかしながら、他のシステムでは、この値は、例えば実行される1000の命令あたり10回のミスとすることができる。高いアドレス記憶装置ミス率は、システム内で発生する非効率性を示すことができる。したがって、アドレス記憶装置ミス率がある点に達すると、システムの効率を上げるために変換を記憶することがより望ましいものとなる。変換が記憶されるために満たすことができる第2の条件は、データミス率が変数yを上回ることである。この例では、記憶位置wの変数yは、実行される1000の命令あたり30に等しい。しかしながら、他のシステムでは、これは、1000命令あたり40回のミスに等しくすることができる。データ記憶装置に関する多数のミスは、実行される命令にデータローカリティが乏しいことを示す。したがって、データの記憶装置に通常使用される空間は、変換を記憶する代わりに使用される方がよい場合がある。したがって、データ記憶装置速度がある点に達すると、変換を記憶することがより望ましいことがある。変換が記憶されるために満たすことができる第3の条件は、アドレス記憶装置アクセス速度が変数zよりも上であることである。この例では、記憶位置wの変数zは、実行される4つの命令あたり3に等しい。アクセス速度が大きいことは、記憶装置の1つに競合が生じる可能性があることを示しており、したがって、代わりにデータ記憶装置にデータを記憶することによって作業負荷を分散することが望ましい可能性がある。
【0053】
図15はまた、置換ポリシーが動的に構成可能である例を示している。特に、wのx、y、およびzの値は、それぞれ、レジスタ1560、1270、および1580に記憶される。このように、記憶位置wのデータではなく変換を記憶するためのプリファレンスが変更されることができる。当然のことながら、x、y、およびzのグローバル値も設定されることができ、これは全ての記憶位置にわたって有効であることが理解される。
図15はまた、制御回路1280が少なくとも1つの第1の条件に応じて入力アドレスと出力アドレスとの間の変換をデータ記憶装置1260に記憶させるように適合された例を提供する。特に、
図15は、第1の条件が、アドレス記憶装置1230のミス率、アドレス記憶装置1230のヒット率、アドレス記憶装置1230のアクセス速度、データ記憶装置1260のミス率、データ記憶装置1260のヒット率、およびデータ記憶装置1260のアクセス速度を備えるリストからのものである例を示している。
【0054】
いくつかの他の実施形態では、ステップ1530、1550、および1555における条件は、所定の定数よりも小さい値についてテストすることによって反転されることができることが理解される。ステップ1530および1550におけるテストの場合、テストは、より小さいよりもむしろ予め定義された定数よりも大きな値とすることができる。さらにまた、ステップ1555におけるテストの場合、アクセス速度は、データ記憶装置のアクセス速度を考慮することができる。代わりにまたは同様に、他のメトリックを考慮することもできる。例えば、使用可能な他のメトリックは、いくつかのクロックサイクルにおけるミス、ヒット、またはアクセスの数である。
【0055】
図16は、制御回路1280が、入力アドレスと出力アドレスとの間の変換をデータ記憶装置1260の一部に記憶させるように適合された例を提供する。この例では、データ記憶装置1260は、キャッシュである。特に、データ記憶装置1260は、5ウェイ連想キャッシュであり、各ウェイは、11個の記憶位置を含む。変換が記憶されるデータ記憶装置1260の一部は、灰色で示されている。特に、記憶位置ごとにウェイ数が異なることに留意されたい。例えば、第1の記憶位置1650は、その位置1650に記憶するために変換が考慮されるときのデータ記憶装置ミス率およびアドレス記憶装置ミス率を考慮する第1のインジケータ1600によって指定されるように、変換の記憶のために割り当てられた単一のウェイのみを有する。第2の記憶位置1660は、変換がその位置1660に記憶するために考慮されるときにデータ記憶装置ミス率およびアドレス装置記憶ミス率を同様に考慮する第2のインジケータ1610によって指定されるように変換の記憶に割り当てられた4つのウェイを有する。このように、
図16は、部分のサイズが少なくとも1つの第2の条件に依存する例である。特に、
図16は、第2の条件が、アドレス記憶装置1230のミス率、アドレス記憶装置1230のヒット率、アドレス記憶装置1230のアクセス速度、データ記憶装置1260のミス率、データ記憶装置1260のヒット率、およびデータ記憶装置1260のアクセス速度を備えるリストからのものである例を示している。データ記憶装置ミス率およびアドレス記憶装置ミス率は、経時的に変化するため、異なる記憶位置は、変換のために割り当てられた異なる量の記憶量で終わる可能性があることが理解される。これは、ミス率が高いときに多数の変換が一度に発生した場合、メモリ内のどこにそれらが配置されることになるのかにかかわらず、それらの変換のために記憶装置が提供されることができるように柔軟性を提供する。
【0056】
記憶装置アクセスプロセスの盗難
図17Aは、アドレス記憶装置1230における入力アドレスのミスに応答して、読み出し要求が変換のためにデータ記憶装置1260に送信される例を示している。特に、処理回路1220からTLB1230において要求が受信される。要求は、対応する出力アドレスが所望される入力アドレスを含む。そのような変換がTLB1230において見つかると、「ヒット」が発生し、出力アドレスが処理回路1220に転送される。そうでなければ、「ミス」が発生し、いくつかの実施形態ではラストレベルキャッシュ(LLC)であるキャッシュ1260に要求が転送される。ここで、TLB1230によって使用されるために「盗まれた」キャッシュ1260の一部は、入力アドレスのために検索される。「ヒット」が発生した場合、要求された出力アドレスは、処理回路1220に転送される。さもなければ、「ミス」が発生し、キャッシュ1260がLLCであるため、これは、ページウォークが実行されるのをもたらす。TLB1230およびキャッシュ1260が単一のメモリである例では、転送は、同じ回路内で局所的に行われてもよいことに留意されたい。しかしながら、そのような状況では、TLB1230によって使用される第1の記憶位置での検索とキャッシュ1260によって主に使用される第2の位置での検索との2つの検索がなおも実行されてもよい。あるいは、単一の検索が実行されてもよい。これらの例のそれぞれにおいて、検索が失敗した場合、処理回路1220によってページウォークが実行される。
【0057】
図17Bは、ページウォーク要求が発行されるのと並行して、読み出し要求がデータ記憶装置1260に送信される例を示している。したがって、TLB1230において発生するミスに応答して、要求がキャッシュ1260に転送され、関連する出力アドレスを得るために処理回路1220によってページウォーク要求が同時に発行される。このようにして、ページウォークが必要な場合には、キャッシュ1260の追加検索によって遅延されない。これは、要求された出力アドレスがキャッシュ1260のいずれかに見つかったときまたはページウォークを実行することによってそれが処理回路1220に直ちに戻されるときに、キャッシュ1260が検索されると同時にページウォークが実行されるためである。
【0058】
図17Cは、入力アドレスに基づいて出力アドレスが判定されたことに応答して、装置1200が出力アドレスに関連するデータ記憶装置1260に記憶されたデータをフェッチするように適合された例を示している。要求がTLB1230によって受信されたとき、ヒットが発生した場合、対応する出力アドレスは、処理回路1220に転送される。その時点で、データ要求がTLB1230によってキャッシュ1260に対して行われる。ヒットがキャッシュ1260において発生した場合、データは、処理回路1220に戻される。TLB1230において要求された入力アドレスに対するミスがある場合、要求は、キャッシュ1260に転送される。その時点で、ヒットが存在する場合、出力アドレスは、処理回路1220に転送され、データ要求は、キャッシュ1260において内部的に行われる。その後、データ要求に対してヒットがある場合、データは、処理回路1220に転送される。したがって、処理回路1220によって行われる後続のデータアクセス要求のために、アドレスがプロセッサ回路1220に転送される必要はない。代わりに、処理回路1220を必ずしも必要とせずに、アドレスとともにデータが返されることができる。これは、アドレスが転送される時間、処理回路1220がデータ要求を発行する時間、およびデータ要求がキャッシュ1260に転送し返される時間を節約する。したがって、より迅速にデータが検索されることができる。当業者は、ミスが従来の方法で処理されることを理解する。
【0059】
図18は、いくつかの実施形態にかかる、到来要求を処理する方法を示すフローチャート1800を示している。記憶装置を盗むための1つの方法は、(例えば、偽のIOデバイスまたはキャッシュコントローラにアドレスの読み出しを試みるように指示し且つ読み出しが完了できない場合に失敗を示す信号を戻す特別な読み出し要求を介して)バッキング記憶装置に対応しないPA空間の範囲を作成することである。この機構は、例えば、制御回路1280の一部とすることができ、またはTLB1230もしくはキャッシュ1260のコントローラの一部とすることができる。これは、アドレス変換を記憶するのに適したものとしてキャッシュ可能な物理アドレス空間の領域をマークすることを可能とする。しかしながら、その範囲は返却されないため、実際にはバッキング記憶装置(例えば、DRAM)には変換が記憶されない。このようにして、キャッシュは、メモリに記憶されると考えられるがそうではない変換を「キャッシュ」することができる。要求の一部として提供されたアドレスが事前に定義された範囲内にある場合、要求は、変換のための要求である。通常、LLCにないキャッシュ可能なデータに対する要求は、データをメモリからフェッチさせることになるが、バッキングストアに対応しないPA空間の範囲の場合には、上述したように、この範囲が実際にはメモリによって裏付けされないことから、そのような動作を行うことはできない。したがって、そのような要求が検出されると、メモリから直接データをフェッチすることができない。代わりに、ページウォークを発生させる信号を(例えば、制御回路1280に)発行する。いくつかの実施形態では、これは、ページ変換をメモリからロードさせ、所望のアドレス変換をそれらのページ変換から判定させる。
【0060】
したがって、フローチャート1800は、要求が受信されるステップ1810において始まる。要求は、アドレス変換のためのものとすることができまたはデータのためのものとすることができる。したがって、要求は、データまたは変換が望まれるアドレスを含む。ステップ1820において、ルックアップが実行される。ルックアップは、前述したように、アドレス記憶装置1230およびデータ記憶装置1260のうちの1つ以上で要求を実行しようとする。所望の情報がステップ1830において配置される場合、プロセスは、ステップ1810に戻り、次の要求が受信される。あるいは、プロセスは、ステップ1840に進み、要求が所定の範囲内に入るかどうかが判定される。そうであれば、ステップ1850において、ページウォークを発生させる信号が発行される。あるいは、ステップ1860において、データがメモリからロードされる。いずれの場合も、プロセスは、ステップ1810に戻る。この例では、事前に定義された範囲は、バッキングストアに対応しないアドレス空間であると仮定される。しかしながら、他の実施形態では、ステップ1840は、アドレスが事前に定義された範囲外にあるかどうかをテストすることができ、事前に定義されたアドレス範囲は、バッキングストアに対応するアドレス空間によって定義されることができる。
【0061】
したがって、フローチャート1800は、変換がアドレス記憶装置1230およびデータ記憶装置1260から存在しないときの変換の要求に応答して、制御回路1280が信号を発行してページウォークを発生させる装置の動作を示している。
【0062】
TLBルックアップとページテーブルウォークのタイミング
図19は、1つ以上の処理要素(PE:Processing Element)1900、相互接続回路1910、ダイナミックランダムアクセスメモリ(DRAM)1920およびDRAMコントローラ1930を備えるデータ処理装置の他の例を概略的に示している。これは、物理メモリアドレスにしたがってアクセス可能なメモリ1920、メモリにアクセスするための仮想メモリアドレスを生成するための1つ以上の処理要素1900、および1つ以上の処理要素によって生成された初期メモリアドレスの、メモリに提供された物理メモリアドレスへの変換を提供するメモリアドレス変換装置1915を備えるデータ処理装置の例を提供する。いくつかの例では、ページ属性、読み取り、書き込みおよび実行許可などの属性はまた、変換プロセスの一部として取得され、出力メモリアドレスを備えることもできる。例示的な構成では、1つ以上の処理要素1900は、それぞれ、その処理要素によって生成された初期メモリアドレスの、メモリに提供された物理メモリアドレスへの変換のセットを記憶する各変換ルックアサイドバッファ1905を備え、変換ルックアサイドバッファは、メモリアドレス変換装置から変換ルックアサイドバッファによって記憶されていない変換を要求するように構成されている。
【0063】
図19の構成は、個別にまたは組み合わせて、
図20から
図31を参照して説明された様々な技術に利用可能である。
【0064】
各処理要素1900は、DRAM1920内のメモリ位置にアクセスすることができる。原則として、このアクセスは、実際の(物理的な)メモリアドレスを介して直接行うことができる。しかしながら、異なる処理要素(または、場合によっては処理要素1900上で動作する異なるオペレーティングシステム)によるメモリアクセス間の区分化およびセキュリティの程度を提供するために、処理要素1900は、いわゆる仮想または初期メモリアドレスによるメモリアドレスを参照する。これらは、DRAM1920内の実際の(物理的な)メモリ位置にアクセスするために、出力または物理メモリアドレスへの変換を必要とする。
【0065】
第1レベルの変換は、各処理要素に関連するいわゆる変換ルックアサイドバッファ(TLB)1905によって実行されることができる。TLB1905は、TLB1905に供給される仮想メモリアドレスがDRAM1920となるメモリアクセスの一部を形成する物理メモリアドレスに変換されるように、仮想メモリアドレスと物理メモリアドレスとの間の最近使用された変換を記憶またはバッファリングする。しかしながら、TLBは、サイズが限られており、処理要素1900によって呼び出される可能性のある全ての可能なメモリアドレス変換を記憶することができない。TLB1905に必要な変換が存在しない場合、TLBは、例えば相互接続回路1910の一部を形成する変換装置1915を指す。変換装置は、以下で詳細に説明され、必要な変換を提供するかまたは取得し、それをTLB1905に戻して、仮想メモリアドレスを物理メモリアドレスに変換するために使用されることができる。
【0066】
したがって、
図19は、以下を備えるデータ処理装置の例を提供する:
物理メモリアドレスにしたがってアクセス可能なメモリ1920、
メモリにアクセスするための仮想メモリアドレスを生成するための1つ以上の処理要素1900、および
1つ以上の処理要素によって生成された仮想メモリアドレスをメモリに提供された物理メモリアドレスに変換するメモリアドレス変換装置1915。
【0067】
【0068】
変換装置1915は、いわゆるDRAMバックTLBを維持する。換言すれば、変換装置1915は、TLB1905と同様であるが変換データを含む比較的大容量のバッファを、(DRAM1920の予約済み部分または陰影付き部分1921として概略的に示されている)DRAM1920内に維持する。処理要素1900に対してオフチップであることが多いDRAM容量は、典型的には、ローカルTLB1905に対して提供される典型的なオンチップスタティックラム(SRAM)よりもはるかに大きいことから、そのようなバッファをDRAM1920内に維持することは、バッファが比較的大きいのを可能にする。
【0069】
したがって、TLB1905によって要求される必要な変換を得るための第1の試みは、変換装置1915がDRAMバックTLBデータを参照することである。
【0070】
しかしながら、DRAMバックTLBもまた、ローカルTLB1905のものよりかなり大きいものの、サイズは限られている。DRAMバックTLBにおける特定の変換のためのデータが見つからない場合、いわゆるページテーブルウォークプロセスが実行されることができる。これは、DRAMにも記憶されたいわゆるページテーブルの階層を参照することを含み、これは、ともに現在許容される全てのメモリアドレス変換の決定的集合を提供する。
【0071】
変換装置1915は、DRAMバックアクセス回路2010およびページテーブルウォークアクセス回路2020を制御する制御回路2000を備える。これらの双方とも、ページテーブルウォーカアクセス回路2020の場合、DRAMコントローラ1930を介してDRAM1920のそれぞれの部分を参照して、DRAMバックTLBアクセス回路2010の場合の変換データのインスタンスまたは変換が導出可能なページテーブルデータのいずれかを取得する。したがって、制御回路2000は、変換されることになる入力初期メモリアドレスに応答して、変換データバッファから入力初期メモリアドレスの変換データの検索を要求し、変換データバッファからの検索要求の処理が完了する前にページテーブルアクセス回路によって入力初期メモリアドレスの変換データの検索を開始する。
【0072】
ページテーブルウォークアクセス回路2020は、初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにページテーブルデータにアクセスするように構成される。DRAMバックTLBは、仮想アドレス空間のサブセットに対して、変換データの1つ以上のインスタンスを記憶する変換データバッファの例である。
【0073】
その動作の一部として、DRAMバックTLBアクセス回路2010は、制御回路2000に「有効」信号2015を提供する。制御回路2000は、DRAMバックTLBアクセス回路およびページテーブルウォークアクセス回路2020に対して制御および場合によっては取消(または少なくとも取消開始)信号2005を提供する。これは、変換データバッファが、所定の変換データまたは所定の変換データが変換データバッファによって現在保持されていないことを示すデータのいずれかを含む応答を提供することにより、所与の変換データの検索要求に応答するように構成された例を提供する。
【0074】
これらの信号の使用例が以下に説明される。
【0075】
例示的な構成は、以前に提案された構成と比較して、回路2010、2020の動作のタイミングの変化を提供する。これらをコンテキストに配置するために、
図21は、以前に提案されたTLBおよび変換装置の動作を示す概略的なタイミング図である。
【0076】
図21の4つの水平ラインは、ローカルTLB1905、DRAMバックTLBアクセス回路2010、ページテーブルウォークアクセス回路2020およびDRAM1920による動作をそれぞれ概略的に示している。描かれているように、左から右に時間が流れる。
【0077】
DRAMバックTLBへのアクセスは、ローカルTLB1905が変換装置1915からの変換を(ステージ2100において)要求するように、ローカルTLB1905に必要な変換が見つからないことによって促進される。以前に提案された構成では、これは、DRAMバックTLBアクセス回路2010にDRAMにアクセスさせ、必要な変換データが存在するかどうかを調べさせる(ステージ2105において)。DRAM1920からの応答は、ステージ2110として示されている。「ヒット」がある場合、すなわち変換データの必要なインスタンスがDRAMバックTLB内に見つかった場合、その変換データは、ステージ2115としてローカルTLBに戻され、プロセスは終了する。そうでない場合、DRAMバックTLBアクセス回路は、制御回路2000がその後にページテーブルウォークアクセス回路2020に要求2120を発行してページテーブルウォークを行い、必要な変換を得るように、(「有効」信号を設定しないことによって、または「無効」を示す状態に設定することによって)変換データの必要なインスタンスが利用可能でないことを制御回路2000に示す。確立された技術を使用して、ページテーブルウォークは、ページテーブルの必要な階層にアクセスして変換を得るために、複数の連続するメモリアクセス2125を含む。結果は、ステージ2130において提供された必要な変換であり、最終的にステージ2135においてローカルTLB1905に送信され、プロセスは終了する。
【0078】
ステージ2160によって示されるように、
図21の時間クリティカルパスの一部を形成しないが、入力初期メモリアドレスの変換データが現在変換データバッファによって保持されていないとき、制御回路は、ページテーブルアクセス回路から受信した入力初期メモリアドレスの変換データをDRAM内の変換データバッファに記憶するように構成されている。
【0079】
以前に提案された例では、DRAMバックTLBルックアップが失敗または欠落するまで、ページテーブルウォークは開始されないことから、最悪の場合、ローカルTLB1905による2100における初期要求と要求された変換データを受信するローカルTLB1905との間に長い遅延2150が存在する可能性がある。
【0080】
対照的に、
図22は、本開示の実施例による例示的な構成を概略的に示しており、制御回路は、DRAMバックTLBからの変換データの必要なインスタンスの検索を要求するように構成されており、DRAMバックTLBからのその検索要求の処理が完了する前に、ページテーブルウォークアクセス回路2010による同じ変換データの検索を開始する。
【0081】
いくつかの例では、制御回路は、実質的に同時に双方のプロセスを開始することができる。
【0082】
したがって、
図22を参照すると、ローカルTLB1905による要求2100の後、制御回路2000は、DRAMバックTLBルックアップ2200を開始し、実質的に同時に、または少なくともTLBルックアップの完了前に、ページテーブルウォークアクセス回路2020によってページテーブルウォーク2205を行う。したがって、双方のプロセスは同時に進行する。これは、変換データバッファアクセスが失敗するまで待機するのではなくページテーブルアクセスを「早期」に開始することによってページテーブルアクセスが必要な状況での待ち時間を節約することができる。
【0083】
ページテーブルアクセスのオプションの早期終了
しかしながら、DRAMバックTLBアクセス回路2010によるヒットがある場合、オプションでページテーブルウォークを終了することができる(ステージ2210において概略的に示す)。これは必須ではなく、実際にはページテーブルウォークを完了させることができ、その場合、同じ変換データがページテーブルからも取得されることになる。しかしながら、TLBヒットの場合に2210においてページテーブルウォークを終了することにより、(もはや行われないページテーブルウォークの残りの部分に関して)節電が潜在的に達成されることができる。
【0084】
DRAMバックTLBヒットの場合、後続のプロセスは、
図21と同様であり、2215において変換データの必要なインスタンスがローカルTLBに提供される。
【0085】
しかしながら、DRAMバックTLBにミスが存在する場合、ページテーブルウォークは、2220において、ページテーブルウォークからローカルTLB1905に導出された必要な変換のステージ2225の準備に続く。この場合、変換を提供するための全体的な待ち時間または期間は2232として示されており、例えばDRAMバックTLBルックアップが開始されたのと同じ時間に、または少なくともDRAMバックTLBルックアップの完了前に、ページテーブルウォークを早期に開始するために、
図21に示された構成よりも期間2230として概略的に示されている時間節約がある。
【0086】
同様に、ステージ2260によって示されるように、
図22の時間クリティカルパスの一部を形成しないが、入力初期メモリアドレスの変換データが現在変換データバッファによって保持されていないとき、制御回路は、ページテーブルアクセス回路から受信した入力初期メモリアドレスの変換データをDRAM内の変換データバッファに記憶するように構成されている。
【0087】
図23は、上記説明に対する適切な方法を示す概略的なフローチャートである。
【0088】
ステップ2300において、ページテーブルデータは、初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにアクセスされる。
【0089】
ここで、初期メモリアドレス空間は、仮想メモリアドレス空間とすることができ、出力メモリアドレス空間は、物理メモリアドレス空間とすることができることに留意されたい。しかしながら、いくつかの他の構成では、場合によっては、個々のオペレーティングシステムから変換プロセスまたは少なくとも変換プロセスの全範囲を隠すように、いわゆる中間物理アドレスが使用され、したがって、IPAからPAへの変換がいわゆるハイパーバイザによって実行される。ここで説明されるものと同じ原則は、以下のいずれかに関連することができる:VAからPAへの変換;VAからIPAへの変換;および/またはIPAからPAへの変換。
【0090】
したがって、これらの技術を使用して、全てまたはいずれかが実施されることができる様々な実施形態が考えられる:
初期メモリアドレス空間は、仮想メモリアドレス空間であり、出力メモリアドレス空間は、物理メモリアドレス空間である;または、
初期メモリアドレス空間は、中間物理メモリアドレス空間であり、出力メモリアドレス空間は、物理メモリアドレス空間である;または、
初期メモリアドレス空間は、仮想メモリアドレス空間であり、出力メモリアドレス空間は、中間物理メモリアドレス空間である。
【0091】
多段階変換装置では、これらの技術は、1つ以上の変換段階に使用されることができる。
【0092】
図23を再び参照すると、ステップ2310において、初期メモリアドレス空間のサブセットについて、変換データの1つ以上のインスタンスがDRAMバックTLBなどの変換データバッファに記憶される。
【0093】
ステップ2320において、ローカルTLB1905から受信されたものなど、変換されるべき入力初期メモリアドレスに応答して、変換データは、DRAMバックTLBなどの変換データバッファからの検索のために要求される。
【0094】
そして、ステップ2330において、変換データバッファからの検索要求の処理が完了する前に、上述した回路2020などのページテーブルアクセス回路によって入力(必要な)初期メモリアドレスの変換データの検索が開始される。
【0095】
実際には、ステップ2340において、要求されたデータがDRAMバックTLBから首尾よく検索された場合、上述したようにオプションであるステップ2350は、DRAMバックTLBなどの変換データバッファからの入力初期メモリアドレスに対する変換データの検索に応答して、ページテーブルからの入力初期メモリアドレスに対する変換データの検索の取り消しを開始することを含むことができる。これは、場合によっては、ページテーブルアクセスの少なくとも一部を回避することによって電力を節約することができる。
【0096】
さもなければ、データがDRAMバックTLBから首尾よく検索されない場合には、ステップ2360において、必要な変換データがページテーブルウォーク機構によって得られ、DRAMバックTLBに記憶されることができる。
【0097】
ステップ2320、2330は、
図23に連続的に示されているが、いくつかの例では(ページテーブルアクセスが必要とされる場合に潜在的に改善された全体的な待ち時間節約を提供するために)制御回路は、変換データバッファから入力初期メモリアドレスに対する変換データの検索を要求することと実質的に同時にページテーブルアクセス回路によって入力初期メモリアドレスに対する変換データの検索を開始するように構成されることができる。換言すれば、ステップ2320、2330は、実質的に同時に発生することができる。原理的には、ステップ2330は、2つのステップのうちの第1のステップとして開始されることさえできる。しかしながら、例示的な実施形態の最も広い態様は、変換データバッファルックアップの完了前にページテーブルアクセスを開始することを想定しているに過ぎず、待ち時間の節約をさらに達成することができる。
【0098】
予測の導出
ここで
図24を参照すると、いくつかの例では、制御回路2000は、入力初期メモリアドレスが現在変換データバッファによって保持されているかどうかの予測を導出するように構成されている。この予測が導出されて使用されることができる方法が以下に説明される。
【0099】
一般に、必要な変換がDRAMバックTLBによって保持される可能性があるかどうかの予測が提供される場合、ページテーブルルックアップを遅延または回避することが可能である。他の例では、ページテーブルアクセスが要求される可能性が高いという予測が提供された場合、DRAMバックTLBルックアップを回避または遅延させることが可能である。これらのインスタンスのいずれかは、電力を節約することができる。しかしながら、予測が間違っていると、それらは、システムの全体的な待ち時間を
図21の待ち時間と同様の待ち時間に戻すことで、待ち時間ペナルティを導入することができる。換言すれば、入力初期メモリアドレスが現在変換データバッファによって保持されている少なくとも第1の閾値尤度を予測が示す場合、制御回路は、変換データバッファから応答が受信されるまで、ページテーブルアクセス回路による入力初期メモリアドレスに対する変換データの初期検索を延期するように構成される。他の例では、入力初期メモリアドレスが現在変換データバッファによって保持されている第2の閾値尤度未満であることを予測が示す場合、制御回路は、変換される入力初期メモリアドレスのインスタンスのサブセット以下について変換データバッファから入力初期メモリアドレスの変換データの検索を要求するように構成される。
【0100】
前述したように、制御回路2000は、DRAM1920によって保持されるデータにアクセスするために、バッファルックアップ回路2010およびページテーブルウォークアクセス回路2020を制御する。バッファルックアップ回路2010は、DRAMバックTLBルックアップが成功したか否かを示すために利用可能性制御信号2015を制御回路2000に供給する。例示的な構成では、その利用可能性信号はまた、カウンタ回路2400を形成する1つ以上のカウンタにも提供される(
図24)。カウンタ回路2400は、変換データバッファによる応答のうち、応答が要求された変換データおよび要求された変換データが現在変換データバッファによって保持されていないことを示すデータを含む応答のインスタンス(負の利用可能性表示2015など)を利用可能性信号が含むことを示す応答のインスタンスの相対数を検出するように構成される。
【0101】
したがって、制御回路は、変換データバッファによる応答のうち、要求された変換データを含む応答のインスタンスおよび要求された変換データが現在変換データバッファによって保持されていないことを示すデータを含む応答のインスタンスの相対数を検出するカウンタ回路を備えることができる。
【0102】
いくつかの例では、カウンタ回路2400は、要求された変換データが現在変換データバッファに保持されていない(正の利用可能性信号2015)を提供する変換データバッファに応答して一方の極性(インクリメントなど)におけるカウント値を変更し且つデータを保持していない変換データバッファ、すなわちバッファルックアップ回路2010が要求された変換データが現在変換データバッファに保持されていないことを示す負の利用可能性表示2015などのデータを提供することに応答して他方の極性(デクリメントなど)におけるカウント値を変更する回路を備える。反対の極性のいずれかは、いずれの場合にも使用されることができ、インクリメント量およびデクリメント量は互いに異なることができ、+/-1である必要はない。換言すれば、インクリメントの大きさは、デクリメントの大きさと同じである必要はない。
【0103】
比較器2410は、カウント値を第1および第2の閾値THR1、THR2と比較する。いくつかの例では、カウンタは、カウント値が上限カウント限界を超えないようにまたは0などの下限カウント限界を下回らないように制約されるように、飽和カウンタとすることができる。
【0104】
カウンタ回路2400は、1つ以上のメモリアドレストランザクションのカテゴリの相対数を検出するために、1つのカウンタまたは他の例では複数のカウンタを備えることができ、その結果、予測は、現在のトランザクションの分類とよりよくマッチングすることができる。例示的なカテゴリのリストは、以下からなるリストから選択された1つ以上を含むことができる:
・変換を要求する仮想マシンを示すカテゴリ(例えば、変換要求の一部を形成する仮想マシン識別子によって示される);
・複数の初期アドレス空間のうちの1つの初期アドレス空間を示すカテゴリ(例えば、変換要求の一部を形成するアドレス空間識別子によって示される);
・変換を要求するプロセッサのプログラムカウンタを示すカテゴリ(例えば、変換要求の一部を形成するプログラムカウンタ値によって示される);および、
・変換が要求される初期アドレスを示すカテゴリ。
【0105】
閾値THR1、THR2のうちの1つは、上限閾値などの第1の閾値尤度を示す値であってもよい。予測またはカウント値が少なくとも第1の閾値尤度を示すとき、これは、入力初期メモリアドレスが現在変換データバッファによって保持されている尤度をひいては示し、制御回路2000は、応答が変換データバッファから受信されるまで、ページテーブルウォークアクセス回路2020による入力初期メモリアドレスに対する変換データの開始検索を延期するように構成される。したがって、この閾値を使用すると、動作は、
図21に概略的に示されている動作に戻ることができる。予測が正しい場合には、
図22の動作よりも電力が節約される。予測が間違っている場合、待ち時間は、
図21のものよりも悪くならない必要がある。予測は、DRAMバックTLBによって満たされた最近の変換要求のカウント数(一般的にまたは全体的に、または複数のカウンタによってカバーされるカテゴリまたは複数のカテゴリの特定の値について)の少なくとも上限閾値に基づいている。
【0106】
入力初期メモリアドレスが現在変換データバッファによって保持されている可能性が低い第2の閾値尤度は、より低いカウント値によって表され、-カウントまたは関連するカウントが第2の閾値未満である場合-これは、変換される入力初期メモリアドレスのインスタンスのサブセット以下について変換データバッファから入力初期メモリアドレスの変換データの検索を要求するように制御回路に生じさせる。いくつかの例では、これは、まったくインスタンスではない可能性があるが、これは、成功したTLBルックアップのカウントによって尤度が決定される場合、DRAMバックTLBによって保持されるデータの増加したカウントまたは増加した尤度を検出することを困難にする可能性がある。換言すれば、カウントが下限閾値を下回ったときにDRAMバックTLBがもはや使用されない場合、必要とされる変換を保持するDRAMバックTLBの尤度が決して増加し得ない状況が生じる可能性がある。その潜在的な問題に対処するために、オプションで、モジュロN基底(ここで、Nは1よりも大きい整数)上で1からNまで反復して変換データアクセスのインスタンスをカウントアップするさらなるカウンタ2420は、(例えば、同じ動作の一部として予測機構をリセットする)ルックアップ回路2010によるDRAMバックTLBルックアップを強制するために(例えば、Nに達するたびに)比較器2420から到来する尤度情報を信号2430によってオーバーライドすることができる。換言すれば、サブセットは、変換される入力初期メモリアドレスのN個のインスタンスにおいて1つとすることができ、Nは1よりも大きい整数である。
【0107】
したがって、上述した第2の閾値の使用は、入力初期メモリアドレスが現在変換データバッファによって保持されている第2の閾値尤度未満であることを予測が示すとき、変換データバッファから入力初期メモリアドレスに対する変換データの検索を要求しないように制御回路が構成される構成の例を提供する。
【0108】
DRAMにおける記憶装置
図25は、記憶位置のアレイを提供するためのダイナミックランダムアクセスメモリの例を提供する
図19のDRAM1920の例示的な構成の態様を概略的に示している。
【0109】
DRAM1920は、行および列に配置された記憶位置2505のアレイ2500、行バッファ2510、列マルチプレクサ2515および行デコーダ2520を備える。DRAMの場合、各記憶位置2505は、ビットセルのグループを含み、各ビットセルは、対応する記憶位置2505によって表される全体値の1ビットに対応する1または0を表すために選択的に充電または放電されることができるコンデンサを含む。
【0110】
DRAM1920へのアクセスは、2段階で行われる。第1に、行アドレス2525を指定する起動コマンドが発行される。行デコーダ2520は、対応する行2535をアクティブにして、対応する行の各記憶位置2505に記憶された情報を行バッファ2510にもたらす。第2に、列アドレス2530は、実際の読み出し/書き込みコマンドに付随し、列読み出し/書き込みコマンドは、列マルチプレクサ2515を制御して、アクティブ行内の指定された列に対応する行バッファ2510のエントリを選択し、書き込みコマンドとともに提供される書き込みデータに基づいてそのエントリ内のデータを更新することができる。書き込み動作の場合、行バッファ2510への書き込みは、対応する記憶位置2505にも伝播されることができる。行バッファ2510とアクティブ行2535との間の接続を閉じるプリチャージコマンドを使用して行が閉じられる前に、同じアクティブ行内で複数の読み取り/書き込み動作が実行されることができ、アクティブ行2535の記憶位置が行バッファ2510へのいかなる書き込みも反映するように更新され、行バッファ2510をリセットして、他の行がアクティブ行として選択されるようになるのを確実にする。
【0111】
したがって、本明細書で説明する例示的なDRAMバック変換データバッファは、選択された行にアクセスし、選択された行から行バッファに情報を転送するアクセス回路(行デコーダなど)を備える。例示的な構成では、ダイナミックランダムアクセスメモリは、1行未満のエントリのそれぞれのデータバースト内のデータを読み出し、キー値に対応する行バッファの一部を送信するように構成される。一般に、例示的な構成では、DRAMは、データバーストでデータを通信し、提供されたキーに対応する行バッファの部分のみを送信するように構成される。「バースト」という用語は、データアレイからデータを読み取る方法ではなく、DRAMの通信方法を説明することに留意されたい。この技術は、キーがマッチングした後に必要なデータを出力するために使用可能である。
【0112】
図26は、
図25のメモリから、特に
図25のメモリのアクティブ行2535から検索されたデータがこの文脈でロードされた行バッファ2510から変換データを検索し、メモリアレイの行のそれぞれの部分からの情報を記憶するための複数のエントリを含む技術の動作を概略的に示している。
【0113】
キー値2600は、少なくとも変換されるべき仮想メモリアドレスに依存する。行バッファは、セット2610などのキー値データの複数のセットを含む。行バッファの各キー値K1、K2、K3、K4は、それぞれの値エントリV1、V2、V3、V4に関連付けられている。記憶されたキー値K1・・・K4のように仮想メモリアドレスへの同じ依存性を使用して新たなキー値2600を導出することによって、比較回路2620は、行バッファ2510の少なくとも1つのキーエントリK1・・・K4に記憶された情報とキー値2600を比較することができ、各キーエントリは、対応する出力メモリアドレスの少なくとも1つの表現を記憶するための関連する値エントリV1・・・V4を有する。このようにして、比較回路2620は、キー値2600に一致する情報を記憶するマッチングキーエントリであれば、少なくとも1つのキーエントリのうちのどれが存在するかを識別することができる。
【0114】
回路2634は、マッチングキーエントリがある場合、マッチングキーエントリに関連付けられた値エントリ内の出力メモリアドレスの表現を少なくとも出力するように、比較出力部2632の制御下で値V1・・・V4の1つを出力値2640として出力する出力回路2630の動作を制御するフォーマットに4つの比較回路2620の出力2632を結合する。
【0115】
値エントリは、
図27を参照して以下に説明するように必要な変換を提供する。
【0116】
したがって、
図19、
図20および
図25と併せて
図26は、以下を備えるメモリアドレス変換装置1915の例を提供する:初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにページテーブルにアクセスするページテーブルアクセス回路2020;初期アドレス空間のサブセットに対して、変換データの1つ以上のインスタンスを記憶する変換データバッファ2010、1920;変換データバッファは、行および列に配置された記憶位置のアレイ2505;アレイの行のそれぞれの部分からの情報をそれぞれ記憶する複数のエントリ2610を含む行バッファ2510と、少なくとも初期メモリアドレスに依存するキー値2600に応答して、行バッファの少なくとも1つのキーエントリK1-K4のそれぞれに記憶された情報とキー値を比較する比較回路2620であって、各キーエントリが、対応する出力メモリアドレスの少なくとも1つの表現を記憶し、どの少なくとも1つのキーエントリがキー値に一致する情報を記憶するマッチングキーエントリであるかを識別する関連値エントリを有する比較回路と、マッチングキーエントリがある場合には、少なくともマッチングキーエントリK1-K4に関連する値エントリV1-V4に出力メモリアドレスの表現を出力する出力回路2630とを含む。
【0117】
例示的な実施形態は、(ハッシュされた初期メモリアドレスによってまたは例えば初期メモリアドレスの一部に応じてアクセスされることができる)必要な行が、潜在的に単一のメモリアクセスとしてアクセスされ、その行の内容が初期メモリアドレスに依存するキー値と比較され、その行に必要な変換が含まれているかどうかを検出するように、単一のメモリアクセスを使用してDRAMバック変換データバッファ内の変換データにアクセスするための効率的な機構を提供することができる。DRAMへのメモリアクセスが潜在的に比較的遅い可能性があるため、これは、潜在的には待ち時間とメモリトラフィックを減らして変換を取得することができ、したがって、そのようなアクセスを1つだけ必要とすることが有利であり得る。メモリ行に記憶された変換データのキー・値の構成を提供することにより、複数の変換が単一のハッシュ(または他の依存関係)初期メモリアドレスによってアクセスされる行に記憶されることができ、DRAMバック変換データバッファにおける記憶同地の効率を改善することができる。特に、初期メモリアドレスの少なくとも一部にハッシュまたは他の依存関係を使用することは、メモリ行を初期メモリアドレスに対して効果的に確保することができる。例示的な構成では、DRAM行のインデックスは、ハッシュ(またはその一部)(VFN、VMID、ASID)であり、キーについても同じことが行われる。DRAM行とキーの組み合わせは、特定のタプル(VFN、VMID、ASID)に固有のものでなければならない。ハッシュ値の例は、ランダム化(または擬似ランダム化)される初期メモリアドレスに対するメモリ行の分布を可能にする。メモリ行が満杯である場合(潜在的に他の初期メモリアドレスも指すことができるため)、および新たな変換が記憶される必要がある場合(例えば、制御回路が変換データバッファにおけるページテーブルアクセス回路から受信した入力仮想メモリアドレスの変換データを変換データバッファに記憶するように構成されるように、入力仮想メモリアドレスの変換データが現在変換データバッファによって保持されていない場合など)、選択された行が変換データを記憶するための未使用の不十分な容量を有する検出器回路による検出に応答して、上書きするために選択された行におけるキーエントリおよび関連値エントリ(例えば、行自体に記憶された情報に基づくかまたはメモリコントローラの制御下の異なるメモリまたはメモリ領域にある置換ポリシー)を選択するために犠牲者削除回路が使用可能である(例えば、読み出し動作の場合と同じ行を選択するために同じハッシュ/依存関係を使用し、それによって未使用のキーおよび値エントリおよび選択された行における値エントリを提供する)。選択基準の例は、直近にアクセスされたキー値およびマッチングエントリからなるリストから選択された1つ以上;キー値およびマッチングエントリのランダムまたは擬似ランダム選択;直近にアクセスされていないキー値およびマッチングエントリ;および選択された行に対する先入れ先出し選択を含むことができる。
【0118】
例示的な構成では、キー値は、以下から構成されたリストから選択された1つ以上に依存することができる:変換を要求する仮想マシンを示すデータ;複数の仮想アドレス空間のうちの初期アドレス空間を示すデータ;および変換が要求される初期アドレスを示すデータ。したがって、これらの技術を使用すると、キー値は、関連値によって提供される必要な変換を定義することができる。
【0119】
図27は、キーが仮想マシン識別子(VMID)、アドレス空間識別子(ASID)、少なくともフレームまたはページサイズの解像度に対する初期メモリを定義する仮想フレーム番号(VFN:Virtual Frame Number)の少なくとも一部の連結を含むキー、値ペアを概略的に示しており、その値は、この例では、少なくともフレームまたはページサイズの解像度に対する出力アドレスを定義する物理フレーム番号の連結を含み、また、これらの例では、読み取り/書き込み/実行または変換に関連する他の例示的な許可などを定義する1つ以上の属性を含む。したがって、キー値は、例示的な実施形態では、以下から構成されるリストから選択された1つ以上に依存する:変換を要求する仮想マシンを示すデータ;複数の仮想アドレス空間のうちの仮想アドレス空間を示すデータ;および変換が必要な仮想アドレスを示すデータ。
【0120】
これらのフィールドのデータサイズの例は、以下のとおりである:
【0121】
したがって、各キー-値ペアは、(例えば)16バイトを占有し、4つのそのような対が64バイトメモリ行の例に記憶されることを可能にする。
【0122】
メモリ位置のアレイの行を選択するという点で、変換データバッファが初期メモリアドレスの一部に応じてアレイの行を選択するための行選択回路と、選択された行にアクセスして選択された行から行バッファ2510に情報を転送するアクセス回路(2520、
図25)とを備えるように、いわゆるハッシュジェネレータ2800(
図28)が使用可能である。与えられた特定の例では、行選択回路は、ハッシュ値に応じて行が選択されるように、仮想メモリアドレスの少なくとも一部を表す入力データ2810からハッシュ値を生成するように構成されたハッシュジェネレータ2800などのハッシュジェネレータを備える。上述したように、例の構成では、DRAM行のインデックスは、ハッシュ(またはその一部)(VFN、VMID、ASID)であり、キーについても同じことが行われる。DRAM行とキーの組み合わせは、特定のタプル(VFN、VMID、ASID)に固有のものでなければならない。
【0123】
図29は、DRAMバック変換データバッファを提供するメモリアレイにデータを書き込む回路を概略的に示している。書き込みプロセスは、入力仮想メモリアドレスの変換データが現在変換データバッファによって保持されていないとき、制御回路がページテーブルアクセス回路から受信した入力仮想初期メモリアドレスの変換データを変換データバッファに記憶するように構成される点で、
図23のステップ2360によって表されるような状況で生じる。
図29の構成は、ここに記載されているキー・値構造が使用される場合にこの書き込みに関係する。
図29の回路は、
図28の構成を使用して行を選択し、初期メモリアドレスまたは少なくともその一部に応じて行アドレス2525を取り込む行セレクタ2900を備える。これは、変換データバッファ内に変換データを記憶するために、行選択回路が、変換データのそのインスタンスのための初期メモリアドレスの少なくとも一部に応じて、アレイの行を選択するように構成された例を提供する。
【0124】
選択された行は、処理のために行バッファ2510に移動される。検出器2920は、選択された行の全ての(キー、エントリ)が占有されているかどうかを検出し、もしそうであれば、犠牲者選択および削除回路2930は、犠牲者選択プロセスを使用して、現在のエントリのうちの最も古いものを削除するなど、削除のために現在のエントリの1つを選択する。記憶装置回路2940は、新たな(キー、値)ペアを行バッファ2510に書き込み、そして、行バッファは、上述したようにメモリアレイにコピーバックされる。
【0125】
したがって、例示的な構成は、選択された行に変換データを記憶する書き込み回路2920、2930、2940の例を提供し、書き込み回路は、以下を備える:変換データを記憶するための未使用のキーエントリおよび値エントリを選択された行が有するかどうかを検出する検出器回路2920;選択された行が変換データを記憶するための不十分な未使用容量を有することの検出器回路による検出に応答して、上書きのために選択された行におけるキーエントリおよび関連値エントリを選択し、それによって未使用のキーおよび値エントリおよび選択された行における値エントリを提供する犠牲者削除回路2930;および選択された行における未使用のキーおよび値エントリに変換データを記憶する記憶装置回路2940。例では、犠牲者削除回路は、直近にアクセスされたキー値および一致するエントリからなるリストから選択された1つ以上の犠牲者選択基準にしたがって、キーエントリおよび関連値エントリを選択するように構成される。犠牲者削除回路は、有効な空き空間を作るために、キー値およびマッチングエントリを能動的に削除することができ、または単に選択されたデータの新たなデータによる上書きを制御することができる。
【0126】
このプロセスは、
図30の概略的なフローチャートによって表され、ステップ3000において、変換のための初期または仮想メモリアドレスの少なくとも一部にしたがって行が選択される。ステップ3010において、その行の内容が行バッファ2510にロードされる。ステップ3020において、選択された行のキー、値ペアに対して利用可能な空き空間がある場合、制御は、ステップ3040に移る。そうでなければ、ステップ3030において、(犠牲者)のキー、値ペアが削除のために選択されて削除される。そして、ステップ3040において、新たなエントリが行内で利用可能な空き空間に書き込まれ、ステップ3050において、行がメモリに書き戻される。この書き戻しは、DRAMコントローラのポリシーに応じて遅延される可能性があることに留意されたい。しかしながら、将来、ある時点で記憶装置アレイに書き戻される。
【0127】
図31は、
初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにページテーブルをアクセスすること(ステップ3100)と、
初期アドレス空間のサブセットに対して、行および列に配置された記憶位置のアレイを有する変換データバッファに、変換データの1つ以上のインスタンスを記憶すること(ステップ3110)と、
アレイの行のそれぞれの部分からの情報をそれぞれ記憶する複数のエントリをバッファリングすること(ステップ3120)と、
少なくとも初期メモリアドレスに応じたキー値に応答して、行バッファの少なくとも1つのキーエントリ(例えば、少なくとも2つのキーエントリ)のそれぞれに記憶された情報とキー値を比較すること(ステップ3130)とを備え、各キーエントリが、対応する出力メモリアドレスの少なくとも1つの表現を記憶するための関連値エントリを有する、概要方法を表す概略的なフローチャートである。
【0128】
ステップ3130における比較の結果、行が要求された変換を含まない場合、制御はステップ3140に移り、「有効」信号がコントローラ2000によって「使用不可能」であることを示すように設定される。そうでなければ、本方法は、以下のように続く:
どの少なくとも1つのキーエントリが、もしあれば、キー値に一致する情報を記憶するマッチングキーエントリであるかを識別し(ステップ3150)、
マッチングキーエントリがある場合、少なくともマッチングキーエントリに関連する値エントリ内の出力メモリアドレスの表現を出力する(ステップ3160)。
【0129】
本出願において、「・・・ように構成された」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の構成または方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有することができ、またはプロセッサまたは他の処理装置が機能を実行するようにプログラムされることができる。「ように構成された」は、定義された動作を提供するために装置要素が何らかの方法で変更される必要があることを意味しない。
【0130】
本発明の例示的な実施形態が添付図面を参照して詳細に説明されたが、本発明は、これらの厳密な実施形態に限定されるものではなく、当業者であれば、添付の特許請求の範囲によって定義される本発明の範囲および趣旨から逸脱することなく、様々な変形、追加および変更を行うことができることが理解されるべきである。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴によって行うことができる。