(57)【特許請求の範囲】
【請求項１】
パイプライン処理を利用して可変長命令を実行するコンピュータ用の命令装置であって、
複数のエントリを有し、該エントリの各々が命令を記憶するための第１の部分と該命令に対応するアドレスタグを記憶するための第２の部分と該命令に関連するシーケンス制御情報を記憶するための第３の部分とを有し、前記第１の部分を記憶するための第１のメモリアレイと前記第２の部分を記憶するためのＣＡＭアレイと前記第３の部分を記憶するための第２のメモリアレイとに区画され、前記ＣＡＭアレイの各エントリが前記第１および第２のメモリアレイの対応するエントリと接続されるように前記第１のメモリアレイが第１のワード線の集合によって前記ＣＡＭアレイに接続され且つ前記第２のメモリアレイが第２のワード線の集合によって前記ＣＡＭメモリアレイに接続され、前記第１のメモリアレイおよび前記第２のメモリアレイが前記ＣＡＭアレイに隣接して両側に配置される、命令キャッシュと、
現在の命令に対応するシーケンス制御データに基づいて次の命令のアドレスを決定するための次のアドレス決定回路とからなり、
前記命令を記憶するための第１の部分の各行が前記第３の部分の各行よりも実質的に多数のビットを有し、これによって前記パイプライン処理のフェッチ段の間、現在の命令のアドレスが前記第２の部分のエントリに記憶されたアドレスタグのうちの１つに一致した場合、該第２の部分のエントリに対応する第１および第２の一致線を活性化して、前記命令キャッシュの第１の部分から現在の命令を読み出させると同時に前記キャッシュの第３の部分から前記現在の命令に関連するシーケンス制御情報を読み出させ、前記次のアドレス決定回路によって前記次の命令のアドレスを決定するように動作する、命令装置。
【請求項２】
前記第２の部分は記憶されたアドレスタグが現在の命令のアドレスと等しいエントリに対応する一致線をドライブし、該一致線によって前記第１の部分の第１のワード線と前記第３の部分の第２のワード線との両方をドライブする、請求項１の命令装置。
【請求項３】
前記第１の部分は前記第１のワード線が活性化されているときに第１のビット線の集合をドライブするメモリセルを含み、前記第３の部分は前記第２のワード線が活性化されているときに第２のビット線の集合をドライブするメモリセルを含む、請求項２の命令装置。
【請求項４】
前記第２のビット線の集合は前記第１のビット線の集合よりも先に安定するようになっている、請求項３の命令装置。
【請求項５】
前記第１のワード線の集合と前記第２のワード線の集合とが異なる負荷インピーダンスを有し、前記第１のワード線の集合が前記第２のワード線の集合よりも長い待ち時間になっている、請求項１の命令装置。
【請求項６】
コンピュータの機能単位のために命令の流れから受信した命令を記憶するための命令装置であって、
命令の流れから受信した命令を一時的に記憶するためのプリフェッチバッファと、
前記プリフェッチバッファに記憶された命令をデコードして少なくとも１つのデコードされた命令および関連するシーケンス制御データを生成するための命令デコーダと、
前記命令に対応する命令アドレスを一時的に記憶するためのタグバッファと、
複数のエントリを有し、各エントリが、前記デコードされた命令を記憶するための第１の部分と、アドレスタグを記憶して記憶された該アドレスタグと現在の命令のアドレスとを比較するための第２の部分と、命令サイズ情報を含む前記関連するシーケンス制御データを記憶するための第３の部分とを有する、命令キャッシュと、
前記命令キャッシュの第３の部分から取得したシーケンス制御データに基づいて次の命令アドレスを決定するための次のアドレス決定回路とからなり、
前記命令キャッシュの第２の部分は、一致線の集合によって前記第１および第３の部分と接続されており、記憶されたアドレスタグが現在の命令アドレスと等しい各エントリに関する一致線をドライブすることによって、前記第３の部分に対し対応するシーケンス制御データを前記次のアドレス決定回路に供給させ、前記第１の部分に対し前記デコードされた命令を出力させる、命令装置。
【請求項７】
前記第３の部分は前記第１の部分に比較して少数のビットを各エントリに記憶する、請求項６の命令装置。
【請求項８】
前記命令キャッシュの第１、第２および第３の部分が個別のメモリアレイである、請求項６の命令装置。
【請求項９】
前記第２の部分は記憶されたアドレスタグが前記現在の命令のアドレスと等しいエントリに対応する一致線をドライブし、該一致線によって前記第１の部分の第１のワード線と前記第３の部分の第２のワード線との両方をドライブする、請求項６の命令装置。
【請求項１０】
前記第１の部分は前記第１のワード線が活性化されているときに第１のビット線の集合をドライブするメモリセルを含み、前記第３の部分は前記第２のワード線が活性化されているときに第２のビット線の集合をドライブするメモリセルを含む、請求項９の命令装置。
【請求項１１】
前記第２のビット線の集合は前記第１のビット線の集合よりも先に安定するようになっている、請求項１０の命令装置。
【請求項１２】
前記次のアドレス決定回路は、少なくとも順序アドレスおよびターゲットアドレスを含む潜在的アドレスの集合の中から前記次の命令のアドレスを選択するための選択手段を含む、請求項６の命令装置。
【請求項１３】
前記第２のビット線の集合は前記第１のビット線の集合よりも先に安定するようになっている、請求項１２の命令装置。
【請求項１４】
前記コンピュータの所定のクロックサイクルにおいて、前記第２のビット線の集合が安定し、読み出され、および、前記次の命令が決定され、同時に第１のビット線の集合が安定し、および、読み出される、請求項１３の命令装置。
【請求項１５】
キャッシュミスが発生した時に前記命令キャッシュをバイパスするためのバイパス手段をさらに含む、請求項６の命令装置。
【請求項１６】
コンピュータシステム用の命令装置であって、命令キャッシュを含み、該命令キャッシュが、
前記コンピュータシステムのために命令を記憶するための第１のメモリアレイと、
前記第１のメモリアレイに隣接して設けられ、前記第１のメモリアレイに記憶された命令の各々のアドレスを記憶するためのＣＡＭアレイと、
前記ＣＡＭアレイに隣接して前記第１のメモリアレイの反対側に設けられ、命令サイズ情報を含む、前記第１のメモリアレイに記憶された命令の各々のシーケンス制御データを記憶するための第２のメモリアレイと、
前記第１のメモリアレイから読み出される前記命令の命令アドレスと前記ＣＡＭアレイに記憶されたアドレスとを比較するための比較手段とからなり、
前記比較手段が、
前記第１のメモリアレイ内の記憶セルに接続された第１のビット線の集合と、
前記第２のメモリアレイ内の記憶セルに接続され、前記第１のビット線の集合よりも先に安定する第２のビット線の集合と、
前記第１のメモリアレイ内の記憶セルに接続された第１のワード線の集合と、
前記第２のメモリアレイ内の記憶セルに接続された第２のワード線の集合と、
複数の一致線であって、各一致線が前記第１および第２のワード線の集合の中から１本のワード線をドライブする、複数の一致線と、
前記第２のビット線の集合に接続され、次の命令アドレスを決定するための次の命令アドレス決定回路とからなり、
前記第１のメモリアレイから読み出される命令の命令アドレスが前記ＣＡＭアレイのエントリに記憶されたアドレスのうちの１つと同じであることが前記比較手段によって判定された場合、該エントリに対応する一致線を介して前記第１のワード線の集合と前記第２のワード線の集合との各々の中から該エントリに対応するワード線を活性化し、その後、前記読み出される命令に対応するデータを前記第１のビット線の集合上に置き、関連するシーケンス制御データを第２のビット線の集合上に置き、
前記次の命令アドレス決定回路が前記第２のビット線の集合から取得した前記シーケンス制御データに基づいて前記次の命令アドレスを決定するように動作する、命令装置。
【請求項１７】
前記次の命令アドレス決定回路によって決定された次の命令アドレスと、前記第１のメモリアレイから読み出される命令に対応するデータとが、次のサイクルに備えて同時にラッチされる、請求項１６の命令装置。
【請求項１８】
前記次の命令アドレス決定回路は、少なくとも順序アドレスおよびターゲットアドレスを含む潜在的アドレスの集合の中から前記次の命令アドレスを選択するための選択手段を含む、請求項１６の命令装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は命令キャッシュに関し、詳細には命令装置用のデコードされた命令キャッシュに関する。
【０００２】
【従来の技術】
高性能コンピュータは一般に、エンコードされた命令レイアウトを使用する。例えば、ＶＬＩＷコンピュータでは複数の命令が命令語内にエンコードされる。命令語をデコードすると、パイプラインで同時に実行すべきいくつかの命令が得られる。高性能コンピュータの命令レイアウトが長いものである場合、もしその命令が発行(issue)されるまでデコードされない場合は、その命令用のメモリ記憶域は保存される。しかし、この手法では、命令を命令キャッシュから発行した後にデコードするためには、余分のクロック・サイクルまたはパイプライン段が必要である。他の手法は、メモリ階層中の後の段だけのために命令をデコードする手法である。すなわち、二次キャッシュに記憶された命令はエンコード形であるが、一次キャッシュに記憶される前にデコードされる。
【０００３】
可変長の命令を使用するが、複数の命令を同時に発行するコンピュータでは、この問題はさらに重大である。この場合、デコードのための余分のクロック・サイクルまたはパイプライン段を避けられても、次に発行すべき命令のアドレスの決定のために、パイプラインにおける余分のサイクルまたは段が必要である。次の命令はブランチ命令のターゲット・アドレスであるかも知れないし、あるいは順序アドレス(sequential address)であるかも知れない。順序アドレス自体は、前の命令によっていくつの演算命令が発行されるかに応じて変化する。
【０００４】
【発明が解決しようとする課題】
従って、本発明の目的は、余分のクロック・サイクルや追加パイプライン段を使用せずに次の命令のためのアドレスを決定できる機構を提供することである。
【０００５】
【課題を解決するための手段】
概して本発明は、現在の命令のフェッチ段で次の命令アドレスを生成することができるように、命令データ用の記憶セルをシーケンス制御用の記憶セルから分離する、命令キャッシュに関する。本発明は、次の命令アドレスを決定するための追加のパイプライン段を不要にする。
【０００６】
本発明は、パイプライン処理を使用して可変長命令を実行するコンピュータ用の命令装置として、命令キャッシュと次アドレス決定回路を含む。命令キャッシュは多数のエントリを有し、各エントリは、命令を記憶する第１の部分と、その命令に対応するアドレス・タグを記憶する第２の部分と、その命令に関連するシーケンス制御データを記憶する第３の部分を有する。次アドレス決定回路は、現在の命令に対応するシーケンス制御データに基づいた、次の命令のアドレスを決定する。命令装置は、パイプライン処理のフェッチ段の間、現在の命令のアドレスが、記憶されている１つのアドレス・タグに一致するとき、現在の命令が命令キャッシュの第１の部分から読み取られ、同時に、現在の命令に対応するシーケンス制御情報がキャッシュの第３の部分から読み取られて、次アドレス決定回路が次の命令のアドレスを決定するように動作する。
【０００７】
本発明は、コンピュータの機能単位用の命令を記憶するための命令装置として、エンコードされた命令を一時的に記憶するプリフェッチ・バッファと、プリフェッチ・バッファに記憶されているエンコードされた命令をデコードして、少なくとも１つのデコードされた命令および関連するフロー制御データを生成する命令デコーダと、エンコードされた命令に対応する命令アドレスを一時的に記憶するタグ・バッファと、命令キャッシュを含む。命令キャッシュは多数のエントリを有し、各エントリは、デコードされた命令を記憶する第１の部分と、アドレス・タグを記憶した後、記憶されたアドレス・タグを現在の命令アドレスと比較する第２の部分と、関連するフロー制御データを記憶する第３の部分を有する。
【０００８】
本発明は、キャッシュ・ミスが起こった後でキャッシュにとって有用であるバイパス機構にも関する。このバイパス機構は、バイパスを実施するための配線要件がなくなり、キャッシュ・ミスの後のデータ・アクセスが１サイクルだけ低減されるので、キャッシュのビット線もバイパス機構の一部としても使用すると、特に有利である。
【０００９】
本発明の他の態様および利点は、以下の詳細な説明を、本発明の原理を一例として説明する添付の図面と共に検討すれば、明らかになるであろう。
【００１０】
【実施例】
本発明の実施例を以下で図１ないし図７に関して説明する。しかし、本発明をこれらの限られた実施例から拡張するとき、これらの図に関して本明細書で与えた詳細な説明が説明のためのものであることは、当業者には容易に理解されよう。
【００１１】
図１は、本発明による命令装置２のブロック図である。命令装置２の全体的な動作は、命令を、それに関連するタグと共に受け取り、処理システムの１つまたは複数の機能単位に命令（動作）を供給することである。そして、機能単位は命令を実行する。
【００１２】
命令装置２は、命令の流れから命令を受け取るプリフェッチ・バッファ４を含み、プリフェッチ・バッファ４に命令を記憶する。実際には、受け取られる命令は、可変数の命令を（エンコードして）表す命令語であるので、エンコードされている。例えば、各エンコードされた命令は、１つないし４つ程の命令としてデコードされる。命令装置２は、プリフェッチ・バッファ４に記憶されている命令に対応するタグを記憶するタグ・バッファ６も含む。命令装置２によって受け取られる命令およびタグは、例えば、下位キャッシュ・メモリまたはメイン・メモリから得られるものである。いずれの場合も、タグ・バッファ６は記憶されているタグをマルチプレクサ７に供給し、プリフェッチ・バッファ４はそれ自体に記憶されている命令を命令デコーダ８に供給する。命令デコーダ８は、命令を、一次命令キャッシュ１０にロードされる前にデコードするように機能する。デコードされた命令は次いで、命令キャッシュ１０から命令バッファ１２に供給され、処理システムの様々な機能単位に供給される。
【００１３】
また、マルチプレクサ７の出力は、命令キャッシュ１０にアドレスを供給する。命令キャッシュ１０に供給されるアドレスは、タグ・バッファ６に記憶されているタグ、または次アドレス決定回路１３によって決定された次のアドレスである。次アドレス決定回路１３は、シーケンス制御情報を命令キャッシュ１０から受け取り、この情報を現在のアドレスと関連づけて使用して次のアドレスを決定する。例えば、シーケンス制御情報は、現在の命令が、ブランチを起こす、または起こさないことがあらかじめ分かっているブランチ・オペレーション、２つの命令が同時に発行される語命令、あるいは３つの命令が同時に発行される語命令であることを示すことができる。
【００１４】
本発明は符号密度を増加させるために、エンコードされている命令を使用する。このような命令は、一次命令キャッシュ１０に書き込まれる前にデコードされる。命令が命令キャッシュ１０に記憶される前にデコードされるので、実行される前に命令をデコードするための余分のクロック・サイクルもパイプライン段も必要としない。追加クロック・サイクルまたはパイプライン段は、ブランチ命令の予想を誤った場合のペナルティを増大させるので、これは有利である。命令がディスク上、メイン・メモリ中、または下位キャッシュ・メモリ中にある間、圧縮された、つまりエンコードされたフォーマットでその命令を記憶することによって、下位メモリレベル（例えば、レベル２キャッシュ、メイン・メモリ）でメモリ記憶域が減少され、しかも一次命令キャッシュ１０は依然として比較的小規模である。この手法はまた、命令が発行されるときに命令のデコードが必要とされないので、実行パイプラインの長さを減少させる。
【００１５】
さらに以下で明らかになるように、本発明では現在の命令のフェッチ段で次の命令アドレスを生成することができる。この態様は、普通なら次の命令アドレスを決定するために必要とされる、命令を実行するコンピュータ・システムの追加パイプライン段を不要にするので非常に有利である。
【００１６】
図２は、命令キャッシュ１０の一実施例のブロック図である。命令キャッシュ１０は、フル・アソシエーティブであり、第１の記憶領域１４と、第２の記憶領域１６と、第３の記憶領域１８とを含む。これら３つの記憶領域は、単一のチップ上の別々の記憶領域であり、半導体メモリをカラムに区画することによって形成することができる。
【００１７】
第２の記憶領域１６は、さらに厳密に言えば、記憶・比較領域である。第２の記憶領域１６は、比較回路（図示せず）に結合することもできる。第１の記憶領域１４は、命令自体をそのデコードした形で記憶する。第２の記憶領域１６は、第１の記憶領域１４に記憶されている、対応するデコードされた命令に関連するアドレス・タグを記憶する。第３の記憶領域１８は、関連するアドレス・タグおよび命令に関係するシーケンス制御データを記憶する。すなわち、第１の記憶領域１４中の各エントリは、第２の記憶領域１６および第３の記憶領域１８に対応するエントリを有する。第１および第３の記憶領域１４および１８はランダム・アクセス・メモリ（ＲＡＭ）であり、第２の記憶領域１６（比較回路を含む）は内容アクセス・メモリ（ＣＡＭ）であることが好ましい。さらに、「Horizontally Partitioned Instruction Cache」と題し、本出願と同時に出願された、米国特許出願第08/298,861号に記載されたように、命令キャッシュ１０を水平に区画することが好ましいこともある。例えば、命令キャッシュ１０は、シーケンシャル・キャッシュ、ブランチ・ターゲット・キャッシュ、および犠牲キャッシュとして水平に区画することができる。
【００１８】
図２に示した命令キャッシュの動作は以下のとおりである。第２の記憶領域１６は、次の命令のアドレスを受け取る。このアドレスは、第２の記憶領域１６内の各エントリごとに、記憶されているアドレス・タグと比較される。一致が見つかった場合、特定のエントリの関連する一致線（ＭＬ）２０が、ハイにドライブされ、ラッチ２１にラッチされる。次いで、ラッチ２１は、順次にかつ別々に、バッファ２３を介してワード線（ＷＬ）２２および２２’をドライブする。ワード線２２とワード線２２’は共に、同じ一致線２０によってドライブされるが、相互に分離されている。従って、ワード線２２上に現れる容量・抵抗負荷は、ワード線２２’上に現れる容量・抵抗負荷とは異なる。設計に応じて、第３の記憶領域１８は数ビットしか記憶しないが、第１の記憶領域１４は、通常少なくとも３２ビットである命令全体を記憶するので、ワード線２２’上に現れる容量・抵抗負荷は、ワード線２２上に現れる容量・抵抗負荷よりもはるかに小さい。一例を挙げると、第３の記憶領域１８中の各エントリは、８ビットを記憶することができるが、第１の記憶領域１４中の各エントリは、２５６ビットを記憶することができる。
【００１９】
いずれの場合も、ワード線２２および２２’が一度ハイにドライブされると、読み取られている特定のエントリに記憶されているビットに応じて、あるビット線がハイにドライブされる。特に、第１の記憶領域１４はビット線２４（ＢＬ１、ＢＬ２、…、ＢＬｎ）を含み、第３の記憶領域１８はビット線２８（ＢＬ１、…、ＢＬｉ、ここでｉはｎよりも小さい）を含む。ビット線２４を介して第１の記憶領域１４から読み取られるデータは、命令バッファ２６に記憶されるデコードされた命令である。デコードされた命令はその後、命令バッファ２６から実行パイプラインに供給され、そこで命令が実行される。
【００２０】
次のクロック・サイクルで、命令装置２は、実行パイプラインによって次に実行すべき命令を命令バッファ２６に提供しなければならない。実行パイプラインにおいてデコードの段を与えると、次の命令を容易に決定することができるが、その命令は１サイクルだけ遅れる。しかし、パイプラインがデコード段を使用しないと、次に実行すべき命令の決定が困難になることがある。例えば、命令の通常の順序発行は、多数の理由、すなわち、ブランチおよび可変長の命令のために順序が変化する可能性がある。次の命令アドレスを次のクロック・サイクルの丁度よい時間に提供するには、この次のサイクルが始まる直前に次の命令アドレスを第２の記憶領域１６に供給しなければならない。
【００２１】
従来、シーケンス制御データは、命令データと共に第１の記憶領域１４に記憶されている。しかし、そうすることで、次のサイクルの始めまでに次のアドレスを決定することができなくなる。その結果、従来は次のアドレスを算出するために完全な一つの追加サイクルが必要であった。本発明によって提供される改良は、シーケンス制御データが、命令データよりも速く読みとれるように、命令データから分離されて、別の記憶領域に含まれることである。従って、次プログラム・カウンタ（ＰＣ）決定装置３０は、次の命令アドレスを算出し、現在のサイクル内でデータ線３２を介して第２の記憶領域１６に供給する。従って、本発明は、現在の命令のパイプライン処理のフェッチ段で次の命令アドレスを決定するように動作する。
【００２２】
図３は、図２に示した命令キャッシュ１０の動作のタイミング図である。処理システムは、タイミング・クロック（ＣＬＫ）に従って命令を実行する。図のように、タイミング・クロックは周期Ｐを有する。一例を挙げると、周期Ｐは現在、ワークステーションなどの高性能コンピュータで約４ナノ秒である。タイミング・クロックのサイクルの前半の間、第２の記憶領域１６（ＣＡＭ）でアドレス評価が行われ、第１および第３の記憶領域１４および１８中のＲＡＭ記憶域がプレチャージされる。タイミング・クロックのサイクルの後半の間、第１および第３の記憶領域１４および１８のＲＡＭが読み取られ、第２の記憶領域１６がプレチャージされる。
【００２３】
次に、タイミング・クロックのサイクルの後半について詳しく説明し、本発明の動作および利点を示す。第１の記憶領域１４用のワード線（ＷＬ−Ｄａｔａ）は、タイミング・クロックのサイクルの後半の間にアクティブまたはハイになるものとして示されている。これに対して、第３の記憶領域１８用のワード線（ＷＬ−Ｂｒ，Ｓｚ）は、タイミング・クロックのサイクルの後半中ではあるが、第１の記憶領域１４用のワード線（ＷＬ−Ｄａｔａ）が推移する前（典型的な例では約１ナノ秒前）に、ハイまたはアクティブになるものとして示されている。第１および第３の記憶領域１４、１８のビット線２４および２８は、図３には示していないが、対応するワード線がハイまたはアクティブになってから約０．５ナノ秒後に安定化する。その後、第１および第３の記憶領域１４、１８用のセンス・アンプ（Ｓ／Ａ）は、ビット線２４からのデータを検知し、ビット線２８からのシーケンス制御データを検知する。しかし、図３に示したように、第３の記憶領域１８から読み取られたシーケンス制御データは、第１の記憶領域１４のデータが安定化して読取り準備が完了する（約１ナノ秒）前に、安定化して読取り準備が完了する。この１ナノ秒のウィンドウ内で次ＰＣ決定装置３０内の高速ハードウェア回路は次のアドレスの算出が可能になり、その結果、次の半クロック・サイクルの立上りエッジで、ビット線２４から読み取られた命令データが命令バッファ２６に記憶されるだけでなく、次のアドレスも次アドレス・バッファに記憶される。従って、次のクロック・サイクルの始めに次の命令のアドレスが使用できるようになり、アドレス評価ができるように命令キャッシュ１０に供給される。
【００２４】
図４は次ＰＣ決定装置３０の第１の実施例のブロック図である。この実施例の次ＰＣ決定装置３０はセレクタ３４と次ＰＣバッファ３６を含む。セレクタ３４は様々な所定のアドレスをセレクタ自体のデータ入力上で受け取る。これらのアドレスには、順序アドレス（Ｃ＋１、Ｃ＋２、Ｃ＋４）、割込みアドレス（ＩＮＴ）、ターゲット・アドレス（ＴＧＴ）、および予想を誤った場合のアドレス（ＭＩＳ）が含まれる。順序アドレスＣ＋１、Ｃ＋２、Ｃ＋４はそれぞれ、現アドレス（Ｃ）が１だけ増分したもの、現アドレス（Ｃ）が２だけ増分したもの、現アドレス（Ｃ）が４だけ増分したものに相当する。
【００２５】
高性能コンピュータ・システムは一般に、単一の命令でも複数の命令でも所与のクロック・サイクルで発行することができるので、この実施例では複数の順序アドレスが示されている。ここで、コンピュータ・システムは単一の命令でも２つの命令でも４つの命令でも同時に発行できると仮定する。割込みアドレス（ＩＮＴ）は割込みの場合に制御が割込みアドレスへ移るように供給される。ターゲット・アドレス（ＴＧＴ）はブランチ命令に関連付けられ、予想を誤った場合のアドレスは、実際にはその反対のことが必要であった時にブランチが起こった、あるいは起こらなかったと仮定された、前のブランチ命令と関連付けられる。
【００２６】
セレクタ３４は、多数の制御線に基づいてこれらのアドレスのうちの１つを選択する。この実施例に示した制御線は、予想ビット（Ｐ）、割込みビット（Ｉ）、１つまたは複数のサイズ・ビット（Ｓｚ）、および１つまたは複数のブランチ・ビット（Ｂｒ）である。ブランチ・ビット（Ｂｒ）がセットされていない場合、セレクタ３４は１つまたは複数のサイズ・ビット（Ｓｚ）に基づいて順序アドレスのうちの１つを選択する。割込みビットがセットされた場合、セレクタ３４は割込みアドレス（ＩＮＴ）を選択する。ブランチ・ビット（Ｂｒ）がセットされた場合、セレクタ３４は、予想ビット（Ｐ）もセットされている場合はターゲット・アドレス（ＴＧＴ）を選択する。そうでない場合、セレクタは１つの順序アドレスを選択する。予想ビット（Ｐ）は、コンパイラによって静的に決定することも、あるいは、ブランチ予想回路によって動的に決定することもできる。静的予想を使用する場合、予想ビット（Ｐ）はシーケンス制御データ内に含めることができる。予想を誤った場合のアドレスは、まだパイプライン中にあるデータが、予想されるブランチ・アドレスとして選択され、後で誤りであると判定されたときに、セレクタ３４によって選択される。いずれの場合も、セレクタ３４がどちらを選択するかにかかわらず、次の命令用に選択されたアドレスは次ＰＣバッファ３６に記憶される。
【００２７】
図５は次ＰＣ決定装置３０の第２の実施例である。この実施例では、マルチプレクサ３８は、順序アドレス４０（ＳＥＱ）、ターゲット・アドレス４２（ＴＧＴ）、割込みアドレス４４（ＩＮＴ）、および予想を誤った場合のアドレス４６（ＭＩＳ）を受け取る。マルチプレクサ３８は制御信号に基づいてこれらの入力アドレスのうちの１つを選択する。制御信号とは、割込み信号（Ｉ）および予想付きブランチ信号（Ｂｒ＆Ｐ）である。典型的なケースでは、予想付きブランチ信号はブランチ・ビットと予想ビットとを含む。ブランチ・ビット（Ｂｒ）は、現在の命令がブランチ命令であるかどうかを示す。予想ビット（Ｐ）は、そのブランチが選択されるかどうかの予想を示す。
【００２８】
順序アドレス４０は、マルチプレクサ５０によって供給される増分量に現在のアドレスを追加する加算回路４８を介して、マルチプレクサ３８に供給される。マルチプレクサ５０は（デコードされた）現在の命令のサイズ（Ｓｚ）に基づいて増分量を選択する。増分量は例えば、１でも２でも４でもよい。
【００２９】
予想を誤った場合のアドレス４６は、各パイプライン段（例えば、ＦＤＲＥＷ）ごとのプログラム・カウンタ（ＰＣ）をファースト・イン・ファースト・アウト式に記憶する代替アドレス・パイプライン５２によって供給される。アドレスは、マルチプレクサ３８によって使用されるのと同じ制御信号（Ｉ、Ｂｒ、Ｐ）に基づいて順序アドレス４０とターゲット・アドレス４２のうちの一方を選択するマルチプレクサ５４を介して、代替命令アドレス・パイプライン５２に入力される。マルチプレクサ３８の出力は、次ＰＣとして知られる、次の命令のアドレスである。このアドレスは、実行パイプラインの各段ごとの現在のアドレスを記憶する命令アドレス・パイプライン５６にも供給される。
【００３０】
図６は、本発明による命令装置の代替実施例のブロック図である。この実施例による命令装置５８は、図１に示した実施例に類似している。違いは、図６の実施例では命令装置５８がいくつかの拡張機能を含むことである。第１に、命令キャッシュ１０は、現在の命令が命令キャッシュ１０から読み取られている間に、デコードされた命令およびそのタグ・アドレスを記憶できるように、追加書込みポートを含む。第２に、キャッシュ・ミスが発生した（すなわち、要求された命令が命令キャッシュに記憶されていない）とき、現在の命令を、命令キャッシュに記憶して前記キャッシュから読み出す必要なしに、命令装置５８から出力できるようにし、それによってキャッシュ・ミスに関連する遅延が短縮するように、バイパス回路が提供されている。この実施例中のバイパス回路はマルチプレクサ６０とバイパス・バス６２とを含む。
【００３１】
図７はバイパス回路の好ましい実施態様のブロック図である。図７には単一のビット線を示したが、この手法は実際にはキャッシュ・メモリの各ビット線と共に実施することができる。図７に示した手法は、キャッシュ・メモリを何に使用するかにかかわらず適用することができる。例えば、キャッシュ・メモリは、命令キャッシュでも、あるいはデータ・キャッシュでもよい。いずれにせよ、キャッシュ・メモリの単一のメモリ・セル６４を図７に示す。メモリ・セル６４は読取りポート６６および６８に接続されている。読取りポート６６、６８が読取りワード線（ＷＬ＿Ｒ）によって活性化されると、メモリ・セル６４に保持されたデータがビット線（ＢＬ＿Ｒ）上に置かれ、そのデータの補数が補数ビット線（＊ＢＬ＿Ｒ）上に置かれる（＊はその補数であることを表す）。ビット線上のデータは差動センス・アンプ７０によって検知され、マルチプレクサ７２に出力される。書込みビット線（ＢＬ＿Ｗ）上に置かれたデータは、書込みポート７４が活性化されたときにメモリ・セル６４に記憶される。書込みビット線（ＢＬ＿Ｗ）上に置かれたデータはマルチプレクサ７２にも供給される。マルチプレクサ７２は、制御信号７６に基づいて、そのデータ入力の一つを出力データとして選択する。従って、メモリ・セル６４からデータが読み取られるとき、マルチプレクサ７２はセンス・アンプ７０から受け取ったデータを選択して出力する。一方、マルチプレクサ７２は、キャッシュ・ミスの後にバイパス・オペレーションを実行する際、書込みビット線（ＢＬ＿Ｗ）から受け取ったデータを選択して出力する。いずれの場合も、マルチプレクサ７２によって出力されたデータはバッファ７８に保持される。
【００３２】
従って、この実施態様（図７）は、キャッシュのビット線がバイパス・バスとしても使用できるので有利である。ゆえに、必要なデータを、バイパス経路を介してキャッシュ・メモリから出力するのと同時にメモリ・セル６４に記憶することができるので、バイパス・バスの配線要件がこの実施態様を使用することによって除去されるだけでなく、キャッシュ・ミスの後のデータ・アクセスも１サイクルだけ低減される。
【００３３】
可変長命令を使用するコンピュータ・システムに関して本発明を説明したが、本発明は次の順序アドレスが周知のような命令が固定長のものである簡単なケースにも、あるいはデコードが必要とされない簡単なケースにも同様に適用することができる。いずれの場合も、図４に示した次ＰＣ決定装置３０は（いくつかの順序アドレスではなく）単一の順序アドレスしか含まず、１つまたは複数のサイズ・ビット（Ｓｚ）はもはや必要とされない。
【００３４】
また、上述のような２つ以上の命令キャッシュを提供することが好ましい。キャッシュがそれぞれ小型であるがゆえに高速であるので、性能が向上する。さらに、２命令キャッシュの場合、一方の命令キャッシュから命令を発行する間に他方のキャッシュを先読みすることができる。また、２命令キャッシュおよびデコードされた命令を使用する場合、所与の命令語に関して、いくつかのデコードされた命令は第１のキャッシュに記憶され、残りのデコードされた命令は第２のキャッシュに記憶される。２つの命令キャッシュがエンコードされた命令または固定長命令を記憶する場合、１つのキャッシュが偶数アドレスを記憶し、他方のアドレスが奇数アドレスを記憶することができる。
【００３５】
本発明の多数の特徴および利点は詳細な説明から明らかであり、従って、添付の特許請求の範囲は本発明のそのような特徴および利点のすべてに及んでいるものである。さらに、当業者には多数の修正および変更が容易に思いつくであろうから、図示し説明した構成および動作だけに本発明を制限することは望ましくない。よって、すべての適当な修正および相当物は本発明の範囲に含まれるとみなすことができる。
【００３６】
【実施態様】
なお、本発明の実施態様の例を以下に示す。
【００３７】
〔実施態様１〕
命令を記憶する第１の部分と、その命令に対応するアドレス・タグを記憶する第２の部分と、その命令に関連するシーケンス制御データを記憶する第３の部分をそれぞれが有する多数のエントリを有する命令キャッシュと、
現在の命令に対応するシーケンス制御データに基づいて次の命令のアドレスを決定する次アドレス決定回路とを設けた、パイプライン処理を使用して可変長命令を実行するコンピュータ用の命令装置であって、パイプライン処理のフェッチ段の間に、現在の命令のアドレスが、記憶されているアドレス・タグのうちの１つに一致する場合、前記現在の命令が前記命令キャッシュの第１の部分から読み取られ、それと同時に、前記現在の命令に対応するシーケンス制御データが前記キャッシュの第３の部分から読み取られて、前記次アドレス決定回路が次の命令のアドレスを決定することを特徴とする、前記命令装置。
【００３８】
〔実施態様２〕
前記第３の部分が、前記第１の部分に記憶されているビットの数と比べて比較的少数のビットを各エントリに記憶することを特徴とする、実施態様１に記載の命令装置。
【００３９】
〔実施態様３〕
前記命令キャッシュの前記第１、第２、および第３の部分が、別々のメモリ・アレイであることを特徴とする、実施態様１に記載の命令装置。
【００４０】
〔実施態様４〕
前記第２の部分が、あるエントリに対応する記憶されているアドレス・タグが前記現在の命令のアドレスに等しい前記エントリに対応する一致線をドライブし、前記一致線が、前記第１の部分用の第１のワード線と前記第３の部分用の第２のワード線の両方をドライブすることを特徴とする、実施態様１に記載の命令装置。
【００４１】
〔実施態様５〕
前記第１の部分が、前記第１のワード線が活性化されているときに第１の１組のビット線をドライブするメモリ・セルを含み、前記第３の部分が、前記第２のワード線が活性化されているときに第２の１組のビット線をドライブするメモリ・セルを含むことを特徴とする、実施態様４に記載の命令装置。
【００４２】
〔実施態様６〕
前記第２の１組のビット線が、前記第１の１組のビット線よりも前に安定化することを特徴とする、実施態様５に記載の命令装置。
【００４３】
〔実施態様７〕
以下の（ａ）〜（ｄ）を設け、コンピュータの機能単位に対する命令を記憶する命令装置：
（ａ）命令を一時的に記憶するプリフェッチ・バッファ；
（ｂ）少なくとも１つのデコードされた命令および関連するシーケンス制御データを生成するために、前記プリフェッチ・バッファに記憶されている命令をデコードする、命令デコーダ；
（ｃ）命令に対応する命令アドレスを一時的に記憶するタグ・バッファ；
（ｄ）デコードされた命令を記憶する第１の部分と、アドレス・タグを記憶し、続いて、記憶されたアドレス・タグを現在の命令アドレスと比較する第２の部分と、関連するシーケンス制御データを記憶する第３の部分をそれぞれが有する多数のエントリを有する、命令キャッシュ。
【００４４】
〔実施態様８〕
前記第３の部分が、前記第１の部分に記憶されているビットの数と比べて比較的少数のビットを各エントリに記憶することを特徴とする、実施態様７に記載の命令装置。
【００４５】
〔実施態様９〕
前記命令キャッシュの前記第１、第２、および第３の部分が、別々のメモリ・アレイであることを特徴とする、実施態様７に記載の命令装置。
【００４６】
〔実施態様１０〕
前記第２の部分が、あるエントリに対応する記憶されているアドレス・タグが前記現在の命令のアドレスに等しい前記エントリに対応する一致線をドライブし、前記一致線が、前記第１の部分用の第１のワード線と前記第３の部分用の第２のワード線の両方をドライブすることを特徴とする、実施態様７に記載の命令装置。
【００４７】
〔実施態様１１〕
前記第１の部分が、前記第１のワード線が活性化されているときに第１の１組のビット線をドライブするメモリ・セルを含み、前記第３の部分が、前記第２のワード線が活性化されているときに第２の１組のビット線をドライブするメモリ・セルを含むことを特徴とする、実施態様１０に記載の命令装置。
【００４８】
〔実施態様１２〕
前記第２の１組のビット線が、前記第１の１組のビット線よりも前に安定化することを特徴とする、実施態様１１に記載の命令装置。
【００４９】
〔実施態様１３〕
前記命令キャッシュの前記第３の部分から得られた、前記現在の命令アドレスに関する前記シーケンス制御データに基づいて次の命令アドレスを決定する次命令決定回路をさらに含むことを特徴とする、実施態様１１に記載の命令装置。
【００５０】
〔実施態様１４〕
前記次命令決定装置が、少なくとも順序アドレスとターゲット・アドレスを含む１組の可能なアドレスから次の命令アドレスを選択するための選択手段を含むことを特徴とする、実施態様１３に記載の命令装置。
【００５１】
〔実施態様１５〕
前記第２の１組のビット線が、前記第１の１組のビット線よりも前に安定化することを特徴とする、実施態様１４に記載の命令装置。
【００５２】
〔実施態様１６〕
コンピュータの所与のクロック・サイクルで、前記第１の１組のビット線が安定化して読み取られるのと同時に、前記第２の１組のビット線が安定化して読み取られ、次の命令が決定されることを特徴とする、実施態様１５に記載の命令装置。
【００５３】
〔実施態様１７〕
キャッシュ・ミス時に前記命令キャッシュをバイパスするためのバイパス手段をさらに含むことを特徴とする、実施態様７に記載の命令装置。
【００５４】
〔実施態様１８〕
コンピュータ・システム用の命令装置において、
コンピュータ・システムに関する命令を記憶するための第１のメモリ・アレイと、
前記第１のメモリ・アレイに記憶されている各命令ごとのアドレスを記憶するための第２のメモリ・アレイと、
前記第１のメモリ・アレイに記憶されている各命令ごとのシーケンス制御データを記憶するための第３のメモリ・アレイと、
前記第１のメモリ・アレイから読み取るべき命令の命令アドレスを前記第２のメモリ・アレイに記憶されているアドレスと比較するための比較手段と、
前記第１のメモリ・アレイ内の記憶セルに結合された第１の１組のビット線と、
前記第３のメモリ・アレイ内の記憶セルに結合され、前記第１の１組のビット線よりも前に安定化する、第２の１組のビット線と、
前記第１のメモリ・アレイ内の記憶セルに結合された第１の１組のワード線と、
前記第３のメモリ・アレイ内の記憶セルに結合された第２の１組のワード線と、
それぞれ、前記第１および第２の１組のワード線のうちの１組の前記ワード線をドライブする、複数の一致線と
を少なくとも含む命令キャッシュと、
次の命令アドレスを決定するために前記第２の１組のビット線に動作可能に接続された、次命令アドレス決定回路とを含み、
前記第１のメモリ・アレイから読み取るべき命令の命令アドレスが、前記第２のメモリ・アレイに記憶されている１つのアドレスと同じものであることが前記比較手段によって決定され、次いで、前記第１および第２の１組のワード線から得たこのエントリに対応するワード線が、対応する一致線を介して活性化され、その後、読み取るべき命令に対応するデータが、前記第１の１組のビット線上に置かれ、関連するシーケンス制御データが、前記第２の１組のビット線上に置かれ、
前記次命令アドレス決定回路が、前記第２の１組のビット線から得られたシーケンス制御データに基づいて次の命令アドレスを決定することを特徴とする、命令装置。
【００５５】
〔実施態様１９〕
前記次命令アドレス決定回路によって決定された次の命令アドレスと、前記第１のメモリ・アレイから読み取られる命令に対応するデータが、次のサイクルのために同時にラッチされることを特徴とする、実施態様１８に記載の命令装置。
【００５６】
〔実施態様２０〕
前記次命令決定回路が、少なくとも順序アドレスとターゲット・アドレスを含む、１組の可能なアドレスから次の命令アドレスを選択するための選択手段を含むことを特徴とする、実施態様１８に記載の命令装置。
【００５７】
〔実施態様２１〕
第１のデータを記憶するためのメモリ・セルと、
読取り信号に応答して、前記メモリ・セルから得た第１のデータを読取りビット線上に置くための、読取りポートと、
書込み信号に応答して、書込みビット線から得た第２のデータを前記メモリ・セルに記憶するための、書込みポートと、
前記キャッシュ・メモリからの出力データを保持するために、前記読取りビット線に動作可能に接続された出力バッファと、
キャッシュ・ミスの後に、前記出力バッファに前記書込みビット線から得られた前記第２のデータを出力データとして保持させるために、前記書込みビット線および前記出力バッファに動作可能に接続されたバイパス手段とを含むことを特徴とする、キャッシュ・メモリ。
【００５８】
〔実施態様２２〕
前記バイパス手段が、前記書込みビット線を使用し、かつ前記バイパス手段が、制御信号に応答して前記第１のデータと前記第２のデータのうちの一方を選択するために、前記読取りビット線に動作可能に接続され、かつ前記書込みビット線に直接接続された、セレクタを含み、選択されたデータが、前記出力バッファに出力データとして保持されることを特徴とする、実施態様２１に記載のキャッシュ・メモリ。
【００５９】
【発明の効果】
以上詳細に説明したように、本発明によれば、次の命令のアドレスの決定を現在の命令ののフェッチ段で行うことが可能となり、次の命令のアドレスを決定するための追加のパイプライン段の必要性をなくす効果がある。
【図面の簡単な説明】
【図１】本発明による命令装置のブロック図である。
【図２】本発明による命令キャッシュの一実施例のブロック図である。
【図３】本発明のタイミング図である。
【図４】本発明による次ＰＣ決定装置の一実施例のブロック図である。
【図５】本発明による次ＰＣ決定装置の他の実施例を示す図である。
【図６】本発明による命令装置の代替実施例のブロック図である。
【図７】図６に示したバイパス回路の好ましい実施態様のブロック図である。
【符号の説明】
２：命令装置
４：プリフェッチ・バッファ
６：タグ・バッファ
７：マルチプレクサ
８：命令デコーダ
１０：命令キャッシュ
１２：命令バッファ
１３：次アドレス決定回路
１４：第１の記憶領域
１６：第２の記憶領域
１８：第３の記憶領域
２０：一致線
２１：ラッチ
２２：ワード線
２４：ビット線
２６：命令バッファ
３０：次プログラム・カウンタ決定装置
【図１】
0003641031.tif 000002
【図２】
0003641031.tif 000003
【図３】
0003641031.tif 000004
【図４】
0003641031.tif 000005
【図５】
0003641031.tif 000006
【図６】
0003641031.tif 000007
【図７】
0003641031.tif 000008