JPH08227364A - 順序付きマルチスレッド実行方法とその実行装置 - Google Patents

順序付きマルチスレッド実行方法とその実行装置

Info

Publication number
JPH08227364A
JPH08227364A JP7041538A JP4153895A JPH08227364A JP H08227364 A JPH08227364 A JP H08227364A JP 7041538 A JP7041538 A JP 7041538A JP 4153895 A JP4153895 A JP 4153895A JP H08227364 A JPH08227364 A JP H08227364A
Authority
JP
Japan
Prior art keywords
thread
descriptor
processor
thread descriptor
execution
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
JP7041538A
Other languages
English (en)
Other versions
JP3231571B2 (ja
Inventor
Masato Motomura
真人 本村
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 JP04153895A priority Critical patent/JP3231571B2/ja
Priority to GB9526033A priority patent/GB2296355A/en
Priority to US08/575,860 priority patent/US5815727A/en
Publication of JPH08227364A publication Critical patent/JPH08227364A/ja
Application granted granted Critical
Publication of JP3231571B2 publication Critical patent/JP3231571B2/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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

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

Abstract

(57)【要約】 【目的】 並列プロセッサシステム上のプログラムの並
列実行に関して、効率の良いマルチスレッド実行方法を
提供する。 【構成】 並列プロセッサ100は複数のプロセッサ1
10と順序付きマルチスレッド実行装置120とメモリ
130とで構成し、実行装置120は、スレッド記述子
記憶装置140とスレッド記述子順序付け装置150と
で構成する。実行装置120は、記憶装置140に格納
されたスレッド記述子141をプロセッサへ送出するこ
とでスレッド210の実行をプロセッサへ指示する。ス
レッド記述子順序付け装置150は、記述子141が記
憶装置140内に仮想スレッド番号211に従って位置
方向に並べられるようにするとともに、プロセッサ11
0に記述子141を送出する際に、当該プロセッサ11
0で待ち状態にある全てのスレッドの仮想スレッド番号
211よりも送出する記述子141の番号211の方が
小さいようにする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はプロセッサシステムに関
し、特に複数のプロセッサ上で一つのプログラムの並列
処理を行なう並列プロセッサシステムに関する。
【0002】
【従来の技術】複数のプロセッサから構成される並列プ
ロセッサシステムにおいて、一つのプログラムを並列に
実行することにより高性能化を実現するプログラム並列
実行方法の一つとしてマルチスレッド実行方法が知られ
ている。
【0003】マルチスレッド実行方法においては、一つ
のプログラムはフォーク動作により複数の並列実行可能
なスレッドに分割される。複数のスレッド間では同期動
作が行なわれ、これにより、並列に実行されるスレッド
間のデータ依存性が保証される。このようなプログラム
をマルチスレッド化されたプログラムと呼ぶ。マルチス
レッド化されたプログラムは、複数のプロセッサ上でス
レッド毎に並列に実行される。スレッドの実行状態に
は、少なくとも実行中状態、実行可能状態、待ち状態の
3つの状態がある。あるプロセッサ上で実行中状態にあ
るスレッドからフォークされて、まだ任意のプロセッサ
上で実行を開始されていないスレッドは実行可能状態の
スレッドと呼ばれる。マルチスレッド実行方法の大きな
特徴は、あるスレッドが一つのプロセッサ上で実行中に
待ち状態に入った時に、代わりに別のスレッドを実行す
ることである。ここで待ち状態に入る原因としては、他
のプロセッサの所有するメモリのデータを読もうとする
場合や同期動作の失敗などがある。待ち状態から回復し
たスレッドは同じプロセッサ上で再度実行状態にうつさ
れる。このように待ち状態のスレッドは再実行されるプ
ロセッサが決められているので、当該プロセッサ上の待
ち状態スレッドと呼ぶ。ここで、一つ一つのスレッドに
はアクティベーションレコードと呼ばれるメモリ領域が
1対1に付随する。このアクティベーションレコードは
スレッドが使用する局所的な変数や、他のスレッドから
受けとった引数、あるいは他のスレッドへ送る引数など
を記憶する領域である。アクティベーションレコード
は、スレッドの起動の際に確保され、スレッドの終了の
際に解放される。
【0004】マルチスレッド実行方法を説明した代表的
な文献としては、Ben Leeand A.R.Hu
rson,“Dataflow Architectu
res and Multithreading”,C
omputer,Vol.27,No.8,pages
27−39,August 1994,IEEECo
mputer SocietyやRishiyur
S.Nikhil.“Cid: A Paralle
l,Shared−memory C forDist
ributed−memory Machines”,
Proceedings of 7th Annual
Workshop on Languages an
d Compliers for Parallel
Computing,Ithaca,NY,Sprin
ger−Verlag.などがある。
【0005】
【発明が解決しようとする課題】従来のマルチスレッド
実行方法における問題点はアクティベーションレコード
の管理のコストが大きいことである。
【0006】一般に良く知られているように、あるプロ
グラムを逐次実行する場合においても、プログラムを構
成する各関数毎にアクティベーションレコードが与えら
れる。しかしながら、良く知られているように、この際
のアクティベーションレコードの管理はスタックを用い
て行なうことが可能である。すなわち、各関数の最初に
スタックポインタの加算を行なって自分のアクティベー
ションレコード分のメモリ領域をスタックから確保し、
各手続きの最後の部分でスタックポインタの減算を行な
って、確保したメモリ領域を解放する。このように、逐
次実行においては、アクティベーションレコードの確保
/解放はスタックを用いた非常に簡単なものであり、当
該関数のコードの中に記載されることが可能であった
(インラインスタック管理と呼ばれる)。このように逐
次実行の際のアクティベーションレコードの管理が簡単
であったのは、最後に実行を始めた関数が常に最初に実
行を終了する、LIFO(Last In Fast
Out)順序が常に守られているからである。
【0007】これに対し、従来のマルチスレッド実行方
法においては、アクティベーションレコードを確保した
順番とこれを解放する順番は、一般的にいって何ら制限
されていない。これはスレッドの開始の順番と終了の順
番が関連付けられていないためである。よって、アクテ
ィベーションレコードの確保と解放はスタックではな
く、より複雑なデータ構造を用いて管理される必要があ
る。ここで、一般にこのようなメモリ管理に用いられる
のはヒープであるが、ヒープによるメモリ管理はスタッ
クよりも負荷が大きく、スタックを用いる場合のように
コード中に直接埋め込むことは不可能であり、専用のラ
イブラリを呼び出して処理を行なう必要が生じる。一例
をあげると、ヒープによるメモリ管理ライブラリを呼び
出すと、数10命令程度を要するのに対し、スタックに
よりコード中に埋め込まれたメモリ管理の場合は2、3
命令程度で管理を行なうことが出来る。
【0008】このように、従来のマルチスレッド実行方
法では、アクティベーションレコードの管理コストが大
き過ぎるという問題があった。本発明の目的は、このよ
うな問題を解決し、実行時のオーバーヘッドが少ない、
効率的なマルチスレッド実行方法と実行装置を提供する
ことにある。
【0009】
【課題を解決するための手段】本発明は、複数のプロセ
ッサから構成される並列プロセッサシステムにおいて、
複数のスレッドから構成される一つのプログラムをスレ
ッド毎に並列に実行するプログラム実行方法であって、
スレッドの状態として少なくとも、実行中状態、実行可
能状態、待ち状態の3つの状態を有し、あるプロセッサ
上で実行中状態のスレッドからフォーク動作により実行
可能状態のスレッドを生成し、実行可能状態のスレッド
を他のプロセッサ上で実行し、同期動作によりこれら並
列に実行される複数のスレッド間のデータ依存性を保証
し、あるプロセッサ上で実行中状態のスレッドが当該実
行を中断して待ち状態になる場合に、他の実行可能状態
のスレッドを替わりに実行し、待ち状態になった当該ス
レッドは同一のプロセッサ上で後で再実行されるマルチ
スレッド実行方法において、前記プログラムに対して一
つの逐次実行パスを定め、この逐次実行パスに沿った前
記プログラムの逐次的な実行におけるスレッドの終了順
序としてスレッドの仮想スレッド番号を定義し、前記プ
ログラム中の全ての同期動作が前記仮想スレッド番号の
小さいスレッドから大きいスレッドへ向かってのみ前記
同期動作を行なうように前記プログラムを構築し、この
ようにして構築された前記プログラムを前記スレッド毎
に並列に実行することを特徴とする順序付きマルチスレ
ッド実行方法である。
【0010】また、本発明は全てのフォーク動作を逐次
的な関数呼びだし動作に置き換えることによりプログラ
ムに対する逐次実行パスを得ることを特徴とする。
【0011】また、本発明は一つのプロセッサに着目し
た時に、実行中状態のスレッドの仮想スレッド番号が、
当該プロセッサ上で待ち状態にある全てのスレッドの仮
想スレッド番号よりも小さくなるように、前記スレッド
の前記プロセッサ上での実行順序を制御することを特徴
とする。
【0012】また、本発明はスレッドが使用するアクテ
ィベーションレコード領域をスタックを用いて管理する
ことを特徴とする。
【0013】また、本発明は並列プロセッサシステムを
構成する複数のプロセッサ間で共有される順序付きマル
チスレッド実行装置であって、スレッド記述子記憶装置
を有し、このスレッショルド記述子記憶装置は複数個の
スレッド記述子スロットを一列に並べて構成され、この
スレッド記述子スロットはスレッドの実行に必要な情報
を保持するスレッド記述子を格納する機能を持つこと
と、前記スレッド記述子記憶装置において、前記スレッ
ド記述子スロットが実行可能状態のスレッドのスレッド
記述子か、もしくは待ち状態のスレッドのスレッド記述
子を格納することと、複数のスレッド記述子スロットに
格納された複数のスレッド記述子に関して、それぞれの
スレッド記述子に対応する仮想スレッド番号の大小関係
に応じて、より小さな仮想スレッド番号に対応付けられ
たスレッド記述子がより下のスレッド記述子スロットに
格納されるように、スレッド記述子記憶装置内で各スレ
ッド記述子を一方向順序に並べて保持することと、を特
徴とする前記順序付きマルチスレッド実行方法を実現す
る順序付きマルチスレッド実行装置である。
【0014】また本発明の順序付きマルチスレッド実行
装置は複数のプロセッサに対してそれぞれのスレッド記
述子ポインタを記憶し、このスレッド記述子ポインタ
は、当該プロセッサ上で実行状態にあるスレッドが、仮
想スレッド番号による一方向順序において、スレッド記
述子記憶装置内のどのスレッド記述子スロット位置に相
当するかを示すことを特徴とする。
【0015】また本発明は、あるプロセッサ上で実行中
のスレッドがフォーク動作を行なった際に、当該実行可
能状態のスレッドに対応するスレッド記述子を、スレッ
ド記述子ポインタの値を用いて指示されるスレッド記述
子スロットに挿入することを特徴とする順序付きマルチ
スレッド実行装置の制御方法である。
【0016】また本発明は、あるプロセッサ上で実行中
のスレッドが待ち状態になった際に、スレッド記述子記
憶装置内で、当該プロセッサに対応するスレッド記述子
ポインタを用いて指示されるスレッド記述子スロットよ
り下の位置の複数のスレッド記述子スロットに記憶され
た複数のスレッド記述子の中で、前記実行可能状態にあ
る複数のスレッド記述子のうちの一つを選択し、当該プ
ロセッサに当該スレッド記述子を送出するとともに、待
ち状態になったスレッドのスレッド記述子を、当該プロ
セッサに対応するスレッド記述子ポインタの値を用いて
指示されるスレッド記述子スロットへ挿入することを特
徴とする順序付きマルチスレッド実行装置の制御方法で
ある。
【0017】また本発明は、あるプロセッサ上で実行中
のスレッドが終了した際に、スレッド記述子記憶装置内
に記憶された複数のスレッド記述子の中で、当該プロセ
ッサで前記待ち状態にあるスレッド記述子の中で最も下
に位置するスレッド記述子と、それより下に位置する複
数のスレッド記述子であって、他のプロセッサ上で待ち
状態にあるスレッド記述子以外のスレッド記述子との中
から一つのスレッド記述子を選択し、当該スレッド記述
子を当該プロセッサに送出することを特徴とする順序付
きマルチスレッド実行装置の制御方法である。
【0018】また本発明は、複数のプロセッサに対し
て、これらのプロセッサ上で実行状態にある複数のスレ
ッドの間の仮想スレッド番号の相対的な大小関係に基づ
く順序関係を示すプロセッサ間順序関係情報を記憶し、
複数のプロセッサに関するスレッド記述子ポインタが同
じ前記スレッド記述子スロットを指示する場合に、前記
プロセッサ間順序関係情報を用いて、当該複数のプロセ
ッサ上で前記実行中状態にある複数のスレッド間の仮想
スレッド番号に基づく順序関係を判断することを特徴と
する順序付きマルチスレッド実行装置である。
【0019】また本発明は、スレッド記述子記憶装置内
のスレッド記述子スロットの数を越えるスレッド記述子
がフォーク動作により生成された際に、前記フォーク動
作を行なったプロセッサに当該スレッド記述子に対応す
るスレッドを逐次的に実行させることを特徴とする順序
付きマルチスレッド実行装置の制御方法である。
【0020】また本発明は、あるプロセッサ上で実行中
のスレッドが待ち状態になった際もしくは終了した際
に、当該プロセッサに次に実行するスレッドを指示する
ためにスレッド記述子記憶装置からスレッド記述子を送
出するにあたって、送出可能な複数のスレッド記述子の
内、対応する仮想スレッド番号が最も小さなスレッド記
述子を選択することを特徴とする順序付きマルチスレッ
ド実行装置の制御方法である。
【0021】また本発明は、あるプロセッサ上で実行中
のスレッドが待ち状態になった際もしくは終了した際
に、当該プロセッサに次に実行するスレッドを指示する
ためにスレッド記述子記憶装置からスレッド記述子を送
出するにあたって、送出可能な複数のスレッド記述子の
内、対応する仮想スレッド番号が最も大きなスレッド記
述子を選択することを特徴とする順序付きマルチスレッ
ド実行装置の制御方法である。
【0022】また本発明は、あるプロセッサ上で実行中
のスレッドが待ち状態になった際もしくは終了した際
に、当該プロセッサに次に実行するスレッドを指示する
ためにスレッド記述子記憶装置からスレッド記述子を送
出するにあたって、送出可能な複数のスレッド記述子の
なかに前記待ち状態のスレッドのスレッド記述子が含ま
れている場合は、当該スレッド記述子を選択し、それ以
外の場合は対応する仮想スレッド番号が最も小さなスレ
ッド記述子を選択することを特徴とする順序付きマルチ
スレッド実行装置の制御方法である。
【0023】また本発明は、あるプロセッサ上で実行中
のスレッドが待ち状態になった際もしくは終了した際
に、当該プロセッサに次に実行するスレッドを指示する
ためにスレッド記述子記憶装置からスレッド記述子を送
出するにあたって、送出可能な複数のスレッド記述子の
なかに前記待ち状態のスレッドに対するスレッド記述子
が含まれている場合は、対応する仮想スレッド番号が最
も小さなスレッド記述子を選択し、それ以外の場合は対
応する仮想スレッド番号が最も大きなスレッド記述子を
選択することを特徴とする順序付きマルチスレッド実行
装置の制御方法である。
【0024】また本発明は、あるプロセッサ上で実行中
のスレッドが待ち状態になった際もしくは終了した際
に、当該プロセッサに次に実行するスレッドを指示する
ためにスレッド記述子記憶装置からスレッド記述子を送
出するにあたって、スレッド記述子記憶装置内に存在す
る待ち状態のスレッドに対するスレッド記述子の数と実
行可能状態のスレッドに対するスレッド記述子の数を比
較し、当該の比較結果により、送出可能な複数のスレッ
ド記述子の内のどのスレッド記述子を選択するかを動的
に定めることを特徴とする順序付きマルチスレッド実行
装置の制御方法である。
【0025】また本発明は、あるプロセッサ上で実行中
の前記スレッドが待ち状態になった際もしくは終了した
際に、当該プロセッサに次に実行するスレッドを指示す
るためにスレッド記述子記憶装置からスレッド記述子を
送出するにあたって、スレッド記述子記憶装置内に存在
する待ち状態のスレッドに対するスレッド記述子の数と
実行可能状態のスレッドに対するスレッド記述子の数を
比較し、待ち状態スレッドに対するスレッド記述子の方
が多い場合は送出可能な複数のスレッド記述子の内、対
応する仮想スレッド番号が最も小さなスレッド記述子を
選択し、実行可能状態のスレッドに対するスレッド記述
子の数が多い場合は、対応する仮想スレッド番号が最も
大きなスレッド記述子を選択することを特徴とする順序
付きマルチスレッド実行装置の制御方法である。
【0026】また、本発明はスレッド記述子スロットに
付随させて送出可能フラグスロットを設け、上述の順序
付きマルチスレッド実行装置の制御方法により送出可能
と判断されたスレッド記述子の中で、更にこの送出可能
フラグスロットに送出可能フラグがセットされたスレッ
ド記述子スロットに格納されたスレッド記述子のみを送
出可能と限定し、これらの限定された送出可能な複数の
スレッド記述子の中から一つを選択し、当該プロセッサ
に当該スレッド記述子を送出することを特徴とする順序
付きマルチスレッド実行装置である。
【0027】また、本発明は実行可能状態スレッド記述
子送出可能化装置を有し、この実行可能状態スレッド記
述子送出可能化装置は、ある一つのスレッドからフォー
クされてスレッド記述子記憶装置に格納されている実行
可能状態のスレッド記述子の中で、最も先にフォークさ
れたスレッド記述子に対して、対応する送出可能フラグ
スロットに送出可能フラグをセットするように働くこと
を特徴とするマルチスレッド実行装置である。
【0028】また、本発明は複数のプロセッサに対して
それぞれのスレッドスイッチフラグを記憶し、このスレ
ッドスイッチフラグは、当該プロセッサ上で実行中状態
にあるスレッドが、その実行開始後にスレッドをフォー
クしていない場合にのみセットされていることを特徴と
する実行可能状態スレッド記述子送出可能化装置であ
る。
【0029】また、本発明は待ち状態スレッド記述子送
出可能化装置を有し、この待ち状態スレッド記述子送出
可能化装置は、前記スレッド記述子記憶装置に格納され
ている待ち状態のスレッド記述子の中で、同期待ちが成
立したスレッド記述子に対して、対応する送出可能フラ
グスロットに送出可能フラグをセットするように働くこ
とを特徴とする順序付きマルチスレッド実行装置であ
る。
【0030】また、本発明は同期バッファを有し、この
同期バッファは同期待ちがまだ成立していない待ち状態
スレッド記述子とこれに対応する同期待ちのアドレスの
対を一組にして、これらの組を複数個格納し、これらの
格納された同期待ちのアドレスを用いて、同期付き書き
込み時に、待ち状態のスレッド記述子の同期待ちが成立
したかどうかを検査することを特徴とする待ち状態スレ
ッド記述子送出可能化装置である。
【0031】また、本発明は限定された送出可能なスレ
ッド記述子の内、最も上位または最も下位に位置するス
レッド記述子を送出することを特徴とする順序付きマル
チスレッド実行装置の制御方法である。
【0032】
【実施例】次に本発明について図面を参照して説明す
る。図1は本発明の順序付きマルチスレッド実行方法を
実現する並列プロセッサシステムの第1の実施例のブロ
ック図を示したものである。
【0033】図1において並列プロセッサシステム10
0は任意台数のプロセッサ110とこれらのプロセッサ
で共有された順序付きマルチスレッド実行装置120
と、同じくこれらのプロセッサで共有されたメモリ装置
130とから構成されている。ここで、メモリ装置13
0はプロセッサ110毎に個別に用意されてもよい。順
序付きマルチスレッド実行装置120は内部にスレッド
記述子記憶装置140とスレッド記述子順序付け装置1
50とを有している。順序付きマルチスレッド実行装置
120と各プロセッサ110はスレッド記述子転送線1
11と要求伝達線112を介して双方向に接続されてい
る。プロセッサ110があるスレッドを実行中に他のス
レッドをフォークした場合、フォーク要求が要求伝達線
112を、スレッド記述子141がスレッド記述子転送
線111をそれぞれ介して順序付きマルチスレッド実行
装置120に送られる。送られた実行可能状態のスレッ
ドのスレッド記述子141はスレッド記述子順序付け装
置150の指示にしたがい、スレッド記述子記憶装置1
40の適当な位置に記憶される。あるプロセッサが新し
いスレッドの実行を開始する際は、要求伝達線112を
介して新しい実行可能なスレッドのスレッド記述子14
1を順序付きマルチスレッド実行装置120に要求し、
この要求に応えてスレッド記述子順序付け装置150の
指示に従ってスレッド記述子記憶装置140の適当な位
置からスレッド記述子141がスレッド記述子転送線1
11を介して順序付きマルチスレッド実行装置120よ
り当該プロセッサに転送される。ここでスレッド記述子
141とは、あるスレッドの実行を開始するために必要
な情報が記載されたものであり、一般的には、そのスレ
ッドの開始命令アドレスとそのスレッドの使用する引
数、あるいはその引数へのポインタから構成される。
【0034】図1において、あるスレッドがプロセッサ
110上で待ち状態に入った場合は、このプロセッサは
上記の方法により、順序付きマルチスレッド実行装置1
20に新しい実行可能状態のスレッドを要求し、受けと
ったスレッド記述子141に応じた新しいスレッドの実
行を開始する。あるスレッドがプロセッサ110上で終
了した場合は、このプロセッサ110は、上記の方法に
より、順序付きマルチスレッド実行装置120に新しい
実行可能なスレッドを要求し、受けとったスレッド記述
子141に応じた新しいスレッドの実行を開始するか、
もしくは、当該プロセッサ110上で待ち状態にあるス
レッドの再実行を行なう。
【0035】図2は図1の実施例の並列プロセッサシス
テム100で実行されるマルチスレッド化された一つの
プログラム例を示す説明図であり、この実施例における
プログラムの構造を単純な例を用いて模式的に示してい
る。図2において、一つのプログラム250は複数のス
レッド210から構成されており、スレッド210の生
成はフォーク動作201により行なわれている。複数の
スレッド210間で共有変数220が共有されており、
この共有変数220上で同期動作202を行なう。共有
変数220に向かう同期動作202は共有変数220へ
の同期付き書き込み、共有変数220から出る同期動作
202は共有変数220の同期付き読みだしを意味して
おり、同期付き書き込みが同期付き読みだしより先に行
なわれていれば同期成功、そうでなければ同期ミスであ
る。
【0036】本発明による順序付きマルチスレッド実行
方法においては、まず、このようなマルチスレッド化さ
れた一つのプログラム250に対して、一つの逐次実行
パスを定義するとともに、この逐次実行パスに沿った当
該プログラム250の逐次実行におけるスレッドの終了
順序として仮想スレッド番号を定義することをその基本
としている。更に、本発明による順序付きマルチスレッ
ド実行方法は、このようにして定義された仮想スレッド
番号に関して、プログラム250に存在する全ての同期
動作202が、必ず仮想スレッド番号の小さいスレッド
から大きいスレッドへ向かってのみ行われるようにプロ
グラム250を構成することを第1の特徴としている。
【0037】このような逐次実行パスを得るための本発
明による順序付きマルチスレッド実行方法の一つの実施
例として、図2においては、スレッド210のフォーク
動作201を逐次的な関数呼びだしに置き換えることに
より得られる一本の実行パスとして逐次実行パスを定義
し、この逐次実行パスに沿って各スレッド210が終了
する順番を各スレッド210毎に1から6までの番号と
して与えている。このようにして与えられた番号を仮想
スレッド番号211と呼ぶことにする。すなわち、言い
替えると、図2の実施例では、フォーク動作201が発
生した時点で、当該スレッド210の実行を中断し、フ
ォーク先のスレッド210の実行を開始することを繰り
返すことで、逐次実行パスを得ている。このようにして
逐次実行パスを得ることは本発明による順序付きマルチ
スレッド実行の第2の特徴をなすものであるが、その他
に逐次実行パスを得るための方法の実施例としては、ス
レッド210の実行が終了した時点で、そのスレッド2
10からフォークされたスレッド210を順に処理する
ことで逐次的実行パスを得る方法などがある。
【0038】図2の実施例において例として示されたプ
ログラム250は、本発明による順序付きマルチスレッ
ド実行方法の第1の特徴であるところのマルチスレッド
化されたプログラムに対する要求に従って、必ず仮想ス
レッド番号の小さい方から大きい方へ向かって同期動作
202が行われるように構成されている。これにより、
第2の特徴の逐次実行パス生成方法により得られた逐次
実行パスに沿ってプログラム250の逐次実行を行った
場合、当該の逐次実行に際して同期ミスが絶対に発生し
ない構造を有していることになる。
【0039】本発明による順序付きマルチスレッド実行
方法の第3の特徴は、あるプロセッサ110上で実行中
のスレッド210の仮想スレッド番号211が、当該プ
ロセッサ110上で待ち状態にある全てのスレッド21
0の仮想スレッド番号211よりも小さくなるように任
意のプロセッサ上でのスレッドの実行可能なスレッドを
選択することにある。より具体的には、図1および図2
の実施例において、あるプロセッサ110上で実行中の
あるスレッド210が待ち状態に入った場合には、当該
プロセッサ110が順序付きマルチスレッド実行装置1
20に新しい実行可能なスレッド210を要求し、順序
付きマルチスレッド実行装置120が、当該プロセッサ
110で待ち状態にある全てのスレッド210の仮想ス
レッド番号211よりも小さな仮想スレッド番号211
を持つ実行可能状態のスレッド210に対応する複数の
スレッド記述子141の中から一つを選択して送出する
ことと、あるプロセッサ110上で実行中のスレッド2
10が終了した場合には、同様に、当該プロセッサ11
0が順序付きマルチスレッド実行装置120に新しい実
行可能なスレッド210を要求し、順序付きマルチスレ
ッド実行装置120が、当該プロセッサ110で待ち状
態にある全てのスレッド210の仮想スレッド番号21
1よりも小さな仮想スレッド番号211を持つ実行可能
状態のスレッド210に対応する複数のスレッド記述子
141の中から一つを選択して送出するか、もしくは当
該プロセッサ110上で待ち状態にあるスレッド210
の中で最も小さな仮想スレッド番号211をもつスレッ
ドを選択して当該プロセッサ110が再実行を開始する
ことを特徴としている。
【0040】図3は本発明に基づく順序付きマルチスレ
ッド実行方法における第3の特徴である実行可能なスレ
ッド210の選択方法の実施例を示した説明図である。
図3で使用している番号は仮想スレッド番号211であ
り、これらの仮想スレッド番号211は図2で示したマ
ルチスレッド化されたプログラム250の例に対応する
ものである。また、図3において待ち状態スレッド32
0および実行中スレッド330は、いずれもある一つの
プロセッサ110上でそのような状態にあるスレッド2
10を示している。
【0041】図3の一番上の行では、実行可能なスレッ
ド210の仮想スレッド番号211が3と2、待ち状態
のスレッド210はなし、実行中のスレッド210の仮
想スレッド番号211は4である。この状態で、実行中
の仮想スレッド番号211が4のスレッド210が待ち
状態に入ったとする。この時、実行可能な二つのスレッ
ド210の仮想スレッド番号211は4よりも小さいの
でどちらとも選択可能である。ここでは、次の行に示し
たように、仮想スレッド番号211が3のスレッド21
0を選択したものとする。
【0042】更に、このスレッド210が待ち状態にな
ると、実行可能なスレッド210の仮想スレッド番号2
11の値2は当該スレッド210の当該の値3よりも小
さいので選択可能であり、次の行に示したように、当該
プロセッサ110は仮想スレッド番号211が2のスレ
ッド210を実行し、当該プロセッサ110上で待ち状
態のスレッド210の仮想スレッド番号211は4と3
ということになる。
【0043】次に、実行中の仮想スレッド番号211が
2のスレッド210が実行を終了したものとする。この
場合、上記のように、当該プロセッサ110は順序付き
マルチスレッド実行装置120に新たなスレッド記述子
141の送出を要求するか、もしくは待ち状態にあるス
レッド210の再実行を行なう。ここでは、実行可能な
スレッド210は存在しないので、待ち状態のスレッド
210の再実行を行なう。再実行に際しては、上記の本
発明の順序付きマルチスレッド実行方法の第3の特徴に
従い、待ち状態のスレッド210の中で最も仮想スレッ
ド番号が小さいものを選択する。この例においては、選
択されるのは仮想スレッド番号211が3のスレッド2
10である。このスレッドの実行が最後まで終了する
と、次に仮想スレッド番号211が4のスレッド210
が実行される。
【0044】以上図3を用いて説明したように、本発明
の順序付きマルチスレッド実行方法においては、仮想ス
レッド番号211を用いて、一つのプロセッサ110上
で実行されるスレッド210を制御することにより、実
行中のスレッド210が当該プロセッサ110中で待ち
状態にある全てのスレッド110よりも小さな仮想スレ
ッド番号211を持つようにしている。このような実行
方法によれば、図2の例を用いて示した、本発明の順序
付きマルチスレッド実行方法の第1の特徴である、プロ
グラム250に対する要求により、一つのプロセッサ1
10上で実行されたスレッド210間に限れば、必ず同
期ミスなしでスレッド210の実行可能なことが分か
る。
【0045】図4は図3の実施例における一つのプロセ
ッサ110上で実行されたスレッド毎に付随するアクテ
ィベーションレコードの生存期間を軸に沿って示した説
明図である。図4に示されたように、本発明の順序付き
マルチスレッド実行方法によれば、アクティベーション
レコードの確保と解放は、LIFO順序に従って行なわ
れる。従って、本発明に基づく順序付きマルチスレッド
実行方法では、第4の特徴として、スタックを用いてア
クティベーションフレームを行なう。
【0046】図5は図1の実施例における順序付きマル
チスレッド実行装置120の一実施例の内部構成を示す
ブロック図である。順序付きマルチスレッド実行装置1
20は、並列プロセッサシステム100において、以上
説明した順序付きマルチスレッド実行方法を実現する装
置である。図5において順序付きマルチスレッド実行装
置120は、スレッド記述子記憶装置140とスレッド
記述子順序付け装置150と、プロセッサインタフェー
ス510とから構成され、スレッド記述子記憶装置14
0は複数のスレッド記述子スロット541とデコーダ5
42とスレッド記述子監視装置543とから構成されて
いる。プロセッサインタフェース510は、各プロセッ
サ110とスレッド記述子転送線111と要求伝達線1
12を介して結ばれており、スレッド記述子記憶装置1
40とはスレッド記述子転送線513およびプロセッサ
番号転送線514、スレッド記述子順序付け装置150
とは要求伝達線511とプロセッサ番号転送線512を
介して接続されている。スレッド記述子順序付け装置1
50とスレッド記述子記憶装置140内のデコーダ54
2はスレッド記述子指定線551を介して接続されてい
る。またスレッド記述子順序付け装置150とスレッド
記述子記憶装置140内のスレッド記述子監視装置54
3はスレッド記述子スロット指定線546を介して接続
されている。
【0047】図5において、スレッド記述子記憶装置1
40の第1の特徴は、スレッド記述子スロット541に
実行可能状態のスレッド210のスレッド記述子141
だけではなく、待ち状態のスレッド210のスレッド記
述状態141をも格納する点である。ここで待ち状態の
スレッド210のスレッド記述子141は、少なくと
も、実行を再開する際に使用する命令のアドレスと実行
を行なっていたプロセッサ110のプロセッサ番号とを
含んでいる。
【0048】スレッド記述子記憶装置140の第2の特
徴は、複数のスレッド記述子スロット541に格納され
た複数のスレッド記述子141が、仮想スレッド番号2
11順に一方向に並べられて保持されていることであ
る。ここでは、便宜上、図5において下の方に位置する
スレッド記述子スロット541により小さな仮想スレッ
ド番号211を持つスレッド記述子141を保持するこ
とにするが、これは逆でも構わない。本発明では、図に
おける上下に関わらず、より小さな仮想スレッド番号2
11を持つスレッド記述子141を記憶するように定め
た方向を「下」と呼ぶことにする。
【0049】このように仮想スレッド番号211に従っ
てスレッド記述子141をスレッド記述子記憶装置14
0内で一方向に並べて保持しておくことにより、本発明
による順序付きマルチスレッド実行方法を実現すること
が可能となる。
【0050】図6は図5の実施例の順序付きマルチスレ
ッド実行装置120において、スレッド記述子141を
仮想スレッド番号211に従って並べて保持することを
可能とするスレッド記述子順序付け装置150の第1の
実施例の内部構成を示したブロック図である。
【0051】図6において、スレッド記述子順序付け装
置150は、プロセッサ110にそれぞれ対応し、プロ
セッサ110の台数分だけ用意されたスレッド記述子ポ
インタ610とスレッド実行制御装置620とから構成
されている。ここであるプロセッサ110に対応するス
レッド記述子ポインタ610の値がnであったとする。
nは0からN−1までの整数であり、ここでNはスレッ
ド記述子スロット541の総数である。この場合、スレ
ッド記述子ポインタ610の値は、当該のプロセッサ1
10で実行状態にあるスレッド210の仮想スレッド番
号211は、n番目のスレッド記述子スロット541内
のスレッド記述子141の仮想スレッド番号211より
は小さく、n−1番目のスレッド記述子スロット541
内のスレッド記述子141の仮想スレッド番号211よ
りは大きいことを示している。nの値が0の時は、当該
のスレッド210が最も小さい仮想スレッド番号211
を持つことを示している。n番目のスレッド記述子スロ
ットにスレッド記述子141が存在しない場合は、当該
のスレッド210が現在存在するスレッド210の中で
最も大きい仮想スレッド番号211を持つことを示して
いる。
【0052】このように、スレッド記述子順序付け装置
150は、任意のプロセッサ110で現在実行中のスレ
ッド210と、スレッド記述子記憶装置140内に記憶
された複数のスレッド記述子141との仮想スレッド番
号211の大小関係を常に把握している。以下に説明す
るように、図5および図6に示した順序付きマルチスレ
ッド実行装置120とその中のスレッド記述子順序付け
装置150を用いて、スレッド210のフォーク動作が
あった際、スレッド210が待ち状態になった際、およ
びスレッド210が終了した際のそれぞれの場合に、ス
レッド記述子記憶装置140内にスレッド記述子141
を仮想スレッド番号211に従って並べ、本発明の順序
付きマルチスレッド実行方法を実現することが可能とな
る。以下、これらの際の本発明の順序付きマルチスレッ
ド実行装置の制御方法について、具体的な実施例を説明
する。
【0053】図5と図6を用いて、スレッド210のフ
ォーク201があった時の順序付きマルチスレッド実行
装置120の制御方法について、その実施例を説明す
る。まず、要求伝達線511からフォーク要求が伝達さ
れ、プロセッサ番号転送線512からどのプロセッサ1
10からフォーク要求があったかが示されると、スレッ
ド実行制御装置620は、全てのスレッド記述子ポイン
タ610を読みだし、要求元のプロセッサ110に対応
する記述子ポインタ610の値をスレッド記述子スロッ
ト指定線551を介して、スレッド記述子記憶装置14
0内のデコーダ542へ伝達する。ここで、当該のスレ
ッド記述子ポインタ610の値は、仮想スレッド番号2
11順に従うと、どのスレッド記述子スロット541へ
フォークされたスレッド記述子141を挿入すればよい
かを示している。スレッド記述子141はスレッド記述
子転送線513を介して与えられ、デコーダ542の指
定するスレッド記述子スロット541へ挿入される。そ
れより上の位置のスレッド記述子スロット541に記憶
されたスレッド記述子141はひとつずつ上へシフトさ
れる。一方、スレッド実行制御装置620では、フォー
ク動作201を行なったプロセッサ110に対応するス
レッド記述子ポインタ610の値それ自身と、それより
大きなスレッド記述子ポインタ610の値とが全て1加
算され、加算結果がそれぞれの新しい値としてスレッド
記述子ポインタ610に書き込まれる。
【0054】図7は上に説明した制御方法の実施例に基
づき、フォーク動作201時の順序付きマルチスレッド
実行装置120の制御方法を簡単な例を用いて説明した
図である。同図ではプロセッサ110が4台、スレッド
記述子スロット541が10個ある場合を示しており、
フォーク動作201によるスレッド記述子スロット54
1とスレッド記述子ポインタ610の変化を示してい
る。スレッド記述子ポインタ610の上に添えられた値
はプロセッサ番号、スレッド記述子スロット541の横
に添えられた値は下から数えたスレッド記述子スロット
541の番号である。スレッド記述子ポインタ610の
中の値は当該ポインタ610が指すスレッド記述子スロ
ット541の番号を指し、スロット541の中のアルフ
ァベットはスレッド記述子140を表し、違ったアルフ
ァベットは違ったスレッド記述子141を意味してい
る。ここで、図7に示したように、プロセッサ(2)で
フォーク動作201が行なわれたとする。この場合、対
応するスレッド記述子141は、プロセッサ(2)に対
応するスレッド記述子ポインタ(2)の値に従って、3
番のスレッド記述子スロット(3)に挿入され、それよ
り上のスレッド記述子141は一つずつ上へシフトされ
る。ここで挿入されたスレッド記述子141はスレッド
記述子(h)である。また、同図に示したように、プロ
セッサ(2)のスレッド記述子ポインタと、それより上
を指すプロセッサ(0)とプロセッサ(1)のスレッド
記述子ポインタがそれぞれ1加算される。プロセッサ
(2)のスレッド記述子ポインタの値が増えるのは、次
にプロセッサ(2)で現在実行中のスレッド210から
フォーク動作201でスレッド210が生成された場
合、ここで示したフォーク動作201で生成されたスレ
ッド210よりも仮想スレッド番号211が一つ大きく
なるはずだからである。このようにして、本実施例の制
御方法により、フォーク動作201が行なわれた時に、
フォークされたスレッド記述子141をスレッド記述子
記憶装置140内で仮想スレッド番号211順に正しく
一方向に並べて保持することが可能となる。
【0055】次に図5および図6を用いて、あるプロセ
ッサ110上で実行中のスレッド210が待ち状態にな
った場合の本発明による順序付きマルチスレッド実行装
置120の制御方法について、その実施例を説明する。
この場合の動作は以下の二つのステップに分けられる。
【0056】第1のステップではまずスレッド記述子要
求が要求伝達線511を介して伝達され、これとともに
プロセッサ番号転送線512からどのプロセッサ110
から要求があったかが示される。スレッド実行制御装置
620は、全てのスレッド記述子ポインタ610を読み
だし、要求元のプロセッサ110に対応するスレッド記
述子ポインタ610の値をスレッド記述子スロット指定
線546を介してスレッド記述子監視装置543へ送
る。この監視装置543は、送られてきたスレッド記述
子ポインタ610の値が指すスレッド記述子スロット5
41よりも下に位置するスレッド記述子スロット541
の中で、その中に記憶されたスレッド記述子141が実
行可能状態にあるものの中から、一つのスレッド記述子
スロット541を選びだし、このスレッド記述子スロッ
ト541へのポインタをスレッド記述子スロット指定線
546を介して送り返す。選び出されたスレッド記述子
141はスレッド記述子転送線513を介して送出され
る。読み出された記述子スロット541より上に位置す
るスレッド記述子スロット541の記憶内容は一つずつ
下へシフトされる。ここで、要求元のプロセッサ110
に対するスレッド記述子ポインタ610は、スレッド実
行制御装置620により、先ほどスレッド記述子監視装
置543から受けとったスレッド記述子へのポインタに
書き換えられる。また、このようにして得た新しいスレ
ッド記述子ポインタ610の値よりも大きい値を持つス
レッド記述子ポインタ610の値は、スレッド実行制御
装置620により、1ずつ減算されて、それぞれのスレ
ッド記述子ポインタ610へ書き戻される。
【0057】第2のステップでは、スレッド210が待
ち状態に入ったプロセッサ110から、スレッド210
のスレッド記述子214が送られてくる。このスレッド
記述子214は第1のステップで書き換えられる前の当
該プロセッサ110に対する古いスレッド記述子ポイン
タ610の値で指定されるスレッド記述子スロット54
1より一つ下の位置のスレッド記述子スロット541に
挿入される。これに従って、上記のフォーク動作201
の場合の制御方法と同様に、このようにして挿入された
スレッド記述子スロット541より上のスレッド記述子
スロット541の記憶内容は一つずつ上へシフトされ
る。これに併せてスレッド記述子ポインタ610の値も
挿入されたスレッド記述子スロット541よりも上に位
置するスレッド記述子スロット541を指すものが1ず
つ加算される。
【0058】図8は上に説明した制御方法の実施例に基
づき、あるプロセッサ110が待ち状態に入った時の順
序付きマルチスレッド実行装置120の制御方法を図7
と同様な簡単な例と同様の方法を用いて説明した説明図
である。但し、図8においてスレッド記述子141を表
すアルファベットに番号が添えられてあるものは、その
番号で指定されるプロセッサ110上で待ち状態にある
スレッド210に対するスレッド記述子141であるこ
とを意味している。まず、第1のステップではプロセッ
サ(0)で実行中のスレッド210が待ち状態に入る。
上の説明に従い、スレッド記述子スロット(5)よりも
下の位置のスレッド記述子スロットに記憶されたスレッ
ド記述子141でかつ他のプロセッサ110上で待ち状
態にないスレッド記述子141が一つ選ばれて、スレッ
ド記述子記憶装置140から送出される。ここではスレ
ッド記述子スロット(0)内に格納されていたスレッド
記述子(a)が送出されるものとする。これに従って、
当該スレッド記述子スロット(0)より上のスレッド記
述子スロット541の記憶内容は一つずつ下にシフトさ
れる。プロセッサ(0)に対すスレッド記述子ポインタ
(0)の値は送出したスレッド記述子141を格納して
いたスレッド記述子スロット541の値、すなわち0に
書き換えられる。更に、このようにして書き換えられた
スレッド記述子ポインタ(0)より大きなスレッド記述
子ポインタ610の値は1ずつ減算される。続いて第2
のステップでは、プロセッサ(0)から待ち状態に入っ
たスレッド210のスレッド記述子(h:0)が送られ
てくる。このスレッド記述子141は、プロセッサ
(0)の古いスレッド記述子ポインタ610よりも一つ
下の位置のスレッド記述子スロット541に格納され
る。これに従って、このスレッド記述子スロット541
よりも上のスレッド記述子スロット541の記憶内容は
一つずつ上へシフトされ、同じく、当該のスレッド記述
子スロット(4)より上を指すスレッド記述子ポインタ
610の値も1加算される。
【0059】以上のような動作により、プロセッサ11
0で実行中のスレッド210が待ち状態に入った場合、
当該の待ち状態スレッド210よりも必ず仮想スレッド
番号211の小さなスレッド210の実行を開始するこ
とを保証することができる。また、待ち状態に入ったス
レッド210のスレッド記述子141は、以上の制御方
法の実施例により、仮想スレッド番号211に従って、
スレッド記述子記憶装置140内の正しい位置に格納さ
れる。ここで、プロセッサ110が待ち状態に入った時
に、上記の方法の第1のステップで送出すべきスレッド
記述子141が見つからない場合は、当該の待ち状態に
入ったスレッド210は、待ち状態に入った原因が回復
するか、あるいは送出可能なスレッド記述子141が他
のプロセッサ110から順序付きマルチスレッド実行装
置120にフォーク動作201により生成されるかのど
ちからが起きるまで、そのまま当該のプロセッサ110
上で待ち状態を続ける。
【0060】次に図5および図6を用いて、あるプロセ
ッサ110上で実行中のスレッド210が終了した場合
の順序付きマルチスレッド実行装置の制御方法につい
て、その実施例を説明する。この場合、まずスレッド記
述子要求が要求伝達線511を介して伝達され、これと
ともにプロセッサ番号転送線512からどのプロセッサ
110から要求があったかが示される。スレッド実行制
御装置620は、全てのスレッド記述子ポインタ610
を読みだす。スレッド記述子監視装置543は、要求元
のプロセッサ110の番号をプロセッサ番号転送線51
4を介して受けとり、まず当該プロセッサ110上で待
ち状態にあるスレッド210のスレッド記述子141の
中でもっとも下に位置するスレッド記述子141を記憶
するスレッド記述子スロット541を捜し出す。このよ
うにして捜し出されたスレッド記述子スロット541
と、それよりも下のスレッド記述子スロット541の中
に記憶されたスレッド記述子141の中で、他のプロセ
ッサ110で待ち状態にあるスレッド210に対応する
スレッド記述子141以外を捜し出し、その中から一つ
のスレッド記述子スロット541を選びだし、このスレ
ッド記述子スロット541へのポインタをスレッド記述
子スロット指定線546を介して送る。選び出されたス
レッド記述子141はスレッド記述子転送線513を介
して送出される。スレッド記述子141が送出されたス
レッド記述子スロット541とそれより上のスレッド記
述子スロット541の記憶内容は一つずつ下へシフトさ
れる。ここで、スレッド実行制御装置620により、要
求元のプロセッサ110に対するスレッド記述子ポイン
タ610は先ほどスレッド記述子監視装置543から受
けとったスレッド記述子スロットへのポインタに書き換
えられる。また、スレッド実行制御装置620により、
このようにして得られた新しいスレッド記述子ポインタ
610の値よりも大きい値を持つスレッド記述子ポイン
タ610の値が1減算される。
【0061】図9は上に説明した制御方法の実施例に基
づき、あるプロセッサ110がスレッド210を終了し
た時の順序付きマルチスレッド実行装置120の制御方
法を図8と同様な簡単な例と同様の記法を用いて説明し
た図である。
【0062】まず、プロセッサ(3)で実行中のスレッ
ド210が実行を終了する。上の説明に従い、プロセッ
サ(3)上で待ち状態にあるスレッド記述子141の中
で最も下に位置するスレッド記述子141を格納するス
レッド記述子スロット541が捜し出され、このスレッ
ド記述子スロット541とそれ以下のスレッド記述子ス
ロット541の中で、格納されたスレッド記述子141
が他のプロセッサ上で待ち状態にないものが一つ選ば
れ、スレッド記述子記憶装置140から送出される。こ
こではスレッド記述子スロット(2)内に格納されてい
たスレッド記述子(c)が送出されるものとする。これ
に従って、これより上のスレッド記述子スロット541
の記憶内容は一つずつ下にシフトされる。プロセッサ
(3)に対するスレッド記述子ポインタ610の値は送
出したスレッド記述子141を格納していたスレッド記
述子スロット541の値、すなわち2に書き換えられ
る。更に、このスレッド記述子ポインタより大きなスレ
ッド記述子ポインタ610の値は1ずつ減算される。
【0063】以上のような動作により、プロセッサ11
0はスロット210の実行を終了した際に、必ず、当該
プロセッサ110上で待ち状態にあるどのスレッド21
0よりも仮想スレッド番号211の小さなスレッド21
0の実行を開始することを保証することができる。ここ
で、当該プロセッサ110上で待ち状態にあるスレッド
210に対するスレッド記述子141が見つからない場
合は、その代わりに、最も上に位置するスレッド記述子
141を格納するスレッド記述子スロット141を捜し
出し、これを代わりに用いて上に説明した方法で、スレ
ッド記述子141の選択を行なう。また、プロセッサ1
10がスロット210の実行を終了した際に、上記の方
法により送出すべきスレッド記述子141が見つからな
い場合は、当該プロセッサは送出可能なスレッド記述子
141が他のプロセッサ110から順序付きマルチスレ
ッド実行装置120にフォーク201されるまでスレッ
ド210の実行を休止する。
【0064】以上説明を行なった、プロセッサ110上
で実行中のスレッド210が待ち状態に入った時もしく
は終了した時の本発明の順序付きマルチスレッド実行装
置の制御方法の実施例において、スレッド記述子141
をスレッド記述子記憶装置140から送出し、当該プロ
セッサ110に対するスレッド記述子ポインタ610を
送出されたスレッド記述子141が格納されていたスレ
ッド記述子スロット541に書き換えた際に、複数のス
レッド記述子ポインタ610が同じスレッド記述子スロ
ット541を指す場合が生じる。このような場合の例
は、図8もしくは図9の実施例の説明図において現れて
いる。このように同じスレッド記述子スロット541を
複数のスレッド記述子ポインタ610が指している場合
において、当該の複数のプロセッサ110の内の一つで
フォーク動作201が行なわれた場合、上に説明したフ
ォーク動作201があった時の順序付きマルチスレッド
実行装置の制御方法の実施例のみでは、スレッド記述子
ポインタ610の値を正しく設定することが出来ない。
これは、実際には複数のプロセッサ110で実行中状態
にあるスレッド210には実際には仮想スレッド番号2
11に従った順序関係があるにもかかわらず、スレッド
記述子ポインタ610が同じスレッド記述子スロット5
41を指しているからである。
【0065】図10は、このような場合にも仮想スレッ
ド番号211に従って正しくスレッド記述子141をス
レッド記述子記憶装置140内で並べることを可能とす
る、順序付きマルチスレッド実行装置120内のスレッ
ド記述子順序付け装置150の第2の実施例を示したも
のである。
【0066】図10において、スレッド記述子順序付け
装置150は、プロセッサ110にそれぞれ対応し、プ
ロセッサ110の台数分だけ用意されたスレッド記述子
ポインタ610と、同じくプロセッサ110にそれぞれ
対応し、プロセッサ110の台数分だけ用意されたプロ
セッサ間順序関係情報1010と、スレッド記述子ポイ
ンタ管理装置1020と、セレクタ1030から構成さ
れている。スレッド記述子ポインタ610の働きは図6
の実施例に基づくものと同一である。セレクタ1030
は、動作に応じて、複数のスレッド記述子ポインタ61
0とスレッド記述子スロット指定線546を介して送ら
れてきたスレッド記述子スロット541へのポインタの
いずれかを選択してデコーダ542へ伝える働きを持
つ。あるスレッド記述子141があるスレッド記述子ス
ロット541から送出される場合、そのスレッド記述子
スロット541へのポインタはスレッド記述子スロット
指定線546を介してスレッド記述子ポインタ管理装置
1020へ送られる。このポインタの値と、当該プロセ
ッサ110以外の全てのプロセッサ110に対するスレ
ッド記述子ポインタ610の値とを一斉に大小比較し、
これらの値の大小関係に基づきプロセッサ間順序関係情
報1010を定める。ここで、大小比較においてスレッ
ド記述子スロット指定線546を介して送られてきたポ
インタの値とあるスレッド記述子ポインタ610の値が
等しい場合には、常にスレッド記述子ポインタ610の
値の方が小さいとみなす。また、プロセッサ間順序関係
情報1010は、大小比較において小さい側のプロセッ
サ110に対するプロセッサ間順序関係情報1010に
小さい値を与えるものとする。プロセッサ間順序関係情
報1010を用い、複数のスレッド記述子ポインタ61
0の値が同じ場合は、順序関係情報1010の値が小さ
い方をスレッド記述子ポインタ610が下を指している
と判断することにより、このような場合にも正しくスレ
ッド記述子ポインタ間の大小関係を維持することができ
る。上に説明した本発明によるフォーク動作201時、
スレッド210が待ち状態になった時、およびスレッド
210が終了した時の本発明による順序付きマルチスレ
ッド実行装置の実施例において、スレッド記述子ポイン
タ610が同じ値を持つ場合は、プロセッサ間順序関係
情報1010により当該のスレッド記述子ポインタ61
0の大小関係を含め、スレッド記述子ポインタ610を
1加算もしくは減算する際に、この大小関係までを含め
てスレッド記述子ポインタ610の大小関係を判断する
ことで、仮想スレッド番号211に従った正しい順序づ
けを行なうことが可能となる。
【0067】本発明によるスレッド210のフォーク動
作201時の順序付きマルチスレッド実行装置120の
制御方法において、スレッド記述子記憶装置140内の
スレッド記述子スロット541の数よりも多い数のスレ
ッド記述子141が存在する場合、スレッド記述子記憶
装置140からあふれたスレッド記述子141の順序付
けをどのように行なうかが問題となる。そこで本発明に
よる順序付けマルチスレッド実行装置120の制御方法
は、スレッド記述子記憶装置140内のスレッド記述子
スロット541の数を越えるスレッド記述子141がプ
ロセッサ110かフォークされた場合には、当該プロセ
ッサ110上で当該スレッド記述子141に対応するス
レッド210を逐次的に実行させる制御方法を特徴とし
ている。このため、図5および図6もしくは図10にお
いて、フォーク要求が伝えられるとスレッド記述子順序
付け装置150はスレッド記述子ポインタ610の値を
調べ、この中で最大のスレッド記述子ポインタ610の
値がスレッド記述子スロット541の総数と等しくなっ
ていないかどうかをチェックする。もし等しい場合は、
スレッド記述子スロット541は全てスレッド記述子1
41を格納しているので、フォーク要求を拒絶すること
を当該プロセッサ110に要求伝達線511および要求
伝達線112を介して伝える。当該プロセッサ110
は、拒絶された場合、フォークしたスレッド記述子14
1を用いて、自分自身で当該スレッドの実行を行なう。
【0068】あるプロセッサ110上で実行中のスレッ
ド210が待ち状態に入った時もしくは終了した時の順
序付きマルチスレッド実行装置120の制御において
は、これまで説明したように、送出可能なスレッド記述
子141が複数個存在する。図11は、このような複数
個存在するスレッド記述子141から一つのスレッド記
述子141を実際に選択して送出するための順序付きマ
ルチスレッド実行装置の制御方法の4つの実施例を説明
した図である。図11(a)から(d)は、それぞれ、
スレッド記述子記憶装置140内の複数のスレッド記述
子スロット541を示し、その中でも複数の送出可能な
スレッド記述子141を含むスレッド記述子スロット5
41を斜線がけで示している。また図11(c)と
(d)においては、送出可能なスレッド記述子141の
中に待ち状態にあるスレッド210のスレッド記述子1
41が入っている場合とそうでない場合を区別して示
し、待ち状態にあるスレッド210のスレッド記述子1
41を含むスレッド記述子スロット541を編目がけで
示している。
【0069】図11(a)においては、送出可能なスレ
ッド記述子141の中で最も下に位置するもの、すなわ
ち仮想スレッド番号211が最も小さいものを常に選択
して実行することを特徴としている。
【0070】図11(b)における本発明による順序付
きマルチスレッド実行装置の制御方法の実施例において
は、送出可能なスレッド記述子141の中で最も上に位
置するもの、すなわち仮想スレッド番号211が最も大
きいものを常に選択して実行することを特徴としてい
る。
【0071】図11(c)における本発明による順序付
きマルチスレッド実行装置の制御方法の実施例において
は、送出可能なスレッド記述子141の中に待ち状態に
あるスレッド記述子141が含まれる場合は最も上に位
置するもの、すなわち仮想スレッド番号211が最も大
きいものを常に選択して実行し、それ以外の場合は、送
出可能なスレッド記述子141の中で最も下に位置する
もの、すなわち仮想スレッド番号211が最も小さいも
のを常に選択して実行することを特徴としている。待ち
状態にあるスレッド記述子141が存在する場合は、そ
れは常に最も上に存在するので、この実施例において
は、待ち状態にあるスレッド記述子141が存在する場
合は常にこれを送出することになる。
【0072】図11(d)における本発明による順序付
きマルチスレッド実行装置の制御方法の実施例において
は、送出可能なスレッド記述子141の中に待ち状態に
あるスレッド記述子141が含まれる場合は最も下に位
置するもの、すなわち仮想スレッド番号211が最も小
さいものを常に選択して実行し、それ以外の場合は、送
出可能なスレッド記述子141の中で最も上に位置する
もの、すなわち仮想スレッド番号211が最も大きいも
のを常に選択して実行することを特徴としている。待ち
状態にあるスレッド記述子141が存在する場合は、そ
れは常に最も上に存在するので、この実施例において
は、待ち状態にあるスレッド記述子141が存在する場
合はこれは最後に実行されることになる。
【0073】図12は、更に複数個の送出可能なスレッ
ド記述子141から一つのスレッド記述子141を選択
して送出するための順序付きマルチスレッド実行装置の
制御方法の別の2つの実施例を説明するための図であ
る。図12において、スレッド記述子スロット541内
にスレッド記述子141が含まれない場合は空白、待ち
状態のスレッド210のスレッド記述子141を含む場
合は斜線がけ、実行可能状態のスレッド210のスレッ
ド記述子141を含む場合は縦線がけでそれぞれのスレ
ッド記述子スロット541が示されている。ここで、本
実施例の特徴的な制御方法は、待ち状態のスレッド21
0と実行可能状態のスレッド210のそれぞれのスレッ
ド記述子141を含むスレッド記述子スロット541の
数を比較し、それにより、動的にどのスレッド記述子ス
ロット541に含まれるスレッド記述子141を選択す
るかを定めることである。より具体的な実施例は、待ち
状態のスレッド210のスレッド記述子141が多い場
合は、図11(a)に示したように最も下に位置するス
レッド記述子141を選択し、実行可能状態のスレッド
210のスレッド記述子141が多い場合は、図11
(b)に示したように最も上に位置するスレッド記述子
141を選択して実行することを特徴とするものであ
る。
【0074】図13は本発明の順序付きマルチスレッド
実行装置120の第2の実施例の内部構成を示すブロッ
ク図である。図5に示した第1の実施例に比べて、新た
に送出可能フラグスロット1341が付け加えられてい
る点が異なっている。送出可能フラグスロット1341
は、各スレッド記述子スロット541に対応して設けら
れている。図11および図12に関連して説明したよう
に、本発明による順序付きマルチスレッド実行方法にお
いては、実行可能状態あるいは待ち状態のスレッド記述
子141を送出する際に、送出可能なスレッド記述子1
41が複数存在し、その中から一つを選択して送出す
る。本実施例では、図8および図9に関連して説明した
方法で送出可能と判断されたスレッド記述子141の中
で、更に、実際に送出可能なスレッド記述子141を、
送出可能フラグスロット1341に送出可能フラグがセ
ットされたスレッド記述子141のみに限定し、この限
定されたスレッド記述子141の中から一つを選択して
送出することを特徴としている。
【0075】図14は、図13の実施例において、実行
可能なスレッド記述子141に関して、その送出可能フ
ラグスロット1341の設定を行なうためのスレッド記
述子順序付け装置150の実施例を示したブロック構成
図である。このスレッド記述子順序付け装置150は、
図6に示したスレッド記述子順序付け装置150の実施
例に実行可能状態スレッド記述子送出可能化装置142
0を加えた構成である。この実行可能状態スレッド記述
子送出可能化装置1420は、スレッド記述子スロット
541に記憶された実行可能なスレッド記述子141に
対して、そのスレッド記述子141があるスレッドから
最初にフォークされたスレッド記述子141である場合
のみ、対応する送出可能フラグスロット1341に送出
可能フラグをセットするように働く。なお、以下で「フ
ラグをセット/リセットする」と述べる時は、必ずしも
その時点以前に当該のフラグがリセット/セットされて
いたことを意味しない。
【0076】図14の実施例において、実行可能状態ス
レッド記述子送出可能化装置1420は、スレッドスイ
ッチフラグ1410を有することにより、以上のような
働きを実現している。スレッドスイッチフラグ1410
は、各プロセッサに対して一つずつ用意されており、あ
るスレッドがあるプロセッサ上で実行を開始した時にそ
のプロセッサに対応するスレッドスイッチフラグ141
0がセットされる。ここでスレッド210が実行を開始
する場合とは、実行可能なスレッド記述子141もしく
は待ち状態のスレッド記述子141があるプロセッサに
送出されて対応するスレッドの実行が始まる場合と、逐
次的にスレッドが起動された場合とを含んでいる。ある
プロセッサがスレッドの実行を開始したことは、要求伝
達線511とプロセッサ番号転送線512によりスレッ
ド実行制御装置620に通知され、これに従いスレッド
実行制御装置620が当該のスレッドスイッチフラグ1
410をセットする。次に、あるプロセッサ上で実行中
のスレッドが別のスレッドをフォークすると、そのプロ
セッサに対応するスレッドスイッチフラグ1410がリ
セットされる。フォークは、上の場合と同様に、要求伝
達線511とプロセッサ番号転送線512によりスレッ
ド実行制御装置620に通知され、これに従いスレッド
実行制御装置620が当該のスレッドスイッチフラグ1
410をリセットする。
【0077】フォークがあった場合は、以上のようなス
レッドスイッチフラグ1410を用いて、スレッド実行
制御装置620が送出可能フラグスロット1341の制
御を行なう。このために、スレッド記述子スロット指定
線551は、スレッド記述子スロット541を指定する
のみでなく、送出可能フラグスロット1341をセット
するかリセットするかの情報も含んでいる。より具体的
には、フォークがあった際、フォーク元のプロセッサの
スレッドスイッチフラグ1410がセットされていれ
ば、指定されたスレッド記述子スロット541に付随す
る送出可能フラグスロット1341に送出可能フラグを
セットする。逆に、スレッドスイッチフラグ1410が
リセットされていれば、指定されたスレッド記述子スロ
ット541に付随する送出可能フラグスロット1341
の送出可能フラグをリセットする。このようにして、ス
レッド記述子141がフォークされた際に、そのスレッ
ド記述子141があるスレッド210が実行を開始して
から最初にフォーク201されたものである時のみ送出
可能フラグがセットされることになる。
【0078】一方、実行可能なスレッド記述子141が
送出された場合、送出されたスレッド記述子141が格
納されていたスレッド記述子スロット541より上に位
置するスレッド記述子スロット541の記憶内容は一つ
ずつ下へシフトされる。この場合、対応する送出可能フ
ラグスロット1341の記憶内容も同様に一つずつ下へ
シフトされる。但し、送出されたスレッド記述子141
が格納されていたスレッド記述子スロット541より一
つ上に位置していたスレッド記述子スロット541に付
随する送出可能フラグスロット1341の記憶内容は、
自動的に送出可能フラグをセットされた上で一つ下へシ
フトされる。このような動作は、スレッド記述子監視装
置543により行なわれる。これにより、その時点でス
レッド記述子記憶装置140に格納されていて、ある一
つのスレッドからフォーク201された実行可能状態の
スレッド記述子141の内で、最も先にフォークされた
スレッド記述子141が送出可能フラグをセットされる
ことになる。
【0079】なお、この実施例においては、待ち状態に
あるスレッド記述子141に関しては、常に送出可能フ
ラグをセットしておく。すなわち、待ち状態のスレッド
記述子がスレッド記述子スロット541に挿入される際
は、対応する送出可能フラグスロット1341に送出可
能フラグをセットする。
【0080】図15は本発明の順序付きマルチスレッド
実行装置120の第3の実施例の内部構成を示すブロッ
ク図である。図13に示した第2の実施例に比べて、新
たにスレッド記述子順序付け装置150がプロセッサイ
ンタフェース510とスレッド記述子転送線1513で
結ばれている点と、同じくスレッド記述子順序付け装置
150とスレッド記述子監視装置543がスレッド記述
子転送線1543で結ばれている点が異なっている。こ
れらの新たな装置間接続は、待ち状態にあるスレッド記
述子141に関して、同期動作202が成功しているか
ミスしているかの状況に応じて送出可能フラグをセット
するために必要とされる。
【0081】図16は、図15の第3の実施例におい
て、送出可能フラグスロット1341の設定を行なうた
めのスレッド記述子順序付け装置150の実施例を示し
たブロック構成図である。図16において、スレッド記
述子順序付け装置150は、図14に示した実施例に待
ち状態スレッド記述子送出可能化装置1610を加えた
構成を有している。待ち状態スレッド記述子送出可能化
装置1610は、スレッド記述子スロット541に記憶
された待ち状態のスレッド記述子141に対して、その
スレッド記述子141が待ち状態になる原因となった同
期動作202の同期条件が成立したとみなされる場合に
のみ、対応する送出可能フラグスロット1341に送出
可能フラグをセットするように働く。
【0082】図16において、待ち状態スレッド記述子
送出可能化装置1610は、要求伝達線511とスレッ
ド記述子転送線1513を入力として受け、スレッド記
述子転送線1543を出力として持つ。要求伝達線51
1は、同期動作202(図2)が行なわれた時に、その
同期動作の動作の種類と、同期を行なう共有変数220
のメモリ上のアドレスを待ち状態スレッド記述子送出可
能化装置1610へ通知する。同期付き読みだしが行な
われる場合、同期ミスが起こると、既に説明したように
実行中のスレッドは待ち状態となり、対応するスレッド
記述子141がスレッドスロット記述子スロット541
に格納される。この際、対応する送出可能フラグスロッ
ト1341の送出可能フラグはリセットされるものとす
る。この時、待ち状態スレッド記述子送出可能化装置1
610は、要求伝達線511から通知される同期ミスを
起こした同期待ちアドレスと、スレッド記述子転送線1
513から通知される待ち状態のスレッド記述子141
とを一組にして格納する。同期付き書き込みが行なわれ
る場合、指定された共有変数220のアドレスが同期待
ちアドレスとして待ち状態スレッド記述子送出可能化装
置1610に格納されている時は、その同期待ちアドレ
スと組になって格納されている待ち状態のスレッド記述
子141がスレッド記述子転送線1543を介してスレ
ッド記述子監視装置543に送られる。スレッド記述子
監視装置543は、そのスレッド記述子141をスレッ
ド記述子スロット541の中から探しだし、対応する送
出可能フラグスロット1341に送出可能フラグをセッ
トする。これにより、同期が既に成功した待ち状態のス
レッド記述子141のみを送出可能にすることが出来
る。
【0083】図17は、図16における待ち状態スレッ
ド記述子送出可能化装置1610のより具体的な実施例
を示したブロック構成図である。待ち状態スレッド記述
子送出可能化装置1610は、同期バッファ1710、
比較器1720、レジスタ1730、制御装置1740
から構成されている。同期バッファ1710は複数の同
期待ちアドレススロット1711とそれに対応する複数
のスレッド記述子スロット1712および複数の有効フ
ラグスロット1713から構成される。上に概略説明し
たような待ち状態スレッド記述子送出可能化装置161
0の動作は、同期バッファ1710を同期待ちアドレス
をアクセスキーとし、スレッド記述子141をデータと
する。一般に良く知られたキャッシュメモリの構成をと
ることで実現される。図17の実施例ではダイレクトマ
ップのキャッシュメモリとして同期バッファ1710を
構成した場合の例を示しているが、当然ながらセットア
ソシアティブやフルアソシアティブの構成も可能であ
る。
【0084】図17において、要求伝達線511を介し
て指定された同期動作202用の共有変数220のアド
レス内の一部がデコーダ1714へ与えられどのスロッ
トを選択するかを決定する。その他の部分は、同期付き
読み出しでかつ同期ミスの場合は同期待ちアドレススロ
ット1711へ、同期付き書き込みの場合は比較器17
20へそれぞれ与えられる。同期動作202の種類は制
御装置1740へ与えられ、それに応じて待ち状態スレ
ッド記述子送出可能化装置1610の動作が制御信号1
741により制御される。有効フラグスロット1713
は、有効なデータが保持されている時にのみ有効フラグ
がセットされる。
【0085】同期付き読み出しで同期ミスの場合、同期
待ちアドレスで一意に指定されるそれぞれのスロット
へ、同期待ちアドレス、スレッド記述子141が格納さ
れ、有効フラグスロット1713に有効フラグをセット
する。この際、有効フラグが既にセットされていた場
合、スレッド記述子スロット1712に格納されたスレ
ッド記述子141はそのスレッド記述子スロット171
2から追い出され、レジスタ1730とスレッド記述子
転送線1543を介してスレッド記述子監視装置543
へ送られる。また、同期付き書き込みの場合、同期待ち
アドレスで一意に指定されるそれぞれのスロットから同
期待ちアドレスとスレッド記述子141をそれぞれ比較
器1720とレジスタ1730へ読み出す。ここで対応
する有効フラグスロット1713に有効フラグがセット
されているならば、比較器1720で与えられた同期待
ちアドレスと読み出された同期待ちアドレスの比較を行
ない、同期が成功するかどうかを確認する。同期が成功
する場合は、当該の有効フラグスロット1713の有効
フラグをリセットすると共に読み出されたスレッド記述
子141をスレッド記述子転送線1543を介してスレ
ッド記述子監視装置543に転送する。一方、同期が成
功しない場合もしくは有効フラグがセットされていない
場合は、同期バッファ1710の内部状態に何ら変化が
起きないようにする。以上のように、スレッド記述子1
41がスレッド記述子監視装置543に転送されると、
スレッド記述子141がスレッド記述子スロット171
2から追い出された場合も含めて、既に述べたように、
スレッド記述子監視装置543は対応するスレッド記述
子141をスレッド記述子スロット541から探しだ
し、送出可能フラグスロット1341に送出可能フラグ
をセットする。ここで、スレッド記述子141がスレッ
ド記述子スロット1712から追い出された場合も含め
て送出可能フラグをセットすることで、この場合も同期
待ちが成立した場合と同じ扱いをされることになる。こ
のようにすることで同期バッファ1710から追い出さ
れた場合に、その後の同期待ちも成立を考慮する必要が
なくなるので、処理を簡単化することが出来る。
【0086】以上、二つの実施例により本発明による送
出可能フラグの設定方法を説明した。これらの送出可能
フラグにより限定された送出可能なスレッド記述子14
1に関しては、いずれをも選択して送出することが可能
である。本発明におけるこの選択方法の実施例は、送出
可能なスレッド記述子141の内、最も上位に位置する
スレッド記述子141を送出する方法と、送出可能なス
レッド記述子141の内、最も下位に位置するスレッド
記述子141を送出する方法の二つである。
【0087】なお、以上説明してきた本発明の実施例に
おいて、スレッド記述子監視装置543は、例えば、各
スレッド記述子スロットに対してそれぞれ比較器を設
け、入力されたプロセッサ番号やスレッド記述子141
とスレッド記述子スロット541に格納されたプロセッ
サ番号やスレッド記述子141とを並列に比較すること
で実現される。このような構成においてはスレッド記述
子記憶装置140は一般に連想メモリ、あるいは内容ア
ドレスメモリ(Content Addressabl
e Memory)と呼ばれる装置の構成を有すること
になる。
【0088】以上説明したものはあくまでも実施例であ
り、特許請求の範囲を何ら狭めるものではない。以下に
簡単に幾つかのその他の実施例を述べるように、請求項
の要件を満たす多くの実施例の構成が可能である。
【0089】図5に示したスレッド記述子記憶装置14
0ではスレッド記述子スロット541を物理的に一列に
並べ、物理的な位置関係でスレッド記述子スロット54
1内に格納されたスレッド記述子141どうしの仮想ス
レッド番号211に基づく順序関係を表すように構成さ
れている。他の実施例としては、格納されたスレッド記
述子141どうしの順序関係に応じて複数のスレッド記
述子スロット541間をポインタで結ぶことにより、同
様の機能を実現する実施例があげられる。
【0090】図6に示したスレッド記述子順序付け装置
の第1の実施例では、スレッド記述子ポインタ610に
より、直接的に、各プロセッサ110で実行されている
スレッド210がどのスレッド記述子スロット541に
対応するかを記憶している。他の実施例としては、この
実施例の場合よりも一つ下のスレッド記述子スロット5
41をスレッド記述子ポインタ610が指すようにする
場合があげられる。あるいは、スレッド記述子ポインタ
610が他のスレッド記述子ポインタ610との相対的
な位置関係を示し、どのスレッド記述子スロット541
に対応するかは加算により求める実施例などもあげられ
る。
【0091】本発明による順序付きマルチスレッド実行
装置の制御方法において、フォーク動作201時、スレ
ッド210が待ち状態になった時、スレッド210が終
了した時の、制御方法の実施例内の各動作は、最終的に
得られるスレッド記述子スロット541内のスレッド記
述子114の配置とスレッド記述子ポインタ610の値
が同じであれば、任意に入れ替えられることが出来る。
例えば、スレッド210が待ち状態になった場合に、最
初に待ち状態になった当該のスレッド210のスレッド
記述子114をスレッド記述子記憶装置に格納し、その
後、新しいスレッド記述子114を送出するようにする
ことも可能である。
【0092】図10に示したスレッド記述子順序付け装
置の第2の実施例では、プロセッサ間順序関係情報10
10をプロセッサ110間の相対的な順序関係情報とし
て示している。このような実施例の代わりに、一つのス
レッド記述子スロット541を指すスレッド記述子ポイ
ンタ610の値をプロセッサ110の台数分用意し、ス
レッド記述子ポインタの値自体の大きさでプロセッサ間
順序関係情報を表す実施例もあげられる。
【0093】また、図14と図16において示したスレ
ッド記述子順序付け装置150の第3、第4の実施例
は、図6のスレッド記述子順序付け装置150の第1の
実施例をベースにしているが、図10のスレッド記述子
順序付け装置150の第2の実施例をベースにした構成
も可能である。
【0094】
【発明の効果】以上説明してきたように、本発明によ
り、実行中のオーバーヘッドが少ないマルチスレッド実
行方法を実現することが可能となった。ここで、オーバ
ーヘッドが少なくなるのは、主にスレッドの使用するア
クティベーションフレームをスタックを用いて管理でき
るようになったからである。これにより、逐次実行方法
の場合と同様に、オーバーヘッドの少ないインラインス
タック管理を行なうことができる。
【0095】更に、従来のマルチスレッド実行方法で
は、待ち状態の要因が解決したことをトリガーとして、
待ち状態のスレッドを再開する実行方法を用いていた。
このような実行方法では、待ち状態の要因が解決したか
どうかを調べる手段と、調べた結果により待ち状態のス
レッドの実行を開始させる手段とを用意する必要があ
る。一般にこれらの手段には複雑なハードウェアが必要
となるという問題があった。本発明の順序付けマルチス
レッド実行方法では、待ち状態のスレッドは、待ち状態
が解決したかどうかに関わらず、順序付きマルチスレッ
ド実行装置の判断により再実行される。このため、ハー
ドウェアを非常に簡単化することが可能となる。
【0096】本発明による順序付きマルチスレッド実行
装置は、各プロセッサで実行中のスレッドと、スレッド
記述子記憶装置内に格納されたスレッド記述子の全てに
関して、逐次実行パスに基づく順序関係、すなわち仮想
スレッド番号に基づく大小関係を管理している。この管
理に基づき、本発明の順序付きマルチスレッド実行方法
を実現している。ここで、実施例の説明において明らか
になったように、これらのスレッド間の順序関係の管理
を行なうためのハードウェアのコストは軽いものであ
り、極めて効率良く本発明の順序付きマルチスレッド実
行方法を実現することが可能となった。
【0097】また、本発明の制御方法は、一時に存在で
きる実行可能状態と待ち状態のスレッドの総数をスレッ
ド記述子記憶装置内の記憶容量で制限することを特徴と
している。この特徴は、上記のハードウェアのコストの
低減に大きく寄与しており、また、スレッド記述子記憶
装置がオーバーフローした時の管理コストなどを削除す
ることもできる。
【0098】更に、本発明の制御方法における送出可能
な複数のスレッド記述子から一つのスレッド記述子を選
ぶ際の選択方法は、非常に単純であり、簡単にハードウ
ェアにより実現できる。
【0099】特に、送出可能フラグを用い、実行可能状
態のスレッド記述子に関してはある一つのスレッドから
フォークされたものの内で最も先にフォークされたもの
を送出可能とし、また待ち状態のスレッド記述子に関し
ては同期が成功したものを送出可能とすることで、スレ
ッド記述子の選択方法を更にプログラムの処理効率が良
いものにすることが出来る。これは、 1)同じスレッドからフォークされたスレッドの中で、
最も先にフォークされたスレッドから処理を始める方が
実行効率が良い。なぜならば逐次実行パスに沿った逐次
処理は、フォークされた順番に沿って行なわれるからで
ある。
【0100】2)待ち状態にあるスレッドに関しては、
同期が成功していないスレッドを再実行しても再度同期
ミスを起こすので無駄が生じる。既に同期が成功してい
る待ち状態のスレッドのみ選択的に実行することにより
実行効率が上がる。などの理由による。本発明による実
施例で示した方法は、簡単なハードウェアでこれらの機
能を近似的に実現しており、高い実行効率を実現でき
る。なお、ここで「近似的に」と述べたのは、 1)あるスレッドが一旦待ち状態に入り再実行を始めた
場合、待ち状態の前にスレッドをフォークしていたかど
うかが再実行後には考慮されない。従って再実行後に最
初にフォークされたスレッド記述子は送出可能フラグが
セットされ送出可能と判断される。
【0101】2)同期バッファからスレッド記述子が追
い出された場合は、同期が成立していないにも関わら
ず、送出可能フラグがセットされ、送出可能と判断され
る。の2つの点を意味している。これにより、送出可能
フラグがセットされる場合の限定範囲が上に述べた条件
よりも広くなるが、ハードウェアが簡単化できるという
効果を有する。
【図面の簡単な説明】
【図1】本発明による順序付きマルチスレッド実行方法
を実現する並列プロセッサシステムの一実施例のブロッ
ク構成図である。
【図2】本発明による順序付きマルチスレッド実行方法
に基づくマルチスレッド化されたプログラムの一例を示
した説明図である。
【図3】図2の例における本発明に基づく順序付きマル
チスレッド実行方法を示した説明図である。
【図4】図3の例における各スレッドに付随するアクテ
ィベーションレコードの生存期間を示した説明図であ
る。
【図5】本発明による順序付きマルチスレッド実行装置
の一実施例のブロック構成図である。
【図6】図5の実施例におけるスレッド記述子順序付け
装置の第1の実施例のブロック構成図である。
【図7】本発明による順序付きマルチスレッド実行装置
のフォーク動作時の制御方法を示した説明図である。
【図8】本発明による順序付けマルチスレッド実行装置
のスレッドが待ち状態になった時の制御方法を示した説
明図である。
【図9】本発明による順序付けマルチスレッド実行装置
のスレッドが終了した時の制御方法を示した説明図であ
る。
【図10】本発明による順序付きマルチスレッド実行装
置におけるスレッド記述子順序付け装置の第2の実施例
のブロック構成図である。
【図11】本発明による順序付きマルチスレッド実行装
置において送出可能な複数のスレッド記述子の中から一
つを選ぶ際の制御方法を示した説明図である。
【図12】本発明による順序付きマルチスレッド実行装
置において送出可能な複数のスレッド記述子の中から一
つを選ぶ際の制御方法を示した説明図である。
【図13】本発明による順序付きマルチスレッド実行装
置の第2の実施例のブロック構成図である。
【図14】本発明によるスレッド記述子順序付け装置の
第3の実施例のブロック構成図である。
【図15】本発明による順序付きマルチスレッド実行装
置の第3の実施例のブロック構成図である。
【図16】本発明によるスレッド記述子順序付け装置の
第4の実施例のブロック構成図である。
【図17】本発明による待ち状態スレッド記述子送出可
能化装置1610の実施例を示すブロック構成図であ
る。
【符号の説明】
100 並列プロセッサシステム 110 プロセッサ 111、513、1543 スレッド記述子転送線 112、511 要求伝達線 120 順序付きマルチスレッド実行装置 130 メモリ装置 140 スレッド記述子記憶装置 141 スレッド記述子 150 スレッド記述子順序付け装置 201 フォーク動作 202 同期動作 210 スレッド 211 仮想スレッド番号 220 共有変数 310 実行可能スレッド 320 待ち状態スレッド 330 実行中スレッド 410 アクティベーションレコードの生存期間 510 プロセッサインタフェース 512、514 プロセッサ番号転送線 541、1712 スレッド記述子スロット 542、1714 デコーダ 543 スレッド記述子監視装置 546、551 スレッド記述子スロット指定線 610 スレッド記述子ポインタ 620 スレッド実行制御装置 1010 プロセッサ間順序関係装置 1020 スレッド記述子ポインタ監視装置 1030 セレクタ 1341 送出可能フラグスロット 1410 スレッドスイッチフラグ 1420 実行可能状態スレッド記述子送出可能化装置 1610 待ち状態スレッド記述子送出可能化装置 1710 同期バッファ 1711 同期待ちアドレススロット 1713 有効フラグスロット 1720 比較器 1730 レジスタ 1740 制御装置 1741 制御信号

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】複数のプロセッサから構成される並列プロ
    セッサシステムにおいて、複数のスレッドから構成され
    る一つのプログラムをスレッド毎に並列に実行するプロ
    グラム実行方法であって、 スレッドの状態として少なくとも、実行中状態、実行可
    能状態、待ち状態の3つの状態を有し、あるプロセッサ
    上で実行中状態のスレッドからフォーク動作により実行
    可能状態のスレッドを生成し、実行可能状態のスレッド
    を他のプロセッサ上で実行し、同期動作によりこれら並
    列に実行される複数のスレッド間のデータ依存性を保証
    し、あるプロセッサ上で実行中状態のスレッドが当該実
    行を中断して待ち状態になる場合に、他の実行可能状態
    のスレッドを替わりに実行し、待ち状態になった当該ス
    レッドは同一のプロセッサ上で後で再実行されるマルチ
    スレッド実行方法において、 前記プログラムに対して一つの逐次実行パスを定め、こ
    の逐次実行パスに沿った前記プログラムの逐次的な実行
    におけるスレッドの終了順序としてスレッドの仮想スレ
    ッド番号を定義し、 前記プログラム中の全ての同期動作が前記仮想スレッド
    番号の小さいスレッドから大きいスレッドへ向かっての
    み前記同期動作を行なうように前記プログラムを構築
    し、 このようにして構築された前記プログラムを前記スレッ
    ド毎に並列に実行することを特徴とする順序付きマルチ
    スレッド実行方法。
  2. 【請求項2】全てのフォーク動作を逐次的な関数呼びだ
    し動作に置き換えることによりプログラムに対する逐次
    実行パスを得ることを特徴とする請求項1記載の順序付
    きマルチスレッド実行方法。
  3. 【請求項3】一つのプロセッサに着目した時に、実行中
    状態のスレッドの仮想スレッド番号が、当該プロセッサ
    上で待ち状態にある全てのスレッドの仮想スレッド番号
    よりも小さくなるように、前記スレッドの前記プロセッ
    サ上での実行順序を制御することを特徴とする請求項1
    記載の順序付きマルチスレッド実行方法。
  4. 【請求項4】スレッドが使用するアクティベーションレ
    コード領域をスタックを用いて管理することを特徴とす
    る請求項1記載の順序付きマルチスレッド実行方法。
  5. 【請求項5】並列プロセッサシステムを構成する複数の
    プロセッサ間で共有される順序付きマルチスレッド実行
    装置であって、スレッド記述子記憶装置を有し、このス
    レッド記述子記憶装置は複数個のスレッド記述子スロッ
    トを一列に並べて構成され、このスレッド記述子スロッ
    トはスレッドの実行に必要な情報を保持するスレッド記
    述子を格納する機能を持つことと、 前記スレッド記述子記憶装置において、前記スレッド記
    述子スロットが実行可能状態のスレッドのスレッド記述
    子か、もしくは待ち状態のスレッドのスレッド記述子を
    格納することと、 複数のスレッド記述子スロットに格納された複数のスレ
    ッド記述子に関して、それぞれのスレッド記述子に対応
    する仮想スレッド番号の大小関係に応じて、より小さな
    仮想スレッド番号に対応付けられたスレッド記述子がよ
    り下のスレッド記述子スロットに格納されるように、ス
    レッド記述子記憶装置内で各スレッド記述子を一方向順
    序に並べて保持することと、を特徴とする順序付きマル
    チスレッド実行装置。
  6. 【請求項6】複数のプロセッサに対してそれぞれのスレ
    ッド記述子ポインタを記憶し、このスレッド記述子ポイ
    ンタは、当該プロセッサ上で実行状態にあるスレッド
    が、仮想スレッド番号による一方向順序において、スレ
    ッド記述子記憶装置内のどのスレッド記述子スロット位
    置に相当するかを示すことを特徴とする請求項5記載の
    順序付きマルチスレッド実行装置。
  7. 【請求項7】あるプロセッサ上で実行中のスレッドがフ
    ォーク動作を行なった際に、当該実行可能状態のスレッ
    ドに対応するスレッド記述子を、スレッド記述子ポイン
    タの値を用いて指示されるスレッド記述子スロットに挿
    入することを特徴とする請求項6記載の順序付きマルチ
    スレッド実行装置の制御方法。
  8. 【請求項8】あるプロセッサ上で実行中のスレッドが待
    ち状態になった際に、スレッド記述子記憶装置内で、当
    該プロセッサに対応するスレッド記述子ポインタを用い
    て指示されるスレッド記述子スロットより下の位置の複
    数のスレッド記述子スロットに記憶された複数のスレッ
    ド記述子の中で、前記実行可能状態にある複数のスレッ
    ド記述子を送出可能と定義し、これら送出可能なスレッ
    ド記述子のうちの一つを選択し、当該プロセッサに当該
    スレッド記述子を送出するとともに、待ち状態になった
    スレッドのスレッド記述子を、当該プロセッサに対応す
    るスレッド記述子ポインタの値を用いて指示されるスレ
    ッド記述子スロットへ挿入することを特徴とする請求項
    6記載の順序付きマルチスレッド実行装置の制御方法。
  9. 【請求項9】あるプロセッサ上で実行中のスレッドが終
    了した際に、スレッド記述子記憶装置内に記憶された複
    数のスレッド記述子の中で、当該プロセッサで前記待ち
    状態にあるスレッド記述子の中で最も下に位置するスレ
    ッド記述子と、それより下に位置する複数のスレッド記
    述子であって、他のプロセッサ上で待ち状態にあるスレ
    ッド記述子以外のスレッド記述子とを送出可能と定義
    し、これら送出可能なスレッド記述子の中から一つのス
    レッド記述子を選択し、当該スレッド記述子を当該プロ
    セッサに送出することを特徴とする請求項6記載の順序
    付きマルチスレッド実行装置の制御方法。
  10. 【請求項10】複数のプロセッサに対して、これらのプ
    ロセッサ上で実行中状態にある複数のスレッドの間の仮
    想スレッド番号の相対的な大小関係に基づく順序関係を
    示すプロセッサ間順序関係情報を記憶し、複数のプロセ
    ッサに関するスレッド記述子ポインタが同じ前記スレッ
    ド記述子スロットを指示する場合に、前記プロセッサ間
    順序関係情報を用いて、当該複数のプロセッサ上で前記
    実行中状態にある複数のスレッド間の仮想スレッド番号
    に基づく順序関係を判断することを特徴とする請求項6
    記載の順序付きマルチスレッド実行装置。
  11. 【請求項11】スレッド記述子記憶装置内のスレッド記
    述子スロットの数を越えるスレッド記述子がフォーク動
    作により生成された際に、前記フォーク動作を行なった
    プロセッサに当該スレッド記述子に対応するスレッドを
    逐次的に実行させることを特徴とする請求項5または6
    記載の順序付きマルチスレッド実行装置の制御方法。
  12. 【請求項12】あるプロセッサ上で実行中のスレッドが
    待ち状態になった際もしくは終了した際に、当該プロセ
    ッサに次に実行するスレッドを指示するためにスレッド
    記述子記憶装置からスレッド記述子を送出するにあたっ
    て、送出可能な複数のスレッド記述子の内、対応する仮
    想スレッド番号が最も小さなスレッド記述子を選択する
    ことを特徴とする請求項8または9記載の順序付きマル
    チスレッド実行装置の制御方法。
  13. 【請求項13】あるプロセッサ上で実行中のスレッドが
    待ち状態になった際もしくは終了した際に、当該プロセ
    ッサに次に実行するスレッドを指示するためにスレッド
    記述子記憶装置からスレッド記述子を送出するにあたっ
    て、送出可能な複数のスレッド記述子の内、対応する仮
    想スレッド番号が最も大きなスレッド記述子を選択する
    ことを特徴とする請求項8または9記載の順序付きマル
    チスレッド実行装置の制御方法。
  14. 【請求項14】あるプロセッサ上で実行中のスレッドが
    待ち状態になった際もしくは終了した際に、当該プロセ
    ッサに次に実行するスレッドを指示するためにスレッド
    記述子記憶装置からスレッド記述子を送出するにあたっ
    て、送出可能な複数のスレッド記述子のなかに前記待ち
    状態のスレッドのスレッド記述子が含まれている場合
    は、当該スレッド記述子を選択し、それ以外の場合は対
    応する仮想スレッド番号が最も小さなスレッド記述子を
    選択することを特徴とする請求項8または9記載の順序
    付きマルチスレッド実行装置の制御方法。
  15. 【請求項15】あるプロセッサ上で実行中のスレッドが
    待ち状態になった際もしくは終了した際に、当該プロセ
    ッサに次に実行するスレッドを指示するためにスレッド
    記述子記憶装置からスレッド記述子を送出するにあたっ
    て、送出可能な複数のスレッド記述子のなかに前記待ち
    状態のスレッドに対するスレッド記述子が含まれている
    場合は、対応する仮想スレッド番号が最も小さなスレッ
    ド記述子を選択し、それ以外の場合は対応する仮想スレ
    ッド番号が最も大きなスレッド記述子を選択することを
    特徴とする請求項8または9記載の順序付きマルチスレ
    ッド実行装置の制御方法。
  16. 【請求項16】あるプロセッサ上で実行中の前記スレッ
    ドが待ち状態になった際もしくは終了した際に、当該プ
    ロセッサに次に実行するスレッドを指示するためにスレ
    ッド記述子記憶装置からスレッド記述子を送出するにあ
    たって、スレッド記述子記憶装置内に存在する待ち状態
    のスレッドに対するスレッド記述子の数と実行可能状態
    のスレッドに対するスレッド記述子の数を比較し、当該
    の比較結果により、送出可能な複数のスレッド記述子の
    内のどのスレッド記述子を選択するかを動的に定めるこ
    とを特徴とする請求項8または9記載の順序付きマルチ
    スレッド実行装置の制御方法。
  17. 【請求項17】あるプロセッサ上で実行中の前記スレッ
    ドが待ち状態になった際もしくは終了した際に、当該プ
    ロセッサに次に実行するスレッドを指示するためにスレ
    ッド記述子記憶装置からスレッド記述子を送出するにあ
    たって、スレッド記述子記憶装置内に存在する待ち状態
    のスレッドに対するスレッド記述子の数と実行可能状態
    のスレッドに対するスレッド記述子の数を比較し、待ち
    状態スレッドに対するスレッド記述子の方が多い場合は
    送出可能な複数のスレッド記述子の内、対応する仮想ス
    レッド番号が最も小さなスレッド記述子を選択し、実行
    可能状態のスレッドに対するスレッド記述子の数が多い
    場合は、対応する仮想スレッド番号が最も大きなスレッ
    ド記述子を選択することを特徴とする請求項16記載の
    順序付きマルチスレッド実行装置の制御方法。
  18. 【請求項18】前記スレッド記述子スロットに付随させ
    て送出可能フラグスロットを設け、 あるプロセッサ上で実行中のスレッドが待ち状態になっ
    た際に、スレッド記述子記憶装置内で、当該プロセッサ
    に対応するスレッド記述子ポインタを用いて指示される
    スレッド記述子スロットより下の位置の複数のスレッド
    記述子スロットに記憶された複数のスレッド記述子の中
    で、前記実行可能状態にある複数のスレッド記述子を送
    出可能と判断し、あるいは、 あるプロセッサ上で実行中のスレッドが終了した際に、
    スレッド記述子記憶装置内に記憶された複数のスレッド
    記述子の中で、当該プロセッサで前記待ち状態にあるス
    レッド記述子の中で最も下に位置するスレッド記述子
    と、それより下に位置する複数のスレッド記述子であっ
    て、他のプロセッサ上で待ち状態にあるスレッド記述子
    以外のスレッド記述子と、を送出可能と判断し、 送出可能と判断されたスレッド記述子の中で、更にこの
    送出可能フラグスロットに送出可能フラグがセットされ
    たスレッド記述子スロットに格納されたスレッド記述子
    のみを送出可能と限定し、これらの限定された送出可能
    な複数のスレッド記述子の中から一つを選択し、当該プ
    ロセッサに当該スレッド記述子を送出することを特徴と
    する請求項5の順序付きマルチスレッド実行装置。
  19. 【請求項19】実行可能状態スレッド記述子送出可能化
    装置を有し、この装置は、ある一つのスレッドからフォ
    ークされて前記スレッド記述子記憶装置に格納されてい
    る実行可能状態のスレッド記述子の中で、最も先にフォ
    ークされたスレッド記述子に対して、対応する送出可能
    フラグスロットに送出可能フラグをセットするように働
    くことを特徴とする請求項18記載の順序付きマルチス
    レッド実行装置。
  20. 【請求項20】複数のプロセッサに対してそれぞれのス
    レッドスイッチフラグを記憶し、このスレッドスイッチ
    フラグは、当該プロセッサ上で実行中状態にあるスレッ
    ドが、その実行開始後にスレッドをフォークしていない
    場合にのみセットされていることを特徴とする請求項1
    9記載の実行可能状態スレッド記述子送出可能化装置。
  21. 【請求項21】待ち状態スレッド記述子送出可能化装置
    を有し、この待ち状態スレッド記述子送出可能化装置
    は、前記スレッド記述子記憶装置に格納されている待ち
    状態のスレッド記述子の中で、同期待ちが成立したスレ
    ッド記述子に対して、対応する送出可能フラグスロット
    に送出可能フラグをセットするように働くことを特徴と
    する請求項18記載の順序付きマルチスレッド実行装
    置。
  22. 【請求項22】同期バッファを有し、この同期バッファ
    は同期待ちがまだ成立していない待ち状態スレッド記述
    子とこれに対応する同期待ちのアドレスの対を一組にし
    て、これらの組を複数個格納し、これらの格納された同
    期待ちのアドレスを用いて、同期付き書き込み時に、待
    ち状態のスレッド記述子の同期待ちが成立したかどうか
    を検査することを特徴とする請求項21記載の待ち状態
    スレッド記述子送出可能化装置。
  23. 【請求項23】限定された送出可能なスレッド記述子の
    内、最も上位または最も下位に位置するスレッド記述子
    を送出することを特徴とする請求項18記載の順序付き
    マルチスレッド実行装置。
