JPS6337432A - 関数言語を持つ並列処理システムおよび方法 - Google Patents

関数言語を持つ並列処理システムおよび方法

Info

Publication number
JPS6337432A
JPS6337432A JP62191473A JP19147387A JPS6337432A JP S6337432 A JPS6337432 A JP S6337432A JP 62191473 A JP62191473 A JP 62191473A JP 19147387 A JP19147387 A JP 19147387A JP S6337432 A JPS6337432 A JP S6337432A
Authority
JP
Japan
Prior art keywords
block
main memory
processor
location
cache
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
JP62191473A
Other languages
English (en)
Inventor
トーマス エフ ナイト ジュニア
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.)
Symbolics Inc
Original Assignee
Symbolics Inc
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 Symbolics Inc filed Critical Symbolics Inc
Publication of JPS6337432A publication Critical patent/JPS6337432A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】 「産業上の利用分野」 本発明は、プログラム命令を並列処理する方法およびコ
ンピュータシステムに関する。
「従来技術」 プログラムモデルの定義で開始された多くの並列アーキ
テクチャは、制限関数として支持されている。コンピュ
ータアーキテクチャは、基本的機能が満足するとコンピ
ュータに形成される順序が関連しているので、制限関数
の研究が仕事をより容易にしていることが発見された。
従って、制限関数言語を実行する高度に並列処理機を形
成することはかなりの近道となる。制限関数言語は、バ
ッカス氏の「フォノ ノイマン形式から独立してプログ
ラムが可能か?関数形式およびその代数学的プログラム
J A CMの通信21巻、8号613〜641頁19
78年8月に記載しているように、プログラムの部分に
おける修正の容易性および思考および理解の容易性等の
相当の利点を持っている。
不幸にして、制限関数プログラム形式が不適当であるア
ルゴリズムの分類がある。問題は、制限関数プログラム
と、非関数の周辺装置とのインターフェイスの困難性に
根付いている。例えば未修飾の制限関数形式において、
オペレーティングシステムのようなタスクをプログラム
することが困難である。この欠陥を直すために、制限関
数形式の独創的な修正が提案されている。例えば、2(
IIの入力のどちらが最初に用意されてリターンするマ
ッカーシのAMB演算子(オペレータ)は、この問題及
び同様の問題を解決するのに不適当である。種々の等価
の演算子がピータ ヘンダーソン氏の「純粋関数形式に
おける完全プログラムシステムを実行することが正当か
?」技術メモPMM/94、タインコンピュータ研究所
のニューカッスル大学1980年12月に提案されてい
る。
「発明が解決しようとする問題点」 しかし、このような非関数演算子の導入は、その利点を
破壊する。アーキテクトがもはや関数の実行順序を知る
ことができず、プログラムを再び修正することが非常に
困難なタスクになっている。
勿論、使用者はこのような演算子によるプログラムが退
屈で、間違いがちである。特に、アーガ氏の[アクター
二分配システムにおけろ共存計算のモデルJMIT(マ
サチューセッツ工科大学)人口知能研究所技術メモ84
4.1985年に示すように、このような演算子の存在
が非関数言語における通常のメモリ位置として適切に副
作用される新しいデータ形式、セルを許容する。従って
、AMB演算子の導入は、副作用問題の欠乏を解決する
に最適であるが、関数言語提唱者が除こうと試みた多く
の問題が再び発生している。
従って、従来の考えでは、1個か種々の定理を証明でき
る純粋関数言語のような弱いシステムを形成するか、あ
るいは1個が僅かな定理を証明できる強力システムを形
成するかのいずれかの選択を示している。
制限関数言語のどの理論的困難性より相当深刻な問題は
、ある型のプログラムを実行する際のプログラマの困難
性である。例えばアベルソンおよびサスマン氏の「コン
ピュータプログラムの構造および翻訳JMITプレス、
ケンブリッジ1985年の第3章に議論しているように
、1組のオブジェクトの内部状態に関するアルゴリズム
を考察することがしばしば最も自然である。プログラム
言語仕様における、このオブジェクト指向の観点は、計
算に対する制限関数近似に一致しない。同じアルゴリズ
ムがいずれかの形式に実行でき、両システムが確かに汎
用であるが、プログラマは、思考がより容易で、設計が
より容易で、バグ取りがより容易なプログラム用の一言
語を発見する事実がその言語を形成するためにプログラ
ム言語用の強力な誘因である。
もしこれが全く代表的な発刊物であったならば、好適な
翻訳技術が副作用ための支持体を形成するが、純粋に関
数操作に翻訳されるプログラム言語に最後に導かれるこ
とか希望的に観測される。しかし、前述したように、こ
れは通常の場合不可能である。
副作用は問題を生じさせる。アーキテクトは、これらを
支持する並列処理アーキテクチャを構築することが困難
であると発見された。ソフトウェアの検証は、このよう
な問題を論証することが困難であると発見された。多数
の副作用を持ったプログラム形式は、理解、修正及び維
持するのに困難である。
本発明によれば、副作用を完全に除去する代わりに、副
作用の使用を相当切り詰めたものが提案されている。フ
ォートランのような従来のプログラム言語における殆ど
の副作用が必要でない。これら副作用が多重タスク通信
問題の困難性を解決しない。また、プログラムの明快さ
、あるいは大規模な規格単位を改良しない。これらの代
りに、副作用はループ指標変数を更新するようなささい
な目的に使用される。
これらの不要な副作用の除去は、本発明にょっ。
て後述するように、コードをより読み易く、保守し易く
し、実行もより速くさせる。
これら同じ発刊物の多くか!985年A CMのプログ
ラム言語及びシステムにおける会報の「マルチリスプ・
共存シンボリック計算のための言語」に記載しているよ
うに、ハルステッドのマルチリスプ、スキームの並列変
数に動機を与えている。
並列計算にアクセスを形成する類似マルチリスプは、言
語にプログラマが目視できるプリミティブを追加するこ
とである。従来のリスプと異なった3個のプリミティブ
は、次の通りである。
将来プリミティブは、カプセル包含値の評価を許容しな
がら、同時にその包含値用の約束をコーラ(Ca1le
r)に戻し、コーラが戻ったオブジェクトと計算を続行
し、データ構造と協働し、他の関数に通過する。この値
の検査時にのみ、その値の並列計算を完成するために必
要である。
プコール(pcall)プリミティブは、関数に対する
並列評価引数を許容し、ハルステッドが将来の順序に拡
張できる単純マクロとして実行可能と教示している。こ
れは将来の様式化した使用のための統語論の甘言として
考えられる。
遅延プリミティブは、結果が必要になるまで指定の計算
を遅延させることをプログラマに特定させることを許容
し、将来と幾らか類似して、遅延が約束に戻って、値を
計算するが、結果が必要になるまで値を計算し始めない
。従って、遅延プリミティブが言語の並列化の源でない
。この方法はプログラマに遅い評価意味論を形成する。
遅延および将来は、適用序列計算から異なった実行の順
序となる。副作用の欠落においては、両者は計算が形成
される順序のみに影響されるので、プリミティブを持た
ない等価なプログラムとして同じ値となる。これは、注
意深い使用が値に戻る未終結プログラムを許容できるの
で、遅延用の制限的に真でない。
副作用の存在においては、その値が他の計算と並列に計
算されるので、将来の振舞いを予測することが困難であ
る。
遅延の値が追加の平行論を導入しないので、決定論的で
あるが、計算時間が最初に検査された値に従属する。こ
れは、非常に非直感的であるが、プログラムを書きなが
ら思考することが困難である。
ハルステッドは、コーラに戻すことによって、将来及び
遅延プリミティブをデータ型の将来オブジェクトに実行
した。このオブジェクトは、約束された計算によって戻
される値を時として含むスロットのポインタを含んでい
る。この将来は、データ構造に記憶されて、値として通
過してもよい。
計算に先立って将来値の参照を企てる計算が保留される
。約束された計算が完了した時には、戻り値が指定スロ
ットに記憶されて、将来が決定され始める、これは、ど
の懸案の保留手順がこの値を走らせる毎に待機を許容し
、将来に対するどの更なる参照が単純に現在計算値に戻
る。
将来あるいは遅延の使用は宣言として考えられる。これ
らの使用は、遅延あるいは将来のスコープ内でなされた
いずれかの計算が副作用を持たないことを宣言し、ある
いはらしそうでなければ、他の計算に関連して実施され
た副作用の順序が関係ないことを宣言する。勿論、これ
らは、計算で参照される制限あるいは共有変数がプログ
ラムの他の並列実行部分によって副作用される宣言を保
証する。
将来あるいは遅延は、全宣言と同様に非常に強力な主張
である。その使用は、型宣言に類似する方法において、
自動検証が困難であり、誤りがちであり、省略時に重大
なパフォーマンスの衝撃を持ち、多くの検査ケース毎に
修正関数でよく、他では予想に反して失敗していた。
翻訳言語を検査する強力型の提唱台は、プログラムの訂
正の型を検証できるコンパイラの構築をここ数年試作し
ている。深刻なプログラム用に十分に洗練された全言語
は、少なくとら実行時間で安全に型用の動的検査が要求
される。これらの検査は、ムーン氏の「第12回コンピ
ュータアーキテクチャの国際シンポジウムでのシンポリ
ックス3600のアーキテクチャjl’985年76〜
83頁に議論していたように、最新のアーキテクチャの
通常の命令実行順序の部分あるいは従来のアーキテクチ
ャの追加命令として実行される。これの代りに、プログ
ラマの言語に頼る型の宣言は、従来のアーキイ゛勺ヂャ
に良好なパフォーマンスを導きながら、危険で、誤りが
らで、現代のプログラム環境を洗練するに不適当てあっ
fこ。
「問題点を解決するための手段」 本発明の主な目的は従来技術のシステムの欠点を取り除
くことにある。
本発明は、プログラマに、プログラムの実行順序を目視
できるようにしながら、プログラムの種々の部分を並列
実行する能力を持つコンピュータシステムに関する。こ
の平行篩の自動抽出は、並列環境の改良用に徐々に努力
して、コンピュータ科学研究の数10年に亙って発展し
た既存のプログラムツール、言語及びアルゴリズムが利
用できるので、魅力的なアーキテクチャである。並列実
行の利点が全部このアーキテクチャに伴わないが、既存
のプログラムからの幾分適量の並列実行を抽出する能力
は努力する価値がある。更に、アーキテクチャが拡張さ
れて、平行篩に亙って明瞭なモジュール式のプログラマ
制御を形成する。
本発明の達成においては、ハードウェアが型検査用に重
要な走行時間サポートを形成した途端に、走行時間にお
いて将来宣言用に検査するハードウェアを使用すること
が提案されている。
提案されたLi5p移植においては、将来あるいはpc
allのような明瞭な言語拡張が使用されない。
これの代りに、各評価値が将来に包含され、各pcal
lがその意見を並列に自由に評価できると仮定される。
研究は、この仮定が不当である場合に検知され、修正さ
れる。
本発明によれば、コンパイラは、プログラムを処理ブロ
ックの呼出用の翻訳プリミティブ命令の順序に変換する
。殆どの関数部分が副作用命令を持たないことが好まし
いが、システムは少なくとも大部分の命令か関数であり
、即ち参照のみで主メモリを修飾しない限り効果的に操
作される。
各ブロックは、主メモリの内容以外、先の実行と独立し
ている。特に、プロセッサにおけるレジスタあるいは他
の内部ビットがブロックを交差して共有されない。
各ブロックは、ブロックの端部で発生する主メモリに副
作用記憶を正確に含んでいる。
各処理ブロック、主メモリの視点から、レジスタへのロ
ード、レジスタからレジスタへの命令、直接副作用記憶
及び主メモリへの副作用記憶の終了からなる殆ど関数的
なプログラムである。
これら各ブロックは、種々の異なったプロセッサで個別
に実行できる。更に、ブロックが確認され、即ち結果が
有効となるまでブロック間の相互作用がない。しかし、
ブロックの確認順序が臨界的である。副作用は、良く定
義された順序、プログラムで指定された順序で実行され
ねばならない。
更に、副作用の実行は、幾つかの他のブロックが既に読
込まれた位置を潜在的に修飾できる。
これら2個のタスクは、順序を確認し、前の副作用の最
新のブロックの従属性を強制して、本発明に従って特殊
なハードウェアが要求される。
各プロセッサは自主的にブロックを実行する。
副作用の結果はプロセッサに関連するキャッシュに記憶
される。この結果、この実行が他のプロセッサに影響し
ない。ブロックカウンタは通常のプログラムカウンタの
目的に類似して維持される。ブロックカウンタの仕事は
、確認ブロックが次に許可される足跡を保持することで
ある。ブロックカウンタが順々に各ブロックに到着した
時に、ブロックはその参照位置と確認済ブロックの修飾
位置を比較する。このブロックは、もし比較がないなら
ば確認される。ブロックの確認は、キャッシュに記憶し
た結果を主メモリに送って、主メモリの内容を修飾する
ことを許容する。未確認の他のブロックは修飾された位
置を既に参照している。もし、それらのブロックがそう
であるならば、計算中のデータが確認時に無効となる。
しかし、実行中のプログラムは、結果がキャッシュに記
憶されるので、主メモリが修飾されない。
従って、システムは未確認の実行ブロックを自由に放棄
でき、2回再実行できる。この未確認の実行ブロックの
放棄がブロックをアボートして呼び出される。
ブロックのアボートの必要性を検知するためには、参照
したメモリ位置の軌跡を保持する必要がある。従って、
ブロックの実行中に参照された主メモリ内の全位置の住
所を含む従属リストが維持される。プロセッサがロード
命令を実行した時には、従属リストの実行ブロックにロ
ードされた住所(アドレス)を追加する。
ブロックが確認されると、副作用の住所が他の実行中の
全プロセッサに伝えられる。各プロセッサは、実行中の
ブロックが修飾位置を参照したかを決定するために従属
リストを検査する。もしそうであれば、ブロックがアボ
ートされて再実行される。
時々、所定のブロックがブロックカウンタに到着し、そ
の副作用の形成及び完了を許容する。ブロックカウンタ
が次のブロックに進行し、ブロックが用意されたならば
、そのブロックが次の周期で確認される。もし、−ブロ
ックの確認が成功ブロックの実行をアボートしたならば
、パフォーマンスが時間で制限され、アボートされたブ
ロックを取出してプログラムを再実行させる。
この技術によるパフォーマンスの改良は次の2個のファ
クタ、平均ブロック長及びアボートの頻度に依存してい
る。ブロックが長い程、所定のプログラムの実行に必要
な確認が少なくなる。アボートの頻度が多い程、次のブ
ロックの確認前に順次計算するブロックカウンタの待機
回数が多くなる。
今や、ソースプログラムにおいて、副作用数を減少させ
る効果が理解される。副作用の数が減少するとブロック
長が増加する。ブロックがより長いと、少数のブロック
が計算の形成を実行する必要がある。これは、ブロック
実行が順序的なので、クロック周期毎に最大1に制限さ
れる速度で、アーキテクチャのパフォーマンスを制限す
る。ブロック長が増加すると、従属リスト長、従って計
算に影響する他のブロックからの副作用の公算が上昇す
るので、最大の所望ブロック長が好ましい。
本発明によれば、本発明の並列処理システムがプログラ
ムを受容し、共有の主メモリに並列接続された少なくと
も2個のプロセッサを持っている。
各プロセッサは、主メモリ内の位置内容を修飾する副作
用命令を含むプログラムの命令と、主メモリの位置を参
照する関数命令とを実行する。手段は、これら関数命令
を優先的に含み、副作用命令で終端する一連の独立の命
令ブロックにプログラムを翻訳するために形成され、こ
れらプロセッサがこれらブロックを並列実行する。
従って、システムは、各プロセッサ毎に、ブロックの実
行中に参照された主メモリ内の全位置の従属リストを維
持する手段と、各プロセッサに関連すると共に関連プロ
グラムはプロセッサにおけるブロックの実行で副作用さ
れる主メモリ内の各位置の内容及び位置を一時的に記憶
する第1のキャッシュ手段とを備え、第1のキャッシュ
手段の内容の有効性が是認されたプログラムで特定され
たブロック列の各ブロックを確認する手段が形成される
。この確認手段は、照合を検知するために°確認前ブロ
ックによって副作用される位置と、確認前ブロックの従
属リストとを比較する手段と、もし照合したならば、確
認前ブロックの実行をアボートする手段とを備えている
好ましい実施例においては、確認手段がブロックカウン
タと、このブロックカウンタを1増加さを備えている。
また、従属リスト維持手段は、各プロセッサ毎に関連す
ると共にプロセッサ内で実行されたブロックによって参
照された主メモリの各内容及び配置を一時的に記憶する
第2のキャッシュ手段を備え、更に、ブロックのアボー
ト時に第2のキャッシュ手段の内容を更新し、確認済ブ
ロックから副作用配置を持つアボートされたブロックの
再実行を達成する手段ら備えている。
一実施例においては、第1及び第2のキャッシュ手段が
各々全関連の連想メモリを備えている。これの代りの実
施例においては、第2のキャッシュ手段がRAMメモリ
をアドレスするアドレスビットの減少数に切り刻むため
に、主メモリ位置のアドレスを受容するハツシュ表手段
及び主メモリ位置の従属情報を記憶するアドレス可能な
RAMメモリを備えている。
本発明によれば、共有の主メモリに並列接続された少な
くとも2個のプロセッサにおいてプログラムを実行する
方法は、これら関数命令を漫先的ブロックにプログラム
を翻訳し、プロセッサにブロックを印加してこれらブロ
ックを並列実行している。
この実行段階は、ブロックの実行中に参照された主メモ
リ内の全位置の従属リストを維持する段階を備え、各プ
ロセッサ毎に、ブロックの実行で副作用される主メモリ
内の各位置の内容及び位置を一時的に記憶し、記憶され
た内容の有効性が是認されるプログラムで指定されたブ
ロック列の各ブロックを確認し、照合を検知するために
確認済ブロックで副作用される位置と確認前ブロックの
従属リストとを比較する段階を備えている。
照合時にはブロックの実行がアボートされる。
従属リスト維持段階は、各プロセッサ毎に、プロセッサ
内で実行されたブロックによって参照された主メモリの
各内容及び位置を一時的に記憶し、確認段階が確認済ブ
ロックからの副作用位置でアボートされるブロックを再
実行する。
他の実施例においては、参照位置の一時記憶段階は、各
位置アドレスを、アドレスビットの減少数を有するハツ
シュアドレスに切り刻み、RAMメモリにおいてハツシ
ュアドレスの従属情報を記憶する段階を備えている。
更に、この方法は、所望時に従属リストから参照位置を
選択的に省略することを含んでいる。
「実施例」 本発明の特徴は、以下に添付図面を参照して詳述する。
第1図を参照すると、本発明によるシステムは、主メモ
リ6及び7を共有して、共通のバス5に並列接続された
プロセッサla1 lb、lcを含んでいる。3個のプ
ロセッサが例示の目的で並列に示されているが、本発明
によるシステムは、少なくとも2個、本発明に従う方法
及びシステムの不定数のプロセッサで並列に用いられる
。勿論、本発明は、2個以上のプログラムを補間方法で
実行する単一プロセッサも本発明の範囲内であると考え
る型の疑似並列プロセッサも処理できる。
各プロセッサ及びバス5間に接続されるのは、状態遷移
ロジック4a、4b、4cに接続される確認キャッシュ
2a、2b、2c及び従属キャッシュ3a、3b、3c
である。勿論プロセッサla、lb、lcは、後述する
ブロックカウンタ8に接続される。
勿論、システムは、バス5に従来の方法で接続されて、
処理あるいは命令ブロックと呼ばれる翻訳プリミティブ
命令列にプログラムを変換するコンパイラ9を含んでい
る。
第2図に示すように、各ブロックは、非常に関数的な部
分を持ち、副作用記憶命令で終端している。注目される
ように、関数命令は、その操作を実行するために主メモ
リを参照し、あるいは内部プロセッサのレジスタのみを
操作する命令を含むが、副作用命令が主メモリにおいて
位置内容の修飾を含む命令が含まれる。
殆どの関数部分は、少なくとも命令の大部分が関数的で
ある限り、副作用命令あるいは複数の副作用命令を持た
ない。
本発明の方法によれば、コンパイラ9がプログラムを複
数のブロックに分割した後、これらプロ・・・りが並列
実行用にプロセッサ1a=lcに印加される。主メモリ
に対する各参照は従属キャッシュ3a〜3cに記憶され
、各副作用命令が実行されて、確認キャッシュ2a〜2
c用にのみ書込まれる。
従って、各プロセッサは、全参照位置及び修飾される全
位置がキャッシュ2a〜2c及び3a〜3cに記憶され
て、主メモリ6.7の内容に影響しないので、各ブロッ
クを思い通りに自由に実行する。
主メモリに書き込まれるデータを有効にし、その内容を
修飾するためには、各ブロックが最初確認しなければな
らない。これらブロックは、全体のプログラムで指定さ
れた順序で確認され、これがプロセッサ1 a = l
 cが確認される順序を指定するブロックカウンタ8に
よって実行される。
従属キャッシュ3a〜3cは、ブロックの実行中にプロ
セッサによって参照された全メモリ位置の軌跡を保持す
ることによって、実行を達成するためにブロックによっ
て従属するデータの従属すストを維持している。第1の
ブロックか確認された後、対応の確認キャッシュに記憶
された全副作用位置がバスに現れて、これら副作用位置
のどれが実行中ブロックによって従属したかを見るため
に他のブロックの従属リストで受信される。この場合、
もしこれが照合したならば、実行された未確認ブロック
がアボートされて、更新された副作用位置データと共に
再実行される。
本発明の好ましい実施例によれば、確認及び従属キャッ
シュがどの追加構造も持たないで比較できる連想メモリ
である。
第3図は、並列実行される種々のブロックの例を示して
いる。この例から理解されるように、ブロック3は、ブ
ロックIで副作用される変数Aを参照するので、第1の
ブロックの確認時にアボートされる。
システムは、並列のハードウェアを使用して単一プロセ
ッサの振舞いを模倣しているので、ブロックか確認され
る定義された順序が存在する。所定のブロックの実行は
、そのブロックがブロックカウンタ8によって到着する
時間で、その結果が用意できるように、十分早く開始さ
れる。
第3図は、ブロック開始工程を案内するために習得デー
タを形成する工程のコール木を示している。ここで、ブ
ロック2及び3の実行を開始することが好ましいが、ブ
ロックカウンタ8は、次の順番のブロックなので、ブロ
ックlを指している。
勿論、確認ブロック1〜5がブロック6に従属した副作
用データであることか起こりそうもないので、ブロック
6の実行を開始することを希望できる。
しかし、ブロックの実行は、必要時より古いデータを参
照し、実行したプロセッサが直に確認しなければならな
いブロックを実行する必要があるので、早期の開始が相
当悪影響する。
これら観察は、次のブロック実行の戦術に導かれる。
1、開始実行ブロックがこのブロックより先行し、ある
いはコール木の左及び下方に先行する。
2、コール木の右に下方に分岐する開始実行ブロック。
3、もし追加のプロセッサが(1)用あるいは(2)用
に要求されたならば、コール木の最も遠い右分岐の実行
をアボートし、これらのプロセッサを再請求する。
習得(1)は、従来のパイプラインアーキテクチャにブ
リフェッチする命令に非常に類似している。このブロッ
クを実行させるので、その継続物を次に実行させる必要
が存在する。
M得(2)は、コール木の同一レベルから並列実行がし
ばしば独立して、副作用を侵害しないで実行できる事実
に従属する。
習得(3)は、コール木の右部分を実行する萌に、コー
ル木の左部分の底部分の実行を終わらせなければならな
い単純な結果である。従って、直接的必要性のために右
へブロックを実行するプロセッサの使用が良好である。
これらの習得は、多重プロセッサ環境における資源配分
の困難な問題を非常に良好に取扱っている。
しかし、言語における条件の存在は、上記記載の整然と
した資源配分スキームを非常に困難にさせる。データ計
算が確認されるまで、条件が2個のバスのいずれかに追
従するかが分からないので、両者の分岐を下方に実行す
るブロックを開始させ、あるいはバスでブロック用に待
機するリスク遅延実行が追従しない。幸運に、ブロック
か確認されるまで主メモリを副作用しないので、両者の
バスを下方に実行することを自由に開始できる。これら
の条件の未追従分岐に沿って開始したブロックは確認し
ないで単純にアボートされる。
条件が存在するプロセッサ資源の配分は、習得的以外は
2個のバスのどれがプロセッサ資源を消費するためによ
り価値があるかを予想することかできないので、極めて
困難である。
ループは条件実行の特殊場合である。殆どの並列プロセ
ッサに関してはループ構成の高レベル意味論を知る利点
がある。同じブロックの反復コピーを実行する企てより
、次のバスの設定としてル−ブ指標が増加させることが
、ループが要求され、ループが例えば0〜100の配列
値の組に亙って指標することを知ることが遥かに好まし
い。その後、各々がループ指標の単一値を持つループブ
ロックの101コピーを実行できる。苦い別の実施例は
、ループ指標が各ブロック反復で変化して、ループ反復
毎に次のブロックのアボートとなることを監視する副作
用検知ハードウェアに頼ることである。
しかし、システムは、ループ実行毎の並列提案の殆どと
異なって、ループ本体の実行がループ制御パラメータを
多分極端な間接あるいは条件方法で修飾される限り、困
難な場合を操作できる。
システムが両者の条件実行及びループ反復を扱う方法は
変数の将来値の予想を伴っている。ある意味では、既に
記載の従属リストの保守が値予想の形態であり、従属値
lが実行ブロックを確認する時間によって変化すること
が予想される。
この概念は、ブロックを実行する前の現行値から修飾さ
れる同様の変数の将来値を予想するものに拡張される。
この技術の一応用例はループ反復の問題である。
次の反復のための予想値としてループ指標の現行値に信
頼する代りに、各並列本体ブロックか開始される毎に異
なった将来値を予想する将来値を予想することが好まし
い。
同様に、予想された結果スロットの値を予想することに
よって、それが条件の一方で真であり、他方で偽である
ことを予想することによって、条件を実行できる。その
後、予想が評価され、確認された時に、予想結果スロッ
トを副作用し、2個の分岐の内1個をアボートする。条
件ブロックの実行をアボートした時には、通常のブロッ
ク実行と同様に、変数を更新して再試行するよりブロッ
クの実行を放棄しなければならない。
これは、各プロセッサl a = 1 cが上記企画を
効果的に実行する2個の全連想キャッシュを含む本発明
の共有メモリ多重プロセッサである。第1ノキャッシュ
即ち従属キャッシュ3a〜3cは、通常主メモリ6.7
からの読取データのコピーを保持している。勿論このキ
ャッシュは、グツドマン氏のIJsing Cache
 Memory to Reduce Process
orMemory Traffic第10年度コンピュ
ータアーキテクチャにおける国際シンポジウム123〜
131頁1983年に記載したスヌーピキャッシュ密着
プロトコルに類似した方法でバスの処理を監視している
。第2のキャッシュ即ち確認キャッシュ2a〜2cは未
確認だか連想プロセッサで書込まれた副作用データのみ
を保持している。
これらプロセッサは、共通のメモリバス5を共有してい
るので、各キャッシュが主メモリ6.7への全書込デー
タを見ることができる。従属キャッシュは、通常のデー
タ読取キャッシュとして作用するが、勿論従属リスト及
び予想値特徴を実行する。確認キャッシュは、プロセッ
サが主メモリのバージョンを局所的に副作用させて、ブ
ロック確認前に他のプロセッサに見えろ変更をしないで
使用される。
従って、各主メモリ位置は、プロセッサのキャッシュに
おいて、1個が従属キャッシュ、もう1個が確認キャッ
シュの2個のエントリを持っている。
これは、確認キャッシュにおいて、メモリのバージョン
の更新を一時的に許容しながら、ブロセッ ・すの現行
の計算データが従属キャッシュのどこに従属するかの確
認をしなければならないからである。プロセッサの読取
毎に、もし両者のキャッシュに取込みが発生したならば
、確認されるデータに先立ってプロセッサがメモリの修
飾を理解しなければならないので、優先膚は常に確認キ
ャッシュに与えられている。
従属キャッシュは、次の機能を形成する。
1、主メモリデータ用の通常の読込データとして作用す
る。
2、ブロック従属情報を記憶する。
3 このブロックに関連した変数の予想値を保持する。
第5図は状態遷移ロジック4a、4b、4cによって実
行された従属キャッシュ用の状聾遷序図を示しティる。
これらニハ、INVALIDSVALIDSDEPEN
DS、  PREDICT/VALID、  PRED
ICT/INV4LID及ヒPREDICT/ABAN
DONのキャッシュ状態図に示された6個の状態がある
INVALIDは、空のキャッシュラインに関連した状
態である。
VALIDは、キャッシュが主メモリの正しいコピーを
保持していることを示す状態である。
DEPENDSは、キャッシュが正しいデータを保持し
、継続中のブロック計算がこの値の継続した修正値に従
属することを示す状態である。
PREDICT/VALIDは、このキャッシュ位置に
保持された値が確認の用意時に主メモリの値と等しくな
るように継続されることをブロックが予想することを示
す状態である。この状態は保持値が主メモリと等しいこ
とを示している。この状態は、バスサイクルがこのメモ
リ位置の属性である時になされる作用のみがDEPEN
DSと異なっている。
PRHDICT/INVALIDは、コノキャ)’/ユ
位置に保持された値が確認の用意時に主メモリの値と等
しいとブロックが予想することを示す状態である。
主メモリの内容は現在キャッシュに保持された値と異な
っている。
PREDICT/ABANDONは、ブロックの実行が
キャッシュに保持された値と等しく副作用されるメモリ
の最終内容の条件であることを示している。
各ブロック実行の開始点で従属リストが初期化される。
これは、全位置をINVALIDあるいはVALID状
態のいずかに設定する結果となる。現在VALID。
DEPENDSあるイハPREDICT/VALIDテ
あるキャッシュのエントリはVALID状態に移行させ
られる。他の全部はINVALID状態に移行させられ
る。
プロセッサがデータ項目を従属キャッシュからレジスタ
にロードする毎にはキャッシュラインの状態が位置的に
修飾される。もし位置毎のキャッシュエントリがINV
ALID状態であるならば、メモリバス読込要求が形成
され、新しいキャッシュラインが配分され、データが従
属キャッシュに記憶され、ライン状態がDEPENDS
に設定される。もしキャッシュラインが既にVALID
ならば、状態が単純にDEPE[)Sに設定される。他
の全状態において、データがキャッシュから形成され、
エントリの状態が修飾されない。
キャッシュミスは、INVALIDあるいはVALID
状態にあるキャッシュにおけるエントリを置換すること
を許容するが、他のエントリが修飾されない。
これは、これらの状態によって従属性が維持されるので
、要求される。これは、所定の位置用に用意される制限
数の組に亙って衝突が従属情報の記憶を不可能にさせる
ので、キャッシュが全部に関連していなければならない
プロセッサからの予想値要求は、メモリ位置用の予想将
来値を従属キャッシュに記憶される。キャッシュは、同
じ位置用に主メモリ読込サイクルを初期化する。もし位
置が予想値を含むならば、キャッシュ状態がPREDI
CT/VALIDに設定される。もし値が不一致ならば
、キャッシュ状態がPREDICT/ INYALID
に設定される。
プロセッサからの予想放棄要求は、述語の予想将来値を
従属キャッシュに記憶し、キャッンユラインをPRED
ICT/ABANDON状態に移行させられる。
他のプロセッサで実施されるバス書込サイクルは、従属
キャッシュに保持された主メモリの位置を位置的に修飾
される。全部のキャッシュが共有メモリバスに接続され
ているので、各キャッシュは書込データを監視できる。
INVALIDキャッシュエントリにとってはなにも実
施されない。VAL I Dエントリにとっては新しく
書込まれたデータがキャッシュにコピーされ、キャッシ
ュが存効性を維持している。
DEPENDSエントリにとっては、キャッシュが更新
され、もし新しい内容か古い内容より異なっていたなら
ば、キャッシュと関連したプロセッサで走行中のブロッ
クがアボートされ、その後再開される。これは、内部ブ
ロック列の同一性を強要するキー機構である。
PREDICT/VALIDアルイハPREDICT/
 INVALIDテj5 ル位置へのバス書込データが
従属キャッシュの内容と比較される。キャッシュ状態は
、もし値が一致したならば、PREDICT/V^LI
Dに設定され、もし値か不一致ならばPREDICT/
I)lVALIDi:設定サレル。
PREDICT/ABANDONである位置へのバス書
込デー夕が従属キャッシュの内容と比較される。もし値
が一致したならば、変化が発生しない。もし値が不一致
ならば、関連のブロックがアボートされ、ブロック現行
実行が永久に放棄される。
確認キャッシュは副作用データのみを保持する連想キャ
ッシュを備えることが好ましい。確認キャッシュは、全
部のエントリを無効にすることによって空になる。プロ
セッサが副作用書込を形成する時に、書込データが確認
キャッシュに保持されるが、直接主メモリに書込まれな
い。副作用を形成するプロセッサでは見えるが、他のプ
ロセッサでは見えない。確認キャッシュは、読取データ
をプロセッサに形成において、従属キャッシュに亙って
優先権を持っている。もし両者が位置内容を保持するな
らば、データが確認キャッシュで形成される。これは、
位置を修飾し、ブロック内の更なる計算中に見える修飾
を有することをプロセッサに許容する。
ブロックカウンタ8が特定のプロセッサに関連したブロ
ックに到着し、ブロックが完全実行される時には、その
ブロックを確認する時間がある。
1個の最終メモリの同一検査が形成される。ロード従属
性は、未形成時にブロックがアボートされるので、必要
に満足される。しかし、予想値従属性が満足しない。こ
れら従属性は、PREDICT/INVALID状態に
ある従属キャッシュにエントリがあるならば、検査でチ
エツクされる。その状態におけるどのエントリも内容が
一値になるように予想され、実際のメモリ内容が外にあ
るメモリ位置を示している。このブロックは新しい現行
値で再試験されなければならない。
最終の同一性チエツクの形成後、このブロックと関連す
る副作用が形成されてもよい。この操作は、確認キャッ
シュを掃引し、どの修飾エントリを記憶するために書直
すことからなっている。勿論、これら書直しは、これら
位置の古い値に従属したならば、他のプロセッサに実行
ブロックを部分的あるいは完全にアボートさせてもよい
従属性チエツクを実行するためのキャッシュ戦術の使用
結果は、各ブロックが多重副作用を形成でき、これらの
副作用がブロックが確認されるまで実行ブロックのみ見
えることである。これは、各ブロック終端副作用以上を
持たせ、多くの副作用がいかにブロック内にあるかと独
立して最適ブロック寸法を選択する柔軟性をコンパイラ
に与えることである。
従属性追跡機構としてキャッシュの使用の他の重大な特
徴は、処理がアボートされた時に、キャッシュにおける
有効エントリは、ブロックの再実行が殆ど100%のキ
ャツシュヒツト率で達成して、メモリバスの衝突を減少
させ、処理速度を改良するように、留どまりでいる。
リスプ操作子コンス(cons)は、主メモリに書込み
を形成するが、書込位置に他のポインタを持たず、従っ
て他のブロックが変化しないことを保証するので、副作
用命令がない。プロ・ツク実行アーキテクチャにおいて
は、これが独立自由ポインタを持つ各プロセッサを形成
して実行できる。
ブロック内で実施されるコンス及び他の局所メモリ配分
書込が自由ポインタを使用して形成される。
このポインタ値かブロックの導入時に一時退避され、ポ
インタをエントリ値にアポー°ト再設定され、自動的に
配分記憶を再請求させる。確認中に、自由ポインタも値
が更新される。これらの全自由ポインタ操作は、値がロ
ードされ、副作用される他の変数として単純処理された
ならば自動発生する。
新しいコンス位置へのデータ書込が確認する必要がない
。これらは従属キャッシュのライトスルー技術として最
良に取扱われる。これは、従属キャッシュがコンス書込
操作で書込まれたデータの陳腐コピーを含まないことが
重要である。
工程命令組への一プリミティブの追加は、このアーキテ
クチャで支持された言語に目視できろ平行論を明確なプ
ログラマの再導入を許容する。プリミティブは、従属リ
ストにロードされる位置を追加しないでロード操作を形
成する。従属キャッシュにおいて、存在するならば、有
効データに戻り、必要ならば有効データを生成するため
にメモリを読込む。
このプリミティブでは、位置的な陳腐データに基づく結
果を計算するアルゴリズムを表現することが可能である
。アルゴリズムの見地から許容できる限りこれらの場合
においては、内部ブロック従属性を持たない並列実行が
支持できる。一実施例は、順序的ガウス・シーデル技術
と対照した時に、ガウス・ヤコビ並列反復行列解である
第6図に示す代りのハードウェア装置においては従属性
が全連想キャッシュよりむしろハッンユ技術を用いて記
憶される。この装置は、キャッシュの基本設計で使用さ
れた全連想記憶より安価なRAMが使用できるので、魅
力的である。
この回路は、確認キャッシュ12a、12b。
12cを通して、メモリ15a、15bを有する共有シ
ステムバス16に接続されたプロセッサlla、llb
、llcを含んでいる。勿論、この回路は、例えば32
ビツトの主メモリアドレスを受信して、それを例えば1
2ビツトの再生成ハツシュアドレスに刻むハツシュ機能
(関数)ボックス13a、13b、13cも含んでいる
。12ビツトアドレスは、4096xlのRAM14a
、14b、14cをアドレスするために使用される。
プロセッサ11aの命令ブロック実行の開始で、クリア
信号が主張され、各位置にゼロを書込み、あるいは全位
置を同時にクリアする特殊手段によって、RAM14a
がクリアされる。プロセッサ11aがメモリロード操作
を形成する毎に、書込信号を発生し、ハツシュ関数でア
ドレスされた位置でRAM14aにロジックlを書込ん
でいる。プロセッサIlbが最終の副作用を形成するこ
とによって、ブロックを終結し、プロセッサ11bから
メモリ15aあるいは15cへ記憶されるメモリは、プ
ロセッサllaに目視できろ。ハッンユボックス13a
は、ハツシュアドレスを計算し、プロセッサllbで書
込まれたハツシュアドレスに対応してRAM14aのビ
ットを検査する。このビットがロジック!ならば、プロ
セッサttbで確認されたブロックがプロセッサlla
で形成された計算によって位置的に(必要でないが)無
効にさせる。プロセッサllaかアボートさせ、RAM
14aをクリアし、実行ブロックを再試行させなければ
ならない。
【図面の簡単な説明】
第1図は本発明によるシステムのブロック図、第2図は
本発明による処理ブロックの実施例図、第3図は並列実
行する種々のブロックの実施例図、第4図は本発明によ
るブロック開始工程を案内するコール木の図、第5図は
従属キャッシュ用の状態遷移ロジックの状態遷移図、第
6図は第1図に示す従属キャッシュ用の別の実施例図で
ある。 1 a、  1 b、  l c−プロセッサ、2a、
2b、2C・・確認キャッシュ、3a、3b、3c・・
・従属キャッシュ、5・・・バス、6.7・・・主メモ
リ。 出願人 シンポリックス インコーホレーテッドへC] /之こ周りH1々色どの+E]ft 高θづチ智乙1i
’fj FIG、2 犯C」

