JPH06301654A - 処理分散方法 - Google Patents

処理分散方法

Info

Publication number
JPH06301654A
JPH06301654A JP8981293A JP8981293A JPH06301654A JP H06301654 A JPH06301654 A JP H06301654A JP 8981293 A JP8981293 A JP 8981293A JP 8981293 A JP8981293 A JP 8981293A JP H06301654 A JPH06301654 A JP H06301654A
Authority
JP
Japan
Prior art keywords
processing
pointer
bus
cpu
memory
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
JP8981293A
Other languages
English (en)
Inventor
Shinichiro Koga
真一郎 古賀
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.)
Japan Radio Co Ltd
Original Assignee
Japan Radio 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 Japan Radio Co Ltd filed Critical Japan Radio Co Ltd
Priority to JP8981293A priority Critical patent/JPH06301654A/ja
Publication of JPH06301654A publication Critical patent/JPH06301654A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 バスをロックさせたりリードアンドモディフ
ァイ命令を使用したりすることなくポインタ操作の競合
を防止する。 【構成】 CPU20によって処理領域の順番に従い当
該処理領域の処理に必要なパラメータが格納されるFI
FOメモリ16を設ける。各CPU10−1〜10−3
は、処理を実行する際FIFOメモリ16をアクセスし
て処理に必要なパラメータを入手し、その上でデータ1
00の対応する処理領域の処理を実行する。パラメータ
を入手するためにポインタのインクリメント操作、ひい
ては共有メモリ14の複数回のアクセスを行っていない
ため、ポインタ操作の競合が生じない。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数のプロセッサによ
り動的に処理を分散する処理分散方法に関する。
【0002】
【従来の技術】所定規模を有するデータの集合を複数の
プロセッサにより処理しようとする場合、いずれのプロ
セッサにどのデータを割り当てるかが問題となる。すな
わち、実行すべき処理を複数のプロセッサにどのように
分散するかが問題となる。
【0003】処理を分散する方法としては、大きく分け
て、静的分散と動的分散が知られている。まず初めにプ
ロセッサの個数に応じて全体の処理を分割し、分割され
た処理を各プロセッサに割り当てる方法である。動的分
散は、各プロセッサがデータを1個ずつ逐次処理し、処
理が終了する度に次に処理すべきデータをメモリ等から
読み出すという方法である。
【0004】図3には、一従来例に係る分散型処理回路
の構成が示されている。この図に示される回路は、動的
分散方式により処理を分散する構成を有している。
【0005】この回路は、複数の(図においては3個
の)CPU10−1,10−2,10−3を備えてい
る。CPU10−1〜10−3は、内部バス12によっ
て共有メモリ14に接続されている。共有メモリ14
は、CPU10−1〜10−3のいずれによってもアク
セス可能なメモリであり、当該共有メモリ14上には処
理すべきデータ100が格納されている。データ100
は、複数の処理領域に分割して格納されており、CPU
10−1〜10−3は、この処理領域単位でデータ10
0を処理する。
【0006】共有メモリ14上には、ポインタ200も
格納される。ポインタ200は、動的分散を実行する際
に、データ100の処理領域を特定すると共に当該処理
領域の処理に必要なパラメータを入手するために用いら
れる。
【0007】図4及び図5(a)には、この従来例にお
ける各CPUの動作の内容が示されている。
【0008】これらの図に示されるように、それまで実
行していた処理が終了し次のデータ100を処理可能と
なったCPU10は、まず、共有メモリ14上のポイン
タ200を読み出し、これに1を加算して、ポインタ2
00上に書き込む。例えば、CPU10−1がそれまで
実行していた処理を終了したとする。CPU10−1
は、このとき、ポインタ200の内容を読み出す。CP
U10−1は、読み出したポインタ200の内容に1を
加算し、これを再び共有メモリ14上にポインタ200
として書込む。例えば、ポインタ200の値が0であっ
た場合、CPU10−1によって書き込まれるポインタ
200の値は1である。続いて、他のCPU、例えばC
PU10−2が、それまで実行していた処理を終了した
とする。CPU10−2は、CPU10−1によってイ
ンクリメントされた結果1となっているポインタ200
を読み出し、これに1を加算して、新たなポインタ20
0、すなわち“2”を共有メモリ14上に書き込む。
【0009】各CPU10−1〜10−3は、共有メモ
リ14上から読み出したポインタ200の値に基づき、
データ100の対応する処理領域のパラメータを入手す
る。すなわち、データ100に係る各処理領域には0,
1…の如く順番が付与されており、各CPU10−1〜
10−3はポインタ200の値を知ることにより処理す
べき処理領域を特定することができる。また、ポインタ
200は、対応する処理領域に係るデータを処理するた
めに必要なパラメータの格納領域を特定しているため、
各CPU10−1〜10−3は、処理に必要なパラメー
タを上述の動作に基づき獲得することができる。
【0010】
【発明が解決しようとする課題】しかしながら、このよ
うな構成においては、各プロセッサ(CPU)間にポイ
ンタ操作に係る競合が発生する可能性がある。すなわ
ち、図5(a)に示されるように、いずれかのCPUに
よりポインタのインクリメント操作が終了した後に他の
CPUによるポインタの読出しが行われるなら、各CP
Uは必要なパラメータを正しく入手することができる。
しかし、図5(b)に示されるように、あるCPUによ
ってポインタの読出しが行われた後、インクリメントさ
れたポインタが書き込まれる前に、他のCPUによりポ
インタの読出しが行われてしまうと、2個のCPUによ
りポインタのインクリメント操作が実行されているにも
かかわらず、ポインタの値は1しか増加しない。
【0011】このような不具合を防止する方法として
は、第1に、バスのロックという方法がある。第2に、
リードアンドモディファイ命令を用いる方法がある。
【0012】第1の方法は、CPUと共有メモリを接続
するバスの使用権をロックする方法である。通常、複数
のCPUを共有メモリにバスで接続する場合、単一のC
PUのみが共有メモリをアクセスできるよう、使用権と
いう概念を用いてバスの使用状態が管理される。すなわ
ち、あるCPUが共有メモリをアクセスしようとする場
合、まず他のCPUによるバスの使用が終了するまで待
ち、終了した時点でバスの使用権を獲得する。バスの使
用権を獲得したCPUは、当該バスを使用して共有メモ
リをアクセスし、当該アクセスが終了した時点でバスの
使用権を放棄する。
【0013】図5に示されるようなポインタ操作の場
合、各CPUは、ポインタの読出しを終了した時点でバ
スの使用権を放棄する。バスの使用権が放棄されると、
他のCPUによるバスの使用が可能となるため、共有メ
モリからのポインタの読出しも可能になってしまい、図
5(b)の状況の発生の可能性が生じる。従って、図5
(b)に示されるような状況が発生するのを防止するた
めには、CPUが共有メモリ上のポインタを読み出した
後も、バスの使用権を放棄しなければよい。すなわち、
共有メモリ上からポインタを読み出した後も、インクリ
メントしたポインタを共有メモリ上に書き込むまで、バ
スの使用権を保持すればよい。
【0014】このような動作を実現する方法としては、
例えばバスを専用する旨のロック命令を実行可能なCP
Uを用いる方法がある。例えばインテル社のi860に
は、lock命令が備えられており、このlock命令
を使用することにより図5(b)に示されるような状況
の発生を防止することができる。また、CPUにその使
用権の放棄を禁止する回路を付与することにより、一定
の場合にバスの使用権放棄に係る信号をバスに送出しな
いようにすることができる。
【0015】しかし、このようなバスのロックという手
法は、バスの使用権を獲得したCPUに異常(暴走、ロ
ック等)が発生した場合、他のCPUがそれ以後バスを
使用できなくなるという問題がある。また、バスをロッ
クするために1サイクル、開放するために1サイクル必
要であるため、合計2サイクル余分な時間が消費されて
しまう。さらに、回路の付加によりバスの使用権の放棄
を禁止した場合には、当該回路の付加に伴い回路構成が
肥大化してしまう。
【0016】図5(b)に示されるような状況の発生を
防止する第2の方法、すなわちリードアンドモディファ
イ命令の使用という方法は、ポインタの内容を正しくイ
ンクリメントできるまでインクリメント動作を繰り返し
実行する方法である。例えばモトローラ社の68000
系のCPUには、リードアンドモディファイ命令とし
て、CAS、CAS2、TASという命令がある。例え
ばCAS命令は、次のような形式を有している。
【0017】
【数1】 この命令を実行した場合、まず比較オペランドDcと対
象アドレス<ea>の値が比較され、これによりコンデ
ィションコードが更新される。比較オペランドDcと対
象アドレス<ea>が等しければ、更新値Duが対象ア
ドレス<ea>に書き込まれ、等しくなければ対象アド
レス<ea>が比較オペランドDcに書き込まれる。
【0018】この命令は、例えば次のようなプログラム
において使用される。
【0019】
【数2】 このプログラムを実行した場合、ポインタ(プログラム
中においてはSYSCNTR)が正しくインクリメン
トされるまで、INCLOOPに戻ってインクリメン
ト操作が繰り返し実行される。従って、図5(b)に示
されるような状況は確実に防止できる。しかし、インク
リメント操作のやり直しは、実行速度の低下を招いてし
まう。
【0020】本発明は、これらの問題点を解決すること
を課題としてなされたものであり、バスをロックしたり
リードアンドモディファイ命令を使用したりすることな
く、各プロセッサ(CPU)が処理に必要なパラメータ
を好適に入手可能にすることを目的とする。
【0021】
【課題を解決するための手段】このような目的を達成す
るために、本発明の処理分散方法は、処理すべきデータ
を順番が付与された複数の処理単位に分割しておき、F
IFOメモリ上に各処理単位に対応するパラメータを各
処理単位に付与された順番に従って格納しておき、複数
のプロセッサのうち処理を実行できる状態となったプロ
セッサが、FIFOメモリをアクセスして上記パラメー
タを入手し、当該プロセッサが、各処理単位に付与され
ている順番に従い、かつFIFOメモリから入手したパ
ラメータに基づき、当該処理単位のデータを順次処理す
ることを特徴とする。
【0022】
【作用】本発明においては、予め、FIFOメモリ上に
各処理単位に対応するパラメータが各処理単位に付与さ
れた順番に従って格納される。FIFOメモリは、最先
に書き込まれた情報を最先に読み出す形式のメモリであ
る。各プロセッサは、処理を実行する際、FIFOメモ
リをアクセスすることにより、自己が処理しようとして
いる処理単位に対応するパラメータを、FIFOメモリ
から入手し、当該パラメータに基づき当該処理を実行す
る。従って、本発明においては、ポインタのインクリメ
ント操作を実行することなく処理に必要なパラメータを
入手可能となるため、ポインタのインクリメント操作に
伴って発生していた問題点、例えばポインタ操作の競合
が生じない。また、これに伴い、ポインタのインクリメ
ント操作のためのバスのロックやリードアンドモディフ
ァイ命令の使用は不要となる。
【0023】
【実施例】以下、本発明の好適な実施例について図面に
基づき説明する。なお、図3乃至図5に示される従来例
と同様の構成には同一の符号を付し説明を省略する。
【0024】図1には、本発明の一実施例に係る分散型
処理回路の構成が示されている。この図に示される回路
は、従来例と同様複数の(図においては3個の)CPU
10−1〜10−3と共有メモリ14を内部バス12に
よって接続した構成である。この実施例においては、さ
らに、CPU10−1〜10−3によってアクセスされ
るFIFOメモリ16が設けられている。FIFOメモ
リ16は、外部バス18を介してCPU20に接続され
ており、CPU10−1〜10−3によるデータ100
の分散処理に先立ち、CPU20によって各処理領域に
係るパラメータがこのFIFOメモリ16に書き込まれ
る。
【0025】図2には、この実施例におけるFIFOメ
モリ16の内容の一例が示されている。この図に示され
るように、FIFOメモリ16には、データ100の各
処理領域に係るパラメータが、当該処理領域に付与され
た順番でCPU20により格納される。この図のように
処理領域0のパラメータが先頭に存在している状態でC
PU10−1がFIFOメモリ16をアクセスすると、
処理領域0の処理に必要なパラメータが読み出される。
CPU10−1は、このようにして入手したパラメータ
に基づき、処理領域0に係るデータ105を処理する。
CPU10−1によりFIFOメモリ16から処理領域
0のパラメータが読み出された後は、当該FIFOメモ
リ16から処理領域1に係るパラメータのアドレスが最
先のアドレス、すなわち読み出し可能なアドレスとな
る。従って、例えばCPU10−1により処理領域0に
係るパラメータが読み出された後に、CPU10−2に
よりFIFOメモリ16がアクセスされた場合、CPU
10−2はこのアクセスによって処理領域1に係るパラ
メータを入手することになる。
【0026】従って、本実施例においては、共有メモリ
14からのポインタ200の読出しやインクリメントし
たポインタ200の書き込みという操作が不要となる。
すなわち、FIFOメモリ16をアクセスすることによ
って処理に必要なパラメータが入手できるため、ポイン
タ200を用いた管理が不要となる。この結果、ポイン
タ200のインクリメント操作に係る各CPU10−1
〜10−3間の競合がなくなり、従って、ポインタ20
0をインクリメントさせる際の内部バス12のロック
や、リードアンドモディファイ命令を使用したインクリ
メント操作等も不要となる。さらには、パラメータの入
手をFIFOメモリ16の1回のアクセスで実現でき
る。
【0027】なお、本発明は、図1に示される構成に限
定されるものではない。例えば各CPU10−1〜10
−3それぞれにローカルRAM等を設けてもよく、また
CPU10の個数も3個に限定されるものではない。さ
らに、各CPU10−1〜10−3によって共有される
回路として、ROMや割り込み処理回路、RS232C
ポート、DMA(ダイレクトメモリアクセス)用のRA
Mを設けてもよい。DMARAMを用いることにより、
CPU20により外部バス18を介してダイレクトメモ
リアクセスを実行することができる。さらに、外部バス
18としては、例えばVME(Verss Module Eurobe )
バス等を使用できる。また、外部バス18の本数は1本
に限定されず、例えば実施例の回路をグラフィックディ
スプレイ装置等に適用する場合には、FIFOメモリ1
6への書込用のバスとしてVMEバスを用いる一方で、
ダイレクトメモリアクセスによりデータを転送するため
のFB(フレームバッファ)バスを設けるとよい。
【0028】
【発明の効果】以上説明したように、本発明によれば、
各処理単位に係るデータを処理するために必要なパラメ
ータを、処理単位に付与された順番に従ってFIFOメ
モリ上に格納しておき、処理を実行する際に各プロセッ
サがFIFOメモリをアクセスして必要なパラメータを
入手するようにしたため、ポインタのインクリメント操
作及びこれに付随する共有メモリ等のアクセスを実行す
ることなく、各プロセッサが必要なパラメータを使用で
きる。従って、各プロセッサと共有メモリとを接続する
バスをロックしたり、あるいはリードアンドモディファ
イ命令を使用したりすることなく、各プロセッサ間のポ
インタ操作の競合を防止することができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係る分散型処理回路の構成
を示すブロック図である。
【図2】この実施例におけるFIFOメモリの内容の一
例を示す図である。
【図3】一従来例に係る分散型処理回路の構成を示すブ
ロック図である。
【図4】この従来例におけるポインタ操作の内容を示す
図である。
【図5】従来の問題点を説明するための図であり、図5
(a)はポインタ操作が競合しないで正常に実行されて
いる場合を、図5(b)はポインタ操作が競合した結果
ポインタ値が正確な値でなくなる場合を、それぞれ示す
図である。
【符号の説明】
10−1,10−2,10−3 CPU 12 内部バス 14 共有メモリ 16 FIFOメモリ 18 外部バス 20 CPU

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 処理すべきデータを順番が付与された複
    数の処理単位に分割しておき、複数のプロセッサのうち
    処理を実行できる状態となったプロセッサが、各処理単
    位に付与されている順番に従い、かつ当該処理単位に対
    応するパラメータに基づき、当該処理単位のデータを順
    次処理する処理分散方法において、 FIFOメモリ上に各処理単位に対応するパラメータを
    上記順番に従って格納しておき、 各プロセッサが、処理を実行する際、FIFOメモリを
    アクセスして上記パラメータを入手することを特徴とす
    る処理分散方法。
JP8981293A 1993-04-16 1993-04-16 処理分散方法 Pending JPH06301654A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8981293A JPH06301654A (ja) 1993-04-16 1993-04-16 処理分散方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8981293A JPH06301654A (ja) 1993-04-16 1993-04-16 処理分散方法

Publications (1)

Publication Number Publication Date
JPH06301654A true JPH06301654A (ja) 1994-10-28

Family

ID=13981151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8981293A Pending JPH06301654A (ja) 1993-04-16 1993-04-16 処理分散方法

Country Status (1)

Country Link
JP (1) JPH06301654A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442627B1 (en) 1999-07-06 2002-08-27 Mitsubishi Denki Kabushiki Kaisha Output FIFO data transfer control device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442627B1 (en) 1999-07-06 2002-08-27 Mitsubishi Denki Kabushiki Kaisha Output FIFO data transfer control device

Similar Documents

Publication Publication Date Title
US6115761A (en) First-In-First-Out (FIFO) memories having dual descriptors and credit passing for efficient access in a multi-processor system environment
US5263169A (en) Bus arbitration and resource management for concurrent vector signal processor architecture
EP0487082B1 (en) Nesting management mechanism for use in loop control system
US5317749A (en) Method and apparatus for controlling access by a plurality of processors to a shared resource
EP0409285B1 (en) Method and apparatus for data transfer between processor elements
US5291581A (en) Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system
US5371857A (en) Input/output interruption control system for a virtual machine
US6615296B2 (en) Efficient implementation of first-in-first-out memories for multi-processor systems
JP3431941B2 (ja) データ処理システムにおける命令の実行順序を決定する方法および装置
US5615374A (en) Lock control method for resource
US6516403B1 (en) System for synchronizing use of critical sections by multiple processors using the corresponding flag bits in the communication registers and access control register
US7103528B2 (en) Emulated atomic instruction sequences in a multiprocessor system
JP2000003302A (ja) 共有メモリ排他アクセス制御方法
JPH06301654A (ja) 処理分散方法
JP2797760B2 (ja) 並列処理コンピュータシステム
JPH11232247A (ja) データフロー計算機およびデータフロー制御方法
JP2587468B2 (ja) ロツクデータ設定装置
JPH1185673A (ja) 共有バスの制御方法とその装置
EP0938047A1 (en) Memory protection method and device therefor
JPH0496167A (ja) マルチプロセッサシステムの割込み方式
JPH0816417A (ja) マルチプロセッサ装置
JP2781999B2 (ja) マルチプロセツサシステムにおける共通データチヤネル装置起動方式
JP2547329B2 (ja) ロツクデータ設定装置
EP0503390A1 (en) Microcomputer having direct memory access mode
JP3270149B2 (ja) データ転送装置