JPH0612386A - プロセス内のスレッドを同期するための方法およびシステム - Google Patents

プロセス内のスレッドを同期するための方法およびシステム

Info

Publication number
JPH0612386A
JPH0612386A JP5071602A JP7160293A JPH0612386A JP H0612386 A JPH0612386 A JP H0612386A JP 5071602 A JP5071602 A JP 5071602A JP 7160293 A JP7160293 A JP 7160293A JP H0612386 A JPH0612386 A JP H0612386A
Authority
JP
Japan
Prior art keywords
state
thread
cache
data
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5071602A
Other languages
English (en)
Inventor
Steven Lee Gregor
スティーブン・リー・グレガー
Robert A Iannucci
ロバート・アラン・イアナッチ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0612386A publication Critical patent/JPH0612386A/ja
Pending 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 プロセス中のスレッドの要素の実行を同期す
る方法・システムに関する。 【構成】 スレッドの実行前に、その実行に関する全て
の要素がそのスレッドに係わるローカルキャッシュ中に
そろっているかどうかが決定される。もしそろっていれ
ば実行を開始するが、そろっていないときは、該当する
リソースが主記憶からフェッチされその実行開始前にロ
ーカルキャッシュに格納される。その場合に、スレッド
の中の一の命令実行中にその命令がデータを要求するこ
とがありえる。そのような事象が発生するとその要求さ
れたデータが使用可能かどうかを判断しなければならな
い。データが使用可能な場合は、その命令実行の結果が
ストアされスレッドの実行が継続されるが、そうでない
場合はそのスレッドの実行は中断され別のスレッドの実
行が開始される。中断に係わるスレッドは特別なメモリ
一に格納され、中断の理由となった不足データの到着を
待つ。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、一般的には、並列デ
ータ処理システムにおけるデータ同期、より具体的に
は、処理要素(プロセッサエレメント)によって実行さ
れるプロセスにおけるスレッドの同期に関する。
【0002】
【従来の技術】並列データ処理システムにおいて、実行
されるプログラムは、複数の処理要素によって並列に実
行される多数のプロセスに分割される。それぞれのプロ
セスは一以上のスレッドを含み、各スレッドは順次実行
可能な命令のグループを有する。多数のスレッドの同時
実行は、それぞれのスレッドに関連する活動の同期(時
間調整)を必要とする。同期なしには、プロセッサは、
それが必要とするデータを待つ長時間アイドル状態に保
たれることとなり、システムの性能や使用効率が低下す
る。
【0003】一つのプロセス内に位置するスレッドは、
他のプロセスまたは同一のプロセス内にあるスレッドと
通信する能力を有する。従って、システム性能が高度で
ある効率的実行システムを達成するためには、種々の水
準の同期が必要とされる。
【0004】異なったプロセスに置かれたスレッドの通
信を同期させるために、I-Structure のような同期メカ
ニズムを通用することができる。I-Structure は主記憶
装置で使用され、「I−構造体:並列計算のためのデー
タ構造」( I-structures: Data Structures for Parall
el Computing")(アーヴィント、R.S.ニックヒル、
K.K.ピンガーリ著、マサチューセッツ工科大学コン
ピュータ科学研究室、1987年2月)の中で記述され
ている。
【0005】
【発明が解決しようとする課題】異なったプロセス間で
通信するスレッド間の同期と同様、同じプロセス内のス
レッド間の同期を達成する同期メカニズムも必要であ
る。従って、一つのプロセス内のスレッドを同期し、そ
れによってより高いシステム使用効率と性能を確保する
効率的な方法が必要である。スレッドが実行される処理
要素に対して同期メカニズムがローカルであるプロセス
においても、スレッドの同期メカニズムが必要である。
さらに、ローカルメモリ容量の制約によって実行される
プロセスやスレッドの数が制約されることがない同期メ
カニズムの必要性が存在する。
【0006】本発明による一のプロセス内のスレッドの
同期のための方法およびシステムの提供によって、従来
技術の欠点が克服され、付加的な利点が提供される。
【0007】
【課題を解決するための手段】この発明の原理によれ
ば、プロセス内のスレッドの処理要素による実行を同期
する方法が提供される。このプロセスは、プロセス内の
スレッドの実行中にローカルフレームキャッシュからデ
ータフィールドをフェッチし、状態ビットキャッシュか
ら関連する状態標識をフェッチするステップを含む。状
態標識は、スレッドが使用することが可能なデータをそ
のデータフィールドが含むかどうかを決定するのに使用
される第1の状態値を有する。若し、データが使用不可
能ならば、スレッドの実行は、データが使用可能となる
まで据え置かれる。
【0008】一実施例では、スレッドは継続記述子によ
り表されており、スレッドを据え置くステップはデータ
フィールド内の継続記述子を保管するステップを含む。
【0009】さらに他の実施例では、スレッドを同期す
る方法は、データがそのスレッドのために使用可能にな
る時、実行が据置かれたスレッドを実行開始するステッ
プを含む。このステップは、データフィールド内に保管
されている継続記述子の除去のステップとフィールドへ
のデータの配置のステップとを含む。
【0010】この発明の他の態様では、プロセス内のス
レッドの処理要素による実行を同期するためのシステム
が提供される。そのシステムは、ローカルフレームキャ
ッシュおよび状態ビットキャッシュを有し、プロセス内
のスレッドを処理要素により実行するための手段、およ
びローカルフレームキャッシュからデータフィールドを
フェッチするとともに、状態ビットキャッシュから関連
した状態標識をフェッチするための手段を有する。状態
標識は第1の状態値を有し、システムが第1の状態値に
基づいて、スレッドによる使用のために選択可能なデー
タをデータフィールドが含むかどうかを決定するための
手段を含む。若し、データが選択不可能であるならば、
データが選択可能となるまでスレッドの実行を据え置く
ための手段が設けられる。
【0011】一実施例では、前記システムはさらに、状
態標識をスレッドの実行中は第1の状態から第2の状態
に変更する手段を含む。第1の状態は現在の状態を示
し、第2の状態は次の状態を示す。
【0012】この発明の他の態様では、一のプロセス内
のスレッドの処理要素による実行を同期するための方法
が提供される。それぞれのスレッドは複数の命令を含ん
でおり、この方法は一つの命令を実行するためのもので
ある。命令の実行中、少なくとも一つのソースオペラン
ドがローカルフレームキャッシュからフェッチされ、少
なくとも一つの第1の状態を有する対応する状態標識が
状態ビットキャッシュからフェッチされる。また、少な
くとも一つのフェッチされたソースオペランドと関連す
る少なくとも一つの状態機能が命令からフェッチされ
る。状態機能は、状態標識のために、複数のテーブルの
一つからN個の可能な第2の状態を選択するのに使用さ
れる。ここで第2の状態はそれに関連するフラグ標識を
有している。第1の状態は、選択されたN個の可能な状
態から第2の状態を選択するのに使用され、第2の状態
はスレッドの実行中に第1の状態ととって代わる。フラ
ッグ標識はスレッドが実行するように複数のアクション
の一つを特定する。
【0013】この発明の原理に従って、プロセッサ内の
スレッドを同期するための方法とシステムが提供され
る。この発明の同期メカニズムは、スレッドのためのデ
ータが選択不可能な時にスレッドの実行を延期し、それ
によって別のスレッドが実行されるのを可能とする。こ
れにより、システム使用効率およびシステム実行の向上
が可能となる。
【0014】
【実施例】図1に示されるように、この発明による同期
メカニズムは、並列データ処理システム10中に存在す
る。一実施例では、並列データ処理システム10が1以
上の主記憶装置制御ユニット12、複数の処理要素(P
E)14および複数の入力/出力プロセッサ(I/O
P)16を有している。処理要素14は、相互接続ネッ
トワーク18を介して互いに通信し、また、主記憶装置
制御ユニット12と入力/出力プロセッサ16と通信す
る。主記憶装置制御ユニット12(又は主記憶装置)お
よび処理要素14が関連する主たる構成要素の一例は、
以下詳細に説明される。
【0015】主記憶装置制御ユニット12のそれぞれ
は、順次アドレス決めされる線形なメモリアドレス空間
(図示せず)の一部を含む。アドレス空間に記憶された
情報の基本ユニットは、全ての主記憶装置制御ユニット
に渡って一意的なアドレスを有する1ワード(又はメモ
リロケーション)である。連続するワード又はメモリロ
ケーションは、ローカルフレーム20(図2)、コード
フレーム22およびワークフレーム23のような論理構
造へ結合される。一実施例では、ローカルフレーム20
とワークフレーム23が一般的にデータワードのグルー
プと関連し、コードフレーム22が命令のグループと関
連する。主記憶装置制御ユニット12内に複数のローカ
ルフレーム、ワークフレームおよびコードフレームが存
在しうる。一実施例では、特定のフレームがプロセスと
関連し、その結果、ローカルフレームのアドレスがプロ
セスの識別子して使用される。
【0016】図3を参照すると、一例では、ローカルフ
レーム20が256個のローカルフレームロケーション
24を有する。処理要素14の一つにより実行されるプ
ロセスと関連付けられるインボケーションコンテキスト
マップエントリーのために最初の4個のロケーションが
確保される。その次の2個のスロットは、ここでは論じ
られない機能のために確保され、ロケーションの残り
(6から255)がプロセスに対してローカルなデータ
のために確保される。インボケーションコンテキストマ
ップエントリー26に含まれる情報がプロセスのインス
タンス化に先立って確立される。このロケーションは、
一例として次のフィールドを含む。
【0017】(a)3ビットの状態標識(ST)28。
これは、ローカルフレームロケーションの現在状態を示
す。後述のように、フレームロケーションをアクセスす
るのに使用される、状態機能と状態標識28が関連して
いる。
【0018】(b)12ビットの物理的な処理要素(P
E)の番号30。これは、どの処理要素がプロセスを実
行するかを識別する。
【0019】(c)3ビットの処理状態(PS)32。
これは、関連するプロセスの状態を識別する。プロセス
は、多数の状態のいずれか一つを持ちうる。すなわち、
一例として、そのプロセスがもはや活動状態ではないこ
とを示す「自由状態」、プロセスが実行されることを阻
止するのに使用される「非活動状態」、プロセスに対す
るなんらかの変更を阻止し、一例としてオペレーティン
グシステムが回復を行う「延期状態」、プロセスが実行
可能であり、それが主記憶装置に存在することを示す
「主記憶装置内の活動状態」、あるいはプロセスが実行
可能であり、プロセスの実行のために割り当てられた処
理要素内に在ることを示すのに使用される「主記憶装置
内でない活動状態」である。
【0020】(d)2ビットのローカルフレームの状態
(FS)34。これは、ローカルフレーム20の状態を
識別する。ローカルフレーム20は、例えば以下の状態
の一つをとりうる。
【0021】ローカルフレームが主記憶装置内に存在す
ることを表す「存在(present) 状態」。ローカルフレー
ムが主記憶装置と、処理要素番号30により識別され
る、処理要素に対してローカルなメモリとの間で遷移的
であることを表す「遷移(transient) 状態」。ローカル
フレーム20に対する参照が物理的処理要素番号30に
より示される、処理要素のローカルメモリにリダイレク
トされることを示す「不在(absent)状態」。
【0022】(e)1ビット呼出しコンテキスト待ち行
列制御(ICQC)36。これは、導入時に、プロセス
が呼出しコンテキスト待ち行列(後述する)上にエンキ
ューされる仕方を示す。
【0023】(f)1ビットキャッシュ固定制御(CP
C)37。これは、処理要素内に位置指定されるコード
フレームあるいはローカルフレームのどちらが固定され
るかを示す(例えば後述する、コードフレームキャッシ
ュあるいはローカルフレームキャッシュ内に)。
【0024】(g)8ビットローカル継続待ち行列先頭
(LCQH)ポインタ38。これは、ワークフレーム2
3(図2)の最初のエントリーへのオフセットを含む。
これは、ローカルフレーム20(後述する)に対して連
続するメモリロケーション内に存在する。
【0025】(h)8ビットローカル継続待ち行列末尾
(LCQT)40。これは、ワークフレーム23の終端
における最初の空きエントリーへのオフセットを含む。
【0026】(i)40ビット呼出しコンテキスト待ち
行列(ICQ)正方向ポインタ42。これは、処理要素
番号30で識別される処理要素用の主記憶装置内で、プ
ロセスの二重連係リスト(呼出しコンテキスト待ち行列
と称する)を作成するのに使用される。呼出しコンテキ
スト待ち行列は、処理要素内に保持されている先頭およ
び末尾を有し、それは、呼出しコンテキスト待ち行列制
御36により示されるエンキュー規則に基づいて順序付
けられている。
【0027】(j)40ビット呼出しコンテキスト待ち
行列(ICQ)逆方向ポインタ44。これも、プロセス
の呼出しコンテキスト待ち行列を作成するのに用いられ
る。
【0028】(k)40ビットコードフレームポインタ
46。これは、現在コードフレーム22(図2)のアド
レスを特定する。
【0029】上述したように、ローカルフレーム20の
ロケーションの6から255までは、データ用として確
保される。各データエントリー48は、状態標識28お
よび64ビットデータフィールド50を含む。データフ
ィールド50は、プロセスの実行中に使用されるデータ
を含む。
【0030】再び図2を参照すると、ワークフレーム2
3と称する論理構造が各ローカルフレーム20に対して
結合される。ワークフレーム23は、ローカルフレーム
20の次の256個の連続するロケーションに割り当て
られる。ローカルフレーム20およびワークフレーム2
3は、単一のエンティティーとして管理される。一例と
して、ワークフレーム23(図4A)の最初の64個の
エントリあるいはロケーション52が1以上の圧縮継続
記述子(CCD)54を含む。これは、後述のように、
実行される命令あるいは命令によって使用されるデータ
を選択するのに使用される。各圧縮継続記述子54は、
例えばコードオフセット56および指標58(後述す
る)を有する。これに対して、圧縮されてない継続記述
子がローカルフレーム20の最初を指示するローカルフ
レームポインタ60(図4B)を有する。圧縮連続記述
子は、それがローカルフレーム/ワークフレームペアの
主記憶装置アドレスから推定できるので、ローカルフレ
ームポインタを記憶する必要がない。一実施例では、ワ
ークフレーム23の各ロケーション52が4個の圧縮連
続記述子を保管することができる。
【0031】再度、図2を参照すると、ローカルフレー
ム20中に組み込まれた呼出しコンテキストマップエン
トリ26のコードフレームポインタ46を介して、ロー
カルフレーム/ワークフレームペアがコードフレーム2
2と結合される。コードフレーム22は、一例として、
256個のコードフレームロケーション62(図5)を
含み、各ロケーションが処理要素番号30により指示さ
れるように、処理要素14によって実行されるプロセス
と関連している、ワードサイズの命令64あるいはイン
ライン定数(図示せず)を含む。命令あるいは定数(定
数用データは、コードフレーム生成時に保管される)を
コードフレームへロードする結果として、コードフレー
ムが不変であり、従って、他のプロセスおよび処理要素
によって共有される。一実施例では、16ワードブロッ
クの連続的にアドレス指定され、連続するグループでも
って、コードフレーム22が主記憶装置内に管理されて
いる。これによって、処理要素(例えば後述のコードフ
レームキャッシュ)内のローカルなメモリロケーション
へ主記憶装置内のコードフレームの効率的な転送が可能
となる。
【0032】図6Aを参照すると、命令64が例えば6
4ビット長で以下のフィールドを含む。
【0033】(a)8ビット命令操作コード66。これ
は、処理要素によって実行される操作を規定する。操作
コードは、演算/論理ユニットと命令順序付けとを制御
する。さらに、これは、ネットワーク要求生成も制御す
る。
【0034】(b)2ビットスレッド制御(TC)6
8。これは、スレッドが実行されている処理要素内の現
在スレッドとその後続オペレーション(実行可能な命令
の1以上のスレッドをプロセスが含む)のための順次制
御を規定する。順序付けは、一例として、順次命令ディ
スパッチ、予防延期サブモード、あるいはスレッドの終
了である。それぞれについてここで説明する。
【0035】順次命令ディスパッチは、処理要素により
実行されているスレッドの命令の順次ディスパッチを行
う実行モードである。
【0036】予防延期サブモードは、スレッド内の命令
の処理要素への初期ディスパッチ時に現在スレッドの延
期を生じさせる。命令が連続的に実行されているとする
と、スレッドは、コードオフセットに+1した位置に現
在プロセスのローカル継続待ち行列に対して、後入れ先
出しの形態で、再エンキューされる(後述する)。若
し、スレッドがソースオペランド参照上に保留している
ならば、後述のように、この時にスレッドを再エンキュ
ーすることが生じないで、スレッドの据え置きが生じ
る。命令の実行に引き続いて新たなスレッドが処理要素
内へディスパッチされる。
【0037】スレッドの終了は、処理要素に対して当該
命令の実行後に現在のスレッドが終了することを示す。
スレッドの完了が検出される時に、処理要素が実行され
る次の選択可能なスレッドへ切り換えられる。このスレ
ッドは、処理要素への現在プロセスの処理ディスパッチ
の後にLIFO(後入れ先出し)にエンキューされてい
る、同一のプロセスあるいはより高い優先度のプロセス
からのものであろう。
【0038】(c)2ビット指標インクリメント制御
(X)70。これは、現在の継続記述子中の指標の値5
8(図4A、図4B)のインクリメントを制御する。指
標インクリメント制御70が非ゼロの値に設定されてい
る時に、指標58が現在の命令の実行後で、同一スレッ
ドの次の命令の実行の前に更新される。
【0039】一例では、指標インクリメント制御70が
この命令から次のものまで、指標58の値が不変である
ことを示し、あるいはインクリメント可能な値が+1あ
るいは−1であることを示す。
【0040】(d)16ビット宛先特定子72。これ
は、例えば命令実行の結果の目標を示すアドレスであ
る。
【0041】(e)16ビットソースオペランド0特定
子74および16ビットソースオペランド1特定子7
6。ソースオペランド特定子74、76は、処理要素内
の機能の実行のために、ソースオペランドが得られるこ
とを可能とするアドレスである。
【0042】宛先特定子72およびソースオペランド特
定子74および76のそれぞれが図6Bに示されるよう
に、以下のフィールドを含む。
【0043】(a)4ビットアドレス指定モードフィー
ルド(AM)78。これは、命令オペランドと宛先特定
子のために、種々のソース(例えば符号付きリテラル、
指標付けされた符号付きリテラル、ローカルフレームキ
ャッシュ(後述する)あるいは指標付けされたローカル
フレームキャッシュを含む)を符号化するために使用さ
れる。アドレス指定モードは、指標付けられたオペラン
ドアドレス指定が使用されるかどうかも符号化する。
【0044】(b)4ビット状態機能フィールド(S
F)80。一実施例では、ローカルフレームキャッシュ
(さらに後述する)内のロケーションをアクセスする命
令が各ソーススオペランド特定子および宛先特定子のた
めに、その特定子により使用される同期機能を示すのに
使用される状態機能を含む。この発明の原理によれば、
多数の同期機能がサポートされ、従って、選択可能な同
期機能のそれぞれと関連する状態機能が存在する。各状
態機能によって、例えば一つが読出しアクセス用であ
り、他のものが書込みアクセス用である、二つの解釈が
可能である。この発明によりサポートされうる同期機能
の例は、1回作成者・多数使用者(OPMC)であり、
これは、I-Structure に類似し、一回書込み特性を有す
る。それは、多数の命令により使用されるデータ値の生
成に関連し、また、多数作成者・単一使用者は、一つの
スレッドにより使用されるいくつかのデータ値の作成に
関連する。一実施例では、後で詳細に述べるように、結
果としてのアクションは、適用された状態機能、ローカ
ルフレームロケーションの現在状態とアクセスタイプ、
読出しあるいは書込みとに依存する。
【0045】状態機能フィールドは、アドレス指定モー
ド78が例えばリテラルオペランドを選択する時に無視
される。
【0046】(c)8ビットフレームオフセット82。
これは、ソース/宛先特定子のアドレス指定モードによ
って選択される、ローカルフレームキャッシュ(後述す
る)内のアクセス可能なローカルフレームの一つに対す
るオフセットあるいはリテラルオペランドとして解釈さ
れる。より完全に以下に説明するように、フレームオフ
セット82がフレームオフセットとして使用される時
に、それは直接的に使用されるか、あるいは現在の継続
記述子からの指標58の値に対して初期的に加算(mod.2
56) されうる。一実施例では、それは、それからアドレ
ス指定モード78により示されるローカルフレームポイ
ンタ60に対して追加され、また、ローカルフレームキ
ャッシュ内のローカルフレームアクセスが後述のよう
に、状態機能80の制御の下で試みられる。
【0047】主記憶装置制御ユニット12内の各コード
フレーム22は存在あるいは不在の状態にありうる。こ
れらの状態の存在は、ソフトウェアによって管理され
る。不在状態は、コードフレームが主記憶装置内にない
ことを示し、従って、不在コードフレームを要求するプ
ロセスがインスタンス化されるのが阻止される。存在状
態は、コードフレームが主記憶装置に存在することを示
し、従って、処理要素からのインページ要求がサービス
される。コードフレームがこの状態になると、フレーム
がもはや要求されなくなるまで、それはこの状態にとど
まり、また、ソフトウェアの管理の下で、それが空き記
憶域へ戻される。
【0048】再び、図1を参照すると、相互接続ネット
ワーク18(図1)を介して主記憶装置制御ユニット1
2が処理要素14と結合される。この発明の原理に従っ
て、各処理要素14と関連するハードウエア構成要素の
一例が図7に示され、これは、実行可能待ち行列84、
ローカル継続待ち行列86、フレームキャッシュ88、
ローカルフレームキャッシュ90、状態ビットキャッシ
ュ91、および実行ユニット92からなる。ここで、こ
れらの各構成要素を詳細に述べる。
【0049】実行可能待ち行列は、例えば実質的には待
ち行列として構成された完全な連想メモリであり、呼出
しコンテキスト待ち行列制御36により特定される、実
行可能待ち行列のエンキュー規則によって、その先頭あ
るいは末尾に、エンキューされることができる。実行可
能待ち行列84は、処理要素14により実行されるプロ
セスあるいは呼出しと対応する、多数の待ち行列エント
リ94(図8)を含む。一例では、実行可能待ち行列8
4が16個の実行可能待ち行列エントリを含む。図8に
示し、以下に説明するように、各実行可能待ち行列94
が例えば下記のフィールドを含む。
【0050】(a)3ビット実行可能待ち行列(RQ)
状態95。これは、実行可能待ち行列エントリの現在状
態を示すのに使用される。各実行可能待ち行列エントリ
は、例えば以下のものを含む多数の状態の一つ中に存在
する。すなわち、エントリが未使用で選択可能である空
き(empty)、プロセスが処理要素により実行可能である
ことを示す待ち(waiting)、プロセスがプリテスト(よ
り後に述べる)を待っていることを示す保留プリテスト
(pending pretest) 、プロセスの実行のために要求され
る資源がフレームされること(これも後で詳細に説明す
る)を示すプリフェッチアクティブ(prefetch active)
、実行可能待ち行列エントリが有効であるが、プロセ
ス内のスレッドが処理要素へのディスパッチのために選
択可能でないことを示す就寝(sleeping)、実行可能待ち
行列エントリによって表されるプロセスからのスレッド
が処理要素により実行されていることを示す走行(runni
ng)である。
【0051】(b)ローカルフレームポインタ96は、
例えばローカルフレームキャッシュ90をアクセスする
のに使用される。これは、より詳細に以下に説明するよ
うに、プロセス実行に必要なデータを含む。さらに、ロ
ーカルフレームポインタ96は、ローカルフレームがロ
ーカルフレームキャッシュ内に存在するかどうかを決定
するのに使用される。ローカルフレームポインタ96が
ローカルフレームポインタ60のコピーであり、実行可
能待ち行列エントリが満杯とされる時にロードされる。
【0052】(c)ローカルフレームキャッシュ物理ポ
インタ97は、ローカルフレームキャッシュ90へのア
ドレスである。
【0053】(d)3ビットローカルフレームキャッシ
ュ状態98は、ローカルフレームキャッシュ20内のロ
ーカルフレームの現在状態を示すのに使用される。ロー
カルフレームキャッシュ内のローカルフレームは、例え
ば以下のものを含む多数の状態を有する。すなわち、そ
のローカルフレームのフレーム状態が不明あるいは存在
していないことを示す空き、ローカルフレームが現に、
主記憶装置制御ユニット12から処理要素14内のロー
カルフレームキャッシュ90へインページされているこ
とを示す遷移(transient) 、ローカルフレームがローカ
ルフレームキャッシュ90内に位置されていることを示
す存在(present) である。
【0054】(e)コードフレームポインタ99は、コ
ードフレームキャッシュ88をアクセスするのに使用さ
れる。コードフレームポインタ99は、ローカルフレー
ム20内に位置するコードポインタ46のコピーであ
る。
【0055】(f)コードフレームキャッシュ物理ポイ
ンタ100は、以下にさらに説明するように、コードフ
レームキャッシュ88の命令ブロックをアドレス指定す
るのに使用される。
【0056】(g)3ビットコードフレームキャッシュ
状態101は、コードフレームキャッシュ88内のコー
ドフレームの現在状態を決定するのに使用される。コー
ドフレームは、例えば以下の多数の状態を含む。すなわ
ち、特定コードのフレーム状態が不明あるいは存在して
いないことを示す空き、コードフレームが現に、主記憶
装置制御ユニット12から処理要素14内のコードフレ
ームキャッシュ88へインページされていることを示す
遷移、コードフレームがコードフレームキャッシュ88
内に位置されていることを示す存在である。
【0057】(h)ローカル継続待ち行列先頭ポインタ
102は、実行可能待ち行列エントリのそれぞれに位置
される。これは、以下により完全に説明するように、処
理要素内で実行される特定のプロセスのスレッドのリス
トの先頭を示すのに使用される。後述のように、処理中
に、ローカル継続待ち行列先頭ポインタ102は、実行
されるプロセスと関連するローカルフレーム20の呼出
しコンテキストマップエントリ26内に位置するローカ
ル継続待ち行列ヘッドポインタ38からのその情報を受
け取る。
【0058】(i)ローカル継続待ち行列末尾ポインタ
103は、各実行可能待ち行列内に位置指定される。こ
れは、後でより完全に説明するように、特定プロセスの
スレッドのリストの末尾を示すのに使用される。先頭ポ
インタ102と同様に、ローカル待ち行列末尾ポインタ
103がローカルフレーム20から受け取られる。特
に、実行可能待ち行列内へエンキューする間、ローカル
フレーム20内のローカル継続待ち行列末尾ポインタ4
0が実行可能待ち行列エントリ94へコピーされる。
【0059】ローカル継続待ち行列86(図7)が実行
可能待ち行列エントリ94のそれぞれと関連する。各ロ
ーカル継続待ち行列は、例えば先入れ先出し待ち行列で
あり、そこでは、待ち行列の先頭エントリが最も旧い。
一般的にローカル継続待ち行列86が実行可能待ち行列
上のプロセスと関連する保留スレッドあるいは継続の全
てを含む。実行可能待ち行列エントリ94に位置するロ
ーカル継続待ち行列先頭および末尾ポインタは、特定の
実行可能待ち行列エントリのために、ローカル継続待ち
行列中の有効エントリを示す。ローカル連続待ち行列8
6の一例が図9に示される。
【0060】ローカル継続待ち行列86は、各エントリ
が特定プロセスのための保留スレッドを表す、多数のロ
ーカル継続待ち行列エントリ104を含む。各ローカル
継続待ち行列エントリ104が主記憶装置制御ユニット
12のワークフレーム23(すなわち、コードオフセッ
ト56、指標58)から受け取られるコードオフセット
105および指標106を含む圧縮継続記述子を含む。
コードオフセット105は、コードフレームキャッシュ
88内に位置するコードフレーム内の命令をアドレス指
定するために使用され、指標106は、指標付けられた
アドレス指定中に、キャッシュされるローカルフレーム
キャッシュ90内にデータを位置させるために使用され
るアドレスの値を変更するために使用される。
【0061】以下に説明するように、ローカル継続待ち
行列86がコードフレームキャッシュ物理ポインタ10
0を介してコードフレームキャッシュ88に結合され
る。図10を参照すると、コードフレームキャッシュ8
8は、一例では128個のコードフレーム108を含
み、各コードフレームが例えば256個の命令を含む。
一実施例では、後述のように、プリフェッチ段階中に、
コードフレームキャッシュ88内に位置するコードフレ
ームは、主記憶装置制御ユニット12からコードフレー
ムキャッシュ88へインページされる。コードフレーム
キャッシュ88が二つの同時アクセスポートをサポート
する。その一つが命令のフェッチに使用される読出しポ
ートであり、他のものが主記憶装置からコードフレーム
キャッシュへコードを保管するのに使用される書込みポ
ートである。
【0062】コードフレーム108を位置指定するため
に、実行可能待ち行列84の実行可能待ち行列エントリ
94に位置するコードフレームポインタ99がコードフ
レームキャッシュディレクトリ110へ入力され、コー
ドフレームキャッシュ物理ポインタ100のための値が
得られる。一実施例では、コードフレームキャッシュデ
ィレクトリ110が8方法セット連想探索を可能とする
ように編成されている。
【0063】図11を参照すると、コードフレームキャ
ッシュディレクトリ110が例えば16行および8列を
有し、各列および行の交差部分がエントリ114を含
む。各エントリ114がコードフレームアドレスタグ1
16と状態フィールド118を含む。コードフレームア
ドレスタグ116は、例えば40ビットコードフレーム
ポインタ99の上位36ビットであり、コードフレーム
キャッシュ物理ポインタ100のアドレス値を決定する
のに使用される。状態フィールド118は、コードフレ
ームキャッシュ88内の特定コードフレーム108の状
態を示すのに使用される3ビットフィールドである。コ
ードフレームキャッシュ内のコードフレームは、以下の
状態の一つを持ちうる。
【0064】(a)処理要素内でコードフレームキャッ
シュ内の特定コードフレームの位置を特定するための試
みが失敗に終わったときは空き状態であると規定され
る。この状態は、コードフレームが主記憶装置内あるい
は他の処理要素内にあるときのみ、適切である。空き状
態は、システム初期化時およびコードフレーム無効化が
生じる時は何時でも、コードフレームキャッシュ内に記
録される。
【0065】(b)コードフレームが移動の状態にある
時は、そのコードフレームは遷移状態にある。一例とし
て、処理要素内でコードフレームが主記憶装置からコー
ドフレームキャッシュへ移動されていることである(イ
ンページ動作)。インページ完了時のコードフレームの
所望の最終状態に依存して、インページ中に、これら二
つの可能な遷移状態のうちの一つがフレームに関して記
録される。この状態が遷移・最終状態として記録され
る。最終状態は、プリテスト/プリフェッチインページ
(後述する)のために存在状態であり、あるいは最終状
態が呼出しコンテキストマップエントリキャッシュ固定
制御37によって活動状態に固定される。コードフレー
ムキャッシュ内のコードフレームの遷移状態は、例えば
least recently used (LRU)アルゴリズムのような
キャッシュ置き換えアルゴリズムによるコードフレーム
の選択を阻止し、それによってインページ動作の最後の
完了が可能となる。
【0066】(c)所望のコードフレームの内容がコー
ドフレームキャッシュ88内に全体的に存在しているこ
とを示す存在状態。コードフレームがこの状態にあると
きは、処理要素14がコードフレームキャッシュ88内
に位置する命令をフェッチする。
【0067】(d)所望のコードフレームの内容がコー
ドフレームキャッシュ88内に全体的に存在しているこ
とを示す固定(pinned)状態。しかしながら、若し、コー
ドフレームが固定としてマークされるならば、プリテス
ト/プリフェッチ中でフレームの置き換えが阻止される
(後述する)。キャッシュから固定されたコードフレー
ムを除去するために、明示的ソフトウェアアクションが
なされる。
【0068】アドレスタグ116は、コードフレームポ
インタ99と関連して使用され、コードフレームキャッ
シュ物理ポインタ100用のアドレス値が決定される。
より詳細には、コードフレームポインタ99(図10)
の4個の最も右側のビットがコードフレームキャッシュ
ディレクトリ110内の行の一つへ指標を付けるために
使用される。特定の行を得るのに続いて、選択された行
内の各コードフレームキャッシュアドレスタグ116が
コードポインタ46のビット12〜47の値と比較され
る。若し、一致していることが分かったならば、コード
フレームキャッシュ物理ポインタのアドレス値が得られ
る。より詳細には、ポインタ100のアドレスが行識別
子(すなわち、コードフレームポインタ99の最も右側
の4個)と列識別子と等しい。列識別子は、一致が検出
される列(すなわち、列0〜7)の2進表現である。
【0069】コードフレームキャッシュ物理ポインタ1
00を決定するのに引き続いて、物理ポインタは、コー
ドフレーム108内の命令120を位置指定するため
に、ローカル継続待ち行列86内に位置するコードオフ
セット105と関連して使用される。コードフレーム1
08内の特定命令120を選択するために、コードフレ
ームキャッシュ物理ポインタ100がローカル継続待ち
行列エントリ104内に位置するコードオフセット10
5の左側に122で追加される。
【0070】一実施例では、命令120が主記憶装置に
位置するコードフレーム22のコピーからロードされる
以下のフィールドを含む(以下のフィールドは、図6A
を参照して述べられる命令フィールドと類似しており、
従って、ここでは、フィールドのいくつかについての詳
細を説明しない。)。すなわち、操作コード(OPCO
DE)124、スレッド制御(TC)125、指標イン
クリメント制御(X)127、宛先特定子126、ソー
スオペランドゼロ特定子128およびソースオペランド
1特定子130である。宛先特定子126は、命令実行
の結果が書込まれるアドレスを示し、ソースオペランド
特定子は、ローカルフレームキャッシュ90内に位置
し、読出されるデータオペランドのアドレスを示し、命
令の実行中に使用される。
【0071】以下に詳細に述べるように、コードフレー
ムキャッシュ88がローカルフレームキャッシュ90と
結合される。図12、13を参照すると、ローカルフレ
ームキャッシュ90が例えば256個のローカルフレー
ム(131)を含み、各フレームが256個のデータワ
ード(132)を含む(例えば呼出しコンテキスト待ち
行列情報、宛先ロケーション、ソースオペランド)。一
実施例では、ローカルフレームキャッシュ90が8個の
並列ワード幅のバンクに編成されている。各ローカルフ
レーム131が全ての8個のバンクにまたがっており、
各バンクがローカルフレーム131の32ワードを保管
する。一例では、第1のバンク(バンク0)がローカル
フレーム131の次のワードをホールドする。ワード
0,8,16,32,40,・・・,248(すなわ
ち、ローカルフレームの8番目のワードごと)、第2の
バンク(バンク1)がワード1,9,17,41,・・
・,249をホールドし、他も同様である。当業者にと
って明らかなように、ローカルフレームキャッシュが編
成される単なる一つの方法であって、この発明がかかる
方法に限定されるものではない。ローカルフレームキャ
ッシュ90は、二つの同時アクセスポート、読出しポー
トおよび読出し/書込みポート(図示しない)をサポー
トする。読出しポートがオペランドを取り出すのに使用
され、読出し/書込みポートが以下に説明するように、
命令実行の結果の保管と据置き継続のために使用され
る。
【0072】一実施例では、以下に説明するように、ロ
ーカルフレームキャッシュ90内に位置するローカルフ
レームがプリフェッチ段階の間に、主記憶装置制御ユニ
ット12からローカルフレームキャッシュ90へインペ
ージされる(すなわち、データ50がインページされ
る)。ローカルフレームキャッシュ内のローカルフレー
ムを位置指定するために(その結果、ローカルフレーム
内のロケーションへインページされた情報が書込まれる
か、または特定ロケーションから情報が読まれる)、実
行可能待ち行列エントリ94に位置するローカルフレー
ムポインタ96がローカルフレームキャッシュディレク
トリ133へ入力される。これは、実行可能待ち行列エ
ントリに位置するローカルフレームキャッシュ物理ポイ
ンタ97のためのアドレス値を得るためである。(他の
実施例では、プリテスト(以下に説明する)の間に、ロ
ーカルフレームキャッシュ物理ポインタを得、それによ
って、キャッシュディレクトリからポインタアドレスを
得るためのプロセスを省略することも可能である。)一
実施例では、ローカルフレームキャッシュディレクトリ
133がコードフレームキャッシュディレクトリ110
と同様に、すなわち、8方法セット連想探索が可能なよ
うに編成される。
【0073】図14を参照すると、ローカルフレームキ
ャッシュディレクトリ133が例えば32行および8列
を有し、各行および列の交差部分がエントリ134を含
む。各エントリ134がローカルフレームアドレスタグ
136と状態フィールド138を含む。ローカルフレー
ムアドレスタグ136が例えば40ビットのローカルフ
レームポインタ96の上位35ビットであり、ローカル
フレームキャッシュ物理ポインタ97のアドレス値を決
定するのに使用される。状態フィールド138は、ロー
カルフレームキャッシュ90内の特定ローカルフレーム
131の状態を示すのに使用される3ビットフィールド
である。ローカルフレームキャッシュ内のローカルフレ
ームは、下記の状態の一つをとりうる。
【0074】(a)処理要素内で、ローカルフレームキ
ャッシュ90内の特定ローカルフレームを位置指定する
ために、異常終了試みによって規定される空き状態であ
る。この状態は、主記憶装置自由フレームリスト上のロ
ーカルフレームと、主記憶装置内に全体的に駐在するプ
ロセスに割り当てられるものにとって有効であり、プロ
セスに対して割り当てられる。空き状態は、ローカルフ
レームキャッシュから主記憶装置へのカーストアウトが
参照ローカルフレームに関して進行中で、その結果、こ
のカーストアウトが完了するまで、実際のインページが
遅延される時に検出されうる。空き状態は、システム初
期化時と、キャッシュ中のローカルフレーム131内
で、キャッシュ中のフレームを置換する試みられたロー
カルフレームインページが強制終了される時は何時で
も、ローカルフレームキャッシュ内に記録される。
【0075】(b)移動の状態例えば主記憶装置からロ
ーカルフレームへの移動(ローカルフレームインペー
ジ)にそれがある時に、ローカルフレームに対して適用
される遷移状態。ローカルフレームインページの間で、
インページフレームの状態がローカルフレームキャッシ
ュ状態98内に記録される。インページ中に、インペー
ジ完了時のローカルフレーム131の所望の最終状態に
依存して、遷移状態の一つがフレームに関して記録され
る。最終状態は、プリテスト/プリフェッチインページ
(さらに後で説明する)のための存在状態、あるいはプ
リテスト/プリフェッチインページのための呼出しコン
テキストマップエントリ固定制御37アクティブによる
固定である。ローカルフレームキャッシュ内の遷移状態
は、キャッシュ置き換えアルゴリズム(LRU)による
ローカルフレーム131の選択を阻止し、それによって
インページ動作の最後の完了が可能となる。これは、強
制終了されるインページと関連するカーストアウトの完
了を可能とする。
【0076】(c)プロセスに対して現に割り当てられ
ていないローカルフレームキャッシュ内の有効ローカル
フレームを示す自由(free)状態。一例として、プロセス
終了によって、ローカルフレームがこの状態に入る。
【0077】(d)ローカルフレーム131の内容がロ
ーカルフレームキャッシュ内に全体的に存在しているこ
とを示す存在状態。ローカルフレームがこの状態にある
ときは、内容が処理要素内で命令によるアクセスのため
に選択可能である。
【0078】(e)所望のローカルフレームの内容がロ
ーカルフレームキャッシュ内に全体的に存在しているこ
とを示す固定状態。しかしながら、若しローカルフレー
ムが固定としてマークされるならば、プリテスト/プリ
フェッチ中でフレームの置き換えが阻止される(後述す
る)。キャッシュから固定されたコードを除去するため
に、ソフトウェアアクションがなされる。
【0079】アドレスタグ136は、ローカルフレーム
ポインタ96と関連して使用され、ローカルフレームキ
ャッシュ物理ポインタ97用のアドレス値が決定され
る。より詳細には、ローカルフレームポインタ96の5
個の最も右側のビットがローカルフレームキャッシュデ
ィレクトリ133内の行の一つへ指標を付けるために使
用される。特定の行を得るのに続いて、選択された行内
の各ローカルフレームアドレスタグ136の内容が論理
ローカルフレームアドレス(主記憶内のローカルフレー
ムのベースアドレス)のビット13〜47の値と比較さ
れる。若し、一致していることが分かったならば、ロー
カルフレームキャッシュ物理ポインタ97のアドレス値
が得られる。より詳細には、ポインタのアドレスが行識
別子(すなわち、ローカルフレームポインタ96の最も
右側の5ビット)と列識別子と等しい。列識別子は、一
致が検出される列(すなわち、列0〜7)の2進表現で
ある。
【0080】ローカルフレームキャッシュ物理ポインタ
97を決定するのに引き続いて、物理ポインタがソース
オペランド0特定子128および指標106(すなわ
ち、若し、アドレス指定モードが指標アドレス指定が使
用されるべきことを示すならば、指標が使用される)と
ともに使用され、命令の実行中に使用されるソースオペ
ランド0を表すローカルフレームキャッシュ90からの
データ132が選択される。すなわち、ソースオペラン
ド0特定子128(前述のように、各特定子がアドレス
指定モード(AM)、状態機能(SF)およびフレーム
オフセットを含む)のフレームオフセット140が指標
106に対して142で加算され、そして、合計の左に
ローカルフレームキャッシュ物理ポインタ97が追加さ
れ、ローカルフレームキャッシュ内の特定データ(例え
ばソースオペランド0)が示される。
【0081】同様に、ローカルフレームキャッシュ物理
ポインタ97がソースオペランド1特定子130と指標
106とともに使用され、命令実行中に使用されるソー
スオペランド1を表すデータ132がローカルフレーム
キャッシュ90から選択される。より詳細には、ソース
オペランド1特定子130のフレームオフセット144
が指標106に146で加算され、そして、ローカルフ
レームキャッシュ物理ポインタ97が合計の左に追加さ
れ、ローカルフレームキャッシュ内の特定データ(例え
ばソースオペランド1)が示される。
【0082】上述に加えて、ローカルフレームキャッシ
ュ物理ポインタ97が宛先特定子126および指標10
6(繰り返すが、若し、指標が使用されるべきならば)
と共に、例えば命令実行の結果が記憶される、ローカル
フレームキャッシュ内のロケーションを表すデータ13
2をローカルフレームキャッシュ90から選択するため
に使用される。より詳細には、宛先特定子126のフレ
ームオフセット147が指標106に対して149で加
算され、そして、ローカルフレームキャッシュ物理ポイ
ンタ97がローカルフレームキャッシュ内の特定のデー
タ(例えば結果ロケーション)を示すために、合計の左
に追加される。
【0083】状態ビットキャッシュ91内に位置する3
ビット状態標識がローカルフレームキャッシュ90に保
管される各データと関連する。ローカルフレームキャッ
シュ90と同様に、状態ビットキャッシュ91が例えば
256個のロケーションを含み、各ロケーションが25
6個の3ビット状態標識148を含む。一実施例では、
状態ビットキャッシュ91が並列にアクセス可能な8個
のワード幅のバンクに編成されている。各ロケーション
152が全ての8個のバンクにまたがっており、その結
果、各バンクがロケーション152の32ワードを記憶
する。(状態ビットキャッシュの編成は、上述に詳細に
述べた、ローカルフレームキャッシュ90の編成と同様
である。)この発明に依れば、状態標識148は、主記
憶装置から状態ビットキャッシュ91へ並列にインペー
ジされ、データ50がローカルフレームキャッシュ90
へコピーされる。
【0084】状態ビットは、ローカルフレームキャッシ
ュに対しての方法と同様の方法で、状態ビットキャッシ
ュへロードされあるいは状態ビットキャッシュから読出
される。より詳細には、図12、13に示すように、
(例えば特定フレームオフセットと若し、必要であれ
ば、指標の合計の左にローカルフレームキャッシュ物理
ポインタを追加することによって)得られ、また、ロー
カルフレームキャッシュ90からデータ132(ソース
オペランドおよび宛先ロケーションのいずれか一方)を
選択するのに使用される、各アドレスは、状態ビットキ
ャッシュ91から関連する状態ビット標識148を選択
するためにも使用される。各状態ビット標識148が特
定データの現在状態を表す。特定データおよびその関連
する状態ビット標識が上述のプロセスを使用して、ロー
カルフレームキャッシュ90および状態ビットキャッシ
ュ91からそれぞれ並列に選択される。しかしながら、
当業者にとって明らかなように、状態ビットキャッシュ
が種々の方法で編成可能であり、ここに述べた実施例
は、一例にすぎない。当業者にとって明らかなように、
状態ビットキャッシュを除去し、ローカルフレームキャ
ッシュ内に例えばその関連するデータと隣接して状態ビ
ット標識を置くことも可能である。
【0085】状態ビット標識が多数の状態を有し(一例
として、空き、待ちあるいは存在)、オペランドおよび
関連する状態標識がローカルフレームキャッシュ90お
よび状態ビットキャッシュ91からそれぞれ選択される
時に、各選択オペランドに関する次の状態が決定され
る。さらに、結果がロケーションに書込まれる時に、そ
のロケーションに関する次の状態が決定される。一実施
例では、オペランドあるいは結果ロケーションの次の状
態を決定するために、複数の状態遷移テーブルと各特定
子に関連する状態機能が使用される。
【0086】より詳細には、宛先特定子126のための
状態機能154、ソースオペランド0特定子128のた
めの状態機能156、およびソースオペランド1特定子
130のための状態機能158が命令120内に位置指
定される。各状態機能がその固有の特定子と関連する同
期機能(上述した)を示すのに使用され、各状態機能が
状態遷移テーブル中へのアドレスとして使用される。一
実施例では、各特定子に関して状態遷移テーブルが存在
する。すなわち、宛先特定子126と関連する状態遷移
テーブル160、ソースオペランド0特定子128と関
連する状態遷移テーブル162、およびソースオペラン
ド1特定子130と関連する状態遷移テーブル164が
存在する。エントリ165が各状態遷移テーブル内に位
置指定され、このエントリが各可能状態機能のために可
能な次の状態を含む。一例として、若し、状態機能15
4が1回作成者・複数使用者の同期機能を表すならば、
その同期機能に関して可能な次の状態を含むエントリ1
65が状態遷移テーブル160(状態機能154が状態
遷移テーブル160を指標付ける)内に位置指定され
る。一例では、各エントリが8個の可能な次の状態を含
むことができる。さらに、若し、状態機能154が複数
作成者・単一使用者のような他の同期機能を表すなら
ば、その同期機能に関して可能な次の状態を含む状態遷
移テーブル160内の他のエントリが存在する。同様
に、状態遷移テーブル162および164が可能な次の
状態166を含むエントリ165を含む。各状態遷移テ
ーブルは、例えば処理要素14内に位置指定され、何ら
かの公知の方法によって、システム初期化時に、さらな
る同期機能をサポートする次の状態の追加エントリを含
むように静的に変更されうる。
【0087】図13に示すように、3ビット制御フラグ
168が各次の状態166と関連する。制御フラグ16
8がシステム初期化時に設定され、その関連する次の状
態のために固定される。命令120を含むスレッドにつ
いてどのアクションをなすべきかを処理要素に対して示
すために、制御フラグ168が使用される。すなわち、
制御フラグ168は、例えばスレッドの実行が継続する
かどうか、あるいは実行が据え置かれるかどうかを示
す。
【0088】図15および図16を参照すると、動作で
は、実行されるプロセスが相互接続ネットワーク18に
よって処理要素14の一つに対してディスパッチされる
(ステップ180「プロセスのディスパッチ」)。この
ディスパッチされたプロセスの受信に引き続いて、処理
要素内で、特定の処理要素あるいは処理要素内に位置す
る実行可能待ち行列と関連する、主記憶装置制御ユニッ
ト内に位置する呼出しコンテキスト待ち行列にプロセス
が配置されるかどうかに関しての決定がなされる(ステ
ップ182「入力プロセスをどこに配置するかの決
定」)。
【0089】より詳細には、プロセスをどこに配置する
かの決定では、プロセスが先入れ、先出し方法で、実行
可能待ち行列84にエンキューされるかどうかに関し
て、初期照会がなされる(照会184「プロセスがFI
FOでエンキューされるか?」)。若し、プロセスが先
入れ先出し方法でエンキューされた後に実行可能待ち行
列が満杯であり、従って、それ以上のプロセスを受け入
れることができないかどうかを見るために検査がなされ
る(照会186「実行可能待ち行列が満杯?」)。若
し、実行可能待ち行列が満杯であるならば、実行可能待
ち行列中で位置が選択可能となるまで、主記憶装置制御
ユニット内の呼出しコンテキスト待ち行列の末尾上にプ
ロセスが配置される(ステップ188「ICQ上にエン
キュー」)。プロセスが呼出しコンテキスト待ち行列の
末尾に配置される時に、追加されたプロセスの呼出しコ
ンテキストマップエントリ26内に位置指定される呼出
しコンテキスト待ち行列逆方向ポインタ44が呼出しコ
ンテキスト待ち行列末尾の現在値にとって代わる。ま
た、旧い末尾によって識別される最終プロセスの呼出し
コンテキスト待ち行列正方向ポインタ42が更新され、
追加されたプロセスのローカルフレームポインタと等し
い、呼出しコンテキスト待ち行列の新たな末尾が示され
る。さらに、呼出しコンテキスト待ち行列末尾は、追加
されたプロセスのローカルフレームポインタに等しく設
定される(ステップ189「ICQTおよびICQHの
更新」)。
【0090】照会186に戻ると、若し、実行可能待ち
行列が満杯でないならば、実行可能待ち行列84の末尾
に対してプロセスが追加される(ステップ190「実行
可能待ち行列へのエンキュー」)。実行可能待ち行列へ
のプロセスのロードに加えて、プロセスと関連する1以
上のスレッドがローカル継続待ち行列86へエンキュー
される(ステップ191「スレッドをLCQへ配
置」)。引き続いて、実行可能待ち行列上のプロセスに
関してローカル継続待ち行列内に有効エントリが存在す
ることを示すために、ローカル継続待ち行列先頭38と
末尾40が呼出しコンテキスト待ち行列26から、その
プロセスで指定される実行可能待ち行列エントリ9内に
位置指定される、ローカル継続待ち行列先頭102およ
び末尾103へコピーされる。
【0091】プロセスが実行可能待ち行列へ配置される
時に、実行可能待ち行列エントリ94内に位置する実行
可能待ち行列状態95が空きから保留プリテストへ更新
される(ステップ192「RQ状態の更新」)。
【0092】照会184を再び参照すると、若し、プロ
セスが後入れ、先出し方式で実行可能待ち行列84へエ
ンキューされるならば、実行可能待ち行列の先頭にその
プロセスがエンキューされ、実行可能待ち行列の末尾に
おいて有効な実行可能待ち行列エントリ94が取り替え
られる可能性がある(ステップ190「実行可能待ち行
列へのエンキュー」)。再度、プロセスが実行可能待ち
行列に追加される時に、そのプロセスに関するスレッド
がローカル継続待ち行列86上に配置される(ステップ
191「ステップをLCQに配置」)。また、実行可能
待ち行列状態95が保留プリテストへ更新される(ステ
ップ192「RQ状態の更新」)。取り替えられた有効
エントリが主記憶装置内の呼出しコンテキスト待ち行列
の先頭へカーストアウトされる。呼出しコンテキスト待
ち行列の先頭への追加の時に、新たなプロセスのための
呼出しコンテキスト待ち行列正方向ポインタ42が更新
され、呼出しコンテキスト待ち行列の旧い先頭が示され
る。さらに、旧い先頭の呼出しコンテキスト待ち行列逆
方向ポインタ44が更新され、追加されたプロセスが示
される(ローカルフレームポインタを使用して)。さら
に、呼出しコンテキスト待ち行列先頭が更新され、ロー
カルフレームポインタによって表される新たなプロセス
が示される。然も、ローカル継続待ち行列先頭102と
末尾103が実行可能待ち行列エントリ94から呼出し
コンテキストマップエントリ26内のローカル継続待ち
行列先頭38および末尾40へコピーされる。
【0093】上述したように、プロセスが実行可能待ち
行列に対して追加される時に、実行可能待ち行列エント
リの状態が空きから保留プリテストへ更新される。保留
プリテストの間で、プロセスの実行のために必要な資源
の選択可能度が決定される(照会194「資源が選択可
能か?」)。より詳細には、コードフレームキャッシュ
88が検査され、実行可能待ち行列エントリ94内のコ
ードフレームポインタ99によって示されるように、コ
ードフレーム108がコードフレームキャッシュ内に位
置指定されるかどうかが検査される。同様に、ローカル
フレームキャッシュ90が検査され、実行可能待ち行列
エントリ94内でローカルフレームポインタ96により
示されるように、ローカルフレーム131がローカルフ
レームキャッシュ内に位置指定されるかどうかが検査さ
れる。若し、コードフレーム108あるいはローカルフ
レーム131が各キャッシュ内に存在せず、そのため処
理中にプロセスが選択可能でないと判断されれば、欠落
しているコードフレームおよび/またはローカルフレー
ムが主記憶装置からインページされ、それによって選択
可能とされる(ステップ196「資源のプリフェッ
チ」)。特に、コードフレーム108が主記憶装置内の
コードフレーム22からコードフレームキャッシュ88
へコピーされる(インページ)。さらに、ローカルフレ
ーム131が主記憶装置制御ユニット12内のローカル
フレーム20内に位置指定されるデータ50からローカ
ルフレームキャッシュ90へコピーされ、また、並列し
て、データと関連する状態標識28が主記憶装置制御ユ
ニット12(すなわち、ローカルフレーム20)から状
態ビットキャッシュ91へインページされる。主記憶装
置制御ユニットと1以上のキャッシュとの間のデータ移
動がなされるため、処理要素によって実行されうる多数
のプロセスおよびスレッドは、ローカル記憶装置の絶対
量ではなくて主記憶装置の大きさに依存することとな
る。インページの間で、実行可能待ち行列状態95が保
留プリテストからプリフェッチアクティブへ更新される
(ステップ198「RQ状態の更新」)。
【0094】プリフェッチ中に資源をインページするの
に引き続いて、あるいは照会194から肯定応答が得ら
れるならば、実行可能待ち行列状態95がプリフェッチ
アクティブから処理要素によりプロセスが実行可能であ
ることを示す実行可能へ更新される(ステップ200
「RQ状態の更新」)。そのプロセスが例えば実行可能
待ち行列84の最上部エントリの時に実行可能プロセス
が実行されうる。最上部エントリが実行のために選択さ
れる時に、ローカル継続待ち行列86内に位置する最上
部スレッドが選択される(ステップ202「プロセスお
よびスレッドの選択」)。これが生じると、実行可能待
ち行列状態95が実行可能から走行へ更新される(ステ
ップ204「RQ状態の更新」)。さらに、以前に走行
している実行可能待ち行列エントリは、処理要素内でそ
れが処理の制御を開放する際の状態に依存して、走行状
態から空き、実行可能あるいは就寝の各状態のいずれか
(これらは全て上述した)へ変更される。
【0095】ローカル継続待ち行列86からの選択スレ
ッド(あるいはローカル継続待ち行列エントリ104)
は、上述のように、コードフレームキャッシュ88から
実行される命令120を選択するのに使用されるコード
オフセット105を含む(ステップ206「命令のフェ
ッチ」)。命令がフェッチされる時に、実行可能待ち行
列エントリ94内に位置するローカル継続待ち行列先頭
ポインタ102が調整され、ローカル継続待ち行列から
スレッド処理を除去することが示される(ステップ20
8「LCQ先頭の調整」)。
【0096】上述したように、選択される命令がソース
オペランド0特定子を含み、これは、ローカルフレーム
キャッシュ90からソースオペランド0を表すデータ1
32を選択し、また、状態ビットキャッシュ91からそ
の関連する状態ビット148を選択するために使用され
る。然も、ソースオペランド1特定子130は、ローカ
ルフレームキャッシュ90からソースオペランド1を表
すデータ132を選択し、また、状態ビットキャッシュ
91内に位置するその関連する状態ビット148を選択
するのに使用される(ステップ210「データおよび状
態ビットの選択」)。
【0097】上述に加えて、ソースオペランド0特定子
128およびソースオペランド1特定子130内にそれ
ぞれ位置指定される状態機能156および158は、状
態遷移テーブル162、164から多数の可能な次の状
態166を選択するのに使用される。より詳細には、状
態機能156は、状態遷移テーブル162へのアドレス
として使用され、ソースオペランド0特定子のための次
の状態を含むエントリ165が選択される。同様に、状
態機能158は、状態遷移テーブル164へのアドレス
として使用され、ソースオペランド1特定子のための次
の状態を含むエントリ165が選択される(ステップ2
12「可能な次の状態の選択」)。(上述したように、
各状態機能は同期機能を表し、また、各同期機能と関連
する状態が状態遷移テーブル中に含まれる。)
【0098】ソースオペランドのための可能な次の状態
を選択するのに引き続いて、オペランドの現在状態(状
態標識148)がそのオペランドのための次の状態を表
す可能な次の状態から一つの状態を選択するのに使用さ
れる。一例として、若し、8個の次の状態(0〜7)が
存在し、且つ状態ビット標識148がゼロであるなら
ば、状態標識148のための次の状態は、8個の次の状
態の位置0に位置指定される状態(すなわち、列0ある
いは8個の状態外の最初の次の状態)である(ステップ
214「次の状態の決定」)。一実施例では、特定の同
期機能のために、状態ビット標識148が読出されたオ
ペランドのために現在状態を表し、また、特定の同期機
能のための可能な次の状態は、空き、待ちおよび存在で
ありうる。一例では、そのオペランドのために選択され
る次の状態が存在状態である。次の状態が決定された後
に、状態標識148は、例えば次の状態の値を状態ビッ
トキャッシュ91内に位置指定される現在状態値へ書く
ことによって、次の状態の値へ更新される(ステップ2
16「現在状態の更新」)。
【0099】上述のものに加えて、実行されている命令
を含むスレッドによっでなされるアクションのコースに
関して決定がなされる(ステップ218「なされるアク
ションの決定」)。なされうるアクションの種類は、例
えば各々以下に説明するところのスレッド実行の継続、
現在スレッドの延期、および据置スレッドの起床を含
む。
【0100】一実施例では、スレッドによりどのアクシ
ョンがなされるかを決定するために、ローカルフレーム
キャッシュ90内に位置指定されるとともに、実行命令
120により選択されるデータ(例えばソースオペラン
ド0および/またはソースオペランド1)が命令による
使用にとって選択可能かどうかが照会される(照会22
0「データが選択可能?」)。より詳細には、この決定
は、ソースオペランド0および1の各々と関連する状態
標識148(それが次の状態へ更新される前に)を検査
することによってなされる。若し、例えばオペランドが
空き状態であることを状態標識148が示すならば、そ
のオペランドが利用不可能と判断される。しかしなが
ら、若し、各オペランドが例えば存在状態にあることを
状態標識148が示すならば、オペランドが選択可能と
判断される。若し、データが選択可能ならば、以下に詳
細に説明するように、スレッドの実行が継続し、命令の
実行の結果がローカルフレームキャッシュ90内の結果
ロケーションに保管される(ステップ222「実行の継
続」)。
【0101】一例では、処理装置14内でローカルフレ
ームキャッシュ90と結合される実行ユニット92内で
命令が実行される。命令120内に位置指定される各ソ
ースオペランド特定子のアドレス指定モードは、ソース
オペランド0およびソースオペランド1(既に上述のよ
うに得られている)のような適切なデータを実行ユニッ
ト92の入力レジスタ(図示しない)へゲートする。実
行ユニット92は、得られたオペランドを使用して命令
を実行し、命令120の宛先特定子126によって示さ
れるローカルフレームキャッシュ90内に位置指定され
た宛先(または結果)ロケーションにその結果を配置す
る。しかしながら、若し、命令実行の結果が特定ロケー
ションへの分岐であるならば、新たなスレッド(より具
体的には、新たな圧縮継続記述子)がローカル継続待ち
行列86へエンキューされ(若し、そのスレッドが現に
実行されているものと同じプロセスのためであるなら
ば)、あるいは新たなスレッドが相互接続ネットワーク
18により取り扱われ、異なるプロセスのローカル継続
待ち行列へエンキューされる。
【0102】一方、若し、照会220に対する返答が否
定であり、ソースオペランドの1以上が選択可能でない
ならば(例えばオペランドが存在状態にないことをその
オペランドに関連する状態標識が示すならば)、実行し
ている命令と関連するスレッドの実行が据え置かれる
(ステップ224「スレッドの実行の据置」)。(一例
では、特定命令が実行が継続するが、結果が保管されな
い。)より詳細には、若し、ソースオペランド0あるい
はソースオペランド1が例えば空き状態あるいは待ち状
態にあり、従って、選択不可能であるならば(若し、両
オペランドが選択不可能ならば、一実施例では、オペラ
ンド0がオペランド1よりむしろ好ましい。)、現在実
行されているスレッド(ローカル継続待ち行列86内の
ローカル継続待ち行列エントリ中のオフセット105お
よび指標106によって表される)がソースオペランド
0およびソースオペランド1(若し両方が必要であれ
ば)が選択可能となるまで延期される。延期が生じた時
に、命令の影響が空白とされる。
【0103】スレッドの実行を延期するために、ローカ
ル継続待ち行列内に位置指定されるコードオフセット1
05と指標106(圧縮継続記述子としても参照され
る)が選択不可能ソースオペランドを表すデータロケー
ション(あるいはフィールド)に保管される。各データ
132は、多数のスレッドと対応して多数の圧縮継続記
述子を受信する。例えば各データは、4個の圧縮継続記
述子を保管しうる。
【0104】データがローカルフレームキャッシュ90
内のデータロケーション132へ書込まれる時に、コー
ドフレームキャッシュ88内に位置指定される宛先特定
子126のフレームオフセット147、ローカルフレー
ムキャッシュ物理ポインタ97、および対応する指標1
06によって、結果ロケーションおよび関連する状態標
識が詳細に上述したように、特定される(ステップ22
6「データが書込まれる」)(図17)。ロケーション
および状態標識の選択に加えて、宛先特定子126に位
置指定される状態機能154が状態遷移テーブル160
へのアドレスとして使用され、結果ロケーションのため
に、多数の可能な次の状態166が選択される(ソース
オペランドのための次の状態を選択するための上述した
手順と同様である)。上述のように、結果ロケーション
のための可能な次の状態を選択するのに引き続いて、そ
のロケーションに関する現在状態標識148がロケーシ
ョンのための次の状態を選択するために使用される。そ
して、現在状態標識が次の状態の値を反映するように更
新される。
【0105】さらに、結果ロケーションが空きであるか
どうかに関する決定がなされる(照会228「ロケーシ
ョンが空き?」)。(そのロケーションにデータが書か
れる前に、何かがそこに保管されているかどうかの決定
のために、そのロケーションが最初に読まれるので、デ
ータが書かれる時に、読出し/書込みポートが使用され
る。)若し、選択データ132が空きであれば(それが
次の状態へ更新される前に、状態標識148によって示
されるように)、データがそのロケーションへ書込まれ
る(ステップ230「データの書込み」)。一方、若
し、ロケーションが空きでないならば、そのロケーショ
ンに保管された1以上の圧縮継続記述子が存在するかど
うか、従って、そのロケーションが待ち状態であるかど
うかの決定がなされる(再度、状態標識148により示
される)(ステップ231「ロケーションが待ち状態か
?」)。若し、ロケーションが待ち状態でないならば、
データが書込まれる(ステップ234「データの書込
み」)。しかしながら、若し、そのロケーションが待ち
状態であるならば、そのロケーションに保管されている
圧縮継続記述子がことごとく除去され、データが書かれ
る前に走行プロセスと関連するローカル継続待ち行列へ
エンキューされる(ステップ232「圧縮継続記述子の
起床」)。継続圧縮記述子の除去に引き続いて、データ
が指示されるロケーションへ書込まれる(ステップ23
4「データの書込み」)。
【0106】特定の一実施例では、遷移テーブル16
0、162内に駐在する各次の状態は、可能な次の状態
が検索される時に検索される関連する3ビット制御フラ
グ168を有する。次の状態の一つが選択される時に、
上述のように、関連制御フラグ168も選択され、処理
要素によってどのアクションがなされるかを示すのに使
用される。すなわち、制御フラグは、例えばスレッド実
行が継続されるべきかどうか、スレッドの実行が据え置
かれるべきかどうか、あるいは据置スレッドの活動を開
始するべきかどうかを示す。これらのアクションのそれ
ぞれは、上述したように実行される。
【0107】好適な実施例が詳細に図示され、説明され
ているが、種々の変形、追加、置き換え等がこの発明の
精神を逸脱することなく可能であることは、当業者にと
って明らかであろう。
【図面の簡単な説明】
【図1】この発明による並列処理システムの一例のブロ
ック図である。
【図2】この発明の原理に従った、図1の並列処理シス
テムの主記憶装置制御ユニットと関連した論理構成要素
の一例である。
【図3】この発明の原理に従った、図2の主記憶装置制
御ユニット内に存在する論理ローカルフレームの一例を
示す図である。
【図4】この発明の原理に従った、図3のローカルフレ
ームと関連する論理ワークフレームの一例と、この発明
の非圧縮継続記述子内に含まれるフィールドの一例を示
す図である。
【図5】この発明の原理に従った、図2の主記憶装置制
御ユニット内に存在する論理コードフレームのエントリ
の一例を示す図である。
【図6】この発明の原理に従った、図5のコードフレー
ム内に存在する命令内のフィールドの一例と、この命令
の宛先およびソース特定子の構成要素の一例を示す図で
ある。
【図7】この発明の原理に従った、図1の処理要素のハ
ードウェア構成要素の一例のブロック図である。
【図8】この発明の原理に従った、図7に示される実行
可能待ち行列の中の実行可能待ち行列エントリの構成要
素の一例を示す図である。
【図9】この発明の原理に従った、図8の処理要素内の
ローカル継続待ち行列の構成要素の一例を示す図であ
る。
【図10】この発明の処理要素内に存在するコードフレ
ームキャッシュと関連する構成要素の一例を示すブロッ
ク図である。
【図11】この発明の原理に従った、図10のコードフ
レームキャッシュと関連するコードフレームキャッシュ
ディレクトリーの一例を示す図である。
【図12】この発明の原理に従った、図7に示された処
理要素内に位置するローカルフレームキャッシュと関連
する構成要素の一例を示すブロック図である。
【図13】この発明の原理に従った、図7に示された処
理要素内に位置するローカルフレームキャッシュと関連
する構成要素の一例を示すブロック図である。
【図14】この発明の原理に従った、図12、図13ロ
ーカルフレームキャッシュと関連するローカルフレーム
キャッシュディレクトリの一例を示す図である。
【図15】この発明の同期処理の一例を示すフローチャ
ートである。
【図16】この発明の同期処理の一例を示すフローチャ
ートである。
【図17】この発明の原理に従った、キャッシュ内のロ
ケーションへのデータの書込みに関する処理の一例を示
すフローチャートである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート・アラン・イアナッチ アメリカ合衆国、マサチューセッツ州エン ドーバー、ブルックサイドドライブ 400 −エフ

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 同一プロセス内で処理要素によってスレ
    ッドの実行を同期する方法であって、 スレッドをプロセス内で実行し、 前記スレッド実行中にローカルフレームキャッシュから
    データフィールドをフェッチするステップと、 前記データフィールドに関連付られており第一状態値を
    有している状態標識を状態ビットキャッシュからフェッ
    チするステップと、 前記スレッドが使用可能であるデータが前記データフィ
    ールド中に含まれているものであるかどうかを前記第一
    状態値に基づいて判断するステップと、 前記判断の結果前記データを含んでいないときは前記ス
    レッドの実行を据え置くステップと、 を含んでいるスレッド実行同期方法。
  2. 【請求項2】 前記状態標識に関して第二状態を決定す
    るステップであって、前記第二状態は前記スレッドの実
    行中に前記第一状態に置き換えられるものであるステッ
    プをさらに含む請求項1の方法。
  3. 【請求項3】 前記第二状態を決定するステップは、 前記第二状態を決定するために用いられる状態機能を前
    記スレッドから選択するステップと、 前記状態機能を用いて前記状態標識のために、複数のテ
    ーブルの中の一つからN個の可能な第二状態を選択する
    ステップと、 前記第一状態を用いて前記N個の可能な第二状態の中か
    ら一つの前記第二状態を選択するステップと、 をさらに含む請求項2の方法。
  4. 【請求項4】 前記第一状態は前記データの現在の状態
    を表示し、前記第二状態は前記データの次の状態を表示
    するものである、請求項3の方法。
  5. 【請求項5】 同一プロセス内で処理要素によってスレ
    ッドの実行を同期するためのシステムであって、 データフィールドを記憶しているローカルフレームキャ
    ッシュと、 前記データフィールドと対応する状態標識を記憶してい
    る状態ビットキャッシュと、 プロセス内のスレッドを前記処理要素が実行するための
    手段と、 前記データフィールドを前記ローカルフレームキャッシ
    ュからフェッチするとともに、第一状態値を有している
    前記状態標識を前記状態ビットキャッシュからフェッチ
    する手段と、 前記データフィールド中に前記スレッドが使用できるデ
    ータが含まれているかどうかを前記第一状態値に基づい
    て判断する手段と、 前記スレッドが使用できるデータが含まれていないとき
    は前記スレッドの実行を据え置く手段と、 を含むシステム。
  6. 【請求項6】 前記スレッドの実行中に前記第一状態に
    置き換えられる第二状態を前記状態標識のために決定す
    る手段をさらに含む請求項5のシステム。
  7. 【請求項7】 前記第二状態を決定する手段は、 前記スレッドから前記第二状態を決定するために用いら
    れる状態機能を選択する手段と、 前記状態標識のためのN個の選択可能な第二状態をその
    各々が有している複数のテーブルと、 前記状態機能を用いて、前記複数のテーブルの中の一つ
    から前記N個の可能な第二状態を選択する手段と、 前記第一状態を用いて前記状態標識のために、前記N個
    の可能な第二状態の中から一つの第二状態を選択する手
    段と、 をさらに含む請求項6のシステム。
  8. 【請求項8】 前記第一状態は前記データの現在の状態
    を表示し、前記第二状態は前記データの次の状態を表示
    するものである、請求項7のシステム。
  9. 【請求項9】 同一プロセス内で処理要素によって各々
    が複数の命令を含んでいるスレッドの実行を同期するた
    めのシステムであって、 前記スレッドに含まれている命令を実行するための手段
    と、 複数のソースオペランドを含んでいるローカルフレーム
    キャッシュと、 各々が第一状態値を有し、その一つが前記ソースオペラ
    ンドの一つと対応する状態標識を複数含んでいる状態ビ
    ットキャッシュと、 前記命令実行中に、前記ローカルフレームキャッシュか
    ら一以上のソースオペランドをフェッチし、前記状態ビ
    ットキャッシュからこれに対応する状態標識をフェッチ
    するための手段と、 前記ソースオペランドと関連付られた状態機能を前記命
    令からフェッチするための手段と、 前記状態標識の各々に係わるN個の可能な第二状態を含
    んでいる複数のテーブルと、 前記状態機能を用いて前記複数のテーブルから前記N個
    の可能な第二状態を選択する手段であって、前記各々の
    第二状態はフラグ標識と関連付られているような手段
    と、 前記第一状態を用いて前記選択されたN個の可能な第二
    状態から一つの第二状態を前記状態標識のために選択す
    る手段と、 前記第一状態を前記第二状態で置き換える手段と、 前記選択された一つの第二状態に関連付られている前記
    フラグ標識によって特定される動作をスレッドに実行さ
    せる手段と、を含むシステム。
