(57)【特許請求の範囲】
【請求項１】
ＣＰＵが参照すべき命令語ブロックを所定の命令語先取り技法を利用して下位メモリから先取りバッファに先取りし、ＣＰＵが該先取りバッファに貯蔵された命令語ブロックを参照して各種制御動作を行なう命令語先取り回路において、
前記先取りバッファの命令語ブロックの交換時、該先取りバッファから出力され前記ＣＰＵにより参照されずに廃棄される命令語ブロックを別途の未参照先取りキャッシュに貯蔵し、該貯蔵された参照されない命令語ブロックをＣＰＵのメモリ参照に使用できるようにしたことを特徴とする命令語先取り方法。
【請求項２】
前記所定の命令語先取り技法は、順次ブロックと目標ブロックを両方とも先取りする複合先取り技法であることを特徴とする、請求項１に記載の命令語先取り方法。
【請求項３】
前記所定の命令語先取り技法は、現在参照されているブロックの所定番目以後に参照されると予想されるブロックを先取りする前進先取り技法であることを特徴とする、請求項１に記載の命令語先取り方法。
【請求項４】
メモリ参照が必要なプログラムを行なうため各種の制御信号を出力するＣＰＵ（１０）と、
該ＣＰＵのプログラムを行なうときに必要な命令語ブロックを貯蔵する下位メモリ（２０）と、
前記ＣＰＵにおいて参照される命令語ブロックの先取りを制御する先取り制御部（７０）と、
前記下位メモリ（２０）から先取りされた命令語ブロックを一時貯蔵し、該貯蔵した命令語ブロックがＣＰＵにより参照されたか否かに基づいて制御信号を出力する先取りバッファ（３０）と、
該先取りバッファ（３０）から出力される命令語ブロックを、前記制御信号によって、ＣＰＵにより参照された命令語ブロックと、参照されない命令語ブロックとにデマルチプレクシングするデマルチプレクサ（４０）と、
該デマルチプレクサ（４０）から出力された命令語ブロック中、前記ＣＰＵにより参照されない命令語ブロックを貯蔵する未参照先取りブロック貯蔵部（５０）と、
前記下位メモリ（２０）、デマルチプレクサ（４０）および未参照先取りブロック貯蔵部（５０）から出力された命令語ブロックを貯蔵する命令語キャッシュ（６０）と、
を備えた命令語先取り回路。
【請求項５】
前記未参照先取り貯蔵部（５０）は、キャッシュメモリであることを特徴とする、請求項４に記載の命令語先取り回路。
【請求項６】
前記先取りバッファ（３０）は、先取りされた命令語ブロックを貯蔵するキャッシュブロックフィールド（３３）と、該キャッシュブロックフィールド（３３）に貯蔵された命令語ブロックが有効か否かを表わすＶ−ビットフィールド（３４）と、前記キャッシュブロックフィールド（３３）に貯蔵された命令語ブロックのアドレスを表わすタグフィールド（３１）と、前記キャッシュブロックフィールド（３３）に貯蔵された命令語ブロックが前記ＣＰＵにより参照されたかを表わすＴ−ビットフィールド（３２）とを備えて構成される、請求項４に記載の命令語先取り回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、未参照先取りキャッシュを利用した命令語先取り方法およびその回路に関し、特に、下位メモリから先取りされＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  ）により参照されないブロックを、オン−チップキャッシュメモリ（ｏｎ−ｃｈｉｐ  ｃａｃｈｅ  ｍｅｍｏｒｙ）の未参照先取りキャッシュ（Ｎｏｎ−Ｒｅｆｅｒｅｎｃｅｄ  Ｐｒｅｆｅｔｃｈ  Ｃａｃｈｅ：ＮＲＰキャッシュ）に貯蔵し、キャッシュ接近失敗（ｃａｃｈｅ  ｍｉｓｓ）を減らし、下位メモリに対する近接遅延（ａｃｃｅｓｓ  ｌａｔｅｎｃｙ）およびメモリ交通量（ｍｅｍｏｒｙ  ｔｒａｆｆｉｃ）を減らし得る未参照先取りキャッシュを利用した命令語先取り方法および回路に関するものである。
【０００２】
【従来の技術】
ＣＰＵの性能（Ｐｅｒｆｏｒｍａｎｃｅ  ）は速い速度で発展するのに比べ、メモリ性能の発展速度はそれに及ばない。このようなＣＰＵとメモリの性能格差（Ｐｅｒｆｏｒｍａｎｃｅ  Ｇａｐ  ）は段々深化され、したがって、メモリ階層（Ｍｅｍｏｒｙ  Ｈｉｅｒａｒｃｈｙ）を効率的に構成するのがコンピュータシステムの全体性能に重要な影響を及ぼす要素となった。
【０００３】
現在、大部分のコンピュータシステムでは、メモリの効率的な構成のため、キャッシュメモリが使用されている。キャッシュメモリは基本的にコンピュータのプログラムの行なわれるときに現れる参照集約性（Ｌｏｃａｌｉｔｙ  ｏｆ  Ｒｅｆｅｒｅｎｃｅ  ）を利用するものである。一般に、コンピュータのプログラムの行なわれるときにＣＰＵが参照する下位メモリのアドレスは、ある限定された時間では下位メモリの領域における１つまたは２つの領域のみを集中的に参照し、これを空間的集約性（ｓｐａｔｉａｌ  ｌｏｃａｌｉｔｙ）と言われる。普通のプログラムではいくつかのループ（ｌｏｏｐ）を実行するに所要される時間が、全プログラムの行なわれる時間の大部分を占め、１つのループ内では同様な命令が反復継続して行なわれる。かつ、現在参照される命令が間もなく参照される場合が多いし、これを時間的集約性（ｔｅｍｐｏｒａｌ  ｌｏｃａｌｉｔｙ  ）と言われる。
【０００４】
このような集約性を利用して、下位メモリとＣＰＵ間に速度の速い所定記憶装置をおき、ここにプログラムの行なわれる時頻度に使用される下位メモリの一部領域を貯蔵することがキャッシュメモリの原理である。
【０００５】
なお、大部分の応用プログラムはこのような２つの特性をすべて有しているので、数キロバイト程度の小さいメモリを使う場合にも、ＣＰＵが下位メモリを参照する、すなわち、全体参照の９０％以上をキャッシュメモリで処理することが可能である。
【０００６】
キャッシュメモリを使用することにおいて、ＣＰＵが参照しようとする命令語ブロックがキャッシュメモリに存在し参照することをキャッシュ接近成功（ｃａｃｈｅ  ｈｉｔ  ）と言い、その反対の場合はキャッシュ接近失敗（ｃａｃｈｅ  ｍｉｓｓ）と言う。キャッシュメモリの性能を表わす尺度としてはキャッシュ接近成功率が使用され、式で示すと次のようである。
【０００７】
キャッシュ接近成功率（Ｈｉｔ  ｒａｔｉｏ  ）＝キャッシュ接近成功（ｃａｃｈｅ  ｈｉｔ  ）の回数／メモリ参照の全体回数
一方キャッシュ接近失敗の有形を３つで分けると、初期接近失敗（ｃｏｍｐｕｌｓｏｒｙ  ｍｉｓｓ  ）、衝突接近失敗（ｃｏｎｆｌｉｃｔ  ｍｉｓｓ  ）、および容量接近失敗（ｃａｐａｃｉｔｙ  ｍｉｓｓ  ）に分類される。初期接近失敗はあるブロックが最初に参照されるとき発生するキャッシュ接近失敗である。衝突接近失敗はキャッシュメモリの領域に写像（ｍａｐｐｉｎｇ  ）されているブロックが他のブロックに交換（ｒｅｐｌａｃｅｍｅｎｔ  ）された後、再び参照されるとき発生する接近失敗である。容量接近失敗はある応用プログラムを行なうとき、ＣＰＵが頻繁に参照するページ（ｐａｇｅ）の集合である作業集合（ｗｏｒｋｉｎｇ  ｓｅｔ  ）がキャッシュメモリの容量よりも大きい場合に発生する接近失敗である。
【０００８】
【発明が解決しようとする課題】
このような種類の接近失敗はキャッシュメモリの容量が大きくなるに従って全体接近失敗に対する各々の比率が違うこととなる。初期接近失敗は、特性上、キャッシュメモリの容量にかかわらず一定で、衝突接近失敗と容量接近失敗はキャッシュメモリの容量が大きくなると大抵減少するこ傾向を見せる。しかし、ＶＬＳＩ（Ｖｅｒｙ  Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の発達に従ってオン−チップキャッシュ（ｏｎ−ｃｈｉｐ  ｃａｃｈｅ  ）メモリの容量が段々大きくなっているので、初期接近失敗の全体キャッシュ接近失敗に対して占める比率も大きくなっている。このような状況のもと、現在大部分のコンピュータシステムが大容量のキャッシュメモリを主に使用することにより、前述のような初期接近失敗を効果的に減らし得る方法の重要性が増えつつある。
【０００９】
初期接近失敗を減らす方法中で一番簡単なものはキャッシュブロックの大きさを大きくすることであり、すると、一度のキャッシュ接近失敗時に多い量の内容がキャッシュメモリに貯蔵されて、順次的な参照の場合キャッシュ接近失敗を減らし得る。しかし、この方法は、１つのブロックを下位メモリからキャッシュメモリに取出しするのに所要されるＣＰＵサイクルが増加し、メモリ交通量が増加し、またキャッシュ接近失敗の費用が増加するという問題点があった。かつ、キャッシュブロックが大きい場合には、参照される部分はブロックの一部であるが、全体ブロックが交換されて、キャッシュ汚染が（ｃａｃｈｅ  ｐｏｌｌｕｔｉｏｎ  ）発生し性能が低下する。また、ブロックの大きさはメモリ遅延（ｌａｔｅｎｃｙ  ）と伝送率（ｔｒａｎｓｆｅｒ  ｒａｔｅ  ）が反映されて決定されるので、先取り機能の強化のためキャッシュブロックの大きさを単純に増加させることができないという問題点があった。
【００１０】
このような問題点を解決するため種々の先取り技法が提案されている。先取りというのは、ＣＰＵがメモリのあるブロックに対して参照する前に参照が予想されるメモリブロックを下位メモリから上位メモリに取出しすることである。先取り技法中で一番簡単な技法の順次先取り技法は、現在ＣＰＵにより参照されるブロックの次のブロックを順次的に先取る方法であり、応用プログラムにおいてメモリ参照が順次性を多く持つ場合に性能の大きい向上を得ることができるし、一般に、命令語参照がデータ参照に比べより大きい地域性を有するので、この場合順次先取りが比較的優秀な性能を表わす。かつ、これを行なうためのハードウェアが複雑でないという長所がある。しかし、順次先取りは命令語の参照が順次的な経路を従わない場合には、性能の向上を期待することができない。すなわち、条件分岐命令および無条件分岐命令のようなメモリ参照が非順次経路に行なわれる場合には、順次先取りにより得られる利得が大きくないという短所がある。
【００１１】
目標先取り（ｔａｒｇｅｔ  ｐｒｅｆｅｔｃｈｉｎｇ）というのは、以前にあるブロックに対して参照が行なわれた経路を予測テーブルに貯蔵しておき、以後に該ブロックに対する参照が行なわれるとき、前記予測テーブルに貯蔵された情報を利用して先取りするブロックを決定する方法である。目標先取り技法は無条件分岐および条件分岐が以前遂行経路を従う傾向が多いのに基づき、以前の行なわれたメモリ参照が順次ブロック（ｓｅｑｕｅｎｔｉａｌ  ｂｌｏｃｋ）を参照した場合には、順次ブロックを、非順次ブロック（ｎｏｎ−ｓｅｑｕｅｎｔｉａｌ  ｂｌｏｃｋ）を参照した場合には、非順次ブロックを先取りする。すなわち、メモリ参照時によるブロックＡの後にブロックＢが参照された場合、次のメモリ参照においてＡブロックが参照されるとき、ブロックＢを先取りする方法である。このように目標先取りは分岐命令の性質を利用するので、順次先取りに比べ高い正確度を有する。しかし、分岐命令遂行時にメモリ参照がいつも以前の経路を従うことはないし、分岐命令におけるメモリ参照が順次と非順次の経路を交互に行なう場合には、目標先取り方法により性能の向上を図り得ないという問題点があった。
【００１２】
複合先取り方法（Ｈｙｂｒｉｄ  ｐｒｅｆｅｔｃｈｉｎｇ）というのは、スーパコンピュータなどのようなメモリ帯域幅（ｂａｎｄｗｉｄｔｈ  ）の制限が比較的少ないシステムにおいて順次ブロックと目標ブロックのすべてを先取りする方法である。しかし、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）を基板とするシステムにおいてはメモリ帯域幅の制限のため、以前に行なわれた情報を利用して先取りするブロックの優先順位を決めて先取りを行なう。これは既存の複合先取り技法の変形された形態で、次のように行なわれる。
【００１３】
たとえば、以前にメモリ参照が順次的な経路に行なわれた場合、現在ブロックの順次ブロック（現在ブロックの住所＋１）が先取りされるべき１番目の候補ブロックに決定されるとともに、現在ブロックに対する目標ブロックが先取りされるべき２番目の候補ブロックに決定される。反面に、以前にメモリ参照が非順次的経路に行なわれた場合には、現在ブロックに対する目標ブロックが先取りされるべき１番目の候補ブロックに決定されるとともに、現在ブロックの順次ブロック（現在ブロックの住所＋１）が先取りされるべき２番目の候補に決定される。前述のように１番目と２番目の候補が決定されると、該候補ブロックに対する先取りの動作が行なわれる。１番目の候補ブロックがオン−チップメモリに存在していないと、下位メモリからオン−チップメモリに先取りされた後、動作は終了する。しかし、前記１番目の候補ブロックがオン−チップメモリに存在する場合は、２番目の候補ブロックが下位メモリからオン−チップメモリに先取りされ、前記１番目、２番目の候補ブロックがすべてオン−チップメモリに存在する場合先取りは行なわれない。このように変形された複合先取り技法は大部分の場合に順次ブロックと目標ブロックとを先取りする。しかし、変形された複合先取り技法は、従来の複合先取り技法程度の性能向上しか得ることができないし、かつ、従来の複合先取り技法は性能の向上が得られたが、データ伝送率（ｄａｔａ  ｔｒａｎｓｆｅｒ  ｒａｔｅ）を意味するメモリ帯域幅に対する制限が比較的少ないスーパコンピュータなどのみに行なうことが可能という問題点があった。
【００１４】
したがって、本発明は先取りされＣＰＵにより参照されないブロックをオン−チップキャッシュメモリの未参照先取りキャッシュに貯蔵し、制限されたメモリ帯域幅を有しているマイクロプロセッサを利用したシステムにおいても、順次ブロックと目標ブロックのすべてを先取りしてキャッシュ接近失敗を減らし、下位メモリに対する接近遅延を減少させるとともに、メモリ交通量を減らし得る未参照先取りキャッシュを利用した命令語先取り方法およびその回路を提供することを目的とする。
【００１５】
かつ、本発明の他の目的は、命令語先取り技法において先取りバッファのブロックが交換されるとき、先取りされＣＰＵにより参照されないブロックを所定のオン−チップメモリに貯蔵し以後のメモリ参照に対応するように、未参照先取りキャッシュを利用した命令語先取り方法を提供することである。
【００１６】
【課題を解決するための手段】
そして、このような本発明の目的は、未参照先取りキャッシュを利用した命令語先取り回路において、メモリ参照のようなプログラムを行なうため各種制御信号を出力するＣＰＵ１０と、ＣＰＵ１０のプログラムを行なうのに必要な命令語ブロックを貯蔵する下位メモリ２０と、ＣＰＵ１０により参照される命令語ブロックの先取りを制御する先取り制御部７０と、下位メモリから先取りされた命令語ブロックを一時貯蔵し、かつ該貯蔵された命令語ブロックがＣＰＵ１０により参照されたか否かに従い制御信号を出力する先取りバッファ３０と、先取りバッファ３０から出力する命令語ブロックを先取りバッファの制御信号に従って、ＣＰＵにより参照の行なわれた命令語ブロックとそうでないブロックとにデマルチプレクシングするデマルチプレクサ４０と、デマルチプレクサ４０から出力された命令語ブロック中、ＣＰＵにより参照されない命令語ブロックを貯蔵する未参照先取りブロック貯蔵部５０と、下位メモリ、デマルチプレクサおよび未参照先取りブロック貯蔵部から出力された命令語ブロックを貯蔵する命令語キャッシュと、を備えることにより構成される。
【００１７】
【作用】
既存の種々の先取り技法により先取りされＣＰＵにより参照されない命令語ブロックを先取りバッファで交換するとき、該ブロックを捨てる代わりに未参照先取りキャッシュのオン−チップメモリに貯蔵しておき、次の番に該ブロックに対するメモリ参照があると下位メモリからそのブロックを再び取出さないで、すぐメモリ参照の行なわれるようにした。
【００１８】
【実施例】
本発明に関わる未参照先取りキャッシュを利用した命令語先取り回路においては、図１に示すように、命令語を参照してコンピュータの各種制御動作を行なうＣＰＵ１０と、ＣＰＵ１０により参照されるべき命令語ブロックを貯蔵する下位メモリ２０と、下位メモリ２０から先取りされたブロックを一時貯蔵するオン−チップメモリの先取りバッファ３０と、先取りバッファ３０から出力されたブロックがＣＰＵ１０により参照されたか否かに従いデマルチプレクシングするデマルチプレクサ４０と、デマルチプレクサ４０から出力されるブロック中、ＣＰＵ１０により参照されないブロックを貯蔵するオン−チップメモリの未参照先取りキャッシュ５０と、ＣＰＵ１０により参照された命令語ブロックの貯蔵されるオン−チップメモリの命令語キャッシュ６０と、ＣＰＵ１０の制御により先取り動作を制御する先取り制御部７０とにより構成される。
【００１９】
ここで、前記下位メモリ２０は、メモリ階層（ｈｉｅｒａｒｃｈｙ  ）が単段階キャッシュメモリシステムの場合には、メインメモリとなり、メモリ階層が多段階キャッシュメモリシステムの場合には下位段階のキャッシュメモリまたはメインメモリとなる。図１はＣＰＵ１０、先取りバッファ３０、未参照先取りキャッシュ５０、命令語キャッシュ６０、および先取り制御部７０などが分離された回路を仮定しているが、このような構成要素は１つのプロセッサチップにともに存在させることもできる。
【００２０】
前記先取りバッファ３０においては、下位メモリ２０から先取りされたブロックを貯蔵するキャッシュブロックフィールド３３と、キャッシュブロックフィールド３３に貯蔵されたブロックの住所を示すタグフィールド３１と、キャッシュブロックフィールド３３に貯蔵されたブロックがＣＰＵにより参照されたか否かを示すＴ−ビットフィールド３２と、キャッシュブロックフィールド３３に貯蔵されたブロックの内容が有効するかを示すＶ−ビットフィールド３４とにより構成される。
【００２１】
先取り制御部７０においては、先取りされるべき候補ブロックを決定し、該決定された候補ブロックがオン−チップメモリに存在するかを検索し、検索の結果、前記決定されたブロックがオン−チップメモリに存在しない場合には、下位メモリ２０からの先取り要求命令を出力する。かつ、先取りされるべき候補ブロックを決定する回路においては、図２に示すように、ＣＰＵ１０により参照されるべき現在ブロックの住所を貯蔵する現在ブロックアドレス部（ｃｕｒｒｅｎｔ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ  ｕｎｉｔ）７２と、以前のメモリ参照遂行時に現在ブロックの次に参照された非順次ブロックの住所を貯蔵する目標ブロックアドレス部（ｔａｒｇｅｔ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ  ｕｎｉｔ  ）７３と、以前の行なわれたメモリ参照が順次的であるかを示す以前遂行情報フィールド（ｈｉｓｔｏｒｙ  ｉｎｆｏｒｍａｔｉｏｎ  ｆｉｅｌｄ  ）７４とを備えて構成される予測テーブル（ｐｒｅｄｉｃｔｉｏｎ  ｔａｂｌｅ）７１と、予測テーブル７１の現在ブロックアドレス部７２から出力された住所に１を加えた住所と目標ブロックアドレス部７３から出力された住所とを、以前遂行情報フィールド７４に貯蔵された情報により選択するマルチプレクサ７５と、予測テーブル７１をアクセスしてアップデータする予測テーブル制御部７６とにより構成される。
【００２２】
このように構成された未参照先取りブロックを利用した命令語先取り方法およびその回路は色々の先取り技法に適用し得るが、まず、順次ブロックと目標ブロックのすべてを先取りする複合先取り技法に適用した場合を説明する。本発明では命令語キャッシュとデータキャッシュとが各々分離されたシステムを仮定した。かつ、本発明は直接写像キャッシュを仮定したが集合関連写像、完全関連写像などが使用される場合にも同様に適用される。
【００２３】
あるプログラムの行なわれるときに必要な命令語ブロックはＣＰＵにより参照される。このときブロックＡに対する参照が完了されると、新しいブロックＣＰＵ１０により参照され、該新しく参照されるブロックはプログラムに従い順次ブロックまたは非順次ブロックになることができる。
【００２４】
まず、ブロックＡの後に続いて順次ブロックＢが参照されると、予測テーブル７１の更新が行なわれ、予測テーブル制御部７６は前記ブロックＡに対する情報が予測テーブル７１に存在するかを検索する。もし、予測テーブル７１に前記ブロックＡに対する情報が存在しないと、予測テーブル７１は更新されない。なぜならば、ブロックＡに対する該当情報が予測テーブル７１に存在しないと、該ブロックＡの後に続いて順次的ブロックＢが省略時（ｄｅｆａｕｌｔ  ）の先取りされるべき対象になるためである。しかし、予測テーブル７１の検索結果、ブロックＡに対する情報が予測テーブルに存在すると、以前遂行情報フィールド７４にブロックＡに該当するフィールドが順次経路にセッティングされる。
【００２５】
予測テーブル７１の更新後に予測テーブル制御部７６は先取りする候補ブロックを決定し、これは現在ＣＰＵにより参照されたブロックＢに対する予測テーブル７１が有している情報を利用して行なわれる。以前ＣＰＵ１０によりブロックＢの次に参照された経路が順次的である場合、マルチプレクサ７５の選択によりブロックＢの順次ブロック（現在ブロックＢのアドレス＋１）が１番目の先取りされるべき候補ブロックに決定され、現在ブロックＢに対する目標ブロック、すなわち、ブロックＢに該当する目標ブロックアドレス部７３に貯蔵されたブロックが２番目の先取りされるべき候補ブロックに決定される。反面に、以前のＣＰＵ１０によりブロックＢの次に参照された経路が非順次的である場合は、マルチプレクサ７５の選択により、目標ブロックアドレス部７３に貯蔵された現在ブロックＢに対する目標ブロックが先取りされるべき１番目の候補ブロックに決定され、現在ブロックの順次ブロックが先取りされるべき２番目の候補ブロックに決定される。
【００２６】
かつ、ＣＰＵ１０によりブロックＡの次に非順次的なブロックＣが参照される場合は、予測テーブルの更新のため予測テーブル制御部７６は、前記ブロックＡに対する情報が予測テーブルに存在するかを検索する。ブロックＡに対する情報が予測テーブル７１に存在しないときには、予測テーブル制御部７６はブロックＡのため予測テーブル７１の１つのエントリ（ｅｎｔｒｙ  ）を割当した後、ブロックＡのアドレスを予測テーブル７１の現在ブロックアドレス部７２に貯蔵し、ブロックＣのアドレスを目標ブロックアドレス部７３に貯蔵して、以前に行なわれた情報フィールド７４の該当フィールドを非順次経路にセッティングする。しかし、前記ブロックＡに対する情報が予測テーブルに存在する場合には、ブロックＣのアドレスを目標ブロックアドレス部７３に貯蔵し、以前に行なわれた情報フィールド７４の該当フィールドを非順次経路にセッティングする。
【００２７】
次いで、予測テーブルの更新後に、予測テーブル制御部７０は先取りする候補ブロックを決定するのに、これは現在ＣＰＵ１０により参照されたブロックがＣブロックであるので、ブロックＣに対する予測テーブル７１の情報を利用して行なわれる。ブロックＣに対する先取り候補ブロックの決定は、ブロックＣに対する予測テーブル７１の以前遂行情報フィールド７４の情報、すなわち、以前のＣＰＵによりブロックＣの次に参照された経路が順次経路であるか、または非順次経路であるかに従い、前記ブロックＢの場合と同様な方法により決定される。
【００２８】
前述したように、予測テーブル７１の更新および先取りされるべき候補ブロックが決定された後、先取りの動作は行なわれる。候補ブロックに対する先取りは、まず１番目の先取り候補ブロックに対して行なわれる。このため先取り制御部７０は１番目の候補ブロックがオン−チップメモリ、すなわち命令語キャッシュ６０、未参照キャッシュ５０、および先取りバッファ３０に存在するかを検索する。１番目の先取り候補ブロックがオン−チップメモリに存在しない場合には、先取り制御部７０は１番目の先取り候補ブロックを下位メモリ１０から先取りして先取りバッファに貯蔵し、先取りの動作を終了する。しかし、前記１番目の先取り候補ブロックがオン−チップメモリに存在する場合には、先取り制御部７０は前述した方法により、２番目の先取り候補ブロックに対する先取りを行なう。もし、前述先取り候補ブロックと２番目の先取り候補ブロックのすべてが存在するときは先取りは行なわれない。
【００２９】
以上のように、先取りバッファにより先取りされたブロックが先取りバッファ３０の容量を超過すると、先取りバッファ３０は自体的なブロック交換メカニズム（ｂｌｏｃｋ  ｒｅｐｌａｃｅｍｅｎｔ  ｍｅｃｈａｎｉｓｍ  ）により、既存の貯蔵されていたブロックは下位メモリ２０から新しく先取りされたブロックに交換される。かつ、先取りバッファ３０のＴ−ビットフィールド３２においては、ＣＰＵにより該当ブロックが参照されるときはリセット、参照されないときはセットと表示され、よって、先取りバッファ３０でのブロックの交換が行なわれるとき、ＣＰＵ１０により参照されたブロックは捨てられ、参照されないブロックはＴ−ビット３２の値がデマルチプレクサ４０の制御信号として印加されて未参照先取りキャッシュ５０へ移動する。なお、先取りバッファ３０のブロック交換時、従来のＣＰＵ１０により参照されない未参照先取りブロックは捨てられたが、本発明の未参照先取りブロックは捨てられないで未参照キャッシュ５０に貯蔵され、以後該貯蔵されたブロックがＣＰＵ１０の参照対象になる場合、下位メモリ２０から再び取出しされないですぐ参照が可能になる。
【００３０】
本発明に関わる未参照先取りキャッシュを利用した命令語先取り方法を、変形された複合先取り技法と、前進先取り技法を混合した技法に適用すると、より優秀な性能の向上を図り得る。前進先取り技法は現在ＣＰＵ１０により参照されているブロックのｄ番目の後に参照されると予想されるブロックを先取りする技法であり、ここでｄは前進先取りの底部（ｄｅｇｒｅｅ  ｏｆ  ｌｏｏｋａｈｅａｄ  ｐｒｅｆｅｔｃｈｉｎｇ  ）を示す。たとえ、前進先取りの程度が２である前進先取り技法においてＣＰＵ１０がブロックＤ，Ｅ，Ｆを順次に参照した場合、ブロックＤに対しての予測テーブル７１の目標ブロックアドレス部７３にはブロックＥの代わりにブロックＦの住所が貯蔵される。かつ、前進先取り技法に以前のＣＰＵ１０より順次ブロックが参照された場合、現在ブロックＧに対して先取りされるべきブロックはＩのブロック（現在ブロックの住所＋２）である。しかし、順次参照時にブロックＨ（現在ブロックの住所＋１）がオン−チップメモリに存在しない場合、キャッシュ接近失敗が発生するので、たとえ先取りしようとするブロックはＩブロック（現在ブロックの住所＋１）であるが、キャッシュ接近失敗を防止するために、ブロックＨ（現在ブロックの住所＋１）が先取りされるべき１番目の候補ブロックとして決定される。先取りされるべき２番目の候補ブロックは元来先取りしようとするブロック、すなわち、ブロックＩであり、３番目の候補ブロックは前記ブロックＧに対する目標ブロック、４番目の候補ブロックは前記目標ブロックの直前ブロック（目標ブロックの住所−１）が決定される。
【００３１】
また、前進先取り技法において以前のメモリ参照時にＣＰＵ１０により非順次ブロックが参照された場合、先取りされるべき１番目の候補ブロックは現在ブロックに対する目標ブロックであり、２番目の候補ブロックは該目標ブロックの直前のブロック（目標ブロックの住所−１）で、これは目標ブロックの参照される前に目標ブロックの直前のブロックの参照される可能性が順次参照の場合より小さいためである。先取りされるべき３番目の候補ブロックは現在ブロックの次の番目のブロック（現在ブロックの住所＋１）で、４番目の候補ブロックは現在ブロックの住所＋２のブロックが決定される。
【００３２】
このように先取りされるべき候補ブロックが決定されると、１番目の候補ブロックから先取りが行なわれるが、１番目の候補ブロックがオン−チップメモリに存在しない場合は、該ブロックに対する先取りが行なわれてから完了される。しかし、前記ブロックが既にオン−チップメモリに存在する場合には２番目の候補ブロックに対する先取りが行なわれ、２番目の候補ブロックもオン−チップメモリに存在する場合は３番目の候補ブロックに対する先取りが行なわれる。また、３番目の候補ブロックがオン−チップメモリに存在する場合は４番目の候補ブロックに先取りが行なわれるが、４番目の候補ブロックもオン−チップメモリに存在する場合に先取りの動作は行なわれない。
【００３３】
本発明の適用された前進先取り技法において、先取りバッファ３０により先取りされるブロックが該先取りバッファ３０の容量を超過すると、先取りバッファ３０は自体的にブロック交換メカニズム（ｂｌｏｃｋ  ｒｅｐｌａｃｅｍｅｎｔ  ｍｅｃｈａｎｉｓｍ  ）により既存の貯蔵されたブロックを下位メモリ２０から新しく先取りされたブロックに交換される。かつ、先取りバッファ３０のＴビットフィールド３２は該当ブロックがＣＰＵ１０により参照されたブロックであるとリセット、参照されないブロックであるとセットとして表示される。また、先取りバッファ３０からブロックの交換の行なわれるとき、ＣＰＵにより参照されたブロックは捨てられ、参照されないブロックはＴ−ビット３２の値がデマルチプレクサ４０の制御信号として印加され未参照キャッシュ５０に移動する。したがって、先取りバッファ３０のブロックの交換時に従来捨てられた未参照先取りブロックは、本発明では捨てられないで未参照先取りキャッシュ５０に貯蔵され、以前該ブロックがＣＰＵ１０の参照対象になるとき、下位メモリ２０から再び取出されないですぐＣＰＵ１０により参照される。
【００３４】
【発明の効果】
以上説明したように、本発明に関わる未参照先取りキャッシュを利用した命令語先取り方法は、既存種々の先取り技法により先取りされＣＰＵにより参照されない命令語ブロックを先取りバッファで交換するとき、該ブロックを捨てる代わりに未参照先取りキャッシュのオン−チップメモリに貯蔵しておき、次の番に該ブロックに対するメモリ参照があると下位メモリからそのブロックを再び取出さないで、すぐメモリ参照の行なわれるようにした。したがって、本発明は下位メモリからの取出回数を減らし、命令語参照時の下位メモリからの取出に従うメモリ遅延を減少させて動作の速度を向上させるとともに、メモリ交通量を減少し得る効果がある。
【図面の簡単な説明】
【図１】本発明に関わる未参照先取りキャッシュを利用した命令語先取り回路を示した図面である。
【図２】図１の先取り制御部における先取りする候補ブロックを決定する回路を示した図面である。
【符号の説明】
１０  ＣＰＵ
２０  下位メモリ
３０  先取りバッファ
４０  デマルチプレクサ
５０  未参照先取りキャッシュ
６０  命令語キャッシュ
７０  先取り制御部
７１  予測テーブル
７２  現在ブロックアドレス部
７３  目標ブロックアドレス部
７４  以前遂行情報フィールド
７５  マルチプレクサ
７６  予測テーブル制御部
【図１】
0003628375.tif 000002
【図２】
0003628375.tif 000003