JPH0588891A - Cache memory controller - Google Patents
Cache memory controllerInfo
- Publication number
- JPH0588891A JPH0588891A JP3252310A JP25231091A JPH0588891A JP H0588891 A JPH0588891 A JP H0588891A JP 3252310 A JP3252310 A JP 3252310A JP 25231091 A JP25231091 A JP 25231091A JP H0588891 A JPH0588891 A JP H0588891A
- Authority
- JP
- Japan
- Prior art keywords
- address
- branch
- instruction
- cache memory
- cache
- 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.)
- Pending
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明は、キャッシュ・メモリの
プリフェッチを制御するキャッシュメモリ制御装置に関
する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a cache memory controller for controlling prefetch of cache memory.
【0002】[0002]
【従来の技術】近年、プロセッサの高速化に対応して、
高速に動作するプロセッサと比較的アクセス速度が遅い
主記憶装置との動作速度のギャップを緩和するために、
より高速なキャッシュ・メモリをプロセッサと主記憶装
置の間に置くことが一般化している。しかし、一連のキ
ャッシュ・メモリの動作の内、主記憶装置の内容をキャ
ッシュ・メモリに取り込むリフィール処理、およびキャ
ッシュ・メモリの内容を主記憶装置に書き戻すライトバ
ック処理は、非常に時間を要し、オーバヘッドが大き
い。従って、キャッシュ・メモリのヒット率を向上さ
せ、なるべくリフィール処理やライトバック処理を生じ
させないようにすることが、プロセッサを効率よく動作
させる上で大切である。2. Description of the Related Art In recent years, in response to increasing processor speed,
To reduce the operating speed gap between the high-speed processor and the main memory, which has a relatively low access speed,
It is becoming commonplace to have faster cache memory between the processor and main memory. However, in the series of cache memory operations, the refill process of fetching the contents of the main memory device to the cache memory and the write-back process of writing the contents of the cache memory back to the main memory device take a very long time. , Overhead is large. Therefore, it is important to improve the cache memory hit rate and prevent refill processing and write back processing as much as possible in order to operate the processor efficiently.
【0003】命令キャッシュ・メモリやデータキャッシ
ュ・メモリのプリフェッチは、ヒット率を向上させる一
手法である。キャッシュ・メモリのプリフェッチとは、
次にフェッチすべきブロックを予測して、あらかじめフ
ェッチしておくことにより、キャッシュ・ミスを少なく
して、リフィール処理、ライトバック処理によるオーバ
ヘッドを小さくする方法である。Prefetching the instruction cache memory and the data cache memory is one technique for improving the hit rate. What is cache memory prefetch?
This is a method of predicting the block to be fetched next and fetching it in advance to reduce cache misses and reduce the overhead due to refill processing and writeback processing.
【0004】従来のプリフェッチのアルゴリズムは、デ
ータ、命令シーケンスの局所性を利用している。最も単
純なアルゴリズムは、現在リフィールされているブロッ
クの次のブロックを無条件にフェッチする方法である。
この方法では、無条件にプリフェッチを行うので、
(1)不必要なプリフェッチを行い易い、(2)不用意
に必要なブロックを追い出してしまう、(3)必要以上
に外部バスを占有してしまう、などの問題点があった。
特に命令シーケンスは、分岐によって流れが大きく変わ
ることが多く、単に次のブロックをフェッチする方法で
は、予測が不十分である。The conventional prefetch algorithm utilizes the locality of data and instruction sequences. The simplest algorithm is to unconditionally fetch the block next to the block currently being refilled.
With this method, prefetch is performed unconditionally, so
There are problems that (1) it is easy to perform unnecessary prefetch, (2) carelessly evicts a necessary block, and (3) occupies an external bus more than necessary.
In particular, the flow of an instruction sequence often changes greatly depending on a branch, and the method of simply fetching the next block is insufficient in prediction.
【0005】特に、命令キャッシュ・メモリに於いて
は、次のような方法も提案されている。すなわち、
(1)キャッシュ・ミスがあって、結果として、プロセ
ッサがある番地からのリフィールを実行するときには、
直ちに次のブロックのフェッチを行う、(2)分岐の結
果、キャッシュ・メモリ内の命令を行うことになったと
きには、いつでも、直ちにその次のブロックのフェッチ
を行う、という方法である。しかしながら、この方法は
分岐に関しては、あらかじめ分岐を予測してキャッシュ
・メモリにプリフェッチできないという欠点がある。In particular, the following method has been proposed for the instruction cache memory. That is,
(1) When there is a cache miss and, as a result, the processor executes a refill from a certain address,
This is a method of immediately fetching the next block, or (2) immediately fetching the next block whenever an instruction in the cache memory is to be executed as a result of branching. However, this method has a drawback that the branch cannot be predicted in advance and prefetched into the cache memory.
【0006】一方、微細加工技術の向上により、従来は
実装できなかった分岐予測回路も、MPUに実装される
ことが一般化してきている。分岐予測回路とは、分岐命
令の実行に先だって、過去の分岐履歴をもとに分岐命令
の番地により分岐先番地を予測する回路である。通常、
分岐命令は、実行ステージで分岐先番地を求め、プログ
ラム・カウンタを更新することによって行われるため、
命令パイプラインの乱れを引き起こす。分岐予測回路を
用いた場合には、実際の分岐先番地を求める前に予想し
た分岐先番地に分岐してしまうため、予測分岐先番地が
当たっていれば、命令パイプラインを乱すことなく実行
を継続することができる。On the other hand, with the improvement of the microfabrication technology, it has become general to mount a branch prediction circuit that could not be mounted in the past in the MPU. The branch prediction circuit is a circuit that predicts the branch destination address based on the address of the branch instruction based on the past branch history before executing the branch instruction. Normal,
Branch instructions are executed by obtaining the branch destination address in the execution stage and updating the program counter.
Causes disruption of the instruction pipeline. If the branch prediction circuit is used, it will branch to the predicted branch destination address before obtaining the actual branch destination address, so if the predicted branch destination address is correct, execution will not be disturbed in the instruction pipeline. You can continue.
【0007】しかし、分岐予測回路を用いて命令パイプ
ラインを乱すことなく分岐を完了しても、分岐先番地が
キャッシュ・ミスを起こしてしまった場合には、命令パ
イプラインは停止してしまい、分岐予測回路による効果
が半減してしまう。このため、以前より、命令キャッシ
ュ・メモリに於けるキャッシュ・ミスを少なくするため
に、分岐命令に対してあらかじめ正確な分岐予測を行
い、分岐先の命令をプリフェッチするキャッシュメモリ
制御装置が求められていた。However, even if the branch prediction circuit is used to complete the branch without disturbing the instruction pipeline, if the branch destination address causes a cache miss, the instruction pipeline stops, The effect of the branch prediction circuit is halved. Therefore, in order to reduce cache misses in the instruction cache memory, there has been a demand for a cache memory control device that pre-fetches a branch destination instruction by performing accurate branch prediction in advance for the branch instruction. It was
【0008】[0008]
【発明が解決しようとする課題】上述したように、従来
のキャッシュ・メモリに於けるプリフェッチ方法では、
分岐先を正確に予測してプリフェッチすることができな
いため、不必要なプリフェッチを行い易い、不用意に必
要なブロックを追い出してしまう、必要以上に外部バス
を占有してしまう、などの問題点があった。As described above, according to the prefetch method in the conventional cache memory,
Since it is not possible to accurately predict the branch destination and perform prefetching, problems such as easy unnecessary prefetching, careless removal of necessary blocks, and unnecessarily occupying an external bus are encountered. there were.
【0009】本発明は、以上のような従来技術の欠点を
鑑みてなされたものであり、命令キャッシュ・メモリへ
のプリフェッチの際に、分岐予測回路を参照して分岐先
を予測することにより、分岐が生じる場合でも、より正
確にプリフェッチを行い、不必要なプリフェッチを行わ
ないキャッシュメモリ制御装置を提供することを目的と
する。The present invention has been made in view of the above-mentioned drawbacks of the prior art, and at the time of prefetching to the instruction cache memory, by referring to the branch prediction circuit to predict the branch destination, An object of the present invention is to provide a cache memory control device that performs prefetching more accurately and does not perform unnecessary prefetching even when a branch occurs.
【0010】[0010]
【課題を解決するための手段】上記目的を達成するた
め、本発明は、命令やデータを格納するキャッシュメモ
リと、分岐命令の格納されている番地と過去の分岐履歴
を保持し、分岐命令の格納されている番地によって次の
分岐先番地を予測する分岐予測回路と、次に実行する命
令の番地がキャッシュミスを起こしたことによってリフ
ィール処理を行う際に、リフィール処理と並行して前記
分岐予測回路をキャッシュミスを起こした番地をもとに
参照し、もし前記分岐予測回路にキャッシュミスを起こ
した番地が登録されており、かつこの分岐予測回路によ
って予測された分岐先番地がキャッシュメモリの中に存
在しない場合には、リフィール処理終了後、バスを解放
することなく、直ちにこの分岐予測回路によって予測さ
れた分岐予測番地を含むブロックのプリフェッチを行
い、もし前記分岐予測回路にキャッシュミスを起こした
番地が登録されており、かつ前記分岐予測回路によって
予測された分岐先番地がキャッシュメモリの中に存在す
る場合には、リフィール処理終了後、直ちにバスを解放
し、もし前記分岐予測回路にキャッシュミスを起こした
番地が登録されておらず、かつキャッシュミスを起こし
た番地を含むブロックの次のブロックがキャッシュメモ
リの中に存在しない場合には、リフィール処理終了後、
バスを解放することなく、直ちに次のブロックのプリフ
ェッチを行い、もし前記分岐予測回路にキャッシュミス
を起こした番地が登録されておらず、かつキャッシュミ
スを起こした番地を含むブロックの次のブロックが前記
キャッシュメモリの中に存在する場合には、リフィール
処理終了後、直ちにバスを解放するキャッシュ制御部と
から構成されている。To achieve the above object, the present invention holds a cache memory for storing instructions and data, an address where a branch instruction is stored and a past branch history, and stores the branch instruction. A branch prediction circuit that predicts the next branch destination address according to the stored address, and the branch prediction in parallel with the refill processing when the refill processing is performed due to a cache miss in the address of the instruction to be executed next. The circuit is referred to based on the address in which the cache miss has occurred, and if the address in which the cache miss has occurred is registered in the branch prediction circuit, and the branch destination address predicted by this branch prediction circuit is in the cache memory. If it does not exist, the branch prediction address predicted by this branch prediction circuit is immediately released without releasing the bus after the refill processing is completed. Prefetch of a block, and if the address causing the cache miss is registered in the branch prediction circuit and the branch destination address predicted by the branch prediction circuit exists in the cache memory, the refill Immediately after the processing is completed, the bus is released immediately. If the address causing the cache miss is not registered in the branch prediction circuit, and the block next to the block including the address causing the cache miss exists in the cache memory. If you don't, after finishing the refill process,
The next block is immediately prefetched without releasing the bus, and if the address causing the cache miss is not registered in the branch prediction circuit, and the block next to the block including the address causing the cache miss is When present in the cache memory, the cache control unit releases the bus immediately after the refill processing is completed.
【0011】[0011]
【作用】上記構成により、本発明は、まず、キャッシュ
・メモリがキャッシュ・ミスすると、直ちに主記憶装置
よりリフィールを開始する。このとき同時に命令キュー
にも転送される。リフィールが終了すると命令キューの
内容によって直ちに演算の実行を開始するが、外部バス
の解放はしない。一方、リフィール開始とともに、キャ
ッシュ・ミスした番地は分岐予測回路に送られ、分岐予
測を行う。もし、ヒットしたならば、次も予測された番
地に分岐するものと予測する。With the above structure, according to the present invention, first, when a cache miss occurs in the cache memory, the refill is started from the main memory immediately. At this time, it is also transferred to the instruction queue. When the refill finishes, execution of the operation is immediately started according to the contents of the instruction queue, but the external bus is not released. On the other hand, when the refill is started, the address where the cache miss occurs is sent to the branch prediction circuit to perform branch prediction. If there is a hit, it is predicted that the next branch will also occur at the predicted address.
【0012】リフィール処理終了後、すでにキャッシュ
・メモリに予測した番地を含むブロックがフェッチされ
ているか否かをチェックし、まだフェッチされていなけ
れば、外部バスを解放せず、直ちに分岐先番地を含むブ
ロックを主記憶装置からプリフェッチする。プリフェッ
チ中は、命令キューの中の命令が実行されているので、
プリフェッチ中も実行が停止することは少ない。分岐予
測回路に於いて、複数の分岐先番地がヒットする可能性
があるが、この場合は最も小さい番地に格納されている
分岐命令に対応する分岐先番地が選択される。もし、す
でにキャッシュ・メモリの中に予測した分岐先番地を含
むブロックがフェッチされているならば、直ちに外部バ
スを解放し、プリフェッチは行わない。After the refill processing is completed, it is checked whether or not the block including the predicted address has already been fetched in the cache memory. If it has not been fetched, the external bus is not released and the branch destination address is immediately included. Prefetch blocks from main memory. During prefetch, the instructions in the instruction queue are being executed, so
Execution rarely stops during prefetch. In the branch prediction circuit, a plurality of branch destination addresses may be hit, but in this case, the branch destination address corresponding to the branch instruction stored in the smallest address is selected. If the block including the predicted branch destination address is already fetched in the cache memory, the external bus is released immediately and the prefetch is not performed.
【0013】分岐予測回路でヒットしなかった場合に
は、現在リフィール中のブロックの中には、分岐命令が
含まれておらず、したがって分岐は起きないものと考え
られる。よって、もしキャッシュ・メモリに現在リフィ
ール中のブロックの次のブロックがフェッチされていな
ければ、外部バスを解放せずに、直ちに次のブロックの
プリフェッチを行う。しかし、すでにキャッシュ・メモ
リに現在リフィール中の次のブロックがフェッチされて
いたならば、直ちに外部バスを解放し、プリフェッチは
行わない。If the branch prediction circuit does not hit, it is considered that the block currently being refilled does not include a branch instruction and therefore no branch occurs. Therefore, if the block next to the block currently being refilled has not been fetched into the cache memory, the next block is immediately prefetched without releasing the external bus. However, if the next block currently being refilled has already been fetched into the cache memory, the external bus is released immediately and prefetch is not performed.
【0014】[0014]
【実施例】以下、本発明の実施例を図面を参照して説明
する。今回の実施例では、本プロセッサが図5で示すよ
うに、(1)命令フェッチ(F),(2)デコード/オ
ペランドフェッチ(D),(3)実行(E),(4)メ
モリ・アクセス(M),(5)レジスタ書き込み
(W),の5段の命令パイプラインで命令の実行を行う
ものとする。また、本プロセッサは、基本的に1ステー
ジを1クロックで実行する。ただし、浮動小数点演算
は、実行ステージに3クロックを要する。さらに、本プ
ロセッサは、命令パイプライン中にオペランドのバイパ
スが用意されており、次の演算で現在演算中の演算結果
をオペランドとして用いる場合には、現在の演算の実行
ステージ終了後、直ちに次の演算の実行を行うことがで
きる。アドレス・バスのビット幅は32bit、命令の
語長は32bit固定である。Embodiments of the present invention will be described below with reference to the drawings. In the present embodiment, as shown in FIG. 5, the processor performs (1) instruction fetch (F), (2) decode / operand fetch (D), (3) execution (E), (4) memory access. It is assumed that the instructions are executed in the five-stage instruction pipeline of (M) and (5) register write (W). Further, this processor basically executes one stage in one clock. However, floating-point arithmetic requires 3 clocks in the execution stage. Further, this processor is provided with an operand bypass in the instruction pipeline, and when the operation result of the current operation is used as an operand in the next operation, immediately after the execution stage of the current operation is finished, Operations can be performed. The bit width of the address bus is fixed at 32 bits and the word length of the instruction is fixed at 32 bits.
【0015】図1は、本発明のキャッシュメモリ制御装
置に係わる一実施例の構成を示すブロック図である。ハ
ーバード・アーキテクチャをとるこのキャッシュメモリ
制御装置は、命令キャッシュ・メモリ2、キャッシュ制
御部6、分岐予測回路3、命令キュー4、主記憶装置1
4、及び外部バス113から構成されている。FIG. 1 is a block diagram showing the configuration of an embodiment relating to the cache memory control device of the present invention. This cache memory control device adopting the Harvard architecture includes an instruction cache memory 2, a cache control unit 6, a branch prediction circuit 3, an instruction queue 4, and a main storage device 1.
4 and the external bus 113.
【0016】同図に於いて、プログラム・カウンタ1
は、次にフェッチする命令が格納されている主記憶装置
14の番地を示している。In the figure, the program counter 1
Indicates the address of the main storage device 14 in which the instruction to be fetched next is stored.
【0017】命令キャッシュ・メモリ2は、直接法で構
成されており、ハーバード・アーキテクチャに基づく命
令キャッシュ・メモリで、エントリ数128、1ブロッ
ク128bit、容量16Kbitである。プログラム
・カウンタ1より与えられた主記憶番地111の下位4
bitはブロック内番地103、上位28bitはブロ
ック番地を表す。また、ブロック番地の下位7bitは
インデクス101、上位21bitはタグ100であ
る。タグ・メモリ7には、21bitのタグが記憶され
ている。The instruction cache memory 2 is constructed by the direct method, is an instruction cache memory based on the Harvard architecture, and has 128 entries, 1 block 128 bits, and a capacity of 16 Kbits. Lower 4 of main memory address 111 given by program counter 1
Bit represents the address 103 in the block, and upper 28 bits represent the block address. The lower 7 bits of the block address are the index 101 and the upper 21 bits are the tag 100. A 21-bit tag is stored in the tag memory 7.
【0018】この命令キャッシュ・メモリ2は、以下の
ように動作する。まず、インデクス101が、タグ・メ
モリ7に与えられ、インデクス101で示された番地の
内容をタグ105として読み出す。これと平行して、主
記憶番地111の下位11bitを番地と用いて、デー
タ・メモリ9がアクセスされる。読み出されたタグ10
5とタグ100は、ヒット/ミス検出器8で比較され
る。The instruction cache memory 2 operates as follows. First, the index 101 is given to the tag memory 7, and the content of the address indicated by the index 101 is read as the tag 105. In parallel with this, the data memory 9 is accessed using the lower 11 bits of the main memory address 111 as an address. Tag 10 read
5 and tag 100 are compared in hit / miss detector 8.
【0019】この比較によってタグ105とタグ100
が一致するならば、主記憶番地111を含むブロック
は、データ・メモリ9の中に存在し、アクセスされたブ
ロックから主記憶番地111の内容のコピーがラッチ1
0に読み出される。逆に、読み出されたタグ105とタ
グ100が不一致ならば、主記憶番地111を含むブロ
ックはデータ・メモリ9の中に存在しないので、主記憶
装置14より主記憶番地111を含むブロックを読み出
し、インデクス101で決まる命令キャッシュ・メモリ
2の中のブロックを読み出されたブロックに置き換え
る。同時にタグ・メモリ7のタグの内容もタグ100に
更新する。By this comparison, the tag 105 and the tag 100
, The block containing main memory address 111 exists in data memory 9 and a copy of the contents of main memory address 111 from the accessed block is latched by latch 1
It is read to 0. On the contrary, if the read tag 105 and tag 100 do not match, the block including the main memory address 111 does not exist in the data memory 9, so the block including the main memory address 111 is read from the main memory device 14. , The block in the instruction cache memory 2 determined by the index 101 is replaced with the read block. At the same time, the content of the tag in the tag memory 7 is updated to the tag 100.
【0020】分岐予測回路3は、完全連想方式による分
岐予測回路であり、分岐命令の番地を記憶するアドレス
・メモリ11と分岐先番地を記憶するターゲット・メモ
リ12より構成される。アドレス・メモリ11のビット
幅は30bit、エントリ数は128である。また、ア
ドレス・メモリ11は4つのバンクに分割されており、
主記憶番地111の下位2bitの値により示された特
定のバンクに分岐命令が格納されている主記憶装置14
の番地が格納される。ただし、格納されるのは、下位2
bitを除いた上位30bitである。ターゲット・メ
モリ12のビット幅32bit、エントリ数は128で
ある。ターゲット・メモリ12は、アドレス・メモリ1
1に1対1対応しており、対応するアドレス・メモリ1
1に記憶された番地の分岐命令が分岐した過去1回の分
岐先番地を記憶している。The branch prediction circuit 3 is a fully associative branch prediction circuit, and comprises an address memory 11 for storing the address of a branch instruction and a target memory 12 for storing the branch destination address. The bit width of the address memory 11 is 30 bits and the number of entries is 128. The address memory 11 is divided into four banks,
The main memory device 14 in which the branch instruction is stored in the specific bank indicated by the value of the lower 2 bits of the main memory address 111.
The address of is stored. However, the lower two are stored.
It is the top 30 bits excluding bits. The target memory 12 has a bit width of 32 bits and the number of entries is 128. The target memory 12 is the address memory 1
There is a one-to-one correspondence with one, and the corresponding address memory 1
The branch destination address of the past one time when the branch instruction of the address stored in 1 branched is stored.
【0021】このような分岐予測回路3は通常、以下の
ように動作する。まず、分岐先予測は、次のように行わ
れる。命令フェッチ・ステージで主記憶番地111が分
岐予測回路3に与えられると、下位2bitがデコード
され、アドレス・メモリ11の特定のバンクがアクセス
される。上位30bitはアドレス・メモリ11に与え
られ、もし指定されたバンク内で一致する番地があれ
ば、それと対応するターゲット・メモリ12に格納され
た番地を予測分岐先番地109として出力する。プロセ
ッサは、この番地に分岐すると仮定し、プログラム・カ
ウンタ1の値を予測分岐先番地109に変更する。Such a branch prediction circuit 3 normally operates as follows. First, branch destination prediction is performed as follows. When the main memory address 111 is given to the branch prediction circuit 3 at the instruction fetch stage, the lower 2 bits are decoded and a specific bank of the address memory 11 is accessed. The upper 30 bits are given to the address memory 11, and if there is a matching address in the designated bank, the address stored in the target memory 12 corresponding thereto is output as the predicted branch destination address 109. The processor changes the value of the program counter 1 to the predicted branch destination address 109 on the assumption that the address will branch to this address.
【0022】また、履歴の登録は次のように行われる。
分岐命令が実行されると分岐命令の番地の下位2bit
によって示されたアドレス・メモリ11の特定のバンク
に実行された分岐命令の番地の上位30bitが記憶さ
れる。また、ターゲット・メモリ12には、プロセッサ
内部の実行部で算出された分岐先番地を記憶する。命令
キュー4は、現在実行中の命令を含むブロックが格納さ
れており、プログラム・カウンタ1の値により、実行部
に命令を発行する。The history registration is performed as follows.
When the branch instruction is executed, the lower 2 bits of the address of the branch instruction
The upper 30 bits of the address of the executed branch instruction are stored in the specific bank of the address memory 11 indicated by. Further, the target memory 12 stores the branch destination address calculated by the execution unit inside the processor. The instruction queue 4 stores a block including an instruction currently being executed, and issues an instruction to the execution unit according to the value of the program counter 1.
【0023】インクリメンタ5は、現在リフィール処理
中のブロックの次のブロックの先頭番地を計算するビッ
ト幅30bitのインクリメンタである。キャッシュ・
ミスを起こした番地mの上位30bitはインクリメン
タに送られ、リフィール処理と並行してインクリメント
され、次のブロックの先頭番地m+4が計算される。番
地m+4は、プリフェッチの先頭番地として、命令キャ
ッシュ・メモリ2に転送される。キャッシュ制御部6
は、命令キャッシュ・メモリ2のリフィール処理、プリ
フェッチ処理などの制御を行う論理回路である。The incrementer 5 is an incrementer having a bit width of 30 bits for calculating the start address of the block next to the block currently being refilled. cache·
The upper 30 bits of the address m in which a mistake has occurred are sent to the incrementer and incremented in parallel with the refill processing, and the head address m + 4 of the next block is calculated. The address m + 4 is transferred to the instruction cache memory 2 as the leading address of prefetch. Cache control unit 6
Is a logic circuit for controlling refill processing, prefetch processing, etc. of the instruction cache memory 2.
【0024】次に、本発明の動作説明を行う。本発明
は、命令キャッシュ・メモリ2が、キャッシュ・ミスし
た場合にのみ動作する。図2(a)〜図3(c)は、本
発明のキャッシュメモリ制御装置を適用したプロセッサ
が下記に示す命令シーケンスを実行した場合の動作を示
したタイム・チャートである。図4(a)〜図4(c)
は、本発明を適用していないプロセッサが同様な命令シ
ーケンスを実行した場合の動作を示したタイム・チャー
トである。Next, the operation of the present invention will be described. The present invention operates only when the instruction cache memory 2 makes a cache miss. 2A to 3C are time charts showing the operation when the processor to which the cache memory control device of the present invention is applied executes the following instruction sequence. 4 (a) to 4 (c)
FIG. 6 is a time chart showing an operation when a processor to which the present invention is not applied executes a similar instruction sequence.
【0025】下記の命令で、ADD,SUB,MUL
は、整数の加減算および乗算命令である。JMPCZ
は、条件分岐命令で1つ前の演算の結果が、“0”なら
ば分岐する。JMPCZは、スカッシュ分岐であり、分
岐が生じた場合にはm+4の命令は実行されない。R
0,R1,R2,R3,R4はレジスタを表す。また、
m−1,…,m+4,n,n+1は、主記憶装置14の
番地を表す。m,m+4,nは、ブロックの境界に置か
れている。[0025] ADD, SUB, MUL
Is an integer addition / subtraction and multiplication instruction. JMPCZ
Branches if the result of the previous operation by the conditional branch instruction is "0". JMPCZ is a squash branch, and if the branch occurs, the m + 4 instruction is not executed. R
0, R1, R2, R3 and R4 represent registers. Also,
m-1, ..., M + 4, n, n + 1 represent addresses of the main storage device 14. m, m + 4, and n are placed at the boundaries of blocks.
【0026】 現在、プロセッサは、逐次的に上記の命令シーケンスを
実行している。プロセッサが、m番地から命令のフェッ
チを行おうとしたところでキャッシュ・ミスを起こした
とする。プロセッサは、直ちに外部バス113を通し
て、命令キャッシュ・メモリ2のリフィールを行う。リ
フィールは、(1)外部バス113のバス権の獲得、
(2)主記憶装置14の連続アクセスによって行われ
る。(1)の処理は、外部バス113の状態によって要
する時間が異なるが、図2〜図4では1クロックを要し
ている。[0026] Currently, the processor is sequentially executing the above instruction sequence. It is assumed that the processor makes a cache miss when it tries to fetch an instruction from the address m. The processor immediately refills the instruction cache memory 2 through the external bus 113. Refill is (1) acquisition of bus right of external bus 113,
(2) It is performed by continuous access to the main storage device 14. Although the time required for the process (1) depends on the state of the external bus 113, one clock is required in FIGS. 2 to 4.
【0027】外部バス113は、32bitであり、主
記憶装置14から2クロックで32bitのデータを転
送できるとすると、1ブロックの転送に8クロックを要
する。従って、リフィール処理に9クロックを要してい
る。命令キャッシュ・メモリ2は、データ・メモリ8の
中の任意のブロックを無効にし、そのブロックに、m,
m+1,m+2,m+3番地の命令がリフィールされ
る。また、リフィールと同時に命令キュー4にも、m,
m+1,m+2,m+3番地の命令が転送される。リフ
ィールが終了すると、プロセッサは直ちに命令キュー4
の内容によって実行を開始する。しかし、プロセッサ
は、リフィールが終了しても外部バス113を解放しな
い。The external bus 113 is 32 bits, and if it is possible to transfer 32 bits of data from the main storage device 14 in 2 clocks, it takes 8 clocks to transfer 1 block. Therefore, 9 clocks are required for the refill processing. The instruction cache memory 2 invalidates an arbitrary block in the data memory 8 and sets m,
The instructions at addresses m + 1, m + 2 and m + 3 are refilled. Also, at the same time as the refill, m,
Instructions at addresses m + 1, m + 2, m + 3 are transferred. When the refill ends, the processor immediately
Execution starts depending on the contents of. However, the processor does not release the external bus 113 even after the refill ends.
【0028】一方、プロセッサは、リフィール処理を開
始するとともに、キャッシュ・ミスを起こした番地mを
分岐予測回路3に送る。分岐予測回路3は、番地mの上
位30bitをもとに分岐予測を行う(BTBアクセ
ス)。アドレス・メモリ11の中に一致する番地がある
と、対応するターゲット・メモリ12より予測分岐先番
地109が出力される。番地mの上位30bitで予測
するため、各バンク毎に1エントリが一致し、最大4つ
のエントリが一致する可能性がある。このように複数個
のエントリが一致を起こした場合には、最も小さいバン
ク番号のターゲット・メモリ12の出力が優先される。On the other hand, the processor starts the refill processing and sends the address m where the cache miss has occurred to the branch prediction circuit 3. The branch prediction circuit 3 performs branch prediction based on the upper 30 bits of the address m (BTB access). If there is a matching address in the address memory 11, the predicted branch destination address 109 is output from the corresponding target memory 12. Since the prediction is performed in the upper 30 bits of the address m, one entry may match for each bank, and up to four entries may match. When a plurality of entries match as described above, the output of the target memory 12 having the smallest bank number is given priority.
【0029】図2(a)、図2(b)は、アドレス・メ
モリ11の中に一致する番地があった場合の動作を示し
ている。予測分岐番地109は、命令キャッシュ・メモ
リ2に送られ、リフィール終了後、すでに命令キャッシ
ュ・メモリ2の中に転送されているか否かがテストされ
る。2A and 2B show the operation when there is a matching address in the address memory 11. The predicted branch address 109 is sent to the instruction cache memory 2, and after the refill is completed, it is tested whether or not it has already been transferred to the instruction cache memory 2.
【0030】図2(a)は、予測分岐先番地109がキ
ャッシュ・ミスを生じた場合の動作を示した図である。
命令キャッシュ・メモリ2は、直ちに予測分岐番地10
9を含むブロックのプリフェッチを行う。外部バス11
3のバス権は、獲得したままなので、プリフェッチには
8クロックしか要さない。図4(a)は、本発明を適用
していないプロセッサの場合の動作を示している。図2
(a)および図4(a)より明らかなように、本発明を
適用した場合では、適用しない場合に比較して4クロッ
ク速く動作させることが可能である。実際には、外部バ
ス113を解放してしまうと、再びバス権を獲得するた
めにかなりの時間を要するので、本発明の効果はさらに
大きくなる。FIG. 2A is a diagram showing the operation when the predicted branch destination address 109 causes a cache miss.
The instruction cache memory 2 immediately returns the predicted branch address 10
Prefetch a block including 9. External bus 11
Since the bus right of 3 is still acquired, prefetching requires only 8 clocks. FIG. 4A shows the operation in the case of the processor to which the present invention is not applied. Figure 2
As is clear from (a) and FIG. 4 (a), when the present invention is applied, it is possible to operate 4 clocks faster than when the present invention is not applied. Actually, if the external bus 113 is released, it takes a considerable time to acquire the bus right again, so that the effect of the present invention is further enhanced.
【0031】図2(b)は、予測分岐先番地109が、
命令キャッシュ・メモリ2でヒットした場合である。す
でに命令キャッシュ・メモリ2の中にフェッチされてい
るので、プリフェッチする必要はない。キャッシュ制御
部6は、外部バス113を直ちに解放する。In FIG. 2B, the predicted branch destination address 109 is
This is a case where the instruction cache memory 2 is hit. There is no need to prefetch because it has already been fetched into the instruction cache memory 2. The cache control unit 6 immediately releases the external bus 113.
【0032】図2(c)、図3(a)は、アドレス・メ
モリ11の中に番地mの上位30bitと一致する番地
がなかった場合である。この場合は、現在リフィール中
のブロックの中には分岐命令が存在せず、したがって、
m+3番地の命令の終了後、m+4番地の命令が実行さ
れるものと考えられる。この場合も、プロセッサは、リ
フィール終了後、命令キュー4の内容によって直ちに実
行を開始するが、外部バス113は解放しない。一方、
インクリメンタ5は、リフィール処理に並行してキャッ
シュ・ミス番地mより番地m+4を計算する。番地m+
4は、命令キャッシュ・メモリ2に送られ、すでに命令
キャッシュ・メモリ2の中に転送されているか否かがテ
ストされる。FIGS. 2 (c) and 3 (a) show the case where there is no address in the address memory 11 that matches the upper 30 bits of the address m. In this case, there are no branch instructions in the block currently being refilled, and therefore
It is considered that the instruction at the address m + 4 is executed after the instruction at the address m + 3 is completed. In this case as well, the processor immediately starts execution according to the contents of the instruction queue 4 after the refill ends, but does not release the external bus 113. on the other hand,
The incrementer 5 calculates the address m + 4 from the cache miss address m in parallel with the refill processing. Address m +
4 is sent to the instruction cache memory 2 to test whether it has already been transferred into the instruction cache memory 2.
【0033】図2(c)は、番地m+4が命令キャッシ
ュ・メモリ2でキャッシュ・ミスを起こした場合の動作
を示している。命令キャッシュ・メモリ2は、番地m+
4よりプリフェッチを行う。外部バス113は獲得した
ままなので、プリフェッチには8クロックしか要さな
い。FIG. 2C shows the operation when the address m + 4 causes a cache miss in the instruction cache memory 2. The instruction cache memory 2 has an address m +
Perform prefetch from 4. Since the external bus 113 remains acquired, prefetching requires only 8 clocks.
【0034】図3(a)は、番地m+4が命令キャッシ
ュ・メモリ2でヒットした場合の動作を示している。こ
の場合は、プリフェッチする必要がないので、外部バス
113を直ちに解放する。FIG. 3A shows the operation when the address m + 4 is hit in the instruction cache memory 2. In this case, there is no need for prefetching, so the external bus 113 is released immediately.
【0035】さらに、図3(b)は、図2(a)と同様
な場合であるが、以下のような命令シーケンスが実行さ
れた場合の動作を示している。下記の命令シーケンスに
於いて、FADD,FSUB,FMULは、浮動小数点
数の加減算および乗算命令であり、実行ステージに3ク
ロックを必要とする。下記の命令シーケンスでは、レジ
スタが書き込み→読み込みのコンフリクトを生じてお
り、m+1,m+2,m+3番地の命令は、前の命令の
実行ステージが終了するまで演算を開始することができ
ない。Further, FIG. 3B shows the same operation as in FIG. 2A, but shows the operation when the following instruction sequence is executed. In the instruction sequence below, FADD, FSUB, and FMUL are floating-point number addition / subtraction and multiplication instructions and require 3 clocks in the execution stage. In the following instruction sequence, the register has a write-to-read conflict, and the instruction at addresses m + 1, m + 2, and m + 3 cannot start the operation until the execution stage of the previous instruction ends.
【0036】 この場合、図3(b)より明らかなように分岐命令が実
行される時刻には、すでに分岐先の命令は、命令キャッ
シュ・メモリ2にフェッチされているので、分岐予測が
間違っていなければ、命令パイプラインを乱すことなく
実行が継続される。[0036] In this case, as is clear from FIG. 3B, at the time when the branch instruction is executed, the branch destination instruction has already been fetched into the instruction cache memory 2, so if the branch prediction is correct, Execution continues without disturbing the instruction pipeline.
【0037】図4(c)は、本発明を適用していないプ
ロセッサの場合を示している。この場合では、分岐先命
令のフェッチを行うところで再びキャッシュ・ミスが生
じる。図3(b)、図4(c)より明らかなように、本
発明を適用した場合、10クロック速く動作することが
可能である。実際には、外部バス113を解放してしま
うと、再びバス権を獲得するためにかなりの時間を要す
るので、本発明の効果はさらに大きくなる。FIG. 4C shows the case of a processor to which the present invention is not applied. In this case, a cache miss occurs again where the branch destination instruction is fetched. As is clear from FIGS. 3B and 4C, when the present invention is applied, it is possible to operate 10 clocks faster. Actually, if the external bus 113 is released, it takes a considerable time to acquire the bus right again, so that the effect of the present invention is further enhanced.
【0038】図3(c)は、分岐予測が失敗した場合の
動作を示している。分岐予測の失敗は、実行ステージの
クロックで明らかになる。この場合、キャッシュ制御部
6は、直ちにプリフェッチを中断する。プリフェッチを
行っていた命令キャッシュ・メモリ2のブロックは、無
効フラグをセットすることにより、ブロックの内容が無
効になる。FIG. 3C shows the operation when the branch prediction fails. Branch prediction failures are revealed at the clock of the execute stage. In this case, the cache control unit 6 immediately suspends prefetch. The block of the instruction cache memory 2 that has been prefetched becomes invalid by setting the invalid flag.
【0039】本実施例では、簡単のため、命令キャッシ
ュ・メモリ2の構成を直接方式、分岐予測回路3は完全
連想方式であるとした。しかし、命令キャッシュ・メモ
リ2および分岐予測回路3を如何なる方式で構成して
も、本発明の効果には何等影響を与えることはない。ま
た、ハーバード・アーキテクチャに限らず、キャッシュ
・メモリに命令およびデータが混在するようなアーキテ
クチャをとった場合には、命令フェッチの場合に限っ
て、本実施例で示した動作を行えば、まったく同様な効
果が得られるものである。In this embodiment, for the sake of simplicity, the instruction cache memory 2 has a direct system and the branch prediction circuit 3 has a completely associative system. However, no matter how the instruction cache memory 2 and the branch prediction circuit 3 are configured, the effect of the present invention is not affected. Further, not only the Harvard architecture but also the architecture in which the instruction and the data are mixed in the cache memory, if the operation shown in this embodiment is performed only in the case of the instruction fetch, it is exactly the same. It is possible to obtain various effects.
【0040】[0040]
【発明の効果】このように、本発明のキャッシュ・メモ
リ制御装置によれば、分岐予測回路を参照して分岐を予
測するため、分岐が生じる場合でも正確にキャッシュ・
メモリへのプリフェッチを行うことができ、キャッシュ
・メモリのヒット率の向上、命令パイプラインの乱れ削
減、および不必要なリフィールの削減が可能となる。こ
の結果、プロセッサの処理速度を向上させることができ
る。As described above, according to the cache memory control device of the present invention, the branch is predicted by referring to the branch prediction circuit.
It is possible to perform prefetch to the memory, and it is possible to improve the hit rate of the cache memory, reduce the disorder of the instruction pipeline, and reduce unnecessary refills. As a result, the processing speed of the processor can be improved.
【図1】本発明のキャッシュメモリ制御装置に係わる一
実施例の構成を示すブロック図である。FIG. 1 is a block diagram showing a configuration of an embodiment relating to a cache memory control device of the present invention.
【図2】本発明のキャッシュメモリ制御装置の動作を示
すタイム・チャートである。FIG. 2 is a time chart showing the operation of the cache memory control device of the present invention.
【図3】本発明のキャッシュメモリ制御装置の動作を示
すタイム・チャートである。FIG. 3 is a time chart showing the operation of the cache memory control device of the present invention.
【図4】従来のキャッシュメモリ制御装置の動作を示す
タイム・チャートである。FIG. 4 is a time chart showing the operation of a conventional cache memory control device.
【図5】本発明のキャッシュメモリ制御装置を用いたプ
ロセッサのパイプライン動作を説明するための動作図で
ある。FIG. 5 is an operation diagram for explaining a pipeline operation of a processor using the cache memory control device of the present invention.
1 プログラム・カウンタ 2 命令キャッシュ・メモリ 3 分岐予測回路 4 命令キュー 5 インクリメンタ 6 キャッシュ制御部 7 タグ・メモリ 8 ヒット/ミス検出器 9 データ・メモリ 10 ラッチ 11 アドレス・メモリ 12 ターゲット・メモリ 13 デコーダ 14 主記憶装置 100 タグ 101 インデクス 102 ブロック内番地 103 ブロック内番地(下位2bit) 104 主記憶番地(上位30bit) 105 タグ 106 記憶データ 107 フェッチ・データ 108 命令 109 予測分岐番地 110 バンク選択信号 111 主記憶番地 112 次フェッチブロック先頭番地 1 program counter 2 instruction cache memory 3 branch prediction circuit 4 instruction queue 5 incrementer 6 cache control unit 7 tag memory 8 hit / miss detector 9 data memory 10 latch 11 address memory 12 target memory 13 decoder 14 Main storage device 100 Tag 101 Index 102 In-block address 103 In-block address (lower 2 bits) 104 Main storage address (upper 30 bits) 105 Tag 106 Storage data 107 Fetch data 108 Instruction 109 Predictive branch address 110 Bank selection signal 111 Main storage address 112 First address of next fetch block
─────────────────────────────────────────────────────
─────────────────────────────────────────────────── ───
【手続補正書】[Procedure amendment]
【提出日】平成3年10月4日[Submission date] October 4, 1991
【手続補正1】[Procedure Amendment 1]
【補正対象書類名】図面[Document name to be corrected] Drawing
【補正対象項目名】図1[Name of item to be corrected] Figure 1
【補正方法】変更[Correction method] Change
【補正内容】[Correction content]
【図1】 [Figure 1]
Claims (1)
リと、 分岐命令の格納されている番地と過去の分岐履歴を保持
し、分岐命令の格納されている番地によって次の分岐先
番地を予測する分岐予測回路と、 次に実行する命令の番地がキャッシュミスを起こしたこ
とによってリフィール処理を行う際に、リフィール処理
と並行して前記分岐予測回路をキャッシュミスを起こし
た番地をもとに参照し、 前記分岐予測回路にキャッシュミスを起こした番地が登
録されており、かつこの分岐予測回路によって予測され
た分岐先番地がキャッシュメモリの中に存在しない場合
には、リフィール処理終了後、バスを解放することな
く、直ちにこの分岐予測回路によって予測された分岐予
測番地を含むブロックのプリフェッチを行うキャッシュ
制御部とからなることを特徴とするキャッシュメモリ制
御装置。1. A branch for holding a cache memory for storing instructions and data, an address for storing a branch instruction and a past branch history, and predicting a next branch destination address according to the address for storing the branch instruction. When performing a refill process due to the prediction circuit and the address of the instruction to be executed next caused a cache miss, the branch prediction circuit is referenced in parallel with the refill process based on the address at which the cache miss occurred. If the address causing the cache miss is registered in the branch prediction circuit and the branch destination address predicted by the branch prediction circuit does not exist in the cache memory, the bus is released after the refill processing is completed. A cache control unit that immediately prefetches a block including the branch prediction address predicted by this branch prediction circuit without A cache memory control device comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3252310A JPH0588891A (en) | 1991-09-30 | 1991-09-30 | Cache memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3252310A JPH0588891A (en) | 1991-09-30 | 1991-09-30 | Cache memory controller |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0588891A true JPH0588891A (en) | 1993-04-09 |
Family
ID=17235476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3252310A Pending JPH0588891A (en) | 1991-09-30 | 1991-09-30 | Cache memory controller |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0588891A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729707A (en) * | 1994-10-06 | 1998-03-17 | Oki Electric Industry Co., Ltd. | Instruction prefetch circuit and cache device with branch detection |
US6128684A (en) * | 1997-06-30 | 2000-10-03 | Nec Corporation | Bus bridge |
JP2007207246A (en) * | 2006-02-03 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | Self prefetching l2 cache mechanism for instruction line |
JP2015122094A (en) * | 2006-12-08 | 2015-07-02 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | Low-complexity instruction prefetch system |
US9575761B2 (en) | 2013-03-28 | 2017-02-21 | Renesas Electronics Corporation | System and method for updating an instruction cache following a branch instruction in a semiconductor device |
-
1991
- 1991-09-30 JP JP3252310A patent/JPH0588891A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729707A (en) * | 1994-10-06 | 1998-03-17 | Oki Electric Industry Co., Ltd. | Instruction prefetch circuit and cache device with branch detection |
US6128684A (en) * | 1997-06-30 | 2000-10-03 | Nec Corporation | Bus bridge |
JP2007207246A (en) * | 2006-02-03 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | Self prefetching l2 cache mechanism for instruction line |
JP2015122094A (en) * | 2006-12-08 | 2015-07-02 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | Low-complexity instruction prefetch system |
US9575761B2 (en) | 2013-03-28 | 2017-02-21 | Renesas Electronics Corporation | System and method for updating an instruction cache following a branch instruction in a semiconductor device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
US5943687A (en) | Penalty-based cache storage and replacement techniques | |
EP2035920B1 (en) | Local and global branch prediction information storage | |
US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
US6339822B1 (en) | Using padded instructions in a block-oriented cache | |
US6665776B2 (en) | Apparatus and method for speculative prefetching after data cache misses | |
US5692167A (en) | Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor | |
US6418525B1 (en) | Method and apparatus for reducing latency in set-associative caches using set prediction | |
US6055621A (en) | Touch history table | |
US5870599A (en) | Computer system employing streaming buffer for instruction preetching | |
US5592634A (en) | Zero-cycle multi-state branch cache prediction data processing system and method thereof | |
US20070288733A1 (en) | Early Conditional Branch Resolution | |
US20050076180A1 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
JP2007207240A (en) | Self prefetching l2 cache mechanism for data line | |
US7743238B2 (en) | Accessing items of architectural state from a register cache in a data processing apparatus when performing branch prediction operations for an indirect branch instruction | |
JP2002525741A (en) | Method for calculating indirect branch targets | |
US8301871B2 (en) | Predicated issue for conditional branch instructions | |
JP2007207246A (en) | Self prefetching l2 cache mechanism for instruction line | |
US6910104B2 (en) | Icache-based value prediction mechanism | |
US20070288732A1 (en) | Hybrid Branch Prediction Scheme | |
US20070288731A1 (en) | Dual Path Issue for Conditional Branch Instructions | |
US20070288734A1 (en) | Double-Width Instruction Queue for Instruction Execution | |
JP2596712B2 (en) | System and method for managing execution of instructions, including adjacent branch instructions | |
JPH06242951A (en) | Cache memory system | |
JPH0588891A (en) | Cache memory controller |