JP04153895A 1994-12-20 1995-03-01 順序付きマルチスレッド実行方法とその実行装置 Expired - Fee Related JP3231571B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP04153895A JP3231571B2 (ja) 1994-12-20 1995-03-01 順序付きマルチスレッド実行方法とその実行装置
GB9526033A GB2296355A (en) 1994-12-20 1995-12-20 Parallel processor system for multi-thread program
US08/575,860 US5815727A (en) 1994-12-20 1995-12-20 Parallel processor for executing plural thread program in parallel using virtual thread numbers

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6-317162 1994-12-20
JP31716294 1994-12-20
JP04153895A JP3231571B2 (ja) 1994-12-20 1995-03-01 順序付きマルチスレッド実行方法とその実行装置

Publications (2)

Publication Number Publication Date
JPH08227364A true JPH08227364A (ja) 1996-09-03
JP3231571B2 JP3231571B2 (ja) 2001-11-26

Family

ID=26381179

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04153895A Expired - Fee Related JP3231571B2 (ja) 1994-12-20 1995-03-01 順序付きマルチスレッド実行方法とその実行装置

Country Status (3)

Country Link
US (1) US5815727A (ja)
JP (1) JP3231571B2 (ja)
GB (1) GB2296355A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100380909B1 (ko) * 2000-04-28 2003-04-18 엔이씨 일렉트로닉스 코포레이션 외형 검사 장치 및 외형 검사 방법
US6687812B1 (en) 1999-04-20 2004-02-03 Nec Corporation Parallel processing apparatus
JP2007517322A (ja) * 2003-12-29 2007-06-28 インテル・コーポレーション プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
GB2345555A (en) * 1999-01-05 2000-07-12 Ibm Controlling device access in a network
US6675371B1 (en) * 1999-04-30 2004-01-06 Hewlett-Packard Development Company, L.P. Java and native application window integration
JP2001147819A (ja) * 1999-11-19 2001-05-29 Fujitsu Ltd 最適化装置および記録媒体
US7512724B1 (en) * 1999-11-19 2009-03-31 The United States Of America As Represented By The Secretary Of The Navy Multi-thread peripheral processing using dedicated peripheral bus
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
JP2001265609A (ja) * 2000-03-16 2001-09-28 Omron Corp 演算処理装置
US7343602B2 (en) * 2000-04-19 2008-03-11 Hewlett-Packard Development Company, L.P. Software controlled pre-execution in a multithreaded processor
JP3810631B2 (ja) * 2000-11-28 2006-08-16 富士通株式会社 情報処理プログラムを記録した記録媒体
US6944850B2 (en) * 2000-12-21 2005-09-13 Intel Corporation Hop method for stepping parallel hardware threads
US7178137B1 (en) 2001-04-05 2007-02-13 Network Appliance, Inc. Automatic verification of scheduling domain consistency
US7694302B1 (en) * 2001-04-05 2010-04-06 Network Appliance, Inc. Symmetric multiprocessor synchronization using migrating scheduling domains
US7299470B2 (en) * 2001-09-13 2007-11-20 International Business Machines Corporation Method and system for regulating communication traffic using a limiter thread
US7072970B2 (en) * 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
US7676588B2 (en) * 2001-10-05 2010-03-09 International Business Machines Corporation Programmable network protocol handler architecture
WO2003102758A1 (en) * 2002-05-31 2003-12-11 University Of Delaware Method and apparatus for real-time multithreading
US6965986B2 (en) * 2002-09-19 2005-11-15 International Business Machines Corporation Method and apparatus for implementing two-tiered thread state multithreading support with high clock rate
US7096470B2 (en) * 2002-09-19 2006-08-22 International Business Machines Corporation Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
US7640535B2 (en) * 2003-01-24 2009-12-29 Bea Systems, Inc. Method for transaction processing with parallel execution
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7039914B2 (en) * 2003-03-07 2006-05-02 Cisco Technology, Inc. Message processing in network forwarding engine by tracking order of assigned thread in order group
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US20050047439A1 (en) * 2003-08-26 2005-03-03 Madajczak Tomasz Bogdan System to process packets according to an assigned sequence number
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US7000048B2 (en) * 2003-12-18 2006-02-14 Intel Corporation Apparatus and method for parallel processing of network data on a single processing thread
US7669203B2 (en) * 2003-12-19 2010-02-23 Intel Corporation Virtual multithreading translation mechanism including retrofit capability
US8171480B2 (en) * 2004-01-27 2012-05-01 Network Appliance, Inc. Method and apparatus for allocating shared resources to process domains according to current processor utilization in a shared resource processor
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
US7389297B1 (en) * 2004-09-02 2008-06-17 Sun Microsystems, Inc. Method for exit negotiation with aggregate application descendents
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7743233B2 (en) * 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
AT502033B1 (de) * 2005-10-04 2007-01-15 Tober Hubert Vorrichtung und verfahren zum erfassen der temperaturverteilung an der lauffläche eines rades eines schienenfahrzeuges
US8347293B2 (en) * 2005-10-20 2013-01-01 Network Appliance, Inc. Mutual exclusion domains to perform file system processes on stripes
GB2443507A (en) * 2006-10-24 2008-05-07 Advanced Risc Mach Ltd Debugging parallel programs
JP5595633B2 (ja) * 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
US7725659B2 (en) * 2007-09-05 2010-05-25 International Business Machines Corporation Alignment of cache fetch return data relative to a thread
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8910171B2 (en) * 2009-04-27 2014-12-09 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
US8627331B1 (en) 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US8367460B2 (en) 2010-06-22 2013-02-05 Micron Technology, Inc. Horizontally oriented and vertically stacked memory cells
US8572628B2 (en) 2010-12-02 2013-10-29 International Business Machines Corporation Inter-thread data communications in a computer processor
EP3767481A1 (de) 2019-07-19 2021-01-20 PLS Patent-, Lizenz- und Schutzrechte Verwertung GmbH Prozessor
CN113014528B (zh) * 2019-12-19 2022-12-09 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器
CN112000471B (zh) * 2020-08-10 2023-10-27 Vidaa(荷兰)国际控股有限公司 内存优化方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6385858A (ja) * 1986-09-30 1988-04-16 Agency Of Ind Science & Technol 手続の並列実行管理方式
JPH04367942A (ja) * 1991-06-17 1992-12-21 Fuji Facom Corp システムの動作管理処理装置
JPH05151064A (ja) * 1991-11-29 1993-06-18 Yokogawa Electric Corp 密結合マルチプロセツサシステム
JPH0651980A (ja) * 1992-07-28 1994-02-25 Fuji Xerox Co Ltd 情報処理装置のスタックの配置方式
JPH06318191A (ja) * 1993-05-10 1994-11-15 Fujitsu Ltd マルチスレッド処理方式

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
JPH0784851A (ja) * 1993-09-13 1995-03-31 Toshiba Corp 共有データ管理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6385858A (ja) * 1986-09-30 1988-04-16 Agency Of Ind Science & Technol 手続の並列実行管理方式
JPH04367942A (ja) * 1991-06-17 1992-12-21 Fuji Facom Corp システムの動作管理処理装置
JPH05151064A (ja) * 1991-11-29 1993-06-18 Yokogawa Electric Corp 密結合マルチプロセツサシステム
JPH0651980A (ja) * 1992-07-28 1994-02-25 Fuji Xerox Co Ltd 情報処理装置のスタックの配置方式
JPH06318191A (ja) * 1993-05-10 1994-11-15 Fujitsu Ltd マルチスレッド処理方式

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687812B1 (en) 1999-04-20 2004-02-03 Nec Corporation Parallel processing apparatus
KR100380909B1 (ko) * 2000-04-28 2003-04-18 엔이씨 일렉트로닉스 코포레이션 외형 검사 장치 및 외형 검사 방법
JP2007517322A (ja) * 2003-12-29 2007-06-28 インテル・コーポレーション プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング

Also Published As

Publication number Publication date
JP3231571B2 (ja) 2001-11-26
US5815727A (en) 1998-09-29
GB2296355A (en) 1996-06-26
GB9526033D0 (en) 1996-02-21

Similar Documents

Publication Publication Date Title
JP3231571B2 (ja) 順序付きマルチスレッド実行方法とその実行装置
CN101833475B (zh) 用于执行指令原子块的方法和装置
KR100368350B1 (ko) 다중 스레드를 이용하는 처리 시스템과 다중 스레드 이용방법, 다중 독립 스레드 실행 방법과 스레드 실행 제어장치, 스레드와 연계한 프리페치 버퍼 이용 방법, 및스레드 실행 콘트롤러
JP4611830B2 (ja) データベース管理システム及び方法
US9229789B2 (en) Transparent user mode scheduling on traditional threading systems
US6973650B1 (en) Method of pipelined processing of program data
TWI221250B (en) Multi-processor system
US20050188177A1 (en) Method and apparatus for real-time multithreading
JP2002149424A (ja) 共有コプロセッサ・リソースに対する複数の論理インタフェース
KR20130012126A (ko) 예외 이벤트 처리 장치 및 방법
JPH05282264A (ja) 自己並列化式のコンピュータ・システムと方法
JPH0997189A (ja) 共有資源の排他制御方式
JP2005284749A (ja) 並列処理コンピュータ
JPH0766329B2 (ja) 情報処理装置
US20150052529A1 (en) Efficient task scheduling using a locking mechanism
US20230315526A1 (en) Lock-free work-stealing thread scheduler
JPH05282266A (ja) 自己編成式並列コンピュータ・システムおよびその方法
JP2000047887A (ja) 投機的マルチスレッド処理方法および投機的マルチスレッド処理装置
JP2007517322A (ja) プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング
JP4253796B2 (ja) コンピュータ及び制御方法
CN115408117A (zh) 协程运行方法、装置、计算机设备和存储介质
JP2684993B2 (ja) プロセッサシステムとその制御方法
JP4631442B2 (ja) プロセッサ
JP3006676B2 (ja) マルチプロセッサ
JP5674850B2 (ja) データベース管理システム及び方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080914

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20080914

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090914

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090914

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100914

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110914

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120914

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20130914

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees