JPH06208552A - スモール・グレイン機構 - Google Patents

スモール・グレイン機構

Info

Publication number
JPH06208552A
JPH06208552A JP5274030A JP27403093A JPH06208552A JP H06208552 A JPH06208552 A JP H06208552A JP 5274030 A JP5274030 A JP 5274030A JP 27403093 A JP27403093 A JP 27403093A JP H06208552 A JPH06208552 A JP H06208552A
Authority
JP
Japan
Prior art keywords
thread
token
processor
computer program
tdq
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
JP5274030A
Other languages
English (en)
Inventor
Francis D Lawlor
フランシス・ダニエル・ローラー
Jerald E Leitherer
ジェラルド・ユージン・リースラー
David B Rolfe
デヴィッド・ブルース・ロルフ
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 JPH06208552A publication Critical patent/JPH06208552A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

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

Abstract

(57)【要約】 【目的】 高性能な密並列処理をサポートするために、
既存のオペレーティング・システム内にアーキテクチャ
上の基盤を提供する。 【構成】 アーキテクチャは「密閉化」と呼ぶプロセス
を使用し、このプロセスによって、待ち行列及びカウン
タのアクセスを「オブジェクト記憶域」と呼ぶ特別なメ
モリ・オペランドだけが行うようにする。システム自体
はオブジェクト記憶域に制御され、ユーザはいかなると
きでもこれに直接アクセスすることはできない。ユーザ
が待ち行列にアクセスする必要がある場合には、これを
システムに要求しなければならない。システムはユーザ
に「トークン」を出すことによってこのようなアクセス
を提供する。このトークンはユーザと要求された待ち行
列の間の通信の唯一の手段である。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は総括的に並列コンピュー
タ・システムにおけるプログラムの効率的な並列化に関
し、詳細にいえば、効率的な問題プログラムの並列化を
もたらす待合せ、通信、及びスケジュール/ディスパッ
チ・システムの独自のオブジェクト格納カプセル化に関
する。本発明は並列コンピュータ環境における「マルチ
・タスキング」または「マルチ・プログラミング」をサ
ポートする既存のオペレーティング・システムのタスキ
ング構造にアーキテクチャ上の拡張をもたらす。
【0002】
【従来の技術】まずはじめに、本願に用いられる用語に
ついて定義する。
【0003】干渉性(メモリの整合性)とは、複数個の
物理的コピーが存在しても、あるいはデータが複数個の
プロセッサによって共用されていても、データのコピー
が論理的には1つしかないことを保証するものである。
これはアトム性、同期、順次性などについての保証は含
んでいない。
【0004】概念的な順序とは命令が1度に1つずつ順
次実行されるビューである。
【0005】物理的順序とは物理的プロセッサによる実
際の実行順序であり、概念的な順序外の命令の実行を含
んでいる。
【0006】観察された順序とは観察された命令実行の
実際の順序である。これは概念的な順序あるいは物理的
順序に合致していることも、合致していないこともあ
る。
【0007】タスクの順次性とは、タスク(プロセス)
それ自体が命令を実行し、概念的な順序でメモリを参照
しているものと見ることを保証するものである。
【0008】タスク間順次性(タスク間の概念的な順
序)とは、タスクが他のタスクを命令の実行及びメモリ
へのアクセスを順次(概念的な順序で)行っているもの
のように見ることができることを保証するものである。
これは独立したタスクが共用データを介して同期または
通信している場合に重要であるが、それ以外の場合には
一般に重要なものではない。
【0009】アトム性(ブロック平行性)とはデータの
修正が完全に行われるか、まったく行われないように見
え、部分的に行われるようには見えないことを保証する
ものである。
【0010】同期とは、実行順序または実行点を2つ以
上のタスクの間で指定できることを保証するものであ
る。これは同期しているタスクの間のタスク間順次性、
干渉性及びアトム性をこの点で指定できることを保証す
る。
【0011】本明細書で使用する場合、キャッシュとは
ソフトウェアが補助することもあるが、主としてハード
ウェアが管理するプロセッサの論理記憶域をいう。
【0012】本明細書で使用する場合、私用記憶域とは
ソフトウェアが管理するタスク局所記憶域をいう。これ
は、たとえば、IBMシステム/370のレジスタを含
んでいる。
【0013】次に、従来の技術について述べる。
【0014】コンピュータ能力に対する要求がますます
高くなり、単一プロセッサ(ユニプロセッサ)が遂行で
きる能力を凌駕するようになった。高性能なコンピュー
タは並列に作動する多くのプロセッサを必要とするよう
になっている。マルチプロセッサ・システムの1つのタ
イプでは、プロセッサの各々が同一のメイン・メモリを
共用している。すなわち、いわゆる密結合並列プロセッ
サである。さらに、数値演算適用業務が増加しており、
きわめて高速でのベクトル処理能力が必要となってい
る。
【0015】密結合マルチプロセッサ・システムの例と
しては、IBMシステム/390、9000シリーズ・
ファミリーのコンピュータがある。密結合マルチプロセ
ッサ(MP)・システムの基本編成は、基本記憶モジュ
ール(BSM)といわれる複数個の独立してアドレス可
能なメモリ・モジュールに選択的に接続できる複数個の
プロセッサからなっている。典型的なMPシステムにお
いては、N個のプロセッサとM個のBSMがある。ただ
し、Mは通常Nよりも大きい。すべてのプロセッサがB
SMに対する均等なアクセスを必要とするため、プロセ
ッサをアドレスされたBSMに選択的に接続し、データ
の分類及び検索を行うクロス・バー切換えなどのいくつ
かの形態のNxMの切換えがある。
【0016】これらの並列マルチプロセッサ・ハードウ
ェア・アーキテクチャはユニプロセッサ・システムをか
なり上回る性能上の利点を約束するものであるが、この
約束は実用上完全に実現されていない。MPシステムは
マルチ・ジョブ及びマルチ・プログラム適用業務に高い
スループットをもたらすものであるが、単一ジョブ及び
単一プログラムの適用業務(現在、並列処理と呼ばれて
いる)のスピードアップはそれほど簡単には達成できて
いない。並列処理アーキテクチャに共用プロセッサを用
いるために、システムのみによるもの、及び実プロセッ
サの専有化によるものという2つの方法が使用されてい
る。最初の方法においては、オペレーティング・システ
ムが担当する。オペレーティング・システムがプロセッ
サ(及び待ち行列)をディスパッチしようとする場合、
オペレーティング・システムはしばしば大規模な待合せ
処理を行わなければ、いずれかのプロセッサが利用でき
るようにならず、その後、時間のかかるコンテキスト切
換えを行って、次のスレッドを設定しなければならな
い。この手法の例は米国特許第4177513号明細書
に開示されており、これにはIBM S/38コンピュ
ータ・システム用のタスク処理装置が記載されている。
このシステムに関し、スレッドはプロセスの実行パスで
あり、スレッドのコンテキストはタスクである。実行す
べき多数のスレッドがある場合、システム・パフォーマ
ンスは大幅な影響を受ける。したがって、今日まで、並
列に効率的に処理できるものは、「大細分性」(すなわ
ち、多数の命令を有している)のスレッドだけとなる。
現在、利用可能な最善のコンピュータを用いても、プロ
セスをディスパッチする際のオペレーティング・システ
ムのオーバヘッドは、パフォーマンスを効率のよいもの
にするために、最小グレイン・サイズとして少なくとも
約5,000の命令を必要とする。
【0017】第2の方法においては、プロセッサは並列
実行専用の1つまたは複数のプロセッサを保持してい
る。プロセッサが専用化された場合、スレッドのコンテ
キストは大部分が複数のスレッドの間に保持され、これ
はディスパッチ・パスを減少させる。それにもかかわら
ず、この方法はオペレーティング・システムが使用され
ていない場合に、専用プロセッサがときどき遊休状態と
なるため、他の非効率性を生じさせる。
【0018】並列適用業務を制御するためにスーパーコ
ンピュータが提供するハードウェア機構を以下に説明す
る。
【0019】・すべてのシステムは並列化されたジョブ
の並列スレッドを制御するための専用の高速なハードウ
ェアを備えている。
【0020】・設けられているほとんどの機構は、並列
処理に関与するプロセッサの数を静的に決定し、専用化
することを必要としている。例外は新しいシステムの1
つ、CONVEXで、これはこの問題を特に取り上げ、
この問題を解決する機構を備えている。
【0021】・専用化されていない場合、並列ジョブの
ターンアラウンドを良好なものとするためには、プロセ
ッサの有効な割振りが必要であるが、プロセッサを専用
化するというアーキテクチャ上の要件は、IBMのVM
/OSなどの仮想計算機オペレーティング・システム、
IBMのMVS/OSなどの多重仮想記憶システム・オ
ペレーティング・システムあるいはUNIXオペレーテ
ィング・システムの環境では望ましくなく、また適用業
務のテスト時にも望ましくない。
【0022】並列処理をサポートする各種のコンピュー
タ・システムが提供している同期機構を以下で検討す
る。
【0023】Cedar Cedarはアーバナ・シャンペインにあるイリノイ大
学のスーパーコンピューティング研究開発センタが開発
したものである。改造されたAlliantFX/8プ
ロセッサの「クラスタ」で構成されるように設計されて
いる。かくクラスタは8つの密結合FX/8プロセッサ
からなっている。複数個のクラスタを共用大域メモリと
結合することができる。S. P. Midkiff及びD. A. Padua
は「Compiler Algorithms for Synchronization」、IEE
E Transactions on Computers,vol. C-36, no. 12、1
987年12月で次のように述べている。
【0024】「本論文では、各プロセッサが出したすべ
ての保留メモリ・アクセスが完了するまで、wait_for_m
emoryというルーチンを呼び出すことによって、各プロ
セッサを待機させることができる。」
【0025】タスクの順次性のアーキテクチャ上の保証
はなく、ましてやタスク間順次性の保証はない。S/3
70は前者を常に保証しており、またcompareや
swapなどの同期化操作を使用した場合には、後者を
保証するものである。S. P.Midkiff及びD. A. Paduaは
上記文献において、同期化について次のように論じてい
る。
【0026】「あらゆるタイプの同期化において、2つ
の機能が必要である。第1はアクションが生じるまで待
機できることであり、第2はアクションが生じたことを
通知できることである。第1の機能はtest命令によ
って与えられる。...この命令は変数の値が少なくと
も(指定の)数値に等しくなるまで完了しない。
【0027】「第2の機能はtestset命令によっ
て与えられる。...これは変数の値をテストし(その
後)、現行の反復数に対する引き数をセットする。
【0028】「set命令は何らかの事象が発生したこ
とを(アレイにビットをセットすることによって)通知
するために使用され、wait命令はその事象が発生す
るまで待機するために使用される。」
【0029】test及びtestset命令はS/3
70のcompare及びswapを拡張したものであ
り、set及びwait命令はtest及びsetに類
似したものである。この手法はプロセッサの専用化及び
スピン待ちを必要とする。
【0030】コンベックスCシリーズ コンベックス・コンピュータ・コーポレーションの手法
は最大4つの態様で密結合されるプロセッサをもたら
す。CONVEX UNIXはハードウェア・アーキテ
クチャのスケジューリング機能を使用して、その機構を
実現し、ほとんどの並列プロセッサに存在しているシリ
アル・ボトルネックを回避している。このシステムは一
連の大域レジスタを含んでおり、プロセッサ間の通信を
可能としている。各実行プロセスは8組の通信レジスタ
の1つに割り振られる。システムの任意のあるいはすべ
てのCPUが、該当するインデックスをインデックス・
レジスタにロードするだけで、所与の通信レジスタ・セ
ットのデータを同時に参照できる。通信レジスタからの
データのロード及び検索、個々のレジスタのロック、な
らびに追加のプロセッサが演算処理に加わることの要請
のための命令が設けれれている。
【0031】コンベックスのシステムはプログラムを複
数の部分に分割すること、及びこれらの部分をハードウ
ェア内で同期させることを実現し、並列処理に通常とも
なっているソフトウェアのオーバヘッドを実質的に排除
している。これによって、コンベックスのシステムが並
列コードのきわめて小さい部分であっても並列に処理す
ることが可能となり、典型的なプログラムの部分よりも
多くの部分を同期させることができるようになる。この
こと自体は新しいアイデアではないが、従来の並列処理
はCPUをこれらのCPUを使用しようとするプログラ
ムに事前割振りさせるものである。このことは、あるジ
ョブが実行されている間、他のジョブにこれらのプロセ
ッサが使用できないことを意味する。これは実行される
プログラムが1つだけしかない環境では申し分のないも
のであるが、実際には、この環境のシステムはほとんど
存在していない。
【0032】この欠点を修正するために、コンベックス
のシステムは付加的なCPU資源を取得するためのジョ
ブ用の機構を備えている。コンベックスは並列コードを
実行しているCPUに他のCPUが従属することを必要
としない非同期機構を実施している。並列プログラムを
実行しているCPUがコードの並列に実行することので
きる部分に到達した場合、このCPUが行うのはその通
信レジスタ・セットにフォーク要求というフラグを記入
することだけである。その後、プロセッサはプログラム
の実行を継続する。
【0033】プログラムを実行していないCPUは作動
可能状態という特別なマイクロコード・ループを実行す
る。作動可能ループにおいて、CPUはすべての通信レ
ジスタを走査して、並列化可能適用業務を実行している
プロセッサが記入した援助を求める要求を探す。見つか
った場合、CPUは演算処理に加わり、適用業務を実行
する速度を直ちに増加させる。コンベックスはこの機能
を、「自動自己割振りプロセッサ」すなわちASAPと
呼んでいる。ASAPは単一のプログラムがシステム全
体のすべての資源を使用できるようにする。
【0034】CONVEX UNIXはオーバヘッドを
最小限のものとし、ボトルネックを減少させるために特
に調整されたものである。システム自体には並列実行の
ためのセマフォアがつけられている。スケジューリング
・システムはハードウェアの並列処理能力を中心として
設計されており、ハードウェアのスレッド作成活動をO
Sの介入なしに進めることができる。付加の大きな環境
では、スレッドが優先的に作成され、もっとも優先順位
の高いプログラムがもっとも多くのCPU資源を得るよ
うにされている。
【0035】コンベックスの実施形態によって、以下の
ものを含むさまざまな事項が認識されるようになった。
【0036】1)ハードウェアが並列スレッドを同期化
することの必要性。 2)スレッドの定義及びディスパッチにおけるOSソフ
トウェアの制限 3)スレッドのディスパッチにおけるハードウェアの援
助の必要性。 4)ジョブに対するプロセッサの専用化の不適正度。 5)プロセッサの動的割振りの必要性。
【0037】クレイX−MP Kai Hwangは「Multiprocessor Supercomputers」、IEEE
Computer、1985年6月において、クレイX−MP
スーパーコンピュータを最大4つの態様で密結合される
プロセッサを備えたものと説明している。4つのCPU
が5つのクラスタの共用レジスタによって相互連絡し、
同期している。オペレーティング・システムはクラスタ
をCPUに割り振る。割り振られたクラスタにユーザ・
モードまたはスーパーバイザ・モードのいずれかによっ
て、CPUがアクセスできる。クレイのオペレーティン
グ・システムは並行で独立したユニプロセッサ・ジョ
ブ、単一ジョブのマルチプロセッシング、及び共通メモ
リ・スペースを共用してプログラムの2つ以上の部分
(タスク)を実行し、逐次実行プログラムよりもスルー
プットを相当程度改善するマルチタスキングをサポート
するように設計されている。
【0038】この手法には資源管理の点で重大な問題が
ある。たとえば、単一の適用業務内で、あるいはシステ
ムに1度に1つしかない複数の適用業務の間で、これら
のビットをどのように割り振るのか。これを管理する方
法によっては、2つ以上のジョブを1度に実行すること
が不可能となるし、あるいは、クラスタをジョブ専用と
しない限り、2つのジョブの間で競合が生じることもあ
る。
【0039】Kai Hwangは上記の文献において、次のよ
うに述べている。「これらの能力はすべて、FORTR
ANからアクセスできるライブラリ・ルーチンによって
利用可能となる。さらに、ハードウェアはプロセッサの
クラスタ内のデッドロックの内蔵検出機能を備えてい
る。」
【0040】これはプロセッサが専用化されることと、
タスクの数が物理プロセッサの数以下であることを意味
している。
【0041】機械がジョブ専用となっていない場合、他
の資源管理上の問題が生じる。ジョブのあるタスクがそ
のタイムスライスを完了し、スワップ・アウトされた場
合、この資源を使用しようとする他のジョブの他のタス
クをスタートすることができない。これは最初のジョブ
の他のタスクが他のプロセッサでまだ実行中のことがあ
るからである。ジョブがスワップ・アウトされた場合、
この資源の状態を保管し、ジョブが再開された場合に、
再ロードすることが必要となるであろう。さらに、負荷
を平衡させる問題やスケジューリングの問題があり、ま
たジョブ内あるはジョブ間での保護がない。
【0042】デネルカーのHEP Kai Hwangは上記の文献において、このシステムが最大
16の態様で密結合されるプロセッサからなり、無制限
のアドレス指定をもたらし、共用データ・メモリ・モジ
ュールを介した直接内部データ転送によってデータ依存
遅延を排除するものであると述べている。同期化はハー
ドウェアによって行われる。S. P. Midkiff及びD. A. P
aduaは上記文献において、このシステムについて次のよ
うに述べている。
【0043】「フル/エンプティ同期化(FES)はデ
ネルカーHEPで初めて実施された。...FESにお
いては、1ビットのキーが各データ・ワードと関連づけ
られている。このキーはデータ・ワードがフルまたはエ
ンプティいずれの状態であるかを判断する。データ・ワ
ードを同期化した読取りで読み取った場合、キーはエン
プティにセットされ、同期化書込みで書き込んだ場合、
フルにセットされる。キーの状態を調べることによっ
て、対応するワードを読み取ったり、書き込んだりして
も大丈夫かどうかを判断できる。」
【0044】「FEXの主な欠点はワードが2つの状態
しかとれないことである。ワードを単一のループで数回
にわたって読み書きした場合、その特性を表すには、3
つ以上の状態が必要である。このため、いくつかの変数
を2つの構成要素を有する構造に置き換える。構成要素
の1つはDATAで、これは変数に関連する値を保持す
る。もう一方の構成要素はKEYで、同期化した操作に
使用される整数変数を保持する。単一のビットの代わり
に整数キーを設けることにより、各データ・ワードに対
する多くの状態を表すことができる。筆者らが目的とす
るところでは、キーを定数にセットするか、これを1つ
増加させるかをできることが必要である。」
【0045】これはHEP手法の問題点を指摘している
だけではなく、「カウンタ」の定義も行っているもので
ある。バリア及びDOACROSSなどの多くの状況に
おいて、任意の回数の反復を同期させるために、「キ
ー」またはカウンタが1つだけ必要な場合に、すべての
メモリ・ワードに別々のフラグを設けるのにHEPの効
率が悪いということは指摘していない。反復Nがその変
数をセットしていることを知るのだけが必要な場合、D
OACROSSには単一のカウンタが適正なものとな
る。バリアを実行することは常に適正であるが、HEP
の手法は常に不適正である。
【0046】HEPのもうひとつの大きな問題は、デー
タの同期通信がメモリを介するものであり、したがっ
て、メモリの速度より速く実行できないことである。適
用業務によっては、これが充分な速度でないことがあ
る。
【0047】その他の主要要素 カウンタ及び待ち行列 カウンタと待ち行列は一般的な概念であり、データ構造
に関する多くの基本的なプログラミングの文献で説明さ
れている。しかしながら、本発明において実際に使用す
るカウンタと待ち行列はその機能及び特性の多くを、当
初S/38において、設計済みのS/370機械インタ
フェースとほぼ同等であるが、S/38において適用業
務プログラマには直接見えない内部機械プログラミング
・インタフェースの一部として定義されたカウンタ及び
待ち行列に負っているものである。S/38のカウンタ
及び待ち行列は前出の米国特許第4177513号明細
書及びIBM刊行物SC21−9037に記載されてい
る。
【0048】本明細書で使用する場合のカウンタ及び待
ち行列の機能的能力及び命令セットは、S/38のもの
と類似しているが、密並列性をサポートするのに必要な
いくつかのきわめて重要な点で異なっている。
【0049】マイクロ・ディスパッチング 微細な(すなわち、小さい)作業単位をディスパッチす
るという重要な要素は、作業単位をディスパッチするき
わめて効率のよい手段をもたらす。MVS及びVMオペ
レーティング・システムの典型的なシステム・ディスパ
ッチャは、作業の一部をディスパッチするのに数千の命
令を要する。典型的な経験則は16のプロセッサのシス
テムに対するものであり、これは作業単位を妥当な効率
をもたらすためにディスパッチング・コードのパス長の
約10倍にすることを必要としている。それ故、数万の
命令のグレイン・サイズはサポートできる最小のものと
なる。本発明の目標は、1,000程度の命令のグレイ
ン・サイズをサポートし、またハードウェアをオーバヘ
ッドの削減にあてることによって、サポート可能なグレ
イン・サイズを任意に減らすことのできるアーキテクチ
ャ上の手法を提供することである。
【0050】対照的に、クレイの最初のオファリングに
はそのマルチ・タスキング・ディスパッチャの高いディ
スパッチング・オーバヘッドという欠点があった。これ
はIBMの最初のオファリング、FORTRANマルチ
タスキング機構(MTF)にも当てはまるものであっ
た。その後、クレイは「マイクロ・ディスパッチング」
機構を提供し、IBMは並列FORTRANを発表し
た。これらの新しいオファリングは適用業務固有の「マ
ルチ・ディスパッチャ」を備えており、これは汎用シス
テム・ディスパッチャよりもオーバヘッドが少ないもの
である。これはIMS、CICSなどのプロダクトによ
って、ディスパッチング・オーバヘッドを減らすために
長年にわたって使用されていた技法である。ソフトウェ
アに対するオーバヘッドは最小限まで減らされるが、サ
ポート可能なグレイン・サイズは依然、約10,000
程度の命令に限定されている。純粋なソフトウェア手法
によって、これ以上の大幅な改善は期待されず、したが
って、何らかのタイプのハードウェアのサポートが必要
である。
【0051】マルチスレッド・オペレーティング・シス
テム パーソナル・コンピュータ用のIBMのOS/2バージ
ョン2.0やサン・マイクロシステムズのSolari
sなどのマルチスレッド・オペレーティング・システム
が入手可能となっており、またマイクロソフトのWin
dows NT及びUNIXに対するPOSIXマルチ
スレッド規格などの新しいマルチスレッド・オペレーテ
ィング・システムが近いうちにリリースされたり、ある
いは提案されようとしている。マルチスレッド・オペレ
ーティング・システムは、ディスパッチング・プロセス
での大きなオペレーティング・システム・オーバヘッド
なしに、実プロセッサにアクセスすることを可能とす
る。
【0052】本発明では「スレッド」という概念を用い
ているが、これが稼動するマルチスレッド・オペレーテ
ィング・システムを必要としないものである。実際に
は、「スレッド」という概念はVM及びMVSオペレー
ティング・システムでは知られていなかったが、これら
のオペレーティング・システムは本発明をサポートでき
る。
【0053】並列処理に関する高水準科学技術言語イン
タフェースで定義されているものは現在存在していな
い。並列処理ではジョブ内で並列プロセスを作成し、管
理することが必要である。マルチタスキングFORTR
AN(MTF)などのプロダクトはこの実現可能性及び
価値を実証しているが、これらはIBMの多重仮想記憶
(MVS)あるいは仮想計算機(VM)オペレーティン
グ・システムなどの現行のオペレーティング・システム
機構を使用したプロセス管理に関連した高いオーバヘッ
ドも示している。Alan H. Karp及びRobert G. Babb II
は「A Comparisonof 12 Parallel Fortran Dialect
s」、IEEE Software、1988年9月、pp. 52-67で並
列FORTRANの概要を述べている。微細グレイン
(1,000回未満の演算)及び中型グレイン(10,
000回未満の演算)の並列処理の場合、より効率のよ
い管理機構が必要である。一般に、新しいオペレーティ
ング・システムを作成し、古いものを放棄するのは容易
ではなく、したがって、既存のオペレーティング・シス
テム内で必要な目的を達成する手法が必要である。
【0054】
【発明が解決しようとする課題】したがって、本発明の
目的は、高性能な密並列処理をサポートするために、既
存のオペレーティング・システム内にアーキテクチャ上
の基盤を提供することである。
【0055】本発明の他の目的は、汎用マルチスレッ
ド、マルチタスク管理のための基盤である一連のプリミ
ティブを提供することによって、広範囲の高水準並列機
能をサポートすることである。
【0056】本発明のさらに他の目的は、メモリ操作に
対する参照なしに、広範囲の実施形態が可能な態様で、
並列アーキテクチャ拡張機能を提供することである。
【0057】本発明のさらにまた他の目的は、システム
・サービスのオーバヘッドを受けることなく、高度なシ
ステム整合性を提供することである。
【0058】本発明のさらにまた他の目的は、並列プロ
グラミング環境において、オペレーティング・システム
とエンド・ユーザの両方にとってシステムを使いやすく
することである。
【0059】
【課題を解決するための手段】本発明によれば、待ち行
列及びカウンタへのアクセスが「オブジェクト記憶域」
という特別なオペランドだけによって行われる「密閉
化」というプロセスを使用するアーキテクチャが提供さ
れる。この機構だけがオブジェクト記憶域で制御され、
ユーザはいかなる場合でもこれに直接アクセスすること
はできない。ユーザが待ち行列にアクセスすることが必
要な場合、これをシステムに要求しなければならない。
システムは次いで、ユーザに「トークン」を出して、こ
のようなアクセスを与える。トークンはこれらが出され
たコンテキストでのみ有効である。このトークンはユー
ザと要求された待ち行列の間の通信の唯一の手段であ
る。それ故、ディスパッチのためのコンテキストの切換
えは必要ない。
【0060】密閉通信、オブジェクト及び機能を提供す
ることによって、機構はスレッドがシステム・オーバヘ
ッドを招くことなく通信を行うことを可能とする。スレ
ッドはスケジュール可能なプロセスによる実行の最小単
位ないしパスと定義される。オペレーティング・システ
ムはオブジェクト記憶域を使用することによってシステ
ムに通知することができ、オペレーティング・システム
のディスパッチ・プロセスを用いることなく、通信を可
能とするため、スレッドがオブジェクトへアクセスする
ことを許可された時期を、機構は認識することができ
る。さらに、実プロセッサが専用化されていないので、
実プロセッサは必要とされない場合に、他のプログラム
を実行できる。事実、他のプログラムはそのコンテキス
ト内でスレッドのオブジェクト・ディスパッチングも用
いる。実際には、スレッドの状態がオペレーティング・
システムにわからず、オブジェクト・ディスパッチャが
担当するのであるから、オペレーティング・サポートは
最小限に保たれ、これ自体が本発明の重要な利点であ
る。
【0061】密閉化プロセスはこのアーキテクチャに使
用される待ち行列システムとともに、より細かい細分性
をもたらす。待ち行列システムは前出の米国特許第41
77513号明細書記載のIBMのS/38コンピュー
タに使用されているものと同じものである。しかしなが
ら、本発明が教示するところを適用することによって、
機械サイクルの最小数を10,000から約100へ減
らすことができるが、これは2桁の削減である。それ
故、本発明はプロセッサの効率の悪い使い方の問題を解
決するだけでなく、細分性を大幅に改善するものでもあ
る。
【0062】現行のシステムで性能を制限している主な
ものはメモリ・アクセス時間である。このため、性能に
厳しい演算にメモリ・オペランドは避けられている。S
/38と異なり、カウンタ及び待ち行列はメモリ内に置
かれているのではなく、「オブジェクト記憶域」に置か
れている。この記憶域の性能、ならびにプロセッサとの
接続性は、主記憶域と別に決定することができる。それ
故、特定の適用業務の必要性能目標を満たすのに必要な
速度にすることができる。
【0063】性能の改善をもたらす他の要素はシステム
割込みの構造である。本発明によるアーキテクチャの拡
張の下では、待合せ命令の処理中に割込みは発生しな
い。命令と命令の間に割込みが発生することはできる
が、命令の途中で発生することはできない。これは重要
な資源を保護するロックのホルダに対する割込みを防止
することによって、性能を改善する。これらのロックは
機構の実施に必要なものであるが、機能がアトミック実
行されるため、ユーザには見えない。
【0064】本発明のアーキテクチャはこれが使用され
る環境と矛盾のない、許可や共用などの整合性の面での
特徴を備えている。既存のシステムでは、「問題プログ
ラム状態」命令を使用して、並列性プリミティブないし
「監視プログラム状態」サービスを構成することができ
る。問題プログラム状態の手法の方が効率がよいが、故
意または偶発的な誤用に対する整合性あるいは保護をま
ったく備えていない。本発明は問題プログラム状態の効
率とともに、監視プログラム状態サービスの整合性を備
えている
【0065】整合性はさまざまな態様で提供される。ま
ず、カウンタと待ち行列を保持する「オブジェクト記憶
域」は通常の命令ではアクセスできず、これによってオ
ブジェクトに対する偶発及び故意両方の損害を防止す
る。第2に、正規のアドレス・スペースと「関連づけ」
られるというオブジェクト・スペースの定義は、ユーザ
が正規の「関連」アドレス・スペースに対するアドレス
可能性を有しているオブジェクト・スペースに対してア
ドレス可能性を有していることを意味する。アドレス・
スペースを共用するため、オペレーティング・システム
がどのような機構(それぞれのオペレーティング・シス
テムで異なっていることがある)を設けても、これらは
関連するオブジェクト・スペースに対するアドレス可能
性を備えている。これは現行のオペレーティング・シス
テムの考え方と一貫した整合性を与えるだけでなく、オ
ブジェクト・スペースに対する他の整合性アーキテクチ
ャの必要性やこれをサポートするための対応するハード
ウェア及びソフトウェアの経費をなくすものでもある。
このような融通性の高い整合性保護は、現行の並列シス
テムにはまったく欠けているものである。
【0066】アーキテクチャが主として、適用業務コー
ドによる効率のよい直接使用を可能とする問題プログラ
ム状態命令であるため、本発明によれば、適用業務の並
列性をサポートするコンパイラの実現が容易となる。こ
れはコンパイラの設計者に、適用業務に並列性を作成
し、制御するための機械語レベルの構成を提供すること
によって行われる。問題プログラム状態の命令を、コン
パイラによってインライン・コードとして作成し、オペ
レーティング・システム・コールという非効率を避ける
ことができる。並列適用業務環境を確立したり、性能を
低下させる監視プログラム・サービスに対するシステム
・コールを行うために、コンパイラの設計者がアルゴリ
ズムやデータ構造を作成する必要はもはやなくなる。こ
のシステムはアセンブラ言語のプログラマにも利用可能
である。
【0067】性能を改善するさらに他の要素は、本発明
の固定タスク・ディスパッチング要素(FTDE)であ
り、これはプロセッサが利用可能になったときにこれら
を補充し、利用可能なプロセッサの動的補充をもたらす
ものである。多くのプロセッサがある動的環境におい
て、作業を行うために利用可能なプロセッサの数は時間
によって大幅に変動する。作業の並列部分がスタートし
た場合、利用可能なプロセッサはごく少数であるが、そ
の後間もなく、多くが利用可能となる。場合によって
は、援助のためにこれらのプロセッサを「補充」するこ
とが望ましいこともある。関与させるためのプロセッサ
のこの動的補充、ならびにこれによる負荷の再調整はジ
ョブのより迅速な処理をもたらす。
【0068】レジスタあるいはハードウェア・アレイを
使用して、オブジェクト記憶域をハードウェア内に実現
することができる。また、ソフトウェア・デバイスだけ
によって実現することもできる。しかしながら、ソフト
ウェア内に実施するオブジェクト記憶域が多くなればな
るほど、得られる性能の改善は少なくなる。本発明によ
るオブジェクト記憶域を実現するアーキテクチャを用い
ると、ハードウェアとソフトウェアのアクセスを組み合
わせて、希望する性能のレベルを作り出すことによっ
て、コンピュータ・システムを微調整することができ
る。
【0069】
【実施例】適用業務の並列性をサポートするためのIB
M S/370コンピュータ・システムのアーキテクチ
ャの拡張に関連して、詳細にいえば、たとえば、IBM En
terprise Systems Architecture/370、資料番号SA22-72
00-0に記載されているようなESA/370(エンター
プライズ・システム・アーキテクチャ)環境に関連し
て、本発明を開示する。これらのコンピュータで現在使
用されているオペレーティング・システムは多重仮想記
憶(MVS)及び仮想計算機(VM)オペレーティング
・システム(OS)である。これらのオペレーティング
・システムの総括的な知識については、Harvey M. Deit
elの「An Introduction to Operating Systems」、Addi
son Wesley(1984年)、H. Lorin及びH. M. Deitel
の「Operating Systems」、Addison Wesley(1981
年)、ならびにHarold S. Stoneの「High-Performance
Computer Architecture」、Addison-Wesley(1987
年)を参照されたい。しかしながら、本発明がS/37
0コンピュータ・システムのハードウェア・アーキテク
チャあるいはMVSまたはVMオペレーティング・シス
テムのいずれかに限定されないものであることを理解さ
れたい。
【0070】本発明はスモール・グレイン機構(SG
F)を特徴とするものであり、これはソフトウェアまた
はハードウェアの最小限のオーバヘッドで並列処理環境
を確立し、管理するために使用できる適用業務プログラ
ムを小さい命令セットで提供するものである。これによ
って、比較的小さいコード・セグメントを並列に実行す
ることによって得られるスピードアップを実現でき、こ
れらのセグメントを並列に実行することに関連したオー
バヘッドによって吸収されてしまうことがなくなる。
【0071】MVSまたは仮想プロセッサVMにおける
タスクの監視プログラム状態ディスパッチは、微細グレ
イン(1,000回未満の演算)及び中型グレイン(1
0,000回未満の演算)の並列処理には効率が悪すぎ
る。微細及び中型グレイン並列処理のパフォーマンスを
改善するために、コンパイラとオペレーティング・シス
テムが、既存のオペレーティング・システムのタスキン
グ構造内で効率のよい「マルチ・タスキング」または
「マルチ・プログラミング」を提供する本発明による新
しい機構を使用する。オペレーティング・システムの観
点からいうと、この新しい機構は実際には、競合し、衝
突するシステム・ディスパッチャではなく、変化し、分
岐するレジスタに見えるだけである。この新しい機構を
スレッド・ディスパッチングと呼ぶ。
【0072】スレッド・ディスパッチングはいくつかの
特別なオブジェクトを使用するスレッド・ディスパッチ
ャによって行われる。これらの構造の内容はユーザが直
接アドレスできないものであるが、ユーザによって「作
成」され、適切な命令によって参照される。これらの構
造の内容及び目的は、並列作業単位を定義し、ディスパ
ッチし、同期化するのに何が必要なのかを考慮すること
によって理解できよう。コンパイラが並列作業単位を定
義する場合、プログラム実行内でこれが始まる場所及び
初期の状態(たとえば、汎用レジスタの内容)を記述す
る何らかの方法がなければならない。以下で定義するス
レッド・ディスパッチング要素(TDE)はこれに役立
つものである。
【0073】図面、特に図1には、本発明によるスモー
ル・グレイン機構(SGF)100を組み込んだ並列プ
ロセッサ・システムの全体ブロック図が示されている。
この並列プロセッサ・システムはSGF100の一般的
な用途を説明するために、密結合プロセッサ及び疎結合
プロセッサの両方を含んでいる。詳細にいえば、図1に
おいて、SGF100の左側には、複数個のプロセッサ
1021、1022及び1023があり、これらは共通記
憶域104を共用している。それ故、SGF100の左
側のプロセッサは密結合マルチ・プロセッサ・システム
を構成している。図1においてSGF100の右側に
は、記憶域108を有する他のプロセッサ106があ
る。記憶域104及び108が別のものなので、このプ
ロセッサはプロセッサ1021、1022及び1023
組み合って、疎結合マルチ・プロセッサ・システムを構
成する。図1において、プロセッサの各々は命令ユニッ
トの「I」及び実行ユニットの「E」という2つのブロ
ックによって略示されている。プロセッサ1021、1
022及び1023には、状態ベクトル(SV)レジスタ
110が関連づけられている。同様なSVレジスタ11
2にはプロセッサ106が関連づけられている。SGF
100自体はオブジェクト・リポジトリ1001、並列
実行プロセッサ(P3E)1003、ならびにそれぞれ
プロセッサ1021、102 2及び1023ならびにプロ
セッサ106に関連づけられているトークン・プロセッ
サ1005及び1007で構成されている。オブジェク
ト・リポジトリ1001はメッセージ待ち行列、スレッ
ド・ディスパッチング待ち行列(TDQs)及びカウン
タ待ち行列を含んでいる。
【0074】図1において、状態ベクトル(SV)レジ
スタ110はプロセッサ1021、1022及び1023
の操作及び盛業状態を保持している。この状態から、プ
ログラムのコンテキストは、図3に詳細が示されている
トークン・プロセッサ1005によって決定される。同
様に、プロセッサ106の操作及び制御状態を保持して
おり、この状態から、プログラムのコンテキストがトー
クン・プロセッサ1007によって決定される。この図
において、SGF100の一部がそれぞれの破線104
1及び1081で示されるように、記憶域104及び記
憶域108と重なっていることに留意されたい。これは
オブジェクト・リポジトリを独立した記憶域に置く必要
がなく、記憶域104及び108に分散して置くことが
できることを示している。記憶域104と108に分散
されていても、ユーザ(すなわち、適用業務プログラ
ム)がオブジェクト・リポジトリにアクセスすることは
なく、これに対するアクセスはトークン・プロセッサ及
びP3Eプロセッサだけによって行われる。同様に、S
GF100の左側の部分はプロセッサ1021、1022
及び1023の実行ユニットと、また右側の部分はプロ
セッサ106の実行ユニットと重なっている。このこと
はP3E1003プロセッサがプロセッサ1021、10
2及び1023ならびにプロセッサ106のものとは別
な実行ユニットである必要がないことを示している。P
3Eプロセッサは通常プロセッサの一体的な部分、また
はプロセッサの各々に対するコプロセッサ・モジュール
のいずれかとして、いくつかのプロセッサに分散されて
いる。破線の重なりは、作成操作中に、トークン・プロ
セッサがオブジェクトを問題プログラムに関連づけた場
合に確立される論理関係も示す。
【0075】図2はプロセッサ1021、1022及び1
023ならびにプロセッサ106のうち典型的なものの
ブロック図である。命令制御ユニット(ICU)20
1、固定小数点演算ユニット(FXU)203及び浮動
小数点演算ユニット(FPU)205を有しており、こ
れらはすべて最近の典型的なプロセッサと同様、命令
(I)バス207によって接続されている。さらに、P
3Eユニット(P3EU)209がIバス207へ接続さ
れている。P3EU209は物理的にプロセッサの一部
であっても、多くのアーキテクチャに共通の数値計算コ
プロセッサとまったく同様に、プロセッサ・モジュール
上の独立したチップであってもよい。ICU201、F
XU203、FPU205、及びP3EU209の各々
はデータ制御ユニットDCU)213を介して、複数個
のメモリ・カード2111及び2112と通信する。さら
に、記憶制御ユニット(SCU)215はPバス217
を介して、ICU201及びFXU203と通信し、ま
たSIOバス219を介して、DCU213及び入出力
(I/O)ユニット221と通信する。SCU215は
電源投入時に、初期プログラム・ロード(IPL)ルー
チンを読取り専用記憶装置(ROS)223からICU
201へ供給する。さらに、SCU215はアドレスさ
れた記憶域がプログラム・メモリ(たとえば、ユーザ・
メモリまたは適用業務メモリ)の一部であるか、分散シ
ステム内のプログラム・メモリから分割されたオブジェ
クト・リポジトリの一部であるかを判断するリポジトリ
・セレクタ225を介して、アドレス及び制御出力をメ
モリカード2111及び2112にもたらす。
【0076】上記したところから、図2に示すプロセッ
サが、図1に示すSGF100の一部であるP3EU2
09及びリポジトリ・セレクタ225が追加された以外
は、ほぼ周知のものであることが理解されよう。
【0077】図3は密閉のためのトークン・プロセッサ
のデータ・フローを示すブロック図である。好ましい実
施例において、SVレジスタ110(図3)からのスペ
ース・アドレス出力301が、ライン303のトークン
305の出力を変換する場合のコンテキスト判断に使用
される。オブジェクト・アクセス・テーブル318から
項目317を選択する(315)するために、Iユニッ
ト311のオペランド・レジスタ(R)309からアド
レス313へのライン307上の出力によって、トーク
ン305が選択される。項目317はさらに、状態ベク
トル110の権限コンテキストをオブジェクト・アクセ
ス項目317に対して定義された権限と比較することに
よって、使用権限について検査される(319)。オブ
ジェクト・アクセス項目317が有効(V)であり(3
21)、かつ権限比較323が使用を許可している場
合、待ち行列ヘッダ325を使用して待ち行列327
(図1に示す)にアクセスし、図1及び図3に示すIユ
ニット311内のデコードされた操作コード(Opコー
ド)329が記述している機能を行う。オブジェクト・
リポジトリ1001は、以下で詳述するように、各種の
機能のための待ち行列を含んでいる。待ち行列を選択し
た場合、前出の米国特許第4177513号明細書に記
載されているタスク・ディスパッチャを含んでいるP3
Eユニット1003によって、機能が行われる。
【0078】図1に示すように、オブジェクト・リポジ
トリ1001はプロセッサの記憶域と一貫した態様でア
ドレスでき、メモリ部分1041及び1081によって
示唆される共通アドレス範囲にあるように見えるように
する。これは図3の315に示すハッシング・アルゴリ
ズムも容易にする。
【0079】図4はTDQ、SRQ、SRC、命令スト
リーム及び基本レジスタの間の相互関係を示す図であ
り、図5は前出の米国特許第4177513号明細書に
記載されている制御ユニットのサイクル・シーケンスの
相互関係を示す図である。メッセージ送信命令の実行
は、ほぼ図4に示すとおりである。詳細にいうと、メッ
セージ送信命令はメッセージ送信命令のIフィールド
(すなわち、R2レジスタ)に定義されたメッセージ
を、メッセージ送信命令のOP1フィールドによって指
定されたSRQに対して待ち行列化する。指定されたS
RQの待機リストのTDEは優先順位順にTDQに待ち
行列化される。図4において、LSRはローカル記憶レ
ジスタ・アレイで、GPR、FPR、ARなどのレジス
タを参照する。
【0080】タスク処理装置はタスク・ディスパッチャ
及びタスク間通信機構を含んでいる。タスク・ディスパ
ッチャはタスクディスパッチング待ち行列(TDQ)の
最優先タスク・ディスパッチング要素(TDE)を活動
化する。TDEは優先順位順にTDQに置かれている。
N個のレベルの優先順位がある。各タスクはプログラム
の制御によって変更できる優先順位キーを有している。
活動タスクによって命令が実行され、これによって作業
が行われる。あるいは、活動タスクは他のタスクと通信
を行って、他のタスクに何らかの作業を行うよう要求す
る。他のタスクは非活動ディスパッチ可能状態であって
も、非活動待機状態であってもかまわない。活動タスク
の命令取り出しサイクルは常に、入出力事象サイクルま
たはディスパッチ・サイクルを実行する必要があるのか
どうかをまず検査する。入出力祖巣値の状況は入出力事
象サイクル中に得られる。ディスパッチ・サイクルは古
いタスク・ディスパッチング要素(TDE)の状況を格
納し、CPU機構に新しいTDEの状況をロードする。
タスクの状況は命令アドレス、命令長カウント、条件コ
ード及び基本レジスタを含んでいる。
【0081】文献において並列処理を取り上げる場合、
ほとんどが「セマフォア」及びこれらを同期させて使用
することを取り上げている。以下で検討するスレッド送
受信カウンタ(SRC)は本質的に、高機能セマフォア
である。文献では、同期化のために待ち行列をしようす
ること、及び情報の通信も取り上げている。スレッド送
受信待ち行列(SRQ)はこの機能を提供する。スレッ
ドがスレッド送受信カウンタまたはスレッド送受信待ち
行列を使用する場合、希望する条件が満たされるまで待
たなければならないことがある。これが生じた場合に
は、スレッド・ディスパッチャはその状態を保管し、他
の作業単位をディスパッチしなければならない。スレッ
ド・ディスパッチング要素(TDE)はこの場合も、ス
レッドを保管する資源を提供する。簡単にいえば、これ
らの新しい機構を既存のオペレーティング・システムの
ディスパッチ可能な単位(たとえば、MVSタスク)内
で作業単位をマルチプログラミングする効率のよい手段
を提供する機構とみなすことができる。これはパーソナ
ル・コンピュータ用のIBM OS/2におけるスレッ
ドの定義と同様なものである。これらの構造については
すべて以下で詳細に定義する。スレッド送受信カウンタ
(SRC)、スレッド送受信待ち行列(SRQ)、スレ
ッド・ディスパッチング待ち行列(TDQ)、及びスレ
ッド・ディスパッチング要素(TDE)の数はモデルに
よって異なっている。
【0082】スレッド・ディスパッチング待ち行列(T
DQ) TDQはヘッダで、ディスパッチすることのできるスレ
ッド・ディスパッチング要素(TDE)の待ち行列を含
んでいる。TDEはこれらの優先順位フィールドの値に
したがって待ち行列に入れることによって、TDQに優
先順位の昇順で(もっとも低い値が最初になり、もっと
も高い値が最後になる)並べられる。TDEはTDQの
優先順位内で最後に待ち行列に入れられるので、複数の
TDEは任意所定の優先順位を使用して先入れ先出し
(FIFO)で処理される。これはTDEの優先順位の
待ち行列化を定義したものである。TDQは各SRC
(スレッド送受信カウンタ)及びSRQ(スレッド送受
信待ち行列)と「関連づけ」られている。SRCまたは
SRQと関連づけられたTDQは、TDEがディスパッ
チ可能となったときに、そこへ移動するTDQである。
ショート・ウェイト・オプションを有しており、かつ待
機しているTDEのあるSRCを「ショート・ウェイト
状態のSRC」と呼ぶ。TDQがショート・ウェイト状
態の関連SRCを有している場合、このTDQは関連シ
ョート・ウェイトSRCを有しているという。ショート
・ウェイトSRCについて、スレッド・ディスパッチャ
は特別な配慮をする。プログラムが無効なTDQを参照
しようとすると(有効な命令を使用して)、指定例外が
発生する。TDQをスレッド・ディスパッチング要素待
ち行列化(EQTDE)命令、スレッド・ディスパッチ
ング要素待ち行列解除(DQTDE)命令、またはスレ
ッド・ディスパッチング待ち行列ディスパッチ(DTD
Q)命令によって直接操作することができる。TDQに
は、このTDQ(すなわち、「関連」TDQ)を参照す
るスレッド送受信カウンタまたはスレッド送受信待ち行
列に対する操作の結果として暗黙のアクセスが行われ
る。
【0083】TDQはTDEが連鎖される待ち行列ヘッ
ダによって表される。TDQのヘッダのフォーマットは
以下の通りである。
【表1】
【表2】
【0084】スレッド・ディスパッチング要素(TD
E) TDEを使用して、コードの実行可能な部分、及びこれ
に関連する属性(たとえば、優先順位、レジスタの内
容)を識別する。TDEをEQTDE(スレッド・ディ
スパッチング要素待ち行列化)命令を使用して明示的に
作成することも、あるいは送信または受信タイプの命令
の結果として暗黙に作成することもできる。TDEを使
用して、スレッドの切り換え時に現行の状態を保管した
り、ロードしたりする。特定のスレッドに対するTDE
はスレッド・ディスパッチング待ち行列(TDQ)に置
くことも、あるいはSRQ(スレッド送受信待ち行列)
またはSRC(スレッド送受信カウンタ)の待機リスト
に入れることもできる。スレッドが命令の実行に適格で
ある(スレッド・ディスパッチング)場合、関連するT
DEがTDQに入れられる。プログラムが無効なTDE
を参照しようとした場合(DQTDE(スレッド・ディ
スパッチング要素待ち行列解除)命令で)、指定例外が
発生する。
【0085】TDEのフォーマットは次の通りである。
【表3】
【表4】
【表5】
【0086】スレッド送受信待ち行列(SRQ) SRQはスレッド間での情報の交換、及びスレッド間で
の制御の転送の同期化を行うために使用されるオブジェ
クトである。1つのスレッドは送信タイプの命令をSR
QまたはSRCに出すことによって、他のスレッドと通
信できる。この場合、他のスレッドは受信タイプの命令
を出すことによって、待ち行列またはカウンタから情報
を得ることができる。これらの機構はさまざまな形態の
効率のよいスレッド間通信及び同期化の基礎として有用
なものである。スレッドの同期化は以下のように、スレ
ッド送受信メッセージ及びSRQを使用してもたらされ
る。活動スレッドがメッセージ受信命令を出し、目標S
RQに(1)メッセージがないか、(2)メッセージ受
信命令の探索引き数を満たすメッセージがないかのいず
れかである場合、スレッドは進行しない。その代わり、
スレッドは命令の状態をTDEに保管し、命令を目標S
RQの待機リストに待ち行列化することによって、受信
待機状態になる。次いで、スレッド・ディスパッチャを
呼び出し、次のスレッドをSRQの関連TDQから活動
化するかどうか決定する。SRQの状態フラグ・ベクト
ルは、TDEがSRQで待機状態になった場合に、保管
すべき状態を定義する。状態が保管された場合、これら
のフラグの値はTDEにコピーされるので、TDEがデ
ィスパッチされた場合、復元しなければならない状態が
分かる。送信及び受信タイプの操作はスレッドによっ
て、またマイクロコード機能によって命令として明示的
に実行される。プログラムが無効なSRQを参照しよう
とした場合、指定例外が発生する。
【0087】SRQヘッダのフォーマットは次の通りで
ある。
【表6】
【表7】
【0088】スレッド送受信メッセージ(SRM) メッセージ送信(SENDM)命令またはメッセージ待
ち行列化(EQM)命令が実行された場合、SRQに置
かれる情報をメッセージ送受信メッセージ(SRM)と
呼ぶ。SRMは独立して作成されるものではなく、本明
細書で定義する他のものと同様アドレス可能なものであ
る。SRMはSENDMまたはEQMの結果として動的
に「作成」され、メッセージ受信(RECM)命令また
はメッセージ待ち行列解除(DQM)命令を使用して、
情報を検索した場合に、SRQから「除去」される。メ
ッセージの情報は、メッセージがSRQに入れられたと
きには、指定されたレジスタから取り出され、またメッ
セージがSRQから検索されたときには、指定されたレ
ジスタに入れられる。レジスタ番号はSENDM、EQ
M、RECM、またはDQM命令に指定されるが、レジ
スタ・タイプ(たとえば、汎用レジスタ(GPR)、ア
クセス・レジスタ(AR)、浮動小数点レジスタ(FP
R))はSRQが作成されたときに指定される。要する
に、これによってスレッドの間のレジスタ間通信が可能
になる。SRMは優先順位を有しており、「メッセー
ジ」を含んでいるが、これはしばしばアドレス可能記憶
域内の情報に対するポインタである。
【0089】SRMに対する記憶域はオブジェクト記憶
域から動的に割り振られる。SRMのフォーマットは次
の通りである。
【表8】
【表9】
【0090】スレッド送受信カウンタ(SRC) SRCはSRQとほとんど同じ態様で使用されるスレッ
ド・オブジェクトであるが、メッセージが入れられない
ことが異なっている。その代わり、カウント送信(SE
NDC)命令がSRCヘッダのカウント・フィールドを
増加させる。カウント受信(RECC)命令はカウント
を減少させる。SRCの状態フラグ・ベクトルは、TD
EがSRC上で待機するようになったときに保管すべき
状態を定義する。これらのフラグ値は状態が保管された
ときにTDEにコピーされるので、TDEがディスパッ
チされた場合、復元しなければならない状態が分かる。
プログラムが無効なSRCを参照しようとした場合、指
定例外が発生する。
【0091】SRCのフォーマットは次の通りである。
【表10】
【表11】
【0092】記憶域の割振りとアドレス指定 上記で定義したオブジェクトは、定義済みの作成命令を
使用して作成した場合に、これらが機械によって「密
閉」される点で独自のものである。オブジェクトを作成
した場合、作成命令は「オブジェクト・スペース」に、
オブジェクトを参照するために以下で定義する命令が使
用できる「アドレス」を返す。オブジェクトはアドレス
可能なメモリに規則正しく「常駐」せず、メモリへの参
照を有する通常の命令を使用して参照することはできな
い。
【0093】返されるアドレスは次のようなアーキテク
チャ上の特性を有している。
【0094】i.アドレスを使用してメモリを参照した
場合に、参照されたアドレス・スペースと関連づけられ
ている。分散システムでは、ノードの参照がアドレス・
スペースの一致によって含められる。したがって、アド
レス・スペースと関連づけられたオブジェクトと通信を
行うことができる。PURGE命令を使用して、アドレ
ス・スペースに関連するすべてのオブジェクトを破壊で
きる。
【0095】ii.関連するアドレス・スペースが存在
していなければならず、また命令の発行者に対して許可
されていなければならない。そうでない場合には、オブ
ジェクトの参照によって、アドレス指定例外が発生す
る。
【0096】iii.制御レジスタ(CR)、アクセス
・レジスタ(AR)またはその他の機構を使用して、参
照される可能性のあるアドレス・スペースを制御する場
合、これらはアドレス・スペースに関連するオブジェク
トに対するアドレス可能性も制御する。たとえば、アク
セス・レジスタの場合、ユーザはアクセス・レジスタの
内容をセットし、作成されたオブジェクトが関連づけら
れるアドレス・スペースを制御しなければならない。
【0097】iv.ユーザがメモリのアドレスを「構
成」するのとまったく同様に、ユーザはオブジェクトの
アドレスを構成できるが、これらが使用されるのは、ユ
ーザがアクセスしたアドレス・スペースに関連づけられ
た有効な(作成された)オブジェクトを参照するためだ
けである。
【0098】v.アドレスを使用して無効なオブジェク
ト(破壊されたか、まだ作成されていない)を参照した
場合、指令例外が発生する。
【0099】vi.アドレス値は再使用できる。すなわ
ち、アドレスが破壊後に、作成に戻された場合、同じア
ドレス値を再使用できる。
【0100】vii.所与の時間に存在できるオブジェ
クトの実際の数は、モデルによって異なり、診断機能を
使用して機械から取り出すことができる。
【0101】この手法は不適正なアクセスを防止するこ
とによってオブジェクトの整合性をもたらすとともに、
システムが制御する記憶域に潜在的にきわめて高速なア
クセスをもたらす。ユーザにはオブジェクトを表すのに
使用された実際の機構が見えないのであるから、実施例
をユーザに影響を及ぼさずに変更することができる。疎
結合システムのスレッド間の同期化であっても、実施機
構が提供されれば、このインタフェースによってサポー
トできる。
【0102】スレッドのディスパッチング スレッドのディスパッチングはスレッド・ディスパッチ
ャという機械の機能によって処理される。スレッド・デ
ィスパッチャは送受信タイプの命令によって暗黙に、あ
るいはスレッド・ディスパッチング待ち行列ディスパッ
チ命令によって明示的に呼び出される。どのスレッドを
次にディスパッチするかを決定し、スレッドの切換えを
行うのはスレッド・ディスパッチャである。新しいスレ
ッドの状況は次のスレッドのTDEから取られる。
【0103】スレッド・ディスパッチング機能に関連 づけられる基本オブジェクトはTDQである。ディスパ
ッチすることができるTDEはTDQに入れられ、ディ
スパッチされた場合に、通常、スレッド・ディスパッチ
ャによって待ち行列解除される(すなわち、TDE記憶
域が開放される)。しかしながら、TDEの「固定」オ
プションがオンの場合には、TDEはディスパッチ後に
除去されない。
【0104】スレッド・ディスパッチャは下記の条件の
いずれかが発生した場合に呼び出される。
【0105】i.送信操作(メッセージまたはカウン
ト)が発生し、送信操作によってTDQに入れられたも
のよりも優先順位の高いTDEがTDQにある。これら
の高優先順位のTDEは「他作業」または「再開」事象
TDEによるものであることがある。この場合、現在作
動しているスレッドの状態は、SRQまたはSRCから
のものと同じ優先順位でTDQに入れられるTDEに保
管される。
【0106】ii.受信操作(メッセージまたはカウン
ト)が発生し、受信が満たされない。この場合、現在の
状態は受信操作によってSRCまたはSRQの待機リス
トに入れられるTDEに保管される。
【0107】iii.スレッド・ディスパッチャはスレ
ッド・ディスパッチング待ち行列ディスパッチ(DTD
Q)命令によって明示的に呼び出される。
【0108】これら3つの場合すべてにおいて、TDQ
内のもっとも上のTDEがディスパッチされる。2番目
及び3番目の場合、TDQは空であってもよい。TDQ
が空の場合、次の状態が生じる。
【0109】i.TDQが何らかのショート・ウェイト
SRCを有している場合、プロセッサはショート・ウェ
イトを待つか、タイムアウトになるまで待つ。
【0110】ii.ショート・ウェイトSRCがない
か、タイムアウトが生じない場合、「空TDQ」事象T
DEがあれば、それがディスパッチされる。
【0111】iii.「空TDQ」事象TDEがなく、
親TDQがある場合、親TDQがディスパッチされる。
【0112】iv.「空TDQ」事象TDEがなく、親
TDQがない場合、TDQ空例外(プログラム)が通知
される。
【0113】2番目の状況はスレッド・ディスパッチャ
に作業がなくなったことを意味する。プログラミング・
システムは「空TDQ」をTDQに入れ、この状況を処
理しなければならない。したがって、ディスパッチされ
るTDEが他になくなった場合に、これがディスパッチ
される。このTDEを使用して、システムのディスパッ
チ可能単位(MVSタスク、VM仮想プロセッサなど)
をシステム待ちに入れるためにシステム・サービスを使
用することを含め、プログラミング・システムが希望す
る処置を定義することができる。このTDEは複数のタ
スクがTDQにアクセスしようとする場合、固定TDE
であってもよい。他の事象を定義して、動的作業負荷を
管理させることもできる。スレッド・ディスパッチング
は、スレッド化命令の1つを論理的に実行しているスレ
ッドの間だけで生じる。これはシステム・ディスパッチ
ングとは異なっており、プログラムの実行の任意の点で
発生できる。
【0114】スレッド化命令 本発明の目的がこれらのオブジェクトに対する高性能の
アクセスを提供することであるから、すべての命令は非
割込み可能に構成されている。進行中の操作に割り込
み、他の操作の開始をブロックすることは論理的に可能
であるが、これが不確定な期間の間待ち行列を他のスレ
ッドによってアクセスできなくするので、本発明の好ま
しい実施例はこれを行わない。換言すれば、他のスレッ
ドにはSRQまたはSRCが「使用中」またはアクセス
不能であるとはまったく分からないはずであるが、マル
チ・プロセッサ・システムのプロセッサはオブジェクト
が短期間の間アクセス不能であると判断できる。
【0115】複数のプロセッサを備えたシステムにおい
て、命令の実行は操作に関与するオブジェクトまたはオ
ブジェクトのグループで、一度に1つのプロセッサだけ
が作動しているように、アーキテクチャ的に見せなけれ
ばならない(すなわち、オブジェクト及び命令のアトム
性)。これはアトム性の外観が維持されている限り、実
施例が操作をオブジェクトに重ねるのを防止するもので
はない。操作の中には、2つ以上のオブジェクトにアク
セスするのを必要とするものもある(たとえば、SRQ
から関連TDQへのTDEの移動)。実施例は関与する
すべてのオブジェクトの一貫性を確保しなければなら
ず、またデッドロックが生じないようにしなければなら
ない。アーキテクチャはデッドロックのない操作が保証
されるように定義され、実施例は単純なロック階層を使
用できる。
【0116】スレッド化命令は以下の通りである。
【0117】スレッド送受信カウンタ作成(CRSR
C)−この命令はスレッド送受信カウンタ(SRC)を
作成し、そのトークンは最初のオペランドによって指定
されたレジスタに戻される。第2のオペランドは作成さ
れるSRCを定義する記憶域内の位置のアドレスを含ん
でいる。カウンタの限界値は限界値の指定によって指定
された値にセットされる。この値は無符号2進整数とし
て扱われる。SRCが割り振られていない場合、プログ
ラム・チェック例外が発生する。
【0118】フォーマット:RRE CRSRC SRC_address,SRC_Specification CRSRC R1,R2
【表12】
【0119】作動:SRCが作成され、そのトークンは
オペランド1によって指定されたレジスタに戻される。
第2のオペランドは作成されるSRCを定義する記憶域
内の位置のアドレスを含んでいなければならない。
【表13】
【0120】カウンタの限界値は限界値指定によって指
定された値にセットされる。この値は無符号2進整数と
して扱われる。初期カウント値はゼロにセットされる。
カウントは無符号2進32ビット整数として扱われる。
ロング/ショート・ウェイト・オプションの指定を実施
例が使用して、その作動を最適化することができる。S
RCが割り振られていない場合、プログラム・チェック
例外が発生する。
【0121】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(SRCが利用できない、関連するアド
レス・スペースがない) ・指定(無効な関連TDQが指定された、無効なバージ
ョン番号、無効な状態フラグ・ベクトル)
【0122】スレッド送受信待ち行列作成(CRSR
Q)−この命令はスレッド送受信待ち行列(SRQ)を
作成し、そのトークンは最初のオペランドによって指定
されたレジスタに戻される。第2のオペランドは作成さ
れるSRQを定義する記憶域内の位置のアドレスを含ん
でいる。SRQを割り振ることができない場合、プログ
ラム・チェック例外が発生する。
【0123】フォーマット:RRE CRSRC SRQ_address,SRQ_Specification CRSRQ R1,R2
【表14】
【0124】作動:SRQが作成され、そのトークンは
オペランド1によって指定されたレジスタに戻される。
第2のオペランドは作成されるSRQを定義する記憶域
内の位置のアドレスを含んでいなければならない。
【表15】
【0125】SRQを割り振ることができない場合、プ
ログラム・チェック例外が発生する。
【0126】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(SRQが利用できない、関連するアド
レス・スペースがない) ・指定(無効な関連TDQが指定された、無効なバージ
ョン番号、無効な状態フラグ・ベクトル、メッセージ・
タイプ(無効なメッセージ・タイプ)、偶奇対にたいし
て偶数レジスタが指定されていない、無効なレジスタ番
号)
【0127】スレッド待ち行列作成(CRTDQ)−こ
の命令はTDQを作成し、そのトークンは最初のオペラ
ンドによって指定されたレジスタに戻される。第2のオ
ペランドは作成されるTDQを定義する記憶域内の位置
のアドレスを含んでいる。
【0128】フォーマット:RRE CRTDQ TDQ_address,TDQ_Specification CRTDQ R1,R2
【表16】
【0129】作動:TDQが作成され、そのトークンは
オペランド1によって指定されたレジスタに戻される。
第2のオペランドは作成されるTDQを定義する記憶域
内の位置のアドレスを含んでいなければならない。
【表17】
【0130】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(TDQが利用できない、関連するアド
レス・スペースがない) ・指定(無効なバージョン番号)
【0131】メッセージ待ち行列解除(DQM)−この
命令は指定されたSRQ(スレッド送受信待ち行列)か
らSRM(スレッド送受信メッセージ)を待ち行列解除
する。作動時に、SRQのSRMを最初のSRMから順
次探索し、探索タイプを満たす最初のSRMを待ち行列
解除する。
【0132】フォーマット:RRE DQM Search_type,Priority, Message,SRQ_address DQM I3,R4,R1,R2
【表18】
【0133】作動:R2のトークンによって指定したS
RQのSRMを最初のSRMから順次探索する。探索は
R4のビット24−31に指定された優先順位によって
制御される。I3に指定した探索タイプを満たす最初の
SRMが待ち行列解除される。メッセージはR1によっ
て指定されたレジスタに入れられ、メッセージの実際の
優先順位はR4のビット24−31に入れられる。R1
に指定したレジスタのタイプ(GPR、FPRなど)は
SRQのメッセージ・タイプによって決定される。Se
arch_Typeの意味は以下の通りである。
【0134】 ビット 説明 0 メッセージの優先順位=Search_Priority 1 メッセージの優先順位<Search_Priority 2 メッセージの優先順位>Search_Priority
【0135】Search_Typeは指定したビット
の論理包含的ORである。2進000xというSear
ch_Typeの場合、探索タイプを満たす優先順位は
なく、したがってこの組合せは無効である。指定例外が
発生する。2進111xというSearch_Type
の場合、最初のメッセージが待ち行列解除される。Se
arch_Typeを満たすメッセージがない場合、あ
るいはメッセージ・リストが空の場合、R1(メッセー
ジ)及びR4(メッセージの優先順位)は変更されな
い。スレッドのディスパッチングはDQMに含まれな
い。
【0136】条件コード: 0 正常な待ち行列解除後、1つまたは複数のメッ
セージが残る 1 正常な待ち行列解除後、メッセージは残らない 3 メッセージは待ち行列解除されない 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない) ・指定(無効なSRQアドレス、無効なSearch_
Type)
【0137】スレッド・ディスパッチング要素待ち行列
解除(DQTDE)−この命令は指定したTDEを待ち
行列解除する。待ち行列解除すると、TDEは有効なT
DEではなくなる。
【0138】フォーマット:RRE DQTDE TDE_address,Q_address DQTDE R1,R2
【表19】
【0139】作動:Search_Priorityは
使用しない。R1のトークンによって指定されたTDE
がR2のトークンによって指定されたSRQ(スレッド
送受信待ち行列)待機リスト、SRC(スレッド送受信
カウンタ)待機リスト、またはTDQ(スレッド・ディ
スパッチング待ち行列)から待ち行列解除される。待ち
行列解除されると、TDEは有効なTDEではなくな
る。スレッド・ディスパッチングはDQTDEには含ま
れない。
【0140】条件コード: 0 正常な待ち行列解除後、1つまたは複数のTD
Eが残る 1 正常な待ち行列解除後、TDEは残らない 3 TDEは待ち行列解除されない(無効なTDE
アドレス) 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない) ・指定(SRQ、SRCまたはTDQの無効なアドレ
ス)
【0141】スレッド送受信カウンタ破壊(DSSR
C)−この命令は最初のオペランドによって指定された
スレッド送受信カウンタ(SRC)を破壊、すなわち利
用できなくする。
【0142】フォーマット:RRE DSSRC SRC_address DSSRC R1
【表20】
【0143】作動:最初のオペランドによって指定され
たスレッド送受信カウンタを利用できなくする。最初の
オペランドが有効なSRCを指定していない場合、指定
例外が発生する。破壊されたSRCを参照しようとする
以降の試みは、指定例外を発生する。
【0144】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない) ・指定(無効なSRCアドレス)
【0145】スレッド送受信待ち行列破壊(DSSR
Q)−この命令は指定したスレッド送受信待ち行列(S
RQ)を破壊、すなわち利用できなくする。
【0146】フォーマット:RRE DSSRQ SRQ_address DSSRQ R1
【表21】
【0147】作動:最初のオペランドによって指定され
たスレッド送受信待ち行列を利用できなくする。最初の
オペランドが有効なSRQを指定していない場合、指定
例外が発生する。破壊されたSRQを参照しようという
以降の試みは、指定例外を発生する。
【0148】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない) ・指定(無効なSRQアドレス)
【0149】スレッド・ディスパッチング待ち行列破壊
(DSTDQ)−この命令は指定したスレッド・ディス
パッチング待ち行列(TDQ)を破壊、すなわち利用で
きなくする。
【0150】フォーマット:RRE DSTDQ TDQ_address DSTDQ R1
【表22】
【0151】作動:最初のオペランドによって指定され
たスレッド・ディスパッチング待ち行列を利用できなく
する。最初のオペランドが有効なTDQを指定していな
い場合、指定例外が発生する。破壊されたTDQを参照
しようという以降の試みは、指定例外を発生する。
【0152】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない) ・指定(無効なTDQアドレス)
【0153】スレッド・ディスパッチング待ち行列ディ
スパッチ(DTDQ)−この命令はTDQ(スレッド・
ディスパッチング待ち行列)が指定した最初のオペラン
ドを探し出し、スレッド・ディスパッチャを呼び出す。
現在の状態はTDEに保管されない。したがって、この
命令はスレッドの論理的な終わりを定義する。無条件分
岐と同様、この命令は制御の無条件転送を引き起こし、
次に続く命令(NSI)が実行されることはない。
【0154】フォーマット:RRE DTDQ TDQ_address DTDQ R1
【表23】
【0155】作動:最初のオペランドによって指定され
たTDQ(スレッド・ディスパッチング待ち行列)を探
し出し、スレッド・ディスパッチャを呼び出す。現在の
状態がTDEに保管されることはなく、したがって、こ
の命令はスレッドの論理的な終わりを定義する。無条件
分岐と同様、この命令は制御の無条件転送を引き起こ
し、次の順次命令が実行されることはない。
【0156】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない) ・TDQが空 ・指定(無効なTDQ)
【0157】メッセージ待ち行列化(EQM)−この命
令によって、SRQ(スレッド送受信待ち行列)のメッ
セージ・リストが最初のメッセージから順次探索され
る。スレッド送受信メッセージが、指定した優先順位
で、指定したスレッド送受信待ち行列のメッセージ・リ
ストに入れられる。
【0158】フォーマット:RRE EQM Enqueue_type,Priority,Message,SRQ_address EQM I3,R4,R1,R2
【表24】
【0159】作動:R2によって指定されたSRQのメ
ッセージ・リストが最初のメッセージから順次探索され
る。R1によって指定されたレジスタに収められている
メッセージが優先順位内で、I3の値(00x=最初、
01x=最後)によって指定された最初/最後で待ち行
列化される。メッセージの優先順位はR4のビット24
−31で指定される。R1によって指定されるレジスタ
のタイプ(GPR、FPRなど)はSRQのメッセージ
・タイプ・フィールドによって決定される。同一の優先
順位のメッセージがない場合、新しいメッセージは優先
順位値の高い最初のメッセージの前、あるいは、このメ
ッセージがなければ、最後に待ち行列に入れられる。優
先順位は無符号の2進値として扱われる。
【0160】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない、
利用できるメッセージ・スペースがない) ・指定(無効な待ち行列化タイプまたはSRQアドレ
ス)
【0161】スレッド待ち行列ディスパッチング要素待
ち行列化(EQTDE)−この命令はTDE(スレッド
・ディスパッチング要素)を定義し、TDEを指定され
たTDQ(スレッド・ディスパッチング待ち行列化)待
機リストに入れる。
【0162】フォーマット:RS EQTDE TDE_address,Q_address,TDE_specification EQTDE R1,R3,D2(B2)
【表25】
【0163】作動:TDE指定によって定義されたTD
E(スレッド・ディスパッチング要素)を、R3によっ
て指定された指定のTDQ(スレッド・ディスパッチン
グ待ち行列)に待ち行列化する。待ち行列化は優先順位
値内で最後の低い優先順位を最初にして、優先順位順に
行われる。TDEが固定TDEの場合には、待ち行列化
されたTDEがR1によって指定されたレジスタに戻さ
れる。D2(B2)によって指定された記憶位置にある
TDE_specificationはTDEの内容を
制御するために使用される。
【表26】
【表27】
【0164】スレッド・ディスパッチングは生じない。 条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない、
利用できるTDEスペースがない) ・指定(1番目及び3番目のオペランド:TDE、TD
Q、SRQまたはSRCの無効なアドレス。2番目のオ
ペランド:固定事象が指定され、複数の事象がすでに定
義されている、除去可能事象が指定され、固定事象がす
でに定義されている、無効なバージョン、無効な状態フ
ラグ・ベクトル、無効な事象制御値)
【0165】スレッド送受信カウンタ具体化(MTSR
C)−この命令はアドレス可能記憶域に、スレッド送受
信カウンタ(SRC)の特性及び内容を与える。
【0166】フォーマット:RRE MTSRC Storage_length,Object_address,Storage_addres
s MTSRC L3,R1,R2
【表28】
【0167】作動:R1によって指定されたスレッド送
受信カウンタの内容及び特性を、R2及びL3に指定さ
れた記憶位置(R2に指定されたアドレスから始まり、
L3によって指定された長さだけ続く)に表示する。L
3は無符号の2進値として扱われる。L3によって指定
されたバイト数が不適正な場合、L3のバイトが具体化
された後、作動が終了するだけであり、条件コードがこ
れに応じてセットされる。表示される情報のフォーマッ
トは次の通りである。
【表29】
【表30】
【0168】条件コード: 0 オブジェクトが正常に具体化された。 1 L3によって指定された長さが不適性であっ
た。 3 無効なSRCアドレス 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない)
【0169】スレッド送受信待ち行列具体化(MTSR
Q)−この命令はアドレス可能記憶域に、スレッド送受
信待ち行列(SRC)の特性及び内容を与える。
【0170】フォーマット:RRE MTSRQ Storage_length,Object_address,Storage_addres
s MTSRQ L3,R1,R2
【表31】
【0171】作動:R1によって指定されたスレッド送
受信待ち行列の内容及び特性を、R2及びL3に指定さ
れた記憶位置(R2に指定されたアドレスから始まり、
L3によって指定された長さだけ続く)に表示する。L
3は無符号の2進値として扱われる。L3によって指定
されたバイト数が不適正な場合、L3のバイトが具体化
された後、作動が終了するだけであり、条件コードがこ
れに応じてセットされる。表示される情報のフォーマッ
トは次の通りである。
【表32】
【表33】
【0172】メッセージは優先順位順に表示される。S
RQの各SRMの場合、次のようになる。
【表34】
【0173】条件コード: 0 オブジェクトが正常に具体化された。 1 L3によって指定された長さが不適性であっ
た。 3 無効なSRQアドレス 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない)
【0174】スレッド・ディスパッチング要素具体化
(MTTDE)−この命令はアドレス可能記憶域に、ス
レッド・ディスパッチング要素(TDE)の特性及び内
容を与える。
【0175】フォーマット:RRE MTTDE Storage_length,Object_address,Storage_addres
s MTTDE L3,R1,R2
【表35】
【0176】作動:R1によって指定されたスレッド・
ディスパッチング要素の内容及び特性を、R2及びL3
に指定された記憶位置(R2に指定されたアドレスから
始まり、L3によって指定された長さだけ続く)に表示
する。L3は無符号の2進値として扱われる。L3によ
って指定されたバイト数が不適正な場合、L3のバイト
が具体化された後、作動が終了するだけであり、条件コ
ードがこれに応じてセットされる。表示される情報のフ
ォーマットは次の通りである。
【表36】
【表37】
【0177】条件コード: 0 オブジェクトが正常に具体化された。 1 L3によって指定された長さが不適性であっ
た。 3 無効なTDEアドレス 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない)
【0178】スレッド・ディスパッチング待ち行列具体
化(MTTDQ)−この命令はアドレス可能記憶域に、
スレッド・ディスパッチング待ち行列(TDQ)の特性
及び内容を与える。
【0179】フォーマット:RRE MTTDQ Storage_length,Object_address,Storage_addres
s MTTDQ L3,R1,R2
【表38】
【0180】作動:R1によって指定されたスレッド・
ディスパッチング待ち行列の内容及び特性を、R2及び
L3に指定された記憶位置(R2に指定されたアドレス
から始まり、L3によって指定された長さだけ続く)に
表示する。L3は無符号の2進値として扱われる。L3
によって指定されたバイト数が不適正な場合、L3のバ
イトが具体化された後、作動が終了するだけであり、条
件コードがこれに応じてセットされる。表示される情報
のフォーマットは次の通りである。
【表39】
【0181】条件コード: 0 オブジェクトが正常に具体化された。 1 L3によって指定された長さが不適性であっ
た。 3 無効なTDQアドレス 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない)
【0182】パージ(PURGE)−この命令は指定の
アドレス・スペースに関連したすべてのオブジェクトを
破壊する。
【0183】フォーマット:RRE PURGE address PURGE R1
【表40】
【0184】作動:アドレッシング・モードに応じて、
R1によって指定された関連するアドレス・スペースを
決定し、このアドレス・スペースに関連するすべてのオ
ブジェクトを破壊する。R1がレジスタ0を指定してい
る場合には、すべてのアドレス・スペースに関連したす
べてのオブジェクトがパージされる。この命令には特権
が与えられている。
【0185】条件コード:無変更 境界要件:なし プログラム例外: ・特権操作
【0186】カウント受信(RECC)−この命令によ
って、カウンタの限界値が設定限界値と比較される。
【0187】フォーマット:RRE RECC Owner,Limit,SRC_address RECC R4,R1,R2
【表41】
【0188】作動:R1によって指定されたレジスタが
ゼロの場合、カウンタ内の限界値が限界値として使用さ
れる。それ以外の場合には、指定されたレジスタ内の限
界値が限界値として使用される。次いで、R2によって
指定されたSRC内のカウンタ値が、限界値と比較され
る。
【0189】カウンタの値が限界値以上の場合には、次
のようになる。
【0190】・カウンタ内の限界値を使用する場合に
は、カウンタ値が限界値によって決定される。 ・R4によって示されたレジスタがゼロでない場合に
は、R4によって指定されたレジスタの内容がSRCの
「オーナ」として保管される。(0という値は、オーナ
がないことを示す。) ・命令が完了する。
【0191】カウンタの値が限界値未満の場合には、次
のようになる。
【0192】・現在の状態がTDEに保管され、SRC
待機待ち行列に入れられる。 ・SRCがショート・ウェイト・オプションを有してお
らず、それ以前に待機していたTDEがない場合には、
SRCがショート・ウェイト状態にされる(技術上の
注:関連するTDQのショート・ウェイタ・カウントが
増加される。) ・カウンタ内の限界値が使用される場合には、命令が完
了する。それ以外の場合には、命令が無効とされる(し
たがって、命令が命令で指定された限界値をチェックす
るために再実行される)。 ・スレッド・ディスパッチャが呼び出される。
【0193】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない、
利用できるTDEスペースがない) ・指定(無効なSRCアドレス、無効な関連TDQ
(注:実施例が命令の実行中に、有効な関連TDQの存
在に関するチェックを行う必要はないが、関連TDQの
使用を試み、何もないことが分かった場合には、この例
外が生成される。)) ・TDQが空である。
【0194】メッセージ受信(RECM)−この命令に
よって、スレッド送受信メッセージを指定されたスレッ
ド送受信待ち行列から受信する。
【0195】フォーマット:RRE RECM Search_type,Priority,Message,SRQ_address RECM I3,R4,R1,R2
【表42】
【0196】作動:R2によって指定されたSRQのS
RMを、最初のSRMから順次探索する。探索はR4の
ビット24−31によって指定された優先順位によって
制御される。I3によって指定されたSearch_t
ypeを満たす最初のSRMが待ち行列解除される。メ
ッセージはR1によって指定されたレジスタに入れら
れ、メッセージの実際の優先順位はR4のビット24−
31に入れられる。R1によって指定されるレジスタの
タイプ(GPR、FPRなど)は、SRQのメッセージ
・タイプによって決定される。Search_Type
の意味は以下の通りである。
【0197】 ビット 説明 0 メッセージの優先順位=Search_Priority 1 メッセージの優先順位<Search_Priority 2 メッセージの優先順位>Search_Priority
【0198】Search_Typeは指定したビット
の論理包含的ORである。2進000xというSear
ch_Typeの場合、探索タイプを満たす優先順位は
なく、したがってこの組合せは無効である。指定例外が
発生する。2進111xというSearch_Type
の場合、最初のメッセージが待ち行列解除される。Se
arch_Typeを満たすメッセージがない場合、あ
るいはメッセージ・リストが空の場合、R1及びR4は
変更されず、命令は無効とされる。現在の状態がTDE
に保管され、SRQ待機リストに入れられ、スレッド・
ディスパッチャが呼び出される。
【0199】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない、
利用できるTDEがない) ・指定(無効なSRQアドレス、無効な探索タイプ) ・TDQが空である。
【0200】制御送信(SENDC)−この命令によっ
て、SRC(スレッド送受信カウンタ)のカウント・フ
ィールドの現行値を増加させる。
【0201】フォーマット:RRE SENDC New_Count,owner,Increment,SRC_address SENDC R3,R4,R1,R2
【表43】
【0202】作動:R4がレジスタ0を示していない場
合には、R4によって指定されたレジスタの内容がSR
Cの「オーナ」値と比較される。SRCが「所有」され
ていない場合、あるいは「所有」されているが、値が同
じではない場合、指定例外が通知され、命令の実行は停
止する。SRCをロックとして使用している場合、これ
はロック違反をデバッグする際に有用である。R2によ
って指定されたSRC(スレッド送受信カウンタ)のカ
ウント・フィールドの現行値が、R1に収められている
値だけ増加する。新しいカウント値がカウンタ内の限界
値以上の場合には、以下が生じる。
【0203】・カウンタの値が限界値の値だけ減少す
る。 ・新しい値がR3によって指定されたレジスタに戻され
る。
【0204】・待機リストが空でない場合、SRCのバ
イト0ビット7の値によって、以下が生じる。 ALL すべてのTDEが待機リストから待ち行列解
除され、優先順位順に関連するTDQに入れられる。 ONE 最初のTDEが待機リストから待ち行列解除
され、優先順位順に関連するTDQに入れられる。
【0205】・SRCがショート・ウェイト・オプショ
ン・セットを有しており、TDEがSRCで待機した
が、TDEがSRCで現在待機していない場合には、S
RCはショート・ウェイトではなくなる(技術上の注:
関連するTDQのショート・ウェイタ・カウントが減少
させられる)。
【0206】・SRCまたはSRQからの1つまたは複
数のTDEがTDQに入れられ、TDQが優先順位の高
いTDEを含んでいる場合には、現在の状態がTDEに
保管され(SRCまたはSRQからのTDEと同じ優先
順位で)、優先順位順にTDQに入れられる。次いで、
スレッド・ディスパッチャが呼び出され、スレッドの切
換えを起こす。このスレッドの切換えを送信操作を出し
たスレッドに対する優先使用待機と呼ぶ。
【0207】新しい値がカウンタ内の限界値未満であっ
た場合には、以下が生じる。 ・新しい値がR3によって指定されたレジスタに戻され
る。
【0208】カウンタがオーバフローした場合には、値
は増加せず、命令は無効となる。固定小数点オーバフロ
ー例外が通知される。SENDCが出された場合、SR
Cは「ロック」状態から除去される(これはロックとし
て使用したSRCのデバッグをサポートする)。すなわ
ち、SRCの「オーナ」値がゼロにセットされ、何らか
のTDEによって「ロック解除」されたことを示す。
【0209】条件コード:無変更 境界要件:なし プログラム条件: ・アドレス指定(関連するアドレス・スペースがない、
利用できるTDEがない) ・指定(無効なSRCアドレス、無効な関連TDQ、等
しくない「オーナ」値) ・固定小数点オーバフロー(SRCカウンタ・オーバフ
ロー)
【0210】カウント送信及び待機(SENDCW)−
この命令によって、SRC(スレッド送受信カウンタ)
の値がオペランドによって指定されたレジスタに含まれ
ている量だけ増加する。命令を出したスレッドの状態は
TDEに保管され、SRC待機待ち行列に入れられる。
【0211】フォーマット:RRE SENDCW Increment,SRC_address SENDCW R1,R2
【表44】
【0212】作動:R2によって指定されたSRCの値
が、R1によって指定されたレジスタに含まれている値
だけ増加する。命令を出したスレッドの状態はTDEに
保管され、SRC待機待ち行列に入れられる。新しい値
がカウンタ内の限界値以上の場合には、カウンタの値は
限界値の値だけ減少する。次いで、SRCのディスパッ
チ制御オプションによって、以下が生じる。 ALL すべてのTDEが待機リストから待ち行列解
除され、優先順位順に関連するTDQに入れられる。 ONE 最初のTDEが待機リストから待ち行列解除
され、優先順位順に関連するTDQに入れられる。
【0213】SRCがショート・ウェイト・オプション
・セットを有しており、TDEがSRCで待機したが、
TDEがSRCで現在待機していない場合には、SRC
はショート・ウェイトではなくなる。(技術上の注:関
連するTDQのショート・ウェイタ・カウントが減少さ
せられる。)次いで、スレッド・ディスパッチャが呼び
出される。「オーナ」状態及び値は影響を受けない。
【0214】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない、
利用できるTDEがない) ・指定(無効なSRCアドレス、関連TDQが定義され
ていない) ・TDQが空 ・固定小数点オーバフロー(SRCカウンタ・オーバフ
ロー)
【0215】メッセージ送信(SENDM)−この命令
によって、指定されたSRQ(スレッド送受信待ち行
列)のメッセージ・リストが最初のメッセージから順次
探索され、メッセージが優先順位内で待ち行列化され
る。
【0216】フォーマット:RRE SENDM Enqueue_type,Priority,Message,SRQ_address SENDM I3,R4,R1,R2
【表45】
【0217】作動:R2によって指定されたSRQのメ
ッセージ・リストが最初のメッセージから順次探索され
る。R1によって指定されたレジスタに収められている
メッセージが優先順以内で、I3の値(00x=最初、
01x=最後)によって指定された最初/最後で待ち行
列化される。メッセージの優先順位はR4のビット24
−31で指定される。R1によって指定されるレジスタ
のタイプ(GPR、FPRなど)はSRQのメッセージ
・タイプ・フィールドによって決定される。同一の優先
順位のメッセージがない場合、新しいメッセージは優先
順位値の高い最初のメッセージの前、あるいは、このメ
ッセージがなければ、最後に待ち行列に入れられる。優
先順位は無符号の2進値として扱われる。SRQのディ
スパッチ制御オプションが、SRQの待機リストから待
ち行列解除されるTDE(スレッド・ディスパッチング
要素)を決定し、TDEに指定されたTDQ(スレッド
・ディスパッチング待ち行列)へ優先順位順に入れられ
る。ディスパッチ制御オプションは、次の通りである。
【0218】ALL すべてのTDEが待機リストか
ら待ち行列解除され、優先順位順に関連するTDQに入
れられる。 ONE 最初のTDEが待機リストから待ち行列解除
され、優先順位順に関連するTDQに入れられる。
【0219】SRCまたはSRQからの1つまたは複数
のTDEがTDQに入れられ、TDQが優先順位の高い
TDEを含んでいる場合には、現在の状態がTDEに保
管され(SRCまたはSRQからのTDEと同じ優先順
位で)、優先順位順にTDQに入れられる。次いで、ス
レッド・ディスパッチャが呼び出され、スレッドの切換
えを起こす。このスレッドの切換えを送信操作を出した
スレッドに対する優先使用待機と呼ぶ。
【0220】条件コード:無変更 境界要件:なし プログラム例外: ・アドレス指定(関連するアドレス・スペースがない、
利用できるメッセージ・スペースがない、利用できるT
DEスペースがない) ・指定(無効なSRQアドレス、無効な関連TDQ、無
効なEnqueue_type)
【0221】カウンタ限界値設定(SETCLV)−こ
の命令は指定されたスレッド送受信カウンタ(SRC)
の限界値を、指定された値に設定する。
【0222】フォーマット:RRE SETCLV Operation,SRC_address,Limit SETCLV I3,R1,R2
【表46】
【0223】作動:R1によって指定されたカウンタが
I3フィールドによって指定された通りに、また無符号
2進32ビット値として扱われるR2によって指定され
た値の通りに変更される。I3の値の意味は次の通りで
ある。
【0224】 I3 意味 0 限界値をR2の値と等しい値にセットする 1 現行値をR2の値だけ増加させる 2 現行値をR2の値だけ減少させる
【0225】新しい限界値がSRCのカウント値以下で
あり、待機リストが空でない場合には、SRCのディス
パッチ制御オプションによって、次のようになる。
【0226】ALL すべてのTDEが待機リストか
ら待ち行列解除され、優先順位順に関連するTDQに入
れられる。 ONE 最初のTDEが待機リストから待ち行列解除
され、優先順位順に関連するTDQに入れられる。
【0227】SRCがショート・ウェイト・オプション
・セットを有しており、TDEがSRCで待機したが、
TDEがSRCで現在待機していない場合には、SRC
はショート・ウェイトではなくなる。SRCまたはSR
Qからの1つまたは複数のTDEがTDQに入れられ、
TDQが優先順位の高いTDEを含んでいる場合には、
現在の状態がTDEに保管され(SRCまたはSRQか
らのTDEと同じ優先順位で)、優先順位順にTDQに
入れられる。次いで、スレッド・ディスパッチャが呼び
出され、スレッドの切換えを起こす。このスレッドの切
換えを送信操作を出したスレッドに対する優先使用待機
と呼ぶ。操作がオーバフローまたはアンダフローを生じ
る場合には、操作が開始され、例外が通知される。
【0228】1実施例において、本発明は並列FORT
RAN機能を実現する。これは単なる例であり、本発明
の特定の用途を実証するためのものである。図6はスモ
ール・グレイン機構(SGF)のエミュレーションの概
要を示すブロック図である。この例では、複数の仮想C
PUが所与の仮想計算機に対して定義されているVMオ
ペレーティング・システム下のESA/370コンピュ
ータで、FORTRAN適用業務が作動していると想定
している。FORTRANコードはエミュレートされた
操作コードである操作コード「X」を含んでいる。ソフ
トウェア・エミュレーションにおいて、エミュレートさ
れた操作コードは「IBM System/370 Extended Architec
ture Interpretive Execution」(IBM資料番号SA
22−7095)に記載されているように、SIE(シ
ステム解釈実行)代行受信及びSIEの終了を行う。こ
の時点で、VMオペレーティング・システムの制御プロ
グラムは制御を獲得して、ソフトウェア・エミュレーシ
ョンを行う。ハードウェアで実施した場合には、操作コ
ードが直接実行される。ソフトウェア・エミュレーショ
ンまたはハードウェアでの実行の後、該当する場合に
は、次に続く命令(NSI)が制御を獲得し、FORT
RAN適用業務の処理が継続する。
【0229】並列処理を行う方法に関しては、いくつか
の提案がされている。あるものは明示的なものであり
(たとえば、ユーザ定義による)、あるものは暗黙のも
のである(たとえば、自動DOループ同期化)。方法が
どのようなものであるかにかかわりなく、何らかの点
で、環境が必要なプロセス構造を作成することが必要で
ある。これはコードの識別と、おそらくは、そのローデ
ィング、ならびに記憶域の割振りを含んでいる。オペレ
ーティング・システムの実行構造(たとえば、MVS=
タスク、VM=仮想プロセッサ)を作成することに加え
て、並列環境はTDQ(スレッド・ディスパッチング待
ち行列)及びDTDQ(スレッド・ディスパッチング待
ち行列ディスパッチ)に対してEQTDE(スレッド待
ち行列ディスパッチング要素待ち行列化)を行って、ス
レッド・ディスパッチャを呼び出すことによって、実行
に関する独立したスレッドを表すスレッドを作成する。
多くの代替策があるが、ここでは、メッセージ及びメッ
セージ待ち行列を使用して、並列作業のメッセージ単位
を定義するものと仮定する。
【0230】作業の同期化 プロセスが1つまたは複数のプロセスを待たなければな
らないさまざまな状況がある。変形の1つは親プロセス
が多数の子プロセスを作成し、ある時点で、これらが完
了するのを待つというものである。完了時に、通常親プ
ロセスがJOINまたはその他のステートメントを出し
た後で、親プロセスが継続する。図7は本発明によるス
モール・グレイン機構(SGF)を使用したフォーク及
び結合シナリオを示す。適用業務プログラムは複数行の
コードを含んでいるが、そのうちのいくつかだけが図示
されている。これらのコード行の1つ、上記で定義した
EQTDE命令が作業要素(すなわち、スレッド)を作
成する。その後にCRSRC命令があり、これはスレッ
ド送受信カウンタを作成する。次いで、SETCLV命
令が限界値を作成されたプロセスの数にセットする。E
QTDE命令はthisis the "fork"などのプロセスを作
成する。図示の例では、適用業務のメインの行(すなわ
ち、「親」)の他に、3つのプロセス(すなわち、
「子」)が作成されている。コードのメインの行はカウ
ント受信(RECC)命令を出すまで継続する。作成さ
れたプロセスは完了するまで実行され、その時点で、各
々がカウント送信(SENDC)命令に遭遇する。作成
されたプロセスすなわちスレッドは、スレッド待ち行列
要素ディスパッチ(DQTDE)命令によって終了す
る。作成されたプロセスの2番目が送信するカウントは
カウント限界値設定(SETCLV)命令がセットした
限界値に等しく、この時点で、親プロセスは次に続く命
令(NSI)を実行する。
【0231】JOINの場合、FORTRANコンパイ
ラはSRC(スレッド送受信カウンタ)及び次のコード
を生成する。 RECC SRC_address
【0232】FORK(活動並列スレッド)機能の場
合、コンパイラはSRCカウンタ限界値を増加させるコ
ードを生成する。コンパイラはスレッド終了コードの一
部として、 SENDC SRC_address という命令を生成し、子スレッドが完了したことを通知
しなければならない。親スレッドがRECC命令を出す
と、親スレッドはカウント値に達し、すべての子スレッ
ドが終了している場合には、先へ進むか、あるいは最後
の子スレッドがそのSENDC命令を出すまで待機する
かする。
【0233】他の変形は特定のスレッドを待つことであ
る。これを達成するには、メッセージ機構を使用する。
コンパイラはすべての作成されたスレッドに対してSR
Q(スレッド送受信待ち行列)を生成する。これらは入
力メッセージ待ち行列である。WAITが出されたスレ
ッドにおいては、コンパイラは次のインライン・コード
を生成する。 RECM EQUAL,Thread_id,SRM_reg,SRQ_address スレッドはその入力待ち行列で、指定されたスレッドか
らのメッセージを待つ。あるいは、待つかどうかのオプ
ションをメッセージ受信タイプの機能に指定することが
できる。待機を希望する場合には、RECM命令が使用
され、待機を希望しない場合には、DQM(メッセージ
待ち行列解除)命令を使用して、メッセージを待ち行列
解除し、戻りコードをセットする。
【0234】バリアは並列機能であり、多数の並列プロ
セッサを同期化する簡単な方法を提供する。通信はな
く、プロセッサのいずれかに進行を認める前に、すべて
のプロセッサが所与のバリアに到達するようにすること
ができるだけである。図8は作成されたプロセスの各々
がすべてがバリアに達するまでSENDCWよりも先に
進めないことを除けば、図7に示したフォーク及び結合
シナリオと同様な、バリア・シナリオの図である。作成
されたプロセスがバリアに到達すると、これらのプロセ
スはSENDCW(カウント送信及び待機)命令を送信
する。
【0235】バリアには、「グループ」を作成するプロ
セスの決定及びグループ内のプロセスの数という2つの
要素がある。ここで、FORTRANプログラマが次の
形式の1つまたは複数のプロシージャをコーディングす
るものと仮定する。 ... BARRIER A ... BARRIER B ...
【0236】次いで、プロシージャがこれらのステート
メントを含んでいるプロセス・グループが呼び出され
る。ユーザは指定されたバリアの各々で同期化が行われ
ると考える。これを提供するため、FORTRAN環境
は次のことを行わなければならない。コンパイラは次の
ように、カウンタにアクセスするため、SRC(スレッ
ド送受信カウンタ)及びインライン・コードを生成す
る。 ... SENDCW SRC_A /*バリアAに到達*/ ... SENDCW SRC_B /*バリアBに到達*/ ...
【0237】グループ内のプロセスの数が決定されると
(コンパイル時または実行時に)、カウンタの「限界」
値がグループのサイズにセットされる。SRCのディス
パッチング・ビットがセットされ、カウントに達した場
合に、すべてのTDEをディスパッチする。
【0238】単純なロック機能をSRCまたはSRM機
構に基づいたものとすることができる。たとえば、指定
されたロックAに対して、1という現在の限界値によっ
て初期化されるSRC、すなわちSRC_Aをコンパイ
ラが作成するSRCを使用して、単純なロック機構を実
現することができる。 LOCKは次のようにして実施される。 RECC SRC_A /*ロック=1であれば、取得し、0にセッ
トする*/ UNLOCKは次のようにして実施される。 SENDC SRC_A /*ロック値=1=利用可能*/
【0239】作業の同期化 事象TDEを定義できることによって、困難な待ち行列
管理の問題のいくつかを簡単に処理することができ、ま
た作業単位の処理の動的な「スケジューリング」の基礎
を提供することが可能となる。固定事象TDEによっ
て、任意の数のスレッドを要求があった場合に活動化す
ることが可能となる。いくつのプロセスがTDQにアク
セスするかを知る必要がないことを使用して、動的に
「スケジューリング」する際に、プロセスの作業活動を
利用することができる。プロセスが行っていた作業を完
了し、作業に対する作業待ち行列に進んだ場合、固定事
象TDEを使用して、利用可能なプロセスを「補充」
し、いくつかの作業を援助することができる。この手法
はいくつのタスクが何を行っているかを、作業管理コー
ドの多くが懸念する必要がないので、作業の「スケジュ
ーリング」と管理の静的度を少なくし、管理を容易にす
る。
【0240】以下は「事象」TDEを有するTDQを使
用して、作業負荷が変動した場合に、システム・タスク
の非活動化及び再活動化を管理する方法の簡単な例であ
る。「作業なし」状況を検出するために、多数のシステ
ム・タスクが起動され、作業を処理していると想定する
と、「作業なし事象」TDEがTDQに入れられる。こ
れは「空」TDQ条件を検出する「固定」TDEであ
る。それ故、これはこの状況に遭遇するすべてのシステ
ム・タスクによって活動化される。「作業なし事象」は
以下のことを行う。 NO_WORK: DCL STATE INIT(SET_ALARM) SELECT(STATE) WHEN(SET_ALARM) STATE=GOTO_SLEEP EQTDE WAKEUP_TDE,DISPATCH_Q, [HI_PRIORITY,REMOVABLE,ON_NEW _TDE] /*事象を起動する*/ DTDQ DISPATCH_Q /*作業が入り込んでいるかどう か調べる*/ WHEN(GOTO_SLEEP) WAIT SLEEP=SET_ALARM DTDQ DISPATCH_Q /*GO FIND WORK* / END SELECT
【0241】起動TDEは下記を行う WAKEUP: IF(TASK_TO_BE_POSTED=ME) /*不必要なPO ST/WAITを避ける*/ STATE=SET_ALARM ELSE /*遅延しているものを起動する POST END DTDQ DISPATCH_Q /*何らかから作業をする*/
【0242】これらの作業制御ルーチンにはロックはな
いので、重要な資源を保持している間に割込みを行うこ
とは不可能である。起動事象の設定と作業の到着の間の
潜在的な競争状態は、事象のセット後にTDQを再度デ
ィスパッチすることによって処理される。次の3つのう
ちの1つが起こる。
【0243】i.作業が到着しない(ほとんどの場
合)。この場合、作業なしTDEが再度呼び出され、タ
スク決定のフェーズ2を完了する。
【0244】ii.事象のセット後、DTDQ前に作業
が到着する。この場合、DTDQが作業を行わせる。作
業の他の部分が遅れて到着すると、事象が処理される
(POST)。このシステム・タスクに作業がなくなる
と、システム・タスクは作業なしTDEを再度行い、フ
ェーズ2を処理する。これは直ちにWAITを満たし、
待ち行列を再ディスパッチし、フェーズ1でそれ自体を
再度呼び出す。
【0245】iii.事象がセットされる前に作業が到
着する。この場合、DTDQによって、起動TDEがデ
ィスパッチされる(これが作業よりも高い優先順位を有
しているので)。DTDQはそれ自体を起動しようとし
ていることを発見し(そうでなければ、これはケース2
となる)、状態をSET_ALARMにリセットし、作
業を待ち行列にディスパッチするだけとなる。
【0246】この場合、競争状態による唯一の欠点は第
2の状況(1つの状況のウィンドウを有している)が発
生しそうにないことである。利点は重要な資源を保持し
ている間に割込みを被ることがないことである。
【0247】本発明によるスモール・グレイン機構(S
GF)の実施はソフトウェアまたはハードウェア、ある
いは両者の組合せのいずれかによる。いずれにせよ、S
GFは図9に示すデータ構造を有する状態ベクトル(S
V)を使用して、コンピュータ・プロセスの作成及びデ
ィスパッチを制御する。図10に示すデータ・フローは
所与の仮想計算機に関連づけられたN個の仮想CPUが
あるESA/370環境で稼動するVM(仮想計算機)
オペレーティング・システム(OS)でのソフトウェア
で実施したものを想定している。本発明の特別な機能は
密閉オブジェクト・メモリ401を設けたことであり、
これは仮想計算402によってアクセスされるが、ユー
ザが直接アクセスすることはできないものである。仮想
計算機402内には、仮想CPU4220、42
1、...422nの各々に1つのSGFアンカ421
0、4211、...421nが設けられている。S/3
70アーキテクチャはシステムの各仮想CPUに対して
プログラム保管域(PSA)を備えている。SGFアン
カは各PSA内に保持されている。これは本発明のこの
実施例に固有の詳細部であって、本発明の一般的な実現
には必要ないものである。密閉オブジェクト・メモリ4
01はSGFベクトル・テーブル412の特定のSGF
ベクトルを識別するSGFベクトル・テーブル(SV
T)をポイントする、特定の仮想CPUに対するSGF
アンカによってアクセスされる。SGFベクトル・テー
ブルはセル・プール・ポインタを含んでおり、これはメ
モリ内の使用域413、基本TDQポインタ、CPU
GOWORD及びロック、ならびにCPU TDEポイ
ンタをポイントする。メモリ413はSGFデータ構想
及びセル・プールのビット・マップを収めた静的SGF
セル・プールを含んでいる。
【0248】図11はデータ・ディスパッチャのデータ
構造を詳細に示している。SGFベクトル・テーブル4
12内の基本TDQポインタはTDQ414をポイント
する。TDQ414は待ち行列内に、記述子(DESC
R)、ロック、及び次のTDE(TDENXT)のアド
レスを含んでいる。次のTDEのアドレスは待ち行列内
のTDE415をポイントし、これらのTDEの各々は
TDQ及び図9に示すSGFベクトルを識別するヘッダ
を含んでいる。SGFベクトル・テーブル412はこれ
が作動している仮想CPU(VCPU)に対するTDE
に対するポインタを含んでいる。このポインタは現行の
TDE416をポイントする。
【0249】図12はディスパッチャ制御フローによっ
て呼び出されるトリガされた待機論理の流れ図である。
プロセスはベクトル・テーブル412(図10)から基
本TDQポインタを取得することによって、機能ブロッ
ク521から始まる。次いで、機能ブロック522にお
いて、例として取り上げた特定の環境に対してS/37
0アーキテクチャがサポートしている比較及びスワップ
論理を使用して、次のTDEがTDQ内で更新される。
更新された次のTDEは機能ブロック523で現行TD
Eとされ、その後、機能ブロック524において、仮想
CPUに対する状態がTDEからロードされる。作業が
ない場合には、トリガされた待機TDEが発見されるこ
とになる。
【0250】図13はトリガされた待機論理の流れ図を
示す。このプロセスはGOWORDロックを取得するこ
とによって、機能ブロック525から始まる。判断ブロ
ック526でテストを行って、GOWORDロックが獲
得されているかどうかを判定する。獲得されていない場
合、再実行ディスパッチが機能ブロック527で呼び出
され、戻る。これに対し、GOWORDロックが獲得さ
れている場合には、ゼロがGOWORDに格納され、ロ
ックが機能ブロック528で解除される。次いで、機能
ブロック529で、GOWORDが「1」にポーリング
され、「1」が判断ブロック530で見つかった場合に
は、機能ブロック531でディスパッチャに入る。
【0251】スレッド・ディスパッチング待ち行列ディ
スパッチ(DTDQ)の流れ図を図14に示す。プロセ
スはTDQ記述子を読み取ることによって機能ブロック
532から始まる。次いで、テストを判断ブロック53
3で行って、有効なトークンが発見されるかどうかを判
定する。見つからない場合には、CCが機能ブロック5
34で「2」にセットされ、戻り、アドレス例外処理ル
ーチンへの転送を行う。有効なトークンが発見された場
合には、TDQアドレスが機能ブロック535で状態ベ
クトル・テーブル(SVT)(図11の412)にロー
ドされ、これを基本TDQにする。次いで、GOWOR
Dロックが機能ブロック536で獲得され、機能ブロッ
ク537で、GOWORDが1にセットされ、ロックが
解除される。これは待機しているプロセッサをトリガす
る。最後に、機能ブロック538において、次に続く命
令(NSI)への戻りが行われる。
【0252】TDE待ち行列化の流れ図を図15に示
す。プロセスは機能ブロック540から始まり、トーク
ンの妥当性検査が行われる。判断ブロック541におい
て、トークンが有効であるかどうかの判断が行われる。
有効でない場合には、プロセスは機能ブロック542で
失敗するが、有効な場合には、TDEは機能ブロック5
43において、VM OSの比較及びスワップによっ
て、アドレス待ち行列のLIFO(後入れ先出し)スタ
ックに入れられる。次に、判断ブロック544におい
て、これが基本TDQであるかどうかのテストが行われ
る。基本TDQでない場合には、機能ブロック545に
おいて次に続く命令(NSI)に対する戻りが行われ
る。これに対し、基本TDQである場合には、作業が作
成されており、機能ブロック546において、GOWO
RDロックが獲得される。GOWORDが1にセットさ
れ、ロックが機能ブロック547で解除される。最後
に、機能ブロック548において次に続く命令への戻り
が行われる。
【0253】図16はトークンを作成するプロセスの論
理を示す流れ図である。プロセスは操作コードをデコー
ドすることによって、機能ブロック551から始まる。
テストを判断ブロック552で行って、操作コードが要
求作成であるかどうかを判断する。そうでない場合に
は、密閉トークン処理が機能ブロックで行われるが、こ
のプロセスは以下で参照する図17の流れ図に示されて
いる。操作コードが要求作成であると想定した場合、オ
ブジェクト・メモリ・マネージャが機能ブロック554
で呼び出される。オブジェクト・メモリ・マネージャに
よって、判断ブロック555でテストを行い、空セルが
あるかどうかを判断する。存在している場合には、RC
(戻りコード)が「0」にセットされ、存在していない
場合には、RCが「−1」にセットされる。次いで、判
断ブロック556で空セル・テストを行い、RCが
「0」であるかどうかを判断する。
【0254】本実施例では、機構のキャパシティー用途
についての検出を行う空セル・テストが必要である。本
実施例は容量が限定されている有限オブジェクト記憶域
を使用しているので、容量を超過した場合に、適用業務
に障害を示さなければならない。好ましい実施例におい
ては、仮想記憶域技法を使用してオブジェクト・リポジ
トリが無限に見えるようにする。
【0255】図16に戻って、RCが「0」でない場
合、障害が機能ブロック557で検出され、戻りが行わ
れ、プロセスを終了する。RCが「0」であって、空セ
ルが利用できることを示していると想定すると、空セル
のアドレスが機能ブロック558で、次に利用できるオ
ブジェクトのアクセス・テーブル項目に入れられる。次
いで、機能ブロック559において、オブジェクト・テ
ーブル・インデックス及びスペース・アドレスを使用し
て、オブジェクト・トークンを計算する。CCを機能ブ
ロック560で「0」にセットし、作成されたトークン
を戻す。
【0256】機能ブロック553に戻って、密閉トーク
ン処理がここで参照する図17の流れ図に示されてい
る。まず、操作の識別(ID)が機能ブロック561で
待ち行列化される。これはTDQ、SRQ及びSRCに
よって行われる。次に、機能ブロック562において、
操作のためのレジスタが選択される。トークンは機能ブ
ロック563でレジスタからアクセスされるアドレスで
ある。このアドレスは機能ブロック564でホスト・ア
ーキテクチャによって定義されるアドレス・スペースI
Dと関連づけられる。次いで、スペースID、トークン
及び待ち行列IDによってアクセスされるオブジェクト
・アクセス・テーブルを使用して、項目が機能ブロック
565で選択される。選択された項目は判断ブロック5
66でテストされ、有効かどうかについての判断が行わ
れる。有効でない場合には、プログラム例外が機能ブロ
ック567で戻されるが、有効である場合には、項目の
権限がホスト・アーキテクチャによる許可と、機能ブロ
ック568で比較される。比較された許可が適切に比較
されたのかどうかを判断するために、判断ブロック56
9でさらにテストが行われる。適切な許可でない場合に
は、プログラム例外が機能ブロック570で戻される
が、適切な許可である場合には、待ち行列が機能ブロッ
ク571でアクセスされ、密閉操作の機能が機能ブロッ
ク572で行われる。
【図面の簡単な説明】
【図1】本発明によるスモール・グレイン機構(SG
F)を組み込んだ並列プロセッサ・システムの全体ブロ
ック図である。
【図2】トークン・プロセッサ及びオブジェクト・アド
レッシング待合せ機構を詳細に示す、図1のシステムの
並列プロセッサの1つのブロック図である。
【図3】密閉のためのトークン・プロセッサのデータ・
フローを示すブロック図である。
【図4】TDQ、SRQ、SRC、命令ストリーム及び
基本レジスタの間の相互関係を示すブロック図である。
【図5】制御ユニットのサイクル・シーケンスの相互関
係を示すブロック図である。
【図6】スモール・グレイン機構(SGF)のエミュレ
ーションの概要を示すブロック図である。
【図7】本発明によるスモール・グレイン機構(SG
F)を使用したフォーク及び結合シナリオを示す図であ
る。
【図8】作成されたプロセスの各々がプロセスの1つに
よる処理の結果を受け取るまで完了しないことを除け
ば、図7に示したフォーク及び結合シナリオと同様な、
バリア・シナリオの図である。
【図9】コンピュータのプロセスの作成及びディスパッ
チを制御するために使用される状態ベクトルのデータ構
造を示す図である。
【図10】ESA370環境で作動するVM(仮想計算
機)オペレーティング・システム(OS)の下でのソフ
トウェアの実施を想定したデータ・フローの図である。
【図11】データ・ディスパッチャのデータ構造を詳細
に示す図である。
【図12】スレッド・ディスパッチャ制御フローの論理
を示す流れ図である。
【図13】図12のディスパッチャ制御フローによって
呼び出されるトリガされた待機論理の流れ図である。
【図14】ディスパッチ・スレッド・ディスパッチング
待ち行列(DTDQ)の流れ図である。
【図15】待機スレッド・ディスパッチング要素(EQ
TDE)の流れ図である。
【図16】トークンを作成するプロセスの論理の流れ図
である。
【図17】密閉トークン処理の流れ図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェラルド・ユージン・リースラー アメリカ合衆国12466、ニューヨーク州ポ ート・イーウェン、ロンダウト・ハーバー 11 (72)発明者 デヴィッド・ブルース・ロルフ アメリカ合衆国12491、ニューヨーク州ウ ェスト・ハーレイ、ボックス 215エー、 パイン・ツリー・ロード 24

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】並列コンピュータ・システムの対話コンピ
    ュータ・プログラム・プロセスの実行及びこれらとの通
    信を制御するスモール・グレイン機構において、 前記コンピュータ・プログラム・プロセスの間でメッセ
    ージを格納し、渡すために使用される複数のメッセージ
    ・データ構造、前記コンピュータ・プログラム・プロセ
    スの状態に関するプロセス及びプログラムの情報を格納
    するために使用されるデータ構造をディスパッチングす
    る複数のスレッド、ならびに前記コンピュータ・プログ
    ラム・プロセスの操作のディスパッチ及び完了の段階内
    の事象のオカレンスのカウントを格納するために使用さ
    れる複数のカウンタ・データ構造を含んでおり、前記コ
    ンピュータ・プログラム・プロセスのいずれによっても
    アドレスできないオブジェクト・リポジトリ手段と、 前記メッセージ・データ構造、前記スレッド・ディスパ
    ッチング・データ構造、及び前記カウンタ・データ構造
    を処理するために前記オブジェクト・リポジトリ手段と
    通信する並列実行ユニット手段と、 コンピュータ・プログラム・プロセスの要求に応じて、
    複数個の前記コンピュータ・プログラム・プロセスが共
    用することができるトークンであって、前記並列コンピ
    ュータ・システムの通信資源を管理するために前記並列
    実行ユニットを制御するトークンを生成する、前記コン
    ピュータ・プログラム・プロセスを前記トークンに関連
    づけるためコンピュータ・プログラム・プロセスの要求
    に応じるトークン・プロセッサ手段とからなる前記スモ
    ール・グレイン機構。
  2. 【請求項2】前記トークン・プロセッサ手段が前記トー
    クンに応じて、前記トークンの妥当性検査を行い、無効
    なあるいは偽造のトークンを識別し、使用されないよう
    にする手段と、 前記トークン及び前記プロセスに応じて、コンピュータ
    ・プログラム・プロセスが使用許可を受けていないトー
    クンを使用することを防止する手段とからなる請求項1
    記載のスモール・グレイン機構。
  3. 【請求項3】前記トークンに応じ、また前記コンピュー
    タ・プログラム・プロセッサに応じて、プロセス及びプ
    ログラム情報、メッセージ、ならびに事象のオカレンス
    のカウントを前記通信資源に収集し、格納する状態ベク
    トル手段をさらに含んでいる請求項2記載のスモール・
    グレイン機構。
  4. 【請求項4】前記並列コンピュータ・システムが複数個
    のプロセッサと共用記憶装置を有する密結合マルチ・プ
    ロセッサ・システムからなり、前記オブジェクト・リポ
    ジトリ手段が前記共用記憶装置の一部からなり、前記並
    列実行ユニット手段が前記プロセッサの各々の実行ユニ
    ットの一部である請求項1記載のスモール・グレイン機
    構。
  5. 【請求項5】前記並列コンピュータ・システムが各々が
    個別の記憶装置を備えており、各々が命令ユニットと実
    行ユニットを有している複数個のプロセッサを有する疎
    結合マルチ・プロセッサ・システムからなり、前記オブ
    ジェクト・リポジトリ手段が前記の個別の記憶装置の一
    部からなり、前記並列実行ユニット手段が各前記プロセ
    ッサの実行ユニットの一部である請求項1記載のスモー
    ル・グレイン機構。
  6. 【請求項6】前記並列コンピュータ・システムが密結合
    マルチ・プロセッサ・システムと疎結合マルチ・プロセ
    ッサ・システムの組合せからなり、前記密結合マルチ・
    プロセッサ・システムが複数個のプロセッサと共用記憶
    装置を有しており、前記疎結合マルチ・プロセッサ・シ
    ステムが各々が個別の記憶装置を備えている複数個のプ
    ロセッサからなり、前記マルチ・プロセッサ・システム
    の前記プロセッサの各々が命令ユニットと実行ユニット
    を有しており、前記オブジェクト・リポジトリ手段が前
    記共用記憶装置及び前記個別記憶装置の一部からなり、
    前記並列実行ユニット手段が各前記プロセッサの実行ユ
    ニットの一部である請求項1記載のスモール・グレイン
    機構。
  7. 【請求項7】コンピュータ・システムによって並列に実
    行された場合に、コンピュータ・プログラム・プロセス
    のディスパッチングとこれらの間のデータの共用を制御
    する方法において、 コンピュータ・プログラム・プロセスによる適正な要求
    があった場合に、通信資源の制御を表すトークンを作成
    し、 無許可のプロセス及びコンピュータ要素によるトークン
    の作成を防止し、 コンピュータ・プログラム・プロセスをトークンに結合
    し、 妥当性検査後にトークンをデコードして、通信資源の制
    御のためのアドレッシング情報をもたらし、 コンピュータ・プログラム・プロセスとの間のメッセー
    ジを格納し、受け渡しし、プロセスの状態及びプロセス
    内の操作のディスパッチング及び完了の段階に関する情
    報を格納し、プロセスのディスパッチングを容易とする
    操作のためにデータ構造を動的に割り振り、 トークンを介してアドレス可能なデータ構造を使用し
    て、操作のディスパッチング及び完了の段階に関するデ
    ータをもたらし、かかる段階に関する情報を宣言するメ
    ッセージをコンピュータ・プログラム・プロセスの間で
    受け渡しし、 トークンを介してアドレス可能なデータ構造を使用し
    て、実行前、実行中及び実行後のコンピュータ・プログ
    ラム・プロセスに関する情報をコンピュータ・プログラ
    ム・プロセスの間で受け渡しし、 コンピュータの遊休物理処理ユニットがそれら自体に対
    して、トークンを介してアドレス可能なデータ構造を使
    用したローカル実行のために、コンピュータ・プログラ
    ム・プロセスをディスパッチすることを可能とするステ
    ップからなる前記制御方法。
  8. 【請求項8】通信資源の制御を取得するためにプロセス
    によって提示された場合にトークンの妥当性検査を行
    い、無効なトークンを識別し、拒否し、許可を受けた場
    合にのみ、プロセスがトークンを使用し、共用すること
    を可能とするステップをさらに含んでおり、データ構造
    を動的に割り振る前記ステップがトークンの妥当性検査
    が行われた場合にのみ行う請求項7記載の方法。
