JPH07271744A - 並列計算機 - Google Patents

並列計算機

Info

Publication number
JPH07271744A
JPH07271744A JP6062215A JP6221594A JPH07271744A JP H07271744 A JPH07271744 A JP H07271744A JP 6062215 A JP6062215 A JP 6062215A JP 6221594 A JP6221594 A JP 6221594A JP H07271744 A JPH07271744 A JP H07271744A
Authority
JP
Japan
Prior art keywords
data
processor
area
arithmetic processing
data transfer
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
JP6062215A
Other languages
English (en)
Inventor
Junji Nishikawa
順二 西川
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP6062215A priority Critical patent/JPH07271744A/ja
Priority to US08/410,077 priority patent/US5842035A/en
Publication of JPH07271744A publication Critical patent/JPH07271744A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Abstract

(57)【要約】 【目的】 本発明は、メモリの使用効率を高めるととも
にプロセッサ間のデータ通信を高速化することのできる
並列計算機を提供することを目的とする。 【構成】 分割されてメモリ11に格納されている配列
データの中の1つのブロックについて、アドレス生成回
路20a、20bで生成されるアドレスに従ってメモリ
11と入出力ポート14と間のデータ転送による分割変
換を行い、データ転送装置13における別のブロックの
分割変換のデータ転送とプロセッサ10における変換後
の配列ブロックに対する演算処理とを並行して実行し、
カウンタ21a、21bでデータ全体の処理が終わるま
で繰り返す。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データをプロセッサエ
レメントに分散し、プロセッエレメント間でデータを分
散/収集しながら並列処理を行う並列計算機に関する。
【0002】
【従来の技術】近年、大規模なデータに対する数値計算
の分野では、並列計算機による処理の高速化が図られて
おり、多数のプロセッサエレメントから構成される並列
システムが開発されている。並列システムの1つに、各
プロセッサエレメントがローカルメモリをもちデータを
プロセッサエレメントに分散する分散メモリ型システム
がある。分散メモリシステムでは、各プロセッサエレメ
ントにおいて各ローカルメモリに割り当てられているデ
ータに対して演算を行う。この分散メモリ型システム
は、データパラレル型の並列処理に適したシステムであ
る。このような分散メモリ型の並列システムでは、並列
化の処理に応じてプロセッサエレメント間のデータ転送
が必要である。並列計算機では、プロセッサエレメント
間のデータ転送ネットワークを通じて、プロセッサエレ
メントに分配された配列データの分散及び収集を実行す
る。
【0003】並列処理を行うためのプログラミング言語
として、HPF("High Performance Fortran Language
Specification Version 1.0", High Performance Fort
ranForum, May 1993)や、ADETRAN(野木 達夫
著「Parallel Programming Language ADETRAN」京都大
学紀要第51巻第4号)などの並列プログラミング言語
が使用される。並列処理による高速化が求められている
大規模な数値計算の分野においては扱うデータは通常は
配列で表される。配列の次元は通常は2次元または3次
元であるが、どの次元に従って分散するかによって各プ
ロセッサエレメントへの割当が異なり、分散方向の異な
るデータが必要な場合にはプロセッサエレメント間でデ
ータの分散と収集を行う。
【0004】図24にADETRANによるプログラム
例を示す。この例では、プロセッサエレメントへの配列
の分散の記述60、61、62、63と、並列に演算を
実行する記述64、65、66、70、71、72と、
プロセッサエレメント間のデータ転送の記述67、6
8、69によって並列処理を実行する。まず、プロセッ
サエレメントへの配列データの割当は//で示し、配列
60、61は//で囲まれている部分の第2の添え字に
ついて各プロセッサエレメントに分割されていることを
表し、配列62、63は//で囲まれている部分の第1
の添え字について各プロセッサエレメントに分割されて
いることを表す。
【0005】このときの各プロセッサエレメントにおけ
る配列60、61、62、63のメモリマップを図25
に示す。配列の大きさは4×4であり、プロセッサエレ
メント数は4である。配列データは、2次元の場合2通
りの1次元配列による分散が可能である。この図に示す
ように1次元化した配列が各プロセッサに分散されてお
り、例えばプロセッサエレメント(PE1)には、配列
A(1:4、/1/)、B(1:4、/1/)、A(/
1/、1:4)、B(/1/、1:4)を割り当てる。
配列のサイズが4×4よりも大きい場合には、1次元で
分割した配列の複数のブロックを1つのプロセッサエレ
メントに割り当てる。
【0006】このように分散された配列データに対する
並列の演算の実行はPDO文64、70で表す。PDO
文64、70では、//によって分割されているデータ
について並列に実行することを指定する。分散メモリシ
ステムであるので、各プロセッサエレメントにおいては
各ローカルメモリに割り当てられているデータに対して
演算を行う。1つめのPDO文64で、第1の添え字方
向であるX方向の演算66を行い、2つめのPDO文7
0で、第2の添え字方向であるY方向の演算72を行
う。この時、PDO文64の演算結果を使ってPDO文
70で演算を行うため、プロセッサエレメント間のデー
タ転送をPASS文67で指定する。このような分散方
向の変換後の配列データに対して更に演算72を行うこ
とにより、配列データ全体にまたがる処理を行うことが
できる。2次元配列の場合であれば、X方向とY方向の
両方向について隣接するデータ間の演算を行うことがで
き、これを繰り返して実行することで、2次元領域全体
の状態変化を求めるような数値計算を行うことができ
る。
【0007】PASS文67で指定されている配列デー
タの分散に関する変換は、プロセッサエレメント間を接
続するネットワークを通じたプロセッサエレメント間の
通信である。通信に必要なアドレス生成機構をもったデ
ータ転送装置によってこの通信を実行することができ
る。例えば、文献(K.Kaneko et al, "VLSI Implementa
tion of a Parallel Computer Network" IEICE transac
tions, Vol.E74, No.11,Nov.1991, pp3810-3818)に示
すハードウエアは、図25に示したようなメモリ上の配
列のアクセスをDMA方式で実行するものである。
【0008】
【発明が解決しようとする課題】上記従来の並列計算機
では、例えば図25に示したように2次元配列を2方向
に分割して並列処理する場合には、1つの配列に対して
その配列サイズの2倍のメモリ領域が必要となる。この
ように、配列の次元に沿った分割を行う場合には、1つ
の配列に対して分割する次元の数だけ領域を割り当てる
必要があり、並列化によってメモリの使用量が増大する
という問題点がある。
【0009】また、並列計算機でのプロセッサ間の通信
量は、上記のように1つの配列に対して分割する次元の
数だけ領域を割り当てるので非常に大きいため、データ
転送時には各プロセッサエレメントにおいてプロセッサ
間通信の為のメモリアクセスが多量に発生することにな
り、メモリのボトルネックが問題となる。本発明は、上
記問題点を解決するためにメモリの使用効率を高めると
ともにプロセッサ間のデータ通信を高速化することので
きる並列計算機を提供することを目的とする。
【0010】
【課題を解決するための手段】上記の課題を解決するた
め、請求項1の発明に係る並列計算機は、複数のプロセ
ッサエレメントと、プロセッサエレメント間を相互に結
合するネットワークとを有する並列計算機であって、プ
ロセッサエレメントの各々は、メモリ手段とプロセッサ
と第1のデータ転送手段と第2のデータ転送手段とを有
し、メモリ手段は、プロセッサに対するプログラムと、
プロセッサエレメントに割当てられたデータとを記憶す
る第1の領域と、作業用データを一時的に記憶する第2
の領域とを有し、第1のデータ転送手段は、他のプロセ
ッサエレメントの第1の領域に割当てられたデータのう
ち自身のプロセッサの演算処理に必要なデータを、ネッ
トワークを介して自身の第2の領域に転送する第1のデ
ータ転送を実行し、プロセッサは、プログラムに従って
第1の領域のデータを用いて演算を実行し、演算結果を
第1の領域に書き戻す第1の演算処理と、プログラムに
従って第2の領域のデータを用いて演算を実行し、演算
結果を第2の領域に書き戻す第2の演算処理とを実行
し、第2のデータ転送手段は、他のプロセッサエレメン
トにおける第2の領域に格納された演算結果を、ネット
ワークを介して自身のプロセッサエレメントの第1の領
域に転送する第2のデータ転送を実行するように構成さ
れている。
【0011】また、請求項2の発明に係る並列計算機
は、請求項1において、前記プロセッサは、プログラム
に従って第1の演算処理及び第2の演算処理のいずれか
を異なるデータに対してくり返し実行し、前記第1のデ
ータ転送手段は、プロセッサの第1又は第2の演算処理
と並行して次の第2の演算処理に対する第1のデータ転
送を実行し、前記第2のデータ転送手段はプロセッサの
第1又は第2の演算処理と並行して1つ前の第2の演算
処理に対する第2のデータ転送を実行するように構成さ
れている。
【0012】請求項3の発明に係る並列計算機は、請求
項1又は2において、前記メモリ手段は第1の領域に、
2次元以上の配列データが1つの次元方向に沿って分割
された分割データであって第1の演算処理の対象となる
分割データを記憶し、前記第1のデータ転送手段は、前
記配列データを異なる次元方向に沿って分割された分割
データに対してプロセッサが第2の演算処理を行う場合
に、前記異なる次元方向に沿って分割された分割データ
の配列要素を他のプロセッサエレメントから第2の領域
に転送するように構成されている。
【0013】請求項4の発明に係る並列計算機は、請求
項3において、前記メモリ手段は第2の領域として、他
のプロセッサエレメントに割当てられた第1の領域のデ
ータのうち自身のプロセッサの演算処理に必要なデータ
を保持する第1のバッファと、第1のバッファと同じ容
量の第2のバッファとを有し、前記第1のデータ転送手
段は、第1のデータ転送を実行する毎に転送先として第
1、第2のバッファを交互に切り替え、前記プロセッサ
は、第2の演算処理を実行する毎に演算処理の対象とな
るデータとして第1のバッファと第2のバッファとを交
互に切り替え、前記第2のデータ転送手段は、第2のデ
ータ転送を実行する毎に転送元として他のプロセッサエ
レメントの第1、第2のバッファを交互に切り替えるよ
うに構成されている。
【0014】また、請求項5の発明に係る並列計算機
は、複数のプロセッサエレメントと、プロセッサエレメ
ント間を相互に結合するネットワークとを有する並列計
算機であって、プロセッサエレメントの各々は、バス接
続されたプロセッサ、メモリ手段およびデータ転送手段
を有し、メモリ手段は、プロセッサに対するプログラム
と、2次元以上の配列データが1つの次元方向に沿って
分割された分割データのうちプロセッサエレメントに割
当てられたデータを記憶する第1の領域と、作業用デー
タを一時的に記憶する第2の領域とを有し、プロセッサ
は、プログラムに従って第1の領域のデータに対して演
算を実行する第1の演算処理と、プログラムに従って第
2の領域のデータに対して演算を実行する第2の演算処
理とを実行し、データ転送手段は、第1の領域に記憶さ
れた分割データの先頭アドレス及びデータサイズを含む
第1の制御情報と、第2の領域に記憶すべき分割データ
の先頭アドレス及びデータサイズを含む第2の制御情報
とを記憶する制御情報記憶手段と、第1の制御情報に基
づいて第1の領域のアドレスを生成する第1のアドレス
生成手段と、第2の制御情報に基づいて第2の領域のア
ドレスを生成する第2のアドレス生成手段と、メモリ手
段から読み出されたデータをネットワークに出力し、メ
モリ手段に書き込むべきデータをネットワークから入力
するデータ入出力手段と、第1のアドレス生成手段のア
ドレスに従って自身のプロセッサエレメントの第1の領
域のデータを読み出して、データ入出力手段を介して他
のプロセッサエレメントに出力する分散制御と、データ
入出力手段を介して入力される他のプロセッサエレメン
トの第1の領域のデータを、第2のアドレス生成手段の
アドレスに従って自身のプロセッサエレメントの第2の
領域へ収集する収集制御とを行う制御手段とを有するよ
うに構成されている。
【0015】請求項6の発明に係る並列計算機は、請求
項5において、前記プロセッサは、プログラムに従って
第1の演算処理及び第2の演算処理のいずれかを繰り返
し実行し、前記制御手段は、プロセッサの第1又は第2
の演算処理と並行して、他のプロセッサエレメントの演
算処理に対する分散制御を実行し、プロセッサの第1又
は第2の演算処理と並行して1つ前の第2の演算処理に
対する収集制御を実行するように構成されている。
【0016】請求項7の発明に係る並列計算機は、請求
項5又は6において、前記メモリ手段は、第2の領域が
第1の領域よりもアクセスタイムが短いメモリ素子で構
成されている。また、請求項8の発明に係る並列計算機
は、複数のプロセッサエレメントと、プロセッサエレメ
ント間を相互に結合するネットワークとを有する並列計
算機であって、プロセッサエレメントの各々は、2ポー
トメモリ手段と、1ポートメモリ手段と、プロセッサ
と、データ転送装置と、2ポートメモリ手段の一方のポ
ートと1ポートメモリ手段とプロセッサとデータ転送装
置とを接続する第1のバスと、2ポートメモリ手段の他
方のポートとデータ転送装置とを接続する第2のバスを
有し、1ポートメモリ手段は、2次元以上の配列データ
について1つの次元方向に沿って分割された分割データ
のうちプロセッサエレメントに割り当てられた分割デー
タを記憶する第1の領域を有し、2ポートメモリ手段
は、前記配列データの異なる次元方向に沿って分割され
た分割データに対してプロセッサが第2の演算処理を行
う場合に、前記異なる次元方向に沿って分割された分割
データを記憶すべき第2の領域を有し、プロセッサは、
プログラムに従って第1の領域のデータに対して演算を
実行する第1の演算処理と、プログラムに従って第2の
領域のデータに対して演算を実行する第2の演算処理と
を実行し、データ転送手段は、第1の領域に記憶された
分割データの先頭アドレス及びデータサイズを含む第1
の制御情報と、第2の領域に記憶すべき分割データの先
頭アドレス及びデータサイズを含む第2の制御情報とを
記憶する制御情報記憶手段と、第1の制御情報に基づい
て第1の領域のアドレスを生成する第1のアドレス生成
手段と、第2の制御情報に基づいて第2の領域のアドレ
スを生成する第2のアドレス生成手段と、1ポートメモ
リ手段から読み出されたデータをネットワークに出力
し、2ポートメモリ手段に書き込むべきデータをネット
ワークから入力するデータ入出力手段と、第1のアドレ
ス生成手段のアドレスに従って自身のプロセッサエレメ
ントの第1の領域のデータを読み出して、データ入出力
手段を介して他のプロセッサエレメントに出力する分散
制御と、データ入出力手段を介して入力される他のプロ
セッサエレメントの第1の領域のデータを、第2のアド
レス生成手段のアドレスに従って自身のプロセッサエレ
メントの第2の領域へ収集する収集制御とを行う制御手
段とを有するように構成されている。
【0017】請求項9の発明に係る並列計算機は、請求
項8において、前記プロセッサは、プログラムに従って
第1の演算処理及び第2の演算処理のいずれかを繰り返
し実行し、前記制御手段は、プロセッサの第1又は第2
の演算処理と並行して、他のプロセッサエレメントの演
算処理に対する分散制御を実行し、プロセッサの第1又
は第2の演算処理と並行して1つ前の第2の演算処理に
対する収集制御を実行するように構成されている。
【0018】また、請求項10の発明に係る並列計算機
は、複数のプロセッサエレメントと、プロセッサエレメ
ント間を相互に結合するネットワークとを有する並列計
算機であって、プロセッサエレメントの各々は、プロセ
ッサと、データ転送手段と、プロセッサとデータ転送手
段を接続するn(nは整数)本のバスと、n本のバスの
それぞれに接続されたn個のメモリ手段とを有し、n個
のメモリ手段のそれぞれは、2次元以上の配列データに
ついて互いに異なる次元方向に沿って分割された分割デ
ータを記憶する第1の領域と、作業用データを一時的に
記憶する第2の領域とを有し、プロセッサは、プログラ
ムに従って各メモリ手段の第1の領域又は第2の領域の
データに対して演算を実行する演算処理を実行し、デー
タ転送手段は、j(jは1以上m以下)番目のメモリ手
段の第1の領域に記憶された分割データの先頭アドレス
及びデータサイズを含む第1の制御情報と、k(kはj
以外で1以上m以下)番目のメモリ手段の第2の領域に
記憶すべき分割データの先頭アドレス及びデータサイズ
を含む第2の制御情報とを記憶する制御情報記憶手段
と、第1の制御情報に基づいてj番目のメモリ手段の第
1の領域のアドレスを生成する第1のアドレス生成手段
と、第2の制御情報に基づいてk番目のメモリ手段の第
2の領域のアドレスを生成する第2のアドレス生成手段
と、メモリ手段から読み出されたデータをネットワーク
に出力し、メモリ手段に書き込むべきデータをネットワ
ークから出力するデータ入出力手段と、第1のアドレス
生成手段のアドレスに従って自身のプロセッサエレメン
トのj番目のメモリ手段の第1の領域のデータを読み出
して、データ入出力手段を介して他のプロセッサエレメ
ントに出力する分散制御と、データ入出力手段を介して
入力される他のプロセッサエレメントのデータを、第2
のアドレス生成手段のアドレスに従って自身のプロセッ
サエレメントのk番目のメモリ手段の第2の領域へ収集
する収集制御とを行う制御手段とを有するように構成さ
れている。
【0019】請求項11の発明に係る並列計算機は、請
求項10において、前記プロセッサは、プログラムに従
って演算処理を繰り返し実行し、前記制御手段は、プロ
セッサの演算処理と並行して、他のプロセッサエレメン
トの演算処理に対する分散制御を実行し、プロセッサの
第1又は第2の演算処理と並行して1つ前の第2の演算
処理に対する収集制御を実行するように構成されてい
る。
【0020】
【作用】上記手段により請求項1の発明に係る並列計算
機においては、プロセッサエレメントの各々のメモリ手
段は、プロセッサに対するプログラムと、プロセッサエ
レメントに割当てられたデータとを記憶する第1の領域
と、作業用データを一時的に記憶する第2の領域とを有
する。第1のデータ転送手段は、他のプロセッサエレメ
ントの第1の領域に割当てられたデータのうち自身のプ
ロセッサの演算処理に必要なデータを、ネットワークを
介して自身の第2の領域に転送する第1のデータ転送を
実行する。プロセッサは、プログラムに従って第1の領
域のデータを用いて演算を実行し、演算結果を第1の領
域に書き戻す第1の演算処理と、プログラムに従って第
2の領域のデータを用いて演算を実行し、演算結果を第
2の領域に書き戻す第2の演算処理とを実行する。第2
のデータ転送手段は、他のプロセッサエレメントにおけ
る第2の領域に格納された演算結果を、ネットワークを
介して自身のプロセッサエレメントの第1の領域に転送
する第2のデータ転送を実行する。
【0021】これにより、メモリ手段は、各プロセッサ
エレメントに割り当てられたデータを記憶する容量と、
プロセッサの第2の演算処理に必要なデータ容量とが確
保されていればよいので、メモリ容量を大幅に削減する
ことができる。請求項2の発明に係る並列計算機では、
請求項1における前記第1のデータ転送手段は、プロセ
ッサの第1又は第2の演算処理と並行して次の第2の演
算処理に対する第1のデータ転送を実行する。前記第2
のデータ転送手段はプロセッサの第1又は第2の演算処
理と並行して1つ前の第2の演算処理に対する第2のデ
ータ転送を実行する。
【0022】これにより、プロセッサの演算処理と第1
のデータ転送と第2のデータ転送とを並行して実行させ
るので、見かけ上プロセッサの演算処理時間に、第1、
第2のデータ転送時間を隠すことが可能となるので、並
列計算の全体の処理速度を向上させることができる。請
求項3の発明に係る並列計算機では、請求項1又は2に
おいて前記メモリ手段は第1の領域に、2次元以上の配
列データが1つの次元方向に沿って分割された分割デー
タであって第1の演算処理の対象となる分割データを記
憶する。前記第1のデータ転送手段は、前記配列データ
を異なる次元方向に沿って分割された分割データに対し
てプロセッサが第2の演算処理を行う場合に、前記異な
る次元方向に沿って分割された分割データの配列要素を
他のプロセッサエレメントから第2の領域に転送する。
【0023】請求項4の発明に係る並列計算機では、請
求項3において前記メモリ手段は第2の領域として、他
のプロセッサエレメントに割当てられた第1の領域のデ
ータのうち自身のプロセッサの演算処理に必要なデータ
を保持する第1のバッファと、第1のバッファと同じ容
量の第2のバッファとを有する。前記第1のデータ転送
手段は、第1のデータ転送を実行する毎に転送先として
第1、第2のバッファを交互に切り替える。前記プロセ
ッサは、第2の演算処理を実行する毎に演算処理の対象
となるデータとして第1のバッファと第2のバッファと
を交互に切り替える。前記第2のデータ転送手段は、第
2のデータ転送を実行する毎に転送元として他のプロセ
ッサエレメントの第1、第2のバッファを交互に切り替
える。
【0024】これにより、第1のデータ転送と第2のデ
ータ転送を異なるバッファに対して実行できるので、さ
らに処理速度を向上させることができる。請求項5の発
明に係る並列計算機では、メモリ手段は、プロセッサに
対するプログラムと、2次元以上の配列データが1つの
次元方向に沿って分割された分割データのうちプロセッ
サエレメントに割当てられたデータを記憶する第1の領
域と、作業用データを一時的に記憶する第2の領域とを
有する。プロセッサは、プログラムに従って第1の領域
のデータに対して演算を実行する第1の演算処理と、プ
ログラムに従って第2の領域のデータに対して演算を実
行する第2の演算処理とを実行する。
【0025】データ転送手段において、第1、第2のア
ドレス生成手段は、それぞれ第1、第2の制御情報に基
づいて第1の領域のアドレスを生成する。データ入出力
手段は、メモリ手段から読み出されたデータをネットワ
ークに出力し、また、メモリ手段に書き込むべきデータ
をネットワークから入力する。制御手段は、第1のアド
レス生成手段のアドレスに従って自身のプロセッサエレ
メントの第1の領域のデータを読み出して、データ入出
力手段を介して他のプロセッサエレメントに出力する分
散制御と、データ入出力手段を介して入力される他のプ
ロセッサエレメントの第1の領域のデータを、第2のア
ドレス生成手段のアドレスに従って自身のプロセッサエ
レメントの第2の領域へ収集する収集制御とを行う。
【0026】これにより、メモリ手段は、各プロセッサ
エレメントに割り当てられたデータを記憶する容量と、
プロセッサの第2の演算処理に必要なデータ容量とが確
保されていればよいので、メモリ容量を大幅に削減する
ことができる。請求項6の発明に係る並列計算機では、
請求項5において前記プロセッサは、プログラムに従っ
て第1の演算処理及び第2の演算処理のいずれかを繰り
返し実行する。前記制御手段は、プロセッサの第1又は
第2の演算処理と並行して、他のプロセッサエレメント
の演算処理に対する分散制御を実行し、プロセッサの第
1又は第2の演算処理と並行して1つ前の第2の演算処
理に対する収集制御を実行する。
【0027】これにより、プロセッサの演算処理と第1
のデータ転送と第2のデータ転送とを並行して実行させ
るので、見かけ上プロセッサの演算処理時間に、第1、
第2のデータ転送時間を隠すことが可能となるので、並
列計算の全体の処理速度を向上させることができる。請
求項7の発明に係る並列計算機では、請求項5又は6に
おいて前記メモリ手段は、第2の領域が第1の領域より
もアクセスタイムが短い。
【0028】これにより、第2の領域に対するデータ転
送をより高速に実現できる。請求項8の発明に係る並列
計算機では、プロセッサエレメントの各々は、2ポート
メモリ手段と、1ポートメモリ手段と、プロセッサと、
データ転送装置と、2ポートメモリ手段の一方のポート
と1ポートメモリ手段とプロセッサとデータ転送装置と
を接続する第1のバスと、2ポートメモリ手段の他方の
ポートとデータ転送装置とを接続する第2のバスを有す
る。1ポートメモリ手段は、2次元以上の配列データに
ついて1つの次元方向に沿って分割された分割データの
うちプロセッサエレメントに割り当てられた分割データ
を記憶する第1の領域を有する。2ポートメモリ手段
は、前記配列データの異なる次元方向に沿って分割され
た分割データに対してプロセッサが第2の演算処理を行
う場合に、前記異なる次元方向に沿って分割された分割
データを記憶すべき第2の領域を有する。プロセッサ
は、プログラムに従って第1の領域のデータに対して演
算を実行する第1の演算処理と、プログラムに従って第
2の領域のデータに対して演算を実行する第2の演算処
理とを実行する。
【0029】データ転送手段において、第1、第2のア
ドレス生成手段は、第1、第2の制御情報に基づいて第
2の領域のアドレスを生成する。データ入出力手段は、
1ポートメモリ手段から読み出されたデータをネットワ
ークに出力し、また、2ポートメモリ手段に書き込むべ
きデータをネットワークから入力する。制御手段は、第
1のアドレス生成手段のアドレスに従って自身のプロセ
ッサエレメントの第1の領域のデータを読み出して、デ
ータ入出力手段を介して他のプロセッサエレメントに出
力する分散制御と、データ入出力手段を介して入力され
る他のプロセッサエレメントの第1の領域のデータを、
第2のアドレス生成手段のアドレスに従って自身のプロ
セッサエレメントの第2の領域へ収集する収集制御とを
行う。
【0030】これにより、第1のデータ転送と第2のデ
ータ転送におけるアクセスの競合を低減できるので、よ
り高速なデータ転送が可能となる。請求項9の発明に係
る並列計算機では、請求項8において前記プロセッサ
は、プログラムに従って第1の演算処理及び第2の演算
処理のいずれかを繰り返し実行する。前記制御手段は、
プロセッサの第1又は第2の演算処理と並行して、他の
プロセッサエレメントの演算処理に対する分散制御を実
行し、プロセッサの第1又は第2の演算処理と並行して
1つ前の第2の演算処理に対する収集制御を実行するこ
れにより、プロセッサの演算処理と第1のデータ転送と
第2のデータ転送とを並行して実行させるので、見かけ
上プロセッサの演算処理時間に、第1、第2のデータ転
送時間を隠すことが可能となるので、並列計算の全体の
処理速度を向上させることができる。
【0031】請求項10の発明に係る並列計算機では、
プロセッサエレメントの各々は、プロセッサと、データ
転送手段と、プロセッサとデータ転送手段を接続するn
(nは整数)本のバスと、n本のバスのそれぞれに接続
されたn個のメモリ手段とを有する。n個のメモリ手段
のそれぞれは、2次元以上の配列データについて互いに
異なる次元方向に沿って分割された分割データを記憶す
る第1の領域と、作業用データを一時的に記憶する第2
の領域とを有する。プロセッサは、プログラムに従って
各メモリ手段の第1の領域又は第2の領域のデータに対
して演算を実行する演算処理を実行する。
【0032】データ転送手段において、第1、第2のア
ドレス生成手段はそれぞれ、第1、第2の制御情報に基
づいてj番目、k番目のメモリ手段の第1の領域のアド
レスを生成する。データ入出力手段は、メモリ手段から
読み出されたデータをネットワークに出力し、また、メ
モリ手段に書き込むべきデータをネットワークから出力
する。制御手段は、第1のアドレス生成手段のアドレス
に従って自身のプロセッサエレメントのj番目のメモリ
手段の第1の領域のデータを読み出して、データ入出力
手段を介して他のプロセッサエレメントに出力する分散
制御と、データ入出力手段を介して入力される他のプロ
セッサエレメントのデータを、第2のアドレス生成手段
のアドレスに従って自身のプロセッサエレメントのk番
目のメモリ手段の第2の領域へ収集する収集制御とを行
う。
【0033】これにより、多次元の配列データを異なる
次元方向に分割した分割データのうち、全ての次元方向
の分割データを記憶しなくても、複数個の分割データを
メモリ手段に割り当てられるのでより少ないメモリ容量
で並列処理を実現することができる。請求項11の発明
に係る並列計算機では、請求項10において前記プロセ
ッサは、プログラムに従って演算処理を繰り返し実行す
る。前記制御手段は、プロセッサの演算処理と並行し
て、他のプロセッサエレメントの演算処理に対する分散
制御を実行し、プロセッサの第1又は第2の演算処理と
並行して1つ前の第2の演算処理に対する収集制御を実
行する。
【0034】これにより、プロセッサの演算処理と第1
のデータ転送と第2のデータ転送とを並行して実行させ
るので、見かけ上プロセッサの演算処理時間に、第1、
第2のデータ転送時間を隠すことが可能となるので、並
列計算の全体の処理速度を向上させることができる。
【0035】
【実施例】図3は、本発明の実施例に係る並列計算機の
構成を示すブロック図である。同図に示すように並列計
算機は、複数のプロセッサエレメント1a〜1bと、そ
れらを接続するネットワーク2から構成されている。同
図では、便宜上2つのプロセッサエレメント1aと1b
とが示されているが、その個数は実際には2個以上例え
ば4、16、128・・・など任意の個数が設定され、
各プロセッサエレメントは何れも同じものである。本実
施例では、プロセッサエレメント1の個数は4であるも
のとする。
【0036】各プロセッサエレメント(以下、PEとも
称す)1は、プロセッサ10、メモリ11、データ転送
装置13から構成され、バス12がそれらを接続してい
る。プロセッサ10は、メモリ11のプログラムを実行
する。メモリ11は、プロセッサ10により実行される
プログラム、およびその実行に必要なデータを格納す
る。メモリ11に格納されるデータは、プログラムに基
づいて分割されてプロセッサエレメント毎に割当てられ
たデータを記憶するデータ領域と、他のプロセッサエレ
メントに割当てられたデータを一時的に記憶するワーク
エリアとしての一時記憶領域とを有している。
【0037】データ転送装置13は、バス12に接続さ
れ、かつ入出力ポート14を通じてネットワーク2にも
接続されていて、メモリ11とネットワーク2間でデー
タを転送する。バス12は、アドレスバスとデータバス
と制御信号を含む。このなかの制御信号は、プロセッサ
10とデータ転送装置13の間でバス12の調停を行う
信号とメモリ11の制御信号とデータ転送装置13から
プロセッサ10への割り込み信号から構成される。
【0038】図4は、図3に示したネットワーク2の構
成を示す図である。同図のように、各PE1〜4は、送
信用ラインと受信用ラインに接続されている。F11〜
44はFIFOメモリであり、格子状に配された送信用
ラインと受信用ラインとの各格子点上に設けられ、送信
ラインから入力されるデータを一時的に保持し、受信ラ
インに出力する。つまり、各FIFOは対応するPE間
のデータ転送に際して、転送データを一時的に保持する
バッファとして用いられる。例えば、PE1からPE2
へのデータを転送は、PE1からFIFOメモリF12
へ、さらにFIFOメモリF12からPE2へと2段階
のデータ転送による実現される。逆にPE2からPE1
へのデータ転送は、PE2→FIFOメモリF21→P
E1の2段階のデータ転送により実現される。
【0039】図1は、図3に示したプロセッサエレメン
ト1内のデータ転送装置13の内部構成を示すブロック
図である。このデータ転送装置13は、アドレス生成回
路R20a、アドレス生成回路S20b、Rカウンタ2
1a、Sカウンタ21b、制御レジスタ22、データ入
出力回路23、転送制御回路24とから構成され、これ
らがデータバス25、アドレスバス26により接続され
ている。さらに、データバス25とアドレスバス26と
割込み等の制御信号とが内部バス27に統合されて、プ
ロセッサエレメント1のバス12に接続されている。
【0040】アドレス生成回路R20aとアドレス生成
回路S20bは、同じ構成でありそれぞれデータ転送に
際してプロセッサエレメント内のメモリ11のアドレス
を生成する。このアドレス生成回路R、Sの2つを設け
ているのは、データ転送には2つの方向があるからであ
り、独立して制御できるようになっている。一方がFI
FOメモリからPEへのデータ転送用、他方がPEから
FIFOメモリへのデータ転送用に使用することができ
る。本実施例では主としてアドレス生成回路R20aは
PEがFIFOからデータを受信する場合のメモリ11
の書込みアドレス生成、アドレス生成回路S20bはP
EがFIFOにデータを送信する場合のメモリ11の読
み出しアドレス生成に使用するものとする。
【0041】Rカウンタ21aは、アドレス生成回路R
20aにおけるデータ転送の回数をカウントする。カウ
ントの初期値は、プロセッサ10から設定されカウント
値が所定の値に達する(例えば、初期値からダウンカウ
ントして0になる)までデータ転送が行われる。Sカウ
ンタ21bは、上記と同様にアドレス生成回路S20b
におけるデータ転送回数をカウントする。
【0042】制御レジスタ22は、データ転送を制御す
る各種のパラメータを保持する。このパラメータとし
て、データサイズ、ステータス、データ転送モードを指
定するフィールドなどがある。データサイズは、転送す
べきデータのサイズを表す。ステータスは、データ転送
の実行中または終了を示す。モードビットは、アドレス
生成回路R20aとアドレス生成回路S20bのそれぞ
れについて、読み出しアドレスであるか書き込みアドレ
スであるかを表し、データ転送の方向を示す。
【0043】データ入出力回路23は、ネットワーク2
の送信用ライン及び受信用ラインとデータバス25との
間でデータを入出力する。データ入出力回路23の入出
力ポート14は、ネットワーク2の送信用ラインおよび
受信用ラインに接続されている。転送制御回路24は、
制御レジスタ22とRカウンタ21aとSカウンタ21
bの内容に従って上記のデータ転送を制御する。より具
体的には、アドレス生成回路R20aとアドレス生成回
路S20bにメモリ11のアドレスを生成させ、データ
入出力回路23にメモリ11と入出力ポート14の間で
データ転送を行わせる。この転送制御回路24は、アド
レス生成回路R20a及びRカウンタ21aを用いるデ
ータ転送と、アドレス生成回路S20b及びSカウンタ
21bを用いるデータ転送の2つデータ転送を独立して
制御する。
【0044】図2は、図1に示したデータ転送装置13
の中のアドレス生成回路R20a、アドレス生成回路S
20bの構成を示す。2つのアドレス生成回路は、同じ
構成であり、パラメータレジスタ41、アドレスレジス
タ42、セレクタ43、加算器44から構成されてい
る。パラメータレジスタ41は、アドレス生成に必要な
パラメータを保持する。パラメータは、データ転送すべ
き配列のベースアドレスや増分値を含み、データバス2
5を通じてプロセッサ10により設定され、データ転送
すべき配列のベースアドレス、増分値などを含む。
【0045】このパラメータレジスタ41からベースア
ドレスがセレクタ43で選択され、アドレスレジスタ4
2に設定される。このアドレスレジスタ42の値とパラ
メータレジスタ41の中の増分値とが加算器44におい
て加算される。加算器44は、加算値をアドレスバス2
6に出力しメモリ11のアドレスとして使用する。ま
た、このアドレスバス26の加算値は、セレクタ43に
おいて選択され再度アドレスレジスタ42に設定され
る。これによりアドレスレジスタ42の値は順次更新さ
れる。
【0046】図5は、上記並列計算機に対する並列計算
用のソースプログラムを目的コードに変換するコンパイ
ラの処理を表すフローチャートである。このコンパイラ
は、ソースプログラムを構文解析して一旦中間言語に変
換した(ステップ1)後、並列化されているプログラム
部分に必要なデータを実際のプロセッサエレメント数に
応じて分割する(ステップ2〜4)。ここまでの処理に
ついては、従来のコンパイラと同様である(中田育男著
「コンパイラ」産業図書、"ADVANCED COMPILER OPTIMIZ
ATIONS FOR SUPERCOMPUTERS",DAVID A PADUA,Communica
tion of the ACM,Dec.1986,Vol.29,No.12)。
【0047】さらに、コンパイラは並列化されているプ
ログラム部分がデータ転送を必要とするか否かを判定す
る(ステップ5)。より具体的に説明すると、ステップ
5においてコンパイラは、ステップ3で抽出された並列
実行すべきプログラム部分における//で指示された分
散方向と、ステップ4で分割された分割方向とが一致し
ていなければ、データ転送が必要と判断する。
【0048】データ転送を必要と判断された場合にはデ
ータの分割を変換するためのデータ転送文をプログラム
部分の前後に付加する(ステップ6)。より具体的に
は、ステップ6においてコンパイラは、並列実行すべき
プログラム部分に必要なデータを//内の変数に基づい
て判別し、そのプログラム部分の直前に必要なデータを
収集するデータ転送文を付加し、プログラム部分の直後
に演算結果を戻すデータ転送文を付加する。ここで、直
前に付加されるデータ転送文は、ステップ4で分割され
たデータ(他のPE1のメモリ11のデータ領域に割当
てられたデータ)で、かつプログラム部分の実行に必要
なデータを収集する(自身のPE1のメモリ11の一時
記憶領域に転送する)ことを双方のデータ転送装置13
に指示する。また、直後に付加されるデータ転送文は、
必要に応じてプログラム部分の実行結果(自身のPE1
のメモリ11の一時記憶領域のデータ)を収集元に戻す
(元のPE1のメモリ11のデータ領域に転送する)こ
とを双方のデータ転送装置13に指示する。このように
して付加されるデータ転送文は、図1に示したデータ転
送装置13の制御レジスタ22やアドレス生成回路R2
0aに対する各種パラメータの設定をその内容とする。
データ転送装置13は、各種パラメータが設定されると
独立してデータ転送を行えるので、プロセッサ10にお
けるプログラム部分の演算処理とデータ転送動作とは並
行して動作することが可能になる。
【0049】この後、データ転送文が付加された中間言
語に基づいて目的コードを生成する(ステップ7)。こ
の目的コードの生成については従来技術(上記の参考文
献)と同じなので、説明を省略する。以上のように構成
された本発明の実施例における並列計算機について、プ
ロセッサエレメント1の個数が4の場合のデータの割当
と並列処理の動作について説明する。
【0050】図6は、並列処理の対象となる配列データ
が16×16の場合のソースプログラムの例である。こ
のソースプログラムは、FOTRANをベースにした並
列処理用のプログラムである。DIMENSION文5
0、51における配列A、B中の//で囲まれた添え字
は、その添え字毎に配列を分割し、分割された配列を複
数のプロセッサエレメント1のメモリ11対応させて割
当てることを指示する。この例では、配列の大きさは1
6×16であるので、配列の第2の添え字毎に配列を1
6分割し、16個のプロセッサエレメントに割当てるこ
とを指示している。プログラム上は、実際のプロセッサ
エレメント1の個数(本実施例では4)とは無関係に分
割の指定ができるので、プログラム上想定されるプロセ
ッサエレメントを仮想プロセッサエレメントと呼ぶ。こ
のプログラム例では、16個の仮想プロセッサエレメン
トが存在することになる。
【0051】PDO文52は、そこからPEND文まで
のプログラム部分を、指定した添え字に関してプロセッ
サエレメントで並列実行させることを指示する。この例
では、PDO J=1、16となっているので配列の第
2の添え字Jに関して、16個の仮想的なプロセッサエ
レメントを用いてプログラム部分53、54を並列実行
させることを指示している。
【0052】PDO文55は、この例では16個の仮想
的なプロセッサエレメントを用いて、配列の第1の添え
字Iに関してプログラム部分56、57を並列実行させ
ることを指示している。図7は、図6に示したソースプ
ログラムがコンパイルされた結果である目的コードの説
明図である。コンパイル結果の目的コードは、実際には
各メモリ11に格納される機械語命令のプログラムであ
るが、ここでは説明の便宜上ソースプログラムの形式で
記載している。
【0053】図7の111、112は、図6のDIME
NSION50、51と同じ形式で記述されているが、
上記ステップ4により分割されたデータを各PEに割当
てて格納する指示を含む。即ち、配列A、Bは//で指
示された方向に分割されて、各PE1のメモリ11に格
納される。図8に、図7のDIMENSION文111
における配列データA(1:16、/1:16/)が分
割された状態と、分割されたデータと16個の仮想PE
との対応関係を示す説明図を示す。同図の配列分割(5
0a)に示すように2次元の配列Aは、//で指示され
た第2の添え字について分割され、第1の添え字の方向
であるX方向の1次元配列ごとに1つの仮想プロセッサ
エレメントに割り当てられる。本実施例では実際のプロ
セッサエレメント1は4個であるため、PE1のそれぞ
れは4つの仮想プロセッサエレメント3を分担する必要
がある。
【0054】図7の113〜115、117〜119
は、4つのPEに対する16個の仮想PEの多重割当を
制御する文である。図9に、2番目のプロセッサエレメ
ント(PE2)に対する仮想プロセッサエレメント3の
多重割当の説明図を示す。同図に示すようにPE2は、
仮想プロセッサエレメント3の番号2、6、10、14
の処理を受け持つ。1つのプロセッサエレメントの受け
持つ仮想プロセッサエレメントの処理を[n]で表す。
この場合はnは1から4までであり、[1]、[2]、
[3]、[4]によって仮想プロセッサエレメント3の
4つ分が1つのプロセッサエレメントに多重されている
ことを区別する。1つのプロセッサエレメントは多重の
カウントnを1から4まで実行することで仮想プロセッ
サエレメント3の処理を行う。
【0055】図10に、上記のように配列分割及び仮想
PE3の多重割当がなされた場合の各PEのメモリマッ
プを示す。例えば2番のプロセッサエレメント(PE
2)にはA(1:16、/2/)、A(1:16、/6
/)、A(1:16、/10/)、A(1:16、/1
4/)の16×4個のデータが分散されている。ここで
注意すべき点は、このメモリマップによれば、図6のプ
ログラム中のPDO文52とPDO文55とで配列デー
タの取り扱いに次のような違いが生じることである。
【0056】PDO文52は、第2の添え字であるJに
ついて並列実行、つまり、メモリ11に割り当てたられ
たX方向の1次元配列に対する処理を行う。したがっ
て、図10のメモリマップでは、各プロセッサエレメン
ト1内のメモリ11はPDO文52に必要なX方向の1
次元配列のデータを格納しているので、プロセッサエレ
メント1間の相互のデータ転送は不要である。
【0057】図7の116(pdo_body1())
は、このPDO文52で指示される実行文53、54に
対応する目的コードである。このpdo_body
1()116の実行に当たってデータ転送は不要である
ので、図10に示したように分割された配列A、Bに対
して各PE内で演算処理が行われる。これに対して、P
DO文55は、第1の添え字であるIについて並列実
行、つまり、メモリ11に割り当てたられたX方向とは
異なるY方向の処理を行う。したがって、図10のメモ
リマップでは、各プロセッサエレメント1内のメモリ1
1にはPDO文55に必要なY方向の1次元配列のデー
タが各プロセッサエレメント1内のメモリ11に分散し
て格納されているので、プロセッサエレメント1間の相
互のデータ転送が必要である。そのため、PDO文55
の実行時においては、図8に示した配列データの分割
は、PDO文55に適するように分割方法が変換される
必要がある。
【0058】図7の122(pdo_body2())
は、このPDO文55で指示される実行文56、57に
対応する目的コードである。このpdo_body
2()122の実行に当たってデータ転送が必要である
ので、図7に示すようにその前にデータ転送文120、
121が、後にデータ転送文123、124がコンパイ
ラによって付加(図5:ステップ6)されている。
【0059】図7のデータ転送文120、121によ
る、PE1に分散している配列データの分割の変換につ
いて説明する。pdo_body2()122では、配
列データは第1の添え字Iで分割されている必要があ
る。図11に式57で必要とする配列に分割した状態の
配列分割(57a)と、仮想プロセッサエレメント3へ
の割当の状態を示す。同図に示すように、配列Aは、第
2の添え字の方向であるY方向の1次元配列ごとに16
に分割され、それぞれが仮想プロセッサエレメント3に
割り当てられる。ここでも、仮想プロセッサエレメント
3は16個であり1つのプロセッサエレメント1には4
個の仮想プロセッサエレメント3が多重に割り当てられ
る。例えば2番のプロセッサエレメント(PE2)の一
次記憶領域にはA(/2/、1:16)、A(/6/、
1:16)、A(/10/、1:16)、A(/14
/、1:16)の16×4個のデータが割り当てられ
る。図11の分割データは、データ転送文120、12
1によって、図10に示した各PE内のメモリ11の一
時記憶領域に配列T1又はT2として格納される。つま
り、図10のメモリマップに示される配列Aをプロセッ
サエレメント1の間で相互に転送し、一時記憶領域にお
いて割当を図11のように変換している。
【0060】図12にメモリ上に割り当てられている配
列分割(50a)と演算対象となる配列(57a)の変
換を示す。仮想プロセッサエレメントの1番(PE1)
が変換後に演算するのに必要なデータは配列A(/1
/、1:16)であり、配列57aの斜線で示した部分
である。このデータは配列50aの割当の斜線で示した
部分であり、4つのPEのメモリ11のデータ領域に分
散されている。例えばPE2のメモリ11のデータ領域
には、A(1、/2/)、A(1、/6/)、A(1、
/10/)、A(1、/14/)の4つの仮想プロセッ
サエレメント3のデータが割り当てられている。この4
つのプロセッサエレメント1の各々が保持しているデー
タを、PE1のメモリ11の一時記憶領域に集めること
によって分割方向を変換することができる。他の仮想プ
ロセッサエレメントについても同様に他のプロセッサエ
レメント1に割り当てられているデータを転送すること
で配列の分割方向を変換する。
【0061】次に、図12に示したように配列データの
分割を変換するため、データ転送文120、121によ
るPE間のデータ転送時のアドレスの生成について説明
する。PDO文55の中の式57で使用する配列57a
は、メモリ上には図10に示す一時領域T1、T2に割
り当てられる。配列の分割変換は、PE間相互におい
て、1つのPEのデータ領域から他のPEの一時領域T
1、T2へのデータ転送で実現される。この一時領域T
1、T2の大きさは、配列の1次元の長さが格納できる
大きさとする。一時領域が2つ設けられているので、1
つのPEに4つの仮想PEが多重化されているので、仮
想PE毎にT1、T2を切り替えて使用するためであ
る。この切り替えは、図7の125の文により行われ
る。
【0062】各PE内のデータ転送装置13中のアドレ
ス生成回路R20aとアドレス生成回路S20bは、配
列の割当をデータ転送文120、121に従って図10
のように割当てられた配列に対して、ベースアドレスと
増分からアドレスを発生する。PE1とPE2間のデー
タ転送の様子を図13(a)に示す。例えば、PE2の
A(1、/2/)をPE1に転送する場合、PE2→F
21→PE1と2段階での転送が行われる。より具体的
にはPE2→F21の段階では、PE2においてデータ
転送装置13のアドレス生成回路S20bが生成する配
列要素A(1、/2/)の読出しアドレスを用いて、メ
モリ11のデータ領域から配列要素A(1、/2/)の
データが読み出され、データ入出力回路23を介してF
21に転送される。F21→PE1の段階では、PE1
においてアドレス生成回路R20aが生成するT1
(1)の書込みアドレスを用いて、F21からデータ入
出力回路23を介して入力される配列要素A(1、/2
/)のデータをT1(1)として一時記憶領域に書き込
む。このときデータ転送装置13は、制御レジスタ22
の分割データサイズ(本実施例では配列要素16個分)
毎に前記メモリ制御手段を停止させるとともに前記プロ
セッサへ転送終了を通知する。データサイズは、Rカウ
ンタ21aによって計数される。また、転送終了の通知
は、制御レジスタ22の値に従って転送制御回路が停止
した時点でプロセッサに割り込みを発生するか、また
は、制御レジスタ22の中の転送状態を示すステータス
をプロセッサからチェックすることで行われる。
【0063】他のPE間でも同様にして、一時記憶領域
に配列分割が変換された配列データが収集される。その
結果、各PE内のメモリ11の一時記憶領域にはA(/
I/、J)がT1(J)又はT2(J)として格納され
る。 (演算と転送の動作)上記ように各PEにおいて一次領
域に配列が格納される処理と並行して、図7のpdo_
body2()122に必要なデータが揃ったもの演算
処理が実行される。プロセッサ10は、必要なデータが
揃ったかどうかを、前記転送終了の通知により判断す
る。転送終了の通知を受けた後、プロセッサ10は、配
列データA(/I/、J)を読み出して演算処理を実行
する。配列データA(/I/、J)(PDO文55参
照)へのアクセスは、実際にはT1(J)またはT2
(J)へのアクセスによって実行される。演算処理の結
果(式57において代入される値)は、一時領域T1、
T2に書き込まれる。
【0064】さらに、pdo_body2()122の
演算処理と並行して、一時記憶領域に格納された演算結
果を元のデータ領域に戻すデータ転送がなされる。図1
3(b)にPE1とPE2間で演算結果を戻すデータ転
送の説明図を示す。例えば、PE1のT1(1)をPE
2のA(1、/2/)に戻す場合、PE1→F12→P
E2と2段階での転送が行われる。より具体的にはPE
1→F12の段階では、PE1においてデータ転送装置
13のアドレス生成回路S20bが生成するT1(1)
の読出しアドレスを用いて、メモリ11の一時記憶領域
からT(1)のデータが読み出され、データ入出力回路
23を介してF12に転送される。F12→PE2の段
階では、PE2においてアドレス生成回路R20aが生
成するデータ領域A1(1、/2/)の書込みアドレス
を用いて、F12からデータ入出力回路23を介して入
力されたデータT1(1)を配列要素A(1、/2/)
としてデータ領域に書き込む。
【0065】他のPE間でも同様にして、一時記憶領域
からデータ領域に対して演算結果である配列データが再
収集される。その結果、各PE内のメモリ11のデータ
領域に演算結果A(I、/J/)が格納される。図10
のメモリマップ中には省略しているが、配列Bについて
も同様に第2の添え字について分割されてX方向の1次
元配列ごとに多重割当されており、式57の配列Bにつ
いても一時領域T1’、T2’(図外)に割り当てられ
る。ただし、式57の配列Bは参照のみで代入していな
いのでこの例の場合は演算後にT1’、T2’から配列
Bの分割に戻すデータ転送は不要である。
【0066】図14は、上記のプロセッサ10の演算処
理とデータ転送装置13のデータ転送処理の動作順序を
示す。横軸は時間の経過を表す。実行文の前のデータ転
送、つまりデータ領域から一時記憶領域への(図13
(a)に示したAからT1またはT2への)データ転送
をRで表し、実行文の後のデータ転送、つまり一時記憶
領域からデータ領域への(図13(b)に示したT1、
T2からAへの)データ転送をSで表す。前述したよう
に多重割当てされている1次元配列について、多重の回
数分の仮想プロセッサエレメント3の処理をおこなうた
め、1つのプロセッサエレメントはデータ転送R、Sと
もに[1]から[4]まで実行する。
【0067】データ転送装置13における一時領域T
1、T2に変換するR[n]の転送の終了に従って、転
送されたデータに対するプロセッサ10の演算処理を開
始する。プロセッサ10の演算終了後は、データ転送装
置13を起動しS[n]のデータ転送を行う。プロセッ
サ10からデータ転送装置13へは、制御レジスタ22
への設定と転送制御回路24の起動によってデータ転送
が起動される。
【0068】プロセッサ10からのデータ転送の起動
は、次の2通りがある。1つはR[n]の転送であり、
もう1つはS[n]の転送とこのS[n]に引き続いて
R[n+2]の転送を行うデータ転送の起動である。2
つめの転送の起動では、転送制御回路24でプロセッサ
10への割り込みによってSからRに切り替える処理を
行うかまたは、転送制御回路24においてSの後にRの
処理を連続して実行する。
【0069】最初にR[1]が起動され(図7:データ
転送文120)、この終了後に1つめの仮想プロセッサ
エレメントの処理PDO[1]が実行される(実行文1
22)。このPDO[1]に入るときに、次の仮想プロ
セッサエレメントの処理に必要なデータの転送R[2]
が起動される(データ転送文121)。2つめの仮想プ
ロセッサエレメントの処理PDO[2]に入るときに
は、処理結果を戻すS[1]を起動する(データ転送文
123、124)。このときデータ転送文123でデー
タ転送文121の終了を待ってからdoループが実行さ
れる。これにより次のdoループの実行文122が正し
く処理されるようになる。データ転送装置13は、S
[1]の処理が終了した後に次の仮想プロセッサエレメ
ントの処理PDO[3]のためのデータ転送R[3]を
実行する(データ転送文121)。このような処理を続
けることにより図14に示したようにプロセッサ10の
演算処理とデータ転送装置13のデータ転送処理とが並
列に実行される。仮想プロセッサエレメントの最後の処
理PDO[4]とその1つ前の処理PDO[3]のあと
は、Rのデータ転送はもはや起動されない。
【0070】ここでは、配列Bについても同様にR
[1]からR[4]までの処理を行なう。このとき、P
DO文内では配列Bは参照のみで値が変化していないの
で、元のメモリ領域に戻す必要がなく、Sのデータ転送
は不要である。なお、3次元配列以上の次元の配列につ
いても同様に1次元配列ごとに分割し、この分割したデ
ータごとにデータ転送とプロセッサの処理と並行して実
行することで効率のよい並列処理を行うことができる。
【0071】また、多重割当をせずに配列全体をて一旦
すべて一時領域に転送し、この後でプロセッサの演算を
行ない最後に元のメモリ領域に戻すことも、多重の数が
1であるとして処理すれば容易に実行可能である。ま
た、多重の代わりに複数の配列についてデータ転送と演
算処理を繰り返して実行することもできる。この場合
は、複数の配列について、配列単位にRとSのデータ転
送を行い、プロセッサエレメントにおける演算処理と並
行して実行する。
【0072】以上のように、各PEのメモリ11は、配
列データを1つの方向に分割して割り当てておくデータ
領域と、分割された1方向分の配列データの容量をもつ
一時記憶領域とを確保するけで済むので、メモリの使用
量を削減することができる。配列のサイズが大きくなっ
て1つのプロセッサエレメントの受け持つ仮想プロセッ
サエレメントの個数が多くなっても、一時領域は各変数
毎に1つの次元の長さの領域を確保するだけでよい。メ
モリの使用量は、次元の数だけ分割して割り当てるのに
比べて、3次元配列では1/3であり2次元配列では1
/2に削減される。
【0073】また、データ転送は、メモリのアドレス生
成によって順次実行されるので、メッセージ通信や必要
なデータを要求してから応答するシステムに発生するよ
うな待ち時間がない。図14に示したように、演算処理
とデータ転送処理は並行して実行されるので、転送時間
の大部分を演算時間に隠すことができ、効率の良い並列
処理が可能となる。特に大規模なデータ処理になるほど
多重割当の数が大きくなり、全体の転送時間のうち隠れ
る部分の割合が大きくなり効果が大きい。
【0074】本発明の他の実施例における並列計算機に
ついて説明する。図15は、本実施例におけるPEの構
成を示す図である。このPEは、プロセッサ10、メモ
リコントローラ(以下、MCUと称す)32a、データ
転送装置13、MCU32b、DRAM11c、SRA
M11dとから構成され、バス12にMCU32a、3
2b、DRAM11c、SRAM11dが接続されてい
る。第1の実施例におけるメモリ11がDRAM11c
とSRAM11dとから構成されている。第1の実施例
と同じ符号の構成要素は同一のものなので、説明を省略
する。
【0075】SRAM11d、DRAM11cは、前者
が後者よりも高速なアクセスタイムを有するメモリであ
る。この両者を併せて、第1の実施例におけるメモリ1
1と等価であり、リニアなアドレス空間上にマッピング
されている。る。DRAM11cは第1の実施例で説明
したデータ領域即ち各PE毎に分割されたデータを記憶
し、SRAM11dは一時記憶領域即ちワークエリアと
して用いられる。
【0076】MCU32aは、プロセッサ10がDRA
M11c又はSRAM11dにアクセスするときに、ア
クセス先がDRAM11cであるかSRAM11dであ
るかに応じてそれぞれに適したアクセスタイムになるよ
うにアクセスを制御する。MCU32bは、MCU32
aと同じであり、データ転送装置13からのアクセスを
制御する。以降2つのMCUに共通の説明ではMCU3
2と略記する。
【0077】図16は、MCU32の構成を示す図であ
る。MCU32はメモリコントロールレジスタ33、ア
クセス制御回路34とから構成される。同図において内
部バス27は、プロセッサ10またはデータ転送装置1
3を接続するバスであり、内部バス制御線83、アドレ
スバス84、データバス85からなる。内部バス制御線
83は、メモリコントロールレジスタ33は、DRAM
11c、SRAM11dそれぞれのアドレス空間とサイ
クルタイムを保持している。
【0078】アクセス制御回路34は、プロセッサ10
またはデータ転送装置13から内部バス27を介してメ
モリアクセスを要求されると、アドレスバス84のアド
レスがDRAM11c、SRAM11dのいずれのアド
レス空間に属するかを判別し、アドレス空間に応じたサ
イクルタイムでアクセスを制御する。以上の構成の並列
計算機における並列処理の動作について説明する。本実
施例においても、図6および図7に示したプログラム例
を用いる。
【0079】図17にDRAM11c、SRAM11d
のアドレス空間を示す。同図に示すようにDRAM領域
は、配列A50と配列Bを記憶するデータ領域、SRA
M空間は配列分割の変換に用いるワークエリアである一
時記憶領域として割り当てられる。SRAM領域は、例
えば図7の実行文122(図6ではPDO文55)に必
要なデータで、データ領域の配列の分割方向とは異なる
方向の配列データT2が割り当てられる。
【0080】図7の実行文116(図6:PDO文5
2)については、プロセッサエレメント1の間のデータ
転送は不要であり、このときはDRAM領域から配列A
と配列Bとがアクセスされる。より具体的には、MCU
32aにおいてアドレス空間がDRAM11cの空間で
あることが判別されると、メモリサイクルがDRAMサ
イクルにてアクセスされる。
【0081】図7の実行文122(図6:PDO文5
5)については、前述したように、配列の分割方向が異
なるためデータ転送装置13によって一時領域T1、T
2にデータ転送が行われる(データ転送文120、12
1)。このとき、図13(a)に示したように、各PE
内のデータ転送装置13のメモリアクセスは、DRAM
11cからの配列A、Bの読み出しと、SRAM11d
への配列データT1、T2の書き込みとがなされる。M
CU32bによってアドレス空間がSRAM11d、D
RAM11cのいずれであるかが判別され、SRAM1
1d、DRAM11cのサイクルタイムに合わせてメモ
リアクセスを行う。
【0082】このデータ転送と並行してプロセッサ10
が演算処理を行う(実行文122)。このとき、プロセ
ッサ10のメモリアクセスはT1、T2を格納するSR
AM11dに対して行われるため、プロセッサ10側の
MCU32aのメモリサイクルはSRAM11dのサイ
クルタイムで行われる。さらに、演算結果に対するデー
タ転送(データ転送文123、124)が図13(b)
に示したよう行われる。
【0083】図18にDRAM11cとSRAM11d
のサイクルタイムが3:1の場合のメモリ11c、11
dのアクセスのシーケンスの例を示す。この図は1つの
データについてのアクセスだけを示したものであり、例
えば、DRAM11cに割り当てられている配列データ
A(1、/1/)について見ると、プロセッサエレメン
ト1(PE1)でのデータ転送装置13からの読み出し
(R−R)はDRAM11cのアクセスとなる。データ
転送装置13は、このデータを一時領域T1、T2に書
き込む(R−W)ときは、SRAM11dへのアクセス
となる。同様に、一時領域T1、T2からの読み出し
(S−R)はSRAM11dへのアクセスであり、この
データがネットワーク2を通じて転送されてきた後に格
納される配列データA(1、/1/)への書き込み(S
−W)はDRAM11cのアクセスとなる。この間のプ
ロセッサ10の演算は一時領域T1、T2に対して実行
されSRAM11dへのアクセスとなる。従って、1つ
の配列データに関する合計6回のアクセスのうち、4回
のアクセスをSRAM11dに対して実行することにな
る。
【0084】以上述べたように、アドレス空間を分割し
て一時領域として速度の速いメモリを小量付加するだけ
でデータ転送処理と演算処理におけるメモリアクセスを
高速化することができ、メモリアクセスのボトルネック
を減少することが可能となる。特に、大規模配列を格納
するために低コストな速度の遅いDRAMを使用したシ
ステムにおいて効果が大きい。この一時領域は配列の一
部分の大きさでよいので、多重割当を行う場合なのどの
プログラム上の配列サイズが大きい場合でも、一時領域
のサイズは小量で済む。また、図17では、メモリ割り
当てをアドレスの小さい方から大き方へSRAMとDR
AMの順に割り当てているが、T1、T2のサイズがS
RAMのサイズよりも大きいときは、SRAMを越える
部分が自動的にDRAM領域にかかるだけであり、プロ
グラムの制限はない。
【0085】なお、上記SRAM領域は、配列の分散/
収集に使用しないときは、システム領域として使用して
もよい。この場合は、メッセージ通信などにおいて、ラ
ンダムに受信するデータを、一時的にシステム領域に書
き込む。プロセッサエレメント上のOS(オペレーティ
ングシステム)によって、システム領域のメッセージを
解読して、ユーザープログラムに渡す処理を、高速なメ
モリ領域において実行可能なため高速化が可能となる。
【0086】図19は、本発明の第3の実施例における
並列計算機の構成を示す図である。同図において、プロ
セッサエレメント1は、プロセッサ10、1ポートメモ
リ90、2ポートメモリ91、データ転送装置131か
ら構成される。前述の実施例と同じ符号の構成要素は、
同じものなので説明を省略する。1ポートメモリ90、
2ポートメモリ91は、前述の実施例のメモリ11に相
当するメモリであり、それぞれデータ領域、一時記憶領
域に対応する。
【0087】バス92は、プロセッサ10、1ポートメ
モリ90、2ポートメモリ91の一方のポート、データ
転送装置131を接続する。バス93は、2ポートメモ
リ91の他方のポートとデータ転送装置131とを接続
する。バス切り替え回路35、36は、バス92、バス
93とデータ転送装置13の内部バス27及びアドレス
バス26a、26bとの接続を切り替える。このバス切
り替え回路35、36によって、データ転送装置は1ポ
ートメモリ90及び2ポートメモリ91にアクセスを行
う。プロセッサ10からは、1ポートメモリ90と2ポ
ートメモリ91のアドレス空間を切り替えることで1つ
のバス92を通じてメモリアクセスする。
【0088】以上の構成の並列計算機についての動作を
説明する。図20に1ポートメモリ90、2ポートメモ
リ91のメモリマップを示す。図面2のプログラム例に
おける配列A及び配列Bは、1ポートメモリ90に割り
当てられる。実行文122(式57)でアクセスされる
配列データT1、T2は、を2ポートメモリ91に割り
当てられる。
【0089】図21にメモリアクセスの発生順序の例を
示す。バス92とバス93にそれぞれ、前述したのと同
様にデータ転送装置13のデータ転送処理に必要なメモ
リアクセス(R−R、R−W、S−R、S−W)とプロ
セッサ10の演算処理に必要なメモリアクセス(プロセ
ッサ1、プロセッサ2)が発生する。図21の中のそれ
ぞれに付与されている番号1、2は2種類のデータが次
々とアクセスされて処理される状態を区別したものであ
る。データ転送装置13における配列A(1、/1/)
の読みだし(R−R)と書き込み(S−W)は1ポート
メモリ90のメモリアクセスである。プログラム上の分
割方向の異なる配列A(/1/、1)の読みだし(S−
R)と書き込み(R−W)については、T1、T2の領
域となる2ポートメモリ91へのメモリアクセスとな
る。従って、データ転送装置13のメモリアクセスは、
図21に示したように1つめと2つめを重ねることがで
き、メモリのアクセスする回数を見かけ上減少させるこ
とができる。
【0090】以上説明したように、2ポートメモリ91
に一時領域T1、T2を割り当てることにより、プロセ
ッサエレメント間のデータ転送におけるデータ転送装置
13のメモリアクセスを並行して実行することができ、
メモリアクセスを高速化することができる。また、この
2ポートメモリ91は一時領域T1、T2のため小容量
でよいので、コストの増加を抑えることができる。な
お、2ポートメモリ91を高速なアクセスタイムのメモ
リとし、前記他の実施例に示したようなアドレス空間に
応じてメモリサイクルを変化させることのできるMCU
32を使用することで、プロセッサ10における演算処
理のメモリアクセスも高速化することができ、データ転
送処理とともに演算処理も高速化することができる。
【0091】なお、図22に示すように、バス92a、
92b、92cを複数にしてそれぞれに1ポートメモリ
90a、90b、90cを接続し、2ポートメモリ91
cをバス93cに接続する構成も可能である。この場合
には、図23のメモリマップに示すように、3次元配列
の分割を3通りにして、それぞれの1ポートメモリ90
a、90b、90cに割り当てる。配列は、X方向の1
次元配列ごとの分割であるA(1:16、/1、1/)
とY方向の分割であるC(1/、1:16、/1)とZ
方向の分割であるB(/1、1/、1:16)の3通り
をそれぞれ割り当てる。プロセッサ10における、ある
方向についての演算処理は、他の方向から必要とするデ
ータ転送のためのデータ転送装置のメモリアクセスと競
合することがなくなり、メモリアクセスを並列化するこ
とが可能となり、メモリアクセスを高速化することが可
能となる。また、一時領域として2ポートメモリ91c
を割り当てることで、データ転送装置13におけるこの
一時領域のメモリアクセスを、1ポートメモリ90cと
並行に行うことも可能である。
【0092】
【発明の効果】以上説明してきたように、請求項1の発
明に係る並列計算機において、メモリ手段は、各プロセ
ッサエレメントに割り当てられたデータを記憶する容量
と、プロセッサの第2の演算処理に必要なデータ容量と
が確保されていればよいので、メモリ容量を大幅に削減
することができるという効果がある。
【0093】請求項2の発明に係る並列計算機では、請
求項1の効果に加えて、プロセッサの演算処理と第1の
データ転送と第2のデータ転送とを並行して実行させる
ので、見かけ上プロセッサの演算処理時間に、第1、第
2のデータ転送時間を隠すことが可能となるので、並列
計算の全体の処理速度を向上させることができるという
効果がある。
【0094】請求項3の発明に係る並列計算機では、請
求項1又は2と同様の効果があり、特に、2次元以上の
配列データが1つの次元方向に沿って分割し、異なる分
割方向に再分割・収集する必要がある場合の並列計算に
効果を奏する。請求項4の発明に係る並列計算機では、
請求項3と同様の効果に加えて、第1のデータ転送と第
2のデータ転送を異なるバッファに対して実行できるの
で、さらに処理速度を向上させることができるという効
果がある。
【0095】請求項5の発明に係る並列計算機では、請
求項4と同様の効果に加えて、メモリ手段は、各プロセ
ッサエレメントに割り当てられたデータを記憶する容量
と、プロセッサの第2の演算処理に必要なデータ容量と
が確保されていればよいので、並列計算に必要なメモリ
容量を削減することができるという効果がある。請求項
6の発明に係る並列計算機では、請求項5と同様の効果
に加えて、プロセッサの演算処理と第1のデータ転送と
第2のデータ転送とを並行して実行させるので、見かけ
上プロセッサの演算処理時間に、第1、第2のデータ転
送時間を隠すことが可能となるので、並列計算の全体の
処理速度を向上させることができる。
【0096】請求項7の発明に係る並列計算機では、請
求項5又は6と同様の効果に加えて、第2の領域に対す
るデータ転送をより高速に実現できる。請求項8の発明
に係る並列計算機では、第1のデータ転送と第2のデー
タ転送におけるアクセスの競合を低減できるので、少な
いメモリ容量でより高速なデータ転送が可能となる。
【0097】請求項9の発明に係る並列計算機では、請
求項8と同様の効果加えて、プロセッサの演算処理と第
1のデータ転送と第2のデータ転送とを並行して実行さ
せるので、見かけ上プロセッサの演算処理時間に、第
1、第2のデータ転送時間を隠すことが可能となるの
で、並列計算の全体の処理速度を向上させることができ
る。
【0098】請求項10の発明に係る並列計算機では、
多次元の配列データを異なる次元方向に分割した分割デ
ータのうち、全ての次元方向の分割データを記憶しなく
ても、複数個の分割データをメモリ手段に割り当てられ
るのでより少ないメモリ容量で並列処理を実現すること
ができる。請求項11の発明に係る並列計算機では、請
求項10と同様の効果に加えて、プロセッサの演算処理
と第1のデータ転送と第2のデータ転送とを並行して実
行させるので、見かけ上プロセッサの演算処理時間に、
第1、第2のデータ転送時間を隠すことが可能となるの
で、並列計算の全体の処理速度を向上させることができ
る。
【図面の簡単な説明】
【図1】本発明の実施例におけるプロセッサエレメント
の構成図である。
【図2】同実施例におけるアドレス生成回路の構成図で
ある。
【図3】同実施例における並列計算機の構成図である。
【図4】同実施例におけるネットワークの構成図であ
る。
【図5】同実施例における並列計算機に供するコンパイ
ラの処理フロー図である。
【図6】同実施例における並列計算機用のソースプログ
ラム例を示す図である。
【図7】同実施例における並列計算機用の目的プログラ
ム例を示す図である。
【図8】同実施例における仮想プロセッサエレメントへ
のデータ割当図である。
【図9】同実施例におけるプロセッサエレメントへの仮
想プロセッサエレメントの多重割当を示す図である。
【図10】同実施例におけるプロセッサエレメントのメ
モリマップ図である。
【図11】同実施例におけるプロセッサエレメントへの
仮想プロセッサエレメントの多重割当を示す図である。
【図12】2種類の分割方法の間のプロセッサエレメン
トへのデータの割当の変換を示す図である。
【図13】(a)配列の分割を変換(再分散)する場合
のデータ転送の説明図である。 (b)配列の分割を変換(収集)する場合のデータ転送
の説明図である。
【図14】同実施例におけるプロセッサの演算処理とデ
ータ転送装置のデータ転送処理の動作順序を示す図であ
る。
【図15】本発明の他の実施例におけるプロセッサエレ
メントの構成を示す図である。
【図16】同実施例におけるメモリコントロールユニッ
トの構成図である。
【図17】同実施例におけるメモリマップを示す図であ
る。
【図18】同実施例におけるプロセッサの演算処理とデ
ータ転送装置のデータ転送処理の動作順序を示す図であ
る。
【図19】本発明の第3の実施例のプロセッサエレメン
トの構成を示す図である。
【図20】同実施例におけるメモリマップを示す図であ
る。
【図21】同実施例におけるプロセッサの演算処理とデ
ータ転送装置のデータ転送処理の動作順序を示す図であ
る。
【図22】図19のプロセッサエレメントのバスの拡張
例の構成図である。
【図23】図22の構成におけるメモリマップを示す図
である。
【図24】従来技術におけるのプログラム例である。
【図25】従来技術におけるメモリマップを示す図であ
る。
【符号の説明】
1 プロセッサエレメント 2 ネットワーク 3 仮想プロセッサエレメント 10 プロセッサ 11 メモリ 11c DRAM 11d SRAM 12 バス 13 データ転送装置 14 入出力ポート 20a アドレス生成回路R 20b アドレス生成回路S 21a Rカウンタ 21b Sカウンタ 22 制御レジスタ 23 データ入出力回路 24 転送制御回路 25 データバス 26 アドレスバス 26a アドレスバス 27 内部バス 32 MCU 32a MCU 32b MCU 33 メモリコントロールレジスタ 34 アクセス制御回路 35 バス切り替え回路 41 パラメータレジスタ 42 アドレスレジスタ 43 セレクタ 44 加算器

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサエレメントと、プロセ
    ッサエレメント間を相互に結合するネットワークとを有
    する並列計算機であって、 プロセッサエレメントの各々は、メモリ手段とプロセッ
    サと第1のデータ転送手段と第2のデータ転送手段とを
    有し、 メモリ手段は、プロセッサに対するプログラムと、プロ
    セッサエレメントに割当てられたデータとを記憶する第
    1の領域と、作業用データを一時的に記憶する第2の領
    域とを有し、 第1のデータ転送手段は、他のプロセッサエレメントの
    第1の領域に割当てられたデータのうち自身のプロセッ
    サの演算処理に必要なデータを、ネットワークを介して
    自身の第2の領域に転送する第1のデータ転送を実行
    し、 プロセッサは、プログラムに従って第1の領域のデータ
    を用いて演算を実行し、演算結果を第1の領域に書き戻
    す第1の演算処理と、プログラムに従って第2の領域の
    データを用いて演算を実行し、演算結果を第2の領域に
    書き戻す第2の演算処理とを実行し、 第2のデータ転送手段は、他のプロセッサエレメントに
    おける第2の領域に格納された演算結果を、ネットワー
    クを介して自身のプロセッサエレメントの第1の領域に
    転送する第2のデータ転送を実行することを特徴とする
    並列計算機。
  2. 【請求項2】前記プロセッサは、プログラムに従って第
    1の演算処理及び第2の演算処理のいずれかを異なるデ
    ータに対してくり返し実行し、 前記第1のデータ転送手段は、プロセッサの第1又は第
    2の演算処理と並行して次の第2の演算処理に対する第
    1のデータ転送を実行し、 前記第2のデータ転送手段はプロセッサの第1又は第2
    の演算処理と並行して1つ前の第2の演算処理に対する
    第2のデータ転送を実行することを特徴とする請求項1
    記載の並列計算機。
  3. 【請求項3】前記メモリ手段は第1の領域に、2次元以
    上の配列データが1つの次元方向に沿って分割された分
    割データであって第1の演算処理の対象となる分割デー
    タを記憶し、 前記第1のデータ転送手段は、前記配列データを異なる
    次元方向に沿って分割された分割データに対してプロセ
    ッサが第2の演算処理を行う場合に、前記異なる次元方
    向に沿って分割された分割データの配列要素を他のプロ
    セッサエレメントから第2の領域に転送することを特徴
    とする請求項1又は2記載の並列計算機。
  4. 【請求項4】前記メモリ手段は第2の領域として、他の
    プロセッサエレメントに割当てられた第1の領域のデー
    タのうち自身のプロセッサの演算処理に必要なデータを
    保持する第1のバッファと、第1のバッファと同じ容量
    の第2のバッファとを有し、 前記第1のデータ転送手段は、第1のデータ転送を実行
    する毎に転送先として第1、第2のバッファを交互に切
    り替え、 前記プロセッサは、第2の演算処理を実行する毎に演算
    処理の対象となるデータとして第1のバッファと第2の
    バッファとを交互に切り替え、 前記第2のデータ転送手段は、第2のデータ転送を実行
    する毎に転送元として他のプロセッサエレメントの第
    1、第2のバッファを交互に切り替えることを特徴とす
    る請求項3記載の並列計算機。
  5. 【請求項5】 複数のプロセッサエレメントと、プロセ
    ッサエレメント間を相互に結合するネットワークとを有
    する並列計算機であって、 プロセッサエレメントの各々は、バス接続されたプロセ
    ッサ、メモリ手段およびデータ転送手段を有し、 メモリ手段は、プロセッサに対するプログラムと、2次
    元以上の配列データが1つの次元方向に沿って分割され
    た分割データのうちプロセッサエレメントに割当てられ
    たデータを記憶する第1の領域と、作業用データを一時
    的に記憶する第2の領域とを有し、 プロセッサは、プログラムに従って第1の領域のデータ
    に対して演算を実行する第1の演算処理と、プログラム
    に従って第2の領域のデータに対して演算を実行する第
    2の演算処理とを実行し、 データ転送手段は、 第1の領域に記憶された分割データの先頭アドレス及び
    データサイズを含む第1の制御情報と、第2の領域に記
    憶すべき分割データの先頭アドレス及びデータサイズを
    含む第2の制御情報とを記憶する制御情報記憶手段と、 第1の制御情報に基づいて第1の領域のアドレスを生成
    する第1のアドレス生成手段と、 第2の制御情報に基づいて第2の領域のアドレスを生成
    する第2のアドレス生成手段と、 メモリ手段から読み出されたデータをネットワークに出
    力し、メモリ手段に書き込むべきデータをネットワーク
    から入力するデータ入出力手段と、 第1のアドレス生成手段のアドレスに従って自身のプロ
    セッサエレメントの第1の領域のデータを読み出して、
    データ入出力手段を介して他のプロセッサエレメントに
    出力する分散制御と、データ入出力手段を介して入力さ
    れる他のプロセッサエレメントの第1の領域のデータ
    を、第2のアドレス生成手段のアドレスに従って自身の
    プロセッサエレメントの第2の領域へ収集する収集制御
    とを行う制御手段とを有することを特徴とする並列計算
    機。
  6. 【請求項6】前記プロセッサは、プログラムに従って第
    1の演算処理及び第2の演算処理のいずれかを繰り返し
    実行し、 前記制御手段は、プロセッサの第1又は第2の演算処理
    と並行して、他のプロセッサエレメントの演算処理に対
    する分散制御を実行し、プロセッサの第1又は第2の演
    算処理と並行して1つ前の第2の演算処理に対する収集
    制御を実行することを特徴とする請求項5記載の並列計
    算機。
  7. 【請求項7】前記メモリ手段は、第2の領域が第1の領
    域よりもアクセスタイムが短いメモリ素子で構成されて
    いることを特徴とする請求項5又は6記載の並列計算
    機。
  8. 【請求項8】 複数のプロセッサエレメントと、プロセ
    ッサエレメント間を相互に結合するネットワークとを有
    する並列計算機であって、 プロセッサエレメントの各々は、2ポートメモリ手段
    と、1ポートメモリ手段と、プロセッサと、データ転送
    装置と、2ポートメモリ手段の一方のポートと1ポート
    メモリ手段とプロセッサとデータ転送装置とを接続する
    第1のバスと、2ポートメモリ手段の他方のポートとデ
    ータ転送装置とを接続する第2のバスを有し、 1ポートメモリ手段は、2次元以上の配列データについ
    て1つの次元方向に沿って分割された分割データのうち
    プロセッサエレメントに割り当てられた分割データを記
    憶する第1の領域を有し、 2ポートメモリ手段は、前記配列データの異なる次元方
    向に沿って分割された分割データに対してプロセッサが
    第2の演算処理を行う場合に、前記異なる次元方向に沿
    って分割された分割データを記憶すべき第2の領域を有
    し、 プロセッサは、プログラムに従って第1の領域のデータ
    に対して演算を実行する第1の演算処理と、プログラム
    に従って第2の領域のデータに対して演算を実行する第
    2の演算処理とを実行し、 データ転送手段は、 第1の領域に記憶された分割データの先頭アドレス及び
    データサイズを含む第1の制御情報と、第2の領域に記
    憶すべき分割データの先頭アドレス及びデータサイズを
    含む第2の制御情報とを記憶する制御情報記憶手段と、 第1の制御情報に基づいて第1の領域のアドレスを生成
    する第1のアドレス生成手段と、 第2の制御情報に基づいて第2の領域のアドレスを生成
    する第2のアドレス生成手段と、 1ポートメモリ手段から読み出されたデータをネットワ
    ークに出力し、2ポートメモリ手段に書き込むべきデー
    タをネットワークから入力するデータ入出力手段と、 第1のアドレス生成手段のアドレスに従って自身のプロ
    セッサエレメントの第1の領域のデータを読み出して、
    データ入出力手段を介して他のプロセッサエレメントに
    出力する分散制御と、データ入出力手段を介して入力さ
    れる他のプロセッサエレメントの第1の領域のデータ
    を、第2のアドレス生成手段のアドレスに従って自身の
    プロセッサエレメントの第2の領域へ収集する収集制御
    とを行う制御手段とを有することを特徴とする並列計算
    機。
  9. 【請求項9】前記プロセッサは、プログラムに従って第
    1の演算処理及び第2の演算処理のいずれかを繰り返し
    実行し、 前記制御手段は、プロセッサの第1又は第2の演算処理
    と並行して、他のプロセッサエレメントの演算処理に対
    する分散制御を実行し、プロセッサの第1又は第2の演
    算処理と並行して1つ前の第2の演算処理に対する収集
    制御を実行することを特徴とする請求項8記載の並列計
    算機。
  10. 【請求項10】 複数のプロセッサエレメントと、プロ
    セッサエレメント間を相互に結合するネットワークとを
    有する並列計算機であって、 プロセッサエレメントの各々は、プロセッサと、データ
    転送手段と、プロセッサとデータ転送手段を接続するn
    (nは整数)本のバスと、n本のバスのそれぞれに接続
    されたn個のメモリ手段とを有し、 n個のメモリ手段のそれぞれは、2次元以上の配列デー
    タについて互いに異なる次元方向に沿って分割された分
    割データを記憶する第1の領域と、作業用データを一時
    的に記憶する第2の領域とを有し、 プロセッサは、プログラムに従って各メモリ手段の第1
    の領域又は第2の領域のデータに対して演算を実行する
    演算処理を実行し、 データ転送手段は、 j(jは1以上m以下)番目のメモリ手段の第1の領域
    に記憶された分割データの先頭アドレス及びデータサイ
    ズを含む第1の制御情報と、k(kはj以外で1以上m
    以下)番目のメモリ手段の第2の領域に記憶すべき分割
    データの先頭アドレス及びデータサイズを含む第2の制
    御情報とを記憶する制御情報記憶手段と、第1の制御情
    報に基づいてj番目のメモリ手段の第1の領域のアドレ
    スを生成する第1のアドレス生成手段と、 第2の制御情報に基づいてk番目のメモリ手段の第2の
    領域のアドレスを生成する第2のアドレス生成手段と、 メモリ手段から読み出されたデータをネットワークに出
    力し、メモリ手段に書き込むべきデータをネットワーク
    から出力するデータ入出力手段と、 第1のアドレス生成手段のアドレスに従って自身のプロ
    セッサエレメントのj番目のメモリ手段の第1の領域の
    データを読み出して、データ入出力手段を介して他のプ
    ロセッサエレメントに出力する分散制御と、データ入出
    力手段を介して入力される他のプロセッサエレメントの
    データを、第2のアドレス生成手段のアドレスに従って
    自身のプロセッサエレメントのk番目のメモリ手段の第
    2の領域へ収集する収集制御とを行う制御手段とを有す
    ることを特徴とする並列計算機。
  11. 【請求項11】前記プロセッサは、プログラムに従って
    演算処理を繰り返し実行し、 前記制御手段は、プロセッサの演算処理と並行して、他
    のプロセッサエレメントの演算処理に対する分散制御を
    実行し、プロセッサの第1又は第2の演算処理と並行し
    て1つ前の第2の演算処理に対する収集制御を実行する
    ことを特徴とする請求項10記載の並列計算機。
