JP2003029987A - スレッド終了方法及び装置並びに並列プロセッサシステム - Google Patents

スレッド終了方法及び装置並びに並列プロセッサシステム

Info

Publication number
JP2003029987A
JP2003029987A JP2001212249A JP2001212249A JP2003029987A JP 2003029987 A JP2003029987 A JP 2003029987A JP 2001212249 A JP2001212249 A JP 2001212249A JP 2001212249 A JP2001212249 A JP 2001212249A JP 2003029987 A JP2003029987 A JP 2003029987A
Authority
JP
Japan
Prior art keywords
thread
processor
program counter
fork
register
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.)
Granted
Application number
JP2001212249A
Other languages
English (en)
Other versions
JP3630118B2 (ja
Inventor
Hiroshi Osawa
拓 大澤
Satoshi Matsushita
智 松下
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
Priority to JP2001212249A priority Critical patent/JP3630118B2/ja
Priority to US10/174,953 priority patent/US7134124B2/en
Priority to GB0216274A priority patent/GB2380834B/en
Publication of JP2003029987A publication Critical patent/JP2003029987A/ja
Application granted granted Critical
Publication of JP3630118B2 publication Critical patent/JP3630118B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 単一のプログラムを複数のスレッドに分割し
複数のプロセッサで並列に実行する並列プロセッサシス
テムにおいて、スレッドを終了させる為のターム命令を
削減する。 【解決手段】 各プロセッサは、フォークした子スレッ
ドの開始アドレスを保存するレジスタ29と、このレジス
タ29に保存した開始アドレスに自身のプログラムカウン
タ21の値が一致したことを検出する比較回路30とを備え
る。各プロセッサは、フォークした子スレッドの開始ア
ドレスに自身のプログラムカウンタ21の値が一致する
と、スレッド管理部にスレッド終了通知7dを送信し、ス
レッド管理部からスレッド終了許可7eが返却されると、
親スレッドの実行を終了する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は単一のプログラムを
複数のスレッドに分割して複数のプロセッサにより並列
に実行する並列プロセッサシステムに関し、特に個々の
プロセッサにおけるスレッドの終了方法に関する。
【0002】
【従来の技術】単一のプログラムを並列プロセッサシス
テムで並列に処理する手法として、プログラムをスレッ
ドと呼ぶ命令流に分割して複数のプロセッサで並列に実
行するマルチスレッド実行方法があり、この方法を記載
した文献として、特開平10−27108号公報(以
下、文献1と称す)、「On−Chip Multip
rocessor指向 制御並列アーキテクチャMUS
CATの提案」(並列処理シンポジウムJSPP97論
文集、情報処理学会、pp.229−236、May
1997)(以下、文献2と称す)、特開平10−78
880号公報(以下、文献3と称す)、「非数値計算プ
ログラムのスレッド間命令レベル並列を利用するプロセ
ッサ・アーキテクチャSKY」(並列処理シンポジウム
JSPP98論文集、情報処理学会、pp.87−9
4、平成10年6月)(以下、文献4と称す)、「Mu
ltiscalar Processor」(G.S.
Sohi,S.E.Breach and T.N.V
ijaykumar, The22nd Intern
ational Symposium on Comp
uter Architecture,IEEE Co
mputer SocietyPress,1995,
ページ414−425)(以下、文献5と称す)等があ
る。以下、これらの文献に記載された従来の技術につい
て説明する。
【0003】一般にマルチスレッド実行方法において、
他のプロセッサ上に新たなスレッドを生成することを、
スレッドをフォーク(fork)すると言い、フォーク
動作を行った側のスレッドを親スレッド、生成された新
しいスレッドを子スレッド、スレッドをフォークする箇
所をフォーク点、子スレッドの先頭箇所をフォーク先ア
ドレスまたは子スレッドの開始点と呼ぶ。文献1〜4で
は、スレッドのフォークを指示するためにフォーク点に
フォーク命令が挿入される。フォーク命令にはフォーク
先アドレスが指定され、フォーク命令の実行によりその
フォーク先アドレスから始まる子スレッドが他プロセッ
サ上に生成され、子スレッドの実行が開始される。ま
た、スレッドの処理を終了させるターム(term)命
令と呼ばれる命令が用意されており、各プロセッサはタ
ーム命令を実行することによりスレッドの処理を終了す
る。文献4では、このターム命令をFINISH命令と
呼んでいる。
【0004】図7にマルチスレッド実行方法の処理の概
要を示す。同図(a)は3つのスレッドA、B、Cに分
割された単一のプログラムを示す。このプログラムを単
一のプロセッサで処理する場合、同図(b)に示すよう
に1つのプロセッサPEがスレッドA、B、Cを順番に
処理していく。これに対して文献1〜5のマルチスレッ
ド実行方法では、同図(c)に示すように、1つのプロ
セッサPE1にスレッドAを実行させ、プロセッサPE
1でスレッドAを実行している最中に、スレッドAに埋
め込まれたフォーク命令によってスレッドBを他のプロ
セッサPE2に生成し、プロセッサPE2においてスレ
ッドBを実行させる。また、プロセッサPE2はスレッ
ドBに埋め込まれたフォーク命令によってスレッドCを
プロセッサPE3に生成する。プロセッサPE1、PE
2はそれぞれスレッドB、Cの開始点の直前に埋め込ま
れたターム命令によってスレッドの処理を終了し、プロ
セッサPE3はスレッドCの最後の命令を実行すると、
その次の命令(一般にはシステムコール命令)を実行す
る。このように複数のプロセッサでスレッドを同時に並
行して実行することにより、逐次処理に比べて性能の向
上が図られる。
【0005】従来の他のマルチスレッド実行方法とし
て、図7(d)に示すように、スレッドAを実行してい
るプロセッサPE1からフォークを複数回行うことによ
り、プロセッサPE2にスレッドBを、またプロセッサ
PE3にスレッドCをそれぞれ生成するマルチスレッド
実行方法も存在する。この図7(d)のモデルに対し
て、同図(c)に示したようにスレッドはその生存中に
高々1回に限って有効な子スレッドを生成することがで
きるという制約を課したマルチスレッド実行方法をフォ
ーク1回モデルと呼ぶ。フォーク1回モデルでは、スレ
ッド管理の大幅な簡略化が可能となり、現実的なハード
ウェア規模でスレッド管理部のハードウェア化が実現で
きる。また、個々のプロセッサは子スレッドを生成する
他プロセッサが1プロセッサに限定されるため、隣接す
るプロセッサを単方向にリング状に接続した並列プロセ
ッサシステムでマルチスレッド実行が可能となる。本発
明はこのようなフォーク1回モデルを前提とする。
【0006】子スレッドをフォークした場合、親スレッ
ドから子スレッドへのレジスタ継承が必要になる。この
レジスタ継承に関しては、一般に2通りの方式がある。
1つは、文献1〜3の並列プロセッサシステムで採用さ
れているように、親スレッドのフォーク時点のレジスタ
ファイルの内容だけを継承対象とし、フォーク後に更新
されたレジスタは継承しない方式である。もう1つは、
文献4、5の並列プロセッサシステムで採用されている
ように、フォーク後に更新されたレジスタも継承対象と
する方式である。前者をフォーク時レジスタ転送方式、
後者をフォーク後レジスタ転送方式と呼ぶ。
【0007】その他、文献2に記載のMUSCATで
は、スレッド間の同期命令など、スレッドの並列動作を
柔軟に制御するための専用命令が数多く用意されてい
る。
【0008】
【発明が解決しようとする課題】上述した従来の並列プ
ロセッサシステムにおいては、個々のプロセッサでスレ
ッドを終了させるためには、必ずターム命令を子スレッ
ドの開始点の直前に記述しておく必要がある。ターム命
令は1スレッド当たり1個必要になるため、1つのスレ
ッドに含まれる命令数が少ない細粒度スレッドほど、全
命令数に占めるターム命令の割合が多くなる。ターム命
令も他の命令と同様に命令メモリに格納されてフェッチ
の対象となるため、命令メモリのハードウェア量の増
加、命令フェッチ数の増加による処理性能の低下が問題
となる。
【0009】本発明はこのような従来の問題点を解決し
たものであり、その目的は、スレッドを終了させる為の
ターム命令を削減することにより命令メモリに必要な容
量を削減し、また命令フェッチ数の削減による処理性能
の向上を図ることにある。
【0010】
【課題を解決するための手段】本発明は、単一のプログ
ラムを複数のスレッドに分割し複数のプロセッサで並列
に実行する並列プロセッサシステムにおいて、各プロセ
ッサは、フォークした子スレッドの開始アドレスに自身
のプログラムカウンタの値が一致したことを検出したと
きに親スレッドの実行を終了することを基本とする。
【0011】また文献1等に示されるように、逐次的な
実行順序関係を持つ複数のスレッドを並列に実行する
際、子スレッドは親スレッドが終了しなければ終了でき
ないという制約が課される場合があり、一般にこのよう
な制約はスレッドの生成、終了を管理するスレッド管理
部で保証している。従って、このような制約のあるマル
チスレッド実行においては、各プロセッサはフォークし
た子スレッドの開始アドレスに自身のプログラムカウン
タの値が一致したことを検出したときにスレッド管理部
の許可を得て親スレッドの実行を終了する。
【0012】
【作用】本発明にあっては、子スレッドをフォークした
親スレッドを実行しているプロセッサは、プログラムカ
ウンタの値が子スレッドの開始アドレスに一致すると親
スレッドの実行を終えるように動作するため、並列化プ
ログラム中にターム命令を記述しておく必要がない。以
下、図1を参照して本発明の作用を説明する。
【0013】図1(a)は3つのスレッドA、B、Cに
分割された単一のプログラムを示す。ここで、スレッド
Bの開始アドレスをb、スレッドCの開始アドレスをc
とする。同図(b)に示すように、1つのプロセッサP
E1にスレッドAを実行させ、プロセッサPE1でスレ
ッドAを実行している最中に、スレッドAに埋め込まれ
たフォーク命令によってスレッドBを他のプロセッサP
E2に生成し、プロセッサPE2において開始アドレス
bから始まるスレッドBを実行させる。また、プロセッ
サPE2はスレッドBに埋め込まれたフォーク命令によ
ってスレッドCをプロセッサPE3に生成し、プロセッ
サPE3において開始アドレスcから始まるスレッドC
を実行させる。そして、スレッドAを実行しているプロ
セッサPE1は、自身のプログラムカウンタ(PC)の
値がスレッドBの開始アドレスbに一致したとき、また
スレッドBを実行しているプロセッサPE2は、自身の
プログラムカウンタ(PC)の値がスレッドCの開始ア
ドレスcに一致したとき、それぞれスレッドA、Bの実
行を終了する。
【0014】
【発明の実施の形態】次に本発明の実施の形態の例につ
いて図面を参照して詳細に説明する。
【0015】
【第1の実施の形態】図2を参照すると、本発明を適用
した並列プロセッサシステムの一例は、4スレッド並列
実行型プロセッサであり、4個のプロセッサ1−i(i
=0〜3)が信号線2−iによってスレッドの生成、終
了を管理するスレッド管理部3に接続されると共に、信
号線4−iによって共有のメモリ5に接続されている。
また、隣接するプロセッサ同士が通信バス6−iによっ
て単方向にリング状に接続されている。この例では、4
スレッド並列実行型プロセッサを取り上げたが、8スレ
ッドや16スレッドの並列実行型プロセッサ等、一般に
n(≧2)スレッド並列実行型プロセッサに対して本発
明は適用可能である。
【0016】各プロセッサ1−iは、プログラムカウン
タ(以下、PCと称す)及びレジスタファイルを独立に
有し、PCに従って、メモリ5中のスレッドの命令を同
時にフェッチ、解釈、実行する機能を有している。各プ
ロセッサ1−iは、スレッド管理部3から信号線2−i
を通じてターゲットPC値を伴うスレッド開始要求7c
が送信された時点で、スレッドの実行を開始する。この
時点でスレッド管理部3において当該プロセッサ1−i
はビジー状態として管理される。スレッドの実行を終了
するプロセッサ1−iは、スレッド管理部3に対して信
号線2−iを通じてスレッド終了通知7dを送信する。
このスレッド終了通知7dは、通知元のプロセッサ1−
iが最古親スレッドを実行していることを条件にスレッ
ド管理部3で受理され、当該プロセッサ1−iはフリー
状態として管理され、プロセッサ1−iにスレッド終了
許可7eが返却される。プロセッサ1−iはスレッド終
了許可7eを受信した時点でスレッドの実行を終える。
【0017】各プロセッサ1−iは、実行中の親スレッ
ドに存在するフォーク命令によって隣接する一方のプロ
セッサ1−j(i≠j)(プロセッサ1−0はプロセッ
サ1−1、プロセッサ1−1はプロセッサ1−2、プロ
セッサ1−2はプロセッサ1−3、プロセッサ1−3は
プロセッサ1−0)に子スレッドをフォークすることが
できる。各プロセッサ1−iは、子スレッドのフォーク
を行う際、信号線2−iを通じてスレッド管理部3に対
し、子スレッドのフォーク先アドレス(開始PC値)を
伴うフォーク要求7aを送信する。スレッド管理部3
は、フォーク要求7aを受信すると、隣接プロセッサの
状態に基づいて、隣接する他プロセッサ1−jに対する
フォークが可能か否かを判定し、可能ならば当該プロセ
ッサ1−jに対してフォーク先アドレスを伴うスレッド
開始要求7cを送信する一方、フォーク要求元のプロセ
ッサ1−iに対しては、フォーク応答7bを返却する。
フォーク応答7bを受信したプロセッサ1−iは、通信
バス6−iを通じてフォーク先プロセッサ1−jに親ス
レッドのレジスタの値を転送するレジスタ継承を行い、
スレッド開始要求7cを受信したプロセッサ1−jは、
フォーク先アドレスから子スレッドの実行を開始する。
【0018】図3を参照すると、各々のプロセッサ1−
iは、スレッド管理部3から送信されたスレッド開始要
求7cに付随する開始アドレス値がセットされ、その後
に適宜歩進されるPC21と、PC21に従ってメモリ
5からスレッドの命令をフェッチする命令フェッチユニ
ット22と、フェッチされた命令をデコードし、実行す
る実行ユニット23と、汎用レジスタ24−0〜24−
mの集合であるレジスタファイル25と、フォーク先プ
ロセッサに対して通信バス6−i経由でレジスタファイ
ル25の内容を転送するレジスタ転送ユニット26と、
実行ユニット23がフォーク命令を実行したときに出力
するフォーク信号27でセットされ、スレッド管理部3
から受信されるフォーク応答7bによってリセットさ
れ、その出力がフォーク要求7aとなるフォーク有効ビ
ット28と、フォーク要求7aに付随するフォーク先ア
ドレスを保存するレジスタ29と、PC21の値がレジ
スタ29に保存されたフォーク先アドレスと一致するか
否かを検出し、一致を検出したときに一致信号31を実
行ユニット23に出力する比較回路30とを含んで構成
されている。
【0019】各々のプロセッサ1−iは、スレッド開始
要求7cによって、それに付随する開始アドレスからス
レッドの実行を開始する。また、実行ユニット23は、
フォーク命令の実行時、フォーク信号27によってフォ
ーク有効ビット28をセットすると共にフォーク先アド
レスをレジスタ29に保存し、スレッド管理部3に対し
てフォーク先アドレスを添えてフォーク要求7aを送信
する。さらに実行ユニット23は、PC21の値がレジ
スタ29に保存されたフォーク先アドレスと一致して比
較回路30から一致信号31が出力されると、スレッド
の処理を終了すべく、スレッド管理部3に対してスレッ
ド終了通知7dを送信し、その応答としてスレッド管理
部3からスレッド終了許可7eを受信するとスレッドの
処理を終了する。
【0020】レジスタ転送ユニット26は、フォークし
た子スレッドへ親スレッドから継承すべきレジスタを転
送するユニットであり、例えば、通信バス6−iのバス
幅によって一度に転送できる数のレジスタ毎に、レジス
タファイル25のレジスタの値とレジスタ番号(レジス
タアドレス)とをフォーク先プロセッサのレジスタファ
イルへ送信する処理を行う。
【0021】スレッドの開始から終了までのプロセッサ
1−iの処理の概要を図4に示す。スレッド管理部3か
らのスレッド開始要求7cに基づき、プロセッサ1−i
で1つのスレッドの実行が開始される際、当該プロセッ
サ1−iのフォーク有効ビット28がリセットされ、ま
たレジスタ29の内容がクリアされる(ステップS
1)。以後、スレッドの命令のフェッチ、デコード、実
行が継続して実行される(ステップS2)。
【0022】実行ユニット23でデコードされた命令が
フォーク命令の場合(ステップS4でYES)、実行ユ
ニット23は、当該フォーク命令で指定されたフォーク
先アドレスをレジスタ29に保存し(ステップS5)、
フォーク信号27によってフォーク有効ビット28をセ
ットすることにより、レジスタ27に保存したフォーク
先アドレスを伴ったフォーク要求7aをスレッド管理部
3に送信する(ステップS6)。そして、スレッド管理
部3からフォーク応答7bが返却されるのを待つ(ステ
ップS7)。
【0023】スレッド管理部3は、プロセッサ1−iか
らフォーク要求7aが送出されている期間内で、隣接プ
ロセッサ1−jに対するフォークが可能になると、要求
元のプロセッサ1−iに対してフォーク応答7bを返却
すると同時に、隣接プロセッサ1−jに対してスレッド
開始要求7cを送信する。プロセッサ1−iは、スレッ
ド管理部3からフォーク応答7bを受信すると、フォー
ク有効ビット28をリセットし、レジスタ転送ユニット
26によって親スレッドのレジスタファイル25の内容
を通信バス6−i経由でフォーク先プロセッサ1−jの
レジスタファイルに転送するレジスタ継承操作を行う
(ステップS8)。他方、フォーク先プロセッサ1−j
では図4のステップS1以降の処理を実行する。
【0024】プロセッサ1−iで命令の実行が進み、P
C21の値がレジスタ29に保存されたフォーク先アド
レスに一致すると(ステップS3でYES)、比較回路
30から一致信号31が実行ユニット23に出力され、
実行ユニット23はスレッドの終了処理を開始する。具
体的には、スレッド終了通知7dをスレッド管理部3に
送信し(ステップS9)、スレッド管理部3からスレッ
ド終了許可7eを受信した時点でスレッドの処理を終了
する(ステップS10)。
【0025】このように本実施の形態によれば、子スレ
ッドの開始点まで命令の実行が進んだことをハードウェ
ア的に検出してスレッドの終了を行うので、従来のよう
なターム命令が必要なくなる。従って、逐次処理プログ
ラムから本実施の形態用の並列化プログラムを生成する
コンパイラでは、逐次処理プログラムの制御フロー及び
データフローを解析して、基本ブロック或いは複数の基
本ブロックを並列化の単位、すなわちスレッドに分割
し、並列化のためのコードを挿入して並列化プログラム
を生成して出力する際、フォーク点にはフォーク命令を
挿入するが、子スレッドの開始点の直前に従来挿入され
ていたターム命令は挿入しない。
【0026】
【第2の実施の形態】前述した第1の実施の形態では、
フォーク命令の時点で実際にフォーク可能になるまで親
スレッドの実行をウエイトしたが(図4のステップS
7)、本実施の形態ではフォーク命令の時点でフォーク
不可能な場合にレジスタファイルの内容を退避させ、フ
ォーク可能となった時点で前記退避した情報に基づいて
子スレッドのフォークを行うようにしたものである。以
下、第1の実施の形態との相違点を中心に本実施の形態
を説明する。
【0027】図5を参照すると、本実施の形態における
並列プロセッサシステムの各々のプロセッサ1−iは、
図3に示した構成に加えて、退避バッファ41と、退避
バッファ有効ビット42と、実行ユニット23から出力
される退避信号43によって起動されるとレジスタファ
イル25の内容を退避バッファ41に退避する退避ユニ
ット44とを備え、レジスタ転送ユニット26はレジス
タファイル25及び退避バッファ41に接続されてい
る。退避バッファ有効ビット42は、スレッド開始時に
リセットされ、退避信号43によってセットされ、また
退避バッファ41に基づくフォークが行われた場合にリ
セットされる。
【0028】スレッドの開始から終了までのプロセッサ
1−iの処理の概要を図6に示す。スレッド管理部3か
らのスレッド開始要求7cに基づき、プロセッサ1−i
で1つのスレッドの実行が開始される際、当該プロセッ
サ1−iのフォーク有効ビット28及び退避バッファ有
効ビット42がリセットされ、またレジスタ29の内容
がクリアされる(ステップS11)。以後、スレッドの
命令のフェッチ、デコード、実行が継続して実行される
(ステップS12)。
【0029】実行ユニット23でデコードされた命令が
フォーク命令の場合(ステップS14でYES)、実行
ユニット23はフォーク先アドレスをレジスタ29に保
存し(ステップS15)、フォーク信号27によってフ
ォーク有効ビット28をセットすることによりフォーク
先アドレスを伴ったフォーク要求7aをスレッド管理部
3に送信する(ステップS16)。そして、スレッド管
理部3から所定の時間内にフォーク応答7bが返却され
た場合(ステップS17でYES)、フォーク有効ビッ
ト28をリセットし、レジスタ転送ユニット26によっ
てレジスタファイル25の内容をフォーク先プロセッサ
1−jに転送する(ステップS18)。
【0030】他方、スレッド管理部3から所定の時間内
にフォーク応答7bが返却されなかった場合(ステップ
S17でNO)、退避信号43によって退避ユニット4
4を起動することによりレジスタファイル25の内容を
退避バッファ41へ退避させ、退避バッファ有効ビット
42をセットする(ステップS19)。この退避バッフ
ァ有効ビット42がセットされている間に、スレッド管
理部3からフォーク応答7bを受信すると(ステップS
31、S32でYES)、レジスタ転送ユニット26に
より退避バッファ41に退避されているレジスタファイ
ル25の内容をフォーク先プロセッサ1−jに転送する
(ステップS33)。このとき、フォーク有効ビット2
8及び退避バッファ有効ビット42がリセットされる。
【0031】プロセッサ1−iで命令の実行が進み、P
C21の値がレジスタ29に保存されたフォーク先アド
レスに一致すると(ステップS13でYES)、比較回
路30から一致信号31が実行ユニット23に出力さ
れ、実行ユニット23はスレッド終了通知7dをスレッ
ド管理部3に送信する(ステップS20)。そして、ス
レッド管理部3からスレッド終了許可7eを受信した時
点でスレッドの処理を終了する(ステップS21)。
【0032】以上、本発明を幾つかの実施の形態を挙げ
て説明したが、本発明は以上の実施の形態にのみ限定さ
れず、その他各種の付加変更が可能である。例えば、前
記各実施の形態では、フォーク時レジスタ転送方式を前
提としたが、フォーク後レジスタ転送方式のマルチスレ
ッド実行方法においても同様に適用可能である。また、
複数のプロセッサに共通にスレッド管理部3を設ける集
中スレッド管理型の並列プロセッサシステムに本発明を
適用したが、文献1等に記載されるように各プロセッサ
毎にスレッド管理部を設ける分散スレッド管理型の並列
プロセッサシステムにも本発明は適用可能である。ま
た、隣接するプロセッサ間同士を単方向にリング状に接
続する通信バスを使ってレジスタ転送を行ったが、全て
のプロセッサが共通の通信バスに接続された並列プロセ
ッサシステムでは当該共通の通信バスを使ってレジスタ
転送が行われる。
【0033】
【発明の効果】以上説明したように本発明によれば、子
スレッドの開始点の直前にターム命令を記述する必要が
なくなり、ターム命令の削減によってプログラムサイズ
をコンパクトにでき、命令メモリに必要な容量の削減、
命令フェッチ数の削減による処理性能の向上が可能とな
る。
【図面の簡単な説明】
【図1】本発明の作用の説明図である。
【図2】本発明を適用した並列プロセッサシステムの一
例を示すブロック図である。
【図3】本発明の第1の実施の形態にかかる並列プロセ
ッサシステムにおけるプロセッサの構成例を示すブロッ
ク図である。
【図4】本発明の第1の実施の形態にかかる並列プロセ
ッサシステムにおけるスレッドの開始から終了までのプ
ロセッサの処理の一例を示すフローチャートである。
【図5】本発明の第2の実施の形態にかかる並列プロセ
ッサシステムにおけるプロセッサの構成例を示すブロッ
ク図である。
【図6】本発明の第2の実施の形態にかかる並列プロセ
ッサシステムにおけるスレッドの開始から終了までのプ
ロセッサの処理の一例を示すフローチャートである。
【図7】従来のマルチスレッド実行方法の処理の概要を
示す図である。
【符号の説明】
1−0〜1−3…プロセッサ 2−0〜2−3…信号線 3…スレッド管理部 4−0〜4−3…信号線 5…メモリ 6−0〜6−3…通信バス

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 単一のプログラムを複数のスレッドに分
    割し複数のプロセッサで並列に実行する並列プロセッサ
    システムにおけるスレッド終了方法において、各プロセ
    ッサはフォークした子スレッドの開始アドレスに自身の
    プログラムカウンタの値が一致したことを検出したとき
    に親スレッドの実行を終了することを特徴とするスレッ
    ド終了方法。
  2. 【請求項2】 各々プログラムカウンタ及びレジスタフ
    ァイルを独立に有し前記プログラムカウンタに従ってス
    レッドの命令を同時にフェッチ、解釈、実行する複数の
    プロセッサと、スレッドの生成及び終了を管理するスレ
    ッド管理部とを備え、何れかの前記プロセッサで実行さ
    れている親スレッド中のフォーク命令によって指定され
    たフォーク先アドレスから始まる子スレッドの実行を、
    他の前記プロセッサに開始させる機能を備えた並列プロ
    セッサシステムにおけるスレッド終了方法において、各
    プロセッサはフォークした子スレッドの開始アドレスに
    自身のプログラムカウンタの値が一致したことを検出し
    たときに前記スレッド管理部の許可を得て親スレッドの
    実行を終了することを特徴とするスレッド終了方法。
  3. 【請求項3】 単一のプログラムを複数のスレッドに分
    割し複数のプロセッサで並列に実行する並列プロセッサ
    システムにおけるスレッド終了装置において、各プロセ
    ッサは、フォークした子スレッドの開始アドレスを保存
    するレジスタと、該レジスタに保存した前記開始アドレ
    スに自身のプログラムカウンタの値が一致したことを検
    出する検出手段とを備え、各プロセッサはフォークした
    子スレッドの開始アドレスに自身のプログラムカウンタ
    の値が一致したことを検出したときに親スレッドの実行
    を終了する構成を有するスレッド終了装置。
  4. 【請求項4】 各々プログラムカウンタ及びレジスタフ
    ァイルを独立に有し前記プログラムカウンタに従ってス
    レッドの命令を同時にフェッチ、解釈、実行する複数の
    プロセッサと、スレッドの生成及び終了を管理するスレ
    ッド管理部とを備え、何れかの前記プロセッサで実行さ
    れている親スレッド中のフォーク命令によって指定され
    たフォーク先アドレスから始まる子スレッドの実行を、
    他の前記プロセッサに開始させる機能を備えた並列プロ
    セッサシステムにおけるスレッド終了装置において、各
    プロセッサは、フォークした子スレッドの開始アドレス
    を保存するレジスタと、該レジスタに保存した前記開始
    アドレスに自身のプログラムカウンタの値が一致したこ
    とを検出する検出手段とを備え、各プロセッサはフォー
    クした子スレッドの開始アドレスに自身のプログラムカ
    ウンタの値が一致したことを検出したときに前記スレッ
    ド管理部の許可を得て親スレッドの実行を終了する構成
    を有するスレッド終了装置。
  5. 【請求項5】 各々プログラムカウンタ及びレジスタフ
    ァイルを独立に有し前記プログラムカウンタに従ってス
    レッドの命令を同時にフェッチ、解釈、実行する複数の
    プロセッサと、スレッドの生成及び終了を管理するスレ
    ッド管理部とを備え、何れかの前記プロセッサで実行さ
    れている親スレッド中のフォーク命令によって指定され
    たフォーク先アドレスから始まる子スレッドの実行を、
    他の前記プロセッサに開始させる機能を備えた並列プロ
    セッサシステムにおいて、各プロセッサは、フォークし
    た子スレッドの開始アドレスを保存するレジスタと、該
    レジスタに保存した前記開始アドレスに自身のプログラ
    ムカウンタの値が一致したことを検出する検出手段とを
    備え、各プロセッサはフォークした子スレッドの開始ア
    ドレスに自身のプログラムカウンタの値が一致したこと
    を検出したときに親スレッドの実行を終了する構成を有
    する並列プロセッサシステム。
  6. 【請求項6】 各々プログラムカウンタ及びレジスタフ
    ァイルを独立に有し前記プログラムカウンタに従ってス
    レッドの命令を同時にフェッチ、解釈、実行する複数の
    プロセッサと、スレッドの生成及び終了を管理するスレ
    ッド管理部とを備え、何れかの前記プロセッサで実行さ
    れている親スレッド中のフォーク命令によって指定され
    たフォーク先アドレスから始まる子スレッドの実行を、
    他の前記プロセッサに開始させる機能を備えた並列プロ
    セッサシステムにおいて、各プロセッサは、フォークし
    た子スレッドの開始アドレスを保存するレジスタと、該
    レジスタに保存した前記開始アドレスに自身のプログラ
    ムカウンタの値が一致したことを検出する検出手段とを
    備え、各プロセッサはフォークした子スレッドの開始ア
    ドレスに自身のプログラムカウンタの値が一致したこと
    を検出したときに前記スレッド管理部の許可を得て親ス
    レッドの実行を終了する構成を有する並列プロセッサシ
    ステム。
JP2001212249A 2001-07-12 2001-07-12 スレッド終了方法及び装置並びに並列プロセッサシステム Expired - Fee Related JP3630118B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001212249A JP3630118B2 (ja) 2001-07-12 2001-07-12 スレッド終了方法及び装置並びに並列プロセッサシステム
US10/174,953 US7134124B2 (en) 2001-07-12 2002-06-20 Thread ending method and device and parallel processor system
GB0216274A GB2380834B (en) 2001-07-12 2002-07-12 Thread ending method and device and parallel processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001212249A JP3630118B2 (ja) 2001-07-12 2001-07-12 スレッド終了方法及び装置並びに並列プロセッサシステム

Publications (2)

Publication Number Publication Date
JP2003029987A true JP2003029987A (ja) 2003-01-31
JP3630118B2 JP3630118B2 (ja) 2005-03-16

Family

ID=19047441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001212249A Expired - Fee Related JP3630118B2 (ja) 2001-07-12 2001-07-12 スレッド終了方法及び装置並びに並列プロセッサシステム

Country Status (3)

Country Link
US (1) US7134124B2 (ja)
JP (1) JP3630118B2 (ja)
GB (1) GB2380834B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012004990A1 (ja) * 2010-07-07 2012-01-12 パナソニック株式会社 プロセッサ
JP2012059195A (ja) * 2010-09-13 2012-03-22 Renesas Electronics Corp マルチスレッドプロセッサ

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US9088474B2 (en) 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US8176298B2 (en) 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US8478811B2 (en) 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
EP1660993B1 (en) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US8245230B2 (en) * 2005-03-14 2012-08-14 Qnx Software Systems Limited Adaptive partitioning scheduler for multiprocessing system
CA2538503C (en) * 2005-03-14 2014-05-13 Attilla Danko Process scheduler employing adaptive partitioning of process threads
US9361156B2 (en) 2005-03-14 2016-06-07 2236008 Ontario Inc. Adaptive partitioning for operating system
US8387052B2 (en) * 2005-03-14 2013-02-26 Qnx Software Systems Limited Adaptive partitioning for operating system
US8645959B2 (en) * 2005-03-30 2014-02-04 Intel Corporaiton Method and apparatus for communication between two or more processing elements
US20070094663A1 (en) * 2005-10-25 2007-04-26 Anbarani Hossein A Flexible ordered execution mechanism for multi-threaded processors
US7797514B2 (en) * 2006-11-16 2010-09-14 Texas Instruments Incorporated Scalable multi-threaded sequencing/synchronizing processor architecture
US7757070B1 (en) 2007-04-10 2010-07-13 Marvell International Ltd. Methods, apparatuses, and system for facilitating control of multiple instruction threads
US20090133022A1 (en) * 2007-11-15 2009-05-21 Karim Faraydon O Multiprocessing apparatus, system and method
US8321840B2 (en) * 2007-12-27 2012-11-27 Intel Corporation Software flow tracking using multiple threads
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
US20130125133A1 (en) * 2009-05-29 2013-05-16 Michael D. Schuster System and Method for Load Balancing of Fully Strict Thread-Level Parallel Programs
US9280398B2 (en) * 2012-01-31 2016-03-08 International Business Machines Corporation Major branch instructions
US9229722B2 (en) 2012-01-31 2016-01-05 International Business Machines Corporation Major branch instructions with transactional memory
US20130331931A1 (en) * 2012-06-07 2013-12-12 Boston Scientific Scimed Inc. Apparatus for Replacing a Native Heart Valve and Method of Making the Same
JP6546761B2 (ja) * 2015-03-18 2019-07-17 株式会社グッドマン ステント
CN105930215A (zh) * 2016-04-07 2016-09-07 珠海市魅族科技有限公司 一种移动终端的控制方法及控制装置
US20180260255A1 (en) * 2017-03-10 2018-09-13 Futurewei Technologies, Inc. Lock-free reference counting
CN109766131B (zh) * 2017-11-06 2022-04-01 上海宝信软件股份有限公司 基于多线程技术实现软件智能化自动升级的系统及方法
CN112579306B (zh) * 2019-09-29 2024-02-27 北京君正集成电路股份有限公司 一种线程设置和线程调度的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2684993B2 (ja) 1994-08-10 1997-12-03 日本電気株式会社 プロセッサシステムとその制御方法
US5812811A (en) 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5867704A (en) * 1995-02-24 1999-02-02 Matsushita Electric Industrial Co., Ltd. Multiprocessor system shaving processor based idle state detection and method of executing tasks in such a multiprocessor system
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
JP2970553B2 (ja) 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US6772324B2 (en) * 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6523059B1 (en) * 1998-12-07 2003-02-18 Sun Microsystems, Inc. System and method for facilitating safepoint synchronization in a multithreaded computer system
JP2000305795A (ja) * 1999-04-20 2000-11-02 Nec Corp 並列処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012004990A1 (ja) * 2010-07-07 2012-01-12 パナソニック株式会社 プロセッサ
JPWO2012004990A1 (ja) * 2010-07-07 2013-09-02 パナソニック株式会社 プロセッサ
US8898671B2 (en) 2010-07-07 2014-11-25 Panasonic Corporation Processor that executes a plurality of threads by promoting efficiency of transfer of data that is shared with the plurality of threads
JP2012059195A (ja) * 2010-09-13 2012-03-22 Renesas Electronics Corp マルチスレッドプロセッサ

Also Published As

Publication number Publication date
GB2380834A (en) 2003-04-16
JP3630118B2 (ja) 2005-03-16
GB0216274D0 (en) 2002-08-21
US20030014472A1 (en) 2003-01-16
US7134124B2 (en) 2006-11-07
GB2380834B (en) 2005-02-16

Similar Documents

Publication Publication Date Title
JP2003029987A (ja) スレッド終了方法及び装置並びに並列プロセッサシステム
JP3702813B2 (ja) マルチスレッド実行方法及び並列プロセッサシステム
JP3702814B2 (ja) マルチスレッド実行方法及び並列プロセッサシステム
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
US4782441A (en) Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions
US7130934B2 (en) Methods and apparatus for providing data transfer control
JP2898820B2 (ja) 自己並列化式のコンピュータ・システムおよび方法
JP2003029986A (ja) プロセッサ間レジスタ継承方法及びその装置
WO1990014629A2 (en) Parallel multithreaded data processing system
US20010049763A1 (en) Methods and apparatus for scalable array processor interrupt detection and response
JPH1027108A (ja) スレッド実行方法
JP2003030050A (ja) マルチスレッド実行方法及び並列プロセッサシステム
JP5745868B2 (ja) マルチプロセッサシステム
US6964049B2 (en) Smart internetworking operating system for low computational power microprocessors
JP4168281B2 (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
KR102145457B1 (ko) 방향 인디케이터
CN116820713A (zh) 流水控制方法、加速器和电子设备
US10031753B2 (en) Computer systems and methods for executing contexts with autonomous functional units
JPH076037A (ja) 命令解読装置
JP2000020310A (ja) プロセッサ
JPH0340169A (ja) 多重プロセツサシステムおよび複数の処理装置を制御する方法
CN117251393A (zh) 处理器的中断响应方法、装置、芯片、计算机设备和介质
Papadopoulos Monsoon: a dataflow computing architecture suitable for intelligent control
JP2010165209A (ja) マルチスレッドプロセッサ装置
JPH0628187A (ja) データロード方法及びそれを用いた演算プロセッサ

Legal Events

Date Code Title Description
A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20040823

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20041008

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041207

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071224

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081224

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091224

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091224

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101224

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101224

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111224

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111224

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121224

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121224

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees