(57)【要約】【課題】マルチプロセッサシステムに関し，キャッシュリプレース要求によってグローバルバスに負荷がかかることを防ぐことが可能となる技術を提供する。【解決手段】ＣＰＵ１２０ａから発行されたリクエストは，ＣＰＵバス１３０ａ，ＣＰＵ発行リクエストキュー１１２ａを介し，ローカルアービタ１１３から出力される。キャッシュリプレース要求折り返し回路１４０は，折り返し判定回路１４１によって，出力されたリクエストがキャッシュリプレース要求か否かを判定する。キャッシュリプレース要求以外のリクエストは，ローカルバス３００ａに出力される。キャッシュリプレース要求は，セレクタ１４２に出力され，グローバルバス３０１に有効なリクエストがないタイミングで，リクエスト処理部１１４に送られる。【選択図】図１
2008046949.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとそのＣＰＵから発行されたリクエストに対する処理を行うリクエスト処理部とをそれぞれ有する複数のシステムボードと，各システムボードからのリクエストをアービトレーションするアドレスクロスバボードとを備えるマルチプロセッサシステムであって，
前記システムボードは，
自システムボードのＣＰＵから発行されたリクエストがキャッシュリプレース要求であるか否かを判定し，キャッシュリプレース要求でなければそのリクエストを前記アドレスクロスバボードに送り，キャッシュリプレース要求であればそのリクエストを自システムボード内部から前記アドレスクロスバボードに送ることなく，当該システムボード内にある前記リクエスト処理部に送るキャッシュリプレース要求折り返し回路を備える
ことを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１に記載されたマルチプロセッサシステムであって，
前記キャッシュリプレース要求折り返し回路は，
自システムボードのＣＰＵから発行されたキャッシュリプレース要求のリクエストを保持する折り返し部キューを備える
ことを特徴とするマルチプロセッサシステム。
【請求項３】
請求項２に記載されたマルチプロセッサシステムであって，
前記キャッシュリプレース要求折り返し回路は，前記折り返し部キューの全エントリにすでにキャッシュリプレース要求のリクエストが保持されているときに，自システムボードのＣＰＵから新たにキャッシュリプレース要求のリクエストが発行された場合に，前記折り返し部キューのいずれかのエントリに保持されたキャッシュリプレース要求のリクエストを，新たに発行されたキャッシュリプレース要求のリクエストで上書きする
ことを特徴とするマルチプロセッサシステム。
【請求項４】
ＣＰＵとそのＣＰＵから発行されたリクエストに対する処理を行うリクエスト処理部とをそれぞれ有する複数のシステムボードと，各システムボードからのリクエストをアービトレーションするアドレスクロスバボードとを備えるマルチプロセッサシステムにおけるシステムボードであって，
自システムボードのＣＰＵから発行されたリクエストがキャッシュリプレース要求であるか否かを判定し，キャッシュリプレース要求でなければそのリクエストを前記アドレスクロスバボードに送り，キャッシュリプレース要求であればそのリクエストを自システムボード内部から前記アドレスクロスバボードに送ることなく，当該システムボード内にある前記リクエスト処理部に送るキャッシュリプレース要求折り返し回路を備える
ことを特徴とするシステムボード。
【請求項５】
請求項４に記載されたシステムボードであって，
前記キャッシュリプレース要求折り返し回路は，
自システムボードのＣＰＵから発行されたキャッシュリプレース要求のリクエストを保持する折り返し部キューを備える
ことを特徴とするシステムボード。
【請求項６】
請求項５に記載されたシステムボードであって，
前記キャッシュリプレース要求折り返し回路は，前記折り返し部キューの全エントリにすでにキャッシュリプレース要求のリクエストが保持されているときに，自システムボードのＣＰＵから新たにキャッシュリプレース要求のリクエストが発行された場合に，前記折り返し部キューのいずれかのエントリに保持されたキャッシュリプレース要求のリクエストを，新たに発行されたキャッシュリプレース要求のリクエストで上書きする
ことを特徴とするシステムボード。
【請求項７】
ＣＰＵとそのＣＰＵから発行されたリクエストに対する処理を行うリクエスト処理部とをそれぞれ有する複数のシステムボードと，各システムボードからのリクエストをアービトレーションするアドレスクロスバボードとを備えるマルチプロセッサシステムによるキャッシュリプレース要求処理方法であって，
前記システムボードが，自システムボードのＣＰＵから発行されたリクエストがキャッシュリプレース要求であるか否かを判定する過程と，
前記システムボードが，前記発行されたリクエストがキャッシュリプレース要求でなければ，前記発行されたリクエストを前記アドレスクロスバボードに送る過程と，
前記システムボードが，前記発行されたリクエストがキャッシュリプレース要求であれば，前記発行されたリクエストを自システムボード内部から前記アドレスクロスバボードに送ることなく，当該システムボード内にある前記リクエスト処理部に送る過程とを有する
ことを特徴とするキャッシュリプレース要求処理方法。
【請求項８】
請求項７に記載されたキャッシュリプレース要求処理方法であって，
前記システムボードが，前記発行されたリクエストがキャッシュリプレース要求であれば，前記発行されたリクエストを，前記リクエスト処理部に送る前に，前記システムボードが備える折り返し部キューに保持する過程を有する
ことを特徴とするキャッシュリプレース要求処理方法。
【請求項９】
請求項８に記載されたキャッシュリプレース要求処理方法であって，
前記発行されたリクエストを前記折り返し部キューに保持する過程では，前記折り返し部キューの全エントリにすでにキャッシュリプレース要求のリクエストが保持されているときに，前記折り返し部キューのいずれかのエントリに保持されたキャッシュリプレース要求のリクエストを，前記発行されたキャッシュリプレース要求のリクエストで上書きする
ことを特徴とするキャッシュリプレース要求処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，マルチプロセッサシステムにおいて各ＣＰＵからのリクエストを制御する技術に関するものであり，特に，キャッシュリプレース要求を効率良く処理するマルチプロセッサシステム，システムボードおよびキャッシュリプレース要求処理方法に関するものである。
【背景技術】
【０００２】
近年，情報処理装置が各分野で広く利用されるようになったことに伴い，マルチプロセッサ構成のチップセットの処理能力の高さが求められるようになっている。
【０００３】
図１１は，マルチプロセッサシステムの構成例を示す図である。図１１に示すマルチプロセッサシステムは，４つのシステムボード１００（ａ〜ｄ）と，アドレスクロスバボード２００から構成されている。各システムボード１００（ａ〜ｄ）とアドレスクロスバボード２００とは，ローカルバス３００（ａ〜ｄ），グローバルバス３０１，ローカル通知パス３０２（ａ〜ｄ），グローバル通知パス３０３等で接続される。
【０００４】
システムボード１００ａは，システムコントローラ１１０と，４つのＣＰＵ１２０（ａ〜ｄ）とを備える。ＣＰＵ１２０ａとＣＰＵ１２０ｂはＣＰＵバス１３０ａで，ＣＰＵ１２０ｃとＣＰＵ１２０ｄはＣＰＵバス１３０ｃで，システムコントローラ１１０に接続される。システムボード１００（ｂ〜ｄ）も，システムボード１００ａと同様の構成となる。
【０００５】
各ＣＰＵ１２０（ａ〜ｄ）は，それぞれキャッシュメモリ１２１（ａ〜ｄ）と，キャッシュタグ１２２（ａ〜ｄ）とを備える。この例では，キャッシュメモリ１２１は，４Ｗａｙセットアソシアティブ方式で制御されているものとする。
【０００６】
システムコントローラ１１０は，スヌープタグ１１１（ａ〜ｄ），ＣＰＵ発行リクエストキュー１１２（ａ，ｃ），ローカルアービタ１１３，リクエスト処理部１１４，リクエスト実行部１１５を備える。
【０００７】
スヌープタグ１１１（ａ〜ｄ）は，それぞれキャッシュタグ１２２（ａ〜ｄ）に対応する。ＣＰＵ発行リクエストキュー１１２は，ＣＰＵ１２０が発行するリクエストをＣＰＵバス１３０ごとに保持する。ここでは，ＣＰＵ１２０（ａ，ｂ）が発行するリクエストをＣＰＵ発行リクエストキュー１１２ａが保持し，ＣＰＵ１２０（ｃ，ｄ）が発行するリクエストをＣＰＵ発行リクエストキュー１１２ｃが保持する。ローカルアービタ１１３は，ＣＰＵ発行リクエストキュー１１２に保持されたリクエストを，ローカルバス３００ａに出力する。
【０００８】
リクエスト処理部１１４は，グローバルバス３０１から送られてきたリクエストに対する処理を行う。リクエスト処理部１１４は，資源管理部１１６，リクエスト実行起動部１１７を備える。資源管理部１１６は，リクエストを処理するための資源等のチェックを行う。リクエスト実行起動部１１７は，リクエスト実行部１１５の起動や，スヌープタグ１１１の更新を行う。
【０００９】
アドレスクロスバボード２００は，グローバルアービタ２１０，実行可否判定回路２２０を備える。グローバルアービタ２１０は，ローカルバス３００（ａ〜ｄ）から入力されたリクエストを，グローバルバス３０１を介して，すべてのシステムボード１００（ａ〜ｄ）に出力する。実行可否判定回路２２０は，ローカル通知パス３０２（ａ〜ｄ）から入力された通知をもとにリクエストの実行の可否判定を行い，その結果とリクエストの実行に必要な情報とをグローバル通知パス３０３を介して各システムボード１００（ａ〜ｄ）に通知する。
【００１０】
ここで，ＣＰＵ１２０ａがリード要求を行う場合を例に，図１１に示すシステムの動作を説明する。ここでは，ＣＰＵ１２０ａが１０００番地のリードを行うものとする。なお，キャッシュコヒーレンシには，ＭＥＳＩプロトコルが用いられるものとする。ＭＥＳＩプロトコルは，キャッシュコヒーレンシプロトコルの一種であり，キャッシュの各ラインを，Ｍ（更新状態：Ｍｏｄｅｉｆｉｅｄ），Ｅ（排他状態：Ｅｘｃｌｕｓｉｖｅ），Ｓ（共有状態：Ｓｈａｒｅｄ），Ｉ（無効状態：Ｉｎｖａｌｉｄ）に分けて制御する。
【００１１】
ＣＰＵ１２０ａは，自身のキャッシュメモリ１２１ａに１０００番地のデータが存在するかを確認するために，まずキャッシュタグ１２２ａの検索を行う。検索の結果，自身のキャッシュメモリ１２１ａに有効なデータがないと判断すると，ＣＰＵ１２０ａは，ＣＰＵバス１３０ａにリード要求のリクエストを発行する。
【００１２】
ＣＰＵ１２０ａから発行されたリクエストはＣＰＵ発行リクエストキュー１１２ａ，ローカルアービタ１１３，ローカルバス３００ａを介し，グローバルアービタ２１０に入力される。グローバルアービタ２１０に入力されたリクエストは，グローバルバス３０１を介し，すべてのシステムボード１００（ａ〜ｄ）に同時に通知される。
【００１３】
システムボード１００ａでは，グローバルバス３０１からリクエスト処理部１１４にリクエストが入力される。リクエスト処理部１１４は，各スヌープタグ１１１を読み込み，リクエストを処理するための資源等があるかのチェックを資源管理部１１６によって行う。それらの結果は，ローカル通知パス３０２ａを介して実行可否判定回路２２０に送られる。
【００１４】
実行可否判定回路２２０は，すべてのローカル通知パス３０２（ａ〜ｄ）からの通知をもとにリクエスト実行の可否判定を行い，その結果とリクエストの実行に必要な情報とを，グローバル通知パス３０３を介して，リクエスト実行起動部１１７に通知する。リクエスト実行起動部１１７は，リクエスト実行の可否判定の結果とリクエストの実行に必要な情報とをもとに，スヌープタグ１１１の更新やリクエスト実行部１１５の起動を行う。
【００１５】
例えば，資源確保ができ，スヌープタグ１１１の検索結果がすべてＩｎｖａｌｉｄであった場合，リクエスト実行起動部１１７は，スヌープタグ１１１ａに１０００番地を登録する。なお，登録される状態は，発行リクエストによって決定される。同時に，リクエスト実行部１１５は，メモリの１０００番地のリードを行い，得られたデータをＣＰＵ１２０ａに送る。ＣＰＵ１２０ａは，キャッシュタグ１２２ａを更新する。
【００１６】
また，例えば，資源確保ができ，スヌープタグ１１１の検索結果，１０００番地がスヌープタグ１１１ｃにＭ（更新状態）で登録されていた場合，リクエスト実行起動部１１７は，スヌープタグ１１１ａに１０００番地を登録する。なお，登録される状態は，発行リクエストによって決定される。また，スヌープタグ１１１ｃの１０００番地の状態をＳ（共有状態）またはＩ（無効状態）に変更する。このときに変更される状態は発行リクエストによって決定される。同時に，リクエスト実行部１１５は，ＣＰＵ１２０ｃに１０００番地のＭデータを送出する指示を出し，出力されたデータをＣＰＵ１２０ａに送る。ＣＰＵ１２０ａはキャッシュタグ１２２ａを更新し，ＣＰＵ１２０ｃはキャッシュタグ１２２ｃを更新する。
【００１７】
図１２は，キャッシュリプレース要求への対応の例を説明する図である。図１２には，図１１において，ＣＰＵ１２０ａ，ＣＰＵ１２０ｂ，システムコントローラ１１０を中心としたシステムボード１００ａと，グローバルアービタ２１０を中心としたアドレスクロスバボード２００とに着目した例が示されている。ここでは，ＣＰＵ１２０ａがキャッシュリプレース要求を発行するものとする。
【００１８】
図１２において，太線矢印は，キャッシュリプレース要求が伝達されるルートを示す。ＣＰＵ１２０ａから発行されたキャッシュリプレース要求は，他のリクエストと同様に，ＣＰＵバス１３０ａ，ＣＰＵ発行リクエストキュー１１２ａ，ローカルアービタ１１３，ローカルバス３００ａ，グローバルアービタ２１０，グローバルバス３０１を介し，各システムボード１００（ａ〜ｄ）のシステムコントローラ１１０のリクエスト処理部１１４に伝えられる。
【００１９】
図１３は，Ｅｖｉｃｔｉｏｎを説明する図である。Ｅｖｉｃｔｉｏｎとは，システムコントローラ１１０側からＣＰＵ１２０に対してキャッシュの排出処理の指示を行うことである。以下，図１３の例を用いてＥｖｉｃｔｉｏｎを説明する。
【００２０】
まず，段階０に示すように，キャッシュタグ１２２とスヌープタグ１１１のある同一インデックスが，いずれも空であるものとする。このとき，ＣＰＵ１２０がＡ番地をリードすると，段階１に示すように，キャッシュタグ１２２，スヌープタグ１１１には，それぞれＡ番地が登録される。さらにＣＰＵ１２０がＢ番地，Ｃ番地，Ｄ番地と同一インデックスのリードを続けていくと，段階２に示すように，Ｗａｙフルとなる。
【００２１】
このようなＷａｙフルの状態において，ＣＰＵ１２０がさらに同一インデックスのＥ番地をリードしたい場合には，まずキャッシュタグ１２２内のいずれかのデータを消さなくてはならない。ここではＡ番地を消すものとする。ＣＰＵ１２０がキャッシュリプレース要求をサポートしておらず，かつＡ番地の状態がＭ（更新状態）でない場合には，ＣＰＵ１２０内でＡ番地のサイレントドロップが発生する。段階３に示すように，キャッシュタグ１２２のＡ番地が削除される。なお，サイレントドロップとは，他に通知することなくデータを削除することをいう。
【００２２】
同様に，ＣＰＵ１２０からのＥ番地のリードを受けたシステムコントローラ１１０でもＥ番地を登録することになるので，スヌープタグ１１１からいずれか１つのデータを消さなくてはならない。ここではＢ番地を消すものとする。このとき，“キャッシュタグ１２２にあるものはスヌープタグ１１１になくてはならない”というインクルージョンルールがあるため，システムコントローラ１１０は，自分が消したものをＣＰＵ１２０にも消させなくてはならないので，段階４に示すように，ＣＰＵ１２０に対して吐き出し要求を発行する必要がある。この吐き出し要求をＥｖｉｃｔｉｏｎと呼ぶ。最終的に，キャッシュタグ１２２とスヌープタグ１１１のいずれにも空きができるので，段階５に示すように，それぞれにＥ番地を登録することができる。
【００２３】
なお，マルチプロセッサシステムに関する技術が記載された先行技術文献としては，例えば特許文献１などがある。特許文献１には，各ノードがリング状に結合された多重プロセッサコンピュータシステムに関する技術が記載されている。ただし，特許文献１に記載された技術では，後述の課題を解決することはできない。
【特許文献１】特表２００２−５２２８２７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
多くのシステムボード１００から構成されるマルチプロセッサシステムでは，グローバルバス３０１に非常に大きな負荷がかかってしまい，そのグローバルバス３０１にキャッシュリプレース要求を流すと，その他のリクエストの処理能力が落ちてしまうという問題がある。また，キャッシュリプレース要求はその親となるリード要求より先に処理しないとＥｖｉｃｔｉｏｎが発生してしまう可能性があるため，本来のキャッシュリプレース要求の効果がなくなってしまうという問題がある。
【００２５】
本発明は，上記の問題点の解決を図り，キャッシュリプレース要求によってグローバルバスに負荷がかかることを防ぎ，不要なＥｖｉｃｔｉｏｎの発生を防ぐことが可能となる技術を提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明は，上記の課題を解決するため，マルチプロセッサシステムにおいて，システムボードは，自システムボードのＣＰＵから発行されたリクエストがキャッシュリプレース要求である場合に，そのリクエストをアドレスクロスバボードに送らず，自システムボード内部で折り返して処理することを特徴とする。
【００２７】
具体的には，本発明は，ＣＰＵとそのＣＰＵから発行されたリクエストに対する処理を行うリクエスト処理部とをそれぞれ有する複数のシステムボードと，各システムボードからのリクエストをアービトレーションするアドレスクロスバボードとを備えるマルチプロセッサシステムであって，システムボードは，自システムボードのＣＰＵから発行されたリクエストがキャッシュリプレース要求であるか否かを判定し，キャッシュリプレース要求でなければそのリクエストをアドレスクロスバボードに送り，キャッシュリプレース要求であればそのリクエストを自システムボード内部からリクエスト処理部に送るキャッシュリプレース要求折り返し回路を備えることを特徴とする。
【００２８】
これにより，キャッシュリプレース要求がグローバルバスに出力されなくなるので，グローバルバスのスループット負荷を軽減することが可能となる。また，キャッシュリプレース要求は自システムボード内で折り返されてその親となるリード要求より先に処理されるため，不要なＥｖｉｃｔｉｏｎの発生を防ぐことが可能となる。
【００２９】
また，本発明は，上記のマルチプロセッサシステムであって，キャッシュリプレース要求折り返し回路は，自システムボードのＣＰＵから発行されたキャッシュリプレース要求のリクエストを保持する折り返し部キューを備えることを特徴とする。これにより，グローバルバスが混雑してキャッシュリプレース要求をすぐに処理できない状態であっても，キャッシュリプレース要求以外のリクエストの発行が滞ることを防ぐことができる。
【００３０】
また，本発明は，上記のマルチプロセッサシステムであって，キャッシュリプレース要求折り返し回路は，折り返し部キューの全エントリにすでにキャッシュリプレース要求のリクエストが保持されているときに，自システムボードのＣＰＵから新たにキャッシュリプレース要求のリクエストが発行された場合に，折り返し部キューのいずれかのエントリに保持されたキャッシュリプレース要求のリクエストを，新たに発行されたキャッシュリプレース要求のリクエストで上書きすることを特徴とする。これにより，折り返し部キューのエントリ数が少なくても，キャッシュリプレース要求以外のリクエストの発行が滞ることを効果的に防ぐことができる。
【発明の効果】
【００３１】
本発明により，キャッシュリプレース要求によってグローバルバスに負荷がかかることを防ぎ，不要なＥｖｉｃｔｉｏｎの発生を防ぐことが可能となる。よって，キャッシュリプレース要求を効率的に処理することができるようになり，システム性能が向上する。
【発明を実施するための最良の形態】
【００３２】
以下，本発明の実施の形態について，図を用いて説明する。
【００３３】
図１は，本実施の形態によるマルチプロセッサシステムの構成例（１）を示す図である。図１の例のマルチプロセッサシステムは，図１１に示す構成において，特にＣＰＵ１２０ａ，ＣＰＵ１２０ａ，ＣＰＵ１２０ｂ，システムコントローラ１１０を中心としたシステムボード１００と，グローバルアービタ２１０を中心としたアドレスクロスバボード２００とに着目したものであり，その他の構成については従来技術と同様であるため省略している。
【００３４】
図１に示すマルチプロセッサシステムは，４つのシステムボード１００（ａ〜ｄ）と，アドレスクロスバボード２００から構成されている。各システムボード１００（ａ〜ｄ）とアドレスクロスバボード２００とは，ローカルバス３００（ａ〜ｄ），グローバルバス３０１等で接続される。
【００３５】
システムボード１００ａは，システムコントローラ１１０と，２つのＣＰＵ１２０（ａ，ｂ）とを備える。２つのＣＰＵ１２０（ａ，ｂ）はＣＰＵバス１３０ａでシステムコントローラ１１０に接続される。システムボード１００（ｂ〜ｄ）も，システムボード１００ａと同様の構成となる。
【００３６】
各ＣＰＵ１２０（ａ，ｂ）は，それぞれキャッシュメモリ１２１（ａ，ｂ）と，キャッシュタグ１２２（ａ，ｂ）とを備える。本実施の形態では，キャッシュメモリ１２１は，４Ｗａｙセットアソシアティブ方式で制御されているものとする。
【００３７】
システムコントローラ１１０は，ＣＰＵ発行リクエストキュー１１２ａ，ローカルアービタ１１３，リクエスト処理部１１４，キャッシュリプレース要求折り返し回路１４０を備える。
【００３８】
ＣＰＵ発行リクエストキュー１１２ａは，ＣＰＵ１２０（ａ，ｂ）が発行するリクエストを保持する。ローカルアービタ１１３は，ＣＰＵ発行リクエストキュー１１２ａに保持されたリクエストを，ローカルバス３００ａに出力する。リクエスト処理部１１４は，ＣＰＵ１２０から発行されたリクエストに対する処理を行う。
【００３９】
キャッシュリプレース要求折り返し回路１４０は，キャッシュリプレース要求のみをシステムコントローラ１１０内で折り返してリクエスト処理部１１４に送るための手段であり，折り返し判定回路１４１，セレクタ１４２を備える。折り返し判定回路１４１は，ローカルアービタ１１３から発行されたリクエストを，システムコントローラ１１０内部に折り返すキャッシュリプレース要求と，ローカルバス３００ａに出力するキャッシュリプレース要求以外のリクエストとに振り分ける。セレクタ１４２は，グローバルバス３０１に有効なリクエストがあれば，それをリクエスト処理部１１４に送り，グローバルバス３０１に有効なリクエストがなければ，キャッシュリプレース要求をリクエスト処理部１１４に送る。
【００４０】
アドレスクロスバボード２００は，グローバルアービタ２１０を備える。グローバルアービタ２１０は，ローカルバス３００（ａ〜ｄ）から入力されたリクエストを，グローバルバス３０１を介して，すべてのシステムボード１００（ａ〜ｄ）に出力する。
【００４１】
図１において，太線矢印は，キャッシュリプレース要求が伝達されるルートを示す。ここでは，ＣＰＵ１２０ａがキャッシュリプレース要求を発行するものとする。ＣＰＵ１２０ａから発行されたキャッシュリプレース要求は，ＣＰＵバス１３０ａ，ＣＰＵ発行リクエストキュー１１２ａ，ローカルアービタ１１３，折り返し判定回路１４１，セレクタ１４２を介し，リクエスト処理部１１４に伝えられる。リード要求などのキャッシュリプレース要求以外のリクエストは，ローカルバス３００ａからグローバルアービタ２１０，グローバルバス３０１を介して各システムボード１００（ａ〜ｄ）のセレクタ１４２に入力される。
【００４２】
キャッシュリプレース要求は，他のリクエストとは異なり，アドレスクロスバボード２００を経由しない。キャッシュリプレース要求は，発行元であるＣＰＵ１２０に対応するスヌープタグ１１１の該当アドレス部分をＩ（無効状態）にする命令であるため，自システムボード１００以外には伝達する必要がない。
【００４３】
図２は，キャッシュリプレース要求折り返し回路の例（１）を説明する図である。ローカルアービタ１１３から発行されるリクエストの信号は，バリッド信号（Ｖ），オペレーションコード（ＯＰ），その他アドレス等（ＡＤＲ等）からなる。折り返し判定回路１４１は，キャッシュリプレース要求判定回路１５０，ＡＮＤ回路１５１，ＡＮＤ回路１５２から構成される。
【００４４】
キャッシュリプレース要求判定回路１５０は，ローカルアービタ１１３から発行されたリクエストのオペレーションコード（ＯＰ）でキャッシュリプレース要求か否かを判定する。キャッシュリプレース要求であれば有効信号を送り，キャッシュリプレース要求でなければ無効信号を送る。ＡＮＤ回路１５１は，キャッシュリプレース要求判定回路１５０からの信号を反転して受け取り，ＡＮＤ回路１５２は，キャッシュリプレース要求判定回路１５０からの信号をそのまま受け取る。
【００４５】
ＡＮＤ回路１５１は，ローカルアービタ１１３から発行されたリクエストのバリッド信号（Ｖ）が有効であり，かつキャッシュリプレース要求判定回路１５０からの信号を反転したものが有効であれば，有効信号を発信する。それ以外の場合には無効信号を発信する。ＡＮＤ回路１５１から発信されたバリッド信号（Ｖ）と，ローカルアービタ１１３から発行されたリクエストのオペレーションコード（ＯＰ）およびその他アドレス等（ＡＤＲ等）とからなるリクエストの信号は，ローカルバス３００に出力される。
【００４６】
ＡＮＤ回路１５２は，ローカルアービタ１１３から発行されたリクエストのバリッド信号（Ｖ）が有効であり，かつキャッシュリプレース要求判定回路１５０からの信号が有効であれば，有効信号を発信する。それ以外の場合には無効信号を発信する。ＡＮＤ回路１５２から発信されたバリッド信号（Ｖ）と，ローカルアービタ１１３から発行されたリクエストのオペレーションコード（ＯＰ）およびその他アドレス等（ＡＤＲ等）とからなるリクエストの信号は，セレクタ１４２に出力される。
【００４７】
セレクタ１４２は，グローバルアービタ２１０から出力されたリクエストのバリッド信号（Ｖ）が有効“１”であれば，グローバルアービタ２１０から出力されたリクエスト（キャッシュリプレース要求以外）をリクエスト処理部１１４に送る。グローバルアービタ２１０から出力されたリクエストのバリッド信号（Ｖ）が無効“０”であれば，すなわちグローバルバス３０１に空きがあれば，折り返し判定回路１４１から出力されたリクエスト（キャッシュリプレース要求）をリクエスト処理部１１４に送る。
【００４８】
図３は，本実施の形態によるキャッシュリプレース要求折り返し処理フローチャート（１）である。ローカルアービタ１１３がローカルバス３００に発行するリクエストを選択すると（ステップＳ１０），キャッシュリプレース要求折り返し回路１４０は，選択されたリクエストがキャッシュリプレース要求であるか否かを判定する（ステップＳ１１）。選択されたリクエストがキャッシュリプレース要求でなければ，ローカルバス３００に選択されたリクエストを送信する（ステップＳ１２）。
【００４９】
ステップＳ１１の判定において，選択されたリクエストがキャッシュリプレース要求であれば，グローバルバス３０１に有効なリクエストがあるかを判定する（ステップＳ１３）。グローバルバス３０１に有効なリクエストがなければ，ステップＳ１０で選択されたリクエスト（キャッシュリプレース要求）をセレクタ１４２で選択する（ステップＳ１４）。
【００５０】
ステップＳ１３の判定において，グローバルバス３０１に有効なリクエストがあれば，そのグローバルバス３０１からのリクエストをセレクタ１４２で選択する（ステップＳ１５）。このとき，ステップＳ１０で選択されたリクエスト（キャッシュリプレース要求）は発行不可となる（ステップＳ１６）。その発行は，次回以降に持ち越される。
【００５１】
図４は，キャッシュリプレース要求をシステムコントローラ内部に折り返すことの効果を説明する図である。図４において，“Ｒｅａｄ”はリード要求を示し，“Ｒｅｐｌａｃｅ”はキャッシュリプレース要求を示す。
【００５２】
図４（Ａ）に示すように，各システムボード１００（ａ〜ｄ）から，それぞれがグローバルバス３０１で使用率の２０％を占めることとなるリード要求が発行されるものとすると，グローバルバス３０１の使用率は，合計で８０％となる。
【００５３】
ここで，さらに各システムボード１００（ａ〜ｄ）から，リード要求と同時に，それぞれがグローバルバス３０１の使用率の２０％を占めるキャッシュリプレース要求が発行されるものとする。システムボード１００にキャッシュリプレース要求折り返し回路１４０がない場合には，キャッシュリプレース要求もリード要求と同様に，ローカルバス３００，アドレスクロスバボード２００，グローバルバス３０１へと伝送される。すべてのリクエストが同時にグローバルバス３０１に流れ込むものとすると，使用率の合計は，
（〔Ｒｅａｄの使用率〕＋〔Ｒｅｐｌａｃｅの使用率〕）×〔システムボード数〕
＝（２０＋２０）×４＝１６０［％］
となり，グローバルバス３０１のスループットを超えてしまう。そのため，図４（Ｂ）に示すように，リード性能が１２．５％まで落ちてしまう。
【００５４】
これに対し，システムボード１００にキャッシュリプレース要求折り返し回路１４０がある場合には，キャッシュリプレース要求がグローバルバス３０１に流れ込まないので，グローバルバス３０１の性能は劣化しない。図４（Ｃ）に示すように，キャッシュリプレース要求は，システムボード１００内で折り返される。グローバルバス３０１の性能は８０％を保ち，空いている２０％にシステムボード１００内で折り返されたキャッシュリプレース要求をセレクタ１４２でマージする形になるので，性能劣化は発生しない。
【００５５】
図５は，本実施の形態によるマルチプロセッサシステムの構成例（２）を示す図である。図５の例のマルチプロセッサシステムは，図１に示す構成において，さらにキャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３が設けられた構成となっている。折り返し部キュー１４３は，ローカルアービタ１１３から出力されたキャッシュリプレース要求を保持する。
【００５６】
図５において，太線矢印は，キャッシュリプレース要求が伝達されるルートを示す。ここでは，ＣＰＵ１２０ａがキャッシュリプレース要求を発行するものとする。ＣＰＵ１２０ａから発行されたキャッシュリプレース要求は，ＣＰＵバス１３０ａ，ＣＰＵ発行リクエストキュー１１２ａ，ローカルアービタ１１３，折り返し判定回路１４１を介し，折り返し部キュー１４３に保持される。セレクタ１４２は，グローバルバス３０１に有効なリクエストがないタイミングで，折り返し部キュー１４３に保持されたキャッシュリプレース要求をリクエスト処理部１１４に送り出す。
【００５７】
図６は，キャッシュリプレース要求折り返し回路の例（２）を説明する図である。図６に示す折り返し判定回路１４１は，図２に示す折り返し判定回路１４１と同様に動作する。ただし，ＡＮＤ回路１５２から発信されたバリッド信号（Ｖ）と，ローカルアービタ１１３から発行されたリクエストのオペレーションコード（ＯＰ）およびその他アドレス等（ＡＤＲ等）とからなるリクエストの信号は，折り返し部キュー１４３に保持される。なお，グローバルアービタ２１０から出力されたリクエストのバリッド信号（Ｖ）が無効“０”であるときに，折り返し部キュー１４３が空である場合には，キャッシュリプレース要求のリクエストは，折り返し部キュー１４３で保持されずに，セレクタ１４４を介してセレクタ１４２に送られる。
【００５８】
セレクタ１４２は，グローバルアービタ２１０から出力されたリクエストのバリッド信号（Ｖ）が有効“１”であれば，グローバルアービタ２１０から出力されたリクエスト（キャッシュリプレース要求以外）をリクエスト処理部１１４に送る。グローバルアービタ２１０から出力されたリクエストのバリッド信号（Ｖ）が無効“０”であれば，折り返し部キュー１４３に保持されたリクエスト（キャッシュリプレース要求）をリクエスト処理部１１４に送る。
【００５９】
図７は，本実施の形態によるキャッシュリプレース要求折り返し処理フローチャート（２）である。なお，ここでは，図６のセレクタ１４４の機能を，セレクタ１４２に含めて説明する。
【００６０】
ローカルアービタ１１３がローカルバス３００に発行するリクエストを選択すると（ステップＳ２０），キャッシュリプレース要求折り返し回路１４０は，選択されたリクエストがキャッシュリプレース要求であるか否かを判定する（ステップＳ２１）。選択されたリクエストがキャッシュリプレース要求でなければ，ローカルバス３００に選択されたリクエストを送信する（ステップＳ２２）。
【００６１】
ステップＳ２１の判定において，選択されたリクエストがキャッシュリプレース要求であれば，グローバルバス３０１に有効なリクエストがあるかを判定する（ステップＳ２３）。グローバルバス３０１に有効なリクエストがなく，折り返し部キュー１４３が空であれば（ステップＳ２４でＹＥＳの場合），ステップＳ２０で選択されたリクエスト（キャッシュリプレース要求）をセレクタ１４２で選択し，リクエスト処理部１１４へ送る（ステップＳ２５）。
【００６２】
折り返し部キュー１４３が空でなければ（ステップＳ２４でＮＯの場合），折り返し部キュー１４３に保持されたリクエスト（キャッシュリプレース要求）をセレクタ１４２で選択し（ステップＳ２６），その選択されたリクエストを折り返し部キュー１４３から削除する（ステップＳ２７）。ステップＳ２０で選択されたリクエストを，折り返し部キュー１４３に保持する（ステップＳ２８）。
【００６３】
ステップＳ２３の判定において，グローバルバス３０１に有効なリクエストがあれば，そのグローバルバス３０１からのリクエストをセレクタ１４２で選択し，リクエスト処理部１１４へ送る（ステップＳ２９）。このとき，折り返し部キュー１４３がフルでなければ（ステップＳ３０でＮＯの場合），ステップＳ２０で選択されたリクエストを，折り返し部キュー１４３に保持する（ステップＳ２８）。
【００６４】
折り返し部キュー１４３がフルであれば（ステップＳ３０でＹＥＳの場合），ステップＳ２０で選択されたリクエスト（キャッシュリプレース要求）は発行不可となる（ステップＳ３１）。その発行は次回以降に持ち越される。
【００６５】
図８は，キャッシュリプレース要求折り返し回路に折り返し部キューが設けられたことの効果を説明する図である。図８（Ａ）は，キャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３が設けられていない場合の例を示し，図８（Ｂ）は，キャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３が設けられた場合の例を示す。図８において，横に並んだ数字は時間の進行を示す。ここでは，時間＃１に，キャッシュリプレース要求（Ｒｅｐｌａｃｅ１），キャッシュリプレース要求（Ｒｅｐｌａｃｅ２），リード要求（Ｒｅａｄ１）の順に，ローカルアービタ１１３からリクエストが出力可能な状態となっている。グローバルバス３０１の“Ｖａｌｉｄ”は，その時間にグローバルバス３０１に有効なリクエストがあることを示す。
【００６６】
キャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３が設けられていない場合には，キャッシュリプレース要求を一時的に保持することができない。そのため，図８（Ａ）に示すように，キャッシュリプレース要求（Ｒｅｐｌａｃｅ１）は，グローバルバス３０１に有効なリクエストがない時間＃４に，はじめてセレクタ１４２からリクエスト処理部１１４に送られることとなる。同様に，キャッシュリプレース要求（Ｒｅｐｌａｃｅ２）は，時間＃６にセレクタ１４２からリクエスト処理部１１４に送られる。リード要求（Ｒｅａｄ１）は，時間＃７になって，やっとローカルバス３００に出力されることとなる。
【００６７】
このように，キャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３が設けられていない場合には，リード要求の発行が遅れてしまう。
【００６８】
これに対してキャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３が設けられた場合には，図８（Ｂ）に示すように，キャッシュリプレース要求（Ｒｅｐｌａｃｅ１）は，グローバルバス３０１に有効なリクエストがあるかないかに関係なく，時間＃２に折り返し部キュー１４３に保持される。折り返し部キュー１４３に保持されたキャッシュリプレース要求（Ｒｅｐｌａｃｅ１）は，グローバルバス３０１に有効なリクエストがない時間＃４に，セレクタ１４２からリクエスト処理部１１４に送られることとなる。同様に，キャッシュリプレース要求（Ｒｅｐｌａｃｅ２）は，時間＃３に折り返し部キュー１４３に保持され，時間＃６にセレクタ１４２からリクエスト処理部１１４に送られる。リード要求（Ｒｅａｄ１）は，時間＃４にはローカルバス３００に出力されることとなる。
【００６９】
このように，キャッシュリプレース要求折り返し回路１４０に折り返し部キュー１４３を設けることにより，ローカルアービタ１１３でキャッシュリプレース要求の発行を待つ必要がないので，リード要求の発行を早めることが可能となる。
【００７０】
ここまでは，折り返し部キュー１４３が上書き機能を持たないことを前提に説明したが，折り返し部キュー１４３が上書き機能を持つことも可能である。図５，図６に示す構成において，折り返し部キュー１４３のエントリがフルのときに新たにローカルアービタ１１３からキャッシュリプレース要求が発行されると，折り返し部キュー１４３では，１エントリのキャッシュリプレース要求が削除され，新たに発行されたキャッシュリプレース要求が保持される。折り返し部キュー１４３に上書き機能を持たせることで，折り返し部キュー１４３のエントリ数を少なくすることができる。
【００７１】
図９は，本実施の形態によるキャッシュリプレース要求折り返し処理フローチャート（３）である。なお，ここでは，図６のセレクタ１４４の機能を，セレクタ１４２に含めて説明する。
【００７２】
ローカルアービタ１１３がローカルバス３００に発行するリクエストを選択すると（ステップＳ４０），キャッシュリプレース要求折り返し回路１４０は，選択されたリクエストがキャッシュリプレース要求であるか否かを判定する（ステップＳ４１）。選択されたリクエストがキャッシュリプレース要求でなければ，ローカルバス３００に選択されたリクエストを送信する（ステップＳ４２）。
【００７３】
ステップＳ４１の判定において，選択されたリクエストがキャッシュリプレース要求であれば，グローバルバス３０１に有効なリクエストがあるかを判定する（ステップＳ４３）。グローバルバス３０１に有効なリクエストがなく，折り返し部キュー１４３が空であれば（ステップＳ４４でＹＥＳの場合），ステップＳ４０で選択されたリクエスト（キャッシュリプレース要求）をセレクタ１４２で選択し，リクエスト処理部１１４へ送る（ステップＳ４５）。
【００７４】
折り返し部キュー１４３が空でなければ（ステップＳ４４でＮＯの場合），折り返し部キュー１４３に保持されたリクエスト（キャッシュリプレース要求）をセレクタ１４２で選択してリクエスト処理部１１４へ送り（ステップＳ４６），その選択されたリクエストを折り返し部キュー１４３から削除する（ステップＳ４７）。ステップＳ４０で選択されたリクエストを，折り返し部キュー１４３に保持する（ステップＳ４８）。
【００７５】
グローバルバス３０１に有効なリクエストがあれば（ステップＳ４３でＹＥＳの場合），そのグローバルバス３０１からのリクエストをセレクタ１４２で選択し，リクエスト処理部１１４へ送る（ステップＳ４９）。このとき，折り返し部キュー１４３がフルでなければ（ステップＳ５０でＮＯの場合），ステップＳ４０で選択されたリクエストを，折り返し部キュー１４３に保持する（ステップＳ４８）。
【００７６】
折り返し部キュー１４３がフルであれば（ステップＳ５０でＹＥＳの場合），折り返し部キュー１４３の１エントリのリクエストを削除し（ステップＳ５１），ステップＳ４０で選択されたリクエストを，折り返し部キュー１４３に保持する（ステップＳ４８）。
【００７７】
図１０は，折り返し部キューが上書き機能を持つ場合の効果を説明する図である。図１０（Ａ）は，折り返し部キュー１４３が上書き機能を持たない場合の例を示し，図１０（Ｂ）は，折り返し部キュー１４３が上書き機能を持つ場合の例を示す。図１０において，横に並んだ数字は時間の進行を示す。ここでは，時間＃１に，キャッシュリプレース要求（Ｒｅｐｌａｃｅ１），キャッシュリプレース要求（Ｒｅｐｌａｃｅ２），キャッシュリプレース要求（Ｒｅｐｌａｃｅ３），リード要求（Ｒｅａｄ１）の順に，ローカルアービタ１１３からリクエストが出力可能な状態となっている。グローバルバス３０１の“Ｖａｌｉｄ”は，その時間にグローバルバス３０１に有効なリクエストがあることを示す。なお，折り返し部キュー１４３のエントリ数は，２個であるものとする。
【００７８】
折り返し部キュー１４３が上書き機能を持たない場合には，図１０（Ａ）に示すように，キャッシュリプレース要求（Ｒｅｐｌａｃｅ１）は，時間＃２に折り返し部キュー１４３に保持され，同様に，キャッシュリプレース要求（Ｒｅｐｌａｃｅ２）は，時間＃３に折り返し部キュー１４３に保持される。
【００７９】
ここで，折り返し部キュー１４３のエントリに空きがないため，キャッシュリプレース要求（Ｒｅｐｌａｃｅ３）を，ローカルアービタ１１３から出力することができない。折り返し部キュー１４３に保持されたキャッシュリプレース要求（Ｒｅｐｌａｃｅ１）は，グローバルバス３０１に有効なリクエストがない時間＃６に，セレクタ１４２からリクエスト処理部１１４に送られることとなる。時間＃７になってやっとキャッシュリプレース要求（Ｒｅｐｌａｃｅ３）が折り返し部キュー１４３に保持され，リード要求（Ｒｅａｄ１）は，時間＃８にローカルバス３００に出力されることとなる。
【００８０】
このように，折り返し部キュー１４３が上書き機能を持たない場合には，折り返し部キュー１４３に空きがなくなったときに，リード要求の発行が遅れてしまう。
【００８１】
これに対して折り返し部キュー１４３が上書き機能を持つ場合には，図１０（Ｂ）に示すように，折り返し部キュー１４３に空きがなくても，キャッシュリプレース要求（Ｒｅｐｌａｃｅ３）を，時間＃４に折り返し部キュー１４３に上書きで保持することができる。このとき，キャッシュリプレース要求（Ｒｅｐｌａｃｅ１）が上書きにより消滅するが，システムがＥｖｉｃｔｉｏｎ機能を実装していれば問題はない。上書きされたキャッシュリプレース要求（Ｒｅｐｌａｃｅ１）に対応するリード要求は，キャッシュリプレース要求なしのリード要求として扱われる。リード要求（Ｒｅａｄ１）は，時間＃５にはローカルバス３００に出力されることとなる。
【００８２】
このように，折り返し部キュー１４３が上書き機能を持つ場合には，折り返し部キュー１４３に空きがなくなったときでも，リード要求の発行を早めることが可能となる。また，折り返し部キュー１４３が上書き機能を持つ場合には，折り返し部キュー１４３に多くのエントリを用意しなくても，リードの発行能力は落ちない。逆に折り返し部キュー１４３のエントリ数が多くなるとそこでの滞在時間が延びてしまうため，キャッシュリプレース要求が，グローバルバス３０１経由の親リード要求より後に処理されるようになってしまうことも考えられる。そのため，折り返し部キュー１４３のエントリ数は，より少ないほうが望ましい。
【００８３】
以上，本発明の実施の形態について説明したが，本発明はこれに限られるものではない。例えば，本実施の形態では，折り返し部キュー１４３がフルのときに新たにキャッシュリプレース要求を発行された場合に，折り返し部キュー１４３に保持されたキャッシュリプレース要求を発行されたキャッシュリプレース要求で上書きしているが，新たに発行されたキャッシュリプレース要求の方を破棄するようにしてもよい。
【図面の簡単な説明】
【００８４】
【図１】本実施の形態によるマルチプロセッサシステムの構成例（１）を示す図である。
【図２】キャッシュリプレース要求折り返し回路の例（１）を説明する図である。
【図３】本実施の形態によるキャッシュリプレース要求折り返し処理フローチャート（１）である。
【図４】キャッシュリプレース要求をシステムコントローラ内部に折り返すことの効果を説明する図である。
【図５】本実施の形態によるマルチプロセッサシステムの構成例（２）を示す図である。
【図６】キャッシュリプレース要求折り返し回路の例（２）を説明する図である。
【図７】本実施の形態によるキャッシュリプレース要求折り返し処理フローチャート（２）である。
【図８】キャッシュリプレース要求折り返し回路に折り返し部キューが設けられたことの効果を説明する図である。
【図９】本実施の形態によるキャッシュリプレース要求折り返し処理フローチャート（３）である。
【図１０】折り返し部キューが上書き機能を持つ場合の効果を説明する図である。
【図１１】マルチプロセッサシステムの構成例を示す図である。
【図１２】キャッシュリプレース要求への対応の例を説明する図である。
【図１３】Ｅｖｉｃｔｉｏｎを説明する図である。
【符号の説明】
【００８５】
１００  システムボード
１１０  システムコントローラ
１１２  ＣＰＵ発行リクエストキュー
１１３  ローカルアービタ
１１４  リクエスト処理部
１２０  ＣＰＵ
１２１  キャッシュメモリ
１２２  キャッシュタグ
１３０  ＣＰＵバス
１４０  キャッシュリプレース要求折り返し回路
１４１  折り返し判定回路
１４２  セレクタ
１４３  折り返し部キュー
２００  アドレスクロスバボード
２１０  グローバルアービタ
３００  ローカルバス
３０１  グローバルバス
【図１】
2008046949.tif 000003
【図２】
2008046949.tif 000004
【図３】
2008046949.tif 000005
【図４】
2008046949.tif 000006
【図５】
2008046949.tif 000007
【図６】
2008046949.tif 000008
【図７】
2008046949.tif 000009
【図８】
2008046949.tif 000010
【図９】
2008046949.tif 000011
【図１０】
2008046949.tif 000012
【図１１】
2008046949.tif 000013
【図１２】
2008046949.tif 000014
【図１３】
2008046949.tif 000015