(57)【要約】ソフトウェアプログラムの観点から、あたかも物理タグ付き命令キャッシュのように動作する、仮想タグ付き命令キャッシュを有する命令キャッシュシステムが開示される。この命令キャッシュシステムはまた、アドレス変換無効化命令に応答するアドレス変換のための手段、および制御論理回路を含む。この制御論理回路は、アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化するように構成されている。
2009534755.tif 000002
【特許請求の範囲】
【請求項１】
仮想タグ付き命令キャッシュと、
アドレス変換無効化命令に応答するアドレス変換のための手段と、
前記アドレス変換無効化命令に応答して、前記仮想タグ付き命令キャッシュの中のエントリを無効化するように構成された制御論理回路と、
を備える命令キャッシュシステム。
【請求項２】
前記アドレス変換のための手段は変換ルックアサイドバッファ（ＴＬＢ）である、請求項１に記載の命令キャッシュシステム。
【請求項３】
前記制御論理回路は、前記アドレス変換無効化命令に応答して前記仮想タグ付き命令キャッシュをフラッシュ無効化するように構成されている、請求項１に記載の命令キャッシュシステム。
【請求項４】
前記制御論理回路は、前記アドレス変換無効化命令によって指定されたアプリケーションサービス識別子（ＡＳＩＤ）に対応する前記仮想タグ付き命令キャッシュの中の１つまたは複数のエントリを無効化するように構成されている、請求項１に記載の命令キャッシュシステム。
【請求項５】
前記制御論理回路は、前記アドレス変換無効化命令の中で指定されたインデックスに対応する前記仮想タグ付き命令キャッシュの中の選択的なエントリのセットを無効化するように構成されている、請求項１に記載の命令キャッシュシステム。
【請求項６】
前記制御論理回路は、状態を変更する前記アドレス変換のための手段に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化するように構成されている、請求項１に記載の命令キャッシュシステム。
【請求項７】
前記制御論理回路は、イネーブルメント信号を受信するための入力を備え、前記制御論理回路は、前記イネーブルメント信号を受信した後、前記アドレス変換無効化命令に応答して、前記仮想タグ付き命令キャッシュの中の前記エントリを単に無効化するように構成されている、請求項１に記載の命令キャッシュシステム。
【請求項８】
前記制御論理回路は、特定の物理アドレスの無効化を指定する命令キャッシュ無効化命令に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化するように構成されている、請求項１に記載の命令キャッシュシステム。
【請求項９】
前記インデックスは、変換されたビット位置と変換されていないビット位置とを備え、
前記変換されたビット位置の値の各々の組み合わせは、前記仮想タグ付き命令キャッシュの中でしきい値を定義し、
前記制御論理回路は、前記定義されたしきい値からのオフセットでエントリを選択的に無効化するようにさらに構成されており、前記オフセットは、前記変換されていないビット位置の値によって指定される、
請求項５に記載の命令キャッシュシステム。
【請求項１０】
プロセッサの中に配置される、請求項１に記載の命令キャッシュシステム。
【請求項１１】
ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュがあたかも物理タグ付き命令キャッシュのように動作するための方法であって、
アドレス変換無効化命令を受信することと、
前記アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化することと、
を備える方法。
【請求項１２】
前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
前記仮想タグ付き命令キャッシュをフラッシュ無効化すること、
をさらに備える、
請求項１１に記載の方法。
【請求項１３】
前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
前記アドレス変換無効化命令によって指定されたアプリケーションサービス識別子（ＡＳＩＤ）に対応する１つまたは複数のエントリを無効化すること、
をさらに備える、
請求項１１に記載の方法。
【請求項１４】
前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
前記アドレス変換無効化命令によって指定されたアドレスに対応する選択的なエントリのセットを無効化すること、
をさらに備える、
請求項１１に記載の方法。
【請求項１５】
前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
状態を変更するアドレス変換のための手段に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化すること、
をさらに備える、
請求項１１に記載の方法。
【請求項１６】
前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
イネーブルメント信号を受信することと、
前記イネーブルメント信号を受信した後、前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することと、
をさらに備える、
請求項１１に記載の方法。
【請求項１７】
前記仮想タグ付き命令キャッシュの中の前記エントリを無効化することは、
特定の物理アドレスの無効化を指定する命令キャッシュ無効化命令を受信することと、
前記命令キャッシュ無効化命令に応答して、前記仮想タグ付き命令キャッシュをフラッシュ無効化することと、
をさらに備える、
請求項１１に記載の方法。
【請求項１８】
ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュにあたかも物理タグ付き命令キャッシュのように動作するように指示するための制御論理回路であって、
アドレス変換無効化命令を受信するための第１入力と、
前記アドレス変換無効化命令に応答して、前記仮想タグ付き命令キャッシュの中のエントリを無効化するために制御信号を生成するための手段と、
を備える制御論理回路。
【請求項１９】
命令キャッシュ無効化命令を受信するための第２手段、
をさらに備え、前記仮想タグ付き命令キャッシュの中のエントリを無効化するために制御信号を生成するための前記手段もまた、前記命令キャッシュ無効化命令に応答する、
請求項１８に記載の制御論理回路。
【請求項２０】
前記アドレス変換無効化命令に応答して前記仮想タグ付き命令キャッシュの中のエントリを無効化するために制御信号を生成するための前記手段をディスエーブルにするための第３入力、
をさらに備える請求項１９に記載の制御論理回路。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、それらの全体において参照により組み込まれている、２００６年４月１９日に出願された米国仮出願第６０／７９３，０１６号、および２００６年４月１９日に出願された米国仮出願第６０／７９３，０１５号の利益を主張する。
【分野】
【０００２】
本開示は一般に処理システムに関し、より詳細には、仮想タグ付き命令キャッシュシステム(virtually tagged instruction cache systems)に関する。
【背景】
【０００３】
一般的なプロセッサシステムは、１ページのデータまたは命令のアドレスを、その仮想ストレージアドレス(its virtual storage address)からその実際の物理ストレージアドレス(its real, physical storage address)に変更するために、プロセッサパイプライン(processor pipeline)でのアドレス変換(address translation)の概念を利用する。アドレス変換の手段の１つは、従来どおりに多くのエントリ(entries)を記憶する変換ルックアサイドバッファ(translation lookaside buffer)（ＴＬＢ）を利用し、この場合、各エントリはプロセス識別子(process identifier)（ＰＩＤ）とも呼ばれるアプリケーション空間識別子(application space identifier)（ＡＳＩＤ）、仮想アドレスタグ(virtual address tag)（ＶＴ）および物理ページ番号(physical page number)（ＰＮ）を含む。したがって、変換ルックアサイドバッファは仮想アドレス(virtual address)と物理アドレス(physical address)とのマッピング(mapping)を含む。最も簡単な形態では、プロセッサパイプラインは命令の仮想アドレスを入力として受信し、仮想アドレスの部分をＴＬＢの中のエントリと比較して合致するエントリを見つけ出し、その仮想アドレスの部分を合致するエントリに関連した物理ページ番号と置き換えて物理アドレスを形成する。所与の物理アドレスの仮想アドレスへのマッピングは、一般に仮想および物理アドレス空間の範囲をカバーし、この範囲は「ページ(page)」と呼ばれ、ページのサイズは一般に、複数のキャッシュラインすべてが仮想または物理アドレス空間の同じページに関連することができるように、命令キャッシュの中のキャッシュラインのサイズよりも大きい。
【０００４】
一般的なプロセッサシステムはまた、より遅いオフチップメモリから命令を取り出すこと(fetching)から生じる遅延を最小化するために、最近使用された命令を高速のオンチップメモリに記憶する１つまたは複数の命令キャッシュを含む。命令キャッシュは、エントリを効率的に探索するためにインデックス付けされてもよい。命令キャッシュと関連して使用されるような用語「インデックス付け(indexed)」は、セットアソシエイティブ命令キャッシュ(set-associative instruction cache)の中のセット(set)か、またはダイレクトマップ命令キャッシュ(directly mapped instruction cache)の中の行(row)かを指定する(specify)ために利用される、仮想アドレスまたは物理アドレスのいずれかにおけるビットのセット(a set of bits)のことを意味する。仮想アドレス内でビットによってインデックス付けされた命令キャッシュ(instruction cache indexed by bits within a virtual address)は、仮想インデックス付きキャッシュ(virtually indexed cache)として知られている。物理アドレス内でビットによってインデックス付けされた命令キャッシュ(instruction cache indexed by bits within a physical address)は、物理インデックス付きキャッシュ(physically indexed cache)として知られている。
【０００５】
命令キャッシュの中のエントリは、物理アドレスの一部か、または仮想アドレスの一部のいずれかと比較されるキーを用いてタグ付けされ(tagged with a key)てもよい。物理アドレスの一部でタグ付けされた命令キャッシュ(instruction cache tagged with a portion of a physical address)は、物理タグ付き命令キャッシュ(physically tagged instruction cache)と呼ばれる。仮想アドレスの一部でタグ付けされた命令キャッシュ(instruction cache tagged with a portion of a virtual address)は、仮想タグ付き命令キャッシュ(virtually tagged instruction cache)と呼ばれる。プロセッサ設計者は、どのようにして命令キャッシュがインデックス付けおよびタグ付けされるのかを選択する。従来の命令キャッシュは、仮想インデックス付き仮想タグ付き(virtually indexed virtually tagged)（ＶＩＶＴ）、仮想インデックス付き物理タグ付き(virtually indexed physically tagged)（ＶＩＰＴ）、または物理インデックス付き物理タグ付き(physically indexed physically tagged)（ＰＩＰＴ）のいずれかであってもよい。アドレス変換を通じて、仮想アドレスは、物理タグ付き命令キャッシュの中のエントリを探索するために、または命令キャッシュミスの場合には実メモリにアクセスするために利用されてもよい物理アドレスに変換される。
【０００６】
仮想アドレスタグに加えて、従来の仮想タグ付き命令キャッシュは一般にＡＳＩＤまたはＰＩＤタグを含む。このタグによって、プロセッサシステムは、アドレスエントリがアクティブのソフトウェアプロセスの間有効であるかどうかを識別することができる。例えば、プロセッサシステムがＡＳＩＤ「ｘ」を有するソフトウェアプロセスに関連した命令を実行する場合、成功のキャッシュの合致は、ＡＳＩＤタグと仮想アドレス命令タグとの両方を合致させることを必要とする。アクティブのＡＳＩＤのスワッピング、すなわち所与のＡＳＩＤ値を使用する１つのプロセスを、その同じＡＳＩＤ値を使用する新たなプロセスと置き換えることなどの様々なシナリオのために、仮想タグ付き命令キャッシュは古くなったか、またはもはや有効ではない１つまたは複数のエントリを有する場合がある。キャッシュヒットは、メモリから命令を取り出すことからプロセッサ時間を節約するので、プロセッサシステムの設計者は、キャッシュの内容が有効な、古くなっていない命令を反映しているキャッシュコヒーレンシを求める。キャッシュコヒーレンシを維持するために、キャッシュの中のエントリは一般に、ソフトウェアアプリケーションによって出される一般命令キャッシュ無効化命令に応答して無効にされる。ソフトウェアアプリケーションによって必要とされる命令キャッシュの管理量は、命令キャッシュが仮想タグ付きなのか、または物理タグ付きなのかによって決まる。１つまたは複数の仮想アドレスは所与の物理アドレスにマップする場合があるので、従来の仮想タグ付き命令キャッシュにはエイリアスおよびシノニムの問題が存在する場合がある。
【０００７】
エイリアス問題は、異なる仮想アドレス／ＡＳＩＤの組み合わせを含む２つ以上のＩキャッシュのエントリが同じ物理アドレスにマップする場合に生じる。これらの異なる組み合わせは、以下の３つの理由のうちの任意のものによって生じる場合がある。第１に、２つ以上のＩキャッシュエントリの仮想アドレスは、事実上異なっていても、同じソフトウェアプロセスの部分が同じＡＳＩＤフィールド値を有する場合がある。第２に、２つ以上のＩキャッシュエントリの仮想アドレスは、同じものであっても異なるソフトウェアプロセスに関連しており、したがって異なるＡＳＩＤフィールド値に関連している場合がある。第３に、２つ以上のＩキャッシュエントリの仮想アドレスはすべて異なり、異なるソフトウェアプロセスに関連しおり、したがって異なるＡＳＩＤ値に関連している場合がある。これらの３つの場合のうちの任意のもので、異なる組み合わせは同じ物理アドレスにマップすることができる。このエイリアス問題の結果として、従来の仮想タグ付き命令キャッシュは、物理タグ付き命令キャッシュによって必要とされるよりも多くのシナリオのせいで、Ｉキャッシュ無効化命令を出すためにソフトウェアアプリケーションに負担をかける。例えば、仮想タグ付き命令キャッシュに書き込まれたソフトウェアアプリケーションは、それ自体無効になったか、変更されている物理アドレスに関連している場合がある命令キャッシュの中で各仮想アドレスを無効化するために、命令キャッシュ無効化命令を出さなければならない。
【０００８】
シノニム問題は、Ｉキャッシュの異なる仮想インデックスに配置されているが、同じ物理アドレスに関連した２つ以上のＩキャッシュエントリを参照する。シノニム問題は、それらのＩキャッシュが仮想タグ付きか物理タグ付きかには関わらず、従来の仮想インデックス付きＩキャッシュの中で生じる場合がある。
【０００９】
仮想タグ付き命令キャッシュはまた、物理タグ付き命令キャッシュに関して、Ｉキャッシュエントリを無効化するために、ソフトウェアに別のさらなる負担をかける。特に、所与のＡＳＩＤと仮想アドレス空間のページとの組み合わせのためのマッピングが、１つの物理アドレスから別のものへ変更される場合、Ｉキャッシュが新しいマッピングに関連した新しい物理メモリ位置の内容ではなく、古いマッピングに関連した古い物理メモリ位置の内容をキャッシュしている場合があるので、そのＡＳＩＤと仮想アドレス空間のページとの組み合わせに関連した仮想タグ付きＩキャッシュの中のすべてのＩキャッシュエントリは、もはや有効ではない。このことは、たとえ根底にある古い物理メモリ位置および新しい物理メモリ位置の実際の内容が変わっていない場合であっても、当てはまる。したがって、仮想タグ付き命令キャッシュを管理するために書き込まれるソフトウェアは、マッピングが変更されたＡＳＩＤと仮想アドレス空間のページとの組み合わせに関連している可能性のあるすべての命令キャッシュエントリを無効化するために、命令キャッシュ無効オペレーションを実行しなければならない。
【００１０】
仮想タグ付き命令キャッシュを備えたプロセッサでは、アドレス変換は、仮想タグ付き命令キャッシュからの探索命令と並行してパイプラインで実行されてもよい。したがってこの並行性は、仮想タグ付き命令キャッシュが利用される場合に、有利な電力、周波数および命令スループットを提供する。したがって、エントリの管理に関して、従来の仮想タグ付き命令キャッシュによってソフトウェアアプリケーションに課されるさらなる負担を無くし、ソフトウェアアプリケーションにさらなる要件を課すことなく、従来の仮想タグ付き命令キャッシュの利点を達成する命令キャッシュシステムおよび方法が求められている。
【発明の開示】
【発明の概要】
【００１１】
本開示の１つの態様は、仮想タグ付き命令キャッシュ(virtually tagged instruction cache)と物理タグ付き命令キャッシュ(physically tagged instruction cache)との両方の利点を有する命令キャッシュシステムを認識する。本発明のこの態様は、ソフトウェアプログラムの観点から物理タグ付き命令キャッシュ(physically tagged instruction cache)として動作する、仮想タグ付き命令キャッシュ(virtually tagged instruction cache)を利用する。
【００１２】
本開示の別の態様は、仮想アドレスまたはその部分が、アドレス変換手段(address translation means)と仮想タグ付き命令キャッシュとの両方の中でタグ(tags)として利用されるということを認識する。この認識によって、アドレス変換手段に向けられる無効化命令(invalidate instructions)はさらに、仮想タグ付き命令キャッシュの中のエントリを無効化するために利用されることができる。
【００１３】
本開示の別の態様において、命令キャッシュシステムは、仮想タグ付き命令キャッシュと、アドレス変換のための手段と、制御論理回路とを含む。アドレス変換のための手段は、アドレス変換無効化命令に応答する(responsive)。制御論理回路は、アドレス変換無効化命令に応答して(in responsive to)仮想タグ付き命令キャッシュの中のエントリを無効化するように構成されている。
【００１４】
さらに別の態様においては、ソフトウェアプログラムの観点から仮想タグ付き命令キャッシュがあたかも物理タグ付き命令キャッシュのように動作するための方法(method for a virtually tagged instruction cache to operate as if it were a physically tagged instruction cache from a software program point of view is disclosed)が開示される。この方法は、アドレス変換無効化命令を受信することと、アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化することとを含む。
【００１５】
さらなる態様においては、仮想タグ付き命令キャッシュにあたかも物理タグ付き命令のように動作するように指示するための制御論理回路が、開示される。制御論理回路は、アドレス変換無効化命令を受信するための第１入力と、アドレス変換無効化命令に応答して、仮想タグ付き命令キャッシュの中のエントリを無効化する制御信号を生成するための手段とを含む。
【００１６】
本発明の様々な実施形態が例として示され、説明される以下の詳細な説明から、本発明の別の実施形態が当業者には容易に明らかになるであろうということが理解される。認識されるように、本発明は、すべて本発明から逸脱することなく、他の異なる実施形態が可能であり、また、そのいくつかの細部は様々な他の点で修正が可能である。したがって、図面および詳細な説明は、限定的なものとしてではなく、本質的に例としてみなされるべきである。
【詳細な説明】
【００１７】
添付の図面とともに以下で言及される詳細な説明は、本発明の様々な実施形態の説明として意図されてはおらず、また、本発明が実施されることができる唯一の実施形態を表すようには意図されてはいない。この詳細な説明は、本発明の完全な理解を提供する目的のために具体的な細目を含む。しかしながら、本発明がこれらの具体的な細目無しに実施されることができることは、当業者には明らかであろう。いくつかの例では、よく知られている構造およびコンポーネントは、本発明の概念を分かりにくくすることを避けるために、ブロック図の形態で示されている。
【００１８】
図１は、プロセッサ１００の機能ブロック図を示す。プロセッサ１００は、制御論理回路１１０にしたがって、命令実行パイプライン１２０の中で命令を実行する。プロセッサ１００は、例えばマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ブリッジ、プログラム可能な論理回路、分離ゲートもしくはトランジスタ論理回路、または任意のその他の情報処理コンポーネントなどを含む任意の型のパイプライン化されたプロセッサコンポーネントであってよい。一部の実施形態で、パイプライン１２０は複数の並行パイプラインを備えたスーパースカラ設計であってよい。パイプライン１２０はパイプステージの中で組織された様々なレジスタまたはラッチ１６０Ａ〜Ｄ、および１つまたは複数の実行装置１８０を含む。図１には５つのパイプステージが示されているが、当業者であれば、示されているものよりも多いか、または少ないパイプステージがプロセッサ１００に含まれてもよいということが理解されよう。汎用レジスタ（ＧＰＲ）ファイル１３０は、メモリ階層の最上部を備えたレジスタを提供する。プロセッサ１００は、仮想タグ付き命令キャッシュ（Ｉキャッシュ）１２２、変換ルックアサイドバッファ（ＴＬＢ）１２８および制御回路１１０を含む命令キャッシュシステム１２７を含む。
【００１９】
パイプライン１２０は、Ｉキャッシュ１２２に仮想アドレスを与えることによって、Ｉキャッシュ１２２から命令を取り出す。メモリアドレスの変換は、ＴＬＢ１２８によって管理される。Ｉキャッシュ１２２に仮想アドレスを与えることと並行して、パイプライン１２０は、仮想アドレスがＩキャッシュ１２２の中で見つからない場合に（キャッシュミス）、メモリインタフェース３０を通じてメモリ３２にアクセスするために利用される対応する物理アドレスを判定するために、ＴＬＢ１２８に仮想命令アドレスを与える。制御論理回路１１０はパイプライン１２０から無効化命令を受信し、Ｉキャッシュ１２２およびＴＬＢ１２８の中の１つまたは複数のエントリを無効化することを管理する。命令キャッシュシステム１２７の構造およびオペレーションは、図２の説明とともに、より完全に説明される。
【００２０】
データは、変換ルックアサイドバッファ（ＴＬＢ）１２８によって管理されるメモリのアドレス変換および許可を用いて、データキャッシュ（Ｄキャッシュ）１２６からアクセスされる。図１は、ＴＬＢ１２８を一体型ＴＬＢとして示しているが、様々な実施形態でＴＬＢ１２８は、一方がＤキャッシュ１２６へのアクセスを変換することに専用され、他方がＩキャッシュ１２２へのアクセスを変換することに専用される複数のＴＬＢに分離されてもよい。Ｉキャッシュ１２２および／またはＤキャッシュ１２６のミスは、メモリインタフェース１４０の制御の下で、主（オフチップ）メモリ１５０へのアクセスを生じさせる。そのような主メモリへのアクセスは、ＴＬＢ１２８から取り出された物理アドレスを利用する。
【００２１】
プロセッサ１００は入力／出力（Ｉ／Ｏ）インタフェース１３４を含んでもよく、様々な周辺装置１３６および１３８へのアクセスを制御する。当業者であれば、プロセッサ１００の多数の変形形態が可能であることが理解されよう。例えば、プロセッサ１００はＩキャッシュ１２２およびＤキャッシュ１２６のいずれかのためか、またはそれらの両方のための第２レベル（Ｌ２）キャッシュを含んでもよい。さらに、プロセッサ１００に示されている機能ブロックのうちの１つまたは複数は、具体的な実施形態から省略されてもよい。
【００２２】
図２は、図１の命令キャッシュシステム１２７のより詳細な図である。この例示の実施形態では、ＴＬＢ１２８は２１０Ａ〜２１０Ｃの３つの列を有するように構成されている。列２１０Ａは、ソフトウェアプロセスに関連したアプリケーション空間識別子（ＡＳＩＤ）を含む。レジスタ２１５は、専用レジスタか、またはＧＰＲファイル１３０の中に記憶されてもよい現在実行中のソフトウェアプロセスのＡＳＩＤを含む。列２１０Ｂは、ＴＬＢ仮想タグを含む。ＴＬＢ仮想タグは、仮想アドレスの一部である。例えば仮想アドレス２０５は、プログラムカウンタ（ＰＣ）レジスタなどのレジスタの中に記憶された３２ビットのアドレスである。この例では、ビット位置３１―１２は、ＴＬＢ仮想タグを定義している仮想アドレスの部分を定義する。
【００２３】
列２１０Ｃは、ＡＳＩＤ／ＴＬＢ仮想タグの組み合わせに対応する２０ビットの物理ページ番号（ＰＰＮ）を含む。物理ページ番号は、（実行中のソフトウェアプロセスに関連した）アクティブのＡＳＩＤと仮想アドレス２０５からのＴＬＢ仮想タグとが、ＴＬＢ１２８の行の中に記憶されたＡＳＩＤタグとＴＬＢ仮想タグとの組み合わせに合致する場合に、ＴＬＢ１２８から返送される。返送されたＰＰＮは、対応する物理アドレスを定義するためにページオフセットと結び付けられる。特に結合の間に、返送されたＰＰＮはビット位置３１−１２に配置され、一方で仮想アドレスのページオフセット部分はビット位置１１―０を占め続ける。
【００２４】
この例示的な実施形態で、仮想タグ付けＩキャッシュ１２２は、１０２４「１ラインセット」および３２バイトラインを備えた３２ＫＢのダイレクトマップキャッシュである。この実施形態では、仮想タグ付けＩキャッシュ１２２は、２２０Ａ〜２２０Ｄの４つの列を有するように構成されている。列２２０Ａは、ソフトウェアプロセスに関連したアプリケーション空間識別子（ＡＳＩＤ）を含む。列２２０Ｂは、Ｉキャッシュ（Ｉ＄）仮想タグを含む。列２２０Ｃは、特定のＩキャッシュ仮想タグとＡＳＩＤとの組み合わせ(particular I-cache virtual tag and ASID combination)に関連した３２バイトの命令ラインを含む。任意で列２２０Ｄは、その後に続くエントリの無効化の範囲を制限するために、Ｉキャッシュの中の関連したエントリがどのような状況の下で記憶されたのかを示すフラグを含む。
【００２５】
仮想アドレス２０５は、そのビット位置のための２つの重畳手段を表して示されている。仮想アドレス２０５が仮想タグ付けＩキャッシュ１２２によって利用される場合、ビット位置３１−１５はＩキャッシュ（Ｉ＄）仮想タグを定義し、ビット位置１４−５は、Ｉキャッシュ１２２の中の１０２４「１ラインセット」から１つのラインまたはセットを選択するためにインデックス２０７を定義し、ビット位置４−０は命令ライン列２２０Ｃの中のオフセットを定義する。ダイレクトマップＩキャッシュ１２２の中の行もまた、「１ラインセット」と呼ばれる。例えば、８つの３２ビット命令が単一の命令ラインの中に存在してもよいが、簡単にするために、Ｉ＄仮想タグ当たり１つの命令が示されている。本開示によって、その他の命令のサイズが考えられるということが認識されよう。仮想アドレス２０５がアドレス変換のためにＴＬＢ１２８によって利用される場合、ビット位置３１−１２はＴＬＢ仮想タグを定義し、ビット位置１１−０はページオフセットを定義する。
【００２６】
指定された仮想アドレス(specified virtual address)を求めるＩキャッシュ探索(I-cache lookup)の間、インデックス２０７は仮想アドレスから、Ｉキャッシュ１２２の中の対応するラインを選択する。次いで、アクティブのＡＳＩＤ２１５および指定された仮想アドレスのビット位置３１−１５は、選択されたキャッシュラインの中に記憶されたＡＳＩＤタグおよびＩ＄仮想タグと比較される。
【００２７】
同様に、指定された仮想アドレスのためのＴＬＢ変換の間、アクティブのＡＳＩＤ２１５および指定された仮想アドレスのビット位置３１−１２は、合致、すなわち対応するＰＰＮを見つけ出すために、ＴＬＢ１２８の中に記憶されたＡＳＩＤタグおよびＴＬＢ仮想タグと比較される。
【００２８】
ここでは示されていないが、ある実施形態(certain embodiments)においては、ＴＬＢ仮想タグを備える仮想アドレスの部分は、Ｉキャッシュ仮想タグを備える仮想アドレスの同じ部分であってもよい。仮想タグ付けＩキャッシュ１２２はダイレクトマップキャッシュとして示されているが、Ｉキャッシュ１２２はまた、複数ラインセットの形態をとるエントリのグループにアクセスするために、セット関連キャッシュとして具体化されてもよいということが、当業者には理解されよう。
【００２９】
ＴＬＢ１２８に戻ると、エイリアス関係と区別関係との両方が示されている。エイリアス関係は、同じ物理ページ番号（ＰＰＮ）がＴＬＢ１２８の中の２つ以上のエントリに配置される場合に生じる。例えば、エントリ２１１と２１３とは、両方ともＰＰＮ０ｘ８００００を参照する。この例では、エントリ２１１と２１３とは同じＴＬＢ仮想タグを有するが、独自のＡＳＩＤタグ／ＴＬＢ仮想タグの組み合わせを作るために異なるソフトウェアプロセスに関連している。エントリ２１２と２１４もまた、それらは両方ともＰＰＮ０ｘ９００００を参照するので、お互いのエイリアスである。お互いに関して、エントリ２１２と２１４とは、独自のＡＳＩＤ／ＴＬＢ仮想タグの組み合わせを定義するために、独自のＴＬＢ仮想タグと独自のＡＳＩＤタグとを有する。区別関係は、同じ仮想タグが２つ以上の異なる物理ページ番号にマップする場合に生じる。エントリ２１１と２１２とは、同じＴＬＢ仮想タグ（ＴＬＢｔａｇＡ）がそれぞれ０ｘ８００００と０ｘ９００００との２つの異なる物理ページ番号にマップするので、区別関係を示している。
【００３０】
ＴＬＢ仮想タグおよびＩ＄仮想タグは、仮想アドレスの中のビット位置（それらのうちの一部は共通のビット位置である）から構成されていることを認識し、ＴＬＢ１２８の中のエントリは、Ｉキャッシュ１２２の中のエントリに関連関連付けられている。その結果、名前を付けることを目的として、特定のＩ＄仮想タグ(particular I$ virtual tag)（例えばＩ＄ｔａｇＡなど）を指す場合の下付き文字の使用は、特定のＩ＄仮想タグの値が、同じ下付き文字を有するＴＬＢ仮想タグ（例えばＴＬＢｔａｇＡなど）の値と相関するということを示す。図２の例示的な実施形態では、ＴＬＢ仮想タグはＩ＄仮想タグよりも多くのビットを含む。その結果、１つのＴＬＢ仮想タグは、１つまたは複数のＩ＄仮想タグに対応することができる。したがって、物理ページ番号を有する１つのＴＬＢエントリは、１つまたは複数のＩキャッシュエントリに対応することができ、Ｉキャッシュ１２２の中の１つまたは複数の命令もまた、対応するＴＬＢエントリの物理ページ番号の中に物理的に配置されることができるということを意味する。簡単にするために、特定のＴＬＢエントリに関連したすべてのＩキャッシュエントリが示されているわけではないということに留意されたい。ＴＬＢエントリとＩキャッシュエントリとの間の上述の多くの関係に対して１つを考えると、所与のＩキャッシュ行が所与のＴＬＢ行の中の同じＡＳＩＤタグおよび仮想アドレスタグ値に関連している場合、所与のＩキャッシュ行の中の１つまたは複数の命令はさらに、所与のＴＬＢ行に関連した仮想アドレス空間のページに対応している物理アドレス空間のページ内に配置されてもよい。
【００３１】
時間がたつにつれて、ＴＬＢ１２８とＩキャッシュ１２２との両方は古くなる場合がある。例えばＡＳＩＤが、その後に続く関連のないソフトウェアプログラムによって再使用され、その後に続くプログラムの仮想から物理へのマッピングが以前のプログラムのものと異なる場合、再使用されるＡＳＩＤを含むＴＬＢとＩキャッシュとの両方に含まれるエントリは、それらが以前のソフトウェアプログラムに関連した物理アドレスにマップされることから、もはや有効ではない。ＴＬＢとキャッシュとのコヒーレンシを維持するために、制御論理回路１１０が利用されてＴＬＢ１２８とＩキャッシュ１２２との両方の中の古いエントリを管理する。一般に、物理タグ付きＩキャッシュにはエイリアス問題が存在しないということ、および仮想から物理へのアドレスマッピングの単なる変更は、物理タグ付きＩキャッシュの中でのＩキャッシュの無効化を必要としないということを含む様々な理由のために、Ｉキャッシュの中の古いエントリを管理することに関して、物理タグ付きＩキャッシュのために書き込まれるソフトウェアプログラムは、仮想タグ付きＩキャッシュのために書き込まれるものよりも単純であることが可能である。しかしながら、所与のプロセスＩＤの所与の仮想アドレスのマッピングを１つの物理アドレスから別のものへ変更する場合、両方の物理タグ付きＩキャッシュのために書き込まれるソフトウェアプログラムと仮想タグ付きＩキャッシュのために書き込まれるものとは、明示ＴＬＢ無効化命令(explicit TLB invalidate instructions)を含まなければならない。
【００３２】
Ｉキャッシュのエントリが仮想タグ付き命令キャッシュを用いて無効化されなければならない２つの主な種類のシナリオが存在する。第１の種類のシナリオには、例えば仮想アドレスが異なる物理アドレスにマップされるアドレスマッピングの変更が関与する。従来の仮想タグ付きＩキャッシュ実装では、Ｉキャッシュ無効化命令は、この種類のシナリオの下でＩキャッシュを無効化するために利用される。さらに第１の種類のシナリオでは、ＴＬＢ無効化命令は、従来の仮想タグ付きＩキャッシュと従来の物理タグ付きＩキャッシュとの両方の実装の中でＴＬＢを無効化するために利用される。第２の種類のシナリオには、物理メモリの内容が変更される状況が関与する。第２の種類のシナリオでは、Ｉキャッシュ無効化命令は、従来の仮想タグ付きＩキャッシュと従来の物理タグ付きＩキャッシュとの両方の実装の中でＩキャッシュを無効化するために利用される。しかしながら従来の物理タグ付きＩキャッシュ実装では、Ｉキャッシュ無効化命令は、従来の仮想タグ付きＩキャッシュ実装の中で、その物理アドレスに関連すると思われるすべての可能な仮想アドレスとは対照的に、無効化するためには変更されたメモリの物理アドレスを識別するだけでよい。
【００３３】
制御論理回路１１０は、従来どおりに、仮想タグ付きＩキャッシュのために、明示Ｉキャッシュ無効化を呼び出すためのソフトウェアプログラムを必要とする第１の種類のシナリオが、物理タグ付きＩキャッシュのためにも、ＴＬＢ無効化を呼び出すためのソフトウェアプログラムを同様に必要とするということを認識するように構成されている。例えば１つのシナリオは、ＡＳＩＤ／ＴＬＢ仮想タグの組み合わせが新たな物理タグページ番号にマップされる状況を含む。このシナリオでは、制御論理回路１１０は明示ＴＬＢ無効化命令に応答して、ＡＳＩＤ／ＴＬＢ仮想タグの組み合わせを伴うＴＬＢ１２８の中のエントリを無効にし、またＡＳＩＤ／Ｉキャッシュ仮想タグの組み合わせを伴う仮想タグ付きＩキャッシュ１２２の中のエントリも無効化する。ある実施形態においては、この明示的ＴＬＢ無効化命令は、指定されたＡＳＩＤ／ＴＬＢ仮想タグの組み合わせとは関係なく、Ｉキャッシュ１２２の中のすべてのエントリのフラッシュ無効(flash invalidation)を生じさせる。
【００３４】
指定された物理アドレスの内容に対して行われる修正について述べている第２の種類のシナリオに関して、ソフトウェアプログラムは、Ｉキャッシュ１２２が更新されるように明示Ｉキャッシュ無効化命令を出す。明示Ｉキャッシュ無効化命令の内容は、修正された物理アドレスに関連した仮想アドレスか、または修正された物理アドレスを指定しても、指定しなくてもよい。
【００３５】
１つの実施形態では、制御論理回路１１０はこの明示Ｉキャッシュ無効化命令に応答して、仮想タグ付けＩキャッシュ１２２の中のすべてのエントリをフラッシュ無効化するように構成されている。この実施形態では、所与の物理アドレス、または代替として所与の物理アドレスに関連した仮想アドレスは、明示Ｉキャッシュ無効化命令の中で指定されることが可能である。しかしながら、すべてのＩキャッシュエントリがフラッシュ無効化されることから、明示Ｉキャッシュ無効化命令の指定された仮想または物理アドレスは単に無視される。
【００３６】
代替の実施形態においては、制御論理回路１１０は明示Ｉキャッシュ無効化命令に応答して、仮想タグ付きＩキャッシュ１２２の中のエントリを選択的に無効化するように構成されている。一般にＩキャッシュエントリは物理アドレスに対応する仮想タグを有することから、指定された物理アドレスに対応する可能性のあるＩキャッシュエントリは無効化されなければならない。物理アドレスの内容に対する変更の結果として、対応する仮想タグ付きＩキャッシュエントリが無効化されなければならない複数の仮想アドレスの識別の例として、ＴＬＢ１２８の行２１２および２１４のエントリを参照する。これらのエントリはエイリアスエントリであり、同じ物理ページ番号０ｘ９００００にマップされる。
【００３７】
同様に、Ｉキャッシュエントリ２２５および２２４は、上述の仮想アドレス２０５のビット位置の二重重畳手段によって示されているように、Ｉ＄仮想タグ（Ｉ＄ｔａｇＡおよびＩ＄ｔａｇＢ）の値がそれぞれＴＬＢ仮想タグ（ＴＬＢｔａｇＡおよびＴＬＢｔａｇＢ）の値に関連していることから、同じく物理ページ番号の最初の１７ビットによって定義される物理アドレスで見つけ出される命令を含む。その結果、例えば物理アドレス０ｘ９０００＿００００の内容が変わる場合、エントリ２２５および２２４は、その命令が同じく物理アドレス０ｘ９０００＿００００で見つけ出される、示されていない任意のその他のエントリとともに、制御論理回路１１０によって選択的に無効化される。より詳細には、仮想タグ付きＩキャッシュ１２２の中のエントリを選択的に無効化するこの実施形態では、制御論理回路１１０は、選択されたＩキャッシュセットの中のすべてのエントリなど、指定された物理アドレスが存在する可能性のある特定のＩキャッシュ仮想インデックスに関連したすべてのエントリを無効化するように構成されている。
【００３８】
図３は、ダイレクトマップＩキャッシュの中で物理アドレスに関連している可能性のある仮想タグ付きＩキャッシュエントリのセットの選択的無効化を示すブロック図である。仮想アドレス２０５の中で示されているように、ビット位置１４−１２または参照番号３０５は、仮想アドレス２０５が仮想タグ付きＩキャッシュ１２２によって利用される場合、インデックスビットの一部であり、Ｉキャッシュインデックスビットとも呼ばれる。ビット位置１４−１２はまた、ＴＬＢ仮想タグの一部でもある。しかしながら、ビット位置１４−１２はアドレス変換の間に変換されたビットであることから、これらの同じビットは仮想アドレス２０５に対応する物理ページ番号の一部である。ビット位置１４−１２はＩ＄仮想タグによって利用されず、物理ページ番号は無効化のために指定されてもよいので、ビット１４−１２の各組み合わせは、物理ページ番号が対応する関連したＩキャッシュエントリが配置されている可能性のある仮想タグ付きＩキャッシュ１２２の内部で、しきい値０、１２８、２５６、…８９６を定義する。残りのインデックスビットであるビット１１−５または参照番号３１５はアドレス変換の間に変換されず、したがって仮想アドレス２０５とその変換された物理アドレスとの間で共通である。その結果ビット１１−５は、場合によっては物理ページに関連した対応するＩキャッシュエントリを配置するために、定義されたしきい値からオフセットを指定する。参照番号３０５は３つのビットを含んでいることから、制御論理回路１１０は無効化されている物理アドレスに応答して、ビット１４−１２の各組み合わせを物理アドレスのビット１１−５と結び付けることによって、仮想タグ付きＩキャッシュ１２２の中の８つのエントリを同時に無効化するように構成されてもよい。
【００３９】
一般に、ビット１１−０はアドレス変換によって変換されないので、それらは指定された物理アドレスと、その物理アドレスに変換することが可能な任意の仮想アドレスとの間で異なることはない。換言すれば、指定された物理アドレスにマップされてもよいすべての仮想アドレスは、ビット１１−０の中の物理アドレスに合致しなければならない。したがって、指定された物理アドレスに対応するエントリを含む可能性のあるＩキャッシュセットを選択するために、Ｉキャッシュインデックスの一部として使用される位置１１−０にあるものからの任意のビットは、物理アドレスからの対応するビットと同じ値を有していなければならない。例えば、場合によっては指定された物理アドレスに対応するエントリを含むエントリのセットを識別しながら、物理アドレスからの対応するビットとは異なる値を有することができるのは、位置１４−１２にあるＩキャッシュインデックスだけである。
【００４０】
変更される物理アドレスの内容のために、Ｉキャッシュから無効化されるべき物理アドレスを識別する明示Ｉキャッシュ無効化命令に応答して、制御論理回路１１０は、ビット１４−１２によって定義されたしきい値からオフセットを判定して、Ｉキャッシュの中の適格のエントリの変換されたセットの中のすべてのエントリを無効化するためにビット位置１１−５を利用し、ＩキャッシュがＩキャッシュ全体を基準にするのではなく、セットを基準にして無効化されることを可能にする。無効化されるべき物理アドレスを指定する単一の命令を用いて、または代替として無効な物理アドレスに関連した仮想アドレスを用いて、この実施形態は、物理タグ付きＩキャッシュモデルに書き込まれるソフトウェアが、仮想タグ付きＩキャッシュ上で自動的にＩキャッシュの無効オペレーションを呼び出し、指定された物理アドレスに対するすべての可能な仮想アドレスエイリアスがキャッシュから除去されるのを確実にすることを可能にする。説明されたように、前述のような除去はライン、セット、またはキャッシュ全体を基準としてもよい。この方法で、仮想タグ付きＩキャッシュは、物理タグ付きＩキャッシュモデルに書き込まれたソフトウェア上の任意のさらなる負担を伴わずに、適切に管理される。
【００４１】
制御論理回路１１０による仮想タグ付けＩキャッシュ１２２への同時インデックスの数は、仮想タグ付けＩキャッシュのセットの結合性によって決まる。図４は、双方向セット結合Ｉキャッシュ４２２の中の物理アドレスに関連している可能性のある仮想タグ付きＩキャッシュエントリのセットの選択的無効化を示すブロック図である。その結合性以外に、双方向結合Ｉキャッシュ４２２は、３２バイトラインを備えた３２ＫＢの仮想タグ付きＩキャッシュであり、Ｉキャッシュ２２２に適切に類似していてもよい。仮想アドレス４０５はプログラムカウンタ（ＰＣ）などのレジスタに記憶された３２ビットのアドレスであり、仮想アドレス２０５と同様に、そのビット位置のため２つの重畳手段を表して示されている。Ｉキャッシュ４２２は９ビットのサイズのインデックス４１８を有し、したがって１８ビットのサイズのＩ＄仮想タグを有する。この実施形態について、ビット位置３１−１２または変換されたビット位置４１０は４つのしきい値を定義し、その結果４つの同時インデックスとなり、ビット位置１１−５または変換されていないビット位置４１５は、仮想タグ付きＩキャッシュの中の行を選択的に無効化するために、４つのしきい値の各々からオフセットを定義する。双方向セット結合キャッシュで、各行は２つのキャッシュラインを含む。その結果、制御論理回路１１０は４つのキャッシュ行に同時にインデックス付けを行い、したがって８つの仮想タグ付きＩキャッシュエントリを無効にする。
【００４２】
さらなる実施形態として、様々なサイズおよび構成の仮想タグ付けＩキャッシュが考えられるということが認識されよう。例として、３２バイトラインを備えた３２ＫＢの仮想タグ付けＩキャッシュの４方向セット結合の実施形態は、８ビットのサイズのインデックス、したがって１９ビットのサイズのＩ＄仮想タグに結び付く。４方向セット結合Ｉキャッシュについて、ビット位置１２は２つのしきい値を定義し、ビット位置１１−５は、４方向Ｉキャッシュの中のエントリを選択的に無効化するために、２つのしきい値からオフセットを定義する。
【００４３】
別の例として、３２バイトラインを備えた３２ＫＢの仮想タグ付きＩキャッシュの８方向セット結合実施形態は、７ビットのサイズのインデックス、したがって２０ビットのサイズのＩ＄仮想タグ、同じサイズのＴＬＢ仮想タグ、およびそれに関する物理タグ番号に結び付く。全方向セット結合Ｉキャッシュについては、定義されるしきい値はなく、ビット位置１１−５は８方向キャッシュへインデックス付けを行う。しかしながら、８方向キャッシュの中の各行は８つのキャッシュラインを備え、８つのキャッシュラインは選択的に無効化されるということに留意されたい。さらに、この例ではＴＬＢ仮想タグのサイズはＩ＄仮想タグのサイズと等しいことから、指定された物理アドレスに関連する可能性のあるＩキャッシュの中の任意のエントリは、単一のＩキャッシュインデックスによって選択されたＩキャッシュの通路の中に配置されることが保障され、次にこの単一のＩキャッシュインデックスは、それらのビット位置が変換されないことから、指定された物理アドレスからのインデックスビット位置と同じものとなる。換言すれば、すべてのＩキャッシュインデックスビットがページオフセット内のビット位置にあり、したがってＩキャッシュインデックスビットがアドレス変換メカニズムによって変換されない場合、指定された物理アドレスに関連する可能性のあるＩキャッシュの中の任意のエントリは、単一のＩキャッシュインデックスによって選択されたＩキャッシュの通路の中に配置されることが保障される。
【００４４】
これらの前述の例は、本開示の教示によるセット結合仮想インデックス付けおよび仮想タグ付けＩキャッシュが、どのようにして選択的無効化に影響を及ぼすのかを示している。特に、仮想インデックス付けおよび仮想タグ付けキャッシュのセット結合性が高くなるほど、アドレス変換プロセスによって変換されるビット数は少なくなるが、それらはＩキャッシュのインデックスの中で、それらの変換されていない形態の中で利用され、その結果、選択的に無効化されるＩキャッシュ行の数は少なくなる。同様に、物理ページのサイズは変換されるアドレスビットの数に影響を及ぼす。ページのサイズが増えると、変換される仮想アドレスの上位ビットは少なくなる。したがってページのサイズが大きくなると、アドレス変換プロセスによって変換されるビットの数は少なくなるが、それらはＩキャッシュインデックスのために、それらの変換されていない形態で利用され、ここでもまた選択的に無効化されるＩキャッシュ行／セットの数は少なくなる。
【００４５】
物理ページ番号の中のビットの数がＩキャッシュ仮想タグの中のビットの数と同じ場合、アドレス変換プロセスによって最終的に変換されるＩキャッシュインデックスの中のビット３０５は存在しない。したがって潜在的なＩキャッシュの通路は、１つの保証された通路に減らされる。一般にページサイズが増えると変換ビットは少なくなり、したがって物理アドレスに関連した潜在的Ｉキャッシュエントリのサイズは減らされる。
【００４６】
図２に戻ると、制御論理回路１１０は、ソフトウェアプログラムが物理タグ付きＩキャッシュで書き込まれたのか、または仮想タグ付きＩキャッシュで書き込まれたのかに関わらず、ソフトウェアプログラムからのＴＬＢ無効化命令およびＩキャッシュ無効化命令などの無効化命令を入力として受信する。これらの無効化命令は、例えばパイプステージ１６０Ｂなどのパイプライン１２０の中の復号ステージから与えられてもよい。制御論理回路１１０は、知られているＩキャッシュ無効化命令に応答して、Ｉキャッシュの１つまたは複数のエントリを無効化するために、Ｉキャッシュ制御信号を生成することなどの知られているメカニズムを利用してＩキャッシュ１２２の中の１つまたは複数のエントリを無効化するために、ＴＬＢ無効化命令のセットに応答する。さらにＩキャッシュを管理するためにＴＬＢ無効化命令のセットに応答すること、および物理アドレスの内容が変わったことを示すシナリオのためにＩキャッシュ無効化命令に応答することによって、制御論理回路１１０は、従来の仮想タグ付きＩキャッシュが必要とする各シナリオのためにＩキャッシュ無効化命令を別々に出さなければならないことから、ソフトウェアプログラムの負担を軽減する。その結果、物理タグ付きＩキャッシュ(physically tagged I-cache)を管理するように書き込まれるソフトウェアプログラムは、ここで好都合にも、仮想インデックス付き、仮想タグ付きＩキャッシュ(virtually-indexed, virtually-tagged I-cache)を管理しているプロセッサ１００上で実行することができるので、ソフトウェアの観点から、それは、あたかも物理インデックス付き、および物理タグ付き(physically-indexed and physically-tagged)のように振舞う。
【００４７】
制御論理回路１１０はまた、書き込まれた既存のソフトウェアプログラムが仮想タグ付きＩキャッシュを管理する目的で、仮想タグ付きＩキャッシュ１２２の中の１つまたは複数のエントリを無効化するために、知られているＩキャッシュ無効化命令に応答する。さらにある実施形態においては、制御論理回路１１０は、特に仮想タグ付きＩキャッシュのために書き込まれたソフトウェアプログラムが実行中である場合に利用されてもよいプロセッサ１００から、任意のイネーブル信号２３７を受信してもよい。イネーブル信号２３７はプロセッサの状態ビット、構成ビットおよびその他の結果として呼び出されてもよい。イネーブル信号２３７が呼び出される場合、制御論理回路１１０は上述のように動作する。イネーブル信号２３７が呼び出されない（ディスエーブルにされる）場合、制御論理回路１１０はＴＬＢ１２８からの１つまたは複数のエントリを無効にするためにＴＬＢ無効化命令に応答し、仮想タグ付きＩキャッシュ１２２の中の１つまたは複数のエントリを無効化するためにＩキャッシュ無効化命令に応答する。イネーブル信号２３７が呼び出されない（ディスエーブルにされる）場合、制御論理回路１１０はＴＬＢ無効化命令に応答して、仮想タグ付きＩキャッシュ１２２の中のエントリを無効にすることはなく、Ｉキャッシュ無効化命令に応答して、指定された仮想アドレスに特に関連したものよりも多くのＩキャッシュエントリを必ずしも無効にするわけではない。
【００４８】
ある実施形態においては、制御論理回路１１０はＴＬＢ制御信号ジェネレータ２３５およびＩキャッシュ制御信号ジェネレータ２４５を含んでもよい。Ｉキャッシュ制御信号ジェネレータ２４５への入力２４１および２４３はそれぞれ、ＴＬＢ無効化命令およびＩキャッシュ無効化命令をＩキャッシュ制御信号ジェネレータ２４５に結合する。Ｉキャッシュ制御信号ジェネレータ２４５は受信された無効化命令に基づいて、仮想タグ付きＩキャッシュ１２２の中の１つまたは複数のエントリを無効化するために、制御信号を生成するように構成されている。ＴＬＢ制御信号ジェネレータ２３５は、受信された特定の種類のＴＬＢ無効化命令に基づいて、ＴＬＢ１２８の中の１つまたは複数のエントリを無効化するために、知られている方法で制御信号を生成する。Ｉキャッシュ制御信号ジェネレータ２４５への入力がＩキャッシュ無効化命令の結果である場合、Ｉキャッシュ制御信号ジェネレータ２４５は、仮想タグ付けＩキャッシュ１２２の中の１つまたは複数のエントリを無効化するために、知られている方法で制御信号を生成する。さらにＩキャッシュ制御信号ジェネレータ２４５は、ＴＬＢ無効化命令に応答して、仮想タグ付けＩキャッシュ１２２の中の１つまたは複数のエントリを無効化するために制御信号を生成する。以下の表は、以下のＴＬＢ無効化命令を受信した結果生じるＩキャッシュ制御信号ジェネレータ２４５の機能的動作を説明するものである。
【表１】
2009534755.tif 000003
【００４９】
列２２０Ｄは、変換メカニズムが１つのイネーブルメントの状態(state of enablement)にあったときにエントリが確立されたときに、仮想タグの比較に基づいて、Ｉキャッシュ１２２の中のエントリには誤った「合致」は存在しないということを保証するための１つの実施形態であるが、合致は、後で変換メカニズムが別のイネーブルメントの状態にあるときに生じている。例えば、ＴＬＢ１２８などの変換メカニズムが、ＴＬＢ１２８がイネーブルか、またはディスエーブルの状態にあることを可能にするイネーブルメント機能を有する状況では、Ｉキャッシュ１２２の中に記憶されたエントリは、エントリが記憶されたときにＴＬＢが動作可能であったか否かを示すフラグ値を含んでもよい。動作不能のＴＬＢ１２８の間にエントリがＩキャッシュの中に記憶される場合、記憶されるエントリは、変換されていない仮想アドレスと同じ物理アドレスに関連している。
【００５０】
ディスエーブルからイネーブルへのＴＬＢ切り換えの場合、動作不能のＴＬＢの間に記憶されたＩキャッシュエントリは、ＴＬＢ切り換え信号２３９に応答して、制御論理回路１１０によって無効化される。また、イネーブルからディスエーブルへのＴＬＢ切り換えの場合、動作可能ＴＬＢの間に記憶されたＩキャッシュエントリは、ＴＬＢ切り換え信号２３９に応答して、制御論理回路１１０によって無効化される。ＴＬＢ切り換え信号２３９は通常、ディスエーブルからイネーブルへの、およびその反対のＴＬＢ１２８切り換えの場合に生成される。特に、Ｉキャッシュ制御信号ジェネレータ２４５はＴＬＢ切り換え信号２３９に応答して、ＴＬＢ１２８が、それがちょうど切り換えられた状態にあった間にエントリが最初に記憶されたということを示すフラグフィールドに合致するＩキャッシュ１２２の中のエントリを無効化するために、制御信号を生成する。代替実施形態で、列２２０Ｄのフラグは、変換表の状態がイネーブルである場合に設定されてもよい。この実施形態では、Ｉキャッシュの探索が行われる場合に、このフラグは、変換表の現在の状態との合致が存在するかどうかを判定するために考慮される。
【００５１】
別の代替実施形態では、前の一貫しない状態で確立されたＩキャッシュエントリで、誤りではない「合致」が生じていることを保証するという問題は、任意の列２２０Ｄを用いずに対処される。この実施形態で、制御論理回路１１０は、ＴＬＢイネーブル切り換え信号２３９がＴＬＢイネーブルメカニズムに切り換えがあったことを示す場合に、エントリキャッシュ１２２をフラッシュ無効化する。
【００５２】
当業者には、仮想アドレス２０５のサイズ、ならびにＴＬＢ１２８およびＩキャッシュ１２２の寸法は、本発明の教示から逸脱することなく、別の実施形態に適用されてもよいということを理解されたい。
【００５３】
図５は、ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュに、それがあたかも物理タグ付き命令キャッシュであるかのように動作させるための方法５００を示す流れ図である。機能ブロック５１０で、この方法は命令を取り出す。
【００５４】
取り出された命令は、取り出された命令が復号される命令復号５３０に進む。ブロック５４０で、この方法は命令の種類を判定する。命令の種類がアドレス変換無効化命令である場合、この方法は、アドレス変換無効化命令にしたがって、ＴＬＢ１２８などのＴＬＢの中の１つまたは複数のエントリを無効化するブロック５５０に進む。この方法はさらに、ブロック５６０に進む。ブロック５６０で、この方法はまた、表１で定義されたようなアドレス変換無効化命令のマッピングにしたがって、Ｉキャッシュ１２２の中の１つまたは複数のエントリを無効化する。当業者には、ブロック５５０とブロック５６０の順番が、無効化プロセスに影響を及ぼすことなく逆にされてもよいということを理解されたい。ブロック５４０に戻ると、命令の種類がＩキャッシュ無効化命令である場合、この方法は、Ｉキャッシュ無効化命令にしたがって、Ｉキャッシュ１２２の中の１つまたは複数のエントリを無効化するためにブロック５６０に進む。ブロック５４０に戻ると、命令の種類が任意の種類の無効化命令ではない場合、次の命令を取り出すためにブロック５１０に戻る。
【００５５】
ここに開示される実施形態とともに説明される様々な例示的な論理ブロック、モジュール、回路、要素および／またはコンポーネントは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレー（ＦＰＧＡ）もしくはその他のプログラマブル論理コンポーネント、独立ゲートまたはトランジスタ論理回路、独立のハードウェアコンポーネント、またはここに説明されている機能を実行するように構成された任意のそれらの組み合わせを用いて実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってよいが、代替として、このプロセッサは任意の従来型プロセッサ、コントローラ、マイクロコントローラまたはステートマシンであってもよい。プロセッサはまた、例えばＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、または任意のその他の前述のような構成などのコンピューティングコンポーネントの組み合わせとして実装されてもよい。
【００５６】
ここに開示される実施形態とともに説明される方法またはアルゴリズムは、ハードウェア、プロセッサによって実行されるソフトウェアモジュール、またはこの２つの組み合わせの中で直接具体化されてもよい。ソフトウェアモジュールはＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、また当技術分野で知られている任意のその他の形態の記憶媒体に存在してもよい。記憶媒体は、プロセッサが情報を記憶媒体から読み取り、情報を記憶媒体へ書き込むことができるように、プロセッサに結合されてもよい。代替として、記憶媒体はプロセッサと一体化されてもよい。
【００５７】
本発明は、実施形態の状況の中で開示されているが、上記説明および添付された特許請求の範囲と整合する多種多様なインプリメンテーションが当業者によって使用されることができるということを認識されるであろう。
【図面の簡単な説明】
【００５８】
【図１】プロセッサの１つの実施形態を示す機能ブロック図。
【図２】図１の命令キャッシュシステムをより詳細に示す図。
【図３】ダイレクトマップＩキャッシュの中の物理アドレスに関連している可能性のある、仮想タグ付きＩキャッシュエントリのセットの選択的な無効化を示すブロック図。
【図４】双方向セット結合Ｉキャッシュの中の物理アドレスに関連している可能性のある、仮想タグ付きＩキャッシュエントリのセットの選択的な無効化を示すブロック図。
【図５】ソフトウェアプログラムの観点から、仮想タグ付き命令キャッシュがあたかも物理タグ付き命令キャッシュのように動作するための方法を示す流れ図。
【図１】
2009534755.tif 000004
【図２】
2009534755.tif 000005
【図３】
2009534755.tif 000006
【図４】
2009534755.tif 000007
【図５】
2009534755.tif 000008
【国際調査報告】
2009534755.tif 000009
2009534755.tif 000010