JPS6155706B2 - - Google Patents
Info
- Publication number
- JPS6155706B2 JPS6155706B2 JP9292779A JP9292779A JPS6155706B2 JP S6155706 B2 JPS6155706 B2 JP S6155706B2 JP 9292779 A JP9292779 A JP 9292779A JP 9292779 A JP9292779 A JP 9292779A JP S6155706 B2 JPS6155706 B2 JP S6155706B2
- Authority
- JP
- Japan
- Prior art keywords
- calculation
- fifo
- memory
- data
- time
- 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.)
- Expired
Links
- 230000015654 memory Effects 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 39
- 238000012546 transfer Methods 0.000 claims description 27
- 238000004364 calculation method Methods 0.000 description 100
- 238000000034 method Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008030 elimination Effects 0.000 description 5
- 238000003379 elimination reaction Methods 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 239000012530 fluid Substances 0.000 description 2
- 229940050561 matrix product Drugs 0.000 description 2
- 241000053227 Themus Species 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Complex Calculations (AREA)
- Multi Processors (AREA)
Description
本発明は、高速計算のための並列処理計算機で
あつて、簡単な構成で数多くのプロセツサの組み
込みが可能で、しかも高能率なMIMD形の複合計
算機に関するものである。 従来、偏微分方程式のイクスプリシツト差分解
法に典型的に見られる様に、すべての格子点での
計算手順が同一である場合を想定し、各格子点毎
あるいは隣接する幾つかの格子点を集めたブロツ
ク毎の処理を1台づつのプロセツサに担わせると
いう構想に基くマルチコンピユーターあるいはマ
ルチプロセツサが幾つか知られている。そのう
ち、制御装置の一元的管理の下ですべてのプロセ
ツサが完全に同期して同じステツプ数のマイクロ
命令を実行するという2次元アレイプロセツサタ
イプのSIMD形計算機(ILLIACなど)ではか
なり限られた計算法に対して偉力を発揮するがそ
の他の計算法に対しては、離れたプロセツサ間の
データー転送や、それの一元的管理の面で不都合
な接続構成になつていて、あまり能率がよくな
い。次に、すべてのプロセツサ間のデーター転送
が直接的に行える様にするため共有メモリーと共
通バスを設ける方法も幾つか提案され、バス競合
やメモリー競合を時分割バスシステム、クロスバ
ススイツチシステムあるいは多ポートメモリーシ
ステムの形で処理しているが、それぞれ、バスコ
ントロールが複雑で能率が下つたり、ハードウエ
ア量が莫大になつたり、メモリーが高価となる欠
点を持つている。さらに、メモリー競合を避ける
ため、共有メモリー相当分を各プロセツサの私有
メモリー部分に設け、メモリーの更新はブロード
キヤステイング機能によつて行い、計算処理は各
プロセツサが独自で行うというSIMDとMIMDの
混合形計算機(天気予報用のSMS201など)もあ
るが、やはり用途が極く限られてしまう。 本発明は、一つに利用者側からみたとき偏微分
方程式の数値解法におけるADI法や分割作用素法
なども容易に使えるようにするためには一次元配
列構成のプロセツサ群の1台づつのプロセツサが
格子点の各一次元配列の計算を担う方が能率がよ
いこと、また行列演算やFFT計算でも、一次元
配列構成が無駄のない妥当なものであるとの知見
からなされた。もう一つはアーキテクチヤにおい
て、任意のプロセツサ間の直接的なデーター転送
が可能であるようにするために、クロスバタイプ
のネツトワークになるが、そのハードウエア量を
極力小さくするために一元的管理方式でなく、独
自で転送機能をもつバツフアメモリーを介するこ
と、そしてプロセツサ側でも能率向上化のために
DMAチヤネルを設けるという考えに基いてなさ
れた。 本発明の複合計算機では、それぞれが私有メモ
リーを有する1台の主プロセツサと複数N台の従
プロセツサからなる階層的アーキテクチアをとる
構成において並行処理の途中のデーターを従プロ
セツサ間で送受することのためにN行N列の2次
元配列のバツフアメモリーを設け、プロセツサ側
に具えるDMAチヤネルに接続する形をとる。 図面によつて本発明計算機の基本的なバス接続
方法を説明する。第1図及び第1A図は、その基
本形及び機能モデルを示すものであり、主プロセ
ツサをMU、従プロセツサをAU−j(j=0、
1、………、N−1)そして好ましくはFIFO型
のバツフアメモリーをBM−(i、j)(i、j=
0、1、………、N−1)と記す。第1図におい
てMUのデーターバスは、すべてのBM−(i、
j)(i、j=0、1、………、N−1)につな
がり、各AU−jのデーターバスはj行目のBM
−(i、j)(i=0、1………、N−1)および
j列目のBM−(j、k)(k=0、1、………、
N−1)につながつている。 また、BMとしてFIFOを用いる場合には、好
ましい使用例としてこれらすべてのFIFOには出
力側から入力側へ戻す循環用データーバスも具え
られている。各BM−(i、j)でみるとき、第
2図に示されている様に、入力側にはAU−iお
よびAU−jからの2種のデーターバスがそれぞ
れゲートを通してつながり、出力側は、それぞれ
別のゲートを通して、入力側に入つたと同じデー
ターバスに接続されている。ただし、第2図の実
施例においては、MUとAUとのデータのやりと
りもBMを通して行う場合のためのバス、及び
BMとしてFIFOを用いるときの循環用データバ
スも付加してある。循環用データーバスはMUへ
のデーターバスが使用されるのと同時に使用され
るようになつている。そして、循環させる必要が
ないとき、そのバスは切れる様になつている。こ
の循環用バスは逐次計算過程で途中結果をMUに
送つたとき、それと同じデーターが引き続き、
AUでの計算に利用されるような場合にFIFOに
残しておくのが都合よいときに用いられる。 上記のようなパスビルデイングを持つた並列計
算機では、明らかに、MUと任意のAUの間およ
び任意のAU同志の間で直接的なデーター転送が
可能であるから汎用性が著しく拡がる。そのう
え、任意のAU同志間でデーターの相互変換が同
時にできて能率がよい。AU−iとAU−jの間
でデーター交換を行う場合に、AU−iがBM−
(i、j)にデーターを送り、つづいてBM−
(j、i)からデーターを受けとる動作と、AU
−jがBM−(j、i)にデーターを送り、つづ
いてBM−(i、j)からデーターを受けとる動
作が全く並行して行われる。さらに大事な点は、
互いに相手側のプロセツサの進行状況を直接に関
知することなく、間に立つBMにデーターが現れ
ることだけをみていればよい。しかも、そのデー
ターの出現を指示するOUTPUT READY信号を
DMAコントローラが受信する様にしてあるの
で、プロセツサとしてはそのデーターが実際に必
要になるまで他の計算を進めておればよく、非同
期式の利点がよく生かされている。 また、一元的管理方式を排した非同期式である
ために、本来、信号線の数が少くてよいととも
に、共通バスをもたないクロスバタイプのパスビ
ルデイングであるにも拘らず、各BMに外から接
続されるデーターバスはたかだか3種類だけであ
るために、ハードウエア量が比較的に少くてよい
点はプロセツサの台数を増すことに大きく道を拓
くものである。 つぎに、本計算機の並列処理動作の理解を容易
にするため、並列プログラムとその処理の概要を
説明する。この場合、取扱うべき2次元配列デー
タは、それらの格子点座標を(I、J)としたと
き(ただし、I、J=1、2、3………N−1、
N)、文字Uで代表させ、通常はU(I、J)と
して表現されるべき変数である。 第1A図は、第1図に示した従プロセツサ群
AU−0、………AU−(N−1)が、バツフア−
マトリクス〔BM−(i、j)〕を介しての接続構
造により、各バツフアーメモリーBMを前記各格
子点(I、J)に対応させた場合に格子点の各行
(J)を受けもつAU−縦列(実線円の列)と、
格子点の各列(I)を受けもつAU横列(破線円
の横列)として見られるという機能モデルを示し
たものである。ただし、従プロセツサAU及びバ
ツフアーメモリーBMにおける番号又は座標を表
わすi及びjは0からN−1までの整数であり、
格子点座標のI及びJは前記の通り、1からNま
での整数であるため、それぞれ、i=I−1、及
びj=J−1となることに留意すべきである。し
たがつて、2次元配列変数は各格子点(I、J)
について、縦列中のJ(=j+1)番目の従プロ
セツサAUにより、行位置(I=1、2………
N)データを扱うことを意味した U(I、/J/) 及び、横列中のI(=i+1)番目の従プロセツ
サAUによりJ列のデータを扱うことを意味する U(/I/、J) として表わされる。これにより、並列演算はいず
れかの行位置中の全格子点、及びいずれかの列位
置中の全格子点について、各一つの従プロセツサ
により実行される。並列処理プログラムは、例え
ば次の通りである。 PDO 10 J=1、N DO 20 I=1、N 20U(/I/、J)=U(I+1、/J/) +U(I−1、/J/) 10 CONTINUE、 ここに、PDOは、PARALLELDO文を示し、
ラベル番号10までの実行文をインデツクスJの動
く範囲に相当するAU−j(j=J−1)の組が
各行位置について並列処理することを指示する。
インデツクスIについてのDO文は指示された従
プロセツサが共通に行う標準的処理である。な
お、上記PDO文中に現れる式の右辺の配列変数
はすべてU(※、/J/)の形のものに限る(た
だし、列位置にあればU(/I/、※)の形とな
る)。これは明快な並列動作を指示するための制
約である。また、左辺には列位置用のU(/
I/、J)が出ているが、このとき、代入用の
“=”操作の中にバツフアメモリを介したデータ
転送が含まれるのである。 上記の代入文では、第1A図の縦列(実線)位
置にあるすべての従プロセツサは、ラベル番号20
の式の右辺の計算結果が出るだびに各従プロセツ
サが対応する行位置のバツフアメモリ(i、j)
群(i=0、1、………、N−1)に書き入れて
いく。指定された縦プロセツサによる上記のよう
なバツフアメモリへの書き込みが済めば、同じく
第1A図の横列(破線図示)位置から見てすべて
の縦プロセツサがそれぞれにつながるバツフアメ
モリの内容を集め、これによつて{U(/I/、
J)}を得るものである。かくして、第1A図の
列位置において、例えば次のようなプログラムに
移ることができる。 PDO 30 I=1、N DO 40 J=1、N 40U(/I/、J)=U(/I/、J+1) +U(/I/、J−1) 30 CONTINUE この例では代入文が転送をともなわないものに
なつている。 本発明の並列処理動作は上記のとおりであり、
以下、本発明の装置構成の実施例につき詳細に説
明する。 実施例 本発明の効果を確認するための試作例を掲げ
る。この実施例では、市販のマイクロコンピユー
タの中で、本発明の試作実施に都合がよいと判断
した8ビツトマイクロプロセツサF8(米フエア
チヤイルド社およびモステツク社)を用いた。全
体構成の概略は第3図に示されている。主プロセ
ツサMUと16台に示されている。主プロセツサ
MUと16台の従プロセツサAU−j(j=0、
1、2、………、F−16進数表示)と16行16列の
2次元配列のバツフアメモリーBM−(i、j)
を構成するFIFO群からなつている。MUは
CPU3850とDMI3852(ダイナミツクメモリーイ
ンターフエイス)と2台のDMA3854(ダイレク
トメモリーアクセス)とPIO3861(ベリフエラル
I/O)と4KバイトROMおよび8KバイトRAM
から成つている。1台のDMAは従プロセツサと
のデーター送受を制御し、もう1台のDMAは
I/Oプロセツサ(この試作品ではF8ソフルウ
エアー開発用ボードSDB−50 MK79019を利用)
とのデーター送受を制御する。PIOはMUが直接
にデーターを入出力するためと、AUからの割り
込み要求を受け入れるために具えられている。ま
た、すべてのAUは同一構成になつていて、それ
ぞれCPU、DMI、DMA(1台)、2KバイトROM
および4KバイトRAMから成つている。そして、
各FIFOメモリーは、64ワード×4ビツト
FIFO3341Aの2ケを並列接続して作られてい
る。この実施例の全体構成の主要部とバス接続の
模様が第3図に示されている。図では、例えば、
FIFO(O、F)には、MUからと、AU−Fから
と、AU−Oからのバスおよび循環用バスが接続
されている様子が読みとれるであろう。 第2図に示した各FIFOメモリーにおけるバス
接続法を実施した回路が第4図に描かれており、
ゲートの開閉の論理が図の中央部に示されてい
る。この論理はプロセツサとFIFOの間の信号線
の開閉にも利用される。FIFO−(i、j)への
データーシフトイン要求(SI REQ)あるいはデ
ーターシフトアウト要求(SO REQ)は関与す
る3台のプロセツサMU,AU−j,AU−iから
くるが、SI REQとSO REQは全く独立に受け入
れられるようになつている。第4図の中央の左側
にSI REQ用、右側にSO REQ用の論理が組んで
あるが、いずれにおいても1つのプロセツサがこ
のFIFOとの間のデーターの送受を行つていると
き、他のプロセツサの要求は受けつけられないよ
うになつている。要求が受け付けられたプロセツ
サにはイソプツトレデイー(IR)あるいはアウ
トプツトレデイー(OR)信号が と
して送られる。FIFOはそのプロセツサからの
XFER信号を受けると同時にデーターを入力する
があるいは出力する。各プロセツサのSI REQお
よびSO REQ信号は、CPU上のポート1(P1)
にラツチさせるデーターから作られる。MUが
FIFO−(i、j)とデーターをやりとりしたい
ときには(P1)7〜0に16進2ケタ数字‘ij’をお
く。AU−jがFIFO−(ij)とデーターをやりと
りしたいときには(P1)4〜0に‘oi’をおく。同
じくAU−jがFIFO−(j、i)とデーターのや
りとりをするときには(P1)4〜0に‘1i’をお
く。このデーターはプロセツサがDMAコントロ
ーラに始動を指示するのに先立つてラツチされな
ければならない。そのデーターによつてSI
FEQ、SO REQ信号を作る論理は第5図に示さ
れている。この図で、点線で囲んだ部分がそれぞ
れ1枚の板の上に乗せられる分である。REQ−
j板とはj行目に並ぶFIFO群(FIFO−(i、
j)(i=0、1、2、………、F)とj列目に
並ぶFIFO群(FIFO−(j、i)(i=0、1、
2………、F))へ送るSI REQとSO FEQ信号
を作る論理を乗せた板である。なおFIFO群その
ものは各行に並ぶものを集めて1枚の板に乗せ
る。 MUと各AU−j間で送受される、その他の信
号はCPU上のポート0(P0)を通して交わされ
る。第6図にその詳細が描かれている。ここで、
MUの(P0)3〜0には信号を交わしたいプロセツ
サAU−jの16進番号‘j’をラツチする。それ
に加えて(P0)6に1をおくときは、AU−jに計
算のスタートを指示するものと約束し、(P0)4に
1をおくときは、再度プログラム読み込みの状態
に戻すことを指示するものと約束する。またMU
が(P0)7に1を受けたときはAU−jから計算終
了の信号が送られたものと解する。つぎに、MU
が(P0)5に1をおくときは、(P0)3〜0の値に拘ら
ず、すべての従プロセツサに同時に同じ指示を与
えることを意味する。一方、U−j側では、
(P0)7に1をおくことはMUを計算終了を知らせ
ることであり、(P0)5に1をおくことはMUに割
り込み要求をすることをになつている。また、
(P0)6に1を受けると計算のスタート指示を得た
と解し、(P0)4に1を受けると、計算を休止し、
再度プログラム読み込み状態に戻る指示を得たと
解するものとする。 参考計算例 この試作実施例を用いる計算例をあげ、単一の
CPUで行う計算(いまの場合、MUだけで行う計
算)との比較により、本発明計算機の効果につい
て述べる。なお、以下で計算時間とは機械語で作
成したプログラムをたどつて算出したものであ
る。 そのまえに、まずこの実施例計算機に組み込ま
れた各プロセツサの基本サイクルと基本ルーチン
処理時間をあげておく。F8 CPUのクロツクは最
大2MHzであつて、このクロツクで作動させると
クロツクサイクルは500nsである。マシンサイク
ルには短いものと長いものとがあつて、それぞれ
2μs(4クロツクサイクル)と3μs(6クロ
ツクサイクル)である。個々の命令サイクルは、
これらのマシンサイクルの組み合せからなり、最
短2μsのものから最長13μsのものまである。
なお、各マシンサイクルの間でCPUがメモリー
の読み書きをしていない残余の時間にRAMのリ
フレツシユやDMA転送を行うので、DMA転送ス
ピードは高速で、ほぼ1マシンサイクルあたり1
バイトの転送が行われる。実際にはリフレツシユ
モードや命令の種類により、巾があつて1バイト
の転送時間の最短2μsから最長5μsである。 さて、浮動小数点演算はすべて4バイト長(指
数部1バイト、仮数部3バイト)で行うものとす
る。浮動小数点演算用のマイクロプログラムは、
すべてのプロセツサの私メモリーROMに入れて
ある。そのうち幾つかのサブルーチンの計算実行
時間をあげておく。浮動加減算は、場合によつて
巾があり、26μs〜1600μsとなるが、通常の場
合を想定すれば、大きめにみて1ms程度とな
る。また浮動乗算(ブース法)は、3.5ms、浮
動除算(引き放し法)は4msになる。浮動小数
点数のレジスター間転送は20μs、メモリー・レ
ジスター間転送は32μsである。また浮動小数点
数1語をFIFOを介して転送するには(FIFOに
停まることがないとき)典型値で20μsかかる
が、これはCPU内でのレジスター間転送と同程
度である。ただしこれらの転送を行うサブルーチ
ンへジヤンプする前の置数等にかかる時間に違い
があつて、レジスター間転送へ行くまえに17μ
s、レジスター・メモリー間転送へ行くには25μ
s、FIFOを介したメモリー・メモリー間転送へ
行くには53μsだけかかる(この場合、DMAコ
ントローラへの指示も含まれる)。 次に、効果と直接に関係ないが、FIFOバツフ
アメモリーを介したデーター転送のソフトウエア
上の便宜をはかつておく。すなわち、FIFOの2
次元配列に対応した専用メモリーをMUおよびす
べてのAUのRAM中に設ける。MUのRAMには、
16×16の2次元配列状のメモリーを確保するもの
とし、しかも各結節点に4ワード(16バイト)分
の容量を用意する(これを深さ4ワードのメモリ
ーと表現し、各ワード分に番号m=0、1、2、
3をつける)。そのために必要な4096バイト用に
バイト番地2000〜2FFFをあてる。そしてFIFO
−(i、j)に対応するのが2ijo〜2ijFの4ワー
ド長である。一方、AU−jのRAMには、これに
直接つながるクロス状配置のFIFO−(i、j)
(i=0、1、………、F)とFIFO−(i、k)
(k=0、1、………、F)に対応して1次元配
列状のメモリーを2つ並びだけ確保するものと
し、しかも各点に深さ8ワード分を用意する(各
ワードに再び番号m=0、1、………、7をつけ
る)。そのために必要な1024バイト用にバイト番
地1COO〜1FFFをあてる。そのうち1COO〜
1DFF番地が横線状配置のFIFO−(i、j)(i
=0、1、………、F)に対応し、1EOO〜
1FFF番地が縦線状配置のFIFO−(i、k)(k
=0、1、………、F)に対応する。そして
FIFO−(i、j)に対応するのが‘1COO+20×
i〜1CIF+20×i’の8ワード長で、FIFO−
(j、k)に対応するのが、‘1EOO+20×k〜
1EIF+20×k’の8ワード長である(第7,
8,9図参照)。以下では、MUの深さをもつた
2次元配列専用メモリーあるいはAUの深さをも
つたクロス状配列専用メモリーにおいて同一の深
さ位置にある(スライスされた)メモリーを表現
するために記号((m=・))を用いることにする。
さらに、AUの場合、クロス状メモリーのうち、
横線上のものに行メモリー、縦線上のものに列メ
モリーを冠して呼ぶことにする。 計算例 1 (行列の積) 16行16列の2つの行列AとBがMU内の専用メ
モリー((m=0))と((m=1))に与えられてい
て、行列の積ABを計算して、結果を((m=0))
に入れるものとする。この計算をAU群によつて
行うために、Aの各行を対応するAUの行メモリ
ー((m=0))へ送る(Aの第j行{a}i=
0、1、………、FをAU−jに送る)。つぎ
に、Bの各列を対応した列を位置するすべての
FIFOに(シリアルに)入れる。(第k列にある
FIFO−(k、i)(i=0、1、………、F)に
はすべて同じくBの第k列の要素がつめられる。
いまの場合、ちようど16ワード分で各FIFOが一
杯になる)。AU−jはk=0、1、………、F
の順に、FIFO−(k、j)のデーターを受けて
は積和
あつて、簡単な構成で数多くのプロセツサの組み
込みが可能で、しかも高能率なMIMD形の複合計
算機に関するものである。 従来、偏微分方程式のイクスプリシツト差分解
法に典型的に見られる様に、すべての格子点での
計算手順が同一である場合を想定し、各格子点毎
あるいは隣接する幾つかの格子点を集めたブロツ
ク毎の処理を1台づつのプロセツサに担わせると
いう構想に基くマルチコンピユーターあるいはマ
ルチプロセツサが幾つか知られている。そのう
ち、制御装置の一元的管理の下ですべてのプロセ
ツサが完全に同期して同じステツプ数のマイクロ
命令を実行するという2次元アレイプロセツサタ
イプのSIMD形計算機(ILLIACなど)ではか
なり限られた計算法に対して偉力を発揮するがそ
の他の計算法に対しては、離れたプロセツサ間の
データー転送や、それの一元的管理の面で不都合
な接続構成になつていて、あまり能率がよくな
い。次に、すべてのプロセツサ間のデーター転送
が直接的に行える様にするため共有メモリーと共
通バスを設ける方法も幾つか提案され、バス競合
やメモリー競合を時分割バスシステム、クロスバ
ススイツチシステムあるいは多ポートメモリーシ
ステムの形で処理しているが、それぞれ、バスコ
ントロールが複雑で能率が下つたり、ハードウエ
ア量が莫大になつたり、メモリーが高価となる欠
点を持つている。さらに、メモリー競合を避ける
ため、共有メモリー相当分を各プロセツサの私有
メモリー部分に設け、メモリーの更新はブロード
キヤステイング機能によつて行い、計算処理は各
プロセツサが独自で行うというSIMDとMIMDの
混合形計算機(天気予報用のSMS201など)もあ
るが、やはり用途が極く限られてしまう。 本発明は、一つに利用者側からみたとき偏微分
方程式の数値解法におけるADI法や分割作用素法
なども容易に使えるようにするためには一次元配
列構成のプロセツサ群の1台づつのプロセツサが
格子点の各一次元配列の計算を担う方が能率がよ
いこと、また行列演算やFFT計算でも、一次元
配列構成が無駄のない妥当なものであるとの知見
からなされた。もう一つはアーキテクチヤにおい
て、任意のプロセツサ間の直接的なデーター転送
が可能であるようにするために、クロスバタイプ
のネツトワークになるが、そのハードウエア量を
極力小さくするために一元的管理方式でなく、独
自で転送機能をもつバツフアメモリーを介するこ
と、そしてプロセツサ側でも能率向上化のために
DMAチヤネルを設けるという考えに基いてなさ
れた。 本発明の複合計算機では、それぞれが私有メモ
リーを有する1台の主プロセツサと複数N台の従
プロセツサからなる階層的アーキテクチアをとる
構成において並行処理の途中のデーターを従プロ
セツサ間で送受することのためにN行N列の2次
元配列のバツフアメモリーを設け、プロセツサ側
に具えるDMAチヤネルに接続する形をとる。 図面によつて本発明計算機の基本的なバス接続
方法を説明する。第1図及び第1A図は、その基
本形及び機能モデルを示すものであり、主プロセ
ツサをMU、従プロセツサをAU−j(j=0、
1、………、N−1)そして好ましくはFIFO型
のバツフアメモリーをBM−(i、j)(i、j=
0、1、………、N−1)と記す。第1図におい
てMUのデーターバスは、すべてのBM−(i、
j)(i、j=0、1、………、N−1)につな
がり、各AU−jのデーターバスはj行目のBM
−(i、j)(i=0、1………、N−1)および
j列目のBM−(j、k)(k=0、1、………、
N−1)につながつている。 また、BMとしてFIFOを用いる場合には、好
ましい使用例としてこれらすべてのFIFOには出
力側から入力側へ戻す循環用データーバスも具え
られている。各BM−(i、j)でみるとき、第
2図に示されている様に、入力側にはAU−iお
よびAU−jからの2種のデーターバスがそれぞ
れゲートを通してつながり、出力側は、それぞれ
別のゲートを通して、入力側に入つたと同じデー
ターバスに接続されている。ただし、第2図の実
施例においては、MUとAUとのデータのやりと
りもBMを通して行う場合のためのバス、及び
BMとしてFIFOを用いるときの循環用データバ
スも付加してある。循環用データーバスはMUへ
のデーターバスが使用されるのと同時に使用され
るようになつている。そして、循環させる必要が
ないとき、そのバスは切れる様になつている。こ
の循環用バスは逐次計算過程で途中結果をMUに
送つたとき、それと同じデーターが引き続き、
AUでの計算に利用されるような場合にFIFOに
残しておくのが都合よいときに用いられる。 上記のようなパスビルデイングを持つた並列計
算機では、明らかに、MUと任意のAUの間およ
び任意のAU同志の間で直接的なデーター転送が
可能であるから汎用性が著しく拡がる。そのう
え、任意のAU同志間でデーターの相互変換が同
時にできて能率がよい。AU−iとAU−jの間
でデーター交換を行う場合に、AU−iがBM−
(i、j)にデーターを送り、つづいてBM−
(j、i)からデーターを受けとる動作と、AU
−jがBM−(j、i)にデーターを送り、つづ
いてBM−(i、j)からデーターを受けとる動
作が全く並行して行われる。さらに大事な点は、
互いに相手側のプロセツサの進行状況を直接に関
知することなく、間に立つBMにデーターが現れ
ることだけをみていればよい。しかも、そのデー
ターの出現を指示するOUTPUT READY信号を
DMAコントローラが受信する様にしてあるの
で、プロセツサとしてはそのデーターが実際に必
要になるまで他の計算を進めておればよく、非同
期式の利点がよく生かされている。 また、一元的管理方式を排した非同期式である
ために、本来、信号線の数が少くてよいととも
に、共通バスをもたないクロスバタイプのパスビ
ルデイングであるにも拘らず、各BMに外から接
続されるデーターバスはたかだか3種類だけであ
るために、ハードウエア量が比較的に少くてよい
点はプロセツサの台数を増すことに大きく道を拓
くものである。 つぎに、本計算機の並列処理動作の理解を容易
にするため、並列プログラムとその処理の概要を
説明する。この場合、取扱うべき2次元配列デー
タは、それらの格子点座標を(I、J)としたと
き(ただし、I、J=1、2、3………N−1、
N)、文字Uで代表させ、通常はU(I、J)と
して表現されるべき変数である。 第1A図は、第1図に示した従プロセツサ群
AU−0、………AU−(N−1)が、バツフア−
マトリクス〔BM−(i、j)〕を介しての接続構
造により、各バツフアーメモリーBMを前記各格
子点(I、J)に対応させた場合に格子点の各行
(J)を受けもつAU−縦列(実線円の列)と、
格子点の各列(I)を受けもつAU横列(破線円
の横列)として見られるという機能モデルを示し
たものである。ただし、従プロセツサAU及びバ
ツフアーメモリーBMにおける番号又は座標を表
わすi及びjは0からN−1までの整数であり、
格子点座標のI及びJは前記の通り、1からNま
での整数であるため、それぞれ、i=I−1、及
びj=J−1となることに留意すべきである。し
たがつて、2次元配列変数は各格子点(I、J)
について、縦列中のJ(=j+1)番目の従プロ
セツサAUにより、行位置(I=1、2………
N)データを扱うことを意味した U(I、/J/) 及び、横列中のI(=i+1)番目の従プロセツ
サAUによりJ列のデータを扱うことを意味する U(/I/、J) として表わされる。これにより、並列演算はいず
れかの行位置中の全格子点、及びいずれかの列位
置中の全格子点について、各一つの従プロセツサ
により実行される。並列処理プログラムは、例え
ば次の通りである。 PDO 10 J=1、N DO 20 I=1、N 20U(/I/、J)=U(I+1、/J/) +U(I−1、/J/) 10 CONTINUE、 ここに、PDOは、PARALLELDO文を示し、
ラベル番号10までの実行文をインデツクスJの動
く範囲に相当するAU−j(j=J−1)の組が
各行位置について並列処理することを指示する。
インデツクスIについてのDO文は指示された従
プロセツサが共通に行う標準的処理である。な
お、上記PDO文中に現れる式の右辺の配列変数
はすべてU(※、/J/)の形のものに限る(た
だし、列位置にあればU(/I/、※)の形とな
る)。これは明快な並列動作を指示するための制
約である。また、左辺には列位置用のU(/
I/、J)が出ているが、このとき、代入用の
“=”操作の中にバツフアメモリを介したデータ
転送が含まれるのである。 上記の代入文では、第1A図の縦列(実線)位
置にあるすべての従プロセツサは、ラベル番号20
の式の右辺の計算結果が出るだびに各従プロセツ
サが対応する行位置のバツフアメモリ(i、j)
群(i=0、1、………、N−1)に書き入れて
いく。指定された縦プロセツサによる上記のよう
なバツフアメモリへの書き込みが済めば、同じく
第1A図の横列(破線図示)位置から見てすべて
の縦プロセツサがそれぞれにつながるバツフアメ
モリの内容を集め、これによつて{U(/I/、
J)}を得るものである。かくして、第1A図の
列位置において、例えば次のようなプログラムに
移ることができる。 PDO 30 I=1、N DO 40 J=1、N 40U(/I/、J)=U(/I/、J+1) +U(/I/、J−1) 30 CONTINUE この例では代入文が転送をともなわないものに
なつている。 本発明の並列処理動作は上記のとおりであり、
以下、本発明の装置構成の実施例につき詳細に説
明する。 実施例 本発明の効果を確認するための試作例を掲げ
る。この実施例では、市販のマイクロコンピユー
タの中で、本発明の試作実施に都合がよいと判断
した8ビツトマイクロプロセツサF8(米フエア
チヤイルド社およびモステツク社)を用いた。全
体構成の概略は第3図に示されている。主プロセ
ツサMUと16台に示されている。主プロセツサ
MUと16台の従プロセツサAU−j(j=0、
1、2、………、F−16進数表示)と16行16列の
2次元配列のバツフアメモリーBM−(i、j)
を構成するFIFO群からなつている。MUは
CPU3850とDMI3852(ダイナミツクメモリーイ
ンターフエイス)と2台のDMA3854(ダイレク
トメモリーアクセス)とPIO3861(ベリフエラル
I/O)と4KバイトROMおよび8KバイトRAM
から成つている。1台のDMAは従プロセツサと
のデーター送受を制御し、もう1台のDMAは
I/Oプロセツサ(この試作品ではF8ソフルウ
エアー開発用ボードSDB−50 MK79019を利用)
とのデーター送受を制御する。PIOはMUが直接
にデーターを入出力するためと、AUからの割り
込み要求を受け入れるために具えられている。ま
た、すべてのAUは同一構成になつていて、それ
ぞれCPU、DMI、DMA(1台)、2KバイトROM
および4KバイトRAMから成つている。そして、
各FIFOメモリーは、64ワード×4ビツト
FIFO3341Aの2ケを並列接続して作られてい
る。この実施例の全体構成の主要部とバス接続の
模様が第3図に示されている。図では、例えば、
FIFO(O、F)には、MUからと、AU−Fから
と、AU−Oからのバスおよび循環用バスが接続
されている様子が読みとれるであろう。 第2図に示した各FIFOメモリーにおけるバス
接続法を実施した回路が第4図に描かれており、
ゲートの開閉の論理が図の中央部に示されてい
る。この論理はプロセツサとFIFOの間の信号線
の開閉にも利用される。FIFO−(i、j)への
データーシフトイン要求(SI REQ)あるいはデ
ーターシフトアウト要求(SO REQ)は関与す
る3台のプロセツサMU,AU−j,AU−iから
くるが、SI REQとSO REQは全く独立に受け入
れられるようになつている。第4図の中央の左側
にSI REQ用、右側にSO REQ用の論理が組んで
あるが、いずれにおいても1つのプロセツサがこ
のFIFOとの間のデーターの送受を行つていると
き、他のプロセツサの要求は受けつけられないよ
うになつている。要求が受け付けられたプロセツ
サにはイソプツトレデイー(IR)あるいはアウ
トプツトレデイー(OR)信号が と
して送られる。FIFOはそのプロセツサからの
XFER信号を受けると同時にデーターを入力する
があるいは出力する。各プロセツサのSI REQお
よびSO REQ信号は、CPU上のポート1(P1)
にラツチさせるデーターから作られる。MUが
FIFO−(i、j)とデーターをやりとりしたい
ときには(P1)7〜0に16進2ケタ数字‘ij’をお
く。AU−jがFIFO−(ij)とデーターをやりと
りしたいときには(P1)4〜0に‘oi’をおく。同
じくAU−jがFIFO−(j、i)とデーターのや
りとりをするときには(P1)4〜0に‘1i’をお
く。このデーターはプロセツサがDMAコントロ
ーラに始動を指示するのに先立つてラツチされな
ければならない。そのデーターによつてSI
FEQ、SO REQ信号を作る論理は第5図に示さ
れている。この図で、点線で囲んだ部分がそれぞ
れ1枚の板の上に乗せられる分である。REQ−
j板とはj行目に並ぶFIFO群(FIFO−(i、
j)(i=0、1、2、………、F)とj列目に
並ぶFIFO群(FIFO−(j、i)(i=0、1、
2………、F))へ送るSI REQとSO FEQ信号
を作る論理を乗せた板である。なおFIFO群その
ものは各行に並ぶものを集めて1枚の板に乗せ
る。 MUと各AU−j間で送受される、その他の信
号はCPU上のポート0(P0)を通して交わされ
る。第6図にその詳細が描かれている。ここで、
MUの(P0)3〜0には信号を交わしたいプロセツ
サAU−jの16進番号‘j’をラツチする。それ
に加えて(P0)6に1をおくときは、AU−jに計
算のスタートを指示するものと約束し、(P0)4に
1をおくときは、再度プログラム読み込みの状態
に戻すことを指示するものと約束する。またMU
が(P0)7に1を受けたときはAU−jから計算終
了の信号が送られたものと解する。つぎに、MU
が(P0)5に1をおくときは、(P0)3〜0の値に拘ら
ず、すべての従プロセツサに同時に同じ指示を与
えることを意味する。一方、U−j側では、
(P0)7に1をおくことはMUを計算終了を知らせ
ることであり、(P0)5に1をおくことはMUに割
り込み要求をすることをになつている。また、
(P0)6に1を受けると計算のスタート指示を得た
と解し、(P0)4に1を受けると、計算を休止し、
再度プログラム読み込み状態に戻る指示を得たと
解するものとする。 参考計算例 この試作実施例を用いる計算例をあげ、単一の
CPUで行う計算(いまの場合、MUだけで行う計
算)との比較により、本発明計算機の効果につい
て述べる。なお、以下で計算時間とは機械語で作
成したプログラムをたどつて算出したものであ
る。 そのまえに、まずこの実施例計算機に組み込ま
れた各プロセツサの基本サイクルと基本ルーチン
処理時間をあげておく。F8 CPUのクロツクは最
大2MHzであつて、このクロツクで作動させると
クロツクサイクルは500nsである。マシンサイク
ルには短いものと長いものとがあつて、それぞれ
2μs(4クロツクサイクル)と3μs(6クロ
ツクサイクル)である。個々の命令サイクルは、
これらのマシンサイクルの組み合せからなり、最
短2μsのものから最長13μsのものまである。
なお、各マシンサイクルの間でCPUがメモリー
の読み書きをしていない残余の時間にRAMのリ
フレツシユやDMA転送を行うので、DMA転送ス
ピードは高速で、ほぼ1マシンサイクルあたり1
バイトの転送が行われる。実際にはリフレツシユ
モードや命令の種類により、巾があつて1バイト
の転送時間の最短2μsから最長5μsである。 さて、浮動小数点演算はすべて4バイト長(指
数部1バイト、仮数部3バイト)で行うものとす
る。浮動小数点演算用のマイクロプログラムは、
すべてのプロセツサの私メモリーROMに入れて
ある。そのうち幾つかのサブルーチンの計算実行
時間をあげておく。浮動加減算は、場合によつて
巾があり、26μs〜1600μsとなるが、通常の場
合を想定すれば、大きめにみて1ms程度とな
る。また浮動乗算(ブース法)は、3.5ms、浮
動除算(引き放し法)は4msになる。浮動小数
点数のレジスター間転送は20μs、メモリー・レ
ジスター間転送は32μsである。また浮動小数点
数1語をFIFOを介して転送するには(FIFOに
停まることがないとき)典型値で20μsかかる
が、これはCPU内でのレジスター間転送と同程
度である。ただしこれらの転送を行うサブルーチ
ンへジヤンプする前の置数等にかかる時間に違い
があつて、レジスター間転送へ行くまえに17μ
s、レジスター・メモリー間転送へ行くには25μ
s、FIFOを介したメモリー・メモリー間転送へ
行くには53μsだけかかる(この場合、DMAコ
ントローラへの指示も含まれる)。 次に、効果と直接に関係ないが、FIFOバツフ
アメモリーを介したデーター転送のソフトウエア
上の便宜をはかつておく。すなわち、FIFOの2
次元配列に対応した専用メモリーをMUおよびす
べてのAUのRAM中に設ける。MUのRAMには、
16×16の2次元配列状のメモリーを確保するもの
とし、しかも各結節点に4ワード(16バイト)分
の容量を用意する(これを深さ4ワードのメモリ
ーと表現し、各ワード分に番号m=0、1、2、
3をつける)。そのために必要な4096バイト用に
バイト番地2000〜2FFFをあてる。そしてFIFO
−(i、j)に対応するのが2ijo〜2ijFの4ワー
ド長である。一方、AU−jのRAMには、これに
直接つながるクロス状配置のFIFO−(i、j)
(i=0、1、………、F)とFIFO−(i、k)
(k=0、1、………、F)に対応して1次元配
列状のメモリーを2つ並びだけ確保するものと
し、しかも各点に深さ8ワード分を用意する(各
ワードに再び番号m=0、1、………、7をつけ
る)。そのために必要な1024バイト用にバイト番
地1COO〜1FFFをあてる。そのうち1COO〜
1DFF番地が横線状配置のFIFO−(i、j)(i
=0、1、………、F)に対応し、1EOO〜
1FFF番地が縦線状配置のFIFO−(i、k)(k
=0、1、………、F)に対応する。そして
FIFO−(i、j)に対応するのが‘1COO+20×
i〜1CIF+20×i’の8ワード長で、FIFO−
(j、k)に対応するのが、‘1EOO+20×k〜
1EIF+20×k’の8ワード長である(第7,
8,9図参照)。以下では、MUの深さをもつた
2次元配列専用メモリーあるいはAUの深さをも
つたクロス状配列専用メモリーにおいて同一の深
さ位置にある(スライスされた)メモリーを表現
するために記号((m=・))を用いることにする。
さらに、AUの場合、クロス状メモリーのうち、
横線上のものに行メモリー、縦線上のものに列メ
モリーを冠して呼ぶことにする。 計算例 1 (行列の積) 16行16列の2つの行列AとBがMU内の専用メ
モリー((m=0))と((m=1))に与えられてい
て、行列の積ABを計算して、結果を((m=0))
に入れるものとする。この計算をAU群によつて
行うために、Aの各行を対応するAUの行メモリ
ー((m=0))へ送る(Aの第j行{a}i=
0、1、………、FをAU−jに送る)。つぎ
に、Bの各列を対応した列を位置するすべての
FIFOに(シリアルに)入れる。(第k列にある
FIFO−(k、i)(i=0、1、………、F)に
はすべて同じくBの第k列の要素がつめられる。
いまの場合、ちようど16ワード分で各FIFOが一
杯になる)。AU−jはk=0、1、………、F
の順に、FIFO−(k、j)のデーターを受けて
は積和
【式】を計算し、その結果を行メ
モリー((m=1))にストアする。この計算はすべ
てのAUが並行して行うことになる。最後に、各
AUの行メモリー((m=1))のすべてをMUの専
用メモリー((m=0))に転送してやればよい。以
上の計算に必要な時間は1.27秒になる。このうち
各AUが16ケの積和を計算する時間が1.20秒であ
り、大部分を占めている。 比較のために、上の計算を並列処理でなくMU
だけで単一処理を行うと、そのときの計算時間は
19.4秒となる。従つて(並列処理時間)/(単一
処理時間)=1/15.3である。16台のAUを用いて
15.3倍のスピードアツプだから能率比は0.95(=
15.3/16)であるといえる。 計算例 2 (連立一次方程式のガウス消去解法) 16元連立一次方程式 を解く問題で、係数行列A={aji}の各行に対応
したAUの行メモリー((m=0))にあらかじめ与
えられているとする。行列Aの第j行{aji}i
=0、………、FはAU−jの行メモリー〓m=
0))に与えられる。そして、方程式の右辺のデー
ター{bj}j=0、1、………、FがMU内のあ
る場所(例えばIBCO〜IBFF番地)に与えられた
とき、方程式を解き、その解{xi}i=0、1、
………、Fを同じ場所にストアするものとする。
この問題をガウス消去法で解くために、まず
{bj}j=0、1、………、Fの各成分bjをそれ
ぞれAU−jの一定の場所(例えばIEOO〜IE03
番地)に転送する。転送後は、AU側だけで計算
されるが、ここでは、消去の際、特別なピボツテ
イングが不要で単純に計算が続くものとして、計
算時間の評価を行う。さて、未知数x0の消去を行
うために係数(a01/a00、a02/a00、……
…、a0F/a00、b0/a00)を AU−0で計算し、その結果をAU−1からAU−
Fまでのすべてに送る。このとき、AU−j(j
=1、2、………、F)に送るには、FIFO−
(j、0)(j=1、2、………、F)を介すると
よい。それを受けたすべてAUで消去計算を並行
して行う。次に、変数x1の消去のために、係数計
算をAU−1で行い、AU−2からAU−Fまでの
すべてに送る。それを受けたAUで消去計算を並
行して行う。この操作を順次繰り返えしていく。
最後にたどりついた式からAU−FがxFの値を
決めると、この値の代入計算にうつるが、その場
合、xFの値をすべてのAU−E〜AU−0へ順に
転送し、それぞれにおいてxFの代入計算をやつ
てしまう。つづいて、AU−Eで未知数xEを決
め、その値をAU−D〜AU−0へ順に転送し、
それを受けたAUでは直ちにxEの代入計算を済
ませてしまう。このように逐次代入計算を行つて
いくが、その際、既知となつたxj値をすべての
AU−k(k=j−1、j−2、………、0)に
転送している間、その値を得たAU−(j−1)
は直ちにxj-1を決める計算を同時に行うことが
可能である。また得られた解の値をMUに送るこ
とも計算の終つたAUから順次行えばよい。以上
の計算に要する時間は887msである。 一方、同じ問題をMUだけで単一処理する場合
の時間は7277msである。従つて(並行処理時
間)/(単一処理時間)=1/8.2となり、能率比
は0.51(=8.2/16)である。この場合、能率比
が0.51まで落ちこむのは、ガウス消去法のアルゴ
リズムに本来的にシリアルな部分がかなりの割合
を占めるからであつて、止むを得ないことであ
る。 計算例 3 (FFTの計算) FFTの計算を、本発明の並列処理計算機でど
のように行うかを説明するために必要な範囲で、
もともとのアルゴリズムを述べる。取り扱う離散
的なフーリエ変換を式 で定義する。ただし、ここで簡単のために、N=
2〓(γは自然数)とする。FFTの計算法では
{x0(k)}から{X(n)}を求めるために {x0(k)}→{x1(k)}→……… →{xl(k)}→………{x〓(k)} のステツプをを踏む。ここで{xl-1(k)}から
{xl(k)}の計算には、対になつた式の組 を用いる。ここでpの値はインデツクスkをγビ
ツトの2進数字で表示し、つぎにこの2進数字を
γ−lビツト分右シフトし、上位γ−lビツトに
は0を埋め、その後ビツトの順序をひつくり返え
した2進数字のとる値に等しくする。最後に得ら
れた{x〓(k)}から求める{X(n)}を得るた
めには、nの2進数表示のビツト順序をひつくり
返えしたときの値をと表わすとき、X(n)=
x〓()とすればよい。 (※)式の計算は、具体的には の形で行われる。 このアルゴリズムをMUだけで実行する場合に
は、(※)式に従つてxl(k)とxl(k′)の対毎に計
算を行つていくので、k=0、1、2、………と
順を追つていけば、先に計算済みのものに到るこ
とがあるが、そこはとばして先に行けばよい。例
えばN=16(γ=4)のとき、{x1(k)}を求める
のに、k=0、1、………、7まで計算すれば、
k=8、………、Fに対する計算は既に済んでい
る。 上のアルゴリズムをできるだけ並列処理によつ
てAU群で実行する方法を説明する。まず、途中
で必要になるCOS値、SIN値の数表があらかじめ
用意されている場合について述べる。xl(k)の計
算は、AU−kが担うものとすれば番号の対kと
k′に対応したプロセツサAU−kとAU−k′(※
※)の計算を並行処理させる。実際に、AU−
k′が、xl-1(k′)値をFIFO−(k′、k)に送るの
と同時にAU−kはxl-1(k)をFIFO−(k、k′)に
送る。そしてAU−k′がFIFO−(k、k′)からxl
−1(k)を受けとるのと同時にAU−kはFIFO−
(k′、k)から、xl-1(k′)を受けとる。つづい
て、AU−k′がTRを計算し、その計果をFIFO−
(k′、k)に送るのと同時に、AU−kはTIを計
算し、その結果をFIFO−(k、k′)に送る。そし
てまたそれぞれのプロセツサが対応したFIFOを
介してTIあるいはTRを受けとる。最後に、AU
−k′はxl(k′)の値を決め、AU−kはxl(k)の値
を決める。これらの動作がすべての対(k、k′)
に対して同時に並行的に行われ、そしてl=1、
2、………、γと逐次計算される。 さて、COS値、SIN値を数表で与えておくので
はなく、必要の都度計算する場合には、CORDIC
法を用いると都合がよい。それは、このアルゴリ
ズムがまた一対のAU−kとAU−k′を用いること
によつてうまく計算されるからである(CORDIC
法そのものの計算については後掲の計算例4で述
べる)。 N=16として、16台のAUを用いる場合の計算
時間を掲げておく。 (i) COS値、SIN値の数表をあらかじめ用意して
おく場合 MUだけによる計算では690msである。一
方、MUからAU群にデーターを与え、その後
AU群に計算を行わせ、最終結果をMUにまで
戻す時間は60msとなる。したがつて(並列処
理時間)/(単一処理時間)=1/11.5であ
り、能率比は0.72(=11.5/16)となる。 (ii) COS値、SIN値を必要の都度CORDIC法によ
つて計算する場合 MUだけで行う計算時間は2600msであり、
AU群によつて計算する場合は244msとな
る。したがつて(並列処理時間)/(単一処理
時間)=1/10.66であつて、能率比は0.67(=
10.66/16)となる。 上の結果で、(i)の場合の能率比が0.72ほどまで
になるのは、MUだけで行う計算においてとばす
ということがなされるのに対してAU群による計
算では確かにうまく対毎の計算が行われスピード
アツプになるが、転送にかかる時間分だけ能率を
おとすからである(とばす計算時間は0であ
る)。(ii)の場合には、さらにCORDIC法が完全に
並列化されるアルゴリズムでないことによつても
う少し能率比が落ちてしまうのである。 計算例 4 (CORDIC法によるCOS値、SIN値の計算) 計算例3のFFT計算で必要になつたのはcos
pπ/8、sinpπ/8(0p7)の値であつた。
ここ ではpを与えたとき、それらの値をCORDIC法に
基いて、2台のAU−kとAU−k′の対が計算する
ものとする。4p7に対しては関係式cos
pπ/8=−cos8−p/8πとsinpπ/8=sin8−
p/8πを利用す るものとすれば0p3に対して計算されれば
よい。この場合アルゴリズムは次の様になる。 初期値を x0=0.60725293501………、y0=0、v0=pπ/
8とおき、n=0、1、2、………、16に対して
次の反復計算を行う(完止法)(n=16でとめて
いるのは10進で5桁ぐらいの精度でよしとするか
らである)。 (i) vo〓0ならばxo+1=xo−2-nyo、 yo+1=yo+2-nxo、vo+1=vo−γo、 (ii) vo<0ならばxo+1=xo+2-nyo、 yo+1=yo−2-2xo、vo+1=xo+γo ただし、ここでγo=arctan2-n(n=0、1、
2、………、16)の値は用意されているとする。
最後に得られるx17とy17をそれぞれcos pπ/8
とsin pπ/8の近似値とするものである。この
アルゴリズムをAU−kとAU−k′の対に実現させ
るとすれば、AU−kに{xo+1を決める計算さ
せ、AU−k′に{yo+1}を決める計算をさせるも
のとする。初期値や{γo}、{vo}の値はいづれ
のAUも保持し、{vo+1}の計算はどちらのAUに
おいても実行するものとする(一方だけで計算し
て他方に転送する方法よりすこしだけスピードが
早いからである)。このとき1つのpに対して計
算時間は47.7msとなる。 一方、上記アルゴリズムを単独のMUだけで計
算するときの時間は60msである。従つて(並列
処理時間)/(単一処理時間)=1/1.2となり、
能率比は0.6(=1.2/2)である。能率比が0.6に
とどまるのは、{vo+1}の計算を2台のプロセツ
サで分業することができないからである。このこ
とが、また計算例3の最後のところに述べたこと
につながるのである。 計算例 5 (ADI法の応例−ナビエ・ストークス方程式の
差分解法) 非圧縮性粘性流体の2次元的流れを記述するナ
ビエ・ストークス方程式を流れ関数Ψと渦度ζを
用いて表現すれば ∂ζ/∂t+∂Ψ/∂y∂ζ/∂x−∂Ψ/∂x∂ζ/
∂y=1/RΔζ (Rはレイノズル数) ζ=−ΔΨ となる。いま、正方形状のくぼみ領域0<x、y
<1内の流れを考えるものとし、 境界条件 Ψ=0 および ∂Ψ/∂x(0、y)=∂Ψ/∂x(1、y)=0、 ∂Ψ/∂y(x、0)=0 ∂Ψ/∂y(x、1)=U を与える。そして初期条件は静止状態に対応した Ψ=0、ζ=0 とする。これは、くぼみの中の流体が開いた一辺
での一様速度Uでどのように駆動されるかをみる
ためのモデルになつている。 上の偏微分方程式系を近似的に解く差分法の中
でADI法の範ちゆうに入るものの一例をあげる。
正方形領域0<x、y<1の各辺を15等分し、格
子間隔h=1/15の網目をつくり、格子点(x
i、yj)=(ih、jh)上の未知関数値をζi、jなどと
表わす。また、時間ステツプ巾をτとし、時刻t
=nτにおける値を、さらに上つき添数でもつて
ζn i、jなどと表わす。差分商に対して次のような
記号を用いる: Δ1hζi、j=1/h2(ζi+1、j−2ζi、j+ζi-1、j
)、 Δ2hζi、j=1/h2(ζi、j+1−2ζi、j+ζi、j-1
)、 δ1hζi、j=1/2h(ζi+1、j−ζi-1、j)、 δ2hζi、j=1/2h(ζi、j+1−ζi、j-1)、 実際に、計算例として用いる差分アルゴリズム
は次の通りである:J=15として
てのAUが並行して行うことになる。最後に、各
AUの行メモリー((m=1))のすべてをMUの専
用メモリー((m=0))に転送してやればよい。以
上の計算に必要な時間は1.27秒になる。このうち
各AUが16ケの積和を計算する時間が1.20秒であ
り、大部分を占めている。 比較のために、上の計算を並列処理でなくMU
だけで単一処理を行うと、そのときの計算時間は
19.4秒となる。従つて(並列処理時間)/(単一
処理時間)=1/15.3である。16台のAUを用いて
15.3倍のスピードアツプだから能率比は0.95(=
15.3/16)であるといえる。 計算例 2 (連立一次方程式のガウス消去解法) 16元連立一次方程式 を解く問題で、係数行列A={aji}の各行に対応
したAUの行メモリー((m=0))にあらかじめ与
えられているとする。行列Aの第j行{aji}i
=0、………、FはAU−jの行メモリー〓m=
0))に与えられる。そして、方程式の右辺のデー
ター{bj}j=0、1、………、FがMU内のあ
る場所(例えばIBCO〜IBFF番地)に与えられた
とき、方程式を解き、その解{xi}i=0、1、
………、Fを同じ場所にストアするものとする。
この問題をガウス消去法で解くために、まず
{bj}j=0、1、………、Fの各成分bjをそれ
ぞれAU−jの一定の場所(例えばIEOO〜IE03
番地)に転送する。転送後は、AU側だけで計算
されるが、ここでは、消去の際、特別なピボツテ
イングが不要で単純に計算が続くものとして、計
算時間の評価を行う。さて、未知数x0の消去を行
うために係数(a01/a00、a02/a00、……
…、a0F/a00、b0/a00)を AU−0で計算し、その結果をAU−1からAU−
Fまでのすべてに送る。このとき、AU−j(j
=1、2、………、F)に送るには、FIFO−
(j、0)(j=1、2、………、F)を介すると
よい。それを受けたすべてAUで消去計算を並行
して行う。次に、変数x1の消去のために、係数計
算をAU−1で行い、AU−2からAU−Fまでの
すべてに送る。それを受けたAUで消去計算を並
行して行う。この操作を順次繰り返えしていく。
最後にたどりついた式からAU−FがxFの値を
決めると、この値の代入計算にうつるが、その場
合、xFの値をすべてのAU−E〜AU−0へ順に
転送し、それぞれにおいてxFの代入計算をやつ
てしまう。つづいて、AU−Eで未知数xEを決
め、その値をAU−D〜AU−0へ順に転送し、
それを受けたAUでは直ちにxEの代入計算を済
ませてしまう。このように逐次代入計算を行つて
いくが、その際、既知となつたxj値をすべての
AU−k(k=j−1、j−2、………、0)に
転送している間、その値を得たAU−(j−1)
は直ちにxj-1を決める計算を同時に行うことが
可能である。また得られた解の値をMUに送るこ
とも計算の終つたAUから順次行えばよい。以上
の計算に要する時間は887msである。 一方、同じ問題をMUだけで単一処理する場合
の時間は7277msである。従つて(並行処理時
間)/(単一処理時間)=1/8.2となり、能率比
は0.51(=8.2/16)である。この場合、能率比
が0.51まで落ちこむのは、ガウス消去法のアルゴ
リズムに本来的にシリアルな部分がかなりの割合
を占めるからであつて、止むを得ないことであ
る。 計算例 3 (FFTの計算) FFTの計算を、本発明の並列処理計算機でど
のように行うかを説明するために必要な範囲で、
もともとのアルゴリズムを述べる。取り扱う離散
的なフーリエ変換を式 で定義する。ただし、ここで簡単のために、N=
2〓(γは自然数)とする。FFTの計算法では
{x0(k)}から{X(n)}を求めるために {x0(k)}→{x1(k)}→……… →{xl(k)}→………{x〓(k)} のステツプをを踏む。ここで{xl-1(k)}から
{xl(k)}の計算には、対になつた式の組 を用いる。ここでpの値はインデツクスkをγビ
ツトの2進数字で表示し、つぎにこの2進数字を
γ−lビツト分右シフトし、上位γ−lビツトに
は0を埋め、その後ビツトの順序をひつくり返え
した2進数字のとる値に等しくする。最後に得ら
れた{x〓(k)}から求める{X(n)}を得るた
めには、nの2進数表示のビツト順序をひつくり
返えしたときの値をと表わすとき、X(n)=
x〓()とすればよい。 (※)式の計算は、具体的には の形で行われる。 このアルゴリズムをMUだけで実行する場合に
は、(※)式に従つてxl(k)とxl(k′)の対毎に計
算を行つていくので、k=0、1、2、………と
順を追つていけば、先に計算済みのものに到るこ
とがあるが、そこはとばして先に行けばよい。例
えばN=16(γ=4)のとき、{x1(k)}を求める
のに、k=0、1、………、7まで計算すれば、
k=8、………、Fに対する計算は既に済んでい
る。 上のアルゴリズムをできるだけ並列処理によつ
てAU群で実行する方法を説明する。まず、途中
で必要になるCOS値、SIN値の数表があらかじめ
用意されている場合について述べる。xl(k)の計
算は、AU−kが担うものとすれば番号の対kと
k′に対応したプロセツサAU−kとAU−k′(※
※)の計算を並行処理させる。実際に、AU−
k′が、xl-1(k′)値をFIFO−(k′、k)に送るの
と同時にAU−kはxl-1(k)をFIFO−(k、k′)に
送る。そしてAU−k′がFIFO−(k、k′)からxl
−1(k)を受けとるのと同時にAU−kはFIFO−
(k′、k)から、xl-1(k′)を受けとる。つづい
て、AU−k′がTRを計算し、その計果をFIFO−
(k′、k)に送るのと同時に、AU−kはTIを計
算し、その結果をFIFO−(k、k′)に送る。そし
てまたそれぞれのプロセツサが対応したFIFOを
介してTIあるいはTRを受けとる。最後に、AU
−k′はxl(k′)の値を決め、AU−kはxl(k)の値
を決める。これらの動作がすべての対(k、k′)
に対して同時に並行的に行われ、そしてl=1、
2、………、γと逐次計算される。 さて、COS値、SIN値を数表で与えておくので
はなく、必要の都度計算する場合には、CORDIC
法を用いると都合がよい。それは、このアルゴリ
ズムがまた一対のAU−kとAU−k′を用いること
によつてうまく計算されるからである(CORDIC
法そのものの計算については後掲の計算例4で述
べる)。 N=16として、16台のAUを用いる場合の計算
時間を掲げておく。 (i) COS値、SIN値の数表をあらかじめ用意して
おく場合 MUだけによる計算では690msである。一
方、MUからAU群にデーターを与え、その後
AU群に計算を行わせ、最終結果をMUにまで
戻す時間は60msとなる。したがつて(並列処
理時間)/(単一処理時間)=1/11.5であ
り、能率比は0.72(=11.5/16)となる。 (ii) COS値、SIN値を必要の都度CORDIC法によ
つて計算する場合 MUだけで行う計算時間は2600msであり、
AU群によつて計算する場合は244msとな
る。したがつて(並列処理時間)/(単一処理
時間)=1/10.66であつて、能率比は0.67(=
10.66/16)となる。 上の結果で、(i)の場合の能率比が0.72ほどまで
になるのは、MUだけで行う計算においてとばす
ということがなされるのに対してAU群による計
算では確かにうまく対毎の計算が行われスピード
アツプになるが、転送にかかる時間分だけ能率を
おとすからである(とばす計算時間は0であ
る)。(ii)の場合には、さらにCORDIC法が完全に
並列化されるアルゴリズムでないことによつても
う少し能率比が落ちてしまうのである。 計算例 4 (CORDIC法によるCOS値、SIN値の計算) 計算例3のFFT計算で必要になつたのはcos
pπ/8、sinpπ/8(0p7)の値であつた。
ここ ではpを与えたとき、それらの値をCORDIC法に
基いて、2台のAU−kとAU−k′の対が計算する
ものとする。4p7に対しては関係式cos
pπ/8=−cos8−p/8πとsinpπ/8=sin8−
p/8πを利用す るものとすれば0p3に対して計算されれば
よい。この場合アルゴリズムは次の様になる。 初期値を x0=0.60725293501………、y0=0、v0=pπ/
8とおき、n=0、1、2、………、16に対して
次の反復計算を行う(完止法)(n=16でとめて
いるのは10進で5桁ぐらいの精度でよしとするか
らである)。 (i) vo〓0ならばxo+1=xo−2-nyo、 yo+1=yo+2-nxo、vo+1=vo−γo、 (ii) vo<0ならばxo+1=xo+2-nyo、 yo+1=yo−2-2xo、vo+1=xo+γo ただし、ここでγo=arctan2-n(n=0、1、
2、………、16)の値は用意されているとする。
最後に得られるx17とy17をそれぞれcos pπ/8
とsin pπ/8の近似値とするものである。この
アルゴリズムをAU−kとAU−k′の対に実現させ
るとすれば、AU−kに{xo+1を決める計算さ
せ、AU−k′に{yo+1}を決める計算をさせるも
のとする。初期値や{γo}、{vo}の値はいづれ
のAUも保持し、{vo+1}の計算はどちらのAUに
おいても実行するものとする(一方だけで計算し
て他方に転送する方法よりすこしだけスピードが
早いからである)。このとき1つのpに対して計
算時間は47.7msとなる。 一方、上記アルゴリズムを単独のMUだけで計
算するときの時間は60msである。従つて(並列
処理時間)/(単一処理時間)=1/1.2となり、
能率比は0.6(=1.2/2)である。能率比が0.6に
とどまるのは、{vo+1}の計算を2台のプロセツ
サで分業することができないからである。このこ
とが、また計算例3の最後のところに述べたこと
につながるのである。 計算例 5 (ADI法の応例−ナビエ・ストークス方程式の
差分解法) 非圧縮性粘性流体の2次元的流れを記述するナ
ビエ・ストークス方程式を流れ関数Ψと渦度ζを
用いて表現すれば ∂ζ/∂t+∂Ψ/∂y∂ζ/∂x−∂Ψ/∂x∂ζ/
∂y=1/RΔζ (Rはレイノズル数) ζ=−ΔΨ となる。いま、正方形状のくぼみ領域0<x、y
<1内の流れを考えるものとし、 境界条件 Ψ=0 および ∂Ψ/∂x(0、y)=∂Ψ/∂x(1、y)=0、 ∂Ψ/∂y(x、0)=0 ∂Ψ/∂y(x、1)=U を与える。そして初期条件は静止状態に対応した Ψ=0、ζ=0 とする。これは、くぼみの中の流体が開いた一辺
での一様速度Uでどのように駆動されるかをみる
ためのモデルになつている。 上の偏微分方程式系を近似的に解く差分法の中
でADI法の範ちゆうに入るものの一例をあげる。
正方形領域0<x、y<1の各辺を15等分し、格
子間隔h=1/15の網目をつくり、格子点(x
i、yj)=(ih、jh)上の未知関数値をζi、jなどと
表わす。また、時間ステツプ巾をτとし、時刻t
=nτにおける値を、さらに上つき添数でもつて
ζn i、jなどと表わす。差分商に対して次のような
記号を用いる: Δ1hζi、j=1/h2(ζi+1、j−2ζi、j+ζi-1、j
)、 Δ2hζi、j=1/h2(ζi、j+1−2ζi、j+ζi、j-1
)、 δ1hζi、j=1/2h(ζi+1、j−ζi-1、j)、 δ2hζi、j=1/2h(ζi、j+1−ζi、j-1)、 実際に、計算例として用いる差分アルゴリズム
は次の通りである:J=15として
【表】
【表】
ここでΨの上つき添数rは内部反復の何回目で
あるかを示し、その反復回数をRo+1、反復のパ
ラメーターをτn+1〓としている。 上記のアルゴリズムをAU群によつて実現する
ために、ζ計算の前半部分(1)の、各jに対応した
値の組
あるかを示し、その反復回数をRo+1、反復のパ
ラメーターをτn+1〓としている。 上記のアルゴリズムをAU群によつて実現する
ために、ζ計算の前半部分(1)の、各jに対応した
値の組
【式】(i=1、2、………、J−
1)を未知数とする連立方程式を解くことを各
AU−jに行わせ、後半部分(2)の、各jに対応し
た値{ζn+1 j、k(k=1、2、………J−1)を
未
知数とする連立方程式を解くこともAU−jに行
わせるものとする。Ψについて解く(3)、(4)でも同
様な分担を行う。 以下では、1回の時間ステツプn+n−1を踏
むのにかかる計算時間を考えるものとする。い
ま、AU−jに着目し、そのメモリーに{ζ
n i、j}、{Ψn i、j}(i=0、1、2、………
、J)
および{ζn j、k}、{Ψn j、k}(k=0、1、
……
…、J)が保持されているとする。そして、各
AU−i(i=1、………、J−1)には{h2Δ2
hζn i、j}、{2hδ2hζn i、j}{2hδ2hΨn i
、j}(j=
1、2、………、J−1)の値も保持されている
とする。なお、各AU−iが{ζn i、j}と{Ψ
n i、j}の値を知つてさえいれば、上記の差の値を
計算することは容易である(これに対して、その
AU−iが同じデーターをもつていても、h2Δ1h
ζn i、j、2hδ1hζn i、jなどは直ちに計算できな
い。
というのはAU−i自身にはζn i±1、jの値は保持
されていないからである)。 さて、手順を述べる。 (i) まずAU−jはすべてのAU−i(i=1、
2、………、J−1)からそれぞれFIFO−
(i、j)を介して{h2Δ2hζn i、j、2hδ2hζ
n i、j、2hδ2hΨn i、j}の値を受けとる。そうす
る
と、
AU−jに行わせ、後半部分(2)の、各jに対応し
た値{ζn+1 j、k(k=1、2、………J−1)を
未
知数とする連立方程式を解くこともAU−jに行
わせるものとする。Ψについて解く(3)、(4)でも同
様な分担を行う。 以下では、1回の時間ステツプn+n−1を踏
むのにかかる計算時間を考えるものとする。い
ま、AU−jに着目し、そのメモリーに{ζ
n i、j}、{Ψn i、j}(i=0、1、2、………
、J)
および{ζn j、k}、{Ψn j、k}(k=0、1、
……
…、J)が保持されているとする。そして、各
AU−i(i=1、………、J−1)には{h2Δ2
hζn i、j}、{2hδ2hζn i、j}{2hδ2hΨn i
、j}(j=
1、2、………、J−1)の値も保持されている
とする。なお、各AU−iが{ζn i、j}と{Ψ
n i、j}の値を知つてさえいれば、上記の差の値を
計算することは容易である(これに対して、その
AU−iが同じデーターをもつていても、h2Δ1h
ζn i、j、2hδ1hζn i、jなどは直ちに計算できな
い。
というのはAU−i自身にはζn i±1、jの値は保持
されていないからである)。 さて、手順を述べる。 (i) まずAU−jはすべてのAU−i(i=1、
2、………、J−1)からそれぞれFIFO−
(i、j)を介して{h2Δ2hζn i、j、2hδ2hζ
n i、j、2hδ2hΨn i、j}の値を受けとる。そうす
る
と、
【式】
に関する方程式(1)の係数ならびに右辺の値がす
べて決まる。特に右辺の( )の値(それとA
n i、jとかく)は(2)式を解くときも再び利用され
るのでメモリーに保持しておく。そして {τ/8h2×2hδ1hΨn i、j}(i=1、2、…
……、 J−1)の値を計算し、ストアしておく。 (ii) AU−jはダブルスウイープ法によつて(1)式
を解き、
べて決まる。特に右辺の( )の値(それとA
n i、jとかく)は(2)式を解くときも再び利用され
るのでメモリーに保持しておく。そして {τ/8h2×2hδ1hΨn i、j}(i=1、2、…
……、 J−1)の値を計算し、ストアしておく。 (ii) AU−jはダブルスウイープ法によつて(1)式
を解き、
【式】
(i=0、1、………、J)を決める。その
際、逆スウイープの段階で
際、逆スウイープの段階で
【式】
がi=J、J−1、J−2、………、0の順に
決まつてくるが、それがすべて済むのを持つの
でなく
決まつてくるが、それがすべて済むのを持つの
でなく
【式】
が一つづつ決まる毎に、値の組{
【式】τ/8h2
・2hδ1hΨi、j、An i、j}をDMAチヤネルを
通してFIFO−(i、j)に送る。 (iii) 次にAU−jはすべてのFIFO−(j、k)
(k=1、2、………、J−1)からそれぞれ
{
通してFIFO−(i、j)に送る。 (iii) 次にAU−jはすべてのFIFO−(j、k)
(k=1、2、………、J−1)からそれぞれ
{
【式】τ/8h2
・2hδ1hΨj、k、Aj、k}の値を受けとる。
そうすると、{ζn+1 j、k}(k=0、1、………
、
J)に関する連立方程式(2)の係数および右辺の
値をすべて知つたことになる。そこで再びダブ
ルスウイープ法によつてこの方程式を解く。そ
して値の組{ζn+1 j、k、h2Δ2hΨn j、k}をDM
Aチ
ヤネルを通して各FIFO−(j、k)(k=1、
2、………、J−1)に送る(もちろん、h2Δ
2hΨn j、kはあらかじめ計済算みとしている)。 (iv) さらにAU−jはすべてのFIFO−(i、j)
(i=1、2、………、J−1)からそれぞれ
{ζn+1 i、j、h2Δ2hΨn i、j}の値を受けとる
。既に
保持している{Ψn i、j}とあわせば、方程式(3)
の右辺の( )の値(それをBn+1、0 i、jとかく
)
が決まる。そこで再びダブルスウイープ法によ
つて
そうすると、{ζn+1 j、k}(k=0、1、………
、
J)に関する連立方程式(2)の係数および右辺の
値をすべて知つたことになる。そこで再びダブ
ルスウイープ法によつてこの方程式を解く。そ
して値の組{ζn+1 j、k、h2Δ2hΨn j、k}をDM
Aチ
ヤネルを通して各FIFO−(j、k)(k=1、
2、………、J−1)に送る(もちろん、h2Δ
2hΨn j、kはあらかじめ計済算みとしている)。 (iv) さらにAU−jはすべてのFIFO−(i、j)
(i=1、2、………、J−1)からそれぞれ
{ζn+1 i、j、h2Δ2hΨn i、j}の値を受けとる
。既に
保持している{Ψn i、j}とあわせば、方程式(3)
の右辺の( )の値(それをBn+1、0 i、jとかく
)
が決まる。そこで再びダブルスウイープ法によ
つて
【式】
(i=0、1、2、………、J)を決める。そ
して、値の組{Bn+1、0 i、j、
して、値の組{Bn+1、0 i、j、
【式】
}を各FIFO−(i、j)(i=1、2、……
…、J−1)に送る。 (v) AU−jはすべてのFIFO−(j、k)(k=
1、2、………、J−1)からそれぞれ{B
n+1、0 j、k、
…、J−1)に送る。 (v) AU−jはすべてのFIFO−(j、k)(k=
1、2、………、J−1)からそれぞれ{B
n+1、0 j、k、
【式】
}を受けとり、(4)式を解き、{Ψn+1、1 j、k}
を決
める。そして値の組{h2Δ2hΨn+1、1 j、k、Ψ
n+1、1 j、k}をFIFO−(j、k)(k=1、2、
…
……、J−1)に送る。 (vi) 再びAU−jはすべてのFIFO−(i、j)
(i=1、2、………、J−1)からそれぞれ
{h2Δ2hΨn+1、1 i、j、Ψn+1、1 i、j}を
受けとり、方程
式(3)の右並Bn+1、1 i、jを計算し、それを解く
とに
よつて
を決
める。そして値の組{h2Δ2hΨn+1、1 j、k、Ψ
n+1、1 j、k}をFIFO−(j、k)(k=1、2、
…
……、J−1)に送る。 (vi) 再びAU−jはすべてのFIFO−(i、j)
(i=1、2、………、J−1)からそれぞれ
{h2Δ2hΨn+1、1 i、j、Ψn+1、1 i、j}を
受けとり、方程
式(3)の右並Bn+1、1 i、jを計算し、それを解く
とに
よつて
【式】
を決める。そしてまた(Bn+1、1 i、j、
【式】
}を各FIFO−(i、j)に送る。
(vii) 以下(v)と同じ動作→(vi)と同じ動作→………→
(v)と同じ動作を繰り返えすことによつて{Ψ
n+1 j、k=Ψn+1、Rn+1 j、k、}を決める
に到る。ただ
し、最後の(v)の動作では値の組{ζn+1 j、k、h2
Δ
2hζn+1 j、k、2hδ2hζn+1 j、k、2hδ2hΨn
+1 j、k、Ψ
o+1j、k}を各々FIFO−(j、k)(k=1、2、
………、J−1)に送ることによつて全体のル
ープの(i)に戻ることができる。 ここに述べた動作を行うために、保持したり、
転送したりするデーターが幾種類かあるが、これ
らをストアするために既述したAU内の専用メモ
リーを利用するのである(第9図参照)。それぞ
れの位置に深さ8ワード分の容量があつて、それ
らに番号m=0、1、2、………、7とつけた。
具体的に各データーをどのワードに割り振るかを
示した例が第10図に示されている。第10図で
は、一つのAU−jが行う反復計算の途中で、ど
の値がFIFOに送られ、FIFOから受けとられる
かについても示されている。第10図でH−Rと
あるのはAU−j内の行メモリーのそれぞれに受
けとられる値の種類を示している。H−Sとある
のは同じ行メモリーのそれぞれからFIFOに送る
値の種類を示している。V−Rとあるのは列メモ
リーのそれぞれに受け入れられる値、V−Sは同
じく列メモリーのそれぞれから送り出す値を示し
ている。上の方からH−R、H−S→V−R、V
−S→H−R、H−S→………→V−R、V−S
の繰り返えし計算でn→n+1の1ステツプが完
了することが示されている。ただし、送り状態
(S)で斜線の引いてない値は単に保持しておく
ことを示し、受けの状態(R)で斜線の引いてな
い値は、既に保持されたままのものであることを
示している。 上のアルゴリズムで1ステツプすすめるために
必要な計算時間は内部反復回数Ro+1を5回とす
るならば3875msになる。同じ計算をMUだけで
行うと、54156msとなる。従つて、(並列処理時
間)/(単一処理時間)=1/13.8であり、能率
比0.99(=13.8/14)となる(いまの場合、実働
のプロセツサAUは14台としている)。これは高
能率比である。それは、実際に並列処理する場
合、FIFOを介する転送にかかる時間が18μs/
1ワードぐらいで、それらを合わせても全体の
0.5%に過ぎず、実質的計算部分の殆んどが並列
処理されていることになるからである。 上の結果は、14台のAUを用いて並列処理した
場合のものであるが、これを一般化して、Q台の
AUを利用して、内部反復回数をRとしたとき、
1ステツプすすめるのに要する計算時間は(74.1
+40.3R)Q+1.0R+15.0ms(R=5なら
275.6Q+20.0ms)となる。MUだけで計算する
場合は(73.1+39.9R)Q2+(16.2+0.2R)Qms
(R=5なら272.6Q2+17.2Qmsと評価される。
これから、Qが大きな値になれば、AU群で行う
ときおよそ(74.1+40.3R)Qms、MUだけで行
うときおよそ(73.1+39.9R)Q2msである(こ
の場合Qとは一辺がQ+1等分された格子点上で
考えていることにあたる)。従つて(並列処理時
間)/(単一処理時間)=1/0.988Q(R=1の
とき)でRも大きくなると=1/0.99Qになる。
従つて能率比はやはり0.99となる。 この例のような非線形偏微分方程式をADI法で
解くとき、各AUが処理する計算が十分に複雑で
あつて、明らかに転送にかかる時間に比して多く
の時間が必要なので能率比が極めて高くなつた印
象を与えるかもしれないが、実は方程式自体が簡
単な形をしたポアソン方程式でも能率比は0.99を
下らないことが次の例でわかる。 計算例 6 (ADI法の応用例−ポアソン方程式の差分解
法) 計算例5で考察したナビエ・ストークス方程式
の後半のΨに対する方程式ΔΨ=−ζがポアソン
方程式に外ならない。従つて前の差分アルゴリズ
ムの後半のΨ計算の内部反復の部分だけを取り出
してみればよい。そうすると、AU群で計算する
場合には、5回反復で2822ms、MUだけで5回
反復するときは39095msである。従つて(並列
処理時間)/(単一処理時間)=1/13.85で、能
率比は0.99(=13.85/14)となる。 計算例 7 (計算例6と同じポアソン方程式を単純反復法
で解く場合) 取り扱うアルゴリズムは Ψn+1 i、j=Ψr i、j+τ〓/h2(Ψr i+1、j+Ψr i−1、j+Ψr i、j+1+Ψr i、j−1−
4Ψr i、j)+τ〓ζi、j (r=0、1、2、………) である。これをAU群で実現するためには次の(i)
(ii)の手順を必要回数だけ繰り返えせばよい。 (i) AU−jがすべてのFIFO−(i、j)(i=
1、2、………、J−1)からそれぞれ値Ψ
r i、j+1+Ψr i、j+1を受けとる。上式の右辺
を計算
し、その結果を{Ψr+1 i、j}として各FIFO−
(i、j)(i=1、2、………、J−1)に送
る。 (ii) 次にAU−jはすべてのFIFO−(j、k)
(k=1、2、…………、J−1)から値Ψ
r+1 j、kを受け、和Ψr+1j、k+1+Ψr+1
j、k−1を求めて、そ
れを各FIFO−(j、k)(k=1、2、……
…、J−1)に送る。 5回反復に要する計算時間は992msである。
一方MUだけで単純反復計算を行うときの計算時
間は5回反復で13469msとなる。従つて(並列
処理時間)/(単一処理時間)=1/13.58であ
り、能率比は0.97(=13.58/14)となる。 参考のために、一般的にQ台のAUでR回反復
した場合の計算時間を評価すると14.1QRmsで
あり、MUだけでやる場合の計算時間13.7Q2Rm
sに比して1/0.97Qとなり、能率比は一般的に
も0.97であることがわかる。 計算例 8 (計算例6と同じポアソン方程式をガウスザイ
デル法で解く場合) 取り扱うアルゴリズムは Ψr+1 i、j=1/4(Ψr+1 i−1、j+Ψri+1、j+Ψr+1 i、j−1+Ψr i、j+1)+h2ζ、
j (r=0、1、2、………) である。これをAU群に実現させる場合、各jに
対する未知数の組{Ψr+1 i、j}(i=1、2、3
、
………、J−1)の計算をAU−jに担当させる
ものとする。そのとき、例えばAU−2がΨr+1 1、2
を求めるたには、既にΨr+1 2、1が計算済みでなけ
れ
ばならない。だから、AU−1がΨr+1 2、1を決めれ
ば、それを先にFIFO−(2、1)を通してAU−
2に送つて後、AU−1はΨr+1 3、1の計算にうつる
が、そのとき同時にAU−2はΨr+1 2、2の計算にう
つるという具合に行つていけば、Ψr+1 i、jの値は
i
+jの低い番号から高い番号の方へ波状的に決ま
つていくことになる。AU−jの動作でみれば、
Ψr+1 i、jの値を決めるために、FIFO−(j、j+
1)を介してΨr i、j+1の値を得、次にFIFO−
(j、j−1)を介してΨr+1 i、j−1を得て、上
式の右
辺を計算した後その値をΨr+1 i、jとしてFIFO−(
j
−1、j)とFIFO−(j+1、j)に送ること
をi=1、2、………、J−1の順に繰り返え
す。これが済めば、つづいて{Ψr+2 i、j}(i=
1、2、………、J−1)の計算に入ることにな
る。以上にみるように、この計算では、FIFOバ
ツフアメモリーをすべて利用する必要がなく、三
重対角線上に並ぶものだけを使つている。 上の計算をQ台のAUでR回の反復を行うと計
算時間は8.6(R+1)Qmsである。同じ計算
をMU上で行えば(7.8Q2+0.05Q)Rmsであ
り、(並列処理時間)/(単一処理時間)=1/
(0.907Q+0.0058)(1+1/R)-1となり、QとRが 少し大きめになれば、≒1/0.907Qとなり、能
率比は0.907になる。 ADI法に比べて能率比が落ちるのは、ガウス・
ザイデル法が本来シリアル的なアルゴリズムで完
全な並列処理ができないからである。 以上、とくに計算例5〜8にみる様に、偏微分
方程式の差分近似方程式を反復解法で解くとき、
本発明計算機は能率比0.9〜0.99という高い性能
をもつことが判明した。中でもADI法の場合、Q
台AUを用いいれば、殆んど無駄なくQ倍の性能
をもつ機械になつていることがわかつた。
(v)と同じ動作を繰り返えすことによつて{Ψ
n+1 j、k=Ψn+1、Rn+1 j、k、}を決める
に到る。ただ
し、最後の(v)の動作では値の組{ζn+1 j、k、h2
Δ
2hζn+1 j、k、2hδ2hζn+1 j、k、2hδ2hΨn
+1 j、k、Ψ
o+1j、k}を各々FIFO−(j、k)(k=1、2、
………、J−1)に送ることによつて全体のル
ープの(i)に戻ることができる。 ここに述べた動作を行うために、保持したり、
転送したりするデーターが幾種類かあるが、これ
らをストアするために既述したAU内の専用メモ
リーを利用するのである(第9図参照)。それぞ
れの位置に深さ8ワード分の容量があつて、それ
らに番号m=0、1、2、………、7とつけた。
具体的に各データーをどのワードに割り振るかを
示した例が第10図に示されている。第10図で
は、一つのAU−jが行う反復計算の途中で、ど
の値がFIFOに送られ、FIFOから受けとられる
かについても示されている。第10図でH−Rと
あるのはAU−j内の行メモリーのそれぞれに受
けとられる値の種類を示している。H−Sとある
のは同じ行メモリーのそれぞれからFIFOに送る
値の種類を示している。V−Rとあるのは列メモ
リーのそれぞれに受け入れられる値、V−Sは同
じく列メモリーのそれぞれから送り出す値を示し
ている。上の方からH−R、H−S→V−R、V
−S→H−R、H−S→………→V−R、V−S
の繰り返えし計算でn→n+1の1ステツプが完
了することが示されている。ただし、送り状態
(S)で斜線の引いてない値は単に保持しておく
ことを示し、受けの状態(R)で斜線の引いてな
い値は、既に保持されたままのものであることを
示している。 上のアルゴリズムで1ステツプすすめるために
必要な計算時間は内部反復回数Ro+1を5回とす
るならば3875msになる。同じ計算をMUだけで
行うと、54156msとなる。従つて、(並列処理時
間)/(単一処理時間)=1/13.8であり、能率
比0.99(=13.8/14)となる(いまの場合、実働
のプロセツサAUは14台としている)。これは高
能率比である。それは、実際に並列処理する場
合、FIFOを介する転送にかかる時間が18μs/
1ワードぐらいで、それらを合わせても全体の
0.5%に過ぎず、実質的計算部分の殆んどが並列
処理されていることになるからである。 上の結果は、14台のAUを用いて並列処理した
場合のものであるが、これを一般化して、Q台の
AUを利用して、内部反復回数をRとしたとき、
1ステツプすすめるのに要する計算時間は(74.1
+40.3R)Q+1.0R+15.0ms(R=5なら
275.6Q+20.0ms)となる。MUだけで計算する
場合は(73.1+39.9R)Q2+(16.2+0.2R)Qms
(R=5なら272.6Q2+17.2Qmsと評価される。
これから、Qが大きな値になれば、AU群で行う
ときおよそ(74.1+40.3R)Qms、MUだけで行
うときおよそ(73.1+39.9R)Q2msである(こ
の場合Qとは一辺がQ+1等分された格子点上で
考えていることにあたる)。従つて(並列処理時
間)/(単一処理時間)=1/0.988Q(R=1の
とき)でRも大きくなると=1/0.99Qになる。
従つて能率比はやはり0.99となる。 この例のような非線形偏微分方程式をADI法で
解くとき、各AUが処理する計算が十分に複雑で
あつて、明らかに転送にかかる時間に比して多く
の時間が必要なので能率比が極めて高くなつた印
象を与えるかもしれないが、実は方程式自体が簡
単な形をしたポアソン方程式でも能率比は0.99を
下らないことが次の例でわかる。 計算例 6 (ADI法の応用例−ポアソン方程式の差分解
法) 計算例5で考察したナビエ・ストークス方程式
の後半のΨに対する方程式ΔΨ=−ζがポアソン
方程式に外ならない。従つて前の差分アルゴリズ
ムの後半のΨ計算の内部反復の部分だけを取り出
してみればよい。そうすると、AU群で計算する
場合には、5回反復で2822ms、MUだけで5回
反復するときは39095msである。従つて(並列
処理時間)/(単一処理時間)=1/13.85で、能
率比は0.99(=13.85/14)となる。 計算例 7 (計算例6と同じポアソン方程式を単純反復法
で解く場合) 取り扱うアルゴリズムは Ψn+1 i、j=Ψr i、j+τ〓/h2(Ψr i+1、j+Ψr i−1、j+Ψr i、j+1+Ψr i、j−1−
4Ψr i、j)+τ〓ζi、j (r=0、1、2、………) である。これをAU群で実現するためには次の(i)
(ii)の手順を必要回数だけ繰り返えせばよい。 (i) AU−jがすべてのFIFO−(i、j)(i=
1、2、………、J−1)からそれぞれ値Ψ
r i、j+1+Ψr i、j+1を受けとる。上式の右辺
を計算
し、その結果を{Ψr+1 i、j}として各FIFO−
(i、j)(i=1、2、………、J−1)に送
る。 (ii) 次にAU−jはすべてのFIFO−(j、k)
(k=1、2、…………、J−1)から値Ψ
r+1 j、kを受け、和Ψr+1j、k+1+Ψr+1
j、k−1を求めて、そ
れを各FIFO−(j、k)(k=1、2、……
…、J−1)に送る。 5回反復に要する計算時間は992msである。
一方MUだけで単純反復計算を行うときの計算時
間は5回反復で13469msとなる。従つて(並列
処理時間)/(単一処理時間)=1/13.58であ
り、能率比は0.97(=13.58/14)となる。 参考のために、一般的にQ台のAUでR回反復
した場合の計算時間を評価すると14.1QRmsで
あり、MUだけでやる場合の計算時間13.7Q2Rm
sに比して1/0.97Qとなり、能率比は一般的に
も0.97であることがわかる。 計算例 8 (計算例6と同じポアソン方程式をガウスザイ
デル法で解く場合) 取り扱うアルゴリズムは Ψr+1 i、j=1/4(Ψr+1 i−1、j+Ψri+1、j+Ψr+1 i、j−1+Ψr i、j+1)+h2ζ、
j (r=0、1、2、………) である。これをAU群に実現させる場合、各jに
対する未知数の組{Ψr+1 i、j}(i=1、2、3
、
………、J−1)の計算をAU−jに担当させる
ものとする。そのとき、例えばAU−2がΨr+1 1、2
を求めるたには、既にΨr+1 2、1が計算済みでなけ
れ
ばならない。だから、AU−1がΨr+1 2、1を決めれ
ば、それを先にFIFO−(2、1)を通してAU−
2に送つて後、AU−1はΨr+1 3、1の計算にうつる
が、そのとき同時にAU−2はΨr+1 2、2の計算にう
つるという具合に行つていけば、Ψr+1 i、jの値は
i
+jの低い番号から高い番号の方へ波状的に決ま
つていくことになる。AU−jの動作でみれば、
Ψr+1 i、jの値を決めるために、FIFO−(j、j+
1)を介してΨr i、j+1の値を得、次にFIFO−
(j、j−1)を介してΨr+1 i、j−1を得て、上
式の右
辺を計算した後その値をΨr+1 i、jとしてFIFO−(
j
−1、j)とFIFO−(j+1、j)に送ること
をi=1、2、………、J−1の順に繰り返え
す。これが済めば、つづいて{Ψr+2 i、j}(i=
1、2、………、J−1)の計算に入ることにな
る。以上にみるように、この計算では、FIFOバ
ツフアメモリーをすべて利用する必要がなく、三
重対角線上に並ぶものだけを使つている。 上の計算をQ台のAUでR回の反復を行うと計
算時間は8.6(R+1)Qmsである。同じ計算
をMU上で行えば(7.8Q2+0.05Q)Rmsであ
り、(並列処理時間)/(単一処理時間)=1/
(0.907Q+0.0058)(1+1/R)-1となり、QとRが 少し大きめになれば、≒1/0.907Qとなり、能
率比は0.907になる。 ADI法に比べて能率比が落ちるのは、ガウス・
ザイデル法が本来シリアル的なアルゴリズムで完
全な並列処理ができないからである。 以上、とくに計算例5〜8にみる様に、偏微分
方程式の差分近似方程式を反復解法で解くとき、
本発明計算機は能率比0.9〜0.99という高い性能
をもつことが判明した。中でもADI法の場合、Q
台AUを用いいれば、殆んど無駄なくQ倍の性能
をもつ機械になつていることがわかつた。
第1図は本発明の並列処理計算機の基本的配列
状態の一例を示すブロツク線図、第1A図は第1
図の基本的配列における従プロセツサ群が2次元
配列バツフアーを介して横列及び縦列の機能を有
する態様を示す機能線図、第2図は一つのFIFO
バツフアメモリーにおけるデータバスの接続様式
を示す結線図、第3図は本発明の実施例になる並
列処理計算機の大要図、第4図は第2図に示すバ
ス接続の詳細な実施例回路図、第5図は第4図に
おけるSI REQ、SO REQの信号を作り出すため
の論理回路の実施例を示す図、第6図は主プロセ
ツサと各従プロセツサ間の送受信号の交換を示す
論理回路図、第7図ないし第9図は各プロセツサ
におけるバイトの番地の割当て例を示す図、第1
0図は計算例5のナビエ・ストークス方程式の
ADI解法におけるデーターの割り振りとデーター
の送受様式を示す図である。 MU……主プロセツサ、AU……従プロセツ
サ、FIFO……FIFOシリアルメモリー。
状態の一例を示すブロツク線図、第1A図は第1
図の基本的配列における従プロセツサ群が2次元
配列バツフアーを介して横列及び縦列の機能を有
する態様を示す機能線図、第2図は一つのFIFO
バツフアメモリーにおけるデータバスの接続様式
を示す結線図、第3図は本発明の実施例になる並
列処理計算機の大要図、第4図は第2図に示すバ
ス接続の詳細な実施例回路図、第5図は第4図に
おけるSI REQ、SO REQの信号を作り出すため
の論理回路の実施例を示す図、第6図は主プロセ
ツサと各従プロセツサ間の送受信号の交換を示す
論理回路図、第7図ないし第9図は各プロセツサ
におけるバイトの番地の割当て例を示す図、第1
0図は計算例5のナビエ・ストークス方程式の
ADI解法におけるデーターの割り振りとデーター
の送受様式を示す図である。 MU……主プロセツサ、AU……従プロセツ
サ、FIFO……FIFOシリアルメモリー。
Claims (1)
- 【特許請求の範囲】 1 1台の主プロセツサと複数N台の従プロセツ
サの1次元配列からなる階層的アーキテクチユア
をとる並列処理計算機において、 主プロセツサMUと各従プロセツサAU間、お
よび任意の2台の従プロセツサ同志間でのデータ
転送のためのN行N列の2次元配列からなるバツ
フアメモリーBM群を備え、 前記従プロセツサAUに番号i=0、1、2、
………、N−1をつけ、前記バツフアメモリー
BMに2次元配列番号(i、j)、i、j=0、
1、………、N−1をつけるとき、番号(i、
j)のメモリーには、番号iおよびjの従プロセ
ツサにつながる2種のデータバスが入力され、出
力側も、その2種のバスにつながる接続様式をも
つことを特徴とする並列処理計算機。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9292779A JPS5617458A (en) | 1979-07-21 | 1979-07-21 | Parallel processing computer |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9292779A JPS5617458A (en) | 1979-07-21 | 1979-07-21 | Parallel processing computer |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS5617458A JPS5617458A (en) | 1981-02-19 |
| JPS6155706B2 true JPS6155706B2 (ja) | 1986-11-28 |
Family
ID=14068120
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9292779A Granted JPS5617458A (en) | 1979-07-21 | 1979-07-21 | Parallel processing computer |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS5617458A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20240115530A (ko) * | 2023-01-19 | 2024-07-26 | 에스엔시스(주) | 버블 생성 장치 및 이를 이용한 선박 평형수 처리 시스템 |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS60175174A (ja) * | 1984-02-21 | 1985-09-09 | Agency Of Ind Science & Technol | 並列デ−タ転送方式 |
| FR2736726B1 (fr) * | 1989-12-28 | 1997-12-19 | Thomson Csf | Equipement pour l'interception, la goniometrie et la localisation d'emissions radioelectriques large bande |
| US5513364A (en) * | 1993-03-09 | 1996-04-30 | Matsushita Electric Industrial Co., Ltd. | Data transfer device and multiprocessor system |
| JP3675537B2 (ja) * | 1995-11-29 | 2005-07-27 | 富士通株式会社 | 高速フーリエ変換を行うメモリ分散型並列計算機およびその方法 |
-
1979
- 1979-07-21 JP JP9292779A patent/JPS5617458A/ja active Granted
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20240115530A (ko) * | 2023-01-19 | 2024-07-26 | 에스엔시스(주) | 버블 생성 장치 및 이를 이용한 선박 평형수 처리 시스템 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPS5617458A (en) | 1981-02-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5226171A (en) | Parallel vector processing system for individual and broadcast distribution of operands and control information | |
| US5081573A (en) | Parallel processing system | |
| CN106940815A (zh) | 一种可编程卷积神经网络协处理器ip核 | |
| CN114041140B (zh) | 事件驱动脉冲卷积神经网络 | |
| Kamaleldin et al. | Towards a modular RISC-V based many-core architecture for FPGA accelerators | |
| JPS6211757B2 (ja) | ||
| US11494326B1 (en) | Programmable computations in direct memory access engine | |
| CN103049241A (zh) | 一种提高cpu+gpu异构装置计算性能的方法 | |
| JPH0128409B2 (ja) | ||
| JPH07117948B2 (ja) | コンピユータ装置 | |
| JPH02504682A (ja) | 変換処理回路 | |
| JP2637749B2 (ja) | データ処理装置とその処理方法 | |
| CN109522125B (zh) | 一种矩阵乘积转置的加速方法、装置及处理器 | |
| CN108804380A (zh) | 矢量运算硬件加速器多核级联的周期精确模型 | |
| CN110414672B (zh) | 卷积运算方法、装置及系统 | |
| CN104050148A (zh) | 快速傅里叶变换加速器 | |
| JPS6155706B2 (ja) | ||
| KR100236250B1 (ko) | 고속 수치 프로세서 | |
| JPH08161282A (ja) | 多重命令語の多重データ型の神経網専用のディジタルアレイプロセッサーおよびこれを利用して構成されたシステム | |
| KR102349138B1 (ko) | 사전 프로그래밍 된 함수를 갖는 고속 컴퓨터 가속기 | |
| CN107506332B (zh) | Kalman滤波器快速实现方法 | |
| CN118153494B (zh) | 一种基于axi总线实现矩阵svd分解的硬件加速系统 | |
| Puşcaşu et al. | Systolic Array Matrix Multiplication Accelerator | |
| JPH07271744A (ja) | 並列計算機 | |
| JP3212709B2 (ja) | ロジックシミュレーション装置 |