JP4532931B2 - Processor and prefetch control method - Google Patents
Processor and prefetch control method Download PDFInfo
- Publication number
- JP4532931B2 JP4532931B2 JP2004049348A JP2004049348A JP4532931B2 JP 4532931 B2 JP4532931 B2 JP 4532931B2 JP 2004049348 A JP2004049348 A JP 2004049348A JP 2004049348 A JP2004049348 A JP 2004049348A JP 4532931 B2 JP4532931 B2 JP 4532931B2
- Authority
- JP
- Japan
- Prior art keywords
- data stream
- load
- store instruction
- frequency
- prefetch
- 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
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、プロセッサ、および、プリフェッチ制御方法に係り、メモリからキャッシュへのプリフェッチ機能を有するプログラムであって、特に、ストライド・アクセスを含む複数データストリームを持つメモリアクセスに用いて好適なプロセッサ、および、プリフェッチ制御方法に関する。 The present invention relates to a processor and a prefetch control method, and is a program having a prefetch function from a memory to a cache, and is particularly suitable for a memory access having a plurality of data streams including stride access, and The present invention relates to a prefetch control method.
コンピュータシステムにおいて、プロセッサ処理性能に比較して、メモリ処理性能の向上率が低いため、年々その処理性能の乖離が著しくなっている。そのため、プロセッサ内にキャッシュメモリを実装し、メモリ処理性能の遅さを隠蔽するのが普通となっている。しかし、キャッシュメモリはデータの時間的・空間的局所性を利用するため、局所性の無いメモリアクセスパターンでは、キャッシュメモリが有効に働かないことがあり、処理性能が極端に悪化する。このような現象は、特に大規模科学技術計算に多く見られるように、配列データを連続的にアクセスし、前の段階で計算に用いたデータの再利用性が低いときに発生する。これに対する対策方法としては、コンパイラ・アセンブラなどにより、メモリからキャッシュメモリへと事前にデータを転送させるプリフェッチ命令を挿入するコードを生成することで性能低下を防いできた。しかしながら、データ配列をリストアクセスする場合や、オブジェクト指向言語で書かれたプログラムでは、メモリアクセスパターンが連続アクセスであったとしても、プリフェッチ命令を挿入したコードを生成できない場合が多い。一方、以下の特許文献1に示されるようなハードウェアでプリフェッチをおこなう方式では、連続的なアドレスに対するアクセス・ストリームと不連続なアドレスに対するアクセス・ストリームが混在した場合に、全ストリームに一様にプリフェッチ要求を発行してしまうため、不連続なアクセス・ストリームに対しては、プリフェッチ発行対象のデータがキャッシュに到達する前にロード要求が発行されてしまい、メモリからのデータ転送のレイテンシを隠蔽し切れず有効にプリフェッチが機能しない問題が起こる可能性がある。この問題に対する解決としては、特許文献1のように、十分先のアドレスに対してプリフェッチ要求を出すことや、複数のプリフェッチ命令一度に出すことが考えられるが、これは無尽蔵ではないメモリバンド幅を圧迫し、また、過剰に出してしまった多量のプリフェッチがループ終了時に残ってしまう問題(オーバーラン)を引き起こしてしまう。また、以下の特許文献2のように、前回アクセスしたアドレスと今回アクセスしたアドレスとの差分から次のアドレスを予測しプリフェッチ要求を出すことにより、不連続アドレスに対するプリフェッチの有効性を高める技術があるが、全てのデータアクセスストリームに対してアドレス履歴を保存する領域を確保することはチップ面積の増大を招く問題がある。
In a computer system, since the improvement rate of memory processing performance is low compared to processor processing performance, the difference in processing performance has become significant year by year. For this reason, it is common to mount a cache memory in the processor to conceal the slowness of memory processing performance. However, since the cache memory uses temporal / spatial locality of data, the cache memory may not work effectively in a memory access pattern without locality, and the processing performance is extremely deteriorated. Such a phenomenon occurs when the sequence data is continuously accessed and the reusability of the data used in the calculation at the previous stage is low, as is often seen in large-scale scientific and engineering calculations. As a countermeasure against this, it was possible to prevent performance degradation by generating a code for inserting a prefetch instruction for transferring data in advance from the memory to the cache memory by a compiler / assembler or the like. However, in the case of list access of a data array or a program written in an object-oriented language, it is often impossible to generate a code in which a prefetch instruction is inserted even if the memory access pattern is continuous access. On the other hand, in the method of prefetching with hardware as shown in
キャッシュメモリを設けたプロセッサでは、キャッシュメモリの短いアクセスレイテンシを想定して、命令スケジューリングをおこなうため、キャッシュミスを起こすと処理性能が大幅に低下する。これに対し、多くのプロセッサは、ハードウェアまたはソフトウェアによってプリフェッチ処理を実現し、メモリのアクセスレイテンシを隠蔽するのに十分な時間分前もってデータをキャッシュに転送しておくのが普通である。ソフトウェアによるプリフェッチでは、コンパイラ・アセンブラや人手でによりコード中に効率よくプリフェッチ命令を埋め込むことが可能であるが、命令数の増加によるオーバーヘッドが問題となる。一方のハードウェア・プリフェッチでは通常、複数のデータストリームに対しプリフェッチ要求を発行できる仕組みをプロセッサ内部で実現するが、例えば連続でないメモリアドレスに対するアクセス(例えば、配列においてインデックスが2づつ増加していくA(0),A(4),A(8),A(12),…のようなストライド・アクセス)ストリームでは、ループのイタレーション(iteration, 反復段階)が進むに従って連続アクセス・ストリームに比べ速いスピードでロード要求先アドレスが増加(または減少)することから、連続アクセスのストリームと同じだけ先のアドレスにプリフェッチ要求を出してしまう場合には不連続アクセス・ストリーム側でレイテンシが隠し切れないという問題が起こる。この問題に対して、全てのストリームに十分な時間分前もってプリフェッチ要求を出すことも考えられるが、特にストリーム数が多い場合においてはメモリバンド幅をプリフェッチによる転送データで食いつぶしてしまうこと、また、相当サイズのキャッシュが要求されること、ループ終了後にも余剰のプリフェッチ要求により、次のループが始まり新しいストリームが生成されているにも拘らず前回ループに関するデータがメモリから転送されてしまう(オーバーラン・プリフェッチ)問題を引き起こしてしまうため、現実的ではない。 In a processor provided with a cache memory, instruction scheduling is performed assuming a short access latency of the cache memory. Therefore, if a cache miss occurs, the processing performance is significantly reduced. In contrast, many processors typically implement prefetch processing with hardware or software, and typically transfer data to the cache a sufficient amount of time to conceal the memory access latency. In prefetching by software, it is possible to embed prefetch instructions efficiently in code by a compiler / assembler or manually, but overhead due to an increase in the number of instructions becomes a problem. On the other hand, in hardware prefetch, a mechanism that can issue a prefetch request to a plurality of data streams is usually realized in the processor. For example, access to non-contiguous memory addresses (for example, an index increases by 2 in an array A). (0), A (4), A (8), A (12), ... (stride access) streams are faster than continuous access streams as the iteration of the loop progresses Since the load request destination address increases (or decreases) at a speed, the latency cannot be concealed on the discontinuous access stream side when a prefetch request is issued to the same address as the continuous access stream. Happens. To solve this problem, it may be possible to issue a prefetch request to all streams in advance, but especially when the number of streams is large, the memory bandwidth may be devoured by the transfer data by prefetching. The size of the cache is requested, and the extra prefetch request after the end of the loop causes the data related to the previous loop to be transferred from the memory even though the next loop starts and a new stream is generated (overrun (Prefetch) problem, which is not realistic.
本発明は、上記問題点を解決するためになされたもので、その目的は、プリフェッチ機能を有するプロセッサにおいて、命令数増大によるオーバーヘッドがないハードウェアによるプリフェッチにより、データストリーム間の要求先アドレス増減のスピードに応じてプリフェッチ要求先アドレスを可変にして、メモリ性能の優れたプロセッサを提供することにある。 The present invention has been made in order to solve the above-described problems, and an object of the present invention is to increase or decrease the request destination address between data streams in a processor having a prefetch function by hardware prefetch without an overhead due to an increase in the number of instructions. An object of the present invention is to provide a processor with excellent memory performance by changing the prefetch request destination address according to the speed.
本発明のハードウェアプリフェッチをおこなうプロセッサは、連続アクセスが続くであろうというデータストリームを検出すると、そのデータストリームが現在アクセスしているアドレスを保持するとともに、そのデータストリームにおいて起こったキャッシュミスの頻度、または、キャッシュラインが更新された頻度をデータストリーム管理テーブルに保持する。そして、現在データストリーム管理テーブルに保持されている全てのデータストリームの頻度情報を元に、それぞれのストリームに対し最適なプリフェッチ要求先アドレスをハードウェアが自動的に設定し、プリフェッチ要求を発行することにある。すなわち、キャッシュミスの頻度、または、キャッシュラインが更新された頻度の大小に応じて、プリフェッチオフセットの増減をおこなう。そして、アクセスしているメモリアドレスに対してそのプリフェッチオフセットを加算したアドレスをプリフェッチ要求先アドレスとし、メモリからキャッシュメモリにプリフェッチ要求をおこなう。 When a processor that performs hardware prefetching of the present invention detects a data stream that will continue to be accessed continuously, it maintains the address that the data stream is currently accessing, and the frequency of cache misses that occurred in the data stream. Alternatively, the frequency at which the cache line is updated is held in the data stream management table. Based on the frequency information of all data streams currently held in the data stream management table, the hardware automatically sets the optimum prefetch request destination address for each stream and issues a prefetch request. It is in. That is, the prefetch offset is increased or decreased according to the frequency of cache misses or the frequency of cache line updates. Then, a prefetch request is made from the memory to the cache memory using an address obtained by adding the prefetch offset to the memory address being accessed as a prefetch request destination address.
本発明によれば、プリフェッチ機能を有するプロセッサにおいて、命令数増大によるオーバーヘッドがないハードウェアによるプリフェッチにより、データストリーム間の要求先アドレス増減のスピードに応じてプリフェッチ要求先アドレスを可変にして、メモリ性能の優れたプロセッサを提供することができる。 According to the present invention, in a processor having a prefetch function, the prefetch request destination address is made variable according to the speed of increase / decrease of the request destination address between data streams by hardware prefetch without the overhead due to the increase in the number of instructions, thereby improving the memory performance. An excellent processor can be provided.
以下、本発明に係る各実施形態を、図1ないし図13を用いて説明する。 Embodiments according to the present invention will be described below with reference to FIGS.
〔実施形態1〕
以下、本発明に係る第一の実施形態を、図1ないし図6を用いて説明する。
先ず、図1を用いて本発明の第一の実施形態に係るプロセッサを用いたシステム構成とその動作について説明する。
図1は、本発明の第一の実施形態に係るプロセッサを用いたシステム構成図である。
[Embodiment 1]
A first embodiment according to the present invention will be described below with reference to FIGS.
First, a system configuration using the processor according to the first embodiment of the present invention and its operation will be described with reference to FIG.
FIG. 1 is a system configuration diagram using a processor according to the first embodiment of the present invention.
本実施形態のコンピュータシステム300は、プロセッサ310とメモリ240を持つ。
The
プロセッサ310は、ロード/ストア・ユニット10と、キャッシュメモリ(図と以下の説明では、単に「キャッシュ」ともいう)150と、データストリーム管理テーブル320とを有する。データストリーム管理テーブル320は、データストリームに関する情報を保持し、プリフェッチの制御に用いるためのテーブルである。キャッシュメモリ150は、本実施形態では、プロセッサの内部に描いたが、プロセッサの外部に設けられるキャッシュに対しても本発明は有効である。
The
本実施形態における、キャッシュメモリ150はライン単位で管理されているものとする。ラインとは、複数ワード長の集合であり、メモリからキャッシュへのデータ転送はこのライン単位でおこなわれ、ロード/ストア・ユニットとキャッシュ間のアドレス指定はメモリアドレスの上位の一部のビットからなるキャッシュラインアドレスによりなされる。
In this embodiment, it is assumed that the
データストリーム管理テーブル320は、ハードウェア・プリフェッチの発行対象となっているデータストリームにおける情報を保持するためのエントリを複数持っている。図1と以下の説明では、データストリームにおける情報を保持するためのエントリは二つとしたが、多いほうが性能向上の観点からは望ましい。 The data stream management table 320 has a plurality of entries for holding information in the data stream for which hardware prefetch is issued. In FIG. 1 and the following description, there are two entries for holding information in the data stream, but a larger number is desirable from the viewpoint of performance improvement.
データストリーム管理テーブル320のエントリ530は、レジスタ50、400、410、90を持ち、エントリ535は、レジスタ55、405、415、95を持つ。
The
レジスタ50、55は、保持するデータストリームの最新のロード/ストア要求先キャッシュラインアドレスの値を保持するレジスタであり、ロード/ストア要求が新しいキャッシュラインアドレスを有するメモリエリアにアクセスするたびに更新される。
The
レジスタ400、405は、保持するデータストリームのアドレスの変化がプラスの方向かマイナスの方向のどちらに進行しているかを符号として保持する。すなわち、これは、そのデータストリームに対してロード/ストア要求先が発行されるアドレスの方向でもある。
The
レジスタ410、415は、各保持データが現在有効なデータストリームのものであるかどうかを保持する。有効であると判断される間は、このデータストリームに関する情報は、破棄されることはない。有効でないと判断されたエントリは、破棄され、新しいデータストリームの情報を格納するために使われる。エントリが有効性でないとの判断は、一定期間更新されていないときになされ、これらのレジスタ410、415に、初期化機構550がおこなう。この詳細な処理については、後に説明する。
レジスタ90、95は、各データストリームにおいて起きたキャッシュミスの回数を保持する。
以下では、本実施形態のプロセッサ310の動作について説明する。
Below, operation | movement of the
先ず、レジスタ50、55にキャッシュラインアドレスを格納する処理について説明する。
First, processing for storing the cache line address in the
プロセッサ310において、ロード/ストア・ユニット10からキャッシュ150に対してロード要求がデータ線20により発行されると、それと同時にそのロード要求の要求先キャッシュラインアドレスがデータ線30によりデータストリーム検出のための制御機構60に伝えられる。
In the
なお、以下の説明では、ロード要求の例について述べるが、ストア要求についても同様である。 In the following description, an example of a load request will be described, but the same applies to a store request.
制御機構60は、その要求先キャッシュラインアドレスを、データ線350または360により伝えられるデータストリーム管理テーブル320の保持するデータストリームの前回要求先キャッシュラインアドレスと比較する。そして、ロード要求が同一のデータストリームに対してなされたものであると認識すると、データ線30により伝えられるロード要求先キャッシュラインアドレスをそのデータストリームの次のロード要求先キャッシュラインアドレスとして更新するための動作をする。すなわち、その要求先キャッシュラインアドレスアドレスが保持している二つのデータストリームの内、いずれかのデータストリームに属するかをデータ線75によりエントリ番号として選択器430に伝える。
The
また、制御機構60は、データストリーム検出の機能を有しており、データ線30により伝えられたロード要求先キャッシュラインアドレスが新規のデータストリームにおけるロード要求先キャッシュラインアドレスであると認識すると、新規のデータストリームであることをデータ線75に伝える。例えば、データストリームの検出は、ロード/ストア要求が、連続して所定のキャッシュラインに発行されたときにおこなわれる。
Further, the
さらに、制御機構60は、データストリーム検出時にそのデータストリームの進行方向がプラス方向かマイナス方向か、すなわち、データストリームにおいてアクセスされるアドレスが増加するか減少するかを、前回アドレスと新規要求先アドレスの差分をとることで判断し、データ線450または455により、レジスタ400または405に、その進行方向を記録する
選択器430は、データ線75により伝えられるエントリ番号のエントリが保持するデータストリームのキャッシュラインアドレスを新規アドレスで置き換えるため、レジスタ50または55にデータ線630または635によりデータ線30より伝えられる新規アドレスを伝える。また、データ線75により新規のデータストリームの検出が伝えられると、エントリ530とエントリ535の有効ビットをデータ線600および605により確認し、有効ビットが0(無効)のエントリのキャッシュラインアドレスをデータ線30の新規アドレスに置き換えるため、その新規アドレスをデータ線630または635に伝える。エントリ530とエントリ535の有効ビットがいずれも0であれば、データストリームはエントリ530に登録することにする。エントリ530とエントリ535の有効ビットがどちらも1(有効)であれば、データストリームの登録は破棄される。すなわち、いずれのエントリが使用中のときには、新しいデータストリームに関する情報は登録されない。本実施形態のデータストリーム管理テーブルの更新アルゴリズムは、このように、有効ビットを書き換えることになされるが、他のアルゴリズム、例えば、LRU(Least Recently Used)アルゴリズムなどによってもよい。
Further, when the data stream is detected, the
次に、ロード要求がキャッシュミスを引き起こした場合の動作について説明する。 Next, an operation when a load request causes a cache miss will be described.
データ線20により伝えられるロード要求がキャッシュミスを引き起こした場合には、データ線330により選択器460に、そのキャッシュミスを引き起こしたキャッシュラインアドレスが伝えられる。選択器460は、データ線75により伝えられるエントリ番号に対応するデータストリームにおける、データ線470またはデータ線475より伝えられるキャッシュミス回数をデータ線480を用いて加算器490に伝える。
When the load request transmitted through the
加算器490は、データ線480より伝えられたキャッシュミス回数に対し1を加えたものを新規キャッシュミス回数としてデータ線500を用いて選択器510に伝える。選択器510はデータ線75により伝えられるエントリ番号を基にデータ線520またはデータ線525のいずれかを用い、キャッシュミス回数90または95を書き換える。
The
次に、ハードウェア・プリフェッチの要求先アドレスを決定する場合の動作を説明する。 Next, the operation for determining the hardware prefetch request destination address will be described.
データストリーム管理テーブル320が保持する各ストリームのキャッシュミス回数90、95は、それぞれデータ線470、475によりAND回路580、585に伝えられ、AND回路580、585は、伝えられた回数とデータ線600、605により伝えられる有効ビットを回数情報のビット幅に拡張したものとのANDをそれぞれとり、出力をデータ線220、225に伝える。これにより、有効ビットが0(無効)のときには、キャッシュミス回数は常に0にクリアされる。
The cache miss counts 90 and 95 of each stream held in the data stream management table 320 are transmitted to the AND
加算器100は、データ線220、225より伝えられるキャッシュミス回数の和をデータ線210に伝える。除算器110、115は、それぞれデータ線220、225より伝えられるキャッシュミス回数をそれぞれ被除数とし、データ線210より伝えられる全ストリームのキャッシュミス回数の和を除数210とする頻度比率を計算する。乗算器120、125は、それぞれデータ線610、615より伝えられる各ストリームにおける頻度比率と、それぞれデータ線620、625により伝えられる各ストリームの進行方向を表す符号と、1ストリーム時の最大プリフェッチオフセット量レジスタ800から持ってきた最大プリフェッチオフセット量とを乗じ、小数点以下は切り捨てた上で、その結果をそれぞれデータ線160、165に伝える。
The
最大プリフェッチオフセット量レジスタ800は、ROMなどの書き換え不可能なメモリでもよいし、書き換え可能なメモリでもよい。最大プリフェッチオフセット量は、プロセッサやメモリの性能、また、実行させるプログラムにより最適な値を選択することができる。
The maximum prefetch offset
加算器130、135は、それぞれデータ線160、165より伝えられる入力を各データストリームにおけるプリフェッチオフセット量として、データ線350、360より伝えられるキャッシュラインアドレスに対して加え、それぞれをデータ線230、235に伝える。キャッシュ150はデータ線230、235より伝えられるキャッシュラインアドレスを各データストリームに対するプリフェッチ要求の要求先キャッシュラインアドレスとし、そのプリフェッチ要求先キャッシュラインアドレスが更新されるのを契機に、データ線260によりハードウェア・プリフェッチを発行する。キャッシュ150は、メモリ240から要求データをデータ線140により受け取り、データ線200によりロード/ストア・ユニット10に伝える。
The
次に、図2を用いて制御機構60の詳細な構成と動作について説明する。
図2は、本発明の第一の実施形態に係る制御機構60の構成図である。
Next, the detailed configuration and operation of the
FIG. 2 is a configuration diagram of the
制御機構60において、データ線30より伝えられるロード要求先の新規キャッシュラインアドレスは、減算器820、830においてそれぞれデータ線350、360より伝えられる保持されているデータストリームの前回の要求先キャッシュラインアドレスとの差分が計算され、それぞれデータ線840、850にその結果を伝える。比較器860は、データ線840または850から伝えられる値がプラス1かマイナス1であることを確認すると、プラスかマイナスかをデータ線800に伝え、データ線840とデータ線850のどちらの結果がプラスまたはマイナス1であったのかをデータ線810に伝える。
In the
このような制御機構60の動作は、キャッシュラインアドレスの変化がプラス・マイナス1のときには、同一のデータストリームが続いているものとして処理するためのものである。
Such an operation of the
また、制御機構60はデータストリーム検出機構870を有し、データ線30より伝えられるキャッシュラインアドレスが新規のデータストリームであることを検出すると、それをデータ線880に伝える。
Further, the
本発明はデータストリーム検出の方法には依存しないが、本実施形態においては特許文献1に代表されるように、連続するキャッシュラインにアクセスがあった場合にそれをストリームとして検出するものとする。制御機構60は、データ線810とデータ線880をデータ線75にまとめて出力する。選択器890は、データ線800により伝えられるプラスかマイナスかを示す符号データでデータ線810が示すエントリの符号レジスタを書き換えるため、データ線450または455に符号データを伝える。
Although the present invention does not depend on a data stream detection method, in this embodiment, as represented by
次に、図3を用いて初期化機構550の詳細な構成と動作について説明する。
Next, the detailed configuration and operation of the
図3は、本発明の第一の実施形態に係る初期化機構550の構成図である。
FIG. 3 is a configuration diagram of the
初期化機構は、新規のデータストリームが検出されたときと、一定時間保持しているデータストリームにおけるロード/ストア要求先キャッシュラインアドレスの更新がないときに、データストリーム管理テーブル30を初期化する機能を持つ。 The initialization mechanism is a function for initializing the data stream management table 30 when a new data stream is detected and when there is no update of the load / store request destination cache line address in the data stream held for a certain period of time. have.
初期化機構550において、データ線75から比較器1260に新規データストリームの検出が伝えられると、比較器1260はデータ線600またはデータ線605よりエントリ530またはエントリ535で有効ビットが0であるエントリのエントリ番号をデータ線1280に伝え、エントリ530とエントリ535のどちらの有効ビットも0である場合は、対象エントリがないことをデータ線1280に伝え、エントリ530とエントリ535のどちらの有効ビットも1である場合はエントリ530のエントリ番号をデータ線1280に伝える。
In the
初期化機構550において、カウンタ1240はクロック・サイクルをカウントしており、実装により既定のサイクル数をカウントしたら、それを比較器1230に伝えると共に0に戻って、再びカウントを始める。比較器1230は、データ線75の出力から、エントリ530またはエントリ535のデータストリームにおけるロード/ストア要求先キャッシュラインアドレスの更新が伝えられると、エントリ530の場合はデータ線1300によりレジスタ1220を、エントリ535の場合はデータ線1305によりレジスタ1225を、それぞれ1にセットする。また比較器1230はカウンタから既定サイクルの経過を伝えられると、データ線1290および1295からの入力を調べ、入力値が0であるエントリ番号をデータ線1270に伝えると共に、レジスタ1220および1225をデータ線1300および1305により0にリセットする。
In the
選択器1250は、データ線1270および1280から伝えられるエントリ番号を基に、エントリ530の場合はデータ線1200により、また、エントリ535の場合はデータ線1205により、各エントリの有効ビットとキャッシュミス回数を0にリセットする。
Based on the entry numbers transmitted from the
これにより、一定期間、データストリーム管理テーブル30のレジスタ50、55に格納されたキャッシュラインアドレスの変化がないエントリのレジスタ410、415の有効ビットに0が格納されて、そのエントリは、他のデータストリームの情報を格納するために使用できるようになる。
As a result, 0 is stored in the valid bits of the
次に、図4ないし図6を用いて本実施形態の効果を説明する。
図4は、本発明の第一の実施形態に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
図5は、従来技術に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
図6は、図4におけるメモリアクセスの場合の各段階のキャッシュミス回数とプリフェッチオフセットを示す表である。
Next, the effect of this embodiment will be described with reference to FIGS.
FIG. 4 is a diagram showing a state of memory access for prefetch control according to the first embodiment of the present invention.
FIG. 5 is a diagram illustrating a state of memory access for prefetch control according to the related art.
FIG. 6 is a table showing the number of cache misses and prefetch offsets at each stage in the case of memory access in FIG.
ここで、図2は、キャッシュミス回数に応じてプリフェッチオフセットが変化し、ストリームに応じて最適なタイミングでプリフェッチが発行される様子を示している。また、比較のため、図6は複数のデータストリームに対し一様のプリフェッチオフセットでプリフェッチ要求を出した場合の様子を示している。この図6の場合には、プリフェッチオフセット量は、固定の3キャッシュライン分である。 Here, FIG. 2 shows a state in which the prefetch offset changes according to the number of cache misses, and the prefetch is issued at an optimal timing according to the stream. For comparison, FIG. 6 shows a state in which a prefetch request is issued with a uniform prefetch offset for a plurality of data streams. In the case of FIG. 6, the prefetch offset amount is for three fixed cache lines.
さて、モデルとして、スカラー変数iによるループで、A(i)、B(i*4)の2つのストリームが存在するループを考える。二つの横軸は配列A,Bのメモリ空間を表しており、短い目盛りが1ワード長、長い目盛りが各イタレーションにおいてアクセスするメモリアドレスである。目盛りの下の数値はiの値を表す。×印はそのイタレーションでキャッシュミスを起こしたことを示す。矢印はプリフェッチ要求を表しており、矢印の起点はプリフェッチを発行するタイミングを表し、矢印の終点はプリフェッチ要求先のキャッシュラインの先頭を指す。すなわち、矢印の起点のメモリアドレスのところに、ロード/ストア要求が発行されたときに、矢印の終点の部分に、プリフェッチ要求がなされる。そして、矢印の長さがプリフェッチオフセットである。なお、点線の矢印は、既に、そのキャッシュラインにプリフェッチ要求がなされているので、実際には、プリフェッチ要求がおこなわれないことを意味する。 Now, as a model, consider a loop with a scalar variable i in which two streams A (i) and B (i * 4) exist. The two horizontal axes represent the memory spaces of the arrays A and B. The short scale is one word length, and the long scale is a memory address accessed in each iteration. The numerical value below the scale represents the value of i. A cross indicates that a cache miss has occurred during the iteration. The arrow indicates a prefetch request, the starting point of the arrow indicates the timing of issuing a prefetch, and the end point of the arrow indicates the beginning of the cache line to which the prefetch request is made. That is, when a load / store request is issued at the memory address at the starting point of the arrow, a prefetch request is made at the end point of the arrow. The length of the arrow is the prefetch offset. A dotted arrow means that a prefetch request is not actually made because a prefetch request has already been made to the cache line.
ここで、本実施形態のシステムのメモリにおいては、メモリ240からキャッシュ150への転送におけるレイテンシは、本ループが全てのロード要求でキャッシュヒットし4度回る時間、すなわち、iが4増える時間であるとする。
Here, in the memory of the system of the present embodiment, the latency in the transfer from the
また、本実施形態のシステムの既定の1ストリーム時の最大プリフェッチオフセット量は6であるとし、1キャッシュラインは4ワード分であるとする。 In addition, it is assumed that the maximum prefetch offset amount for a predetermined one stream of the system of the present embodiment is 6, and that one cache line is for 4 words.
さて、図5に示されるように、A(0)をアクセスするときに、キャッシュミスが発生する。次のA(1)〜A(3)では、キャッシュにデータが持ってこられるためキャッシュのデータがヒットする。そして、A(4)でキャッシュミスが発生する。このときに、連続したキャッシュラインアドレスにおいてキャッシュミスが発生したために、データストリームを検出したことになり、3キャッシュライン分のプリフェッチオフセットにより、プリフェッチ要求を出す。同様にして、A(8)、A(12)でキャッシュミスが発生するが、それ以降のところでは、次々とプリフェッチ要求が出されて、キャッシュにデータがプリフェッチされているため、キャッシュミスをおこすことはない。 Now, as shown in FIG. 5, when accessing A (0), a cache miss occurs. In the next A (1) to A (3), the data is brought into the cache, so the cache data hits. Then, a cache miss occurs at A (4). At this time, since a cache miss has occurred at successive cache line addresses, a data stream has been detected, and a prefetch request is issued with a prefetch offset for three cache lines. Similarly, cache misses occur in A (8) and A (12), but after that, prefetch requests are issued one after another and data is prefetched into the cache, so a cache miss occurs. There is nothing.
しかしながら、B(i*4)の場合には、ロード/ストア要求でアクセスするメモリの進行が速いためプリフェッチするエリアが含まれないという問題が発生する。 However, in the case of B (i * 4), there is a problem that the area to be prefetched is not included because the progress of the memory accessed by the load / store request is fast.
この場合、B(0)をアクセスするときに、キャッシュミスが発生する。そして、B(4)(i=1のとき)でキャッシュミスが発生する。このときに、連続したキャッシュラインアドレスにおいてキャッシュミスが発生したために、データストリームを検出したことになり、3キャッシュライン分のプリフェッチオフセットにより、プリフェッチ要求を出す。 In this case, a cache miss occurs when accessing B (0). A cache miss occurs at B (4) (when i = 1). At this time, since a cache miss has occurred at successive cache line addresses, a data stream has been detected, and a prefetch request is issued with a prefetch offset for three cache lines.
ここまでは、Aの場合と同様である。そして、B(8)(i=2のとき)、B(12)(i=3のとき)も、キャッシュミスが発生する。また、B(12)(i=4のとき)も、メモリレイテンシ(iが4増える時間)があるために、プリフェッチが間に合わずキャッシュミスが発生する。同様に、全てのBのアクセスにおいてキャッシュミスが発生することになる。このようになる原因は、Bの場合に、プリフェッチオフセットが小さすぎることによるものである。 The process up to here is the same as in the case of A. A cache miss also occurs in B (8) (when i = 2) and B (12) (when i = 3). Also, B (12) (when i = 4) also has memory latency (time for i to increase by 4), so prefetch is not in time and a cache miss occurs. Similarly, a cache miss occurs in all B accesses. The reason for this is that in the case of B, the prefetch offset is too small.
そこで、本実施形態は、キャッシュミスの回数に応じて、プリフェッチオフセットを可変にするものである。 Therefore, in the present embodiment, the prefetch offset is made variable according to the number of cache misses.
プリフェッチオフセットは、以下の(式1)に従う。 The prefetch offset follows (Equation 1) below.
ofk = cmk/Σcmk … (式1)
ofk:データストリームkのプリフェッチオフセット
cmk:データストリームkのヒットミス回数
Σ:全てのデータストリームkについて和をとることを表す
図5、図6に示されるように、i=1のとき、配列Bに対してのプリフェッチオフセットは、6×(1/1)で計算される。また、i=4のとき、Aのキャッシュミス回数は、1で、Bのキャッシュミス回数は、4であり、配列Bに対してのプリフェッチオフセットは、6×(4/(1+4))で計算される。すなわち、4キャッシュライン分のプリフェッチオフセットによりプリフェッチ要求がなされる。
of k = cm k / Σcm k (Formula 1)
of k : prefetch offset of data stream k
cm k : number of hit misses of data stream k Σ: represents summing all data streams k
As shown in FIGS. 5 and 6, when i = 1, the prefetch offset for the array B is calculated by 6 × (1/1). When i = 4, the number of cache misses of A is 1, the number of cache misses of B is 4, and the prefetch offset for the array B is calculated by 6 × (4 / (1 + 4)). Is done. That is, a prefetch request is made with a prefetch offset for four cache lines.
このようにすると、Bのプリフェッチオフセットは、十分大きくなり、i=8以降は新たなキャッシュミスは発生せず、全てのストリームに対してレイテンシを隠蔽できるだけ手前のタイミングでプリフェッチ要求を発行できるようになることが、図5より理解できる。なお、i=8以降は、A、Bともキャッシュミス回数に変更がないため、ループ終了までこのプリフェッチオフセットが維持されることになる。 In this way, the prefetch offset of B becomes sufficiently large so that a new cache miss does not occur after i = 8, and a prefetch request can be issued at a timing before concealing latency for all streams. It can be understood from FIG. Note that after i = 8, the number of cache misses is not changed for both A and B, so this prefetch offset is maintained until the end of the loop.
以上のように、本実施形態による処理系によれば複数のストリームのそれぞれに対し最適なタイミングでプリフェッチを発行することが可能であることから、全てのデータストリームにおいてメモリ・レイテンシを隠蔽することが可能である。また、本実施形態ではロード要求の例について述べたが、ストア要求についても上記の手法で同様の効果が期待できる。 As described above, according to the processing system according to the present embodiment, it is possible to issue a prefetch for each of a plurality of streams at an optimal timing, so that memory latency can be concealed in all data streams. Is possible. Further, although an example of a load request has been described in the present embodiment, a similar effect can be expected for a store request using the above method.
〔実施形態2〕
以下、本発明に係る第二の実施形態を、図7ないし図10を用いて説明する。
[Embodiment 2]
Hereinafter, a second embodiment according to the present invention will be described with reference to FIGS.
第一の実施形態では、データストリームにおけるキャッシュミスの回数に応じて、プリフェッチオフセットを調整する技術を説明した。本実施形態は、データストリームにおけるロード/ストア要求のキャッシュラインアドレスの更新回数に応じてプリフェッチオフセットを調整するものである。基本的な考え方は、同じなので、第一の実施形態と比べて相違点を中心に説明する。また、本実施形態でも、ロード要求の場合について説明する。 In the first embodiment, the technology for adjusting the prefetch offset according to the number of cache misses in the data stream has been described. In the present embodiment, the prefetch offset is adjusted according to the number of updates of the cache line address of the load / store request in the data stream. Since the basic idea is the same, differences will be mainly described as compared with the first embodiment. Also in this embodiment, a case of a load request will be described.
先ず、図7を用いて本発明の第二の実施形態に係るプロセッサを用いたシステム構成とその動作について説明する。
図7は、本発明の第二の実施形態に係るプロセッサを用いたシステム構成図である。
First, a system configuration using the processor according to the second embodiment of the present invention and its operation will be described with reference to FIG.
FIG. 7 is a system configuration diagram using a processor according to the second embodiment of the present invention.
本実施形態のプロセッサ310も、データストリーム管理テーブル320を有する。データストリーム管理テーブル320は、データストリームに関する情報を保持し、プリフェッチの制御に用いるためのテーブルであることは、第一の実施形態と同様である。
The
第一の実施形態と異なっているのは、レジスタ90、95が各データストリームのロード要求先キャッシュラインアドレスが更新された回数を保持することである。
The difference from the first embodiment is that the
制御機構60が、データストリームのキャッシュラインアドレスを、レジスタ50、55に書き込む動作は、第一の実施形態と同様である。また、レジスタ400、405のデータストリームのアクセスされるアドレスの進行方向を書き込む動作についても第一の実施形態と同様である。
The operation in which the
また、初期化機構550が、そのデータストリームの有効性を、レジスタ90、95に書き込むことも第一の実施形態と同様である。さらに、新しいエントリの場合には、レジスタ90、95が0にリセットされることも同様である。
Further, the
異なっているのは、データ線30により伝えられるロード要求先キャッシュラインアドレスが更新されると、制御機構60は、それをデータ線330により選択器460に伝えることである。この制御機構60の動作は、後に詳細に説明する。
The difference is that when the load request destination cache line address conveyed by the
本実施形態の選択器460は、データ線75により伝えられるエントリ番号に対応するデータ線470またはデータ線475より伝えられるキャッシュライン更新回数を、データ線480を用いて加算器490に伝える。加算器490は、データ線480より伝えられたキャッシュライン更新回数に対し1を加えたものを新規キャッシュライン更新回数として、データ線500を用いて選択器510に伝える。選択器510は、データ線75により伝えられるエントリ番号を基にデータ線520またはデータ線525のどちらかを用い、キャッシュライン更新回数90または95を書き換える
次に、本実施形態のハードウェア・プリフェッチの要求先アドレスを決定する場合の動作を説明する。
The
データストリーム管理テーブル320が保持する各ストリームのキャッシュライン更新回数90、95は、それぞれデータ線470、475によりAND回路580、585に伝えられ、AND回路580、585は、伝えられた回数とデータ線600、605により伝えられる有効ビットを回数情報のビット幅に拡張したものとのANDをそれぞれとり、出力をデータ線220、225に伝える。これにより、有効ビットが0(無効)のときには、キャッシュライン更新回数は常に0にクリアされる。
The cache line update counts 90 and 95 of each stream held in the data stream management table 320 are transmitted to the AND
加算器100は、データ線220、225より伝えられるキャッシュライン更新回数の和をデータ線210に伝える。除算器110、115は、それぞれデータ線220、225より伝えられるキャッシュライン更新回数をそれぞれ被除数とし、データ線210より伝えられる全ストリームのキャッシュライン更新回数の和を除数210とする頻度比率を計算する。乗算器120、125は、それぞれデータ線610、615より伝えられる各ストリームにおける頻度比率と、それぞれデータ線620、625により伝えられる各ストリームの進行方向を表す符号と、1ストリーム時の最大プリフェッチオフセット量レジスタ800から持ってきた最大プリフェッチオフセット量とを乗じ、小数点以下は切り捨てた上で、その結果をそれぞれデータ線160、165に伝える。
The
以下、このプリフェッチオフセット量により、キャッシュ150がメモリ240からプリフェッチをおこなう動作は、第一の実施形態と同様である。
Hereinafter, the operation in which the
次に、図8を用いて制御機構60の詳細な構成と動作について説明する。
図8は、本発明の第二の実施形態に係る制御機構60の構成図である。
Next, the detailed configuration and operation of the
FIG. 8 is a configuration diagram of the
本実施形態の制御機構60が、第一の実施形態と異なるところは、キャッシュラインの更新があったことをデータ線330に伝えることである。これにより、選択器460が、データストリーム管理テーブルのキャッシュラインの更新回数を増加させる処理をおこなう。
The difference between the
その他の機能と動作、データストリーム検出機構についても第一の実施形態と同様である。 Other functions and operations and the data stream detection mechanism are the same as those in the first embodiment.
次に、図9および図10を用いて本実施形態の効果を説明する。
図9は、本発明の第二の実施形態に係るプリフェッチ制御のメモリアクセスの様子を示す図である。
図10は、図9におけるメモリアクセスの場合の各段階のキャッシュミス回数とプリフェッチオフセットを示す表である。
Next, the effect of this embodiment is demonstrated using FIG. 9 and FIG.
FIG. 9 is a diagram showing a state of memory access for prefetch control according to the second embodiment of the present invention.
FIG. 10 is a table showing the number of cache misses and prefetch offsets at each stage in the case of memory access in FIG.
配列A、Bを使ったモデル、メモリレイテンシ、最大プリフェッチオフセット量、および、図9における表記法などを第一の実施形態と同様に設定する。 The model using the arrays A and B, the memory latency, the maximum prefetch offset amount, and the notation in FIG. 9 are set in the same manner as in the first embodiment.
そこで、本実施形態は、キャッシュラインアドレスの更新回数に応じて、プリフェッチオフセットを可変にするものである。 Therefore, in the present embodiment, the prefetch offset is made variable according to the number of cache line address updates.
プリフェッチオフセットは、以下の(式2)に従う。 The prefetch offset follows (Equation 2) below.
ofk = lauk/Σlauk … (式2)
ofk:データストリームkのプリフェッチオフセット
lauk:データストリームkのキャッシュラインアドレスの更新回数
Σ:全てのデータストリームkについて和をとることを表す
図9、図10に示されるように、i=1のとき、配列Bに対してのプリフェッチオフセットは、6×(1/1)で計算される。また、i=4のとき、Aのキャッシュミス回数は、1で、Bのキャッシュミス回数は、4であり、配列Bに対してのプリフェッチオフセットは、6×(4/(1+4))で計算される。すなわち、4キャッシュライン分のプリフェッチオフセットによりプリフェッチ要求がなされる。
of k = lau k / Σlau k (Formula 2)
of k : prefetch offset of data stream k
lau k : Number of updates of the cache line address of the data stream k Σ: Represents the sum of all the data streams k
As shown in FIGS. 9 and 10, when i = 1, the prefetch offset for the array B is calculated by 6 × (1/1). When i = 4, the number of cache misses of A is 1, the number of cache misses of B is 4, and the prefetch offset for the array B is calculated by 6 × (4 / (1 + 4)). Is done. That is, a prefetch request is made with a prefetch offset for four cache lines.
このようにすると、Bのプリフェッチオフセットは、十分大きくなり、i=16以降は新たなキャッシュミスは発生せず、全てのストリームに対してレイテンシを隠蔽できるだけ手前のタイミングでプリフェッチ要求を発行できるようになることが、図9より理解できる。このように、キャッシュラインアドレスの更新回数ににより、プリフェッチアドレスを調整する手法によっても、キャッシュミスのないメモリアクセスの性能を向上させたプロセッサを提供することができる。 In this way, the prefetch offset of B becomes sufficiently large so that a new cache miss does not occur after i = 16, and a prefetch request can be issued at a timing before concealing latency for all streams. It can be understood from FIG. As described above, it is possible to provide a processor with improved memory access performance without a cache miss even by a method of adjusting a prefetch address according to the number of cache line address updates.
〔実施形態3〕
次に、本発明に係る第三の実施形態を、図11を用いて説明する。
図11は、本発明の第三の実施形態に係るデータストリーム管理テーブルの一部の構成を示した図である。
[Embodiment 3]
Next, a third embodiment according to the present invention will be described with reference to FIG.
FIG. 11 is a diagram showing a partial configuration of a data stream management table according to the third embodiment of the present invention.
本実施形態で説明するのは、レジスタ90、95の最上位ビットが立った場合に1ビット下位にシフトすることにより、極力頻度比率を保ったまま情報量を減じることを可能にする機構である。
In the present embodiment, a mechanism that makes it possible to reduce the amount of information while maintaining the frequency ratio as much as possible by shifting to the lower one bit when the most significant bit of the
第一の実施形態に、この第三の実施形態を加えれば、式1、式2より求められるプリフェッチオフセットが同じであり、しかも、レジスタ90、95の容量があふれるをおこすことがない。特に、第二の実施形態のようにキャッシュラインの更新回数を頻度情報とする場合は、図7におけるライン更新保持のためのレジスタ90、95に十分な容量を用意できない場合が考えられるため効果的である。
If this third embodiment is added to the first embodiment, the prefetch offsets obtained from the
図11に示される最上位ビット1100が1になると、それがデータ線1120によりシフト回路1130に、またデータ線1180によりシフト回路1135に伝わる。同様に、最上位ビット1105が1になると、それがデータ線1125によりシフト回路1130に、またデータ線1185によりシフト回路1135に伝わる。シフト回路1130は、最上位ビット1100または1105が1になったことをデータ線1120またはデータ線1125により伝えられると、データ線1140から伝えられる頻度情報530を下位に1ビットシフトしたものをデータ線1150に伝え、レジスタ530の保持する頻度情報を更新する。同様に、シフト回路1135は最上位ビット1100または1105が1になったことをデータ線1180またはデータ線1185により伝えられると、データ線1145から伝えられる頻度情報535を下位に1ビットシフトしたものをデータ線1155に伝え、レジスタ535の保持する頻度情報を更新する。下位に1ビットシフトすることは、その値を2分の1にすることである。
以上の仕組みにより、極力頻度比率を保ったまま情報量を減じることが可能となる。
When the most
With the above mechanism, it is possible to reduce the amount of information while maintaining the frequency ratio as much as possible.
〔実施形態4〕
次に、本発明に係る第四の実施形態を、図12および図13を用いて説明する。
図12は、本発明の第四の実施形態に係るデータストリーム管理テーブルの一部の構成を示した図である。
図13は、本発明の第四の実施形態に係るレジスタ90、95の動作を説明するタイミングチャートである。
[Embodiment 4]
Next, a fourth embodiment according to the present invention will be described with reference to FIGS.
FIG. 12 is a diagram showing a partial configuration of a data stream management table according to the fourth embodiment of the present invention.
FIG. 13 is a timing chart for explaining the operation of the
本実施形態は、第一の実施形態または第二の実施形態のデータストリーム管理テーブル320のレジスタ90、95に保持される頻度情報を一定期間内の頻度として採取する機能を追加するものである。キャッシュミス回数またはキャッシュライン更新回数などの頻度情報を一定期間内で採取するよう実装することにより、アクセスするアドレスの間隔がループの途中で変化するようなデータストリームに対しても柔軟に適当なプリフェッチを発行することができる。
In the present embodiment, a function of collecting frequency information held in the
図12において、カウンタ940、950は、システムの開始と同時にサイクル数をカウントし始め、最初はデータ線960、970にそれぞれ0を出力する。処理系で既定のサイクル数をnとして、カウンタ940は奇数×nサイクル目、カウンタ950は偶数×nサイクル目に、それぞれ出力を反転させる。選択器920、925は、データ線960からの入力が0のときはデータ線520、525からの入力をそれぞれデータ線980、985に伝え、データ線960からの入力が1の時はデータ線520、525からの入力をそれぞれデータ線1000、1005に伝える。また、選択器930、935は、データ線970からの入力が0のときはデータ線470、475にそれぞれデータ線990、995からの入力を出力し、データ線970からの入力が1のときは、データ線470、475にそれぞれデータ線1010、1015からの入力を出力する。
In FIG. 12, counters 940 and 950 start counting the number of cycles simultaneously with the start of the system, and initially
また、選択器920はレジスタ900からレジスタ910に書き込み先を変える際にレジスタ900の値を0にリセットし、同様にレジスタ910からレジスタ900に書き込み先を変える際にレジスタ910の値を0にリセットする。また同様に、選択器925はレジスタ905からレジスタ915に書き込み先を変える際にレジスタ905の値を0にリセットし、同様にレジスタ915からレジスタ905に書き込み先を変える際にレジスタ915の値を0にリセットする。
The
ここで、本実施形態では、図13に示されるように、書き込みと読み込みの周期の位相を意図的にずらしている。これは、仮に書き込みと読み込みの周期の位相が同じであった場合には、書き込みと読み込みが切り替わるたびに頻度情報の比率が最適なプリフェッチ発行が可能な定常状態に収束する時間がかかってしまうことが考えられるためである。本実施形態では、図13に示すように、レジスタ900、905への書き込みと読み込みがnサイクルずつずれ、キャッシュライン更新回数を2nサイクル時間内に採取することが可能となる。例えば、ループの途中でストライド・アクセスの間隔が変わるデータストリームや、ループの途中でアドレス増加からアドレス減少に転じるようなデータストリームに関しても最大でも2nサイクル時間後には変化に対応した頻度情報を利用することができる。
Here, in this embodiment, as shown in FIG. 13, the phase of the writing and reading cycle is intentionally shifted. This means that if the phase of the write and read cycles is the same, it takes time to converge to a steady state where the prefetch issue with the optimal frequency information ratio can be made each time the write and read are switched. This is because of this. In this embodiment, as shown in FIG. 13, writing to and reading from the
Claims (16)
前記データストリームにおけるロード/ストア命令の要求に対して、キャッシュへのプリフェッチ要求を前記メモリに発行する手段とを備えるプロセッサにおいて、
各データストリームのロード/ストア命令の要求先アドレスと、各データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度とを保持するデータストリーム管理テーブルを有し、
全データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度に応じて、各データストリーム毎のプリフェッチ要求アドレスを決定することを特徴とするプロセッサ。 Means for detecting a data stream predicted to be continuously accessed from a request destination address of a load / store instruction issued to a memory;
Means for issuing a prefetch request to a cache to the memory in response to a load / store instruction request in the data stream;
A data stream management table that holds a request destination address of a load / store instruction of each data stream and a frequency of a cache miss that occurs in the load / store instruction in each data stream;
Depending on the frequency of cache misses occurring in the load / store instruction definitive to all data streams, the processor and determines the prefetch request address for each data stream.
所定の最大プリフェッチオフセットと、全データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度の合計を分母とし各データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度を分子とした比率とを乗じて、プリフェッチオフセットを求め、
前記データストリーム管理テーブルに保持されるロード/ストア命令の要求先アドレスと、前記プリフェッチオフセットとの和を取ることにより計算されることを特徴とする請求項2記載のプロセッサ。 The prefetch request address for each data stream is:
And a predetermined maximum prefetch offset, a ratio of the frequency of cache misses generated in total load / store instruction definitive each data stream as a denominator in the frequency of cache misses occurring in the load / store instruction definitive to all data streams to a molecule To get the prefetch offset,
3. The processor according to claim 2, wherein the processor is calculated by taking a sum of a request destination address of a load / store instruction held in the data stream management table and the prefetch offset.
前記データストリームにおけるロード/ストア命令の要求に対して、キャッシュへのプリフェッチ要求をキャッシュライン単位に前記メモリに発行する手段とを備えるプロセッサにおいて、
各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスと、各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度とを保持するデータストリーム管理テーブルを有し、
全データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の合計と、各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度に応じて、各データストリーム毎のプリフェッチ要求アドレスを決定することを特徴とするプロセッサ。 Means for detecting a data stream predicted to be continuously accessed from a request destination address of a load / store instruction issued to a memory;
A processor that issues a prefetch request to a cache to the memory in units of cache lines in response to a load / store instruction request in the data stream;
A data stream management table that holds a line address related to a request destination address of each data stream load / store instruction and a frequency at which a line address related to a request destination address of each data stream load / store instruction is updated;
Each data according to the sum of the frequency at which the line address relating to the request destination address of the load / store instruction of all data streams is updated and the frequency at which the line address relating to the request destination address of the load / store instruction of each data stream is updated A processor for determining a prefetch request address for each stream.
所定の最大プリフェッチオフセットと、全データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の合計を分母とし各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を分子とした比率とを乗じて、プリフェッチオフセットを求め、
前記データストリーム管理テーブルに保持されるロード/ストア命令の要求先アドレスと、前記プリフェッチオフセットとの和を取ることにより計算されることを特徴とする請求項9記載のプロセッサ。 The prefetch request address for each data stream is:
The line address related to the request destination address of each data stream load / store instruction is updated using the sum of the predetermined maximum prefetch offset and the frequency at which the line address related to the request destination address of the load / store instruction of all data streams is updated. Multiplied by the ratio with the frequency as a numerator to obtain the prefetch offset,
10. The processor according to claim 9, wherein the processor is calculated by taking the sum of a request destination address of a load / store instruction held in the data stream management table and the prefetch offset.
前記データストリームにおけるロード/ストア命令の要求に対して、キャッシュへのプリフェッチ要求を前記メモリに発行する手段と、
複数のデータストリームに対して、前記データストリームのロード/ストア命令の要求先アドレスと、前記データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度とを保持するデータストリーム管理テーブルとを備えるプロセッサにおいて、
メモリに対してロード/ストア命令を発行するステップと、
前記メモリに対して発行されたロード/ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出するステップと、
前記データストリームのロード/ストア命令の要求先アドレスを前記データストリーム管理テーブルに記録するステップと、
前記データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度を前記データストリーム管理テーブルに記録するステップと、
前記データストリーム管理テーブルに保持された全データストリームのデータストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度を合計するステップと、
所定の最大プリフェッチオフセットと、前記全データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度の合計を分母とし、前記各データストリームにおけるロード/ストア命令において発生したキャッシュミスの頻度を分子とした比率とを乗じて、プリフェッチオフセットを求めるステップと、
前記データストリームにおけるロード/ストア命令の要求に対して、キャッシュへのプリフェッチ要求をおこなうときのプリフェッチアドレスを、前記データストリーム管理テーブルに保持されるそのデータストリームにおける前記ロード/ストア命令の要求先アドレスと、そのデータストリームにおける前記プリフェッチオフセットとの和を取ることにより求めるステップと、
前記データストリームにおけるロード/ストア命令の要求に対して、求められた前記データストリームのプリフェッチアドレスに基づく前記キャッシュへのプリフェッチ要求を前記メモリに発行するステップと有することを特徴とするプリフェッチ制御方法。 Means for detecting a data stream predicted to be continuously accessed from a request destination address of a load / store instruction issued to a memory;
Means for issuing a prefetch request to the cache to the memory in response to a load / store instruction request in the data stream;
In a processor comprising a data stream management table for holding a request destination address of a load / store instruction of the data stream and a frequency of a cache miss occurring in the load / store instruction in the data stream for a plurality of data streams ,
Issuing a load / store instruction to the memory;
Detecting a data stream predicted to be continuously accessed from a request destination address of a load / store instruction issued to the memory;
Recording a request destination address of the data stream load / store instruction in the data stream management table;
Recording the frequency of cache misses occurring in load / store instructions in the data stream in the data stream management table;
Summing up the frequency of cache misses that occurred in load / store instructions in the data streams of all data streams held in the data stream management table ;
And a predetermined maximum prefetch offset, said as the denominator the total frequency of cache misses occurring in the load / store instruction definitive to all data streams, and frequency of molecules of the cache miss has occurred in the load / store instruction definitive each data stream Multiplying the calculated ratio to obtain a prefetch offset;
In response to a load / store instruction request in the data stream, a prefetch address used when a prefetch request to the cache is made is a request destination address of the load / store instruction in the data stream held in the data stream management table. Determining by summing with the prefetch offset in the data stream;
Issuing a prefetch request to the cache based on the obtained prefetch address of the data stream in response to a load / store instruction request in the data stream.
前記データストリームにおけるロード/ストア命令の要求に対して、キャッシュへのプリフェッチ要求をキャッシュライン単位に前記メモリに発行する手段と、
複数のデータストリームに対して、前記データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスと、そのラインアドレスが更新された頻度とを保持するデータストリーム管理テーブルとを備えるプロセッサにおいて、
メモリに対してロード/ストア命令を発行するステップと、
前記メモリに対して発行されたロード/ストア命令の要求先アドレスから、連続してアクセスされると予測されるデータストリームを検出するステップと、
前記データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスを前記データストリーム管理テーブルに記録するステップと、
前記データストリームにおいて、そのデータストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を前記データストリーム管理テーブルに記録するステップと、
前記データストリーム管理テーブルに保持された全データストリームの各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を合計するステップと、
所定の最大プリフェッチオフセットと、各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度の全データストリームにおける合計を分母とし、各データストリームのロード/ストア命令の要求先アドレスに関するラインアドレスが更新された頻度を分子とした比率とを乗じて、プリフェッチオフセットを求めるステップと、
前記データストリームにおけるロード/ストア命令の要求に対して、キャッシュへのプリフェッチ要求をおこなうときのプリフェッチアドレスを、前記データストリーム管理テーブルに保持されるそのデータストリームにおける前記ロード/ストア命令の要求先アドレスに関するラインアドレスと、そのデータストリームにおける前記プリフェッチオフセットとの和を取ることにより求めるステップと、
前記データストリームにおけるロード/ストア命令の要求に対して、求められた前記データストリームのプリフェッチアドレスに基づく前記キャッシュへのプリフェッチ要求を前記メモリに発行するステップと有することを特徴とするプリフェッチ制御方法。 Means for detecting a data stream predicted to be continuously accessed from a request destination address of a load / store instruction issued to a memory;
Means for issuing a prefetch request to the cache in units of cache lines to the memory in response to a load / store instruction request in the data stream;
For a plurality of data streams, a processor comprising a data stream management table that holds a line address related to a request destination address of the load / store instruction of the data stream and a frequency at which the line address is updated.
Issuing a load / store instruction to the memory;
Detecting a data stream predicted to be continuously accessed from a request destination address of a load / store instruction issued to the memory;
Recording a line address related to a request destination address of the load / store instruction of the data stream in the data stream management table;
Recording in the data stream management table the frequency at which the line address related to the request destination address of the load / store instruction of the data stream is updated in the data stream;
Summing up the frequency with which the line address related to the request destination address of the load / store instruction of each data stream of all the data streams held in the data stream management table is updated;
The sum of all the data streams at the frequency at which the line address related to the request destination address of the load / store instruction of each data stream is updated is used as the denominator, and the request destination address of the load / store instruction of each data stream. Multiplying by the numerator the frequency at which the line address was updated, obtaining a prefetch offset;
In response to a load / store instruction request in the data stream, a prefetch address when performing a prefetch request to the cache is related to a request destination address of the load / store instruction in the data stream held in the data stream management table. Determining by summing the line address and the prefetch offset in the data stream;
Issuing a prefetch request to the cache based on the obtained prefetch address of the data stream in response to a load / store instruction request in the data stream.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004049348A JP4532931B2 (en) | 2004-02-25 | 2004-02-25 | Processor and prefetch control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004049348A JP4532931B2 (en) | 2004-02-25 | 2004-02-25 | Processor and prefetch control method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005242527A JP2005242527A (en) | 2005-09-08 |
JP4532931B2 true JP4532931B2 (en) | 2010-08-25 |
Family
ID=35024229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004049348A Expired - Fee Related JP4532931B2 (en) | 2004-02-25 | 2004-02-25 | Processor and prefetch control method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4532931B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4945200B2 (en) | 2006-08-29 | 2012-06-06 | 株式会社日立製作所 | Computer system and processor control method |
JP5116275B2 (en) * | 2006-09-29 | 2013-01-09 | 富士通株式会社 | Arithmetic processing apparatus, information processing apparatus, and control method for arithmetic processing apparatus |
JP5205777B2 (en) * | 2007-03-14 | 2013-06-05 | 富士通株式会社 | Prefetch processing apparatus, prefetch processing program, and prefetch processing method |
JP4829191B2 (en) * | 2007-08-30 | 2011-12-07 | 株式会社東芝 | Cash system |
US8667225B2 (en) * | 2009-09-11 | 2014-03-04 | Advanced Micro Devices, Inc. | Store aware prefetching for a datastream |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06510611A (en) * | 1991-05-02 | 1994-11-24 | スウィーディッシュ インスチチュート オブ コンピューター サイエンス | How to increase data processing speed in computer systems |
JP2000076017A (en) * | 1998-08-31 | 2000-03-14 | Nec Corp | Magnetic disk controller |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0218645A (en) * | 1988-07-07 | 1990-01-22 | Ricoh Co Ltd | Memory control system |
JP3194201B2 (en) * | 1992-02-24 | 2001-07-30 | 株式会社日立製作所 | How to select cache mode |
US5737565A (en) * | 1995-08-24 | 1998-04-07 | International Business Machines Corporation | System and method for diallocating stream from a stream buffer |
US6085291A (en) * | 1995-11-06 | 2000-07-04 | International Business Machines Corporation | System and method for selectively controlling fetching and prefetching of data to a processor |
JPH10207772A (en) * | 1997-01-23 | 1998-08-07 | Hitachi Ltd | Method for predicting cache miss |
US6529998B1 (en) * | 2000-11-03 | 2003-03-04 | Emc Corporation | Adaptive prefetching of data from a disk |
-
2004
- 2004-02-25 JP JP2004049348A patent/JP4532931B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06510611A (en) * | 1991-05-02 | 1994-11-24 | スウィーディッシュ インスチチュート オブ コンピューター サイエンス | How to increase data processing speed in computer systems |
JP2000076017A (en) * | 1998-08-31 | 2000-03-14 | Nec Corp | Magnetic disk controller |
Also Published As
Publication number | Publication date |
---|---|
JP2005242527A (en) | 2005-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10365930B2 (en) | Instructions for managing a parallel cache hierarchy | |
JP2505086B2 (en) | Address generation mechanism and pre-fetch method of data | |
JP3618385B2 (en) | Method and system for buffering data | |
JP4067887B2 (en) | Arithmetic processing device for performing prefetch, information processing device and control method thereof | |
US8140759B2 (en) | Specifying an access hint for prefetching partial cache block data in a cache hierarchy | |
US5694568A (en) | Prefetch system applicable to complex memory access schemes | |
US7908439B2 (en) | Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache | |
US11126555B2 (en) | Multi-line data prefetching using dynamic prefetch depth | |
US8683136B2 (en) | Apparatus and method for improving data prefetching efficiency using history based prefetching | |
JP6467605B2 (en) | Instruction processing system and method | |
JP3516963B2 (en) | Memory access control device | |
US7516276B2 (en) | Runtime register allocator | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
WO1999059070A2 (en) | Data processing circuit with cache memory | |
JPH10198561A (en) | Microprocessor circuit, its system and its method for embodying load target buffer provided with entry related to preferableness of prefetching | |
Suleman et al. | Data marshaling for multi-core architectures | |
JPH09259036A (en) | Write-back cache and method for maintaining consistency in write-back cache | |
US20080140934A1 (en) | Store-Through L2 Cache Mode | |
JP2014115851A (en) | Data processing device and method of controlling the same | |
JP4532931B2 (en) | Processor and prefetch control method | |
Tcheun et al. | An adaptive sequential prefetching scheme in shared-memory multiprocessors | |
US20150193348A1 (en) | High-performance data cache system and method | |
Garside et al. | Investigating shared memory tree prefetching within multimedia noc architectures | |
JP2002108705A (en) | Method and device for reducing cache contamination |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061013 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20061013 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100316 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100510 |
|
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: 20100525 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100611 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130618 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |