JP3641031B2 - 命令装置 - Google Patents
命令装置 Download PDFInfo
- Publication number
- JP3641031B2 JP3641031B2 JP24537095A JP24537095A JP3641031B2 JP 3641031 B2 JP3641031 B2 JP 3641031B2 JP 24537095 A JP24537095 A JP 24537095A JP 24537095 A JP24537095 A JP 24537095A JP 3641031 B2 JP3641031 B2 JP 3641031B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- bit lines
- cache
- memory array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 210000004027 cell Anatomy 0.000 claims description 17
- 210000000352 storage cell Anatomy 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 8
- 238000003491 array Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000000087 stabilizing effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【産業上の利用分野】
本発明は命令キャッシュに関し、詳細には命令装置用のデコードされた命令キャッシュに関する。
【0002】
【従来の技術】
高性能コンピュータは一般に、エンコードされた命令レイアウトを使用する。例えば、VLIWコンピュータでは複数の命令が命令語内にエンコードされる。命令語をデコードすると、パイプラインで同時に実行すべきいくつかの命令が得られる。高性能コンピュータの命令レイアウトが長いものである場合、もしその命令が発行(issue)されるまでデコードされない場合は、その命令用のメモリ記憶域は保存される。しかし、この手法では、命令を命令キャッシュから発行した後にデコードするためには、余分のクロック・サイクルまたはパイプライン段が必要である。他の手法は、メモリ階層中の後の段だけのために命令をデコードする手法である。すなわち、二次キャッシュに記憶された命令はエンコード形であるが、一次キャッシュに記憶される前にデコードされる。
【0003】
可変長の命令を使用するが、複数の命令を同時に発行するコンピュータでは、この問題はさらに重大である。この場合、デコードのための余分のクロック・サイクルまたはパイプライン段を避けられても、次に発行すべき命令のアドレスの決定のために、パイプラインにおける余分のサイクルまたは段が必要である。次の命令はブランチ命令のターゲット・アドレスであるかも知れないし、あるいは順序アドレス(sequential address)であるかも知れない。順序アドレス自体は、前の命令によっていくつの演算命令が発行されるかに応じて変化する。
【0004】
【発明が解決しようとする課題】
従って、本発明の目的は、余分のクロック・サイクルや追加パイプライン段を使用せずに次の命令のためのアドレスを決定できる機構を提供することである。
【0005】
【課題を解決するための手段】
概して本発明は、現在の命令のフェッチ段で次の命令アドレスを生成することができるように、命令データ用の記憶セルをシーケンス制御用の記憶セルから分離する、命令キャッシュに関する。本発明は、次の命令アドレスを決定するための追加のパイプライン段を不要にする。
【0006】
本発明は、パイプライン処理を使用して可変長命令を実行するコンピュータ用の命令装置として、命令キャッシュと次アドレス決定回路を含む。命令キャッシュは多数のエントリを有し、各エントリは、命令を記憶する第1の部分と、その命令に対応するアドレス・タグを記憶する第2の部分と、その命令に関連するシーケンス制御データを記憶する第3の部分を有する。次アドレス決定回路は、現在の命令に対応するシーケンス制御データに基づいた、次の命令のアドレスを決定する。命令装置は、パイプライン処理のフェッチ段の間、現在の命令のアドレスが、記憶されている1つのアドレス・タグに一致するとき、現在の命令が命令キャッシュの第1の部分から読み取られ、同時に、現在の命令に対応するシーケンス制御情報がキャッシュの第3の部分から読み取られて、次アドレス決定回路が次の命令のアドレスを決定するように動作する。
【0007】
本発明は、コンピュータの機能単位用の命令を記憶するための命令装置として、エンコードされた命令を一時的に記憶するプリフェッチ・バッファと、プリフェッチ・バッファに記憶されているエンコードされた命令をデコードして、少なくとも1つのデコードされた命令および関連するフロー制御データを生成する命令デコーダと、エンコードされた命令に対応する命令アドレスを一時的に記憶するタグ・バッファと、命令キャッシュを含む。命令キャッシュは多数のエントリを有し、各エントリは、デコードされた命令を記憶する第1の部分と、アドレス・タグを記憶した後、記憶されたアドレス・タグを現在の命令アドレスと比較する第2の部分と、関連するフロー制御データを記憶する第3の部分を有する。
【0008】
本発明は、キャッシュ・ミスが起こった後でキャッシュにとって有用であるバイパス機構にも関する。このバイパス機構は、バイパスを実施するための配線要件がなくなり、キャッシュ・ミスの後のデータ・アクセスが1サイクルだけ低減されるので、キャッシュのビット線もバイパス機構の一部としても使用すると、特に有利である。
【0009】
本発明の他の態様および利点は、以下の詳細な説明を、本発明の原理を一例として説明する添付の図面と共に検討すれば、明らかになるであろう。
【0010】
【実施例】
本発明の実施例を以下で図1ないし図7に関して説明する。しかし、本発明をこれらの限られた実施例から拡張するとき、これらの図に関して本明細書で与えた詳細な説明が説明のためのものであることは、当業者には容易に理解されよう。
【0011】
図1は、本発明による命令装置2のブロック図である。命令装置2の全体的な動作は、命令を、それに関連するタグと共に受け取り、処理システムの1つまたは複数の機能単位に命令(動作)を供給することである。そして、機能単位は命令を実行する。
【0012】
命令装置2は、命令の流れから命令を受け取るプリフェッチ・バッファ4を含み、プリフェッチ・バッファ4に命令を記憶する。実際には、受け取られる命令は、可変数の命令を(エンコードして)表す命令語であるので、エンコードされている。例えば、各エンコードされた命令は、1つないし4つ程の命令としてデコードされる。命令装置2は、プリフェッチ・バッファ4に記憶されている命令に対応するタグを記憶するタグ・バッファ6も含む。命令装置2によって受け取られる命令およびタグは、例えば、下位キャッシュ・メモリまたはメイン・メモリから得られるものである。いずれの場合も、タグ・バッファ6は記憶されているタグをマルチプレクサ7に供給し、プリフェッチ・バッファ4はそれ自体に記憶されている命令を命令デコーダ8に供給する。命令デコーダ8は、命令を、一次命令キャッシュ10にロードされる前にデコードするように機能する。デコードされた命令は次いで、命令キャッシュ10から命令バッファ12に供給され、処理システムの様々な機能単位に供給される。
【0013】
また、マルチプレクサ7の出力は、命令キャッシュ10にアドレスを供給する。命令キャッシュ10に供給されるアドレスは、タグ・バッファ6に記憶されているタグ、または次アドレス決定回路13によって決定された次のアドレスである。次アドレス決定回路13は、シーケンス制御情報を命令キャッシュ10から受け取り、この情報を現在のアドレスと関連づけて使用して次のアドレスを決定する。例えば、シーケンス制御情報は、現在の命令が、ブランチを起こす、または起こさないことがあらかじめ分かっているブランチ・オペレーション、2つの命令が同時に発行される語命令、あるいは3つの命令が同時に発行される語命令であることを示すことができる。
【0014】
本発明は符号密度を増加させるために、エンコードされている命令を使用する。このような命令は、一次命令キャッシュ10に書き込まれる前にデコードされる。命令が命令キャッシュ10に記憶される前にデコードされるので、実行される前に命令をデコードするための余分のクロック・サイクルもパイプライン段も必要としない。追加クロック・サイクルまたはパイプライン段は、ブランチ命令の予想を誤った場合のペナルティを増大させるので、これは有利である。命令がディスク上、メイン・メモリ中、または下位キャッシュ・メモリ中にある間、圧縮された、つまりエンコードされたフォーマットでその命令を記憶することによって、下位メモリレベル(例えば、レベル2キャッシュ、メイン・メモリ)でメモリ記憶域が減少され、しかも一次命令キャッシュ10は依然として比較的小規模である。この手法はまた、命令が発行されるときに命令のデコードが必要とされないので、実行パイプラインの長さを減少させる。
【0015】
さらに以下で明らかになるように、本発明では現在の命令のフェッチ段で次の命令アドレスを生成することができる。この態様は、普通なら次の命令アドレスを決定するために必要とされる、命令を実行するコンピュータ・システムの追加パイプライン段を不要にするので非常に有利である。
【0016】
図2は、命令キャッシュ10の一実施例のブロック図である。命令キャッシュ10は、フル・アソシエーティブであり、第1の記憶領域14と、第2の記憶領域16と、第3の記憶領域18とを含む。これら3つの記憶領域は、単一のチップ上の別々の記憶領域であり、半導体メモリをカラムに区画することによって形成することができる。
【0017】
第2の記憶領域16は、さらに厳密に言えば、記憶・比較領域である。第2の記憶領域16は、比較回路(図示せず)に結合することもできる。第1の記憶領域14は、命令自体をそのデコードした形で記憶する。第2の記憶領域16は、第1の記憶領域14に記憶されている、対応するデコードされた命令に関連するアドレス・タグを記憶する。第3の記憶領域18は、関連するアドレス・タグおよび命令に関係するシーケンス制御データを記憶する。すなわち、第1の記憶領域14中の各エントリは、第2の記憶領域16および第3の記憶領域18に対応するエントリを有する。第1および第3の記憶領域14および18はランダム・アクセス・メモリ(RAM)であり、第2の記憶領域16(比較回路を含む)は内容アクセス・メモリ(CAM)であることが好ましい。さらに、「Horizontally Partitioned Instruction Cache」と題し、本出願と同時に出願された、米国特許出願第08/298,861号に記載されたように、命令キャッシュ10を水平に区画することが好ましいこともある。例えば、命令キャッシュ10は、シーケンシャル・キャッシュ、ブランチ・ターゲット・キャッシュ、および犠牲キャッシュとして水平に区画することができる。
【0018】
図2に示した命令キャッシュの動作は以下のとおりである。第2の記憶領域16は、次の命令のアドレスを受け取る。このアドレスは、第2の記憶領域16内の各エントリごとに、記憶されているアドレス・タグと比較される。一致が見つかった場合、特定のエントリの関連する一致線(ML)20が、ハイにドライブされ、ラッチ21にラッチされる。次いで、ラッチ21は、順次にかつ別々に、バッファ23を介してワード線(WL)22および22’をドライブする。ワード線22とワード線22’は共に、同じ一致線20によってドライブされるが、相互に分離されている。従って、ワード線22上に現れる容量・抵抗負荷は、ワード線22’上に現れる容量・抵抗負荷とは異なる。設計に応じて、第3の記憶領域18は数ビットしか記憶しないが、第1の記憶領域14は、通常少なくとも32ビットである命令全体を記憶するので、ワード線22’上に現れる容量・抵抗負荷は、ワード線22上に現れる容量・抵抗負荷よりもはるかに小さい。一例を挙げると、第3の記憶領域18中の各エントリは、8ビットを記憶することができるが、第1の記憶領域14中の各エントリは、256ビットを記憶することができる。
【0019】
いずれの場合も、ワード線22および22’が一度ハイにドライブされると、読み取られている特定のエントリに記憶されているビットに応じて、あるビット線がハイにドライブされる。特に、第1の記憶領域14はビット線24(BL1、BL2、…、BLn)を含み、第3の記憶領域18はビット線28(BL1、…、BLi、ここでiはnよりも小さい)を含む。ビット線24を介して第1の記憶領域14から読み取られるデータは、命令バッファ26に記憶されるデコードされた命令である。デコードされた命令はその後、命令バッファ26から実行パイプラインに供給され、そこで命令が実行される。
【0020】
次のクロック・サイクルで、命令装置2は、実行パイプラインによって次に実行すべき命令を命令バッファ26に提供しなければならない。実行パイプラインにおいてデコードの段を与えると、次の命令を容易に決定することができるが、その命令は1サイクルだけ遅れる。しかし、パイプラインがデコード段を使用しないと、次に実行すべき命令の決定が困難になることがある。例えば、命令の通常の順序発行は、多数の理由、すなわち、ブランチおよび可変長の命令のために順序が変化する可能性がある。次の命令アドレスを次のクロック・サイクルの丁度よい時間に提供するには、この次のサイクルが始まる直前に次の命令アドレスを第2の記憶領域16に供給しなければならない。
【0021】
従来、シーケンス制御データは、命令データと共に第1の記憶領域14に記憶されている。しかし、そうすることで、次のサイクルの始めまでに次のアドレスを決定することができなくなる。その結果、従来は次のアドレスを算出するために完全な一つの追加サイクルが必要であった。本発明によって提供される改良は、シーケンス制御データが、命令データよりも速く読みとれるように、命令データから分離されて、別の記憶領域に含まれることである。従って、次プログラム・カウンタ(PC)決定装置30は、次の命令アドレスを算出し、現在のサイクル内でデータ線32を介して第2の記憶領域16に供給する。従って、本発明は、現在の命令のパイプライン処理のフェッチ段で次の命令アドレスを決定するように動作する。
【0022】
図3は、図2に示した命令キャッシュ10の動作のタイミング図である。処理システムは、タイミング・クロック(CLK)に従って命令を実行する。図のように、タイミング・クロックは周期Pを有する。一例を挙げると、周期Pは現在、ワークステーションなどの高性能コンピュータで約4ナノ秒である。タイミング・クロックのサイクルの前半の間、第2の記憶領域16(CAM)でアドレス評価が行われ、第1および第3の記憶領域14および18中のRAM記憶域がプレチャージされる。タイミング・クロックのサイクルの後半の間、第1および第3の記憶領域14および18のRAMが読み取られ、第2の記憶領域16がプレチャージされる。
【0023】
次に、タイミング・クロックのサイクルの後半について詳しく説明し、本発明の動作および利点を示す。第1の記憶領域14用のワード線(WL−Data)は、タイミング・クロックのサイクルの後半の間にアクティブまたはハイになるものとして示されている。これに対して、第3の記憶領域18用のワード線(WL−Br,Sz)は、タイミング・クロックのサイクルの後半中ではあるが、第1の記憶領域14用のワード線(WL−Data)が推移する前(典型的な例では約1ナノ秒前)に、ハイまたはアクティブになるものとして示されている。第1および第3の記憶領域14、18のビット線24および28は、図3には示していないが、対応するワード線がハイまたはアクティブになってから約0.5ナノ秒後に安定化する。その後、第1および第3の記憶領域14、18用のセンス・アンプ(S/A)は、ビット線24からのデータを検知し、ビット線28からのシーケンス制御データを検知する。しかし、図3に示したように、第3の記憶領域18から読み取られたシーケンス制御データは、第1の記憶領域14のデータが安定化して読取り準備が完了する(約1ナノ秒)前に、安定化して読取り準備が完了する。この1ナノ秒のウィンドウ内で次PC決定装置30内の高速ハードウェア回路は次のアドレスの算出が可能になり、その結果、次の半クロック・サイクルの立上りエッジで、ビット線24から読み取られた命令データが命令バッファ26に記憶されるだけでなく、次のアドレスも次アドレス・バッファに記憶される。従って、次のクロック・サイクルの始めに次の命令のアドレスが使用できるようになり、アドレス評価ができるように命令キャッシュ10に供給される。
【0024】
図4は次PC決定装置30の第1の実施例のブロック図である。この実施例の次PC決定装置30はセレクタ34と次PCバッファ36を含む。セレクタ34は様々な所定のアドレスをセレクタ自体のデータ入力上で受け取る。これらのアドレスには、順序アドレス(C+1、C+2、C+4)、割込みアドレス(INT)、ターゲット・アドレス(TGT)、および予想を誤った場合のアドレス(MIS)が含まれる。順序アドレスC+1、C+2、C+4はそれぞれ、現アドレス(C)が1だけ増分したもの、現アドレス(C)が2だけ増分したもの、現アドレス(C)が4だけ増分したものに相当する。
【0025】
高性能コンピュータ・システムは一般に、単一の命令でも複数の命令でも所与のクロック・サイクルで発行することができるので、この実施例では複数の順序アドレスが示されている。ここで、コンピュータ・システムは単一の命令でも2つの命令でも4つの命令でも同時に発行できると仮定する。割込みアドレス(INT)は割込みの場合に制御が割込みアドレスへ移るように供給される。ターゲット・アドレス(TGT)はブランチ命令に関連付けられ、予想を誤った場合のアドレスは、実際にはその反対のことが必要であった時にブランチが起こった、あるいは起こらなかったと仮定された、前のブランチ命令と関連付けられる。
【0026】
セレクタ34は、多数の制御線に基づいてこれらのアドレスのうちの1つを選択する。この実施例に示した制御線は、予想ビット(P)、割込みビット(I)、1つまたは複数のサイズ・ビット(Sz)、および1つまたは複数のブランチ・ビット(Br)である。ブランチ・ビット(Br)がセットされていない場合、セレクタ34は1つまたは複数のサイズ・ビット(Sz)に基づいて順序アドレスのうちの1つを選択する。割込みビットがセットされた場合、セレクタ34は割込みアドレス(INT)を選択する。ブランチ・ビット(Br)がセットされた場合、セレクタ34は、予想ビット(P)もセットされている場合はターゲット・アドレス(TGT)を選択する。そうでない場合、セレクタは1つの順序アドレスを選択する。予想ビット(P)は、コンパイラによって静的に決定することも、あるいは、ブランチ予想回路によって動的に決定することもできる。静的予想を使用する場合、予想ビット(P)はシーケンス制御データ内に含めることができる。予想を誤った場合のアドレスは、まだパイプライン中にあるデータが、予想されるブランチ・アドレスとして選択され、後で誤りであると判定されたときに、セレクタ34によって選択される。いずれの場合も、セレクタ34がどちらを選択するかにかかわらず、次の命令用に選択されたアドレスは次PCバッファ36に記憶される。
【0027】
図5は次PC決定装置30の第2の実施例である。この実施例では、マルチプレクサ38は、順序アドレス40(SEQ)、ターゲット・アドレス42(TGT)、割込みアドレス44(INT)、および予想を誤った場合のアドレス46(MIS)を受け取る。マルチプレクサ38は制御信号に基づいてこれらの入力アドレスのうちの1つを選択する。制御信号とは、割込み信号(I)および予想付きブランチ信号(Br&P)である。典型的なケースでは、予想付きブランチ信号はブランチ・ビットと予想ビットとを含む。ブランチ・ビット(Br)は、現在の命令がブランチ命令であるかどうかを示す。予想ビット(P)は、そのブランチが選択されるかどうかの予想を示す。
【0028】
順序アドレス40は、マルチプレクサ50によって供給される増分量に現在のアドレスを追加する加算回路48を介して、マルチプレクサ38に供給される。マルチプレクサ50は(デコードされた)現在の命令のサイズ(Sz)に基づいて増分量を選択する。増分量は例えば、1でも2でも4でもよい。
【0029】
予想を誤った場合のアドレス46は、各パイプライン段(例えば、FDREW)ごとのプログラム・カウンタ(PC)をファースト・イン・ファースト・アウト式に記憶する代替アドレス・パイプライン52によって供給される。アドレスは、マルチプレクサ38によって使用されるのと同じ制御信号(I、Br、P)に基づいて順序アドレス40とターゲット・アドレス42のうちの一方を選択するマルチプレクサ54を介して、代替命令アドレス・パイプライン52に入力される。マルチプレクサ38の出力は、次PCとして知られる、次の命令のアドレスである。このアドレスは、実行パイプラインの各段ごとの現在のアドレスを記憶する命令アドレス・パイプライン56にも供給される。
【0030】
図6は、本発明による命令装置の代替実施例のブロック図である。この実施例による命令装置58は、図1に示した実施例に類似している。違いは、図6の実施例では命令装置58がいくつかの拡張機能を含むことである。第1に、命令キャッシュ10は、現在の命令が命令キャッシュ10から読み取られている間に、デコードされた命令およびそのタグ・アドレスを記憶できるように、追加書込みポートを含む。第2に、キャッシュ・ミスが発生した(すなわち、要求された命令が命令キャッシュに記憶されていない)とき、現在の命令を、命令キャッシュに記憶して前記キャッシュから読み出す必要なしに、命令装置58から出力できるようにし、それによってキャッシュ・ミスに関連する遅延が短縮するように、バイパス回路が提供されている。この実施例中のバイパス回路はマルチプレクサ60とバイパス・バス62とを含む。
【0031】
図7はバイパス回路の好ましい実施態様のブロック図である。図7には単一のビット線を示したが、この手法は実際にはキャッシュ・メモリの各ビット線と共に実施することができる。図7に示した手法は、キャッシュ・メモリを何に使用するかにかかわらず適用することができる。例えば、キャッシュ・メモリは、命令キャッシュでも、あるいはデータ・キャッシュでもよい。いずれにせよ、キャッシュ・メモリの単一のメモリ・セル64を図7に示す。メモリ・セル64は読取りポート66および68に接続されている。読取りポート66、68が読取りワード線(WL_R)によって活性化されると、メモリ・セル64に保持されたデータがビット線(BL_R)上に置かれ、そのデータの補数が補数ビット線(*BL_R)上に置かれる(*はその補数であることを表す)。ビット線上のデータは差動センス・アンプ70によって検知され、マルチプレクサ72に出力される。書込みビット線(BL_W)上に置かれたデータは、書込みポート74が活性化されたときにメモリ・セル64に記憶される。書込みビット線(BL_W)上に置かれたデータはマルチプレクサ72にも供給される。マルチプレクサ72は、制御信号76に基づいて、そのデータ入力の一つを出力データとして選択する。従って、メモリ・セル64からデータが読み取られるとき、マルチプレクサ72はセンス・アンプ70から受け取ったデータを選択して出力する。一方、マルチプレクサ72は、キャッシュ・ミスの後にバイパス・オペレーションを実行する際、書込みビット線(BL_W)から受け取ったデータを選択して出力する。いずれの場合も、マルチプレクサ72によって出力されたデータはバッファ78に保持される。
【0032】
従って、この実施態様(図7)は、キャッシュのビット線がバイパス・バスとしても使用できるので有利である。ゆえに、必要なデータを、バイパス経路を介してキャッシュ・メモリから出力するのと同時にメモリ・セル64に記憶することができるので、バイパス・バスの配線要件がこの実施態様を使用することによって除去されるだけでなく、キャッシュ・ミスの後のデータ・アクセスも1サイクルだけ低減される。
【0033】
可変長命令を使用するコンピュータ・システムに関して本発明を説明したが、本発明は次の順序アドレスが周知のような命令が固定長のものである簡単なケースにも、あるいはデコードが必要とされない簡単なケースにも同様に適用することができる。いずれの場合も、図4に示した次PC決定装置30は(いくつかの順序アドレスではなく)単一の順序アドレスしか含まず、1つまたは複数のサイズ・ビット(Sz)はもはや必要とされない。
【0034】
また、上述のような2つ以上の命令キャッシュを提供することが好ましい。キャッシュがそれぞれ小型であるがゆえに高速であるので、性能が向上する。さらに、2命令キャッシュの場合、一方の命令キャッシュから命令を発行する間に他方のキャッシュを先読みすることができる。また、2命令キャッシュおよびデコードされた命令を使用する場合、所与の命令語に関して、いくつかのデコードされた命令は第1のキャッシュに記憶され、残りのデコードされた命令は第2のキャッシュに記憶される。2つの命令キャッシュがエンコードされた命令または固定長命令を記憶する場合、1つのキャッシュが偶数アドレスを記憶し、他方のアドレスが奇数アドレスを記憶することができる。
【0035】
本発明の多数の特徴および利点は詳細な説明から明らかであり、従って、添付の特許請求の範囲は本発明のそのような特徴および利点のすべてに及んでいるものである。さらに、当業者には多数の修正および変更が容易に思いつくであろうから、図示し説明した構成および動作だけに本発明を制限することは望ましくない。よって、すべての適当な修正および相当物は本発明の範囲に含まれるとみなすことができる。
【0036】
【実施態様】
なお、本発明の実施態様の例を以下に示す。
【0037】
〔実施態様1〕
命令を記憶する第1の部分と、その命令に対応するアドレス・タグを記憶する第2の部分と、その命令に関連するシーケンス制御データを記憶する第3の部分をそれぞれが有する多数のエントリを有する命令キャッシュと、
現在の命令に対応するシーケンス制御データに基づいて次の命令のアドレスを決定する次アドレス決定回路とを設けた、パイプライン処理を使用して可変長命令を実行するコンピュータ用の命令装置であって、パイプライン処理のフェッチ段の間に、現在の命令のアドレスが、記憶されているアドレス・タグのうちの1つに一致する場合、前記現在の命令が前記命令キャッシュの第1の部分から読み取られ、それと同時に、前記現在の命令に対応するシーケンス制御データが前記キャッシュの第3の部分から読み取られて、前記次アドレス決定回路が次の命令のアドレスを決定することを特徴とする、前記命令装置。
【0038】
〔実施態様2〕
前記第3の部分が、前記第1の部分に記憶されているビットの数と比べて比較的少数のビットを各エントリに記憶することを特徴とする、実施態様1に記載の命令装置。
【0039】
〔実施態様3〕
前記命令キャッシュの前記第1、第2、および第3の部分が、別々のメモリ・アレイであることを特徴とする、実施態様1に記載の命令装置。
【0040】
〔実施態様4〕
前記第2の部分が、あるエントリに対応する記憶されているアドレス・タグが前記現在の命令のアドレスに等しい前記エントリに対応する一致線をドライブし、前記一致線が、前記第1の部分用の第1のワード線と前記第3の部分用の第2のワード線の両方をドライブすることを特徴とする、実施態様1に記載の命令装置。
【0041】
〔実施態様5〕
前記第1の部分が、前記第1のワード線が活性化されているときに第1の1組のビット線をドライブするメモリ・セルを含み、前記第3の部分が、前記第2のワード線が活性化されているときに第2の1組のビット線をドライブするメモリ・セルを含むことを特徴とする、実施態様4に記載の命令装置。
【0042】
〔実施態様6〕
前記第2の1組のビット線が、前記第1の1組のビット線よりも前に安定化することを特徴とする、実施態様5に記載の命令装置。
【0043】
〔実施態様7〕
以下の(a)〜(d)を設け、コンピュータの機能単位に対する命令を記憶する命令装置:
(a)命令を一時的に記憶するプリフェッチ・バッファ;
(b)少なくとも1つのデコードされた命令および関連するシーケンス制御データを生成するために、前記プリフェッチ・バッファに記憶されている命令をデコードする、命令デコーダ;
(c)命令に対応する命令アドレスを一時的に記憶するタグ・バッファ;
(d)デコードされた命令を記憶する第1の部分と、アドレス・タグを記憶し、続いて、記憶されたアドレス・タグを現在の命令アドレスと比較する第2の部分と、関連するシーケンス制御データを記憶する第3の部分をそれぞれが有する多数のエントリを有する、命令キャッシュ。
【0044】
〔実施態様8〕
前記第3の部分が、前記第1の部分に記憶されているビットの数と比べて比較的少数のビットを各エントリに記憶することを特徴とする、実施態様7に記載の命令装置。
【0045】
〔実施態様9〕
前記命令キャッシュの前記第1、第2、および第3の部分が、別々のメモリ・アレイであることを特徴とする、実施態様7に記載の命令装置。
【0046】
〔実施態様10〕
前記第2の部分が、あるエントリに対応する記憶されているアドレス・タグが前記現在の命令のアドレスに等しい前記エントリに対応する一致線をドライブし、前記一致線が、前記第1の部分用の第1のワード線と前記第3の部分用の第2のワード線の両方をドライブすることを特徴とする、実施態様7に記載の命令装置。
【0047】
〔実施態様11〕
前記第1の部分が、前記第1のワード線が活性化されているときに第1の1組のビット線をドライブするメモリ・セルを含み、前記第3の部分が、前記第2のワード線が活性化されているときに第2の1組のビット線をドライブするメモリ・セルを含むことを特徴とする、実施態様10に記載の命令装置。
【0048】
〔実施態様12〕
前記第2の1組のビット線が、前記第1の1組のビット線よりも前に安定化することを特徴とする、実施態様11に記載の命令装置。
【0049】
〔実施態様13〕
前記命令キャッシュの前記第3の部分から得られた、前記現在の命令アドレスに関する前記シーケンス制御データに基づいて次の命令アドレスを決定する次命令決定回路をさらに含むことを特徴とする、実施態様11に記載の命令装置。
【0050】
〔実施態様14〕
前記次命令決定装置が、少なくとも順序アドレスとターゲット・アドレスを含む1組の可能なアドレスから次の命令アドレスを選択するための選択手段を含むことを特徴とする、実施態様13に記載の命令装置。
【0051】
〔実施態様15〕
前記第2の1組のビット線が、前記第1の1組のビット線よりも前に安定化することを特徴とする、実施態様14に記載の命令装置。
【0052】
〔実施態様16〕
コンピュータの所与のクロック・サイクルで、前記第1の1組のビット線が安定化して読み取られるのと同時に、前記第2の1組のビット線が安定化して読み取られ、次の命令が決定されることを特徴とする、実施態様15に記載の命令装置。
【0053】
〔実施態様17〕
キャッシュ・ミス時に前記命令キャッシュをバイパスするためのバイパス手段をさらに含むことを特徴とする、実施態様7に記載の命令装置。
【0054】
〔実施態様18〕
コンピュータ・システム用の命令装置において、
コンピュータ・システムに関する命令を記憶するための第1のメモリ・アレイと、
前記第1のメモリ・アレイに記憶されている各命令ごとのアドレスを記憶するための第2のメモリ・アレイと、
前記第1のメモリ・アレイに記憶されている各命令ごとのシーケンス制御データを記憶するための第3のメモリ・アレイと、
前記第1のメモリ・アレイから読み取るべき命令の命令アドレスを前記第2のメモリ・アレイに記憶されているアドレスと比較するための比較手段と、
前記第1のメモリ・アレイ内の記憶セルに結合された第1の1組のビット線と、
前記第3のメモリ・アレイ内の記憶セルに結合され、前記第1の1組のビット線よりも前に安定化する、第2の1組のビット線と、
前記第1のメモリ・アレイ内の記憶セルに結合された第1の1組のワード線と、
前記第3のメモリ・アレイ内の記憶セルに結合された第2の1組のワード線と、
それぞれ、前記第1および第2の1組のワード線のうちの1組の前記ワード線をドライブする、複数の一致線と
を少なくとも含む命令キャッシュと、
次の命令アドレスを決定するために前記第2の1組のビット線に動作可能に接続された、次命令アドレス決定回路とを含み、
前記第1のメモリ・アレイから読み取るべき命令の命令アドレスが、前記第2のメモリ・アレイに記憶されている1つのアドレスと同じものであることが前記比較手段によって決定され、次いで、前記第1および第2の1組のワード線から得たこのエントリに対応するワード線が、対応する一致線を介して活性化され、その後、読み取るべき命令に対応するデータが、前記第1の1組のビット線上に置かれ、関連するシーケンス制御データが、前記第2の1組のビット線上に置かれ、
前記次命令アドレス決定回路が、前記第2の1組のビット線から得られたシーケンス制御データに基づいて次の命令アドレスを決定することを特徴とする、命令装置。
【0055】
〔実施態様19〕
前記次命令アドレス決定回路によって決定された次の命令アドレスと、前記第1のメモリ・アレイから読み取られる命令に対応するデータが、次のサイクルのために同時にラッチされることを特徴とする、実施態様18に記載の命令装置。
【0056】
〔実施態様20〕
前記次命令決定回路が、少なくとも順序アドレスとターゲット・アドレスを含む、1組の可能なアドレスから次の命令アドレスを選択するための選択手段を含むことを特徴とする、実施態様18に記載の命令装置。
【0057】
〔実施態様21〕
第1のデータを記憶するためのメモリ・セルと、
読取り信号に応答して、前記メモリ・セルから得た第1のデータを読取りビット線上に置くための、読取りポートと、
書込み信号に応答して、書込みビット線から得た第2のデータを前記メモリ・セルに記憶するための、書込みポートと、
前記キャッシュ・メモリからの出力データを保持するために、前記読取りビット線に動作可能に接続された出力バッファと、
キャッシュ・ミスの後に、前記出力バッファに前記書込みビット線から得られた前記第2のデータを出力データとして保持させるために、前記書込みビット線および前記出力バッファに動作可能に接続されたバイパス手段とを含むことを特徴とする、キャッシュ・メモリ。
【0058】
〔実施態様22〕
前記バイパス手段が、前記書込みビット線を使用し、かつ前記バイパス手段が、制御信号に応答して前記第1のデータと前記第2のデータのうちの一方を選択するために、前記読取りビット線に動作可能に接続され、かつ前記書込みビット線に直接接続された、セレクタを含み、選択されたデータが、前記出力バッファに出力データとして保持されることを特徴とする、実施態様21に記載のキャッシュ・メモリ。
【0059】
【発明の効果】
以上詳細に説明したように、本発明によれば、次の命令のアドレスの決定を現在の命令ののフェッチ段で行うことが可能となり、次の命令のアドレスを決定するための追加のパイプライン段の必要性をなくす効果がある。
【図面の簡単な説明】
【図1】本発明による命令装置のブロック図である。
【図2】本発明による命令キャッシュの一実施例のブロック図である。
【図3】本発明のタイミング図である。
【図4】本発明による次PC決定装置の一実施例のブロック図である。
【図5】本発明による次PC決定装置の他の実施例を示す図である。
【図6】本発明による命令装置の代替実施例のブロック図である。
【図7】図6に示したバイパス回路の好ましい実施態様のブロック図である。
【符号の説明】
2:命令装置
4:プリフェッチ・バッファ
6:タグ・バッファ
7:マルチプレクサ
8:命令デコーダ
10:命令キャッシュ
12:命令バッファ
13:次アドレス決定回路
14:第1の記憶領域
16:第2の記憶領域
18:第3の記憶領域
20:一致線
21:ラッチ
22:ワード線
24:ビット線
26:命令バッファ
30:次プログラム・カウンタ決定装置
【産業上の利用分野】
本発明は命令キャッシュに関し、詳細には命令装置用のデコードされた命令キャッシュに関する。
【0002】
【従来の技術】
高性能コンピュータは一般に、エンコードされた命令レイアウトを使用する。例えば、VLIWコンピュータでは複数の命令が命令語内にエンコードされる。命令語をデコードすると、パイプラインで同時に実行すべきいくつかの命令が得られる。高性能コンピュータの命令レイアウトが長いものである場合、もしその命令が発行(issue)されるまでデコードされない場合は、その命令用のメモリ記憶域は保存される。しかし、この手法では、命令を命令キャッシュから発行した後にデコードするためには、余分のクロック・サイクルまたはパイプライン段が必要である。他の手法は、メモリ階層中の後の段だけのために命令をデコードする手法である。すなわち、二次キャッシュに記憶された命令はエンコード形であるが、一次キャッシュに記憶される前にデコードされる。
【0003】
可変長の命令を使用するが、複数の命令を同時に発行するコンピュータでは、この問題はさらに重大である。この場合、デコードのための余分のクロック・サイクルまたはパイプライン段を避けられても、次に発行すべき命令のアドレスの決定のために、パイプラインにおける余分のサイクルまたは段が必要である。次の命令はブランチ命令のターゲット・アドレスであるかも知れないし、あるいは順序アドレス(sequential address)であるかも知れない。順序アドレス自体は、前の命令によっていくつの演算命令が発行されるかに応じて変化する。
【0004】
【発明が解決しようとする課題】
従って、本発明の目的は、余分のクロック・サイクルや追加パイプライン段を使用せずに次の命令のためのアドレスを決定できる機構を提供することである。
【0005】
【課題を解決するための手段】
概して本発明は、現在の命令のフェッチ段で次の命令アドレスを生成することができるように、命令データ用の記憶セルをシーケンス制御用の記憶セルから分離する、命令キャッシュに関する。本発明は、次の命令アドレスを決定するための追加のパイプライン段を不要にする。
【0006】
本発明は、パイプライン処理を使用して可変長命令を実行するコンピュータ用の命令装置として、命令キャッシュと次アドレス決定回路を含む。命令キャッシュは多数のエントリを有し、各エントリは、命令を記憶する第1の部分と、その命令に対応するアドレス・タグを記憶する第2の部分と、その命令に関連するシーケンス制御データを記憶する第3の部分を有する。次アドレス決定回路は、現在の命令に対応するシーケンス制御データに基づいた、次の命令のアドレスを決定する。命令装置は、パイプライン処理のフェッチ段の間、現在の命令のアドレスが、記憶されている1つのアドレス・タグに一致するとき、現在の命令が命令キャッシュの第1の部分から読み取られ、同時に、現在の命令に対応するシーケンス制御情報がキャッシュの第3の部分から読み取られて、次アドレス決定回路が次の命令のアドレスを決定するように動作する。
【0007】
本発明は、コンピュータの機能単位用の命令を記憶するための命令装置として、エンコードされた命令を一時的に記憶するプリフェッチ・バッファと、プリフェッチ・バッファに記憶されているエンコードされた命令をデコードして、少なくとも1つのデコードされた命令および関連するフロー制御データを生成する命令デコーダと、エンコードされた命令に対応する命令アドレスを一時的に記憶するタグ・バッファと、命令キャッシュを含む。命令キャッシュは多数のエントリを有し、各エントリは、デコードされた命令を記憶する第1の部分と、アドレス・タグを記憶した後、記憶されたアドレス・タグを現在の命令アドレスと比較する第2の部分と、関連するフロー制御データを記憶する第3の部分を有する。
【0008】
本発明は、キャッシュ・ミスが起こった後でキャッシュにとって有用であるバイパス機構にも関する。このバイパス機構は、バイパスを実施するための配線要件がなくなり、キャッシュ・ミスの後のデータ・アクセスが1サイクルだけ低減されるので、キャッシュのビット線もバイパス機構の一部としても使用すると、特に有利である。
【0009】
本発明の他の態様および利点は、以下の詳細な説明を、本発明の原理を一例として説明する添付の図面と共に検討すれば、明らかになるであろう。
【0010】
【実施例】
本発明の実施例を以下で図1ないし図7に関して説明する。しかし、本発明をこれらの限られた実施例から拡張するとき、これらの図に関して本明細書で与えた詳細な説明が説明のためのものであることは、当業者には容易に理解されよう。
【0011】
図1は、本発明による命令装置2のブロック図である。命令装置2の全体的な動作は、命令を、それに関連するタグと共に受け取り、処理システムの1つまたは複数の機能単位に命令(動作)を供給することである。そして、機能単位は命令を実行する。
【0012】
命令装置2は、命令の流れから命令を受け取るプリフェッチ・バッファ4を含み、プリフェッチ・バッファ4に命令を記憶する。実際には、受け取られる命令は、可変数の命令を(エンコードして)表す命令語であるので、エンコードされている。例えば、各エンコードされた命令は、1つないし4つ程の命令としてデコードされる。命令装置2は、プリフェッチ・バッファ4に記憶されている命令に対応するタグを記憶するタグ・バッファ6も含む。命令装置2によって受け取られる命令およびタグは、例えば、下位キャッシュ・メモリまたはメイン・メモリから得られるものである。いずれの場合も、タグ・バッファ6は記憶されているタグをマルチプレクサ7に供給し、プリフェッチ・バッファ4はそれ自体に記憶されている命令を命令デコーダ8に供給する。命令デコーダ8は、命令を、一次命令キャッシュ10にロードされる前にデコードするように機能する。デコードされた命令は次いで、命令キャッシュ10から命令バッファ12に供給され、処理システムの様々な機能単位に供給される。
【0013】
また、マルチプレクサ7の出力は、命令キャッシュ10にアドレスを供給する。命令キャッシュ10に供給されるアドレスは、タグ・バッファ6に記憶されているタグ、または次アドレス決定回路13によって決定された次のアドレスである。次アドレス決定回路13は、シーケンス制御情報を命令キャッシュ10から受け取り、この情報を現在のアドレスと関連づけて使用して次のアドレスを決定する。例えば、シーケンス制御情報は、現在の命令が、ブランチを起こす、または起こさないことがあらかじめ分かっているブランチ・オペレーション、2つの命令が同時に発行される語命令、あるいは3つの命令が同時に発行される語命令であることを示すことができる。
【0014】
本発明は符号密度を増加させるために、エンコードされている命令を使用する。このような命令は、一次命令キャッシュ10に書き込まれる前にデコードされる。命令が命令キャッシュ10に記憶される前にデコードされるので、実行される前に命令をデコードするための余分のクロック・サイクルもパイプライン段も必要としない。追加クロック・サイクルまたはパイプライン段は、ブランチ命令の予想を誤った場合のペナルティを増大させるので、これは有利である。命令がディスク上、メイン・メモリ中、または下位キャッシュ・メモリ中にある間、圧縮された、つまりエンコードされたフォーマットでその命令を記憶することによって、下位メモリレベル(例えば、レベル2キャッシュ、メイン・メモリ)でメモリ記憶域が減少され、しかも一次命令キャッシュ10は依然として比較的小規模である。この手法はまた、命令が発行されるときに命令のデコードが必要とされないので、実行パイプラインの長さを減少させる。
【0015】
さらに以下で明らかになるように、本発明では現在の命令のフェッチ段で次の命令アドレスを生成することができる。この態様は、普通なら次の命令アドレスを決定するために必要とされる、命令を実行するコンピュータ・システムの追加パイプライン段を不要にするので非常に有利である。
【0016】
図2は、命令キャッシュ10の一実施例のブロック図である。命令キャッシュ10は、フル・アソシエーティブであり、第1の記憶領域14と、第2の記憶領域16と、第3の記憶領域18とを含む。これら3つの記憶領域は、単一のチップ上の別々の記憶領域であり、半導体メモリをカラムに区画することによって形成することができる。
【0017】
第2の記憶領域16は、さらに厳密に言えば、記憶・比較領域である。第2の記憶領域16は、比較回路(図示せず)に結合することもできる。第1の記憶領域14は、命令自体をそのデコードした形で記憶する。第2の記憶領域16は、第1の記憶領域14に記憶されている、対応するデコードされた命令に関連するアドレス・タグを記憶する。第3の記憶領域18は、関連するアドレス・タグおよび命令に関係するシーケンス制御データを記憶する。すなわち、第1の記憶領域14中の各エントリは、第2の記憶領域16および第3の記憶領域18に対応するエントリを有する。第1および第3の記憶領域14および18はランダム・アクセス・メモリ(RAM)であり、第2の記憶領域16(比較回路を含む)は内容アクセス・メモリ(CAM)であることが好ましい。さらに、「Horizontally Partitioned Instruction Cache」と題し、本出願と同時に出願された、米国特許出願第08/298,861号に記載されたように、命令キャッシュ10を水平に区画することが好ましいこともある。例えば、命令キャッシュ10は、シーケンシャル・キャッシュ、ブランチ・ターゲット・キャッシュ、および犠牲キャッシュとして水平に区画することができる。
【0018】
図2に示した命令キャッシュの動作は以下のとおりである。第2の記憶領域16は、次の命令のアドレスを受け取る。このアドレスは、第2の記憶領域16内の各エントリごとに、記憶されているアドレス・タグと比較される。一致が見つかった場合、特定のエントリの関連する一致線(ML)20が、ハイにドライブされ、ラッチ21にラッチされる。次いで、ラッチ21は、順次にかつ別々に、バッファ23を介してワード線(WL)22および22’をドライブする。ワード線22とワード線22’は共に、同じ一致線20によってドライブされるが、相互に分離されている。従って、ワード線22上に現れる容量・抵抗負荷は、ワード線22’上に現れる容量・抵抗負荷とは異なる。設計に応じて、第3の記憶領域18は数ビットしか記憶しないが、第1の記憶領域14は、通常少なくとも32ビットである命令全体を記憶するので、ワード線22’上に現れる容量・抵抗負荷は、ワード線22上に現れる容量・抵抗負荷よりもはるかに小さい。一例を挙げると、第3の記憶領域18中の各エントリは、8ビットを記憶することができるが、第1の記憶領域14中の各エントリは、256ビットを記憶することができる。
【0019】
いずれの場合も、ワード線22および22’が一度ハイにドライブされると、読み取られている特定のエントリに記憶されているビットに応じて、あるビット線がハイにドライブされる。特に、第1の記憶領域14はビット線24(BL1、BL2、…、BLn)を含み、第3の記憶領域18はビット線28(BL1、…、BLi、ここでiはnよりも小さい)を含む。ビット線24を介して第1の記憶領域14から読み取られるデータは、命令バッファ26に記憶されるデコードされた命令である。デコードされた命令はその後、命令バッファ26から実行パイプラインに供給され、そこで命令が実行される。
【0020】
次のクロック・サイクルで、命令装置2は、実行パイプラインによって次に実行すべき命令を命令バッファ26に提供しなければならない。実行パイプラインにおいてデコードの段を与えると、次の命令を容易に決定することができるが、その命令は1サイクルだけ遅れる。しかし、パイプラインがデコード段を使用しないと、次に実行すべき命令の決定が困難になることがある。例えば、命令の通常の順序発行は、多数の理由、すなわち、ブランチおよび可変長の命令のために順序が変化する可能性がある。次の命令アドレスを次のクロック・サイクルの丁度よい時間に提供するには、この次のサイクルが始まる直前に次の命令アドレスを第2の記憶領域16に供給しなければならない。
【0021】
従来、シーケンス制御データは、命令データと共に第1の記憶領域14に記憶されている。しかし、そうすることで、次のサイクルの始めまでに次のアドレスを決定することができなくなる。その結果、従来は次のアドレスを算出するために完全な一つの追加サイクルが必要であった。本発明によって提供される改良は、シーケンス制御データが、命令データよりも速く読みとれるように、命令データから分離されて、別の記憶領域に含まれることである。従って、次プログラム・カウンタ(PC)決定装置30は、次の命令アドレスを算出し、現在のサイクル内でデータ線32を介して第2の記憶領域16に供給する。従って、本発明は、現在の命令のパイプライン処理のフェッチ段で次の命令アドレスを決定するように動作する。
【0022】
図3は、図2に示した命令キャッシュ10の動作のタイミング図である。処理システムは、タイミング・クロック(CLK)に従って命令を実行する。図のように、タイミング・クロックは周期Pを有する。一例を挙げると、周期Pは現在、ワークステーションなどの高性能コンピュータで約4ナノ秒である。タイミング・クロックのサイクルの前半の間、第2の記憶領域16(CAM)でアドレス評価が行われ、第1および第3の記憶領域14および18中のRAM記憶域がプレチャージされる。タイミング・クロックのサイクルの後半の間、第1および第3の記憶領域14および18のRAMが読み取られ、第2の記憶領域16がプレチャージされる。
【0023】
次に、タイミング・クロックのサイクルの後半について詳しく説明し、本発明の動作および利点を示す。第1の記憶領域14用のワード線(WL−Data)は、タイミング・クロックのサイクルの後半の間にアクティブまたはハイになるものとして示されている。これに対して、第3の記憶領域18用のワード線(WL−Br,Sz)は、タイミング・クロックのサイクルの後半中ではあるが、第1の記憶領域14用のワード線(WL−Data)が推移する前(典型的な例では約1ナノ秒前)に、ハイまたはアクティブになるものとして示されている。第1および第3の記憶領域14、18のビット線24および28は、図3には示していないが、対応するワード線がハイまたはアクティブになってから約0.5ナノ秒後に安定化する。その後、第1および第3の記憶領域14、18用のセンス・アンプ(S/A)は、ビット線24からのデータを検知し、ビット線28からのシーケンス制御データを検知する。しかし、図3に示したように、第3の記憶領域18から読み取られたシーケンス制御データは、第1の記憶領域14のデータが安定化して読取り準備が完了する(約1ナノ秒)前に、安定化して読取り準備が完了する。この1ナノ秒のウィンドウ内で次PC決定装置30内の高速ハードウェア回路は次のアドレスの算出が可能になり、その結果、次の半クロック・サイクルの立上りエッジで、ビット線24から読み取られた命令データが命令バッファ26に記憶されるだけでなく、次のアドレスも次アドレス・バッファに記憶される。従って、次のクロック・サイクルの始めに次の命令のアドレスが使用できるようになり、アドレス評価ができるように命令キャッシュ10に供給される。
【0024】
図4は次PC決定装置30の第1の実施例のブロック図である。この実施例の次PC決定装置30はセレクタ34と次PCバッファ36を含む。セレクタ34は様々な所定のアドレスをセレクタ自体のデータ入力上で受け取る。これらのアドレスには、順序アドレス(C+1、C+2、C+4)、割込みアドレス(INT)、ターゲット・アドレス(TGT)、および予想を誤った場合のアドレス(MIS)が含まれる。順序アドレスC+1、C+2、C+4はそれぞれ、現アドレス(C)が1だけ増分したもの、現アドレス(C)が2だけ増分したもの、現アドレス(C)が4だけ増分したものに相当する。
【0025】
高性能コンピュータ・システムは一般に、単一の命令でも複数の命令でも所与のクロック・サイクルで発行することができるので、この実施例では複数の順序アドレスが示されている。ここで、コンピュータ・システムは単一の命令でも2つの命令でも4つの命令でも同時に発行できると仮定する。割込みアドレス(INT)は割込みの場合に制御が割込みアドレスへ移るように供給される。ターゲット・アドレス(TGT)はブランチ命令に関連付けられ、予想を誤った場合のアドレスは、実際にはその反対のことが必要であった時にブランチが起こった、あるいは起こらなかったと仮定された、前のブランチ命令と関連付けられる。
【0026】
セレクタ34は、多数の制御線に基づいてこれらのアドレスのうちの1つを選択する。この実施例に示した制御線は、予想ビット(P)、割込みビット(I)、1つまたは複数のサイズ・ビット(Sz)、および1つまたは複数のブランチ・ビット(Br)である。ブランチ・ビット(Br)がセットされていない場合、セレクタ34は1つまたは複数のサイズ・ビット(Sz)に基づいて順序アドレスのうちの1つを選択する。割込みビットがセットされた場合、セレクタ34は割込みアドレス(INT)を選択する。ブランチ・ビット(Br)がセットされた場合、セレクタ34は、予想ビット(P)もセットされている場合はターゲット・アドレス(TGT)を選択する。そうでない場合、セレクタは1つの順序アドレスを選択する。予想ビット(P)は、コンパイラによって静的に決定することも、あるいは、ブランチ予想回路によって動的に決定することもできる。静的予想を使用する場合、予想ビット(P)はシーケンス制御データ内に含めることができる。予想を誤った場合のアドレスは、まだパイプライン中にあるデータが、予想されるブランチ・アドレスとして選択され、後で誤りであると判定されたときに、セレクタ34によって選択される。いずれの場合も、セレクタ34がどちらを選択するかにかかわらず、次の命令用に選択されたアドレスは次PCバッファ36に記憶される。
【0027】
図5は次PC決定装置30の第2の実施例である。この実施例では、マルチプレクサ38は、順序アドレス40(SEQ)、ターゲット・アドレス42(TGT)、割込みアドレス44(INT)、および予想を誤った場合のアドレス46(MIS)を受け取る。マルチプレクサ38は制御信号に基づいてこれらの入力アドレスのうちの1つを選択する。制御信号とは、割込み信号(I)および予想付きブランチ信号(Br&P)である。典型的なケースでは、予想付きブランチ信号はブランチ・ビットと予想ビットとを含む。ブランチ・ビット(Br)は、現在の命令がブランチ命令であるかどうかを示す。予想ビット(P)は、そのブランチが選択されるかどうかの予想を示す。
【0028】
順序アドレス40は、マルチプレクサ50によって供給される増分量に現在のアドレスを追加する加算回路48を介して、マルチプレクサ38に供給される。マルチプレクサ50は(デコードされた)現在の命令のサイズ(Sz)に基づいて増分量を選択する。増分量は例えば、1でも2でも4でもよい。
【0029】
予想を誤った場合のアドレス46は、各パイプライン段(例えば、FDREW)ごとのプログラム・カウンタ(PC)をファースト・イン・ファースト・アウト式に記憶する代替アドレス・パイプライン52によって供給される。アドレスは、マルチプレクサ38によって使用されるのと同じ制御信号(I、Br、P)に基づいて順序アドレス40とターゲット・アドレス42のうちの一方を選択するマルチプレクサ54を介して、代替命令アドレス・パイプライン52に入力される。マルチプレクサ38の出力は、次PCとして知られる、次の命令のアドレスである。このアドレスは、実行パイプラインの各段ごとの現在のアドレスを記憶する命令アドレス・パイプライン56にも供給される。
【0030】
図6は、本発明による命令装置の代替実施例のブロック図である。この実施例による命令装置58は、図1に示した実施例に類似している。違いは、図6の実施例では命令装置58がいくつかの拡張機能を含むことである。第1に、命令キャッシュ10は、現在の命令が命令キャッシュ10から読み取られている間に、デコードされた命令およびそのタグ・アドレスを記憶できるように、追加書込みポートを含む。第2に、キャッシュ・ミスが発生した(すなわち、要求された命令が命令キャッシュに記憶されていない)とき、現在の命令を、命令キャッシュに記憶して前記キャッシュから読み出す必要なしに、命令装置58から出力できるようにし、それによってキャッシュ・ミスに関連する遅延が短縮するように、バイパス回路が提供されている。この実施例中のバイパス回路はマルチプレクサ60とバイパス・バス62とを含む。
【0031】
図7はバイパス回路の好ましい実施態様のブロック図である。図7には単一のビット線を示したが、この手法は実際にはキャッシュ・メモリの各ビット線と共に実施することができる。図7に示した手法は、キャッシュ・メモリを何に使用するかにかかわらず適用することができる。例えば、キャッシュ・メモリは、命令キャッシュでも、あるいはデータ・キャッシュでもよい。いずれにせよ、キャッシュ・メモリの単一のメモリ・セル64を図7に示す。メモリ・セル64は読取りポート66および68に接続されている。読取りポート66、68が読取りワード線(WL_R)によって活性化されると、メモリ・セル64に保持されたデータがビット線(BL_R)上に置かれ、そのデータの補数が補数ビット線(*BL_R)上に置かれる(*はその補数であることを表す)。ビット線上のデータは差動センス・アンプ70によって検知され、マルチプレクサ72に出力される。書込みビット線(BL_W)上に置かれたデータは、書込みポート74が活性化されたときにメモリ・セル64に記憶される。書込みビット線(BL_W)上に置かれたデータはマルチプレクサ72にも供給される。マルチプレクサ72は、制御信号76に基づいて、そのデータ入力の一つを出力データとして選択する。従って、メモリ・セル64からデータが読み取られるとき、マルチプレクサ72はセンス・アンプ70から受け取ったデータを選択して出力する。一方、マルチプレクサ72は、キャッシュ・ミスの後にバイパス・オペレーションを実行する際、書込みビット線(BL_W)から受け取ったデータを選択して出力する。いずれの場合も、マルチプレクサ72によって出力されたデータはバッファ78に保持される。
【0032】
従って、この実施態様(図7)は、キャッシュのビット線がバイパス・バスとしても使用できるので有利である。ゆえに、必要なデータを、バイパス経路を介してキャッシュ・メモリから出力するのと同時にメモリ・セル64に記憶することができるので、バイパス・バスの配線要件がこの実施態様を使用することによって除去されるだけでなく、キャッシュ・ミスの後のデータ・アクセスも1サイクルだけ低減される。
【0033】
可変長命令を使用するコンピュータ・システムに関して本発明を説明したが、本発明は次の順序アドレスが周知のような命令が固定長のものである簡単なケースにも、あるいはデコードが必要とされない簡単なケースにも同様に適用することができる。いずれの場合も、図4に示した次PC決定装置30は(いくつかの順序アドレスではなく)単一の順序アドレスしか含まず、1つまたは複数のサイズ・ビット(Sz)はもはや必要とされない。
【0034】
また、上述のような2つ以上の命令キャッシュを提供することが好ましい。キャッシュがそれぞれ小型であるがゆえに高速であるので、性能が向上する。さらに、2命令キャッシュの場合、一方の命令キャッシュから命令を発行する間に他方のキャッシュを先読みすることができる。また、2命令キャッシュおよびデコードされた命令を使用する場合、所与の命令語に関して、いくつかのデコードされた命令は第1のキャッシュに記憶され、残りのデコードされた命令は第2のキャッシュに記憶される。2つの命令キャッシュがエンコードされた命令または固定長命令を記憶する場合、1つのキャッシュが偶数アドレスを記憶し、他方のアドレスが奇数アドレスを記憶することができる。
【0035】
本発明の多数の特徴および利点は詳細な説明から明らかであり、従って、添付の特許請求の範囲は本発明のそのような特徴および利点のすべてに及んでいるものである。さらに、当業者には多数の修正および変更が容易に思いつくであろうから、図示し説明した構成および動作だけに本発明を制限することは望ましくない。よって、すべての適当な修正および相当物は本発明の範囲に含まれるとみなすことができる。
【0036】
【実施態様】
なお、本発明の実施態様の例を以下に示す。
【0037】
〔実施態様1〕
命令を記憶する第1の部分と、その命令に対応するアドレス・タグを記憶する第2の部分と、その命令に関連するシーケンス制御データを記憶する第3の部分をそれぞれが有する多数のエントリを有する命令キャッシュと、
現在の命令に対応するシーケンス制御データに基づいて次の命令のアドレスを決定する次アドレス決定回路とを設けた、パイプライン処理を使用して可変長命令を実行するコンピュータ用の命令装置であって、パイプライン処理のフェッチ段の間に、現在の命令のアドレスが、記憶されているアドレス・タグのうちの1つに一致する場合、前記現在の命令が前記命令キャッシュの第1の部分から読み取られ、それと同時に、前記現在の命令に対応するシーケンス制御データが前記キャッシュの第3の部分から読み取られて、前記次アドレス決定回路が次の命令のアドレスを決定することを特徴とする、前記命令装置。
【0038】
〔実施態様2〕
前記第3の部分が、前記第1の部分に記憶されているビットの数と比べて比較的少数のビットを各エントリに記憶することを特徴とする、実施態様1に記載の命令装置。
【0039】
〔実施態様3〕
前記命令キャッシュの前記第1、第2、および第3の部分が、別々のメモリ・アレイであることを特徴とする、実施態様1に記載の命令装置。
【0040】
〔実施態様4〕
前記第2の部分が、あるエントリに対応する記憶されているアドレス・タグが前記現在の命令のアドレスに等しい前記エントリに対応する一致線をドライブし、前記一致線が、前記第1の部分用の第1のワード線と前記第3の部分用の第2のワード線の両方をドライブすることを特徴とする、実施態様1に記載の命令装置。
【0041】
〔実施態様5〕
前記第1の部分が、前記第1のワード線が活性化されているときに第1の1組のビット線をドライブするメモリ・セルを含み、前記第3の部分が、前記第2のワード線が活性化されているときに第2の1組のビット線をドライブするメモリ・セルを含むことを特徴とする、実施態様4に記載の命令装置。
【0042】
〔実施態様6〕
前記第2の1組のビット線が、前記第1の1組のビット線よりも前に安定化することを特徴とする、実施態様5に記載の命令装置。
【0043】
〔実施態様7〕
以下の(a)〜(d)を設け、コンピュータの機能単位に対する命令を記憶する命令装置:
(a)命令を一時的に記憶するプリフェッチ・バッファ;
(b)少なくとも1つのデコードされた命令および関連するシーケンス制御データを生成するために、前記プリフェッチ・バッファに記憶されている命令をデコードする、命令デコーダ;
(c)命令に対応する命令アドレスを一時的に記憶するタグ・バッファ;
(d)デコードされた命令を記憶する第1の部分と、アドレス・タグを記憶し、続いて、記憶されたアドレス・タグを現在の命令アドレスと比較する第2の部分と、関連するシーケンス制御データを記憶する第3の部分をそれぞれが有する多数のエントリを有する、命令キャッシュ。
【0044】
〔実施態様8〕
前記第3の部分が、前記第1の部分に記憶されているビットの数と比べて比較的少数のビットを各エントリに記憶することを特徴とする、実施態様7に記載の命令装置。
【0045】
〔実施態様9〕
前記命令キャッシュの前記第1、第2、および第3の部分が、別々のメモリ・アレイであることを特徴とする、実施態様7に記載の命令装置。
【0046】
〔実施態様10〕
前記第2の部分が、あるエントリに対応する記憶されているアドレス・タグが前記現在の命令のアドレスに等しい前記エントリに対応する一致線をドライブし、前記一致線が、前記第1の部分用の第1のワード線と前記第3の部分用の第2のワード線の両方をドライブすることを特徴とする、実施態様7に記載の命令装置。
【0047】
〔実施態様11〕
前記第1の部分が、前記第1のワード線が活性化されているときに第1の1組のビット線をドライブするメモリ・セルを含み、前記第3の部分が、前記第2のワード線が活性化されているときに第2の1組のビット線をドライブするメモリ・セルを含むことを特徴とする、実施態様10に記載の命令装置。
【0048】
〔実施態様12〕
前記第2の1組のビット線が、前記第1の1組のビット線よりも前に安定化することを特徴とする、実施態様11に記載の命令装置。
【0049】
〔実施態様13〕
前記命令キャッシュの前記第3の部分から得られた、前記現在の命令アドレスに関する前記シーケンス制御データに基づいて次の命令アドレスを決定する次命令決定回路をさらに含むことを特徴とする、実施態様11に記載の命令装置。
【0050】
〔実施態様14〕
前記次命令決定装置が、少なくとも順序アドレスとターゲット・アドレスを含む1組の可能なアドレスから次の命令アドレスを選択するための選択手段を含むことを特徴とする、実施態様13に記載の命令装置。
【0051】
〔実施態様15〕
前記第2の1組のビット線が、前記第1の1組のビット線よりも前に安定化することを特徴とする、実施態様14に記載の命令装置。
【0052】
〔実施態様16〕
コンピュータの所与のクロック・サイクルで、前記第1の1組のビット線が安定化して読み取られるのと同時に、前記第2の1組のビット線が安定化して読み取られ、次の命令が決定されることを特徴とする、実施態様15に記載の命令装置。
【0053】
〔実施態様17〕
キャッシュ・ミス時に前記命令キャッシュをバイパスするためのバイパス手段をさらに含むことを特徴とする、実施態様7に記載の命令装置。
【0054】
〔実施態様18〕
コンピュータ・システム用の命令装置において、
コンピュータ・システムに関する命令を記憶するための第1のメモリ・アレイと、
前記第1のメモリ・アレイに記憶されている各命令ごとのアドレスを記憶するための第2のメモリ・アレイと、
前記第1のメモリ・アレイに記憶されている各命令ごとのシーケンス制御データを記憶するための第3のメモリ・アレイと、
前記第1のメモリ・アレイから読み取るべき命令の命令アドレスを前記第2のメモリ・アレイに記憶されているアドレスと比較するための比較手段と、
前記第1のメモリ・アレイ内の記憶セルに結合された第1の1組のビット線と、
前記第3のメモリ・アレイ内の記憶セルに結合され、前記第1の1組のビット線よりも前に安定化する、第2の1組のビット線と、
前記第1のメモリ・アレイ内の記憶セルに結合された第1の1組のワード線と、
前記第3のメモリ・アレイ内の記憶セルに結合された第2の1組のワード線と、
それぞれ、前記第1および第2の1組のワード線のうちの1組の前記ワード線をドライブする、複数の一致線と
を少なくとも含む命令キャッシュと、
次の命令アドレスを決定するために前記第2の1組のビット線に動作可能に接続された、次命令アドレス決定回路とを含み、
前記第1のメモリ・アレイから読み取るべき命令の命令アドレスが、前記第2のメモリ・アレイに記憶されている1つのアドレスと同じものであることが前記比較手段によって決定され、次いで、前記第1および第2の1組のワード線から得たこのエントリに対応するワード線が、対応する一致線を介して活性化され、その後、読み取るべき命令に対応するデータが、前記第1の1組のビット線上に置かれ、関連するシーケンス制御データが、前記第2の1組のビット線上に置かれ、
前記次命令アドレス決定回路が、前記第2の1組のビット線から得られたシーケンス制御データに基づいて次の命令アドレスを決定することを特徴とする、命令装置。
【0055】
〔実施態様19〕
前記次命令アドレス決定回路によって決定された次の命令アドレスと、前記第1のメモリ・アレイから読み取られる命令に対応するデータが、次のサイクルのために同時にラッチされることを特徴とする、実施態様18に記載の命令装置。
【0056】
〔実施態様20〕
前記次命令決定回路が、少なくとも順序アドレスとターゲット・アドレスを含む、1組の可能なアドレスから次の命令アドレスを選択するための選択手段を含むことを特徴とする、実施態様18に記載の命令装置。
【0057】
〔実施態様21〕
第1のデータを記憶するためのメモリ・セルと、
読取り信号に応答して、前記メモリ・セルから得た第1のデータを読取りビット線上に置くための、読取りポートと、
書込み信号に応答して、書込みビット線から得た第2のデータを前記メモリ・セルに記憶するための、書込みポートと、
前記キャッシュ・メモリからの出力データを保持するために、前記読取りビット線に動作可能に接続された出力バッファと、
キャッシュ・ミスの後に、前記出力バッファに前記書込みビット線から得られた前記第2のデータを出力データとして保持させるために、前記書込みビット線および前記出力バッファに動作可能に接続されたバイパス手段とを含むことを特徴とする、キャッシュ・メモリ。
【0058】
〔実施態様22〕
前記バイパス手段が、前記書込みビット線を使用し、かつ前記バイパス手段が、制御信号に応答して前記第1のデータと前記第2のデータのうちの一方を選択するために、前記読取りビット線に動作可能に接続され、かつ前記書込みビット線に直接接続された、セレクタを含み、選択されたデータが、前記出力バッファに出力データとして保持されることを特徴とする、実施態様21に記載のキャッシュ・メモリ。
【0059】
【発明の効果】
以上詳細に説明したように、本発明によれば、次の命令のアドレスの決定を現在の命令ののフェッチ段で行うことが可能となり、次の命令のアドレスを決定するための追加のパイプライン段の必要性をなくす効果がある。
【図面の簡単な説明】
【図1】本発明による命令装置のブロック図である。
【図2】本発明による命令キャッシュの一実施例のブロック図である。
【図3】本発明のタイミング図である。
【図4】本発明による次PC決定装置の一実施例のブロック図である。
【図5】本発明による次PC決定装置の他の実施例を示す図である。
【図6】本発明による命令装置の代替実施例のブロック図である。
【図7】図6に示したバイパス回路の好ましい実施態様のブロック図である。
【符号の説明】
2:命令装置
4:プリフェッチ・バッファ
6:タグ・バッファ
7:マルチプレクサ
8:命令デコーダ
10:命令キャッシュ
12:命令バッファ
13:次アドレス決定回路
14:第1の記憶領域
16:第2の記憶領域
18:第3の記憶領域
20:一致線
21:ラッチ
22:ワード線
24:ビット線
26:命令バッファ
30:次プログラム・カウンタ決定装置
Claims (18)
- パイプライン処理を利用して可変長命令を実行するコンピュータ用の命令装置であって、
複数のエントリを有し、該エントリの各々が命令を記憶するための第1の部分と該命令に対応するアドレスタグを記憶するための第2の部分と該命令に関連するシーケンス制御情報を記憶するための第3の部分とを有し、前記第1の部分を記憶するための第1のメモリアレイと前記第2の部分を記憶するためのCAMアレイと前記第3の部分を記憶するための第2のメモリアレイとに区画され、前記CAMアレイの各エントリが前記第1および第2のメモリアレイの対応するエントリと接続されるように前記第1のメモリアレイが第1のワード線の集合によって前記CAMアレイに接続され且つ前記第2のメモリアレイが第2のワード線の集合によって前記CAMメモリアレイに接続され、前記第1のメモリアレイおよび前記第2のメモリアレイが前記CAMアレイに隣接して両側に配置される、命令キャッシュと、
現在の命令に対応するシーケンス制御データに基づいて次の命令のアドレスを決定するための次のアドレス決定回路とからなり、
前記命令を記憶するための第1の部分の各行が前記第3の部分の各行よりも実質的に多数のビットを有し、これによって前記パイプライン処理のフェッチ段の間、現在の命令のアドレスが前記第2の部分のエントリに記憶されたアドレスタグのうちの1つに一致した場合、該第2の部分のエントリに対応する第1および第2の一致線を活性化して、前記命令キャッシュの第1の部分から現在の命令を読み出させると同時に前記キャッシュの第3の部分から前記現在の命令に関連するシーケンス制御情報を読み出させ、前記次のアドレス決定回路によって前記次の命令のアドレスを決定するように動作する、命令装置。 - 前記第2の部分は記憶されたアドレスタグが現在の命令のアドレスと等しいエントリに対応する一致線をドライブし、該一致線によって前記第1の部分の第1のワード線と前記第3の部分の第2のワード線との両方をドライブする、請求項1の命令装置。
- 前記第1の部分は前記第1のワード線が活性化されているときに第1のビット線の集合をドライブするメモリセルを含み、前記第3の部分は前記第2のワード線が活性化されているときに第2のビット線の集合をドライブするメモリセルを含む、請求項2の命令装置。
- 前記第2のビット線の集合は前記第1のビット線の集合よりも先に安定するようになっている、請求項3の命令装置。
- 前記第1のワード線の集合と前記第2のワード線の集合とが異なる負荷インピーダンスを有し、前記第1のワード線の集合が前記第2のワード線の集合よりも長い待ち時間になっている、請求項1の命令装置。
- コンピュータの機能単位のために命令の流れから受信した命令を記憶するための命令装置であって、
命令の流れから受信した命令を一時的に記憶するためのプリフェッチバッファと、
前記プリフェッチバッファに記憶された命令をデコードして少なくとも1つのデコードされた命令および関連するシーケンス制御データを生成するための命令デコーダと、
前記命令に対応する命令アドレスを一時的に記憶するためのタグバッファと、
複数のエントリを有し、各エントリが、前記デコードされた命令を記憶するための第1の部分と、アドレスタグを記憶して記憶された該アドレスタグと現在の命令のアドレスとを比較するための第2の部分と、命令サイズ情報を含む前記関連するシーケンス制御データを記憶するための第3の部分とを有する、命令キャッシュと、
前記命令キャッシュの第3の部分から取得したシーケンス制御データに基づいて次の命令アドレスを決定するための次のアドレス決定回路とからなり、
前記命令キャッシュの第2の部分は、一致線の集合によって前記第1および第3の部分と接続されており、記憶されたアドレスタグが現在の命令アドレスと等しい各エントリに関する一致線をドライブすることによって、前記第3の部分に対し対応するシーケンス制御データを前記次のアドレス決定回路に供給させ、前記第1の部分に対し前記デコードされた命令を出力させる、命令装置。 - 前記第3の部分は前記第1の部分に比較して少数のビットを各エントリに記憶する、請求項6の命令装置。
- 前記命令キャッシュの第1、第2および第3の部分が個別のメモリアレイである、請求項6の命令装置。
- 前記第2の部分は記憶されたアドレスタグが前記現在の命令のアドレスと等しいエントリに対応する一致線をドライブし、該一致線によって前記第1の部分の第1のワード線と前記第3の部分の第2のワード線との両方をドライブする、請求項6の命令装置。
- 前記第1の部分は前記第1のワード線が活性化されているときに第1のビット線の集合をドライブするメモリセルを含み、前記第3の部分は前記第2のワード線が活性化されているときに第2のビット線の集合をドライブするメモリセルを含む、請求項9の命令装置。
- 前記第2のビット線の集合は前記第1のビット線の集合よりも先に安定するようになっている、請求項10の命令装置。
- 前記次のアドレス決定回路は、少なくとも順序アドレスおよびターゲットアドレスを含む潜在的アドレスの集合の中から前記次の命令のアドレスを選択するための選択手段を含む、請求項6の命令装置。
- 前記第2のビット線の集合は前記第1のビット線の集合よりも先に安定するようになっている、請求項12の命令装置。
- 前記コンピュータの所定のクロックサイクルにおいて、前記第2のビット線の集合が安定し、読み出され、および、前記次の命令が決定され、同時に第1のビット線の集合が安定し、および、読み出される、請求項13の命令装置。
- キャッシュミスが発生した時に前記命令キャッシュをバイパスするためのバイパス手段をさらに含む、請求項6の命令装置。
- コンピュータシステム用の命令装置であって、命令キャッシュを含み、該命令キャッシュが、
前記コンピュータシステムのために命令を記憶するための第1のメモリアレイと、
前記第1のメモリアレイに隣接して設けられ、前記第1のメモリアレイに記憶された命令の各々のアドレスを記憶するためのCAMアレイと、
前記CAMアレイに隣接して前記第1のメモリアレイの反対側に設けられ、命令サイズ情報を含む、前記第1のメモリアレイに記憶された命令の各々のシーケンス制御データを記憶するための第2のメモリアレイと、
前記第1のメモリアレイから読み出される前記命令の命令アドレスと前記CAMアレイに記憶されたアドレスとを比較するための比較手段とからなり、
前記比較手段が、
前記第1のメモリアレイ内の記憶セルに接続された第1のビット線の集合と、
前記第2のメモリアレイ内の記憶セルに接続され、前記第1のビット線の集合よりも先に安定する第2のビット線の集合と、
前記第1のメモリアレイ内の記憶セルに接続された第1のワード線の集合と、
前記第2のメモリアレイ内の記憶セルに接続された第2のワード線の集合と、
複数の一致線であって、各一致線が前記第1および第2のワード線の集合の中から1本のワード線をドライブする、複数の一致線と、
前記第2のビット線の集合に接続され、次の命令アドレスを決定するための次の命令アドレス決定回路とからなり、
前記第1のメモリアレイから読み出される命令の命令アドレスが前記CAMアレイのエントリに記憶されたアドレスのうちの1つと同じであることが前記比較手段によって判定された場合、該エントリに対応する一致線を介して前記第1のワード線の集合と前記第2のワード線の集合との各々の中から該エントリに対応するワード線を活性化し、その後、前記読み出される命令に対応するデータを前記第1のビット線の集合上に置き、関連するシーケンス制御データを第2のビット線の集合上に置き、
前記次の命令アドレス決定回路が前記第2のビット線の集合から取得した前記シーケンス制御データに基づいて前記次の命令アドレスを決定するように動作する、命令装置。 - 前記次の命令アドレス決定回路によって決定された次の命令アドレスと、前記第1のメモリアレイから読み出される命令に対応するデータとが、次のサイクルに備えて同時にラッチされる、請求項16の命令装置。
- 前記次の命令アドレス決定回路は、少なくとも順序アドレスおよびターゲットアドレスを含む潜在的アドレスの集合の中から前記次の命令アドレスを選択するための選択手段を含む、請求項16の命令装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US299,174 | 1989-01-19 | ||
US29917494A | 1994-08-31 | 1994-08-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08320786A JPH08320786A (ja) | 1996-12-03 |
JP3641031B2 true JP3641031B2 (ja) | 2005-04-20 |
Family
ID=23153614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24537095A Expired - Fee Related JP3641031B2 (ja) | 1994-08-31 | 1995-08-29 | 命令装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5933850A (ja) |
JP (1) | JP3641031B2 (ja) |
DE (1) | DE19526008C2 (ja) |
GB (1) | GB2293670A (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp | Befehlscachespeicher mit Kreuzschienenschalter |
US6286081B1 (en) * | 1998-05-19 | 2001-09-04 | Advanced Micro Devices, Inc. | Mechanism for ensuring data coherency during sequential readings of portions of data that changes with time |
US6460116B1 (en) * | 1998-09-21 | 2002-10-01 | Advanced Micro Devices, Inc. | Using separate caches for variable and generated fixed-length instructions |
US6223254B1 (en) * | 1998-12-04 | 2001-04-24 | Stmicroelectronics, Inc. | Parcel cache |
US6351802B1 (en) | 1999-12-03 | 2002-02-26 | Intel Corporation | Method and apparatus for constructing a pre-scheduled instruction cache |
US6745322B1 (en) * | 2000-02-18 | 2004-06-01 | Hewlett-Packard Development Company, Lp. | Apparatus and method for conditionally flushing a pipeline upon a failure of a test condition |
DE10120522A1 (de) * | 2001-04-26 | 2002-11-07 | Infineon Technologies Ag | Verfahren zum Erkennen einer korrekten Befehls-Einsprung-Adresse bei Verwendung unterschiedlich langer Befehlsworte |
US6976156B1 (en) * | 2001-10-26 | 2005-12-13 | Lsi Logic Corporation | Pipeline stall reduction in wide issue processor by providing mispredict PC queue and staging registers to track branch instructions in pipeline |
US6920550B2 (en) * | 2001-11-15 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | System and method for decoding and executing program binaries |
KR101076815B1 (ko) * | 2004-05-29 | 2011-10-25 | 삼성전자주식회사 | 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템 |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7827355B1 (en) * | 2004-07-08 | 2010-11-02 | Globalfoundries Inc. | Data processor having a cache with efficient storage of predecode information, cache, and method |
US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
US20070083711A1 (en) * | 2005-10-07 | 2007-04-12 | International Business Machines Corporation | Reconfiguring caches to support metadata for polymorphism |
US7840786B2 (en) * | 2007-04-16 | 2010-11-23 | Advanced Micro Devices, Inc. | Techniques for storing instructions and related information in a memory hierarchy |
JP2011181000A (ja) * | 2010-03-03 | 2011-09-15 | Toshiba Corp | コントローラ、半導体記憶装置および半導体記憶装置の制御方法 |
CN103513957B (zh) * | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3938097A (en) * | 1974-04-01 | 1976-02-10 | Xerox Corporation | Memory and buffer arrangement for digital computers |
EP0019358B1 (en) * | 1979-05-09 | 1984-07-11 | International Computers Limited | Hierarchical data storage system |
US4506322A (en) * | 1982-02-22 | 1985-03-19 | Texas Instruments Incorporated | Read/write memory cell for microcomputer |
US4646233A (en) * | 1984-06-20 | 1987-02-24 | Weatherford James R | Physical cache unit for computer |
DK397985A (da) * | 1984-08-31 | 1986-03-01 | Raychem Corp | Varmestabile polymere gelloider |
US4691277A (en) * | 1984-10-24 | 1987-09-01 | International Business Machines Corp. | Small instruction cache using branch target table to effect instruction prefetch |
US4783736A (en) * | 1985-07-22 | 1988-11-08 | Alliant Computer Systems Corporation | Digital computer with multisection cache |
US4853889A (en) * | 1986-09-03 | 1989-08-01 | American Telephone And Telegraph Company, At&T Bell Laboratories | Arrangement and method for speeding the operation of branch instructions |
JPS6393038A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
GB2210479B (en) * | 1987-10-02 | 1992-06-17 | Sun Microsystems Inc | Alias address support. |
US5027270A (en) * | 1988-10-11 | 1991-06-25 | Mips Computer Systems, Inc. | Processor controlled interface with instruction streaming |
EP0375864A3 (en) * | 1988-12-29 | 1991-03-20 | International Business Machines Corporation | Cache bypass |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
US5293592A (en) * | 1989-04-07 | 1994-03-08 | Intel Corporatino | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline |
JPH0314025A (ja) * | 1989-06-13 | 1991-01-22 | Nec Corp | 命令実行制御方式 |
JPH0740247B2 (ja) * | 1989-06-20 | 1995-05-01 | 松下電器産業株式会社 | キャッシュメモリ装置 |
JP2505887B2 (ja) * | 1989-07-14 | 1996-06-12 | 富士通株式会社 | 命令処理システム |
US5214765A (en) * | 1989-08-31 | 1993-05-25 | Sun Microsystems, Inc. | Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
AU7486591A (en) * | 1990-03-15 | 1991-10-10 | Sun Microsystems, Inc. | Apparatus and method for providing a stall cache |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
JP3144794B2 (ja) * | 1990-11-09 | 2001-03-12 | 株式会社日立製作所 | マルチプロセッサシステム |
EP0498654B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | Cache memory processing instruction data and data processor including the same |
US5479641A (en) * | 1993-03-24 | 1995-12-26 | Intel Corporation | Method and apparatus for overlapped timing of cache operations including reading and writing with parity checking |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
-
1995
- 1995-06-29 GB GB9513273A patent/GB2293670A/en not_active Withdrawn
- 1995-07-17 DE DE19526008A patent/DE19526008C2/de not_active Expired - Fee Related
- 1995-08-29 JP JP24537095A patent/JP3641031B2/ja not_active Expired - Fee Related
-
1997
- 1997-04-21 US US08/843,795 patent/US5933850A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE19526008A1 (de) | 1996-03-07 |
DE19526008C2 (de) | 1998-09-10 |
GB9513273D0 (en) | 1995-09-06 |
US5933850A (en) | 1999-08-03 |
JPH08320786A (ja) | 1996-12-03 |
GB2293670A (en) | 1996-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3641031B2 (ja) | 命令装置 | |
US5737750A (en) | Partitioned single array cache memory having first and second storage regions for storing non-branch and branch instructions | |
US7406569B2 (en) | Instruction cache way prediction for jump targets | |
US5559986A (en) | Interleaved cache for multiple accesses per clock cycle in a microprocessor | |
US6665790B1 (en) | Vector register file with arbitrary vector addressing | |
US5924117A (en) | Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto | |
US5423011A (en) | Apparatus for initializing branch prediction information | |
US5948095A (en) | Method and apparatus for prefetching data in a computer system | |
US6021471A (en) | Multiple level cache control system with address and data pipelines | |
KR100627986B1 (ko) | 동기식 파이프라인 버스트 메모리 및 그 동작 방법 | |
US6021461A (en) | Method for reducing power consumption in a set associative cache memory system | |
US6779102B2 (en) | Data processor capable of executing an instruction that makes a cache memory ineffective | |
US5649154A (en) | Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits | |
US6202139B1 (en) | Pipelined data cache with multiple ports and processor with load/store unit selecting only load or store operations for concurrent processing | |
US5717892A (en) | Selectively operable cache memory | |
US5434986A (en) | Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction | |
US5649178A (en) | Apparatus and method for storing and initializing branch prediction with selective information transfer | |
US5787454A (en) | Recorder buffer with interleaving mechanism for accessing a multi-parted circular memory array | |
US5359557A (en) | Dual-port array with storage redundancy having a cross-write operation | |
JPH0748187B2 (ja) | レジスタ間接モードを用いる汎用メモリ・アクセス方法およびコンピュータ・システム | |
US7134000B2 (en) | Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information | |
US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
EP1632845A2 (en) | Processor with a register file that supports multiple-issue execution | |
US5765221A (en) | Method and system of addressing which minimize memory utilized to store logical addresses by storing high order bits within a register | |
US5680569A (en) | Cache column timing control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050112 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050118 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050120 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |