(57)【特許請求の範囲】
【請求項１】
多数のプロセッサを有するマルチプロセッサシステムであって、１または複数の演算器を持つ複数のプロセッサと、これ等複数の演算器間を接続する複数のバスを有し、これ等複数のバスを用いて、演算器間で直接通信を行うと共に演算器間での通信を同時に複数行い、
前記複数のバスを相互に接続するブリッジを有し、前記複数のバスの各々に前記複数の演算器の一部を接続し、同一のバスに接続された演算器間では該バスを介して直接通信を行い、異なるバスに接続された演算器間では前記複数のバスと前記複数のブリッジを介して通信を行い、
前記バスに接続された演算器からのバス使用要求を調停するアービタを各バス毎に有し、各時刻毎のデータ転送動作を指示するタイムテーブルを前記ブリッジ毎に有し、前記ブリッジを越えない通信においては、各バス内で前記アービタによってバス使用要求の調停を行い、前記ブリッジを超える通信においては当該時刻において前記タイムテーブルによって許された経路の通信のみを前記アービタが許可することを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムであって、前記プロセッサの各々が有するレジスタファイルを接続するバスを１または複数有し、異なるプロセッサの前記レジスタファイル間や前記レジスタファイルと前記演算器間で通信を行うことを特徴とするマルチプロセッサシステム。
【請求項３】
請求項１または２に記載のマルチプロセッサシステムであって、前記プロセッサの補助となる１または複数のコプロセッサと、１または複数のメモリとを有し、前記バスにこれらのコプロセッサやメモリを接続することで、前記演算器と前記コプロセッサやメモリ間、もしくは前記レジスタファイルと前記コプロセッサやメモリ間、もしくは前記コプロセッサと前記メモリ間で通信を行うことを特徴とするマルチプロセッサシステム。
【請求項４】
請求項１〜３いずれかに記載のマルチプロセッサシステムであって、前記演算器に対応してデータ到着を示す状態レジスタを有し、前記バスから前記演算器にデータが到着した際には該演算器の状態レジスタを真に設定し、前記演算器が前記バスから到着したデータを用いて演算を行った後には該演算器の状態レジスタを偽に設定し、前記演算器が前記バスから到着したデータを用いて演算を行う際に前記バスからのデータが到着していない場合、すなわち前記状態レジスタが偽である場合、前記状態レジスタが真になるまで該演算を待つことを特徴とするマルチプロセッサシステム。
【請求項５】
請求項１〜４いずれかに記載のマルチプロセッサシステムであって、前記プロセッサの各々が有するフラグレジスタ等の状態レジスタやプログラムカウンタを前記バスに接続することにより、異なるプロセッサの演算器、レジスタファイル、状態レジスタ、プログラムカウンタ間で通信を行うことを特徴とするマルチプロセッサシステム。
【請求項６】
請求項１に記載のマルチプロセッサシステムであって、前記プロセッサの各々が有するレジスタファイルをバスを用いて接続し、これ等レジスタファイル間でレジスタの内容を直接コピーすることによってプロセッサ間で通信を行なうようにし、前記プロセッサの各々が有するフラグレジスタ等の状態レジスタやプログラムカウンタを前記バスに接続することにより、異なるプロセッサの演算器、レジスタファイル、状態レジスタ、プログラムカウンタ間で通信を行うことを特徴とするマルチプロセッサシステム。
【請求項７】
請求項１〜６のいずれかに記載のマルチプロセッサシステムであって、前記プロセッサが固定タイミングで動作を行うプロセッサと動的なタイミングで動作を行うプロセッサの２種類のプロセッサであり、前記アービタが固定タイミングで動作を行うプロセッサにかかる通信に対しては常に他のプロセッサの通信よりも優先してバスの使用許可を与えることを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はマルチプロセッサシステムに関し、特にネットワークノード装置内でパケット転送処理を行うオンチップマルチプロセッサシステムにおけるプロセッサ間通信方式に関するものである。
【０００２】
【従来の技術】
半導体技術の進展により多くのプロセッサを１つの半導体上に集積することが可能となった。多くのプロセッサを１つの半導体上に集積する一つの利点として、プロセッサ間の通信に大きな帯域幅をとることができ、プロセッサ間の通信にかかる遅延時間を短縮できる点が挙げられる。プロセッサ間で通信を行う方式としては主に以下のような三方式が考えられる。
【０００３】
第一のプロセッサ間通信方式は、共有レジスタや共有キャッシュメモリや主記憶等の共有の記憶領域を用いる方式である。あるプロセッサが共有の記憶領域にデータを書き込むと、この記憶領域を共有する他のプロセッサが該データを読み出すことで通信を行う。本方式はマルチプロセッサシステムにおいて一般的に幅広く用いられており、例えば、共有メモリを用いる例としては、特開平２−２４４２５２号公報や特開平６−３５８４０号公報、特開平７−１５２６４７号公報等で示されている方式がある。また、共有レジスタを用いる例としては、特開平１０−７８８８０号公報等で示される方式がある。
【０００４】
第二のプロセッサ間通信方式は、プロセッサ間で直接データを送受信する方式である。例えば、各プロセッサが夫々有するレジスタファイルをバスを用いて相互に接続し、レジスタファイル間でレジスタデータをコピーする方式が特願平１１−３４８５４５号明細書で述べられている。
【０００５】
第三のプロセッサ間通信方式は、夫々のプロセッサが持つ演算器間を直接結線する方式である。一般的には、本方式はプロセッサ間の通信方式ではなく、スーパースカラ型プロセッサやＶＬＩＷ（Very Long Instruction Word）型プロセッサ内において、複数の演算器間で演算途中のデータを交換する方式である。本方式では、プロセッサ内の複数の演算器間、もしくは異なるプロセッサの演算器間を直接メッシュに接続することにより演算器間で高速にデータを交換することができる。
【０００６】
プロセッサ間で通信を行う際、前記第一の方式の様に共有記憶領域を使用して通信を行う場合には該記憶領域に対する複数のプロセッサからのアクセスを調停し、また前記第二及び第三の方式の様にプロセッサもしくは演算器間を直接接続する場合には、接続のために使用するバスに対する複数のプロセッサからのアクセス得ることを前提としており、実行時に競合が発生した際には、アクセス要求するプロセッサのうち１つのプロセッサを選択して、このプロセッサにアクセスを許可し、他のプロセッサに対してはアクセスを不許可とする。
【０００７】
第二のアクセス調停方式は、プロセッサを固定されたタイミングで動作させ、予め競合が発生しないようなプログラムを与えておく方式である。本方式では、あらかじめコンパイラ等を用いてプログラムコードの並べ替えを行うことにより、競合が発生しないプログラムコードをプロセッサに与え、プロセッサは与えられたプログラムコードをコード並べ替え時に想定したタイミングの通りに実行することにより、実行時にアクセス競合を発生させない。但し、本方式では、プログラム並び替え時に想定した動作タイミングと実行時の実際の動作タイミングを厳密に一致させる必要があり、そのためには、分岐やメモリアクセス等による実行の乱れを予測してプログラムコードの並べ替えを行い、プロセッサのハードウエアは予測できない実行の乱れが発生しないように構成しておく必要がある。本方式を用いたプロセッサの例として特願平１１−３４８５４５号明細書に開示の技術が挙げられる。
【０００８】
【発明が解決しようとする課題】
第一の問題点は、前記第一のプロセッサ間通信方式及び第二のプロセッサ間通信方式において通信にかかる遅延、特にあるプロセッサで演算を行ってその結果を用いて他のプロセッサで演算を行う場合のプロセッサ間の通信遅延が大きいことである。前記第一の方式では、送信を行うプロセッサと受信を行うプロセッサが共にアクセスできる記憶領域に一旦データを書きこむ必要があるため、送信プロセッサの演算器において演算されたデータが受信プロセッサの演算器に到達するまで大きな遅延が発生する。
【０００９】
また、前記第二の方式においても、送信を行うプロセッサは演算結果を一旦レジスタファイルに書き込み、これを受信を行うプロセッサのレジスタファイルに転送する必要があり、やはり演算器間では大きな遅延が発生する。
【００１０】
第二の問題点は、前記第三のプロセッサ間通信方式においてプロセッサ数及び演算器数を大きく出来ない点である。本方式では、全ての演算器の出力を全ての演算器の入力に接続する必要があるため、プロセッサ数及び演算器数の２乗の量の配線が必要となり、接続できるプロセッサ及び演算器の数が少ない。
【００１１】
第三の問題点は、前記第一及び第二のプロセッサ間通信方式においてプロセッサ間の処理引継ぎに時間がかかることである。前記方式においてはプロセッサ間でメモリ上のデータ及びレジスタ上のデータ、演算器出力のデータはプロセッサ間で引き継ぐことが出来るが、状態レジスタやプログラムカウンタの内容を引き継ぐことは出来ない。そのため、プロセッサ間で処理を引き継ぐ場合、状態レジスタ内の情報は一旦メモリもしくは通常のレジスタに反映させて引継ぎを行い、引き継いだプロセッサでは、前記メモリもしくは通常のレジスタの内容を調べて改めて状態レジスタを設定する必要がある。
【００１２】
また、プログラムカウンタに関しても同様であり、あるプロセッサで処理が複数に分岐していてそれぞれの分岐先から処理の引継ぎを行う場合、引継ぎ元のプロセッサはどの分岐の処理中であるかの情報を一旦メモリもしくは通常のレジスタに反映させて引継ぎを行い、引き継いだプロセッサでは前記メモリもしくは通常のレジスタの内容を調べて改めて処理を分岐させる必要がある。
【００１３】
第四の問題点は、第一のアクセス調停方式が大規模なマルチプロセッシングに適さない点である。本方式では、全てのプロセッサからのアクセス要求から一つのプロセッサに対してアクセス許可を与えるため、プロセッサ数が多くなるとアクセス調停の判断にかかる遅延が大きくなり、またプロセッサからアクセス調停回路までの物理的距離が長くなるため、プロセッサがアクセス要求を出してから通信を開始するまでの遅延時間が長くなる。そのため、プロセッサ数が増加するとプロセッサ間の通信速度が低下するという問題がある。
【００１４】
第五の問題点は、第一のアクセス調停方式が実時間処理に適さない点である。本方式では、実行中に動的にアクセス調停を行うため、各処理に対する処理時間を保証することが出来ない。そのため、パケット転送処理おけるパケットスケジューリング処理等の非常に厳密な実時間性を要求される処理を実現することが難しい。
【００１５】
第六の問題点は、第二のアクセス調停方式を用いた場合、処理内容によってはプログラムの実行効率が低下する点である。同じ処理を単純に繰り返す処理であれば共有資源に対するアクセス時刻を固定してもプログラムの実行効率は低下しない。しかしながら、プログラム内に分岐が多くその時々に応じて多様な処理を行う場合には、全ての分岐パスにおいて共有資源へのアクセスが競合しない様にプログラムコードを作成する必要があり、分岐パス数が多くなるに従って無駄なアクセス待ち時間が増加する。
【００１６】
パケット転送処理を例にすると、パケットスケジューリング処理は同様の処理の繰り返し処理であるため、本方式を用いても処理効率は低下しないが、パケットヘッダ処理において多様な種類のパケットを処理する場合にはパケットの種類に応じて実行する処理が異なりプログラムの実行効率が低下する恐れがある。
【００１７】
本発明は以上の問題点を鑑み発案されたものであり、マルチプロセッサシステム、特にネットワークノード装置内でパケット転送処理を行うオンチップマルチプロセッサシステムにおいて、プロセッサ数が非常に多い大規模なシステムにおいても、プロセッサ間の通信を高速化し、プログラムの実行効率と実時間処理を共に満足するアクセス調停を行うことを目的とする。
【００１８】
【課題を解決するための手段】
第一の問題点を解決するため、本発明によるマルチプロセッサシステムでは、従来のプロセッサ間通信方式に加えて、夫々のプロセッサが持つ演算器間で直接通信を行うための通信路を有し、演算器間で高速にデータの交換を行う。
【００１９】
第二の問題点を解決するため、全ての演算器間をメッシュに接続するのではなく、１本あるいは複数のバスを用いたバス接続とする。１本のバスを用いた場合には、プロセッサ数が増加するとバスの混雑やバスの物理的な距離の増加によって通信の効率が低下する。そのため、プロセッサ数が増加した場合には、全プロセッサを１本のバスに接続するのではなく、短いバスを複数用意して各プロセッサは最寄のバスにのみに接続する。そして異なるバスに接続されたプロセッサ間で通信を行うため、バス間をブリッジを用いて接続することで複数のバスを経由した通信を可能とする。
【００２０】
第三の問題点を解決するため、夫々のプロセッサが持つ状態レジスタ及びプログラムカウンタの間で直接通信を行うための通信路を有する。
【００２１】
第四の問題点を解決するため、全てのプロセッサから全共有資源に対してアクセス調停を行うのではなく、同一のバスを共有しているプロセッサ間のみでアクセス調停を行う。本マルチプロセッサシステムは複数のバスを有し、プロセッサは最寄のバスにのみ接続されている。そのため、１本のバスを共有しているプロセッサは近接しており、またその数も限られるため、これらのプロセッサ間では高速にアクセス調停を行うことができる。
【００２２】
プロセッサ数を増加させるときには１本のバスに接続するプロセッサ数を増加させるのではなくバスの数を増加させることにより、大規模なマルチプロセッシングを行う場合においても高速にアクセス調停を行うことができる。複数のバスを通過する通信の場合、プロセッサが出力したデータは一旦経由するブリッジが受け取り、このブリッジが次のバスに対してアクセス調停を行いデータを出力する。
【００２３】
第五及び第六の問題点を解決するため、各プロセッサを第一のアクセス調停方式に対応する非同期的な動作と、第二のアクセス調停方式に対応する予測不能な実行の乱れを生じる処理を禁じた同期的な動作とを選択可能であるように構成する。共有資源に対するアクセス制御方式としては、第一のアクセス調停方式を用いたプロセッサに対しては動的な調停を行い、第二のアクセス調停方式を用いたプロセッサに対してはそのアクセス要求を常に許可する。
【００２４】
すなわち、第二のアクセス調停方式を用いたプロセッサに対してはアクセスが競合しないようにプログラムコードを作成しておき、実行時には第二のアクセス調停方式を用いたプロセッサのアクセスを行わない資源に限り、第一のアクセス調停方式を用いたプロセッサからのアクセス要求を動的に調停する。
【００２５】
パケット転送処理を本マルチプロセッサシステム上に実装する際には、パケット転送処理を複数の小さな処理に分割し、各処理を固定的にプロセッサに割り当てる。そして各処理の特性に応じてプロセッサの動作を選択することにより、すなわち多様な動作を行うパケットヘッダ処理を担当するプロセッサは第一のアクセス調停方式を用い、実時間性が強く単純な繰り返しが主なパケットスケジューリング処理を担当するプロセッサは第二のアクセス調停方式を用いることによって、処理の効率性と実時間性を共に満足させる。
【００２６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図１は本発明によるマルチプロセッサシステムの第一の実施例の構成を示すブロック図である。図１を参照すると、本実施例のマルチプロセッサシステムは、複数のプロセッサ１−１〜１−４、複数のプロセッサの演算器間でデータを交換するデータバス１−８〜１−１０、データバス間でデータを交換するブリッジ１−５〜１−６、共有メモリ１−７、各プロセッサと共有メモリ１−７を接続するメモリバス１−１１、コプロセッサ１−１２〜１−１３で構成される。
【００２７】
プロセッサ１−１はデータを保持するレジスタファイル１−１−１と、１または複数の演算器１−１−２〜１−１−３、１または複数のメモリユニット１−１−４で構成され、プロセッサ１−２〜１−３も同様の構成である。各プロセッサはプログラムカウンタや状態レジスタ等の一般的なプロセッサが必要とする機構は有しているが、本実施例によるプロセッサ間通信動作とは直接関係無いため本構成図からは省略している。
【００２８】
データバス１−８〜１−１０は同時に複数のデータをバス内で通信することが出来るように複数のチャネルで構成し、各チャネルはデータ及びその宛先を転送するための通信路で構成される。メモリバス１−１１はアドレスとデータを転送するための通信路で構成される。コ（子）プロセッサ１−１２や１−１３は浮動小数点演算器や文字列コピー等の（親）プロセッサ１−１〜１−２や１−３〜１−４の動作をそれぞれ補助する機構であり、データバスもしくはメモリバスを用いてプロセッサやメモリと通信することで処理を行う。
【００２９】
図２は本実施例における演算器１−１−２の構造を示したブロック図である。演算器１−１−２はデータバスから入力レジスタへのデータ入力を制御する入力回路１−１−９、データバスから取り込んだデータを一時保持する入力レジスタ１−１−５、演算回路に与えるデータを入力レジスタもしくはレジスタファイルから選択する選択回路１−１−６から１−１−７、演算回路１−１−８、演算回路からデータバスへのデータ出力を制御する出力回路１−１−１０で構成される。他の演算器も全て同様の構成である。
【００３０】
次に、図１及び図２を参照して本実施例の動作を説明する。本実施例における各プロセッサのメモリアクセス動作は、例えば特開平２−２４４２５２号公報や特開平６−３５８４０号公報、特開平７−１５２６４７号公報等に示されるような一般的なマルチプロセッサシステムにおけるメモリアクセス動作と同様である。従って、各プロセッサ間でメモリを介して通信を行う場合、本実施例におけるマルチプロセッサシステムにおいても一般的なマルチプロセッサシステムと同様の動作で通信を行う。
【００３１】
本実施例におけるマルチプロセッサシステムにおいては、演算器を直接接続するデータバスを有する。そこで、次にデータバスを用いたプロセッサ間通信方式について説明する。プロセッサにおいて通常の演算命令を実行した際には、演算回路からの演算結果出力はレジスタファイルに送られるが、データ出力を伴う演算命令を実行した際には、演算結果出力をレジスタファイルに送ると同時に出力回路を通じでデータバスへと出力する。出力回路では、プログラムからの指示によって出力するデータバス上のチャネルを選択し、プログラムによって指示されるデータの宛先のプロセッサ番号もしくはコプロセッサ番号と共にデータをデータバスに出力する。
【００３２】
ブリッジでは、データバス上を流れるデータの宛先を検査し、もしデータが流れているデータバスとその宛先が接続されているデータバスが同じであると判断すればデータの転送処理は行わない。さもなければ宛先への経路となるデータバスへデータを転送する。
【００３３】
各演算器の入力回路では、接続されているデータバス内の各チャネルを監視し、チャネル上を流れるデータの宛先が自プロセッサであると判断した場合には、そのデータを取りこんで入力レジスタへと格納してから該入力レジスタを有効状態に設定する。演算器において通常の演算を実行する場合はデータをレジスタファイルから取得するが、データ入力を伴う演算を実行する場合には入力レジスタからデータを取得して演算を行いう。入力レジスタ上のデータを使用する際、該入力レジスタが無効状態にあれば演算を停止して該入力レジスタが有効状態に変化するまで待つ。そして該入力レジスタが有効状態に変化すると演算を再開し、演算が終了すると該入力レジスタを無効状態へと設定する。
【００３４】
このような入力レジスタの機構はプロセッサ間の処理の同期をとるために必要であり、データを受信するプロセッサがデータ到着前に演算を開始することを防ぐ。なお、特願平１１−３４８５４５号明細書に説明されているように、各プロセッサが固定タイミングで動作している場合、このような同期のための機構は不必要である。
【００３５】
プロセッサがコプロセッサに対して処理を委託するためデータを送信する場合、プロセッサは前記の動作と同様にデータバスのデータを出力し、コプロセッサはデータバス上からデータを受信して所定の処理を行う。そして処理結果は再びデータバスを用いて処理を依頼したプロセッサに送信される。メモリ上の文字列転送処理の様にコプロセッサが直接メモリアクセスを行う必要がある処理では、コプロセッサはメモリバスを用いて直接メモリアクセスを行う。
【００３６】
図３は本発明によるマルチプロセッサシステムの第二の実施例の構成を示すブロック図である。図３を参照すると、本実施例におけるマルチプロセッサシステムは、複数のプロセッサ２−１〜２−４、複数のプロセッサの演算器間及びレジスタファイル間でデータを交換するデータバス２−８〜２−１０、データバス間でデータを交換するブリッジ２−５〜２−６、共有メモリ２−７、コプロセッサ２−１１〜２−１２で構成される。
【００３７】
プロセッサ２−１はデータを保持するレジスタファイル２−１−１と、１または複数の演算器２−１−２〜２−１−３で構成され、プロセッサ２−２〜２−３も同様の構成である。データバス２−８〜２−１０は同時に複数のデータをデータバス内で通信することが出来るように複数のチャネルで構成し、各チャネルはデータ及びその宛先を転送するための通信路で構成される。また、本実施例はメモリバスを持たず、共有メモリ２−７はデータバス内の２本のチャネルを用いて接続される。
【００３８】
各演算器の構成は第一の実施例における演算器の構成と同様であるので、ここではその構成図を省略する。
【００３９】
次に、図３を参照して本実施例の動作を説明する。本実施例では、データバスを用いて共有メモリを接続するため、メモリアクセス動作が第一の実施例と異なる。メモリへの書き込みを行う場合、レジスタファイル上の１つのレジスタに書き込みを行うアドレスを設定し、別のレジスタに書き込みを行うデータを設定する。そして、送り先を共有メモリのアドレス入力に設定してアドレスを設定したレジスタからデータバスの１つのチャネルにレジスタ内容を出力し、送り先を共有メモリのデータ入出力に設定してデータを設定したレジスタからデータバスの別のチャネルにレジスタ内容を出力する。
【００４０】
共有メモリはデータバスからこれらのアドレス及びデータを受信するとメモリへの書き込みを行う。共有メモリから読み出しを行う場合、レジスタファイル中の１つのレジスタに読み出しを行うアドレスを設定し、送り先を共有メモリのアドレス入力に設定して、該レジスタからデータバスの１つのチャネルにレジスタ内容を出力する。共有メモリは読み出しアドレスを受け取ってデータの読み出しを行い、宛先を要求元のプロセッサ設定して読み出したデータをデータバスの１つのチャネルに出力する。プロセッサはこのデータを受け取ると所定のレジスタへと格納する。
【００４１】
次に、データバスを用いたプロセッサ間通信方式について説明する。本実施例においても演算器間をデータバスを用いて接続しているため、第一の実施例と同様に演算器間で直接通信を行うことが可能であり、この場合の演算器やブリッジの動作は第一の実施例と同様である。さらに本実施例においては、レジスタファイルもデータバスに接続されているため、あるプロセッサのレジスタファイルからレジスタのデータをデータバスに出力し、他のプロセッサのレジスタファイル上のレジスタへと直接データを転送することが可能である。この場合複数のチャネルを用いて同時に複数のレジスタのデータを送受信することも可能である。
【００４２】
また、本実施例においては、演算器から出力したデータをレジスタファイルで受けたり、レジスタファイルから出力したデータを演算器で受けることも可能である。さらには、メモリアクセス時において、アドレス送信の際やデータ送受信の際にレジスタファイルではなく、演算器の入出力を用いることも可能である。例えば、メモリへデータを書き込み際、演算器を用いて計算した書き込みアドレスを直接データバスに出力し、書き込みデータはレジスタファイルから出力することが可能である。
【００４３】
本実施例において、レジスタファイルを用いて通信を行う場合、第一の実施例における入力レジスタと同様の構成を用いてレジスタファイル内の各レジスタに有効状態／無効状態を持たせることで、プロセッサ間の同期を取ることが可能である。また、各プロセッサが固定タイミングで同期動作を行っている場合、このような同期のための機構は不必要である。
【００４４】
レジスタファイルや演算器、共有メモリ、コプロセッサがデータバス上の全てのチャネルに接続されている必要は無く、図３のように特定のチャネルに接続することも可能である。この場合、通信の自由度は低下するが、ハードウエア量を低減する効果がある。これは以下の実施例においても同様である。
【００４５】
本実施例におけるプロセッサとコプロセッサの間の通信は第一の実施例と同一であるが、コプロセッサとメモリ間の通信は以上で説明したようにデータバスを用いて行う。
【００４６】
図４は本発明によるマルチプロセッサシステムの第三の実施例の構成を示すブロック図である。図４を参照すると、本実施例におけるマルチプロセッサシステムは、複数のプロセッサ３−１〜３−４、複数のプロセッサの演算器及びレジスタファイル、プログラムカウンタ、状態レジスタの間でデータを交換するデータバス３−８〜３−１０、データバス間でデータを交換するブリッジ３−５〜３−６、共有メモリ３−７で構成される。
【００４７】
プロセッサ３−１はデータを保持するレジスタファイル３−１−１と、１または複数の演算器３−１−２〜３−１−３、プログラムカウンタ３−１−４、状態レジスタ３−１−５で構成され、プロセッサ３−２〜３−３も同様の構成である。
【００４８】
データバス１−８〜１−１０は同時に複数のデータをバス内で通信することが出来るように複数のチャネルで構成し、各チャネルはデータ及びその宛先を転送するための通信路で構成される。また、本実施例はメモリバスを持たず、共有メモリ２−７はデータバス内の２本以上のチャネルを用いて接続される。本実施例においても、各演算器の構成は第一の実施例における演算器の構成と同様であるので、その構成図は省略する。本実施例の特徴は、プログラムカウンタ３−１−４、状態レジスタ３−１−５がデータバスに直接接続されている点である。
【００４９】
次に、図４を参照して本実施例の動作を説明する。本実施例におけるメモリアクセス動作及びプロセッサ間通信動作は第二の実施例と同様であるため、ここでは省略する。本実施例においては、プロセッサ間でプログラムカウンタ及び状態レジスタの内容を送受信することが可能であり、プロセッサ間での処理の引継ぎを効率的に行うことが出来る。すなわち、プロセッサ間で処理を引き継ぐ際、引継ぎ元のプロセッサがレジスタファイル上のレジスタの内容だけでなくプログラムカウンタ及び状態レジスタの内容をデータバスを用いて引継ぎ先のプロセッサに送ることが可能であり、引継ぎ先のプロセッサでは引継ぎ元のプロセッサの最終的な状態と全く同じ状態で引き継いだ処理を再開することができる。
【００５０】
各プロセッサが異なる処理を行うために異なるプログラムメモリの内容を持っている場合、引継ぎ元とプロセッサと引継ぎ先のプロセッサの間にアドレスの整合性が無いため、単純にプログラムカウンタを引き渡すことはできない。このような場合、引継ぎ元のプロセッサにおいて引継ぎ先のプロセッサの実行開始アドレスを計算してレジスタファイル上のレジスタに格納しておき、処理の引継ぎ時にはこのレジスタの内容を引き継ぎ先のプロセッサのプログラムカウンタへと送信すれば良い。
【００５１】
図５は本発明によるマルチプロセッサシステムの第四の実施例の構成を示すブロック図である。図５を参照すると、本実施例におけるマルチプロセッサシステムは、第二の実施例におけるマルチプロセッサシステムに、コプロセッサ４−１５〜４−１６、プロセッサ４−１〜４−２及びコプロセッサ４−１５のデータバスアクセスを調停するアービタ４−１１、プロセッサ４−１〜４−２及びコプロセッサ４−１６及び共有メモリ４−７のデータバスアクセスを調停するアービタ４−１２、ブリッジ４−５のデータ転送動作を記述したタイムテーブル４−１３、ブリッジ４−６のデータ転送動作を記述したタイムテーブル４−１４を加えた構成である。
【００５２】
また、プロセッサ４−１は動作選択レジスタ４−１−４を持ち、プロセッサ４−２〜４−４においても同様である。各演算器の構成は第一の実施例における演算器の構成と同様であるので、ここではその構成図を省略する。
【００５３】
本実施例においては、各プロセッサは動作選択レジスタによって、ダイナミックスケジューリング動作かスタティックスケジューリング動作かを選択する。スタティックスケジューリング動作とはプロセッサが固定タイミングで動作すことであり、プロセッサに対して予測不能な実行の乱れを生じる処理を禁止し、各プロセッサを予め設定した固定長の周期に従って繰り返し処理を行なわせる動作のことである。そのため、プロセッサがどの時刻にどのようなデータバスアクセスを行うかが予測可能であり、プログラムコードを最適に並び替える事で各プロセッサからのアクセスが競合しないように調整しておくことが可能である。
【００５４】
一方、ダイナミックスケジューリング動作では各プロセッサは固定長の動作周期を持たず、予測不能な実行の乱れを生じる処理も禁止されない。そのため、プロセッサのデータバスアクセス動作を予め予測することは不可能でり、アクセス調停はプログラム実行時に動的に行う必要がある。
【００５５】
図６はタイムテーブル４−１３の構成例である。タイムテーブルは、ブリッジに接続された各データバスの各チャネルから受信したデータの転送の可否を定義するのもであり、受信データの宛先によって転送の可否を時刻毎に定義する。図６の例では、時刻０においてはデータバス４−８のチャネル１から入力したデータをプロセッサ１に向けて出力することを許可し、時刻１においてはデータバス４−８のチャネルｎから入力したデータを共有メモリに向けて出力することを許可し、時刻２においてはデータバス４−９のチャネル１から入力したデータを共有メモリに向けて出力することを許可し、その他のブリッジにおける転送処理は全て不許可であることを示している。
【００５６】
なお、ブリッジとスタティックスケジューリング動作を行うプロセッサは同期して動作し、ブリッジは周期的にタイムテーブルを繰り返し参照して転送処理を行う。
【００５７】
次に、図５及び図６を参照して本実施例の動作を説明する。本実施例におけるプロセッサ間通信動作は第二の実施例と同様であり、以下では、特にデータバスに対するアクセス調停の動作を詳しく説明する。まず、同一データバス内での通信におけるアクセス調停動作を説明する。プロセッサはデータバスにデータを出力する際、宛先と使用するチャネルをアービタに伝えてチャネルの使用許可を要求し、その許可を得てからデータの出力を行う。もし使用許可が与えられなければデータ出力を中止し、使用許可が与えられるまで要求を繰り返し行う。アービタは各プロセッサからの使用許可要求を受け、それぞれのチャネルに関してデータ出力を許可するプロセッサを決定し、その結果を各プロセッサに伝える。
【００５８】
スタティックスケジューリング動作のプロセッサではプログラムコードを実行前に適切に並べ替えておくことによって、データバスのアクセス競合を回避するが、ダイナミックスケジューリング動作のプロセッサでは、プログラム実行中に動的にアクセス調停を行う必要がある。そのため、アービタでは、複数のプロセッサが同じチャネルの使用許可を要求した場合、まず、スタティックスケジューリング動作のプロセッサに対して使用許可を与え、もしスタティックスケジューリング動作のプロセッサからの要求が無い場合には、その他のプロセッサの中から１つのプロセッサを選択して使用許可を与える。
【００５９】
コプロセッサや共有メモリからのデータ出力動作に関しても同様である。ただし、アービタでは、コプロセッサや共有メモリからダイナミックスケジューリング動作を行っているプロセッサに対してデータを出力する場合、このデータ出力がスタティックスケジューリング動作を行っているプロセッサからのデータ出力を妨げないように、コプロセッサや共有メモリからのチャネル使用要求よりもスタティックスケジューリング動作を行っているプロセッサからのチャネル使用要求を優先させる。
【００６０】
一方、コプロセッサや共有メモリからスタティックスケジューリング動作を行っているプロセッサに対してデータを出力する場合には、このデータ出力をダイナミックスタティックスケジューリング動作を行っているプロセッサからのチャネル使用要求よりも優先させる。
【００６１】
次に、ブリッジを越える通信におけるアクセス調停動作を説明する。この場合でも、プロセッサの動作は上記と同様であり、アービタの動作が異なる。アービタは他のデータバスに向かうチャネル使用許可要求があれば、ブリッジに対して現時刻で転送可能な宛先を問い合わせ、ブリッジはアービタが接続されているバスの該当するチャネルに関してタイムテーブルを参照して転送可能な宛先を回答する。そして、アービタは回答された宛先と同じ宛先をもつチャネル使用許可要求があればこの要求に対して許可を与え、さもなければブリッジを越える通信は全て不許可としてデータバス内での通信に対してチャネル使用許可を与える。
【００６２】
ただし、スタティックスケジューリング動作を行っているプロセッサの通信は常に優先し、これらのプロセッサからのチャネル使用許可要求があれば、ダイナミックスケジューリング動作を行っているプロセッサのチャネル使用許可要求はブリッジを経由するしないに係わり無く、全て不許可とする。
【００６３】
ブリッジでは、ブリッジを越える通信のデータを受信すると、このデータの宛先への経路となるデータバスに対してデータを出力するため、このデータバスを管轄するアービタに対してチャネル使用許可を求め、そしてこのデータバスへデータを出力する。アービタでは、ブリッジからのチャネル使用要求は必ず許可し、ブリッジにおいてデータが滞留することが無いようにする。そのため、各ブリッジのタイムテーブルではブリッジ間でデータバスを競合することが無い様に設定しておく必要があり、またスタティックスケジューリング動作を行うプロセッサではブリッジ間の通信を妨げることが無い様に、プログラムコードを作成しておく必要がある。
【００６４】
以上の様に、プロセッサが最寄のアービタからチャネル使用許可が得られると、その後の通信経路ではタイムテーブルの設定によって必ずチャネルが予約されているため、データの転送が滞ることなく宛先まで到着する。そのため、スタティックスケジューリングを行うプロセッサでは、接続されたデータバスだけではなく、通信途中の全てのデータバスにおいてデータが競合しなようにプログラムを作成し、その結果に従ってタイムテーブルを設定する必要がある。
【００６５】
一方、ダイナミックスケジューリング動作を行うプロセッサに関しては、アービタによってアクセス制御が行われているため、プログラムコードを自由に作成することが可能である。ただし、ブリッジを超える通信を行うためには、スタティックスケジューリング動作を行うプロセッサの通信を遮らないように、タイムテーブルの適切な時刻に通信経路を設定しておき、プロセッサがこの通信を行う場合には、設定した時刻になるまで通信を待つ必要がある。ただし、タイムテーブル余裕があれば複数の時刻に通信経路を設定することで、通信を待つ時間を軽減することが可能である。
【００６６】
なお、データバス４−９のように、ブリッジしか接続されていないデータバスでは競合が発生しないのでアービタは不要である。
【００６７】
図７は本発明によるマルチプロセッサシステムの第五の実施例の構成を示すブロック図である。図５を参照すると、本実施例におけるマルチプロセッサシステムは、第四の実施例におけるマルチプロセッサシステムとほぼ同様の構成であり、タイムテーブルの代わりに一時バッファ５−１３〜５−１４を有する点が異なる。
【００６８】
次に、図７を参照して本実施例の動作を説明する。本実施例では、同一データバス内でのアクセス調停動作は第四の実施例と同様でり、ブリッジにデータを一時蓄えておくことで、タイムテーブルによる制御を必要としない点が第四の実施例と異なる。すなわち、第四の実施例ではブリッジを越える通信はタイムテーブルを用いて全経路に関するアクセス制御を行っておくため、初段のアービタで送信が許可されたデータは途中のブリッジで滞留することはないが、本実施例では、初段のデータバスさえ使用可能であればデータの送信を開始し、通信経路の途中でデータバスが使用不可能となっていれば、その直前のブリッジにおいてデータバスが使用可能になるまでデータを待たせておく。そのため、本実施例では、ダイナミックスケジューリング動作を行っているプロセッサが通信開始を待つ時間が軽減されるという利点を持つが、その代わりブリッジが複雑になるという欠点を持つ。
【００６９】
なお、スタティックスケジューリング動作を行うプロセッサのデータがブリッジにおいて滞留することは許されないため、転送するデータに対して優先度を定め、スタティックスケジューリング動作を行うプロセッサからのデータやこのプロセッサ宛てのデータは、優先データとして待ち合わせが発生しないようにアービタを制御し、ダイナミックスケジューリング動作を行うプロセッサからのデータやこのプロセッサ宛てのデータは非優先として、他のデータと競合した場合にはブリッジにおいて待ち合わせを行う。
【００７０】
次に、ブリッジを経由する通信におけるアクセス調停動作に関して、アービタとブリッジの動作を説明する。アービタは優先データに対するチャネル使用許可要求があれば、必ずこの要求を許可する。優先データが無ければ該アービタに接続された全てのブリッジに対して一時バッファの空き容量を問い合わせ、空き容量のあるブリッジを経由する非優先データの中から１つの非優先データを選択してチャネル使用許可を与える。もし、＜ブリッジを経由する非優先データにチャネル使用許可が与えられない場合、データバス内での非優先の通信に対してチャネル使用許可を与える。
【００７１】
ブリッジでは、ブリッジを越える通信のデータを受信すると、データの出力先となるデータバスを管轄するアービタに対してチャネル使用許可を要求する。受信データが優先データであれば、該アービタは必ず使用許可を与えるので、ブリッジは到着データを滞留させること無く転送処理を行う。到着データが非優先データでありかつアービタが使用許可を与え、かつ同じデータバスへ出力される優先データや一時バッファ内の非優先データが無い場合は、この非優先データの転送処理を行い、さもなければこのデータを一時バッファへと格納する。
【００７２】
複数の非優先データが同じデータバスへ出力される場合、このうちの１つの非優先データに関して転送処理を行い、残りの非優先データは全て一時バッファに格納する。一時バッファ内に蓄えられた非優先データは、出力先のデータバスが同じである優先データがなく、かつ該データバスを管轄するアービタから許可が得られれば、一時バッファから取り出されて転送処理が行われる。
【００７３】
図８は本発明によるマルチプロセッサシステムの第六の実施例の構成を示すブロック図である。図８を参照すると、本実施例におけるマルチプロセッサシステムは、複数のプロセッサ６−１〜６−４、全プロセッサによって共有される共有メモリ６−８、プロセッサ６−１及び６−２から共有メモリ６−８へアクセスするためのメモリバス６−３、プロセッサ６−１及び６−２とプロセッサ６−３及び６−４との共有メモリ６−８へのアクセスを調停するメモリ制御回路６−６、プロセッサ６−３及び６−４の演算器間及びレジスタファイル間でデータを交換するデータバス６−７、プロセッサ６−３及び６−４によって共有される共有メモリ６−９で構成される。
【００７４】
プロセッサ６−１はデータを保持するレジスタファイル６−１−１と、１または複数の演算器６−１−２から６−１−３、１または複数のメモリユニット６−１−４で構成され、プロセッサ１−２も同様の構成である。プロセッサ６−３はデータを保持するレジスタファイル６−３−１と、１または複数の演算器６−３−２から６−３−３で構成され、プロセッサ６−４も同様の構成である。
【００７５】
次に、図８を参照して本実施例の動作を説明する。プロセッサ６−１及び６−２はダイナミックスケジューリング動作を行い、動的に共有メモリ６−８に対するアクセス制御を行う。これらのプロセッサは共有メモリ６−８のみを介して通信し、これはメモリを共有した一般的なマルチプロセッサシステムと同様の動作である。
【００７６】
一方、プロセッサ６−３及び６−４は第二の実施例におけるプロセッサ間通信と同様の動作を行う。すなわちこれらのプロセッサはデータバスを用いて演算器間及びレジスタファイル間で通信を行い、また共有メモリ６−８や共有メモリ６−９を用いた通信も行う。また、これらのプロセッサはスタティックスケジューリング動作を行っているため、データバス６−７に対する様なアクセス制御は行っていない。
【００７７】
プロセッサ６−１及び６−２とプロセッサ６−３及び６−４の間の通信は共有メモリ６−８を用いて通信を行う。プロセッサ６−１及び６−２からのメモリアクセスとプロセッサ６−３及び６−３空のメモリアクセスはメモリ制御回路６−６によって調停され、ダイナミックスケジューリング動作を行っているプロセッサ６−３及び６−４からのアクセスを常に優先するように制御を行う。
【００７８】
本実施例は第一の実施例及び第二の実施例を組み合わせ、特にパケット転送処理に特化した構成である。すなわち、パケットヘッダ処理ではプロセッサ間の通信が比較的少なく各プロセッサでは多様な処理が行われるため、プロセッサ６−１及び６−２を一般的なマルチプロセッサシステムと同様の構成として処理を行うが、パケットスケジューリング処理等ではプロセッサ間の通信が頻繁で厳密な実時間処理が必要であるため、プロセッサ６−３及び６−４を第二の実施例と同様の構成としてスタティックスケジューリング動作させて処理を行う。
【００７９】
【発明の効果】
本発明の第一の効果は、マルチプロセッサシステムにおいて、特にネットワークノード装置内でパケット転送処理を行うオンチップマルチプロセッサシステムにおいて、夫々のプロセッサが持つ演算器間で直接通信を行うための通信路を備えることによって、プロセッサ間で非常に遅延時間の短い通信を実現できることである。
【００８０】
本発明の第二の効果は、全プロセッサを１本のバスに接続するのではなく、短いバスを複数用意して各プロセッサを最寄のバスにのみ接続することにより、またバス間をブリッジを用いて接続して複数のバスを経由した通信を可能とすることにより、多数のプロセッサ及び演算器を用いる場合でも高い通信速度を実現できることである。
【００８１】
本発明の第三の効果は、夫々のプロセッサが持つレジスタファイルや状態レジスタ、プログラムカウンタの間で直接通信を行うことで、プロセッサ間の処理の引継ぎが効率的に行われることである。
【００８２】
本発明の第四の効果は、同一のバスを共有しているプロセッサ間のみで動的なアクセス調停を行い、ブリッジを越える通信はタイムテーブルによって静的にスケジューリングするかもしくはブリッジ内の一時バッファで待ち合わせを行うことにより、大規模なマルチプロセッシングにおいて高速にアクセス調停を行うことができることである。
【００８３】
本発明の第五の効果は、各プロセッサをダイナミックスケジューリング動作とスタティックスケジューリング動作とを選択可能であるように構成することで、処理の特性によってプロセッサの動作を選択し、処理の効率性と実時間性を共に満足させることができることである。
【図面の簡単な説明】
【図１】本発明の第一の実施例の構成を示すブロック図である。
【図２】図１の演算器の構成を示すブロック図である。
【図３】本発明の第二の実施例の構成を示すブロック図である。
【図４】本発明の第三の実施例の構成を示すブロック図である。
【図５】本発明の第四の実施例の構成を示すブロック図である。
【図６】図５の実施例におけるタイムテーブルの構成例を示す図表である。
【図７】本発明の第五の実施例の構成を示すブロック図である。
【図８】本発明の第六の実施例の構成を示すブロック図である。
【符号の説明】
１−１〜１−４，２−１〜２−４，３−１〜３−４，４−１〜４−４，
５−１〜５−４，６−１〜６−４      プロセッサ
１−５，１−６，２−５，２−６，３−５，３−６，４−５，４−６
ブリッジ
１−７，２−７，３−７，４−７，５−７，６−８，６−９
共有メモリ
１−８〜１−１０，２−８〜２−１０，３−８〜３−１０，
４−８〜４−１０，５−８〜５−１０，６−５，６−７
データバス
１−１１                            メモリバス
１−１２，１−１３，２−１１，２−１２，４−１５，４−１６
コプロセッサ
４−１１，４−１２，５−１１，５−１２
アービタ
４−１３，４−１４                  タイムテーブル
【図１】
0003925105.tif 000002
【図２】
0003925105.tif 000003
【図３】
0003925105.tif 000004
【図４】
0003925105.tif 000005
【図５】
0003925105.tif 000006
【図６】
0003925105.tif 000007
【図７】
0003925105.tif 000008
【図８】
0003925105.tif 000009