JP2898820B2 - 自己並列化式のコンピュータ・システムおよび方法 - Google Patents
自己並列化式のコンピュータ・システムおよび方法Info
- Publication number
- JP2898820B2 JP2898820B2 JP4159092A JP15909292A JP2898820B2 JP 2898820 B2 JP2898820 B2 JP 2898820B2 JP 4159092 A JP4159092 A JP 4159092A JP 15909292 A JP15909292 A JP 15909292A JP 2898820 B2 JP2898820 B2 JP 2898820B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- segment
- branch
- register
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
【0001】
【産業上の利用分野】本発明は、全般的にプログラム記
憶式デジタル・コンピュータに関し、具体的には、命令
を実行するためだけでなく、同時にまだ並列化されてい
ない命令シーケンスを並列化するのにも使用される第1
の実行モードと(本明細書中でEモードという)、既に
並列化されている命令シーケンスを別々の処理要素上で
並列に実行するのに使用される第2の実行モード(本明
細書中でZモードという)との、2つの実行のモードで
命令シーケンスが実行される、コンピュータ・システム
および方法に関する。
憶式デジタル・コンピュータに関し、具体的には、命令
を実行するためだけでなく、同時にまだ並列化されてい
ない命令シーケンスを並列化するのにも使用される第1
の実行モードと(本明細書中でEモードという)、既に
並列化されている命令シーケンスを別々の処理要素上で
並列に実行するのに使用される第2の実行モード(本明
細書中でZモードという)との、2つの実行のモードで
命令シーケンスが実行される、コンピュータ・システム
および方法に関する。
【0002】
【従来の技術】デジタル・コンピュータ・プログラムを
より高速で実行する方法の1つはその複数の部分を別々
のプロセッサ上で並列に実行することである。これを行
う方法の1つはこのような並列の形で実行するためのプ
ログラムが記述できるプログラミング環境とコンピュー
タ・システムを定義することである。遺憾ながら、多く
の有用なプログラムは命令の順次実行を前提にして作成
されてきた。これらの順次式プログラムもより高速に実
行できることが望ましいので、従来技術ではこれらのプ
ログラムを並列に実行できるよう並列化するための努力
が払われてきた。
より高速で実行する方法の1つはその複数の部分を別々
のプロセッサ上で並列に実行することである。これを行
う方法の1つはこのような並列の形で実行するためのプ
ログラムが記述できるプログラミング環境とコンピュー
タ・システムを定義することである。遺憾ながら、多く
の有用なプログラムは命令の順次実行を前提にして作成
されてきた。これらの順次式プログラムもより高速に実
行できることが望ましいので、従来技術ではこれらのプ
ログラムを並列に実行できるよう並列化するための努力
が払われてきた。
【0003】この分野での従来の研究のほとんどは並列
仕様のプログラムの作成に依拠するものである。これは
いくつかの方式で実施されてきた。プログラムを並列化
し、複数の従来型プロセッサを有する多重プロセッサ・
システム用のコードを生成する精巧なコンパイラが作成
された。これらのコンパイラのうちには自動的に並列性
を検出するもの(たとえばD.A.パドゥア(Padua)およ
び M.J.ヴォルフェ(Wolfe)の論文"Advanced Compiler
Optimizations for Supercomputers" Comm. ofACM, Vo
l. 29, page 12 et seq., Dec. 1986)や、プログラマ
が提供する注釈から手掛かりを得るもの(たとえばアラ
ン H.カープ(Alan H. Karp)の論文"Programming for
Parallelism", Computer, Vol. 20, Page 5 et seq., M
ay 1987)がある。もう1つの手法はベクトル・プロセ
ッサやVLIWアーキテクチャなど並列実行に適した専用ハ
ードウェアを作成することである。この場合でも、コン
パイラが順次式プログラムをこれらの計算機での使用に
適したコードに変換する。これらの場合のコンパイル作
業の労力はかなりのものである。より徹底的な手法はデ
ータフロー計算機(J.B.デニス(Dennis)の論文"Dataf
low Supercomputers", Computer, Vol. 13, page 11 et
seq., Nov. 1980 参照)などの本来並列な実行機構お
よびその一機構上で使用するための並列コードを自動的
に生成するプログラム用の宣言仕様(アルヴィンド(Ar
vind)および K.エーカナダム(Ekanadham)の論文"Fut
ure Scientific Programming On Parallel Machines",
the Jour. of Parallel & Distributed Computing, Vo
l. 5, Dec. 1988 参照)を作成するものであった。
仕様のプログラムの作成に依拠するものである。これは
いくつかの方式で実施されてきた。プログラムを並列化
し、複数の従来型プロセッサを有する多重プロセッサ・
システム用のコードを生成する精巧なコンパイラが作成
された。これらのコンパイラのうちには自動的に並列性
を検出するもの(たとえばD.A.パドゥア(Padua)およ
び M.J.ヴォルフェ(Wolfe)の論文"Advanced Compiler
Optimizations for Supercomputers" Comm. ofACM, Vo
l. 29, page 12 et seq., Dec. 1986)や、プログラマ
が提供する注釈から手掛かりを得るもの(たとえばアラ
ン H.カープ(Alan H. Karp)の論文"Programming for
Parallelism", Computer, Vol. 20, Page 5 et seq., M
ay 1987)がある。もう1つの手法はベクトル・プロセ
ッサやVLIWアーキテクチャなど並列実行に適した専用ハ
ードウェアを作成することである。この場合でも、コン
パイラが順次式プログラムをこれらの計算機での使用に
適したコードに変換する。これらの場合のコンパイル作
業の労力はかなりのものである。より徹底的な手法はデ
ータフロー計算機(J.B.デニス(Dennis)の論文"Dataf
low Supercomputers", Computer, Vol. 13, page 11 et
seq., Nov. 1980 参照)などの本来並列な実行機構お
よびその一機構上で使用するための並列コードを自動的
に生成するプログラム用の宣言仕様(アルヴィンド(Ar
vind)および K.エーカナダム(Ekanadham)の論文"Fut
ure Scientific Programming On Parallel Machines",
the Jour. of Parallel & Distributed Computing, Vo
l. 5, Dec. 1988 参照)を作成するものであった。
【0004】前述のいずれの手法においても、コンピュ
ータ・プログラムを並列化し、異なる部分の並列実行が
安全であるか否かを判断する作業はコンパイラ・レベル
であるいはそれ以前のプログラミング・レベルで(すな
わちデータを伴うコードを実際に生産的に実行するより
前に)行われる。プロセッサは実行時に異なる部分の並
列実行が安全であるか否か判断する際に何の役割も演じ
ない。というのは、この判断はプログラマまたはコンパ
イラによって既に行われているからである。
ータ・プログラムを並列化し、異なる部分の並列実行が
安全であるか否かを判断する作業はコンパイラ・レベル
であるいはそれ以前のプログラミング・レベルで(すな
わちデータを伴うコードを実際に生産的に実行するより
前に)行われる。プロセッサは実行時に異なる部分の並
列実行が安全であるか否か判断する際に何の役割も演じ
ない。というのは、この判断はプログラマまたはコンパ
イラによって既に行われているからである。
【0005】もう1つの手法では、実行時に並列化され
ていないコードを多重プロセッサ・システム自体に与
え、並列実行のためにコードを分割し、そのコードの並
列実行が有効であるか否か判断する際に、この多重プロ
セッサ・システムに積極的役割を与える。この手法は少
なくとも一部の命令の実行が一時的に行われるという点
で他の手法と区別することができる。並列実行が全体的
に有効であるか否かは一般に実行の前には未知である。
並列に実行される部分が有効であるか否かを判断する機
構が設けられ、有効でない場合は、無効部分が再度実行
される。
ていないコードを多重プロセッサ・システム自体に与
え、並列実行のためにコードを分割し、そのコードの並
列実行が有効であるか否か判断する際に、この多重プロ
セッサ・システムに積極的役割を与える。この手法は少
なくとも一部の命令の実行が一時的に行われるという点
で他の手法と区別することができる。並列実行が全体的
に有効であるか否かは一般に実行の前には未知である。
並列に実行される部分が有効であるか否かを判断する機
構が設けられ、有効でない場合は、無効部分が再度実行
される。
【0006】この手法の例が本出願人に譲渡された米国
特許第5347639号明細書である。この明細書で
は、命令をある区切り規則に従ってグループに分割した
後に、少なくとも2つのグループを並列に実行する。命
令グループの1つは他のすべてのグループよりも順序が
前にあり、この最も前のグループの実行は正しいと仮定
される。その後のグループは一時的に並列に実行される
にすぎない。後の命令グループは前の命令グループが既
に実行されたかのようにレジスタやメモリ位置からデー
タを読み取る。制御機構が後の命令グループによって使
用されるデータが(後のグループによって使用された後
に)前のグループの命令によって変更されるか否かを監
視する。後のグループによるメモリ位置およびレジスタ
への記憶は別々の場所で一時的に行われるにすぎない。
後のグループによって使用されるすべてのデータが有効
である(すなわち前のグループによって変更されない)
場合、後のグループの結果は有効であり、コミット状態
になることができる。そうでない場合は後のグループを
再実行する。
特許第5347639号明細書である。この明細書で
は、命令をある区切り規則に従ってグループに分割した
後に、少なくとも2つのグループを並列に実行する。命
令グループの1つは他のすべてのグループよりも順序が
前にあり、この最も前のグループの実行は正しいと仮定
される。その後のグループは一時的に並列に実行される
にすぎない。後の命令グループは前の命令グループが既
に実行されたかのようにレジスタやメモリ位置からデー
タを読み取る。制御機構が後の命令グループによって使
用されるデータが(後のグループによって使用された後
に)前のグループの命令によって変更されるか否かを監
視する。後のグループによるメモリ位置およびレジスタ
への記憶は別々の場所で一時的に行われるにすぎない。
後のグループによって使用されるすべてのデータが有効
である(すなわち前のグループによって変更されない)
場合、後のグループの結果は有効であり、コミット状態
になることができる。そうでない場合は後のグループを
再実行する。
【0007】米国特許第4825360号明細書では、
命令グループを一時的に並列に実行した後に順次確認す
るという点で、類似の方式が使用される。しかしなが
ら、この方式では、コンパイルのステップを使用し、ま
た1グループ内の最終命令以外の副作用を有する命令を
減少(好ましくは削除)することによって、成功の機会
が拡大されている。その結果、このシステムを使用して
従来型の順次コードを並列化できるかどうかは明確では
ない。
命令グループを一時的に並列に実行した後に順次確認す
るという点で、類似の方式が使用される。しかしなが
ら、この方式では、コンパイルのステップを使用し、ま
た1グループ内の最終命令以外の副作用を有する命令を
減少(好ましくは削除)することによって、成功の機会
が拡大されている。その結果、このシステムを使用して
従来型の順次コードを並列化できるかどうかは明確では
ない。
【0008】米国特許第4903196号明細書では、
単一プロセッサが別々の非同期式実行ユニット上での実
行のためにコードを並列化し、これらの実行ユニットは
必要があれば概念的な順序が前の命令が実行されるま
で、それらの命令によって修正されるデータを使用しな
いように互いに他のユニットの実行を待つ。汎用レジス
タ(GPR)は1組だけでデコーダも1組だけである。一
連の専用タグが単一プロセッサ内の各GPRおよび実行ユ
ニットに関連付けられる。このタグを用いると、GPRを
順次使用し、または異なるGPRを同時に使用し、それと
同時にGPRによって実行ユニットに供給されるデータの
論理的保全性を保ちながら複数の実行ユニットが複数の
命令を同時に実行できるようになる。各GPRおよび各実
行ユニットに関連するタグは個々のGPRおよび実行ユニ
ットの順次トレールを記憶し、その結果、所与の実行ユ
ニットが特定のGPRへの記憶を許される前に、異なる実
行ユニットによるその特定のGPRへの直前の記憶が完了
していなければならなくなる。また、このタグを用いる
と、1つまたは複数の実行ユニットによる所与のGPRか
らの読取りがそのGPRへの後続の記憶動作の発生が許さ
れる前に、すべて完了することが保証される。
単一プロセッサが別々の非同期式実行ユニット上での実
行のためにコードを並列化し、これらの実行ユニットは
必要があれば概念的な順序が前の命令が実行されるま
で、それらの命令によって修正されるデータを使用しな
いように互いに他のユニットの実行を待つ。汎用レジス
タ(GPR)は1組だけでデコーダも1組だけである。一
連の専用タグが単一プロセッサ内の各GPRおよび実行ユ
ニットに関連付けられる。このタグを用いると、GPRを
順次使用し、または異なるGPRを同時に使用し、それと
同時にGPRによって実行ユニットに供給されるデータの
論理的保全性を保ちながら複数の実行ユニットが複数の
命令を同時に実行できるようになる。各GPRおよび各実
行ユニットに関連するタグは個々のGPRおよび実行ユニ
ットの順次トレールを記憶し、その結果、所与の実行ユ
ニットが特定のGPRへの記憶を許される前に、異なる実
行ユニットによるその特定のGPRへの直前の記憶が完了
していなければならなくなる。また、このタグを用いる
と、1つまたは複数の実行ユニットによる所与のGPRか
らの読取りがそのGPRへの後続の記憶動作の発生が許さ
れる前に、すべて完了することが保証される。
【0009】
【発明が解決しようとする課題】本発明の目的は外見上
はあるコンピュータ・プログラムを順次実行したように
見せながらそのプログラムの複数の部分を並列に実行す
ることである。
はあるコンピュータ・プログラムを順次実行したように
見せながらそのプログラムの複数の部分を並列に実行す
ることである。
【0010】本発明の他の目的はあるコンピュータ・プ
ログラムの複数の部分を並列に非同期に実行しながらオ
ペランドを生成する各コンピュータ・プログラム部分か
らそのオペランドを必要とするコンピュータ・プログラ
ム部分へオペランドを正しく通信することである。
ログラムの複数の部分を並列に非同期に実行しながらオ
ペランドを生成する各コンピュータ・プログラム部分か
らそのオペランドを必要とするコンピュータ・プログラ
ム部分へオペランドを正しく通信することである。
【0011】本発明の他の目的は2つの実行モードでコ
ンピュータ・プログラムを実行する、即ち、順次モード
である第1モード(Eモード)ではシステムが命令シー
ケンスを実行するとともに、並列処理を行う第2の実行
モード(Zモード)でその命令シーケンスをいかに実行
するかを「学習」する第1の実行モードと、その後命令
シーケンスを実行するために可能な限り使用される第2
の実行モードで実行することである。
ンピュータ・プログラムを実行する、即ち、順次モード
である第1モード(Eモード)ではシステムが命令シー
ケンスを実行するとともに、並列処理を行う第2の実行
モード(Zモード)でその命令シーケンスをいかに実行
するかを「学習」する第1の実行モードと、その後命令
シーケンスを実行するために可能な限り使用される第2
の実行モードで実行することである。
【0012】
【課題を解決するための手段】上記その他の目的は、本
発明によれば、単一の命令実行シーケンスが連続するセ
グメントとして実行され、各セグメントが1組の命令サ
ブシーケンスに更に分割され、各命令サブシーケンスが
1組の別々の処理要素のうちのそれぞれ異なる1つの処
理要素で実行される自己並列化式のコンピュータ・シス
テムおよび方法によって達成される。この計算機と方法
をMSIS(単一命令シーケンスの多重ストリーム化)と称
する。
発明によれば、単一の命令実行シーケンスが連続するセ
グメントとして実行され、各セグメントが1組の命令サ
ブシーケンスに更に分割され、各命令サブシーケンスが
1組の別々の処理要素のうちのそれぞれ異なる1つの処
理要素で実行される自己並列化式のコンピュータ・シス
テムおよび方法によって達成される。この計算機と方法
をMSIS(単一命令シーケンスの多重ストリーム化)と称
する。
【0013】処理要素は命令に関連する必要な情報を記
憶して、別々の処理要素上でこれらの命令を非同期に実
行できるようにし、また並列実行の結果が正しくなるよ
うに処理要素間での通信を可能にする。したがって、単
一の命令ストリームがそのストリーム内の分岐の実行に
関して動的に並列化される。この点が他の形の並列実行
と本発明の相違点である。
憶して、別々の処理要素上でこれらの命令を非同期に実
行できるようにし、また並列実行の結果が正しくなるよ
うに処理要素間での通信を可能にする。したがって、単
一の命令ストリームがそのストリーム内の分岐の実行に
関して動的に並列化される。この点が他の形の並列実行
と本発明の相違点である。
【0014】MSISは協調して動作する1組の処理要素が
命令ストリームの連続するセグメントを実行するプロセ
ッサの集合体である。各処理要素は命令を解読し、メモ
リ・オペランド・アドレスを生成し、命令を実行し、そ
れ自体の1組の汎用レジスタを参照および更新する能力
を有する。これらの処理要素はプログラム・セグメント
の最初の実行の間に協調して働いて、原セグメントから
別々の命令ストリームまたは命令サブシーケンスを生成
し、それらを記憶する。1つのセグメントに対応するこ
れら別々の命令サブシーケンスは原セグメントを並列化
したものであり、これをZコードと称する。これは原セ
グメントの各命令が並列化されたZコードの形で生成さ
れたサブシーケンスのうちのただ1つのサブシーケンス
に置かれるという意味で、真の分割である。各処理要素
はそのセグメントの最初の実行中に割り当てられた命令
だけを解読および実行するが、各々の処理要素において
割り当てられた命令について同じことを同時に行うの
で、プログラム・セグメントの再実行ははるかに高速に
なる。
命令ストリームの連続するセグメントを実行するプロセ
ッサの集合体である。各処理要素は命令を解読し、メモ
リ・オペランド・アドレスを生成し、命令を実行し、そ
れ自体の1組の汎用レジスタを参照および更新する能力
を有する。これらの処理要素はプログラム・セグメント
の最初の実行の間に協調して働いて、原セグメントから
別々の命令ストリームまたは命令サブシーケンスを生成
し、それらを記憶する。1つのセグメントに対応するこ
れら別々の命令サブシーケンスは原セグメントを並列化
したものであり、これをZコードと称する。これは原セ
グメントの各命令が並列化されたZコードの形で生成さ
れたサブシーケンスのうちのただ1つのサブシーケンス
に置かれるという意味で、真の分割である。各処理要素
はそのセグメントの最初の実行中に割り当てられた命令
だけを解読および実行するが、各々の処理要素において
割り当てられた命令について同じことを同時に行うの
で、プログラム・セグメントの再実行ははるかに高速に
なる。
【0015】セグメントは PセグメントまたはZセグメ
ントのいずれかである。Pセグメントは連続的に実行さ
れる命令のシーケンス(すなわち単一プロセッサ命令ス
トリームの通常のセグメント)である。これは第1の実
行モード(Eモード)でデータと共に処理されて、通常
の実行結果のみならず1つまたは複数のZセグメントを
も生成する。あるプログラム・セグメントが再び実行さ
れる時に対応するZセグメントが利用可能なな場合、そ
の Zセグメントが第2の実行モード(Zモード)で Pセ
グメントの代わりにMSISによって処理される。
ントのいずれかである。Pセグメントは連続的に実行さ
れる命令のシーケンス(すなわち単一プロセッサ命令ス
トリームの通常のセグメント)である。これは第1の実
行モード(Eモード)でデータと共に処理されて、通常
の実行結果のみならず1つまたは複数のZセグメントを
も生成する。あるプログラム・セグメントが再び実行さ
れる時に対応するZセグメントが利用可能なな場合、そ
の Zセグメントが第2の実行モード(Zモード)で Pセ
グメントの代わりにMSISによって処理される。
【0016】EモードとZモードの主な相違はEモードの
間には、すべての処理要素にPセグメント内のすべての
命令が見えるが、各処理要素はそれに割り当てられた命
令だけを実行することである。Zモードの間には、各処
理要素は割り当てられた命令だけを実行するのみなら
ず、これらの命令だけが見え、これらの命令だけを解読
する。
間には、すべての処理要素にPセグメント内のすべての
命令が見えるが、各処理要素はそれに割り当てられた命
令だけを実行することである。Zモードの間には、各処
理要素は割り当てられた命令だけを実行するのみなら
ず、これらの命令だけが見え、これらの命令だけを解読
する。
【0017】Eモードではすべての処理要素にすべての
命令が見えるので、この処理モードではすべての命令の
相互依存性がすべての処理要素に明示され、各処理要素
は他の処理要素のすべてに関して自律的かつ非同期にZ
モードで正しく実行するために必要となる情報を("Zコ
ード"として)記録する。このZコードはあるPセグメン
ト内のすべての命令について、1命令ごとに相互依存性
を捕捉する。
命令が見えるので、この処理モードではすべての命令の
相互依存性がすべての処理要素に明示され、各処理要素
は他の処理要素のすべてに関して自律的かつ非同期にZ
モードで正しく実行するために必要となる情報を("Zコ
ード"として)記録する。このZコードはあるPセグメン
ト内のすべての命令について、1命令ごとに相互依存性
を捕捉する。
【0018】Zモードではある処理要素で実行されるあ
る種の命令が異なる処理要素で概念上後の時間に実行さ
れる消費者命令によって使用されるレジスタ値の生産者
になる。原命令ストリームから見た順序の正しさを保証
するため、MSISはメッセージの送出と待機によって生産
者と消費者を同期させる。ある命令が生産者であるか、
消費者であるか、その両者であるか、どちらでもないか
が、Zコードに記録され、Zモードで使用される。これを
行うため、Zコードは各命令にSリストとDリストを関連
付ける。
る種の命令が異なる処理要素で概念上後の時間に実行さ
れる消費者命令によって使用されるレジスタ値の生産者
になる。原命令ストリームから見た順序の正しさを保証
するため、MSISはメッセージの送出と待機によって生産
者と消費者を同期させる。ある命令が生産者であるか、
消費者であるか、その両者であるか、どちらでもないか
が、Zコードに記録され、Zモードで使用される。これを
行うため、Zコードは各命令にSリストとDリストを関連
付ける。
【0019】Sリストの役割はある命令用の1つまたは
複数のソース・レジスタが別の処理要素で実行中の別の
命令によってセットされることをZモードにある処理要
素に教えることである。Dリストの役割はある命令によ
ってセットされるレジスタの値を必要とする他の処理要
素の名前をZモードの処理要素に教えることである。Zモ
ードで正しい実行が行われるのは、特定の命令を実行す
るために他の処理要素からの情報が必要かどうかを各処
理要素がZコードから知るからであり、その情報がその
命令の実行の前にその処理要素に送られていない場合に
は、その処理要素はその特定の命令を実行する前に他の
処理要素から必要な情報が送られるのを待つ。また各処
理要素はその処理要素が生成するどの情報を命令を実行
するために他の処理要素が必要とするかをZコードから
知り、他の処理要素が必要とする情報はその情報の生成
時にこの処理要素から他の処理要素に送られる。
複数のソース・レジスタが別の処理要素で実行中の別の
命令によってセットされることをZモードにある処理要
素に教えることである。Dリストの役割はある命令によ
ってセットされるレジスタの値を必要とする他の処理要
素の名前をZモードの処理要素に教えることである。Zモ
ードで正しい実行が行われるのは、特定の命令を実行す
るために他の処理要素からの情報が必要かどうかを各処
理要素がZコードから知るからであり、その情報がその
命令の実行の前にその処理要素に送られていない場合に
は、その処理要素はその特定の命令を実行する前に他の
処理要素から必要な情報が送られるのを待つ。また各処
理要素はその処理要素が生成するどの情報を命令を実行
するために他の処理要素が必要とするかをZコードから
知り、他の処理要素が必要とする情報はその情報の生成
時にこの処理要素から他の処理要素に送られる。
【0020】MSISのセグメントはさらに条件性レベルに
分解される。命令の条件性レベルとはそのセグメントに
おけるその命令に先行する分岐命令の数である。条件性
レベルは0から始まり、分岐命令ごとに1ずつ増分され
る。セグメント当りの条件性レベルの最大数はMSIS内の
ハードウェア資源によって制限され、EモードにおけるM
SIS内のPセグメントはこの制限内で区切られる。
分解される。命令の条件性レベルとはそのセグメントに
おけるその命令に先行する分岐命令の数である。条件性
レベルは0から始まり、分岐命令ごとに1ずつ増分され
る。セグメント当りの条件性レベルの最大数はMSIS内の
ハードウェア資源によって制限され、EモードにおけるM
SIS内のPセグメントはこの制限内で区切られる。
【0021】MSISは異なるプロセッサにスケジューリン
グされた命令間の依存性を保持するZコードを命令シー
ケンスを通る第1パスの間に生成する2パス・システム
である。Zコードを用いると、異なるデータを用いて命
令のシーケンスを第2パスで正しく再実行できるように
なる。正しい実行は異なる処理要素内のレジスタの設定
および使用を調整するメッセージを送出し予想すること
によって達成される。これらのメッセージが必要かどう
かはEモードでの第1パスの実行中に決定され、Zコード
内に捕捉される。
グされた命令間の依存性を保持するZコードを命令シー
ケンスを通る第1パスの間に生成する2パス・システム
である。Zコードを用いると、異なるデータを用いて命
令のシーケンスを第2パスで正しく再実行できるように
なる。正しい実行は異なる処理要素内のレジスタの設定
および使用を調整するメッセージを送出し予想すること
によって達成される。これらのメッセージが必要かどう
かはEモードでの第1パスの実行中に決定され、Zコード
内に捕捉される。
【0022】本来、PセグメントのEモード実行からもた
らされるZコードはその命令シーケンス(すなわちセグ
メント)のEモード実行中に行われた特定の分岐判断
(それが行われる場合)に依存する。ZコードはEモード
実行中に記録されるが、これは同じ命令シーケンスが全
体的または部分的に再度実行される可能性があり、その
ような場合には、このZコードを原コード(本明細書で
は"Eコード"と称することもある)の代わりに使用する
と、同じ命令シーケンスを少なくとも部分的に並列化さ
れたZモードの実行ではるかに速く再実行することがで
きると予想して行われるものである。コンピュータ・プ
ログラムは同じ命令シーケンスを何回も実行する傾向が
あり、分岐命令は同じ分岐を繰り返し実行する際に同じ
経路をとると判断される傾向があるので、多くの命令シ
ーケンス(すなわちセグメント)がもう一度再実行さ
れ、再実行される命令シーケンス内の分岐命令は、再実
行の際にも同じ経路をとるとしばしば判断される。これ
がZコードを生成し、可能なときには必ずEコードの代わ
りにZコードを実行することによって性能が非常に向上
することの理由である。
らされるZコードはその命令シーケンス(すなわちセグ
メント)のEモード実行中に行われた特定の分岐判断
(それが行われる場合)に依存する。ZコードはEモード
実行中に記録されるが、これは同じ命令シーケンスが全
体的または部分的に再度実行される可能性があり、その
ような場合には、このZコードを原コード(本明細書で
は"Eコード"と称することもある)の代わりに使用する
と、同じ命令シーケンスを少なくとも部分的に並列化さ
れたZモードの実行ではるかに速く再実行することがで
きると予想して行われるものである。コンピュータ・プ
ログラムは同じ命令シーケンスを何回も実行する傾向が
あり、分岐命令は同じ分岐を繰り返し実行する際に同じ
経路をとると判断される傾向があるので、多くの命令シ
ーケンス(すなわちセグメント)がもう一度再実行さ
れ、再実行される命令シーケンス内の分岐命令は、再実
行の際にも同じ経路をとるとしばしば判断される。これ
がZコードを生成し、可能なときには必ずEコードの代わ
りにZコードを実行することによって性能が非常に向上
することの理由である。
【0023】好ましい実施例では、Zコードにはレジス
タ(またはレジスタの等価物)を通るデータフローのみ
が記録され、その結果、このデータフローがZモードで
再生成される。Eコードが、(レジスタにデータを記憶
し、その後そのレジスタ内のデータを使用するのとは違
って)データを主記憶装置に記憶し、その後同じデータ
を主記憶装置から読み取る場合、このデータ・フロー
は、Zモードで再生成されない。主記憶装置への記憶に
よって処理されるデータ・フローでは、そのデータを生
成する処理要素が実際にそのデータを生成する前に、あ
る処理要素がそのデータを必要とする状況が、頻繁には
発生しないと仮定する。好ましい実施例では、この余り
起こりそうもないエラー状態が発生した場合は検出され
るが、正しいデータ・フローは、DリストおよびSリスト
を使用して再生成されない。
タ(またはレジスタの等価物)を通るデータフローのみ
が記録され、その結果、このデータフローがZモードで
再生成される。Eコードが、(レジスタにデータを記憶
し、その後そのレジスタ内のデータを使用するのとは違
って)データを主記憶装置に記憶し、その後同じデータ
を主記憶装置から読み取る場合、このデータ・フロー
は、Zモードで再生成されない。主記憶装置への記憶に
よって処理されるデータ・フローでは、そのデータを生
成する処理要素が実際にそのデータを生成する前に、あ
る処理要素がそのデータを必要とする状況が、頻繁には
発生しないと仮定する。好ましい実施例では、この余り
起こりそうもないエラー状態が発生した場合は検出され
るが、正しいデータ・フローは、DリストおよびSリスト
を使用して再生成されない。
【0024】これらのエラー状態の1つが検出された時
は、Zコードの実行が停止され、有効な計算機状態が復
元され、復元された計算機状態に対応する前の点から、
適当なモードで実行が続行される。このようなエラーに
関連する命令のすべてが、同じセグメント内の同一の条
件性レベル内にあり、同じ処理要素に割り当てられてい
る場合には、このようなエラーを回避することが、処理
要素の能力に含まれると仮定する。したがって、本発明
によれば、順序外れエラーの発生の結果として新しいZ
コードが生成された時、その新しいZコードが、実行時
に同じエラーを生じないように、このようなエラーから
の回復に、命令のスケジューリングの修正を含めること
が好ましい。
は、Zコードの実行が停止され、有効な計算機状態が復
元され、復元された計算機状態に対応する前の点から、
適当なモードで実行が続行される。このようなエラーに
関連する命令のすべてが、同じセグメント内の同一の条
件性レベル内にあり、同じ処理要素に割り当てられてい
る場合には、このようなエラーを回避することが、処理
要素の能力に含まれると仮定する。したがって、本発明
によれば、順序外れエラーの発生の結果として新しいZ
コードが生成された時、その新しいZコードが、実行時
に同じエラーを生じないように、このようなエラーから
の回復に、命令のスケジューリングの修正を含めること
が好ましい。
【0025】好ましい実施例では、各処理要素は、それ
自体のレジスタ・セットだけではなく、他の各処理要素
の各レジスタ・セットに対応するレジスタ・セットをも
有する(すなわち、各処理要素が10個のレジスタ・セ
ットを有し、8つの処理要素がある場合には、各処理要
素は、実際には、その処理要素用のレジスタとして使用
される10個のレジスタと、他の7つの処理要素からの
レジスタ値を保持するのに使用される70個の追加レジ
スタの、合計80個のレジスタを有する)。これらすべ
てのレジスタの間(すなわち、前の例では、8つの処理
要素それぞれの80個のレジスタの間、すなわち合計6
40通りのレジスタの間)でデータを転送するメッセー
ジ処理システムの使用によって、正しいデータ・フロー
が維持される。
自体のレジスタ・セットだけではなく、他の各処理要素
の各レジスタ・セットに対応するレジスタ・セットをも
有する(すなわち、各処理要素が10個のレジスタ・セ
ットを有し、8つの処理要素がある場合には、各処理要
素は、実際には、その処理要素用のレジスタとして使用
される10個のレジスタと、他の7つの処理要素からの
レジスタ値を保持するのに使用される70個の追加レジ
スタの、合計80個のレジスタを有する)。これらすべ
てのレジスタの間(すなわち、前の例では、8つの処理
要素それぞれの80個のレジスタの間、すなわち合計6
40通りのレジスタの間)でデータを転送するメッセー
ジ処理システムの使用によって、正しいデータ・フロー
が維持される。
【0026】Zモードで処理中の命令が、あるレジスタ
に記録された値を必要とする場合、そのことが、実行中
のZコードの生成時にその命令に関連するSリストに記録
されている。また、このSリストは、この値を生成する
処理要素と、その処理要素が必要な値を置くレジスタを
識別する。その値を必要とする処理要素は、必要な値を
得るため、それらのレジスタのうちの識別された特定の
レジスタを調べる。
に記録された値を必要とする場合、そのことが、実行中
のZコードの生成時にその命令に関連するSリストに記録
されている。また、このSリストは、この値を生成する
処理要素と、その処理要素が必要な値を置くレジスタを
識別する。その値を必要とする処理要素は、必要な値を
得るため、それらのレジスタのうちの識別された特定の
レジスタを調べる。
【0027】この必要な値を生成する命令に関連するD
リスト内には、この値を必要とする他の処理要素のリス
トがある。他の処理要素が必要とする値が生成される
時、その値を生成する処理要素は、必要な値を生成する
命令に関連するDリストから、他の識別された処理要素
がこの値を必要としていることを知る。したがって、こ
の必要な値を生成する処理要素は、その値をメッセージ
処理システムに送って、正しい処理要素に配布する。
リスト内には、この値を必要とする他の処理要素のリス
トがある。他の処理要素が必要とする値が生成される
時、その値を生成する処理要素は、必要な値を生成する
命令に関連するDリストから、他の識別された処理要素
がこの値を必要としていることを知る。したがって、こ
の必要な値を生成する処理要素は、その値をメッセージ
処理システムに送って、正しい処理要素に配布する。
【0028】メッセージ処理システムは、レジスタ値
を、それを生成した処理要素の正しいレジスタから、そ
れを必要とする処理要素の対応する正しいレジスタに転
送する。ある必要な値が既に宛先処理要素の正しいレジ
スタに記憶されている場合には、好ましい実施例によれ
ば、そのレジスタ内に既に保持されている値が使用され
て上書きができるようになるまで、メッセージ処理シス
テムは、そのレジスタ用の新しい値を保存する。Sリス
トとDリストを用いると、このすべてを正しく、完全に
非同期に行えるようになる。
を、それを生成した処理要素の正しいレジスタから、そ
れを必要とする処理要素の対応する正しいレジスタに転
送する。ある必要な値が既に宛先処理要素の正しいレジ
スタに記憶されている場合には、好ましい実施例によれ
ば、そのレジスタ内に既に保持されている値が使用され
て上書きができるようになるまで、メッセージ処理シス
テムは、そのレジスタ用の新しい値を保存する。Sリス
トとDリストを用いると、このすべてを正しく、完全に
非同期に行えるようになる。
【0029】記憶できるZコードの量には何らかの制限
を設けなければならないので、実用的な実施例では、ど
のZコードを置換するかに関して、適当な時点で決定を
行わなければならない。これは、キャッシュ管理の場合
の判断に良く似ており、同じように処理される。好まし
い実施例では、LRU(Least Recently Used)アルゴリズ
ムを適用して、記憶されたZコードのエージ・アウトを
行う。
を設けなければならないので、実用的な実施例では、ど
のZコードを置換するかに関して、適当な時点で決定を
行わなければならない。これは、キャッシュ管理の場合
の判断に良く似ており、同じように処理される。好まし
い実施例では、LRU(Least Recently Used)アルゴリズ
ムを適用して、記憶されたZコードのエージ・アウトを
行う。
【0030】好ましい実施例では、Zコード・セグメン
トは、その先頭からしか入れない(すなわち、命令シー
ケンスの再実行は、そのシーケンスの最初の命令から始
めなければならない)。これによって大きな損失はな
い。というのは、後続の実行が実際には最初の命令以外
の命令から始まる場合、その実行はEモードで行われ、
その命令シーケンスのEモードで再実行された部分用の
新しいZコードが作成されるからである。前のZコード
は、再実行されたシーケンスの正しい開始命令ではない
と判った命令を開始命令として生成されたことが明らか
なので、前のZコードはおそらくエージ・アウトして置
換され、新しいZコードが再使用され、したがって保持
されることになろう。このようにして、正しい命令を開
始命令とするZコード・セグメントが、長期間にわたっ
て保持されるZコード・セグメントになる。
トは、その先頭からしか入れない(すなわち、命令シー
ケンスの再実行は、そのシーケンスの最初の命令から始
めなければならない)。これによって大きな損失はな
い。というのは、後続の実行が実際には最初の命令以外
の命令から始まる場合、その実行はEモードで行われ、
その命令シーケンスのEモードで再実行された部分用の
新しいZコードが作成されるからである。前のZコード
は、再実行されたシーケンスの正しい開始命令ではない
と判った命令を開始命令として生成されたことが明らか
なので、前のZコードはおそらくエージ・アウトして置
換され、新しいZコードが再使用され、したがって保持
されることになろう。このようにして、正しい命令を開
始命令とするZコード・セグメントが、長期間にわたっ
て保持されるZコード・セグメントになる。
【0031】にもかかわらず、Zコード・セグメントの
先頭以外の場所でZコード・セグメントに直接分岐でき
るようにすることによって、利益が得られる。
先頭以外の場所でZコード・セグメントに直接分岐でき
るようにすることによって、利益が得られる。
【0032】分岐の判断が、Zモードでの後続実行の際
に前と同じ経路をとらないと判断される場合、記憶され
た命令シーケンスの残りの部分は、その特定の再実行に
ついては無効となる。しかしながら、本発明によれば、
Zコード生成中に行われた分岐の位置からではなくZコー
ドの実行中に行われた異なった分岐の判断の位置での有
効な計算機状態が回復され、適当な実行モード(Zコー
ドが存在するならばZモード、そうでなければEモード)
でプログラムの実行が続行される。新しい分岐判断が初
めて行われる時は、計算機は、新しいZコードを形成す
るEモード実行で継続する。その後、この新しいZコード
が、その分岐がこの新しい経路をとると判断された時に
も、Zモードで実行を継続するために使用できるように
なる。
に前と同じ経路をとらないと判断される場合、記憶され
た命令シーケンスの残りの部分は、その特定の再実行に
ついては無効となる。しかしながら、本発明によれば、
Zコード生成中に行われた分岐の位置からではなくZコー
ドの実行中に行われた異なった分岐の判断の位置での有
効な計算機状態が回復され、適当な実行モード(Zコー
ドが存在するならばZモード、そうでなければEモード)
でプログラムの実行が続行される。新しい分岐判断が初
めて行われる時は、計算機は、新しいZコードを形成す
るEモード実行で継続する。その後、この新しいZコード
が、その分岐がこの新しい経路をとると判断された時に
も、Zモードで実行を継続するために使用できるように
なる。
【0033】Zモードで分岐が誤って推測された時だけ
でなく、2つのセグメント間の遷移があるごとに、有効
な計算機状態を確立する必要がある。好ましい実施例で
は、ZZTフレームと称する記憶要素を使って、あるセグ
メント内の各条件性レベルにある各処理要素のアーキテ
クトされたレジスタの値を記憶し、ZZT RFILEと称する
別の記憶要素を使って、あるセグメントの開始時の各処
理要素のアーキテクチャ式レジスタの値を記憶する。追
加のハードウェア機構を使用して、正しく推測された最
後の分岐命令を識別する。有効な計算機状態を再生成す
る必要がある時は、これらの記憶要素から有効な状態の
各処理要素のアーキテクトされたレジスタの値を取得
し、その値を使用して、物理レジスタに対する正しい値
を復元し、その後、適当なモードで再度その位置から実
行が続行される。主記憶装置に対するフェッチと記憶
は、分岐が正しく実行された位置までに限ってコミット
される。
でなく、2つのセグメント間の遷移があるごとに、有効
な計算機状態を確立する必要がある。好ましい実施例で
は、ZZTフレームと称する記憶要素を使って、あるセグ
メント内の各条件性レベルにある各処理要素のアーキテ
クトされたレジスタの値を記憶し、ZZT RFILEと称する
別の記憶要素を使って、あるセグメントの開始時の各処
理要素のアーキテクチャ式レジスタの値を記憶する。追
加のハードウェア機構を使用して、正しく推測された最
後の分岐命令を識別する。有効な計算機状態を再生成す
る必要がある時は、これらの記憶要素から有効な状態の
各処理要素のアーキテクトされたレジスタの値を取得
し、その値を使用して、物理レジスタに対する正しい値
を復元し、その後、適当なモードで再度その位置から実
行が続行される。主記憶装置に対するフェッチと記憶
は、分岐が正しく実行された位置までに限ってコミット
される。
【0034】どのプロセッサ・アーキテクチャでも各処
理要素の基礎となり得るが、MSISの好ましい実施例で
は、処理要素は、Zモードで、レジスタ(またはその等
価物)の設定および使用によって調整される。したがっ
て、命令は、直接動作の少なくとも大部分と、メモリと
のインターフェースの少なくとも大部分に、レジスタを
使用することが好ましい。
理要素の基礎となり得るが、MSISの好ましい実施例で
は、処理要素は、Zモードで、レジスタ(またはその等
価物)の設定および使用によって調整される。したがっ
て、命令は、直接動作の少なくとも大部分と、メモリと
のインターフェースの少なくとも大部分に、レジスタを
使用することが好ましい。
【0035】好ましい実施例では、各処理要素が、その
処理要素用のZコードを記憶する専用のZキャッシュを有
するが、レジスタまたはその等価物に記憶されないEコ
ードおよびデータについては、すべての処理要素が共通
のメモリ階層にアクセスする。このメモリ階層は、非同
期的に行われるオペランドのフェッチと記憶が、メモリ
内の値の設定および監視に関連するアーキテクチャ上の
規則に違反しないようにするための追加の制御を備えて
いる。
処理要素用のZコードを記憶する専用のZキャッシュを有
するが、レジスタまたはその等価物に記憶されないEコ
ードおよびデータについては、すべての処理要素が共通
のメモリ階層にアクセスする。このメモリ階層は、非同
期的に行われるオペランドのフェッチと記憶が、メモリ
内の値の設定および監視に関連するアーキテクチャ上の
規則に違反しないようにするための追加の制御を備えて
いる。
【0036】Eモード実行の際に実施される割当て方式
のあるものは、MSISがZモードで命令をどれだけ効率的
に実行できるかの点で他の方式より優れているが、MSIS
は、使用される割当て方式にかかわらず正しく機能す
る。完全に適した割当て方式は、たとえば、最初の処理
要素に5つの順次命令を割り当て、2番目の処理要素に
次の5つの順次命令を割り当て、最後の処理要素に5つ
の順次命令を割り当てた後この割当てシーケンスを繰り
返して、そのPセグメント内のすべての命令を割り当て
るというものであろう。
のあるものは、MSISがZモードで命令をどれだけ効率的
に実行できるかの点で他の方式より優れているが、MSIS
は、使用される割当て方式にかかわらず正しく機能す
る。完全に適した割当て方式は、たとえば、最初の処理
要素に5つの順次命令を割り当て、2番目の処理要素に
次の5つの順次命令を割り当て、最後の処理要素に5つ
の順次命令を割り当てた後この割当てシーケンスを繰り
返して、そのPセグメント内のすべての命令を割り当て
るというものであろう。
【0037】
【実施例】以下ではMSISの好ましい実施例を9節に分け
て記述する。各節では主に1枚または複数の図面を参照
する。説明は以下の節からなる。 第1節 MSIS編成の概要 第2節 専用Zキャッシュ 第3節 個別レジスタ・ファイル 第4節 処理要素間でのメッセージのパス 第5節 OSCとPSCの監視 第6節 分岐の処理 第7節 Eモードでの処理要素への命令の割り当て 第8節 Eモード中およびZモード中の命令処理 第9節 基本実施態様に対する拡張。
て記述する。各節では主に1枚または複数の図面を参照
する。説明は以下の節からなる。 第1節 MSIS編成の概要 第2節 専用Zキャッシュ 第3節 個別レジスタ・ファイル 第4節 処理要素間でのメッセージのパス 第5節 OSCとPSCの監視 第6節 分岐の処理 第7節 Eモードでの処理要素への命令の割り当て 第8節 Eモード中およびZモード中の命令処理 第9節 基本実施態様に対する拡張。
【0038】第1節 発明の概要 MSISプロセッサ編成のブロック図を図1に示す。各処理
要素100は命令デコーダ/スケジューラ700を使用
して命令を解読する能力と、メモリ・オペランド用のア
ドレスを生成しレジスタ・オペランドにアクセスするた
めに、それ自体のレジスタ・ファイル300にアクセス
する能力を有する。これらのオペランドは処理要素内の
実行ユニット130に送られる。実行ユニット130は
命令によって指定される動作を実行し、実行の結果を送
り出す。MSIS内の処理要素は各処理要素が事前に指定さ
れた識別番号(n個の処理要素を有するシステムでは
1、2、...、n)を有する点を除き同一である。こ
の処理要素の名前はその処理要素にとって既知であり、
Eモードの間にたとえば処理要素がこの名前を用いて解
読中の命令がその処理要素に割り当てられるか否かを判
断できるようになる。各処理要素はバス135を介して
メモリ階層140に接続される。メモリ階層140はフ
ェッチ動作ではデータ・オペランドを供給し、記憶動作
では記憶オペランドを受け取り、またEモードでの命令
フェッチにも使用される。実際のオペランドのフェッチ
および記憶は1組のOSC/PSC制御機構500を介して行
われる。OSC/PSC制御機構500は順序外れ動作に関連
するすべてのハザードの検出を保証する。
要素100は命令デコーダ/スケジューラ700を使用
して命令を解読する能力と、メモリ・オペランド用のア
ドレスを生成しレジスタ・オペランドにアクセスするた
めに、それ自体のレジスタ・ファイル300にアクセス
する能力を有する。これらのオペランドは処理要素内の
実行ユニット130に送られる。実行ユニット130は
命令によって指定される動作を実行し、実行の結果を送
り出す。MSIS内の処理要素は各処理要素が事前に指定さ
れた識別番号(n個の処理要素を有するシステムでは
1、2、...、n)を有する点を除き同一である。こ
の処理要素の名前はその処理要素にとって既知であり、
Eモードの間にたとえば処理要素がこの名前を用いて解
読中の命令がその処理要素に割り当てられるか否かを判
断できるようになる。各処理要素はバス135を介して
メモリ階層140に接続される。メモリ階層140はフ
ェッチ動作ではデータ・オペランドを供給し、記憶動作
では記憶オペランドを受け取り、またEモードでの命令
フェッチにも使用される。実際のオペランドのフェッチ
および記憶は1組のOSC/PSC制御機構500を介して行
われる。OSC/PSC制御機構500は順序外れ動作に関連
するすべてのハザードの検出を保証する。
【0039】セグメント遷移ユニット600(以下Zコ
ード間遷移(Z-Code to Z-Code Transition)の頭字を
取ってZZTと称する)は分岐回復を容易にするための情
報を記憶する。ZZT600はまた、ZZT RFILE650内の
情報を使用する。ZZT RFILE650にはZコード・セグメ
ントへの遷移を行うのに必要なレジスタの値が記憶され
ている。ZZTとZZT RFILEはいずれもバス135を介して
アクセスされる。
ード間遷移(Z-Code to Z-Code Transition)の頭字を
取ってZZTと称する)は分岐回復を容易にするための情
報を記憶する。ZZT600はまた、ZZT RFILE650内の
情報を使用する。ZZT RFILE650にはZコード・セグメ
ントへの遷移を行うのに必要なレジスタの値が記憶され
ている。ZZTとZZT RFILEはいずれもバス135を介して
アクセスされる。
【0040】各処理要素はメッセージ処理システム(MH
S)400を介して他のどの処理要素とも通信すること
ができる。
S)400を介して他のどの処理要素とも通信すること
ができる。
【0041】各処理要素はZ動作モード用の注釈付き情
報を記憶するそれ自体の専用Zキャッシュ200を有す
る。Zモード中の命令フェッチでは、各処理要素内の専
用バス150が使用される。
報を記憶するそれ自体の専用Zキャッシュ200を有す
る。Zモード中の命令フェッチでは、各処理要素内の専
用バス150が使用される。
【0042】第2節 専用Zキャッシュ Zモード中の命令フェッチは各処理要素に関連するZキャ
ッシュ200(図1)内のZコードにアクセスすること
によって行われる。Zキャッシュの編成を図5に示す。Z
キャッシュ・ディレクトリ210はZキャッシュ・アレ
イ220に記憶されたZセグメントを追跡するのに使用
される。Zキャッシュ200の内容は事前に指定された
数のZセグメントを表し、各Zセグメントは最大数のセル
225を有し、各セルは1つのZ命令を収容する。各Zキ
ャッシュ200はZキャッシュ・ディレクトリ210
と、そのディレクトリからアドレスされるセルのZキャ
ッシュ・アレイ220を備える。Zキャッシュ・ディレ
クトリ・エントリ211のフォーマットを図3に示す。
Zキャッシュ・ディレクトリ・エントリはこのZセグメン
トがそこから生成されたPセグメントの開始アドレス2
12、その処理要素用のそのZセグメント内の最初のZ命
令を含むセルのZキャッシュ・アドレス213および有
効ビット219を含む。
ッシュ200(図1)内のZコードにアクセスすること
によって行われる。Zキャッシュの編成を図5に示す。Z
キャッシュ・ディレクトリ210はZキャッシュ・アレ
イ220に記憶されたZセグメントを追跡するのに使用
される。Zキャッシュ200の内容は事前に指定された
数のZセグメントを表し、各Zセグメントは最大数のセル
225を有し、各セルは1つのZ命令を収容する。各Zキ
ャッシュ200はZキャッシュ・ディレクトリ210
と、そのディレクトリからアドレスされるセルのZキャ
ッシュ・アレイ220を備える。Zキャッシュ・ディレ
クトリ・エントリ211のフォーマットを図3に示す。
Zキャッシュ・ディレクトリ・エントリはこのZセグメン
トがそこから生成されたPセグメントの開始アドレス2
12、その処理要素用のそのZセグメント内の最初のZ命
令を含むセルのZキャッシュ・アドレス213および有
効ビット219を含む。
【0043】有効ビット219を使用するディレクトリ
無効化機能は2つの状況で使用される。信号線531は
プログラム記憶比較(PSC)ハザードが検出された時に
すべての処理要素内のすべてのZコードを無効にするの
に使用される。信号線532はオペランド記憶比較(OS
C)ハザードが検出された時に現Zセグメントを無効にす
るのに使用される。これら2つのハザードについては第
5節で詳細に説明する。
無効化機能は2つの状況で使用される。信号線531は
プログラム記憶比較(PSC)ハザードが検出された時に
すべての処理要素内のすべてのZコードを無効にするの
に使用される。信号線532はオペランド記憶比較(OS
C)ハザードが検出された時に現Zセグメントを無効にす
るのに使用される。これら2つのハザードについては第
5節で詳細に説明する。
【0044】Zキャッシュ・ディレクトリ210はまたZ
ZTスキャナ660(図16)からバス215を介してア
ドレスを受け取ることができる。このアドレスはディレ
クトリに対する探索引数として使用される。一致があっ
た場合、その処理要素は判断要素216を介してその処
理要素のモードをZモードに設定する。
ZTスキャナ660(図16)からバス215を介してア
ドレスを受け取ることができる。このアドレスはディレ
クトリに対する探索引数として使用される。一致があっ
た場合、その処理要素は判断要素216を介してその処
理要素のモードをZモードに設定する。
【0045】Zモード中の命令フェッチ(すなわちIフェ
ッチ)はZキャッシュから引き出される。ディレクトリ
・エントリのどのPセグメント開始アドレス212とも
一致しない場合は、処理要素は判断要素216によって
Eモードに設定され、EモードでのIフェッチがメモリ階
層140(図1)から引き出される。
ッチ)はZキャッシュから引き出される。ディレクトリ
・エントリのどのPセグメント開始アドレス212とも
一致しない場合は、処理要素は判断要素216によって
Eモードに設定され、EモードでのIフェッチがメモリ階
層140(図1)から引き出される。
【0046】Zキャッシュ・アレイ220はZ命令を含ん
でいる。Z命令は固定したサイズとフォーマットを有す
る。Z命令のフォーマットを図4に示す。各Z命令は以下
の情報を含む。 ・命令イメージ222(命令コード、オペランドなど)
−命令の実行に必要な通常の情報である。 ・条件性レベル(LC)502−キャッシュ内のオペラン
ド記憶比較(OSC)制御機構によってOSCハザードの検出
を管理し、いつ記憶命令をメモリ階層に解放できるかを
決定するために使用される。 ・命令識別子(ID)802−Pセグメント内での命令の
順序番号であり、その命令によって送られるメッセージ
の一部として使用される。 ・Sリスト223−入力に関するこの命令の他の命令に
対する依存性を表すリストである。 ・Dリスト224−Z命令とこのZ命令の実行の結果を必
要とする処理要素のリストである。 ・Zセグメント終了ビット227−このZセグメント内の
この処理要素用の最後の命令であることを指定するビッ
トである。
でいる。Z命令は固定したサイズとフォーマットを有す
る。Z命令のフォーマットを図4に示す。各Z命令は以下
の情報を含む。 ・命令イメージ222(命令コード、オペランドなど)
−命令の実行に必要な通常の情報である。 ・条件性レベル(LC)502−キャッシュ内のオペラン
ド記憶比較(OSC)制御機構によってOSCハザードの検出
を管理し、いつ記憶命令をメモリ階層に解放できるかを
決定するために使用される。 ・命令識別子(ID)802−Pセグメント内での命令の
順序番号であり、その命令によって送られるメッセージ
の一部として使用される。 ・Sリスト223−入力に関するこの命令の他の命令に
対する依存性を表すリストである。 ・Dリスト224−Z命令とこのZ命令の実行の結果を必
要とする処理要素のリストである。 ・Zセグメント終了ビット227−このZセグメント内の
この処理要素用の最後の命令であることを指定するビッ
トである。
【0047】各処理要素用の連続するZ命令はその処理
要素に関連するZキャッシュ・アレイ220の連続する
セル225を占め、そのセルにアクセスするにはアレイ
・アドレス増分機構226が使用される。
要素に関連するZキャッシュ・アレイ220の連続する
セル225を占め、そのセルにアクセスするにはアレイ
・アドレス増分機構226が使用される。
【0048】Iフェッチ動作の一環として、Zキャッシュ
・セル内のすべての情報が後述の方式でデコーダと処理
要素の他の関連部分に転送される。
・セル内のすべての情報が後述の方式でデコーダと処理
要素の他の関連部分に転送される。
【0049】EモードでのZセグメントの生成はZキャッ
シュのサイズと構造の制約条件の影響を受けやすい。Z
キャッシュのサイズと構造は原理的には任意であるが、
実施態様においては制限される。Zキャッシュの容量を
超えるZセグメントは生成不可能である。その理由は、E
-modeは終了され、最後の条件性レベル一杯にまでトリ
ミングされるためである。
シュのサイズと構造の制約条件の影響を受けやすい。Z
キャッシュのサイズと構造は原理的には任意であるが、
実施態様においては制限される。Zキャッシュの容量を
超えるZセグメントは生成不可能である。その理由は、E
-modeは終了され、最後の条件性レベル一杯にまでトリ
ミングされるためである。
【0050】命令のメモリ階層アドレスとZキャッシュ
内でのその位置の間には何の関係も存在しないので、一
部のZ命令はメモリ階層アドレスが必要な時に、その情
報を含む命令フォーマット拡張子240(図5)を結合
されていなければならない。分岐命令の場合にこの拡張
子が必要である。各条件付き分岐命令は、Zコードを生
成するのに使用された推定アドレス241とその分岐の
後に続く次の順次命令を指すプログラム・カウンタ(P
C)の値であるフォールスルー・アドレス242を有す
る。
内でのその位置の間には何の関係も存在しないので、一
部のZ命令はメモリ階層アドレスが必要な時に、その情
報を含む命令フォーマット拡張子240(図5)を結合
されていなければならない。分岐命令の場合にこの拡張
子が必要である。各条件付き分岐命令は、Zコードを生
成するのに使用された推定アドレス241とその分岐の
後に続く次の順次命令を指すプログラム・カウンタ(P
C)の値であるフォールスルー・アドレス242を有す
る。
【0051】・分岐目標が推定アドレス241と同じ場
合には何の処置もとる必要はない。 ・その分岐が採用されないため、分岐目標が推定アドレ
ス241と異なる場合には、フォールスルー・アドレス
242に関して分岐誤推測(BWG)処置がとられる。 ・その分岐が推定アドレス241以外の目標に向かう場
合は、その分岐命令のアドレス生成の時点で、処理要素
によってそのアドレスが生成され、その目標に関してBW
G処置をとることができる。
合には何の処置もとる必要はない。 ・その分岐が採用されないため、分岐目標が推定アドレ
ス241と異なる場合には、フォールスルー・アドレス
242に関して分岐誤推測(BWG)処置がとられる。 ・その分岐が推定アドレス241以外の目標に向かう場
合は、その分岐命令のアドレス生成の時点で、処理要素
によってそのアドレスが生成され、その目標に関してBW
G処置をとることができる。
【0052】無条件分岐では推定アドレス241だけが
使用され、プログラム・カウンタ(PC)の値がフォール
スルー・アドレス242を占めることができる。このPC
の値はBAL(R)(Branch and Link (Register))などその
命令用のPC依存値が必要な時にレジスタ値をセットする
のに使用できる。
使用され、プログラム・カウンタ(PC)の値がフォール
スルー・アドレス242を占めることができる。このPC
の値はBAL(R)(Branch and Link (Register))などその
命令用のPC依存値が必要な時にレジスタ値をセットする
のに使用できる。
【0053】Zキャッシュ・ディレクトリの内容は処理
要素によってすべて同じであるが、Zキャッシュ・アレ
イ内のZ命令セルの内容は処理要素が異なると変わって
くる。この複数の同一Zキャッシュ・ディレクトリの保
持は、処理要素内でより大きな自律性を生み出すこと
と、新しいZセグメントを開始する際に処理要素にメッ
セージを送出することの間のトレード・オフを表す。
要素によってすべて同じであるが、Zキャッシュ・アレ
イ内のZ命令セルの内容は処理要素が異なると変わって
くる。この複数の同一Zキャッシュ・ディレクトリの保
持は、処理要素内でより大きな自律性を生み出すこと
と、新しいZセグメントを開始する際に処理要素にメッ
セージを送出することの間のトレード・オフを表す。
【0054】Eモードの開始時に、処理要素から書込み
バス230を介して供給される情報を使用してすべての
Zキャッシュ内で共通のディレクトリ・エントリが作成
される。Zキャッシュ・ディレクトリ210内の全エン
トリが有効な場合、LRUアルゴリズムを使用して(たと
えばエージ・タグ218を使用したディレクトリ・エン
トリの標準的なエージ・タグの日付記入を用いて)、置
換すべきZセグメントを選択する。
バス230を介して供給される情報を使用してすべての
Zキャッシュ内で共通のディレクトリ・エントリが作成
される。Zキャッシュ・ディレクトリ210内の全エン
トリが有効な場合、LRUアルゴリズムを使用して(たと
えばエージ・タグ218を使用したディレクトリ・エン
トリの標準的なエージ・タグの日付記入を用いて)、置
換すべきZセグメントを選択する。
【0055】各処理要素内のZセグメント用のセル22
5はバス228を用いて更新される。このバスはアレイ
・アドレス増分機構226と共に動作し、その結果、あ
る処理要素に割り当てられた命令が原命令ストリーム内
で連続していない場合であっても連続したセル内にZ命
令として記憶される。
5はバス228を用いて更新される。このバスはアレイ
・アドレス増分機構226と共に動作し、その結果、あ
る処理要素に割り当てられた命令が原命令ストリーム内
で連続していない場合であっても連続したセル内にZ命
令として記憶される。
【0056】Eモードの間、Z命令フォーマット用の情報
はDリストを除き、命令の解読時に利用可能なである。
セルはその処理要素によって維持されるDリスト・レジ
スタ118からの並列書込み動作を使用して、セルのブ
ロードサイド・ロードとして、バス229を介してDリ
スト情報で更新される。そのZセグメント用に占められ
た各セル内のDリスト224のフィールドへの部分ブロ
ードサイド書込みが行われる。この動作はZコード生成
の終了時に行われる。
はDリストを除き、命令の解読時に利用可能なである。
セルはその処理要素によって維持されるDリスト・レジ
スタ118からの並列書込み動作を使用して、セルのブ
ロードサイド・ロードとして、バス229を介してDリ
スト情報で更新される。そのZセグメント用に占められ
た各セル内のDリスト224のフィールドへの部分ブロ
ードサイド書込みが行われる。この動作はZコード生成
の終了時に行われる。
【0057】第3節 個別レジスタ・ファイル MSISのレジスタ・ファイル構造を図9に示す。各処理要
素(PE)はそれ自体の専用のレジスタ・ファイル300
を有する。n個の処理要素とk個の従来型レジスタを有す
るシステムではレジスタ・ファイル300はk×nの行列
になる。各PEはRの専用コピーを有する。処理要素pにつ
いてレジスタ・ファイル300の使用法は次の通りであ
る。 ・要素R [ r,p ]はその従来型レジスタrと全く同様であ
る。すなわち、PE pに関してR [ r,p ]と呼ばれるセル
はPE pによって実行され、レジスタrを必要とするすべ
ての命令のソースとして働き、レジスタrを修正するPE
p上のすべての命令のシンクとして働く。 ・要素R [ r,p ](ただしqはpと等しくない)はプロセ
ッサqがレジスタrに記憶した内容に関するqからのメッ
セージがあればそれを保持する。 ・各行R [ r,* ]はrのレジスタ内容がその行内にあるの
か、それとも別のソースから初期設定しなければならな
いのかを示す有効ビット310と関連する。 ・各要素R[ r,j ]はそれ自体が有効な時、レジスタ内容
とそれらの内容を記憶した命令のIDを保持する。
素(PE)はそれ自体の専用のレジスタ・ファイル300
を有する。n個の処理要素とk個の従来型レジスタを有す
るシステムではレジスタ・ファイル300はk×nの行列
になる。各PEはRの専用コピーを有する。処理要素pにつ
いてレジスタ・ファイル300の使用法は次の通りであ
る。 ・要素R [ r,p ]はその従来型レジスタrと全く同様であ
る。すなわち、PE pに関してR [ r,p ]と呼ばれるセル
はPE pによって実行され、レジスタrを必要とするすべ
ての命令のソースとして働き、レジスタrを修正するPE
p上のすべての命令のシンクとして働く。 ・要素R [ r,p ](ただしqはpと等しくない)はプロセ
ッサqがレジスタrに記憶した内容に関するqからのメッ
セージがあればそれを保持する。 ・各行R [ r,* ]はrのレジスタ内容がその行内にあるの
か、それとも別のソースから初期設定しなければならな
いのかを示す有効ビット310と関連する。 ・各要素R[ r,j ]はそれ自体が有効な時、レジスタ内容
とそれらの内容を記憶した命令のIDを保持する。
【0058】レジスタ・ファイル300内には、2つの
有効の概念があり、これらは異なる場所に維持されるビ
ットに関連する。PEが遷移の後に初期設定され、初期値
をZZT RFILE650(図13ないし図18)から引き出
す必要がある場合には、行R [r,* ]上のすべての項目が
無効であることを示す有効ビット310が使用される。
もう1つの有効状況は各R [ r,j ]に関連するもので、
セルR [ r,j ]の内容の一部である。これはセル有効ビ
ット320と称し、セルR [ r,j ]の内容が有効である
ことを示す。
有効の概念があり、これらは異なる場所に維持されるビ
ットに関連する。PEが遷移の後に初期設定され、初期値
をZZT RFILE650(図13ないし図18)から引き出
す必要がある場合には、行R [r,* ]上のすべての項目が
無効であることを示す有効ビット310が使用される。
もう1つの有効状況は各R [ r,j ]に関連するもので、
セルR [ r,j ]の内容の一部である。これはセル有効ビ
ット320と称し、セルR [ r,j ]の内容が有効である
ことを示す。
【0059】他の各処理要素用にレジスタ・ファイル3
00内に各レジスタごとに1つの位置を保持することの
目的はデッドロック回避機構を単純化するためだけでは
なく、このような構造がEモードの間にPEが完全に一般
的かつ全体的に非同期にレジスタ内容を管理できる最小
サイズの構造であるからである。もし代わりにレジスタ
・リストを使用したとしたら非同期システムでは、ある
処理要素が遠い将来に必要になるメッセージの送出によ
って所与のレジスタ用のレジスタ・リストを満杯にし、
緊急に必要なメッセージがそのリスト上に記入できなく
なった時に、デッドロックが発生する可能性がある。
00内に各レジスタごとに1つの位置を保持することの
目的はデッドロック回避機構を単純化するためだけでは
なく、このような構造がEモードの間にPEが完全に一般
的かつ全体的に非同期にレジスタ内容を管理できる最小
サイズの構造であるからである。もし代わりにレジスタ
・リストを使用したとしたら非同期システムでは、ある
処理要素が遠い将来に必要になるメッセージの送出によ
って所与のレジスタ用のレジスタ・リストを満杯にし、
緊急に必要なメッセージがそのリスト上に記入できなく
なった時に、デッドロックが発生する可能性がある。
【0060】レジスタ・ファイル300の内容のフォー
マットと、レジスタ・ファイル300に関するPEの動作
については、第8節で詳細に説明する。レジスタ・ファ
イル300に関してPEが行う基本動作はVALIDATE、RECO
RD、SENDおよびRECEIVEである。これらについては第8
節詳しく説明する。
マットと、レジスタ・ファイル300に関するPEの動作
については、第8節で詳細に説明する。レジスタ・ファ
イル300に関してPEが行う基本動作はVALIDATE、RECO
RD、SENDおよびRECEIVEである。これらについては第8
節詳しく説明する。
【0061】メッセージ伝達システム(MHS)400は
メッセージを受け取り、そのメッセージによって指定さ
れるレジスタ・ファイル300内のセルのリストにその
メッセージを入れる。MHS内では、これらのメッセージ
がそれを送出したPEに関連するリスト位置に記憶され
る。受取側のPE内にレジスタ・ファイル中に他のPEから
の未解決の将来の保留レジスタ値が複数存在することは
絶対にない。メッセージをレジスタ・ファイルの適当な
セルに挿入する方法はMHS400から書込みバス350
を使用することによる。第8節で詳述するVALIDATE、RE
CORD、SENDおよびRECEIVEとして指定された動作はレジ
スタrの適当な値を行R [ r,* ]から引き出すこと、およ
びPE pに関して、そのZ命令のSリストによって指示され
る時、この値をセルR [ r,p ]中に移動することであ
る。
メッセージを受け取り、そのメッセージによって指定さ
れるレジスタ・ファイル300内のセルのリストにその
メッセージを入れる。MHS内では、これらのメッセージ
がそれを送出したPEに関連するリスト位置に記憶され
る。受取側のPE内にレジスタ・ファイル中に他のPEから
の未解決の将来の保留レジスタ値が複数存在することは
絶対にない。メッセージをレジスタ・ファイルの適当な
セルに挿入する方法はMHS400から書込みバス350
を使用することによる。第8節で詳述するVALIDATE、RE
CORD、SENDおよびRECEIVEとして指定された動作はレジ
スタrの適当な値を行R [ r,* ]から引き出すこと、およ
びPE pに関して、そのZ命令のSリストによって指示され
る時、この値をセルR [ r,p ]中に移動することであ
る。
【0062】PE pに関してq≠pのR [ r,q ]を使用する
と、エコー・メッセージがバス360を介してMHSに送
られる。このエコー・メッセージを受け取った時のMHS
の処置については、第4節で説明する。要約すると、MH
Sはこのエコー・メッセージを受け取ると、レジスタ・
ファイル内の解放されたばかりのセルに対してMHSが有
する最も古い保留メッセージを送出できるようになる。
どの処理要素もそれに割り当てられた命令に関して概念
上の順序通りに命令を実行するので、すなわち所与の処
理要素に割り当てられた命令のシーケンスは原単一命令
ストリームのサブシーケンスであるので、セルに対する
解放されたばかりの最も古い保留メッセージは受取側の
処理要素が必要とするそのセルに関連する次のメッセー
ジである。新しいメッセージのエコーから受取りまでの
間、このセルはセル有効ビット320によって無効とマ
ークされる。
と、エコー・メッセージがバス360を介してMHSに送
られる。このエコー・メッセージを受け取った時のMHS
の処置については、第4節で説明する。要約すると、MH
Sはこのエコー・メッセージを受け取ると、レジスタ・
ファイル内の解放されたばかりのセルに対してMHSが有
する最も古い保留メッセージを送出できるようになる。
どの処理要素もそれに割り当てられた命令に関して概念
上の順序通りに命令を実行するので、すなわち所与の処
理要素に割り当てられた命令のシーケンスは原単一命令
ストリームのサブシーケンスであるので、セルに対する
解放されたばかりの最も古い保留メッセージは受取側の
処理要素が必要とするそのセルに関連する次のメッセー
ジである。新しいメッセージのエコーから受取りまでの
間、このセルはセル有効ビット320によって無効とマ
ークされる。
【0063】他の処理要素からレジスタ・ファイルに記
憶されたメッセージのもう1つの特徴は分岐誤推測が発
生しない限り、それらがすべて使用されることである。
メッセージ処理プリミティブ(すなわちVALIDATE、RECO
RD、SEND、RECEIVE)は必要のないメッセージが送られ
ないことを保証し、したがってMSISの無デッドロック動
作が保証される。
憶されたメッセージのもう1つの特徴は分岐誤推測が発
生しない限り、それらがすべて使用されることである。
メッセージ処理プリミティブ(すなわちVALIDATE、RECO
RD、SEND、RECEIVE)は必要のないメッセージが送られ
ないことを保証し、したがってMSISの無デッドロック動
作が保証される。
【0064】第4節 処理要素間でのメッセージのパス MHS400の構造要素を図7に示す。MHSのバス動作は次
のように指定されている。 ・バス110は各処理要素からMHS(図1)へのメッセ
ージ送出に使用される。 ・バス350はMHSから受取側処理要素(図6)のレジ
スタ・ファイルへのメッセージ送出に使用される。 ・バス360は解放されたセル用の保留メッセージを受
取側に転送できるようにするため、メッセージのエコー
をMHSに送り返すのに使用される。
のように指定されている。 ・バス110は各処理要素からMHS(図1)へのメッセ
ージ送出に使用される。 ・バス350はMHSから受取側処理要素(図6)のレジ
スタ・ファイルへのメッセージ送出に使用される。 ・バス360は解放されたセル用の保留メッセージを受
取側に転送できるようにするため、メッセージのエコー
をMHSに送り返すのに使用される。
【0065】このメッセージのフォーマットについて
は、第8節でメッセージ処理プリミティブ、VALIDATE、
RECORD、SENDおよびRECEIVEと共に論ずる。
は、第8節でメッセージ処理プリミティブ、VALIDATE、
RECORD、SENDおよびRECEIVEと共に論ずる。
【0066】MHSは、即座に受取側に送ることのできな
いメッセージを保留させるための内部待ち行列410を
備えていなければならない。この待ち行列のサイズはZ
セグメントのサイズに関係しており、したがって、この
待ち行列のサイズはZモード内で送られるメッセージの
総数よりも大きくなっている。Eモードでは、送らなけ
ればならないメッセージの総数を監視し、メッセージの
総数が待ち行列のサイズを超える可能性のある時は、Z
セグメントを終了させる。
いメッセージを保留させるための内部待ち行列410を
備えていなければならない。この待ち行列のサイズはZ
セグメントのサイズに関係しており、したがって、この
待ち行列のサイズはZモード内で送られるメッセージの
総数よりも大きくなっている。Eモードでは、送らなけ
ればならないメッセージの総数を監視し、メッセージの
総数が待ち行列のサイズを超える可能性のある時は、Z
セグメントを終了させる。
【0067】また、MHSは図8に詳細に示す利用可能な
レジスタ・ファイル・スロット・テーブル(ARFST)4
20を有する。ARFST420は(a,b)で表記される2ビ
ット・エントリ425のアレイを受取側の各処理要素ご
とに1つずつ記録するテーブルである。所与の受取側処
理要素用のARFSTの諸要素は、行がレジスタ・ファイル
名を指定し、列が送出側の処理要素名を識別する行列に
対応する。(a,b)として可能な値は次の通りである。 ・(0,0) 1スロットが利用可能なであり、そのスロッ
トに対する保留中のメッセージがないことを示す。 ・(1,0) そのスロットが占有されており、そのスロッ
トに対する保留中のメッセージがないことを示す。 ・(1,1) そのスロットが占有されており、そのスロッ
トに対する少なくとも1つのメッセージが保留されてい
ることを示す。
レジスタ・ファイル・スロット・テーブル(ARFST)4
20を有する。ARFST420は(a,b)で表記される2ビ
ット・エントリ425のアレイを受取側の各処理要素ご
とに1つずつ記録するテーブルである。所与の受取側処
理要素用のARFSTの諸要素は、行がレジスタ・ファイル
名を指定し、列が送出側の処理要素名を識別する行列に
対応する。(a,b)として可能な値は次の通りである。 ・(0,0) 1スロットが利用可能なであり、そのスロッ
トに対する保留中のメッセージがないことを示す。 ・(1,0) そのスロットが占有されており、そのスロッ
トに対する保留中のメッセージがないことを示す。 ・(1,1) そのスロットが占有されており、そのスロッ
トに対する少なくとも1つのメッセージが保留されてい
ることを示す。
【0068】最初に、あるZセグメントの完了または分
岐の誤った推測(BWG)の後に、内部待ち行列410が
クリアされ、ARFST420がリセットされてすべての受
取側処理要素用のすべてのエントリが(0,0)になる。
各メッセージが処理される際に、エントリが修正され
る。エコー・メッセージの受取り時に、エントリが修正
される。aが1に等しいためにあるメッセージが待ち行
列に登録される場合、そのエントリが適当に修正され
る。待ち行列ビットbの目的は、解放されたばかりのス
ロットに対して待ち行列に登録されているメッセージが
ない場合に、待ち行列探索機構(QSM)430による不
必要な待ち行列探索を回避することである。QSM430
はそのスロットに対する複数のメッセージが保留されて
いるか否かを判断するために、探索を継続しなければな
らない。1つのメッセージだけが存在する場合には、b
を0にセットしなければならず、そうでない場合は、b
は1のままである。エコーに続いて待ち行列に登録され
たメッセージが送られると、必ずaが1にセットされ
る。
岐の誤った推測(BWG)の後に、内部待ち行列410が
クリアされ、ARFST420がリセットされてすべての受
取側処理要素用のすべてのエントリが(0,0)になる。
各メッセージが処理される際に、エントリが修正され
る。エコー・メッセージの受取り時に、エントリが修正
される。aが1に等しいためにあるメッセージが待ち行
列に登録される場合、そのエントリが適当に修正され
る。待ち行列ビットbの目的は、解放されたばかりのス
ロットに対して待ち行列に登録されているメッセージが
ない場合に、待ち行列探索機構(QSM)430による不
必要な待ち行列探索を回避することである。QSM430
はそのスロットに対する複数のメッセージが保留されて
いるか否かを判断するために、探索を継続しなければな
らない。1つのメッセージだけが存在する場合には、b
を0にセットしなければならず、そうでない場合は、b
は1のままである。エコーに続いて待ち行列に登録され
たメッセージが送られると、必ずaが1にセットされ
る。
【0069】メッセージはまた処理要素からBWG回復ユ
ニットであるZZT600に送られる。このようなメッセ
ージはバス110を使用してMHSに達し、バス460を
使用してZZTに達する。このメッセージは送出側命令の
条件性レベル(LC)502(図2ないし図5)とレジス
タ名を含み、これを用いて、そのレジスタの値をZZT内
の適当な位置に記憶することができる。これは各LCでの
レジスタ値に対する最後の変更をZZT内で維持するのに
都合がよい。というのは、各LCでレジスタの値を最後に
変更した命令のDリストにZZTが含まれるからである。Z
モードでDリストが既に利用可能になっている時には、Z
ZTフレーム640(図13ないし図18)へのレジスタ
値の送出は、上述のように(すなわちバス110を介し
て)PEからMHSへと行われ、バス460を介してMHSから
ZZTフレームへと行われる。
ニットであるZZT600に送られる。このようなメッセ
ージはバス110を使用してMHSに達し、バス460を
使用してZZTに達する。このメッセージは送出側命令の
条件性レベル(LC)502(図2ないし図5)とレジス
タ名を含み、これを用いて、そのレジスタの値をZZT内
の適当な位置に記憶することができる。これは各LCでの
レジスタ値に対する最後の変更をZZT内で維持するのに
都合がよい。というのは、各LCでレジスタの値を最後に
変更した命令のDリストにZZTが含まれるからである。Z
モードでDリストが既に利用可能になっている時には、Z
ZTフレーム640(図13ないし図18)へのレジスタ
値の送出は、上述のように(すなわちバス110を介し
て)PEからMHSへと行われ、バス460を介してMHSから
ZZTフレームへと行われる。
【0070】Eモードでは、将来の命令が別のPE実行の
結果を必要とするという判断に基づいてDリストが形成
され、各PEが分岐を解読し、そのPEが概念上の順序でそ
のレジスタを修正した最後のPEであると判断する時に、
ZZTフレームへの入力が決定される。このEモードでは、
メッセージはそのメッセージをZZTフレームへのSTOREと
して区別するビットと共に、バス135を介してメモリ
階層に送出される。
結果を必要とするという判断に基づいてDリストが形成
され、各PEが分岐を解読し、そのPEが概念上の順序でそ
のレジスタを修正した最後のPEであると判断する時に、
ZZTフレームへの入力が決定される。このEモードでは、
メッセージはそのメッセージをZZTフレームへのSTOREと
して区別するビットと共に、バス135を介してメモリ
階層に送出される。
【0071】Eモードでは、ある命令が所与のLCである
レジスタを修正する概念上最後の命令である場合に、現
LC用のZZTフレーム内のセルに、バス135を介してメ
ッセージが送られる。このメッセージは以下の情報を搬
送する。 ・FETCHまたはSTOREを示すフェッチ/記憶ビット671
(図18)と、ZZTアクセス・ビット672(図1
8)。これら2つのビットを併せて使用すると、メモリ
階層140のインターフェースがZZT RFILEからのFETCH
をZZTフレーム内のSTOREまたはメモリ階層140のイン
ターフェースへの他のFETCHおよびSTOREから区別できる
ようになる。 ・レジスタ名673(図18)。 ・条件性レベル(LC)674(図18)。 その結果、STOREのZZTアクセスではZZTフレーム・エン
トリは、次のように修正される。修正されたレジスタに
ついて、LC674用のZZTセル641内のレジスタ変更
ビット644(図17)とレジスタ名673がオンにな
り、新しいレジスタ内容が対応するレジスタ値645フ
ィールド(図17)に書き込まれる。
レジスタを修正する概念上最後の命令である場合に、現
LC用のZZTフレーム内のセルに、バス135を介してメ
ッセージが送られる。このメッセージは以下の情報を搬
送する。 ・FETCHまたはSTOREを示すフェッチ/記憶ビット671
(図18)と、ZZTアクセス・ビット672(図1
8)。これら2つのビットを併せて使用すると、メモリ
階層140のインターフェースがZZT RFILEからのFETCH
をZZTフレーム内のSTOREまたはメモリ階層140のイン
ターフェースへの他のFETCHおよびSTOREから区別できる
ようになる。 ・レジスタ名673(図18)。 ・条件性レベル(LC)674(図18)。 その結果、STOREのZZTアクセスではZZTフレーム・エン
トリは、次のように修正される。修正されたレジスタに
ついて、LC674用のZZTセル641内のレジスタ変更
ビット644(図17)とレジスタ名673がオンにな
り、新しいレジスタ内容が対応するレジスタ値645フ
ィールド(図17)に書き込まれる。
【0072】MHS内のこの配置全体は、処理要素が必ず
保留メッセージを受け取れるようにし、送出側および受
取側に関して非同期に動作できるようにし、デッドロッ
クを回避できるようにするためのものである。各処理要
素はそれに割り当てられた命令または概念上後にある命
令を処理する前に、必要なメッセージを待つので、待っ
ているメッセージが送れない場合にはデッドロックが発
生する。本明細書に開示される設計によれば、必要とさ
れるメッセージが絶対にブロックされないので、デッド
ロック状態は発生しない。
保留メッセージを受け取れるようにし、送出側および受
取側に関して非同期に動作できるようにし、デッドロッ
クを回避できるようにするためのものである。各処理要
素はそれに割り当てられた命令または概念上後にある命
令を処理する前に、必要なメッセージを待つので、待っ
ているメッセージが送れない場合にはデッドロックが発
生する。本明細書に開示される設計によれば、必要とさ
れるメッセージが絶対にブロックされないので、デッド
ロック状態は発生しない。
【0073】第5節 OSCとPSCの監視 オペランド記憶比較制御およびプログラム記憶比較制御
(OSC/PSC制御)500の構造要素を、図9ないし図1
2に示す。各FETCHおよびSTOREがメモリ階層インターフ
ェース145に提示される際に、OSC/PSC制御500はO
SCとPSCを監視し、そのアクセスと相互作用する。した
がって、OSC/PSC制御500はメモリ階層インターフェ
ース145の一部として配置することができ、その付随
物と見なすことができる。これらOSC/PSC制御500の
それぞれについて次に個別に説明する。
(OSC/PSC制御)500の構造要素を、図9ないし図1
2に示す。各FETCHおよびSTOREがメモリ階層インターフ
ェース145に提示される際に、OSC/PSC制御500はO
SCとPSCを監視し、そのアクセスと相互作用する。した
がって、OSC/PSC制御500はメモリ階層インターフェ
ース145の一部として配置することができ、その付随
物と見なすことができる。これらOSC/PSC制御500の
それぞれについて次に個別に説明する。
【0074】オペランド記憶比較(OSC) プロセッサのアーキテクチャでは、通常、あるメモリ位
置からのFETCHに概念上の順序でそのFETCHに先行する最
新のSTOREによってその位置に記憶された値が見えるこ
とが必要である。これをOSCと称し、この要件の侵害はO
SCハザードと呼ばれる。MSISではFETCHとSTOREを異なる
処理要素上で非同期に実行することができるので、これ
らを監視して可能なOSCハザードが発生したか否かを判
断しなければならない。
置からのFETCHに概念上の順序でそのFETCHに先行する最
新のSTOREによってその位置に記憶された値が見えるこ
とが必要である。これをOSCと称し、この要件の侵害はO
SCハザードと呼ばれる。MSISではFETCHとSTOREを異なる
処理要素上で非同期に実行することができるので、これ
らを監視して可能なOSCハザードが発生したか否かを判
断しなければならない。
【0075】この第5節の残りの部分では、用語FETCH
はオペランド・フェッチを指すものとし、命令フェッチ
を考慮する時は必ず具体的に命令フェッチと記述する。
はオペランド・フェッチを指すものとし、命令フェッチ
を考慮する時は必ず具体的に命令フェッチと記述する。
【0076】OSCハザードは対応するFETCH動作とSTORE
動作が同じ処理要素上で実行される場合、処理要素内OS
Cと呼ばれる。命令は1つの処理要素内では概念上の順
序通りに維持されるので、処理要素内OSCの監視は標準
的なものである。したがって、これについてはこれ以上
議論せず、処理要素間ハザードに議論を集中する。
動作が同じ処理要素上で実行される場合、処理要素内OS
Cと呼ばれる。命令は1つの処理要素内では概念上の順
序通りに維持されるので、処理要素内OSCの監視は標準
的なものである。したがって、これについてはこれ以上
議論せず、処理要素間ハザードに議論を集中する。
【0077】OSCハザードは対応するFETCH動作とSTORE
動作が異なる処理要素上で実行される場合、処理要素間
OSCと呼ばれる。このようなハザードの監視は下記の2
つの命令の属性を使用して行われる。 1.条件性レベル(LC)502(図11)。この命令の
実行の前にPセグメント内で実行された分岐命令の数で
ある。あるPセグメントの最初の命令のLCは0である。P
セグメント内で分岐が前にない命令のLCはその前の命令
のLCと同一である。Pセグメント内で分岐が前にある命
令のLCは分岐命令の前の命令のLCより1つ大きい。した
がって、ある分岐グループ内のその分岐グループの終端
の分岐を含むすべての命令は同じLCを有する。 2.命令識別子(ID)802(図11)。その命令のP
セグメント内での順序番号である。
動作が異なる処理要素上で実行される場合、処理要素間
OSCと呼ばれる。このようなハザードの監視は下記の2
つの命令の属性を使用して行われる。 1.条件性レベル(LC)502(図11)。この命令の
実行の前にPセグメント内で実行された分岐命令の数で
ある。あるPセグメントの最初の命令のLCは0である。P
セグメント内で分岐が前にない命令のLCはその前の命令
のLCと同一である。Pセグメント内で分岐が前にある命
令のLCは分岐命令の前の命令のLCより1つ大きい。した
がって、ある分岐グループ内のその分岐グループの終端
の分岐を含むすべての命令は同じLCを有する。 2.命令識別子(ID)802(図11)。その命令のP
セグメント内での順序番号である。
【0078】Eモードでは、すべての処理要素にすべて
の命令が順序通りに見えるので、LCとIDはどちらも当然
既知である。Zコードの生成時にLCとIDが各Z命令と関連
付けられ、したがって、この情報はZモードでも同様に
利用可能なである。
の命令が順序通りに見えるので、LCとIDはどちらも当然
既知である。Zコードの生成時にLCとIDが各Z命令と関連
付けられ、したがって、この情報はZモードでも同様に
利用可能なである。
【0079】OSC制御は比較機構514を伴うフェッチ
・テーブル510(図9)と、比較機構526を伴う記
憶テーブル520の2つのテーブルを維持する。
・テーブル510(図9)と、比較機構526を伴う記
憶テーブル520の2つのテーブルを維持する。
【0080】図10に示すフェッチ・テーブル・エント
リ511は(Address,LC,ID)の形式を有する。Address
512はこのFETCHのフル・アドレスと、バイト単位の
そのエクステントである。このFETCHを生成したFETCH命
令のLC502とID802もフェッチ・テーブル・エント
リ511に含まれる。複数のダブル・ワード(DW)にま
たがるFETCHはこのフェッチ・テーブル内に複数のエン
トリを生成する。
リ511は(Address,LC,ID)の形式を有する。Address
512はこのFETCHのフル・アドレスと、バイト単位の
そのエクステントである。このFETCHを生成したFETCH命
令のLC502とID802もフェッチ・テーブル・エント
リ511に含まれる。複数のダブル・ワード(DW)にま
たがるFETCHはこのフェッチ・テーブル内に複数のエン
トリを生成する。
【0081】図11に示す記憶テーブル・エントリ52
1は(Address,LC,ID,Data)の形式を有する。Address5
22はこのSTOREのフル・アドレスと、バイト単位のそ
のエクステントである。LC502とID802はSTORE命
令から導出される。Data524はSTORE命令の一部とし
てメモリ階層に記憶されるフルDWである。Data524は
STOREの結果をメモリ階層から取り出したDW内の他のバ
イトと組み合わせることによって得られる。STOREがDW
境界をまたぐ場合は、影響を受けるDWごとに1つずつ2
つのエントリが記憶テーブル内に生成される。複数のDW
を生成する記憶命令も同様に扱われる。
1は(Address,LC,ID,Data)の形式を有する。Address5
22はこのSTOREのフル・アドレスと、バイト単位のそ
のエクステントである。LC502とID802はSTORE命
令から導出される。Data524はSTORE命令の一部とし
てメモリ階層に記憶されるフルDWである。Data524は
STOREの結果をメモリ階層から取り出したDW内の他のバ
イトと組み合わせることによって得られる。STOREがDW
境界をまたぐ場合は、影響を受けるDWごとに1つずつ2
つのエントリが記憶テーブル内に生成される。複数のDW
を生成する記憶命令も同様に扱われる。
【0082】FETCHは次のように実行される。 1.Addressフィールドとの突合せによって、記憶テー
ブルからそのFETCH命令と同じAddressを有し、そのFETC
H命令のIDよりも小さいIDを有するエントリが選択され
る。 2.一致があった場合、そのFETCHは要求元の処理要素
にそのFETCHのIDより小さいIDを有する一致した記憶テ
ーブル・エントリのうちで最大のIDを有するエントリか
らData524を返す。 3.より小さいIDを有するどのSTOREエントリとも一致
しない場合は、そのFETCHの値をメモリ階層140から
獲得する。 4.フェッチ・テーブル内にこのFETCH命令用のエント
リが作成される。処理要素のFETCH/STORE LCテーブル5
44は変更がある場合は更新される。
ブルからそのFETCH命令と同じAddressを有し、そのFETC
H命令のIDよりも小さいIDを有するエントリが選択され
る。 2.一致があった場合、そのFETCHは要求元の処理要素
にそのFETCHのIDより小さいIDを有する一致した記憶テ
ーブル・エントリのうちで最大のIDを有するエントリか
らData524を返す。 3.より小さいIDを有するどのSTOREエントリとも一致
しない場合は、そのFETCHの値をメモリ階層140から
獲得する。 4.フェッチ・テーブル内にこのFETCH命令用のエント
リが作成される。処理要素のFETCH/STORE LCテーブル5
44は変更がある場合は更新される。
【0083】STOREは次のように実行される。 1.Addressフィールドとの突合わせによって、フェッ
チ・テーブルからそのSTORE命令と同一のAddressを有
し、そのSTORE命令のIDよりも小さいIDを有するエント
リが選択される。 2.上記のエントリが存在する場合にはOSCハザードが
発生する。 3.記憶テーブル内にこのSTORE命令用のエントリが作
成される。処理要素のFETCH/STORE LCテーブル544は
変更がある場合は更新される。
チ・テーブルからそのSTORE命令と同一のAddressを有
し、そのSTORE命令のIDよりも小さいIDを有するエント
リが選択される。 2.上記のエントリが存在する場合にはOSCハザードが
発生する。 3.記憶テーブル内にこのSTORE命令用のエントリが作
成される。処理要素のFETCH/STORE LCテーブル544は
変更がある場合は更新される。
【0084】上記の2つのテーブル内のエントリは図1
2に詳細に示すプルーニング・モニタ542を使ってプ
ルーニングされる。プルーニング・モニタ542は次の
3つの量を維持する。 1.全体証明済み条件性レベル(OCLC)541。分岐解
決機構はZコード内の各分岐命令の解決をバス890を
介してプルーニング・モニタに通信する。所与のどの時
刻でも、OCLCは最大のLCであり、したがって、より低い
レベルの分岐はすべて正しく解決されている。OCLCより
1つ高いLCの分岐がBWGとして解決される時は、その分
岐のLCでの記憶命令がプルーニングされ、OSC制御がク
リアされる。 2.全体オペランド条件性レベル(OOLC)543。メモ
リFETCH命令またはメモリSTORE命令が実行される時は、
そのLCを使ってFETCH/STORE LCテーブル544のその処
理要素用のエントリが更新され、すべての処理要素にわ
たるこれらのエントリの最小値より1つ小さい値が、OO
LC543になる。ある処理要素がZセグメント終了ビッ
ト227(図4)によって示されるそのZコードの最終
命令を実行する時は、その処理要素は擬似FETCHとしてZ
コード終了信号を送る。この信号の目的は、FETCH/STOR
E LCテーブル内のこの処理要素用のエントリの値を十分
に高い値にセットしてそのエントリが最小化に登場しな
いようにすることだけである。 3.全体条件性レベル(OLC)540。OLCはOOLCとOCLC
の最小値である。
2に詳細に示すプルーニング・モニタ542を使ってプ
ルーニングされる。プルーニング・モニタ542は次の
3つの量を維持する。 1.全体証明済み条件性レベル(OCLC)541。分岐解
決機構はZコード内の各分岐命令の解決をバス890を
介してプルーニング・モニタに通信する。所与のどの時
刻でも、OCLCは最大のLCであり、したがって、より低い
レベルの分岐はすべて正しく解決されている。OCLCより
1つ高いLCの分岐がBWGとして解決される時は、その分
岐のLCでの記憶命令がプルーニングされ、OSC制御がク
リアされる。 2.全体オペランド条件性レベル(OOLC)543。メモ
リFETCH命令またはメモリSTORE命令が実行される時は、
そのLCを使ってFETCH/STORE LCテーブル544のその処
理要素用のエントリが更新され、すべての処理要素にわ
たるこれらのエントリの最小値より1つ小さい値が、OO
LC543になる。ある処理要素がZセグメント終了ビッ
ト227(図4)によって示されるそのZコードの最終
命令を実行する時は、その処理要素は擬似FETCHとしてZ
コード終了信号を送る。この信号の目的は、FETCH/STOR
E LCテーブル内のこの処理要素用のエントリの値を十分
に高い値にセットしてそのエントリが最小化に登場しな
いようにすることだけである。 3.全体条件性レベル(OLC)540。OLCはOOLCとOCLC
の最小値である。
【0085】その暗示する所は各処理要素がOLCより低
いレベルですべての命令を実行したことである。という
のは、あるプロセッサ内の命令が必ず概念上の順序通り
になっているからである。さらに、OLCより低いレベル
の分岐もすべて解決されている。したがって、OLCより
低いレベルのどのFETCH/STOREエントリもプルーニング
することができる。OLCが変化する時は、プルーニング
・モニタはバス545を介して下記の処置を講じる。 1.OLCより低いLCを有するすべてのエントリをフェッ
チ・テーブルから取り除く。 2.OLCより低いLCを有するすべてのエントリを記憶テ
ーブルから選択する。 3.選択されたどのエントリもPSC(後述)を発生しな
い場合は、上で選択されたエントリをそのIDの昇順で走
査し、各エントリを走査する際に、STOREをコミット
し、そのエントリを記憶テーブルから削除する。
いレベルですべての命令を実行したことである。という
のは、あるプロセッサ内の命令が必ず概念上の順序通り
になっているからである。さらに、OLCより低いレベル
の分岐もすべて解決されている。したがって、OLCより
低いレベルのどのFETCH/STOREエントリもプルーニング
することができる。OLCが変化する時は、プルーニング
・モニタはバス545を介して下記の処置を講じる。 1.OLCより低いLCを有するすべてのエントリをフェッ
チ・テーブルから取り除く。 2.OLCより低いLCを有するすべてのエントリを記憶テ
ーブルから選択する。 3.選択されたどのエントリもPSC(後述)を発生しな
い場合は、上で選択されたエントリをそのIDの昇順で走
査し、各エントリを走査する際に、STOREをコミット
し、そのエントリを記憶テーブルから削除する。
【0086】OLC540(図12)はバス593を用い
てZZTスキャナ660(図16)とOSC/PSC制御にそのZ
セグメントの最終LCであるLCFと、BWGの後に続く次のセ
グメントの新しいセグメント開始アドレスを知らせる役
割を有する。
てZZTスキャナ660(図16)とOSC/PSC制御にそのZ
セグメントの最終LCであるLCFと、BWGの後に続く次のセ
グメントの新しいセグメント開始アドレスを知らせる役
割を有する。
【0087】OSCハザードが発生した時は、そのハザー
ドを生成した命令の命令識別子がバス705(図19)
を介してデコーダ701に提示される。このハザードは
先行するLCでのBWGをシミュレートすることによってク
リアされる。条件性レベル0でハザードが発生すると、
そのプログラム・セグメント(Pセグメント)の始めに
対応する計算機状態が復元される。0以外の何らかのLC
でハザードが発生すると、先行するLCでの分岐命令に対
応する計算機状態が復元される。どちらの場合でも、信
号線532を用いてすべてのZキャッシュ内で現Zコード
が無効にされ、Eモードに入る。
ドを生成した命令の命令識別子がバス705(図19)
を介してデコーダ701に提示される。このハザードは
先行するLCでのBWGをシミュレートすることによってク
リアされる。条件性レベル0でハザードが発生すると、
そのプログラム・セグメント(Pセグメント)の始めに
対応する計算機状態が復元される。0以外の何らかのLC
でハザードが発生すると、先行するLCでの分岐命令に対
応する計算機状態が復元される。どちらの場合でも、信
号線532を用いてすべてのZキャッシュ内で現Zコード
が無効にされ、Eモードに入る。
【0088】ある条件性レベル内でのハザードを回避す
るために、その命令フォーマットから同一のメモリ位置
にアクセスすることが示されるFETCHおよびSTORE(たと
えばその両方のオペランドが同じ基底レジスタと指標レ
ジスタを使用し、同じ変位を有する場合)を同じ処理要
素上でスケジューリングしなければならない。
るために、その命令フォーマットから同一のメモリ位置
にアクセスすることが示されるFETCHおよびSTORE(たと
えばその両方のオペランドが同じ基底レジスタと指標レ
ジスタを使用し、同じ変位を有する場合)を同じ処理要
素上でスケジューリングしなければならない。
【0089】プログラム記憶比較(PSC) 一部のアーキテクチャでは「命令ストリームへの記憶」
を許すことによって、自己修正式プログラムをサポート
している。このようなアーキテクチャではMSISはZセグ
メントを生成するのに使用されたコードのIストリーム
への記憶が発生した可能性あるいは活動状態のZセグメ
ント自体がそれ自体のIストリームにSTOREを行う可能性
を監視することによって、生成されたZコードが後続の
再実行に有効であるか否かを判断する必要がある。この
ハザードをPSCと称する。
を許すことによって、自己修正式プログラムをサポート
している。このようなアーキテクチャではMSISはZセグ
メントを生成するのに使用されたコードのIストリーム
への記憶が発生した可能性あるいは活動状態のZセグメ
ント自体がそれ自体のIストリームにSTOREを行う可能性
を監視することによって、生成されたZコードが後続の
再実行に有効であるか否かを判断する必要がある。この
ハザードをPSCと称する。
【0090】メモリ階層はキャッシュと関連するディレ
クトリを有する。このディレクトリはそのキャッシュの
行がEモードでフェッチを行っている命令のソースとし
て使用されたことを示す命令参照ビットを含んでいる。
このような行がキャッシュを出る場合には、PSCが発生
し、信号線531(図2にも図示)を用いてすべてのZ
コードが無効にされる。
クトリを有する。このディレクトリはそのキャッシュの
行がEモードでフェッチを行っている命令のソースとし
て使用されたことを示す命令参照ビットを含んでいる。
このような行がキャッシュを出る場合には、PSCが発生
し、信号線531(図2にも図示)を用いてすべてのZ
コードが無効にされる。
【0091】記憶テーブル520のプルーニングに基づ
いてメモリ階層にSTOREをコミットする記憶コミット機
構530が命令参照ビットがオンにセットされた行への
STOREが行われると判断する場合、記憶コミット機構5
30はPSCハザードを発生させ、PSCハザードが発生した
LCでのすべての記憶のコミットを取り消す。前のLCの計
算機状態が復元され、このPSCハザードはOSCハザードと
同様にしてクリアされる。
いてメモリ階層にSTOREをコミットする記憶コミット機
構530が命令参照ビットがオンにセットされた行への
STOREが行われると判断する場合、記憶コミット機構5
30はPSCハザードを発生させ、PSCハザードが発生した
LCでのすべての記憶のコミットを取り消す。前のLCの計
算機状態が復元され、このPSCハザードはOSCハザードと
同様にしてクリアされる。
【0092】第6節 分岐の処理 パイプライン式アーキテクチャでは分岐判断を決定する
前に複数の命令を部分的に実行することができる。これ
はしばしば何らかの判断基準を使用して分岐判断を推測
することによって行われる。分岐が誤って推測された時
は、プロセッサの状態が破壊されているので、分岐の直
後の計算機の正しい状態に復元しなければならない。プ
ロセッサ・アーキテクチャはその計算機状態を構成する
ものが異なっている。一般に、この状態はアドレス可能
なレジスタの内容を含む。
前に複数の命令を部分的に実行することができる。これ
はしばしば何らかの判断基準を使用して分岐判断を推測
することによって行われる。分岐が誤って推測された時
は、プロセッサの状態が破壊されているので、分岐の直
後の計算機の正しい状態に復元しなければならない。プ
ロセッサ・アーキテクチャはその計算機状態を構成する
ものが異なっている。一般に、この状態はアドレス可能
なレジスタの内容を含む。
【0093】MSISでは、この状態復元の処理が2つの点
で複雑になる。第1に、EモードでBWGが発生すると、誤
って推測された分岐命令の後で生成されたZコードが廃
棄され、その分岐の後の命令の順序が正しくなるよう
に、命令IDの再調節が行われる。第2に、Zモードのレ
ジスタ状態は空間と時間の両方で分散している。その結
果、状態を復元するために、すべての処理要素への情報
の同報通信とそれらの活動の再同期化が必要になり、状
態の復元が複雑になる。
で複雑になる。第1に、EモードでBWGが発生すると、誤
って推測された分岐命令の後で生成されたZコードが廃
棄され、その分岐の後の命令の順序が正しくなるよう
に、命令IDの再調節が行われる。第2に、Zモードのレ
ジスタ状態は空間と時間の両方で分散している。その結
果、状態を復元するために、すべての処理要素への情報
の同報通信とそれらの活動の再同期化が必要になり、状
態の復元が複雑になる。
【0094】さらに、MSISはBWGがない状態でも、Eモー
ドとZモードの間の遷移を必要とする。このような遷移
の間にとられる処置はBWGの間にとられる処置と同じで
ある。本発明では、ZZTと称する共通の機構を使用し
て、分岐と遷移のすべての態様を均一に処理する。これ
が本節の主題であり、これを図13ないし図18に示
す。
ドとZモードの間の遷移を必要とする。このような遷移
の間にとられる処置はBWGの間にとられる処置と同じで
ある。本発明では、ZZTと称する共通の機構を使用し
て、分岐と遷移のすべての態様を均一に処理する。これ
が本節の主題であり、これを図13ないし図18に示
す。
【0095】ZZTの実施態様に関係する基本データ構造
はZZTキャッシュ・ディレクトリ620、ZZTキャッシュ
・アレイ630、ZZTフレーム640およびZZT RFILE6
50の4つである。
はZZTキャッシュ・ディレクトリ620、ZZTキャッシュ
・アレイ630、ZZTフレーム640およびZZT RFILE6
50の4つである。
【0096】ZZTキャッシュ・ディレクトリ ZZTキャッシュ・ディレクトリ620はZコードが利用可
能ななPセグメントを記憶するのに使用される。各ZZTキ
ャッシュ・ディレクトリ・エントリ621は図14に示
すような(Pセグメント・アドレス622、ZZTキャッシ
ュ・アドレス623)形式を有する。Pセグメント・ア
ドレス622は、Pセグメントの最初の命令のアドレス
であり、ZZTキャッシュ・アドレス623は、ZZTキャッ
シュ・アレイ630を指すポインタである。
能ななPセグメントを記憶するのに使用される。各ZZTキ
ャッシュ・ディレクトリ・エントリ621は図14に示
すような(Pセグメント・アドレス622、ZZTキャッシ
ュ・アドレス623)形式を有する。Pセグメント・ア
ドレス622は、Pセグメントの最初の命令のアドレス
であり、ZZTキャッシュ・アドレス623は、ZZTキャッ
シュ・アレイ630を指すポインタである。
【0097】ZZTキャッシュ・ディレクトリ620はバ
ス215によって供給される所与のアドレスと、ZZTキ
ャッシュ・ディレクトリ・エントリ621のZエントリ
・アドレス622を突き合わせるため、連想式に探索さ
れる。一致があった時は、対応するZZTキャッシュ・ア
ドレス623が得られる。一致が生じると、判断要素6
26で、モードがZモードに設定される。Eモードで一致
が生じると、EモードからZモードへの遷移が起こる。Z
モードで一致が生じると、あるZセグメントから別のZセ
グメントへの遷移が起こる。一致がないときは、探索引
数に対して利用可能ななZコードがないことを示す。Eモ
ードで一致がないときは、Eモードでの実行が継続され
る。Zモードでキャッシュ・ミスが発生すると、Zモード
からEモードへの遷移が起こる。
ス215によって供給される所与のアドレスと、ZZTキ
ャッシュ・ディレクトリ・エントリ621のZエントリ
・アドレス622を突き合わせるため、連想式に探索さ
れる。一致があった時は、対応するZZTキャッシュ・ア
ドレス623が得られる。一致が生じると、判断要素6
26で、モードがZモードに設定される。Eモードで一致
が生じると、EモードからZモードへの遷移が起こる。Z
モードで一致が生じると、あるZセグメントから別のZセ
グメントへの遷移が起こる。一致がないときは、探索引
数に対して利用可能ななZコードがないことを示す。Eモ
ードで一致がないときは、Eモードでの実行が継続され
る。Zモードでキャッシュ・ミスが発生すると、Zモード
からEモードへの遷移が起こる。
【0098】Eモードの実行で新しいZセグメントの組立
てが完了した時、ZZTキャッシュ内に新エントリが作成
される。ZZTキャッシュ内のエントリはエージ・タグ6
28を使用するLRU置換法を用いて通常の方式で管理さ
れる。
てが完了した時、ZZTキャッシュ内に新エントリが作成
される。ZZTキャッシュ内のエントリはエージ・タグ6
28を使用するLRU置換法を用いて通常の方式で管理さ
れる。
【0099】ZZTキャッシュ・アレイ ZZTキャッシュ・アレイ630は構成済みのZセグメント
の情報のレポジトリを含む。各ZセグメントはZZTキャッ
シュ・アレイの一部を占め、各条件性レベルごとに1つ
のZZTアレイ要素631を使用する。したがって、K個の
条件性レベルを含むZセグメントはZZTキャッシュ・アレ
イ内で連続するK個の要素を占める。あるZセグメントの
最初のアレイ要素を指すポインタがZZTキャッシュ・ア
ドレス623である。各ZZTアレイ要素631は図15
に示すような(レジスタ修正ビット・ベクトル632、
セグメント終了ビット633)形式を有する。セグメン
ト終了ビット633はZセグメントの最後のアレイ要素
の場合は1、それ以外の場合には0である。レジスタ修
正ビット・ベクトル632は各アドレス可能レジスタご
とに1ビットを含む。レジスタ修正ビット・ベクトル6
32内のビットはこのZセグメントからのこの条件性レ
ベルLCのZ命令が各レジスタを修正するか否かを示す。
の情報のレポジトリを含む。各ZセグメントはZZTキャッ
シュ・アレイの一部を占め、各条件性レベルごとに1つ
のZZTアレイ要素631を使用する。したがって、K個の
条件性レベルを含むZセグメントはZZTキャッシュ・アレ
イ内で連続するK個の要素を占める。あるZセグメントの
最初のアレイ要素を指すポインタがZZTキャッシュ・ア
ドレス623である。各ZZTアレイ要素631は図15
に示すような(レジスタ修正ビット・ベクトル632、
セグメント終了ビット633)形式を有する。セグメン
ト終了ビット633はZセグメントの最後のアレイ要素
の場合は1、それ以外の場合には0である。レジスタ修
正ビット・ベクトル632は各アドレス可能レジスタご
とに1ビットを含む。レジスタ修正ビット・ベクトル6
32内のビットはこのZセグメントからのこの条件性レ
ベルLCのZ命令が各レジスタを修正するか否かを示す。
【0100】Zキャッシュ200(図2ないし図5)内
に新しいZキャッシュ・ディレクトリ・エントリ211
が作成された時、対応する1組のエントリがZZT600
内に作成される。ZZTキャッシュ・ディレクトリ・エン
トリ621がZZTキャッシュ・ディレクトリ620内に
作成され、複数のZZTアレイ要素631がZZTキャッシュ
・アレイ630内に作成される。Zモードへの遷移時
に、関連するZZTアレイ要素631内の情報がZZTキャッ
シュ・アレイ630からZZTフレーム640にコピーさ
れる。
に新しいZキャッシュ・ディレクトリ・エントリ211
が作成された時、対応する1組のエントリがZZT600
内に作成される。ZZTキャッシュ・ディレクトリ・エン
トリ621がZZTキャッシュ・ディレクトリ620内に
作成され、複数のZZTアレイ要素631がZZTキャッシュ
・アレイ630内に作成される。Zモードへの遷移時
に、関連するZZTアレイ要素631内の情報がZZTキャッ
シュ・アレイ630からZZTフレーム640にコピーさ
れる。
【0101】ZZTキャッシュ・アレイは読取りバス63
5と書込みバス636とアドレス増分機構634を備
え、セグメント終了ビット633に出会うまで、呼び出
されたZセグメントに対応する要素にアクセスする。
5と書込みバス636とアドレス増分機構634を備
え、セグメント終了ビット633に出会うまで、呼び出
されたZセグメントに対応する要素にアクセスする。
【0102】ZZTフレーム ZZTフレーム640は分岐の間に、すなわち各LCで、レ
ジスタに加えられた修正を動的に監視するのに使用され
る。ZZTフレーム640は計算機内のレジスタの分散さ
れた状態が計算機状態を回復するために必要になった場
合に、その情報の中央レポジトリとして働く。各LCごと
に、ZZTフレーム640は各レジスタの最も最近の値
を、当該のPEから非同期に受け取り、記憶する。この情
報はバス460を介してMHSから来る。というのは、何
らかのレジスタを修正する1LC内で概念上最新の命令で
ある各Z命令はそのDリスト内にZZTフレーム640を含
むからである。BWGまたはモード遷移の場合、ZZTフレー
ム640はZZT RFILE650とあいまって次のセグメン
ト用のレジスタの正しい初期状態を供給する。
ジスタに加えられた修正を動的に監視するのに使用され
る。ZZTフレーム640は計算機内のレジスタの分散さ
れた状態が計算機状態を回復するために必要になった場
合に、その情報の中央レポジトリとして働く。各LCごと
に、ZZTフレーム640は各レジスタの最も最近の値
を、当該のPEから非同期に受け取り、記憶する。この情
報はバス460を介してMHSから来る。というのは、何
らかのレジスタを修正する1LC内で概念上最新の命令で
ある各Z命令はそのDリスト内にZZTフレーム640を含
むからである。BWGまたはモード遷移の場合、ZZTフレー
ム640はZZT RFILE650とあいまって次のセグメン
ト用のレジスタの正しい初期状態を供給する。
【0103】単一のZZTフレームは同期式の遷移を引き
起こし、その結果、どのPEも次のセグメント(本明細書
では呼び出されたセグメントと称する)の第1命令を開
始しないうちに、すべてのPEが前のセグメント(本明細
書では呼出し元セグメントと称する)を終了させたLC以
下のLCを有するすべてのZセグメントを完了しているよ
うになる。呼出し元セグメントと呼び出されたセグメン
トに関するPE動作を非同期式にするために、第2のZZT
フレームを設けることができ、その結果、初期設定、呼
び出し元セグメントの命令および呼び出されたセグメン
トの命令に関係する、PEによって実行される動作が正し
く行えるようになる。2つのZZTフレームに関連する制
約条件は最大で1つの遷移にわたって非同期性を達成で
きることである。
起こし、その結果、どのPEも次のセグメント(本明細書
では呼び出されたセグメントと称する)の第1命令を開
始しないうちに、すべてのPEが前のセグメント(本明細
書では呼出し元セグメントと称する)を終了させたLC以
下のLCを有するすべてのZセグメントを完了しているよ
うになる。呼出し元セグメントと呼び出されたセグメン
トに関するPE動作を非同期式にするために、第2のZZT
フレームを設けることができ、その結果、初期設定、呼
び出し元セグメントの命令および呼び出されたセグメン
トの命令に関係する、PEによって実行される動作が正し
く行えるようになる。2つのZZTフレームに関連する制
約条件は最大で1つの遷移にわたって非同期性を達成で
きることである。
【0104】ZZTフレーム640は各LCごとに1つずつZ
ZTセル641を有するアレイとして編成される。ZZTセ
ルはLCとレジスタ名を指定することによってアクセスさ
れる。あるLCに関連するZZTセルは(レジスタ変更ビッ
ト644、有効ビット646、レジスタ値645)の形
式を有する。レジスタ変更ビット644フィールドはレ
ジスタ修正ビット・ベクトル632を保持し、ZZTアレ
イ要素631から導出される。これはこのLCでどのレジ
スタが修正されるかを示す。有効ビット646フィール
ドは、Zセグメントの現在の実行中にどのレジスタがす
でに修正され、その値がレジスタ値645フィールドに
置かれているかを示すビット・ベクトルである。セルは
レジスタ修正ビット・ベクトル632をZZTキャッシュ
・アレイ要素からレジスタ変更ビットフィールドにコピ
ーし、有効ビット・フィールドとレジスタ値フィールド
をすべて0にリセットすることによって、初期設定され
る。適当なPEがこのセルのLCであるレジスタの更新を送
る時、その値がこのレジスタ位置のこのLCに対するレジ
スタ値フィールドに書き込まれ、有効ビットフィールド
内の適当なビットがオンになる。
ZTセル641を有するアレイとして編成される。ZZTセ
ルはLCとレジスタ名を指定することによってアクセスさ
れる。あるLCに関連するZZTセルは(レジスタ変更ビッ
ト644、有効ビット646、レジスタ値645)の形
式を有する。レジスタ変更ビット644フィールドはレ
ジスタ修正ビット・ベクトル632を保持し、ZZTアレ
イ要素631から導出される。これはこのLCでどのレジ
スタが修正されるかを示す。有効ビット646フィール
ドは、Zセグメントの現在の実行中にどのレジスタがす
でに修正され、その値がレジスタ値645フィールドに
置かれているかを示すビット・ベクトルである。セルは
レジスタ修正ビット・ベクトル632をZZTキャッシュ
・アレイ要素からレジスタ変更ビットフィールドにコピ
ーし、有効ビット・フィールドとレジスタ値フィールド
をすべて0にリセットすることによって、初期設定され
る。適当なPEがこのセルのLCであるレジスタの更新を送
る時、その値がこのレジスタ位置のこのLCに対するレジ
スタ値フィールドに書き込まれ、有効ビットフィールド
内の適当なビットがオンになる。
【0105】ZZT RFILE ZZT RFILE650は呼び出されたセグメントの始め(呼
出し元セグメントの最後でもある)に、すべてのレジス
タの内容を保持する。
出し元セグメントの最後でもある)に、すべてのレジス
タの内容を保持する。
【0106】EモードでのZZT構造の使用法 Eモード実行の間に、上記のデータ構造は次のように使
用される。 1.Eモード実行に入る時、ZZT RFILEは入口点でのすべ
てのレジスタの有効な内容を含んでいる。ZZT RFILEは
そのように初期設定されることが前提になっているの
で、当初はこれが正しい。Eモードに再度入るごとに、
以下の動作を実行することによって、ZZT RFILEの設定
が正しいことを確認する。呼出し元セグメントの最終LC
であるLCFを使用し、各レジスタrごとに、LCFからZZTフ
レームのセル全体(必要ならばZZT RFILEの内容を含め
る)を後向きに走査することによって、各レジスタの最
新の値を決定する。この値がZZT RFILE内のそのレジス
タの新しい値になる。この1組の値は呼び出されたセグ
メントのレジスタ初期値にもなる。ZZTスキャナ660
はこの走査動作を実行し、LCF以下で最も高いLCを有す
るセル内のレジスタrのZZTフレームの有効ビット646
を検査することによって、このZZT RFILE内の値を置換
するのに必要なレジスタ値が有効になるまで待つ。デフ
ォルトは走査の前の初期状態でZZT RFILE内にあったレ
ジスタrの値を使用することである。そうなるのは、呼
出し元セグメント全体を通じて、そのレジスタに変更が
加えられていない場合だけである。ZZTスキャナが呼出
し元セグメントの開始アドレスをすべてのPEに発行する
前にこの動作を行うので、すべてのPEが遷移時に同期さ
れる。ZZTスキャナはそれを起動する入力をOLC540
(図12)からバス593を介して受け取り、次のPセ
グメントの開始アドレスをバス215を介してすべての
PEに送る。 2.次のPセグメントの入口点でZZTフレームがクリアさ
れ、その最初のセルが現在の(すなわち0番目の)条件
性レベルとしてマークされる。各命令の実行時に以下の
処置がとられる。 3.ある命令がレジスタにアクセスしたがそのレジスタ
が無効としてマークされている場合には、FETCHメッセ
ージがZZT RFILEに送られ、ZZT RFILEは初期設定された
レジスタ値を返す。 4.ある命令が所与のLCでレジスタを修正する概念上最
後の命令である場合は、バス135を介して現LC用のZZ
Tフレーム内のセルにメッセージが送られる。このよう
なメッセージを図18に示す。このメッセージは以下の
情報を担う。 ・FETCHかSTOREかを示すフェッチ/記憶ビット671
と、ZZTアクセス・ビット672。これら2つのビット
を併せて使用すると、メモリ階層インターフェース14
5がZZT RFILEからのFETCHを、ZZTフレームへのSTOREま
たはメモリ階層インターフェース145への他のFETCH
およびSTOREから区別できるようになる。 ・レジスタ名673 ・条件性レベル(LC)674 フェッチ/記憶ビット671とZZTアクセス・ビット6
72がZZTフレームへのSTOREが行われようとしているこ
とを示す時には、指示されたセル内の指示されたレジス
タ用のZZTフレーム・エントリが次のように修正され
る。修正されたレジスタに関して、LC674用のZZTセ
ル641内のレジスタ変更ビットと、レジスタ名673
がオンになり、新しいレジスタ内容がレジスタ値フィー
ルドの対応する位置に書き込まれる。 5.分岐命令を実行する場合 a.ZZTキャッシュ・ディレクトリが分岐アドレスとの
一致があるかどうか検査される。一致があった場合、現
Zコードが記録され、Zコードへの遷移が行われる。 b.一致がなくこれまでに作成されたZコードが十分に
長いと判断される場合には、そのZコードが打ち切ら
れ、Eモードへの再進入が開始される。 6.EモードでのBWGが認識される時には、誤って推測さ
れた分岐のLCの前のLCへのロールバックが行われる。ZZ
Tフレーム内のセルをそのLCから後向きに走査すること
によって、すべてのレジスタの正しい状態を決定するこ
とができ、すべてのレジスタがその状態にリセットされ
る。Eモードでの実行が正しい目標から続行される。 7.作成されたZコードの記録は以下のステップを含
む。 a.LCF以下のLCを有するZZTセル641用にZZTキャッ
シュ・アレイ内の要素の新しい範囲を選択する。 b.LCF以下の各LCに対するレジスタ変更ビットをZZTフ
レームからZZTキャッシュ・アレイ内の対応する要素に
コピーする。 c.各ZZTアレイ要素631内のセグメント終了ビット
633をオフにする。ただし、最後のセルだけはオンに
する。 d.エージ・タグ628を使って、ZZTキャッシュ内のZ
ZTキャッシュ・ディレクトリ・エントリ621を除去す
ることができ、新規エントリがそれに置換する。 e.このZZTキャッシュ・ディレクトリ・エントリ内
で、Pセグメントの開始アドレスはPセグメント・アドレ
ス622になり、ZZTキャッシュ・アドレス623は新
規に生成されたZZTキャッシュ・アレイ要素を指すポイ
ンタである。 8.遷移の時点で、すべてのPE内のすべてのレジスタが
無効にセットされ、その結果、PEがレジスタ値を使用す
るには、まずZZTファイルからその値を取得することが
必要になる。
用される。 1.Eモード実行に入る時、ZZT RFILEは入口点でのすべ
てのレジスタの有効な内容を含んでいる。ZZT RFILEは
そのように初期設定されることが前提になっているの
で、当初はこれが正しい。Eモードに再度入るごとに、
以下の動作を実行することによって、ZZT RFILEの設定
が正しいことを確認する。呼出し元セグメントの最終LC
であるLCFを使用し、各レジスタrごとに、LCFからZZTフ
レームのセル全体(必要ならばZZT RFILEの内容を含め
る)を後向きに走査することによって、各レジスタの最
新の値を決定する。この値がZZT RFILE内のそのレジス
タの新しい値になる。この1組の値は呼び出されたセグ
メントのレジスタ初期値にもなる。ZZTスキャナ660
はこの走査動作を実行し、LCF以下で最も高いLCを有す
るセル内のレジスタrのZZTフレームの有効ビット646
を検査することによって、このZZT RFILE内の値を置換
するのに必要なレジスタ値が有効になるまで待つ。デフ
ォルトは走査の前の初期状態でZZT RFILE内にあったレ
ジスタrの値を使用することである。そうなるのは、呼
出し元セグメント全体を通じて、そのレジスタに変更が
加えられていない場合だけである。ZZTスキャナが呼出
し元セグメントの開始アドレスをすべてのPEに発行する
前にこの動作を行うので、すべてのPEが遷移時に同期さ
れる。ZZTスキャナはそれを起動する入力をOLC540
(図12)からバス593を介して受け取り、次のPセ
グメントの開始アドレスをバス215を介してすべての
PEに送る。 2.次のPセグメントの入口点でZZTフレームがクリアさ
れ、その最初のセルが現在の(すなわち0番目の)条件
性レベルとしてマークされる。各命令の実行時に以下の
処置がとられる。 3.ある命令がレジスタにアクセスしたがそのレジスタ
が無効としてマークされている場合には、FETCHメッセ
ージがZZT RFILEに送られ、ZZT RFILEは初期設定された
レジスタ値を返す。 4.ある命令が所与のLCでレジスタを修正する概念上最
後の命令である場合は、バス135を介して現LC用のZZ
Tフレーム内のセルにメッセージが送られる。このよう
なメッセージを図18に示す。このメッセージは以下の
情報を担う。 ・FETCHかSTOREかを示すフェッチ/記憶ビット671
と、ZZTアクセス・ビット672。これら2つのビット
を併せて使用すると、メモリ階層インターフェース14
5がZZT RFILEからのFETCHを、ZZTフレームへのSTOREま
たはメモリ階層インターフェース145への他のFETCH
およびSTOREから区別できるようになる。 ・レジスタ名673 ・条件性レベル(LC)674 フェッチ/記憶ビット671とZZTアクセス・ビット6
72がZZTフレームへのSTOREが行われようとしているこ
とを示す時には、指示されたセル内の指示されたレジス
タ用のZZTフレーム・エントリが次のように修正され
る。修正されたレジスタに関して、LC674用のZZTセ
ル641内のレジスタ変更ビットと、レジスタ名673
がオンになり、新しいレジスタ内容がレジスタ値フィー
ルドの対応する位置に書き込まれる。 5.分岐命令を実行する場合 a.ZZTキャッシュ・ディレクトリが分岐アドレスとの
一致があるかどうか検査される。一致があった場合、現
Zコードが記録され、Zコードへの遷移が行われる。 b.一致がなくこれまでに作成されたZコードが十分に
長いと判断される場合には、そのZコードが打ち切ら
れ、Eモードへの再進入が開始される。 6.EモードでのBWGが認識される時には、誤って推測さ
れた分岐のLCの前のLCへのロールバックが行われる。ZZ
Tフレーム内のセルをそのLCから後向きに走査すること
によって、すべてのレジスタの正しい状態を決定するこ
とができ、すべてのレジスタがその状態にリセットされ
る。Eモードでの実行が正しい目標から続行される。 7.作成されたZコードの記録は以下のステップを含
む。 a.LCF以下のLCを有するZZTセル641用にZZTキャッ
シュ・アレイ内の要素の新しい範囲を選択する。 b.LCF以下の各LCに対するレジスタ変更ビットをZZTフ
レームからZZTキャッシュ・アレイ内の対応する要素に
コピーする。 c.各ZZTアレイ要素631内のセグメント終了ビット
633をオフにする。ただし、最後のセルだけはオンに
する。 d.エージ・タグ628を使って、ZZTキャッシュ内のZ
ZTキャッシュ・ディレクトリ・エントリ621を除去す
ることができ、新規エントリがそれに置換する。 e.このZZTキャッシュ・ディレクトリ・エントリ内
で、Pセグメントの開始アドレスはPセグメント・アドレ
ス622になり、ZZTキャッシュ・アドレス623は新
規に生成されたZZTキャッシュ・アレイ要素を指すポイ
ンタである。 8.遷移の時点で、すべてのPE内のすべてのレジスタが
無効にセットされ、その結果、PEがレジスタ値を使用す
るには、まずZZTファイルからその値を取得することが
必要になる。
【0107】ZモードでのZZT構造の使用法 Zモードの間にZZTデータ構造は次のように使用される。 1.Zモードに入る時、ZZT RFILEは入口点でのすべての
レジスタの有効な内容を含んでいる。ZZT RFILEはその
ように初期設定されることが前提になっているので、当
初はこれが正しい。Zモードに再度入るごとに、ZZT RFI
LEは適当にリセットされる。 2.Zモードに入る時、ZZTディレクトリ・エントリがZZ
TフレームにロードされているZZTアレイ要素を指すZZT
キャッシュ・アドレスを提供する。セグメント終了ビッ
トは情報の転送を停止させる。ZZTフレームはZZTキャッ
シュ・アレイ要素からセットされる。ZZTキャッシュ・
アレイ要素は各LCごとに1つずつZZTフレームにコピー
される。各命令の実行時に以下の処置がとられる。 3.あるZ命令がそのレジスタに関連する有効ビット3
10によって無効としてマークされているレジスタにア
クセスする場合、FETCHメッセージがZZT RFILEに送ら
れ、ZZT RFILEは呼び出されたセグメント用のレジスタ
初期値を返す。 4.あるZ命令が所与のLCでレジスタを修正する概念上
最後の命令である場合は、その命令のDリストはZZTフレ
ームを含み、メッセージがMHSを経てバス460を介し
てZZTフレームに送られる。PEからのこのメッセージはL
C674によってそのZZTフレーム内のセルを識別し、そ
のメッセージ内のレジスタ名673によってそのセル内
のレジスタを識別する。修正されるレジスタに関して、
有効ビット・フィールド内の対応するビットがオンにな
り、新しいレジスタ内容がレジスタ値フィールド内の対
応する要素に書き込まれる。 5.BWGが認識される時、またはZコードが終了する時、
ZZT RFILEを更新することによって、最終状態が確立さ
れる。ZZTスキャナは関連するすべてのレジスタが変化
するのを待ち、OLCがBWGのLCに一致すると、すべての記
憶命令が記入済みであることが保証されるので、関連す
るすべてのPEの活動の完了が保証される。6.別のモー
ドを開始する直前に、すべてのプロセッサ内のすべての
レジスタが有効ビット310を使って無効にセットされ
る。
レジスタの有効な内容を含んでいる。ZZT RFILEはその
ように初期設定されることが前提になっているので、当
初はこれが正しい。Zモードに再度入るごとに、ZZT RFI
LEは適当にリセットされる。 2.Zモードに入る時、ZZTディレクトリ・エントリがZZ
TフレームにロードされているZZTアレイ要素を指すZZT
キャッシュ・アドレスを提供する。セグメント終了ビッ
トは情報の転送を停止させる。ZZTフレームはZZTキャッ
シュ・アレイ要素からセットされる。ZZTキャッシュ・
アレイ要素は各LCごとに1つずつZZTフレームにコピー
される。各命令の実行時に以下の処置がとられる。 3.あるZ命令がそのレジスタに関連する有効ビット3
10によって無効としてマークされているレジスタにア
クセスする場合、FETCHメッセージがZZT RFILEに送ら
れ、ZZT RFILEは呼び出されたセグメント用のレジスタ
初期値を返す。 4.あるZ命令が所与のLCでレジスタを修正する概念上
最後の命令である場合は、その命令のDリストはZZTフレ
ームを含み、メッセージがMHSを経てバス460を介し
てZZTフレームに送られる。PEからのこのメッセージはL
C674によってそのZZTフレーム内のセルを識別し、そ
のメッセージ内のレジスタ名673によってそのセル内
のレジスタを識別する。修正されるレジスタに関して、
有効ビット・フィールド内の対応するビットがオンにな
り、新しいレジスタ内容がレジスタ値フィールド内の対
応する要素に書き込まれる。 5.BWGが認識される時、またはZコードが終了する時、
ZZT RFILEを更新することによって、最終状態が確立さ
れる。ZZTスキャナは関連するすべてのレジスタが変化
するのを待ち、OLCがBWGのLCに一致すると、すべての記
憶命令が記入済みであることが保証されるので、関連す
るすべてのPEの活動の完了が保証される。6.別のモー
ドを開始する直前に、すべてのプロセッサ内のすべての
レジスタが有効ビット310を使って無効にセットされ
る。
【0108】 第7節 Eモードでの処理要素への命令の割当て 処理要素への命令の割当ては処理要素の解読機能と組み
合わせるのが賢明である。というのは、命令の解読から
得られる情報が割当て決定にとって最も意味のある情報
として役立つからである。図19に命令デコーダ/スケ
ジューラ700の諸要素を示す。デコーダ701はバス
150を介してZキャッシュ200から次のZ命令を提示
されるか、あるいはバス135を介してメモリ階層14
0から次の命令を提示される。前者はZモードで行わ
れ、スケジューラ702の動作は不要である。Zモード
でのデコーダ701の活動は命令イメージ222、Sリ
スト223およびDリスト224(図4)を処理し、得
られた情報を実行ユニット130およびレジスタ・ファ
イル300に送り、Z命令のFETCHまたはSTOREの場合に
はメモリ階層140に送ることである。Eモードではデ
コーダ701によって導出された情報をスケジューラ7
02に送って、この命令の割当てを決定する。
合わせるのが賢明である。というのは、命令の解読から
得られる情報が割当て決定にとって最も意味のある情報
として役立つからである。図19に命令デコーダ/スケ
ジューラ700の諸要素を示す。デコーダ701はバス
150を介してZキャッシュ200から次のZ命令を提示
されるか、あるいはバス135を介してメモリ階層14
0から次の命令を提示される。前者はZモードで行わ
れ、スケジューラ702の動作は不要である。Zモード
でのデコーダ701の活動は命令イメージ222、Sリ
スト223およびDリスト224(図4)を処理し、得
られた情報を実行ユニット130およびレジスタ・ファ
イル300に送り、Z命令のFETCHまたはSTOREの場合に
はメモリ階層140に送ることである。Eモードではデ
コーダ701によって導出された情報をスケジューラ7
02に送って、この命令の割当てを決定する。
【0109】この第7節で使用する用語では、割当て機
能をφと呼び、したがって、Pセグメントのp番目の命令
に関して、φ(p)がそのp番目の命令が割り当てられる
処理要素の名前になる。処理要素はそれぞれの特定の処
理要素番号を除きすべて同じであり、いずれも同じφを
使用する。したがって、φ(p)の評価が異なる処理要
素上で非同期に行われる場合でもφ(p)を別々に評価
することから曖昧さが生じることはない。
能をφと呼び、したがって、Pセグメントのp番目の命令
に関して、φ(p)がそのp番目の命令が割り当てられる
処理要素の名前になる。処理要素はそれぞれの特定の処
理要素番号を除きすべて同じであり、いずれも同じφを
使用する。したがって、φ(p)の評価が異なる処理要
素上で非同期に行われる場合でもφ(p)を別々に評価
することから曖昧さが生じることはない。
【0110】スケジューラ702の入力を図19に示
す。前述のように、OSC/PSC制御500はバス705を
使って、ハザードを引き起こした命令のIDを通信する。
この情報を用いると、処理要素間OSC/PSCハザードの繰
返しを避けるために、指示されたすべての命令を同一の
処理要素に割り当てる形でMSISがOSCへの追従を再開で
きるようになる。このような情報はスケジューラ702
に入力され、スケジューラ702に通常のφ決定をオー
バーライドさせる。
す。前述のように、OSC/PSC制御500はバス705を
使って、ハザードを引き起こした命令のIDを通信する。
この情報を用いると、処理要素間OSC/PSCハザードの繰
返しを避けるために、指示されたすべての命令を同一の
処理要素に割り当てる形でMSISがOSCへの追従を再開で
きるようになる。このような情報はスケジューラ702
に入力され、スケジューラ702に通常のφ決定をオー
バーライドさせる。
【0111】スケジューラ702のもう1つの可能な入
力が外部オーバーライド入力710である。このクラス
のオーバーライドには以下のものが含まれる。 ・外部供給源から供給される各命令用の定義済みφ71
1 ・処理要素間でのレジスタの分割によって、すなわち所
有権の定義によって割当てを制御する特定規則712 ・特定の命令からZコード生成を開始するためのPセグメ
ント開始アドレス713と、特定の命令でZコード生成
を停止させるためのPセグメント終了アドレス714。
力が外部オーバーライド入力710である。このクラス
のオーバーライドには以下のものが含まれる。 ・外部供給源から供給される各命令用の定義済みφ71
1 ・処理要素間でのレジスタの分割によって、すなわち所
有権の定義によって割当てを制御する特定規則712 ・特定の命令からZコード生成を開始するためのPセグメ
ント開始アドレス713と、特定の命令でZコード生成
を停止させるためのPセグメント終了アドレス714。
【0112】これらの生成と供給はすべて、実行中のI
ストリーム全体を分析し、これをPセグメントに分解
し、前述の外部オーバーライド入力710を使用してMS
ISに指令するもう1台のプロセッサによって行うことが
できる。
ストリーム全体を分析し、これをPセグメントに分解
し、前述の外部オーバーライド入力710を使用してMS
ISに指令するもう1台のプロセッサによって行うことが
できる。
【0113】スケジューラによる通常の割当て決定のも
う1つのオーバーライドがアーキテクチャ式オーバーラ
イド760である。条件コードなど、レジスタ内で維持
されない計算機状態の要素を有するプロセッサ・アーキ
テクチャでは、このような要素の設定および使用によっ
て、互いに相互依存する1対の命令が強制的に同じ処理
要素上でスケジューリングされるように命令デコーダ/
スケジューラ700内で手筈をととのえることができ
る。
う1つのオーバーライドがアーキテクチャ式オーバーラ
イド760である。条件コードなど、レジスタ内で維持
されない計算機状態の要素を有するプロセッサ・アーキ
テクチャでは、このような要素の設定および使用によっ
て、互いに相互依存する1対の命令が強制的に同じ処理
要素上でスケジューリングされるように命令デコーダ/
スケジューラ700内で手筈をととのえることができ
る。
【0114】このような関連入力が存在しない時は、命
令は算法スケジューラ740に基づいて割り当てられ
る。コードを原プログラム・シーケンスに関して概念上
の順序通りのシーケンスに分割する事前に定義されたア
ルゴリズムであれば、どんなものを使用してもよい。
令は算法スケジューラ740に基づいて割り当てられ
る。コードを原プログラム・シーケンスに関して概念上
の順序通りのシーケンスに分割する事前に定義されたア
ルゴリズムであれば、どんなものを使用してもよい。
【0115】算法スケジューラが第8節と矛盾しないよ
うにするために、各処理要素はPセグメント内のすべて
の分岐点でのすべての処理要素に関するスケジューリン
グ決定の記録を維持しなければならない。スケジューラ
・ロールバック制御(SRC)741がこの機能を実行す
る。スケジュールのロールバックの後には、スケジュー
ラ702がその後スケジューリング決定の際に必要とす
る情報はすべてSRCを介して利用可能になる。このよう
な記録は割当て機能が外部オーバーライド入力に基づい
てあるいは命令から明白な判断基準だけを使用してスケ
ジューリング決定を行う場合、簡単になる。これらの判
断基準としては命令IDまたはその命令によって使用され
るレジスタがある。算法スケジューラは広範囲の可能性
を含む。以下に、幾つかの簡単な例を示す。
うにするために、各処理要素はPセグメント内のすべて
の分岐点でのすべての処理要素に関するスケジューリン
グ決定の記録を維持しなければならない。スケジューラ
・ロールバック制御(SRC)741がこの機能を実行す
る。スケジュールのロールバックの後には、スケジュー
ラ702がその後スケジューリング決定の際に必要とす
る情報はすべてSRCを介して利用可能になる。このよう
な記録は割当て機能が外部オーバーライド入力に基づい
てあるいは命令から明白な判断基準だけを使用してスケ
ジューリング決定を行う場合、簡単になる。これらの判
断基準としては命令IDまたはその命令によって使用され
るレジスタがある。算法スケジューラは広範囲の可能性
を含む。以下に、幾つかの簡単な例を示す。
【0116】時間的スケジューリング 連続する命令が何らかの終了判断基準が満たされるま
で、同じ処理要素上でスケジューリングされる。この終
了判断基準はたとえば以下のようなものである。 ・同じPE上で一定数の命令がスケジューリングされた。 ・分岐命令が採用された。 ・レジスタ開始命令に出会った。
で、同じ処理要素上でスケジューリングされる。この終
了判断基準はたとえば以下のようなものである。 ・同じPE上で一定数の命令がスケジューリングされた。 ・分岐命令が採用された。 ・レジスタ開始命令に出会った。
【0117】この終了の後に続く次の命令は次に高い番
号の処理要素に割り当てられ、この処理要素は上記のよ
うにスケジューリングされる。処理要素に1からnまで
の番号を与える場合nの次の処理要素は1である。
号の処理要素に割り当てられ、この処理要素は上記のよ
うにスケジューリングされる。処理要素に1からnまで
の番号を与える場合nの次の処理要素は1である。
【0118】空間的スケジューリング このスケジューリングでは、スケジューリングしようと
する命令によってどのレジスタがセットされるかを決定
し、所与のレジスタをセットするすべての命令を同一の
処理要素に割り当てることによって、メッセージを減少
させようと試みる。ある命令が複数のレジスタをセット
し、その結果、異なる処理要素間でのスケジューリング
の選択が必要になる場合は、事前に定義された決定方法
が使用される。すなわち、φ(p)は最も小さい番号の
処理要素になる。
する命令によってどのレジスタがセットされるかを決定
し、所与のレジスタをセットするすべての命令を同一の
処理要素に割り当てることによって、メッセージを減少
させようと試みる。ある命令が複数のレジスタをセット
し、その結果、異なる処理要素間でのスケジューリング
の選択が必要になる場合は、事前に定義された決定方法
が使用される。すなわち、φ(p)は最も小さい番号の
処理要素になる。
【0119】複雑な算法スケジューリングはスケジュー
ラ702の複雑さと、達成される性能との間のトレード
・オフを表す。BWGが発生すると、概念上他の処理要素
上の分岐の後に続く命令をその分岐の実行の何サイクル
も前にスケジューリングすることの性能上の利点が失わ
れることを想起されたい。
ラ702の複雑さと、達成される性能との間のトレード
・オフを表す。BWGが発生すると、概念上他の処理要素
上の分岐の後に続く命令をその分岐の実行の何サイクル
も前にスケジューリングすることの性能上の利点が失わ
れることを想起されたい。
【0120】この実施例の残りの部分との整合性を維持
するためには、スケジューラ702によって行われるス
ケジューリングを処理要素内の概念上の順序を維持する
ものにすることが必要である。命令が全処理要素内のス
ケジューラに同時に提示される場合には、複数の命令を
一回の割当て動作でスケジューリングすることができ
る。このような状況での割当てでは、どの処理要素かお
よび同一の処理要素にスケジューリングされる命令がZ
キャッシュ・アレイ内でどんな順序になるのかが指定さ
れる。ただし、各処理要素内での概念上の順序という要
件のためにこの自由度はなくなる。
するためには、スケジューラ702によって行われるス
ケジューリングを処理要素内の概念上の順序を維持する
ものにすることが必要である。命令が全処理要素内のス
ケジューラに同時に提示される場合には、複数の命令を
一回の割当て動作でスケジューリングすることができ
る。このような状況での割当てでは、どの処理要素かお
よび同一の処理要素にスケジューリングされる命令がZ
キャッシュ・アレイ内でどんな順序になるのかが指定さ
れる。ただし、各処理要素内での概念上の順序という要
件のためにこの自由度はなくなる。
【0121】Eモードでの命令の割当てに続いて、その
命令は第8節でその動作について説明する割当て済み命
令処理ユニット751に提示される。この時、命令を割
り当てられていないすべての処理要素について、この命
令がレジスタの有効性に及ぼす影響と、メッセージ送出
の必要性と、割り当てられた処理要素上で、レジスタ・
ファイル300、メモリ階層140および実行ユニット
130を介する命令の実行からの入力の獲得とに関する
注釈が作られる。
命令は第8節でその動作について説明する割当て済み命
令処理ユニット751に提示される。この時、命令を割
り当てられていないすべての処理要素について、この命
令がレジスタの有効性に及ぼす影響と、メッセージ送出
の必要性と、割り当てられた処理要素上で、レジスタ・
ファイル300、メモリ階層140および実行ユニット
130を介する命令の実行からの入力の獲得とに関する
注釈が作られる。
【0122】 第8節 Eモード中およびZモード中の命令処理 命令属性 各命令の命令識別子(ID)802(図4)と条件性レベ
ル(LC)502(図4)については既に説明した。命令
にはBWGIDと称するもう1つの属性が関連付けられる。
このBWGIDは誤って予想された最新の分岐命令のIDであ
る。対{BWGID,ID}は命令を一意に識別する。たとえば、
命令3、6および8が誤って予想された分岐であると仮
定する。命令1ないし10は下記の識別対を有すること
になる。{0,1} {0,2} {0,3} {3,4} {3,5} {3,6} {6,7}
{6,8} {8,9} {8,10}。
ル(LC)502(図4)については既に説明した。命令
にはBWGIDと称するもう1つの属性が関連付けられる。
このBWGIDは誤って予想された最新の分岐命令のIDであ
る。対{BWGID,ID}は命令を一意に識別する。たとえば、
命令3、6および8が誤って予想された分岐であると仮
定する。命令1ないし10は下記の識別対を有すること
になる。{0,1} {0,2} {0,3} {3,4} {3,5} {3,6} {6,7}
{6,8} {8,9} {8,10}。
【0123】この番号付け方式の長所は後で分岐誤推測
をどう処理するかを説明する時に明らかになろう。ここ
ではパイプライン編成であるためにある計算機が分岐命
令{0,3}の結果が有効になる前に、誤った分岐経路上の
命令{0,4} {0,5}を実行する場合を検討する。この計算
機が現在既知の分岐誤推測のリスト(この例では、0、
3、6、8、...)を追跡する場合、有効な命令を認
識することは簡単である。ある命令が有効になるのは、
そのBWGIDが上記のリスト内に存在し、かつそのIDがこ
のリスト内の次のBWGIDよりも大きくない場合である。
したがって、命令{0,4} {0,5}は上記の例では無効であ
る。
をどう処理するかを説明する時に明らかになろう。ここ
ではパイプライン編成であるためにある計算機が分岐命
令{0,3}の結果が有効になる前に、誤った分岐経路上の
命令{0,4} {0,5}を実行する場合を検討する。この計算
機が現在既知の分岐誤推測のリスト(この例では、0、
3、6、8、...)を追跡する場合、有効な命令を認
識することは簡単である。ある命令が有効になるのは、
そのBWGIDが上記のリスト内に存在し、かつそのIDがこ
のリスト内の次のBWGIDよりも大きくない場合である。
したがって、命令{0,4} {0,5}は上記の例では無効であ
る。
【0124】レジスタ活動記録−Rリスト 各PEは他のPEが所有するレジスタ・ファイル300内の
すべてのレジスタに次の必要な更新を記憶する。レジス
タ・ファイルの構造および動作については、第3節およ
び図6で説明した。レジスタ・ファイル300のエント
リは{BWGID,ID,DATA}の形式を有する。DATAは命令{BWGI
D,ID}によってレジスタrに記憶された内容であり、レジ
スタ・ファイル内での列位置によって、この命令を実行
したPEが識別される。本明細書では今後{BWGID,ID,?}と
いう形式を使用する場合があるが、これは命令{BWGID,I
D}がレジスタrを修正し、実際のDATAは将来にならない
とわからないことを示す。?の使用はセルの無効な値を
示す。すなわち、セル有効ビット320は?でマークさ
れたエントリが無効であることを示す。
すべてのレジスタに次の必要な更新を記憶する。レジス
タ・ファイルの構造および動作については、第3節およ
び図6で説明した。レジスタ・ファイル300のエント
リは{BWGID,ID,DATA}の形式を有する。DATAは命令{BWGI
D,ID}によってレジスタrに記憶された内容であり、レジ
スタ・ファイル内での列位置によって、この命令を実行
したPEが識別される。本明細書では今後{BWGID,ID,?}と
いう形式を使用する場合があるが、これは命令{BWGID,I
D}がレジスタrを修正し、実際のDATAは将来にならない
とわからないことを示す。?の使用はセルの無効な値を
示す。すなわち、セル有効ビット320は?でマークさ
れたエントリが無効であることを示す。
【0125】Eモードでの命令処理 Eモードでは各命令がすべてのPEから見える。命令は実
際にはφ(ID)によってその命令に割り当てられたPEの
みによって実行される。PE,pは属性がBWGID,ID,LCであ
り、入力レジスタ・セットとしてS、出力レジスタ・セ
ットとしてDを有する命令を実行するために、以下の処
置をとる。以下に現れる英文字の列はコマンドなどを表
す記号であり翻訳できない。
際にはφ(ID)によってその命令に割り当てられたPEの
みによって実行される。PE,pは属性がBWGID,ID,LCであ
り、入力レジスタ・セットとしてS、出力レジスタ・セ
ットとしてDを有する命令を実行するために、以下の処
置をとる。以下に現れる英文字の列はコマンドなどを表
す記号であり翻訳できない。
【0126】各PE pについて以下のことを行う。 A.もし(φ(ID) = p)ならば以下のことを行う。 1. VALIDATE: S内の各レジスタrについて a. R [ r,* ]が無効としてマークされているならば
第6節の「EモードでのZZT構造の使用法」で指定された
指示に従う。Eモード実行に入る時、ZZT RFILEは入口点
での全レジスタの有効な内容を含んでいる。遷移の時点
で、全PE内の全レジスタが無効とマークされ、そのよう
にセットされたレジスタにアクセスするには、ZZT RFIL
Eからその入力を引き出さなければならない。 b. 行R [ r,* ]をスキャンし、{BWGID',ID'}が{BWGI
D,ID}より小さな最大のタグになるような{BWGID',ID',D
ATA}を含むR [ r,k ]を探す。 c. もし(kがpでない)ならば、DATAが"?"でなくな
るまで待つ。その後、DATAをR [ r,p ]にコピーする。 2. EXECUTE: 命令コードに基づいて以下のことを行
う。 a. MEMORY FETCH: 要求{FETCH,LC,{BWGID,ID},ADDRE
SS}をメモリ階層インターフェース145(図1)に送
り、結果が得られるまで待つ。 b. MOMORY STORE: 要求{STORE,LC,{BWGID,ID},ADDRE
SS,DATA}をメモリ階層インターフェース145に送る。 c. BRANCH: メッセージ{BDONE,LC,{BWGID,ID}}をバ
ス890を介してプルーニング・モニタ542に送る。
EモードでBWGが認識される時、誤った分岐のLCに先行す
るLCへのロール・バックが発生する。ZZTフレーム内の
要素をそのLCから後向きに走査することによって全レジ
スタの正しい状態が決定でき、これらをその状態にリセ
ットする。Eモードでの実行は正しい目標から続行す
る。もし分岐が誤って推測されていたならば、メッセー
ジ{BWG,LC,{BWGID,ID},CORRECT-TARGET-ADDRESS}をバス
890を介してプルーニング・モニタ542に送る。 d. OTHER: 適当な論理を実行する。 3. RECORD: 結果を(それがあれば)宛先レジスタに
記憶する。D内の各レジスタrについてR [ r,p ]を{BWGI
D,ID,DATA}で置き換える。分岐命令が実行される場合、
ZZTキャッシュ・ディレクトリを検査して、分岐アドレ
スとの一致を探す。一致がある場合現Zコードが記録さ
れ、Zコードへの遷移が行われる。 4. 一致がなくこれまでに作成されたZコードが十分
に長いと判断される場合には、そのZセグメントが終了
し、Eモードへの再進入が開始される。 B.もしφ(ID)がpと異なるならば以下のことを行う。 1. SEND: S内の各レジスタrについて a. 行R [ r,* ]をスキャンし、{BWGID,ID}より小さ
な最大の{BWGID',ID'}を有する項R [ r,k ] = {BWGID',
ID',DATA}を探す。 b. もしk = p かつ {r,BWGID',ID',φ(ID)}が命令{B
WGID',ID'}のDリスト内になければ、以下のことを行
う。 1) メッセージ{r,DATA,BWGID',ID'}をプロセッサφ
(ID)に送る。 2) {r,BWGID',ID',φ(ID)}を命令{BWGID',ID'}のDリ
ストに入力する。 3) {r,BWGID',ID'}を命令{BWGID,ID}のSリストに入
力する。 2. RECEIVE: D内の各レジスタrについて、もしR [
r, φ(ID) ]のセル有効ビット320が"?"でないとき
は、R [ r,φ(ID) ]を{BWGID,ID,?}で置き換える。MHS
が将来PEがメッセージを必要とすることを予想できるの
は、Eモードで全PEに全命令が見えることおよびPEが非
同期に動作することの結果である。所与のPEの{BWGID,I
D}に関するメッセージが早期に到着する場合はこのメッ
セージがそのPEが必要とする送出側PEからの最も早期の
メッセージであることを意味し、そのPEによるこのレジ
スタの中間的修正は一切記録する必要がないことを意味
する。 C. 命令が分岐であるならば、各レジスタrについ
て、その分岐のLCでレジスタの値をどの命令が最後に変
更するかを決定する必要がある。これを行うことの意味
はあるレジスタの値を最後にセットしたPEが、別のPEに
ある命令が割り当てられている場合に、その命令を割り
当てられたPEにメッセージを送らなければならないと決
定することに匹敵する。このアルゴリズムでは、ZZTメ
ッセージがその命令のDリスト上に既に存在する場合に
は、第2のメッセージをそのZZTフレームに送らないの
で、LCを明示する必要はない。
第6節の「EモードでのZZT構造の使用法」で指定された
指示に従う。Eモード実行に入る時、ZZT RFILEは入口点
での全レジスタの有効な内容を含んでいる。遷移の時点
で、全PE内の全レジスタが無効とマークされ、そのよう
にセットされたレジスタにアクセスするには、ZZT RFIL
Eからその入力を引き出さなければならない。 b. 行R [ r,* ]をスキャンし、{BWGID',ID'}が{BWGI
D,ID}より小さな最大のタグになるような{BWGID',ID',D
ATA}を含むR [ r,k ]を探す。 c. もし(kがpでない)ならば、DATAが"?"でなくな
るまで待つ。その後、DATAをR [ r,p ]にコピーする。 2. EXECUTE: 命令コードに基づいて以下のことを行
う。 a. MEMORY FETCH: 要求{FETCH,LC,{BWGID,ID},ADDRE
SS}をメモリ階層インターフェース145(図1)に送
り、結果が得られるまで待つ。 b. MOMORY STORE: 要求{STORE,LC,{BWGID,ID},ADDRE
SS,DATA}をメモリ階層インターフェース145に送る。 c. BRANCH: メッセージ{BDONE,LC,{BWGID,ID}}をバ
ス890を介してプルーニング・モニタ542に送る。
EモードでBWGが認識される時、誤った分岐のLCに先行す
るLCへのロール・バックが発生する。ZZTフレーム内の
要素をそのLCから後向きに走査することによって全レジ
スタの正しい状態が決定でき、これらをその状態にリセ
ットする。Eモードでの実行は正しい目標から続行す
る。もし分岐が誤って推測されていたならば、メッセー
ジ{BWG,LC,{BWGID,ID},CORRECT-TARGET-ADDRESS}をバス
890を介してプルーニング・モニタ542に送る。 d. OTHER: 適当な論理を実行する。 3. RECORD: 結果を(それがあれば)宛先レジスタに
記憶する。D内の各レジスタrについてR [ r,p ]を{BWGI
D,ID,DATA}で置き換える。分岐命令が実行される場合、
ZZTキャッシュ・ディレクトリを検査して、分岐アドレ
スとの一致を探す。一致がある場合現Zコードが記録さ
れ、Zコードへの遷移が行われる。 4. 一致がなくこれまでに作成されたZコードが十分
に長いと判断される場合には、そのZセグメントが終了
し、Eモードへの再進入が開始される。 B.もしφ(ID)がpと異なるならば以下のことを行う。 1. SEND: S内の各レジスタrについて a. 行R [ r,* ]をスキャンし、{BWGID,ID}より小さ
な最大の{BWGID',ID'}を有する項R [ r,k ] = {BWGID',
ID',DATA}を探す。 b. もしk = p かつ {r,BWGID',ID',φ(ID)}が命令{B
WGID',ID'}のDリスト内になければ、以下のことを行
う。 1) メッセージ{r,DATA,BWGID',ID'}をプロセッサφ
(ID)に送る。 2) {r,BWGID',ID',φ(ID)}を命令{BWGID',ID'}のDリ
ストに入力する。 3) {r,BWGID',ID'}を命令{BWGID,ID}のSリストに入
力する。 2. RECEIVE: D内の各レジスタrについて、もしR [
r, φ(ID) ]のセル有効ビット320が"?"でないとき
は、R [ r,φ(ID) ]を{BWGID,ID,?}で置き換える。MHS
が将来PEがメッセージを必要とすることを予想できるの
は、Eモードで全PEに全命令が見えることおよびPEが非
同期に動作することの結果である。所与のPEの{BWGID,I
D}に関するメッセージが早期に到着する場合はこのメッ
セージがそのPEが必要とする送出側PEからの最も早期の
メッセージであることを意味し、そのPEによるこのレジ
スタの中間的修正は一切記録する必要がないことを意味
する。 C. 命令が分岐であるならば、各レジスタrについ
て、その分岐のLCでレジスタの値をどの命令が最後に変
更するかを決定する必要がある。これを行うことの意味
はあるレジスタの値を最後にセットしたPEが、別のPEに
ある命令が割り当てられている場合に、その命令を割り
当てられたPEにメッセージを送らなければならないと決
定することに匹敵する。このアルゴリズムでは、ZZTメ
ッセージがその命令のDリスト上に既に存在する場合に
は、第2のメッセージをそのZZTフレームに送らないの
で、LCを明示する必要はない。
【0127】もし解読された命令が分岐であるならば、
各PE pについて 1.SEND: 全レジスタrについて a. 行R [ r,* ]をスキャンし、その分岐の{BWGID,I
D}より小さな最大の{BWGID',ID'}を有する項R [ r,k ]
= {BWGID',ID',DATA}を探す。 b. もし(k = p かつ {r,BWGID',ID',ZZT Frame}が
命令{BWGID',ID'}のDリストに含まれない)ならば以下
のことを行う: 1) ZZTへのメッセージ{r,DATA,BWGID',ID',LC of th
e branch'}をバス110を介してメモリ階層140に送
る。このメッセージは第6節の「EモードでのZZT構造の
使用法」で説明したZZT STOREACCESSとして送られる。 2) {r,BWGID',ID',ZZT Frame}を命令{BWGID',ID'}の
Dリストに入力する。
各PE pについて 1.SEND: 全レジスタrについて a. 行R [ r,* ]をスキャンし、その分岐の{BWGID,I
D}より小さな最大の{BWGID',ID'}を有する項R [ r,k ]
= {BWGID',ID',DATA}を探す。 b. もし(k = p かつ {r,BWGID',ID',ZZT Frame}が
命令{BWGID',ID'}のDリストに含まれない)ならば以下
のことを行う: 1) ZZTへのメッセージ{r,DATA,BWGID',ID',LC of th
e branch'}をバス110を介してメモリ階層140に送
る。このメッセージは第6節の「EモードでのZZT構造の
使用法」で説明したZZT STOREACCESSとして送られる。 2) {r,BWGID',ID',ZZT Frame}を命令{BWGID',ID'}の
Dリストに入力する。
【0128】Zモードでの命令処理Zモードでは、各命令
はそれが割り当てられたプロセッサだけに見える。プロ
セッサpは属性がBWGID,ID,LCであり、入力レジスタ・セ
ットとしてS、出力レジスタ・セットとしてDを有し、Z
コードからのSリストとDリストを有する命令を実行する
ために以下の処置をとる。 1.SYNCHRONIZE: Sリスト内の各項{r,BWGID',ID'}に
ついて以下のことを行う。 a. もし(そのレジスタが無効としてマークされてい
る) b. あるZ命令が関連する有効ビット310によって
無効とマークされているレジスタにアクセスする場合に
は、FETCHメッセージがZZTRFILEに送られ、このZZT RFI
LEが呼び出されたセグメント用のレジスタ初期値を返
す。このZZT RFILE内の値は第6節で説明したように遷
移の時点で確立される。 c. R [ r,φ(ID) ] = {BWGID',ID',DATA}となり、DA
TAが"?"と等しくなくなるまで待つ。 d. DATAをR [ r,p ]にロードし、R [ r,φ(ID) ]を
空(すなわち?,?)とマークする。MHSにこのエントリ用
の次のメッセージを送るよう伝える。 2.EXECUTE: 命令コードに基づいて以下のことを行
う。 a. MEMORY FETCH: 要求{FETCH,LC,{BWGID,ID},ADDR
ESS}をOSC/PSC制御500に送り、その結果が得られる
まで待つ。 b. MEMORY STORE: 要求{STORE,LC,{BWGID,ID},ADDR
ESS,DATA}をOSC/PSC制御500に送る。 c. BRANCH: 要求{BDONE,LC,{BWGID,ID}}をバス89
0を介してプルーニング・モニタ542に送る。BWGが
認識される時またはZコードが終了する時、ZZT RFILEの
更新によって最終状態が確立される。ZZTスキャナは関
連する全レジスタが変化するのを待ち、OLCがBWGのLCに
一致すると、すべての記憶命令が記入済みであることが
保証されるので、関連する全PEの活動の完了が保証され
る。もし分岐が誤って予想されているならば、メッセー
ジ {BWG,LC,{BWG ID,ID},CORRECT-TARGET-ADDRESS}をZZTに
送る。 d. OTHER: 適当な論理を実行する。 3.COMMUNICATE: 結果を(それがあれば)宛先レジス
タに記憶する。BWGが認識される時またはZコードが終了
する時、ZZT RFILEの更新によって最終状態が確立され
る。ZZTスキャナは関連する全レジスタが変化するのを
待ち、OLCがBWGのLCに一致すると、すべての記憶命令が
記入済みであることが保証されるので、関連する全PEの
活動の完了が保証される。 4.別のモードを開始する直前に、全プロセッサ内の全
レジスタが有効ビット310によって無効にセットされ
る。Dリスト内の各項{r,q}について、メッセージ{r,DAT
A,BWGID,ID}をプロセッサqに送る。
はそれが割り当てられたプロセッサだけに見える。プロ
セッサpは属性がBWGID,ID,LCであり、入力レジスタ・セ
ットとしてS、出力レジスタ・セットとしてDを有し、Z
コードからのSリストとDリストを有する命令を実行する
ために以下の処置をとる。 1.SYNCHRONIZE: Sリスト内の各項{r,BWGID',ID'}に
ついて以下のことを行う。 a. もし(そのレジスタが無効としてマークされてい
る) b. あるZ命令が関連する有効ビット310によって
無効とマークされているレジスタにアクセスする場合に
は、FETCHメッセージがZZTRFILEに送られ、このZZT RFI
LEが呼び出されたセグメント用のレジスタ初期値を返
す。このZZT RFILE内の値は第6節で説明したように遷
移の時点で確立される。 c. R [ r,φ(ID) ] = {BWGID',ID',DATA}となり、DA
TAが"?"と等しくなくなるまで待つ。 d. DATAをR [ r,p ]にロードし、R [ r,φ(ID) ]を
空(すなわち?,?)とマークする。MHSにこのエントリ用
の次のメッセージを送るよう伝える。 2.EXECUTE: 命令コードに基づいて以下のことを行
う。 a. MEMORY FETCH: 要求{FETCH,LC,{BWGID,ID},ADDR
ESS}をOSC/PSC制御500に送り、その結果が得られる
まで待つ。 b. MEMORY STORE: 要求{STORE,LC,{BWGID,ID},ADDR
ESS,DATA}をOSC/PSC制御500に送る。 c. BRANCH: 要求{BDONE,LC,{BWGID,ID}}をバス89
0を介してプルーニング・モニタ542に送る。BWGが
認識される時またはZコードが終了する時、ZZT RFILEの
更新によって最終状態が確立される。ZZTスキャナは関
連する全レジスタが変化するのを待ち、OLCがBWGのLCに
一致すると、すべての記憶命令が記入済みであることが
保証されるので、関連する全PEの活動の完了が保証され
る。もし分岐が誤って予想されているならば、メッセー
ジ {BWG,LC,{BWG ID,ID},CORRECT-TARGET-ADDRESS}をZZTに
送る。 d. OTHER: 適当な論理を実行する。 3.COMMUNICATE: 結果を(それがあれば)宛先レジス
タに記憶する。BWGが認識される時またはZコードが終了
する時、ZZT RFILEの更新によって最終状態が確立され
る。ZZTスキャナは関連する全レジスタが変化するのを
待ち、OLCがBWGのLCに一致すると、すべての記憶命令が
記入済みであることが保証されるので、関連する全PEの
活動の完了が保証される。 4.別のモードを開始する直前に、全プロセッサ内の全
レジスタが有効ビット310によって無効にセットされ
る。Dリスト内の各項{r,q}について、メッセージ{r,DAT
A,BWGID,ID}をプロセッサqに送る。
【0129】非同期入力に対するプロセッサの処置 1.R [ r,k ]用のメッセージを受け取る時、その内容
をそのメッセージで置換する。
をそのメッセージで置換する。
【0130】第9節 基本実施態様に対する拡張 第1節から第8節で詳述したMSISの基本実施態様では、
各処理要素が、EコードとZコードの付随的実行を伴うE
モード相とZモード相の連続するシーケンスに関与す
る。第7節の命令デコーダ/スケジューラ700の説明
では、外部オーバーライド入力710のための手筈がと
とのえられた。この種のオーバーライドには、以下のも
のが含まれる。 ・外部供給源から供給される各命令用の定義済みφ71
1。 ・処理要素間でのレジスタの分割によって、すなわち所
有権の定義によって割当てを制御する、特定規則71
2。 ・特定の命令からZコード生成を開始するためのPセグメ
ント開始アドレス713と、特定の命令でZコード生成
を停止させるためのPセグメント終了アドレス714。
各処理要素が、EコードとZコードの付随的実行を伴うE
モード相とZモード相の連続するシーケンスに関与す
る。第7節の命令デコーダ/スケジューラ700の説明
では、外部オーバーライド入力710のための手筈がと
とのえられた。この種のオーバーライドには、以下のも
のが含まれる。 ・外部供給源から供給される各命令用の定義済みφ71
1。 ・処理要素間でのレジスタの分割によって、すなわち所
有権の定義によって割当てを制御する、特定規則71
2。 ・特定の命令からZコード生成を開始するためのPセグメ
ント開始アドレス713と、特定の命令でZコード生成
を停止させるためのPセグメント終了アドレス714。
【0131】これらすべての生成および供給は、実行中
のIストリーム全体を分析し、これをPセグメントに分解
し、前述の外部オーバーライド入力710を使用してMS
ISに指命する、別のプロセッサによって行うことができ
る。
のIストリーム全体を分析し、これをPセグメントに分解
し、前述の外部オーバーライド入力710を使用してMS
ISに指命する、別のプロセッサによって行うことができ
る。
【0132】MSISは、独立型システムであるが、別のプ
ロセッサの制御下にあるサブシステムとしてMSISが動作
することも、明らかに本発明の範囲に含まれる。
ロセッサの制御下にあるサブシステムとしてMSISが動作
することも、明らかに本発明の範囲に含まれる。
【0133】外部から供給されるφの場合、Eモード中
に検出されたBWGに関連する代替プログラム・セグメン
トに含まれる命令が、やはり事前に指定されたφを有し
ていなければならないという必要条件が存在する。
に検出されたBWGに関連する代替プログラム・セグメン
トに含まれる命令が、やはり事前に指定されたφを有し
ていなければならないという必要条件が存在する。
【0134】さらに、制御プロセッサによるMSIS性能の
監視を用いて、生成されるZセグメントに関する将来の
オーバーライドの最良の方式を決定することができる。
最良とは、性能の改善、メッセージの減少、または他の
要望項目に関していう。
監視を用いて、生成されるZセグメントに関する将来の
オーバーライドの最良の方式を決定することができる。
最良とは、性能の改善、メッセージの減少、または他の
要望項目に関していう。
【0135】MSIS編成内ではある選択が行われている
が、その代替案が存在し、基本発明から逸脱することな
しに代替案を実施することができる。それには、以下の
ことが含まれるが、それだけに限定されるものではな
い。 ・Zコード用の共通キャッシュ ・Zコード処理に必要な情報を供給するために並列にア
クセスされる追加アレイと併用される、Zコードの命令
部分の供給源として、メモリ階層を使用する。 ・処理要素内の順序番号として各処理要素内で直接に計
算可能な、相対的命令識別子を使用する。 ・条件性レベルだけに基づいてOSCを管理する。 ・各処理要素に、レジスタ・ファイル300として記述
されるレジスタ・ファイルを見せ、MHSの必要をなくす
ことのできる、全処理要素に共通のレジスタ・ファイル
を使用する。 ・他の処理要素が、全命令を復号し、それらのZキャッ
シュ内に必要な情報をセットアップしている間に、ただ
1つの処理要素を使用してEモードのすべての実行を行
う。(この場合の命令は、Eモードでメッセージを送る
必要のない命令である。メッセージ処理の意味を、完了
したZコードがメッセージの送受の前提条件になるよう
に変更する場合、メッセージをZモードに制限すること
が必要条件になる。この状況では、Eモードにメッセー
ジが存在しないことが有効に利用できる。) ・MSISをそれ自体で起動させる手段を追加する。(MSIS
には、アドレスと、レジスタを初期設定する方法だけが
必要である。アドレスされた命令が、最初の幾つかの命
令に含まれるすべてのレジスタを初期設定する場合に
は、MSISがそれ自体で初期設定することができる。これ
を行うために、アドレスがMSIS内の全キャッシュに送ら
れ、全キャッシュが、そのアドレスが一致しないと認
め、Eモードがセットされる。このアドレスを使用するI
フェッチは、メモリ階層に向かい、EモードでZコードが
生成され、Eモード中に生成されたZZT RFILEから導出さ
れるレジスタ内容を使って、最後に次のPセグメントへ
の遷移を行う手段が生成される。その後は、すべてが有
効な計算機状態で繰り返され、すべてがうまく機能す
る。Iフェッチは、キャッシュ障害およびページ不在を
引き起こす可能性があるが、それ以外のすべては、完全
に正常であり許容できる。)。
が、その代替案が存在し、基本発明から逸脱することな
しに代替案を実施することができる。それには、以下の
ことが含まれるが、それだけに限定されるものではな
い。 ・Zコード用の共通キャッシュ ・Zコード処理に必要な情報を供給するために並列にア
クセスされる追加アレイと併用される、Zコードの命令
部分の供給源として、メモリ階層を使用する。 ・処理要素内の順序番号として各処理要素内で直接に計
算可能な、相対的命令識別子を使用する。 ・条件性レベルだけに基づいてOSCを管理する。 ・各処理要素に、レジスタ・ファイル300として記述
されるレジスタ・ファイルを見せ、MHSの必要をなくす
ことのできる、全処理要素に共通のレジスタ・ファイル
を使用する。 ・他の処理要素が、全命令を復号し、それらのZキャッ
シュ内に必要な情報をセットアップしている間に、ただ
1つの処理要素を使用してEモードのすべての実行を行
う。(この場合の命令は、Eモードでメッセージを送る
必要のない命令である。メッセージ処理の意味を、完了
したZコードがメッセージの送受の前提条件になるよう
に変更する場合、メッセージをZモードに制限すること
が必要条件になる。この状況では、Eモードにメッセー
ジが存在しないことが有効に利用できる。) ・MSISをそれ自体で起動させる手段を追加する。(MSIS
には、アドレスと、レジスタを初期設定する方法だけが
必要である。アドレスされた命令が、最初の幾つかの命
令に含まれるすべてのレジスタを初期設定する場合に
は、MSISがそれ自体で初期設定することができる。これ
を行うために、アドレスがMSIS内の全キャッシュに送ら
れ、全キャッシュが、そのアドレスが一致しないと認
め、Eモードがセットされる。このアドレスを使用するI
フェッチは、メモリ階層に向かい、EモードでZコードが
生成され、Eモード中に生成されたZZT RFILEから導出さ
れるレジスタ内容を使って、最後に次のPセグメントへ
の遷移を行う手段が生成される。その後は、すべてが有
効な計算機状態で繰り返され、すべてがうまく機能す
る。Iフェッチは、キャッシュ障害およびページ不在を
引き起こす可能性があるが、それ以外のすべては、完全
に正常であり許容できる。)。
【0136】ほとんどの代替案では、全体的な整合性と
正しさを維持するために、好ましい実施例に適度の修正
を加えることが必要である。
正しさを維持するために、好ましい実施例に適度の修正
を加えることが必要である。
【0137】ただ1つの好ましい実施例に関して本発明
を説明してきたが、特許請求の範囲の趣旨および範囲内
で修正を加えて本発明を実施できることが、当業者には
理解されよう。
を説明してきたが、特許請求の範囲の趣旨および範囲内
で修正を加えて本発明を実施できることが、当業者には
理解されよう。
【図1】本発明による自己並列化式処理システムの好ま
しい実施例のブロック図である。
しい実施例のブロック図である。
【図2】好ましい実施例の単一処理要素によって使用さ
れる専用Zキャッシュの構造を示す図である。
れる専用Zキャッシュの構造を示す図である。
【図3】Zキャッシュのディレクトリ内のエントリのフ
ォーマットを示す図である。
ォーマットを示す図である。
【図4】Zキャッシュのセル内に記憶されるZ命令のフォ
ーマットを示す図である。
ーマットを示す図である。
【図5】Zキャッシュ・セル用の命令フォーマット拡張
部分を示す図である。
部分を示す図である。
【図6】好ましい実施例における1つの処理要素用のレ
ジスタ・ファイルを示す図である。
ジスタ・ファイルを示す図である。
【図7】好ましい実施例において処理要素にレジスタ値
を通信するメッセージ処理システムのブロック図であ
る。
を通信するメッセージ処理システムのブロック図であ
る。
【図8】メッセージ処理システムの内部待ち行列を示す
図である。
図である。
【図9】好ましい実施例において順序外れハザードを監
視するOSC/PSC制御のブロック図である。
視するOSC/PSC制御のブロック図である。
【図10】OSC/PSC制御のフェッチ・テーブル・エント
リのフォーマットを示す図である。
リのフォーマットを示す図である。
【図11】OSC/PSC制御の記憶テーブル・エントリのフ
ォーマットを示す図である。
ォーマットを示す図である。
【図12】OSC/PSC制御のプルーニング・モニタを示す
図である。
図である。
【図13】誤った分岐予測またはセグメント遷移の際に
レジスタ値を設定するのに使用されるZZTフレームおよ
びZZT RFILEを制御し使用するために用いられるZZTキャ
ッシュのブロック図である。
レジスタ値を設定するのに使用されるZZTフレームおよ
びZZT RFILEを制御し使用するために用いられるZZTキャ
ッシュのブロック図である。
【図14】ZZTキャッシュ・ディレクトリ内の1エント
リのフォーマットを示す図である。
リのフォーマットを示す図である。
【図15】ZZTキャッシュ・アレイ内の1要素のフォー
マットを示す図である。
マットを示す図である。
【図16】ZZTフレームのブロック図である。
【図17】ZZTフレーム内のZZTセルのフォーマットを示
す図である。
す図である。
【図18】ZZTセルに送られるメッセージのフォーマッ
トを示す図である。
トを示す図である。
【図19】好ましい実施例における処理要素内のデコー
ダ/スケジューラのブロック図である。
ダ/スケジューラのブロック図である。
100 処理要素 130 実行ユニット 140 メモリ階層 210 Zキャッシュ・ディレクトリ 220 Zキャッシュ・アレイ 300 レジスタ・ファイル 400 メッセージ処理システム(MHS) 420 使用可能レジスタ・ファイル・スロット・テー
ブル(ARFST) 500 OSC/PSC制御 510 フェッチ・テーブル 520 記憶テーブル 600 セグメント遷移ユニット(ZZT) 620 ZZTキャッシュ・ディレクトリ 630 ZZTキャッシュ・アレイ 640 ZZTフレーム 650 ZZT RFILE 700 命令デコーダ/スケジューラ
ブル(ARFST) 500 OSC/PSC制御 510 フェッチ・テーブル 520 記憶テーブル 600 セグメント遷移ユニット(ZZT) 620 ZZTキャッシュ・ディレクトリ 630 ZZTキャッシュ・アレイ 640 ZZTフレーム 650 ZZT RFILE 700 命令デコーダ/スケジューラ
フロントページの続き (72)発明者 カッタムリ・エーカナダム アメリカ合衆国10598、ニューヨーク州 ヨークタウン・ハイツ、カリー・ストリ ート 3263番地 (56)参考文献 特開 平3−119428(JP,A) SUPERCOMPUTERS:DE SIGN AND APPLICATI ONS,p.186−203,(1984),J. R.ALLEN 外,”PFC:A p rogram to convert fortran to paralle l form" COMPCON’87,IEEE,p. 177−180,(1987),J.A.FISH ER,”A NEW ARCHITEC TURE FOR SUPERCOMP UTING" (58)調査した分野(Int.Cl.6,DB名) G06F 15/16 - 15/177 JICSTファイル(JOIS)
Claims (8)
- 【請求項1】命令実行シーケンスを並列に処理するため
の自己並列化式デジタル・コンピュータであって、 同一の命令実行シーケンスに対して同じ実行結果をもた
らす第1実行モードおよび第2実行モードのいずれかで
前記実行シーケンス内の各命令を実行するための複数の
処理要素と、 前記処理要素間に分散されている前記命令実行シーケン
ス内の各命令に前記処理要素の内の1つを割り当てる手
段と、 前記第1実行モードにおいて、異なる処理要素に割り当
てられた命令対の間の実行依存性を明らかにする手段
と、 前記明らかにされた実行依存性を、その第1部分を前記
各命令対内の一つの命令に関連する記録データ送出義務
として、第2部分を前記各命令対内の他の命令に関連す
る記録データ受取り要求として記録する手段と、 前記第1実行モードを終了させて命令実行シーケンスの
少なくとも一部分および該実行シーケンスの前記一部分
に関連する記録された実行依存性を含む実行セグメント
をZセグメントとして定義する手段と、 任意の定義されたZセグメントの少なくとも一部分を前
記第2実行モードで実行する手段と、 前記実行中のZセグメントの少なくとも一部分を実行し
た後に、前記第2実行モードでのZセグメントの実行を
終了させる手段と、 前記第1実行モードの終了時または前記第2実行モード
の終了時に、前記実行シーケンス内の次の命令を実行す
るのに使用できるZセグメントが定義済みであるか否か
判断する手段と、 前記判断手段に応答して、使用可能なZセグメントが定
義済みであると判断される場合に、前記次の命令の実行
のために前記第2実行モードへの遷移を行い、使用可能
なZセグメントが定義されていないと判断された場合
に、前記次の命令の実行のために前記第1実行モードへ
の遷移を行う手段とを含み、 前記各処理要素は前記第2実行モードでは、実行中のZ
セグメントが定義された時に前記第1実行モードにあっ
た各処理要素に割り当てられた命令のみを実行すること
を特徴とする自己並列化式コンピュータ。 - 【請求項2】前記第2実行モードの前記各処理要素は、
前記各処理要素に割り当てられた命令に関連する記録デ
ータの送出義務を満たし、関連する記録データ受取り要
求を有する前記各処理要素に割り当てられた命令の実行
を前記記録データ受取り要求が満たされるまで遅延させ
ることを特徴とする、請求項1に記載の自己並列化式コ
ンピュータ。 - 【請求項3】前記実行シーケンス内の前記命令は分岐命
令、レジスタ値修正命令およびメモリ値修正命令を含
み、 前記コンピュータはレジスタ値を記憶するためのレジス
タおよびメモリ値を記憶するためのメモリを有し、 前記各処理要素は前記分岐命令を検出し前記分岐命令の
数をカウントする手段を有し、 前記の実行依存性を明らかにする手段は前記処理要素の
内の1つに割り当てられた前記命令の内の1つによって
セットされるレジスタが前記処理要素の内の別の1つに
割り当てられた前記命令の内の別の1つによって使用さ
れる場合を識別し、 前記の明らかにされた実行依存性を記録する手段はデー
タ送出義務を識別するエントリを前記レジスタ・セット
命令に関連する第1リスト中に作成し、データ受取り要
求を識別するエントリを前記レジスタ使用命令に関連す
る第2リスト中に作成することを特徴とする、請求項1
に記載の自己並列化式コンピュータ。 - 【請求項4】前記の遷移を行う手段は、 分岐命令カウントから導出される条件性レベルを前記各
命令に割り当てる手段と、 前記第1実行モードで実行される各分岐命令に関連して
その分岐先の命令アドレスを記録する手段と、 前記第2実行モードで実行される前記分岐命令のそれぞ
れについて、前記分岐命令に関連して記録された前記命
令アドレス以外の命令アドレスに分岐される時は、前記
分岐命令の実行が必ず分岐誤推定と見なされるものとし
て、前記分岐命令が前記分岐命令に関連して記録された
前記アドレスへ分岐されるか否かを判断する手段と、 実行中のZセグメント内で最高の条件性レベルであり、
前のすべての分岐命令が前記の前の分岐命令に関連して
記録されたアドレスへ分岐された時点を表す証明済み条
件性レベルを決定する手段と、 前記各メモリ値修正命令によって前記メモリに記憶され
るべき前記各メモリ値を記録するが、少なくとも証明済
み条件性レベルが前記の記録されたメモリ値を生成する
メモリ値修正命令の条件性レベルと同じ大きさになるま
では、前記メモリへの前記の記録された各メモリ値の記
憶動作を据え置くメモリ値記録手段と、 各条件性レベルごとに修正された前記レジスタのそれぞ
れについて、前記各条件性レベルでの最終レジスタ値を
記録するレジスタ値記録手段と、 前記レジスタ値記録手段と前記メモリ値記録手段に応答
して、分岐誤推測の発生時またはZセグメント実行の終
了時またはZセグメントの定義時に、前記レジスタのす
べておよび前記メモリに対して有効な計算機状態を回復
する手段とを含むことを特徴とする、請求項3に記載の
自己並列化式コンピュータ。 - 【請求項5】前記レジスタのそれぞれについて各条件性
レベルでの最終レジスタ値を記録する前記レジスタ値記
録手段は、同じ条件性レベルを有する前記命令の各組の
間で、前記各組の前記命令の内のどれが前記各レジスタ
を最後に修正した命令かを決定する手段を含むことを特
徴とする、請求項4に記載の自己並列化式コンピュー
タ。 - 【請求項6】前記遷移を行う手段は、 実行中のZセグメント内で得られる最高の証明済み条件
性レベルである最終条件性レベルを決定する手段と、 前記最終条件性レベルが決定される時に据え置かれたま
まになっている、前記最終条件性レベルより大きくない
条件性レベルを有するメモリ値修正命令によって作成さ
れた、前記の記録されたメモリ値で前記メモリを更新す
る手段とを備えることを特徴とする、請求項4に記載の
自己並列化式コンピュータ。 - 【請求項7】レジスタ値を記憶するためのレジスタおよ
びメモリ値を記憶するためのメモリを備え、分岐命令、
レジスタ値修正命令およびメモリ値修正命令を含む命令
実行シーケンスを並列に処理するための自己並列化式デ
ジタル・コンピュータであって、 前記分岐命令を検出し該分岐命令の数をカウントする手
段をそれぞれ有する複数の処理要素と、 前記処理要素の間で分散された前記各命令に前記処理要
素の内の1つを割り当てる手段と、 分岐命令のカウントから導出される条件性レベルを前記
各命令に割り当てる手段と、 前記命令を実行依存性を明らかにする第1実行モードで
実行する手段と、 前記の明らかにされた実行依存性を、その第1部分を前
記1つのレジスタをセットする前記命令に関連するデー
タ送出義務として、第2部分を前記1つのレジスタを使
用した前記別の1つの命令に関連するデータ受取り要求
として記録する手段と、 前記第1実行モードで実行される各分岐命令に関連し
て、その分岐先の命令アドレスを記録する手段と、 前記第1実行モードを終了させて命令実行シーケンスの
少なくとも一部分および該命令実行シーケンスの前記一
部分に関連する記録された実行依存性を含む実行セグメ
ントをZセグメントとして定義する手段と、 記録されたZセグメント内の命令を第2実行モードで実
行する手段と、 前記第2実行モードで実行される前記分岐命令のそれぞ
れについて、分岐が前記分岐命令に関連して記録された
前記アドレスになされるか否かを判断し、分岐が前記分
岐命令に関連して記録された前記命令アドレス以外のア
ドレスになされる時は、前記分岐命令の実行が分岐誤推
定であるとする手段と、 実行中のZセグメント内で最高の条件性レベルであり、
前のすべての分岐命令が該前の分岐命令に関連して記録
されたアドレスに対してなされた時点を表す、証明済み
条件性レベルを決定する手段と、 前記各メモリ値修正命令によって前記メモリに記憶され
るべき前記各メモリ値を記録するが、少なくとも証明済
み条件性レベルが前記の記録されたメモリ値を生成する
メモリ値修正命令の条件性レベルと同じ大きさになるま
では、前記メモリへの前記の記録された各メモリ値の記
憶動作を据え置くメモリ値記録手段と、 各条件性レベルで修正された前記レジスタのそれぞれに
ついて、前記各条件性レベルでの最終レジスタ値を記録
するレジスタ値記録手段と、 前 記レジスタ値記録手段と前記メモリ値記録手段に応答
して、分岐誤推測の発生時またはZセグメント実行の終
了時またはZセグメントの定義時に、実行しようとする
次の命令に有効なコンピュータ状態を提示するため、前
記レジスタのすべておよび前記メモリに対して有効な前
記コンピュータ状態を回復する手段とを含み、 前記第1実行モードでは前記レジスタの1つが前記処理
要素の第1のものに割り当てられた第1の命令によりセ
ットされ、前記処理要素の第2のものに割り当てられた
第2の命令により使用され、 前記第2実行モードは記録された命令のZセグメントお
よび関連する実行依存性を利用して前記Zセグメント内
の命令を並列に実行するものであり、 前記各処理要素は前記第2実行モードにおいては前記各
処理要素に割り当てられたZセグメント内の命令のみを
実行し、 前記各処理要素は前記第2実行モードにおいては、前記
各処理要素の割り当てられた命令に関連する記録データ
の送出義務を満たすものであり、かつ関連する記録デー
タ受取り要求を有する前記各処理要素に割り当てられた
命令の実行を、前記記録データ受取り要求が満たされる
まで遅延させるものであることを特徴とする、自己並列
化式コンピュータ。 - 【請求項8】命令実行シーケンスを並列処理するための
自己並列化の方法であって、 同一の命令実行シーケンスに対して同じ実行結果をもた
らす第1実行モードおよび第2実行モードのいずれかで
前記実行シーケンス内の各命令を複数の処理要素上で実
行するステップと、 前記処理要素間で分散された前記命令実行シーケンス内
の各命令に前記処理要素の内の1つを割り当てるステッ
プと、 前記第1実行モードで、異なる処理要素に割り当てられ
た命令対の間の実行依存性を明らかにするステップと、 前記の明らかにされた実行依存性を、その第1部分を前
記各命令対内の一つの命令に関連する記録データ送出義
務として、第2部分を前記各命令対内の他の命令に関連
する記録データ受取り要求として記録するステップと、 前記第1実行モードを終了させて命令実行シーケンスの
少なくとも一部分および該実行シーケンスの前記一部分
に関連する記録された実行依存性を含む実行セグメント
をZセグメントとして定義するステップと、 任意の定義されたZセグメントの少なくとも一部分を前
記第2実行モードで実行するステップと、 前記実行中のZセグメントの少なくとも一部分を実行し
た後に、前記第2実行モードでのZセグメントの実行を
終了させるステップと、 前記第1実行モードの終了時または前記第2実行モード
の終了時に、前記実行シーケンス内の次の命令を実行す
るのに使用できるZセグメントが定義済みであるか否か
判断するステップと、 使用可能なZセグメントが定義済みであると判断された
場合に、前記次の命令を前記第2実行モードで実行する
ステップと、 使用可能なZセグメントが定義されていないと判断され
た場合に、前記次の命令を前記第1実行モードで実行す
るステップとを含み、 前記各処理要素は前記第2実行モードでは、実行中のZ
セグメントが定義された時に前記第1実行モードにあっ
た各処理要素に割り当てられた命令のみを実行すること
を特徴とする自己並列化の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US731224 | 1991-07-15 | ||
US07/731,224 US5347639A (en) | 1991-07-15 | 1991-07-15 | Self-parallelizing computer system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05282264A JPH05282264A (ja) | 1993-10-29 |
JP2898820B2 true JP2898820B2 (ja) | 1999-06-02 |
Family
ID=24938623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4159092A Expired - Lifetime JP2898820B2 (ja) | 1991-07-15 | 1992-06-18 | 自己並列化式のコンピュータ・システムおよび方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5347639A (ja) |
EP (1) | EP0523345A3 (ja) |
JP (1) | JP2898820B2 (ja) |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5576867A (en) | 1990-01-09 | 1996-11-19 | Merck Patent Gesellschaft Mit Beschrankter Haftung | Liquid crystal switching elements having a parallel electric field and βo which is not 0° or 90° |
JPH05233281A (ja) * | 1992-02-21 | 1993-09-10 | Toshiba Corp | 電子計算機 |
US5848276A (en) * | 1993-12-06 | 1998-12-08 | Cpu Technology, Inc. | High speed, direct register access operation for parallel processing units |
JP3212213B2 (ja) * | 1994-03-16 | 2001-09-25 | 株式会社日立製作所 | データ処理装置 |
US5644779A (en) * | 1994-04-15 | 1997-07-01 | International Business Machines Corporation | Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction |
US5659722A (en) * | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
US5742843A (en) * | 1994-07-20 | 1998-04-21 | Fujitsu Limited | Control system for access between processing elements in a parallel computer |
JPH0887451A (ja) * | 1994-09-09 | 1996-04-02 | Internatl Business Mach Corp <Ibm> | アドレス変換を管理する方法およびアドレス変換マネージャ |
US5619680A (en) * | 1994-11-25 | 1997-04-08 | Berkovich; Semyon | Methods and apparatus for concurrent execution of serial computing instructions using combinatorial architecture for program partitioning |
US5600810A (en) * | 1994-12-09 | 1997-02-04 | Mitsubishi Electric Information Technology Center America, Inc. | Scaleable very long instruction word processor with parallelism matching |
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
JP3502216B2 (ja) * | 1995-07-13 | 2004-03-02 | 富士通株式会社 | 情報処理装置 |
US5943242A (en) * | 1995-11-17 | 1999-08-24 | Pact Gmbh | Dynamically reconfigurable data processing system |
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US5742823A (en) * | 1996-01-17 | 1998-04-21 | Nathen P. Edwards | Total object processing system and method with assembly line features and certification of results |
US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
US5802338A (en) * | 1996-10-01 | 1998-09-01 | International Business Machines Corporation | Method of self-parallelizing and self-parallelizing multiprocessor using the method |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
US5889947A (en) * | 1996-12-16 | 1999-03-30 | International Business Machines Corporation | Apparatus and method for executing instructions that select a storage location for output values in response to an operation count |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
DE19654593A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit |
DE19654846A1 (de) | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
ATE243390T1 (de) | 1996-12-27 | 2003-07-15 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.) |
US6401194B1 (en) * | 1997-01-28 | 2002-06-04 | Samsung Electronics Co., Ltd. | Execution unit for processing a data stream independently and in parallel |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
DE19704728A1 (de) | 1997-02-08 | 1998-08-13 | Pact Inf Tech Gmbh | Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines |
DE19704742A1 (de) | 1997-02-11 | 1998-09-24 | Pact Inf Tech Gmbh | Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand |
US5909698A (en) * | 1997-03-17 | 1999-06-01 | International Business Machines Corporation | Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory |
US6339840B1 (en) * | 1997-06-02 | 2002-01-15 | Iowa State University Research Foundation, Inc. | Apparatus and method for parallelizing legacy computer code |
AU8495098A (en) * | 1997-07-16 | 1999-02-10 | California Institute Of Technology | Improved devices and methods for asynchronous processing |
KR100243100B1 (ko) * | 1997-08-12 | 2000-02-01 | 정선종 | 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법 |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US5948096A (en) * | 1997-12-23 | 1999-09-07 | Intel Corporation | Apparatus and method for self-timed marking of variable length instructions having length-affecting prefix bytes |
US5978899A (en) * | 1997-12-23 | 1999-11-02 | Intel Corporation | Apparatus and method for parallel processing and self-timed serial marking of variable length instructions |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
WO2000000903A1 (fr) * | 1998-06-30 | 2000-01-06 | Mitsubishi Denki Kabushiki Kaisha | Processeur central multiple |
US7047232B1 (en) | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
JP2003505753A (ja) | 1999-06-10 | 2003-02-12 | ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング | セル構造におけるシーケンス分割方法 |
WO2001063416A1 (en) * | 2000-02-24 | 2001-08-30 | Bops Incorporated | Methods and apparatus for scalable array processor interrupt detection and response |
DE50115584D1 (de) | 2000-06-13 | 2010-09-16 | Krass Maren | Pipeline ct-protokolle und -kommunikation |
JP2004517386A (ja) | 2000-10-06 | 2004-06-10 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | 方法および装置 |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6990555B2 (en) | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
US7174536B1 (en) | 2001-02-12 | 2007-02-06 | Iowa State University Research Foundation, Inc. | Integrated interactive software visualization environment |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7210129B2 (en) | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7581076B2 (en) | 2001-03-05 | 2009-08-25 | Pact Xpp Technologies Ag | Methods and devices for treating and/or processing data |
WO2005045692A2 (en) | 2003-08-28 | 2005-05-19 | Pact Xpp Technologies Ag | Data processing device and method |
JP2004533691A (ja) | 2001-06-20 | 2004-11-04 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データを処理するための方法 |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US7577822B2 (en) | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
EP1483682A2 (de) | 2002-01-19 | 2004-12-08 | PACT XPP Technologies AG | Reconfigurierbarer prozessor |
EP2043000B1 (de) | 2002-02-18 | 2011-12-21 | Richter, Thomas | Bussysteme und Rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
EP1537486A1 (de) | 2002-09-06 | 2005-06-08 | PACT XPP Technologies AG | Rekonfigurierbare sequenzerstruktur |
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 |
WO2005001687A2 (en) | 2003-06-25 | 2005-01-06 | Ab Initio Software Corporation | Computer-aided parallelizing of computation graphs |
US7761691B2 (en) * | 2005-10-27 | 2010-07-20 | National Tsing Hua University | Method for allocating registers using simulated annealing controlled instruction scheduling |
US7765536B2 (en) * | 2005-12-21 | 2010-07-27 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processors |
US8387034B2 (en) * | 2005-12-21 | 2013-02-26 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processing elements |
US8387033B2 (en) * | 2005-12-21 | 2013-02-26 | Management Services Group, Inc. | System and method for the distribution of a program among cooperating processing elements |
JP2009524134A (ja) | 2006-01-18 | 2009-06-25 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | ハードウェア定義方法 |
US9081901B2 (en) * | 2007-10-31 | 2015-07-14 | Raytheon Company | Means of control for reconfigurable computers |
EP2257873A4 (en) * | 2008-02-12 | 2013-05-15 | Scrutiny Inc | SYSTEMS AND METHODS FOR INFORMATION FLOW ANALYSIS |
US20100077384A1 (en) * | 2008-09-23 | 2010-03-25 | Microsoft Corporation | Parallel processing of an expression |
US9665620B2 (en) * | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
CN105793818B (zh) | 2013-12-06 | 2019-09-17 | 起元科技有限公司 | 源代码翻译 |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
DE102017209697A1 (de) * | 2016-06-13 | 2017-12-14 | Denso Corporation | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
US11669613B2 (en) | 2020-05-29 | 2023-06-06 | EnSoft Corp. | Method for analyzing and verifying software for safety and security |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4484272A (en) * | 1982-07-14 | 1984-11-20 | Burroughs Corporation | Digital computer for executing multiple instruction sets in a simultaneous-interleaved fashion |
GB8521672D0 (en) * | 1985-08-30 | 1985-10-02 | Univ Southampton | Data processing device |
US5021945A (en) * | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
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 |
DE69030931T2 (de) * | 1989-04-24 | 1998-01-15 | Ibm | Mehrfachsequenzprozessorsystem |
US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
-
1991
- 1991-07-15 US US07/731,224 patent/US5347639A/en not_active Expired - Fee Related
-
1992
- 1992-05-19 EP EP19920108459 patent/EP0523345A3/en not_active Withdrawn
- 1992-06-18 JP JP4159092A patent/JP2898820B2/ja not_active Expired - Lifetime
Non-Patent Citations (2)
Title |
---|
COMPCON’87,IEEE,p.177−180,(1987),J.A.FISHER,"A NEW ARCHITECTURE FOR SUPERCOMPUTING" |
SUPERCOMPUTERS:DESIGN AND APPLICATIONS,p.186−203,(1984),J.R.ALLEN 外,"PFC:A program to convert fortran to parallel form" |
Also Published As
Publication number | Publication date |
---|---|
EP0523345A2 (en) | 1993-01-20 |
US5347639A (en) | 1994-09-13 |
EP0523345A3 (en) | 1993-03-10 |
JPH05282264A (ja) | 1993-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2898820B2 (ja) | 自己並列化式のコンピュータ・システムおよび方法 | |
US5408658A (en) | Self-scheduling parallel computer system and method | |
US8266412B2 (en) | Hierarchical store buffer having segmented partitions | |
JP3731843B2 (ja) | 命令シーケンスを実行する方法及び装置 | |
US8296550B2 (en) | Hierarchical register file with operand capture ports | |
US8275976B2 (en) | Hierarchical instruction scheduler facilitating instruction replay | |
US7363467B2 (en) | Dependence-chain processing using trace descriptors having dependency descriptors | |
US5961639A (en) | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution | |
US5142634A (en) | Branch prediction | |
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 | |
US5887166A (en) | Method and system for constructing a program including a navigation instruction | |
US6415380B1 (en) | Speculative execution of a load instruction by associating the load instruction with a previously executed store instruction | |
US5913925A (en) | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order | |
JP3014773B2 (ja) | プロセサアーキテクチャ | |
KR101355496B1 (ko) | 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘 | |
JP2937485B2 (ja) | スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置 | |
US20160098279A1 (en) | Method and apparatus for segmented sequential storage | |
US9176741B2 (en) | Method and apparatus for segmented sequential storage | |
US20090217020A1 (en) | Commit Groups for Strand-Based Computing | |
US20090150890A1 (en) | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system | |
KR20010033242A (ko) | 실행 파이프라인 외부에 복수의 프로그램 카운터 및트레이스 버퍼를 구비한 프로세서 | |
WO1998037485A1 (en) | Method and apparatus for forwarding of operands in a computer system | |
WO2009076324A2 (en) | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system | |
JPH10187464A (ja) | マルチスカラ・プログラムを作成する方法およびシステム | |
Tanaka | Parallel Inference Engine: PIE |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |