JP3628375B2 - 未参照先取りキャッシュを利用した命令語先取り方法およびその回路 - Google Patents
未参照先取りキャッシュを利用した命令語先取り方法およびその回路 Download PDFInfo
- Publication number
- JP3628375B2 JP3628375B2 JP10511995A JP10511995A JP3628375B2 JP 3628375 B2 JP3628375 B2 JP 3628375B2 JP 10511995 A JP10511995 A JP 10511995A JP 10511995 A JP10511995 A JP 10511995A JP 3628375 B2 JP3628375 B2 JP 3628375B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- prefetch
- cpu
- cache
- memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
【産業上の利用分野】
本発明は、未参照先取りキャッシュを利用した命令語先取り方法およびその回路に関し、特に、下位メモリから先取りされCPU(Central Processing Unit )により参照されないブロックを、オン−チップキャッシュメモリ(on−chip cache memory)の未参照先取りキャッシュ(Non−Referenced Prefetch Cache:NRPキャッシュ)に貯蔵し、キャッシュ接近失敗(cache miss)を減らし、下位メモリに対する近接遅延(access latency)およびメモリ交通量(memory traffic)を減らし得る未参照先取りキャッシュを利用した命令語先取り方法および回路に関するものである。
【0002】
【従来の技術】
CPUの性能(Performance )は速い速度で発展するのに比べ、メモリ性能の発展速度はそれに及ばない。このようなCPUとメモリの性能格差(Performance Gap )は段々深化され、したがって、メモリ階層(Memory Hierarchy)を効率的に構成するのがコンピュータシステムの全体性能に重要な影響を及ぼす要素となった。
【0003】
現在、大部分のコンピュータシステムでは、メモリの効率的な構成のため、キャッシュメモリが使用されている。キャッシュメモリは基本的にコンピュータのプログラムの行なわれるときに現れる参照集約性(Locality of Reference )を利用するものである。一般に、コンピュータのプログラムの行なわれるときにCPUが参照する下位メモリのアドレスは、ある限定された時間では下位メモリの領域における1つまたは2つの領域のみを集中的に参照し、これを空間的集約性(spatial locality)と言われる。普通のプログラムではいくつかのループ(loop)を実行するに所要される時間が、全プログラムの行なわれる時間の大部分を占め、1つのループ内では同様な命令が反復継続して行なわれる。かつ、現在参照される命令が間もなく参照される場合が多いし、これを時間的集約性(temporal locality )と言われる。
【0004】
このような集約性を利用して、下位メモリとCPU間に速度の速い所定記憶装置をおき、ここにプログラムの行なわれる時頻度に使用される下位メモリの一部領域を貯蔵することがキャッシュメモリの原理である。
【0005】
なお、大部分の応用プログラムはこのような2つの特性をすべて有しているので、数キロバイト程度の小さいメモリを使う場合にも、CPUが下位メモリを参照する、すなわち、全体参照の90%以上をキャッシュメモリで処理することが可能である。
【0006】
キャッシュメモリを使用することにおいて、CPUが参照しようとする命令語ブロックがキャッシュメモリに存在し参照することをキャッシュ接近成功(cache hit )と言い、その反対の場合はキャッシュ接近失敗(cache miss)と言う。キャッシュメモリの性能を表わす尺度としてはキャッシュ接近成功率が使用され、式で示すと次のようである。
【0007】
キャッシュ接近成功率(Hit ratio )=キャッシュ接近成功(cache hit )の回数/メモリ参照の全体回数
一方キャッシュ接近失敗の有形を3つで分けると、初期接近失敗(compulsory miss )、衝突接近失敗(conflict miss )、および容量接近失敗(capacity miss )に分類される。初期接近失敗はあるブロックが最初に参照されるとき発生するキャッシュ接近失敗である。衝突接近失敗はキャッシュメモリの領域に写像(mapping )されているブロックが他のブロックに交換(replacement )された後、再び参照されるとき発生する接近失敗である。容量接近失敗はある応用プログラムを行なうとき、CPUが頻繁に参照するページ(page)の集合である作業集合(working set )がキャッシュメモリの容量よりも大きい場合に発生する接近失敗である。
【0008】
【発明が解決しようとする課題】
このような種類の接近失敗はキャッシュメモリの容量が大きくなるに従って全体接近失敗に対する各々の比率が違うこととなる。初期接近失敗は、特性上、キャッシュメモリの容量にかかわらず一定で、衝突接近失敗と容量接近失敗はキャッシュメモリの容量が大きくなると大抵減少するこ傾向を見せる。しかし、VLSI(Very Large Scale Integration)の発達に従ってオン−チップキャッシュ(on−chip cache )メモリの容量が段々大きくなっているので、初期接近失敗の全体キャッシュ接近失敗に対して占める比率も大きくなっている。このような状況のもと、現在大部分のコンピュータシステムが大容量のキャッシュメモリを主に使用することにより、前述のような初期接近失敗を効果的に減らし得る方法の重要性が増えつつある。
【0009】
初期接近失敗を減らす方法中で一番簡単なものはキャッシュブロックの大きさを大きくすることであり、すると、一度のキャッシュ接近失敗時に多い量の内容がキャッシュメモリに貯蔵されて、順次的な参照の場合キャッシュ接近失敗を減らし得る。しかし、この方法は、1つのブロックを下位メモリからキャッシュメモリに取出しするのに所要されるCPUサイクルが増加し、メモリ交通量が増加し、またキャッシュ接近失敗の費用が増加するという問題点があった。かつ、キャッシュブロックが大きい場合には、参照される部分はブロックの一部であるが、全体ブロックが交換されて、キャッシュ汚染が(cache pollution )発生し性能が低下する。また、ブロックの大きさはメモリ遅延(latency )と伝送率(transfer rate )が反映されて決定されるので、先取り機能の強化のためキャッシュブロックの大きさを単純に増加させることができないという問題点があった。
【0010】
このような問題点を解決するため種々の先取り技法が提案されている。先取りというのは、CPUがメモリのあるブロックに対して参照する前に参照が予想されるメモリブロックを下位メモリから上位メモリに取出しすることである。先取り技法中で一番簡単な技法の順次先取り技法は、現在CPUにより参照されるブロックの次のブロックを順次的に先取る方法であり、応用プログラムにおいてメモリ参照が順次性を多く持つ場合に性能の大きい向上を得ることができるし、一般に、命令語参照がデータ参照に比べより大きい地域性を有するので、この場合順次先取りが比較的優秀な性能を表わす。かつ、これを行なうためのハードウェアが複雑でないという長所がある。しかし、順次先取りは命令語の参照が順次的な経路を従わない場合には、性能の向上を期待することができない。すなわち、条件分岐命令および無条件分岐命令のようなメモリ参照が非順次経路に行なわれる場合には、順次先取りにより得られる利得が大きくないという短所がある。
【0011】
目標先取り(target prefetching)というのは、以前にあるブロックに対して参照が行なわれた経路を予測テーブルに貯蔵しておき、以後に該ブロックに対する参照が行なわれるとき、前記予測テーブルに貯蔵された情報を利用して先取りするブロックを決定する方法である。目標先取り技法は無条件分岐および条件分岐が以前遂行経路を従う傾向が多いのに基づき、以前の行なわれたメモリ参照が順次ブロック(sequential block)を参照した場合には、順次ブロックを、非順次ブロック(non−sequential block)を参照した場合には、非順次ブロックを先取りする。すなわち、メモリ参照時によるブロックAの後にブロックBが参照された場合、次のメモリ参照においてAブロックが参照されるとき、ブロックBを先取りする方法である。このように目標先取りは分岐命令の性質を利用するので、順次先取りに比べ高い正確度を有する。しかし、分岐命令遂行時にメモリ参照がいつも以前の経路を従うことはないし、分岐命令におけるメモリ参照が順次と非順次の経路を交互に行なう場合には、目標先取り方法により性能の向上を図り得ないという問題点があった。
【0012】
複合先取り方法(Hybrid prefetching)というのは、スーパコンピュータなどのようなメモリ帯域幅(bandwidth )の制限が比較的少ないシステムにおいて順次ブロックと目標ブロックのすべてを先取りする方法である。しかし、マイクロプロセッサ(microprocessor)を基板とするシステムにおいてはメモリ帯域幅の制限のため、以前に行なわれた情報を利用して先取りするブロックの優先順位を決めて先取りを行なう。これは既存の複合先取り技法の変形された形態で、次のように行なわれる。
【0013】
たとえば、以前にメモリ参照が順次的な経路に行なわれた場合、現在ブロックの順次ブロック(現在ブロックの住所+1)が先取りされるべき1番目の候補ブロックに決定されるとともに、現在ブロックに対する目標ブロックが先取りされるべき2番目の候補ブロックに決定される。反面に、以前にメモリ参照が非順次的経路に行なわれた場合には、現在ブロックに対する目標ブロックが先取りされるべき1番目の候補ブロックに決定されるとともに、現在ブロックの順次ブロック(現在ブロックの住所+1)が先取りされるべき2番目の候補に決定される。前述のように1番目と2番目の候補が決定されると、該候補ブロックに対する先取りの動作が行なわれる。1番目の候補ブロックがオン−チップメモリに存在していないと、下位メモリからオン−チップメモリに先取りされた後、動作は終了する。しかし、前記1番目の候補ブロックがオン−チップメモリに存在する場合は、2番目の候補ブロックが下位メモリからオン−チップメモリに先取りされ、前記1番目、2番目の候補ブロックがすべてオン−チップメモリに存在する場合先取りは行なわれない。このように変形された複合先取り技法は大部分の場合に順次ブロックと目標ブロックとを先取りする。しかし、変形された複合先取り技法は、従来の複合先取り技法程度の性能向上しか得ることができないし、かつ、従来の複合先取り技法は性能の向上が得られたが、データ伝送率(data transfer rate)を意味するメモリ帯域幅に対する制限が比較的少ないスーパコンピュータなどのみに行なうことが可能という問題点があった。
【0014】
したがって、本発明は先取りされCPUにより参照されないブロックをオン−チップキャッシュメモリの未参照先取りキャッシュに貯蔵し、制限されたメモリ帯域幅を有しているマイクロプロセッサを利用したシステムにおいても、順次ブロックと目標ブロックのすべてを先取りしてキャッシュ接近失敗を減らし、下位メモリに対する接近遅延を減少させるとともに、メモリ交通量を減らし得る未参照先取りキャッシュを利用した命令語先取り方法およびその回路を提供することを目的とする。
【0015】
かつ、本発明の他の目的は、命令語先取り技法において先取りバッファのブロックが交換されるとき、先取りされCPUにより参照されないブロックを所定のオン−チップメモリに貯蔵し以後のメモリ参照に対応するように、未参照先取りキャッシュを利用した命令語先取り方法を提供することである。
【0016】
【課題を解決するための手段】
そして、このような本発明の目的は、未参照先取りキャッシュを利用した命令語先取り回路において、メモリ参照のようなプログラムを行なうため各種制御信号を出力するCPU10と、CPU10のプログラムを行なうのに必要な命令語ブロックを貯蔵する下位メモリ20と、CPU10により参照される命令語ブロックの先取りを制御する先取り制御部70と、下位メモリから先取りされた命令語ブロックを一時貯蔵し、かつ該貯蔵された命令語ブロックがCPU10により参照されたか否かに従い制御信号を出力する先取りバッファ30と、先取りバッファ30から出力する命令語ブロックを先取りバッファの制御信号に従って、CPUにより参照の行なわれた命令語ブロックとそうでないブロックとにデマルチプレクシングするデマルチプレクサ40と、デマルチプレクサ40から出力された命令語ブロック中、CPUにより参照されない命令語ブロックを貯蔵する未参照先取りブロック貯蔵部50と、下位メモリ、デマルチプレクサおよび未参照先取りブロック貯蔵部から出力された命令語ブロックを貯蔵する命令語キャッシュと、を備えることにより構成される。
【0017】
【作用】
既存の種々の先取り技法により先取りされCPUにより参照されない命令語ブロックを先取りバッファで交換するとき、該ブロックを捨てる代わりに未参照先取りキャッシュのオン−チップメモリに貯蔵しておき、次の番に該ブロックに対するメモリ参照があると下位メモリからそのブロックを再び取出さないで、すぐメモリ参照の行なわれるようにした。
【0018】
【実施例】
本発明に関わる未参照先取りキャッシュを利用した命令語先取り回路においては、図1に示すように、命令語を参照してコンピュータの各種制御動作を行なうCPU10と、CPU10により参照されるべき命令語ブロックを貯蔵する下位メモリ20と、下位メモリ20から先取りされたブロックを一時貯蔵するオン−チップメモリの先取りバッファ30と、先取りバッファ30から出力されたブロックがCPU10により参照されたか否かに従いデマルチプレクシングするデマルチプレクサ40と、デマルチプレクサ40から出力されるブロック中、CPU10により参照されないブロックを貯蔵するオン−チップメモリの未参照先取りキャッシュ50と、CPU10により参照された命令語ブロックの貯蔵されるオン−チップメモリの命令語キャッシュ60と、CPU10の制御により先取り動作を制御する先取り制御部70とにより構成される。
【0019】
ここで、前記下位メモリ20は、メモリ階層(hierarchy )が単段階キャッシュメモリシステムの場合には、メインメモリとなり、メモリ階層が多段階キャッシュメモリシステムの場合には下位段階のキャッシュメモリまたはメインメモリとなる。図1はCPU10、先取りバッファ30、未参照先取りキャッシュ50、命令語キャッシュ60、および先取り制御部70などが分離された回路を仮定しているが、このような構成要素は1つのプロセッサチップにともに存在させることもできる。
【0020】
前記先取りバッファ30においては、下位メモリ20から先取りされたブロックを貯蔵するキャッシュブロックフィールド33と、キャッシュブロックフィールド33に貯蔵されたブロックの住所を示すタグフィールド31と、キャッシュブロックフィールド33に貯蔵されたブロックがCPUにより参照されたか否かを示すT−ビットフィールド32と、キャッシュブロックフィールド33に貯蔵されたブロックの内容が有効するかを示すV−ビットフィールド34とにより構成される。
【0021】
先取り制御部70においては、先取りされるべき候補ブロックを決定し、該決定された候補ブロックがオン−チップメモリに存在するかを検索し、検索の結果、前記決定されたブロックがオン−チップメモリに存在しない場合には、下位メモリ20からの先取り要求命令を出力する。かつ、先取りされるべき候補ブロックを決定する回路においては、図2に示すように、CPU10により参照されるべき現在ブロックの住所を貯蔵する現在ブロックアドレス部(current block address unit)72と、以前のメモリ参照遂行時に現在ブロックの次に参照された非順次ブロックの住所を貯蔵する目標ブロックアドレス部(target block address unit )73と、以前の行なわれたメモリ参照が順次的であるかを示す以前遂行情報フィールド(history information field )74とを備えて構成される予測テーブル(prediction table)71と、予測テーブル71の現在ブロックアドレス部72から出力された住所に1を加えた住所と目標ブロックアドレス部73から出力された住所とを、以前遂行情報フィールド74に貯蔵された情報により選択するマルチプレクサ75と、予測テーブル71をアクセスしてアップデータする予測テーブル制御部76とにより構成される。
【0022】
このように構成された未参照先取りブロックを利用した命令語先取り方法およびその回路は色々の先取り技法に適用し得るが、まず、順次ブロックと目標ブロックのすべてを先取りする複合先取り技法に適用した場合を説明する。本発明では命令語キャッシュとデータキャッシュとが各々分離されたシステムを仮定した。かつ、本発明は直接写像キャッシュを仮定したが集合関連写像、完全関連写像などが使用される場合にも同様に適用される。
【0023】
あるプログラムの行なわれるときに必要な命令語ブロックはCPUにより参照される。このときブロックAに対する参照が完了されると、新しいブロックCPU10により参照され、該新しく参照されるブロックはプログラムに従い順次ブロックまたは非順次ブロックになることができる。
【0024】
まず、ブロックAの後に続いて順次ブロックBが参照されると、予測テーブル71の更新が行なわれ、予測テーブル制御部76は前記ブロックAに対する情報が予測テーブル71に存在するかを検索する。もし、予測テーブル71に前記ブロックAに対する情報が存在しないと、予測テーブル71は更新されない。なぜならば、ブロックAに対する該当情報が予測テーブル71に存在しないと、該ブロックAの後に続いて順次的ブロックBが省略時(default )の先取りされるべき対象になるためである。しかし、予測テーブル71の検索結果、ブロックAに対する情報が予測テーブルに存在すると、以前遂行情報フィールド74にブロックAに該当するフィールドが順次経路にセッティングされる。
【0025】
予測テーブル71の更新後に予測テーブル制御部76は先取りする候補ブロックを決定し、これは現在CPUにより参照されたブロックBに対する予測テーブル71が有している情報を利用して行なわれる。以前CPU10によりブロックBの次に参照された経路が順次的である場合、マルチプレクサ75の選択によりブロックBの順次ブロック(現在ブロックBのアドレス+1)が1番目の先取りされるべき候補ブロックに決定され、現在ブロックBに対する目標ブロック、すなわち、ブロックBに該当する目標ブロックアドレス部73に貯蔵されたブロックが2番目の先取りされるべき候補ブロックに決定される。反面に、以前のCPU10によりブロックBの次に参照された経路が非順次的である場合は、マルチプレクサ75の選択により、目標ブロックアドレス部73に貯蔵された現在ブロックBに対する目標ブロックが先取りされるべき1番目の候補ブロックに決定され、現在ブロックの順次ブロックが先取りされるべき2番目の候補ブロックに決定される。
【0026】
かつ、CPU10によりブロックAの次に非順次的なブロックCが参照される場合は、予測テーブルの更新のため予測テーブル制御部76は、前記ブロックAに対する情報が予測テーブルに存在するかを検索する。ブロックAに対する情報が予測テーブル71に存在しないときには、予測テーブル制御部76はブロックAのため予測テーブル71の1つのエントリ(entry )を割当した後、ブロックAのアドレスを予測テーブル71の現在ブロックアドレス部72に貯蔵し、ブロックCのアドレスを目標ブロックアドレス部73に貯蔵して、以前に行なわれた情報フィールド74の該当フィールドを非順次経路にセッティングする。しかし、前記ブロックAに対する情報が予測テーブルに存在する場合には、ブロックCのアドレスを目標ブロックアドレス部73に貯蔵し、以前に行なわれた情報フィールド74の該当フィールドを非順次経路にセッティングする。
【0027】
次いで、予測テーブルの更新後に、予測テーブル制御部70は先取りする候補ブロックを決定するのに、これは現在CPU10により参照されたブロックがCブロックであるので、ブロックCに対する予測テーブル71の情報を利用して行なわれる。ブロックCに対する先取り候補ブロックの決定は、ブロックCに対する予測テーブル71の以前遂行情報フィールド74の情報、すなわち、以前のCPUによりブロックCの次に参照された経路が順次経路であるか、または非順次経路であるかに従い、前記ブロックBの場合と同様な方法により決定される。
【0028】
前述したように、予測テーブル71の更新および先取りされるべき候補ブロックが決定された後、先取りの動作は行なわれる。候補ブロックに対する先取りは、まず1番目の先取り候補ブロックに対して行なわれる。このため先取り制御部70は1番目の候補ブロックがオン−チップメモリ、すなわち命令語キャッシュ60、未参照キャッシュ50、および先取りバッファ30に存在するかを検索する。1番目の先取り候補ブロックがオン−チップメモリに存在しない場合には、先取り制御部70は1番目の先取り候補ブロックを下位メモリ10から先取りして先取りバッファに貯蔵し、先取りの動作を終了する。しかし、前記1番目の先取り候補ブロックがオン−チップメモリに存在する場合には、先取り制御部70は前述した方法により、2番目の先取り候補ブロックに対する先取りを行なう。もし、前述先取り候補ブロックと2番目の先取り候補ブロックのすべてが存在するときは先取りは行なわれない。
【0029】
以上のように、先取りバッファにより先取りされたブロックが先取りバッファ30の容量を超過すると、先取りバッファ30は自体的なブロック交換メカニズム(block replacement mechanism )により、既存の貯蔵されていたブロックは下位メモリ20から新しく先取りされたブロックに交換される。かつ、先取りバッファ30のT−ビットフィールド32においては、CPUにより該当ブロックが参照されるときはリセット、参照されないときはセットと表示され、よって、先取りバッファ30でのブロックの交換が行なわれるとき、CPU10により参照されたブロックは捨てられ、参照されないブロックはT−ビット32の値がデマルチプレクサ40の制御信号として印加されて未参照先取りキャッシュ50へ移動する。なお、先取りバッファ30のブロック交換時、従来のCPU10により参照されない未参照先取りブロックは捨てられたが、本発明の未参照先取りブロックは捨てられないで未参照キャッシュ50に貯蔵され、以後該貯蔵されたブロックがCPU10の参照対象になる場合、下位メモリ20から再び取出しされないですぐ参照が可能になる。
【0030】
本発明に関わる未参照先取りキャッシュを利用した命令語先取り方法を、変形された複合先取り技法と、前進先取り技法を混合した技法に適用すると、より優秀な性能の向上を図り得る。前進先取り技法は現在CPU10により参照されているブロックのd番目の後に参照されると予想されるブロックを先取りする技法であり、ここでdは前進先取りの底部(degree of lookahead prefetching )を示す。たとえ、前進先取りの程度が2である前進先取り技法においてCPU10がブロックD,E,Fを順次に参照した場合、ブロックDに対しての予測テーブル71の目標ブロックアドレス部73にはブロックEの代わりにブロックFの住所が貯蔵される。かつ、前進先取り技法に以前のCPU10より順次ブロックが参照された場合、現在ブロックGに対して先取りされるべきブロックはIのブロック(現在ブロックの住所+2)である。しかし、順次参照時にブロックH(現在ブロックの住所+1)がオン−チップメモリに存在しない場合、キャッシュ接近失敗が発生するので、たとえ先取りしようとするブロックはIブロック(現在ブロックの住所+1)であるが、キャッシュ接近失敗を防止するために、ブロックH(現在ブロックの住所+1)が先取りされるべき1番目の候補ブロックとして決定される。先取りされるべき2番目の候補ブロックは元来先取りしようとするブロック、すなわち、ブロックIであり、3番目の候補ブロックは前記ブロックGに対する目標ブロック、4番目の候補ブロックは前記目標ブロックの直前ブロック(目標ブロックの住所−1)が決定される。
【0031】
また、前進先取り技法において以前のメモリ参照時にCPU10により非順次ブロックが参照された場合、先取りされるべき1番目の候補ブロックは現在ブロックに対する目標ブロックであり、2番目の候補ブロックは該目標ブロックの直前のブロック(目標ブロックの住所−1)で、これは目標ブロックの参照される前に目標ブロックの直前のブロックの参照される可能性が順次参照の場合より小さいためである。先取りされるべき3番目の候補ブロックは現在ブロックの次の番目のブロック(現在ブロックの住所+1)で、4番目の候補ブロックは現在ブロックの住所+2のブロックが決定される。
【0032】
このように先取りされるべき候補ブロックが決定されると、1番目の候補ブロックから先取りが行なわれるが、1番目の候補ブロックがオン−チップメモリに存在しない場合は、該ブロックに対する先取りが行なわれてから完了される。しかし、前記ブロックが既にオン−チップメモリに存在する場合には2番目の候補ブロックに対する先取りが行なわれ、2番目の候補ブロックもオン−チップメモリに存在する場合は3番目の候補ブロックに対する先取りが行なわれる。また、3番目の候補ブロックがオン−チップメモリに存在する場合は4番目の候補ブロックに先取りが行なわれるが、4番目の候補ブロックもオン−チップメモリに存在する場合に先取りの動作は行なわれない。
【0033】
本発明の適用された前進先取り技法において、先取りバッファ30により先取りされるブロックが該先取りバッファ30の容量を超過すると、先取りバッファ30は自体的にブロック交換メカニズム(block replacement mechanism )により既存の貯蔵されたブロックを下位メモリ20から新しく先取りされたブロックに交換される。かつ、先取りバッファ30のTビットフィールド32は該当ブロックがCPU10により参照されたブロックであるとリセット、参照されないブロックであるとセットとして表示される。また、先取りバッファ30からブロックの交換の行なわれるとき、CPUにより参照されたブロックは捨てられ、参照されないブロックはT−ビット32の値がデマルチプレクサ40の制御信号として印加され未参照キャッシュ50に移動する。したがって、先取りバッファ30のブロックの交換時に従来捨てられた未参照先取りブロックは、本発明では捨てられないで未参照先取りキャッシュ50に貯蔵され、以前該ブロックがCPU10の参照対象になるとき、下位メモリ20から再び取出されないですぐCPU10により参照される。
【0034】
【発明の効果】
以上説明したように、本発明に関わる未参照先取りキャッシュを利用した命令語先取り方法は、既存種々の先取り技法により先取りされCPUにより参照されない命令語ブロックを先取りバッファで交換するとき、該ブロックを捨てる代わりに未参照先取りキャッシュのオン−チップメモリに貯蔵しておき、次の番に該ブロックに対するメモリ参照があると下位メモリからそのブロックを再び取出さないで、すぐメモリ参照の行なわれるようにした。したがって、本発明は下位メモリからの取出回数を減らし、命令語参照時の下位メモリからの取出に従うメモリ遅延を減少させて動作の速度を向上させるとともに、メモリ交通量を減少し得る効果がある。
【図面の簡単な説明】
【図1】本発明に関わる未参照先取りキャッシュを利用した命令語先取り回路を示した図面である。
【図2】図1の先取り制御部における先取りする候補ブロックを決定する回路を示した図面である。
【符号の説明】
10 CPU
20 下位メモリ
30 先取りバッファ
40 デマルチプレクサ
50 未参照先取りキャッシュ
60 命令語キャッシュ
70 先取り制御部
71 予測テーブル
72 現在ブロックアドレス部
73 目標ブロックアドレス部
74 以前遂行情報フィールド
75 マルチプレクサ
76 予測テーブル制御部
Claims (6)
- CPUが参照すべき命令語ブロックを所定の命令語先取り技法を利用して下位メモリから先取りバッファに先取りし、CPUが該先取りバッファに貯蔵された命令語ブロックを参照して各種制御動作を行なう命令語先取り回路において、
前記先取りバッファの命令語ブロックの交換時、該先取りバッファから出力され前記CPUにより参照されずに廃棄される命令語ブロックを別途の未参照先取りキャッシュに貯蔵し、該貯蔵された参照されない命令語ブロックをCPUのメモリ参照に使用できるようにしたことを特徴とする命令語先取り方法。 - 前記所定の命令語先取り技法は、順次ブロックと目標ブロックを両方とも先取りする複合先取り技法であることを特徴とする、請求項1に記載の命令語先取り方法。
- 前記所定の命令語先取り技法は、現在参照されているブロックの所定番目以後に参照されると予想されるブロックを先取りする前進先取り技法であることを特徴とする、請求項1に記載の命令語先取り方法。
- メモリ参照が必要なプログラムを行なうため各種の制御信号を出力するCPU(10)と、
該CPUのプログラムを行なうときに必要な命令語ブロックを貯蔵する下位メモリ(20)と、
前記CPUにおいて参照される命令語ブロックの先取りを制御する先取り制御部(70)と、
前記下位メモリ(20)から先取りされた命令語ブロックを一時貯蔵し、該貯蔵した命令語ブロックがCPUにより参照されたか否かに基づいて制御信号を出力する先取りバッファ(30)と、
該先取りバッファ(30)から出力される命令語ブロックを、前記制御信号によって、CPUにより参照された命令語ブロックと、参照されない命令語ブロックとにデマルチプレクシングするデマルチプレクサ(40)と、
該デマルチプレクサ(40)から出力された命令語ブロック中、前記CPUにより参照されない命令語ブロックを貯蔵する未参照先取りブロック貯蔵部(50)と、
前記下位メモリ(20)、デマルチプレクサ(40)および未参照先取りブロック貯蔵部(50)から出力された命令語ブロックを貯蔵する命令語キャッシュ(60)と、
を備えた命令語先取り回路。 - 前記未参照先取り貯蔵部(50)は、キャッシュメモリであることを特徴とする、請求項4に記載の命令語先取り回路。
- 前記先取りバッファ(30)は、先取りされた命令語ブロックを貯蔵するキャッシュブロックフィールド(33)と、該キャッシュブロックフィールド(33)に貯蔵された命令語ブロックが有効か否かを表わすV−ビットフィールド(34)と、前記キャッシュブロックフィールド(33)に貯蔵された命令語ブロックのアドレスを表わすタグフィールド(31)と、前記キャッシュブロックフィールド(33)に貯蔵された命令語ブロックが前記CPUにより参照されたかを表わすT−ビットフィールド(32)とを備えて構成される、請求項4に記載の命令語先取り回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950008366A KR0146059B1 (ko) | 1995-04-11 | 1995-04-11 | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 |
KR95P8366 | 1995-04-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08292913A JPH08292913A (ja) | 1996-11-05 |
JP3628375B2 true JP3628375B2 (ja) | 2005-03-09 |
Family
ID=19411899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10511995A Expired - Fee Related JP3628375B2 (ja) | 1995-04-11 | 1995-04-28 | 未参照先取りキャッシュを利用した命令語先取り方法およびその回路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6272622B1 (ja) |
JP (1) | JP3628375B2 (ja) |
KR (1) | KR0146059B1 (ja) |
DE (1) | DE19533962B4 (ja) |
FR (1) | FR2733065B1 (ja) |
GB (1) | GB2299879B (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19912245B4 (de) * | 1998-03-20 | 2006-12-07 | Matsushita Electric Industrial Co., Ltd., Kadoma | Cache-Speicher-Vorrichtung mit variablem Blockgrößen-Mechanismus |
US6799263B1 (en) * | 1999-10-28 | 2004-09-28 | Hewlett-Packard Development Company, L.P. | Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted |
WO2001091930A1 (en) * | 2000-06-01 | 2001-12-06 | C.H.O.C.S., Inc. | Systems and methods for cleaning oxygen lines |
US8549226B2 (en) * | 2004-05-14 | 2013-10-01 | Hewlett-Packard Development Company, L.P. | Providing an alternative caching scheme at the storage area network level |
US7395375B2 (en) * | 2004-11-08 | 2008-07-01 | International Business Machines Corporation | Prefetch miss indicator for cache coherence directory misses on external caches |
CN100445944C (zh) * | 2004-12-21 | 2008-12-24 | 三菱电机株式会社 | 控制电路以及控制方法 |
US20060200631A1 (en) * | 2005-03-02 | 2006-09-07 | Mitsubishi Denki Kabushiki Kaisha | Control circuit and control method |
JP4491500B2 (ja) * | 2007-01-30 | 2010-06-30 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP2008186233A (ja) * | 2007-01-30 | 2008-08-14 | Toshiba Corp | 命令キャッシュプリフェッチ制御方法及びその装置 |
US11169925B2 (en) * | 2015-08-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds |
US10719321B2 (en) * | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US9928176B2 (en) * | 2016-07-20 | 2018-03-27 | Advanced Micro Devices, Inc. | Selecting cache transfer policy for prefetched data based on cache test regions |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4439827A (en) * | 1981-12-28 | 1984-03-27 | Raytheon Company | Dual fetch microsequencer |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
US5261066A (en) * | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
DE69132201T2 (de) | 1990-03-27 | 2000-12-28 | Compaq Computer Corp | Speicher-Anordnung und Verfahren mit Vorausholungspuffer |
DE4306077A1 (ja) | 1992-02-27 | 1993-09-02 | Hewlett Packard Co | |
US5454117A (en) * | 1993-08-25 | 1995-09-26 | Nexgen, Inc. | Configurable branch prediction for a processor performing speculative execution |
DE4330119C1 (de) * | 1993-09-06 | 1994-09-22 | Siemens Ag | Verfahren zum gesteuerten Vorladen von Informationsblöcken in Cacheblockgröße in einen Cachespeicher eines Rechners bei Ablauf eines Programms |
-
1995
- 1995-04-11 KR KR1019950008366A patent/KR0146059B1/ko not_active IP Right Cessation
- 1995-04-28 JP JP10511995A patent/JP3628375B2/ja not_active Expired - Fee Related
- 1995-09-01 US US08/522,222 patent/US6272622B1/en not_active Expired - Lifetime
- 1995-09-07 GB GB9518309A patent/GB2299879B/en not_active Expired - Lifetime
- 1995-09-08 FR FR9510520A patent/FR2733065B1/fr not_active Expired - Lifetime
- 1995-09-13 DE DE19533962A patent/DE19533962B4/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
FR2733065B1 (fr) | 1997-12-05 |
GB2299879A (en) | 1996-10-16 |
KR0146059B1 (ko) | 1998-09-15 |
KR960038620A (ko) | 1996-11-21 |
US6272622B1 (en) | 2001-08-07 |
GB2299879B (en) | 2000-02-23 |
FR2733065A1 (fr) | 1996-10-18 |
JPH08292913A (ja) | 1996-11-05 |
DE19533962A1 (de) | 1996-10-24 |
DE19533962B4 (de) | 2008-06-26 |
GB9518309D0 (en) | 1995-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6796468B2 (ja) | 分岐予測器 | |
US9141553B2 (en) | High-performance cache system and method | |
US5381533A (en) | Dynamic flow instruction cache memory organized around trace segments independent of virtual address line | |
US20150186293A1 (en) | High-performance cache system and method | |
US5828860A (en) | Data processing device equipped with cache memory and a storage unit for storing data between a main storage or CPU cache memory | |
US6539458B2 (en) | Hierarchical memory for efficient data exchange control | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
US7073030B2 (en) | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio | |
US5822757A (en) | Computer system with multi-buffer data cache for prefetching data having different temporal and spatial localities | |
US5423048A (en) | Branch target tagging | |
US9753855B2 (en) | High-performance instruction cache system and method | |
JP6467605B2 (ja) | 命令処理システムと方法 | |
US9595075B2 (en) | Load/store operations in texture hardware | |
JP3628375B2 (ja) | 未参照先取りキャッシュを利用した命令語先取り方法およびその回路 | |
JPH0557617B2 (ja) | ||
KR19990087940A (ko) | 단일클럭사이클내에불연속명령을페치하기위한방법및시스템 | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
US9569219B2 (en) | Low-miss-rate and low-miss-penalty cache system and method | |
US20150356025A1 (en) | High-performance cache system and method | |
TW201638774A (zh) | 一種基於指令和資料推送的處理器系統和方法 | |
US7373485B2 (en) | Clustered superscalar processor with communication control between clusters | |
US5889986A (en) | Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer | |
JP3590427B2 (ja) | 先行読出機能付命令キャッシュメモリ | |
US20050198439A1 (en) | Cache memory prefetcher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040419 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040427 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040726 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040729 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041025 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041208 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071217 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081217 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091217 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111217 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131217 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |