JP2024066576A - キャッシュメモリ - Google Patents
キャッシュメモリ Download PDFInfo
- Publication number
- JP2024066576A JP2024066576A JP2022176006A JP2022176006A JP2024066576A JP 2024066576 A JP2024066576 A JP 2024066576A JP 2022176006 A JP2022176006 A JP 2022176006A JP 2022176006 A JP2022176006 A JP 2022176006A JP 2024066576 A JP2024066576 A JP 2024066576A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- address
- bit position
- unit
- memory access
- 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
- 230000008859 change Effects 0.000 claims description 42
- 239000000284 extract Substances 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 7
- 238000012986 modification Methods 0.000 description 29
- 230000004048 modification Effects 0.000 description 29
- 102100029768 Histone-lysine N-methyltransferase SETD1A Human genes 0.000 description 12
- 101000865038 Homo sapiens Histone-lysine N-methyltransferase SETD1A Proteins 0.000 description 12
- 238000000034 method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】メモリアクセスアドレスの偏りによるキャッシュヒット率の低下を抑制する。【解決手段】キャッシュメモリは、メモリアクセスアドレス中のセットアドレスにより識別される複数のエントリを含むキャッシュブロックと、メモリアクセス要求のキャッシュヒットまたはキャッシュミスを判定するキャッシュ制御部と、キャッシュミスの発生回数をエントリ毎に保持するミス回数保持部と、エントリ毎のキャッシュミスの発生回数のいずれかが閾値を超えた場合、セットアドレスのメモリアクセスアドレス内でのビット位置の割り当てを変更するセットビット位置変更部と、を有する。これにより、特定のエントリへの参照が集中する場合に、参照するエントリを分散して、キャッシュヒット率の低下を抑制することができる。この結果、キャッシュメモリを搭載するプロセッサまたはシステムの処理性能を向上することができる。【選択図】図1
Description
本発明は、キャッシュメモリに関する。
CPU(Central Processing Unit)等のプロセッサに搭載されるキャッシュメモリ、または、プロセッサとメインメモリとの間に配置されるキャッシュメモリは、メインメモリに記憶されたデータの一部を保持する。そして、キャッシュメモリは、プロセッサから発行されたメモリアクセス要求の対象データを保持している場合(キャッシュヒット)、メインメモリにアクセス要求を発行することなく、キャッシュメモリに保持しているデータをプロセッサに出力する。これにより、データのアクセス効率が向上し、プロセッサの処理性能が向上する。
例えば、キャッシュメモリは、データを保持するデータ領域と、アクセス対象のデータがデータ領域に保持されているか否かを判定する情報を保持するタグ領域とを有する複数のエントリを有する。複数のエントリは、メモリアクセス要求に含まれるメモリアクセスアドレスの一部のビットであるセットアドレスを使用して識別される。メモリアクセスアドレスの残りのビットは、タグアドレスとしてタグ領域に格納される。そして、メモリアクセスアドレスに含まれるセットアドレスに対応するエントリに保持されたタグアドレスが、メモリアクセスアドレスのタグアドレスと一致する場合、キャッシュヒットが判定される(セットアソシアティブ方式)。
この種のキャッシュメモリは、例えば、メモリアクセス要求に含まれるメモリアクセスアドレスから複数通りのセットアドレスとタグアドレスとをそれぞれ生成する複数のマッピングコントローラを有する。キャッシュメモリは、マッピングコントローラのいずれかから出力されるセットアドレスおよびタグアドレスを使用してキャッシュヒットを判定し、ヒット率が低い場合、使用するマッピングコントローラを切り替える(例えば、特許文献1参照)。
セットアソシアティブ方式のキャッシュメモリにおいて、メモリアクセスアドレスの値が2のべき乗となるストライドアクセスが実施されると、特定のエントリの参照頻度が他のエントリの参照頻度に比べて高くなる場合がある。参照頻度の高いエントリにおいて、データがキャッシュヒットによって再利用される前に追い出されると、キャッシュミスの頻度が高くなる。
例えば、ストライドアクセスによるキャッシュミスは、局所的なメモリアクセスアドレスにより発生する。このため、キャッシュメモリ全体のキャッシュヒット率をモニタすることでは、ストライドアクセスによるキャッシュミスの頻度の増加を判定することが困難であり、キャッシュミスの頻度を下げることは困難である。
1つの側面では、本発明は、メモリアクセスアドレスの偏りによるキャッシュヒット率の低下を抑制することを目的とする。
一つの観点によれば、キャッシュメモリは、メモリアクセス要求に含まれるメモリアクセスアドレス中のセットアドレスにより識別される複数のエントリを含み、前記複数のエントリの各々にメモリアクセスアドレス中のタグアドレスが保持されるキャッシュブロックと、メモリアクセスアドレスに含まれるセットアドレスとタグアドレスとに基づいて、メモリアクセス要求のキャッシュヒットまたはキャッシュミスを判定するキャッシュ制御部と、キャッシュミスの発生回数を前記複数のエントリ毎に保持するミス回数保持部と、前記ミス回数保持部に保持された前記複数のエントリ毎のキャッシュミスの発生回数のいずれかが閾値を超えた場合、セットアドレスのメモリアクセスアドレス内でのビット位置の割り当てを変更するセットビット位置変更部と、を有する。
メモリアクセスアドレスの偏りによるキャッシュヒット率の低下を抑制することができる。
以下、図面を参照して実施形態が説明される。以下では、信号が伝達される信号線には、信号名と同じ符号が使用される。
図1は、一実施形態におけるキャッシュメモリの一例を示す。図1に示すキャッシュメモリ10は、CPU等のプロセッサに搭載され、あるいは、プロセッサとメインメモリとの間に配置される。
キャッシュメモリ10がプロセッサに搭載される1次キャッシュの場合、キャッシュメモリ10は、プロセッサ内の演算コアからメモリアクセス要求を受信する。キャッシュメモリ10がプロセッサに搭載される2次キャッシュの場合、キャッシュメモリ10は、1次キャッシュからメモリアクセス要求を受信する。キャッシュメモリ10がプロセッサに接続される3次キャッシュの場合、キャッシュメモリ10は、2次キャッシュからメモリアクセス要求を受信する。
キャッシュメモリ10は、キャッシュブロック20およびキャッシュメモリ制御回路30を有する。キャッシュメモリ制御回路30は、キャッシュ制御部31、ミス回数保持部32およびセットビット位置変更部33を有する。
キャッシュブロック20は、セットアドレスSETにより識別される複数のエントリENTを有する。各エントリENTは、データを保持するデータ領域DTと、データ領域DTに保持されるデータの読み書きの制御に使用される情報を保持するタグ領域TAGとを有する。以下では、タグ領域TAGに保持されるタグアドレスは、タグアドレスTAGとも称され、データ領域DTに保持されるデータは、データDTとも称される。
図1では、説明の簡単化のため、キャッシュブロック20が2ビットのセットアドレスSETで識別される4つのエントリENTを有する例が示される。しかしながら、キャッシュブロック20のエントリENTの数は、64個(6ビットのセットアドレスSET)または2048個(11ビットのセットアドレスSET)等でもよい。なお、キャッシュメモリ10は、複数のウェイを有するセットアソシアティブ方式を採用している。キャッシュブロック20の例は、図2に示される。
キャッシュ制御部31は、上位のキャッシュメモリまたは演算コアからメモリアクセス要求を受信した場合、タグ領域TAGを参照し、メモリアクセス要求の対象データがデータ領域DTに保持されているか否かを判定する。この際、キャッシュ制御部31は、セットビット位置SETBに基づいてメモリアクセス要求に含まれるメモリアクセスアドレスからセットアドレスSETとタグアドレスTAGとを抽出する。セットアドレスSETは、メモリアクセスアドレスにおいて、キャッシュ制御部31が保持するセットビット位置SETBで示されるビット位置のアドレスである。
そして、キャッシュ制御部31は、セットアドレスSETに対応するエントリENTに保持されたタグアドレスTAGを参照する。キャッシュ制御部31は、対象データがデータ領域DTに保持されている場合、キャッシュヒットを判定し、対象データをデータ領域から読み出してメモリアクセス要求の発行元に出力する。
キャッシュ制御部31は、対象データがデータ領域DTに保持されていない場合、キャッシュミスを判定し、下位のキャッシュメモリまたはメインメモリにメモリアクセス要求を出力する。キャッシュ制御部31は、下位のキャッシュメモリまたはメインメモリから対象データを受信した場合、対象データをメモリアクセス要求の発行元に出力する。
また、キャッシュ制御部31は、受信した対象データをデータ領域DTに格納し、タグ領域TAGを更新する。キャッシュ制御部31は、受信した対象データを格納するデータ領域DTに空きがない場合、データ領域DTに保持されているデータを追い出し、対象データを格納するデータ領域DTを確保する。
キャッシュ制御部31は、キャッシュミスを判定した場合、キャッシュミスしたメモリアクセスアドレスに含まれるセットアドレスSETを含む増加指示INCをミス回数保持部32に出力する。また、キャッシュ制御部31は、セットビット位置変更部33から新たなセットビット位置NSETBを受信した場合、受信したセットビット位置NSETBをセットビット位置SETBとして保持する。キャッシュ制御部31においてセットビット位置SETBを保持する領域は、セットビット位置保持部の一例である。なお、セットビット位置SETBは、キャッシュメモリ制御回路30内であってキャッシュ制御部31の外部に設けられてもよい。
ミス回数保持部32は、セットアドレスSET毎にキャッシュミスの発生回数であるキャッシュミス回数CMNを保持する保持領域を有する。すなわち、ミス回数保持部32は、キャッシュブロック20の複数のエントリENTの各々に対応してキャッシュミス回数CMNの保持領域を有する。ミス回数保持部32は、複数の保持領域に保持しているキャッシュミス回数CMN(CMN00、CMN01、CMN10、CMN11)をセットビット位置変更部33に出力する。キャッシュミス回数CMNの末尾の2桁の数値は、保持領域(すなわち、セットアドレスSET)を示す。
ミス回数保持部32は、キャッシュ制御部31から増加指示INCを受信した場合、増加指示INCに含まれるセットアドレスSETに対応する保持領域に保持されたキャッシュミス回数CMNをインクリメントする。ミス回数保持部32は、セットビット位置変更部33から初期化指示CLRを受信した場合、全ての保持領域に保持しているキャッシュミス回数CMNを"0"に初期化する。なお、ミス回数保持部32には、キャッシュミス回数CMNの代わりに、キャッシュミス率が保持されてもよい。
セットビット位置変更部33は、ミス回数保持部32から出力されるセットアドレスSET毎のキャッシュミス回数CMNを監視する。セットビット位置変更部33は、キャッシュミス回数CMNのいずれかが閾値を超えた場合、ミス回数保持部32に初期化指示CLRを出力し、キャッシュブロック20に無効化指示INVLDを出力する。キャッシュブロック20の全てのエントリENTは、無効化指示INVLDに基づいて無効化される。
また、セットビット位置変更部33は、キャッシュミス回数CMNのいずれかが閾値を超えた場合、メモリアクセスアドレスにおいて新たにセットアドレスSETに割り当てるビット位置を決定する。例えば、セットビット位置変更部33は、現在のセットビット位置SETBに対してビット位置が少なくとも1ビット異なる新たなセットビット位置NSETBを決定する。セットビット位置変更部33は、決定した新たなセットビット位置NSETBをキャッシュ制御部31に出力する。特に限定されないが、閾値は、ウェイWの数またはウェイWの数の2倍程度が好ましい。
図2は、図1のキャッシュブロック20の一例を示す。キャッシュブロック20は、エントリENT毎に複数のウェイW(W1-W4)を有する。なお、ウェイWの数は、4個に限定されず、8個または16個等でもよい。各ウェイWは、バリッドフラグVLD、タグアドレスTAGおよびデータDTを保持する領域を有する。
バリッドフラグVLDは、エントリENTが有効である場合にセットされ、エントリENTが無効である場合にリセットされる。また、各エントリENTは、最近使用されたウェイWを示す使用情報USDを保持する領域を有する。使用情報USD、バリッドフラグVLDおよびタグアドレスTAGは、図1のタグ領域TAGに保持され、データDTは、図1のデータ領域DTに保持される。
メモリアクセス要求に含まれるメモリアクセスアドレスは、タグアドレスTAG、セットアドレスSETおよびワードアドレスWDを含む。ワードアドレスWDは、メインメモリまたは下位のキャッシュメモリに対するデータDTの入出力単位であるキャッシュライン中のバイトデータを識別するアドレスである。ワードアドレスWDは、キャッシュラインサイズが64バイトの場合、6ビットであり、キャッシュラインサイズが128バイトの場合、7ビットである。ワードアドレスWDは、メモリアクセスアドレスの最下位ビット側に割り当てられる。
タグアドレスTAGは、メモリアクセスアドレスのうち、ワードアドレスWDとセットアドレスSETとを除いたビットで識別される。例えば、初期状態において、メモリアクセスアドレスの最上位ビット側にタグアドレスTAGが割り当てられ、メモリアクセスアドレスの中位ビットにセットアドレスSETが割り当てられるとする。
この状態で、キャッシュブロック20のエントリENTのいずれかのキャッシュミス回数が閾値を超えた場合、図1のセットビット位置変更部33により、セットアドレスSETの割り当てを変更する処理が実施される。セットアドレスSETの割り当ての変更例1では、セットアドレスSETが、元のセットアドレスSETに対して1ビットまたは数ビット上位側にシフトされ、シフトにより空いたビットにタグアドレスTAGが割り当てられる。変更例1では、変更後のセットアドレスSETの一部のビットは、変更前のセットアドレスSETのビットと重複している。
セットアドレスSETの割り当ての変更例2では、セットアドレスSETが最上位ビット側に割り当てられ、タグアドレスTAGがセットアドレスSETとワードアドレスWDとの間に割り当てられる。変更後のセットアドレスSETのビットは、変更前のセットアドレスSETのビットと重複しない。セットアドレスSETの割り当ての変更例3では、セットアドレスSETがタグアドレスTAGの間に複数に分割して割り当てられる。変更例3では、変更後のセットアドレスSETのビットの一部は、変更前のセットアドレスSETのビットと重複してもよい。なお、セットアドレスSETの割り当ては、変更例1から変更例3に限定されない。
この実施形態では、キャッシュミス回数が閾値を超えた場合にセットアドレスSETの割り当てを変更することで、ストライドアクセス等により特定のエントリENTへの参照が集中する場合に、参照するエントリENTを分散させることができる。これにより、キャッシュヒット率の低下を抑制することができ、メモリアクセス効率を向上することができる。
この結果、キャッシュメモリ10を搭載するプロセッサまたはサーバ等のシステムの処理性能を向上することができ、科学技術計算、ディープラーニングまたは各種シミュレーション等に掛かる時間を短縮することができる。
キャッシュミス回数が閾値を超えた場合にキャッシュブロック20の全てのエントリENTを無効化することで、セットアドレスSETの変更に伴うデータDTの移動処理とタグアドレスTAGの変更処理とを省略することができる。この結果、セットビット位置変更部33によるキャッシュブロック20の制御を簡易にすることができ、キャッシュメモリ制御回路30の回路規模の増大を抑制することができる。
キャッシュ制御部31が参照可能な位置にセットビット位置SETBとして保持する領域を設けることで、セットアドレスSETのビット位置が変更された場合にも、キャッシュ制御部31は、正しいエントリENTを参照することができる。この結果、キャッシュ制御部31は、メモリアクセスアドレスに基づいて、誤動作することなくキャッシュヒットまたはキャッシュミスを判定することができる。
なお、キャッシュブロック20の各エントリENTに複数のウェイWを設けることで、ストライドアクセス等により特定のエントリENTへの参照が集中することを閾値に基づいて検出し、参照するエントリENTを分散させることができる。すなわち、この実施形態は、複数のウェイWを有するセットアソシアティブ方式のキャッシュメモリに適用することで上記の効果を得ることができる。
図3は、別の実施形態におけるキャッシュメモリの一例を示す。図1および図2に示した実施形態と同様の要素については、詳細な説明は省略する。図3に示すキャッシュメモリ100は、CPU等のプロセッサに搭載され、あるいは、プロセッサとメインメモリとの間に配置される。キャッシュメモリ100は、図1のキャッシュメモリ10と同様に、上位のキャッシュメモリまたは演算コアからメモリアクセス要求を受信、キャッシュミスした場合、下位のキャッシュメモリまたはメインメモリにメモリアクセス要求を出力する。
キャッシュメモリ100は、キャッシュブロック110およびキャッシュメモリ制御回路120を有する。キャッシュメモリ制御回路120は、キャッシュ制御部121、セットビット位置保持部122、キャッシュ情報変更部123、ミス回数更新部124、ミス回数保持部125およびセットビット位置決定部126を有する。キャッシュ情報変更部123およびセットビット位置決定部126は、セットビット位置変更部の一例である。
キャッシュブロック110は、図2のキャッシュブロック20と同様に、セットアドレスSETにより識別される複数のエントリENTを有し、各エントリENTは、複数のウェイW(例えば、ウェイW1-W4)を有する。キャッシュメモリ100は、複数のウェイWを有するセットアソシアティブ方式を採用している。
キャッシュ制御部121によるキャッシュヒットまたはキャッシュミスの判定動作は、図1のキャッシュ制御部31によるキャッシュヒットまたはキャッシュミスの判定動作と同様である。但し、キャッシュ制御部121は、外部に保持されたセットビット位置SETBを参照する点、および、キャッシュミスを判定した場合、セットアドレスSETのみをミス回数更新部124に出力する点が図1のキャッシュ制御部31と相違する。
セットビット位置保持部122は、キャッシュ情報変更部123から受信する新たなセットビット位置NSETBをセットビット位置SETBとして保持する。セットビット位置保持部122は、保持しているセットビット位置SETBをキャッシュ制御部121およびセットビット位置決定部126に出力する。
キャッシュ情報変更部123は、セットビット位置決定部126から受信する新たなセットビット位置NSETBをセットビット位置保持部122に転送する。また、キャッシュ情報変更部123は、新たなセットビット位置NSETBを受信した場合、ミス回数保持部125を参照し、キャッシュミス回数CMNが最も多いセットアドレスSET1を取得する。そして、キャッシュ情報変更部123は、受信した新たなセットビット位置NSETBに基づいて、キャッシュブロック110のエントリENTに割り当てるセットアドレスSETを変更する変更処理を実施する。変更処理については、図8で説明される。また、キャッシュ情報変更部123は、ミス回数更新部124にリセット指示RSTを出力する。
ミス回数更新部124は、キャッシュ制御部121からセットアドレスSETを受信した場合、受信したセットアドレスSETを含む増加指示INCをミス回数保持部125に出力する。ミス回数更新部124は、ミス回数保持部125に保持されたセットアドレスSETにそれぞれ対応するキャッシュミス回数CMNのいずれかが閾値を超えた場合、セットビット位置決定部126に超過情報OVRを出力する。ミス回数更新部124は、キャッシュ情報変更部123からリセット指示RSTを受信した場合、ミス回数保持部125に保持された全てのキャッシュミス回数CMNを"0"に初期化する初期化指示CLRをミス回数保持部125に出力する。
ミス回数保持部125は、セットアドレスSET1をキャッシュ情報変更部123に出力する機能を有することを除き、図1のミス回数保持部32と同様の機能を有する。すなわち、ミス回数保持部125は、増加指示INCに基づいて、対応するキャッシュミス回数CMNをインクリメントし、初期化指示CLRに基づいて、全てのキャッシュミス回数CMNを"0"に初期化する。なお、ミス回数保持部125には、キャッシュミス回数CMNの代わりに、キャッシュミス率が保持されてもよい。
セットビット位置決定部126は、ミス回数更新部124から超過情報OVRを受信した場合、メモリアクセスアドレスにおいて新たなセットアドレスSETに割り当てるビット位置を決定する。例えば、セットビット位置決定部126は、セットビット位置保持部122に保持されている現在のセットビット位置SETBに対してビット位置が少なくとも1ビット異なる新たなセットビット位置NSETBを決定する。セットビット位置決定部126は、決定した新たなセットビット位置NSETBをキャッシュ情報変更部123に出力する。
図4は、図3のキャッシュメモリ100の動作の一例を示す。図4では、説明の簡単化のため、メモリアクセスアドレスは、4ビットのタグアドレスTAGと2ビットのセットアドレスSETとを含む6ビットであり、ワードアドレスWDを含まないとする。また、ストライドアクセスによりアクセスの頻度が高いセットアドレスSET="01"のエントリENT以外のエントリENTのタグアドレスTAGおよびデータDTの記載は省略されている。
図4の初期状態では、タグアドレスTAGは、メモリアクセスアドレスの上位4ビットに割り当てられ、セットアドレスSETは、メモリアクセスアドレスの下位2ビットに割り当てられる。この場合、図3のセットビット位置SETBは、例えば、2進数で"000011"で示される。
初期状態において、ミス回数更新部124は、セットアドレスSET="01"のエントリENTでキャッシュミス回数CMNが閾値を超えたことを判定し、セットビット位置決定部126は、新たなセットビット位置NSETBを決定する。例えば、セットビット位置決定部126は、図2の変更例2に示すように、タグアドレスTAGとセットアドレスSETとの割り当てを入れ替える。割り当ての変更後の新たなセットビット位置NSETBは、2進数で"110000"で示される。
キャッシュ情報変更部123は、ミス回数保持部125を参照してキャッシュミス回数CMNが最も多いセットアドレスSET1を取得し、キャッシュブロック110のセットアドレスSET1以外のエントリENTに保持されたキャッシュ情報を無効化する。そして、キャッシュ情報変更部123は、セットアドレスSET1のエントリENTに保持されたデータを、新たなセットビット位置NSETBに対応するエントリENTのウェイWのいずれかに格納する。また、キャッシュ情報変更部123は、データを格納したウェイWに新たなタグアドレスTAGを格納する。
これにより、ストライドアクセスにより局所的なエントリENTの参照頻度が増加し、キャッシュミス回数CMNが閾値を超えた場合に、その後のストライドアクセスにより参照されるエントリENTを分散させることができる。この結果、特定のエントリENTでキャッシュミスが発生することを抑制することができ、キャッシュヒット率が低下することを抑制することができる。
図5は、図3のキャッシュ制御部121の動作の一例を示す。図5に示すフローは、キャッシュ制御部121が上位のキャッシュメモリまたは演算コアからメモリアクセス要求を受信したことに基づいて開始される。なお、図5から図8は、キャッシュメモリ100の制御方法の一例を示す。
まず、ステップS11において、キャッシュ制御部121は、メモリアクセスアドレスに含まれるセットアドレスSETに対応するキャッシュブロック110のエントリENTに保持されたタグアドレスTAGを参照する。キャッシュ制御部121は、参照したタグアドレスTAGがメモリアクセスアドレスに含まれるタグアドレスTAGと一致する場合、キャッシュヒットを判定し、ステップS15を実施する。キャッシュ制御部121は、参照したタグアドレスTAGがメモリアクセスアドレスに含まれるタグアドレスTAGと一致しない場合、キャッシュミスを判定し、ステップS12を実施する。
ステップS12において、キャッシュ制御部121は、キャッシュミスしたメモリアクセスアドレスに含まれるセットアドレスSETをミス回数更新部124に出力する。次に、ステップS13において、キャッシュ制御部121は、下位のキャッシュメモリまたはメインメモリにメモリアクセス要求を出力する。
次に、ステップS14において、キャッシュ制御部121は、下位のキャッシュメモリまたはメインメモリから対象データを受信した場合、対象データをメモリアクセス要求の発行元に出力する。また、キャッシュ制御部121は、受信した対象データをキャッシュブロック110に格納し、キャッシュブロック110を更新する。ステップS14の後、キャッシュ制御部121は、ステップS15を実施する。なお、ステップS12の動作は、ステップS13、S14の動作の後に実施されてもよい。
ステップS15において、キャッシュ制御部121は、キャッシュブロック110から対象データを読み出し、読み出した対象データをメモリアクセス要求の発行元に出力し、図5に示す動作を終了する。
図6は、図3のミス回数更新部124の動作の一例を示す。図6に示す動作は、ミス回数更新部124がキャッシュ制御部121からセットアドレスSETを受信した場合、または、キャッシュ情報変更部123からリセット指示RSTを受信した場合に開始される。
まず、ステップS21において、ミス回数更新部124は、セットアドレスSETを受信した場合、ステップS22を実施し、セットアドレスSETを受信していない場合、ステップS25を実施する。
ステップS22において、ミス回数更新部124は、受信したセットアドレスSETに対応するミス回数保持部125の保持領域のキャッシュミス回数CMNをインクリメントさせる増加指示INCをミス回数保持部125に出力する。
次に、ステップS23において、ミス回数更新部124は、ミス回数保持部125の保持領域のいずれかでキャッシュミス回数が閾値を超えたか否かを判定する。ミス回数更新部124は、キャッシュミス回数が閾値を超えた保持領域がある場合、ステップS24を実施する。ミス回数更新部124は、キャッシュミス回数が閾値を超えた保持領域がない場合、図6に示す動作を終了する。
ステップS24において、ミス回数更新部124は、キャッシュミス回数CMNのいずれかが閾値を超えたことを示す超過情報OVRをセットビット位置決定部126に出力し、図6に示す動作を終了する。
ステップS25において、ミス回数更新部124は、ミス回数保持部125に保持された全てのキャッシュミス回数CMNを"0"に初期化する初期化指示CLRをミス回数保持部125に出力し、図6に示す動作を終了する。
図7は、図3のセットビット位置決定部126の動作の一例を示す。図7に示す動作は、ミス回数更新部124から超過情報OVRを受信した場合に開始される。
まず、ステップS31において、セットビット位置決定部126は、セットアドレスSETの現在のセットビット位置SETBをセットビット位置保持部122から取得する。次に、ステップS32において、セットビット位置決定部126は、図2に例示されているように、現在のセットビット位置SETBに対してビット位置が少なくとも1ビット異なる新たなセットビット位置NSETBを決定する。
次に、ステップS33において、セットビット位置決定部126は、ステップS32で決定した新たなセットビット位置NSETBをキャッシュ情報変更部123に出力し、図7に示す動作を終了する。
図8は、図3のキャッシュ情報変更部123の動作の一例を示す。図8に示す動作は、セットビット位置決定部126から新たなセットビット位置NSETBを受信した場合に開始される。
まず、ステップS41において、キャッシュ情報変更部123は、ミス回数保持部125を参照し、キャッシュミス回数CMNが最も多いセットアドレスSET1を取得する。次に、ステップS42において、キャッシュ情報変更部123は、取得したセットアドレスSET1以外のセットアドレスSETで示されるキャッシュブロック110のエントリENTに保持されたキャッシュ情報を削除する。例えば、キャッシュ情報変更部123は、キャッシュ情報を削除するウェイWのバリッドフラグVLDをリセットすることで、キャッシュ情報を削除する。
次に、キャッシュ情報変更部123は、ステップS43からステップS46において、セットアドレスSET1に対応するキャッシュ情報を削除していないエントリENTのウェイW(W1-W4)を順に選択し、キャッシュ情報を更新する処理を実施する。
まず、ステップS43において、キャッシュ情報変更部123は、選択したウェイWに保持されているタグアドレスTAGとデータDTとを取得して保持する。なお、ステップS43において、キャッシュ情報変更部123は、セットアドレスSET1に対応するエントリENTの全てのウェイW1-W4に保持されているタグアドレスTAGとデータDTとを取得して保持してもよい。この場合、ステップS44からステップS46を繰り返し実施することで、キャッシュ情報が更新される。
次に、ステップS44において、キャッシュ情報変更部123は、セットアドレスSET1と選択したウェイWに保持されたタグアドレスTAGとから新たなセットアドレスNSETと新たなタグアドレスNTAGとを算出する。次に、ステップS45において、キャッシュ情報変更部123は、新たなセットアドレスNSETに対応するエントリENTに、新たなタグアドレスNTAGと、ステップS43で取得したデータDTとを格納する。次に、ステップS46において、キャッシュ情報変更部123は、選択したウェイWに保持されているキャッシュ情報を削除する。
次に、ステップS47において、キャッシュ情報変更部123は、ミス回数更新部124にリセット指示RSTを出力し、図8に示す動作を終了する。
なお、キャッシュ情報変更部123は、キャッシュブロック110に保持されている全てキャッシュ情報を削除してもよい。この場合、キャッシュ情報変更部123は、図8のステップS47のみを実施する。
以上、この実施形態においても、図1および図2に示す実施形態と同様の効果を得ることができる。例えば、キャッシュミス回数CMNが閾値を超えた場合にセットアドレスSETの割り当てを変更することで、ストライドアクセス等により特定のエントリENTへの参照が集中する場合に、参照するエントリENTを分散させることができる。これにより、キャッシュヒット率の低下を抑制することができ、メモリアクセス効率を向上することができる。この結果、キャッシュメモリ100を搭載するプロセッサまたはシステムの処理性能を向上することができる。
さらに、この実施形態では、キャッシュミス回数CMNが閾値を超えたエントリENTに保持されているデータDTを、新たなセットアドレスNSETに基づいてエントリENTのいずれかに格納する。これにより、キャッシュミス回数が閾値を超える前にエントリENTに保持されていたデータを再利用することができる。この結果、キャッシュヒット率の低下をさらに抑制することができ、メモリアクセス効率をさらに向上することができる。
ミス回数保持部125に保持されたキャッシュミス回数CMNのインクリメントの制御をキャッシュ制御部121でなくミス回数更新部124に実施させる。また、セットビット位置SETBを保持するセットビット位置保持部122をキャッシュ制御部121の外部に配置する。これにより、既存のキャッシュ制御部に大幅な変更を加えることなく、キャッシュ制御部121を設計することができ、キャッシュメモリ100の設計期間を短縮することができる。
図9は、別の実施形態におけるキャッシュメモリの動作の一例を示す。図4と同様の動作については、詳細な説明は省略する。図9の動作を実施するキャッシュメモリは、キャッシュ情報変更部123による変更処理が図4と相違し、ミス回数保持部125がセットアドレスSET1を出力しないことを除き、図3のキャッシュメモリ100と同様の構成および機能を有する。
図4と同様に、メモリアクセスアドレスは、4ビットのタグアドレスTAGと2ビットのセットアドレスSETとを含む6ビットであり、ワードアドレスWDを含まないものとする。タグアドレスTAGおよびセットアドレスSETの初期状態および変更後の状態の割り当ては、それぞれ図4と同じである。初期状態において、ウェイW2-W4に保持されるタグアドレスTAGおよびデータDTの記載は省略されている。
初期状態において、ミス回数更新部124は、エントリENTのいずれかでキャッシュミス回数CMNが閾値を超えたことを判定し、セットビット位置決定部126は、新たなセットビット位置NSETBを決定する。
キャッシュ情報変更部123は、新たなセットビット位置NSETBの受信に基づいて、セットビット位置SETBの割り当ての変更の前後で保持するエントリENTが変わらないデータDTを除くデータDTを無効化する。図9に示す例では、データD1は、エントリENTがSET="00"からSET="01"に変わるため、無効化される。データD2は、エントリENTがSET="01"からSET="00"に変わるため、無効化される。
一方、データD3、D4は、セットビット位置SETBの割り当ての変更の前後で保持されるエントリENTが変わらない。このため、キャッシュ情報変更部123は、データD3を保持するウェイW1のタグアドレスTAGを新たなタグアドレスTAGに変更し、データD4を保持するウェイW1のタグアドレスTAGを新たなタグアドレスTAGに変更する。そして、キャッシュ情報変更部123は、セットビット位置SETBの割り当ての変更に伴うキャッシュブロック110の変更処理を終了する。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、キャッシュミス回数CMNが閾値を超えた場合にセットアドレスSETの割り当てを変更することで、キャッシュヒット率の低下を抑制することができ、メモリアクセス効率を向上することができる。
さらに、この実施形態では、セットビット位置SETBの割り当ての変更の前後で保持するエントリENTが変わらないデータDTを削除せずにタグアドレスTAGを更新する。これにより、データDTを移動することなくキャッシュブロック110の変更処理を実施することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10 キャッシュメモリ
20 キャッシュブロック
30 キャッシュメモリ制御回路
31 キャッシュ制御部
32 ミス回数保持部
33 セットビット位置変更部
100 キャッシュメモリ
110 キャッシュブロック
120 キャッシュメモリ制御回路
121 キャッシュ制御部
122 セットビット位置保持部
123 キャッシュ情報変更部
124 ミス回数更新部
125 ミス回数保持部
126 セットビット位置決定部
CLR 初期化指示
CMN キャッシュミス回数
DT データ、データ領域
ENT エントリ
INC 増加指示
INVLD 無効化指示
NSETB セットビット位置
OVR 超過情報
RST リセット指示
SET、SET1 セットアドレス
SETB ビット情報
TAG タグアドレス、タグ領域
USD 使用情報
VLD バリッドフラグ
W(W1-W4) ウェイ
20 キャッシュブロック
30 キャッシュメモリ制御回路
31 キャッシュ制御部
32 ミス回数保持部
33 セットビット位置変更部
100 キャッシュメモリ
110 キャッシュブロック
120 キャッシュメモリ制御回路
121 キャッシュ制御部
122 セットビット位置保持部
123 キャッシュ情報変更部
124 ミス回数更新部
125 ミス回数保持部
126 セットビット位置決定部
CLR 初期化指示
CMN キャッシュミス回数
DT データ、データ領域
ENT エントリ
INC 増加指示
INVLD 無効化指示
NSETB セットビット位置
OVR 超過情報
RST リセット指示
SET、SET1 セットアドレス
SETB ビット情報
TAG タグアドレス、タグ領域
USD 使用情報
VLD バリッドフラグ
W(W1-W4) ウェイ
Claims (6)
- メモリアクセス要求に含まれるメモリアクセスアドレス中のセットアドレスにより識別される複数のエントリを含み、前記複数のエントリの各々がメモリアクセスアドレス中のタグアドレスを保持する複数のウェイを含むキャッシュブロックと、
メモリアクセスアドレスに含まれるセットアドレスとタグアドレスとに基づいて、メモリアクセス要求のキャッシュヒットまたはキャッシュミスを判定するキャッシュ制御部と、
キャッシュミスの発生回数を前記複数のエントリ毎に保持するミス回数保持部と、
前記ミス回数保持部に保持された前記複数のエントリ毎のキャッシュミスの発生回数のいずれかが閾値を超えた場合、セットアドレスのメモリアクセスアドレス内でのビット位置の割り当てを変更するセットビット位置変更部と、
を有するキャッシュメモリ。 - 前記セットビット位置変更部は、セットアドレスのビット位置の割り当てを変更した場合、前記キャッシュブロックの全てのエントリを無効化する
請求項1に記載のキャッシュメモリ。 - 前記セットビット位置変更部は、セットアドレスのビット位置の割り当てを変更した場合、キャッシュミスの発生回数が閾値を超えたエントリを除くエントリを無効化し、キャッシュミスの発生回数が閾値を超えたエントリに保持されたデータを、ビット位置の割り当てを変更したセットアドレスに対応するエントリに、新たなタグアドレスとともに格納する
請求項1に記載のキャッシュメモリ。 - 前記セットビット位置変更部は、前記セットアドレスのビット位置の割り当てを変更した場合、ビット位置の割り当ての変更の前後で保持するエントリが変わらないデータを除くデータを無効化し、無効化しないデータを保持するエントリのタグアドレスをビット位置の割り当ての変更後のタグアドレスに変更する
請求項1に記載のキャッシュメモリ。 - 前記メモリアクセスアドレス中の前記セットアドレスのビット位置を保持するセットビット位置保持部を有し、
前記キャッシュ制御部は、前記セットビット位置保持部に保持された前記ビット位置に基づいて前記メモリアクセスアドレスからセットアドレスとタグアドレスとを抽出し、
前記セットビット位置変更部は、変更したビット位置を前記セットビット位置保持部に格納する
請求項1ないし請求項4のいずれか1項に記載のキャッシュメモリ。 - 前記キャッシュ制御部がキャッシュミスを判定する毎に、キャッシュミスしたセットに対応して前記ミス回数保持部に保持されたキャッシュミスの発生回数を更新するミス回数更新部を有する
請求項1ないし請求項4のいずれか1項に記載のキャッシュメモリ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022176006A JP2024066576A (ja) | 2022-11-02 | 2022-11-02 | キャッシュメモリ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022176006A JP2024066576A (ja) | 2022-11-02 | 2022-11-02 | キャッシュメモリ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024066576A true JP2024066576A (ja) | 2024-05-16 |
Family
ID=91067537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022176006A Pending JP2024066576A (ja) | 2022-11-02 | 2022-11-02 | キャッシュメモリ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2024066576A (ja) |
-
2022
- 2022-11-02 JP JP2022176006A patent/JP2024066576A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6640283B2 (en) | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size | |
US7120773B2 (en) | Apparatus and method for memory management | |
JP6505132B2 (ja) | メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法 | |
US7783836B2 (en) | System and method for cache management | |
TWI684099B (zh) | 剖析快取替代 | |
US7502887B2 (en) | N-way set associative cache memory and control method thereof | |
US20170235681A1 (en) | Memory system and control method of the same | |
US10007614B2 (en) | Method and apparatus for determining metric for selective caching | |
US7577793B2 (en) | Patrol snooping for higher level cache eviction candidate identification | |
JP2017516234A (ja) | 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法 | |
US20100217937A1 (en) | Data processing apparatus and method | |
JPH06231044A (ja) | キャッシュ・メモリを有するデータ処理システム | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
KR20170012233A (ko) | 중앙 처리 장치(cpu)-기반 시스템의 압축된 메모리 제어기(cmc)들을 이용한 메모리 대역폭 압축의 제공 | |
JPWO2005091146A1 (ja) | キャッシュメモリ及びその制御方法 | |
EP2926257B1 (en) | Memory management using dynamically allocated dirty mask space | |
EP3411798B1 (en) | Cache and method | |
US20110320720A1 (en) | Cache Line Replacement In A Symmetric Multiprocessing Computer | |
JP2010073029A (ja) | 命令キャッシュシステム | |
EP0834129A1 (en) | Method and apparatus for reducing cache snooping overhead in a multilevel cache system | |
EP1467284A2 (en) | Data memory cache unit and data memory cache system | |
US7219197B2 (en) | Cache memory, processor and cache control method | |
CN118020064A (zh) | 具有伪lru补充年龄信息的重新引用区间预测(rrip) | |
KR100395768B1 (ko) | 멀티 레벨 캐쉬 시스템 | |
US20090198903A1 (en) | Data processing system, processor and method that vary an amount of data retrieved from memory based upon a hint |