JPH03218556A - 手続内ループのマルチタスク化方式 - Google Patents

手続内ループのマルチタスク化方式

Info

Publication number
JPH03218556A
JPH03218556A JP25081490A JP25081490A JPH03218556A JP H03218556 A JPH03218556 A JP H03218556A JP 25081490 A JP25081490 A JP 25081490A JP 25081490 A JP25081490 A JP 25081490A JP H03218556 A JPH03218556 A JP H03218556A
Authority
JP
Japan
Prior art keywords
processor
loop
inter
task
value
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
JP25081490A
Other languages
English (en)
Inventor
Shoichiro Yamada
山田 正一郎
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPH03218556A publication Critical patent/JPH03218556A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は情報処理で用いられるマルチプロセッサシステ
ムにおけるDoループのような手続内ループのマルチタ
スク化方式に関する。
〔従来の技術〕
複tのプロセッサと各プロセッサからアクセス可能な主
記憶とを備えたマルチプロセッサシステムにおいて、例
えばDoループのようなプログラム中の手続内ループの
マルチタスク化が行なわれている。このマルチタスクと
は、オペレーティングシステム(以下OS)の最小管理
単位であるタスクが、同時に複数個存在し処理されるこ
とを意味する。すなわち、1つのジョブを分割したタス
ク間で同時処理が行なわれる。このため、OSにタスク
間のデータ共有や、タスク間の事象の同期などを制御す
る機能が必要になる。一般に、マルチタスクでは共通の
ルーチンやディスクファイルが使用される。
このようなマルチタスク化により複数のタスクが複数の
プロセッサ上で並行して実行され、手続内ループの実行
速度が向上される。
このような手続内ループのマルチタスク化では、ループ
にかかるループ変数の始値と終値とが1つのプロセッサ
間共有レジスタに設定されて各タスクが起動される。起
動された各タスクは、プロセッサ間の排他制御機能によ
り他タスクとのプロセッサ間共有レジスタの同時参照お
よび更新を排除しつつ、プロセッサ間共有レジスタ中の
始値と終値とを参照して始値と終値とを比較する。各タ
スクは、この比較により始値が終値以下を示すとき、プ
ロセッサ間共有レジスタ中の始値をルーフ1回当りの増
分値だけ増加させると共に、その始値でループの実行を
行っている。
〔発明が解決しようとする課題〕
この方法では、各プロセッサ上のタスクがループを1回
実行する毎に、各プロセッサが1つのプロセッサ間共有
レジスタを参照している。このため、ループの実行回数
だけプロセッサ間共有レジスタの競合が起こる可能性が
あり、その競合が手続きの実行時間を増大させている。
また、他の方法ではプログラムがタスクで一度に実行す
るループの回数を指定することにより、プロセッサ間共
有レジスタの競合回数の減少が期待される。この方法で
は、何度か試行して適当な値を見付ける必要がある。ま
た、ループの各繰返しにおける実行時間の偏りに対応す
ることができず、手続の実行時間も増大させている。
本発明の目的は、プロセッサ間共有レシスタに競合の生
ずる可能性を低減させ、手続内ループのマルチタスク化
による実行速度を向上させるようにした手続内ループの
マルチタスク化方式を提供することにある。
〔課題を解決するための手段〕
本発明の一態様に従ったシステムは、手続内ループをマ
ルチタスク化し個々のタスクをマルチプロセッサシステ
ムの構成要素の個々のプロセッサで実行システムであっ
て、 前記手続内ループにかかるループ変数の取り得る範囲を
分割した各分割範囲の始値と終値とを格納する各プロセ
ッサ対応のプロセッサ間共有レジスタ手段を備え、 各プロセッサ上のタスクのそれぞれは、前記各プロセッ
サ対応のプロセッサ間共有レジスタ手段に格納された終
値の示す回数に到達するまで手続内ループ処理を繰返し
実行する実行手段と、 この実行手段による終値回数までの手続内ループ処理の
実行終了後、他のプロセッサ対応のプロセッサ間共有レ
ジスタを参照し未処理のループが残っているか否かを判
定する判定手段と、この判定手段で未処理のループが残
っているとの判定に応答してその未処理のループにかか
るループ変数の取り得る範囲の一部を自プロセッサ対応
のプロセッサ間共有レジスタに移送させループ処理を続
行する続行手段とを含む。
〔実施例〕
第1図を参照すると、本発明の一実施例の適用されるシ
ステムは、各タスクを実行する複数のプロセッサ1およ
び2、およびこれらプロセッサlおよび2で共有される
記憶装置における共有領域3を含む。この共有領域3に
は、プロセッサ1および2間の排他制御により排他的に
使用される複数の共有レジスタ11および12がある。
ある共有レジスタ11はプロセッサ1に対応し、他の共
有レジスタ12はプロセッサ2に対応する。これら共有
レジスタ1lおよびl2にはマルチタスク化すべき手続
内ループにかかるループ変数の取り得る範囲1〜Nを2
分割したときの個々の分割範囲1〜N/2,(N/2)
 +1〜Nの始値の終値との初期値が設定される。これ
