(57)【特許請求の範囲】
【請求項１】
各々のグループが少なくとも一つのプロセッサを含む複数のグループのプロセッサ（１、２、３および４）が、複数の共用メモリを構成するモジュール（１０、１１、１２、１３、１１３および１１４）に対しアクセスを行い、前記のグループのプロセッサ（１、２、３および４）、および、前記の共用メモリを構成するモジュール（１０、１１、１２、１３、１１３および１１４）の動作が、共通の同期信号である周期的信号（ＣＫ）により時間規定がなされるマルチプロセッサ・システムにおいて、
前記周期的信号（ＣＫ）により時間が制御されるシステムメモリ制御ユニット（１５）と、
前記のグループのプロセッサ（１、２、３および４）および前記システムメモリ制御ユニット（１５）に接続され、かつ、前記のグループのプロセッサ（１、２、３および４）と前記モジュール（１０、１１、１２、１３、１１３および１１４）との間、および、前記のグループのプロセッサ（１、２、３および４）間で転送されるデータを除いて、アドレスおよび動作コマンドを前記システムメモリ制御ユニット（１５）に転送する分岐システムバスであるアドレス／コマンド転送用バス（１７）と、
相互接続用の複数のロジック回路からなるデータチャネル制御ユニット（１６）と、
前記のグループのプロセッサ（１、２、３および４）の各々に対し単一のチャネルを有し、かつ、前記モジュール（１０、１１、１２、１３、１１３および１１４）のアドレス指定を行うためのアドレスを除いて、前記のグループのプロセッサ（１、２、３および４）と前記モジュール（１０、１１、１２、１３、１１３および１１４）との間、および、前記のグループのプロセッサ（１、２、３および４）間でデータを転送するための二地点間接続用チャネルである複数のデータチャネル（Ｉ／Ｏ（ｉ）、例えば、Ｉ／ＯＤ１、Ｉ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４）とを備え、
該複数のデータチャネル（Ｉ／Ｏ（ｉ））の各々は、、前記のグループのプロセッサ（１、２、３および４）の一つを、前記データチャネル制御ユニット（１６）に対し個別に接続し、
前記マルチプロセッサ・システムは、さらに、
前記システムメモリ制御ユニット（１５）により前記モジュール（１０、１１、１２、１３、１１３および１１４）のアドレス指定を行うために、前記アドレス／コマンド転送用バス（１７）および前記モジュール（１０、１１、１２、１３、１１３および１１４）に接続されるメモリアドレス用チャネル（１８）と、
前記モジュール（１０、１１、１２、１３、１１３および１１４）を前記データチャネル制御ユニット（１６）に連結するために、該モジュール（１０、１１、１２、１３、１１３および１１４）に対し入力／出力転送を行うメモリデータ入力／出力チャネル（１９）とを備え、
該データチャネル制御ユニット（１６）は、前記複数のデータチャネル（Ｉ／Ｏ（ｉ））を前記メモリデータ入力／出力チャネル（１９）に選択的に接続すると共に、該複数のデータチャネル（Ｉ／Ｏ（ｉ））自身間を選択的に接続するために、前記システムメモリ制御ユニット（１５）により制御され、
前記マルチプロセッサ・システムは、さらに、
前記アドレス／コマンド転送用バス（１７）を介して、該アドレス／コマンド転送用バス（１７）上の前記プロセッサ（１、２、３および４）に送出されるような順序立ったかつ関連するコマンドおよびアドレスを受信する制御ロジック回路を、前記システムメモリ制御ユニット（１５）内に備えており、
該システムメモリ制御ユニット（１５）は、
前記コマンドの実行のために必要なリソースと、必要な時間における該リソースの使用可能性とを指定し、
さらに、前記の関連するコマンドおよびアドレスを前記メモリアドレス用チャネル（１８）上に転送し、同時に、前記リソースが使用可能な場合に、一つのモジュールを選択するための信号を前記メモリアドレス用チャネル（１８）上に転送し、
そして、前記複数のデータチャネル（Ｉ／Ｏ（ｉ））自身間の選択的な相互接続、および、該複数のデータチャネル（Ｉ／Ｏ（ｉ））と前記データチャネル制御ユニット（１６）における前記メモリデータ入力／出力チャネル（１９）との相互接続に関する指示と時間規定を行うことを特徴とするマルチプロセッサ・システム。
【請求項２】
前記データチャネル制御ユニット（１６）が、入力データを保持するためのレジスタ（３７、４２）およびＤＩ１用レジスタ（４９）を有しており、
該レジスタ（３７）は、該データチャネル制御ユニット（１６）と結合する前記メモリデータ入力／出力チャネル（１９）に接続されると共に、該レジスタ（４２）および該ＤＩ１用レジスタ（４９）は、該データチャネル制御ユニット（１６）と結合する前記データチャネル（Ｉ／Ｏ（ｉ））に接続される請求項１記載のマルチプロセッサ・システム。
【請求項３】
前記データチャネル制御ユニット（１６）が、該データチャネル制御ユニット（１６）から出力されるデータを保持するためのＤＯ１用レジスタ（４４）およびレジスタ（６２）を有しており、
該ＤＯ１用レジスタ（４４）は、該データチャネル制御ユニット（１６）と結合する前記データチャネル（Ｉ／Ｏ（ｉ））に接続されると共に、該レジスタ（６２）は、該データチャネル制御ユニット（１６）と結合する前記メモリデータ入力／出力チャネル（１９）に接続される請求項２記載のマルチプロセッサ・システム。
【請求項４】
前記メモリデータ入力／出力チャネル（１９）が、多数の並列形式の前記データチャネル（Ｉ／Ｏ（ｉ））と同じ並列性を有しており、
前記データチャネル制御ユニット（１６）が、
該データチャネル制御ユニット（１６）と結合する前記データチャネル（Ｉ／Ｏ（ｉ））の各々に対し、連続して受信した複数のデータを累算するためのカスケード接続形式の複数のレジスタと、
該複数のデータを、前記の出力データを保持するためのレジスタ（６２）に転送すると共に、前記メモリデータ入力／出力チャネル（１９）に転送する手段とを有する請求項３記載のマルチプロセッサ・システム。
【請求項５】
前記データチャネル制御ユニット（１６）が、
前記メモリデータ入力／出力チャネル（１９）における前記の入力データを保持するためのレジスタ（４２）と、前記データチャネル（Ｉ／Ｏ（ｉ））の一つに出力されるデータを保持するためのＤＯ１用レジスタ（４４）との間で各々結合するマルチプレクサ（３１）を有しており、
該マルチプレクサ（３１）は、前記の入力データを保持するためのレジスタ（４２）内に保持されたデータ中の連続する部分を、前記データチャネル（Ｉ／Ｏ（ｉ））の一つに出力されるデータを保持するためのＤＯ１用レジスタ（４４）に転送する請求項４記載のマルチプロセッサ・システム。
【請求項６】
前記マルチプレクサ（３１）が、複数のグループの入力を有しており、
該複数のグループの入力の各々は、前記データチャネル（Ｉ／Ｏ（ｉ））の一つから入力されるデータを保持するための複数のレジスタの一つと結合する請求項５記載のマルチプロセッサ・システム。
【請求項７】
前記システムメモリ制御ユニット（１５）が、前記プロセッサ（１、２、３および４）の前記アドレス／コマンド転送用バス（１７）に対するアクセスの調整を行うアービトレーション用ロジック（７０）を有する請求項１記載のマルチプロセッサ・システム。
【請求項８】
前記システムメモリ制御ユニット（１５）が、
前記プロセッサ（１、２、３および４）の複数のグループ中の第１番目の要求に応じて、前記モジュールから読み出されるデータの項目のモディファイを行うための介在要求信号を、前記の複数のグループのプロセッサ（１、２、３および４）から受信し、かつ、前記プロセッサ（１、２、３および４）の複数のグループ中の第２番目から該複数のグループ中の第１番目に供給されるようなモディファイされた一つの単位のデータを転送するように、前記データチャネル制御ユニット（１６）を制御する手段を有する請求項７記載のマルチプロセッサ・システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、共用メモリを有するマルチプロセッサ・システムに関する。
高性能のデータ処理システムを実現するために、タスクを分割することによって複数のプロセッサが複数の処理を同時に遂行するようなマルチプロセッサのアーキテクチャを利用することは、一般に知られている。
【０００２】
複数のプロセッサ間での協働を実現するためには、これらのプロセッサ同士が情報やメッセージを交換することが必要であり、かつ、これらのプロセッサが同じデータに対し作用し得ることも必要である。
これらのプロセッサは、それゆえに、適切な通信チャネルによって互いに接続され合うと共に、少なくとも１つの動作メモリに対しそれぞれ接続されなければならない。
【０００３】
さらに、マルチプロセッサのアーキテクチャの手法は、大きな容量と低いコストを有する動作メモリを提供するが、この動作メモリは、複数のプロセッサの各々の動作時間よりもはるかに長い読み書き用の時間を必要とすることもまた、一般に知られている。
このため、プロセッサにより提供される能力を充分に利用することができるように、速度の速い局所的メモリ（Local Memory）、または、ある程度の限られた容量を有するキャッシュメモリが用いられる。このようなメモリの各々は、１つのプロセッサと、個々にかつ独立にアドレス指定可能な複数の動作メモリに接続される。
【０００４】
このような構成では、アドレス指定可能な動作メモリのスペースは、幾つかのユニット間、または、インタリービング（Interleaving）の規準によるメモリのバンク間に配分される。このインタリービングの規準は、幾つかのプロセッサによる複数のメモリへのアクセスにおける「争い（Conflict）」の確率を最小限に抑える。
【０００５】
比較的高速のアクセスが要求される場合、動作メモリ内に記憶されたデータが繰り返し使用されるように、速度の速い局所的メモリが採用される。しかしながら、この場合は、コヒーレンスの問題が生じてくる。すなわち、英国系（アングロサクソン系）の用語を使用すれば、データの「無矛盾性（Consistency ）」の問題が生じてくる。
【０００６】
また、幾つかのメモリモジュールを採用した場合には、各種のプロセッサと各種のメモリモジュールとの間で相互接続の問題が生じてくる。
【０００７】
【従来の技術および発明が解決しようとする課題】
従来は、少なくとも部分的に前述の問題を解決するような、下記の２つのアーキテクチャによるアプローチが提示されている。
1)１つめのアーキテクチャは、「バス」のアーキテクチャ、すなわち、分岐方式による通信チャネルである。
【０００８】
この場合、システム内のすべてのプロセッサ、および、すべてのメモリは、単一のシステムバスに接続される。この単一のシステムバスは、タイムシェアリング式のリソースを構成する。このようなリソースに対し、上記のプロセッサ、そして、おそらくは、上記のメモリが、限られたかつ重複しない時間間隔でもって互いに競合し合うことにより、アクセスを行う。
【０００９】
さらに、システムバスへのアクセスは、各種のユニットの要求に応じ、単一のアービトレーション用ロジック、または、配分されたタイプのアービトレーション用ロジックによって割り当てられる。このようなアクセスの構成では、前もって確立されている規準に従っているので、アクセスにおける争いの問題が解消される。
【００１０】
この種のアーキテクチャは、基本的に、次のような２つの好都合な点を有する。
１番目は、２つのユニットを相互に接続するための動作は、すべてシリアル形式にて行われ、かつ、お互いに決まった順番で実行されることである。このために、通信処理の管理が簡単になる。
【００１１】
２番目は、システムバスに接続されるすべてのプロセッサが、システムバス上で起こるトランザクション（Transaction ）をすべて把握できることである。このために、比較的簡単な「詮索動作（スヌーピング： Snooping ）」、すなわち、監視機構を用いることにより、リアルタイムにてデータの無矛盾性を保証することが可能になる。
【００１２】
しかしながら、一方で、上記のアーキテクチャには、次のような限界、すなわち、不都合な点があることを考慮に入れなければならない。
すなわち、システムバスの各々のワイアが、多数の入力負荷および出力負荷に接続されている点と、負荷に適した電力を有し、それゆえに、比較的速度の遅いドライバ回路が、種々のワイア上の信号の各々に対して必要になる点である。
【００１３】
さらに、このような負荷が本質的に有する容量性の性質が、転送され得る信号の周波数を制限する。それゆえに、情報の伝達の速度、すなわち、システムバスの「転送速度」も、負荷の容量性の性質により制限される。
幾つかのユニット間の読み書き動作において同じリソースを共用することは、アクセスの争いが増えることを意味し、この結果として、応答の問題が増加する。換言すれば、バスに対するアクセスを待つこと、および、可能性があり、かつ、このアクセスの後に続くような要求された情報の受け取りを待つことが増えてくる。アクセスの応答時間は、メモリユニットの応答の遅さによってばかりでなく、起こり得るアクセスの争いによっても決定される。このアクセスの争いの可能性が高くなればなるほど、バスに沿って重要な情報を転送したりこの情報を持ち出したりするのに必要な時間が長くなる。このために、バスが空いている時間が多くなる。
【００１４】
1)２つめのアーキテクチャは、「クロスバースイッチ」のアーキテクチャ、すなわち、クロスバー・アーキテクチャによる接続である。
この場合、互いに交差する複数の通信チャネルにより、複数のプロセッサおよび複数のメモリが、対になって相互に接続される。そして、スイッチを選択的に閉じることにより、対をなすプロセッサおよびメモリが、選択的にかつ相互に接続される。
【００１５】
この種のアーキテクチャは、基本的に、次のような２つの好都合な点を有する。
１番目は、個々のチャネルにおいて、より多くの対をなすユニットが同時に相互通信を行うことができる。
２番目は、マトリクス形式による相互通信により、種々の通信ラインのＲＣ負荷を軽減することができる。
【００１６】
このような好都合な点により、比較的低消費電力の制御回路を用い、比較的高い周波数にてシステムを動作させることが可能になる。
この種のアーキテクチャにより達成され得る転送速度は、非常に高い。その理由として、このアーキテクチャにて転送される信号の周波数が比較的大きくなり得ること以外に、多くの同時かつ並列になされる転送が存在することが挙げられる。さらに、対をなして相互に接続されるユニットは、一般に、幾つかの連続するトランザクションによって保持されており、かつ、このトランザクションのチャネル形成、すなわち、「パイプライン形成」を可能にする。さらに、上記のユニットは、リソースが占有される時間の大部分に対し、応答時間の問題を生じさせることなく達成され得る転送速度をさらに増加させる。
【００１７】
しかしながら、一方で、上記のアーキテクチャにおいてもなおかつ、次に記載するように、深刻な不都合な点がある。
すなわち、多くの対をなす相互接続部における同時転送が、複数のプロセッサ間の「詮索動作」を妨げる点と、幾つかのメモリ内、すなわち、幾つかの記憶ユニット内にデータが複製されるような環境では、データのコヒーレンスの程度が悪くなる点である。
【００１８】
データのコヒーレンスを保証するために、（少なくともアドレスの）同時転送を否認することが必要である。
信号の「経路規定（routing ）」や、各構成要素の終結点や、相互接続の管理の問題は、非常に煩雑なものになる。
本発明は、上記問題点に鑑みてなされたものであり、高性能のデータ処理システムを実現するために、幾つかのプロセッサおよびメモリに対し比較的高速のアクセスが実行されると共に、データのコヒーレンスが充分保証されるようなマルチプロセッサ・システムを提供することを目的とするものである。
【００１９】
【課題を解決するための手段および作用】
前記目的を達成するために、本発明の主題を構成するマルチプロセッサ・システムは、複数のグループのプロセッサと、これらのプロセッサと通信する複数の共用メモリを構成するモジュールとを備えている。これらの共用メモリは、個々にアドレス指定が可能な複数のモジュールにより構成される。モジュールとプロセッサとの通信は、アドレスおよびコマンドを転送するためのシステムバス（すなわち、分岐接続バス）を介して行われると共に、二地点間データ転送用チャネルを介して行われる。この二地点間データ転送用チャネルは、各プロセッサをデータ・クロスバー相互接続用ロジックに対し個々に接続する。
【００２０】
本発明によれば、バスシステムのアーキテクチャの利点と、クロスバーのアーキテクチャの利点とを兼ね備えたハイブリッド方式のアーキテクチャが実現される。
このようなハイブリッド方式のアーキテクチャは、同じプロセッサおよびメモリ間の幾つかの転送の際に、順序立ったパイプライン構成を可能にする。
【００２１】
さらに、上記のハイブリッド方式のアーキテクチャは、個々のプロセッサおよびメモリ間の二地点間データ転送用チャネルの負荷を軽減する。このために、高い周波数にて動作することが可能になる。
さらに、上記のハイブリッド方式のアーキテクチャは、異なるリソースを含むような並列形式の転送を可能にする。
【００２２】
さらに、上記のハイブリッド方式のアーキテクチャは、メモリへのアクセスが、連続して順番通りに行われることを可能にする。
さらに、上記のハイブリッド方式のアーキテクチャにおいて、局所的メモリまたはキャッシュメモリ内でデータが複製される場合、全ての処理過程で、アドレス用チャネルとデータの無矛盾性に関する「詮索動作」をリアルタイムにて遂行することができる。
【００２３】
本発明の他の態様によれば、共用メモリを構成するモジュール、すなわち、メモリモジュールが、動作時間の部分的な重ね合わせにより動作するように、これらのメモリモジュールが個々に独立して制御される。それゆえに、これらのメモリモジュールは、独立のメモリユニットとして、システムバスまたはアドレスバスに接続された共通のシステムメモリ制御ユニットを介しアドレス指定がなされる。
【００２４】
このシステムメモリ制御ユニットはまた、システムバスに対するアクセスを行うためのアービトレーション用ロジックとして機能する。
このようにして、複数のプロセッサおよびシステムメモリ制御ユニットに対するアドレスバスの負荷は軽減される。
本発明のさらに他の態様によれば、データ・クロスバーのロジック、すなわち、データチャネル制御ユニットは、共用メモリおよびプロセッサの両方に対し、入力／出力レジスタを備えている。
【００２５】
カスケード形式で一つのレジスタから他のレジスタへ転送を行う構成では、幾つかの転送は、並列に行うことができる。さらに、データ・クロスバーが、単一のデータチャネルを介してのメモリとのデータ交換を行うための収集部として機能する場合であっても、転送時間の部分的な重ね合わせにより、メモリに対する「パイプライン形成」が可能である。
【００２６】
このようなチャネルは、データの転送速度を制限することのないノードを形成する。なぜならば、ノードを介してのデータ転送に必要な時間は、転送速度の制限内に収まる程度に充分短いからである。
本発明のさらに他の態様によれば、相互接続用ロジックは、バッファ用レジスタ（または、バッファ）以外に、メモリおよび各種のプロセッサに対する接続に応じて異なる並列性を有するようなチャネルを備えている。さらに詳しくいえば、メモリとデータ・クロスバーとの間では、Ｎ×Ｍバイトであるのに対し、データ・クロスバーとプロセッサとの間では、たったＮバイトである。
【００２７】
すなわち、メモリとデータ・クロスバーとの間の情報転送は、Ｎ×Ｍバイトのブロックに対し同時行われる。これに対し、データ・クロスバーとプロセッサとの間の情報転送は、各々の期間でＮバイトのデータブロック中の１ブロックを転送させることにより、Ｍ個の連続する位相にてシリアル形式で動作を続けることで実行される。
【００２８】
このようなシリアル形式の転送は、応答の問題を生じさせない。なぜならば、データ・クロスバーとプロセッサとの間の接続は、一方向性のものであり、相互干渉が起こらないからである。
上記の構成では、プロセッサの並列性に比べてメモリの並列性が相対的に高いので、より高速で動作させるためのあり得るプロセッサの要求に対し、メモリ容量の一部またはそのすべてをあてがうことができる。これと共に、各種の電気的構成部品またはユニットの端子の数、および、種々のユニット間の受動接続を、許容され得る上限内に収めることができる。
【００２９】
このような端子の数の制限は、経済上の都合、すなわち、多数の入力／出力端子を有する電気的構成部品の工業的な実用性によってのみでなく、標準の通信バスの使用が可能なインタフェースを有するような製品として使用可能な電気部品を用いることの便利さによっても、付与されるべきものである。
実際に、インタフェースのレベルにおいて、本発明のマルチプロセッサ・システムの主題の基礎をなすような前述のハイブリッド方式のアーキテクチャでは、例えば「ＶＭＥまたはＦＵＴＵＲＥ  ＢＵＳ」タイプの一般的な標準バスが使用されている。
【００３０】
【実施例】
本発明の特徴および利点は、下記に示すような添付図面を参照しながらの発明の好適実施例の説明から、さらに明確になるであろうと思われる。以下、添付図面（図１〜図７）を用いて本発明の実施例を詳細に説明する。
図１は、本発明の一実施例に従って構成されるアーキテクチャおよび共用メモリを有するマルチプロセッサ・システムを示す概略的なブロック図である。
【００３１】
図１のシステムは、複数のプロセッサ１、２、３および４を備える。これらのプロセッサ１、２、３および４には、それぞれ、バッファメモリ６、７、８および９が設けられている。
さらに、図１のシステムは、複数のモジュール１０、１１、１２、１３、１１３および１１４（おそらくは、モジュールの数は、プロセッサの数よりも多いであろう）により構成されるシステム・メモリ５と、予め定められた周波数のタイミング信号を生成するタイマ・ユニット（ＴＩＭ  ＵＮＩＴと略記されることもある）１４とを備える。なお、図１では、上記モジュール１０、１１、１２、１３、１１３および１１４を、それぞれ、モジュールＡ、モジュールＢ、モジュールＣ、モジュールＤ、モジュールＥ、およびモジュールＦと表示している。
【００３２】
さらにまた、図１のシステムは、共用メモリならびにシステムバスのアービトレーションを制御するためのシステムメモリ制御ユニット（ＳＭＣユニットと略記されることもある）１５と、ロジック回路からなるデータチャネル制御ユニット１６、すなわち、データ・クロスバー（ＤＣＢと略記されることもある）とを備える。
【００３３】
プロセッサ１、２、３および４は、一緒にして接続され、さらに、アドレスおよびコマンドを転送するためのアドレス／コマンド転送用バス（ＡＣＢＵＳと略記されることもある）１７を介してシステムメモリ制御ユニット１５に接続される。
このアドレス／コマンド転送用バス１７の適切なワイヤを介し、かつ、一般のアービトレーションおよび通信プロトコルを用い、上記の各プロセッサは、バスに対するアクセス要求信号ＡＢＲＥＱ（図３）をＳＭＣユニット１５に送る。さらに、この各プロセッサは、バス許可信号ＡＢＧＲＡＮＴ（図３）を個々に受け取る。その後、このバス許可信号ＡＢＧＲＡＮＴは、アドレス／コマンド転送用バス１７を有効に占有し、さらに、メモリアドレスと下記のような複数の信号をＳＭＣユニット１５に送る。これらの複数の信号とは、例えば、読み出し、書き込み、または、別の種類の動作（例えば、図３のＲＷＩＭ）のような、要求される動作を識別するための信号である。
【００３４】
システムバスであるアドレス／コマンド転送用バス（ＡＣＢＵＳ）１７は、分岐方式の通信チャネルを構成する。ただし、必ずしもそうである必要はないが、おそらくは、バスに対するアクセス要求信号ＡＢＲＥＱ、対応するバス許可信号（バス許可応答）ＡＢＧＲＡＮＴ、および、種々のプロセッサの状態信号は、例外になるであろう。この場合、プロセッサの状態信号は、好ましくは、プロセッサの各々とユニット１５との間で、二地点間接続方式により交換がなされる。
【００３５】
ユニット１５は、メモリアドレス用チャネル（ＭＡＤＤＲと略記されることもある）１８を介して、読み書き用アドレスと、この後に続く適切なタイミング・コマンド（ＳＴＡＲＴＡ、ＳＴＡＲＴＢ、ＳＴＡＲＴＣ、ＳＴＡＲＴＤ、ＳＴＡＲＴＥ、およびＳＴＡＲＴＦ）をシステム・メモリ５に転送する。このタイミング・コマンドは、アドレスに応じて、各種のモジュール（メモリモジュール）１０、１１、１２、１３、１１３および１１４中の一つを選択し、始動させる。
【００３６】
これらのモジュール１０、１１、１２、１３、１１３および１１４の各々においては、アドレスがチャネル（ＭＡＤＤＲ）１８上に存在する時間が、ある程度制限されている場合でも、レジスタＡＲが、必要な時間のすべてにわたって読み書き用アドレスを保持する。
また一方で、データの転送は、二地点間接続により行われる。この二地点間接続は、プロセッサ１、２、３および４の各々と、メモリデータ入力／出力チャネル（ＭＤＡＴと略記されることもある）１９との間で、あるいは、対をなすプロセッサ間で、データチャネル制御ユニット（ＤＣＢ）１６により、ユニット１５から受信されるタイミング・コマンドに基づき選択的に形成される。
【００３７】
さらに、モジュール１０、１１、１２、１３、１１３および１１４の各々では、レジスタＤＷが、書き込むべきデータの１単位を保持する。このようなデータは、書き込み動作に必要な時間のすべてにわたってメモリデータ入力／出力チャネル（ＭＤＡＴと略記されることもある）１９から受信される。
図１においては、プロセッサ１、２、３および４は、それぞれ、複数のデータチャネルＩ／ＯＤ１、Ｉ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４を介してデータチャネル制御ユニット（ＤＣＢ）１６に接続される。
【００３８】
システム全体の動作は、同期形式で遂行される。この場合、各種のユニットは、すべて、タイマ・ユニット１４により生成される周期的信号ＣＫに基づきクロック制御がなされる。
図２は、図１のアーキテクチャのデータチャネル制御ユニットの具体的構成例を示す概略的なブロック図である。ここでは、図１のデータチャネル制御ユニット１６を集積回路により構成している。なお、これ以降、前述した構成要素と同様のものについては、同一の参照番号を付して表すこととする。
【００３９】
ここで、データチャネルが一つの集積回路として形成される程度にこのデータチャネルの類似性が充分高い場合は、データチャネル制御ユニット１６は、同じ構成の複数の集積回路として形成され得る。これらの複数の集積回路は、一般に知られている「ビットスライス構成」の概念、すなわち、ビット群によるロジック回路の分割に従って作製される。
【００４０】
データチャネル制御ユニット１６は、基本的に、下記の５種の構成要素を備える。
１つめの構成要素は、データチャネルＩ／ＯＤ１、Ｉ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４よりデータをそれぞれ入力するための４つのグループの受信部２１、２２、２３および２４である。
【００４１】
２つめの構成要素は、データチャネルＩ／ＯＤ１、Ｉ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４上にデータを取り込むための４つの制御回路、すなわち、ドライバ２５、２６、２７および２８である。
３つめの構成要素は、メモリデータ入力／出力チャネル１９上にデータを取り込むための単一のグループのドライバ２９である。
【００４２】
４つめの構成要素は、メモリデータ入力／出力チャネル１９からやって来るデータをデータチャネル制御ユニット１６に入力するための単一のグループの受信部３５である。
５つめの構成要素は、５個のマルチプレクサ３０、３１、３２、３３および３４である。
【００４３】
マルチプレクサ３０の入力は、４つのグループの受信部２１、２２、２３および２４の出力に接続される。さらに、上記マルチプレクサ３０の出力は、単一のグループのドライバ２９に接続される。このような接続を行うことにより、ドライバ２９がイネーブルの状態になった場合に、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９に対し複数のデータチャネルＩ／ＯＤ（ｉ）の中の一つを選択的に接続することが可能になる。ここで、Ｉ／ＯＤ（ｉ）中の記号（ｉ）は、便宜上付加しているだけであり、省略されることもある。あるいは、既述のように、Ｉ／ＯＤ（ｉ）の代わりにＯＤ１、Ｉ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４のように表すこともある。
【００４４】
その他のマルチプレクサ３１、３２、３３および３４の各々は、データチャネルＩ／ＯＤ（ｉ）の中の一つと関係し、かつ、４組の入力を有する。さらに、これらの入力の各々は、受信部３５、２１、２２、２３および２４の出力に接続される。ただし、この場合、各受信部がそれぞれ関係するデータチャネルＩ／ＯＤ（ｉ）を有する受信部の出力への接続は除外される。
【００４５】
さらに、上記マルチプレクサ３１、３２、３３および３４の出力は、それぞれ、ドライバ２５、２６、２７および２８の入力に接続される。このような接続を行うことにより、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９をデータチャネルＩ／ＯＤ（ｉ）の中の一つに接続し、かつ／または、おそらくは同時に、２つのデータチャネルＩ／ＯＤを一緒に接続することが可能になる。
【００４６】
マルチプレクサおよびドライバの動作は、デコーダ３６により生成される適切なコマンドＳＥＬ１、…ＳＥＬＮに従って制御される。
この場合、これらのコマンドに対し、周期的信号ＣＫに基づきクロック制御がなされる。
ここで、例えば、次のようなことが可能となる点に直ちに注意すべきである。すなわち、データの衝突なしで、データのソースとしてのデータチャネルＩ／ＯＤ１が、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９と、他のデータチャネルＩ／ＯＤ（ｉ）の中の一つに接続されるか、または、データのソースとしてのデータチャネルＩ／ＯＤ１が、２つのデータチャネルＩ／ＯＤに一緒に接続されるかし、さらに、第３のデータチャネルＩ／ＯＤがメモリデータ入力／出力チャネル１９に接続されることである。
図３は、図１のアーキテクチャのシステムメモリ制御ユニットの具体的構成例を示す概略的なブロック図である。ここでは、システムメモリ制御ユニット１５に接続されるシステムバスのアービトレーションの構成も一緒に例示することとする。この場合も、システムメモリ制御ユニット１５を集積回路により構成することができる。
【００４７】
図３において、システムメモリ制御ユニット１５は、システムバスに対するアクセスを調整するためのアービトレーション用ロジック（ＡＢＵＳ  ＡＲＢ  ＵＮＩＴと略記されることもある）７０と、有限状態ロジック７２（ＳＴＡＴＥ  ＭＡＣＨＩＮＥと略記されることもある）と、一対のレジスタ７３、７４と、デコーダ７５と、論理和（ＯＲ）回路７６とを備える。
【００４８】
通常のタイプのアービトレーション用ロジック７０は、その入力において、種々のプロセッサ間の二地点間接続方式により、バスに対するアクセス要求信号ＡＢＲＥＱ（ｉ）（記号（ｉ）は、通常、省略される）を受け取る。さらに、ごく一般的な方法を用いて、周期的信号ＣＫにより制御されるタイミングに従い、複数の二地点間接続の一つに応答のバス許可信号ＡＢＧＲＡＮＴ（ｉ）（記号（ｉ）は、通常、省略される）を送り込むことにより、システムバスへのアクセスを許可する。このバス許可信号ＡＢＧＲＡＮＴ（ｉ）の送り込みは、種々のプロセッサに対し、一連のタイムベースにおける一つの期間毎に行われる。
【００４９】
上記アービトレーション用ロジック７０は、好ましくは、システムメモリ制御ユニット１５の集積回路の一部であるが、公知の方法に従ってプロセッサ全体に配分されるアービトレーション用ロジックに置き換えることもできる。この場合、アービトレーション用信号は、分岐接続方式により交換することができる。
上記ユニット１５は、システムバスであるアドレス／コマンド転送用バス（ＡＣＢＵＳ）１７を介し、遂行すべき動作を規定するコマンド信号を受け取る。特に、このコマンド信号として、要求される動作が読み出し動作であるか、または書き込み動作であるかを示す信号ＲＷと、読み出されるデータの単位をモディファイ（Modify）するという意図の下での読み出し動作を示す信号ＲＷＩＭが挙げられる。実際に存在するような他のコマンドは、本発明の発明の範囲外にあるので、それらをすべて理解する必要はない。
【００５０】
これらのコマンドがシステムバスに転送された後に、どこで動作が遂行されるべきかを示すメモリアドレスが転送される。
ここで、プロセッサがバスへのアクセスを獲得した後においてのみ、コマンドおよびアドレスがシステムバスに送り込まれることに注意すべきである。さらに、他の動作の遂行に既に関係しているかもしれないようなリソース（例えば、メモリモジュル）を、共同して使用することができることにも注意すべきである。
【００５１】
この場合、リソースが空き状態になるのを待つ間にシステムバスが占有されたままになるのを避けるために、システムメモリ制御ユニット１５は、コマンドおよびアドレスの内容を分析した後にリトライ信号ＲＥＴＲＹに応答する。このコマンドが拒否された場合、要求中のプロセッサは、上記のコマンドを再提示するように案内される。
【００５２】
このようにして、上記のコマンドは、必要なリソースが使用可能なときのみ実行される。このために、コマンドが実行される場合には、関係するリソースの実行速度に依存するような予め定められた時間で実行され得ることが保証される。したがって、メモリからデータを読み出す場合に、このメモリから供給されるデータの順番は、コマンドが受け入れられた順番と同じ順番になる。
【００５３】
システムメモリ制御ユニット１５から受信されたコマンドおよびアドレスは、レジスタ７３に保持される。このレジスタ７３は、周期的信号ＣＫに基づきクロック制御がなされ、かつ、デコーダ７５により復号化される（デコーダ７５の入力は、レジスタ７３の出力に接続される）。
基本的に、上記デコーダは、アドレスおよびコマンドに基づき、どのモジュール（モジュールＡ、モジュールＢ、モジュールＣ、モジュールＤ、モジュールＥ、またはモジュールＦ）を使用すべきか、および、要求されている動作が書き込み動作（書き込み信号Ｒ）であるか否かを決定する。上記デコーダはまた、アドレスに応じて、メモリに対し予め定められていないデータの転送を指定する。ただし、信号Ｉ／Ｏにより指定されている複数のプロセッサの一つは、例外とする。
【００５４】
デコーダからの出力信号は、有限状態ロジック７２に伝達される。この有限状態ロジック７２は、周期的信号ＣＫに基づきクロック制御がなされる。さらに、上記の有限状態ロジック７２は、周期的信号ＣＫの各周期に対し、前に受信した信号の関数として進行する。
既に述べたように、リトライのメカニズムの結果としてプロセッサにより要求される各動作が実行される場合には、この各動作は、予め定められた時間で実行される。それゆえに、有限状態ロジック７２は、ある時期に受信した信号に基づいて動作することが可能になり、この結果として、現在のクロック周期とこれに続くクロック周期におけるリソースの状態の痕跡を保持することができる。
【００５５】
それゆえに、有限状態ロジック７２は、その出力において、イネーブル信号ＥＮを提供する。このイネーブル信号ＥＮは、予め定められた必要な時間の期間で必要なリソースが使用可能になる場合にのみ、レジスタ７３に存在するアドレスおよびコマンドを出力側のレジスタ７４にローディングすることを可能にするものである。
【００５６】
レジスタ７４は、アドレスおよびコマンド以外に、信号Ａ、Ｂ、Ｃ、Ｄ、ＥおよびＦによってもローディングがなされる。ある時期においては、信号Ａ、Ｂ、Ｃ、Ｄ、ＥおよびＦの中の一つのみが権利を主張する。そして、この一つの信号がメモリアドレス用チャネル（ＭＡＤＤＲ）１８上のシステム・メモリ５に送られたときに、この一つの信号は、相互に排他的な方式により、複数のモジュール中の一つを選択して始動させる（始動信号ＳＴＡＲＴＡ、ＳＴＡＲＴＢ、ＳＴＡＲＴＣ、ＳＴＡＲＴＤ、ＳＴＡＲＴＥ、およびＳＴＡＲＴＦ）。
【００５７】
さらに、始動信号により開始したメモリの動作に応じて、有限状態ロジック７２は、チャネル２０を介し、データチャネル制御ユニット１６（図１）を制御するために適切に時間調整がなされたコマンドを転送する。
読み出し動作の場合には、最終的に、コマンド（排除信号）ＯＥＮＡ、Ｂ、Ｃ、Ｄ、ＥおよびＦに応じて、選択されたモジュールが、メモリデータ入力／出力チャネル１９上に読み出し後のデータを転送することが可能になる。
【００５８】
このような結果は、読み出し動作の期間において、「詮索動作」の後に「介在（Intervention）」が起こらないという条件下で生じ得る。このことは、これから考察することとする。
キャッシュメモリによるデータ複製機能を有するマルチプロセッサ・システムにおいては、データの無矛盾性は、基本的に、下記の２つのアプローチにより保証される。
【００５９】
(1) １番目のアプローチ…モディファイがなされた各データを、即刻メモリ内に書き込むこと、すなわち、ライトスルー（Write Through ）。
(2) ２番目のアプローチ…機会が生じたときのみ、モディファイがなされた各データを延期形式にて書き込むこと（ライトバック（Write Back）、またはコピーバック（Copy Back ）) 。
【００６０】
１番目のアプローチは、データの１単位がプロセッサ内のキャッシュメモリによりモディファイされる度に、メモリへの書き込みを要求する。すなわち、この１番目のアプローチは、バスおよびメモリ・リソース（例えば、メモリモジュル）を相当な期間使用することを意味する。したがって、このようなアプローチは、実用上好ましくない。
【００６１】
２番目のアプローチにおいては、すべてのプロセッサが、メモリに送られてくる読み出しの要求を監視することにより、モディファイされた形でキャッシュメモリ内に存在するデータの１単位が上記の読み出しに関係するか否かを検査することが前提条件となる。この場合、モディファイされた結果として更新されたデータのコピーは、キャッシュメモリ内に存在しない。
【００６２】
上記の２番目のアプローチでは、モディファイされたデータが存在するキャッシュメモリを有するプロセッサは、現在の状況を他のプロセッサに通知し、さらに、要求されたデータを必要とするプロセッサにデータを送らなければならない。そして、このプロセッサのデータは、対応するメモリ内で、送られてきたデータに置き換えられる。このときに、コマンド（排除信号）ＯＥＮＡ、Ｂ、ＣおよびＤを送出しないことで、メモリの出力が阻止される。
【００６３】
好ましくは、システムメモリ制御ユニット１５は、２番目のアプローチにより動作するようになっている（しかしながら、このユニット１５は、１番目のアプローチにより動作するように容易に調整できる）。この２番目のアプローチでは、プロセッサ間の「詮索動作」の信号の交換が簡単に行える。
このような動作を遂行するために、システムメモリ制御ユニット１５は、種々のプロセッサから、二地点間接続を通して、状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）を受け取る。これらの状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）は、種々のプロセッサから、適切なタイミングにより送られる。上記の状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）は、システムバス（ＡＣＢＵＳ）上に存在する読み出し要求が、キャッシュメモリ内にないデータに関係しているか（ＳＮＯＯＰ  ＯＵＴ＝ＮＵＬＬ（データなし））、または、キャッシュメモリ内に存在して有効であり、それゆえに、少なくとも一つのメモリと共用するようなデータに関係しているか（ＳＮＯＯＰＯＵＴ＝ＳＨＡＲＥＤ（共有））、または、キャッシュメモリ内に存在し、かつ、メモリ内に含まれるデータに関してモディファイされるようなデータに関係している（ＳＮＯＯＰ  ＯＵＴ＝ＭＯＤＩＦＹ（モディファイ））ことを通知することを目的とする。
【００６４】
上記の状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）はまた、次のような理由により、「詮索動作」を遂行することが不可能になることを示すこともできる。
例えば、プロセッサが動作中であるという理由か、または、プロセッサ間でデータが転送される場合は、転送データが受信できないという理由が考えられる。上記のいずれの理由によっても、トランザクジョンが完了しないために、このトランザクジョンを繰り返すことが必要である（ＳＮＯＯＰ  ＯＵＴ＝ＲＥＴＲＹ（リトライ））。
【００６５】
これらの信号は、有限状態ロジック７２により受信される。この有限状態ロジック７２は、システムの状態と、制御の対象となる動作とを規定する際に、これらの受信した信号を考慮する。
これから詳細に述べることではあるが、受信した信号が「ＭＯＤＩＦＹ」を示す場合には、プロセッサは、モディファイ動作を遂行する必要があることをシステムメモリ制御ユニット１５に確認した後に、データチャネルＩ／ＯＤ（ｉ）上にデータの１単位を提供するために介在しなければならない。
【００６６】
さらに、有限状態ロジック７２は、チャネル２０を介し、データ・クロスバー（ＤＣＢ）の種々の点間で確立すべき接続を適切に制御する。既に進行中のトランザクションにおいてリソースを使用する際に争いが生じた場合には、上記の有限状態ロジック７２は、介在の要求に対し最も高い優先権を与える。上記の有限状態ロジック７２は、リトライ信号ＲＥＴＲＹを提示することにより、現在のトランザクションを停止させ、さらに、動作が繰り返されなければならないことを通知する。
【００６７】
さらに、種々のプロセッサから受信された状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）は、論理和回路７６内で一緒にされる。この論理和回路７６はまた、必要であることが提示された場合には、有限状態ロジック７２からリトライ信号ＲＥＴＲＹを受信する。さらに、上記の論理和回路７６は、出力信号ＡＲＥＳＰを生成する。この出力信号ＡＲＥＳＰは、システムバスの分岐接続を通して種々のプロセッサに転送されると共に、ＮＵＬＬ、ＳＨＡＲＥＤ、ＭＯＤＩＦＹ、またはＲＥＴＲＹに対応するようなシステムの可能な状態を表示する。
【００６８】
図４は、図１のマルチプロセッサ・システムの動作を説明するためのタイミング図である。ここでは、図１のマルチプロセッサ・システムの動作、特に、図２のマルチプロセッサ・システム内のデータチャネル制御ユニット１６の動作に関するタイミング・ダイヤグラムを簡潔な形で示すこととする。
さらに詳しくいえば、図１中の周期的信号ＣＫのダイヤグラムは、時間の推移に対する周期的信号（すなわち、クロック信号）ＣＫの状態およびレベルを表している。
【００６９】
アクセス要求信号ＡＢＲＥＱ（ｉ）のダイヤグラムは、種々のプロセッサがシステムメモリ制御ユニット１５に送ることができるようなアクセス要求の状態を表している。
このダイヤグラムは、プロセッサの一つに関し、幾つかの通信ラインの電気的なレベルを表示するという意味において、累積的なものである。
【００７０】
同様に、バス許可信号ＡＢＧＲＡＮＴ（ｉ）のダイヤグラムは、システムメモリ制御ユニット１５によって種々のプロセッサに送られる応答信号の状態が、時間に対しどのように変化するかを累積的に表している。
アドレス／コマンド転送用バス（ＡＣＢＵＳ）のダイヤグラムは、アドレス、および、このアドレスに関連するコマンド（読み出し／書き込み）を規定する信号の状態の変化を表している。これらのアドレスおよびコマンドは、プロセッサの各々から、互いに異なる時間の期間でシステムバス上に転送される。
【００７１】
状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）のダイヤグラムは、種々のプロセッサからシステムメモリ制御ユニット１５に送られる信号の状態に関し、時間に対する累積的な変化を表している。この変化は、アドレス／コマンド転送用バス（ＡＣＢＵＳ）上に存在するアドレスに対し続けられる継続的な監視の結果として見い出される。
【００７２】
出力信号ＡＲＥＳＰのダイヤグラムは、システムメモリ制御ユニット１５からアドレス／コマンド転送用バス（ＡＣＢＵＳ）の２つのライン上に送出される信号の状態に関し、時間に対する累積的な変化を表している。これらの信号は、アドレスおよび状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）の受信に応答して生成される。
上記の信号に基づき、システムメモリ制御ユニット１５は、動作の実行に必要なリソースが、要求中の時間の期間では使用不可能であり、それゆえに、再度トランザクションを要求することが必要になるために、現在関係するトランザクションが完了しない旨をすべてのプロセッサに知らせるようにしている。あるいは、上記のシステムメモリ制御ユニット１５は、現在のトランザクションが、幾つかのプロセッサにより共用されないデータに関係しているか（ＮＵＬＬ）、または、共用されるデータに関係しているか（ＳＨＡＲＥＤ）か、または、プロセッサによりモディファイされるデータに関係しているか（ＭＯＤＩＦＹ）をすべてのプロセッサに知らせるようにしている。
【００７３】
さらに、システムメモリ制御ユニット１５は、予め定められた優先順位の規準に従い、かつ、トランザクションの実行に必要なリソースの時間的な使用可能性に応じて、複数のプロセッサに対する単一のアクセスを許可する（例えば、かなり前ではあるが一番最後にアクセスを獲得しているプロセッサに対し）。
メモリアドレス用チャネル（ＭＡＤＤＲ）のダイヤグラムは、システムメモリ制御ユニット１５をシステム・メモリ５に接続するためのメモリアドレス用チャネル１８の状態を表している。
【００７４】
最後に、データチャネルＩ／ＯＤ（ｉ）のダイヤグラムは、種々のデータチャネルおよびデータチャネル制御ユニット１６の状態に関し、時間に対する累積的な変化を表している。
認識され得ることではあるが、周期的信号ＣＫは、複数の連続する時間期間、すなわち、クロック周期Ｐ１、Ｐ２、…Ｐ１３を規定する。このクロック周期においては、周期的信号であるクロック信号は、最初にレベル“０”であるか、または、確定したレベルになっている場合（ロジックのレべルと電気的なレべルとの間の関係は、一切ない）には、レベル“１”に変化する。
【００７５】
図４においては、クロック周期よりも大きくない時間期間内で種々の信号が提示されたり、消失したりする。さらに、各周期の真ん中におけるクロック信号のレベル“０”からレベル“１”への遷移は、信号の状態が安定になってストローブ、すなわち、信号の認識が可能になる瞬間を意味する。
上記の約束事に基づき、システムのユニット間で可能な種々のトランザクションが、どのように進行するかを検査することが可能になる。
【００７６】
これらのトランザクションには、基本的に、下記の４つのタイプがある。
(1) データの項目を読み出すために、あるプロセッサｉ（ｉは正の整数）により行われるシステム・メモリ５へのアクセス：  このタイプのトランザクションは、プロセッサによりアクセス要求信号ＡＢＲＥＱ（ｉ）を提示し、その後に、アドレスおよび読み出しのコマンドを送ることにより始動する。
【００７７】
(2) データの項目を書き込むために、あるプロセッサｉにより行われるシステム・メモリ５へのアクセス：  このタイプのトランザクションは、アクセス要求信号ＡＢＲＥＱ（ｉ）を提示し、その後に、アドレスおよび書き込みのコマンドを送ることにより始動する。
(3) 他のプロセッサＹ（Ｙは正の整数）により始動する読み出しのトランザクションにおいて、あるプロセッサｉにより行われる介在：  この介在は、メモリから読み出されるデータを置き換える際に、プロセッサＹに対しデータの項目を供給する目的で遂行される。
【００７８】
さらに詳しく説明すると、このタイプのトランザクションは、データの項目がモディファイされ、かつ、プロセッサｉ内で使用可能である旨を、状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）のラインを介してシステムメモリ制御ユニット１５に通知することにより始動する。
(4) Ｉ／Ｏメッセージ、すなわち、プロセッサ間で直接行われる通信：  このトランザクションにおいては、あるプロセッサＩ（Ｉは正の整数）が、例えば、周辺機器に対する制御機能を遂行するような他のプロセッサＹへ直接にデータの項目を送る。
【００７９】
このタイプのトランザクションは、アドレスによってメモリの外側のスペースが指定されると共に、プロセッサ（または、信号Ｉ／Ｏ）が特定されるという理由のみにより、書き込み動作と異なる。
ここで、一つの例として、周期Ｐ１において一つの（または二つ以上の）アクセス要求信号ＡＢＲＥＱ（ｉ）が提示されているような図４のダイアグラムを詳細に考察することとする。
【００８０】
アービトレーション用のシステムメモリ制御ユニット１５がアクセス要求を受け取った場合、このユニット１５は、周期Ｐ２においてバス許可信号ＡＢＧＲＡＮＴ（１）を提示することにより、プロセッサ１に対するアクセスを許可する（図４中のＡＢＧＲＡＮＴ（ｉ）の最初の＃１）。このアクセスは、予め定められた優先順位の規準に従い許可される。例えば、かなり前にバスへのアクセスを獲得したプロセッサに対しアクセスが許可される。
【００８１】
プロセッサ１がバス許可信号ＡＢＧＲＡＮＴ（１）を受信した場合、このプロセッサ１は、例えばモジュールＡを指定するためのメモリアドレスをアドレス／コマンド転送用バス（ＡＣＢＵＳ）上に送出する（周期Ｐ３）。
システムメモリ制御ユニット１５は、このアドレスを受け取り、モジュールＡが空いていることを確かめる。すなわち、モジュールＡが、既に、読み出し動作や書き込み動作に関与していないことを確かめる。そして、受け取ったアドレスをメモリアドレス用チャネル（ＭＡＤＤＲ）１８上に送出することにより、モジュールＡを始動させる。このモジュールＡの始動は、適切なモジュール始動信号およびモジュール選択信号を生成することによって実行される。
【００８２】
さらに、一つの例として、周期Ｐ４の期間でアドレス指定がなされることにより始動するモジュールＡは、その後の周期Ｐ７の期間で、読み出された情報をメモリデータ入力／出力チャネル（ＭＤＡＴ）１９上に出力する。
換言すれば、上記の例において、読み出しサイクルは、その動作を実行するために４つのクロック周期を必要とする。
【００８３】
周期Ｐ７の期間では、システムメモリ制御ユニット１５は、モジュールＡからの出力を可能にする。さらに、システムメモリ制御ユニット１５は、チャネル２０を介してのデータチャネル制御ユニット（ＤＣＢ）１６からの出力を可能にする。この場合、メモリデータ入力／出力チャネル１９をデータチャネルＩ／ＯＤ１に接続することにより、モジュールＡの出力側からプロセッサ１にデータが転送される。このようにして、プロセッサ１により要求される読み出し動作が完了する。
【００８４】
周期Ｐ４からＰ７までの期間では、モジュールＡに対する他の読み出し動作または書き込み動作が遂行され得ないことは、明らかである。さらに、周期Ｐ４の期間では、他のモジュールのアドレスを指定する目的でメモリアドレス用チャネル（ＭＡＤＤＲ）１８を使用することは不可能である。同じように、周期Ｐ７の期間では、メモリと他のデータチャネルＩ／ＯＤとの間で他のデータを転送する目的で、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９およびデータチャネル制御ユニット（ＤＣＢ）１６を使用することも不可能である。
【００８５】
上記のように占有されたリソースの状態は、システムメモリ制御ユニット１５の有限状態ロジックにより考慮される。
しかしながら、一度モジュールＡ内で読み出し動作が開始されると、メモリアドレス用チャネル（ＭＡＤＤＲ）１８は、空き状態になる。このために、プロセッサ１とモジュール７との間で開始されるトランザクションの確認を完了させるために何が適しているかを考慮する前に、モジュールＢ、モジュールＣ、モジュールＤ、モジュールＥ、またはモジュールＦに関係する他の動作が始動可能になる。
【００８６】
周期Ｐ３の期間では、システムバスであるアドレス／コマンド転送用バス（ＡＣＢＵＳ）１７上に存在するアドレスが、システムメモリ制御ユニット１５によってのみでなく、プロセッサ２、３および４によっても受信される。これらのプロセッサ２、３および４は、同じアドレスにより指定される情報が、それぞれのキャッシュメモリ内に存在するか否か、そして、この情報がどのような形（共有、モディファイ等）で存在するかを検査するために配置される。
【００８７】
もし、このような情報が存在しないか、または、共有されているのみであるならば、種々のプロセッサは、周期Ｐ４の期間において、システムメモリ制御ユニット１５に対し、対応する表示（データなし／共有：ＮＵＬＬ／Ｓ）を有する状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）を送り込む。
さらに、周期Ｐ５の期間において、システムメモリ制御ユニット１５は、ＮＵＬＬ／Ｓの表示がなされた出力信号ＡＲＥＳＰをすべてのプロセッサに送ることにより、種々のプロセッサにおいてキャッシュメモリの状態に対する更新の動作が要求されることを確認する。
【００８８】
ここで、周期Ｐ３の期間において、読み出し動作に関し、プロセッサ２は、システムバスへのアクセスを許可されるものと仮定する。
周期Ｐ４の期間において、プロセッサ２は、モジュールＡ（２＞Ａ）の読み出し動作のために、システムバス上にアドレスを送出する。このアドレスは、モジュールＡの読み出しサイクルをたった今始動させたばかりのシステムメモリ制御ユニット１５により受信される。
【００８９】
このような構成によれば、システムメモリ制御ユニット１５が、モジュールＡにより構成されるリソースが使用可能ではないことを検査した場合に、上記のユニット１５は、メモリアドレス用チャネル（ＭＡＤＤＲ）１８上にアドレスを転送しない。さらに、上記のシステムメモリ制御ユニット１５が、プロセッサ２、３および４から、読み出し動作の際に、キャッシュメモリ内に含まれるデータの項目が入っていない旨の確認を受け取った場合に、上記のユニット１５は、読み出し動作が実行されず、プロセッサ２が読み出し要求を繰り返し提示しなければならない旨をすべてのプロセッサに通知する。
【００９０】
それゆえに、周期Ｐ７の期間において、プロセッサ２は、アクセス要求信号ＡＢＲＥＱ（２）を再提示し、さらに、周期Ｐ８の期間において、システムメモリ制御ユニット１５は、バス許可信号ＡＢＧＲＡＮＴ（２）を再提示する（この場合、より高い優先順位をもつ要求が、他のプロセッサにより同時になされることはないと仮定している）。
【００９１】
さらに、周期Ｐ９の期間において、プロセッサ２は、アドレス／コマンド転送用バス（ＡＣＢＵＳ）上にアドレスを再度送り込み、モジュールＡに対し読み出し動作を要求する。
この場合、必要とされるリソースが空いているので、次のような動作が遂行される。
【００９２】
システムメモリ制御ユニット１５からメモリアドレス用チャネル（ＭＡＤＤＲ）１８上へアドレスが転送される（周期Ｐ１０）。そして、周期Ｐ１３の期間において、プロセッサ２から、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９、データチャネル制御ユニット（ＤＣＢ）１６およびデータチャネルＩ／ＯＤ２を介して、要求したデータの項目が受信される。
【００９３】
ここで、プロセッサ３がバスへのアクセスを獲得した場合に、このプロセッサ３は、周期Ｐ５の期間において、読み出し動作のためにモジュールＣに向けられたアドレスをアドレス／コマンド転送用バス（ＡＣＢＵＳ）上に送出する。
この場合、モジュールＣが空いているので、システムメモリ制御ユニット１５により読み出し動作が開始され得る。そして、この読み出し動作は、既に説明がなされている時間的な流れに従って行われる。この時間的な流れは、必ずしも繰り返す必要はない。この理由として、モジュールＣから読み出されるデータの項目は、プロセッサのキャッシュメモリのいずれにも存在しないという仮定がなされていることが挙げられる。
【００９４】
また一方で、あるキャッシュメモリ内にデータの項目が存在し、かつ、モディファイされている場合、トランザクションは、次のような異なる形で進行する。
例えば、周期Ｐ６の期間において、プロセッサ４がアドレス／コマンド転送用バス（ＡＣＢＵＳ）へのアクセスを獲得したと仮定した場合に、このプロセッサ４は、モジュールＢに向けられたアドレスをアドレス／コマンド転送用バスに送出する。
【００９５】
システムメモリ制御ユニット１５は、メモリアドレス用チャネル（ＭＡＤＤＲ）１８上にアドレスを転送し（周期Ｐ７）、モジュールＢを始動させる。さらに、上記のシステムメモリ制御ユニット１５は、状態信号ＳＮＯＯＰ  ＯＵＴ（ｉ）に基づき、要求しているデータの項目が、他のプロセッサのキャッシュメモリ内に存在する旨の表示を受け取る（例えば、状態信号ＳＮＯＯＰ  ＯＵＴ（３）によれば、プロセッサ３は、モディファイ（ＭＯＤＩＦＹ）の状態にある）。
【００９６】
それゆえに、システムメモリ制御ユニット１５は、「ＡＲＥＳＰ＝ＭＯＤＩＦＹ」の表示（周期Ｐ８）により、アドレス指定がなされたデータの項目が、メモリから供給されずにプロセッサから供給される旨をすべてのプロセッサに通知する。
プロセッサ３は、すべての要求が承認されたことを認識する。さらに、周期Ｐ１０の期間において、システムメモリ制御ユニット１５は、プロセッサ３から、データチャネルＩ／ＯＤ３、データチャネル制御ユニット（ＤＣＢ）１６およびデータチャネルＩ／ＯＤ４を介してプロセッサ４へ、モディファイされたデータを転送することを可能にするような形でデータチャネル制御ユニット（ＤＣＢ）１６を制御する。また一方で、信号出力の提示を排除するためのコマンドＯＥＮＢの作用により、モジュールＢから読み出されたデータの項目は、モジュールの出力側からは転送されない。
【００９７】
好ましくは、プロセッサ３からの出力データはまた、既に存在するデータの項目を置き換える目的でモジュール内に書き込むために、モジュールＢにも転送される。
考えられ得る最後のタイプのトランザクションは、書き込みのトランザクションである。
【００９８】
例えば、周期Ｐ８の期間において、プロセッサ１は、システムバスへのアクセスのためにアクセス要求信号ＡＢＲＥＱ（ｉ）を提示する。ここで、より高い優先順位を有する他のアクセス要求が全くない場合には、プロセッサ１は、アドレス／コマンド転送用バス（ＡＣＢＵＳ）へのアクセスを獲得する（周期Ｐ９、バス許可信号ＡＢＧＲＡＮＴ（１）が提示される）。
【００９９】
それゆえに、周期Ｐ１０の期間において、プロセッサ１は、モジュールＢに対しアドレスを送出し（１＞Ｂ）、かつ、アドレス／コマンド転送用バス（ＡＣＢＵＳ）上に書き込みコマンドを送出する。
システムメモリ制御ユニット１５がリソースに関する争いを確認しないという仮定の下に、周期Ｐ１１の期間において、上記アドレスが、メモリアドレス用チャネル（ＭＡＤＤＲ）１８に転送される。さらに、書き込むべきデータの項目が、データチャネルＩ／ＯＤ１からメモリデータ入力／出力チャネル（ＭＤＡＴ）へ転送される。
【０１００】
ここで、リソースが使用可能でない場合か、または、メモリモジュールが動作中であるという理由がある場合か、または、周期Ｐ１１の期間でメモリデータ入力／出力チャネル（ＭＤＡＴ）１９が動作することが予想されるという理由がある場合（モディファイ信号ＭＯＤＩＦＹの後に動作するであろう）、データの項目およびアドレスの転送は阻止されるであろう。さらに、周期Ｐ１１の期間において、システムメモリ制御ユニット１５は、リトライ信号ＲＥＴＲＹを提示するであろう。
【０１０１】
この場合、他のプロセッサにより提示されたモディファイ要求（ＭＯＤＩＦＹ）と一緒に提示される書き込み要求は、次のような２つの異なる方法で処理することが可能なことは、いうまでもないことである。
まず第１に、各々のモディファイが提示された場合に、対応するデータの項目が、書き込み動作以前にメモリ内で更新されるように決められているときは、書き込み要求は、モディファイ要求と衝突する。しかしながら、この場合、モディファイ要求が書き込み要求よりも高い優先順位を有しているために、この書き込み要求は、システムバスへのアクセスを許可されない。
【０１０２】
また一方で、たった今、モディファイ信号ＭＯＤＩＦＹによる他のプロセッサの介在を生じさせたばかりの読み出し動作が、モディファイを意図した読み出し動作ＲＷＩＴ（すなわち、読み出しデータが今後モディファイされるであろうことは、既に知られている）である場合、メモリ内でのデータの項目の更新は、無意味なものとなる。それゆえに、一つのプロセッサから他のプロセッサへデータの項目を転送するために、複数のデータチャネルの一つに対するアクサス要求が同時に差し出された場合でも、書き込み要求に関しシステムバスへのアクサスを許可することが可能になる。
【０１０３】
換言すれば、２種の要求の衝突による争いが生ずることなく、２つのデータの時間的な重ね合わせが実現される。このようなことは、一般のシステムのバスアーキテクチャでは、不可能であろう。
この時間的な重ね合わせはまた、プロセッサ間のデータ交換動作と、メモリの読み出し動作との間で、リトライ信号ＲＥＴＲＹを用いてアクセスの衝突を解消することにより可能である。
【０１０４】
上記の仮定によれば、例えば、周期Ｐ１Ｏの期間において、プロセッサ３が、データ書き込みのためのアクセス要求を提示し（アクセス要求信号ＡＢＲＥＱ（３）が提示される）、かつ、周期Ｐ１１の期間において、システムメモリ制御ユニット１５が、システムバスへのアクセスを許可した場合（バス許可信号ＡＢＧＲＡＮＴ（３）が提示される）、プロセッサ３は、プロセッサ１に対し向けられた信号Ｉ／Ｏと同じ信号により動作を指定するためのアドレスをアドレス／コマンド転送用バス（ＡＣＢＵＳ）１７上に送出する。
【０１０５】
システムメモリ制御ユニット１５が、Ｉ／Ｏ動作はプロセッサ１に対し向けられたものであり、リソースの争いは生じないことを確認した場合、このユニット１５は、データチャネル制御ユニット（ＤＣＢ）１６に対し、データチャネルＩ／ＯＤ３からデータチャネルＩ／ＯＤ１へデータの項目を転送するように命令する。これと同時に、データチャネル制御ユニット１６は、メモリから読み出されたデータを、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９からデータチャネルＩ／ＯＤ２へ転送するように命令される。
【０１０６】
これまで述べてきた説明は、図１１に示したように、データチャネル制御ユニット（データ・クロスバー（ＤＣＢ））１６がデータ保持用素子を全くもっていない場合のアーキテクチャに言及している。
それゆえに、データの項目の転送は、データチャネル制御ユニット１６を介し、一つの時間周期でもって行われる。
【０１０７】
したがって、任意のプロセッサから出力されるべきデータは、システムバスに対しアドレスが提示される時間周期の後に続く時間周期において転送されるように決められている。この時間周期の差により、システムメモリ制御ユニット１５は、要求されている動作に対応するリソースが使用可能であるか否かを検査するための時間が与えられる。
【０１０８】
一つの時間周期において、データチャネル制御ユニット１６を介してデータが転送される際には、すべての長さのデータチャネルＩ／ＯＤ（ｉ）、データチャネル制御ユニット１６、および、メモリデータ入力／出力チャネル１９を通って上記の一つの時間周期内にデータが伝達されることが前提条件となる。
この場合、クロック周期は、この前提条件により下限が決まる。
【０１０９】
本発明の他の態様によれば、クロスバー相互接続ロジックは、入力保持レジスタと、出力保持レジスタとを備える。前者の入力保持レジスタは、受信部２１、２２、２３、２４および２５のすぐ下流側の最初の位置に配置される。また一方で、後者の入力保持レジスタは、出力側のドライバ２５、２６、２７、２８および２９の上流側の最初の位置に配置される。
【０１１０】
入力保持レジスタのみを採用した場合、データパス、すなわち、データの経路は２つの流れに分割される。これらの流れの各々は、２つの連続するクロック周期に従って移動することが可能である。すなわち、この場合は、データが移動する全時間期間が、図３を参照したときに考えられる時間期間に等しくなるにしても、絶対的な時間は顕著に短くなる。
【０１１１】
さらに、入力保持レジスタおよび出力保持レジスタを採用した場合、データパスはのみを採用した場合、データの経路は３つの流れに分割される。これらの流れの各々は、３つの連続するクロック周期の一つに従って移動する。
上記のいずれの場合においても、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９上で非常に高速の転送速度が得られる。さらに、異なるチャネルからのデータ転送の位相に関し部分的な重ね合わせを行うことも実現される。
【０１１２】
さらに、このようなデータパスの細分により、メモリとデータチャネル制御ユニット（ＤＣＢ）との間、および、データチャネル制御ユニット（ＤＣＢ）とプロセッサとの間で、異なるデータ転送の並列性を許容することができるようになる。この結果、個々のプロセッサの端子数を顕著に節減することが可能になる。図５は、図１のマルチプロセッサ・システムのデータ・クロスバーの好ましい具体的構成例を示す概略的なブロック図である。
【０１１３】
ここでは、本発明の実施例のマルチプロセッサ・システムばかりでなく、本発明に関係する他の概念にも適用することが可能なデータ・クロスバー、すなわち、データチャネル制御ユニットの構成をブロック形式で図示することとする。
図５において、図２のブロック図で既に示した構成要素に対応する機能部分は、同一の参照番号を付して表すこととする。
【０１１４】
図５に示すように、メモリデータ入力／出力チャネル１９は、６４＋８ビットにより構成される。このような構成においては、８バイトの並列形式（すなわち、二重のワード）で行われるメモリへのデータ転送、またはメモリからのデータ転送と、その後に続く８バイトのエラー訂正コード（ＥＣＣ）とが可能になる。
データチャネル１９は、受信部３５およびドライバ２９に接続される。
【０１１５】
受信部３５の出力は、メモリから受信されるデータを保持するためのデータ保持用のレジスタ３７に接続される。
レジスタ３７の出力は、シンドローム生成用ロジック（ＳＹＮＤＲ  ＧＥＮと略記されることもある）３８に接続されると共に、一般のタイプのエラー訂正ネットワーク（ＤＡＴＡ  ＣＯＲＲＥＣＴＩＯＮと略記されることもある）３９に接続される。
【０１１６】
シンドローム生成用ロジック３８は、受信した情報を分析し、起こり得る訂正可能なエラーと、同様に起こり得る訂正不可能なエラーとを認識する（後者の訂正不可能なエラーに対しては、「エラー訂正不可能」を表示する出力信号を提示する）。さらに、上記のシンドローム生成用ロジック３８は、訂正可能なエラーを訂正するために、エラー訂正ネットワーク３９のロジックを制御する。
【０１１７】
さらにまた、上記のシンドローム生成用ロジック３８は、バイトの情報の各々に対し、パリティ制御用バイトを関連づける。このパリティ制御用バイトは、ロジックシンドローム生成用ロジック３８により、エラー訂正ネットワーク３９のロジックに転送される。
エラー訂正ネットワーク３９のロジックは、出力チャネル４０上に８バイトの情報を提供する。さらに、８バイトの情報の各々の後に、一つのパリティバイトが続く。
【０１１８】
出力チャネル４０は、４つのグループのロジック回路４１、１４２、１４３および１４４に対し情報を分配する。これらのロジック回路の各々は、プロセッサのデータチャネルに連結される。
これらの４つのグループのロジック回路４１、１４２、１４３および１４４は、互いに同じタイプのものなので、ここでは、データチャネルＩ／ＯＤ１に連結される１つのグループのロジック回路４１のみを詳細に説明することとする。
【０１１９】
ロジック回路４１は、第１の７２バイトのレジスタ４２を備える。このレジスタ４２の入力は、出力チャネル４０に接続される。また一方で、レジスタ４２の出力は、１８の要素からなる複数のグループとして、マルチプレクサ３１に接続される。このマルチプレクサ３１との接続により、レジスタ４２の出力は、各々が１８の要素からなる１１のグループの入力を有するマルチプレクサ３１の入力グループを形成する。
【０１２０】
マルチプレクサ３１の出力は、１８のセルレジスタであるＤＯ１用レジスタ４４に接続される。このＤＯ１用レジスタ４４の出力は、ドライバ２５の入力に接続される。このドライバ２５の出力は、データチャネルＩ／ＯＤ１に通ずる。
マルチプレクサ３１の４つのグループの入力４５は、出力チャネル４０に直接接続される。
【０１２１】
残りの４つのグループの入力は、それぞれ、各々が１８本のワイヤからなる３つのチャネル４６、４７および４８に接続される。これらの１８本のワイヤに対し、３つのグループのロジック回路１４２、１４３および１４４が、２バイトの情報と、これに続く一つのパリティバイトを供給する。
上記マルチプレクサ３１は、デコーダ３６により生成される適切な選択信号によって制御される。このデコーダ３６の制御機能によって、ＤＯ１用レジスタ４４は、連続的なローディングが可能になる。そして、それゆえに、チャネル４０上に存在するか、または、レジスタ４３内に保持されている二重のワードから抽出される一対のバイトの情報を、データチャネルＩ／ＯＤ１へ連続的に転送することが可能になる。上記マルチプレクサ３１はまた、データチャネルＩ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４から、それぞれロジック回路１４２、１４３および１４４を介して個々にやって来る一対のバイトの情報（および、関係するパリティバイト）を、データチャネルＩ／ＯＤ１へ転送することも可能にする。
【０１２２】
チャネル４０から二重のバイトを直接選択するマルチプレクサ３１により提供される可能性によって、チャネル４０上に存在する二重のバイトに関しＤＯ１用レジスタ４４をローディングし、これと同時に、チャネル４０上に存在する二重のワードに関しレジスタ４２をローディングすることが可能になる。
このようにして、読み出し動作により明確にアドレス指定がなされた二重のバイトのプロセッサへの転送を、かなりの高速で行うことができる。
【０１２３】
レジスタ４２内に保持されている他の二重のバイトは、適切な順番で前者の二重のバイトの後に付加することができる。
しかしながら、読み出し動作の流れは、さらに考察する必要がある。以下に、この読み出し動作の流れについてさらに詳しく述べることとする。
メモリ内へのデータ書き込み、または、プロセッサ間のデータの転送のために、データ・クロスバーは、ロジック回路４１のユニット内に、一つのグループの受信部２１を備える。この受信部２１の入力は、データチャネルＩ／ＯＤ１に接続されており、その出力は、１８のセルレジスタであるＤＩ１用レジスタ（第１のレジスタ）４９に接続されている。
【０１２４】
ＤＩ１用レジスタ４９の出力は、チャネル５０に接続される。このチャネル５０は、３つのグループのレジスタ（ロジック）１４２、１４３および１４４に対し、ＤＩ１用レジスタ４９内に保持されている情報を分配する（特に、マルチプレクサ３１と等価なマルチプレクサに対し）。
ＤＩ１用レジスタ４９の出力はまた、第２のレジスタ５１に接続される。この第２のレジスタ５１の出力は、第３のレジスタ５２の入力およびパリティエラー検査用ロジック（ＰＣＨＥＣＫと略記されることもある）。
【０１２５】
さらに、この第３のレジスタ５２の出力は、第４のレジスタ５４の入力に接続される。この第４のレジスタ５４の出力は、キャッシュメモリ内の第５のレジスタ５５の入力に接続される。
ＤＩ１用レジスタ４９およびレジスタ５１は、１８のセルをもっているのに対し、レジスタ５２、５４および５５は、１６のセルしかもっていない。この理由として、後者のセルにおいては、パリティビットを保持することは不必要であることが考えられる。
【０１２６】
レジスタ５１、５２、５４および５５のバイト出力は、各々が６４ビットからなる４つのチャネルを有するマルチプレクサ５６の第１のグループの入力５７に接続される。
他のグループの入力５８、５９および６０は、ロジック回路４１のグループに相当するロジック回路１４２、１４３および１４４にそれぞれ接続される。
これらのロジック回路１４２、１４３および１４４は、それぞれ、データチャネルＩ／ＯＤ２、Ｉ／ＯＤ３およびＩ／ＯＤ４に連結される。
【０１２７】
マルチプレクサ５６の出力は、８ビットコードのＥＣＣ（既述のとおり、エラー訂正コードの略）生成用ロジック（ＥＣＣ  ＧＥＮと略記されることもある）６１の入力に接続される。このＥＣＣ生成用ロジック６１は、エラーを検出して訂正するためのものである。上記マルチプレクサ５６の出力はまた、７２ビットのレジスタ６２の入力に接続される。このレジスタ６２は、ＥＣＣ生成用ロジック６１により生成される８ビット入力形のＥＣＣのコードも受け取る。
【０１２８】
レジスタ６２の出力は、出力側のドライバ２９の入力に接続される。このドライバ２９は、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９に通ずる。
図６は、図５のデータ・クロスバーの動作を説明するためのタイミング図である。
図６において、図４のタイミング図で既に示した信号の名前に対応する信号のラインは、図４の信号のラインと同じ意味を有する。
【０１２９】
図６では、説明を簡単にするために、状態信号ＳＮＯＯＰ  ＯＵＴのダイヤグラムを省略する。また一方で、ＤＩＲＥＧのダイヤグラムを、プロセッサに接続されたチャネルの状態を表すデータチャネルＩ／ＯＤ（ｉ）のダイヤグラムに付加している。このＤＩＲＥＧのダイヤグラムは、データ・クロスバー（ＤＣＢ）の入力側のレジスタ、例えば、レジスタ４９およびレジスタ３７の状態を表すものである。さらに、メモリデータ入力／出力チャネル１９の状態を表すメモリデータ入力／出力チャネル（ＭＤＡＴ）のダイヤグラムと、メモリからＤＣＢへとデータが転送されるときの入力側のレジスタ３７の状態を表すＤＯＲＥＧのダイヤグラムと、ＤＣＢの出力側のレジスタ４４の状態を表す状態ＤＯ（ｉ）のダイヤグラムとを、データチャネルＩ／ＯＤ（ｉ）のダイヤグラムに付加している。
【０１３０】
ここでは、データパスを複数の流れに分割することにより、例えば１０ｎｓｅｃの非常に短いクロック周期（周期的信号ＣＫの時間長に相当する）を用いることが可能になる。そして、ほんの２周期の間（各々の転送に対し２０ｎｓｅｃ）だけアドレス／コマンド転送用バス（ＡＣＢＵＳ）またはメモリデータ入力／出力チャネル（ＭＤＡＴ）を占有することが可能になる。
【０１３１】
さらに、各々の転送に対し、８バイトのデータ（２ワード）または多量のデータを転送することが可能になる。
プロセッサのデータチャネルのレベルでは、データの転送が、クロック周期の時間間隔で実行される時間毎に、部分的に連続する２バイトの転送形式で行われる。このようなデータの転送は、前述のアーキテクチャにおいて、各チャネルが、使用可能なように調整されかつ「バッファ機能」を有するリソースをもっているという事実を利用することにより実行される。
【０１３２】
このことは、幾つかの異なるデータチャネルＩ／ＯＤ（ｉ）とメモリとの間のデータ転送を時間的に重ね合わせる可能性をもたらす。
このような可能性に加えて、システムのメモリデータ入力／出力チャネル（ＭＤＡＴ）およびアドレスバスは、２種のノードを構成する。これらのノードにより、データおよびアドレスの連続的なかつ順序立った流れを重ね合わせることができる。さらに、データおよびアドレスに対し関連する相関関係のラベルを必要とすることなく、種々の動作の管理および制御が可能になる。この場合、このようなラベルは、余分なものとなる。
【０１３３】
ついで、図６を順次考察していくこととする。図６において、一般的なプロセッサ１は、周期Ｐ１において、アクセス要求信号ＡＢＲＥＱを提示し、周期Ｐ３において、システムバスおよびデータチャネルに対するアクセスの許可を受け取る。
さらに、周期Ｐ５および周期Ｐ６において、プロセッサ１は、アドレスとこのアドレスに関係するコマンドを、アドレス／コマンド転送用バス（ＡＣＢＵＳ）上に送出する。
【０１３４】
さらに、周期Ｐ８および周期Ｐ９において、システムメモリ制御ユニット１５からメモリアドレス用チャネル（ＭＡＤＤＲ）へアドレスが転送される。
この間に、プロセッサ１は、周期Ｐ５において、二重のバイトのデータをデータチャネルＩ／ＯＤ１上に送出する。このようにして送出されたデータは、周期Ｐ６において、ＤＩ１用レジスタ４９（図５）内で保持される。そして、このようにして保持されたデータは、その後の周期において、ＤＩ１用レジスタ４９からレジスタ５１、５２、５４および５５へ漸次転送される。
【０１３５】
周期Ｐ１０において、データチャネルＩ／ＯＤ１を介して受信された最初の二重のバイトのデータは、レジスタ５５内に保持される。
周期Ｐ１０において、プロセッサ１は、２番目の二重のバイトのデータをデータチャネルＩ／ＯＤ１上に送出する。この２番目のデータが、ＤＩ１用レジスタ４９からカスケード接続のレジスタ５１、５２、５４へ転送されると、この転送されたデータは、周期Ｐ１０の期間よりレジスタ５４内に保持される。
【０１３６】
同じようにして、プロセッサ１は、周期Ｐ７および周期Ｐ８において、３番目４番目の一対のバイトのデータをデータチャネルＩ／ＯＤ１上に送出する。このようにして送出されたデータは、それぞれ、レジスタ５１、５２内に保持され、周期Ｐ１０の期間より使用可能になる。
このようにして、プロセッサ１は、４つの周期Ｐ５〜Ｐ８の期間で、連続する８バイトの対のデータの転送を実行する。さらに、周期Ｐ１０の期間より、マルチプレクサ５６の出力において、８バイトのデータが並列形式で使用可能である。
【０１３７】
周期Ｐ１２およびＰ１３において、マルチプレクサ５６がイネーブルの状態になり、情報がレジスタ６２に転送される。このレジスタ６２によって、転送された情報が保持され、かつ、メモリデータ入力／出力チャネル（ＭＤＡＴ）上に出力データが保持される。
周期Ｐ３において、他のプロセッサ２がアクセス要求信号ＡＢＲＥＱ２を提示し、周期Ｐ５において、プロセッサ１により既に使用されているモジュールとは異なるモジュールの書き込み動作に関するバス許可信号ＡＢＧＲＡＮＴ２を受け取る。そして、必要なリソースが空いている場合、プロセッサ２は、周期Ｐ７および周期Ｐ８の期間で、アドレス／コマンド転送用バス（ＡＣＢＵＳ）上にアドレスを送出し、かつ、周期Ｐ７〜周期Ｐ１０の期間で、データチャネルＩ／ＯＤ（２）上に４対のバイトのデータを連続して送出することにより、書き込み動作を開始して完了させることができる。
【０１３８】
このような情報は、周期Ｐ１４および周期Ｐ１５において、コピーされた後にレジスタ６２内に保持される。
それゆえに、２つのプロセッサ１、２からメモリへの転送は、部分的な時間の重ね合わせにより行われる。
読み出し動作は、書き込み動作とほぼ同じ流れでもって進行する。
【０１３９】
例えば、周期Ｐ５の期間でプロセッサ１から提示されたアクセス要求により、周期Ｐ７において、アクセスの許可が得られる。このアクセスの許可により、周期Ｐ９および周期Ｐ１０の期間において、アドレス／コマンド転送用バス（ＡＣＢＵＳ）がアドレスによって占有される。
さらに、周期Ｐ１２および周期Ｐ１３において、アドレスは、メモリアドレス用チャネル（ＭＡＤＤＲ）１８に転送される。
【０１４０】
例えば、周期Ｐ２０および周期Ｐ２１において、読み出されたデータの項目は、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９上で使用可能であり、周期Ｐ２１および周期Ｐ２２において、レジスタ３７（ＤＯＲＥＧのダイヤグラム）内に保持される。
周期Ｐ２２において、マルチプレクサ３１およびレジスタ４２は、一対のバイトのデータをＤＯ１用レジスタ４４に転送し、かつ、メモリから受信される８バイトのデータをすべてレジスタ４２内にローディングするように制御される。
【０１４１】
さらに、周期Ｐ２２において、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９およびレジスタ３７が空いた状態になるので、これらのチャネル１９およびレジスタ３７は、例えば他のプロセッサにより予め定められた別の情報を転送して保持することができる。
周期Ｐ２３において、ＤＯ１用レジスタ４４内に保持された二重のバイトのデータは、データチャネルＩ／ＯＤ１上に転送され得る。また一方で、上記のＤＯ１用レジスタ４４では、レジスタ４２内に保持されたデータの中から、マルチプレクサ３１により選択された二重のバイトのデータがローディングされる。
【０１４２】
周期Ｐ２４、周期Ｐ２５および周期Ｐ２６において、その後に続く３対のバイトのデータが、データチャネルＩ／ＯＤ１上に転送され、転送動作が完了する。この場合、上記の読み出し動作が、他の読み出し動作と部分的な重ね合わせがなされるような転送動作によって遂行することができることは、明らかなことである。
【０１４３】
例えば、周期Ｐ３において、書き込み動作よりもむしろ読み出し動作に関係するアクセス要求が、プロセッサ２により提示された場合、周期Ｐ７および周期Ｐ８の期間でリソースが使用可能であるという仮定が成り立つときは、周期Ｐ１８および周期Ｐ１９において、読み出すべきデータの項目がメモリデータ入力／出力チャネル（ＭＤＡＴ）上に存在し、さらに、周期Ｐ１９および周期Ｐ２０において、上記データの項目がレジスタ３７（ＤＯＲＥＧのダイヤグラム）内にローディングされるであろう。
【０１４４】
周期Ｐ２０〜周期Ｐ２３の期間で、ＤＯ１用レジスタ４４（ＤＯ（ｉ）のダイヤグラム）へのブロック転送が行われる。さらに、周期Ｐ２１〜周期Ｐ２４の期間で、データチャネルＩ／ＯＤ２への転送が行われる。このデータチャネルＩ／ＯＤ２への転送は、ＤＯ１用レジスタとデータチャネルＩ／ＯＤ１の進行の動作に関する部分的な時間の重ね合わせによって実行される。
【０１４５】
ここで、周期Ｐ９において、プロセッサ３が、書き込み動作のためのシステムバスへのアクセス要求を行うと仮定する。
この場合、上記のアクセス要求が提示された周期から１０クロック周期後にメモリデータ入力／出力チャネル（ＭＤＡＴ）１９が使用可能であることが前提条件となる。すなわち、、メモリデータ入力／出力チャネル（ＭＤＡＴ）が、一方で、周期Ｐ５の期間で差し出されたアクセス要求を満足するように定められているような、周期Ｐ２０および周期Ｐ２１において、ＭＤＡＴが使用可能でなければならない。
【０１４６】
それゆえに、一度、システムメモリ制御ユニット１５がバスへのアクセスを許可し、対象とする動作を書き込み動作として認識すると（周期Ｐ１３および周期Ｐ１４）、このシステムメモリ制御ユニット１５は、メモリアドレス用チャネル（ＭＡＤＤＲ）１８上へのアドレスの転送を阻止することにより、トランザクションを中断させる（周期Ｐ１６）。さらに、上記のユニット１５は、メモリデータ入力／出力チャネル（ＭＤＡＴ）１９上へのデータの転送を阻止する。その後、上記のユニット１５は、出力信号ＡＲＥＳＰとして予め定められた期間（周期Ｐ１８および周期Ｐ１９）に提示されるリトライ信号ＲＥＴＲＹを用いて、プロセッサ３に対し、周期Ｐ２１またはその後の周期で強制的にアクセス要求を繰り返させる。
【０１４７】
それゆえに、一方では、データ転送動作が、メモリ内に書き込むために９クロック周期を必要とし、かつ、メモリから読み出すために１８クロック周期を必要とし、他方では、２種の転送動作間の干渉時間、および、２種の転送動作間で起こり得る衝突時間が、ほんの２クロック周期に限定されることが認められる。
このために、部分的に時間の重ね合わせがなされた転送が可能である。このような転送は、各種のメモリ・リソース（モジュール）と、各種のプロセッサのチャネル（データチャネルＩ／ＯＤ（ｉ））とを使用することにより実行される。これに加えて、上記の転送は、これらのチャネルに関係するバッファとしてのリソース、直列式のリソース、および並列式のリソースを使用することによっても実行される。これらのリソースは、データ・クロスバー（ＤＣＢ）のロジック内のプロセッサのチャネルに連結される。
【０１４８】
さらに、図５のブロック図および図６のタイミング図に基づき、モディファイされたデータの項目を他のプロセッサへ転送する際にあるプロセッサによる介在があった場合でも、転送動作は、対のバイトのデータをシリアル形式にして直接に行われることが、すぐさま結論づけられる。さらに詳しくいえば、この転送動作では、機能的に図４のＤＩ１用レジスタ４９と等価なレジスタから、チャネル５０、４６、４７および４８の一つを介して、機能的に図４のＤＯ１用レジスタ４４と等価なレジスタへと対のバイトのデータが転送される。
【０１４９】
図３のタイミング図を参照しながら既に説明したように、上記の転送動作は、全体として、プロセッサおよびメモリ間の一つまたは２つ以上の転送に対し時間的に重ね合わせられる。
今までは、本発明の特定の好ましい実施例についてのみ説明してきたが、多くの適切な変形例が考えられることは明らかである。
【０１５０】
プロセッサおよびメモリモジュールの数（好ましい実施例においては、４つのプロセッサと、６つのモジュール）は、メモリの並列性とプロセッサの並列性との間の並列性の比が任意に設定されるように選択することができる。
多数の並列性を達成するために、さらに多くのデータ・クロスバー（ＤＣＢ）のロジック構成要素が並列形式で使用され得る。また、この場合、データ・クロスバーのロジックは、パリティ検査回路以外に、エラーの検出および訂正のためのエラー訂正部およびコード生成部を備えている。さらに、データ・クロスバーのロジックは、メモリから読み出される情報と、メモリ情報の部分的なモディファイのためにプロセッサからやって来る他の情報とを結合する（マージングともいう）ための回路も備えている。
【０１５１】
さらに、アドレスバスおよびコマンドバスに対するアクセス（ＡＢＲＥＱ（ｉ））と、データチャネルに対するアクセス（ＤＢＲＥＱ（ｉ））のアービトレーションのために各々独立の信号を使用することも可能である。このアービトレーションでは、読み出し動作／書き込み動作またはその他の動作に関するアクセスの要求を提示するためのトランザクションや、存在するかまたは予定されている必要なリソースの使用可能性に対し、バスの許可を調整するためのトランザクションを特徴としている。このような構成により、「リトライ」のケースを最小限に減らし、それゆえに、システムバスの最適な利用を実現することができるようになる。
【０１５２】
同じプロセッサが、連続的な読み出し要求の後にかなりの程度の連続性でもってデータを受け取ることを可能にするために、レジスタ４２は、複数のレジスタをカスケード接続形式にするか、または、ＦＩＦＯ（First in-First out）のスタック形式にすることによって構成することもできる。
リソースの争いがあるような複数種の書き込み動作の場合は、リトライ動作を回避するために、同じような概念が使用される。さらに詳しくいえば、このような概念は、図５のレジスタ５１、５２、５４および５５の下流側に配置される入力バッファに各種の書き込み動作を保持すると共に、アドレスを一時的に記憶するための同じような入力バッファをシステムメモリ制御ユニット１５内に設けることにより使用される。
【０１５３】
このようにすれば、予め定められた周期の期間内に遂行できない書き込み動作は、必要なリソースが使用可能になるようなその後の周期にまで延長することができる。
さらに、複数のプロセッサのすべてまたはその一部が、キャッシュメモリを備えることは必ずしも不可欠なことではない。この理由として、本発明の主題を構成するアーキテクチャにより提供される利点は、プロセッサ間のデータ転送が、プロセッサおよびメモリ間の転送の重ね合わせにより実行されるという事実によって達成されることが挙げられる。
【０１５４】
最終的に、これまでの説明において、一つのグループのプロセッサ、すなわち、「一群のプロセッサ」をも包含させるように、「プロセッサ」という用語を使用することができることを明らかにしなければならない。これらのプロセッサは、局所的バスと相互接続がなされ、かつ、システムバスと通信すると共に、インタフェース用アダプタを介してのデータの転送を行うための二地点間チャネルと通信することができる。このような構成により、外部的な効果を考慮した場合、一群のプロセッサが、単一のプロセッサとみなせるようになる。
【０１５５】
この場合、幾つかのグループのプロセッサをシステムバスに対し直接に接続するというインタフェース用アダプタなしの直接接続も可能である。
グループ内の各プロセッサは、同じデータ転送チャネルに対し直接に接続される。このデータ転送チャネルは、幾つかのプロセッサとの接続に関しては分岐データバスと考えられ、また一方で、プロセッサの集合体に関し、ならびに、データチャネル制御ユニット（データ・クロスバー）１６との接続に関しては二地点間データバスと考えられる。
【０１５６】
この場合、当然のことではあるが、データの「転送速度」は、より低くなるであろう。この理由として、データチャネルに対する負荷が比較的大きくなることが挙げられる。そして、周期的信号ＣＫの周波数を比較的低い値に設定することが必要になるであろう。
二者択一的な例として、第１の複数のプロセッサの各々が、複数の二地点間データチャネルを介してデータ・クロスバーと通信し、また一方で、第２の複数のプロセッサ（比較的低速で済む周辺制御装置として機能するプロセッサ）の各々が、単一の分岐（データチャネル）バスを介してデータ・クロスバーと通信するようなシステムの場合を考える。この場合、このバス上のデータ転送は、転送周波数を不変なままにした状態で（転送される各ブロックに対し一つのクロック周期で）幾つかのクロック周期にわたり（例えば、２クロック）バスを占有することによって実行される。
【０１５７】
上記の解は、明らかに、データ・クロスバーが、図５に示したようなタイプ、すなわち、バッファ用レジスタを備えたタイプである場合にのみ好都合である。図７は、図１のマルチプロセッサ・システムを変形した実施例を示す概略的なブロック図である。
図７においては、図１と同じように、本発明のマルチプロセッサ・システムのアーキテクチャが概略的に図示されている。ここでは、先の図１に示した構成要素と機能的に等価な構成要素に関しては、同一の番号を付して表すこととする。
【０１５８】
図７のブロック図は、プロセッサ１、２が、一対のプロセッサにより構成されているという事実のみにおいて図１のブロック図と異なる。
図７では、プロセッサ１は、２つのプロセッサ１０１、１０２により構成される。これらの２つのプロセッサ１０１、１０２は、アドレス／コマンド転送用バス（ＡＣＢＵＳ）１７およびデータチャネルＩ／ＯＤ１に対し直接に接続される。
【０１５９】
さらに、これらの２つのプロセッサ１０１、１０２は、アービトレーション用のシステムメモリ制御ユニット１５から見れば、互いに競合する２つの独立したプロセッサとみなせる。この場合、２つのプロセッサ１０１、１０２は、コマンドおよびアドレスバスに対するアクセスばかりでなく、データチャネルＩ／ＯＤ１に対するアクセスをも考慮したときに、２つの独立したプロセッサであると考えられる。
【０１６０】
システムメモリ制御ユニット１５は、アービトレーション用ユニットおよび有限状態ロジックの両方に対し上記の事実を考慮に入れる。ここで、上記の２つのプロセッサ１０１、１０２が、時間的な重ね合わせによりデータチャネルＩ／ＯＤ１上でトランザクションを実行できないことは明らかである。
プロセッサ２は、２つのプロセッサ１０３、１０４と、インタフェース用アダプタであるインタフェース・ロジック１０５とにより構成される。
【０１６１】
これらの２つのプロセッサ１０３、１０４は、互いに通信し合い、かつ、一般的なタイプの局所的バス１０６を介してインタフェース・ロジック１０５と通信する。
このインタフェース・ロジック１０５は、アドレス／コマンド転送用バス１７およびデータチャネルＩ／ＯＤ２に接続される。さらに、インタフェース・ロジック１０５は、局所的バス１０６に対するアクセスのアービトレーション、すなわち、調整を行う。このアービトレーションは、システムバス（アドレス／コマンド転送用バス）１７およびデータチャネルＩ／ＯＤ２に対し２つのプロセッサ１０３、１０４により提示されるアクセス要求を認識することにより実行される。
【０１６２】
これらのアクセス要求は、システムバスのプロトコルおよびタイミングに従って、このシステムバスに転送される。
局所的バス１０６が非同期タイプであり、プロセッサ１０３、１０４の動作が非同期形式で遂行されることは明らかである。これに対し、インタフェース・ロジック１０５が、システム内の他の構成要素と同期して動作するように、周期的信号ＣＫにより時間規定がなされなければならないことは明らかである。上記のプロセッサ１０３、１０４は、システムバス（アドレス／コマンド転送用バス）１７およびデータチャネルＩ／ＯＤ２に対し直接に通信するので、同じ条件下にあることが必要である。
【０１６３】
この場合、プロセッサ１０３、１０４は、システムメモリ制御ユニット１５により単一のプロセッサとみなされる。そして、インタフェース・ロジック１０５は、一方のプロセッサ、または他方のプロセッサに対し、受信したメッセージデータを振り分ける役割を遂行する。
今まで本発明の特定の実施例について説明してきたが、ここでは、ただ単に、本発明のほんの一例を例証したにすぎないと考えられる。さらに、当業者においては数多くの変形および変更が容易になし得るので、本文で示したような構成にのみ本発明を限定することは望ましくない。したがって、本文に添付されている請求の範囲およびその等価物に記載された発明の範囲内にある限りにおいては、すべての適切な変形例および等価例が考えられる。
【図面の簡単な説明】
【図１】本発明の一実施例に従って構成されるアーキテクチャおよび共用メモリを有するマルチプロセッサ・システムを示す概略的なブロック図である。
【図２】図１のアーキテクチャのデータチャネル制御ユニットの具体的構成例を示す概略的なブロック図である。
【図３】図１のアーキテクチャのシステムメモリ制御ユニットの具体的構成例を示す概略的なブロック図である。
【図４】図１のマルチプロセッサ・システムの動作を説明するためのタイミング図である。
【図５】図１のマルチプロセッサ・システムのデータ・クロスバーの好ましい具体的構成例を示す概略的なブロック図である。
【図６】図５のデータ・クロスバーの動作を説明するためのタイミング図である。
【図７】図１のマルチプロセッサ・システムを変形した実施例を示す概略的なブロック図である。
【符号の説明】
１，２，３および４…プロセッサ
５…システム・メモリ
１０，１１，１２，１３，１１３および１１４…モジュール
１４…タイマ・ユニット
１５…システムメモリ制御ユニット
１６…データチャネル制御ユニット
１７…アドレス／コマンド転送用バス
１８…メモリアドレス用チャネル
１９…メモリデータ入力／出力チャネル
３１…マルチプレクサ
３７，４２，５１，５２，５４，５５および６２…レジスタ
４１，１４２，１４３および１４４…ロジック回路
４４…ＤＯ１用レジスタ
４９…ＤＩ１用レジスタ
５６…マルチプレクサ
７０…アービトレーション用ロジック
７２…有限状態ロジック
【図１】
0003645281.tif 000002
【図２】
0003645281.tif 000003
【図３】
0003645281.tif 000004
【図４】
0003645281.tif 000005
【図５】
0003645281.tif 000006
【図６】
0003645281.tif 000007
【図７】
0003645281.tif 000008