JP3278564B2 - 命令キャッシュ - Google Patents
命令キャッシュInfo
- Publication number
- JP3278564B2 JP3278564B2 JP32144995A JP32144995A JP3278564B2 JP 3278564 B2 JP3278564 B2 JP 3278564B2 JP 32144995 A JP32144995 A JP 32144995A JP 32144995 A JP32144995 A JP 32144995A JP 3278564 B2 JP3278564 B2 JP 3278564B2
- Authority
- JP
- Japan
- Prior art keywords
- line
- instruction
- address
- line buffer
- state
- 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
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、命令キャッシュ、
特に、複数のラインを連続して読めるノンブロックタイ
プの命令キャッシュに関するものである。
特に、複数のラインを連続して読めるノンブロックタイ
プの命令キャッシュに関するものである。
【0002】
【従来の技術】命令キャッシュにおいて、キャッシュに
ミスヒットしたら、一般に2n (nは自然数)ワードか
らなる1ライン分の命令をメモリから読み出して、それ
らをキャッシュに書き込んでから、キャッシュから命令
フェッチを行い、次にまたキャッシュにミスヒットした
らメモリから1ライン読み出すというブロッキング方式
よりも、一旦、キャッシュにミスヒットすると複数のラ
インを連続して読み出すノンブロッキング方式の方が有
利であることが分かっており、ノンブロッキング方式の
命令キャッシュが多く採用されている。そのノンブロッ
キングキャッシュにおいて、パイプラインストールなど
によりキャッシュへの読み込みタイミングと命令フェッ
チとのタイミングがずれてしまっても、キャッシュへの
読み込みと命令フェッチが継続して並行に行えるよう
に、図2に示すよう工夫が行われている。図2は、従来
の命令キャッシュを示す構成図である。図2に示すよう
に、フェッチアドレスレジスタ1は、中央処理装置(以
下、CPUと呼ぶ)がフェッチしようとしている命令の
アドレスを保持するレジスタである。通常は、実行しよ
うするプログラム上では、命令がシーケンシャルに並ん
でいるので、ある命令がフェッチされると、フェッチア
ドレスレジスタ1には、インクリメンタ(以下、INC
と呼ぶ)2により+1ワード加算されたアドレスが取り
込まれる。この取り込まれるタイミングは、フェッチア
ドレス保持信号Lによって決められる。一方、分岐する
場合は、プログラムの命令コードが示す分岐先のアドレ
スがCPUで算出されて、そのアドレスがCPUから与
えられて、分岐信号Bに基づいて、選択回路(以下、M
UXと呼ぶ)3で選択されて、フェッチアドレスレジス
タ1に保持される。
ミスヒットしたら、一般に2n (nは自然数)ワードか
らなる1ライン分の命令をメモリから読み出して、それ
らをキャッシュに書き込んでから、キャッシュから命令
フェッチを行い、次にまたキャッシュにミスヒットした
らメモリから1ライン読み出すというブロッキング方式
よりも、一旦、キャッシュにミスヒットすると複数のラ
インを連続して読み出すノンブロッキング方式の方が有
利であることが分かっており、ノンブロッキング方式の
命令キャッシュが多く採用されている。そのノンブロッ
キングキャッシュにおいて、パイプラインストールなど
によりキャッシュへの読み込みタイミングと命令フェッ
チとのタイミングがずれてしまっても、キャッシュへの
読み込みと命令フェッチが継続して並行に行えるよう
に、図2に示すよう工夫が行われている。図2は、従来
の命令キャッシュを示す構成図である。図2に示すよう
に、フェッチアドレスレジスタ1は、中央処理装置(以
下、CPUと呼ぶ)がフェッチしようとしている命令の
アドレスを保持するレジスタである。通常は、実行しよ
うするプログラム上では、命令がシーケンシャルに並ん
でいるので、ある命令がフェッチされると、フェッチア
ドレスレジスタ1には、インクリメンタ(以下、INC
と呼ぶ)2により+1ワード加算されたアドレスが取り
込まれる。この取り込まれるタイミングは、フェッチア
ドレス保持信号Lによって決められる。一方、分岐する
場合は、プログラムの命令コードが示す分岐先のアドレ
スがCPUで算出されて、そのアドレスがCPUから与
えられて、分岐信号Bに基づいて、選択回路(以下、M
UXと呼ぶ)3で選択されて、フェッチアドレスレジス
タ1に保持される。
【0003】フェッチアドレスレジスタ1に保持された
フェッチアドレスFAは、MUX9を通して、タグメモ
リ10のA端子に送られる。タグメモリ10のA端子に
入力されたアドレスにより選択された、Dout 端子より
出力されたデータと、フェッチアドレスFAとを比較器
(以下、CMPと呼ぶ)12で比較して、命令キャッシ
ュのデータメモリ18に要求する命令がある(ヒット)
か否かが判断される。データメモリ18にない(ミスヒ
ットだった)場合、そのミスヒットだった命令を含む1
ラインの第1ワードから順々にデータメモリ18に読み
込む。まず、フェッチアドレスレジスタ1に保持された
フェッチアドレスFAは、MUX4を通って、メモリア
ドレスレジスタ5に保持される。このメモリアドレスレ
ジスタ5に保持されたメモリアドレスMAによりメモリ
アクセスが行われ、ミスヒットしたラインの第1ワード
の命令がラインバッファ17に保持される。メモリアド
レスMAは、引き続き、INC6により+1ワード加算
されたアドレスに更新され、プログラムが格納されたメ
モリへのメモリアクセスを行い、次の命令をラインバッ
ファ17に保持する。これを繰り返す。一方、メモリア
ドレスレジスタ5に保持されたメモリアドレスMAの上
位28ビット(ラインのアドレスを示す)は、キャッシ
ュアドレスレジスタ7にも保持される。メモリから読み
込まれた命令は、1ライン分がラインバッファ17に保
持されると、データメモリ18に書き込まれる。データ
メモリ18に書き込まれる時のアドレスは、キャッシュ
アドレスレジスタ7よりMUX16を通して、供給され
る。同時にタグメモリ10にも書き込まれる。タグメモ
リ10のA端子とDin 端子には、キャッシュアドレスレ
ジスタ7よりMUX9を通じて供給される。
フェッチアドレスFAは、MUX9を通して、タグメモ
リ10のA端子に送られる。タグメモリ10のA端子に
入力されたアドレスにより選択された、Dout 端子より
出力されたデータと、フェッチアドレスFAとを比較器
(以下、CMPと呼ぶ)12で比較して、命令キャッシ
ュのデータメモリ18に要求する命令がある(ヒット)
か否かが判断される。データメモリ18にない(ミスヒ
ットだった)場合、そのミスヒットだった命令を含む1
ラインの第1ワードから順々にデータメモリ18に読み
込む。まず、フェッチアドレスレジスタ1に保持された
フェッチアドレスFAは、MUX4を通って、メモリア
ドレスレジスタ5に保持される。このメモリアドレスレ
ジスタ5に保持されたメモリアドレスMAによりメモリ
アクセスが行われ、ミスヒットしたラインの第1ワード
の命令がラインバッファ17に保持される。メモリアド
レスMAは、引き続き、INC6により+1ワード加算
されたアドレスに更新され、プログラムが格納されたメ
モリへのメモリアクセスを行い、次の命令をラインバッ
ファ17に保持する。これを繰り返す。一方、メモリア
ドレスレジスタ5に保持されたメモリアドレスMAの上
位28ビット(ラインのアドレスを示す)は、キャッシ
ュアドレスレジスタ7にも保持される。メモリから読み
込まれた命令は、1ライン分がラインバッファ17に保
持されると、データメモリ18に書き込まれる。データ
メモリ18に書き込まれる時のアドレスは、キャッシュ
アドレスレジスタ7よりMUX16を通して、供給され
る。同時にタグメモリ10にも書き込まれる。タグメモ
リ10のA端子とDin 端子には、キャッシュアドレスレ
ジスタ7よりMUX9を通じて供給される。
【0004】ラインバッファ17に保持された命令は、
その命令のアドレスがフェッチアドレスレジスタ1に保
持されるフェッチアドレスFAと一致すれば、CPUへ
もtoCPU(Data)を通して送られる。この場合、キャッシ
ュアドレスレジスタ7に保持されたアドレスとフェッチ
アドレスFAが一致するか否かをCMP14にて判断す
る。この時、ラインバッファ有効フラグ13から供給さ
れた信号により、既にラインバッファ17にメモリから
読み込まれたか否かを判別して、読み込まれていれば、
ヒット信号HITをアサートする。さらに、ラインバッ
ファ17に保持された1ライン分の命令がデータメモリ
18に書き込まれると、メモリアドレスMAの上位28
ビットを保持するスライドバッファタグ11に保持され
る。スライドバッファタグ11に保持されていたアドレ
スとフェッチアドレスFAが一致するか否かをCMP1
5にて判断して、一致していれば、ヒット信号HITを
アサートする。この時、ラインバッファ有効フラグ13
から供給された信号により、新たな命令がメモリから読
み込まれラインバッファ17に上書きされていないかを
判別して、上書きされていなければ、ヒット信号HIT
をアサートする。この2つの機構によりラインバッファ
17に保持された命令が、フェッチアドレスレジスタ1
に保持されたアドレスの指す命令であった場合、たと
え、命令フェッチが何らかの理由により遅れても命令フ
ェッチを続けることができる。
その命令のアドレスがフェッチアドレスレジスタ1に保
持されるフェッチアドレスFAと一致すれば、CPUへ
もtoCPU(Data)を通して送られる。この場合、キャッシ
ュアドレスレジスタ7に保持されたアドレスとフェッチ
アドレスFAが一致するか否かをCMP14にて判断す
る。この時、ラインバッファ有効フラグ13から供給さ
れた信号により、既にラインバッファ17にメモリから
読み込まれたか否かを判別して、読み込まれていれば、
ヒット信号HITをアサートする。さらに、ラインバッ
ファ17に保持された1ライン分の命令がデータメモリ
18に書き込まれると、メモリアドレスMAの上位28
ビットを保持するスライドバッファタグ11に保持され
る。スライドバッファタグ11に保持されていたアドレ
スとフェッチアドレスFAが一致するか否かをCMP1
5にて判断して、一致していれば、ヒット信号HITを
アサートする。この時、ラインバッファ有効フラグ13
から供給された信号により、新たな命令がメモリから読
み込まれラインバッファ17に上書きされていないかを
判別して、上書きされていなければ、ヒット信号HIT
をアサートする。この2つの機構によりラインバッファ
17に保持された命令が、フェッチアドレスレジスタ1
に保持されたアドレスの指す命令であった場合、たと
え、命令フェッチが何らかの理由により遅れても命令フ
ェッチを続けることができる。
【0005】
【発明が解決しようとする課題】しかしながら、従来の
命令キャッシュにおいて、以下のような課題があった。
アドレスが32ビット長だった場合、二つのCMP1
4,15は、その全てを比較しなければならず、また、
スライドバッファタグ11にもそのアドレスを保持しな
ければならないので、少なくとも28ビットのレジスタ
と二つの28ビットのCMP14,15、及び有効無効
を判断する組み合わせ回路が必要で小さくならないとい
う問題点があった。
命令キャッシュにおいて、以下のような課題があった。
アドレスが32ビット長だった場合、二つのCMP1
4,15は、その全てを比較しなければならず、また、
スライドバッファタグ11にもそのアドレスを保持しな
ければならないので、少なくとも28ビットのレジスタ
と二つの28ビットのCMP14,15、及び有効無効
を判断する組み合わせ回路が必要で小さくならないとい
う問題点があった。
【0006】
【課題を解決するための手段】本発明では、前記課題を
解決するために、以下の回路を備えている。即ち、メモ
リ上の命令のコピーを保持するキャッシュメモリと、前
記キャッシュメモリに書き込むために一時的に前記メモ
リからの2n 個の1ラインの命令を保持する2n 個のラ
インバッファと、前記キャッシュメモリに書き込む前の
状態を示し、前記各ラインバッファにフェッチしようと
する命令のアドレスが示すラインの命令が保持されて有
効であるか否かを示す2n ビットの第1のラインバッフ
ァ有効フラグと、前記キャッシュメモリに書き込んだ後
の状態を示し、前記各ラインバッファが次のラインの命
令で上書きされて無効であるか否かを示す2nビットの
第2のラインバッファ有効フラグとを備えている。そし
て、前記フェッチしようとしている命令のアドレスが示
すラインと前記ラインバッファに読み込み中のラインが
一致することを示す第1の状態と、前記フェッチしよう
としている命令のアドレスが示すラインが前記ラインバ
ッファに読み込み中のラインの一つ前の読み込みが完了
したラインであることを示す第2の状態と、前記フェッ
チしようとしている命令のアドレスが示すラインと前記
ラインバッファに読み込み中のラインではなく、かつ、
前記フェッチしようとしている命令がラインバッファに
存在しないことを示す第3の状態とを保持するモードレ
ジスタと、前記第1と第2のラインバッファ有効フラグ
とフェッチしようとしているアドレスとに基づいて、第
1、第2、第3の状態の遷移を制御する制御回路とを備
えている。さらに、前記モードレジスタが第1の状態を
示し、前記ラインバッファ有効フラグがフェッチしよう
としている命令に対応するラインバッファが有効である
ことを示した時、又は前記モードレジスタが第2の状態
を示した時に、ヒット信号をアサートして、前記モード
レジスタが第3の状態を示した時にヒット信号をネゲー
トするラインバッファ有効判定回路を備えている。
解決するために、以下の回路を備えている。即ち、メモ
リ上の命令のコピーを保持するキャッシュメモリと、前
記キャッシュメモリに書き込むために一時的に前記メモ
リからの2n 個の1ラインの命令を保持する2n 個のラ
インバッファと、前記キャッシュメモリに書き込む前の
状態を示し、前記各ラインバッファにフェッチしようと
する命令のアドレスが示すラインの命令が保持されて有
効であるか否かを示す2n ビットの第1のラインバッフ
ァ有効フラグと、前記キャッシュメモリに書き込んだ後
の状態を示し、前記各ラインバッファが次のラインの命
令で上書きされて無効であるか否かを示す2nビットの
第2のラインバッファ有効フラグとを備えている。そし
て、前記フェッチしようとしている命令のアドレスが示
すラインと前記ラインバッファに読み込み中のラインが
一致することを示す第1の状態と、前記フェッチしよう
としている命令のアドレスが示すラインが前記ラインバ
ッファに読み込み中のラインの一つ前の読み込みが完了
したラインであることを示す第2の状態と、前記フェッ
チしようとしている命令のアドレスが示すラインと前記
ラインバッファに読み込み中のラインではなく、かつ、
前記フェッチしようとしている命令がラインバッファに
存在しないことを示す第3の状態とを保持するモードレ
ジスタと、前記第1と第2のラインバッファ有効フラグ
とフェッチしようとしているアドレスとに基づいて、第
1、第2、第3の状態の遷移を制御する制御回路とを備
えている。さらに、前記モードレジスタが第1の状態を
示し、前記ラインバッファ有効フラグがフェッチしよう
としている命令に対応するラインバッファが有効である
ことを示した時、又は前記モードレジスタが第2の状態
を示した時に、ヒット信号をアサートして、前記モード
レジスタが第3の状態を示した時にヒット信号をネゲー
トするラインバッファ有効判定回路を備えている。
【0007】
【発明の実施の形態】第1の実施形態 図1は、本発明の第1の実施形態の命令キャッシュを示
す構成図であり、図2中の要素と共通する要素には共通
の符号を付してある。本発明の第1の実施形態の命令キ
ャッシュが従来の命令キャッシュと異なる点は、スライ
ドバッファタグ11と、キャッシュアドレスレジスタ7
に保持されたアドレスとフェッチアドレスFAを比較す
るCMP14と、スライドバッファタグ11に保持され
たアドレスとフェッチアドレスFAを比較するCMP1
5とを無くして、フェッチアドレスFAが示すラインが
ラインバッファに読み込み中のラインと一致を示す状
態、フェッチアドレスFAが示すラインがラインバッフ
ァに読み込み中のラインの一つ前のラインを示す状態な
どを示すモードレジスタMRと、ラインバッファ有効フ
ラグ13とモードレジスタMRが示す状態に基づいて、
ヒット信号HITをアサートもしくはネゲートするライ
ンバッファ有効判定回路31とを設けたことである。即
ち、本第1の実施形態の命令キャッシュは、フェッチア
ドレスレジスタ1、INC2、MUX3,4、メモリア
ドレスレジスタ5、キャッシュアドレスレジスタ7、I
NC8、MUX9、タグメモリ10、CMP12、ライ
ンバッファ有効フラグ13、MUX16、ラインバッフ
ァ17、データメモリ18、MUX19、命令デコーダ
20、ラインバッファ有効判定回路31、及び制御回路
32を備えている。
す構成図であり、図2中の要素と共通する要素には共通
の符号を付してある。本発明の第1の実施形態の命令キ
ャッシュが従来の命令キャッシュと異なる点は、スライ
ドバッファタグ11と、キャッシュアドレスレジスタ7
に保持されたアドレスとフェッチアドレスFAを比較す
るCMP14と、スライドバッファタグ11に保持され
たアドレスとフェッチアドレスFAを比較するCMP1
5とを無くして、フェッチアドレスFAが示すラインが
ラインバッファに読み込み中のラインと一致を示す状
態、フェッチアドレスFAが示すラインがラインバッフ
ァに読み込み中のラインの一つ前のラインを示す状態な
どを示すモードレジスタMRと、ラインバッファ有効フ
ラグ13とモードレジスタMRが示す状態に基づいて、
ヒット信号HITをアサートもしくはネゲートするライ
ンバッファ有効判定回路31とを設けたことである。即
ち、本第1の実施形態の命令キャッシュは、フェッチア
ドレスレジスタ1、INC2、MUX3,4、メモリア
ドレスレジスタ5、キャッシュアドレスレジスタ7、I
NC8、MUX9、タグメモリ10、CMP12、ライ
ンバッファ有効フラグ13、MUX16、ラインバッフ
ァ17、データメモリ18、MUX19、命令デコーダ
20、ラインバッファ有効判定回路31、及び制御回路
32を備えている。
【0008】CPUからのアドレス(from CPU(Addres
s))、INC2の出力、及び分岐信号Bは、MUX3の
入力に接続されている。MUX3の出力は、フェッチア
ドレスレジスタ1の入力に接続されている。フェッチア
ドレス保持信号Lは、フェッチアドレスレジスタ1の入
力、及び制御回路32の入力に接続されている。フェッ
チアドレスレジスタ1の出力であるフェッチアドレスF
Aは、INC2の入力、MUX4、MUX9に接続され
ている。フェッチアドレスレジスタ1の出力であるフェ
ッチアドレスFAの下位2ビットFA[3:2]は、ラ
インバッファ有効判定回路31、及び制御回路32の入
力に接続されている。データメモリ18に記憶するアド
レスを示すフェッチアドレスFAのインディクスは、M
UX16に接続されている。ラインバッファ有効フラグ
13の出力は、ラインバッファ有効判定回路31、及び
制御回路32の入力に接続されている。MUX4の出力
は、メモリアドレスレジスタ5の入力に接続されてい
る。メモリアドレスレジスタ5の出力であるメモリアド
レスMAは、命令を保持するメモリのアドレス端子(to
Memory(Address))、及びINC6に接続されている。メ
モリアドレスMAのラインを示すMA[31:4]は、
キャッシュアドレスレジスタ7の入力に接続されてい
る。INC6の出力は、MUX4の入力に接続されてい
る。
s))、INC2の出力、及び分岐信号Bは、MUX3の
入力に接続されている。MUX3の出力は、フェッチア
ドレスレジスタ1の入力に接続されている。フェッチア
ドレス保持信号Lは、フェッチアドレスレジスタ1の入
力、及び制御回路32の入力に接続されている。フェッ
チアドレスレジスタ1の出力であるフェッチアドレスF
Aは、INC2の入力、MUX4、MUX9に接続され
ている。フェッチアドレスレジスタ1の出力であるフェ
ッチアドレスFAの下位2ビットFA[3:2]は、ラ
インバッファ有効判定回路31、及び制御回路32の入
力に接続されている。データメモリ18に記憶するアド
レスを示すフェッチアドレスFAのインディクスは、M
UX16に接続されている。ラインバッファ有効フラグ
13の出力は、ラインバッファ有効判定回路31、及び
制御回路32の入力に接続されている。MUX4の出力
は、メモリアドレスレジスタ5の入力に接続されてい
る。メモリアドレスレジスタ5の出力であるメモリアド
レスMAは、命令を保持するメモリのアドレス端子(to
Memory(Address))、及びINC6に接続されている。メ
モリアドレスMAのラインを示すMA[31:4]は、
キャッシュアドレスレジスタ7の入力に接続されてい
る。INC6の出力は、MUX4の入力に接続されてい
る。
【0009】キャッシュアドレスレジスタ7の出力は、
INC8、MUX9、及びMUX16の入力に接続され
ている。INC8の出力は、MUX9の入力に接続され
ている。MUX9の出力のうちタグを示す出力は、タグ
メモリ10のDin端子に接続され、MUX9の出力のう
ちインディクスを示す出力は、タグメモリ10のA端子
に接続されている。CMP12の入力は、タグメモリ1
0のDout 端子、及びMUX9の出力に接続されてい
る。CMP12の出力は、ORゲート33の一方の入
力、及びORゲート34の入力に接続されている。モー
ドレジスタMRの出力であるモードMODEは、ラインバッ
ファ有効判定回路31、及びORゲート34の入力に接
続されている。ラインバッファ有効判定回路31の出力
は、ORゲート33の他方の入力に接続されている。O
Rゲート33からは、ヒット信号HITがCPUに出力
される。メモリのデータ端子(from Memory(Data)) は、
ラインバッファ17の入力に接続されている。ラインバ
ッファ17の出力は、データメモリ18のDin端子、及
びMUX19の入力に接続されている。データメモリ1
8のDout 端子は、MUX19の入力に接続されてい
る。MUX19の出力は、命令デコーダ20の入力及び
CPU(to CPU(Data))に接続されている。
INC8、MUX9、及びMUX16の入力に接続され
ている。INC8の出力は、MUX9の入力に接続され
ている。MUX9の出力のうちタグを示す出力は、タグ
メモリ10のDin端子に接続され、MUX9の出力のう
ちインディクスを示す出力は、タグメモリ10のA端子
に接続されている。CMP12の入力は、タグメモリ1
0のDout 端子、及びMUX9の出力に接続されてい
る。CMP12の出力は、ORゲート33の一方の入
力、及びORゲート34の入力に接続されている。モー
ドレジスタMRの出力であるモードMODEは、ラインバッ
ファ有効判定回路31、及びORゲート34の入力に接
続されている。ラインバッファ有効判定回路31の出力
は、ORゲート33の他方の入力に接続されている。O
Rゲート33からは、ヒット信号HITがCPUに出力
される。メモリのデータ端子(from Memory(Data)) は、
ラインバッファ17の入力に接続されている。ラインバ
ッファ17の出力は、データメモリ18のDin端子、及
びMUX19の入力に接続されている。データメモリ1
8のDout 端子は、MUX19の入力に接続されてい
る。MUX19の出力は、命令デコーダ20の入力及び
CPU(to CPU(Data))に接続されている。
【0010】命令デコーダ20の出力は、ORゲート3
4の入力に接続されている。ORゲート34の出力は、
キャッシュへの読み込み継続フラグRCFに接続されて
いる。制御回路32には、システムクロックCLKが接
続されている。フェッチアドレスレジスタ1は、例え
ば、32ビットのレジスタであり、CPUがフェッチし
ようとしている命令のアドレスを保持するレジスタであ
る。メモリアドレスレジスタ5は、例えば、32ビット
のレジスタであり、命令を保持するメモリからプログラ
ムを読み込むアドレスを保持するレジスタである。キャ
ッシュアドレスレジスタ7は、メモリアドレスMAの上
位28ビットMA[31:4]を保持するレジスタであ
る。タグメモリ10とデータメモリ18はキャシュメモ
リである。タグメモリ10は、キャッシュの1ラインに
関する情報のうち、フェッチアドレスFAのインディク
スをアドレスとして、そのアドレス領域に有効無効フラ
グとフェッチアドレスFAの上位ビットであるタグを保
持するメモリである。また、データメモリ18は、ライ
ンバッファ17に保持された1ラインの命令をそのライ
ンが示すインディクスをアドレスして、そのアドレス領
域にラインバッファ17に保持された命令を保持するメ
モリである。
4の入力に接続されている。ORゲート34の出力は、
キャッシュへの読み込み継続フラグRCFに接続されて
いる。制御回路32には、システムクロックCLKが接
続されている。フェッチアドレスレジスタ1は、例え
ば、32ビットのレジスタであり、CPUがフェッチし
ようとしている命令のアドレスを保持するレジスタであ
る。メモリアドレスレジスタ5は、例えば、32ビット
のレジスタであり、命令を保持するメモリからプログラ
ムを読み込むアドレスを保持するレジスタである。キャ
ッシュアドレスレジスタ7は、メモリアドレスMAの上
位28ビットMA[31:4]を保持するレジスタであ
る。タグメモリ10とデータメモリ18はキャシュメモ
リである。タグメモリ10は、キャッシュの1ラインに
関する情報のうち、フェッチアドレスFAのインディク
スをアドレスとして、そのアドレス領域に有効無効フラ
グとフェッチアドレスFAの上位ビットであるタグを保
持するメモリである。また、データメモリ18は、ライ
ンバッファ17に保持された1ラインの命令をそのライ
ンが示すインディクスをアドレスして、そのアドレス領
域にラインバッファ17に保持された命令を保持するメ
モリである。
【0011】ラインバッファ17は、メモリから読み込
んだ命令を一時的に保持するバッファであり、例えば、
1ラインを4ワードとすると、32ビット×4の構成で
あり、その構成する各ラインバッファをラインバッファ
0〜ラインバッファ3と表記する。ラインバッファ有効
フラグ13は、例えば、1ラインを4ワードとすると、
4ビットのLBV1(第1のラインバッファ有効フラ
グ)とLBV2(第2のラインバッファ有効フラグ)と
より構成されている。LBV1は、データメモリ18に
書き込まれる前の状態において、ラインバッファ0〜3
が有効であるか否かを示すレジスタである。LBV2
は、データメモリ18に書き込まれた後の状態におい
て、ラインバッファ0〜3が次のラインの命令で上書き
されずに有効であるか否かを示すレジスタである。ライ
ンバッファ有効判定回路31は、ラインバッファ有効フ
ラグ13とモードレジスタMRのモードMODEから、フェ
ッチアドレスFAが示す命令をラインバッファ17が保
持していれば、ヒット信号HITをアサートして、保持
していなければヒット信号HITをネゲートする回路で
ある。
んだ命令を一時的に保持するバッファであり、例えば、
1ラインを4ワードとすると、32ビット×4の構成で
あり、その構成する各ラインバッファをラインバッファ
0〜ラインバッファ3と表記する。ラインバッファ有効
フラグ13は、例えば、1ラインを4ワードとすると、
4ビットのLBV1(第1のラインバッファ有効フラ
グ)とLBV2(第2のラインバッファ有効フラグ)と
より構成されている。LBV1は、データメモリ18に
書き込まれる前の状態において、ラインバッファ0〜3
が有効であるか否かを示すレジスタである。LBV2
は、データメモリ18に書き込まれた後の状態におい
て、ラインバッファ0〜3が次のラインの命令で上書き
されずに有効であるか否かを示すレジスタである。ライ
ンバッファ有効判定回路31は、ラインバッファ有効フ
ラグ13とモードレジスタMRのモードMODEから、フェ
ッチアドレスFAが示す命令をラインバッファ17が保
持していれば、ヒット信号HITをアサートして、保持
していなければヒット信号HITをネゲートする回路で
ある。
【0012】命令デコーダ20は、メモリから読み込ん
だ命令をデコードして、分岐命令であるかを判別するも
のである。制御回路32は、モードレジスタMRの設定
するモードの設定、MUX9,16,19の制御などを
行う回路である。図3は、図1中のラインバッファとデ
ータメモリとMUXを示す構成図である。図3に示すよ
うに、ラインバッファ17−1〜17−4の出力はトラ
イステート回路40−1〜40−4の入力に接続されて
いる。トライステート回路40−1〜40−4のハイイ
ンピーダンス状態を制御する制御電極には、図示しない
が制御回路32から出力されるバッファリード信号BR
が接続されている。ラインバッファ17−1〜17−4
の32ビット×4の出力は、データメモリ18のD in 端
子に接続されている。データメモリ18のD out 端子に
は、トライステート回路41の入力が接続されている。
トライステート回路41のハイインピーダンス状態を制
御する制御電極には、バッファリード信号BRの反転信
号が接続されている。トライステート回路41の32ビ
ット×4(=128)の出力は、MUX19の入力に接
続されている。フェッチアドレスFAの下位2ビットF
A[3:2]は、選択信号としてMUX19に接続され
ている。MUX19の32ビットの出力はCPU(to CP
U(Data))に接続されている。
だ命令をデコードして、分岐命令であるかを判別するも
のである。制御回路32は、モードレジスタMRの設定
するモードの設定、MUX9,16,19の制御などを
行う回路である。図3は、図1中のラインバッファとデ
ータメモリとMUXを示す構成図である。図3に示すよ
うに、ラインバッファ17−1〜17−4の出力はトラ
イステート回路40−1〜40−4の入力に接続されて
いる。トライステート回路40−1〜40−4のハイイ
ンピーダンス状態を制御する制御電極には、図示しない
が制御回路32から出力されるバッファリード信号BR
が接続されている。ラインバッファ17−1〜17−4
の32ビット×4の出力は、データメモリ18のD in 端
子に接続されている。データメモリ18のD out 端子に
は、トライステート回路41の入力が接続されている。
トライステート回路41のハイインピーダンス状態を制
御する制御電極には、バッファリード信号BRの反転信
号が接続されている。トライステート回路41の32ビ
ット×4(=128)の出力は、MUX19の入力に接
続されている。フェッチアドレスFAの下位2ビットF
A[3:2]は、選択信号としてMUX19に接続され
ている。MUX19の32ビットの出力はCPU(to CP
U(Data))に接続されている。
【0013】以下、図4〜図8を参照しつつ、図1の動
作を説明する。図4は、キャッシュからの命令フェッチ
を示す図であり、太い黒線は制御の流れを示している。
システムのリセット中、タグメモリ10の有効無効を示
すビットは全て無効を示すように設定されている。シス
テムのリセット後、CPUは、最初の命令をフェッチし
ようとする。フェッチアドレスレジスタ1に保持された
アドレスは、図4に示すように、MUX9を通して、タ
グメモリ10に供給される。しかし、全てが無効である
ので、タグメモリ10の端子Dout とMUX9を通じて
供給されたアドレスのタグとをCMP12で比較し、そ
の結果、ヒット信号HITは、ネゲートされ、ミスヒッ
トを示す。一方、ヒットした時のため、フェッチアドレ
スレジスタ1に保持されたフェッチアドレスFAはMU
X16に供給され、データメモリ18から読み出した1
ラインの命令のうち一つがMUX19で選択され、CP
Uに送る。しかし、ミスヒットした場合、CPUに送ら
れた命令は正しくないので、フェッチされない。図5
は、キャッシュへの読み込み開始を示す図であり、太い
黒線は制御の流れを示している。ミスヒットを示すヒッ
ト信号HITが制御回路32に供給され、図5に示すよ
うに、命令を保持するメモリからの読み込みを開始す
る。フェッチアドレスFAは、メモリアドレスレジスタ
5に保持されて、メモリアドレスMAがメモリに送られ
る。
作を説明する。図4は、キャッシュからの命令フェッチ
を示す図であり、太い黒線は制御の流れを示している。
システムのリセット中、タグメモリ10の有効無効を示
すビットは全て無効を示すように設定されている。シス
テムのリセット後、CPUは、最初の命令をフェッチし
ようとする。フェッチアドレスレジスタ1に保持された
アドレスは、図4に示すように、MUX9を通して、タ
グメモリ10に供給される。しかし、全てが無効である
ので、タグメモリ10の端子Dout とMUX9を通じて
供給されたアドレスのタグとをCMP12で比較し、そ
の結果、ヒット信号HITは、ネゲートされ、ミスヒッ
トを示す。一方、ヒットした時のため、フェッチアドレ
スレジスタ1に保持されたフェッチアドレスFAはMU
X16に供給され、データメモリ18から読み出した1
ラインの命令のうち一つがMUX19で選択され、CP
Uに送る。しかし、ミスヒットした場合、CPUに送ら
れた命令は正しくないので、フェッチされない。図5
は、キャッシュへの読み込み開始を示す図であり、太い
黒線は制御の流れを示している。ミスヒットを示すヒッ
ト信号HITが制御回路32に供給され、図5に示すよ
うに、命令を保持するメモリからの読み込みを開始す
る。フェッチアドレスFAは、メモリアドレスレジスタ
5に保持されて、メモリアドレスMAがメモリに送られ
る。
【0014】図6は、キャッシュへの読み込みとライン
バッファからのフェッチを示す図であり、太い黒線は制
御の流れを示している。まず、ミスヒットしたラインの
1ライン分の命令をラインバッファ17に読み込む。例
えば、図6に示すように、0x00000000(最初の0xは16
進数を示す)の1ワード(32ビット)を読み込み、ラ
インバッファ0に読み込む。メモリアドレスMAは、I
NC6及びMUX4を通り、該メモリアドレスMAが次
のワードのアドレス0x00000004に更新され、そのアドレ
スの1ワードを読み込み、ラインバッファ1に保持す
る。同様に、アドレス0x00000008の1ワードを読み込
み、ラインバッファ2に保持し、さらにアドレス0x0000
000cの1ワードを読み込み、ラインバッファ3に保持す
る。これら1ラインのアクセス中にメモリアドレスMA
の上位28ビットは、キャッシュアドレスレジスタ7に
保持される。ラインバッファ17に4ワードが保持され
ると、キャッシュアドレスレジスタ7に保持されていた
アドレスのインデックスに従って、ラインバッファ17
に保持された内容と共に、タグメモリ10及びデータメ
モリ18に書き込む。制御回路32は、キャッシュへの
読み込み継続フラグRCFを参照して、ラインバッファ
17にメモリから命令が読み出されている間は、バッフ
ァリード信号BRを“1”にして、ラインバッファ17
にメモリから命令の読み出し停止されると、バッファリ
ード信号BRを“0”にする。
バッファからのフェッチを示す図であり、太い黒線は制
御の流れを示している。まず、ミスヒットしたラインの
1ライン分の命令をラインバッファ17に読み込む。例
えば、図6に示すように、0x00000000(最初の0xは16
進数を示す)の1ワード(32ビット)を読み込み、ラ
インバッファ0に読み込む。メモリアドレスMAは、I
NC6及びMUX4を通り、該メモリアドレスMAが次
のワードのアドレス0x00000004に更新され、そのアドレ
スの1ワードを読み込み、ラインバッファ1に保持す
る。同様に、アドレス0x00000008の1ワードを読み込
み、ラインバッファ2に保持し、さらにアドレス0x0000
000cの1ワードを読み込み、ラインバッファ3に保持す
る。これら1ラインのアクセス中にメモリアドレスMA
の上位28ビットは、キャッシュアドレスレジスタ7に
保持される。ラインバッファ17に4ワードが保持され
ると、キャッシュアドレスレジスタ7に保持されていた
アドレスのインデックスに従って、ラインバッファ17
に保持された内容と共に、タグメモリ10及びデータメ
モリ18に書き込む。制御回路32は、キャッシュへの
読み込み継続フラグRCFを参照して、ラインバッファ
17にメモリから命令が読み出されている間は、バッフ
ァリード信号BRを“1”にして、ラインバッファ17
にメモリから命令の読み出し停止されると、バッファリ
ード信号BRを“0”にする。
【0015】図7は、ラインバッファとデータメモリの
出力Dout の選択を示す図である。図7に示すように、
MUX19は、バッファリード信号BRが“0”の時、
フェッチアドレスFAの下位2ビットFA[3:2]が
“00”の時は、Dout [127:96]、FA[3:2]が
“01”の時は、Dout [95:64] 、FA[3:2]が
“10”の時は、Dout [63:32] 、FA[3:2]が
“11”の時は、Dout [31:0]を選択し、バッファリー
ド信号BRが“1”の時、フェッチアドレスFAの下位
2ビットFA[3:2]が“00”の時は、ラインバッ
ファ0の出力、FA[3:2]が“01”の時は、ライ
ンバッファ1の出力、FA[3:2]が“10”の時
は、ラインバッファ2の出力、FA[3:2]が“1
1”の時は、ラインバッファ3の出力を選択して、CP
U(to CPU(Data))に出力する。停止条件が満たされなけ
れば、キャッシュへの読み込み継続フラグRCFが
“1”を示して、順々に、次のラインも、その次のライ
ンもタグメモリ10及びデータメモリ18に書き込む。
この時、後述するように、同時にフェッチアドレスFA
が示す命令がラインバッファ17上にあるか否かを判定
して、ラインバッファ17上にあれば、CPU(to CPU
(Data))へその命令を供給する。停止条件が満たされる
と、次のラインはラインバッファ17には読み込まな
い。そして、フェッチアドレスレジスタ1に保持された
フェッチアドレスFAは、再び、タグメモリ10に供給
されて、CMP12でヒット・ミスヒットが判定され
る。ヒットした場合、データメモリ18から該当する命
令を読み出して、CPU(to CPU(Data))へその命令を供
給する。そして、次のアドレスがフェッチアドレスレジ
スタ1に保持されて、図4に示すと同様に行う。ミスヒ
ットした場合は、上述したように、メモリからの読み込
みが行われる。
出力Dout の選択を示す図である。図7に示すように、
MUX19は、バッファリード信号BRが“0”の時、
フェッチアドレスFAの下位2ビットFA[3:2]が
“00”の時は、Dout [127:96]、FA[3:2]が
“01”の時は、Dout [95:64] 、FA[3:2]が
“10”の時は、Dout [63:32] 、FA[3:2]が
“11”の時は、Dout [31:0]を選択し、バッファリー
ド信号BRが“1”の時、フェッチアドレスFAの下位
2ビットFA[3:2]が“00”の時は、ラインバッ
ファ0の出力、FA[3:2]が“01”の時は、ライ
ンバッファ1の出力、FA[3:2]が“10”の時
は、ラインバッファ2の出力、FA[3:2]が“1
1”の時は、ラインバッファ3の出力を選択して、CP
U(to CPU(Data))に出力する。停止条件が満たされなけ
れば、キャッシュへの読み込み継続フラグRCFが
“1”を示して、順々に、次のラインも、その次のライ
ンもタグメモリ10及びデータメモリ18に書き込む。
この時、後述するように、同時にフェッチアドレスFA
が示す命令がラインバッファ17上にあるか否かを判定
して、ラインバッファ17上にあれば、CPU(to CPU
(Data))へその命令を供給する。停止条件が満たされる
と、次のラインはラインバッファ17には読み込まな
い。そして、フェッチアドレスレジスタ1に保持された
フェッチアドレスFAは、再び、タグメモリ10に供給
されて、CMP12でヒット・ミスヒットが判定され
る。ヒットした場合、データメモリ18から該当する命
令を読み出して、CPU(to CPU(Data))へその命令を供
給する。そして、次のアドレスがフェッチアドレスレジ
スタ1に保持されて、図4に示すと同様に行う。ミスヒ
ットした場合は、上述したように、メモリからの読み込
みが行われる。
【0016】図8は、キャッシュへの読み込みとライン
バッファからのフェッチのタイミングを示す図である。
図8に示すように、一つ前のラインの第4ワード0x0000
122cがラインバッファ3に読み込まれると、タグメモリ
10及びデータメモリ18にラインバッファ17に保持
された1ラインの情報が書き込まれ、次のラインの第1
ワード0x00001230、第2ワード0x00001234、第3ワード
0x00001238、及び第4ワード0x0000123cの命令がライン
バッファ17にメモリから読み出される。このラインを
ラインバッファ17に読み込み中に停止条件が満たされ
て、キャッシュへの読み込み継続フラグRCFが“0”
になると、そのラインの第4ワード0x0000123cがライン
バッファ3に読み込まれ、そして、タグメモリ10及び
データメモリ18にその1ラインの情報が書き込まれた
後、ラインバッファ17への読み出しが停止して、以降
は、キャッシュからの読み込みが行われる。尚、図8中
のLBV1、LBV2、及びモードMODEについては、後
述する。図8において、ヒット信号HITが複数クロッ
クに1回しかアサートされないのは次の理由による。C
PUは、命令をフェッチすると、直ちに、フェッチアド
レス保持信号LによってフェッチアドレスFAを更新し
て、次の命令フェッチを要求する。しかし、メモリアク
セスには、何クロックもかかるのが普通であり、メモリ
アクセスが完了するまでは、ラインバッファ17にはヒ
ットしない。
バッファからのフェッチのタイミングを示す図である。
図8に示すように、一つ前のラインの第4ワード0x0000
122cがラインバッファ3に読み込まれると、タグメモリ
10及びデータメモリ18にラインバッファ17に保持
された1ラインの情報が書き込まれ、次のラインの第1
ワード0x00001230、第2ワード0x00001234、第3ワード
0x00001238、及び第4ワード0x0000123cの命令がライン
バッファ17にメモリから読み出される。このラインを
ラインバッファ17に読み込み中に停止条件が満たされ
て、キャッシュへの読み込み継続フラグRCFが“0”
になると、そのラインの第4ワード0x0000123cがライン
バッファ3に読み込まれ、そして、タグメモリ10及び
データメモリ18にその1ラインの情報が書き込まれた
後、ラインバッファ17への読み出しが停止して、以降
は、キャッシュからの読み込みが行われる。尚、図8中
のLBV1、LBV2、及びモードMODEについては、後
述する。図8において、ヒット信号HITが複数クロッ
クに1回しかアサートされないのは次の理由による。C
PUは、命令をフェッチすると、直ちに、フェッチアド
レス保持信号LによってフェッチアドレスFAを更新し
て、次の命令フェッチを要求する。しかし、メモリアク
セスには、何クロックもかかるのが普通であり、メモリ
アクセスが完了するまでは、ラインバッファ17にはヒ
ットしない。
【0017】また、CPUからのフェッチアドレスFA
の要求が何等かの理由によって遅れると、ラインバッフ
ァ17の命令がデータメモリ18に書き込まれて、ライ
ンバッファ17に新たなラインの命令が読み込まれ上書
きされて行き、フェッチアドレスFAが要求される前に
上書きされた場合には、そのラインバッファ17はヒッ
トしない。さらに、ラインバッファ17への読み込みを
停止している場合は、ラインバッファ17上でヒットを
判定する必要はない。そこで、LBV1、LBV2及び
制御回路32により状態の遷移を制御して、その状態を
モードレジスタMRに保持して、LBV1、LBV2、
及びモードレジスタMRが保持するモードMODEから、ラ
インバッファ有効判定回路31は、ラインバッファ17
上でフェッチアドレスFAがヒットしたか否かを判定し
て、ヒットすれば、ヒット信号HITをアサートし、ヒ
ットしなければ、ヒット信号HITをネゲートする。以
下、ラインバッファ有効フラグ13、ラインバッファ有
効判定回路31、及び制御回路32によるモードレジス
タMRへのモードMODEの設定の動作を説明する。図9及
び図10は、上記動作を説明するためのタイムチャート
である。
の要求が何等かの理由によって遅れると、ラインバッフ
ァ17の命令がデータメモリ18に書き込まれて、ライ
ンバッファ17に新たなラインの命令が読み込まれ上書
きされて行き、フェッチアドレスFAが要求される前に
上書きされた場合には、そのラインバッファ17はヒッ
トしない。さらに、ラインバッファ17への読み込みを
停止している場合は、ラインバッファ17上でヒットを
判定する必要はない。そこで、LBV1、LBV2及び
制御回路32により状態の遷移を制御して、その状態を
モードレジスタMRに保持して、LBV1、LBV2、
及びモードレジスタMRが保持するモードMODEから、ラ
インバッファ有効判定回路31は、ラインバッファ17
上でフェッチアドレスFAがヒットしたか否かを判定し
て、ヒットすれば、ヒット信号HITをアサートし、ヒ
ットしなければ、ヒット信号HITをネゲートする。以
下、ラインバッファ有効フラグ13、ラインバッファ有
効判定回路31、及び制御回路32によるモードレジス
タMRへのモードMODEの設定の動作を説明する。図9及
び図10は、上記動作を説明するためのタイムチャート
である。
【0018】図9は、フェッチアドレスFAがA〜A+
18,Bの場合であり、フェッチアドレスA+cにおい
て何らかの理由によってフェッチが1クロック遅れた
(1クロックだけのパイプラインストール)ので、次の
フェッチ命令(A+10)が遅れて要求され、フェッチ
アドレスBで分岐したため、現在アクセス中のラインで
終了する場合を示している。図10は、フェッチアドレ
スFAがA〜A+10の場合であり、フェッチアドレス
A+10において、パイプラインストールが4クロック
以上続いてしまい、ラインバッファ17からフェッチす
る前に上書きされてしまった場合を示している。図9及
び図10に示すように、フェッチアドレスAの命令がデ
ータメモリ18にない(ミスヒットだった)場合、その
ミスヒットだった命令を含む1ラインの第1ワードから
メモリのアクセスを開始して、ラインバッファ17に読
み込んで行く。この時、ラインバッファ有効フラグ13
のLBV1とLBV2は、次のように変化する。
18,Bの場合であり、フェッチアドレスA+cにおい
て何らかの理由によってフェッチが1クロック遅れた
(1クロックだけのパイプラインストール)ので、次の
フェッチ命令(A+10)が遅れて要求され、フェッチ
アドレスBで分岐したため、現在アクセス中のラインで
終了する場合を示している。図10は、フェッチアドレ
スFAがA〜A+10の場合であり、フェッチアドレス
A+10において、パイプラインストールが4クロック
以上続いてしまい、ラインバッファ17からフェッチす
る前に上書きされてしまった場合を示している。図9及
び図10に示すように、フェッチアドレスAの命令がデ
ータメモリ18にない(ミスヒットだった)場合、その
ミスヒットだった命令を含む1ラインの第1ワードから
メモリのアクセスを開始して、ラインバッファ17に読
み込んで行く。この時、ラインバッファ有効フラグ13
のLBV1とLBV2は、次のように変化する。
【0019】例えば、キャッシュからの命令フェッチを
行なっている場合には、これらのLBV1及びLBV2
のビットを常にリセットしておいて、キャッシュのミス
ヒット後にリセットを外す。これにより、キャッシュミ
スヒットすると、LBV1とLBV2の初期値は、共に
全てのビットが0になる。命令がメモリから読み出され
て、順次、ラインバッファ17の第1〜第4までに保持
されると、その保持されたLBV1のビットは、有効を
示す“1”となり、保持されたラインバッファ17に対
応するLBV2のビットは無効を示す“0”になる。図
9及び図10に示すように、例えば、フェッチアドレス
Aのデータがラインバッファ0に読み込まれると、LB
V1=“1000”、LBV2=“0000”となり、
フェッチアドレスA+1のデータがラインバッファ1に
読み込まれると、LBV1=“1100”、LBV2=
“0000”となる。第4ワードまでラインバッファ1
7に保持されると、メモリアドレスレジスタ5に保持さ
れたメモリアドレスMAは次のラインを示すので、LB
V1=“0000”、LBV2=“1111”となる。
行なっている場合には、これらのLBV1及びLBV2
のビットを常にリセットしておいて、キャッシュのミス
ヒット後にリセットを外す。これにより、キャッシュミ
スヒットすると、LBV1とLBV2の初期値は、共に
全てのビットが0になる。命令がメモリから読み出され
て、順次、ラインバッファ17の第1〜第4までに保持
されると、その保持されたLBV1のビットは、有効を
示す“1”となり、保持されたラインバッファ17に対
応するLBV2のビットは無効を示す“0”になる。図
9及び図10に示すように、例えば、フェッチアドレス
Aのデータがラインバッファ0に読み込まれると、LB
V1=“1000”、LBV2=“0000”となり、
フェッチアドレスA+1のデータがラインバッファ1に
読み込まれると、LBV1=“1100”、LBV2=
“0000”となる。第4ワードまでラインバッファ1
7に保持されると、メモリアドレスレジスタ5に保持さ
れたメモリアドレスMAは次のラインを示すので、LB
V1=“0000”、LBV2=“1111”となる。
【0020】図9及び図10に示すように、例えば、フ
ェッチアドレスA〜A+3のデータがラインバッファ1
7に保持されると、LBV1=“0000”、LBV2
=“1111”となる。続いて、次の1ラインの命令が
メモリより順次読み出されて、前の1ラインのラインバ
ッファ17に読み込まれていたデータが上書きされる
と、上書きしたラインバッファ17に対応するLBV1
のビットが有効を示す“1”となり、上書きされたLB
V2のビットは無効を示す“0”になる。図9及び図1
0に示すように、例えば、フェッチアドレスA+10の
データがラインバッファ0に読み込まれると、LBV1
=“1000”、LBV2=“0111”となり、LB
V2のビット値が0に対応するラインバッファ0が上書
きされたことを示している。一方、制御回路32は、以
下のモードレジスタMRからモードMODEを出力する。
ェッチアドレスA〜A+3のデータがラインバッファ1
7に保持されると、LBV1=“0000”、LBV2
=“1111”となる。続いて、次の1ラインの命令が
メモリより順次読み出されて、前の1ラインのラインバ
ッファ17に読み込まれていたデータが上書きされる
と、上書きしたラインバッファ17に対応するLBV1
のビットが有効を示す“1”となり、上書きされたLB
V2のビットは無効を示す“0”になる。図9及び図1
0に示すように、例えば、フェッチアドレスA+10の
データがラインバッファ0に読み込まれると、LBV1
=“1000”、LBV2=“0111”となり、LB
V2のビット値が0に対応するラインバッファ0が上書
きされたことを示している。一方、制御回路32は、以
下のモードレジスタMRからモードMODEを出力する。
【0021】図11は、モード状態の遷移を示すモード
状態遷移図である。図11に示すように、キャッシュミ
スした直後は、状態S0(モードMODE=“0”)であ
る。この状態S0は、フェッチアドレスFAがラインバ
ッファ17に読み込み中のラインと同じラインにある命
令を指していることを示す。分岐信号BによりCPUか
ら(from CPU(Address)) のアドレスを選択するために、
分岐信号Bがアサートされると、状態S0あるいは状態
S1から状態S2(例えば、図9ではモードMODE=
“2”)に遷移する。この状態S2は、フェッチアドレ
スFAがラインバッファ17に読み込み中のラインとま
ったく違う命令を指していること、つまりフェッチアド
レスFAが示すラインとラインバッファ17に読み込み
中のラインではなく、かつ、フェッチアドレスFAが示
す命令がラインバッファ17に存在しないことを示す。
モードMODEが状態S0の時に、第4ワードまでラインバ
ッファ17に保持(図中では、LTLB4と表記してい
る。制御回路32内では、メモリからの読み込み制御を
行っているので、ラインバッファ17の第4ワードに読
み込まれるタイミングは、制御回路32により制御され
る)すると、状態S1(例えば、モードMODE=“1”)
に遷移する。
状態遷移図である。図11に示すように、キャッシュミ
スした直後は、状態S0(モードMODE=“0”)であ
る。この状態S0は、フェッチアドレスFAがラインバ
ッファ17に読み込み中のラインと同じラインにある命
令を指していることを示す。分岐信号BによりCPUか
ら(from CPU(Address)) のアドレスを選択するために、
分岐信号Bがアサートされると、状態S0あるいは状態
S1から状態S2(例えば、図9ではモードMODE=
“2”)に遷移する。この状態S2は、フェッチアドレ
スFAがラインバッファ17に読み込み中のラインとま
ったく違う命令を指していること、つまりフェッチアド
レスFAが示すラインとラインバッファ17に読み込み
中のラインではなく、かつ、フェッチアドレスFAが示
す命令がラインバッファ17に存在しないことを示す。
モードMODEが状態S0の時に、第4ワードまでラインバ
ッファ17に保持(図中では、LTLB4と表記してい
る。制御回路32内では、メモリからの読み込み制御を
行っているので、ラインバッファ17の第4ワードに読
み込まれるタイミングは、制御回路32により制御され
る)すると、状態S1(例えば、モードMODE=“1”)
に遷移する。
【0022】この状態S1は、フェッチアドレスFAが
ラインバッファ17に読み込み中のラインの一つ前のラ
インにある命令を指していることを示す。このような状
態は、ラインバッファ17の書き込みに対し、命令フェ
ッチが1クロック以上遅れることにより生じる。例え
ば、図9中のフェッチアドレスA+cがそのような場合
であり、A+cにおいて、モードMODEが状態S0から状
態S1に遷移する。モードMODEが状態S1の時に、分岐
信号BがアサートされずにフェッチアドレスFAの下位
2ビット(FA [3:2])が“00”に変化する
と、状態S0に変化する。これは、フェッチアドレスF
Aがラインバッファ17へ読み込んでいるラインと同じ
ラインを指すためである。モードMODEが状態S1の時
に、フエッチアドレスFAの下位2ビットが指すLBV
2のビット(図7中では、LBV2[FA[3:2]]
で表記している)が“0”に変すると、状態S2に遷移
する。また、モードMODEが状態S1の時に、第4ワード
までラインバッファ17に保持されると、状態S2(例
えば、図10ではモードMODE=“3”)に遷移する。こ
の状態S2は、フェッチアドレスFAに示される命令を
ラインバッファ17にある命令を読む前に、新しい命令
でラインバッファ17が書き換えられてしまったこと、
つまりフェッチアドレスFAが示すラインと、ラインバ
ッファ17に読み込み中のラインではなく、かつ、フェ
ッチアドレスFAが示す命令がラインバッファ17にな
いことを示す。
ラインバッファ17に読み込み中のラインの一つ前のラ
インにある命令を指していることを示す。このような状
態は、ラインバッファ17の書き込みに対し、命令フェ
ッチが1クロック以上遅れることにより生じる。例え
ば、図9中のフェッチアドレスA+cがそのような場合
であり、A+cにおいて、モードMODEが状態S0から状
態S1に遷移する。モードMODEが状態S1の時に、分岐
信号BがアサートされずにフェッチアドレスFAの下位
2ビット(FA [3:2])が“00”に変化する
と、状態S0に変化する。これは、フェッチアドレスF
Aがラインバッファ17へ読み込んでいるラインと同じ
ラインを指すためである。モードMODEが状態S1の時
に、フエッチアドレスFAの下位2ビットが指すLBV
2のビット(図7中では、LBV2[FA[3:2]]
で表記している)が“0”に変すると、状態S2に遷移
する。また、モードMODEが状態S1の時に、第4ワード
までラインバッファ17に保持されると、状態S2(例
えば、図10ではモードMODE=“3”)に遷移する。こ
の状態S2は、フェッチアドレスFAに示される命令を
ラインバッファ17にある命令を読む前に、新しい命令
でラインバッファ17が書き換えられてしまったこと、
つまりフェッチアドレスFAが示すラインと、ラインバ
ッファ17に読み込み中のラインではなく、かつ、フェ
ッチアドレスFAが示す命令がラインバッファ17にな
いことを示す。
【0023】図10において、フェッチアドレスA+1
0でパイプラインストールなどにより、命令フェッチが
持たされる場合は、ラインバッファ0に保持されていた
フェッチアドレスA+10の命令が、A+20の命令に
よって書き換えられてしまう。この時、モードMODEが状
態S2に遷移するので、フェッチアドレスA+10のラ
インがラインバッファ17にある命令を読む前に、新し
い命令でラインバッファ17が書き換えられてしまった
ことが分かる。状態S2に遷移した場合、制御回路32
のキャッシュへの読み込み継続フラグRCFがクリアさ
れ、現在読み込み中のラインの読み込みが完了すると、
それ以上の読み込みを継続しない。そして、終了、例え
ば、状態S0に遷移する。キャッシュへの読み込み継続
フラグRCFがクリアされる条件としては、以下のもの
がある。命令デコーダ20の命令デコードの結果、無条
件分岐命令があったので、これ以上の読み込みを中止す
る場合と、次のラインがキャッシュメモリにある場合
と、上述したように、モードMODEが状態S2に遷移した
場合とである。ラインバッファ有効判定回路31は、ラ
インバッファ有効フラグ13とモードMODEとを参照し
て、以下に示すようにヒット信号HITをアサートもし
くはネゲートする。
0でパイプラインストールなどにより、命令フェッチが
持たされる場合は、ラインバッファ0に保持されていた
フェッチアドレスA+10の命令が、A+20の命令に
よって書き換えられてしまう。この時、モードMODEが状
態S2に遷移するので、フェッチアドレスA+10のラ
インがラインバッファ17にある命令を読む前に、新し
い命令でラインバッファ17が書き換えられてしまった
ことが分かる。状態S2に遷移した場合、制御回路32
のキャッシュへの読み込み継続フラグRCFがクリアさ
れ、現在読み込み中のラインの読み込みが完了すると、
それ以上の読み込みを継続しない。そして、終了、例え
ば、状態S0に遷移する。キャッシュへの読み込み継続
フラグRCFがクリアされる条件としては、以下のもの
がある。命令デコーダ20の命令デコードの結果、無条
件分岐命令があったので、これ以上の読み込みを中止す
る場合と、次のラインがキャッシュメモリにある場合
と、上述したように、モードMODEが状態S2に遷移した
場合とである。ラインバッファ有効判定回路31は、ラ
インバッファ有効フラグ13とモードMODEとを参照し
て、以下に示すようにヒット信号HITをアサートもし
くはネゲートする。
【0024】図12は、図1中のラインバッファ有効判
定回路31の構成を示す図であり、Verilog-HDL 言語で
記述したものである。以下、図12を参照しつつ、ライ
ンバッファ有効判定回路31の動作を説明する。モード
MODEが状態S0の場合、フェッチアドレスFAの下位2
ビットFA[3:2]が指すLBV1のビットが“1”
ならば、フェッチアドレスFAの指す命令がラインバッ
ファ17に保持されているので、ヒット信号HITをア
サートする。フェッチアドレスFAの下位2ビットFA
[3:2]が指すLBV1のビットが“0”になるの
は、例えば、メモリからの読み出しに何クロックもかか
り、フェッチアドレスFAの示すアドレスの命令がまだ
ラインバッファ17に読み込まれていないことを意味す
る。図8において、ワード0x00001230にフェッチアドレ
スFAが変化して直ちに、ヒット信号HITはアサート
されない。LBV1が“0000”から“1000”に
変化すると(つまり、LBV1[FA[3:2]]が
“1”)、ヒット信号HITがアサートされる。モード
MODEが状態S1の場合、フェッチアドレスFAの指す命
令がラインバッファ17のいずれかに保持されているの
で、ヒット信号HITをアサートする。図9において
は、フェッチアドレスA+8、A+10の命令がライン
バッファ17にあるので、ヒット信号HITがアサート
され、図10においては、フェッチアドレスA+cの命
令がラインバッファ17にあるので、ヒット信号HIT
がアサートされる。
定回路31の構成を示す図であり、Verilog-HDL 言語で
記述したものである。以下、図12を参照しつつ、ライ
ンバッファ有効判定回路31の動作を説明する。モード
MODEが状態S0の場合、フェッチアドレスFAの下位2
ビットFA[3:2]が指すLBV1のビットが“1”
ならば、フェッチアドレスFAの指す命令がラインバッ
ファ17に保持されているので、ヒット信号HITをア
サートする。フェッチアドレスFAの下位2ビットFA
[3:2]が指すLBV1のビットが“0”になるの
は、例えば、メモリからの読み出しに何クロックもかか
り、フェッチアドレスFAの示すアドレスの命令がまだ
ラインバッファ17に読み込まれていないことを意味す
る。図8において、ワード0x00001230にフェッチアドレ
スFAが変化して直ちに、ヒット信号HITはアサート
されない。LBV1が“0000”から“1000”に
変化すると(つまり、LBV1[FA[3:2]]が
“1”)、ヒット信号HITがアサートされる。モード
MODEが状態S1の場合、フェッチアドレスFAの指す命
令がラインバッファ17のいずれかに保持されているの
で、ヒット信号HITをアサートする。図9において
は、フェッチアドレスA+8、A+10の命令がライン
バッファ17にあるので、ヒット信号HITがアサート
され、図10においては、フェッチアドレスA+cの命
令がラインバッファ17にあるので、ヒット信号HIT
がアサートされる。
【0025】上記以外の場合、フェッチアドレスFAの
指す命令がラインバッファ17に保持されていないの
で、ヒット信号HITをネゲートする。図9において
は、フェッチアドレスA+1cの命令がフェッチアドレ
スBへの分岐命令とすると、命令デコーダ20によりそ
の命令がデコードされて、モードMODEが状態S2に遷移
した場合である。図10においては、フェッチアドレス
A+10がパイプラインストームなどにより、ラインバ
ッファ0が保持するアドレスA+10の命令が、アドレ
スA+20の命令により書き換えられて、モードMODEが
状態S2に遷移した場合である。以上説明したように、
本第1の実施形態によれば、従来のスライドバッファタ
グ11として用いる28ビットのレジスタ、ヒット・ミ
スヒットを判定する二つの28ビットのCMP14,1
5といくつかの組み合わせ回路が、モードMODEとして用
いる2ビットのモードレジスタMR、及びラインバッフ
ァ17の有効無効を判断するラインバッファ有効判定回
路31のわずかな組み合わせ回路に置き換わり、大幅な
回路の削減が可能である。
指す命令がラインバッファ17に保持されていないの
で、ヒット信号HITをネゲートする。図9において
は、フェッチアドレスA+1cの命令がフェッチアドレ
スBへの分岐命令とすると、命令デコーダ20によりそ
の命令がデコードされて、モードMODEが状態S2に遷移
した場合である。図10においては、フェッチアドレス
A+10がパイプラインストームなどにより、ラインバ
ッファ0が保持するアドレスA+10の命令が、アドレ
スA+20の命令により書き換えられて、モードMODEが
状態S2に遷移した場合である。以上説明したように、
本第1の実施形態によれば、従来のスライドバッファタ
グ11として用いる28ビットのレジスタ、ヒット・ミ
スヒットを判定する二つの28ビットのCMP14,1
5といくつかの組み合わせ回路が、モードMODEとして用
いる2ビットのモードレジスタMR、及びラインバッフ
ァ17の有効無効を判断するラインバッファ有効判定回
路31のわずかな組み合わせ回路に置き換わり、大幅な
回路の削減が可能である。
【0026】第2の実施形態 図13は、本発明の第2の実施形態の命令キャッシュを
示す構成図であり、図1中の要素と共通する要素には共
通の符号を付してある。本発明の第2の実施形態の命令
キャッシュが第1の実施形態の命令キャッシュと異なる
点は、ラインバッファ有効フラグ13の代わりに、新た
にメモリから読み込んだ命令を次にどこに置くかを示す
バッファ境界レジスタ51を2ビットで構成して回路構
成を簡単にしたことである。即ち、本第2の実施形態の
命令キャッシュは、フェッチアドレスレジスタ1、IN
C2、MUX3,4、メモリアドレスレジスタ5、キャ
ッシュアドレスレジスタ7、INC8、MUX9、タグ
メモリ10、CMP12、MUX16、ラインバッファ
17、データメモリ18、MUX19、命令デコーダ2
0、バッファ境界レジスタ51、ラインバッファ有効判
定回路52、及び制御回路53とを備えている。バッフ
ァ境界レジスタ51は、2ビットのレジスタである。バ
ッファ境界レジスタ51の出力は、ラインバッファ有効
判定回路52及び制御回路53の入力に接続されてい
る。フェッチアドレスFAの下位2ビットFA[3:
2]は、ラインバッファ有効判定回路52及び制御回路
53の入力に接続されている。モードレジスタMRの出
力であるモードMODEは、ラインバッファ有効判定回路5
2の入力に接続されている。
示す構成図であり、図1中の要素と共通する要素には共
通の符号を付してある。本発明の第2の実施形態の命令
キャッシュが第1の実施形態の命令キャッシュと異なる
点は、ラインバッファ有効フラグ13の代わりに、新た
にメモリから読み込んだ命令を次にどこに置くかを示す
バッファ境界レジスタ51を2ビットで構成して回路構
成を簡単にしたことである。即ち、本第2の実施形態の
命令キャッシュは、フェッチアドレスレジスタ1、IN
C2、MUX3,4、メモリアドレスレジスタ5、キャ
ッシュアドレスレジスタ7、INC8、MUX9、タグ
メモリ10、CMP12、MUX16、ラインバッファ
17、データメモリ18、MUX19、命令デコーダ2
0、バッファ境界レジスタ51、ラインバッファ有効判
定回路52、及び制御回路53とを備えている。バッフ
ァ境界レジスタ51は、2ビットのレジスタである。バ
ッファ境界レジスタ51の出力は、ラインバッファ有効
判定回路52及び制御回路53の入力に接続されてい
る。フェッチアドレスFAの下位2ビットFA[3:
2]は、ラインバッファ有効判定回路52及び制御回路
53の入力に接続されている。モードレジスタMRの出
力であるモードMODEは、ラインバッファ有効判定回路5
2の入力に接続されている。
【0027】以下、図13の動作を説明する。第2の実
施形態の命令キャッシュは、第1の実施形態の命令キャ
ッシュとは、バッファ境界レジスタ51、ラインバッフ
ァ有効判定回路52、及び制御回路53が異なるので、
この異なる部分の動作を説明する。バッファ境界レジス
タ51は、次の読み込むラインバッファ17の位置(つ
まり、4個のラインバッファ0〜3のうちどれである
か)を示すレジスタである。本第2の実施形態では、1
ラインが4ワードの場合を示しているので、読み込む位
置(以下、LBWPと表記する)は、0〜3を示すこと
ができる2ビットで指定できる。このバッファ境界レジ
スタ51は、以下のように動作する。キャッシュミスヒ
ットした直後の初期値は0である。ラインバッファ0に
第1ワードが読み込まれれば、1になる。ラインバッフ
ァ1に第2ワードが読み込まれば、2になる。ラインバ
ッファ2に第3ワードが読み込まれば、3になる。ライ
ンバッファ3に第4ワードが読み込まれば、0になる。
以後、これを繰り返す。このバッファ境界レジスタ51
を使用した場合、モードMODEは、次のように遷移する。
図14は、モード状態の遷移を示すモード状態遷移図で
ある。
施形態の命令キャッシュは、第1の実施形態の命令キャ
ッシュとは、バッファ境界レジスタ51、ラインバッフ
ァ有効判定回路52、及び制御回路53が異なるので、
この異なる部分の動作を説明する。バッファ境界レジス
タ51は、次の読み込むラインバッファ17の位置(つ
まり、4個のラインバッファ0〜3のうちどれである
か)を示すレジスタである。本第2の実施形態では、1
ラインが4ワードの場合を示しているので、読み込む位
置(以下、LBWPと表記する)は、0〜3を示すこと
ができる2ビットで指定できる。このバッファ境界レジ
スタ51は、以下のように動作する。キャッシュミスヒ
ットした直後の初期値は0である。ラインバッファ0に
第1ワードが読み込まれれば、1になる。ラインバッフ
ァ1に第2ワードが読み込まれば、2になる。ラインバ
ッファ2に第3ワードが読み込まれば、3になる。ライ
ンバッファ3に第4ワードが読み込まれば、0になる。
以後、これを繰り返す。このバッファ境界レジスタ51
を使用した場合、モードMODEは、次のように遷移する。
図14は、モード状態の遷移を示すモード状態遷移図で
ある。
【0028】以下、この図を参照しつつ、モードMODEの
遷移の説明をする。図14に示すように、キャッシュミ
スした直後は、状態S0(モードMODE=“0”)であ
る。この状態S0は、フェッチアドレスFAがラインバ
ッファ17に読み込み中のラインと同じラインにある命
令を指していることを示す。分岐などにより分岐信号B
によりCPUから(from CPU(Address)) のアドレスを選
択するために、分岐信号Bがアサートされると、状態S
0あるいは状態S1から状態S2(例えば、モードMODE
=“2”)に遷移する。この状態S2は、フェッチアド
レスFAがラインバッファ17に読み込み中のラインと
まったく違う命令を指していること、つまり、フェッチ
アドレスFAが示すラインとラインバッファ17に読み
込み中のラインではなく、かつ、フェッチアドレスFA
が示す命令がラインバッファ17にないことを示す。モ
ードMODEが状態S0の時に、第4ワードまでラインバッ
ファ17に保持(図中では、LTLB4と表記してい
る)したことを示す、LBWPの値が3から0になる
と、状態S1(例えば、モードMODE=“1”) に遷移す
る。モードMODEが状態S1の時に、フェッチアドレスF
Aの下位2ビット(FA[3:2])が“00”に変化
すると、状態S0に変化する。これは、フェッチアドレ
スFAがラインバッファ17へ読み込んでいるラインと
同じラインを指すためである。
遷移の説明をする。図14に示すように、キャッシュミ
スした直後は、状態S0(モードMODE=“0”)であ
る。この状態S0は、フェッチアドレスFAがラインバ
ッファ17に読み込み中のラインと同じラインにある命
令を指していることを示す。分岐などにより分岐信号B
によりCPUから(from CPU(Address)) のアドレスを選
択するために、分岐信号Bがアサートされると、状態S
0あるいは状態S1から状態S2(例えば、モードMODE
=“2”)に遷移する。この状態S2は、フェッチアド
レスFAがラインバッファ17に読み込み中のラインと
まったく違う命令を指していること、つまり、フェッチ
アドレスFAが示すラインとラインバッファ17に読み
込み中のラインではなく、かつ、フェッチアドレスFA
が示す命令がラインバッファ17にないことを示す。モ
ードMODEが状態S0の時に、第4ワードまでラインバッ
ファ17に保持(図中では、LTLB4と表記してい
る)したことを示す、LBWPの値が3から0になる
と、状態S1(例えば、モードMODE=“1”) に遷移す
る。モードMODEが状態S1の時に、フェッチアドレスF
Aの下位2ビット(FA[3:2])が“00”に変化
すると、状態S0に変化する。これは、フェッチアドレ
スFAがラインバッファ17へ読み込んでいるラインと
同じラインを指すためである。
【0029】モードMODEが状態S1の時に、フェッチア
ドレスFAの下位2ビットFA[3:2]がLBWPの
指す値より小さくなると、状態S2に遷移する。また、
モードMODEが状態S1の時に、第4ワードまでラインバ
ッファ17に保持されると、状態S2に遷移する。この
状態S2は、フェッチアドレスFAがラインバッファ1
7にある命令を読む前に、新しい命令でラインバッファ
17が書き換えられてしまったこと、つまり、フェッチ
アドレスFAが示すラインとラインバッファ17に読み
込み中のラインではなく、かつ、フェッチアドレスFA
が示す命令がラインバッファ17にないことを示す。状
態S2に遷移した場合、制御回路53のキャッシュへの
読み込み継続フラグRCFがクリアされ、現在読み込み
中のラインの読み込みが完了すると、それ以上の読み込
みを継続しない。そして、終了、例えば、状態S0に遷
移する。ラインバッファ有効判定回路52は、バッファ
境界レジスタ51とモードレジスタMRに設定されたモ
ードMODEとを参照して、以下に示すようにヒット信号H
ITをアサートもしくはネゲートする。図15は、図1
3中のラインバッファ有効判定回路52の構成を示す図
であり、Verilog-HDL 言語で記述したものである。
ドレスFAの下位2ビットFA[3:2]がLBWPの
指す値より小さくなると、状態S2に遷移する。また、
モードMODEが状態S1の時に、第4ワードまでラインバ
ッファ17に保持されると、状態S2に遷移する。この
状態S2は、フェッチアドレスFAがラインバッファ1
7にある命令を読む前に、新しい命令でラインバッファ
17が書き換えられてしまったこと、つまり、フェッチ
アドレスFAが示すラインとラインバッファ17に読み
込み中のラインではなく、かつ、フェッチアドレスFA
が示す命令がラインバッファ17にないことを示す。状
態S2に遷移した場合、制御回路53のキャッシュへの
読み込み継続フラグRCFがクリアされ、現在読み込み
中のラインの読み込みが完了すると、それ以上の読み込
みを継続しない。そして、終了、例えば、状態S0に遷
移する。ラインバッファ有効判定回路52は、バッファ
境界レジスタ51とモードレジスタMRに設定されたモ
ードMODEとを参照して、以下に示すようにヒット信号H
ITをアサートもしくはネゲートする。図15は、図1
3中のラインバッファ有効判定回路52の構成を示す図
であり、Verilog-HDL 言語で記述したものである。
【0030】以下、図15を参照しつつ、ラインバッフ
ァ有効判定回路52の動作を説明する。モードMODEが0
の場合、フェッチアドレスFAの下位2ビットFA
[3:2]がLBWPよりも小さければ、フェッチアド
レスFAの指す命令がラインバッファ17に保持されて
いるので、ヒット信号HITをアサートする。モードMO
DEが1の場合、フェッチアドレスFAの指す命令がライ
ンバッファ17のいずれかに保持されているので、ヒッ
ト信号HITをアサートする。上記以外の場合、フェッ
チアドレスFAの指す命令がラインバッファ17に保持
されていないので、ヒット信号HITをネゲートする。
以上説明したように、本第2の実施形態によれば、バッ
ファ境界レジスタ51を2ビットで構成したので、第1
の実施形態よりも更に構成が簡単になる。また、1ライ
ンの命令のラインバッファ17への読み込みを制御する
ために、制御回路53内に次に読み込んだ命令を置くラ
インバッファ17の位置を示すレジスタを設けているの
で、このレジスタまたはバッファ境界レジスタ51のど
ちらか一方を削減することができる。
ァ有効判定回路52の動作を説明する。モードMODEが0
の場合、フェッチアドレスFAの下位2ビットFA
[3:2]がLBWPよりも小さければ、フェッチアド
レスFAの指す命令がラインバッファ17に保持されて
いるので、ヒット信号HITをアサートする。モードMO
DEが1の場合、フェッチアドレスFAの指す命令がライ
ンバッファ17のいずれかに保持されているので、ヒッ
ト信号HITをアサートする。上記以外の場合、フェッ
チアドレスFAの指す命令がラインバッファ17に保持
されていないので、ヒット信号HITをネゲートする。
以上説明したように、本第2の実施形態によれば、バッ
ファ境界レジスタ51を2ビットで構成したので、第1
の実施形態よりも更に構成が簡単になる。また、1ライ
ンの命令のラインバッファ17への読み込みを制御する
ために、制御回路53内に次に読み込んだ命令を置くラ
インバッファ17の位置を示すレジスタを設けているの
で、このレジスタまたはバッファ境界レジスタ51のど
ちらか一方を削減することができる。
【0031】なお、本発明は、上記実施形態に限定され
ず、種々の変形が可能である。その変形例としては、例
えば次のようなものがある。 (1) 上記実施形態では、1ラインが4ワードの場合
を説明したが、1ラインが2n の場合にも適用可能であ
り、この場合は、第1の実施形態のLBV1及びLBV
2を2n ビット構成として、フェッチアドレスFAの下
位nビットFA[n−1:2]をラインバッファ有効判
定回路31、及び制御回路32に入力するようにすれば
よい。また、第2の実施形態のバッファ境界レジスタ5
1をnビットで構成すればよい。 (2) 上記実施形態では、命令を32ビットとした
が、8ビット、16ビット、64ビットなどに適用可能
である。例えば、16ビットの場合でも適用可能であ
る。この場合は、フェッチアドレスFAの下位2ビット
をFA[2:1]として、ラインバッファ有効判定回路
31,52、及び制御回路32,53に入力するように
すればよい。
ず、種々の変形が可能である。その変形例としては、例
えば次のようなものがある。 (1) 上記実施形態では、1ラインが4ワードの場合
を説明したが、1ラインが2n の場合にも適用可能であ
り、この場合は、第1の実施形態のLBV1及びLBV
2を2n ビット構成として、フェッチアドレスFAの下
位nビットFA[n−1:2]をラインバッファ有効判
定回路31、及び制御回路32に入力するようにすれば
よい。また、第2の実施形態のバッファ境界レジスタ5
1をnビットで構成すればよい。 (2) 上記実施形態では、命令を32ビットとした
が、8ビット、16ビット、64ビットなどに適用可能
である。例えば、16ビットの場合でも適用可能であ
る。この場合は、フェッチアドレスFAの下位2ビット
をFA[2:1]として、ラインバッファ有効判定回路
31,52、及び制御回路32,53に入力するように
すればよい。
【0032】
【発明の効果】以上詳細に説明したように、第1及び第
2の発明によれば、ラインバッファ有効フラグ又はバッ
ファ境界レジスタと、モードレジスタの値に基づいて、
ラインバッファ有効判定回路によりラインバッファのヒ
ットを判定するようにしたので、回路構成が簡単にな
る。
2の発明によれば、ラインバッファ有効フラグ又はバッ
ファ境界レジスタと、モードレジスタの値に基づいて、
ラインバッファ有効判定回路によりラインバッファのヒ
ットを判定するようにしたので、回路構成が簡単にな
る。
【図1】本発明の第1の実施形態の命令キャッシュの構
成図である。
成図である。
【図2】従来の命令キャッシュの構成図である。
【図3】図1中のラインバッファとデータメモリとMU
Xを示す構成図である。
Xを示す構成図である。
【図4】キャッシュからの命令フェッチを示す図であ
る。
る。
【図5】キャッシュへの読み込み開始を示す図である。
【図6】キャッシュへの読み込みとラインバッファから
のフェッチを示す図である。
のフェッチを示す図である。
【図7】ラインバッファとデータメモリのDout の選択
を示す図である。
を示す図である。
【図8】キャッシュへの読み込みとラインバッファから
のフェッチのタイミングを示す図である。
のフェッチのタイミングを示す図である。
【図9】タイムチャート(その1)である。
【図10】タイムチャート(その2)である。
【図11】モード状態遷移図である。
【図12】図1中のラインバッファ有効判定回路(Veri
log-HDL 言語)の構成を示す図である。
log-HDL 言語)の構成を示す図である。
【図13】本発明の第2の実施形態の命令キャッシュの
構成図である。
構成図である。
【図14】モード状態遷移図である。
【図15】図13中のラインバッファ有効判定回路(Ve
rilog-HDL 言語)の構成を示す図である。
rilog-HDL 言語)の構成を示す図である。
1 フェッチアドレスレジスタ 5 メモリアドレスレジスタ 7 キャッシュアドレスレジスタ 10 タグメモリ 13 ラインバッファ有効フラグ 18 データメモリ 31,52 ラインバッファ有効判定回路 32,53 制御回路51 バッファ境界レジスタ MR モードレジスタ RCF キャッシュへの読み込み継続フラ
グ
グ
フロントページの続き (56)参考文献 特開 平2−61737(JP,A) 特開 昭64−29953(JP,A) 特開 平1−12933(JP,A) 特開 平2−125347(JP,A) 特開 昭63−195751(JP,A) 特開 昭63−249240(JP,A) 特開 昭61−220047(JP,A) 特開 昭54−151331(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/08
Claims (2)
- 【請求項1】 メモリ上の命令のコピーを保持するキャ
ッシュメモリと、 前記キャッシュメモリに書き込むために一時的に前記メ
モリからの2n (n≧1の整数)個の1ラインの命令を
保持する2n 個のラインバッファと、 前記キャッシュメモリに書き込む前の状態を示し、フェ
ッチしようとする命令のアドレスが示すラインの命令が
前記各ラインバッファに保持されて有効であるか否かを
示す2n ビットの第1のラインバッファ有効フラグと、 前記キャッシュメモリに書き込んだ後の状態を示し、前
記各ラインバッファが次のラインの命令で上書きされて
無効であるか否かを示す2n ビットの第2のラインバッ
ファ有効フラグと、 前記フェッチしようとしている命令のアドレスが示すラ
インと前記ラインバッファに読み込み中のラインが一致
することを示す第1の状態と、前記フェッチしようとし
ている命令のアドレスが示すラインが前記ラインバッフ
ァに読み込み中のラインの一つ前のラインであることを
示す第2の状態と、前記フェッチしようとしている命令
のアドレスが示すラインと前記ラインバッファに読み込
み中のラインではなく、かつ、前記フェッチしようとし
ている命令がラインバッファに存在しないことを示す第
3の状態とを保持するモードレジスタと、 前記第1と第2のラインバッファ有効フラグとフェッチ
しようとしているアドレスとに基づいて、前記第1、第
2、第3の状態の遷移を制御する制御回路と、 前記モードレジスタが前記第1の状態を示し、前記ライ
ンバッファ有効フラグがフェッチしようとしている命令
に対応するラインバッファが有効であることを示した
時、又は前記モードレジスタが前記第2の状態を示した
時に、ヒット信号をアサートして、前記モードレジスタ
が前記第3の状態を示した時にヒット信号をネゲートす
るラインバッファ有効判定回路とを、 備えたことを特徴とする命令キャッシュ。 - 【請求項2】 メモリ上の命令のコピーを保持するキャ
ッシュメモリと、 前記キャッシュメモリに書き込むために一時的に前記メ
モリからの2n 個の1ラインの命令を保持する2n 個の
ラインバッファと、 前記どのラインバッファに次の命令を読み込むかその位
置を示すバッファ境界レジスタと、 前記フェッチしようとしている命令のアドレスが示すラ
インと前記ラインバッファに読み込み中のラインが一致
することを示す第1の状態と、前記フェッチしようとし
ている命令のアドレスが示すラインが前記ラインバッフ
ァに読み込み中のラインの一つ前のラインであることを
示す第2の状態と、前記フェッチしようとしている命令
のアドレスが示すラインと前記ラインバッファに読み込
み中のラインではなく、かつ、前記フェッチしようとし
ている命令がすでにラインバッファに存在しないことを
示す第3の状態とを保持するモードレジスタと、 前記バッファ境界ビットとフェッチしようとしているア
ドレスとに基づいて、前記第1、第2、第3の状態の遷
移を制御する制御回路と、 前記モードレジスタが前記第1の状態を示し、前記バッ
ファ境界ビットがフェッチしようとしている命令に対応
するラインバッファに命令が読み込まれており有効であ
ることを示した時、又は前記モードレジスタが前記第2
の状態を示した時にヒット信号をアサートして、前記モ
ードレジスタが前記第3の状態を示した時にヒット信号
をネゲートするラインバッファ有効判定回路とを、 備えたことを特徴とする命令キャッシュ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP32144995A JP3278564B2 (ja) | 1995-12-11 | 1995-12-11 | 命令キャッシュ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP32144995A JP3278564B2 (ja) | 1995-12-11 | 1995-12-11 | 命令キャッシュ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH09160826A JPH09160826A (ja) | 1997-06-20 |
| JP3278564B2 true JP3278564B2 (ja) | 2002-04-30 |
Family
ID=18132689
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP32144995A Expired - Fee Related JP3278564B2 (ja) | 1995-12-11 | 1995-12-11 | 命令キャッシュ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3278564B2 (ja) |
-
1995
- 1995-12-11 JP JP32144995A patent/JP3278564B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH09160826A (ja) | 1997-06-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3871883B2 (ja) | 間接分岐ターゲットを計算するための方法 | |
| AU632324B2 (en) | Multiple instruction preprocessing system with data dependency resolution | |
| US4896259A (en) | Apparatus for storing modifying data prior to selectively storing data to be modified into a register | |
| US8117395B1 (en) | Multi-stage pipeline for cache access | |
| US5701430A (en) | Cross-cache-line compounding algorithm for scism processors | |
| JP3760041B2 (ja) | 分岐予測する情報処理装置 | |
| EP1363189A2 (en) | Apparatus and method for implementing a rom patch using a lockable cache | |
| JP3204323B2 (ja) | キャッシュメモリ内蔵マイクロプロセッサ | |
| KR20010073182A (ko) | 전송을 적재하는 저장 메커니즘 | |
| JPH10232827A (ja) | 先取りキャッシュ書戻しの方法と装置 | |
| US6651162B1 (en) | Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache | |
| JP3919802B2 (ja) | プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法 | |
| US6327643B1 (en) | System and method for cache line replacement | |
| EP0377436A2 (en) | Apparatus and method for increased operand availability in a data processing unit with a store through cache memory unit strategy | |
| EP0730228B1 (en) | ECC protected memory organization with pipelined read-modify-write accesses | |
| JP3278564B2 (ja) | 命令キャッシュ | |
| US5421026A (en) | Data processor for processing instruction after conditional branch instruction at high speed | |
| EP0726524A2 (en) | Protocol and system for performing line-fill addressing during copy-back operation | |
| US5765190A (en) | Cache memory in a data processing system | |
| JP3997404B2 (ja) | キャッシュメモリ及びその制御方法 | |
| EP1318450A2 (en) | Address range checking circuit and method of operation | |
| EP0177712B1 (en) | Masked data fetch and modifying device | |
| JPH08339331A (ja) | キャッシュメモリー | |
| JP3729832B2 (ja) | キャッシュメモリ装置 | |
| JP4111645B2 (ja) | キャッシュミスした後のメモリバスアクセス制御方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20020129 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090215 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090215 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100215 Year of fee payment: 8 |
|
| LAPS | Cancellation because of no payment of annual fees |