JP4710024B2 - キャッシュメモリ制御装置およびキャッシュメモリ制御方法 - Google Patents
キャッシュメモリ制御装置およびキャッシュメモリ制御方法 Download PDFInfo
- Publication number
- JP4710024B2 JP4710024B2 JP2009520187A JP2009520187A JP4710024B2 JP 4710024 B2 JP4710024 B2 JP 4710024B2 JP 2009520187 A JP2009520187 A JP 2009520187A JP 2009520187 A JP2009520187 A JP 2009520187A JP 4710024 B2 JP4710024 B2 JP 4710024B2
- Authority
- JP
- Japan
- Prior art keywords
- request
- entry
- data transfer
- cache memory
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 51
- 238000012546 transfer Methods 0.000 claims description 114
- 238000012545 processing Methods 0.000 claims description 60
- 230000001629 suppression Effects 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 3
- 238000005259 measurement Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 2
- 230000005764 inhibitory process Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は,メモリアクセスをアウトオブオーダーで処理するプロセッサのキャッシュ制御に関するものであり,特に,キャッシュに登録されたデータのスラッシングにより処理速度が低下するのを防ぐキャッシュメモリ制御方法に関するものである。
メモリアクセスをアウトオブオーダーで処理するプロセッサでは,キャッシュ制御部は,命令制御部からのメモリアクセスの要求を,その要求の順序によらず順不同で処理することが可能である。
図16,図17は,一次キャッシュ制御部におけるデータの参照,登録,置換の例を説明する図である。図16,図17に示す例において,一次キャッシュ制御部200の一次キャッシュRAM210は,way−0,way−1の2つのwayからなるセットアソシエイティブ(set associative )方式で構成される。
一次キャッシュ制御部200は,命令制御部100からメモリアクセスの命令が要求されると,複数エントリからなるFP(Fetch Port)220に,その要求を一旦保持する。図16(A)では,メモリアクセスの命令として,ロード命令が発行された場合の例を示している。
一次キャッシュ制御部200は,FP220に保持された要求の仮想アドレスの一部をキャッシュインデックスとして用いて,一次キャッシュRAM210の該当ラインを参照する。また同時に,アドレス変換により,仮想アドレスに対応する物理アドレスを確定させる(図16(A)参照)。
一次キャッシュ制御部200は,一次キャッシュRAM210の参照ラインに登録されたデータの物理アドレスが仮想アドレスから変換された物理アドレスと一致しなければ,または一次キャッシュRAM210の参照ラインに登録されたデータが無効(Invalid)であれば,二次キャッシュ制御部300に対して仮想アドレスから変換された物理アドレスが示すデータの転送を要求する。ここでは,一次キャッシュRAM210において,way−0,way−1の参照ラインのデータが共に有効(Valid)であるが,どちらも仮想アドレスから変換された物理アドレス−Aと一致しないので,二次キャッシュ制御部300に対してデータ転送要求を発行する(図16(A)参照)。
このとき,一次キャッシュRAM210の参照ラインに登録されたデータがway−0,way−1共に有効(Valid)なデータである場合には,置換制御部290により,いずれかのwayを置換対象として選び,選ばれたwayの参照ラインに登録されたデータを,一次キャッシュRAM210から二次キャッシュ制御部300に吐き出すか,無効化(Invalid)する。以下では,図16(B)に示すように,way−0が置換対象として選ばれ,way−0の参照ラインに登録されたデータが無効化(Invalid)されたものとして説明する。
一次キャッシュ制御部200は,二次キャッシュ制御部300から転送されてきたデータとそのデータの物理アドレスとを,選ばれたwayに登録する。ここでは,転送されてきたデータと物理アドレス−Aとがway−0に登録される(図17(A)参照)。
一次キャッシュ制御部200は,FP220に保持されているメモリアクセスの命令を再実行する。ここでは,FP220に保持されているロード命令を再実行し,一次キャッシュRAM210の該当ラインを参照すると,この時点では物理アドレスが一致する有効なデータがway−0に存在するので,そのデータを命令制御部100に送り,FP220を開放し,処理を完了する(図17(B)参照)。
なお,キャッシュメモリの制御に関する先行技術が記載された文献として,例えば特許文献1などがある。特許文献1には,ロード命令とストア命令とがアウトオブオーダーで実行されるプロセッサにおいて,命令のスループットを増加させる技術が記載されている。
特開2000−259412号公報
従来,物理アドレスが異なるが,キャッシュインデックスが同一となる複数のメモリアクセスの命令を処理する際に,それぞれの命令がキャッシュ上のデータを参照する前に,置換処理によりその対象データを互いにキャッシュから追い出しあい,命令が完了しないケースがあるという問題がある。以下では,この問題点を具体例で説明する。
図18〜図24は,一次キャッシュ制御部における処理の問題点を説明する図である。一次キャッシュ制御部200の一次キャッシュRAM210が,way−0,way−1の2つのwayからなるセットアソシエイティブ(set associative )方式で構成される場合の例に従って,上記問題点を説明する。
図18に示すように,3つのメモリアクセス要求が,命令制御部100から一次キャッシュ制御部200に対して発行されたとする。ここでは,便宜上,3つのメモリアクセス要求を,load−A,load−B,load−Cと表記する。3つのメモリアクセス要求は,load−A,load−B,load−Cの順に発行され,それぞれが同一のキャッシュインデックスであるが,物理アドレスが異なるものとする。各要求load−A,load−B,load−Cは,一旦,一次キャッシュ制御部200のFP220のエントリ0,1,2に,それぞれ順に保持される(図18(A)参照)。なお,図において,メモリアクセス要求の左側に表記された数字がFP200の各エントリを示す番号である。
一次キャッシュ制御部200は,可能であればアウトオブオーダーで要求を処理する機能を持つ。これにより,例えば最も古い要求であるload−Aの処理より先に,load−Bの処理を行うために一次キャッシュRAM210にアクセスしたとする。このとき,load−Bの対象データが一次キャッシュRAM210に存在しなければ,二次キャッシュ制御部300に対してデータ転送を要求する(図18(A)参照)。
その後,二次キャッシュ制御部300からデータが転送され,一次キャッシュRAM210のway−0に登録される(図18(B)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−A,load−Cの処理はFP220で待機となる。
load−Bに対するデータ登録が完了した後,load−Aの処理やload−Bの再処理より先に,load−Cの処理を行うために一次キャッシュRAM210にアクセスしたとする。このとき,load−Cの対象データが一次キャッシュRAM210に存在しなければ,二次キャッシュ制御部300に対してデータ転送を要求する(図19(A)参照)。
その後,二次キャッシュ制御部300からデータが転送され,一次キャッシュRAM210のway−1に登録される(図19(B)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−A,load−Bの処理はFP220で待機となる。
load−Cに対するデータ登録が完了した後,load−B,load−Cの再処理より先に,load−Aの処理を行うために一次キャッシュRAM210にアクセスしたとする。このとき,load−Aの対象データが一次キャッシュRAM210に存在しないので,二次キャッシュ制御部300に対してデータ転送を要求する(図20(A)参照)。
同時に,way−0,way−1には共に有効なデータが存在するため,置換制御部290により,way−0を置換対象とし,way−0にあるload−Bの対象データを無効化(Invalid)する(図20(B)参照)。
その後,二次キャッシュ制御部300からデータが転送され,一次キャッシュRAM210のway−0に登録される(図21(A)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−B,load−Cの処理はFP220で待機となる。
load−Aに対するデータ登録が完了した後,load−A,load−Cの再処理より先に,load−Bの処理を行うために一次キャッシュRAM210にアクセスしたとする。このとき,以前にway−0に登録されていたload−Bの対象データはload−Aの対象データに置換されてしまっているため,再度二次キャッシュ制御部300に対してデータ転送を要求する(図21(B)参照)。
同時に,way−0,way−1には共に有効なデータが存在するため,置換制御部290により,way−1を置換対象とし,way−1にあるload−Cの対象データを無効化(Invalid)する(図22(A)参照)。
その後,二次キャッシュ制御部300からデータが転送され,一次キャッシュRAM210のway−1に登録される(図22(B)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−A,load−Cの処理はFP220で待機となる。
load−Bに対するデータ登録が完了した後,load−A,load−Bの再処理より先に,load−Cの処理を行うために一次キャッシュRAM210にアクセスしたとする。このとき,以前にway−1に登録されていたload−Cの対象データはload−Bの対象データに置換されてしまっているため,再度二次キャッシュ制御部300に対してデータ転送を要求する(図23(A)参照)。
同時に,way−0,way−1には共に有効なデータが存在するため,置換制御部290により,way−0を置換対象とし,way−0にあるload−Aの対象データを無効化(Invalid)する(図23(B)参照)。
その後,二次キャッシュ制御部300からデータが転送され,一次キャッシュRAM210のway−0に登録される(図24参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−A,load−Bの処理はFP220で待機となる。
以降,load−A,load−B,load−C,... という順で一連の処理が循環すると,命令の実行が完了しないことになる。
本発明は,上記の問題点の解決を図り,同一のキャッシュインデックスで物理アドレスが異なる複数のメモリアクセスの命令によって発生するキャッシュ上のデータの不要な置換を防ぐ技術を提供することを目的とする。
本発明は,上記課題を解決するため,データ転送要求を一度行ったことを示すフラグをFPの各エントリごとに用意し,また最も古い要求が保持されたエントリを示す情報を用意し,一度データ転送要求を行ったエントリに保持された要求の処理によるデータ転送の再要求はそのエントリがFPの全エントリの中で最も古くなるまでは行わないとすることで,処理を行う要求の対象データが置換され続けることを防ぐことを特徴とする。
具体的には,本発明は,キャッシュメモリと,前記キャッシュメモリに対するアクセス要求を保持する複数のエントリを有するフェッチポートと,前記フェッチポートのエントリのうち最も古いアクセス要求を保持するエントリを示す情報を保持するキューレジスタと,前記フェッチポートの各エントリに保持されたアクセス要求から,次に処理を行うアクセス要求を選択するエントリ選択回路と,前記エントリ選択回路が選択したアクセス要求に係るデータが前記キャッシュメモリに存在するか否かを判定するキャッシュミス判定回路と,前記アクセス要求に係るデータが前記キャッシュメモリに存在しない場合に,そのデータの前記キャッシュメモリへの転送を外部に要求するデータ転送要求制御回路と,前記フェッチポートの各エントリごとに,前記データ転送要求制御回路によりデータ転送要求済みであるか否かを記憶する要求済みフラグと,前記エントリ選択回路が選択したアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示し,かつそのエントリが前記キューレジスタが保持するエントリと異なる場合に,前記データ転送要求制御回路に前記アクセス要求に伴うデータ転送要求を抑止する信号を送信するデータ転送要求抑止判定回路とを備えることを特徴とする。
以上の構成により,メモリアクセスをアウトオブオーダーで処理するプロセッサのキャッシュ制御において,ある命令のアクセス対象のデータ域をキャッシュに登録した後,その命令がキャッシュアクセスするまでの間に,他データ域をアクセスする他命令のキャッシュアクセスにより,該当データ域が置換され,該当データ域の登録を再要求する,という処理が繰り返されることを防ぐことができる。
また,本発明は,さらに前記キャッシュミス判定回路が前記アクセス要求に係るデータが前記キャッシュメモリに存在しないと判定し,かつ前記データ転送要求抑止判定回路がそのアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであり,そのエントリが前記キューレジスタが保持するエントリと同じであると判定した場合に,前記データ転送要求制御回路によるデータ転送の再要求が発行された回数を,前記キャッシュメモリにおけるデータ格納位置を示すキャッシュインデックスごとに計測する回数計測回路を備えることを特徴とする。
以上の構成により,特定のキャッシュエントリを,複数の要求の対象となるデータで置換し合うことを回避した回数を計測し,これをプログラムのチューニングの参考情報として利用してプログラムを設計することが可能となる。
本発明によって,アウトオブオーダー処理をするプロセッサのキャッシュ制御において,キャッシュ上のデータの不要な置換を防ぐことにより,性能向上を図ることが可能となる。
1 CPU
9 システム制御バス
10 命令制御部(演算制御部)
20 一次キャッシュ制御部
21 一次キャッシュRAM
22 FP
23 FP−TOQ
24 エントリ選択回路
25 データ転送要求抑止判定回路
26 キャッシュミス判定回路
27 データ転送要求制御回路
28 回数計測回路
29 置換制御部
30 二次キャッシュ制御部
31 二次キャッシュRAM
9 システム制御バス
10 命令制御部(演算制御部)
20 一次キャッシュ制御部
21 一次キャッシュRAM
22 FP
23 FP−TOQ
24 エントリ選択回路
25 データ転送要求抑止判定回路
26 キャッシュミス判定回路
27 データ転送要求制御回路
28 回数計測回路
29 置換制御部
30 二次キャッシュ制御部
31 二次キャッシュRAM
以下,本実施の形態について,図を用いて説明する。
図1は,本実施の形態によるプロセッサの構成例を示す図である。CPU1は,命令制御部(演算制御部)10,一次キャッシュ制御部20,二次キャッシュ制御部30を備え,システム制御バス9で外部の記憶装置等に接続される。一次キャッシュ制御部20は,容量は少ないがアクセスが速い一次キャッシュRAM21を備える。二次キャッシュ制御部30は,一次キャッシュRAM21と比較して容量は大きいがアクセスが遅い二次キャッシュRAM31を備える。
命令制御部(演算制御部)10がロード命令,ストア命令等の要求を一次キャッシュ制御部20に発行すると,一次キャッシュ制御部20は,一次キャッシュRAM21に命令制御部(演算制御部)10からの要求の対象となるデータが存在するかを確認し,存在すればそのデータを命令制御部(演算制御部)10に返す。命令制御部(演算制御部)10からの要求の対象となるデータが存在しなければ,二次キャッシュ制御部30に該当データの転送を要求する。
二次キャッシュ制御部30は,一次キャッシュ制御部20からデータ転送の要求を受けると,二次キャッシュRAM31に一次キャッシュ制御部20から要求されたデータが存在するかを確認し,存在すればそのデータを一次キャッシュ制御部20に返す。一次キャッシュ制御部から要求されたデータが存在しなければ,システム制御バス9を介して外部の記憶装置に該当データの転送を要求する。
図2は,本実施の形態による一次キャッシュ制御部の構成例を示す図である。一次キャッシュ制御部20は,一次キャッシュRAM21,FP(Fetch Port)22,FP−TOQ(Fetch Port Top Of Queue )23,エントリ選択回路24,データ転送要求抑止判定回路25,キャッシュミス判定回路26,データ転送要求制御回路27を備える。
FP22は,命令制御部(演算制御部)10から受けた要求を保持する複数のエントリを有する。FP22の各エントリには,そのエントリに保持された要求の対象となるデータの二次キャッシュ制御部30への転送要求が発生したか否かを示す要求済みフラグが設けられている。FP−TOQ23は,FP22のエントリのうち,一番古い要求を保持するエントリが記録されるレジスタである。
エントリ選択回路24は,FP22の各エントリに保持された要求から,次に処理を行う要求を選択する。
データ転送要求抑止判定回路25は,処理を行う要求の要求済みフラグと,FP−TOQ23とをチェックし,処理を行う要求の対象となるデータの転送要求がすでに発行され,かつ処理を行う要求が保持されたエントリがFP−TOQ23で示されたエントリでなければ,該当データの転送要求を抑止する信号をデータ転送要求制御回路27に送る。このデータ転送要求抑止判定回路25は,例えば排他的論理和回路などによる比較回路,NAND回路などの論理回路によって構成することができる。
キャッシュミス判定回路26は,処理を行う要求の対象となるデータが一次キャッシュRAM21に存在するか否かを判定する。存在しない場合にはキャッシュミスとなり,その旨をデータ転送要求制御回路27に通知する。
データ転送要求制御回路27は,キャッシュミスが発生時に,二次キャッシュ制御部30に対して該当データの転送要求を送る。ただし,データ転送要求抑止判定回路25から転送要求を抑止する信号を受けた場合には,キャッシュミスが発生してもデータ転送要求を発行しない。
図3は,FPのエントリが保持する情報の構成要素の例を示す図である。図3の例は,FP22のエントリが保持する情報のうち,特に本発明に関連する部分の構成について抜粋したものである。FP22の各エントリは,ロード命令,ストア命令などの命令の種別を示す命令コード(opcode),その命令の対象となるデータのアドレス(address),上述の要求済みフラグ(req−taken)の情報を保持する。
図4は,本実施の形態によるデータ転送要求の処理フローチャートである。図4のフローチャートにおいて,FP−n(n=0,1,2,... )は,FP22の各エントリを示し,n(n=0,1,2,... )は,便宜上エントリに割り当てられた番号を示す。また,要求済みフラグ(req−taken)は,1が要求済みであることを示し,0が未要求であることを示すものとする。
FP−nのエントリに保持された要求が処理を行う要求として選択されると(ステップS10),その要求に示されたアドレスで一次キャッシュRAM21にアクセスする(ステップS11)。このとき,キャッシュミスが発生しなければ(ステップS12),二次キャッシュ制御部30へのデータ転送要求は発行しない。
キャッシュミスが発生したときに(ステップS12),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号であれば(ステップS13),二次キャッシュ制御部30に該当データの転送要求を発行する(ステップS15)。
キャッシュミスが発生したときに(ステップS12),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号でなくても(ステップS13),そのエントリの要求済みフラグ(req−taken)が0(すなわち未要求)であれば(ステップS14),二次キャッシュ制御部30に該当データの転送要求を発行する(ステップS15)。
キャッシュミスが発生しても(ステップS12),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号でなく(ステップS13),かつそのエントリの要求済みフラグ(req−taken)が1(すなわち要求済み)であれば(ステップS14),二次キャッシュ制御部30にデータ転送要求を発行しない。
図5〜図12は,本実施の形態による一次キャッシュ制御部の処理例を説明する図である。ここでは,図5〜図12を用いて,本実施の形態による一次キャッシュ制御部20による処理のより具体的な例を説明する。図5〜図12に示す例において,一次キャッシュ制御部20の一次キャッシュRAM21は,way−0,way−1の2つのwayからなるセットアソシエイティブ(set associative )方式で構成される。
図5(A)に示すように,3つのメモリアクセス要求が,命令制御部(演算制御部)10から一次キャッシュ制御部20に対して発行されたとする。ここでは,便宜上,3つのメモリアクセス要求を,load−A,load−B,load−Cと表記する。3つのメモリアクセス要求は,load−A,load−B,load−Cの順に発行され,それぞれが同一のキャッシュインデックスであるが,物理アドレスが異なるものとする。各要求load−A,load−B,load−Cは,一旦,一次キャッシュ制御部20のFP22のエントリ0,1,2に,それぞれ順に保持される(図5(A)参照)。
なお,図において,メモリアクセス要求の左側に表記された数字がFP22の各エントリを示す番号である。以下では,FP22の各エントリを,FP−n(n=0,1,2,... )と表記する。
ここで,一番古い要求が保持されたエントリは,load−Aが保持されたFP−0であるので,FT−TOQ23は,0を示している。
一次キャッシュ制御部20は,可能であればアウトオブオーダーで要求を処理する機能を持つ。これにより,例えば最も古い要求であるload−Aの処理より先に,load−Bの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,load−Bの対象データが一次キャッシュRAM21に存在しなければ,二次キャッシュ制御部30に対してデータ転送を要求する(図5(A)参照)。このとき,load−Bが保持されているエントリFP−1の要求済みフラグ(req−taken)を1にセットする。
その後,二次キャッシュ制御部30からデータが転送され,一次キャッシュRAM21のway−0に登録される(図5(B)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−A,load−Cの処理はFP22で待機となる。
load−Bに対するデータ登録が完了した後,load−Aの処理やload−Bの再処理より先に,load−Cの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,load−Cの対象データが一次キャッシュRAM21に存在しなければ,二次キャッシュ制御部30に対してデータ転送を要求する(図6(A)参照)。このとき,load−Cが保持されているエントリFP−2の要求済みフラグ(req−taken)を1にセットする。
その後,二次キャッシュ制御部30からデータが転送され,一次キャッシュRAM21のway−1に登録される(図6(B)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−A,load−Bの処理はFP22で待機となる。
load−Cに対するデータ登録が完了した後,load−B,load−Cの再処理より先に,load−Aの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,load−Aの対象データが一次キャッシュRAM21に存在しないので,二次キャッシュ制御部30に対してデータ転送を要求する(図7(A)参照)。このとき,load−Aが保持されているエントリFP−0の要求済みフラグ(req−taken)を1にセットする。
同時に,way−0,way−1には共に有効なデータが存在するため,置換制御部29により,way−0を置換対象とし,way−0にあるload−Bの対象データを無効化(Invalid)する(図7(B)参照)。
その後,二次キャッシュ制御部30からデータが転送され,一次キャッシュRAM21のway−0に登録される(図8(A)参照)。データ転送要求からデータが登録されるまでの間は,同一キャッシュインデックスの処理が一時期に一つずつしか実行できないため,load−B,load−Cの処理はFP22で待機となる。
load−Aに対するデータ登録が完了した後,load−A,load−Cの再処理より先に,load−Bの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,以前にway−0に登録されていたload−Bの対象データはload−Aの対象データに置換されてしまっているため,load−Bの対象データは一次キャッシュRAM21に存在しない。しかし,load−Bが保持されているエントリFP−1の要求済みフラグ(req−taken)が1であり,かつエントリFP−1はFP−TOQで示されたエントリではないため,データ転送要求を行わない(図8(B)参照)。
続けて,load−Aの再処理より先に,load−Cの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,load−Cの対象データは一次キャッシュRAM21のway−1に存在するため,該当データを命令制御部(演算制御部)10に送り,エントリFP−2の処理を完了する(図9(A)参照)。
続けて,load−Aの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,load−Aの対象データは一次キャッシュRAM21のway−0に存在するため,該当データを命令制御部(演算制御部)10に送り,エントリFP−0の処理を完了する(図9(B)参照)。このとき,FP−TOQ23が示すエントリをエントリFP−1に更新する。
続けて,load−Bの処理を行うために一次キャッシュRAM21にアクセスしたとする。このとき,以前にway−0に登録されていたload−Bの対象データはload−Aの対象データに置換されてしまっているため,load−Bの対象データは一次キャッシュRAM21に存在しない。load−Bが保持されているエントリFP−1の要求済みフラグ(req−taken)が1であるが,エントリFP−1はFP−TOQで示されたエントリであるため,要求済みフラグ(req−taken)を無視して二次キャッシュ制御部30に対してデータ転送を要求する(図10(A)参照)。
同時に,way−0,way−1には共に有効なデータが存在するため,置換制御部29により,way−1を置換対象とし,way−1にあるload−Cの対象データを無効化(Invalid)する(図10(B)参照)。
その後,二次キャッシュ制御部30からデータが転送され,一次キャッシュRAM21のway−1に登録される(図11(A)参照)。
load−Bの再処理を行うために一次キャッシュRAM21にアクセスする。このとき,load−Bの対象データは一次キャッシュRAM21のway−1に存在するため,該当データを命令制御部(演算制御部)10に送り,エントリFP−1の処理を完了する(図11(B)参照)。
このように,FP22の中でFP−TOQ23に示された一番古いエントリに保持された要求処理になるまで,同じ要求の対象データの転送要求を2回以上しないとすることで,参照するデータがキャッシュ上で置換され続けて命令が完了しないという状態を回避できる(図12参照)。
次に,ある同一キャッシュインデックスで複数の要求の対象となる異なるデータが示される場合に,複数の要求の対象となるデータで置換し合うことを回避した回数を計測する機構を設けた実施の形態を説明する。この機構は,性能評価やプログラムのチューニングなどに利用するためのものである。
図13は,本実施の形態による一次キャッシュ制御部の構成例を示す図である。一次キャッシュ制御部20は,一次キャッシュRAM21,FP(Fetch Port)22,FP−TOQ(Fetch Port Top Of Queue )23,エントリ選択回路24,データ転送要求抑止判定回路25,キャッシュミス判定回路26,データ転送要求制御回路27,回数計測回路28を備える。
一次キャッシュRAM21,FP(Fetch Port)22,FP−TOQ(Fetch Port Top Of Queue )23,エントリ選択回路24,データ転送要求抑止判定回路25,キャッシュミス判定回路26,データ転送要求制御回路27については,図2で説明したものと同様であるため,説明を省略する。
回数計測回路28は,キャッシュミスの発生時に,処理を行う要求の対象となるデータの転送要求がすでに発行されていても,処理を行う要求が保持されたエントリがFP−TOQ23で示されたエントリであるために,データ転送の再要求が発行された回数をキャッシュインデックスごとに計測する。
なお,この回数計測回路28が保持する回数情報は,外部からのアクセス回路(図示省略)によって読み出すことができ,またリセットによる初期化もできるように構成されている。
図14は,本実施の形態によるデータ転送要求の処理フローチャートである。図14のフローチャートでは,二次キャッシュ制御部30に転送要求が発行されたときに,処理を行っている要求が保持されたエントリの要求済みフラグ(req−taken)が1(すなわち要求済み)であれば,処理を行っている要求が過去に一回データ転送要求が発行された要求であっても,FP−TOQ23に示されたエントリに保持された要求であるためにデータ転送の再要求が行われたことを示すため,該当キャッシュインデックスのカウンタを加算する。
図14のフローチャートにおいて,FP−n(n=0,1,2,... )は,FP22の各エントリを示し,n(n=0,1,2,... )は,便宜上エントリに割り当てられた番号を示す。また,要求済みフラグ(req−taken)は,1が要求済みであることを示し,0が未要求であることを示すものとする。
FP−nのエントリに保持された要求が処理を行う要求として選択されると(ステップS20),その要求に示されたアドレスで一次キャッシュRAM21にアクセスする(ステップS21)。このとき,キャッシュミスが発生しなければ(ステップS22),二次キャッシュ制御部30へのデータ転送要求は発行しない。
キャッシュミスが発生したときに(ステップS22),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号であれば(ステップS23),二次キャッシュ制御部30に該当データの転送要求を発行する(ステップS25)。
キャッシュミスが発生したときに(ステップS22),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号でなくても(ステップS23),そのエントリの要求済みフラグ(req−taken)が0(すなわち未要求)であれば(ステップS24),二次キャッシュ制御部30に該当データの転送要求を発行する(ステップS25)。
キャッシュミスが発生しても(ステップS22),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号でなく(ステップS23),かつそのエントリの要求済みフラグ(req−taken)が1(すなわち要求済み)であれば(ステップS24),二次キャッシュ制御部30にデータ転送要求を発行しない。
二次キャッシュ制御部30に該当データの転送要求が発行されたときに(ステップS25),エントリFP−nの要求済みフラグ(req−taken)が1(すなわち要求済み)であれば(ステップS26),該当キャッシュインデックスのカウンタを1加算する(ステップS27)。エントリFP−nの要求済みフラグ(req−taken)が0(すなわち未要求)であれば(ステップS26),そのエントリに保持された要求についての初めてのデータ転送要求であるため,該当キャッシュインデックスのカウンタを操作しない。
図15は,本実施の形態によるデータ転送要求の処理フローチャートである。図15のフローチャートに示す処理では,ロード命令用のカウンタとストア命令用のカウンタとを別に用意し,処理を行っている要求がロード命令かストア命令かによって操作するカウンタを変更することで,置換原因となった命令種別を把握することが可能となる。
図15のフローチャートにおいて,FP−n(n=0,1,2,... )は,FP22の各エントリを示し,n(n=0,1,2,... )は,便宜上エントリに割り当てられた番号をしめす。また,要求済みフラグ(req−taken)は,1が要求済みであることを示し,0が未要求であることを示すものとする。
FP−nのエントリに保持された要求が処理を行う要求として選択されると(ステップS30),その要求に示されたアドレスで一次キャッシュRAM21にアクセスする(ステップS31)。このとき,キャッシュミスが発生しなければ(ステップS32),二次キャッシュ制御部30へのデータ転送要求は発行しない。
キャッシュミスが発生したときに(ステップS32),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号であれば(ステップS33),二次キャッシュ制御部30に該当データの転送要求を発行する(ステップS35)。
キャッシュミスが発生したときに(ステップS32),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号でなくても(ステップS33),そのエントリの要求済みフラグ(req−taken)が0(すなわち未要求)であれば(ステップS34),二次キャッシュ制御部30に該当データの転送要求を発行する(ステップS35)。
キャッシュミスが発生しても(ステップS32),FP−TOQ23で示されたエントリの番号が処理を行う要求が保持されたエントリの番号でなく(ステップS33),かつそのエントリの要求済みフラグ(req−taken)が1(すなわち要求済み)であれば(ステップS34),二次キャッシュ制御部30にデータ転送要求を発行しない。
二次キャッシュ制御部30に該当データの転送要求が発行されたときに(ステップS35),エントリFP−nの要求済みフラグ(req−taken)が1(すなわち要求済み)であり(ステップS36),処理を行っている要求がロード命令であれば(ステップS37),該当キャッシュインデックスのロード命令用カウンタを1加算する(ステップS38)。
二次キャッシュ制御部30に該当データの転送要求が発行されたときに(ステップS35),エントリFP−nの要求済みフラグ(req−taken)が1(すなわち要求済み)であり(ステップS36),処理を行っている要求がロード命令でなければ(ステップS37),すなわちストア命令であれば,該当キャッシュインデックスのストア命令用カウンタを1加算する(ステップS39)。
二次キャッシュ制御部30に該当データの転送要求が発行されたときに(ステップS35),エントリFP−nの要求済みフラグ(req−taken)が0(すなわち未要求)であれば(ステップS36),そのエントリに保持された要求についての初めてのデータ転送要求であるため,該当キャッシュインデックスのカウンタを操作しない。
このように,ある同一キャッシュインデックスで複数の要求の対象となる異なるデータが示される場合に,複数の要求の対象となるデータで置換し合うことを回避した回数を計測し,これをプログラムのチューニングの参考情報として利用してプログラム設計を行うことができる。キャッシュインデックスをずらしたプログラムを設計することで,プログラムの性能向上を図ることが可能となる。
以上,本実施の形態について説明したが,本発明はこれに限るものではない。例えば,本実施の形態では一次キャッシュ制御部20から二次キャッシュ制御部30へのデータ転送要求の制御についての例を説明したが,二次キャッシュを持たないプロセッサまたはシステムでも同様に本発明を実施することができ,キャッシュ制御部から他の記憶手段へのデータ転送要求の制御であれば,本実施の形態の適用が可能である。
本発明は,情報処理装置に用いられる技術に関するものであり,特にキャッシュを有する電算機において利用される技術である。
Claims (6)
- キャッシュメモリと,
前記キャッシュメモリに対するアクセス要求を保持する複数のエントリを有するとともに,前記キャッシュメモリに対し前記アクセス要求に基づきデータ転送要求済みであるか否かを記憶する要求済みフラグを前記エントリごとに保持するフェッチポートと,
前記フェッチポートのエントリのうち最も古いアクセス要求を保持するエントリを示す情報を保持するキューレジスタと,
前記フェッチポートの各エントリに保持されたアクセス要求から,次に処理を行うアクセス要求を選択するエントリ選択回路と,
前記エントリ選択回路が選択したアクセス要求に係るデータが前記キャッシュメモリに存在するか否かを判定するキャッシュミス判定回路と,
前記アクセス要求に係るデータが前記キャッシュメモリに存在しない場合に,そのデータの前記キャッシュメモリへの転送を外部に要求するデータ転送要求制御回路と,
前記エントリ選択回路が選択したアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグが前記データ転送要求制御回路によりデータ転送要求済みであることを示し,かつそのエントリと前記キューレジスタが保持する情報が示すエントリが異なる場合に,前記データ転送要求制御回路による前記アクセス要求に伴うデータ転送要求を抑止するデータ転送要求抑止判定回路とを備える
ことを特徴とするキャッシュメモリ制御装置。 - 前記キャッシュミス判定回路が前記アクセス要求に係るデータが前記キャッシュメモリに存在しないと判定し,かつ前記データ転送要求抑止判定回路がそのアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示し,そのエントリと前記キューレジスタが保持する情報が示すエントリが同じであると判定した場合に,前記データ転送要求制御回路によるデータ転送の再要求が発行された回数を,前記キャッシュメモリにおけるデータ格納位置を示すキャッシュインデックスごとに計測する回数計測回路を備える
ことを特徴とする請求項1記載のキャッシュメモリ制御装置。 - 前記回数計測回路は,前記アクセス要求がロード命令である場合とストア命令である場合とを区別して,前記データ転送の再要求が発行された回数を計測する
ことを特徴とする請求項2記載のキャッシュメモリ制御装置。 - キャッシュメモリに対するアクセス要求を保持する複数のエントリを有するとともに,前記キャッシュメモリに対し前記アクセス要求に基づきデータ転送要求済みであるか否かを記憶する要求済みフラグを前記エントリごとに保持するフェッチポートと,前記フェッチポートのエントリのうち最も古いアクセス要求を保持するエントリを示す情報を保持するキューレジスタを備え,アクセス要求に係るデータの転送を制御するキャッシュメモリ制御装置の制御方法であって,
前記キャッシュメモリ制御装置が備えるデータ転送要求制御回路が,前記フェッチポートのエントリごとに設けられた,前記キャッシュメモリへのデータの転送を外部に要求したか否かを示す要求済みフラグを,外部へのデータ転送の要求時に設定するステップと,
前記キャッシュメモリ制御装置が備えるデータ転送要求抑止判定回路が,処理対象となったアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示し,かつそのエントリと前記キューレジスタが保持する情報が示すエントリが異なる場合に,そのアクセス要求に対してキャッシュミスが発生しても,そのアクセス要求に伴うデータ転送要求を抑止し,一度データ転送要求を行ったエントリに保持されたアクセス要求の処理によるデータ転送の再要求は,そのエントリがフェッチポートの全エントリの中で最も古くなるまでは行わないように制御するステップとを有する
ことを特徴とするキャッシュメモリ制御方法。 - キャッシュミスの発生時に,アクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示していても,そのエントリが最も古いアクセス要求を保持するエントリであるために,データ転送の再要求が発行された場合に,前記キャッシュメモリ制御装置が備える回数計測回路が,その再要求の発行回数を前記キャッシュメモリにおけるデータ格納位置を示すキャッシュインデックスごとに計測するステップをさらに有する
ことを特徴とする請求項4記載のキャッシュメモリ制御方法。 - 前記回数計測回路が,前記再要求の発行回数を,前記アクセス要求がロード命令である場合とストア命令である場合とを区別して計測する
ことを特徴とする請求項5記載のキャッシュメモリ制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2007/062400 WO2008155833A1 (ja) | 2007-06-20 | 2007-06-20 | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2008155833A1 JPWO2008155833A1 (ja) | 2010-08-26 |
JP4710024B2 true JP4710024B2 (ja) | 2011-06-29 |
Family
ID=40155999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009520187A Expired - Fee Related JP4710024B2 (ja) | 2007-06-20 | 2007-06-20 | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8677070B2 (ja) |
EP (1) | EP2169554B1 (ja) |
JP (1) | JP4710024B2 (ja) |
WO (1) | WO2008155833A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5471428B2 (ja) * | 2009-12-25 | 2014-04-16 | 富士通株式会社 | 情報処理装置およびキャッシュメモリ制御装置 |
AU2017431392B2 (en) * | 2017-09-13 | 2021-01-21 | Google, Llc | Quantum error correction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07311711A (ja) * | 1994-01-31 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | データ処理装置とその動作方法及びメモリ・キャッシュ動作方法 |
WO2004068361A1 (ja) * | 2003-01-27 | 2004-08-12 | Fujitsu Limited | 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 |
JP2006048181A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784586A (en) * | 1995-02-14 | 1998-07-21 | Fujitsu Limited | Addressing method for executing load instructions out of order with respect to store instructions |
US6349382B1 (en) * | 1999-03-05 | 2002-02-19 | International Business Machines Corporation | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order |
US6499090B1 (en) * | 1999-12-28 | 2002-12-24 | Intel Corporation | Prioritized bus request scheduling mechanism for processing devices |
US6484254B1 (en) * | 1999-12-30 | 2002-11-19 | Intel Corporation | Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US6732242B2 (en) * | 2002-03-28 | 2004-05-04 | Intel Corporation | External bus transaction scheduling system |
US20050210204A1 (en) * | 2003-01-27 | 2005-09-22 | Fujitsu Limited | Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method |
EP1834231A1 (en) * | 2004-12-10 | 2007-09-19 | Koninklijke Philips Electronics N.V. | Data processing system and method for cache replacement |
-
2007
- 2007-06-20 JP JP2009520187A patent/JP4710024B2/ja not_active Expired - Fee Related
- 2007-06-20 EP EP07767239.2A patent/EP2169554B1/en not_active Not-in-force
- 2007-06-20 WO PCT/JP2007/062400 patent/WO2008155833A1/ja active Application Filing
-
2009
- 2009-12-16 US US12/654,312 patent/US8677070B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07311711A (ja) * | 1994-01-31 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | データ処理装置とその動作方法及びメモリ・キャッシュ動作方法 |
WO2004068361A1 (ja) * | 2003-01-27 | 2004-08-12 | Fujitsu Limited | 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法 |
JP2006048181A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
EP2169554A1 (en) | 2010-03-31 |
WO2008155833A1 (ja) | 2008-12-24 |
EP2169554B1 (en) | 2013-07-10 |
US8677070B2 (en) | 2014-03-18 |
EP2169554A4 (en) | 2011-08-31 |
JPWO2008155833A1 (ja) | 2010-08-26 |
US20100106913A1 (en) | 2010-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
US7246204B2 (en) | Pre-fetch control device, data processing apparatus and pre-fetch control method | |
US7930485B2 (en) | Speculative memory prefetch | |
US8667225B2 (en) | Store aware prefetching for a datastream | |
JP4829191B2 (ja) | キャッシュシステム | |
US20090106499A1 (en) | Processor with prefetch function | |
JP4574712B2 (ja) | 演算処理装置、情報処理装置及び制御方法 | |
US8296518B2 (en) | Arithmetic processing apparatus and method | |
US20090106498A1 (en) | Coherent dram prefetcher | |
US20110314227A1 (en) | Horizontal Cache Persistence In A Multi-Compute Node, Symmetric Multiprocessing Computer | |
US8707014B2 (en) | Arithmetic processing unit and control method for cache hit check instruction execution | |
JP6687845B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP4710024B2 (ja) | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 | |
WO2023173991A1 (en) | Cache line compression prediction and adaptive compression | |
US10635591B1 (en) | Systems and methods for selectively filtering, buffering, and processing cache coherency probes | |
US8255632B2 (en) | Pre-fetch control apparatus | |
US20230297382A1 (en) | Cache line compression prediction and adaptive compression | |
CN118140214A (zh) | 用于重新引用间隔预测高速缓存替换策略的重新引用指示符 | |
US20140068192A1 (en) | Processor and control method of processor | |
JP6451475B2 (ja) | 演算処理装置、情報処理装置および演算処理装置の制御方法 | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
EP0394642A2 (en) | Data prefetching in caches | |
CN115935343A (zh) | 基于mshr的超标量risc-v处理器硬件防御幽灵攻击的方法 | |
JP5724981B2 (ja) | メモリアクセス制御装置、メモリアクセス制御システム、及び、メモリアクセス制御方法 | |
JP2024535300A (ja) | スペアディレクトリエントリに特定のデータパターンのインジケーションを記憶する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101130 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110127 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110224 |
|
LAPS | Cancellation because of no payment of annual fees |