(57)【要約】【課題】配線混雑によりチップ面積が大きくなるのを防止するようにバスを構成して制御するバス制御装置を提供すること。【解決手段】調停部２１は、複数のマスタ１〜Ｎ（１−１〜１−Ｎ）からのアクセス要求を調停する。スレーブアクセス制御部２３は、スレーブ４に対して調停部２１によって調停されたアクセスを行なう。そして、バス制御装置２が片方向のリードバスＲＤとライトバスＷＤ１〜ＷＤＮとによって複数のマスタ１〜Ｎ（１−１〜１−Ｎ）と接続され、ライトバスＷＤ１〜ＷＤＮのバス幅がリードバスＲＤのバス幅よりも狭くなるように構成される。したがって、配線混雑によりチップ面積が大きくなるのを防止することが可能になるという効果がある。【選択図】図１
2009042992.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムにおいて複数のプロセッサからスレーブへのアクセス要求を制御するバス制御装置であって、
前記複数のプロセッサからのアクセス要求を調停する調停手段と、
前記スレーブに対して前記調停手段によって調停されたアクセスを行なうアクセス制御手段とを含み、
前記バス制御装置が片方向のリードバスとライトバスとによって前記複数のプロセッサと接続され、前記ライトバスのバス幅が前記リードバスのバス幅よりも狭くなるように構成される、バス制御装置。
【請求項２】
前記バス制御装置はさらに、ライトデータを記憶するライトデータ記憶手段を含み、
前記アクセス制御手段は、プロセッサから出力される複数回のライトデータを前記ライトバスを介して前記ライトデータ記憶手段に書込み、前記ライトデータ記憶手段に書込まれたライトデータを一度に前記スレーブに書込む、請求項１記載のバス制御装置。
【請求項３】
前記バス制御装置はさらに、前記調停手段によって調停されたアクセス要求に対応したスヌープ要求を前記複数のプロセッサに対して発行するスヌープ制御手段と、
スヌープデータを記憶するスヌープデータ記憶手段とを含み、
前記スヌープ制御手段は、スヌープヒットしたプロセッサから出力される複数回のスヌープデータを前記ライトバスを介して前記スヌープデータ記憶手段に書込み、前記スヌープデータ記憶手段に書込まれたスヌープデータを前記リードバスを介して一度にアクセス要求を出したプロセッサに出力する、請求項２記載のバス制御装置。
【請求項４】
前記スヌープ制御手段は、アクセス要求を出したプロセッサから出力される複数回のライトデータを前記ライトバスを介して前記スヌープデータ記憶手段に書込み、前記スヌープデータ記憶手段に書込まれたライトデータを前記リードバスを介して一度にスヌープヒットしたプロセッサに出力する、請求項３記載のバス制御装置。
【請求項５】
前記スヌープヒットしたプロセッサは、ダーティな状態でデータをキャッシュラインに保持するプロセッサである、請求項３または４記載のバス制御装置。
【請求項６】
前記ライトデータ記憶手段への書込みと、前記スヌープデータ記憶手段への書込みとが異なるプロセッサによって異なるライトバスを介して並行に行なわれる、請求項３〜５のいずれかに記載のバス制御装置。
【請求項７】
前記ライトデータ記憶手段への書込みと、前記スヌープデータ記憶手段への書込みとが同じプロセッサによって同じライトバスを介して並行に行なわれる、請求項３〜５のいずれかに記載のバス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおいてバスを制御する技術に関し、特に、リードバスとライトバスとを別々の片方向のバスとし、ライトバスの配線混雑を防止するようにバスを構成して制御するバス制御装置に関する。
【背景技術】
【０００２】
近年、プロセッサによる処理性能の向上を図るために、マルチプロセッサシステムの開発が盛んに行なわれている。このようなマルチプロセッサシステムにおいては、複数のプロセッサ（以下、マスタとも呼ぶ。）が共有のメインメモリ（以下、スレーブとも呼ぶ。）にアクセスできるように共有バス結合とされるのが一般的である。
【０００３】
このような共有バス結合においては、２種類のバス結合方法が存在する。その１つの方法は、リードバスとライトバスとを１本の双方向バスとし、リードデータとライトデータとが衝突しないようにバスの制御を行なうものである。この方法では、バスの本数を減らすことができるため、チップ面積を小さくすることが可能である。
【０００４】
他の方法は、リードバスとライトバスとを別々の片方向バスとするものである。この方法では、それぞれのバスのデータ転送を効率的に行なえるサイズが決まっており、キャッシュのラインサイズと等しい幅を持つことが多い。リードとライトとを独立にすることで、スレーブからデータを読出しているときにもデータ書込みが行なえるため、処理性能が向上する。これらに関連する技術として、下記の特許文献１に開示された発明がある。
【０００５】
特許文献１に開示されたマルチプロセッサシステムは、Ｍ個のＣＰＵカードと、これらを接続する単方向のＣＰＵカード間接続インタフェースとを備えている。ＣＰＵカード間制御回路は、命令送出回路と、調停回路とを有している。命令送出回路は、複数のプロセッサからの主記憶装置に対する複数の命令を受けた時にそれぞれＮ個の分割命令に分割し、これらのＮ個の分割命令をＮサイクルに分割してＣＰＵカード間接続インタフェースに送出する。調停回路は、ＣＰＵカードからの分割命令を受けた時に、これらの分割命令を調停してシリアル化し、命令を再生して主記憶制御回路に与える。
【特許文献１】特開２０００−２６８００９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のように、リードバスとライトバスとを１本の双方向バスとした場合には、バスの本数を減らすことができるという利点があるが、スレーブからデータを読出しているときにはデータ書込みが行なえないため、処理性能が低下するといった問題点がある。また、データ転送速度を上げるためには、ハイインピーダンス制御を行なう必要があり、バッファ挿入により処理速度の向上が図れないといった問題点もある。
【０００７】
また、リードバスとライトバスとを別々の片方向バスとした場合には、処理性能を向上させることができるといった利点があるが、複数のマスタから出力されるライトデータの中から１つを選択するときにバス幅が広いと選択論理が大きくなり、チップ面積が大きくなったり、配線混雑により配線が不可能になったりするといった問題点がある。
【０００８】
また、上述の特許文献１には、リードバスとライトバスとを１本の双方向バスとするものと、リードバスとライトバスとを別々の単方向バスとするものとが開示されているが、上述のそれぞれの問題点を解決することはできない。
【０００９】
本発明は、上記問題点を解決するためになされたものであり、その目的は、配線混雑によりチップ面積が大きくなるのを防止するようにバスを構成して制御するバス制御装置を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一実施例によれば、マルチプロセッサシステムにおいて複数のマスタからスレーブへのアクセス要求を制御するバス制御装置が提供される。調停部は、複数のマスタからのアクセス要求を調停する。スレーブアクセス制御部は、スレーブに対して調停部によって調停されたアクセスを行なう。そして、バス制御装置が片方向のリードバスとライトバスとによって複数のマスタと接続され、ライトバスのバス幅がリードバスのバス幅よりも狭くなるように構成される。
【発明の効果】
【００１１】
この実施例によれば、バス制御装置が片方向のリードバスとライトバスとによって複数のマスタと接続され、ライトバスのバス幅がリードバスのバス幅よりも狭くなるように構成されるので、配線混雑によりチップ面積が大きくなるのを防止することが可能になるという効果がある。
【発明を実施するための最良の形態】
【００１２】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるバス制御部（以下、バス制御装置とも呼ぶ。）を含んだマルチプロセッサシステムの構成例を示す図である。このマルチプロセッサシステムは、複数のマスタ１〜Ｎ（１−１〜１−Ｎ）と、バス制御部２と、スレーブ制御部３と、スレーブ４とを含む。
【００１３】
また、マスタ１〜Ｎ（１−１〜１−Ｎ）のそれぞれは、ＣＰＵ（Central Processing Unit）１１と、命令コードを保持するＩキャッシュ１２と、オペランド（データ）を保持するＤキャッシュ１３とを含む。各キャッシュのラインサイズは１２８ビットであり、キャッシュフィルなどのアクセスは１２８ビット単位で行なう。
【００１４】
マスタ１〜Ｎ（１−１〜１−Ｎ）は、スレーブ４に対するアクセスを行なう場合、要求１〜Ｎを出力する。各要求には、リクエスト信号、リード／ライト信号、バイトコントロール信号、バースト（アクセスデータが１２８ビットであることを示す）信号など、要求に付随する情報が含まれる。
【００１５】
マスタ１〜Ｎ（１−１〜１−Ｎ）は、１２８ビットのＲＤバスを介してスレーブ４からのデータを読出す。また、マスタ１〜Ｎ（１−１〜１−Ｎ）は、それぞれ３２ビットのＷＤ１〜ＷＤＮを介してスレーブ４にデータを書込む。
【００１６】
バス制御部２は、複数のマスタ１〜Ｎ（１−１〜１−Ｎ）からの要求１〜Ｎを受け、どの要求を受付けるかの調停を行ない、要求を受付けたマスタ（以下、要求を出したマスタとも呼ぶ。）以外のマスタに対してスヌープ処理要求を行ない、アクセスしようとしているデータを他のマスタのＤキャッシュ１３が持っているか否かを確認する。そして、バス制御部２は、受付けたアクセス要求をスレーブ制御部３に出力する。
【００１７】
スレーブ制御部３は、バス制御部２からのアクセス要求を受け、共有バス５を介してスレーブ４に対するデータのリードまたはライトを行なう。スレーブ制御部３は、スレーブ４に対して１２８ビットのデータリードおよびデータライトが可能である。
【００１８】
本発明のシステムにおいては、Ｉキャッシュ１２に保持される命令は、オペランドとのコヒーレンシを保つ必要がないアーキテクチャであり（命令コードを書き換えた場合はキャッシュパージを必須とする）、スヌープ処理によってコヒーレンシを保つ必要があるのは各マスタのＤキャッシュ間のみである。各マスタからの命令フェッチの要求とオペランドアクセスの要求とが同じ要求信号で出力されるが、以下では、スヌープ処理が関係するオペランド（データ）アクセスについてのみ説明する。
【００１９】
バス制御部２は、調停部２１と、スヌープ制御部２２と、スレーブアクセス制御部２３と、１２８ビットのライトデータバッファ２４とを含む。
【００２０】
調停部２１は、マスタから複数の要求を受けるとその調停を行ない、選択したマスタに対してＡＣＫ（受付）信号をアサートする。調停方法としては、ラウンドロビン方式やランダム方式などが用いられる。
【００２１】
スヌープ制御部２２は、調停部２１によって調停された次のサイクルに、要求があったマスタ以外のマスタに対してスヌープ処理要求を行ない、アクセスしようとしているデータを他のマスタのＤキャッシュ１３が持っているか否かを確認する。スヌープ処理の終了後、スレーブアクセス制御部２３は、スレーブ制御部３に対してアクセス要求を出力する。
【００２２】
以下にスヌープ処理を場合分けして説明するが、他のマスタが同じアドレスのデータを持っていない場合には「スヌープヒットしない」ものとする。また、他のマスタが同じアドレスのデータをＥｘｃｌｕｓｉｖｅな状態、Ｓｈａｒｅｄな状態、またはＤｉｒｔｙな状態で持っている場合は「スヌープヒットする」ものとする。
【００２３】
（１）スヌープヒットしない場合
スヌープ処理要求を受けた他のマスタは、自身のＤキャッシュ１３にスヌープ要求で示されるアドレスと一致するラインがあるか否かをチェックする。そして、自身のＤキャッシュ１３に一致するラインがなければ、要求を出したマスタに対して「なし」を示す情報を返送する。他のマスタ全てから「なし」を示す情報を受けると、スヌープ制御部２２は、調停部２１からの要求をそのままスレーブアクセス制御部２３に出力する。なお、要求を出したマスタのＤキャッシュ１３のそのラインをＥｘｃｌｕｓｉｖｅとして登録する。すなわち、このラインは要求を出したマスタのＤキャッシュ１３のみが持っている状態である。
【００２４】
（２）他のマスタがＥｘｃｌｕｓｉｖｅな状態で持っている場合
他のマスタのＤキャッシュ１３に一致するラインがありＥｘｃｌｕｓｉｖｅな状態であれば、要求を出したマスタに対して「Ｅｘｃｌｕｓｉｖｅ」を示す情報を返送する。リードの場合には、要求を出したマスタが「Ｅｘｃｌｕｓｉｖｅ」を示す情報を受けると、両方のマスタがそのラインをＳｈａｒｅｄとして登録する。すなわち、このラインは複数のマスタのＤキャッシュ１３によって共有されている状態である。
【００２５】
また、ライトの場合には、要求を出したマスタが「Ｅｘｃｌｕｓｉｖｅ」を示す情報を受けると、ライトデータをＥｘｃｌｕｓｉｖｅな状態で持っていたマスタのＤキャッシュ１３に書込むと共に、両方のマスタがそのラインをＳｈａｒｅｄとして登録する。また、Ｅｘｃｌｕｓｉｖｅな状態で持っていたマスタのＤキャッシュ１３のそのラインをインバリデートし、要求を出したマスタのみがＥｘｃｌｕｓｉｖｅとして登録してもよい。
【００２６】
（３）他のマスタがＳｈａｒｅｄな状態で持っている場合
他のマスタのＤキャッシュ１３に一致するラインがありＳｈａｒｅｄな状態であれば、要求を出したマスタに対して「Ｓｈａｒｅｄ」を示す情報を返送する。リードの場合には、要求を出したマスタが「Ｓｈａｒｅｄ」を示す情報を受けると、Ｄキャッシュ１３のそのラインをＳｈａｒｅｄとして登録する。すなわち、このラインは複数のマスタのＤキャッシュ１３によって共有されている状態である。
【００２７】
また、ライトの場合には、要求を出したマスタが「Ｓｈａｒｅｄ」を示す情報を受けると、ライトデータをＳｈａｒｅｄな状態で持っていたマスタのＤキャッシュ１３に書込むと共に、これらのマスタがそのラインをＳｈａｒｅｄとして登録する。また、Ｓｈａｒｅｄな状態で持っていたマスタのＤキャッシュ１３のそのラインをインバリデートし、要求を出したマスタのみがＥｘｃｌｕｓｉｖｅとして登録してもよい。
【００２８】
（４）他のマスタがＤｉｒｔｙな状態で持っている場合
他のマスタのＤキャッシュ１３に一致するラインがありＤｉｒｔｙな状態（このラインは更新されており、メインメモリの内容と異なる値を保持している状態）であれば、「Ｄｉｒｔｙ」を示す情報を返送する。リードの場合には、他のマスタはそれと同時にメインメモリにそのデータを書き戻す。データの書き戻しと同時にＤキャッシュ１３のそのラインをインバリデートする場合と、Ｃｌｅａｎにするだけで有効状態としてＤキャッシュ１３に残す場合とがある。これらの中のいずれになるかは、スヌープ要求の要求状態、キャッシュのモードなどによって決まる。
【００２９】
そのラインをインバリデートする場合には、要求を出したマスタのＤキャッシュ１３のみがこのラインを持つことになり、要求を出したマスタはこのラインをＥｘｃｌｕｓｉｖｅで登録する。これは、ＤｉｒｔｙなラインはそのマスタのＤキャッシュのみが持つことができるため、必ずＥｘｃｌｕｓｉｖｅで保持されているからである。
【００３０】
一方、Ｃｌｅａｎにするだけの場合には、少なくとも２つのマスタのＤキャッシュ１３がこのラインを持っていることになり、Ｄキャッシュ１３にＳｈａｒｅｄとして登録される。
【００３１】
また、ライトの場合には、要求を出したマスタが「Ｄｉｒｔｙ」を示す情報を受けると、ライトデータをＤｉｒｔｙな状態で持っていたマスタのＤキャッシュ１３に書込むと共に、両方のマスタがそのラインをＳｈａｒｅｄとして登録する。また、Ｄｉｒｔｙな状態で持っていたマスタのＤキャッシュ１３のそのラインをインバリデートし、要求を出したマスタのみがＥｘｃｌｕｓｉｖｅとして登録してもよい。いずれの場合もそのラインに対するコヒーレンシは保たれる。
【００３２】
スヌープ制御部２２は、調停された後の要求がリードであれば、上述したスヌープ処理を行なった後、スレーブアクセス制御部２３に対してスレーブ４へのアクセス要求を出力する。スレーブアクセス制御部２３は、スレーブ制御部３を介して１２８ビットのデータを読出すと、そのデータをＲＤバスに出力する。
【００３３】
また、スヌープ制御部２２は、調停された後の要求がライトの場合も、まず上述したスヌープ処理を行なう。その後、要求を出したマスタから３２ビットのライトデータが出力されるので、調停部２１は、１回のライト要求に対して１回のＡＣＫ（受付）信号を要求を出したマスタに出力する。このとき、ライトデータが１２８ビットであれば、マスタから４回のライト要求が出力され、３２ビットデータがライトデータバッファ２４に順次書込まれる。
【００３４】
１２８ビットのライトデータはキャッシュの同じラインのデータであるため、ライト時のスヌープ処理は１回目のライト要求に対してのみ行なわれ、残りの３回のライト要求に対するスヌープ処理は行なわれない。
【００３５】
ライトデータバッファ２４に４回分のライトデータが書込まれると、スレーブアクセス制御部２３はスレーブ制御部３に対してスレーブ４に対するライト要求を出力するとともに、ライトデータバッファ２４に書込まれた１２８ビットのライトデータをまとめてスレーブ処理部３に出力する。
【００３６】
図２は、本発明の第１の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。図２においては、調停の結果マスタ１（１−１）からの要求１が調停部２１によって受付けられたところを示している。
【００３７】
Ｔ２において、マスタ１（１−１）が要求（リクエスト１信号）をアサートする。この要求は、アドレスＡ１のデータのリード要求であり、ＲＷ１信号がハイレベル（以下、Ｈレベル）とされる。調停部２１は、アドレスＡ１のリード要求に対応してＡＣＫ１信号をアサートする。
【００３８】
Ｔ３において、スヌープ制御部２２は、アドレスＡ１のリード要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行して、スヌープ処理が行なわれる。このとき、マスタ１（１−１）は、次の要求（リクエスト１信号）をアサートする。この要求は、アドレスＡ２への３２ビット以下のライト要求であり、ＲＷ１信号がロウレベル（以下、Ｌレベル）とされる。そして、マスタ１（１−１）は、書込みデータＷＤ２を出力する。
【００３９】
Ｔ４において、スヌープ制御部２２は、アドレスＡ２のライト要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行して、スヌープ処理が行なわれる。このとき、マスタ１（１−１）は、次の要求（リクエスト１信号）をアサートする。この要求は、アドレスＡ３のデータのリード要求であり、ＲＷ１信号がＨレベルとされる。
【００４０】
Ｔ５において、スヌープ制御部２２は、アドレスＡ３のリード要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行する。このとき、マスタ１（１−１）は、ＢＵＲＳＴ１信号をＨレベルにしてアドレスＡ４へのバーストライト要求を出力すると共に、最初の３２ビットのライトデータＷＤ４−１を出力する。このデータは、ライトデータバッファ２４に書込まれる。
【００４１】
このサイクルＴ５で、アドレスＡ１のリード要求に対応するデータＲＤ１がスレーブ４から読出されてマスタ１（１−１）に出力されると共に、リードデータが有効であることを示すＶＬＤ１信号がＨレベルとされる。また、アドレスＡ２へのライトデータＷＤ２がスレーブ４に出力される。
【００４２】
Ｔ６において、スヌープ制御部２２は、アドレスＡ４のライト要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行する。このとき、マスタ１（１−１）は、２番目の３２ビットのライトデータＷＤ４−２を出力してライトデータバッファ２４に書込む。なお、アドレスＡ４のライト要求に対応するスヌープ処理要求は、このサイクルにおいてのみ行なわれる。
【００４３】
Ｔ７において、マスタ１（１−１）は、３番目の３２ビットのライトデータＷＤ４−３を出力してライトデータバッファ２４に書込むと共に、アドレスＡ３のリード要求に対応するデータＲＤ３がスレーブ４から読出されてマスタ１（１−１）に出力される。このとき、リードデータが有効であることを示すＶＬＤ１信号がＨレベルとされる。
【００４４】
Ｔ８において、マスタ１（１−１）は、最後の３２ビットのライトデータＷＤ４−４を出力してライトデータバッファ２４に書込む。
【００４５】
Ｔ９において、ライトデータバッファ２４に書込まれた１２８ビットのライトデータＷＤ４を、スレーブ４に出力して書込まれる。
【００４６】
図３は、本発明の第１の実施の形態におけるバス制御部２の処理手順を説明するためのフローチャートである。まず、マスタからの要求がライト要求であるか否かが判定される（Ｓ１１）。ライト要求でなければリード要求であると判定し（Ｓ１１，Ｎｏ）、スヌープ制御部２２は、他のマスタに対してスヌープ処理要求を発行し（Ｓ１８）、ステップＳ１７に処理が進む。
【００４７】
また、ライト要求と判定されれば（Ｓ１１，Ｙｅｓ）、スヌープ制御部２２は、他のマスタに対してスヌープ処理要求を発行する（Ｓ１２）。そして、スレーブアクセス制御部２３は、ＢＵＲＳＴ信号を参照してライトデータのサイズが３２ビットよりも大きいか否かを判定する（Ｓ１３）。
【００４８】
ライトデータのサイズが３２ビット以下であれば（Ｓ１３，Ｎｏ）、ステップＳ１７に処理が進む。ライトデータのサイズが３２ビットよりも大きければ（Ｓ１３，Ｙｅｓ）、Ｃｏｕｎｔレジスタの値を０にクリアする（Ｓ１４）。そして、ライトデータバッファ２４に３２ビットのデータを書込み、Ｃｏｕｎｔレジスタの値をインクリメントする（Ｓ１５）。
【００４９】
次に、Ｃｏｕｎｔレジスタの値が４よりも小さいか否かを判定する（Ｓ１６）。データのサイズが３２ビットよりも大きい場合は、サイズが１２８ビットのみなので、Ｃｏｕｎｔレジスタの値が４よりも小さければ（Ｓ１６，Ｙｅｓ）、ステップＳ１５に戻ってライトデータバッファ２４へのデータ書込みを繰返す。Ｃｏｕｎｔレジスタの値が４であれば（Ｓ１６，Ｎｏ）、１２８ビットのラインデータがそろったのでステップＳ１７に処理が進む。
【００５０】
ステップＳ１７において、スレーブ制御部３は、スレーブ４に対するアクセスを実行する。リードデータの場合、スレーブ制御部３は、スレーブ４から読出したデータをＲＤバスを介して要求を出したマスタに出力する。ライトデータの場合、スレーブ制御部３は、ライトデータバッファ２４に書込まれた１２８ビット（または３２ビット以下）のデータをスレーブ４に書込む。
【００５１】
なお、以上の説明においては、マスタ１〜Ｎ（１−１〜１−Ｎ）とバス制御部２との間のライトデータのバス幅を３２ビットとし、リードデータのバス幅を１２８ビットとしたが、ライトデータのバス幅がリードデータのバス幅よりも狭ければ同様の効果が得られることは言うまでもない。
【００５２】
以上説明したように、本実施の形態におけるバス制御装置によれば、マスタ１〜Ｎ（１−１〜１−Ｎ）との間のライトデータのバス幅（３２ビット）をリードデータのバス幅（１２８ビット）よりも狭くしたので、配線混雑によりチップ面積が大きくなるのを防止することが可能となった。
【００５３】
また、スレーブ４に１２８ビットのデータを書込む場合には、ライトデータバッファ２４に３２ビットのデータを４回書込んで連結した後、スレーブ４に書込むようにしたので、ライトデータのバス幅を狭くしつつも、Ｄキャッシュ１３のラインサイズと等しいサイズのデータを一度にスレーブ４に書込むことが可能となった。
【００５４】
（第２の実施の形態）
図４は、本発明の第２の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。図１に示す第１の実施の形態におけるマルチプロセッサシステムと比較して、スヌープヒットしたときにＤキャッシュ１３にあるデータが書込まれるスヌープデータバッファ２５が追加されている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００５５】
スヌープ制御部２２は、調停部２１によって調停された後の要求があったマスタ以外のマスタに対してスヌープ処理要求を行ない、アクセスしようとしているデータを他のマスタのＤキャッシュ１３が持っているか否かを確認する。スヌープヒットした場合、マスタは１２８ビットのスヌープデータバッファ２５に１ライン分のデータを書込む。
【００５６】
マスタ１〜Ｎ（１−１〜１−Ｎ）は、１２８ビットのデータをライトデータバッファ２４に書込む場合と同様に、ＷＤ１〜ＷＤＮを介して３２ビットデータを４回書込むことにより、スヌープデータをスヌープデータバッファ２５に書込む。
【００５７】
（１）スヌープヒットしない場合
スヌープ処理要求を受けた他のマスタは、自身のＤキャッシュ１３に一致するラインがなければ、要求を出したマスタに対して「なし」を示す情報を返送する。他のマスタ全てから「なし」を示す情報を受けると、スヌープ制御部２２は、調停部２１からの要求をそのままスレーブアクセス制御部２３に出力する。そして、要求を出したマスタのＤキャッシュ１３のそのラインをＥｘｃｌｕｓｉｖｅとして登録する。
【００５８】
（２）他のマスタがＥｘｃｌｕｓｉｖｅな状態で持っている場合
他のマスタのＤキャッシュ１３に一致するラインがありＥｘｃｌｕｓｉｖｅな状態であれば、要求を出したマスタに対して「Ｅｘｃｌｕｓｉｖｅ」を示す情報を返送する。リードの場合には、他のマスタがそれと同時にスヌープデータバッファ２５にそのラインのデータを書込む。要求を出したマスタが「Ｅｘｃｌｕｓｉｖｅ」を示す情報を受けると、スヌープデータバッファ２５からそのラインのデータを読出す。両方のマスタはそのラインをＳｈａｒｅｄとして登録する。
【００５９】
また、ライトの場合には、要求を出したマスタが「Ｅｘｃｌｕｓｉｖｅ」を示す情報を受けると、ライトデータをライトデータバッファ２４およびスヌープデータバッファ２５に書込むと共に、そのラインをＳｈａｒｅｄとして登録する。他のマスタは、スヌープデータバッファ２５からそのラインのデータを読出してＳｈａｒｅｄとして登録する。ライトデータバッファ２４に書込まれたデータは、スレーブ制御部３によってスレーブ４に書込まれる。また、Ｅｘｃｌｕｓｉｖｅな状態で持っていたマスタのＤキャッシュ１３のそのラインをインバリデートし、要求を出したマスタのみがＥｘｃｌｕｓｉｖｅとして登録してもよい。
【００６０】
（３）他のマスタがＳｈａｒｅｄな状態で持っている場合
他のマスタのＤキャッシュ１３に一致するラインがありＳｈａｒｅｄな状態であれば、要求を出したマスタに対して「Ｓｈａｒｅｄ」を示す情報を返送する。リードの場合には、他のマスタがそれと同時にスヌープデータバッファ２５にそのラインのデータを書込む。要求を出したマスタが「Ｓｈａｒｅｄ」を示す情報を受けると、スヌープデータバッファ２５からそのラインのデータを読出す。両方のマスタはそのラインをＳｈａｒｅｄとして登録する。
【００６１】
また、ライトの場合には、要求を出したマスタが「Ｓｈａｒｅｄ」を示す情報を受けると、ライトデータをライトデータバッファ２４およびスヌープデータバッファ２５に書込むと共に、そのラインをＳｈａｒｅｄとして登録する。他のマスタは、スヌープデータバッファ２５からそのラインのデータを読出してＳｈａｒｅｄとして登録する。ライトデータバッファ２４に書込まれたデータは、スレーブ制御部３によってスレーブ４に書込まれる。また、Ｓｈａｒｅｄな状態で持っていたマスタのＤキャッシュ１３のそのラインをインバリデートし、要求を出したマスタのみがＥｘｃｌｕｓｉｖｅとして登録してもよい。
【００６２】
（４）他のマスタがＤｉｒｔｙな状態で持っている場合
他のマスタのＤキャッシュ１３に一致するラインがありＤｉｒｔｙな状態であれば、要求を出したマスタに対して「Ｄｉｒｔｙ」を示す情報を返送する。リードの場合には、他のマスタがそれと同時にスヌープデータバッファ２５にそのラインのデータを書込む。要求を出したマスタが「Ｄｉｒｔｙ」を示す情報を受けると、スヌープデータバッファ２５からそのラインのデータを読出す。両方のマスタはそのラインをＳｈａｒｅｄとして登録する。
【００６３】
また、ライトの場合には、要求を出したマスタが「Ｄｉｒｔｙ」を示す情報を受けると、ライトデータをライトデータバッファ２４およびスヌープデータバッファ２５に書込むと共に、そのラインをＳｈａｒｅｄとして登録する。他のマスタは、スヌープデータバッファ２５からそのラインのデータを読出してＳｈａｒｅｄとして登録する。ライトデータバッファ２４に書込まれたデータは、スレーブ制御部３によってスレーブ４に書込まれる。また、Ｄｉｒｔｙな状態で持っていたマスタのＤキャッシュ１３のそのラインをインバリデートし、要求を出したマスタのみがＥｘｃｌｕｓｉｖｅとして登録してもよい。
【００６４】
図５は、本発明の第２の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。図５は、マスタ１（１−１）からのアドレスＡ１のリード要求時のスヌープ処理において、マスタＮ（１−Ｎ）のＤキャッシュ１３にスヌープヒットしたところを示している。
【００６５】
Ｔ２において、マスタ１（１−１）が要求（リクエスト１信号）をアサートする。この要求は、アドレスＡ１のデータのリード要求であり、ＲＷ１信号がＨレベルとされる。調停部２１は、アドレスＡ１のリード要求に対応してＡＣＫ１信号をアサートする。
【００６６】
Ｔ３において、スヌープ制御部２２は、アドレスＡ１のリード要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行して、スヌープ処理が行なわれる。このとき、マスタＮ（１−Ｎ）がＤｉｒｔｙな状態でそのラインのデータを持っており、マスタＮ（１−Ｎ）は、最初の３２ビットのスヌープデータＤ１−１をスヌープデータバッファ２５に書込む。
【００６７】
このサイクルＴ３において、マスタ１（１−１）は、次の要求（リクエスト１信号）をアサートする。この要求は、アドレスＡ２のデータのリード要求であり、ＲＷ１信号がＨレベルとされる。この要求は、アドレスＡ１のリード要求に対応するスヌープ処理が終了するまで待たされる。
【００６８】
Ｔ４において、マスタＮ（１−Ｎ）は、２番目の３２ビットのスヌープデータＤ１−２をスヌープデータバッファ２５に書込む。
【００６９】
Ｔ５において、マスタＮ（１−Ｎ）は、３番目の３２ビットのスヌープデータＤ１−３をスヌープデータバッファ２５に書込む。
【００７０】
Ｔ６において、マスタＮ（１−Ｎ）は、４番目の３２ビットのスヌープデータＤ１−４をスヌープデータバッファ２５に書込む。そして、スヌープデータバッファ２５に書込まれた１２８ビットのスヌープデータＲ１がＲＤバスに出力され、ＶＬＤ１信号がＨレベルとされる。このとき、アドレスＡ２のデータのリード要求が受付けられ、調停部２１がＡＣＫ１信号をアサートする。
【００７１】
Ｔ７において、スヌープ制御部２２は、アドレスＡ２のリード要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行して、スヌープ処理が行なわれる。このとき、マスタ１（１−１）は、次の要求（リクエスト１信号）をアサートする。この要求は、アドレスＡ３のデータのリード要求である。
【００７２】
Ｔ８において、スヌープ制御部２２は、アドレスＡ３のリード要求に対応するスヌープ処理要求をマスタ１（１−１）以外のマスタに発行する。このとき、アドレスＡ２のデータＲ２がＲＤバスに出力され、ＶＬＤ１信号がＨレベルとされる。
【００７３】
Ｔ９において、アドレスＡ３のデータＲ３がＲＤバスに出力され、ＶＬＤ１信号がＨレベルとされる。
【００７４】
以上説明したように、本実施の形態におけるバス制御装置によれば、スヌープ処理においてスヌープヒットした場合には、スヌープデータバッファ２５に３２ビットのスヌープデータを４回書込んで連結した後、他のマスタがスヌープデータバッファ２５からスヌープデータを読出すようにしたので、スヌープデータのバス幅を狭くすることができ、配線混雑によりチップ面積が大きくなるのを防止することが可能となった。
【００７５】
また、ライトデータバッファ２４への書込みと、スヌープデータバッファ２５への書込みとを並列に行なえるようにしたので、処理速度の向上を図ることが可能となった。
【００７６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。
【図２】本発明の第１の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。
【図３】本発明の第１の実施の形態におけるバス制御部２の処理手順を説明するためのフローチャートである。
【図４】本発明の第２の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。
【図５】本発明の第２の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。
【符号の説明】
【００７８】
１−１〜１−Ｎ  マスタ、２  バス制御部、３  スレーブ制御部、４  スレーブ、５  共有バス、１１  ＣＰＵ、１２  Ｉキャッシュ、１３  Ｄキャッシュ、２１  調停部、２２  スヌープ制御部、２３  スレーブアクセス制御部、２４  ライトデータバッファ、２５  スヌープデータバッファ。
【図１】
2009042992.tif 000003
【図２】
2009042992.tif 000004
【図３】
2009042992.tif 000005
【図４】
2009042992.tif 000006
【図５】
2009042992.tif 000007