JPH0668053A - 並列計算機 - Google Patents

並列計算機

Info

Publication number
JPH0668053A
JPH0668053A JP4221592A JP22159292A JPH0668053A JP H0668053 A JPH0668053 A JP H0668053A JP 4221592 A JP4221592 A JP 4221592A JP 22159292 A JP22159292 A JP 22159292A JP H0668053 A JPH0668053 A JP H0668053A
Authority
JP
Japan
Prior art keywords
processor
arithmetic
instruction
processors
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP4221592A
Other languages
English (en)
Inventor
Hiroshige Fujii
洋重 藤井
Takashi Yoshida
尊 吉田
Hisatomo Satou
寿倫 佐藤
Masashi Takahashi
真史 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP4221592A priority Critical patent/JPH0668053A/ja
Publication of JPH0668053A publication Critical patent/JPH0668053A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Abstract

(57)【要約】 【構成】 n個のプロセッサ1からなるプロセッサアレ
イと、このプロセッサアレイを制御すると共に、命令列
から並列実行可能な2種類の命令列を抽出してプロセッ
サアレイに供給するプロセッサアレイ制御装置2とを備
え、プロセッサアレイ制御装置2の出力端子OUT0,
1から供給される2種類の命令列のうちの1種類を各プ
ロセッサ1が受け取り、2種類の命令列をn個のプロセ
ッサ1で並列実行する。 【効果】 並列度がプロセッサ数より小さい場合でも、
実行時間の短縮とプロセッサの有効利用を図れる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、並列計算機に関する。
【0002】
【従来の技術】大規模な科学技術計算を高速に実行する
ために、並列計算機が期待されている。並列計算機の1
つとしてSIMD型並列計算機がある。SIMD型並列
計算機は、複数のプロセッサ上に配置された複数のデー
タに対して、すべてのプロセッサで同じ命令を実行す
る。この場合、プロセッサ数分だけのデータに対する処
理を並列に実行することになる。
【0003】一般に、並列計算機上で実行しようとする
プログラムには、並列度というものがあり、それ以上の
プロセッサがあっても、速度は向上しない。例えば、繰
り返し処理を並列実行するときに、1回の繰り返しを1
台のプロセッサで実行することを考えると、1000回
の繰り返し処理を10000台のプロセッサで実行して
も、1000倍以上には速度向上は望めない。したがっ
て、プロセッサの数よりも少ない並列度の問題を解く場
合には、実質的に使用されないプロセッサが多くなり、
無駄である。
【0004】問題の並列度が少ない場合に、実行時間の
短縮とプロセッサの有効利用を考える必要がある。例え
ば、上述の例では繰り返し処理が複数命令からなり、そ
の複数命令の中で並列に実行できる命令があれば、その
命令を複数のプロセッサで並列実行できる可能性があ
る。しかしながら、このような複数命令の並列実行は、
単一命令を全プロセッサが実行するというSIMD型並
列計算機では、実現するのは困難である。
【0005】ここで、一般的な並列計算機について図6
を用いて説明する。
【0006】同図で、この並列計算機は、大きく分け
て、1台の制御プロセッサ(CP)11と、複数台の演
算プロセッサ(PE)12から構成される。制御プロセ
ッサ11には全体メモリ(M)13が接続され、演算プ
ロセッサ12にはそれぞれローカルメモリ(LM)14
が接続される。制御プロセッサ11と各演算プロセッサ
12は、グローバルバス15で接続される。演算プロセ
ッサ12は、ネットワーク16で相互接続される。ネッ
トワーク16の形態としては、格子結合、2進nキュー
ブ結合、木結合等、多くのものが知られている。
【0007】制御プロセッサ11は、それ自体が一つの
情報処理装置であり、全体メモリ13に格納されている
プログラム(機械語命令列)を読み込み、解読する。解
読した命令が制御プロセッサ11で実行すべき命令であ
れば制御プロセッサ11自身で実行する。解読した命令
が演算プロセッサ12で実行すべき命令であれば、制御
プロセッサ11はこの命令をグローバルバス15を介し
て全演算プロセッサ12に放送し、演算プロセッサ12
でこの命令の実行が行われる。
【0008】制御プロセッサ11は、グローバルバス1
5を介して、すべての、あるいは特定の演算プロセッサ
12から、データの読み出し、および書き込みを行うこ
とができる。また、同期バス17を介して、すべての演
算プロセッサ12の状態の論理和を認識することができ
る。
【0009】さらに、制御プロセッサ11は、フロント
エンド計算機18と結合されている。フロントエンド計
算機18では、制御プロセッサ11および演算プロセッ
サ12で実行するプログラムの開発を行ったり、処理す
べきデータの入出力を行う。
【0010】演算プロセッサ12は、制御プロセッサ1
1から放送される命令に従って、自ローカルメモリ14
のデータに対して演算を行ったり、ネットワーク16を
介して他の演算プロセッサ12とデータ通信を行ったり
して処理を行う。
【0011】演算プロセッサ12は、例えば、図37に
示すような構成になっている。
【0012】命令レジスタ24には、制御プロセッサ1
1から放送される命令が、1クロックごとに格納され
る。演算プロセッサ12を構成する他のすべての要素、
すなわち、アドレスレジスタ(AR)26、データレジ
スタ(DR)27、状態制御レジスタ(PSW)31、
プロセッサ番号レジスタ(PNR)32、ALU29、
レジスタファイル30、通信制御部33は、命令レジス
タ24の内容によって制御される。
【0013】制御プロセッサ11からは、一時期には常
に同じ命令が全演算プロセッサ12に対して放送され、
全演算プロセッサ12が一斉に同じ処理を行うことにな
る。いわゆるSIMD(Single Instruction Multiple
Data Stream )方式と呼ばれるものである。一方、各演
算プロセッサ12が独自にプログラムを持ち、各演算プ
ロセッサ12が独立して動作する方式も提案されてお
り、MIMD(MultipleInstructionMultiple Data Str
eam)方式と呼ばれる。
【0014】図37に示したSIMD方式は、MIMD
方式に比較して制御が簡単でハードウェアが少なくてす
み、多くのデータに対して同じ処理を行う必要のある場
合に有効である。しかし、データによって異なった処理
が必要となる場合に、効率よく処理できないという欠点
があり、この場合はMIMD方式が有利になる。
【0015】このような、並列計算機においては、各演
算プロセッサ(演算要素/以下、PE:Process
ing−Elementという)間の接続方式がその並
列計算機をどのようにするかがその並列計算機の特徴を
出す大きな要因となっている。PE間接続方式は大きく
分けて、静的結合と動的結合の2つがある。
【0016】静的結合は、隣接する通信相手のPEが経
路によって固定されているもので、リング結合、トーラ
ス結合、木構造結合などがある。その特徴は、通信経路
が確定しているため、隣接経路のあるPE間でのデータ
通信は速いが、逆に遠くのPE、すなわち他のPEを経
由して通信を行わなければならない相手との通信は非常
に遅くなるという問題がある。
【0017】動的結合は、通信相手が固定でなく、クロ
スバスイッチを多段に設けて通信時にスイッチを切り替
え、通信相手を決定するもので、クロスバネット、オメ
ガネットなどがある。その特徴は、スイッチ群を経由す
ることにより、ほぼ全てのPEへの通信距離が等価に見
えることであり、任意のPE間の通信時間がほぼ一定と
なることである。
【0018】また、PEが故障した場合の故障PEの切
り放しも容易に行うことが出来る。しかし、経路の確定
のためと、スイッチのディレイのために、通信のための
時間がかかり、また、スイッチでのデータの衝突などが
問題となる。
【0019】これらの結合路の使い分けとして、隣接作
用問題でよく行われる隣のPEへのデータ転送では静的
結合である隣接結合路を使用し、任意のPEから他の任
意のPEへデータを転送するいわゆるランダム通信では
動的結合の通信経路を使用する場合が多い。
【0020】静的結合網の並列計算機に、サイズの合う
問題を実行させる場合は効率はよいが、サイズの異なる
問題を実行させる場合は、PE台数が中途半端になり、
非常に効率が落ちてしまう。例えば32×32の2次元
トーラス結合の並列計算機に問題サイズ32×32×1
0の隣接作用問題を乗せる場合、x軸、y軸をそれぞれ
PEアレイの各辺に対応させれば効率は非常によい。
【0021】ところが、問題サイズ30×30×10の
問題では、x,y軸をPEアレイの各辺に対応させても
それぞれ2行分のPE列が余ってしまう。この場合は、
各2行分が余ったことをプログラマーあるいはコンパイ
ラが認識してこれに見合ったコードを出力しなければな
らない。
【0022】例えばリング状に隣接PEに接続されてい
る場合、問題サイズのために使用しないPEがあれば、
同PEを通過させるために、余分な転送動作を行う必要
があり、各々のPEでは使用するPEと使用しないPE
の判別動作も必要となってくる。そのため問題サイズと
アレイサイズが一致した場合に比べ、データ転送でのオ
ーバーヘッドにより明らかに処理効率が落ちる。
【0023】並列計算機の他の特徴としては、各PEの
演算データを保持するメモリの構成も挙げられる。大き
く分けると。共有メモリ型と、分散メモリ型がある。共
有メモリ型は、各PEとメモリ間を共有バスあるいは動
的結合路で結合する場合が多く、比較的プロセッサ台数
が少ない場合に有効である。
【0024】一方、分散メモリ型は各々のPEにローカ
ルメモリを付け、データの共有性を無くするかわりにデ
ータアクセスのコンフリクトを解消している。そのた
め、近年のPE台数の多い並列計算機では、ほぼこの分
散メモリ型で構成されている。
【0025】分散方式のローカルメモリでは、解く問題
の並列度は低いが1台のPEで分担するデータ量が多い
場合、一度に乗せることのできるデータ量は1台のPE
のローカルメモリに依存してしまう。稼動しているPE
よりもIDLEのPEの方が多い場合、本来1台のPE
で受け持つデータを2台のPEに振り分け、2台のPE
の連動により、疑似的に1台のPEとして処理を行う。
この場合、2台の連動を処理するためのソフトウェアの
オーバーヘッドと、隣接通信が行えないオーバーヘッド
から、処理能力が低下する。
【0026】以上のように、従来の並列計算機では問題
サイズが異なることによるオーバーヘッドが大きいた
め、以前よりオーバーヘッドを小さくするような並列計
算機が必要とされていた。
【0027】一方、複数の演算プロセッサを相互結合す
る通信ネットワークは、これらの演算プロセッサを相互
に結合するが、プロセッサの数は非常に多いので、任意
の演算プロセッサから他の全ての演算プロセッサに結合
するための通信経路を備えるのは、物理的にも経済的に
も現実的ではない。
【0028】そこで、例えば図19に示すように、相互
に隣接する演算プロセッサ55間の通信チャネル56だ
けを備えさせ、隣接せず直接に結合されていない演算プ
ロセッサ55間では、一つ以上の中継プロセッサを介し
て通信を行う方法がある。
【0029】このようなプロセッサ間通信方式として
は、例えばW.J.Dally 他の”Deadlock-Free Message Ro
uting in Multiprocessor Interconnection Networks”
(IEEETrans. Comput., vol.C-6, No.5, May 1987)に開
示されているワームホール・ルーティングがある。この
ワームホール・ルーティングでは、メッセージをフリッ
トと呼ばれる小さな単位に分割して通信を行う。通信は
送信側プロセッサから受信側プロセッサまでの経路を確
定して開始され、その経路は通信が終了するまでそのメ
ッセージに占有される。
【0030】ワームホール・ルーティングは以上のよう
な通信を行うので、あるメッセージの通信が行われてい
る間は、その通信で使用されている通信チャネルを他の
メッセージの通信に使用することはできない。したがっ
て、あるメッセージを構成する全てのフリットの通信が
途中で停止してしまうと、その通信に使用されている通
信チャネルを必要とする通信は、その間ずっと待ち続け
なければならない。すなわち、あるメッセージの通信が
他のメッセージの通信を妨害してしまうという問題があ
る。
【0031】この問題を解決するために、例えばW.J.Da
lly の”Virtual-Channel Flow Control”(IEEE Tran
s. Para. and Dist. Sys., vol.3, No.2, Mar. 1992)
に開示されているように、各演算プロセッサのメッセー
ジの受信側に複数個のフリットを蓄えることのできるバ
ッファを設ける。
【0032】こうすることで、通信が停止しているメッ
セージを演算プロセッサ内に蓄え、これがネットワーク
に広がる範囲を狭め、このメッセージがさらに他のメッ
セージの通信を妨害しないようにしてる。
【0033】このような演算プロセッサの従来例を図3
8に示す。ルータ部51と演算処理部52から構成され
る。ルータ部51はフリットを蓄えるバッファ53x,
53y,53pと、フリットの出力先を決定するスイッ
チ54から構成される。
【0034】Pin,Poutはルータ部51と演算処
理部52とを接続する通信チャネルである。Xin,X
out,Yin,Youtはそれぞれ隣接する演算プロ
セッサとの間の入力および出力のための通信チャネルで
ある。
【0035】しかしこのプロセッサを用いた場合、以下
のような問題がある。図39において、55a〜55e
は演算プロセッサであり、それそれバッファ53x,5
3y,53p、スイッチ54および演算処理部52から
構成される。
【0036】出力先の演算プロセッサ55bのバッファ
が一杯で、通信が停止しているフリット67が演算プロ
セッサ55aのバッファ53xに蓄えられているとす
る。このとき演算プロセッサ55cから演算プロセッサ
55aに、別のメッセージのフリット68が入力される
とする。このメッセージの出力先が演算プロセッサ55
eであるとすると、演算プロセッサ55eのバッファに
空きがあれば、フリット68は出力されるべきである。
【0037】ところが、バッファ53xに蓄えられてい
るフリット67の通信が停止しているため、フリット6
8を出力することができない。すなわち、出力先の通信
チャネルが空いており本来出力されるべきであるメッセ
ージが、通信の停止している他のメッセージによって通
信を妨害される。したがって、並列計算機全体としての
通信時間は増大し、スループットも低下する。
【0038】ところで、図19で示した通信方法とは別
に、図29に示すような、通信方法がある。この方法に
おけるワームホール・ルーティングでは、メッセージを
フリットと呼ばれる小さな単位に分割し、中継プロセッ
サはメッセージが全て到達するのを待たないで、あるフ
リットが到着したら直ちにそのフリットを次のプロセッ
サに転送する。
【0039】ワームホール・ルーティングを行うプロセ
ッサの構成例を図40に示す。90はルータ部で、Xi
n、Xoutはそれぞれ隣接するプロセッサとの間の入
力および出力チャネルである。Pin、Poutはルー
タ部90と演算処理部72を接続する通信チャネルであ
る。
【0040】図29においてプロセッサ74aからプロ
セッサ74eへの通信を考える。ワームホール・ルーテ
ィングではハンドシェイクを行って通信を行う必要があ
る。ハンドシェイクのリクエストとアクノリッジとで一
回のフリットの通信が成立するので、一単位時間は2と
考えることができる。Dをプロセッサ間の距離、Lをフ
リットの数として、図41のD=4、L=4の場合を例
にして、必要な通信時間を考察する。
【0041】例えばプロセッサ74bからプロセッサ7
4cへ先頭フリットを送信している間に、プロセッサ7
4aはプロセッサ74bに二番目のフリットを送信する
ことができる。同様の考察から、プロセッサ74aから
プロセッサ74eまでの通信を考える。
【0042】先頭フリットがプロセッサ74aからプロ
セッサ74eに到達するまでに必要な時間は2×Dであ
り、この間に二番目のフリットは、プロセッサ74dに
到達している。したがって、二番目以降の全てのフリッ
トが、プロセッサ74aから74eに到達するまでに必
要な時間は2×(L−1)となる。この結果、ワームホ
ール・ルーティングの場合に必要なプロセッサ間の通信
時間は2×(D+L−1)となる。
【0043】プロセッサ間通信の他の方式には、特開平
2−228762に開示されているワームホール・ルー
ティングを変形した方法がある。この方法ではメッセー
ジとともに伝達されるクロックの制御のもとに、プロセ
ッサ間で通信が行われる。ワームホールでは通信を行う
ごとに、ハンドシェイクを行って隣接プロセッサ間で同
期をとらなければならないのに対して、この方法ではい
ったんプロセッサ間の経路が決定してしまえば、クロッ
ク同期にしたがって通信すればよく、ハンドシェイクを
行う必要がない。
【0044】この方法ではいったん経路が確定した後で
は、ハンドシェイクを行う必要がないので(D+L−
1)で通信が行える。しかし、経路を確定するときと、
経路の確定を送信側プロセッサへ報告するときには、ワ
ームホール・ルーティングと同様にハンドシェイクを行
わなければならず、それぞれ(2×D)の通信時間を必
要とする。したがってワームホール・ルーティングの変
形を用いた場合に必要なプロセッサ間の通信時間は(5
×D+L−1)となる。図42にD=4、L=4の場合
のタイミング図を示す。
【0045】プロセッサの数が1,000を越えるよう
な大規模なネットワークになると、これらのDの項によ
る影響が無視できなくなる。このとこはDが大きくなる
とそのメッセージの通信に要する時間が増大するだけで
はない。すなわち、通信中のメッセージがプロセッサや
プロセッサ間のチャネルを占有し、他のメッセージはそ
のプロセッサやチャネルを利用することができなくな
る。
【0046】そのためプロセッサやチャネルが解放され
るのを待たなければならない。つまり、あるメッセージ
の通信が他のメッセージの通信の妨げとなるわけであ
る。したがってメッセージの通信に時間がかかると、ほ
かのメッセージの障害となる時間も増加し、ネットワー
ク全体での通信時間はさらに増大することになる。
【0047】
【発明が解決しようとする課題】以上で述べたように、
従来のSIMD型並列計算機では、問題の並列度がプロ
セッサよりも大きい場合には、その並列度を生かして高
速に問題を解くことができるが、問題の並列度がプロセ
ッサ数よりも小さい場合には、有効に利用できるのは問
題の並列度分のプロセッサのみで、それ以外のプロセッ
サは遊ぶことになり、問題を解く時間を短縮するのには
役にたたないという問題がある。
【0048】また、SIMD型並列計算機は、多くのデ
ータに対して同じ処理を行う必要のある場合に有効であ
る。しかし、データによって、異なった処理が必要とな
る場合に、効率よく処理できないという欠点があった。
一方MIMD型並列計算機では、データによって異なる
処理が必要な場合も柔軟に対応できるが、制御が複雑
で、ハードウェアが増大するという欠点があった。
【0049】さらに、従来の静的結合網の並列計算機で
は、問題のサイズが異なる場合にPE台数がが中途半端
になり、効率が低下してしまったり、データ量が多い場
合に複数台数のPEを連動させるためのオーバーヘッド
が大きくなるという問題があった。
【0050】一方、従来の並列計算機では、出力先の通
信チャネルが空いており、通信が可能であるにも関わら
ず、通信が停止しているメッセージによって他のメッセ
ージの通信が妨害されてしまうという問題があった。
【0051】また、ネットワークの規模がプロセッサ間
通信に与える影響が大きく、大規模なネットワークでは
通信に非常に時間がかかってしまうという問題もあっ
た。
【0052】この問題を解決するために、第1の発明
は、問題の並列度がプロセッサ数よりも小さい場合で
も、できるだけ多くのプロセッサを効率よく利用できる
並列計算機を提供することを目的とする。
【0053】第2の発明は、SIMD型並列計算機に若
干のハードウェアを付加するだけで、MIMD処理を可
能とする並列計算機を提供することを目的とする。
【0054】第3の発明は、問題のサイズが異なる場合
に、使用されないPEをバイパスすることによって処理
効率の低下を防ぎ、さらにデータ量が多い場合に、使用
されないPEのローカルメモリを使用されるPEからア
クセス可能にすることによってオーバーヘッドを小さく
することができる並列計算機を提供することを目的とす
る。
【0055】また、第4の発明は、通信可能なメッセー
ジが妨害されずに、通信時間の短縮を可能とする並列計
算機を提供することを目的とする。
【0056】第5の発明は、通信チャネルおよび制御信
号を中継プロセッサでバイパスすることにより、通信時
間の短縮を可能とする並列計算機を提供することを目的
とする。
【0057】
【課題を解決するための手段】上記目的を達成するた
め、第1の発明は、複数個のプロセッサからなるプロセ
ッサアレイと、そのプロセッサアレイに対して並列実行
可能な複数種類の命令列を抽出して供給するなどの制御
を行なうプロセッサアレイ制御手段から構成される。
【0058】各プロセッサは、プロセッサアレイ制御手
段から供給される複数種類の命令列の中の1種類ずつを
受け取る機能と、受け取った命令列を他のプロセッサと
並列に実行する機能とを持つ。
【0059】また、第2の発明の並列計算機は、大きく
分けて、複数個の演算プロセッサと、これを制御する単
一の制御プロセッサとから構成される。さらに、演算プ
ロセッサは、演算プロセッサでの実行を制御する命令を
格納するためのレジスタと、このレジスタに、制御プロ
セッサからの命令を入力するか、あらかじめメモリに格
納されている命令を格納するかを選択するためのマルチ
プレクサと、レジスタに格納されている命令にしたがっ
て演算を実行する演算部とから構成される。
【0060】第3の発明は、個々の通信経路で接続され
ている複数の演算要素と、各々の演算要素と個々に結合
しているローカルメモリと、解く問題のサイズに応じて
演算に使用する演算要素と使用しない演算要素とを識別
する識別手段と、この識別手段によって識別された、演
算に使用しない演算要素をバイパスするバイパス手段
と、前記識別手段によって識別された、演算に使用しな
い演算要素と結合しているローカルメモリを、演算に使
用する演算要素から直接アクセス可能にするアクセス手
段とから構成されている。
【0061】さらに、第3の発明は、前記複数の演算要
素、識別手段、バイパス手段、ローカルメモリ、及びア
クセス手段を1つのチップ上に配置し、前記バイパス手
段及びアクセス手段を前記演算要素上に配線する。
【0062】また、第4の発明は、複数のプロセッサが
N次元ネットワークで相互接続され、各プロセッサが、
隣接するプロセッサからメッセージを受信し、出力先を
決定する出力先決定手段と、出力先ごとに設けられ、前
記出力先決定手段によって出力先が決定されたメッセー
ジを受信した順に蓄える蓄積手段と、蓄積されたメッセ
ージを、決定された出力先のプロセッサに出力する出力
手段とから構成される。
【0063】第5の発明は、複数のプロセッサがN次元
ネットワークで相互接続され、各プロセッサが、隣接す
るプロセッサからメッセージおよび制御信号を受信し、
メッセージの宛先を判定する判定手段と、判定されたメ
ッセージが自プロセッサ以外の場合、受信したメッセー
ジおよび制御信号を隣接するプロセッサにバイパスする
バイパス手段とから構成されている。
【0064】
【作用】上記手段により、第1の発明は、対象とする問
題の並列度が十分大きい場合には、従来のSIMD型並
列計算機と同様の動作をさせる。その場合には、プロセ
ッサアレイ制御手段が、プロセッサアレイへ供給する複
数個の命令列をすべて同一の命令列にすることによって
実現できる。各プロセッサは、プロセッサアレイ制御手
段が供給する複数個の命令列の一つを受け取り実行する
ことができるから、複数個の命令列がすべて常に同一で
あれば、すべてのプロセッサが常に同一命令を並列実行
することになる。
【0065】対象とする問題の並列度がプロセッサ数よ
り小さい場合には、以下のように制御する。ここで、プ
ロセッサアレイ制御手段は、並列実行可能なm種類の命
令列を抽出してプロセッサアレイへ供給できるようにな
っており、プロセッサはn個あるものとする。そして、
n個のプロセッサをm個ずつのk組に分ける(すなわ
ち、n=m×k、n、m、kは整数とする)。このm個
のプロセッサからなる組をクラスタと呼ぶことにする。
【0066】各クラスタにはすべて同じm種類の命令列
を供給し、同じ処理を行なうように制御する。プロセッ
サアレイ制御手段から供給されるm種類の命令列は、各
クラスタ内のm個のプロセッサのそれぞれに1種類ずつ
供給され、各プロセッサは、供給された命令列を実行す
る。
【0067】また、第2の発明は、通常のSIMD処理
では、各演算プロセッサは、制御プロセッサから放送さ
れる命令にしたがって処理を行う。制御プロセッサから
指示があると、あらかじめ各演算プロセッサのローカル
メモリに格納されている命令が命令レジスタに格納され
るようにマルチプレクサが切り換わる。各演算プロセッ
サのローカルメモリに異なる命令を格納しておくことに
よって、MIMD処理を行う。
【0068】さらに、第3の発明は、PEアレイのサイ
ズと問題サイズが異なる場合、コンパイラあるいは他の
手段により、使用するPEと、使用しないPEを予め決
定し、決定されたPE情報を識別手段に送る。識別手段
では、PE毎の使用する/しないの情報を保持してお
く。
【0069】処理実行時に隣接通信を行う際、各PEの
バイパス手段は自PEに対応する識別手段から、バイパ
スを行うかどうかが指示される。稼動中のあるPEは、
隣のPEが休止である場合、休止のPEのバイパス手段
により、さらに先の稼動中のPEがあたかも隣のPEに
見える。
【0070】以上から、処理する問題のサイズに合わせ
て使用するPEと使用しないPEを適切に選択すること
により、解く問題に最適なハードウェアのアレイサイズ
を用意する。
【0071】また、アクセス手段に予め休止となるPE
のローカルメモリをアクセスする稼動PEの情報を与え
ておき、同情報と識別手段の情報から、稼動するPEは
休止しているPEのローカルメモリに直接アクセスし、
同ローカルメモリを稼動するPEのローカルメモリの一
部として使用する。
【0072】さらに、バイパス手段とアクセス手段を、
同一チップ内に納められた複数PEに適用する事によ
り、高速な動作を保証すると共に、バイパス手段及びア
クセス手段をPEの上に配線することにより配線面積を
小さくし、チップ面積の縮小を行う。
【0073】第4の発明の並列計算機によれば、メッセ
ージの出力先の決定後にフリットをバッファに蓄えるの
で、出力先チャネルが空いていれば、通信が停止してい
る他のメッセージによってそのメッセージの通信が妨害
されることはない。したがって、並列計算機全体として
通信時間は短縮され、スループットは向上する。
【0074】第5の発明の並列計算機によれば、あるプ
ロセッサが隣接するプロセッサからメッセージを受け取
り、そのメッセージが自プロセッサ宛でなければ、通信
チャネルと制御信号をバイパスする。メッセージの中継
を行うプロセッサで、メッセージおよび制御信号をバイ
パスし、通信を行っているプロセッサ間の距離を実際よ
りも小さくしている。
【0075】
【実施例】以下、図面を参照しながら本発明の実施例を
説明する。
【0076】第1の発明 第1の発明の一実施例の構成を図1に示す。図1に示し
た並列計算機は、n個(nは整数)のプロセッサ1から
なるプロセッサアレイと、プロセッサアレイに対して命
令を供給するプロセッサアレイ制御装置2とからなる。
図示していないが、プロセッサ1間およびプロセッサ1
とプロセッサアレイ制御装置2間には、データ転送と制
御のための通信ネットワークが存在する。
【0077】なお、今回の実施例では、プロセッサアレ
イ制御装置2が2種類の命令列を供給する場合について
示すが、第1の発明はこれに限らず、複数種類の命令列
を供給することができるものである。
【0078】プロセッサアレイ制御装置2は、命令メモ
リを持ち、そこから命令を取り出し、プロセッサアレイ
に対して1度に2個の命令を供給することができる。各
プロセッサ1は、プロセッサアレイ制御装置2から同時
に供給された2個の命令のうちの1つの命令を受け取り
実行する。
【0079】具体的には、プロセッサ番号が偶数のプロ
セッサ1はプロセッサアレイ制御装置2の出力端子OU
T0から出力される命令列の命令を受け取り実行し、プ
ロセッサ番号が奇数のプロセッサ1は出力端子OUT1
から出力される命令列の命令を受け取り実行する。
【0080】各プロセッサ1は、演算部、レジスタファ
イル、制御部、ローカルメモリ、メモリインターフェー
ス部、プロセッサ間通信部からなる。これらのプロセッ
サ1には2つの動作モードがある。1つは、各プロセッ
サ1が独立に動作するレジスタ非共有モードであり、も
う1つは、隣のプロセッサ1とレジスタを共有するレジ
スタ共有モードである。
【0081】ここでいうレジスタの共有とは、自分のプ
ロセッサ1内のレジスタの内容が対応する相手のレジス
タの内容と常に同じようになっているということであ
る。つまり相手のプロセッサ1内のレジスタにデータを
書き込んだ後に、自分の対応するレジスタを読み出すと
相手のプロセッサ1が書き込んだデータと同じデータが
読み出せるというものである。
【0082】プロセッサ番号が偶数のプロセッサ1は、
自分のプロセッサ番号より1つ大きい番号をもつプロセ
ッサ1とレジスタを共有し、プロセッサ番号が奇数のプ
ロセッサ1は、自分のプロセッサ番号より1つ小さいプ
ロセッサ1とレジスタを共有する。
【0083】まず、プロセッサ数よりも並列度が大きい
処理を実行する場合について説明する。この場合には、
プロセッサ1の動作モードはレジスタ非共有モードと
し、すべてのプロセッサ1に同じ処理を実行させるため
に同じ命令を供給するようにする。そのためには、この
実施例では、プロセッサ1ごとに供給される命令列は固
定されているので、プロセッサアレイ制御装置2の2つ
の出力端子OUT0,1から同一の命令列を供給するこ
とにより、1つの命令列を2つの命令列として供給する
ように制御する。
【0084】次にプロセッサ数よりも並列度が小さい処
理を実行する場合について説明する。この場合には、プ
ロセッサ1の動作モードはレジスタ共有モードとする。
プロセッサ番号が偶数のプロセッサ1とその番号より1
つ大きい番号のプロセッサ1とが1つのクラスタを構成
する。
【0085】クラスタ内の2つのプロセッサ1には、プ
ロセッサアレイ制御装置2によって抽出された並列実行
可能な2つの命令が出力端子OUT0,1からそれぞれ
のプロセッサ1に同時に供給され、それぞれのプロセッ
サ1では供給された各命令を並列に実行する。
【0086】ここで、図2のような式の計算をする場合
について説明する。例えば、プロセッサ数nが1000
であるとする。
【0087】この計算を1000組のデータに対して行
なう場合には、プロセッサ1のモードをレジスタ非共有
モードにし、プロセッサアレイ制御装置2の出力端子O
UT0,1から、図3(a),(b)のような同一な命
令列1,2を供給する。各プロセッサ1に1組ずつのデ
ータの処理を割当てることにより、1個のプロセッサ1
で1000組のデータを処理するのに比べ1000分の
1の時間で処理できる。
【0088】しかし、このレジスタ共有モードで500
組のデータを処理する場合は、1個のプロセッサ1で5
00組のデータを処理するのと比べ、プロセッサ数が1
000であるのに500分の1の時間でしかなく、並列
計算機の能力を十分に生かしきれない。
【0089】一方、プロセッサ1のモードをレジスタ共
有モードにし、プロセッサアレイ制御装置2から図4
(a),(b)のような並列実行可能な2種類の命令列
1,2を出力端子OUT0,1からそれぞれ供給する
と、2台のプロセッサ1で1組のデータを処理すること
になり、1000分の1の時間で実行することが可能で
ある。
【0090】図3の命令列では、1回の処理を行なうの
に4命令分実行時間がかかるが、図4の場合には、2命
令分の実行時間ですみ、実行時間が半分になる。したが
って、500組のデータに対する処理の場合でも図4の
命令列で実行させれば、1個のプロセッサ1で処理する
場合に比べて1000分の1の時間で実行することが可
能である。
【0091】なお、プロセッサアレイ制御装置2が供給
する並列実行可能な複数の命令は、もともとメモリ上に
並列実行可能な複数の命令列を用意しておき、それを供
給するという方法と、単一の命令列を用意しプロセッサ
アレイ制御装置2内で並列実行可能な命令を抽出して複
数命令を供給するという方法が考えられるがどちらでも
良い。後者の場合には、通常のSIMD型並列計算機と
のオブジェクト互換性が保たれることになるため、その
点は有利である。
【0092】図1に示した実施例では、複数供給される
命令列のうちのどちらを各プロセッサ1が受け取るかが
固定されているが、図5に示すように、いずれの命令列
を受け取るかをセレクタ3で選択できるようにする構成
もある。この構成では、すべてのプロセッサ1は、プロ
セッサアレイ制御装置2から供給される2つの命令列の
どちらでも選択して受け取ることができる。
【0093】その選択は各プロセッサ1の命令入力の前
におかれているセレクタ3で行なわれ、どちらを選ぶか
は、あらかじめ設定することもできるし、各プロセッサ
1の演算結果からどちらを選択するかを決定することも
できる。クラスタを構成する際には、並列実行可能な2
つの命令列を受け取った2つのプロセッサ1で構成すれ
ば良い。
【0094】この場合、if−then−elseのよ
うな処理を実行するときに、then処理とelse処
理を並列に実行するように2つの命令列を出力端子OU
T0,1からそれぞれ供給し、各プロセッサ1はif文
の条件によりいずれかの命令列を選択するようにすれ
ば、if−then−elseの並列実行が可能であ
る。
【0095】superscalarあるいはVLIW
などの複数命令の並列実行機構を持ったプロセッサなど
を要素プロセッサとして用いる場合には、並列度の高い
問題を解く場合でも、問題の並列度を犠牲にして複数命
令の並列実行をすることになり、必ずしも効果があがる
とはかぎらないが、この第1の発明では、並列度の高い
問題では、問題の並列性を利用して解くことができるの
で、高速に解くことが可能である。
【0096】第2の発明 図6は、第2の発明の並列計算機に係わる一実施例の構
成を示すブロック図である。
【0097】同図に示す並列計算機は、大きく分けて、
1台の制御プロセッサ(CP)11と、複数台の演算プ
ロセッサ(PE)12から構成される。制御プロセッサ
11には全体メモリ(M)13が接続され、演算プロセ
ッサ12にはそれぞれローカルメモリ(LM)14が接
続される。制御プロセッサ11と各演算プロセッサ12
は、グローバルバス15、および同期バス17で接続さ
れる。演算プロセッサ12は、ネットワーク16で相互
接続される。ネットワーク16の形態としては、格子結
合、2進nキューブ結合、木結合等、多くのものが知ら
れており、いずれの方式でもよい。
【0098】制御プロセッサ11は、それ自体が一つの
情報処理装置であり、全体メモリ13に格納されている
プログラム(命令列)を読み込み、解読し、解読結果に
したがって、全体メモリ13に格納されているデータに
対して、処理を行う機能を有する。さらに制御プロセッ
サ11には、演算プロセッサ12に対して制御を行う機
能が追加されている。
【0099】全体メモリ13に格納されている制御プロ
セッサ11のプログラムには、制御プロセッサ11自身
での処理を指示する命令の他に、演算プロセッサ12で
の処理を指示する命令が含まれている。
【0100】制御プロセッサ11は、メモリ13から読
み出した命令を解読し、制御プロセッサ11で実行すべ
き命令であれば、制御プロセッサ11で実行する。解読
した命令が演算プロセッサ12で実行すべき命令であれ
ば、グローバルバス15を介して全演算プロセッサ12
に放送する。ここで放送する命令は、解読済みのもの
(マイクロ命令)でも解読前のもの(機械語命令)でも
よいが、ここでは解読済みの命令を放送するものとして
話を進める。
【0101】制御プロセッサ11は、グローバルバス1
5を介して、すべての、あるいは特定の演算プロセッサ
12から、データの読み出し、および書き込みを行うこ
とができる。また、同期バス17を介して、すべての演
算プロセッサ12の状態の論理和を認識することができ
る。
【0102】さらに制御プロセッサ11は、フロントエ
ンド計算機18と結合されている。フロントエンド計算
機18では、制御プロセッサ11および演算プロセッサ
12で実行するプログラムの開発を行ったり、処理すべ
きデータの入出力を行う。
【0103】フロントエンド計算機18と制御プロセッ
サ11は、実行時、制御プロセッサ11で実行するべき
プログラムをフロントエンド計算機18から全体メモリ
13に転送する。さらに、制御プロセッサ11で実行す
べきデータをフロントエンド計算機18から全体メモリ
13に転送したり、演算プロセッサ12で実行するべき
データを、フロントエンド計算機18から各演算プロセ
ッサ12に分配したり、あるいは処理結果を各演算プロ
セッサ12や全体メモリ13からフロントエンド計算機
18に転送したりする機能を有する。
【0104】演算プロセッサ12は、制御プロセッサ1
1からグローバルバス15を介して放送される命令にし
たがって、自ローカルメモリ14のデータに対して演算
を行ったり、ネットワーク16を介して他の演算プロセ
ッサ12とデータ通信を行ったりして処理を行う。
【0105】第2の発明の中心となる演算プロセッサ1
2は、図7に示すような構成になっている。
【0106】まず、ローカルメモリ14と演算プロセッ
サ12とは、メモリアドレスバス21と、メモリデータ
バス22によって接続されている。
【0107】マルチプレクサ(MUX)23は、第2の
発明において追加されたものであり、命令レジスタ24
に格納する命令として、制御プロセッサ11からグロー
バルバス15を介して放送される命令か、ローカルメモ
リ14から読み出されたデータかを選択する。マルチプ
レクサ23の一方の入力は、制御プロセッサ11からの
グローバルバス15が、もう一方の入力には、メモリデ
ータバス22がそれぞれ接続されている。
【0108】命令レジスタ24には、マルチプレクサ2
3で選択された命令が格納される。演算プロセッサ12
を構成する他のすべての要素は、命令レジスタ24から
の指示によって制御される。ここでは説明を容易にする
ために、命令レジスタ24の最上位ビットでマルチプレ
クサ23の制御を行うこととし、最上位ビットが0なら
ば、制御プロセッサ11から放送される命令が命令レジ
スタ24に格納され、最上位ビットが1ならば、ローカ
ルメモリ14から読み出されるデータが命令レジスタ2
4に格納されるものと仮定して話を進める。
【0109】プログラムカウンタ(PC)25は、第2
の発明をより効果的にするために追加されたものであ
り、ローカルメモリ14に格納されているMIMD処理
用の命令列を読み出すために用いられる。プログラムカ
ウンタにMIMD用命令列のアドレスを格納し、読み出
し操作を行うことによって、メモリデータバス22に命
令が読み出される。命令列を連続して読み出すために、
プログラムカウンタ25には、自分自身の値をインクリ
メントする機能を持つ。
【0110】アドレスレジスタ(AR)26、データレ
ジスタ(DR)27は、ローカルメモリ14をアクセス
するために用いられる。アドレスレジスタ26は、内部
バス28から書き込まれ、メモリアドレスバス21に値
を出力する。データレジスタ27は、メモリデータバス
22と内部バス28との間に置かれる双方向のレジスタ
である。
【0111】データ読み出し時は、内部バス28からア
ドレスレジスタ26に、読み出すべきメモリ13のアド
レスが格納され、ローカルメモリ14に対して読み出し
操作を行い、読み出されたデータはメモリデータバス2
2からデータレジスタ27に格納される。データ書き込
み時は、アドレスレジスタ26に書き込むべきメモリ1
3のアドレスを格納し、データレジスタ27に書き込み
データを格納し、書き込み操作を行うことにより、書き
込みが行われる。
【0112】ALU29は、内部バス28を介して、レ
ジスタファイル30に格納されるデータに対して、算術
あるいは論理演算を行う。
【0113】状態制御レジスタ(PSW:Prosessor St
atus Word )31は、ALU29での演算状態を表示す
るビットと、演算プロセッサ12での演算を制御するビ
ットから構成される。演算を制御するビットの内訳は次
の通りである。このうち、(1)〜(3)は、演算のA
LU29で演算が行われるたびに設定される。(4),
(5)は、直接、状態制御レジスタ31を書き換えるこ
とによって設定する。
【0114】(1)ゼロビット:演算結果がゼロになる
とセットされる。
【0115】(2)正ビット:演算結果が正のときにセ
ットされる。
【0116】(3)オーバーフロービット:演算でオー
バーフローが発生したときにセットされる。
【0117】(4)同期ビット:全演算プロセッサ12
の同期ビットはワイアード・オア接続され、制御プロセ
ッサ11に接続される。同期を取る時点で演算プロセッ
サ12がこのビットをセットすると、制御プロセッサ1
1は、全演算プロセッサ12が同期ビットをセットした
か否かを認識できる。
【0118】(5)マスクビット:このビットがセット
されると、以後、制御プロセッサ11からマスク解除命
令が発行されるまで、命令レジスタ24の内容にかかわ
らず、演算プロセッサ12は動作しない。
【0119】プロセッサ番号レジスタ(PNR:Porces
sor Number Register )32は、各演算プロセッサ固有
のプロセッサ番号が格納されるレジスタである。このレ
ジスタを読み出すことによつて、自分のプロセッサ番号
を知ることができる。このレジスタはハードウェア的に
設定する方法や、システム立ち上がり時に制御プロセッ
サ11が設定する方法等が考えられる。ここではハード
ウェア的に設定されているものとするが、他の方法でも
差し支えない。
【0120】通信制御部33は、ネットワーク16を介
して他の演算プロセッサ12と通信したり、グローバル
バス15を介して制御プロセッサ11との通信を行うた
めのレジスタや外部の通信プロトコル制御装置から構成
される。演算プロセッサ12は、この通信制御部33に
よって、制御プロセッサ11や他の演算プロセッサ12
と通信を行うことができる。
【0121】命令レジスタ24への命令の格納は、前述
したように、次の2通りの方法で行われる。第一の方法
は、制御プロセッサ11より放送されるものである。制
御プロセッサ11から全演算プロセッサ12に同一の命
令が放送されるため、マスクビットがセットされていな
い演算プロセッサ12は、すべて同じ処理を行う。すな
わち、SIMD方式の並列処理が行われる。
【0122】第2の方法は、ローカルメモリ14にあら
かじめ格納されている命令を読み出して、命令レジスタ
24に格納するものである。この命令は、あらかじめ各
演算プロセッサ12で異なったものを格納しておくこと
により、各演算プロセッサ12で異なった処理を行うこ
とができる。すなわち、MIMD方式の並列処理とな
る。
【0123】以下では、SIMD方式とMIMD方式の
2つの処理方式、およびこの2つの処理方式間の以降を
中心に、本並列計算機での処理手順について説明する。
【0124】まず、第2の発明の並列計算機で実行する
プログラムについて説明する。このプログラムは、大き
く次の3つに分けられる (1)逐次処理される部分。
【0125】ループ制御等、並列処理できない部分で、
制御プロセッサ11で実行される。 (2)各演算プロセッサ12が一斉に処理を行う部分
(SIMD処理)。
【0126】制御プロセッサ11により、各演算プロセ
ッサ12が同じ処理を行う。
【0127】(3)各演算プロセッサ12で異なった処
理を行う部分(MIMD処理)。
【0128】制御プロセッサ11の制御を離れて、各演
算プロセッサ12が独自に実行する。
【0129】このうち、(1)と(2)は、制御プロセ
ッサ用プログラムとしてコンパイルされ、機械語命令列
が全体メモリ13にロードされる。そして、制御プロセ
ッサ11が解読、実行あるいは実行制御を行う。(3)
は各演算プロセッサ用としてコンパイルされ、さらにマ
イクロ命令列に展開された後、実行される演算プロセッ
サ12のローカルメモリ14にロードされる。
【0130】次に、初期データのマッピング処理につい
て説明する。
【0131】全体メモリ13に、制御プロセッサ11で
実行される命令とデータがフロントエンド計算機18か
ら転送される。
【0132】次に、各演算プロセッサ12のローカルメ
モリ14に、演算データと、MIMD動作されるべき命
令とが格納される。これらのデータは、各演算プロセッ
サ12によって異なるため、演算プロセッサ12ごとに
逐次的に行われる。処理手順は次の通りである。
【0133】(1)制御プロセッサ11は、全演算プロ
セッサ12に対して、データを転送する演算プロセッサ
番号と、マスク命令を放送する。
【0134】(2)各演算プロセッサ12は、制御プロ
セッサ11からの命令に従って、制御プロセッサ11か
ら放送されるプロセッサ番号と、自分のプロセッサ番号
とを比較し、一致していなければマスクビットをセット
する。したがって以後の処理は、制御プロセッサ11が
指定した番号の演算プロセッサ12のみで行われる。
【0135】(3)制御プロセッサ11は、データを格
納するべきローカルメモリ14の領域の先頭アドレスを
演算プロセッサ12に転送し、DMAモードと、制御プ
ロセッサ11から転送するデータのメモリ13への書き
込みを指示する命令を発行する。
【0136】(4)制御プロセッサ11は、指定した演
算プロセッサ12に転送するデータをフロントエンド計
算機18から取得し、グローバルバス15を用いて演算
プロセッサ12に順次転送する。
【0137】(5)指定された演算プロセッサ12は、
制御プロセッサ11から転送されるデータを、指定され
たローカルメモリ14の領域に、DMAモードで順次書
き込む。
【0138】(6)転送が終了すると、制御プロセッサ
11は、DMA中止命令と、マスク解除命令を全演算プ
ロセッサ12に対して発行する。
【0139】(7)以上で述べた(1)〜(6)の処理
を全演算プロセッサ12に対して行う。
【0140】MIMD方式の並列処理を行うにあたっ
て、MIMD用命令アドレステーブルを作成する必要が
ある。このアドレステーブルの作成方法を下記に示す。
【0141】MIMD動作される命令列は、初期データ
マッピング時は、演算データと区別されることなくロー
カルメモリ14に格納される。連続した命令列は、ロー
カルメモリ14の連続したアドレスに格納されることが
望ましい。また、同一時刻にMIMD処理される命令列
の開始アドレスは、各演算プロセッサ12で同じである
ことが望ましいが、異なっていても実行可能である。
【0142】MIMD動作される命令列の開始アドレス
は、各演算プロセッサ12で同一の場合は制御プロセッ
サ11または演算プロセッサ12が、各演算プロセッサ
12で異なる場合は演算プロセッサ12が認識しておく
必要がある。
【0143】図8に、各演算プロセッサ12でMIMD
動作命令開始アドレスが同一の場合の制御プロセッサ1
1のアドレステーブルの一例を示す。アドレステーブル
はどの領域に作成してもよいが、ここでは全体メモリ1
3の0番地から作成されるものと仮定する。同一時期に
MIMD動作される命令列の開始アドレスが、各演算プ
ロセッサ12で異なる場合は、各演算プロセッサ12が
ローカルメモリ14中にアドレステーブルを作成する必
要がある。
【0144】以下に、SIMD方式による処理を説明す
る。
【0145】第2の発明の並列計算機における制御プロ
セッサ11から放送される命令により、全演算プロセッ
サ12が同一の処理を行う方式である。制御プロセッサ
11は、全体メモリ13から命令を読み込み、解読した
結果、それが演算プロセッサ12で実行すべきものなら
ば、グローバルバス15を介して全演算プロセッサ12
に放送する。各演算プロセッサ12では、制御プロセッ
サ11から放送される命令を命令レジスタ24に入力す
るように、マルチプレクサ23を制御する。
【0146】マルチプレクサ23の制御は、命令レジス
タ24の最上位ビットで行われ、最上位ビットが0なら
ば、制御プロセッサ11から放送される命令が命令レジ
スタ24に格納される。したがって、制御プロセッサ1
1から放送されるSIMD処理用の命令は、最上位ビッ
トは常に‘0’となるように制御プロセッサ11を設計
する必要がある。命令レジスタ24の各ビットが、演算
プロセッサ12の他の構成要素を制御することによって
処理が行われる。
【0147】次に、SIMD方式からMIMD方式へ移
行する処理手順を説明する。
【0148】制御プロセッサ11の命令には、各演算プ
ロセッサ12のローカルメモリ14に格納されている命
令列に実行を移行するための命令が用意されている。こ
の命令は、図8に示すアドレステーブルの番号を指定す
るフィールドを持つ。この命令が制御プロセッサ11で
実行されると、次のような手順で各演算プロセッサ12
のMIMD用命令列に処理が移行される。
【0149】(1)アドレステーブルから命令列の開始
アドレス読み出され、グローバルバス15を介して全演
算プロセッサ12に放送される。
【0150】(2)制御プロセッサ11からの命令によ
る制御で、各演算プロセッサ12で、(1)で転送され
たアドレスが、プログラムカウンタ25に格納される。
【0151】(3)制御プロセッサ11からの命令によ
る制御で、各演算プロセッサ12で、プログラムカウン
タ25で示されるローカルメモリ14のアドレスから、
MIMD処理のための命令が読み出される。このときの
制御プロセッサ11からの命令は、最上位ビットが
‘1’になっている。したがって、次の命令レジスタ2
4の入力は、ローカルメモリ14から読み出されたMI
MD用命令が選択されるよう、マルチプレクサ23が切
り換わる。
【0152】(4)ローカルメモリ14から読み出され
た命令は、命令レジスタ24に格納され、命令レジスタ
24からの指示によって処理が行われる。この処理は、
各演算プロセッサ12で異なっていても良いため、MI
MD処理となる。
【0153】次に、MIMD方式に移行した後の処理を
以下に示す。
【0154】前述したように、MIMD処理が開始され
たとき、プログラムカウンタ25には、MIMD用命令
列の先頭アドレスが格納されている。プログラムカウン
タ25は、命令レジスタ24からの制御によってインク
リメントされる機能を備えている。これによって、ロー
カルメモリ14に格納されたMIMD用命令列を順次読
み出すことができる。
【0155】また、命令レジスタ24に格納される命令
の選択は、現在の命令レジスタ24の最上位ビットで決
定される。すなわち最上位ビットが‘1’ならば、ロー
カルメモリ14から読み出した命令が命令レジスタ24
に格納される。
【0156】したがって、ローカルメモリ14に格納さ
れるMIMD処理用命令列は、最上位ビットを‘1’に
し、さらにプログラムカウンタ25をインクリメントし
ながらローカルメモリ14を読み出すように制御コード
を設定しておけば、ローカルメモリ14の命令列を順次
命令レジスタ24にロードして、MIMD処理が可能で
ある。命令列の最後尾は、最上位ビットを‘0’にして
おけば、MIMD処理終了後、制御プロセッサ11から
の命令が命令レジスタ24にロードされるように、マル
チプレクサ23が制御される。
【0157】もちろん、単一の命令に、上記の最後尾の
命令の設定を行っておけば、単一の命令のMIMD動作
も可能である。
【0158】最後に、MIMD方式からSIMD方式へ
の移行処理を説明する。
【0159】MIMD処理の終了は、各演算プロセッサ
12でまちまちであるため、制御プロセッサ11は、全
演算プロセッサ12でのMIMD処理の終了を確認して
からSIMD処理を開始する必要がある。
【0160】(1)制御プロセッサ11は、各演算プロ
セッサ12でのMIMD処理を起動した後、待ち状態に
入る。この状態では、制御プロセッサ11は、演算プロ
セッサ12に対してNOP(No Operation)コードを発
行し続ける。
【0161】(2)演算プロセッサ12はMIMD処理
を行うが、MIMD処理用命令列の最後尾の命令とし
て、状態制御レジスタ31の同期ビットをセットし、さ
らに最上位ビットを‘0’にした命令を挿入しておく。
【0162】(3)各演算プロセッサ12では、MIM
D処理用命令列の最後のコードを実行すると、状態制御
レジスタ31の同期ビットがセットされ、さらに命令レ
ジスタ24への入力が、以後は制御プロセッサ11が発
行する命令を選択するようにマルチプレクサ23が切り
換わる。各演算プロセッサ12の同期ビットはワイヤー
ド・オア接続され、制御プロセッサ11は、全演算プロ
セッサ12で同期ビットが1にセットされたか否かを認
識できる。
【0163】(4)制御プロセッサ11は、(1)で演
算プロセッサ12のMIMD処理を起動した後、全演算
プロセッサ12で同期ビットに1がセットされたことを
認識するまでNOP命令を発行し続ける。早く処理が終
わった演算プロセッサ12は、制御プロセッサ11から
NOPコードを受け取って実行するが、副作用はない。 (5)制御プロセッサ11は、全演算プロセッサ12の
同期ビットに1がセットされたこと、すなわち全演算プ
ロセッサ12でMIMD処理が終了したことを確認した
ら、NOPコードの発行を中止し、SIMD処理用の命
令の発行を開始する。
【0164】(6)以降は、制御プロセッサ11からの
命令にしたがって、全演算プロセッサ12でSIMD処
理が行われる。
【0165】以上で述べたように、SIMD型並列計算
機にわずかなハードウェア(マルチプレクサ23,プロ
グラムカウンタ25)を追加するだけで、MIMD動作
が可能となる。
【0166】なお、以上の実施例は、第2の発明を実現
するための一例を示したものであり、これに限定される
ものではない。例えば、命令レジスタ24への入力の選
択は、命令レジスタ24の最上位の1ビットを用いて行
ったが、状態制御レジスタ31の1ビットを用いて行う
ようにすることもできる。この場合の構成図を図9に示
す。
【0167】図7と異なる点は、命令レジスタ24への
入力データを選択するマルチプレクサ23の制御を、状
態制御レジスタ31の1ビットを用いて行うことであ
る。このような構成で、MIMD動作を行うための手順
を次に示す。なお、図7の実施例と共通の処理は、記述
を省略した。
【0168】1.SIMD処理 状態制御レジスタ31の、マルチプレクサ23を制御す
るビットを、制御プロセッサ11からの命令を命令レジ
スタ24に入力するように設定する。以後、状態制御レ
ジスタ31のマルチプレクサ23を制御するビットを書
き換えない限り、演算プロセッサ12は制御プロセッサ
11からの命令にしたがって処理を行う。
【0169】2.MIMD処理への移行 制御プロセッサ11の命令には、各演算プロセッサ12
のローカルメモリ14に格納されている命令列に実行を
移行するための命令が用意されている。この命令は、図
8に示すような命令列の開始アドレスの格納されている
番地を指定するフィールドを持つ。この命令が制御プロ
セッサ11で実行されると、次のような手順で各演算プ
ロセッサ12の命令列に処理が移行される。
【0170】(1)指定されたアドレステーブルに格納
されている命令列の開始アドレスがグローバルバス15
を介して全演算プロセッサ12に放送される。
【0171】(2)制御プロセッサ11からの命令によ
る制御で、各演算プロセッサ12で、(1)で放送され
たMIMD用命令列の開始アドレスが、プログラムカウ
ンタ25に格納される。
【0172】(3)制御プロセッサ11からの命令によ
る制御で、各演算プロセッサ12で、プログラムカウン
タ25で示されるローカルメモリ14の開始アドレスか
ら、MIMD処理のための命令が読み出され、命令レジ
スタ24に格納される。
【0173】(4)状態制御レジスタ31の、マルチプ
レクサ23を制御するビットを、命令レジスタ24への
入力データとして、ローカルメモリ14から読み出した
データを選択するように設定する。
【0174】(5)命令レジスタ24からの指示によっ
て処理が行われる。この処理は、各演算プロセッサ12
で異なっていても良いため、MIMD処理となる。
【0175】3.MIMD方式による処理 前実施例と同様に、プログラムカウンタ25には、MI
MD用命令列の先頭アドレスが格納されており、この値
をインクリメントさせながら、ローカルメモリ14から
命令列を順次読み出すことができる。状態制御レジスタ
の設定により、ローカルメモリ14から読み出された命
令列は、命令レジスタ24に格納されるようにマルチプ
レクサ23が制御される。これによって、ローカルメモ
リ14に格納された命令列を順次読み出し、実行するこ
とができる。
【0176】4.MIMD方式からSIMD方式への移
行 MIMD処理の終了は、各演算プロセッサ12でまちま
ちであるため、制御プロセッサ11は、全演算プロセッ
サ12でのMIMD処理の終了を確認してからSIMD
処理を開始する必要がある。
【0177】(1)制御プロセッサ11は、MIMD処
理を起動した後、待ち状態に入る。この状態では、制御
プロセッサ11は、演算プロセッサ12に対してNOP
(No Operation)コードを発行する。
【0178】(2)各演算プロセッサ12のMIMD処
理用命令列の最後尾に、状態制御レジスタ31の同期ビ
ットをセットし、かつ、マルチプレクサ23を制御する
ビットを制御プロセッサ11からの命令を命令レジスタ
24に入力するように設定する命令を挿入しておく。
【0179】(3)各演算プロセッサ12では、MIM
D処理用命令列の最後のコードを実行すると、状態制御
レジスタ31の同期ビットがセットされ、さらに命令レ
ジスタ24への入力が、以後は制御プロセッサ11が放
送する命令を入力するようにマルチプレクサ23が切り
換わる。
【0180】(4)制御プロセッサ11は、(1)で演
算プロセッサ12のMIMD処理を起動した後、全演算
プロセッサ12で同期ビットに1がセットされたことを
認識するまでNOP命令を発行し続ける。早く処理が終
わった演算プロセッサ12は、制御プロセッサ11から
NOPコードを受け取って実行するが、副作用はない。 (5)制御プロセッサ11は、全演算プロセッサ12の
同期ビットに1がセットされたこと、すなわち全演算プ
ロセッサ12でMIMD処理が終了したことを確認した
ら、NOPコードの発行を中止し、SIMD処理用の命
令の発行を開始する。
【0181】(6)以降は、制御プロセッサ11からの
命令にしたがって、全演算プロセッサ12でSIMD処
理が行われる。
【0182】このように、命令レジスタ24への命令の
入力の選択を、状態制御レジスタによって設定すること
もできる。この方法では、制御レジスタの設定のために
命令が必要となるが、演算結果によって、制御プロセッ
サ11からの命令列か、メモリ13に格納されている命
令列かのどちらかを実行するかを選択することも可能
で、より柔軟性の高い処理が実現できる。
【0183】以上で述べた実施例では、制御プロセッサ
11は解読済みの命令、すなわちマイクロ命令を各演算
プロセッサ12に放送する方法を示した。これに対し
て、解読する前の機械語命令をそのまま放送することも
可能である。この場合、各演算プロセッサ12に、機械
語を解読したマイクロ命令を発生するための機能を設け
る必要があり、ハードウェア量は増加する。
【0184】しかし、近年開発されているRISC(Re
duced Instruction Set Computer)プロセッサでは、機
械語の解読は比較的簡単に行われるため、それほどハー
ドウェア量は増加しないと考えられる。もちろん、この
ような場合でも、第2の発明で示したように、SIMD
処理とMIMD処理の両方を可能にする構成が可能であ
る。
【0185】第3の発明 図10は、第3の発明の並列計算機に係わる一実施例の
構成を示す図である。同図には、簡単なモデルとして1
次元リング結合の並列計算機を示した。この図に示す通
り、16個のPE0〜15がリング状に配置され、各々
のPE0〜15は隣のPEと通信を行うものとする。
【0186】問題サイズが16の倍数の時、分割された
タスクのPEへの割り付けは容易である。すなわち例え
ばサイズが16の場合、PE0には1番目のタスクを割
り当て、PE1には2番目のタスクの割り付けを行い、
PE15には16番目のタスクを割り付ける。この場
合、各PEに均等にタスクが割り付けられ、バランス良
く処理を実行できる。
【0187】しかし、問題サイズが10の場合、16台
のPE0〜15の内の10台にタスクを割り付けるが、
例えばPE0からPE9までに割り付けるとする。この
時PE10からPE15までは休止となるので、識別回
路にPE0からPE9までが稼動であり、PE10から
PE15までが休止である情報をセットする。各PEの
バイパス回路は識別回路からの情報により通信時のバイ
パスを行う。
【0188】本例ではPE10からPE15のバイパス
回路がバイパスを行う。これによりソフトから見たハー
ドウェアの構成はPE0からPE9までがリング状に接
続された10台並列の1次元接続の並列計算機となる。
左から順にPE0、PE1…PE9と並んでいる場合、
PE9の右の通信バスはPE0の左側の通信バスに接続
される。
【0189】図11,12にバイパス回路の詳解図を示
す。図11はPE間が双方向バスで通信を行う場合のア
ドレス/データバスである。バイパス経路はPEを飛び
越すように、PEの右側バスと左側バスに接続する。双
方向バスには双方向3−stateバッファ41を挿入
する。3−ステートバッファには識別回路42から自P
Eの稼動/休止情報が送られる。PEが稼動の場合は3
−stateとなり、休止の場合はバッファがオープン
となり、通信可能となる。
【0190】双方向バッファ41の方向制御は並列計算
機の仕様による。例えばSIMD型並列計算機で、同期
的に処理を実行する場合、データの転送方向は全てのP
Eで同じであるため、PEの制御を行うACU(Arr
ay Control Unit)から転送方向を指定
するだけでよい。
【0191】一方、MIMD型並列計算機では、隣接通
信は非同期である場合が多く、そのためハンドシェイク
を行う必要がある。ハンドシェイクには要求信号と許可
信号の信号線が必要となる。この場合、双方向バッファ
41の方向は、アクセス要求を出した側とアクセスが読
み出しか書き込みかに依存してくる。そのため、バッフ
ァ41の方向はバッファ41に付属の制御回路で要求信
号とRead/Write信号から決定する。
【0192】MIMD型並列計算機で必要となる要求信
号、許可信号、Read/Write信号などは一方向
の信号である場合が多い。特に今問題としているPE間
での転送は通信相手が固定できるためなおさらである。
通信方向が1方向の場合の詳解図が図12である。例え
ば右方向への要求信号を考えると、自PEの左のPEか
ら自PEに向けられた要求信号と、自PEから右のPE
に送る要求信号を識別回路42からの稼動/休止の信号
により、セレクタ43aで選択して右のPEへ送る。
【0193】例えば自PEが稼動の場合、右のPEに送
る要求信号は自PEからの要求信号をセレクタ43aで
選択して送り、自PEが休止している場合は左のPEか
ら自PEに送られてくる要求信号を右のPEに送る。こ
れにより、自PEが休止の場合は左のPEからの要求信
号は直接右のPEに送られることになり、バイパスを行
うことが出来る。
【0194】上記例ではPE10からPE15のかたま
りを休止とした。しかし、このように局地的にかたまっ
て休止にした場合、バイパスする距離が大きくなる。上
記例では6PE分の距離をバイパスすることになる。図
11の場合、バイパスの際にはバッファ41を通過す
る。連続してバイパスする数が増えればそれだけ通過す
るバッファ41の数は増え、なおかつ物理的な距離も遠
くなり、通信の為の時間が増加してしまう。
【0195】上記MIMD型並列計算機でのハンドシェ
イク方式ならば、多少通信時間に誤差が生じても防ぐこ
とが出来るが、SIMD型並列計算機での同期方式で
は、各PE間での通信所要時間にばらつきがあると、問
題が生ずる。
【0196】実際には、転送命令が40nsで実行しな
ければならず、隣接PE間で転送する場合25ns必要
な場合、バイパス1段を通るのに5nsの遅延が生ずる
とすると、15÷5で最大3PE分のバイパスしか許さ
れず、上記例での6個のPEのバイパスは不可能とな
る。
【0197】そのためバイパスするPEを選択する必要
がある。例えば休止にするPEを1つおきにすれば、P
E間には1PE分の遅延しか生じなくなる。上記例では
休止するPEを例えばPE5,PE7,PE9,PE1
1,PE13,PE15と選択することにより可能とな
る。上記遅延の制約がある場合、上記16台並列の計算
機では、4台並列から、16台並列まで自由に並列台数
を変えることの出来る1次元リング結合並列計算機が実
現できる。
【0198】また、上記例では各PE0〜15の保有す
るPE番号(0〜15)を固定としているが、これだと
休止するPEがある場合、稼動PEの番号が連続となら
ない。実行するプログラムが連続したPE番号を必要と
する場合は、PE番号を、稼動するPEに与えるデータ
の一変数の値とすることで連続したPE番号とすること
ができる。
【0199】第3の発明は仮想プロセッサの概念にも応
用できる。すなわち、16台並列のPE0〜15に問題
サイズが16以上のタスクを割り付ける場合を考える。
タスクの数が16の倍数の場合、各PE0〜15に均等
に割り付けることが出来る。例えば32のタスクを割り
付ける場合、各PE0〜15に2タスクずつ割り付けれ
ば、通常の仮想プロセッサの処理で何等問題ない。
【0200】すなわち各PE内部の2つのタスクを処理
するとき、それぞれのタスクを処理するために2つの状
態を示す状態保持手段を用い、タスク1とタスク2を各
々実行するとき上記状態を切り替えることにより、現在
どちらの処理を実行しているかを認識し、仮想プロセッ
サを実現し、16台で32のタスクを処理する。
【0201】しかし、例えばタスク数が26の場合、各
PE0〜15に均等に割り付けようとすると、タスクを
1個受け持つPEと、2個受け持つPEとができる。各
PEが受け持つ2つのタスクをタスク1とタスク2とす
ると、タスク1を実行する場合は16台のPEが一斉に
行えば良いが、タスク2を実行する際は10台のPEが
稼動となり、残り6台のPEが休止となる。
【0202】つまりタスク2を実行する際は、上記例で
の10個のタスクを実行する場合と同様の状態となる。
そのため、タスク1を実行する場合は16台全てが稼動
し、タスク2を実行する場合はバイパス回路を使用して
10台並列の計算機に切り替えて実行を行えば仮想マシ
ンとして26台並列の並列計算機として使用できる。バ
イパス回路の使用/非使用は、上記状態保持手段に、上
記識別回路42を連動することにより実現できる。すな
わちタスク1を処理する状態の時、識別回路42は全て
のPE0〜15が稼動であるとしてバイパス回路を用い
ず、タスク2を処理する状態の時、識別回路42は与え
られているPEの使用/非使用の情報からPEの稼動/
休止を決定し、バイパス回路の使用/非使用を決定す
る。
【0203】次に2次元格子トーラス結合の場合を示
す。基本的には1次元リング結合と同様であり、バイパ
スの方向が列方向と行方向の2方向になる。このため、
図11,12で示した双方向バッファ41あるいはセレ
クタ43も、列方向と行方向の2方向分必要となる。制
御の簡単化を考えると、1次元リング結合で1PEが休
止の対象となったのに対し、2次元格子トーラス結合で
は行あるいは列が休止の対象となる。
【0204】図13に8×8のアレイに問題サイズが6
×5の処理を割り付けた場合を示す。まず行方向に関し
ては、8行のPE列のうち、6行を稼動とする。各PE
を(X,Y)で表すとすると、1次元リング結合の場合
と同様に、局所的に休止PEを固めないようにすると、
PE(0,Y)、PE(1,Y)、PE(2,Y)、P
E(3,Y)、PE(4,Y)、PE(6,Y)の6行
がそれぞれ稼動となる(図中、丸印)。
【0205】列方向に関してはPE(X,0)、PE
(X,1)、PE(X,2)、PE(X,4)、PE
(X,6)の5列がそれぞれ稼動となる。休止となった
PE列のPE(5,Y)、PE(7,Y)(図中、×
印)は行方向のバイパスを行い、PE(X,3)、PE
(X,5)、PE(X,7)はそれぞれ列方向のバイパ
スを行う。
【0206】特に休止の行と列の交差にあるPE(3,
5)、PE(3,7)等は縦方向と横方向の双方をバイ
パスする。2次元格子トーラス結合において、仮想プロ
セッサを実現する際も、1次元リング結合で挙げた例と
同様にして行うことが出来る。
【0207】3次元格子トーラス結合の場合は、休止の
対象が2次元の行/列に対し、面が対象となる。
【0208】上記バイパス回路はPEと同一チップに納
めたときに有効となる。すなわち1方向に複数のチップ
をバイパスする場合、バイパス経路がチップ外にある場
合よりもはるかに高速にバイパスを行うことが出来る。
特に複数PE/chipの場合、さらにバイパスの高速
化を行うことが出来る。
【0209】次にメモリアクセスに関して説明する。例
としてまず16台並列の1次元リング結合の並列計算機
を挙げる。上記例で16台並列の1次元リング結合型計
算機で問題サイズ10の処理を行う場合を挙げたが、こ
の時上記並列計算機が分散メモリ型であり、各PE0〜
15がローカルメモリ(LM)を持つ場合、休止となっ
ているPEのローカルメモリも使用されないことにな
る。
【0210】例えば問題サイズは4だが、1つのタスク
が必要とするメモリ量が1PEの持つメモリの数倍の容
量を必要とする場合もある。通常この場合は1つのタス
クのデータを複数に分け、おおもとのデータ保持部から
随時転送する方法をとる。しかしこの場合、データを分
割したためにデータが分割されていることを意識したプ
ログラムが必要となる。
【0211】そこで、休止しているPEがある場合、同
PEのローカルメモリを、稼動しているPEが使用でき
るようにすることにより、1PEあたりのメモリ容量を
増やすことができる。
【0212】図14に16台並列1次元リング結合の並
列計算機の例を示す。同例で、上記バイパスに関する実
施例を条件とすると、本並列計算機は4台から16台ま
でのスケーラブル並列計算機となる。
【0213】今、問題サイズが8とすると、稼動するP
EはPE0,2,4,6,8,10,12,14の8台
となる。各PEが自PEの右側のローカルメモリ(L
M)44を切り換えスイッチ45で直接アクセス出来る
ようにすると、8台並列で、各PEのローカルメモリ4
4の容量が2倍となる。
【0214】問題サイズが5の場合は、稼動PEをPE
0,3,6,9,12とし、PE0はPE1,2のロー
カルメモリ44を、PE3はPE4,5のローカルメモ
リ44を使用することにより、3倍のメモリ容量とな
る。4台のPEが稼動の場合は4倍のメモリ容量とな
る。アクセスのためのアドレス空間は、キャッシュメモ
リで用いるようなバンク方式あるいはウィンドウ方式も
考えられるが、連続したアドレス空間として使用しても
良い。
【0215】ここで、どのPEを休止とし、どの稼動P
Eがどの休止PEのローカルメモリ44を使用できる用
にするかを決定することが問題となる。まず稼動PEを
PE0,1,2,3,4,5,6,7とし、PE8〜1
5を休止として、PE0がPE8のメモリを、PE7が
PE15のメモリを使用することにしても良いが、まず
稼動するPEは上記バイパスにおける制約条件もある
が、各PEが番号順に左から順に実装されている場合、
PE0からPE8への物理的距離が遠くなる。そのため
アクセス対象は実装時のモジュール間の距離を考慮して
決定すべきである。
【0216】上記例では、割り付けられるタスクの大き
さが均等の場合を念頭に述べたが、タスクの大きさすな
わち必要となるメモリ量が異なっても良い。すなわち今
6個のタスクがあり、それぞれ必要となるメモリ量が
4,2,3,4,1,2であった場合、稼動PEはPE
0,4,6,9,13,14となり、PE0はPE1,
2,3をPE4はPE5を、PE6はPE7,8を、P
E9はPE10,11,12を、PE14はPE15の
ローカルメモリ44をそれぞれ使用する。
【0217】このように、単純にタスクを左から割り付
けるとすると、タスクの大きさに適応するためには、前
述した通信時間の関係から、全てのPEが他の少なくと
も3つのPEにアクセスする経路を設けなければなら
ず、回路/配線の増大を招く。これを解消するため、例
えばPE0,4,8,12の各PEは自PEの右隣3P
Eへの経路をもち、他の偶数番号PEは隣のPEへの経
路を持つように限定し、大きさの異なるタスクの割り付
けはスケジューリングを行い対処する。すなわちPEを
グループ化する。
【0218】これは複数PEを1つのチップに載せた場
合にも有利となる。例えば、4PEを1つのチップに配
置し、上記切り換えスイッチ45などのアクセス回路も
チップ内に納める。これにより、アクセス回路の切り換
えによる速度低下を防ぐことが出来る。同一チップ上な
らば、多少の回路/配線が増加しても速度の低下は防ぐ
ことが出来る。そのため、同一チップに配置したPE内
では、全てのPEが他のPEのローカルメモリ44を使
用できるようにしても良い。こうすることにより、大き
さの異なるタスクへの対処の柔軟性は上がる。
【0219】次に2次元格子トーラス結合のメモリアク
セスの場合を示す。2次元の場合、休止の対象は行/列
である。そのため、アクセス回路も行方向と列方向に設
ける。上記1次元リング結合で、チップに載せることも
考慮して、PEをグルーピングしたが、2次元の場合で
も同様のことがいえる。
【0220】図15に2×2のグループを考える。PE
(0,0)は他のPEのローカルメモリ44が使用でき
る。PE(1,0)とPE(0,1)はPE(1,1)
のローカルメモリ44が使用できるようにする。これに
より列方向、行方向のスケーリングを利用してメモリ容
量の増加を行うことが出来る。また、PE(1,0)と
PE(0,1)は休止するため、バスパス回路46を設
けている。
【0221】3次元格子結合に関しても上記例と同様に
することにより、メモリ容量の増加を行うことが出来
る。
【0222】次にハイパーキューブでのメモリアクセス
について説明する。並列計算機の静的結合方式の1つで
あるハイパーキューブは、通信距離の半径が小さいなど
の利点が挙げられるが、スケーラビリティの点でも有利
である。すなわちハイパーキューブの次元を1つ下げる
には、余分な次元に対応する通信経路を使用しなければ
よく、特別な回路は必要ない。
【0223】例として4次元から3次元にする例を図1
6に示す。稼動するPEをPE0〜7とし、稼動しない
PEをPE8〜15とすると、容易に1次元下がったハ
イパーキューブ結合の並列計算機となる。今、PE8〜
15が休止であるので上記メモリアクセス路の例で述べ
たように、休止のPEのローカルメモリ44を、稼動す
るPEのメモリとして使用することが出来る。
【0224】すなわちPE8のローカルメモリ44をP
E0が使用し、PE9のローカルメモリ44をPE1が
使用する。通信経路0−8,1−9,2−10,3−1
1,4−12,5−13,6−14,7−15を使用し
ないので、メモリアクセス用バスとして上記通信経路を
使用しても良い。
【0225】次に複数PEを1つのチップに配置する場
合の配線について説明する。図17に2×2の4つのP
E47a,bを1つのチップ48に載せた場合の例を示
す。PE47のモジュールをチップ48内に配置する場
合、各PE間の通常の通信路の配線が場所を取る。そこ
で、アルミ等の配線層を複数化する近年のチップ製造技
術を用い、休止PE47aをバイパスする経路を休止P
E47aの上を通過するように配線する。これにより、
配線領域を縮小することが出来、余分な配線の引き回し
による遅延の増大を防ぐことが出来る。
【0226】同様に、休止PE47aのローカルメモリ
44へのアクセス経路もPE47aの上を通過するよう
に配線することにより、配線領域の縮小が行える。
【0227】第4の発明 図18は、第4の発明の並列計算機で用いられる演算プ
ロセッサの実施例である。
【0228】ルータ部51と演算処理部52から構成さ
れる。ルータ部51はフリットを蓄えるバッファ53x
〜53pと、フリットの出力先を決定するスイッチ54
から構成される。
【0229】Pin,Poutはルータ部51と演算処
理部52とを接続する通信チャネルである。Xin,X
out,Yin,Youtはそれぞれ隣接する演算プロ
セッサとの間の入力および出力のための通信チャネルで
ある。上記の演算プロセッサを用いて、例えば図19に
示すような並列計算機が構築される。各演算プロセッサ
55は、互いに通信チャネル56で接続される。
【0230】図20は本実施例で通信されるメッセージ
のフォーマットの一例である。一つのメッセージは複数
のフリットに分割される。先頭の二つのフリットは図2
0(a)のフォーマットをしており、図中addres
sで表されるメッセージの宛先が書かれている。左右方
向の宛先が書かれたフリットに上下方向の宛先が書かれ
たフリットが続く。各方向の宛先は送信側プロセッサと
受信側プロセッサとの間の相対距離で表される。
【0231】3つめのフリットからメッセージの本体と
なる。そのフォーマットは、図20(b)および(c)
に示すとおりである。フリットは図中dataで表され
るメッセージの格納されている部分と、図中右端のメッ
セージの継続あるいは終了を表す終了ビット(end
bit)からなる。メッセージが継続する場合は図20
(b)のフォーマットのようにent bitは0であ
り、メッセージが終了する場合は図3(c)のフォーマ
ットのようにend bitは1となる。
【0232】図21は本実施例のルータ部51で行われ
るルーティング方法である。まず左右方向の宛先が一致
するまで左右方向に隣接する演算プロセッサ間で通信を
行う(ステップ100,101)。続いて上下方向の宛
先が一致するまで上下方向に隣接する演算プロセッサ間
で通信を行う(ステップ102,103)。第4の発明
はこのルーティング方法に限定されず、いかなるアルゴ
リズムにも適応可能である。
【0233】図22はスイッチ54の内部構成例であ
る。図19における左右方向のスイッチ57と上下方向
のスイッチ58とからなる。左右方向のスイッチ57と
上下方向のスイッチ58は同じ構成で実現される。それ
を図23に示す。二つの出力先決定回路61と、二入力
二出力のクロスバスイッチ62から構成される。クロス
バスイッチ62には複数の方向から入力が与えられるの
で、これらが衝突する場合は調停が行われる。
【0234】図24は出力先決定回路61の構成例であ
る。入力されたフリットのaddress部が宛先比較
部63で比較される。内部状態保存部64に記憶されて
いる現在の状態stateで、先頭フリットか否かが判
定される。X方向あるいはY方向における宛先が自演算
プロセッサと同じメッセージであれば信号eqlを、そ
うでなければ信号neqを出力先決定部65に出力す
る。出力先決定部65では、これらの制御信号とフリッ
トのend bit,そして内部状態stateから出
力先制御信号を発生する。
【0235】ctl inは自プロセッサ(スイッチ5
8の場合)あるいは次のスイッチ58(スイッチ57の
場合)を、ctl outは隣接するプロセッサを出力
先に選択するための制御信号である。ctl in、c
tl outはいずれもクロスバスイッチ62に入力さ
れる。
【0236】出力先決定部65は次状態を決定し、内部
状態保存部64に記憶する。さらに出力先決定部65は
デクリメンタ66への制御信号ctl remove、
ctl decも発生する。ctl removeはメ
ッセージから先頭のフリットを取り除くための制御信号
で、ctl decはaddressを1減ずるための
信号である。
【0237】デクリメンタ66はこれらの制御信号にし
たがって、宛先が自演算プロセッサと同じ場合は先頭の
フリットを取り除き、そうでないときは先頭のフリット
に書かれたaddressを1減ずる。先頭フリットで
ない場合は、何も操作は行わないでフリットを通過させ
る。デクリメンタ66はまた、リクエスト信号reqを
発生する。
【0238】図25は内部状態保存部64の状態遷移の
様子を表している。初期状態S0にいる時にフリットを
受け取った場合には、このフリットは先頭であるので、
addressにしたがってS1あるいはS2に遷移す
る。addressが自演算プロセッサと同じ場合には
S1に遷移する。メッセージが続いている場合にはS1
あるいはS2の状態を継続し、end bitによりメ
ッセージの終了を検出すると初期状態S0に戻る。
【0239】第4の発明を用いた場合に、従来の問題が
解決することを図26を用いて説明する。図26におい
て、55a〜55eは演算プロセッサであり、それぞれ
バッファ53x,53y,53p、スイッチ54および
演算処理部52から構成される。
【0240】出力先の演算プロセッサ55bのバッファ
が一杯で通信が停止しているフリット67が演算プロセ
ッサ55aのバッファ53xに蓄えられているとする。
このとき演算プロセッサ55cから別のメッセージのフ
リット68が入力されるとする。
【0241】このメッセージの出力先が演算プロセッサ
55eとすると、演算プロセッサ55eのバッファに空
きがあれば、フリット68は出力されるべきである。フ
リット68はバッファ53yに入力されるので、バッフ
ァ53xには関係なく演算プロセッサ55eに出力する
ことができる。
【0242】すなわち、出力先の通信チャネルが空いて
さえいれば、通信の停止している他のメッセージに妨害
されることなく、出力可能である。したがって、並列計
算機全体としての通信時間が短縮し、スループットも向
上する。
【0243】従来例の場合では、先にバッファに蓄えら
れているフリットの通信が停止してしまうと、それ以降
にバッファに蓄えられたフリットは、たとえ出力先のチ
ャネルが空いていても出力されなかった。しかし第4の
発明では、受信されたフリットは、先に出力先を決定し
バッファに蓄えられる。したがって、ブロックされてい
る通信チャネルのメッセージだけが通信を停止し、他の
メッセージは通信を妨害されることはない。
【0244】本実施例では二次元のネットワークの場合
を説明したが、ルータ部51にスイッチ57を増設する
だけで高次元のネットワークに拡張可能である。たとえ
ば三次元の場合は図27のようにスイッチ39を増設す
ればよい。また通信ネットワークは、本実施例のような
トーラス構造に限らず、ハイパーキューブ構造など、他
のいかなる構造にも適応可能である。
【0245】さらに第4の発明は、ワームホール・ルー
ティングに限らず、ストア・アンド・フォワード・ルー
ティングなど、他のいかなる通信方式にも適応可能であ
る。
【0246】第5の発明 図28は第5の発明の並列計算機で用いられるプロセッ
サの構成図である。Xin、Xoutはそれぞれ隣接す
るプロセッサとの間の入力および出力チャネルである。
Pin、Poutはルータ部71と演算処理部72を接
続する通信チャネルである。ルータ部71はXin、P
inから受信したメッセージの転送先を決定し、Xou
tあるいはPoutに出力するものである。バイパスス
イッチ73は、第5の発明のために追加された構成であ
り、Xinからの入力をルータ部71をバイパスして、
直接Xoutに出力するブロックである。
【0247】図29は、図28のプロセッサで構成され
る並列計算機である。各プロセッサ74a〜74eが通
信チャネル75によって接続されている。図示していな
いが、リクエスト信号とアクノリッジ信号も接続されて
いる。
【0248】本実施例で通信されるメッセージのフォー
マットは、図20で示したものと同様である。
【0249】図30はルータ部71の内部構成例であ
る。プロセッサはXin方向のプロセッサからリクエス
ト信号を受けると、ラッチ76にフリットを受け取る。
このフリットがメッセージの先頭であれば、転送先決定
ブロック77で自プロセッサに取り込むか、バイパスす
るか、あるいは隣接するプロセッサに転送するかを決定
する。転送先決定ブロック77は同時に出力先へのリク
エスト信号を生成する。クロスバスイッチ78にはメッ
セージとリクエスト信号、そして転送先決定ブロック7
7からメッセージの出力先を示す信号が与えられる。こ
の信号は2方向から与えられるので、これらが衝突した
場合には調停を行って、メッセージとリクエスト信号を
出力先へスイッチする。その結果、フリットはバッファ
79に入れられる。同時に転送先決定ブロック77の発
したリクエスト信号は出力先のプロセッサに与えられ
る。
【0250】図31は転送先決定ブロック77を構成す
るブロック図である。入力されたフリットが、メッセー
ジの先頭である場合は宛先比較ブロック81で宛先を比
較する。先頭フリットであるか否かは、状態記憶ブロッ
ク82に記憶されている現在の状態stateで判定さ
れる。宛先はプロセッサ間の相対距離で表されるので、
宛先が0ならば自プロセッサ宛、0以外ならば他のプロ
セッサ宛である。
【0251】自プロセッサ宛ならば信号eqlを、他の
プロセッサ宛ならば信号neqを、出力先決定ブロック
83に出力する。出力先決定ブロック83はこれらの制
御信号と内部ステートにしたがって出力先制御信号を発
生する。
【0252】ctl bypassはバイパスするため
の制御信号で、ctl out1、ctl out2は
それぞれ、バイパスしない場合の出力先としてXou
t、Poutを選択するための制御信号である。
【0253】ctl bypassは第5の発明におい
て特徴となる制御信号であり、バイパススイッチ73に
入力されて、バイパス動作を行う。ctl out1、
ctl out2はいずれもクロスバスイッチ78に入
力されて、出力先を要求する。また出力先決定ブロック
83は次の状態next stateを決定し、状態記
憶ブロック82に記憶する。さらに出力先決定ブロック
83はデクリメンタ124に対する制御信号ctl
emove、ctl decも発生する。
【0254】crl removeは、デクリメンタ8
4に入力される宛先を取り除くための制御信号で、ct
decは宛先を1減ずるため制御信号である。デク
リメンタ84はこれらの制御信号にしたがって、宛先が
自プロセッサであるときには宛先を取り除き、そうでな
いときには宛先を1減ずる。先頭フリットでない場合
は、何もしないでフリットを通過させる。デクリメンタ
84はまたリクエスト信号reqを発生する。
【0255】図32は状態記憶ブロック82の状態遷移
を表す図である。初期状態S0のときにフリットを受け
取ると、このフリットはメッセージの先頭であるので、
宛先にしたがってS1、S2あるいはS3に状態を遷移
する。例えば、メッセージをバイパスする場合はS1
に、Xoutに出力する場合はS2に、Poutに出力
する場合はS3に遷移する。
【0256】メッセージが続いている間はS1〜S3の
状態に留まり、end bitによりメッセージの終了
を検出すると初期状態S0に戻る。S1からS0に状態
が遷移するとバイパスは解除される。すなわちバイパス
している状態でも、メッセージはルータ部71に取り込
まれている。ただし、取り込まれるメッセージは終了を
検出する目的だけに用いられ、中継されたりはしない。
【0257】第5の発明のバイパス動作を以下に説明す
る。図33は図28で示したプロセッサを用いて構成し
た並列計算機である。85aから85eはメッセージを
通信するためのチャネル(図中、data)、86aか
ら86eはリクエスト信号、87aから87eはアクノ
リッジ信号である。本実施例ではメッセージは単方向に
通信されるが、双方向通信の場合も本質的な違いはな
い。各プロセッサは図33(a)に示すように隣接する
プロセッサ74とチャネルおよび信号で接続される。
【0258】本実施例で、プロセッサ74aからプロセ
ッサ74eに中継プロセッサを全てバイパスしてメッセ
ージを送信する場合を説明する。プロセッサ74aはプ
ロセッサ74bへリクエスト信号86aを発し、宛先を
持ったフリットを74bに送信する。プロセッサ74b
はリクエスト信号を受け取るとフリットを受信し、フリ
ットに書かれている宛先を読みだす。
【0259】プロセッサ74bは宛先ではないので、次
の転送先プロセッサ74cを選択する。同時にプロセッ
サ74bは通信チャネル85aと85b、リクエスト信
号86aと86b、およびアクノリッジ信号87aと8
7bをバイパスする。リクエスト信号86aと86bが
バイパスされることにより、プロセッサ74cにリクエ
スト信号が要求されることになる。
【0260】同様な操作がプロセッサ74c及びプロセ
ッサ74dで実行され、図33(b)のように経路が確
定される。プロセッサ74eはリクエスト信号を受ける
と、フリットを受信して宛先を読む。プロセッサ74e
は受信側プロセッサであるので、プロセッサ74dに対
してアクノリッジ信号を返す。このときプロセッサ74
bからプロセッサ74dの内部でアクノリッジ信号87
aから87dはバイパスされているので、図33(c)
のようにアクノリッジ信号は直ちにプロセッサ74aに
到達する。
【0261】こうしてプロセッサ74aとプロセッサ7
4eとの間のハンドシェイクが完成し、メッセージを転
送する経路が確立される。以後は図33(d)のように
プロセッサ74aとプロセッサ74eの間で2つめ以降
のフリットの通信が行われる。この間プロセッサ74b
〜74dは、終了検出を行うためにバイパスしているフ
リットを監視しつづける。そしてメッセージの終了を検
出すると初期状態に戻る。
【0262】この方法を用いた場合に転送に必要な時間
は、経路を確立するためのリクエスト信号の伝達にD、
アクノリッジ信号の伝達に1、経路確立後のメッセージ
の送信に2×(L−1)必要で、全体で(D+2×L−
1)となる。このようにプロセッサ間の通信時間が短縮
される。D=4、L=4の場合のタイミング図を図34
に示す。
【0263】以上はプロセッサ間でのメッセージの通信
をハンドシェイクで行った場合であるが、さらに通信を
高速にするために、図33(b),(c)の処理によっ
て経路を確立せさたのち、図33(e)のようにプロセ
ッサ74aとプロセッサ74eをクロック同期させて通
信を行う方法が考えられる。この場合、メッセージの送
信に必要な時間は(L−1)となって、全体では(D+
L)となる。これは従来のワームホール・ルーティング
のほぼ1/2の時間で、プロセッサ間の通信にかかる時
間は大いに短縮される。D=4、L=4の場合のタイミ
ング図を図35に示す。
【0264】同期通信の場合は、プロセッサ間の距離が
非常に大きいと、1クロックではフリットが到達できな
い可能性がある。このような場合を考慮して、通信を行
っているプロセッサの間に存在するプロセッサの一部で
メッセージを中継することを考える。すなわち、上述し
た実施例では、自プロセッサ宛でないメッセージは全て
バイパスしていたが、転送先への距離に応じてバイパス
と中継を分けるように、宛先比較ブロック81および出
力先決定クロック83を変更する。
【0265】本実施例を用いて、例えば1クロックで到
達可能な距離を8とした場合を考える。先頭のフリット
に書かれているデータは、受信側プロセッサまでの相対
距離であるので、この宛先が8の倍数であるときには中
継し、そうでないときにはバイパスするように、宛先比
較ブロック81と出力先決定ブロック83を変更する。
【0266】こうして1クロックで到達できる距離毎に
中継プロセッサが選択される。このような変更で、非常
に規模の大きなネットワークでも、従来例よりも高速に
プロセッサ間通信を行うことができる。
【0267】なお、本実施例では一次元の場合を説明し
たが、第5の発明は一次元に限らず、容易に多次元に拡
張可能である。図36は二次元の場合のプロセッサ構成
図である。Xin、Yin、Pinからの入力を、Xo
ut、Yout、Poutに出力する。バイパススイッ
チ88はバイパススイッチ73に比べてバイパスする信
号が一つ増えたブロックである。
【0268】このように次元を拡張するには、次元数N
分だけルータ部71とバイパススイッチ73を用意す
る。これで各次元でバイパスが可能になるが、異なる次
元間でもバイパス可能にするためには、バイパススイッ
チ88のように他の次元からのバイパスも選択できるよ
うに、スイッチの入力を増やす。
【0269】
【発明の効果】以上のように、第1の発明の並列計算機
は、並列度がプロセッサの数よりも大きい場合は通常の
SIMD型並列計算機と同様に実行することができ、並
列度がプロセッサの数よりも少ない場合には、複数命令
の並列実行を行なうことにより、実行時間の短縮とプロ
セッサの有効利用を図ることができる。また、通常のS
IMD型並列計算機とオブジェクト互換をもつようにす
ることが可能である。
【0270】また、第2の発明の並列計算機によれば、
SIMD型並列計算機にわずかなハードウェアを付加す
るだけで、MIMD処理が可能になり、より柔軟性の高
い処理が可能になる。
【0271】第3の発明の並列計算機によれば、処理す
る問題サイズに応じて使用しないPEをバイパスする事
により、結合形態を維持したまま、問題サイズに最適な
構成を取ることが出来る。使用しないPEのメモリを、
使用するPEがアクセスできるようにすることにより、
各PEのメモリ容量を増やすことが出来る。
【0272】さらに、同一チップ内において、バイパス
経路、メモリアクセス経路をPEの上を通過するように
配線することにより、配線領域の縮小、遅延増大の防止
を行うことが出来る。
【0273】第4の発明の並列計算機によれば、フリッ
トは出力先毎に出力側のバッファに蓄えられるので、通
信可能なメッセージは、通信が停止している他のメッセ
ージによって妨害されることはない。その結果、通信時
間が短縮され、スループットが向上する。
【0274】さらに、第5の発明の並列計算機によれ
ば、中継プロセッサをバイパスすることにより、通信に
必要な時間を大いに短縮することができる。このため、
特にネットワークの規模が非常に大きくプロセッサ間の
距離が大きな場合に有効である。
【図面の簡単な説明】
【図1】第1の発明における並列計算機の一実施例の構
成図。
【図2】第1の発明における実施例で用いた処理の一
例。
【図3】並列度が大きい場合の図2の処理を行なうため
に供給される命令列。
【図4】並列度が小さい場合の図2の処理を行なうため
に供給される命令列。
【図5】第1の発明の図1と異なる実施例の構成図。
【図6】第2の発明の並列計算機に係わる一実施例の構
成を示すブロック図。
【図7】第2の発明の中心となる演算プロセッサの構成
例を示す図。
【図8】図7で示したローカルメモリ中に作成されるア
ドレステーブルのメモリマップ図。
【図9】図7と異なる演算プロセッサの構成例を示す
図。
【図10】第3の発明における1次元リング結合並列計
算機のバイパスに関する一例の構成図。
【図11】第3の発明においてバイパス回路として用い
た双方向バスの詳解図。
【図12】第3の発明においてバイパス回路として用い
たハンドシェイク用信号線の詳解図。
【図13】第3の発明における2次元トーラス結合並列
計算機のバイパスに関する一例の構成図。
【図14】第3の発明における1次元リング結合並列計
算機のメモリアクセスに関する一例の構成図。
【図15】第3の発明における2次元トーラス結合並列
計算機のバイパス及びメモリアクセスに関する一例の構
成図。
【図16】第3の発明におけるハイパーキューブ結合並
列計算機のメモリアクセスに関する一例の構成図。
【図17】第3の発明におけるバイパス経路及びアクセ
ス経路のチップ上での配線例。
【図18】第4の発明における演算プロセッサの一実施
例を表す構成図。
【図19】図18で示した演算プロセッサで構成される
並列計算機の構成図。
【図20】第4の発明において通信されるメッセージの
フォーマット例。
【図21】第4の発明におけるルーティング方法を表す
フローチャート。
【図22】図18で示したスイッチの内部構成図。
【図23】図22で示した一方向のスイッチの内部構成
図。
【図24】図23で示した出力先決定回路の内部構成
図。
【図25】図23で示した出力先決定回路の状態遷移
図。
【図26】図18で示した演算プロセッサを用いた通信
方法を表す図。
【図27】第4の発明における3次元ネットワークの場
合の一実施例を示す構成図。
【図28】第5の発明におけるプロセッサの一実施例の
構成を示す構成図。
【図29】図28で示したプロセッサを用いた並列計算
機の構成図。
【図30】図28で示したルータ部の一例を示す図。
【図31】図30で示した転送先決定ブロックの構成
図。
【図32】図30で示した転送先決定ブロックの状態遷
移図。
【図33】第5の発明におけるバイパス動作を表す図。
【図34】第5の発明におけるバイパス動作時の転送時
間を表すタイミング図。
【図35】第5の発明におけるクロック同期による転送
時間を表すタイミング図。
【図36】第5の発明における2次元の場合のプロセッ
サ構成図。
【図37】第2の発明に対する従来の演算プロセッサの
構成を示す図。
【図38】第4の発明に対する従来の演算プロセッサの
構成図。
【図39】図38で示した演算プロセッサを用いた従来
の通信方法を表す図。
【図40】第5の発明に対する従来のプロセッサ構成
図。
【図41】第5の発明に対する従来のバイパス動作時の
転送時間を表すタイミング図。
【図42】第5の発明に対する従来のクロック同期によ
る転送時間を表すタイミング図。
【符号の説明】
1 プロセッサ 2 プロセッサアレイ制御装置 3 セレクタ OUT0,1 出力端子 11 制御プロセッサ 12 演算プロセッサ 13 全体メモリ 14 ローカルメモリ 15 グローバルバス 16 ネットワーク 17 同期バス 18 フロントエンド計算機 21 メモリアドレスバス 22 メモリデータバス 23 マルチプレクサ 24 命令レジスタ 25 プログラムカウンタ 26 アドレスレジスタ 27 データレジスタ 28 内部バス 29 ALU 30 レジスタファイル 31 状態制御レジスタ 32 プロセッサ番号レジスタ 33 通信制御部 41 双方向バッファ 42 識別回路 43 セレクタ 44 ローカルメモリ 45 切り換えスイッチ 46 バスパス回路 47 PE(演算要素) 48 チップ 51 実施例のルータ部 52 演算処理部 53x,53y,53p バッファ 54 スイッチ 55a〜55e 演算プロセッサ 56 通信チャネル 57,58,69 一方向のスイッチ 61 出力先決定回路 62 クロスバスイッチ 63 出力先選択部 64 内部状態保存部 65 出力先決定部 66 デクリメンタ 71 ルータ部 72 演算処理部 73,88 バイパススイッチ 74a〜74e プロセッサ 75,85a〜85e 通信チャネル 76 ラッチ 77 転送先決定ブロック 78 クロスバスイッチ 79 バッファ 81 宛先比較ブロック 82 状態記憶ブロック 83 出力先決定ブロック 84 デクリメンタ 86a〜86e リクエスト信号 87a〜87e アクノリッジ信号
───────────────────────────────────────────────────── フロントページの続き (72)発明者 高橋 真史 神奈川県川崎市幸区小向東芝町1 株式会 社東芝総合研究所内

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数個のプロセッサからなるプロセッサ
    アレイと、 このプロセッサアレイを制御すると共に、並列実行可能
    な複数種類の命令列を前記プロセッサアレイに供給する
    プロセッサアレイ制御手段とを備え、 前記プロセッサアレイ制御手段から供給される複数種類
    の命令列の中の1種類ずつを各プロセッサが受け取り、
    前記複数種類の命令列を前記複数個のプロセッサで並列
    実行することを特徴とする並列計算機。
  2. 【請求項2】 単一の制御プロセッサと、 該制御プロセッサからアクセス可能な第1のメモリと、 制御プロセッサから転送される命令情報にしたがって、
    処理を行う複数個の演算プロセッサと、 該演算プロセッサからアクセス可能な第2のメモリとか
    ら構成され、 さらに前記演算プロセッサには、 演算プロセッサでの実行を制御する命令情報の格納手段
    と、 該格納手段に、前記制御プロセッサからの命令情報を入
    力するか、第2のメモリに格納されている命令情報を格
    納するかを選択する手段と、 前記格納手段に格納されている命令情報にしたがって演
    算を実行する手段とを備えることを特徴とする並列計算
    機。
  3. 【請求項3】 個々の通信経路で接続されている複数の
    演算要素と、 解く問題のサイズに応じて演算に使用する演算要素と使
    用しない演算要素とを識別する識別手段と、 この識別手段によって識別された、演算に使用しない演
    算要素をバイパスするバイパス手段とを備えることを特
    徴とする並列計算機。
  4. 【請求項4】 個々の通信経路で接続されている複数の
    演算要素と、 各々の演算要素と個々に結合しているローカルメモリ
    と、 解く問題のサイズに応じて演算に使用する演算要素と使
    用しない演算要素とを識別する識別手段と、 この識別手段によって識別された、演算に使用しない演
    算要素と結合しているローカルメモリを、演算に使用す
    る演算要素から直接アクセス可能にするアクセス手段と
    を備えることを特徴とする並列計算機。
  5. 【請求項5】 複数のプロセッサがN次元ネットワーク
    で相互接続され、 各プロセッサが、 隣接するプロセッサからメッセージを受信し、出力先を
    決定する出力先決定手段と、 出力先ごとに設けられ、前記出力先決定手段によって出
    力先が決定されたメッセージを受信した順に蓄える蓄積
    手段と、 蓄積されたメッセージを、決定された出力先のプロセッ
    サに出力する出力手段とを備えたことを特徴とする並列
    計算機。
JP4221592A 1992-08-20 1992-08-20 並列計算機 Pending JPH0668053A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4221592A JPH0668053A (ja) 1992-08-20 1992-08-20 並列計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4221592A JPH0668053A (ja) 1992-08-20 1992-08-20 並列計算機

Publications (1)

Publication Number Publication Date
JPH0668053A true JPH0668053A (ja) 1994-03-11

Family

ID=16769176

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4221592A Pending JPH0668053A (ja) 1992-08-20 1992-08-20 並列計算機

Country Status (1)

Country Link
JP (1) JPH0668053A (ja)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099350A (ja) * 2000-09-21 2002-04-05 Cybernetics Technology Co Ltd 結合型コンピュータ
JP2002541586A (ja) * 1999-04-09 2002-12-03 クリアスピード・テクノロジー・リミテッド 並列データ処理装置
WO2006049331A1 (ja) * 2004-11-05 2006-05-11 Nec Corporation Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
WO2008023576A1 (en) * 2006-08-23 2008-02-28 Nec Corporation Processing element, mixed mode parallel processor system, processing element method, mixed mode parallel processor method, processing element program, and mixed mode parallel processor program
US7383421B2 (en) 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
JP2009048637A (ja) * 2007-08-15 2009-03-05 Nvidia Corp グラフィックスプロセッサユニットパイプラインにおける読み出し及び書き込み可能な共有のグローバル値
JP2010520519A (ja) * 2007-03-06 2010-06-10 日本電気株式会社 自律または共通制御されるpeアレイを有するシステムのためのデータ転送ネットワークおよび制御装置
WO2010122746A1 (ja) * 2009-04-22 2010-10-28 パナソニック株式会社 情報処理装置
JP2011086158A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp 並列信号処理装置
JP2011514016A (ja) * 2008-03-03 2011-04-28 日本電気株式会社 パイプラインリングバスに接続された異なる帯域幅のプロセシングユニットを有するプロセッサのアーキテクチャにおけるプロセシングユニット間の高速なデータ交換のための制御装置
JP2011145759A (ja) * 2010-01-12 2011-07-28 Mitsubishi Electric Corp 並列信号処理プロセッサ
JP2012003594A (ja) * 2010-06-18 2012-01-05 Toyota Motor Corp 並列計算機
JP2012252374A (ja) * 2011-05-31 2012-12-20 Renesas Electronics Corp 情報処理装置
JP5708634B2 (ja) * 2010-02-24 2015-04-30 日本電気株式会社 Simdプロセッサ
WO2015136686A1 (ja) * 2014-03-14 2015-09-17 株式会社日立製作所 情報処理装置及び方法
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
JP2023068964A (ja) * 2021-11-04 2023-05-18 マツダ株式会社 グリッドコンピューティングシステム

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011023037A (ja) * 1999-04-09 2011-02-03 Rambus Inc 並列データ処理装置
JP2002541586A (ja) * 1999-04-09 2002-12-03 クリアスピード・テクノロジー・リミテッド 並列データ処理装置
JP2011023036A (ja) * 1999-04-09 2011-02-03 Rambus Inc 並列データ処理装置
JP2002099350A (ja) * 2000-09-21 2002-04-05 Cybernetics Technology Co Ltd 結合型コンピュータ
US7383421B2 (en) 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
WO2006049331A1 (ja) * 2004-11-05 2006-05-11 Nec Corporation Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
JP5240424B2 (ja) * 2004-11-05 2013-07-17 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
JPWO2006049331A1 (ja) * 2004-11-05 2008-05-29 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
US8112613B2 (en) 2006-08-23 2012-02-07 Nec Corporation Selecting broadcast SIMD instruction or cached MIMD instruction stored in local memory of one of plurality of processing elements for all elements in each unit
US8051273B2 (en) 2006-08-23 2011-11-01 Nec Corporation Supplying instruction stored in local memory configured as cache to peer processing elements in MIMD processing units
US7853775B2 (en) 2006-08-23 2010-12-14 Nec Corporation Processing elements grouped in MIMD sets each operating in SIMD mode by controlling memory portion as instruction cache and GPR portion as tag
WO2008023576A1 (en) * 2006-08-23 2008-02-28 Nec Corporation Processing element, mixed mode parallel processor system, processing element method, mixed mode parallel processor method, processing element program, and mixed mode parallel processor program
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
JP2010520519A (ja) * 2007-03-06 2010-06-10 日本電気株式会社 自律または共通制御されるpeアレイを有するシステムのためのデータ転送ネットワークおよび制御装置
JP2009048637A (ja) * 2007-08-15 2009-03-05 Nvidia Corp グラフィックスプロセッサユニットパイプラインにおける読み出し及び書き込み可能な共有のグローバル値
JP2011514016A (ja) * 2008-03-03 2011-04-28 日本電気株式会社 パイプラインリングバスに接続された異なる帯域幅のプロセシングユニットを有するプロセッサのアーキテクチャにおけるプロセシングユニット間の高速なデータ交換のための制御装置
US8683106B2 (en) 2008-03-03 2014-03-25 Nec Corporation Control apparatus for fast inter processing unit data exchange in an architecture with processing units of different bandwidth connection to a pipelined ring bus
JP5379223B2 (ja) * 2009-04-22 2013-12-25 パナソニック株式会社 情報処理装置
WO2010122746A1 (ja) * 2009-04-22 2010-10-28 パナソニック株式会社 情報処理装置
US8719551B2 (en) 2009-04-22 2014-05-06 Panasonic Corporation Processor with arbiter sending simultaneously requested instructions from processing elements in SIMD / MIMD modes
JP2011086158A (ja) * 2009-10-16 2011-04-28 Mitsubishi Electric Corp 並列信号処理装置
JP2011145759A (ja) * 2010-01-12 2011-07-28 Mitsubishi Electric Corp 並列信号処理プロセッサ
JP5708634B2 (ja) * 2010-02-24 2015-04-30 日本電気株式会社 Simdプロセッサ
JP2012003594A (ja) * 2010-06-18 2012-01-05 Toyota Motor Corp 並列計算機
JP2012252374A (ja) * 2011-05-31 2012-12-20 Renesas Electronics Corp 情報処理装置
WO2015136686A1 (ja) * 2014-03-14 2015-09-17 株式会社日立製作所 情報処理装置及び方法
JP2023068964A (ja) * 2021-11-04 2023-05-18 マツダ株式会社 グリッドコンピューティングシステム