JP5071602A 1992-04-14 1993-03-30 プロセス内のスレッドを同期するための方法およびシステム Pending JPH0612386A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US868410 1986-05-29
US86841092A 1992-04-14 1992-04-14
US914686 1992-04-14
US07/914,686 US5553305A (en) 1992-04-14 1992-07-15 System for synchronizing execution by a processing element of threads within a process using a state indicator

Publications (1)

Publication Number Publication Date
JPH0612386A true JPH0612386A (ja) 1994-01-21

Family

ID=27128052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5071602A Pending JPH0612386A (ja) 1992-04-14 1993-03-30 プロセス内のスレッドを同期するための方法およびシステム

Country Status (3)

Country Link
US (1) US5553305A (ja)
EP (1) EP0565849A3 (ja)
JP (1) JPH0612386A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007507805A (ja) * 2003-10-01 2007-03-29 インテル・コーポレーション マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
CA2119085C (en) * 1994-03-15 2002-01-15 Deborah L. Pinard Adaptive communication system
JP3231571B2 (ja) * 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5752263A (en) * 1995-06-05 1998-05-12 Advanced Micro Devices, Inc. Apparatus and method for reducing read miss latency by predicting sequential instruction read-aheads
US5796954A (en) * 1995-10-13 1998-08-18 Apple Computer, Inc. Method and system for maximizing the use of threads in a file server for processing network requests
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6226746B1 (en) 1998-03-20 2001-05-01 Sun Microsystems, Inc. Stack-based system and method to combine security requirements of methods
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6272559B1 (en) 1997-10-15 2001-08-07 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading for event notification in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US5923887A (en) * 1996-05-20 1999-07-13 Advanced Micro Devices, Inc. Interrupt request that defines resource usage
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US5983310A (en) * 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
US6233599B1 (en) 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US6189023B1 (en) * 1997-09-30 2001-02-13 Tandem Computers Incorporated Simulating shared code thread modules with shared code fibers
US6253256B1 (en) 1997-10-15 2001-06-26 Sun Microsystems, Inc. Deferred reconstruction of objects and remote loading in a distributed system
US5893159A (en) * 1997-10-22 1999-04-06 International Business Machines Corporation Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6044439A (en) * 1997-10-27 2000-03-28 Acceleration Software International Corporation Heuristic method for preloading cache to enhance hit rate
JP2002505471A (ja) * 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド 遠隔処理の中断および継続の方法と装置
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
JP2002505473A (ja) 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド 決定性ハッシュでリモートメソッドを識別する方法とシステム
US6356996B1 (en) 1998-03-24 2002-03-12 Novell, Inc. Cache fencing for interpretive environments
US6141732A (en) * 1998-03-24 2000-10-31 Novell, Inc. Burst-loading of instructions into processor cache by execution of linked jump instructions embedded in cache line size blocks
US6578193B1 (en) 1998-03-24 2003-06-10 Novell, Inc. Endian-neutral loader for interpretive environment
US6094663A (en) * 1998-03-31 2000-07-25 Apple Computer, Inc. Method and apparatus for implementing atomic queues
US6243788B1 (en) * 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US6275749B1 (en) 1998-12-22 2001-08-14 Philips Electronics North America Corporation Interrupt-controlled thread processing
US6401155B1 (en) 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
US6505382B1 (en) 1999-05-14 2003-01-14 Apple Computer, Inc. Hinge apparatus with cam mechanism
US7137116B2 (en) * 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
US6973650B1 (en) * 1999-11-09 2005-12-06 Microsoft Corporation Method of pipelined processing of program data
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7925869B2 (en) * 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US6651146B1 (en) * 2000-02-24 2003-11-18 International Business Machines Corporation Method and apparatus for managing access contention to a linear list without the use of locks
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6823472B1 (en) 2000-05-11 2004-11-23 Lsi Logic Corporation Shared resource manager for multiprocessor computer system
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
WO2002013048A2 (en) * 2000-08-03 2002-02-14 Prelude Systems, Inc. System and method for client-server communication
US7401211B2 (en) * 2000-12-29 2008-07-15 Intel Corporation Method for converting pipeline stalls caused by instructions with long latency memory accesses to pipeline flushes in a multithreaded processor
JP4087072B2 (ja) * 2001-01-25 2008-05-14 株式会社日立製作所 ストレージシステム及び仮想プライベートボリューム制御方法
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7243354B1 (en) * 2002-04-08 2007-07-10 3Com Corporation System and method for efficiently processing information in a multithread environment
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
CN100450105C (zh) * 2005-09-13 2009-01-07 中兴通讯股份有限公司 一种基于java消息服务的同步消息接口实现方法
US20070101332A1 (en) * 2005-10-28 2007-05-03 International Business Machines Corporation Method and apparatus for resource-based thread allocation in a multiprocessor computer system
US7870560B2 (en) * 2007-06-18 2011-01-11 International Business Machines Corporation Method of receiving a message processable by a component on one of plurality of processing threads
JP4767361B2 (ja) * 2008-03-31 2011-09-07 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
US20100161853A1 (en) * 2008-12-22 2010-06-24 Curran Matthew A Method, apparatus and system for transmitting multiple input/output (i/o) requests in an i/o processor (iop)
US8239701B2 (en) * 2009-07-28 2012-08-07 Lsi Corporation Methods and apparatus for power allocation in a storage system
US8271811B2 (en) * 2009-11-05 2012-09-18 Lsi Corporation Methods and apparatus for load-based power management of PHY logic circuits of a SAS device based upon a current workload
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
CN110660421B (zh) * 2018-06-29 2021-11-23 上海磁宇信息科技有限公司 一种带纠错和压缩电路的磁性随机存储器
CN111327707B (zh) * 2020-03-05 2022-04-05 重庆邮电大学 一种无线网络中基于网络编码的缓存替换方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573736A (en) * 1968-01-15 1971-04-06 Ibm Interruption and interlock arrangement
US4439829A (en) * 1981-01-07 1984-03-27 Wang Laboratories, Inc. Data processing machine with improved cache memory management
US4583165A (en) * 1982-06-30 1986-04-15 International Business Machines Corporation Apparatus and method for controlling storage access in a multilevel storage system
US4503499A (en) * 1982-09-14 1985-03-05 Eaton Corporation Controlled work flow system
US4953078A (en) * 1987-10-28 1990-08-28 Digital Equipment Corporation Apparatus and method for multi-threaded program execution in a microcoded data processing system
EP0381655A3 (en) * 1989-01-31 1992-12-02 International Business Machines Corporation Method for synchronizing the dispatching of tasks among multitasking operating systems
US5168554A (en) * 1989-10-13 1992-12-01 International Business Machines Corporation Converting trace data from processors executing in parallel into graphical form
US5197138A (en) * 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US5226138A (en) * 1990-11-27 1993-07-06 Sun Microsystems, Inc. Method for selectively transferring data instructions to a cache memory
US5301295A (en) * 1991-05-22 1994-04-05 Analog Devices, Inc. Data processor apparatus and method with selective caching of instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007507805A (ja) * 2003-10-01 2007-03-29 インテル・コーポレーション マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置

