Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CACHE MEMORY, INFORMATION PROCESSOR, AND METHOD FOR CONTROLLING CACHE MEMORY
Document Type and Number:
WIPO Patent Application WO/2009/119413
Kind Code:
A1
Abstract:
A cache memory which allows shortening of a period required for communication processing when computing and communicating are performed independently. The cache memory (103) comprises a data storage means (103a) which is provided with a plurality of words into which data from a CPU (101) can be written, an address storage means (103b) which stores addresses individually associated with the respective words from among a plurality of addresses, and a control means (103c) which when a read instruction and an optional address are received out of a communication device (102) and the address is contained in the address storage means (103b) in the situation, reads data from a word associated with the address and provides the data to the communication device (102) but when the address is not contained in the address storage means (103b), reads data associated with the address out of a memory (104), provides the data to the communication device (102), and does not write the data into the data storage means (103a).

Inventors:
KANOH YASUSHI (JP)
Application Number:
PCT/JP2009/055304
Publication Date:
October 01, 2009
Filing Date:
March 18, 2009
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NEC CORP (JP)
KANOH YASUSHI (JP)
International Classes:
G06F12/08
Foreign References:
JP2002278834A2002-09-27
JPH05334185A1993-12-17
JPH02188849A1990-07-24
Attorney, Agent or Firm:
MIYAZAKI, Teruo et al. (JP)
Akio Miyazaki (JP)
Download PDF:
Claims:
 CPUと、前記CPUと他のCPUとの通信を実行する通信装置と、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、に接続されるキャッシュメモリであって、
 前記CPUおよび前記通信装置からのデータを書き込み可能な複数のワードを有するデータ格納手段と、
 前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを格納するアドレス格納手段と、
 前記通信装置から、書き込み命令と、前記複数のアドレスのうちの任意のアドレスと、書き込み用データと、を受け付けた状況で、当該アドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込み用データを書き込み、また、前記通信装置から、読み出し命令と、前記任意のアドレスと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードからデータを読み出して当該通信装置に提供し、当該アドレスが前記アドレス格納手段に格納されていない場合には、前記記憶装置から当該アドレスに対応づけられたデータを読み出して当該通信装置に提供し、かつ当該データを前記データ格納手段に書き込まない制御手段と、を含むキャッシュメモリ。
 前記制御手段は、さらに、前記通信装置から、前記書き込み命令と、前記任意のアドレスと、前記書き込み用データと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスに対応づけて前記書き込み用データを前記記憶装置に書き込み、かつ前記書き込み用データを前記データ格納手段に書き込まない、請求の範囲第1項に記載のキャッシュメモリ。
 前記アドレス格納手段は、前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを、所定数のアドレスからなるブロック単位で格納し、
 前記制御手段は、さらに、前記通信装置から、前記書き込み命令と異なる所定書き込み命令と、前記任意のアドレスと、書き込みデータと、を受け付けた状況で、前記所定書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込みデータを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられた所定数のワードのうち、当該アドレスに対応するワードに前記書き込みデータを書き込み、
 前記アドレスを含むブロックに対応づけられたワードのうち、前記書き込みデータが書き込まれたワードを示すワード情報を記憶するワード状態記憶手段を、さらに含む、請求の範囲第2項に記載のキャッシュメモリ。
 前記制御手段は、さらに、前記CPUから、データ書き込み命令と、前記任意のアドレスと、通信用データと、を受け付けた状況で、前記データ書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記通信用データを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられたワードのうち、当該アドレスに対応するワードに前記通信用データを書き込み、
 前記ワード状態記憶手段は、さらに、前記アドレスを含むブロックに対応づけられたワードのうち、前記通信用データが書き込まれたワードを示すワード情報を記憶する、請求の範囲第3項に記載のキャッシュメモリ。
 請求の範囲第1項から第4項のいずれか1項に記載のキャッシュメモリと、
 前記キャッシュメモリと接続されたCPUと、
 前記キャッシュメモリと接続され、前記CPUと他のCPUとの通信を実行する通信装置と、
 前記キャッシュメモリと接続され、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、を含む情報処理装置。
 CPUと、前記CPUと他のCPUとの通信を実行する通信装置と、複数のアドレスのいずれかに対応づけてデータを記憶する記憶装置と、に接続され、また、前記CPUおよび前記通信装置からのデータを書き込み可能な複数のワードを有するデータ格納手段を含む、キャッシュメモリが行うキャッシュメモリ制御方法であって、
 前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスをアドレス格納手段に格納し、
 前記通信装置から、書き込み命令と、前記複数のアドレスのうちの任意のアドレスと、書き込み用データと、を受け付けた状況で、当該アドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込み用データを書き込み、また、前記通信装置から、読み出し命令と、前記任意のアドレスと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードからデータを読み出して当該通信装置に提供し、当該アドレスが前記アドレス格納手段に格納されていない場合には、前記記憶装置から当該アドレスに対応づけられたデータを読み出して当該通信装置に提供し、かつ当該データを前記データ格納手段に書き込まない動作を実行する、キャッシュメモリ制御方法。
 前記実行することは、前記通信装置から、前記書き込み命令と、前記任意のアドレスと、前記書き込み用データと、を受け付けた状況で、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスに対応づけて前記書き込み用データを前記記憶装置に書き込み、かつ前記書き込み用データを前記データ格納手段に書き込まない動作を実行する、請求の範囲第6項に記載のキャッシュメモリ制御方法。
 前記格納することは、前記複数のアドレスのうち、前記複数のワードのそれぞれに個別に対応づけられたアドレスを、所定数のアドレスからなるブロック単位で格納し、
 前記実行することは、さらに、前記通信装置から、前記書き込み命令と異なる所定書き込み命令と、前記任意のアドレスと、書き込みデータと、を受け付けた状況で、前記所定書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記書き込みデータを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられた所定数のワードのうち、当該アドレスに対応するワードに前記書き込みデータを書き込む動作を実行し、
 前記アドレスを含むブロックに対応づけられたワードのうち、前記書き込みデータが書き込まれたワードを示すワード情報をワード状態記憶手段に記憶することを、さらに含む 請求の範囲第7項に記載のキャッシュメモリ制御方法。
 前記実行することは、さらに、前記CPUから、データ書き込み命令と、前記任意のアドレスと、通信用データと、を受け付けた状況で、前記データ書き込み命令と共に受け付けられたアドレスが、前記アドレス格納手段に格納されている場合には、当該アドレスに対応する前記ワードに前記通信用データを書き込み、当該アドレスが前記アドレス格納手段に格納されていない場合には、当該アドレスを含むブロックに対応づけられたデータを前記記憶装置から読み出すことなく、前記複数のワードのうちの前記所定数のワードを、当該アドレスを含むブロックに対応づけ、当該アドレスを含むブロックを前記アドレス格納手段に格納し、当該アドレスを含むブロックに対応づけられたワードのうち、当該アドレスに対応するワードに前記通信用データを書き込む動作を実行し、
 前記記憶することは、さらに、前記アドレスを含むブロックに対応づけられたワードのうち、前記通信用データが書き込まれたワードを示すワード情報を前記ワード状態記憶手段に記憶する、請求の範囲第8項に記載のキャッシュメモリ制御方法。
Description:
[規則37.2に基づきISAが決定した 明の名称] キャッシュメモリ、情報処理装 およびキャッシュメモリ制御方法

 本発明は、キャッシュメモリ、情報処置 置およびキャッシュメモリ制御方法に関し 特には、並列計算機システムで使用可能な ャッシュメモリ、情報処置装置およびキャ シュメモリ制御方法に関する。

 キャッシュメモリを用いた情報処理シス ムが知られている。

 特許文献1(特開平11-31103号公報)に記載の 報処理システムでは、キャッシュメモリは CPU等の演算装置と主メモリとの間に設けら 、主メモリ内の一部のデータを格納し、演 装置とデータをやり取りする。

 キャッシュメモリを用いた情報処理シス ムは、キャッシュミスが発生した場合に、 メモリにアクセスして、主メモリからブロ ク単位でデータを読み出し、そのブロック 位のデータを、キャッシュメモリに書き込 。

 また、キャッシュメモリを備えた並列計 機システムも知られている(特許文献2(特開2 000-267935号公報)参照)。

 また、キャッシュメモリと接続されたCPU 、プロセッサ間通信装置を介して、他のCPU 通信する、並列計算機システムも知られて る。

 並列計算機システムでのCPU同士の通信に して、種々の技術が知られている。

 特許文献3(特開2005-78264号公報)に記載の並 列計算機システムでは、CPUは、演算とデータ 通信の両方の動作を行う。

 特許文献4(特開平3-150659号公報)には、プ セッサのキャッシュメモリから、送信用デ タを、直接、送信ポートに転送して通信す 、プロセッサ間データ転送方法が開示され いる。

 このプロセッサ間データ転送方法では、 ロセッサの命令として、データ転送命令が けられている。このプロセッサ間データ転 方法では、送信用データがキャッシュメモ 上にある場合、送信用データが、キャッシ メモリから、直接、送信ポートに送られる 一方、送信用データがキャッシュメモリ上 ない場合、送信用データが、メモリから、 信ポートに、転送される。送信ポートは、 信用データにパケットヘッダを付加してパ ットを作成して、そのパケットをネットワ クに送出する。この方法は、プロセッサ間 信の送信時のレイテンシを短縮する効果を つ。

 特許文献5(特開平3-168860号公報)には、ネ トワークから受信したデータのメモリアド スが、そのデータをメモリに書き込む前の 階で、プロセッサのキャッシュメモリ上に 在する場合には、そのデータをメモリに書 込むとともに、キャッシュメモリ上のブロ クにも、そのデータを書き込む方法が開示 れている。この方法は、受信データをメモ のみに書く場合に生じるキャッシュの無効 による性能低下を防ぐことが可能である。

 特許文献6(特開平6-103244号公報)には、プ セッサのキャッシュメモリとは別に、受信 ニットから受信データを書き込む第2のキャ シュメモリが設けられ、送信ユニットから 送信要求に対して、2個のキャッシュメモリ 上にデータがある場合には、データを、プロ セッサのキャッシュメモリから送信ユニット に転送し、受信ユニットが受信したデータを 、第2のキャッシュメモリに書き込む技術が 示されている。

 また、特許文献6には、プロセッサが、第 2のキャッシュメモリ上のデータをアクセス た場合には、第2のキャッシュメモリから第1 のキャッシュメモリへ、データを転送する技 術が開示されている。なお、送信ユニットに は、送信データを受け取るためのFIFO(First-In  First-Out)メモリがある。

 図1は、一般的な並列計算機のプロセッサ 3301の構成を示したブロック図である。

 プロセッサ3301は、演算を行うCPU3302と、 ロセッサ間通信を行うプロセッサ間通信装 3303と、キャッシュメモリ3304と、メモリ3305 、制御回路3307と、CPUバス3308と、を含む。な お、図示していないが、キャッシュメモリ330 4は、公知技術であるデータアレイおよびア レスアレイを含む。

 プロセッサ3301は、プロセッサ間通信装置 3303とプロセッサ間ネットワーク3306を介して 他のプロセッサ3301と通信を行う。

 CPUバス3308には、キャッシュメモリ3304と制 回路3307が接続されている。CPUバス3308には、 以下のようなコマンドとそれに対するレスポ ンスが流れる。CPUバス3308に関するコマンド レスポンスに関しては、非特許文献1(ミップ スR10000マイクロプロセッサ ユーザズ マニ アル バージョン2.0(MIPS R10000 Microprocessor Us er’s Manual Ver.2.0)、MIPS Technologies, Inc.、1996  pp.121~140)に開示されている。
(1)ブロックリード
 キャッシュメモリ3304がメモリ3305からブロ クを読み出すためのコマンド。

 レスポンスとして該当ブロックがメモリ3305 から読み出され、キャッシュメモリ3304に返 れる。
(2)ブロックライト
 キャッシュメモリ3304からブロックをメモリ 3305に書き込むためのコマンド。

 該当ブロックがメモリ3305に書き込まれる。
(3)インターベンションShared
 制御回路3307がキャッシュメモリ3304上のキ ッシュブロックを読み出すためのコマンド

 キャッシュメモリ3304に該当ブロックが存 在していて、かつ、CPU3302により書きかえら ている場合には、ブロックデータがレスポ スとして、キャッシュメモリ3304から制御回 3307に返される。キャッシュメモリ3304上の ロックは無効化されない。

 キャッシュメモリ3304に該当ブロックが存在 しない、または、存在しても書き換えられて いない場合には、データレスポンスがないこ とがキャッシュメモリ3304から制御回路3307に される。
(4)インターベンションExclusive
 制御回路3307がデータを書き込むためにキャ ッシュブロックを読み出すためのコマンド。

 キャッシュメモリ3304に該当ブロックが存 在していて、かつ、CPU3302により書き換えら ている場合には、ブロックデータがレスポ スとして、キャッシュメモリ3304から制御回 3307に返される。そして、キャッシュメモリ 3304上の該当ブロックは無効化される。

 キャッシュメモリ3304上に該当するブロッ クが存在するがCPU3302によって書き換えられ いない場合には、キャッシュメモリ3304上の ロックを無効化してデータレスポンスがな ことがキャッシュメモリ3304から制御回路330 7に返される。

 キャッシュメモリ3304上に該当するブロック が存在しない場合には、データレスポンスが ないことがキャッシュメモリ3304から制御回 3307に返される。
(5)無効化要求
 制御回路3307がキャッシュメモリ3304上のブ ックを無効化するためのコマンド
 キャッシュメモリ3304上に該当ブロックが存 在する場合には、キャッシュメモリ3304は該 ブロックを無効化する。

 キャッシュメモリ3304上に該当ブロックが 存在しない場合には、キャッシュメモリ3304 、なにもしない。

 プロセッサ間通信装置3303は、制御回路330 7に対してデータの読み出しや書き込みを要 する。制御回路3307は、要求に応じてCPUバス3 308を用いて、上記のコマンドをキャッシュメ モリ3304に発行し、キャッシュメモリ3304を操 する。また、制御回路3307は必要に応じてメ モリ3305にもアクセスする。なお、CPUバス3308 介したキャッシュメモリ3304の操作は、CPU330 2からキャッシュメモリ3304をアクセスする場 よりも、一般的に処理時間が長くなる。

 図2と図3は、一般的な並列コンピュータ プロセッサ間通信の送信と受信の処理を説 するための説明図である。図2および図3にお いて、図1に示したものと同一構成のものに 同一符号を付してある。なお、図2および図3 において、メモリ部3400は、図1に示したキャ シュメモリ3304とメモリ3305と制御回路3307とC PUバス3308をまとめたものである。

 近年の並列計算機のプロセッサ間通信で 、CPUでの演算とプロセッサ間通信装置での 信とを独立して同時に行えるようにするた に、以下のような処理方式が採られている

 図2に示した送信処理では、まず、CPU3302 、メモリ部3400上に、送信データ34aを作成す (ステップ3401)。

 次に、CPU3302が、メモリ部3400上のコマン キュー3400aに、コマンド34bを書き込む(ステ プ3402)。コマンド34bには、通信の宛先や送信 データ34aへのポインタなどが示されている。

 次に、CPU3302が、プロセッサ間通信装置330 3に、コマンド34bの位置を示す送信要求を送 (ステップ3403)。

 プロセッサ間通信装置3303は、送信要求を 受け付けると、制御回路3307を用いて、メモ 部3400から、コマンド34bを読み出す(ステップ 3404)。

 そして、プロセッサ間通信装置3303は、コ マンド34bに示された、送信データ34aへのポイ ンタを使って、制御回路3307を用いて、メモ 部3400から、送信データ34aを読み出し(ステッ プ3405)、送信データ34aに基づいてパケットを 製して、プロセッサ間ネットワーク3306へパ ケットを送信する(ステップ3406)。

 CPU3302は、プロセッサ間通信装置3303の送 処理の状況によらず、コマンドキュー3400aに コマンド34bを書き込み、プロセッサ間通信装 置3303に送信要求を送ることができる。

 プロセッサ間通信装置3303は、コマンドキ ュー3400a内のコマンド34bがなくなるまで、制 回路3307を用いて、コマンドキュー3400aから マンド34bを読み出して処理していく。

 このように、メモリ部3400上にコマンドキ ュー3400aを設けることにより、CPU3302とプロセ ッサ間通信装置3303は、独立に動作すること 可能となっており、演算と通信を同時に行 ことができる。

 図3に示した受信処理では、まず、プロセ ッサ間通信装置3303が、プロセッサ間ネット ーク3306から、パケットを受信する(ステップ 3501)。

 そして、プロセッサ間通信装置3303は、制 御回路3307を用いて、パケットの中の受信デ タ35aを、メモリ部3400上に書き込む(ステップ 3502)。

 そして、プロセッサ間通信装置3303は、制 御回路3307を用いて、受信完了フラグ35bを、 モリ部3400に書き込む(ステップ3503)。

 CPU3302は、受信完了フラグ35bをポーリング していて、プロセッサ間通信装置3303によっ 書かれた受信完了フラグ35bを読み出す(ステ プ3504)。

 そして、CPU3302は、受信完了フラグ35bを参 照することによって、受信データ35aがメモリ 部3400に書き込まれたことを知り、受信デー 35aを、メモリ部3400から読み出す(ステップ350 5)。

 ここでは、受信完了をCPU3302に伝える手段 として、メモリ部3400上の受信完了フラグ35b 用いられている。

 なお、受信完了をCPU3302に伝える手段とし て、割り込みも考えられるが、割り込みによ るコンテクストスイッチのオーバヘッドが大 きいので、性能的に割り込み使うことは困難 である。

 図4と図6は、図2と図3に示したプロセッサ 間通信の送信と受信の処理を、図1に示した ロセッサ3301内のキャッシュメモリ3304の制御 も含めて説明するための説明図である。

 図4に示した送信処理では、まず、CPU3302 、送信データ34aを作成する(ステップ3601)。

 ここでは、送信データ34aのすべてが、キ ッシュメモリ3304上にキャッシュされるとし て説明を行うが、送信データ34aのサイズや作 成される時刻によっては、送信データ34aの一 部だけが、キャッシュメモリ3304上にあり、 信データ34aのその他の部分は、メモリ3305に 在することもありうる。

 次に、CPU3302が、コマンドキュー3400aに、 マンド34bを書き込む。

 ここでは、コマンド34bが書き込まれるア レスは、キャッシュメモリ3304上にない(書 込み時にキャッシュミスする)として説明す 。

 そのため、まず、キャッシュメモリ3304が 、コマンド34bが書き込まれるアドレスを含む ブロックのブロックリードを制御回路3307に し要求する。制御回路3307は、メモリ3305上の 該当ブロックを、メモリ3305から読み出して ャッシュメモリ3304に送り、キャッシュメモ 3304上に該当ブロックが書き込まれる(ステ プ3602)。CPU3302は、キャッシュメモリ3304上の 当ブロックのうち、コマンド34bが書き込ま るアドレスに対応する部分(ワード)に、コ ンド34bを書き込む(ステップ3603)。つまり、 マンド34bは、キャッシュメモリ3304上にキャ シュされる。コマンド34bには、通信の宛先 送信データ34aへのポインタなどが示されて る。

 次に、CPU3302が、プロセッサ間通信装置330 3に、コマンド34bの位置(コマンド34bが書き込 れたアドレス)を示す送信要求を送る(ステ プ3604)。

 プロセッサ間通信装置3303は、送信要求を 受け付けると、制御回路3307を用いて、コマ ド34bを読み出す。制御回路3307は、CPUバス3308 にインターベンションShared要求を出し、コマ ンド34bが書き込まれたアドレスを含むブロッ ク(該当ブロック)をキャッシュメモリ3304から 読み出す。コマンド34bは、キャッシュメモリ 3304上にキャッシュされていて、CPU3302によっ 書き換えられているので、キャッシュメモ 3304は該当ブロックをレスポンスとして制御 回路3307に返す。制御回路3307は、コマンド34b 書き込まれたアドレスを含むブロック(該当 ブロック)を、メモリ3305にライトバックし(ス テップ3605)、それとともに、コマンド34bをプ セッサ間通信装置3303に返す(ステップ3606)。

 次に、プロセッサ間通信装置3303は、コマ ンド34b内の、送信データ34aへのポインタ(送 データ34aが書き込まれたアドレス)を使って 制御回路3307を用いて、送信データ34aを読み 出す。

 制御回路3307が、CPUバス3308にインターベ ションShared要求を出し、送信データ34aが書 込まれたアドレスを含む複数のブロック(該 ブロック)を、キャッシュメモリ3304から読 出す。ここでは、送信データ34aのすべてが キャッシュメモリ3304上に存在するとしてい 、送信データはCPU3302によって書き込まれて いるので、キャッシュメモリ3304は該当ブロ クをレスポンスとして制御回路3307に返す。 御回路3307は、送信データ34aが書き込まれた アドレスを含む複数のブロックをメモリ3305 ライトバックし(ステップ3607)、それととも 、送信データ34aをプロセッサ間通信装置3303 渡す(ステップ3608)。

 そして、プロセッサ間通信装置3303は、送 信データ34aに基づいてパケットを作製して、 プロセッサ間ネットワーク3306へパケットを 信する(ステップ3609)。

 図5は、図4に示した送信処理を説明する めのタイムチャートである。

 図5では、CPU3302が、コマンド34bをコマン キュー3400aに書き込む時に、キャッシュメモ リ3304でキャッシュミスが発生した場合の動 が記述されている。ここで、キャッシュミ が発生するとしているのは、コマンドキュ 3400aのコマンド34bが書かれたアドレスに前回 コマンド34bが書き込まれた後、演算に必要な データアクセスのために、キャッシュメモリ 3304からコマンド34bが書かれたアドレスが追 出されている可能性が高いためである。

 CPU3302からのコマンド34bの書き込みでキャ ッシュミスが起こり(ステップ3701)、キャッシ ュメモリ3304は、コマンド34bを書き込むアド スを含むブロックのブロックリード要求を 御回路3307に送る。制御回路3307は、メモリ330 5から該当ブロックを読み出し、キャッシュ モリ3304に返す。そしてキャッシュメモリ3304 に該当ブロックが書き込まれる(ステップ3702) 。

 そして、CPU3302からキャッシュメモリ3304 コマンド34bが書き込まれる(ステップ3703)。

 CPU3302からの送信要求を契機にしたプロセ ッサ間通信装置3303からの指示により(ステッ 3704)、制御回路3307が、コマンド34bが書き込 れたアドレスを含む該当ブロックをキャッ ュメモリ3304から読み出すために、キャッシ ュメモリ3304に対しインターベンションShared 求を出す。該当ブロックはキャッシュメモ 3304上にありCPU3302により書き換えられている ので、キャッシュメモリ3304から制御装置3307 該当ブロックがリプライされる。制御回路3 307は、該当ブロックをメモリ3305にライトバ クし(ステップ3705)、それとともに、コマン 34bをプロセッサ間通信装置3303に送る(ステッ プ3706)。

 そして、プロセッサ間通信装置3303は、コ マンド34bを参照して、制御回路3307を用いて 送信データ34aが書き込まれたアドレスを含 該当ブロックを読み出す。制御回路3307は、 ャッシュメモリ3304に対して、該当ブロック のインターベンションShared要求を発行する。 該当ブロックはキャッシュメモリ3304上にあ CPU3302によって書き換えられているので、キ ッシュメモリ3304は制御回路3307に該当ブロ クをリプライする。制御回路3307は、該当ブ ックをメモリ3305にライトバックし(ステッ 3707)、それとともに、送信データ34aをプロセ ッサ間通信装置3303に送る(ステップ3708)。

 図5に示すように、プロセッサ間通信装置 3303が、送信データ34aを読み出すときは、複 の読み出しリクエストを制御回路3307に先行 行することで、読み出しレイテンシを隠蔽 ることが可能である。

 図5を見ると、CPU3302とプロセッサ間通信 置3303間のコマンド34bの受け渡しに時間がか っていることがわかる(期間T3709)。

 図6に示した受信処理では、まず、プロセ ッサ間通信装置3303が、プロセッサ間ネット ーク3306から、パケットを受信する(ステップ 3801)。

 そして、プロセッサ間通信装置3303は、制 御回路3307を用いて、パケットの中の受信デ タ35aを、メモリ3305上に書き込む。

 なお、受信データ35aが書き込まれるアド スを含むブロックが、キャッシュメモリ3304 にキャッシュされている場合があるので、制 御回路3304bは、以下のような処理を行う必要 ある。

 (1)受信データ35aの書き込みが、受信デー 35aが書き込まれるアドレスを含むブロック( 該当ブロック)全体への書き込みになる場合 は、制御回路3307は、キャッシュメモリ3304に 対して、該当ブロックデータの無効化を要求 し(ステップ3802)、その後、受信データ35aを、 メモリ3305に書き込む(ステップ3803)。

 (2)受信データ35aの書き込みが、受信デー 35aが書き込まれるアドレスを含むブロック( 該当ブロック)の一部への書き込みになる場 には、制御回路3307は、キャッシュメモリ3304 に対して、該当ブロックのインターベンショ ンExclusiveを要求する。

 (A)もし、キャッシュメモリ3304上に該当ブ ロックが存在し、かつ、CPU3302により書き換 られていたなら、キャッシュメモリ3304は該 ブロックを制御回路3307にリプライし、該当 ブロックを無効化する。そして、制御回路330 7はメモリ3305に該当ブロックをライトバック る(ステップ3804)。

 (B)もし、キャッシュメモリ3304上に該当ブ ロックが存在し、かつ、CPU3302により書き換 られていない場合には、キャッシュメモリ33 04は、該当ブロックを無効化して、データリ ライがないことを制御回路3307に伝える。CPU 3302によって書き換えられていないので、該 ブロックをメモリ3305にライトバックする必 はない。

 (C)もし、キャッシュメモリ3304上に該当ブ ロックが存在しない場合は、キャッシュメモ リ3304は制御回路3307にデータリプライがない とを伝える。

 そして、制御回路3307は、受信データ35aを 、メモリ3305に書き込む(ステップ3803)。

 プロセッサ間通信装置3303は、受信データ 35aのすべてをメモリ3305に書き込んだ後、制 回路3307を用いて、メモリ3305に受信完了フラ グ35bを書き込む。

 受信完了フラグ35bは、CPU3302によってポー リングされていると考えられるので、受信完 了フラグ35bが書き込まれるアドレスを含むブ ロック(該当ブロック)は、キャッシュメモリ3 304上にある。また、受信完了フラグ35bの書き 込みは、受信完了フラグ35bが書き込まれるア ドレスを含むブロック(該当ブロック)の一部 の書き込みになる。

 従って、制御回路3307は、まず、キャッシ ュメモリ3304に対して、受信完了フラグ35bが き込まれるブロック(該当ブロック)をインタ ーベンションExclusive要求で読み出す。前述の ように該当ブロックはキャッシュメモリ3304 にある。もし、CPU3302によって書き換えられ いる場合は、キャッシュメモリ3304は該当ブ ロックを制御回路3307にリプライして該当ブ ックを無効化する。そして、制御回路3307は プライされた該当ブロックをメモリ3305にラ イトバックする(ステップ3805)。もし、CPU3302 よって書き換えられていない場合は、キャ シュメモリ3304は該当ブロックを無効化して データリプライがないことを制御回路3307に 伝える。その後、制御回路3307はメモリ3305に 受信完了フラグ35bを書き込む(ステップ3806)

 CPU3302は、受信完了フラグ35bをポーリング しているので、プロセッサ間通信装置3303に り受信完了フラグ35bが書かれた直後の読み し時にキャッシュミスが発生し、キャッシ メモリ3304は、受信完了フラグ35bが書き込ま たアドレスを含むブロックを制御回路3307に ブロックリード要求して読み出す。制御回路 3307は、該当ブロックをメモリ3305から読み出 て、キャッシュメモリ3304に返す。そして、 キャッシュメモリ3304が該当ブロックを書き む(ステップ3807)。

 そして、CPU3302が、キャッシュメモリ3304 ら、受信完了フラグ35bを読み出す(ステップ3 808)。

 そして、CPU3302は、受信完了フラグ35bを参 照することによって、受信データ35aが書き込 まれたことを知り、受信データ35aを読み出す 。

 受信データ35aは、キャッシュメモリ3304上 にはなくメモリ3305上にあるので、キャッシ メモリ3304からの読み出し時にキャッシュミ が発生し、受信データ35aが書き込まれたア レスを含むブロックが、メモリ3305から読み 出されて、キャッシュメモリ3304に書き込ま (ステップ3809)、CPU3302は、キャッシュメモリ3 304から、受信データ35aを読み出す(ステップ38 10)。

 図7は、図6に示した受信処理を説明する めのタイムチャートである。

 プロセッサ間通信装置3303が、制御回路330 7を用いて、受信データ35aをメモリ3305に書き む。制御回路3307は、受信データ35aを書き込 むアドレスを含むブロックを、キャッシュメ モリ3304からメモリ3305へライトバックして無 化するか、または、無効化を行い(ステップ 3901)、その後、受信データ35aを、メモリ3305に 書き込む(ステップ3902)。

 次に、プロセッサ間通信装置3303は、制御 回路3307を用いて、受信完了フラグ35bを、メ リ3305に書き込む。

 受信完了フラグ35bは、CPU3302によってポー リングされているので、受信完了フラグ35bが 書き込まれるアドレスを含むブロックは、キ ャッシュメモリ3304上にある。

 そのため、制御回路3307は、受信完了フラ グ35bが書き込まれるアドレスを含むブロック を、キャッシュメモリ3304からメモリ3305にラ トバックして無効化する(ステップ3903)、ま は、無効化し、受信完了フラグ35bをメモリ3 305に書き込む(ステップ3904)。

 その直後のCPU3302からの受信完了フラグ35b の読み出し時に、キャッシュメモリ3304でキ ッシュミスが発生し、受信完了フラグ35bが き込まれたアドレスを含むブロックが、制 回路3307により、メモリ3305から読み出されて 、キャッシュメモリ3304に書き込まれる(ステ プ3905)。

 そして、CPU3302は、キャッシュメモリ3304 の受信完了フラグ35bを読み出す(ステップ3906 )。

 そして、CPU3302は、受信完了フラグ35bを参 照することによって受信データ35aがメモリ330 5に書き込まれたことを確認し、その後、受 データ35aを読み出す。

 受信データ35aは、キャッシュメモリ3304で はなくメモリ3305に格納されているので、キ ッシュメモリ3304でキャッシュミスが起こり 受信データ35aが書き込まれたアドレスを含 ブロックが、制御回路3307によって、メモリ 3305から読み出され、キャッシュメモリ3304に き込まれる(ステップ3907)。

 そして、CPU3302は、キャッシュメモリ3304 ら、受信データ35aを読み出す(ステップ3908)

 図7に示すように、プロセッサ間通信装置 3303が受信データ35aをメモリ3305に書き込むと は、複数の書き込みリクエストを先行発行 ることで、書き込みのレイテンシを隠蔽で る。同様に、CPU3302が受信データ35aを読み出 すときも、複数の読み出しリクエストを先行 発行することで、読み出しレイテンシを隠蔽 することが可能である。

 図7を見ると、プロセッサ間通信装置3303か CPU3302への受信完了フラグ35bの受け渡しに時 がかかっていることがわかる(期間T3909)。

特開平11-31103号公報

特開2000-267935号公報

