(57)【特許請求の範囲】
【請求項１】
復号された情報を供給する装置において、
符号化された情報を格納するメモリ・モジュールと、
前記メモリ・モジュールに結合され、符号化された情報をフェッチして復号し、当該復号された情報を供給するデコーダと、
前記メモリ・モジュール及び前記デコーダ及び復号された情報の受け取り手段に結合されたキャッシュと、を備え、
前記デコーダ、前記キャッシュ、及び復号された情報の前記受け取り手段のうちの少なくとも１つが、キャッシュ・チェック条件が満たされるかどうかを決定するよう適合され、
前記キャッシュは、少なくとも１組の復号された情報を格納し、且つキャッシュ・チェック条件が満たされ且つキャッシュ・ヒットが生じる場合、１組の復号された情報を情報の前記受け取り手段に与えるよう適合されており、
前記キャッシュが前記１組の情報を与えた後直ぐに、前記デコーダが復号された情報を与えるように、前記１組の情報の最大長が設定され、
前記キャッシュ・チェック条件が、フローの変更が生じるとき、又は、所定のグループの命令からの１つの命令が前記デコーダにより復号されるとき、又は、分岐予測が間違っているとき、に満たされる条件である、
装置。
【請求項２】
前記復号された情報が、復号された命令を備え、
復号された情報の前記受け取り手段が、前記復号された命令を実行するよう適合されている、
請求項１記載の装置。
【請求項３】
前記キャッシュが、復号された命令を格納し、
前記メモリモジュールが、符号化された命令を格納し、
復号された情報の前記受け取り手段が、復号された命令を実行するよう適合されたプロセッサである、
請求項２記載の装置。
【請求項４】
前記キャッシュは、最大長を有する１組の命令を格納するよう適合されており、
前記デコーダは、前記キャッシュが最大長を有する１組の情報を与えた直後に復号された情報を与えるよう適合されている、
請求項１記載の装置。
【請求項５】
前記装置が、暗号解読された情報の長さの変動を補償するアドレス変換機構を有する請求項１記載の装置。
【請求項６】
前記アドレス変換機構は、前記デコーダにより復号されるべき情報の少なくとも第１の部分を格納するメモリ・ワードの少なくとも１つの位置を前記メモリ・モジュールに与えるよう適合されている請求項５記載の装置。
【請求項７】
前記キャッシュが完全に連想型である請求項１記載の装置。
【請求項８】
前記キャッシュが、
タグ・メモリと、
少なくとも１つの組の暗号解読された情報のステータスを定義する変数を格納するレジスタ・ファイルと、
少なくとも１つの組の暗号解読された情報を格納するキャッシュ・メモリと、
前記タグ・メモリ、前記レジスタ・ファイル及び前記キャッシュ・メモリに結合され、情報を前記キャッシュに与えること及び情報を前記キャッシュから受け取ることを制御する制御ユニットと、
を備える請求項１記載の装置。
【請求項９】
前記キャッシュ・メモリ内の各情報は、次の情報のアドレスにより随伴される請求項８記載の装置。
【請求項１０】
前記タグ・メモリが複数の復号された命令を格納し、
当該複数の復号された命令のそれぞれが、前記キャッシュ・メモリに格納されている１組の復号された命令からの第１の命令である、
請求項９記載の装置。
【請求項１１】
復号された情報を供給する方法において、
キャッシュを初期化するステップと、
キャッシュが、情報を復号された情報の受け取り手段に供給するための要求を受け取り、且つキャッシュ・チェック条件が満たされているかをチェックするステップと、
（ａ）キャッシュ・チェック条件が満たされていないとき、デコーダが、前記復号された情報の受け取り手段に、復号された情報を供給し、且つ、復号された情報を前記情報の受け取り手段に与えるための要求をキャッシュが受け取るステップにジャンプするステップと、
（ｂ）キャッシュ・チェック条件が満たされているとき、前記キャッシュが、キャッシュ・ヒット又はキャッシュ・ミスが生じているかをチェックするステップと、
（ｃ）キャッシュ・ミスが生じている場合、前記キャッシュ・ミスを起こした命令で始まる完全な組の命令が前記キャッシュに格納されるまで前記キャッシュを更新し、且つ前記デコーダが、復号された情報を、前記復号された情報の受け取り手段に与え、且つ、
復号された情報を、復号された情報の前記受け取り手段に与えるための要求を前記キャッシュが受け取るステップにジャンプするステップと、
（ｄ）キャッシュ・ヒットが生じている場合、
（ｉ）キャッシュが、復号された情報をキャッシュから、前記復号された情報の受け取り手段へ供給し、
（ii）メモリ・モジュールが、前記キャッシュに格納された前記復号された情報に続く符号化された情報を前記デコーダに供給し、前記デコーダが、符号化された情報を復号し、且つ、
（iii）  キャッシュ・ヒットを生じた命令で始まる完全な組の命令が供給された場合、又は、
（iv）新しいキャッシュ・チェック条件が満たされた場合、
のいずれかまでステップ（ｉ）及び（ii）を繰り返し、
且つ、
（v）復号された情報を、復号された情報の受け取り手段に与えるための要求をキャシュが受け取るステップにジャンプするステップと、
を備え、
前記キャッシュが前記１組の情報を与えた後直ぐに、前記デコーダが復号された情報を与えるように、前記１組の情報の最大長が設定され、
前記キャッシュ・チェック条件が、フローの変更が生じるとき、又は、所定のグループの命令からの１つの命令が前記デコーダにより復号されるとき、又は、分岐予測が間違っているとき、に満たされる条件である、
方法。
【請求項１２】
復号された情報を、復号された情報の受け取り手段に与える前記ステップが、前記復号された情報の受け取り手段により実行されるべき命令を与えるステップを備える請求項１１記載の方法。
【請求項１３】
命令を与える前記ステップは、復号された命令を、復号された命令を実行するよう適合されたプロセッサに与えるステップを備える請求項１２記載の方法。
【請求項１４】
復号された情報を、キャッシュから、前記復号された情報の前記受け取り手段に与える前記ステップは、最大長を有する１組の復号された情報を与えるステップを備え、
最大長を有する１組の復号された情報を与える前記ステップには、直ぐに、復号された情報を前記デコーダから前記復号された情報の受け取り手段に与えるステップが続く、
請求項１１記載の方法。
【請求項１５】
ステップ（ｃ）及び（ｄ）は、暗号解読された情報の長さの変動を補償するためアドレスを変換するステップを含む請求項１１記載の方法。
【発明の詳細な説明】
【０００１】
［発明の分野］
本発明は、復号された情報を与える装置及び方法に関し、そして特に、復号された情報を格納し且つそれを情報受取人に与える装置に関する。
【０００２】
［発明の背景］
本明細書で用いられるように、単語「情報」は、任意の種類のデータ又は命令あるいはこれら両方を含むことを意図するものである。本明細書で用いられるように、次の単語、即ち、符号化する、暗号化する、暗号に組む、圧縮された、及び次の単語、即ち、復号する、復元する（暗号解読する、暗号解除する）、暗号を解読する（暗号を翻訳する）、圧縮解除する（復元する）、及び関連の形式は、より少ない空間又は伝送時間を占有するための周辺の意味、短縮又は圧縮、又はいずれの他の情報技術を含むが、これらに限定されない、いずれかの目的のためのコーディングの任意の形式を含むことを意図するものである。次の単語、即ち、符号化する、暗号に組む、暗号化する、圧縮するは、同じ意味を有することを意図し、そしてそれらの逆の形式、例えば、復号する、暗号解除する、暗号を解読する、圧縮解除するに対しても同様である。説明の便宜のため、そして前述の用語「情報」及び「コード化された」の意味を限定することなしに、用語「命令」及び「コード化された」が本明細書で用いられている。
【０００３】
命令をコード化された形式で格納する必要性がある。これは、意図しないユーザに対して命令を不透明にする希望、又は冗長性排除又は短縮コーディングのある手段を通してメモリ空間を保全する希望の故に、又は他の理由のために生じる。
【０００４】
情報をコード化された形式で格納することが幾つかの問題を引き起こし、それらの問題の中には、メモリから検索された情報を復号する必要性が存在する。コード化された命令が再フェッチされねばならないとき、それを再び復号する必要性が存在し、それにより時間の浪費及び装置の性能の劣化が引き起こされる。
【０００５】
多くのコンピュータ装置において、これらの問題は、フローの変更が生じるとき非常に厳しい。フローの変更が起こるとき、命令は、メモリからフェッチされ、そしてコンピュータ装置のＣＰＵに与えられる前に復号されねばならない。
【０００６】
フローの変更は、条件付き分岐又は無条件に関係する命令の実行のような、様々な理由のため生じる場合がある。分岐目標命令は、分岐命令を実行するときＣＰＵによりフェッチされる命令である。分岐目標命令のアドレスは、「分岐目標アドレス」として知られ、そしていずれの分岐命令の一部である。ＰｏｗｅｒＰＣマイクロプロセッサのＩｓｙｎｃ命令のようなある一部の命令においては、分岐目標アドレスは予め決められており、それは演算コード（ｏｐｃｏｄｅ）のみから駆動される。
【０００７】
この問題はまた、分岐予測が間違っているとき生じる。そのような場合には、分岐命令に続く命令を再フェッチする必要性がある。
前述の時間の浪費及び装置の性能の劣化は特に、フローの非常に頻繁な変更を扱うことを想定されるコンピュータ装置において非常に厳しい。
【０００８】
命令をコード化された形式で格納することに関連した別の問題は、コード化された命令が整列されてない要領で命令の長さが変わることである。更に、単一のコード化された命令は、メモリ・ワードの一部に、又は単一のメモリ・ワードより多いメモリ・ワードにすら格納される可能性がある。
【０００９】
フローの頻繁な変更を最小のペナルティで可能にする必要性が存在する。従来技術のこれら及び他の周知の制限を低減又は排除する改良されたコンピュータ及びコンピュータ・メモリ組織及び動作（オペレーティング）方法に対する目下の必要性が存在する。
本発明が特に、特許請求の範囲で指摘されるが、本発明の他の特徴は、添付図面と関係した以下の詳細な説明により開示される。
【００１０】
［発明の詳細な説明］
発明の詳細な説明及び添付図面において用いられる特定の用語及び表現、及び発明の詳細な説明及び添付図面において開示されている特定の構造及び動作の詳細は、例示の目的のみのためであり、そして特許請求の範囲に記載された発明の範囲を何ら限定する意図ではないことに注目すべきである。
【００１１】
本発明は、復号された命令のような暗号解除された情報を与える装置及び方法を提供し、その装置は、復号される命令を格納するメモリ・モジュールと、上記メモリ・モジュールに結合され、復号される命令をフェッチし且つ復号して、復号された命令を与えるデコーダと、上記メモリ・モジュール、上記デコーダ及び復号された命令の受け取り手段（ｒｅｃｉｐｉｅｎｔ）に結合されたキャッシュとを備え、上記キャッシュは、キャッシュのチェック条件が満たされ且つキャッシュ・ヒットが生じた後で上記命令の受け取り手段に与えられるための少なくとも１組の復号された命令を格納するよう適合されている。
【００１２】
上記命令は、情報の受け取り手段により実行されることが好都合である。命令は、復号された形式でキャッシュに格納され、そして符号化された形式でメモリ・モジュールに格納され、そして命令の受け取り手段は、復号された命令を実行するよう適合されている処理装置である。
【００１３】
キャッシュのチェック条件は、フローの変更が生じるとき満たされるのが好都合である。キャッシュのチェック条件はまた、所定のグループの命令からの命令がデコーダにより復号されるとき満たされるのは任意である。命令のグループは、Ｉｓｙｎｃ命令のような所定の分岐目標アドレスを有する分岐命令を備えるのが好ましい。キャッシュのチェック条件はまた、分岐予測が間違っているとき満たされることができる。
【００１４】
１組の命令の最大長は、キャッシュが上記１組の命令を与えた直後にデコーダが復号された命令を与えるのを可能にする要領で上記最大長が設計されている最悪シナリオのような様々なシナリオに応えるよう設計されている。上記最大長は、通常のシナリオに応えるようより短くすることができ、それにより大部分の場合に、デコーダは、キャッシュが上記１組の命令を与えた直後に復号された命令を与えることができる。
【００１５】
上記装置は、復号された命令の長さの変動を補償するためのアドレス変換機構を有することが好都合である。この機構は、デコーダにより復号されるべき命令の少なくとも第１の部分を格納するメモリ・ワードの少なくとも１つの位置を上記メモリ・モジュールに与えるよう適合されている。
【００１６】
上記キャッシュは、タグ・メモリと、少なくとも１組の復号された命令のステータス（状態）を定義する変数を格納するためのレジスタ・ファイルと、少なくとも１組の復号された命令を格納するためのキャッシュ・メモリと、上記タグ・メモリ、レジスタ・ファイル及びキャッシュ・メモリに結合され、命令を上記キャッシュへ与え且つそれから受け取ることを制御するための制御ユニットとを備えることが好都合である。上記キャッシュ・メモリ内の各命令は、次の命令のアドレスにより付随される。タグ・メモリは、それぞれの命令がキャッシュ・メモリに格納されている１組の復号された命令からの第１の命令である、複数の復号された命令を格納する。
【００１７】
説明の便宜のため、符号化された命令は復号された命令であり、そしてフローの変更は分岐の結果であると仮定する。
図１は、本発明を採用した、プロセッサ／ＣＰＵ２２に結合された装置１９の単純化されたブロック図である。装置１９は、制御バス１１１、命令バス１１２及びアドレス・バス１１３により結合されたキャッシュ２４、命令メモリ・モジュール２６及びデコーダ２８を備える。図２から図６に従って更に詳細に説明されるように、キャッシュ２４は複数の復号された組の命令を格納し、その各組は分岐目標命令でもって開始する。この構成は、フローの変更が生じるとき、復号された命令の提供を可能にする一方、デコーダ２８は、上記組の命令がキャッシュ２４により与えられた後で与えられるべき符号化された命令を復号する。キャッシュ２４は、キャッシュ２４内の上記組の命令の最後の命令に続く符号化された命令の少なくとも第１の部分のアドレスを命令メモリ・モジュール２６に与える。その命令の部分及び他の引き続く部分、及びそれに引き続く命令は、デコーダ２８に供給されて、復号され、そしてＣＰＵ２２に与えられる。
【００１８】
キャッシュ・ミスが生じるとき、デコーダ２８は、関連した符号化された命令を命令メモリ・モジュール２６からフェッチし、それを復号し、そしてその分岐目標命令及び後続の命令をＣＰＵ２２及びキャッシュ２４に与える。キャッシュ２４は、分岐目標命令及び複数の連続の命令を格納する。
【００１９】
本発明の別の実施形態においては、キャッシュ２４はまた、分岐命令に続く命令でもって開始する少なくとも１組の命令を格納し、それにより、分岐予測が間違っている場合、キャッシュ２４は、分岐命令に続く命令を与える。デコーダ２８は、分岐命令が復号されるときをキャッシュ２４に知らせ、そしてキャッシュ２４は、分岐命令に続く命令を読み出す。
【００２０】
装置１９は、長さが変わる復号された命令を与える問題に対処するよう適合されていることが好都合である。図２から図６に従って後で詳細に説明されるように、装置１９は、復号された命令がＣＰＵ２２に与えられる前に命令の全ての部分がデコーダ２８に与えられる要領でメモリ・ワードの内容をデコーダ２８へフェッチするアドレス変換機構を有する。キャッシュ２４に復号された形式で格納されている命令ＩＮＳＴ（ｊ，１）には後続の命令のＡＤＤ（ｊ，２）が付随する。このアドレスは、デコーダ２８により復号シークエンスの間に発生され、そしてＣＰＵ２２に与えられる。ＣＰＵ２２は、ＡＤＤ（ｊ）を、アドレス・バス１１３を介してキャッシュ２４及びデコーダ２８に与えることにより読み取りサイクルを開始する。
【００２１】
各組の命令の深さは、復号された命令をＣＰＵ２２に与える一方、上記組の命令の最後の命令に続く命令が命令メモリ・モジュール２６からフェッチされ、デコーダ２８により復号され、そして復号された形式でＣＰＵ２２に与えられるのを可能にするよう設計される。上記の長さは、最悪のケース・シナリオ又は典型的なシナリオのような様々なシナリオに応えるよう設定されることができる。例えば、復号された命令が命令メモリ・モジュールから、１クロック・サイクルから３クロック・サイクルまでの間にフェッチされることができ、且つＣＰＵ２２には復号された命令が後続のクロック・サイクルで与えられる場合、１組の命令の長さは、復号された命令を４つのクロック・サイクルの間に与えて、最悪のシナリオに応えるよう適合されることができる。
【００２２】
キャッシュ２４は、比較的小さくそして十分に連想型であるが、しかしこれらの特徴は必要でなく、キャッシュ２４は、大きくあり、及び／又は直接マップ・キャッシュとして又はセット・アソシエイティブ・キャッシュとして実行されることができることが好都合である。
【００２３】
図３は、命令メモリ・モジュール２６の部分２６１を図示する。部分２６１は、６個のメモリ・ワード２６１＿１−２６１＿６から成り、そして８個の符号化された命令Ｃ＿ＩＮＳＴ（ｊ，１）−Ｃ＿ＩＮＳＴ（ｊ，９）７１−７９を格納するのに対し、図４及び図５は、ＩＮＳＴ（ｊ，１）でもって開始するｊ番目の復号された組の命令がキャッシュ２４に格納されることを示す。Ｃ＿ＩＮＳＴ（ｊ，２）は、２つの部分Ｃ＿ＩＮＳＴ（ｊ，２，１）７２＿１及びＣ＿ＩＮＳＴ（ｊ，２，２）７２＿２を有する。Ｃ＿ＩＮＳＴ（ｊ，８）は、３つの部分Ｃ＿ＩＮＳＴ（ｊ，８，１）７８＿１、Ｃ＿ＩＮＳＴ（ｊ，８，２）７８＿２及びＣ＿ＩＮＳＴ（ｊ，８，３）７８＿３を有する。符号化された命令は、長さが変わり、そして１メモリ・ワードから３メモリ・ワードまでに格納される。
【００２４】
第１のメモリ・ワード２６１＿１は、Ｃ＿ＩＮＳＴ（ｊ，１）７１及びＣ＿ＩＮＳＴ（ｊ，２，１）７２＿１を格納する。第２のメモリ・ワード２６１＿２は、Ｃ＿ＩＮＳＴ（ｊ，２，２）７２＿２、Ｃ＿ＩＮＳＴ（ｊ，３）７２＿３及びＣ＿ＩＮＳＴ（ｊ，４）７２＿４を格納する。第３のメモリ・ワード２６１＿３は、Ｃ＿ＩＮＳＴ（ｊ，５）７５及びＣ＿ＩＮＳＴ（ｊ，６）７６を格納する。第４のメモリ・ワード２６１＿４は、Ｃ＿ＩＮＳＴ（ｊ，７）７７及びＣ＿ＩＮＳＴ（ｊ，８，１）７６＿１を格納する。第５のメモリ・ワード２６１＿５は、Ｃ＿ＩＮＳＴ（ｊ，８，２）７８＿２を格納する。第６のメモリ・ワード２６１＿６は、Ｃ＿ＩＮＳＴ（ｊ，８，３）７８＿３及びＣ＿ＩＮＳＴ（ｊ，９）７２＿９を格納する。
【００２５】
図２は、本発明を採用した、装置２０及びＣＰＵ２２の単純化されたブロック図である。装置２０は、キャッシュ２４、第１のマルチプレクサ３０、命令メモリ・モジュール２６、デコーダ２８、第２のマルチプレクサ３２及び第３のマルチプレクサ３４を備える。
【００２６】
ＣＰＵ２２は、復号された命令をフェッチし、それらを実行する。命令は、符号化された形式で命令メモリ・モジュール２６に格納され、そして復号された後でＣＰＵ２２に与えられる。復号された命令は、デコーダ２８又はキャッシュ２４のいずれかによりＣＰＵ２２に与えられることができる。
【００２７】
ＣＰＵ２２は、そのＣＰＵ２２へフェッチされるべき現在の命令ＩＮＳＴ（ｎ）の現在のアドレスＡＤＤ（ｎ）を現在のクロック・サイクルＣＫ（ｎ）で与えるため、バス２１を介してキャッシュ２４及びデコーダ２８に結合されている。ＣＰＵ２２は、フローの変更が生じることを指示する制御信号ＣＯＦ（ｎ）を与えるため、ライン４９を介してキャッシュ２４に結合されている。フローの変更が生じるとき、キャッシュのチェック条件が満たされる。キャッシュはバス２１をスヌープし（ｓｎｏｏｐ）、そしてフローの変更が生じるとき、それはＡＤＤ（ｎ）をタグ・メモリ５０の少なくとも１部分の内容と比較して、キャッシュ・ヒットが生じたかどうかを決定する。キャッシュ・ミス後に、キャッシュ２４は、次の２つのイベント、即ち（ａ）キャッシュ・ミスを起こした分岐目標命令でもって開始する１組の復号された命令がキャッシュ２４内に格納されることと、（ｂ）別のフローの変更が生じることとのうちの最も早いイベントが生じるまで復号された命令及びアドレスを受け取るためのライン４５及び４７を素早く獲得する（ｓｎａｒｆ）。例えば、図４及び図５は、４個のあり得る命令の代わりに、３個の命令から成る（ｊ＋１）番目の命令セットを示す。これは、３クロック・サイクル離れている２つのフロー変更から結果として生じることができ、そこにおいて第１のフロー変更がＩＮＳＴ（ｊ＋１，１）をキャッシュ２４に格納させる。
【００２８】
ＣＰＵ２２は、次のアドレスＡＤＤ（ｎ＋１）、即ちアドレスＡＤＤ（ｎ）に続くアドレスを受け取るためバス２１により第２のマルチプレクサ３２に結合されている。この次のアドレスは、キャッシュ２４又はデコーダ２８のいずれかにより与えられることができる。ＣＰＵ２２は、ＩＮＳＴ（ｎ）を受け取るためバス２５により第３のマルチプレクサ３４に結合されている。ＡＤＤ（ｎ＋１）及びＩＮＳＴ（ｎ）は、キャッシュ２４又はデコーダ２８のいずれかにより与えられる。
【００２９】
フローの変更が生じ、且つＣＰＵ２２が命令ＩＮＳＴ（ｎ）をフェッチするのを要求するとき、それは、ＡＤＤ（ｎ）をバス２１上に与え、そしてフローの変更が生じたことを指示するためＣＯＦ（ｎ）を設定する。キャッシュ２４は、それが有効なＩＮＳＴ（ｎ）を格納しているかをチェックする。図４及び図５において更に詳細に分かるように、このチェックは、ＡＤＤ（ｎ）についてタグ・メモリをチェックし、そして選択された命令セットの有効性の指示についてレジスタ・ファイル９０をチェックすることを包含する。説明の便宜のためＡＤＤ（ｎ）＝ＡＤＤ（ｊ，１）とすることによりキャッシュ・ヒットが生じると仮定すると、キャッシュ２４は、ＨＩＴ制御信号をセットし、そしてＨＩＴを第１から第３のマルチプレクサ３０−３４にバス３７を介して与え、それらにバス３５、２９及び２７を選択させる。こうして、キャッシュ２４は、ＣＰＵ２２にＩＮＳＴ（ｊ，１）、ＡＤＤ（ｊ，２）を与え、そして、ｊ番目の組の命令の最後の命令ＩＮＳＴ（ｊ，４）に続く符号化された命令Ｃ＿ＩＮＳＴ（ｊ，５）のアドレスＡＤＤ（ｊ，５）（これは２６１＿３に等しい。）を命令メモリ・モジュール２６に与える。ＨＩＴは、Ｉ（ｊ，４）がＣＰＵ２２にキャッシュ２４により与えられた後で、リセットされる。ＨＩＴがリセットされている限り、デコーダ２８は、命令及びアドレスをＣＰＵ２２及び命令メモリ・モジュール２６に与える。
【００３０】
図４及び図５は、本発明の２つの好適な実施形態に従ったキャッシュ２４の単純化された概略図である。
キャッシュ２４は、タグ・メモリ５０、制御ユニット５６、レジスタ・ファイル１００及びキャッシュ・メモリ９０から成る。図４及び図５は、タグ・メモリ５０の一部、即ちタグ・レジスタ及び比較器５２及び５４、レジスタ・ファイル１００の一部１００＿１、及びキャッシュ・メモリ９０の一部９０＿１を示す。
【００３１】
タグ・レジスタ及び比較器ＴＡＧ（ｊ）５２及びＴＡＧ（ｊ＋１）５４はバス２１に結合され、ＡＤＤ（ｎ）を受け取って、従ってそれをＡＤＤ（ｊ，１）及びＡＤＤ（ｊ＋１，２）と比較し、そして一致しているか否かを指示する信号を与える。その信号は、バス５３及び５５を介して制御ユニット５６に与えられる。制御ユニット５６は、バス６１を介してレジスタ・ファイル１２０に、バス６２を介してキャッシュ・メモリ９０に、バス５１、４７及び４５を介してデコーダ２８に、バス３７を介して第１から第３のマルチプレクサ３０−３４に、及びバス４９を介してＣＰＵ２２にそれぞれ結合される。レジスタ・ファイル１２０は、第２のマルチプレクサ３２にバス２９を介して結合される。キャッシュ・メモリ９０は、バス３５を介して第１のマルチプレクサ３０に、及びバス２７を介して第３のマルチプレクサ３４にそれぞれ結合される。
【００３２】
ＡＤＤ（ｊ，１）及びＡＤＤ（ｊ＋１，１）は、ＩＮＳＴ（ｊ，１）及びＩＮＳＴ（ｊ＋１，１）と連想付けされる。部分９０＿１は、ｊ番目及び（ｊ＋１）番目の組の復号された命令を格納する。ｊ番目の組はＩＮＳＴ（ｊ，１）８１でもって開始し、そして（ｊ＋１）番目の組はＩＮＳＴ（ｊ＋１，１）１１１でもって開始する。ｊ番目の組は、ＩＮＳＴ（ｊ，１）８１、ＩＮＳＴ（ｊ，２）８２、ＩＮＳＴ（ｊ，３）８３及びＩＮＳＴ（ｊ，４）８４から成り、それらＩＮＳＴ（ｊ，１）８１、ＩＮＳＴ（ｊ，２）８２、ＩＮＳＴ（ｊ，３）８３及びＩＮＳＴ（ｊ，４）８４は、従ってメモリ部分９１＿１、９２＿２、９３＿１及び９４＿１にそれぞれ格納される。ＩＮＳＴ（ｊ，１）−ＩＮＳＴ（ｊ，４）は、アドレスＡＤＤ（ｊ，２）−ＡＤＤ（ｊ，５）８２′から８５′までと連想付けされる。（ｊ＋１）番目の組の命令は、ＩＮＳＴ（ｊ＋１，１）１１１、ＩＮＳＴ（ｊ＋１，２）１１２及びＩＮＳＴ（ｊ＋１，３）１１３から成り、それらＩＮＳＴ（ｊ＋１，１）１１１、ＩＮＳＴ（ｊ＋１，２）１１２及びＩＮＳＴ（ｊ＋１，３）１１３は、従ってメモリ部分９１＿５、９１＿６及び９１＿７にそれぞれ格納される。ＩＮＳＴ（ｊ＋１，１）−ＩＮＳＴ（ｊ＋１，３）は、アドレスＡＤＤ（ｊ＋１，２）−ＡＤＤ（ｊ＋１，４）１１２′から１１４′までと連想付けされる。ＡＤＤ（ｊ，２）８２′からＡＤＤ（ｊ，５）８５′までは、メモリ部分９２＿１から９２＿４までに格納される。
【００３３】
各組の命令は、３つの変数、即ち、有効ページ変数、有効カウント変数及び次のアドレス変数と連想付けされる。有効ページ変数は、ある組の命令が有効な命令を含むか否かを指示する。有効カウント変数は、これからＣＰＵ２２に与えられるべき１組の命令からある一定数の命令を指示する。例えば、１組の命令が４つの有効な変数を有する場合で、その１組の命令の第１の命令がＣＰＵ２２に与えられた後で、有効カウント変数は３にセットされる。第４の命令がＣＰＵ２２に与えられた後では、有効カウント変数はゼロにセットされる。有効カウント変数は、ＨＩＴ信号がリセットされた後で４にセットされて、この組が再フェッチされるとき４つの命令を与えることができることを指示する。ＨＩＴは、キャッシュ・ヒットが生じるときセットされ、そして選択された組の有効カウント変数がゼロに等しいときリセットされる。
【００３４】
レジスタ・ファイル１００の部分１００＿１は、メモリ・ワード１０１及び１０２から成る。メモリ・ワード１０１は、ｊ番目の組の命令と連想付けされている３つの変数、即ちＡＤＤ（ｊ，５）１２１＿１、ＶＡＬＩＤ  ＣＯＵＮＴ（有効カウント）（ｊ）１２１＿２及びＶＡＬＩＤ  ＰＡＧＥ（有効ページ）（ｊ）１２１＿３を格納する。メモリ・ワード１０２は、第２の組の命令と連想付けされている３つの変数、即ちＡＤＤＲ（ｊ＋１，４）１２２＿１、ＶＡＬＩＤ  ＣＯＵＮＴ（ｊ＋１，１）１２２＿２及びＶＡＬＩＤ  ＰＡＧＥ（ｊ＋１）１２２＿３を格納する。
【００３５】
ＨＩＴは、次の条件の全てが満たされるとき制御ユニット５６により設定される。満たされた場合のキャッシュのチェック条件とは、ＡＤＤ（ｎ）がタグ・メモリ５０内に格納されたアドレスのうちの１つと一致し、そして選択された組の命令と連想付けされた有効ページ変数及び有効カウント変数の両方は、上記組が少なくとも１つの有効な命令から成ることを指示することである。
【００３６】
例えば、ＡＤＤ（ｊ＋１，１）＝ＡＤＤ（ｎ）であり、ＣＯＦ（ｎ）がセットされ、ＶＡＬＩＤ  ＰＡＧＥ（ｊ＋１）１０２＿３がセットされ、且つＶＡＬＩＤ  ＣＯＵＮＴ（ｊ＋１）＞０であるとき、ＨＩＴがセットされる。ＨＩＴが設定されるとき、キャッシュ２４は、ＩＮＳＴ（ｊ＋１，１）をキャッシュ・メモリ９０の部分９５＿１からＣＰＵ２２にバス２７、第３マルチプレクサ３４及びバス２５を介して与える。キャッシュ２４は、ＡＤＤＲ（ｊ＋１，４）１０２＿１を命令メモリ・モジュール２６に与え、それにより符号化された命令Ｃ＿ＩＮＳＴ（ｊ＋１，４）の少なくとも第１の部分がデコーダ２８に与えられ、ＩＮＳＴ（ｊ＋１，５）の復号が開始するのを可能にする一方、キャッシュ２４はＩＮＳＴ（ｊ＋１，１）からＩＮＳＴ（ｊ＋１，３）までをＣＰＵ２２に与える。ＡＤＤ（ｊ＋１，２）が、ＣＰＵ２２にバス２９及び２１及び第２のマルチプレクサ３２を介して与えられる。ＩＮＳＴ（ｊ＋１，４）が、ＣＰＵ２２にデコーダ２８により、ＩＮＳＴ（ｊ＋１，３）がＣＰＵ２２にキャッシュ２４により与えられるクロック・サイクルに続くクロック・サイクルで与えられるのが好ましい。ＶＡＬＩＤ  ＣＯＵＮＴ（ｊ＋１）は、最初に３に等しく、そして（ｊ＋１）番目の命令セットからの１つの命令がＣＰＵ２２に与えられるときは常に低減される。
【００３７】
図５のキャッシュ２４は、ｓ番目の組の命令ＩＮＳＴ（ｓ，１）−ＩＮＳＴ（ｓ，４）１２１−１２４、及び変数ＡＤＤ（ｓ，５）１０３＿１、ＶＡＬＩＤ  ＣＯＵＮＴ（ｓ）１０３＿２及びＶＡＬＩＤ  ＰＡＧＥ（ｓ）１０３＿３を格納する追加のフィールドを有する。ｓ番目の組の命令は、分岐命令ＩＮＳＴ（ｓ，０）に続く命令ＩＮＳＴ（ｓ，１）でもって開始し、それによりＩＮＳＴ（ｓ，１）と連想付けされた分岐予測が間違っているとき、命令ＩＮＳＴ（ｓ，１）−ＩＮＳＴ（ｓ，４）がＣＰＵ２２にキャッシュ２４により与えられる一方、ＩＮＳＴ（ｓ，５）及びそれに続く命令が復号され、それによりそれらは、ＩＮＳＴ（ｓ，４）がキャッシュ２４により与えられた後でデコーダ２８によりＣＰＵ２２に与えられる。
【００３８】
本発明の別の好適な実施形態に従って、キャッシュ２４はまた、所定の分岐目標命令でもって開始する１組の命令を格納する。
複数の組の命令は、キャッシュのチェック条件が満たされるが、しかしキャッシュ・ミスが生じるとき、キャッシュ２４に書き込まれる。そのような場合、分岐目標命令、及び１組の命令を形成する連続の命令は、デコーダ２８により復号された後で、キャッシュ２４及びＣＰＵ２２の両方に与えられる。キャッシュ２４への書き込みプロセスは、別のフロー変更により終了されることができる。
【００３９】
各命令が、次の命令のアドレスと共にキャッシュ２４に与えられるのが好都合である。例えば、ＩＮＳＴ（ｊ，１）がキャッシュ・ミスを引き起こす場合、ＩＮＳＴ（ｊ，１）からＩＮＳＴ（ｊ，４）までとアドレスＡＤＤ（ｊ，２）からＡＤＤ（ｊ，５）までとが、デコーダ２８により、キャッシュ・ミスに続くクロック・サイクル中にキャッシュ２４に与えられる。
【００４０】
本発明の別の実施形態に従って、１組の命令は、分岐命令がデコーダ５１により検出されるときキャッシュ２４に書き込まれ、それにより分岐予測が間違っている場合、キャッシュ２４は、分岐命令に続く復号された組の命令を与えることができる。デコーダ２８はそれが分岐命令を復号することを検出するとき、それはバス５１を介して制御信号を制御ユニット５６に与え、それが、分岐命令後に復号される命令をキャッシュ２４に送らせる。
【００４１】
通常、分岐予測が間違っていると確認されるか又は見つけられるまで数クロック・サイクルが経過し、それによりこれらのクロック・サイクル中に復号された命令は、後続の命令の複数のアドレスと一緒にキャッシュ２４に書き込まれる。新しい組の命令の位置は、周知の方法に従って決定されることができる。共通の方法は、キャッシュ２４を先入れ先出しキューとして扱うことである。
【００４２】
本発明の別の実施形態に従って、命令は、所定の分岐目標命令への分岐命令が生じるときキャッシュ２４に書き込まれる。例えば、デコーダ２８はそれが連続した命令への分岐に関係するＩｓｙｎｃ命令を復号することを検知するとき、デコーダ２８は、バス５１を介して制御信号を送り、キャッシュ２４に複数の復号された命令を格納させる。
【００４３】
図６は、本発明の好適な実施形態に従って、キャッシュ２４により命令を与えることを図示する単純化された時間図である。図６は、バス２１、２５、２７、２９、３７及び４７に８個のクロック・サイクルの間に現れる信号のＴ１から始まってＴ６までを示す。Ｔ１において、ＣＰＵ２２は、ＣＯＦをセットし、そしてＡＤＤ（ｊ，１）をバス２１に与える。ＴＡＧ（タグ）（ｊ）５２は、制御ユニット５６に、一致が生じたことを指示する信号を送る。制御ユニット５６は、レジスタ・ファイル９０にバス６１を介してアクセスし、そしてメモリ・ワード１００＿１を読み出す。ＶＡＬＩＤ  ＰＡＧＥ（ｊ）１０１＿３は、命令セット（ｊ）が有効であり、且つＶＡＬＩＤ  ＣＯＵＮＴ（ｊ）１０１＿２が４であることを指示する。制御ユニット５６は、キャッシュ・ヒットが生じていることを決定し、ＨＩＴをセットし、そしてそれをバス３７に与える。制御ユニット５６は、ＩＮＳＴ（ｊ，１）をＣＰＵ２２にバス２７、第３のマルチプレクサ３４及びバス２５を介して与え、そしてＶＡＬＩＤ  ＣＯＵＮＴ（ｊ）１０１＿２を３にセットする。Ｔ２、Ｔ３及びＴ４で始まる、次の３つのクロック・サイクルにおいて、キャッシュ２４は、ＩＮＳＴ（ｊ，２）、ＩＮＳＴ（ｊ，３）及びＩＮＳＴ（ｊ，４）をＣＰＵ２２に与える。全ての４つの命令ＩＮＳＴ（ｊ，１）−ＩＮＳＴ（ｊ，４）がＣＰＵ２２に与えられた後で、制御ユニット５６はＨＩＴをリセットする。Ｔ５及びＴ６において、デコーダ２８は、ＨＩＴがセットされた間に復号されたＩＮＳＴ（ｊ，５）及びＩＮＳＴ（ｊ，６）をＣＰＵ２２に与える。
【００４４】
図７は、復号された命令をキャッシュに与える方法２００のフロー・チャートである。方法２００は、ステップ２０２、２０４、２０６、２０８、２１０、２１２、２１４、２１６及び２１８を備えることが好ましい。なお、全てのステップはブロックにより示されている。実線３０２、３０３、３０４、３０６、３０８、３１０、３１２、３１８及び３２０はそれぞれ、ステップ２０２とステップ２０４を、ステップ２０４とステップを、ステップ２０４とステップ２１２を、ステップ２０６とステップ２１４とステップ２１６を、ステップ２０６とステップ２０８とステップ２１０を、ステップ２０８とステップ２１０とステップ２１８を、ステップ２１２とステップ２１４とステップ２１６とステップ２０４を、ステップ２１８とステップ２０４を、ステップ２１８とステップ２０８とステップ２１０を相応に結合する。これらの経路は、好適な方法フローを指示する。
【００４５】
方法２００は、キャッシュ２４を初期化するステップ２０２で始まる。通常、キャッシュ２４が初期化されるとき、キャッシュ２４は有効な命令を格納しないで、それにより全ての組の有効なページ、有効なカウント及びＡＤＤＲ変数がリセットされる。ステップ２０２には、命令ＩＮＳＴ（ｎ）をフェッチする要求を待ち、且つキャッシュのチェック条件が満たされているかをチェックするステップ２０４が続く。
【００４６】
ステップ２０４中に、キャッシュ２４は、アドレス・バス２１と、参照番号１１１、４９及び５１に示すような制御バスとを素早く獲得する。キャッシュのチェック条件は、フローの変更が生じるとき満たされるのが好都合である。キャッシュのチェック条件は、Ｉｓｙｎｃ命令のような所定の命令がデコーダ２８により復号されるとき満たされるのは任意である。そのようなケースにおいては、デコーダ２８からバス５１を介して与えられた制御信号は、そのような所定の命令が復号されることを指示する。
【００４７】
キャッシュのチェック条件が満たされない場合、ステップ２０４には、デコーダ２８からの復号された命令を与えるステップ２１２が続く。ステップ２１２には、ステップ２０４が続く。
【００４８】
キャッシュのチェック条件が満たされる場合、ステップ２０４には、キャッシュ・ヒットが生じたかをチェックするステップ２０６が続く。その回答が「イエス」の場合、ステップ２０６には、ステップ２０８、２１０及び２１８が続き、それらのステップにおいて、１組の復号された命令の少なくとも一部が、キャッシュ２４により与えられる一方、デコーダ２８は、上記組に続く命令の符号化された部分を与えられ、そしてその符号化された命令を復号する。キャッシュからの復号された命令を与え、且つ組変数及び「ｎ」を更新するステップ２０８、及び複数の命令の少なくとも一部分をデコーダ２８へフェッチさせ、且つ上記命令を復号するステップ２１０には、次のイベントのうちの最も早いイベントが生じるまでステップ２１０及び２０８が繰り返されることを保証するステップ２１８が続く。上記の次のイベントとは、（ａ）完全な組（フルの組）の命令がキャッシュ２４により与えられることと、（ｂ）新しいキャッシュのチェック条件が満たされることとである。
【００４９】
回答が「ノー」の場合、ステップ２０６には、復号された命令をＣＰＵ２２及びキャッシュ２４へデコーダ２８により与えるステップ２１４及び２１６が続く。命令は、完全な組の命令がキャッシュ２４に書き込まれるまでキャッシュ２４に書き込まれる。
【００５０】
採用された特定の用語及び表現、及び詳細な説明及び添付図面に開示された特定の構造及び動作の詳細は、例示的目的のためのみであり、そして特許請求の範囲に記載されたような本発明の範囲をいずれの方法で限定することを意図していないことに注目すべきである。
【００５１】
こうして、本明細書には、暗号解読された情報を情報受取人及びその装置に与えるキャッシュを有する装置の少なくとも１つの好適な実施形態が記載された。当業者は、開示された主題が多くの方法で修正され得て、そして特に上記に述べ且つ記載した好適な形式以外の多くの実施形態を推測し得ることが明らかであろう。
【００５２】
従って、上記に開示した主題は、例示であって限定でないと考えられるべきであり、そして法律により許される最大範囲まで、それは、特許請求の範囲により、本発明の真の趣旨及び範囲内に入る全てのそのような修正及び他の実施形態をカバーすることが意図されている。本発明の範囲は、特許請求の範囲及び前述の詳細な記載とは異なるそれらの均等物の最も広い許容される解釈により決定されるべきである。
【図面の簡単な説明】
【図１】  図１は、本発明の好適な一実施形態に従った装置及びプロセッサの単純化された図である。
【図２】  図２は、本発明の別の好適な実施形態に従った装置及びプロセッサの概略図である。
【図３】  図３は、本発明の好適な実施形態に従った、図１及び図２の装置の命令メモリ・モジュールの一部分の概略図である。
【図４】  図４は、本発明の好適な実施形態に従った、図１及び図２のコンピュータ装置のキャッシュの単純化された概略図である。
【図５】  図５は、本発明の別の実施形態に従った、図１及び図２のコンピュータ装置のキャッシュの単純化された概略図である。
【図６】  図６は、本発明の好適な実施形態に従った、図１から図５のキャッシュによる命令の提供を図示する単純化された時間図である。
【図７】  図７は、本発明の好適な実施形態に従った、復号された命令をキャッシュに格納しまたそれへ与える方法のフロー・チャートである。
【図１】
0004748918.tif 000002
【図２】
0004748918.tif 000003
【図３】
0004748918.tif 000004
【図４】
0004748918.tif 000005
【図５】
0004748918.tif 000006
【図６】
0004748918.tif 000007
【図７】
0004748918.tif 000008