(57)【要約】仮想アドレス変換のための方法、デバイス及びシステムが開示される。メモリ管理ユニット（ＭＭＵ）は、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信し、仮想メモリアドレスに基づいて、物理メモリアドレスへの変換について、トランスレーションルックアサイドバッファ（ＴＬＢ）を検索する。変換がＴＬＢで見つからない場合に、ＭＭＵは、外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）で物理メモリアドレスを検索し、ページテーブルウォーカ（ＰＴＷ）を使用してページテーブルウォークを実行し、変換を取得する。変換がＥＭＴＬＢで見つかった場合に、ＭＭＵは、ページテーブルウォークを中止して、物理メモリアドレスを返す。変換がＴＬＢ及びＥＭＴＬＢで見つからない場合に、ＭＭＵは、ページテーブルウォークに基づいて物理メモリアドレスを返す。【選択図】図３
2022501705.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレス変換の方法であって、
メモリ管理ユニット（ＭＭＵ）が、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信することと、
前記ＭＭＵが、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換について、トランスレーションルックアサイドバッファ（ＴＬＢ）を検索することと、
前記変換が前記ＴＬＢで見つからない場合に、
前記ＭＭＵが、前記変換について、外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）を検索することと、
ページテーブルウォーカ（ＰＴＷ）が、ページテーブルから前記変換を取得するために、ページテーブルウォークを実行することと、
前記変換が前記ＥＭＴＬＢで見つかった場合に、前記ページテーブルウォークを中止して前記物理メモリアドレスを返すことと、
前記変換が前記ＥＭＴＬＢで見つからない場合に、前記ページテーブルウォークに基づいて前記物理メモリアドレスを返すことと、を含む、
方法。
【請求項２】
前記ＥＭＴＬＢは、前記ＭＭＵの外部にあるメモリ領域を備える、
請求項１の方法。
【請求項３】
前記ＥＭＴＬＢは、前記ページテーブルウォークと並行して前記変換が検索される、
請求項１の方法。
【請求項４】
前記ＥＭＴＬＢの置換状態は、前記ＭＭＵが実装されているプロセッサとは別のメモリ領域に記憶される、
請求項１の方法。
【請求項５】
前記ＥＭＴＬＢのエントリは、データ、タグ及び置換情報を含む、
請求項１の方法。
【請求項６】
ＥＭＴＬＢエントリを無効にする要求を前記ＥＭＴＬＢに送信することであって、前記要求は、前記ＥＭＴＬＢの無効化フィルタにバッファリングされる、ことと、
無効化が完了したという確認応答を受信することであって、前記確認応答は、無効にする要求が前記無効化フィルタにバッファリングされていることを示す、ことと、をさらに含む、
請求項１の方法。
【請求項７】
前記変換が前記ＴＬＢで見つからない場合であって、前記変換が前記ＥＭＴＬＢで見つかった場合に、前記変換を前記ＴＬＢに記憶することをさらに含む、
請求項１の方法。
【請求項８】
前記変換が前記ＴＬＢで見つからず、前記ＴＬＢが満杯の場合に、
前記ＴＬＢから変換エントリをエビクトすることと、
エビクトされた変換エントリを前記ＥＭＴＬＢに書き込むことと、をさらに含む、
請求項１の方法。
【請求項９】
前記変換が前記ＴＬＢ及び前記ＥＭＴＬＢで見つからない場合に、
前記ページテーブルウォークに基づいて、前記ＴＬＢ及び前記ＥＭＴＬＢの両方に前記変換を書き込むことをさらに含む、
請求項１の方法。
【請求項１０】
前記ＭＭＵは、
前記仮想メモリアドレスから中間仮想メモリアドレスへの変換を検索することと、
前記中間仮想メモリアドレスから前記物理メモリアドレスへの変換を検索することと、
によって、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換を検索する、
請求項１の方法。
【請求項１１】
仮想アドレス変換のためのメモリ管理ユニット（ＭＭＵ）であって、
仮想メモリアドレスを物理メモリアドレスに変換する要求を受信するように構成された回路と、
前記仮想メモリアドレスに基づいて、前記物理アドレスへの変換について、トランスレーションルックアサイドバッファ（ＴＬＢ）を検索するように構成された回路と、
前記変換が前記ＴＬＢで見つからない場合に、前記変換について、外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）を検索することと、前記変換を取得するために、ページテーブルウォーカ（ＰＴＷ）を使用して、ページテーブルウォークを実行することと、を行うように構成された回路と、
前記物理メモリアドレスが前記ＥＭＴＬＢで見つかった場合に、前記ページテーブルウォークを中止して、前記物理メモリアドレスを返すように構成された回路と、
前記変換が前記ＥＭＴＬＢで見つからない場合に、前記ページテーブルウォークに基づいて前記物理メモリアドレスを返すように構成された回路と、を備える、
メモリ管理ユニット（ＭＭＵ）。
【請求項１２】
前記ＥＭＴＬＢは、前記ＭＭＵの外部にあるメモリ領域を備える、
請求項１１のＭＭＵ。
【請求項１３】
前記ＥＭＴＬＢは、前記ページテーブルウォークと並行して前記変換が検索される、
請求項１１のＭＭＵ。
【請求項１４】
前記ＥＭＴＬＢの置換状態は、前記ＭＭＵが実装されているプロセッサとは別のメモリ領域に記憶される、
請求項１１のＭＭＵ。
【請求項１５】
変換が、疑似ランダムエントリ位置で前記ＥＭＴＬＢに書き込まれる、
請求項１１のＭＭＵ。
【請求項１６】
前記ＥＭＴＬＢのエントリは、データ、タグ及び置換情報を含み、前記データ、前記タグ及び前記置換情報は、単一のメモリアクセスによって前記ＥＭＴＬＢからアクセス可能である、
請求項１１のＭＭＵ。
【請求項１７】
ＥＭＴＬＢエントリを無効にする要求を前記ＥＭＴＬＢに送信することであって、前記要求は、前記ＥＭＴＬＢの無効化フィルタにバッファリングされる、ことを行うように構成された回路と、
無効化が完了したという確認応答を前記ＥＭＴＬＢから受信することであって、前記確認応答は、無効にする要求が前記無効化フィルタにバッファリングされていることを示す、ことを行うように構成された回路と、をさらに備える、
請求項１１のＭＭＵ。
【請求項１８】
前記変換が前記ＴＬＢで見つからない場合であって、前記変換が前記ＥＭＴＬＢで見つかった場合に、前記変換を前記ＴＬＢに記憶するように構成された回路をさらに備える、
請求項１１のＭＭＵ。
【請求項１９】
前記変換が前記ＴＬＢで見つからず、前記ＴＬＢが満杯の場合に、
前記ＴＬＢから変換エントリをエビクトすることと、
エビクトされた変換エントリを前記ＥＭＴＬＢに書き込むことと、
を行うように構成された回路をさらに備える、
請求項１１のＭＭＵ。
【請求項２０】
前記変換が前記ＴＬＢ及び前記ＥＭＴＬＢで見つからない場合に、前記ページテーブルウォークに基づいて、前記ＴＬＢ及び前記ＥＭＴＬＢの両方に前記変換を書き込むように構成された回路をさらに備える、
請求項１１のＭＭＵ。
【請求項２１】
前記仮想メモリアドレスから中間仮想メモリアドレスへの変換を検索することと、
前記中間仮想メモリアドレスから前記物理メモリアドレスへの変換を検索することと、
によって、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換を検索するように構成された回路をさらに備える、
請求項１１のＭＭＵ。
【請求項２２】
プロセッサと、前記プロセッサと通信するメモリと、を備え、
前記プロセッサは、仮想アドレス変換のためのメモリ管理ユニット（ＭＭＵ）を備え、前記ＭＭＵが、トランスレーションルックアサイドバッファ（ＴＬＢ）及びページテーブルウォーカ（ＰＴＷ）を備え、
前記メモリは、外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）を備え、
前記ＭＭＵは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信するように構成された回路をさらに備え、
前記ＭＭＵは、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換について、前記ＴＬＢを検索するように構成された回路をさらに備え、
前記ＭＭＵは、前記変換が前記ＴＬＢで見つからない場合に、前記変換について、前記ＥＭＴＬＢを検索することと、前記変換を取得するために、前記ＰＴＷを使用して、ページテーブルウォークを実行することと、を行うように構成された回路をさらに備え、
前記ＭＭＵは、前記変換が前記ＥＭＴＬＢで見つかった場合に、前記ページテーブルウォークを中止して、前記物理メモリアドレスを返すように構成された回路をさらに備え、
前記ＭＭＵは、前記変換が前記ＴＬＢ及び前記ＥＭＴＬＢで見つからない場合に、前記ページテーブルウォークに基づいて前記物理メモリアドレスを返すように構成された回路をさらに備える、
コンピューティングデバイス。
【請求項２３】
前記ＥＭＴＬＢは、前記ＭＭＵの外部にあるメモリ領域を備える、
請求項２２のコンピューティングデバイス。
【請求項２４】
前記ＥＭＴＬＢは、前記ページテーブルウォークと並行して前記変換が検索される、
請求項２２のコンピューティングデバイス。
【請求項２５】
前記ＥＭＴＬＢの置換状態は、前記ＭＭＵが実装されているプロセッサとは別のメモリ領域に記憶される、
請求項２２のコンピューティングデバイス。
【請求項２６】
変換が、疑似ランダムエントリ位置で前記ＥＭＴＬＢに書き込まれる、
請求項２２のコンピューティングデバイス。
【請求項２７】
前記ＥＭＴＬＢのエントリは、データ、タグ及び置換情報を含み、前記データ、前記タグ及び前記置換情報は、単一のメモリアクセスによって前記ＥＭＴＬＢからアクセス可能である、
請求項２２のコンピューティングデバイス。
【請求項２８】
ＥＭＴＬＢエントリを無効にする要求を前記ＥＭＴＬＢに送信することであって、前記要求は、前記ＥＭＴＬＢの無効化フィルタにバッファリングされる、ことを行うように構成された回路と、
無効化が完了したという確認応答を前記ＥＭＴＬＢから受信することであって、前記確認応答は、無効にする前記要求が前記無効化フィルタにバッファリングされていることを示す、ことを行うように構成された回路と、をさらに備える、
請求項２２のコンピューティングデバイス。
【請求項２９】
前記変換が前記ＴＬＢで見つからない場合であって、前記変換が前記ＥＭＴＬＢで見つかった場合に、前記変換を前記ＴＬＢに記憶するように構成された回路をさらに備える、
請求項２２のコンピューティングデバイス。
【請求項３０】
前記変換が前記ＴＬＢで見つからず、前記ＴＬＢが満杯の場合に、
前記ＴＬＢから変換エントリをエビクトすることと、
エビクトされた変換エントリを前記ＥＭＴＬＢに書き込むことと、
を行うように構成された回路をさらに備える、
請求項２２のコンピューティングデバイス。
【請求項３１】
前記変換が前記ＴＬＢ及び前記ＥＭＴＬＢで見つからない場合に、前記ページテーブルウォークに基づいて、前記ＴＬＢ及び前記ＥＭＴＬＢの両方に前記変換を書き込むように構成された回路をさらに備える、
請求項２２のコンピューティングデバイス。
【請求項３２】
前記仮想メモリアドレスから中間仮想メモリアドレスへの変換を検索することと、
前記中間仮想メモリアドレスから前記物理メモリアドレスへの変換を検索することと、
によって、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換を検索するように構成された回路をさらに備える、
請求項２２のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１８年９月２５日に出願された米国特許出願第１６／１４１，６０３号の優先権を主張するものであり、その内容は、言及することにより本明細書に組み込まれる。
【背景技術】
【０００２】
現代のマイクロプロセッサは、通常、メインメモリ内の物理アドレスを、プログラムが使用する仮想メモリアドレスに抽象化する。仮想メモリアドレスと物理メモリアドレスとの間の変換は、通常、メモリ管理ユニット（ＭＭＵ）と呼ばれるプロセッサ上のハードウェアによって行われる。仮想メモリアドレスと物理メモリアドレスとの対応関係は、ページテーブルで管理される。ＭＭＵは、ページテーブルのルックアップを行うことによって、仮想メモリアドレスと物理メモリアドレスとの変換を取得することができる。ページテーブルのルックアップは、通常、ページテーブルウォークと呼ばれ、ＭＭＵのハードウェア（一般に、ページテーブルウォーカ（ＰＴＷ）と呼ばれる）によって行われる。
【０００３】
ページテーブルウォークを使用して物理メモリアドレスを解決するのは、非常に時間がかかる場合がある。変換時間を短縮することによってメモリアクセスを高速化するために、仮想メモリアドレスと物理メモリアドレスとの最近の変換は、通常、トランスレーションルックアサイドバッファ（ＴＬＢ）と呼ばれるＭＭＵのメモリにキャッシュされる。ＴＬＢは、一般に、ＭＭＵの一部である。
【０００４】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【０００５】
【図１】本開示の１つ以上の特徴を実装することができる例示的なデバイスのブロック図である。
【図２】追加の詳細を示す図１のデバイスのブロック図である。
【図３】一例による、図１及び図２のデバイスで使用可能な外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）を含む例示的なシステムを示すブロック図である。
【図４】仮想アドレスから物理アドレスへの変換を実行するための例示的な手順を示すフロー図である。
【図５】仮想アドレスから物理アドレスへの変換を実行するための別の例示的な手順を示すフロー図である。
【図６】仮想アドレスから物理アドレスへの変換を実行するための別の例示的な手順を示すフロー図である。
【発明を実施するための形態】
【０００６】
いくつかの実施形態は、メモリ管理ユニット（ＭＭＵ）が、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信することと、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてトランスレーションルックアサイドバッファ（ＴＬＢ）を検索することと、を含む、仮想アドレス変換の方法を含む。変換がＴＬＢで見つからない場合に、外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）で変換が検索され、ページテーブルウォーカ（ＰＴＷ）がページテーブルウォークを実行して、ページテーブルから変換を取得する。変換がＥＭＴＬＢで見つけられた場合に、ページテーブルウォークが中止され、物理メモリアドレスが返される。変換がＥＭＴＬＢで見つからない場合、ページテーブルウォークに基づいて物理メモリアドレスが返される。
【０００７】
いくつかの実施形態では、仮想アドレス変換のためのＭＭＵが提供される。ＭＭＵは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信する回路と、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてＴＬＢを検索する回路と、変換がＴＬＢで見つからない場合に、ＥＭＴＬＢで変換を検索し、ＰＴＷを用いてページテーブルウォークを実行して、変換を取得する回路と、物理メモリアドレスがＥＭＴＬＢで見つけられた場合に、ページテーブルウォークを中止して、物理メモリアドレスを返す回路と、変換がＥＭＴＬＢで見つからない場合に、ページテーブルウォークに基づいて物理メモリアドレスを返す回路と、を含む。
【０００８】
いくつかの実施形態では、プロセッサと、プロセッサと通信するメモリと、を含むコンピューティングデバイスが提供される。プロセッサは、仮想アドレス変換のためのＭＭＵを含む。ＭＭＵは、ＴＬＢと、ＰＴＷと、を含み、メモリは、ＥＭＴＬＢを含む。また、ＭＭＵは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信する回路を含む。さらに、ＭＭＵは、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてＴＬＢを検索する回路を含む。さらにまた、ＭＭＵは、変換がＴＬＢで見つからない場合に、ＥＭＴＬＢで変換を検索し、ＰＴＷを用いてページテーブルウォークを実行して、変換を取得する回路を含む。また、ＭＭＵは、変換がＥＭＴＬＢで見つけられた場合に、ページテーブルウォークを中止して、物理メモリアドレスを返す回路を含む。さらに、ＭＭＵは、変換がＥＭＴＬＢ及びＴＬＢで見つからない場合に、ページテーブルウォークに基づいて物理メモリアドレスを返す回路を含む。
【０００９】
図１は、本開示の１つ以上の特徴を実装することができる例示的なデバイス１００のブロック図である。デバイス１００は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレット型コンピュータを含むことができる。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージ１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、オプションで、入力ドライバ１１２及び出力ドライバ１１４を含むことができる。デバイス１００は、図１に示されていない追加の構成要素を含むことができることを理解されたい。
【００１０】
様々な代替形態においては、プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）、同一のダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアは、ＣＰＵ又はＧＰＵであってもよい。様々な代替形態において、メモリ１０４は、プロセッサ１０２と同一のダイ上に配置されるか、プロセッサ１０２とは別に配置される。メモリ１０４は、揮発性又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ、キャッシュ）を含む。
【００１１】
ストレージ１０６は、固定又はリムーバブルストレージ（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ）を含む。入力デバイス１０８は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信用及び／若しくは受信用の無線ローカルエリアネットワークカード）を含む。出力デバイス１１０は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上の照明、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信用及び／若しくは受信用の無線ローカルエリアネットワークカード）を含む。
【００１２】
入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８から入力を受信することを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信することを可能にする。入力ドライバ１１２及び出力ドライバ１１４がオプションの構成要素であり、入力ドライバ１１２及び出力ドライバ１１４が存在しない場合、デバイス１００が同じように動作することに留意されたい。出力ドライバ１１６は、表示デバイス１１８に結合されたアクセラレーテッド処理デバイス（ＡＰＤ）１１６を含む。ＡＰＤは、プロセッサ１０２から計算コマンド及びグラフィックスレンダリングコマンドを受信し、これらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス１１８にピクセル出力を提供する。以下により詳細に説明するように、ＡＰＤ１１６は、単一命令複数データ（ＳＩＭＤ）パラダイムに従って計算を実行する１つ以上の並列処理ユニットを含む。よって、本明細書では、様々な機能がＡＰＤ１１６によって又はＡＰＤ１１６と協働して実行されるものとして説明しているが、様々な代替形態では、ＡＰＤ１１６によって実行されるものとして説明されている機能は、ホストプロセッサ（例えば、プロセッサ１０２）によって実行されず、表示デバイス１１８にグラフィック出力を提供する同様の機能を有する他のコンピューティングデバイスによって追加的又は代替的に実行される。例えば、ＳＩＭＤパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行してもよいと考えられる。或いは、ＳＩＭＤパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが考えられる。
【００１３】
図２は、ＡＰＤ１１６上での処理タスクの実行に関連する更なる詳細を示す、デバイス１００のブロック図である。プロセッサ１０２は、システムメモリ１０４内に、プロセッサ１０２が実行する１つ以上の制御論理モジュールを保持する。制御論理モジュールは、オペレーティングシステム１２０と、カーネルモードドライバ１２２と、アプリケーション１２６と、を含む。これらの制御論理モジュールは、プロセッサ１０２及びＡＰＤ１１６の動作の様々な特徴を制御する。例えば、オペレーティングシステム１２０は、ハードウェアと直接通信し、プロセッサ１０２で実行される他のソフトウェアに対してハードウェアへのインターフェースを提供する。カーネルモードドライバ１２２は、例えば、プロセッサ１０２上で実行されるソフトウェア（例えば、アプリケーション１２６）に対してアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することによって、ＡＰＤ１１６の動作を制御し、ＡＰＤ１１６の様々な機能にアクセスする。また、カーネルモードドライバ１２２は、ＡＰＤ１１６の処理構成要素（以下により詳細に説明するＳＩＭＤユニット１３８等）によって実行されるプログラムをコンパイルするジャストインタイムコンパイラを含む。
【００１４】
ＡＰＤ１１６は、並列処理に適したグラフィックス操作及び非グラフィックス操作等の選択された機能のためのコマンド及びプログラムを実行する。ＡＰＤ１１６は、例えば、ピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行するために、及び、プロセッサ１０２から受信したコマンドに基づいて表示デバイス１１８に画像をレンダリングするために使用することができる。また、ＡＰＤ１１６は、プロセッサ１０２から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する操作等のように、グラフィックス操作に直接関係しない計算処理動作を実行する。
【００１５】
ＡＰＤ１１６は、プロセッサ１０２の要求に応じて、ＳＩＭＤパラダイムに従って並列的に動作を実行する１つ以上のＳＩＭＤユニット１３８を含む計算ユニット１３２を含む。ＳＩＭＤパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータでそのプログラムを実行することができる。一例では、各ＳＩＭＤユニット１３８は、１６個のレーンを含み、各レーンは、ＳＩＭＤユニット１３８内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、予測を使用してレーンをオフにすることができる。予測は、分岐する制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが、個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合には、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
【００１６】
計算ユニット１３２での実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列に実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のＳＩＭＤ処理ユニット１３８上で「ウェーブフロント（wavefront）」として同時に実行され得る。１つ以上のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれる。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行される。代替的に、ウェーブフロントは、単一のＳＩＭＤユニット１３８上で順次実行され、又は、異なるＳＩＭＤユニット１３８上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、単一のＳＩＭＤユニット１３８で同時に実行されるワークアイテムの最大の集合と考えることができる。したがって、プロセッサ１０２から受信したコマンドが、特定のプログラムが単一のＳＩＭＤユニット１３８上で同時に実行できない程度に並列化されるべきであることを示している場合には、そのプログラムは、複数のＳＩＭＤユニット１３８上で並列化されるか、同じＳＩＭＤユニット１３８上で直列化される（又は、必要に応じて並列化及び直列化の両方が行われる）ウェーブフロントに分割される。スケジューラ１３６は、異なる計算ユニット１３２及びＳＩＭＤユニット１３８上での様々なウェーブフロントのスケジュールに関連する操作を実行する。
【００１７】
計算ユニット１３２によって提供される並列性は、ピクセル値計算、頂点変換及び他のグラフィックス操作等のグラフィックス関連操作に適している。したがって、いくつかの例において、プロセッサ１０２からグラフィックスプロセッシングコマンドを受信するグラフィックスパイプライン１３４は、並列に実行するために計算タスクを計算ユニット１３２に提供する。
【００１８】
また、計算ユニット１３２は、グラフィックスに関係しないか、グラフィックスパイプライン１３４の「通常」操作の一部として実行されない計算タスク（例えば、グラフィックスパイプライン１３４の操作に対して実行される処理を補足するために実行されるカスタム操作）を実行するために使用される。プロセッサ１０２上で実行されるアプリケーション１２６又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにＡＰＤ１１６に送信する。
【００１９】
プロセッサ１０２は、（例えば、メモリ１０４の）仮想メモリアドレスと物理メモリアドレスとを変換するために、ＭＭＵ及びＴＬＢを含む。いくつかの実施形態では、プロセッサ１０２内の複数の構成要素の各々が、ＭＭＵ及びＴＬＢを含むことに留意されたい。デバイス１００のいくつかの例示的な実施形態では、プロセッサ１０２は、いくつかのｘ８６ＣＰＵコアの各々にＭＭＵを含み、ＡＰＤ１１６（例えば、ＧＰＵ）にＭＭＵを含み、ネットワークコントローラ等のＩ／Ｏデバイスに対応するＩ／Ｏ用ＭＭＵを含む。
【００２０】
コンピュータシステムが進化するにつれて、それらは、一般に、ますます大きな物理メモリストアを含むようになり、これらのシステムのプログラムは、一般に、このメモリの容量をますます多く利用し、多くの場合、参照局所性が低下する。参照局所性の低下とは、特定のメモリ位置に対して、より長い時間を隔ててアクセスすること（時間的）、又は、（例えば、物理メディア上の、又は、ストレージの組織構造に基づいて）ストレージ内のより離れた位置にある異なるメモリ位置にアクセスすることをいう。大きな記憶空間及び参照局所性の低下は、高いＴＬＢミス率、又は、他の理由で望ましくないＴＬＢミス率の一因となり、結果的に、仮想アドレスから物理アドレスへの変換のオーバーヘッドが高くなる可能性がある。一般的に、この理由は、ＴＬＢミス率が増加すると、ＴＬＢにキャッシュされていない仮想から物理への変換を取得するために、ページテーブルウォークの回数を増やす必要があるためである。ページテーブルウォークを使用して変換を解決すると、キャッシュされた変換をＴＬＢから取得する場合よりも性能が著しく低下する（すなわち、大幅に時間がかかる）。
【００２１】
概念的な観点から、ＴＬＢのサイズを大きくすると、アドレス変換のオーバーヘッドが改善される可能性がある。しかし、プロセッサのＭＭＵに実装されている一般的なＴＬＢのオンチップハードウェアにおいて必要な増加量は、ダイ面積及び／又は費用の点で実用的ではない。ページサイズ、したがって変換の単位を変更すると、いくつかの実施形態では、ＴＬＢのサイズを増やすことなく、アドレス変換のオーバーヘッドが改善される可能性がある。例えば、ｘ８６プロセッサは、４ＫＢ、２ＭＢ及び１ＧＢのページをサポートする。ただし、ソフトウェアがページサイズを制御し、デフォルトでは最小のサイズが使用されることが多い。そのため、いくつかの実施形態では、より大きなページを要求するために新たなＯＳインターフェースにアクセスするには、オペレーティングシステム（ＯＳ）の拡張機能又はアプリケーションの再コンパイルが必要である。大きなページを使用すると、例えばメモリをディスクにページアウトする際にメモリの大きな領域が移動されるので、メモリ効率に影響する。大きなページを使用すると、その大きなサイズのページ内の全てのメモリが、アプリケーションのアクティブなワーキングセット内で使用されない場合に、メモリ効率が低下する。さらに、ページサイズが大きくなると、メモリを割り当てるための最小の粒度が生成され、小規模なアプリケーションでメモリが非効率的に使用される場合がある。さらに、ソフトウェアの互換性によって、いくつかの実施形態では、より大きなページの使用が制限される場合がある。例えば、ページテーブルがｘ８６プロセッサによって解釈される場合、既存のオペレーティングシステムソフトウェアとの互換性を維持するために、フォーマットが固定される。これにより、いくつかの実施形態でサポートされているページサイズも固定される。その結果、一般的な互換性を損なうことなくページテーブルツリーの基数を変更すること、及び／又は、基本的なページサイズを変更することができない場合がある。
【００２２】
ワーキングセットがオンチップＴＬＢ容量を超える場合に、メモリ内のページテーブル構造を変更する必要がなく、オペレーティングシステムが、既存のページテーブルフォーマット及びメモリ割り当てアルゴリズムを継続的に利用することができるような、改善されたアドレス変換を提供することが望まれる。したがって、本明細書では、オンチップＴＬＢから外部メモリにエビクトされた仮想アドレス対物理アドレス変換をキャッシュする外部メモリトランスレーションルックアサイドバッファ（ＥＭＴＬＢ）について説明する。
【００２３】
図３は、例示的なＥＭＴＬＢ３６０を含む例示的なシステム３００を示すブロック図である。システム３００は、プロセッサ３０２及びメモリ３０４を含む。プロセッサ３０２は、通信媒体３５０を介してメモリ３０４と通信する。ＥＭＴＬＢ３６０は、メモリ３０４内に記憶されたＥＭＴＬＢメモリ３６７と、ＭＭＵ３２０に実装されたＥＭＴＬＢ制御ロジック３６５と、を含む。通信媒体３５０は、メモリバス等の任意の好適なコンピュータ相互接続又はコンピュータ相互接続の組み合わせを含むことができる。
【００２４】
いくつかの例では、システム３００は、図１及び図２に関して図示及び説明するように、デバイス１００を使用して実装される。例えば、そのような実施形態では、プロセッサ３０２は、プロセッサ１０２として実装され、メモリ３０４は、メモリ１０４として実装される。他の例では、他の好適なプロセッサ、メモリ及び他の構成要素が使用される。
【００２５】
プロセッサ３０２は、ＭＭＵ３２０を含む。ＭＭＵ３２０は、ＴＬＢ３３０及びＰＴＷ３４０を含む。ＭＭＵ３２０は、プロセッサ３０２上のハードウェアに完全に実装されてもよく、プロセッサ３０２の内部の埋め込みプロセッサ上で実行されるファームウェアに実装されてもよく、又は、他の任意の好適な方法で実装されてもよい。ＭＭＵ３２０は、ＴＬＢ３３０を管理するための制御ロジックと、ＥＭＴＬＢメモリ３６７を管理するためのＥＭＴＬＢ制御ロジック３６５と、を含む。ＥＭＴＬＢメモリ３６７は、ＤＲＡＭ３０４内の生のメモリストレージ（raw memory storage）である。ＥＭＴＬＢ制御ロジック３６５とＥＭＴＬＢメモリ３６７との間で、限られた一連の操作（例えば、読み出し及び書き込み）が実施される。ただし、いくつかの実施形態では、ＥＭＴＬＢ３６０は、より複雑な操作（例えば、アトミック操作）をサポートする。メモリ３０４は、システム３００のメインメモリ又はメインメモリの一部であり、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の任意の好適な非一時的なコンピュータ可読媒体を含む。
【００２６】
ＭＭＵ３２０は、仮想アドレスを含むか、仮想アドレスを参照する変換要求を受信する。いくつかの例では、ＭＭＵ３２０は、クライアントから変換要求を受信する。クライアントは、計算ユニット（ＣＵ）、表示エンジン、ビデオデコーダ、ＧＰＵコマンドプロセッサ等のように、プロセッサ３０２内の任意の好適なエンティティを含むことができる。いくつかの例では、ＭＭＵ３２０は、内蔵ユニバーサルシリアルバス（ＵＳＢ）コントローラ、外部ＰＣＩｅ接続ネットワークコントローラ等のように、内蔵又は外部の入力／出力（ＩＯ）デバイスから変換要求を受信する。これに応じて、ＭＭＵ３２０は、仮想アドレスに対応する物理アドレスを、要求を行ったエンティティに返す。物理アドレスは、メモリ３０４内の物理メモリアドレスのことを指し、本明細書に記載されている様々な手順のうち何れかを使用して取得される。この例では、ＭＭＵ３２０が、仮想メモリアドレスを示す変換要求を受信した場合に、ＴＬＢ３３０をチェックして、その内部に変換がキャッシュされている（すなわち、ＴＬＢヒット）かどうかを確認する。キャッシュされていない場合（すなわち、ＴＬＢミス）、ＭＭＵ３２０は、ＥＭＴＬＢ３６０をチェックして、その内部に変換がキャッシュされているかどうかを確認し、及び／又は、本明細書でさらに説明するように、ＰＴＷ３４０を使用してページテーブルウォークを実行する。
【００２７】
いくつかの例では、ページテーブルウォークを実行する前に、ＴＬＢ３３０にアクセスして、部分的な変換を取得しようとする。このような状況においては、部分的な変換は、ページテーブルウォークが、ページテーブルの基数ツリーのルートからではなく、中間レベルから開始されるようにする情報を提供する。このようにして部分的な変換を取得すると、ページテーブルウォークで必要とされるメモリアクセスの回数を減らすことができるという利点がある。いくつかの実施形態では、部分的な変換を使用して、ページテーブルの基数ツリーの途中までページテーブルウォークを開始することによって、メモリアクセスの削減が可能になる。部分的な変換もミスした場合には、ページテーブルウォークは、ページテーブルのルートからの完全なページテーブルウォークとして実行される。
【００２８】
いくつかの実施形態では、（例えば、部分的な変換を使用して、ページテーブルウォークの実行に必要な時間を短縮することにより）同時実行のＥＭＴＬＢルックアップが完了する前にページテーブルウォークが完了した場合、ＥＭＴＬＢルックアップが中止される。場合によっては、ＴＬＢルックアップが完了した後に、ＥＭＴＬＢルックアップが中止される。場合によっては、ＴＬＢルックアップによる部分的な変換の結果に基づく、ページテーブルウォークを実行するのに必要なメモリアクセス数の予測に基づいて、ＥＭＴＬＢルックアップがプリエンプティブに中止される。このような場合には、ページテーブルウォークによって実行されることになる将来のメモリ要求の数は、正確には分からない。ＴＬＢから取得される部分的な変換の結果は、例えば、様々なページサイズ（したがって、ページテーブルのレベル）、潜在的な他のＴＬＢ構造等のために、ページテーブルウォークを完了するのに必要な追加のメモリアクセスの数を直接示すものではない。そのため、部分的な変換に基づいて、同時実行のＥＭＴＬＢルックアップを予測的に中止するために、ページテーブルウォークに必要なメモリアクセスの数が不明な場合には、ヒューリスティックスキーム又は予測スキームが実施される。
【００２９】
ＴＬＢ３３０は、ＭＭＵによって行われた最近の仮想メモリから物理メモリへの（又は、その逆の）メモリアドレス変換をキャッシュする専用のキャッシュメモリである。ＴＬＢ３３０は、ＴＬＢエントリを記憶するためのオンチップメモリを含み、ＭＭＵ３２０の一部としてプロセッサ３０２に実装される。いくつかの実施形態では、ＴＬＢ３３０は、マルチレベルキャッシュである。いくつかの例では、ＴＬＢ３３０は、Ｌ１ＴＬＢと、Ｌ２ＴＬＢと、を含み、Ｌ１ＴＬＢは、Ｌ２ＴＬＢよりも高速であるが、Ｌ２ＴＬＢよりも小さい。Ｌ１ＴＬＢの方が高速であるため、頻繁に使用される変換は、Ｌ１ＴＬＢのヒット時により迅速に実行される。ただし、Ｌ１ＴＬＢが小さいので、頻繁に使用されない変換は、Ｌ１ＴＬＢからエビクトされ、Ｌ２ＴＬＢに記憶される。Ｌ２ＴＬＢはＬ１ＴＬＢよりも大きいので、Ｌ２ＴＬＢのヒットの可能性が高くなる（ＥＭＴＬＢ３６０又はＰＴＷ３４０への依存が回避される）ように、より多くの変換がＬ２ＴＬＢに記憶される。ただし、Ｌ２ＴＬＢはＬ１ＴＬＢよりも遅いため、変換のレイテンシ、したがって全体的なメモリアクセス性能は、Ｌ１ＴＬＢがヒットした場合と比較して若干低くなる。Ｌ１ＴＬＢ及びＬ２ＴＬＢの両方がミスした場合、ＭＭＵ３２０は、ＰＴＷ３４０を使用してページテーブルウォークを実行し、及び／又は、ＥＭＴＬＢ３６０でＥＭＴＬＢルックアップを実行する。
【００３０】
ＰＴＷ３４０は、仮想アドレスを物理アドレスに変換するために、例えば、このような変換がＴＬＢ３３０又はＥＭＴＬＢ３６０にキャッシュされていない場合に、ページテーブルウォークを実行する専用のハードウェアである。ＰＴＷ３４０は、ＭＭＵ３２０の一部としてプロセッサ３０２に実装される。ページテーブルウォークは、比較的時間がかかり、ＴＬＢ又はＥＭＴＬＢがヒットする場合よりも変換レイテンシが長くなる。いくつかの例では、この理由は、ページテーブルウォークが、１つの変換のために、複数のメモリに依存し、及び／又は、メモリへの順次アクセスを必要とするためである。
【００３１】
ページテーブルを生成するには、いくつかの方法がある。ｘ８６、ＡＲＭ及び他のシステムで使用される例示的なページテーブルは、基数ツリーを使用して生成される。基数ツリーは、各レベルのノードが、次のレベルのノードへのいくつかのポインタを含むＮレベルのツリー構造である。４８ビットの仮想アドレスを持つｘ８６ページテーブルの例では、各ノードは、次のレベルのノードへの５１２個のポインタを含む。
【００３２】
別の例のページテーブルは、ハッシュテーブルの形式を使用する。このようにしてハッシュテーブルを使用すると、いくつかの実施形態では、より高速な（例えば、１回のメモリアクセスを必要とする）ベストケースのルックアップが提供されるが、場合によっては、ソフトウェアへのフォールバック等のように、潜在的なハッシュの衝突を特別に処理する必要がある。
【００３３】
ＥＭＴＬＢ３６０のハッシュテーブルは、例えば、ハッシュ衝突のための特別な場合の処理が、ＥＭＴＬＢ３６０について簡略化され又は除かれている場合には、全てのページテーブルに比べて単純である。このような場合に、例えば、ＥＭＴＬＢ３６０は、ハッシュの衝突を解決するために、二次検索に依存したり、ソフトウェアにフォールバックしたりするのではなく、完全な基数ツリーにフォールバックして変換を取得する。
【００３４】
ＥＭＴＬＢ３６０は、ＴＬＢ３３０からエビクトされた仮想から物理へのアドレス変換をキャッシュするために確保されたメモリ３０４の領域（図中のＥＭＴＬＢメモリ３６７）を含み、ＴＬＢ３３０を含むキャッシュ階層の下位レベルとして機能する。ＥＭＴＬＢメモリ３６７は、メモリ３０４内に配置され、オンチップＴＬＢ３３０の一部ではないので、ルックアップ要求に応答するＥＭＴＬＢヒットは、ＴＬＢヒットよりも長い変換レイテンシを有することになる。ただし、ＥＭＴＬＢ３６０のメモリは、ＴＬＢ３３０と比べて非常に大きい。したがって、ＴＬＢ３３０と比較して非常に多くの、場合によっては１０００倍程度の変換がＥＭＴＬＢ３６０内に記憶される。このことは、変換要求に応じてＴＬＢ３３０がミスした場合に、ＥＭＴＬＢヒットが、その変換レイテンシがＴＬＢヒットよりも長いとしても、ページテーブルウォークと比べて短い変換レイテンシを有するという点で有利である。
【００３５】
いくつかの実施形態では、ＥＭＴＬＢメモリ３６７は、システム３００が初期化されるか「起動」されると、メモリ３０４内に割り当てられるか、メモリ３０４から「切り分けられる（carved out）」。メモリは、任意の好適な方法でＥＭＴＬＢ３６０に割り当てられる。例えば、いくつかの実施形態では、メモリは、ハイパーバイザ及び／又はオペレーティングシステム（ＯＳ）をロードする前に、基本入出力システム（ＢＩＯＳ）によって予約される。いくつかの実施形態では、ＥＭＴＬＢ３６０のメモリは、ハイパーバイザ又はＯＳによって割り当てられる。ＥＭＴＬＢ３６０の全てのエントリは、有効な変換を含まないように初期化される。場合によっては、ＥＭＴＬＢ３６０は、複数のページサイズ（例えば、１ギガバイト、２メガバイト、４キロバイトのサイズ）をサポートする。場合によっては、ＥＭＴＬＢ３６０内のエントリは、タグ及びデータ部分を含む。タグ部分は、仮想アドレスを含み、いくつかの例では、ドメインＩＤ、ページサイズ、及び／又は、プロセスアドレス空間識別子（ＰＡＳＩＤ）を含むことができる。データ部分は、物理アドレスを含み、いくつかの例では、読み出し／書き込み／実行権限、及び／又は、ダーティビットを含むことができる。
【００３６】
ＥＭＴＬＢ３６０は、任意の好適な構造を有することができる。いくつかの例では、ＥＭＴＬＢ３６０は、セットアソシエイティブ／ウェイ（way）アソシエイティブである。いくつかの例では、ＥＭＴＬＢ３６０のエントリは、任意のサイズであり、すなわち、ページテーブル内のエントリのストレージサイズ（例えば、ｘ８６では８バイト）によって制限されない。いくつかの例では、ＥＭＴＬＢ３６０は、オンチップＴＬＢ（例えば、ＴＬＢ３３０）よりも多くのエントリを含む。いくつかの例では、ＥＭＴＬＢ３６０は、例えば、最長時間未使用（ＬＲＵ）のエントリのエビクトを可能にするために、置換ポリシーを実装し、置換履歴を保持する。いくつかの例では、ＥＭＴＬＢ３６０は、オフチップメモリ（例えば、ＤＲＡＭ３０４）内で置換ポリシーの状態を保持する。
【００３７】
いくつかの例では、例えばＴＬＢ３３０からのエビクトに続いて、ＥＭＴＬＢルックアップを実行するために又はＥＭＴＬＢ３６０を更新するために、読み出し−変更−書き込み（read-modify-write）のメモリ操作がＭＭＵ３２０によって実行される。
【００３８】
本明細書の例では、ＥＭＴＬＢルックアップは、この例ではＭＭＵ３２０の一部であるＥＭＴＬＢ制御ロジック３６５によって制御される。ただし、様々な実施形態では、ＥＭＴＬＢメモリ３６０は、専用ハードウェアを使用して、専用ファームウェアを実行する組み込みプロセッサを使用して、メインプロセッサ（例えば、プロセッサ３０２又はプロセッサ３０２のコア）で実行されるソフトウェアを使用して、及び／又は、他の任意の好適な方法で実施可能な制御ロジックを使用して実装可能な制御ロジックを用いて維持されることに留意されたい。いくつかのそのような実施形態では、ＥＭＴＬＢ制御ロジック３６５は、ＥＭＴＬＢメモリ３６７をキャッシュするか否かを決定する。
【００３９】
いくつかの実施形態では、複数のＥＭＴＬＢ制御ロジックが、ＥＭＴＬＢメモリの共通のプール（例えば、ＥＭＴＬＢメモリ３６７）を共有する。いくつかのそのような実施形態では、あるＥＭＴＬＢ制御ロジックによる共有ＥＭＴＬＢメモリ３６７の一部に対する読み出し及び／又は書き込みアクセスが、別のＥＭＴＬＢ制御ロジックの読み出し及び／又は書き込みアクセスと競合するシナリオが生じる場合もある。このような場合には、ＥＭＴＬＢキャッシングが使用されないのであれば、いくつかの例では、アトミック操作を使用して、ＥＭＴＬＢメモリの共通プールを共有する複数のＥＭＴＬＢコントローラ間を調整する。いくつかの実施形態では、１つのＥＭＴＬＢ制御ロジック（例えば、ＥＭＴＬＢ制御ロジック３６５）が読み出しを行い、比較及びスワップ（compare-and-swap）アトミック操作を実行して、エントリを更新する。これらの操作によって、エントリが読み出された後に、他のＥＭＴＬＢ制御ロジックが、エントリに書き込みを行っていないか（すなわち、前の値との比較がパスする）、又は、比較及びスワップアトミック操作が失敗して、ＥＭＴＬＢ制御ロジック３６５が修正動作を行ったか（例えば、比較及びスワップを再度試みるか、エントリを削除する）の何れかであることを確認することができる。これらの場合にＥＭＴＬＢキャッシングを使用すると、いくつかの例では、このようなキャッシングは、同じＥＭＴＬＢメモリを共有する全てのＥＭＴＬＢコントローラ間でコヒーレントである。
【００４０】
いくつかの例では、ソフトウェア又はファームウェア、及び、ソフトウェア若しくはファームウェアを実行するプロセッサ又はコントローラは、特定の操作を使用して、ｘ８６ロックプレフィックス命令等のアトミック読み出し／変更／書き込み操作を実行する。このような場合には、ＥＭＴＬＢは、非コヒーレントハードウェアからのメモリ操作ではなく、プロセッサからのキャッシュコヒーレント操作を使用して変更可能である。いくつかの実施形態では、複数のＥＭＴＬＢ制御ロジックの各々が個別のＥＭＴＬＢメモリにアクセスする。いくつかの実施形態では、このような場合には調整が必要ない。
【００４１】
いくつかの例では、ＥＭＴＬＢ３６０は、新たなエントリがランダムに（又は、疑似ランダムに）書き込まれる方法を選択し、この目的のために置換履歴を維持する必要性を回避する。いくつかの例では、このランダム又は疑似ランダム選択は、方法を選択するために、線形フィードバックシフトレジスタ（ＬＦＳＲ）を使用して行われる。いくつかの例では、ＥＭＴＬＢへのエントリの書き込みをランダム又は擬似ランダムに行うことによって、置換履歴又は状態の維持が不要になる。
【００４２】
いくつかの例では、ＥＭＴＬＢ３６０が直接マッピングされる。いくつかのこのような例では、ＥＭＴＬＢメモリ３６７に記憶されるエントリのタグは、ＥＭＴＬＢ３６０の何れのエントリが書き込まれるかを決定するのに使用される。これにより、類似のタグが同じ場所にハッシュされる競合の問題が発生し、ＥＭＴＬＢ３６０がある程度スラッシングされる場合がある。場合によっては、例えば、Ｎウェイアソシエイティブキャッシュ／ＴＬＢ構造の同じインデックスに全てマッピングするＮ＋１の変換を記憶するための要求が繰り返される場合に、ＥＭＴＬＢ３６０のセットアソシエイティブの実施形態においてもスラッシングが発生することに留意されたい。
【００４３】
図４は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順４００を説明するフロー図である。いくつかの実施形態では、手順４００は、図３に関して示され、説明されるように、システム３００とともに使用可能である。
【００４４】
ステップ４１０では、ＭＭＵ（例えば、図３に関して示され、説明されたＭＭＵ３２０）は、仮想アドレスを変換する要求をクライアントから受信する。この要求は、メモリ内の物理アドレスに変換される仮想アドレスを含む（又は、示す）。
【００４５】
ＭＭＵは、ステップ４２０において、そのＴＬＢ（例えば、図３に関して示され、説明されたＴＬＢメモリ３３０）内でルックアップを実行する。いくつかの例では、ＴＬＢメモリは、ＭＭＵの一部であってもよいし、ＭＭＵと同じコアに存在してもよいし、ＭＭＵと同じチップ上に存在してもよい。このＴＬＢメモリは、図４では「オンチップＴＬＢ」又はＯＣＴＬＢと呼ばれる。様々な実施形態では、このＴＬＢは、１つ以上のキャッシュレベルを含む。
【００４６】
条件４３０においてＴＬＢルックアップがヒットした場合（すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、ＭＭＵ  ＴＬＢで見つかる）、ステップ４４０において、ＴＬＢに記憶された対応する物理アドレスがクライアントに返される。いくつかの実施形態では、（例えば、変換がＭＭＵ  ＴＬＢの下位レベルで見つかった場合）この時点でＴＬＢに対する置換アルゴリズムが実行され、キャッシュが更新される。いくつかの例では、アルゴリズムは、ＴＬＢの置換状態を更新するが、変換情報を変更しない。
【００４７】
条件４３０において、ＴＬＢルックアップがミスする場合（すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、ＭＭＵ  ＴＬＢ内に見つからない）、ステップ４５０において、ＭＭＵは、ＥＭＴＬＢ（例えば、図３に関して示され、説明されたＥＭＴＬＢ３６０）内のルックアップを実行する。
【００４８】
条件４６０において、ＥＭＴＬＢルックアップがヒットした場合、ステップ４４０において、ＥＭＴＬＢに記憶された対応する物理アドレスがクライアントに返される。いくつかの実施形態では、ＥＭＴＬＢの置換状態は、ＥＭＴＬＢルックアップのヒットを反映するように更新される（すなわち、物理アドレス変換がＥＭＴＬＢにおいて最近使用されたことが書き留められる）。
【００４９】
いくつかの実施形態では、物理アドレス変換は、この段階でＴＬＢに記憶される。いくつかの実施形態では、ＴＬＢの置換状態は、ＥＭＴＬＢメモリからＴＬＢメモリへのエントリの書き込みに基づいて、ＴＬＢの置換状態を反映するように更新される（例えば、物理アドレス変換がＴＬＢにおいて最近使用されたことが書き留められる）。いくつかの実施形態では、物理アドレス変換が記憶される前にＴＬＢが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがＴＬＢからエビクトされる場合に、エビクトされたエントリがＥＭＴＬＢに書き込まれ、対応する置換アルゴリズムが、必要に応じてＥＭＴＬＢで実行される（例えば、必要に応じて、ＥＭＴＬＢからエビクトされるエントリを決定し、ＴＬＢからエビクトされてＥＭＴＬＢに書き込まれたエントリの最新性を更新する）。
【００５０】
いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてＴＬＢに書き込まれると同時にＥＭＴＬＢに書き込まれ、ＴＬＢのエビクトは、（例えば、物理アドレス変換がＴＬＢに書き込まれたときに既にＥＭＴＬＢに書き込まれていると仮定して）ＥＭＴＬＢに書き込まれない。このような置換アルゴリズムの１つの例では、現在の変換がＴＬＢに記憶され、ＴＬＢが満杯になると、新たな変換のためのスペースを確保するために、ＴＬＢからエントリがエビクトされる。エビクトのために選択されるエントリは、置換アルゴリズムに依存する。選択されたエントリがＴＬＢからエビクトされ、エビクトされたエントリがＥＭＴＬＢに書き込まれる。ＥＭＴＬＢが満杯の場合には、ＴＬＢからエビクトされたエントリのためのスペースを確保するために、ＥＭＴＬＢからエントリがエビクトされる。ＥＭＴＬＢは、ＴＬＢ構造の最下位レベルであるため、ＥＭＴＬＢからエビクトされた変換は、キャッシュされない。いくつかの実施形態では、最長時間未使用（ＬＲＵ）のエントリが、ＥＭＴＬＢからエビクトされるために選択される。いくつかの実施形態では、これは、オンチップメモリが、ＬＲＵエントリを追跡するためのハードウェアを実装するのに十分な大きさではないＴＬＢ用の置換アルゴリズムと異なる。ＴＬＢ及びＥＭＴＬＢの置換には、様々な種類の置換アルゴリズムが可能であり、任意の好適な置換アルゴリズムを使用することができる。
【００５１】
条件４６０において、ＥＭＴＬＢルックアップがミスした場合、ステップ４７０において、ＭＭＵは、（例えば、図３に関して示され、説明されたＰＴＷ３２０を使用して）ページテーブルウォークを実行する。ページテーブルウォークによって取得された対応する物理アドレスが、ステップ４４０においてクライアントに返される。
【００５２】
いくつかの実施形態では、物理アドレス変換は、この段階でＴＬＢに記憶される。いくつかの実施形態では、ＴＬＢの置換状態は、ルックアップヒットを反映するように更新される（すなわち、物理アドレス変換がＴＬＢにおいて最近使用されたことが書き留められる）。いくつかの実施形態では、物理アドレス変換が記憶される前にＴＬＢが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがＴＬＢからエビクトされる場合に、エビクトされたエントリがＥＭＴＬＢに書き込まれ、対応する置換アルゴリズムが必要に応じてＥＭＴＬＢで実行される（すなわち、必要に応じて、ＥＭＴＬＢからエビクトされるエントリを決定し、ＴＬＢからエビクトされてＥＭＴＬＢに書き込まれたエントリの最新性を更新する）。いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてＴＬＢに書き込まれると同時にＥＭＴＬＢに書き込まれ、ＴＬＢのエビクトは、例えば、物理アドレス変換がＴＬＢに書き込まれたときに既にＥＭＴＬＢに書き込まれていると仮定して、ＥＭＴＬＢに書き込まれない。
【００５３】
手順４００では、ＥＭＴＬＢで変換が見つかった場合に、ページテーブルウォークと、その潜在的にコストのかかるオーバーヘッドと、が回避されるシナリオを説明している。しかし、ＴＬＢルックアップ及びＥＭＴＬＢルックアップの両方がミスするシナリオでは、ページテーブルウォークのオーバーヘッドが依然として発生し、ＥＭＴＬＢルックアップのオーバーヘッドに追加される。これは、実行の初期段階や、ＴＬＢ／ＥＭＴＬＢフラッシュの後等のように、変換が殆どキャッシュされていない様々なシナリオで発生する可能性がある。場合によっては、ＥＭＴＬＢの実施形態は、そのようなシナリオの間に性能の低下をもたらすことがある。
【００５４】
図５は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順５００を説明するフロー図である。いくつかの実施形態では、手順５００は、図３に関して示され、説明されているように、システム３００とともに使用可能である。
【００５５】
ステップ５１０において、ＭＭＵ（例えば、図３に関して示され、説明されているＭＭＵ３２０）は、仮想アドレスを変換する要求をクライアントから受信する。この要求は、メモリ内の物理アドレスに変換される仮想アドレスを含む（又は、示す）。ＭＭＵは、そのような要求を受信すると、ステップ５２０において、そのＴＬＢ（例えば、図３に関して示され、説明されているＴＬＢ３３０、ＭＭＵ３２０の一部であるＴＬＢ、又は、ＭＭＵと同じコアに存在するか同じチップ上に存在するＴＬＢ等）内でルックアップを実行する。様々な実施形態では、このＴＬＢ（「ＴＬＢ」、「ＭＭＵ  ＴＬＢ」又は「オンチップＴＬＢ」）は、１つ以上のキャッシュレベルを含む。
【００５６】
条件５３０において、ＴＬＢルックアップがヒットする、言い換えれば、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、ＭＭＵ  ＴＬＢで見つかった場合、ステップ５４０において、ＴＬＢに記憶された対応する物理アドレスが、クライアントに返される。いくつかの実施形態では、例えば、変換がＭＭＵ  ＴＬＢの下位レベルで見つかった場合には、この時点でＴＬＢに対する置換アルゴリズムが実行されて、キャッシュが更新される。いくつかの例では、アルゴリズムは、ＴＬＢの置換状態を更新するが、変換情報を変更しない。
【００５７】
条件５３０において、ＴＬＢルックアップがミスする、言い換えれば、要求に含まれるか、要求によって示される仮想アドレスに対する変換がＭＭＵ  ＴＬＢ内に見つからない場合、ステップ５５０において、ＭＭＵは、ＥＭＴＬＢ（例えば、図３に関して示され、説明されているＥＭＴＬＢ３６０）内でルックアップを実行する。ステップ５５０においてＥＭＴＬＢルックアップを開始することに加えて、ＭＭＵは、ステップ５７０において、（例えば、図３に関して示され、説明されているＰＴＷ３２０を使用して）ページテーブルウォークを開始する。
【００５８】
ステップ５７０の間にページテーブルウォークが進行している間に、ステップ５５０のＥＭＴＬＢルックアップがヒットしたかどうかが決定される。条件５６０において、ＥＭＴＬＢルックアップがヒットした場合、ステップ５８０においてページテーブルウォークが中止され、ステップ５４０において、ＥＭＴＬＢに記憶された対応する物理アドレス変換がクライアントに返される。いくつかの実施形態では、ＥＭＴＬＢの置換状態は、ルックアップヒットを反映するように更新される（すなわち、物理アドレス変換がＥＭＴＬＢにおいて最近使用されたことが書き留められる）。
【００５９】
条件５６０において、ＥＭＴＬＢルックアップがミスした場合、ステップ５９０において、ＥＭＴＬＢルックアップが終了し、ステップ５７０において、ページテーブルウォークが継続される。ステップ５４０において、ページテーブルウォークによって取得された対応する物理アドレスがクライアントに返される。
【００６０】
いくつかの実施形態では、物理アドレス変換は、ステップ５４０においてＴＬＢに記憶される。いくつかの実施形態では、ＴＬＢの置換状態は、ルックアップヒットを反映するように更新される（すなわち、物理アドレス変換がＴＬＢにおいて最近使用されたことが書き留められる）。いくつかの実施形態では、物理アドレス変換が記憶される前にＴＬＢが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがＴＬＢからエビクトされる場合に、エビクトされたエントリがＥＭＴＬＢに書き込まれ、対応する置換アルゴリズムが必要に応じてＥＭＴＬＢで実行される。（すなわち、必要に応じて、ＥＭＴＬＢからエビクトされるエントリを決定し、ＴＬＢからエビクトされてＥＭＴＬＢに書き込まれたエントリの最新性を更新する）。いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてＴＬＢに書き込まれると同時にＥＭＴＬＢに書き込まれ、ＴＬＢのエビクトは、例えば、物理アドレス変換がＴＬＢに書き込まれたときに既にＥＭＴＬＢに書き込まれていると仮定して、ＥＭＴＬＢに書き込まれない。
【００６１】
手順５００は、手順４００と同様に、ＥＭＴＬＢで変換が見つかった場合に、ページテーブルウォークと、その潜在的にコストのかかるオーバーヘッドと、が回避されるシナリオを説明している。ＴＬＢルックアップ及びＥＭＴＬＢルックアップの両方がミスした場合には、ページテーブルウォークのオーバーヘッドが依然として発生するが、ＥＭＴＬＢルックアップがページテーブルウォークと並行して実行されるので、このオーバーヘッドは、ＥＭＴＬＢルックアップのオーバーヘッドに追加されない。場合によっては、ページテーブルウォークと並列に（例えば、同時に、又は、共に）動作するＥＭＴＬＢの実施形態は、そのようなシナリオの間に性能を大幅に低下させることがない。例えば、いくつかの実施形態では、ページテーブルウォークのレイテンシは、ＥＭＴＬＢの並列ルックアップのために、単一のＥＭＴＬＢメモリアクセスによってのみ影響を受ける。
【００６２】
図６は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順６００を説明するフロー図である。いくつかの実施形態では、手順６００は、図３に関して示され、説明されているように、システム３００とともに使用可能である。
【００６３】
手順６００は、仮想化システムにおける仮想アドレスの多層変換に関連する詳細を含む。仮想化システムでは、仮想マシン（ＶＭ）に対して、物理メモリに対応する特定の仮想アドレス空間が割り当てられる。この例では、ＶＭに割り当てられた仮想アドレス空間アドレスをゲスト物理アドレス（ＧＰＡ）と呼び、物理メモリアドレスをシステム物理アドレス（ＳＰＡ）と呼ぶ。また、ＶＭのアドレス空間には、ドメイン識別（ドメインＩＤ）が割り当てられる。ＳＰＡを取得するためのＧＰＡの変換を、ホスト層変換（host layer translation）と呼ぶ。
【００６４】
ＶＭ内で実行される各アプリケーションには、ＧＰＡに対応する仮想アドレス空間が割り当てられる。この例では、アプリケーションに割り当てられた仮想アドレス空間アドレスを、ゲスト仮想アドレス（ＧＶＡ）と呼ぶ。また、各アプリケーションには、プロセスＩＤ（ＰＡＳＩＤ）が割り当てられている。対応するＧＰＡを取得するためのＧＶＡの変換を、ゲスト層変換（guest layer translation）と呼ぶ。したがって、ＧＶＡからＳＰＡへの完全な変換は、２つの変換（すなわち、ＧＶＡからＧＰＡ（ゲスト層）、及び、ＧＰＡからＳＰＡ（ホスト層））で構成されていると説明することができる。これは、ネストしたページテーブルウォークの例である。この例では、ＧＶＡからＧＰＡへの変換を中間変換と呼ぶ場合がある。いくつかの実施形態では、３つ以上のレベルのネスティングが使用されてもよく、完全な変換は、２つ以上の中間変換を含む３つ以上の変換から構成され得ることに留意されたい。
【００６５】
手順６００において、ＭＭＵ  ＴＬＢは、デバイステーブルエントリ、部分的なＧＶＡからＳＰＡへの変換、及び、最終的なＧＰＡからＳＰＡへの変換を記憶する。ドメインＩＤは、エントリタイプ毎にＭＭＵ  ＴＬＢに記憶されている。ＥＭＴＬＢは、ＧＶＡ又はＧＰＡ、ドメインＩＤ、及び、ＰＡＳＩＤによってタグ付けされている。
【００６６】
ステップ６０５において、ＭＭＵ（例えば、ＭＭＵ３２０）は、物理アドレスに変換される仮想アドレスを含む要求を受信する。この場合、要求は、ＳＰＡに変換されるＧＶＡ又はＧＰＡ（仮想アドレス）を含む。
【００６７】
条件６３０において、ＴＬＢルックアップがヒットした場合（すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、ＭＭＵ  ＴＬＢで見つかる）、ステップ６４０において、ＭＭＵ  ＴＬＢに記憶された対応するＳＰＡが、クライアントに返される。いくつかの実施形態では、例えば、変換がＭＭＵ  ＴＬＢの下位レベルで見つかった場合には、この時点でＭＭＵ  ＴＬＢに対する置換アルゴリズムが実行されて、キャッシュが更新される。
【００６８】
ＴＬＢルックアップがミスした場合（すなわち、要求に含まれるか、要求によって示される仮想アドレスに対応するＳＰＡが、ＭＭＵ  ＴＬＢ内に見つからない）、要求された仮想アドレスのドメインＩＤがＭＭＵ  ＴＬＢ内に記憶されているかどうかが決定される。条件６４３において、ドメインＩＤがＭＭＵ  ＴＬＢに記憶されていない場合、ステップ６４５において、要求された仮想アドレスのドメインＩＤがメモリからフェッチされ、それ以外の場合には、ステップ６５０において、ＭＭＵ  ＴＬＢから取得される。何れの場合も、ページテーブルウォーク及びＥＭＴＬＢルックアップの両方が、ステップ６５５，６６０において、仮想アドレス及びドメインＩＤに基づいて実行される。
【００６９】
条件６６５において、ＥＭＴＬＢがヒットした場合、ページテーブルウォークが中止され、ステップ６４０において、対応するＳＰＡがクライアントに返される。いくつかの実施形態では、ＥＭＴＬＢの置換状態は、ルックアップヒットを反映するように更新される（すなわち、物理アドレス変換がＥＭＴＬＢにおいて最近使用されたことが書き留められる）。
【００７０】
条件６６５において、ＥＭＴＬＢルックアップがミスした場合、ＥＭＴＬＢルックアップが単に終了し、ステップ６５５において、ページテーブルウォークが継続される。
【００７１】
ステップ６５５のページテーブルウォークは、この例ではステップ６６０のＥＭＴＬＢルックアップよりも時間がかかり、ステップ６７０において、メモリからページディレクトリをフェッチすることと、ステップ６７５において、フェッチしたページディレクトリを使用して、仮想アドレスに対応するページテーブルエントリをフェッチすることと、を含む。ステップ６４０において、ＭＭＵは、フェッチされたページテーブルエントリから、対応するＳＰＡをクライアントに返す。
【００７２】
いくつかの実施形態では、変換は、ステップ６４０においてＴＬＢに記憶される。いくつかの実施形態では、ＴＬＢの置換状態は、ルックアップヒットを反映するように更新される（すなわち、物理アドレス変換がＴＬＢにおいて最近使用されたことが書き留められる）。いくつかの実施形態では、変換が記憶される前にＴＬＢが満杯になった場合には、置換アルゴリズムも実行されて、変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、変換のためのスペースを確保するためにエントリがＴＬＢからエビクトされる場合に、エビクトされたエントリがＥＭＴＬＢに書き込まれ、対応する置換アルゴリズムが、必要に応じてＥＭＴＬＢで実行される（すなわち、必要に応じて、ＥＭＴＬＢからエビクトされるエントリを決定し、ＴＬＢからエビクトされてＥＭＴＬＢに書き込まれたエントリの最新性を更新する）。いくつかの実施形態では、変換は、ページテーブルウォークに続いてＴＬＢに書き込まれると同時にＥＭＴＬＢに書き込まれ、ＴＬＢのエビクトは、例えば、変換がＴＬＢに書き込まれたときに既にＥＭＴＬＢに書き込まれていると仮定して、ＥＭＴＬＢに書き込まれない。
【００７３】
手順６００は、手順４００と同様に、ＥＭＴＬＢで変換が見つかった場合に、ページテーブルウォーク（及び、その潜在的にコストのかかるオーバーヘッド）が回避されるシナリオを説明している。ＴＬＢルックアップ及びＥＭＴＬＢルックアップの両方がミスするシナリオでは、ページテーブルウォークのオーバーヘッドが依然として発生するが、ＥＭＴＬＢルックアップは、ページテーブルウォークと並行して実行されるので、このオーバーヘッドは、ＥＭＴＬＢルックアップのオーバーヘッドに追加されない。場合によっては、ページテーブルウォークと並行して動作するＥＭＴＬＢの実施形態は、このようなシナリオの間に性能を低下させることがない。
【００７４】
状況によっては、ＴＬＢの特定の内容を無効にする必要がある。このような状況は、例えば、ソフトウェアがメモリ内のページテーブルに変更を加える場合に発生する（例えば、ページテーブルエントリの場合、有効なビット値の変更、アドレスの変更、属性の変更（例えば、読み出し／書き込みから読み出し専用等））。ソフトウェアは、メモリ内のページテーブルに変更を加える場合があり、この場合、例えば、メモリの割り当てが解除されて、新たなクライアントへの割り当てのためにメモリが解放される。メモリの割り当てが解除される例としては、アプリケーション又はデバイスドライバが、その使用のために割り当てられたメモリの使用を終了し、そのメモリを解放する場合がある。
【００７５】
このような場合、ＴＬＢの内容は、無効としてマークされるか、異なる実施形態では、消去又は「ゼロで埋められる（zeroed out）」。ＥＭＴＬＢを含む実施形態では、ＥＭＴＬＢの特定の内容も無効にする必要がある。しかし、そのサイズが大きい及びアクセスのレイテンシが長いために、ＥＭＴＬＢの各エントリをスキャンして無効化ターゲットを特定することができない場合がある。したがって、ＥＭＴＬＢエントリは、ドメインベースの無効化を容易にするために、ドメインＩＤを含んでもよい。例えば、特定のＶＭに対応するＧＰＡの範囲を無効にする場合、そのＶＭのドメインＩＤに対応するＥＭＴＬＢのエントリのみをスキャンして無効にする必要がある。
【００７６】
ＥＭＴＬＢエントリを無効にするには、いくつかの異なるオプションが考えられる。いくつかの実施形態では、遅延無効化を含む。遅延無効化は、ＥＭＴＬＢアクセスの前に適用されるフィルタとして実装することができる。フィルタには、処理のためにバッファリングされたが、ＥＭＴＬＢメモリ自体の更新が完了していない無効化に関する情報が含まれている。無効化がＥＭＴＬＢ制御ロジックによって（例えば、ＭＭＵを介してソフトウェアから）受信された場合には、これらは、（スペースがあれば）フィルタに記憶され、ＥＭＴＬＢメモリがチェックされる前、又は、場合によっては更新される前であっても、ＭＭＵによって「完了」として処理される。無効化を完了したものとして処理する場合、ＭＭＵは、ソフトウェアに信号を送り、無効化が完了したことを示す。ソフトウェアは、以前の変換のコピーがＴＬＢ／ＥＭＴＬＢから削除されているので、ページテーブルの無効化された部分を適切な方法で変更することができる。例示的な動作では、システム上で実行されているソフトウェアは、特定のページ変換を無効にする信号を（例えば、他の構成要素を介して）ＭＭＵに送る。信号がＭＭＵによって受信された後に（例えば、好適な方法で確認応答された後に）、ソフトウェアは、無効化を完了したものとして処理する。これは、この時点以降に、ＭＭＵが無効化を完了するか無効化をバッファに記憶し（すなわち、遅延無効化）、これにより、無効化された変換がＥＭＴＬＢで無効とマークされていなくても、無効化された変換がアクセスされないようにするためである。
【００７７】
変換ルックアップのためのＥＭＴＬＢ制御ロジックへの変換要求がフィルタでヒットした場合、変換が実際にＥＭＴＬＢメモリに記憶されている場合であっても、その要求はＥＭＴＬＢミスとして処理される。これは、ＥＭＴＬＢメモリ内の関連するエントリが、ＥＭＴＬＢメモリ内で物理的にエンコードされている場合であっても（すなわち、フィルタ内の無効化バッファがＥＭＴＬＢメモリを未だ更新していない場合であっても）、無効化されることが意図されていたためである。いくつかの実施形態では、状態機械がＥＭＴＬＢメモリを検索して、フィルタ内のバッファリングされた何れかの無効化に一致するエントリを探す。いくつかの実施形態では、これは、変換要求の待機及び受信と並行して行われる。フィルタにバッファリングされた何れかのエントリが無効化基準に一致する場合、対応するエントリがＥＭＴＬＢメモリからエビクトされる。無効化に一致する可能性のある全てのエントリがスキャンされると、処理された無効化はフィルタから削除される。
【００７８】
フィルタが満杯の場合には、無効化を直ちに完了することができない。この場合、いくつかの実施形態では、無効化は、フィルタ内のスペースが解放されるのを待つか、（例えば、ＥＭＴＬＢロジック内の）別のスキャンロジックがＥＭＴＬＢメモリをスキャンして、無効化基準に一致するエントリを探し出し、それらをエビクトする。スキャンが完了した場合に、ＥＭＴＬＢの観点からは無効化が完了したものと見なされる。
【００７９】
いくつかの実施形態は、無効化のための「メモリ書き込み／消去」スキームを含む。メモリ書き込み／消去スキームでは、スキャンロジックは、ＥＭＴＬＢメモリの内容を読み出さずに、無効にするエントリを決定する。むしろ、スキャンロジックは、無効化基準に一致する潜在的なエントリの全てを無効にするように、ＥＭＴＬＢメモリに単に書き込みを行う。このスキームでは、１つ以上のメモリ書き込みが必要になる場合がある。
【００８０】
いくつかの実施形態は、無効化のための「読み出し−変更−書き込み」スキームを含む。読み出し−変更−書き込みスキームでは、スキャンロジックが、ＥＭＴＬＢの潜在的なエントリを読み出して、無効化基準に一致するエントリを判別し、基準に一致するエントリのみを上書きして無効化する。
【００８１】
本明細書における開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素を特定の組み合わせで上述したが、特徴又は要素の各々は、他の特徴及び要素を伴わずに単独で、又は、他の特徴及び要素を伴うか伴わずに様々な組み合わせで使用することができる。
【００８２】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサは、例えば、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと協働する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他の任意のタイプの集積回路（ＩＣ）、及び／又は、状態機械を含む。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令の結果と、ネットリストを含む他の中間データ（コンピュータ可読媒体に記憶することができる命令）と、を使用して製造プロセスを構成することによって、製造することができる。このような処理の結果は、本開示の特徴を実装するプロセッサを製造するための半導体製造プロセスで後に使用されるマスクワークとすることができる。
【００８３】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによって実行されるために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実装することができる。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、ＣＤ−ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等の光学媒体を含む。
【図１】
2022501705.tif 000003
【図２】
2022501705.tif 000004
【図３】
2022501705.tif 000005
【図４】
2022501705.tif 000006
【図５】
2022501705.tif 000007
【図６】
2022501705.tif 000008
【国際調査報告】
2022501705.tif 000009
2022501705.tif 000010