特開2005-78264号公報

特開平3-150659号公報

特開平3-168860号公報

特開平6-103244号公報 ミップスR10000マイクロプロセッサ ユー ズ マニュアル バージョン2.0(MIPS R10000 Mic roprocessor User’s Manual Ver.2.0)、MIPS Technologies , Inc.、1996、 pp.121~140

 特許文献3から6には、並列計算機システ 内でCPU同士が通信する技術が記載されてい 。以下、これらの技術で生じる問題を説明 る。

 特許文献3に記載の技術では、CPUが、演算 と通信の両方の処理を行うので、演算と通信 の平行処理ができない。よって、プロセッサ 間通信の高速化は期待できない。

 また、特許文献4に記載の送信技術および 特許文献6に記載の送信技術では、CPUが直接 ロセッサ間通信装置にコマンドを投げる方 を採るので、CPUとプロセッサ間通信装置が 立に動作できない。つまり、演算と通信の 行処理ができない。

 また、特許文献5に記載の技術では、プロ セッサ間ネットワークから受信したデータの 該当するブロックがキャッシュメモリ上にあ る場合、受信データが、メモリとキャッシュ メモリの両方に書き込まれる。しかしながら 、演算と通信の平行処理ができない。

 演算と通信を独立して行おうとすると、 2を用いて説明したように、送信では、コマ ンドキューを使って、CPUからプロセッサ間通 信装置に送信要求を伝える方法が必要である 。また、図3を用いて説明したように、受信 は、受信完了フラグを用いて、プロセッサ 通信装置からCPUにデータ受信の完了を伝え 方法が必要である。

 その場合、図4と図6を用いて説明した処 が行われ、図5と図7で示したように、CPUから プロセッサ間通信装置へコマンドを伝える処 理、および、プロセッサ間通信装置からCPUへ 受信完了フラグを伝える処理に時間がかかっ ている。

 つまり、演算と通信を独立して行おうと ると、キャッシュメモリやメモリを用いた 報の受け渡し処理に時間がかかってしまう

 本発明の目的は、上述した課題を解決す 、キャッシュメモリ、情報処置装置および ャッシュメモリ制御方法を提供することで る。

 本発明のキャッシュメモリは、CPUと、前 CPUと他のCPUとの通信を実行する通信装置と 複数のアドレスのいずれかに対応づけてデ タを記憶する記憶装置と、に接続されるキ ッシュメモリであって、前記CPUおよび前記 信装置からのデータを書き込み可能な複数 ワードを有するデータ格納手段と、前記複 のアドレスのうち、前記複数のワードのそ ぞれに個別に対応づけられたアドレスを格 するアドレス格納手段と、前記通信装置か 、書き込み命令と、前記複数のアドレスの ちの任意のアドレスと、書き込み用データ 、を受け付けた状況で、当該アドレスが、 記アドレス格納手段に格納されている場合 は、当該アドレスに対応する前記ワードに 記書き込み用データを書き込み、また、前 通信装置から、読み出し命令と、前記任意 アドレスと、を受け付けた状況で、当該ア レスが前記アドレス格納手段に格納されて る場合には、当該アドレスに対応する前記 ードからデータを読み出して当該通信装置 提供し、当該アドレスが前記アドレス格納 段に格納されていない場合には、前記記憶 置から当該アドレスに対応づけられたデー を読み出して当該通信装置に提供し、かつ 該データを前記データ格納手段に書き込ま い制御手段と、を含む。

 本発明の情報処理装置は、上記キャッシュ モリと、前記キャッシュメモリと接続され CPUと、前記キャッシュメモリと接続され、 記CPUと他のCPUとの通信を実行する通信装置 、前記キャッシュメモリと接続され、複数 アドレスのいずれかに対応づけてデータを 憶する記憶装置と、を含む
 本発明のキャッシュメモリ制御方法は、CPU 、前記CPUと他のCPUとの通信を実行する通信 置と、複数のアドレスのいずれかに対応づ てデータを記憶する記憶装置と、に接続さ 、また、前記CPUおよび前記通信装置からの ータを書き込み可能な複数のワードを有す データ格納手段を含む、キャッシュメモリ 行うキャッシュメモリ制御方法であって、 記複数のアドレスのうち、前記複数のワー のそれぞれに個別に対応づけられたアドレ をアドレス格納手段に格納する格納ステッ と、前記通信装置から、書き込み命令と、 記複数のアドレスのうちの任意のアドレス 、書き込み用データと、を受け付けた状況 、当該アドレスが、前記アドレス格納手段 格納されている場合には、当該アドレスに 応する前記ワードに前記書き込み用データ 書き込み、また、前記通信装置から、読み し命令と、前記任意のアドレスと、を受け けた状況で、当該アドレスが前記アドレス 納手段に格納されている場合には、当該ア レスに対応する前記ワードからデータを読 出して当該通信装置に提供し、当該アドレ が前記アドレス格納手段に格納されていな 場合には、前記記憶装置から当該アドレス 対応づけられたデータを読み出して当該通 装置に提供し、かつ当該データを前記デー 格納手段に書き込まない制御ステップと、 含む。

 本発明によれば、演算と通信が独立して われる場合において、情報の受け渡し処理 要する時間を短くすることが可能になる。

図1は、一般的な並列計算機のプロセッ サ3301の構成を示したブロック図である。 図2は、一般的な並列コンピュータのプ ロセッサ間通信の送信処理を説明するための 説明図である。 図3は、一般的な並列コンピュータのプ ロセッサ間通信の受信処理を説明するための 説明図である。 図4は、一般的な並列コンピュータのプ ロセッサ間通信の送信処理を説明するための 説明図である。 図5は、図4に示した送信処理を説明す ためのタイムチャートである。 図6は、一般的な並列コンピュータのプ ロセッサ間通信の受信処理を説明するための 説明図である。 図7は、図6に示した受信処理を説明す ためのタイムチャートである。 図8は、本発明の第1の実施の形態の並 計算機用プロセッサ100を示したブロック図 ある。 図9Aは、CPU101が読み出すデータが、共 キャッシュメモリ103上にある場合の動作を 明するための図である。 図9Bは、CPU101が読み出すデータが、共 キャッシュメモリ103上にない場合の動作を 明するための図である。 図10Aは、CPU101が書き込むデータ(アド ス)に対応するブロックが、共有キャッシュ メモリ103上にある場合の動作を説明するため の図である。 図10Bは、CPU101が書き込むデータ(アド ス)に対応するブロックが、共有キャッシュ メモリ103上にない場合の動作を説明するため の図である。 図11Aは、プロセッサ間通信装置102が み出すデータが、共有キャッシュメモリ103 にある場合の動作を説明するための図であ 。 図11Bは、プロセッサ間通信装置102が み出すデータが、共有キャッシュメモリ103 にない場合の動作を説明するための図であ 。 図12Aは、プロセッサ間通信装置102が き込むデータ(アドレス)に対応するブロック が、共有キャッシュメモリ103上にある場合の 動作を説明するための図である。 図12Bは、プロセッサ間通信装置102が き込むデータ(アドレス)に対応するブロック が、共有キャッシュメモリ103上にない場合の 動作を説明するための図である。 図13は、第1の実施の形態での送信処理 を説明するための説明図である。 図14は、図13に示した送信処理を説明 るためのタイムチャートである。 図15は、第1の実施の形態での受信処理 を説明するための説明図である。 図16は、図15に示した受信処理を説明 るためのタイムチャートである。 図17Aは、プロセッサ間通信装置102Aか のWrite2命令の書き込みに対応したブロック 、共有キャッシュメモリ103A上に存在する場 合の動作を説明するための図である。 図17Bは、プロセッサ間通信装置102Aか のWrite2命令の書き込みに対応したブロック 、共有キャッシュメモリ103A上に存在しない 場合の動作を説明するための図である。 図18は、共有キャッシュメモリ103Aを示 したブロック図である。 図19は、アドレスアレイ103Abに格納さ る状態および他の情報を示すビット列5の一 を示した説明図である。 図20は、図19に示したBV5bとW(i)5aの値に るi番目のワードの有効/無効を示す説明図 ある。 図21は、キャッシュ制御ユニット3の動 作を説明するためのフローチャートである。 図22は、アクセス情報11がプロセッサ 通信装置102Aからのアクセスを示す場合の処 を説明するためのフローチャートである。 図23は、新しいブロックの割り当て処 を説明するためのフローチャートである。 図24Aは、ブロック全体をメモリ104か 読み出すコマンドの一例を示した説明図で る。 図24Bは、ブロック全体をメモリ104か 読み出すコマンドのリプライの一例を示し 説明図である。 図24Cは、共有キャッシュメモリ103Aが ブロック全体をメモリ104に書き込むコマン の一例を示した説明図である。 図24Dは、ブロックデータ1704内のワー うち、W(i)5aが1のワードのデータだけを、共 有キャッシュメモリ103Aからメモリ104に書き むためのコマンドの一例である。 図24Eは、1ワードをメモリ104から読み すためのコマンドの一例である。 図24Fは、1ワードをメモリ104から読み したときのデータリプライの一例を示した である。 図24Gは、1ワードのデータ1711をメモリ 104のメモリアドレス1710に書き込むためのコ ンドである。 図25は、CPU101Aまたはプロセッサ間通信 装置102Aから1ワードの書き込みがあったとき キャッシュミスした場合の動作を説明する めの説明図である。 図26は、図25と同じブロックの2ワード に、CPU101Aまたはプロセッサ間通信装置102A ら1ワードの書き込みがあり、キャッシュヒ トした場合の動作を説明するための説明図 ある。 図27は、CPU101Aまたはプロセッサ間通信 装置102Aが、図26と同じブロックの4ワード目 読み出し、キャッシュヒットした場合の動 を説明するための説明図である。 図28は、CPU101Aまたはプロセッサ間通信 装置102Aが、図27と同じブロックの6ワード目 読み出し、キャッシュミスが発生した場合 動作を示した説明図である。 図29は、CPU101Aまたはプロセッサ間通信 装置102Aが、図28と同じブロックの1ワード目 読み出し、キャッシュヒットした場合の動 を示した説明図である。 図30は、図29と同じブロックのエント が置き換えの対象になった場合の動作を示 た説明図である。 図31は、CPU101Aが、あるワードを読み出 してキャッシュミスした場合の動作を示した 説明図である。 図32は、図31と同じブロックのエント が置き換えの対象になった場合の動作を示 た説明図である。 図33は、あるブロックのエントリが置 換えの対象になった場合の動作を示した説 図である。 図34は、プロセッサ間通信装置102Aから Write1命令で1ワードの書き込みがあったとき キャッシュミスした場合の動作を説明する めの説明図である。 図35は、プロセッサ間通信装置102Aが、 あるワードを読み出してキャッシュミスした 場合の動作を示した説明図である。 図36は、第2の実施の形態での送信処理 を説明するための説明図である。 図37は、図36に示した送信処理を説明 るためのタイムチャートである。 図38は、第2の実施の形態での受信処理 を説明するための説明図である。 図39は、図38に示した受信処理を説明 るためのタイムチャートである。

符号の説明

