以下、本発明に係るマルチプロセッサを図面に示したいくつかの実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。
<発明の実施の形態1>
(装置構成の概略)
図1は、本発明に係るマルチプロセッサシステムの第1の実施の形態を示す。図において、2−0から2−3はプロセッサユニットであり、3−0と3−1はメモリユニットであり、複数のプロセッサユニット2−0から2−3により共有される主記憶の一部を構成する複数の主記憶部分がこれらのメモリユニットに分散して保持される。4−0ないし4−1は入出力ユニットであり、それぞれ複数の入出力装置、たとえば、ディスク装置10−0−1ないし10−0−2および10−1−1ないし10−1−2に接続されている。これらの入出力ユニットには、他の入出力装置、たとえば、回線接続装置(図示せず)等も接続されている。1は、ブロセッサユニット2−0ないし2−3、メモリユニット3−0ないし3−1、入出力ユニット4−0ないし4−1を相互に接続し、これらの間でのトランザクションと呼ぶひとかたまりのデータを複数個並列に転送可能なインタコネクトネットワークであり、本実施の形態ではその一例としてクロスバスイッチを使用する。
各プロセッサユニット2−i(i=0,1,2または3)は、同一の構造を有し、それぞれ1台以上のプロセッサ(Proc)9−i−1および9−i−2(i=0,1,,,)を内蔵する。主記憶に対するキャッシュメモリ6−iとキャッシュ制御5−iとを含む。各プロセッサ内には、キャッシュメモリ5−0よりも高速で容量の小さいプロセッサキャッシュ(図示せず)が内蔵されている。本実施の形態では、このプロセッサキャッシュとキャッシュメモリ6−iはいずれもストアイン方式のキャッシュであると仮定する。また、これらのキャッシュのキャッシュブロックの大きさは32バイトであると仮定する。各プロセッサユニット2−iには、さらに、ネットワーク1との間でデータを交換するための送信部7−iおよび受信部8−iがある。
各メモリユニット3−0または3−1は同一の構造を有し、メモリバンク11−0または11−1、送信部7−4または7−5および受信部8−4または8−5がある。メモリバンク11−0と11−1が主記憶を構成し、本実施の形態では、メモリアドレスは、32ビットであり、これらのメモリバンクからのデータの読み出しあるいは書き込み単位は、キャッシュブロックサイズ32ビットに等しく、さらに、これらのメモリバンクは、32バイトを単位にしてインタリーブされていると仮定する。
入出力ユニット4−0ないし4−1には、それぞれ入出力アダプタ13−0または13−1、送信部7−6または7−7および受信部8−6または8−7がある。入出力アダプタ13−0は、クロスバスイッチ1から受信した信号をディスク装置10−0−1ないし10−0−2等が受信可能な信号に変換し、あるいは逆に、ディスク装置10−0−1ないし10−0−2等から受信した信号を、クロスバスイッチ1が受信可能な信号に変換する回路である。
これらのメモリユニット3−0または3−1内の送信部7−4と7−5あるいはこれらの入出力ユニット4−0または4−1内の送信部7−6または7−7の構造は、プロセッサユニット2−0内の送信部7−0と同一である。同様に、これらの入出力ユニットとメモリユニット内の受信部8−4から8−7の構造も、プロセッサユニット2ー0内の受信部6−0と同一である。なお、図1では、簡単化のためメモリユニット3−1、入出力ユニット4−1の内部構成は図示していない。
プロセッサユニット2−0ないし2−3、メモリユニット3−0ないし3−1、入出力ユニット4−0ないし4−1、ディスク装置10−0−1ないし10−1−2等の入出力装置には、従来技術によるマルチプロセッサシステムと同様に、これらを制御するためのメモリマップドレジスタ(図示せず)があり、これらのレジスタは、主記憶が属するのと同じアドレス空間にマップされている。いわゆるメモリマップドI/O方式が本実施の形態でも採用されている。
本実施の形態では、キャッシング可能な主記憶データへのアクセス要求がいずれかのプロセッサユニットで発生したとき、そのデータがそのプロセッサユニット内のキャッシュに保持されていないときに、他の全てのユニットの内、主記憶に対するキャッシュを含んでいるプロセッサユニットおよびそのデータを保持している一つのメモリユニットのみに、アクセス要求をクロスバスイッチ1を介して部分放送し、他のメモリユニットおよび全ての入出力ユニットには、このアクセス要求を送付しないように、各プロセッサユニットの送信部7−i内に送信先決定回路を設けた。これにより、キャッシュ一致制御の動作を各プロセッサユニットで並行して行うことを可能にし、しかも、それに関与しないユニットにはこの要求を送らないことにより、これらの他のユニットがこのアクセス要求の転送と並行して、クロスバスイッチ1により他の通信を行えるようにした。すなわち、このアクセス要求の転送の間もクロスバスイッチ1の並列転送能力を利用できるようにした。
さらに、入出力装置内のメモリマップドレジスタをアクセスするアクセス要求がいずれかのプロセッサユニットで発生したとき、他の全てのユニットの内、入出力ユニットの全てにアクセス要求をクロスバスイッチ1を介して部分放送し、他のユニットには、このアクセス要求を送付しないように、各プロセッサユニットの送信部7−i内に送信先決定回路がこのアクセス要求の送付先を決定する回路を設け、各入出力ユニットに接続された入出力装置内には、このアクセス要求が指定するアドレスを割り当てられたレジスタを有するか否かを判断する回路を設けた。これにより、入出力装置内のメモリマップドレジスタへ実際に割り当てられたアドレスが変更されても、それに関係なく、アクセス要求で指定されたアドレスを有するメモリマップドレジスタをアクセスできる。しかも、入出力ユニットユニット以外のユニットにはこの要求を送らないことにより、これらの他のユニットがこのアクセス要求の転送と並行して、クロスバスイッチ1により他の通信を行えるようにした。すなわち、このアクセス要求の転送の間もクロスバスイッチ1の並列転送能力を利用できるようにした。
さらに、プロセッサユニット、メモリユニットあるいは入出力ユニットのいずかれに属するメモリマップドレジスタをアクセスするアクセス要求がいずれかのプロセッサユニットで発生したとき、全てのユニットにこのアクセス要求をクロスバスイッチ1を介して放送するようにした。これにより、このようなアクセス要求の送付先を決める回路を簡単化した。このようなレジスタへのアクセスの回数は小さいので、このような放送による弊害が少ないことを利用した。
(アドレス空間の構造)
図4は、本実施の形態で採用するアドレス空間の例を示している。本実施の形態では、このアドレス空間は32ビットのアドレスで構成されると仮定している。このアドレス空間は3つの領域に区分されている。
00000000番地からDFFFFFFF番地までの最初の領域100aには、メモリユニット3−0および3−1にあるメモリバンク11−0および11−1によって構成される主記憶がマッピングされている。メモリバンク11−0および11−1はキャッシュブロックの大きさに相当する32バイトを単位にインタリーブされている。例えば、0番地から31番地まではメモリバンク11−0に、32番地から63番地まではメモリバンク11−1にマッピングされている。したがって、この領域のアドレスは、32バイト毎に、メモリユニット3−0と3−1に交互に割り当てられている。なお、この領域には、キャッシュにデータが保持されるキャッシング可能領域とそうでないキャッシング不可能領域があり、これらの領域の設定はいずれかのプロセッサユニットで実行されるプログラムにより行なわれる。
E0000000番地からEFFFFFFF番地までの第2の領域100bには、プロセッサユニット2−0ないし2−3、メモリユニット3−0ないし3−1、入出力ユニット4−0ないし4−1内に設けられたメモリマップドレジスタがマッピングされている。この領域はキャッシング不可能領域である。この領域内のアドレスのレジスタへのマッピングは、メモリバンクのようなインタリーブではない。すなわち、この第2の領域100bを、それぞれ連続するアドレスを有する複数の部分領域に分け、それぞれの部分領域を同一のユニット内のメモリマップドレジスタに割り当てる。但し、同一のユニット内の複数のレジスタが、この領域内の複数の連続する領域に分散してマッピングされてもよい。なお、複数プロセッサへの割込み通知等のため、この領域内の同一のアドレスを異なるユニットに属する複数のメモリマップドレジスタに割り当てても構わない。
各ユニットが占める部分領域の指定は、それ自体公知のいろいろの方法を使用できる。たとえば、各ユニットが使用する部分領域は、そのユニットに設けられたDIPスイッチやジャンパ線にて指定し、あるいは、各ユニットが実装されるプリント板がバックプレーンから受ける固定信号にて指定する。あるいは、各ユニットが使用する部分領域の上限アドレスと下限アドレスとを示すレジスタを各ユニットに用意し、これにサービスプロセッサがこれらのアドレスをスキャンインによって設定することもできる。
アドレス空間のうち、F0000000番地からFFFFFFFF番地までの第3の領域100cは、入出力ユニット4−0ないし4−1内の入出力アダプタ13−0ないし13−1に接続されたディスク装置10−0−1ないし10−1−2や回線接続装置(図示せず)等の入出力装置内に設けられた複数のレジスタに割り当てられる。この領域もキャッシング不可能領域である。これらのレジスタへのアドレス設定についても、上述のような従来から用いられている方法を使用できる。しかし、これらの入出力装置内に設けられたメモリマップドレジスタへのアドレスの割り当ては、接続する入出力装置の種類や数に依存し、ユーザによるシステムの使用開始時にあるいは使用開始後にそれらの入出力装置の種類や数あるいはそれらが接続される入出力ユニットが変更されるという構成変更があり得る。この場合、構成変更毎に、各メモリマップドレジスタに割り当てられるアドレスを変更する必要がある。
あるプロセッサユニット、たとえば、2−0において、その中のプロセッサ、たとえば、9−0−1内にて、主記憶あるいはメモリマップドレジスタへのアクセス要求が発生した場合、このマルチプロセッサシステムの動作は、そのアクセス要求が下記のデータのいずれへのアクセスを要するか否かにより変わる。
(1)主記憶内のキャッシング可能なデータ、
(2)入出力装置内のメモリマップドレジスタに保持されたデータ
(3)プロセッサユニット、メモリユニット、入出力ユニット内のメモリマップドレジスタに保持されたデータ
(4)主記憶内のキャッシング不可能なデータ
以下、これらの場合に分けて、装置の動作を説明する。
(装置動作1)−キャッシング可能なデータに対するアクセス
(プロセッサユニットの動作1)−CReadトランザクションの送出
プロセッサ9−0−1内には、プロセッサキャッシュ(図示せず)が含まれ、このアクセス要求が指定するデータに対して、プロセッサ9−0−1内でこのキャッシュに対してまずヒットチェックがなされ、このキャッシュがヒットすれば、ヒットしたデータがそのプロセッサでアクセスされる。このキャッシュがヒットしなかった時には、プロセッサ9−0−1は、そのアクセス要求が読み出し要求か書き込み要求かによらないで、キャッシュ制御5−0に読み出し要求を送る。この読み出し要求は、アクセスすべきデータのアドレスと、そのアドレスがキャッシング可能なデータに対するものであるかを示す信号を含む。このキャッシュ制御5−0は、キャッシュ6−0に対してヒットチェックを行う。このキャッシュがヒットした場合には、キャッシュ制御5−0は、ヒットしたブロックをプロセッサ9−0−1に送る。プロセッサユニットの以上の動作はそれ自体公知である。ヒットしなかった場合には、キャッシュ制御5−0は、以下のようにして、他のプロセッサユニット2−1から2−4と、いずれかのメモリユニット3−0または3−1にCRead(キャッシュリード)トランザクションを生成して、送信部7−0に送る。
図2(a)は、上述のCReadトランザクションのごとくReadタイプのトランザクションのフォーマットを示す。このトランザクションは8バイトの線の上を1サイクルで転送される。このトランザクションの第1バイトにはTYPEフィールドがあり、このトランザクションがCReadあるいは他のReadであることを示す値が格納される。第2バイトは空きであるが、後にポート番号が組み込まれるフィールドである。第3ないし第4バイトには、MISCフィールドがあり、クロスバスイッチ1では用いないが、このトランザクションを受理したユニットが使用する制御情報が格納される。第5ないし第8バイトにはADDRESSフィールドがあり、このトランザクションでアクセスするアドレスが格納されている。
図6は、送信部7−i(i=0、1、、、)の内部の構成を示す。この回路は送信先決定回路70−iとトランザクション組立回路72−iとを有する。トランザクション組立回路72−iは、クロスバスイッチ1に供給すべき完成されたトランザクションを生成する回路である。すなわち、24は自ポート番号発生回路であり、クロスバスイッチ1の複数の入力ポートの内、その送信部が接続されている入力ポートの番号を生成する回路である。この回路は、DIPスイッチやジャンパ線にて自ポートの番号を発生するような回路であってもよいし、サービスプロセッサ(SVP)(図示せず)等によりシステム立ち上げ時にスキャンインされるレジスタのような回路であってもよい。マージ回路25は、線d−iを介してキャッシュ制御5−0から供給されるトランザクション内の第2バイトフィールドに回路24により供給される自ポート番号を埋め込むことにより、完成されたトランザクションを生成し、線bーiを介してクロスバスイッチ1に供給する。
送信先決定回路70−iは、この完成されたトランザクションを送出すべき一つまたは複数の送出先を決定する回路である。この決定は、トランザクションの種類とそこに含まれるアドレスの値に基づいて行われる。今仮定しているキャッシュリードトランザクションCReadの場合には、送信先決定回路70−iは、全プロセッサユニットと、そのトランザクションに含まれるアドレスが割り当てられているいずれか一つのメモリユニットを複数の送出先として決定する。
図5は、図2あるいは図3で示したトランザクションのADDRESSフィールドの詳細を示す図である。32ビットのアドレスフィールドのうち、ビット0ないし3の値を調べることによって、当該アドレスが図4に示した「主記憶」、「クロスバスイッチに直結するユニットのメモリマップドレジスタ」、あるいは、「入出力ユニットを経由してクロスバスイッチに接続される入出力装置のメモリマップドレジスタ」のいずれかであるかを判定することが可能である。また、ビット26が0であるか1であるかに応じて、「主記憶」へのアクセスがメモリユニット3−0へのアクセスであるか、メモリユニット3−1へのアクセスであるかを判定できる。
図6において、22は、このことを用いて、トランザクションが指定するアドレスが、図4に示すアドレス空間の領域100aから100cのいずれの領域に属するかを判定するためのデコーダであり、線d−iから入力されたトランザクションのADDRESSフィールドのうちビット0ないしビット3の内容をデコードする。同様に、23はアドレスが領域100aに属する場合において、そのアドレスがいずれのメモリユニットに属するかを判別するためのデコーダであり、線d−iから入力されたトランザクションのADDRESSフィールドのうちビット26の内容をデコードする。21はトランザクションの種別を判別するためのデコーダであり、線d−iから入力されたトランザクションのTYPEフィールドをデコードする。
37−0ないし37−5はパターン発生回路であり、それぞれに対する入力が値1を有すると、それぞれ11111000、11110100、00001000、00000100、11111111、00000011なる8ビットのビットパターンを出力する。ここで、このビットパターンは、クロスバスイッチ1の出力ポート0から7に対応する8ビットからなり、各ビットの値が1の時には、そのビットに対応する出力ポートにトランザクションを転送すべきことを指示する。パターン発生回路37−0の出力パターンのごとく、複数のビットの値が1で他の複数のビットが0であるパターンは、それらの値1のビットに対応する複数の出力ポートにトランザクションを並列に転送すること、すなわち、そのトランザクションを部分放送することを指示する。パターン発生回路37−4の出力パターンのごとく、全ビットの値が1であるパターンは、全ての出力ポートにトランザクションを並列に転送すること、すなわち、そのトランザクションを放送することを指示する。AND回路28ないし、33、OR回路34ないし36は、デコーダ21から23の出力の値の組み合わせに応じて、パターン発生回路37−0から37−5を選択的に起動する。26はこれらのパターン発生回路37−0〜37ー7から供給される複数のビットパターンをマージする回路で、それらのビットパターンの対応するビットのORからなる値を有する新たな8ビットのビットパターンを生成し、転送要求信号REQ[0−7]として線a−iを介してクロスバスイッチ1に供給する。同時に、線b−i上のトランザクションと線a−i上の転送要求信号REQ[0−7]の取り込みを指示するタイミング信号であるコマンドを線x−iを介してクロスバスイッチ1に供給する。この転送要求信号REQ[0−7]も8個の出力ポートにそれぞれ対応する8ビットからなり、値1のビットに対応する出力ポートに対してトランザクションを転送すべきことをクロスバスイッチに要求する。なお、デコーダ27は、デコーダ21でデコードされたトランザクションが、後述するように、他のユニットから転送されたトランザクションに対する応答であるReturnトランザクションであるときに使用される。その詳細は後に説明する。図7は、送信先決定回路70−iに対するいろいろの入力信号の値と、この回路により発生される転送要求信号REQ[0−7]の各ビットの値との関係を説明する図である。図中、*はdon’t careを表す。
今仮定しているキャッシュリードトランザクションCReadの場合には、デコーダ21のCRead出力が1となり、デコーダ22の0〜D出力が1となる。デコーダ23の0出力あるいは1出力の一方が1となる。この結果、AND回路28と29のいずれか一方の出力が1となり、パターン発生回路37ー0と37ー1の一方がとが起動される。たとえば、パターン発生回路37ー0が起動された場合、全てのプロセッサユニットと、メモリユニット3−0が送出先として決定される。なお、本実施の形態では、キャッシング可能なデータは主記憶領域内のみに存在するので、デコーダ21によりTYPEがCReadであることをデコードすれば、デコーダ22によるアドレスビット0ないしビット3の値をデコードする必要は必ずしもない。しかし、プログラムエラーが起こることを考えて、CReadトランザクションの場合もデコーダ22によるデコード結果も、送出先の決定に使用している。
(クロスバスイッチの動作)
クロスバスイッチ1は、いろいろのユニットから送出されたトランザクションを、それらのトランザクションに対応してそれらのユニットから供給される転送要求信号が指定する一つまたは複数の送出先に転送する。本実施の形態のクロスバスイッチは、任意の数の任意の送出先の組合わせに対しても同じトランザクションを並列に転送できるように構成されている。さらに、複数の送出先への送付は、互いに独立に実行されるようになっている。すなわち、いずれかの送出先への送出が出来ないときでも、他の送出先が送出可能であるならば、それらの送出可能な送出先にトランザクションを送出するようになっている。
図9はクロスバスイッチ1の内部の構成を示す。簡単のため、図9にはクロスバスイッチ1の構成要素の一部のみを示してある。クロスバスイッチ1には図示のとおり、入力ポート51−0ないし51−7と、出力ポート52−0ないし52−7がある。図1では、同じ番号の入力ポートと出力ポートの組をポート0ないし7として示した。入力ポート51−0ないし51−7には、それぞれリクエスト制御53−0ないし53−7があり、それぞれ線a−0ないしa−7を経由して転送要求信号REQ[0−7]を入力する。リクエスト制御53−0ないし53−7はすべて同一の内部構成になっている。また、入力ポート51−0ないし51−7には、それぞれトランザクションレジスタ54−0ないし54−7があり、それぞれ線b−0ないしb−7から入力されるトランザクションを保持する。各入力ポートのリクエスト制御、たとえば53−0、とトランザクションレジスタ、たとえば、54ー0、には、線xー0を介してコマンド信号が入力され、REQレジスタ61とトランザクションレジスタ54ー0は、このコマンドに応答して、それぞれ転送要求信号REQ[0−7]とトランザクションを取り込むように構成されている。出力ポート52−0ないし52−7には、それぞれ調停回路55−0ないし55−7と、選択回路56−0ないし56−7がある。選択回路56−0ないし56−7の出力信号は、それぞれ線c−0ないしc−7に接続されている。
図10はリクエスト制御53−i(i=0〜7)の代表として、53−0の内部構成を示している。図中、61は8ビット幅のREQレジスタであり、ビット0ないし7が、それぞれ線a−0を経由して入力されるREQ[0]ないしREQ[7]信号を、線x−0を介して供給されるコマンドに応答して格納する。各ビットからは信号r00、r01、r02、r03、r04、r05、r06、r07が出力され、それぞれが調停回路55−0ないし55−7に接続されている。62ないし69はAND−OR回路である。60はAND回路である。また、調停回路55−0ないし55−7からは、それぞれ信号g00、g01、g02、g03、g04、g05、g06、g07が出力されており、AND−OR回路62ないし69に入力されている。リクエスト制御53−1ないし53−7の構成および調停回路との接続関係も同様である。
今仮定にしたがって、入力ボート0から線a−0と線b−0を経由してREQ[0−7]信号とトランザクョンが入力されると、これらはそれぞれREQレジスタ61とトランザクションレジスタ54−0に格納される。するとREQレジスタ61に格納されたREQ[0−7]の値は、それぞれ調停要求のための信号r00ないしr07として調停回路55−0ないし55−7に伝達される。また、トランザクションレジスタ54−0に格納されたトランザクションは線t0を経由して選択回路56−0ないし56−7に伝達される。調停回路55−0ないし55−7のうち、信号r00ないしr07として信号の値1を伝達された調停回路は、他の入力ポート51−1ないし51−7から入力される信号r11等との調停を行ない、入力ポート51−0からの調停要求が満たされると調停完了を表す信号g00、g01等を入力ポート51−0に送る。また、同一の出力ポートにある選択回路に指示をして線t0から入力されているトランザクョンを線c−0ないしc−7に出力させる。また、リクエスト制御53−0では、AND−OR回路62ないし69とAND回路60によって、調停要求のための信号として値1の信号を送ったすべての調停回路から調停完了を表す信号g00、g01等が送られてきたことを検出して信号res0を生成する。この信号はREQレジスタ61およびトランザクョンレジスタ54−0に伝達される。この信号を受けたREQレジスタ61およびトランザクョンレジスタ54−0は、レジスタの内容をクリアして、次のREQ[0−7]信号およびトランザクションを受信可能になる。このようにして、所望のユニットにトランザクョンの転送が完了する。今の仮定では、転送要求信号REQ[0−7]は、1111100(あるいは11110100)であるために、入力ポート0から入力されたCReadトランザクションは、出力ポート0から4(あるいは出力ポート0ー3と5)に並列に転送される。
以上の動作から分かるように、本実施の形態では、トランザクションCReadの場合のごとく、トランザクションを全てのユニットの放送するのではなく、一部のユニット(全てのプロセッサユニットと一つのメモリユニット)に部分放送するので、クロスバスイッチ1は、このトランザクションの部分放送と並行して、このトランザクションの送信元(今の仮定では、プロセッサユニット2−0)以外のユニットから他のトランザクションをこのトランザクションを放送されない他のユニットに転送することが出来る。とくにトランザクションCReadを部分放送する場合、ネットワークは、各入出力ユニット4−0あるいは4−1は、そこに接続された入出力装置内のアクセスを要求するトランザクションをトランザクションCReadの部分放送と並行して転送することが出来る。したがって、本実施の形態では、ネットワークの並列転送能力を生かすことが出来る。さらに、転送要求信号REQ[0−7]は出力ポート信号に対応したビットからなり、各ビットは、対応する出力ポートの調停回路に供給されるため、本実施の形態ではネットワークは、任意の数の任意の送出先の組み合わせに対して同じトランザクションを並列に送出するか否かを簡単に制御することができる。さらに、各出力ポート毎に、その出力ポートに対応する転送要求ビットに基づいて調停を行い、各出力ポートでの調停結果に依存し、しかし、他の出力ポートでの調停結果に依存しないで、各出力ポートへの同じトランザクションの転送を制御するために、いずれかの出力ポートで調停により上記トランザクションの調停が成功しない場合においても、調停が成功したが他の出力ポートにそのトランザクションを転送できる。したがって、全体として、同じトランザクションを複数の出力ポートに転送するのを高速化出来る。
(プロセッサユニットの動作2)−CReadトランザクションへの応答
クロスバスイッチ1によりトランザクションが、各プロセッサユニットに送出されると、各プロセッサユニットは、このトランザクションを受信し、このトランザクションを、その種別とそこに含まれているアドレスの値に応じて処理する。
図8は受信部8−i(i=0、1、、)の内部の構成を示す。図中、トランザクション分解回路42は、クロスバスイッチ1から線c−iを介して入力されたトランザクション内のPORTフィールドをPORTレジスタ41に格納する。また、線c−iから入力されたトランザクションのうち、PORT番号フィールド以外を線e−iを介してキャッシュ制御5−2に送出する。なお、後述するように、受信したトランザクションがReturnトランザクョンの場合、そのPORTフィールドは未使用であり、これに相当する部分に任意の値が格納されている可能性があるが、トランザクション分解回路42は、構わずこの値をPORT番号レジスタ41に格納する。また、なお、キャッシュ制御5−2は、各トランザクションをトランザクション組立回路42から受信する毎に、線f−iを介してPORTレジスタ41の内容をクリアするようになっている。
このトランザクションが今仮定しているCReadトランザクションの場合には、各プロセッサユニットでは、キャッシュ制御5−0が、キャッシュ一致制御のための動作を行うように構成されている。キャッシュ一致制御のためにはいろいろの方法を採用できるが、本実施の形態では、比較的簡単な方法として以下の方法を採る。すなわち、CReadトランザクションに含まれたアドレスのブロックに関するヒットチェックとヒットした場合には、そのブロックが主記憶から読み出された後に、更新されたか否か(すなわち、そのブロックがDirtyか否か)をそのプロセッサユニット、たとえば2−1内のキャッシュ6−0に関して行う。このためにキャッシュ内の各ブロックに関する状態情報としてそのブロックがDirtyか否かの情報を有している。各ヒットチェックの結果、ヒットが検出されなかったときには、線f−0を経由してリセット信号を受信部8−1内のPORTレジスタ41に送り、PORTレジスタ41をクリアする。その結果、受信部8−1は、次のトランザクョンを受信できるようになる。その後は何もしない。ヒットチェックの結果、もしヒットが検出されると、そのブロックがDirtyか否かをそのブロックに対応して記憶している状態情報(Dirty)に基づいて判定し、もしそのブロックが主記憶から読み出された後に更新されていない(Cleanである)ときには、ヒットしなかった場合と同様の処理をする。しかし、ヒットチェックの結果、ヒットし、かつ、そのヒットしたブロックがDirtyであるときには、そのブロックをCReadトランザクションの送信元プロセッサユニット、今の仮定では、2−0に転送するために、図2(c)に示すフォーマットのリターン(Return)トランザクションを生成し、送信部7−1に複数のサイクルの間にわたって送る。さらに、キャッシュ6−0内のヒットブロックを無効にする。
送信部7−1では、デコーダ27には、受信部8−1から線g−iを介して、受信したCReadトランザクション内のポートの番号が供給されている。今の仮定では、このポート番号は、CReadトランザクションの送信元のプロセッサユニットが接続されているクロスバスイッチ1内のポートの番号である。デコーダ21がこのトランザクションを解読すると、デコーダ27が、線g−iから値入力される、送出元のポート番号の値が0ないし7であるのに応じて、それぞれ10000000、01000000、00100000、00010000、00001000、00000100、00000010、00000001なるビットパターンをマージ回路26に出力する。今の例では、送信元のプロセッサユニットが2−0であり、それに割り当てられたクロスバスイッチのポート番号は0であるので、デコーダ27は10000000からなるビットパターンを生成する。このビットパターンは、生成されたReturnトランザクションをクロスバスイッチ1のポート番号0の出力すべきことを指示する。このトランザクションは、クロスバスイッチ1により、CReadトランザクションの送信元のプロセッサユニット2−0に転送される。そこでは、キャッシュ制御5−0がこのトランザクションに含まれたブロックをキャッシュ6−0内に書き込み、さらに、先に読み出し要求を発行したプロセッサ9−0−1または9−0−2に転送する。そのプロセッサは、そのプロセッサ内のキャッシュにそのブロックを書き込むとともに、そのプロセッサが指定したデータ部分をこのブロックから切り出し、そのプロセッサ内の処理回路に送る。
(メモリユニットの動作)
CReadトランザクションを受信したメモリユニット、たとえば3−0内のメモリバンク11−0は、いずれかのプロセッサユニットにおいて、先のキャッシュヒットが検出され、されに、ヒットしたブロックがDirtyであることが検出されたときには、受信したCReadトランザクションに応答しないように構成されている。そうでないときには、受信したCReadトランザクションに応答して、Returnトランザクションを生成するようになっている。そのトランザクションのプロセッサ2−0への返送はプロセッサ2−1へ返送する場合と同様にして行われる。このメモリユニットの動作も、キャッシュ一致制御の他の動作の一部と考えることが出来る。
以上のごとくにして、キャッシング可能なデータに対するアクセス要求を、全てのプロセッサユニットと関係するメモリユニットのみにクロスバスイッチにより部分放送することが出来る。さらに、そのデータを保持するキャッシュもしくはメモリユニットからそのデータを要求元のプロセッサユニットに送出し、さらに、複数のキャッシュ間の一致制御を実行できる、
(装置動作2)−入出力装置内のメモリマップドレジスタへのアクセス
これらのレジスタには、図4の領域100cが割り当てられている。本実施の形態では、この領域が割り当てられたいずれのメモリマップドレジスタに保持されたデータもキャッシング不可能と仮定している。したがって、これらのレジスタのいずれかに保持されたデータの読み出しにはCReadトランザクションと異なる、ノンキャッシュリード(NRead)トランザクションを用いる。キャッシュ制御、たとえば5−0、が生成するNReadトランザクションのフォーマットおよび送信部たとえば7−0で完成された後のNReadトランザクションのフォーマットは、CReadトランザクションと同じであり、これらはTypeフィールドの値のみが異なる。また、このようなメモリマップドレジスタへのデータの書き込みには、ノンキャッシュライト(NWrite)トランザクションを使用する。キャッシュ制御、たとえば5−0、が生成するNWriteトランザクションのフォーマットおよび送信部たとえば7−0で完成された後のNWriteトランザクションのフォーマットは、それぞれ図2(b)および図3(b)に示す通りであり、書き込むべきデータが含まれている。
さて、図4の領域100cが割り当てられているいずれのメモリマップドレジスタ内のデータもキャッシング不可能であるので、これらのメモリマップドレジスタのいずれかをアクセスするときには、そのレジスタが含まれる入出力装置10−0−1などに接続された入出力ユニット4−0または4−1にNRead(あるいはNWrite)トランザクションを送付すればよい。しかし、本実施の形態では、これらのレジスタのアクセスに当たっては、全ての入出力ユニット4−0および4−1にNRead(あるいはNWrite)トランザクションを送り、各ユニットに接続された入出力装置内で、そのトランザクションが指定するアドレスのレジスタがその入出力装置に含まれているか否かを判定するようになっている。その理由は以下の通りである。
すなわち、入出力ユニット4−0ないし4−1を介して接続する入出力装置は、本実施例に係るマルチプロセッサを出荷した後にも随時増設等の構成変更がありうる。ここで、送信部7−0ないし7−7に、実際にこのトランザクションを受理すべき入出力ユニットを特定するための回路を設けたとする。すると、入出力装置の構成変更のためこのアドレス領域へのメモリマップドレジスタのマッピングが変更されるたびにこの回路をDIPスイッチ等により調整するか、オペレーティングシステムの起動時にこの回路をソフトウェア的に毎回初期設定できるようにする必要がある。前者の方法はユーザ自身による入出力装置の構成変更が困難になるという問題点がある。後者の方法では、このような回路を初期設定するためのプログラムをオペレーティングシステムに追加しなければならないという問題点がある。このために、上述のように全ての入出力ユニットにトランザクションを転送することにより、上述の問題点がなくなる。なお、このアドレス領域100cに設けられるメモリマップドレジスタは、主に入出力装置10−0−1等の起動やステータス表示などに用いられ、通常のメモリアクセスに比べアクセス頻度が低いという性質がある。そのため、このトランザクションを受理する可能性があるユニット、すなわち、全ての入出力ユニット4−0ないし4−1に対してトランザクションを転送(部分放送)してもシステムの性能はそれほど低下しない。さらに、全ての入出力ユニット4−0ないし4−1に対してこれらのトランザクションを送出する方が、送出先を決める回路がより簡単になるという利点もある。しかも、他のプロセッサユニット等には送付しないので、クロスバスイッチの並列転送能力を低下させることが少ない。
さて、これらのトランザクションの送信先の決定は、以下のようにされる。図6の送信部7−i内の送信先決定回路70−iでは、デコーダ21がNReadあるいはNwriteトランザクションを解読し、デコーダ22が、このトランザクション内のアドレスが領域100cに属することを検出したときに、OR回路36とAND回路33がパターン生成回路37−5を起動する。この回路37−5は、全ての入出力装置をトランザクションの送信先として指定するパターンを生成する。この結果、このトランザクションは、入出力ユニット4−0、4−1に送られる。
入出力ユニット4−0およびディスク装置10−0−1の動作を説明する。入出力ユニット4−0では、受信部8−6は、クロスバスイッチ1から線c−6を経由して送付されたNReadあるいはNwriteトランザクョンを受信すると、入出力アダプタ13−0にこのトランザクションのPORT番号以外を線eー6を介して送付する。
図16は入出力アダプタ13−0とディスク装置10−0−1の構成を示す。入出力アダプタ13−0では、線e−6から入力されたトランザクションのPORTフィールド以外の部分を入力レジスタ201に格納する。格納された値のうち、トランザクションのTYPE、MISCおよびADDRESSフィールドをデコーダ203に入力し、デコーダ203は、このトランザクションの種類とアクセス先を判定する。
入力されたトランザクションがバスhに接続するディスク装置10−0−1等の入出力装置にあるメモリマップドレジスタのアドレスを含むNReadとNWriteである場合、または、これらの入出力装置がトランザクション組立回路263にて生成し、選択回路257、バスhおよび選択回路207を経由してメモリユニット3−0または3−1に送付していたNReadへのReturnトランザクションである場合には、デコーダ203は線L04を介して出力レジスタに信号を送り、入力レジスタ201に保持された値を出力レジスタ202に転送させ、これをバスhに出力させる。
251は入力レジスタ、253はデコーダである。254および255はディスク装置10−0−1に設けられたメモリマップドレジスタのRegCおよびRegDである。RegC254は、ここに設定された値によってディスク装置10−0−1の動作が制御されるようなレジスタであり、図には1個のみ示されているが複数あっても構わない。なお、ここに設定された値によってディスク装置10−0−1の動作が制御されるための信号線としてL18を例示してある。RegD255は、ディスク装置10−0−1の内部状態を保持するレジスタであり、図には1個のみ示されているが複数あっても構わない。内部状態をこのレジスタに入力するための信号線としてはL17を例示してある。また、256はReturnトランザクション組立回路、257は選択回路である。
261はディスク制御回路、262はディスクドライブ、263はトランザクション組立回路である。ディスク制御回路261は、ディスクドライブの制御回路およびDMA(Direct Memory Access)制御回路を含み、ディスク制御回路261に入力された値をディスクドライブ262に書き込んだり、ディスクドライブ262から読み出した値をトランザクション組立回路263によってトランザクションにして出力する回路であり、公知技術にて構成される。
出力レジスタ202に保持された値がバスhに出力されるとディスク装置10−0−1は、これを入力レジスタ251に格納する。格納された値のうち、トランザクションのTYPE、MISCおよびADDRESSフィールドをデコーダ253に入力し、デコーダ253はこのトランザクションの種類とアクセス先を判定する。
入力されたトランザクションが、RegD(255)のアドレスを指定したNReadであった場合には、デコーダ253が線L12を介してRegD(255)に読みだし信号を送出する。するとRegD(255)は線L16を介して保持している値をReturnトランザクション組立回路256に出力する。一方、デコーダ253は線L13を介してReturnトランザクション組立回路256および選択回路257に信号を送り、RegD(255)から読み出された値をReturnトランザクションに組立て、バスhに出力させる。このトランザクションはさらに選択回路207を経由して線d−6に出力される。
入力されたトランザクションが、RegC(254)のアドレスを指定したNWriteであった場合には、デコーダ253が線L11を介してRegC(254)に書き込み信号を送出する。するとRegC(254)は入力レジスタ251に保持されている書き込みデータを取り込んで保持する。
入力されたトランザクションが、ディスク制御回路261がトランザクション組立回路263にて生成し、選択回路257、バスhおよび選択回路207を経由してメモリユニット3−0または3−1に送付していたNReadへのReturnトランザクションである場合には、デコーダ253は線L14を介して出力レジスタに信号を送り、入力レジスタ251に保持された値をディスク制御回路261に読み込ませる。
(装置動作3)−その他のメモリマップドレジスタへのアクセス
これらのレジスタは、本実施の形態ではプロセッサユニット2−0、2−1メモリユニット3−0、3−1、入出力ユニット4−0、4−1に含まれている。
これらのレジスタには、図4の領域100bが割り当てられている。本実施の形態では、この領域が割り当てられたいずれのメモリマップドレジスタに保持されたデータもキャッシング不可能と仮定している。したがって、これらのレジスタのいずれかに保持されたデータのアクセスにはNReadトランザクションあるいはNWriteトランザクションを使用する。図4の領域100bが割り当てられているいずれのメモリマップドレジスタ内のデータもキャッシング不可能であるので、これらのメモリマップドレジスタのいずれかをアクセスするときには、そのレジスタが現に含まれているユニットにNRead(あるいはNWrite)トランザクションを送付すればよい。しかし、本実施の形態では、これらのレジスタのアクセスに当たっては、プロセッサユニット2−0、2−1、メモリユニット3−0、3−1、入出力ユニット4−0、4−1の全てにNRead(あるいはNWrite)トランザクションを送るようになっている。その理由は以下の通りである。
このアドレス領域100bに設けられるメモリマップッドレジスタはこのマルチプロセッサの電源投入直後に行なわれる初期化や、システム内部での障害発生状況のログを保持するようなレジスタが大半であり、システムの通常動作時にはほとんどアクセスされないという性質がある。そのため、実際にこのトランザクションを受理すべきユニットを特定せず、受理する可能性があるユニット、すなわち全てのユニットにこのトランザクションを転送してもシステム性能の低下を招く危険性はない。このことを利用して、トランザクションを送付すべき特定のユニットを決定する回路を使用しないことにし、ハードウェア量を低減した。とくに、この領域100b内の同じアドレスは、異なるユニットに属する複数のレジスタに割り当てることが出来る。その場合には、この送付先決定回路は、それだけ複雑になる。したがって、本実施の形態によれば、このような場合にハードウエアの軽減量が大きくなる。
さて、これらのトランザクションの送信先の決定は、以下のようにされる。図6の送信部7−i内の送信先決定回路70−iでは、デコーダ21がNReadあるいはNwriteトランザクションを解読し、デコーダ22が、このトランザクション内のアドレスが領域100bに属することを検出したときに、OR回路36とAND回路32がパターン生成回路37−4を起動する。この回路37−4は、プロセッサユニット2−0、2−1メモリユニット3−0、3−1、入出力ユニット4−0、4−1の全てをトランザクションの送信先として指定するパターンを生成する。この結果、このトランザクションは、これらの全てのユニットにクロスバスイッチ1により放送される。
このトランザクションの放送を受けたときの各ユニットの動作の説明を、入出力ユニット4−0を例にして図16を参照して説明する。
204および205は入出力アダプタ13−0に設けられたメモリマップドレジスタRegAおよびRegBである。RegA(204)は、ここに設定された値によって入出力アダプタ13−0の動作が制御されるようなレジスタであり、図には1個のみ示されているが複数あっても構わない。なお、ここに設定された値によって入出力アダプタ13−0の動作が制御されるための信号線や回路は簡単のため図示していない。RegB(205)は、入出力アダプタ13−0の内部状態を検出するためのステータス検出回路208の出力を保持するレジスタであり、図には1個のみ示されているが複数あっても構わない。また、206はReturnトランザクション組立回路、207は選択回路、209はReturn判定回路、210はOR回路である。
入出力アダプタ13−0では、線e−6から入力されたトランザクションのPORTフィールド以外の部分を入力レジスタ201に格納する。格納された値のうち、トランザクションのTYPE、MISCおよびADDRESSフィールドをデコーダ203に入力し、デコーダ203は、このトランザクションの種類とアクセス先を判定する。
入力されたトランザクションが、RegB(205)のアドレスを指定したNReadであった場合には、デコーダ203が線L02を介してRegB(205)に読みだし信号を送出する。するとRegB(205)は線L06を介して保持している値をReturnトランザクション組立回路206に出力する。一方、デコーダ203は線L03を介してReturnトランザクション組立回路206および選択回路207に信号を送り、RegB(205)から読み出された値をReturnトランザクションに組立て、線d−6に出力させる。
入力されたトランザクションが、RegA(204)のアドレスを指定したNWriteであった場合には、デコーダ203が線L01を介してRegA(204)に書き込み信号を送出する。するとRegA(204)は入力レジスタ201に保持されている書き込みデータを取り込んで保持する。
以上の動作において、入力したトランザクョンがNReadでないため、これに起因するReturnトランザクションを発生する必要がないとデコーダ203が判定した場合には、線L05、OR回路210および線f−0を経由してリセット信号を送信部7−6内のPORTレジスタ41に送り、PORTレジスタ41をクリアする。その結果、受信部8−6は次のトランザクョンを受信できるようになる。Returnトランザクョンを発生する必要がある場合には、Returnトランザクョンを送信部7−6に線d−6を介してReturnトランザクションが送出するのをReturn判定回路209にて判定し、OR回路210および線f−6を経由して、送信部7−6内のPORTレジスタ41をクリアする。このように制御することで、Returnトランザクションを発生するときには、送信部7−6内のPORTレジスタ41にはReturnトランザクョンの正当な送信先が格納されていることが保証される。
他のユニットに含まれるキャッシュ制御5−0等およびメモリバンク3−0ないし3−1等に含まれるおけるメモリマップドレジスタおよびそれに関する回路と動作は上記の動作と同様でありそれらの動作の説明は省略する
(装置動作4)−主記憶内のキャッシング不可能なデータへのアクセス
本実施の形態では、このデータへのアクセスにもNReadあるいはんWriteトランザクションを用いる。主記憶内のキャッシング不可能なデータは、いずれか一つのメモリユニットのみに保持されているので、各プロセッサユニットの送信部7−iは、このトランザクション内のアドレスにより一つの送信先のポート番号を決める。具体的には、図6のデコーダ21、22、23とOR回路35、AND回路30、31がパターン発生回路37−2、37−3の一つを起動するようになっている。たとえば、パターン発生回路37−2が起動されたときには、メモリユニット3−0がNReadトランザクションの送出先になる。このメモリユニットは、このトランザクションを受信すると、このトランザクションが要求するデータを含むReturnトランザクションを要求元プロセッサユニットに返送する。また、主記憶内へのキャッシング不可能なデータの書き込みには、NWriteトランザクションを使用する。
(装置動作5)ーその他のトランザクション
(4) いずれかのプロセッサユニット内のキャッシュからブロックを主記憶に書き戻す必要が生じたときに、ライトバック(WriteBack)トランザクションが使用される。このトランザクションのフォーマットは、NWriteトランザクションと同様であり、このトランザクションの実行時の装置動作は、上記装置動作(3)で記載した、キャッシング不可能な主記憶データの書き込みの場合と同じである。
<実施の形態1の変形例>
(1)実施の形態1では、プロセッサユニット、メモリユニットおよび入出力ユニットの数を、それぞれ4、2、2としているが、本発明が他の構成であっても実施可能であることは以上の説明から明らかである。
(2)実施の形態1では、キャッシュ制御5−0ないし5−3の制御方式としてストアインキャッシュを前提に説明したが、本発明を他の方式のキャッシュに適用することも容易である。また、トランザクション種は前述の5種類であると仮定したが、より多くのトランザクション種がある場合であっても本発明を拡張して適用することは容易である。
(3)実施の形態1では、送信部7−0ないし7−7の構成は全て同一であるとした。しかし、メモリユニット3−0および3−1がCRead、NRead、NWriteおよびWriteBackのトランザクョンを発生することはないので、送信部7−4ないし7−5から上記4種のトランザクョンに対応して動作する部分を削除しても構わないことは明らかである。同様に、入出力ユニット4−0および4−1がCReadおよびWriteBackトランザクョンを発生することはないので、送信部7−6ないし7−7から上記2種のトランザクョンに対応して動作する部分を削除しても構わないことも明らかである。
(4)実施の形態1では、プロセッサユニット2−0ないし2−3は、それぞれ1枚のプリント板に実装されていても構わないし、それぞれ1つのLSIに実装されていても構わない。特に、プロセッサユニットが1つのLSIに実装されているならば、プロセッサユニットLSIをクロスバスイッチ1に直接接続することが可能なため、コンパクトなマルチプロセッサを提供することができる。さらに、線b−iと線c−iを従来技術にある双方向信号線を用いて時分割にインプリメントすることも容易であり、このようにすれば、プロセッサユニットからは線a−iと、線b−iおよびc−iを時分割で実現する線によってクロスバスイッチと接続できるようになるため、ピン数が少なく安価なLSIでプロセッサユニットを構成することができる。なお、上述のREQ[0−7]信号のパターンに8ビット信号の全ての組み合せがあらわれない性質を利用して、REQ[0−7]信号を適当にエンコードすることで信号線a−iの本数を削減することも可能である。
<発明の実施の形態2>
第2の実施の形態の目的は、第1の実施の形態のマルチプロセッサをベースにし、これを安価に実現するためにクロスバスイッチをビットスライスされた複数の、同じ構造の大規模集積回路(LSI)にて構成するものである。以下では、実施の形態2が実施の形態1と異なる点を中心に説明する。
第2の実施の形態に係るマルチプロセッサでは、図11に示すように、各ユニットの送信部にビットスライス回路71ー0、71−1、、が設けられ、クロスバスイッチ101が、図13に示すように、同一構造の複数のLSI85−88にて構成されている。
送信部107−i(i=0、1、、、)は、図12に示すように、送信先決定回路70−i、トランザクション組立回路72−iとビットスライス回路71−iとからなる。ビットスライス回路71−iは、選択回路80−0ないし80−3からなる。各選択回路80−0、、または80−3には、送信先決定回路70−iが出力するREQ[0−7]信号が線a−iより入力され、トランザクション組立回路72−iが線b−iに出力する8バイト幅のトランザクションがそれぞれ2バイトずつに分割されて入力される。図3に示したREADタイプのトランザクションを例にするならば、選択回路80−0にはTYPEとPORTフィールドからなる2バイトが、80−1にはMISCフィールドからなる2バイトが、80−2にはADDRESSフィールドの上位2バイトが、80−3にはADDRESSフィールドの下位2バイトが入力される。トランザクション組立回路72−iは実施の形態1で使用されたものと同じであるが、送信先決定回路70−iは、実施の形態1で使用されたコマンドと異なるコマンドx’−iを出力するように変形されている点で実施の形態1で使用されたものと異なる。
図14は、このビットスライス回路71−iの選択回路80−0ないし80−3により出力される4つの信号を示す。送信先決定回路70−iはまず第1の値を有するコマンドを線x’−iに送出し、選択回路80−0ないし80−3は、このコマンドに応答して、REQ[0−7]を選択し、線ab−i−0から b−i−3に出力する。なお、REQ[0−7]信号は8ビットであるのに対し、線ab−i−0から b−i−3はそれぞれ2バイト幅であるため、REQ[0−7]信号を接続しない部分には0を出力する。次に、送信先決定回路70−iは第2の値を有するコマンドを線x’−iに送出し、選択回路80−0ないし80−3は、このコマンドに応答して、トランザクションの内の2バイト部分を選択する。以下、この動作をトランザクションの全体が選択されるまで繰り返す。
線ab−i−0から b−i−3に出力されたREQ[0−7]信号とトランザクションは、クロスバスイッチ101に入力される。
図13はクロスバスイッチ101のLSI分割を示す。クロスバスイッチ101は、85ないし88の4個のLSIから構成される。各LSIの各入力ポートは、対応する一つのユニットに2バイトの信号線で接続され、各LSIの各出力ポートも同様である。図13のようにLSI分割を行なうと、LSI85ないし88にて構成される第1スライスないし第4スライスには、図14のような形式で線ab−i−0ないしab−i−3を経由してトランザクションが入力されることになる。
図15はLSI85の内部の構成を示す。このLSIには図示のとおり、クロスバスイッチ101のポート0ないし7に対応して、入力ポート151−0ないし151−7と、出力ポート152−0ないし152−7がある。入力ポート151−0ないし151−7の構成は、図9に示した第1の実施の形態におけるクロスバスイッチの入力ポート51−0ないし51−7とほぼ同様であるが、各トランザクションレジスタ、たとえば154−0の幅が2バイトになっている点、このレジスタおよび対応するリクエスト制御たとえば53−0への信号入力線が各ポート毎に設けられた共通の信号線、たとえば、ab−0−0からなっている点、および実施の形態1で使用したコマンド異なるコマンドが線x’−0、、またはx’−7より入力される点で実施の形態1と異なる。出力ポート152−0ないし152−7の構成は、図9に示した第1の実施の形態におけるクロスバスイッチの出力ポート52−0ないし52−7とほぼ同様であるが、選択回路156−0ないし156−7の幅が2バイトになっている点が異なる。
ここで、ポート0から線ab−0−0を経由してREQ[0−7]信号とスライスされた4つのトランザクョン部分の一つが時分割で入力されると、まずリクエスト制御53−0が、コマンドx’−0の第1の値に応答してREQ[0−7]信号を、リクエスト制御53−0内にあるREQレジスタ61にセットし、その後、トランザクションレジスタ154−0が、コマンドx’−0の第2の値に応答して、スライスされた一つのトランザクション部分を取り込む。その後の装置動作は、図9のクロスバスイッチと全く同様にして、スライスされたトランザクション部分が、REQレジスタに格納された値に従って、線c−0−0ないしc−7−0に出力される。他のLSIにも全く同じREQ[0−7]信号が入力されているので、全く同じ動作をして、それぞれがスライスされたトランザクションを出力する。その結果、所望のユニットに線c−0ないしc−7を経由して、トランザクョンの転送が完了する。なお、他の入力ポートにREQ[0−7]信号とトランザクションとが入力された場合の動作も、上記の説明と同様である。
以上のようにすれば、クロスバスイッチ101を構成するLSI相互間で転送の制御に関する信号をやりとりすることなくトランザクション転送を行なえる。また、REQ[0−7]信号を各LSIへのデータパスに時分割多重によって転送しているため、クロスバスイッチ101を構成するためのLSIのピンの大部分を、クロスバスイッチ101に接続する各ユニットとの接続に用いることができる。このことは、クロスバスイッチを最小の数のLSIで構成できることを意味する。
また、クロスバスイッチを構成するためのLSIの信号ピンが、例えば272ピンというふうにあらかじめ決められている中で、16入力16出力のクロスバLSIを構成する場合には、(272−16)÷(16+16)=8ビット、という計算に基づき8ビットスライスのクロスバLSIを設計すればよいことになる。もしもこのように計算されるLSIのスライス幅が、REQ信号の幅を下回ったならば、REQ信号を上述のような形式そのものでなく適当にエンコードすることで幅を狭めたり、REQ信号自身を複数サイクルを利用して転送するように設計すればよい。
本実施の形態には、以上のような設計上の自由度があるので、ピン数は少ないが安価なLSIを用いてクロスバスイッチ101を構成することができる。
<実施の形態2の変形例>
以上の説明では、クロスバスイッチを2バイト幅×4スライスに分割していたが、異なる分割をしても本発明が適用できることは明らかである。また、クロスバスイッチ101のポート数を8として説明したが、他のポート数にて本発明を実施可能なことも明らかである。