JP3630118B2 - スレッド終了方法及び装置並びに並列プロセッサシステム - Google Patents
スレッド終了方法及び装置並びに並列プロセッサシステム Download PDFInfo
- Publication number
- JP3630118B2 JP3630118B2 JP2001212249A JP2001212249A JP3630118B2 JP 3630118 B2 JP3630118 B2 JP 3630118B2 JP 2001212249 A JP2001212249 A JP 2001212249A JP 2001212249 A JP2001212249 A JP 2001212249A JP 3630118 B2 JP3630118 B2 JP 3630118B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- processor
- fork
- register
- program counter
- 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.)
- Expired - Fee Related
Links
Images
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)
Description
【発明の属する技術分野】
本発明は単一のプログラムを複数のスレッドに分割して複数のプロセッサにより並列に実行する並列プロセッサシステムに関し、特に個々のプロセッサにおけるスレッドの終了方法に関する。
【0002】
【従来の技術】
単一のプログラムを並列プロセッサシステムで並列に処理する手法として、プログラムをスレッドと呼ぶ命令流に分割して複数のプロセッサで並列に実行するマルチスレッド実行方法があり、この方法を記載した文献として、特開平10−27108号公報(以下、文献1と称す)、「On−Chip Multiprocessor指向 制御並列アーキテクチャMUSCATの提案」(並列処理シンポジウムJSPP97論文集、情報処理学会、pp.229−236、May 1997)(以下、文献2と称す)、特開平10−78880号公報(以下、文献3と称す)、「非数値計算プログラムのスレッド間命令レベル並列を利用するプロセッサ・アーキテクチャSKY」(並列処理シンポジウムJSPP98論文集、情報処理学会、pp.87−94、平成10年6月)(以下、文献4と称す)、「Multiscalar Processor」(G.S.Sohi,S.E.Breach and T.N.Vijaykumar, The22nd International Symposium on Computer Architecture,IEEE Computer 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を実行させ、プロセッサPE1でスレッドAを実行している最中に、スレッドAに埋め込まれたフォーク命令によってスレッドBを他のプロセッサPE2に生成し、プロセッサPE2においてスレッドBを実行させる。また、プロセッサPE2はスレッドBに埋め込まれたフォーク命令によってスレッドCをプロセッサPE3に生成する。プロセッサPE1、PE2はそれぞれスレッド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つのプロセッサPE1にスレッドAを実行させ、プロセッサPE1でスレッドAを実行している最中に、スレッドAに埋め込まれたフォーク命令によってスレッドBを他のプロセッサPE2に生成し、プロセッサ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の内容がクリアされる(ステップS1)。以後、スレッドの命令のフェッチ、デコード、実行が継続して実行される(ステップ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で命令の実行が進み、PC21の値がレジスタ29に保存されたフォーク先アドレスに一致すると(ステップS3でYES)、比較回路30から一致信号31が実行ユニット23に出力され、実行ユニット23はスレッドの終了処理を開始する。具体的には、スレッド終了通知7dをスレッド管理部3に送信し(ステップS9)、スレッド管理部3からスレッド終了許可7eを受信した時点でスレッドの処理を終了する(ステップS10)。
【0025】
このように本実施の形態によれば、子スレッドの開始点まで命令の実行が進んだことをハードウェア的に検出してスレッドの終了を行うので、従来のようなターム命令が必要なくなる。従って、逐次処理プログラムから本実施の形態用の並列化プログラムを生成するコンパイラでは、逐次処理プログラムの制御フロー及びデータフローを解析して、基本ブロック或いは複数の基本ブロックを並列化の単位、すなわちスレッドに分割し、並列化のためのコードを挿入して並列化プログラムを生成して出力する際、フォーク点にはフォーク命令を挿入するが、子スレッドの開始点の直前に従来挿入されていたターム命令は挿入しない。
【0026】
【第2の実施の形態】
前述した第1の実施の形態では、フォーク命令の時点で実際にフォーク可能になるまで親スレッドの実行をウエイトしたが(図4のステップS7)、本実施の形態ではフォーク命令の時点でフォーク不可能な場合にレジスタファイルの内容を退避させ、フォーク可能となった時点で前記退避した情報に基づいて子スレッドのフォークを行うようにしたものである。以下、第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によって退避ユニット44を起動することによりレジスタファイル25の内容を退避バッファ41へ退避させ、退避バッファ有効ビット42をセットする(ステップS19)。この退避バッファ有効ビット42がセットされている間に、スレッド管理部3からフォーク応答7bを受信すると(ステップS31、S32でYES)、レジスタ転送ユニット26により退避バッファ41に退避されているレジスタファイル25の内容をフォーク先プロセッサ1−jに転送する(ステップS33)。このとき、フォーク有効ビット28及び退避バッファ有効ビット42がリセットされる。
【0031】
プロセッサ1−iで命令の実行が進み、PC21の値がレジスタ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)
- 単一のプログラムを複数のスレッドに分割し複数のプロセッサで並列に実行する並列プロセッサシステムにおけるスレッド終了方法において、各プロセッサはフォークした子スレッドの開始アドレスに自身のプログラムカウンタの値が一致したことを検出したときに親スレッドの実行を終了することを特徴とするスレッド終了方法。
- 各々プログラムカウンタ及びレジスタファイルを独立に有し前記プログラムカウンタに従ってスレッドの命令を同時にフェッチ、解釈、実行する複数のプロセッサと、スレッドの生成及び終了を管理するスレッド管理部とを備え、何れかの前記プロセッサで実行されている親スレッド中のフォーク命令によって指定されたフォーク先アドレスから始まる子スレッドの実行を、他の前記プロセッサに開始させる機能を備えた並列プロセッサシステムにおけるスレッド終了方法において、各プロセッサはフォークした子スレッドの開始アドレスに自身のプログラムカウンタの値が一致したことを検出したときに前記スレッド管理部の許可を得て親スレッドの実行を終了することを特徴とするスレッド終了方法。
- 単一のプログラムを複数のスレッドに分割し複数のプロセッサで並列に実行する並列プロセッサシステムにおけるスレッド終了装置において、各プロセッサは、フォークした子スレッドの開始アドレスを保存するレジスタと、該レジスタに保存した前記開始アドレスに自身のプログラムカウンタの値が一致したことを検出する検出手段とを備え、各プロセッサはフォークした子スレッドの開始アドレスに自身のプログラムカウンタの値が一致したことを検出したときに親スレッドの実行を終了する構成を有するスレッド終了装置。
- 各々プログラムカウンタ及びレジスタファイルを独立に有し前記プログラムカウンタに従ってスレッドの命令を同時にフェッチ、解釈、実行する複数のプロセッサと、スレッドの生成及び終了を管理するスレッド管理部とを備え、何れかの前記プロセッサで実行されている親スレッド中のフォーク命令によって指定されたフォーク先アドレスから始まる子スレッドの実行を、他の前記プロセッサに開始させる機能を備えた並列プロセッサシステムにおけるスレッド終了装置において、各プロセッサは、フォークした子スレッドの開始アドレスを保存するレジスタと、該レジスタに保存した前記開始アドレスに自身のプログラムカウンタの値が一致したことを検出する検出手段とを備え、各プロセッサはフォークした子スレッドの開始アドレスに自身のプログラムカウンタの値が一致したことを検出したときに前記スレッド管理部の許可を得て親スレッドの実行を終了する構成を有するスレッド終了装置。
- 各々プログラムカウンタ及びレジスタファイルを独立に有し前記プログラムカウンタに従ってスレッドの命令を同時にフェッチ、解釈、実行する複数のプロセッサと、スレッドの生成及び終了を管理するスレッド管理部とを備え、何れかの前記プロセッサで実行されている親スレッド中のフォーク命令によって指定されたフォーク先アドレスから始まる子スレッドの実行を、他の前記プロセッサに開始させる機能を備えた並列プロセッサシステムにおいて、各プロセッサは、フォークした子スレッドの開始アドレスを保存するレジスタと、該レジスタに保存した前記開始アドレスに自身のプログラムカウンタの値が一致したことを検出する検出手段とを備え、各プロセッサはフォークした子スレッドの開始アドレスに自身のプログラムカウンタの値が一致したことを検出したときに親スレッドの実行を終了する構成を有する並列プロセッサシステム。
- 各々プログラムカウンタ及びレジスタファイルを独立に有し前記プログラムカウンタに従ってスレッドの命令を同時にフェッチ、解釈、実行する複数のプロセッサと、スレッドの生成及び終了を管理するスレッド管理部とを備え、何れかの前記プロセッサで実行されている親スレッド中のフォーク命令によって指定されたフォーク先アドレスから始まる子スレッドの実行を、他の前記プロセッサに開始させる機能を備えた並列プロセッサシステムにおいて、各プロセッサは、フォークした子スレッドの開始アドレスを保存するレジスタと、該レジスタに保存した前記開始アドレスに自身のプログラムカウンタの値が一致したことを検出する検出手段とを備え、各プロセッサはフォークした子スレッドの開始アドレスに自身のプログラムカウンタの値が一致したことを検出したときに前記スレッド管理部の許可を得て親スレッドの実行を終了する構成を有する並列プロセッサシステム。
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 JP2003029987A (ja) | 2003-01-31 |
JP3630118B2 true 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) |
Families Citing this family (39)
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 |
US8015567B2 (en) | 2002-10-08 | 2011-09-06 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for packet distribution at high line rate |
US9088474B2 (en) | 2002-10-08 | 2015-07-21 | Broadcom Corporation | Advanced processor with interfacing messaging network to a CPU |
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 |
US7334086B2 (en) * | 2002-10-08 | 2008-02-19 | Rmi Corporation | Advanced processor with system on a chip interconnect technology |
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 |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
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 |
WO2005022381A2 (en) * | 2003-08-28 | 2005-03-10 | Mips Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US9032404B2 (en) * | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US20060212874A1 (en) * | 2003-12-12 | 2006-09-21 | Johnson Erik J | Inserting instructions |
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 |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing 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 |
WO2012004990A1 (ja) * | 2010-07-07 | 2012-01-12 | パナソニック株式会社 | プロセッサ |
JP2012059195A (ja) * | 2010-09-13 | 2012-03-22 | Renesas Electronics Corp | マルチスレッドプロセッサ |
US9229722B2 (en) | 2012-01-31 | 2016-01-05 | International Business Machines Corporation | Major branch instructions with transactional memory |
US9280398B2 (en) * | 2012-01-31 | 2016-03-08 | International Business Machines Corporation | Major branch instructions |
JP2015518775A (ja) * | 2012-06-07 | 2015-07-06 | ボストン サイエンティフィック サイムド,インコーポレイテッドBoston Scientific Scimed,Inc. | 生来の心臓弁を置換するための装置 |
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
Also Published As
Publication number | Publication date |
---|---|
US20030014472A1 (en) | 2003-01-16 |
GB2380834B (en) | 2005-02-16 |
GB0216274D0 (en) | 2002-08-21 |
US7134124B2 (en) | 2006-11-07 |
GB2380834A (en) | 2003-04-16 |
JP2003029987A (ja) | 2003-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3630118B2 (ja) | スレッド終了方法及び装置並びに並列プロセッサシステム | |
JP3702813B2 (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
JP3702815B2 (ja) | プロセッサ間レジスタ継承方法及びその装置 | |
JP3702814B2 (ja) | マルチスレッド実行方法及び並列プロセッサシステム | |
JP2882475B2 (ja) | スレッド実行方法 | |
US4782441A (en) | Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions | |
JP2898820B2 (ja) | 自己並列化式のコンピュータ・システムおよび方法 | |
JPH04275628A (ja) | 演算処理装置 | |
WO1990014629A2 (en) | Parallel multithreaded data processing system | |
CN112534403A (zh) | 微处理器中存储指令融合的系统和方法 | |
JPH0622035B2 (ja) | ベクトル処理装置 | |
JPH052484A (ja) | スーパースカラプロセツサ | |
WO2021027253A1 (zh) | 用于多线程处理的方法、装置及系统 | |
JP4168281B2 (ja) | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム | |
JP3518510B2 (ja) | リオーダバッファの管理方法及びプロセッサ | |
US20140331025A1 (en) | Reconfigurable processor and operation method thereof | |
EP1050805B1 (en) | Transfer of guard values in a computer system | |
US20200117461A1 (en) | Arithmetic processing device and control method for arithmetic processing device | |
JPS6116335A (ja) | 情報処理装置 | |
CN112445587A (zh) | 一种任务处理的方法以及任务处理装置 | |
CN114968364B (zh) | 一种条件语句的处理方法、装置及存储介质 | |
US6697933B1 (en) | Method and apparatus for fast, speculative floating point register renaming | |
JP3547562B2 (ja) | マイクロプロセッサ | |
JPH076037A (ja) | 命令解読装置 | |
JPH0228723A (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 |