Claims (15)

    【特許請求の範囲】
  1. (1)共有主メモリに並列接続された少なくとも2個の
    プロセッサを持ち、プログラムを受容する並列処理シス
    テムにおいて、 各プロセッサは、主メモリ内の位置内容を修飾する副作
    用命令を含むプログラムの命令と、主メモリの位置を参
    照あるいは内部処理レジスタのみを操作する関数命令と
    を実行し、 これら関数命令を優先的に含み、副作用命令で終端する
    独立命令ブロック列にプログラムを翻訳する手段が形成
    され、前記プロセッサがこれらブロック列を並列実行す
    ることを特徴とする関数言語を持つ並列処理システム。
  2. (2)各プロセッサには、前記ブロックの実行中に参照
    された主メモリ内の全位置の従属リストを維持する手段
    を備えた特許請求の範囲第1項記載のシステム。
  3. (3)各プロセッサに関連して、前記ブロックの実行で
    副作用される主メモリ内の各位置内容及び位置を一時的
    に記憶する第1のキャッシュ手段と、この第1のキャッ
    シュ手段の内容の有効性が是認されるプログラムで指定
    されたブロック列において各ブロックを確認する手段と
    を備え、 照合を検知するために確認済ブロックによって副作用さ
    れる位置と確認前ブロックの従属リストとを比較する手
    段と、もし照合があるならば、該確認前ブロックの実行
    をアボートする手段とを備えた特許請求の範囲第2項記
    載のシステム。
  4. (4)前記確認手段は、ブロックカウンタと、このブロ
    ックカウンタを1増加させて、確認される次のブロック
    を指示する手段とを備えた特許請求の範囲第3項記載の
    システム。
  5. (5)前記従属リスト維持手段は、各プロセッサ毎に関
    連して、プロセッサ内で実行されたブロックによって参
    照された主メモリの各内容及び位置を一時的に記憶する
    第2のキャッシュ手段を備え、前記確認手段は、ブロッ
    クのアボート時に該第2のキャッシュ手段の内容を更新
    し、確認済ブロックから副作用位置を持つアボートされ
    たブロックを再実行する手段を備えた特許請求の範囲第
    3項記載のシステム。
  6. (6)前記第1及び第2のキャッシュ手段は、各々が全
    連想メモリを備えた特許請求の範囲第5項記載のシステ
    ム。
  7. (7)前記第2のキャッシュ手段は、前記主メモリ位置
    の従属情報を記憶する任意アドレス可能なRAMと、前
    記主メモリ位置のアドレスを受信して、該アドレスのビ
    ット数を該RAMの減少したアドレスビット数にハッシ
    ュするハッシュ表手段とを備えた特許請求の範囲第5項
    記載のシステム。
  8. (8)前記従属リストの維持手段は、主メモリにおける
    位置を該従属リストに追加しないで該位置を選択的に参
    照する手段を含む特許請求の範囲第2項記載のシステム
  9. (9)共有主メモリに並列接続された少なくとも2個の
    プロセッサでプログラムを実行する方法において、 プログラムが、主メモリ内の位置内容を修飾する副作用
    命令と、主メモリの位置を参照する関数命令とを含み、 これら関数命令を優先的に含み、副作用命令で終端する
    独立の命令ブロック列にプログラムを翻訳し、前記プロ
    セッサに前記ブロック列を印加して該ブロック列を並列
    実行することを特徴とする並列処理方法。
  10. (10)前記実行段階は、各プロセッサ毎に、ブロック
    の実行中に参照された主メモリ内の全位置の従属リスト
    を維持する段階を備えた特許請求の範囲第9項記載の方
    法。
  11. (11)前記実行段階は、更に各プロセッサ毎に、前記
    ブロックの実行で副作用される主メモリ内の各位置の内
    容及び位置を一時的に記憶し、該記憶内容の有効性が是
    認されるプログラムで指定されたブロック列の各ブロッ
    クを確認し、照合を検知するために確認済ブロックで副
    作用される位置と確認前ブロックの従属リストとを比較
    する段階を備えた特許請求の範囲第10項記載の方法。
  12. (12)前記実行段階は、適合時にブロックの実行をア
    ボートする段階を備えた特許請求の範囲第3項記載の方
    法。
  13. (13)前記従属リスト維持段階は、各プロセッサ毎に
    、プロセッサ内で実行されたブロックによって参照され
    た主メモリの各内容及び配置を一時的に記憶し、前記確
    認段階が確認済ブロックからアボートされたブロックを
    再実行する特許請求の範囲第12項記載の方法。
  14. (14)前記参照位置の一時記憶段階は、RAMメモリ
    において各位置アドレスを、減少したアドレスビット数
    を有するハッシュアドレスに切り刻み、該ハッシュアド
    レスの従属情報を記憶する段階を備えた特許請求の範囲
    第13項記載の方法。
  15. (15)前記従属リストの維持段階は、該従属リストか
    ら参照位置を選択的に省略する段階を備えた特許請求の
    範囲第10項記載の方法。
