(57)【要約】【課題】マルチプロセッサシステムにおけるバスの使用効率を向上させることが可能なバス制御装置を提供すること。【解決手段】命令フェッチ調停部２１は、マスタ１〜Ｎからのアクセス要求のうちスヌープの不要なアクセス要求を調停する。オペランドアクセス調停部２３は、マスタ１〜Ｎからのアクセス要求のうちスヌープの必要なアクセス要求を調停する。スヌープ制御部２４は、オペランドアクセス調停部２３によって調停されたアクセス要求に対応したスヌープ要求をマスタ１〜Ｎに対して発行する。命令アクセス部２２は、マスタ１〜Ｎによるスヌープ処理と並行して、スレーブ３に対して命令フェッチ調停部２１によって調停されたアクセスを行なう。したがって、マルチプロセッサシステムにおけるバスの使用効率を向上させることが可能になる。【選択図】図１
2008140258.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムにおいて複数のプロセッサからスレーブへのアクセス要求を制御するバス制御装置であって、
前記複数のプロセッサからのアクセス要求のうちスヌープの不要なアクセス要求を調停する第１の調停手段と、
前記複数のプロセッサからのアクセス要求のうちスヌープの必要なアクセス要求を調停する第２の調停手段と、
前記第２の調停手段によって調停されたアクセス要求に対応したスヌープ要求を前記複数のプロセッサに対して発行するスヌープ制御手段と、
前記複数のプロセッサによるスヌープ処理と並行して、前記スレーブに対して前記第１の調停手段によって調停されたアクセスを行なう第１のアクセス手段と、
前記スレーブに対して前記第２の調停手段によって調停されたアクセスを行なう第２のアクセス手段とを含む、バス制御装置。
【請求項２】
前記スヌープの不要なアクセス要求は命令フェッチの要求であり、前記スヌープの必要なアクセス要求はオペランドアクセスの要求である、請求項１記載のバス制御装置。
【請求項３】
前記複数のプロセッサからのアクセス要求は、命令フェッチおよびオペランドアクセスを含み、
前記第１の調停手段および第２の調停手段に、同一のアクセス要求が与えられ、請求項１または２記載のバス制御装置。
【請求項４】
前記複数のプロセッサからのアクセス要求は、命令フェッチおよびオペランドアクセスを含み、
前記第１の調停手段に、命令フェッチのアクセス要求が与えられ、
前記第２の調停手段に、オペランドアクセスのアクセス要求が与えられる、請求項１または２記載のバス制御装置。
【請求項５】
前記スヌープの不要なアクセス要求は命令フェッチの要求およびノンキャッシャブルなオペランドアクセスの要求であり、前記スヌープの必要なアクセス要求はキャッシャブルなオペランドアクセスの要求である、請求項１記載のバス制御装置。
【請求項６】
前記スヌープ制御手段は、プロセッサ毎にスヌープが必要か否かを示す情報を保持するテーブルと、
前記テーブルを参照して、スヌープが必要なプロセッサに対するスヌープ要求を生成する生成手段とを含む、請求項１〜５のいずれかに記載のバス制御装置。
【請求項７】
前記テーブルは、領域を示す情報と、
プロセッサ毎に当該領域のデータを保持しているか否かを示す情報とを含む、請求項６記載のバス制御装置。
【請求項８】
プロセッサが前記領域のデータにアクセスしたときに、プロセッサが当該領域のデータを保持していることを示す情報が設定され、当該領域のデータにアクセスすることがなくなったときに、当該領域の情報がクリアされる、請求項７記載のバス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおいてバスを制御する技術に関し、特に、キャッシュのコヒーレンシを保つためのスヌープ処理によるＣＰＵ（Central Processing Unit）の性能低下を防止したバス制御装置に関する。
【背景技術】
【０００２】
近年、プロセッサによる処理性能の向上を図るために、マルチプロセッサシステムの開発が盛んに行なわれている。このようなマルチプロセッサシステムにおいては、キャッシュのコヒーレンシを保つためにスヌープ処理が行なわれる。
【０００３】
一般に、スヌープ処理が行なわれると、この処理が終了するまで次の要求が受付けられないため、プロセッサがつながるバスの性能を低下させる。また、スヌープを処理するキャッシュは、その間ＣＰＵの要求を処理することができず、ＣＰＵの処理性能が低下することになる。
【０００４】
これを防止するためにタグ部を２重に持ち、スヌープ処理とＣＰＵからの要求に対応する処理とを同時に行なうようにすることも可能であるが、回路規模が大きくなるといった問題点がある。これに関連する技術として、下記の特許文献１および２に開示された発明がある。
【０００５】
特許文献１に開示されたキャッシュ制御方式において、アクセス要求側のプロセッサは、キャッシュメモリにデータがヒットせず、スヌープ動作の必要がないときは、アドレスバス上のアドレスの最上位ビットにその旨を指定してラッチおよびバッファを介して共有バスに要求アドレスを出力する。アクセス検出側のプロセッサは、共有バスのアドレスバスの最上位ビットをスヌープ制御回路により検出し、スヌープ動作の必要がないことを検出したときはスヌープ動作を行なわない。一方、スヌープ動作の必要があることを検出したときはラッチおよびマルチプレクサを介してキャッシュ制御回路によりキャッシュメモリのヒット判定を行ない、キャッシュヒット時はヒットしたデータを主記憶装置へライトバックする。
【０００６】
特許文献２に開示されたキャッシュ・メモリ制御装置において、ブリッジはアクセスされようとしているアドレスのデータに対してキャッシュ一致化処理が必要であるか否かを単独で判定し、キャッシュ一致化処理が必要な場合のみ該当するプロセッサに対して指示をする。また、各プロセッサの内部のキャッシュ・メモリに共有メモリ上のどのアドレスがどのような状態で保持されているかを示すアドレスおよびタグ情報を、プロセッサ・キャッシュ・タグ・テーブルにキャッシュ容量分だけキャッシュ・ライン単位で保持する。
【特許文献１】特開平６−１２４２３５号公報
【特許文献２】特開２００１−４３２０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した特許文献１および２に開示された発明は、スヌープ処理が必要か否かを判定し、スヌープ処理の必要がある場合にのみスヌープ処理を行なうものである。しかしながら、スヌープ処理が行なわれる場合には次の要求が受付けられず、さらなる処理性能の向上を図ることはできない。
【０００８】
本発明は、上記問題点を解決するためになされたものであり、その目的は、マルチプロセッサシステムにおけるバスの使用効率を向上させることが可能なバス制御装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一実施例によれば、マルチプロセッサシステムにおいて複数のプロセッサからスレーブへのアクセス要求を制御するバス制御装置が提供される。命令フェッチ調停部は、複数のプロセッサからのアクセス要求のうちスヌープの不要なアクセス要求を調停する。オペランドアクセス調停部は、複数のプロセッサからのアクセス要求のうちスヌープの必要なアクセス要求を調停する。スヌープ制御部は、オペランドアクセス調停部によって調停されたアクセス要求に対応したスヌープ要求を複数のプロセッサに対して発行する。命令アクセス部は、複数のプロセッサによるスヌープ処理と並行して、スレーブに対して命令フェッチ調停部によって調停されたアクセスを行なう。また、オペランドアクセス部は、スレーブに対してオペランドアクセス調停部によって調停されたアクセスを行なう。
【発明の効果】
【００１０】
この実施例によれば、複数のプロセッサによるスヌープ処理と並行して、スレーブに対して命令フェッチ調停部によって調停されたアクセスを行なうことができ、マルチプロセッサシステムにおけるバスの使用効率を向上させることが可能になるという効果がある。
【発明を実施するための最良の形態】
【００１１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。このマルチプロセッサシステムは、複数のマスタ１〜Ｎ（１−１〜１−Ｎ）と、バス制御部２と、共有メモリなどのスレーブ３とを含む。
【００１２】
また、マスタ１〜Ｎ（１−１〜１−Ｎ）のそれぞれは、ＣＰＵ１１と、命令コードを保持するＩキャッシュ１２と、オペランドを保持するＤキャッシュ１３とを含む。
【００１３】
バス制御部２は、複数のマスタ１〜Ｎ（１−１〜１−Ｎ）からの要求１〜Ｎを受け、どの要求を受付けるかの調停を行ない、バス４を介してスレーブ３にアクセスする。このとき、バス制御部２は、必要であればスヌープ処理を行なう。
【００１４】
本発明のシステムにおいては、Ｉキャッシュ１２に保持される命令は、オペランドとのコヒーレンシを保つ必要がないアーキテクチャであり、スヌープ処理によってコヒーレンシを保つ必要があるのは各マスタのＤキャッシュ間のみである。各マスタからの命令フェッチの要求とオペランドアクセスの要求とが同じ要求信号で出力されるが、それぞれに対して別の制御が行なわれる。
【００１５】
バス制御部２は、命令フェッチ調停部２１と、命令アクセス部２２と、オペランドアクセス調停部２３と、スヌープ制御部２４と、オペランドアクセス部２５とを含む。
【００１６】
命令フェッチ調停部２１は、マスタ１〜Ｎ（１−１〜１−Ｎ）からの要求１〜Ｎを受け、命令フェッチの調停のみを行ない、調停された要求信号を命令アクセス部２２に出力する。この調停方法としては、ラウンドロビン方式、ランダム方式などが用いられる。
【００１７】
命令アクセス部２２は、命令フェッチ調停部２１から調停された要求信号を受けると、オペランドアクセス部２５によるオペランドアクセスと重複しないようにバス制御を行ない、バス４を介してスレーブ３に対するリードまたはライトを行なう。
【００１８】
オペランドアクセス調停部２３は、マスタ１〜Ｎ（１−１〜１−Ｎ）からの要求１〜Ｎを受け、オペランドアクセスの調停のみを行ない、調停された要求信号をスヌープ制御部２４に出力する。この調停方法としては、命令フェッチ調停部２１同様、ラウンドロビン方式、ランダム方式などが用いられる。
【００１９】
スヌープ制御部２４は、オペランドアクセス調停部２３から調停された要求信号を受けると、要求を受付けたマスタ（以下、要求を出したマスタとも呼ぶ。）以外の全てのマスタに対してスヌープ処理要求を出力する。
【００２０】
スヌープ処理要求を受けたマスタは、自身のＤキャッシュ１３にスヌープ要求で示されるアドレスと一致するラインがあるか否かをチェックする。そして、自身のＤキャッシュ１３に一致するラインがなければ、要求を出したマスタに対して「なし」を示す情報を返送する。要求を出したマスタは他のマスタ全てから「なし」を示す情報を受けると、Ｄキャッシュ１３のそのラインをＥｘｃｌｕｓｉｖｅとして登録する。すなわち、このラインは要求を出したマスタのＤキャッシュ１３のみが持っている状態である。
【００２１】
自身のＤキャッシュ１３に一致するラインがありＣｌｅａｎな状態（このラインは更新されておらず、メインメモリの内容と同じ値を保持している状態）であれば、要求を出したマスタに対して「ＨＩＴ」を示す情報を返送する。要求を出したマスタは「ＨＩＴ」を示す情報を受けると、Ｄキャッシュ１３のそのラインをＳｈａｒｅｄとして登録する。すなわち、このラインは複数のマスタのＤキャッシュ１３が持っている状態である。
【００２２】
自身のＤキャッシュ１３に一致するラインがありＭｏｄｉｆｉｅｄな状態（このラインは更新されており、メインメモリの内容と異なる値を保持している状態）であれば、「Ｍｏｄｉｆｉｅｄ」を示す情報を返送すると同時に、メインメモリにそのデータを書き戻す。データの書き戻しと同時にＤキャッシュ１３のそのラインをインバリデートする場合と、Ｃｌｅａｎにするだけで有効状態としてＤキャッシュ１３に残す場合とがある。これらのいずれになるかは、スヌープ要求の要求状態、キャッシュのモードなどによって決まる。
【００２３】
そのラインをインバリデートする場合には、要求を出したマスタのＤキャッシュ１３のみがこのラインを持つことになり、要求を出したマスタはこのラインをＥｘｃｌｕｓｉｖｅで登録する。これは、ＭｏｄｉｆｉｅｄなラインはそのマスタのＤキャッシュのみが持つことができるため、必ずＥｘｃｌｕｓｉｖｅで保持されているからである。
【００２４】
一方、Ｃｌｅａｎにするだけの場合には、少なくとも２つのマスタのＤキャッシュ１３がこのラインを持っていることになり、Ｄキャッシュ１３にＳｈａｒｅｄとして登録される。スヌープ制御部２４は、スヌープ処理が終了すると調停された要求信号をオペランドアクセス部２５に出力する。
【００２５】
オペランドアクセス部２５は、スヌープ制御部２４から調停された要求信号を受けると、命令アクセス部２２による命令アクセスと重複しないようにバス制御を行ない、バス４を介してスレーブ３に対するリードまたはライトを行なう。
【００２６】
図２は、本発明の第１の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。図２においては、オペランドアクセスのバス要求（Ｄ）の調停と、命令フェッチのバス要求（Ｉ）の調停と、スレーブアクセスとのタイミングを示している。オペランドアクセスの要求を調停した結果を調停Ｄ（Ｄ１，Ｄ２，.．．）で示し、命令フェッチの要求を調停した結果を調停Ｉ（Ｉ１，Ｉ２，...）で示す。スレーブアクセスは共有バス構成または命令フェッチとオペランドアクセスとが同じスレーブにアクセスする場合に、実際にスレーブにアクセスする要求を示す。
【００２７】
Ｔ２において、マスタからバス要求が発行され、オペランドアクセス調停部２３によりオペランドアクセスの要求の調停と、命令フェッチ調停部２１による命令フェッチの要求の調停とが並列に行なわれる。オペランドアクセス調停部２３による調停によって複数のマスタの要求するオペランドアクセスの中からＤ１のオペランドアクセスが受付けられ、命令フェッチ調停部２１による調停によってＩ１の命令フェッチが受付けられる。
【００２８】
Ｔ３において、スヌープ制御部２４によってＤ１のスヌープ要求が発行されてスヌープ処理が行なわれる。このスヌープ処理は１サイクルで終了する。このとき、オペランドアクセス部２５によるスレーブアクセスが行なわれないため、命令アクセス部２２によるＩ１のスレーブアクセスが直ちに行なわれる。また、調停によってＤ２のオペランドアクセスが受付けられ、Ｉ２の命令フェッチが受付けられる。
【００２９】
Ｔ４において、Ｄ１のスレーブアクセスとＩ２のスレーブアクセスとが発生するが、オペランドアクセス処理が優先されてＤ１のスレーブアクセスが行なわれる。このとき、Ｉ２のスレーブアクセスは直ちに行なわれず、１サイクル待たされる。また、スヌープ制御部２４によってＤ２のスヌープ要求が発行されてスヌープ処理が行なわれる。このスヌープ処理は、何らかの要因によって３サイクルに延びている。
【００３０】
Ｔ５において、Ｄ２のスヌープ処理中の間に命令アクセス部２２によるＩ２のスレーブアクセスが行なわれる。このとき、命令フェッチ調停部２１により命令フェッチの要求の調停が行なわれ、Ｉ３の命令フェッチが受付けられる。
【００３１】
Ｔ６において、Ｔ５で受付けたＩ３のスレーブアクセスが命令アクセス部２２により直ちに行なわれる。また、調停によってＤ３のオペランドアクセスが受付けられ、Ｉ４の命令フェッチが受付けられる。
【００３２】
Ｔ７において、Ｄ２のスレーブアクセスとＩ４のスレーブアクセスとが発生するが、オペランドアクセス処理が優先されてＤ２のスレーブアクセスが行なわれる。このとき、スヌープ制御部２４によってＤ３のスヌープ要求が発行されてスヌープ処理が行なわれる。このスヌープ処理は１サイクルで終了する。
【００３３】
Ｔ８において、Ｄ３のスレーブアクセスとＩ４のスレーブアクセスとが発生するが、オペランドアクセス処理が優先されてＤ３のスレーブアクセスが行なわれる。
【００３４】
Ｔ９において、待たされていたＩ４のスレーブアクセスが命令アクセス部２２によって行なわれる。
【００３５】
クロスババスなどによってオペランドアクセスおよび命令フェッチに対応するスレーブアクセスの両方が受付けられる場合には、スレーブアクセスが待たされずに次の調停を行なうようにすることも可能である。
【００３６】
また、スヌープ処理が受付けられずに待たされている場合には、その間に次の調停を行なってその要求をバッファリングするようにしてもよい。
【００３７】
以上説明したように、本実施の形態におけるバス制御装置によれば、命令フェッチの要求の調停と、オペランドアクセスの要求の調停とを別々に行ない、オペランドアクセスの要求に対してのみスヌープ処理を行なうようにしたので、スヌープ処理の最中でも命令フェッチに対応するスレーブアクセスを並列に行なうことができ、バスの使用効率を向上させることが可能となった。
【００３８】
（第２の実施の形態）
図３は、本発明の第２の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。このマルチプロセッサシステムは、図１に示す第１の実施の形態におけるマルチプロセッサシステムと比較して、命令フェッチの要求とオペランドアクセスの要求とを別々の要求信号（要求１−Ｉ〜Ｎ−Ｉ、要求１−Ｄ〜Ｎ−Ｄ）としている点のみが異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００３９】
命令フェッチ調停部２１は、マスタ１〜Ｎ（１−１〜１−Ｎ）からの要求１−Ｉ〜Ｎ−Ｉを受け、命令フェッチの調停のみを行ない、調停された要求信号を命令アクセス部２２に出力する。命令フェッチ調停部２１による調停後の処理は、第１の実施の形態における調停後の処理と同様である。
【００４０】
オペランドアクセス調停部２３は、マスタ１〜Ｎ（１−１〜１−Ｎ）からの要求１−Ｄ〜Ｎ−Ｄを受け、オペランドアクセスの調停のみを行ない、調停された要求信号をスヌープ制御部２４に出力する。オペランドアクセス調停部２３による調停後の処理は、第１の実施の形態における調停後の処理と同様である。
【００４１】
命令フェッチの要求の調停と、オペランドアクセスの要求の調停とが並列で行なわれるため、少ないマスタのみが動作する場合でも処理性能を向上させることができる。たとえば、１つのマスタのみが動作している場合、オペランドのスヌープ処理が待たされている間でも次の命令フェッチに対応するスレーブアクセスが行なえるようになる。
【００４２】
以上説明したように、本実施の形態におけるバス制御装置によれば、命令フェッチの要求とオペランドアクセスの要求とを別々の要求信号としたので、第１の実施の形態におけるバス制御装置と比較して、バスの使用効率をさらに向上させることが可能となった。
【００４３】
（第３の実施の形態）
図４は、本発明の第３の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。このマルチプロセッサシステムは、図１に示す第１の実施の形態におけるマルチプロセッサシステムと比較して、命令フェッチ調停部およびオペランドアクセス調停部の機能が異なる。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００４４】
本実施の形態においては、スヌープ処理が必要なアクセス（キャッシャブルなオペランドアクセス）と、スヌープ処理が不要なアクセス（ノンキャッシャブルなオペランドアクセス、命令フェッチ）とを別々に調停するものである。
【００４５】
キャッシャブルなオペランドアクセスによって得られたデータは、マスタ内のＤキャッシュ１３に登録されるため、他のマスタ内のＤキャッシュ１３に登録されたデータと共有される場合がある。同一のラインが複数のマスタ内のＤキャッシュ１３にある場合には、いずれかのマスタがそのラインを更新するときに他のマスタが持つ同一ラインを書き換えるか、クリアしなければならないためスヌープ処理が必要になる。
【００４６】
一方、ノンキャッシャブルなオペランドアクセスによって得られたデータは、マスタ内のＤキャッシュに登録されないので、スヌープ処理を行なう必要はない。
【００４７】
命令フェッチ調停部３１は、マスタ１〜Ｎ（１−１〜１−Ｎ）からの命令フェッチの要求１−Ｉ〜Ｎ−Ｉを受け、命令フェッチの調停を行なうと共に、マスタ１〜Ｎ（１−１〜１−Ｎ）からのオペランドアクセスの要求１−Ｄ〜Ｎ−Ｄがノンキャッシャブルなオペランドアクセスを示すものであれば、その調停も行なう。命令フェッチ調停部３１は、命令フェッチおよびノンキャッシャブルなオペランドアクセスの調停を行ない、調停された要求信号を命令アクセス部２２に出力する。
【００４８】
オペランドアクセス調停部３２は、マスタ１〜Ｎ（１−１〜１−Ｎ）からのオペランドアクセスの要求１−Ｄ〜Ｎ−Ｄがキャッシャブルなオペランドアクセスを示すものであれば、その調停を行なう。調停された要求信号はオペランドアクセス部２５に出力される。
【００４９】
以上説明したように、本実施の形態におけるバス制御装置によれば、オペランドアクセス調停部３２がキャッシャブルなオペランドアクセスのみを調停するようにしたので、スヌープ処理の必要な要求をさらに減らすことができ、第１および第２の実施の形態におけるバス制御装置と比較して、さらにマスタ内のＣＰＵの処理性能およびバスの使用効率を向上させることが可能となった。
【００５０】
（第４の実施の形態）
図５は、本発明の第４の実施の形態におけるバス制御部の内部構成を示すブロック図である。なお、図５においては、命令フェッチ調停部２１または３１と、命令アクセス部２２とを省略している。スヌープ制御部２４以外の構成および機能は、第１〜第３の実施の形態において説明したものと同様である。
【００５１】
スヌープ制御部２４は、どのマスタに対してスヌープ処理を行なう必要があるかを管理するスヌープ選択テーブル５１と、スヌープ選択テーブル５１を参照してスヌープ要求の要否を判定するスヌープ要求生成部５２とを含む。
【００５２】
図６は、スヌープ選択テーブル５１に格納される情報の一例を示す図である。領域情報はアドレスの範囲を指定する情報であり、領域０〜ｍが登録されている。たとえば、アドレスが３２ビットの場合、領域を４ｋバイト単位とすると、領域情報として２０ビットの上位アドレスが格納される。
【００５３】
マスタ選択情報は、各マスタのＤキャッシュ１３がその領域のデータを保持しているか否かを示す情報である。たとえば、領域０においては、マスタ０、マスタ１およびマスタｎがデータを共有していることを示している。
【００５４】
有効ビットは、その領域の情報が有効か否かを示す情報である。有効ビットが“０”の場合にはその領域の情報が無効であることを示し、“１”の場合にはその領域の情報が有効であることを示す。
【００５５】
なお、スヌープ選択テーブル５１の設定は、ソフトウェアによって行なわれてもよいし、ハードウェアによって行なわれてもよい。
【００５６】
スヌープ要求生成部５２は、オペランドアクセス調停部２３または３２から調停された要求を受けると、その要求に含まれるアドレスの上位２０ビットと一致する領域のマスタ選択情報を取得する。そして、スヌープ要求生成部５２は、マスタ選択情報が“１”になっているマスタに対してのみスヌープ要求を発行する。
【００５７】
また、２０ビットのマスク値を持ち、アドレスの上位２０ビットとマスク値との論理積（ＡＮＤ）を計算し、その値と一致する領域のマスタ選択情報を取得するようにしても良い。この場合、４ｋバイト以上の範囲を指定することができる。
【００５８】
また、スヌープ選択テーブル５１に全ての領域に対応するマスタ選択情報を格納すると回路規模が大きくなるため、必要な領域のみをスヌープ選択テーブル５１に置いてもよい。このとき、スヌープ選択テーブル５１に格納されていない領域が指定された場合には、スヌープ要求生成部５２が全てのマスタに対してスヌープ要求を発行するようにする。
【００５９】
なお、有効ビットが“０”となっている領域が指定された場合には、その領域のマスタ選択情報を参照せずに、全てのマスタに対してスヌープ要求を発行する。
【００６０】
以上説明したように、本実施の形態におけるバス制御装置によれば、スヌープ要求生成部５２がスヌープ選択テーブル５１を参照して、スヌープ処理が必要なマスタに対してのみスヌープ要求を発行するようにした。したがって、全てのマスタに対してスヌープ要求を発行する場合と比較して、スヌープ処理によって待たされる期間が延びる可能性を少なくすることができ、バスの使用効率を向上させることが可能となった。
【００６１】
また、スヌープ要求を受けないマスタは、ＣＰＵのキャッシュアクセスを阻害する要因がなくなるため、ＣＰＵの処理性能を向上させることが可能となった。
【００６２】
（第５の実施の形態）
図７は、本発明の第５の実施の形態におけるスヌープ制御部２４のスヌープ選択テーブル５１の設定処理を説明するための図である。なお、本実施の形態におけるマルチプロセッサシステムの構成は、第４の実施の形態におけるマルチプロセッサシステムの構成と同様である。
【００６３】
図７は、プログラムの実行によってスヌープ選択テーブル５１の領域０の内容が設定されるところを示している。まず、プログラムによってスヌープ選択テーブル５１で管理したい領域０が設定される場合、領域情報に領域０を示す情報が格納され、有効ビットに“１”がセットされる。このときマスタ選択情報は全て０であり、どのマスタもこの領域０にアクセスしていない（キャッシュに登録していない）ことを示す。
【００６４】
次に、マスタ０がこの領域０に対してオペランドアクセスを行なうと、領域０に対応するマスタ選択情報のマスタ０に対応するビットに“１”がセットされる。これによって、別のマスタがこの領域にオペランドアクセスを行なってスヌープ要求が発行されるときに、マスタ０に対してのみスヌープ要求を発行すればよいことが分かる。
【００６５】
次に、マスタ２がこの領域０に対してオペランドアクセスを行なうと、マスタ０に対してスヌープ要求が発行されると共に、領域０に対応するマスタ選択情報のマスタ２に対応するビットに“１”がセットされる。これによって、別のマスタがこの領域にオペランドアクセスを行なってスヌープ要求が発行されるときに、マスタ０および２に対してのみスヌープ要求を発行すればよいことが分かる。
【００６６】
次に、マスタＮがこの領域０に対してオペランドアクセスを行なうと、マスタ０および２に対してスヌープ要求が発行されると共に、領域０に対応するマスタ選択情報のマスタＮに対応するビットに“１”がセットされる。
【００６７】
最後に、この領域に対してオペランドをアクセスすることがなくなったときに、プログラムによって領域０の情報がクリアされ、有効ビットに“０”がセットされる。
【００６８】
図８は、本発明の第５の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。図８において、マスタ０のＣＰＵ１１がＤキャッシュ１３に対して要求するアクセスをＣ０−１，Ｃ０−２，...で示し、マスタ１のＣＰＵ１１がＤキャッシュ１３に対して要求するアクセスをＣ１−１，Ｃ１−２，...で示す。
【００６９】
Ｔ２において、マスタからバス要求が発行され、オペランドアクセス調停部２３によりオペランドアクセスの要求の調停が行なわれる。調停によってＤ１のオペランドアクセスが受付けられる。Ｄ１はマスタ０、マスタ１以外の要求とする。このとき、マスタ０のＣＰＵ１１がＣ０−１のアクセスを要求し、マスタ１のＣＰＵ１１がＣ１−１のアクセスを要求する。
【００７０】
Ｔ３において、スヌープ制御部２４によってＤ１のスヌープ要求がマスタ０およびマスタ１の両方に発行されてスヌープ処理が行なわれる。このスヌープ処理は１サイクルで終了する。また、オペランドアクセス調停部２３による調停によってＤ２のオペランドアクセスが受付けられる。
【００７１】
Ｔ４において、スヌープ選択テーブルにはＤ２のアクセス領域がマスタ０のみ使用していることを検出した場合、スヌープ制御部２４によってＤ２のスヌープ要求がマスタ０のみに発行されてスヌープ処理が行なわれる。このスヌープ処理は、何らかの要因によって２サイクルに延びている。このとき、マスタ１のＣＰＵ１１はＣ１−２のアクセスを要求する。また、Ｄ１のスレーブアクセスが行なわれる。
【００７２】
Ｔ５において、マスタ０によるスヌープ処理が引き続き行なわれる。このとき、マスタ１のＣＰＵ１１はＣ１−３のアクセスを要求する。また、オペランドアクセス調停部２３による調停によってＤ３のオペランドアクセスが受付けられる。
【００７３】
Ｔ６において、スヌープ制御部２４によってＤ３のスヌープ要求がマスタ０およびマスタ１の両方に発行されてスヌープ処理が行なわれる。このスヌープ処理は、何らかの要因によって２サイクルに延びている。このとき、マスタ１はＣＰＵ１１の処理を優先しているためスヌープ要求を受付けず、Ｃ１−４のアクセスを要求する。また、マスタ０はスヌープ要求を受付けてスヌープ処理を行ない、要求を出したマスタに対してＭｏｄｉｆｉｅｄを返送する。Ｍｏｄｉｆｉｅｄであるので、必ずマスタ０のＤキャッシュ１３にしか対応するラインがないことを意味しており、マスタ１に対して発行していたスヌープ要求を取下げる。これによって、余計なスヌープ処理を行なうことがなくなる。
【００７４】
Ｔ７において、マスタ０によるスヌープ処理は終了しているので、マスタ０のＣＰＵ１１はＣ０−２のアクセスを要求する。このとき、マスタ１のＣＰＵ１１はＣ１−５のアクセスを要求する。
【００７５】
以上説明したように、本実施の形態におけるバス制御装置によれば、第４の実施の形態において説明した効果に加えて、スヌープ処理を行なうマスタからＭｏｄｉｆｉｅｄが返送された場合に、他のマスタのスヌープ要求を取下げるようにしたので、余計なスヌープ処理を行なうことがなくなり、ＣＰＵの処理性能をさらに向上させることが可能となった。
【００７６】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。
【図２】本発明の第１の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。
【図３】本発明の第２の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。
【図４】本発明の第３の実施の形態におけるバス制御部を含んだマルチプロセッサシステムの構成例を示す図である。
【図５】本発明の第４の実施の形態におけるバス制御部の内部構成を示すブロック図である。
【図６】スヌープ選択テーブル５１に格納される情報の一例を示す図である。
【図７】本発明の第５の実施の形態におけるスヌープ制御部２４のスヌープ選択テーブル５１の設定処理を説明するための図である。
【図８】本発明の第５の実施の形態におけるマルチプロセッサシステムの処理を説明するためのタイミングチャートである。
【符号の説明】
【００７８】
１−１〜１−Ｎ  マスタ、２  バス制御部、３  スレーブ、４  バス、１１  ＣＰＵ、１２  Ｉキャッシュ、１３  Ｄキャッシュ、２１，３１  命令フェッチ調停部、２２  命令アクセス部、２３，３２  オペランドアクセス調停部、２４  スヌープ制御部、２５  オペランドアクセス部、５１  スヌープ選択テーブル、５２  スヌープ要求生成部。
【図１】
2008140258.tif 000003
【図２】
2008140258.tif 000004
【図３】
2008140258.tif 000005
【図４】
2008140258.tif 000006
【図５】
2008140258.tif 000007
【図６】
2008140258.tif 000008
【図７】
2008140258.tif 000009
【図８】
2008140258.tif 000010