らの値は、プロセッサ1および2により参照又は更新さ
れる。
次に本発明の一実旅例を第1図で示されるシステムの動
作とともに図面を参照して詳細に説明する。
第1図および第2図を参照すると、マルチタスク化すべ
き手続内ループを処理する親タスクは、そのループにか
かるループ変数の範囲(1〜N)をマルチタスク数2で
分割したときの個々の分割範囲の始値と終値との初期値
をレジスタ11および12に第1図に示すように設定す
る。これとともに親タスクは、第2図に示すような各子
タスクをプロセッサ1および2で起動させる。
フロセッサ1上で起動されたタスクはプロセッサ1対応
の共有レジスタ1lを参照しその内容を更新しつつ第2
図に示す処理を実行し、プロセッサ2上で起動されたタ
スクはプロセッサ2対応の共有レジスタ1lを参照しそ
の内容を更新しつつ第2図に示す処理を実行する。
各子タスクの起動時、プロセッサ1対応の共有レシスタ
11の始値はl5プロセッサ2対応の共有レジスタ12
中の始値は(N/2)+1になっている。
第2図を参照すると、プロセッサ1上で起動されたタス
クは共有レジスタ1lを参照しその始値1と終値N/2
とを比較する(S1)。始値〉終値でないため(Slで
No)、その始値lでループが実行され(S2)、始値
1に増分値を加えた値が新たな始値として共有レジスタ
1lに格納され(S3)、制御は処理S1に戻される。
第1図および第2図を参照すると、プpセッサl上のタ
スクは、処理81〜S3を繰返し実行することにより始
値1から増分値を順次加算した各ループを実行する。同
様に、プロセッサ2上のタスクも処理Sl−83を繰返
し実行することにより始値(N/2)+1から増分値を
順次加算した各ループを実行する。ここで、プロセッサ
1上のタスクとプロセッサ2上のタスクとの進捗状況が
等しければ、両タスクは、初期設定された回数のループ
処理をほぼ同時に終了することになる。しかし、プロセ
ッサ1上のタスクの進捗状況がプロセッサ2上のタスク
の進捗状況より進んでいると、フロセッサ1上のタスク
の方がプ四セッサ2上のタスクより先に初期設定された
終値N/2までのループ処理を終了する。このような場
合、プロセッサ1上のタスクは、共有レジスタ11の始
値pと終値N/2との関係が始値l〉終値N/2である
と判定する(Sl)。自プロセッサlに割り当てられた
回数のループを処理し終えたので、他プロセッサ2対応
の共有レジスタ12が参照されてその始値m (m<N
)と増分値との和が求められ共有レジスタ12に設定さ
れている終値Nと比較される。そして、終値Nが始値m
と増分値との和以上であれば(S4のNo)、他のプロ
セッサ2上のタスクには未処理のループが残っているこ
とを意味する。このため共有レジスタ12の始値mと終
値Mとで定まるループ範囲の半分のルーフ範囲の始値と
終値とがプロセッサ1対応の共有レシスタ11に移送さ
れると共に、その移送に応じて他のプロセッサ2対応の
共有レジスタ12中の始値と終値とが定義し直される。
これらの処理により、未処理のループ範囲( m = 
N )の半分が自タスクで引受けられる(S5)。
なお、他のプロセッサ2対応の共有レジスタ12を参照
したとき、その始値mと増分値との和が終値Nより大き
ければ(84のYES)、他のプロセッサ2上のタスク
も自身に割り当てられた回数のループを終了し、引き受
けるループ処理は存在しないことを意味する。この結果
、自タスクの処理も終了する。
以上の実施例は、2個のプロセッサからなる2プロセッ
サシステムに本発明を適用したものであるが、本発明は
3個以上のプロセッサを含むマルチプロセッサシステム
に広く適用しうるものである。3個以上のプロセッサを
含む場合、あるプロセッサ上で動作するタスクが初期設
定されたループ回数分の処理を終えたときに参照する他
のプロセッサ2対応の共有レジスタ12としては、自身
以外の共有レジスタ全てであっても良く、予め定められ
た1つ又は複数の共有レジスタに限定してもよい。
次に本発明の他の実施例について第3図および第4図を
参照しながら詳細に説明する。
本発明の他の実施例はI (I≧3)台のプロセッサか
らなるシステムを前提とする。
第3図を参照すると、本発明の他の実箆例の適用される
システムは、各タスクを実行するJ番目のフ゜ロセッサ
5および(J MOD  I) +1番目のプロセッサ
6を含む1台のプロセッサおよびこれら■台のプロセッ
サで共有される記憶装置における共有領域4を含む。こ
の共有領域4には、(J MOD  I) +1番目の
プロセッサ6とJ番目のプロセッサ5との間の排他制御
により排他的に使用される工個の共有レジスタ41およ
び42がある。J番目の共有レジスタ41はJ番目のプ
ロセッサ5に対応し、(J MOD I)+1番目の共
有レジスタ42は(J MOD  I)+1番目のプロ
セッサ6に対応する。これら共有レジスタ41および4
2にはマルチタスク化すべき手続内ループにかかるルー
プ変数の取り得る範囲l〜Nを工分割したときの個々の
分割範囲N/I*(J−1)+1〜N/I*J,N/I
* ((J MOD I) +1−1) +1〜N/I
* ((J MODI)+1)の始値と終値との初期値
が設定される。
共有レジスタ41の値はプロセッサ5により、また共有
レジスタ42の値はプロセッサ6により参照、更新され
る。
次に本発明の一実施例を第3図で示されるシステムの動
作とともに図面を参照して詳細に説明する。
第3図および第4図を参照すると、マルチタスク化すべ
き手続内ループを処理する親タスクは、そのループにか
かるループ変数の範囲(1〜N)をマルチタスク数1で
分割したときの個々の分割範囲の始値と終値との初期値
を各プロセッサ対応の共有レジスタに第3図に示すよう
に設定する。
これとともに親タスクは、第4図に示すような子タスク
を工合のプロセッサで起動させる。
J番目のプロセッサ5上で起動されたタスクはプロセッ
サ5対応の共有レジスタ41を参照しその内容を更新し
つつ第4図に示す処理を実行する。
各子タスクの起動時、プロセッサ1対応の共有レジスタ
41の始値はN/I* (J−1)+ 1になっている
第4図を参照すると、J番目のプロセッサ5上で起動さ
れたタスクはJ番目の共有レジスタ41を参照し、その
始値N/I* (J−1)+1と終値N/I*Jとを比
較する(S1)。始値〉終値でないため(SlでNO)
、その始値でループが実行され(S2)、始値に増分値
を加えた値が新たな始値として共有レジスタに格納され
(S3)、制御は処理1に戻される。
第3図および第4図を参照すると、J番目のプロセッサ
5上のタスクグは、処理81〜S3を繰返し実行するこ
とにより、始値N/I*(J−1)+1から増分値を順
次加算した各ループを実行する。同様に、(J MOD
  I)+1番目のプロセッサ6上のタスクも、処理S