100、100A プロセッサ
101、101A CPU
102、102A プロセッサ間通信装置
103、103A 共有キャッシュメモリ
103a、103Aa データアレイ
103a1 ワード
103b、103Ab アドレスアレイ
103c、103Ac 制御部
104 メモリ
1   アドレスレジスタ
2   比較器
3   キャッシュ制御ユニット
5a  ワード状態記憶部
5b  ブロック状態記憶部

 以下、本発明の実施形態について図面を 照して詳細に説明する。

 (第1の実施の形態)
 図8は、本発明の第1の実施の形態の並列計 機用プロセッサ(以下、単に「プロセッサ」 称する。)100を示したブロック図である。

 図8において、プロセッサ100は、一般的に 情報処理装置と呼ぶことができる。プロセッ サ100は、CPU101と、プロセッサ間通信装置102と 、共有キャッシュメモリ103と、メモリ104とを 含む。共有キャッシュメモリ103は、データア レイ103aと、アドレスアレイ103bと、制御部103c とを含む。

 CPU101は、一般的に演算装置と呼ぶことが きる。CPU101は、種々の演算を行う。

 プロセッサ間通信装置102は、プロセッサ ネットワーク105を介して他のプロセッサ100 通信する。具体的には、プロセッサ間通信 置102は、同一プロセッサ100内のCPU101と、他 プロセッサ内のCPU(他のCPU)と、の通信を実 する。

 共有キャッシュメモリ103は、一般的にキ ッシュメモリと呼ぶことができる。共有キ ッシュメモリ103は、CPU101と、プロセッサ間 信装置102と、メモリ104と、に接続される。

 メモリ104は、一般的に記憶装置または主 憶装置と呼ぶことができる。メモリ104は、 己が有する複数のアドレスのいずれかに対 づけてデータを記憶する。

 データアレイ103aは、一般的にデータ格納 手段と呼ぶことができる。データアレイ103a 、複数のワード103a1からなる複数のブロック (データエントリ)を有する。複数のワードは CPU101からのデータを書き込み可能であり、 た、プロセッサ間通信装置102からのデータ 書き込み可能である。

 アドレスアレイ103bは、一般的にアドレス 格納手段と呼ぶことができる。アドレスアレ イ103bは、メモリ104が有する複数のアドレス うち、データアレイ103a内の複数のワード103a 1のそれぞれに個別に対応づけられたアドレ を格納する。

 また、アドレスアレイ103bは、メモリ104が 有する複数のアドレスのうち、データアレイ 103a内の複数のワード103a1のそれぞれに個別に 対応づけられたアドレスを、所定数のアドレ スからなるブロック単位で格納する。

 制御部103cは、一般的に制御手段と呼ぶこ とができる。

 制御部103cは、プロセッサ間通信装置102か ら、読み出し命令(以下「read命令」と称する )と、メモリ104が有する複数のアドレスのう ちの任意のアドレス(以下「第1アドレス」と する。)と、を受け付けた状況になると、以 下のように動作する。

 第1アドレスがアドレスアレイ103bに格納 れている場合、制御部103cは、第1アドレスに 対応する、データアレイ103a内のワードから ータを読み出す。

 一方、第1アドレスがアドレスアレイ103b 格納されていない場合、制御部103cは、メモ 104から第1アドレスに対応づけられたデータ を読み出し、かつ、そのデータをデータアレ イ103aに書き込まない。このとき、制御部103c 、第1アドレスを含むブロックの各アドレス を、アドレスアレイ103bに書き込まない。

 また、制御部103cは、プロセッサ間通信装 置102から、書き込み命令(以下「write命令」と 称する。)と、メモリ104が有する複数のアド スのうちの任意のアドレス(以下「第2アドレ ス」と称する)と、書き込み用データと、を け付けた状況になると、以下のように動作 る。

 第2アドレスがアドレスアレイ103bに格納 れている場合、制御部103cは、第2アドレスに 対応する、データアレイ103a内のワードに、 き込み用データを書き込む。

 一方、第2アドレスがアドレスアレイ103b 格納されていない場合、制御部103cは、第2の アドレスに対応づけて、書き込み用データを 、メモリ104に書きこみ、かつ、その書き込み 用データをデータアレイ103aに書き込まない このとき、制御部103cは、第2アドレスを含む ブロックの各アドレスを、アドレスアレイ103 bに書き込まない。

 次に、図9Aおよび図9Bを使って、CPU101から のload命令(読み出し命令)に対する処理を説明 する。なお、図9Aおよび図9Bにおいて、図8に したものと同一構成のものには同一符号を してある。

 図9Aは、CPU101が読み出すデータが、共有 ャッシュメモリ103上にある場合の動作を説 するための図である。

 以下では、制御部103cが、CPU101から、メモ リ104が有する任意のアドレス(以下「第3アド ス」と称する。)とload命令とを受け付けた 況で、第3アドレスがアドレスアレイ103bに格 納されている場合の動作を説明する。

 この場合、制御部103cは、第3アドレスに 応する、データアレイ103a内のワードから、 ータを読み出しCPU101に渡す(ステップ2A01)。

 図9Bは、CPU101が読み出すデータが、共有 ャッシュメモリ103上にない場合の動作を説 するための図である。

 以下では、制御部103cが、CPU101から、第3 ドレスとload命令とを受け付けた状況で、第3 アドレスがアドレスアレイ103bに格納されて ない場合の動作を説明する。

 この場合、まず、制御部103cは、第3アド スを含むブロック(該当ブロック)を、共有キ ャッシュメモリ103(具体的には、データアレ 103aおよびアドレスアレイ103b)上に割り当て (ステップ2B01)。

 続いて、制御部103cは、メモリ104から該当 ブロックのデータを読み出し、その該当ブロ ックのデータを、共有キャッシュメモリ103( 体的には、データアレイ103a)に書き込む(ス ップ2B02)。このとき、制御部103cは、その該 ブロックのアドレスを、アドレスアレイ103b 書き込む。

 続いて、制御部103cは、共有キャッシュメ モリ103(具体的には、データアレイ103a)から、 第3アドレスに対応するデータを読み出す(ス ップ2B03)。

 次に、図10Aおよび図10Bを使って、CPU101か のstore命令(データ書き込み命令)に対する処 理を説明する。なお、図10Aおよび図10Bにおい て、図8に示したものと同一構成のものには 一符号を付してある。

 図10Aは、CPU101が書き込むデータ(アドレス )に対応するブロックが、共有キャッシュメ リ103上にある場合の動作を説明するための である。

 以下では、制御部103cが、CPU101から、メモ リ104が有する複数のアドレスのうちの任意の アドレス(以下「第4アドレス」と称する。)と 、store命令と、書き込みデータと、を受け付 た状況で、第4アドレスがアドレスアレイ103 bに格納されている場合の動作を説明する。

 この場合、制御部103cは、第4アドレスに 応する、データアレイ103a内のブロックのワ ドに、書き込みデータを書き込む(ステップ 3A01)。

 図10Bは、CPU101が書き込むデータ(アドレス )に対応するブロックが、共有キャッシュメ リ103上にない場合の動作を説明するための である。

 以下では、制御部103cが、CPU101から、第4 ドレスと、store命令と、書き込みデータと、 を受け付けた状況で、第4アドレスがアドレ アレイ103bに格納されていない場合の動作を 明する。

 この場合、まず、制御部103cは、第4アド スを含むブロック(該当ブロック)を、共有キ ャッシュメモリ103(具体的には、データアレ 103aおよびアドレスアレイ103b)上に割り当て (ステップ3B01)。

 続いて、制御部103cは、メモリ104から該当 ブロックのデータを読み出し、その該当ブロ ックのデータを、共有キャッシュメモリ103( 体的には、データアレイ103a)に割り当てられ た該当ブロックに書き込む(ステップ3B02)。こ のとき、制御部103cは、その該当ブロックの ドレスを、アドレスアレイ103bに書き込む。

 続いて、制御部103cは、共有キャッシュメ モリ103(具体的には、データアレイ103a)の該当 ブロック内のワードのうち、第4アドレスに 応するワードに、書き込みデータを書き込 (ステップ3B03)。

 次に、図11Aおよび11Bを使って、プロセッ 間通信装置102からのread命令に対する処理を 説明する。なお、図11Aおよび11Bにおいて、図 8に示したものと同一構成のものには同一符 を付してある。また、図11Aおよび11Aでは、 明の都合上、データアレイ103aとアドレスア イ103bの位置関係を、図8に示した位置関係 対して逆にしている。

 図11Aは、プロセッサ間通信装置102が読み すデータが、共有キャッシュメモリ103上に る場合の動作を説明するための図である。

 以下では、制御部103cが、プロセッサ間通 信装置102から、第1アドレスと、read命令(読み 出し命令)と、を受け付けた状況で、第1アド スがアドレスアレイ103bに格納されている場 合の動作を説明する。

 この場合、制御部103cは、第1アドレスに 応する、データアレイ103a内のワードから、 ータを読み出す(ステップ4A01)。

 図11Bは、プロセッサ間通信装置102が読み すデータが、共有キャッシュメモリ103上に い場合の動作を説明するための図である。

 以下では、制御部103cが、プロセッサ間通 信装置102から、第1アドレスと、read命令(読み 出し命令)と、を受け付けた状況で、第1アド スがアドレスアレイ103bに格納されていない 場合の動作を説明する。

 この場合、まず、制御部103cは、メモリ104 から、第1アドレスに対応づけられたデータ 、直接、読み出す(ステップ4B01)。このとき 制御部103cは、共有キャッシュメモリ103(具体 的には、データアレイ103aおよびアドレスア イ103b)に、第1アドレスを含むブロックを割 当てず、第1アドレスに対応づけられたデー を共有キャッシュメモリ103(具体的には、デ ータアレイ103a)に書き込まない。

 次に、図12Aおよび図12Bを使って、プロセ サ間通信装置102からのwrite命令に対する処 を説明する。なお、図12Aおよび図12Bにおい 、図8に示したものと同一構成のものには同 符号を付してある。また、図12Aおよび図12B も、説明の都合上、データアレイ103aとアド レスアレイ103bの位置関係を、図8に示した位 関係に対して逆にしている。

 図12Aは、プロセッサ間通信装置102が書き むデータ(アドレス)に対応するブロックが 共有キャッシュメモリ103上にある場合の動 を説明するための図である。

 以下では、制御部103cが、プロセッサ間通 信装置102から、第2アドレスと、write命令(書 込み命令)と、書き込みデータと、を受け付 た状況で、第2アドレスがアドレスアレイ103 bに格納されている場合の動作を説明する。

 この場合、制御部103cは、第2アドレスに 応する、データアレイ103a内のブロックのワ ドに、書き込みデータを書き込む(ステップ 5A01)。

 図12Bは、プロセッサ間通信装置102が書き むデータ(アドレス)に対応するブロックが 共有キャッシュメモリ103上にない場合の動 を説明するための図である。

 以下では、制御部103cが、プロセッサ間通 信装置102から、第2アドレスと、write命令(書 込み命令)と、書き込みデータと、を受け付 た状況で、第2アドレスがアドレスアレイ103 bに格納されていない場合の動作を説明する

 この場合、制御部103cは、第2のアドレス 対応づけて、書き込みデータを、直接、メ リ104に書き込む(ステップ5A01)。このとき、 御部103cは、共有キャッシュメモリ103(具体的 には、データアレイ103aおよびアドレスアレ 103b)に、第2アドレスを含むブロックを割り てず、第2アドレスに対応づけられた書き込 データを書き込まない。

 次に、第1の実施の形態での送信処理につ いて、図13を使って説明する。

 図13は、第1の実施の形態での送信処理を 明するための説明図である。なお、図13に いて、図8に示したものと同一構成のものに 同一符号を付してある。

 まず、CPU101が、送信データ6aを作成する( テップ601)。なお、送信データ6aは、一般的 通信用データと呼ぶことができる。

 CPU101は、制御部103cに、store命令と、送信 ータ6aと、送信データ6aを書き込むアドレス と、を送信する。制御部103cは、store命令と送 信データ6aを書き込むアドレスとに基づいて 送信データ6aを、共有キャッシュメモリ103 たはメモリ104に書き込む。

 ここでは、図4の場合とは異なり、送信デ ータ6aのすべてが、共有キャッシュメモリ103 にキャッシュされていないとして説明を行 。しかしながら、送信データ6aのサイズや 成される時刻によっては、送信データ6aの一 部が、共有キャッシュメモリ103上にあり、送 信データ6aのその他の部分が、メモリ104に存 することもありうる。

 次に、制御部103cは、CPU101から、store命令 、コマンド6bと、コマンド6bを書き込むアド レスと、を受け付けると、コマンドキュー104 aに、コマンド6bを書き込む。なお、コマンド 6bは、一般的に通信用コマンドと呼ぶことが きる。

 ここでは、コマンド6bを書き込むアドレ は、共有キャッシュメモリ103上にない(書き み時にキャッシュミスする)として説明する 。

 そのため、まず、制御部103cは、コマンド 6bを書き込むアドレスを含む該当ブロックの ータを、メモリ104から読み出し、その該当 ロックのデータを共有キャッシュメモリ103( データアレイ103a)に書き込む(ステップ602)。

 続いて、制御部103cは、その該当ブロック 内のワードのうち、コマンド6bを書き込むア レスに対応するワードに、コマンド6bを書 込む(ステップ603)。よって、この場合、コマ ンド6bは、共有キャッシュメモリ103上にキャ シュされる。

 コマンド6bには、通信の宛先や送信デー 6aへのポインタなどが示されている。

 次に、CPU101が、プロセッサ間通信装置102 、コマンド6bの位置を示す送信要求を送る( テップ604)。

 プロセッサ間通信装置102は、送信要求を け付けると、制御部103cを用いて、コマンド 6bを読み出す。

 コマンド6bは、共有キャッシュメモリ103 にキャッシュされているので、制御部103cは データアレイ103aから、コマンド6bを読み出 (ステップ605)。このとき、制御部103cは、メ リ104へのライトバックを行わない。

 次に、プロセッサ間通信装置102は、コマ ド6b内の送信データ6aへのポインタを使って 、制御部103cを用いて、送信データ6aを読み出 す。

 ここでは、送信データ6aのすべてが、共 キャッシュメモリ103上に存在しないとして るので、キャッシュミスが発生し、制御部10 3cは、メモリ104から、送信データ6aを読み出 (ステップ606)。このとき、制御部103cは、送 データ6a(具体的には、送信データ6aが書き込 まれたアドレスを含むブロックのデータ)を 共有キャッシュメモリ103(具体的には、デー アレイ103aおよびアドレスアレイ103b)に書き まない。

 そして、プロセッサ間通信装置102は、送 データ6aを用いてパケットを作製して、プ セッサ間ネットワーク105へ、そのパケット 送信する(ステップ607)。

 もしも、送信データ6aが共有キャッシュ モリ103上に存在するなら、その部分の読み しレイテンシが短くなる。

 図14は、図13に示した送信処理を説明する ためのタイムチャートである。なお、図14に いて、図8に示したものと同一構成のものに は同一符号を付してある。

 ここでは、制御部103cが、CPU101からのコマ ンド6bを、コマンドキュー104aに書き込む時に 、共有キャッシュメモリ103で、キャッシュミ スが発生する場合を記述している。

 CPU101からのコマンド6bの書き込みでキャ シュミスが起こると、制御部103cは、コマン 6bを書き込むアドレスを含むブロックのデ タを、メモリ104から読み出し、そのブロッ のデータを、共有キャッシュメモリ103(デー アレイ103a)に書き込む(ステップ701)。このと き、制御部103cは、そのブロックのアドレス 、アドレスアレイ103bに書き込む。

 そして、制御部103cは、共有キャッシュメ モリ103(データアレイ103a)に、コマンドを書き 込む(ステップ702)。

 CPU101からの送信要求を契機に(ステップ703 )、プロセッサ間通信装置102が、制御部103cを いて、共有キャッシュメモリ103(データアレ イ103a)からコマンド6bを読み出す(ステップ704) 。

 そして、プロセッサ間通信装置102は、制 部103cを用いて、メモリ104から、送信データ 6aを読み出す(ステップ705)。

 図14に示すように、プロセッサ間通信装 102が、送信データ6aを読み出すときは、複数 の読み出しリクエストを先行発行することで 、読み出しレイテンシを隠蔽することが可能 である。

 本実施の形態によれば、制御部103cは、プ ロセッサ間通信装置102から、第1アドレスと 読み出し命令と、を受け付けた状況で、第1 ドレスがアドレスアレイ103bに格納されてい る場合には、第1アドレスに対応するデータ レイ103aのワードからデータを読み出し、第1 アドレスがアドレスアレイ103bに格納されて ない場合には、メモリ104から第1アドレスに 応づけられたデータを読み出し、かつ、そ データをデータアレイ103aに書き込まない。

 このため、図5と見比べると、例えば、CPU 101とプロセッサ間通信装置102間のコマンドの 受け渡しの時間が短縮された(期間T705)ことが わかり、情報の受け渡し時間(この場合、送 時間)の短縮化という効果が明らかである。

 次に、第1の実施の形態での受信処理につ いて、図15を使って説明する。図15は、第1の 施の形態での受信処理を説明するための説 図である。なお、図15において、図8に示し ものと同一構成のものには同一符号を付し ある。

 まず、プロセッサ間通信装置102が、プロ ッサ間ネットワーク105から、パケットを受 する(ステップ801)。

 そして、プロセッサ間通信装置102は、パ ットの中の受信データ8aを、制御部103cを用 て、メモリ104上に書き込む。なお、受信デ タ8aは、一般的に書き込み用データと呼ぶ とができる。

 ここでは、受信データ8aを書き込むアド スを含むすべてのブロックが、共有キャッ ュメモリ103にキャッシュされていないとし 説明する。

 この場合、キャッシュミスが発生し、制 部103cは、直接、メモリ104に、受信データ8a 書き込む(ステップ802)。

 プロセッサ間通信装置102は、制御部103cが 受信データ8aのすべてをメモリ104に書き込ん 後、制御部103cを用いて、受信完了フラグ8b 書き込む。なお、受信完了フラグ8bは、一 的に書き込みデータと呼ぶことができる。

 ここで、受信完了フラグ8bは、CPU101によ てポーリングされていると考えられるので 受信完了フラグ8bのアドレスを含むブロック は、共有キャッシュメモリ103上に存在する。

 従って、制御部103cは、受信完了フラグ8b 、共有キャッシュメモリ103に書き込む(ステ ップ803)。

 CPU101は、受信完了フラグをポーリングし いるので、プロセッサ間通信装置102により き換えられた受信完了フラグ8bを、制御部10 3cを用いて、共有キャッシュメモリ103から読 出す(ステップ804)。

 そして、CPU101は、受信完了フラグ8bを参 することによって、受信データ8aが書き込ま れたことを知り、制御部103cを用いて、受信 ータ8aを読み出す。

 受信データ8aは、メモリ104にあるので、CP U101からの受信データ8aの読み出しでキャッシ ュミスが発生し、制御部103cは、受信データ8a のアドレスを含むブロックのデータを、メモ リ104から読み出し、共有キャッシュメモリ103 (データアレイ103a)に書き込み(ステップ805)、 有キャッシュメモリ103(データアレイ103a)か 、受信データ8aを読み出す(ステップ806)。

 ここで、受信データ8aのアドレスを含む ロックが、共有キャッシュメモリ103上にあ 場合は、プロセッサ間通信装置102からの受 データ8aの書き込みと、CPU101からの受信デー タ8aの読み出しのレイテンシが短縮される。

 図16は、図15に示した受信処理を説明する ためのタイムチャートである。なお、図16に いて、図8に示したものと同一構成のものに は同一符号を付してある。

 受信データ8aのアドレスを含むすべての ロックが、共有キャッシュメモリ103上にな ので、制御部103cは、プロセッサ間通信装置1 02からの受信データ8aを、メモリ104に書き込 (ステップ901)。

 次に、プロセッサ間通信装置102は、制御 103cを用いて、受信完了フラグ8bを書き込む

 受信完了フラグ8bは、CPU101によってポー ングされているので、受信完了フラグ8bのア ドレスを含むブロックは、共有キャッシュメ モリ103上にある。

 そのため、制御部103cは、共有キャッシュ メモリ103(データアレイ103c)に、受信完了フラ グ8bを書き込む(ステップ902)。

 その直後に、CPU101が、制御部103cを用いて 、受信完了フラグ8bを、共有キャッシュメモ 103から読み出す(ステップ903)。

 そして、CPU101は、受信完了フラグ8bを参 することによって、受信データ8aがメモリ104 に書き込まれたことを確認して、受信データ 8aを読み出す。

 受信データ8aは、メモリ104に格納されて るので、共有キャッシュメモリ103で読み出 ミスが起こり、制御部103cは、受信データ8a アドレスを含むブロックのデータを、メモ 104から読み出し、共有キャッシュメモリ103 書き込む(ステップ904)。

 そして、CPU101は、制御部103cを用いて、共 有キャッシュメモリ103から、受信データ8aを み出す(ステップ905)。

 図16に示すように、プロセッサ間通信装 102が、受信データ8aを、メモリ104に書き込む ときは、複数の書き込みリクエストを先行発 行することで、書き込みのレイテンシを隠蔽 できる。

 同様に、CPU101が受信データ8aを読み出す きも、複数の読み出しリクエストを先行発 することで、読み出しレイテンシを隠蔽す ことが可能である。

 本実施の形態によれば、制御部103cは、プ ロセッサ間通信装置102から、第2アドレスと 書き込み命令と、書き込みデータと、を受 付けた状況で、第2アドレスがアドレスアレ 103aに格納されている場合には、第2アドレ に対応するワードに書き込みデータを書き み、第2アドレスがアドレスアレイ103aに格納 されていない場合には、第2のアドレスに対 づけて書き込みデータをメモリ104に書き込 、かつ、その書き込みデータをデータアレ 103aに書き込まない。

 このため、図7と見比べると、例えば、プ ロセッサ間通信装置102とCPU101間の受信完了フ ラグの受け渡しの時間が短縮された(期間T906) ことがわかり、情報の受け渡し時間(この場 、送信時間)の短縮化という効果が明らかで る。

 本実施の形態によれば、プロセッサ間通 のレイテンシを削減するために、送信時に いて、CPU101からプロセッサ間通信装置102へ マンド6bを渡すところ、および、受信時に いてプロセッサ間通信装置102からCPU101へ受 完了フラグ8bを伝えるところの処理の時間を 削減することが可能になる。

 つまり、本実施の形態によれば、送信時 おいて、プロセッサ間通信装置102が、メモ 104または共有キャッシュメモリ103上のコマ ドキュー104aから、コマンド6bを読み出すた に要する時間を、短縮することができ、高 プロセッサ間通信性能を提供することが可 になる。

 また、本実施の形態によれば、受信時に いて、CPU101が、共有キャッシュメモリ103か 、受信完了フラグ8bを読み出すために要す 時間を、短縮することができ、高いプロセ サ間通信性能を提供することが可能になる

 なお、本実施の形態では、CPU101とプロセ サ間通信装置102が、共有キャッシュメモリ1 03を共有する構成を採る。

 そして、制御部103cは、CPU101からの命令を 受け付けた状況でキャッシュミスが発生した 時に、データアレイ103aおよびアドレスアレ 103bにブロックを割り当てるが、プロセッサ 通信装置102からの命令を受け付けた状況で ャッシュミスが発生した時には、データア イ103aおよびアドレスアレイ103bにブロック 割り当てない。

 制御部103cは、プロセッサ間通信装置102か らの命令を受け付けた状況でキャッシュヒッ トした際には、共有キャッシュメモリ103上に あるブロックに対して、読み書きできるが、 プロセッサ間通信装置102からの命令を受け付 けた状況でキャッシュミスした際には、直接 、メモリ104に読み書きする。

 本実施の形態による第1の効果は、プロセ ッサ間通信装置102が、CPU101にて共有キャッシ ュメモリ103上に書かれたコマンド6bを、直接 むことにより、プロセッサ間通信装置102に るコマンド6bの読み出し時間を短くできる とである。

 また、第2の効果は、プロセッサ間通信装 置102が、受信完了フラグ8bを共有キャッシュ モリ103上に書き込むことにより、CPU101が受 完了フラグ8bを読み出す時間を短くできる とである。なお、受信完了フラグ8bは、CPU101 によりポーリングされるので、共有キャッシ ュメモリ103上に存在する。

 (第2の実施の形態)
 次に、本発明の第2の実施の形態について図 面を参照して詳細に説明する。

 図17Aおよび17Bは、本発明の第2の実施の形 態の並列計算機用プロセッサ(以下、単に「 ロセッサ」と称する。)100Aを示したブロック 図である。

 図17Aおよび17Bにおいて、プロセッサ100Aは 、一般的に情報処理装置と呼ぶことができる 。プロセッサ100Aは、CPU101Aと、プロセッサ間 信装置102Aと、共有キャッシュメモリ103Aと メモリ104とを含む。共有キャッシュメモリ10 3Aは、データアレイ103Aaと、アドレスアレイ10 3Abと、制御部103Acとを含む。

 第2の実施の形態では、制御部103Acは、CPU1 01Aからの書き込み時、または、プロセッサ間 通信装置102Aからの第2の書き込み命令(Write2命 令:所定書き込み命令)を使っての書き込み時 、共有キャッシュメモリ103A(データアレイ10 3Aaおよびアドレスアレイ103Ab)に、その書き込 み命令に対応する書き込みアドレスを含むブ ロックがない場合、以下のような動作を実行 する。

 制御部103Acは、共有キャッシュメモリ103A( データアレイ103Aaおよびアドレスアレイ103Ab) 新たなブロックを割り当て、メモリ104から そのブロックのデータの読み出しはせずに 書き込みデータを、その新たなブロック内 書き込みアドレスに対応するワードに書き み、データが書き込まれた新たなブロック のワードを示す情報を、アドレスアレイ103A bに記憶する。

 なお、プロセッサ間通信装置102Aからの第 1の書き込み命令(Write1命令:書き込み命令)で 共有キャッシュメモリ103Aの動作は、第1の実 施の形態のプロセッサ間通信装置102からの書 き込み時の共有キャッシュメモリ103の動作と 同じである。

 プロセッサ間通信装置102Aは、受信完了フ ラグを書き込む場合だけに、第2の書き込み 令(Write2命令)を用いる。このため、プロセッ サ間通信装置102Aは、受信データの書き込み は、第1の書き込み命令(Write1命令)を用いる

 なお、データアレイ103Aaは、一般的にデ タ格納手段と呼ぶことができ、アドレスア イ103Abは、一般的にアドレス格納手段と呼ぶ ことができ、制御部103Acは、一般的に制御手 と呼ぶことができる。

 図17Aおよび17Bは、プロセッサ間通信装置1 02Aから、第2の書き込み命令(Write2命令)と、第 2アドレスと、書き込みデータと、を受け付 た場合の、共有キャッシュメモリ103Aの動き 説明するための図である。

 なお、図17Aおよび17Bでは、プロセッサ間 信装置102Aから第2の書き込み命令を受け付 た場合の共有キャッシュメモリ103Aの動きを 明しているが、CPU101Aからstore命令を受け付 た場合の共有キャッシュメモリ103Aの動作も 同じである。

 図17Aは、プロセッサ間通信装置102Aからの Write2命令の書き込みに対応したブロックが、 共有キャッシュメモリ103A上に存在する場合 動作を説明するための図である。

 以下では、制御部103Acが、プロセッサ間 信装置102Aから、第2アドレスと、write2命令( 2書き込み命令)と、書き込みデータと、を受 け付けた状況で、第2アドレスがアドレスア イ103Abに格納されている場合の動作を説明す る。

 この場合、制御部103Acは、第2アドレスに 応する、データアレイ103Aa内のブロックの ードに、書き込みデータを書き込まれる(ス ップ10A01)。そして、制御部103Acは、第2アド スに対応するワードに書き込みデータが書 込まれたことを、アドレスアレイ103Abに記 する。

 図17Bは、プロセッサ間通信装置102Aからの Write2命令の書き込みに対応したブロックが、 共有キャッシュメモリ103A上に存在しない場 の動作を説明するための図である。

 以下では、制御部103Acが、プロセッサ間 信装置102Aから、第2アドレスと、write2命令と 、書き込みデータと、を受け付けた状況で、 第2アドレスがアドレスアレイ103Abに格納され ていない場合の動作を説明する。

 この場合、制御部103Acは、第2アドレスを むブロックを、共有キャッシュメモリ103A( ータアレイ103Aaとアドレスアレイ103Ab)上に割 り当てられる(ステップ10B01)。

 そして、制御部103Acは、そのブロックの ち、第2アドレスに対応するワードに、書き みデータを書き込む(ステップ10B02)。

 そして、制御部103Acは、第2アドレスに対 するワードに書き込みデータが書き込まれ ことを、アドレスアレイ103Abに記憶する。 お、制御部103Acは、ブロックを割り当てると きに、メモリ104からブロックのデータを読み 出すことは行わない。

 次に、第2の実施の形態で用いる共有キャ ッシュメモリ103Aについて詳細に説明する。

 図18は、共有キャッシュメモリ103Aを示し ブロック図である。

 図18において、共有キャッシュメモリ103A 、CPU101A、プロセッサ間通信装置102Aおよび モリ104と接続される。

 共有キャッシュメモリ103Aは、データアレ イ103Aa、アドレスアレイ103Ab、アドレスレジ タ1、比較器2、および、キャッシュ制御ユニ ット3を含む。アドレスレジスタ1と比較部2と キャッシュ制御ユニット3は、制御部103Acに含 まれる。

 アドレスレジスタ1は、CPU101Aが要求した ドレス、または、プロセッサ間通信装置102A 要求したアドレスを格納する。アドレスレ スタ1に格納されるアドレスは、上位mビッ 9、中位nビット7、および、下位kビット12に って表される。

 上位mビット9のデータは、比較器2に提供 れ、中位nビット7のデータは、アドレスア イ103Abとデータアレイ103Aaに提供される。

 アドレスアレイ103Abは、2のn乗個のエント リ(以下「アドレスエントリ」と称する。)を つメモリである。なお、データアレイ103Aa 、2のn乗個のエントリ(以下「データエント 」と称する。)を持つメモリである。データ レイ103Aaは、複数のワードからなる複数の ロック(データエントリ)を有する。

 各アドレスエントリは、中位nビット7の ータに基づいて、各データエントリと1対1で 対応している。

 各アドレスエントリは、中位nビット7の ータが表すことが可能な値に対応するオフ ットを有する。このため、各アドレスエン リは、中位nビット7に対応する。なお、オフ セットは、一般的にインデックスとも呼ばれ る。

 アドレスアレイ103Abは、データアレイ103Aa のデータエントリにブロック単位で格納され ているデータ(ブロックデータ)の索引として 用される。

 アドレスアレイ103Abの1つのアドレスエン リは、中位nビット7に対応するオフセット とに、アドレスの上位mビット4と、そのブロ ックの状態と他の情報を表すビット列(以下 状態他ビット列」または「ビット列」とも する。)5と、を含む。アドレスの上位mビッ 4は、ブロックデータのアドレス(ブロックア ドレス)の一部である。

 アドレスアレイ103Abのうち、中位nビット7 に対応するオフセットごとに、上位mビット4 格納する部分は、格納部の一例である。

 格納部は、少なくとも1つのワードにデー タが格納されたデータエントリに対応する、 メモリ104のアドレス群(上位mビットのデータ 中位nビットのデータ)を格納する。

 このアドレス群は、上位mビットと中位n ットのデータが規定され、かつ、下位kビッ のデータが任意の値となる、複数のアドレ を意味する。

 アドレスアレイ103Abのうち、ビット列5を 納する部分は、ワード状態記憶部5aと、ブ ック状態記憶部5bと、を含む(図19参照)。

 ワード状態記憶部5aは、一般的にワード 態記憶手段と呼ぶことができる。

 ワード状態記憶部5aは、CPU101Aまたはプロ ッサ間通信装置102Aからのデータが書き込ま れたワードを特定するためのワード状態情報 (W(1)~W(8))を、そのワードに対応づけられたア レスと関連づけて記憶する。

 なお、W(1)~W(8)において、その値が1になっ ているものは、キャッシュ制御ユニット3に データが書き込まれたワードを示すワード 報となる。

 ブロック状態記憶部5bは、一般的にブロ ク状態記憶手段と呼ぶことができる。

 ブロック状態記憶部5bは、データアレイ10 3Aaのブロックに対応するアドレス群ごとに、 そのブロック内のワードのうち、CPU101Aまた プロセッサ間通信装置102Aから書き込まれて ないワードに、メモリ104から読み出された ータが記憶されているか否かを示すブロッ 状態情報(BV)を記憶する。

 なお、ビット列5の詳細については後述す る。

 アドレスアレイ103Abは、中位nビット7のデ ータをオフセット8として受け付けると、オ セット8に対応するアドレスエントリから、 位mビット4のデータと、ビット列5のデータ 、を出力する。

 上位mビット4のデータは、比較器2に提供 れ、ビット列5のデータは、キャッシュ制御 ユニット3に提供される。

 データアレイ103Aaの1つのデータエントリ 、2のk乗バイトのブロックデータ(以下、単 「ブロック」とも称する。)6を格納する。

 各データエントリは、各アドレスエント と1対1で対応しているため、各データエン リ内のブロックも、各アドレスエントリと1 1で対応する。

 比較器2は、アドレスアレイ103Abからの上 mビット4のデータと、アドレスレジスタ1か の上位mビット9のデータと、を比較する。

 上位mビット4のデータと上位mビット9のデ ータが一致した場合は、アドレスレジスタ1 のアドレスにて指定されたデータを含むブ ックが、共有キャッシュメモリ(具体的には アドレスアレイ103Abとデータアレイ103Aa)上 あることになる。

 キャッシュ制御ユニット3は、比較器2か の比較結果10、アクセス情報11、および、ア レスアレイ103Abからのビット列5に基づいて 共有キャッシュメモリ103A(具体的には、ア レスアレイ103Abとデータアレイ103Aa)を制御す る。

 アクセス情報11は、アクセス元(CPU101Aか、 プロセッサ間通信装置102A)と、アクセス内容( 各命令)と、を示す。

 制御部103Acは、共有キャッシュメモリ103A 動作を制御する。

 制御部103Acは、例えば、CPU101Aから、書き み命令と、アドレスと、データと、を受け ける。また、制御部103Acは、例えば、プロ ッサ間通信装置102Aから、第1の書き込み命令 (Write1命令)と、アドレスと、データと、を受 付ける。また、制御部103Acは、例えば、プ セッサ間通信装置102Aから、第2の書き込み命 令(Write2命令)と、アドレスと、データと、を け付ける。

 制御部103Acは、書き込み命令(CPU101Aからの 書き込み命令、プロセッサ間通信装置102Aか の第2の書き込み命令)と共に受け付けられた アドレスが、アドレスアレイ103Ab(具体的には 、中位nビット7に対応するオフセットごとに 位mビット4を格納する部分)内にない場合、 ータアレイ103Aa内の複数のブロックのいず かを、書込み用ブロックとして割り当てる

 制御部103Acは、書き込み命令と共に受け けられたアドレスを含むブロックのデータ 、メモリ104から読み込まずに、その書込み ブロック内のいずれかのワードを、そのア レスに対応づけ、そのワードに、書き込み 令と共に受け付けられたデータを書き込む

 制御部103Acは、例えば、CPU101Aから、読み し命令とアドレスを受け付ける。また、制 部103Acは、例えば、プロセッサ間通信装置10 2Aから、読み出し命令(read命令)とアドレスを け付ける。

 制御部103Acは、読み出し命令(CPU101Aからの 読み出し命令、または、プロセッサ間通信装 置102Aからの読み出し命令)と共に受け付けら たアドレスに対応するワード状態情報(W(i)=1 )を、ワード状態記憶部5aが記憶している場合 、または、そのアドレスに対応するブロック 状態情報(BV=1)をブロック状態記憶部5bが記憶 ている場合、そのアドレスから特定される データアレイ103Aa内のワードからデータを み出す。

 また、制御部103Acは、読み出し命令に応 た読み出し時にキャッシュミスが生じたと 、読み出し命令と共に受け付けられたアド スを含むブロック内のデータを、メモリ104 ら読み出す。

 制御部103Acは、続いて、ワード状態記憶 5aを参照して、データアレイ103Aaのワードか 、そのブロック内でデータが書き込まれて ない1つまたは複数のワードを特定する。

 制御部103Acは、その特定された1つまたは 数のワードにだけ、メモリ104から読み出し ブロックのデータを書き込む。

 制御部103Acは、続いて、ブロック状態記 部5bに、そのブロック内のワードのうち、CPU 101Aまたはプロセッサ間通信装置102Aからデー が書き込まれていない1つまたは複数のワー ドに、メモリ104から読み出されたデータが記 憶されていることを示すブロック状態情報(BV =1)を記憶する。

 制御部103Acは、読み出し命令とアドレス 受け付けた場合、ワード状態記憶部5aおよび ブロック状態記憶部5bを参照して、キャッシ ヒットまたはキャッシュミスが生じたかを 断する。

 制御部103Acは、データアレイ103Aa内のブロ ック内の指定された1つまたは複数のワード データだけを、メモリ104内の対応するブロ クに書き込む。

 例えば、制御部103Acは、ワード状態記憶 5aを参照して、書込み用ブロック内でデータ が書き込まれた1つまたは複数のワードを特 し、その特定された1つまたは複数のワード のデータを、メモリ104内の対応するブロッ にライトバックする。

 本実施の形態では、制御部103Acは、デー アレイ103Aa内のブロックと対応するメモリ104 のアドレスが切り替えられる時、ワード状態 記憶部5aとブロック状態記憶部5bを参照して そのブロック内のすべてのワードにCPU101Aま はプロセッサ間通信装置102Aからデータが書 き込まれたか、一度メモリ104からブロックが 読み出された場合には、そのブロック全体を メモリ104内の対応するブロックにライトバッ クする。そうでない場合には、制御部103Acは そのブロック内でデータが書き込まれた1つ または複数のワードを特定し、その特定され た1つまたは複数のワード内のデータだけを メモリ104内の対応するブロックにライトバ クする。

 なお、以下の説明では、アドレスレジス 1に格納されるアドレスは、64ビットとし、k =6、すなわちブロックのサイズを64バイトと 、n=10、すなわちアドレスアレイ103Abのアド スエントリ数、および、データアレイ103Aaの データエントリ数を1024とし、m=48とする。ま 、64バイトのブロックは、8個のワードから る。なお、1ワードは8バイトである。

 本実施の形態では、共有キャッシュメモ 103Aとして、ダイレクトマップ方式のキャッ シュメモリを示しているが、セットアソシア ティブ方式のキャッシュメモリが用いられて もよい。その場合は、ウェイ数分、アドレス アレイ103Ab、データアレイ103Aa、および、比 器2が必要である。

 次に、図18に示した共有キャッシュメモ 103Aの動作を説明する。

 共有キャッシュメモリ103Aへのアクセスが あった場合に、アドレスレジスタ1は、その クセスに示されたアドレスを格納する。な 、このアドレスは、論理アドレスでも物理 ドレスでもよい。

 本実施の形態では、このアドレスを、何 かのアドレス変換の手段により仮想アドレ から変換された物理アドレスとして説明を う。

 ブロックのサイズは64バイトなので、ア レスレジスタ1の下位6(k)ビット12のデータは データアレイ103Aaのブロック内のワードの ドレスとなる。

 中位10(n)ビット7のデータが、アドレスア イ103Abのオフセット8として用いられて、ア レスアレイ103Abのアドレスエントリ内のデ タ(上位48(m)ビット4のデータとビット列5のデ ータ)が読み出される。

 比較器2は、読み出された上位48(m)ビット4 のデータと、アドレスレジスタ1内の上位48(m) ビット9のデータと、を比較して、アドレス ジスタ1内のアドレスにて指定されたデータ 含むブロックが、すでに共有キャッシュメ リ103Aにあるかどうかを判断する。

 キャッシュ制御ユニット3は、比較器2の 較結果10と、アクセス情報11と、ビット列5と を受け付ける。

 キャッシュ制御ユニット3は、比較結果10 アクセス情報11、および、ビット列5に基づ て、共有キャッシュメモリ103Aの動作を決定 する。

 キャッシュ制御ユニット3の動作の詳細つ いては、後述する。

 図19は、アドレスアレイ103Abに格納される ビット列5の一例を示した説明図である。

 ビット列5は、9ビットで構成される。具 的には、ビット列5は、1ビットのBV5bと、8ビ トのW(i)(i=1~8)5aとからなる。W(i)(i=1~8)5aは、1 ットのW(1)~W(8)からなる。なお、BV5bは、ブロ ック状態記憶部の一例であり、W(i)(i=1~8)5aは ワード状態記憶部の一例である。

 W(1)~W(8)5aは、データアレイ103Aaのブロック データの各ワードのアドレス、すなわち各ワ ードに対応する。ブロックデータは、8ワー からなるので、W(1)は、ブロックデータ204の1 ワード目に対応し、W(2)は2ワード目、W(3)は3 ード目、W(4)は4ワード目、W(5)は5ワード目、W (6)は6ワード目、W(7)は7ワード目、W(8)は8ワー 目に対応する。

 W(i)5aの値が1のときは、i番目のワードに ータが書き込まれたことを示す。つまり、W( i)5aが1のときは、ブロックデータ204のi番目の ワードには、CPU101Aまたはプロセッサ間通信 置102Aから書き込まれた有効なデータが格納 れていることになる。

 W(i)5aの値が0のときは、i番目のワードに 、CPU101Aからもプロセッサ間通信装置102Aから もデータが書き込まれていないことを示す。

 BV5bは、BV5bを含むアドレスエントリに対 する、データアレイ103Aa内のブロック全体が 有効かどうかを示す。

 具体的には、BV5bの値が1のときは、CPU101A らもプロセッサ間通信装置102Aからもデータ が書き込まれていないワード(W(i)5aが0)に、メ モリ104から読み出されたデータが格納されて いることを示しており、対応するブロック全 体が有効であることを意味する。

 すなわち、BV5bの値が1のときは、i番目の ードの状態を示すW(i)5aの値が0、つまり、W(i )5aがi番目のワードにCPU101Aからもプロセッサ 通信装置102Aからもデータが書き込まれてい ないことを示す場合であったとしても、i番 のワードにメモリ104から読み出されたデー が書き込まれたことにより、i番目のワード 有効なデータが格納されていることを示す

 また、BV5bの値が0の場合には、i番目のワ ドの状態を示すW(i)5aの値が1であるワードの データだけが有効で、W(i)5aの値が0であるワ ドのデータは無効であることを示す。

 図20は、図19に示したBV5bとW(i)5aの値によ i番目のワードの有効/無効を示す説明図であ る。

 次に、図18および図19を参照しながら、共 有キャッシュメモリ103Aの動作について詳細 説明する。

 図21は、キャッシュ制御ユニット3の動作 説明するためのフローチャートである。

 アドレスレジスタ1が、共有キャッシュメ モリ103Aにアクセスされたアドレスを格納す と、その後、そのアドレスの中位10(n)ビット 7のデータが、アドレスアレイ103Abおよびデー タアレイ103Aaのオフセット8として使用されて 、アドレスアレイ103Abのアドレスエントリ内 上位48(m)ビット4のデータとビット列5のデー タが読み出され、データアレイ103Aaのデータ ントリがアクセスされる。

 比較器2は、読み出された上位48(m)ビット4 のデータと、アドレスレジスタ1内の上位48(m) ビット9のデータと、を比較して、アドレス ジスタ1内のアドレスにて指定されたデータ 含むブロックが、すでに共有キャッシュメ リ103Aにあるかどうかを判断する。

 キャッシュ制御ユニット3は、比較器2の 較結果10と、ビット列5のデータと、アクセ 情報11と、を受け付ける。

 なお、アクセス情報11は、CPU101Aまたはプ セッサ間通信装置102Aから提供される。また 、キャッシュ制御ユニット3は、下位6(k)ビッ 12のデータも受け付ける。

 また、キャッシュ制御ユニット3は、アク セスがCPU101Aからの書き込みである場合、CPU10 1Aから書き込みデータ(例えば、通信用データ )も受け付ける。

 また、キャッシュ制御ユニット3は、アク セスがプロセッサ間通信装置102A2からの書き みである場合、プロセッサ間通信装置102A2 ら書き込みデータまたは書き込み用データ 受け付ける。なお、以下では、書き込み用 ータを書き込みデータとして記載する。

 以下では、この時点からのキャッシュ制 ユニット3の動作について説明する。

 キャッシュ制御ユニット3は、まず、アク セス元とアクセス内容を示すアクセス情報11 基づいて、今後行う処理を決定する(ステッ プ420)。

 まず、アクセス情報11が、CPU101Aからのア セスを示す場合(ステップ421)、キャッシュ 御ユニット3は、ステップ401を実行する。一 、アクセス情報11が、プロセッサ間通信装 102Aからのアクセスを示す場合(ステップ422) キャッシュ制御ユニット3は、ステップ423を 行する。なお、ステップ423については、後 、図22を使って説明する。

 ステップ401では、キャッシュ制御ユニッ 3は、アクセス情報11に基づいて、CPU101Aから のアクセスが、書き込みか読み出しかを判断 する。

 CPU101Aからのアクセスが書き込みである場 合(ステップ402)、キャッシュ制御ユニット3は 、ステップ403を実行する。

 ステップ403では、キャッシュ制御ユニッ 3は、比較器2の比較結果10に基づいて、アク セスされたブロックを格納しているエントリ が、すでに共有キャッシュメモリ103A(アドレ アレイ103Abとデータアレイ103Aa)にあるかど かを判断する。

 比較結果10が一致を示す場合、キャッシ 制御ユニット3は、アクセスされたブロック 共有キャッシュメモリ103Aにあると判断する (ステップ404)。

 比較結果10が一致を示さない場合は、キ ッシュ制御ユニット3は、アクセスされたブ ックが共有キャッシュメモリ103Aにないと判 断する(ステップ405)。

 アクセスされたブロックが共有キャッシ メモリ103Aにあった場合(ステップ404)、キャ シュ制御ユニット3は、下位6(k)ビット12のデ ータに基づいて、そのブロックのデータ内の ワードを特定し、そのワードに対して、書き 込みデータを書き込み(ステップ406)、データ 書き込まれたワードに対応するW(i)5aの値を1 にする(ステップ407)。

 アクセスされたブロックが共有キャッシ メモリ103Aにない場合(ステップ405)、キャッ ュ制御ユニット3は、新しいブロックを、書 込み用ブロックとして、データアレイ103Aaに り当てる処理を行う(ステップ408)。

 新しいブロックを割り当てる処理(ステッ プ408)については、後に、図23を使って詳しく 述べる。

 ステップ408の後、キャッシュ制御ユニッ 3は、アドレスアレイ103Ab内の複数のエント の中から、新しく割り当てたブロックに対 するエントリを特定し、その特定されたエ トリの上位48(m)ビット4に、アドレスレジス 1の上位48(m)ビット9のデータを書き込み、同 じく、その特定されたエントリのビット列5 ゼロクリア(BV=0、W(1~8)=0)して、初期化する( テップ409)。

 ステップ409の後、キャッシュ制御ユニッ 3は、下位6(k)ビット12のデータに基づいて、 新しく割り当てたブロック内のワードを特定 し、そのワードに対して、書き込みデータを 書き込み(ステップ406)、データが書き込まれ ワードに対応するW(i) 5aの値を1にする(ステ ップ407)。

 CPU101Aからのアクセスが読み出しである場 合(ステップ410)、キャッシュ制御ユニット3は 、ステップ411を実行する。

 ステップ411では、キャッシュ制御ユニッ 3は、比較器2の比較結果10に基づいて、アク セスされたブロックを格納しているエントリ が、すでに共有キャッシュメモリ103A(アドレ アレイ103Abとデータアレイ103Aa)にあるかど かを判断する。

 比較結果10が一致を示す場合、キャッシ 制御ユニット3は、アクセスされたブロック 共有キャッシュメモリ103Aにあると判断する (ステップ412)。

 一方、比較結果10が一致を示さない場合 キャッシュ制御ユニット3は、アクセスされ ブロックが共有キャッシュメモリ103Aにない と判断する(ステップ413)。

 アクセスされたブロックが共有キャッシ メモリ103Aにあり(ステップ412)、かつ、アク スされたワードに対応するW(i)の値が1また アクセスされたブロックのBV5bが1の場合(ス ップ424)、キャッシュ制御ユニット3は、デー タアレイ103Aa内のブロックデータの中から、 クセスされたブロックデータ6を特定し、そ の特定されたブロックデータ6内のワードの ち、下位6(k)ビット12で特定されるワードか 、データを読み出す(ステップ414)。

 アクセスされたブロックが共有キャッシ メモリ103Aにない場合(ステップ413)、キャッ ュ制御ユニット3は、新しいブロックを割り 当てる処理を行う(ステップ418)。

 新しいブロックを割り当てる処理(ステッ プ418)については、後に図23を使って詳しく述 べる。

 続いて、キャッシュ制御ユニット3は、ア ドレスアレイ103Ab内の複数のエントリの中か 、新しく割り当てたブロックに対応するエ トリを特定し、その特定されたエントリの 位48(m)ビット4に、アドレスレジスタ1の上位 48(m)ビット9のデータを書き込み、同じく、そ の特定されたエントリのビット列5をゼロク ア(BV=0、W(1~8)=0)して、初期化する(ステップ41 9)。

 続いて、キャッシュ制御ユニット3は、メ モリ104から、そのブロックのデータを読み出 し、そのブロックに対応するデータアレイ103 Aaのエントリのブロックデータ6中のW(i)=0のワ ードだけに、読み出したデータを書き込む( テップ416)。この場合、ステップ419でビット 5をゼロクリアしているので、ブロックデー タ6全体が書かれる。

 続いて、キャッシュ制御ユニット3は、そ のブロックに対応する、アドレスアレイ103Ab エントリ内のBV5bを1にする(ステップ417)。

 続いて、キャッシュ制御ユニット3は、デ ータアレイ103Aaから、アクセスされたワード 読み出す(ステップ414)。

 一方、アクセスされたブロックが共有キ ッシュメモリ103Aにあり(ステップ412)、かつ アクセスされたワードに対応するW(i)の値が 0でかつアクセスされたブロックのBV5bが0の場 合(ステップ415)、キャッシュ制御ユニット3は 、ステップ416、417および414を実行する。

 次に、図22を使って、アクセス情報11が、 プロセッサ間通信装置102Aからのアクセスを す場合の処理(図21のステップ423)を説明する

 まず、キャッシュ制御ユニット3は、アク セス情報11に基づいて、プロセッサ間通信装 102Aからのアクセスが、read命令か、write1命 か、write2命令かを判断する(ステップ501)。

 プロセッサ間通信装置102Aからのアクセス がWrite2命令である場合(ステップ502)、キャッ ュ制御ユニット3は、ステップ503を実行する 。

 ステップ503では、キャッシュ制御ユニッ 3は、比較器2の比較結果10に基づいて、アク セスされたブロックを格納しているエントリ が、すでに共有キャッシュメモリ103A(アドレ アレイ103Abとデータアレイ103Aa)にあるかど かを判断する。

 比較結果10が一致を示す場合、キャッシ 制御ユニット3は、アクセスされたブロック 共有キャッシュメモリ103Aにあると判断する (ステップ504)。

 比較結果10が一致を示さない場合は、キ ッシュ制御ユニット3は、アクセスされたブ ックが共有キャッシュメモリ103Aにないと判 断する(ステップ505)。

 アクセスされたブロックが共有キャッシ メモリ103Aにあった場合(ステップ504)、キャ シュ制御ユニット3は、下位6(k)ビット12のデ ータに基づいて、そのブロックのデータ内の ワードを特定し、そのワードに対して、書き 込みデータを書き込み(ステップ506)、データ 書き込まれたワードに対応するW(i)5aの値を1 にする(ステップ507)。

 アクセスされたブロックが共有キャッシ メモリ103Aにない場合(ステップ505)、キャッ ュ制御ユニット3は、新しいブロックを、書 き込み用ブロックとして、データアレイ103Aa 割り当てる処理を行う(ステップ508)。

 新しいブロックを割り当てる処理(ステッ プ508)については、後に、図23を使って詳しく 述べる。

 ステップ508の後、キャッシュ制御ユニッ 3は、アドレスアレイ103Ab内の複数のエント の中から、新しく割り当てたブロックに対 するエントリを特定し、その特定されたエ トリの上位48(m)ビット4に、アドレスレジス 1の上位48(m)ビット9のデータを書き込み、同 じく、その特定されたエントリのビット列5 ゼロクリア(BV=0、W(1~8)=0)して、初期化する( テップ509)。

 ステップ509の後、キャッシュ制御ユニッ 3は、下位6(k)ビット12のデータに基づいて、 新しく割り当てたブロック内のワードを特定 し、そのワードに対して、書き込みデータを 書き込み(ステップ506)、データが書き込まれ ワードに対応するW(i) 5aの値を1にする(ステ ップ507)。

 次に、プロセッサ間通信装置102Aからのア クセスがWrite1命令である場合(ステップ522)、 ャッシュ制御ユニット3は、ステップ523を実 行する。

 ステップ523では、キャッシュ制御ユニッ 3は、比較器2の比較結果10に基づいて、アク セスされたブロックを格納しているエントリ が、すでに共有キャッシュメモリ103A(アドレ アレイ103Abとデータアレイ103Aa)にあるかど かを判断する。

 比較結果10が一致を示す場合、キャッシ 制御ユニット3は、アクセスされたブロック 共有キャッシュメモリ103Aにあると判断する (ステップ524)。

 一方、比較結果10が一致を示さない場合 、キャッシュ制御ユニット3は、アクセスさ たブロックが共有キャッシュメモリ103Aにな いと判断する(ステップ525)。

 アクセスされたブロックが共有キャッシ メモリ103Aにある場合(ステップ524)、キャッ ュ制御ユニット3は、下位6(k)ビット12のデー タに基づいて、新しく割り当てたブロック内 のワードを特定し、そのワードに対して、書 き込みデータを書き込み(ステップ506)、デー が書き込まれたワードに対応するW(i) 5aの を1にする(ステップ507)。

 アクセスされたブロックが共有キャッシ メモリ103Aにない場合(ステップ525)、キャッ ュ制御ユニット3は、直接、メモリ104に、デ ータを書き込む(ステップ526)。

 次に、プロセッサ間通信装置102Aからのア クセスがreadの場合(ステップ510)、キャッシュ 制御ユニット3は、ステップ511を実行する。

 ステップ511では、キャッシュ制御ユニッ 3は、比較器2の比較結果10に基づいて、アク セスされたブロックを格納しているエントリ が、すでに共有キャッシュメモリ103Aにある どうかを判断する。

 比較結果10が一致を示す場合、キャッシ 制御ユニット3は、アクセスされたブロック 共有キャッシュメモリ103Aにあると判断する (ステップ512)。

 一方、比較結果10が一致を示さない場合 キャッシュ制御ユニット3は、アクセスされ ブロックが共有キャッシュメモリ103Aにない と判断する(ステップ513)。

 アクセスされたブロックが共有キャッシ メモリ103Aにあり(ステップ512)、かつ、アク スされたワードに対応するW(i)の値が1また アクセスされたブロックのBV5bが1の場合(ス ップ519)、キャッシュ制御ユニット3は、デー タアレイ103Aa内のブロックデータの中から、 クセスされたブロックデータ6を特定し、そ の特定されたブロックデータ6内のワードの ち、下位6(k)ビット12で特定されるワードか 、データを読み出す(ステップ520)。

 一方、アクセスされたブロックが共有キ ッシュメモリ103Aにあり(ステップ512)、かつ アクセスされたワードに対応するW(i)の値が 0でかつアクセスされたブロックのBV5bが0の場 合(ステップ515)、キャッシュ制御ユニット3は 、メモリ104から、そのブロックを読み出し、 そのブロックに対応するデータアレイ103Aaの ントリのブロックデータ6中のW(i)=0のワード だけに、読み出したデータを書き込む(ステ プ516)。

 続いて、キャッシュ制御ユニット3は、そ のブロックに対応する、アドレスアレイ103Ab エントリ内のBV5bを1にする(ステップ517)。

 続いて、キャッシュ制御ユニット3は、デ ータアレイ103Aaから、アクセスされたワード 読み出す(ステップ518)。

 アクセスされたブロックが共有キャッシュ モリ103Aにない場合(ステップ513)、キャッシ 制御ユニット3は、メモリ104から、直接、デ ータを読み出し、そのデータを、プロセッサ 間通信装置102Aに提供する(ステップ521)。この とき、キャッシュ制御ユニット3は、データ レイ103Aaおよびアドレスアレイ103Abに、新し ブロックの割り当てを行わない。 
 次に、図23を使って、図21に示したステップ 408および418、図22に示したステップ508につい 説明する。

 まず、キャッシュ制御ユニット3は、新し いエントリを割り当てるために、データが置 き換えられるエントリを選択する(ステップ16 01)。

 本実施形態では、ダイレクトマップ方式 キャッシュメモリが用いられている。この め、新しいブロックを割り当てるためにデ タが置き換えられるエントリは、アクセス れたアドレスから一意に決まる。

 もしも、セットアソシアティブ方式のキ ッシュメモリが用いられた場合には、アド スから決定される置き換え対象になるエン リは複数あり、その中のどれを置き換える はアクセス履歴等により決定することが可 である。

 次に、キャッシュ制御ユニット3は、デー タが置き換えられるエントリのブロックに、 CPU101Aまたはプロセッサ間通信装置102Aからデ タが書き込まれているかどうかを判断する

 もし、選択されたエントリのすべてのワ ドのW(i)5aが0ならば(ステップ1602)、そのブロ ックには、CPU101Aからもプロセッサ間通信装 102Aからもデータが書き込まれていなかった とになる。この場合、キャッシュ制御ユニ ト3は、ライトバックすることなく、そのま ま、そのエントリを使うことができる。

 もし、選択されたエントリのすべてのワー のW(i)5aが1、または、BV5b=1の場合(ステップ16 03)には、そのブロック全体が書き換えられた 、または、ブロック全体が有効であることに なる。この場合、キャッシュ制御ユニット3 、そのブロックのデータをメモリ104にライ バックする(ステップ1604)。 
 もし、選択されたエントリの一部のワード W(i)5aが1で、かつ、BV5b=0の場合(ステップ1605) には、W(i)5aが1のワードだけが書き換えられ ことになる。この場合、キャッシュ制御ユ ット3は、W(i)5aが1のワードのデータだけを、 メモリ104にライトバックする(ステップ1606)。 なお、キャッシュ制御ユニット3は、W(i)5aが0 ワードのデータを、メモリ104に書き込まな 。

 図24A~24Gは、共有キャッシュメモリ103A(具 的には、キャッシュ制御ユニット3)がメモ 104に送るコマンドと、そのコマンドに対す メモリ104から共有キャッシュメモリ103A(具体 的には、キャッシュ制御ユニット3)へのリプ イを説明するための説明図である。

 図24Aと24Bは、ブロック全体をメモリ104か 読み出すコマンドとそのリプライの一例を した説明図である。

 本実施形態では、アドレスは64ビットで ブロックの大きさは64バイトなので、メモリ 104は、そのコマンドのブロックアドレス1701(5 8ビット)で指定されるブロックを読み出して 図24Bで示すデータリプライの形式で、ブロ クデータ1702(64バイト)を、キャッシュ制御 ニット3に送る。

 図24Cは、共有キャッシュメモリ103A(具体 には、キャッシュ制御ユニット3)が、ブロッ ク全体をメモリ104に書き込むコマンドの一例 を示した説明図である。

 このコマンドは、ブロックアドレス1703(58 ビット)と、ブロックデータ1704(64バイト)から 構成される。

 図24Dは、ブロックデータ1704内のワードう ち、W(i)5aが1のワードのデータだけを、共有 ャッシュメモリ103Aからメモリ104に書き込む めのコマンドの一例である。

 このコマンドは、ブロックアドレス1705(58 ビット)と、W(1~8)1706(8ビット)と、W(i)5aが1のワ ード(8バイト~54バイト)のデータからなる部分 ブロックデータ1707と、を含む。

 このコマンドは、W(i)5aが1であるワードの 個数に応じて長さが変わる。

 図24Eは、1ワードをメモリ104から読み出す ためのコマンドの一例である。このコマンド は、1ワードを指定するためのメモリアドレ 1708を含む。

 図24Fは、1ワードをメモリ104から読み出し たときのデータリプライの一例を示した図で ある。このデータリプライは、メモリ104から 読み出した1ワードのデータ1709が付加されて る。

 図24Gは、1ワードのデータ1711をメモリ104 メモリアドレス1710に書き込むためのコマン である。

 次に、図25~35を使って共有キャッシュメ リ103A上のあるブロックを例にして、本実施 態でのビット列とメモリアクセスなどの動 について説明する。なお、図25~35において 図18に示したものと同一構成のものには同一 符号を付してある。

 図25は、CPU101Aまたはプロセッサ間通信装 102Aから1ワードの書き込みがあったとき、 ャッシュミスした場合の動作を説明するた の説明図である。ここで、プロセッサ間通 装置102AからはWrite2命令による書き込みがあ た場合とする。

 1ワードの書き込みにキャッシュミスが生 ずると、キャッシュ制御ユニット3は、その ードを含むブロックを、新しく共有キャッ ュメモリ103A(データアレイ103Aaおよびアドレ アレイ103Ab)に割り付け(BV=0、W=00000000)、書き 込みデータ1801を、書き込み時のアドレスに じて、データアレイ103Aaのブロックデータ180 2の4ワード目に書き込み、ブロックデータ1802 に対応するビット列1803で示される複数のワ ドのうち、書き込まれたワードに対応するW( 4)を、1に設定する(BV=0、W=00010000)。

 新たなブロックの割り付けに伴うブロック 置き換えによりメモリアクセスが発生する もしれないが、書き込み自体によるメモリ1 04へのアクセスは発生しない。 
 図34は、プロセッサ間通信装置102AからWrite1 令で1ワードの書き込みがあったとき、キャ ッシュミスした場合の動作を説明するための 説明図である。

 この場合、そのワードを含むブロックは 共有キャッシュメモリ103Aにはないので、キ ャッシュミスが生じる。

 このため、キャッシュ制御ユニット3は、 図24Gに示したコマンドを使って、書き込みデ ータ2701を、メモリ104に直接書き込む。この き、キャッシュ制御ユニット3は、共有キャ シュメモリ103A(データアレイ103Aaおよびアド レスアレイ103Ab)に、新しいブロックを割り付 けない。

 図26は、図25と同じブロックの2ワード目 、CPU101Aまたはプロセッサ間通信装置102Aから 1ワードの書き込みがあり、キャッシュヒッ した場合の動作を説明するための説明図で る。ここで、プロセッサ間通信装置102Aから 書き込みはWrite1命令またはWrite2命令による

 1ワードの書き込みがキャッシュヒットし、 キャッシュ制御ユニット3は、書き込みデー 1901を、データアレイ103Aaのブロックデータ19 02の2ワード目に書き込み、ビット列1903のW(2) 1にする(BV=0、W=01010000)。書き込みによるメ リ104へのアクセスは発生しない。 
 図27は、CPU101Aまたはプロセッサ間通信装置1 02Aが、図26と同じブロックの4ワード目を読み 出し、キャッシュヒットした場合の動作を説 明するための説明図である。

 1ワードの読み出しがキャッシュヒットし 、キャッシュ制御ユニット3は、データアレ 103Aaのブロックデータ2001の4ワード目からデ タを読み出し、読み出しデータ2002として、 CPU101Aまたはプロセッサ間通信装置102Aに返す

 この場合、キャッシュ制御ユニット3は、 ビット列2003を更新しない(BV=0、W=01010000)。

 ただし、キャッシュメモリがセットアソ アティブ方式の場合は、置き換えのための クセス履歴の部分が更新される可能性があ 。また、読み出しに伴うメモリ104へのアク スは発生しない。

 図28は、CPU101Aまたはプロセッサ間通信装 102Aが、図27と同じブロックの6ワード目を読 み出し、キャッシュミスが発生した場合の動 作を示している。なお、読み出すワードに対 応するブロックは、すでに、共有キャッシュ メモリ103A上に存在するものとする。

 そのブロックのビット列2101では、W(6)=0で かつBV=0なので、1ワードの読み出しがキャッ ュミスして、キャッシュ制御ユニット3は、 図24Aに示したコマンドを使って、メモリ104か ら、そのブロックを読み出す。

 そして、メモリ104から読み出されたブロ クのデータ2102が、図24Bのデータリプライの 形式で共有キャッシュメモリ103A(キャッシュ 御ユニット3)に返されると、キャッシュ制 ユニット3は、読み出したブロックのデータ2 102のうち、W(i)=0のワードのデータだけ(1番目 3番目、5~8番目のワードのデータ)を、ブロ ク2103に書き込み、ビット列2104のBV5bを1にす (BV=1、W=01010000)。

 そして、キャッシュ制御ユニット3は、6 目のワードのデータを、読み出しデータ2105 して、CPU101Aまたはプロセッサ間通信装置102 Aに返す。

 図29は、CPU101Aまたはプロセッサ間通信装 102Aが、図28と同じブロックの1ワード目を読 み出し、キャッシュヒットした場合の動作を 示している。

 ビット列2201のBV5bが1なので、1ワードの読 み出しがキャッシュヒットして、キャッシュ 制御ユニット3は、ブロックデータ2202の1ワー ド目を、読み出しデータ2203として、CPU101Aま はプロセッサ間通信装置102Aに返す。

 この場合、キャッシュ制御ユニット3は、 ビット列2201を更新しない(BV=1、W=01010000)。

 ただし、共有キャッシュメモリ103Aがセッ トアソシアティブ方式の場合は、置き換えの ためのアクセス履歴の部分が更新される可能 性がある。また、読み出しによるメモリ104へ のアクセスは発生しない。

 図30は、図29と同じブロックのエントリが 置き換えの対象になった場合の動作を示して いる。

 2ワード目と4ワード目がCPU101Aまたはプロ ッサ間通信装置102Aから書き込まれていて、 ビット列2301のW(2)とW(4)が1になっているが(W=01 010000)、BV5bが1なので、キャッシュ制御ユニッ ト3は、図24Cに示したコマンドを使って、ブ ックデータ2302全体をメモリ104に書き込む。 して、キャッシュ制御ユニット3は、ビット 列2301を初期化する(BV=0、W=00000000)。

 図31は、CPU101Aが、あるワードを読み出し キャッシュミスした場合の動作を示してい 。

 読み出されるワードのブロックは、共有 ャッシュメモリ103A上にないため、キャッシ ュ制御ユニット3は、新しいブロックを割り て、ビット列2401を初期化する(BV=0、W=00000000) 。

 続いて、キャッシュ制御ユニット3は、ロ ードされるワードのブロックを、図24Aに示し たコマンドを使って、メモリ104から読み出す 。

 メモリ104から読み出されたブロック2402は 、図24Bのデータリプライの形式で、共有キャ ッシュメモリ103A(具体的には、キャッシュ制 ユニット3)に返され、キャッシュ制御ユニ ト3によって、ブロックデータ2403に書き込ま れる。

 続いて、キャッシュ制御ユニット3は、ビ ット列2404のBVを1にする(BV=1、W=00000000) 。そ て、キャッシュ制御ユニット3は、読み出し ータ2405を、CPU101Aに返す。

 図35は、プロセッサ間通信装置102Aが、あ ワードを読み出してキャッシュミスした場 の動作を示している。なお、読み出される ードのブロックは、共有キャッシュメモリ1 03A上にない場合である。

 この場合、キャッシュ制御ユニット3は、 図24Eのコマンドを使って、読み出されるワー ドを、メモリ104から読み出す。メモリ104から 読み出されたデータ2801は、図24Fのデータリ ライの形式で、キャッシュ制御ユニット3に 信され、キャッシュ制御ユニット3にて、プ ロセッサ間通信装置102Aに返される。

 プロセッサ間通信装置102Aからのread命令 ので、キャッシュ制御ユニット3は、共有キ ッシュメモリ103Aに、新しいブロックを割り 当てない。

 図32は、図31と同じブロックのエントリが 置き換えの対象になった場合の動作を示して いる。

 このブロックのビット列2501のW(i)がすべて0 ので(W=00000000)、キャッシュ制御ユニット3は 、BVを0にするだけである(BV=0、W=00000000)。エ トリの置き換えによる、メモリ104へのアク スは発生しない。 
 図33は、あるブロックのエントリが置き換 の対象になった場合の動作を示している。

 2ワード目と4ワード目が、CPU101Aまたはプ セッサ間通信装置102Aから書き込まれていて 、ビット列2601のW(2)と W(4)が1になっていて ( W=01010000)、BV5bが0なので、キャッシュ制御ユ ット3は、2ワード目と4ワード目のデータ2602 よび2603だけを、図24Dに示したコマンドを使 って、メモリ104に書き込む。

 続いて、キャッシュ制御ユニット3は、ビ ット列2601を初期化する(BV=0、W=00000000) 。

 次に、第2の実施の形態での送信処理につ いて図36を使って説明する。なお、図36にお て、図18に示したものと同一構成のものには 同一符号を付してある。

 まず、CPU101Aが送信データ29aを作成する( テップ2901)。

 ここでは、図4の場合とは異なり、送信デ ータ29aのすべてが、共有キャッシュメモリ103 A上にキャッシュされていないとして説明を う。しかしながら、送信データ29aのサイズ 作成される時刻によっては、送信データ29a 一部が、共有キャッシュメモリ103A上にあり 送信データ29aのその他の部分が、メモリ104 存在することもありうる。

 次に、CPU101Aからのstore命令を受けて、制 部103Acは、コマンドキュー104aに、コマンド2 9bを書き込む。

 ここでは、コマンド29bを書き込むアドレ は、共有キャッシュメモリ103A上にない(書 込み時にキャッシュミスする)として説明す 。

 そのため、まず、キャッシュ制御ユニッ 3は、コマンド29bを書き込むアドレスを含む ブロック(該当ブロック)を、共有キャッシュ モリ103A上に割り当て、そのブロックに、コ マンド29bを書き込む(ステップ2902)。

 コマンド29bは、通信の宛先や送信データ2 9aへのポインタなどを示す。

 次に、CPU101Aが、プロセッサ間通信装置102 Aに、コマンド29bの位置を示す送信要求を送 (ステップ2903)。

 プロセッサ間通信装置102Aは、送信要求を 受け付けると、キャッシュ制御ユニット3を いて、その送信要求に基づいて、コマンド29 bを読み出す。

 コマンド29bは、共有キャッシュメモリ103A 上にキャッシュされているので、キャッシュ 制御ユニット3は、データアレイ103Aaから、コ マンド29bを読み出す(ステップ2904)。

 次に、プロセッサ間通信装置102Aは、コマ ンド29b内の送信データ29aへのポインタを使っ て、キャッシュ制御ユニット3を用いて、送 データ29aを読み出す。

 ここでは、送信データ29aのすべてが、共 キャッシュメモリ103A上に存在しないとして いるので、キャッシュミスが発生し、キャッ シュ制御ユニット3は、メモリ104から、送信 ータ29aを読み出す(ステップ2905)。このとき キャッシュ制御ユニット3は、送信データ29a( 具体的には、送信データ29aが書き込まれたア ドレスを含むブロック)を、共有キャッシュ モリ103A(具体的には、データアレイ103Aaおよ アドレスアレイ103Ab)に書き込まない。

 そして、プロセッサ間通信装置102Aは、送 信データ29aに基づいてパケットを作製して、 プロセッサ間ネットワーク105へパケットを送 信する(ステップ2906)。

 もしも、送信データ29aが共有キャッシュ モリ103A上に存在するなら、メモリ104からの 読み出しが無くなるので、その分、読み出し レイテンシが短くなる。

 図37は、図36に示した送信処理を説明する ためのタイムチャートである。なお、図37に いて、図18に示したものと同一構成のもの は同一符号を付してある。

 ここでは、キャッシュ制御ユニット3が、 CPU101Aからのコマンド29bを、コマンドキュー10 4aに書き込む時に、共有キャッシュメモリ103A で、キャッシュミスが発生する場合を記述し ている。

 CPU101Aからのコマンド29bの書き込みでキャ ッシュミスが起こると、キャッシュ制御ユニ ット3は、コマンド29bを書き込むアドレスを むブロックを、共有キャッシュメモリ103A(デ ータアレイ103Aaおよびアドレスアレイ103Ab)に り当て、共有キャッシュメモリ103A(データ レイ103Aa)にコマンド29bを書き込む(ステップ3 001)。

 プロセッサ間通信装置102Aは、CPU101Aから 送信要求を受け付けると(ステップ3002)、キ ッシュ制御ユニット3を用いて、共有キャッ ュメモリ103A(データアレイ103Aa)からコマン 29bを読み出す(ステップ3003)。

 そして、プロセッサ間通信装置102Aは、キ ャッシュ制御ユニット3を用いて、メモリ104 ら、送信データ29aを読み出す(ステップ3004)

 図37に示すように、プロセッサ間通信装 102Aが、送信データ29aを読み出すときは、複 の読み出しリクエストを先行発行すること 、読み出しレイテンシを隠蔽することが可 である。

 本実施の形態によれば、制御部103Acは、CP U101Aから、データ書き込み命令と、アドレス 、通信用データと、を受け付けた状況で以 のように動作する。

 そのアドレスがアドレスアレイ7に格納さ れている場合には、制御部103Acは、そのアド スに対応するデータアレイ103Aa内のワード データを書き込む。

 一方、そのアドレスがアドレスアレイ103A bに格納されていない場合には、制御部103Acは 、そのアドレスを含むブロックのデータを、 メモリ104から読み出すことなく、データアレ イ103Aaのワードに、そのアドレスを含むブロ クに対応づけ、そのアドレスを含むブロッ のアドレスをアドレスアレイ103Abに格納し そのアドレスを含むブロックに対応づけら たワードのうち、そのアドレスに対応する ードに通信用データを書き込む。

 ワード状態記憶部5aは、そのアドレスを むブロックに対応づけられたワードのうち 通信用データが書き込まれたワードを示す ード情報を記憶する。

 このため、図5、14と見比べると、例えば CPU101Aとプロセッサ間通信装置102A間のコマ ドの受け渡しの時間がさらに短縮された(期 T3005)ことがわかり、通信時間(この場合、送 信時間)の短縮化という効果が明らかである

 次に、第2の実施の形態での受信処理につ いて、図38を使って説明する。なお、図38に いて、図18に示したものと同一構成のものに は同一符号を付してある。

 まず、プロセッサ間通信装置102Aが、プロ セッサ間ネットワーク105から、パケットを受 信する(ステップ3101)。

 そして、プロセッサ間通信装置102Aは、パ ケットの中の受信データ31aを、キャッシュ制 御ユニット3を用いて、メモリ104上に書き込 。

 ここでは、受信データ31aを書き込むアド スを含むすべてのブロックが、共有キャッ ュメモリ103Aにキャッシュされていないとし て説明する。

 この場合、プロセッサ間通信装置102Aは、 Write1命令を使ってキャッシュ制御ユニット3 制御して、直接、メモリ104に、受信データ31 aを書き込む(ステップ3102)。

 プロセッサ間通信装置102Aは、キャッシュ 制御ユニット3が受信データ31aのすべてをメ リ104に書き込んだ後、Write2命令を使ってキ ッシュ制御ユニット3を制御して、受信完了 ラグ31bを、共有キャッシュメモリ103Aに書き 込む。

 ここで、受信完了フラグ31bは、CPU101Aによ ってポーリングされているので、共有キャッ シュメモリ103A上に存在すると考えられる。 かしながら、もしも、まだ、CPU101Aが受信完 フラグ31bをポーリングしていなくても、Writ e2命令での書き込みなので、キャッシュ制御 ニット3は、共有キャッシュメモリ103A上に 受信完了フラグ31bのアドレスを含むブロッ を割り当て、共有キャッシュメモリ103A上の ロックに、受信完了フラグ31bを書き込む(ス テップ3103)。

 CPU101Aは、プロセッサ間通信装置102Aによ 書き換えられた受信完了フラグ31bを、キャ シュ制御ユニット3を用いて、共有キャッシ メモリ103Aから読み出す(ステップ3104)。

 そして、CPU101Aは、受信完了フラグ31bを参 照することによって、受信データ31aが書き込 まれたことを知り、キャッシュ制御ユニット 3を用いて、受信データ31aを読み出す。

 受信データ31aは、メモリ104にあるので、C PU101Aからの共有キャッシュメモリ103Aへの読 出しでキャッシュミスが発生する。このた 、キャッシュ制御ユニット3は、受信データ3 1aのアドレスを含むブロックを、メモリ104か 読み出し、共有キャッシュメモリ103A(デー アレイ103Aa)に書き込み(ステップ3105)、共有 ャッシュメモリ103A(データアレイ103Aa)から、 受信データ31aを読み出す(ステップ3106)。

 ここで、受信データ31aのアドレスを含む ロックが、共有キャッシュメモリ103A上にあ る場合は、プロセッサ間通信装置102Aからの 信データ31aの書き込みと、CPU101Aからの受信 ータ31aの読み出しのレイテンシが短縮され 。

 図39は、図38に示した受信処理を説明する ためのタイムチャートである。なお、図39に いて、図18に示したものと同一構成のもの は同一符号を付してある。

 受信データのアドレスを含むすべてのブ ックが、共有キャッシュメモリ103A上にない ので、キャッシュ制御ユニット3は、受信デ タをメモリ104に書き込む(ステップ3201)。

 次に、プロセッサ間通信装置102Aは、キャ ッシュ制御ユニット3を用いて、受信完了フ グを書き込む。

 ここでは、まだ、CPU101Aが、受信完了フラ グをポーリングしていない場合を示している 。

 受信完了フラグのアドレスを含むブロッ は、共有キャッシュメモリ103A上にないが、 Write2命令による書き込みなので、キャッシュ 制御ユニット3は、受信完了フラグのアドレ を含むブロックを、共有キャッシュメモリ10 3A(データアレイ103Aaおよびアドレスアレイ103A b)に割り当てて、そのブロックに受信完了フ グを書き込む(ステップ3202)。

 その後、CPU101Aが、キャッシュ制御ユニッ ト3を用いて、受信完了フラグを、共有キャ シュメモリ103Aから読み出す(ステップ3203)。

 そして、CPU101Aは、受信完了フラグを参照 することによって、受信データがメモリ104に 書き込まれたことを確認して、受信データを 読み出す。

 受信データは、メモリ104に格納されてい ので、共有キャッシュメモリ103Aで読み出し ミス(キャッシュミス)が起こり、キャッシュ 御ユニット3は、受信データのアドレスを含 むブロックを、メモリ104から読み出し、共有 キャッシュメモリ103Aに書き込む(ステップ3204 )。

 そして、CPU101Aは、キャッシュ制御ユニッ ト3を用いて、共有キャッシュメモリ103Aから 受信データを読み出す(ステップ3205)。

 図39に示すように、プロセッサ間通信装 102Aが、受信データをメモリ104に書き込むと は、複数の書き込みリクエストを先行発行 ることで、書き込みのレイテンシを隠蔽で る。

 同様に、CPU101Aが受信データを読み出すと きも、複数の読み出しリクエストを先行発行 することで、読み出しレイテンシを隠蔽する ことが可能である。

 本実施の形態によれば、制御部103Acは、 ロセッサ間通信装置102Aから、第2書き込み命 令と、アドレスと、書き込みデータと、を受 け付けた状況になると、以下のように動作す る。

 そのアドレスがアドレスアレイ103Abに格 されている場合には、制御部103Acは、そのア ドレスに対応するデータアレイ103Aa内のワー に書き込みデータを書き込む。

 一方、そのアドレスがアドレスアレイ103A bに格納されていない場合には、制御部103Acは 、そのアドレスを含むブロックのデータを、 メモリ104から読み出すことなく、データアレ イ103Aaのワードを、そのアドレスを含むブロ クに対応づけ、そのアドレスを含むブロッ のアドレスをアドレスアレイ105Abに格納し そのアドレスを含むブロックに対応づけら たワードのうち、そのアドレスに対応する ードに書き込みデータを書き込む。

 ワード状態記憶部5aは、そのアドレスを むブロックに対応づけられたワードのうち 書き込みデータが書き込まれたワードを示 ワード情報を記憶する。

 このため、例えば、CPU101Aとプロセッサ間 通信装置102A間の受信完了フラグの受け渡し 時間がさらに短縮され、情報の受け渡し時 (この場合、受信時間)の短縮化という効果が 生じる。

 本実施の形態では、共有キャッシュメモ 103Aは、CPU101Aとプロセッサ間通信装置102Aに って共有される。

 また、制御部103Acは、CPU101Aからの書き込 時とプロセッサ間通信装置102Aからの第2の き込み命令による書き込み時には、キャッ ュミスしたときに、共有キャッシュメモリ10 3A上に新たなブロックを割り当てるが、メモ 104からのブロックの読み出しを行わず、新 に割り当てたブロックに書き込みデータを き込み、その書き込み位置を、アドレスア イ103Abに記憶する。

 また、制御部103Acは、プロセッサ間通信 置102Aからの第1の書き込み命令による書き込 み時にキャッシュミスした場合は、共有キャ ッシュメモリ103Aに新たなブロックを割り当 ず、直接、メモリ104にデータを書き込む。

 本実施の形態では、以下の効果を奏する

 まず、書き込み時にキャッシュミスした ロックを、メモリ104から読み出さずに、共 キャッシュメモリ103A上に割り付け、そこに データを書き込める共有キャッシュメモリ103 Aを用いることにより、CPU101Aがコマンドをコ ンドキューに書き込むときの書き込みミス の時間を短縮できる。

 また、書き込みミス時にメモリ104からブロ クを読み出さない共有キャッシュメモリを いて、プロセッサ間通信装置102Aからの受信 完了フラグの書き込み時にブロックを割り当 てる書き込みを用いることで、CPU101Aが受信 了フラグをポーリングする前にプロセッサ 通信装置102Aが受信完了フラグを書き込んだ 合の書き込みミス時の通信時間を短縮でき 。
(産業上の利用可能性)
 本実施形態によれば、単一コアの計算機の ャッシュメモリのほか、マルチコア型のCPU キャッシュメモリといった用途に適用でき 。

 以上、各実施形態を参照して本願発明を 明したが、本願発明は上記各実施形態に限 されるものではない。本願発明の構成や詳 には、本願発明のスコープ内で当業者が理 し得る様々な変更をすることができる。

 この出願は、2008年3月28日に出願された日 本出願特願2008-86276を基礎とする優先権を主 し、その開示の全てをここに取り込む。