(57)【要約】【課題】各プロセッサがキャッシュメモリを備えるマルチプロセッサシステムでは、キャッシュメモリに要求されたデータが格納されていない場合には、データの読み出しに比較的長時間を要すると共に、システム全体でのメモリアクセスのレイテンシが増加する。【解決手段】第１のキャッシュメモリ，第２のキャッシュメモリ，第１のキャッシュコントローラ，第２のキャッシュコントローラ，を備え、第１及び第２のキャッシュコントローラは互いに接続されていると共に、それぞれメインメモリに接続されており、第１のキャッシュコントローラは、第１のプロセッサからデータの読み出し要求を受信すると、第１のキャッシュメモリにデータが記憶されているか否かを判定し、記憶されていないと判定した場合に、第２のキャッシュコントローラにデータの読み出し要求を送信するキャッシュメモリシステム。【選択図】図１
2007213304.tif 000002
【特許請求の範囲】
【請求項１】
２以上のキャッシュメモリを備えたキャッシュメモリシステムであって、
第１のキャッシュメモリと、
第２のキャッシュメモリと、
第１のプロセッサに接続され、前記第１のキャッシュメモリを制御するための第１のキャッシュコントローラと、
第２のプロセッサに接続され、前記第２のキャッシュメモリを制御するための第２のキャッシュコントローラと、
を備え、
前記第１のキャッシュコントローラ及び前記第２のキャッシュコントローラは、互いに接続されていると共に、それぞれメインメモリに接続されており、
前記第１のキャッシュコントローラは、前記第１のプロセッサからデータの読み出し要求を受信すると、前記第１のキャッシュメモリに前記データが記憶されているか否かを判定し、前記第１のキャッシュメモリに前記データが記憶されていないと判定した場合に、前記第２のキャッシュコントローラに対して、前記データの読み出し要求を送信することを特徴とするキャッシュメモリシステム。
【請求項２】
請求項１に記載のキャッシュメモリシステムにおいて、
前記第２のキャッシュコントローラは、前記第１のキャッシュコントローラから、前記データの読み出し要求を受信した場合に、前記第２のキャッシュメモリに前記データが記憶されているか否かを判定し、
前記第２のキャッシュコントローラは、前記第２のキャッシュメモリに前記データが記憶されていると判定した場合に、前記データを前記第２のキャッシュメモリから読み出して前記第１のキャッシュコントローラに送信し、前記第２のキャッシュメモリに前記データが記憶されていないと判定した場合に、前記第２のキャッシュメモリに前記データが記憶されていない旨を前記第１のキャッシュコントローラに送信する、
キャッシュメモリシステム。
【請求項３】
請求項２に記載のキャッシュメモリシステムにおいて、
前記第１のキャッシュコントローラは、前記第２のキャッシュコントローラから、前記データを受信した場合に、前記受信したデータを前記第１のプロセッサに送信し、
前記第１のキャッシュコントローラは、前記第２のキャッシュコントローラから、前記第２のキャッシュメモリに前記データが記憶されていない旨を受信した場合に、前記メインメモリから前記データを読み出すと共に、前記読み出したデータを前記第１のプロセッサに送信する、
キャッシュメモリシステム。
【請求項４】
請求項１ないし請求項３のいずれかに記載のキャッシュメモリシステムと、
前記メインメモリと、
前記第１のプロセッサと、
前記第２のプロセッサと、
を備えるマルチプロセッサシステム。
【請求項５】
第１のキャッシュメモリと、第２のキャッシュメモリと、前記第１のキャッシュメモリを制御する第１のキャッシュコントローラと、前記第２のキャッシュメモリを制御する第２のキャッシュコントローラと、を備えたキャッシュメモリシステムにおいて、前記第１のキャッシュコントローラに接続された第１のプロセッサからの要求に応じて、メインメモリに記憶されているデータを読み出すためのデータ読み出し方法であって、
前記第１のキャッシュコントローラ及び前記第２のキャッシュコントローラは、互いに接続されていると共に、それぞれ前記メインメモリに接続されており、
前記方法は、
（ａ）前記第１のキャッシュコントローラにおいて、前記第１のプロセッサから前記データの読み出し要求を受信すると、前記第１のキャッシュメモリに前記データが記憶されているか否かを判定する工程と、
（ｂ）前記第１のキャッシュコントローラにおいて、前記判定工程の結果、前記第１のキャッシュメモリに前記データが記憶されていないと判定された場合に、前記第２のキャッシュコントローラに対して、前記データの読み出し要求を送信する工程と、
を備えるデータ読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各プロセッサがキャッシュメモリを備えるマルチプロセッサシステムにおけるデータ読み出しの技術に関する。
【背景技術】
【０００２】
近年、複数のプロセッサを備えるマルチプロセッサシステムが種々提案されている。そして、このマルチプロセッサシステムとして、データを高速に読み出すために、各プロセッサがキャッシュメモリを備える構成のマルチプロセッサシステムが提案されている（下記特許文献１参照）。
【０００３】
【特許文献１】特開平２００３−２４８６６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述のように、各プロセッサがキャッシュメモリを備える構成のマルチプロセッサシステムでは、或るプロセッサ（仮に「プロセッサＡ」と呼ぶ。）が或るデータ（仮に「データＸ」と呼ぶ。）を読み出そうとする場合に、自己が備えるキャッシュメモリにデータＸが格納されていない場合には、メインメモリからデータＸを読み出すこととなる。メインメモリはキャッシュメモリに比べて動作速度が遅いので、プロセッサＡはデータＸの読み出しに比較的長時間を要することとなる。
【０００５】
また、プロセッサＡがデータＸを読み出した後に、プロセッサＡとは異なるプロセッサ（仮に「プロセッサＢ」と呼ぶ。）が、同じデータＸを読み出そうとした場合に、プロセッサＢが備えるキャッシュメモリにデータＸが格納されていないと、プロセッサＢは、プロセッサＡと同様にメインメモリからデータＸを読み出すこととなる。このとき、メインメモリにおける処理について考えてみると、同じデータＸについての読み出し要求を二度も処理しなくてはならない。その結果、他のデータの読み出し要求やデータの書き込み要求などの処理が待たされることとなり、マルチプロセッサシステム全体でのメモリアクセスのレイテンシ（遅延）が増加することとなる。
【０００６】
本発明は、各プロセッサがキャッシュメモリを備えるマルチプロセッサシステムにおいて、メインメモリからのデータの読み出しが長時間化することを抑制すると共に、マルチプロセッサシステム全体でのメモリアクセスのレイテンシ増加を抑制することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前述の課題の少なくとも一部を解決するために、本発明のキャッシュメモリシステムは、２以上のキャッシュメモリを備えたキャッシュメモリシステムであって、第１のキャッシュメモリと、第２のキャッシュメモリと、第１のプロセッサに接続され、前記第１のキャッシュメモリを制御するための第１のキャッシュコントローラと、第２のプロセッサに接続され、前記第２のキャッシュメモリを制御するための第２のキャッシュコントローラと、を備え、前記第１のキャッシュコントローラ及び前記第２のキャッシュコントローラは、互いに接続されていると共に、それぞれメインメモリに接続されており、前記第１のキャッシュコントローラは、前記第１のプロセッサからデータの読み出し要求を受信すると、前記第１のキャッシュメモリに前記データが記憶されているか否かを判定し、前記第１のキャッシュメモリに前記データが記憶されていないと判定した場合に、前記第２のキャッシュコントローラに対して、前記データの読み出し要求を送信することを要旨とする。
【０００８】
このように、本発明のキャッシュメモリシステムでは、第１のキャッシュコントローラは、第１のキャッシュメモリにデータが記憶されていないと判定した場合に、第２のキャッシュコントローラに対して、データの読み出し要求を送信するので、例えば、かかる要求を受信した第２のキャッシュメモリがデータを返信すると、そのデータを受信することでデータを取得することができる。従って、第１のキャッシュコントローラは、メインメモリにアクセスすることなく、データを取得することができるので、データの読み出しが長時間化することを抑制すると共に、マルチプロセッサシステム全体でのメモリアクセスのレイテンシ増加を抑制することができる。
【０００９】
上記キャッシュメモリシステムにおいて、前記第２のキャッシュコントローラは、前記第１のキャッシュコントローラから、前記データの読み出し要求を受信した場合に、前記第２のキャッシュメモリに前記データが記憶されているか否かを判定し、前記第２のキャッシュコントローラは、前記第２のキャッシュメモリに前記データが記憶されていると判定した場合に、前記データを前記第２のキャッシュメモリから読み出して前記第１のキャッシュコントローラに送信し、前記第２のキャッシュメモリに前記データが記憶されていないと判定した場合に、前記第２のキャッシュメモリに前記データが記憶されていない旨を前記第１のキャッシュコントローラに送信することが好ましい。
【００１０】
このようにすることで、第２のキャッシュメモリにデータが記憶されている場合には、第１のキャッシュコントローラはデータを第２のキャッシュコントローラから受信することができ、また、第２のキャッシュメモリにデータが記憶されていない場合には、第１のキャッシュコントローラは第２のキャッシュメモリにデータが記憶されていないことを知ることができる。
【００１１】
上記キャッシュメモリシステムにおいて、前記第１のキャッシュコントローラは、前記第２のキャッシュコントローラから、前記データを受信した場合に、前記受信したデータを前記第１のプロセッサに送信し、前記第１のキャッシュコントローラは、前記第２のキャッシュコントローラから、前記第２のキャッシュメモリに前記データが記憶されていない旨を受信した場合に、前記メインメモリから前記データを読み出すと共に、前記読み出したデータを前記第１のプロセッサに送信することが好ましい。
【００１２】
このようにすることで、第１のキャッシュコントローラは、第１のキャッシュメモリ及び第２のキャッシュメモリのいずれのキャッシュメモリにもデータが記憶されていない場合にのみ、メインメモリからデータを読み出すこととなる。従って、第１のキャッシュメモリにデータが記憶されておらず、第２のキャッシュメモリにデータが記憶されている場合には、第１のキャッシュコントローラは、メインメモリにアクセスせずにデータを取得することができる。その結果、データの読み出しが長時間化することを抑制すると共に、マルチプロセッサシステム全体でのメモリアクセスのレイテンシ増加を抑制することができる。
【００１３】
なお、本発明は、種々の形態で実現することが可能であり、例えば、上記キャッシュメモリシステムと、上記メインメモリと、上記第１のプロセッサと、上記第２のプロセッサと、を備えるマルチプロセッサシステム、データ読み出し方法、それらの方法又は装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態を実施例に基づいて以下の順序で説明する。
Ａ．第１の実施例：
Ｂ．第２の実施例：
Ｃ．変形例：
【００１５】
Ａ．第１の実施例：
Ａ１．マルチプロセッサシステムの概要構成：
図１は、本発明の一実施例としてのキャッシュメモリシステムを適用したマルチプロセッサシステムの概要構成を示す説明図である。マルチプロセッサシステム１００は、第１プロセッサ１０と、第２プロセッサ２０と、キャッシュメモリシステム４０と、メインメモリ５０と、メインメモリ５０を制御するメモリコントローラ５１と、を備える。第１プロセッサ１０及び第２プロセッサ２０は、それぞれ、図示せざるプロセッサコア及び１次キャッシュメモリを備える。キャッシュメモリシステム４０は、内部バス６０を介してメモリコントローラ５１に接続されている。
【００１６】
キャッシュメモリシステム４０は、第１キャッシュメモリ１５と、第１キャッシュメモリ１５を制御する第１キャッシュコントローラ１５ａと、第２キャッシュメモリ２５と、第２キャッシュメモリ２５を制御する第２キャッシュコントローラ２５ａと、を備える。第１キャッシュコントローラ１５ａは、第１プロセッサ１０及びメモリコントローラ５１に接続されており、第１プロセッサ１０からの要求に応じて、メモリコントローラ５１を介してメインメモリ５０に記憶されているデータを読み出すことができる。同様にして、第２キャッシュコントローラ２５ａは、第２プロセッサ２０及びメモリコントローラ５１に接続されており、第２プロセッサ２０からの要求に応じて、メモリコントローラ５１を介してメインメモリ５０に記憶されているデータを読み出すことができる。これら第１キャッシュコントローラ１５ａ及び第２キャッシュコントローラ２５ａは、互いに接続されており、所定のコマンドや、その応答メッセージを送受信することができる。
【００１７】
第１キャッシュメモリ１５及び第２キャッシュメモリ２５は、いずれも記憶領域として、タグ領域及びデータ領域を備えている。そして、第１キャッシュメモリ１５は、これらタグ領域及びデータ領域を用いて、第１プロセッサ１０の２次キャッシュメモリとして機能する。同様にして、第２キャッシュメモリ２５は、第２プロセッサ２０の２次キャッシュメモリとして機能する。
【００１８】
例えば、第１キャッシュコントローラ１５ａは、第１プロセッサ１０からの要求に応じて、メモリコントローラ５１を介してメインメモリ５０からデータｘ（先頭アドレス値「０００９」）を読み出した場合に、読み出したデータｘを第１プロセッサ１０に送信すると共に第１キャッシュメモリ１５のデータ領域に格納し、また、アドレス値「０００９」をタグ領域に格納する。このようにすることで、次に第１プロセッサ１０が同じデータｘを読み出そうとする場合に、第１キャッシュコントローラ１５ａは、動作速度の比較的速い第１キャッシュメモリ１５からデータｘを読み出すことができるので、動作速度の比較的遅いメインメモリ５０から読み出す場合に比べて、より高速にデータｘを読み出すことができる。
【００１９】
従来のシステムでは、第１キャッシュコントローラ１５ａは第２キャッシュメモリ２５からデータを取得することはできず、また第２キャッシュコントローラ２５ａは第１キャッシュメモリ１５からデータを取得することは不可能であった。これに対して、本実施例のマルチプロセッサシステム１００では、以下に説明するように、第１キャッシュコントローラ１５ａは、第２キャッシュメモリ２５からデータを取得することができ、また、第２キャッシュコントローラ２５ａは、第１キャッシュメモリ１５からデータを取得することができるように構成されている。
【００２０】
Ａ２．データ読み出し処理：
図１の例では、第２キャッシュメモリ２５のデータ領域には、データＡ，ｍ，ｐ，ｎが格納されている。一方、第１キャッシュメモリ１５のデータ領域には、データｘ，ｓ，ｒ，ｔが格納されている。この状態において、第１プロセッサ１０がデータＡ（アドレス値「０００３」）の読み出し要求を第１キャッシュコントローラ１５ａに送信すると（図１のステップ［１］）、第１キャッシュコントローラ１５ａにおいてデータ読み出し処理が開始される。
【００２１】
図２は、第１キャッシュコントローラ１５ａにおいて実行されるデータ読み出し処理の手順を示すフローチャートである。図２において、各破線の矢印に付与された数字（［２］〜［１０］）は、マルチプロセッサシステム１００におけるデータのやりとりを特定するための数字であり、図１に示す数字と対応している。
【００２２】
図２に示すデータ読み出し処理が開始されると、図１に示す第１キャッシュコントローラ１５ａは、第１キャッシュメモリ１５のタグ領域に格納されているアドレス値と、第１プロセッサ１０から指定されたアドレス値「０００３」と、を比較して、第１プロセッサ１０から要求されたデータが第１キャッシュメモリ１５に格納されているか否かを判定する（ステップＳ２０２）。
【００２３】
アドレス値「０００３」のデータＡが第１キャッシュメモリ１５に格納されていないときには、第１キャッシュコントローラ１５ａは、そのデータの読み出し要求コマンドを第２キャッシュコントローラ２５ａに送信し（ステップＳ２０６）、第２キャッシュコントローラ２５ａから返信メッセージを受信したか否かを判定する（ステップＳ２０８）。
【００２４】
ここで、第２キャッシュコントローラ２５ａは、第１キャッシュコントローラ１５ａから前述の読み出し要求コマンドを受信すると（ステップ［４］）、指定されたアドレス値「０００３」のデータが第２キャッシュメモリ２５に格納されているか否かを判定する。そして、アドレス値「０００３」のデータＡが第２キャッシュメモリ２５に格納されている場合には、第２キャッシュコントローラ２５ａは、データＡを第２キャッシュメモリ２５から読み出して、返信メッセージとして、ＡＣＫメッセージにデータＡを付加して第１キャッシュコントローラ１５ａに送信する（ステップ［６］）。なお、指定されたアドレス値「０００３」のデータが第２キャッシュメモリ２５に格納されていない場合、第２キャッシュコントローラ２５ａは、その旨（指定されたアドレス値のデータが第２キャッシュメモリ２５に格納されていない旨）を示すＮＡＣＫメッセージを、返信メッセージとして第１キャッシュコントローラ１５ａに送信する。
【００２５】
第１キャッシュコントローラ１５ａは、返信メッセージを受信すると、受信した返信メッセージがＡＣＫメッセージであるか否かを判定する（ステップＳ２１０）。返信メッセージがＡＣＫメッセージである場合には、第１キャッシュコントローラ１５ａは、付加されたデータＡを第１プロセッサ１０に送信する（ステップＳ２１２）。このようにして、第１プロセッサ１０は、アドレス値「０００３」のデータＡを受け取ることができる。
【００２６】
なお、仮に、第２キャッシュメモリ２５にデータＡが格納されていない場合には、第１キャッシュコントローラ１５ａは、ＮＡＣＫメッセージを受信することとなるので、ステップＳ２１０の処理において、受信した返信メッセージがＡＣＫメッセージでないと判定する（ステップＳ２１０：ＮＯ）。この場合、第１キャッシュコントローラ１５ａは、メモリコントローラ５１に対して、アドレス「０００３」を指定してデータの読み出し要求を送信し（ステップＳ２１４）、メモリコントローラ５１から返信メッセージを受信したか否かを判定する（ステップＳ２１６）。
【００２７】
ここで、メモリコントローラ５１は、第１キャッシュコントローラ１５ａから前述のデータの読み出し要求を受信すると、指定されたアドレス値「０００３」のデータＡをメインメモリ５０から読み出して第１キャッシュコントローラ１５ａに送信する。そして、第１キャッシュコントローラ１５ａは、メモリコントローラ５１から受信したデータＡを第１プロセッサ１０に送信する（ステップＳ２１８）。
【００２８】
なお、ステップＳ２０２の処理において、第１プロセッサ１０からデータの読み出し要求を受信したときに、第１キャッシュメモリ１５にデータＡが格納されていた場合には、第１キャッシュコントローラ１５ａは、第１キャッシュメモリ１５からデータＡを読み出して第１プロセッサ１０に送信する（ステップＳ２０４）。
【００２９】
図２に示す処理は、第２キャッシュコントローラ２５ａが第２プロセッサ２０からデータ読み出し要求を受信したときも、第２キャッシュコントローラ２５ａによって同様に実行される。
【００３０】
以上説明したように、本実施例におけるデータ読み出し処理では、第１キャッシュコントローラ１５ａは、要求されたデータＡが第１キャッシュメモリ１５に格納されていない場合に、第２キャッシュコントローラ２５ａに対し、そのデータの読み出し要求コマンドを送信するようにしている。そして、第２キャッシュコントローラ２５ａは、第２キャッシュメモリ２５にデータＡが格納されている場合に、データＡを第１キャッシュコントローラ１５ａに送信するようにしている。従って、第１キャッシュコントローラ１５ａは、動作速度の比較的遅いメインメモリ５０にアクセスせずにデータＡを取得して第１プロセッサ１０に送信するので、第１プロセッサ１０は、比較的短時間のうちにデータを読み出すことができる。
【００３１】
また、メインメモリ５０における処理について考えると、第２キャッシュコントローラ２５ａからの要求に応じてデータＡを読み出した後において、第２キャッシュメモリ２５にデータＡが格納されている場合には、第１キャッシュコントローラ１５ａからデータＡの読み出し要求を受信することはない。従って、メインメモリ５０（メモリコントローラ５１）では、同じデータの読み出し処理を行わずに済むので、他のデータの読み出しやデータの書き込み処理を行うことができる。その結果、マルチプロセッサシステム１００全体でのメモリアクセスのレイテンシの増加を抑制することができる。
【００３２】
Ｂ．第２の実施例：
図３は、第２の実施例におけるマルチプロセッサシステムの概要構成を示す説明図である。上述した第１の実施例におけるマルチプロセッサシステム１００は、プロセッサ，２次キャッシュメモリ，キャッシュコントローラのセットが２セット存在する構成であったが、本実施例のマルチプロセッサシステムは、かかるセットが３セット存在する構成である。なお、図３において、プロセッサ，２次キャッシュメモリ，キャッシュコントローラ以外の構成については、図１に示すマルチプロセッサシステム１００の構成と同じであるので図示を省略する。
【００３３】
図３に示すように、第２の実施例におけるマルチプロセッサシステムは、図１に示す第１プロセッサ１０，第２プロセッサ２０，第１キャッシュメモリ１５，第２キャッシュメモリ２５，第１キャッシュコントローラ１５ａ，第２キャッシュコントローラ２５ａの他に、第３プロセッサ３０と、第３プロセッサ３０の２次キャッシュメモリとして機能する第３キャッシュメモリ３５と、第３キャッシュメモリ３５を制御する第３キャッシュコントローラ３５ａと、を備える。そして、３つのキャッシュコントローラ１５ａ，２５ａ，３５ａは、それぞれ、他の２つのキャッシュコントローラと接続されている。
【００３４】
かかる構成のマルチプロセッサシステムにおいて、第１プロセッサ１０から第１キャッシュコントローラ１５ａに対して、データの読み出し要求が送信された場合の処理について説明する。
【００３５】
第１キャッシュコントローラ１５ａは、第１プロセッサ１０からのデータ読み出し要求を受信すると（ステップ［１］）、上述したステップＳ２０２の処理と同様に、要求されたデータが第１キャッシュメモリ１５に格納されているか否かを判定する。そして、格納されていないと判定した場合、第１キャッシュコントローラ１５ａは、第１の実施例と異なり、第２キャッシュコントローラ２５ａと第３キャッシュコントローラ３５ａとに対して、データの読み出し要求コマンドを並列に送信する（ステップ［４］，［４’］）。
【００３６】
このとき、第２キャッシュコントローラ２５ａ及び第３キャッシュコントローラ３５ａが実行する処理は、第１の実施例において第２キャッシュコントローラ２５ａが実行した処理と同じである。すなわち、自己に接続されたキャッシュメモリに、データ読み出し要求コマンドで要求されたデータが格納されているか否かを判定し、格納されている場合には、かかるデータを読み出して（ステップ［５］，［５’］）、ＡＣＫメッセージに付加して返信し、格納されていない場合にはＮＡＣＫメッセージを返信する（ステップ［６］，［６’］）。
【００３７】
そして、第１キャッシュコントローラ１５ａは、２つのキャッシュコントローラ２５ａ，３５ａの少なくとも一方からＡＣＫメッセージを受信した場合には、付加されたデータを第１プロセッサ１０に送信する。一方、２つのキャッシュコントローラ２５ａ，３５ａのいずれからもＮＡＣＫメッセージを受信した場合には、メモリコントローラ５１を介してメインメモリ５０からデータを読み出して第１プロセッサ１０に送信する。なお、両キャッシュコントローラ２５ａ，３５ａの両方からＡＣＫメッセージを受信した場合には、第１キャッシュコントローラ１５ａは、例えば、より早く受信したＡＣＫメッセージに付加されたデータを第１プロセッサ１０に送信するようにしてもよい。
【００３８】
以上説明したように、本実施例におけるデータ読み出し処理では、第１キャッシュコントローラ１５ａは、第１キャッシュメモリ１５に指定されたアドレス値のデータが格納されていない場合に、第２キャッシュコントローラ２５ａと第３キャッシュコントローラ３５ａとに対して、データの読み出し要求コマンドを並列に送信するようにしている。従って、２次キャッシュメモリにおいてデータがヒットする確率を、他の１つのキャッシュコントローラに対して要求コマンドを送信する場合に比べてより高くすることができる。
【００３９】
Ｃ．変形例：
なお、本発明は、前述の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において、種々の態様において実施することが可能であり、例えば以下のような変形も可能である。
【００４０】
Ｃ１．変形例１：
上述した第１の実施例及び第２の実施例では、第１キャッシュメモリ１５，第２キャッシュメモリ２５，第３キャッシュメモリ３５は、いずれも２次キャッシュメモリとして機能するキャッシュメモリであるものとしたが、２次キャッシュメモリに代えて、１次キャッシュメモリや、３次キャッシュメモリなど、他のキャッシュメモリとして機能するものであっても構わない。このような構成であっても、各キャッシュコントローラにおいて上述したデータ読み出し処理が実行されることで、各プロセッサは、比較的短時間のうちにデータの読み出しを行うことができる。
【００４１】
Ｃ２．変形例２：
【００４２】
上述した第２の実施例では、第１キャッシュコントローラ１５ａは、第１キャッシュメモリ１５に指定されたアドレスのデータが格納されていない場合に、第２キャッシュコントローラ２５ａと共に第３キャッシュコントローラ３５ａにデータ読み出し要求コマンドを送信するようにしていたが、これに代えて、予め定められた一方のキャッシュコントローラに対してのみデータ読み出し要求コマンドを送信しても構わない。
【００４３】
具体的には、例えば、予めデータ読み出し要求コマンドの送信先として、第１キャッシュコントローラ１５ａは第２キャッシュコントローラ２５ａを、第２キャッシュコントローラ２５ａは第３キャッシュコントローラ３５ａを、第３キャッシュコントローラ３５ａは第１キャッシュコントローラ１５ａを、それぞれ定めておくようにしてもよい。このようにしても、データ読み出し要求コマンドの送信先のキャッシュコントローラにおいて、接続されたキャッシュメモリに要求されたデータが格納されていれば、各キャッシュコントローラは、メインメモリ５０にアクセスするよりも高速にデータを取得することができる。
【００４４】
Ｃ３．変形例３：
上述した第２の実施例では、マルチプロセッサシステムにおいて、プロセッサ，２次キャッシュメモリ，キャッシュコントローラのセットが、３セット存在する構成であったが、４セット以上が存在する構成であっても構わない。この場合、各キャッシュコントローラをメッシュに接続するようにすることで、他のキャッシュコントローラに対してデータ読み出し要求コマンドを送信することができる。また、変形例３のように予めデータ読み出し要求コマンドの送信先を定めておく場合には、定められた送信先に対してのみ接続するようにしてもよい。
【００４５】
Ｃ４．変形例４：
上述した第２の実施例では、第１キャッシュコントローラ１５ａ，第２キャッシュコントローラ２５ａ，第３キャッシュコントローラ３５ａは、それぞれ他の２つのキャッシュコントローラと接続する構成（メッシュ接続の構成）であったが、これに代えて、デイジーチェーン接続（数珠つなぎする接続）の構成であっても構わない。
【００４６】
例えば、第１キャッシュコントローラ１５ａ，第２キャッシュコントローラ２５ａ，第３キャッシュコントローラ３５ａの順番でデイジーチェーン接続するようにしてもよい。そして、かかるデイジーチェーン接続の構成において、第１キャッシュコントローラ１５ａが第２キャッシュコントローラ２５ａにデータ読み出し要求コマンドを送信し、第２キャッシュメモリ２５に要求されたデータがない場合に、第２キャッシュコントローラ２５ａは、さらに、第３キャッシュコントローラ３５ａにデータ読み出し要求コマンドを送信する構成としてもよい。このようにすることで、データ読み出し要求コマンドを受信したキャッシュコントローラが、自己に接続されたキャッシュメモリに要求されたデータがない場合にＮＡＣＫメッセージを返信する構成に比べて、２次キャッシュメモリにおいてデータがヒットする確率を、より高くすることができる。
【００４７】
なお、このようなデイジーチェーン接続の構成において、データ読み出し要求コマンドの送信元のキャッシュコントローラは、かかる要求コマンドを他のキャッシュコントローラに送信してからの経過時間を測定し、所定の時間が経過した時点で返信メッセージを受信していない場合に、メモリコントローラ５１に対してデータの読み出し要求を送信するようにしてもよい。多数のキャッシュコントローラがデイジーチェーン接続されている場合には、返信メッセージが要求コマンドの送信元のキャッシュコントローラに到着するまでに比較的長時間を要する場合が起こり得る。そして、この返信メッセージがＮＡＣＫメッセージであると、キャッシュコントローラは、このＮＡＣＫメッセージを受信してから、改めてメモリコントローラ５１にデータ読み出し要求を送信するので、データの読み出しに比較的長時間を要することとなる。そこで、前述のように、所定の時間が経過した時点で、キャッシュコントローラがメモリコントローラ５１に対してデータの読み出し要求を送信することにより、データの読み出しの長時間化を抑制することができる。
【００４８】
Ｃ５．変形例５：
上述した第１の実施例及び第２の実施例では、各キャッシュコントローラ１５ａ，２５ａ，３５ａには、それぞれ１つのプロセッサ１０，２０，３０が接続される構成であったが、この構成に代えて、少なくともいずれか１つのキャッシュコントローラに、複数のプロセッサが接続される構成であっても構わない。
【図面の簡単な説明】
【００４９】
【図１】本発明の一実施例としてのキャッシュメモリシステムを適用したマルチプロセッサシステムの概要構成を示す説明図である。
【図２】第１キャッシュコントローラ１５ａにおいて実行されるデータ読み出し処理の手順を示すフローチャートである。
【図３】第２の実施例におけるマルチプロセッサシステムの概要構成を示す説明図である。
【符号の説明】
【００５０】
１０…第１プロセッサ
１５…第１キャッシュメモリ
１５ａ…第１キャッシュコントローラ
２０…第２プロセッサ
２５…第２キャッシュメモリ
２５ａ…第２キャッシュコントローラ
３０…第３プロセッサ
３５…第３キャッシュメモリ
３５ａ…第３キャッシュコントローラ
４０…キャッシュメモリシステム
５０…メインメモリ
５１…メモリコントローラ
６０…内部バス
１００…マルチプロセッサシステム
【図１】
2007213304.tif 000003
【図２】
2007213304.tif 000004
【図３】
2007213304.tif 000005