図1は、マルチプロセッサシステムの構成例を示すブロック図である。マルチプロセッサシステムは、複数の中央処理装置(CPU)101−1〜4と複数の主記憶装置(MMU)102−1〜4とを具備する。ここでは4CPU構成を例示して説明する。中央処理装置101−1〜4は、主記憶装置102−1〜4のいずれにもアクセスできるように、それぞれ主記憶装置102−1〜4に接続されている。中央処理装置101−mは、主記憶装置102−nをアクセスする場合、アクセス先の主記憶装置102−nに対してメモリアクセスリクエストを送出する。主記憶装置102−nは、中央処理装置101−mから送出されるメモリアクセスリクエストと他の中央処理装置101−m’から送出されるメモリアクセスリクエストとの競合状態を調停し、要求されるメモリアクセスを実行する。したがって、この競合調停によって待ち状態が発生すると、このシステムの性能低下に繋がる。
主記憶装置102−1〜4に内蔵される中央処理装置101−1〜4とのインタフェース部分(ここではクロスバ装置と称することにする)の構成が図2に示される。クロスバ装置は、メモリアクセスリクエストを保持する入力部1−1〜4、2−1〜4、3−1〜4と、メモリアクセスリクエストの競合を調停する競合調停部21と、競合調停部21の制御を受けて接続先を切り替えるクロスバ部30と、メモリ部(図示せず)にメモリアクセスリクエストを出力する出力部4−1〜4とを具備する。
クロスバ装置は、クロックに同期して動作している。クロスバ装置は、各中央処理装置101−m(m:1〜4)に接続されるポート1〜4からメモリアクセスリクエストを入力し、1段目の入力部1−1〜4に保持する。入力部1−1〜4に保持されるメモリアクセスリクエストは、次の時刻において、次段の入力部2−1〜4が空いていれば、次段の入力部2−1〜4に送出される。次段の入力部が次の時刻に空いていなければ、そのメモリアクセスリクエストはそのまま入力部1−nに留まる。同様に、入力部2−1〜4に保持されるメモリアクセスリクエストは、次段の入力部3−1〜4が空いていれば、次段の入力部3−1〜4に送出される。入力3−1〜4に保持されるメモリアクセスリクエストは、競合調停部21によりアクセスするメモリの競合状態により調停される。競合状態がある場合、メモリアクセスリクエストの優先順位に応じてメモリアクセスが許可される。したがって、優先順位の低いメモリアクセスリクエストは、待ち状態になる。クロスバ部30は、競合の無いメモリアクセスリクエストと優先順位の高いメモリアクセスリクエストとを指定されるメモリに接続される出力部4−1〜4に出力する。出力部4−1〜4は、メモリアクセスリクエストを主記憶を構成するメモリ部に送出する。
このメモリアクセスリクエスト競合処理の動作例が、図3を参照して説明される。図3は、クロスバ装置の動作を示すタイムチャートである。図3の縦方向は入力部1−1〜4、2−1〜4、3−1〜4、出力部4−1〜4を示し、横方向は状態T(時刻T)を示す。状態Tにおける各入力部、出力部に保持されるメモリアクセスリクエストが図中に示され、その括弧内にクロスバ部30の出力先が示される。
状態T=1において、入力部3−1〜4にはメモリアクセスリクエストA1(1)、B1(2)、C1(3)、D1(4)がそれぞれ保持され、入力部2−1、2−3、2−4にはA2(2)、C2(4)、D2(1)が保持され、入力部1−1にはA3(3)が保持されている。競合調停部21は、入力部3−1〜4に保持されているメモリアクセスリクエストの競合を調停し、クロスバ出力を制御する。入力部3−1〜4に保持されているメモリアクセスリクエストは、全て異なる出力部に出力されるため、状態T=2に遷移する。
状態T=2では、T=1の状態で競合がないため入力部3−1〜4に保持されているメモリアクセスリクエストはクロスバ部30を通過して出力部4−1〜4に移動する。入力3−1〜4は空き状態になるため、入力部2−1、2−3、2−4に保持されていたメモリアクセスリクエストは、それぞれ入力部3−1、3−3、3−4に移動する。入力部3−2は有効なメモリアクセスリクエストを保持していない。同様に、メモリアクセスリクエストA3(3)は、入力部2−1に保持される。この状態でも競合はない。
状態T=3において、入力部3−1、3−3、3−4に保持されていたメモリアクセスリクエストA2(2)、C2(4)、D2(1)は、クロスバ部30を通過してそれぞれ出力部4−2、4−4、4−1に保持される。入力部2−1に保持されていたメモリアクセスリクエストA3(3)は、入力部3−1に保持される。
状態T=4において、メモリアクセスリクエストA3(3)が出力部4−3に移動し、全てのメモリアクセスリクエストがクロスバ部30を通過したことになる。この場合、競合の無い例を示したが、処理が終わるまで4状態を遷移することがわかる。
次に、競合がある場合の例を、図4を参照して説明する。状態T=1において、入力部3−1〜4にはメモリアクセスリクエストE1(4)、F1(2)、G1(3)、H1(4)が保持されている。また、入力部2−1にメモリアクセスリクエストE2(1)、入力1−1にE3(3)が保持されている。競合調停部21は、入力3−1〜4に保持されているメモリアクセスリクエストの競合を調停し、クロスバ出力を制御する。この場合、メモリアクセスリクエストE1(4)とH1(4)が共に出力部4−4に出力要求しているため、競合調停部21は調停を行う。メモリアクセスリクエストH1(4)を先に出力部4−4に出力するものとして、メモリアクセスリクエストE1は入力部3−1で待機状態となる。メモリアクセスリクエストF1(2)とメモリアクセスリクエストG1(3)とは、競合しないため、クロスバ部30を通過して出力部4−2、4−3に移動するように制御される。
したがって、状態T2において、出力部4−2、4−3、4−3にメモリアクセスリクエストF1(2)、G1(3)、H1(4)が保持されることになる。入力部3−1にはメモリアクセスリクエストE1(4)が保持されたままになるため、入力2−1、1−1にはメモリアクセスリクエストE2(1)、E3(3)が待機状態となる。ポート1以外の入力部にはメモリアクセスリクエストが残っていないため、その後メモリアクセスリクエストE1(4)、E2(1)、E3(3)が順次クロスバ部30を通過して出力部に到達する。即ち、状態T=3においてメモリアクセスリクエストE1(4)が出力部4−4に、状態T=4においてメモリアクセスリクエストE2(1)が出力部4−1に、状態T=5においてメモリアクセスリクエストE3(3)が出力部4−3に保持され、メモリ部に出力される。したがって、この場合、競合が1度発生して処理終了まで5状態遷移することがわかる。
このようにCPUからのメモリアクセスリクエストは、順次クロスバ部30を通過していくことになる。しかし、メモリアクセスリクエストは入力ポートに固定されているため、他の入力ポートが未使用状態であっても、同じ入力ポートに先に入力されたメモリアクセスリクエストが処理されるまで待たされることになる。
即ち、従来のクロスバ装置において、メモリアクセスリクエストは、入力された入力ポート以外の入力部を使用することができない。つまり、CPUに接続する入力ポートに対応した入力部を介してクロスバを通過するため、他に未使用の入力ポートがあったとしても他の入力ポートの入力部から競合に参加できないという欠点がある。そのため、入力ポートに先行するメモリアクセスリクエストがあれば、その先行するメモリアクセスリクエストがクロスバ部30を通過しないと競合調停にすら参加できないという欠点もある。
このため、クロスバ部30の性能は、入力部の未使用の割合によって性能を活かしきれないことになる。例えば、図2に示される従来例の構成は、最大で同時に4つのメモリアクセスリクエストがクロスバ部30を通過できる構成となっているが、1つの入力部が未使用になっていると、同時に3つのメモリアクセスリクエストしか処理できない。即ち、このクロスバ装置としてみるとクロスバ部30の性能は最大で25%低下することになる。
特開2001−175634号公報によれば、クロスバネットワークによって接続されるデータ転送装置の技術が開示されている。このデータ転送装置は、複数のインタリーブ構成されたメモリと内蔵するクロスバネットワークによって接続される。データ転送装置は、このクロスバネットワークに残存するメモリへのリクエストの有無を示す信号を用いてメモリへのリクエストを発行または抑止し、メモリアクセス順序を保証する。
また、このデータ転送装置は、リクエストを発行する手段と、残存リクエストの有無を通知する手段と、同期命令を挿入する手段と、リクエストの発行を再開する手段とを設けたことを特徴としている。リクエストを発行する手段は、メモリに対するデータ転送命令に基づくリクエストを発行する。残存リクエストの有無を通知する手段は、一つのリクエストが後続のリクエストによって追い越される可能性がなくなる多段クロスバネットワークの部分までの多段クロスバスイッチにおける残存リクエストの有無を通知する。同期命令を挿入する手段は、このデータ転送装置からメモリアクセス順序の保証が必要なリクエストを発行する際に、各リクエスト間に同期命令を挿入する。リクエストの発行を再開する手段は、残存リクエストが有れば同期命令によって後続のリクエストの発行を抑止し、また、残存リクエストが無ければ同期命令を破棄することによって後続のリクエストの発行を再開する。
また、特開2002−328838号公報によれば、クロスバ装置に関する技術が開示されている。このクロスバ装置は、複数の入力ポートと、各入力ポート毎のデータ入力部と、複数の出力部と、各出力部毎のセレクタ部と、セレクト信号生成手段とを備えたことを特徴とする。このセレクト信号生成手段は、出力先が複数の出力部の内の特定の出力部に固定される入力ポートを示す情報および特定の出力部を示す情報に基づいて、出力先が特定の出力部に固定される入力ポートについては、対応するデータ入力部をバイパスさせるバイパス信号線を有効にする。そして、特定の出力部に対応するセレクタ部に、有効にしたバイパス信号線を選択させる。
また、このクロスバ装置は、複数の入力ポートと、各入力ポート毎のデータ入力部と、第1のセレクタ部と、第2のセレクタ部と、セレクト信号生成手段とを備えたことを特徴とする。第1のセレクタ部は、各データ入力部毎に設けられ、対応するデータ入力部をバイパスするバイパス信号線と、各データ入力部毎に設けられ、対応するデータ入力部或いは対応するバイパス信号線の内の何れか一方を選択する。第2のセレクタ部は、各第1のセレクタ部毎のタイミングレジスタと、各出力部毎に設けられ、複数のタイミングレジスタの内の1つを選択する。セレクト信号生成手段は、出力先が複数の出力部の内の特定の出力部に固定される入力ポートを示す情報および特定の出力部を示す情報に基づいて、複数の第1のセレクタ部の内の、出力先が特定の出力部に固定される入力ポートと対応する第1のセレクタ部にバイパス信号線を選択させる。また、セレクト信号生成手段は、他の第1のセレクタ部にデータ入力部を選択させる。さらに、セレクト信号生成手段は、複数の第2のセレクタ部の内の、特定の出力部に対応する第2のセレクタ部に、バイパス信号線を選択させた第1のセレクタ部に対応するタイミングレジスタを選択させる。また、セレクト信号生成手段は、他の第2のセレクタ部に、ルーティングアドレスと予め定められている優先順位とに基づいて決まるタイミングレジスタを選択させる。
また、特開平11−66024号公報によれば、クロスバスイッチ切換システムに関する技術が開示されている。このクロスバスイッチ切換システムは、複数の情報処理装置間のデータ転送路を切換えるクロスバスイッチ切換システムである。クロスバスイッチ切換システムは、前段及び後段のクロスバスイッチからなる。後段のクロスバスイッチは、自己のクロスバスイッチの出力ポートが使用中であるか否かを示す使用状態情報を前段のクロスバスイッチへ通知する通知手段を有する。前段のクロスバスイッチは、後段のクロスバスイッチからの使用状態情報に基づき後段のクロスバスイッチとの接続を切換える切換制御手段を有する。切換制御手段は、使用状態情報により後段のクロスバスイッチの出力ポートが使用中であることを認識すると、出力ポートが空きの後段のクロスバスイッチに接続を切換える。
特開平11−212866号公報によれば、多段クロスバに関する技術が開示されている。多段クロスバは、複数の入力部と、複数の出力部と、複数の入力部を介して供給される各信号をセレクト信号に従って複数の出力部に供給するセレクタ部とを有するクロスバを複数組み合わせて構成される。この多段クロスバは、構成情報を保持する構成情報保持手段と、バイパス手段とを具備することを特徴とする。このバイパス手段は、構成情報保持手段に保持されている構成情報により複数のクロスバにおける一部のクロスバにおいて入力部、出力部およびセレクタ部のいずれかをバイパスさせる。
特開2001−175634号公報
特開2002−328838号公報
特開平11−66024号公報
特開平11−212866号公報
図を参照して第1の実施の形態を説明する。図1に、中央処理装置−主記憶装置間がクロスバで接続されたマルチプロセッサシステムの構成が示される。複数の中央処理装置(CPU)101−1〜4と複数の主記憶装置(MMU)102−1〜4が相互に接続される。ここでは、4×4の構成が示される。中央処理装置101−m(m:1〜4)は、アクセス先にメモリアクセスリクエストを送出して主記憶装置102−n(n:1〜4)をアクセスする。主記憶装置102−nは、中央処理装置101−mから送出されるメモリアクセスリクエストと他の中央処理装置101−m’から送出されるメモリアクセスリクエストとの競合状態を調停し、要求されるメモリアクセスを実行する。
主記憶装置102−1〜4に内蔵される中央処理装置101−1〜4とのインタフェース部分(以降クロスバ装置と称する)の構成が図5に示される。クロスバ装置は、ポート1の入力部1−1、2−1、3−1と、ポート2の入力部1−2、2−2、3−2と、ポート3の入力部1−3、2−3、3−3と、ポート4の入力部1−4、2−4、3−4と、クロスバ部30と、出力部4−1、4−2、4−3、4−4と、競合調停部21と、RA比較部20と、セレクタ10とを具備する。
ポート1〜4にCPU101−1〜4が接続され、メモリアクセスリクエストが送られてくる。ポート1から入力されるメモリアクセスリクエストは、入力部1−1から入力部2−1、入力部3−1を経てクロスバ部30に入力される。また、入力部1−1と入力部2−1の出力は、セレクタ10にも入力される。ポート2から入力されるメモリアクセスリクエストは、入力部1−2から入力部2−2を経てセレクタ10に入力される。セレクタ10の出力は、入力部3−2に接続される。入力部3−2の出力はクロスバ部30に入力される。ポート3入力されるメモリアクセスリクエストは、入力部1−3、2−3、3−3を経て、ポート4に入力されるメモリアクセスリクエストは、入力部1−4、2−4、3−4を経て、クロスバ部30に入力される。入力部1−1〜4、2−1〜4、3−1〜4には、メモリアクセスリクエストおよび出力先情報(RA)が保持される。出力先情報(RA)は、図6に示されるように、有効ビット(Vbit)31とルーティングアドレスビット(Rbit)32とを含む。有効ビット31は、メモリアクセスリクエストの有効/無効を示す。ルーティングアドレスビット32は、メモリアクセスリクエストのクロスバ部30からの出力先を示す。
クロスバ部30にメモリアクセスリクエストを出力する入力部3−1、3−2、3−3、3−4は、保持するメモリアクセスリクエストの出力先情報(RA)を競合調停部21に出力する。競合調停部21は、これらの出力先情報に基づいて競合状態を調停し、クロスバ部30を制御してメモリアクセスリクエストをその出力先の出力部4−1〜4に送る。競合調停部21は、競合調停結果221をRA比較部20に送る。競合調停結果221は、入力部3−1のメモリアクセスリクエストが待機となることを示すH1と、入力3−2のメモリアクセスリクエストが待機になることを示すH2とを含む。このとき、競合調停によりクロスバ部30を通過できなかったメモリアクセスリクエストは、入力部3−1〜4で待機状態となる。クロスバ部30の出力は、出力部4−1〜4に保持され、保持されたメモリアクセスリクエストは、メモリ部(図示せず)に出力される。
RA比較部20は、入力部3−1、3−2、2−1、2−2、1−1が保持する出力先情報(RA)203−1、203−2、202−1、202−2、201−1および競合調停結果221を取り込み、先行するメモリアクセスリクエストと後続のメモリアクセスリクエストの出力先を比較する。RA比較部20は、比較の結果、出力先が異なり、且つメモリアクセスリクエストが保持されない入力部がある場合に、後続のメモリアクセスリクエストを空いている入力部を経由してクロスバを通過させるようにセレクタ10を制御する。
セレクタ10は、RA比較部20から出力される選択信号220に基づいて、入力部3−2に保持すべきメモリアクセスリクエストと出力先情報とを入力部2−2、2−1、1−1の出力のいずれかから選択し、出力する。
図7にRA比較部20の構成の一例が示される。RA比較部20は、比較回路61〜65、論理積回路71〜75、論理和回路77、78、選択信号号生成部22を備える。
比較回路61は、入力部1−1の出力先情報201−1のルーティングアドレスビットR1と入力部2−1の出力先情報201−1のルーティングアドレスビットR2とを比較し、一致を示す比較結果を論理積回路71に出力する。論理積回路71は、出力先情報202−1の有効ビットV2に基づいて、入力部2−1のメモリアクセスリクエストが有効であるときのみその一致を示す比較結果を論理和回路77に出力する。
比較回路62は、入力部1−1の出力先情報201−1のルーティングアドレスビットR1と入力部3−1の出力先情報203−1のルーティングアドレスビットR3とを比較し、一致を示す比較結果を論理積回路72に出力する。論理積回路72は、出力先情報203−1の有効ビットV3に基づいて、入力部3−1のメモリアクセスリクエストが有効であるときのみその一致を示す比較結果を論理和回路77に出力する。
比較回路63は、入力部2−1の出力先情報202−1のルーティングアドレスビットR2と入力部3−1の出力先情報203−1のルーティングアドレスビットR3とを比較し、一致を示す比較結果を論理積回路73に出力する。論理積回路73は、出力先情報203−1の有効ビットV3に基づいて、入力部3−1のメモリアクセスリクエストが有効であるときのみその一致を示す比較結果を論理和回路78に出力する。
比較回路64は、入力部1−1の出力先情報201−1のルーティングアドレスビットR1と入力部3−2の出力先情報203−2のルーティングアドレスビットR5とを比較し、一致を示す比較結果を論理積回路74に出力する。論理積回路74は、出力先情報203−2の有効ビットV5に基づいて、入力部3−2のメモリアクセスリクエストが有効であるときのみその一致を示す比較結果を論理和回路78に出力する。
比較回路65は、入力部2−1の出力先情報202−1のルーティングアドレスビットR2と入力部3−2の出力先情報203−2のルーティングアドレスビットR5とを比較し、一致を示す比較結果を論理積回路75に出力する。論理積回路75は、出力先情報203−2の有効ビットV5に基づいて、入力部3−2のメモリアクセスリクエストが有効であるときのみその一致を示す比較結果を論理和回路78に出力する。
論理和回路77は、論理積回路71、72、74の出力の論理和をとり信号C1を生成する。論理和回路78は、論理積回路73、75の出力の論理和をとり信号C2を生成する。したがって、信号C1は、入力部1−1と入力部2−1のメモリアクセスリクエストが有効で出力先が同じ場合、入力部1−1と入力部3−1のメモリアクセスリクエストが有効で出力先が同じ場合、入力部1−1と入力部3−2のメモリアクセスリクエストが有効で出力先が同じ場合に出力が“1”となる。また、信号C2は、入力部2−1と入力部3−1のメモリアクセスリクエストが有効で出力先が同じ場合、入力部2−1と入力部3−2のメモリアクセスリクエストが有効で出力先が同じ場合に出力が“1”となる。即ち、一致信号C1は、入力部1−1に格納されるメモリアクセスリクエストの出力先が同じポート系列の入力部2−1、3−1もしくは他のポート系列の入力部3―2に格納されるメモリアクセスリクエストの出力先と同じかどうかを示す。また、一致信号C2は、入力部2−1の出力先が入力部3−1もしくは入力部3−2と同じかどうかを示す。
選択信号生成部22は、競合調停部21が出力する競合調停結果221に含まれる入力部3−1、3−2の待機状態を示すH1、H2と、有効ビットV1、V2、V4と一致信号C1、C2とに基づいて、選択信号220を生成する。
図7の場合、選択信号生成部22は、入力部2−2が空き状態で(V4=0)、入力3−1、3−2が待機状態になく(H1=H2=0)、入力部1−1、2−1にメモリアクセスリクエストが保持され(V1=V2=1)、入力部1−1に格納されるメモリアクセスリクエストの出力先が他と一致しない(C1=0)場合、セレクタ10に入力部1−1の出力を選択する選択信号220(SEL=11)を生成する。即ち、ポート1にメモリアクセスリクエストが続き、ポート2が空いている場合には、メモリアクセスリクエストの順番が逆転しない範囲で、ポート2を使用してメモリアクセスリクエストを処理することが可能となる。
また、選択信号生成部22は、入力部2−2が空き状態で(V4=0)、入力部3−1が待機状態(H1=1)、入力部3−2が待機状態になく(H2=0)、入力部2−1にメモリアクセスリクエストが保持され、入力部2−1に格納されるメモリアクセスリクエストの出力先が先行するメモリアクセスリクエストと一致しない(C2=0)場合、セレクタ10の入力部2−1の出力を選択する選択信号220(SEL=10)を生成する。即ち、入力部3−1のメモリアクセスリクエストが待機状態であってポート2が空いている場合には、メモリアクセスリクエストの順番が逆転しない範囲で、ポート2を使用してメモリアクセスリクエストを処理することが可能となる。
これらの条件に当てはまらない場合、選択信号生成部22は、入力部2−2の出力を選択する選択信号220(SEL=00)を生成する。このように、RA比較部20においてクロスバ装置の入力部で先行するメモリアクセスリクエストと後続のメモリアクセスリクエストの出力先を比較し、出力先が異なり、かつ、メモリアクセスリクエストを保持しない入力部がある場合に、後続のメモリアクセスリクエストをメモリアクセスリクエストのない入力部を経由してクロスバ部30を通過させるよう制御するする。そのため、クロスバ性能を向上させることが出来る。以上詳細に構成を述べたが、CPU/メモリ本体は、当業者にとってよく知られており、また本発明とは直接関係しないので、その構成、動作の詳細な説明は省略する。
次に図8に示されるタイムチャートを参照してメモリアクセスリクエスト競合処理動作を説明する。図8は、図5に示されるクロスバ装置の動作を示すタイムチャートである。図8の縦方向は入力部1−1〜4、2−1〜4、3−1〜4、出力部4−1〜4を示し、横方向は状態T(時刻T)を示す。状態Tにおける各入力部出力部に保持されるメモリアクセスリクエストが図中に示され、その括弧内にクロスバ部30の出力先が示される。例えば、“A1(3)”は、出力先が出力部4−3であるメモリアクセスリクエストA1を示し、“B1(2)”は、出力先が出力部4−2であるメモリアクセスリクエストB1を示すこととする。
状態T=1において、入力部3−1〜4にはメモリアクセスリクエストA1(1)、B1(2)、C1(3)、D1(4)がそれぞれ保持され、入力部2−1、2−3、2−4にはA2(2)、C2(4)、D2(1)が保持され、入力部1−1にはA3(3)が保持されている。この状態は、図3(T=1)に示される状態と同じである。競合調停部21は、入力部3−1〜4に保持されているメモリアクセスリクエストの競合を調停し、クロスバ出力を制御する。入力部3−1〜4に保持されているメモリアクセスリクエストは、全て異なる出力部に出力されるため、競合調停部21は、調停による待機制御を行わない。
RA比較部20は、入力部1−1、2−1、3−1、2−2、3−2に保持されるメモリアクセスリクエストの出力先情報の有効ビット31とルーティングアドレスビット32と、競合調停結果221とに基づいて選択信号220を生成する。このとき、入力部2−1、1−1にメモリアクセスリクエストが保持され(V1=V2=1)、入力部2−2は空き状態である(V4=0)。また、クロスバ部30に接続する入力部3−1〜4に格納されるメモリアクセスリクエストの出力先は全て異なるので、これらのメモリアクセスリクエストは全てクロスバ部30を通過し、待機状態になるメモリアクセスリクエストはない(H1=H2=0)。したがって、RA比較部20は、入力部1−1に格納されているメモリアクセスリクエストを入力部3−2に移動するかどうかを判定することになる。入力部1−1に保持されるメモリアクセスリクエストA3(3)は、先行するメモリアクセスリクエストA2(2)、A1(1)およびメモリアクセスリクエストB1(2)と出力先が異なる。即ち、一致信号C1は“0”である。したがって、選択信号生成部22は、SEL=11とする。RA比較部20は、セレクタ10に対して入力部1−1の出力を選択する選択信号220を出力する。
状態T=2では、セレクタ10は選択信号220に基づいて入力部1−1の出力を選択するため、入力部3−2はメモリアクセスリクエストA3(3)を保持する。また、入力部3−1、3−3、3−4は、それぞれ入力部2−1、2−3、2−4からメモリアクセスリクエストが移動し、A2(2)、C2(4)、D2(1)を保持する。即ち、メモリアクセスリクエストA3(3)は、状態T=2において、競合調停に参加することになる。出力部4−1、4−2、4−3、4−4は、クロスバ部30を通過したメモリアクセスリクエストA1(1)、B1(2)、C1(3)、D1(4)を保持することになる。全てのメモリアクセスリクエストはクロスバ部30に入力される状態になる。このとき、各メモリアクセスリクエストの出力先は全て異なるため、調停処理による待機なしに状態T=3に遷移する。
状態T=3では、出力部4−1、4−2、4−3、4−4にメモリアクセスリクエストD2(1)、A2(2)、A3(3)、C2(4)がセットされる。この状態で全てのメモリアクセスリクエストはクロスバ部30を通過したことになり、図3に示される処理に比べて1タイミング早いことがわかる。また、メモリアクセスリクエストA2(2)は、メモリアクセスリクエストA3(3)に追い越されてクロスバ部30を通過することはなく、処理秩序が保たれている。
また、図9には図4に対応する競合がある場合の動作を示すタイムチャートが示される。図9の状態T=1は、図4の状態T=1と同じ状態である。状態T=1において、入力部3−1〜4にはメモリアクセスリクエストE1(4)、F1(2)、G1(3)、H1(4)が保持されている。また、入力部2−1にメモリアクセスリクエストE2(1)、入力1−1にE3(3)が保持されている。競合調停部21は、入力3−1〜4に保持されているメモリアクセスリクエストの競合を調停し、クロスバ出力を制御する。この場合、メモリアクセスリクエストE1(4)とメモリアクセスリクエストH1(4)とが共に出力部4−4に出力要求しているため、競合調停部21は調停処理を行う。メモリアクセスリクエストH1(4)を先に出力部4−4に出力するものとして、メモリアクセスリクエストE1は入力部3−1で待機状態となる。メモリアクセスリクエストF1(2)とメモリアクセスリクエストG1(3)とは、競合しないため、クロスバ部30を通過して出力部4−2、4−3に移動するように制御される。
RA比較部20は、入力部1−1、2−1、3−1、2−2、3−2に保持されるメモリアクセスリクエストの出力先情報の有効ビット31とルーティングアドレスビット32と、競合調停結果221とに基づいて選択信号220を生成する。このとき、入力部2−1、1−1にメモリアクセスリクエストが保持され(V1=V2=1)、入力部2−2は空き状態である(V4=0)。入力部3−1に保持されるメモリアクセスリクエストE1(4)は待機状態になっているが(H1=1)、入力部3−2のメモリアクセスリクエストF1(2)は調停を受けず、クロスバ部30を通過する(H2=0)。したがって、RA比較部20は、入力部2−1に格納されているメモリアクセスリクエストE2(1)を入力部3−2に移動するかどうかを判定することになる。入力部2−1に保持されるメモリアクセスリクエストE3(1)は、先行するメモリアクセスリクエストE1(4)、F1(2)と出力先が異なる。即ち、一致信号C2は“0”である。したがって、選択信号生成部22は、SEL=10とする。RA比較部20は、セレクタ10に対して入力部2−1の出力を選択する選択信号220を出力する。
状態T=2において、入力部3−1は待機状態のメモリアクセスリクエストE1(4)を保持する。セレクタ10は選択信号220に基づいてメモリアクセスリクエストE2(1)を選択して出力し、入力部3−2に保持させる。入力部2−1には入力部1−1に保持されていたメモリアクセスリクエストE3(3)が移動し、保持される。出力部4−2、4−3、4−4は、クロスバ部30を通過したメモリアクセスリクエストF1(2)、G1(3)、H1(4)を保持する。この状態で、待機状態のメモリアクセスリクエストE1(4)とともにメモリアクセスリクエストE2(1)も競合調停に加わることができる。
状態T=3において、メモリアクセスリクエストE1(4)、E2(1)はクロスバ部30を通過し、出力部4−4、4−1に保持される。また、入力部3−1は、メモリアクセスリクエストE3(3)を保持する。状態T=4において、メモリアクセスリクエストE3(3)はクロスバ部30を通過して出力部4−3に保持される。ここまで4状態を遷移することにより処理が終わる。図4において説明した5状態に比べ、1タイミング早く処理が完了することが判る。これは、メモリアクセスリクエストE2(1)がポート2の入力部3−2を使用することにより1タイミング早くクロスバ部30を通過することができたためである。また、状態T=2においてメモリアクセスリクエストE2(1)が入力部3−2に移動するため、後続のメモリアクセスリクエストE3(3)は入力部2−1に移動できるようになる。したがって、状態T=4のタイミングで出力部4−3に送ることが可能となる。
ここで、RA比較部20において、クロスバ部30の出力先が異なる場合に出力先が異なると判断しているが、アクセスするメモリアドレスが異なる場合に出力先が異なると判断しても問題ない。
以上説明したように、本発明によれば、入力ポート内の同一メモリアドレスにアクセスするリクエスト間のアクセス順序を守りながらクロスバ性能を向上できる。これは、マルチプロセッサシステムにおいて、クロスバ装置の入力部で先行するメモリアクセスリクエストと後続のメモリアクセスリクエストの出力先が異なり、かつ、リクエストの無い入力部がある場合に、後続のメモリアクセスリクエストをメモリアクセスリクエストのない入力部を経由してクロスバを通過させるため、可能となる。また、システム構成上未使用の入力部を経由してクロスバ部を通過させるため、入力ポート内の同一メモリアドレスにアクセスするリクエスト間のアクセス順序を守りながらクロスバ性能を向上できる。
図10、図11を参照して第2の実施の形態を説明する。第2の実施の形態の基本的構成は第1の実施の形態と同じであるが、未使用ポートの検出方法が異なる。図10に第2の実施の形態に係るクロスバ装置の構成が示される。クロスバ装置は、入力部1−1〜4、3−1〜4、入力バッファ5−1〜4、出力部4−1〜4、クロスバ部30、競合調停部21、構成保持部40、RA比較部41、セレクタ50を具備する。
ポート1〜4にCPU101−1〜4が接続され、メモリアクセスリクエストが送られる。ポート1から入力されるメモリアクセスリクエストは、入力部1−1、入力バッファ5−1、入力部3−1を介してクロスバ部30に入力される。入力部1−1の出力は、セレクタ50にも入力される。ポート2から入力されるメモリアクセスリクエストは、入力部1−2を介してセレクタ50に入力される。セレクタ50は、RA比較部41から出力される選択信号241に基づいて、入力部1−1の出力と入力部1−2の出力との一方を選択して出力する。セレクタ50の出力は、入力バッファ5−2、入力部3−2を介してクロスバ部30に入力される。ポート3から入力されるメモリアクセスリクエストは、入力部1−3、入力バッファ5−3、入力部5−3、入力部3−3を介してクロスバ部30に入力される。ポート4から入力されるメモリアクセスリクエストは、入力部1−4、入力バッファ5−4、入力部3−4を介してクロスバ部30に入力される。
入力バッファ5−1〜4は、メモリアクセスリクエスト競合発生時の緩衝用として設けられるバッファであり、複数のメモリアクセスリクエストを格納できる先入れ先出し(FIFO)回路である。入力部1−1〜4、3−1〜4、入力バッファ5−1〜4は、メモリアクセスリクエストおよび出力情報(RA)を保持する。クロスバ部30にメモリアクセスリクエストを出力する入力部3−1〜4に保持される出力先情報は、競合調停部21に入力される。競合調停部21は、これらの出力先情報に基づいて競合状態を調停し、クロスバ部30を制御してメモリアクセスリクエストをその出力先の出力部4−1〜4に送る。このとき、競合調停によりクロスバ部30を通過できなかったメモリアクセスリクエストは、入力部3−1〜4で待機状態となる。クロスバ部30の出力は、出力部4−1〜4に保持され、保持されたメモリアクセスリクエストは、メモリ部(図示せず)に出力される。
構成保持部40は、ポート2に接続されるCPUが停止状態、或いはポート2にCPUが接続されていない場合に、入力部1−2は未使用であるという情報を保持し、その入力部の使用/未使用情報240をRA比較部41に通知する。
RA比較部41は、入力部1−1の出力先情報201−1を入力し、入力部1−1に保持されるメモリアクセスリクエストの移動先を決定する。図11は、RA比較部41の構成を示すブロック図である。RA比較部41は、入力部1−2の使用/未使用情報240と入力部1−1の出力先情報201−1とを入力し、選択信号241を生成する選択信号生成部42を備える。
構成保持部40から出力される入力部1−2の使用/未使用情報240は、ポート2に接続されるCPUが停止状態、或いはポート2にCPUが接続されていない場合に、入力部1−2は未使用であることを示す使用中情報Vを含む。使用中情報Vは、未使用の場合“0”、使用中の場合“1”となる。入力部1−1から出力される出力先情報201−1は、図6に示されるように、有効ビット31により示される有効無効情報V1と、ルーティングアドレスビット32により示されるアドレスR1とを含む。
使用中情報Vが“1”の場合、ポート2に入力されるメモリアクセスリクエストがあるため、選択信号生成部42は、セレクタ50が入力部1−2の出力を選択するように選択信号241を生成する(SEL=0)。また、使用中情報Vが“0”の場合、アドレスR1に基づいてセレクタ50が選択するメモリアクセスリクエストを決定し、選択信号241を生成する。出力先が出力部4−1(R1=001)または出力部4−2(R1=010)のとき、セレクタ50が入力部1−2の出力を選択するように選択信号241を生成する(SEL=0)。出力先が出力部4−3(R1=011)または出力部4−4(R1=100)のとき、セレクタ50が入力部1−1の出力を選択するように選択信号241を生成する(SEL=1)。
このように制御することにより、入力部1−2が未使用である場合に、入力部1−1に格納されるメモリアクセスリクエストは、入力部1−1のメモリアクセスリクエストの出力先情報に基づいて、入力バッファ5−1もしくは入力バッファ5−2に入力されるようになる。入力バッファ5−2に入力部1−1に保持されるメモリアクセスリクエストを送るとき、そのメモリアクセスリクエストが入力バッファ5−1に入力されないように制御されるのはいうまでもない。
したがって、入力部1−2が未使用である場合には従来使用されていなかった入力バッファ5−2および入力部3−2を使用し、メモリアクセスリクエストがクロスバを通過できるようにすることでクロスバ性能を向上させることが出来る。また、このように出力先により入力部の経路を固定することにより、出力先が同じメモリアクセスリクエストはアクセス順序が守られることになる。
第1および第2の実施の形態では、説明を簡略にするために1入力ポートのみにRA比較部およびセレクタを設けた構成により説明したが、RA比較部およびセレクタは複数ポートに設けてもよいし、全ポートに設けてもよい。
以上説明したように、マルチプロセッサシステムにおいて、入力ポート内の同一メモリアドレスにアクセスするメモリアクセスリクエスト間のアクセス順序を守りながらクロスバ性能を向上できる。これは、クロスバ装置の入力部でメモリアクセスリクエストの出力先が異なり、かつ、メモリアクセスリクエストの無い入力部がある場合に、後続のメモリアクセスリクエストをリクエストのない入力部を経由してクロスバを通過させることにより可能となる。
また、システム構成上未使用のクロスバ入力部を経由してクロスバを通過させることにより、入力ポート内の同一メモリアドレスにアクセスするリクエスト間のアクセス順序を守りながらクロスバ性能を向上できる。