JPH04233060A - ロールバックコンピューティングの方法 - Google Patents

ロールバックコンピューティングの方法

Info

Publication number
JPH04233060A
JPH04233060A JP13688591A JP13688591A JPH04233060A JP H04233060 A JPH04233060 A JP H04233060A JP 13688591 A JP13688591 A JP 13688591A JP 13688591 A JP13688591 A JP 13688591A JP H04233060 A JPH04233060 A JP H04233060A
Authority
JP
Japan
Prior art keywords
task
tasks
processor
execution
memory
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.)
Withdrawn
Application number
JP13688591A
Other languages
English (en)
Inventor
A Tinker Peter
ピーター・エイ・ティンカー
R Argereu Jonathan
ジョナサン・アール・アーグレ
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.)
Boeing North American Inc
Original Assignee
Rockwell International 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 Rockwell International Corp filed Critical Rockwell International Corp
Publication of JPH04233060A publication Critical patent/JPH04233060A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【技術の分野】この発明は、コンピュータプログラムの
並列実行のためのシステムに関するものであり、特定的
にはロールバックコンピューティングを使用する並列処
理のための方法および装置に関するものである。
【0002】
【発明の背景】並列実行するために設計されたコンピュ
ータプログラムは非常に複雑であり得る。並列処理のプ
ログラミングは非常に難解で、費用がかかり、時間を浪
費し、エラーを起こしやすいので、その費用またはリス
クを与えることのできる操作はほとんどない。しかし、
並列処理はコンピューティングのニーズがシングルプロ
セッサの技術の能力を必要とするのに伴い、ますます重
要になりつつある。
【0003】並列、並行操作システムにおける根本的な
問題は、システムの構成要素によって達成されるメモリ
の読出および書込といった、システムのイベントの順序
を制御することである。この問題は、従属侵害を避ける
ためにデータアクセスを管理しなければならないコンパ
イラおよび順が狂ったイベントを避けるためにロックと
クリティカルセクションとを一般的に含むプログラミン
グ言語の構成物に影響を及ぼす。正確にイベントの順序
づけが実施されないと、不正確な結果が、あるいは破滅
的なシステム障害さえもたらし得る。
【0004】従来の自動並列処理の機構は、典型的には
、動的プログラム行動の予知を形成するため静的プログ
ラムテキストの分析を含む。これらの機構はどのタスク
が並行に処理されるべきかの決定において保守的である
。したがって2つのタスクが共用データを介して相互に
有害に作用し合うことができたとしたならば、これらの
タスクは、並列処理にスケジュールされない。この方法
は数値問題にはしばしばうまく作動するにもかかわらず
、他のほとんどのプログラムから十分な並列性を抽出す
ることができず、大型の並列システムにおいて、プロセ
ッサの高い利用を維持することができない。この技術は
、人工知能、離散系シミュレーションおよびコンピュー
タビジョンといった分野のような、極めて動的なデータ
および制御構造に特徴づけられるプログラムに対して、
特に不完全である。その結果、軍用および商用のデータ
処理システムのどちらにも、コンピュータプログラムの
並列処理のための方法および装置を改良する差し迫った
必要が生じてきたのである。
【0005】
【発明の要約】この発明は、ほとんどの順次プログラム
を、原始コードを実質的に変更しないで並列に処理する
のに有用なコンピューティングシステムである。基本ア
ーキテクチュアは通信チャネルによって共用メモリに接
続された1組のコンピュータプロセッサである。並列に
処理すべきタスクを決定する保守的なアプローチの代わ
りに、このシステムは事実上どのようなコンピュータプ
ログラムからも実質的な並列性を抽出するのに最適なス
ケジューリングの方法を使用する。このシステムは、従
来の並列処理の技術に抵抗してきた問題に対してうまく
作動するように設計され、外見上の従属が実行時間に実
体のないことがわかると最もうまく働く。
【0006】この発明のシステムでは、コンピュータプ
ログラムはコンパイル時間または実行時間において、実
行時間に動的に実行するためにスケジュールされた「タ
スク」に分割される。タスクは、タスク間のデータ従属
に関係なく、区分され、スケジュールされることができ
る。プログラムが実際にタスクに区分される態様は、性
能に影響を及ぼすことが予測でき得るが、正確度には影
響を及ぼさないであろう。この発明は改良されたスケジ
ューリングの機構に従って、多数のタスクの実行を開始
することによって、並列性を開発する。プログラムの新
しいタスクは、既存タスクの「スポーン(spawn)
」動作によって作成されると、実行に対する使用が可能
になる。
【0007】このシステムは、その中でデータが従来の
アドレスおよび「タイムスタンプ」の組合わせによって
記憶され、アクセスされる、共用の時間指標付メモリを
利用する。タイムスタンプによって、メモリはプログラ
ム実行中のちょうどよいときに特定のアドレスに異なる
点で割当てられた値を識別することができる。タイムス
タンプは、タスクの初期の順次実行順序を示す各プログ
ラムタスクに関連づけられる。データ従属を保持するタ
スク間の同期は、共用メモリ内の同じ位置へのタスクの
アクセスがタイムスタンプの値によって順序づけられる
ことを確実にすることによって達成される。タイムスタ
ンプの値の比較によって直ちに検出される、順が狂った
メモリの動作によって、影響を受けたタスクは、起こり
得る再実行のため、「ロールバック」される。本質的に
この発明は、自動的にエラーを検出し、回復する、大粒
状にされた命令パイプラインを実現する。このシステム
はタスクの失敗を許容するが、その失敗は直ちに検出さ
れ、システムはタスクの「ロールバック」および再実行
を介して、一貫した機械の状態に復元される。システム
は、あらゆる必須タスクが正確に実行されるまで、タス
クの並列実行、エラー検出、ロールバックおよび再実行
の処理を継続する。
【0008】
【実施例の詳細な説明】
図1は、この発明の基本的なロールバックコンピュータ
システム10を示す。システム10は、インターコネク
ト13によって、共用の時間指標付メモリ14のような
共通仮想アドレス空間に接続されるプロセッサ11およ
び12のような複数のプロセッサを含みネットワークを
形成する。各プロセッサは、標準的なマイクロプロセッ
サを含んでもよく、コードおよび非共用データの記憶の
ための専用メモリを含んでもよい。各プロセッサは、多
重命令多重データ(MIMD)の態様でグローバルな同
期化を行なわずに、自身の速度で命令を実行することが
できる。
【0009】メモリ14は、アドレスおよびタイムスタ
ンプでアクセスされる時間指標付メモリを含む。本質的
には、タイムスタンプは、その中で1つのメモリの動作
が他のメモリに関連して起きる順序を特定する値である
。メモリ14は、通常処理を増加するためにタイムスタ
ンプを連想的に使用する。書込要求は、新しいタイムス
タンプに関連した値を含むメモリ14に新しいエントリ
を作成する。したがって、各アドレスは各々が異なるタ
イムスタンプをつけられた多くの異なる値を含んでもよ
い。読出要求が行なわれると、タイムスタンプは要求さ
れたアドレスにおける考えられ得る多数の値を識別する
ために使用される。
【0010】
【タスク】プロセッサ11のような各プロセッサは、タ
スクスタック15を含む。システム10によって実行さ
れるプログラムは、「タスク」と呼ばれるプログラムの
断片に区分される。タスクは命令を実行し、特定的には
メモリの読出および書込動作を行なう。タスクを構成す
るプログラムコードは、コンパイラ、ソースコードプリ
プロセッサ、またはシステム10のプロセッサの1つの
ような他の構成要素によって決定されることができる。 システム10の性能は、タスクの慎重な区分およびスケ
ジューリングによって最適化されることができる。シス
テム10の基本実施例では、1つのプログラムは一度に
実行し、何の割込みもプログラム制御の流れを変更せず
、タスクはメモリ14を介してのみ伝達され、与えられ
たタスクは、タスクの外部のアドレスへの分岐を含まな
い。
【0011】プログラムの区分およびタスクのスケジュ
ーリング処理の間、各タスクは、そのタスクに関する情
報を含む「タスク記述子」を割当てられる。タスク記述
子は、タスクのコードの開始への参照、プログラムの順
序におけるタスクの位置を示すタイムスタンプ、タスク
によって読出される記憶位置を示す読出リスト、タスク
によって書込まれる記憶位置を示す書込リスト、および
現タスクによってスポーンされたどのような新しいタス
クのためのタスク記述子への参照も含んでもよい。タス
ク記述子はタスクスタック15の中に、タイムスタンプ
の順に最も早いタスクがスタック15の先頭に配置され
、プログラムを構成するタスクの実行の流れを制御する
【0012】
【プログラムの実行】システム10の基本動作は、EX
ECUTE(実行)、SPAWN(スポーン)、REA
D(読出)、WRITE(書込)、およびROLLBA
CK(ロールバック)である。タスクは実行されると、
スタック15の先頭から除去され、初期設定され、実行
される。システム10によって実行される各タスクは、
ゼロの、1つの、または2つの下行性(descend
ent)のタスクを生成するスポーン動作で終了する。 スポーン動作は親タスクおよびその子孫のタイムスタン
プを特定する。読出動作は、共用変数の正確な時間指標
された値を見出し、メモリ動作を適切にログする。書込
動作は、共用メモリ14内に新しいエントリを作成して
動作を記録し、古い値を読出すタスクをロールバックす
る。ロールバックは、ロールバックされたタスクおよび
それによってスポーンされた、ロールバックしている下
行性のタスクによって行なわれるメモリ動作の取消しを
含む。
【0013】一般的には、プロセッサ11は最も早いタ
イムスタンプを有するタスクスタック15中のタスクを
実行し始める。同様に、システム10の各プロセッサは
、最も早いタイムスタンプの順にスタック中のタスクを
別個に実行する。タスクがメモリ14へ読出、もしくは
書込を行なうか、または新しいタスクをスポーンすると
、その動作は起こり得るロールバックで後に使用するた
めタスクの記述子にログされる。新しいタスクはスポー
ンされると、タイムスタンプに従ってタスクスタックに
配置される。システム10のプロセッサが実行するタス
クを有していなければ(アイドル)、タスクは前にアイ
ドルのプロセッサが即時実行するために他のプロセッサ
から移されてもよい。実行するタスクが残っていなけれ
ば、プログラムは終了する。
【0014】システム10によるプログラムの実行は、
楽観的に続行し、これは、プロセッサが待機して、次の
使用可能なタスクを開始する前にプログラム中のより早
いタスク(すなわち下位のタイムスタンプを伴う)タス
クが完了していることを確認しないことを意味する。タ
スクがこの楽観的な機構内で狂った順で実行される可能
性もあり得るため、システム10はタスクの再実行およ
びタスクの開始されたイベントの取消しをサポートする
。しかし、入出力要求またはエラー作用といった取消し
のできないイベント(NRE)は、システム中で最も早
いイベントになるまで据え置かれなければならない。 NREの場合以外では、どのような1つのプロセッサの
正確なイベントの順序も、タスクがプロセッサによって
生成される順に、単独で決定される。各プロセッサは、
より早いタスクを実行する別のプロセッサのために局所
のタスクが無効になったということを知らされるまで、
タスクを順次実行する。無効のタスクは、次に、起こり
得る再実行に備えてロールバックされることができる。
【0015】最も早く、かつ実行されていない、または
プライマリタスク(PT)のタイムスタンプは、グロー
バル仮想時間(GVT)と呼ばれる。PTを保持するプ
ロセッサは、プライマリプロセッサ(PP)と呼ばれる
。PPは他のどのプロセッサもスタックにより早いタス
クを有していないことを知っている。現在のPPが使用
されない状態になると、新しいPTを有するプロセッサ
が新しいPPになる。GVTの計算は必要とされず、G
VTはプロセッサからプロセッサへ送られるトークンと
してみなされてもよい。PPの一致は、プロセッサから
プロセッサへの最も早いタイムスタンプされたタスクに
続いて、プログラム実行中、継続的に変化する。実行さ
れねばならないあらゆるタスクは、そのタイムスタンプ
がGVTになると直ちにPTになる。この発明の最適化
された実施例では、PPはNREに出会うとすぐこれら
を実行することができ、メモリ14からのPPによる読
出は、記録される必要がない。したがって、PPはオー
バーヘッドを減少されたために、システム10の他のプ
ロセッサと同じくらい、あるいはそれより速くタスクを
実行することができる。
【0016】分類されたイベントリストを維持するため
のオーバーヘッドの低減、文脈切替えの減少、関連タス
クの局所性の増加、グローバルイベントの順序への局所
忠実度の改善、順の狂ったタスクのみへのロールバック
動作の削減、ならびに係属中および過去のタスクを記憶
するための列に代わるスタックの使用の結果として、シ
ステム10は先行のロールバックを基本にした並列コン
ピューティングシステムを上回る効率化を達成する。
【0017】
【時間指標付のメモリアーキテクチュア】時間指標付の
共用メモリ14は、迅速なメモリアクセスを提供し、既
存の標準メモリの設計と共に使用することができ、種々
の技術および集積度を使用して構成されることができる
。図1、2および3を参照すると、メモリ14はインタ
ーコネクト13によってコンピュータプロセッサに接続
されたメモリバンク一式を含む。インターコネクト13
は、たとえばそれによっていくつかのプロセッサが異な
るメモリバンクを同時にアクセスすることができる共用
バスまたはクロスバースイッチ16として実現されても
よい。クロスバースイッチ16は、たとえば高速な再構
成時間および完全な、あるいは部分的同報通信の能力を
有する広帯域幅で、待ち時間が低く、再構成可能な光フ
ァイバースイッチを含んでもよい。メモリ14の各メモ
リバンクは、共用変数のための記憶領域(SA)および
SA21を含むインターコネクト13のクロスバースイ
ッチ16に接続するバンク制御装置(BC)31を含む
【0018】図2は、共用メモリ14の記憶領域(SA
)21のブロック図である。メモリ14は、アドレスさ
れた変数「i」の時間基準のヒストリを含むSA21の
列に対応する可変アドレスVi によってアクセスされ
る。SA21の各列は、その変数に対して3つのリスト
を記憶する。すなわち、変数を読出した各タスクのタイ
ムスタンプを記憶する読出時間(RT)リスト22、変
数を書込んだ各タスクのタイムスタンプを記憶する書込
時間(WT)リスト23、およびタイムスタンプされた
各変数の書込に対応する値を記憶する書込データ(WD
)リスト24を記憶する。読出コマンドがタスクによっ
て与えられると、アドレスVi は、メモリアドレスレ
ジスタ(MAR)25内に位置づけられ、アドレスVi
 に対応するSA21の全列は、メモリバッファレジス