JP62191473A 1986-07-30 1987-07-30 関数言語を持つ並列処理システムおよび方法 Pending JPS6337432A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/893,072 US4825360A (en) 1986-07-30 1986-07-30 System and method for parallel processing with mostly functional languages
US893072 1986-07-30

Publications (1)

Publication Number Publication Date
JPS6337432A true JPS6337432A (ja) 1988-02-18

Family

ID=25400992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62191473A Pending JPS6337432A (ja) 1986-07-30 1987-07-30 関数言語を持つ並列処理システムおよび方法

Country Status (6)

Country Link
US (1) US4825360A (ja)
EP (1) EP0255186A3 (ja)
JP (1) JPS6337432A (ja)
AU (1) AU600208B2 (ja)
CA (1) CA1277425C (ja)
IL (1) IL82892A0 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003505758A (ja) * 1999-07-21 2003-02-12 テレフォンアクチーボラゲット エル エム エリクソン(パブル) プロセッサ・アーキテクチャ

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127104A (en) * 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JP3053092B2 (ja) * 1987-06-05 2000-06-19 株式会社日立製作所 並列化コンパイル方法
ATE109910T1 (de) * 1988-01-20 1994-08-15 Advanced Micro Devices Inc Organisation eines integrierten cachespeichers zur flexiblen anwendung zur unterstützung von multiprozessor-operationen.
WO1990002995A1 (en) * 1988-09-01 1990-03-22 Yin Ronald L An improved modular processor, a computer incorporating same, and a method of operating same
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5134705A (en) * 1988-10-21 1992-07-28 Unisys Corporation System and method for concurrency simulation
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
DE69030931T2 (de) * 1989-04-24 1998-01-15 Ibm Mehrfachsequenzprozessorsystem
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
US5083265A (en) * 1990-04-17 1992-01-21 President And Fellows Of Harvard College Bulk-synchronous parallel computer
US5249284A (en) * 1990-06-04 1993-09-28 Ncr Corporation Method and system for maintaining data coherency between main and cache memories
US5249283A (en) * 1990-12-24 1993-09-28 Ncr Corporation Cache coherency method and apparatus for a multiple path interconnection network
US5423040A (en) * 1991-07-24 1995-06-06 International Business Machines Corporation System and method for efficiently executing directed acyclic graphs
US5613063A (en) * 1994-07-01 1997-03-18 Digital Equipment Corporation Method and apparatus for checking validity of memory operations
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5892934A (en) * 1996-04-02 1999-04-06 Advanced Micro Devices, Inc. Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine
US5740419A (en) * 1996-07-22 1998-04-14 International Business Machines Corporation Processor and method for speculatively executing an instruction loop
US6237134B1 (en) * 1997-03-12 2001-05-22 International Business Machines Corporation Method of, system for, and article of manufacture for providing a generic adaptor for converting from a non-future function pointer to a future function object
JP3391262B2 (ja) * 1998-05-11 2003-03-31 日本電気株式会社 記号計算システム及び方法、並びに並列回路シミュレーションシステム
US6662164B1 (en) * 1998-05-19 2003-12-09 Trilogy Development Group, Inc. Method and apparatus for determining commission
US6286027B1 (en) 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
JP2004513428A (ja) * 2000-11-06 2004-04-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ タスクへ資源配分を割当てる方法及びシステム
US7925513B2 (en) * 2001-03-15 2011-04-12 Versata Development Group, Inc. Framework for processing sales transaction data
US7958024B2 (en) * 2001-03-15 2011-06-07 Versata Development Group, Inc. Method and apparatus for processing sales transaction data
US7908304B2 (en) 2001-03-15 2011-03-15 Versata Development Group, Inc. Method and system for managing distributor information
US20030018481A1 (en) * 2001-03-15 2003-01-23 Cheng Zhou Method and apparatus for generating configurable documents
US8239312B2 (en) * 2001-03-15 2012-08-07 Versata Development Group, Inc. Method and apparatus for net-pay and debt consolidation
US7904326B2 (en) * 2001-06-29 2011-03-08 Versata Development Group, Inc. Method and apparatus for performing collective validation of credential information
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US9495691B1 (en) 2002-12-13 2016-11-15 Versata Development Group, Inc. Efficient large-scale compensation calculation system
US7515156B2 (en) * 2003-01-08 2009-04-07 Hrl Laboratories, Llc Method and apparatus for parallel speculative rendering of synthetic images
US7185323B2 (en) * 2003-05-16 2007-02-27 Sun Microsystems, Inc. Using value speculation to break constraining dependencies in iterative control flow structures
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US20070118693A1 (en) * 2005-11-19 2007-05-24 International Business Machines Cor Method, apparatus and computer program product for cache restoration in a storage system
US7788242B2 (en) * 2006-08-23 2010-08-31 Oracle America, Inc. Method and system for implementing a concurrent set of objects
FR2919401B1 (fr) * 2007-07-24 2016-01-15 Thales Sa Procede de test des chemins de donnees dans un circuit electronique
US8739141B2 (en) * 2008-05-19 2014-05-27 Oracle America, Inc. Parallelizing non-countable loops with hardware transactional memory

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1441458A (en) * 1972-06-28 1976-06-30 Texas Instruments Inc Stored programme data processing for parallel processing of programme segment
FR2348544A1 (fr) * 1976-04-15 1977-11-10 Honeywell Bull Soc Ind Ensemble double de memoire associative
FR2430637A1 (fr) * 1978-07-06 1980-02-01 Cii Honeywell Bull Procede et dispositif pour garantir la coherence des informations entre des caches et d'autres memoires d'un systeme de traitement de l'information travaillant en multitraitement
GB2035632B (en) * 1978-12-01 1983-01-19 Gen Automation Inc Multiprocessor system
US4468736A (en) * 1982-06-08 1984-08-28 Burroughs Corporation Mechanism for creating dependency free code for multiple processing elements
US4466061A (en) * 1982-06-08 1984-08-14 Burroughs Corporation Concurrent processing elements for using dependency free code
US4484272A (en) * 1982-07-14 1984-11-20 Burroughs Corporation Digital computer for executing multiple instruction sets in a simultaneous-interleaved fashion
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4564901A (en) * 1983-07-21 1986-01-14 Burroughs Corporation Method of performing a sequence of related activities via multiple asynchronously intercoupled digital processors
CA1226959A (en) * 1984-02-10 1987-09-15 Paul K. Rodman Cache coherence system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003505758A (ja) * 1999-07-21 2003-02-12 テレフォンアクチーボラゲット エル エム エリクソン(パブル) プロセッサ・アーキテクチャ

