(57)【特許請求の範囲】
【請求項１】
第1の変換索引バッファ(TLB)を管理する方法であって、
メモリ命令の実行の開始に応答して、
前記第1のTLBの第1の変換エントリに関連付けられた第1のフィールドをセットするステップと、
第2のフィールドの値に前記第1の変換エントリに関連付けられた第2のフィールドをセットするステップであって、前記第2のフィールドの値は、前記第1の変換エントリが第2のTLB中の対応する変換エントリに一致するか否かを示す、ステップと、
前記第1のTLB中の第1の変換エントリが、前記第2のTLB中の対応する変換エントリに一致しないという判断に応答して、前記第2のフィールドの値をクリアするステップと
を含む方法。
【請求項２】
前記第1のフィールドをセットするステップは、前記変換エントリの使用を示す第1のフィールドの値に前記第1のフィールドをセットするステップを含み、前記第1のフィールドは、前記メモリ命令の実行が完了するまで前記第1のフィールドの値を維持する、請求項1に記載の方法。
【請求項３】
前記第1のフィールドが前記第1のフィールドの値を有することに応答して、前記第1のTLB中の前記第1の変換エントリが、前記第2のTLB中の前記対応する変換エントリに一致するように同期されるのを防ぐステップをさらに含む、請求項2に記載の方法。
【請求項４】
割込みの受取り、前記メモリ命令の前記実行の完了、および前記メモリ命令の前記実行の破棄の少なくとも1つに応答して、前記第1のフィールドの値をクリアするステップをさらに含む、請求項2に記載の方法。
【請求項５】
前記第1のフィールドの値がクリアされており前記第2のフィールドの値がクリアされていることを条件として、前記第1のTLB中の前記第1の変換エントリを、前記第2のTLB中の前記対応する変換エントリに一致するように同期させるステップをさらに含む、請求項2に記載の方法。
【請求項６】
前記第1のフィールドの複数のスロットが前記第1の変換エントリに関連付けられ、前記第1のフィールドの複数のスロットの各スロットが、超長命令語(VLIW)パケットの対応するスロットが前記第1の変換エントリを使っているかどうかを示す対応する第1のフィールドの値にセットされ、前記VLIWパケットが複数のスロットを含む、請求項1に記載の方法。
【請求項７】
前記VLIWパケットの第1のスロットが第1のメモリ命令を含み、第2のスロットが第2のメモリ命令を含む、請求項6に記載の方法。
【請求項８】
前記第1のメモリ命令および前記第2のメモリ命令の一方が実行の完了に失敗したことに応答して、前記第1のメモリ命令および前記第2のメモリ命令の他方が、実行を完了するのを防ぐステップをさらに含む、請求項7に記載の方法。
【請求項９】
前記第1のフィールドのスロットが前記第1のフィールドの値を有することに応答して、前記第1のTLB中の前記第1の変換エントリの、前記第2のTLB中の前記対応するエントリとの同期を防ぐステップをさらに含む、請求項6に記載の方法。
【請求項１０】
前記メモリ命令の第1の実行中に前記メモリ命令の完了に失敗したことに応答して、前記第1のフィールドの値で前記第1のフィールドを維持して、前記メモリ命令の第2の実行中にメモリ命令アドレスと前記第1の変換エントリとの比較を防ぐステップをさらに含み、前記メモリ命令アドレスは前記メモリ命令に関連付けられる、請求項2に記載の方法。
【請求項１１】
前記メモリ命令アドレスと前記第1の変換エントリとの比較を防ぐステップが、前記メモリ命令アドレスと、前記第1の変換エントリ内の仮想アドレスとの比較を防ぐステップを含む、請求項10に記載の方法。
【請求項１２】
前記比較を防ぐステップが、前記第1の変換エントリからの前記仮想アドレスの読出しを防ぐステップをさらに含む、請求項11に記載の方法。
【請求項１３】
符号化ベクトルを使って前記メモリ命令アドレスを変換して、前記比較を迂回することをさらに含む、請求項10に記載の方法。
【請求項１４】
前記第2のTLB中の特定の変換エントリについて、前記第2のTLB中の前記特定の変換エントリは、前記第1のTLB中の対応する特定の変換エントリを有し、前記第1のTLB中の特定の変換エントリの第1のフィールドがクリアであることを条件にして、前記第1のTLB中の特定の変換エントリを、前記第2のTLB中の更新された特定のエントリに同期させるステップをさらに含む、請求項1に記載の方法。
【請求項１５】
前記第1のTLB中の前記特定の変換エントリが、前記第1のTLB中の前記特定の変換エントリを前記第2のTLB中の前記更新された特定の変換エントリにマップするインデックス番号を含む、請求項14に記載の方法。
【請求項１６】
第1の変換索引バッファ(TLB)であって、
第1の変換エントリと、
前記第1の変換エントリに関連付けられた第1のフィールドと、
前記第1の変換エントリに関連付けられた第2のフィールドであって、前記第2のフィールドは、前記第1の変換エントリが第2のTLB中の対応する変換エントリに一致するか否かを示し、かつ、前記第2のフィールドは、前記第1のTLB中の第1の変換エントリが、前記第2のTLB中の対応する変換エントリに一致しないという判断に応答して、クリアされるように構成される、第2のフィールドと
を含む第1の変換索引バッファ(TLB)を備える装置。
【請求項１７】
メモリ命令を実行するプロセッサをさらに備え、前記プロセッサが前記第1のTLBを含む、請求項16に記載の装置。
【請求項１８】
前記プロセッサが、第1のスレッドおよび第2のスレッドを処理するように構成されたマルチスレッドプロセッサである、請求項17に記載の装置。
【請求項１９】
前記第1の変換エントリが前記第1のスレッドに対応し、前記マルチスレッドプロセッサが、前記第1のスレッドに、前記第1の変換エントリを改変させ、前記第2のスレッドが前記第1の変換エントリを改変するのを防ぐ、請求項18に記載の装置。
【請求項２０】
前記プロセッサが、前記メモリ命令の実行の開始に応答して、前記第1のフィールドを第1のフィールドの値にセットするように構成され、前記第1のフィールドの値は、前記第1の変換エントリが使用中であることを示す、請求項17に記載の装置。
【請求項２１】
前記第1のフィールドが第1のフィールドの値にセットされるのに応答して、前記第1の変換エントリ内の仮想アドレスの読込みを抑制するように構成された回路をさらに備える、請求項20に記載の装置。
【請求項２２】
前記プロセッサが、前記メモリ命令の前記実行が完了するまで、前記第1のTLB中の前記第1の変換エントリが別のメモリ命令に割り振られるのを防ぐように構成される、請求項20に記載の装置。
【請求項２３】
前記プロセッサが、前記第1の変換エントリの前記第1のフィールドが第1のフィールドの値にセットされていることに応答して、前記第1の変換エントリから前記第1のTLB中の第2の変換エントリに置換え要求をリルートするように構成される、請求項20に記載の装置。
【請求項２４】
前記第2の変換エントリの第1のフィールドがクリアされることを条件として、前記置換え要求が、前記第2の変換エントリにリルートされる、請求項23に記載の装置。
【請求項２５】
前記第2のTLBがジョイントTLBである、請求項17に記載の装置。
【請求項２６】
前記第1のTLBがマイクロTLBである、請求項17に記載の装置。
【請求項２７】
第1のアドレスを第2のアドレスに変換することができる第1の変換情報を記憶するための手段と、
第1のインジケータを記憶するための手段と、
第2のインジケータを記憶するための手段であって、前記第2のインジケータは、前記第1の変換情報を記憶するための手段に記憶された第1の変換情報が、第2の変換情報を記憶するための手段に記憶された第2の変換情報に一致するか否かを示す、手段と、
前記第1の変換情報を記憶するための手段の前記第1の変換情報が、前記第2の変換情報を記憶するための手段に記憶された前記第2の変換情報に一致しないという判断に応答して、前記第2のインジケータをクリアする手段と
を備える装置。
【請求項２８】
前記第1のアドレスが仮想アドレスであり、前記第2のアドレスがメモリ中の物理アドレスである、請求項27に記載の装置。
【請求項２９】
プロセッサにより実行可能な命令を備えたプロセッサ読み取り可能な記録媒体であって、
前記命令は前記プロセッサに、
第1の変換索引バッファ(TLB)の変換エントリに関連付けられた第1のフィールドをセットするステップと、
前記変換エントリに関連付けられた第2のフィールドを第2のフィールドの値にセットするステップであって、前記第2のフィールドの値は、前記変換エントリが第2のTLB中の対応する変換エントリに一致するか否かを示す、ステップと、
前記第1のTLB中の変換エントリが、前記第2のTLB中の対応する変換エントリに一致しないという判断に応答して、前記第2のフィールドをクリアするステップと
を実行させる、プロセッサ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、変換索引バッファの管理に関する。
【背景技術】
【０００２】
技術の進歩によって、コンピューティングデバイスはより小型にかつより高性能になっている。たとえば、現在、小型で、軽量で、ユーザが簡単に持ち運べる、携帯式のワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスのような、ワイヤレスコンピューティングデバイスを含む、様々な携帯式の個人向けコンピューティングデバイスが存在する。より具体的には、セルラー電話やインターネットプロトコル(IP)電話などの携帯式のワイヤレス電話は、ボイスおよびデータパケットを、ワイヤレスネットワークを介して通信することができる。多くのそのようなワイヤレス電話は、エンドユーザのための拡張機能を提供するために、追加のデバイスを内蔵する。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤーも含み得る。また、そのようなワイヤレス電話は、ウェブブラウザアプリケーションなど、インターネットにアクセスするために使用され得るソフトウェアアプリケーションを含む実行可能な命令を処理することができる。したがって、これらのワイヤレス電話は、高いコンピューティング能力を含み得る。
【０００３】
コンピューティングデバイスのデータ記憶容量は、変換索引バッファ(TLB)を含むメモリ管理ユニット(MMU)を使うことにより、高めることができる。TLBは、コンピューティングデバイスが、仮想アドレスをメモリ(たとえば、ランダムアクセスメモリ(RAM))内の対応する物理アドレスにマップするエントリを記憶することによって、変換を素早く実施するのを助けることができる。複数のスレッドがTLB(たとえば、ジョイントTLB)を共有するマルチスレッド環境において、複数のスレッドは、ジョイントTLB内のエントリを更新または削除することができる。
【０００４】
マイクロTLBは、ジョイントTLBからのエントリのコピーを記憶することができ、マイクロTLBにおいて記憶されたコピーは、特定のスレッドによってのみ修正することができる。たとえば、ジョイントTLBエントリは、複数のスレッドによって修正することができ、マイクロTLBは、特定のスレッドによってのみ修正することができる。変換エントリが、第1のスレッドによってジョイントTLBからマイクロTLBにコピーされた後、第2のスレッドは、ジョイントTLB中の対応するエントリを更新または削除することができる。この場合、マイクロTLBエントリは、対応するジョイントTLBエントリに一致し得ない。
【発明の概要】
【課題を解決するための手段】
【０００５】
マイクロTLBエントリを、ジョイントTLB中の対応するエントリに一致するように同期させるマイクロTLBについて説明する。マイクロTLBは、第1のフィールドおよび第2のフィールドを含む。第1のフィールドは、特定のスレッドが、命令の実行中にマイクロTLBエントリを使っているかどうかを示し、第2のフィールドは、マイクロTLBエントリが、ジョイントTLB中の対応するエントリに一致するかどうかを示す。命令の実行中に、第2のフィールドは、ジョイントTLBエントリが変更されているかどうか、およびマイクロTLBエントリがもはやジョイントTLBエントリに一致しないことを示すようにクリアされ得る。ただし、マイクロTLB中のエントリが使用中であるであるとき、第1のフィールドは、マイクロTLBエントリが、更新されたジョイントTLBエントリに一致するように直ちに同期されるのを防ぐようにセットされ得る。命令が実行を完了した後、第1のフィールドは、マイクロTLBエントリがもはや使用されていないことを示すようにクリアすることができ、マイクロTLBが次いで、マイクロTLBエントリを、対応するジョイントTLBエントリに一致するように同期させることを可能にする。
【０００６】
特定の実施形態では、第1の変換索引バッファ(TLB)を管理する方法が開示される。この方法は、メモリ命令の実行の開始に応答して、第1のTLBのエントリに関連付けられた第1のフィールドを、エントリの使用を示すようにセットすること、および第2のフィールドを、第1のTLB中のエントリが第2のTLB中の対応するエントリに一致することを示すようにセットすることを含む。第1のTLBはマイクロTLBでよく、第2のTLBは共有TLBでよい。
【０００７】
特定の実施形態では、装置は、第1の変換索引バッファ(TLB)を含む。第1のTLBは、TLBエントリを含み、TLBエントリに対応する第1のフィールドおよび第2のフィールドを含む。第1のフィールドは、TLBエントリが使用中であるかどうかを示し、第2のフィールドは、TLBエントリが第2のTLB中の対応するエントリに一致するかどうかを示す。
【０００８】
開示する実施形態の少なくとも1つによって与えられる1つの特定の利点は、命令が実行を完了する前にマイクロTLBエントリが変更されることなく、プロセッサがマイクロTLB中の変換エントリに基づいて命令を実行できることである。マイクロTLBエントリは、命令の実行中は不変のままなので、プロセッサは、マイクロTLB中のTLBエントリにアクセスするとき、ミスを受け取ることなく、命令の実行を完了することができる。プロセッサはしたがって、変換を必要とするVLIWパケット中の命令すべてに関して第1のフィールド(使用ビット)がセットされた後、消失TLBエントリエラーを受け取ることなく、複数の命令すべての実行が完了されるという要件を有する複数の命令を含む超長命令語(VLIW)パケットを受け取り、処理することができる。
【０００９】
開示する実施形態の少なくとも1つによって与えられる別の特定の利点は、メモリ命令が、(たとえば、メモリ命令のやり直し中の)変換の別の出力を求めるとき、マイクロTLBが、メモリ命令のアドレスと、マイクロTLBの変換エントリとの新たな比較を実施することなく、変換を出力し得ることである。この場合、マイクロTLBは、メモリ命令の変換中に比較をスキップすることによって、電力消費を削減し得る。
【００１０】
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
【図面の簡単な説明】
【００１１】
【図１】変換索引バッファを同期させるシステムの特定の例示的実施形態を示すブロック図である。
【図２】第1のフィールドおよび第2のフィールドに基づいてアドレスの変換を実施する図1の第1の変換索引バッファの特定の例示的実施形態を示す図である。
【図３】第1のフィールドおよび第2のフィールドに基づいてアドレスの変換を実施する図1の第1の変換索引バッファの第2の例示的実施形態を示す図である。
【図４】第1のフィールドおよび第2のフィールドに基づいて、図1の第1の変換索引バッファを管理する方法の特定の例示的実施形態を示すフローチャートである。
【図５】第1のフィールドおよび第2のフィールドに基づいて、図1の第1の変換索引バッファを管理する方法の第2の例示的実施形態を示すフローチャートである。
【図６】図1の第1の変換索引バッファを含むワイヤレス通信デバイスの特定の実施形態を示すブロック図である。
【発明を実施するための形態】
【００１２】
図1を参照すると、変換索引バッファを同期させるシステム100が示されている。システム100は、第1の変換索引バッファ(TLB)108および第2のTLB106を含むプロセッサ102を含む。第2のTLB106は、プロセッサ102の複数のスレッドによって共有されるエントリを含むジョイントTLBでよい。第1のTLB108は、特定のスレッドの独占的使用のために第2のTLB106からコピーされたエントリを含むマイクロTLBでよい。たとえば、プロセッサ102は、各スレッド用にマイクロTLBを含み得る。プロセッサ102は、第1のTLB108中の変換エントリ112を、第2のTLB106中の対応する変換エントリ110に一致するように同期させることができる。第1のTLB108は、変換エントリ112が使用中であるかどうかを示す第1のフィールド114と、変換エントリ112が、第2のTLB106中の対応する変換エントリ110に一致するかどうかを示す第2のフィールド116とを含む。
【００１３】
プロセッサ102は、第1のアドレス140を受け取り、メモリ104の第2のアドレス142に変換するように構成され得る。たとえば、第1のアドレス140は仮想ページ番号(VPN)でよく、第2のアドレス142は物理ページ番号(PPN)でよい。変換を実施するのに使われる情報は、ジョイントTLB(たとえば、第2のTLB106)中に変換エントリ(たとえば、変換エントリ110)として記憶することができる。たとえば、変換エントリ110は、特定のVPNを対応するPPNにマップすることができる。プロセッサ102は、マイクロTLB(たとえば、第1のTLB108)が変換エントリ110のコピーを含むかどうか判断するように構成され得る。この判断に基づいて、プロセッサ102は、第1のTLB108の変換エントリ112を、第2のTLB106の変換エントリ110に一致するように同期させることができる。プロセッサ102は、第1のTLB108の変換エントリ112を使って、第1のアドレス140から第2のアドレス142への変換を実施するように構成され得る。たとえば、特定のスレッドがメモリ命令118を実行中であるとき、プロセッサ102は、特定のスレッドに対応するマイクロTLB(たとえば、第1のTLB108)を使って、変換を実施することができる。
【００１４】
プロセッサ102は、第1のTLB108の変換エントリ112が使用中かどうかを追跡するように構成され得る。プロセッサ102が変換エントリ112を使って第1のアドレス140の変換を実施済みであり、メモリ命令118の実行を開始済みであるが、メモリ命令118の実行を完了していないとき、変換エントリ112は使用中であり得る。この場合、第1のTLB108の第1のフィールド114は、プロセッサ102の特定のスレッドが変換エントリ112を使用中であることを示すように、プロセッサ102によってセットされ得る。メモリ命令118が実行を完了すると、プロセッサ102は、第1のTLB108の変換エントリ112がもはや使用中でないことを示すように、第1のフィールド114をクリアすることができる。さらに、第1のフィールド114は、メモリ命令118の実行が破棄され、またはメモリ命令118の実行中にプロセッサ102が割込み160を受け取ったときにクリアされ得る。
【００１５】
プロセッサ102は、第1のTLB108の変換エントリ112が、メモリ命令118の実行が完了するまで別のメモリ命令に割り振られるのを防ぐように構成され得る。たとえば、第1のフィールド114がセットされているとき、プロセッサ102は、変換エントリ112が別のメモリ命令に専用になるのを防げばよい。この場合、第1のフィールド114がセットされている間にプロセッサ102が変換エントリ112についての置換え要求を受け取ると、プロセッサ102は、置換え要求を、第1のTLB108中の第2のエントリ(図示せず)にリルートする。第2のエントリは、セットされていない対応する第1のフィールドを有し得る。したがって、変換エントリ112が特定のメモリ命令(たとえば、メモリ命令118)に割り振られると、変換エントリ112は、メモリ命令118が実行を完了するまで、変更を防止され得る。
【００１６】
プロセッサ102は、メモリ命令118が実行中の間、第2のTLB106の変換エントリ110を更新または削除するように構成され得る。たとえば、メモリ命令118の実行中にプロセッサ102の第2のスレッドが第1のTLB変換エントリ112を使っている間、プロセッサ102の第1のスレッドは、第2のTLB106の変換エントリ110を更新することができる。この場合、第1のTLB108の変換エントリ112は、第2のTLB106中の対応する変換エントリ110と一致しないはずである(すなわち、変換エントリ110が更新された後)。プロセッサ102は、変換エントリ112が第2のTLB106中の対応するエントリ110に一致するかどうかを追跡するように構成され得る。たとえば、変換エントリ110が第2のTLB106から第1のTLB108の変換エントリ112にコピーされると、プロセッサ102は、2つの変換エントリ110、112が一致することを示すように第2のフィールド116をセットすることができる。対応する変換エントリ110が更新され、削除され、または他のやり方で変更されると、プロセッサ102は、2つのエントリ110、112が一致しないことを示すように第2のフィールド116をクリアしてよい。
【００１７】
プロセッサ102は、第1のTLB108の第1のフィールド114および第2のフィールド116に基づいて、第1のTLB108の変換エントリ112を、第2のTLB106の変換エントリ110に一致するように同期させるように構成され得る。たとえば、命令(たとえば、メモリ命令118)を実行中の特定のスレッドによって第1のTLB108の変換エントリ112が使用されていることを第1のフィールド114が示すとき、プロセッサ102は、エントリ110、112が一致しないことを第2のフィールド116が示すかどうかに関わらず、変換エントリ112が変更されるのを防ぐように構成され得る。別の例として、第1のTLB108の変換エントリ112が使用されていないことを第1のフィールド114が示すとき、プロセッサ102は、エントリ110、112が一致しないことを第2のフィールド116が示すかどうかに基づいて、変換エントリ112を第2のTLB106中の対応する変換エントリ110と同期させるように構成され得る。
【００１８】
第1のフィールド114および第2のフィールド116に基づいて第1のTLB108内の特定のエントリを同期させることによって、プロセッサ102は、変換エントリの使用が完了した後、第1のTLB108中の変換エントリ(たとえば、変換エントリ112)の同期を実施する。第1のTLBエントリ112は、メモリ命令118が実行を完了した後に更新されるので、第1のTLBエントリ112は、メモリ命令118の実行の間、第1のTLB108中に留まる。したがって、第1のTLB変換エントリ112を使用中である、プロセッサ102の特定のスレッドは、メモリ命令118の実行中はTLBミスエラーを受け取らない。TLBミスエラーを防ぐことにより、プロセッサ102およびメモリ104の性能が向上し得る。
【００１９】
図2を参照すると、図1の第1の変換索引バッファ(TLB)108を含むシステム200の特定の実施形態が示されている。第1のTLB108は、1つまたは複数のアドレスが第1のTLB108中の変換エントリ(たとえば、変換エントリ112)に一致するかどうか判断するように構成された比較回路要素240を含み得る。たとえば、第1のTLB108は、超長命令語(VLIW)パケット201からの複数のアドレスを変換するように構成され得る。この場合、第1のTLB108のエントリは、VLIWパケット201の第1の「スロット」中の第1の命令203およびVLIWパケット201の第2の「スロット」中の第2の命令207など、VLIWパケット201中の複数の命令に対応し得る。第1の命令203は第1のアドレス205を有し、第2の命令207は第2のアドレス209を有し得る。たとえば、第1の命令203は、第1のアドレス205に記憶されたデータをロードするための命令でよい。
【００２０】
アドレスの少なくとも1つ(たとえば、第1のアドレス205または第2のアドレス209)が変換エントリ112に一致するという、比較回路要素240による判断に応答して、第1のTLB108は、変換エントリ112を使って、変換アドレス242を生成することができる。この場合、第1のフィールド114は、変換エントリ112が特定の命令によって使用中であることを示すようにセットされ得る。たとえば、第1のフィールド114の第1のスロット260は、変換エントリ112が第1の命令203によって使用中であるかどうかを示し、第1のフィールド114の第2のスロット262は、変換エントリ112がVLIWパケット201の第2の命令207によって使用中であるかどうかを示し得る。第1のスロット260および第2のスロット262の一方が、変換エントリ112が使用中であることを示す場合、変換エントリ112は、第1の命令203、第2の命令207、または両方が実行を完了するまで、第1のTLB108中で不変のままでよい。たとえば、第1のフィールド114のスロットの少なくとも1つが、変換エントリ112が使用中であることを示す場合、変換エントリ112は、更新する(たとえば、別の変換索引バッファと同期する)ことができない。
【００２１】
変換エントリ112は、たとえば、特定の命令が実行を完了せず、したがってやり直されるとき、「使用され」続けてよい。この場合、命令に関連付けられたアドレスが第1のTLB108中の変換エントリに一致するかどうかの判断は、迂回してよい。たとえば、第1のフィールド114の第1のスロット260が、変換エントリ112が使用中であることを示すようにセットされているとき、比較回路要素240は、第1のアドレス205を変換エントリ112と比較するのを、252で防止され得る。この場合、第1のTLB108は、第1のフィールド114の第1のスロット260を表す符号化ベクトルを250で使って、第1のアドレス205を変換アドレス242に変換することができる。第1のアドレス205と第1のTLB108中のエントリとの比較を迂回し、代わりに第1のフィールド114を表すベクトルに依拠することによって、第1のTLB108によるアドレスの変換は、より速く、より少ない電力消費で実施することができる。図3は、比較回路要素240の特定の実施形態を含み、比較回路要素240が、メモリアドレスが第1のTLB108内のエントリに一致するかどうか判断し、または判断するのを防止され得る条件についてさらに説明する。
【００２２】
図3を参照すると、第1のフィールドおよび第2のフィールドに基づいてアドレスの変換を実施する第1の変換索引バッファ(TLB)108の特定の実施形態が示されている。第1のTLB108は、複数のスレッドに対応するエントリを含み得る。たとえば、第1のTLB108は、第1のスレッドに関連付けられた第1のエントリ302および第2のエントリ306と、第2のスレッドに関連付けられた第1のエントリ304および第2のエントリ308とを含む。各エントリ302、304、306、308は、第2のフィールド、複数の第1のフィールド、およびメモリアドレスを変換するのに使われる他の情報を含み得る。
【００２３】
第1のTLB108は、変換エントリに基づいてメモリアドレスの変換を実施する回路要素を含む。たとえば、第1のTLB108は、第1のTLB108内のエントリの仮想ページ番号(VPN、マスク、フィールド1、フィールド2)を出力するように構成された第1のマルチプレクサ357および第3のマルチプレクサ359を含む。第1のTLB108は、比較回路要素(たとえば、図2の比較回路要素240)も含む。特定の実施形態では、比較回路要素は、第1の比較器365、第2の比較器366、第3の比較器367、および第4の比較器368を含み得る。比較器365〜368は、第1のTLB108中のエントリのVPNを、超長命令語(VLIW)パケット201のアドレスと比較するように構成され得る。第1のTLB108は、VLIWパケット201の特定のアドレスが第1のTLB108のエントリのVPNに一致するとき、物理ページ番号(PPN、R、W、U、キャッシュ属性)を選択し出力するように構成された第2のマルチプレクサ358、第4のマルチプレクサ360、第5のマルチプレクサ361、第6のマルチプレクサ362、第7のマルチプレクサ363、および第8のマルチプレクサ364をさらに含む。
【００２４】
図2で論じたように、第1のTLB108のエントリは、VLIWパケット201の第1の「スロット」中の第1の命令203およびVLIWパケット201の第2の「スロット」中の第2の命令207など、VLIWパケット201中の複数の命令に対応し得る。エントリの第1のスロットの第1のフィールド(すなわち、「スロット1フィールド1」)は、特定のエントリが第1のメモリ命令203によって使用中であるかどうかを示し、特定のエントリの第2のスロットの第1のフィールド(すなわち、「スロット2フィールド1」)は、どこでエントリがVLIWパケット201の第2のメモリ命令207によって使用中であるかを示し得る。
【００２５】
第1のTLB108の各エントリは、第2のフィールド(たとえば、図1の第2のフィールド116)も含み得る。第2のフィールドは、特定のエントリが、別のTLB中の対応するエントリに一致するかどうかを示し得る。たとえば、第1のTLB108のエントリは、ジョイントTLB(たとえば、図1の第2のTLB106)のエントリに対応し得る。この場合、ジョイントTLBの特定のエントリが更新または削除されると、第2のフィールドは、第1のTLB108中の対応するエントリが、ジョイントTLB中の対応するエントリに一致するかどうかを示すようにセットまたはクリアされ得る。たとえば、特定のエントリ用の第2のフィールドがセットされているとき、第1のTLB108中のエントリは、対応するジョイントTLBエントリに一致し得る。あるいは、特定のエントリ用の第2のフィールドがクリアされると、ジョイントTLBエントリは変化している可能性があり、したがって、第1のTLB108中のエントリに一致しない。第2のフィールドがクリアであるという判断に応答して、プロセッサ(たとえば、図1のプロセッサ102)は、第1のTLB108中の特定のエントリを、対応するジョイントTLBエントリに一致するように選択的に同期させ得る。
【００２６】
第1のTLB108の各エントリは、仮想ページ番号(VPN)、マスク、キャッシュ可能属性、物理ページ番号(PPN)、および1つまたは複数の許可を含み得る。VPNは、プログラム中のメモリ命令によって使われるアドレスでよい。マスクは、VPNとともに、VPNに対応するメモリ中のPPNを判断するのに使われ得る。キャッシュ可能属性は、特定のエントリがキャッシュされ得るかどうかを示し得る。許可は、読込み許可インジケータ、書込み許可インジケータ、およびユーザ許可インジケータを含むことができ、これらはそれぞれ、特定のエントリが、読み込み、または書き込むのに使われ得るかどうか、およびエントリに関連付けられた特定のユーザが、エントリを使う許可を受けているかどうかを示す。TLB中のエントリは、第2のTLBのインデックス番号も含み得る。インデックス番号は、図1の第2のTLB106など、別のTLB中の対応するエントリを示し得る。この場合、第2のTLB106中の対応するエントリが更新されると、対応するエントリのインデックス番号は、同期のために第1のTLB108中のエントリを識別するのに使われ得る。
【００２７】
第1のスレッドの第1のエントリ302は、第2のフィールド310、第1のスロットの第1のフィールド311、第2のスロットの第1のフィールド312、VPN314、マスク316、キャッシュ可能属性318、PPN319、読込み許可インジケータ320、書込み許可インジケータ321、ユーザ許可インジケータ322、および第2のTLBからのエントリのインデックス番号323などの変形情報を含み得る。第1のTLB108は、第1のスレッドに対応する第2のエントリ(「T1E2」306)も含み得る。この場合、第1のスレッドに関連付けられた第2のエントリ306は、変換情報335〜345を含み得る。別の例として、第2のスレッドは、変換情報324〜334を含む第1のエントリ(「T2E1」304)および変換情報346〜356を含む第2のエントリ(「T2E2」308)に関連付けられ得る。
【００２８】
比較器365〜368は、スレッド選択シグナル383に基づいて、第1のTLB108中のエントリのVPNを出力するように構成され得る。スレッド選択シグナル383は、特定のスレッドがプロセッサ(たとえば、図1のプロセッサ102)によって現在選択されているかどうかを示し得る。たとえば、スレッド選択シグナル383が、第1のスレッドがプロセッサによって実行中であることを示すとき、第1のマルチプレクサ357の出力387は、第1のスレッドの第1のエントリ302のVPN314でよく、第3のマルチプレクサ359の出力388は、第1のスレッドの第2のエントリ306のVPN338でよい。代替的に、スレッド選択シグナル383が、第2のスレッドがプロセッサによって実行中であることを示すとき、第1のマルチプレクサ357の出力387は、第2のスレッドの第1のエントリ304のVPN327でよく、第3のマルチプレクサ359の出力388は、第2のスレッドの第2のエントリ308のVPN349でよい。第1のマルチプレクサ357の出力387は、第1の比較器365および第3の比較器367に送信され得る。第3のマルチプレクサ359の出力388は、第2の比較器366および第4の比較器368に送信され得る。
【００２９】
各比較器365〜368は、エントリを、VLIWパケット201のアドレスの特定のスロットと比較するように構成され得る。たとえば、第1の比較器365は、第1のTLB108の第1のエントリのアドレス(たとえば、VPN327、314)を、VLIWパケット201の第2のメモリ命令207の第2のアドレス209と比較することができる。第2の比較器366は、第1のTLB108の第2のエントリのアドレス(たとえば、VPN338、349)を、VLIWパケット201の第2のメモリ命令207の第2のアドレス209と比較することができる。第3の比較器367は、第1のTLB108の第1のエントリのアドレス(たとえば、VPN327、314)を、VLIWパケット201の第1のメモリ命令203の第1のアドレス205と比較することができる。第4の比較器368は、第1のTLB108の第2のエントリのアドレス(たとえば、VPN338、349)を、VLIWパケット201の第1のメモリ命令203の第1のアドレス205と比較することができる。
【００３０】
特定の比較器において一致を検出したことに応答して、比較器の出力が一致を示し得る。たとえば、第1のマルチプレクサ357の出力387がVLIWパケット201の第2のアドレス209に一致すると第1の比較器365が判断すると、第1の比較器365の出力391は論理1になり得る。この場合、第2の比較器366は、第3のマルチプレクサ359の出力388が第2のアドレス209に一致しないので、第2の比較器366の出力392は論理0であり得ると判断し得る。別の例として、第1のマルチプレクサ357の出力387がVLIWパケット201の第1のアドレス205に一致すると第3の比較器367が判断すると、第3の比較器367の出力393は論理1になり得る。この場合、第4の比較器368は、第3のマルチプレクサ359の出力388が第1のアドレス205に一致しないので、第4の比較器368の出力394は論理0であり得ると判断し得る。
【００３１】
第5のマルチプレクサ361は、第1のスロットインジケータ386に基づいて、第1のTLB108中のどのエントリが第1のアドレス205に一致するかを示す出力395を生成するように構成され得る。出力395は2ビットでよく、ここで第1のビットは、第1のエントリが選択されているかどうかを示し、第2のビットは、第2のエントリが選択されているかどうかを示す。第1のスロットインジケータ386は、2ビットを含み得る。図3に示す実施形態において、第1のスロットインジケータ386の第1のビットは、第1のエントリ(たとえば、302、304)中の第1のスロットの第1のフィールド(たとえば、311、325)に対応し、第1のスロットインジケータ386の第2のビットは、第2のエントリ(たとえば、306、308)中の第1のスロットの第1のフィールド(たとえば、336、347)に対応し得る。第1のビットは、第5のマルチプレクサ361に、第1のエントリ(たとえば、302、304)の第1のスロットが使用中であるときは論理1の値を選択させ、第1のエントリ(たとえば、302、304)の第1のスロットが使用中でないときは出力393を選択させ得る。第2のビットは、第5のマルチプレクサ361に、第2のエントリ(たとえば、306、308)の第1のスロットが使用中であるときは論理1の値を選択させ、第2のエントリ(たとえば、306、308)の第1のスロットが使用中でないときは出力394を選択させ得る。
【００３２】
同様に、出力391および出力392は、2ビット復号化選択を形成する。たとえば、出力391が論理0であり出力392が論理1であるとき、第2のエントリ(306、308)が第8のマルチプレクサ364において選択され得る。代替的に、出力391が論理1であり出力392が論理0であるとき、第1のエントリ(302、304)が第8のマルチプレクサ364において選択され得る。どちらの比較器365、366も第2のアドレス209を第1のエントリまたは第2のエントリ中のVPNに一致させない場合、出力391、392の2ビット復号化選択は「00」でよく、第1のTLB108に、別のTLB(たとえば、第2のTLB106)から変換を取り出すことを要求させ得る。出力391、392の「11」という2ビット復号化選択の組合せは起こり得ない。
【００３３】
第6のマルチプレクサ362は、第2のスロットインジケータ385に基づいて、第1のTLB108中のどのエントリが第2のアドレス207に一致するかを示す2ビット出力396を生成するように構成され得る。出力396は2ビットでよく、ここで第1のビットは、第1のエントリが選択されているかどうかを示し、第2のビットは、第2のエントリが選択されているかどうかを示す。第1のスロットインジケータ386は、第1のエントリ(たとえば、302、304)中の第2のスロットの第1のフィールド(たとえば、312、326)に対応する第1のビットと、第2のエントリ(たとえば、306、308)中の第1のスロットの第1のフィールド(たとえば、336、347)に対応する第2のビットとを含み得る。第1のビットは、第5のマルチプレクサ361に、第1のエントリ(たとえば、302、304)の第1のスロットが使用中であるときは論理1の値を選択させ、第1のエントリ(たとえば、302、304)の第1のスロットが使用中でないときは出力393を選択させ得る。第2のビットは、第5のマルチプレクサ361に、第2のエントリ(たとえば、306、308)の第1のスロットが使用中であるときは論理1の値を選択させ、第2のエントリ(たとえば、306、308)の第1のスロットが使用中でないときは出力394を選択させ得る。
【００３４】
同様に、出力393および出力394は、2ビット復号化選択を形成する。たとえば、出力393が論理0であり出力394が論理1であるとき、第2のエントリ(306、308)が第7のマルチプレクサ363において選択され得る。代替的に、出力393が論理1であり出力394が論理0であるとき、第1のエントリ(302、304)が第7のマルチプレクサ363において選択され得る。どちらの比較器367、368も第1のアドレス205を第1のエントリまたは第2のエントリ中のVPNに一致させない場合、出力393、394の2ビット復号化選択は「00」でよく、第1のTLB108に、別のTLB(たとえば、第2のTLB106)から変換を取り出すよう要求させ得る。出力393、394の「11」という2ビット復号化選択の組合せは起こり得ない。
【００３５】
あるいは、第1のスロットインジケータ386および第2のスロットインジケータ385は、符号化された形をして、エントリ302〜308の外に記憶されてよい。たとえば、第1のスロットインジケータ386の第1のビットは、第1のスロットが使用中である(すなわち、第1のスロットの第1のフィールド311、325、336、347の1つ)かどうかを示し、第1のスロットインジケータ386の第2のビットは、どのエントリ(たとえば、第1のエントリ(たとえば、302、304)または第2のエントリ(たとえば、306、308))が、使用中である第1のスロットを有するかを示し得る。第1のスロットインジケータ386の第1のビットが、第1のスロットが使用中であることを示し、第2のビットが、使用中である第1のスロットを第1のエントリ302が有することを示すとき、第5のマルチプレクサ361は、出力395の第1のビットとして、「1」という入力を選択すればよい。この場合、第1のスロットインジケータ386の第2のビットが、第1のエントリの第1のスロットが使用中であることを示すとき、出力395は、第1のエントリが使用中であることも第7のマルチプレクサ363に対して示し得る。代替的に、第1のスロットインジケータ386の第2のビットが、第2のエントリの第1のスロットが使用中であることを示すとき、出力395は、第2のエントリが使用中であることも第7のマルチプレクサ363に対して示し得る。たとえば、第5のマルチプレクサ361は、出力395の第2のビットとして、「1」という入力を選択すればよい。
【００３６】
第5のマルチプレクサ361の出力395は、第7のマルチプレクサ363への入力を選択するのに使うことができる。第7のマルチプレクサ363は、第2のマルチプレクサ358の出力389および第4のマルチプレクサ360の出力390を受け取るように構成され得る。第2のマルチプレクサ358の出力389は、特定のスレッドについての第1のエントリのPPN319、330であり得る。第4のマルチプレクサ360の出力390は、特定のスレッドについての第2のエントリのPPN341、352であり得る。たとえば、第5のマルチプレクサ361の出力395が、第1のスレッドの第1のエントリ302が選択されていることを示すとき、第7のマルチプレクサ363は、第1のスレッドの第1のエントリ302のPPN319を出力397として選択する。別の例として、第5のマルチプレクサ361の出力395が、第2のスレッドの第2のエントリ308が選択されていることを示すとき、第7のマルチプレクサ363は、第2のスレッドの第2のエントリ308のPPN352を選択する。第7のマルチプレクサ363は、選択されたPPNを、さらに処理するために(図1のプロセッサ102の)パイプラインへの出力397として送信するように構成され得る。
【００３７】
第6のマルチプレクサ362の出力396は、第8のマルチプレクサ364への入力を選択するのに使うことができる。第8のマルチプレクサ364は、第2のマルチプレクサ358の出力389および第4のマルチプレクサ360の出力390を受け取るように構成され得る。たとえば、第6のマルチプレクサ362の出力396が、第1のスレッドの第1のエントリ302が選択されていることを示すとき、第8のマルチプレクサ364は、第1のスレッドの第1のエントリ302のPPN319を出力398として選択する。別の例として、第6のマルチプレクサ362の出力396が、第2のスレッドの第2のエントリ308が選択されていることを示すとき、第8のマルチプレクサ364は、第2のスレッドの第2のエントリ308のPPN352を選択する。第8のマルチプレクサ364は、選択されたPPNを、さらに処理するためにパイプラインへの出力398として送信するように構成され得る。
【００３８】
図1で説明したように、第1のTLB108は、特定のエントリを、第1のTLB108の第1のフィールドおよび第2のフィールドに基づいて、別のTLB(たとえば、第2のTLB106)の対応するエントリと同期させるように構成され得る。第1のTLB108は、第1のスロットの第1のフィールド311、325、336、347を、それぞれ、入力374、375、376、378に応答してセットし、クリアするように構成され得る。たとえば、第1のエントリ302の第1のスロットの第1のフィールド311は、入力374において高論理シグナルによってセットすることができる。第1のTLB108は、第2のスロットの第1のフィールド312、326、337、348を、それぞれ、入力379〜382に応答してセットし、クリアするように構成され得る。たとえば、第1のエントリ302の第2のスロットの第1のフィールド312は、入力379において高論理シグナルによってセットすることができる。
【００３９】
第1のTLB108は、第2のフィールド310、324、335、346を、それぞれ、入力370〜373に応答してセットし、クリアするように構成され得る。たとえば、対応するエントリ110が第1のエントリ302にコピーされると、第1のTLB108は、入力370において高論理シグナルを適用することによって、第2のフィールド310をセットするように構成され得る。別の例として、第1のエントリ302に対応する第2のTLB106中のエントリ110が変更されると、第2のフィールド310は、入力370において低論理シグナルによってクリアされ得る。
【００４０】
動作中に、特定のスレッドが第1のメモリ命令203の実行を始めると、第1のTLB108は、第1のメモリ命令203に関連付けられた第1のアドレス205の変換が、第1のTLB108のエントリに含まれるかどうか判断することができる。第1のTLB108は、第1のアドレス205をエントリのVPNと比較することによって、判断を実施する。第1のTLB108が、エントリが変換を含まないと判断した場合、変換は、図1の第2のTLB106またはメモリ104から取り出され、第1のTLB108のエントリの1つにロードされ得る。たとえば、図1で説明したように、対応するエントリ110は、第2のTLB106から第1のTLB108中の変換エントリ112にコピーされ得る。
【００４１】
比較器367〜368が、エントリのVPNと第1のメモリアドレス205との間の一致を検出すると、図1のプロセッサ102は、特定のエントリについての第1のスロットの対応する第1のフィールドをセットし得る。たとえば、第1のエントリのVPN314が第1のメモリアドレス205に一致するとき、図1のプロセッサ102は、第1のエントリ302の第1のスロットの第1のフィールド311をセットする。図1のプロセッサ102は、第2のフィールド310も、第2のTLB106の特定の対応するエントリに一致する変換情報を第1のエントリ302が含むことを示すようにセットすることができる。
【００４２】
比較器367〜368の出力393〜394は、第1のメモリアドレス205の変換を実施するのに使うことができる。たとえば、出力393〜394が、VPN314が第1のメモリアドレス205に一致することを示すとき、PPN319は、第7のマルチプレクサ363によって図1のプロセッサ102に出力され得る。この場合、プロセッサ102は、PPN319を使って、メモリ104のアドレス(たとえば、第2のアドレス142)にアクセスすることができる。
【００４３】
第1のメモリ命令203が実行の完了に失敗した場合、第1のメモリ命令203のやり直し中に、第1のTLB108は、第1のメモリアドレス205の変換を再度実施すればよい。この場合、第1のTLB108は、変換情報を含むエントリがすでに識別されていると判断し得る。したがって、第1のメモリアドレス205と第1のTLB108のVPNとの比較はスキップしてよい。たとえば、第1のTLB108は、第1のエントリ302の第1のスロットの第1のフィールド311がセットされているとき、第1のメモリアドレス205と、第1のTLB108中のアドレスとの比較を防ぐことができる。
【００４４】
比較を防ぐことは、VPNの読出しを防ぐことによって、第1のメモリアドレス205が第1のTLB108のVPNと比較されるのを防ぐことができる。たとえば、第1のマルチプレクサ357(たとえば、出力回路)は、第1のフィールドがセットされたことに応答して、仮想アドレス(たとえば、VPN)の読込みを抑制するように構成され得る。この場合、第1のTLB108は、第1のメモリアドレス205とエントリのVPNとの比較を実施するのに使われる比較器367〜368をオフにすることができる。変換を実施する(すなわち、特定のPPNを生成する)ために、第1のTLB108は、第1のスロットインジケータ386を使えばよい。たとえば、第1のスロットインジケータ386は、第1のメモリアドレス205の変換である特定のPPNをどのエントリが含むかを示し得る。この場合、特定のPPNは、図1の第2のTLB106またはメモリ104中の変換の比較もルックアップも実施せずに、生成され、プロセッサ102に与えられ得る。
【００４５】
メモリアドレスを、TLBのエントリ内のアドレスと比較することによる変換の実施は、スロットインジケータ385〜386を使う変換よりも、実施するのに多くの電力を使い、長い時間がかかる場合がある。したがって、プロセッサ102は、第1のフィールドおよび第2のフィールドに基づいて第1のTLB108を管理してメモリ命令実行中のアドレス比較を選択的にスキップすることによって、電力消費を削減することができる。
【００４６】
メモリ命令203の実行中に、第2のTLB106中の対応するエントリが更新され、または変更された場合、この変更の指示は、第1のTLB108に与えられ得る。この場合、第1のTLB108は、更新された第2のTLBエントリに対応するエントリを識別することができる。たとえば、第1のTLB108は、第1のエントリ302を、第2のTLB中の対応するエントリにマップするインデックス番号323を使って、第2のTLB106中の変更済みのエントリに第1のエントリ302が対応すると判断することができる。この場合、図1のプロセッサ102は、第1のエントリ302の第2のフィールド310をクリアすればよい。
【００４７】
第1のTLB108は、第1のエントリ302を、第1のフィールド311、312および第2のフィールド310に基づいて、第2のTLB106中の更新された対応するエントリに一致するように同期させればよい。たとえば、第1のフィールド311、312のいずれかがセットされている場合、第1のTLB108は、エントリ302が第2のTLB106中の対応するエントリに一致しないことを第2のフィールド310が示していても、第1のエントリ302を変更することはできない。したがって、VLIWパケット201の両方のメモリ命令203、207が実行を完了するまで、第1のTLB108中の特定のエントリは更新され、削除され、または他のやり方で変更されない。
【００４８】
両方のメモリ命令203、207が実行を完了した後にのみ特定の変換エントリへの変更を実施するように第1のTLB108を構成することによって、プロセッサ102は、実行を一緒に完了しなければならない(たとえば、両方の命令が実行を完了しなければならず、または両方が実行を失敗しなければならない)命令(たとえば、第1のメモリ命令203、第2のメモリ命令207)を含むVLIWパケット201を受け取ることができる。たとえば、図1のプロセッサ102は、第1のメモリ命令および第2のメモリ命令の一方が実行を完了しないとき、第1のメモリ命令および第2のメモリ命令の他方が実行を完了するのを防ぐことができる。第1のメモリ命令203および第2のメモリ命令207は、アーキテクチャ上に不可分(architecturally atomic)でよい。この場合、第1のTLB108は、両方の命令が実行を完了するまではエントリを更新することができないので、命令によって使われている特定のTLBエントリは、他の命令が実行を完了するまでは変化しない。したがって、プロセッサ102は、メモリ命令118の実行中にミスTLBエントリエラーを受け取るのを避けることができる。
【００４９】
図4を参照すると、変換索引バッファ(TLB)を管理する特定の方法400が示されている。方法400は、ブロック402で、メモリ命令の実行の開始に応答して、第1のTLBのエントリに関連付けられた第1のフィールドを、エントリの使用を示すようにセットすること、および第2のフィールドを、第1のTLB中のエントリが第2のTLB中の対応するエントリに一致することを示すようにセットすることを含む。たとえば、メモリ命令118の実行の開始に応答して、図1のプロセッサ102は、第1のTLB108の変換エントリ112に関連付けられた第1のフィールド114を、変換エントリ112の使用を示すようにセットし、第2のフィールド116を、第1のTLB108の変換エントリ112が第2のTLB106中の対応する変換エントリ110に一致することを示すようにセットする。
【００５０】
方法400は、ブロック404で、第1のTLB中のエントリが、第2のTLB中の対応するエントリに一致しないことを示すように、第2のフィールドをクリアすることも含む。たとえば、図1では、対応するエントリ110が更新され、または変更された場合、プロセッサ102は、第1のTLB108に変更を知らせることができる。この場合、図1のプロセッサ102は、変換エントリ112が第2のTLB106中の対応するエントリ110に一致しないことを示すように、変換エントリ112の第2のフィールド116をクリアするように構成され得る。方法400は、ブロック406で、メモリ命令の実行を開始した後、第2のフィールドがクリアされているとき、第1のTLB中のエントリを使って変換を実施することを含む。たとえば、図1では、エントリ112、110が一致しないことを示すように第2のフィールド116がクリアされているとき、第1のTLB108は、変換エントリ112を使って、メモリ命令118の第1のアドレス140の変換を実施し続けることができる。
【００５１】
方法400は、ブロック408で、第1のフィールドがセットされている間、第1のTLB中のエントリが、第2のTLB中の対応するエントリに一致するように同期されるのを防ぐことも含む。たとえば、図1のプロセッサ102は、第1のフィールド114がセットされている間、第1のTLB108の変換エントリ112が、第2のTLB106中の対応するエントリ110に一致するように同期されるのを防ぐ。同期を防ぐことにより、第1のTLBは、メモリ命令118の実行を通して変換エントリ112を使い続けることが可能になる。
【００５２】
方法400は、ブロック410で、割込みの受取り、メモリ命令の実行の完了、およびメモリ命令の破棄の少なくとも1つに応答して、第1のフィールドをクリアすることも含む。たとえば、図1のプロセッサ102は、割込み160の受取、メモリ命令118の実行の完了、およびメモリ命令118の破棄の少なくとも1つに応答して、第1のフィールド114をクリアすることができる。
【００５３】
方法400は、ブロック412で、第1のフィールドがクリアされており第2のフィールドがクリアされているとき、第1のTLB中のエントリを、第2のTLB中の対応するエントリに一致するように同期させることをさらに含む。たとえば、図1のプロセッサ102は、第1のフィールド114がクリアされており第2のフィールド116がクリアされているとき、第1のTLB108の変換エントリ112を、第2のTLB106中の対応するエントリ110に一致するように同期させる。第1のフィールド114がクリアされているとき、メモリ命令はもはや変換エントリ112を使っていない。この場合、変換エントリ112は、メモリ命令118が実行を完了した後に同期される。
【００５４】
メモリ命令118が実行を完了するまで変換エントリ112を同期させるのを待つことによって、メモリ命令118の実行の間、変換エントリ112中の同じ変換情報がプロセッサ102にとって利用可能である。したがって、プロセッサ102は、メモリ命令118の実行中にミスTLBエントリエラーを受け取るのを避けることができる。
【００５５】
図5を参照すると、変換索引バッファを管理する特定の方法500が示されている。方法500は、ブロック502で、メモリ命令の実行の開始に応答して、第1のTLBのエントリに関連付けられた第1のフィールドを、エントリの使用を示すようにセットすること、および第2のフィールドを、第1のTLB中のエントリが第2のTLB中の対応するエントリに一致することを示すようにセットすることを含む。第1のフィールドは、第1のTLB中のエントリに関連付けられた複数の第1のフィールドを含み得る。複数の第1のフィールドの各第1のフィールドは、超長命令語(VLIW)パケットの特定のスロットがエントリを使っているかどうかを示し得る。たとえば、図2では、第1のフィールド114の第1のスロット260は、VLIWパケット201の第1の命令203が変換エントリ112を使っていることを示すようにセットすることができ、第1のフィールド114の第2のスロット262は、VLIWパケット201の第2の命令207が変換エントリ112を使っていることを示すようにセットすることができる。
【００５６】
方法500は、ブロック504で、第1のフィールドがセットされているとき、メモリ命令がやり直されると、メモリ命令アドレスと第1のTLBのエントリとの比較を防ぐことも含む。比較を防ぐことは、仮想アドレスからの仮想アドレスの読出しを防ぐことによって、メモリ命令アドレスと、第1のTLB内の仮想アドレスとの比較を防ぐことを含み得る。方法500は、第1のメモリ命令および第2のメモリ命令の一方が実行を完了しないとき、第1のメモリ命令および第2のメモリ命令の他方が、実行を完了するのを防ぐことも含み得る。たとえば、図2では、第1のフィールド114の第1のスロット260がセットされているとき、図1のプロセッサ102は、252で、図2の比較回路要素240が、第1のアドレス203を変換エントリ112と比較するのを防ぐことができる。
【００５７】
方法500は、ブロック506で、少なくとも第1のフィールドの値を表す符号化ベクトルを使ってメモリ命令アドレスを変換することを含む。たとえば、図2では、変換エントリ112が使用中であるとき、第1のTLB108は、250で、第1のフィールド114を表す符号化ベクトルを使って、第1のアドレス140を変換することができる。
【００５８】
メモリアドレスを、TLBのエントリ内のアドレスと比較することによる変換の実施は、スロットインジケータ285〜286を使う変換よりも、実施するのに多くの電力を使い、長い時間がかかる場合がある。したがって、プロセッサ102は、第1のフィールドおよび第2のフィールドに基づいて第1のTLB108を管理してメモリ命令実行中のアドレス比較をスキップすることによって、電力消費を削減することができる。
【００５９】
図6は、第1のフィールドおよび第2のフィールドを有する変換索引バッファ(TLB)108を含むワイヤレス通信デバイス600の実施形態のブロック図である。第1のフィールドは、TLB108中のエントリが使用中であるかどうかを示すことができ、第2のフィールドは、TLB108中のエントリが別のTLB(たとえば、図1の第2のTLB106)中の対応するエントリに一致するかどうか示すことができる。ワイヤレス通信デバイス600は、メモリ632に結合された、デジタルシグナルプロセッサ(DSP)のようなプロセッサ610を含む、携帯式のワイヤレス電子デバイスとして、実装され得る。
【００６０】
ある特定の実施形態では、ディスプレイコントローラ626が、プロセッサ610およびディスプレイデバイス628に結合される。コーダ/デコーダ(コーデック)634も、プロセッサ610に結合され得る。スピーカー636およびマイクロフォン638がコーデック634に結合され得る。ワイヤレスコントローラ640が、プロセッサ610およびワイヤレスアンテナ642に結合され得る。
【００６１】
ある特定の実施形態では、デジタルシグナルプロセッサ610、ディスプレイコントローラ626、メモリ632、コーデック634、およびワイヤレスコントローラ640は、システムインパッケージデバイスまたはシステムオンチップデバイス622に含まれる。特定の一実施形態では、入力デバイス630および電源644が、システムオンチップデバイス622に結合される。さらに、ある特定の実施形態では、図6に示されるように、ディスプレイデバイス628、入力デバイス630、スピーカー636、マイクロフォン638、ワイヤレスアンテナ642、および電源644は、システムオンチップデバイス622の外部にある。しかしながら、ディスプレイデバイス628、入力デバイス630、スピーカー636、マイクロフォン638、ワイヤレスアンテナ642、および電源644の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス622のコンポーネントに結合され得る。
【００６２】
前述の開示されたデバイスおよび機能は、コンピュータ可読媒体に記憶されるコンピュータファイル(たとえば、RTL、GDSII、GERBERなど)になるように、設計かつ構成され得る。そのようなファイルの一部またはすべてが、そのようなファイルに基づいてデバイスを製造する製造担当者に与えられ得る。得られる製品は半導体ウエハを含み、このようなウエハは次いで、半導体ダイに切り分けられ、半導体チップとしてパッケージングされる。そして、このチップが、上で説明されたデバイスで利用される。
【００６３】
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。様々な例示的なコンポーネント、ブロック、構成、モジュール、回路、およびステップが、全般にそれらの機能に関して、上で説明されてきた。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００６４】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末の中に、個別部品として存在し得る。
【００６５】
開示される実施形態の上記の説明は、当業者が、開示された実施形態を実現または利用するのを可能にするようになされている。これらの実施形態への様々な修正が、当業者には容易に明らかであり、本明細書で定義される原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書で示される実施形態に限定されることは意図されず、以下の特許請求の範囲で定義されるような原理および新規の特徴と矛盾しない、可能な最大の範囲を認められるべきである。
【符号の説明】
【００６６】
100  システム
102  プロセッサ
104  メモリ
106  第2のTLB
108  第1の変換索引バッファ(TLB)
110  変換エントリ
112  変換エントリ
114  第1のフィールド
116  第2のフィールド
118  メモリ命令
140  第1のアドレス
142  第2のアドレス
160  割込み
200  システム
201  超長命令語(VLIW)パケット
203  第1の命令
205  第1のアドレス
207  第2の命令
209  第2のアドレス
240  比較回路要素
242  変換アドレス
260  第1のスロット
262  第2のスロット
302  第1のエントリ、エントリ
304  第1のエントリ、エントリ、T2E1
306  第2のエントリ、エントリ、T1E2
308  第2のエントリ、エントリ、T2E2
310  第2のフィールド
311  第1のスロットの第1のフィールド
312  第2のスロットの第1のフィールド
314  VPN
316  マスク
318  キャッシュ可能属性
319  PPN
320  読込み許可インジケータ
321  書込み許可インジケータ
322  ユーザ許可インジケータ
323  インデックス番号
324  第2のフィールド
327  VPN
335  第2のフィールド
338  VPN
346  第2のフィールド
349  VPN
357  第1のマルチプレクサ
358  第2のマルチプレクサ
359  第3のマルチプレクサ
360  第4のマルチプレクサ
361  第5のマルチプレクサ
362  第6のマルチプレクサ
363  第7のマルチプレクサ
364  第8のマルチプレクサ
365  第1の比較器、比較器
366  第2の比較器、比較器
367  第3の比較器、比較器
368  第4の比較器、比較器
383  スレッド選択シグナル
385  第2のスロットインジケータ
386  第1のスロットインジケータ
600  ワイヤレス通信デバイス
610  プロセッサ、デジタルシグナルプロセッサ
622  システムインパッケージデバイス、システムオンチップデバイス
626  ディスプレイコントローラ
628  ディスプレイデバイス
630  入力デバイス
632  メモリ
634  コーダ/デコーダ(コーデック)
636  スピーカー
638  マイクロフォン
640  ワイヤレスコントローラ
642  ワイヤレスアンテナ
644  電源
【図１】
0005592009.tif 000002
【図２】
0005592009.tif 000003
【図３】
0005592009.tif 000004
【図４】
0005592009.tif 000005
【図５】
0005592009.tif 000006
【図６】
0005592009.tif 000007