(57)【特許請求の範囲】
【請求項１】
複数のマイクロプロセッサを有し、前記マイクロプロセッサのそれぞれがデータ用（Ｄ）キャッシュと、命令用（Ｄ）キャッシュと、複数のメモリ・ポートと、入出力ユニット（ＩＯＵ）とを有するマルチプロセッサ・システムであって、
前記それぞれのマイクロプロセッサ内のメモリ制御ユニット（ＭＣＵ）は、
スイッチ・ネットワークと、
キャッシュ・インタフェース回路と、
前記ＤキャッシュおよびＩキャッシュと前記スイッチ・ネットワークの間に前記キャッシュ・インタフェース回路を結合するための手段と、
入出力インタフェース回路と、
前記ＩＯＵと前記スイッチ・ネットワークの間に前記入出力インタフェース回路を結合するための手段と、
複数のメモリ・ポート・インタフェース回路と、
前記それぞれのメモリ・ポートと前記スイッチ・ネットワークの間に前記それぞれのメモリ・ポート・インタフェース回路を結合するための手段と、
前記スイッチ・ネットワークのための仲裁を行うスイッチ仲裁手段と、
前記それぞれのメモリ・ポートのための仲裁を行う複数のポート仲裁手段と、
前記ＤキャッシュおよびＩキャッシュと前記ＩＯＵのうちの１つと前記それぞれのメモリ・ポートの間で、前記スイッチ・ネットワークおよび前記それぞれのメモリ・ポート・インタフェース回路を通じてデータを転送する要求を前記それぞれのポート仲裁手段に転送するための手段と、
メモリ・アレイ・ユニット（ＭＡＵ）システムバスを通じてＭＡＵに結合するための手段と、
前記ＭＡＵアドレスバスおよび内容アドレスメモリ（ＣＡＭ）上のアドレスに対応するスヌープアドレスを生成するための前記ＭＡＵアドレスバスに結合されたスヌープアドレス発生部を有するテストアンドセット・バイパス回路と、
共有メモリ領域にアクセスするための要求に関連した所定の命令の実行に対応して、前記領域に関連したセマフォのアドレスを前記ＣＡＭに記憶するための手段と、
前記セマフォのための後続の要求上にある前記ＣＡＭのコンテンツと前記スヌープアドレスとを比較するための手段と、
前記セマフォアドレスがまだＣＡＭ内にあり、メモリ帯域幅をセーブできるときは、セマフォに失敗した信号を、前記セマフォのための前記要求のソースへ送る手段と
を備え、さらに、
前記それぞれのポート仲裁手段は、前記ＩＯＵ、ＤキャッシュおよびＩキャッシュのそれぞれの装置からの前記要求に対し、固有優先度を割当て、
（ａ）要求されたアドレスと以前に満たされた要求の間での行一致の存在と、
（ｂ）前記それぞれの装置の１つがサービスを拒否された回数と、
（ｃ）前記それぞれの装置の１つが中断なしにサービスを受けた回数と
を要因として前記固有優先度を変更する動的優先度を与え、前記それぞれのメモリ・ポート・インタフェース回路が前記要求を処理できるとき、ポート使用可能信号を前記スイッチ仲裁手段へ転送し、
前記スイッチ仲裁手段は、前記ポート使用可能信号に対応して、前記スイッチ・ネットワークがデータを前記ＤキャッシュおよびＩキャッシュと前記ＩＯＵのうちの前記１つと前記メモリ・ポートの間で転送することが可能なとき、許可信号を前記要求のソースと前記ポート仲裁手段へ転送することを特徴とするマルチプロセッサ・システム。
【請求項２】
複数のマイクロプロセッサを有し、前記マイクロプロセッサのそれぞれがデータ用（Ｄ）キャッシュと、命令用（Ｄ）キャッシュと、複数のメモリ・ポートと、入出力ユニット（ＩＯＵ）とを有するマルチプロセッサ・システムであって、
前記それぞれのマイクロプロセッサ内のメモリ制御ユニット（ＭＣＵ）は、
スイッチ・ネットワークと、
キャッシュ・インタフェース回路と、
前記ＤキャッシュおよびＩキャッシュと前記スイッチ・ネットワークの間に前記キャッシュ・インタフェース回路を結合するための手段と、
入出力インタフェース回路と、
前記ＩＯＵと前記スイッチ・ネットワークの間に前記入出力インタフェース回路を結合するための手段と、
複数のメモリ・ポート・インタフェース回路と、
前記それぞれのメモリ・ポートと前記スイッチ・ネットワークの間に前記それぞれのメモリ・ポート・インタフェース回路を結合するための手段と、
前記スイッチ・ネットワークのための仲裁を行うスイッチ仲裁手段と、
前記それぞれのメモリ・ポートのための仲裁を行う複数のポート仲裁手段と、
前記ＤキャッシュおよびＩキャッシュと前記ＩＯＵのうちの１つと前記それぞれのメモリ・ポートの間で、前記スイッチ・ネットワークおよび前記それぞれのメモリ・ポート・インタフェース回路を通じてデータを転送する要求を前記それぞれのポート仲裁手段に転送するための手段と、
を備え、さらに、
前記それぞれのポート仲裁手段は、
前記ＩＯＵ、ＤキャッシュおよびＩキャッシュのそれぞれの装置からの前記要求に対し、固有優先度を割当て、
（ａ）要求されたアドレスと以前に満たされた要求の間での行一致の存在と、
（ｂ）前記それぞれの装置の１つがサービスを拒否された回数と、
（ｃ）前記それぞれの装置の１つが中断なしにサービスを受けた回数と
を要因として前記固有優先度を変更する動的優先度を与え、前記それぞれのメモリ・ポート・インタフェース回路が前記要求を処理できるとき、ポート使用可能信号を前記スイッチ仲裁手段へ転送し、
前記スイッチ仲裁手段は、
（ａ）優先度がスレーブ装置にもとづくものであり、優先度が常にまずメモリ・ポートに与えられ、次にラウンド・ロビン方式により前記ＩＯＵに与えられるスレーブ優先度と、
（ｂ）優先度がマスター装置にもとづくものであり、優先度が前記ＩＯＵに、次に前記ＤキャッシュおよびＩキャッシュに与えられるマスター優先度
のうちの１つを提供する手段を有し、前記ポート使用可能信号に対応して、前記スイッチ・ネットワークがデータを前記ＤキャッシュおよびＩキャッシュと前記ＩＯＵのうちの前記１つと前記メモリ・ポートの間で転送することが可能なとき、許可信号を前記要求のソースと前記ポート仲裁手段へ転送することを特徴とするマルチプロセッサ・システム。
【請求項３】
Ｉキャッシュ要求に対応するプロセッサ内のプリフェッチバッファが間もなく空になるときは、Ｉキャッシュ要求がＩＯＵおよびＤキャッシュ要求よりも高い優先度を与えられることを特徴とする請求項２記載のマルチプロセッサ・システム。
【請求項４】
さらに、前記スイッチ仲裁手段は、
前記ＩＯＵが前記メモリ・ポートの使用を認められるたびにカウンタの数を減じる手段と、
前記カウンタがゼロに達するときは、前記ＩＯＵの要求の優先度を、前記通常優先度Ｄキャッシュおよび前記通常優先度Ｉキャッシュの要求よりも下げる手段とを有することを特徴とする請求項３記載のマルチプロセッサ・システム。
【請求項５】
さらに、
前記ＩＯＵが前記メモリ・ポートの使用を認められないときは、前記カウンタを所定の値までクリアする手段を有することを特徴とする請求項４記載のマルチプロセッサ・システム。
【請求項６】
複数のマイクロプロセッサを有し、前記マイクロプロセッサのそれぞれがデータ用（Ｄ）キャッシュと、命令用（Ｄ）キャッシュと、複数のメモリ・ポートと、入出力ユニット（ＩＯＵ）とを有するマルチプロセッサ・システムであって、
前記それぞれのマイクロプロセッサ内のメモリ制御ユニット（ＭＣＵ）は、
スイッチ・ネットワークと、
キャッシュ・インタフェース回路と、
前記ＤキャッシュおよびＩキャッシュと前記スイッチ・ネットワークの間に前記キャッシュ・インタフェース回路を結合するための手段と、
入出力インタフェース回路と、
前記ＩＯＵと前記スイッチ・ネットワークの間に前記入出力インタフェース回路を結合するための手段と、
複数のメモリ・ポート・インタフェース回路と、
前記それぞれのメモリ・ポートと前記スイッチ・ネットワークの間に前記それぞれのメモリ・ポート・インタフェース回路を結合するための手段と、
前記スイッチ・ネットワークのための仲裁を行うスイッチ仲裁手段と、
前記それぞれのメモリ・ポートのための仲裁を行う複数のポート仲裁手段と、
前記ＤキャッシュおよびＩキャッシュと前記ＩＯＵのうちの１つと前記それぞれのメモリ・ポートの間で、前記スイッチ・ネットワークおよび前記それぞれのメモリ・ポート・インタフェース回路を通じてデータを転送する要求を前記それぞれのポート仲裁手段に転送するための手段と
を備え、さらに、
前記それぞれのポート仲裁手段は、前記それぞれのメモリ・ポート・インタフェース回路が前記要求を自由に処理できるとき、ポート使用可能信号を前記スイッチ仲裁手段へ転送し、
前記スイッチ仲裁手段は、
（ａ）優先度がスレーブ装置にもとづくものであり、優先度が常にまず前記メモリ・ポートに与えられ、次に前記ＩＯＵに与えられるスレーブ優先度と、
（ｂ）優先度がマスター装置にもとづくものであり、優先度が前記ＩＯＵに、次に前記キャッシュに与えられるマスター優先度
のうちの１つを提供する手段を有し、
前記ポート使用可能信号に対応して、前記スイッチ・ネットワークがデータを前記ＤキャッシュおよびＩキャッシュと前記ＩＯＵのうちの前記１つと前記メモリ・ポートの間で転送することが可能なとき、許可信号を前記要求のソースへ転送することを特徴とするマルチプロセッサ・システム。
【請求項７】
最高優先度は、Ｄキャッシュからの介入要求に与えられることを特徴とする請求項６記載のマルチプロセッサ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、マイクロプロセッサ・アーキテクチャに関し、具体的には、複数の異種マイクロプロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャに関する。
【背景技術】
【０００２】
以下に列挙した米国特許出願は本件特許出願と同時に米国特許出願され、係属中のものであるが、これらの米国特許出願に開示されており、かつそれぞれ対応して出願された日本での特許出願に開示されている事項は、その出願番号を本明細書で引用することにより本明細書の一部を構成するものとする。
１．発明の名称「高性能ＲＩＳＣマイクロプロセッサ・ア−キテクチャ」（Ｈｉｇｈ−Ｐｅｒｆｏｒｍａｎｃｅ  ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）ＳＭＯＳ−７９８４ＭＣＦ／ＧＢＲ，米国特許出願第０７／７２７，００６号、１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、およびこれに対応する特願平５−５０２１５０（特表平６−５０１１２２号公報）。
２．発明の名称「拡張可能ＲＩＳＣマイクロプロセッサ・アーキテクチヤ」（Ｅｘｔｅｎｓｉｂｌｅ  ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）ＳＭＯＳ−７９８５ＭＣＦ／ＧＢＲ，米国特許出願第０７／７２７，０５８号、１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、およびこれに対応する特願平５−５０２１５３（特表平６−５０１１２４号公報）。
３．「アーキテクチャ上の依存関係を隔離したＲＩＳＣマイクロプロセッサ・アーキテクチャ」（ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｗｉｔｈ  Ｉｓｏｌａｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒａ  Ｄｅｐｅｎｄｅｎｃｉｅｓ）ＳＭＯＳ−７９８７ＭＣＦ／ＧＢＲ／ＲＣＣ，米題特許出願第０７／７２６，７４４号、１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、およびこれに対応する特願平５−５０２１５２（特表平６−５０２０３４号公報）。
４．発明の名称「複数型レジスタ・セットを採用したＲＩＳＣマイクロプロセッサ・アーキテクチャ」（ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｍｐｌｅｍｅｎｔｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｔｙｐｅｄ  Ｒｅｇｉｓｔｅｒ  Ｓｅｔｓ）ＳＭＯＳ−７９８８ＭＣＦ／ＧＢＲ／ＲＣＣ，米国特許出願第０７／７２６，７７３号、１９９１年７月８日出願、発明者Ｓａｎｊｉｖ  Ｇａｒｇ他、およびこれに対応する特願平５−５０２４０３（特表平６−５０１８０５号公報）。
５．発明の名称「高速トラップと例外状態をインプリメントしたＲＩＳＣマイクロプロセッサ・アーキテクチャ」（ＲＩＳＣ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｍｐｉｅｍｅｎｔｉｎｇ  ＦａＳｔ  Ｔｒａｐ  ａｎｄ  Ｅｘｃｅｐｔｉｏｎ  Ｓｔａｔｅ）ＳＭＯＳ−７９８９ＭＣＦ／ＧＢＲ／ＷＳＷ，米国特許出願第０７／７２６，９４２号、１９９１年７月８日出願、発明者Ｌｅ  Ｔ．Ｎｇｕｙｅｎ他、およびこれに対応する特願平５−５０２１５４（特表平６−５０２０３５号公報）。
６．発明の名称「シングル・チップ・ページ・プリンタ・コントローラ」（Ｓｉｎｇｌｅ  Ｃｈｉｐ  Ｐａｇｅ  Ｐｒｉｎｔｅｒ  Ｃｏｎｔｒｏｌｌｅｒ）ＳＭＯＳ−７９９１ＭＣＦ／ＧＢＲ／ＨＫＷ，米国特許出願第０７／７２６，９２９号、１９９１年７月８日出願、発明者Ｄｅｒｅｋ  Ｊ．Ｌｅｎｔｚ他、およびこれに対応する特願平５−５０２１４９（特表平６−５０１５８６号公報）。
【０００３】
なお、本明細書の記述は本件出願の優先権の基礎たる米国特許出願０７／７２６，８９３号の明細書の記載に基づくものであって、当該米国特許出願の番号を参照することによって当該米国特許出願の明細書の記載内容が本明細書の一部分を構成するものとする。
関連技術の説明
複数のプロセッサをサポートできるマイクロプロセッサ・アーキテクチャを有するコンピュータ・システムは、メモリと、データ・バス、アドレス・バスおよび制御信号バスからなるメモリ・システム・バスと、データ・バス、アドレス・バスおよび制御信号バスからなる入出力（Ｉ／Ｏ）バスと、複数の入出力デバイスと、複数のマイクロプロセッサとを備えているのが代表的である。入出力デバイスは、例えば、直接メモリ・アクセス（ＤＭＡ）コントローラ・プロセッサ、イーサネット（ＥＴＨＥＲＮＥＴ）チップ、その他の各種入出力デバイスで構成されている。マイクロプロセッサは、例えば、複数の汎用プロセッサと特殊用途のプロセッサとから構成されている。これらのプロセッサはメモリ・システム・バスを介してメモリに接続され、入出力バスを介して入出力デバイスに接続されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
これらのプロセッサがＭＡＵや入出力デバイスをアクセスするとき、アクセスの衝突が起こらないようにするには、プロセッサと入出力デバイスに優先度（優先順位）を割り当てるメカニズム（方式）を取り入れる必要がある。優先度方式には、固定優先度方式、システム条件が変化すると処理中に（ｏｎ  ｔｈｅ  ｆｌｙ）優先度を変更できる動的優先度方式、あるいは両方式を組み合わせたものがある。この種の優先度方式では、メモリと入出力デバイスの待ち時間を最小にするのと同時に、キャッシュの一貫性（ｃａｃｈｅ  ｃｏｈｅｒｅｎｃｙ）が保たれるような形で、すべてのプロセッサがメモリと入出力デバイスに容易にアクセスできるようにすることも重要である。例えば、拒否されたセマフォア（ｓｅｍａｐｈｏｒｅ）をアクセスするためにシステム・バスを繰返し使用するようにすると、システム・バスのバンド幅を大幅に縮減することができる。キャッシュ一貫性に問題が起こらないようにする予防的措置がとられていないと、複数のプロセッサが別々に同じデータを読み書きすることを容認することができない。
【課題を解決するための手段】
【０００５】
上述した問題に鑑みて、本発明の主目的は、１つまたは２つ以上の入出力バスを介して複数のメモリ・アレイおよび複数の入出力デバイスに接続された複数の異種プロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャで構成されたコンピュータ・システムを提供することにある。メモリ・アレイは、メモリ・アレイ・ユニット（Ｍｅｍｏｒｙ  Ａｒｒａｙ  Ｕｎｉｔ−ＭＡＵ）と呼ばれる、インタフェース回路をもつサブシステムにグループ化されている。これらのプロセッサの各々は、新規なメモリ制御ユニット（Ｍｅｍｏｒｙ  ＣｏｎｔｒｏＩ  Ｕｎｉｔ−ＭＣＵ）を装備している。ＭＣＵの各々はスイッチ・ネットワークを備え、このスイッチ・ネットワークはスイッチ仲裁ユニット、データ用キャッシュ・インタフェース回路、命令用キャッシュ・インタフェース回路、入出力インタフェース回路、およびポートと呼ばれる１つまたは２つ以上のポート・インタフェース回路から構成され、ポート・インタフェース回路の各々はポート仲裁ユニットを備えている。
【０００６】
スイッチ・ネットワークは、マスタ（ｍａｓｔｅｒ）デバイスとスレーブ（ｓｌａｖｅ）デバイスとが通信する手段となるものである。スイッチ側から見たとき、マスタ・デバイスとなり得るものには、Ｄキャッシュ、Ｉキャッシュ、または入出力ポート（ＩＯＵ）があり、スレーブ・デバイスとなり得るものには、メモリ・ポートまたはＩＯＵがある。
【０００７】
スイッチ・ネットワークの機能は、様々な命令およびデータ要求をキャッシュ・コントローラ・ユニット（ＣＣＵ）（Ｉキャッシュ、Ｄキャッシュ）とＩＯＵから受け取ることである。これらの要求を受け取ると、スイッチ・ネットワーク内のスイッチ仲裁ユニットとポート・インタフェース回路内のポート仲裁ユニットは要求に優先順位を付けて、該当のメモリ・ポートに要求を引き渡す（これは命令アドレスによって決まる）。そのあと、ポート、場合によっては、複数のポートは必要なタイミング信号を生成し、ＭＡＵとの間で必要なデータを送受する。それが書込み（ＷＲ）要求のときは、ポートとスイッチとのやりとりは、スイッチがすべての書込みデータをプッシュして書込みデータＦＩＦＯ（ＷＤＦ）に入れることを終えると停止する。それが読取り（ＲＤ）要求のときは、スイッチとポートとのやりとりは、ポートから読取りデータがスイッチを経由して要求側のマスタに送り返されたときのみ終了する。
【０００８】
スイッチ・ネットワークは４セットの３状態（ｔｒｉｓｔａｔｅ）バスから構成され、これらのバスを通してキャッシュ、ＩＯＵおよびメモリ・ポート間が結ばれている。４セットの３状態バスは、ＳＷ＿ＲＥＱ、ＳＷ ＷＤ、ＳＷ ＲＤおよびＳＷ＿ＩＤＢＳＴから構成されている。本発明の代表的な実施例では、バスＳＷ ＲＥＱは２９本のワイヤで構成され、アドレス、ＩＤおよび共用信号をマスタ・デバイスからスレーブ・デバイスヘ送るために使用される。ＩＤとは、メモリ要求に付けられたタグであり、要求側デバイスが返却するデータを正しいメモリ・アドレスと関連づけることを可能にするものである。共用信号とは、メモリ・アクセスが共用メモリに対するものであることを示した信号である。マスタ・デバイスがスレーブに対して要求を出すときは、スイッチ上にアドレスの３２ビット全部を送る必要はない。これは、マルチメモリ構造では、スイッチがアドレスをデコードし、要求がメモリ・ポート０、ポート１、ＩＯＵ、その他に対するものかを判別できるためである。各ポートは事前に定義されたメモリ・スペースが割り振られているので、ＳＷ ＲＥＱ上にアドレスの３２ビット全部を送信する必要がない。
【０００９】
実際には、例えば、機能コード、データ幅属性といった他の要求属性は、タイミングの制約があるためにＳＷ ＲＥＱ上に送信されない。情報をスイッチを経由して送る場合は、必要以上に１フェーズだけ遅れてポートに到着するので、メモリ要求に対する待ち時間がさらに増加することになる。従って、この種の要求属性は専用ワイヤ上をポートに送られるので、ポートはそのステート・マシンをもっと早く始動できるので、メモリ待ち時間が減少することになる。
【００１０】
図８に示すように、バスＳＷ＿ＷＤは３２本のワイヤから構成され、書込みデータをマスタ・デバイス（ＤキャッシュとＩＯＵ）からメモリ・ポート経由でＦＩＦＯへ送るために使用される。明らかなように、Ｉキャッシュはデータの読取りだけを行い、データの書込みは行わない。この３状態バスは「ダブル・ポンプ」（ｄｏｕｂｌｅ−ｐｕｍｐｅｄ）される。つまり、データ・ワードは各クロック・フェーズで転送されるので、必要とするワイヤ数が少なくなり、従って回路費用が節減される。ＷＤ００、ＷＤ０１、ＷＤ１０およびＷＤ１１はデータ・ワードである。これらのバスはダブル・ポンプされるので、バスが折り返してマスタから別のマスタヘ切り替わるとき、バスの衝突が起こらないようにする配慮が必要である。
【００１１】
図９に示すように、バスＳＷ ＲＤは６４本のワイヤから構成され、返却読取りデータをスレーブ・デバイス（メモリ・ポートとＩＯＵ）からマスタ・デバイスヘ送り返すために使用される。データはフェーズ１のときだけ送信される。このバスは、キャッシュにタイミングの制約があり、そのためにＣＬＫ１の立下がり縁でデータが有効であることが必要であるので、ダブル・ポンプされない。データは、クロック１がハイ（高）になるフェーズ１までポートから得ることができないので、ＳＷ＿ＲＤバスをダブル・ポンプしようとしたとき、キャッシュがデータを得る最も早い時期はＣＬＫ１の正エッジであって、負エッジではない。バスＳＷ＿ＲＤはダブル・ポンプされないので、このバスはフェース２のときだけアクティブになる（３状態ではない）。バスが別のマスタに切り替わるとき、バス・ドライバが衝突するという問題は起こらない。
【００１２】
バスＳＷ＿ＩＤＢＳＴは４本のワイヤから構成され、識別番号（ＩＤ）をマスタ・デバイスからスレーブ・デバイスヘ送り、ＩＤとバンク開始信号をスレーブ・デバイスからマスタ・デバイスヘ送るために使用される。
【００１３】
本発明の実施例によれば、ＩＤ  ＦＩＦＯは各スレーブ・デバイスに１つしかない。スレーブ・デバイスからのデータは常に順番に返却されるので、ＩＤをポートまで送る必要はない。ＩＤは、スイッチとマスタ・デバイスとを結ぶインタフェースに各ポート用にＦＩＦＯが１個あて設けられている別々のＦＩＦＯにストアしておくことができる。このために、ポートがｎ個あればｎ個のＦＩＦＯが各インタフェースに必要になるので、本実施例に比べて回路面積が増加するが、３状態ワイヤは２本だけ少なくすることができる。
【００１４】
ポート・インタフェースとは、スイッチ・ネットワークと外部メモリ（ＭＡＵ）とを結ぶインタフェースである。このインタフェースは、ポート仲裁ユニットと、介入（ｉｎｔｅｒｖｅｎｔｉｏｎ）を引き起こす要求と割込みがかけられた読取り要求をストアしておく手段とを備えている。また、スヌープ・アドレス・ジェネレータ（ｓｎｏｏｐ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ）も備えている。さらに、このインタフェースには正しいタイミング信号を生成してメモリ・モジュールを制御する信号発生器の働きをする回路も実装されている。
【００１５】
本発明のスイッチ・ネットワーク内の装置、例えば、内容アドレス・メモリ（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ−ＣＡＭ）、行一致比較回路、動的スイッチ／ポート仲裁回路にはいくつかのアルゴリズムが実装されている。
【００１６】
本発明のアーキテクチャにはセマフォア（ｓｅｍａｐｈｏｒｅ）が取り入れられている。セマフォアは、マルチプロセッサ・システムにおけるソフトウェアを、下述するように「テストおよびセット」命令と同期をとるために使用されるものである。本発明のアーキテクチャでは、セマフォアはキャッシュされない。キャッシュは、ＣＰＵが「テストおよびセット」命令を実行すると、ＭＣＵからセマフォアをフェッチする。
【００１７】
テストおよびセット・バイパス回路には、スピン・ロックが起こると、つまり、反復的な要求がＭＡＵシステム・バスをアクセスしてセマフォアを得ようとすると起こる、メモリ・バンド幅の損失を防止する単純なアルゴリズムが実装されている。メモリの領域、デバイスなどをロックするセマフォアでテスト命令が実行されると、ＣＡＭはそのセマフォアのアドレスをストアする。ＣＡＭ内のこのエントリ（項目）は、いずれかのプロセッサがそのセマフォアを取り囲むメモリの一部領域に書込みを行うと、クリアされる。要求したセマフォアがまだＣＡＭに残っていれば、そのセマフォアはどのプロセッサによっても解放されていないので、そのセマフォアを得るために実際にメモリをアクセスする必要はない。その代わりに、論理１のブロック（＄ＦＦＦＦ）（セマフォア失敗）が要求したキャッシュに送り返され、セマフォアがまだロック中であることを知らせる。従って、セマフォアは実際にはアクセスされないので、メモリ幅が節約されることになる。
【００１８】
セマフォアにオール１以外を書くと、そのセマフォアはクリアされる。その場合、スレーブ側ＣＰＵは共用メモリを調べて、いずれかのＣＰＵ（自身を含めて）が当該セマフォアに書込みを行ったかどうかを確かめる必要がある。いずれかのＣＰＵがＣＡＭ内のエントリに一致するセマフォアに書込みを行っていると、ＣＡＭ内のそのエントリがクリアされる。キャッシュが次にそのセマフォアヘのアクセスを試みたときは、そのエントリがＣＡＭにないので、メイン・メモリからセマフォアを実際にフェッチして、それを「失敗」、つまり、オール１にセットすることになる。
【００１９】
行一致比較回路の機能は、現在の要求が前の要求と同じ行アドレスをもっているかどうかを判定することである。そうであれば、ポートはＲＡＳ要求を取り消して（ｄｅ−ａｓｓｅｒｔ）、ＲＡＳ課金前（ｐｒｅ−ｃｈａｒｇｅ）時間ペナルティを負担する必要がない。従って、メモリ待ち時間が短縮化され、使用可能なバンド幅が増加することになる。行一致は主にダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）で使用されるが、ＭＡＵを新アドレスの上位ビットにラッチする必要がなくなったので、スタチック・ランダム・アクセス・メモリ（ＳＲＡＭ）や読取専用メモリ（ＲＯＭ）でも使用可能である。従って、メモリヘのアクセス要求があると、アドレスがスイッチ・ネットワークのアドレス・バスＳＷ＿ＲＥＱ上を送信され、行アドレスがデコードされ、ＭＵＸラッチにストアされる。このアドレスが前の要求の行アドレスと判定された場合は、キャッシュまたはＩＯＵが新しい要求を出すと、新アドレスに関連するアドレスがデコードされ、その行アドレスが前の行アドレスと比較される。一致するものがあれば、行一致がヒットしたことになり、一致した要求に下述するように優先度が与えられる。
【００２０】
動的スイッチ／ポート仲裁回路では、２種類の仲裁が行われる。１つは、メモリ・ポートの資源、つまり、ポート０．．．ポートＮの仲裁であり、もう１つはスイッチ・ネットワークのアドレスおよび書込みデータ・バスの資源、ＳＷ＿ＲＥＱとＳＷ＿ＷＤの仲裁である。
【００２１】
いくつかのデバイスはメイン・メモリからデータを同時に要求することができる。そのデバイスとは、Ｄキャッシュ、ＩキャッシュおよびＩＯＵである。各々のマスタに特定の優先度を与える優先度方式は、「重要度」または「緊急度」の高いデバイスができる限り早くサービスを受けられるようにセットアップされる。しかし、厳格な固定仲裁方式は、優先度の低いデバイスを締め出す可能性があるために使用されていない。その代わりに、各種デバイスに異なる優先度を処理中に（ｏｎ  ｔｈｅ  ｆｌｙ）割り付ける動的仲裁方式が使用されている。この動的仲裁方式に影響を与える要因として、次のものがある。
【００２２】
１．そのデバイスの固有優先度
２．要求したアドレスは以前にサービスを受けた要求と行が一致するか
３．そのデバイスは余りにも多くの回数サービスを受けることが拒否されたか  ４．そのマスタは余りにも多くの回数サービスを受けたか
デバイスからの各要求は固有の優先度をもっている。ＩＯＵは優先度が最も高く、そのあとにＩキャッシュとＤキャッシュが続く。しかし、下述するように、Ｄキャッシュからの介入（ｉｎｔｅｒｖｅｎｔｉｏｎ−ＩＴＶ）要求は、スレーブ側処理エレメント（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ−ＰＥ）が更新データをできる限り早く受け取る必要があるために、すべての中で優先度が最も高くなっている。
【００２３】
各種デバイスの固有優先度はいくつかの要因によって変更される。優先度の低いデバイスがサービスを拒否された回数はモニタされており、その回数が所定の値まで達すると、優先度の低いそのデバイスにより高い優先度が与えられる。これに対して、あるデバイスに優先度が与えられる回数もモニタされ、そのデバイスだけがバスを「独占」（ｈｏｇ）していれば、優先度を拒否して優先度の低いデバイスがそのバスをアクセスすることを許可する。要求の固有優先度を変更するために使用される３番目の要因は行一致（ｒｏｗ  ｍａｔｃｈ）である。行一致が重要なのは、主にＩキャッシュの場合である。あるデバイスが以前にサービスを受けた要求と同じ行アドレスをもつメモリー・ロケーションを要求すると、要求したデバイスの優先度は高くされる。これが行われるのは、ＲＡＳの要求を取り消し（ｄｅ−ａｓｓｅｒｔ）、ＲＡＳを再要求する（ｒｅ−ａｓｓｅｒｔ）手間を省くためである。行が一致して要求がサービスを受けるたびに、プログラマブル・カウンタはデクリメントされる。例えば、カウンタがゼロまで達すると、行一致優先度ビットがクリアされるので、新しいマスタにバスヘのアクセス権が与えられる。ポートの新マスタが旧マスタと異なるとき、あるいは要求が行が一致した要求でないとき、プログラム可能な値が再びカウンタに事前ロード（ｐｒｅ−ｌｏａｄ）される。
【００２４】
メモリ・ポートに対する書込み要求は、スイッチ・ネットワークの書込みデータ・バス（ＳＷ＿ＷＤ）が使用可能であるときだけ許可される。使用可能でないときは、他に要求があれば、その要求が選択される。１つだけ例外がある。それはＤキャッシュからの介入（ＩＴＶ）要求である。このような要求が存在し、ＳＷ＿ＷＤバスが使用可能でないと、どの要求も選択されない。その代わりに、システムはＳＷ ＷＤバスが解放されるまで待ってから介入要求が許可される。
【００２５】
スイッチ・ネットワークには、ソフトウェアで選択可能な２つの仲裁方式が採用されている。その方式とは、次のものである。
【００２６】
１．スレーブ優先度方式。この方式では、スレーブまたは要求されたデバイス（すなわち、メモリまたはＩＯＵポート）に基づいて優先度が与えられる。
【００２７】
２．マスタ優先度方式。この方式では、マスタまたは要求側のデバイス（すなわち、ＩＯＵ、Ｄキャッシュ、Ｉキャッシュ）に基づいて優先度が与えられる。  スレーブ優先度方式では、優先度は常に最初にメモリ・ポート、例えば、ポート０、１、２．．．に与えられ、次にＩＯＵに与えられ、再びポート０に戻って与えられる。この方式は、一般にラウンド・ロビン（ｒｏｕｎｄ−ｒｏｂｉｎ）方式と呼ばれている。マスタ優先度方式は固定優先度方式であり、優先度は最初にＩＯＵに与えられ、次にＤキャッシュおよびＩキャッシュに与えられる。スイッチ仲裁のマスタ優先度方式では、介入（ＩＴＶ）要求に最高の優先度が与えられる場合もある。プリフェッチ・バッファがやがて空になるときは、Ｉキャッシュに最高の優先度が与えられる場合もある。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を図面を参照しつつ説明する。図１は、本発明によるマイクロプロセッサ・アーキテクチャを符号１で総称して示すものである。このアーキテクチャ１には、複数の汎用マイクロプロセッサ２、３、４．．．Ｎ、特殊用途プロセッサ５、オービタ（仲裁回路）６およびメモリ／メモリ・アレイ・ユニット（ＭＡＵ）７が設けられている。マイクロプロセッサ２〜Ｎは複数の同種プロセッサでまたは複数の異種プロセッサで構成することが可能である。特殊用途プロセッサ５は例えばグラフィック・コントローラで構成することが可能である。プロセッサ２〜５はすべて１つまたは２つ以上のメモリ・ポートＰＯＲＴO …ＰＯＲＴN を介してＭＡＵシステム・バス２５に接続されている。ＭＡＵシステム・バス２５は、ＭＡＵデータ・バス８、ＲＯＷ／ＣＯＬアドレス・バス９、マルチプロセッサ制御バス１０、ＭＡＵ制御バス１１およびバス仲裁制御信号バス１２からなり、それぞれ複数の双方向信号バス１３〜１７で結ばれている。バス１２は、例えば、アクセスの仲裁を要求し、アクセス許可を与え、あるいはＭＡＵデータ・バス８が使用中（ｂｕｓｙ）であることを通知するために使用される。オービタ６は双方向信号ライン１８を介してバス１２に接続されている。ＭＡＵ７はＲＯＷ／ＣＯＬアドレス・バス９およびメモリ制御バス１１に接続されており、信号はこれらのバスから単方向信号ライン１９と２０を介してＭＡＵへ転送され、双方向データ・バス２１を介してＭＡＵデータ・バス８へ転送される。データ・バス８と２１は、代表例では、６４ビット・バスになっているが、ソフトウェア制御の下で３２ビット・バスとして動作させることも可能である。このバスは例えば、１２８ビットといったように、その他のビット幅にすることも可能である。
【００２９】
プロセッサ２〜Ｎの各々は、代表例では、入出力ポート５３を備えている。この入出力ポート５３は、以下で図２を参照して詳しく説明するが、直接メモリ・アクセス（ＤＭＡ）プロセッサ３０、イーサネット（ＥＴＨＥＲＮＥＴ）インタフェース３１、その他の入出力デバイスなどの複数の周辺入出力デバイスに、３２ビット入出力バス３３または任意的な３２ビット入出力バス３４および複数の３２ビット双方向信号バス３５〜４２を介して接続されている。オプションとしての入出力バス３４はプロセッサの１つまたは２つ以上が特殊目的入出力デバイス４３をアクセスするために使用できる。
【００３０】
図２に示すように、プロセッサ２−Ｎの各々は、データ用キャッシュ（Ｄキャッシュ）５１と命令用キャッシュ（Ｉキャッシュ）５２を備えたキャッシュ制御ユニット（ＣＣＵ）４９に接続されたメモリ制御ユニット（ＭＣＵ）（全体を符号５０で示している）と入出力ポート５３を備えている。入出力ポート５３は以下ではＩＯＵと略称することがあるが、入出力バス３３または３４に接続されている。
【００３１】
ＭＣＵ５０は、ＣＣＵ４９、つまり、Ｄキャッシュ５１とＩキャッシュ５２（読取専用）、ＩＯＵ５３およびＭＡＵ７間でＭＡＵシステム・バス２５を経由してデータと命令がそこから転送（読み書き）される回路である。ＭＣＵ５０は、以下で詳しく説明するように、キャッシュ一貫性（ｃａｃｈｅ−ｃｏｈｅｒｅｎｃｙ）を保証する。このキャッシュ一貫性は、各スレーブ側ＣＰＵ内のＭＣＵが、ＭＡＵアドレス・バス９上のマスタ側ＣＰＵのすべてのトランザクションをモニタして、つまり、スヌープ（ｓｎｏｏｐ）して、スレーブ側ＣＰＵ内のキャッシュがマスタ側ＣＰＵから得られる新しいデータを要求しているのか、新しいデータをマスタ側ＣＰＵへ送ろうとしているのかを判断することによって達成される。ＭＣＵ５０は６メモリ・ポートで使用するように拡張可能であり、最高４ウェイまでのメモリ・インタリービングをＭＡＵデータ・バス８上で行うことをサポートできる。また、外部６４または３２ビット・データ・バス８の使用をサポートすることができ、修正ハミング・コードを使用して１データ・ビット・エラーを訂正し、２またはそれ以上のデータ・ビット・エラーを検出する。
【００３２】
本発明のアーキテクチャでは、キャッシュ・サブブロック、つまり、キャッシュ・ラインのサイズは、メモリ・バス・サイズと相関関係がある。例えば、バス・サイズが３２ビットならば、サブブロック・サイズは一般に１６バイトとなる。バス・サイズが６４ビットならば、サブブロック・サイズは一般に３２バイトとなる。バス・サイズが１２８ビットならば、サブブロックは６４バイトとなる。上述したように、ＭＣＵ５０は、１、２または４ウェイのインタリービング、つまり、サイクルごとに転送されるバイト数をサポートするようにプログラムできる設計になっている。
【００３３】
ＭＣＵ５０には、ポートＰO …ＰN で示した１つまたは２つ以上のインタフェース、スイッチ・ネットワーク５４、Ｄキャッシュ・インタフェース５５、Ｉキャッシュ・インタフェース５６および入出力インタフェース５７が装備されている。図３を参照して詳しく後述するが、ポート・インタフェースＰ0 …ＰN の各々はそれぞれをＰＡＵ0 …ＰＡＵN で示したポート仲裁ユニットを備えている。スイッチ・ネットワーク５４はスイッチ仲裁ユニット５８を備えている。
【００３４】
ＭＣＵ５０が２つまたはそれ以上のポート・インタフェースを装備するときは、ポート・インタフェースＰ0 …ＰN の各々は個別のＭＡＵシステム・バスに接続されており、これは図１を参照して上述したバス２５と同じものである。図２には、この種の２バスは２５0 および２５N の符号で示されている。バス２５N はバス８N 、９N 、１０N 、１１N および１２N から構成され、これらはそれぞれバス１３N 、１４N 、１５N 、１６N および１７N でポートＰN に接続されている。バス８N 〜１７N は図１を参照して上述したバス８〜１７と同じものである。同様に、ポート・インタフェースの各々は、書込み（ＷＲ）データ・バス６０、６０N 、読取り（ＲＤ）データ・バス６１、６１N 、およびアドレス・バス６２、６２N からなる複数の同種個別バスを介してスイッチ・ネットワーク５４に接続され、複数の制御バス７０、７１、８０、８１、９０、９１および７０N 、７１N 、８０N 、８１N 、９０N 、９１N を介してキャッシュと入出力インタフェース５５、５６、５７の各々に接続されている。なお、符号中の添字N は、ポート・インタフェースＰN とキャッシュおよび入出力インタフェースとの間を結ぶバスを示している。
【００３５】
スイッチ・ネットワーク５４とＤキャッシュ・インタフェース５５はＷＲデータ・バス７２、ＲＤデータ・バス７３およびアドレス・バス７４を介して接続されている。スイッチ・ネットワーク５４とＩキャッシュ・インタフェース５６はＲＤデータ・バス８２およびアドレス・バス８３を介して接続されている。上述したように、Ｉキャッシュ５２からは書込み（ＷＲ）要求は出されない。スイッチ・ネットワーク５４と入出力インタフェース５７は、ＲＤデータ・バス９２、ＷＲデータ・バス９３およびアドレス・バス９４からなる複数の双方向信号バスを介して接続されている。
【００３６】
Ｄキャッシュ・インタフェース５５とＣＣＵ４９、つまり、Ｄキャッシュ５１は、ＷＲデータ・バス１００、ＲＤデータ・バス１０１、アドレス・バス１０２および対の制御信号バス１０３、１０４からなる複数の単方向信号バスを介して接続されている。Ｉキャッシュ・インタフェース５６とＣＣＵ４９、つまり、Ｉキャッシュ５２は、ＲＤデータ・バス１１０、アドレス・バス１１１、および対の制御信号バス１１２、１１３からなる複数の単方向信号バスを介して接続されている。入出力インタフェース５７とＩＯＵ５３は、Ｒ／Ｗ−Ｉ／Ｏマスタ・データ・バス１２０、Ｒ／Ｗ−Ｉ／Ｏスレーブ・データ・バス１２１、対の制御信号ライン１２３、１２４および対のアドレス・バス１２５、１２６からなる複数の単方向信号バスを介して接続されている。入出力（Ｉ／Ｏ）マスタおよび入出力（Ｉ／Ｏ）スレーブという名称は、以下で詳しく説明するように、入出力操作がマスタとして行われているか、スレーブとして行われているとき、特定の信号ラインを利用したデータ伝送を示すために用いられている。
【００３７】
図３は、スイッチ・ネットワーク５４のメイン・データ経路を示し、Ｄキャッシュ・インタフェース５５とポート・インタフェースＰO 間の接続関係を示したブロック図である。ポート・インタフェースＰ1 …ＰN およびＩキャッシュと入出力インタフェース５６、５７間の接続関係も同じであるが、Ｉキャッシュ・インタフェース５６からは書込みデータ要求が出されない点が異なる。図３に示すように、ポート・インタフェースＰ0 …ＰN の各々には、さらに、読取り要求の識別コード（ＩＤ）をストアするためのＩＤ  ＦＩＦＯ（先入れ先出し）１３０と、ＭＡＵへのアクセスが許可されるまで書込みデータを一時的にストアしておくための書込みデータ（ＷＤ）ＦＩＦＯ１３１と、ネットワーク５４が使用可能になるまで読取りデータを一時的にストアしておくための読取りデータ（ＲＤ）ＦＩＦＯ１３２が設けられている。
【００３８】
スイッチ・ネットワーク５４には、それぞれ、要求／アドレス・バスＳＷ＿ＲＥＱ〔２８：０〕、書込みデータ・バスＳＷ＿ＷＤ〔３１：０〕、読取りデータ・バスＳＷ＿ＲＤ〔６３：０〕、および識別／バンク開始信号バスＳＷ＿ＩＤＢＳＴ〔３：０〕とも呼ばれる、複数の信号バス１４０〜１４３と、スイッチ仲裁ユニット５８とが設けられている。スイッチ仲裁ユニット５８はマルチポート入出力要求を取り扱うことを目的としている。
【００３９】
キャッシュおよびポート・インタフェースは一部の信号バスで直接に、他の信号バスでスイッチ・ネットワーク・バスを介して間接に接続されている。例えば、ポート・インタフェースＰ。…ＰN の各々におけるポ−卜仲裁ユニットＰＡＵはＧＲＡＮＴ制御ライン７０ａおよびＲＥＱＵＥＳＴ制御ライン７１ａからなる対の制御信号バスを介してスイッチ仲裁ユニット５８に接続されている。スイッチ仲裁ユニット５８はＧＲＡＮＴ制御信号ライン７１ｂを介してＤキャッシュ・インタフェース５５に接続されている。ライン７０ａ、７０ｂおよびライン７１ａ、７１ｂは図２のバス７０と７１における信号ラインである。ゲート７５とレジスタ７６、７８は、それぞれ、介入を引き起こす要求をストアするためと、割込みをかけられた読取り要求をストアするために設けられている。他方のポート、キャッシュおよび入出力インタフェース間は対応する制御バスで結ばれている。
【００４０】
スイッチ・ネットワーク５４の機能は、様々な命令とデータ要求をキャッシュ制御ユニット（ＣＣＵ）、つまり、Ｉキャッシュ５１、Ｄキャッシュ５２、およびＩＯＵ５３から受け取ることである。これらを要求を受け取ると、一度に１つの要求を引き受ける、スイッチ・ネットワーク５４内のスイッチ仲裁ユニット５８は要求に優先順位を付けて、その要求に付随したアドレスに応じて、該当するポート・インタフェースＰ。…ＰN または入出力インタフェースに要求を引き渡す。ポートと入出力インタフェースは、例えば、要求に付随するアドレスの上位ビットによって選択される。各ポート・インタフェースはＭＡＵアドレスをストアするためのレジスタ７７をもっている。ポート・インタフェースは必要なタイミング信号を発生し、ＭＡＵ７との間で必要なデータをやりとりする。要求がＷＲ要求ならば、ポート・インタフェースとスイッチ・ネットワーク５４との間のやりとりは、スイッチが書込みデータをすべてプッシュしてＷＤＦ（書込みＦＩＦＯ）１３１に入れたとき停止する。要求がＲＤ要求ならば、スイッチ・ネットワーク５４とポート・インタフェースとの間のやりとりは、ポート・インタフェースが読取りデータをスイッチ・ネットワーク５４へ送り返したときだけ終了する。
【００４１】
以下で詳しく説明するように、スイッチ・ネットワーク５４は、マスタ・デバイスとスレーブ・デバイスとが交信し合うために用意されたものである。この意味において、マスタ・デバイスとなり得るものには、次のものがある。
【００４２】
１．Ｄキャッシュ
２．Ｉキャッシュ
３．ＩＯＵ
スレーブ・デバイスとなり得るものには、次のものがある。
【００４３】
１．メモリ・ポート
２．ＩＯＵ
スイッチ・ネットワーク５４は、必要な介入要求を該当するポート・インタフェースヘ送って、実行させることを担当する。
【００４４】
上述したように、スイッチ・ネットワーク５４は、キャッシュ・インタフェース、入出力インタフェースおよびメモリ・ポート・インタフェース間を接続するための４セットの３状態（ｔｒｉ−ｓｔａｔｅ）バスから構成されている。４セットの３状態バスとはＳＷ＿ＲＥＱ、ＳＷ＿ＷＤ、ＳＷ＿ＲＤ、ＳＷ＿ＩＤＢＳＴである。ＳＷ＿ＲＥＱ〔２８：０〕と名付けたバスは、スレーブ・デバイス側のアドレス、メモリ共用信号およびＩＤをマスタ・デバイスからスレーブ・デバイスヘ送るために使用される。上記に示したように、マスタとなり得るのは、Ｄキャッシュ、ＩキャッシュまたはＩＯＵであり、スレーブ・デバイスとなり得るのはメモリ・ポートまたはＩＯＵである。マスタ・デバイスが要求をスレーブに対して出すときは、アドレスの全３２ビットをスイッチ・バスＳＷ＿ＲＥＱ上を送る必要がない。これは、本発明の多重メモリ・ポート構造では、各ポートにはあらかじめ定義されたメモリ空間が割り振られているためである。
【００４５】
機能コード（ＦＣ）やデータ幅（ＷＤ）などの、他の要求属性は、タイミング上の制約があるためＳＷ＿ＲＥＱバスから送信されない。スイッチ・ネットワーク５４上を送られる情報は、その情報が専用ワイヤ上を送られた場合よりも１クロック・フェーズだけ遅れてポート・インタフェースに到着する。従って、初期の要求属性（ｅａｒｌｙ  ｒｅｑｕｅｓｔ  ａｔｔｒｉｂｕｔｅ）を１フェーズだけ早くポート・インタフェースヘ送っておけば、ポート・インタフェースはそのステート・マシンを早く始動できるので、メモリ待ち時間が減少することになる。これは、図３に示すように、別の信号ライン７９によって行われる。ライン７９は図２の制御信号バス７０内のラインの１つである。
【００４６】
ＳＷ＿ＷＤ〔３１：０〕バスは、書込みデータをマスタ・デバイス（ＤキャッシュとＩＯＵ）からメモリ・ポート・インタフェース内のＷＤ  ＦＩＦＯ１３１へ送るために使用される。この３状態バスはダブル・ポンプされる。つまり、データの３２ビットがフェーズごとに転送される。バスはダブル・ポンプ（ｄｏｕｂｌｅ−ｐｕｍｐｅｄ）されるので、回路を設計する際に、バスが折り返して、あるマスタから別のマスタに切り替わるときバスの衝突が起こらないようにする配慮が必要である。理解されるように、ダブル・ポンプを行うと、必要とするビット・ライン数が少なくなるので、必要とされる高価なワイヤ数を最小にし、パフォーマンス低下を最小にすることができる。
【００４７】
図９に示すように、ＳＷ＿ＲＤ〔６３：０〕は、返却読取りデー夕をスレーブ・デバイス（メモリ・ポートまたはＩＯＵ）からマスタ・デバイスヘ送り返すために使用される。データはクロックのフェーズ１のとき（ＣＬＫ１がハイのとき）だけ送信される。このバスは、キャッシュにタイミング上の制約があるためダブル・ポンプされない。ＣＬＫ１の立下がり縁でデータが有効であることがキャッシュの必要条件である。データはフェーズ１時にポート・インタフェースから受信されるので、ＳＷ＿ＲＤバスがダブル・ポンプされていないと、キャッシュが最も早くデータを得るのは、ＣＬＫ１の正縁のときであって、ＣＬＫ１の負縁のときではない。ＳＷ＿ＲＤバスはダブル・ポンプされないので、このバスはＣＬＫ１時だけアクティブであるので（３状態ではない）、バス・バッファが衝突するという問題は起こらない。つまり、２つのバス・ドライバが同じワイヤを同時にドライブすることはない。
ＳＷ ＩＤＢＳＴ〔３：０〕は、識別（ＩＤ）コードとバンク開始コードをスレーブ・デバイスからマスタ・デバイスヘバス８８を経由して返すために使用される。スレーブ・デバイスからのデータは常に順番に返されるので、一般的にはＩＤをポートまで送る必要はない。ＩＤは、インタフェース内の各ポートごとに１つあて用意されている個々のＦＩＦＯにストアしておくことができる。
【００４８】
再び読取りＦＩＦＯ１３２に戻って説明すると、データはスイッチ読取りバスＳＷ＿ＲＤが使用可能でないときだけこのＦＩＦＯにストアされる。バスＳＷ＿ＲＤが現在他のポートで使用中であれば、到来読取りデータは一時的に読取りＦＩＦＯ１３２にプッシュされ、ＳＷ＿ＲＤバスが解放されると、データはＦＩＦＯからポップされて、スイッチ・ネットワーク５４を通って要求側キャッシュまたはＩＯＵへ転送される。
【００４９】
Ｄキャッシュ・インタフェース５５、Ｉキャッシュ・インタフェース５６、入出力インタフェース５７およびポート・インタフェースＰ0 …ＰN 間のデータ転送を、Ｄキャッシュ・インタフェース５５との間でデータを受け渡しする場合を例に挙げて、以下説明することにする。
【００５０】
Ｄキャッシュ、ＩキャッシュまたはＩＯＵのいずれかがポートをアクセスしたいときは、そのポートが空きになっているかどうかを確かめるために、図３に示すように要求を要求信号ライン７０ｂ上をポート仲裁ユニットＰＡＵ0 へ送る。ポートが空きになっていれば、ポート・インタフェースは、要求が存在することを要求制御ライン７１ａを利用してスイッチ仲裁ユニット５８に通知する。スイッチ・ネットワーク５４が空きになっていれば、スイッチ仲裁ユニット５８は、要求が制御ライン７１ｂ上で許可されたことを許可制御ライン７０ａ上のポートとマスタ、例えば、Ｄキャッシュ・インタフェース５５に通知する。
【００５１】
要求が書込み要求であれば、Ｄキャッシュ・インタフェース回路５５はバス仲裁制御ユニット１７２をチェックして、ＭＣＵ５０にＭＡＵバス２５が許可されているかどうかを確かめる。ＭＣＵにまだバス２５が許可されていなければ、バス要求が出される。バスが許可されているか、あるいは許可されると、ポート仲裁ユニット１７１はスイッチ・バス１４０、１４１の要求を行う。スイッチ・バス１４０、１４１へのアクセスが許可されると、Ｄキャッシュ・インタフェース回路５５は該当するアドレスをスイッチ・バスＳＷ＿ＲＥＱ１４０上に送出し、同時に、書込みデータを書込みデータ・バスＳＷ＿ＷＤ１４１上に送出し、そのデータをＷＤ  ＦＩＦＯ（ＷＤＦ）１３１にストアする。データがＷＤＦに置かれると、ＭＣＵはデータをＭＡＵに順次に書き出していく。書込みデータをポートに送る前にバスが許可されているかどうかを確かめるようにしたのは、外部プロセッサからのスヌープ要求があるとき、ＭＣＵがＷＤＦをチェックしないですむようにするためである。従って、変更されたデータがあるかどうかのチェックは、キャッシュだけで行われる。
【００５２】
要求が読取り要求であり、ポートとスイッチ・ネットワークが上述したように空きになっていると判断されると、ポート・インタフェースはＳＷ＿ＲＥＱバス上を要求側ユニットから送られてきたアドレスを受け取り、ＭＡＵアドレス・バス９の許可を得るための仲裁をオービタに要求する。ポートがバスを実際に使用するためには、その前に、ＭＡＵアドレス・バスが許可されたとのＭＡＵオービタからの通知が必要である。そのあと、要求はスイッチからポートヘ転送される。ＭＡＵアドレス・バス９が空きになっていると、アドレスがＭＡＵアドレス・バス上に送出される。データがいつ受信されるかは、事前にポートに知らされる。ポートはスイッチ返却データ・バスを要求するので、バスが使用中でなければ、データが返却されるとき使用可能になっている。バスが空きになっていると、ポートは読取りデータをバス上に送出し、Ｄキャッシュ、Ｉキャッシュまたは入出力インタフェースはそのデータを取り出して、それぞれの要求側ユニットヘ引き渡すことになる。
【００５３】
Ｄ／Ｉキャッシュ５１、５２が入出力アドレスの要求を行うと、Ｄ／Ｉキャッシュ・インタフェース５５、５６はその要求を要求バスＳＷ＿ＲＥＱを経由して入出力インタフェース５７に受け渡す。入出力インタフェースト５７は、要求をストアしておくためのその待ち行列に使用可能なエントリをもっていれば、要求を制御信号ライン９０を経由してスイッチ仲裁ユニット５８に引き渡す。スイッチ・ネットワーク５４が空きになっていれば、もう一度、スイッチ仲裁ユニット５８はＤ／Ｉキャッシュ・インタフェース５５、５６に通知して、アドレスをアドレス・バスＳＷ＿ＲＥＱ上に送出できるようにし、それが書込み要求ならば（Ｄキャッシュのみ）、書込みデータを書込みデータ・バスＳＷ＿ＷＤ上に送出してＩＯＵへ転送できるようにする。同様に、Ｄ／Ｉキャッシュ・インタフェース５５、５６からの要求が読取り要求ならば、入出力インタフェース５７からの読取りデータは、スイッチ・ネットワークの読取りデータ・バスＳＷ＿ＲＤを経由して入出力インタフェース５７から転送されて、Ｄ／Ｉキャッシュ・インタフェース５５、５６に渡され、そこからＤ／Ｉキャッシュ５１、５２へ転送される。
【００５４】
図４に示すように、本発明によるポート・インタフェースとキャッシュには、それぞれを符号１６０、１６８で全体を示したテストおよびセット（ＴＳ）バイパス回路が設けられている。このバイパス回路はＭＡＵアドレス・バス９上にセマフォアのアドレスがあるかどうかをモニタ、つまり、スヌープ（ｓｎｏｏｐ）する。理解されるように、回路１６０、１６８はセマフォアをスピン・ロックしたとき消費されるメモリ・バンド幅を節減する。
【００５５】
ＴＳ回路１６０、１６８には、スヌープ・アドレス・ジェネレータ（ｓｎｏｏｐ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ）１６１、ＴＳ内容アドレス・メモリ（ＣＡＭ−ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）１６２、フリップフロツプ１６３およびＭＵＸ１６４、１６５が設けられている。
【００５６】
セマフォア（ｓｅｍａｐｈｏｒｅ）とは、メモリ内のアドレス可能ロケーションにストアされて、メモリやその他のアドレス可能資源のある領域へのアクセスを制御するためのフラグまたはラベルである。例えば、あるＣＰＵがセマフォアが関連づけられているあるメモリ領域をアクセスするとき、その領域を他のＣＰＵがアクセスするのを望まないときは、そのアクセスするＣＰＵはセマフォアにオール１を入れる。別のＣＰＵがその領域へのアクセスを試みるときは、まずそのセマフォアを調べる。セマフォアがオール１であることが分かると、その２番目のＣＰＵはアクセスが拒否されることになる。そのときまでに、２番目のＣＰＵがアクセス要求をなん度も出していると、アクセスがなん度も拒否され、その結果、「セマフォアのスピン・ロック」と呼ばれる現象が起こることになる。このセマフォアのスピン・ロックが起こると、アクセス要求のたびに、要求側ＣＰＵは読み書きを行わなければならないので、メモリ・バンド幅量が過度に使用されるという問題が起こる。
【００５７】
図４に示したテストおよびセット・バイパス回路１６０、１６８には、セマフォアのスピン・ロックが起こったときメモリ・バンド幅の過度の使用を防止する単純なアルゴリズムが実装されている。
【００５８】
動作について説明すると、あるＣＰＵ、より正確には、プロセッサ内のあるプロセスがセマフォアが関連づけられているあるメモリ領域を要求するために、まずロードおよびセット命令、つまり、セマフォアヘのアクセス要求と関連する所定の命令を出すと、そのＣＰＵは、まず、そのセマフォアをアクセスし、セマフォアのアドレスをＣＡＭ１６２にストアする。複数のロードおよびセット命令を出すと、複数のエントリがＣＡＭ１６２にストアされることになる。セマフォアがオール１（＄ＦＦＦＦ）ならば、アクセスが拒否されたことを意味する１が返される。別のプロセスがそのセマフォアを要求するときは、そのＣＡＭを調べる。要求したセマフォアのアドレスがまだＣＡＭに残っていると、セマフォアが別のプロセッサ／プロセスによってまだ解放されていないことがＣＰＵに通知されるので、セマフォアをスピン・ロックさせる必要がない。その代わりに、ＭＣＵはオール１（セマフォア失敗）を受け取るので、セマフォアはメモリに要求されないので、メモリ・バンド幅が必要以上に使用されることが防止される。他方、セマフォアのアドレスがＣＡＭになければ、セマフォアが以前に要求されたことがなかったか、すでに解放されていることを意味する。
【００５９】
ＭＡＵバスは、バイト・アドレスを提供しない。セマフォアが解放されたときは、ＣＡＭをクリアする必要がある。セマフォアを取り囲む最小の検出可能メモリ・ブロックのいずれかの部分へのアクセスがＭＡＵバス上のいずれかのプロセッサによって行われると、ＣＡＭがクリアされる。現ブロック・サイズは４または８バイトである。このようにすると、メモリ・ブロック内の別のロケーションヘの書込みによってセマフォアがクリアされなかったときＣＡＭがクリアされる場合があっても、ＣＡＭはクリアされたセマフォアのアドレスを保持することはない。セマフォアは、いずれかのプロセッサがオール１以外をセマフォアに書き込むと、クリアされる。
【００６０】
セマフォアが置かれているメモリ・ブロックヘの書込みが行われたあと、セマフォアがテストおよびセット命令によってアクセスされる場合は、メモリが再びアクセスされる。セマフォアがすでにクリアされていると、クリアされた値がＣＰＵに返され、ＣＡＭにそのアドレスが再びセットされる。セマフォアがクリアされていないか、再びロックされていたときも、ＣＡＭにセマフォア・アドレスがロードされるが、ロックされた値がＣＰＵに返される。
【００６１】
図４の回路１６０の動作について説明すると、回路１６０はＭＡＵアドレス・バス９をスヌープし、そこで検出されたアドレス信号を使用して、アドレス・ジェネレータ１６１で対応するスヌープ・アドレスを生成し、このアドレスはライン１６９上をＣＡＭ１６２へ送信され、その内容と比較される。ヒットすると、つまり、ＣＡＭ１６２内のエントリと一致するものがあると、ＣＡＭ１６２のそのエントリがクリアされる。ロードおよびセット要求が例えばＤキャッシュからＭＣＵに対して行われると、Ｄキャッシュ・インタフェース回路はアドレスをＣＡＭのエントリと比較する。ＣＡＭ１６２に一致するものが見つかると（ヒットすると）、そのＩＤがキャッシュ・インタフェースのレジスタ１６３にラッチされ、このＩＤとオール１（＄ＦＦＦＦ）がＭＵＸ１６４、１６５を経由してキャッシュ・インタフェースに返される。
【００６２】
アドレスをスヌープし、ＣＡＭ１６２で比較を行うためにそれからスヌープ・アドレス・ジェネレータ１６１でスヌープ・アドレスを生成することは、ＭＡＵアドレス・バス９上に現れたアドレスが非共用メモリ・ロケーションに対するものであっても、好ましくない影響を与えないで続けられる。スヌープ・アドレス・ジェネレータ１６１は、一般的には、ＭＡＵアドレス・バス９上に現れたＭＡＵ行列アドレスの１１ビットからキャッシュ・ブロック・アドレス（上位ビット）を、ＭＡＵ制御信号ＲＡＳ、ＣＡＳおよび制御信号バス１１上のＢＫＳＴ  ＳＴＡＲＴ  ＭＡＵ制御信号を使用して生成する。
【００６３】
図５に示すように、全体を符号１７０で示した、キャッシュ一貫性を保つための本発明の他の形態による回路が設けられている。キャッシュ一貰性が必要とされるのは、マルチプロセッサ環境では、マスタ・デバイスとスレーブ・デバイス、つまり、ＣＰＵがすべて最新のデータをもつことを保証するためである。
【００６４】
回路１７０を構成するチップの外側に示すように、オービタ６、メモリ７、ＭＡＵアドレス・バス９、ＭＡＵ制御バス１１およびマルチプロセッサ制御バス１０が設けられている。回路１７０には、ポート仲裁ユニット・インタフェース１７１、バス仲裁制御ユニット１７２、マルチプロセッサ・コントロール１７３および図４に示すスヌープ・アドレス・ジェネレータ１６１が設けられている。Ｄキャッシュ・インタフェース５５は対の制御信号バス１７４、１７５とスヌープ・アドレス・バス１７６を介してマルチプロセッサ・コントロール１７３に接続されている。Ｉキャッシュ・インタフェース５６は対の制御信号バス１７７、１７８とスヌープ・アドレス・バス１７６を介してマルチプロセッサ・コントロール１７３に接続されている。スヌープ・アドレス・ジェネレータ１６１は制御信号バス１７９を介してマルチプロセッサ・コントロール１７３に接続されている。マルチプロセッサ・コントロール１７３はさらに、制御信号バス１８０を介してマルチプロセッサ制御バス１０に、制御信号バス１８１を介してバス仲裁制御ユニット１７２に接続されている。ポート仲裁ユニット・インタフェース１７１は制御信号バス１８２を介してバス仲裁制御ユニット１７２に接続されている。バス仲裁制御ユニット１７２はバス仲裁制御ユニット１８３を介してオービタ６に接続されている。スヌープ・アドレス・ジェネレータ１６１は、それぞれ、アドレス・バス１４および制御バス１６を介してＭＡＵアドレス・バス９およびＭＡＵ制御バス１１にも接続されている。
【００６５】
キャッシュからの要求が送られるときは、その要求が共用メモリに対するものかどうかを示した属性が一緒に送られる。要求が共用メモリに対するものであるときは、ポート・インタフェースはマルチプロセッサ制御信号（ＭＣＳ）バス１０上を共用信号ＳＨＡＲＥＤ＿ＲＥＱを送出する。他のＣＰＵがＭＣＳバス１０上にこの共用信号を検出すると、スヌープ・アドレスを得るためにＭＡＵアドレス・バス９をスヌープすることを始める。
【００６６】
スヌーピング（ｓｎｏｏｐｉｎｇ）とは、これまでに簡単に説明したように、キャッシュ一貫性プロトコルである。このプロトコルによれば、制御は共用メモリ・バス上のすべてのキャッシュに配布され、すべてのキャッシュ・コントローラ（ＣＣＵ）はバスを聴取（１ｉｓｔｅｎ）またはスヌープして、共用ブロックのコピーをもっているかどうかを判断する。従って、スヌーピングとは、スレーブ側ＭＣＵがバス上のすべてのトランザクションをモニタして、マスタ側ＭＣＵから出されたＲＤ／ＷＲ要求があるかどうかを調べるプロセスである。スレーブ側ＭＣＵの主要な仕事は、バスをスヌープして受信する必要のあるデータがあるかどうかを判断すること、つまり、以前に受信したデータを無効にすることであり、あるいは最新のデータをマスタ側ＭＣＵへ送ること、つまり、介入を行うことである。
【００６７】
以下で詳しく説明するように、図５に示すマルチプロセッサ制御回路１７３はキャッシュからの無効化、介入およびスヌープ・ヒット信号を処理して、以下に詳しく説明するように、スヌープ・ヒットと介入／無効化が示されたときスヌープ・ヒット（ＳＮＰ＿ＨＩＴ）信号と介入（ＩＴＶ＿ＲＥＱ）信号をマルチプロセッサ制御信号バス１８０上に生成する。
【００６８】
図５に示すバス仲裁制御ユニット１７２は通常の読取りまたは書込みオペレーションにおいてＭＡＵバスの仲裁を行う。また、介入／無効化の場合にもＭＡＵバスの仲裁を行い、外部バス・オービタ６に直接に通じる外部バス仲裁制御信号ピンと直接にインタフェースとなっている。
【００６９】
次に、上述したキャッシュ一貫性を保証するための介入と無効化のオペレーションを、マスタ側中央処理ユニット（ＭＳＴＲ  ＣＰＵ）から出された読取り要求、書込み要求および変更意図付き読取り（ｒｅａｄ−ｗｉｔｈ−ｉｎｔｅｎｔ−ｔｏ−ｍｏｄｉｆｙ）要求と関連づけて説明する。
【００７０】
ＭＳＴＲ  ＣＰＵは読取り要求を出すとき、アドレスをＭＡＵ（メモリ・アレイ・ユニット）アドレス・バス９上に送出する。スレーブ側（ＳＬＶ）ＣＰＵはＭＡＵアドレス・バス９上のアドレスをスヌープする。ＳＬＶ  ＣＰＵがそのキャッシュ内のアドレス指定したメモリ・ロケーションから取り出したデータが変更されていると、スレーブ側キャッシュ制御ユニット（ＳＬＶ  ＣＣＵ）は介入信号をマルチプロセッサ制御バス１０上に送出し、データが更新、つまり、変更されていることを通知する。ＭＳＴＲは、ＩＴＶ信号を検出すると、バスを断念し、ＳＬＶ  ＣＣＵは更新データをメイン・メモリ、つまり、ＭＡＵ７に書き込む。ＭＳＴＲが要求したデータがＭＳＴＲキャッシュ制御ユニット（ＣＣＵ）によってまだ受信されてないと、ＭＳＴＲ  ＭＣＵは要求されたデータを破棄し、ＭＡＵにデータを要求することを再び主張する。要求されたデータがＭＳＴＲ  ＣＣＵへ転送されていた場合は、ＭＳＴＲ  ＭＣＵはデータを破棄するようにＭＳＴＲ  ＣＣＵ（ＩＯＵがＭＳＴＲであれば、ＩＯＵコントローラ）に通知する。そのあと、ＭＳＴＲ  ＭＣＵは、スレーブがメイン・メモリを更新したあと読取り要求を再び出す。その間、ポート・インタフェースはマスタの読取り要求を保留しており、その間にスレーブは変更したデータをメモリに書き戻す。そのあと、読取り要求が実行される。
【００７１】
ＭＳＴＲが書込み要求を出し、アドレスをＭＡＵ（メモリ・アレイ・ユニット）アドレス・バス９上に送出し、スレーブ側ＣＣＵがこのアドレスからのオリジナル・データのコピーをそのキャッシュにもっていると、スレーブ側ＣＣＵは、そのキャッシュに置かれている対応するデータを無効にする、つまり、破棄する。
【００７２】
ＭＳＴＲが変更意図付き読取り要求を出し、アドレスをＭＡＵアドレス・バス９上に送出し、スレーブ側ＭＣＵがマスタ（ＭＳＴＲ）からアドレス・バス上に送出されたアドレスをもっていると、次の２つの可能な動作のいずれかが取られる。
【００７３】
１．ＳＬＶ  ＣＣＵがＭＳＴＲがアドレス指定したデータに対応するデータを変更していた場合は、ＳＬＶはＩＴＶ信号を出し、ＭＳＴＲはその信号を受けてバスを断念し、ＳＬＶ  ＣＣＵが変更したデータをメモリに書くことを許可する。このオペレーションは、上述した介入オペレーションに対応している。
【００７４】
２．ＳＬＶがＭＳＴＲがアドレス指定したデータに対応する未修正データをもっている場合は、ＳＬＶはそのデータを無効にする、つまり、破棄する。このオペレーションは、上述した無効化オペレーションに対応している。
【００７５】
図６に示すように、全体を符号１９０で示した本発明の他の形態による回路が設けられている。この回路１９０は、行一致比較を行ってメモリ待ち時間を短縮するために使用される。回路１９０には、コンパレータ１９１、ラッチ１９２および対のＭＵＸ１９３、１９４が設けられている。
【００７６】
行一致比較の機能は、現在の要求が前の要求と同じ行アドレスをもっているかどうかを判断することである。同じ行アドレスをもっていれば、ポートはＲＡＳ要求を取り消すための時間ペナルティを負担しないですむ。行一致は主にＤＲＡＭで使用されるが、ＳＲＡＭまたはＲＯＭで使用することも可能である。つまり、ＲＯＭとＳＲＡＭは、ＤＲＡＭで使用するものと同じように上位と下位のアドレス・セグメントに入れてアドレスをＭＡＵに引き渡すので、ＭＡＵを新アドレスの上位、つまり、行ビットにラッチする必要がないためである。
【００７７】
図６に示した行一致回路の動作について説明すると、行アドレスは、そのアドレスの対応する配列選択ビットを含めて、ＭＵＸ１９３によってラッチ１９２にストアされる。新しいアドレスがスイッチ・ネットワーク・アドレス・ラインＳＷ ＲＥＱに現れるたびに、そのアドレスは新要求ＭＵＸ１９４を通って送られ、コンパレータ１９１で前の要求と比較される。行が一致していると、信号がコンパレータ１９１の出力から生成され、バス７０の一部である信号ライン１９５を介してポート・インタフェースヘ転送される。行一致がヒットすると、ポート・インタフェースはＲＡＳ要求を取り消すことが禁止されるので、ＲＡＳサイクル・タイムが節約されることになる。
【００７８】
ＭＵＸ１９３は行アドレスをスイッチ要求アドレスから抜き出すために使用される。行アドレスをスイッチ・アドレスにマッピングすることは、ＤＲＡＭの構成（例えば、１Ｍｘ１または４Ｍｘ１  ＤＲＡＭ）とＭＡＵデータ・バスの幅（例えば、３２ビットまたは６４ビット）によって異なる。
【００７９】
図１および図５に示すように、外部バス・オービタ６は、主にプログラマブル・ロジック・アレイ（ＰＬＡ）と記憶素子から構成されたユニットである。このオービタはＭＡＵバス要求を異種ＣＰＵから受け取り、どのＣＰＵにバス許可を与えるべきかを、ソフトウェアで選択可能な動的または固定優先度方式に基づいて裁定し、該当するＣＰＵに対して許可を発行する。記憶素子はどのＣＰＵに最後にバスが許可されたかを記憶しておき、動的または柔軟な優先度方式および固定または「ラウンド・ロビン」優先度方式のいずれをも実行できるようにするものである。
【００８０】
図７を参照して、本発明のマルチプロセッサ環境で使用される動的スイッチおよびポート仲裁について、以下説明する。
上述したように、３つのマスタと、ＭＣＵのサービスを受ける２つの資源が存在する。３つのマスタとは、Ｄキャッシュ、ＩキャッシュおよびＩＯＵである。２つの資源、つまり、スレーブはメモリ・ポートとＩＯＵである。上から明らかなように、ＩＯＵはマスタと資源／スレーブの両方になることができる。
【００８１】
本発明によれば、２種類の仲裁が行われる。１つはメモリ・ポートの資源の仲裁に関係するものであり、もう１つはスイッチ・ネットワーク５４のバスＳＷ ＲＥＱとＳＷ＿ＷＤの資源の仲裁に関係するものである。
【００８２】
複数のデバイスがメイン・メモリからデータを同時に要求することがある。それらのデバイスとは、Ｄキャッシュ、ＩキャッシュおよびＩＯＵである。各マスタに一定の優先度を与える優先度方式は、「重要度」または「緊急度」の高いデバイスからの要求ができるかぎり早くサービスを受けられるようにすることを目的としている。しかし、厳格な固定仲裁方式は、優先度の低いデバイスがいつまでもサービスが受けられない（ｓｔａｒｖｉｎｇ）可能性があるため好ましくない。その代わりに、デバイス別に異なる優先度を処理中に（ｏｎ  ｔｈｅ  ｆｌｙ）割り当てる動的仲裁方式が取り入れられている。この動的仲裁方式に影響を与える要因として、次のものがある。
【００８３】
１．そのデバイスの固有優先度
２．要求したアドレスと以前にサービスを受けた要求のアドレスとが行一致している
３．デバイスは余りにも多くの回数サービスを拒否されてきた
４．マスタは余りにも多くの回数サービスを受けてきた
図７に示すように、メモリ・ポートを要求するときに使用される動的優先度方式は次のとおりである。
デバイスからの各要求は固有優先度をもっている。ＩＯＵが高優先度または通常優先度を要求することができ、次にＤキャッシュが、その次にＩキャッシュが要求できる。しかし、Ｄキャッシュからの介入（ＩＴＶ）要求がすべての中で最も優先度が高くなっている。
【００８４】
特別な高優先度の入出力要求を行うことができる。この優先度は、メモリ待ち時間を最小にしてメモリヘのアクセスを必要とするリアルタイム（実時間）入出力周辺デバイスで使用されることを目的としている。これらの要求は、図７に示すように介入サイクルと行一致を除き、他のすべての要求に優先させることができる。
【００８５】
各種デバイスの固有優先度を変更する要因として、サービス拒否、入出力独占（Ｉ／Ｏ  ｈｏｇ）、行一致といったものがある。あるデバイスがサービスを拒否されるたびに、カウンタがデクリメントされる。カウンタがゼロまで達すると、そのデバイスの優先度は大きくされ、ＤＥＮＹ  ＰＲＩＯＲＩＴＹと名付けた優先度レベルがセットされる。これらのカウンタには、最大１５までのプログラム可能な値をロードすることができる。カウンタがゼロまで達すると、ＤＥＮＹ  ＰＲＩＯＲＩＴＹビットがセットされ、これは最終的には、拒否されたデバイスがサービスを受けたときクリアされる。サービスが拒否されたデバイスの優先度を大きくするため方法によると、サービス窮乏化（ｓｔａｒｖａｔｉｏｎ）が防止される。注意すべきことは、ＩＯＵの固有優先度レベルは本来的にすでに高いので、ＩＯＵにはサービス拒否優先度が割り当てられないことである。
【００８６】
ＩＯＵはすでに本来的に優先度が高いデバイスであるので、そのデバイスがポートを独占するのをカウンタで防止するようにする必要もある。ＩＯＵにポート使用権が許可されるたびに、カウンタはデクリメントされる。カウンタがゼロまで達すると、ＩＯＵはバスを独占しているものと扱われ、ＩＯＵの優先度レベルは低くされる。ＩＯＵの優先度レベルを落とすのは通常優先度の要求の場合だけであり、高優先度の入出力要求の場合は行われない。ＩＯＵに要求サイクル時にポート使用権が許与されないときは、独占優先度ビット（ｈｏｇ  ｐｒｉｏｒｉｔｙ  ｂｉｔ）がクリアされる。
【００８７】
要求の固有優先度を変更するもう１つの要因は行一致である。行一致が主に重要なのは、Ｉキャッシュの場合である。あるデバイスが以前にサービスを更けた要求と同じ行アドレスをもつメモリ・ロケーションを要求すると、要求したデバイスの優先度が高くされる。これが行われるのは、ＲＡＳを再要求しないで済むようにするためである。
【００８８】
しかし、行一致優先度を持ち続けるには一定の限度がある。この場合も、カウンタはプログラム可能な最大値をセットして使用される。行一致優先度があるために要求がサービスを受けるたびに、カウンタはデクリメントされる。カウンタがゼロまで達すると、行一致優先度ビットがクリアされる。ポートの新しいマスタが割り当てられると、あるいは行一致の要求がないと、カウンタには再びプログラム可能値が事前ロードされる。上述したカウンタはスイッチ仲裁ユニット５８に置かれている。
【００８９】
メモリ・ポートに対する書込み要求は、スイッチの書込みデータ・バスＳＷ＿ＷＤが使用可能になっているときだけ許可される。使用可能でないときは、別の要求が選択される。１つだけ例外があり、それは、介入信号ＩＴＶの場合である。ＳＷ＿ＷＤが使用可能になっていないと、どの要求も選択されない。その代わりに、プロセッサはＳＷ＿ＷＤが空きになるのを待ってから、要求をスイッチ・オービタに受け渡す。
【００９０】
スイッチ・ネットワーク５４の仲裁方式は、ポートの仲裁で使用される方式と若干異なっている。図３のスイッチ仲裁ユニット５８は、ソフトウェアで選択可能なポートの仲裁を行うとき、２種類の仲裁方式を利用している。
【００９１】
１．優先度がスレーブまたは被要求側デバイス（すなわち、メモリまたはＩＯＵポート）を基準にしているスレーブ優先度方式
２．優先度がマスタまたは要求側デバイス（すなわち、ＩＯＵ、ＤキャッシュおよびＩキャッシュ）を基準にしているマスタ優先度方式
スレーブ優先度方式では、優先度は常にラウンド・ロビン方式でメモリ・ポートに与えられる。つまり、優先度は最初にメモリ・ポート０、１、２．．．に与えられ、次にＩＯＵに与えられる。これに対して、マスタ優先度方式では、優先度は最初にＩＯＵに与えられ、次にＤキャッシュとＩキャッシュに与えられる。勿論、事情によっては、マスタ優先方式に従ってＩＴＶ要求に最高優先度を与える必要がある場合やそうした方が望ましい場合がある。また、プリフェッチ・バッファがやがて空になる場合に、Ｉキャッシュに高優先度を与える必要がある場合やそうしたほうが望ましい場合がある。いずれの場合も、使用する優先度方式は、様々な動作条件に合うようにソフトウェアで調整することが可能である。
【００９２】
動的メモリ・リフレッシュも優先度方式に基づいている。ステート・マシンに接続されたカウンタは、あるリフレッシュから次のリフレッシュまでどれだけのサイクルが経過したか、つまり、リフレッシュが要求され、ＭＡＵバスが使用中のため拒否された回数を記録するために使用される。カウンタが所定のカウントまで達すると、つまり、経過すると、信号をポートに対して生成して、リフレッシュの必要があることをポートに通知する。ポートが使用中で、ＤキャッシュやＩキャッシュまたはＩＯＵからの要求にサービスを与えている場合は、これまでに拒否したリフレッシュ要求が所定数まで達していなければ、リフレッシュ要求にサービスを与えることを拒否する。言い換えれば、リフレッシュ要求が所定回数まで拒否されたとき、リフレッシュ要求にサービスを与えることに優先度が与えられる。ポートがリフレッシュ要求にサービスを与える準備状態になると、ＭＡＵバスの仲裁を始めるようにバス仲裁制御ユニットに通知する。
【００９３】
行は、１５マイクロ秒ごとにリフレッシュするのが好ましく、また、所定の期間内に、例えば、少なくとも３０マイクロ秒ごとにリフレッシュする必要がある。
【００９４】
ＲＡＳが低（要求ーａｓｓｅｒｔ）になり、ＣＡＳが要求されなかったときは、リフレッシュが行われたことがすべてのＣＰＵに通知される。すべてのＣＰＵはリフレッシュがいつ行われたかを記録しているので、どのＣＰＵも必要時にリフレッシュを要求することができる。
【００９５】
本発明の好適実施例について説明してきたが、本発明の精神と範囲を逸脱しない限り、種々態様に変更が可能であることは勿論である。従って、上述した実施例は、本発明を説明するための例示にすぎず、その範囲は実施例に限定されることなく、請求の範囲に記載した発明から判断すべきものである。
【図面の簡単な説明】
【００９６】
【図１】本発明による複数の異種マイクロプロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャを示すブロック図である。
【図２】本発明によるメモリ制御ユニットを示すブロック図である。
【図３】本発明によるＤキャッシュ・インタフェースとポート・インタフェースとの間の接続状態を示すスイッチ・ネットワークを示すブロック図である。
【図４】本発明によるテストおよびセット・バイパス回路を示すブロック図である。
【図５】本発明により介入信号を生成し、ＭＡＵバスの仲裁を行うために使用される回路を示すブロック図である。
【図６】本発明による行一致比較回路を示すブロック図である。
【図７】本発明による動的仲裁方式を示す図である。
【図８】書込み要求のタイミングを示す図である。
【図９】読取り要求のタイミングを示す図である。
【符号の説明】
【００９７】
１…アーキテクチャ、２、３、４．．．Ｎ…プロセッサ、５…特殊用途プロセッサ、６…オービタ（仲裁回路）、７…メモリ／メモリ・アレイ・ユニット（ＭＡＵ）、８…ＭＡＵデータ・バス、９…ＲＯＷ／ＣＯＬアドレス・バス、、１０…マルチプロセッサ制御バス、１１…ＭＡＵ制御バス、１２…バス仲裁制御信号バス、２５…ＭＡＵシステム・バス
【図１】
0003687750.tif 000002
【図２】
0003687750.tif 000003
【図３】
0003687750.tif 000004
【図４】
0003687750.tif 000005
【図５】
0003687750.tif 000006
【図６】
0003687750.tif 000007
【図７】
0003687750.tif 000008
【図８】
0003687750.tif 000009
【図９】
0003687750.tif 000010