(57)【要約】装置は、データを格納するように構成されているメモリと、下位階層ＴＬＢと、上位階層ＴＬＢと、ＴＬＢコントローラとを含む。下位階層ＴＬＢおよび上位階層ＴＬＢは、複数のエントリを格納するように構成され、エントリの各々は、仮想アドレスが対応する物理アドレスに変換されるようにできるアドレス変換情報を含んでいる。ＴＬＢコントローラは、所望の仮想アドレスが下位階層ＴＬＢおよび上位階層ＴＬＢからＴＬＢミスを生成した場合、メモリ内のページ・テーブルから所望の仮想アドレスのアドレス変換情報を取り出す。単一のＴＬＢ書き込み命令を使用して、ＴＬＢコントローラは、ページ・テーブルから取り出されたアドレス変換情報を上位階層ＴＬＢだけでなく下位階層ＴＬＢにも書き込むことによって、下位階層ＴＬＢおよび上位階層ＴＬＢの両方を更新する。
2009512943.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ用のコンピュータ可読命令が格納されているコンピュータ可読媒体であって、前記命令は、前記プロセッサによって読み出され、実行されるときに、前記プロセッサに、
物理メモリをアクセスさせ、下位階層ＴＬＢおよび上位階層ＴＬＢの両方についてＴＬＢミス信号を生成する仮想アドレスのアドレス変換情報を取り出させ、
単一のＴＬＢ書き込み命令を使用して、前記メモリから取り出された前記アドレス変換情報を前記下位階層ＴＬＢおよび前記上位階層ＴＬＢの両方に書き込むことによって、前記下位階層ＴＬＢおよび前記上位階層ＴＬＢの両方を更新させる、
コンピュータ可読媒体。
【請求項２】
前記コンピュータ可読媒体には、前記プロセッサ用のさらなるコンピュータ可読命令が格納され、前記さらなる命令は、前記プロセッサによって読み出され、実行されるときに、前記プロセッサに、最初に前記下位階層ＴＬＢへアクセスさせて仮想アドレスのアドレス変換情報を検索させ、前記仮想アドレスが前記下位階層ＴＬＢからＴＬＢミスを生成した場合、上位階層ＴＬＢへアクセスさせて検索させ、前記仮想アドレスが前記上位階層ＴＬＢからＴＬＢミスを生成した場合、前記物理メモリ内のページ・テーブルをアクセスさせて前記所望の仮想アドレス用の前記アドレス変換情報を取り出させる、請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記プロセッサは、設定ビットを有する制御レジスタを含み、前記コンピュータ可読媒体には、前記プロセッサ用のさらなるコンピュータ可読命令が格納され、前記さらなる命令は、前記プロセッサによって読み出され、実行されるときに、前記取り出されたアドレス変換情報のＴＬＢ書き込み操作をするべきかどうかを前記設定ビットに判断させる、請求項１に記載のコンピュータ可読媒体。
【請求項４】
前記プロセッサは複数の階層のＴＬＢを含み、前記さらなる命令は、前記プロセッサによって読み出され、実行されるときに、前記設定ビットに、前記単一のＴＬＢ書き込み命令に応じて更新される前記下位階層ＴＬＢおよび前記上位階層ＴＬＢを、前記複数の階層のＴＬＢから選択させる、請求項３に記載のコンピュータ可読媒体。
【請求項５】
前記プロセッサは複数の階層のＴＬＢを含み、前記コンピュータ可読媒体には、前記プロセッサ用のさらなるコンピュータ可読命令が格納され、前記さらなる命令は、前記プロセッサによって読み出され、実行されるときに、前記プロセッサに、前記メモリから取り出された前記アドレス変換情報を使用して、前記複数の階層のＴＬＢから、前記単一のＴＬＢ書き込み命令に応じて更新される前記下位階層ＴＬＢおよび前記上位階層ＴＬＢを選択させる、請求項１に記載のコンピュータ可読媒体。
【請求項６】
２階層以上のＴＬＢを更新する方法であって、前記方法は、
メモリをアクセスして仮想アドレス用の前記アドレス変換情報を取り出すこと、そして
単一のＴＬＢ書き込み命令を使用して、前記メモリから取り出された前記アドレス変換情報を下位階層ＴＬＢおよび上位階層ＴＬＢの両方に書き込むことによって、前記下位階層ＴＬＢおよび前記上位階層ＴＬＢの両方を更新すること、
を備える方法。
【請求項７】
前記下位階層ＴＬＢおよび前記上位階層ＴＬＢから、仮想アドレス用のＴＬＢミスの指示を受信する前記行為をさらに備える、請求項６に記載の方法。
【請求項８】
前記下位階層ＴＬＢおよび前記上位階層ＴＬＢをアクセスして、前記仮想アドレス用のアドレス変換情報を検索する前記行為をさらに備え、前記アドレス変換情報は前記仮想アドレスが物理アドレスに変換されるようにできるものである、請求項５に記載の方法。
【請求項９】
前記メモリは、複数のページにデータを格納するように構成され、前記メモリは、前記複数のページの各１ページの前記メモリ内の位置についての情報を格納するように構成されているページ・テーブルを含み、前記メモリをアクセスして前記アドレス変換情報を取り出す前記行為は、前記ページ・テーブルから前記アドレス変換情報を取り出すことを備える、請求項６に記載の方法。
【請求項１０】
メモリと、
各エントリが、仮想アドレスが対応する物理アドレスに変換されるようにできるアドレス変換情報を含む、複数の前記エントリを格納するように構成されている、下位階層変換索引緩衝機構（ＴＬＢ）および上位階層ＴＬＢと、そして
所望の仮想アドレスが、前記下位階層ＴＬＢおよび前記上位階層ＴＬＢからＴＬＢミスを生成した場合、前記所望の仮想アドレス用のアドレス変換情報を前記メモリから取り出すように構成されているＴＬＢコントローラであって、前記ＴＬＢコントローラは、単一のＴＬＢ書き込み命令を使用して、前記メモリから取り出された前記アドレス変換情報を前記下位階層ＴＬＢおよび前記上位階層ＴＬＢの両方に前記単一のＴＬＢ書き込み命令を使用して書き込むことによって、前記下位階層ＴＬＢおよび前記上位階層ＴＬＢの両方を更新するようにさらに構成されているＴＬＢコントローラと、
を備える装置。
【請求項１１】
前記メモリは、複数のページにデータを格納するように構成され、前記メモリは、前記複数のページの各１ページの前記メモリ内の位置についての情報を格納するように構成されているページ・テーブルを含む、請求項１０に記載の装置。
【請求項１２】
前記ＴＬＢコントローラは、最初に前記下位階層ＴＬＢをアクセスして前記所望のアドレス変換情報を検索し、前記所望のアドレス変換情報が前記下位階層ＴＬＢにない場合、前記上位階層ＴＬＢへアクセスして検索し、前記所望のアドレス変換情報が前記上位階層ＴＬＢにない場合、前記メモリをアクセスして前記所望のアドレス変換情報取り出すようにさらに構成されている、請求項１０に記載の装置。
【請求項１３】
前記ＴＬＢコントローラは、設定ビットを有する制御レジスタを備え、前記設定ビットは、単一のＴＬＢ書き込み命令を使用して更新される前記下位階層ＴＬＢおよび前記上位階層ＴＬＢを、複数の階層のＴＬＢから選択するように構成されている、請求項１０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変換索引緩衝機構（ＴＬＢｓ：translation lookaside buffers）に関する。
【０００２】
［背景］
ページ化された仮想メモリをサポートするプロセッサにおいて、データは、プロセッサの仮想アドレス空間を占める仮想アドレス（「実効」アドレスまたは「リニア」アドレスとも称される）を使用して指定されればよい。仮想アドレス空間は、一般的に、システム内にある実際の物理メモリ(physical memory)のサイズよりも大きければよい。プロセッサのオペレーティング・システムは、ページと呼ばれる固定サイズのブロックにて物理メモリを管理すればよい。
【０００３】
仮想ページ・アドレスを物理ページ・アドレスに変換するために、プロセッサは、システム・メモリに格納されたページ・テーブルを検索すればよい。このページ・テーブルには、必要なアドレス変換情報が含まれていればよい。ページ・テーブル・データがデータ・キャッシュにないと、これらの検索（または「ページ・テーブル・ウォーク」）では、一般的にメモリのアクセスが必要となるので、これらの検索には時間がかかるであろう。
【０００４】
したがって、プロセッサは、１つ以上の変換索引緩衝機構（ＴＬＢｓ）を使用して、アドレス変換を実行すればよい。ＴＬＢは、アドレス変換キャッシュ、すなわち仮想アドレスから物理アドレスへの最近のマッピングを格納する小さなキャッシュである。プロセッサは、ページ・テーブル検索およびアドレス変換を実行した後、ＴＬＢに物理アドレスをキャッシュすればよい。ＴＬＢの内容には、一般によく参照される仮想アドレスのほか、それらに関連づけられた物理ページ・アドレスが含まれていればよい。命令アドレス（「命令ＴＬＢ」または「Ｉ−ＴＬＢ」とも称される）とデータ・アドレス（「データ−ＴＬＢ」または「Ｄ−ＴＬＢとも称される」）とでは、別のＴＬＢｓであってもよい。
【０００５】
ＴＬＢアクセスの効率を上げるためには、類推すると、多階層のメモリ・キャッシュに対して多階層のＴＬＢｓが使用および実装されればよい。下位階層のＴＬＢは、一般的に、１つ以上の上位階層のＴＬＢｓと比べるとさらに小さく高速であろう。ＴＬＢミスが下位階層のＴＬＢと上位階層のＴＬＢとの両方で発生する場合、一般にページ・テーブル・ウォークの結果として、上位階層のＴＬＢが更新される。
【０００６】
通常、下位階層のＴＬＢは、物理メモリのページ・テーブルから検索されたアドレス変換情報を用いて更新されないであろう。下位階層のＴＬＢへの次の参照は、したがって、結果としてＴＬＢミスとなり、所望のアドレス変換情報を求めて上位階層のＴＬＢを検索することが必要になる。しかし、下位階層のＴＬＢにおけるミス、および結果として生じる上位階層のＴＬＢの検索に関連する望ましくないレイテンシが発生するであろう。
【発明の開示】
【０００７】
［概要］
コンピュータ可読媒体は、プロセッサ用のコンピュータ可読命令を格納する。これらの命令は、プロセッサによって読み出され、実行されるとき、プロセッサに物理メモリをアクセスさせて、下位階層ＴＬＢおよび上位階層ＴＬＢの両方についてＴＬＢミス信号を生成する仮想アドレスのアドレス変換情報を取り出させる。また、これらの命令は、単一のＴＬＢ書き込み命令を使用して、メモリから取り出されたアドレス変換情報を下位階層ＴＬＢおよび上位階層ＴＬＢの両方に書き込むことによって、プロセッサに下位階層ＴＬＢおよび上位階層ＴＬＢの両方を更新させる。
【０００８】
２階層以上のＴＬＢを更新する方法は、メモリをアクセスして仮想アドレスのアドレス変換情報を取り出すことを含む。この方法は、単一のＴＬＢ書き込み命令を使用して、メモリから取り出されたアドレス変換情報を下位階層ＴＬＢおよび上位階層ＴＬＢの両方に書き込むことによって、下位階層ＴＬＢおよび上位階層ＴＬＢの両方を更新することを含む。
【０００９】
装置は、メモリと、下位階層ＴＬＢと、上位階層ＴＬＢと、ＴＬＢコントローラとを含む。下位階層ＴＬＢおよび上位階層ＴＬＢは、複数のエントリを格納するように構成され、エントリの各々は、仮想アドレスが対応する物理アドレスに変換されるようにできるアドレス変換情報を含んでいる。ＴＬＢコントローラは、所望の仮想アドレスが下位階層ＴＬＢおよび上位階層ＴＬＢからＴＬＢミスを生成する場合、メモリから所望の仮想アドレスのアドレス変換情報を取り出すように構成される。ＴＬＢコントローラはさらに、単一のＴＬＢ書き込み命令を使用して、メモリから取り出されたアドレス変換情報を下位階層ＴＬＢおよび上位階層ＴＬＢの両方に書き込むことによって、単一のＴＬＢ書き込み命令を使用して下位階層ＴＬＢおよび上位階層ＴＬＢの両方を更新するように構成される。
【００１０】
［詳細な説明］
添付の図面に関連して以下に開示された詳細な説明は、多階層のＴＬＢを更新するように構成された方法およびシステムの様々な実施形態を記載するものであり、可能な実施形態のみを示すためのものではない。詳細な説明は、記載されている内容を完全に理解できるように、特定の詳細を含んでいる。しかし、これらの特定の詳細は、記載された実施形態のいくつかには含まれなくてもよいことは、当業者であれば理解すべきである。いくつかの例では、説明されている概念をさらに明確に示すために、周知の構造およびコンポーネントがブロック図の形式で示されている。
【００１１】
図１は、物理メモリ３０に含まれるページ・テーブル２０と併せた、変換索引緩衝機構（ＴＬＢ）１０の仮想メモリ・システムにおける動作を概略的に示す図である。当技術分野で周知のように、仮想メモリ・システムにおいて、一般的に仮想（または「リニア」）アドレス空間と物理アドレス空間との間でマッピング（または変換）が行われればよい。仮想アドレス空間とは、一般的にプロセッサによって生成されるすべての仮想アドレス２２のセットのことをいう。物理アドレス空間とは、一般的に物理メモリ３０に常駐しているデータのすべての物理アドレス、すなわち、物理メモリ３０内の特定の位置に対する書き込みまたは読み出しのためにメモリ・バス上に用意されていればよいアドレスのセットのことをいう。
【００１２】
ページ化された仮想メモリ・システムでは、データは一般的にページ３１と称される固定長単位から構成されているものと想定されればよい。仮想アドレス空間および物理アドレス空間は、連続したページ・アドレスのブロックに分けられており、各仮想ページ・アドレスによって仮想ページ番号が提供され、各対応する物理ページ・アドレスによって特定のページ３１のデータのメモリ３０内での位置が示されればよい。典型的なページ・サイズは、例えば４キロバイトでもよいが、様々な仮想ページ化メモリ・システムで様々なページ・サイズが使用されてもよい。物理メモリ３０内のページ・テーブル２０は、仮想アドレス空間内のすべての仮想ページ・アドレスのために、仮想メモリ・システムのすべての仮想ページ・アドレスに対応する物理ページ・アドレスを含んでいればよい。すなわち、仮想ページ・アドレスと対応する物理ページ・アドレス間のマッピングを含んでいればよい。一般的に、ページ・テーブル２０は、複数のページ・テーブル・エントリ（ＰＴＥｓ：page table entries）２１を含んでおり、各ＰＴＥ２１は、特定の仮想アドレスに対応する物理メモリ３０内のページ３１を指し示していればよい。
【００１３】
物理メモリ３０内のページ・テーブル２０に格納されたＰＴＥｓ２１にアクセスするには、メモリ・バス・トランザクションが必要となるであろう。これは、プロセッサのサイクル・タイムおよび消費電力がかかってしまうことになるであろう。メモリ・バス・トランザクションの数は、物理メモリ３０ではなくＴＬＢ１０をアクセスすることによって減るであろう。先に説明したように、ＴＬＢ１０は、仮想アドレスと物理アドレスとの間の最近のマッピングを格納するアドレス変換キャッシュである。ＴＬＢ１０は、一般的にページ・テーブル２０に格納された仮想アドレス対物理アドレスのマッピングのサブセットを含む。ＴＬＢ１０は、一般的に複数のＴＬＢエントリ１２を含んでいればよい。各ＴＬＢエントリ１２には、タグ・フィールド１４およびデータ・フィールド１６があればよい。タグ・フィールド１４は、仮想ページ・アドレスの上位ビットのいくつかをタグとして含んでいればよい。データ・フィールド１６は、タグ付けされた仮想ページ・アドレスに対応する物理ページ・アドレスを示せばよい。
【００１４】
ある命令の中に、対応する物理アドレスへ変換する必要のある仮想アドレス２２があるとき、プログラムの実行の間、ＴＬＢ１０をアクセスしてＴＬＢ１０に格納されたエントリ１２の中から仮想アドレス２２を調べればよい。仮想アドレス２２は、一般的に仮想ページ番号を含む。これは、ＴＬＢ１０において対応する物理ページ・アドレスを調べるために使用される。
【００１５】
ＴＬＢ１０がＴＬＢエントリの中に、ＴＬＢに与えられる仮想アドレス２２に含まれる仮想ページ番号に対応する特定の物理ページ・アドレスを含んでいる場合、ＴＬＢ「ヒット」が発生し、物理ページ・アドレスをＴＬＢ１０から取り出すことができる。ＴＬＢ１０がＴＬＢエントリの中に、ＴＬＢに与えられる仮想アドレス２２中の仮想ページ番号に対応する特定の物理ページ・アドレスを含まない場合、ＴＬＢ「ミス」が発生し、物理メモリ３０内のページ・テーブル２０の検索を実行しなければならないだろう。ページ・テーブル２０から物理ページ・アドレスが判明されたら、仮想ページ・アドレスに対応する物理ページ・アドレスはＴＬＢ１０にロードされればよく、ＴＬＢ１０は仮想ページ・アドレス２２を用いて再びアクセスされればよい。所望の物理ページ・アドレスがＴＬＢ１０にロードされているので、今回のＴＬＢアクセスは結果としてＴＬＢ「ヒット」となり、最近ロードされた物理ページ・アドレスがＴＬＢ１０の出力で生成されるであろう。
【００１６】
図２は、アドレス変換システム１００の例を示す概略図である。このシステムは、単一のＴＬＢ書き込み操作の結果として、２階層以上のＴＬＢを更新するように構成されている。概して、アドレス変換システム１００は、下位階層ＴＬＢ１１０と、上位階層ＴＬＢ１１５と、下位階層ＴＬＢ１１０および上位階層ＴＬＢ１１５との両方の動作を制御するＴＬＢコントローラ１４０とを含んでいればよい。アドレス変換システム１００は、ページ・テーブル１２０を含んでいればよい物理メモリ１３０に接続されていればよい。ＴＬＢコントローラ１４０は、プロセッサ内のＣＰＵ（セントラル・プロセッシング・ユニット）の一部であってもよい。あるいは、ＴＬＢコントローラ１４０は、プロセッサのコア内、および／またはプロセッサのＣＰＵの近くに配置されてもよい。ＴＬＢコントローラ１４０は、ＴＬＢの両階層へのアクセスを制御するＴＬＢ管理ソフトウェアを含んでいてもよい。
【００１７】
例えばメモリ・キャッシュにおいてよく使用される多階層のキャッシュから類推して、下位階層ＴＬＢ１１０を上位階層ＴＬＢとともに使用することによって、アドレス変換操作の効率が上げられればよい。下位階層ＴＬＢ１１０は、一般的に上位階層ＴＬＢ１１５よりも小さく、含まれるＴＬＢエントリもより少ない。したがって、頻繁に使用されるアドレス・データへのアクセス時間も短くなる。簡略化のために、図２には単一の上位階層ＴＬＢ１１５だけが示されているが、アドレス変換システム１００には複数の上位階層ＴＬＢｓが含まれていてもよく、階層の高くなっている各ＴＬＢは前の階層のＴＬＢよりも大きく、ＴＬＢエントリの数も徐々に増えていくことは理解すべきである。
【００１８】
ＴＬＢコントローラ１３０内のＴＬＢ管理ソフトウェアは、所望の仮想アドレス用のアドレス変換情報を探すために、図２において参照番号１１１が付された矢印によって示されるように、下位階層ＴＬＢ１１０が最初にアクセスされて検索されるようにすればよい。下位階層ＴＬＢ１１０においてＴＬＢヒットが発生した場合、ＴＬＢコントローラ１３０内のソフトウェアは、参照番号１１２が付された矢印で示されるように、検索結果が取り出されるようにすればよい。下位階層ＴＬＢ１１０においてＴＬＢミスが発生した場合、ソフトウェアは、上位階層ＴＬＢ１１５の検索を実施すればよい。上位階層ＴＬＢ１１５の検索は、図２において参照番号１１３の付された矢印で示されている。上位階層ＴＬＢ１１５は、一般的に、下位階層ＴＬＢ１１０と比べると、さらに多くのＴＬＢエントリを含んでいればよい。
【００１９】
上位階層ＴＬＢ１１５の検索１１３の結果がＴＬＢヒットの場合、検索の結果は、図２において参照符号１１６の付された矢印で示されるように、下位階層ＴＬＢに取り込まれロードされればよい。しかし、上位階層ＴＬＢ１１５の検索１１３の結果がそれでもミスの場合、所望の物理ページ・アドレス情報を取り出すために、ＴＬＢコントローラ１４０内のソフトウェアが物理メモリ１３０内のページ・テーブル１２０の検索を実施すればよい。ページ・テーブル１２０の検索は、図２において参照番号１１７の付された矢印で示されている。
【００２０】
所望のページが物理メモリ１３０に存在する場合、関連するアドレス変換情報がページ・テーブル１２０から上位階層ＴＬＢ１１５へロードされればよい。これは、図２において参照番号１２１が付された矢印によって示されるように、所望のアドレス変換情報（すなわち、仮想アドレスと対応する物理アドレスとの間のマッピング）が上位階層ＴＬＢ１１５に書き込まれればよいことを意味している。所望のページがメモリ１３０にない場合、ページ・フォールトが発生し、オペレーティング・システムに例外が通知される。
【００２１】
上位階層ＴＬＢ１１５が更新されると、ＴＬＢ管理ソフトウェアは、ＴＬＢコントローラ１４０にＴＬＢ参照プロセスを繰り返させればよい。両方のＴＬＢｓ（１１０および１１５）において最初にミスとなった仮想アドレスを持つ命令が再びフェッチされ、ＴＬＢ参照プロセスがもう一度、下位階層ＴＬＢ１１０から開始されて実行されればよい。
【００２２】
下位階層ＴＬＢ１１０が更新されず、上位階層ＴＬＢ１２０だけがページ・テーブル１２０から取り出されたアドレス変換情報を用いて更新される場合、続くＴＬＢ参照プロセスにおいて、下位階層ＴＬＢ１１０においてＴＬＢミスが発生することになる。結果として、所望のアドレス変換情報を取り出すために、上位階層ＴＬＢ１１５の検索が必要となる。下位階層のＴＬＢ１１０におけるミス、および結果として生じる上位階層のＴＬＢ１１５の検索に伴い、望ましくないレイテンシが発生することになる。
【００２３】
アドレス変換システム１００の例示された実施形態において、ＴＬＢコントローラ１４０は、ページ・テーブル１２０から取り出されたアドレス変換情報を使用して、ＴＬＢコントローラ１４０に下位階層ＴＬＢ１１０と上位階層ＴＬＢ１１５との両方を更新させるソフトウェアを含んでいる。特に、ＴＬＢコントローラ１４０内のソフトウェアは、ページ・テーブル１２０から取り出されたアドレス変換情報が、単一のＴＬＢ書き込み命令の結果として、両方の階層のＴＬＢに書き込まれるようにする。図２において、上位階層ＴＬＢ１１５の更新は、参照番号１１９の付された矢印で示されている。例示された実施形態において、ＴＬＢコントローラ１４０は、上位階層ＴＬＢ１１５の更新１２１が発生するときには常に、下位階層ＴＬＢ１１０の更新ができるように構成されている。
【００２４】
第１階層のＴＬＢ１１０へのアクセスが２回目に試されたとき、すなわち（最初のＴＬＢｓのアクセスの間にＴＬＢの両階層で見つからなかった）仮想アドレスを含む命令が再びフェッチされた後、上位階層ＴＬＢ１１５だけでなく下位階層ＴＬＢ１１０も更新する結果として、ここではＴＬＢミスではなく、ＴＬＢヒットとなるであろう。このようにして、上位階層ＴＬＢ１１５をさらに検索する必要がないようにすればよい。さらに、２回目の（繰り返される）ＴＬＢ参照プロセスの間の下位階層のＴＬＢ１１０におけるミス、および結果として生じる上位階層のＴＬＢ１２０の検索に伴うレイテンシがなくなるであろう。
【００２５】
図２に示されているように、ＴＬＢコントローラ１４０は、設定ビット１４５を有する制御レジスタ１４３を含んでいればよい。設定ビット１４５は、（参照番号１２１で示される）ＴＬＢ書き込み操作が実行されるべきかどうかを制御すればよい。設定ビット１４５は、ページ・テーブルから取り出されたアドレス変換情報を用いて選択された階層のＴＬＢを更新するために、どの階層のＴＬＢに対して単一のＴＬＢ書き込み操作が実行されるべきかを選択してもよい。
【００２６】
ＴＬＢコントローラ１４０の別の実施形態（図示せず）では、取り出されたアドレス変換情報が書き込まれるＴＬＢの階層の選択は、ページ・テーブルから書き込まれる値によって制御されてもよい。つまり、ページ・テーブルから取り出された値には、所望のアドレス変換情報に加え、取り出されたアドレス変換情報についてのＴＬＢ書き込み操作が実行されることになるＴＬＢの階層の選択に関する情報も含まれていてもよい。
【００２７】
ＴＬＢコントローラ１４０は、コンピュータ可読命令を格納しているコンピュータ可読媒体を含んでいればよい。これらのコンピュータ可読命令は、プロセッサによって読み出されて実行されるとき、プロセッサに物理メモリ１３０内のページ・テーブル１２０をアクセスさせ、下位階層ＴＬＢ１１０および上位階層ＴＬＢ１１５の両方からＴＬＢミスが発生した仮想アドレスのアドレス変換情報を取り出させればよい。コンピュータ可読命令は、プロセッサにページ・テーブル１２０から取り出されたアドレス変換情報を下位階層ＴＬＢ１１０および上位階層ＴＬＢ１１５の両方に対して書き込ませ、これによって単一のＴＬＢ書き込み命令を受けてＴＬＢの両階層を更新すればよい。
【００２８】
ＴＬＢコントローラ１４０は、設定ビット１４５を有する制御レジスタ１４３を含んでいればよい。コンピュータ可読媒体には、プロセッサによって読み出されて実行されるときに、下位階層ＴＬＢ１１０および上位階層ＴＬＢ１１５に対する、取り出されたアドレス変換情報のＴＬＢ書き込み操作が発生すべきかどうかを設定ビット１４５に判断させる、さらなるコンピュータ可読命令が格納されていてもよい。
【００２９】
コンピュータ可読媒体には、プロセッサによって読み出されて実行されるときに、設定ビット１４５に、プロセッサ内の複数の階層のＴＬＢから、単一のＴＬＢ書き込み命令の結果として更新されることになる２つ以上の階層のＴＬＢを選択するようにさせる、さらなるコンピュータ可読命令が格納されていてもよい。つまり、これらのさらなるコンピュータ可読命令は、単一のＴＬＢ書き込み命令の結果として、ページ・テーブルから取り出されたアドレス変換情報が書き込まれるべきＴＬＢの階層を、設定ビットに選択させればよい。
【００３０】
コンピュータ可読媒体には、プロセッサによって読み出されて実行されるときに、単一のＴＬＢ書き込み命令の結果として、更新されることになる２つ以上のＴＬＢの階層の選択に関するさらなる情報を、ページ・テーブルから取り出されたアドレス変換情報からプロセッサに読み出させる、さらなるコンピュータ可読命令が格納されていてもよい。つまり、これらのさらなるコンピュータ可読命令は、プロセッサによって読み出されて実行されるときに、取り出されたアドレス変換情報が書き込まれるべきＴＬＢの階層の選択を、取り出されたアドレス変換情報自体から読み出すようにプロセッサにさせればよい。
【００３１】
コンピュータ可読媒体には、プロセッサによって読み出されて実行されるときに、プロセッサに、最初に下位階層ＴＬＢ１１０をアクセスさせて所望の仮想アドレスのアドレス変換情報を検索させ、下位階層ＴＬＢ１１０から所望の仮想アドレスのアドレス変換情報がない場合、すなわち所望の仮想アドレスが下位階層ＴＬＢ１１０に与えられたときにＴＬＢミスが発生する場合、上位階層ＴＬＢ１１５をアクセスさせて検索させる、さらなるコンピュータ可読命令が格納されていてもよい。さらに、さらなるコンピュータ可読命令では、上位階層ＴＬＢ１１５にアドレス変換情報がない場合、すなわち所望の仮想アドレスが上位階層ＴＬＢ１１５に与えられたときにＴＬＢミスが発生する場合、プロセッサに物理メモリ１３０内のページ・テーブル１２０をアクセスさせ、所望の仮想アドレスのアドレス変換情報を取り出させればよい。
【００３２】
図２に示されるアドレス変換システム１００の実施形態は、２つの階層のＴＬＢのみを示しているが、アドレス変換システムの他の実施形態（図示せず）では、３階層以上のＴＬＢを含んでいてもよい。これらのアドレス変換システムは、複数の階層のＴＬＢを含み、各ＴＬＢの階層は、仮想アドレスのアドレス変換情報を格納すればよいＴＬＢエントリを含んでいればよい。これらのアドレス変換システムにおけるＴＬＢコントローラは、下位階層ＴＬＢから開始して、最上位階層のＴＬＢへ向って、多数の階層のＴＬＢを順番にそれぞれアクセスするように設定されればよい。ＴＬＢコントローラは、所望の仮想アドレスのアドレス変換情報が複数の階層のＴＬＢのすべてにない場合、物理メモリ内のページ・テーブルをアクセスし、物理メモリ内のページ・テーブルから所望の仮想アドレスのアドレス変換情報を取り出すように設定されればよい。さらに、ＴＬＢコントローラは、物理メモリのページ・テーブルから取り出されたアドレス変換情報を用いて、複数の階層のすべてのＴＬＢを更新するように設定されればよい。
【００３３】
図３は、２階層以上のＴＬＢを更新する方法３００を示す流れ図である。方法３００は、ステップ３０２から開始する。ステップ３０４において、命令の実行が開始できるように命令がフェッチされればよい。ステップ３０６において、フェッチされた命令用に仮想アドレスが生成されればよい。ステップ３０８において、ＴＬＢコントローラは、下位階層ＴＬＢをアクセスして、ステップ３０６において生成された、下位階層ＴＬＢ内の仮想アドレスのアドレス変換情報を検索すればよい。下位階層ＴＬＢにアドレス変換情報があれば、ＴＬＢコントローラは、ステップ３０９において下位階層ＴＬＢからアドレス変換情報を取り出せばよい。下位階層ＴＬＢに所望のアドレス変換情報がない場合、ＴＬＢミスが起こるであろう。ＴＬＢコントローラは、下位階層ＴＬＢからＴＬＢミスの指示、すなわち「ＴＬＢミス」信号を受信すればよい。続いて、ＴＬＢコントローラは、ステップ３１０において、上位階層ＴＬＢのチェックに進み、所望のエントリが上位階層ＴＬＢにあるかどうかを判断すればよい。
【００３４】
上位階層ＴＬＢに所望のアドレス変換情報があれば、ＴＬＢコントローラは、ステップ３１１において上位階層ＴＬＢからアドレス変換情報を取り出せばよい。上位階層ＴＬＢに所望のアドレス変換情報がない場合、上位階層ＴＬＢにおいてＴＬＢミスが起こるであろう。ＴＬＢコントローラは、上位階層ＴＬＢからＴＬＢミスの指示、すなわち上位階層ＴＬＢからの「ＴＬＢミス」信号を受信すればよい。次いで、ＴＬＢコントローラは、ステップ３１２へ進み、物理メモリをアクセスして、所望のエントリを求めてページ・テーブルを検索すればよい。ページ・テーブルに所望のアドレス変換情報が見つかった場合、ＴＬＢコントローラは、ステップ３１４においてページ・テーブルからその情報を取り出せばよい。ページ・テーブルに所望のアドレス変換情報が見つからない場合、ＴＬＢコントローラは、ステップ３１３においてページ・フォールトを発生させればよい。
【００３５】
ＴＬＢコントローラが、ステップ３１４においてページ・テーブルから所望のエントリを取り出した後、ＴＬＢコントローラは、ステップ３１６において単一のＴＬＢ書き込み命令を実行することによって、下位階層ＴＬＢおよび上位階層ＴＬＢの両方に（ページ・テーブルから取り出された）アドレス変換情報を書き込めばよい。つまり、ＴＬＢコントローラは、単一のＴＬＢ書き込み命令を実行することで両方の階層のＴＬＢを更新すればよい。次いで、命令が再びフェッチされればよいステップ３１８が開始され、ＴＬＢ参照プロセスがもう一度実行されればよい。ステップ３２０において、下位階層ＴＬＢが再びアクセスされればよい。今回は、下位階層のＴＬＢは、既に物理メモリのページ・テーブルから検索されたアドレス変換情報を用いて更新されているので、ＴＬＢヒットが発生するであろう。ＴＬＢコントローラは、ステップ３２２において、所望のアドレス変換情報を下位階層ＴＬＢから取り出せばよい。
【００３６】
方法３００は、単一のＴＬＢ書き込み命令を使用して、どの階層のＴＬＢが更新されるべきかを判断するために、ＴＬＢコントローラ内の設定ビットを読み出す行為（図示せず）を含んでいてもよい。方法３００は、単一のＴＬＢ書き込み命令を使用して、どの階層のＴＬＢが更新されるべきかを判断するために、ページ・テーブルから取り出される値を読み出す行為（図示せず）を含んでいてもよい。
【００３７】
図３に示される方法は２階層のＴＬＢ（すなわち、下位階層ＴＬＢおよび上位階層ＴＬＢ）のみを示しているが、ＴＬＢｓを更新する他の方法（例示されていない）では、３階層以上のＴＬＢｓを含んでいてもよい。
【００３８】
まとめると、命令の再フェッチの間に発生する下位階層ＴＬＢにおけるミスであり、上位階層ＴＬＢが更新されるときに下位階層ＴＬＢは更新されないことによって発生するミスに関連するレイテンシをなくすためのシステムおよび方法を説明した。下位階層ＴＬＢにおけるミスは、上位階層ＴＬＢでの検索が必要になり、さらなるレイテンシを結果として生じさせる。上位階層ＴＬＢが更新されるのと同時に下位階層ＴＬＢを更新することによって、続く下位階層ＴＬＢへの参照においてミスではなくヒットが生じ、上位階層ＴＬＢからエントリを取り出す必要がなくなる。
【００３９】
開示された実施形態の上記の説明は、当業者が上記の方法およびシステムを作成または使用できるように提供されたものである。これらの実施形態に対して様々な変更ができることは当業者であれば容易に分かることであり、本願明細書で定義された一般的な原理は、記載された内容の精神または範囲から逸脱することなく、他の実施形態に適用し得る。したがって、上記の方法およびシステムは、本願明細書で示された実施形態に限定されることを意図するものではなく、特許請求の範囲に則った範囲全体に適合されるものであって、ここで単数形の要素は、特に記載のない限り「１つおよび１つのみ」を意味するものではなく、「１つ以上」を意味するものである。当業者に周知の、または当業者が今後知ることになる本開示全体で説明された様々な実施形態の要素に対するすべての構造的および機能的な同等物は、本願明細書に特に参照として援用され、特許明細書の範囲に含まれるものとする。さらに、そのような開示が特許明細書の範囲において明確に記載されているかどうかにかかわらず、本願明細書に記載されたいかなるものも一般公衆に開放されることは意図されていない。「する手段（means for）」というフレーズを使用して要素が明確に記載されるか、方法クレームの場合は「するステップ（step for）」というフレーズを使用して記載される場合を除き、クレーム構成要素は、米国特許法１１２条第６パラグラフに従って解釈されない。
【図面の簡単な説明】
【００４０】
【図１】仮想メモリ・システムで動作するＴＬＢの概略を示す図。
【図２】上位階層のＴＬＢと、下位階層のＴＬＢと、単一のＴＬＢ書き込み操作の結果としてＴＬＢの両階層を更新するように構成されているＴＬＢコントローラとを有する、アドレス変換システムの例を示す概略図。
【図３】２階層以上のＴＬＢを更新する方法を示す概略フロー・チャート。
【図１】
2009512943.tif 000003
【図２】
2009512943.tif 000004
【図３】
2009512943.tif 000005
【国際調査報告】
2009512943.tif 000006
2009512943.tif 000007