以下、図面を用いて実施形態を説明する。
図1は、演算処理装置、情報処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す情報処理装置IPE1は、演算処理装置1と、演算処理装置1に接続される主記憶装置7とを有する。演算処理装置1は、演算処理を実行するとともにメモリアクセス要求MREQを出力する演算処理部2と、演算処理部2と主記憶装置7との間に接続されるキャッシュメモリ3とを有する。キャッシュメモリ3は、制御部4、判定部5およびデータメモリ部6を有する。データメモリ部6は、主記憶装置7が記憶するデータのうちの一部を主記憶装置7のアクセス単位であるデータブロック毎に記憶する複数のブロック領域BLKを有する。
制御部4は、メモリアクセス要求MREQに含まれるアクセスアドレスADを判定部5に出力する。判定部5は、アクセスアドレスADに基づいて、主記憶装置7の記憶領域に記憶されるデータをデータメモリ部6が記憶しているかを判定し、判定結果JDGを制御部4に出力する。判定結果JDGは、要求されたデータをデータメモリ部6が記憶していること(キャッシュヒット)を示す情報または要求されたデータをデータメモリ部6が記憶していないこと(キャッシュミス)を示す情報のいずれかを含む。制御部4は、判定部5による判定結果JDGに基づいて、データメモリ部6または主記憶装置7のいずれかにアクセスする。
制御部4は、メモリアクセス要求MREQが読み出し要求を示し、判定結果JDGがキャッシュミスを示す場合、データメモリ部6ではなく主記憶装置7にアクセスし、主記憶装置7から読み出しデータRDTを読み出す。制御部4は、主記憶装置7から読み出された読み出しデータRDTを複数のブロック領域BLKのいずれかである対象ブロック領域に書き込むムーブイン処理をデータメモリ部6に実行させる。そして、制御部4は、ムーブイン処理が完了する前に読み出しデータRDTを演算処理部2に転送するバイパス処理を実行する。これにより、演算処理部2は、ムーブイン処理が完了した後に読み出しデータRDTを受信する場合に比べて、読み出しデータRDTを早く受信でき、読み出しデータRDTを用いたデータ処理を早く実行できる。また、制御部4は、演算処理部2から出力される他のメモリアクセス要求MREQ(書き込み要求)に含まれる書き込みデータWDTの対象ブロック領域への書き込みを、ムーブイン処理の実行中に抑止する。
例えば、制御部4は、書き込み要求に含まれるアクセスアドレスADがムーブイン処理の対象アドレスと一致する場合、書き込みデータWDTの対象ブロック領域への書き込みを抑止する。これにより、読み出しデータRDTが、ムーブイン処理の完了前に演算処理部2にバイパスされる場合にも、他のメモリアクセス要求に含まれる書き込みデータWDTが、データメモリ部6の対象ブロック領域に書き込まれることを抑止することができる。すなわち、対象ブロック領域に書き込まれた書き込みデータWDT(新たなデータ)が、ムーブイン処理による読み出しデータRDT(古いデータ)により上書きされることを抑止することができる。したがって、キャッシュメモリ3が誤ったデータを保持することを抑止することができ、キャッシュメモリ3のコヒーレンシを維持することができる。この結果、コヒーレンシを維持しつつ、読み出し要求のキャッシュミス時に、演算処理部2が読み出し要求を出力してから読み出しデータRDTを受信するまでの時間(読み出しレイテンシ)を従来に比べて短縮することができる。
以上、図1に示す実施形態では、キャッシュメモリ3に誤ったデータを保持させることなく、主記憶装置7からのデータを、キャッシュメモリ3に格納する前に演算処理部2にバイパスすることができ、演算処理部2の処理性能を向上することができる。
図2は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。
図2に示す情報処理装置IPE2は、CPU等のプロセッサ100およびメインメモリ500を有する。プロセッサ100およびメインメモリ500は、プリント配線板等の共通の基板に搭載される。メインメモリ500は、DRAM(Dynamic Random Access Memory)等の半導体メモリと、半導体メモリの動作を制御するメモリコントローラとを含む。プロセッサ100は、演算処理装置の一例であり、メインメモリ500は、主記憶装置の一例である。
プロセッサ100は、プロセッサコア200と、メインメモリ500に記憶する情報を一時的に保持するキャッシュメモリ400とを有する。キャッシュメモリ400は、制御部10、キャッシュタグ部20およびキャッシュデータ部30を有する。制御部10は、コマンド受信部40、検査部50、データ応答部60およびアクセス制御部70を有する。
キャッシュタグ部20は、キャッシュデータ部30に保持されるデータを管理する情報が格納される記憶部TMEMを有する。キャッシュデータ部30は、データを保持する記憶部DMEMおよびバッファ部BUF1、BUF2を有する。バッファ部BUF1は、プロセッサコア200からのデータ(書き込みデータWDT)を一時的に保持し、バッファ部BUF2は、メインメモリ500からのデータ(読み出しデータRDT)を一時的に保持する。記憶部TMEM、DMEMの例と、キャッシュメモリ400の動作の例は、図3で説明される。
コマンド受信部40は、プロセッサコア200からのコマンドCMD(読み出し要求および書き込み要求)を受信し、プロセッサコア200にコマンドCMDに対する応答を出力する。例えば、コマンドCMDに対する応答は、プロセッサコア200から出力される読み出し要求と、プロセッサコア200に出力される読み出しデータとの対応を示す情報を含む。コマンドCMDは、メモリアクセス要求の一例であり、コマンドCMDに含まれるアドレスADは、アクセスアドレスの一例である。
コマンド受信部40は、プロセッサコア200から書き込み要求を受信した場合、書き込み要求に含まれるメインメモリ500のデータの格納先を示すアドレスADを検査部50に出力し、検査部50からウエイト信号WAITを受信する。以下の説明では、書き込み要求に含まれるアドレスADをコマンド受信部40が検査部50に出力する動作は、アドレスの問い合わせと称される。アドレスの問い合わせに対応してウエイト信号WAITがアサートされた場合、コマンド受信部40は、書き込み要求(コマンドCMD)のアクセス制御部70への出力を、ウエイト信号WAITがネゲートされるまで待機する。一方、コマンド受信部40は、プロセッサコア200から読み出し要求を受信した場合、アドレスを問い合わせることなく、受信したコマンドCMDをアクセス制御部70に出力する。
コマンド受信部40は、プロセッサ200から読み出し要求(コマンドCMD)を受信した場合、アドレスの問い合わせを実行せず、検査部50は、ウエイト信号WAITをアサートしない。すなわち、読み出し要求のアクセス制御部70への出力が、ウエイト信号WAITにより、ムーブイン処理の完了まで待たされることはない。これにより、読み出し要求に基づく処理をムーブイン処理の完了まで待つ場合に比べて、プロセッサ100の処理性能を向上することができる。
なお、コマンド受信部40は、プロセッサコア200から読み出し要求を受信した場合、アドレスを問い合わせ、ウエイト信号WAITのアサート中に読み出し要求のアクセス制御部70への出力を抑止してもよい。コマンド受信部40は、書き込み要求および読み出し要求のアクセス制御部70への出力に基づいて、データ応答部60の動作を制御する制御信号DCNTをデータ応答部60に出力する。
検査部50は、読み出し要求のキャッシュミス時に、メインメモリ500からのコマンド応答CMDRに含まれるアドレスMIAD(読み出し要求に含まれるアドレスと同じ値)を保持するアドレスレジスタAREGを有する。検査部50は、アクセス制御部70からの消去指示DELに基づいて、アドレスレジスタAREGに保持しているアドレスMIADを消去し、消去の完了を示す完了通知DELCをアクセス制御部70に出力する。検査部50は、コマンド受信部40から受信するアドレスADがアドレスレジスタAREGに保持しているアドレスMIADと一致する場合、ウエイト信号WAITをアサートする。検査部50は、アドレスADがアドレスMIADと一致しない場合、ウエイト信号WAITをネゲートする。なお、消去指示DELによりアドレスレジスタAREGに保持されたアドレスMIADが消去された場合、検査部50は、ウエイト信号WAITをネゲートする。
データ応答部60は、読み出し要求のキャッシュヒット時に、キャッシュデータ部30から読み出されるデータHDTを読み出しデータRDTとしてプロセッサコア200に出力する。データ応答部60は、読み出し要求のキャッシュミス時に、メインメモリ500から読み出されるデータBDTを読み出しデータRDTとしてプロセッサコア200に出力する。すなわち、キャッシュメモリ400は、キャッシュミス時にメインメモリ500から読み出されるデータをキャッシュデータ部30とプロセッサコア200とに並列に転送するバイパス機能を有する。
データ応答部60は、読み出し要求のキャッシュミス時に、メインメモリ500から読み出されるデータが記憶部DMEMに格納される前に、データBDTをプロセッサコア200に出力する。これにより、プロセッサコア200は、メインメモリ500から読み出されたデータMIDTが記憶部DMEMに格納される前に、データBDTを受信することができ、受信したデータBDTを用いた処理を開始することができる。この結果、プロセッサコア200のデータ処理性能を従来に比べて向上することができる。データ応答部60は、書き込み要求に応答する書き込み動作において、プロセッサコア200から出力されるデータWDTをキャッシュデータ部30に出力する。
アクセス制御部70は、キャッシュデータ部30およびメインメモリ500へのアクセスを制御するとともに、メインメモリ500から読み出される読み出しデータをキャッシュデータ部30に書き込むムーブイン処理の動作タイミングを制御する。アクセス制御部70は、コマンド受信部40からコマンドCMDを受信し、コマンドCMDに基づいて実行される処理の応答をコマンド受信部40に出力する。例えば、コマンドCMDに基づいて実行される処理の応答は、プロセッサコア200から出力される読み出し要求と、プロセッサコア200に出力される読み出しデータとの対応を示す情報を含む。アクセス制御部70は、コマンド受信部40からコマンドCMDを受信した場合、コマンドCMDに含まれるアドレスADをキャッシュタグ部20に出力し、キャッシュタグ部20からヒット信号HITおよびウェイ番号WIDを受信する。
アクセス制御部70は、読み出し要求に対応するヒット信号HITがキャッシュヒットを示す場合、コマンドCMDに基づいてキャッシュデータ部30にアクセスし、キャッシュデータ部30からデータHDTを読み出す。アクセス制御部70は、読み出し要求に対応するヒット信号HITがキャッシュミスを示す場合、コマンドCMDをメインメモリ500に出力し、データを読み出す読み出し動作をメインメモリ500に実行させる。以降の説明では、読み出し動作によりメインメモリ500から読み出されるデータをキャッシュデータ部30に転送する処理は、ムーブイン処理と称される。メインメモリ500からのコマンド応答CMDRに含まれるアドレスMIADは、ムーブイン処理において検査部50に転送される。アクセス制御部70は、ムーブイン処理の完了時に消去指示DELを検査部50に出力する。
アクセス制御部70は、ムーブイン処理においてメインメモリ500から読み出されるデータを格納するデータ領域の空きがキャッシュデータ部30にない場合、データ領域からデータを追い出す追い出し処理をキャッシュデータ部30に実行させる。アクセス制御部70は、データ領域の空きの有無を、キャッシュタグ部20を検索することで判定する。アクセス制御部70は、追い出し処理により追い出されたデータがメインメモリ500に保持されているデータより新しい場合、追い出されたデータをメインメモリ500に格納する書き戻し処理をキャッシュデータ部30に実行させる。アクセス制御部70は、追い出し処理により追い出されたデータがメインメモリ500に保持されているデータと同じ場合、追い出されたデータをメインメモリ500に格納することなく破棄する。アクセス制御部70は、ムーブイン処理の実行に基づいて、キャッシュデータ部30に保持される情報を更新する。
図3は、図2に示すキャッシュタグ部20およびキャッシュデータ部30の一例を示す。図3では、キャッシュタグ部20のうち記憶部TMEMの構成と、キャッシュデータ部30のうち記憶部DMEMの構成を示す。
キャッシュデータ部30は、8個のウェイWAY(WAY0、WAY1、...、WAY7)およびウェイセレクタWSELを有する。例えば、各ウェイWAYは、プロセッサコア200から出力されるアドレスのうち、8ビットのアドレスMAD[14:7]に基づいて識別される256個のエントリを有し、各エントリは、128バイトのデータDTを記憶するデータ領域を有する。例えば、128バイトのデータDTは、メインメモリ500に読み書きされるデータのアクセス単位であるデータブロックの一例である。各ウェイWAYは、データブロックを記憶する第1のデータメモリ部の一例であり、各エントリは、第1のブロック領域の一例である。
ウェイセレクタWSELは、アクセス制御部70からのウェイ番号WIDにより示されるウェイWAYを選択し、選択したウェイWAYにおいてアドレスMAD(インデックスアドレス)により示されるデータ領域にアクセスする。以下の説明では、アドレスMAD[14:7]は中位アドレスとも称される。アドレスMADより下位のビット[6:0]を含むアドレスは下位アドレスとも称され、アドレスMADより上位のビット[40:15]を含むアドレスは、上位アドレス(UAD)とも称される。
プロセッサコア200からの読み出し要求がキャッシュヒットと判定された場合、ウェイセレクタWSELは、アクセスしたデータ領域から読み出されるデータDTのうち、下位アドレスで指定される所定数のデータHDTをデータ応答部60に出力する。読み出し要求がキャッシュミスと判定された場合、ウェイセレクタWSELは、メインメモリ500から読み出される128バイトのデータMIDTを、アドレスMAD[14:7]およびウェイ番号WIDにより示されるデータ領域に書き込む。
プロセッサコア200からの書き込み要求がキャッシュヒットと判定された場合、ウェイセレクタWSELは、データ応答部60からのデータWDTをアクセスしたデータ領域に書き込む。書き込み要求がキャッシュミスと判定された場合、ウェイセレクタWSELは、メインメモリ500から読み出される128バイトのデータMIDTにデータWDTを、下位アドレスに応じてマージする。そして、ウェイセレクタWSELは、マージした128バイトのデータを、アドレスMAD[14:7]およびウェイ番号WIDにより示されるデータ領域に書き込む。
キャッシュタグ部20は、ウェイWAY0−WAY7のそれぞれに対応する8個のタグ領域TAG(TAG0、TAG1、...、TAG7)およびアドレス比較部ACMPを有する。例えば、各タグ領域TAGは、中位アドレスMAD[14:7]に基づいて識別される256個の領域を有する。タグ領域TAGの各領域は、ウェイWAYの各データ領域の状態を示す情報MSIを記憶するフラグ領域と、26ビットの上位アドレスUAD[40:15]を記憶するアドレス領域とを有する。なお、図3では、タグ領域TAGに上位アドレスUADを書き込む経路と制御回路との記載は省略される。上位アドレスUAD[40:15]は、キャッシュデータ部30のウェイWAYのそれぞれに格納されたデータのメインメモリ500における記憶位置を特定するタグアドレスの一例である。タグ領域TAGは、上位アドレスUAD[40:15]を記憶するタグメモリ部の一例である。キャッシュタグ部20は、プロセッサコア200からのコマンドCMDに含まれるアドレスADが示すメインメモリ500の記憶領域に記憶されるデータをキャッシュデータ部30が記憶しているかを判定する判定部の一例である。
フラグ領域は、対応するウェイWAYの各データ領域に保持されているデータがメインメモリ500に保持されているデータより新しい場合、モディファイMを示す値が格納される。フラグ領域は、対応するウェイWAYの各データ領域に保持されているデータがメインメモリ500に保持されているデータと同じ場合、シェアSを示す値が格納される。フラグ領域は、対応するウェイWAYの各データ領域に保持されているデータが無効な場合、インバリッドIを示す値が格納される。
アドレス比較部ACMPは、中位アドレスMAD[14:7]に応じてタグ領域TAG0−TAG7から読み出される上位アドレスUADのいずれかが、プロセッサコア200から出力される上位アドレスUADと同じ場合、ヒット信号HITをアサートする。そして、アドレス比較部ACMPは、プロセッサコア200から出力される上位アドレスUADを保持しているタグ領域TAGの番号をウェイ番号WIDとして出力する。アドレス比較部ACMPは、タグ領域TAG0−TAG7から読み出される上位アドレスUADが、プロセッサコア200から出力される上位アドレスUADと異なる場合、ヒット信号HITをネゲートする。アドレス比較部ACMPは、アドレスMAD[14:7]に基づいてタグ領域TAGのいずれかから出力される上位アドレスUADと、コマンドCMDに含まれる上位アドレスUAD(部分アドレス)とを比較する部分アドレス比較部の一例である。
ヒット信号HITがアサートされた場合、アクセス制御部70は、キャッシュタグ部20から受信するウェイ番号WIDをキャッシュデータ部30に出力し、キャッシュデータ部30は、ウェイ番号WIDが示すウェイWAYのデータ領域にアクセスする。このように、キャッシュメモリ400は、いわゆるセットアソシエティブ方式の構造を有する。
図4は、図2に示す検査部50の一例を示す。検査部50は、図2に示すアドレスレジスタAREGに加えて、比較器CMPを有する。比較器CMPは、コマンド受信部40を介してプロセッサコア200から出力される34ビットのアドレスAD[40:7]がアドレスレジスタAREGに保持された34ビットのアドレスMIAD[40:7]と同じ場合、ウエイト信号WAITをアサートする。比較器CMPは、アドレスAD[40:7]がアドレスMIAD[40:7]と異なる場合、ウエイト信号WAITをネゲートする。
アドレスレジスタAREGは、ムーブイン処理の完了に基づいてアクセス制御部70から出力される消去指示DELに基づいて、保持しているアドレスMIADを消去し、消去の完了に基づいて、完了通知DELCをアクセス制御部70に出力する。アドレスレジスタAREGは、ムーブイン処理中にムーブイン処理の対象であるデータを記憶するメインメモリ500のアドレスを保持するアドレス記憶部の一例である。ムーブイン処理の対象であるデータを記憶するメインメモリ500のアドレスは、対象アドレスの一例である。比較器CMPは、メモリアクセス要求に含まれるアクセスアドレスを、アドレスレジスタAREGに保持された対象アドレスと比較するアドレス比較部の一例である。
図5は、図2に示す情報処理装置IPE2の動作の一例を示す。図5において、括弧内に示す数字は、メインメモリ500の各記憶領域に割り当てられたアドレス(16進数)を示す。
図5に示す例では、キャッシュメモリ400は、メインメモリ500のアドレス1000に記憶されたデータ(図6に示すD1)を保持していない。また、キャッシュメモリ400は、メインメモリ500のアドレス9000に記憶されたデータ(図6に示すD9)より新しいデータ(図6に示すD9a)を保持している(モディファイMの状態)。このため、アドレス9000のデータD9aをキャッシュデータ部30から追い出す場合、書き戻し処理によりデータD9aはメインメモリ500に書き戻される。また、キャッシュメモリ400のキャッシュデータ部30におけるアドレス1000に対応する中位アドレスMAD[14:7]により示される全てのウェイWAYのデータ領域は、データを保持しているとする。すなわち、メインメモリ500から出力される新たなデータを保持する空きのデータ領域はない(インバリッドIの状態のデータ領域は存在しない)。
まず、プロセッサコア200は、アドレス1000を含む読み出し要求をキャッシュメモリ400に出力する(図5(a))。キャッシュメモリ400は、キャッシュタグ部20の検索に基づいてキャッシュミスを判定し、読み出し要求をメインメモリ500に出力する(図5(b))。
また、メインメモリ500から読み出されるデータを格納する空きのデータ領域を確保するため、キャッシュメモリ400は、アドレス9000のデータD9aをメインメモリ500に書き戻す書き戻し要求をメインメモリ500に出力する(図5(c))。すなわち、アドレス9000のデータD9aを保持しているデータ領域を空け、メインメモリ500のアドレス1000に保持されているデータD1を空けたデータ領域に格納するリプレース処理が起動される。
データを追い出すデータ領域は、中位アドレスMADにより選択されるウェイWAY0−WAY7のデータ領域のうち、最近最も使用されていないデータを保持するデータ領域に決定される。すなわち、データを追い出すデータ領域は、LRU(Least Recently Used)手法に基づいて決定される。なお、キャッシュデータ部30に保持されたアドレス9000のデータが、メインメモリ500のアドレス9000に保持されたデータと同じ場合(シェアSの状態)、書き戻し要求が出力されることなくアドレス9000のデータの追い出しのみが実行される。
次に、キャッシュメモリ400は、読み出し要求に対応するデータ応答をメインメモリ500から受信し、データ応答に含まれるアドレス1000のデータD1を、データD9aを追い出したデータ領域に格納するムーブイン処理を開始する(図5(d))。キャッシュメモリ400は、メインメモリ500から受信したデータD1を、ムーブイン処理が完了する前に、データ応答部60を介してプロセッサコア200に出力する(データD1のバイパス)。データ応答に含まれるムーブイン処理の対象のアドレスMIAD(1000)は、図4に示す検査部50のアドレスレジスタAREGに格納される。
なお、データ応答に含まれるデータD1は、図3に示すバッファ部BUF2に格納された後、キャッシュデータ部30に設定された優先順にしたがって、データ領域に格納するムーンイン処理が実行される。このため、キャッシュデータ部30において、ムーブイン処理よりも優先度の高い処理(読み出し要求に伴う読み出し処理等)が実行される場合、または先行するムーブイン処理が実行される場合、データD1のデータ領域への格納は待たされる。データD1が格納されるデータ領域は、対象ブロック領域の一例である。
例えば、プロセッサコア200は、キャッシュメモリ400からバイパスされたデータD1を用いて演算を実行し、演算により得られたデータD1aをアドレス1000の領域に書き込む書き込み要求をキャッシュメモリ400に出力する(図5(e))。図4に示す検査部50の比較器CMPは、アドレスレジスタAREGが保持するアドレス(1000)とコマンド受信部40が受信した書き込み要求に含まれるアドレス(1000)とが互いに一致するため、ウエイト信号WAITをアサートする。このため、コマンド受信部40は、アクセス制御部70への書き込み要求の出力を保留し、保留した書き込み要求を保持する。
この後、ムーブイン処理が完了し、リプレース処理が完了する(図5(f))。アクセス制御部70は、キャッシュデータ部30によるムーブイン処理の完了に基づいて、アドレスレジスタAREGに消去指示DELを出力する。アドレスレジスタAREGは、消去指示DELに基づいて、保持しているアドレス(1000)を消去する。検査部50の比較器CMPは、アドレスレジスタAREGの消去動作により、書き込み要求に含まれるアドレス(1000)が、アドレスレジスタAREGに保持される値と一致しなくなるため、ウエイト信号WAITをネゲートする。コマンド受信部40は、ウエイト信号WAITのネゲートに基づいて、アドレス1000に対応するデータD1のムーブイン処理が完了したと判定し、保持している書き込み要求をアクセス制御部70に出力する。アクセス制御部70は、書き込み要求に含まれるアドレス1000を用いて、キャッシュタグ部20を検索し、キャッシュヒットを判定し、キャッシュデータ部30にデータの書き込みを指示する。キャッシュデータ部30は、ウェイ番号WIDが示すウェイWAYにおける中位アドレスMADが示すデータ領域に、書き込み要求に含まれるデータD1aを書き込み、書き込み処理を完了する(図5(g))。
このように、検査部50を設けることにより、ムーブイン処理により古いデータD1がキャッシュメモリ400に書き込まれる前に、書き込み要求に伴う新しいデータD1aがキャッシュメモリ400に書き込まれることを抑止することができる。すなわち、キャッシュメモリ400に書き込まれる新しいデータD1aが、ムーブイン処理による古いデータD1により上書きされることを抑止することができ、キャッシュメモリ400のコヒーレンシを維持することができる。
図6は、図5に示す動作において、キャッシュメモリ400が保持する情報の変化の一例を示す。図6は、キャッシュメモリ400を有するプロセッサ100の制御方法を示す。図6に示す符号(a)−(g)は、図5に示す符号に対応する。”−”で示す領域は、無効な情報を保持していることを示し、太枠で示す領域は、保持する情報が変化したことを示す。
図6では、説明を分かりやすくするために、図3に示すキャッシュタグ部20と、キャッシュデータ部30とが、キャッシュメモリ400としてまとめて記載される。キャッシュデータ部30は、2進数で”001 0000 0”の中位アドレスMAD[14:7]が割り当てられたデータ領域を示し、ウェイWAYの数は4つであるとする。
初期状態(a)において、キャッシュメモリ400は、アドレス9000の記憶領域に対応するデータD9aと、アドレス11000の記憶領域に対応するデータD11とを保持している。また、キャッシュメモリ400は、アドレス19000の記憶領域に対応するデータD19と、アドレス21000の記憶領域に対応するデータD21とを保持している。データD11、D19、D21は、メインメモリ500に保持されるデータと同じため、フラグ領域は、シェアSを示す情報を保持する。データD9aは、メインメモリ500に保持されるデータD9より新しいため、フラグ領域は、モディファイMを示す情報を保持する。なお、キャッシュタグ部20は、タグ領域TAG(図3)に上位アドレスUADを保持するが、図6では説明を分かりやすくするため、プロセッサコア200から出力されるアドレスを記載している。
キャッシュメモリ400は、プロセッサコア200から受信する読み出し要求RD(アドレス1000)に基づき、キャッシュミスを判定し、状態(b)において、メインメモリ500に読み出し要求RD(1000)を出力する。状態(c)において、キャッシュメモリ400は、空いているデータ領域がないため、最も使用されていないデータD9aを追い出し、空いたデータ領域に対応するフラグ領域をモディファイMからインバリッドIに変更する。また、キャッシュメモリ400は、追い出したデータD9aの状態がモディファイMであるため、メインメモリ500に書き戻し要求WB(アドレス9000,データD9a)を出力する。
状態(d)において、キャッシュメモリ400は、読み出し要求RD(アドレス1000)に応答するデータD1(アドレス1000)をメインメモリ500から受信し、ムーブイン処理を開始し、受信したデータD1をプロセッサコア200にバイパスする。また、キャッシュメモリ400は、ムーブイン処理の対象のアドレス1000をアドレスレジスタAREGに格納する。メインメモリ500は、書き戻し要求WBに含まれるデータD9aをアドレス9000の領域に書き込む。
状態(e)において、プロセッサコア200から受信する書き込み要求WR(アドレス1000、データD1a)に含まれるアドレス1000は、アドレスレジスタAREGに保持しているアドレス1000と一致する。このため、キャッシュメモリ400は、書き込み要求WRに基づく動作を保留する。状態(f)において、キャッシュメモリ400は、メインメモリ500から読み出したデータD1を、データD9aを追い出したデータ領域に書き込む。また、キャッシュメモリ400は、キャッシュタグ部20において、データD1を書き込んだデータ領域に対応する領域にシェアSを示す情報と、アドレス1000を書き込み、アドレスレジスタAREGに保持されたアドレス1000を消去する。そして、ムーブイン処理が完了する。
状態(g)において、キャッシュメモリ400は、書き込み要求に含まれるアドレス1000と、アドレスレジスタAREGに保持されるアドレスとの不一致に基づいて、書き込み要求に基づく動作を開始する。キャッシュメモリ400は、キャッシュヒットを判定し、アドレス1000に対応してデータD1を保持するデータ領域にデータD1aを上書きする。また、キャッシュメモリ400は、キャッシュタグ部20において、データD1aを書き込んだデータ領域に対応するフラグ領域をシェアSからモディファイMに変更する。そして、図5に示す一連の動作が完了する。
図7は、プロセッサコア200から読み出し要求を受信した場合の図2に示すキャッシュメモリ400の動作の一例を示す。図7は、キャッシュメモリ400を有するプロセッサ100の制御方法を示す。例えば、図7に示す動作は、キャッシュメモリ400のハードウェアにより実現される。
キャッシュメモリ400は、読み出し要求を受信した場合、ステップS102において、キャッシュヒットか否かを判定し、キャッシュヒットの場合、処理をステップS126に移行し、キャッシュミスの場合、処理をステップS104に移行する。
キャッシュミスの場合、ステップS104において、キャッシュメモリ400は、メインメモリ500に読み出し要求を出力し、処理をステップS106に移行する。ステップS106において、キャッシュメモリ400は、空いているウェイWAYがあるか否かを判定する。キャッシュメモリ400は、空いているウェイWAYがある場合、処理をステップS112に移行し、空いているウェイWAYがない場合、処理をステップS108に移行する。ステップS108において、キャッシュメモリ400は、ウェイWAYの1つに保持している追い出し対象のデータの状態がシェアSか否かを判定し、シェアSの場合、処理をステップS112に移行し、モディファイMの場合、処理をステップS110に移行する。
ステップS110において、キャッシュメモリ400は、追い出し対象のデータをメインメモリ500に書き戻す書き戻し処理を実行し、処理をステップS112に移行する。ステップS112において、キャッシュメモリ400は、読み出し要求に応答してメインメモリ500から出力されるデータを受信し、受信したデータのうち、読み出し要求に含まれるアドレスに対応するデータをプロセッサコア200にバイパスする。この後、処理をステップS116に移行される。
ステップS116において、キャッシュメモリ400は、メインメモリ500から出力されるデータを空きのウェイWAYに書き込むムーブイン処理を開始し、処理をステップS118に移行する。ステップS118において、キャッシュメモリ400は、ムーブイン処理中にプロセッサコア200から書き込み要求を受信したか否かを判定し、他の要求を受信した場合、処理をステップS120に移行し、書き込み要求を受信していない場合、処理を終了する。
ステップS120において、キャッシュメモリ400は、書き込み要求に含まれるアドレスがムーブイン処理中のアドレスと同じか否かを判定し、アドレスが同じ場合、処理をステップS122に移行し、アドレスが異なる場合、処理をステップS124に移行する。ステップS122において、キャッシュメモリ400は、ムーブイン処理が完了するまで待ち、ムーブイン処理が完了したことに基づいて処理をステップS124に移行する。ステップS124において、キャッシュメモリ400は、ステップS118で受信した書き込み要求に基づく処理を実行し、処理を終了する。
一方、キャッシュヒットした場合、ステップS126において、キャッシュメモリ400は、キャッシュヒットしたウェイWAYからデータを読み出し、処理をステップS132に移行する。ステップS132において、キャッシュメモリ400は、ウェイWAYから読み出したデータのうち、読み出し要求に含まれるアドレスに対応するデータをプロセッサコア200に出力し、処理を終了する。なお、読み出し要求がキャッシュミスした場合、ステップS112でメインメモリ500から受信したデータのうち、読み出し要求に含まれるアドレスに対応するデータがプロセッサコア200に出力される。
図8は、プロセッサコア200から書き込み要求を受信した場合の図2に示すキャッシュメモリ400の動作の一例を示す。図8は、キャッシュメモリ400を有するプロセッサ100の制御方法を示す。図7と同一または同様の処理については、詳細な説明は省略される。例えば、図8に示す動作は、キャッシュメモリ400のハードウェアにより実現される。
ステップS202、S204、S206、S208、S210、S212、S226の処理は、図7に示すステップS102、S104、S106、S108、S110、S112、S126の処理と同様である。
書き込み要求に含まれる書き込みデータは、メインメモリ500のアクセス単位であるデータブロックのサイズより小さい。このため、ステップS212の処理の後、ステップS214において、キャッシュメモリ400は、書き込み要求に含まれる書き込みデータをメインメモリ500から受信したデータブロック内にマージし、処理をステップS217に移行する。ステップS217において、キャッシュメモリ400は、マージしたデータを空きのウェイWAYに書き込むムーブイン処理を実行し、処理を終了する。
一方、ステップS202でキャッシュヒットした場合、ステップS226において、キャッシュメモリ400は、キャッシュヒットしたウェイWAYからデータを読み出し、処理をステップS228に移行する。ステップS228において、キャッシュメモリ400は、書き込み要求に含まれる書き込みデータをウェイWAYから読み出したデータにマージし、処理をステップS230に移行する。ステップS230において、キャッシュメモリ400は、マージしたデータをキャッシュヒットしたウェイWAYに書き込み、処理を終了する。
なお、キャッシュメモリ400は、ステップS217の代わりに、図7に示すステップS116、S118、S120、S122、S124を実行してもよい。この場合、アドレスが同じで新しいデータを含む書き込み要求が、ムーブイン処理中にキャッシュメモリ400に供給された場合に、新しいデータがムーブイン処理により古いデータに書き替えられることを抑止することができる。この結果、キャッシュメモリ400のコヒーレンシを維持することができる。
以上、図2から図8に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ400に誤ったデータを保持させることなく、メインメモリ500からのデータを、キャッシュメモリ400に格納する前にプロセッサコア200にバイパスすることができ、プロセッサコア200の処理性能を向上することができる。
さらに、図2から図8に示す実施形態では、検査部50のアドレスレジスタAREGは、ムーブイン処理中に、ムーブイン処理の対象のアドレスMIADを保持する。そして、検査部50の比較部CMPは、コマンド受信部40から受信する書き込み要求に含まれるアドレスADがアドレスレジスタAREGに保持しているアドレスMIADと一致する場合、ウエイト信号WAITをアサートする。これにより、制御部10は、ムーブイン処理が完了するまで、書き込み要求に伴う書き込み動作の実行を抑止することができ、キャッシュメモリ400のコヒーレンシを維持することができる。すなわち、検査部50によるアドレスADの検査で、コヒーレンシが維持されない可能性が判定された場合、書き込み要求に伴う書き込み動作の実行を抑止することで、コヒーレンシを維持することができる。
アドレスレジスタAREGに保持されたアドレスMIADは、ムーブイン処理を制御するアクセス制御部70からの消去指示DELに基づいて消去される。これにより、検査部50は、ムーブイン処理の完了に同期して生成される消去指示DELに基づいてウエイト信号WAITをネゲートすることができ、書き込み要求の受け付けの抑止期間を、ムーブイン処理期間に合わせて設定することができる。
図9は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図2に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図9に示す情報処理装置IPE3は、プロセッサ100Aおよびメインメモリ500を有する。プロセッサ100Aは、演算処理装置の一例である。プロセッサ100Aは、プロセッサコア200と、メインメモリ500に記憶する情報を一時的に保持するキャッシュメモリ300、400Aとを有する。キャッシュメモリ300は、プロセッサコア200に接続され、キャッシュメモリ400Aを介してメインメモリ500に接続される。キャッシュメモリ300の例は、図10に示される。キャッシュメモリ400Aは、キャッシュメモリ300を介してプロセッサコア200に接続される。以下の説明では、キャッシュメモリ300は、L1キャッシュとも称され、キャッシュメモリ400Aは、L2キャッシュとも称される。L1キャッシュは、データOP(オペランド)と命令INSとをそれぞれ記憶する専用の記憶領域を有し、L2キャッシュは、データOP(オペランド)と命令INSとを記憶する共通の記憶領域を有する。なお、L1キャッシュが保持しているデータOPおよび命令INSは、L2キャッシュにも保持されている。
キャッシュメモリ400Aは、制御部10A、キャッシュタグ部20およびキャッシュデータ部30を有する。キャッシュタグ部20およびキャッシュデータ部30は、図2に示すキャッシュタグ部20およびキャッシュデータ部30と同一または同様の構成を有する。制御部10Aは、コマンド受信部40A、検査部50、データ応答部60およびアクセス制御部70を有する。検査部50、データ応答部60およびアクセス制御部70は、図2に示す検査部50、データ応答部60およびアクセス制御部70と同一または同様の構成を有する。
コマンド受信部40Aは、図2に示すコマンド受信部40におけるプロセッサコア200とのインタフェース機能の代わりに、L1キャッシュとのインタフェース機能を有することを除き、図2に示すコマンド受信部40と同様の機能を有する。コマンド受信部40Aは、L1キャッシュからコマンドCMD(読み出し要求および書き戻し要求)を受信し、L1キャッシュにコマンドCMDR(リプレース要求等)を出力する。L1キャッシュとL2キャッシュとの間で入出力されるコマンドCMD、CMDRの例は、図11に示される。
図10は、図9に示すL1キャッシュの一例を示す。L1キャッシュは、L2キャッシュと同様に、キャッシュタグ部21およびキャッシュデータ部31を有する。
キャッシュデータ部31は、データOP(オペランド)を保持する2個のウェイWAY(WAY0、WAY1)と命令INSを保持する2個のウェイWAY(WAY0、WAY1)とを有する。例えば、各ウェイWAYは、プロセッサコア200から出力されるアドレスのうち、6ビットのアドレスMAD[12:7](インデックスアドレス)に基づいて識別される64個のエントリを有する。各エントリは、128バイトのデータDTを記憶するデータ領域を有する。各ウェイWAYは、メインメモリ500に読み書きされるデータのアクセス単位であるデータブロックを記憶する第2のデータメモリ部の一例であり、各エントリは、第2のブロック領域の一例である。
データOP用のウェイセレクタWSEL(OP)は、キャッシュタグ部21からのウェイ番号WIDに基づいてウェイWAYを選択し、選択したウェイWAYにおいて中位アドレスMAD[12:7]により示されるデータ領域にアクセスする。同様に、命令INS用のウェイセレクタWSEL(INS)は、キャッシュタグ部21からのウェイ番号WIDに基づいてウェイWAYを選択し、選択したウェイWAYにおいて中位アドレスMAD[12:7]により示されるデータ領域にアクセスする。キャッシュデータ部31は、データOP用と命令INS用のウェイWAYを有することを除き、図3に示すキャッシュデータ部30と同様に動作する。
キャッシュタグ部21は、データOP用のウェイWAY0−WAY1のそれぞれに対応する2個のタグ領域TAG(TAG0、TAG1)およびアドレス比較部ACMP(OP)を有する。また、キャッシュタグ部21は、命令INS用のウェイWAY0−WAY1のそれぞれに対応する2個のタグ領域TAG(TAG0、TAG1)およびアドレス比較部ACMP(INS)を有する。
例えば、各タグ領域TAGは、中位アドレスMAD[12:7]に基づいて識別される64個の領域を有する。タグ領域TAGの各領域は、ウェイWAYの各記憶領域の状態を示す情報MSIを記憶するフラグ領域と、28ビットの上位アドレスUAD[40:13]を記憶するアドレス領域とを有する。キャッシュタグ21は、データOP用と命令INS用のタグ領域TAGを有することを除き、図3に示すキャッシュタグ部20と同様に動作する。
図11は、図9に示す情報処理装置IPE3の動作の一例を示す。図5に示す動作と同様の動作については、詳細な説明は省略する。
図11に示す例では、L1キャッシュおよびL2キャッシュは、メインメモリ500のアドレス1000に記憶されたデータ(図12に示すD1)を保持していない。また、L2キャッシュは、メインメモリ500のアドレス9000に記憶されたデータ(図12に示すD9)より新しいデータ(図12に示すD9a)を保持している(モディファイMの状態)。このため、アドレス9000のデータをL2キャッシュから追い出す場合、書き戻し処理によりデータD9aはメインメモリ500に書き戻される。また、L1キャッシュにおけるアドレス1000に対応する中位アドレスMAD[12:7]により示される全てのウェイWAYのデータ領域は、データを保持しているとする。同様に、L2キャッシュにおけるアドレス1000に対応する中位アドレスMAD[14:7]により示される全てのウェイWAYのデータ領域は、データを保持しているとする。
まず、プロセッサコア200は、アドレス1000を含む読み出し要求をL1キャッシュに出力する(図11(a))。L1キャッシュは、キャッシュタグ部21の検索に基づいてキャッシュミスを判定し、L1キャッシュから追い出すデータD19をLRU手法に基づいて決定する。L1キャッシュは、追い出すデータD19(図12)を保持しているリプレース対象のウェイ番号WID(この例では、WAY0)とともに、読み出し要求をL2キャッシュに出力する(図11(b))。
そして、L1キャッシュは、リプレース対象のウェイWAY0に保持しているデータデータD19を追い出し、タグ領域TAGを更新する。データD19は、L2キャッシュおよびメインメモリ500に保持されているデータD19と同じため(シェアS)、L1キャッシュは、データD19の書き戻し要求をL2キャッシュに出力せず、データD19を破棄する。
L2キャッシュは、L1キャッシュからの読み出し要求に基づいて、キャッシュタグ部20を検索し、キャッシュミスを判定し、メインメモリ500に読み出し要求を出力する(図11(c))。すなわち、キャッシュデータ部30に保持されているデータを、メインメモリ500のアドレス1000に保持されているデータD1に置き換えるリプレース処理が起動される。
L2キャッシュは、L1キャッシュからの読み出し要求に基づいて、リプレース要求(1000、WAY0)をL1キャッシュに出力する(図11(d))。リプレース要求は、L1キャッシュに保持されているデータのうち、最近最も使用されていないデータをL2キャッシュが出力するデータで置き換える指示であり、L2キャッシュから置き換え用のデータが出力する前に出力される。また、L2キャッシュは、L2キャッシュから追い出すデータD9aをLRU手法に基づいて決定し、データD9aの書き戻し要求をメインメモリに出力する(図11(e))。
次に、L2キャッシュは、読み出し要求に対応するデータ応答をメインメモリ500から受信し、データ応答に含まれるアドレス1000のデータD1を、データD9aを追い出したデータ領域に格納するムーブイン処理を開始する(図11(f))。また、L2キャッシュは、ムーブイン処理を実行するアドレス1000をアドレスレジスタAREGに格納する。なお、ムーブイン処理は、図5と同様に、所定の優先順にしたがって実行されるため、データD1のキャッシュデータ部30への格納は待たされる。
L2キャッシュは、データD1のムーブイン処理が完了する前に、読み出し要求に対するデータ応答として、データD1をL1キャッシュに出力する(データD1のバイパス)(図11(g))。L1キャッシュは、受信したデータD1をキャッシュデータ部31に格納し、キャッシュタグ部21を更新する。また、L1キャッシュは、受信したデータD1をデータ応答としてプロセッサコア200に出力する(図11(h))。
プロセッサコア200は、L1キャッシュから受信したデータD1を用いて演算を実行し、演算により得られたデータD1aをアドレス1000の領域に書き込む書き込み要求をL1キャッシュに出力する(図11(i))。L1キャッシュは、アドレス1000のデータD1を保持しているため、キャッシュヒットを判定し、キャッシュデータ部31が保持しているデータD1を、プロセッサコア200から受信したデータD1aに置き換え、キャッシュタグ部21を更新する。
次に、プロセッサコア200は、アドレス3000を含む読み出し要求をL1キャッシュに出力する(図11(j))。L1キャッシュは、キャッシュタグ部21の検索に基づいてキャッシュミスを判定し、L1キャッシュから追い出すデータをLRU手法に基づいて決定する。この例では、L1キャッシュは、データD1aを追い出すことを決定する。L1キャッシュは、追い出すデータD1aを保持しているリプレース対象のウェイ番号WID(この例では、WAY0)とともに、アドレス3000の読み出し要求をL2キャッシュに出力する(図11(k))。
アドレス3000を含む読み出し要求を受けたL2キャッシュは、キャッシュヒットを判定し、リプレース要求(3000、WAY0)をL1キャッシュに出力する(図11(l))。また、L2キャッシュは、キャッシュデータ部30に保持するデータD3(アドレス3000)をデータ応答としてL1キャッシュに出力する(図11(m))。
L1キャッシュは、受信したデータD3をキャッシュデータ部31に格納し、キャッシュタグ部21を更新する。また、L1キャッシュは、受信したデータD3をデータ応答としてプロセッサコア200に出力する(図11(n))。L1キャッシュは、データD3を保持するために追い出したデータD1a(アドレス1000)をL2キャッシュに書き込むための書き戻し要求をL2キャッシュに出力する(図11(o))。
図9に示す検査部50は、アドレスレジスタAREGが保持するアドレス(1000)とL1キャッシュからの書き戻し要求に含まれるアドレス(1000)とが互いに一致するため、ウエイト信号WAITをアサートする。このため、L2キャッシュは、書き戻し要求に応答する書き戻し処理の開始を保留し、保留した書き戻し要求を保持する。
そして、ムーブイン処理が完了し、リプレース処理が完了する(図11(p))。L2キャッシュは、ムーブイン処理の完了に基づいて、アドレスレジスタAREGが保持しているアドレス(1000)を消去する。検査部50は、書き戻し要求に含まれるアドレス(1000)が、アドレスレジスタAREGに保持される値と一致しなくなるため、ウエイト信号WAITをネゲートする。L2キャッシュは、ウエイト信号WAITのネゲートに基づいて、アドレス1000に対応するデータD1のムーブイン処理が完了したと判定し、保持している書き戻し要求に基づく書き戻し処理を開始する(図11(q))。そして、L2キャッシュにおけるデータD1を保持するデータ領域に、新たなデータD1aが書き込まれる。
図11に示す動作では、L1キャッシュからの書き戻し要求に基づいてL2キャッシュに書き込まれる新しいデータD1aが、ムーブイン処理による古いデータD1により上書きされることを抑止することができる。この結果、L2キャッシュのコヒーレンシを維持することができる。
図12から図15は、図11に示す動作において、L1キャッシュおよびL2キャッシュが保持する情報の変化の一例を示す。図6と同一または同様の処理については、詳細な説明は省略される。図12から図15は、キャッシュメモリ400Aを有するプロセッサ100Aの制御方法を示す。図12から図15に示す符号(a)から符号(q)は、図11に示す符号に対応する。
図12から図15では、説明を分かりやすくするために、L1キャッシュのキャッシュデータ部31は、2進数で”1 0000 0”の中位アドレスMAD[12:7]が割り当てられたデータ領域を示し、ウェイWAYの数は2つであるとする。L2キャッシュのキャッシュデータ部30は、2進数で”001 0000 0”の中位アドレスMAD[14:7]が割り当てられたデータ領域を示し、ウェイWAYの数は4つであるとする。
初期状態(a)において、L1キャッシュは、アドレス19000の記憶領域に対応するデータD19と、アドレス11000の記憶領域に対応するデータD11aとを保持している。データD19は、メインメモリ500に保持されるデータと同じため、フラグ領域は、シェアSを示す情報を保持する。データD11aは、メインメモリ500に保持されるデータD11より新しいため、フラグ領域は、モディファイMを示す情報を保持する。
L2キャッシュは、アドレス9000の記憶領域に対応するデータD9aと、アドレス11000の記憶領域に対応するデータD11とを保持している。また、L2キャッシュは、アドレス19000の記憶領域に対応するデータD19と、アドレス21000の記憶領域に対応するデータD21とを保持している。データD9aは、メインメモリ500に保持されるデータD9より新しいため、フラグ領域は、モディファイMを示す情報を保持する。データD11、D19、D21のそれぞれは、メインメモリ500に保持されるデータと同じため、フラグ領域は、シェアSを示す情報を保持する。なお、図12から図15では説明を分かりやすくするため、キャッシュタグ部21およびキャッシュタグ部20に保持されるアドレスは、上位アドレスUADではなく、プロセッサコア200から出力されるアドレスを記載している。
状態(a)において、アドレス1000を含む読み出し要求RDを受信したL1キャッシュは、キャッシュミスを判定する。状態(b)において、L1キャッシュは、L1キャッシュから追い出すデータD19を決定し、キャッシュタグ部21を更新し、読み出し要求RD(1000、WAY0)をL2キャッシュに出力する。
状態(c)において、L2キャッシュは、読み出し要求RDに基づき、キャッシュミスを判定し、メインメモリ500に読み出し要求RD(1000)を出力する。状態(d)において、L2キャッシュは、L1キャッシュからの読み出し要求RDに基づいて、リプレース要求RPL(WAY0)をL1キャッシュに出力する。状態(e)において、L2キャッシュは、L2キャッシュから追い出すデータD9aを決定し、データD9aの書き戻し要求WBをメインメモリに出力する。
図13に示す状態(f)において、L2キャッシュは、読み出し要求RDに対応するデータ応答(D1、1000)をメインメモリ500から受信し、データD1をキャッシュデータ部30に格納するムーブイン処理を開始する。メインメモリ500から受信したデータD1は、データD1のムーブイン処理が完了する前にL1キャッシュにバイパスされる。また、L2キャッシュは、ムーブイン処理を実行するアドレス1000をアドレスレジスタAREGに格納する。メインメモリ500は、書き戻し要求WBに基づいて、アドレス9000が示す記憶領域にデータD9aを書き込む。なお、メインメモリ500へのデータD9aの書き込みは、状態(g)以降に実行されてもよい。
状態(g)において、L1キャッシュは、L2キャッシュから受信したデータD1をキャッシュデータ部31に格納し、キャッシュタグ部21を更新する。状態(h)において、L1キャッシュは、受信したデータD1をデータ応答としてプロセッサコア200に出力する。
状態(i)において、L1キャッシュは、データD1aをアドレス1000の領域に書き込む書き込み要求WRをプロセッサコア200から受信する。L1キャッシュは、書き込み要求WRに基づきキャッシュヒットを判定し、キャッシュデータ部31が保持しているデータD1をデータD1aに置き換え、キャッシュタグ部21を更新する。状態(j)において、L1キャッシュは、アドレス3000を含む読み出し要求RDをプロセッサコア200から受信する。
図14に示す状態(k)において、L1キャッシュは、読み出し要求RDに基づきキャッシュミスを判定し、L1キャッシュから追い出すデータD1aを決定し、キャッシュタグ部21を更新する。また、L1キャッシュは、プロセッサコア200から受信したアドレス3000を含む読み出し要求RDをL2キャッシュに出力する。
状態(l)において、アドレス3000を含む読み出し要求を受けたL2キャッシュは、キャッシュヒットを判定し、リプレース要求RPLをL1キャッシュに出力する。状態(m)において、L2キャッシュは、キャッシュデータ部30に保持するデータD3をデータ応答としてL1キャッシュに出力する。L1キャッシュは、受信したデータD3をキャッシュデータ部31に格納し、キャッシュタグ部21を更新する。
状態(n)において、L1キャッシュは、L2キャッシュから受信したデータD3をデータ応答としてプロセッサコア200に出力する。状態(o)において、L1キャッシュは、データD3を保持するために追い出したデータD1a(アドレス1000)をL2キャッシュに書き込むための書き戻し要求WBをL2キャッシュに出力する。ここで、L2キャッシュは、検査部50によるアドレスの比較(一致)に基づいて、書き戻し要求WBに応答する書き戻し処理の開始を保留する。
図15に示す状態(p)において、L2キャッシュは、データD1のムーブイン処理の完了に基づいて、アドレスレジスタAREGが保持しているアドレス(1000)を消去する。状態(q)において、L2キャッシュは、検査部50によるアドレスの比較(不一致)に基づいて、アドレス1000に対応するデータD1のムーブイン処理が完了したと判定し、保持している書き戻し要求WBに基づく書き戻し処理を開始する。そして、L2キャッシュは、キャッシュデータ部30に保持しているデータD1を新たなデータD1aに置き換える。そして、図11に示す一連の動作が完了する。なお、L2キャッシュは、図7および図8に示すフローと同様に動作する。
以上、図9から図15に示す実施形態においても、図1から図8に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ400Aに誤ったデータを保持させることなく、メインメモリ500からのデータをキャッシュメモリ400Aに格納する前にプロセッサコア200にバイパスすることができ、プロセッサコア200の処理性能を向上することができる。制御部10は、検査部50によるアドレスADの検査で、コヒーレンシが維持されない可能性が判定された場合、書き込み要求に伴う書き込み動作の実行を抑止することで、L2キャッシュのコヒーレンシを維持することができる。検査部50は、ムーブイン処理の完了に同期して生成される消去指示DELに基づいてウエイト信号WAITをネゲートすることができ、書き込み要求に伴う書き込み動作の実行の抑止期間を、ムーブイン処理期間に合わせて設定することができる。
さらに、図9から図15に示す実施形態では、L2キャッシュが、L1キャッシュを介してプロセッサコア200に接続される場合にも、L2キャッシュのコヒーレンシを維持することができる。
図16は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図2および図9に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図16に示す情報処理装置IPE4は、プロセッサ100Bおよびメインメモリ500を有する。プロセッサ100Bは、演算処理装置の一例である。プロセッサ100Bは、プロセッサコア200と、メインメモリ500に記憶する情報を一時的に保持するキャッシュメモリ300(L1キャッシュ)およびキャッシュメモリ400B(L2キャッシュ)とを有する。
キャッシュメモリ400Bは、制御部10B、キャッシュタグ部20およびキャッシュデータ部30を有する。キャッシュタグ部20およびキャッシュデータ部30は、図2に示すキャッシュタグ部20およびキャッシュデータ部30と同一または同様の構成を有する。制御部10Bは、コマンド受信部40A、検査部50B、データ応答部60およびアクセス制御部70を有する。データ応答部60およびアクセス制御部70は、図2に示すデータ応答部60およびアクセス制御部70と同一または同様の構成を有し、コマンド受信部40Aは、図9に示すコマンド受信部40Aと同一または同様の構成を有する。検査部50Bの例は、図17に示される。
図17は、図16に示す検査部50Bの一例を示す。検査部50Bは、比較部CMPで比較するアドレスのビット数が異なることを除き、図4に示す検査部50と同様の構成を有する。すなわち、検査部50BのアドレスレジスタAREGは、ムーブイン処理を実行するアドレスMIADのうち、キャッシュタグ部20およびキャッシュデータ部30のインデックスアドレスに対応する8ビットのアドレス[14:7]を保持する。比較器CMPは、コマンド受信部40Aから受信するアドレスAD[14:7]がアドレスレジスタAREGに保持されたアドレスMIAD[14:7]と一致する場合に、ウエイト信号WAITをアサートする。比較器CMPは、アドレスAD[14:7]がアドレスMIAD[14:7]と異なる場合、ウエイト信号WAITをネゲートする。
検査部50BのアドレスレジスタAREGが保持するアドレスMIADのビット数は、図4に示す検査部50のアドレスレジスタAREGが保持するアドレスMIADのビット数より少ない。また、検査部50Bの比較器CMPで比較するアドレスADのビット数は、図4に示す検査部50の比較器CMPで比較するアドレスのヒット数に比べて少ない。これにより、検査部50Bの回路規模を図4に示す検査部50の回路規模に比べて削減することができる。図17に示す検査部50Bを有するプロセッサ100Bの動作は、図11から図15に示すプロセッサ100Aの動作と同様である。
なお、図17に示すアドレスレジスタAREGは、L1キャッシュのインデックスアドレスであるアドレスAD[12:7]を保持してもよい。この場合、図17に示す比較部CMPは、アドレスレジスタAREGが保持するアドレスAD[12:7]と、L1キャッシュからのコマンドCMDに含まれるアドレスAD[12:7]とを比較し、比較結果に基づいてウエイト信号WAITを出力する。比較部CMPがアドレスAD[12:7]を比較する場合、アドレス1000とアドレス3000とは同じアドレスと認識される。このため、アドレスAD[12:7]を比較するアドレス検査部50を有する情報処理装置は、後述する図20および図21と同様に動作する。
以上、図16から図17に示す実施形態においても、図1から図15に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ400Bに誤ったデータを保持させることなく、メインメモリ500からのデータをキャッシュメモリ400Bに格納する前にプロセッサコア200にバイパスすることができ、プロセッサコア200の処理性能を向上することができる。制御部10Bは、検査部50BによるアドレスADの検査で、コヒーレンシが維持されない可能性が判定された場合、書き込み要求に伴う書き込み動作の実行を抑止することで、コヒーレンシを維持することができる。検査部50Bは、ムーブイン処理の完了に同期して生成される消去指示DELに基づいてウエイト信号WAITをネゲートすることができ、書き込み要求に伴う書き込み動作の実行の抑止期間を、ムーブイン処理期間に合わせて設定することができる。
さらに、図16から図17に示す実施形態では、検査部50BのアドレスレジスタAREGは、L2キャッシュのインデックスアドレスのビット数と同じビット数のアドレスMIAD[14:7]を保持する。検査部50Bの比較部CMPは、L2キャッシュのインデックスアドレスのビット数と同じビット数のアドレスMIAD[14:7]およびアドレスAD[14:7]を互いに比較する。これにより、検査部50Bの回路規模を図4に示す検査部50の回路規模に比べて削減することができ、L2キャッシュを、図9に示すL2キャッシュに比べて小さくすることができる。
図18は、演算処理装置、情報処理装置および演算処理装置の制御方法の別の実施形態を示す。図2、図9および図16に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図18に示す情報処理装置IPE5は、プロセッサ100Cおよびメインメモリ500を有する。プロセッサ100Cは、演算処理装置の一例である。プロセッサ100Cは、プロセッサコア200と、メインメモリ500に記憶する情報を一時的に保持するキャッシュメモリ300(L1キャッシュ)およびキャッシュメモリ400C(L2キャッシュ)とを有する。
キャッシュメモリ400Cは、制御部10C、キャッシュタグ部20およびキャッシュデータ部30を有する。キャッシュタグ部20およびキャッシュデータ部30は、図2に示すキャッシュタグ部20およびキャッシュデータ部30と同一または同様の構成を有する。制御部10Cは、コマンド受信部40C、検査部50C、データ応答部60およびアクセス制御部70を有する。データ応答部60およびアクセス制御部70は、図2に示すデータ応答部60およびアクセス制御部70と同一または同様の構成を有する。
コマンド受信部40Cは、図9に示すコマンド受信部40Aの機能に加えて、L1キャッシュからのコマンドCMDに含まれるアクセス要求とウェイ番号WIDを示す情報を、検査部50Cに出力する機能を有する。以下の説明では、コマンドCMDに含まれるアクセス要求は、単にコマンドCMDとも称される。すなわち、コマンド受信部40Cは、アドレスADとアクセス要求の種別を示すコマンドCMDとウェイ番号WIDとを検査部50Cに出力する。なお、コマンド受信部40Cは、8ビットのアドレス[14:7]ではなく、6ビットのアドレス[12:7]を検査部50Cに出力する。
検査部50Cは、ムーブイン処理の対象の6ビットのアドレス[12:7]を比較する機能に加えて、コマンドCMD(アクセス要求の種別)を比較する機能と、ウェイ番号WIDを比較する機能とを有する。検査部50Cの例は、図19に示される。
図19は、図18に示す検査部50Cの一例を示す。検査部50Cは、アドレスレジスタAREG、コマンドレジスタCREG、ウェイレジスタWREG、比較器CMP、CMPC、CMPWおよびアンド回路ANDを有する。
アドレスレジスタAREGは、ムーブイン処理を実行するアドレスMIADのうち、L1キャッシュ(図10)のキャッシュデータ部31に供給される中位アドレスMAD[12:7]に対応する6ビットのアドレス[12:7]を保持する。比較器CMPは、コマンド受信部40Cを介してL1キャッシュから出力されるアドレスAD[12:7]がアドレスレジスタAREGに保持されたアドレスMIAD[12:7]と同じ場合、ウエイト信号WAITAをアサートする。比較器CMPは、アドレスAD[12:7]がアドレスMIAD[12:7]と異なる場合、ウエイト信号WAITAをネゲートする。なお、コマンド受信部40Cは、アクセス要求の種類に拘わらず、アクセス要求に含まれるアドレスAD[12:7]を検査部50Cに出力する。
コマンドレジスタCREGは、プロセッサコア200で使用するデータ(オペランド)をメインメモリ500からL2キャッシュに格納するムーブイン処理の契機となった読み出し要求を示すコマンドCMDの情報を保持する。コマンドレジスタCREGは、読み出し要求をムーブイン処理の実行中に保持するコマンド記憶部の一例である。なお、この実施形態では、L1キャッシュは、データ(オペランド)用の読み出し要求と、命令用の読み出し要求とを別のコマンドCMDとしてL2キャッシュに出力する。そして、プロセッサコア200がフェッチする命令コードをメインメモリ500からL2キャッシュに格納するムーブイン処理の契機となった読み出し要求を示す情報は、コマンドレジスタCREGに保持されない。
比較器CMPCは、コマンド受信部40Cを介してL1キャッシュから出力されるコマンドCMDが、コマンドレジスタCREGに保持された情報により示されるコマンドCMD(データ用の読み出し要求RD)と同じ場合、ウエイト信号WAITCをアサートする。比較器CMPCは、コマンド受信部40Cを介してL1キャッシュから出力されるコマンドCMDが、コマンドレジスタCREGに保持された情報により示されるコマンドCMDと異なる場合、ウエイト信号WAITCをネゲートする。比較器CMPCは、L1キャッシュが出力するコマンドCMDを、コマンドレジスタCREGに保持された読み出し要求と比較するコマンド比較部の一例である。
ウェイレジスタWREGは、ムーブイン処理の対象のウェイWAYを示すウェイ番号WIDを保持する。ウェイレジスタWREGは、ムーブイン処理の対象のウェイWAYを示すウェイ番号WIDを、ムーブイン処理の実行中に保持するウェイ記憶部の一例である。比較器CMPWは、コマンド受信部40Cを介してL1キャッシュから出力されるウェイ番号WIDが、ウェイレジスタWREGに保持された情報により示されるウェイ番号WIDと同じ場合、ウエイト信号WAITWをアサートする。比較器CMPWは、コマンド受信部40Cを介してL1キャッシュから出力されるウェイ番号WIDが、ウェイレジスタWREGに保持された情報により示されるウェイ番号WIDと異なる場合、ウエイト信号WAITWをネゲートする。比較器CMPWは、L1キャッシュが出力するコマンドCMDに含まれるウェイ番号WIDを、ウェイレジスタWREGに保持されたウェイ番号WIDと比較するウェイ比較部の一例である。
アンド回路ANDは、ウエイト信号WAITA、WAITC、WAITWの全てがアサートされたとき、ウエイト信号WAITをアサートする。また、アンド回路ANDは、ウエイト信号WAITA、WAITC、WAITWの少なくともいずれかがネゲートされたとき、ウエイト信号WAITをネゲートする。すなわち、検査部50Cは、ムーブイン処理の対象のアドレスMIAD、コマンドCMD(RD)、ウェイ番号WIDが、L1キャッシュから出力されるアドレスAD、コマンドCMD、ウェイ番号WIDと全て一致した場合、ウエイト信号WAITをアサートする。
なお、検査部50Cは、アクセス制御部70Aから消去指示DELを受信した場合、アドレスレジスタAREG、コマンドレジスタCREGおよびウェイレジスタWREGに保持している情報を消去する。そして、検査部50Cは、アドレスレジスタAREG、コマンドレジスタCREGおよびウェイレジスタWREGからの情報の消去の完了を示す完了通知DELCをアクセス制御部70Aに出力する。
図20は、図18に示す情報処理装置IPE5の動作の一例を示す。図11に示す動作と同一または同様の動作については、詳細な説明は省略する。図20は、キャッシュメモリ400Cを有するプロセッサ100Cの制御方法を示す。
図20の動作が開始されるとき、L1キャッシュ、L2キャッシュおよびメインメモリ500は、図12の状態(a)と同じデータを保持している。図20(a)から図20(k)までの動作は、読み出し要求が、データ(オペランド)用の読み出し要求であることを除き、図11(a)から図11(k)までの動作と同様である。
図19に示す検査部50Cは、6ビットのアドレス[12:7]を比較する。読み出し要求に含まれるアドレス3000のうちの6ビット[12:7]は、ムーブイン処理の対象アドレス1000のうち、アドレスレジスタAREGに保持される6ビット[12:7]と一致する。
ここで、ムーブイン処理の対象の読み出し要求(アドレス1000)と、その後に発行される読み出し要求(アドレス3000)とは、データ(オペランド)を読み出すコマンドCMDである。また、ムーブイン処理の対象のウェイ番号WID(WAY0)は、読み出し要求(アドレス3000)に含まれるウェイ番号WID(WAY0)と同じである。このため、検査部50Cは、コマンド受信部40Cから受信するデータの読み出し要求(アドレス3000、WAY0)に基づいて、ウエイト信号WAITをアサートする。したがって、コマンド受信部40Aは、アドレス3000を含むデータの読み出し要求を、アクセス制御部70Aに出力することなく保持し、アドレス3000の読み出し要求に対応するL2キャッシュからのデータの読み出し動作の実行は抑止される。
このように、コマンド受信部40Cは、検査部50Cによる検査結果に基づいて、ムーブイン処理が完了するまで、L1キャッシュからの読み出し要求をアクセス制御部70に出力することなく保持する。これにより、6ビットのアドレス[12:7]の値が同じ複数の読み出し要求がL1キャッシュから出力される場合にも、複数の読み出し要求に対応する複数のリプレース要求がL2キャッシュからL1キャッシュに出力されることを抑止することができる。したがって、複数のデータ応答に基づいて複数の書き戻し要求がL1キャッシュからL2キャッシュに出力されることを抑止することができ、キャッシュデータ部30のバッファBUF1がオーバフローすることを抑止することができる。
次に、ムーブイン処理が完了し、リプレース処理が完了すると(図20(l))、L2キャッシュは、ムーブイン処理の完了に基づいて、アドレスレジスタAREG、コマンドレジスタCREGおよびウェイレジスタWREGが保持している情報を消去する。検査部50Cは、読み出し要求(3000、WAY0)が、アドレスレジスタAREG、コマンドレジスタCREGおよびウェイレジスタWREGに保持された情報と異なるため、ウエイト信号WAITをネゲートする。コマンド受信部40Cは、ウエイト信号WAITのネゲートに基づいて、アドレス1000に対応するデータD1のムーブイン処理が完了したと判定し、アドレス3000の読み出し要求をアクセス制御部70Aに出力する。アドレス3000の読み出し要求を受けたL2キャッシュは、キャッシュヒットを判定し、リプレース要求(3000、WAY0)をL1キャッシュに出力する(図20(m))。そして、図20(n)に示すように、L2キャッシュは、アドレス3000の読み出し要求のデータ応答(D3、(3000))をL1キャッシュに出力する。
図20(m)から図20(p)までの動作は、図11(l)から図11(o)までの動作と同じである。そして、L2キャッシュは、アドレス1000の書き戻し要求に基づく書き戻し処理を実行する(図20(q))。アドレス1000の書き戻し要求に基づく書き戻し処理は、ムーブイン処理(1000、D1)の完了後に実行されるため、図11と同様に、L2キャッシュのコヒーレンシを維持することができる。
図21は、図20に示す動作において、L1キャッシュおよびL2キャッシュが保持する情報の変化の一例を示す。図14および図15と同一または同様の処理については、詳細な説明は省略される。図21は、キャッシュメモリ400Cを有するプロセッサ100Cの制御方法を示す。図21に示す状態(m)から状態(q)は、図20に示す符号(m)から符号(q)に対応する。なお、図20に示す符号(a)から符号(l)の状態は、図12から図14に示す状態(a)から状態(l)と同様である。
図21に示す状態(m)では、図15に示す状態(p)と同様に、L2キャッシュは、データD1のムーブイン処理の完了に基づいて、コマンドレジスタCREGおよびウェイレジスタWREGが保持している情報を消去する。また、L2キャッシュは、ムーブイン処理により書き込まれたアドレス1000のデータD1を保持する。図21に示す状態(n)および状態(o)は、L2キャッシュがアドレス1000のデータD1を保持していることを除き、図14に示す状態(m)および状態(n)と同様である。
そして、状態(p)において、L1キャッシュは、データD3を保持するために追い出したデータD1a(アドレス1000)をL2キャッシュに書き込むための書き戻し要求WBをL2キャッシュに出力する。
状態(q)において、書き戻し要求WBに含まれるアドレス1000を検査部50Bが不一致と判定するため、コマンド受信部40Aは、書き戻し要求WBをアクセス制御部70に出力する。アクセス制御部70は、書き戻し要求WBに基づいて書き戻し処理を実行し、キャッシュデータ部30に保持しているデータD1をデータD1aに置き換える。そして、図20に示す一連の動作が完了する。
図22は、図18に示すプロセッサ100Cの動作の一例を示す。図22は、キャッシュメモリ400Cを有するプロセッサ100Cの制御方法を示す。図22は、ムーブイン処理を実行中の状態を示している。アドレスレジスタAREGは、アドレスAD(1000)のうちのビット[12:7]の値”1 0000 0(2進数)”を保持する。コマンドレジスタCREGは、プロセッサコア200で使用するデータ(オペランド)をメインメモリ500からL2キャッシュに格納するムーブイン処理の契機となった読み出し要求RD(DT)を示すコマンドCMDの情報を保持する。ウェイレジスタWREGは、ムーブイン処理の対象のウェイWAY0を示すウェイ番号WIDを保持する。図22に下線を付した要素は、図19に示す検査部50Cで、不一致が検出される要素を示す。
ムーブイン処理中に、L2キャッシュがL1キャッシュからアドレス3000、ウェイWAY0の読み出し要求RD(DT)を受信した場合、検査部50Cは、アドレスAD、コマンドCMDおよびウェイ番号WIDの各々の一致を検出する。なお、アドレス3000のビット[12:7]の値は、2進数で”1 0000 0”であり、アドレスレジスタAREGが保持している値と同じである。検査部50Cは、検出結果に基づいてウエイト信号WAITをアサートする。L2キャッシュは、L1キャッシュから受信したデータの読み出し要求RD(DT)をムーブイン処理の完了後に開始する。
ムーブイン処理中に、L2キャッシュがL1キャッシュからアドレス3000、ウェイWAY1の読み出し要求RD(DT)を受信した場合、検査部50Cは、ウェイ番号WIDの不一致を検出する。検査部50Cは、検出結果に基づいてウエイト信号WAITをネゲートし、L2キャッシュは、L1キャッシュから受信したデータの読み出し要求RD(DT)をムーブイン処理中に開始する。
ムーブイン処理中に、L2キャッシュがL1キャッシュからアドレス91000、ウェイWAY0の読み出し要求RD(INS)を受信した場合、検査部50Cは、コマンドCMDの不一致を検出する。なお、読み出し要求RD(INS)は、プロセッサコア200がフェッチする命令コードを読み出すためのコマンドCMDである。検査部50Cは、検出結果に基づいてウエイト信号WAITをネゲートし、L2キャッシュは、L1キャッシュから受信したデータの読み出し要求RD(INS)をムーブイン処理中に開始する。
ムーブイン処理中に、L2キャッシュがL1キャッシュからアドレス2000、ウェイWAY0の読み出し要求RD(DT)を受信した場合、検査部50Cは、アドレスADの不一致を検出する。なお、アドレス2000のビット[12:7]の値は、2進数で”0 0000 0”であり、アドレスレジスタAREGが保持している値(2進数で”1 0000 0)”と異なる。検査部50Cは、検出結果に基づいてウエイト信号WAITをネゲートし、L2キャッシュは、L1キャッシュから受信したデータの読み出し要求RD(DT)をムーブイン処理中に開始する。
図22に示すように、L1キャッシュから受信したアクセス要求に含まれる情報が、検査部50Cが保持する情報と一致する場合、L2キャッシュは、アクセス要求に基づく処理をムーブイン処理の完了後に開始する。一方、L1キャッシュから受信したアクセス要求に含まれる情報の少なくともいずれかが、検査部50Cが保持する情報と一致しない場合、L2キャッシュは、アクセス要求に基づく処理をムーブイン処理中に開始する。
このように、検査部50Cにより、アドレスだけなく、コマンドCMDおよびウェイ番号WIDを比較することで、ムーブイン処理が完了するまで実行が待たされるアクセス要求の頻度を下げることができる。この結果、アドレスのみを比較する場合に比べて、プロセッサ100Cの処理性能を向上することができる。すなわち、L2キャッシュのキャッシュデータ部30において、ムーブイン処理の対象でないデータ領域に対するアクセスが、ムーブイン処理の完了後に開始される頻度を、図16に示す実施形態に比べて下げることができる。
以上、図18から図22に示す実施形態においても、図1から図17に示す実施形態と同様の効果を得ることができる。すなわち、キャッシュメモリ400Cに誤ったデータを保持させることなく、メインメモリ500からのデータをキャッシュメモリ400Cに格納する前にプロセッサコア200にバイパスすることができ、プロセッサコア200の処理性能を向上することができる。検査部50Cは、ムーブイン処理の完了に同期して生成される消去指示DELに基づいてウエイト信号WAITをネゲートすることができ、アクセス要求のアクセス制御部70への出力を抑止する期間を、ムーブイン処理期間に合わせて設定することができる。
さらに、図18から図22に示す実施形態では、制御部10Cは、アドレスMIADの比較結果と、コマンドCMDの比較結果と、ウェイ番号WIDの比較結果とが全て一致を示す場合、ムーブイン処理が完了するまで、コマンドCMDの実行を抑止する。これにより、アドレスのみを比較する場合に比べて、ムーブイン処理の対象でないデータ領域に対するアクセスがムーブイン処理により待たされる確率を下げることができる。この結果、アドレスのみを比較する場合に比べて、プロセッサ100Cの処理性能を向上することができる。
また、アドレス[12:7]の値が同じ複数の読み出し要求がL1キャッシュから出力される場合にも、複数の読み出し要求に対応する複数のデータ応答がL2キャッシュからL1キャッシュに出力されることを抑止することができる。これにより、複数のデータ応答に基づいて複数の書き戻し要求がL1キャッシュからL2キャッシュに出力されることを抑止することができ、キャッシュデータ部30のバッファBUF1がオーバフローすることを抑止することができる。
さらに、検査部50Cは、L1キャッシュのインデックスアドレスのビット数と同じビット数のアドレスMIAD[12:7]およびアドレスAD[12:7]を互いに比較する。これにより、検査部50Cの回路規模を、アドレスの全ビットを比較する場合に比べて削減することができる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、前記演算処理部と主記憶装置との間に接続される第1のキャッシュメモリとを含む演算処理装置において、
前記第1のキャッシュメモリは、
前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第1のブロック領域を含む第1のデータメモリ部と、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第1のデータメモリ部が記憶しているかを判定する判定部と、
前記アクセスアドレスを前記判定部に出力し、前記判定部による判定結果に基づいて、前記第1のデータメモリ部または前記主記憶装置のいずれかにアクセスするとともに、前記主記憶装置から読み出される読み出しデータを前記複数の第1のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止する制御部を有することを特徴とする演算処理装置。
(付記2)
前記制御部は、
前記ムーブイン処理の実行中に、前記ムーブイン処理の対象アドレスを保持するアドレス記憶部と、
前記他のメモリアクセス要求に含まれるアクセスアドレスを、前記アドレス記憶部に保持された前記対象アドレスと比較するアドレス比較部を有し、
前記制御部は、前記アドレス比較部による比較結果が一致を示す場合、前記書き込みデータの前記対象ブロック領域への書き込みを抑止することを特徴とする付記1記載の演算処理装置。
(付記3)
前記制御部は、前記第1のデータメモリ部および前記主記憶装置へのアクセスを制御するとともに、前記ムーブイン処理の完了に基づいて、前記アドレス記憶部に保持された前記対象アドレスの消去を前記アドレス記憶部に指示するアクセス制御部を有することを特徴とする付記2記載の演算処理装置。
(付記4)
前記アドレス記憶部は、前記メモリアクセス要求に含まれるアクセスアドレスのビットの一部を含むアドレスであって、前記複数の第1のブロック領域を識別する第1のインデックスアドレスを前記対象アドレスの代わりに記憶し、
前記アドレス比較部は、前記他のメモリアクセス要求に含まれるアクセスアドレスのうち前記第1のインデックスアドレスに対応するビット値を、前記アドレス記憶部に記憶された前記第1のインデックスアドレスの値と比較することを特徴とする付記2または付記3記載の演算処理装置。
(付記5)
前記判定部は、
前記複数の第1のブロック領域に対応する複数のタグ領域を含み、前記複数の第1のブロック領域のそれぞれに格納されたデータの前記主記憶装置における記憶位置を特定するタグアドレスを前記複数のタグ領域に保持するタグメモリ部と、
前記第1のインデックスアドレスに基づいて前記複数のタグ領域のいずれかから出力されるタグアドレスと、前記メモリアクセス要求に含まれるアクセスアドレスのうち前記タグアドレスに対応する部分アドレスとを比較する部分アドレス比較部を有することを特徴とする付記4記載の演算処理装置。
(付記6)
前記演算処理装置はさらに、
前記演算処理部と前記第1のキャッシュメモリとの間に接続される第2のキャッシュメモリを有し、
前記第2のキャッシュメモリは、前記第1のキャッシュメモリが記憶するデータのうち一部のデータを前記データブロック毎に記憶する複数の第2のブロック領域を含む第2のデータメモリ部を有し、
前記アドレス記憶部は、前記メモリアクセス要求に含まれるアクセスアドレスのビットの一部を含むアドレスであって、前記複数の第2のブロック領域を識別する第2のインデックスアドレスを前記対象アドレスの代わりに記憶し、
前記アドレス比較部は、前記第2のキャッシュメモリから出力されるアクセスアドレスのうち前記第2のインデックスアドレスに対応するビット値を、前記アドレス記憶部に記憶された前記第2のインデックスアドレスの値と比較することを特徴とする付記2または付記3記載の演算処理装置。
(付記7)
前記制御部は、
前記第2のキャッシュメモリが出力するメモリアクセス要求のうちの読み出し要求を、前記読み出し要求に基づく前記ムーブイン処理の実行中に保持するコマンド記憶部と、
前記第2のキャッシュメモリが出力する他のメモリアクセス要求を、前記コマンド記憶部に保持された読み出し要求と比較するコマンド比較部を有し、
前記アドレス比較部による比較結果が一致を示し、前記コマンド比較部による比較結果が一致を示す場合、前記第2のキャッシュメモリが出力する他のメモリアクセス要求である読み出し要求に基づく読み出し動作の実行を抑止することを特徴とする付記6記載の演算処理装置。
(付記8)
前記第1のデータメモリ部は、前記複数の第1のブロック領域を各々含む複数のウェイを有し、
前記制御部は、
前記対象ブロック領域を含むウェイを示すウェイ番号を、前記ムーブイン処理の実行中に保持するウェイ記憶部と、
前記第2のキャッシュメモリが出力する他のメモリアクセス要求に含まれるウェイ番号を、前記ウェイ記憶部に保持されたウェイ番号と比較するウェイ比較部を有し、
前記アドレス比較部による比較結果が一致を示し、前記コマンド比較部による比較結果が一致を示し、前記ウェイ比較部による比較結果が一致を示す場合、前記第2のキャッシュメモリが出力する他のメモリアクセス要求に含まれる読み出し要求に基づく読み出し動作の実行を抑止することを特徴とする付記7記載の演算処理装置。
(付記9)
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と前記演算処理部に接続された第1のキャッシュメモリとを含む演算処理装置と、前記第1のキャッシュメモリを介して前記演算処理部に接続された主記憶装置を有する情報処理装置において、
前記第1のキャッシュメモリは、
前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第1のブロック領域を含む第1のデータメモリ部と、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第1のデータメモリ部が記憶しているかを判定する判定部と、
前記アクセスアドレスを前記判定部に出力し、前記判定部による判定結果に基づいて、前記第1のデータメモリ部または前記主記憶装置のいずれかにアクセスするとともに、前記主記憶装置から読み出される読み出しデータを前記複数の第1のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止する制御部を有することを特徴とする情報処理装置。
(付記10)
演算処理を実行するとともにメモリアクセス要求を出力する演算処理部と、前記演算処理部と主記憶装置との間に接続される第1のキャッシュメモリとを含み、前記第1のキャッシュメモリが、前記主記憶装置が記憶するデータのうちの一部を前記主記憶装置のアクセス単位であるデータブロック毎に記憶する複数の第1のブロック領域を含む第1のデータメモリ部を有する演算処理装置の制御方法において、
前記第1のキャッシュメモリが、
前記メモリアクセス要求に含まれるアクセスアドレスが示す前記主記憶装置の記憶領域に記憶されるデータを前記第1のデータメモリ部が記憶しているかを判定し、
判定結果に基づいて、前記第1のデータメモリ部または前記主記憶装置のいずれかにアクセスし、
前記主記憶装置から読み出される読み出しデータを前記複数の第1のブロック領域のいずれかである対象ブロック領域に書き込むムーブイン処理が完了する前に読み出しデータを前記演算処理部に転送するバイパス処理を実行し、
前記演算処理部から出力される他のメモリアクセス要求に含まれる書き込みデータの前記対象ブロック領域への書き込みを、前記ムーブイン処理の実行中に抑止することを特徴とする演算処理装置の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。