(58)【調査した分野】(Int.Cl.,DB名)
前記キャッシュ制御部は,前記発行されたプリフェッチ要求を処理して,前記主記憶管理部に前記メインメモリから前記入力データを読み出させる請求項3に記載の演算処理装置。
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記プリフェッチ要求のアドレスと前記主記憶管理部が処理中の入力データストア要求のエントリのアドレスとが一致する場合に,前記プリフェッチ要求をアボートし,前記主記憶管理部による前記メインメモリへの前記入力データの書き込みが完了した後に,前記アボートされたプリフェッチ要求を処理する請求項4に記載の演算処理装置。
前記主記憶管理部は,前記入力データストア要求に応答して前記メインメモリに前記入力データを書き込んだ後,前記入力データを保持した状態で前記入力データストア要求のエントリを保持し,
前記書き込み後,前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から前記入力データを取得する請求項5に記載の演算処理装置。
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記プリフェッチ要求のアドレスと前記主記憶管理部が処理中の入力データストア要求のエントリのアドレスとが一致し前記主記憶管理部による前記入力データの前記メインメモリへの書き込みが完了していない場合に,前記プリフェッチ要求をアボートし,前記主記憶管理部による前記書き込みが完了した後に,前記アボートされたプリフェッチ要求を処理する請求項7に記載の演算処理装置。
前記主記憶管理部は,前記入力データストア要求に応答して前記入力データを取得した後,前記入力データを保持した状態で前記入力データストア要求のエントリを保持し,
前記入力データの取得後,前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から前記入力データを取得する請求項9に記載の演算処理装置。
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記プリフェッチ要求のアドレスと前記主記憶管理部が処理中の入力データストア要求のエントリのアドレスとが一致し前記主記憶管理部による前記入力データの取得が完了していない場合に,前記プリフェッチ要求をアボートし,前記主記憶管理部による前記入力データの取得が完了した後に,前記アボートされたプリフェッチ要求を処理する請求項10に記載の演算処理装置。
メモリアクセス要求とプリフェッチ要求を出力する演算処理部と,前記メモリアクセス要求と前記プリフェッチ要求に加えて入力データを記憶する入力データストア要求を処理するキャッシュ制御部と,キャッシュメモリを有するキャッシュと,メインメモリを制御する主記憶管理部とを有する演算処理装置の制御方法であって,
前記キャッシュ制御部は,前記入出力装置からのキャッシュ登録指示付きの入力データストア要求に応答して,前記主記憶管理部に前記入力データストア要求を出力すると共に前記プリフェッチ要求を発行し,
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記入力データストア要求の入力データを前記キャッシュメモリに登録する演算処理装置の制御方法。
【発明を実施するための形態】
【0014】
図1は,本実施の形態における演算処理装置(CPU(Central Processing Unit)またはCPUチップとも称する)の構成を示す図である。CPU1は,複数の演算処理部(またはCPUコアと称する)10と,CPU1の外部の記憶媒体2との入出力制御を行うIOコントローラ11と,レベル2(L2)のキャッシュ(またはキャッシュメモリ部)20とを有する。また,CPU1は,DRAMなどのメインメモリ(主記憶装置とも称する)12と接続されている。
【0015】
キャッシュ20は,複数の要求格納部21,22,23と,要求格納部に格納されている要求のうちキャッシュ制御部25に投入する要求を所定の論理で選択しキャッシュ制御部25に投入する要求投入選択部24とを有する。さらに,キャッシュ20は,投入された要求を処理するキャッシュ制御部(またはキャッシュパイプライン)25と,キャッシュタグ26と,キャッシュデータ部27とを有する。キャッシュタグ26は,キャッシュ登録したデータのアドレスやデータの状態を格納し,キャッシュデータ部27は,キャッシュ登録したデータを格納する。キャッシュメモリは,キャッシュタグ26とキャッシュデータ部27とで構成される。
【0016】
キャッシュ20は,また,キャッシュ制御部25がキャッシュミスした場合にメインメモリへのアクセス要求を格納するキャッシュミス要求格納部28と,そのメインメモリへのアクセス要求を処理してメインメモリ12へのアクセスを制御する主記憶管理部29とを有する。この主記憶管理部29は,メインメモリ12へのアクセス制御を行うメモリアクセスコントローラを内蔵する。そして,キャッシュ20は,キャッシュデータ部27から読み出されたデータとメインメモリ12から読み出されたデータのいずれかを選択するセレクタ30を有する。
【0017】
前述の要求格納部は,複数のCPUコア10から発行されるアクセス要求をそれぞれ格納する複数の要求格納部21と,IOコントローラ11から発行されるIOストア要求等を格納するIOストア要求格納部22と,キャッシュ登録指示付きIOストア要求に対応して発行されるプリフェッチ要求を格納するIOストア用プリフェッチ要求格納部23とを有する。
【0018】
本実施の形態のCPU1は,IOコントローラ11が外部から入力するデータをメインメモリ12に書き込む通常のIOストア要求と,CPUコア10がメインメモリ12またはキャッシュメモリ27のデータを読み出してCPUコア10にデータ応答するロード要求と,メインメモリ12のデータを読み出してキャッシュメモリ26,27に登録するプリフェッチ要求と,IOコントローラが外部の記憶媒体2等から入力するデータをメインメモリ12に書き込んでまたは書き込まずにキャッシュに登録するキャッシュ登録指示付きIOストア要求とを処理する。また,CPU1は,CPUコア10がメインメモリ12にデータを書き込むストア要求を処理する。メモリアクセス要求は,上記のロード要求とストア要求とを含む。以下,各要求の動作について順に説明する。
【0019】
[通常のIOストア要求とロード要求]
図2は,本実施の形態におけるCPU1による通常のIOストア要求とロード要求の処理を示すシーケンス図である。
図2には,CPUコア10が発行するDMA発行指示に対するIOストア要求の処理と,その後CPUコア10が発行するロード要求の処理とが示されている。
【0020】
まず,CPUコア10は,IOコントローラ11にダイレクトメモリアクセス(DMA)発行要求を出力する(S1)。
図2には示されていないが,このDMA発行要求は,一旦要求格納部21に格納され,キャッシュ制御部25に投入され,IOコントローラ11に指示される。それに応答して,IOコントローラ11は,通常のIOストア要求を発行しIOストア要求格納部22に格納する(S2)。
【0021】
そして,要求投入選択部24が通常IOストア要求をキャッシュ制御部25に投入し(S3),キャッシュ制御部25はそれに応答してIOストア要求を主記憶管理部29に出力する(S4)。また,
図2には示されていないが,キャッシュ制御部25は,キャッシュタグ26を検索してIOストア要求のアドレスが登録されているかをチェックし,登録されていればそれを無効化する。メインメモリ12に書き込まれるデータとのコヒーレンシを保つためである。
【0022】
主記憶管理部29は,このIOストア要求に応答して,まずメインメモリ12内のディレクトリを読み出し(S5,S6),これから書き込むアドレスのデータが他のCPUがキャッシュに登録しているか否かをチェックする。主記憶管理部20は,他のCPUがキャッシュ登録している場合は,それをインバリデート(無効化)するように他のCPUのキャッシュ制御部に要求する。この無効化の処理は
図2には示されていない。
【0023】
同時に,主記憶管理部29は,IOストアするデータをIOストア要求格納部22に要求すし(S7),データ応答を受信する(S8)。ストア要求などのライト系の要求には,要求に対応するコマンドとライトすべきデータとが含まれる。データ応答後に,主記憶管理部29は,受信したデータのライト要求をメインメモリ12に出力してライト処理させ(S9),ライト応答を受信する(S10)。これに応答して,主記憶管理部29は,IOストア要求完了応答をIOストア要求格納部22に送信する(S11)。これにより,通常IOストア要求の処理が完了する。
【0024】
次に,CPUコア10は,IOストア要求のメモリアドレスに対してロード要求を発行し,要求格納部21にロード要求を格納する(S20)。そして,このロード要求がキャッシュ制御部25に投入される(S21)。キャッシュ制御部25が,投入されたロード要求のアドレスに基づいてキャッシュタグ26を検索しキャッシュミスし(S22),メモリロード要求をキャッシュミス要求格納部28と主記憶管理部29に出力する(S23)。
【0025】
このメモリロード要求に応答して,主記憶管理部29は,メインメモリ12にリード要求を出力し(S24),リード応答としてリードしたデータを受信し(S25),キャッシュミス要求格納部28にそのデータを返信するデータ応答を行う(S26)。また,主記憶管理部29は,データ応答S26と同時に,メモリロード要求を発行したキャッシュ制御部25に対して,メモリロード要求のエントリの処理が完了したことを通知するエントリの解放通知を行う。
【0026】
キャッシュミス要求格納部28は,データ応答S26に応答してキャッシュ登録要求を発行し,要求投入選択部24を介してキャッシュ制御部25に投入する(S27)。このキャッシュ登録要求に応答して,キャッシュ制御部25は,キャッシュタグにアドレス情報などの登録を行い(S28),キャッシュデータ部27にデータの登録を行い(S29),同時にCPUコア10にデータ応答を行う(S30)。また,キャッシュ制御部25は,キャッシュミス要求格納部28にエントリの解放通知を行う(S31)。これにより,ロード要求を発行したCPUコア10は,データを取得する。
【0027】
上記のように,通常のIOストア要求の場合は,IOコントローラ11を介して外部の記憶媒体から取得したデータがメインメモリ12に書き込まれる。したがって,その後のロード要求では,キャッシュ制御部25がメモリロード要求を発行して主記憶管理部29にメインメモリ12にアクセスさせてデータを取得する。このように,メインメモリ12へのアクセスを伴うことで,ロード要求のレイテンシが長くなる。
【0028】
[プリフェッチ要求とロード要求]
図3は,本実施の形態におけるCPU1によるプリフェッチ要求とロード要求の処理を示すシーケンス図である。CPUコア10は,
図2で示した通常のIOストア要求が処理された後に,プリフェッチ要求を発行し,要求格納部21にプリフェッチ要求を格納する(S30)。そして,プリフェッチ要求が投入されると(S31),キャッシュ制御部25は,キャッシュタグを検索してキャッシュ未登録であることを確認後に,主記憶管理部29にプリフェッチ要求のメモリアドレスについてアドレスマッチの問い合わせを行い(S32),主記憶管理部29が処理中の複数のエントリが同じメモリアドレスを有していないか否かの問い合わせをする。アドレスマッチの取り合わせは,同じアドレスについてメインメモリにアクセスする複数のエントリが同時に処理されることを回避するために行われる。主記憶管理部29からアドレスがマッチしていない旨の応答を受信すると(S32_B),キャッシュ制御部25は,プリフェッチ要求をキャッシュミス要求格納部28と主記憶管理部29に出力し,要求格納部21にプリフェッチ要求の解放を指示する(S33_B)。
【0029】
このプリフェッチ要求に応答して,主記憶管理部29は,メインメモリ12にリード要求を出力し(S34),リード応答によりリードしたデータを受信し(S35),キャッシュミス要求格納部28にそのデータを返信するデータ応答を行う(S36)。また,主記憶管理部29は,データ応答S36と同時に,プリフェッチ要求を発行したキャッシュ制御部25に対して,プリフェッチ要求のエントリの処理が完了したことによるエントリの解放通知を行う(S36)。
【0030】
キャッシュミス要求格納部28は,データ応答S36に応答してキャッシュ登録要求を発行し,要求投入選択部24を介してキャッシュ制御部25に投入する(S37)。このキャッシュ登録要求に応答して,キャッシュ制御部25は,キャッシュタグにアドレス情報などの登録を行い(S38),キャッシュデータ部27にデータの登録を行い(S39),キャッシュミス要求格納部28にエントリの解放通知を出力する(S40)これより,プリフェッチ要求のデータがメインメモリ12から読み出され,キャッシュメモリ26,27に登録される。
【0031】
上記のプリフェッチ要求によるメインメモリ内のデータのキャッシュ登録後に,CPUコア10は,プリフェッチしたメモリアドレスについてロード要求を発行して(S20),ロード要求をキャッシュ制御部25に投入する(S21)。それに応答して,キャッシュ制御部25はキャッシュタグ26を検索すると,既にキャッシュ登録済みであるためキャッシュヒットし(S22H),キャッシュヒット通知を受信し(S22I),CPUコア10にデータ応答する(S30)。これにより,CPUコア10は,ロード要求のデータを取得する。この場合,プリフェッチを行っていたため,CPUコア10のロード要求のレイテンシは,
図2の場合よりも短くなる。
【0032】
[本実施の形態の概略]
[キャッシュ登録指示付きIOストア要求]
図4は,本実施の形態におけるキャッシュ登録指示付きIOストア要求の処理の概略を示すフローチャート図である。
図1も参照して説明する。まず,CPUコア10が,キャッシュ登録指示付きDMA発行指示(キャッシュ登録指示付きIOストア命令)を,要求格納部21とキャッシュ制御部25を介して,IOコントローラ11に行う(S41)。DMA発行指示は,IOコントローラ11に外部記憶媒体2からの入力データをメインメモリに転送する指示である。それに応答して,IOコントローラ11が,IOストア要求格納部22にキャッシュ登録指示付きIOストア要求を発行する。キャッシュ制御部25は,このキャッシュ登録指示付きIOストア要求の投入に応答して,主記憶管理部29にIOストア要求を発行または出力すると共に(S45),プリフェッチ要求をIOストア用プリフェッチ要求格納部23に発行または出力する(S46)。このプリフェッチ要求は,キャッシュ登録指示付きIOストア要求に対応するIOストア用プリフェッチ要求である。後述するとおり,IOストア要求に対して主記憶管理部29がメインメモリ12にデータを書き込んだ後に,同じデータをキャッシュメモリにプリフェッチする順序も保証される。
【0033】
図2で説明したとおり,キャッシュ制御部25は,通常のIOストア要求を処理する場合は,主記憶管理部29にIOストア要求を発行するだけであるが,キャッシュ登録指示付きIOストア要求を処理する場合は,主記憶管理部29へのIOストア要求の発行に加えて,プリフェッチ要求を発行する。キャッシュ登録指示付きストア要求のフォーマットには,例えば,キャッシュ登録指示フラグが有効にされていて,キャッシュ制御部25はそのフラグの有効状態に基づいてプリフェッチ要求の発行を行う。通常のIOストア要求のフォーマットでは,キャッシュ登録指示フラグは無効になっている。
【0034】
図1の例では,このIOストア用のプリフェッチ要求は,専用のIOストア用プリフェッチ要求格納部23に格納される。ただし,通常の要求格納部21に格納されてもよい。
【0035】
主記憶管理部29は,IOストア要求に応答して,メインメモリ(主記憶装置)12にデータを書き込む(S54)。その間,IOストア用プリフェッチ要求がキャッシュ制御部25に投入されると,キャッシュ制御部25は,主記憶管理部29が実行中のIOストア要求のエントリとアドレスが一致することを検出し,IOストア用プリフェッチ要求をアボートする(S53)。これによりIOストア用プリフェッチ要求は一定時間待機され(S53_B),その後再度投入され再度アボートされる。
【0036】
この場合,IOストア用プリフェッチ要求の投入とアボートが繰り返されないように,キャッシュ制御部25がIOストア用プリフェッチ要求格納部23に対して,IOストア用プリフェッチ要求の投入を待機させる待機指示を出し,主記憶管理部によるデータ応答後に,待機解除命令を出す(S58)ことが望ましい。
【0037】
そして,主記憶管理部によるメインメモリ12へのデータの書き込み後に,IOストア用プリフェッチ要求が投入され,キャッシュ制御部25はそのIOストア用プリフェッチ要求を処理し,メインメモリ12からデータを読み出し,キャッシュに登録する(S38,S39)。キャッシュ制御部25によるIOストア用プリフェッチ要求の処理は,
図3で説明した通常のプリフェッチ要求と同じ処理である。あるいは,変形例として,IOストア用プリフェッチ要求の処理は,メインメモリ12へのデータの読み出しを省略して,主記憶管理部29がIOストアのために保持しているデータを利用してキャッシュ登録するようにしてもよい。
【0038】
上記のように,キャッシュ登録指示付きIOストア要求は,
図1のIOストア要求の処理と,
図2のプリフェッチ要求の処理を順番に実行することで,実質的にキャッシュインジェクションと同じ機能,つまりIOストア要求の入力データのキャッシュへの登録機能を実現することができる。しかも,既存のIOストア要求とプリフェッチ要求を利用するので,CPU1内の回路構成の最小限の変更で実現できる。この変更は,例えば,キャッシュ制御部がキャッシュ登録指示付きIOストア要求を通常のIOストア要求と区別し,プリフェッチ要求を発行する回路変更である。
【0039】
[第1の実施の形態,キャッシュ登録指示付きIOストア要求(1)]
図5は,第1のキャッシュ登録指示付きIOストア要求の動作を示すシーケンス図である。また,
図6は,第1のキャッシュ登録指示付きIOストア要求の動作のフローチャート図である。第1のキャッシュ登録指示付きIOストア要求は,キャッシュ制御部25に主記憶管理部29にIOストア要求を発行させると共に,IOストア用プリフェッチ要求を発行させる。そして,主記憶管理部29がIOストア要求の処理を完了した後,キャッシュ制御部が発行したプリフェッチ要求を処理する。このIOストア要求の処理と,プリフェッチ要求の処理は,
図2,3で説明した処理とほとんど同じである。
【0040】
まず,CPUコア10は,IOコントローラ11にダイレクトメモリアクセス(DMA)発行指示を出力する(S41)。
図5には示されていないが,このDMA発行指示は,一旦要求格納部21に格納され,キャッシュ制御部25に投入され,IOコントローラ11に指示される。それに応答して,IOコントローラ11は,キャッシュ登録指示付きIOストア要求を発行しIOストア要求格納部22に格納する(S42)。
【0041】
そして,要求投入選択部24がキャッシュ登録指示付きIOストア要求をキャッシュ制御部25に投入し(S43),キャッシュ制御部25は,キャッシュタグ26を検索してIOストア要求のアドレスが登録されているかをチェックし,登録されていればそれを無効化する(S44)。これによりメインメモリ12に書き込まれるデータとのコヒーレンシを保つ。
【0042】
キャッシュ制御部25は,キャッシュ登録指示付きIOストア要求に応答して,IOストア要求を主記憶管理部29に出力し(S45),さらに,IOストア用プリフェッチ要求をIOストア用プリフェッチ要求格納部23に発行する(S46)。キャッシュ制御部25は,キャッシュ登録指示付きIOストア要求の例えばキャッシュ登録指示フラグが有効であることに基づいて, 主記憶管理部へのIOストア要求の発行と共にIOストア用プリフェッチ要求格納部へのIOストア用プリフェッチ要求の発行も行う。
【0043】
主記憶管理部29は,このIOストア要求に応答して,まずメインメモリ12内のディレクトリを読み出し(S47,S48),これから書き込むアドレスのデータを他のCPUがキャッシュに登録しているか否かをチェックする。主記憶管理部20は,他のCPUがキャッシュ登録している場合は,それをインバリデート(無効化)するように他のCPUのキャッシュ制御部に要求する。これもデータのコヒーレンシを保つためである。この無効化の処理は
図5には示されていない。
【0044】
同時に,主記憶管理部29は,IOストアするデータをIOストア要求格納部22に要求すし(S49),データ応答を受信する(S50)。IOストア要求などのライト系の要求には,要求に対応するコマンドとライトすべきデータとが含まれ,IOストア要求格納部22はIOストア要求でライトすべきデータを保持している。データ応答後に,主記憶管理部29は,受信したデータのライト要求をメインメモリ12に出力してライト処理させ(S54),ライト応答を受信する(S55)。これに応答して,主記憶管理部29は,IOストア要求完了応答をIOストア要求格納部22に送信する(S56)。これにより,IOコントローラ11は,CPUコア10に割り込み要求を発行し,DMA処理の完了を通知する。この割り込み処理は,一定の時間を要する。
【0045】
一方,主記憶管理部29がIOストア要求を処理している間に,IOストア用プリフェッチ要求格納部23からIOストア用プリフェッチ要求がキャッシュ制御部25に投入される。それに応答して,キャッシュ制御部25は,プリフェッチ要求のアドレスが主記憶管理部29が処理中のエントリのアドレスとマッチするかの問い合わせを行う(S52)。この時,主記憶管理部29が同じアドレスへのIOストア要求を処理中であるので,アドレスマッチする。そのため,キャッシュ制御部25は,プリフェッチ要求のアボートをIOストア用プリフェッチ要求格納部23に通知する(S53)。
【0046】
キャッシュ制御部25が,IOストア用プリフェッチ要求格納部23にアボートを通知したときに,IOストア用プリフェッチ要求の投入を待機解除通知まで待機する待機指示を出すことが好ましい。これにより,IOストア用プリフェッチ要求の投入とアボートを繰り返さないようにすることができ,省電力化に寄与する。但し,必ずしも待機指示を出さなくても良い。
【0047】
主記憶管理部29は,メインメモリからのライト応答を受信して(S55)IOストア要求の処理を完了すると,キャッシュ制御部25に主記憶管理部の解放通知を行い(S57),それに応答して,キャッシュ制御部25はIOストア用プリフェッチ要求格納部23に待機解除を通知する(S58)。
【0048】
待機解除通知に応答して,IOストア用プリフェッチ要求格納部23から待機中(S53_B)のIOストア用プリフェッチ要求が投入され(S59),キャッシュ制御部25は,IOストア用プリフェッチ要求の処理を実行する。第1の実施の形態では,このIOストア用プリフェッチ要求の処理は,
図2で説明した通常のプリフェッチ要求の処理と,要求元が異なる以外はほぼ同じである。
【0049】
まず,IOストア用プリフェッチ要求が投入されると(S59),キャッシュ制御部25は,キャッシュタグを検索してデータが未登録であることを確認し,主記憶管理部29にプリフェッチ要求のメモリアドレスについてアドレスマッチの問い合わせを行い(S32),主記憶管理部29が処理中の複数のエントリが同じメモリアドレスを有していないか否かの問い合わせをする。この時点では,キャッシュ制御部25は,主記憶管理部29が処理していたIOストア要求のエントリは解放されているので,アドレスがマッチするエントリはない旨の応答を受信する。これにより,キャッシュ制御部25はIOストア用プリフェッチ要求を主記憶管理部29に出力可能であると判断する。そして,キャッシュ制御部25は,プリフェッチ要求をキャッシュミス要求格納部28と主記憶管理部29に出力し(S33),IOストア用プリフェッチ要求格納部23にプリフェッチ要求の解放を指示する(S33_B)。
【0050】
このプリフェッチ要求に応答して,主記憶管理部29は,メインメモリ12にリード要求を出力し(S34),リード応答としてリードしたデータを受信し(S35),キャッシュミス要求格納部28にそのデータを返信するデータ応答を行う(S36)。また,主記憶管理部29は,データ応答S36と同時に,プリフェッチ要求を発行したキャッシュ制御部25に対して,プリフェッチ要求のエントリの処理が完了したことを知らせるエントリの解放通知を行う(S36)。
【0051】
キャッシュミス要求格納部28は,データ応答S36に応答してキャッシュ登録要求を発行し,要求投入選択部24を介してキャッシュ制御部25に投入する(S37)。このキャッシュ登録要求に応答して,キャッシュ制御部25は,キャッシュタグ26にアドレス情報などの登録を行い(S38),キャッシュデータ部27にデータの登録を行い(S39),キャッシュミス要求格納部28にエントリの解放通知を出力する(S40)。これより,IOストア用プリフェッチ要求のデータがメインメモリ12から読み出され,キャッシュメモリ26,27に登録される。
【0052】
上記のIOストア用プリフェッチ要求によるメインメモリ内のデータのキャッシュ登録後に,CPUコア10は,プリフェッチしたメモリアドレスについてロード要求を発行すると(S20),
図3と同様に,ロード要求がキャッシュ制御部25に投入され,それに応答して,キャッシュ制御部25は,キャッシュタグ検索してキャッシュヒットし(S22H),キャッシュデータ部からデータを読み出し,CPUコア10にデータ応答する(S30)。
【0053】
上記のキャッシュ登録指示付きIOストア要求の処理は,IOストア要求の処理とIOストア用プリフェッチ要求の処理とを有する。したがって,通常のIOストア要求の処理にIOストア用プリフェッチ要求の処理が追加される。しかし,IOストア完了応答S56後にCPUコア10へのDMA完了割り込みが行われるが,CPUコア10がそのDMA完了割り込み処理に要する時間は,IOストア用プリフェッチ要求の処理に要する時間よりも長い。したがって,CPUコア10がDMA完了割込を受け付けてからプリフェッチされたデータへのロード要求を発行する工程S20までの間に,キャッシュ登録指示付きIOストア要求の処理は完了する。
【0054】
上記の第1のキャッシュ登録指示付きIOストア要求の動作において,キャッシュ制御部25が主記憶管理部29にアドレスマッチの問い合わせをしたとき(S52),同じアドレスを処理しているエントリが存在する場合に,キャッシュ制御部25はIOストア要求用プリフェッチ要求格納部にアボートして待機指示(S53)を行ったが,必ずしも待機指示を行わなくても良い。その場合は,IOストア用プリフェッチ要求の投入とアボートが繰り返されるだけである。
【0055】
[第2の実施の形態,キャッシュ登録指示付きIOストア要求(2)]
図7は,第2のキャッシュ登録指示付きIOストア要求の動作を示すシーケンス図である。また,
図8は,第2のキャッシュ登録指示付きIOストア要求の動作のフローチャート図である。第2のキャッシュ登録指示付きIOストア要求は,キャッシュ制御部25にIOストア要求を主記憶管理部29に発行させると共に,キャッシュ制御部25にIOストア用プリフェッチ要求を発行させる。そして,主記憶管理部29がIOストア要求の処理を完了した後,キャッシュ制御部がプリフェッチ要求を処理する。このIOストア要求の処理は
図2の処理とほとんど同じである。但し,IOストア用プリフェッチ要求の処理では,主記憶管理部はメインメモリ12へのデータのリード動作を行わずに,主記憶管理部がIOストア処理のために取得したデータをキャッシュミス要求格納部28にデータ応答する。この場合,メインメモリへのリード動作が省略されるので,プリフェッチ要求の処理が短時間で完了し,消費電力を抑制できる。
【0056】
以下,第2のキャッシュ登録指示付きIOストア要求の動作を,第1のキャッシュ登録指示付きIOストア要求の動作との相違点を中心に説明する。
図7,8中,
図5,6と同じ処理には同じ参照番号が付されている。
【0057】
CPUコア10がDMA発行指示を出力し(S41),IOコントローラ11がキャッシュ登録指示付きIOストア要求をIOストア要求格納部22に発行し(S42),キャッシュ制御部25がキャッシュメモリ内のIOストア要求のアドレスのデータを無効化(S44)後,主記憶管理部29にキャッシュ登録指示付きIOストア要求を発行し(S45),それと共にIOストア用プリフェッチ要求格納部23にIOストア用プリフェッチ要求を発行する(S49)。ここまでは第1の実施の形態と同じである。
【0058】
第2の実施の形態では,主記憶管理部29は,キャッシュ登録指示付きIOストア要求に応答して,キャッシュ登録指示があることを示すキャッシュレジスタフラグ2CACHE_REG_FLAG2を有効「1」にする(S45_B)。このフラグが有効「1」になることで,主記憶管理部29は,第2のキャッシュ登録指示付きIOストア要求の処理を行う。以下に説明するとおり,この処理は,通常のIOストア要求の処理と異なる処理を含む。
【0059】
次に,主記憶管理部29は,メインメモリ12に対してIOストア要求のアドレスのディレクトリを読み出すリード要求を出力し(S47),読み出したデータを返すリード応答を受信する(S48)。さらに,主記憶管理部29は,ストア要求格納部22に書き込むデータを要求し(S49),データ応答の受信により書き込むデータを取得する(S50)。そして,主記憶管理部29は,そのデータについてメインメモリ12にライト要求を出力し(S54),ライト完了を知らせるライト応答を受信し(S55),IOストア要求格納部22にIOストア完了応答を出力する(S56)。この主記憶管理部29の処理は,第1の実施の形態と同じである。
【0060】
但し,第2の実施の形態では,主記憶管理部29は,メインメモリ12からのライト応答を受信したとき,キャッシュレジスタフラグ2CACHE_REG_FLAG2が有効「1」であるため,メインメモリへの書き込みが完了したことを示すメモリライトコンプリートフラグMEM_WRITE_CPLT_FLAGを有効「1」にする(S56_B)。さらに,主記憶管理部29は,メインメモリ12からのライト応答を受信したとき,キャッシュレジスタフラグ2CACHE_REG_FLAG2が有効「1」であるため,主記憶管理部の処理中のエントリの解放を行わずそのエントリを維持し,キャッシュ制御部25への解放通知を行わないで,待機解除通知をIOストア用プリフェッチ要求格納部23に行う(S58)。この待機解除通知は,第1の実施の形態と同様にキャッシュ制御部25を介して行っても良い。
【0061】
上記の2つのフラグを有効にすることを利用して,投入されたIOストア用プリフェッチ要求についてキャッシュ制御部25によるアドレスマッチの処理が変更される。すなわち,キャッシュ制御部25は,IOストア用プリフェッチ要求の処理において,主記憶管理部29にアドレスマッチの問い合わせを行い,主記憶管理部が処理中の複数のエントリの中にアドレスがマッチするエントリがあっても,そのエントリのキャッシュレジスタフラグ2CACHE_REG_FLAG2が有効「1」であり,且つメモリライトコンプリートフラグMEM_WRITE_CPLT_FLAGも有効「1」の場合は,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートせずに主記憶管理部29に出力可能であると判定する。アドレスがマッチするエントリのキャッシュレジスタフラグ2CACHE_REG_FLAG2が無効「0」の場合は,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートすべきと判断する。さらに,アドレスがマッチするエントリのキャッシュレジスタフラグ2CACHE_REG_FLAG2が有効「1」の場合でも,メモリライトコンプリートフラグMEM_WRITE_CPLT_FLAGが無効「0」の場合は,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートすべきと判断する。
【0062】
したがって,主記憶管理部29がメインメモリへの書き込みを完了する前のアドレスマッチの問い合わせ(S52)では,メモリライトコンプリートフラグMEM_WRITE_CPLT_FLAGは未だ無効「0」であるので,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートしている(S53)。一方,主記憶管理部29がメインメモリへの書き込みを完了して後のアドレスマッチの問い合わせ(S32)では,アドレスがマッチするエントリのキャッシュレジスタフラグ2CACHE_REG_FLAG2が有効「1」であり,メモリライトコンプリートフラグMEM_WRITE_CPLT_FLAGも有効「1」であるため,キャッシュ制御部25はIOストア用プリフェッチ要求を主記憶管理部に出力可能と判断し,出力している(S33)。具体的には,キャッシュ制御部25は,キャッシュミス要求格納部28にIOストア用プリフェッチ要求を出力すると共に,主記憶管理部29にIOストア用プリフェッチ要求のデータを要求する(S33)。
【0063】
このデータ要求に応答して,主記憶管理部29は,キャッシュレジスタフラグ2CACHE_REG_FLAG2が有効「1」であるため,維持しているIOストア要求のエントリにプリフェッチ要求の機能を追加してキャッシュ登録付きIOストア要求として処理する。すなわち,主記憶管理部29は,メインメモリ12へのデータ読み出しを実行せずに,維持しているIOストア要求のエントリのために取得したデータを,キャッシュミス要求格納部28にデータ応答で返信するとともに,キャッシュ制御部25に解放通知を行う(S36)。
【0064】
その後の処理は,
図5の第1の実施の形態と同じである。すなわち,キャッシュミス要求格納部28は,データ応答S36に応答してキャッシュ登録要求を発行し,要求投入選択部24を介してキャッシュ制御部25に投入する(S37)。このキャッシュ登録要求に応答して,キャッシュ制御部25は,キャッシュタグにアドレス情報などの登録を行い(S38),キャッシュデータ部27にデータの登録を行い(S39),キャッシュミス要求格納部28にエントリの解放通知を出力する(S40)。これより,主記憶管理部29がIOストア用プリフェッチ要求のデータをメインメモリ12から読み出すことなく,キャッシュメモリ26,27にデータ等が登録される。その後,CPUコア10がロード要求を発行すると,既にデータがキャッシュメモリに登録されているので,短時間でデータを取得することができる。
【0065】
上記の通り,第2の実施の形態では,第2のキャッシュ登録指示付きIOストア要求の処理において,主記憶管理部29によるIOストア要求の処理は,
図2で説明したIOストアの処理と同様にメインメモリ12にデータを書き込むが,書き込み完了後もIOストア要求のエントリを維持する。そして,IOストア用プリフェッチ要求については,主記憶管理部29は,メインメモリ12からデータを読み出すことなく維持しているエントリのデータをキャッシュミス要求格納部28にデータ応答する。これにより,メインメモリ12へのデータ読み出し処理を省略することができる。
【0066】
[第3の実施の形態,キャッシュ登録指示付きIOストア要求(3)]
図9は,第3のキャッシュ登録指示付きIOストア要求の動作を示すシーケンス図である。また,
図10は,第3のキャッシュ登録指示付きIOストア要求の動作のフローチャート図である。第3のキャッシュ登録指示付きIOストア要求は,キャッシュ制御部25にIOストア要求を主記憶管理部29に発行させ,同時に,キャッシュ制御部25にIOストア用プリフェッチ要求を発行させる。そして,主記憶管理部29がIOストア要求の処理を完了した後,キャッシュ制御部がプリフェッチ要求を処理する。但し,第3のキャッシュ登録指示付きIOストア要求の処理では,
図2,5,7の処理と異なり,主記憶管理部29はメインメモリ12への書き込み動作を行わない。さらに,第3のIOストア用プリフェッチ要求の処理では,主記憶管理部はメインメモリ12へのデータのリード動作を行わずに,主記憶管理部がIOストア処理のために取得したデータをキャッシュミス要求格納部28にデータ応答する。IOストア要求の処理でメインメモリへのライト動作が省略され,IOストア用プリフェッチ要求の処理でメインメモリへのリード動作が省略されるので,その分処理が短時間で完了し,消費電力を抑制できる。
【0067】
以下,第3のキャッシュ登録指示付きIOストア要求の動作を,第1,第2のキャッシュ登録指示付きIOストア要求の動作との相違点を中心に説明する。
図9,10中,
図5,6,
図7,8と同じ処理には同じ参照番号が付されている。
【0068】
CPUコア10がDMA発行指示を出力し(S41),IOコントローラ11がキャッシュ登録指示付きIOストア要求をIOストア要求格納部22に発行し(S42),キャッシュ制御部25がキャッシュメモリ内のデータを無効化(S44)した後,主記憶管理部29にキャッシュ登録指示付きIOストア要求を発行し(S45),それと共にIOストア用プリフェッチ要求格納部23にIOストア用プリフェッチ要求を発行する(S46)。ここまでは第1,第2の実施の形態と同じである。
【0069】
第3の実施の形態では,主記憶管理部29は,キャッシュ登録指示付きIOストア要求に応答して,キャッシュ登録指示があることを示すキャッシュレジスタフラグ3CACHE_REG_FLAG3を有効「1」にする(S45_C)。このフラグが有効「1」になることで,主記憶管理部29は,第3のキャッシュ登録指示付きIOストア要求の処理を行う。
【0070】
この第3のキャッシュ登録指示付きIOストア要求の処理では,主記憶管理部29は,メインメモリ12に対してIOストア要求のアドレスのディレクトリを読み出すリード要求を出力し(S47),読み出したデータを返すリード応答を受信する(S48)。さらに,主記憶管理部29は,IOストア要求格納部22にIOストア要求のデータを要求し(S49),データ応答を受信してIOストア要求のデータを受信する(S50)。
【0071】
そして,主記憶管理部29は,IOストア要求のデータを受信すると,キャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」であるため,データ取得済みを示すデータレディフラグDATA_READY_FLAGを有効「1」にする。また,主記憶管理部29は,キャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」であるため,取得したデータをメインメモリ12に書き込む動作は行わないで,IOストア要求格納部22にIOストア完了応答をして(S56),IOストアを完了したことを通知する。さらに,主記憶管理部29は,IOストア要求のデータを受信したとき,キャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」であるため,主記憶管理部の処理中のエントリの解放を行わずそのエントリを維持し,キャッシュ制御部25への解放通知も行わないで,待機解除通知をIOストア用プリフェッチ要求格納部23に行う(S58)。この待機解除通知は,第2のキャッシュ登録指示付きIO要求の例(
図7)と同様にキャッシュ制御部25を介して行っても良い。
【0072】
第3のキャッシュ登録指示付きIOストア要求の処理では,第2のキャッシュ登録指示付きIOストア要求の処理と同様に,上記の2つのフラグを有効にすることを利用して,投入されたIOストア用プリフェッチ要求についてキャッシュ制御部25によるアドレスマッチの処理を行う。すなわち,キャッシュ制御部25は,IOストア用プリフェッチ要求の処理において,主記憶管理部29にアドレスマッチの問い合わせを行い,主記憶管理部が処理中の複数のエントリのうちアドレスがマッチするエントリが存在しても,そのエントリのキャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」であり,且つデータレディフラグDATA_READY_FLAGも有効「1」の場合に,キャッシュ制御部25は,IOストア用プリフェッチ要求をアボートせずに主記憶管理部29に出力可能であると判定する。アドレスがマッチするエントリのキャッシュレジスタフラグ3CACHE_REG_FLAG3が無効「0」の場合は,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートすべきと判断する。さらに,アドレスがマッチするエントリのキャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」の場合でも,データレディフラグDATA_READY_FLAGが無効「0」の場合は,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートすべきと判断する。
【0073】
したがって,主記憶管理部29がIOストア要求のデータの取得前でのアドレスマッチの問い合わせ(S52)では,データレディフラグDATA_READY_FLAGは未だ無効「0」であるので,キャッシュ制御部25はIOストア用プリフェッチ要求をアボートしている(S53)。
【0074】
一方,待機解除通知(S58)により待機していたIOストア用プリエッチ要求がキャッシュ制御部25に投入され,キャッシュ制御部25が主記憶管理部29にアドレスマッチの問い合わせを行うときは(S32),主記憶管理部29が処理中のエントリでアドレスが一致するエントリのキャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」で,且つデータレディフラグDATA_READY_FLAGが有効「1」であるので,キャッシュ制御部25は,IOストア用プリフェッチ要求を主記憶管理部29に出力可能であると判断する。その結果,キャッシュ制御部25は,キャッシュミス要求格納部28にIOストア用プリフェッチ要求を出力し,主記憶管理部29にIOストア用プリフェッチ要求のデータを要求する(S33)。
【0075】
このデータ要求に応答して,主記憶管理部29は,キャッシュレジスタフラグ3CACHE_REG_FLAG3が有効「1」であるため,維持しているIOストア要求のエントリにプリフェッチ要求の機能を追加してキャッシュ登録付きIOストア要求として処理する。その結果,主記憶管理部29は,メインメモリ12へのデータ読み出しを実行せずに,維持しているIOストア要求のエントリのために取得したデータを,キャッシュミス要求格納部28にデータ応答で返信すると共に,キャッシュ制御部25に解放通知を行う(S36)。
【0076】
その後の処理は,
図5の第1の実施の形態,
図7の第2の実施の形態と同じである。すなわち,キャッシュミス要求格納部28は,データ応答S36に応答してキャッシュ登録要求を発行し,要求投入選択部24を介してキャッシュ制御部25に投入する(S37)。このキャッシュ登録要求に応答して,キャッシュ制御部25は,キャッシュタグにアドレス情報などの登録を行い(S38),キャッシュデータ部27にデータの登録を行う(S39)。第3の実施の形態では,メインメモリにデータを書き込んでいないのでキャッシュに登録したデータとメインメモリ内のデータとがコヒーレントが保たれていない。そのため,キャッシュ制御部25は,メインメモリとコヒーレントが保たれていない旨を示すステータス(Modified)をキャッシュタグに記録する。キャッシュ登録後,キャッシュ制御部25は,キャッシュミス要求格納部28にエントリの解放通知を出力する(S40)。その後,CPUコア10がロード要求を発行すると,既にデータがキャッシュメモリに登録されているので,短時間でデータを取得することができる。
【0077】
上記の通り,第3の実施の形態では,キャッシュ登録指示付きIOストア要求の処理において,主記憶管理部29によるIOストア要求の処理は,
図2で説明したIOストアの処理と異なり,IOストア要求のデータを取得した後は,メインメモリ12にデータを書き込まずに,処理中のIOストア要求のエントリを維持し,その後のIOストア用プリフェッチ要求については,メインメモリ12からデータを読み出すことなく維持しているエントリのデータをキャッシュミス要求格納部28にデータ応答する。これにより,メインメモリ12へのデータの書き込み処理とメインメモリ12へのデータ読み出し処理を省略することができる。
【0078】
上記の第2,第3のキャッシュ登録指示付きIOストア要求の動作において,キャッシュ制御部25が主記憶管理部29にアドレスマッチの問い合わせをしたとき(S52),同じアドレスを処理しているエントリの2つのフラグが共に有効でない場合に,キャッシュ制御部25はIOストア要求用プリフェッチ要求格納部にアボートして待機指示(S53)を行ったが,必ずしも待機指示を行わなくても良い。その場合は,IOストア用プリフェッチ要求の投入とアボートが繰り返されるだけであり,キャッシュインジェクションの機能への直接の影響はない。単に,消費電流が消費されるだけである。
【0079】
[第4の実施の形態,キャッシュ登録指示付きIOストア要求(4)]
図11は,第4の実施の形態におけるCPU1の構成を示す図である。
図11のCPU1は,ccNUMA(Cache-Coherent Non-Uniform Memory Access)を実現するために,ccNUMA受信部13と,リモート要求格納部24と,ccNUMA送信部15と,その中に設けられているccNUMA出力格納部15Aとを有する。ccNUMA受信部13とccNUMA送信部15は,ccNUMAノード間を接続する送受信バス30に接続される。それ以外の構成は,
図1と同じである。
【0080】
図12は,4つのノードを有するccNUMAの構成を示す図である。
図12には,4つのccNUMAノード0−4が,互いに送受信バス30で接続されている。ccNUMAノードは,例えばNODE0の場合,CPUコアCORE0,キャッシュCACHE0,メモリMEM0,IOコントローラIO0を有する。他のNODE1,2,3も同様の構成である。
【0081】
ノード0(NODE0)のメモリMEM0は,キャッシュCACHE0内の主記憶管理部により管理されている。そして,メモリMEM0内には,メモリMEM0内のデータが他のccNUMAのノードのキャッシュにデータが持ち出されているか否かを示すディレクトリ情報を記憶している。同様に,ノード1,2,3の各メモリMEM1−3も,キャッシュCACHE1−3内の主記憶管理部によりそれぞれ管理されていて,各メモリ内にはディレクトリ情報が格納されている。
【0082】
そして,4つのノード0−3間は送受信バス30により互いに接続され,互いの要求と要求結果を送受信できるようになっている。
【0083】
図12の構成において,ノード0のコアCORE0とキャッシュCACHE0を有するCPUが,(1)ノード1のメモリMEM1に対してIOストア要求をする場合と,(2)ノード1のメモリMEM1内のデータにロード要求をする場合を想定する。この場合,要求元のノード0のCPUはローカルCPUと,要求先のメモリMEM1を管理しているノード1のCPUはリモートCPUまたはホームCPUと称する。このようなccNUMAの構成におけるIOストア要求についても,本実施の形態の第1,第2,第3のキャッシュ登録指示付きIOストア要求を適用することができる。
【0084】
まず,ノード0のCPUがノード1のメモリMEM1にIOコントローラが入力するデータをストアするIOストア要求を発行する。この場合,
図11に示されたCPU1をノード0のローカルCPUと仮定する。ノード0のCPUコアCORE0は,キャッシュCACHE0内のキャッシュ制御部を経由してDMA発行指示をIOコントローラ11に出力する。それに応答して,IOコントローラ11はキャッシュ登録指示付きIOストア要求をIOストア要求格納部22に格納する。そのキャッシュ登録指示付きIOストア要求がキャッシュCACHE0内のキャッシュ制御部に投入されると,キャッシュ制御部はそのIOストア要求のメモリアドレスがノード1のメモリMEM1のアドレスであるためキャッシュミスし,ccNUMA出力格納部15Aにキャッシュ登録指示付きIOストア要求を格納する。そして,ccNUMA送信部15が,格納されたキャッシュ登録指示付きIOストア要求を,ccNUMA送信バス30を経由して,ノード1のCPUに送信する。
【0085】
次に,ノード1のリモートCPUがノード0のローカルCPUから上記のIOストア要求を受信した場合を想定する。今度は,
図11のCPU1をノード1のリモートCPUと仮定する。ノード1のCPUのccNUMA受信部13がccNUMA受信バス30を介してキャッシュ登録指示付きIOストア要求を受信し,リモート要求格納部24にそのIOストア要求を格納する。ノード1のキャッシュCACHE1内のキャッシュ制御部25は,リモート要求格納部24からそのIOストア要求を投入され,前述の第1,第2,第3の実施の形態のキャッシュ登録指示付きIOストア要求の処理を実行する。その結果,ノード1のキャッシュCACHE1内のキャッシュメモリ内にIOストア要求のデータがインジェクションされ,キャッシュ登録される。第1,第2のキャッシュ登録指示付きIOストア要求の場合は,IOストア要求のデータはノード1のメモリMEM1内にも書き込まれる。第3のキャッシュ登録指示付きIOストア要求の場合は,IOストア要求のデータはノード1のメモリMEM1には書き込まれない。
【0086】
次に,ノード0のローカルCPUがノード1のリモートCPUが管理しているメインメモリMEM1に上記IOストア要求のデータについてロード要求を発行する。この場合,
図11のCPU1をノード0のローカルCPUと仮定する。ノード0のCPUコアCORE0が要求格納部10にロード要求を発行する。そして,キャッシュCACHE0のキャッシュ制御部は,ロード要求の投入に応答して,そのロード要求のエントリを処理する。キャッシュCACHE0のキャッシュ制御部は,ロード要求のアドレスがノード1のメインメモリMEM1のアドレスであるためキャッシュミスし,キャッシュミス要求格納部28にロード要求を出力し,キャッシュミス要求格納部28がccNUMA送信部15内のccNUMA出力格納部15A内にロード要求を格納する。ccNUMA送信部15は,そのロード要求を,ccNUMA送信バス30を経由して,ノード1のCPUに送信する。
【0087】
次に,ノード1のリモートCPUがノード0のローカルCPUから上記のロード要求を受信した場合を想定する。今度は,
図11のCPU1をノード1のリモートCPUと仮定する。ノード1のCPUのccNUMA受信部13がccNUMA受信バス30を介してロード要求を受信し,リモート要求格納部24にそのロード要求を格納する。ノード1のキャッシュCACHE1内のキャッシュ制御部は,リモート要求格納部24からそのロード要求を投入され,キャッシュタグ26を検索してキャッシュヒットし,キャッシュデータ部27に登録されているデータを読み出して,データと共にデータ応答をccNUMA送信部15内のccNUMA出力格納部15A内に格納する。ccNUMA送信部15は,そのデータ応答をccNUMA送信バス30を経由して,ノード0のCPUに送信する。
【0088】
次に,ノード0のローカルCPUが,ノード1のリモートCPUからデータ応答を受信した場合を想定する。この場合,
図11のCPU1をノード0のローカルCPUと仮定する。ccNUMA受信部13は,ccNUMA受信バス30からデータ応答を受信し,リモート要求格納部24に格納する。そのデータ応答が投入されると,ノード0のキャッシュCACHE0内のキャッシュ制御部25がデータ応答をキャッシュミス要求格納部28に出力し,キャッシュミス要求格納部28がそのデータ応答をキャッシュ制御部25に投入する。これに応答して,キャッシュ制御部25は,データ応答のデータをキャッシュ登録して,CPUコアCORE0にデータ応答する。
【0089】
上記のとおり,第4の実施の形態において,ccNUMA構成の場合に,ローカルCPUがリモートCPUが管理するメインメモリに対するキャッシュ登録指示付きIOストア要求を発行した場合に,リモートCPUのキャッシュCACHEは,IOストア要求のデータをメインメモリ内にデータを書き込んでまたは書き込まずに,キャッシュメモリに登録する。したがって,その後,ローカルCPUがリモートCPUが管理するメインメモリのアドレスに対するロード要求を発行すると,リモートCPU側でキャッシュヒットし,短いレイテンシでデータ応答を受信することができる。
【0090】
以上説明したとおり,本実施の形態によれば,CPUコアはDMA発行指示等によりキャッシュ登録指示付きIOストア要求をキャッシュ制御部に投入すれば,キャッシュ制御部がプリフェッチ要求を発行する。その結果,IOストア要求の処理後にIOストア要求のデータがキャッシュメモリに登録されるので,実質的にキャッシュインジェクションと同等の処理を行うことができる。また,IOストア要求の処理とプリフェッチ要求の処理とを連携するための最小限の変更を,キャッシュ制御部や主記憶管理部内の回路構成に加えるだけでよい。この変更は,第1,第2,第3のキャッシュ登録指示付きIOストア要求の場合にキャッシュ制御部がプリフェッチ要求を発行する処理,第2,第3のキャッシュ登録指示付きIOストア要求の場合に主記憶管理部がプリフェッチ要求でメインメモリにリード要求しない処理,そして,第3のキャッシュ登録指示付きIOストア要求の場合に主記憶管理部がメインメモリにライトしない処理のための変更等である。したがって,キャッシュ登録指示付きIOストア要求を処理するための専用の回路を追加する必要はない。
【0091】
本実施の形態によれば,CPUは,キャッシュ登録指示付きIOストア要求を発行することで,IOストア要求のデータをキャッシュメモリに登録することができ,その後にIOストア要求のデータにアクセスするメモリアクセス要求を発行すると,キャッシュメモリに登録されているデータにアクセスすることができる。上記のメモリアクセス要求には,読み出しを行うロード要求と書き込みを行うストア要求が含まれる。
【0092】
以上の実施の形態をまとめると,次の付記のとおりである。
【0093】
(付記1)
メモリアクセス要求とプリフェッチ要求とを出力する演算処理部と,
前記メモリアクセス要求と前記プリフェッチ要求に加えて,入力データを記憶する入力データストア要求を処理するキャッシュ制御部と,キャッシュメモリとを有するキャッシュと,
メインメモリを制御する主記憶管理部とを有し,
前記キャッシュ制御部は,キャッシュ登録指示付きの入力データストア要求に応答して,前記主記憶管理部に前記入力データストア要求を出力すると共に前記プリフェッチ要求を発行し,前記発行されたプリフェッチ要求に応答して,前記入力データストア要求の入力データを前記キャッシュメモリに登録する演算処理装置。
【0094】
(付記2)
前記主記憶管理部は,前記入力データストア要求に応答して前記入力データを保持し,
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から取得した前記入力データを前記キャッシュメモリに登録する付記1に記載の演算処理装置。
【0095】
(付記3)
前記主記憶管理部は,前記入力データストア要求に応答して前記入力データを前記メインメモリに書き込み,
前記書き込み後,前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から取得した前記入力データを前記キャッシュメモリに登録する付記2に記載の演算処理装置。
【0096】
(付記4)
前記キャッシュ制御部は,前記発行されたプリフェッチ要求を処理して,前記主記憶管理部に前記メインメモリから前記入力データを読み出させる付記3に記載の演算処理装置。
【0097】
(付記5)
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記プリフェッチ要求のアドレスと前記主記憶管理部が処理中の入力データストア要求のエントリのアドレスとが一致する場合に,前記プリフェッチ要求をアボートし,前記主記憶管理部による前記メインメモリへの前記入力データの書き込みが完了した後に,前記アボートされたプリフェッチ要求を処理する付記4に記載の演算処理装置。
【0098】
(付記6)
前記主記憶管理部は,前記入力データストア要求に応答して,前記メインメモリに前記入力データを書き込み,
前記メインメモリへの前記入力データの書き込み後,前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部に前記メインメモリから前記入力データを読み出させることなく前記主記憶管理部から取得した前記入力データを前記キャッシュメモリに登録する付記2に記載の演算処理装置。
【0099】
(付記7)
前記主記憶管理部は,前記入力データストア要求に応答して前記メインメモリに前記入力データを書き込んだ後,前記入力データを保持した状態で前記入力データストア要求のエントリを保持し,
前記書き込み後,前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から前記入力データを取得する付記5に記載の演算処理装置。
【0100】
(付記8)
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記プリフェッチ要求のアドレスと前記主記憶管理部が処理中の入力データストア要求のエントリのアドレスとが一致し前記主記憶管理部による前記入力データの前記メインメモリへの書き込みが完了していない場合に,前記プリフェッチ要求をアボートし,前記主記憶管理部による前記書き込みが完了した後に,前記アボートされたプリフェッチ要求を処理する付記7に記載の演算処理装置。
【0101】
(付記9)
前記主記憶管理部は,前記入力データストア要求に応答して前記入力データを取得し,
前記入力データの取得後,前記主記憶管理部は前記メインメモリに前記入力データを書き込まず,そして,前記キャッシュ制御部は前記発行されたプリフェッチ要求に応答して前記主記憶管理部から取得した前記入力データを前記キャッシュメモリに登録する付記2に記載の演算処理装置。
【0102】
(付記10)
前記主記憶管理部は,前記入力データストア要求に応答して前記入力データを取得した後,前記入力データを保持した状態で前記入力データストア要求のエントリを保持し,
前記入力データの取得後,前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から前記入力データを取得する付記9に記載の演算処理装置。
【0103】
(付記11)
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記プリフェッチ要求のアドレスと前記主記憶管理部が処理中の入力データストア要求のエントリのアドレスとが一致し前記主記憶管理部による前記入力データの取得が完了していない場合に,前記プリフェッチ要求をアボートし,前記主記憶管理部による前記入力データの取得が完了した後に,前記アボートされたプリフェッチ要求を処理する付記10に記載の演算処理装置。
【0104】
(付記12)
前記キャッシュ制御部は,前記プリフェッチ要求をアボートすると共に前記発行されたプリフェッチ要求の投入を待機させ,前記書き込みが完了した後に,再投入された前記発行されたプリフェッチ要求に応答して前記入力データを前記キャッシュメモリに登録する付記5または8に記載の演算処理装置。
【0105】
(付記13)
前記キャッシュ制御部は,前記プリフェッチ要求をアボートすると共に前記発行されたプリフェッチ要求の投入を待機させ,前記主記憶管理部による前記入力データの取得が完了した後に,再投入された前記発行されたプリフェッチ要求に応答して前記入力データを前記キャッシュメモリに登録する付記11に記載の演算処理装置。
【0106】
(付記14)
メモリアクセス要求とプリフェッチ要求を出力する演算処理部と,前記メモリアクセス要求と前記プリフェッチ要求に加えて入力データを記憶する入力データストア要求を処理するキャッシュ制御部と,キャッシュメモリを有するキャッシュと,メインメモリを制御する主記憶管理部とを有する演算処理装置の制御方法であって,
前記キャッシュ制御部は,前記入出力装置からのキャッシュ登録指示付きの入力データストア要求に応答して,前記主記憶管理部に前記入力データストア要求を出力すると共に前記プリフェッチ要求を発行し,
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記入力データストア要求の入力データを前記キャッシュメモリに登録する演算処理装置の制御方法。
【0107】
(付記15)
前記主記憶管理部は,前記入力データストア要求に応答して前記入力データを保持し,
前記キャッシュ制御部は,前記発行されたプリフェッチ要求に応答して,前記主記憶管理部から取得した前記入力データを前記キャッシュメモリに登録する付記14に記載の演算処理装置。