JP2014016812A - メモリ装置、演算処理装置、及びキャッシュメモリの制御方法 - Google Patents

メモリ装置、演算処理装置、及びキャッシュメモリの制御方法 Download PDF

Info

Publication number
JP2014016812A
JP2014016812A JP2012153972A JP2012153972A JP2014016812A JP 2014016812 A JP2014016812 A JP 2014016812A JP 2012153972 A JP2012153972 A JP 2012153972A JP 2012153972 A JP2012153972 A JP 2012153972A JP 2014016812 A JP2014016812 A JP 2014016812A
Authority
JP
Japan
Prior art keywords
data
cache
array
management data
write
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.)
Granted
Application number
JP2012153972A
Other languages
English (en)
Other versions
JP5978814B2 (ja
Inventor
Shingo Watanabe
慎吾 渡辺
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
Priority to JP2012153972A priority Critical patent/JP5978814B2/ja
Publication of JP2014016812A publication Critical patent/JP2014016812A/ja
Application granted granted Critical
Publication of JP5978814B2 publication Critical patent/JP5978814B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】キャッシュからメインメモリへの連続アクセスのデータサイズを可変とする。
【解決手段】メモリ装置は、単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイに格納する場合には管理データアレイの対応する管理データを第1の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインをデータアレイに格納する場合には管理データアレイの対応する管理データを第2の状態とする書込制御回路と、ライトバック時に、管理データアレイの対応する管理データが第1の状態を示す場合には追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、管理データアレイの対応する管理データが第2の状態を示す場合には、追い出し対象キャッシュデータと一纏まりとなるデータアレイのキャッシュデータと追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成するアクセス制御回路とを含む。
【選択図】図2

Description

本願開示は、メモリ装置、演算処理装置、及びキャッシュメモリの制御方法に関する。
同一チップ上に複数のプロセッサコアを実装したマルチコアのプロセッサでは、プロセッサの演算処理速度とメインメモリアクセスレイテンシ及びメモリアクセススループットとの乖離が問題となる。この問題を緩和するため、プロセッサは一般に、多階層のメモリシステムを有している。メインメモリとプロセッサの演算部との間にあり、一時的にメインメモリのデータをコピーして保持しておく小容量且つ高速なメモリをキャッシュメモリと呼ぶ。プロセッサがキャッシュメモリ上のデータを参照する限り、低レイテンシかつ高スループットなメモリアクセスが可能である。
キャッシュメモリは、主に、LRU(Last Recently Used)アレイ、タグアレイ、及びデータアレイを含む。データアレイの各配列要素には、メインメモリからデータがコピーされる。メインメモリからデータアレイへのデータのコピーはキャッシュライン単位で実行される。メインメモリのメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュメモリの容量はメインメモリの容量よりも小さいので、メインメモリのメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
一般に、アドレスの全ビットのうちで、所定数の中位ビットがキャッシュメモリのインデックスとなり、それより上位に位置する残りのビットがキャッシュメモリのタグとなる。キャッシュメモリのタグアレイが、各インデックスに対応するタグを格納している。但し各インデックスに対して、一般に複数のタグを格納しており、これら複数のタグをウェイと呼ぶ。データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、タグアレイ中の対応するインデックスの複数のウェイのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンとが一致するか否かを判断する。読み出した複数のウェイの何れかのタグが一致する場合には、当該アクセスはキャッシュヒットとなる。読み出した複数のウェイの何れのタグについても一致しない場合には、当該アクセスはキャッシュミスとなる。
キャッシュヒットの場合、該当インデックスの該当ウェイ(タグが一致したウェイ)に対応するキャッシュデータ(1キャッシュライン分の所定ビット数のデータ)が、キャッシュRAMにおいてアクセスされる。キャッシュミスの場合には、メインメモリに格納されている当該アクセスの対象であるデータを、キャッシュRAMの該当するキャッシュラインに転送する。この際、該当インデックスの全てのウェイにおいて有効なキャッシュデータが存在する場合には、最も必要性の低いデータ(例えば最後にアクセスされてから最も時間が経過しているデータ)を、アクセス対象のデータで置き換える処理が実行される。この置き換え処理時に、ライトバック動作を実行し、置き換えられる方のデータが上書きされ消えてしまう前に当該データをメインメモリに書き込んで、キャッシュメモリの内容をメインメモリに反映させる。キャッシュメモリのLRU(Last Recently Used)アレイは、最後にアクセスされてから最も時間が経過しているデータのウェイを記憶しておく領域である。
メインメモリとして用いるDIMM(Dual Inline Memory Module)の要素であるDRAM(Dynamic Random Access Memory)へのアクセスを、大きなデータ単位でまとめて行うことにより、読み書き処理のスループットを改善することが考えられる。DRAMは、1ビットの情報を記憶するメモリ素子がマトリックス状に配置されたセルアレイ、及び、メモリ素子への読み書きアクセスを制御する回路を含む。DRAMへのアクセスにおいては、最初にセルアレイ中のローアドレスに対応する一本のワード線を選択活性化して行方向の位置を指定し、次にコラムアドレスが指定する列方向の位置を選択してデータの読み書きを行う。同一のローアドレスで連続するコラムアドレスをアクセスするときには、ワード線を選択活性化したままの状態で、列方向に連続する複数のデータを連続的にアクセスすることにより、アクセス時間の短縮を図ることができる。このようなアクセスの仕方を、ここでは連続アクセスと呼ぶ。
多階層のメモリシステムにおいてメインメモリへのアクセスが発生するのは、メインメモリからキャッシュメモリへコピーするデータを読み出す動作の場合、又は、キャッシュメモリから追い出されるデータをメインメモリに書き込む動作の場合である。このうち、メインメモリからキャッシュメモリへデータをコピーする動作(キャッシュフィル動作)は、プロセッサの演算部において当該データが必要になった(又は近い将来必要になると予測した)ときに実行される。従って、キャッシュフィルによるメインメモリへのアクセスは、基本的にプログラムにより制御が可能であり、メインメモリの連続アドレスへアクセスするようにアクセス制御することが可能である。一方、キャッシュメモリからデータを追い出す動作(ライトバック動作)は、キャッシュフィルの過程で副次的に行われる動作であり、追い出される対象のウェイはプログラムの制御とは直接に関係なく見かけ上ランダムである。従って、ライトバックにおいては、メインメモリの連続アドレスへアクセスするようにアクセス制御することはできない。
ライトバックの書き込みアドレスを自在に制御することはできないが、キャッシュラインサイズを増大すれば、ライトバック時にある程度の連続アドレスへの書き込みを実現することができる。即ち、キャッシュラインサイズを増大させることで、メインメモリアクセスのアクセス単位が大きくなり、ある程度の長さの連続アクセスが常時行われることになる。しかしながら、キャッシュラインサイズは、参照アドレスが所定のアドレス範囲に集中するという空間的局所性と所定の時間範囲に集中するという時間的局所性を考慮して、キャッシュメモリのヒット率と、プロセッサの物理的実装コストが最適になるように定められる。一般に無数のアプリケーションを実行する可能性のあるプロセッサでは、より小さなキャッシュラインサイズが望まれる。すなわち、キャッシュメモリ全体容量が一定ならば空間的局所性と時間的局所性ですらトレードオフの関係になる。一つのキャッシュラインの参照のみに着目すれば、キャッシュラインサイズの拡大は空間的局所性の利用効率が大きくなるが、複数のキャッシュラインの参照を考慮すると他のキャッシュラインの参照により参照すべきキャッシュラインが追い出される確率が増加するため、時間的局所性の利用効率が小さくなる。一般的に、ラインサイズの縮小による空間的局所性の利用効率が小さくなる場合のデメリットは、どのキャッシュラインを参照するかを予測することによってデメリットの影響を小さくできる。具体的には、参照があったキャッシュライン周辺のキャッシュラインのデータもまとめてコピーすれば良い。しかし、時間的局所性の利用効率を大きくするにはラインサイズの縮小が効果があるため、空間的局所性の利用効率と時間的局所性の利用効率を両立するのは困難であった。
特開平7−160577号公報 特開2011−164948号公報 特開2008−310465号公報
以上を鑑みると、メインメモリに対する連続アクセスのデータのサイズを可変としたメモリ装置、演算処理装置、及びキャッシュメモリの制御方法が望まれる。
メモリ装置は、インデックス毎にキャッシュデータを格納するデータアレイと、前記データアレイのキャッシュデータ毎に第1の状態又は第2の状態の何れかを示す管理データを格納する管理データアレイと、単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第1の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態とする書込制御回路と、追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第1の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成するアクセス制御回路とを含む。
キャッシュメモリの制御方法は、単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイに格納する場合には前記管理データアレイの対応する管理データを第1の状態に設定し、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態に設定し、追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第1の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成する。
各段階を含む。
演算処理装置は、演算部と、キャッシュメモリと、メモリアクセスコントローラとを含み、前記キャッシュメモリは、インデックス毎にキャッシュデータを格納するデータアレイと、前記データアレイのキャッシュデータ毎に第1の状態又は第2の状態の何れかを示す管理データを格納する管理データアレイと、単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第1の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態とする書込制御回路と、追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第1の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を前記メモリアクセスコントローラへ送信し、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を前記メモリアクセスコントローラへ送信するアクセス制御回路とを含む。
本願開示の少なくとも1つの実施例によれば、メインメモリに対する連続アクセスのデータのサイズを可変としたメモリ装置、演算処理装置、及びキャッシュメモリの制御方法が提供される。
CPUモジュール及びメインメモリを含むシステムの図である。 最下位キャッシュメモリの構成の一例を示す図である。 1ラインデータ要求時又は1ラインキャッシュフィル要求時の最下位キャッシュメモリの動作の一例を示すフローチャートである。 キャッシュフィル処理の一例を示すフローチャートである。 2ラインキャッシュフィル要求時の最下位キャッシュメモリの動作の一例を示すフローチャートである。 ミス側フィル処理の一例を示すフローチャートである。 フィル処理の一例を示すフローチャートである。 フィル処理の一例を示すフローチャートである。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、CPUモジュール及びメインメモリを含むシステムの図である。図1のシステムは、CPU(Central Processing Unit)モジュール10及びメインメモリである複数のDIMM11を含む。CPUモジュール10は、演算部12、最上位キャッシュメモリ13、最下位キャッシュメモリ14、及びメモリアクセスコントローラ(MAC)15を含む。演算部12は、DIMM11に格納されたプログラムを実行し、DIMM11に格納されたデータに対する演算処理を実行する。DIMM11に格納されたプログラムやデータは、メモリアクセスコントローラ15によりアクセスされ、メモリアクセスコントローラ15、最下位キャッシュメモリ14、及び最上位キャッシュメモリ13を介して演算部12に供給される。最上位キャッシュメモリ13及び最下位キャッシュメモリ14は、DIMM11よりも記憶容量が小さく、DIMM11よりも高速にデータアクセス可能なメモリであり、例えばSRAM(Static Random Access Memory)をメモリデバイスとして含む。一般に、最下位キャッシュメモリ14に格納されるデータの一部のコピーが、最上位キャッシュメモリ13に保持されている。またDIMM11に格納されるデータの一部のコピーが、最下位キャッシュメモリ14に保持されている。なお図1には、最上位キャッシュメモリ13と最下位キャッシュメモリ14との2階層のキャッシュメモリが示されるが、キャッシュメモリの階層数は2個に限られない。例えば、最下位キャッシュメモリ14のみが設けられる1階層の構成であってもよい。
図2は、最下位キャッシュメモリ14の構成の一例を示す図である。図2に示す最下位キャッシュメモリ14は、コマンドバッファ20、アドレスバッファ21、偶数インデックス生成回路(EIG)22−1、奇数インデックス生成回路(OIG)22−2、偶数バンク23−1、及び奇数バンク23−2を含む。最下位キャッシュメモリ14は更に、マージフラグ制御回路(MFC)24−1及び24−2、LRU制御回路(LC)25−1及び25−2、及び有効フラグ制御回路(VFC)26−1及び26−2を含む。最下位キャッシュメモリ14は更に、データバス選択回路27−1乃至30−1及び27−2乃至30−2、タグ比較回路31−1及び31−2並びに35−1及び35−2、及び空きウェイチェック回路32−1及び32−2を含む。最下位キャッシュメモリ14は更に、追出しウェイ選択回路33−1及び33−2、アドレス復元回路34−1及び34−2、タグ生成回路36−1乃至38−1及び36−2乃至38−2、セレクタ39−1乃至42−1及び39−2乃至42−2を含む。最下位キャッシュメモリ14は更に、ヒット判定回路43、マージフラグチェック回路44、インデックス比較回路45、及び調停回路46を含む。最下位キャッシュメモリ14は更に、キャッシュフィルアドレスバッファ47、キャッシュフィルデータバッファ48、データ応答バッファ49、及びライトバックアドレス&データバッファ50を含む。最下位キャッシュメモリ14は更に、SRAMアクセス制御回路51、LRU更新制御回路52、キャッシュ書込制御回路53、キャッシュ応答制御回路54、MACアクセス制御回路55、及びセレクタ56を含む。
偶数バンク23−1は、デコーダ60−1、マージフラグアレイ61−1、LRUフラグアレイ62−1、有効フラグアレイ63−1、タグアレイ64−1、データアレイ65−1、及びバッファ66−1乃至70−1を含む。奇数バンク23−2は、デコーダ60−2、マージフラグアレイ61−2、LRUフラグアレイ62−2、有効フラグアレイ63−2、タグアレイ64−2、データアレイ65−2、及びバッファ66−2乃至70−2を含む。
なお図2において、実線で示す信号線は制御信号の流れを示し、点線で示す信号線はアドレス信号の流れを示し、2重線で示す信号線はデータ信号の流れを示す。また各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。ハードウェアの場合、各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。ソフトウェアの場合、各機能ブロックは、他のブロックと論理的にある程度分離された1つのソフトウェアモジュールであってもよいし、或いは他のブロックと論理的に一体となったソフトモジュール中の1つの機能を示したものであってもよい。
偶数バンク23−1は偶数インデックス側のキャッシュデータを格納し、奇数バンク23−2は奇数インデックス側のキャッシュデータを格納する。図2に示す例では、偶数バンク23−1及び奇数バンク23−2の各々において、2個のウェイが設けられているが、ウェイの数は2に限られることなく、1を含む任意の数であってよい。図2に示す例では、キャッシュフィル動作やライトバック動作において、単一キャッシュラインでのメインメモリへのデータアクセス、又は連続する2つのキャッシュラインを一纏まりとしたメインメモリへのデータアクセスが可能である。これは限定を意図しない一例であり、3個以上の連続複数キャッシュラインを一纏まりとしたメインメモリへのデータアクセスを実行するように、キャッシュメモリが設計されてもよい。例えば4個の連続複数キャッシュラインを一纏まりとしたメインメモリへの読み書きアクセスを可能とする場合には4個のバンクを設け、これら4個のバンクのそれぞれが、モジュロ4が1、2、3、及び4であるインデックスのキャッシュデータを格納してよい。
以下に、基本的なキャッシュメモリの動作について、偶数バンク23−1を例にとり説明する。なお同様のキャッシュメモリ動作が、奇数バンク23−2に対しても実行される。
偶数バンク23−1のデータアレイ65−1の各配列要素には、メインメモリからコピーされたデータが格納される。メインメモリからデータアレイへのデータのコピーはキャッシュライン単位で実行される。メインメモリのメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュメモリの容量はメインメモリの容量よりも小さいので、メインメモリのメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。アドレスの全ビットのうちで、所定数の中位ビットがキャッシュメモリのインデックスとなり、それより上位に位置するビットがキャッシュメモリのタグとなる。
タグアレイ64−1は、インデックス毎にキャッシュデータを格納する。より具体的には、タグアレイ64−1は、各インデックスに対して、複数のウェイに対応する複数のタグ(図2の例では2個のタグ)を格納している。データをアクセスする場合、アクセス先を示すアドレス(リクエストアドレス)が、上位のキャッシュ又は演算部から、アドレスバッファ21に供給される。このリクエストアドレス中のインデックス部分を偶数インデックス生成回路22−1により抽出し、この抽出されたインデックス部分をデコーダ60−1によりデコードし、アクセス先に対応する1つのインデックスを指定する。指定されたインデックスの複数のウェイのタグが、タグアレイ64−1からバッファ69−1を介して読み出され、データバス選択回路27−1及び28−1を介して、タグ比較回路31−1に供給される。また、指定されたインデックスの複数のウェイのデータが、データアレイ65−1からバッファ70−1を介して読み出され、データバス選択回路29−1及び30−1を介して、セレクタ39−1に供給される。
アドレスバッファ21から供給されるアクセス先のアドレスから、タグ生成回路37−1がリクエストアドレスのタグを抽出する。タグ比較回路31−1は、この抽出されたアクセス先のタグとタグアレイ64−1から読み出された複数のタグとを比較して、ビットパターンが一致するか否かを判断する。タグアレイ64−1から読み出した複数のウェイの何れかのタグが一致する場合には、当該アクセスはキャッシュヒットとなる。読み出した複数のウェイの何れのタグについても一致しない場合には、当該アクセスはキャッシュミスとなる。
キャッシュヒットの場合、該当インデックスの該当ウェイ(タグが一致したウェイ)に対応するキャッシュデータ(1キャッシュライン分の所定ビット数のデータ)が、セレクタ39−1により選択される。この選択動作は、タグ比較回路31−1からセレクタ39−1に供給される一致したタグを示す情報に基づいて行われる。このキャッシュデータは、データ応答バッファ49を介して上位のキャッシュ又は演算部に出力される。
キャッシュミスの場合には、メインメモリに格納されている当該アクセスの対象であるデータを、データアレイ65−1の該当するキャッシュラインに転送する。この際、該当インデックスの全てのウェイにおいて有効なキャッシュデータが存在する場合には、最も必要性の低いデータ(例えば最後にアクセスされてから最も時間が経過しているデータ)を、アクセス対象のデータで置き換える処理が実行される。この置き換え処理時に、ライトバック動作を実行し、置き換えられる方のデータが上書きされ消えてしまう前に当該データをメインメモリに書き込んで、キャッシュメモリの内容をメインメモリに反映させる。LRUアレイ62−1は、最後にアクセスされてから最も時間が経過しているデータのウェイを記憶しておく領域である。また有効フラグアレイ63−1は、データアレイ65−1の各々のデータ毎に、データが有効か否かを示すフラグを記憶しておく領域である。
キャッシュミスの場合の具体的な動作は、大略以下の通りである。空きウェイチェック回路32−1が、有効フラグアレイ63−1からの有効フラグデータに基づいて、空きウェイ(即ち有効フラグが無効状態を示しており利用可能なウェイ)が存在するか否かをチェックする。空きウェイが存在する場合、メインメモリの指定アドレス(リクエストアドレス)からデータを読み出し、読み出したデータをデータアレイ65−1の当該空きウェイに格納する。空きウェイが存在しない場合、追出しウェイ選択回路33−1が、LRUアレイ62−1からのLRU情報に基づいて、追い出し対象のウェイを選択する。詳細については後述するが、データアレイ65−1から読み出された複数のウェイに対応する複数のキャッシュデータのうち、上記追い出し対象ウェイに対応するキャッシュデータがセレクタ41−1により選択される。選択されたデータは、ライトバックアドレス&データバッファ50及びメモリアクセスコントローラ15を介して、メインメモリに書き込まれる。その後、メインメモリの指定アドレス(リクエストアドレス)からデータを読み出し、読み出したデータを、データアレイ65−1中の追い出したウェイに格納する。
図2に示す最下位キャッシュメモリ14では、キャッシュフィル動作として、単一キャッシュラインでのメインメモリからのデータ読出し、又は連続する2つのキャッシュラインを一纏まりとしたメインメモリからのデータ読出しが可能である。またライトバック動作においても同様に、単一キャッシュラインでのメインメモリへのデータ書き込み、又は連続する2つのキャッシュラインを一纏まりとしたメインメモリへのデータ書き込みが可能である。このようにして、単一キャッシュラインでのメインメモリへの連続アクセスと、連続キャッシュラインでのメインメモリへの連続アクセスとが実行され、メインメモリへの連続アクセスのデータのサイズが可変となる。なお以後の説明において、キャッシュラインのことを単にラインと呼ぶ。なお前述のように一纏まりとする単位は、2ラインに限定されるものではなく、3ライン以上であってもよい。
キャッシュフィル動作を単一ライン単位とするか連続2ライン単位とするかは、上位装置(例えば上位キャッシュ)からのアクセス命令により指定される。上位装置は、1ラインよりも小さいサイズのデータを必要とする場合には1ラインでのキャッシュフィル動作をリクエストし、1ラインよりも大きいサイズのデータを必要とする場合には連続2ラインでのキャッシュフィル動作をリクエストする。ライトバック動作において、単一ライン単位の書き込み動作とするか連続2ライン単位の書き込み動作とするかは、書き込み対象のラインのデータ(キャッシュフィルにより追い出されるデータ)が、他のラインと一纏まりとなっているか否かに依存する。書き込み対象の1つのラインのデータが、他の1つのラインと一纏まりとなっている場合には、これらの2つのラインを一纏まりとして、ライトバック動作を実行する。書き込み対象の1つのラインのデータが、他のラインと一纏まりとなっていない場合には、この1つのライン単独で、ライトバック動作を実行する。
あるラインのデータが他のラインのデータと一纏まりとなっているか否かは、管理データアレイに格納する管理データにより指定する。マージフラグアレイ61−1は、管理データアレイの一例であり、データアレイ65−1のキャッシュデータ毎に第1の状態又は第2の状態の何れかを示すマージフラグ(管理データの一例)を格納する。第1の状態は、対象キャッシュデータが単一ライン状態であることを示し、第2の状態は、対象キャッシュデータが他のラインと一纏まりである連続ライン状態であることを示す。なお第1の状態は例えばフラグの値0に相当し、第2の状態はフラグの値1に相当してよい。以降の説明において、マージフラグが第2の状態の場合に、マージフラグが「設定されている」、「セットされている」、又は「存在する」等と表現する場合がある。またマージフラグが第1の状態の場合に、マージフラグが「設定されていない」、「セットされていない」、又は「存在しない」等と表現する場合がある。
キャッシュ書込制御回路53は、単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイ65−1に格納する場合にはマージフラグアレイ61−1の対応するマージフラグを第1の状態とする。キャッシュ書込制御回路53は更に、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインをデータアレイ65−1に格納する場合にはマージフラグアレイ61−1の対応するマージフラグを第2の状態とする。MACアクセス制御回路55は、追い出し対象キャッシュデータのライトバック時に、マージフラグアレイ61−1の対応するマージフラグが第1の状態を示す場合には、追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成する。MACアクセス制御回路55は更に、マージフラグアレイ61−1の対応するマージフラグが第2の状態を示す場合には、連続複数ラインを書き込む要求を生成する。具体的には、MACアクセス制御回路55は、追い出し対象キャッシュデータと一纏まりとなるデータアレイ65−1のキャッシュデータと追い出し対象キャッシュデータとを、連続複数ラインとして書き込む要求を生成する。
以上の動作は、偶数バンク23−1側についての動作であるが、奇数バンク23−2側についても同様の動作が実行される。なお上記説明において、一纏まりとなるデータとは、1つの偶数インデックスのキャッシュデータと、それに隣接する1つの奇数インデックスのキャッシュデータとである。例えばある偶数インデックスのキャッシュデータが追い出し対象となり、その偶数インデックスのキャッシュデータがマージフラグにより第2の状態であることが示される場合、隣接奇数インデックスの対応キャッシュデータが一纏まりとなる相手方データである。同様に、ある奇数インデックスのキャッシュデータが追い出し対象となり、その奇数インデックスのキャッシュデータがマージフラグにより第2の状態であることが示される場合、隣接偶数インデックスの対応キャッシュデータが一纏まりとなる相手方データである。一纏まりとなる相手方データを特定する方法は、追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータをデータアレイ65−1から選択すればよい。
上記の選択動作が、アドレス復元回路34−1及び34−2、タグ生成回路38−1及び38−2、セレクタ42−1及び42−2、及びタグ比較回路35−1及び値35−2により実現される。具体的には、偶数インデックス側で追い出し対象となったキャッシュデータがある場合、そのデータに対応するタグをアドレス復元回路34−1に供給し、アドレス復元回路34−1により追い出し対象データのアドレスを復元する。即ち、アドレスバッファ21からのアドレス信号と、追い出し対象データに対応するタグとを組み合わせることにより、追い出し対象データのアドレスを復元する。この復元アドレスは、セレクタ42−2を介してタグ生成回路38−2に供給され、タグ生成回路38−2が追い出し対象データのタグを生成する。タグ比較回路35−2は、奇数バンク23−2のタグアレイ64−2から読み出された複数のタグとタグ生成回路38−2により生成されたタグとを比較し、タグが一致するウェイを特定する。この一致するウェイを特定する情報がセレクタ41−2に供給され、セレクタ41−2により一纏まりとなる相手側キャッシュデータが選択されて、ライトバックアドレス&データバッファ50に格納される。なお偶数インデックス側でも、タグ比較回路35−1が、偶数バンク23−1のタグアレイ64−1から読み出された複数のタグとタグ生成回路38−2により生成されたタグとを比較し、タグが一致するウェイを特定する。この一致するウェイを特定する情報がセレクタ41−1に供給され、セレクタ41−1により追い出し対象キャッシュデータが選択されて、ライトバックアドレス&データバッファ50に格納される。また偶数インデックス側で復元された復元アドレスと奇数インデックス側で復元された復元アドレスとは、双方共にライトバックアドレス&データバッファ50に供給される。なお奇数インデックス側で追い出し対象となったキャッシュデータがある場合は、上記の動作が偶数側と奇数側とで逆になる以外は、上記の動作と同様の動作が実行される。
ヒット判定回路43は、タグ比較回路31−1及び31−2からのタグ比較結果に基づいて、ヒットしたバンク及びミスしたバンクを示す情報を生成する。この際、後述するように、ヒット判定回路43はリクエストアドレスの一部であるインデックスの最下位ビットを参照することにより、真性のヒットのみを検出する。ヒット判定回路43は、ヒットしたバンク及びミスしたバンクを示す情報を、調停回路46、セレクタ56、LRU更新制御回路52、キャッシュ書込制御回路53、キャッシュ応答制御回路54、及びMACアクセス制御回路55に供給する。マージフラグチェック回路44は、追出しウェイ選択回路33−1及び33−2から供給される追い出しウェイを示す情報に基づいて、追い出し対象のウェイにマージフラグが設定されているか否かをチェックする。チェック結果は調停回路46に供給される。インデックス比較回路45は、インデックスを比較する。比較結果は調停回路46に供給される。調停回路46は、ヒットしたバンク及びミスしたバンクを示す情報、追い出し対象ウェイのマージフラグの有無に関する情報等に基づいて、選択信号をセレクタ42−1及び42−2に供給する。
SRAMアクセス制御回路51は、偶数バンク23−1及び奇数バンク23−2に対して、マージフラグアレイ、LRUアレイ、有効フラグアレイ、タグアレイ、及びデータアレイの読み書きを制御する。SRAMアクセス制御回路51は、上位の記憶階層(キャッシュ)からリクエストが発生すると、それぞれのアレイからバッファにデータを読み出す。またSRAMアクセス制御回路51は、メモリアクセスコントローラ15から応答が返り、バンクのバッファにデータがセットされると、対応するアレイにデータを書き込む。
LRU更新制御回路52は、1ラインデータ要求時又は1ラインキャッシュフィル要求時には、リクエストがヒットした場合、ヒットしたバンク及びウェイを記憶し、リクエストがミスした場合、ミスしたバンクの空きウェイ又は追い出しウェイを記憶する。LRU更新制御回路52は更に、2ラインキャッシュフィル要求時には、リクエストがヒットしたバンクについてヒットしたウェイを記憶し、ミスしたバンクについて空きウェイ又は追い出しウェイを記憶する。なお空きウェイがあるにもかかわらず追い出しがあった場合は空きウェイを優先する。LRU更新制御回路52はまた、メインメモリから読み出したデータのアレイへの書き込み時には、記憶したバンク及びウェイ番号を基にLRUアレイを更新する。
キャッシュ書込制御回路53は、1ラインデータ要求時又は1ラインキャッシュフィル要求時には、ミスした場合、ミスしたバンクについて空きウェイ又は追い出しウェイを記憶する。他方のバンクについてマージフラグ要因で追い出しが発生した場合、キャッシュ書込制御回路53は、その追い出しウェイを記憶する。キャッシュ書込制御回路53は、2ラインキャッシュフィル要求時には、ヒットしたバンクについてはヒットしたウェイを記憶し、マージフラグ要因で追い出しが発生した場合は、追い出しウェイも記憶する。ミスしたバンクについては、キャッシュ書込制御回路53は、空きウェイ又は追い出しウェイを記憶する。
キャッシュ書込制御回路53は、1ラインデータ要求時又は1ラインキャッシュフィル要求時に、キャッシュフィルが発生するバンクについては、記憶した空きウェイ又は追い出しウェイに一致するバッファに、タグ、データ、及び有効フラグをセットする。他方のバンクにおいて追い出しが発生していた場合、キャッシュ書込制御回路53は、追い出したウェイに一致するバッファに無効フラグをセットする。キャッシュ書込制御回路53は、2ラインキャッシュフィル要求時に、ヒットしたウェイが記憶されていれば当該ウェイに一致するバッファにマージフラグをセットする。但しマージフラグ要因での追い出しウェイが記憶されている場合、キャッシュ書込制御回路53は、当該ウェイに一致するバッファに無効フラグをセットする。ミスしたバンクについて空きウェイ又は追い出しウェイが記憶されていれば、キャッシュ書込制御回路53は、当該ウェイに一致するバッファにタグ、データ、有効フラグ、及びマージフラグをセットする。なおここでいうバッファとは、バッファ66−1乃至70−1及びバッファ66−2乃至70−2のことである。バッファに対するフラグのセットは、マージフラグ制御回路(MFC)24−1及び24−2、LRU制御回路(LC)25−1及び25−2、及び有効フラグ制御回路(VFC)26−1及び26−2により行われる。
キャッシュ応答制御回路54は、1ラインデータ要求時に、キャッシュヒットした場合、上位の記憶階層に応答を返し、キャッシュミスした場合、メモリアクセスコントローラ15からデータが返されたときに応答を返す。
MACアクセス制御回路55は、1ラインデータ要求時又は1ラインキャッシュフィル要求時に、キャッシュミスが発生すると、通常の1ライン分のデータ読み出し要求をメモリアクセスコントローラ15に送る。またデータ要求のときは、MACアクセス制御回路55は更に、データ応答バッファ49にデータを返すように指示する。MACアクセス制御回路55は更に、追い出し対象データにマージフラグがない場合は、通常の1ライン分のデータ書き込み要求をメモリアクセスコントローラ15に送る。追い出し対象データに マージフラグがある場合は、MACアクセス制御回路55は、マージアクセスとして2ライン分のデータの書き込み要求をメモリアクセスコントローラ15に送る。
MACアクセス制御回路55は、2ラインキャッシュフィル要求時に、両バンクともミスが発生した場合、マージアクセスとして2ライン分の読み出し要求をメモリアクセスコントローラ15に送る。片方のバンクのみミスが発生した場合、MACアクセス制御回路55は、ミスしたバンク側のデータのみ通常アクセスとして1ライン分の読み出し要求をメモリアクセスコントローラ15に送る。MACアクセス制御回路55は更に、2ラインキャッシュフィル要求時に、片方のバンクのみ追い出しが発生し且つ追い出し対象データにマージフラグがない場合は、通常の1ライン分のデータ書き込み要求をメモリアクセスコントローラ15に送る。何れかのバンクの追い出し対象データにマージフラグがある場合は、MACアクセス制御回路55は、マージアクセスとして2ライン分のデータの書き込み要求をメモリアクセスコントローラ15に送る。また両バンクで追い出しが発生し且つ追い出し対象データにマージフラグがない場合は、MACアクセス制御回路55は、通常アクセスとして独立した2ライン分のデータの書き込み要求をメモリアクセスコントローラ15に送る。
図3は、1ラインデータ要求時又は1ラインキャッシュフィル要求時の最下位キャッシュメモリ14の動作の一例を示すフローチャートである。ステップS1で、上位の記憶階層からの1ラインデータ要求又は1ラインキャッシュフィル要求が到来する。ステップS2で、偶数バンク23−1及び奇数バンク23−2に同時にアクセスして、それぞれのバンクからマージフラグ、LRU情報、有効フラグ、タグ、及びキャッシュデータを読み出す。なお偶数インデックスはリクエストアドレスの切捨てにより生成し、奇数インデックスはリクエストアドレスの切り上げにより生成してよい。ステップS3で、読み出されたタグとリクエストアドレスから生成されたタグを比較する。この比較はタグ比較回路31−1及び31−2により実行される。
ステップS4で、リクエストアドレスの一部であるインデックスの最下位ビット(偶数か奇数かを決めるビット)が示す方のバンクにおいてタグが一致しているか否かを、ヒット判定回路43により判定する。例えば、リクエストアドレスが偶数のとき、偶数バンクでタグが一致すると真性のヒットになる。リクエストアドレスが偶数のときに奇数バンクでタグが一致しても、それはアドレスが1増加された位置におけるヒットであり、真性のヒットではない。
キャッシュヒットした場合は、ステップS5で、ヒットしたバンクのLRUを更新する。また上位階層からのリクエストがデータ要求であるときは更に、ステップS6で、ヒットしたデータをデータ応答バッファ49に書き込む。ステップS7で、上位の記憶階層に完了の応答を返す(フィルリクエストの時は実行しなくてよい)。
キャッシュミスした場合は、ステップS8で、空きウェイを判定する。空きウェイがある場合は、後述するフィル処理A−1を実行する。空きウェイがない場合は、ステップS9で、追い出しウェィを選択する。なお両方のバンクで空きウェイを選択するが、リクエストアドレスと一致するバンクにおいてのみ正しい動作が実行されることになる。
ステップS10で、選択されたウェイにマージフラグがあるか否かをチェックする。マージフラグがない場合、ステップS11で、リクエストアドレスの奇数又は偶数と一致する方のバンクの追い出しウェイに対応するデータを、ライトバックアドレス&データバッファ50に書き込む。なおこの際、調停回路46は、マージフラグがない場合、リクエストアドレスの奇数又は偶数が一致する方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ42−1及び42−2に選択信号を出す。調停回路46は更に、1ラインのみのライトバックである旨をMACアクセス制御回路55に通知する。ステップS12で、1ラインのライトバックデータの追い出しが完了したことを、MACアクセス制御回路55からメモリアクセスコントローラ15に通知する。その後、後述するフィル処理A−1を実行する。
マージフラグがある場合は、ステップS13で、リクエストアドレスの奇数又は偶数と一致する方のバンクの追い出しウェイに対応するデータと、それと対になる他バンクのデータとを、ライトバックアドレス&データバッファ50に書き込む。即ち、追い出し対象ラインとアドレスが連続するラインが他バンクに存在するので、その他バンクの対になるデータもライトバック対象としてライトバックアドレス&データバッファ50に格納する。この際、調停回路46は、マージフラグがある場合、リクエストアドレスの奇数又は偶数が一致する方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ42−1及び42−2に選択信号を出す。例えば、リクエストアドレスが偶数のとき、タグ比較回路35−1及び35−2の両方に、偶数バンクのアドレス復元器34−1のアドレスを供給する。調停回路46は更に、連続2ラインのマージアクセス対象のライトバックである旨をMACアクセス制御回路55に通知する。ステップS14で、連続2ラインのライトバックデータの追い出しが完了したことを、MACアクセス制御回路55からメモリアクセスコントローラ15に通知する。その後、後述するフィル処理A−2を実行する。
図4は、キャッシュフィル処理の一例を示すフローチャートである。フィル処理A−1の場合、ステップS15で、メモリアクセスコントローラ15から読み出されたデータを該当するバンクの空きウェイに格納すると共に、LRUを更新する。フィル処理A−2の場合、ステップS16で、メモリアクセスコントローラ15から読み出されたデータを該当するバンクの空きウェイに格納すると共に、他バンク側では空になったウェイの有効フラグアレイに無効を示すデータを書き込む。更に、LRUを更新する。その後、ステップS17で、データ要求の場合には、データ応答バッファ49にもデータを書き込み、上位の記憶階層に完了の応答を返す。
図5は、2ラインキャッシュフィル要求時の最下位キャッシュメモリ14の動作の一例を示すフローチャートである。ステップS21で、上位の記憶階層からの連続2ラインのキャッシュフィル要求が到来する。ステップS22で、偶数バンク23−1及び奇数バンク23−2に同時にアクセスして、それぞれのバンクからマージフラグ、LRU情報、有効フラグ、タグ、及びキャッシュデータを読み出す。なお2ラインのキャッシュフィル要求の場合は、リクエストアドレスは常に偶数アドレスである。ステップS23で、読み出されたタグとリクエストアドレスから生成されたタグを比較する。この比較はタグ比較回路31−1及び31−2により実行される。
ステップS24で、両方のバンクにおいてタグが一致しているか否かを、ヒット判定回路43により判定する。両方のバンクにおいてキャッシュヒットした場合は、ステップS25で、両方のバンクにおいてLRUを更新する。
少なくとも1つのバンクにおいてタグが不一致の場合、ステップS26で、両方のバンクにおいてタグが不一致か否かを判定する。片方のバンクのみでミスの場合は、後述のミス側フィル処理C−1を実行する。両方のバンクにおいてミスの場合は、ステップS27で、両方のバンクにおいて空きウェイのチェックを行う。両方のバンクに空きがある場合は、後述するフィル処理B−1を実行する。
少なくとも一方のバンクにおいて空きが無い場合、ステップS28で、両方のバンクで追い出しが必要か否かを判定する。即ち、両方のバンクとも空きウェイがないか、或いは片方だけ空きウェイがないのか、を判定する。片方のバンクでのみ追い出しが必要な場合、後述するフィル処理C−2を実行する。
両方のバンクで追い出しが必要な場合、ステップS29で、両方のバンクのそれぞれにおいて、追い出しウェイを選択する。その後ステップS30で、マージフラグの状態を判定する。マージフラグの状態としては、両バンクともマージフラグが存在する場合、片方のバンクにだけマージフラグが存在する場合、両方のバンクでマージフラグが存在しない場合がある。
両方のバンクにおいてマージフラグが存在する場合、ステップS31で、偶数バンクから選択された追い出しウェイのデータをライトバックアドレス&データバッファ50に書き込む。更に、奇数バンクから対になるデータを追い出し、ライトバックアドレス&データバッファ50に書き込む。なお一方のバンクのラインに対してアドレスが連続するラインが他方のバンクに存在するが、両方のバンクにおいてLRUに基づいて追い出しウェイを選択した際に、互いに対になる連続2ラインに相当するウェイが追い出し対象として選択されているとは限らない。そのためここでは、偶数バンクの結果を優先して使用している。代替的に、偶数バンクではなく、奇数バンクの結果を優先してもよい。即ち、連続複数ラインでのキャッシュフィル要求に応じて選択された少なくとも2つの追い出し対象キャッシュデータに対してマージフラグがある場合には、少なくとも2つの追い出し対象キャッシュデータのうちの1つの追い出し対象キャッシュデータを選択する。この際、調停回路46は、偶数バンクのアドレス復元回路34−1からのデータを出力するようにセレクタ42−1及び42−2に選択信号を供給する。これにより、選択された1つの追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、選択された1つの追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータをデータアレイにおいて特定する。そして、特定されたキャッシュデータと上記選択された1つの追い出し対象キャッシュデータとをライトバック用のライトバックアドレス&データバッファ50に格納する。調停回路46は、更に、連続2ラインのマージアクセス対象のライトバックであることをMACアクセス制御回路55に通知する。
マージフラグが片方のバンクのみに存在する場合は、ステップS33で、マージフラグのあるバンクから選択された追い出しウェイのデータをライトバックアドレス&データバッファ50に書き込む。更に、他方のバンクから対になるデータを追い出し、ライトバックアドレス&データバッファ50に書き込む。上記他方のバンクにおけるLRUによる追い出しウェイの選択結果は無視される。この際、調停回路46は、マージフラグのあるバンクのアドレス復元回路からのデータを出力するようにセレクタ42−1及び42−2に選択信号を供給する。調停回路46は、更に、連続2ラインのマージアクセス対象のライトバックであることをMACアクセス制御回路55に通知する。
ステップS31及びS33に続き、ステップS32で、MACアクセス制御回路55は、連続2ラインのライトバックデータの追い出しが完了したことを、メモリアクセスコントローラ15に通知する。
マージフラグが両方のバンクにおいて存在しない場合は、ステップS34で、それぞれのバンクにおいて、LRUにより選択された追い出し対象ウェイのデータをライトバックアドレス&データバッファ50に書き込む。この際、調停回路46は、両方のバンクにおいてそれぞれのアドレス復元回路34−1及び34−2からのデータを出力するように、セレクタ42−1及び42−2に選択信号を供給する。調停回路46は更に、2ライン分のライトバックである旨をMACアクセス制御回路55に通知する。
ステップS34に続き、ステップS35で、MACアクセス制御回路55は、それぞれ独立にメインメモリに書き込むべき2ラインのライトバックデータの追い出しが完了したことを、メモリアクセスコントローラ15に通知する。
図6は、ミス側フィル処理C−1の一例を示すフローチャートである。偶数バンク側と奇数バンク側との片方のみミスした場合は、ミスした側においてキャッシュフィル処理が実行される。
ステップS41で、空きウェイがあるか否かをチェックする。空きウェイが有る場合は、後述するフィル処理B−2を実行する。空きウェイが無い場合は、ステップS42で、ミスしたバンクにおいて追い出しウェイをLRUに従って選択する。次にステップS43で、選択されたウェイにマージフラグがあるか否かをチェックする。マージフラグがない場合、ステップS44で、ミスした方のバンクの追い出しウェイに対応するデータを、ライトバックアドレス&データバッファ50に書き込む。なおこの際、調停回路46は、マージフラグがない場合、ミスした方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ42−1及び42−2に選択信号を出す。調停回路46は更に、1ラインのみのライトバックである旨及びライトバックするバンクをMACアクセス制御回路55に通知する。ステップS45で、1ラインのライトバックデータの追い出しが完了したことを、MACアクセス制御回路55からメモリアクセスコントローラ15に通知する。その後、後述するフィル処理B−2を実行する。
マージフラグがある場合は、ステップS46で、ミスした方のバンクの追い出しウェイに対応するデータと、それと対になる他バンクのデータとを、ライトバックアドレス&データバッファ50に書き込む。即ち、追い出し対象ラインとアドレスが連続するラインが他バンクに存在するので、その他バンクの対になるデータもライトバック対象としてライトバックアドレス&データバッファ50に格納する。この際、調停回路46は、マージフラグがある場合、ミスした方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ42−1及び42−2に選択信号を出す。調停回路46は更に、連続2ラインのマージアクセス対象のライトバックである旨をMACアクセス制御回路55に通知する。ステップS47で、連続2ラインのライトバックデータの追い出しが完了したことを、MACアクセス制御回路55からメモリアクセスコントローラ15に通知する。その後、後述するフィル処理B−3を実行する。
図7はフィル処理C−2の一例を示すフローチャートである。偶数バンク側と奇数バンク側との片方のみ追い出しが必要な場合(空きウェイがない場合)は、追い出しが必要な方のバンクにおいてキャッシュフィル処理が実行される。
ステップS51で、追い出しが必要な方のバンクにおいて追い出しウェイをLRUに従って選択する。次にステップS52で、選択されたウェイにマージフラグがあるか否かをチェックする。マージフラグがない場合、ステップS53で、追い出しが必要な方のバンクの追い出しウェイに対応するデータを、ライトバックアドレス&データバッファ50に書き込む。なおこの際、調停回路46は、マージフラグがない場合、追い出しが必要な方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ42−1及び42−2に選択信号を出す。調停回路46は更に、1ラインのみのライトバックである旨及びライトバックするバンクをMACアクセス制御回路55に通知する。ステップS54で、1ラインのライトバックデータの追い出しが完了したことを、MACアクセス制御回路55からメモリアクセスコントローラ15に通知する。その後、後述するフィル処理B−2を実行する。
マージフラグがある場合は、ステップS55で、追い出しが必要な方のバンクの追い出しウェイに対応するデータと、それと対になる他バンクのデータとを、ライトバックアドレス&データバッファ50に書き込む。即ち、追い出し対象ラインとアドレスが連続するラインが他バンクに存在するので、その他バンクの対になるデータもライトバック対象としてライトバックアドレス&データバッファ50に格納する。この際、調停回路46は、マージフラグがある場合、追い出しが必要な方のバンクのアドレス復元回路からのデータを出力するように、マルチプレクサ42−1及び42−2に選択信号を出す。調停回路46は更に、連続2ラインのマージアクセス対象のライトバックである旨をMACアクセス制御回路55に通知する。ステップS56で、連続2ラインのライトバックデータの追い出しが完了したことを、MACアクセス制御回路55からメモリアクセスコントローラ15に通知する。その後、後述するフィル処理B−4を実行する。
図8は、フィル処理B−1乃至B−4の一例を示すフローチャートである。図8(a)に示すフィル処理B−1では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ15から読み出された2ライン分のデータを格納すると共に、LRUを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。図8(b)に示すフィル処理B−2では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ15から読み出された1ライン分のデータを格納すると共に、LRUを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。更に、ヒットしたバンクのデータはフィルしたデータと対になるデータであるため、ヒットしたバンクの当該マージフラグアレイにもマージフラグをセットする。図8(c)に示すフィル処理B−3では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ15から読み出された1ライン分のデータを格納すると共に、LRUを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。更に、ヒットしたバンクのデータはフィルしたデータと対になるデータであるため、ヒットしたバンクの当該マージフラグアレイにもマージフラグをセットする。更に、空になったバンクの空きウェイには有効フラグを無効にセットする。図8(d)に示すフィル処理B−4では、該当するバンクの該当する空きウェイにおいて、メモリアクセスコントローラ15から読み出された2ライン分のデータを格納すると共に、LRUを更新する。更に、有効フラグに有効を示すデータをセットすると共に、マージフラグをセットする。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
10 CPU
11 DIMM
12 演算部
13 最上位キャッシュメモリ
14 最下位キャッシュメモリ
15 メモリアクセスコントローラ
43 ヒット判定回路
44 マージフラグチェック回路
45 インデックス比較回路
46 調停回路
51 SRAMアクセス制御回路
52 LRU更新制御回路
53 キャッシュ書込制御回路
54 キャッシュ応答制御回路
55 MACアクセス制御回路

Claims (10)

  1. インデックス毎にキャッシュデータを格納するデータアレイと、
    前記データアレイのキャッシュデータ毎に第1の状態又は第2の状態の何れかを示す管理データを格納する管理データアレイと、
    単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第1の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態とする書込制御回路と、
    追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第1の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成するアクセス制御回路と
    を含むメモリ装置。
  2. インデックス毎に複数のウェイに対応する複数のタグを格納するタグアレイと、
    ライトバックするキャッシュデータを格納するバッファと、
    を更に含み、前記データアレイにはインデックス毎に前記複数のウェイに対応する複数のキャッシュデータが格納され、前記追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイから選択し、前記選択されたキャッシュデータと前記追い出し対象キャッシュデータとを前記バッファに格納する請求項1記載のメモリ装置。
  3. 前記書込制御回路は、連続複数ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態とする請求項1又は2記載のメモリ装置。
  4. 連続複数ラインでのキャッシュフィル要求に応じて選択された少なくとも2つの追い出し対象キャッシュデータに対して管理データが第2の状態を示す場合には、前記少なくとも2つの追い出し対象キャッシュデータのうちの1つの追い出し対象キャッシュデータを選択し、前記選択された1つの追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記選択された1つの追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイにおいて特定し、前記特定されたキャッシュデータと前記選択された1つの追い出し対象キャッシュデータとを前記バッファに格納する請求項1乃至3記載のメモリ装置。
  5. 前記連続複数ラインは連続2ラインである請求項1乃至4いずれか1項記載のメモリ装置。
  6. 単一ラインでのキャッシュフィル要求に応じて単一ラインをデータアレイに格納する場合には前記管理データアレイの対応する管理データを第1の状態に設定し、
    連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態に設定し、
    追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第1の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を生成し、
    前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を生成する
    各段階を含むキャッシュメモリの制御方法。
  7. 前記追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイから選択し、前記選択されたキャッシュデータと前記追い出し対象キャッシュデータとをライトバック用バッファに格納する段階を更に含む請求項6記載のキャッシュメモリの制御方法。
  8. 連続複数ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態とする請求項6又は7記載のキャッシュメモリの制御方法。
  9. 連続複数ラインでのキャッシュフィル要求に応じて選択された少なくとも2つの追い出し対象キャッシュデータに対して管理データが第2の状態を示す場合には、前記少なくとも2つの追い出し対象キャッシュデータのうちの1つの追い出し対象キャッシュデータを選択し、前記選択された1つの追い出し対象キャッシュデータのインデックスの隣接インデックスにおいて、前記選択された1つの追い出し対象キャッシュデータのタグと同一のタグを有するキャッシュデータを前記データアレイにおいて特定し、前記特定されたキャッシュデータと前記選択された1つの追い出し対象キャッシュデータとをライトバック用バッファに格納する請求項6乃至9いずれか一項記載のキャッシュメモリの制御方法。
  10. 演算部と、
    キャッシュメモリと、
    メモリアクセスコントローラと
    を含み、前記キャッシュメモリは、
    インデックス毎にキャッシュデータを格納するデータアレイと、
    前記データアレイのキャッシュデータ毎に第1の状態又は第2の状態の何れかを示す管理データを格納する管理データアレイと、
    単一ラインでのキャッシュフィル要求に応じて単一ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第1の状態とし、連続複数ラインでのキャッシュフィル要求に応じて連続複数ラインを前記データアレイに格納する場合には前記管理データアレイの対応する管理データを第2の状態とする書込制御回路と、
    追い出し対象キャッシュデータのライトバック時に、前記管理データアレイの対応する管理データが第1の状態を示す場合には前記追い出し対象キャッシュデータを単一ラインとして書き込む要求を前記メモリアクセスコントローラへ送信し、前記管理データアレイの対応する管理データが第2の状態を示す場合には、前記追い出し対象キャッシュデータと一纏まりとなる前記データアレイのキャッシュデータと前記追い出し対象キャッシュデータとを連続複数ラインとして書き込む要求を前記メモリアクセスコントローラへ送信するアクセス制御回路と
    を含む演算処理装置。
JP2012153972A 2012-07-09 2012-07-09 メモリ装置、演算処理装置、及びキャッシュメモリの制御方法 Active JP5978814B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012153972A JP5978814B2 (ja) 2012-07-09 2012-07-09 メモリ装置、演算処理装置、及びキャッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012153972A JP5978814B2 (ja) 2012-07-09 2012-07-09 メモリ装置、演算処理装置、及びキャッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2014016812A true JP2014016812A (ja) 2014-01-30
JP5978814B2 JP5978814B2 (ja) 2016-08-24

Family

ID=50111435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012153972A Active JP5978814B2 (ja) 2012-07-09 2012-07-09 メモリ装置、演算処理装置、及びキャッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP5978814B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
JPH09128293A (ja) * 1995-10-27 1997-05-16 Hitachi Ltd 情報処理装置
JPH11328014A (ja) * 1998-03-20 1999-11-30 Kyushu System Joho Gijutsu Kenkyusho ブロック・サイズを変更可能なキャッシュ・メモリ・システム
JP2001175535A (ja) * 1999-12-16 2001-06-29 Matsushita Electric Ind Co Ltd 半導体記憶装置およびそれを用いたキャッシュメモリシステム
JP2007011580A (ja) * 2005-06-29 2007-01-18 Toshiba Corp 情報処理装置
WO2010116735A1 (ja) * 2009-04-10 2010-10-14 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
JPH09128293A (ja) * 1995-10-27 1997-05-16 Hitachi Ltd 情報処理装置
JPH11328014A (ja) * 1998-03-20 1999-11-30 Kyushu System Joho Gijutsu Kenkyusho ブロック・サイズを変更可能なキャッシュ・メモリ・システム
JP2001175535A (ja) * 1999-12-16 2001-06-29 Matsushita Electric Ind Co Ltd 半導体記憶装置およびそれを用いたキャッシュメモリシステム
JP2007011580A (ja) * 2005-06-29 2007-01-18 Toshiba Corp 情報処理装置
WO2010116735A1 (ja) * 2009-04-10 2010-10-14 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路

Also Published As

Publication number Publication date
JP5978814B2 (ja) 2016-08-24

Similar Documents

Publication Publication Date Title
US20240296129A1 (en) Victim cache with write miss merging
EP2992438B1 (en) Memory network
US10310976B2 (en) System and method for concurrently checking availability of data in extending memories
US20070073974A1 (en) Eviction algorithm for inclusive lower level cache based upon state of higher level cache
KR101139565B1 (ko) 인-메모리, 인-페이지 디렉토리 캐시 일관성 기법
CN107783910B (zh) 存储器系统以及处理器系统
US20090259813A1 (en) Multi-processor system and method of controlling the multi-processor system
JP4888839B2 (ja) キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
US11599483B2 (en) Dedicated cache-related block transfer in a memory system
US5893163A (en) Method and system for allocating data among cache memories within a symmetric multiprocessor data-processing system
US12093180B2 (en) Tags and data for caches
JP2010097557A (ja) セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法
CN1679006A (zh) 处理器预取以匹配存储器总线协议特性
US20210117327A1 (en) Memory-side transaction context memory interface systems and methods
US7606994B1 (en) Cache memory system including a partially hashed index
EP1604286B1 (en) Data processing system with cache optimised for processing dataflow applications
JP5978814B2 (ja) メモリ装置、演算処理装置、及びキャッシュメモリの制御方法
CN113826083A (zh) 处理器侧事务上下文存储器接口系统和方法
CN114116533B (zh) 利用共享存储器存储数据的方法
JP2010020432A (ja) キャッシュメモリ装置
US6493814B2 (en) Reducing resource collisions associated with memory units in a multi-level hierarchy memory system
JP2012038262A (ja) キャッシュメモリおよびデータ処理装置
WO2024193437A1 (zh) 缓存器及其控制方法、计算机系统
EP4071593A1 (en) Stacked cache system based on sedram, and control method and cache device
JP2009151457A (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160606

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160711

R150 Certificate of patent or registration of utility model

Ref document number: 5978814

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150