JP4710024B2 - キャッシュメモリ制御装置およびキャッシュメモリ制御方法 - Google Patents

キャッシュメモリ制御装置およびキャッシュメモリ制御方法 Download PDF

Info

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
Application number
JP2009520187A
Other languages
English (en)
Other versions
JPWO2008155833A1 (ja
Inventor
直宏 清田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008155833A1 publication Critical patent/JPWO2008155833A1/ja
Application granted granted Critical
Publication of JP4710024B2 publication Critical patent/JP4710024B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address 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の全エントリの中で最も古くなるまでは行わないとすることで,処理を行う要求の対象データが置換され続けることを防ぐことを特徴とする。
具体的には,本発明は,キャッシュメモリと,前記キャッシュメモリに対するアクセス要求を保持する複数のエントリを有するフェッチポートと,前記フェッチポートのエントリのうち最も古いアクセス要求を保持するエントリを示す情報を保持するキューレジスタと,前記フェッチポートの各エントリに保持されたアクセス要求から,次に処理を行うアクセス要求を選択するエントリ選択回路と,前記エントリ選択回路が選択したアクセス要求に係るデータが前記キャッシュメモリに存在するか否かを判定するキャッシュミス判定回路と,前記アクセス要求に係るデータが前記キャッシュメモリに存在しない場合に,そのデータの前記キャッシュメモリへの転送を外部に要求するデータ転送要求制御回路と,前記フェッチポートの各エントリごとに,前記データ転送要求制御回路によりデータ転送要求済みであるか否かを記憶する要求済みフラグと,前記エントリ選択回路が選択したアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示し,かつそのエントリが前記キューレジスタが保持するエントリと異なる場合に,前記データ転送要求制御回路に前記アクセス要求に伴うデータ転送要求を抑止する信号を送信するデータ転送要求抑止判定回路とを備えることを特徴とする。
以上の構成により,メモリアクセスをアウトオブオーダーで処理するプロセッサのキャッシュ制御において,ある命令のアクセス対象のデータ域をキャッシュに登録した後,その命令がキャッシュアクセスするまでの間に,他データ域をアクセスする他命令のキャッシュアクセスにより,該当データ域が置換され,該当データ域の登録を再要求する,という処理が繰り返されることを防ぐことができる。
また,本発明は,さらに前記キャッシュミス判定回路が前記アクセス要求に係るデータが前記キャッシュメモリに存在しないと判定し,かつ前記データ転送要求抑止判定回路がそのアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであり,そのエントリが前記キューレジスタが保持するエントリと同じであると判定した場合に,前記データ転送要求制御回路によるデータ転送の再要求が発行された回数を,前記キャッシュメモリにおけるデータ格納位置を示すキャッシュインデックスごとに計測する回数計測回路を備えることを特徴とする。
以上の構成により,特定のキャッシュエントリを,複数の要求の対象となるデータで置換し合うことを回避した回数を計測し,これをプログラムのチューニングの参考情報として利用してプログラムを設計することが可能となる。
本発明によって,アウトオブオーダー処理をするプロセッサのキャッシュ制御において,キャッシュ上のデータの不要な置換を防ぐことにより,性能向上を図ることが可能となる。
本実施の形態によるプロセッサの構成例を示す図である。 本実施の形態による一次キャッシュ制御部の構成例を示す図である。 FPのエントリが保持する情報の構成要素の例を示す図である。 本実施の形態によるデータ転送要求の処理フローチャートである。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の処理例を説明する図である。 本実施の形態による一次キャッシュ制御部の構成例を示す図である。 本実施の形態によるデータ転送要求の処理フローチャートである。 本実施の形態によるデータ転送要求の処理フローチャートである。 一次キャッシュ制御部におけるデータの参照,登録,置換の例を説明する図である。 一次キャッシュ制御部におけるデータの参照,登録,置換の例を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。 一次キャッシュ制御部における処理の問題点を説明する図である。
符号の説明
1 CPU
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. 前記キャッシュミス判定回路が前記アクセス要求に係るデータが前記キャッシュメモリに存在しないと判定し,かつ前記データ転送要求抑止判定回路がそのアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示し,そのエントリ前記キューレジスタが保持する情報が示すエントリ同じであると判定した場合に,前記データ転送要求制御回路によるデータ転送の再要求が発行された回数を,前記キャッシュメモリにおけるデータ格納位置を示すキャッシュインデックスごとに計測する回数計測回路を備える
    ことを特徴とする請求項1記載のキャッシュメモリ制御装置。
  3. 前記回数計測回路は,前記アクセス要求がロード命令である場合とストア命令である場合とを区別して,前記データ転送の再要求が発行された回数を計測する
    ことを特徴とする請求項2記載のキャッシュメモリ制御装置。
  4. キャッシュメモリに対するアクセス要求を保持する複数のエントリを有するとともに,前記キャッシュメモリに対し前記アクセス要求に基づきデータ転送要求済みであるか否かを記憶する要求済みフラグを前記エントリごとに保持するフェッチポートと,前記フェッチポートのエントリのうち最も古いアクセス要求を保持するエントリを示す情報を保持するキューレジスタを備え,アクセス要求に係るデータの転送を制御するキャッシュメモリ制御装置の制御方法であって,
    前記キャッシュメモリ制御装置が備えるデータ転送要求制御回路が,前記フェッチポートのエントリごとに設けられた,前記キャッシュメモリへのデータの転送を外部に要求したか否かを示す要求済みフラグを,外部へのデータ転送の要求時に設定するステップと,
    前記キャッシュメモリ制御装置が備えるデータ転送要求抑止判定回路が,処理対象となったアクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示し,かつそのエントリと前記キューレジスタが保持する情報が示すエントリが異なる場合に,そのアクセス要求に対してキャッシュミスが発生しても,そのアクセス要求に伴うデータ転送要求を抑止し,一度データ転送要求を行ったエントリに保持されたアクセス要求の処理によるデータ転送の再要求は,そのエントリがフェッチポートの全エントリの中で最も古くなるまでは行わないように制御するステップとを有する
    ことを特徴とするキャッシュメモリ制御方法。
  5. キャッシュミスの発生時に,アクセス要求を保持するフェッチポートのエントリの前記要求済みフラグがデータ転送要求済みであることを示していても,そのエントリが最も古いアクセス要求を保持するエントリであるために,データ転送の再要求が発行された場合に,前記キャッシュメモリ制御装置が備える回数計測回路が,その再要求の発行回数を前記キャッシュメモリにおけるデータ格納位置を示すキャッシュインデックスごとに計測するステップをさらに有する
    ことを特徴とする請求項4記載のキャッシュメモリ制御方法。
  6. 前記回数計測回路が,前記再要求の発行回数を,前記アクセス要求がロード命令である場合とストア命令である場合とを区別して計測する
    ことを特徴とする請求項5記載のキャッシュメモリ制御方法。
JP2009520187A 2007-06-20 2007-06-20 キャッシュメモリ制御装置およびキャッシュメモリ制御方法 Expired - Fee Related JP4710024B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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