JPH07200406A - キャッシュシステム - Google Patents
キャッシュシステムInfo
- Publication number
- JPH07200406A JPH07200406A JP5348760A JP34876093A JPH07200406A JP H07200406 A JPH07200406 A JP H07200406A JP 5348760 A JP5348760 A JP 5348760A JP 34876093 A JP34876093 A JP 34876093A JP H07200406 A JPH07200406 A JP H07200406A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- cache
- memory
- address
- 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
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【目的】CPUの分岐命令実行の性能向上を図る。
【構成】キャッシュコントローラ303は、命令メモリ
302のキャッシュライン内の分岐命令の実行時に、そ
のキャッシュラインに対応するタグメモリ301のエン
トリに分岐先アドレスを登録する。そして、そのキャッ
シャラインの命令が再びフェッチされる段階になると、
キャッシュコントローラ303は、そのキャッシャライ
ンに対応するタグメモリ301のエントリに登録されい
てる分岐先アドレスを検査し、分岐命令の実行に先立っ
て、その分岐先アドレスの命令を含む命令群を主記憶か
ら読み出して命令メモリ301に格納する。したがっ
て、分岐先アドレスの決定処理およびキャッシュリフィ
ル処理を分岐命令の実行に先立って開始できるようにな
り、CPU性能の向上を実現できる。
302のキャッシュライン内の分岐命令の実行時に、そ
のキャッシュラインに対応するタグメモリ301のエン
トリに分岐先アドレスを登録する。そして、そのキャッ
シャラインの命令が再びフェッチされる段階になると、
キャッシュコントローラ303は、そのキャッシャライ
ンに対応するタグメモリ301のエントリに登録されい
てる分岐先アドレスを検査し、分岐命令の実行に先立っ
て、その分岐先アドレスの命令を含む命令群を主記憶か
ら読み出して命令メモリ301に格納する。したがっ
て、分岐先アドレスの決定処理およびキャッシュリフィ
ル処理を分岐命令の実行に先立って開始できるようにな
り、CPU性能の向上を実現できる。
Description
【0001】
【産業上の利用分野】この発明はキャッシュシステムに
関し、特に命令キャッシュを有するキャッシュシステム
に関する。
関し、特に命令キャッシュを有するキャッシュシステム
に関する。
【0002】
【従来の技術】近年、コンピュータアーキテクチャの進
歩に伴い、コンピュータの性能は飛躍的に向上してい
る。特に、半導体技術の発展により、コンピュータのC
PUとして使用されるマイクロプロセッサの性能向上は
目覚ましく、その性能は年々向上している。
歩に伴い、コンピュータの性能は飛躍的に向上してい
る。特に、半導体技術の発展により、コンピュータのC
PUとして使用されるマイクロプロセッサの性能向上は
目覚ましく、その性能は年々向上している。
【0003】最近のCPUにおいては、命令実行処理の
効率を高めるために、命令パイプライン方式が採用され
ているのが普通である。命令パイプライン方式は、命令
の実行を命令フェッチサイクル、デコードサイクル、実
行サイクル、データ書き込みサイクル等の段階に分け、
複数の命令をそれぞれ段階的にオーバーラップして実行
する方式である。この方式では、ある命令の実行完了を
待たずに後続する命令のフェッチを行うために、命令の
先取り処理が行なわれる。命令先取り処理は、将来実行
が予想される命令のフェッチを、前の命令のデコードや
実行と並行して予め行なうものである。
効率を高めるために、命令パイプライン方式が採用され
ているのが普通である。命令パイプライン方式は、命令
の実行を命令フェッチサイクル、デコードサイクル、実
行サイクル、データ書き込みサイクル等の段階に分け、
複数の命令をそれぞれ段階的にオーバーラップして実行
する方式である。この方式では、ある命令の実行完了を
待たずに後続する命令のフェッチを行うために、命令の
先取り処理が行なわれる。命令先取り処理は、将来実行
が予想される命令のフェッチを、前の命令のデコードや
実行と並行して予め行なうものである。
【0004】このようにCPUが複数命令をパイプライ
ンで並行処理するためには、主記憶からの命令読み出
し、および主記憶に対するデータ読み出し/書き込みを
高速に実行することが要求される。
ンで並行処理するためには、主記憶からの命令読み出
し、および主記憶に対するデータ読み出し/書き込みを
高速に実行することが要求される。
【0005】そこで、最近のマイクロプロセッサには、
データキャッシュの他に、それと独立してアクセス可能
な命令キャッシュが設けられている。命令キャッシュは
命令語専用のキャッシュメモリである。このように命令
キャッシュとデータキャッシュを別個にすることによ
り、命令およびデータの双方を同時に高速アクセスする
ことが可能となる。
データキャッシュの他に、それと独立してアクセス可能
な命令キャッシュが設けられている。命令キャッシュは
命令語専用のキャッシュメモリである。このように命令
キャッシュとデータキャッシュを別個にすることによ
り、命令およびデータの双方を同時に高速アクセスする
ことが可能となる。
【0006】このようなマイクロプロセッサをCPUと
して使用した場合においては、命令キャッシュのアクセ
スは次のように行なわれる。
して使用した場合においては、命令キャッシュのアクセ
スは次のように行なわれる。
【0007】すなわち、CPUは、命令フェッチアドレ
スを順次更新して、アドレス順に連続して格納された命
令群を命令キャッシュから1個づつシリアルに読み出
す。通常は、CPUによる命令の実行順序は命令キャッ
シュ内の命令の格納順に一致するので、命令キャッシュ
からの命令の先読みを効率良く行うことができる。
スを順次更新して、アドレス順に連続して格納された命
令群を命令キャッシュから1個づつシリアルに読み出
す。通常は、CPUによる命令の実行順序は命令キャッ
シュ内の命令の格納順に一致するので、命令キャッシュ
からの命令の先読みを効率良く行うことができる。
【0008】しかしながら、CPUによって分岐命令が
実行されるときは、次のような問題が発生する。
実行されるときは、次のような問題が発生する。
【0009】すなわち、分岐命令、特に条件分岐命令の
場合は、その分岐命令が実行されまでその分岐先アドレ
スが確定しない。このため、分岐命令実行前にその分岐
先の命令をフェッチすることができず、分岐先命令のフ
ェッチが遅れる。このような分岐先命令のフェッチの遅
れは、CPUの性能低下を引き起こす大きな原因とな
る。
場合は、その分岐命令が実行されまでその分岐先アドレ
スが確定しない。このため、分岐命令実行前にその分岐
先の命令をフェッチすることができず、分岐先命令のフ
ェッチが遅れる。このような分岐先命令のフェッチの遅
れは、CPUの性能低下を引き起こす大きな原因とな
る。
【0010】従来では、このような分岐命令を原因とす
るCPUの性能低下を改善するための手法としては、分
岐予測と呼ばれる投機的手法が用いられていた。
るCPUの性能低下を改善するための手法としては、分
岐予測と呼ばれる投機的手法が用いられていた。
【0011】分岐予測は、条件分岐命令のコンディショ
ンコードの確定とチェックの結果を待たずして、分岐す
るかしないかをハードウェアが予測して、分岐成立と判
断した場合にはアドレス順に連続した命令ではなく分岐
先の命令を命令キャッシュから読み込む方法である。こ
の分岐予測の方法を使用した場合には、予測が成功すれ
ば分岐先の命令を命令キャッシュから高速に読み込む事
ができ、分岐先命令のフェッチの遅れによるペナルティ
を無くす事ができる。
ンコードの確定とチェックの結果を待たずして、分岐す
るかしないかをハードウェアが予測して、分岐成立と判
断した場合にはアドレス順に連続した命令ではなく分岐
先の命令を命令キャッシュから読み込む方法である。こ
の分岐予測の方法を使用した場合には、予測が成功すれ
ば分岐先の命令を命令キャッシュから高速に読み込む事
ができ、分岐先命令のフェッチの遅れによるペナルティ
を無くす事ができる。
【0012】しかし、たとえ分岐予測が成功しても、キ
ャッシュミスが発生するとCPUによる命令実行は長い
間またされることになる。
ャッシュミスが発生するとCPUによる命令実行は長い
間またされることになる。
【0013】つまり、CPUが分岐命令を実行する段階
になるまではその分岐先アドレスが決定されないので、
命令キャッシュの検索は分岐命令の実行時まで行われな
い。このため、もしその分岐先アドレスがキャッシュミ
スの場合は、その時点で初めてキャッシュリフィルが開
始されることになる。ここで、キャッシュリフィルと
は、主記憶からのデータ転送によって命令キャッシュの
内容を入れ替える操作のことである。
になるまではその分岐先アドレスが決定されないので、
命令キャッシュの検索は分岐命令の実行時まで行われな
い。このため、もしその分岐先アドレスがキャッシュミ
スの場合は、その時点で初めてキャッシュリフィルが開
始されることになる。ここで、キャッシュリフィルと
は、主記憶からのデータ転送によって命令キャッシュの
内容を入れ替える操作のことである。
【0014】一般に、主記憶アクセスには比較的多くの
時間を要する。このため、キャッシュミスが発生すると
分岐先命令をフェッチするために多くの時間を要し、そ
の間CPUはフェッチステージのまま待機されることに
なる。
時間を要する。このため、キャッシュミスが発生すると
分岐先命令をフェッチするために多くの時間を要し、そ
の間CPUはフェッチステージのまま待機されることに
なる。
【0015】また、また従来の分岐予測は、分岐先バッ
ファと呼ばれる連想メモリを含む大規模で複雑なハード
ウェアを必要し、またそのハードウェア制御がたいへん
複雑となる欠点もあった。
ファと呼ばれる連想メモリを含む大規模で複雑なハード
ウェアを必要し、またそのハードウェア制御がたいへん
複雑となる欠点もあった。
【0016】
【発明が解決しようとする課題】従来では、CPUが分
岐命令をフェッチする段階になって初めて分岐先アドレ
スを導出することが可能になり、その分岐先アドレスが
キャッシュミスの場合はその時点で初めてキャッシュリ
フィルが開始される。このため、CPUが分岐先命令を
フェッチするまでに要する長い時間CPUがフェッチス
テージのまま待機されてしまい、これによってCPU性
能が著しく低下される欠点があった。また、分岐予測の
ために分岐バッファを含む大規模で複雑なハードウェア
が必要となり、そのハードウェア制御が繁雑になる欠点
もあった。
岐命令をフェッチする段階になって初めて分岐先アドレ
スを導出することが可能になり、その分岐先アドレスが
キャッシュミスの場合はその時点で初めてキャッシュリ
フィルが開始される。このため、CPUが分岐先命令を
フェッチするまでに要する長い時間CPUがフェッチス
テージのまま待機されてしまい、これによってCPU性
能が著しく低下される欠点があった。また、分岐予測の
ために分岐バッファを含む大規模で複雑なハードウェア
が必要となり、そのハードウェア制御が繁雑になる欠点
もあった。
【0017】この発明はこのような点に鑑みてなされた
もので、命令キャッシュのタグメモリの情報を利用する
ことによって分岐先アドレスの決定処理およびキャッシ
ュリフィル処理を分岐命令の実行に先立って開始できる
ようにし、CPU性能の向上を実現できるキャッシュシ
ステムを提供することを目的とする。
もので、命令キャッシュのタグメモリの情報を利用する
ことによって分岐先アドレスの決定処理およびキャッシ
ュリフィル処理を分岐命令の実行に先立って開始できる
ようにし、CPU性能の向上を実現できるキャッシュシ
ステムを提供することを目的とする。
【0018】
【課題を解決するための手段および作用】この発明は、
主記憶上の異なるブロックの命令群をそれぞれ格納する
複数のキャッシュラインを有する命令メモリと、この命
令メモリのキャッシュラインに格納されている命令群の
ブロックアドレスをそれぞれ格納する複数のエントリを
有するタグメモリとを備えたキャッシュシステムにおい
て、CPUによる分岐命令の実行に応答して、その分岐
命令によって指定される分岐先アドレスを、その分岐命
令が格納されている前記命令メモリのキャッシュライン
に対応する前記タグメモリのエントリに登録する手段
と、前記CPUによる前記命令メモリからの命令のフェ
ッチに応答して、そのフェッチされる命令が格納されて
いるキャッシュラインに対応する前記タグメモリのエン
トリに登録されている分岐先アドレスの命令についてキ
ャッシュヒット/キャッシュミスを判定し、キャッシュ
ミスの時に前記タグメモリのエントリに登録されている
分岐先アドレスの命令を含む命令群を前記主記憶から読
み出して前記命令メモリに格納する分岐先命令先取り手
段とを具備することを特徴とする。
主記憶上の異なるブロックの命令群をそれぞれ格納する
複数のキャッシュラインを有する命令メモリと、この命
令メモリのキャッシュラインに格納されている命令群の
ブロックアドレスをそれぞれ格納する複数のエントリを
有するタグメモリとを備えたキャッシュシステムにおい
て、CPUによる分岐命令の実行に応答して、その分岐
命令によって指定される分岐先アドレスを、その分岐命
令が格納されている前記命令メモリのキャッシュライン
に対応する前記タグメモリのエントリに登録する手段
と、前記CPUによる前記命令メモリからの命令のフェ
ッチに応答して、そのフェッチされる命令が格納されて
いるキャッシュラインに対応する前記タグメモリのエン
トリに登録されている分岐先アドレスの命令についてキ
ャッシュヒット/キャッシュミスを判定し、キャッシュ
ミスの時に前記タグメモリのエントリに登録されている
分岐先アドレスの命令を含む命令群を前記主記憶から読
み出して前記命令メモリに格納する分岐先命令先取り手
段とを具備することを特徴とする。
【0019】このキャッシュシステムにおいては、キャ
ッシュライン内の分岐命令の実行時に、そのキャッシュ
ラインのタグエントリに分岐先アドレスが登録される。
そして、そのキャッシャラインの命令が再びフェッチさ
れる段階になると、そのキャッシュラインのタグエント
リに登録されいてる分岐先アドレスが検査される。この
場合、キャッシュミスならば、前述の分岐命令の実行に
先立って、その分岐先アドレスの命令を含む命令群が命
令メモリに格納される。したがって、分岐先アドレスの
決定処理およびキャッシュリフィル処理を分岐命令の実
行に先立って開始できるようになり、CPU性能の向上
を実現できる。
ッシュライン内の分岐命令の実行時に、そのキャッシュ
ラインのタグエントリに分岐先アドレスが登録される。
そして、そのキャッシャラインの命令が再びフェッチさ
れる段階になると、そのキャッシュラインのタグエント
リに登録されいてる分岐先アドレスが検査される。この
場合、キャッシュミスならば、前述の分岐命令の実行に
先立って、その分岐先アドレスの命令を含む命令群が命
令メモリに格納される。したがって、分岐先アドレスの
決定処理およびキャッシュリフィル処理を分岐命令の実
行に先立って開始できるようになり、CPU性能の向上
を実現できる。
【0020】
【実施例】以下、図面を参照してこの発明の実施例を説
明する。まず、図1を参照して、この発明のキャッシュ
メモリシステムを内蔵したマイクロプロセッサの全体構
成を説明する。
明する。まず、図1を参照して、この発明のキャッシュ
メモリシステムを内蔵したマイクロプロセッサの全体構
成を説明する。
【0021】このマイクロプロセッサ100はRISC
型プロセッサであり、このマイクロプロセッサ100に
は、CPUコアユニット200、命令キャッシュ30
0、データキャッシュ400、およびレジスタファイル
500などが設けられている。
型プロセッサであり、このマイクロプロセッサ100に
は、CPUコアユニット200、命令キャッシュ30
0、データキャッシュ400、およびレジスタファイル
500などが設けられている。
【0022】命令キャッシュ300は、CPUコアユニ
ット200によって実行される命令群の一部を記憶する
ためのものであり、n+1個のキャッシュラインを有し
ている。これらキャッシュラインは、CPUコアユニッ
ト200からの命令アドレスによって検索される。この
命令キャッシュ300には、図示のように、タグメモリ
301および命令メモリ302が設けられている。
ット200によって実行される命令群の一部を記憶する
ためのものであり、n+1個のキャッシュラインを有し
ている。これらキャッシュラインは、CPUコアユニッ
ト200からの命令アドレスによって検索される。この
命令キャッシュ300には、図示のように、タグメモリ
301および命令メモリ302が設けられている。
【0023】タグメモリ301は、命令メモリ302が
保持する命令が主記憶30のどのアドレスに対応するも
のであるかを示すディレクトリ記憶として利用される。
このタグメモリ301は、命令メモリ302のキャッシ
ュライン0〜nと等しい数のn+1個のタグエントリ0
〜nを有している。この場合、1つのキャッシュライン
と1つのタグエントリは、CPUコアユニット200に
よって同時にアクセスされる。
保持する命令が主記憶30のどのアドレスに対応するも
のであるかを示すディレクトリ記憶として利用される。
このタグメモリ301は、命令メモリ302のキャッシ
ュライン0〜nと等しい数のn+1個のタグエントリ0
〜nを有している。この場合、1つのキャッシュライン
と1つのタグエントリは、CPUコアユニット200に
よって同時にアクセスされる。
【0024】タグメモリ301において、各タグエント
リには、バリッドビットV、上位ビットアドレスCA、
ネクストアドレス有効ビットNV、ネクスト命令アドレ
スフィールドNCA、ネクストアドレス予測命令アドレ
スフィールドNAFが登録される。
リには、バリッドビットV、上位ビットアドレスCA、
ネクストアドレス有効ビットNV、ネクスト命令アドレ
スフィールドNCA、ネクストアドレス予測命令アドレ
スフィールドNAFが登録される。
【0025】タグエントリから読み出されるバリッドビ
ットVおよび上位ビットアドレスCAは、CPUコアユ
ニット200によって現在アクセスされているキャッシ
ュラインのデイレクトリ情報として利用される。この場
合、バリッドビットVは、現在アクセスされているキャ
ッシュラインに格納されている8個の命令(命令1〜命
令8)が有効か否かを示す。また、上位ビットアドレス
CAは、現在アクセスされているキャッシュラインに格
納されている8個の命令(命令1〜命令8)が主記憶3
0のどのブロックの命令群であるかを示すブロックアド
レスである。これらバリッドビットVおよび上位ビット
アドレスCAの値は、キャッシュヒット/キャッシュミ
スの判定に利用される。
ットVおよび上位ビットアドレスCAは、CPUコアユ
ニット200によって現在アクセスされているキャッシ
ュラインのデイレクトリ情報として利用される。この場
合、バリッドビットVは、現在アクセスされているキャ
ッシュラインに格納されている8個の命令(命令1〜命
令8)が有効か否かを示す。また、上位ビットアドレス
CAは、現在アクセスされているキャッシュラインに格
納されている8個の命令(命令1〜命令8)が主記憶3
0のどのブロックの命令群であるかを示すブロックアド
レスである。これらバリッドビットVおよび上位ビット
アドレスCAの値は、キャッシュヒット/キャッシュミ
スの判定に利用される。
【0026】ネクストアドレス有効ビットNV、ネクス
ト命令アドレスフィールドNCA、およびネクストアド
レス予測命令アドレスフィールドNAFは、このキャッ
シュメモリシステムにおいて分岐先命令のフェッチに要
するストール時間を短縮するためにタグメモリ301に
新たに追加された情報である。
ト命令アドレスフィールドNCA、およびネクストアド
レス予測命令アドレスフィールドNAFは、このキャッ
シュメモリシステムにおいて分岐先命令のフェッチに要
するストール時間を短縮するためにタグメモリ301に
新たに追加された情報である。
【0027】ネクストアドレス有効ビットNVは、ネク
スト命令アドレスフィールドNCAによって指定される
次にアクセスされるべき分岐先アドレスが有効か否かを
示す。ネクスト命令アドレスフィールドNCAは、次に
アクセスされるべき分岐先アドレス、すなわち、現在ア
クセスされているキャッシュラインに存在する分岐命令
によって指定される分岐先アドレスを示す。ネクストア
ドレス有効ビットNVおよびネクスト命令アドレスフィ
ールドNCAの値は、先行キャッシュリフィルを実行す
るために利用される。ここで、先行キャッシュリフィル
とは、現在アクセスされているキャッシュラインに存在
する分岐命令が実行される前にその分岐先アドレスの命
令を含む命令ブロックを命令メモリ300に格納すると
いう分岐先命令の先取り操作をいう。
スト命令アドレスフィールドNCAによって指定される
次にアクセスされるべき分岐先アドレスが有効か否かを
示す。ネクスト命令アドレスフィールドNCAは、次に
アクセスされるべき分岐先アドレス、すなわち、現在ア
クセスされているキャッシュラインに存在する分岐命令
によって指定される分岐先アドレスを示す。ネクストア
ドレス有効ビットNVおよびネクスト命令アドレスフィ
ールドNCAの値は、先行キャッシュリフィルを実行す
るために利用される。ここで、先行キャッシュリフィル
とは、現在アクセスされているキャッシュラインに存在
する分岐命令が実行される前にその分岐先アドレスの命
令を含む命令ブロックを命令メモリ300に格納すると
いう分岐先命令の先取り操作をいう。
【0028】ネクストアドレス予測命令アドレスフィー
ルドNAFは、現在アクセスされているキャッシュライ
ンに存在する分岐命令のオフセットアドレスを特定する
ために必要な情報であり、これは、ネクスト命令アドレ
スフィールドNCAを用いた先行キャッシュリフィルを
許可/禁止するために利用される。この場合、ネクスト
アドレス予測命令アドレスフィールドNAFによって指
定される分岐命令のアドレスよりも現在アクセスされて
いる命令アドレスの値が小さいならば先行キャッシュリ
フィルは実行許可され、大きいならばその実行は禁止さ
れる。
ルドNAFは、現在アクセスされているキャッシュライ
ンに存在する分岐命令のオフセットアドレスを特定する
ために必要な情報であり、これは、ネクスト命令アドレ
スフィールドNCAを用いた先行キャッシュリフィルを
許可/禁止するために利用される。この場合、ネクスト
アドレス予測命令アドレスフィールドNAFによって指
定される分岐命令のアドレスよりも現在アクセスされて
いる命令アドレスの値が小さいならば先行キャッシュリ
フィルは実行許可され、大きいならばその実行は禁止さ
れる。
【0029】通常、現在アクセスされているキャッシュ
ラインに存在する命令群はアドレス順に逐次実行され
る。このため、ネクストアドレス予測命令アドレスフィ
ールドNAFを用いた先行キャッシュリフィルの実行許
可/禁止操作により、現在アクセスされているキャッシ
ュラインに存在する分岐命令が後に実行される場合にだ
けリフィルが許可され、無駄なリフィル操作の実行は防
止される。
ラインに存在する命令群はアドレス順に逐次実行され
る。このため、ネクストアドレス予測命令アドレスフィ
ールドNAFを用いた先行キャッシュリフィルの実行許
可/禁止操作により、現在アクセスされているキャッシ
ュラインに存在する分岐命令が後に実行される場合にだ
けリフィルが許可され、無駄なリフィル操作の実行は防
止される。
【0030】これらネクストアドレス有効ビットNVお
よびネクスト命令アドレスフィールドNCAを用いた先
行キャッシュリフィル操作、およびネクストアドレス予
測命令アドレスフィールドNAFを用いた先行キャッシ
ュリフィル操作の許可/禁止操作は、この発明の特徴と
する部分であり、その操作手順の詳細については図4以
降で説明する。
よびネクスト命令アドレスフィールドNCAを用いた先
行キャッシュリフィル操作、およびネクストアドレス予
測命令アドレスフィールドNAFを用いた先行キャッシ
ュリフィル操作の許可/禁止操作は、この発明の特徴と
する部分であり、その操作手順の詳細については図4以
降で説明する。
【0031】CPUコアユニット200は、命令キャッ
シュ300、データキャッシュ400およびレジスタフ
ァイル500を除くマイクロプロセッサ100内のほと
んど全てのユニットを総称して示すものであり、それぞ
れ独立動作可能な命令フェッチユニット201、命令デ
コードユニット202、命令実行ユニット203、およ
びデータ書き込みユニット204を含んでいる。これら
ユニットは、命令フェッチステージ(F)、デコードス
テージ(D)、実行ステージ(E)、およびデータ書き
込みステージ(W)から構成される4段のパイプライン
を構成する。
シュ300、データキャッシュ400およびレジスタフ
ァイル500を除くマイクロプロセッサ100内のほと
んど全てのユニットを総称して示すものであり、それぞ
れ独立動作可能な命令フェッチユニット201、命令デ
コードユニット202、命令実行ユニット203、およ
びデータ書き込みユニット204を含んでいる。これら
ユニットは、命令フェッチステージ(F)、デコードス
テージ(D)、実行ステージ(E)、およびデータ書き
込みステージ(W)から構成される4段のパイプライン
を構成する。
【0032】命令フェッチユニット201による命令フ
ェッチステージ(F)では、通常は、アドレス順に連続
した命令群を順次フェッチするために、命令キャッシュ
300の検索が行われる。すなわち、命令フェッチユニ
ットからは命令フェッチアドレスが出力され、それが命
令キャッシュ300に供給される。命令キャッシュ30
0にヒットした場合は、命令フェッチアドレスによって
指定された命令が命令キャッシュ300から読み出さ
れ、それが命令フェッチユニット201に供給される。
命令キャッシュ300に命令が無い(ミス)場合は、命
令キャッシュ300の更新シーケンスであるキャッシュ
リフィルが行われ、更新が終了するまで命令フェッチス
テージの状態が続く。キャッシュリフィルにおいては、
メモリバス31を介して主記憶30から命令キャッシュ
300に新たな命令群がバースト転送される。
ェッチステージ(F)では、通常は、アドレス順に連続
した命令群を順次フェッチするために、命令キャッシュ
300の検索が行われる。すなわち、命令フェッチユニ
ットからは命令フェッチアドレスが出力され、それが命
令キャッシュ300に供給される。命令キャッシュ30
0にヒットした場合は、命令フェッチアドレスによって
指定された命令が命令キャッシュ300から読み出さ
れ、それが命令フェッチユニット201に供給される。
命令キャッシュ300に命令が無い(ミス)場合は、命
令キャッシュ300の更新シーケンスであるキャッシュ
リフィルが行われ、更新が終了するまで命令フェッチス
テージの状態が続く。キャッシュリフィルにおいては、
メモリバス31を介して主記憶30から命令キャッシュ
300に新たな命令群がバースト転送される。
【0033】また、命令フェッチユニット201は、命
令をフェッチした際、その命令のアドレスをラッチして
保持している。そして、その命令が分岐命令であること
がデコードステージにて検出されると、命令フェッチユ
ニット201は、ラッチされているアドレスを出力す
る。従って、分岐命令実行時には、命令フェッチユニッ
ト201は、ラッチしているアドレスを実行中の分岐命
令のアドレスとして出力すると共に、分岐先アドレスを
命令フェッチアドレスとして出力する。
令をフェッチした際、その命令のアドレスをラッチして
保持している。そして、その命令が分岐命令であること
がデコードステージにて検出されると、命令フェッチユ
ニット201は、ラッチされているアドレスを出力す
る。従って、分岐命令実行時には、命令フェッチユニッ
ト201は、ラッチしているアドレスを実行中の分岐命
令のアドレスとして出力すると共に、分岐先アドレスを
命令フェッチアドレスとして出力する。
【0034】命令デコードユニット202による命令デ
コードステージ(D)では、フェッチされた命令がデコ
ードされ、分岐命令の分岐先アドレスの算出や、Loa
d/Store命令のオペランドアドレスの算出等が行
われる。
コードステージ(D)では、フェッチされた命令がデコ
ードされ、分岐命令の分岐先アドレスの算出や、Loa
d/Store命令のオペランドアドレスの算出等が行
われる。
【0035】命令実行ステージ(E)では、命令で指定
される各種演算が行われる。また、Load/Stor
e命令ではデータキャッシュ400の検索が行われる。
データ書き込みユニット204によるデータ書き込みス
テージ(W)では、演算結果やLoad命令のオペラン
ドがレジスタファイル500に格納される。
される各種演算が行われる。また、Load/Stor
e命令ではデータキャッシュ400の検索が行われる。
データ書き込みユニット204によるデータ書き込みス
テージ(W)では、演算結果やLoad命令のオペラン
ドがレジスタファイル500に格納される。
【0036】次に、図2および図3を参照して、命令キ
ャッシュ300の具体的な構成を説明する。
ャッシュ300の具体的な構成を説明する。
【0037】図2には、タグメモリ301と命令メモリ
302の関係が示されている。ここでは、命令メモリ3
02は4Kバイトのサイズを持つ1ウェイ構成のメモリ
とし、1キャッシュラインのサイズが32バイト(8ワ
ード)である場合を想定する。この場合、1命令が4バ
イトであると仮定すると、1キャッシュラインには、前
述したように、アドレス順に連続した8個の命令(命令
0〜命令7)が格納される。また、命令メモリ302に
含まれる総キャッシュライン数は128である。
302の関係が示されている。ここでは、命令メモリ3
02は4Kバイトのサイズを持つ1ウェイ構成のメモリ
とし、1キャッシュラインのサイズが32バイト(8ワ
ード)である場合を想定する。この場合、1命令が4バ
イトであると仮定すると、1キャッシュラインには、前
述したように、アドレス順に連続した8個の命令(命令
0〜命令7)が格納される。また、命令メモリ302に
含まれる総キャッシュライン数は128である。
【0038】キャッシュライン0の8個の命令(命令0
〜命令7)に関する情報は、タグエントリ0によって管
理される。同様に、キャッシュライン1,2,…127
に関する情報は、タグエントリ1,2,…127によっ
て管理される。
〜命令7)に関する情報は、タグエントリ0によって管
理される。同様に、キャッシュライン1,2,…127
に関する情報は、タグエントリ1,2,…127によっ
て管理される。
【0039】タグエントリ0,1,2,…127の各々
には、前述したように、バリッドビットV、上位ビット
アドレスCA、ネクストアドレス有効ビットNV、ネク
スト命令アドレスフィールドNCA、ネクストアドレス
予測命令アドレスフィールドNAFが登録される。
には、前述したように、バリッドビットV、上位ビット
アドレスCA、ネクストアドレス有効ビットNV、ネク
スト命令アドレスフィールドNCA、ネクストアドレス
予測命令アドレスフィールドNAFが登録される。
【0040】図3には、命令キャッシュ300の具体的
な回路構成が示されている。
な回路構成が示されている。
【0041】命令キャッシュ300には、前述したタグ
メモリ301および命令メモリ302に加え、キャッシ
ュコントロールユニット303、ヒット検出回路30
4、セレクタ305〜307、減算器308が設けられ
ている。
メモリ301および命令メモリ302に加え、キャッシ
ュコントロールユニット303、ヒット検出回路30
4、セレクタ305〜307、減算器308が設けられ
ている。
【0042】タグメモリ301において、バリッドビッ
トV、上位ビットアドレスCA、ネクストアドレス有効
ビットNV、ネクスト命令アドレスフィールドNCA、
ネクストアドレス予測命令アドレスフィールドNAF
は、それぞれ1ビット、20ビット、32ビット、2ビ
ットのサイズを持つ。ネクストアドレス有効ビットN
V、ネクスト命令アドレスフィールドNCA、ネクスト
アドレス予測命令アドレスフィールドNAFのセット
は、分岐命令実行時に、キャッシュコントロールユニッ
ト303によって実行される。
トV、上位ビットアドレスCA、ネクストアドレス有効
ビットNV、ネクスト命令アドレスフィールドNCA、
ネクストアドレス予測命令アドレスフィールドNAF
は、それぞれ1ビット、20ビット、32ビット、2ビ
ットのサイズを持つ。ネクストアドレス有効ビットN
V、ネクスト命令アドレスフィールドNCA、ネクスト
アドレス予測命令アドレスフィールドNAFのセット
は、分岐命令実行時に、キャッシュコントロールユニッ
ト303によって実行される。
【0043】タグメモリ301のデータ入力ポートは、
命令フェッチユニット201およびキャッシュコントロ
ールユニット303に接続されている。命令フェッチユ
ニット201からデータ入力ポートに供給される命令フ
ェッチアドレス(31:0)の上位20ビット(31:
12)は、上位ビットアドレスCAとしてタグメモリ3
01に登録される。また、分岐命令を実行した時に命令
フェッチユニット201からデータ入力ポートに供給さ
れる命令フェッチアドレス(31:0)はその分岐命令
の分岐先アドレスであり、この分岐先アドレス(31:
0)は、ネクスト命令アドレスフィールドNCAとして
タグメモリ301に登録される。さらに、命令フェッチ
ユニット201からデータ入力ポートに供給される実行
中の分岐命令のアドレス(31:0)の下位2ビット
(4:2)は、ネクストアドレス予測命令アドレスフィ
ールドNAFとしてタグメモリ301に登録される。こ
こで、命令フェッチユニット201から出力される実行
中の分岐命令のアドレス(31:0)としては、前述し
たように、命令フェッチユニット201のラッチ出力が
利用される。
命令フェッチユニット201およびキャッシュコントロ
ールユニット303に接続されている。命令フェッチユ
ニット201からデータ入力ポートに供給される命令フ
ェッチアドレス(31:0)の上位20ビット(31:
12)は、上位ビットアドレスCAとしてタグメモリ3
01に登録される。また、分岐命令を実行した時に命令
フェッチユニット201からデータ入力ポートに供給さ
れる命令フェッチアドレス(31:0)はその分岐命令
の分岐先アドレスであり、この分岐先アドレス(31:
0)は、ネクスト命令アドレスフィールドNCAとして
タグメモリ301に登録される。さらに、命令フェッチ
ユニット201からデータ入力ポートに供給される実行
中の分岐命令のアドレス(31:0)の下位2ビット
(4:2)は、ネクストアドレス予測命令アドレスフィ
ールドNAFとしてタグメモリ301に登録される。こ
こで、命令フェッチユニット201から出力される実行
中の分岐命令のアドレス(31:0)としては、前述し
たように、命令フェッチユニット201のラッチ出力が
利用される。
【0044】タグメモリ301のアドレス入力ポートに
は、命令フェッチユニット201から供給される命令フ
ェッチアドレスの中位7ビット(11:5)、実行中の
分岐命令のアドレス(31:0)の中位7ビット(1
1:5)、またはネクスト命令アドレスフィールドNC
Aの中位7ビット(11:5)がタグアドレスとして供
給される。これらタグアドレスは、セレクタ307によ
って選択される。アドレス入力ポートに供給される7ビ
ットのタグアドレスにより、タグメモリ301がアドレ
ッシングされ、タグエントリ0〜127の1つが選択さ
れる。選択されたタグエントリに格納されている情報
は、タグメモリ301のデータ出力ポートから読み出さ
れる。
は、命令フェッチユニット201から供給される命令フ
ェッチアドレスの中位7ビット(11:5)、実行中の
分岐命令のアドレス(31:0)の中位7ビット(1
1:5)、またはネクスト命令アドレスフィールドNC
Aの中位7ビット(11:5)がタグアドレスとして供
給される。これらタグアドレスは、セレクタ307によ
って選択される。アドレス入力ポートに供給される7ビ
ットのタグアドレスにより、タグメモリ301がアドレ
ッシングされ、タグエントリ0〜127の1つが選択さ
れる。選択されたタグエントリに格納されている情報
は、タグメモリ301のデータ出力ポートから読み出さ
れる。
【0045】データ出力ポートから読み出されたバリッ
ドビットVおよびネクストアドレス有効ビットNVは、
キャッシュコントロールユニット303に直接送られ
る。データ出力ポートから読み出された上位ビットアド
レスCAはヒット検出回路304に送られ、またネクス
ト命令アドレスフィールドNCAはセレクタ305〜3
07それぞれの一方の入力に供給される。データ出力ポ
ートから読み出されたネクストアドレス予測命令アドレ
スフィールドNAFは、減算器308の第1入力に供給
される。
ドビットVおよびネクストアドレス有効ビットNVは、
キャッシュコントロールユニット303に直接送られ
る。データ出力ポートから読み出された上位ビットアド
レスCAはヒット検出回路304に送られ、またネクス
ト命令アドレスフィールドNCAはセレクタ305〜3
07それぞれの一方の入力に供給される。データ出力ポ
ートから読み出されたネクストアドレス予測命令アドレ
スフィールドNAFは、減算器308の第1入力に供給
される。
【0046】命令メモリ302の命令入力ポートは、キ
ャッシュコントロールユニット303に接続されてい
る。キャッシュリフィル時には、キャッシュコントロー
ルユニット303によって主記憶30から読み出された
8個の命令が命令メモリ302に順次格納される。
ャッシュコントロールユニット303に接続されてい
る。キャッシュリフィル時には、キャッシュコントロー
ルユニット303によって主記憶30から読み出された
8個の命令が命令メモリ302に順次格納される。
【0047】命令メモリ302のアドレス入力ポートに
は、命令フェッチユニット201からの命令アドレスの
中位10ビット(11:2)のタグアドレスが供給され
る。このタグアドレスの上位7ビット(11:5)はキ
ャッシュエントリ0〜127の1つを選択するために使
用され、下位2ビットは選択されたキャッシュエントリ
に格納されている8個の命令の1を選択するために使用
される。
は、命令フェッチユニット201からの命令アドレスの
中位10ビット(11:2)のタグアドレスが供給され
る。このタグアドレスの上位7ビット(11:5)はキ
ャッシュエントリ0〜127の1つを選択するために使
用され、下位2ビットは選択されたキャッシュエントリ
に格納されている8個の命令の1を選択するために使用
される。
【0048】命令メモリ302の命令出力ポートは、命
令フェッチユニット201に接続されている。この命令
出力ポートからは、命令アドレスの中位10ビット(1
1:2)によって選択された命令が読み出される。
令フェッチユニット201に接続されている。この命令
出力ポートからは、命令アドレスの中位10ビット(1
1:2)によって選択された命令が読み出される。
【0049】キャッシュコントロールユニット303
は、ヒット検出回路304、セレクタ305〜307、
減算器308を用いて、タグメモリ301および命令メ
モリ303のアクセス制御する。
は、ヒット検出回路304、セレクタ305〜307、
減算器308を用いて、タグメモリ301および命令メ
モリ303のアクセス制御する。
【0050】キャッシュコントロールユニット303
は、タグメモリ301にバリッドビットV、上位ビット
アドレスCA、ネクストアドレス有効ビットNV、ネク
スト命令アドレスフィールドNCA、およびネクストア
ドレス予測命令アドレスフィールドNAFを登録する。
この場合、バリッドビットVおよび上位ビットアドレス
CAの登録は、キャッシュフィル時およびリアイル時に
行われる。一方、ネクストアドレス有効ビットNV、ネ
クスト命令アドレスフィールドNCA、およびネクスト
アドレス予測命令アドレスフィールドNAFの登録処理
は、命令実行ユニット203から出力される分岐命令実
行信号に応答して実行される。
は、タグメモリ301にバリッドビットV、上位ビット
アドレスCA、ネクストアドレス有効ビットNV、ネク
スト命令アドレスフィールドNCA、およびネクストア
ドレス予測命令アドレスフィールドNAFを登録する。
この場合、バリッドビットVおよび上位ビットアドレス
CAの登録は、キャッシュフィル時およびリアイル時に
行われる。一方、ネクストアドレス有効ビットNV、ネ
クスト命令アドレスフィールドNCA、およびネクスト
アドレス予測命令アドレスフィールドNAFの登録処理
は、命令実行ユニット203から出力される分岐命令実
行信号に応答して実行される。
【0051】また、キャッシュコントロールユニット3
03は、キャッシュミス時のキャッシュフィル/リフィ
ル操作、およびネクスト命令アドレスフィールドNCA
によって指定され分岐先命令を含む命令群の先行リフィ
ル操作を行う。
03は、キャッシュミス時のキャッシュフィル/リフィ
ル操作、およびネクスト命令アドレスフィールドNCA
によって指定され分岐先命令を含む命令群の先行リフィ
ル操作を行う。
【0052】次に、図4のフローチャートを参照して、
タグメモリ301へのネクストアドレス有効ビットN
V、ネクスト命令アドレスフィールドNCA、およびネ
クストアドレス予測命令アドレスフィールドNAFの登
録動作を説明する。
タグメモリ301へのネクストアドレス有効ビットN
V、ネクスト命令アドレスフィールドNCA、およびネ
クストアドレス予測命令アドレスフィールドNAFの登
録動作を説明する。
【0053】キャッシュコントロールユニット303
は、分岐命令実行信号を監視しており、分岐命令実行信
号の発生の有無により、実行されている命令が分岐命令
であるか否かを判断する(ステップS11)。
は、分岐命令実行信号を監視しており、分岐命令実行信
号の発生の有無により、実行されている命令が分岐命令
であるか否かを判断する(ステップS11)。
【0054】実行中の命令が分岐命令ならば、キャッシ
ュコントロールユニット303は、その時にCPUコア
ユニット200の命令フェッチユニット201から出力
されている実行中の分岐命令のアドレス(31:0)の
中位ビット(11:5)からなるタグアドレスをセレク
タ307に選択させ、それによってタグメモリ301を
アドレッシングする。そして、キャッシュコントロール
ユニット303は、分岐命令のアドレス(31:0)の
上位ビットアドレス(31:12)をセレクタ306に
選択させ、それとタグメモリ301から出力される上位
ビットアドレスCAとをヒット検出回路304に比較さ
せる(ステップS12)。
ュコントロールユニット303は、その時にCPUコア
ユニット200の命令フェッチユニット201から出力
されている実行中の分岐命令のアドレス(31:0)の
中位ビット(11:5)からなるタグアドレスをセレク
タ307に選択させ、それによってタグメモリ301を
アドレッシングする。そして、キャッシュコントロール
ユニット303は、分岐命令のアドレス(31:0)の
上位ビットアドレス(31:12)をセレクタ306に
選択させ、それとタグメモリ301から出力される上位
ビットアドレスCAとをヒット検出回路304に比較さ
せる(ステップS12)。
【0055】次いで、キャッシュコントロールユニット
303は、ヒット検出回路304からの比較結果を示す
ヒット信号とタグメモリ301から出力されるバリッド
ビットVを調べ、実行中の分岐命令についてのキャッシ
ュヒット/キャッシュミスを判定する(ステップS1
3)。この場合、比較結果が一致し且つバリッドビット
V=“1”(有効)であれば、キャッシュヒットである
と判定される。
303は、ヒット検出回路304からの比較結果を示す
ヒット信号とタグメモリ301から出力されるバリッド
ビットVを調べ、実行中の分岐命令についてのキャッシ
ュヒット/キャッシュミスを判定する(ステップS1
3)。この場合、比較結果が一致し且つバリッドビット
V=“1”(有効)であれば、キャッシュヒットである
と判定される。
【0056】キャッシュヒットの場合には、キャッシュ
コントロールユニット303は、実行中の分岐命令のア
ドレスによって選択されているタグエントリに、ネクス
トアドレス有効ビットNV、ネクスト命令アドレスフィ
ールドNCA、およびネクストアドレス予測命令アドレ
スフィールドNAFをセットする(ステップS14)。
コントロールユニット303は、実行中の分岐命令のア
ドレスによって選択されているタグエントリに、ネクス
トアドレス有効ビットNV、ネクスト命令アドレスフィ
ールドNCA、およびネクストアドレス予測命令アドレ
スフィールドNAFをセットする(ステップS14)。
【0057】この場合、ネクストアドレス有効ビットN
Vは有効を示す“1”にセットされ、ネクスト命令アド
レスフィールドNCAはその時に命令フェッチユニット
から出力されている命令フェッチアドレス、つまり実行
中の分岐命令によって指定される分岐先アドレス(3
1:0)にセットされ、ネクストアドレス予測命令アド
レスフィールドNAFは実行中の分岐命令のアドレス
(31:0)の下位2ビット(4:2)からなるエント
リ内オフセットアドレスにセットされる。
Vは有効を示す“1”にセットされ、ネクスト命令アド
レスフィールドNCAはその時に命令フェッチユニット
から出力されている命令フェッチアドレス、つまり実行
中の分岐命令によって指定される分岐先アドレス(3
1:0)にセットされ、ネクストアドレス予測命令アド
レスフィールドNAFは実行中の分岐命令のアドレス
(31:0)の下位2ビット(4:2)からなるエント
リ内オフセットアドレスにセットされる。
【0058】このように、分岐命令の実行時において
は、その分岐命令が格納されているキャッシュラインに
対応するタグエントリに、その分岐先アドレスを示すネ
クスト命令アドレスフィールドNCAとその分岐命令の
エントリ内オフセットアドレスがセットされる。 次
に、図5のフローチャートを参照して、ネクストアドレ
ス有効ビットNV、ネクスト命令アドレスフィールドN
CA、およびネクストアドレス予測命令アドレスフィー
ルドNAFを用いた先行キャッシュリフィル操作を説明
する。
は、その分岐命令が格納されているキャッシュラインに
対応するタグエントリに、その分岐先アドレスを示すネ
クスト命令アドレスフィールドNCAとその分岐命令の
エントリ内オフセットアドレスがセットされる。 次
に、図5のフローチャートを参照して、ネクストアドレ
ス有効ビットNV、ネクスト命令アドレスフィールドN
CA、およびネクストアドレス予測命令アドレスフィー
ルドNAFを用いた先行キャッシュリフィル操作を説明
する。
【0059】命令フェッチステージにおいて、キャッシ
ュコントロールユニット303は、その時にCPUコア
ユニット200の命令フェッチユニット201から出力
されている命令フェッチアドレス(31:0)の中位ビ
ット(11:5)からなるタグアドレスをセレクタ30
7に選択させ、それによってタグメモリ301をアドレ
ッシングする。そして、キャッシュコントロールユニッ
ト303は、命令フェッチアドレス(31:0)の上位
ビットアドレス(31:12)をセレクタ306に選択
させ、それとタグメモリ301から出力される上位ビッ
トアドレスCAとをヒット検出回路304に比較させる
(ステップS21)。
ュコントロールユニット303は、その時にCPUコア
ユニット200の命令フェッチユニット201から出力
されている命令フェッチアドレス(31:0)の中位ビ
ット(11:5)からなるタグアドレスをセレクタ30
7に選択させ、それによってタグメモリ301をアドレ
ッシングする。そして、キャッシュコントロールユニッ
ト303は、命令フェッチアドレス(31:0)の上位
ビットアドレス(31:12)をセレクタ306に選択
させ、それとタグメモリ301から出力される上位ビッ
トアドレスCAとをヒット検出回路304に比較させる
(ステップS21)。
【0060】次いで、キャッシュコントロールユニット
303は、ヒット検出回路304からの比較結果を示す
ヒット信号とタグメモリ301から出力されるバリッド
ビットVを調べ、実行中の分岐命令についてのキャッシ
ュヒット/キャッシュミスを判定する(ステップS2
2)。この場合、比較結果が一致し且つバリッドビット
V=“1”(有効)であればキャッシュヒットであると
判定され、一方、比較結果が不一致か、またはバリッド
ビットV=“0”ならばキャッシュミスであると判定さ
れる。
303は、ヒット検出回路304からの比較結果を示す
ヒット信号とタグメモリ301から出力されるバリッド
ビットVを調べ、実行中の分岐命令についてのキャッシ
ュヒット/キャッシュミスを判定する(ステップS2
2)。この場合、比較結果が一致し且つバリッドビット
V=“1”(有効)であればキャッシュヒットであると
判定され、一方、比較結果が不一致か、またはバリッド
ビットV=“0”ならばキャッシュミスであると判定さ
れる。
【0061】キャッシュヒットの場合には、キャッシュ
コントロールユニット303は、まず、その時にタグメ
モリ301から読み出されるネクストアドレス予測命令
アドレスフィールドNAFの値が命令フェッチアドレス
(31:0)の下位2ビット(4:2)の値以上か否
か、およびネクストアドレス有効ビットNV=“1”か
否かを調べる(ステップS23)。
コントロールユニット303は、まず、その時にタグメ
モリ301から読み出されるネクストアドレス予測命令
アドレスフィールドNAFの値が命令フェッチアドレス
(31:0)の下位2ビット(4:2)の値以上か否
か、およびネクストアドレス有効ビットNV=“1”か
否かを調べる(ステップS23)。
【0062】この場合、ネクストアドレス予測命令アド
レスフィールドNAFの値が命令フェッチアドレス(3
1:0)の下位2ビット(4:2)の値以上か否かの判
定は、、減算回路308からの減算結果信号に基づいて
行われる。
レスフィールドNAFの値が命令フェッチアドレス(3
1:0)の下位2ビット(4:2)の値以上か否かの判
定は、、減算回路308からの減算結果信号に基づいて
行われる。
【0063】ネクストアドレス有効ビットNV=
“1”、且つネクストアドレス予測命令アドレスフィー
ルドNAFの値が命令フェッチアドレス(31:0)の
下位2ビット(4:2)の値以上の場合には、キャッシ
ュコントロールユニット303は、その時にタグメモリ
301から読み出されているネクスト命令アドレスフィ
ールドNCAの中位ビット(11:5)からなるタグア
ドレスをセレクタ307に選択させ、それによってタグ
メモリ301をアドレッシングする。そして、キャッシ
ュコントロールユニット303は、前述のネクスト命令
アドレスフィールドNCA(31:0)の上位ビットア
ドレス(31:12)をセレクタ306に選択させ、そ
の選択したネクスト命令アドレスフィールドNCAと、
新たにアドレッシングされたタグメモリ301から出力
される上位ビットアドレスCAとをヒット検出回路30
4に比較させる(ステップS24)。
“1”、且つネクストアドレス予測命令アドレスフィー
ルドNAFの値が命令フェッチアドレス(31:0)の
下位2ビット(4:2)の値以上の場合には、キャッシ
ュコントロールユニット303は、その時にタグメモリ
301から読み出されているネクスト命令アドレスフィ
ールドNCAの中位ビット(11:5)からなるタグア
ドレスをセレクタ307に選択させ、それによってタグ
メモリ301をアドレッシングする。そして、キャッシ
ュコントロールユニット303は、前述のネクスト命令
アドレスフィールドNCA(31:0)の上位ビットア
ドレス(31:12)をセレクタ306に選択させ、そ
の選択したネクスト命令アドレスフィールドNCAと、
新たにアドレッシングされたタグメモリ301から出力
される上位ビットアドレスCAとをヒット検出回路30
4に比較させる(ステップS24)。
【0064】次いで、キャッシュコントロールユニット
303は、ヒット検出回路304からの比較結果を示す
ヒット信号とタグメモリ301から出力されるバリッド
ビットVを調べ、ネクスト命令アドレスフィールドNC
Aによって指定される分岐先命令についてのキャッシュ
ヒット/キャッシュミスを判定する(ステップS2
5)。この場合、比較結果が一致し且つバリッドビット
V=“1”(有効)であればキャッシュヒットであると
判定され、一方、比較結果が不一致か、またはバリッド
ビットV=“0”ならばキャッシュミスであると判定さ
れる。
303は、ヒット検出回路304からの比較結果を示す
ヒット信号とタグメモリ301から出力されるバリッド
ビットVを調べ、ネクスト命令アドレスフィールドNC
Aによって指定される分岐先命令についてのキャッシュ
ヒット/キャッシュミスを判定する(ステップS2
5)。この場合、比較結果が一致し且つバリッドビット
V=“1”(有効)であればキャッシュヒットであると
判定され、一方、比較結果が不一致か、またはバリッド
ビットV=“0”ならばキャッシュミスであると判定さ
れる。
【0065】キャッシュミスの場合には、キャッシュコ
ントロールユニット303は、ネクスト命令アドレスフ
ィールドNCAによって指定される分岐命令を含むブロ
ックを主記憶30から命令メモリ302に転送する先行
キャッシュリフィル操作を行う(ステップS26)。
ントロールユニット303は、ネクスト命令アドレスフ
ィールドNCAによって指定される分岐命令を含むブロ
ックを主記憶30から命令メモリ302に転送する先行
キャッシュリフィル操作を行う(ステップS26)。
【0066】このように、先行キャッシュリフィル操作
は、命令フェッチステージにおいてアクセスされたキャ
ッシュラインに命令フェッチアドレス以上のアドレス値
を持つ分岐命令が格納されており、且つその分岐先命令
が命令キャッシュに存在しないことを条件に実行され
る。
は、命令フェッチステージにおいてアクセスされたキャ
ッシュラインに命令フェッチアドレス以上のアドレス値
を持つ分岐命令が格納されており、且つその分岐先命令
が命令キャッシュに存在しないことを条件に実行され
る。
【0067】次に、図6を参照して、具体的な命令実行
シーケンスを例にとって命令キャッシュ300の動作を
説明する。
シーケンスを例にとって命令キャッシュ300の動作を
説明する。
【0068】ここでは、アドレス00001004番地
から00001024番地までのシーケンスが16進で
00001000回繰り返され、そのループの中で00
001080番地のサブルーチンが呼び出される場合を
例示して説明する。
から00001024番地までのシーケンスが16進で
00001000回繰り返され、そのループの中で00
001080番地のサブルーチンが呼び出される場合を
例示して説明する。
【0069】以下、命令キャッシュ300が空の状態か
ら図5のプログラムを実行する場合を考える。
ら図5のプログラムを実行する場合を考える。
【0070】まず、00001000番地を指定する命
令フェッチアドレスが命令フェッチユニット201から
出力される。この時命令キャッシュ300が空であるの
で、キャッシュミスが発生する。このキャッシュミスに
応答して、キャッシュコントローラ303は、アドレス
00001000からアドレス0000101cまでの
主記憶30上のブロックに存在する8個の命令を命令メ
モリ302のキャッシュライン0にリフィルする。その
後順次命令が実行され、00001010番地の分岐命
令(call 0×1080)によって、000010
80番地へ分岐する。この分岐命令実行の際、キャッシ
ュコントローラ303は、タグメモリ301のタグエン
トリ0に以下の情報を書き込む。
令フェッチアドレスが命令フェッチユニット201から
出力される。この時命令キャッシュ300が空であるの
で、キャッシュミスが発生する。このキャッシュミスに
応答して、キャッシュコントローラ303は、アドレス
00001000からアドレス0000101cまでの
主記憶30上のブロックに存在する8個の命令を命令メ
モリ302のキャッシュライン0にリフィルする。その
後順次命令が実行され、00001010番地の分岐命
令(call 0×1080)によって、000010
80番地へ分岐する。この分岐命令実行の際、キャッシ
ュコントローラ303は、タグメモリ301のタグエン
トリ0に以下の情報を書き込む。
【0071】NV=1(有効) NCA=00001080 NAF=4 NAFに書き込まれる値4は分岐命令(call)がキ
ャッシュライン0の4番目の命令であることを示す。
ャッシュライン0の4番目の命令であることを示す。
【0072】call命令によって00001080番
地へ分岐すると、キャッシュミスが発生する。このキャ
ッシュミスに応答して、キャッシュコントローラ303
は、アドレス00001080からアドレス00001
09cまでの主記憶30上のブロックに存在する8個の
命令を命令メモリ302のキャッシュライン3にフィル
する。その後、サブルーチンの命令群が順次実行され、
00001094番地のreturn命令によって、0
0001014番地へ復帰する。この時、return
命令を含む命令メモリ302のキャッシュライン3に対
応するタグメモリ301のタグエントリ3には、以下の
情報が書き込まれる。
地へ分岐すると、キャッシュミスが発生する。このキャ
ッシュミスに応答して、キャッシュコントローラ303
は、アドレス00001080からアドレス00001
09cまでの主記憶30上のブロックに存在する8個の
命令を命令メモリ302のキャッシュライン3にフィル
する。その後、サブルーチンの命令群が順次実行され、
00001094番地のreturn命令によって、0
0001014番地へ復帰する。この時、return
命令を含む命令メモリ302のキャッシュライン3に対
応するタグメモリ301のタグエントリ3には、以下の
情報が書き込まれる。
【0073】NV=1(有効) NCA=00001014 NAF=5 return命令によって00001014番地へ戻る
と、その時の命令フェッチはキャッシュヒットするが、
命令実行が進み00001020番地の命令をフェッチ
する時にキャッシュミスが発生する。このキャッシュミ
スに応答して、キャッシュコントローラ303は、アド
レス00001020からアドレス0000103cま
での主記憶30上のブロックに存在する8個の命令を命
令メモリ302のキャッシュライン1にフィルする。
と、その時の命令フェッチはキャッシュヒットするが、
命令実行が進み00001020番地の命令をフェッチ
する時にキャッシュミスが発生する。このキャッシュミ
スに応答して、キャッシュコントローラ303は、アド
レス00001020からアドレス0000103cま
での主記憶30上のブロックに存在する8個の命令を命
令メモリ302のキャッシュライン1にフィルする。
【0074】その後、00001024番地の分岐命令
(bl:branch if less)の実行で0×
1004番地へ分岐する。その際、分岐命令(bl)を
含む命令メモリ302のキャッシュライン1に対応する
タグメモリ301のタグエントリ1の内容は以下のよう
にセットされる。
(bl:branch if less)の実行で0×
1004番地へ分岐する。その際、分岐命令(bl)を
含む命令メモリ302のキャッシュライン1に対応する
タグメモリ301のタグエントリ1の内容は以下のよう
にセットされる。
【0075】NV=1(有効) NCA=00001004 NAF=1 分岐命令(bl)の実行によって00001004番地
に戻ると、その時の命令フェッチはキャッシュヒットす
る。この時、タグメモリのタグエントリ0のNV,NC
A,NAFがキャッシュコントローラ303によって検
査され、NV=1 NCA=00001080 NAF=4 であることがわかる。
に戻ると、その時の命令フェッチはキャッシュヒットす
る。この時、タグメモリのタグエントリ0のNV,NC
A,NAFがキャッシュコントローラ303によって検
査され、NV=1 NCA=00001080 NAF=4 であることがわかる。
【0076】ここでは、フェッチされる命令のアドレス
00001004のオフセットアドレス(エントリ番
号)は2である。したがって、そのフェッチされる命令
は、キャッシュライン0に含まれる分岐命令(cal
l)のオフセットアドレス以前の命令である。また、N
Vも1であるので、これら条件からネクストアドレスの
先行キャッシュリフィルが有効であると判断される。
00001004のオフセットアドレス(エントリ番
号)は2である。したがって、そのフェッチされる命令
は、キャッシュライン0に含まれる分岐命令(cal
l)のオフセットアドレス以前の命令である。また、N
Vも1であるので、これら条件からネクストアドレスの
先行キャッシュリフィルが有効であると判断される。
【0077】この後、キャッシュコントローラ303
は、NCAによって指定される分岐先アドレス0000
1080の命令がキャッシュヒットするかどうかを検査
する。この例ではヒットするため先行リフィルは実行さ
れないが、より複雑なプログラムの場合や、タスクスイ
ッチなどによって途中で割り込み処理が発生して、キャ
ッシュの状態が変化した場合などには、例えばV=0と
なることによりキャッシュミスが発生し、先行リフィル
が起動される。この場合、分岐命令(call)のフェ
ッチよりも前に、分岐命令(call)の分岐先命令を
含む命令群のリフィルが開始される。図6のシーケンス
を実行した場合の命令キャッシュ300の内容は、図7
の通りである。
は、NCAによって指定される分岐先アドレス0000
1080の命令がキャッシュヒットするかどうかを検査
する。この例ではヒットするため先行リフィルは実行さ
れないが、より複雑なプログラムの場合や、タスクスイ
ッチなどによって途中で割り込み処理が発生して、キャ
ッシュの状態が変化した場合などには、例えばV=0と
なることによりキャッシュミスが発生し、先行リフィル
が起動される。この場合、分岐命令(call)のフェ
ッチよりも前に、分岐命令(call)の分岐先命令を
含む命令群のリフィルが開始される。図6のシーケンス
を実行した場合の命令キャッシュ300の内容は、図7
の通りである。
【0078】図8には、従来のプロセッサと本発明の命
令キャッシュ300を備えたプロセッサの分岐命令処理
における動作タイミングが対比して示されている。
令キャッシュ300を備えたプロセッサの分岐命令処理
における動作タイミングが対比して示されている。
【0079】ここでは、101c番地から連続的に命令
フェッチし、1030番地にある分岐命令を実行して、
2000番地に分岐するシーケンスを考える。また、1
030番地の分岐命令は命令メモリのキャッシュライン
0の5番目の命令であると仮定する。
フェッチし、1030番地にある分岐命令を実行して、
2000番地に分岐するシーケンスを考える。また、1
030番地の分岐命令は命令メモリのキャッシュライン
0の5番目の命令であると仮定する。
【0080】また、ここでは、分岐予測機構は使用しな
いものとし、分岐命令のデコード(D)サイクルで分岐
先アドレスを計算し、次のサイクルから分岐先フェッチ
が始まるものとする。さらに、分岐先の2000番地は
キャッシュミスを起こし、そのキャッシュリフィルサイ
クルには7サイクル要するとする。
いものとし、分岐命令のデコード(D)サイクルで分岐
先アドレスを計算し、次のサイクルから分岐先フェッチ
が始まるものとする。さらに、分岐先の2000番地は
キャッシュミスを起こし、そのキャッシュリフィルサイ
クルには7サイクル要するとする。
【0081】従来のプロセッサでは、サイクル5におい
て1030番地の分岐命令がフェッチされ、サイクル6
でデコードされると同時に分岐先アドレスが計算されサ
イクル7から分岐先アドレス(2000)の命令フェッ
チが開始される。分岐先命令はキャッシュミスを起こ
し、サイクル13でリフィルが完了する。このため、分
岐先命令のデコードはサイクル14から開始される。
て1030番地の分岐命令がフェッチされ、サイクル6
でデコードされると同時に分岐先アドレスが計算されサ
イクル7から分岐先アドレス(2000)の命令フェッ
チが開始される。分岐先命令はキャッシュミスを起こ
し、サイクル13でリフィルが完了する。このため、分
岐先命令のデコードはサイクル14から開始される。
【0082】このように、分岐先アドレスを計算してか
らキャッシュリフィルを行なう場合には、リフィル時間
の間、プロセッサによる命令実行は中断される。
らキャッシュリフィルを行なう場合には、リフィル時間
の間、プロセッサによる命令実行は中断される。
【0083】一方、この発明の命令キャッシュ300を
使用した場合には、キャッシュラインの境界である10
20番地の命令をフェッチした時点で、そのキャッシュ
タグ内のNV、NCA、NAFが検査される。NVが
“1”で、命令フェッチアドレスのライン内オフセット
アドレスがNAFと等しいか小さい場合は、サイクル2
からNCA(=2000番地)を含む命令群の先行リフ
ィルが開始される。リフィルはサイクル8で終了し、2
000番地の分岐先命令はヒット状態となる。
使用した場合には、キャッシュラインの境界である10
20番地の命令をフェッチした時点で、そのキャッシュ
タグ内のNV、NCA、NAFが検査される。NVが
“1”で、命令フェッチアドレスのライン内オフセット
アドレスがNAFと等しいか小さい場合は、サイクル2
からNCA(=2000番地)を含む命令群の先行リフ
ィルが開始される。リフィルはサイクル8で終了し、2
000番地の分岐先命令はヒット状態となる。
【0084】先行リフィルの期間もプロセッサによる命
令実行は継続して実行され、サイクル5で分岐命令をフ
ェッチし、サイクル6で分岐先アドレスを計算し、サイ
クル7で2000番地の命令フェッチを開始する。この
時点では、先行して行われていた2000番地のリフィ
ルはまだ実行中であるので、このフェッチ処理はサイク
ル8まで待たされ、サイクル8の終わりで命令がフェッ
チされる。この結果、サイクル9から分岐先命令のデコ
ードが開始できる。
令実行は継続して実行され、サイクル5で分岐命令をフ
ェッチし、サイクル6で分岐先アドレスを計算し、サイ
クル7で2000番地の命令フェッチを開始する。この
時点では、先行して行われていた2000番地のリフィ
ルはまだ実行中であるので、このフェッチ処理はサイク
ル8まで待たされ、サイクル8の終わりで命令がフェッ
チされる。この結果、サイクル9から分岐先命令のデコ
ードが開始できる。
【0085】リフィル操作では、8命令分のバースト転
送によって主記憶30から命令メモリ302に命令群が
読み込まれる。このため、もしサイクル7において分岐
先命令がすでに命令キャッシュ302に読み込まれてい
ればフェッチ動作をサイクル8まで待たせないようにす
ることも可能である。
送によって主記憶30から命令メモリ302に命令群が
読み込まれる。このため、もしサイクル7において分岐
先命令がすでに命令キャッシュ302に読み込まれてい
ればフェッチ動作をサイクル8まで待たせないようにす
ることも可能である。
【0086】以上のように、この実施例においては、キ
ャッシュラインがアクセスされたときにそのタグメモリ
301のネクストアドレス有効ビットNVが1であれ
ば、そのキャッシュライン中に存在する分岐命令の分岐
先アドレスを即座に導くことができ、もし分岐先命令が
キャッシュに入っていない場合は即座にリフィルを起動
することができる。これにより分岐命令が実行される前
に分岐先のリフィルが可能となり、キャッシュミス時の
ストール時間を短縮することができる。またCPUが実
際に分岐命令をフェッチしたときに、分岐先の命令がキ
ャッシュヒットであればその命令を分岐命令に続いてC
PUに対して送ることで、CPUの分岐先アドレス計算
サイクルを省略することもできる。
ャッシュラインがアクセスされたときにそのタグメモリ
301のネクストアドレス有効ビットNVが1であれ
ば、そのキャッシュライン中に存在する分岐命令の分岐
先アドレスを即座に導くことができ、もし分岐先命令が
キャッシュに入っていない場合は即座にリフィルを起動
することができる。これにより分岐命令が実行される前
に分岐先のリフィルが可能となり、キャッシュミス時の
ストール時間を短縮することができる。またCPUが実
際に分岐命令をフェッチしたときに、分岐先の命令がキ
ャッシュヒットであればその命令を分岐命令に続いてC
PUに対して送ることで、CPUの分岐先アドレス計算
サイクルを省略することもできる。
【0087】
【発明の効果】以上のようにこの本発明によれば、CP
Uの命令アクセスによって、あるキャッシュラインがア
クセスされたときにそのタグメモリのネクストアドレス
有効ビットが1であれば、そのキャッシュライン中に存
在する分岐命令の直前に実行したときに分岐先アドレス
を即座に導くことができ、もし分岐先命令がキャッシュ
に入っていない場合は即座にリフィルを起動することが
できる。これにより分岐命令が実行される前に分岐先の
リフィルが可能となり、キャッシュミス時のストール時
間を短縮することができる。またCPUが実際に分岐命
令をフェッチしたときに、分岐先の命令がキャッシュヒ
ットであればその命令を分岐命令に続いてCPUに対し
て送ることで、CPUの分岐先アドレス計算サイクルを
省略することができる。このようにこの発明によってC
PUの分岐命令実行の高速化に多大な効果を奏すること
ができる。
Uの命令アクセスによって、あるキャッシュラインがア
クセスされたときにそのタグメモリのネクストアドレス
有効ビットが1であれば、そのキャッシュライン中に存
在する分岐命令の直前に実行したときに分岐先アドレス
を即座に導くことができ、もし分岐先命令がキャッシュ
に入っていない場合は即座にリフィルを起動することが
できる。これにより分岐命令が実行される前に分岐先の
リフィルが可能となり、キャッシュミス時のストール時
間を短縮することができる。またCPUが実際に分岐命
令をフェッチしたときに、分岐先の命令がキャッシュヒ
ットであればその命令を分岐命令に続いてCPUに対し
て送ることで、CPUの分岐先アドレス計算サイクルを
省略することができる。このようにこの発明によってC
PUの分岐命令実行の高速化に多大な効果を奏すること
ができる。
【図1】この発明の一実施例に係わるキャッシュシステ
ムを内蔵したマイクロプロセッサの全体構成を示すブロ
ック図。
ムを内蔵したマイクロプロセッサの全体構成を示すブロ
ック図。
【図2】図1のキャッシュシステムに設けられている命
令キャッシュを構成するタグメモリと命令メモリの関係
を示す図。
令キャッシュを構成するタグメモリと命令メモリの関係
を示す図。
【図3】図1のキャッシュシステムに設けられている命
令キャッシュの具体的な回路構成を示す図。
令キャッシュの具体的な回路構成を示す図。
【図4】図1のキャッシュシステムにおけるタグ情報登
録動作を説明するためのフローチャート。
録動作を説明するためのフローチャート。
【図5】図1のキャッシュシステムにおける先行キャッ
シュリフィル動作を説明するためのフローチャート。
シュリフィル動作を説明するためのフローチャート。
【図6】図1のキャッシュシステムの動作を具体的に説
明するための命令実行シーケンスの一例を示す図。
明するための命令実行シーケンスの一例を示す図。
【図7】図7の命令実行シーケンスを実行した後のタグ
メモリの内容を示す図。
メモリの内容を示す図。
【図8】図1のプロセッサによる分岐命令処理における
動作タイミングを示す図。
動作タイミングを示す図。
30…主記憶、100…マイクロプロセッサ、200…
CPUコアユニット、201…命令フェッチユニット、
202…命令デコードユニット、203…命令実行ユニ
ット、204…データ書き込みユニット、300…命令
キャッシュ、301…タグメモリ、302…命令メモ
リ、303…キャッシュコントロールユニット、400
…データキャッシュ、V…バリッドビット、CA…上位
ビットアドレス(ブロックアドレス)、NV…ネクスト
アドレス有効ビット、NCA…ネクスト命令アドレスフ
ィールド、NAF…ネクストアドレス予測命令アドレス
フィールド。
CPUコアユニット、201…命令フェッチユニット、
202…命令デコードユニット、203…命令実行ユニ
ット、204…データ書き込みユニット、300…命令
キャッシュ、301…タグメモリ、302…命令メモ
リ、303…キャッシュコントロールユニット、400
…データキャッシュ、V…バリッドビット、CA…上位
ビットアドレス(ブロックアドレス)、NV…ネクスト
アドレス有効ビット、NCA…ネクスト命令アドレスフ
ィールド、NAF…ネクストアドレス予測命令アドレス
フィールド。
Claims (6)
- 【請求項1】 主記憶上の異なるブロックの命令群をそ
れぞれ格納する複数のキャッシュラインを有する命令メ
モリと、この命令メモリのキャッシュラインに格納され
ている命令群のブロックアドレスをそれぞれ格納する複
数のエントリを有するタグメモリとを有するキャッシュ
システムにおいて、 CPUによる分岐命令の実行に応答して、その分岐命令
によって指定される分岐先アドレスを、その分岐命令が
格納されている前記命令メモリのキャッシュラインに対
応する前記タグメモリのエントリに登録する手段と、 前記CPUによる前記命令メモリからの命令のフェッチ
に応答して、そのフェッチされる命令が格納されている
キャッシュラインに対応する前記タグメモリのエントリ
に登録されている分岐先アドレスの命令についてキャッ
シュヒット/キャッシュミスを判定し、キャッシュミス
の時に前記タグメモリのエントリに登録されている分岐
先アドレスの命令を含む命令群を前記主記憶から読み出
して前記命令メモリに格納する分岐先命令先取り手段と
を具備することを特徴とするキャッシュシステム。 - 【請求項2】 前記CPUによる分岐命令の実行に応答
して、その分岐命令が格納されている前記命令メモリの
キャッシュライン内のエントリ番号を示すオフセットア
ドレスを、前記キャッシュラインに対応する前記タグメ
モリのエントリに登録する手段と、 前記CPUによる前記命令メモリからの命令のフェッチ
に応答して、そのフェッチされる命令が格納されている
キャッシュラインに対応する前記タグメモリのエントリ
に登録されている前記オフセットアドレスを参照し、前
記フェッチされた命令が前記分岐命令以前に実行される
命令であるか否かを決定する手段と、 前記フェッチされた命令が前記分岐命令以前に実行され
る命令であることが決定された時のみ、前記分岐先命令
先取り手段による先取り処理の実行を許可する手段とを
さらに具備することを特徴とする請求項1記載のキャッ
シュシステム。 - 【請求項3】 前記CPUによる分岐命令の実行に応答
して、その分岐命令が格納されている前記命令メモリの
キャッシュライン内のエントリ番号を示すオフセットア
ドレスを、前記キャッシュラインに対応する前記タグメ
モリのエントリに登録する手段と、 前記CPUによる前記命令メモリからの命令のフェッチ
に応答して、そのフェッチされる命令が格納されている
キャッシュラインに対応する前記タグメモリのエントリ
に登録されている前記オフセットアドレスを参照し、前
記フェッチされた命令が前記分岐命令であるか否かを決
定する手段と、 前記フェッチされた命令が前記分岐命令であることが決
定された時、前記タグメモリのエントリに登録されてい
る分岐先アドレスによって指定される分岐先アドレスを
前記分岐命令に後続させて前記CPUに転送する手段と
をさらに具備することを特徴とする請求項1記載のキャ
ッシュシステム。 - 【請求項4】 主記憶上の異なるブロックの命令群をそ
れぞれ格納する複数のキャッシュラインを有する命令メ
モリと、この命令メモリの複数のキャッシュラインにそ
れぞれ対応する複数のエントリを有するタグメモリとを
有するにおいて、 前記タグメモリの各エントリは、 前記命令メモリの対応するキャッシュラインに格納され
ている命令群のブロックアドレスを保持する第1フィー
ルドと、 前記命令メモリの対応するキャッシュラインに格納され
ている命令群が有効であることを示す有効ビットを保持
する第2フィールドと、 前記命令メモリの対応するキャッシュラインに格納され
ている命令群に含まれる分岐命令によって指定される分
岐先アドレスを保持する第3フィールドと、 前記分岐先アドレスが有効であることを示す分岐先アド
レス有効ビットを保持する第4フィールドと、 前記分岐命令が格納されている前記キャッシュライン内
のエントリ番号を示すオフセットアドレスを保持する第
5フィールドとを含み、 CPUによる分岐命令の実行に応答して、その分岐命令
によって指定される分岐先アドレスを、その分岐命令が
格納されている前記命令メモリのキャッシュラインに対
応する前記タグメモリのエントリの前記第3フィールド
に登録する手段と、 前記CPUによる前記命令メモリからの命令のフェッチ
に応答して、そのフェッチされる命令が格納されている
キャッシュラインに対応する前記タグメモリのエントリ
の前記第3フィールドに登録されている分岐先アドレス
の命令についてキャッシュヒット/キャッシュミスを判
定し、キャッシュミスの時に前記第3フィールドに登録
されている分岐先アドレスの命令を含む命令群を前記主
記憶から読み出して前記命令メモリに格納する分岐先命
令先取り手段とを具備することを特徴とするキャッシュ
システム。 - 【請求項5】 前記CPUによる分岐命令の実行に応答
して、前記分岐先アドレス有効ビットおよび前記分岐命
令のオフセットアドレスを、前記分岐命令が格納されて
いる前記命令メモリのキャッシュラインに対応する前記
タグメモリのエントリの前記第4および第5フィールド
にそれぞれ登録する手段と、 前記CPUによる前記命令メモリからの命令のフェッチ
に応答して、そのフェッチされる命令が格納されている
キャッシュラインに対応する前記タグメモリのエントリ
の第4および第5フィールドを参照し、第3フィールド
の分岐先アドレスが有効で且つ前記フェッチされた命令
が前記分岐命令以前に実行される命令であるか否かを決
定する手段と、 分岐先アドレスが有効で且つ前記フェッチされた命令が
前記分岐命令以前に実行される命令であることが決定さ
れた時、前記分岐先命令先取り手段による先取り処理の
実行を許可する手段とをさらに具備することを特徴とす
る請求項4記載のキャッシュシステム。 - 【請求項6】 前記分岐先命令先取り手段は、 前記第3フィールドに登録されている分岐先アドレスの
上位ビット部によって前記タグメモリをアドレッシング
し、前記分岐先アドレスによって指定される前記タグメ
モリのエントリの前記第1フィールドに登録されている
ブロックアドレスと前記を読み出す手段と、 前記読み出されたブロックアドレスと前記分岐先アドレ
スの上位ビット部とを比較し、その一致の有無に従って
前記分岐先アドレスの命令についてのキャッシュヒット
/キャッシュミスを判定する手段と、 キャッシュミスが判定された時、前記第3フィールドに
登録されている分岐先アドレスの命令を含む命令群を前
記主記憶から読み出して前記命令メモリに格納する手段
とを含むことを特徴とする請求項4記載のキャッシュシ
ステム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5348760A JPH07200406A (ja) | 1993-12-27 | 1993-12-27 | キャッシュシステム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5348760A JPH07200406A (ja) | 1993-12-27 | 1993-12-27 | キャッシュシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH07200406A true JPH07200406A (ja) | 1995-08-04 |
Family
ID=18399183
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5348760A Pending JPH07200406A (ja) | 1993-12-27 | 1993-12-27 | キャッシュシステム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH07200406A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007207246A (ja) * | 2006-02-03 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | 命令ラインのための自己プリフェッチl2キャッシュ機構 |
| JP2008522320A (ja) * | 2004-12-02 | 2008-06-26 | クゥアルコム・インコーポレイテッド | ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制 |
| US20150242211A1 (en) * | 2014-02-26 | 2015-08-27 | Fanuc Corporation | Programmable controller |
| JP2016157371A (ja) * | 2015-02-26 | 2016-09-01 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
-
1993
- 1993-12-27 JP JP5348760A patent/JPH07200406A/ja active Pending
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008522320A (ja) * | 2004-12-02 | 2008-06-26 | クゥアルコム・インコーポレイテッド | ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制 |
| JP2007207246A (ja) * | 2006-02-03 | 2007-08-16 | Internatl Business Mach Corp <Ibm> | 命令ラインのための自己プリフェッチl2キャッシュ機構 |
| US20150242211A1 (en) * | 2014-02-26 | 2015-08-27 | Fanuc Corporation | Programmable controller |
| US10120687B2 (en) * | 2014-02-26 | 2018-11-06 | Fanuc Corporation | Programmable controller |
| JP2016157371A (ja) * | 2015-02-26 | 2016-09-01 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5125083A (en) | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system | |
| JP3412575B2 (ja) | 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法 | |
| EP0106667B1 (en) | Central processing unit | |
| US4811215A (en) | Instruction execution accelerator for a pipelined digital machine with virtual memory | |
| US6442681B1 (en) | Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions | |
| JP3542021B2 (ja) | セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置 | |
| US5592634A (en) | Zero-cycle multi-state branch cache prediction data processing system and method thereof | |
| EP0394624B1 (en) | Multiple sequence processor system | |
| JPH0557616B2 (ja) | ||
| JPH02208728A (ja) | 仮想命令キャッシュ再補充アルゴリズム | |
| JPH0334024A (ja) | 分岐予測の方法とそのための装置 | |
| KR100955433B1 (ko) | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 | |
| JPS6323586B2 (ja) | ||
| US6321328B1 (en) | Processor having data buffer for speculative loads | |
| JPH08249181A (ja) | ブランチ予測式データ処理装置および動作方法 | |
| JP2001290702A (ja) | 記憶装置 | |
| US5381532A (en) | Microprocessor having branch aligner between branch buffer and instruction decoder unit for enhancing initiation of data processing after execution of conditional branch instruction | |
| JP3732234B2 (ja) | スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法 | |
| US7111127B2 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
| JPH07200406A (ja) | キャッシュシステム | |
| US6185674B1 (en) | Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor | |
| CA2159888A1 (en) | Method and system of addressing | |
| JP5480793B2 (ja) | プログラマブルコントローラ | |
| JP2001154845A (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
| JP2001505327A (ja) | 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法 |