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