(57)【要約】  複数の動作状態をもつプロセッサのための命令をキャッシュに入れる方法および装置。プロセッサの動作状態の少なくとも２つは、異なる命令セットを支援する。プロセッサが状態の１つにおいて動作している一方で、命令のブロックがメモリから検索される。命令は、前記状態の１つにしたがってプリデコードされ、キャッシュにロードされ得る。プロセッサまたは別のエンティティは、キャッシュ内のプリデコードされた命令の１つがプロセッサによって要求されると、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断するのに使用され得る。【選択図】      図４
2008541313.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを操作する方法であって、プロセッサは、異なる状態において動作することができ、状態の少なくとも２つは、異なる命令セットを支援し、
プロセッサが状態の１つにおいて動作している一方で、メモリから命令のブロックを検索することと、
前記状態の１つにしたがって、命令をプリデコードすることと、
プリデコードされた命令をキャッシュにロードすることと、
キャッシュ内のプリデコードされた命令の１つが、プロセッサによって要求されると、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断することとを含む方法。
【請求項２】
プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであると判断されるとき、キャッシュ内のプリデコードされた命令の前記１つを実行することをさらに含む請求項１記載の方法。
【請求項３】
状態情報をプリデコードされた命令と共にキャッシュにロードすることをさらに含む方法であって、状態情報は、命令が前記状態の１つにしたがってプリデコードされたことを示す請求項１記載の方法。
【請求項４】
プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかについて判断することは、プロセッサの現在の状態をキャッシュ内の状態情報と比較することによって行われる請求項３記載の方法。
【請求項５】
プロセッサの現在の状態とキャッシュ内の状態情報との比較が、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであることを示すとき、キャッシュ内のプリデコードされた命令の前記１つを実行することをさらに含む請求項４記載の方法。
【請求項６】
プリデコードされた命令の前記１つは、メモリから検索された命令の１つとプリデコード情報とを含み、プロセッサの現在の状態とキャッシュ内の状態情報との比較が、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと異なることを示すとき、プリデコード情報を無視することをさらに含む請求項４記載の方法。
【請求項７】
プリデコード情報のない命令の前記１つを、実行前に処理することをさらに含む請求項６記載の方法。
【請求項８】
キャッシュが、プリデコードされた命令と関連付けられたタグを含み、タグは、プロセッサによって要求されたプリデコードされた命令の前記１つがキャッシュ内にあるかどうかを判断するために、プロセッサによって使用され、方法は、状態情報をタグに追加することをさらに含み、状態情報は、命令が前記状態の１つにしたがってプリデコードされたことを示す請求項１記載の方法。
【請求項９】
プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかについて判断することが、タグを調べることによって行われる請求項８記載の方法。
【請求項１０】
タグが、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであることを示すとき、プリデコードされた命令の前記１つをキャッシュから検索することをさらに含む請求項９記載の方法。
【請求項１１】
タグが、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと異なることを示すとき、メモリから命令のブロックの別のコピーを検索することをさらに含む請求項９記載の方法。
【請求項１２】
命令の第２のコピーから命令の１つを実行することをさらに含む請求項１１記載の方法。
【請求項１３】
プロセッサの現在の状態にしたがって、命令の前記別のコピーをプリデコードすることと、命令のプリデコードされた第２のコピーをキャッシュにロードすることとをさらに含む請求項１１記載の方法。
【請求項１４】
命令の第２のコピーからのプリデコードされた命令と第２のタグを関連付けることと、状態情報を第２のタグに追加することとをさらに含み、第２のタグに追加された状態情報は、命令の第２のコピーがプロセッサの現在の状態にしたがってプリデコードされたことを示す請求項１３記載の方法。
【請求項１５】
プロセッサの動作状態は、ＡＲＭ、サム、およびＴ２ＥＥの少なくとも２つを含んでいる請求項１記載の方法。
【請求項１６】
メモリと、
キャッシュと、
異なる状態において動作することができるプロセッサであって、状態の各々が異なる命令セットを支援し、状態の１つにおいて動作している一方で、メモリから命令のブロックを検索するようにさらに構成されているプロセッサと、
前記状態の１つにしたがって、メモリから検索された命令をプリデコードするように構成されたプリデコーダとを含み、
プロセッサが、プリデコードされた命令をキャッシュにロードするようにさらに構成されていて、キャッシュ内のプリデコードされた命令の１つが、プロセッサによって要求されると、その現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断する処理システム。
【請求項１７】
プロセッサが、その現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであると判断すると、プロセッサは、キャッシュ内のプリデコードされた命令の前記１つを実行するようにさらに構成されている請求項１６記載の処理システム。
【請求項１８】
プロセッサが、状態情報をプリデコードされた命令と共にキャッシュにロードするようにさらに構成されており、状態情報は、命令が前記状態の１つにしたがってプリデコードされたことを示す請求項１６記載の処理システム。
【請求項１９】
プロセッサは、プロセッサの現在の状態をキャッシュ内の状態情報と比較することによって、その現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断するようにさらに構成されている請求項１８記載の処理システム。
【請求項２０】
プロセッサの現在の状態とキャッシュ内の状態情報との比較が、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであることを示すとき、プロセッサは、キャッシュ内のプリデコードされた命令の前記１つを実行するようにさらに構成されている請求項１９記載の処理システム。
【請求項２１】
プリデコードされた命令の前記１つは、メモリから検索された命令の１つとプリデコーディング情報とを含み、プロセッサの現在の状態とキャッシュ内の状態情報との比較が、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと異なることを示すとき、プロセッサは、プリデコーディング情報を無視するようにさらに構成されている請求項１９記載の処理システム。
【請求項２２】
プロセッサの現在の状態とキャッシュ内の状態情報との比較が、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと異なることを示すとき、プロセッサは、プリデコード情報のない命令の前記１つを、実行前に処理するようにさらに構成されている請求項２１記載の処理システム。
【請求項２３】
キャッシュは、プリデコードされた命令と関連付けられたタグを含み、タグは、プロセッサによって要求されたプリデコードされた命令の前記１つがキャッシュ内にあるかどうかを判断するために、プロセッサによって使用され、プロセッサは、状態情報をタグに追加するようにさらに構成されていて、状態情報は、命令が前記状態の１つにしたがってプリデコードされたことを示す請求項１６記載の処理システム。
【請求項２４】
プロセッサは、タグを調べることによって、その現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断するようにさらに構成されている請求項２３記載の処理システム。
【請求項２５】
タグが、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであることを示すとき、プロセッサは、キャッシュからプリデコードされた命令の前記１つを検索するようにさらに構成されている請求項２４記載の処理システム。
【請求項２６】
タグが、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと異なることを示すとき、プロセッサは、メモリから命令のブロックの第２のコピーを検索するようにさらに構成されている請求項２４記載の処理システム。
【請求項２７】
プロセッサは、命令の第２のコピーから命令の１つを実行するようにさらに構成されている請求項２６記載の処理システム。
【請求項２８】
プリデコーダは、プロセッサの現在の状態にしたがって、命令の第２のコピーをプリデコードするようにさらに構成されていて、プロセッサは、命令のプリデコードされた第２のコピーをキャッシュにロードするようにさらに構成されている請求項２６記載の処理システム。
【請求項２９】
キャッシュは、命令の第２のコピーからプリデコードされた命令と第２のタグを関連付けるようにさらに構成されていて、プロセッサは、状態情報を第２のタグに追加するようにさらに構成されていて、第２のタグに追加された状態情報は、命令の第２のコピーがプロセッサの現在の状態にしたがってプリデコードされたことを示す請求項２８記載の処理システム。
【請求項３０】
プロセッサの動作状態は、ＡＲＭ、サム、およびＴ２ＥＥを含んでいる請求項１６記載の処理システム。
【発明の詳細な説明】
【発明の分野】
【０００１】
本開示は、概ね、処理システム、より具体的には、複数の状態のプロセッサ（multiple-state processor）のための命令のキャッシングに関する。
【発明の背景】
【０００２】
コンピュータは、一般に、メモリによって支援されているプロセッサを使用する。メモリは、プロセッサによってその機能を行うのに必要とされるプログラムおよびデータを保持する記憶媒体である。最近、より強力なソフトウェアプログラムの到来で、メモリに対する要求は、驚異的な速さで高まってきている。その結果、現代のプロセッサは大量のメモリを必要とし、大量のメモリは、より小さいメモリよりも、本質的により低速である。今日のプロセッサを支援することができる速度をもつ大型メモリは、大規模な市販用に応用するには、過度にひどくコスト高である。
【０００３】
コンピュータの設計者は、メモリを幾つかの階層的な構成要素に編成することによって、この問題に対処した。容量の点で最も大きい構成要素は、通常、ハードドライブである。ハードドライブは、大量のコスト安の永久メモリ（permanent memory）を与える。基本入出力システム(basic input/output system, BIOS)およびオペレーティングシステムは、通常ハードドライブ上に記憶されるプログラムのほんの幾つかの例である。コンピュータが動作可能であるとき、これらのプログラムは、ランダム アクセス メモリ(Random Access Memory, RAM)へロードされ得る。ユーザによって起動されるソフトウェアアプリケーションも、ハードドライブからＲＡＭへロードされ得る。ＲＡＭは、プロセッサが情報により即座にアクセスすることを可能にする一時記憶装置である。
【０００４】
コンピュータのＲＡＭは、それでもまだプロセッサに遅れずについていくのに十分に速くはない。これは、プログラム命令およびデータがＲＡＭに書き込まれ、そこから読み出されるのを、プロセッサが待つことを必要とし得ることを意味する。キャッシュは、プロセッサによって最も頻繁に使用される情報を即座に使用可能にすることによって、メモリアクセスの速度を高めるのに使用されている。これは、一次またはレベル１（Level 1, L1）のキャッシュとして知られている小量のメモリを、プロセッサへ統合することによって達成される。ＲＡＭとＬ１キャッシュとの間の二次またはレベル２(Level 2, L2)キャッシュも、幾つかのコンピュータの応用において使用され得る。
【０００５】
コンピュータの速度は、命令を、キャッシュに入れる前に部分的にデコードすることによって、さらに改善され得る。このプロセスは、しばしば“プリデコーディング（pre-decoding）”と呼ばれ、命令と共にキャッシュに記憶されることができる幾らかの“プリデコード情報”を生成することを必要とする。プリデコード情報は、命令の幾つかの基本的側面、例えば、命令が、演算（arithmetic）命令であるか、または記憶命令であるか、命令がブランチ命令であるか、命令がメモリを参照するか、あるいはデコード論理の複雑さを低減するためにプロセッサによって使用され得る任意の他の情報を示す。命令をプリデコードすることは、プロセッサの性能を、それが動作する頻度を低減することなく、機械のパイプラインの長さを短くすることによって改善する。
【０００６】
複数の状態において動作することができるプロセッサは、今日出現しつつある技術にとって一般的になってきている。“複数の状態のプロセッサ（multiple state processor）”は、２つ以上の異なる命令セットを支援することができるプロセッサを意味する。アドバンスＲＩＳＣマシン(Advance RISC Machine, ARM）プロセッサは、単なる一例である。ＡＲＭプロセッサは、効率的で低電力のＲＳＩＣプロセッサであり、移動体の応用、例えば、単に幾つかの名前を挙げると、移動電話、パーソナル ディジタル アシスタント(personal digital assistant, PDA)、ディジタルカメラ、およびゲーム機において今日一般に使用されている。ＡＲＭプロセッサは、歴史的に、２つの命令セット、すなわち、全ての命令が３２ビット長であるＡＲＭ命令セットと、最もよく使用されている命令を１６ビットのフォーマットに圧縮するサム命令セット（Thumb instruction set）とを支援してきた。幾つかのＡＲＭプロセッサに最近加えられた第３の命令セットは、“サム２実行環境”(Thumb-2 Execution Environment, T2EE)である。Ｔ２ＥＥは、（サム（Thumb）に似た）命令セットであって、バイトコード言語、例えば、Ｊａｖａ（登録商標）およびＮＥＴに対する動的な(ＪＩＴ)コンパイルターゲット（compilation target）として最適化される命令セットである。
【０００７】
これらの複数の状態のプロセッサは、今日のコンピューティングシステムの能力を相当に向上したが、コンピュータの設計者に独特な問題を提起した。例えば、Ｌ１命令キャッシュ内の１本のライン（line）のサイズの命令のブロックが、複数の命令セットからの命令を含んでいるとき、全キャッシュラインが１つの状態の命令を含んでいると仮定して計算されたプリデコード情報は、実際は別の状態である命令に使用することができない。この開示に記載されている解決案は、サム（Thumb）またはＴ２ＥＥ、あるいはこの両者の能力をもつＡＲＭプロセッサに制限されず、複数の命令セットの命令を、命令のエンコーディングを重複させて、それらをキャッシュに入れる前に、プリデコードする任意のシステムに適用され得る。
【発明の概要】
【０００８】
本発明の１つの態様は、プロセッサを操作する方法に関する。プロセッサは異なる状態において動作することができ、各状態は異なる命令セットを支援する。方法は、プロセッサが状態の１つにおいて動作している一方で、メモリから命令のブロックを検索することと、前記状態の１つにしたがって命令をプリデコードすること、プリデコードされた命令をキャッシュにロードすることと、キャッシュ内のプリデコードされた命令の１つがプロセッサによって要求されると、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断することとを含む。
【０００９】
本発明の別の態様は、処理システムに関する。処理システムは、メモリと、キャッシュと、異なる状態において動作することができるプロセッサであって、状態の各々が異なる命令セットを支援し、状態の１つにおいて動作している一方で、メモリから命令のブロックを検索するようにさらに構成されているプロセッサと、前記状態の１つにしたがって、メモリから検索された命令をプリデコードするように構成されたプリデコーダとを含み、プロセッサは、プリデコードされた命令をキャッシュにロードし、キャッシュ内のプリデコードされた命令の１つがプロセッサによって要求されると、その現在の状態が、命令をプリデコードするのに使用された前記状態の１つと同じであるかどうかを判断するようにさらに構成されている。
【００１０】
本発明の他の実施形態は、本発明の種々の実施形態が例示的に示され、記載されている次の詳細な説明から、当業者には容易に明らかになるであろうと理解される。認識されることになるように、本発明は、他および異なる実施形態が可能であり、その幾つかの細部は、本発明の意図および範囲から全く逸脱しないならば、種々の他の点において変更することができる。したがって、図面および詳細な説明は、本質的に例示的であって、限定的ではないと考えられる。
【好ましい実施形態の詳細な説明】
【００１１】
本発明の態様は、添付の図面において、制限的にではなく、例示的に示されている。
【００１２】
添付の図面に関連して次に記載される詳細な説明は、本発明の種々の実施形態の説明として意図されており、本発明が実行され得る唯一の実施形態を表わすことを意図されていない。詳細な説明は、本発明を完全に理解させるために、具体的な詳細を含んでいる。しかしながら、当業者には、本発明が、これらの具体的な詳細がなくても実行され得ることが明らかであるだろう。幾つかの例において、本発明の概念を不明瞭にするのを避けるために、周知の構造および構成要素がブロック図の形で示されている。
【００１３】
図１は、情報を処理、検索、および記憶することができるコンピュータ100または他の処理システムの例を示す概念ブロック図である。コンピュータ100は、スタンドアロン型の構成要素であるか、またはその代わりに、デバイス、例えば、移動電話、ＰＤＡ、ディジタルカメラ、ゲーム機、または任意の他の適切なデバイスに埋め込まれ得る。コンピュータ100は、プロセッサ102、例えば、マイクロプロセッサまたは他の処理エンティティを含み得る。コンピュータ100の１つの実施形態において、プロセッサ102は、業界では一般にＡＲＭプロセッサと呼ばれている３２ビットの埋め込みＲＳＩＣマイクロプロセッサである。ＡＲＭプロセッサは、無線、消費者、画像化、自動車、産業、およびネットワーキングの応用に対する複雑なオペレーティングシステムを実行するプラットフォームとして、一般に使用されている。多くのＡＲＭプロセッサに含まれているのは、よく使用されている３２ビットのＡＲＭ命令を１６ビットの形式に圧縮するサム命令セット（Thumb instruction set）である。ＡＲＭは、３２ビットの命令もサム（Thumb）に加えた。サム命令セットは、コード密度が要求されるときに使用することができる３２ビットのＡＲＭ命令のサブセットの省略表現である。この開示の背景の部分に示されているように、ＡＲＭプロセッサは、Ｔ２ＥＥも実行し得る。
【００１４】
コンピュータ100はメモリ104も含み得る。メモリ104は、プロセッサ102によってその機能を行うために必要とされるプログラム命令およびデータを保持する。メモリ104は、ＲＡＭまたは他の適切なメモリで実施され、コンピュータのメインメモリ、およびオプションでＬ２キャッシュから構成され得る。命令キャッシュ106は、プロセッサ102とメモリ104との間で使用され得る。命令キャッシュ106は、プロセッサ102によって実行されるメモリ104からのプログラム命令の一時記憶装置に使用される比較的に小さい高速のＬ１キャッシュである。コンピュータ100の１つの実施形態において、命令キャッシュ106は、メモリ104に使用され得るより低速でよりコスト安のダイナミックＲＡＭ（dynamic RAM, DRAM）ではなく、高速のスタティックＲＡＭ（static RAM, SRAM）である。大抵のプログラムは同じ命令に繰り返しアクセスするので、命令キャッシュ106は、プロセッサのアクセス速度を高める機構を与える。この情報をできるだけ多く命令キャッシュ106に保持することによって、プロセッサ102は、より低速のメモリ104にアクセスする必要を回避する。コンピュータ100は、命令の実行に使用されるデータの記憶装置としてデータキャッシュ(図示されていない)をさらに含み得る。
【００１５】
命令キャッシュ106は、プロセッサ102によってメモリ104から一番最近アクセスされた命令の記憶装置を与える。プロセッサ102は、メモリ104から命令を要求するとき、先ず、命令キャッシュ106を調べ、命令がそこにあるかどうかを確かめる。プロセッサ102によって要求された命令が、命令キャッシュ106内で見付かったときは、ルックアップは“キャッシュヒット”と呼ばれる。キャッシュヒットのときは、命令は、命令キャッシュ106から直接に検索され、したがって、命令が処理され得る速度を大幅に高め得る。プロセッサ102によって要求された命令が、命令キャッシュ106内で見付からないときは、“キャッシュミス”になる。キャッシュミスのときは、プロセッサ102は、要求した命令をメモリ104からフェッチしなければならず、これは、命令キャッシュ106から命令をフェッチするよりも、相当により長く時間がかかる。通常、プロセッサ102はメモリ104から“キャッシュライン”をフェッチする。メモリ104からのキャッシュラインは、将来のアクセスのために、命令キャッシュ106に記憶され得る。
【００１６】
メモリ104からの命令を命令キャッシュ106に入れる前に、プリデコードすることによって、コンピュータの性能はさらに向上し得る。命令がメモリ104からフェッチされると、プリデコーダ108はそれらを取り込んで、プロセッサ102の動作状態にしたがって、それらをプリデコードし、プリデコード情報を命令キャッシュ106に記憶する。プロセッサ102からのシグナリングは、プリデコーディング動作のためにプロセッサ102の現在の動作状態を示すのに使用され得る。
【００１７】
図２は、プリデコーダの例を示す機能ブロック図である。プリデコーダ108は、メモリ104(図１参照)からキャッシュラインにおいて命令を受信する入力レジスタ202を含んでいる。複数の状態のプロセッサの場合には、２つのプリデコーダが、各プロセッサの状態204a、204bに対して１つずつ使用され得る。入力レジスタ202内の命令は、プリデコーダ204a、204bに与えられ、各命令に対するプリデコード情報を生成し得る。マルチプレクサ206は、プロセッサ102(図１参照)からのシグナリングに基づいて、適切なプリデコーディング情報を選択するのに使用され得る。プリデコーダ108の幾つかの実施形態において、プリデコーダ204a、204bへの入力はゲート制御され、プロセッサ102によって選択されたプリデコーダのみをイネーブルすることによって、電力を節約し得る。レジスタ202からの各命令は、マルチプレクサ206からの対応するプリデコード情報とともに、出力レジスタ208に入れられ得る。出力レジスタの内容は、プロセッサ102および命令キャッシュ106(図１参照)の両者に読み込まれ得る。
【００１８】
図３Ａは、１つの命令302がそのプリデコード情報304と共に命令キャッシュ106にどのように記憶されるかを示している。図３Ｂは、８個の命令を含む全キャッシュラインが命令キャッシュ106にどのように記憶されるかを示している。この例において、各命令302aないし302hは、その末尾に、そのプリデコード情報304aないし304hを付加している。プリデコーディング情報は、特定の応用および全体的な設計の制約に応じて、任意の数のビットであり得る。さらに、８個の命令を使用して、キャッシュラインを説明しているのは、各キャッシュラインがあらゆる数の命令を保持し得るという了解のもとで、単なる一例として与えられている。
【００１９】
命令キャッシュ106は、キャッシュディレクトリ(図示されていない)を維持している。キャッシュディレクトリは、各キャッシュラインに対して、１つのエントリまたは“タグ”を含んでいる。１対１のマッピングが、キャッシュ記憶装置の配列において、キャッシュ ディレクトリ タグと、タグと関連付けられるキャッシュラインとの間に存在する。キャッシュ ディレクトリ タグは、キャッシュライン内の第１の命令のメモリアドレスを含んでいる。プロセッサ102(図１参照)は、キャッシュディレクトリを、そのメモリアドレスをもつタグについてサーチすることによって、命令をフェッチする。整合は、キャッシュヒットを示す。整合したキャッシュ ディレクトリ タグは、何れのキャッシュラインが要求された命令を含んでいるかを決める。次に、プロセッサは、命令およびそのプリデコード情報にアクセスし得る。プロセッサが整合を見付けることができないとき(すなわち、キャッシュミス)、プロセッサは、メモリ104(図１参照)からキャッシュラインを読み出すことを試みる。メモリから検索されたキャッシュラインは、プリデコードされ、命令キャッシュ106に入れられる。さらに、１つ以上の命令が、即時のデコーディングおよび実行のために、プロセッサ102に直接にロードされ得る。キャッシュディレクトリは更新され、プロセッサ102が、将来アクセスするときに、キャッシュ記憶装置の配列内においてキャッシュラインが存在する場所を判断することができる。
【００２０】
図１の処理システムにおいて、複数の状態のプロセッサ102が使用されるとき、複数の命令セットがメモリ104内に存在し得る。これらの複数の状態の処理環境では、メモリ104から検索されたキャッシュラインは、プロセッサの複数の状態に対する命令を含み得る。キャッシュライン内の各命令は、プロセッサ102の現在の状態に基づいてプリデコードされるが、全キャッシュラインは、一度にプリデコードされる。例えば、プロセッサ102が、メモリ104からキャッシュラインを検索するときに、特定の状態で動作している場合、キャッシュラインに含まれている全命令は、命令キャッシュ106に入れられる前に、それらがその状態の命令であるかのように、プリデコードされる。このプリデコーディングのために、プロセッサ102が異なる状態であるとき、命令キャッシュ106へ後でアクセスすると、適切に実行することができない。
【００２１】
命令キャッシュ106から検索された各命令が、プロセッサ102によって正しくないプリデコード情報と共に実行されないことを保証するために、幾つかの技術が処理システム100によって使用され得る。１つの可能な解決案では、“状態情報”をプリデコードされた命令と共に各キャッシュラインに記憶する。“状態情報”は、関連付けられたキャッシュラインがプリデコードされたときに、プロセッサ102がどの状態であったかを示す１つ以上のビットとして定義される。図３Ｃは、８個のプリデコードされた命令を含む全キャッシュラインが、状態情報と共にどのように記憶されるかを示している。図３Ｂと同様に、各命令302aないし302hは、その末尾に、そのプリデコーディング情報304aないし304hを付加している。しかしながら、図３Ｂに示されていることに加えて、２ビットの状態情報306が、キャッシュラインの最初に含まれている。２ビットの状態情報は、４つまでの異なる動作状態を与える。当業者は、他の応用において、必要な数のプロセッサの状態を支援するのに必要なビット数を容易に判断することができるであろう。
【００２２】
図４は、状態情報をプリデコードされた命令と共に使用して、特定の命令に対するプリデコーディング情報が正しいかどうかを判断する複数の状態のプロセッサの動作を示すフローチャートである。ステップ402において、プロセッサは、要求した命令の仮想アドレスをメモリアドレスに変換する。次に、プロセッサは、ステップ402のメモリアドレスに対するキャッシュ ディレクトリ内のタグをサーチする。サーチ結果は、キャッシュヒットまたはキャッシュミスである。キャッシュミスのときは、ステップ406において、プロセッサは、メモリから命令を検索することを試みる。キャッシュヒットのときは、ステップ408において、プロセッサは、命令キャッシュから命令を検索し、ステップ410において、対応する状態情報を、プロセッサの現在の状態と比較する。プロセッサの現在の状態が、命令の状態情報と整合すると、ステップ412において、プロセッサは、プリデコード情報を使用して、命令をデコードし、実行する。そうでなければ、プロセッサは、ステップ412において命令をデコードし、実行する前に、ステップ414において、命令をプリデコードする。
【００２３】
別の可能な解決案では、各キャッシュ ディレクトリ タグ内に状態情報を含む。図５は、状態情報がキャッシュディレクトリ内のタグにどのように追加され得るかを示している。キャッシュディレクトリ502は、複数のタグ504をもっているように示されており、各タグは、キャッシュ記憶装置の配列内のキャッシュラインに対応する。キャッシュ ディレクトリ タグ504は、アドレスフィールド506と状態フィールド508とを含んでいる。アドレスフィールド506は、キャッシュライン内の第１の命令のメモリアドレスを含み、状態フィールド508は、キャッシュラインがプリデコードされたときのプロセッサの状態を識別する状態情報を含んでいる。
【００２４】
図６は、キャッシュ ディレクトリ タグ内の状態情報を使用して、特定の命令のプリデコーディング情報が正しいかどうかを判断する複数の状態のプロセッサの動作を示すフローチャートである。ステップ602において、プロセッサは、要求された計算を行って、キャッシュのルックアップを行うのに使用されるアドレスを生成する。ステップ604において、プロセッサは、プロセッサの現在の状態に対応するメモリアドレスに状態情報を追加する。状態情報と組み合わされたメモリアドレスが、タグを形成する。次に、ステップ606において、プロセッサによって形成されたタグが、キャッシュディレクトリ内のタグと比較される。この場合に、キャッシュヒットは、プロセッサによって要求された命令が、命令キャッシュ内にあるだけでなく、プリデコードされた命令が、プロセッサによってその現在の状態で実行できることも意味する。キャッシュヒットのときは、ステップ608において、プロセッサは命令を検索し、ステップ610において、プリデコーディング情報を使用して、命令をデコードし、実行する。キャッシュミスのときは、ステップ612において、プロセッサは、メモリから、要求した命令をもつキャッシュラインを検索し、ステップ614において、キャッシュラインのプリデコードを開始し、ステップ610において、プリデコード情報を使用して、命令をデコードし、実行する。ステップ616において、プロセッサは、プリデコードされたキャッシュラインを命令キャッシュに記憶し、そのタグを、アドレスおよび状態情報に関して更新する。その結果、メモリのブロックの複数のコピーが、異なるキャッシュラインにおいて命令キャッシュ内に存在することができる。これらのコピーの各々に存在する命令は、異なる状態においてプリデコードされ、キャッシュの１回のルックアップは、複数のキャッシュヒットを返さない。
【００２５】
本明細書に開示されている実施形態に関連して記載された種々の例示的な論理ブロック、モジュール、回路、素子、および／または構成要素は、汎用プロセッサ、ディジタル信号プロセッサ（digital signal processor, DSP）、特定用途向け集積回路（application specific integrated circuit, ASIC）、フィールド プログラマブル ゲート アレイ（field programmable gate array, FPGA）または他のプログラマブル論理構成要素、ディスクリートなゲートまたはトランジスタ論理、ディスクリートなハードウェア構成要素、あるいは本明細書に記載されている機能を実行するように設計された任意の組合せで実施または実行され得る。汎用プロセッサはマイクロプロセッサであってもよいが、その代わりに、プロセッサは任意の従来のプロセッサ、制御装置、マイクロコントローラ、または状態機械であってもよい。プロセッサは、コンピューティング構成要素の組合せ、例えば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰのコアと関連する１つ以上のマイクロプロセッサ、または任意の他のこのような構成としても実施され得る。
【００２６】
本明細書に開示されている実施形態に関連して記載された方法またはアルゴリズムは、ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、または２つの組合せにおいて直接的に具体化され得る。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、取り外し可能ディスク、ＣＤ−ＲＯＭ、または技術的に知られている記憶媒体の任意の他の形態の中に存在し得る。記憶媒体がプロセッサに接続されると、プロセッサは記憶媒体から情報を読み出し、そこへ情報を書き込むことができる。その代りに、記憶媒体は、プロセッサと一体構成であってもよい。
【００２７】
開示された実施形態のこれまでの記述は、当業者が本発明を作成または使用できるようにするために与えられている。これらの実施形態に対する種々の変更は、当業者には、容易に明らかになり、本明細書に定義されている一般的な原理は、本発明の意図および範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明は、本明細書に示されている実施形態に制限されることを意図されず、請求項にしたがう全範囲にしたがい、要素を単数形で記載していることは、“１つおよび１つのみ”であると具体的に記載されていないならば、そのような意味をもつことを意図されていない。当業者に知られている、または知られることになる本開示の全体を通して記載されている種々の実施形態の要素に対して構造的および機能的に同等のものの全ては、請求項に含まれることを意図されている。さらに加えて、本明細書の開示は、そのような開示が請求項に明示的に記載されているかどうかに関わらず、公に供されることを意図されていない。請求項の要素は、その要素が“〜のための手段（means for）”という語句を使用して、または方法の請求項の場合は、“〜のためのステップ（step for）”という語句を使用して明示的に記載されていないならば、米国特許法第１１２条第６項の条項のもとで解釈されない。
【図面の簡単な説明】
【００２８】
【図１】処理システムの例を示す機能ブロック図。
【図２】プリデコーダの例を示す機能ブロック図。
【図３Ａ】キャッシュ内の命令のデータ構造を示す図。
【図３Ｂ】キャッシュラインのデータ構造を示す図。
【図３Ｃ】キャッシュラインのデータ構造を状態情報と共に示す図。
【図４】複数の状態のプロセッサの１つの実施形態の動作を示すフローチャート。
【図５】キャッシュ ディレクトリ タグのデータ構造を状態情報と共に示す図。
【図６】複数の状態のプロセッサの別の実施形態の動作を示すフローチャート。
【符号の説明】
【００２９】
206・・・マルチプレクサ、208・・・出力レジスタ、302aないし302h・・・命令、304aないし304h・・・プリデコード情報、504・・・タグ、506・・・アドレスフィールド、508・・・状態フィールド。
【図１】
2008541313.tif 000003
【図２】
2008541313.tif 000004
【図３Ａ】
2008541313.tif 000005
【図３Ｂ】
2008541313.tif 000006
【図３Ｃ】
2008541313.tif 000007
【図４】
2008541313.tif 000008
【図５】
2008541313.tif 000009
【図６】
2008541313.tif 000010
【国際調査報告】
2008541313.tif 000011
2008541313.tif 000012