1−83を繰返し実行することにより始値N/I* (
(J  MODI)+1−1)+1から増分値を順次加
算した各ループを実行する。ここで、J番目のプpセッ
サ5上のタスクとU MOD  I) +1番目のプロ
セッサ6上のタスクとの進捗状況が等しければ、両タス
クは初期設定された回数の処理をほぼ同時に終了するこ
とになる。しかし、J番目のプロセッサ5上のタスクの
進捗状況がプロセッサ6上のタスクの進捗状況より進ん
でいると、J番目のプロセッサ5上のタスクの方がプロ
セッサ6上のタスクより先に初期設定された終値N/I
*Jまでのループ処理を終了する。このような場合、J
番目のプロセッサ5上のタスクは、共有レジスタ41の
始値N/I* (J−1) +1と終値N/I*Jとの
関係が始値N/I* (J−1) +1>終値N/I*
Jであると判定する。自プロセッサ5に割り当てられた
回数のループを処理し終えたので、(J MOD I)
+1番目のプロセッサ6対応の共有レジスタ42が参照
されて、その始値m[m<N/I* ((J  MOD
  I)+1)コと増分値との和が求められ共有レジス
タ42に設定されている終値N/I* (J MOD 
 I) +1)と比較サレル。ソシテ終値N/I* (
(J MOD  I)+1)が始値mと増分値との和以
上であれば(S6のNo)、プロセッサ6上のタスクに
は未処理のループが残っていることを意味する。このた
め共有レジスタ42の始値mと終値N/I* ((JM
OD  I)+1)とで定まるループ範囲の半分のルー
プ範囲の始値と終値とがプロセッサ5対応の共有レジス
タ4lに移送されると共に、その移送に応じてプロセッ
サ6対応の共有レジスタ42中の始値と終値とが定義し
直される。これらの処理により、未処理のループ範囲[
:m−N/I* ((J MOD  I) +1)Eの
半分が自タスクで引き受けられる(S7)。
なお、(J MOD I)+1番目のプロセッサ6対応
の共有レジスタ42を参照したとき、その始値mと増分
値とのが終値N/I:f− (J MODI)+1)よ
り大きければ(86(7)YES)、(J MOD  
I) +1台目のプ四セッサ6上のタスクも自身に割当
てられた回数のループを終了し、引受けるループ処理は
存在しないことを意味する。
この結果、自タスクの処理も終了する。
〔発明の効果〕
本発明の第1の特徴は、手続内ループをマルチタスク化
する場合、ループ変数の取り得る範囲を分割してプロセ
ッサ毎に別個のプロセッサ間共有レジスタに割り当てて
実行させ、他プロセッサに対応するプロセッサ間共有レ
ジスタの参照等は自プロセッサに割当てられた回数のル
ープの終了後に行なうことにある。この本発明の第1の
特徴によりプロセッサ間共有レジスタの競合発生の可能
性が極めて少なくなるという効果がある。本発明の第2
の特徴は、自プロセッサ上のタスクに割当てられた回数
のループの実行後他プロセッサ対応のプロセッサ間共有
レジスタを参照し、他プロセッサ上のタスクに未処理の
ループが残っている場合、その未処理のループにかかる
ループ変数の取り得る範囲の一部を自プロセッサ対応の
プロセッサ間共有レジスタに移して自プロセッサ上のタ
スクがループ処理を行うことにある。
本発明の第1および第2の特徴により、手続内ループ全
体の実行時間を短縮化することができるという効果があ
る。この効果は、プロセッサ数が多く、ループ実行回数
が多ければ多い程大きくなる。
4.
【図面の簡単な説明】
第1図は本発明の一実施例を通用するシステムを示す図
、第2図は本発明の一実施例の特徴部分を示す図、第3
図は本発明の他の実施例を適用するシステムを示す図、
および第4図は本発明の他の実施例の特徴部分を示す図
である。

Claims (1)

  1. 【特許請求の範囲】 手続内ループをマルチタスク化し個々のタスクをマルチ
    プロセッサシステムの構成要素の個々のプロセッサで実
    行する手続内ループのマルチタスク化方式であって、 前記手続内ループにかかるループ変数の取り得る範囲を
    分割した各分割範囲の始値と終値とを格納する各プロセ
    ッサ対応のプロセッサ間共有レジスタ手段を備え、 各プロセッサ上のタスクのそれぞれは、 前記各プロセッサ対応のプロセッサ間共有レジスタ手段
    に格納された終値の示す回数に到達するまで手続内ルー
    プ処理を繰返し実行する実行手段と、 この実行手段による終値回数までの手続内ループ処理の
    実行終了後、他のプロセッサ対応のプロセッサ間共有レ
    ジスタを参照し未処理のループが残っているか否かを判
    定する判定手段と、 この判定手段で未処理のループが残っているとの判定に
    応答してその未処理のループにかかるループ変数の取り
    得る範囲の一部を自プロセッサ対応のプロセッサ間共有
    レジスタに移送させループ処理を続行する続行手段とを
    含むことを特徴とする手続内ループ内のマルチタスク化
    方式。
JP25081490A 1989-11-07 1990-09-20 手続内ループのマルチタスク化方式 Pending JPH03218556A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP28933789 1989-11-07
JP1-289337 1989-11-07

Publications (1)

Publication Number Publication Date
JPH03218556A true JPH03218556A (ja) 1991-09-26

Family

ID=17741893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25081490A Pending JPH03218556A (ja) 1989-11-07 1990-09-20 手続内ループのマルチタスク化方式

Country Status (1)

Country Link
JP (1) JPH03218556A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013253563A (ja) * 2012-06-07 2013-12-19 Toyota Motor Corp 内燃機関の制御装置
JP5945779B2 (ja) * 2010-06-14 2016-07-05 パナソニックIpマネジメント株式会社 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5945779B2 (ja) * 2010-06-14 2016-07-05 パナソニックIpマネジメント株式会社 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ
JP2013253563A (ja) * 2012-06-07 2013-12-19 Toyota Motor Corp 内燃機関の制御装置

Similar Documents

Publication Publication Date Title
Garey et al. Scheduling tasks with nonuniform deadlines on two processors
Baer A survey of some theoretical aspects of multiprocessing
US11550591B2 (en) Scheduling tasks in a multi-threaded processor
JP2500101B2 (ja) 共用変数の値を更新する方法
RH Jr Parallel symbolic computing
US6463532B1 (en) System and method for effectuating distributed consensus among members of a processor set in a multiprocessor computing system through the use of shared storage resources
US5872990A (en) Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
EP0454610A2 (en) Method and device for concurrency control of shared data updates and queries
JPS62262142A (ja) 複数実行ユニツト・ユニプロセツサ・システム
JPH05197604A (ja) マルチプロセッサ・コンピュータ及びその動作方法
WO2008064139A1 (en) Software transaction commit order and conflict management
JPH0298741A (ja) マルチプロセッサコンピュータにおいてネスト式ループを実行する階層的方法
JPH0256640A (ja) 共通ブロックへのアクセス競合軽減方法
JP3113841B2 (ja) 並列トランザクション処理システム
Hendler et al. A scalable lock-free stack algorithm
JPH0157373B2 (ja)
WO2008157091A1 (en) Exception ordering in contention management to support speculative sequential semantics
JP4283890B2 (ja) 技術的プロセスの制御方法
Michael et al. Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors
Sharma et al. Window-based greedy contention management for transactional memory: theory and practice
JPH03218556A (ja) 手続内ループのマルチタスク化方式
Shi et al. Multiprocessor synchronization of periodic real-time tasks using dependency graphs
US5586320A (en) High speed synchronous processing system for executing parallel processing of programs having loops
US5287509A (en) Multitasking system for in-procedure loops
Kazi et al. Coarse-grained thread pipelining: A speculative parallel execution model for shared-memory multiprocessors