以下、実施形態について、図面を用いて説明する。
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す演算処理装置10は、例えば、命令を実行するCPU等のプロセッサである。演算処理装置10は、命令をそれぞれ実行する複数の演算処理部としての複数のプロセッサコア20と、複数のプロセッサコア20にそれぞれ対応して設けられる複数の第1キャッシュメモリ40と、複数のプロセッサコア20に共有される第2キャッシュメモリ60とを有する。
各プロセッサコア20は、対応する第1キャッシュメモリ40に保持されたデータを参照して、命令に基づく演算等を実行する。
各第1キャッシュメモリ40は、例えば、セットアソシアティブ方式のキャッシュメモリであり、第2キャッシュメモリ60に比べて高速にアクセス可能な1次キャッシュメモリである。各第1キャッシュメモリ40は、第2キャッシュメモリ60に保持されたデータの一部を保持する。例えば、第1キャッシュメモリ40は、プロセッサコア20からリード要求を受けた場合、リード要求で指定されたデータをプロセッサコア20に転送する。なお、第1キャッシュメモリ40は、リード要求で指定されたデータを保持していない場合(第1キャッシュメモリ40がキャッシュミスした場合)、第2キャッシュメモリ60にリード要求を転送する。
例えば、各第1キャッシュメモリ40は、保持したデータのタグアドレス等をキャッシュラインの番号に対応するインデックスアドレス毎に保持した情報保持部(図示せず)を参照することにより、キャッシュミスしたか否かを判定する。インデックスアドレスは、データのアクセスに使用するメモリアドレスの一部分のビット群に対応し、タグアドレスは、メモリアドレスの他の一部分のビット群に対応する。
第2キャッシュメモリ60は、例えば、セットアソシアティブ方式のキャッシュメモリであり、複数の第1キャッシュメモリ40に接続される。すなわち、第2キャッシュメモリ60は、第1キャッシュメモリ40より下位の階層の2次キャッシュメモリである。第2キャッシュメモリ60は、データ保持部62、第1情報保持部64、第2情報保持部66、分類部68、第1処理部70および第2処理部72を有する。
データ保持部62は、図示しない主記憶装置等(第2キャッシュメモリ60より下位の階層の記憶部)に記憶されたデータの一部を保持する。そして、データ保持部62は、第2キャッシュメモリ60が第1キャッシュメモリ40からリード要求を受けた場合、リード要求で指定されたデータを要求元の第1キャッシュメモリ40に転送する。
なお、リード要求で指定されたデータをデータ保持部62が保持していない場合(第2キャッシュメモリ60がキャッシュミスした場合)、第2キャッシュメモリ60は、リード要求で指定されたデータを主記憶装置等から取得する。そして、第2キャッシュメモリ60は、リード要求で指定されたデータ(主記憶装置等から取得したデータ)を、要求元の第1キャッシュメモリ40に転送するとともにデータ保持部62に格納する。データ保持部62の記憶容量は、第1キャッシュメモリ40の記憶容量に比べて大きい。
また、データ保持部62は、リプレース処理の対象のデータであるリプレースデータを第1キャッシュメモリ40から第2キャッシュメモリ60に書き戻すライトバックが実行された場合、第1キャッシュメモリ40から受けたリプレースデータを保持する。第1キャッシュメモリ40でのリプレース処理は、例えば、第2キャッシュメモリ60から転送されたデータを格納する領域が第1キャッシュメモリ40にない場合に、第1キャッシュメモリ40に保持されたデータのいずれかを追い出す処理である。リプレース処理により第1キャッシュメモリ40から追い出されるリプレースデータは、例えば、使用されていない時間が最も長いデータである。
第1情報保持部64は、複数の第1キャッシュメモリ40に保持されたデータを管理する第1管理情報を保持する。例えば、第1情報保持部64は、複数の第1キャッシュメモリ40のそれぞれに対応する複数の第1管理情報を、各第1キャッシュメモリ40のインデックスアドレス毎に保持する。すなわち、第1情報保持部64は、互いに同じ値のインデックスアドレスに対して、複数の第1キャッシュメモリ40のそれぞれに対応する複数の第1管理情報を保持する。第1情報保持部64に保持された第1管理情報は、例えば、複数の第1キャッシュメモリ40に保持されたデータの一貫性(キャッシュコヒーレンシ)を維持するために使用される。
例えば、第1管理情報は、第1キャッシュメモリ40のタグアドレスおよびタイプコード等を含む。第1管理情報に含まれるタイプコードは、第1キャッシュメモリ40のインデックスアドレスおよびタグアドレスで指定されるデータ(キャッシュライン)の状態を示す。MESIプロトコルでは、データの状態は、変更(Modified)、排他(Exclusive)、共有(Shared)、無効(Invalid)のいずれかに分類される。例えば、ストア動作等により更新されたダーティなデータの状態は、変更(Modified)に分類される。階層が互いに同じ複数の第1キャッシュメモリ40のうちの該当する1つの第1キャッシュメモリ40のみに保持され、更新されていないクリーンなデータの状態は、排他(Exclusive)に分類される。階層が互いに同じ第1キャッシュメモリ40の他の第1キャッシュメモリ40にも保持されているクリーンなデータの状態は、共有(Shared)に分類される。第1キャッシュメモリ40の初期化後のデータ、無効にされたデータ等の意味のないデータの状態は、無効(Invalid)に分類される。
なお、第1管理情報は、第1キャッシュメモリ40のタグアドレスの代わりに、第1キャッシュメモリ40のタグアドレスに対応する情報(例えば、図5に示すウェイ情報WAYLL[3:0]およびタイプコードTCL1[1:0])を有してもよい。
第2情報保持部66は、データ保持部62に保持されたデータを管理する第2管理情報を保持する。例えば、第2情報保持部66は、第2キャッシュメモリ60のタグアドレスおよびタイプコード等を含む第2管理情報を、第2キャッシュメモリ60のインデックスアドレス毎に保持する。第2キャッシュメモリ60のインデックスアドレスは、第2キャッシュメモリ60のキャッシュライン(データ保持部62のキャッシュライン)の番号に対応する。第2管理情報に含まれるタイプコードは、第1管理情報に含まれるタイプコードと同様に、第2キャッシュメモリ60のインデックスアドレスおよびタグアドレスで指定されるデータ(キャッシュライン)の状態を示す。
分類部68は、複数の第1キャッシュメモリ40のいずれかからのリード要求を含む複数の処理要求を受け、受けた処理要求を、要求の種類に基づいて分類する。例えば、分類部68は、複数の処理要求のうち、第2管理情報を参照せずに第1管理情報を参照して実行される処理の要求を第1の種類の処理要求に分類する。また、分類部68は、複数の処理要求のうち、第1管理情報および第2管理情報のうちの少なくとも第2管理情報を参照して実行される処理の要求を第2の種類の処理要求に分類する。そして、分類部68は、複数の処理要求のうちの第1の種類の処理要求を第1処理部70に投入し、複数の処理要求のうちの第2の種類の処理要求を第2処理部72に投入する。
例えば、分類部68は、リード要求を第1キャッシュメモリ40から受けた場合、リード要求で指定されたデータの検索に第2管理情報が参照されるため、リード要求を第2処理部72に投入する。また、分類部68は、リプレース処理のうち、リプレースデータのライトバックを伴わないリプレース完了処理の要求を受けた場合、リプレース完了処理では第2管理情報が参照されないため、リプレース完了処理の要求を第1処理部70に投入する。なお、分類部68は、リプレース処理のうち、リプレースデータのライトバックの要求を受けた場合、リプレースデータに関する第2管理情報の更新処理で第2管理情報が参照されるため、リプレースデータのライトバックの要求を第2処理部72に投入する。このように、分類部68は、処理要求の種類に基づいて、処理要求の出力先を第1処理部70および第2処理部72のいずれかに決定する。
第1処理部70は、分類部68から受ける第1の種類の処理要求に基づく処理を、第2管理情報を参照せずに第1管理情報を参照して実行する。なお、第1処理部70は、第2処理部72と並列に動作可能である。
第2処理部72は、分類部68から受ける第2の種類の処理要求に基づく処理を、第1情報保持部64に保持された第1管理情報および第2情報保持部66に保持された第2管理情報のうちの少なくとも第2管理情報に基づいて実行する。
例えば、第2処理部72は、リード要求を受けた場合、第2キャッシュメモリ60がキャッシュヒットするか否かを、第2情報保持部66に保持された第2管理情報を参照して判定する。リード要求で指定されたデータをデータ保持部62が保持している場合、第2キャッシュメモリ60はキャッシュヒットする。第2キャッシュメモリ60がキャッシュヒットした場合、第2処理部72は、リード要求で指定されたデータをデータ保持部62から要求元の第1キャッシュメモリ40に転送する処理を実行する。
また、例えば、第2処理部72は、リプレースデータのライトバックの要求を受けた場合、第1キャッシュメモリ40から受けたリプレースデータをデータ保持部62に格納し、第2情報保持部66に保持された第2管理情報を更新する。
第1処理部70と第2処理部72とが並列に動作可能であるため、第2キャッシュメモリ60は、第2の種類の処理要求に基づく処理(第2処理部72での処理)と第1の種類の処理要求に基づく処理(第1処理部70での処理)とを並列に実行できる。
例えば、第1キャッシュメモリ40が連続してキャッシュミスし、キャッシュミスに伴い第1キャッシュメモリ40から追い出されるリプレースデータが全てクリーンなデータ(変更されていないデータ)である場合、第2処理部72は、リード要求を順次受ける。そして、第2処理部72は、リード要求で指定されたデータを、データ保持部62から第1キャッシュメモリ40に転送する。また、第2処理部72は、キャッシュミスに伴い第1キャッシュメモリ40から追い出されるリプレースデータに関する第1管理情報を、リード要求で指定されたデータに関する第1管理情報に更新する。これにより、第1情報保持部64は、リード要求で指定されたデータに関する第1管理情報を保持する。
また、第1処理部70は、ライトバックを伴わないリプレース完了処理の要求を順次受ける。そして、第1処理部70は、第2処理部72がデータ保持部62から第1キャッシュメモリ40にデータを転送しているサイクルに、前のサイクルのリード要求に対応するリプレース完了処理を実行する。
ここで、例えば、第1処理部70が省かれた構成では、リード要求により発生する一連の処理の各処理は、第2処理部72に対応する処理部により順番に実行される。この場合、リード要求に基づく処理とライトバックを伴わないリプレース完了処理とが並列に実行されない。このため、第1処理部70が省かれた構成では、リプレースデータが全てクリーンなデータである場合、データ保持部62から第1キャッシュメモリ40へのデータの転送は、2サイクルに1回実行される。
これに対し、第1処理部70と第2処理部72とを含む第2キャッシュメモリ60は、リード要求に基づく処理(データ保持部62から第1キャッシュメモリ40へのデータの転送)と、ライトバックを伴わないリプレース完了処理とを並列に実行できる。このため、キャッシュミスに伴い第1キャッシュメモリ40から追い出されるリプレースデータが全てクリーンなデータである場合、データ保持部62から第1キャッシュメモリ40へのデータの転送を1サイクル毎に実行できる。この場合、データ保持部62から第1キャッシュメモリ40へのデータの転送のスループットは、上述した第1処理部70が省かれた構成(データの転送を2サイクルに1回実行する場合)に比べて、向上する。すなわち、演算処理装置10は、リード要求に基づく処理とライトバックを伴わないリプレース完了処理とを並列に実行できない演算処理装置に比べて、第2キャッシュメモリ60のスループットを向上できる。
なお、演算処理装置10の構成は、図1に示す例に限定されない。例えば、第1キャッシュメモリ40および第2キャッシュメモリ60は、セットアソシアティブ方式以外の方式(例えば、ダイレクトマップ方式)のキャッシュメモリでもよい。
図2は、図1に示した演算処理装置10の動作の一例を示す。図2に示す動作は、演算処理装置の制御方法の一態様である。なお、図2に示す動作は、ハードウェアのみで実現されてもよく、ハードウェアをソフトウェアにより制御することにより実現されてもよい。図2では、分類部68の動作を中心に説明する。
ステップS10では、分類部68は、第1キャッシュメモリ40等から受けた処理要求が第2の種類の処理要求か否かを判定する。処理要求が第2の種類の処理要求である場合、分類部68の動作は、ステップS20に移る。一方、処理要求が第2の種類の処理要求でない場合(すなわち、処理要求が第1の種類の処理要求である場合)、分類部68の動作は、ステップS30に移る。
ステップS20では、分類部68は、ステップS10で第2の種類の処理要求であると判定した処理要求を、第2処理部72に投入する。すなわち、分類部68は、第2の種類の処理要求を第2処理部72に投入する。これにより、第2処理部72は、ステップS40において、第2の種類の処理要求に基づく処理を実行する。
ステップS30では、分類部68は、ステップS10で第1の種類の処理要求であると判定した処理要求を、第1処理部70に投入する。すなわち、分類部68は、第1の種類の処理要求を第1処理部70に投入する。これにより、第1処理部70は、ステップS50において、第1の種類の処理要求に基づく処理を実行する。
このように、分類部68は、複数の処理要求を第1の種類の処理要求および第2の種類の処理要求のいずれかに分類して、第1の種類の処理要求を第1処理部70に投入し、第2の種類の処理要求を第2処理部72に投入する。
第1処理部70と第2処理部72とが互いに並列に動作可能であるため、第1の種類の処理要求に基づく処理と第2の種類の処理要求に基づく処理とは、互いに並列に実行可能である。なお、演算処理装置10の動作は、図2に示す例に限定されない。
以上、図1に示す実施形態では、第2キャッシュメモリ60は、第1の種類の処理要求に基づく処理(例えば、ライトバックを伴わないリプレース完了処理)と、リード要求等の第2の種類の処理要求に基づく処理とを並列に実行できる。これにより、第1の種類の処理要求に基づく処理と第2の種類の処理要求に基づく処理とを並列に実行できない手法に比べて、第2キャッシュメモリ60のスループットを向上できる。
図3は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図3に示す演算処理装置PUは、例えば、命令を実行するCPU等のプロセッサである。
演算処理装置PUは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLと、主記憶制御部MCNTLと、入出力制御部IOCNTLと、CPUインタフェース部CIFとを有する。図3以降では、コアCOREの数を8つとして説明する。なお、コアCOREの数は、8に限定されない。
各コアCOREは、互いに対応するプロセッサコアPCORおよび第1キャッシュメモリL1を有し、第2キャッシュメモリLLに接続される。
プロセッサコアPCORは、図1に示したプロセッサコア20と同一または同様である。例えば、プロセッサコアPCORは、第1キャッシュメモリL1に保持されたデータを参照して、命令に基づく演算等を実行する。
第1キャッシュメモリL1は、例えば、セットアソシアティブ方式のキャッシュメモリであり、図1に示した第1キャッシュメモリ40と同一または同様である。第1キャッシュメモリL1は、第2キャッシュメモリLLに比べて高速にアクセス可能な1次キャッシュメモリであり、第2キャッシュメモリLLに保持されたデータの一部を保持する。
第2キャッシュメモリLLは、セットアソシアティブ方式のキャッシュメモリであり、主記憶制御部MCNTL、入出力制御部IOCNTL、CPUインタフェース部CIFおよび複数のコアCORE等に接続される。すなわち、第2キャッシュメモリLLは、第1キャッシュメモリL1より下位の階層の2次キャッシュメモリであり、複数のコアCOREに共有される。
第2キャッシュメモリLLは、データ保持部DMEM、管理情報保持部TAGL1c、管理情報保持部TAGLLおよび使用情報保持部LRULLcを有する。さらに、第2キャッシュメモリLLは、投入部INP、メインパイプライン制御部MPLCc、サブパイプライン制御部SPLCcおよびスヌープロック部SNPを有する。
データ保持部DMEMは、主記憶制御部MCNTLに接続される主記憶装置(図示せず)等に記憶されたデータの一部を保持する。例えば、データ保持部DMEMは、図4に示すように、インデックスアドレス毎にデータを保持する複数のウェイを有する。データ保持部DMEMの記憶容量は、第1キャッシュメモリL1の記憶容量に比べて大きい。
管理情報保持部TAGL1cは、複数の第1キャッシュメモリL1に保持されたデータを管理する第1管理情報を保持する。管理情報保持部TAGLLは、データ保持部DMEMに保持されたデータを管理する第2管理情報を保持する。管理情報保持部TAGL1cおよび管理情報保持部TAGLLの詳細は、図5で説明する。
使用情報保持部LRULLcは、データ保持部DMEMの複数のウェイのうち、複数の第1キャッシュメモリL1のいずれにもアクセスされていない待機時間が最も長いウェイを選択するための選択情報を保持する選択情報保持部の一例である。例えば、第2キャッシュメモリLLがキャッシュミスし、主記憶装置等から第2キャッシュメモリLLに転送されたデータを登録する領域がない場合、第2キャッシュメモリLLに保持されたデータのいずれかを追い出すリプレース処理が実行される。この際、使用情報保持部LRULLcは、主記憶装置等からのデータの格納先のウェイ(すなわち、追い出されるデータを保持しているウェイ)を、選択情報を使用してLRU(Least Recently Used)方式で決定する。なお、使用情報保持部LRULLcの詳細は、図6で説明する。
投入部INPは、複数の処理要求を第1の種類の処理要求と第2の種類の処理要求とに分類する分類部の一例である。投入部INPは、リード要求等を含む複数の処理要求をコアCORE等から受け、受けた処理要求を要求の種類に基づいて分類する。例えば、投入部INPは、複数の処理要求のうち、第2管理情報を参照せずに第1管理情報を参照して実行される処理の要求を第1の種類の処理要求に分類する。また、投入部INPは、複数の処理要求のうち、第1管理情報および第2管理情報のうちの少なくとも第2管理情報を参照して実行される処理の要求を第2の種類の処理要求に分類する。そして、投入部INPは、複数の処理要求のうちの第1の種類の処理要求をサブパイプライン制御部SPLCcに投入し、複数の処理要求のうちの第2の種類の処理要求をメインパイプライン制御部MPLCcに投入する。
また、投入部INPは、処理対象のデータのメモリアドレス等を、メインパイプライン制御部MPLCc、サブパイプライン制御部SPLCc等に出力する。
メインパイプライン制御部MPLCcは、投入部INPから受ける第2の種類の処理要求に基づく処理を、管理情報保持部TAGL1cに保持された第1管理情報および管理情報保持部TAGLLに保持された第2管理情報のうちの少なくとも第2管理情報に基づいて実行する。
サブパイプライン制御部SPLCcは、投入部INPから受けた第1の種類の処理要求に基づく処理を、第2管理情報を参照せずに第1管理情報を参照して実行する。なお、サブパイプライン制御部SPLCcは、メインパイプライン制御部MPLCcと並列に動作可能である。メインパイプライン制御部MPLCcおよびサブパイプライン制御部SPLCcの詳細は、図7以降で説明する。
スヌープロック部SNPは、第1キャッシュメモリL1から追い出されるデータと同じメモリアドレスに対する処理要求を止めるスヌープロックを、メインパイプライン制御部MPLCc、サブパイプライン制御部SPLCc等からの指示に基づいて実行する。
主記憶制御部MCNTLには、例えば、第2キャッシュメモリLLより下位の階層の主記憶装置(図示せず)等が接続される。そして、主記憶制御部MCNTLは、第2キャッシュメモリLLと主記憶装置との間のデータ転送等を実行する。
入出力制御部IOCNTLには、例えば、入出力装置(図示せず)が接続される。そして、入出力制御部IOCNTLは、第2キャッシュメモリLLと入出力装置との間のデータ転送等を実行する。入出力装置は、演算処理装置PUにデータを入力するキーボード等の入力装置、演算処理装置PUの処理結果を外部に出力するディスプレイ等の出力装置等である。
CPUインタフェース部CIFには、例えば、他の演算処理装置PU(図示せず)、他のシステムとの接続インタフェース装置(図示せず)等が接続される。そして、CPUインタフェース部CIFは、CPUインタフェース部CIFに接続された装置と第2キャッシュメモリLLとの間のデータ転送等を実行する。
なお、演算処理装置PUの構成は、図3に示す例に限定されない。例えば、第1キャッシュメモリL1および第2キャッシュメモリLLは、セットアソシアティブ方式以外の方式(例えば、ダイレクトマップ方式)のキャッシュメモリでもよい。また、キャッシュメモリの階層レベルは、3以上でもよい。この場合、3次キャッシュメモリ等は、第2キャシュメモリLL(2次キャッシュメモリ)と同様に、メインパイプライン制御部MPLCcおよびサブパイプライン制御部SPLCcを有してもよい。
図4は、図3に示したデータ保持部DMEMの一例を示す。データ保持部DMEMは、インデックスアドレスRAD[18:7]毎にデータを保持する複数のウェイWAY(WAY0、WAY1、・・・、WAY14、WAY15)を有する。なお、インデックスアドレスRAD[18:7]は、データのアクセスに使用するメモリアドレスRAD[47:0]の一部分のビット群で表される第2インデックスの一例である。図4に示す例では、データ保持部DMEMのウェイWAYの数は、16である。すなわち、第2キャッシュメモリLLは、16ウェイのセットアソシアティブ方式のキャッシュメモリである。なお、データ保持部DMEMのウェイWAYの数は、16に限定されない。
データ保持部DMEMは、アクセス対象のウェイWAYを示すヒットウェイ情報HITW0−HITW15と、アクセス対象のインデックスアドレスRAD[18:7]とを受ける。例えば、第2キャッシュメモリLLがリード要求をコアCOREから受けた場合、データ保持部DMEMは、インデックスアドレスRAD[18:7]とヒットウェイ情報HITW0−HITW15とで指定されたデータを要求元のコアCOREに出力する。以下、アクセス対象のメモリアドレスRADは、要求アドレスRADとも称される。また、インデックスアドレスRAD[18:7]は、アドレスRAD[18:7]とも称される。
図5は、図3に示した管理情報保持部TAGLL、TAGL1cの一例を示す。なお、図5に示す管理情報保持部TAGLLは、第2キャッシュメモリLLのウェイ数が16で、サイズが8メガバイトである場合の一例である。また、図5に示す管理情報保持部TAGL1cは、第1キャッシュメモリL1のウェイ数が8(命令用に4ウェイ、データ用に4ウェイ)で、サイズが128キロバイトである場合の一例である。第1キャッシュメモリL1および第2キャッシュメモリLLのキャッシュラインのサイズは、128バイトである。
したがって、第1キャッシュメモリL1のキャッシュラインの番号は、インデックスアドレスPA[13:7]で表される。そして、インデックスアドレスPA[13:7]は、データのアクセスに使用するメモリアドレスRAD[47:0]の一部分(7から13ビット)のビット群で表されるインデックスアドレスRAD[13:7]で指定される。なお、インデックスアドレスRAD[13:7]は、第2インデックス(インデックスアドレスRAD[18:7])の一部分のビット群で表される第1インデックスの一例である。
また、第2キャッシュメモリLLのキャッシュラインの番号は、インデックスアドレスPA[18:7]で表される。そして、インデックスアドレスPA[18:7]は、メモリアドレスRAD[47:0]の一部分(7から18ビット)のビット群で表されるインデックスアドレスRAD[18:7]で指定される。
管理情報保持部TAGLLは、1つのインデックスアドレスPA[18:7]に対して、第2キャッシュメモリLLのウェイ数分(図5に示す例では、16ウェイ分)の第2管理情報INFLL(INFLL0、・・・、INFLL15)を保持する。第2管理情報INFLLの末尾の数字は、第2キャッシュメモリLLのウェイWAYの末尾の数字に対応する。このように、管理情報保持部TAGLLは、各ウェイWAYの第2管理情報INFLLを第2キャッシュメモリLLのインデックスアドレスPA[18:7]毎に保持する。
各第2管理情報INFLLは、第2キャッシュメモリLLのタグアドレスPA[47:19]およびタイプコードTCLL[1:0]を含む。第2キャッシュメモリLLのタグアドレスPA[47:19]は、メモリアドレスRAD[47:0]の一部分(19から47ビット)のビット群で表される。また、タイプコードTCLL[1:0]は、第2キャッシュメモリLLのインデックスアドレスPA[18:7]とタグアドレスPA[47:19]とで指定されるデータ(キャッシュライン)の状態を示す。データの状態は、例えば、MESIプロトコルで管理される。
図5に示す例では、データの状態が無効(Invalid)である場合、タイプコードTCLL[1:0]は”00”に設定される。データの状態が共有(Shared)である場合、タイプコードTCLL[1:0]は”01”に設定される。データの状態が変更(Modified)である場合、タイプコードTCLL[1:0]は”10”に設定される。データの状態が排他(Exclusive)である場合、タイプコードTCLL[1:0]は”11”に設定される。
管理情報保持部TAGLLが保持する第2管理情報INFLLは、例えば、メインパイプライン制御部MPLCcからのアップデート指示UPDLLに基づいて、更新される。
管理情報保持部TAGL1cは、1つのインデックスアドレスPA[13:7]に対して、第1キャッシュメモリL1のウェイ数と第1キャッシュメモリL1の数との積で表される数の第1管理情報INFL1cを保持する。図5に示す例では、管理情報保持部TAGL1cは、1つのインデックスアドレスPA[13:7]に対して、64個(=8ウェイ×8コア分)の第1管理情報INFL1c(INFL1c0、・・・、INFL1c63)を保持する。
このように、管理情報保持部TAGL1cは、各第1キャッシュメモリL1における各ウェイの第1管理情報INFL1cを、第1キャッシュメモリL1のインデックスアドレスPA[13:7]毎に保持する。図5に示す例では、第1管理情報INFL1cの末尾の数字を8で割った場合の商および余りは、それぞれコアCOREの末尾の数字および第1キャッシュメモリL1のウェイ番号(0から7のいずれか)に対応する。例えば、第1管理情報INFL1c0は、コアCORE0の第1キャッシュメモリL1の0番目のウェイの第1管理情報INFL1cを示す。また、第1管理情報INFL1c63は、コアCORE7の第1キャッシュメモリL1の7番目のウェイの第1管理情報INFL1cを示す。
各第1管理情報INFL1cは、ウェイ情報WAYLL[3:0]と、差分情報PA[18:14]と、タイプコードTCL1[1:0]とを有する。ウェイ情報WAYLL[3:0]および差分情報PA[18:14]は、第1キャッシュメモリL1のタグアドレスPA[47:14]の代わりに保持される情報である。例えば、ウェイ情報WAYLL[3:0]は、第2キャッシュメモリLLの複数のウェイWAYのうち、第1キャッシュメモリL1のインデックスアドレスPA[13:7]とタグアドレスPA[47:14]とで指定されるデータが保持されたウェイWAYを示す。すなわち、ウェイ情報WAYLL[3:0]は、タグアドレスPA[47:14]のうちのアドレスPA[47:19](第2キャッシュメモリLLのタグアドレスPA[47:19])に対応する。
差分情報PA[18:14]は、第1キャッシュメモリL1のインデックスアドレスPA[13:7]と第2キャッシュメモリLLのインデックスアドレスPA[18:7]との差分を示す。すなわち、差分情報PA[18:14]は、メモリアドレスRAD[47:0]の一部分(14から18ビット)のビット群で表され、タグアドレスPA[47:14]のうちのアドレスPA[18:14]に対応する。このように、ウェイ情報WAYLL[3:0]および差分情報PA[18:14]は、第1キャッシュメモリL1のタグアドレスPA[47:14]の代わりに使用される。
タイプコードTCL1[1:0]は、第1キャッシュメモリL1のインデックスアドレスPA[13:7]、ウェイ情報WAYLL[3:0]および差分情報PA[18:14]で指定されるデータ(キャッシュライン)の状態を示す。データの状態は、例えば、MESIプロトコルで管理される。なお、第2キャッシュメモリLLは、第1キャッシュメモリL1に保持されたデータが変更されたタイミングを検出しない。このため、タイプコードTCL1[1:0]は、データの状態が変更(Modified)であることを示す”10”以外の値に設定される。
管理情報保持部TAGL1cが保持する第1管理情報INFL1cは、例えば、メインパイプライン制御部MPLCcまたはサブパイプライン制御部SPLCcからのアップデート指示UPDL1cに基づいて、更新される。
なお、管理情報保持部TAGLL、TAGL1cの構成は、図5に示す例に限定されない。例えば、管理情報保持部TAGL1cは、図23等に示すように、第1キャッシュメモリL1のタグアドレスPA[47:14]とタイプコードTCL1[1:0]とを含む第1管理情報INFL1aを保持してもよい。
図6は、図3に示した使用情報保持部LRULLcの一例を示す。なお、図6に示す使用情報保持部LRULLcは、第2キャッシュメモリLLのウェイ数が16である場合の一例である。
使用情報保持部LRULLcは、インデックスアドレスPA[18:7]毎に、選択情報SINF(SINF1[3:0]、SINF2[3:0]、・・・、SINF15[3:0]、SINF16[3:0])を保持する。選択情報SINF1[3:0]に登録されたウェイWAYは、データ保持部DMEMの複数のウェイWAYのうち、複数の第1キャッシュメモリL1のいずれにもアクセスされていない待機時間が最も長いウェイWAYである。選択情報SINFの符号SINFの後の数字が大きくなるほど、待機時間が短いウェイWAYが登録される。使用情報保持部LRULLcが保持する選択情報SINFは、例えば、メインパイプライン制御部MPLCcからのアップデート指示UPDLRUに基づいて、更新される。
また、使用情報保持部LRULLcは、選択部SLUを有する。選択部SLUは、第2キャシュメモリLLから追い出すデータを保持しているウェイWAYを、複数のウェイWAYのうち、所持情報CINF0−CINF15が示すウェイWAY以外のウェイWAYから優先的に、選択情報SINFに基づいて選択する。例えば、所持情報CINF0−CINF15が示すウェイWAYが、選択情報SINF1[3:0]に登録されたウェイWAYである場合、選択部SLUは、選択情報SINF2[3:0]に登録されたウェイWAYを選択する。そして、使用情報保持部LRULLcは、選択部SLUで選択したウェイWAYを示すリプレースウェイ情報RPLWAYを、出力する。
このように、アドレスRAD[18:7]で指定され、データ保持部DMEMの複数のウェイWAYにそれぞれ保持されたデータのうち、複数の第1キャッシュメモリL1のいずれかに保持されたデータを保持するウェイWAYは、リプレース対象から除外される。コアCORE内の第1キャッシュメモリL1に保持されているデータがプロセッサコアPCORに再度参照される確率は、第1キャッシュメモリL1に保持されていないデータに比べて高い。このため、第2キャッシュメモリLLの複数のウェイWAYのうち、複数の第1キャッシュメモリL1のいずれかに保持されたデータを保持するウェイWAYをリプレース対象から除外することで、キャッシュヒットの頻度が低下することを抑止することができる。
なお、使用情報保持部LRULLcの構成は、図6に示す例に限定されない。例えば、選択部SLUは、使用情報保持部LRULLcの外部に設けられてもよい。
図7は、図3に示したメインパイプライン制御部MPLCcの一例を示す。図7に示す一点鎖線は、パイプライン処理の各ステージの境界に対応する。メモリアドレスRAD[47:0]のうちのアドレスRAD[18:7]は、アクセス対象のインデックスアドレスRAD[18:7]であり、第2キャッシュメモリLLのインデックスアドレスPA[18:7]に対応する。また、メモリアドレスRAD[47:0]のうちのアドレスRAD[47:19]は、第2キャッシュメモリLLのタグアドレスPA[47:19]に対応する。そして、メモリアドレスRAD[47:0]のうちのアドレスRAD[13:7]は、第1キャッシュメモリL1のインデックスアドレスPA[13:7]に対応する。
メインパイプライン制御部MPLCcは、ヒット判定部HDJ、コア判定部CDJcおよび処理判定部MPDJcを有する。
ヒット判定部HDJは、第2キャッシュメモリLLがキャッシュヒットするか否かを判定する。例えば、ヒット判定部HDJは、インデックスアドレスRAD[18:7]で指定される第2管理情報INFLL0−INFLL15を管理情報保持部TAGLLから受ける。各第2管理情報INFLLには、図5で説明したように、タグアドレスPA[47:19]およびタイプコードTCLL[1:0]が含まれる。
また、ヒット判定部HDJは、アドレスRAD[47:19]を投入部INPから受ける。そして、ヒット判定部HDJは、アドレスRAD[47:19]と管理情報保持部TAGLLから受けた各第2管理情報INFLL内のタグアドレスPA[47:19]とを比較する。管理情報保持部TAGLLから受けた第2管理情報INFLL内のタグアドレスPA[47:19]のいずれかがアドレスRAD[47:19]と一致した場合、ヒット判定部HDJは、第2キャッシュメモリLLがキャッシュヒットしたと判定する。
また、ヒット判定部HDJは、ヒットウェイ情報HITW0−HITW15をコア判定部CDJc、データ保持部DMEM等に出力し、ヒットデータ情報HTCLL[1:0]を処理判定部MPDJcに出力する。ヒットウェイ情報HITW0−HITW15は、キャッシュヒットしたウェイWAY(アクセス対象のデータを保持しているウェイWAY)を示し、ヒットデータ情報HTCLL[1:0]は、キャッシュヒットしたデータの状態を示す。ヒットウェイ情報HITWの末尾の数字は、第2キャッシュメモリLLのウェイWAY(図4に示したデータ保持部DMEMのウェイWAY)の末尾の数字に対応する。なお、第2キャッシュメモリLLがキャッシュミスした場合、ヒットウェイ情報HITW0−HITW15およびヒットデータ情報HTCLL[1:0]は、例えば、全て”0”に設定される。ヒット判定部HDJの詳細は、図8で説明する。
コア判定部CDJcは、複数の第1キャッシュメモリL1のいずれかがキャッシュヒットするか否かを判定する。例えば、コア判定部CDJcは、インデックスアドレスRAD[13:7]で指定される第1管理情報INFL1c0−INFL1c63を管理情報保持部TAGL1cから受ける。また、コア判定部CDJcは、第1キャッシュメモリL1から追い出すデータが保持された第1キャッシュメモリL1のウェイの番号等を示す要求ウェイ情報REQCWAYと、アドレスRAD[18:14]とを投入部INPから受ける。なお、各第1管理情報INFL1cには、図5で説明したように、ウェイ情報WAYLL[3:0]、差分情報PA[18:14]およびタイプコードTCL1[1:0]が含まれる。要求ウェイ情報REQCWAYは、例えば、要求元のコアCOREおよび要求元のコアCORE内の第1キャシュメモリL1のウェイ番号を示す。
例えば、コア判定部CDJcは、要求ウェイ情報REQCWAYと、各第1管理情報INFL1c内のタイプコードTCL1[1:0]とを用いて、要求データ情報RTCL1[1:0]を生成する。また、コア判定部CDJcは、アドレスRAD[18:14]と各第1管理情報INFL1cとヒットウェイ情報HITW0−HITW15とを用いて、コアデータ情報HTC0[1:0]−HTC63[1:0]と所持情報CINF0−CINF15とを生成する。コアデータ情報HTCの末尾の数字(符号HTCの後の数字)は、第1管理情報INFL1cの末尾の数字に対応する。また、所持情報CINFの末尾の数字は、第2キャッシュメモリLLのウェイWAYの末尾の数字に対応する。
コアデータ情報HTC0[1:0]−HTC63[1:0]は、第1キャッシュメモリL1でキャッシュヒットしたデータ(第1キャッシュメモリL1に保持されたデータ)の状態を示す。なお、キャッシュミスしたデータに対応するコアデータ情報HTC0[1:0]−HTC63[1:0]は、例えば、”00”に設定される。
所持情報CINF0−CINF15は、アドレスRAD[18:7]で指定され、データ保持部DMEMの複数のウェイWAYにそれぞれ保持されたデータのうち、複数の第1キャッシュメモリL1のいずれかに保持されたデータを保持しているウェイWAYを示す。
要求データ情報RTCL1[1:0]は、アドレスRAD[13:7]で指定されたデータのうち、要求ウェイ情報REQCWAYで指定された第1キャッシュメモリL1のウェイに保持されたデータの状態を示す。コア判定部CDJcの詳細は、図9で説明する。
処理判定部MPDJcは、ヒットデータ情報HTCLL[1:0]をヒット判定部HDJから受け、コアデータ情報HTC0[1:0]−HTC63[1:0]および要求データ情報RTCL1[1:0]をコア判定部CDJcから受ける。さらに、処理判定部MPDJcは、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]を投入部INPから受ける。
そして、処理判定部MPDJcは、情報HTC0[1:0]−HTC63[1:0]、RTCL1[1:0]、PID[3:0]、OPCD[1:0]に基づいて、コアCORE等に実行させる処理を決定する。例えば、処理判定部MPDJcは、リプレース処理を実行させるリプレース指示IRPL、スヌープ処理を実行させるスヌープ指示ISNP、データ応答等を、実行対象のコアCOREに通知する。スヌープ処理は、複数の第1キャッシュメモリL1に保持されたデータの一貫性(キャッシュコヒーレンシ)を維持する処理である。また、処理判定部MPDJcは、演算処理装置PUの外部の装置に主記憶制御部MCNTL等を介して処理要求等を通知する。
また、処理判定部MPDJcは、情報HTC0[1:0]−HTC63[1:0]、RTCL1[1:0]、PID[3:0]、OPCD[1:0]に基づいて、管理情報保持部TAGLL、TAGL1c、使用情報保持部LRULLcに保持された情報を更新する。例えば、処理判定部MPDJcは、アップデート指示UPDLLを管理情報保持部TAGLLに出力し、アップデート指示UPDL1cを管理情報保持部TAGL1cに出力する。また、処理判定部MPDJcは、アップデート指示UPDLRUを使用情報保持部LRULLcに出力する。
図8は、図7に示したヒット判定部HDJの一例を示す。ヒット判定部HDJは、複数の判定部DJW(DJW0−DJW15)と、選択部SEL1とを有する。判定部DJWの末尾の数字は、第2キャッシュメモリLLのウェイWAYの末尾の数字に対応する。複数の判定部DJWは互いに同一または同様であるため、判定部DJW0について説明する。
判定部DJW0は、マッチ検出部MD1、論理和回路OR1および論理積回路AND1を有する。マッチ検出部MD1は、アドレスRAD[18:7]で指定されるインデックスアドレスPA[18:7]に対応する第2管理情報INFLL0内のタグアドレスPA[47:19]を、管理情報保持部TAGLLから受ける。そして、マッチ検出部MD1は、投入部INPから受けたアドレスRAD[47:19]と、第2管理情報INFLL0内のタグアドレスPA[47:19]とを比較し、比較結果を論理積回路AND1に出力する。例えば、アドレスRAD[47:19]とタグアドレスPA[47:19]とが一致する場合、マッチ検出部MD1は、真を示す情報(例えば、論理値”1”)を比較結果として論理積回路AND1に出力する。また、アドレスRAD[47:19]とタグアドレスPA[47:19]とが一致しない場合、マッチ検出部MD1は、偽を示す情報(例えば、論理値”0”)を比較結果として論理積回路AND1に出力する。
論理和回路OR1は、アドレスRAD[18:7]で指定されるインデックスアドレスPA[18:7]に対応する第2管理情報INFLL0内のタイプコードTCLL[1:0]を、管理情報保持部TAGLLから受ける。そして、論理和回路OR1は、タイプコードTCLL[0:0]とタイプコードTCLL[1:1]との論理和を演算し、演算結果(TCLL[0:0]とTCLL[1:1]との論理和結果)を論理積回路AND1に出力する。
論理積回路AND1は、マッチ検出部MD1による比較結果と論理和回路OR1の演算結果との論理積を演算し、演算結果をヒットウェイ情報HITW0として選択部SEL1、データ保持部DMEM等に出力する。例えば、アクセス対象のデータがデータ保持部DMEMのウェイWAY0に保持されている場合、判定部DJW0は、真(例えば、論理値”1”)を示すヒットウェイ情報HITW0を選択部SEL1、データ保持部DMEM等に出力する。
選択部SEL1は、アドレスRAD[18:7]で指定されるインデックスアドレスPA[18:7]に対応する第2管理情報INFLL0−INFLL15内のタイプコードTCLL[1:0]を入力信号として、管理情報保持部TAGLLから受ける。また、選択部SEL1は、ヒットウェイ情報HITW0−HITW15を選択信号として、判定部DJW0−DJW15から受ける。そして、選択部SEL1は、管理情報保持部TAGLLから受けた複数のタイプコードTCLL[1:0]のうち、ヒットウェイ情報HITW0−HITW15で指定されるタイプコードTCLL[1:0]をヒットデータ情報HTCLL[1:0]として選択する。
例えば、選択部SEL1は、真を示すヒットウェイ情報HITWに対応する第2管理情報INFLL内のタイプコードTCLL[1:0]を、ヒットデータ情報HTCLL[1:0]として選択する。そして、選択部SEL1は、ヒットデータ情報HTCLL[1:0]を処理判定部MPDJcに出力する。
図9は、図7に示したコア判定部CDJcの一例を示す。コア判定部CDJcは、複数の判定部DJL1c(DJL1c0−DJL1c63)と、論理和回路OR4と、選択部SEL2とを有する。判定部DJL1cの末尾の数字は、第1管理情報INFL1cの末尾の数字に対応する。複数の判定部DJL1cは互いに同一または同様であるため、判定部DJL1c0について説明する。
判定部DJL1c0は、デコード部DEC、マッチ検出部MD2、論理和回路OR2、OR3および論理積回路AND2、AND3、ANDw0−ANDw15を有する。論理積回路ANDwの末尾の数字は、第2キャッシュメモリLLのウェイWAYの末尾の数字に対応する。
デコード部DECは、アドレスRAD[13:7]で指定されるインデックスアドレスPA[13:7]に対応する第1管理情報INFL1c0内のウェイ情報WAYLL[3:0]を、管理情報保持部TAGL1cから受ける。そして、デコード部DECは、ウェイ情報WAYLL[3:0]が示す論理値をデコードし、複数のウェイWAY0−WAY15の各々に対して真であるか否かを示すビットを含むデコード情報LLW0−LLW15を生成する。例えば、ウェイ情報WAYLL[3:0]が十進数で”15”を示す場合、デコード部DECは、デコード情報LLW15を真(例えば、論理値”1”)に設定し、デコード情報LLW0−LLW14を偽(例えば、論理値”0”)に設定する。
デコード部DECは、デコードしたデコード情報LLW0−LLW15を論理積回路AND3に出力する。また、デコード部DECは、デコード情報LLW0−LLW15を、論理積回路ANDw0−ANDw15にそれぞれ出力する。例えば、デコード部DECは、デコード情報LLW0を論理積回路ANDw0に出力する。
論理積回路ANDw0は、ヒット判定部HDJの判定部DJW0から受けたヒットウェイ情報HITW0とデコード部DECから受けたデコード情報LLW0との論理積を演算し、演算結果を論理和回路OR2に出力する。論理積回路ANDw0以外の論理積回路ANDwは、論理積回路ANDw0の説明における判定部DJW、ヒットウェイ情報HITWおよびデコード情報LLWの末尾の数字を、論理積回路ANDwに対応する数字に読み替えることで説明される。
論理和回路OR2は、論理積回路ANDw0−ANDw15のそれぞれの演算結果の論理和を演算し、演算結果を論理積回路AND2に出力する。
マッチ検出部MD2は、アドレスRAD[13:7]で指定されるインデックスアドレスPA[13:7]に対応する第1管理情報INFL1c0内の差分情報PA[18:14]を、管理情報保持部TAGL1cから受ける。そして、マッチ検出部MD2は、投入部INPから受けたアドレスRAD[18:14]と、第1管理情報INFL1c0内の差分情報PA[18:14]とを比較し、比較結果を論理積回路AND2、AND3に出力する。例えば、アドレスRAD[18:14]と差分情報PA[18:14]とが一致する場合、マッチ検出部MD2は、真を示す情報(例えば、論理値”1”)を比較結果として論理積回路AND2、AND3に出力する。また、アドレスRAD[18:14]と差分情報PA[18:14]とが一致しない場合、マッチ検出部MD2は、偽を示す情報(例えば、論理値”0”)を比較結果として論理積回路AND2、AND3に出力する。
論理積回路AND2および論理和回路OR3は、アドレスRAD[13:7]で指定されるインデックスアドレスPA[13:7]に対応する第1管理情報INFL1c0内のタイプコードTCL1[1:0]を、管理情報保持部TAGL1cから受ける。
そして、論理積回路AND2は、マッチ検出部MD2による比較結果と論理和回路OR2の演算結果と管理情報保持部TAGL1cから受けたタイプコードTCL1[1:0]との論理積を演算し、演算結果をコアデータ情報HTC0[1:0]として出力する。例えば、アクセス対象のデータがコアCORE0の第1キャッシュメモリL1における0番目のウェイに保持されている場合、マッチ検出部MD2による比較結果と論理和回路OR2の演算結果との両方が真(例えば、論理値”1”)になる。この場合、判定部DJL1c0は、管理情報保持部TAGL1cから受けたタイプコードTCL1[1:0]をコアデータ情報HTC0[1:0]として処理判定部MPDJcに出力する。
また、論理和回路OR3は、タイプコードTCL1[0:0]とタイプコードTCL1[1:1]との論理和を演算し、演算結果(TCL1[0:0]とTCL1[1:1]との論理和結果)を論理積回路AND3に出力する。
論理積回路AND3は、デコード情報LLW0−LLW15の各々とマッチ検出部MD2による比較結果と論理和回路OR3の演算結果との論理積を演算し、演算結果を個別所持情報VAL0[15:0]として論理和回路OR4に出力する。個別所持情報VAL0[15:0]の0番目から15番目までの各ビットは、第2キャッシュメモリLLのウェイWAY0−WAY15にそれぞれ対応する。
例えば、コアCORE0の第1キャッシュメモリL1における0番目のウェイに保持されているデータが、第2キャッシュメモリLLのウェイWAY0に保持されている場合、個別所持情報VAL0[0:0]は、真(例えば、論理値”1”)に設定される。また、コアCORE0の第1キャッシュメモリL1における0番目のウェイに保持されているデータが、第2キャッシュメモリLLのウェイWAY15に保持されている場合、個別所持情報VAL0[15:15]は、真(例えば、論理値”1”)に設定される。
論理和回路OR4は、判定部DJL1c0−DJL1c63から受けた個別所持情報VAL0[15:0]−VAL63[15:0]の論理和をビット毎に演算し、各ビットの演算結果を16ビットの所持情報CINF0−CINF15として選択部SLUに出力する。例えば、所持情報CINF0は、個別所持情報VAL0[0:0]−VAL63[0:0]の論理和結果であり、所持情報CINF15は、個別所持情報VAL0[15:15]−VAL63[15:15]の論理和結果である。
すなわち、各判定部DJL1cのデコード部DEC、マッチ検出部MD2、論理和回路OR3および論理積回路AND3と、論理和回路OR4とを含むブロックは、所持情報CINFを第1管理情報INFL1cに基づいて生成する所持情報生成部の一例である。
したがって、論理和回路OR3は、第1インデックス(インデックスアドレスRAD[13:7])毎に、データが有効であるかをタイプコードTCL1[1:0]に基づいて判定する状態判定部の一例である。また、マッチ検出部MD2は、第1インデックス毎に、アクセス対象のデータのメモリアドレスRAD[47:0]のうちのアドレスRAD[18:14]と差分情報PA[18:14]とが互いに一致するかを判定する一致判定部の一例である。論理積回路AND3は、第1インデックス毎に、デコード情報LLWの各ビット(デコード情報LLW0−LLW15)と、状態判定部の判定結果と、一致判定部の判定結果との論理積を演算する論理積部の一例である。論理和回路OR4は、第1インデックス毎に、複数の第1キャシュメモリL1の各々に対応する論理積部の演算結果の論理和を演算し、演算結果を所持情報CINF0−CINF15として選択部SLUに出力する論理和部の一例である。
選択部SEL2は、アドレスRAD[13:7]で指定されるインデックスアドレスPA[13:7]に対応する第1管理情報INFL1c0−INFL1c63内のタイプコードTCL1[1:0]を入力信号として、管理情報保持部TAGL1cから受ける。また、選択部SEL2は、要求ウェイ情報REQCWAYを選択信号として、投入部INPから受ける。そして、選択部SEL2は、管理情報保持部TAGL1cから受けた複数のタイプコードTCL1[1:0]のうち、要求ウェイ情報REQCWAYで指定されるタイプコードTCL1[1:0]を要求データ情報RTCL1[1:0]として選択する。選択部SEL2により選択された要求データ情報RTCL1[1:0]は、処理判定部MPDJcに転送される。
ここで、例えば、従来方式では、管理情報保持部TAGLLは、第2キャッシュメモリLLに保持されたデータの第1キャッシュメモリL1での状態を示す2ビットのコア所持情報(タイプコードTCL1[1:0]に相当する情報)を保持する。そして、従来方式では、第1キャッシュメモリL1に保持されたデータを保持する第2キャッシュメモリLLのウェイWAYをリプレース対象から除外する処理(以下、除外処理とも称する)は、コア所持情報に基づいて実行される。このように、コア所持情報を管理情報保持部TAGLLに登録する従来方式では、コア所持情報を管理情報保持部TAGLLに登録しない方式に比べて、回路等を工夫することなく、除外処理を容易に実現することができる。
なお、演算処理装置PUでは、コア判定部CDJc内の回路を工夫しているため、所持情報CINF0−CINF15を生成することができ、除外処理を実現することができる。例えば、コア判定部CDJcは、個別所持情報VAL0[15:0]−VAL63[15:0]を生成するように工夫した判定部DJL1c0−DJL1c63を有する。さらに、コア判定部CDJc内には、個別所持情報VAL0[15:0]−VAL63[15:0]に基づいて所持情報CINF0−CINF15を生成する論理和回路OR4が設けられる。所持情報CINFは、従来方式における管理情報保持部TAGLLに登録された2ビットのコア所持情報の論理和結果に対応する。このように、演算処理装置PUでは、コア判定部CDJc内の回路等を工夫しているため、従来方式と同一または同様な情報が得られる。
図10は、図3に示したサブパイプライン制御部SPLCcの一例を示す。図10に示す一点鎖線は、パイプライン処理の各ステージの境界に対応する。サブパイプライン制御部SPLCcは、選択部SEL3および処理判定部SPDJcを有する。
選択部SEL3は、図9に示した選択部SEL2と同一または同様である。例えば、選択部SEL3は、管理情報保持部TAGL1cから受けた複数のタイプコードTCL1[1:0]のうち、要求ウェイ情報REQCWAYで指定されるタイプコードTCL1[1:0]を要求データ情報RTCL1[1:0]として選択する。そして、選択部SEL3は、要求データ情報RTCL1[1:0]を処理判定部SPDJcに出力する。
処理判定部SPDJcは、要求データ情報RTCL1[1:0]を選択部SEL3から受け、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]を投入部INPから受ける。そして、処理判定部SPDJcは、要求データ情報RTCL1[1:0]、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]に基づいて、管理情報保持部TAGL1cに保持された第1管理情報INFL1cを更新する。例えば、処理判定部SPDJcは、アップデート指示UPDL1cを管理情報保持部TAGL1cに出力する。
図11は、図3に示した投入部INPが受ける処理要求の一例を示す。
処理要求BPMOに基づく処理では、第2キャッシュメモリLLは、第1キャッシュメモリL1および第2キャッシュメモリLLのデータを無効化し、第1キャッシュメモリL1からのデータを外部に出力する。なお、処理要求BPMOは、処理要求MORP、MOCOに後続する処理要求である。以下、所定の処理要求に後続する処理要求は、所定の処理要求の後続フローまたは従属フローとも称される。
処理要求BISR−L(L1−RPL)に基づく処理では、第2キャッシュメモリLLは、第1キャッシュメモリL1から第2キャッシュメモリLLへのライトバックを伴わないリプレース完了処理(リプレース処理の完了に関する処理)を実行する。なお、処理要求BISR−L(L1−RPL)は、リード要求READ(以下、処理要求READとも称する)および処理要求MVINの従属フローである。
処理要求BISR−L(L1−CPB)に基づく処理では、第2キャッシュメモリLLは、L1間転送(以下、第1キャッシュメモリL1間転送とも称する)により第1キャッシュメモリL1から追い出されるデータを無効化する。第1キャッシュメモリL1間転送は、2つの第1キャッシュメモリL1の一方に保持されたデータを他方に転送する処理である。なお、処理要求BISR−L(L1−CPB)では、第1キャッシュメモリL1から第2キャッシュメモリLLへのライトバックは実行されない。すなわち、処理要求BISR−L(L1−CPB)では、第1キャッシュメモリL1間転送により第1キャッシュメモリL1から追い出されるデータは、第2キャッシュメモリLLに書き戻されない。処理要求BISR−L(L1−CPB)は、処理要求READの従属フローである。
処理要求BISR−Rに基づく処理では、第2キャッシュメモリLLは、第1キャッシュメモリL1および第2キャッシュメモリLLのデータを無効化する。
処理要求WRBK(L1−RPL)に基づく処理では、第2キャッシュメモリLLは、第1キャッシュメモリL1から第2キャッシュメモリLLへのライトバックを伴うリプレース完了処理(リプレース処理の完了に関する処理)を実行する。また、処理要求WRBK(L1−RPL)は、処理要求READ、MVINの従属フローである。
処理要求WRBK(L1−CPB)に基づく処理では、第2キャッシュメモリLLは、第1キャッシュメモリL1間転送により第1キャッシュメモリL1から追い出されるデータを無効化する。なお、処理要求WRBK(L1−CPB)では、第1キャッシュメモリL1から第2キャッシュメモリLLへのライトバックは実行される。すなわち、処理要求WRBK(L1−CPB)では、第1キャッシュメモリL1間転送により第1キャッシュメモリL1から追い出されるデータは、第2キャッシュメモリLLに書き戻される。処理要求WRBK(L1−CPB)は、処理要求READの従属フローである。
処理要求MOSRに基づく処理では、第2キャッシュメモリLLは、第1キャッシュメモリL1および第2キャッシュメモリLLのデータを無効化して、第2キャッシュメモリLLのデータを外部に出力する。なお、処理要求MOSRは、処理要求MORP、MOCOの従属フローである。
処理要求MORPに基づく処理では、第2キャッシュメモリLLは、第2キャッシュメモリLLがキャッシュミスした場合に、第2キャッシュメモリLLのデータを追い出すリプレース処理を実行する。なお、処理要求MORPは、処理要求READの従属フローである。
処理要求MVINに基づく処理では、第2キャッシュメモリLLは、第2キャッシュメモリLLがキャッシュミスした場合に、データを第2キャッシュメモリLLに登録して第1キャッシュメモリL1に応答する。なお、処理要求MVINは、処理要求READの従属フローである。
処理要求MOCOに基づく処理では、第2キャッシュメモリLLは、外部からのスヌープ指示に対する処理を実行する。
処理要求READ(リード要求READ)に基づく処理では、第2キャッシュメモリLLは、第2キャッシュメモリLLがキャッシュヒットした場合に、データを第1キャッシュメモリL1に応答する。また、第2キャッシュメモリLLは、第2キャッシュメモリLLがキャッシュミスした場合に、主記憶装置等(第2キャッシュメモリLLより下位の階層の記憶部)にリード要求を発行する。例えば、処理要求READは、他の処理要求に従属しない新規要求フローである。
図12は、図7に示した処理情報PID[3:0]およびオペレーション情報OPCD[1:0]と処理要求との対応の一例を示す。図12の網掛けは、サブパイプライン制御部SPLCcに投入される第1の種類の処理要求を示す。図12に示すように、処理要求は、処理情報PID[3:0]で指定され、処理情報PID[3:0]で指定された処理要求は、オペレーション情報OPCD[1:0]によりさらに分類される。
図12に示す例では、”1101”、”1000”、”1010”、”1001”、”0100”、”0001”、”0101”のいずれかの処理情報PID[3:0]で指定される処理要求は、第2の種類の処理要求である。
例えば、処理情報PID[3:0]が”1101”で、オペレーション情報OPCD[1:0]が”01”の組み合わせは、処理要求READのうちの処理要求READ(S)を示す。処理要求READ(S)の符号における括弧内の”S”は、MESIプロトコルの共有(Shared)に対応する。処理要求READ(S)は、第2の種類の処理要求であり、メインパイプライン制御部MPLCcに投入される。
処理情報PID[3:0]が”1101”で、オペレーション情報OPCD[1:0]が”11”の組み合わせは、処理要求READのうちの処理要求READ(E)を示す。処理要求READ(E)の符号における括弧内の”E”は、MESIプロトコルの排他(Exclusive)に対応する。処理要求READ(E)は、第2の種類の処理要求であり、メインパイプライン制御部MPLCcに投入される。
また、”0010”の処理情報PID[3:0]で指定される処理要求は、第1の種類あるいは第2の種類の処理要求である。例えば、処理情報PID[3:0]が”0010”で、オペレーション情報OPCD[1:0]が”01”の組み合わせは、処理要求BISR−L(L1−RPL)を示す。処理要求BISR−L(L1−RPL)は、第1の種類の処理要求であり、サブパイプライン制御部SPLCcに投入される。
処理情報PID[3:0]が”0010”で、オペレーション情報OPCD[1:0]が”10”の組み合わせは、処理要求BISR−L(L1−CPB)を示す。処理要求BISR−L(L1−CPB)は、第1の種類の処理要求であり、サブパイプライン制御部SPLCcに投入される。
図13は、図7に示した処理判定部MPDJcの動作の一例を示す。すなわち、図13は、メインパイプライン制御部MPLCc内の処理判定部MPDJcの動作の一例を示す。図13に示す符号”R”は、データが命令保持部DMEMから読み出されることを示し、符号”W”は、データが命令保持部DMEMに書き込まれることを示す。
また、図13に示す符号”M”、”E”、”S”、”I”は、MESIプロトコルの変更(Modified)、排他(Exclusive)、共有(Shared)、無効(Invalid)にそれぞれ対応する。参照対象が複数のデータである場合(例えば、要求元以外の複数の第1キャッシュメモリL1のデータが参照対象である場合)、符号”I”は、参照対象のデータの全てが無効であることを示す。また、参照対象が複数のデータである場合、符号”S”は、参照対象のデータの少なくとも1つが共有である場合を示す。なお、図13では、複数の状態のいずれでもよい場合は、符号”/”を用いて複数の状態を記載している。例えば、参照の項目の”I/S”は、参照対象のデータの全てが無効である場合、または、参照対象のデータの少なくとも1つが共有である場合を示す。また、DATA応答の項目のE**は、処理対象のデータの状態を排他にするデータ応答のうち、データなし(データが転送されない)のデータ応答を示す。
処理判定部MPDJcは、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]に基づいて、処理要求を識別する。また、処理判定部MPDJcは、管理情報保持部TAGLL、TAGL1cの参照結果として、ヒットデータ情報HTCLL[1:0]およびコアデータ情報HTC0[1:0]−HTC63[1:0]を受ける。例えば、管理情報保持部TAGLLの参照結果は、ヒットデータ情報HTCLL[1:0]により通知される。管理情報保持部TAGL1cの参照結果は、コアデータ情報HTC0[1:0]−HTC63[1:0]により通知される。
なお、図13に示す要求元TAGL1cは、要求元の第1キャッシュメモリL1に対応する管理情報保持部TAGL1cの参照結果であり、その他TAGL1cは、要求元TAGL1c以外の管理情報保持部TAGL1cの参照結果である。要求元の第1キャッシュメモリL1に対応する管理情報保持部TAGL1cの参照結果は、コアデータ情報HTC0[1:0]−HTC63[1:0]のうち、要求元に対応するコアデータ情報HTCにより通知される。
また、処理判定部MPDJcは、処理要求と、管理情報保持部TAGLLの参照結果と、管理情報保持部TAGL1cの参照結果(要求元TAGL1c、その他TAGL1c)との組み合わせに基づいて、図13に示すように、管理情報保持部TAGLL等を更新する。
例えば、図13に示した処理要求READのうち、上から4番目の処理要求READ(S)では、第2キャッシュメモリLLは、処理対象のデータを共有状態で保持している状態(TAGLL:S)である。また、要求元の第1キャッシュメモリL1は、処理対象のデータを保持していない状態(要求元TAGL1c:I)である。要求元以外の第1キャッシュメモリL1は、処理対象のデータを保持していない状態(その他TAGL1c:I)、または、処理対象のデータを共有状態で保持している状態(その他TAGL1c:S)である。
この場合、処理判定部MPDJcは、管理情報保持部TAGLLに保持された情報を更新せずに維持する。そして、処理判定部MPDJcは、管理情報保持部TAGL1cに保持されたタイプコードTCL1[1:0]のうち、処理対象のデータに対応するタイプコードTCL1[1:0]を”S”(例えば、”01”)に更新する。また、処理判定部MPDJcは、処理要求READ(S)で要求されたデータを命令保持部DMEMから読み出し、データ付きの共有データ応答とリプレース指示IRPLとを要求元の第1キャシュメモリL1に出力する。さらに、処理判定部MPDJcは、命令保持部DMEMからデータを読み出したため、使用情報保持部LRULLcに保持された選択情報SINFを更新する。
そして、リプレース指示IRPLに基づくリプレース処理の対象データがクリーンである場合、第2キャッシュメモリLLは、処理要求READ(S)の後続フローとして、処理要求BISR−L(L1−RPL)を要求元の第1キャシュメモリL1から受ける。また、リプレース指示IRPLに基づくリプレース処理の対象データがダーティである場合、第2キャッシュメモリLLは、処理要求READ(S)の後続フローとして、処理要求WRBK(L1−RPL)を要求元の第1キャシュメモリL1から受ける。
処理要求BISR−L(L1−RPL)は、図12に示したように、サブパイプライン制御部SPLCcに投入される。一方、処理要求WRBK(L1−RPL)は、メインパイプライン制御部MPLCcに投入される。
例えば、処理要求WRBK(L1−RPL)では、第2キャッシュメモリLLは、処理対象のデータを排他状態または変更状態で保持している状態(TAGLL:E/M)である。また、要求元の第1キャッシュメモリL1は、処理対象のデータを排他状態で保持している状態(要求元TAGL1c:E)である。
この場合、処理判定部MPDJcは、管理情報保持部TAGLLに保持されたタイプコードTCLL[1:0]のうち、処理対象のデータに対応するタイプコードTCLL[1:0]を”M”(例えば、”10”)に更新する。なお、管理情報保持部TAGL1cに保持されたタイプコードTCL1[1:0]のうち、処理対象のデータに対応するタイプコードTCL1[1:0]は、先行の処理要求(例えば、処理要求READ(S))に基づく処理で既に更新されている。このため、管理情報保持部TAGL1cは、処理要求WRBK(L1−RPL)では更新されない(図13の−***)。また、処理判定部MPDJcは、要求元の第1キャッシュメモリL1から受けたデータを命令保持部DMEMに書き込み、処理要求WRBK(L1−RPL)および先行の処理要求に基づく一連の処理を終了する。
また、例えば、図13に示した処理要求READのうち、上から3番目の処理要求READ(E)では、第2キャッシュメモリLLは、処理対象のデータを共有状態で保持している状態(TAGLL:S)である。要求元の第1キャッシュメモリL1は、処理対象のデータを保持していない状態(要求元TAGL1c:I)、または、処理対象のデータを共有状態で保持している状態(要求元TAGL1c:S)である。そして、要求元以外の第1キャッシュメモリL1は、処理対象のデータを共有状態で保持している状態(その他TAGL1c:S)である。
この場合、処理判定部MPDJcは、管理情報保持部TAGLL、TAGL1cおよび使用情報保持部LRULLcに保持された情報を更新せずに維持する。そして、処理判定部MPDJcは、要求元以外の第1キャッシュメモリL1のうち、処理対象のデータを保持している第1キャッシュメモリL1にスヌープ指示ISNPを出力する。また、処理判定部MPDJcは、主記憶装置等の外部の装置に対して、フェッチを要求する。
なお、図13に示した後続(従属)フローの項目の処理要求MORP、MVIN、BISR−L(L1−CPB)他*は、処理要求MORP、MVIN、BISR−L(L1−CPB)、WRBK(L1−CPB)を示す。したがって、後続フローは、処理要求MORP、MVIN、BISR−L(L1−CPB)、WRBK(L1−CPB)のいずれかである。
例えば、処理要求WRBK(L1−CPB)では、第2キャッシュメモリLLは、処理対象のデータを排他状態または変更状態で保持している状態(TAGLL:E/M)である。また、要求元以外の第1キャッシュメモリL1のうち、スヌープ指示ISNPを受けた第1キャッシュメモリL1は、処理対象のデータを排他状態で保持している状態(その他TAGL1c:E)である。
この場合、処理判定部MPDJcは、管理情報保持部TAGLLに保持されたタイプコードTCLL[1:0]のうち、処理対象のデータに対応するタイプコードTCLL[1:0]を”M”(例えば、”10”)に更新する。さらに、処理判定部MPDJcは、管理情報保持部TAGL1cに保持されたタイプコードTCL1[1:0]のうち、処理対象のデータに対応するタイプコードTCL1[1:0]を”I”(例えば、”00”)に更新する。また、処理判定部MPDJcは、第1キャッシュメモリL1(スヌープ指示ISNPを受けた第1キャッシュメモリL1)から受けたデータを命令保持部DMEMに書き込み、処理要求WRBK(L1−CPB)の先行の処理要求READを再投入する。
図14は、図10に示した処理判定部SPDJcの動作の一例を示す。すなわち、図14は、サブパイプライン制御部SPLCc内の処理判定部SPDJcの動作の一例を示す。図14に示す符号”M”、”E”、”S”、”I”等の意味は、図13と同一または同様である。サブパイプライン制御部SPLCcでは、処理要求BISR−L(L1−RPL)および処理要求BISR−L(L1−CPB)のいずれかが実行される。処理要求BISR−L(L1−RPL)および処理要求BISR−L(L1−CPB)では、管理情報保持部TAGLLは参照されない(図14のTAGLL*)。
例えば、処理要求BISR−L(L1−RPL)では、要求元の第1キャッシュメモリL1は、処理対象のデータを共有状態または排他状態で保持している状態(要求元TAGL1c:S/E)である。この場合、処理判定部SPDJcは、管理情報保持部TAGL1cに保持された情報を更新せずに維持して、処理要求BISR−L(L1−RPL)および先行の処理要求に基づく一連の処理を終了する。なお、管理情報保持部TAGL1cに保持されたタイプコードTCL1[1:0]のうち、処理対象のデータに対応するタイプコードTCL1[1:0]は、先行の処理要求(例えば、処理要求READ(S))に基づく処理で既に更新されている。このため、管理情報保持部TAGL1cは、処理要求BISR−L(L1−RPL)では更新されない(図14の−**)。
また、例えば、処理要求BISR−L(L1−CPB)では、要求元以外の第1キャッシュメモリL1は、処理対象のデータを共有状態または排他状態で保持している状態(その他TAGL1c:S/E)である。この場合、処理判定部SPDJcは、管理情報保持部TAGL1cに保持されたタイプコードTCL1[1:0]のうち、処理対象のデータに対応するタイプコードTCL1[1:0]を”I”(例えば、”00”)に更新する。そして、処理判定部SPDJcは、処理要求BISR−L(L1−CPB)の先行の処理要求READを再投入する。
図15は、図6に示した使用情報保持部LRULLcの更新の一例を示す。なお、図15では、使用情報保持部LRULLc内の1つのインデックスアドレスPA[18:7]の選択情報SINF1−SINF16(SINF1[3:0]−SINF16[3:0])を示す。図15に示す選択情報SINFのビット値は、ウェイWAYの末尾の数字に対応する。例えば、ビット値”0000”の選択情報SINF16は、ウェイWAY0が登録されていることを示す。また、例えば、ビット値”1100”の選択情報SINF15は、ウェイWAY12が登録されていることを示す。
最近使用されたウェイWAYは、使用情報保持部LRULLc内の選択情報SINF1−SINF16のうち、選択情報SINF16に登録される。例えば、使用情報保持部LRULLcは、ウェイWAYが参照される度に、参照されたウェイWAYが登録された選択情報SINFより符号の末尾の数字が大きい選択情報SINFに登録されたウェイWAYを、図15のOLD側(図の左側)にシフトする。そして、使用情報保持部LRULLcは、最新のウェイWAY(参照されたWAY)を選択情報SINF16(図の一番右側)に登録する。
図16は、図3に示した演算処理装置PUの動作の一例を示す。すなわち、図16は、演算処理装置PUの制御方法の一例を示す。なお、図16は、処理要求READ(リード要求READ)を第2キャッシュメモリLLが受けた場合の第2キャッシュメモリLLの動作を示す。
ステップS100では、投入部INPは、複数の処理要求を調停する処理、複数の処理要求を第1の種類の処理要求と第2の種類の処理要求とに分類する処理等のパイプライン投入制御を実行し、動作をステップS110に移す。
ステップS110では、投入部INPは、メインパイプライン制御部MPLCcに処理要求READを投入する。これにより、メインパイプライン制御部MPLCcは、ステップS120の処理を実行する。
ステップS120では、メインパイプライン制御部MPLCcは、管理情報保持部TAGLLを参照して、第2キャッシュメモリLLがキャッシュヒットするか否かを判定する。例えば、ヒット判定部HDJは、図7、図8で説明したように、管理情報保持部TAGLLを参照して、要求アドレスRAD[47:0]で指定されるデータが第2キャッシュメモリLLでキャッシュヒットするか否かを判定する。そして、処理判定部MPDJcは、ヒット判定部HDJによる判定結果であるヒットデータ情報HTCLL[1:0]に基づいて、第2キャッシュメモリLLがキャッシュヒットするか否かを判定する。
第2キャッシュメモリLLがキャッシュヒットする場合、第2キャッシュメモリLLの動作は、ステップS130に移る。一方、第2キャッシュメモリLLがキャッシュヒットしない場合(第2キャッシュメモリLLがキャッシュミスする場合)、第2キャッシュメモリLLの動作は、ステップS300に移る。
ステップS130では、メインパイプライン制御部MPLCcは、管理情報保持部TAGL1cを参照して、処理要求READの要求元以外の第1キャッシュメモリL1のいずれかがキャッシュヒットするか否かを判定する。すなわち、メインパイプライン制御部MPLCcは、処理要求READの要求元以外の第1キャッシュメモリL1が要求アドレスRAD[47:0]で指定されるデータを保持しているか否かを判定する。
例えば、コア判定部CDJcは、図7、図9で説明したように、管理情報保持部TAGL1cを参照して、処理要求READの要求元以外の第1キャッシュメモリL1のいずれかが要求アドレスRAD[47:0]で指定されるデータを保持しているかを検出する。そして、処理判定部MPDJcは、コア判定部CDJcによる検出結果であるコアデータ情報HTC0[1:0]−HTC63[1:0]に基づいて、処理要求READの要求元以外の第1キャッシュメモリL1のいずれかがキャッシュヒットするか否かを判定する。
処理要求READの要求元以外の第1キャッシュメモリL1のいずれかがキャッシュヒットする場合、第2キャッシュメモリLLの動作は、ステップS200に移る。すなわち、処理要求READの要求元以外の第1キャッシュメモリL1が要求アドレスRAD[47:0]で指定されるデータを保持している場合、第2キャッシュメモリLLの動作は、ステップS200に移る。
一方、処理要求READの要求元以外の第1キャッシュメモリL1のいずれもキャッシュヒットしない場合(要求元以外の第1キャッシュメモリL1の全てがキャッシュミスする場合)、第2キャッシュメモリLLの動作は、ステップS400に移る。すなわち、処理要求READの要求元以外の第1キャッシュメモリL1のいずれも要求アドレスRAD[47:0]で指定されるデータを保持していない場合、第2キャッシュメモリLLの動作は、ステップS400に移る。
ステップS200では、第2キャッシュメモリLLは、L1間転送に関する処理を実行する。これにより、要求アドレスRAD[47:0]で指定されるデータは、要求元以外の第1キャッシュメモリL1から追い出される。なお、L1間転送に関する処理の詳細は、図17で説明する。
L1間転送に関する処理では、図17に示すステップS244またはステップS254において、サブパイプライン制御部SPLCcまたはメインパイプライン制御部MPLCcは、処理要求READの再投入指示を投入部INPに通知する。サブパイプライン制御部SPLCcまたはメインパイプライン制御部MPLCcが処理要求READの再投入指示を投入部INPに通知した後、第2キャッシュメモリLLの動作は、ステップS100に戻る。
ステップS300では、投入部INPは、メインパイプライン制御部MPLCcに処理要求MORPを投入する。これにより、メインパイプライン制御部MPLCcは、第2キャッシュメモリLLからデータを追い出すリプレース処理を実行する。メインパイプライン制御部MPLCcに処理要求MORPが投入された後、第2キャッシュメモリLLの動作は、ステップS310に移る。
ステップS310では、第2キャッシュメモリLLは、リプレース処理の完了と、要求アドレスRAD[47:0]で指定されるデータを保持している主記憶装置等の外部装置からのデータ応答を待ち、データ応答等を受けた後、動作をステップS320に移す。
ステップS320では、投入部INPは、メインパイプライン制御部MPLCcに処理要求MVINを投入する。これにより、メインパイプライン制御部MPLCcは、要求アドレスRAD[47:0]で指定されるデータを第2キャッシュメモリLLに登録する処理を実行する。第2キャッシュメモリLLは、要求アドレスRAD[47:0]で指定されるデータを登録した後、動作をステップS400に移す。
ステップS400では、メインパイプライン制御部MPLCcは、要求アドレスRAD[47:0]で指定されるデータを要求元の第1キャッシュメモリL1に転送するとともに、リプレース指示を要求元の第1キャッシュメモリL1に通知する。さらに、メインパイプライン制御部MPLCcは、使用情報保持部LRULLcおよび管理情報保持部TAGL1cに保持された情報を更新する。
例えば、メインパイプライン制御部MPLCcは、要求アドレスRAD[13:7]で指定される第1管理情報INFL1c0−INFL1c63のうち、要求ウェイ情報REQCWAYで指定される第1管理情報INFL1cを更新する。これにより、要求アドレスRAD[47:0]に基づくウェイ情報WAYLL[3:0]および差分情報PA[18:14]と、タイプコードTCL1[1:0]とが、管理情報保持部TAGL1cに登録される。ステップS400の処理が実行された後、第2キャッシュメモリLLの動作は、ステップS410に移る。
ステップS410では、第2キャッシュメモリLLは、第1キャッシュメモリL1でのリプレース処理の完了を待ち、第1キャッシュメモリL1でのリプレース処理が完了した後、動作をステップS420に移す。
ステップS420では、第2キャッシュメモリLLは、L1リプレース完了処理を実行する。L1リプレース完了処理は、第1キャッシュメモリL1でのリプレース処理の完了に伴い第2キャッシュメモリLLで実行される処理である。L1リプレース完了処理の終了により、処理要求READに伴う一連の処理は、終了する。なお、L1リプレース完了処理の詳細は、図18で説明する。
図17は、図16に示したL1間転送に関する処理(ステップS200の処理)の一例を示す。図17以降では、処理要求READの要求元以外の第1キャッシュメモリL1のうち、要求アドレスRAD[47:0]で指定される転送データを保持している第1キャッシュメモリL1は、転送元の第1キャッシュメモリL1とも称される。
ステップS210では、メインパイプライン制御部MPLCcは、転送元の第1キャッシュメモリL1にスヌープ指示ISNPを通知し、転送元の第1キャッシュメモリL1に対するスヌープロックを実行する指示をスヌープロック部SNPに出力する。以下、スヌープロックを実行する指示は、スヌープロックの指示とも称される。
次に、ステップS220では、第2キャッシュメモリLLは、第1キャッシュメモリL1でのスヌープ処理の完了を待ち、第1キャッシュメモリL1でのスヌープ処理が完了した後、動作をステップS230に移す。
ステップS230では、第2キャッシュメモリLLは、転送データがクリーンか否かを判定する。例えば、転送元の第1キャッシュメモリL1は、スヌープ処理の結果として、転送データがクリーンか否かを示す処理結果を第2キャッシュメモリLLに出力する。そして、第2キャッシュメモリLLは、第1キャッシュメモリL1から受けた処理結果に基づいて、転送データがクリーンか否かを判定する。
転送データがクリーンである場合、第2キャッシュメモリLLの動作は、ステップS240に移る。一方、転送データがクリーンでない場合(転送データがダーティである場合)、第2キャッシュメモリLLの動作は、ステップS250に移る。
ステップS240では、投入部INPは、サブパイプライン制御部SPLCcに処理要求BISR−L(L1−CPB)を投入する。処理要求BISR−L(L1−CPB)を受けたサブパイプライン制御部SPLCcは、ステップS242の処理を実行する。
ステップS242では、サブパイプライン制御部SPLCcは、管理情報保持部TAGL1cに保持された第1管理情報INFL1c内のタイプコードTCL1を”I”(無効)に更新し、スヌープロックを解除する指示をスヌープロック部SNPに出力する。以下、スヌープロックを解除する指示は、スヌープロックの解除指示とも称される。
なお、ステップS242で更新される第1管理情報INFL1cは、転送データを保持した転送元の第1キャッシュメモリL1のウェイに対応する第1管理情報INFL1cのうち、要求アドレスRAD[13:7]で指定される第1管理情報INFL1cである。ステップS242の処理が実行された後、第2キャッシュメモリLLの動作は、ステップS244に移る。
ステップS244では、サブパイプライン制御部SPLCcは、処理要求READの再投入指示を投入部INPに出力し、L1間転送に関する処理を終了する。これにより、投入部INPは、図16に示したステップS100の処理を実行し、ステップS110において、メインパイプライン制御部MPLCcに処理要求READを再投入する。
ステップS250では、投入部INPは、メインパイプライン制御部MPLCcに処理要求WRBK(L1−CPB)を投入する。処理要求WRBK(L1−CPB)を受けたメインパイプライン制御部MPLCcは、ステップS252の処理を実行する。
ステップS252では、メインパイプライン制御部MPLCcは、第1キャッシュメモリL1から転送された転送データをデータ保持部DMEMに書き込む。そして、メインパイプライン制御部MPLCcは、管理情報保持部TAGLLに保持された第2管理情報INFLL内のタイプコードTCLLを”M”(変更)に更新する。これにより、要求アドレスRAD[18:7]で指定される第2管理情報INFLL0−INFLL15のうち、要求アドレスRAD[47:19]に一致するタグアドレスPA[47:19]を有する第2管理情報INFLLが更新される。
また、メインパイプライン制御部MPLCcは、管理情報保持部TAGL1cに保持された第1管理情報INFL1c内のタイプコードTCL1を”I”(無効)に更新し、スヌープロックの解除指示をスヌープロック部SNPに出力する。
なお、ステップS252で更新される第1管理情報INFL1cは、転送データを保持した転送元の第1キャッシュメモリL1のウェイに対応する第1管理情報INFL1cのうち、要求アドレスRAD[13:7]で指定される第1管理情報INFL1cである。ステップS252の処理が実行された後、第2キャッシュメモリLLの動作は、ステップS254に移る。
ステップS254では、メインパイプライン制御部MPLCcは、処理要求READの再投入指示を投入部INPに出力し、L1間転送に関する処理を終了する。これにより、投入部INPは、図16に示したステップS100の処理を実行し、ステップS110において、メインパイプライン制御部MPLCcに処理要求READを再投入する。
図18は、図16に示したL1リプレース完了処理(ステップS420の処理)の一例を示す。
ステップS430では、第2キャッシュメモリLLは、第1キャッシュメモリL1でのリプレース処理により第1キャッシュメモリL1から追い出されるリプレースデータがクリーンか否かを判定する。例えば、処理要求READの要求元の第1キャッシュメモリL1は、リプレース処理の結果として、リプレースデータがクリーンか否かを示す処理結果を第2キャッシュメモリLLに出力する。そして、第2キャッシュメモリLLは、第1キャッシュメモリL1から受けた処理結果に基づいて、リプレースデータがクリーンか否かを判定する。
リプレースデータがクリーンである場合、第2キャッシュメモリLLの動作は、ステップS440に移る。一方、リプレースデータがクリーンでない場合(リプレースデータがダーティである場合)、第2キャッシュメモリLLの動作は、ステップS450に移る。
ステップS440では、投入部INPは、サブパイプライン制御部SPLCcに処理要求BISR−L(L1−RPL)を投入する。処理要求BISR−L(L1−RPL)を受けたサブパイプライン制御部SPLCcは、ステップS442の処理を実行する。
ステップS442では、サブパイプライン制御部SPLCcは、スヌープロックの解除指示をスヌープロック部SNPに出力し、L1リプレース完了処理を終了する。
ステップS450では、投入部INPは、メインパイプライン制御部MPLCcに処理要求WRBK(L1−RPL)を投入する。処理要求WRBK(L1−RPL)を受けたメインパイプライン制御部MPLCcは、ステップS452の処理を実行する。
ステップS452では、メインパイプライン制御部MPLCcは、第1キャッシュメモリL1から転送されたリプレースデータをデータ保持部DMEMに書き込む。そして、メインパイプライン制御部MPLCcは、管理情報保持部TAGLLに保持された第2管理情報INFLL内のタイプコードTCLLを”M”(変更)に更新する。これにより、要求アドレスRAD[18:7]で指定される第2管理情報INFLL0−INFLL15のうち、要求アドレスRAD[47:19]に一致するタグアドレスPA[47:19]を有する第2管理情報INFLLが更新される。
また、メインパイプライン制御部MPLCcは、スヌープロックの解除指示をスヌープロック部SNPに出力し、L1リプレース完了処理を終了する。なお、演算処理装置PUの動作は、図16から図18に示す例に限定されない。
図19は、リプレースデータがクリーンである場合の演算処理装置PUの動作の一例を示す。
コアCORE0は、第1キャッシュメモリL1がキャッシュミスしたため、処理要求READおよび要求アドレスRADを、投入部INPを介してメインパイプライン制御部MPLCcに転送する(図19(a))。
メインパイプライン制御部MPLCcは、要求アドレスRADに対応する第2管理情報INFLLを管理情報保持部TAGLLから検索し、要求アドレスRADに対応する第1管理情報INFL1cを管理情報保持部TAGL1cから検索する。
図19に示す例では、管理情報保持部TAGLLがヒットし、管理情報保持部TAGL1cがミスする。すなわち、要求アドレスRADで指定される要求データは、第2キャッシュメモリLLに保持され、複数のコアCOREの第1キャッシュメモリL1のいずれにも保持されていない。この場合、メインパイプライン制御部MPLCcは、データ保持部MEMにアクセスして、要求データを読み出す(図19(b))。
そして、メインパイプライン制御部MPLCcは、データ保持部MEMから読み出した要求データをコアCORE0に転送する(図19(c))。コアCORE0内のプロセッサコアPCORは、第2キャッシュメモリLLから転送された要求データを用いて演算等を実行する。
また、メインパイプライン制御部MPLCcは、管理情報保持部TAGLL、TAGL1cに保持された情報の更新(処理要求READに基づく上書き更新)を実行する。そして、メインパイプライン制御部MPLCcは、処理要求READの要求元のコアCORE0に、データ応答コマンドとリプレース指示IRPLとを出力する(図19(d))。また、メインパイプライン制御部MPLCcは、スヌープロック部SNPにコアCORE0のスヌープロックの指示を出力する(図19(e))。
コアCORE0は、第1キャッシュメモリL1への要求データの登録とリプレース処理とが完了した場合、処理要求BISR−L(L1−RPL)を、投入部INPを介してサブパイプライン制御部SPLCcに転送する(図19(f))。なお、図19に示す例では、リプレース処理で第1キャッシュメモリL1から追い出したリプレースデータがクリーンであるため、処理要求BISR−L(L1−RPL)がサブパイプライン制御部SPLCcに転送される。
管理情報保持部TAGLLに保持された第2管理情報INFLLは、第1キャッシュメモリL1の状態に関する情報を含まないため、更新されない。また、管理情報保持部TAGL1cに保持された第1管理情報INFL1cが処理要求READに基づく処理で既に更新されているため、処理要求BISR−L(L1−RPL)では、第1管理情報INFL1cは、更新されない。このため、サブパイプライン制御部SPLCcは、スヌープロック部SNPにコアCORE0のスヌープロックの解除指示を出力して(図19(g))、処理要求BISR−L(L1−RPL)に基づく処理を終了する。
このように、処理要求BISR−L(L1−RPL)がメインパイプライン制御部MPLCcに投入されない。このため、処理要求BISR−L(L1−RPL)がサブパイプライン制御部SPLCcに投入されるサイクルに、処理要求READをメインパイプライン制御部MPLCcに投入することができる。これにより、処理要求READをメインパイプライン制御部MPLCcに毎サイクル投入することができる。
図20は、L1間転送時の演算処理装置PUの動作の一例を示す。なお、図20は、コアCORE1内の第1キャッシュメモリL1からコアCORE0内の第1キャッシュメモリL1にデータを転送するL1間転送時の演算処理装置PUの動作の一例を示す。図20に示す例では、コアCORE1内の第1キャッシュメモリL1に保持された転送データは、クリーンである。
コアCORE0は、第1キャッシュメモリL1がキャッシュミスしたため、処理要求READおよび要求アドレスRADを、投入部INPを介してメインパイプライン制御部MPLCcに転送する(図20(a))。
メインパイプライン制御部MPLCcは、要求アドレスRADに対応する第2管理情報INFLLを管理情報保持部TAGLLから検索し、要求アドレスRADに対応する第1管理情報INFL1cを管理情報保持部TAGL1cから検索する。
図20に示す例では、管理情報保持部TAGLLがヒットし、管理情報保持部TAGL1cがコアCORE1に対応する第1管理情報INFL1cでヒットする。なお、ヒットした第1管理情報INFL1c内のタイプコードTCL1cは、排他状態を示す。すなわち、要求アドレスRADで指定される要求データは、第2キャッシュメモリLLに保持され、さらに、コアCORE1の第1キャッシュメモリL1に排他状態で保持されている。この場合、メインパイプライン制御部MPLCcは、コアCORE1にスヌープ指示ISNPを出力する(図20(b))。また、メインパイプライン制御部MPLCcは、スヌープロック部SNPにコアCORE1のスヌープロックの指示を出力する(図20(c))。
コアCORE1は、スヌープ処理が完了した場合、転送データがクリーンであるため、処理要求BISR−L(L1−CPB)を、投入部INPを介してサブパイプライン制御部SPLCcに転送する(図20(d))。サブパイプライン制御部SPLCcは、管理情報保持部TAGL1cに保持された第1管理情報INFL1cのうち、コアCORE1内の第1キャッシュメモリL1に保持された転送データの第1管理情報INFL1c内のタイプコードTCL1cを無効に更新する。
サブパイプライン制御部SPLCcは、転送データの第1管理情報INFL1c内のタイプコードTCL1cを無効に更新した後、処理要求READの再投入指示を投入部INPに出力する(図20(e))。また、サブパイプライン制御部SPLCcは、スヌープロック部SNPにコアCORE1のスヌープロックの解除指示を出力する(図20(f))。コアCORE1のスヌープロックを解除した後の動作は、図19に示した動作と同一または同様である。
図21は、図3に示した第1キャッシュメモリL1でキャッシュミスが連続した場合のパイプライン制御部の動作の一例を示す。なお、図21に示す例では、第1キャッシュメモリL1から追い出されるリプレースデータは、全てクリーンである。また、図21では、1サイクル(cycle)のデータ転送量の上限が128バイトであるとして説明する。
第2キャッシュメモリLLでは、処理要求BISR−L専用のサブパイプライン制御部SPLCcが設けられたため、処理要求READと処理要求BISR−L(L1−RPL)との両方を毎サイクル投入することができる。例えば、処理要求READは、メインパイプライン制御部MPLCcに毎サイクル投入され、処理要求BISR−L(L1−RPL)は、サブパイプラインSPLCcに毎サイクル投入される。制御上、データアクセスを伴わないサイクルが発生しないため、128バイト/サイクルのスループットを実現することができる。
これに対し、サブパイプライン制御部SPLCcを含まない比較例では、128バイト/サイクルのスループットを実現するため、例えば、偶数アドレス用と奇数アドレス用との2つのパイプライン制御部が設けられる。比較例の各パイプライン制御部は、処理要求READと処理要求BISR−L(L1−RPL)とが交互に投入されるため、データアクセスを伴わないサイクルが発生する。処理要求READに基づく処理では、例えば、128バイト/ブロック(block)のデータが転送される。この場合、1つのパイプライン制御部のスループットが64バイト/サイクルである。このため、比較例では、2つのパイプライン制御部を合わせて128バイト/サイクルのスループットを実現する。
比較例では、2つのパイプライン制御部が互いに同一または同様な処理を実行するため、2つのパイプライン制御部を含むキャッシュメモリの回路規模は、第2キャッシュメモリLLに比べて増加する。すなわち、第2キャッシュメモリLLは、メインパイプライン制御部MPLCcとメインパイプライン制御部MPLCcに比べて回路規模の小さいサブパイプライン制御部SPLCcとを用いることにより、回路規模の増加を抑制しつつ、スループットを向上できる。
以上、図3から図21に示す実施形態においても、図1および図2に示した実施形態と同様の効果を得ることができる。例えば、第2キャッシュメモリLLは、第1の種類の処理要求に基づく処理(例えば、ライトバックを伴わないリプレース完了処理)と、リード要求等の第2の種類の処理要求に基づく処理とを並列に実行できる。これにより、第1の種類の処理要求に基づく処理と第2の種類の処理要求に基づく処理とを並列に実行できない手法(例えば、図21に示した比較例)に比べて、回路規模の増加を抑制しつつ、第2キャッシュメモリLLのスループットを向上できる。
図22は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図1から図21で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図22に示す演算処理装置PUは、例えば、命令を実行するCPU等のプロセッサである。
演算処理装置PUは、複数のコアCORE(CORE0、CORE1、・・・、CORE7)と、第2キャッシュメモリLLと、主記憶制御部MCNTLと、入出力制御部IOCNTLと、CPUインタフェース部CIFとを有する。コアCORE、主記憶制御部MCNTL、入出力制御部IOCNTLおよびCPUインタフェース部CIFは、図3に示したコアCORE、主記憶制御部MCNTL、入出力制御部IOCNTLおよびCPUインタフェース部CIFと同一または同様である。例えば、各コアCOREは、プロセッサコアPCORと、第2キャッシュメモリLLに比べて高速にアクセス可能な第1キャッシュメモリL1とを有する。
第2キャッシュメモリLLは、第1キャッシュメモリL1より下位の階層の2次キャッシュメモリであり、複数のコアCOREに共有される。例えば、第2キャッシュメモリLLは、データ保持部DMEM、管理情報保持部TAGL1a、TAGLLおよび使用情報保持部LRULLaを有する。さらに、第2キャッシュメモリLLは、投入部INP、メインパイプライン制御部MPLCa、サブパイプライン制御部SPLCaおよびスヌープロック部SNPを有する。
データ保持部DMEM、管理情報保持部TAGLL、投入部INPおよびスヌープロック部SNPは、図3に示した管理情報保持部TAGLL、投入部INPおよびスヌープロック部SNPと同一または同様である。使用情報保持部LRULLaは、図6に示した選択部SLUが使用情報保持部LRULLcから省かれることを除いて、図6に示した使用情報保持部LRULLcと同一または同様である。管理情報保持部TAGL1aおよびメインパイプライン制御部MPLCaの詳細は、図23で説明する。サブパイプライン制御部SPLCcの詳細は、図25で説明する。
図23は、図22に示したメインパイプライン制御部MPLCaの一例を示す図である。図23に示す一点鎖線は、パイプライン処理の各ステージの境界に対応する。なお、図23に示す管理情報保持部TAGL1aは、図5に示した第1管理情報INFL1cの代わりに第1管理情報INFL1aを保持することを除いて、図5に示した管理情報保持部TAGL1cと同一または同様である。各第1管理情報INFL1aは、図5に示したウェイ情報WAYLL[3:0]および差分情報PA[18:14]の代わりに、第1キャッシュメモリL1のタグアドレスPA[47:14]を有する。第1キャッシュメモリL1のタグアドレスPA[47:14]は、メモリアドレスRAD[47:0]の一部分(14から47ビット)のビット群で表される。すなわち、各第1管理情報INFL1aは、タグアドレスPA[47:14]およびタイプコードTCL1[1:0]を有する。
メインパイプライン制御部MPLCaは、図7に示したコア判定部CDJcおよび処理判定部MPDJcの代わりに、コア判定部CDJaおよび処理判定部MPDJaを有する。メインパイプライン制御部MPLCaのその他の構成は、図7に示したメインパイプライン制御部MPLCcと同一または同様である。例えば、メインパイプライン制御部MPLCaは、ヒット判定部HDJ、コア判定部CDJaおよび処理判定部MPDJaを有する。
コア判定部CDJaは、複数の第1キャッシュメモリL1のいずれかがキャッシュヒットするか否かを判定する。例えば、コア判定部CDJaは、インデックスアドレスRAD[13:7]で指定される第1管理情報INFL1a0−INFL1a63を管理情報保持部TAGL1aから受ける。また、コア判定部CDJaは、アドレスRAD[47:14]と、第1キャッシュメモリL1から追い出すリプレースデータが保持された第1キャッシュメモリL1のウェイの番号等を示す要求ウェイ情報REQCWAYとを投入部INPから受ける。
例えば、コア判定部CDJaは、要求ウェイ情報REQCWAYと、各第1管理情報INFL1a内のタイプコードTCL1[1:0]とを用いて、要求データ情報RTCL1[1:0]を生成する。また、コア判定部CDJaは、アドレスRAD[47:14]と各第1管理情報INFL1aとを用いて、コアデータ情報HTC0[1:0]−HTC63[1:0]を生成する。コアデータ情報HTCの末尾の数字は、第1管理情報INFL1aの末尾の数字に対応する。なお、第1管理情報INFL1aの末尾の数字の意味は、図5に示した第1管理情報INFL1cの末尾の数字の意味と同一である。
例えば、コア判定部CDJaは、アドレスRAD[47:14]と管理情報保持部TAGL1aから受けた各第1管理情報INFL1a内のタグアドレスPA[47:14]とを比較する。管理情報保持部TAGL1aから受けた第1管理情報INFL1a内のタグアドレスPA[47:14]のいずれかがアドレスRAD[47:14]と一致した場合、コア判定部CDJaは、第1キャッシュメモリL1のいずれかがキャッシュヒットしたと判定する。
コアデータ情報HTC0[1:0]−HTC63[1:0]は、図3で説明したように、第1キャッシュメモリL1でキャッシュヒットしたデータ(第1キャッシュメモリL1に保持されたデータ)の状態を示す。なお、キャッシュミスしたデータに対応するコアデータ情報HTC0[1:0]−HTC63[1:0]は、例えば、”00”に設定される。
要求データ情報RTCL1[1:0]は、図3で説明したように、アドレスRAD[13:7]で指定されたデータのうち、要求ウェイ情報REQCWAYで指定された第1キャッシュメモリL1のウェイに保持されたデータの状態を示す。コア判定部CDJaの詳細は、図24で説明する。
処理判定部MPDJaは、図6に示した使用情報保持部LRULLcの代わりに使用情報保持部LRULLaに保持された選択情報SINFを更新することを除いて、図3に示した処理判定部MPDJcと同一または同様である。例えば、処理判定部MPDJaは、ヒットデータ情報HTCLL[1:0]をヒット判定部HDJから受け、コアデータ情報HTC0[1:0]−HTC63[1:0]および要求データ情報RTCL1[1:0]をコア判定部CDJaから受ける。さらに、処理判定部MPDJaは、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]を投入部INPから受ける。
そして、例えば、処理判定部MPDJaは、アップデート指示UPDLLを管理情報保持部TAGLLに出力し、アップデート指示UPDL1aを管理情報保持部TAGL1aに出力する。また、処理判定部MPDJaは、アップデート指示UPDLRUを使用情報保持部LRULLaに出力する。
図24は、図23に示したコア判定部CDJaの一例を示す。コア判定部CDJaは、複数の判定部DJL1a(DJL1a0−DJL1a63)と、選択部SEL2とを有する。判定部DJL1aの末尾の数字は、第1管理情報INFL1aの末尾の数字に対応する。複数の判定部DJL1aは互いに同一または同様であるため、判定部DJL1a0について説明する。
判定部DJL1a0は、マッチ検出部MD3および論理積回路AND4を有する。マッチ検出部MD3は、アドレスRAD[13:7]で指定されるインデックスアドレスPA[13:7]に対応する第1管理情報INFL1a0内のタグアドレスPA[47:14]を、管理情報保持部TAGL1aから受ける。そして、マッチ検出部MD3は、投入部INPから受けたアドレスRAD[47:14]と、第1管理情報INFL1a0内のタグアドレスPA[47:14]とを比較し、比較結果を論理積回路AND4に出力する。例えば、アドレスRAD[47:14]とタグアドレスPA[47:14]とが一致する場合、マッチ検出部MD3は、真を示す情報(例えば、論理値”1”)を比較結果として論理積回路AND4に出力する。また、アドレスRAD[47:14]とタグアドレスPA[47:14]とが一致しない場合、マッチ検出部MD3は、偽を示す情報(例えば、論理値”0”)を比較結果として論理積回路AND4に出力する。
論理積回路AND4は、アドレスRAD[13:7]で指定されるインデックスアドレスPA[13:7]に対応する第1管理情報INFL1a0内のタイプコードTCL1[1:0]を、管理情報保持部TAGL1aから受ける。
そして、論理積回路AND4は、マッチ検出部MD3による比較結果と管理情報保持部TAGL1aから受けたタイプコードTCL1[1:0]との論理積を演算し、演算結果をコアデータ情報HTC0[1:0]として出力する。例えば、アクセス対象のデータがコアCORE0の第1キャッシュメモリL1における0番目のウェイに保持されている場合、マッチ検出部MD3による比較結果は、真(例えば、論理値”1”)になる。この場合、判定部DJL1a0は、管理情報保持部TAGL1aから受けたタイプコードTCL1[1:0]をコアデータ情報HTC0[1:0]として処理判定部MPDJaに出力する。
選択部SEL2は、図9に示した選択部SEL2と同一または同様である。例えば、選択部SEL2は、要求ウェイ情報REQCWAYで指定されるタイプコードTCL1[1:0]を要求データ情報RTCL1[1:0]として、処理判定部MPDJaに転送する。
第1管理情報INFL1aには、図5等に示したウェイ情報WAYLL[3:0]が含まれないため、コア判定部CDJaは、図9等に示した所持情報CINF0−CINF15を生成しない。このため、図22に示した演算処理装置PUでは、第1キャッシュメモリL1に保持されたデータを保持する第2キャッシュメモリLLのウェイWAYをリプレース対象から除外する処理は、実行されない。換言すれば、ウェイ情報WAYLL[3:0]を含む第1管理情報INFL1cを保持する管理情報保持部TAGL1cを用いることにより、図6で説明したように、キャッシュヒットの頻度が低下することを抑止することができる。
図25は、図22に示したサブパイプライン制御部SPLCaの一例を示す図である。図25に示す一点鎖線は、パイプライン処理の各ステージの境界に対応する。サブパイプライン制御部SPLCaは、選択部SEL3および処理判定部SPDJaを有する。
選択部SEL3は、図10に示した選択部SEL3と同一または同様である。例えば、選択部SEL3は、管理情報保持部TAGL1aから受けた複数のタイプコードTCL1[1:0]のうち、要求ウェイ情報REQCWAYで指定されるタイプコードTCL1[1:0]を要求データ情報RTCL1[1:0]として選択する。そして、選択部SEL3は、要求データ情報RTCL1[1:0]を処理判定部SPDJaに出力する。
処理判定部SPDJaは、要求データ情報RTCL1[1:0]を選択部SEL3から受け、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]を投入部INPから受ける。そして、処理判定部SPDJaは、要求データ情報RTCL1[1:0]、処理情報PID[3:0]およびオペレーション情報OPCD[1:0]に基づいて、管理情報保持部TAGL1aに保持された第1管理情報INFL1aを更新する。例えば、処理判定部SPDJaは、アップデート指示UPDL1aを管理情報保持部TAGL1aに出力する。
以上、図22から図25に示す実施形態においても、図1および図2に示した実施形態と同様の効果を得ることができる。例えば、第2キャッシュメモリLLは、第1の種類の処理要求に基づく処理(例えば、ライトバックを伴わないリプレース完了処理)と、リード要求等の第2の種類の処理要求に基づく処理とを並列に実行できる。これにより、第1の種類の処理要求に基づく処理と第2の種類の処理要求に基づく処理とを並列に実行できない手法(例えば、図21に示した比較例)に比べて、回路規模の増加を抑制しつつ、第2キャッシュメモリLLのスループットを向上できる。
図26は、図3および図22に示した演算処理装置PUが搭載されるシステムの一例を示す。システムSYSは、例えば、サーバ等の情報処理装置である。システムSYSは、複数のシステムボードSBD(SBD1、SBD2)を有する。システムボードSBD1、SBD2は、互いに同一または同様の構成である。
各システムボードSBDは、複数の演算処理装置PUと、複数の演算処理装置PUにそれぞれ接続される複数の入出力装置IOUと、複数の演算処理装置PUにそれぞれ接続される複数のメモリMEMと、CPU接続インタフェース装置CIFUとを有する。
複数の演算処理装置PU(図3または図22に示した演算処理装置PU)は、各演算処理装置PU内のCPUインタフェース部CIFを介して互いに接続される。また、複数の演算処理装置PU(より詳細には、演算処理装置PU内のCPUインタフェース部CIF)は、CPU接続インタフェース装置CIFUに接続される。そして、システムボードSBD1のCPU接続インタフェース装置CIFUおよびシステムボードSBD2のCPU接続インタフェース装置CIFUは、互いに接続される。
入出力装置IOUは、例えば、演算処理装置PUにデータを入力するキーボード等の入力装置および演算処理装置PUの処理結果を外部に出力するディスプレイ等の出力装置であり、演算処理装置PU内の出力制御部IOCNTLに接続される。メモリMEMは、例えば、第2キャッシュメモリLLより下位の階層の主記憶装置であり、演算処理装置PU内の主記憶制御部MCNTLに接続される。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。