(57)【要約】【課題】  プロセッサに対して発行されるデータ掃き出し命令数を削減することが可能なマルチプロセッサシステムを提供する。【解決手段】  コヒーレンシ制御回路１１，２１はあるレベルが管理しているアドレスの数を調べ、その数が規定数に満たない場合にスワップ優先レベルとして識別し、さらにスワップ優先レベル数の数をカウントしてその数が規定数以上であった場合にスワップ優先レベルの中から既存のＬＲＵ法またはランダム法にてスワップ対象レベルを決定する。これによって、プロセッサキャッシュ無効化命令の発行数が削減され、スワップ動作に伴うＩ／Ｏ帯域の使用頻度を抑えるとともに、プロセッサ１２，１３，２２，２３のキャッシュ使用率を高めることができる。【選択図】      図１
2006330948.tif 000002
【特許請求の範囲】
【請求項１】
各々キャッシュメモリを備える複数のプロセッサと、主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保証するコヒーレンシ制御回路とを含むセルを１以上備える分散共有メモリ方式のマルチプロセッサシステムであって、
前記コヒーレンシ制御回路は、前記キャッシュメモリのコピーを保持しかつ複数のアドレスを１レベルで管理可能なコピーキャッシュと、前記コピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すよう制御する手段とを有することを特徴とするマルチプロセッサシステム。
【請求項２】
前記コピーキャッシュは、前記プロセッサが発行するリクエストアドレスに含まれるキーアドレスと、前記リクエストアドレスの一部に対応して割り当てたアドレス管理情報と、管理する複数アドレス各々に対応したステータス情報とを格納し、前記リクエストアドレスに含まれるセットアドレスによってアクセスされることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記コヒーレンシ制御回路は、前記プロセッサが発行したリードリクエストによって前記コピーキャッシュを索引する索引手段と、
前記索引手段でヒットした時に前記コピーキャッシュを更新せずに該当するアドレスデータを前記プロセッサに受け渡すことを該当するプロセッサに指示する第１の手段と、
前記索引手段でヒットミスした時に前記コピーキャッシュに空きレベルがあれば前記リードリクエストを他のすべてのセルに発行して検索させて得られたアドレスデータを前記プロセッサに受け渡しかつ前記コピーキャッシュの空きレベルに前記アドレスデータを格納する第２の手段と、
前記索引手段でヒットミスした時に前記コピーキャッシュに空きレベルがなければ管理しているアドレスの数が規定数以下のレベルを優先的に掃き出して空きレベルを生成した後に前記リードリクエストを他のすべてのセルに発行して検索させて得られたアドレスデータを前記プロセッサに受け渡しかつ前記コピーキャッシュの空きレベルに前記アドレスデータを格納する第３の手段とを含むことを特徴とする請求項１または請求項２記載のマルチプロセッサシステム。
【請求項４】
前記コヒーレンシ制御回路は、前記索引手段でヒットミスした時に前記コピーキャッシュに空きレベルがなければアドレスの数が規定数以下のレベルをスワップ優先レベルとして識別する手段と、
そのスワップ優先レベルの数を認識するとともに優先レベルの数が規定数以上であることを識別した時に前記優先レベルの中から少なくともＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法及びランダム法のいずれかにてスワップ対象レベルを決定する手段とを含むことを特徴とする請求項３記載のマルチプロセッサシステム。
【請求項５】
前記コヒーレンシ制御回路は、前記索引手段でヒットミスした時に前記コピーキャッシュに空きレベルがなければ優先レベルと識別しかつ管理しているアドレスの数が規定数以下のレベルの数が規定数に満たない場合に全レベルの中からＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法及びランダム法のいずれかにてスワップ対象レベルを決定する手段を含むことを特徴とする請求項３記載のマルチプロセッサシステム。
【請求項６】
前記コヒーレンシ制御回路は、前記第３の手段で前記コピーキャッシュの空きレベルに前記アドレスデータを格納する時に前記掃き出されたアドレスについてキャッシュ掃き出し命令を作成して前記プロセッサに発行する手段を含むことを特徴とする請求項３から請求項５のいずれか記載のマルチプロセッサシステム。
【請求項７】
コピーキャッシュ情報を前記セットアドレスにて読出した後にＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｉｎｇ）論理にて１ビットエラー訂正を行う構成を採る場合に、前記アドレスの数が１つだけのレベルを前記スワップ優先レベルとして識別する回路と、そのスワップ優先レベルの数を認識する回路と、前記優先レベルの数が規定数以上であることを認識する回路とが、前記１ビットエラー訂正を行う前のコピーキャッシュ情報読出し情報を入力信号として前記ＥＣＣ論理と平行してその認識結果を出力することを特徴とする請求項４または請求項５記載のマルチプロセッサシステム。
【請求項８】
前記優先レベルを認識する回路において、規定数以下のアドレスのみ管理しているレベルをスワップ優先レベルとして認識する回路と、コマンドフラグが点灯していないレベルをスワップ優先レベルとして認識する回路と、共有されていることを示すステータスを持つレベルをスワップ優先レベルとして認識する回路との３つの回路を組み込んでおき、前記３つの回路の中からプログラムアクセス可能なレジスタの設定値に応じて選択可能とすることを特徴とする請求項７記載のマルチプロセッサシステム。
【請求項９】
各々キャッシュメモリを備える複数のプロセッサと、主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保証するコヒーレンシ制御回路とを含むセルを１以上備える分散共有メモリ方式のマルチプロセッサシステムに用いるコピーキャッシュ情報掃き出しレベル選択方法であって、
前記コヒーレンシ制御回路が、前記キャッシュメモリのコピーを保持しかつ複数のアドレスを１レベルで管理可能なコピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すよう制御する処理を実行することを特徴とするコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１０】
前記コピーキャッシュが、前記プロセッサが発行するリクエストアドレスに含まれるキーアドレスと、前記リクエストアドレスの一部に対応して割り当てたアドレス管理情報と、管理する複数アドレス各々に対応したステータス情報とを格納し、前記リクエストアドレスに含まれるセットアドレスによってアクセスされることを特徴とする請求項９記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１１】
前記コヒーレンシ制御回路が、前記プロセッサが発行したリードリクエストによって前記コピーキャッシュを索引する第１の処理と、前記第１の処理でヒットした時に前記コピーキャッシュを更新せずに該当するアドレスデータを前記プロセッサに受け渡すことを該当するプロセッサに指示する第２の処理と、前記第１の処理でヒットミスした時に前記コピーキャッシュに空きレベルがあれば前記リードリクエストを他のすべてのセルに発行して検索させて得られたアドレスデータを前記プロセッサに受け渡しかつ前記コピーキャッシュの空きレベルに前記アドレスデータを格納する第３の処理と、前記第１の処理でヒットミスした時に前記コピーキャッシュに空きレベルがなければ管理しているアドレスの数が規定数以下のレベルを優先的に掃き出して空きレベルを生成した後に前記リードリクエストを他のすべてのセルに発行して検索させて得られたアドレスデータを前記プロセッサに受け渡しかつ前記コピーキャッシュの空きレベルに前記アドレスデータを格納する第４の処理とを実行することを特徴とする請求項９または請求項１０記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１２】
前記コヒーレンシ制御回路が、前記第１の処理でヒットミスした時に前記コピーキャッシュに空きレベルがなければアドレスの数が規定数以下のレベルをスワップ優先レベルとして識別する処理と、そのスワップ優先レベルの数を認識するとともに優先レベルの数が規定数以上であることを識別した時に前記優先レベルの中から少なくともＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法及びランダム法のいずれかにてスワップ対象レベルを決定する処理とを実行することを特徴とする請求項１１記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１３】
前記コヒーレンシ制御回路が、前記第１の処理でヒットミスした時に前記コピーキャッシュに空きレベルがなければ優先レベルと識別しかつ管理しているアドレスの数が規定数以下のレベルの数が規定数に満たない場合に全レベルの中からＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法及びランダム法のいずれかにてスワップ対象レベルを決定する処理を実行することを特徴とする請求項１１記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１４】
前記コヒーレンシ制御回路が、前記第４の処理で前記コピーキャッシュの空きレベルに前記アドレスデータを格納する時に前記掃き出されたアドレスについてキャッシュ掃き出し命令を作成して前記プロセッサに発行する処理を実行することを特徴とする請求項１１から請求項１３のいずれか記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１５】
コピーキャッシュ情報を前記セットアドレスにて読出した後にＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｉｎｇ）論理にて１ビットエラー訂正を行う構成を採る場合に、前記アドレスの数が１つだけのレベルを前記スワップ優先レベルとして識別する回路と、そのスワップ優先レベルの数を認識する回路と、前記優先レベルの数が規定数以上であることを認識する回路とが、前記１ビットエラー訂正を行う前のコピーキャッシュ情報読出し情報を入力信号として前記ＥＣＣ論理と平行してその認識結果を出力することを特徴とする請求項１２または請求項１３記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１６】
前記優先レベルを認識する回路において、規定数以下のアドレスのみ管理しているレベルをスワップ優先レベルとして認識する回路と、コマンドフラグが点灯していないレベルをスワップ優先レベルとして認識する回路と、共有されていることを示すステータスを持つレベルをスワップ優先レベルとして認識する回路との３つの回路を組み込んでおき、前記３つの回路の中からプログラムアクセス可能なレジスタの設定値に応じて選択可能とすることを特徴とする請求項１５記載のコピーキャッシュ情報掃き出しレベル選択方法。
【請求項１７】
各々キャッシュメモリを備える複数のプロセッサと、主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保証するコヒーレンシ制御回路とを含むセルを１以上備える分散共有メモリ方式のマルチプロセッサシステムに用いるコピーキャッシュ情報掃き出しレベル選択方法のプログラムであって、前記コヒーレンシ制御回路のコンピュータに、前記キャッシュメモリのコピーを保持しかつ複数のアドレスを１レベルで管理可能なコピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すよう制御する処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステム及びそれに用いるコピーキャッシュ情報掃き出しレベル選択方法並びにそのプログラムに関し、特にマルチプロセッサシステムにおけるコピーキャッシュのスワップ処理を規定するコピーキャッシュ情報掃き出しレベル選択方法に関する。
【背景技術】
【０００２】
一般に、分散共有メモリ方式を採用したマルチプロセッサシステムでは、複数個のセルがバス型、スター型、リング型等の信号線によって相互に接続されている。これら複数個のセル各々はキャッシュメモリを有する複数個のプロセッサと、これらのプロセッサキャッシュのコピーを保持するコピーキャッシュを有するコヒーレンシ制御回路とを備え、これらの間も上記とは別の信号線によって相互に接続されている。さらに、各セルの主メモリは上記のコヒーレンシ制御回路に専用線で接続されており、システム全体で共有されている。
【０００３】
上記のようなマルチプロセッサシステムのセルにおいて、プロセッサが発行したリードリクエストを取込んだコヒーレンシ制御回路は、満杯のコピーキャッシュを索引してヒットミスとなった場合、コピーキャッシュの一部をスワップしなければならない。
【０００４】
従来、コピーキャッシュの中のスワップ対象を決定する方法としては、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法やランダム法等が採用されている。しかしながら、これらの方法はスワップ対象の決定時にその主メモリが搭載されているセルを考慮していないので、スワップ対象となったアドレスデータを保持していたプロセッサから再びそのアドレスに対するリクエストが発生した場合には、他のセルの主メモリにデータを取りに行く必要が発生することがあり、その時にはメモリアクセスレイテンシが増大する。
【０００５】
このようなスワップ対象アドレスに対するアクセスがスワップ対象データを保持していたプロセッサから再び発生した場合に、メモリアクセスレイテンシが増大するという問題を解決するために、リクエスト発行元のプロセッサと同じセルに搭載された主メモリに対応するアドレスデータを優先的にスワップ対象とすることで、メモリアクセスレイテンシを小さくする方法が提案されている（例えば、特許文献１参照）。
【０００６】
上記と同様な技術としては、ＴＡＧメモリと、ＴＡＧメモリからの掃き出し情報を保持するＴＡＧスワップバッファとによって、ＴＡＧスワップバッファに有効な情報があり、ＴＡＧメモリのエリアが空いた際にＴＡＧスワップバッファからの再登録を行う技術がある（例えば、特許文献２参照）。
【０００７】
ＴＡＧスワップバッファはフル状態となるまで、バスへのコヒーレントリクエストを発行しない。また、ＴＡＧスワップバッファ内にＴＡＧメモリへの再登録対象が複数ある場合、ＴＡＧステータスが“Ｓ”よりも“Ｐ”であるものを優先する。ＴＡＧスワップバッファからバスへのコヒーレントリクエストを発行する場合も、ステータスが“Ｓ”よりも“Ｐ”を優先させる機構を具備することによって、各ノード内のバスへの負荷を低減し、ＴＡＧメモリを有効に活用することから、ＣＰＵに搭載されるキャッシュからの掃き出しが低減されので、システム全体の性能が向上する。
【０００８】
【特許文献１】特開２０００−６６９５５号公報
【特許文献２】特開２００３−３１６７５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来の技術としては、コピーキャッシュ１レベルで管理することができるアドレスを複数倍にする技術が存在するが、従来のスワップ対象決定処理によってｎ個（２≦ｎ）のアドレスを管理しているレベルがスワップ対象に決定された場合、プロセッサに対してｎ個のアドレス分のプロセッサキャッシュ無効化命令を発行する必要が生じ、命令の数だけプロセッサからリプライが発行されるため、１アドレス分のプロセッサキャッシュ無効化命令を発行する場合に比べてｎ倍のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）帯域を消費することとなり、同時にプロセッサのキャッシュ利用効率も低下するため、情報処理性能の向上を図る際のマイナス要因になるという問題がある。
【００１０】
そこで、本発明の目的は上記の問題点を解消し、プロセッサに対して発行されるデータ掃き出し命令数を削減することができるマルチプロセッサシステム及びそれに用いるコピーキャッシュ情報掃き出しレベル選択方法並びにそのプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明によるマルチプロセッサシステムは、各々キャッシュメモリを備える複数のプロセッサと、主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保証するコヒーレンシ制御回路とを含むセルを複数接続した分散共有メモリ方式のマルチプロセッサシステムであって、
前記コヒーレンシ制御回路は、前記キャッシュメモリのコピーを保持しかつ複数のアドレスを１レベルで管理可能なコピーキャッシュと、前記コピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すよう制御する手段とを備えている。
【００１２】
本発明によるコピーキャッシュ情報掃き出しレベル選択方法は、各々キャッシュメモリを備える複数のプロセッサと、主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保証するコヒーレンシ制御回路とを含むセルを複数接続した分散共有メモリ方式のマルチプロセッサシステムに用いるコピーキャッシュ情報掃き出しレベル選択方法であって、
前記コヒーレンシ制御回路が、前記キャッシュメモリのコピーを保持しかつ複数のアドレスを１レベルで管理可能なコピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すよう制御する処理を実行している。
【００１３】
本発明によるコピーキャッシュ情報掃き出しレベル選択方法のプログラムは、各々キャッシュメモリを備える複数のプロセッサと、主メモリと、前記プロセッサと前記主メモリとの間のキャッシュコヒーレンシを保証するコヒーレンシ制御回路とを含むセルを複数接続した分散共有メモリ方式のマルチプロセッサシステムに用いるコピーキャッシュ情報掃き出しレベル選択方法のプログラムであって、前記コヒーレンシ制御回路のコンピュータに、前記キャッシュメモリのコピーを保持しかつ複数のアドレスを１レベルで管理可能なコピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すよう制御する処理を実行させている。
【００１４】
すなわち、本発明のマルチプロセッサシステムは、各々キャッシュメモリを備える複数個のプロセッサと、キャッシュメモリのコピーを保持するコピーキャッシュを備えるコヒーレンシ制御回路と、コヒーレンシ制御回路に接続された主メモリとを含むセルを複数個接続した分散共有メモリ方式のマルチプロセッサシステムであり、コピーキャッシュが複数個のアドレスを１レベルで管理可能な機能を備え、コピーキャッシュのスワップが発生した際に管理しているアドレス数の少ないレベルを優先的に掃き出すように構成している。
【００１５】
また、本発明のマルチプロセッサシステムでは、コピーキャッシュがプロセッサが発行するリクエストアドレスに含まれるキーアドレスと、アドレスの一部に対応して割当てたアドレス管理情報と、管理する複数アドレス各々に対応したステータス情報とを格納し、リクエストアドレスに含まれるセットアドレスによってアクセスされるように構成している。
【００１６】
さらに、本発明のマルチプロセッサシステムでは、コヒーレンシ制御回路がプロセッサの発行したリードリクエストによってコピーキャッシュを索引し、ヒットした場合にコピーキャッシュを更新せずに該当するアドレスデータをプロセッサに受け渡すことを該当するプロセッサに指示し、ヒットミスした場合にコピーキャッシュに空きレベルがある時にリードリクエストを他のすべてのセルに発行して検索させ、その検索で得られたアドレスデータをプロセッサに受け渡し、さらにコピーキャッシュの空きレベルにアドレスデータを格納している。
【００１７】
さらにまた、本発明のマルチプロセッサシステムでは、コヒーレンシ制御回路がヒットミスした場合、コピーキャッシュに空きレベルがない時に管理しているアドレスの数が規定数以下のレベルを優先的に掃き出して空きレベルを生成した後、リードリクエストを他のすべてのセルに発行して検索させ、その検索で得られたアドレスデータをプロセッサに受け渡し、さらにコピーキャッシュの空きレベルにアドレスデータを格納している。
【００１８】
本発明のマルチプロセッサシステムでは、コヒーレンシ制御回路がプロセッサの発行したリードリクエストによってコピーキャッシュを索引し、ヒットミスした場合、コピーキャッシュに空きレベルがない時にアドレスの数が規定数以下のレベルをスワップ優先レベルとして識別し、さらにそのスワップ優先レベルの数を認識するとともに、優先レベルの数が規定数以上であることを識別した時に優先レベルの中からＬＲＵ方式またはランダム方式によってスワップ対象レベルを決定している。
【００１９】
また、本発明のマルチプロセッサシステムでは、コヒーレンシ制御回路がプロセッサの発行したリードリクエストによってコピーキャッシュを索引し、ヒットミスした場合、コピーキャッシュに空きレベルがない時、優先レベルと識別しかつ管理しているアドレスの数が規定数以下のレベルの数が規定数に満たなければ、全レベルの中からＬＲＵ法またはランダム法等の既知の手順によってスワップ対象レベルを決定している。
【００２０】
さらに、本発明のマルチプロセッサシステムでは、各々がキャッシュメモリを備える複数個のプロセッサと、キャッシュメモリのコピーを保持するコピーキャッシュを備えるコヒーレンシ制御回路と、コヒーレンシ制御回路に接続された主メモリとを含むセルを複数個接続した分散共有メモリ方式のシステムにおいて、コヒーレンシ制御回路がプロセッサの発行したリードリクエストによってコピーキャッシュを索引し、ヒットした場合にコピーキャッシュを更新せず、該当するアドレスデータをプロセッサに受け渡すことを該当するプロセッサに指示している。
【００２１】
さらにまた、本発明のマルチプロセッサシステムでは、ヒットミスした場合、コピーキャッシュに空きレベルがある時にリードリクエストを他のすべてのセルに発行して検索させ、その検索で得られたアドレスデータをプロセッサに受け渡し、さらにコピーキャッシュの空きレベルにアドレスデータを格納している。
【００２２】
本発明のマルチプロセッサシステムでは、ヒットミスした場合、コピーキャッシュに空きレベルがない時にアドレスの数が規定数のレベルを優先的に掃き出して空きレベルを生成した後、リードリクエストを他のすべてのセルに発行して検索させ、その検索で得られたアドレスデータをプロセッサに受け渡し、さらにコピーキャッシュの空きレベルにアドレスデータを格納するとともに、掃き出されたアドレスについてキャッシュ掃き出し命令を作成し、プロセッサに対して発行している。
【００２３】
一方、本発明のマルチプロセッサシステムでは、コピーキャッシュ情報をセットアドレスによって読出した後にＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｉｎｇ）論理にて１ビットエラー訂正を行う構成を採る場合、アドレスの数が規定数以下のレベルをスワップ優先レベルとして識別する回路と、さらにそのスワップ優先レベルの数を認識する回路と、優先レベルの数が規定数以上であることを認識する回路について１ビットエラー訂正を行う前のコピーキャッシュ情報読出し情報を入力信号としてＥＣＣ論理と平行して論理回路の結果を出力するように構成している。
【００２４】
また、本発明のマルチプロセッサシステムでは、優先レベル認識回路において規定数以下のアドレスのみを管理しているレベルをスワップ優先レベルとして認識する回路と、コマンドフラグが点灯していないレベルをスワップ優先レベルとして認識する回路と、共有されていることを示すステータスを持つレベルをスワップ優先レベルとして認識する回路との３つを組込んでおき、３つの回路の中からプログラムアクセス可能なレジスタの設定値によって選択可能とする手段を持っている。
【００２５】
上記のように、本発明のマルチプロセッサシステムでは、メモリアクセスＴＡＴ（Ｔｕｒｎ  Ａｒｏｕｎｄ  Ｔｉｍｅ）を増加することなく、スワップ対象レベル選択時に管理アドレス数の少ないレベルを優先的にスワップし、プロセッサに対して発行されるデータ掃き出し命令数を削減することによって、通常命令が使用するＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）帯域を増加してデータ処理能力を向上させることが可能となる。
【００２６】
また、本発明のマルチプロセッサシステムでは、優先対象レベル数をカウントして、その数が一定数以上である場合にのみ優先対象の中からスワップ対象レベルを決定する構成をとり、優先度の高いレベル数が少なくなった時にスワップ対象レベルが極端に集中してしまうことを防ぐことによって、性能低下を抑えることが可能となる。
【００２７】
さらに、本発明のマルチプロセッサシステムでは、管理アドレス数の少ないレベルが優先してスワップされるため、管理アドレス数の大きいレベルの存在確率が上がり、これはコピーキャッシュを利用効率が向上を意味するが、結果的にプロセッサが持っているコピーキャッシュの利用効率を向上させることも可能となる。
【発明の効果】
【００２８】
本発明は、以下に述べるような構成及び動作とすることで、プロセッサに対して発行されるデータ掃き出し命令数を削減することができるという効果が得られる。
【発明を実施するための最良の形態】
【００２９】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例によるマルチプロセッサシステムの構成を示すブロック図である。図１において、本発明の一実施例によるマルチプロセッサシステムはセル１，２を第二バス１０２で接続した分散共有メモリ方式のシステムである。
【００３０】
セル１，２は各々キャッシュメモリ１２ａ，１３ａ，２２ａ，２３ａを備える複数のプロセッサ１２，１３，２２，２３と、キャッシュメモリ１２ａ，１３ａ，２２ａ，２３ａのコピーを保持するコピーキャッシュ１１ａ，２１ａを備えるコヒーレンシ制御回路１１，２１と、コヒーレンシ制御回路１１，２１に接続された主メモリ１４，２４とを含んで構成されており、複数のプロセッサ１２，１３，２２，２３とコヒーレンシ制御回路１１，２１とは第一バス１０１，２０１で相互に接続されている。また、コヒーレンシ制御回路１１，２１は第二バス１０２で相互に接続されている。
【００３１】
このシステムにおいて、コピーキャッシュ１１ａ，２１ａの情報を掃き出す時には、そのコピーキャッシュ１１ａ，２１ａを備えるコヒーレンシ制御回路１１，２１に接続された主メモリ１４，２４に対応するアドレスデータの情報を優先的に掃き出すようにしている。
【００３２】
プロセッサ１２，１３，２２，２３はそれぞれストアイン方式を採用するキャッシュメモリ１２ａ，１３ａ，２２ａ，２３ａを有している。キャッシュメモリ１２ａ，１３ａ，２２ａ，２３ａは、データを記憶する領域であるデータアレイキャッシュ（ＤＡ：Ｄａｔａ  Ａｒｒａｙ  ｃａｃｈｅ）と、データアレイキャッシュに格納されたデータのアドレスに対応するキーアドレス及びデータアレイキャッシュに格納されたデータのステータスを保持するアドレスアレイキャッシュ（ＡＡ：Ａｄｄｒｅｓｓ  Ａｒｒａｙ  ｃａｃｈｅ）とによって構成されている。アドレスアレイキャッシュはセットアソシアティブ方式によって、上記のキーアドレス及びデータステータスを格納している。
【００３３】
コヒーレンシ制御回路１１，２１はプロセッサ１２，１３，２２，２３と主メモリ１４，２４との間のキャッシュコヒーレンシを保証するための回路であり、プロセッサ１２，１３，２２，２３が有するアドレスアレイキャッシュのデータがコピーされるコピーキャッシュ１１ａ，２１ａを有している。尚、コピーキャッシュ１１ａ，２１ａはプロセッサ１２，１３，２２，２３のそれぞれに固有ではなく、両プロセッサ１２，１３，２２，２３にて共有するものである。
【００３４】
セル１，２は上記のプロセッサ１２，１３，２２，２３とコヒーレンシ制御回路１１，２１とを相互に第一バス１０１，２０１によって接続して構成されている。尚、主メモリ１４，２４はコヒーレンシ制御回路１１，２１に専用線で接続されている。
【００３５】
本発明の一実施例によるマルチプロセッサシステムは、上記のようなセルを複数個備え、各セルのコヒーレンシ制御回路を相互に第二バス１０２によって接続して構成される。各セル１，２の主メモリ１４，２４はセル１，２内のプロセッサで共有されるだけでなく、全セル１，２のプロセッサ１２，１３，２２，２３で共有されている。尚、最小構成時のマルチプロセッサシステムとしてはセルの数は１個でよい。
【００３６】
図２は図１のコピーキャッシュ１１ａの構成を示すブロック図である。図２において、コピーキャッシュ１１ａはセットアソシアティブ方式を採用し、リクエストアドレス１１２の一部をセットアドレス１１０１としてコピーキャッシュ１１１にアクセスし、アドレスの一部に対応して割当てたアドレス管理情報１１４と、残りのリクエストアドレスであるキーアドレス１１０２とアドレスのステータスを示すステータス情報１１３とを格納する。
【００３７】
ステータス情報１１３は２つのアドレスを管理する場合に２つ分のステータス情報を、４つのアドレスを管理する場合に４つ分のステータス情報をそれぞれ保持する。
【００３８】
また、物理的要因によってコピーキャッシュ１１１のレベル数（Ｌ）は、第一バス１０１で接続された複数のプロセッサ１２，１３のアドレスアレイキャッシュのレベル数の合計と同等、もしくは少ないものとする。これはあるリクエストをプロセッサ１２，１３が実行しようとした場合に、プロセッサ１２，１３のアドレスアレイキャッシュには情報を格納することができるが、コピーキャッシュ１１ａの対応するレベルが全て使用されており、新たなリクエストによる情報を格納できないことがあるということである。
【００３９】
アドレス管理情報１１４はリクエストアドレス１１２の一部をデコーダ１１５でデコードしたもので、１つのセットアドレスで２つのアドレスを管理する場合に２ビットとなり、１つのセットアドレスで４つのアドレスを管理する場合に４ビットとなり、各々のビットが管理対象のアドレスに対応しているため、複数のアドレスを管理している場合にこのアドレス管理情報には複数のビットが“１”となる。
【００４０】
ステータス情報１１３に対応するアドレスが有効または無効であることを識別できるコードを使うことによってアドレス管理情報１１４を不要とする構成をとることも可能である。
【００４１】
図３は図１のコヒーレンシ制御回路１１，２１の動作を示すフローチャートである。これら図１〜図３を参照してコヒーレンシ制御回路１１，２１の動作について説明する。
【００４２】
プロセッサ１２が発行したリードリクエストは第一バス１０１を介してコヒーレンシ制御回路１１に取込まれる。コヒーレンシ制御回路１１はそのリードリクエストを基にコピーキャッシュ１１ａを索引する（図３ステップＳ１）。
【００４３】
コヒーレンシ制御回路１１はこのコピーキャッシュ１１ａの索引の結果、コピーキャッシュ１１ａに既に該リクエストアドレス及びデータステータス情報が格納されているヒット状態か、コピーキャッシュ１１ａに該リクエストアドレス及びデータステータス情報が格納されていないミス状態かを判別する（図３ステップＳ２）。
【００４４】
ヒット状態と判別された場合には、コピーキャッシュ１１ａの更新の必要はない。コピーキャッシュ１１ａにヒットするということは、この例ではプロセッサ１３が該アドレスデータを保持していることを意味するので、コヒーレンシ制御回路１１はプロセッサ１３に対して第一バス１０１を介してプロセッサ１２に該アドレスデータを受け渡すことを指示する（図３ステップＳ３）。
【００４５】
ミス状態と判別された場合には、コピーキャッシュ１１ａに該リクエストアドレスやステータス情報、及びセル情報を格納する必要がある。そこで、コヒーレンシ制御回路１１は上記のステップＳ１においてコピーキャッシュ１１ａを索引した時のデータからコピーキャッシュ１１ａに新たな情報を格納することができる空きレベルが存在するか否かを確認する（図３ステップＳ４）。
【００４６】
コピーキャッシュ１１ａに空きレベルが存在する場合には、コピーキャッシュミス時の動作、すなわち第二バス１０２に該リードリクエストを発行し、第二バス１０２に接続される全てのセルのコヒーレンシ制御回路がそのリクエストを取込み、コピーキャッシュを索引し、配下のプロセッサがダーティで該アドレスデータを保持していたならばそのデータを、いずれのプロセッサもダーティデータを保持していないのならば該リクエストアドレスのデータを保持する主メモリからの読出しデータを、リクエスト元のプロセッサ１２に返却する処理を行う（図３ステップＳ７）。
【００４７】
続いて、コヒーレンシ制御回路１１はコピーキャッシュ１１ａに該リクエストアドレスやステータス情報、及びセル情報（該リクエストアドレスのデータを保持する主メモリを搭載したセルを示す情報）を格納する（図３ステップＳ８）。
【００４８】
コピーキャッシュ１１ａに空きレベルが存在しない場合、コヒーレンシ制御回路１１は使用されているレベルのいずれかの情報を選択し、その情報に対応するアドレスのデータを保持しているプロセッサに対して問い合わせ、そのデータがダーティならば主メモリへの書き戻しを、そうでなければ廃棄を指示し、空きレベルを生成する必要がある。この処理をスワップ処理と称する。
【００４９】
従来、スワップ処理レベルの決定法としてはＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）法やランダム法が利用されているが、本実施例ではプロセッサへのデータ無効化命令発効数の削減を目的として１つのアドレスのみを管理しているレベルを優先してスワップ対象レベルに選択する（図３ステップＳ５）。
【００５０】
図４は図３のスワップ対象レベル決定（図３ステップＳ５）の処理を示すフローチャートである。この図４を参照してスワップ対象レベル決定の処理について説明する。
【００５１】
まず、コヒーレンシ制御回路１１は上記のステップＳ１でコピーキャッシュ１１ａを索引した時の情報を用いて、１つのみアドレスを管理しているレベルを優先対象レベルと認識するとともに、その数を認識して、その数がｎ個以上（２≦ｎ≦最大レベル数）であることを確認する（図４ステップＳ１１）。
【００５２】
この条件を満たしていない場合、コヒーレンシ制御回路１１は全レベルの中からＬＲＵ法やランダム法等でスワップ対象レベルを選択する（図４ステップＳ１２）。また、この条件を満たしている場合、コヒーレンシ制御回路１１は優先対象レベルの中からＬＲＵ法やランダム法等でスワップ対象レベルを選択する（図４ステップＳ１３）。
【００５３】
コヒーレンシ制御回路１１は、上記のようにして選択されたスワップ対象レベルに格納されていたアドレスのデータを保持するプロセッサに対してデータ掃き出し命令を出力するが（図３ステップＳ６）、その際、２つのアドレスを管理しているレベルがスワップ対象レベルとして選択された場合には２つのデータ掃き出し命令がプロセッサに対して出力され、１つのアドレスを管理しているレベルがスワップ対象レベルとして選択された場合には１つのデータ掃き出し命令がプロセッサに対して出力される。プロセッサはデータ掃き出し命令を受取ると、そのデータがダーティならば主メモリへの書き戻しを、そうでないならば破棄する処理を行う。
【００５４】
この後、コヒーレンシ制御回路１１はコピーキャッシュミス時の動作、すなわち第二バス１０２に該リードリクエストを発行し、第二バス１０２に接続される全てのセルのコヒーレンシ制御回路がそのリクエストを取込み、コピーキャッシュを索引し、配下のプロセッサがダーティで該アドレスデータを保持していたならばそのデータを、いずれのプロセッサもダーティデータを保持していないのならば該リクエストアドレスのデータを保持する主メモリからの読出しデータを、リクエスト元のプロセッサ１２に返却する処理を行う（図３ステップＳ７）。
【００５５】
コヒーレンシ制御回路１１は上記のステップＳ６の処理で空いたレベルに該リクエストアドレスやステータス情報、及びセル情報を格納し（図３ステップＳ８）、リードリクエストの処理を終了する。尚、上記のコピーキャッシュ情報掃き出しレベル選択の処理は主メモリに保持されたプログラムを実行することによって動作する。このプログラムはマルチプロセッサシステムを構成するオペレーティングシステム（ＯＳ）の一機能であり、通常、ハードディスク等に格納されており、システム運用時に主メモリにロードされて実行される。
【００５６】
図５〜図７は図１のコピーキャッシュ１１ａから読出したキーアドレス、アドレス管理情報、ステータス情報を読出してからスワップ対象レベルを決定してデータ掃き出し命令生成回路（図示せず）に送るまでの構成を示すブロック図である。これら図５〜図７を参照してメモリアクセスＴＡＴ（Ｔｕｒｎ  Ａｒｏｕｎｄ  Ｔｉｍｅ）を増加させることなく、上述した機能を実現する例について説明する。以下の説明では、本実施例ではコピーキャッシュレベル数を１２とし、１つのセットアドレスで管理できるアドレス数を２とする。
【００５７】
図５は従来技術における構成例で、最初のクロックサイクルでセットアドレス１１０１によってコピーキャッシュ１１１から格納データを読出してレジスタ１１６で受ける。次のクロックサイクルでは、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｉｎｇ）回路１１７によって１ビットエラーを訂正し、レジスタ１１８で受ける。
【００５８】
次のクロックサイクルでは、ヒット／ミスチェック（Ｈｉｔ／Ｍｉｓｓ  Ｃｈｅｃｋ）回路１１９にてコピーキャッシュ１１１に該リクエストアドレス及びデータステータス情報が格納されていないことと、レベルに空きがないこととを識別し、スワップ決定回路１２１にその識別情報を送る。このヒット／ミスチェック回路１１９の動作と平行して、スワップレベル決定回路１２０にてＬＲＵ法またはランダム法等の既存の方法を用いて複数レベルの中からスワップ対象レベルを決定する。
【００５９】
スワップ決定回路１２１はヒット／ミスチェック回路１１９及びスワップレベル決定回路１２０からの信号を受けて対象レベルをスワップする決定を行い、レジスタ１２２を介して図示せぬデータ掃き出し命令生成回路にスワップ対象レベル情報を送出する。
【００６０】
図６を参照して、従来の回路構成をベースにして本発明の機能を実装した時の例について説明する。図６は図５に対して優先レベル認識回路１２３と優先レベル数カウント回路１２４とレジスタ１２５，１２６とが追加されており、スワップ決定までのクロックサイクルが１サイクル増加してしまっている。
【００６１】
図６の図５との差分について説明すると、優先レベル認識回路１２３は１ビットエラー修正後の情報から優先レベルとなる１つの（Ｘ個以下の）アドレスのみを管理しているレベルを識別する。Ｘは固定値“１”またはプログラムにて設定できるものである。
【００６２】
優先レベル数カウント回路１２４は優先レベルと認識された数をカウントし、そのカウント数をスワップレベル決定回路１２０に送るが、回路遅延の関係上、一旦レジスタ１２５に格納する必要が生じてしまう。
【００６３】
スワップレベル決定回路１２０は優先レベル数が４以上（ｍ個以上）であった場合に優先レベルの中からＬＲＵ法またはランダム法等にてスワップレベルを決定し、優先レベル数が４（ｍ個）に満たない場合に全１２レベルの中からＬＲＵ法またはランダム法等にてスワップレベルを決定する。
【００６４】
図７を参照して本発明における回路構成例について説明する。本発明における回路構成の特徴として、優先レベル認識回路１２３と優先レベル数カウント回路１２４とをＥＣＣ回路１１７と平行して設けることによって、図６に示す構成に比べて１クロック早く優先レベル数をカウントすることができる。
【００６５】
このため、スワップレベル決定回路１２０も１クロック早くスワップレベルを決定することが可能となるため、データ掃き出し命令生成回路にスワップ対象レベル情報を従来例の図５と同じタイミングで送出することが可能となる。つまり、メモリアクセスＴＡＴに影響を与えることなく、本発明の機能を実装可能としている。
【００６６】
ここで問題になるのは、優先レベル認識回路１２３に入力する信号としてＥＣＣ回路１１７による１ビットエラー訂正を行う前の読出しデータを入力しているため、確率的には低いが優先レベル認識を誤ってしまう可能性があるということである。
【００６７】
この場合、優先レベル数カウント回路１２４の結果が±１の誤差を含むこととなり、厳密には優先レベルの中からスワップレベルを決定するところを全１２レベルの中からスワップレベルを決定してしまうケースやそれとは逆に、全１２レベルの中からスワップレベルを決定するところを優先レベル３個（ｍ−１個）の中からスワップレベルを決定してしまうこともあり得る。
【００６８】
しかしながら、上記のケースでスワップレベルの決定に厳密さが欠けたとしても、もともとランダムな要素が大きいことから問題となることはなく、目的の機能を達成することができる。
【００６９】
近年のプロセッサでは、プログラムコードを主メモリからリードする場合に、プロセッサで読込んだデータを更新しないことを示すフラグ（以下、コマンドフラグとする）を付与してリード命令を発行する場合がある。並列処理等で複数のプロセッサで同じプログラムコードを使用するケースを想定すると、コピーキャッシュからスワップレベルを決定する際に、プログラムコード以外の一過性のデータ等をスワップレベルとして優先的に選択することによって、プロセッサで使用中のプログラムコードがスワップアウトされる可能性が減少して高速化につながることが考えられる。
【００７０】
このケースに対応するにはコピーキャッシュに格納する情報にコマンドフラグを加え、さらに優先レベル認識回路において規定数以下のアドレスのみ管理しているレベルを認識する部分をコマンドフラグ認識回路に置き換えて、コマンドフラグが有効でないレベルを優先レベルとして認識することによって実現可能である。
【００７１】
この他にも、特開２００３−３１６７５６号公報に記載のように複数のプロセッサが共有していることを示すステータス情報を持つレベルを優先的にコピーキャッシュからスワップアウトする方式もあり、この場合、プロセッサのキャッシュからダーティデータが出力されないため、Ｉ／Ｏ帯域有効利用に効果がある反面、管理下にある複数のプロセッサで共有していた命令コードがスワップアウトされると、共有していた全プロセッサでキャッシングされていた命令コードが無効になってしまい、この場合、キャッシュ利用効率が低下してしまうことが予想される。
【００７２】
このように、プログラムの特性によって理想的なスワップアウト処理は変わるため、優先レベル認識回路において規定数以下のアドレスのみ管理しているレベルをスワップ優先レベルとして認識する回路と、コマンドフラグが点灯していないレベルをスワップ優先レベルとして認識する回路と、共有されていることを示すステータスを持つレベルをスワップ優先レベルとして認識する回路の３つを組み込んでおき、３つの回路の中からプログラムアクセス可能なレジスタの設定値によって選択可能とする手段を持つことも可能である。
【００７３】
図８は図１のコピーキャッシュ１１ａから読出したキーアドレス、アドレス管理情報、ステータス情報を読出してからスワップ対象レベルを決定してデータ掃き出し命令生成回路（図示せず）に送るまでの他の構成を示すブロック図である。図８に示す構成は上述した３つの回路の中からプログラムアクセス可能なレジスタの設定値によって選択可能とする時の構成例を示している。
【００７４】
図８において、最初のクロックサイクルでセットアドレス１１０１によってコピーキャッシュ１１１から格納データを読出してレジスタ１３２で受ける。次のクロックサイクルでは、規定数以下のアドレスを管理しているレベルをスワップ優先レベルとして認識する回路１３３と、プログラムコード以外のアドレスを管理しているレベルをスワップ優先レベルとして認識する回路１３４と、複数プロセッサで共有していることを示すステータスを持つレベルをスワップ優先レベルとして認識する回路１３５と、自セル搭載のメモリアドレス帯に格納されているレベルをスワップ優先レベルとして認識する回路１３６とでそれぞれ処理が行われる。
【００７５】
１３１は優先モード切替レジスタで、プログラムがアクセス可能なレジスタである。優先モード切替レジスタ１３１の値によって４つの優先レベル認識回路１３３〜１３６の中の１つを選択器１３７で選択し、優先レベル数カウント回路１３８に送出する。優先レベル数カウント回路１３８以降の動作は上述した通りである。
【００７６】
このように、本実施例では、メモリアクセスＴＡＴを増加することなく、スワップ対象レベル選択時に管理アドレス数の少ないレベルを優先的にスワップし、プロセッサに対して発行されるデータ掃き出し命令数を削減することによって、通常命令が使用するＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）帯域を増加してデータ処理能力を向上させることができる。
【００７７】
また、本実施例では、優先対象レベル数をカウントして、その数が一定数以上である場合にのみ優先対象の中からスワップ対象レベルを決定する構成をとり、優先度の高いレベル数が少なくなった時にスワップ対象レベルが極端に集中してしまうことを防ぐことによって、性能低下を抑えることができる。
【００７８】
さらに、本実施例では、管理アドレス数の少ないレベルが優先してスワップされるため、管理アドレス数の大きいレベルの存在確率が上がり、これはコピーキャッシュの利用効率向上を意味するが、結果的にプロセッサが持っているコピーキャッシュの利用効率を向上させることになる。
【図面の簡単な説明】
【００７９】
【図１】本発明の一実施例によるマルチプロセッサシステムの構成を示すブロック図である。
【図２】図１のコピーキャッシュの構成を示すブロック図である。
【図３】図１のコヒーレンシ制御回路の動作を示すフローチャートである。
【図４】図３のスワップ対象レベル決定の処理を示すフローチャートである。
【図５】図１のコピーキャッシュから読出したキーアドレス、アドレス管理情報、ステータス情報を読出してからスワップ対象レベルを決定してデータ掃き出し命令生成回路に送るまでの構成を示すブロック図である。
【図６】図１のコピーキャッシュから読出したキーアドレス、アドレス管理情報、ステータス情報を読出してからスワップ対象レベルを決定してデータ掃き出し命令生成回路に送るまでの構成を示すブロック図である。
【図７】図１のコピーキャッシュから読出したキーアドレス、アドレス管理情報、ステータス情報を読出してからスワップ対象レベルを決定してデータ掃き出し命令生成回路に送るまでの構成を示すブロック図である。
【図８】図１のコピーキャッシュから読出したキーアドレス、アドレス管理情報、ステータス情報を読出してからスワップ対象レベルを決定してデータ掃き出し命令生成回路に送るまでの他の構成を示すブロック図である。
【符号の説明】
【００８０】
１，２  セル
１１，２１  コヒーレンシ制御回路
１１ａ，２１ａ  コピーキャッシュ
１２，１３，
２２，２３  プロセッサ
１２ａ，１３ａ，
２２ａ，２３ａ  キャッシュメモリ
１４，２４  主メモリ
１０１  第一バス
１０２  第二バス
１１１  コピーキャッシュ
１１２  リクエストアドレス
１１３  ステータス情報
１１４  複数アドレス管理情報
１１５  デコーダ
１１６，１１８，
１２２，１２５，
１２６，１３２，
１３９  レジスタ
１２３  優先レベル認識回路
１２４，１３８  優先レベル数カウント回路
１３１  優先モード切替レジスタ
１３３  規定数以下のアドレスを管理しているレベルをスワップ優先レベルとして認識する回路
１３４  プログラムコード以外のアドレスを管理しているレベルをスワップ優先レベルとして認識する回路
１３５  複数プロセッサで共有していることを示すステータスを持つレベルをスワップ優先レベルとして認識する回路
１３６  自セル搭載のメモリアドレス帯に格納されているレベルをスワップ優先レベルとして認識する回路
１３７  選択器
１１０１  セットアドレス
１１０２  キーアドレス
【図１】
2006330948.tif 000003
【図２】
2006330948.tif 000004
【図３】
2006330948.tif 000005
【図４】
2006330948.tif 000006
【図５】
2006330948.tif 000007
【図６】
2006330948.tif 000008
【図７】
2006330948.tif 000009
【図８】
2006330948.tif 000010