Also Published As

Publication number Publication date
EP0565849A3 (en) 1993-11-10
EP0565849A2 (en) 1993-10-20
US5553305A (en) 1996-09-03

Similar Documents

Publication Publication Date Title
JPH0612386A (ja) プロセス内のスレッドを同期するための方法およびシステム
US8370584B2 (en) Predictive ownership control of shared memory computing system data
JP4566737B2 (ja) メモリ領域ベースのプリフェッチング
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
US6728858B2 (en) Method and apparatus including heuristic for sharing TLB entries
US6857047B2 (en) Memory compression for computer systems
JP3548616B2 (ja) 情報処理装置
US5155832A (en) Method to increase performance in a multi-level cache system by the use of forced cache misses
US8453121B2 (en) Managing the tracing of the execution of a computer program
US20070204107A1 (en) Cache memory background preprocessing
WO1998027486A1 (en) Method and apparatus for storing and expanding programs for vliw processor architectures
JP2000515270A (ja) ネットワークまたはローカルメモリから受け取った命令セットの実行のための二重命令セットプロセッサ
JP2000513464A (ja) スタックキャッシングのための方法及び装置
WO1996035169A1 (en) Page migration in a non-uniform memory access (numa) system
JPH03217963A (ja) マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
JPH05150981A (ja) データ処理装置
JP2006513493A (ja) フリーバッファプールを使用することによるメモリの管理
US7260674B2 (en) Programmable parallel lookup memory
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP3034873B2 (ja) 情報処理装置
JPH01144152A (ja) データ処理システムの制御方法
CN1777875A (zh) 降低特定代码段的高速缓存垃圾化
US8612685B2 (en) Processor, information processing device and cache control method of processor
JP2001249846A (ja) キャッシュメモリ装置及びデータ処理システム
US20050021916A1 (en) System and method of improving fault-based multi-page pre-fetches