JP2024011696A - Arithmetic processing apparatus and arithmetic processing method - Google Patents
Arithmetic processing apparatus and arithmetic processing method Download PDFInfo
- Publication number
- JP2024011696A JP2024011696A JP2022113918A JP2022113918A JP2024011696A JP 2024011696 A JP2024011696 A JP 2024011696A JP 2022113918 A JP2022113918 A JP 2022113918A JP 2022113918 A JP2022113918 A JP 2022113918A JP 2024011696 A JP2024011696 A JP 2024011696A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- unit
- speculative
- target data
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 51
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 230000015654 memory Effects 0.000 claims abstract description 80
- 238000000034 method Methods 0.000 claims description 23
- 238000012546 transfer Methods 0.000 abstract description 11
- 238000004364 calculation method Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000010365 information processing Effects 0.000 description 10
- 230000001788 irregular Effects 0.000 description 10
- 238000013500 data storage Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本発明は、演算処理装置及び演算処理方法に関する。 The present invention relates to an arithmetic processing device and an arithmetic processing method.
近年、プロセッサの動作周波数が飛躍的に向上している。これに対し、メインメモリとして一般的に使用されるDRAM(Dynamic Random Access Memory)の動作速度の向上は低調であり、プロセッサの性能を十分に活かすためにデータ転送を効率化するアーキテクチャの技術研究が盛んである。情報処理装置では、一般に、メインメモリよりもデータアクセスが高速なキャッシュメモリをCPU(Central Processing Unit)に配置する。そして、このキャッシュメモリ上に、最近参照したデータを置くことによって、メインメモリ参照によるレイテンシの低減が図られる。 In recent years, the operating frequency of processors has improved dramatically. On the other hand, improvements in the operating speed of DRAM (Dynamic Random Access Memory), which is commonly used as main memory, have been slow, and technical research into architectures that make data transfer more efficient is needed to take full advantage of processor performance. It's thriving. In an information processing device, a cache memory whose data access is faster than a main memory is generally arranged in a CPU (Central Processing Unit). By placing recently referenced data on this cache memory, latency due to main memory reference can be reduced.
ただし、レイテンシの低減のためのキャッシュメモリの配置が効果的に働くためには、キャッシュメモリ上に参照するデータが格納されていることが条件となる。キャッシュメモリ上に参照するデータが無ければ、メインメモリへのアクセスが発生してしまうため、キャッシュメモリを配置した場合であっても、データ転送速度が演算速度のボトルネックとなる。そこで、プリフェッチなどでデータを効率的にキャッシュメモリに格納することで、データ転送速度の向上が図られている。 However, in order for the arrangement of the cache memory to reduce latency to be effective, it is necessary that the data to be referenced is stored in the cache memory. If there is no data to be referenced on the cache memory, an access to the main memory will occur, so even if a cache memory is provided, the data transfer speed becomes a bottleneck in the calculation speed. Therefore, attempts are being made to improve the data transfer speed by efficiently storing data in a cache memory using prefetching or the like.
なお、キャッシュ管理の技術として、キャッシュが連携置換ポリシによって管理されるダイレクトマップ部分とマルチウェイ部分とを含み、マルチウェイ部分をダイレクトマップ部分のためのビクティムキャッシュとして機能させる技術が提案されている。ビクティムキャッシュとは、キャッシュから追い出されたデータを書き込むためのキャッシュである。また、キャッシュから追い出されたエントリをメインメモリに書き戻す前に一時的にライトバッファに保存し、要求されたデータがライトバッファにあれば、そのデータをキャッシュに戻す技術が提案されている。また、条件分岐予測でどの分岐を取るかを予測し、予測に基づいてメモリを検索して予測が正しければ次の命令はすでにフェッチされているが、予測が間違っている場合は、条件分岐が実際に解決されるまで、投機的にフェッチしておく技術が提案されている。また、メモリ内のWork領域に転送されたデータをキャッシュ内の特定キャッシュ領域へ格納してデータ処理を行い、その後に特定のキャッシュからデータを追い出す動作を繰り返して、局所性の高いデータをキャッシュメモリに残す技術が提案されている。 As a cache management technique, a technique has been proposed in which the cache includes a direct map part and a multiway part managed by a cooperative replacement policy, and the multiway part functions as a victim cache for the direct map part. A victim cache is a cache for writing data evicted from the cache. Furthermore, a technique has been proposed in which an entry evicted from the cache is temporarily stored in a write buffer before being written back to the main memory, and if the requested data is in the write buffer, the data is returned to the cache. Also, conditional branch prediction predicts which branch to take, searches memory based on the prediction, and if the prediction is correct, the next instruction has already been fetched, but if the prediction is wrong, the conditional branch is Techniques have been proposed in which the problem is fetched speculatively until it is actually resolved. In addition, the data transferred to the work area in memory is stored in a specific cache area in the cache for data processing, and then the operation of evicting the data from the specific cache is repeated to store highly localized data in the cache memory. A technique has been proposed to leave the
しかしながら、疎行列演算などの不規則アクセスが多い演算では、将来のデータアクセス予測が難しい。例えば、疎行列ベクトル積演算(SpMV:Sparse Matrix-Vector multiplication)におけるベクトルデータなどは、どのデータが将来利用されるかを予測することは非常に困難である。将来のデータアクセス予測に失敗すると、プリフェッチによってデータを効率的にキャッシュメモリに格納することが難しく、データ転送を効率化することは困難となる。また、上述したいずれの技術であっても、不規則アクセスが多い演算において効率的なプリフェッチを実現することは難しく、データ転送を効率化することは困難である。 However, in operations that involve many irregular accesses, such as sparse matrix operations, it is difficult to predict future data accesses. For example, it is very difficult to predict which data will be used in the future, such as vector data in sparse matrix-vector multiplication (SpMV). If future data access prediction fails, it becomes difficult to efficiently store data in the cache memory by prefetching, and it becomes difficult to improve the efficiency of data transfer. Furthermore, with any of the techniques described above, it is difficult to implement efficient prefetching in operations that involve many irregular accesses, and it is difficult to improve the efficiency of data transfer.
開示の技術は、上記に鑑みてなされたものであって、データ転送を効率化する演算処理装置及び演算処理方法を提供することを目的とする。 The disclosed technology has been developed in view of the above, and aims to provide an arithmetic processing device and an arithmetic processing method that improve the efficiency of data transfer.
本願の開示する演算処理装置及び演算処理方法の一つの態様において、演算処理装置は、演算部、メインメモリ及び1つ又は階層化された複数のキャッシュを有する。前記キャッシュの少なくとも1つは、以下の各部を備える。記憶部は、データを格納する。制御部は、前記演算部又は上位キャッシュからデータアクセス要求を受けて、前記データアクセス要求の対象データが前記記憶部に存在する場合に前記対象データにアクセスする。また前記制御部は、前記対象データが前記記憶部に存在しない場合に前記対象データを下位キャッシュ又は前記メインメモリから取得して前記記憶部に格納する。情報管理部は、前記対象データが前記記憶部に存在しないことを示すキャッシュミスの発生回数を算出する。投機的プリフェッチ部は、前記発生回数を基に投機的データを前記メインメモリ又は前記下位キャッシュから取得して、取得した前記投機的データを前記記憶部に格納する。 In one aspect of the arithmetic processing device and the arithmetic processing method disclosed in the present application, the arithmetic processing device includes a calculation unit, a main memory, and one or a plurality of hierarchical caches. At least one of the caches includes the following parts. The storage unit stores data. The control unit receives a data access request from the calculation unit or the upper cache, and accesses the target data when the target data of the data access request exists in the storage unit. Further, when the target data does not exist in the storage unit, the control unit acquires the target data from the lower cache or the main memory and stores it in the storage unit. The information management unit calculates the number of occurrences of a cache miss indicating that the target data does not exist in the storage unit. The speculative prefetch unit acquires speculative data from the main memory or the lower cache based on the number of occurrences, and stores the acquired speculative data in the storage unit.
1つの側面では、本発明は、データ転送を効率化することができる。 In one aspect, the present invention can streamline data transfer.
以下に、本願の開示する演算処理装置及び演算処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置及び演算処理方法が限定されるものではない。 Embodiments of the arithmetic processing device and the arithmetic processing method disclosed in the present application will be described in detail below with reference to the drawings. Note that the following embodiments do not limit the arithmetic processing device and the arithmetic processing method disclosed in the present application.
図1は、情報処理装置の全体構成を示す概略図である。図1に示すように、情報処理装置1は、演算部11、L1キャッシュ12、L2キャッシュ13、L3キャッシュ14、メインメモリ15、補助記憶装置16、表示装置17及び入力装置18を有する。演算部11は、L1キャッシュ12、L2キャッシュ13、L3キャッシュ14、メインメモリ15、補助記憶装置16、表示装置17及び入力装置18のそれぞれとバスで接続される。演算部11、L1キャッシュ12、L2キャッシュ13及びL3キャッシュ14は、例えば、演算処理装置であるCPU10に搭載される。
FIG. 1 is a schematic diagram showing the overall configuration of an information processing device. As shown in FIG. 1, the
演算部11は、例えば、CPU(Central Processing Unit)コアである。演算部11は、補助記憶装置16に格納された各種プログラムなどを読み出してメインメモリ15に展開して、L1キャッシュ12、L2キャッシュ13、L3キャッシュ14及びメインメモリ15に格納されたデータを用いて演算を実行する。
The
L1キャッシュ12は、動作速度が速く且つL2キャッシュ12及びL3キャッシュ14と比べて容量の小さいキャッシュメモリであり、演算部11によるデータアクセス時に最初に読み込まれるキャッシュメモリである。L1キャッシュ12は、例えば、SRAM(Static Random Access Memory)である。
The
L2キャッシュ13は、動作速度が速く且つ一般的にL1キャッシュ12よりも容量の大きいキャッシュメモリであり、演算部11によるデータアクセス時に、L1キャッシュ12でキャッシュミスが発生した場合に次に読み込まれるキャッシュメモリである。L2キャッシュ13も、例えば、SRAMである。
The L2 cache 13 is a cache memory that operates at a faster speed and generally has a larger capacity than the
L3キャッシュ14は、動作速度が速く且つ一般的にL2キャッシュ13よりも容量の大きいキャッシュメモリであり、演算部11によるデータアクセス時に、L2キャッシュ13でキャッシュミスが発生した場合に次に読み込まれるキャッシュメモリである。L3キャッシュ14も、例えば、SRAMである。
The L3 cache 14 is a cache memory that has a faster operating speed and generally has a larger capacity than the L2 cache 13, and is the cache memory that is read next when a cache miss occurs in the L2 cache 13 during data access by the
ここで、本実施例では、情報処理装置1が、L1キャッシュ12、L2キャッシュ13及びL3キャッシュ14という3つのキャッシュメモリを有する場合で説明するが、キャッシュメモリの階層の数はこれに限らない、例えば、情報処理装置1は、L2キャッシュ13やL3キャッシュ14を有さなくても良いし、4つ以上の階層を有してもよい。
Here, in this embodiment, a case will be described in which the
メインメモリ15は、L1キャッシュ12、L2キャッシュ13及びL3キャッシュ14に比べて動作速度が遅く且つ大容量の主記憶装置である。メインメモリ15は、演算部11が演算に用いるデータが格納される。メインメモリ15は、L1キャッシュ12、L2キャッシュ13及びL3キャッシュ14のいずれにもアクセス対象のデータが存在しない場合に演算部11からのアクセスを受ける。メインメモリ15は、例えば、DRAM(Dynamic Random Access Memory)である。
The
補助記憶装置16は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などである。補助記憶装置16には、OS(Operating System)や演算を行なうための各種プログラムが格納される。 The auxiliary storage device 16 is, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive). The auxiliary storage device 16 stores an OS (Operating System) and various programs for performing calculations.
表示装置17は、例えば、モニタやディスプレイなどである。表示装置17は、演算部11による演算結果の利用者への提示などを行なう。入力装置18は、例えば、キーボードやマウスなどである。利用者は、表示装置17に表示された画面を参照しつつ、入力装置18を用いて情報処理装置1へのデータや命令の入力を行なう。表示装置17及び入力装置18は、1つのハードウェアとして構成されてもよい。
The display device 17 is, for example, a monitor or a display. The display device 17 presents the results of calculations by the
図2は、実施例1に係るL1~L2キャッシュのブロック図である。図2では、L1キャッシュ12、L2キャッシュ13及びL3キャッシュ14の階層構造を分かり易くするため、それぞれが多段で接続されるように示した。実際の接続は、図1に示したように演算部11から延びるバスにそれぞれが接続してもよい。
FIG. 2 is a block diagram of the L1-L2 cache according to the first embodiment. In FIG. 2, in order to make the hierarchical structure of the
L1キャッシュ12は、制御部121及び記憶部122を有する。記憶部122は、キャッシュされたデータ群であるキャッシュ情報123を有する。
The
制御部121は、演算部11からのデータ要求を受信する。そして、制御部121は、データ要求で指定されたデータが記憶部122に存在するか否かを判定する。記憶部122が保持するキャッシュ情報123に指定されたデータが存在する場合、制御部121は、キャッシュ情報123の中から指定されたデータを取り出して演算部11へ送信して応答を行なう。
The control unit 121 receives a data request from the
これに対して、記憶部122が保持するキャッシュ情報123に指定されたデータが存在しない場合、制御部121は、キャッシュミスと判定して、データ要求をL2キャッシュ13へ出力する。その後、L2キャッシュ13から要求したデータを受信すると、制御部121は、記憶部122が保持するキャッシュ情報123として受信したデータを格納する。また、キャッシュの方式によっては、L1キャッシュ12が、L2キャッシュ13から受信したデータを演算部11へ出力してもよい。
On the other hand, if the data specified in the cache information 123 held by the storage unit 122 does not exist, the control unit 121 determines that there is a cache miss and outputs a data request to the L2 cache 13. Thereafter, upon receiving the requested data from the L2 cache 13, the control unit 121 stores the received data as cache information 123 held by the storage unit 122. Further, depending on the cache method, the
次に、L2キャッシュ13について説明する。本実施例では、L2キャッシュ13は、キャッシュのマッピング方式としてセットアソシアティブ方式を用いて動作する。図3は、メモリアドレスの一例を示す図である。本実施例では、メモリアドレス101は、例えば、図3に示すように、タグ、セット、ブロックオフセット及びバイトオフセットを有する。タグとセットとを合わせてブロックアドレスと呼ぶ。ブロックアドレスは、メインメモリ15におけるどのブロックかを示す情報である。また、セットは、キャッシュにおけるどのセットに格納するかを示すインデックスである。また、ブロックオフセットは、ブロック内のどの部分に要求するデータがあるかを示す情報である。また、バイトオフセットは、1回の読み書きの単位であるワードの中のどの部分に要求するデータがあるかを示す情報である。以下では、あるデータが格納された位置を示すメモリアドレスを、そのデータのメモリアドレスと呼ぶ。
Next, the L2 cache 13 will be explained. In this embodiment, the L2 cache 13 operates using a set associative method as a cache mapping method. FIG. 3 is a diagram showing an example of memory addresses. In this embodiment, the
ここで、L2キャッシュ13のセット数の一例について説明する。L2キャッシュ13の記憶部134におけるキャッシュ情報135を格納する領域の容量は、セット数とウェイ数とブロックサイズとの総積により算出される。例えば、L2キャッシュ13には、16ウェイ、2048セット且つブロックサイズが256Byteのものがある。他にも、L2キャッシュ13には、16ウェイ、1024セット且つブロックサイズが64Byteのものがある。
Here, an example of the number of sets in the L2 cache 13 will be explained. The capacity of the area for storing
図2に戻って説明を続ける。本実施例に係るL2キャッシュ13は、処理能力に余裕がある場合に、不規則アクセスの多いデータに対して投機的なプリフェッチを行なう。すなわち、L2キャッシュ13は、不規則アクセスが多いと判定したデータを、データアクセスを受けない段階で事前にキャッシュ情報135として記憶部134に格納する。ここで、本実施例では、L2キャッシュ13が不規則アクセスに基づく投機的プリフェッチを行う場合で説明したが、これに限らず、L1キャッシュ12やL3キャッシュ14といった他のキャッシュメモリが行ってもよい。ただし、L1キャッシュ12は、容量の小ささや演算部11からのアクセス頻度を考えた場合、実施例に係る不規則アクセスに基づく投機的プリフェッチにはあまり適さない。
Returning to FIG. 2, the explanation will be continued. The L2 cache 13 according to this embodiment performs speculative prefetching on data that is frequently accessed irregularly when there is sufficient processing capacity. That is, the L2 cache 13 stores data determined to be frequently accessed irregularly in the storage unit 134 in advance as
以下に、L2キャッシュ13の詳細について説明する。L2キャッシュ13は、図2に示すように、制御部131、キャッシュミス情報更新部132、投機的プリフェッチ部133及び記憶部134を有する。
Details of the L2 cache 13 will be explained below. As shown in FIG. 2, the L2 cache 13 includes a
制御部131は、L1キャッシュ12からのデータ要求を受信する。そして、制御部121は、データ要求で指定されたデータが記憶部134に存在するか否かを判定する。記憶部134が保持するキャッシュ情報135に指定されたデータが存在する場合、制御部131は、キャッシュ情報135の中から指定されたデータを取り出してL1キャッシュ12及び演算部11へ送信して応答を行なう。
The
これに対して、記憶部134が保持するキャッシュ情報135に指定されたデータが存在しない場合、制御部131は、キャッシュミスと判定して、データ要求をL3キャッシュ14へ出力する。また、制御部131は、指定されたデータのキャッシュミスをキャッシュミス情報更新部132に通知する。その後、L3キャッシュ14から要求したデータを受信すると、制御部131は、記憶部134が保持するキャッシュ情報135として受信したデータを格納する。また、キャッシュの方式によっては、L1キャッシュ12が、L3キャッシュ14から受信したデータをL1キャッシュ12へ出力してもよい。
On the other hand, if the data specified in the
キャッシュミス情報136は、メモリアドレスに含まれるタグ毎に、キャッシュミスの発生頻度を管理するためのテーブルである。図4は、キャッシュミス情報の一例の図である。キャッシュミス情報136は、タグ及び各タグに対応するカウンタの値が登録される。タグは、図3に示すメモリアドレス101の上位部分にあたる。また、カウンタは、タグに対応するアドレス範囲で発生したキャッシュミスの数を表す。
The cache miss
キャッシュミス情報更新部132は、キャッシュ情報135の変更に応じて、キャッシュミス情報136を更新する。より詳しくは、キャッシュミス情報更新部132は、キャッシュミス発生時に、指定されたデータのキャッシュミスの通知を制御部131から受ける。次に、キャッシュミス情報更新部132は、記憶部134に格納されたキャッシュミス情報136を参照する。そして、キャッシュミス情報更新部132は、キャッシュミス情報136に指定されたデータに対応するエントリが存在するか否かを判定する。すなわち、キャッシュミス情報更新部132は、指定されたデータのメモリアドレスに含まれるタグを有するエントリがキャッシュミス情報136に存在するか否かを判定する。
The cache miss
対応するエントリが存在しない場合、キャッシュミス情報更新部132は、指定されたデータのメモリアドレスに含まれるタグ有するエントリをキャッシュミス情報136に追加する。さらに、キャッシュミス情報更新部132は、カウンタをカウンタの初期値に設定する。これに対して、対応するエントリが存在する場合、キャッシュミス情報更新部132は、キャッシュミス情報136の指定されたデータのメモリアドレスに含まれるタグに対応するカウンタをインクリメントする。すなわち、キャッシュミス情報更新部132は、タグ毎にキャッシュミスの発生数を累積していく。キャッシュミス情報136を更新した場合、キャッシュミス情報更新部132は、キャッシュミス情報136の更新を投機的プリフェッチ部133へ通知する。
If the corresponding entry does not exist, the cache miss
ここで、L2キャッシュ13は、ストライドプリフェッチなどのハードウェアプリフェッチを実行してもよい。ただし、キャッシュミス情報更新部132は、ハードウェアプリフェッチをキャッシュミスと同様には扱わず、ハードウェアプリフェッチが発生した場合でもキャッシュミス情報136のカウントをインクリメントしない。
Here, the L2 cache 13 may perform hardware prefetch such as stride prefetch. However, the cache miss
また、キャッシュミス情報更新部132は、所定の条件が満たされた場合に、キャッシュミス情報136のエントリをクリアしてもよい。例えば、特定の処理における一群の演算が終了した場合に、キャッシュミス情報更新部132は、キャッシュミス情報136のエントリをクリアしてもよい。このキャッシュミス情報更新部132が、「情報管理部」の一例にあたる。
Further, the cache miss
投機的プリフェッチ部133は、L2キャッシュ13とL3キャッシュ14との間のバスに余裕が存在するときに、不規則アクセスが多いアドレス範囲からキャッシュしていないデータをプリフェッチする。すなわち、投機的プリフェッチ部133は、キャッシュしていないデータを下位メモリであるL3キャッシュ14又はメインメモリ15から取得してキャッシュ情報135として記憶部134に格納する。
The
ここで、ハードウェアプリフェッチなどの通常のプリフェッチでは、データのアクセスの規則性を推測してプリフェッチが行われる。すなわち、あるアドレス範囲において推測できる程度の規則性にしたがってデータアクセスが行われていれば、そのアドレス範囲においてキャッシュミスの発生は通常のプリフェッチにより抑えられると考える。このことから、キャッシュミスが頻発している場合、推測できる程度の規則性から外れたデータアクセスが行われていると想定される。すなわち、キャッシュミスの発生数が多いアドレス範囲は、不規則アクセスが多いアドレス範囲と考えることができる。そこで、投機的プリフェッチ部133は、キャッシュミス情報136においてカウンタの値が大きいアドレス範囲に不規則アクセスの対象となるデータがあると判定し、そのデータをL2キャッシュ13の記憶部134に格納する。
Here, in normal prefetching such as hardware prefetching, prefetching is performed by estimating the regularity of data access. That is, if data accesses are performed according to a regularity that can be estimated within a certain address range, it is considered that the occurrence of cache misses in that address range can be suppressed by normal prefetching. From this, if cache misses occur frequently, it is assumed that data accesses are being performed with a degree of irregularity that can be inferred. In other words, an address range where a large number of cache misses occur can be considered an address range where irregular accesses occur frequently. Therefore, the
ただし、キャッシュミス情報136においてカウンタ値が全体的に小さい場合、いずれのアドレス範囲においても不規則アクセスが発生していないといえる。そこで、投機的プリフェッチ部133は、不規則アクセスの発生を判定するための判定閾値を予め有する。判定閾値は、大きければ不規則アクセスの検出の見逃しが多くなり、小さければ不規則アクセスの誤検出が多くなる。そこで、判定閾値は、情報処理装置1の運用状態に応じて決定されることが好ましい。
However, if the counter values in the cache miss
このように、特定のアドレス範囲に不規則アクセスの対象となるデータが推測し、そのアドレス範囲の中から今後アクセス対象になるかが不確実なデータを選択してプリフェッチすることから、以下では、投機的プリフェッチ部133が行なうプリフェッチを投機的プリフェッチと呼ぶ。投機的プリフェッチ部133が投機的プリフェッチの対象とするデータが、「投機的データ」の一例にあたる。以下に、投機的プリフェッチ部133の動作の詳細について説明する。
In this way, data to be accessed irregularly is inferred in a specific address range, and data that is uncertain whether it will be accessed in the future is selected from that address range and prefetched. The prefetch performed by the
投機的プリフェッチ部133は、キャッシュミス情報136の更新通知をキャッシュミス情報更新部132から受信する。次に、投機的プリフェッチ部133は、データを格納する空き領域が記憶部134に存在するか否かを判定する。データを格納する空き領域があれば、投機的プリフェッチ部133は空いているウェイが存在するセットを1つ選択する。
The
次に、投機的プリフェッチ部133は、キャッシュミス情報136を参照する。そして、投機的プリフェッチ部133は、キャッシュミス情報136に格納されたエントリの中からカウンタ値が大きいものから順にエントリを選択する。
Next, the
次に、投機的プリフェッチ部133は、選択したエントリのカウンタ値が判定閾値より大きいか否かを判定する。判定閾値よりもカウンタ値が大きい場合、投機的プリフェッチ部133は、選択したセットと選択したエントリとのタグに対応するデータが、記憶部134に存在するか否かを判定する。選択したセットとタグに対応するデータが記憶部134に既に存在する場合、投機的プリフェッチ部133は、次にカウンタ値の大きいエントリをキャッシュミス情報136から選択して、同様の処理を繰り返す。
Next, the
これに対して、選択したセットとタグに対応するデータが記憶部134に存在しなければ、投機的プリフェッチ部133は、L2キャッシュ13とL3キャッシュ14との間のバスの処理能力に余裕ができるまで待機する。具体的には、投機的プリフェッチ部133は、L2キャッシュ13とL3キャッシュ14との間のバスの処理量が予め設定した処理量閾値よりも小さい場合に、処理能力に余裕があると判定する。投機的プリフェッチ部133は、例えば、バスの処理量としてバスのビジー率(使用率)、ロードストア比率、L2キャッシュ13のキャッシュミス率又はデータ取得に係るレイテンシなどを用いることができる。
On the other hand, if the data corresponding to the selected set and tag does not exist in the storage unit 134, the
例えば、ロードストア比率を用いる場合、投機的プリフェッチ部133は、実行命令に対するロード命令数及びストア命令数の比率をL1キャッシュ12から取得する。ロード命令及びストア命令の場合データがバスで運ばれるため、その比率が大きい場合に、投機的プリフェッチ部133は、バスの処理量が大きいと判定できる。また、L2キャッシュ13のキャッシュミスが多い場合、L2キャッシュ13がL3キャッシュ14から取得するデータ量が増加する。そこで、L2キャッシュ13のキャッシュミスが多い場合に、投機的プリフェッチ部133は、バスの処理量が大きいと判定できる。また、データ取得に係るレイテンシは、演算部11によるL1キャッシュ12からのデータ取得にかかる時間である。データ取得に係るレイテンシはL3キャッシュ14やメインメモリ15へのアクセスが増えると増加するため、この値が大きい場合に、投機的プリフェッチ部133は、バスの処理量が大きいと判定できる。
For example, when using the load/store ratio, the
L2キャッシュ13とL3キャッシュ14との間のバスの処理能力に余裕ができた後、投機的プリフェッチ部133は、選択したセットとタグに対応するデータが待機中に記憶部134に格納されていないかを確認する。待機中にデータの格納が行われていなければ、投機的プリフェッチ部133は、対応するデータをL3キャッシュ14から取得してL2キャッシュ13の記憶部134に格納する。これにより、投機的プリフェッチ部133は、投機的プリフェッチ処理を実行する。
After the processing capacity of the bus between the L2 cache 13 and the L3 cache 14 becomes available, the
図5は、実施例1に係る制御部によるデータキャッシュ処理のフローチャートである。次に、図5を参照して、制御部131によるデータキャッシュ処理の流れを説明する。ここでは、演算部11によるデータAへのアクセスが発生した場合で説明する。
FIG. 5 is a flowchart of data cache processing by the control unit according to the first embodiment. Next, the flow of data cache processing by the
制御部131は、データAの送信要求をL1キャッシュ12から受ける(ステップS101)。
The
次に、制御部131は、データAが記憶部134に格納されたキャッシュ情報135に存在するか否かを判定する(ステップS102)。
Next, the
データAが記憶部134に格納されたキャッシュ情報135に存在しない場合(ステップS102:否定)、制御部131は、データAのキャッシュミスをキャッシュミス情報更新部132に通知する(ステップS103)。
If data A does not exist in the
次に、制御部131は、データAの送信をL3キャッシュ14に要求する(ステップS104)。ステップS104は、ステップS103と同時、もしくは、ステップS103の前に行ってもよい。
Next, the
その後、制御部131は、データAをL3キャッシュ14から取得する。そして、制御部131は、データAをSRAMである記憶部134にキャッシュ情報135として格納する(ステップS105)。
Thereafter, the
これに対して、データAが記憶部134に格納されたキャッシュ情報135に存在する場合(ステップS102:肯定)、制御部131は、記憶部134が保持するキャッシュ情報135の中からデータAを取得する。そして、制御部131は、データAをL1キャッシュ12及び演算部11へ送信する(ステップS106)。
On the other hand, if the data A exists in the
図6は、キャッシュミス情報更新部によるキャッシュミス情報の更新処理のフローチャートである。次に、図6を参照して、キャッシュミス情報更新部132によるキャッシュミス情報の更新処理の流れを説明する。
FIG. 6 is a flowchart of the cache miss information update process by the cache miss information update unit. Next, with reference to FIG. 6, the flow of the cache miss information update process by the cache miss
キャッシュミス情報更新部132は、キャッシュミスの通知を制御部131から受信する(ステップS201)。
The cache miss
次に、キャッシュミス情報更新部132は、キャッシュミスされたデータに対応するエントリ、すなわち通知で指定されたデータのメモリアドレスに含まれるタグに対応するエントリがキャッシュミス情報136に存在するか否かを判定する(ステップS202)。
Next, the cache miss
キャッシュミスされたデータに対応するエントリが存在する場合(ステップS202:肯定)、キャッシュミス情報更新部132は、キャッシュミスされたデータに対応するエントリのカウンタ値をインクリメントする(ステップS203)。
If there is an entry corresponding to the cache-missed data (step S202: affirmative), the cache-miss
これに対して、キャッシュミスされたデータに対応するエントリが存在しない場合(ステップS202:否定)、キャッシュミス情報更新部132は、キャッシュミスされたデータに対応するエントリをキャッシュミス情報136に追加する(ステップS204)。この際、キャッシュミス情報更新部132は、追加したエントリのカウンタ値を初期値に設定する。
On the other hand, if there is no entry corresponding to the cache-missed data (step S202: negative), the cache-miss
図7は、投機的プリフェッチ部による投機的プリフェッチ処理のフローチャートである。次に、図7を参照して、投機的プリフェッチ部133による投機的プリフェッチ処理の流れを説明する。
FIG. 7 is a flowchart of speculative prefetch processing by the speculative prefetch unit. Next, with reference to FIG. 7, the flow of speculative prefetch processing by the
投機的プリフェッチ部133は、キャッシュミス情報136の更新通知をキャッシュミス情報更新部132から受信する(ステップS301)。
The
次に、投機的プリフェッチ部133は、データを格納する空き領域が記憶部134に存在するか否かを判定する(ステップS302)。データを格納する空き領域が存在しない場合(ステップS302:否定)、投機的プリフェッチ部133は、投機的プリフェッチ処理を終了する。
Next, the
これに対して、データを格納する空き領域が存在する場合(ステップS302:肯定)、投機的プリフェッチ部133は空いているウェイが存在するセットを選択する(ステップS303)。
On the other hand, if there is a free area to store data (step S302: affirmative), the
次に、投機的プリフェッチ部133は、キャッシュミス情報136を参照する。そして、投機的プリフェッチ部133は、キャッシュミス情報136に登録されたエントリの中の未選択のエントリのうちカウンタ値が最大のエントリを選択する(ステップS304)。
Next, the
次に、投機的プリフェッチ部133は、選択したエントリのカウンタ値が判定閾値より大きいか否かを判定する(ステップS305)。選択したエントリのカウンタ値が判定閾値以下の場合(ステップS305:否定)、投機的プリフェッチ部133は、投機的プリフェッチ処理を終了する。
Next, the
これに対して、選択したエントリのカウンタ値が判定閾値よりも大きい場合(ステップS305:肯定)、投機的プリフェッチ部133は、選択したセットとタグに対応するデータが記憶部134に存在するか否かを判定する(ステップS306)。選択したセットとタグに対応するデータが記憶部134に既に存在する場合(ステップS306:肯定)、投機的プリフェッチ部133は、ステップS304へ戻る。
On the other hand, if the counter value of the selected entry is larger than the determination threshold (step S305: affirmative), the
これに対して、選択したセットとタグに対応するデータが記憶部134に既に存在しない場合(ステップS306:否定)、投機的プリフェッチ部133は、L2キャッシュ13とL3キャッシュ14との間のバスの処理能力に余裕ができるまで待機する(ステップS307)。
On the other hand, if the data corresponding to the selected set and tag does not already exist in the storage unit 134 (step S306: negative), the
その後、投機的プリフェッチ部133は、選択したセットとタグに対応するデータが記憶部134に格納されていないかを再度確認する(ステップS308)。選択したセットとタグに対応するデータが記憶部134に格納されていた場合(ステップS308:肯定)、投機的プリフェッチ部133は、ステップS304へ戻る。
After that, the
これに対して、選択したセットとタグに対応するデータが記憶部134に格納されていない場合(ステップS308:否定)、投機的プリフェッチ部133は、対応するデータをL3キャッシュ14から取得する。そして、投機的プリフェッチ部133は、記憶部134にキャッシュ情報135として格納する(ステップS309)。
On the other hand, if the data corresponding to the selected set and tag is not stored in the storage unit 134 (step S308: negative), the
以上に説明したように、本実施例に係る情報処理装置のキャッシュは、キャッシュミスの頻度が高いアドレス範囲のデータを投機的にプリフェッチしておく。これにより、不規則なデータアクセスが行われる場合に、データがプリフェッチされている可能性を向上させることができる。したがって、限られたメモリバンド幅を無駄なく使用することが可能となり、データ転送を効率化することができる。 As described above, the cache of the information processing apparatus according to this embodiment speculatively prefetches data in an address range where cache misses occur frequently. Thereby, when irregular data access is performed, it is possible to improve the possibility that data is prefetched. Therefore, it is possible to use the limited memory bandwidth without wasting it, and data transfer can be made more efficient.
図8は、実施例2に係るL2キャッシュのブロック図である。図8では、L1キャッシュ12の詳細は省略した。本実施例に係るL2キャッシュ13は、SRAM137とSRAM137よりも記憶密度の高いメモリであるMRAM138の混載メモリである記憶部134を有する。記憶部134において、SRAM137がメイン領域であり、MRAM138が予備領域である。そして、L2キャッシュ13は、投機的プリフェッチにおいてデータをMRAM138に格納する。さらに、L2キャッシュ13は、MRAM138に格納されたデータのうちアクセス頻度の高いデータはSRAM137に移動する。以下に、本実施例に係るL2キャッシュ13の詳細について説明する。以下の説明では、実施例1と同様の各部の動作については説明を省略する。
FIG. 8 is a block diagram of the L2 cache according to the second embodiment. In FIG. 8, details of the
図8に示すように、本実施例に係るL2キャッシュ13は、実施例1に係る各部に加えてデータモニタ部140を有する。さらに、本実施例に係るL2キャッシュ13は、記憶部134をSRAM137とMRAM(Magnetoresistive Random Access Memory)138との混載メモリである。MRAM138は、SRAM137よりも記憶密度が高いメモリである。
As shown in FIG. 8, the L2 cache 13 according to the present embodiment includes a
SRAM137は、キャッシュ情報135を格納する。SRAM137は、一般的なキャッシュメモリと同様のフィールド及び機能を有する。
MRAM138は、補助キャッシュ情報139及びキャッシュミス情報136を格納する。補助キャッシュ情報139は、投機的プリフェッチ部133が行う投機的プリフェッチにより記憶部134に格納されたデータ群である。
図9は、実施例2に係るキャッシュ情報の構成を示す図である。記憶部134は、SRAM137に格納されたキャッシュ情報135及びMRAM138に格納された補助キャッシュ情報139をまとめて、全体を1つのメモリアレイ200として保持する。例えば、図9に示す例では、記憶部134は、4ウェイアソシアティブのメモリアレイ200として保持する。MRAM138が有する補助キャッシュ情報139には、図9でReference Countとして示した各データの参照回数を表す参照カウンタがブロック毎に登録される。参照カウンタは、2ビット程度のカウンタである。
FIG. 9 is a diagram showing the configuration of cache information according to the second embodiment. The storage unit 134 collectively holds the
制御部131は、データの送信要求をL1キャッシュ12から受ける。そして、制御部131は、送信要求で指定されたデータが記憶部134に格納されているか否かを判定する。この場合、制御部131は、図9に示すキャッシュ情報135及び補助キャッシュ情報139をまとめたメモリアレイ200を対象としてデータを検索する。すなわち、制御部131は、キャッシュ情報135又は補助キャッシュ情報139に存在するか否かを判定する。指定されたデータが記憶部134に格納されている場合、制御部131は、記憶部134が保持するキャッシュ情報135又は補助キャッシュ情報139の中から指定されたデータを取得する。その後、制御部131は、取得したデータをL1キャッシュ12及び演算部11へ送信する。
The
さらに、制御部131は、キャッシュヒットしたデータの格納場所がMRAM138か否かを判定する。取得したデータの格納場所がMRAM138でない場合、制御部131は、キャッシュヒットしたデータをSRAM137に格納したままの状態としてデータキャッシュ処理を終了する。これに対して、キャッシュヒットしたデータの格納場所がMRAM138の場合、制御部131は、キャッシュヒットしたデータへのアクセスをデータモニタ部140に通知する。
Furthermore, the
投機的プリフェッチ部133は、キャッシュミスの通知をキャッシュミス情報更新部132から受ける。そして、投機的プリフェッチ部133は、キャッシュミス情報136におけるカウンタ値を用いて不規則アクセスのデータが格納されたアドレス範囲を特定する。その後、投機的プリフェッチ部133は、特定したアドレス範囲のデータをL3キャッシュ14から取得する。
The
ここで、投機的プリフェッチの対象のデータは、ハードウェアプリフェッチなど他のプリフェッチされたデータを含む記憶部134に格納された他のデータよりもアクセスされる可能性が低い。そこで、投機的プリフェッチの対象のデータは、比較的動作速度が遅いメモリに格納してもデータ転送速度への影響は小さい。また、投機的プリフェッチの対象のデータは、より多く保持することでアクセスされる可能性を向上させることができ、投機的プリフェッチの効果を大きくすることができる。ただし、投機的プリフェッチにより得られたデータに対するアクセス頻度が高い場合には、そのデータは動作速度がなるべく速いメモリに格納されることが好ましい。 Here, the data subject to speculative prefetching is less likely to be accessed than other data stored in the storage unit 134 including other prefetched data such as hardware prefetching. Therefore, even if the data to be subjected to speculative prefetching is stored in a memory whose operating speed is relatively slow, the effect on the data transfer speed is small. Further, by retaining more data to be subjected to speculative prefetching, the possibility of access can be improved, and the effect of speculative prefetching can be increased. However, if the data obtained by speculative prefetching is frequently accessed, it is preferable that the data be stored in a memory whose operating speed is as fast as possible.
そこで、投機的プリフェッチ部133は、取得したデータを記憶部134のMRAM138が保持する補助キャッシュ情報139として格納する。すなわち、投機的プリフェッチ部133は、投機的プリフェッチの対象のデータをMRAM138に格納して投機的プリフェッチを行なう。
Therefore, the
データモニタ部140は、MRAM138に格納されたデータのアクセス頻度に応じてデータをSRAM137に移動する。以下にデータモニタ部140の詳細について説明する。
The data monitor
データモニタ部140は、MRAM138からSRAM137への移動の判定のための移動閾値を有する。データモニタ部140は、キャッシュヒットしたデータへのアクセスの通知を制御部131から受ける。そして、データモニタ部140は、補助キャッシュ情報139におけるキャッシュヒットしたデータの参照カウンタをインクリメントする。ここで、データモニタ部140は、書込速度が特に遅い場合は、書き込みによるデータアクセスの場合のインクリメント量が読み出しによるデータアクセスの場合のインクリメント量より大きくするようにインクリメント量を変えてもよい。
The data monitor
次に、データモニタ部140は、キャッシュヒットしたデータの参照カウンタが移動閾値を超えたか否かを判定する。キャッシュヒットしたデータの参照カウンタが移動閾値を超えた場合、データモニタ部140は、キャッシュヒットしたデータを格納するための空き領域がSRAM137に存在するか否かを判定する。
Next, the data monitor
キャッシュヒットしたデータを格納するための空き領域がSRAM137に存在する場合、データモニタ部140は、キャッシュヒットしたデータをMRAM138からSRAM137へ移動する。
If there is free space in the
これに対して、キャッシュヒットしたデータを格納するための空き領域がSRAM137に存在しなければ、データモニタ部140は、SRAM137に格納されたデータの中からキャッシュヒットしたデータを格納するための空き領域を確保するためのリプレイスデータを選択する。データモニタ部140は、例えば、疑似LRU(Least Recently Used)などの一般的に用いられる手法でリプレイスデータの選択を行なう。そして、データモニタ部140は、キャッシュヒットしたデータをMRAM138からSRAM137に移動する。また、データモニタ部140は、選択したリプレイスデータをSRAM137からMRAM138に移動する。
On the other hand, if there is no free space in the
図10は、実施例2に係る制御部によるデータキャッシュ処理のフローチャートである。次に、図10を参照して、本実施例に係る制御部131によるデータキャッシュ処理の流れを説明する。ここでは、演算部11によるデータAへのアクセスが発生した場合で説明する。
FIG. 10 is a flowchart of data cache processing by the control unit according to the second embodiment. Next, with reference to FIG. 10, the flow of data cache processing by the
制御部131は、データAの送信要求をL1キャッシュ12から受ける(ステップS401)。
The
次に、制御部131は、データAが記憶部134に格納されたキャッシュ情報135又は補助キャッシュ情報139のいずれかに存在するか否かを判定する(ステップS402)。
Next, the
データAが記憶部134に格納されたキャッシュ情報135及び補助キャッシュ情報139のいずれにも存在しない場合(ステップS402:否定)、制御部131は、データAのキャッシュミスをキャッシュミス情報更新部132に通知する(ステップS403)。
If the data A does not exist in either the
次に、制御部131は、データAの送信をL3キャッシュ14に要求する(ステップS404)。
Next, the
その後、制御部131は、データAをL3キャッシュ14から取得する。そして、制御部131は、データAをSRAM137にキャッシュ情報135として格納する(ステップS405)。
Thereafter, the
これに対して、データAが記憶部134に格納されたキャッシュ情報135又は補助キャッシュ情報139のいずれかに存在する場合(ステップS402:肯定)、制御部131は、記憶部134が保持するキャッシュ情報135又はキャッシュ補助情報139の中からデータAを取得する。そして、制御部131は、データAをL1キャッシュ12及び演算部11へ送信する(ステップS406)。
On the other hand, if data A exists in either the
その後、制御部131は、データAの格納場所がMRAM138か否かを判定する(ステップS407)。データAの格納場所がMRAM138でない場合(ステップS407:否定)、制御部131は、データAをそのままの状態としてデータキャッシュ処理を終了する。
After that, the
これに対して、データAの格納場所がMRAM138の場合(ステップS407:肯定)、制御部131は、データAへのアクセスをデータモニタ部140に通知する(ステップS408)。その後、制御部131は、データキャッシュ処理を終了する。
On the other hand, if the storage location of data A is MRAM 138 (step S407: affirmative),
ここで、本実施例に係る投機的プリフェッチ部133による投機的プリフェッチの流れは、図7に示したフローと同様の処理である。ただし、本実施例に係る投機的プリフェッチ部133、ステップS309において、データをMRAM138に格納する。
Here, the flow of speculative prefetch by the
図11は、データモニタ部によるデータ格納処理のフローチャートである。次に、図11を参照して、データモニタ部140によるデータキャッシュ格納処理の流れを説明する。ここでは、制御部131によるデータAへのアクセスが発生した場合で説明する。
FIG. 11 is a flowchart of data storage processing by the data monitor section. Next, with reference to FIG. 11, the flow of data cache storage processing by the data monitor
データモニタ部140は、キャッシュヒットしたデータAへのアクセスの通知を制御部131から受ける(ステップS501)。
The data monitor
次に、データモニタ部140は、補助キャッシュ情報139におけるデータAの参照カウンタをインクリメントする(ステップS502)。
Next, the data monitor
次に、データモニタ部140は、データAの参照カウンタが移動閾値より大きいか否かを判定する(ステップS503)。データAの参照カウンタが移動閾値以下の場合(ステップS503:否定)、データモニタ部140は、データの格納処理を終了する。
Next, the data monitor
これに対して、データAの参照カウンタが移動閾値より大きい場合(ステップS503:肯定)、データモニタ部140は、データAを格納するための空き領域がSRAM137に存在するか否かを判定する(ステップS504)。
On the other hand, if the reference counter for data A is larger than the movement threshold (step S503: affirmative), the data monitor
データAを格納するための空き領域がSRAM137に存在する場合(ステップS504:肯定)、データモニタ部140は、データAをMRAM138からSRAM137へ移動してSRAM137に格納する(ステップS505)。その後、データモニタ部140は、データの格納処理を終了する。
If there is free space in the
これに対して、データAを格納するための空き領域がSRAM137に存在しない場合(ステップS504:否定)、データモニタ部140は、SRAM137に格納されたデータの中からリプレイスデータを選択する(ステップS506)。ここでは、データモニタ部140が、リプレイスデータとしてデータBを選択した場合で説明する。
On the other hand, if there is no free space in the
次に、データモニタ部140は、データAをMRAM138からSRAM137に移動してSRAM137に格納する。また、データモニタ部140は、データBをSRAM137からMRAM138に移動してMRAM138に格納する(ステップS507)。その後、データモニタ部140は、データの格納処理を終了する。
Next, the data monitor
以上に説明したように、本実施例に係るL2キャッシュは、SRAMとSRAMよりも記憶密度の高いメモリとの混載メモリであり、投機的プリフェッチの対象のデータをSRAMよりも記憶密度の高いメモリに格納する。また、本実施例に係るL2キャッシュは、MRAMに格納したデータのアクセス頻度が高い場合には、そのデータをSRAMに移動する。このように、L2キャッシュに格納されたデータのうちアクセスの可能性が低い投機的プリフェッチによるデータを記憶密度の高いMRAMに格納することで、データの転送速度の低下を抑えつつ、投機的プリフェッチによるデータをより多く保持することができる。これにより、投機的プリフェッチによるキャッシュヒット率を向上させることができ、投機的プリフェッチの効果を大きくすることができる。 As explained above, the L2 cache according to this embodiment is a mixed memory of SRAM and memory with higher storage density than SRAM, and the data to be speculatively prefetched is transferred to the memory with higher storage density than SRAM. Store. Furthermore, when the data stored in MRAM is accessed frequently, the L2 cache according to the present embodiment moves the data to SRAM. In this way, by storing speculative prefetch data that is unlikely to be accessed among the data stored in the L2 cache in MRAM with high storage density, data transfer speed can be suppressed while reducing speculative prefetch data. Can hold more data. Thereby, the cache hit rate due to speculative prefetching can be improved, and the effect of speculative prefetching can be increased.
(変形例)
実施例2におけるMRAM138は、L2キャッシュ13内でのビクティムキャッシュとして用いることも可能である。以下で、MRAM138をビクティムキャッシュとして用いる場合の動作について説明する。
(Modified example)
The
図12は、MRAMをビクティムキャッシュとして用いる場合のデータキャッシュ処理のフローチャートである。図12を参照して、MRAM138をビクティムキャッシュとして用いる場合のデータキャッシュ処理を説明する。ここでは、演算部11がデータAへのアクセスを要求し、且つ、データAがL2キャッシュ13に存在しない場合で説明する。
FIG. 12 is a flowchart of data cache processing when MRAM is used as a victim cache. With reference to FIG. 12, data cache processing when using the
制御部131は、データAの取得要求をL1キャッシュ12から受けて、データAが記憶部134のキャッシュ情報135及び補助キャッシュ情報139のいずれかとして格納されているか否かを判定する。この場合、データAは記憶部134に格納されておらず、制御部131はデータAを検出できないため、データAのキャッシュミスが発生する(ステップS601)。
The
次に、制御部131は、データAの送信をL3キャッシュ14に要求する(ステップS602)。
Next, the
次に、制御部131は、SRAM137にデータAを格納する空き領域が存在するか否かを判定する(ステップS603)。データAを格納する空き領域が存在する場合(ステップS603:肯定)、制御部131は、ステップS608へ進む。
Next, the
これに対して、データAを格納する空き領域が存在しない場合(ステップS603:否定)、制御部131は、データAを格納する空き領域を確保するために、SRAM137のキャッシュ情報135の中から削除するデータBを選択する(ステップS604)。
On the other hand, if there is no free space to store the data A (step S603: negative), the
次に、制御部131は、MRAM138にデータBを格納する空き領域が存在するか否かを判定する(ステップS605)。データBを格納する空き領域が存在する場合(ステップS605:肯定)、制御部131は、ステップS607へ進む。
Next, the
これに対して、データBを格納する空き領域が存在しない場合(ステップS605:否定)、制御部131は、データBを格納する空き領域を確保するために、MRAM138の補助キャッシュ情報139から削除するデータを選択する。そして、制御部131は、選択したデータをMRAM138の補助キャッシュ情報139から削除する(ステップS606)。その後、制御部131は、ステップS607へ進む。
On the other hand, if there is no free space to store the data B (step S605: negative), the
次に、制御部131は、データBをMRAM138に格納する(ステップS607)。
Next, the
その後、制御部131は、データAをL3キャッシュ14から取得する。そして、制御部131は、データAをSRAM137に格納する(ステップS608)。
Thereafter, the
以上に説明したように、L2キャッシュ内のMRAMは、L2キャッシュ内でのビクティムキャッシュとして使用することも可能である。これにより、L2キャッシュ内のMRAMをより効率的に使用することが可能となる。 As explained above, the MRAM in the L2 cache can also be used as a victim cache in the L2 cache. This allows the MRAM in the L2 cache to be used more efficiently.
1 情報処理装置
11 演算部
12 L1キャッシュ
13 L2キャッシュ
14 L3キャッシュ
15 メインメモリ
16 補助記憶装置
17 表示装置
18 入力装置
121 制御部
122 記憶部
123 キャッシュ情報
131 制御部
132 キャッシュミス情報更新部
133 投機的プリフェッチ部
134 記憶部
135 キャッシュ情報
136 キャッシュミス情報
140 データモニタ部
1
Claims (8)
前記キャッシュの少なくとも1つは、
データを格納する記憶部と、
前記演算部又は上位キャッシュからデータアクセス要求を受けて、前記データアクセス要求の対象データが前記記憶部に存在する場合に前記対象データにアクセスし、前記対象データが前記記憶部に存在しない場合に前記対象データを下位キャッシュ又はメインメモリから取得して前記記憶部に格納する制御部と、
前記対象データが前記記憶部に存在しないことを示すキャッシュミスの発生回数を算出する情報管理部と、
前記発生回数を基に投機的データを前記メインメモリ又は前記下位キャッシュから取得して、取得した前記投機的データを前記記憶部に格納する投機的プリフェッチ部とを備えた
ことを特徴とする演算処理装置。 An arithmetic processing device having an arithmetic unit and one or a plurality of hierarchical caches,
At least one of the caches includes:
a storage unit that stores data;
Upon receiving a data access request from the arithmetic unit or upper cache, if the target data of the data access request exists in the storage unit, the target data is accessed, and if the target data does not exist in the storage unit, the target data is accessed. a control unit that acquires target data from a lower cache or main memory and stores it in the storage unit;
an information management unit that calculates the number of cache misses that indicate that the target data does not exist in the storage unit;
and a speculative prefetch unit that acquires speculative data from the main memory or the lower cache based on the number of occurrences and stores the acquired speculative data in the storage unit. Device.
前記投機的プリフェッチ部は、前記発生回数を基に、前記アドレス範囲のいずれかを選択して、選択した前記アドレス範囲に含まれる前記投機的データを取得する
ことを特徴とする請求項1に記載の演算処理装置。 The information management unit calculates the number of occurrences for each address range,
The speculative prefetch unit selects one of the address ranges based on the number of occurrences and acquires the speculative data included in the selected address range. arithmetic processing unit.
前記投機的プリフェッチ部は、前記投機的データを前記予備領域に格納する
ことを特徴とする請求項1に記載の演算処理装置。 The storage unit has a main area and a spare area,
The arithmetic processing device according to claim 1, wherein the speculative prefetch unit stores the speculative data in the spare area.
前記キャッシュの少なくとも1つに、
前記演算部又は上位キャッシュからデータアクセス要求を受けさせ、
前記データアクセス要求の対象データが当該キャッシュの記憶領域に存在する場合に前記対象データにアクセスさせ、
前記対象データが前記記憶領域に存在しない場合に前記対象データを下位キャッシュ又は前記メインメモリから取得させて前記記憶領域に格納させ、
前記対象データが前記記憶領域に存在しないことを示すキャッシュミスの発生回数を算出させ、
前記発生回数を基に投機的データを前記メインメモリ又は前記下位キャッシュから取得させ、取得した前記投機的データを前記記憶領域に格納させる
ことを特徴とする演算処理方法。 An arithmetic processing method using an arithmetic unit, a main memory, and one or a plurality of hierarchical caches, the method comprising:
at least one of the caches,
receive a data access request from the arithmetic unit or upper cache;
accessing the target data when the target data of the data access request exists in the storage area of the cache;
If the target data does not exist in the storage area, acquiring the target data from a lower cache or the main memory and storing it in the storage area;
calculating the number of occurrences of cache misses indicating that the target data does not exist in the storage area;
An arithmetic processing method comprising: acquiring speculative data from the main memory or the lower cache based on the number of occurrences, and storing the acquired speculative data in the storage area.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022113918A JP2024011696A (en) | 2022-07-15 | 2022-07-15 | Arithmetic processing apparatus and arithmetic processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022113918A JP2024011696A (en) | 2022-07-15 | 2022-07-15 | Arithmetic processing apparatus and arithmetic processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024011696A true JP2024011696A (en) | 2024-01-25 |
Family
ID=89621758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022113918A Pending JP2024011696A (en) | 2022-07-15 | 2022-07-15 | Arithmetic processing apparatus and arithmetic processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2024011696A (en) |
-
2022
- 2022-07-15 JP JP2022113918A patent/JP2024011696A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240004800A1 (en) | Write merging on stores with different tags | |
JP4486750B2 (en) | Shared cache structure for temporary and non-temporary instructions | |
US8041897B2 (en) | Cache management within a data processing apparatus | |
US6957304B2 (en) | Runahead allocation protection (RAP) | |
US6138213A (en) | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line | |
US4774654A (en) | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory | |
US9672161B2 (en) | Configuring a cache management mechanism based on future accesses in a cache | |
US20130111136A1 (en) | Variable cache line size management | |
US20080320228A1 (en) | Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache | |
US20070239940A1 (en) | Adaptive prefetching | |
US20100217937A1 (en) | Data processing apparatus and method | |
EP1869557B1 (en) | Global modified indicator to reduce power consumption on cache miss | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
JP3732397B2 (en) | Cash system | |
US7353341B2 (en) | System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches | |
JP2001249846A (en) | Cache memory device and data processing system | |
JP2024011696A (en) | Arithmetic processing apparatus and arithmetic processing method | |
JP2024511768A (en) | Method and apparatus for DRAM cache tag prefetcher | |
US9552293B1 (en) | Emulating eviction data paths for invalidated instruction cache | |
JP7311959B2 (en) | Data storage for multiple data types | |
US11397680B2 (en) | Apparatus and method for controlling eviction from a storage structure | |
Khan | Brief overview of cache memory | |
Bulić | Caches | |
JPH07101412B2 (en) | Data pre-fetching method and multiprocessor system |