JP6062215A 1994-03-31 1994-03-31 並列計算機 Pending JPH07271744A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6062215A JPH07271744A (ja) 1994-03-31 1994-03-31 並列計算機
US08/410,077 US5842035A (en) 1994-03-31 1995-03-24 Parallel computer utilizing less memory by having first and second memory areas

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6062215A JPH07271744A (ja) 1994-03-31 1994-03-31 並列計算機

Publications (1)

Publication Number Publication Date
JPH07271744A true JPH07271744A (ja) 1995-10-20

Family

ID=13193711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6062215A Pending JPH07271744A (ja) 1994-03-31 1994-03-31 並列計算機

Country Status (2)

Country Link
US (1) US5842035A (ja)
JP (1) JPH07271744A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006201946A (ja) * 2005-01-19 2006-08-03 Fujitsu Ltd プロセッサ間通信装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3683281B2 (ja) * 1996-10-18 2005-08-17 富士通株式会社 メモリアクセスの高速化処理装置および方法
CN101105514A (zh) * 2006-07-14 2008-01-16 深圳富泰宏精密工业有限公司 便携式电子装置测试系统及测试方法
DE102009019096A1 (de) * 2009-04-20 2010-11-04 Pilz Gmbh & Co. Kg Sicherheitssteuerung und Verfahren zum Steuern einer automatisierten Anlage
JP5680466B2 (ja) * 2011-03-29 2015-03-04 三菱重工業株式会社 並列処理システム及び並列処理システムの動作方法
US9817700B2 (en) * 2011-04-26 2017-11-14 International Business Machines Corporation Dynamic data partitioning for optimal resource utilization in a parallel data processing system
US9984026B2 (en) * 2015-05-11 2018-05-29 Nakaikegami Koubou Co., Ltd. Circuit, parallel computing device, computer system and computer readable storage medium
US10884707B1 (en) * 2019-06-27 2021-01-05 Amazon Technologies, Inc. Transpose operations using processing element array

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5995660A (ja) * 1982-11-22 1984-06-01 Nec Corp デ−タ処理装置
JPS61110256A (ja) * 1984-11-02 1986-05-28 Hitachi Ltd 複数の演算部を有するプロセツサ
US4740894A (en) * 1985-09-27 1988-04-26 Schlumberger Systems And Services, Inc. Computing processor with memoryless function units each connected to different part of a multiported memory
US4951193A (en) * 1986-09-05 1990-08-21 Hitachi, Ltd. Parallel computer with distributed shared memories and distributed task activating circuits
EP0269995B1 (en) * 1986-11-27 1993-06-23 Nippon Telegraph And Telephone Corporation Parallel data processing apparatus and method
US5297255A (en) * 1987-07-28 1994-03-22 Hitachi, Ltd. Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
JPH0254383A (ja) * 1988-08-18 1990-02-23 Mitsubishi Electric Corp アレイプロセッサ
JPH0452741A (ja) * 1990-06-14 1992-02-20 Toshiba Corp キャッシュメモリ装置
US5388220A (en) * 1991-03-19 1995-02-07 Matsushita Electric Industrial Co., Ltd. Parallel processing system and data transfer method which reduces bus contention by use of data relays having plurality of buffers
US5513364A (en) * 1993-03-09 1996-04-30 Matsushita Electric Industrial Co., Ltd. Data transfer device and multiprocessor system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006201946A (ja) * 2005-01-19 2006-08-03 Fujitsu Ltd プロセッサ間通信装置

Also Published As

Publication number Publication date
US5842035A (en) 1998-11-24

Similar Documents

Publication Publication Date Title
CN108470009B (zh) 处理电路及其神经网络运算方法
Davis The architecture and system method of DDM1: A recursively structured data driven machine
US5752068A (en) Mesh parallel computer architecture apparatus and associated methods
US5418952A (en) Parallel processor cell computer system
US5404562A (en) Massively parallel processor including queue-based message delivery system
JP2770603B2 (ja) 並列計算機
KR970008527B1 (ko) 고급 인스트럭션 처리 장치 및 방법
CN104820657A (zh) 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型
Madsen et al. An approach to interface synthesis
Cypher et al. The SIMD model of parallel computation
JPH07253954A (ja) 並列コンピュータ
JPH07271744A (ja) 並列計算機
Merigot et al. A pyramidal system for image processing
JPH0793269A (ja) データ転送の一括化処理方法
CN110766150A (zh) 一种深度卷积神经网络硬件加速器中的区域并行数据载入装置及方法
Ulm et al. Simulating PRAM with a MSIMD model (ASC)
US11500632B2 (en) Processor device for executing SIMD instructions
Dowling et al. HARP: An open architecture for parallel matrix and signal processing
Chlebus et al. Parallel alternating-direction access machine
Lee et al. A fully distributed parallel ray tracing scheme on the Delta Touchstone machine
Ulm et al. Virtual Parallelism by Self Simulation of the Multiple Instruction Stream Associative Model
Bornstein et al. Data reshuffling in support of fast I/O for distributed-memory machines
JP2655243B2 (ja) 複合化ベクトル並列計算機
Stojcev et al. Data reordering converter: an interface block in a linear chain of processing arrays
CN116774968A (zh) 具有一组线程束的高效矩阵乘法和加法