JPH03269758A - マルチプロセッサ上における並列実行方式 - Google Patents

マルチプロセッサ上における並列実行方式

Info

Publication number
JPH03269758A
JPH03269758A JP2070613A JP7061390A JPH03269758A JP H03269758 A JPH03269758 A JP H03269758A JP 2070613 A JP2070613 A JP 2070613A JP 7061390 A JP7061390 A JP 7061390A JP H03269758 A JPH03269758 A JP H03269758A
Authority
JP
Japan
Prior art keywords
slave
master
flag
parallel
execution
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
JP2070613A
Other languages
English (en)
Inventor
Satoshi Hosoi
聡 細井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2070613A priority Critical patent/JPH03269758A/ja
Publication of JPH03269758A publication Critical patent/JPH03269758A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概要〕 マルチプロセンサ上で手続き型言語を並列実行する並列
実行方式に関し、 マルチプロセンサ上で各PEに同じアセンブルコードを
ロードしていずれか1つのPEがマスタPE、他がスレ
ーブPEとなってマスタフラグ、スレーブフラグを操作
して同期を取ると共にスレーブPEのプログラムカウン
タに所定のアドレスをロードして並列実行し、手続き型
言語をマルチプロセンサ上で効率良く並列実行させるこ
とを目的とし、 バスを介して相互に接続した複数のPE(プロセンサ)
と、これらPEからバスを介してアセクス可能であって
、マスタフラグ、スレーブフラグを設けた共有メモリと
を備え、複数のPEに手続き型言語をアセンブルした同
一のアセンブルコードをそれぞれロードし、アセンブル
コードの実行を開始してマスタPEと判明した当該マス
タPEがマスタフラグをONおよび並列動作させるスレ
ーブPEに対応するスレーブフラグのビットをONにし
て実行指示を与え、一方、アセンブルコードの実行を開
始してスレーブPEと判明した各スレーブPEがプログ
ラムカウンタに実行する先のアドレスをそれぞれロード
して並列実行し、その結果を共有メモリに格納すると共
にスレーブフラグの自スレーブPEに対応するピントを
OFFにし、全てのスレーブフラグについてOFFとな
ったことを検出したマスタPEが共有メモリから各スレ
ーブPEの実行した結果を取り出した後、あるいは必要
に応じて更にマスタPE内で処理を行った後にマスタフ
ラグをOFFにするように構成する。
〔産業上の利用分野〕
本発明は、マルチプロセッサ上で手続き型言語を並列実
行する並列実行方式に関するものである。
近年、マイクロプロセンサが安価に入手し得るようにな
り、密結合マルチプロセッサ型の並列計算機が作られる
ようになってきた。このような並列計算機上で効率良く
動く言語の必要性が高まっている。
〔従来の技術〕
従来、C言語のような手続き型言語を逐次型の計算機で
実行する場合、例えば a(b(x)、c(x)、d(x))  ・” ” ”
・・・・(1)の関数を実行する場合、これは、第4図
に示すようなアセンブルコードに展開して実行している
第4図0ニスタツクにXをブツシュし、ライブラリを呼
出しくca 11 )てb(に)の実行を依頼し、その
結果をスタックに格納してもらってこれを取り出してレ
ジスタr1にセーブする。
0:同様に、C(X)の結果をレジスタr2にセーブす
る。
0:同様に、d (x)の結果をレジ′スタr3にセー
ブする。
0:レジスタr3、r2、rlの値をスタックに順次ブ
ツシュし、ライブラリを呼出しくcall)て式(1)
の実行を依頼し、その結果をスタックに格納してもらっ
てこれを取り出してレジスタr1などにセーブする。
〔発明が解決しようとする課題〕
従来の手続き型言語は、上述した第4図に示すように、
■でb(x)、◎でc(x)、@でd(X) 、Oで0
、@、@の値をもとにa  (b (x)c  (x)
d  (x))を求めるというように逐次実行していた
ため、高速に実行し得ないという問題がある。これを解
決するために、0、@、@の実行をマルチプロセッサ上
で並列に実行することが望まれている。
本発明は、マルチプロセッサ上で各PEに同しアセンブ
ルコードをロードしていずれか1つのPEがマスタPE
、他がスレーブPEとなってマスタフラグ、スレーブフ
ラグを操作して同期を取ると共GスレーブPEのプログ
ラムカウンタに所定のアドレスをロードして並列実行し
、手続き型言語をマルチプロセッサ上で効率良く並列実
行させることを目的としている。
〔課題を解決する手段〕
第1図を参照して課題を解決する手段を説明する。
第1図において、PE(プロセッサ)は、バスを介して
相互に接続したプロセンサであって、1つがマスタPE
、他がスレーブPEである。
共有メモリ2は、各PEからバスを介してアセクス可能
であって、マスタフラグ2−1、スレーブフラグ2−2
などを設けたメモリである。
〔作用〕
本発明は、第1図に示すように、複数のPEに手続き型
言語をアセンブルした同一のアセンブルコードをそれぞ
れロードし、アセンブルコードの実行を開始してマスタ
PEと判明した当該マスタPEがマスタフラグ2−1を
ONおよび並列動作させるスレーブPEに対応するスレ
ーブフラグ2−2のビットをONにして実行指示を与え
、一方、アセンブルコードの実行を開始してスレーブP
Eと判明した各スレーブPEがプログラムカウンタに実
行する先のアドレスをそれぞれロードして並列実行し、
その結果を共有メモリ2に格納すると共にスレーブフラ
グ2−2の自スレーブPEに対応するビットをOFFに
し、全てのスレーブフラグ2−2についてOFFとなっ
たことを検出したマスタPEが共有メモリ2から各スレ
ーブPRの実行した結果を取り出した後、あるいは必要
に応じて更にマスタPE内で処理を行った後にマスタフ
ラグ2−1をOFFにするようにしている。
従って、マルチプロセッサ上で各PEに同しアセンブル
コードをロードしていずれか1つのPEがマスタPE1
他がスレーブPEとなってマスタフラグ2−1、スレー
ブフラグ2−2を操作して同期を取ると共にスレーブP
Eのプログラムカウンタに所定のアドレスをロードして
並列実行することにより、手続き型言語をマルチプロセ
ッサ上で効率良く並列実行させることが可能となる。
〔実施例〕
次に、第1図から第3図を用いて本発明の1実施例の構
成および動作を順次詳細に説明する。
第1図において、PE(プロセッサ)は、バスを介して
相互に接続したプロセッサであって、任意の1つをマス
タPE、他をスレーブPRとしたものである。各PEに
は、手続き型言語をアセンブルした同一のアセンブルコ
ードをロードして実行するようにしている。この際、1
つのPE例えば番号0の左端のPEをマスタPEとし、
他のPEをスレーブPEと定める(第3図@参照)マス
タPEは、同一のアセンブルコード中の自己宛のアセン
ブルコードを実行し、マスタフラグ2−1をONにして
全てのスレーブPEの起動指示を行うスレーブ起動指示
部3、並列処理を実行させるスレーブPEに対応するス
レーブフラグ2−2のピントをONに設定および処理す
る元となるデータを付与する実行指示/データ供与部4
、および関数の実行を行う関数実行部5から構成されて
いる。
スレーブPEは、同一のアセンブルコード中の自己宛の
アセンブルコードを実行し、マスタPEがスレーブフラ
グ2−2を設定したときに実行開始する実行開始部6、
および関数の実行を行う関数実行部5から構成されてい
る。尚、スレーブPEは、後述する第3図[相]により
、スレーブPEに付与されたpe idに対応するアド
レス(nextから取り出したアドレスに、pe  i
dを4倍したアドレスを加算したアドレス)をプログラ
ムカウンタpcにロードして例えば第3図アセンブルコ
ードのLlあるいはL2などから実行開始するようにし
ている。
共有メモリ2は、マスタPE、スレーブPEがバスを介
してアクセスし得るメモリであって、マスタPEの状態
を表すマスタフラグ2−1、スレーブPEの状態を表す
スレーブフラグ2−2、スレーブPEが同一のアセンブ
ルコードのうちのいずれの位置(アドレス)から実行開
始を行うかの情報をマスタPEが設定などする領域ne
xt、スレーブPEが実行した結果を設定する領域a1
、a2などから構成されている。
次に、第2図フローチャートに示す順序に従い、第3図
アセンブルコードを用い、第1図構成の動作を具体的に
説明する。この第3図アセンブルコードは、 a  (b  (x)  c  (x)  d  (x
))−−−−、(2)の値を計算するときのものである
。ここで、b(X)をスレーブP E (11、c (
x)をスレーブPE(2)、d (x)をマスタPEが
それぞれ並列に計賞し、更にマスタPEがこれら3つか
ら式(2)に示す値aを計算するときのものである。
第3図において、■は、スピンアドレス(Lll)をn
extにロードする。これは、第3図0に示すように、
スピンアドレスであるLllのアドレスをレジスタrl
にロードし、このレジスタr1の[(Lllのアドレス
)を共有メモリ2中のnextにロードする。
■は、マスタPEか否かを判別する。これは、第3図に
示す同一のアセンブルコードを実行しているPEがマス
タPEか否かを判別する。YESの場合、即ちマスタP
Eの場合には、■ないし■の処理を実行する。Noの場
合、即ちスレーブPEの場合には、■ないし■の処理を
回るように実行する。具体的に説明すると、第3図Oに
示すように、ps  idが0 (マスタPEに与えて
いる)のときにマスタPEと判明したので、L12にジ
ャンプし、これ以降の処理を実行する。peidが0以
外のときにスレーブPEであると判明したので、a続す
るLllを実行する。
■は、マスタフラグ2−1をON、スレーブフラグ2−
2をセント、nextにジャンプ先のアドレス(JMp
  TAB)をロードする。これは、第3図0に示すよ
うに、マスタフラグ2−1をON、スレーブPEfll
、P E [2)を並列動作させるように該当するピン
トを1にした値0b0110000をスレーブフラグ2
−2にセント(下線部がスレーブP E (1)、PE
(2+に対応する)、JMP  TABのアドレスを共
有メモリのnextにロードする。
■は、関数を実行する。これは、第3図[株]に示すよ
うに、Xをスタックにブツシュし、ライブラリ呼出しを
行って計算してもらった結果d (x)をスタックから
ポツプしてレジスタr2にロードすると共にスタックに
このftLd (X)をブツシュしておく。
■は、スレーブフラグ2−2がON(スレーブPEが関
数を実行中を表す)か否かを判別する。
YESの場合に、待機する。Noの場合(全てのスレー
ブPEが関数の実行を終了した場合)には、■を行う、
これは、第3図[相]に示すように、スレーブフラグ2
−2が全て0 (零)でないときはLOlに戻ってルー
プして待機し、一方、全て0(零)のときに次の[相]
を実行する。
■は、関数実行する。これは、■Noで、全てのスレー
ブPEの関数実行が終了してその結果が共有メモリ2上
にロードされたことが判明したので(1!に述するLl
、L2の実行により、スレーブPR(11、(2)がb
 (x) 、c (x)を求めて共有メモリ2上のal
、a2にそれぞれロードしたことが判明したので)、a
2の値(c(x))、alの値<b (X) )を順次
スタックにブツシュし、ライブラリ呼出しを行って計算
してもらった結果a C式(2)の値)をスタックから
ポツプしてレジスタr3、r2、rlにロードする。
■は、マスタフラグ2−1をOFFにする。これは、第
3図0でPEASE2にジャンプし、このPEASE2
の[相]でマスタフラグ2−2に0(零、0FF)に設
定する。これにより、式(2)の関数を実行する一連の
処理を終了する。
次に、スレーブPEの処理を■ないし■の順序で具体的
に説明する。
第2図において、■は、■Noで、自己のPEがスレー
ブPEと判明したので(第3図0でPE1dがO(零)
でないと判明、スレーブPEのidには0 (零)以外
の値を予め与えておく)、マスタフラグ2−1がOFF
か否かを判別する。
YESの場合には、待機する(第3図0でループする)
、NOの場合には、■を行う、具体的に言えば、このN
Oの場合、即ち第3図■でマスタフラグ2−1が0 (
零)でないときに、■を実行し、neXtに格納されて
いるアドレスをレジスタr1にロードし、これにpe 
 idを4倍したアドレスを加算し、この加算後のアド
レスをpc(プログラムカウンタ)にロードし、スレー
ブPE[l)ならばLlから実行を開始し、スレーブP
 E (2)ならばL2から実行を開始する。
■は、関数実行する。これは、上述したように、スレー
ブPE(11ならばLLから関数実行を開始し、スレー
ブP I (21ならばL2から関数実行を開始する。
これら両者は同時並列に関数実行を開始する。
即ち、スレーブPE(11はLlで、第3図@に示すよ
うに、Xをスタックにブツシュし、ライブラリ呼出しを
行って計算してもらった結果b (x)をスタックから
ポンプして共有メモリ2上の31にロードする。同様に
、スレーブP E (2]はL2で、第3図@°に示す
ように、Xをスタックにブツシュし、ライブラリ呼出し
を行って計算してもらった結果c (x)をスタックか
らポンプして共有メモリ2上のa2にロードする。
[株]は、スレーブフラグ2−2の対応するビットをO
FFにする。これは、第3図[相]、[相]°に示すよ
うに、スレーブフラグ2−2をロックし、図示値をスレ
ーブフラグ2−2の全体に対してand演算して該当す
るピントをO(零、0FF)に設定し、ロックを解除す
る。
■は、マスタフラグがOFFか否かを判別するYESの
場合には、■に進み、次の実行開始指示に備える。No
の場合には、待機する。これは、第3図[株]、■°で
NEXTにジャンプし、このNEXTの[株]でマスタ
フラグ2−1が0でないときにループして待機し、一方
、0のときに■でLllにジャンプする。そして、第3
図0でループして次の実行指示を待機する。
以上のように、第3図に示すような同一のアセンブルコ
ードを全てのPEにそれぞれa−rしておき、pe  
1d=Qを付与したPEがマスタPEとなり、他のPE
がスレーブPEとなり、共有メモリ2上に設けたマスタ
フラグ2−1、スレーブフラグ2−2を操作およびスレ
ーブPEのpc(プログラムカウンタ)の値を操作して
並列に関数の実行を行うことにより、マルチプロセッサ
上で関数を効率良好に並列処理することが可能となる。
第3図は、本発明の詳細な説明図を示す、これは、式(
2)の関数を実行するアセンブルコード例を示す、この
アセンブルコードを全てのPEにそれぞれロードし、実
行段階でpe  1dxQを付与したPEがマスタPE
、それ以外がスレーブPEとなり、更に@に示すように
、スレーブPEに対してそれぞれ所定のアドレスをpc
(プログラムカウンタ)にロードし、ここではスレーブ
P E (11にLlから、スレーブP R(21にL
2から同時並列に実行開始させるようにしている。詳細
は、第2図のときに説明したので省略する。
の具体例説明図、第4図は従来方式の説明図を示す。
図中、PEはプロセッサ、2は共有メモリ、21はマス
タフラグ、2−2はスレーブフラグを表す。
〔発明の効果〕
以上説明したように、本発明によれば、マルチプロセッ
サ上で各PEに同じアセンブルコードをロードしていず
れか1つのPEがマスタPE、他がスレーブPEとなっ
てマスタフラグ2−1、スレーブフラグ2−2を操作し
て同期を取ると共にスレーブPEのプログラムカウンタ
に所定のアドレスをロードして並列実行する構成を採用
しているため、手続き型言語をマルチプロセンサ上で効
率良く並列実行させることができる。

Claims (1)

  1. 【特許請求の範囲】 マルチプロセッサ上で手続き型言語を並列実行する並列
    実行方式において、 バスを介して相互に接続した複数のPE(プロセッサ)
    と、 これらPEからバスを介してアセクス可能であって、マ
    スタフラグ(2−1)、スレーブフラグ(2−2)を設
    けた共有メモリ(2)とを備え、 複数のPEに手続き型言語をアセンブルした同一のアセ
    ンブルコードをそれぞれロードし、アセンブルコードの
    実行を開始してマスタPEと判明した当該マスタPEが
    マスタフラグ(2−1)をONおよび並列動作させるス
    レーブPEに対応するスレーブフラグ(2−2)のビッ
    トをONにして実行指示を与え、一方、アセンブルコー
    ドの実行を開始してスレーブPEと判明した各スレーブ
    PEがプログラムカウンタに実行する先のアドレスをそ
    れぞれロードして並列実行し、その結果を共有メモリ(
    2)に格納すると共にスレーブフラグ(2−2)の自ス
    レーブPEに対応するビットをOFFにし、全てのスレ
    ーブフラグ(2−2)についてOFFとなったことを検
    出したマスタPEが共有メモリ(2)から各スレーブP
    Eの実行した結果を取り出した後、あるいは必要に応じ
    て更にマスタPE内で処理を行った後にマスタフラグ(
    2−1)をOFFにするように構成したことを特徴とす
    るマルチプロセッサ上における並列実行方式。
JP2070613A 1990-03-20 1990-03-20 マルチプロセッサ上における並列実行方式 Pending JPH03269758A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2070613A JPH03269758A (ja) 1990-03-20 1990-03-20 マルチプロセッサ上における並列実行方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2070613A JPH03269758A (ja) 1990-03-20 1990-03-20 マルチプロセッサ上における並列実行方式

Publications (1)

Publication Number Publication Date
JPH03269758A true JPH03269758A (ja) 1991-12-02

Family

ID=13436625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2070613A Pending JPH03269758A (ja) 1990-03-20 1990-03-20 マルチプロセッサ上における並列実行方式

Country Status (1)

Country Link
JP (1) JPH03269758A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642506A (en) * 1994-12-14 1997-06-24 International Business Machines Corporation Method and apparatus for initializing a multiprocessor system
JP5163128B2 (ja) * 2006-01-31 2013-03-13 富士通株式会社 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642506A (en) * 1994-12-14 1997-06-24 International Business Machines Corporation Method and apparatus for initializing a multiprocessor system
US5867702A (en) * 1994-12-14 1999-02-02 International Business Machines Corporation Method and apparatus for initializing a multiprocessor system
JP5163128B2 (ja) * 2006-01-31 2013-03-13 富士通株式会社 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ

Similar Documents

Publication Publication Date Title
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
EP0487082B1 (en) Nesting management mechanism for use in loop control system
US9424099B2 (en) Method and system for synchronization of workitems with divergent control flow
JPH02224025A (ja) コンピューターシステム
WO1994003860A1 (en) Massively parallel computer including auxiliary vector processor
JP2507638B2 (ja) デ―タ処理装置
JP3578883B2 (ja) データ処理装置
JP2000330788A (ja) コンピュータシステム
WO2021098257A1 (zh) 一种基于异构计算平台的业务处理方法
JPH03269758A (ja) マルチプロセッサ上における並列実行方式
JPS58149541A (ja) デ−タ処理装置
JPH03126133A (ja) コンパイラ処理方法
JPH11238001A (ja) プロセッサのシミュレータ及びシミュレーション方法
US11275712B2 (en) SIMD controller and SIMD predication scheme
JP2000029696A (ja) プロセッサおよびパイプライン処理制御方法
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ
JPS6122818B2 (ja)
JPH04102158A (ja) 密結合マルチプロセッサ
JPH0279122A (ja) 浮動小数点演算機構
JPH04286028A (ja) マイクロプロセッサ
JP3853309B2 (ja) マイクロプロセッサおよび該マイクロプロセッサで実行されるプログラムのためのコンパイル装置
JPH0363866A (ja) マスタースレーブプロセッサ
JPH064319A (ja) オペレーティング・システムにおける共有ルーチン管理方式
JPH07191845A (ja) 即値データ転送装置