(57)【要約】      （修正有）【課題】記憶装置上でアドレス変換回路における古い変換の除去などのメンテナンスが行われている間に、リクエスタによるアクセスがブロックされることがない装置を提供する。【解決手段】装置２００は、リクエスタから入力アドレスを含むルックアップ動作およびメンテナンス動作のいずれか１つを受信する入力ポート２１０と、少なくとも１つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路２２０と、入力アドレスと出力アドレス空間との間の変換を出力アドレス空間に記憶するアドレス記憶装置２３０とを備える。装置は入力アドレスの受信に応答して、出力アドレスをメンテナンスキューに応じて提供する。メンテナンス動作の記憶に応答して、メンテナンスキュー回路は、リクエスタに肯定応答を送信する。【選択図】図２
2019096309.tif 000002
【特許請求の範囲】
【請求項１】
リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信する入力ポートと、
少なくとも１つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路と、
前記入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置と
を備え、
前記入力アドレスの受信に応答して、前記出力アドレスが前記メンテナンスキューに応じて提供され、
前記メンテナンス動作の記憶に応答して、前記メンテナンスキュー回路が前記リクエスタに肯定応答を送信させる、
装置。
【請求項２】
前記入力アドレスの受信に対する応答における前記入力アドレスとの競合について前記メンテナンスキューをスキャンするための制御回路
を備え、
競合がある場合にはミスを返すことによって前記メンテナンスキューとは独立して前記出力アドレスが提供され、そうでない場合には前記出力アドレスを提供する、
請求項１に記載の装置。
【請求項３】
前記メンテナンス動作が前記アドレス記憶装置内の複数の変換にアクセスする、
請求項１または２に記載の装置。
【請求項４】
前記メンテナンス動作が前記アドレス記憶装置内の変換に順次アクセスする、
請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記アドレス記憶装置が、メモリマッピングされるように適合されており、
前記メンテナンス動作が、非一時的アクセスを使用して前記アドレス記憶装置内の変換にアクセスする、
請求項３または４に記載の装置。
【請求項６】
前記メンテナンス動作が無効化動作である、
請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記無効化動作が、仮想アドレス、仮想アドレスの範囲、アドレス空間識別子、仮想マシン識別子、中間物理アドレス、および物理アドレスのうちの１つ以上に基づいて、前記アドレス記憶装置における１つ以上の変換を無効にする、
請求項６に記載の装置。
【請求項８】
選択されたメンテナンス動作を前記メンテナンスキューから実行させるメンテナンス回路を備える、
請求項１から７のいずれか１項に記載の装置。
【請求項９】
前記メンテナンスキューが満杯になったときにメンテナンス動作を受信したことに応答して、前記メンテナンス回路が、前記選択されたメンテナンス動作が実行されるように適合される、
請求項８に記載の装置。
【請求項１０】
実行される時間が最も短い前記メンテナンスキューにおけるメンテナンス動作に前記選択が基づいている、
請求項９に記載の装置。
【請求項１１】
前記選択されたメンテナンス動作が、前記アドレス記憶装置の少なくとも一部をスキャンすることと、満たされた条件に応答して動作を実行することとを備え、
前記スキャンの間、前記メンテナンス回路が、さらなる条件が満たされたことに応答してさらなる動作を実行し、
前記さらなる動作およびさらなる条件が、前記メンテナンスキューから実行されるさらなるメンテナンス動作に対応する、
請求項８に記載の装置。
【請求項１２】
前記メンテナンスキュー内のオーバーラップメンテナンス動作とオーバーラップする前記アドレス記憶装置のエントリに関する入力アドレスに応答して、前記装置が前記オーバーラップメンテナンス動作を優先するように適合されている、
請求項８に記載の装置。
【請求項１３】
新たな変換のための少なくとも１つのフィル動作を前記アドレス記憶装置に記憶するフィルキュー回路
を備え、
前記入力ポートが、前記フィル動作を受信するように適合され、
前記メンテナンスキュー内のオーバーラップメンテナンス動作と少なくとも一部オーバーラップする前記フィル動作に応答して、前記フィルキュー回路が、前記フィル動作を記憶し、
前記フィル動作が前記メンテナンス動作と完全にオーバーラップする場合、前記メンテナンス動作が、前記メンテナンスキューから除去され、
そうでなければ前記オーバーラップメンテナンス動作の優先度が高くなる、
請求項１から１２のいずれか１項に記載の装置。
【請求項１４】
前記オーバーラップメンテナンス動作が完了したことに応答して、前記アドレス記憶装置に対して前記フィル動作が実行される、
請求項１３に記載の装置。
【請求項１５】
前記メンテナンス動作が実行されると、前記アドレス記憶装置に対して前記フィル動作が実行される、
請求項１３に記載の装置。
【請求項１６】
前記選択されたメンテナンス動作が、前記アドレス記憶装置の少なくとも一部をスキャンし、条件が満たされたことに応答して動作を実行することを備え、
前記入力アドレスの受信に応答して、前記入力アドレスが前記選択されたメンテナンス動作に関して既にスキャンされた前記アドレス記憶装置の一部にあるときに、前記出力アドレスが提供される、
請求項８に記載の装置。
【請求項１７】
前記選択されたメンテナンス動作が、前記アドレス記憶装置の少なくとも一部をスキャンし、条件が満たされたことに応答して動作を実行することを備え、
入力アドレスに関連するフィル動作を受信したことに応答して、前記入力アドレスが前記選択されたメンテナンス動作に関して既にスキャンされた前記アドレス記憶装置の一部に対応するときに、前記フィル動作が実行される、
請求項８に記載の装置。
【請求項１８】
１つ以上の条件に基づいて前記メンテナンスキューにおける複数のエントリを組み合わせるための組み合わせ回路
を備える、請求項１から１７のいずれか１項に記載の装置。
【請求項１９】
リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信することと、
少なくとも１つのメンテナンス動作のメンテナンスキューを記憶することと、
前記入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することと
を備え、
前記入力アドレスの受信に応答して、前記出力アドレスが前記メンテナンスキューに応じて提供され、
前記メンテナンス動作の記憶に応答して、前記リクエスタに肯定応答を送信させる、
方法。
【請求項２０】
リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信する手段と、
少なくとも１つのメンテナンス動作のメンテナンスキューを記憶する手段と、
前記入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶する手段と
を備え、
前記入力アドレスの受信に応答して、前記出力アドレスが前記メンテナンスキューに応じて提供され、
前記メンテナンス動作の記憶に応答して、前記リクエスタに肯定応答を送信させる、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メンテナンス動作の実行に関する。
【背景技術】
【０００２】
データ処理システムでは、データリクエスタ（プロセッサなど）は、記憶装置に保持されているデータを要求することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、ある時点では、例えば、スムーズで効率的な記憶装置の稼働を確保するために、その記憶装置上でメンテナンスを行う必要がある。そのようなメンテナンスは、例えば、アドレス変換回路における古い変換の除去を必要とすることができる。メンテナンスが実行されている間、記憶装置は、通常、割り当てを解除するためにエントリをスキャンする必要があることがあるため、アクセス不能であると考えられる。したがって、メンテナンスを実行するためのリクエスタからの要求は、リクエスタおよび／または記憶装置をブロックさせる可能性がある。しかしながら、記憶装置のサイズが大きくなるにつれて、記憶装置がブロックされる時間が長くなることが予想される。ある時点で、リクエスタ（またはリクエスタの記憶装置へのアクセス）がブロックされる時間の長さは許容できないほど長くなる。したがって、リクエスタがブロックされている時間を短縮しながらメンテナンスが行われる方法を見つけることが望ましい。
【課題を解決するための手段】
【０００４】
第１の構成例から見ると、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信する入力ポートと、少なくとも１つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置とを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、メンテナンスキュー回路がリクエスタに肯定応答を送信させる、装置が提供される。
【０００５】
第２の構成例から見ると、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信することと、少なくとも１つのメンテナンス動作のメンテナンスキューを記憶することと、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することとを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、リクエスタに肯定応答を送信させる、方法が提供される。
【０００６】
第３の構成例から見ると、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信する手段と、少なくとも１つのメンテナンス動作のメンテナンスキューを記憶する手段と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶する手段とを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、リクエスタに肯定応答を送信させる、装置が提供される。
【０００７】
本技術は、添付図面に示されている実施形態を参照して、単なる例として、さらに説明される。
【図面の簡単な説明】
【０００８】
【図１】図１は、いくつかの実施形態にかかる装置を示している。
【図２】図２は、いくつかの実施形態にかかる装置を示している。
【図３Ａ】図３Ａは、いくつかの実施形態にかかるＣＰＵによって異なる要求が分配される方法をまとめて示している。
【図３Ｂ】図３Ｂは、いくつかの実施形態にかかるＣＰＵによって異なる要求が分配される方法をまとめて示している。
【図４】図４は、いくつかの実施形態にかかるメンテナンス動作を示している。
【図５】図５は、重複する要求を処理するプロセスを示している。
【図６】図６は、いくつかの実施形態にかかる新たなメンテナンス動作を受信するプロセスを示している。
【図７】図７は、いくつかの実施形態にかかるメンテナンス動作の組み合わせを示している。
【図８】図８は、いくつかの実施形態にかかるフィルキューの使用を示している。
【図９】図９は、いくつかの実施形態にかかる、フィルキューに対して協議するプロセスをフローチャート形式で示している。
【図１０Ａ】図１０Ａは、いくつかの実施形態にかかるフィル動作およびメンテナンス動作を実行する第１のプロセスを示している。
【図１０Ｂ】図１０Ｂは、いくつかの実施形態にかかるフィル動作およびメンテナンス動作を実行する第２のプロセスを示している。
【図１１】図１１は、いくつかの実施形態にかかるメンテナンス動作中にアクセス要求を実行するプロセスを示している。
【図１２】図１２は、いくつかの実施形態にかかる例示的な装置を示している。
【図１３】図１３は、いくつかの実施形態にかかるキャッシュ内のウェイの再割り当てを示している。
【図１４】図１４は、いくつかの実施形態にかかる、単一のメモリがポインタを使用して複数の目的に割り当てられることができる方法を示している。
【図１５】図１５は、いくつかの実施形態にかかる、データおよびアドレス変換を動的に再割り当てする例示的な方法を示している。
【図１６】図１６は、いくつかの実施形態にかかる、異なる割り当てポリシーの使用がキャッシュウェイの分配を変更する方法を示している。
【図１７Ａ】図１７Ａは、いくつかの実施形態にかかる、ＴＬＢにおけるアドレスの要求が転送される方法を示している。
【図１７Ｂ】図１７Ｂは、いくつかの実施形態にかかる、アドレスの要求を並行して発行することを示している。
【図１７Ｃ】図１７Ｃは、いくつかの実施形態にかかる、アドレスの変換を実行することによって変換されたアドレスが提供されてデータがフェッチされるプロセスを示している。
【図１８】図１８は、いくつかの実施形態にかかる、到来要求を処理する方法を示すフローチャートを示している。
【図１９】図１９は、データ処理装置を概略的に示している。
【図２０】図２０は、アドレス変換回路およびＤＲＡＭにおける変換データの記憶装置を概略的に示している。
【図２１】図２１は、概略的なタイミング図である。
【図２２】図２２は、概略的なタイミング図である。
【図２３】図２３は、方法を示す概略的なフローチャートである。
【図２４】図２４は、アドレス変換回路を概略的に示している。
【図２５】図２５は、ＤＲＡＭを概略的に示している。
【図２６】図２６は、図２５のＤＲＡＭにおけるデータ記憶装置を概略的に示している。
【図２７】図２７は、キー−値ペアを概略的に示している。
【図２８】図２８は、ハッシュジェネレータを概略的に示している。
【図２９】図２９は、書き込み回路を概略的に示している。
【図３０】図３０は、各方法を示す概略的なフローチャートである。
【図３１】図３１は、各方法を示す概略的なフローチャートである。
【発明を実施するための形態】
【０００９】
この説明は、任意の組み合わせでともに使用されることができる潜在的に直交するいくつかの技術に関する。図１は、以下に記載される全ての技術が同時に使用される例示的な装置１００を示している。本装置は、出力空間における出力アドレスへの入力アドレスの変換のための専用変換ルックアサイドバッファ１１０ａ、１１０ｂ、・・・をそれぞれ有する複数のプロセッサ１０５ａ、１０５ｂ・・・、を含む。各プロセッサは、１つ以上の入力ポート１３５を介して相互接続部１２５にメンテナンス動作、ルックアップ動作、およびフィル動作を送信することができる。これらの動作のそれぞれは、相互接続部１２５に関連するアドレス記憶装置１５５（変換データバッファとして機能することができる）に関する。ルックアップ動作は、出力空間における出力アドレスが供給されるべき入力または初期アドレスを含む。フィル動作は、そのような変換を提供するために使用される。一方、メンテナンスキュー１４５は、プロセッサ１１０ａが実行されることになるメンテナンス動作を待機する必要がないように、メンテナンス回路１５０によってアドレス記憶装置１５５上で非同期的に実行されるメンテナンス動作を記憶する。アドレス記憶装置１５５は、変換データが実際にメモリ１１５に記憶されることができ且ついわゆるページテーブルウォークのためにメモリ１１５にアクセスしてアドレス記憶装置を占有することもできる、さらなるＴＬＢにアクセスするための回路の形態をとることができる。相互接続部１２５は、１つ以上の出力ポート１４０を介したメインメモリ１１５への接続を提供する。メインメモリは、コントローラ１２０を介して制御される。メインメモリ１１５から読み出されるまたはメインメモリに書き込まれることになるデータは、相互接続部１２５に関連するキャッシュ１６０に記憶されることができる。キャッシュを提供することによって、プロセッサ１０５ａ、１０５ｂ、・・・は、相互接続部１２５から要求が送信されてメモリコントローラ１２０によって処理される必要がある場合よりも迅速にメモリ１１５からデータにアクセスすることができる。キャッシュ１６０からの記憶装置は、アドレス変換を記憶するのに利用可能な記憶装置の量がアドレス記憶装置自体１５５の容量を超えて増加されることができるように、アドレス記憶装置１５５による使用のために「盗まれる」（一時的にまたは他の方法で再割り当てされる）ことができる。盗まれた記憶装置の管理は、メンテナンスキュー１４５、アドレス記憶装置１５５、およびキャッシュ１６０の動作と同様に、制御回路１３０によって処理される。制御回路は、ＴＬＢ１１０ａからの特定の変換要求に対して、ページテーブルウォークがＴＬＢルックアップの完了前に開始されることができるように、ページテーブルウォークおよびＴＬＢアクセスのタイミングを制御することができる。コントローラ１２０および制御回路１３０は、いくつかの例では、そのような複数のペアがメモリ１１５の（メモリ１１５の行バッファ（図示せず）によってアクセス可能な）メモリセルの単一行に記憶されることができるように、キー−値ペアの形態で変換データのメモリ１１５への記憶および変換データのメモリからの取得を監視するように協働することができる。メインメモリ１１５およびキャッシュ１６０自体は、ＤＲＡＭを使用して実装されることができることに留意されたい。
【００１０】
非同期メンテナンス
図２は、いくつかの実施形態にかかる装置２００の例を示している。この装置は、ルックアップ動作およびメンテナンス動作（「要求」と総称する）を制御回路２４０に提供する１組の入力ポート２１０を備える。入力アドレスを有するルックアップ動作（ルックアップ要求）は、例えば変換ルックアサイドバッファ（ＴＬＢ：Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）の形態をとることができるルックアップ回路２３０に渡される。いくつかの実施形態では、ＴＬＢは、ＤＲＡＭを介して提供されることができる。メンテナンス動作（メンテナンス要求）は、メンテナンスキュー２２０に渡される。そのような装置２００は、記憶装置システムにおける非同期メンテナンスを提供するために使用されることができ、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のうちのいずれか１つを受信する入力ポート２１０と、少なくとも１つのメンテナンス動作のメンテナンスキューを記憶するメンテナンスキュー回路２２０と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置２３０とを備え、入力アドレスの受信に応答して、出力アドレスがメンテナンスキューに応じて提供され、メンテナンス動作の記憶に応答して、メンテナンスキュー回路がリクエスタに肯定応答を送信させる装置２００の例として提供される。
【００１１】
そのような実施形態では、リクエスタは、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサの形態をとることができる。装置２００の入力ポート２１０を介して、リクエスタは、入力アドレスを含むルックアップ動作を発行することができる。リクエスタはまた、入力ポート２１０を介してメンテナンス要求を発行することもできる。例えば、メンテナンス動作は、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置２３０におけるエントリのメンテナンスに向けることができる。出力アドレス空間における出力アドレスは、物理アドレス（ＰＡ：Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）または中間物理アドレス（ＩＰＡ：Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）の形態をとることができる。例えば、仮想アドレス（ＶＡ：Ｖｉｒｔｕａｌ  Ａｄｄｒｅｓｓ）と物理アドレス（ＰＡ）との間で部分的に変換するためにＩＰＡが使用されることができる。
【００１２】
２つのさらなる動作は、装置２００が非同期的にメンテナンス動作を実行することを可能にする。第１に、メンテナンス動作が受信されたことに応答して、メンテナンス動作は記憶され、メンテナンスキュー回路２２０に肯定応答をリクエスタに返送させる。この肯定応答は、直ちに（例えば、メンテナンス動作が完了するのを待たずに）送信される。したがって、リクエスタは、メンテナンス動作が実行されるまで、ストールまたはブロックされない。しかしながら、メンテナンス動作はすぐに実行されないため、古いデータが提供されるのをアドレス記憶装置２３０が禁止する必要がある。換言すれば、装置２００は、メンテナンス動作が実行されたかのように動作し続ける必要がある。
【００１３】
第２に、入力アドレス（すなわち、変換されるアドレス）の受信に応答して、対応する出力アドレスは、メンテナンスキュー回路２２０によって維持されるキューに応じて提供される。同様に、これは、キューに入れられたメンテナンス動作が実行された場合に返されないデータの戻りを防ぐためにも必要である。これらのプロセスのそれぞれは、以下の図３Ａおよび図３Ｂを参照してより詳細に説明される。
【００１４】
図２の回路はまた、以下の例を提供する：入力アドレスの受信に対する応答における入力アドレスとの競合についてメンテナンスキューをスキャンするための制御回路２４０。ここで、競合がある場合にはミスを返すことによってキューとは独立して出力アドレスが提供され、そうでない場合には出力アドレスを提供する。
【００１５】
入力ポート２１０に提供された入力アドレスがメンテナンスキュー２２０に保持されたメンテナンス動作の影響を受けるアドレスに関連する場合、競合が発生する可能性がある。換言すれば、メンテナンスキュー２２０に保持されたメンテナンス動作が実行された場合、入力アドレスに対する異なる結果がルックアップ回路２３０に記憶される。そのような競合が発生した結果として、また、古いデータが返されるのを防ぐために、入力アドレスに応答してＴＬＢミスが提供される。これは、順次ページウォークプロセスを開始させ、正しい出力アドレスが取得される。競合がない場合、出力アドレスが提供されることができる。
【００１６】
図２はまた、選択されたメンテナンス動作をメンテナンスキューから実行させるメンテナンス回路２５０の例を示している。メンテナンス回路２５０がメンテナンス動作を選択し、メンテナンスキュー回路２２０によって維持されるキューから選択されたメンテナンス動作を実行させるいくつかの方法が存在する。いくつかの実施形態では、メンテナンス回路２５０は、ルックアップ回路２３０が他の方法では接続されていない場合に実行されることになるメンテナンス動作を選択する。例えば、入力アドレスが入力ポート２１０において受信されない期間がある場合、メンテナンス回路２５０は、メンテナンス動作の１つ以上を実行させるために、このダウンタイムを利用することができる。いくつかの実施形態では、メンテナンス回路２５０は、メンテナンス動作を継続的にメンテナンスキュー２２０から選択させ、何も残らないまで実行させることができる。いくつかの実施形態では、メンテナンス動作は、メンテナンスキュー２２０に追加されてから、またはメンテナンスキュー２２０が満杯になってからある期間が経過した場合に実行されるようにスケジューリングされる。キュー選択の他の技術は、当業者に知られている。
【００１７】
図２はまた、１つ以上の条件に基づいてメンテナンスキュー内の複数のエントリを組み合わせる組み合わせ回路２６０の例を示している。そのようなプロセスは、図７を参照してより詳細に説明される。
【００１８】
図３Ａおよび図３Ｂは、入力アドレスを含む到来ルックアップ動作を処理するプロセスをまとめて示している。前述したように、出力アドレス空間（例えば、物理アドレス空間または部分／中間アドレス空間）における対応する出力アドレスは、メンテナンスキューに応じて提供される。図３Ａおよび図３Ｂは同時に説明される。
【００１９】
プロセスは、ステップ３００において開始し、例えば仮想アドレスから物理アドレスへのルックアップ動作が受信される。これは、ルックアップ回路２３０に送信されるＣＰＵ３１０などのリクエスタから生じる。これは、ＴＬＢルックアップの形態をとることができる。ステップ３２０において、ルックアップ回路２３０は、メンテナンスキュー２２０にアクセスしてルックアップする。次に、ステップ３３０において、ＴＬＢルックアップを伴うメンテナンスキュー２２０に競合があるかどうかが判定される。メンテナンスキュー２２０からルックアップ回路２３０への結果が、そのような競合が存在することを示す場合、ステップ３４０において、ルックアップ回路２３０は、ＴＬＢミスを発行する。これは、いくつかの実施形態では、物理アドレスを取得するために、ＣＰＵ３１０によってまたはページテーブルウォーカとして知られている特別な回路によって開始されるページウォークを発生させる。しかしながら、ステップ３３０において、メンテナンスキュー２２０によってルックアップ回路２３０に発行された結果が、競合が存在しないことを示す場合、ステップ３５０において、タグ一致があるかどうかが判定される。競合が存在するかどうかをチェックするのと並行して、ステップ３６０において、ＴＬＢ２３０でルックアップが実行され、その後、ステップ３５０において、タグを有する関連エントリがチェックされる。タグ一致プロセスは、ルックアップ回路２３０に入力アドレスが与えられた対応する出力アドレスがあるかどうかを判定する。実際には、これは、一般に、入力アドレスの一部（タグと呼ばれる）をルックアップ回路２３０のエントリと照合することによって生じる。そのようなタグが見つからない場合、プロセスは、ステップ３４０に進み、ＣＰＵ３１０またはページウォーカ回路にＴＬＢミスが戻される。あるいは、一致するタグが見つかった場合、ステップ３７０において、対応する出力アドレスがＣＰＵ３１０に返される。図３Ａに示すように、ＣＰＵ３１０がメンテナンス動作を発行すると、これは、メンテナンスキュー２２０に発行される。例えば、ルックアップ回路２３０がアイドル状態にあるとき、メンテナンスキュー２２０は、実行されるべきメンテナンス動作を選択することができる。そして、これは、ルックアップ回路２３０によって記憶された変換のセットに対して実行される。肯定応答は、ＣＰＵ３１０によって発行されたメンテナンス動作に応答してメンテナンスキュー２２０によって送信されることに留意されたい。したがって、ＣＰＵ３１０は、メンテナンス動作を発行し且つそのメンテナンス動作が実行されるのを待機する結果としてブロックまたはストールする必要はない。代わりに、メンテナンス動作をキューに入れ、次に都合のよい時間に実行することが可能である。したがって、これらの図は、リクエスタから、入力アドレスを含むルックアップ動作、およびメンテナンス動作のいずれか１つを受信すること３００と、少なくとも１つのメンテナンス動作のメンテナンスキュー２２０を記憶することと、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することとを備え、入力アドレスの受信に応答して、メンテナンスキュー３３０に応じて出力アドレスが提供され、メンテナンス動作の記憶に応答して、リクエスタに肯定応答を送信させる方法の例を提供する。
【００２０】
図４は、いくつかの実施形態にかかるメンテナンス動作を示している。特に、図４は、メンテナンス動作がアドレス記憶装置２３０内の複数の変換にアクセスする例を示している。図４はまた、メンテナンス動作がアドレス記憶装置２３０内の変換に順次アクセスする例と、アドレス記憶装置がメモリマッピングされるように適合され、メンテナンス動作が非一時アクセスを使用してアドレス記憶装置２３０内の変換にアクセスする例とを示している。
【００２１】
非一時アクセスは、そのアクセスの結果として新たなエントリがキャッシュにインストールされないものである。例えば、非一時アクセスの結果として、エントリは、最終レベルキャッシュ（ＬＬＣ：Ｌａｓｔ  Ｌｅｖｅｌ  Ｃａｃｈｅ）に記憶されない。そのようなアクションは、メンテナンス動作の結果としてキャッシュに不要なデータを追加することを回避する。したがって、近い将来にデータが再び使用されることはなく、そのため他の有用なデータを取り除くべきではない（キャッシュしてはならない）という前提がある。いくつかの実施形態では、非一時アクセスを使用するのではなく、通常のアクセスが使用され、キャッシュに追加された結果のエントリは、エントリがより容易に置き換えられるように高い置換優先度が与えられる。
【００２２】
図４は、メンテナンス動作が無効化動作である例を示している。いくつかの実施形態では、無効化動作は、エントリがもはや使用可能ではないことを示すためにテーブル内の１つ以上のエントリの有効フラグを作成させる（例えば、クリアされる）。したがって、これらのエントリは、必要に応じて他のエントリに置き換えることができる。いくつかの他の実施形態では、無効化動作は、エントリを完全に削除させることができる。
【００２３】
図４はまた、無効化動作が、仮想アドレス、仮想アドレスの範囲、アドレス空間識別子、仮想マシン識別子、中間物理アドレス、および物理アドレスのうちの１つ以上に基づいて、アドレス記憶装置２３０における１つ以上の変換を無効にする例を示している。したがって、無効化は、無効化の対象とすべきエントリを示すために、そのようなパラメータの１つ以上（任意の組み合わせ）を使用することができる。いくつかの実施形態では、他のパラメータは、追加で（またはその代わりに）使用されることができる。
【００２４】
この特定の例では、無効化動作は、アドレス空間識別子（ＡＳＩＤ：Ａｄｄｒｅｓｓ  Ｓｐａｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）または仮想マシン識別子（ＶＭＩＤ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｉｄｅｎｔｉｆｉｅｒ）が１であるエントリを無効にすることである。これは、アドレス記憶装置の各エントリをスキャンし、１に等しい任意のエントリについてのＡＳＩＤおよびＶＭＩＤの値をチェックすることによって達成される。そのようなエントリが見つかると、そのエントリがもはや有効でないことを示すために、そのエントリについての有効フラグがクリアされる。図４の例では、これは、有効フラグをゼロ（無効）に設定することによって達成される。無効化動作は、他のフィールドに基づいて実行されることができることが理解される。フィールドは、テーブル自体にある必要はなく、他のテーブル、レジスタ、またはフラグを介してテーブルのエントリに関連付けられることができる。アドレス空間識別子および仮想マシン識別子は、双方とも、テーブルのエントリをグループに分割するために使用される技術である。特に、仮想マシン識別子（ＶＭＩＤ）は、多数の仮想マシンを有するシステム内の特定の仮想マシンインスタンスに属するエントリを識別するために使用されることができる。同様に、アドレス空間は、各セクションがそれ自体の識別子を有する多数のセクションにセグメント化されてもよい。これらの技術は、各仮想マシンがその使用可能なメモリをその仮想マシンに応じていくつかの異なるセグメントに分割することができるように、さらに組み合わせられることができる。例えば、各アドレス空間は、特定の仮想マシンインスタンス上で実行されている異なるアプリケーションに割り当てられることができる。このようにして、アドレス記憶装置２３０の各エントリは、特定の目的に関連付けられることができる。したがって、無効化動作は、特定の目的に関連するアドレスを対象とすることができる。例えば、特定の仮想マシン上で実行されている特定のアプリケーションに関連する全てのアドレスに関して、例えばそのアプリケーションが終了するときに、無効化動作が実行されることができる。同様に、無効化動作は、例えばその仮想マシンが終了されるべきであった場合に、単純に仮想マシン識別子に基づいて対象とすることができる。
【００２５】
上記の段落から、メンテナンス動作に時間がかかることが理解される。したがって、図２、図３Ａおよび図３Ｂを参照して説明した装置２００を使用することによって、メンテナンス動作が実行される間にＣＰＵなどのリクエスタがブロックまたはストールされる必要がないように非同期にメンテナンスを行うことができる。メンテナンス動作が実行されている記憶装置が特に大きい場合は、特に重要である。メンテナンス動作は、すぐには実行されないため、ルックアップとキューに入れられたメンテナンス動作との間に発生する可能性がある競合を解決する必要がある。これは、そのような競合をテストし、競合が検出された場合に、元のデータを検索させる（例えば、ページウォークを実行させるＴＬＢミスを発行することによって）ことにより達成されることができる。このようにして、メンテナンス動作のキューが維持されることができ、適切なときに実行されることができる。
【００２６】
複数のメンテナンス動作を同時に実行することによる非同期メンテナンス効率の向上
図４は、選択されたメンテナンス動作が、アドレス記憶装置２３０の少なくとも一部をスキャンすることと、満たされた条件に応答して動作を実行することとを備える例を示しており、スキャンの間、メンテナンス回路２５０は、さらなる条件が満たされたことに応答してさらなる動作を実行し、さらなる動作およびさらなる条件は、メンテナンスキューから実行されるさらなるメンテナンス動作に対応する。
【００２７】
この特定の例では、ＡＳＩＤが１である場合に無効にするための第１のメンテナンス動作が存在すると考えることができる。ＶＭＩＤが１である場合、無効化を実行するための第２のメンテナンス動作が存在することがある。ルックアップ回路２３０内の各エントリを介して、ＡＳＩＤが１であるエントリに対して第１のスキャンを実行するのではなく、ＶＭＩＤが１であるルックアップ回路２３０のエントリのそれぞれを介して第２のスキャンを実行する。ＡＳＩＤまたはＶＭＩＤの値が１であるかどうかを判定するために、各エントリが検査される単一のスキャンが実行されることができる。このようにして、ルックアップ回路２３０のエントリを解した単一のスキャンのみが必要とされ、これは、メンテナンス動作のオーバヘッドを低減するために使用可能である。したがって、複数のメンテナンス動作がより効率的に実行可能である。動作およびさらなる動作が同じであってもよいことが理解される。同様に、条件およびさらなる条件も同じとすることができる。
【００２８】
ＡＳＩＤまたはＶＭＩＤの再利用を認識することによる非同期メンテナンス効率の向上
図５は、メンテナンスキュー内のオーバーラップメンテナンス動作とオーバーラップするアドレス記憶装置２３０のエントリに関する入力アドレスに応答して、装置２００がオーバーラップメンテナンス動作を優先するように適合された例を示している。
【００２９】
特定のアプリケーションまたは仮想マシンが終了すると、そのアプリケーションに関連付けられたＡＳＩＤ値を持つＴＬＢエントリ、またはその仮想マシンに関連付けられたＶＭＩＤ値が無効化される必要がある。同じＡＳＩＤ／ＶＭＩＤの要求が受信され始めると、ＴＬＢが新たなエントリによって埋められる必要があることを意味する。しかしながら、これは、メンテナンス動作が実行される前には行うことができない。したがって、ルックアップ動作（例えば、変換要求）がそのようなメンテナンス動作とオーバーラップした場合、メンテナンス動作を促進することが望ましい場合がある。
【００３０】
図５は、この改善のために調整された、図３Ｂに提示されたフローチャートと同様のフローチャートを示している。プロセスは、図３Ｂに関して説明したように進行する。しかしながら、ステップ３３０において、メンテナンス競合が検出された場合、ステップ５００において、競合が発生するメンテナンス動作が、特定のＡＳＩＤまたはＶＭＩＤを対象とした無効化であるかどうかが判定される。そうでなければ、プロセスは、ステップ３４０に進み、ＴＬＢミスが発行される。そうでなければ、ステップ５１０において、メンテナンス動作の優先が促進される。これは、メンテナンス動作をより迅速に実行させる。いくつかの実施形態では、メンテナンス動作の優先は、実行されることになる次のメンテナンス動作であるように、最高レベルに促進される。そして、プロセスは、ＴＬＢミスが実行されるステップ３４０に進み、それによりページウォークをもたらす。
【００３１】
完全なメンテナンスキューに応答することによる非同期メンテナンス効率の向上
図６のフローチャートは、メンテナンスキューが満杯になったときにメンテナンス動作を受信したことに応答して、メンテナンス回路が選択されたメンテナンス動作を実行するように適合された例に関する。特に、図６は、実行される時間が最も短いメンテナンスキューにおけるメンテナンス動作に選択が基づいている例に関する。
【００３２】
いくつかの場合では、メンテナンス動作のキュー２２０が既に満杯になったときに、メンテナンス動作が受信されることができる。そのような場合、リクエスタは、空間がキュー２２０内で利用可能となるような時間まで、ブロックまたはストールされる可能性がある。これに対処する１つの方法は、メンテナンス回路２５０がメンテナンスキュー２２０に保持されているメンテナンス動作の１つを直ちに実行することであり、例えば、いくつかの実施形態では、メンテナンス回路２５０は、メンテナンスキュー２２０から実行されるべき最速のメンテナンス動作を選択し、その動作を直ちに実行する。例えば、図６のステップ６００に示すように、メンテナンス動作が受信される。ステップ６１０において、メンテナンスキュー２２０が満杯であるか否かが判定される。そうでない場合、プロセスは、ステップ６７０に進み、新たなメンテナンス動作がキューに追加される。そうでなければ、ステップ６２０において、メンテナンスキュー２２０内に保持されているメンテナンス動作の次のメンテナンス動作がフェッチされるループが開始される。ステップ６３０において、このメンテナンス動作がこれまでに判定された最速のメンテナンス動作よりも速いかどうかが判定される。デフォルトでは、メンテナンス動作がまだ検査されていない場合、これは真である。いずれにしても、この条件が満たされている場合、ステップ６４０において、検査されている現在のメンテナンス動作が、現在の最速動作として設定される。そして、プロセスは、ステップ６５０に進み、検査されている現在のメンテナンス動作がステップ６３０においてより高速でない場合、プロセスはステップ６５０に直接進む。ステップ６５０において、メンテナンスキュー２２０から検査すべきさらなるメンテナンス動作があるかどうかが判定される。そうであれば、プロセスは、ステップ６２０に戻り、次のメンテナンス動作がフェッチされる。そうでなければ、ステップ６６０において、現在の最速動作が実行される。ステップ６００において受信された新たに受信したメンテナンス動作は、ステップ６７０においてメンテナンスキュー２２０に追加される。
【００３３】
メンテナンス作業の組み合わせによる非同期メンテナンス効率の向上
図７はまた、１つ以上の条件に基づいてメンテナンスキュー内の複数のエントリを組み合わせる組み合わせ回路２６０の例を示している。例えば、いくつかの実施形態では、組み合わせ回路２６０は、アドレス記憶装置２３０内の隣接するアドレスを組み合わせる。例えば、アドレスが隣接する同じＡＳＩＤおよびＶＭＩＤに関連するエントリである。このようにして、メンテナンス動作のキューは、隣接するアドレスに関連する複数のエントリをアドレスの範囲に関する単一のエントリに置き換えることによって圧縮されることができる。
【００３４】
いくつかの実施形態では、１つ以上の条件は、以下を含む：（ｉ）オーバーラップまたは隣接するＶＡ／ＩＰＡ領域がマージされることができる；（ｉｉ）ＶＡによる無効化は、ＶＡがＡＳＩＤに属する場合、ＡＳＩＤによるオーバーラップ無効化によって包含される。（ｉｉｉ）ＩＰＡによる無効化は、ＩＰＡがＶＭＩＤに属する場合、ＶＭＩＤによるオーバーラップ無効化によって包含される。（ｉｖ）ＡＳＩＤによる無効化は、ＡＳＩＤがＶＭＩＤに属する場合、ＶＭＩＤによる無効化によって包含される。これらの条件は、ＶＡが関連付けられたＡＳＩＤを有し、ＡＳＩＤが関連付けられたＶＭＩＤを有し、ＩＰＡが関連付けられたＶＭＩＤを有するという関係に基づいている。
【００３５】
図７の例を考えると、キューは、当初は５つの動作を有する。最初の２つの動作は、同じＡＳＩＤ（１）および同じＶＭＩＤ（１）に関連し、アドレスが隣接している（０ｘ１１２１は０ｘ１１２２に隣接している）ため、単一動作にマージされることができる。したがって、条件（ｉ）が適用される。したがって、これらの動作は、ＡＳＩＤが１であり且つＶＭＩＤが１である０ｘ１１２１から０ｘ１１２２の範囲内のアドレスを無効にするための単一の無効化動作に置き換えることができる。同様に、初期メンテナンス動作キューの次の２つの動作はまた、同じＡＳＩＤ（２）およびＶＭＩＤ（１）を対象とし、隣接アドレス（０ｘ００９Ｄは０ｘ００９Ｅに隣接する）にも関連する。したがって、これらは、２のＡＳＩＤおよび１のＶＭＩＤについて、０ｘ００９Ｄから０ｘ００９Ｅの範囲を無効にするための単一のメンテナンス動作を生成するために、圧縮されることができる。したがって、圧縮されたメンテナンスキューは、３つのエントリを有する。この例では、各メンテナンス動作は、優先度に関連付けられている。この例では、新たなエントリの優先度は、組み合わせられたメンテナンス動作の優先度の最高値に等しい。このようにして、メンテナンス動作は、他の動作と組み合わされた結果として優先順位が低下することはない。他の実施形態では、新たな動作を構成する全ての動作の間で優先度を平均化することができる。他の選択肢も利用可能であり、当業者に知られることが理解される。
【００３６】
したがって、メンテナンスキュー２２０は圧縮にされることができ、それによってリクエスタがストールまたはブロックされる必要なくメンテナンスキュー２２０にさらなるメンテナンス動作が追加されることができることがわかる。圧縮プロセスは、いかなるメンテナンス動作も失うことはない。組み合わせプロセスは、単にエントリを一緒に組み合わせるだけである。
【００３７】
フィルキューを使用することによる非同期メンテナンス効率の向上
図８は、新たな変換のための少なくとも１つのフィル動作をアドレス記憶装置２３０に記憶するフィルキュー回路８００の例を示しており、入力ポート２１０は、フィル動作を受信するように適合され、メンテナンスキュー内のオーバーラップメンテナンス動作と少なくとも一部オーバーラップするフィル動作に応答して、フィルキュー回路８００は、フィル動作を記憶し、フィル動作がメンテナンス動作と完全にオーバーラップする場合、メンテナンス動作は、メンテナンスキューから除去され、そうでなければオーバーラップメンテナンス動作の優先度が高くなる。
【００３８】
例えば、ページテーブルウォークが発生した場合など、新たなエントリがアドレス記憶装置２３０に追加される場合、保留中のメンテナンス動作と競合することがある。これが発生する可能性がある場合の１つの例は、メンテナンス動作が特定のＡＳＩＤにしたがって無効化を実行するように指示され、その後に特定のマッピングを満たすフィルが行われる場合である。他の例では、特定のＶＡにしたがった無効化および同じＶＡについてのフィルは、同様の時間に発行されることができる。この場合、無効化は解除されることができ、エントリは直接入力されることができる。
【００３９】
フィル動作が記憶されることができるフィルキュー８００を提供することによって、フィル動作は、競合するメンテナンス動作が処理されるまで遅延されることができる。競合しているメンテナンス動作をより迅速に解決させるために、競合する（すなわち、オーバーラップする）メンテナンス動作の優先順位を高めることができる。図８に示すように、フィル動作が受信されると、フィル動作は、最初にフィルキュー８００に送られる。ルックアップ回路２３０がＴＬＢの形式をとる場合、フィルキュー８００は、それ自体がより小さいＴＬＢの形式をとることができる。ここで、動作がルックアップ回路２３０に直接進むことができるかどうかまたは動作がフィルキュー８００に保持されなければならないかどうかを判定するために、メンテナンスキューによる協議が行われる。この判定を行うプロセスは、図９に関してより詳細に示される。競合するメンテナンス動作が完了すると、そのメンテナンス動作と競合するいかなるエントリも、フィルキュー８００からルックアップ回路２３０に促進される。同様に、メンテナンスキュー２２０に入るメンテナンス動作は、既存のフィル動作がメンテナンス動作によって確実に行われるように、フィルキュー８００によって協議する。いくつかの実施形態では、メンテナンス動作は、フィル動作が実行されるまで進めることができないことがある。同様に、入力アドレスがルックアップ動作の一部として提供されるとき、これは、ルックアップ回路２３０と同様にフィルキュー８００に対してチェックされることができる。
【００４０】
図９は、フィルキュー８００、例えばメンテナンスキュー２２０から生じる協議プロセスの例を示している。ステップ９００において、フィル動作が受信される。ステップ９１０において、メンテナンスキュー２２０が協議される。ステップ９２０において、メンテナンスキュー内のエントリのいずれかとフィル動作との間にオーバーラップがあるかどうかが判定される。例えば、メンテナンス動作のいずれかが、受信されたフィル動作に影響を与える可能性があるかどうかが判定されることができる。そのようなオーバーラップが存在しない場合、ステップ９３０において、フィル動作が実行される。これは、ルックアップ回路２３０の１つ以上のエントリを更新させる。そして、プロセスは、ステップ９００に戻る。あるいは、オーバーラップが検出された場合、フィル動作は、フィルキュー８００に追加され、競合するメンテナンス動作の優先順位は、ステップ９４０において増加される。再び、プロセスは、ステップ９００に戻る。
【００４１】
このプロセスは、メンテナンス動作が実行された後にフィル動作が行われる図１０Ａに示されている。この例では、メンテナンス動作がアドレス記憶装置２３０内のエントリのいずれも影響を受けないと仮定される。しかしながら、メンテナンス動作を実行すると、その後に実行されるフィル動作は、太字で示される新たなエントリの追加をもたらす。
【００４２】
したがって、図１０Ａは、オーバーラップメンテナンス動作が完了したことに応答して（例えば、スキャンされているエントリの一部として）、フィル動作がアドレス記憶装置２３０上で実行される例を示している。代替として、図１０Ｂは、メンテナンス動作が実行されるときにアドレス記憶装置２３０に対してフィル動作が実行される例を示している。特に、メンテナンス動作は、アドレス記憶装置２３０のエントリをスキャンする。フィル動作が新たなエントリを挿入する位置でメンテナンス動作を実行した後、フィル動作が実行され、それにより新たなエントリを挿入する。そして、メンテナンス動作の残りの部分は、残りのエントリに対して実行されることができる。このようにして、フィル動作が行われるエントリにメンテナンス動作が影響を与えた後にフィル動作が行われるので、メンテナンス動作は、フィル動作に影響を与えない。このアプローチは、複数の動作が同時に記憶装置内の同じ空間で実行されるという点で、ローカルの主体から利益を得る。これは、フィル動作が実行されるエントリを配置するために、アドレス記憶装置２３０の各エントリを再スキャンする必要性を回避することができる。
【００４３】
中間メンテナンスの要求を許可することによる非同期メンテナンス効率の向上
図１１は、選択されたメンテナンス動作が、アドレス記憶装置２３０の少なくとも一部をスキャンし、満たされた条件に応答して動作を実行することを備える例を提供し、入力アドレスに関連するフィル動作を受信したことに応答して、フィル動作は、入力アドレスが選択されたメンテナンス動作に関して既にスキャンされたアドレス記憶装置２３０の一部に対応するときに実行される。
【００４４】
したがって、メンテナンス動作が実行されている間に、入力された入力アドレスに応答して出力アドレスが同時に提供されることが可能となる。特に、既にメンテナンス動作を受けているアドレス記憶装置２３０の部分は、アクセス可能であるとみなすことができる一方で、アドレス記憶装置２３０の残りの部分は、アクセス不可能であるとみなすことができる。このようにして、入力アドレスが選択された進行中のメンテナンス動作に関して既にスキャンされたアドレス記憶装置２３０のエントリに関連する場合、対応する出力アドレスが提供されることができる。あるいは、入力アドレスが選択されたメンテナンス動作に関してスキャンされていないアドレス記憶装置２３０の一部に関連する場合、または入力アドレスがアドレス記憶装置２３０のエントリのいずれにも関連しない場合、ミスがリクエスタに返される。したがって、変換が提供されるためにメンテナンス動作を完了する必要はない。したがって、ミスを提供する代わりに、変換の結果が提供されることができる。メンテナンス動作が行われたアドレス記憶装置２３０内のポイントを追跡するために、カウンタ１０００が設けられている。アドレス記憶装置２３０の一部がメンテナンス動作によって既にスキャンされたルックアップ動作またはフィル動作に影響を与えるかどうかを判定するために、比較器が使用可能である。
【００４５】
したがって、図２および図１１はまた、複数のエントリを記憶する記憶装置回路２３０であって、複数のエントリの少なくとも一部をスキャンすることによって選択されたエントリの検索を実行するように適合された記憶装置回路２３０と、検索の一部としてさらにスキャンされるべきである記憶装置回路２３０の一部に指示を記憶する基準回路１０００と、基準回路によって示されるように検索の一部としてさらにスキャンされるべきである記憶装置回路２３０の一部からは存在しない複数のエントリの前記１つに応答して複数のエントリの１つに影響を及ぼす動作を実行する処理回路２４０とを備える装置の例を提供する。この場合、さらにスキャンされるべき記憶装置回路２３０の一部は、検索中に更新されるカウンタ１０００によって指示される。いくつかの実施形態では、可能なエントリのサブセットのみが最初からであっても検索プロセスの一部であることに留意されたい。例えば、記憶装置回路２３０がハッシュテーブルを利用し、エントリがどこに位置するかをほぼ判定した場合、一致するエントリを見つけるためにエントリのサブセットのみが検索されることになる。このようにして、例えば、検索が実行されている間であっても記憶装置回路にエントリが挿入されることができる。
【００４６】
記憶装置の盗難
図１２は、プロセッサ要素１２２０が入力アドレスを入力ポート１２１０に提供するいくつかの実施形態にかかる装置１２００を示している。入力アドレスは、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶する変換ルックアサイドバッファ（ＴＬＢ）１２３０に提供される。出力アドレスポート１２４０は、そのアドレスにおいてメモリ１２９０にアクセスするために、出力アドレス（または出力アドレスのさらなる変換）が出力されることを可能にする。同時に、プロセッサ要素１２２０は、入力データポート１２５０を介してデータを受信することができる。いくつかの実施形態（図１２に示すものなど）では、入力データポートは、メモリ１２９０がアクセスされるとメモリ１２９０内のその位置におけるデータが装置に返されるようにメモリ１２９０から装置１２００へのものである。このデータは、例えばＤＲＡＭによって裏付けられたキャッシュ１２６０に記憶されることができる。最後に、データが出力される出力データポート１２７０がある。図１２に示すものなどのいくつかの実施形態では、データ出力ポートは、装置１２００がデータをプロセッサ要素に出力し返すことを可能にするために提供される。制御回路１２８０は、ＴＬＢ１２３０および１２６０を制御するために使用される。さらにまた、キャッシュ１２６０は、データを記憶するために使用されるが、いくつかの変換を記憶するためにも使用される。このようにして、ＴＬＢ１２３０は、例えば、ＴＬＢ１２３０が変換を記憶することができないときに、変換を記憶するために記憶空間をキャッシュ１２６０から「盗む」。入力データポート１２５０および出力データポートが、それらのやり方で配置されるという義務はないことに留意されたい。例えば、データは、プロセッサ要素１２２０から受信され、メモリ１２９０に出力されることができる。実際には、データがメモリ１２９０から読み出され且つメモリに書き込まれる結果、データは双方向に受信および出力されることができる。さらにまた、様々なポート１２１０、１２４０、１２５０、１２７０は、入力ポート１２１０、１２５０をともにおよび出力ポート１２４０、１２７０をともに組み合わせることによって、またはプロセッサポート１２１０、１２７０をともにおよびメモリポート１２４０、１２５０をともに組み合わせることによって、または４つのポート１２１０、１２４０、１２５０、１２７０をともに組み合わせることによって−組み合わせることができる。
【００４７】
結果として、図１２は、プロセッサ回路１２２０から入力アドレスを受信する入力アドレスポート１２１０と、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶するアドレス記憶装置１２３０と、出力アドレスを出力する出力アドレスポート１２４０と、データを受信する入力データポート１２５０と、複数の位置の１つにデータを記憶するデータ記憶装置１２６０と、データ記憶装置１２６０に記憶されたデータを出力する出力データポート１２７０と、データ記憶装置１２６０に入力アドレスと出力アドレスとの間の変換を記憶させる制御回路１２８０とを備え、制御回路が、アドレス記憶装置およびデータ記憶装置からの入力アドレスが存在しないことに応答してページウォークを発生させる信号を発行するように適合される、装置１２００の例を提供する。
【００４８】
このようにして、変換にとって利用可能な空間量が増加することができても、アドレス記憶装置１２３０自体のサイズは、変更されないままである。その結果、アドレス記憶装置１２３０内の変換をルックアップするのに要する時間は、大幅に変更する必要はない。特に、変換がＴＬＢ１２３０に記憶されていることがわかっている場合、追加のアクセス時間はほとんどまたはまったく必要ではない。これは、例えば、変換がどこで見つかるかを推測するために使用される予測子を使用することによって達成されることができる。位置が不明である場合、ＴＬＢ１２３０およびキャッシュ１２６０へのアクセスは、アドレス記憶装置１２３０およびデータ記憶装置１２６０の双方で変換が同時に検索されるように、並列化されることができる。この場合も、必要な検索時間の任意の増加を大幅に制限する可能性がある。
【００４９】
同様に、回路サイズは、この変更の結果として大幅に増加する必要はない。特に、アドレス記憶装置１２３０のサイズは変更されないままであり、そのような回路上に存在すると予想されるかもしれないデータ記憶装置１２６０に変換が記憶されるため、変換を記憶するために「盗まれる」記憶装置は、特別なハードウェアを追加する必要はない。その結果、装置１２００全体の回路空間を増加させる必要はない。したがって、回路空間の増大を必要とせずに、性能の向上が達成されることができる。図１２はまた、データ記憶装置１２６０およびアドレス記憶装置１２３０が別個のメモリである例を提供することに留意されたい。特に、変換ルックアサイドバッファ（ＴＬＢ）１２３０およびデータキャッシュ１２６０は、データ回路上の別個のデバイスである。いくつかの実施形態では、これらの装置のそれぞれは、それ自体の制御回路１２８０の代わりにまたはそれ自体の制御回路とともに、それ自体の個別の制御回路を有することができる。しかしながら、データ記憶装置およびアドレス記憶装置を別個のメモリにする必要はない。特に、いくつかの実施形態では、アドレス記憶装置１２３０およびデータ記憶装置１２６０は、同じメモリとすることができ、それによって複数の目的のために同じメモリ領域をプールする。
【００５０】
図１３は、複数の位置がｎウェイセット連想メモリの形態をとる例を示しており、制御回路１２８０は、データ記憶装置１２６０にｎウェイの１つ以上の再利用されたウェイに変換を記憶させるように適合される。セット連想メモリには、データの部分が記憶されることができる位置がいくつかある。そのような各位置は、「ウェイ」と呼ばれる。これは、例えば、記憶されるべきデータのセットよりも著しく少ないセット連想メモリ内の記憶量が結果として生じる可能性がある。いくつかのウェイがあるそのような方法でメモリを考案することにより、メモリの柔軟性が高めることができる。例えば、記憶されるべき位置を特定するために、アドレスに対してハッシュが実行されることができる。いくつかのデータ部分が同じ位置に記憶されることを望む場合、いくつかのデータ部分が同じハッシュ値で記憶されることができるように、いくつかの「ウェイ」が提供される。１つの範囲では、メモリは、「直接マッピング」され、その場合、データが記憶されることができる位置はちょうど１つである。他の範囲では、メモリは、完全連想であり、データは、どこにでも記憶されることができる。図１３の例では、ｎは５であるため、メモリは、５ウェイ連想である。したがって、所与のデータ部分について、そのデータが記憶されることができる５つの異なる位置が存在する。各ウェイはまた、１１個の異なるデータ部分が各ウェイ内に記憶されるのを可能にする１１個のインデックス（大抵の場合、セットと呼ばれる）から構成されている。図１３の場合、２つのウェイ（斜線）は、変換ルックアサイドバッファＴＬＢ１２３０によって使用されることができるように再利用されている。通常これらの再利用されたウェイの１つに記憶されるデータは、代わりに他のウェイの１つに割り当てられる。
【００５１】
データ記憶装置の再利用を可能にする他の方法は、アドレスの使用によるものである。図１４は、複数の位置がｎウェイセット連想メモリの形態をとる例を示しており、制御回路１２８０は、データ記憶装置１２６０にメモリの１つ以上の再利用されたセット１４１０に変換を記憶させるように適合される。この例では、領域ポインタ１４００は、アドレス記憶装置１２３０によって記憶される変換とデータ記憶装置１２６０によって記憶されるデータとの間の境界をマークするアドレスを指し示す。この例では、データ記憶装置１２６０内のセットが変換の記憶のために再利用されるため、境界は移動として示される。結果として、入力（および出力）アドレスがプロセッサ回路によって提供されるとき、新たな変換を作成するために、変換は、この再利用された領域に記憶されることができる。セットが再利用されると、データ記憶装置１２６０へのインデキシングに使用されるハッシュ関数は、もはや非再利用セットを参照しないように適合しなければならないことが理解される。一方、データ記憶装置１２６０の残りのセット１４２０は、データを記憶するために使用されることができる。この境界は、例えば、セットインデックスによって参照されてもよい。このようにして、図１４は、データ記憶装置１２６０およびアドレス記憶装置１２３０が同じメモリ内の異なる領域である例を示している。したがって、図１４はまた、アドレス記憶装置１４１０によって使用される領域とデータ記憶装置１４２０によって使用される領域との間の境界を示すための領域ポインタ１４００の例を提供する。この説明の残りの目的のために、用語「アドレス記憶装置」および「データ記憶装置」が使用されるが、これは、別個の記憶を必要とするものとして解釈されるべきではない。さらにまた、以下の例は、方法、記憶位置、またはアドレスを参照することができるが、再利用ウェイまたは再利用セットの使用は交換可能な技術であることを当業者は理解する。したがって、図１４は、プロセッサ回路から入力アドレスを受信することと、アドレス記憶装置１２３０において、入力アドレスと出力アドレスとの間の変換を出力アドレス空間に記憶することと、データを受信することと、データをデータ記憶装置１２６０に記憶することと、データ記憶装置１２６０に入力アドレスと出力アドレスとの間の変換を記憶させることと、入力アドレスがアドレス記憶装置およびデータ記憶装置にないことに応答して、ページウォークを発生させるための信号を発行することとを備える方法を示している。
【００５２】
ポリシーを使用した記憶装置の盗難
図１５は、いくつかの実施形態にかかるポリシーの例を示している。特に、図１５は、ポリシーが複数の位置のそれぞれに対してデータと比較して変換を記憶するためのプリファレンスを示す例を示している。ポリシーは、フローチャート１５００の形態で示される。ステップ１５１０において、新たな変換が受信される。ステップ１５２０において、記憶位置ｗが変換に基づいて判定される。これは、変換の対象である入力アドレスまたは出力アドレスに対してモジュラス演算を実行するなど、ハッシュ演算を実行することに基づいて計算されることができる。ステップ１５３０において、現在のアドレスミス率が記憶位置ｗの値ｘよりも大きいかどうかが判定される１５６０。図１５の例では、ｗのｘの値は、１０００のうち５である。したがって、この場合のアドレスミス率が、プロセッサ回路１２２０によって実行される１０００の命令ごとに５よりも大きい場合、プロセスは、ステップ１５４０に進み、変換が（例えばデータ記憶装置１２６０に）記憶される。そうでなければ、ステップ１５５０において、データミス率が記憶位置ｗの値ｙよりも大きいかどうかが判定される１５７０。この場合、値は、１０００のうち３０に設定される。したがって、記憶装置ミス率が、プロセッサ回路１２２０によって実行される１０００の命令ごとに３０よりも大きい場合、プロセスは、ステップ１５４０に進み、変換が（例えばデータ記憶装置１２６０に）記憶される。あるいは、プロセスは、ステップ１５５５に進み、アドレス記憶装置アクセス速度が記憶位置ｗの値ｚよりも大きいかどうかが判定される１５８０。この場合、値は、４のうち３に設定される。したがって、アドレス記憶装置に対するアクセス速度がプロセッサ回路１２２０によって実行される４つの命令のうち３つよりも大きい場合、プロセスは、ステップ１５４０に進み、変換がデータ記憶装置１２６０に記憶される。あるいは、プロセスは、１５１０に戻る。換言すれば、変換は記憶されない。この例では、変換は、３つの条件のいずれかが満たされた結果としてデータ記憶装置に記憶される。第１の点は、アドレスミス率が第１の変数ｘよりも大きいことである。この例では、ｘの値は、プロセッサ回路１２２０によって実行される１０００の命令につき５として与えられる。しかしながら、他のシステムでは、この値は、例えば実行される１０００の命令あたり１０回のミスとすることができる。高いアドレス記憶装置ミス率は、システム内で発生する非効率性を示すことができる。したがって、アドレス記憶装置ミス率がある点に達すると、システムの効率を上げるために変換を記憶することがより望ましいものとなる。変換が記憶されるために満たすことができる第２の条件は、データミス率が変数ｙを上回ることである。この例では、記憶位置ｗの変数ｙは、実行される１０００の命令あたり３０に等しい。しかしながら、他のシステムでは、これは、１０００命令あたり４０回のミスに等しくすることができる。データ記憶装置に関する多数のミスは、実行される命令にデータローカリティが乏しいことを示す。したがって、データの記憶装置に通常使用される空間は、変換を記憶する代わりに使用される方がよい場合がある。したがって、データ記憶装置速度がある点に達すると、変換を記憶することがより望ましいことがある。変換が記憶されるために満たすことができる第３の条件は、アドレス記憶装置アクセス速度が変数ｚよりも上であることである。この例では、記憶位置ｗの変数ｚは、実行される４つの命令あたり３に等しい。アクセス速度が大きいことは、記憶装置の１つに競合が生じる可能性があることを示しており、したがって、代わりにデータ記憶装置にデータを記憶することによって作業負荷を分散することが望ましい可能性がある。
【００５３】
図１５はまた、置換ポリシーが動的に構成可能である例を示している。特に、ｗのｘ、ｙ、およびｚの値は、それぞれ、レジスタ１５６０、１２７０、および１５８０に記憶される。このように、記憶位置ｗのデータではなく変換を記憶するためのプリファレンスが変更されることができる。当然のことながら、ｘ、ｙ、およびｚのグローバル値も設定されることができ、これは全ての記憶位置にわたって有効であることが理解される。図１５はまた、制御回路１２８０が少なくとも１つの第１の条件に応じて入力アドレスと出力アドレスとの間の変換をデータ記憶装置１２６０に記憶させるように適合された例を提供する。特に、図１５は、第１の条件が、アドレス記憶装置１２３０のミス率、アドレス記憶装置１２３０のヒット率、アドレス記憶装置１２３０のアクセス速度、データ記憶装置１２６０のミス率、データ記憶装置１２６０のヒット率、およびデータ記憶装置１２６０のアクセス速度を備えるリストからのものである例を示している。
【００５４】
いくつかの他の実施形態では、ステップ１５３０、１５５０、および１５５５における条件は、所定の定数よりも小さい値についてテストすることによって反転されることができることが理解される。ステップ１５３０および１５５０におけるテストの場合、テストは、より小さいよりもむしろ予め定義された定数よりも大きな値とすることができる。さらにまた、ステップ１５５５におけるテストの場合、アクセス速度は、データ記憶装置のアクセス速度を考慮することができる。代わりにまたは同様に、他のメトリックを考慮することもできる。例えば、使用可能な他のメトリックは、いくつかのクロックサイクルにおけるミス、ヒット、またはアクセスの数である。
【００５５】
図１６は、制御回路１２８０が、入力アドレスと出力アドレスとの間の変換をデータ記憶装置１２６０の一部に記憶させるように適合された例を提供する。この例では、データ記憶装置１２６０は、キャッシュである。特に、データ記憶装置１２６０は、５ウェイ連想キャッシュであり、各ウェイは、１１個の記憶位置を含む。変換が記憶されるデータ記憶装置１２６０の一部は、灰色で示されている。特に、記憶位置ごとにウェイ数が異なることに留意されたい。例えば、第１の記憶位置１６５０は、その位置１６５０に記憶するために変換が考慮されるときのデータ記憶装置ミス率およびアドレス記憶装置ミス率を考慮する第１のインジケータ１６００によって指定されるように、変換の記憶のために割り当てられた単一のウェイのみを有する。第２の記憶位置１６６０は、変換がその位置１６６０に記憶するために考慮されるときにデータ記憶装置ミス率およびアドレス装置記憶ミス率を同様に考慮する第２のインジケータ１６１０によって指定されるように変換の記憶に割り当てられた４つのウェイを有する。このように、図１６は、部分のサイズが少なくとも１つの第２の条件に依存する例である。特に、図１６は、第２の条件が、アドレス記憶装置１２３０のミス率、アドレス記憶装置１２３０のヒット率、アドレス記憶装置１２３０のアクセス速度、データ記憶装置１２６０のミス率、データ記憶装置１２６０のヒット率、およびデータ記憶装置１２６０のアクセス速度を備えるリストからのものである例を示している。データ記憶装置ミス率およびアドレス記憶装置ミス率は、経時的に変化するため、異なる記憶位置は、変換のために割り当てられた異なる量の記憶量で終わる可能性があることが理解される。これは、ミス率が高いときに多数の変換が一度に発生した場合、メモリ内のどこにそれらが配置されることになるのかにかかわらず、それらの変換のために記憶装置が提供されることができるように柔軟性を提供する。
【００５６】
記憶装置アクセスプロセスの盗難
図１７Ａは、アドレス記憶装置１２３０における入力アドレスのミスに応答して、読み出し要求が変換のためにデータ記憶装置１２６０に送信される例を示している。特に、処理回路１２２０からＴＬＢ１２３０において要求が受信される。要求は、対応する出力アドレスが所望される入力アドレスを含む。そのような変換がＴＬＢ１２３０において見つかると、「ヒット」が発生し、出力アドレスが処理回路１２２０に転送される。そうでなければ、「ミス」が発生し、いくつかの実施形態ではラストレベルキャッシュ（ＬＬＣ）であるキャッシュ１２６０に要求が転送される。ここで、ＴＬＢ１２３０によって使用されるために「盗まれた」キャッシュ１２６０の一部は、入力アドレスのために検索される。「ヒット」が発生した場合、要求された出力アドレスは、処理回路１２２０に転送される。さもなければ、「ミス」が発生し、キャッシュ１２６０がＬＬＣであるため、これは、ページウォークが実行されるのをもたらす。ＴＬＢ１２３０およびキャッシュ１２６０が単一のメモリである例では、転送は、同じ回路内で局所的に行われてもよいことに留意されたい。しかしながら、そのような状況では、ＴＬＢ１２３０によって使用される第１の記憶位置での検索とキャッシュ１２６０によって主に使用される第２の位置での検索との２つの検索がなおも実行されてもよい。あるいは、単一の検索が実行されてもよい。これらの例のそれぞれにおいて、検索が失敗した場合、処理回路１２２０によってページウォークが実行される。
【００５７】
図１７Ｂは、ページウォーク要求が発行されるのと並行して、読み出し要求がデータ記憶装置１２６０に送信される例を示している。したがって、ＴＬＢ１２３０において発生するミスに応答して、要求がキャッシュ１２６０に転送され、関連する出力アドレスを得るために処理回路１２２０によってページウォーク要求が同時に発行される。このようにして、ページウォークが必要な場合には、キャッシュ１２６０の追加検索によって遅延されない。これは、要求された出力アドレスがキャッシュ１２６０のいずれかに見つかったときまたはページウォークを実行することによってそれが処理回路１２２０に直ちに戻されるときに、キャッシュ１２６０が検索されると同時にページウォークが実行されるためである。
【００５８】
図１７Ｃは、入力アドレスに基づいて出力アドレスが判定されたことに応答して、装置１２００が出力アドレスに関連するデータ記憶装置１２６０に記憶されたデータをフェッチするように適合された例を示している。要求がＴＬＢ１２３０によって受信されたとき、ヒットが発生した場合、対応する出力アドレスは、処理回路１２２０に転送される。その時点で、データ要求がＴＬＢ１２３０によってキャッシュ１２６０に対して行われる。ヒットがキャッシュ１２６０において発生した場合、データは、処理回路１２２０に戻される。ＴＬＢ１２３０において要求された入力アドレスに対するミスがある場合、要求は、キャッシュ１２６０に転送される。その時点で、ヒットが存在する場合、出力アドレスは、処理回路１２２０に転送され、データ要求は、キャッシュ１２６０において内部的に行われる。その後、データ要求に対してヒットがある場合、データは、処理回路１２２０に転送される。したがって、処理回路１２２０によって行われる後続のデータアクセス要求のために、アドレスがプロセッサ回路１２２０に転送される必要はない。代わりに、処理回路１２２０を必ずしも必要とせずに、アドレスとともにデータが返されることができる。これは、アドレスが転送される時間、処理回路１２２０がデータ要求を発行する時間、およびデータ要求がキャッシュ１２６０に転送し返される時間を節約する。したがって、より迅速にデータが検索されることができる。当業者は、ミスが従来の方法で処理されることを理解する。
【００５９】
図１８は、いくつかの実施形態にかかる、到来要求を処理する方法を示すフローチャート１８００を示している。記憶装置を盗むための１つの方法は、（例えば、偽のＩＯデバイスまたはキャッシュコントローラにアドレスの読み出しを試みるように指示し且つ読み出しが完了できない場合に失敗を示す信号を戻す特別な読み出し要求を介して）バッキング記憶装置に対応しないＰＡ空間の範囲を作成することである。この機構は、例えば、制御回路１２８０の一部とすることができ、またはＴＬＢ１２３０もしくはキャッシュ１２６０のコントローラの一部とすることができる。これは、アドレス変換を記憶するのに適したものとしてキャッシュ可能な物理アドレス空間の領域をマークすることを可能とする。しかしながら、その範囲は返却されないため、実際にはバッキング記憶装置（例えば、ＤＲＡＭ）には変換が記憶されない。このようにして、キャッシュは、メモリに記憶されると考えられるがそうではない変換を「キャッシュ」することができる。要求の一部として提供されたアドレスが事前に定義された範囲内にある場合、要求は、変換のための要求である。通常、ＬＬＣにないキャッシュ可能なデータに対する要求は、データをメモリからフェッチさせることになるが、バッキングストアに対応しないＰＡ空間の範囲の場合には、上述したように、この範囲が実際にはメモリによって裏付けされないことから、そのような動作を行うことはできない。したがって、そのような要求が検出されると、メモリから直接データをフェッチすることができない。代わりに、ページウォークを発生させる信号を（例えば、制御回路１２８０に）発行する。いくつかの実施形態では、これは、ページ変換をメモリからロードさせ、所望のアドレス変換をそれらのページ変換から判定させる。
【００６０】
したがって、フローチャート１８００は、要求が受信されるステップ１８１０において始まる。要求は、アドレス変換のためのものとすることができまたはデータのためのものとすることができる。したがって、要求は、データまたは変換が望まれるアドレスを含む。ステップ１８２０において、ルックアップが実行される。ルックアップは、前述したように、アドレス記憶装置１２３０およびデータ記憶装置１２６０のうちの１つ以上で要求を実行しようとする。所望の情報がステップ１８３０において配置される場合、プロセスは、ステップ１８１０に戻り、次の要求が受信される。あるいは、プロセスは、ステップ１８４０に進み、要求が所定の範囲内に入るかどうかが判定される。そうであれば、ステップ１８５０において、ページウォークを発生させる信号が発行される。あるいは、ステップ１８６０において、データがメモリからロードされる。いずれの場合も、プロセスは、ステップ１８１０に戻る。この例では、事前に定義された範囲は、バッキングストアに対応しないアドレス空間であると仮定される。しかしながら、他の実施形態では、ステップ１８４０は、アドレスが事前に定義された範囲外にあるかどうかをテストすることができ、事前に定義されたアドレス範囲は、バッキングストアに対応するアドレス空間によって定義されることができる。
【００６１】
したがって、フローチャート１８００は、変換がアドレス記憶装置１２３０およびデータ記憶装置１２６０から存在しないときの変換の要求に応答して、制御回路１２８０が信号を発行してページウォークを発生させる装置の動作を示している。
【００６２】
ＴＬＢルックアップとページテーブルウォークのタイミング
図１９は、１つ以上の処理要素（ＰＥ：Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）１９００、相互接続回路１９１０、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１９２０およびＤＲＡＭコントローラ１９３０を備えるデータ処理装置の他の例を概略的に示している。これは、物理メモリアドレスにしたがってアクセス可能なメモリ１９２０、メモリにアクセスするための仮想メモリアドレスを生成するための１つ以上の処理要素１９００、および１つ以上の処理要素によって生成された初期メモリアドレスの、メモリに提供された物理メモリアドレスへの変換を提供するメモリアドレス変換装置１９１５を備えるデータ処理装置の例を提供する。いくつかの例では、ページ属性、読み取り、書き込みおよび実行許可などの属性はまた、変換プロセスの一部として取得され、出力メモリアドレスを備えることもできる。例示的な構成では、１つ以上の処理要素１９００は、それぞれ、その処理要素によって生成された初期メモリアドレスの、メモリに提供された物理メモリアドレスへの変換のセットを記憶する各変換ルックアサイドバッファ１９０５を備え、変換ルックアサイドバッファは、メモリアドレス変換装置から変換ルックアサイドバッファによって記憶されていない変換を要求するように構成されている。
【００６３】
図１９の構成は、個別にまたは組み合わせて、図２０から図３１を参照して説明された様々な技術に利用可能である。
【００６４】
各処理要素１９００は、ＤＲＡＭ１９２０内のメモリ位置にアクセスすることができる。原則として、このアクセスは、実際の（物理的な）メモリアドレスを介して直接行うことができる。しかしながら、異なる処理要素（または、場合によっては処理要素１９００上で動作する異なるオペレーティングシステム）によるメモリアクセス間の区分化およびセキュリティの程度を提供するために、処理要素１９００は、いわゆる仮想または初期メモリアドレスによるメモリアドレスを参照する。これらは、ＤＲＡＭ１９２０内の実際の（物理的な）メモリ位置にアクセスするために、出力または物理メモリアドレスへの変換を必要とする。
【００６５】
第１レベルの変換は、各処理要素に関連するいわゆる変換ルックアサイドバッファ（ＴＬＢ）１９０５によって実行されることができる。ＴＬＢ１９０５は、ＴＬＢ１９０５に供給される仮想メモリアドレスがＤＲＡＭ１９２０となるメモリアクセスの一部を形成する物理メモリアドレスに変換されるように、仮想メモリアドレスと物理メモリアドレスとの間の最近使用された変換を記憶またはバッファリングする。しかしながら、ＴＬＢは、サイズが限られており、処理要素１９００によって呼び出される可能性のある全ての可能なメモリアドレス変換を記憶することができない。ＴＬＢ１９０５に必要な変換が存在しない場合、ＴＬＢは、例えば相互接続回路１９１０の一部を形成する変換装置１９１５を指す。変換装置は、以下で詳細に説明され、必要な変換を提供するかまたは取得し、それをＴＬＢ１９０５に戻して、仮想メモリアドレスを物理メモリアドレスに変換するために使用されることができる。
【００６６】
したがって、図１９は、以下を備えるデータ処理装置の例を提供する：
物理メモリアドレスにしたがってアクセス可能なメモリ１９２０、
メモリにアクセスするための仮想メモリアドレスを生成するための１つ以上の処理要素１９００、および
１つ以上の処理要素によって生成された仮想メモリアドレスをメモリに提供された物理メモリアドレスに変換するメモリアドレス変換装置１９１５。
【００６７】
図２０は、変換装置の動作をより詳細に示している。
【００６８】
変換装置１９１５は、いわゆるＤＲＡＭバックＴＬＢを維持する。換言すれば、変換装置１９１５は、ＴＬＢ１９０５と同様であるが変換データを含む比較的大容量のバッファを、（ＤＲＡＭ１９２０の予約済み部分または陰影付き部分１９２１として概略的に示されている）ＤＲＡＭ１９２０内に維持する。処理要素１９００に対してオフチップであることが多いＤＲＡＭ容量は、典型的には、ローカルＴＬＢ１９０５に対して提供される典型的なオンチップスタティックラム（ＳＲＡＭ）よりもはるかに大きいことから、そのようなバッファをＤＲＡＭ１９２０内に維持することは、バッファが比較的大きいのを可能にする。
【００６９】
したがって、ＴＬＢ１９０５によって要求される必要な変換を得るための第１の試みは、変換装置１９１５がＤＲＡＭバックＴＬＢデータを参照することである。
【００７０】
しかしながら、ＤＲＡＭバックＴＬＢもまた、ローカルＴＬＢ１９０５のものよりかなり大きいものの、サイズは限られている。ＤＲＡＭバックＴＬＢにおける特定の変換のためのデータが見つからない場合、いわゆるページテーブルウォークプロセスが実行されることができる。これは、ＤＲＡＭにも記憶されたいわゆるページテーブルの階層を参照することを含み、これは、ともに現在許容される全てのメモリアドレス変換の決定的集合を提供する。
【００７１】
変換装置１９１５は、ＤＲＡＭバックアクセス回路２０１０およびページテーブルウォークアクセス回路２０２０を制御する制御回路２０００を備える。これらの双方とも、ページテーブルウォーカアクセス回路２０２０の場合、ＤＲＡＭコントローラ１９３０を介してＤＲＡＭ１９２０のそれぞれの部分を参照して、ＤＲＡＭバックＴＬＢアクセス回路２０１０の場合の変換データのインスタンスまたは変換が導出可能なページテーブルデータのいずれかを取得する。したがって、制御回路２０００は、変換されることになる入力初期メモリアドレスに応答して、変換データバッファから入力初期メモリアドレスの変換データの検索を要求し、変換データバッファからの検索要求の処理が完了する前にページテーブルアクセス回路によって入力初期メモリアドレスの変換データの検索を開始する。
【００７２】
ページテーブルウォークアクセス回路２０２０は、初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにページテーブルデータにアクセスするように構成される。ＤＲＡＭバックＴＬＢは、仮想アドレス空間のサブセットに対して、変換データの１つ以上のインスタンスを記憶する変換データバッファの例である。
【００７３】
その動作の一部として、ＤＲＡＭバックＴＬＢアクセス回路２０１０は、制御回路２０００に「有効」信号２０１５を提供する。制御回路２０００は、ＤＲＡＭバックＴＬＢアクセス回路およびページテーブルウォークアクセス回路２０２０に対して制御および場合によっては取消（または少なくとも取消開始）信号２００５を提供する。これは、変換データバッファが、所定の変換データまたは所定の変換データが変換データバッファによって現在保持されていないことを示すデータのいずれかを含む応答を提供することにより、所与の変換データの検索要求に応答するように構成された例を提供する。
【００７４】
これらの信号の使用例が以下に説明される。
【００７５】
例示的な構成は、以前に提案された構成と比較して、回路２０１０、２０２０の動作のタイミングの変化を提供する。これらをコンテキストに配置するために、図２１は、以前に提案されたＴＬＢおよび変換装置の動作を示す概略的なタイミング図である。
【００７６】
図２１の４つの水平ラインは、ローカルＴＬＢ１９０５、ＤＲＡＭバックＴＬＢアクセス回路２０１０、ページテーブルウォークアクセス回路２０２０およびＤＲＡＭ１９２０による動作をそれぞれ概略的に示している。描かれているように、左から右に時間が流れる。
【００７７】
ＤＲＡＭバックＴＬＢへのアクセスは、ローカルＴＬＢ１９０５が変換装置１９１５からの変換を（ステージ２１００において）要求するように、ローカルＴＬＢ１９０５に必要な変換が見つからないことによって促進される。以前に提案された構成では、これは、ＤＲＡＭバックＴＬＢアクセス回路２０１０にＤＲＡＭにアクセスさせ、必要な変換データが存在するかどうかを調べさせる（ステージ２１０５において）。ＤＲＡＭ１９２０からの応答は、ステージ２１１０として示されている。「ヒット」がある場合、すなわち変換データの必要なインスタンスがＤＲＡＭバックＴＬＢ内に見つかった場合、その変換データは、ステージ２１１５としてローカルＴＬＢに戻され、プロセスは終了する。そうでない場合、ＤＲＡＭバックＴＬＢアクセス回路は、制御回路２０００がその後にページテーブルウォークアクセス回路２０２０に要求２１２０を発行してページテーブルウォークを行い、必要な変換を得るように、（「有効」信号を設定しないことによって、または「無効」を示す状態に設定することによって）変換データの必要なインスタンスが利用可能でないことを制御回路２０００に示す。確立された技術を使用して、ページテーブルウォークは、ページテーブルの必要な階層にアクセスして変換を得るために、複数の連続するメモリアクセス２１２５を含む。結果は、ステージ２１３０において提供された必要な変換であり、最終的にステージ２１３５においてローカルＴＬＢ１９０５に送信され、プロセスは終了する。
【００７８】
ステージ２１６０によって示されるように、図２１の時間クリティカルパスの一部を形成しないが、入力初期メモリアドレスの変換データが現在変換データバッファによって保持されていないとき、制御回路は、ページテーブルアクセス回路から受信した入力初期メモリアドレスの変換データをＤＲＡＭ内の変換データバッファに記憶するように構成されている。
【００７９】
以前に提案された例では、ＤＲＡＭバックＴＬＢルックアップが失敗または欠落するまで、ページテーブルウォークは開始されないことから、最悪の場合、ローカルＴＬＢ１９０５による２１００における初期要求と要求された変換データを受信するローカルＴＬＢ１９０５との間に長い遅延２１５０が存在する可能性がある。
【００８０】
対照的に、図２２は、本開示の実施例による例示的な構成を概略的に示しており、制御回路は、ＤＲＡＭバックＴＬＢからの変換データの必要なインスタンスの検索を要求するように構成されており、ＤＲＡＭバックＴＬＢからのその検索要求の処理が完了する前に、ページテーブルウォークアクセス回路２０１０による同じ変換データの検索を開始する。
【００８１】
いくつかの例では、制御回路は、実質的に同時に双方のプロセスを開始することができる。
【００８２】
したがって、図２２を参照すると、ローカルＴＬＢ１９０５による要求２１００の後、制御回路２０００は、ＤＲＡＭバックＴＬＢルックアップ２２００を開始し、実質的に同時に、または少なくともＴＬＢルックアップの完了前に、ページテーブルウォークアクセス回路２０２０によってページテーブルウォーク２２０５を行う。したがって、双方のプロセスは同時に進行する。これは、変換データバッファアクセスが失敗するまで待機するのではなくページテーブルアクセスを「早期」に開始することによってページテーブルアクセスが必要な状況での待ち時間を節約することができる。
【００８３】
ページテーブルアクセスのオプションの早期終了
しかしながら、ＤＲＡＭバックＴＬＢアクセス回路２０１０によるヒットがある場合、オプションでページテーブルウォークを終了することができる（ステージ２２１０において概略的に示す）。これは必須ではなく、実際にはページテーブルウォークを完了させることができ、その場合、同じ変換データがページテーブルからも取得されることになる。しかしながら、ＴＬＢヒットの場合に２２１０においてページテーブルウォークを終了することにより、（もはや行われないページテーブルウォークの残りの部分に関して）節電が潜在的に達成されることができる。
【００８４】
ＤＲＡＭバックＴＬＢヒットの場合、後続のプロセスは、図２１と同様であり、２２１５において変換データの必要なインスタンスがローカルＴＬＢに提供される。
【００８５】
しかしながら、ＤＲＡＭバックＴＬＢにミスが存在する場合、ページテーブルウォークは、２２２０において、ページテーブルウォークからローカルＴＬＢ１９０５に導出された必要な変換のステージ２２２５の準備に続く。この場合、変換を提供するための全体的な待ち時間または期間は２２３２として示されており、例えばＤＲＡＭバックＴＬＢルックアップが開始されたのと同じ時間に、または少なくともＤＲＡＭバックＴＬＢルックアップの完了前に、ページテーブルウォークを早期に開始するために、図２１に示された構成よりも期間２２３０として概略的に示されている時間節約がある。
【００８６】
同様に、ステージ２２６０によって示されるように、図２２の時間クリティカルパスの一部を形成しないが、入力初期メモリアドレスの変換データが現在変換データバッファによって保持されていないとき、制御回路は、ページテーブルアクセス回路から受信した入力初期メモリアドレスの変換データをＤＲＡＭ内の変換データバッファに記憶するように構成されている。
【００８７】
図２３は、上記説明に対する適切な方法を示す概略的なフローチャートである。
【００８８】
ステップ２３００において、ページテーブルデータは、初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにアクセスされる。
【００８９】
ここで、初期メモリアドレス空間は、仮想メモリアドレス空間とすることができ、出力メモリアドレス空間は、物理メモリアドレス空間とすることができることに留意されたい。しかしながら、いくつかの他の構成では、場合によっては、個々のオペレーティングシステムから変換プロセスまたは少なくとも変換プロセスの全範囲を隠すように、いわゆる中間物理アドレスが使用され、したがって、ＩＰＡからＰＡへの変換がいわゆるハイパーバイザによって実行される。ここで説明されるものと同じ原則は、以下のいずれかに関連することができる：ＶＡからＰＡへの変換；ＶＡからＩＰＡへの変換；および／またはＩＰＡからＰＡへの変換。
【００９０】
したがって、これらの技術を使用して、全てまたはいずれかが実施されることができる様々な実施形態が考えられる：
初期メモリアドレス空間は、仮想メモリアドレス空間であり、出力メモリアドレス空間は、物理メモリアドレス空間である；または、
初期メモリアドレス空間は、中間物理メモリアドレス空間であり、出力メモリアドレス空間は、物理メモリアドレス空間である；または、
初期メモリアドレス空間は、仮想メモリアドレス空間であり、出力メモリアドレス空間は、中間物理メモリアドレス空間である。
【００９１】
多段階変換装置では、これらの技術は、１つ以上の変換段階に使用されることができる。
【００９２】
図２３を再び参照すると、ステップ２３１０において、初期メモリアドレス空間のサブセットについて、変換データの１つ以上のインスタンスがＤＲＡＭバックＴＬＢなどの変換データバッファに記憶される。
【００９３】
ステップ２３２０において、ローカルＴＬＢ１９０５から受信されたものなど、変換されるべき入力初期メモリアドレスに応答して、変換データは、ＤＲＡＭバックＴＬＢなどの変換データバッファからの検索のために要求される。
【００９４】
そして、ステップ２３３０において、変換データバッファからの検索要求の処理が完了する前に、上述した回路２０２０などのページテーブルアクセス回路によって入力（必要な）初期メモリアドレスの変換データの検索が開始される。
【００９５】
実際には、ステップ２３４０において、要求されたデータがＤＲＡＭバックＴＬＢから首尾よく検索された場合、上述したようにオプションであるステップ２３５０は、ＤＲＡＭバックＴＬＢなどの変換データバッファからの入力初期メモリアドレスに対する変換データの検索に応答して、ページテーブルからの入力初期メモリアドレスに対する変換データの検索の取り消しを開始することを含むことができる。これは、場合によっては、ページテーブルアクセスの少なくとも一部を回避することによって電力を節約することができる。
【００９６】
さもなければ、データがＤＲＡＭバックＴＬＢから首尾よく検索されない場合には、ステップ２３６０において、必要な変換データがページテーブルウォーク機構によって得られ、ＤＲＡＭバックＴＬＢに記憶されることができる。
【００９７】
ステップ２３２０、２３３０は、図２３に連続的に示されているが、いくつかの例では（ページテーブルアクセスが必要とされる場合に潜在的に改善された全体的な待ち時間節約を提供するために）制御回路は、変換データバッファから入力初期メモリアドレスに対する変換データの検索を要求することと実質的に同時にページテーブルアクセス回路によって入力初期メモリアドレスに対する変換データの検索を開始するように構成されることができる。換言すれば、ステップ２３２０、２３３０は、実質的に同時に発生することができる。原理的には、ステップ２３３０は、２つのステップのうちの第１のステップとして開始されることさえできる。しかしながら、例示的な実施形態の最も広い態様は、変換データバッファルックアップの完了前にページテーブルアクセスを開始することを想定しているに過ぎず、待ち時間の節約をさらに達成することができる。
【００９８】
予測の導出
ここで図２４を参照すると、いくつかの例では、制御回路２０００は、入力初期メモリアドレスが現在変換データバッファによって保持されているかどうかの予測を導出するように構成されている。この予測が導出されて使用されることができる方法が以下に説明される。
【００９９】
一般に、必要な変換がＤＲＡＭバックＴＬＢによって保持される可能性があるかどうかの予測が提供される場合、ページテーブルルックアップを遅延または回避することが可能である。他の例では、ページテーブルアクセスが要求される可能性が高いという予測が提供された場合、ＤＲＡＭバックＴＬＢルックアップを回避または遅延させることが可能である。これらのインスタンスのいずれかは、電力を節約することができる。しかしながら、予測が間違っていると、それらは、システムの全体的な待ち時間を図２１の待ち時間と同様の待ち時間に戻すことで、待ち時間ペナルティを導入することができる。換言すれば、入力初期メモリアドレスが現在変換データバッファによって保持されている少なくとも第１の閾値尤度を予測が示す場合、制御回路は、変換データバッファから応答が受信されるまで、ページテーブルアクセス回路による入力初期メモリアドレスに対する変換データの初期検索を延期するように構成される。他の例では、入力初期メモリアドレスが現在変換データバッファによって保持されている第２の閾値尤度未満であることを予測が示す場合、制御回路は、変換される入力初期メモリアドレスのインスタンスのサブセット以下について変換データバッファから入力初期メモリアドレスの変換データの検索を要求するように構成される。
【０１００】
前述したように、制御回路２０００は、ＤＲＡＭ１９２０によって保持されるデータにアクセスするために、バッファルックアップ回路２０１０およびページテーブルウォークアクセス回路２０２０を制御する。バッファルックアップ回路２０１０は、ＤＲＡＭバックＴＬＢルックアップが成功したか否かを示すために利用可能性制御信号２０１５を制御回路２０００に供給する。例示的な構成では、その利用可能性信号はまた、カウンタ回路２４００を形成する１つ以上のカウンタにも提供される（図２４）。カウンタ回路２４００は、変換データバッファによる応答のうち、応答が要求された変換データおよび要求された変換データが現在変換データバッファによって保持されていないことを示すデータを含む応答のインスタンス（負の利用可能性表示２０１５など）を利用可能性信号が含むことを示す応答のインスタンスの相対数を検出するように構成される。
【０１０１】
したがって、制御回路は、変換データバッファによる応答のうち、要求された変換データを含む応答のインスタンスおよび要求された変換データが現在変換データバッファによって保持されていないことを示すデータを含む応答のインスタンスの相対数を検出するカウンタ回路を備えることができる。
【０１０２】
いくつかの例では、カウンタ回路２４００は、要求された変換データが現在変換データバッファに保持されていない（正の利用可能性信号２０１５）を提供する変換データバッファに応答して一方の極性（インクリメントなど）におけるカウント値を変更し且つデータを保持していない変換データバッファ、すなわちバッファルックアップ回路２０１０が要求された変換データが現在変換データバッファに保持されていないことを示す負の利用可能性表示２０１５などのデータを提供することに応答して他方の極性（デクリメントなど）におけるカウント値を変更する回路を備える。反対の極性のいずれかは、いずれの場合にも使用されることができ、インクリメント量およびデクリメント量は互いに異なることができ、＋／−１である必要はない。換言すれば、インクリメントの大きさは、デクリメントの大きさと同じである必要はない。
【０１０３】
比較器２４１０は、カウント値を第１および第２の閾値ＴＨＲ１、ＴＨＲ２と比較する。いくつかの例では、カウンタは、カウント値が上限カウント限界を超えないようにまたは０などの下限カウント限界を下回らないように制約されるように、飽和カウンタとすることができる。
【０１０４】
カウンタ回路２４００は、１つ以上のメモリアドレストランザクションのカテゴリの相対数を検出するために、１つのカウンタまたは他の例では複数のカウンタを備えることができ、その結果、予測は、現在のトランザクションの分類とよりよくマッチングすることができる。例示的なカテゴリのリストは、以下からなるリストから選択された１つ以上を含むことができる：
・変換を要求する仮想マシンを示すカテゴリ（例えば、変換要求の一部を形成する仮想マシン識別子によって示される）；
・複数の初期アドレス空間のうちの１つの初期アドレス空間を示すカテゴリ（例えば、変換要求の一部を形成するアドレス空間識別子によって示される）；
・変換を要求するプロセッサのプログラムカウンタを示すカテゴリ（例えば、変換要求の一部を形成するプログラムカウンタ値によって示される）；および、
・変換が要求される初期アドレスを示すカテゴリ。
【０１０５】
閾値ＴＨＲ１、ＴＨＲ２のうちの１つは、上限閾値などの第１の閾値尤度を示す値であってもよい。予測またはカウント値が少なくとも第１の閾値尤度を示すとき、これは、入力初期メモリアドレスが現在変換データバッファによって保持されている尤度をひいては示し、制御回路２０００は、応答が変換データバッファから受信されるまで、ページテーブルウォークアクセス回路２０２０による入力初期メモリアドレスに対する変換データの開始検索を延期するように構成される。したがって、この閾値を使用すると、動作は、図２１に概略的に示されている動作に戻ることができる。予測が正しい場合には、図２２の動作よりも電力が節約される。予測が間違っている場合、待ち時間は、図２１のものよりも悪くならない必要がある。予測は、ＤＲＡＭバックＴＬＢによって満たされた最近の変換要求のカウント数（一般的にまたは全体的に、または複数のカウンタによってカバーされるカテゴリまたは複数のカテゴリの特定の値について）の少なくとも上限閾値に基づいている。
【０１０６】
入力初期メモリアドレスが現在変換データバッファによって保持されている可能性が低い第２の閾値尤度は、より低いカウント値によって表され、−カウントまたは関連するカウントが第２の閾値未満である場合−これは、変換される入力初期メモリアドレスのインスタンスのサブセット以下について変換データバッファから入力初期メモリアドレスの変換データの検索を要求するように制御回路に生じさせる。いくつかの例では、これは、まったくインスタンスではない可能性があるが、これは、成功したＴＬＢルックアップのカウントによって尤度が決定される場合、ＤＲＡＭバックＴＬＢによって保持されるデータの増加したカウントまたは増加した尤度を検出することを困難にする可能性がある。換言すれば、カウントが下限閾値を下回ったときにＤＲＡＭバックＴＬＢがもはや使用されない場合、必要とされる変換を保持するＤＲＡＭバックＴＬＢの尤度が決して増加し得ない状況が生じる可能性がある。その潜在的な問題に対処するために、オプションで、モジュロＮ基底（ここで、Ｎは１よりも大きい整数）上で１からＮまで反復して変換データアクセスのインスタンスをカウントアップするさらなるカウンタ２４２０は、（例えば、同じ動作の一部として予測機構をリセットする）ルックアップ回路２０１０によるＤＲＡＭバックＴＬＢルックアップを強制するために（例えば、Ｎに達するたびに）比較器２４２０から到来する尤度情報を信号２４３０によってオーバーライドすることができる。換言すれば、サブセットは、変換される入力初期メモリアドレスのＮ個のインスタンスにおいて１つとすることができ、Ｎは１よりも大きい整数である。
【０１０７】
したがって、上述した第２の閾値の使用は、入力初期メモリアドレスが現在変換データバッファによって保持されている第２の閾値尤度未満であることを予測が示すとき、変換データバッファから入力初期メモリアドレスに対する変換データの検索を要求しないように制御回路が構成される構成の例を提供する。
【０１０８】
ＤＲＡＭにおける記憶装置
図２５は、記憶位置のアレイを提供するためのダイナミックランダムアクセスメモリの例を提供する図１９のＤＲＡＭ１９２０の例示的な構成の態様を概略的に示している。
【０１０９】
ＤＲＡＭ１９２０は、行および列に配置された記憶位置２５０５のアレイ２５００、行バッファ２５１０、列マルチプレクサ２５１５および行デコーダ２５２０を備える。ＤＲＡＭの場合、各記憶位置２５０５は、ビットセルのグループを含み、各ビットセルは、対応する記憶位置２５０５によって表される全体値の１ビットに対応する１または０を表すために選択的に充電または放電されることができるコンデンサを含む。
【０１１０】
ＤＲＡＭ１９２０へのアクセスは、２段階で行われる。第１に、行アドレス２５２５を指定する起動コマンドが発行される。行デコーダ２５２０は、対応する行２５３５をアクティブにして、対応する行の各記憶位置２５０５に記憶された情報を行バッファ２５１０にもたらす。第２に、列アドレス２５３０は、実際の読み出し／書き込みコマンドに付随し、列読み出し／書き込みコマンドは、列マルチプレクサ２５１５を制御して、アクティブ行内の指定された列に対応する行バッファ２５１０のエントリを選択し、書き込みコマンドとともに提供される書き込みデータに基づいてそのエントリ内のデータを更新することができる。書き込み動作の場合、行バッファ２５１０への書き込みは、対応する記憶位置２５０５にも伝播されることができる。行バッファ２５１０とアクティブ行２５３５との間の接続を閉じるプリチャージコマンドを使用して行が閉じられる前に、同じアクティブ行内で複数の読み取り／書き込み動作が実行されることができ、アクティブ行２５３５の記憶位置が行バッファ２５１０へのいかなる書き込みも反映するように更新され、行バッファ２５１０をリセットして、他の行がアクティブ行として選択されるようになるのを確実にする。
【０１１１】
したがって、本明細書で説明する例示的なＤＲＡＭバック変換データバッファは、選択された行にアクセスし、選択された行から行バッファに情報を転送するアクセス回路（行デコーダなど）を備える。例示的な構成では、ダイナミックランダムアクセスメモリは、１行未満のエントリのそれぞれのデータバースト内のデータを読み出し、キー値に対応する行バッファの一部を送信するように構成される。一般に、例示的な構成では、ＤＲＡＭは、データバーストでデータを通信し、提供されたキーに対応する行バッファの部分のみを送信するように構成される。「バースト」という用語は、データアレイからデータを読み取る方法ではなく、ＤＲＡＭの通信方法を説明することに留意されたい。この技術は、キーがマッチングした後に必要なデータを出力するために使用可能である。
【０１１２】
図２６は、図２５のメモリから、特に図２５のメモリのアクティブ行２５３５から検索されたデータがこの文脈でロードされた行バッファ２５１０から変換データを検索し、メモリアレイの行のそれぞれの部分からの情報を記憶するための複数のエントリを含む技術の動作を概略的に示している。
【０１１３】
キー値２６００は、少なくとも変換されるべき仮想メモリアドレスに依存する。行バッファは、セット２６１０などのキー値データの複数のセットを含む。行バッファの各キー値Ｋ１、Ｋ２、Ｋ３、Ｋ４は、それぞれの値エントリＶ１、Ｖ２、Ｖ３、Ｖ４に関連付けられている。記憶されたキー値Ｋ１・・・Ｋ４のように仮想メモリアドレスへの同じ依存性を使用して新たなキー値２６００を導出することによって、比較回路２６２０は、行バッファ２５１０の少なくとも１つのキーエントリＫ１・・・Ｋ４に記憶された情報とキー値２６００を比較することができ、各キーエントリは、対応する出力メモリアドレスの少なくとも１つの表現を記憶するための関連する値エントリＶ１・・・Ｖ４を有する。このようにして、比較回路２６２０は、キー値２６００に一致する情報を記憶するマッチングキーエントリであれば、少なくとも１つのキーエントリのうちのどれが存在するかを識別することができる。
【０１１４】
回路２６３４は、マッチングキーエントリがある場合、マッチングキーエントリに関連付けられた値エントリ内の出力メモリアドレスの表現を少なくとも出力するように、比較出力部２６３２の制御下で値Ｖ１・・・Ｖ４の１つを出力値２６４０として出力する出力回路２６３０の動作を制御するフォーマットに４つの比較回路２６２０の出力２６３２を結合する。
【０１１５】
値エントリは、図２７を参照して以下に説明するように必要な変換を提供する。
【０１１６】
したがって、図１９、図２０および図２５と併せて図２６は、以下を備えるメモリアドレス変換装置１９１５の例を提供する：初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにページテーブルにアクセスするページテーブルアクセス回路２０２０；初期アドレス空間のサブセットに対して、変換データの１つ以上のインスタンスを記憶する変換データバッファ２０１０、１９２０；変換データバッファは、行および列に配置された記憶位置のアレイ２５０５；アレイの行のそれぞれの部分からの情報をそれぞれ記憶する複数のエントリ２６１０を含む行バッファ２５１０と、少なくとも初期メモリアドレスに依存するキー値２６００に応答して、行バッファの少なくとも１つのキーエントリＫ１−Ｋ４のそれぞれに記憶された情報とキー値を比較する比較回路２６２０であって、各キーエントリが、対応する出力メモリアドレスの少なくとも１つの表現を記憶し、どの少なくとも１つのキーエントリがキー値に一致する情報を記憶するマッチングキーエントリであるかを識別する関連値エントリを有する比較回路と、マッチングキーエントリがある場合には、少なくともマッチングキーエントリＫ１−Ｋ４に関連する値エントリＶ１−Ｖ４に出力メモリアドレスの表現を出力する出力回路２６３０とを含む。
【０１１７】
例示的な実施形態は、（ハッシュされた初期メモリアドレスによってまたは例えば初期メモリアドレスの一部に応じてアクセスされることができる）必要な行が、潜在的に単一のメモリアクセスとしてアクセスされ、その行の内容が初期メモリアドレスに依存するキー値と比較され、その行に必要な変換が含まれているかどうかを検出するように、単一のメモリアクセスを使用してＤＲＡＭバック変換データバッファ内の変換データにアクセスするための効率的な機構を提供することができる。ＤＲＡＭへのメモリアクセスが潜在的に比較的遅い可能性があるため、これは、潜在的には待ち時間とメモリトラフィックを減らして変換を取得することができ、したがって、そのようなアクセスを１つだけ必要とすることが有利であり得る。メモリ行に記憶された変換データのキー・値の構成を提供することにより、複数の変換が単一のハッシュ（または他の依存関係）初期メモリアドレスによってアクセスされる行に記憶されることができ、ＤＲＡＭバック変換データバッファにおける記憶同地の効率を改善することができる。特に、初期メモリアドレスの少なくとも一部にハッシュまたは他の依存関係を使用することは、メモリ行を初期メモリアドレスに対して効果的に確保することができる。例示的な構成では、ＤＲＡＭ行のインデックスは、ハッシュ（またはその一部）（ＶＦＮ、ＶＭＩＤ、ＡＳＩＤ）であり、キーについても同じことが行われる。ＤＲＡＭ行とキーの組み合わせは、特定のタプル（ＶＦＮ、ＶＭＩＤ、ＡＳＩＤ）に固有のものでなければならない。ハッシュ値の例は、ランダム化（または擬似ランダム化）される初期メモリアドレスに対するメモリ行の分布を可能にする。メモリ行が満杯である場合（潜在的に他の初期メモリアドレスも指すことができるため）、および新たな変換が記憶される必要がある場合（例えば、制御回路が変換データバッファにおけるページテーブルアクセス回路から受信した入力仮想メモリアドレスの変換データを変換データバッファに記憶するように構成されるように、入力仮想メモリアドレスの変換データが現在変換データバッファによって保持されていない場合など）、選択された行が変換データを記憶するための未使用の不十分な容量を有する検出器回路による検出に応答して、上書きするために選択された行におけるキーエントリおよび関連値エントリ（例えば、行自体に記憶された情報に基づくかまたはメモリコントローラの制御下の異なるメモリまたはメモリ領域にある置換ポリシー）を選択するために犠牲者削除回路が使用可能である（例えば、読み出し動作の場合と同じ行を選択するために同じハッシュ／依存関係を使用し、それによって未使用のキーおよび値エントリおよび選択された行における値エントリを提供する）。選択基準の例は、直近にアクセスされたキー値およびマッチングエントリからなるリストから選択された１つ以上；キー値およびマッチングエントリのランダムまたは擬似ランダム選択；直近にアクセスされていないキー値およびマッチングエントリ；および選択された行に対する先入れ先出し選択を含むことができる。
【０１１８】
例示的な構成では、キー値は、以下から構成されたリストから選択された１つ以上に依存することができる：変換を要求する仮想マシンを示すデータ；複数の仮想アドレス空間のうちの初期アドレス空間を示すデータ；および変換が要求される初期アドレスを示すデータ。したがって、これらの技術を使用すると、キー値は、関連値によって提供される必要な変換を定義することができる。
【０１１９】
図２７は、キーが仮想マシン識別子（ＶＭＩＤ）、アドレス空間識別子（ＡＳＩＤ）、少なくともフレームまたはページサイズの解像度に対する初期メモリを定義する仮想フレーム番号（ＶＦＮ：Ｖｉｒｔｕａｌ  Ｆｒａｍｅ  Ｎｕｍｂｅｒ）の少なくとも一部の連結を含むキー、値ペアを概略的に示しており、その値は、この例では、少なくともフレームまたはページサイズの解像度に対する出力アドレスを定義する物理フレーム番号の連結を含み、また、これらの例では、読み取り／書き込み／実行または変換に関連する他の例示的な許可などを定義する１つ以上の属性を含む。したがって、キー値は、例示的な実施形態では、以下から構成されるリストから選択された１つ以上に依存する：変換を要求する仮想マシンを示すデータ；複数の仮想アドレス空間のうちの仮想アドレス空間を示すデータ；および変換が必要な仮想アドレスを示すデータ。
【０１２０】
これらのフィールドのデータサイズの例は、以下のとおりである：
2019096309.tif 000003
【０１２１】
したがって、各キー−値ペアは、（例えば）１６バイトを占有し、４つのそのような対が６４バイトメモリ行の例に記憶されることを可能にする。
【０１２２】
メモリ位置のアレイの行を選択するという点で、変換データバッファが初期メモリアドレスの一部に応じてアレイの行を選択するための行選択回路と、選択された行にアクセスして選択された行から行バッファ２５１０に情報を転送するアクセス回路（２５２０、図２５）とを備えるように、いわゆるハッシュジェネレータ２８００（図２８）が使用可能である。与えられた特定の例では、行選択回路は、ハッシュ値に応じて行が選択されるように、仮想メモリアドレスの少なくとも一部を表す入力データ２８１０からハッシュ値を生成するように構成されたハッシュジェネレータ２８００などのハッシュジェネレータを備える。上述したように、例の構成では、ＤＲＡＭ行のインデックスは、ハッシュ（またはその一部）（ＶＦＮ、ＶＭＩＤ、ＡＳＩＤ）であり、キーについても同じことが行われる。ＤＲＡＭ行とキーの組み合わせは、特定のタプル（ＶＦＮ、ＶＭＩＤ、ＡＳＩＤ）に固有のものでなければならない。
【０１２３】
図２９は、ＤＲＡＭバック変換データバッファを提供するメモリアレイにデータを書き込む回路を概略的に示している。書き込みプロセスは、入力仮想メモリアドレスの変換データが現在変換データバッファによって保持されていないとき、制御回路がページテーブルアクセス回路から受信した入力仮想初期メモリアドレスの変換データを変換データバッファに記憶するように構成される点で、図２３のステップ２３６０によって表されるような状況で生じる。図２９の構成は、ここに記載されているキー・値構造が使用される場合にこの書き込みに関係する。図２９の回路は、図２８の構成を使用して行を選択し、初期メモリアドレスまたは少なくともその一部に応じて行アドレス２５２５を取り込む行セレクタ２９００を備える。これは、変換データバッファ内に変換データを記憶するために、行選択回路が、変換データのそのインスタンスのための初期メモリアドレスの少なくとも一部に応じて、アレイの行を選択するように構成された例を提供する。
【０１２４】
選択された行は、処理のために行バッファ２５１０に移動される。検出器２９２０は、選択された行の全ての（キー、エントリ）が占有されているかどうかを検出し、もしそうであれば、犠牲者選択および削除回路２９３０は、犠牲者選択プロセスを使用して、現在のエントリのうちの最も古いものを削除するなど、削除のために現在のエントリの１つを選択する。記憶装置回路２９４０は、新たな（キー、値）ペアを行バッファ２５１０に書き込み、そして、行バッファは、上述したようにメモリアレイにコピーバックされる。
【０１２５】
したがって、例示的な構成は、選択された行に変換データを記憶する書き込み回路２９２０、２９３０、２９４０の例を提供し、書き込み回路は、以下を備える：変換データを記憶するための未使用のキーエントリおよび値エントリを選択された行が有するかどうかを検出する検出器回路２９２０；選択された行が変換データを記憶するための不十分な未使用容量を有することの検出器回路による検出に応答して、上書きのために選択された行におけるキーエントリおよび関連値エントリを選択し、それによって未使用のキーおよび値エントリおよび選択された行における値エントリを提供する犠牲者削除回路２９３０；および選択された行における未使用のキーおよび値エントリに変換データを記憶する記憶装置回路２９４０。例では、犠牲者削除回路は、直近にアクセスされたキー値および一致するエントリからなるリストから選択された１つ以上の犠牲者選択基準にしたがって、キーエントリおよび関連値エントリを選択するように構成される。犠牲者削除回路は、有効な空き空間を作るために、キー値およびマッチングエントリを能動的に削除することができ、または単に選択されたデータの新たなデータによる上書きを制御することができる。
【０１２６】
このプロセスは、図３０の概略的なフローチャートによって表され、ステップ３０００において、変換のための初期または仮想メモリアドレスの少なくとも一部にしたがって行が選択される。ステップ３０１０において、その行の内容が行バッファ２５１０にロードされる。ステップ３０２０において、選択された行のキー、値ペアに対して利用可能な空き空間がある場合、制御は、ステップ３０４０に移る。そうでなければ、ステップ３０３０において、（犠牲者）のキー、値ペアが削除のために選択されて削除される。そして、ステップ３０４０において、新たなエントリが行内で利用可能な空き空間に書き込まれ、ステップ３０５０において、行がメモリに書き戻される。この書き戻しは、ＤＲＡＭコントローラのポリシーに応じて遅延される可能性があることに留意されたい。しかしながら、将来、ある時点で記憶装置アレイに書き戻される。
【０１２７】
図３１は、
初期メモリアドレス空間内の初期メモリアドレスと出力アドレス空間内の対応する出力メモリアドレスとの間のアドレス変換を定義する変換データを検索するためにページテーブルをアクセスすること（ステップ３１００）と、
初期アドレス空間のサブセットに対して、行および列に配置された記憶位置のアレイを有する変換データバッファに、変換データの１つ以上のインスタンスを記憶すること（ステップ３１１０）と、
アレイの行のそれぞれの部分からの情報をそれぞれ記憶する複数のエントリをバッファリングすること（ステップ３１２０）と、
少なくとも初期メモリアドレスに応じたキー値に応答して、行バッファの少なくとも１つのキーエントリ（例えば、少なくとも２つのキーエントリ）のそれぞれに記憶された情報とキー値を比較すること（ステップ３１３０）とを備え、各キーエントリが、対応する出力メモリアドレスの少なくとも１つの表現を記憶するための関連値エントリを有する、概要方法を表す概略的なフローチャートである。
【０１２８】
ステップ３１３０における比較の結果、行が要求された変換を含まない場合、制御はステップ３１４０に移り、「有効」信号がコントローラ２０００によって「使用不可能」であることを示すように設定される。そうでなければ、本方法は、以下のように続く：
どの少なくとも１つのキーエントリが、もしあれば、キー値に一致する情報を記憶するマッチングキーエントリであるかを識別し（ステップ３１５０）、
マッチングキーエントリがある場合、少なくともマッチングキーエントリに関連する値エントリ内の出力メモリアドレスの表現を出力する（ステップ３１６０）。
【０１２９】
本出願において、「・・・ように構成された」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の構成または方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有することができ、またはプロセッサまたは他の処理装置が機能を実行するようにプログラムされることができる。「ように構成された」は、定義された動作を提供するために装置要素が何らかの方法で変更される必要があることを意味しない。
【０１３０】
本発明の例示的な実施形態が添付図面を参照して詳細に説明されたが、本発明は、これらの厳密な実施形態に限定されるものではなく、当業者であれば、添付の特許請求の範囲によって定義される本発明の範囲および趣旨から逸脱することなく、様々な変形、追加および変更を行うことができることが理解されるべきである。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴によって行うことができる。
【図１】
2019096309.tif 000004
【図２】
2019096309.tif 000005
【図３Ａ】
2019096309.tif 000006
【図３Ｂ】
2019096309.tif 000007
【図４】
2019096309.tif 000008
【図５】
2019096309.tif 000009
【図６】
2019096309.tif 000010
【図７】
2019096309.tif 000011
【図８】
2019096309.tif 000012
【図９】
2019096309.tif 000013
【図１０Ａ】
2019096309.tif 000014
【図１０Ｂ】
2019096309.tif 000015
【図１１】
2019096309.tif 000016
【図１２】
2019096309.tif 000017
【図１３】
2019096309.tif 000018
【図１４】
2019096309.tif 000019
【図１５】
2019096309.tif 000020
【図１６】
2019096309.tif 000021
【図１７Ａ】
2019096309.tif 000022
【図１７Ｂ】
2019096309.tif 000023
【図１７Ｃ】
2019096309.tif 000024
【図１８】
2019096309.tif 000025
【図１９】
2019096309.tif 000026
【図２０】
2019096309.tif 000027
【図２１】
2019096309.tif 000028
【図２２】
2019096309.tif 000029
【図２３】
2019096309.tif 000030
【図２４】
2019096309.tif 000031
【図２５】
2019096309.tif 000032
【図２６】
2019096309.tif 000033
【図２７】
2019096309.tif 000034
【図２８】
2019096309.tif 000035
【図２９】
2019096309.tif 000036
【図３０】
2019096309.tif 000037
【図３１】
2019096309.tif 000038
【外国語明細書】
2019096309000001.pdf