Similar Documents

Publication Publication Date Title
US10282338B1 (en) Configuring routing in mesh networks
US8050256B1 (en) Configuring routing in mesh networks
JPH0668053A (ja) 並列計算機
US8151088B1 (en) Configuring routing in mesh networks
US4837676A (en) MIMD instruction flow computer architecture
US5581767A (en) Bus structure for multiprocessor system having separated processor section and control/memory section
US6363453B1 (en) Parallel processor with redundancy of processor pairs
US5675736A (en) Multi-node network with internode switching performed within processor nodes, each node separately processing data and control messages
JP2501419B2 (ja) 多重プロセッサメモリシステム及びメモリ参照競合解決方法
US7802025B2 (en) DMA engine for repeating communication patterns
JPH0922404A (ja) 同報通信プロセッサ命令を備えたアレイ・プロセッサ通信アーキテクチャ
TWI666551B (zh) 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
JPH04348451A (ja) 並列計算機
JPH06509671A (ja) 並列構造を有するプロセッサボードのシステムアーキテクチャ
JPH08506198A (ja) 多重パイプライン多重プロセッサシステム
JPH05508495A (ja) 多重プロセッサ用大域レジスタ
KR100719872B1 (ko) 병렬 컴퓨터 및 이를 이용한 정보처리유닛
JP2568452B2 (ja) データフロー型情報処理装置
US11704270B2 (en) Networked computer with multiple embedded rings
EP0199757B1 (en) Instruction flow computer
KR102801506B1 (ko) 토로이드 컴퓨터 네트워크 상의 내포된 링들
US20230305991A1 (en) Network Computer with Two Embedded Rings
JP2549241B2 (ja) コンピュータ・システム
JP2005285042A (ja) データ一括転送方法および装置
Haagens A bus structure for multi-microprocessing.