JP5274030A 1992-11-03 1993-11-02 スモール・グレイン機構 Pending JPH06208552A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/970,729 US5485626A (en) 1992-11-03 1992-11-03 Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
US970729 1992-11-03

Publications (1)

Publication Number Publication Date
JPH06208552A true JPH06208552A (ja) 1994-07-26

Family

ID=25517417

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5274030A Pending JPH06208552A (ja) 1992-11-03 1993-11-02 スモール・グレイン機構

Country Status (3)

Country Link
US (1) US5485626A (ja)
EP (1) EP0602359A3 (ja)
JP (1) JPH06208552A (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035321A (en) * 1994-06-29 2000-03-07 Acis, Inc. Method for enforcing a hierarchical invocation structure in real time asynchronous software applications
US6704765B1 (en) * 1994-12-14 2004-03-09 International Business Machines Corporation System for allocating resources among agent processes
US5771383A (en) * 1994-12-27 1998-06-23 International Business Machines Corp. Shared memory support method and apparatus for a microkernel data processing system
US5760792A (en) * 1995-05-01 1998-06-02 Intergraph Corporation Fifo logical addresses for control and error recovery
US5794037A (en) * 1995-05-01 1998-08-11 Intergraph Corporation Direct access to slave processing by unprotected application using context saving and restoration
JPH08328880A (ja) * 1995-05-31 1996-12-13 Mitsubishi Electric Corp 複数のアプリケーションプログラムを同時に実行できるオペレーティングシステムにおける計算機運転管理システム
US5630136A (en) * 1995-06-09 1997-05-13 Sun Microsystems, Inc. Method and apparatus for serializing access to multithreading unsafe resources
US5784614A (en) * 1995-07-27 1998-07-21 Ncr Corporation Cache affinity scheduling method for multi-processor nodes in a split transaction bus architecture
JP3363292B2 (ja) * 1995-10-12 2003-01-08 株式会社日立製作所 データベース管理システム
US6141677A (en) * 1995-10-13 2000-10-31 Apple Computer, Inc. Method and system for assigning threads to active sessions
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
US5875329A (en) * 1995-12-22 1999-02-23 International Business Machines Corp. Intelligent batching of distributed messages
US5931923A (en) * 1996-02-16 1999-08-03 Advanced Micro Devices, Inc. System for accessing control to a peripheral device utilizing a synchronization primitive within the peripheral device
US5778390A (en) * 1996-06-07 1998-07-07 Electronic Data Systems Corporation Method and systems for creating duplicating, and archiving database files
US6341301B1 (en) * 1997-01-10 2002-01-22 Lsi Logic Corporation Exclusive multiple queue handling using a common processing algorithm
US5881304A (en) * 1997-03-21 1999-03-09 International Business Machines Corporation Incidence graph based communications and operations method and apparatus for parallel processing architecture
US5903770A (en) * 1997-03-21 1999-05-11 International Business Machines Corporation Incidence graph based communications and operations method and apparatus for parallel processing architecture
US6108340A (en) * 1997-03-21 2000-08-22 International Business Machines Corporation Incidence graph based communications and operations method and apparatus for parallel processing architecture
US5912893A (en) * 1997-03-21 1999-06-15 International Business Machines Corporation Incidence graph based communications and operations method and apparatus for parallel processing architecture
US6105112A (en) * 1997-04-14 2000-08-15 International Business Machines Corporation Dynamic folding of cache operations for multiple coherency-size systems
US6247025B1 (en) * 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
JP3823475B2 (ja) * 1997-09-18 2006-09-20 ソニー株式会社 データ処理方法、記録媒体及びデータ処理装置
US6065019A (en) * 1997-10-20 2000-05-16 International Business Machines Corporation Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization
US6081906A (en) * 1997-11-21 2000-06-27 Fuji Xerox Co., Ltd. Multi-thread processing with queuing and recovery
US6272518B1 (en) 1998-08-17 2001-08-07 International Business Machines Corporation System and method for porting a multithreaded program to a job model
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6868541B1 (en) * 1998-12-21 2005-03-15 Microsoft Corporation Asynchronous programming environment
EP1142307A1 (en) * 1998-12-23 2001-10-10 PowerTV, Inc. Method and apparatus for operating system kernel operations
US6636883B1 (en) * 1999-02-22 2003-10-21 International Business Machines Corporation Mechanism for passing information between queuing and de-queuing processes
US6792424B1 (en) 1999-04-23 2004-09-14 International Business Machines Corporation System and method for managing authentication and coherency in a storage area network
US6704806B1 (en) * 1999-05-27 2004-03-09 Computer Associates Think, Inc. Method and device for monitoring the creation and destruction of child processes within an application executing in a computer system
US6782537B1 (en) * 1999-09-23 2004-08-24 International Business Machines Corporation Establishing a communicator across multiple processes in a multithreaded computing environment
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
US6931641B1 (en) * 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US20020010848A1 (en) * 2000-05-29 2002-01-24 Shoichi Kamano Data processing system
US7487152B1 (en) * 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US7140018B1 (en) * 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
US6615216B1 (en) 2000-06-29 2003-09-02 Microsoft Corporation Lock free data structure maintenance
DE10055168A1 (de) * 2000-08-03 2002-02-21 Siemens Ag Industrielle Steuerung auf der Basis verteilbarer Technologischer Objekte
US7117049B2 (en) * 2000-08-03 2006-10-03 Siemens Aktlencesellschaft Industrial controller based on distributable technology objects
EP1217517A1 (en) * 2000-12-22 2002-06-26 Sun Microsystems, Inc. Synchronizing calls in a server and client system
US7228375B1 (en) 2001-01-12 2007-06-05 Slt Logic, Llc System and method for efficient input/output of a computer system
US7228550B1 (en) * 2002-01-07 2007-06-05 Slt Logic, Llc System and method for making communication streams available to processes executing under control of an operating system but without the intervention of the operating system
US7219345B2 (en) * 2002-12-17 2007-05-15 Hewlett-Packard Development Company, L.P. System and method for terminating processes in a distributed computing system
US7386619B1 (en) * 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7900092B2 (en) * 2003-07-11 2011-03-01 Computer Associates Think, Inc. Kernel-level method of flagging problems in applications
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7873947B1 (en) * 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US8966488B2 (en) * 2007-07-06 2015-02-24 XMOS Ltd. Synchronising groups of threads with dedicated hardware logic
CN102023899B (zh) * 2010-12-14 2014-11-05 中兴通讯股份有限公司 多线程数据同步方法及装置
US9110878B2 (en) * 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
JP5859472B2 (ja) * 2013-03-26 2016-02-10 株式会社日立製作所 プロセスの待ち行列を共有する複数のプロセッサを有する計算機、及び、プロセスディスパッチ処理方法
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
CN115861026B (zh) * 2022-12-07 2023-12-01 格兰菲智能科技有限公司 数据处理方法、装置、计算机设备、存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4402046A (en) * 1978-12-21 1983-08-30 Intel Corporation Interprocessor communication system
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4901230A (en) * 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
JPS6079460A (ja) * 1983-10-07 1985-05-07 Nec Corp 密結合多重演算装置における制御方式
US4584639A (en) * 1983-12-23 1986-04-22 Key Logic, Inc. Computer security system
US5255369A (en) * 1984-03-10 1993-10-19 Encore Computer U.S., Inc. Multiprocessor system with reflective memory data transfer device
US4649473A (en) * 1985-06-17 1987-03-10 International Business Machines Corporation Flexible data transmission for message based protocols
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
EP0243402B1 (en) * 1985-10-15 1991-01-02 Unisys Corporation A special purpose processor for off-loading many operating system functions in a large data processing system
US4807111A (en) * 1987-06-19 1989-02-21 International Business Machines Corporation Dynamic queueing method
US5201040A (en) * 1987-06-22 1993-04-06 Hitachi, Ltd. Multiprocessor system having subsystems which are loosely coupled through a random access storage and which each include a tightly coupled multiprocessor
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system

Also Published As

Publication number Publication date
EP0602359A2 (en) 1994-06-22
US5485626A (en) 1996-01-16
EP0602359A3 (en) 1995-02-15

Similar Documents

Publication Publication Date Title
US5485626A (en) Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
US7962923B2 (en) System and method for generating a lock-free dual queue
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US7849297B2 (en) Software emulation of directed exceptions in a multithreading processor
JP2866241B2 (ja) コンピュータシステムおよびスケジューリング方法
US7650602B2 (en) Parallel processing computer
US7117481B1 (en) Composite lock for computer systems with multiple domains
US9201689B2 (en) Software emulation of massive hardware threading for tolerating remote memory references
US7844973B1 (en) Methods and apparatus providing non-blocking access to a resource
US20060161921A1 (en) Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US20050188177A1 (en) Method and apparatus for real-time multithreading
Keckler et al. Concurrent event handling through multithreading
Grossman et al. Hardware support for fine-grained event-driven computation in Anton 2
Kissell MIPS MT: A multithreaded RISC architecture for embedded real-time processing
Armand et al. Multi-threaded processes in CHORUS/MIX
Michael et al. Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors
Cleary et al. Fast asymmetric thread synchronization
US7360213B1 (en) Method for promotion and demotion between system calls and fast kernel calls
US20250165280A1 (en) System and method for mitigating the effects of preemption in multitasking systems
Kale et al. Threads for interoperable parallel programming
Rothberg Interrupt handling in Linux
Vajracharya et al. Asynchronous resource management
Kavi et al. Multithreaded systems
Leidel et al. Toward a scalable heterogeneous runtime system for the convey MX architecture
Sang et al. The Xthreads library: Design, implementation, and applications