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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task 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
複数のプロセッサで並列に実行する並列プロセッサシス
テムにおいて、スレッドを終了させる為のターム命令を
削減する。 【解決手段】 各プロセッサは、フォークした子スレッ
ドの開始アドレスを保存するレジスタ29と、このレジス
タ29に保存した開始アドレスに自身のプログラムカウン
タ21の値が一致したことを検出する比較回路30とを備え
る。各プロセッサは、フォークした子スレッドの開始ア
ドレスに自身のプログラムカウンタ21の値が一致する
と、スレッド管理部にスレッド終了通知7dを送信し、ス
レッド管理部からスレッド終了許可7eが返却されると、
親スレッドの実行を終了する。
Description
複数のスレッドに分割して複数のプロセッサにより並列
に実行する並列プロセッサシステムに関し、特に個々の
プロセッサにおけるスレッドの終了方法に関する。
テムで並列に処理する手法として、プログラムをスレッ
ドと呼ぶ命令流に分割して複数のプロセッサで並列に実
行するマルチスレッド実行方法があり、この方法を記載
した文献として、特開平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と称す)等があ
る。以下、これらの文献に記載された従来の技術につい
て説明する。
他のプロセッサ上に新たなスレッドを生成することを、
スレッドをフォーク(fork)すると言い、フォーク
動作を行った側のスレッドを親スレッド、生成された新
しいスレッドを子スレッド、スレッドをフォークする箇
所をフォーク点、子スレッドの先頭箇所をフォーク先ア
ドレスまたは子スレッドの開始点と呼ぶ。文献1〜4で
は、スレッドのフォークを指示するためにフォーク点に
フォーク命令が挿入される。フォーク命令にはフォーク
先アドレスが指定され、フォーク命令の実行によりその
フォーク先アドレスから始まる子スレッドが他プロセッ
サ上に生成され、子スレッドの実行が開始される。ま
た、スレッドの処理を終了させるターム(term)命
令と呼ばれる命令が用意されており、各プロセッサはタ
ーム命令を実行することによりスレッドの処理を終了す
る。文献4では、このターム命令をFINISH命令と
呼んでいる。
要を示す。同図(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の最後の命令を実行すると、
その次の命令(一般にはシステムコール命令)を実行す
る。このように複数のプロセッサでスレッドを同時に並
行して実行することにより、逐次処理に比べて性能の向
上が図られる。
て、図7(d)に示すように、スレッドAを実行してい
るプロセッサPE1からフォークを複数回行うことによ
り、プロセッサPE2にスレッドBを、またプロセッサ
PE3にスレッドCをそれぞれ生成するマルチスレッド
実行方法も存在する。この図7(d)のモデルに対し
て、同図(c)に示したようにスレッドはその生存中に
高々1回に限って有効な子スレッドを生成することがで
きるという制約を課したマルチスレッド実行方法をフォ
ーク1回モデルと呼ぶ。フォーク1回モデルでは、スレ
ッド管理の大幅な簡略化が可能となり、現実的なハード
ウェア規模でスレッド管理部のハードウェア化が実現で
きる。また、個々のプロセッサは子スレッドを生成する
他プロセッサが1プロセッサに限定されるため、隣接す
るプロセッサを単方向にリング状に接続した並列プロセ
ッサシステムでマルチスレッド実行が可能となる。本発
明はこのようなフォーク1回モデルを前提とする。
ドから子スレッドへのレジスタ継承が必要になる。この
レジスタ継承に関しては、一般に2通りの方式がある。
1つは、文献1〜3の並列プロセッサシステムで採用さ
れているように、親スレッドのフォーク時点のレジスタ
ファイルの内容だけを継承対象とし、フォーク後に更新
されたレジスタは継承しない方式である。もう1つは、
文献4、5の並列プロセッサシステムで採用されている
ように、フォーク後に更新されたレジスタも継承対象と
する方式である。前者をフォーク時レジスタ転送方式、
後者をフォーク後レジスタ転送方式と呼ぶ。
は、スレッド間の同期命令など、スレッドの並列動作を
柔軟に制御するための専用命令が数多く用意されてい
る。
ロセッサシステムにおいては、個々のプロセッサでスレ
ッドを終了させるためには、必ずターム命令を子スレッ
ドの開始点の直前に記述しておく必要がある。ターム命
令は1スレッド当たり1個必要になるため、1つのスレ
ッドに含まれる命令数が少ない細粒度スレッドほど、全
命令数に占めるターム命令の割合が多くなる。ターム命
令も他の命令と同様に命令メモリに格納されてフェッチ
の対象となるため、命令メモリのハードウェア量の増
加、命令フェッチ数の増加による処理性能の低下が問題
となる。
たものであり、その目的は、スレッドを終了させる為の
ターム命令を削減することにより命令メモリに必要な容
量を削減し、また命令フェッチ数の削減による処理性能
の向上を図ることにある。
ラムを複数のスレッドに分割し複数のプロセッサで並列
に実行する並列プロセッサシステムにおいて、各プロセ
ッサは、フォークした子スレッドの開始アドレスに自身
のプログラムカウンタの値が一致したことを検出したと
きに親スレッドの実行を終了することを基本とする。
実行順序関係を持つ複数のスレッドを並列に実行する
際、子スレッドは親スレッドが終了しなければ終了でき
ないという制約が課される場合があり、一般にこのよう
な制約はスレッドの生成、終了を管理するスレッド管理
部で保証している。従って、このような制約のあるマル
チスレッド実行においては、各プロセッサはフォークし
た子スレッドの開始アドレスに自身のプログラムカウン
タの値が一致したことを検出したときにスレッド管理部
の許可を得て親スレッドの実行を終了する。
親スレッドを実行しているプロセッサは、プログラムカ
ウンタの値が子スレッドの開始アドレスに一致すると親
スレッドの実行を終えるように動作するため、並列化プ
ログラム中にターム命令を記述しておく必要がない。以
下、図1を参照して本発明の作用を説明する。
分割された単一のプログラムを示す。ここで、スレッド
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の実
行を終了する。
いて図面を参照して詳細に説明する。
した並列プロセッサシステムの一例は、4スレッド並列
実行型プロセッサであり、4個のプロセッサ1−i(i
=0〜3)が信号線2−iによってスレッドの生成、終
了を管理するスレッド管理部3に接続されると共に、信
号線4−iによって共有のメモリ5に接続されている。
また、隣接するプロセッサ同士が通信バス6−iによっ
て単方向にリング状に接続されている。この例では、4
スレッド並列実行型プロセッサを取り上げたが、8スレ
ッドや16スレッドの並列実行型プロセッサ等、一般に
n(≧2)スレッド並列実行型プロセッサに対して本発
明は適用可能である。
タ(以下、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を受信した時点でスレッドの実行を終える。
ドに存在するフォーク命令によって隣接する一方のプロ
セッサ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は、
フォーク先アドレスから子スレッドの実行を開始する。
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とを含んで構成
されている。
要求7cによって、それに付随する開始アドレスからス
レッドの実行を開始する。また、実行ユニット23は、
フォーク命令の実行時、フォーク信号27によってフォ
ーク有効ビット28をセットすると共にフォーク先アド
レスをレジスタ29に保存し、スレッド管理部3に対し
てフォーク先アドレスを添えてフォーク要求7aを送信
する。さらに実行ユニット23は、PC21の値がレジ
スタ29に保存されたフォーク先アドレスと一致して比
較回路30から一致信号31が出力されると、スレッド
の処理を終了すべく、スレッド管理部3に対してスレッ
ド終了通知7dを送信し、その応答としてスレッド管理
部3からスレッド終了許可7eを受信するとスレッドの
処理を終了する。
た子スレッドへ親スレッドから継承すべきレジスタを転
送するユニットであり、例えば、通信バス6−iのバス
幅によって一度に転送できる数のレジスタ毎に、レジス
タファイル25のレジスタの値とレジスタ番号(レジス
タアドレス)とをフォーク先プロセッサのレジスタファ
イルへ送信する処理を行う。
1−iの処理の概要を図4に示す。スレッド管理部3か
らのスレッド開始要求7cに基づき、プロセッサ1−i
で1つのスレッドの実行が開始される際、当該プロセッ
サ1−iのフォーク有効ビット28がリセットされ、ま
たレジスタ29の内容がクリアされる(ステップS
1)。以後、スレッドの命令のフェッチ、デコード、実
行が継続して実行される(ステップS2)。
フォーク命令の場合(ステップS4でYES)、実行ユ
ニット23は、当該フォーク命令で指定されたフォーク
先アドレスをレジスタ29に保存し(ステップS5)、
フォーク信号27によってフォーク有効ビット28をセ
ットすることにより、レジスタ27に保存したフォーク
先アドレスを伴ったフォーク要求7aをスレッド管理部
3に送信する(ステップS6)。そして、スレッド管理
部3からフォーク応答7bが返却されるのを待つ(ステ
ップS7)。
らフォーク要求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以降の処理を実行する。
C21の値がレジスタ29に保存されたフォーク先アド
レスに一致すると(ステップS3でYES)、比較回路
30から一致信号31が実行ユニット23に出力され、
実行ユニット23はスレッドの終了処理を開始する。具
体的には、スレッド終了通知7dをスレッド管理部3に
送信し(ステップS9)、スレッド管理部3からスレッ
ド終了許可7eを受信した時点でスレッドの処理を終了
する(ステップS10)。
ッドの開始点まで命令の実行が進んだことをハードウェ
ア的に検出してスレッドの終了を行うので、従来のよう
なターム命令が必要なくなる。従って、逐次処理プログ
ラムから本実施の形態用の並列化プログラムを生成する
コンパイラでは、逐次処理プログラムの制御フロー及び
データフローを解析して、基本ブロック或いは複数の基
本ブロックを並列化の単位、すなわちスレッドに分割
し、並列化のためのコードを挿入して並列化プログラム
を生成して出力する際、フォーク点にはフォーク命令を
挿入するが、子スレッドの開始点の直前に従来挿入され
ていたターム命令は挿入しない。
フォーク命令の時点で実際にフォーク可能になるまで親
スレッドの実行をウエイトしたが(図4のステップS
7)、本実施の形態ではフォーク命令の時点でフォーク
不可能な場合にレジスタファイルの内容を退避させ、フ
ォーク可能となった時点で前記退避した情報に基づいて
子スレッドのフォークを行うようにしたものである。以
下、第1の実施の形態との相違点を中心に本実施の形態
を説明する。
並列プロセッサシステムの各々のプロセッサ1−iは、
図3に示した構成に加えて、退避バッファ41と、退避
バッファ有効ビット42と、実行ユニット23から出力
される退避信号43によって起動されるとレジスタファ
イル25の内容を退避バッファ41に退避する退避ユニ
ット44とを備え、レジスタ転送ユニット26はレジス
タファイル25及び退避バッファ41に接続されてい
る。退避バッファ有効ビット42は、スレッド開始時に
リセットされ、退避信号43によってセットされ、また
退避バッファ41に基づくフォークが行われた場合にリ
セットされる。
1−iの処理の概要を図6に示す。スレッド管理部3か
らのスレッド開始要求7cに基づき、プロセッサ1−i
で1つのスレッドの実行が開始される際、当該プロセッ
サ1−iのフォーク有効ビット28及び退避バッファ有
効ビット42がリセットされ、またレジスタ29の内容
がクリアされる(ステップS11)。以後、スレッドの
命令のフェッチ、デコード、実行が継続して実行される
(ステップS12)。
フォーク命令の場合(ステップS14でYES)、実行
ユニット23はフォーク先アドレスをレジスタ29に保
存し(ステップS15)、フォーク信号27によってフ
ォーク有効ビット28をセットすることによりフォーク
先アドレスを伴ったフォーク要求7aをスレッド管理部
3に送信する(ステップS16)。そして、スレッド管
理部3から所定の時間内にフォーク応答7bが返却され
た場合(ステップS17でYES)、フォーク有効ビッ
ト28をリセットし、レジスタ転送ユニット26によっ
てレジスタファイル25の内容をフォーク先プロセッサ
1−jに転送する(ステップS18)。
にフォーク応答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がリセットされる。
C21の値がレジスタ29に保存されたフォーク先アド
レスに一致すると(ステップS13でYES)、比較回
路30から一致信号31が実行ユニット23に出力さ
れ、実行ユニット23はスレッド終了通知7dをスレッ
ド管理部3に送信する(ステップS20)。そして、ス
レッド管理部3からスレッド終了許可7eを受信した時
点でスレッドの処理を終了する(ステップS21)。
て説明したが、本発明は以上の実施の形態にのみ限定さ
れず、その他各種の付加変更が可能である。例えば、前
記各実施の形態では、フォーク時レジスタ転送方式を前
提としたが、フォーク後レジスタ転送方式のマルチスレ
ッド実行方法においても同様に適用可能である。また、
複数のプロセッサに共通にスレッド管理部3を設ける集
中スレッド管理型の並列プロセッサシステムに本発明を
適用したが、文献1等に記載されるように各プロセッサ
毎にスレッド管理部を設ける分散スレッド管理型の並列
プロセッサシステムにも本発明は適用可能である。ま
た、隣接するプロセッサ間同士を単方向にリング状に接
続する通信バスを使ってレジスタ転送を行ったが、全て
のプロセッサが共通の通信バスに接続された並列プロセ
ッサシステムでは当該共通の通信バスを使ってレジスタ
転送が行われる。
スレッドの開始点の直前にターム命令を記述する必要が
なくなり、ターム命令の削減によってプログラムサイズ
をコンパクトにでき、命令メモリに必要な容量の削減、
命令フェッチ数の削減による処理性能の向上が可能とな
る。
例を示すブロック図である。
ッサシステムにおけるプロセッサの構成例を示すブロッ
ク図である。
ッサシステムにおけるスレッドの開始から終了までのプ
ロセッサの処理の一例を示すフローチャートである。
ッサシステムにおけるプロセッサの構成例を示すブロッ
ク図である。
ッサシステムにおけるスレッドの開始から終了までのプ
ロセッサの処理の一例を示すフローチャートである。
示す図である。
Claims (6)
- 【請求項1】 単一のプログラムを複数のスレッドに分
割し複数のプロセッサで並列に実行する並列プロセッサ
システムにおけるスレッド終了方法において、各プロセ
ッサはフォークした子スレッドの開始アドレスに自身の
プログラムカウンタの値が一致したことを検出したとき
に親スレッドの実行を終了することを特徴とするスレッ
ド終了方法。 - 【請求項2】 各々プログラムカウンタ及びレジスタフ
ァイルを独立に有し前記プログラムカウンタに従ってス
レッドの命令を同時にフェッチ、解釈、実行する複数の
プロセッサと、スレッドの生成及び終了を管理するスレ
ッド管理部とを備え、何れかの前記プロセッサで実行さ
れている親スレッド中のフォーク命令によって指定され
たフォーク先アドレスから始まる子スレッドの実行を、
他の前記プロセッサに開始させる機能を備えた並列プロ
セッサシステムにおけるスレッド終了方法において、各
プロセッサはフォークした子スレッドの開始アドレスに
自身のプログラムカウンタの値が一致したことを検出し
たときに前記スレッド管理部の許可を得て親スレッドの
実行を終了することを特徴とするスレッド終了方法。 - 【請求項3】 単一のプログラムを複数のスレッドに分
割し複数のプロセッサで並列に実行する並列プロセッサ
システムにおけるスレッド終了装置において、各プロセ
ッサは、フォークした子スレッドの開始アドレスを保存
するレジスタと、該レジスタに保存した前記開始アドレ
スに自身のプログラムカウンタの値が一致したことを検
出する検出手段とを備え、各プロセッサはフォークした
子スレッドの開始アドレスに自身のプログラムカウンタ
の値が一致したことを検出したときに親スレッドの実行
を終了する構成を有するスレッド終了装置。 - 【請求項4】 各々プログラムカウンタ及びレジスタフ
ァイルを独立に有し前記プログラムカウンタに従ってス
レッドの命令を同時にフェッチ、解釈、実行する複数の
プロセッサと、スレッドの生成及び終了を管理するスレ
ッド管理部とを備え、何れかの前記プロセッサで実行さ
れている親スレッド中のフォーク命令によって指定され
たフォーク先アドレスから始まる子スレッドの実行を、
他の前記プロセッサに開始させる機能を備えた並列プロ
セッサシステムにおけるスレッド終了装置において、各
プロセッサは、フォークした子スレッドの開始アドレス
を保存するレジスタと、該レジスタに保存した前記開始
アドレスに自身のプログラムカウンタの値が一致したこ
とを検出する検出手段とを備え、各プロセッサはフォー
クした子スレッドの開始アドレスに自身のプログラムカ
ウンタの値が一致したことを検出したときに前記スレッ
ド管理部の許可を得て親スレッドの実行を終了する構成
を有するスレッド終了装置。 - 【請求項5】 各々プログラムカウンタ及びレジスタフ
ァイルを独立に有し前記プログラムカウンタに従ってス
レッドの命令を同時にフェッチ、解釈、実行する複数の
プロセッサと、スレッドの生成及び終了を管理するスレ
ッド管理部とを備え、何れかの前記プロセッサで実行さ
れている親スレッド中のフォーク命令によって指定され
たフォーク先アドレスから始まる子スレッドの実行を、
他の前記プロセッサに開始させる機能を備えた並列プロ
セッサシステムにおいて、各プロセッサは、フォークし
た子スレッドの開始アドレスを保存するレジスタと、該
レジスタに保存した前記開始アドレスに自身のプログラ
ムカウンタの値が一致したことを検出する検出手段とを
備え、各プロセッサはフォークした子スレッドの開始ア
ドレスに自身のプログラムカウンタの値が一致したこと
を検出したときに親スレッドの実行を終了する構成を有
する並列プロセッサシステム。 - 【請求項6】 各々プログラムカウンタ及びレジスタフ
ァイルを独立に有し前記プログラムカウンタに従ってス
レッドの命令を同時にフェッチ、解釈、実行する複数の
プロセッサと、スレッドの生成及び終了を管理するスレ
ッド管理部とを備え、何れかの前記プロセッサで実行さ
れている親スレッド中のフォーク命令によって指定され
たフォーク先アドレスから始まる子スレッドの実行を、
他の前記プロセッサに開始させる機能を備えた並列プロ
セッサシステムにおいて、各プロセッサは、フォークし
た子スレッドの開始アドレスを保存するレジスタと、該
レジスタに保存した前記開始アドレスに自身のプログラ
ムカウンタの値が一致したことを検出する検出手段とを
備え、各プロセッサはフォークした子スレッドの開始ア
ドレスに自身のプログラムカウンタの値が一致したこと
を検出したときに前記スレッド管理部の許可を得て親ス
レッドの実行を終了する構成を有する並列プロセッサシ
ステム。
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)
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)
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)
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 | 並列処理装置 |
-
2001
- 2001-07-12 JP JP2001212249A patent/JP3630118B2/ja not_active Expired - Fee Related
-
2002
- 2002-06-20 US US10/174,953 patent/US7134124B2/en not_active Expired - Fee Related
- 2002-07-12 GB GB0216274A patent/GB2380834B/en not_active Expired - Fee Related
Cited By (4)
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 |