Also Published As

Publication number Publication date
EP0255186A2 (en) 1988-02-03
CA1277425C (en) 1990-12-04
IL82892A0 (en) 1987-12-20
AU7623487A (en) 1988-02-04
AU600208B2 (en) 1990-08-02
US4825360A (en) 1989-04-25
EP0255186A3 (en) 1990-04-18

Similar Documents

Publication Publication Date Title
JPS6337432A (ja) 関数言語を持つ並列処理システムおよび方法
Knight An architecture for mostly functional languages
Ananian et al. Unbounded transactional memory
EP1955153B1 (en) Method and apparatus for converting program code with access coordination for a shared resource
JP5116794B2 (ja) マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法
US9424013B2 (en) System and method for reducing transactional abort rates using compiler optimization techniques
Dubois et al. Memory access buffering in multiprocessors
JP5416223B2 (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
KR100738777B1 (ko) 정보 처리 시스템에서 병렬 처리되는 작업들간의 데이터 종속성의 대략적인 결정을 위한 컴퓨터 시스템 동작 방법 및 장치
WO2017127180A1 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
US6634021B2 (en) User controlled relaxation of optimization constraints related to volatile memory references
Rinard et al. Heterogeneous Parallel Programming in Jade.
CN114253603A (zh) 用于处理器中的用户空间对象一致性的系统、装置和方法
US6732363B1 (en) Supporting inter-process communication through a conditional trap instruction
Mannarswamy et al. Compiler aided selective lock assignment for improving the performance of software transactional memory
Dubois et al. Memory access buffering in multiprocessors
US6401137B1 (en) Method, apparatus, and article of manufacture for processing a virtual call in a multi-threaded program
Winter et al. Observational models for linearizability checking on weak memory models
Sekar et al. Formal verification of a microprocessor using equational techniques
US20240086260A1 (en) Method and apparatus for managing concurrent access to a shared resource using patchpointing
Henrio et al. Leveraging access mode declarations in a model for memory consistency in heterogeneous systems
Irving et al. BifurKTM: Approximately consistent distributed transactional memory for GPUs
Degenbaev et al. Pervasive theory of memory
Glossner et al. The Delft-Java Engine: Microarchitecture and Java Acceleration
Scott et al. Architectural Background