(57)【特許請求の範囲】
【請求項１】
変換索引バッファを管理する方法であって、前記方法は、
入力仮想アドレスと入力ページサイズ指標とを変換索引バッファ（ＴＬＢ）において受け取ることと、前記入力仮想アドレスおよび前記入力ページサイズ指標は、入力ページに対応し、
前記入力ページサイズ指標によって表される入力ページサイズと前記ＴＬＢのエントリのエントリページサイズ指標によって表されるエントリページサイズとのうちの大きい方を決定することと、ここにおいて、前記ＴＬＢの前記エントリは、エントリページに対応し、
前記入力ページサイズと前記エントリページサイズとのうちの前記決定された大きい方を第１の選択されたページサイズとして選択することと、
前記第１の選択されたページサイズに基づいて、前記入力仮想アドレスと前記エントリのエントリ仮想アドレスとの第１のマスクされた比較を実行することと、
前記第１のマスクされた比較を実行した後、前記ＴＬＢが未調査のエントリを含む決定に基づいて、前記ＴＬＢによって、第２のマスクされた比較を選択的に実行することと、
を備える方法。
【請求項２】
前記第１のマスクされた比較を実行することが、
前記入力仮想アドレスと前記エントリ仮想アドレスとの両方の、マスクされるべきビットの数を決定することと、前記ビットの数は、前記第１の選択されたページサイズに基づき、
前記入力ページが前記エントリページに重複するかを決定することと
を含む、請求項１に記載の方法。
【請求項３】
前記ＴＬＢが前記未調査のエントリを含むと決定した後で、
前記入力ページサイズと第２のエントリページサイズとのうちの大きい方を識別するために、前記ＴＬＢの第２のエントリの第２のエントリページサイズ指標と前記入力ページサイズ指標とを比較することと、ここにおいて、前記ＴＬＢの前記第２のエントリは、第２のエントリページに対応し、
前記入力ページサイズと前記第２のエントリページサイズとのうちの前記識別された大きい方を第２の選択されたページサイズとして選択することと、
前記入力ページが前記第２のエントリページに重複するかを決定するために、前記第２の選択されたページサイズに基づいて、前記入力仮想アドレスと前記第２のエントリの第２のエントリ仮想アドレスとの前記第２のマスクされた比較を実行することと、ここにおいて、前記第２のマスクされた比較を実行することは、前記第２の選択されたページサイズに基づいて、前記入力仮想アドレスと前記第２のエントリ仮想アドレスとの両方の、マスクされるべきビットの第２の数を決定することを含む、
をさらに備える、請求項１に記載の方法。
【請求項４】
前記第１の選択されたページサイズは、前記第２の選択されたページサイズと異なり、前記第１の選択されたページサイズは、前記入力ページサイズに対応し、前記第２の選択されたページサイズは、前記第２のエントリページサイズに対応する、請求項３に記載の方法。
【請求項５】
前記第２のエントリページサイズ指標と前記入力ページサイズ指標とを比較することに先立って、前記第２のエントリページを前記ＴＬＢの未調査のエントリとして識別することをさらに備える、請求項３に記載の方法。
【請求項６】
重複検査命令を実行するように構成されたプロセッサと、前記重複検査命令は、入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを含み、前記プロセッサは、
少なくとも１つのエントリを備える変換索引バッファ（ＴＬＢ）と、前記少なくとも１つのエントリは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを含み、
前記入力ページサイズ指標と前記入力仮想アドレスとを受け取るように構成された入力ロジックと、
前記入力ページサイズ指標によって表される入力ページサイズと前記エントリページサイズ指標によって表されるエントリページサイズとのうちの大きい方を決定し、
前記入力ページサイズと前記エントリページサイズとのうちの前記決定された大きい方を選択されたページサイズとして選択し、
前記選択されたページサイズに基づいて、前記重複検査命令の結果を決定し、ここにおいて、前記結果は、前記入力ページが前記エントリページに重複するかに基づき、
前記重複検査の前記結果が決定された後で、前記ＴＬＢが、前記ＴＬＢは未調査のエントリを含む決定に基づいて、第２の重複検査の第２の結果を選択的に決定する
ように構成された重複検査ロジックと
を含み、
前記重複検査ロジックから１つまたは複数の結果を受け取るように構成されたレジスタと
を備える装置。
【請求項７】
前記少なくとも１つのエントリが、アプリケーション空間識別子（ＡＳＩＤ）とグローバル指標とをさらに含み、前記入力ロジックが、入力ＡＳＩＤを受け取るようにさらに構成され、ここにおいて、前記重複検査ロジックが、
第１の値を有する前記グローバル指標に応答して、前記ＡＳＩＤと前記入力ＡＳＩＤとの比較に基づいて、前記入力ページが前記エントリページに重複するかを決定し、
第２の値を有する前記グローバル指標に応答して、前記ＡＳＩＤと前記入力ＡＳＩＤととは無関係に、前記入力ページが前記エントリページに重複するかを決定する
ようにさらに構成される、請求項６に記載の装置。
【請求項８】
前記入力ページサイズ指標が、第１のマスクまたは前記入力ページサイズによって表され、前記エントリページサイズ指標が、第２のマスクまたは前記エントリページサイズによって表される、請求項６に記載の装置。
【請求項９】
前記少なくとも１つのエントリが、前記エントリ仮想アドレス、アプリケーション空間識別子（ＡＳＩＤ）、キャッシュ可能指標、許可指標、グローバル指標、またはこれらの任意の組み合わせにマッピングされる物理アドレスを含む、請求項６に記載の装置。
【請求項１０】
前記重複検査ロジックは、前記プロセッサに記憶された専用の重複検査ロジックを含む、請求項６に記載の装置。
【請求項１１】
重複検査命令を実行する方法であって、前記方法は、
プロセッサにおいて重複検査命令を実行することと、ここにおいて、前記重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、前記重複検査命令を実行することは、
前記入力ページサイズ指標によって表される入力ページサイズと変換索引バッファ（ＴＬＢ）のエントリのエントリページサイズ指標によって表されるエントリページサイズとのうちの大きい方を決定することと、
前記入力ページサイズと前記エントリページサイズとのうちの前記決定された大きい方を第１の選択されたページサイズとして選択することと、
前記入力ページがエントリページに重複するかを決定するために、前記第１の選択されたページサイズに基づいて、前記入力仮想アドレスと前記エントリのエントリ仮想アドレスとのマスクされた比較を実行することと、
前記マスクされた比較を実行した後、前記ＴＬＢが未調査のエントリを含む決定に基づいて、前記ＴＬＢによって、第２のマスクされた比較を選択的に実行することと、
前記入力ページが前記エントリページに重複するかの前記決定に基づいて、および前記ＴＬＢが前記未調査のエントリを含まない前記決定に基づいて、実行結果を出力することと
を含み、
前記実行結果に基づいて、前記ＴＬＢを選択的に更新することと、ここにおいて、前記ＴＬＢを選択的に更新することは、前記実行結果が重複を示さないことに応答して、前記入力ページサイズ指標と前記入力仮想アドレスとを前記ＴＬＢの第２のエントリに書き込むことを含む、
を備える、方法。
【請求項１２】
前記実行結果に基づいて、前記ＴＬＢを選択的に更新することをさらに備え、前記ＴＬＢを選択的に更新することは、前記実行結果が重複を示すことに応答して前記ＴＬＢを維持することを含み、前記実行結果は、ブール出力を備える、請求項１１に記載の方法。
【請求項１３】
前記プロセッサは、前記重複検査命令を実行するために専用の重複検査ロジックを含み、前記重複検査命令を実行することは、前記実行結果を前記プロセッサのレジスタに記憶することをさらに備える、請求項１１に記載の方法。
【請求項１４】
条件付き変換索引バッファ書き込み命令を実行する方法であって、前記方法は、
ＴＬＢを含むプロセッサにおいて条件付き変換索引バッファ（ＴＬＢ）書き込み命令を実行することを備え、ここにおいて、前記ＴＬＢは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する第１のエントリを含み、前記条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、
前記条件付きＴＬＢ書き込み命令を実行することは、
前記入力ページサイズ指標によって表される入力ページサイズと前記エントリページサイズ指標によって表されるエントリページサイズとのうちの大きい方を決定することと、
前記入力ページサイズと前記エントリページサイズとのうちの前記決定された大きい方を第１の選択されたページサイズとして選択することと、
前記入力ページが前記エントリページに重複するかを決定するために、前記第１の選択されたページサイズに基づいて、前記入力仮想アドレスと前記エントリ仮想アドレスとのマスクされた比較を実行することと、
前記マスクされた比較を実行した後、前記ＴＬＢが未調査のエントリを含む決定に基づいて、前記ＴＬＢによって、第２のマスクされた比較を選択的に実行することと、
前記入力ページが前記エントリページに重複しないと決定することと、前記ＴＬＢが前記未調査のエントリを含まないと決定することとに応答して、前記入力ページサイズ指標と前記入力仮想アドレスとを前記ＴＬＢの第２のエントリに書き込むことと、
を備える、方法。
【請求項１５】
前記条件付きＴＬＢ書き込み命令を実行することが、前記入力ページが前記エントリページに重複すると決定することに応答して、書き込みエラーを示す実行結果を出力することをさらに備え、前記実行結果が、前記入力ページに重複する１つまたは複数のエントリページに対応する、前記ＴＬＢのエントリの数を識別し、前記入力ページに重複する特定のエントリページに対応する、前記ＴＬＢの特定のエントリ、またはこれらの組み合わせを識別する、請求項１４に記載の方法。
【請求項１６】
重複検査命令を備え、
ここにおいて、前記重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、
前記重複検査命令は、変換索引バッファ（ＴＬＢ）を含むプロセッサによって、
前記入力ページサイズ指標によって表される入力ページサイズと前記ＴＬＢのエントリページのエントリページサイズ指標によって表されるエントリページサイズとのうちの大きい方を決定し、
前記入力ページサイズと前記エントリページサイズとのうちの前記決定された大きい方を選択されたページサイズとして選択し、
前記入力ページが前記エントリページに重複するかを決定するために、前記選択されたページサイズに基づいて、前記入力仮想アドレスと前記エントリのエントリ仮想アドレスとのマスクされた比較を実行し、
前記マスクされた比較が実行された後、前記ＴＬＢが未調査のエントリを含む決定に基づいて、前記ＴＬＢによって、第２のマスクされた比較を選択的に実行し、
前記マスクされた比較に部分的に基づいて、実行結果を出力する
ように実行可能である、非一時的なプロセッサ読取可能な媒体。
【請求項１７】
前記実行結果が、前記入力ページに重複する少なくとも１つのエントリページに対応する、前記ＴＬＢの少なくとも１つのエントリを識別する、請求項１６に記載の非一時的なプロセッサ読取可能な媒体。
【請求項１８】
条件付き変換索引バッファ（ＴＬＢ）書き込み命令を備え、
ここにおいて、前記条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、
前記条件付きＴＬＢ書き込み命令は、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する第１のエントリを含むＴＬＢを含むプロセッサによって、
前記入力ページサイズ指標によって表される入力ページサイズと前記エントリページサイズ指標によって表されるエントリページサイズとのうちの大きい方を決定し、
前記入力ページサイズと前記エントリページサイズとのうちの前記決定された大きい方を選択されたページサイズとして選択し、
前記入力ページが前記エントリページに重複するかを決定するために、前記選択されたページサイズに基づいて、前記入力仮想アドレスと前記エントリ仮想アドレスとのマスクされた比較を実行し、
前記マスクされた比較が実行された後、前記ＴＬＢが未調査のエントリを含む決定に基づいて、前記ＴＬＢによって、第２のマスクされた比較を選択的に実行し、
前記入力ページが前記エントリページに重複しないと決定することと、前記ＴＬＢが前記未調査のエントリを含まないと決定することとに応答して、前記入力ページサイズ指標と前記入力仮想アドレスとを前記ＴＬＢの第２のエントリに書き込む
ように実行可能である、非一時的なプロセッサ読取可能な媒体。
【請求項１９】
前記条件付きＴＬＢ書き込み命令は、前記プロセッサによって、前記入力ページが前記エントリページに重複すると決定することに応答して、前記ＴＬＢ内の前記エントリページを維持するようにさらに実行可能である、請求項１８に記載の非一時的なプロセッサ読取可能な媒体。
【請求項２０】
命令を変換索引バッファ（ＴＬＢ）において受け取るための手段と、前記命令は、入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを含み、
前記ＴＬＢのエントリページのエントリページサイズ指標と前記入力ページサイズ指標とのうちの大きい方を決定するための手段、
前記入力ページサイズ指標と前記エントリページサイズ指標とのうちの前記決定された大きい方を選択されたページサイズ指標として選択するための手段と、
前記選択されたページサイズ指標に基づいて、前記入力ページが前記エントリぺージに重複するかを決定するために、前記入力仮想アドレスと前記エントリページに対応するエントリ仮想アドレスとの第１のマスクされた比較を実行し、前記第１のマスクされた比較が実行された後、前記ＴＬＢが未調査のエントリを含む決定に基づいて、前記ＴＬＢによって、第２のマスクされた比較を選択的に実行するための手段と
を備える、装置。
【請求項２１】
前記命令は、重複検査命令または条件付き変換索引バッファ（ＴＬＢ）書き込み命令である、請求項２０に記載の装置。
【発明の詳細な説明】
【優先権の主張】
【０００１】
[0001]本願は、２０１３年１月１５日に出願され、「ＯＶＥＲＬＡＰ  ＣＨＥＣＫＩＮＧ  ＦＯＲ  Ａ  ＴＲＡＮＳＬＡＴＩＯＮ  ＬＯＯＫＡＳＩＤＥ  ＢＵＦＦＥＲ  （ＴＬＢ）」と題された米国非仮特許出願第１３／７４１，９８１号の優先権を主張し、この出願の内容は、その全体が参照により組み込まれる。
【技術分野】
【０００２】
[0002]本開示は、一般に、変換索引バッファ（ＴＬＢ：translation lookaside buffer）の管理に関する。
【背景技術】
【０００３】
[0003]技術における進歩は、より小さく、より強力なコンピューティングデバイスをもたらした。例えば、小型で、軽量で、ユーザによって簡単に持ち運ばれる携帯用ワイヤレス電話機、携帯情報端末（ＰＤＡ）、タブレットコンピュータ、およびページングデバイスなどのワイヤレスコンピューティングデバイスを含む、様々な携帯用パーソナルコンピューティングデバイスが現在存在する。多くのそのようなコンピューティングデバイスは、そこに組み込まれる他のデバイスを含む。例えば、ワイヤレス電話機は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤも含み得る。また、そのようなコンピューティングデバイスは、インターネットにアクセスするために使用され得るウェブブラウザアプリケーション、およびスチルカメラまたはビデオカメラを利用し、マルチメディア再生機能性を提供するマルチメディアアプリケーションなどのソフトウェアアプリケーションを含む実行可能な命令を処理することができる。そのため、これらのデバイスは、典型的には、デスクトップコンピュータなどのより大きなデバイスによって実行される機能を実行することができる。
【０００４】
[0004]ワイヤレス電話機および他のコンピューティングデバイスにおけるプロセッサなどのプロセッサは、１つまたは複数の変換索引バッファ（ＴＬＢ）をしばしば含む。ＴＬＢは、仮想アドレスと物理アドレスとの間のキャッシュ変換をするために使用され得る。特定の仮想アドレスがＴＬＢ内で見つからない場合、その特定の仮想アドレスのために新たなエントリがＴＬＢ内に作成され、この新たなエントリは、対応する物理アドレス変換を含む。このエントリを作成することは、ハードウェアにおいて、またはソフトウェアによって行われ得る。あるいは、ＴＬＢの既存のエントリは、特定の仮想アドレスについての変換情報を用いて上書きされ得る。特定の仮想アドレスが、見つかる場合、すなわち、ＴＬＢのエントリに一致する場合、ＴＬＢは、一致するエントリに記憶される物理アドレスを返す。
【０００５】
[0005]データ整合性を維持するために、ＴＬＢの複数のエントリが１つの入力仮想アドレスに一致する状況を防止することは有益であり得る。従来、この役目は、ＴＬＢを使用するオペレーティングシステムにあった。しかしながら、プログラミング上の誤りおよび他の事情が原因で、この役目を果たすことをオペレーティングシステムに依存することは困難となり得る。また、システムには、複数のオペレーティングシステム（例えば、ハイパーバイザと通信するゲストオペレーティングシステム）を同時に実行し得るものもあり、これは、ＴＬＢ管理にさらなる複雑さを導入し得る。ハイパーバイザは、（ソフトウェアによりプログラムされた）ＴＬＢをプログラムする責任を負い得、ゲストオペレーティングシステムは、変換を定義するが、重複しない変換を作成することを任せることはできない。
【発明の概要】
【０００６】
[0006]ＴＬＢにおけるプロセッサレベルの（例えば、ハードウェアベースの）重複検査が開示される。ＴＬＢは、ソフトウェアにより管理されても、またはハードウェアにより管理されてもよい。可変ページサイズの使用は、重複するページを可能にし得るため、重複検査は、可変ページサイズをサポートするシステムにおいて使用され得る。開示される技法は、ハードウェアにおいて実装され得るため、開示される技法は、ソフトウェアベースの重複検査よりも高速となり得る。
【０００７】
[0007]１つまたは複数の命令が、開示されるハードウェアベースの重複検査技法を利用するために実装され得る。例えば、重複検査命令が実装され得る。プロセッサによって実行される場合、重複検査命令は、ＴＬＢ内のエントリに、特定の入力ページに重複するページに対応するものがあるかを示す出力を生成する。したがって、重複検査命令は、ある入力ページのためにＴＬＢ内に新たなエントリを生成することがＴＬＢ内の重複エントリをもたらすかを決定するために使用され得る。いくつかの実装において、重複検査命令の出力は、ＴＬＢ内のいくつのエントリが入力ページに重複するかを示し得、または特定の重複エントリを示し得る。
【０００８】
[0008]別の例として、条件付きのＴＬＢ書き込み命令が実装され得る。条件付きＴＬＢ書き込み命令は、作成されるエントリがＴＬＢ内のいかなる既存エントリとも重複しない場合、入力ページのためにＴＬＢ内にエントリを作成し得る。エントリを作成することが重複をもたらす場合、条件付きＴＬＢ書き込み命令は、重複検査命令の出力に類似する出力を生成し得る。
【０００９】
[0009]特定の実施形態において、方法は、入力仮想アドレスと入力ページサイズ指標とをＴＬＢにおいて受け取ることを備える。入力仮想アドレスおよび入力ページサイズ指標は、入力ページに対応する。本方法は、入力ページサイズ指標とＴＬＢのエントリのエントリページサイズとの比較に基づいて算出ページサイズを決定することも備え、ＴＬＢのエントリは、エントリページに対応する。本方法は、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリ仮想アドレスとのマスクされた比較を実行することをさらに備える。
【００１０】
[0010]別の特定の実施形態において、装置は、ＴＬＢを備える。ＴＬＢは、エントリ仮想アドレスとエントリページに対応するエントリページサイズ指標とを含む、少なくとも１つのエントリを備える。本装置は、入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを受け取るように構成された入力ロジックも備える。本装置は、エントリページサイズ指標と入力ページサイズ指標とに少なくとも一部は基づいて、入力ページがエントリページに重複するかを決定するように構成された重複検査ロジックをさらに備える。
【００１１】
[0011]別の特定の実施形態において、方法は、プロセッサにおいて重複検査命令を実行することを備える。重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含む。重複検査命令を実行することは、ＴＬＢのエントリのエントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定することを含む。重複検査命令を実行することは、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリのエントリ仮想アドレスとのマスクされた比較を実行することも含む。重複検査命令を実行することは、入力ページがエントリページに重複するかの決定に基づいて、実行結果を出力することをさらに含む。
【００１２】
[0012]別の特定の実施形態において、方法は、ＴＬＢを含むプロセッサにおいて、条件付きＴＬＢ書き込み命令を実行することを備える。ＴＬＢは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する第１のエントリを含む。条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含む。条件付きＴＬＢ書き込み命令を実行することは、エントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定することを含む。条件付きＴＬＢ書き込み命令を実行することは、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリ仮想アドレスとのマスクされた比較を実行することも含む。条件付きＴＬＢ書き込み命令を実行することは、入力ページがエントリページに重複しないと決定することに応答して、入力ページサイズ指標と入力仮想アドレスとをＴＬＢの第２のエントリに書き込むことをさらに含む。
【００１３】
[0013]別の特定の実施形態において、装置は、少なくとも１つのエントリを記憶するための手段を備える。少なくとも１つのエントリは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを含む。本装置は、入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを受け取るための手段も含む。本装置は、エントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定するための手段をさらに含む。本装置は、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリ仮想アドレスとのマスクされた比較を実行するための手段を含む。
【００１４】
[0014]別の特定の実施形態において、非一時的なプロセッサ読取可能な媒体は、重複検査命令を含む。重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含む。重複検査命令は、ＴＬＢを含むプロセッサによって、ＴＬＢのエントリのエントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定するように実行可能である。重複検査命令は、プロセッサによって、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリのエントリ仮想アドレスとのマスクされた比較を実行するようにも実行可能である。重複検査命令は、プロセッサによって、入力ページがエントリページに重複するかの決定に基づいて、実行結果を出力するようにさらに実行可能である。
【００１５】
[0015]別の特定の実施形態において、非一時的なプロセッサ読取可能な媒体は、条件付きＴＬＢ書き込み命令を含む。条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含む。条件付きＴＬＢ書き込み命令は、ＴＬＢを含むプロセッサによって実行可能であり、ＴＬＢは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する第１のエントリを含む。条件付きＴＬＢ書き込み命令は、プロセッサによって、エントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定するように実行可能である。条件付きＴＬＢ書き込み命令は、プロセッサによって、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリ仮想アドレスとのマスクされた比較を実行するようにも実行可能である。条件付きＴＬＢ書き込み命令は、プロセッサによって、入力ページがエントリページに重複しないと決定することに応答して、入力ページサイズ指標と入力仮想アドレスとをＴＬＢの第２のエントリに書き込むようにさらに実行可能である。
【００１６】
[0016]開示される実施形態のうちの少なくとも１つによって提供される１つの特定の利点は、ＴＬＢにおいてプロセッサレベルの重複検査を実行するための能力であり、この能力は、潜在的に誤りのある第三者の方法（例えば、オペレーティングシステムＴＬＢ検査）に依存することなく、コンピューティングシステムまたは電子デバイスにおける信頼性とデータ整合性とを向上させ得る。本開示の他の態様、利点、および特徴は、以下のセクションを含む出願全体のレビュー後に、より明確になるであろう：図面の簡単な説明、詳細な説明、および特許請求の範囲。
【図面の簡単な説明】
【００１７】
【図１】[0017]ＴＬＢについての重複検査を実行するように動作可能であるシステムの特定の実施形態の図。
【図２】[0018]ＴＬＢについての重複検査を実行するように動作可能であり、重複検査命令と条件付きＴＬＢ書き込み命令とを実行するように動作可能であるプロセッサを含むというシステムの特定の実施形態の図。
【図３】[0019]ＴＬＢについての重複検査を実行する方法の特定の実施形態のフローチャート。
【図４】[0020]重複検査命令を実行する方法の特定の実施形態のフローチャート。
【図５】[0021]条件付きＴＬＢ書き込み命令を実行する方法の特定の実施形態のフローチャート。
【図６】[0022]ＴＬＢについての重複検査を実行するように動作可能な構成要素を含むワイヤレスデバイスのブロック図。
【発明を実施するための形態】
【００１８】
[0023]図１は、変換索引バッファ（ＴＬＢ）についての重複検査を実行するように動作可能であるシステム１００の特定の実施形態の図である。システム１００は、入力ロジック１１０と、重複検査ロジック１２０と、書き込みロジック１５０と、重複指標レジスタ１４０とに結合されるＴＬＢ１３０を含む。特定の実施形態において、ＴＬＢ１３０は、ソフトウェアにより管理されるＴＬＢである。あるいは、ＴＬＢ１３０は、ハードウェアにより管理されるＴＬＢであってもよい。例示的な実施形態において、図１のシステム１００および／またはその構成要素は、中央処理装置（ＣＰＵ）またはデジタル信号プロセッサ（ＤＳＰ）などのプロセッサに含まれ、または結合され得る。例えば、プロセッサは、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニット、コンピューティングデバイス、またはこれらの任意の組み合わせなどの電子デバイスに一体化され得る。
【００１９】
[0024]特定の実施形態において、入力ロジック１１０、重複検査ロジック１２０、および書き込みロジック１５０のうちの１つまたは複数は、ハードウェアを使用して（例えば、ＤＳＰ、ＣＰＵ、コントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、別のハードウェアデバイス、またはこれらの任意の組み合わせによって）実装される。代替的に、または付加的に、入力ロジック１１０、重複検査ロジック１２０、および書き込みロジック１５０のうちの１つまたは複数は、図６を参照しつつさらに記載されるように、ソフトウェア（例えば、プロセッサによって実行可能な命令）を使用して実装され得る。
【００２０】
[0025]ＴＬＢ１３０は、１つまたは複数のエントリを含み得る。図１において、ＴＬＢ１３０は、第１のエントリ１３１と、第２のエントリ１３２と、第３のエントリ１３３と、第４のエントリ１３４とを含み、エントリ１３１〜１３４の各々は、ＴＬＢ１３０の行に対応する。各エントリ１３１〜１３４は、仮想アドレス（「Ｖｉｒｔ．Ａｄｄｒ．」）とページサイズ指標（「Ｐａｇｅ  Ｓｉｚｅ  Ｉｎｄ．」）とを含み得る。例示される例において、ページサイズ指標は、実際のページサイズ（例えば、４キロバイト（Ｋ）、６４Ｋ、１メガバイト（ＭＢ）、１６ＭＢ等）を使用して表される。代替的な実施形態において、ページサイズ指標は、本明細書においてさらに記載されるように、ビットマスク（「マスク」とも呼ばれる）を使用して表され得る。
【００２１】
[0026]ＴＬＢ１３０のエントリ１３１〜１３４は、仮想アドレスにマッピングされる物理アドレス（「Ｐｈｙｓ．Ａｄｄｒ．」）も含み得る。エントリ１３１〜１３４は、アプリケーション空間識別子（「ＡＳＩＤ（application space identifier）」）と、キャッシュ可能指標（例えば、エントリがキャッシュされ得るかを示す）と、許可指標（「Ｐｅｒｍ．」）（例えば、読み出し許可、書き込み許可、および／またはユーザ許可）と、グローバル指標（「Ｇｌｏｂ．」）とをさらに含み得る。ＴＬＢ１３０の各エントリは、インデックスを有し得る。例えば、第１のエントリ１３１は、インデックス０を有し、第２のエントリ１３２は、インデックス１を有し、第３のエントリ１３３は、インデックス２を有し、第４のエントリ１３４は、インデックス３を有する。
【００２２】
[0027]図１の実施形態においては、３２ビットのアドレス空間および４Ｋの最小ページサイズが例示の目的のために使用されることが留意されるべきである。したがって、（１６進数の（ｈｅｘ）５桁に対応する）２０個の最上位ビットのみが、ＴＬＢ１３０の仮想アドレス列および物理アドレス列において表される。アドレスの（ｈｅｘ３桁に対応する）１２個の最下位ビットは、使用されないかもしれない。なぜならば、最小ページサイズは４Ｋであり、そのため、１２個の最下位ビットは（例えば、空間を節約するために）ＴＬＢ１３０に含まれないことがあるためである。したがって、ＴＬＢ１３０における仮想アドレスは、仮想ページの特定のアドレスよりもむしろ、仮想ページ番号を表し得る。代替的な実施形態においては、異なるサイズのアドレス空間および異なる最小ページサイズが使用され得る。
【００２３】
[0028]図１に示されるように、第１のエントリ１３１は、仮想アドレス０ｘ１００００において開始する４Ｋのページに対応する。したがって、３２ビットのアドレス空間の観点からは、４Ｋのページは、仮想アドレス０ｘ１０００００００から０ｘ１００００ＦＦＦまでを含む。同様に、インデックス１における第２のエントリ１３２は、仮想アドレス０ｘ２０００Ｘにおいて開始する６４Ｋのページに対応する。大文字の「Ｘ」は、大文字の「Ｘ」によって表されるｈｅｘの桁の任意の値が６４Ｋのページ内に存在することを示すために使用される。つまり、６４Ｋのページは、３２ビットの仮想アドレス範囲０ｘ２０００００００から０ｘ２０００ＦＦＦＦに及ぶ。インデックス２における第３のエントリ１３３は、仮想アドレス０ｘ３００ＸＸにおいて開始する１ＭＢのページに対応し、インデックス３における第４のエントリ１３４は、仮想アドレス０ｘ４０ＸＸＸにおいて開始する１６ＭＢのページに対応する。
【００２４】
[0029]動作期間中、ＴＬＢ１３０は、ＴＬＢルックアップを受け取り得る。典型的には、ＴＬＢルックアップは、入力仮想アドレス１０４を特定し得、ＴＬＢは、（入力仮想アドレスがＴＬＢ内で見つかった場合には）以前に記憶された対応する物理アドレス、または新たに作成されたマッピングについてＴＬＢに追加された対応する物理アドレスのいずれかをＴＬＢから返し得る。例示のために、仮想アドレス０ｘ１０００Ｘによって表される６４Ｋの入力ページを特定するＴＬＢルックアップを考える。本明細書において、「入力ページ」という用語は、ＴＬＢルックアップまたはＴＬＢ１３０上での他の読み出し／書き込み動作によって表されるメモリのページを指し得る。６４Ｋの入力ページは、０ｘ１００００から０ｘ１０００Ｆまでの範囲に及び得る。したがって、６４Ｋの入力ページは、ＴＬＢ１３０の第１のエントリ１３１によって表される４Ｋのエントリページと重複し得る。本明細書において、「エントリページ」という用語は、ＴＬＢ１３０内のエントリによって表されるメモリのページを指し得る。０ｘ１００００は、０ｘ１０００Ｘによって表される任意の値に必ずしも等しいとは限らないため、重複が存在しても、入力仮想アドレス１０４は受け取るが入力ページサイズ指標１０２を受け取らない従来のＴＬＢ重複検査方法は、重複を検出しないことがあり得ることが留意されるべきである。したがって、重複するエントリが６４Ｋの入力ページについてＴＬＢ１３０内で作成されるかもしれず、これは、望ましくないことがあり、未定義の動作および／またはデータ整合性の問題につながり得る（例えば、後続のＴＬＢルックアップは、第１のエントリ１３１と新たに作成されるエントリの両方に一致し得るため）。
【００２５】
[0030]記載される重複検査技法によれば、ＴＬＢ１３０は、入力ロジック１１０と重複検査ロジック１２０とを含み、または入力ロジック１１０と重複検査ロジック１２０とに結合され得る。ＴＬＢルックアップの期間中、入力ロジック１１０は、入力仮想アドレス１０４に加えて、入力ページサイズ指標１０２を受け取り得る。例えば、入力仮想アドレス１０４は、０ｘ１０００Ｘであり、入力ページサイズ指標１０２は、６４Ｋであり得る。代替の実施形態において、入力ページサイズ指標１０２は、本明細書においてさらに記載されるように、マスクを使用して表され得る。
【００２６】
[0031]重複検査ロジック１２０は、入力ページサイズ指標１０２と入力仮想アドレス１０４とを入力ロジック１１０から受け取り、エントリ１３１〜１３４のうちのいずれかが、入力ページに重複するエントリページに対応するかを決定するために、ＴＬＢ１３０のエントリ１３１〜１３４を調査し得る。例えば、重複検査ロジック１２０は、ページサイズ算出ロジック１２２とマスクされた比較ロジック１２４とを含み得る。エントリ１３１〜１３４の各々について、ページサイズ算出ロジック１２２は、算出ページサイズ（例えば、入力ページサイズおよび対応するエントリページサイズのうちの大きい方）を決定し得る。例えば、第１のエントリ１３１との重複を検査する場合、ロジック１２２は、６４Ｋの算出ページサイズを決定し得、これは、６４Ｋの入力ページサイズおよび４Ｋのエントリページサイズのうちの大きい方である。同様に、残りのエントリ１３２〜１３４の重複検査についての算出ページサイズは、それぞれ６４Ｋ、１ＭＢ、および１６ＭＢであり得る。
【００２７】
[0032]マスクされた比較ロジック１２４は、算出ページサイズを受け取り、重複を検査するために、算出ページサイズに基づいて、入力仮想アドレス１０４と第１のエントリ１３１の仮想アドレスとのマスクされた比較を実行し得る。例示のために、第１のエントリ１３１については、算出サイズが６４Ｋであるため、マスクされた比較ロジック１２４は、入力仮想アドレス０ｘ１０００Ｘおよびエントリ仮想アドレス０ｘ１００００のｈｅｘの最後の（例えば、最下位）１桁をマスクし得る。２つの仮想アドレスは、ｈｅｘの最後の１桁がマスクされる場合に等しくなるため（すなわち、０ｘ１０００＝０ｘ１０００）、重複検査ロジック１２０は、６４Ｋの入力ページが第１のエントリ１３１において表される４Ｋのエントリページに重複すると結論を出し得る。重複検査ロジック１２０は、ＴＬＢ１３０の残りのエントリ１３２〜１３４を同様に調査し得る。あるいは、重複検査ロジック１２０は、重複が検出され次第、ＴＬＢエントリの調査を停止し得る。
【００２８】
[0033]重複検査ロジック１２０は、重複検査の結果を示す重複指標１２６を生成し得る。例えば、重複指標１２６は、少なくとも１つの重複が検出されたか否かを示すブール（例えば、真／偽）出力であり得る。別の例として、重複指標１２６は、重複をもたらした、ＴＬＢ１３０内のエントリの数を示し得る。例示のために、重複指標１２６は、ＴＬＢ１３０のエントリが重複をもたらすごとにインクリメントされるカウンタであり得る。また別の例として、重複指標１２６は、特定の重複エントリのインデックスを示し得る。例示のために、ＴＬＢ１３０のエントリが重複をもたらす場合、重複指標１２６は、そのエントリのインデックスに設定され得る。特定の実施形態において、重複指標１２６は、重複指標レジスタ１４０に記憶され、またはプロセッサアーキテクチャの予備ビットに記憶され得る。
【００２９】
[0034]ＴＬＢ１３０のエントリ１３１〜１３４のいずれも重複をもたらさない場合、入力ページのために新たなエントリがＴＬＢ１３０内に作成され得る。例えば、書き込みロジック１５０は、入力ページサイズ指標１０２と入力仮想アドレス１０４とを入力ロジック１１０から受け取り、重複が検出されなかったことを示す重複指標１２６を重複検査ロジック１２０から受け取り得る。応答して、書き込みロジック１５０は、入力ページのために新たなエントリをＴＬＢ１３０内に作成し得る。あるいは、ＴＬＢ１３０が「いっぱい（ｆｕｌｌ）」である場合、書き込みロジック１５０は、ＴＬＢ１３０の既存の（例えば、最も古い、最も長く使用されていない等の）エントリを、入力ページについての仮想対物理アドレスマッピングを用いて上書きし得る。重複が検出される場合、書き込みロジック１５０は、ＴＬＢ１３０を変更することを控え得る。
【００３０】
[0035]図１の前述の記載は、入力ページサイズ指標１０２とＴＬＢ１３０内に記憶されるページサイズ指標とについてページサイズ（例えば、４Ｋ、６４Ｋ等）を使用するが、代替の実施形態は、ページサイズをビットマスクとして表すことを含み得ることが留意されるべきである。そのような実施形態において、ページサイズ算出ロジック１２２は、マスクの論理積を求めることによって、２つのページサイズのうちの大きい方を決定し得る。結果として得られる算出マスクは、重複を検査する際に、マスクされた比較ロジック１２４によって使用され得る。例示のために、上記の例において、ページサイズの代わりにマスクが使用される場合、入力仮想アドレス１０４は、０ｘ１０００Ｘのままであり得るが、入力ページサイズ指標１０２は、６４Ｋの代わりにＦＦＦＦ０となり得る。第１のエントリ１３１についてのページサイズ指標は、４Ｋの代わりにＦＦＦＦＦとなり得る。ページサイズ算出ロジック１２２は、算出マスクＦＦＦＦ０（すなわち、ＦＦＦＦＦ  ＡＮＤ  ＦＦＦＦ０＝ＦＦＦＦ０）を生成するために、２つのマスクに対して論理積演算を実行し得るマスクされた比較ロジック１２４は、入力仮想アドレス１０４と第１のエントリ１３１の仮想アドレスとを比較する場合に、算出マスクＦＦＦＦ０を使用し得る。算出マスクＦＦＦＦ０が使用される場合、両方の仮想アドレスのｈｅｘの最後の（例えば、最下位）１桁は、比較に先立ってマスクされ得、重複の同じ肯定的な決定をもたらす（すなわち、０ｘ１０００＝０ｘ１０００であるため）。
【００３１】
[0036]特定の実施形態において、ＴＬＢ１３０は、各エントリ１３１〜１３４においてグローバル指標項目とＡＳＩＤ項目とを含み得る。例えば、図１のシステム１００がハイパーバイザと共に使用される場合、異なるＡＳＩＤは、異なるゲストオペレーティングシステムに対応し、仮想アドレスの拡張子として扱われ得る。例示のために、ＡＳＩＤがサポートされる場合、第１のエントリ１３１の仮想アドレスは、０ｘ１０１００００となり得、上記の例における６４Ｋの入力ページについての入力仮想アドレスは、０ｘ１０１０００Ｘとなり得る。ＡＳＩＤがサポートされる場合、入力ロジック１１０は、入力ページサイズ指標１０２と入力仮想アドレス１０４とに加えて、入力ＡＳＩＤ１０６を受け取り得る。ＴＬＢ１３０の特定のエントリのグローバル指標が第１の値（例えば、１）を有する場合、重複検査ロジック１２０は、重複検査期間中に、入力ＡＳＩＤ１０６とエントリＡＳＩＤとを比較し得る。グローバル指標が第２の値（例えば、０）を有する場合、重複検査ロジック１２０は、入力ページがエントリページに重複するかを決定する際に、ＡＳＩＤを無視し（例えば、マスクし、および／または比較することを控え）得る。
【００３２】
[0037]したがって、図１のシステム１００は、ＴＬＢ１３０における重複検査を可能にし得、これは、コンピューティングシステムまたは電子デバイスにおける信頼性とデータ整合性とを向上させ得る。さらに、図１のシステム１００は、そのような重複検査を（例えば、ＴＬＢ１３０内の、またはＴＬＢ１３０に結合されるロジックモジュールを使用して）プロセッサレベルで可能にし得るため、図１のシステム１００は、潜在的に誤りのある第三者の方法に依存することなく、ＴＬＢ重複検査を可能にし得る。したがって、図１のシステム１００は、重複するＴＬＢエントリを作成しようと試みるオペレーティングシステムまたはアプリケーションからの保護を提供し得る。
【００３３】
[0038]図１のシステム１００は、ＴＬＢ内に既に存在するエントリの代わりに、プロセッサ内（例えば、ＴＬＢのミスキュー内またはＴＬＢの書き込みキュー内）で「飛行中（in flight）」であるデータと命令とを調査する重複検査方法に好適であり得る。例えば、飛行中であるデータ／命令を調査することは、重複エラーが修正され次第、再試行動作をもたらし得る。また、ＴＬＢのミス／書き込みキューを検査することは、マルチスレッドシステムにおいて計算コストが高くなり得る。
【００３４】
[0039]特定の実施形態において、１つまたは複数のプロセッサ実行可能な命令は、図１を参照しつつ記載された重複検査動作をトリガし、および／または使用し得る。例えば、重複検査命令と条件付きＴＬＢ書き込み命令とが実行され得る。重複検査命令は、入力仮想アドレスと入力ページサイズ指標とを含み得る。重複検査命令は、（例えば、入力ページに重複するエントリがあるかを示す）ブール出力を生成し、入力ページに重複する特定のエントリを識別し、いくつのエントリが入力ページに重複するかを識別等し得る。いくつかの実施形態において、出力は、プロセッサのレジスタ（例えば、重複指標レジスタ１４０）に記憶され得る。
【００３５】
[0040]条件付きＴＬＢ書き込み命令も、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み得る。入力ページがエントリページに一致する場合、条件付きＴＬＢ書き込み命令は、重複検査命令の出力と同様の出力を生成し得る。重複が検出されない場合、条件付きＴＬＢ書き込み命令は、入力ページのためにＴＬＢ内に新たなエントリを書き込み、または入力ページを反映するためにＴＬＢ内の既存のエントリを変更し得る。
【００３６】
[0041]特定の実施形態において、重複検査命令および／または条件付きＴＬＢ書き込み命令は、単一のサンプリング周期において実行され得る。例えば、命令は、ＴＬＢの内容参照メモリ（ＣＡＭ：content-addressable memory）部分に対するアトミックイベントを表し得る。
【００３７】
[0042]図２は、重複検査命令と条件付きＴＬＢ書き込み命令とを実行するように動作可能であるシステム２００の特定の実施形態の図である。システム２００は、バスインターフェース（Ｉ／Ｆ）２０８を介して命令キャッシュ２１０に結合され得るメモリ２０２を含む。特定の実施形態において、システム２００の全部または一部は、プロセッサに一体化され得る。あるいは、メモリ２０２は、プロセッサの外部にあり得る。
【００３８】
[0043]メモリ２０２は、バスインターフェース２０８を介して命令キャッシュ２１０へ命令を送り得る。命令キャッシュ２１０は、バス２１１を介してシーケンサ２１４に結合され得る。シーケンサ２１４は、汎用割り込み２１６を受け取り得、汎用割り込み２１６は、割り込みレジスタ（図示せず）から取得され得る。特定の実施形態において、命令キャッシュ２１０は、複数の現行命令レジスタ（図示せず）を介してシーケンサ２１４に結合され得、複数の現行命令レジスタは、バス２１１に結合され、プロセッサの特定のスレッド（例えば、ハードウェアスレッド）に関連付けられ得る。特定の実施形態において、プロセッサは、複数のハードウェアスレッドを含む、インターリーブされたマルチスレッドプロセッサであり得る。
【００３９】
[0044]データキャッシュも、バスインターフェース２０８を介してメモリ２０２に結合され得る。特定の実施形態において、システム２００は、重複検査を含むＴＬＢ２７０を含む。例えば、ＴＬＢ２７０は、ＴＬＢエントリ２７２（例えば、図１のＴＬＢエントリ１３１〜１３４）と、入力ロジック２７４（例えば、図１の入力ロジック１１０）と、重複検査ロジック２７６（例えば、図１の重複検査ロジック１２０）と、書き込みロジック２７８（例えば、図１の書き込みロジック１５０）とを含み得る。
【００４０】
[0045]特定の実施形態において、バス２１１は、百二十八ビット（１２８ビット）バスであり得、シーケンサ２１４は、各々が１つまたは複数の命令を含む命令パケットを介してメモリ２０２から命令を取得するように構成され得る。バス２１１は、第１の命令実行ユニット（Ｘユニット）２１８と、第２の命令実行ユニット２２０と、第３の命令実行ユニット２２２と、第４の命令実行ユニット２２４とに結合され得る。４つよりも少ないまたは４つよりも多い命令実行ユニットが存在し得ることが留意されるべきである。各命令実行ユニット２１８〜２２４は、ロード／記憶ロジックおよび／または算術論理演算ユニット（ＡＬＵ：arithmetic-logic unit）などの演算ロジックを含み得る。各命令実行ユニット２１８〜２２４は、バス２２８を介して汎用レジスタファイル２２６に結合され得る。汎用レジスタファイル２２６は、図示されるように、バス２３０を介して、シーケンサ２１４と、ＴＬＢ２７０と、メモリ２０２とにも結合され得る。
【００４１】
[0046]システム２００は、割り込み（例えば、汎用割り込み２１６）を受け入れるかを決定し、命令の実行を制御するために、シーケンサ２１４内の制御ロジックによってアクセスされ得るビットを記憶するための監視制御レジスタ２３２とグローバル制御レジスタ２３４とも含み得る。
【００４２】
[0047]動作期間中、実行可能な命令は、メモリ２０２からフェッチされ、命令キャッシュ２１０に記憶され得る。例えば、命令は、重複検査命令２６０および／または条件付きＴＬＢ書き込み命令２６２を含み得る。動作期間中、命令２６０〜２６２の各々は、重複検査動作がＴＬＢ２７０において実行されるようにし得る。
【００４３】
[0048]例えば、重複検査命令２６０は、入力ページに対応する命令コード（例えば、「ＴＬＢＯＣ」）と、入力仮想アドレスと、入力ページサイズ指標とを含み得る。ＡＳＩＤがサポートされる場合、重複検査命令２６０は、入力ＡＳＩＤも含み得る。重複検査命令２６０の実行期間中、入力ロジック２７４は、入力仮想アドレスと、入力ページサイズ指標と、（もしあれば）入力ＡＳＩＤとを受け取り得る。ＴＬＢエントリ２７２のうちのいずれかが、入力ページに重複するエントリページに対応するかを決定するために、重複検査ロジック２７６は、ＴＬＢエントリ２７２を調査し得る。重複検査ロジック２７６は、重複検査の結果を示す命令実行結果を生成し得る（例えば、ブール出力、重複エントリの数、特定の重複エントリのインデックス等）。命令実行結果は、記憶デバイス（例えば、メモリ２０２または汎用レジスタファイル２２６内）に記憶され得る。条件付きＴＬＢ書き込み命令２６２と異なり、重複検査命令２６０は、ＴＬＢエントリ２７２を変更しない「読み出し専用（ｒｅａｄ−ｏｎｌｙ）」命令であり得ることが留意されるべきである。
【００４４】
[0049]条件付きＴＬＢ書き込み命令２６２は、入力ページに対応する命令コード（例えば、「ＴＬＢＣＷ」）と、入力仮想アドレスと、入力ページサイズ指標とを含み得る。ＡＳＩＤがサポートされる場合、条件付きＴＬＢ書き込み命令２６２は、入力ＡＳＩＤも含み得る。条件付きＴＬＢ書き込み命令２６２の実行期間中、入力ロジック２７４は、入力仮想アドレスと、入力ページサイズ指標と、（もしあれば）入力ＡＳＩＤとを受け取り得る。ＴＬＢエントリ２７２のうちのいずれかが、入力ページに重複するエントリページに対応するかを決定するために、重複検査ロジック２７６は、ＴＬＢエントリ２７２を調査し得る。重複検査ロジック２７６が、少なくとも１つのエントリページは入力ページに重複すると決定する場合、重複検査ロジック２７６は、ＴＬＢ書き込みエラーを示す命令実行結果を出力し得る。重複検査ロジック２７６が重複を検出しない場合、重複検査ロジック２７６は、（例えば、入力ページについてのマッピングがメモリ２０２などのメモリに作成された後に）入力ページサイズ指標と、入力仮想アドレスと、入力ＡＳＩＤ（もしあれば）とを、ＴＬＢエントリ２７２のうちの１つに書き込み得る。
【００４５】
[0050]したがって、図２のシステム２００は、ＴＬＢ重複検査をトリガする１つまたは複数の命令を含む命令セットアーキテクチャ（ＩＳＡ：instruction set architecture）を実装するために使用され得る。図２のシステム２００は、プロセッサ設計者およびアプリケーション開発者に、ハードウェアベースのＴＬＢ重複検査機能へのアクセスを提供し得る。
【００４６】
[0051]図３は、ＴＬＢについての重複検査を実行する方法３００の特定の実施形態のフローチャートである。例示的な実施形態において、方法３００は、図１のシステム１００または図２のシステム２００において実行され得る。
【００４７】
[0052]方法３００は、３０２において、入力仮想アドレスと入力ページサイズ指標とをＴＬＢにおいて受け取ることを含み得る。入力仮想アドレスおよび入力ページサイズ指標は、入力ページに対応する。例えば、図１において、入力ロジック１１０は、入力ページサイズ指標１０２と入力仮想アドレス１０４とを受け取り得る。例示のために、入力ページサイズ指標１０２は、１ＭＢであり得、入力仮想アドレス１０４は、０ｘ２００ＸＸであり得る。
【００４８】
[0053]方法３００は、３０４において、入力ページサイズ指標とエントリページに対応するＴＬＢのエントリのエントリページサイズ指標との比較に基づいて、算出ページサイズを決定することも含み得る。特定の実施形態において、入力ページサイズおよびエントリページサイズのうちの大きい方が、算出ページサイズとして選択され得る。例えば、ページサイズ算出ロジック１２２は、第１のエントリ１３１について、算出ページサイズが１ＭＢであると決定し得、これは、第１のエントリ１３１についての１ＭＢの入力ページサイズおよび４Ｋのエントリページサイズのうちの大きい方である。
【００４９】
[0054]方法３００は、３０６において、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリのエントリ仮想アドレスとのマスクされた比較を実行することをさらに含み得る。例えば、図１において、マスクされた比較ロジック１２４は、第１のエントリ１３１について、入力仮想アドレス０ｘ２００ＸＸとエントリ仮想アドレス０ｘ１００００とのマスクされた比較を実行し得る。算出ページサイズは１ＭＢであるため、１６進数の最下位（例えば、最も右側の）２桁は、比較に先立って、マスクされる。したがって、第１のエントリ１３１について、比較は、０ｘ２００と０ｘ１００との間であり得、重複検査ロジック１２０は、入力ページと第１のエントリ１３１によって表されるエントリページとの間に重複は存在しないと決定し得る。
【００５０】
[0055]方法３００は、３０８において、ＴＬＢの未調査のエントリが残っているかを決定することを含み得る。未調査のエントリが残っていない場合、方法３００は、３１０において、重複指標を出力することを含み得る。例えば、重複指標は、ブール出力、重複エントリの数、特定の重複エントリのインデックス、または何らかの他の重複指標であり得る。あるいは、重複指標は、重複が検出された場合に出力されてもよく、重複指標の不在は、重複が検出されなかったことを示してもよい。
【００５１】
[0056]ＴＬＢ内に依然として未調査のエントリが存在する場合、方法３００は、３０４に戻り得る。例えば、図１において、重複検査ロジックは、ＴＬＢ１３０の残りのエントリ１３２〜１３４を調査し得る。第２のエントリ１３２の場合において、算出ページサイズは、１ＭＢであり得、これは、１ＭＢの入力ページサイズおよび６４Ｋのエントリページサイズのうちの大きい方である。応答して、マスクされた比較ロジック１２４は、入力仮想アドレス０ｘ２００ＸＸおよびエントリ仮想アドレス０ｘ２０００Ｘの１６進数の最下位２桁をマスクし得る。結果として得られる値は一致するため（すなわち、０ｘ２００＝０ｘ２００）、重複検査ロジック２００は、重複（例えば、第２のエントリ１３２によって表されるエントリページが、入力ページを含むこと）を検出し得る。
【００５２】
[0057]特定の実施形態において、図３の方法３００は、ＤＳＰ、ＣＰＵ、コントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組み合わせによって実装され得る。一例として、図３の方法３００は、図６を参照しつつ記載されるように、命令を実行するプロセッサによって実行され得る。
【００５３】
[0058]図４は、重複検査命令を実行する方法４００の特定の実施形態のフローチャートである。例示的な実施形態において、方法４００は、図１のシステム１００または図２のシステム２００において実行され得る。
【００５４】
[0059]図４に例示される各動作は、プロセッサにおける重複検査命令の実行期間中に実行され得る。重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み得る。方法４００は、４０２、ＴＬＢのエントリのエントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定することを含み得る。例えば、図２において、重複検査命令２６０の実行期間中に、重複検査ロジック２７６は、ＴＬＢエントリ２７２のうちの１つのエントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定し得る。
【００５５】
[0060]方法４００は、４０４において、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリのエントリ仮想アドレスとのマスクされた比較を実行することをさらに含み得る。例えば、図２において、重複検査ロジック２７６は、算出ページサイズに基づいて、マスクされた比較を実行し得る。
【００５６】
[0061]方法４００は、４０６において、ＴＬＢの未調査のエントリが残っているかを決定することをさらに含み得る。特定の実施形態において、ＴＬＢのすべてのエントリは、同時に調査され得る。ＴＬＢ内に依然として未調査のエントリが存在する場合、方法４００は、４０２に戻り得る。未調査のエントリが残っていない場合、方法４００は、４０８において、実行結果を出力することを、４１０において、この実行結果をプロセッサのレジスタに記憶することを含み得る。例えば、図２において、重複検査ロジック２７６は、実行結果を汎用レジスタファイル２２６に記憶し得る。実行結果は、ブール結果、入力ページに重複するエントリページに対応する、ＴＬＢのエントリの数、入力ページに重複する特定のエントリページに対応する、ＴＬＢの特定のエントリ等であり得る。代替の実施形態においては、重複が識別され次第、方法４００は、重複指標を出力し、さらなるＴＬＢエントリを調査することを継続する代わりに、終了し得る。したがって、図４の方法４００は、入力ページのためにＴＬＢ内に新たなエントリを作成することがＴＬＢ内に重複エントリをもたらすかを決定するために、重複検査命令の実行を可能にし得る。
【００５７】
[0062]特定の実施形態において、図４の方法４００は、ＤＳＰ、ＣＰＵ、コントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組み合わせによって実装され得る。一例として、図４の方法４００は、図６を参照しつつ記載されるように、命令を実行するプロセッサによって実行され得る。
【００５８】
[0063]図５は、条件付きＴＬＢ書き込み命令を実行する方法５００の特定の実施形態のフローチャートである。例示的な実施形態において、方法５００は、図１のシステム１００または図２のシステム２００において実行され得る。
【００５９】
[0064]図５に例示される各動作は、ＴＬＢを含むプロセッサにおける条件付きＴＬＢ書き込み命令の実行期間中に実行され得る。ＴＬＢは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する少なくとも１つのエントリを含み得る。条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み得る。方法５００は、５０２において、エントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定することを含み得る。例えば、図２において、条件付きＴＬＢ書き込み命令２６２の実行期間中に、重複検査ロジック２７６は、ＴＬＢエントリ２７２のうちの１つのエントリページサイズ指標と入力ページサイズ指標との比較に基づいて、算出ページサイズを決定し得る。
【００６０】
[0065]方法５００は、５０４において、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリのエントリ仮想アドレスとのマスクされた比較を実行することも備え得る。例えば、図２において、重複検査ロジック２７６は、算出ページサイズに基づいて、マスクされた比較を実行し得る。
【００６１】
[0066]方法５００は、５０６において、ＴＬＢの未調査のエントリが残っているかを決定することをさらに含み得る。代替の実施形態においては、重複が識別され次第、方法５００は、重複指標を出力し、さらなるＴＬＢエントリを調査することを継続する代わりに、終了し得る。ＴＬＢ内に依然として未調査のエントリが存在する場合、方法５００は、５０２に戻り得る。未調査のエントリが残っていない場合、方法５００は、５０８において、入力ページが少なくとも１つのエントリページに重複するかを決定することを含み得る。
【００６２】
[0067]入力ページに重複するエントリページが存在しない場合、方法５００は、５１０において、入力ページサイズ指標と入力仮想アドレスとをＴＬＢの第２のエントリに書き込むことを含み得る。少なくとも１つのエントリページが入力ページに重複する場合、方法５００は、５１２において、書き込みエラーを示す実行結果を出力することを含み得る。したがって、図５の方法５００は、ＴＬＢにおける重複を検査し、重複が検出されない場合にはＴＬＢ内に新たなエントリを作成するための単一の命令の実行を可能にする。
【００６３】
[0068]特定の実施形態において、図５の方法５００は、ＤＳＰ、ＣＰＵ、コントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組み合わせによって実装され得る。一例として、図５の方法５００は、図６を参照しつつ記載されるように、命令を実行するプロセッサによって実行され得る。
【００６４】
[0069]図６を参照すると、電子デバイス６００のブロック図が示される。特定の実施形態において、電子デバイス６００、またはその構成要素は、通信デバイス、コンピューティングデバイス、携帯情報端末（ＰＤＡ）、エンターテインメントユニット、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、ナビゲーションデバイス、固定ロケーションデータユニット、またはこれらの任意の組み合わせに含まれ得る。
【００６５】
[0070]電子デバイス６００は、メモリ６３２に結合されるプロセッサ（例えば、ＤＳＰ）６１０を含む。プロセッサ６１０は、マルチコアプロセッサであり、および／または、複数のハードウェアスレッドを含み得る。例えば、プロセッサ６１０は、インターリーブされたマルチスレッド実行をサポートし得る。
【００６６】
[0071]図６は、プロセッサ６１０とディスプレイ６２８とに結合されるディスプレイコントローラ６２６を含む。コーダ／デコーダ（ＣＯＤＥＣ）６３４は、プロセッサ６１０に結合され得る。スピーカー６３６およびマイクロフォン６３８は、ＣＯＤＥＣ６３４に結合され得る。図６は、ワイヤレスコントローラ６４０が（例えば、無線周波数（ＲＦ）インターフェースを介して）プロセッサ６１０とアンテナ６４２とに結合され得ることも示す。
【００６７】
[0072]メモリ６３２は、実行可能な命令を含む、有形の非一時的なコンピュータ読取可能またはプロセッサ読取可能な記憶媒体であり得る。命令は、図３、図４、および図５の方法３００と、方法４００と、方法５００とを含む、本明細書において記載される様々な機能および方法を実行するために、プロセッサ６１０などのプロセッサによって実行され得る。例えば、メモリ６３２は、重複検査命令２６０と条件付きＴＬＢ書き込み命令２６２とを記憶し得る。命令２６０および２６２の実行は、プロセッサ６１０のＴＬＢ２７０における重複検査動作をトリガし得る。例えば、そのような重複検査動作は、図２を参照しつつ記載されたように、ＴＬＢエントリ２７２と、入力ロジック２７４と、重複検査ロジック２７６と、および／または、書き込みロジック２７８とに関与し得る。
【００６８】
[0073]特定の実施形態において、プロセッサ６１０、ディスプレイコントローラ６２６、メモリ６３２、ＣＯＤＥＣ６３４、およびワイヤレスコントローラ６４０は、システムインパッケージまたはシステムオンチップデバイス６２２に含まれる。特定の実施形態において、入力デバイス６３０および電源６４４は、システムオンチップデバイス６２２に結合される。さらに、特定の実施形態において、図６に例示されるように、ディスプレイ６２８、入力デバイス６３０、スピーカー６３６、マイクロフォン６３８、アンテナ６４２、および電源６４４は、システムオンチップデバイス６２２の外部に存在する。ただし、ディスプレイ６２８、入力デバイス６３０、スピーカー６３６、マイクロフォン６３８、アンテナ６４２、および電源６４４の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス６２２の構成要素に結合され得る。
【００６９】
[0074]記載された実施形態に関連して、装置は、少なくとも１つのエントリを記憶するための手段を含む。少なくとも１つのエントリは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを含む。例えば、記憶するための手段は、図１のＴＬＢ１３０、図２のＴＬＢ２７０、データを記憶するように構成された別のデバイスもしくはモジュール、またはこれらの任意の組み合わせであり得る。
【００７０】
[0075]本装置は、入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを受け取るための手段も含み得る。例えば、受け取るための手段は、図１の入力ロジック１１０、図２の入力ロジック２７４、データを受け取るように構成された別のデバイスもしくはモジュール、またはこれらの任意の組み合わせを含み得る。
【００７１】
[0076]本装置は、エントリページサイズ指標と入力ページサイズ指標との比較に基づいて算出ページサイズを決定するための手段をさらに含み得る。例えば、決定するための手段は、図１のページサイズ算出ロジック１２２、図２の重複検査ロジック２７６、ページサイズを算出するように構成された別のデバイスもしくはモジュール、またはこれらの任意の組み合わせを含み得る。
【００７２】
[0077]本装置は、入力ページがエントリページに重複するかを決定するために、算出ページサイズに基づいて、入力仮想アドレスとエントリ仮想アドレスとのマスクされた比較を実行するための手段を含み得る。例えば、マスクされた比較を実行するための手段は、図１のマスクされた比較ロジック１２４、図２の重複検査ロジック２７６、マスクされた比較を実行するように構成された別のデバイスもしくはモジュール、またはこれらの任意の組み合わせを含み得る。
【００７３】
[0078]当業者は、本明細書において開示される実施形態と共に記載される論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両者の組み合わせとして実装され得ることをさらに認識するであろう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップは、一般に、これらの機能性の観点から上述されてきた。そのような機能性がハードウェアとして実装されるか、またはプロセッサ実行可能な命令として実行されるかは、特定の適用例およびシステム全体に課される設計制約に依存する。当業者は、記載された機能性を特定の適用例ごとに様々な手法で実装し得るが、そのような実装上の決定は、本開示の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【００７４】
[0079]本明細書において開示される実施形態に関連して記載される方法またはアルゴリズムのステップは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの２つの組み合わせにおいて具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、または、本技術分野において知られる、任意の他の形式の非一時的な記憶媒体において常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替案において、記憶媒体は、プロセッサと一体化され得る。プロセッサおよび記憶媒体は、特定用途向け集積回路（ＡＳＩＣ）に存在し得る。ＡＳＩＣは、コンピューティングデバイスまたはユーザ端末に存在し得る。代替案において、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末における別個の構成要素として存在し得る。
【００７５】
[0080]開示された実施形態の前述の記載は、開示された実施形態を当業者が製造または使用することを可能にするために提供される。これらの実施形態への様々な変更は、当業者には容易に明らかとなるであろうし、本明細書において定義される原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書において示される実施形態に限定されることは意図されないが、下記の請求項によって定義されるような原理および新規な特徴と一致する、考え得る最も広い範囲と合致すべきである。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
［請求項１］
入力仮想アドレスと入力ページサイズ指標とを変換索引バッファ（ＴＬＢ）において受け取ることと、前記入力仮想アドレスおよび前記入力ページサイズ指標は、入力ページに対応し、
前記入力ページサイズ指標と前記ＴＬＢのエントリのエントリページサイズ指標との比較に基づいて、算出ページサイズを決定することと、ここにおいて、前記ＴＬＢの前記エントリは、エントリページに対応し、
前記入力ページが前記エントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリのエントリ仮想アドレスとのマスクされた比較を実行することと、
を備える方法。
［請求項２］
前記算出ページサイズを決定することが、前記入力ページサイズ指標によって表される入力ページサイズおよび前記エントリページサイズ指標によって表されるエントリページサイズのうちの大きい方を前記算出ページサイズとして選択することを備える、請求項１に記載の方法。
［請求項３］
前記ＴＬＢの第２のエントリの第２のエントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、第２の算出ページサイズを決定することと、ここにおいて、前記ＴＬＢの前記第２のエントリは、第２のエントリページに対応し、
前記入力ページが前記第２のエントリページに重複するかを決定するために、前記第２の算出ページサイズに基づいて、前記入力仮想アドレスと前記第２のエントリの第２のエントリ仮想アドレスとの第２のマスクされた比較を実行することと、
をさらに備える、請求項１に記載の方法。
［請求項４］
前記算出ページサイズが、前記第２の算出ページサイズと異なる、請求項３に記載の方法。
［請求項５］
少なくとも１つのエントリを備える変換索引バッファ（ＴＬＢ）と、前記少なくとも１つのエントリは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを含み、
入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを受け取るように構成された入力ロジックと、
前記エントリページサイズ指標および前記入力ページサイズ指標に少なくとも一部は基づいて、前記入力ページが前記エントリページに重複するかを決定するように構成された重複検査ロジックと、
を備える装置。
［請求項６］
前記重複検査ロジックが、
前記エントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、算出ページサイズを決定し、
前記入力ページが前記エントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリ仮想アドレスとのマスクされた比較を実行する
ようにさらに構成される、請求項５に記載の装置。
［請求項７］
前記少なくとも１つのエントリが、アプリケーション空間識別子（ＡＳＩＤ）とグローバル指標とをさらに含み、前記入力ロジックが、入力ＡＳＩＤを受け取るようにさらに構成され、ここにおいて、前記重複検査ロジックが、
第１の値を有する前記グローバル指標に応答して、前記入力ページが前記エントリページに重複するかを決定する際に前記ＡＳＩＤと前記入力ＡＳＩＤとを比較し、
第２の値を有する前記グローバル指標に応答して、前記入力ページが前記エントリページに重複するかを決定する際に前記ＡＳＩＤと前記入力ＡＳＩＤとを比較することを控える
ようにさらに構成される、請求項６に記載の装置。
［請求項８］
前記入力ページサイズ指標が、第１のマスクによって表され、前記エントリページサイズ指標が、第２のマスクによって表される、請求項５に記載の装置。
［請求項９］
前記入力ページサイズ指標が、第１のページサイズによって表され、前記エントリページサイズ指標が、第２のページサイズによって表される、請求項５に記載の装置。
［請求項１０］
前記少なくとも１つのエントリが、前記エントリ仮想アドレス、アプリケーション空間識別子（ＡＳＩＤ）、キャッシュ可能指標、許可指標、グローバル指標、またはこれらの任意の組み合わせにマッピングされる物理アドレスを含む、請求項５に記載の装置。
［請求項１１］
プロセッサにおいて重複検査命令を実行することを備え、ここにおいて、前記重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、前記重複検査命令を実行することは、
変換索引バッファ（ＴＬＢ）のエントリのエントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、算出ページサイズを決定することと、
前記入力ページがエントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリのエントリ仮想アドレスとのマスクされた比較を実行することと、
前記入力ページが前記エントリページに重複するかの前記決定に基づいて、実行結果を出力することと、
を含む、方法。
［請求項１２］
前記実行結果が、ブール出力を備える、請求項１１に記載の方法。
［請求項１３］
前記実行結果が、前記入力ページに重複するエントリページに対応する、前記ＴＬＢのエントリの数を識別する、請求項１１に記載の方法。
［請求項１４］
前記実行結果が、前記入力ページに重複する特定のエントリページに対応する、前記ＴＬＢの特定のエントリを識別する、請求項１１に記載の方法。
［請求項１５］
前記重複検査命令を実行することが、前記実行結果を前記プロセッサのレジスタに記憶することをさらに備える、請求項１１に記載の方法。
［請求項１６］
ＴＬＢを含むプロセッサにおいて条件付き変換索引バッファ（ＴＬＢ）書き込み命令を実行することを備え、ここにおいて、前記ＴＬＢは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する第１のエントリを含み、前記条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、
前記条件付きＴＬＢ書き込み命令を実行することは、
前記エントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、算出ページサイズを決定することと、
前記入力ページが前記エントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリ仮想アドレスとのマスクされた比較を実行することと、
前記入力ページが前記エントリページに重複しないと決定することに応答して、前記入力ページサイズ指標と前記入力仮想アドレスとを前記ＴＬＢの第２のエントリに書き込むことと、
を備える、方法。
［請求項１７］
前記条件付きＴＬＢ書き込み命令を実行することが、前記入力ページが前記エントリページに重複すると決定することに応答して、書き込みエラーを示す実行結果を出力することをさらに備える、請求項１６に記載の方法。
［請求項１８］
前記実行結果が、前記入力ページに重複するエントリページに対応する、前記ＴＬＢのエントリの数を識別し、前記入力ページに重複する特定のエントリページに対応する、前記ＴＬＢの特定のエントリ、またはこれらの任意の組み合わせを識別する、請求項１７に記載の方法。
［請求項１９］
少なくとも１つのエントリを記憶するための手段と、前記少なくとも１つのエントリは、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを含み、
入力ページに対応する入力ページサイズ指標と入力仮想アドレスとを受け取るための手段と、
前記エントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、算出ページサイズを決定するための手段と、
前記入力ページが前記エントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリ仮想アドレスとのマスクされた比較を実行するための手段と、
を備える、装置。
［請求項２０］
重複検査命令を備え、
ここにおいて、前記重複検査命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、
前記重複検査命令は、変換索引バッファ（ＴＬＢ）を含むプロセッサによって、
前記ＴＬＢのエントリのエントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、算出ページサイズを決定し、
前記入力ページがエントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリのエントリ仮想アドレスとのマスクされた比較を実行し、
前記入力ページが前記エントリページに重複するかの決定に基づいて、実行結果を出力する
ように実行可能である、非一時的なプロセッサ読取可能な媒体。
［請求項２１］
条件付き変換索引バッファ（ＴＬＢ）書き込み命令を備え、
ここにおいて、前記条件付きＴＬＢ書き込み命令は、入力ページに対応する入力仮想アドレスと入力ページサイズ指標とを含み、
前記条件付きＴＬＢ書き込み命令は、エントリページに対応するエントリ仮想アドレスとエントリページサイズ指標とを有する第１のエントリを含むＴＬＢを含むプロセッサによって、
前記エントリページサイズ指標と前記入力ページサイズ指標との比較に基づいて、算出ページサイズを決定し、
前記入力ページが前記エントリページに重複するかを決定するために、前記算出ページサイズに基づいて、前記入力仮想アドレスと前記エントリ仮想アドレスとのマスクされた比較を実行し、
前記入力ページが前記エントリページに重複しないと決定することに応答して、前記入力ページサイズ指標と前記入力仮想アドレスとを前記ＴＬＢの第２のエントリに書き込むように実行可能である、非一時的なプロセッサ読取可能な媒体。
【図１】
0005922317.tif 000002
【図２】
0005922317.tif 000003
【図３】
0005922317.tif 000004
【図４】
0005922317.tif 000005
【図５】
0005922317.tif 000006
【図６】
0005922317.tif 000007