タ(MBR)26に転送される。全MBR26は、SA
21の外部のバンク制御装置(BC)31にアクセス可
能である。
【0019】図3は、バンク制御装置(BC)31のブ
ロック図である。BC31はたとえばMBR26のRT
22、WT23およびWD24に対応する3組のシフト
レジスタ、すなわちインターコネクト13から受信した
情報を保持するためのアドレスレジスタ、タイムスタン
プレジスタ、データレジスタ、およびグローバル仮想時
間(GVT)レジスタと、ロールバックされるべきタス
クのタイムスタンプを一時的に保持するためのロールバ
ックレジスタと、様々なビットフラグとを含んでもよい
。BC31の機能の1つは、SA21に保たれるデータ
構造を維持することである。RT22およびWT23は
、タイムスタンプの増加する順に保たれる。WD24は
、WT23と同じ順に記憶され、したがって書込時間と
データとの間の関係を維持する。BC31は、インター
コネクト13から到着する、プロセッサ生成メモリコマ
ンドに応答する。BC31への基本コマンドは次のとお
りである。
【0020】Init:メモリバンクを初期設定せよ。 すなわちWD24のすべての記憶位置をゼロに設定し、
かつRT22およびWT23のすべての記憶位置を最大
スタンプに設定せよ。
【0021】SetGVT  p,t:現在のGVTを
(プロセッサpから)タイムスタンプtに設定せよ。
【0022】Read  x,t:タイムスタンプtで
変数xを読出せ。 Write  x,t,d:変数xのデータdをタイム
スタンプtで書込め。
【0023】Rollback  t:タイムスタンプ
tを有するタスクをロールバックせよ。
【0024】RetractRead  x,t:タイ
ムスタンプtで変数xの読出を取消せ。
【0025】RetractWrite  x,t:タ
イムスタンプtで変数xの書込を取消せ。
【0026】一般的には、BC31は読出および書込要
求をサービスし、RT22、WT23およびWD24を
維持し、誤ったデータを読出してしまったか、または先
に進みすぎてしまったタスクのロールバックを命令し、
古いデータを除去する。この機構の主な利点は、読出お
よび書込が、読出および書込リストの任意の点で挿入さ
れることができ、先行するスタックを基本にする機構と
は違って、誤った順にデータを読出す、まさにそのタス
クのロールバックを許容することである。基本コマンド
の副産物として組込まれる2つの重要動作は、化石収集
(fossilcollection)(GVTよりも
古く、ゆえにもはや有用でないデータおよびタイムスタ
ンプの除去)、および流れの制御(RT22およびWT
23が既に一杯のとき、最も前方のタスクのロールバッ
ク)である。GVT、またはそれより早い時点でタイム
スタンプを識別し、変数のデータ構造がアクセスされる
たびに、BC31のGVTレジスタに記憶された現在値
より古い値すべてを単に捨てることによって、化石収集
が達成されるようにすることが必要である。
【0027】
【タスクの状態および動作】システム10によって作成
されたタスクは、次の状態の1つであってもよい。
【0028】NEW(N):実行されていないタスクN
EW  ACTIVE(NA):目下実行されている新
しいタスク OLD(O):少なくとも一度前に実行されたことのあ
るタスク OLD  ACTIVE(OA):次のロールバックを
実行されるタスク ROLLBACK(R):訂正動作のためにロールバッ
クされるタスク SUSPEND(S):プライマリ(PT)になるまで
中断されたタスク KILLED(K):実行されるべきでないタスクタス
クはすべて状態Nで開始する。したがって、新しいタス
クがスポーンされると、それは状態Nで開始する。 新しいタスクがスポーンされるのは、状態NAまたはO
Aのタスクが、1つまたは2つのサブタスクに分割する
ときである。後継タスク(ST)が分割に続いて直ちに
プログラムコードで始まり、継続タスク(CT)がST
の終了とともにそのコードで始まり、これらの分割され
たタスクは終了する。分割後、プロセッサは直ちにST
を実行し、タスクスタックのCTを状態Nに置く。移送
、ロールバック、またはキル(kill)されなければ
、状態Nの各タスクは、結局スタックの先頭に到達し、
状態NAに入る。実行後、タスクは状態Oに入る。 状態Oのタスクは、プライマリ(PT)になると、もは
やロールバックされることができないので、システムか
ら除去される。PTでない稼動中のタスクがNREを実
行しようと試みると、タスクは状態Sに入り、それがP
Tになるまで実行は中断される。タスクはもしその後不
正確と判明した値をその前に読出すと、状態OまたはS
から状態Rに入るであろう。状態Rからタスクは一般的
に状態OAに入る。状態N、S、O、またはRのとき、
タスクがもし最初にスポーンまたは実行されるべきでな
かったと後で判明すればキルされてもよい。
【0029】タスクは、タイムスタンプt0 で、既に
タイムスタンプt1 >t0 の値を有するアドレスで
メモリ14への書込要求を発すると、ロールバックが開
始される。t1 >t>t0 であるタイムスタンプt
でこのアドレスを読出したタスクはどれも、誤った値を
読出しており、ロールバックされねばならない。もしタ
イムスタンプt1 >t0 でこのアドレスに対する値
がなければ、タイムスタンプt>t0 で値を読出した
タスクはすべて、ロールバックされねばならない。もし
ロールバックタスクがメモリ14に対し読出または書込
を行なえば、その書込は取消されねばならない。メモリ
14内の書込の取消しは、取消された書込を読出したど
のようなタスクもロールバックすることを要求する。一
般的には、ロールバックタスクによってスポーンされた
どのようなタスクもキルされる。もしキルされたタスク
が既に実行されていたら、それはまずロールバックされ
、誤った値を取消さねばならない。
【0030】
【プロセッサの状態および動作】プロセッサ11または
12といったシステム10の各プロセッサは、次の動作
状態の1つであってもよい。
【0031】IDLE(I):どのタスクも実行しない
。 MIGRATING(M):タスクをPPから移送する
【0032】EXECUTING  NEW(EN):
PPでない間NAタスクを実行する。
【0033】EXECUTING  GVT(EG):
PPとしてNAタスクを実行する。 EXECUTING  OLD(EO):OAタスクを
実行する。
【0034】DONE(D):処理終了。 アイドルのプロセッサは、使用可能なタスクをプライマ
リプロセッサ(PP)から常に移送する。移送されたタ
スクは、常にPPのタスクスタック中の最新(すなわち
最高)のタイムスタンプされた、N状態またはO状態の
タスクである。移送されたタスクの記述子は、アイドル
のプロセッサに複写され、GVTの「リンク」はPPの
その位置に残され、どのプロセッサがタスクを移送した
かを示す。類似のリンクが以前アイドルのプロセッサの
タスクに置かれ、移送されたタスクのソースプロセッサ
を示す。以前アイドルのプロセッサは直ちに移送された
タスクを実行し、移送されたタスクにスポーンされたど
のようなタスクの実行も一般的に継続する。N状態のタ
スクがスタックに残っていなければ、プロセッサはロー
ルバックタスクを状態Oから状態OAに移動させること
によって再実行を開始する。タスクがスタックに残って
いなければ、プロセッサはアイドルになり、それがPP
でなければ別の移送を試みる。PPに実行すべきタスク
がなくなれば、そのタスクスタックが空にならねばなら
ないか、スタックの先頭の項目が次のPPへのリンクに
なるかのいずれかである。後者の場合、PPの指定は新
しいPPへ転送されねばならず、リンクは前のPPのス
タックから除去されねばならない。
【0035】この発明の重要な局面は、タイムスタンプ
の構成および使用である。効率的なロールバックコンピ
ューティングのために、タイムスタンプはプログラムの
順序を正確に示さねばならず、固定され、大きさが小さ
く、容易に生成され、かつ比較が容易であるべきである
。システム10は、2つの容易に維持される整数、「プ
ロセッサ移送番号」(M)および「タスク連続番号」(
S)から生成されるタイムスタンプを使用する。 さらに、プライマリプロセッサ(PP)は、「次の移送
番号」または「NextM」のカウンタを維持する。N
extMの初期設定値は、省略時の最大の番号である。 PPの移送番号Mの値は、常に、それが最も早いタスク
について作動していることを示す。他のすべてのプロセ
ッサのMの値は、タスクが実際に移送されるまで、定義
されないままである。PPのNextMは、次に新しい
移送番号Mを、タスクに移送されるとき、各プロセッサ
に割当てるために使用される。タスクがPPから移送さ
れると、NextMの値は、1まで減少させられ、次の
移送に備える。新しいプロセッサがPPになると、Ne
xtMの値は、前のPPのNextMの値である。移送
が起こると、新しく移送されたタスクのタスク連続番号
Sはゼロに設定される。連続番号Sは次に、新しいタス
クがプロセッサ内で移送されたタスクによってスポーン
されるたびに、増加される。この発明の好ましい実施例
では、各タスクのタイムスタンプは、プロセッサの移送
番号Mを各タスクの個々の連続番号Sに連結することに
よって形成される。MおよびS番号が連続して各タスク
のために記憶されると、システム10内のタイムスタン
プの比較はわずか1つの比較命令で、極めて迅速に行な
われることができる。
【0036】この発明の代替の実施例において、時間指
標付のメモリ14の各バンクは、移送番号のスタックを
維持する。各バンクの移送番号スタックは、最初のPP
の移送番号で初期設定される。タスクはPPから移送さ
れ、移送されたタスクは、各メモリバンクに伝送される
固有の移送番号を割当てられる。各バンクは、一時的に
PPの移送番号をスタックから除去し(「ポップ(po
p)」し)、移送されたタスクの移送番号をスタックの
先頭に置き(「プッシュ(push)」し)、PPの移
送番号をスタックの先頭に戻す(「プッシュ」する)。 PPの一致が変化すると、各メモリバンクは古いPPの
移送番号をスタックから除去する(「ポップ」する)。 この手順を使用して、各メモリバンクの移送番号のスタ
ックは、スタックの先頭から昇順のタイムスタンプに配
列された現在のすべての移送番号を維持する。
【0037】この代替の実施例では、各変数の読出およ
び書込データリストは、タイムスタンプの順に配列され
ることを必要としない。代わりにリストの各要素は、関
連したデータを有することができ、スタック中の要素の
タイムスタンプ移送番号の位置を変数がメモリバンクに
よって最後にアクセスされたときに符号化する。各メモ
リ動作の相対的な順序は、その後各要素に記憶されたス
タックの位置の値を暗示する。変数がアクセスされると
、古いリストのエントリは、その残存しているリストの
エントリの値がもはや移送番号のスタックにないエント
リを除去することによって削除される。残存リストエン
トリの新しい位置の値は、同時に計算されることができ
る。しかし、「アーカイブ値」、すなわちBPがアクセ
スされた値のために読出しなければならない、現在のP
Pの移送番号よりも早い最新値を除去しないように注意
しなければならない。
【0038】図4を参照すると、表は例証のみに役立つ
この発明の簡略化された実施例において、タスクがタス
クスタック内にどのように置かれているか、およびPP
の指定が計算時間の期間中、プロセッサからプロセッサ
へどのように移動させられるかを示す。図4は、単一の
プログラムを実行中の3つのプロセッサP1、P2およ
びP3のタスクスタックを示す。先頭列41は、プログ
ラム実行中の相対的な時間期間を示す。プロセッサP1
の列42のような各別個のプロセッサの先頭列は、現在
プロセッサによって実行されている稼動中タスクの番号
を示す。各プロセッサの稼動中タスクの列の下には、プ
ロセッサP1のスタック43のようなタスクスタックが
ある。タスクスタックの下にある「x」は、PPとして
プロセッサを指定し、スタックの括弧内の数字は、その
数字に対応するプロセッサへのGVTリンクを示す。
【0039】図4の例証プログラムの動作は、PPであ
る稼動中プロセッサのタスク1の実行と共に時間期間1
において開始する。時間2において、タスク1はプロセ
ッサP1にタスク2および5をスポーンする。時間3に
おいて、プロセッサP1は、タスク5はプロセッサP2
へ移送する間、タスク2を実行する。移送を示すために
、P2へのリンクはP1のスタック内に置かれ、P1へ
のリンクはP2のスタック内に置かれる。時間4におい
て、タスク2はプロセッサP1にタスク3および4をス
ポーンし、タスク5はプロセッサP2にタスク6および
7をスポーンする。時間5においてP1はタスク3を実
行し、P2はタスク6を実行し、タスク4はそこで実行
されるP3へ移送される。移送は、P1のスタックの先
頭に置かれるP3へのリンクおよびP3のスタック内に
置かれるP1へのリンクによって示される。時間6にお
いて、P1はすべてのタスクを完了し、P3へのリンク
は時間7で示されるようにPPの指定がP3へ渡される
べきことを示す。しかし、時間7において、P3はタス
ク4を完了し、スタックの先頭のリンクはPPの指定が
P1へ戻されるべきことを示す。時間8において、P2
はタスク7の実行を継続し、P1のスタックの先頭のリ
ンクは時間9に示されるように、PPの指定がP2に渡
されるべきことを示す。時間10において、P2はタス
ク7を完了し、リンクはPPの指定がP1に戻されるべ
きことを示す。時間11において、PPの指定はP1に
戻り、すべてのプロセッサのタスクスタックが空である
ため、プログラムの実行は終了する。
【0040】この発明のロールバックコンピュータシス
テムは、その中でハードウェアが臨界動作の順序づけの
一部を行なう並列プログラミングの根本的に異なる見解
を提供する。このシステムの最適なアプローチによって
、通常の順序プログラムが並列機械のために損失の多い
再プログラムを行なわなくても並列に実行されることが
できる。さらに、このアプローチは極めて動的なプログ
ラムおよび高度にデータに依存するプログラムのような
、他の並列機構が最悪の状態で行なわれるところで、最
高の状態で行なわれる。結果として、この発明のロール
バックコンピュータシステムは、ソフトウェア技術が現
われるプログラムの並列処理における難解な問題への解
決法を提供するであろうと思われる。
【0041】この発明は、それについての特定の実施例
に関して説明されてきたが、様々な変化および変更が当
業者に提案されてもよい。特定的には、多くの異なるプ
ログラミング機構が説明された機能を達成するために、
この発明の装置と共に使用されてもよい。したがって、
この発明は添付の請求項の範囲内にあるような変化およ
び変更を包括することが意図される。
【図面の簡単な説明】
【図1】この発明の基本アーキテクチュアのブロック図
である。
【図2】この発明における共用メモリのメモリバンク記
憶領域(SA)のブロック図である。
【図3】この発明における共用メモリのバンク制御装置
(BC)のブロック図である。
【図4】この発明の3つの並列プロセッサの稼動中タス
クおよびタスクスタックの例を示した図である。
【符号の説明】
10  ロールバックコンピューティングシステム11
  プロセッサ 12  プロセッサ 14  共用の時間指標付メモリ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】  コンピュータプロセッサのネットワー
    クによる、コンピュータプログラムの並列実行のための
    ロールバックコンピューティングの方法であって、プロ
    セッサのネットワークへ、共用、時間指標付メモリを接
    続するステップと、コンピュータプログラムを1つの、
    またはそれより多いタスクに区分するステップと、タス
    ク記述子を前記タスクの各々に割当てるステップとを含
    み、前記タスク記述子はプログラム中のタスクの順次の
    順序を示し、さらに、1つの、またはそれより多いプロ
    セッサによって実行されるために前記タスクをスケジュ
    ールするステップと、前記タスクの各々が実行されると
    き、タイムスタンプを前記タスクの各々に割当てるステ
    ップと、タスクのタイムスタンプを時間指標付メモリを
    含む動作に関連させるステップと、メモリ動作のタイム
    スタンプを比較して、順の狂った動作を検出するステッ
    プと、前記検出された順の狂った動作に影響を受けたタ
    スクをロールバックするステップと、前記ロールバック
    されたタスクを起こり得る再実行に備えてスケジュール
    し、タスク間のデータ依存を保持するステップとを含む
    、方法。
  2. 【請求項2】  タイムスタンプされた最も早いタスク
    をプライマリタスクとして指定し、かつ前記プライマリ
    タスクを実行するプロセッサをプライマリプロセッサと
    して指定するステップをさらに含む、請求項1に記載の
    方法。
  3. 【請求項3】  使用可能なタスクを前記プライマリプ
    ロセッサからアイドルプロセッサへ移送するステップを
    さらに含む、請求項2に記載の方法。
  4. 【請求項4】  新しいタスク記述子および新しいタイ
    ムスタンプを実行されたタスクによってスポーンされた
    新しいタスクに割当てるステップをさらに含む、請求項
    3に記載の方法。
  5. 【請求項5】  移送元のプロセッサおよび移送先のプ
    ロセッサを示す、移送中のタスクにリンクを与えるステ
    ップをさらに含む、請求項3に記載の方法。
  6. 【請求項6】  プライマリプロセッサの指定を、実行
    すべきタスクを有しない前のプライマリプロセッサから
    、前のプライマリプロセッサへのリンクを有する新しい
    プライマリプロセッサへ転送するステップをさらに含む
    、請求項5に記載の方法。
JP13688591A 1990-06-11 1991-06-10 ロールバックコンピューティングの方法 Withdrawn JPH04233060A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US53614190A 1990-06-11 1990-06-11
US536141 1990-06-11

Publications (1)

Publication Number Publication Date
JPH04233060A true JPH04233060A (ja) 1992-08-21

Family

ID=24137330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13688591A Withdrawn JPH04233060A (ja) 1990-06-11 1991-06-10 ロールバックコンピューティングの方法

Country Status (1)

Country Link
JP (1) JPH04233060A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204008A (ja) * 2007-02-16 2008-09-04 Mitsubishi Electric Corp 論理プロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204008A (ja) * 2007-02-16 2008-09-04 Mitsubishi Electric Corp 論理プロセッサ

Similar Documents

Publication Publication Date Title
US5347639A (en) Self-parallelizing computer system and method
US8239843B2 (en) Value predictable variable scoping for speculative automatic parallelization with transactional memory
KR101355496B1 (ko) 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘
JP5398375B2 (ja) ユニプロセッサ・システム上のプリエンプタブルな読み取り・コピー・更新のための猶予期間検出の最適化
US6634023B1 (en) Compile method, exception handling method and computer
US5974538A (en) Method and apparatus for annotating operands in a computer system with source instruction identifiers
JP3231571B2 (ja) 順序付きマルチスレッド実行方法とその実行装置
JP2679779B2 (ja) トランザクション処理方法及び装置
US5408658A (en) Self-scheduling parallel computer system and method
JP3731843B2 (ja) 命令シーケンスを実行する方法及び装置
US7328331B2 (en) Method and system of aligning execution point of duplicate copies of a user program by copying memory stores
US20080263337A1 (en) Instructions for ordering execution in pipelined processes
US20110246823A1 (en) Task-oriented node-centric checkpointing (toncc)
US5412784A (en) Apparatus for parallelizing serial instruction sequences and creating entry points into parallelized instruction sequences at places other than beginning of particular parallelized instruction sequence
KR20000076584A (ko) 컴퓨터 프로세싱 시스템에서의 로드 연산을 재순서화하기위한 방법 및 장치
US5261067A (en) Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system
US5280615A (en) Out of order job processing method and apparatus
US11620215B2 (en) Multi-threaded pause-less replicating garbage collection
JP2001312405A (ja) コンピュータ・システム
US20090070564A1 (en) Method and system of aligning execution point of duplicate copies of a user program by exchanging information about instructions executed
JP2003029986A (ja) プロセッサ間レジスタ継承方法及びその装置
US8700851B2 (en) Apparatus and method for information processing enabling fast access to program
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP2002530735A5 (ja)
Fu et al. Run-time compilation for parallel sparse matrix computations

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19980903