JPH10124317A - 命令シーケンスを実行する方法及び装置 - Google Patents

命令シーケンスを実行する方法及び装置

Info

Publication number
JPH10124317A
JPH10124317A JP9259729A JP25972997A JPH10124317A JP H10124317 A JPH10124317 A JP H10124317A JP 9259729 A JP9259729 A JP 9259729A JP 25972997 A JP25972997 A JP 25972997A JP H10124317 A JPH10124317 A JP H10124317A
Authority
JP
Japan
Prior art keywords
instruction
instructions
execution
register
sequence
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.)
Granted
Application number
JP9259729A
Other languages
English (en)
Other versions
JP3731843B2 (ja
Inventor
Rudolph Nathan Rechtschaffen
ルドルフ・ナサン・リッチスカッフン
Ekanahamu Katatsumuri
カタッムリ・エカナハム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10124317A publication Critical patent/JPH10124317A/ja
Application granted granted Critical
Publication of JP3731843B2 publication Critical patent/JP3731843B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Abstract

(57)【要約】 【課題】コンピュータ・プログラムが逐次的に実行され
たかのような見かけを与えながらも、そのコンピュータ
・プログラムのいくつかの部分の効率的な並列実行を提
供する。 【解決手段】一つの命令実行シーケンスをサブ命令シー
ケンスのセットに分割し、各サブ命令シーケンスを、共
通のレジスタ・ファイルを共用する別個の処理要素のセ
ットの異なる1個で実行する。処理要素が、命令が並列
モードで実行されるとき、実行の結果が、すべての処理
要素にとってアクセス可能なレジスタの共通のセットに
現れるよう、レジスタを変更する命令によって使用され
るレジスタをリネームする。レジスタを変更する、逐次
実行シーケンスの中の各命令は、共通のレジスタ・プー
ルから次に高い番号のレジスタを割り当てられる。する
と、この命令で変更したアーキテクチャレジスタはこの
ハードウェア・レジスタにリネームされ、レジスタ対応
表の中でそのように識別される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、プログラ
ム記憶式デジタル・コンピュータに関し、より具体的に
は、命令の実行シーケンスが二つの実行モードで実行さ
れ、第一の実行モードが、命令を実行するだけでなく、
同時にまだ並列化されていない命令シーケンスを並列化
するために使用され、第二のモードが、すでに並列化さ
れている命令シーケンスを別々の処理要素で並列に実行
するのに使用されるコンピュータ・システムおよび方法
に関する。本発明はまた、命令シーケンスの並列化形態
にも関する。
【0002】
【従来の技術】デジタル・コンピュータ・プログラムを
より速く実行する一つの方法は、その部分のいくつかを
別々のプロセッサで並列に実行する方法である。これを
行う一つの方法は、そのような並列的な実行に備えてプ
ログラムを書くことができるよう、プログラミング環境
およびコンピュータ・システムを定義する方法である。
不運にも、命令の逐次実行が仮定されている多くの有用
なプログラムがすでに作成されている。これらの逐次プ
ログラムをより速く実行できることが望ましく、そのた
め、従来技術において、そのようなプログラムを並列実
行に備えて並列化する試みがなされてきた。
【0003】この分野の従来の研究の大部分は、プログ
ラムの並列仕様を作成することに依存する。これはいく
つかの方法で達成されてきた。プログラムを並列化し、
従来のプロセッサを数多く有するマルチプロセッサ・シ
ステムのためのコードを生成する高性能のコンパイラが
作成された。このようなコンパイラのいくつかは、並列
性を自動的に明らかにする(たとえば、D. A. Padua
およびM. J. Wolfeによる、Comm. of ACMにおける
「Advanced Compiler Optimizations for Supercom
puters」Vol. 29, page 12 et seq., Dec. 198
6)。他のものは、プログラマによって供される注釈を
手がかりにする(たとえば、Alan H. Karpによる、Co
mputerにおける「Programming for Parallelism」Vo
l. 20, Page5 et seq., May 1987)。もう一つの
手法は、並列実行に順応することができる特殊化したハ
ードウェア、たとえばベクトル・プロセッサ、VLIW
アーキテクチャなどを創造することである。ここでもま
た、コンパイラが逐次プログラムをこれらの機械で使用
するのに適したコードに翻訳する。これらの場合では、
コンパイル労力は相当大きい。より斬新な手法は、本来
は並列な実行機構、たとえばデータフロー機(J. B.
Dennisによる、Computerにおける「DataflowSupercompu
ters」Vol. 13, page 11 et seq., Nov. 1980)
およびその機構で使用するための並列コードを自動的に
生成するプログラムの宣言仕様を創造することであった
(ArvindおよびK. Ekanadhamによる、Jour. of Para
llel& Distributed Computingにおける「Future Sci
entific Programming onParallel Machines」Vol.
5, Dec. 1988を参照)。
【0004】前記手法のすべてにおいて、コンピュータ
・プログラムを並列化し、異なる部分を並列に実行する
ことが安全であることを決定するタスクは、コンパイラ
レベルで実施されるか、それよりも早くにプログラミン
グレベルで(すなわち、データをもつコードの実働実行
の前に)実施されるかのいずれかである。プロセッサ
は、実行時に異なる部分を並列に実行することが安全で
あるかどうかを決定するのに役割を演じない。その理由
は、この決定は、プログラマまたはコンパイラのいずれ
かによってすでに下されているからである。
【0005】もう一つの手法は、並列化されていないコ
ードを実行時にマルチプロセッサ・システムに持ち込
み、並列実行に備えてコードを分割し、コードの並列実
行が有効であるかどうかを決定することにおいてそのマ
ルチプロセッサシステムに積極的な役割を与える手法で
ある。この手法は、命令の少なくともいくつかの実行が
暫定的に行われることにおいて、他の手法から区別する
ことができる。並列実行が完全に有効であるかどうか
は、実行前には一般にわからない。このような手法は、
以下の参考文献によって例示されている。
【0006】本特許出願と譲受人を同じくする「Multip
le Sequence Processor System」と題する米国特許
第5,297,281号では、命令は、何らかの区切り
規則にしたがってグループに分割されたのち、少なくと
も二つのグループが並列に実行される。命令のグループ
の一つが他のすべてよりも順序的に早く、もっとも早い
グループの正しい実行が仮定され、その後のグループは
暫定的にしか並列には実行されない。その後の命令グル
ープは、それより先の命令グループがすでに実行されて
いるかのように、レジスタおよび記憶場所からデータを
読み出す。制御装置が、後の命令グループによって使用
されるデータがそれよりも先のグループ中の命令によっ
て変更されるかどうか(後のグループによってそれが使
用されたのち)を監視する。後のグループによる記憶場
所およびレジスタへの格納は、別の場所で一時的にしか
実施されない。後のグループによって使用されるデータ
のすべてが有効である(すなわち、先のグループによっ
て変更されていない)ならば、後のグループの結果が有
効であり、コミットされることができる。そうでなけれ
ば、その後のグループは再実行される。
【0007】米国特許第4,825,360号では、命
令グループが暫定的に並列に実行されたのち、順番に確
認されるという点で同様な方式が使用されている。しか
し、この方式では、コンパイルステップにより、また、
グループ中の最後の命令以外の命令に対する副作用を減
らす(好ましくは除く)ことにより、成功の確率が高め
られている。その結果、このシステムが従来の逐次コー
ドを並列化するのに使用することができるかは明かでは
ない。
【0008】米国特許第4,903,196号では、ユ
ニプロセッサが別個の非同期実行装置での実行に備えて
コードを並列化し、実行装置どうしは、概念的順序では
より早い命令によって変更されるデータを使用すること
を避けるため、それらの命令が実行されるまで、必要な
らば互いに待機し合う。1セットの汎用レジスタ(GP
R)および1個のデコーダしかない。一連の専用タグが
ユニプロセッサ中の各GPRおよび実行装置に関連して
いる。これらのタグは、多数の実行装置が、GPRを順
に使用して、または、異なるGPRを並行に使用して、
多数の命令を並行に実行することを可能にすると同時
に、GPRによって実行装置に供給されるデータの論理
完全性を保持する。各GPRおよび各実行装置に関連す
るタグが、所与の実行装置がある特定のGPRに格納す
ることを許される前に、異なる実行装置によるその当の
GPRへの直前の格納が必ず完了しているよう、個々の
GPRと実行装置との間の順序のつながりを格納する。
また、タグは、1個以上の実行装置による所与のGPR
からのすべての読み出しが、そのGPRへの後続の格納
動作が許される前に完了することを保証する。
【0009】本発明の著者たちによって発案された米国
特許第5,347,639号では、目標並列化エンジン
が、それぞれが一つの実行シーケンスの解析によってス
ケジュールされるn個の同一の処理要素からなる自己並
列化方式が実現されている。これらの処理要素は、並列
モードの動作で、それぞれの汎用レジスタのセットを使
用することにより、元の実行シーケンスのそれぞれの個
々の部分を実行する。逐次実行シーケンスの解析が、他
の命令が使用するレジスタの値をどの命令がセットする
かを確立する。そのようなセット/使用対の命令が異な
る処理要素でスケジュールされるとき、そのような命令
の間で送り出しおよび受け取りの義務を確立する必要性
が存在する。命令に関連する受け取り義務は、逐次実行
シーケンスの中で別の処理要素によって実行される介在
する命令がそのレジスタの新たな値をセットしたとき、
処理要素が現在値をそれ自体の汎用レジスタのセットの
中で所与の命令のための入力として使用することを妨げ
る。セットする命令における送り出し義務は、レジスタ
の正しい現在値を、適切にタグ付けした状態で、使用す
る処理要素に送り出す。
【0010】さらに、所与の処理要素上でスケジュール
された命令がそれらの元の概念的順序でスケジュールさ
れるよう、命令の、その入力の可用性に対するタイミン
グおよび同じ処理要素上にスケジュールされた他の命令
に対する命令のスケジューリングを実施しなければなら
ない。これは、所与の処理要素の中で、概念的に後の命
令が概念的に先の命令の結果を利用することを、そのよ
うな使用を打ち消す受け取り義務がないときに考慮す
る。
【0011】他にも二つの重要な並列化の態様が本発明
に関連する。第一の態様は、同じ記憶場所を目標にする
格納命令と取り出し命令とが異なる処理要素によって実
行されるときの格納後取り出し条件の扱いに関する。第
二のものは、並列化の最後に、または分岐予測誤りの後
で機械状態を復元することに関する。前者は、処理要素
のセットをシステムのメモリにインタフェースさせる取
り出し/格納表のセットを介して制御される。後者は、
レジスタをセットする各条件性レベル中の最後の命令と
状態生成機構との間の送り出し義務の新たなセットを含
む。
【0012】本発明の著者たちによって発案された米国
特許第5,412,784号では、生成される並列コー
ドが分岐進入可能になるよう、自己並列化方式が強化さ
れている。所与の並列化から生成されるコードの各分割
された順列の中で、エントリ・ポイントが識別される。
処理要素ごとに1個ずつのそのようなエントリ・ポイン
トのセットをプロフィールと呼ぶ。並列化は、輪郭に沿
って入れることができ、並列化のすべての側面が有効な
まま残る。これは、並列コードに対し、並列コードを任
意の点で入れ、その点から先で実行することを許す、逐
次コードに共通に関連する特性を与える。
【0013】本発明の著者の1人によって発案された米
国特許第4,574,349号では、プロセッサが、命
令によって識別されるよりも多数のレジスタをアドレス
指定することを許すレジスタ・リネーミング方式が発案
されている。レジスタ・リネーミングと呼ばれるこの操
作は、各時点で、複数のハードウェア・レジスタの1個
を所与のアーキテクチャレジスタに関連させるレジスタ
対応表の中で実施される。この関連づけは、命令の実行
の間にプロセッサによって維持され、実行の結果は、ハ
ードウェア・レジスタを更新するのに使用される。
【0014】
【発明が解決しようとする課題】本発明の目的は、コン
ピュータ・プログラムが逐次的に実行されたかのような
見かけを与えながらも、そのコンピュータ・プログラム
のいくつかの部分の効率的な並列実行を提供することに
ある。
【0015】
【課題を解決するための手段】前記目的およびさらなる
目的は、本発明にしたがって、一つの命令実行シーケン
スをサブ命令シーケンスのセットに分割し、各サブ命令
シーケンスを、共通のレジスタ・ファイルを共用する別
個の処理要素のセットの異なる1個で実行する自己並列
化コンピュータ・システムおよび方法によって達成され
る。この機械および方法を、SPURR(レジスタ・リ
ネーミングを使用する自己並列化)と名付けた。
【0016】処理要素が、命令が並列モードで実行され
るとき、実行の結果が、すべての処理要素にとってアク
セス可能なレジスタの共通のセットに現れるよう、レジ
スタを変更する命令によって使用されるレジスタをリネ
ームする。レジスタを変更する、逐次実行シーケンスの
中の各命令は、共通のレジスタ・プールから次に高い番
号のレジスタを割り当てられる。すると、この命令で変
更したアーキテクチャ・レジスタはこのハードウェア・
レジスタにリネームされ、レジスタ対応表の中でそのよ
うに識別される。そして、このレジスタを入力として要
する概念的に後続する命令は、リネームされた共通レジ
スタに関連し、それらの入力をレジスタ変更命令の実行
の結果から導出する。そのようなものとして、逐次実行
シーケンスによって暗示されるレジスタのセット/使用
要求を解決するのに送り出しおよび受け取りの義務がな
い。そのようなものとして、一つの命令ストリームが動
的にリネームされて、共通の拡大したレジスタ・ファイ
ルを使用し、個々の命令を、以下の簡単な制限に合わせ
て、処理要素のセット上でスケジュールすることができ
る。すなわち、n個以下の命令は同じサイクルで並列に
実行するようにスケジュールされ(占有規則)、命令
は、すべてのその入力が利用可能になる前のサイクルで
実行するようにスケジュールされることはない(デッド
ロック回避)。
【0017】
【発明の実施の形態】SPURRの好ましい実施態様の
以下の説明は、6個のセクションに細分する。説明は、
以下のセクションからなる。
【0018】セクション1 SPURR編成の概要 セクション2 専有Zキャッシュ セクション3 オペランド格納比較の監視 セクション4 分岐の扱い セクション5 Eモードにおける処理要素に対する命令
の割り当ておよび命令処理 セクション6 Zモードにおける処理
【0019】セクション1 SPURR編成の概要 本発明は、共通のレジスタ・ファイルを共用する処理要
素のセットが調和して、命令ストリームの連続セグメン
トを実行するユニプロセッサ編成である。各処理要素
は、命令をデコードし、記憶オペランド・アドレスを生
成し、命令を実行し、並列モードで実行する命令によっ
てアドレス指定される共通のレジスタのセットを参照
し、更新することができる。これらの処理要素は、プロ
グラム・セグメントの最初の実行の際に調和してレジス
タを再命名し、元のセグメントから別個の命令ストリー
ムまたはサブ命令シーケンスを作成し、それらを格納す
る。セグメントに対応するこれら別個のサブ命令シーケ
ンスは、元のセグメントの並列化形態であり、Zコード
と呼ばれる。元のセグメントからの各命令が、並列化さ
れたZコード形態で作成されたサブシーケンスの一つに
しか配されないという意味において、これは真の分割で
ある。処理要素それぞれがセグメントの最初の実行の際
にそれ自体に割り当てられた命令だけをデコードし、実
行し、他の処理要素がそれら自体に割り当てられた命令
を並行に実行するため、その同じプログラムセグメント
のその後の再実行ははるかに高速になる。
【0020】セグメントは、PセグメントまたはZセグ
メントのいずれかである。Pセグメントは、データとで
第一の実行モード(「Eモード」と呼ぶ)で処理され
て、データとで通常の実行結果を生成するだけでなく、
1個以上のZセグメントをも生成する、連続的に実行さ
れる命令のシーケンス(すなわち、ユニプロセッサ命令
ストリームの通常のセグメント)である。対応するZセ
グメントが利用可能であるときにプログラム・セグメン
トが再び実行されるならば、Zセグメントが、Pセグメ
ントの代わりに、SPURRによって第二の実行モード
(「Zモード」と呼ぶ)で処理される。
【0021】EモードとZモードとの間の主な違いは、
Eモードの間、すべての処理要素は、Pセグメント中の
すべての命令を見るが、それらに割り当てられた命令し
か実行しないということである。Zモードの間、各処理
要素は、自らに割り当てられた命令だけを実行するだけ
でなく、それらの命令を見て、デコードする。
【0022】Eモードにおけるプログラムの逐次実行の
結果は、Zモードの間に生じうる例外条件を扱うのに必
要なすべての情報要件を確立する。分岐命令ごとに、元
のプログラムによって使用されるアーキテクチャレジス
タとそれらのリネームされた対応物とを関連させるレジ
スタ対応表が保存される。この情報は、Zコードと呼ば
れる並列実行エンティティに関連する。Zモードで実行
されたときの分岐が、Eモードの間に発生した同じ目標
および動作を有しないならば、分岐予測誤りが発生した
と考えられる。そこで、その分岐に関連する保存した対
応表を使用して、共通のレジスタ・ファイルからシステ
ム状態を抽出し、次のセグメントの処理を適切に開始さ
せる。
【0023】分岐予測誤りを認識したのちZコードを停
止させるためには、分岐に先行するすべての命令が実行
されたことを保証するための手段が必要である。処理要
素が命令を順序外で実行することを許すシステムでは、
この保証を得る方法は、処理要素の条件性レベルの概念
を含む。
【0024】SPURRにおけるセグメントは、条件性
レベルにさらに分割される。ある命令の条件性レベルと
は、セグメント中でその命令に先行する分岐命令の数で
ある。条件性レベルは0で始まり、分岐命令ごとにイン
クリメントする。セグメントあたりの条件性レベルの最
大数は、SPURR中のハードウェア・リソースによっ
て制限され、SPURR中のPセグメントは、この限界
に達する前に、Eモードで終了させることができる。Z
モードでは分岐命令は1個の処理要素だけによって処理
されるが、Eモードは、すべての処理要素が分岐命令を
見ることを許し、したがって、ある処理要素に割り当て
られたすべての命令の条件性レベルがすべての処理要素
によって知られる。命令がそれらの元の順序で処理され
るシステムにおいては、処理要素による、より高い条件
性レベルをもつ命令がその処理要素によって処理された
という認識が、より小さい条件性レベルをもつすべての
命令がその処理要素によって処理されたことを保証す
る。順序外の命令のスケジューリングが許可されるとき
には、もう一つの手法が用いられる。分岐命令ごとに、
処理要素ごとのスケジュールの中で、最新のサイクルに
スケジュールされている命令に分岐の条件性レベルのタ
グを付け、これを処理要素の条件性レベルとして解釈す
る。このエントリが、この処理要素でスケジュールされ
ている、より低い条件性レベルをもつすべての命令が、
このタグを付けられた命令よりも先にスケジュールされ
ることを保証する。
【0025】好ましい実施態様では、レジスタ(または
レジスタ同等物)を通過するデータだけが観られ、Zコ
ードで記録されたのち、Mコードで再生される。Eコー
ドがデータを主記憶に格納し、後で同データを主記憶か
ら読み出すならば(レジスタに格納し、後でそのレジス
タの中のデータを使用するのとは逆に)、このデータ流
はZモードでは再生されない。格納によって扱われて主
記憶に達するデータ流が1個の処理要素をしてデータを
そのデータを生成する処理要素が実際にそれを生成する
前に必要とさせることはあまりないと推測される。好ま
しい実施態様では、この起こりそうにないエラー状態が
起こるならば、それは検出される。
【0026】エラー状態が検出されると、Zコードの実
行は停止し、有効な機械状態が復元し、実行は、復元し
た機械状態に対応するより早い時点から、いずれか適切
なモードで続行する。そのようなエラーに関連する命令
のすべてが同じセグメント中で同じ条件性レベルの中に
位置し、同じ処理要素に割り当てられているならば、そ
のようなエラーを回避することは処理要素の能力の範囲
内であると仮定される。したがって、本発明によると、
新たなZコードが順序外のエラーの発生の結果として生
成される場合、新たなZコードが実行するとき、それが
同じエラーを生成しないよう、そのようなエラーからの
回復もまた、命令のスケジューリングの変更を含むこと
が好ましい。
【0027】格納することができるZコードの量に何ら
かの限界を設けなければならないため、実際の実施態様
では、どこかの点で、どのZコードを置き換えるかに関
して決定を下さなければならない。これは、キャッシュ
管理に関して直面する決定とまさに同様であり、同じ方
法で扱われる。好ましい実施態様では、LRU(最長時
間末使用)アルゴリズムを適用して、各処理要素中に格
納されたZコードを古い順に捨てる。すでに存在するZ
コードの生成を止めるため、Eモードの間および各処理
サイクルの終了時に、確立されたZコード・セグメント
へのエントリ・ポイントのセットを絶えず探索する。処
理サイクルは、Zコード・セグメントの終了時、または
Zモードの間の分岐予測誤りののち、またはEモードの
終了ののち、終了する。
【0028】好ましい実施態様では、Zコード・セグメ
ントを、始まりで入れることもできるし(すなわち、命
令シーケンスの再実行はそのシーケンスの最初の命令で
開始する)、セグメント中のあらかじめ割り当てられた
任意の数のエントリ・ポイントに入れることもできる。
エントリ・ポイントは、Eモードにより、以下の方法で
作成することができる。命令がエントリ・ポイントして
宣言されると、Zコード中のディレクトリ・エントリが
各Zキャッシュの中に作成される。このエントリは、エ
ントリ・ポイントを識別し、Zコード中に、Zセグメン
トが入れられると、所与の処理要素が実行しなければな
らないという第一の命令を確立する。各エントリ・ポイ
ントには、概念的にそのエントリ・ポイントで開始する
命令のセットによってリネームされる第一の共通のレジ
スタの番号が関連している。並列化の他の二つの態様
が、エントリ・ポイントで開始する並列モードでの処理
に関連する要件を完了させる。各処理要素は、Pセグメ
ントのEモード処理の間に各アーキテクチャレジスタに
関連していた、共通のレジスタ・ファイル中のレジスタ
の名前を識別するZコード・レジスタ表を維持する。さ
らに、命令のスケジューリングは、概念的にエントリ・
ポイントに続く命令が、Pセグメント中で、そのエント
リ・ポイントに概念的に先行するどの命令よりも先にス
ケジューリングされることのないように編成される。こ
のようなスケジューリング制限により、各処理要素のZ
キャッシュ中のエントリ・ポイントに続いて順番に遭遇
される、任意の処理要素のためのZコード中のすべての
命令は、Pセグメント中のそのエントリ・ポイントに続
く。Zコード処理においては、命令の中で遭遇するソー
ス・レジスタ番号は、エントリ・ポイントに関連してい
た共通レジスタ番号に等しいか、それよりも大きい。そ
れは、エントリ・ポイントでそのZコードを開始する処
理要素によってセットされる。命令の中のソース・レジ
スタ番号がエントリ・ポイントに関連する共通のレジス
タ番号によりも小さいならば、ソース・レジスタの値
は、まずエントリ・ポイントに関連するレジスタ対応表
を使用して関連のアーキテクチャレジスタを識別し、Z
セグメントに入るときのシステム状態からアーキテクチ
ャレジスタの値を抽出することによって導出される。
【0029】好ましい実施態様においては、各処理要素
は、その処理要素のZコードが格納される専有Zキャッ
シュを有しているが、すべての処理要素が、レジスタま
たは同等物に格納されていないEコードおよびデータを
求めて共通の記憶階層にアクセスする。記憶階層には、
非同期的に起こるオペランドの取り出しおよび格納が、
記憶内の値に設定および値の検査に関連するアーキテク
チャ上の規則を違反しないことを保証するためのさらな
る制御が備えられている。
【0030】Eモード実行で実現されるいくつかの割り
当て方式は、SPURRがいかに効率的にZモードで命
令ストリームを実行することができるかの点で他のもの
よりも優れているが、SPURRは、使用される割り当
て方式にかかわらず、正確に機能する。完璧に適した割
り当て方式は、たとえば、連続5個の命令を第一の処理
要素に割り当て、次の連続5個の命令を第二の処理要素
に割り当てるなどし、連続5個の命令を最後の処理要素
に割り当てたのち、Pセグメント中のすべての命令が割
り当てられるまでこの割り当て順序を再び繰り返すこと
であるかもしれない。この割り当てを行うための、しか
も、より広い用途を有するある特定の方法が、別の特許
である「SELF-SCHEDULING PARALLEL COMPUTER SYSTE
M ANDMETHOD」と題する米国特許第5,408,658
号の主題である。
【0031】SPURR編成の詳細な実施態様は、米国
特許第5,347,639号「SELFPARALLELIZING COM
PUTER SYSTEM AND METHOD」に用いられているものに
きわめて類似している。主な違いは、処理要素すべてが
共通のレジスタ・ファイルにアクセスし、そのような並
列プロセッサ目標機械により、引用した従来の特許の詳
細の多く、たとえば、レジスタをセットする処理要素
と、そのレジスタを使用しなければならない処理要素と
の間でのメッセージの受け渡し、メッセージを移動させ
るメッセージ・ハンドラ、他の処理要素によって送られ
たメッセージを収納する各処理要素中のレジスタ・ファ
イル構造および複数のレジスタ・ファイルから機械状態
をアセンブルする手段がもはや必要とされないことであ
る。生成されたZコードは、分岐入れ込み可能にされる
ことができ、個々の処理要素が命令を命令の元の概念的
順序外で実行することができるため、利用しうる完全な
並列性を利用することができる。これが、米国特許第
5,408,658号「SELF-SCHEDULING PARALLEL C
OMPUTER SYSTEM AND METHOD」で扱われたスケジュー
リング動作を大幅に簡略化する。
【0032】以下の点での自己並列化プロセッサの全体
的性質は、目標並列アーキテクチャが共通のレジスタ・
ファイルを含み、並列コードをMモードで作成する動作
が、命令の並列形態に組み込まれるレジスタ・リネーミ
ングを含むことを除き、米国特許第5,347,639
号「SELF PARALLELIZING COMPUTER SYSTEM ANDMETH
OD」の従来技術の自己並列化手法に含まれるものと本質
的に同じである。
【0033】SPURRプロセッサ内での以下の動作の
簡潔な概要が、SPURRプロセッサと他の自己並列化
プロセッサとの違いを理解するための十分な枠組みを与
えるはずである。
【0034】Eモードの間、すべての処理要素は、プロ
グラム・セグメント中のすべての命令を見て、デコード
する。処理要素は、おそらくは異なる期間ではあるが、
本質的に同じ作業を非同期的かつ独立して行いながら実
行する。デコード動作の結果は、命令によって変更され
たレジスタをリネームし、レジスタの新たな名前をレジ
スタ対応のローカル・コピーの中で利用可能にすること
である。各処理要素は、この命令を使用して、その入力
の可用性に基づいて命令をデコードすることができる可
能なもっとも早い時期を導出する。このタイミングは、
レジスタ対応表に維持されているすべての入力レジスタ
の可用性時間を使用する。そして、処理要素は、以下に
説明する占有割り当てアルゴリズムに基づいて、命令の
スケジュール時間を計算する。この占有割り当てアルゴ
リズムは、命令の実行を割り当てられる処理要素の番号
を決定する。そして、他の処理要素が次の命令から続く
が、命令を割り当てられた処理要素がまず、リネームさ
れたレジスタ、命令のシーケンス番号およびZモードで
の並列コードの正しい実行に要するさらなる情報を含む
並列形態の命令を作成する。そして、割り当てを受けた
処理要素は、並列化形態の命令を、そのZキャッシュの
中で、デコードのスケジュールされたサイクルによって
指定される、Zキャッシュ中の並列コードの開始位置に
対する位置に配する。そして、割り当てを受けた処理要
素は、並列化形態を使用して命令を実行して、適切なリ
ネームされたレジスタを更新する。Eモードの最後で、
各処理装置は、プログラム・セグメントの一部をそれ自
体のZコード・キャッシュの中に割り当てられている。
命令のセットは、それら個々のスケジューリング時間に
よって順序づけされる。これらの命令は、Zモードの
間、Zコード・キャッシュから直接的に関連の処理要素
に達する。レジスタはEモードの間にすでにリネームさ
れているため、命令は、リネームなしで、それらの命令
が必要とするレジスタにアクセスすることができる。並
列コードの正しい実行および分岐予測誤りからの回復に
要するさらなる情報が、プログラムのZモード実行の間
に利用可能な情報に組み込まれている。Zモードの開始
は、すべての処理要素のZコード・キャッシュ・ディレ
クトリの中に、処理に必要な次の命令のアドレスである
エントリを見いだすことに基づく。すべてのZコード・
キャッシュ・ディレクトリが同一であるため、キャッシ
ュの内容は処理要素ごとに異なるとしても、すべての処
理要素が、SPURRプロセッサの次の処理段階がEモ
ードにあるのかZモードにあるのかに関して共通の決定
を下す。並列コードの実行に関与する個々の処理要素の
部分は、Eモードでの命令の実行に関与する部品と同じ
である。処理要素にとってのEモードとZモードとの違
いは、すべてEモードで起こるものである、処理要素へ
の命令の割り当て、レジスタ・リネーミングおよび並列
形態の命令のキャッシュ記憶を含む。命令を実行する処
理要素の部分は両モードで同一である。
【0035】SPURRプロセッサの編成のブロック図
を図1に示す。各処理要素100は、命令デコーダ/ス
ケジューラ500を使用して命令をデコードし、110
を介して共通のレジスタ・ファイル160にアクセスし
て記憶オペランドのアドレスを生成し、レジスタ・オペ
ランドにアクセスすることができる。SPURRの共通
のレジスタ・ファイルは、すべての処理要素によって直
接アドレス指定されることができるM個のレジスタから
なる。これらのレジスタの最初のmは、Pセグメント中
の命令によって使用されるレジスタである。これらはい
わゆるアーキテクチャレジスタである。残りのレジスタ
は、アーキテクチャレジスタのリネームされたバージョ
ンである。処理要素は、二つのモード、すなわちEモー
ドおよびZモードで動作する。Zモードの間、処理され
る命令は、すでにリネームを受けており、命令によって
アクセスされるレジスタは、その命令によって指定され
るレジスタである。Eモードでは、命令がレジスタを変
更するたび、そのレジスタは、まだ使用されていない、
次に高い順番のレジスタにリネームされる。レジスタの
新たな名前はレジスタ対応表170に配され、アーキテ
クチャレジスタ名に対する何らかの参照は、Eモードの
処理の間に、その名前をそのリネームされた値に翻訳さ
れる。命令は、それらがリネームされたレジスタをアド
レス指定したかのように処理され、命令リネームのされ
たバージョンこそが、Zセグメントを構成する並列形態
のプログラムに組み込まれる。命令によってアクセスさ
れるオペランドは、処理要素の中の実行装置130に送
られ、この実行要素が、命令によって指定される動作を
実行し、その実行の結果をリネームされたレジスタの中
にしまい込む。SPURRにおける処理要素は、各処理
要素があらかじめ指定された識別番号(n個の処理要素
を有するシステムでは1、2)を有することを除き、同
一である。処理要素のこの名前は処理要素には知れてお
り、たとえばEモードの間、それは、処理要素をして、
その処理要素がデコードしている命令がその処理要素に
割り当てられるかどうかを判定させる。この点を説明す
るため、命令が所与のサイクルでスケジュールされてい
るとき、その命令を割り当てられる処理要素は、そのサ
イクルで処理されるよう現在スケジュールされている、
スケジュールされたばかりの命令を含む命令の数に等し
い番号を有する処理要素である。各処理要素はバス13
5を介して記憶階層140に接続され、この記憶階層
が、取り出し動作においてデータ・オペランドを供給
し、格納動作において格納オペランドを受け取り、Eモ
ードの間には命令取り出しに使用される。オペランドの
実際の取り出しおよび格納は、順番外の記憶アクセス動
作に関連するすべてのハザードが検出されることを保証
するOSC/PSC制御装置300のセットによって実
施される。
【0036】各処理要素は、Zモードの動作のための注
釈つき命令を格納するそれ自体の専有Zキャッシュ20
0を有している。Zモードの間の命令取り出しは、各処
理要素の中の専用バス150を使用する。
【0037】セクション2 専有Zキャッシュ このセクションの情報は、米国特許第5,412,78
4号「APPARATUS FORPARALLELIZING SERIAL INSTRUC
TION SEQUENCES AND CREATING ENTRY POINTS INT
O PARALLELIZED INSTRUCTION SEQUENCES AT PLACE
S OTHER THAN BEGINNING OF PARTICULAR PARALLE
LIZED INSTRUCTION SEQUENCE」から本質的な変形によ
って導出する。Mモード中の命令取り出しは、各処理要
素に関連するZキャッシュ200(図1)中のZコード
にアクセスすることによって実施される。Zキャッシュ
の編成を図2に示す。Zキャッシュ・ディレクトリ21
0を使用して、Zキャッシュ・アレイ200に格納され
たZセグメントを追跡する。Zキャッシュ・アレイ20
0の内容は、あらかじめ指定されたZセグメントの数を
表す。各Zセグメントは、最大数のセル225を有し、
各セルが1個のZ命令を収容している。各Zキャッシュ
200は、ディレクトリ210およびそのディレクトリ
からアドレス指定されるセルのアレイ220を含む。Z
キャッシュ・ディレクトリ・エントリ211のフォーマ
ットを図3に示す。
【0038】このフォーマットは以下を含む。
【0039】エントリ・アドレス212。これは、この
Zセグメントが作成された元のPセグメントの開始アド
レスであるか、または、このZセグメント中の中間エン
トリ・ポイントのアドレスである。
【0040】セルのZキャッシュ・アドレス213。こ
れは、Zキャッシュ・ディレクトリの探索引き数であっ
たアドレスを有する命令よりも概念的に後ではない最初
のZ命令をその処理要素のZセグメント中に含む。
【0041】Pセグメント開始アドレス214。このZ
セグメントを生成するのに使用されたものである。
【0042】このエントリ・ポイントののちリネームさ
れたレジスタとして使用される第一の共通レジスタの番
号217。
【0043】エントリ・ポイントを表す命令の条件性レ
ベル218。
【0044】有効ビット219。
【0045】有効ビット219を使用するディレクトリ
無効化機能は二つの状況で使用される。信号ライン33
1は、プログラム格納比較(PSC)ハザードが検出さ
れたとき、すべての処理要素中のすべてのZコードを無
効化するのに使用される。信号ライン332は、オペラ
ンド格納比較(OSC)ハザードが検出されたとき、現
在のZコードを無効化するのに使用される。これらのハ
ザードはいずれもセクション3で詳細に説明する。
【0046】Mモードの間の命令取り出し(すなわち、
I取り出し)はZキャッシュから導出される。どのディ
レクトリ・エントリ・アドレス212とも突き合わせが
ないと、判定ブロック216によって処理要素がEモー
ドにセットされ、EモードでのI取り出しが記憶階層1
40(図1)から導出される。
【0047】Zキャッシュ・アレイ220はZ命令を含
む。Z命令は、サイズおよびフォーマットが固定されて
おり、それを図4に示す。各Z命令は以下の情報を含
む。
【0048】命令の実行に必要な通常の情報である命令
イメージ222(演算コード、オペランドなど)。各レ
ジスタ・オペランドは、共通のレジスタ・ファイル中の
M個の共通レジスタの1個を指定し、レジスタ再命名な
しで直接使用される。
【0049】条件性レベル202。これは、命令の実行
中に分岐が解かれるとき、キャッシュ中のオペランド格
納比較(OSC)制御により、OSCハザードの検出を
管理し、格納をいつ記憶階層に放出することができるか
を決定するのに使用される。
【0050】命令識別子203。これは、Zセグメント
中の命令を識別する命令シーケンス番号である。命令識
別子は、OSC制御により、格納命令と取り出し命令と
が条件性レベルを共用するとき、OSCハザードを識別
するのに使用される。
【0051】分岐命令に遭遇するごとに、もっとも高く
スケジュールされたサイクル時間を有する命令を分岐命
令の条件性レベルでフラグ付けすることが必要である。
これは、Zキャッシュ中の命令の処理要素条件性レベル
(PELC)フィールド227を使用することによって
実施される。
【0052】Zセグメントの終わりビット228は、処
理要素ごとの各Zセグメント中の最後の命令に関連して
いる。
【0053】I取り出し動作の一部として、Zキャッシ
ュ・セル中のすべての情報が、エントリ・ポイントに対
して相対化されたのち、デコーダおよび処理要素の他の
関連部分に移される。バス215で提示されたアドレス
との間で最初の突き合わせがあった時点で、突き合わさ
ったエントリのLC218がLC相対化機構290に配
置される。
【0054】各命令がZキャッシュ・アレイ220から
正常に導出されると、Z命令の条件性レベル202がL
C相対化機構290中の値によって減らされ、それによ
り、命令の条件性レベル、そのオペランドなどがすべて
の将来の命令処理に備えて相対化される。さらに、処理
要素条件性レベル227もまた、LC相対化機構290
中の値によって減らされ、それにより、命令に関連する
処理要素条件性レベルが相対化されなければならない。
【0055】処理要素ごとの連続的なZ命令が、処理要
素に関連するZキャッシュ・アレイ220の連続するセ
ル225を占有し、そのセルにアクセスするのにアレイ
・アドレス・インクリメンタ226が使用される。
【0056】EモードでのZセグメントの作成は、原則
的には自由であるが、実施において制限されるZキャッ
シュのサイズおよび構造による制限を受けやすい。Eモ
ードが終了し、最後の完全な条件性レベルにトリミング
されると、Zキャッシュの能力を超えるZセグメントは
作成できなくなる。
【0057】命令の記憶階層アドレスとZキャッシュ中
のそれらの位置との間には関係がないため、Z命令のい
くつかはまた、それらに関連する命令フォーマット拡張
部240(図5)を有しなければならない。この拡張部
は、この情報が求められるとき、記憶階層アドレスを含
む。分岐命令の場合、この拡張部が要求される。各条件
付き分岐命令は、Zコードを生成するのに使用された推
定アドレス241と、プログラム・カウンタ(PC)の
値であるフォールスルー・アドレス242とを有し、分
岐の後に続く次の逐次命令を指す。
【0058】分岐目標に基づいて、次のように動作が起
こる。
【0059】分岐目標が推定アドレス241と同じなら
ば、何の動作も起こらない。
【0060】分岐が取られないため、分岐目標が推定ア
ドレス241ではないならば、フォールスルー・アドレ
ス242に関して分岐予測誤り(BWG)動作が起こ
る。
【0061】推定アドレス241以外の目標に対して分
岐が取られるならば、そのアドレスが分岐命令のアドレ
ス生成の点で処理要素によって生成され、その目標に対
してBWG動作を取ることができる。
【0062】無条件分岐の場合、推定アドレス241だ
けが使用され、プログラム・カウンタ(PC)の値がフ
ォールスルー・アドレス242を占有することができ
る。BAL(R)(分岐および連結(レジスタ))のよ
うな命令についてPC依存値が必要であるとき、PCの
値を使用してレジスタの値をセットすることができる。
【0063】Zキャッシュ・アレイ中のZ命令セルの内
容は処理要素ごとに異なるが、すべてのZキャッシュ・
ディレクトリの内容は同じである。多数の同一のZキャ
ッシュ・ディレクトリの維持は、処理要素間により大き
な自律性を創造することと、新たなZセグメントが開始
されるときに処理要素にメッセージを送ることとのつり
合いを表す。
【0064】Eモードの開始時に、処理要素によって書
込みバス230を介して提供された情報を使用して、す
べてのZキャッシュの中に共通のディレクトリ・エント
リが作成される。ディレクトリ210中のすべてのエン
トリが有効であるならば、最長時間未使用(LRU)ア
ルゴリズムを使用して、置き換えるべきZセグメントを
選択する(たとえば、エイジ・タグ218を使用してデ
ィレクトリ・エントリの標準的なエイジ・タグ日付けを
用いる)。
【0065】各処理要素中のZセグメントのセル225
は、バス228を使用して更新される。このバスは、処
理要素に割り当てられた命令が、Z命令として、元のP
セグメント中のそれらの位置に対する概念的順序から外
れていてもよい、それらがスケジュールされた順序で格
納されるよう、命令に関連するスケジューリングのサイ
クルと協働する。
【0066】同じセグメント中の多数のエントリ・ポイ
ントを考慮する、Zキャッシュ・ディレクトリ中のエン
トリの範囲を指定するためには、以下が必要である。
【0067】Zコードとして生成されたZコードを、た
だし異なる開始アドレスから使用することができるよ
う、さらなるエントリをZキャッシュ・ディレクトリに
加える必要がある。
【0068】そのようなエントリは、後続の命令の条件
性レベルLCを相対化することができるよう、Pセグメ
ントから全体として導出された関連の条件性レベルLC
を有しなければならない。
【0069】これを達成する方法は、エントリ・ポイン
トの生成をEモード処理にすることである。エントリ・
ポイントに適した命令のアドレスの外部手段を介する識
別により、または次の命令に対しエントリ・ポイントを
周期的に宣言することにより、Eモードは、エントリ・
ポイントによって要求される必要なすべての情報を利用
することができる。命令のスケジューリングは潜在的に
概念的順序から外れているため、すべての処理要素Zキ
ャッシュ中のエントリ・ポイントに概念的に先行するす
べての命令の後のエントリ・ポイント以降、すべての命
令をスケジュールすることが必要である。
【0070】セクション3 OSCおよびPSCの監視 オペランド格納比較(OSC)制御およびプログラム格
納比較(PSC)制御300の構造要素を図6に示す、
各取り出しおよび格納が記憶階層インタフェース145
に提示されると、制御300がOSCおよびPSCを監
視し、アクセスと対話する。したがって、制御300の
配置は、記憶階層インタフェース145の一部であるこ
とができ、それに対する付属物とみなすことができる。
以下、これらの制御300それぞれを別々に説明する。
【0071】オペランド格納比較(OSC) プロセッサのアーキテクチャは普通、記憶場所からの取
り出しが、概念的順序でその取り出しよりも先行する最
新の格納によってその場所に格納された値を見ることを
要する。これがOSCと呼ばれ、この違反がOSCハザ
ードとして知られる。SPURRでは、取り出しと格納
とを異なる処理要素上で非同期的に実行することができ
るため、可能なOSCハザードが起こったかどうかを決
定するために処理要素を監視しなければならない。
【0072】このセクション3の残りに関して「取り出
し」とは、オペランドの取り出しを指し、命令の取り出
しは、その意味で使用するたび、そのようなものとして
別段指定する。
【0073】対応する取り出し動作と格納動作とが同じ
処理要素上で実行されるならば、OSCハザードは処理
要素内的であるといわれる。処理要素の中で命令は概念
的順序では維持されないため、処理要素内的OSCの監
視が必要とされる。命令識別子203が、取り出しおよ
び格納動作と関連すると、OSC制御をして、OSCハ
ザードに遭遇したかどうかを決定させる。
【0074】対応する取り出し動作と格納動作とが異な
る処理要素上で実行されるならば、OSCハザードは処
理要素間的であるといわれる。ひとたびスケジューラが
処理要素内で順番外の命令スケジューリングを考慮する
ならば、OSCハザードの監視に関して処理要素内的と
処理要素間的とを区別する意味はない。OSCを監視す
る問題は三つの要因を含む。
【0075】Zセグメントの最後で格納をコミットする
ことに伴う遅延を避ける必要があるため、格納は適時ベ
ースでコミットされなければならない。OSCに関連す
るハザードが表の中の取り出しおよび格納にとって無関
係になると、取り出し表および格納表の刈り込みを達成
することができる。これは、OSCハザードを生じさせ
ることができたすべての関連の活動、すべての取り出し
および格納がすでに処理されたことを保証することによ
って実施される。処理要素条件性レベルの使用は、その
条件性レベルよりも低い、所与の処理要素にスケジュー
ルされたすべての活動がすでに発されたことを保証す
る。処理要素にスケジュールされた命令順序の中では、
順序外の命令スケジューリングの場合と同様、処理要素
の中で命令の条件性レベルがもはや単調ではないため、
これは、個々の取り出しおよび格納に関連する従来の条
件性レベルに代わる。
【0076】Zセグメントが実行し、取り出しおよび格
納が記憶階層に送られると、各処理要素ごとに処理要素
条件性レベルの更新が起こる。処理要素間で取られる処
理要素条件性レベルの最小値を、Zセグメント中の分岐
の解から導出した現在の条件性レベルに比較することが
できる。これら二つの量の最小値が、刈り込むことがで
きる取り出し/格納表の中のすべての取り出しおよび格
納の条件性レベルを決定する。取り出しの刈り込みは取
り出しを除き、格納の刈り込みは格納を記憶階層にコミ
ットする。
【0077】条件性レベルは分岐グループ内のすべての
命令に共通である。このレベルは、分岐グループを終了
させる分岐命令によって共用される。分岐予測誤りが検
出されると、概念的に最初の分岐予測誤りの条件性レベ
ルが、記憶階層に対してコミットされなければならない
格納活動を区切る。すなわち、Zセグメント中の最初の
分岐予測誤りの条件性レベル以下の条件性レベルをもつ
すべての格納が記憶階層に対してコミットされなければ
ならず、他の格納がコミットされてはならない。格納
は、それらの条件性レベルをZセグメントのエントリ・
ポイントに正しく相対化させて運なければならない。
【0078】したがって、そのような両ハザードの監視
は、命令の以下の三つの属性を用いて実施される。
【0079】1.条件性レベル(202) 図7および
8 Zセグメントのエントリ・ポイントに基づいて適切に相
対化された、分岐命令を含む命令の条件性レベルとは、
Pセグメント中の命令に先行し、エントリ・ポイントに
後続する分岐命令の数である。グループの末端分岐を含
む分岐グループ中のすべての命令は同じ条件性レベルを
共用する。相対化されていない、Zセグメント中の命令
の条件性レベルの初期値はゼロである。エントリ・ポイ
ントと同じ分岐グループ中のすべての命令は、相対化さ
れたゼロの条件性レベルを有している。
【0080】2.処理要素条件性レベル(LC)302
図7および8 LCは、処理される命令のフィールド227を監視する
ことにより、各処理要素中に維持されている処理要素条
件性レベル(PELC)から導出される。このフィール
ドは、LC相対化機構中に維持されているエントリ・ポ
イントの条件性レベルに基づいて相対化される。相対化
されていない初期値はゼロであり、相対化されると、そ
の値はエントリ・ポイントの条件性レベルによってオフ
セットされる。PELCの初期設定は、次に遭遇する分
岐命令の条件性レベルであるため、概念的にエントリ・
ポイントに続くすべての命令のPELCのすべての値
は、エントリ・ポイントの条件性レベルに少なくとも等
しい値を有している。命令が、ゼロではない相対化PE
LCをフィールド227中に有するならば、後続のすべ
ての取り出しおよび格納動作は現在値(302)を与え
られて、それらの記憶アクセス動作を注釈する。
【0081】3.命令識別子(ID)203 図7 このIDは、Pセグメント中の命令のシーケンス番号で
ある。
【0082】Eモードでは、LC(202)およびID
(203)が自然な方法で知れるよう、すべての処理要
素がシーケンス中のすべての命令を見る。命令が順に処
理されるとき、分岐命令に遭遇したときのPELC(2
27)の設定は、分岐の条件性レベルに等しい処理要素
ごとの最後にスケジュールされた命令の設定(227)
を含む。Zコードが実行されると、各命令のLC(20
2)およびID(203)がZ命令から利用可能にな
り、処理要素ごとの現在のPELC(227)が、それ
がセットされたZモード中で処理された最後の命令から
利用可能になる。これらを使用して、すべての取り出し
(図7)および格納(図8)を必要な情報で注釈するこ
とができる。(302)としてのPELCの使用は単調
ではあるが、それは、中間値をスキップすることがで
き、分岐予測誤りが生じたとき、どの格納動作がコミッ
トされるべきかを決定するのに適切な粒度を与えない。
【0083】OSC制御は、二つの表、すなわち、コン
パレータ314を有する取り出し表310(図6)と、
コンパレータ326を有する格納表320とを維持す
る。
【0084】取り出し表エントリ311が図7に示さ
れ、アドレス、LC、PELCおよびIDからなる形態
を有している。アドレス312は、取り出しおよびその
拡張のバイト単位の全アドレスである。取り出しを生成
した取り出し命令のLC202およびID203ならび
に処理要素によって処理される現在最後のPELCであ
るPELCもまた、取り出し表エントリ311に含まれ
る。多数の倍長語(DW)に及ぶ取り出しは、取り出し
表中に多数のエントリを作成する。
【0085】格納表エントリ321が図8に示され、ア
ドレス、LC、PELC、IDおよびデータからなる形
態を有している。アドレス322は、格納およびその拡
張のバイト単位の全アドレスである。LC202、ID
203およびPELCは、処理要素によって維持される
格納命令および情報から導出される。データ324は、
格納命令の一部として、記憶階層に格納される全DWで
ある。データ324は、格納の結果を、記憶階層から取
り出されたDW中の他のバイトとマージすることによっ
て導出される。格納がDW境界を越えるならば、影響を
受けたDWごとに1個ずつ、2個のエントリが格納表中
に作られる。多数のDWを生成する格納命令も同様に扱
われる。マージ動作は、記憶階層に対して格納がコミッ
トされることなく実施される。
【0086】取り出しは次のように実行される。
【0087】1.アドレス・フィールドに突き合わすこ
とにより、取り出し命令と同じアドレスを有し、取り出
し命令のIDよりも小さいIDを有するエントリを格納
表から選択する。
【0088】2.一致が起こるならば、取り出しは、デ
ータ324を、取り出しのIDよりも小さい最大の現在
IDを有する一致した格納表エントリから、要求側の処
理要素に戻す。
【0089】3.より低いIDを有するどの格納エント
リにも一致がないならば、取り出しの値を記憶階層14
0から得る。
【0090】4.この取り出し命令に関して取り出し表
にエントリを作成する。変化するならば、取り出し動作
のPELC(302)フィールドを使用して、処理要素
取り出し/格納LC表344を更新する。
【0091】格納は次のように実行される。
【0092】1.アドレス・フィールドに突き合わすこ
とにより、格納命令と同じアドレスを有し、格納命令の
IDよりも大きいIDを有するエントリを取り出し表か
ら選択する。
【0093】そのようなエントリが存在するならば、O
SCハザードが発生している。
【0094】この格納命令に関して格納表にエントリを
作成する。変化するならば、処理要素取り出し/格納L
C表344を更新する。
【0095】図9に詳細に示す、三つの量を維持する刈
り込みモニタ342を使用して、上記二つの表のエント
リを刈り込む。
【0096】1.全証明された条件性レベル(OCL
C)341 各処理要素中の分岐解機構がバス390を介してZコー
ドでの各分岐命令の解を刈り込みモニタに通信する。所
与の時点で、OCLCは、より低いレベルのすべての分
岐が正しく解かれているような最大のLCである。OC
LCよりも大きいものであるLCでの分岐がBWGとし
て解かれると、分岐のLCまたはより低いLCにおける
格納が刈り込まれ、OSC制御がクリアされ、このレベ
ルのLCにおける分岐予測誤りがすべての処理要素に通
信される。この信号を受けたときの処理要素の動作は、
Zコード処理の下でセクション5に説明する。
【0097】2.全オペランド条件性レベル(OOL
C)343 記憶取り出しまたは格納命令が実行されるたび、そのP
ELCを使用して、その処理要素の取り出し/格納LC
表344のエントリを更新し、すべての処理要素にわた
るこれらのエントリの最小のものがOOLC342であ
る。処理要素が、Zセグメントの終わりビット228
(図4)によって示される、そのZコードの最後の命令
を実行するたび、処理要素は、Zコードの終わり信号を
疑似取り出しとして送出する。この信号の唯一の目的
は、その処理要素のPELCを取り出し/格納LC表か
ら除いて、OOLCを決定する最小化計算に参与させな
いことである。
【0098】3.全条件性レベル(OLC)340 OLCはOOLCおよびOCLCの最小値である。
【0099】含意は、各処理要素がOLCよりも低いレ
ベルですべての命令を実行したということである。さら
に、OLCよりも低いレベルでのすべての分岐も解かれ
ている。したがって、OLC以下のLCをもつ取り出し
/格納エントリを刈り込むことができる。OLCが変化
するたび、刈り込みモニタがバス345を介して以下の
動作を行う。
【0100】1.OLC以下のLCをもつすべてのエン
トリを取り出し表から除く。
【0101】2.OLC以下のLCをもつすべてのエン
トリを格納表から選択する。
【0102】3.選択したエントリのどれもPSC(の
ちに説明する)を発生しないならば、上記の選択したエ
ントリをそれらのIDの小さい順に走査し、各エントリ
を走査するごとに、格納をコミットし、格納表からエン
トリを削除する。
【0103】OSCハザードが発生すると、そのハザー
ドを作り出した命令の命令識別子がデコーダ500に提
示される。ハザードは、先行するLCで分岐予測誤りを
シミュレートすることによってクリアされる。条件性レ
ベルゼロで発生したハザードは、プログラム・セグメン
ト(Pセグメント)の開始に対応する機械状態を復元す
る。何らかの非ゼロLCで発生したハザードは、先行す
るLCでの分岐命令に対応する機械状態を復元する。い
ずれの場合でも、バス332を使用するすべてのZキャ
ッシュにおいて現在のZコードが無効化され、Eモード
に入る。
【0104】条件性レベルの中でハザードを避けるた
め、同じ記憶場所にアクセスすることを命令フォーマッ
トが示唆する取り出しおよび格納(たとえば、それらの
オペランドが同じベースおよびインデックス・レジスタ
を使用し、同じ偏位を有する)は、同じ処理要素にスケ
ジュールされ、それらの概念的順序でスケジュールされ
るべきである。
【0105】プログラム格納比較(PSC) 特定のアーキテクチャは、「命令ストリームへの格納」
を可能にすることにより、自己変更性プログラムをサポ
ートする。このようなアーキテクチャの場合に、SPU
RRは、このZセグメントを生成するのに使用されるコ
ードのIストリームへの格納が起こったかもしれない可
能性を監視することにより、生成されたZコードが後続
の再実行に有効であるか、または、アクティブなZセグ
メントそのものがそれ自体のIストリームに格納するこ
とができるのを決定することを求められる。このハザー
ドに与えられた名前がPSCである。
【0106】記憶階層は、キャッシュと、ラインがEモ
ードにおける命令取り出しのソースとして使用されたこ
とを指定する命令参照ビットを含む関連のディレクトリ
とを有している。このようなラインがキャッシュを離れ
るならば、PSCが発生し、バス331(図2にも示
す)を使用するすべてのZコードが無効化される。
【0107】格納表320の刈り込みに基づいて記憶階
層に対する格納をコミットする格納コミッタ330が、
命令参照ビットをオンにセットした状態のラインに格納
が実施されると判断するならば、それがPSCハザード
を発生させ、PSCハザードが発生したLCですべての
格納のコミットを取り消す。先のLCでの機械状態が復
元され、PSCハザードは、OSCハザードと同じ方法
でクリアされる。
【0108】セクション4 分岐および共通レジスタ・
ファイルの扱い パイプライン式アーキテクチャでは、分岐決定が下され
る前にいくつかの命令を部分的に実行されることもあ
る。しばしば、これは、何らかの規準を使用して分岐決
定を予測することによって実施される。分岐が誤って予
測されたときには、プロセッサの崩壊状態を、分岐直後
に機械があった状態に復元しなければならない。プロセ
ッサのアーキテクチャは、それらの機械状態を構成する
ものにおいて異なる。一般に、状態は、アドレス指定可
能なレジスタの内容を含む。
【0109】SPURRは二つの方法で状態復元処理を
複雑化する。第一に、EモードでのBWGは、誤って予
測された分岐命令および分岐の後の正しい命令順序のた
めの命令IDの再調節以来に作成されたZコードを捨て
る結果となる。第二にZモードでのレジスタ状態は、共
通レジスタ・ファイル中に分散しており、アーキテクチ
ャレジスタに割り当てられた空間の中で統合しなければ
ならない。
【0110】さらには、SPURRは、BWGなしでさ
え、EモードとZモードとの間の移行を含む。そのよう
な移行の際に取られる動作は、BWGの間に取られる動
作と同一である。Eモードが完了したのち、Zモードが
完了したのち、またはBWG(分岐予測誤り)ののち、
プロセッサのレジスタ状態を集める方法は、SPURR
プロセッサの各処理サイクルによって予測される、レジ
スタに相対する初期状態に基づく。これらの初期状態
は、共通のレジスタ・ファイルの最初のm個のレジスタ
を含むアーキテクチャレジスタの正しさと、残るM−m
個のレジスタの無効状態とを含む。これを達成するため
には、共通のレジスタ・ファイルからのアーキテクチャ
レジスタの値の回復が必要である。レジスタ対応表(1
70)が、各アーキテクチャレジスタに関連する共通の
レジスタを識別する。Eモードの間、レジスタ対応表の
状態は、各分岐命令ののち、また、Eモード処理の最後
に決定される。この情報はキャッシュに記憶され、Zセ
グメントの開始アドレスおよび分岐命令の条件性レベル
によって索引される。
【0111】Zセグメントが完了すると、完了したZセ
グメントに関連するレジスタ対応表を検索し、使用し
て、共通のレジスタ・ファイルを適切な値で初期化す
る。Zセグメントへの分岐エントリののち、レジスタ状
態の回復のために特別な備えを施す必要はない。適切な
相対化されていない条件性レベルを使用して、キャッシ
ュに記憶された、BWGに関連するレジスタ対応表にア
クセスするならば、レジスタが有効であるならば、識別
される共通のレジスタは正しい。レジスタが有効である
ならば、レジスタはZコード・セグメント中にセットさ
れたものであり、値を回復し、適切なアーキテクチャレ
ジスタに入れなければならない。それがセットされてい
たという事実が、設定命令がZセグメントへのエントリ
・ポイントに続いたということを示す。キャッシュに記
憶されたレジスタ対応表で識別されるレジスタが無効で
あるならば、それは、そのレジスタがエントリ・ポイン
トに続く命令によってセットされたのではないことを意
味し、エントリ時のアーキテクチャレジスタ値が、次の
処理セグメントに渡すべき正しい値である。さらには、
レジスタ対応表キャッシュ(180)に記憶され、分岐
と関連するレジスタ対応表のセットとともに、レジスタ
対応表のもう一つのセットがエントリ・ポイントに関連
している。これらは、エントリ・ポイントのレジスタ対
応表RCTEと呼ばれる。これらの表は、Zコード・エ
ントリ・ポイントに関連し、エントリ・ポイントが宣言
されるとき、Eモードによって作成される。これらの二
つのキャッシュは、番号がエントリ・ポイントに続く最
初のリネームされたレジスタよりも小さいレジスタにア
クセスするために、エントリ・ポイント・レジスタ対応
表を使用して処理要素と共通のレジスタ・ファイルとを
インタフェースさせるならば、簡単に合わせることがで
きる。すなわち、各処理要素が、RCTEを使用する再
翻訳を要するレジスタをフラグ付けするならば、その情
報を維持し、すべての処理要素に局所的に利用できるよ
うにするのではなく、共通のレジスタ・ファイルに関連
させることができる。
【0112】既存のZセグメントへの分岐エントリが実
行されるとき、エントリ・ポイントのレジスタ対応表が
そのキャッシュから検索され、各処理要素が、番号が、
エントリ・ポイント情報(図3)の一部である、リネー
ムされたレジスタとして使用される第一の共通のレジス
タの番号(217)よりも小さいレジスタの共通のレジ
スタ・ファイルにアクセスする際に、エントリ・ポイン
トに関連する対応表を使用して、値がこのアクセスに対
する応答として戻されべきであるアーキテクチャレジス
タを決定することができる。これが作用する理由は、Z
コードをもつすべての命令が、逐次コード中のエントリ
・ポイントに概念的に続く命令に対応するすべての処理
要素に関し、(1)エントリ・ポイントの後でセットさ
れるか、または(2)エントリ・ポイントよりも先のレ
ジスタセットの最後のコピーであるレジスタを参照する
からである。前者の場合、ソース・レジスタ番号は、少
なくとも、エントリ・ポイントの後でセットされた第一
のレジスタの番号と同じ大きさであり、後者の場合、使
用されるレジスタは、エントリ・ポイントに関連するレ
ジスタ対応表に関連するレジスタの1個である。処理要
素のZコードの中で、Zコード中のエントリ・ポイント
に続く命令が概念的にエントリ・ポイントに先行するな
らば、それは、Zモード処理の中の何らかの機構によっ
て無視することができる。現在のインプリメンテーショ
ンでは、エントリ・ポイントに概念的に先行するすべて
の命令は、エントリ・ポイントによりも概念的に後であ
るすべての命令に先行する。これをセクション5で説明
する。このインプリメンテーションでは、各Zコード中
のエントリ・ポイントが、エントリ・ポイントに概念的
に先行する命令を、そのエントリ・ポイントに概念的に
後続する命令から分ける。Zコードが命令シーケンス番
号を含み、エントリ・ポイントのシーケンス番号がZキ
ャッシュ・ディレクトリ中で利用可能になるならば、概
念的により先の命令を識別し、無視することもできる。
【0113】セクション5 Eモードおよび命令処理に
おける命令の処理要素への割り当て OSCの発生の後に要求されるかもしれない正規の命令
スケジューリングに対するアーキテクチャオーバライド
ならびにパイプライン式プロセッサでEモードが分岐予
測誤りを識別し、それから回復する方法に関する詳細
は、米国特許第5,347,639号「SELF PARALLEL
IZING COMPUTER SYSTEM AND METHOD」のセクション
7、セクション8およびセクション9で完全に記載され
ている。これらの同じ手法そのものを、SPURRと、
この引用例の特許に記載されているMSISプロセッサ
との間に存在する違いを考慮しながら、SPURR環境
に応用することができる。MSISプロセッサと、SP
URRプロセッサの実施態様との主な違いはすでに論じ
たため、SPURRにおけるスケジューリング動作およ
び命令処理の詳細を次に説明する。
【0114】Eモードでの動作は、Eモードで達成しな
ければならない機能を含む以下の動作の点で要約するこ
とができる。
【0115】レジスタ・リネーミング 命令スケジューリング 状態回復のための分岐処理−レジスタ対応表キャッシュ PELCを確立するための分岐処理 エントリ・ポイント確立の扱い 最後のPセグメント命令の扱い/Eモードの終了
【0116】Eモードでのこれらの動作の順序を図10
および11に示す。この順序は、上記に示した順序とは
わずかに異なる。その理由は、Eモードでの機能のいく
つか、たとえばエントリ・ポイント確立および命令のス
ケジューリングがすべて、先の命令の処理の最後で各処
理要素中に維持されている局所的情報に依存するからで
ある。Eモードでの他いくつかの機能は、命令の処理の
間に生成される情報に依存する。Eモードにおける動作
の順序を理解する一つの要点は、すべての処理要素が、
Pセグメントを構成する命令の順列に対して同一のセッ
トの動作を実行することを理解することである。Pセグ
メントからの情報は、各処理要素がすべての命令に対し
て同一の動作を実行している間、各処理要素により、そ
れらの元の概念的順序で見られる。各処理要素によるす
べての動作の結果は、命令が提示される順序だけに依存
するので同じであり、この順序は、動作のタイミングが
異なるかもしれない場合でも維持される。処理要素の動
作の間の唯一の違いがそれであるため、ある命令が所与
の処理要素にスケジュールされると決定されると、その
処理要素は、その命令のZコード・バージョンを作成
し、影響を受けたレジスタを更新することによってその
命令を実行し、それをZコード・キャッシュの中に配置
しなければならない。各処理装置中の動作は非同期的に
実施されてもよいが、処理装置どうしの間で同期を欠い
ても影響はない。代替の実施態様では、1個の処理装置
がEモードでのすべての動作を実行することも可能であ
る。これは、処理要素の間にZコードを分散するための
手段を要するであろう。Eモード処理をすべての処理要
素によって実行できるようにすることにより、この分散
を避けることもできる。最後に、特定のEモード動作
は、Pセグメントあたり1回だけ実施すればよい。これ
は、分岐命令が処理される点でのレジスタ対応表のキャ
ッシュ記憶およびエントリ・ポイントのレジスタ対応表
のキャッシュ記憶を含む。このような動作は、1個の処
理要素、たとえば処理要素1だけで実施することが好ま
しい。
【0117】図10および11に示すように、命令のE
モード処理での一連の動作は以下を含む。
【0118】1.エントリ・ポイント確立の扱い(図1
0、ステップ410) 2.命令スケジューリング(図10、ステップ420) 3.レジスタ・リネーミング(図10、ステップ43
0) 4.状態回復の分岐処理−レジスタ対応表キャッシュ
(図11、ステップ440) 5.PELCを確立するための分岐処理(図11、ステ
ップ450) 6.最後のPセグメント命令の扱い(図11、ステップ
460)/Cモードの終了
【0119】これらの機能の一つ以上に使用される処理
要素の態様を説明するのには、以下の術語が使用され
る。
【0120】現在のレジスタ・リネームCRR この量は、各処理要素中のプログラム・セグメントのE
モード処理の間に維持され、インクリメントされる。レ
ジスタを変更する各命令は、CRRの現在値にリネーム
されたレジスタを有し、CRRの値は次のリネーム活動
の前にただちにインクリメントされる。
【0121】条件性レベルLC 各処理要素は次の命令の条件性レベルを維持する。条件
性レベルは、プログラム・セグメント中に遭遇する分岐
命令の数であり、各分岐命令のデコードののちにインク
リメントされる。分岐命令は、分岐に先行する命令とで
(それらの命令そのものが分岐命令ではないならば)条
件性レベルを共用する。
【0122】サイクル占有ベクトルCOV 各処理要素は、0からnまで処理要素の数を含む要素を
有する任意の長さのベクトルを維持する。COVは、ス
ケジューラにより、所与の命令に割り当てられる処理要
素およびその処理要素が命令をZモードでデコードする
サイクルを決定するのに使用される。
【0123】レジスタ可用性時間RAT 各処理要素は、アーキテクチャレジスタの可用性時間の
表をこの表の中に維持する。レジスタを変更する各命令
は可用性時間を再計算させる。レジスタ可用性時間と
は、命令を変更するレジスタのデコード時間と、記憶ア
クセスに関連する待ち時間または並列動作モードでの実
行時間とを足したものである。
【0124】命令IDまたはシーケンス番号 各処理要素は、その処理要素がプログラム・セグメント
からすでに処理した命令の実行カウントを維持する。カ
ウントは1から始まり、各命令がEモードで処理される
ごとに局所的にインクリメントされる。
【0125】エントリ・ポイント Zコード中のエントリ・ポイントは、各処理要素のZキ
ャッシュ・ディレクトリ中に維持される固定命令アドレ
スに並行に関連する、処理要素あたり1個のZキャッシ
ュ・アドレスのセットである。そのような命令アドレス
が見いだされると、処理要素のモードはZモードにセッ
トされ、各処理要素は、それが処理すべき命令を求めて
それ自身のZキャッシュにアクセスし始める。Zセグメ
ントの開始はトリビアルなエントリ・ポイントである。
トリビアルでないエントリ・ポイントはまた、ディレク
トリ・エントリ中に、エントリ・ポイントとして選択さ
れた命令の条件性レベルと、エントリ・ポイントに概念
的に後続する命令によってセットされる第一の共通のレ
ジスタセットの番号とを含む。
【0126】セクション5.1 エントリ・ポイント確
立の扱い(ステップ410) 既存のZセグメントの中にエントリ・ポイントを確立す
るためには、Eモードは、エントリ・ポイントとなる命
令のアドレスを識別することができなければならない。
これを達成することができるいくつかの手段がある。一
つの手段は、異なるアドレスから発生するプログラム・
セグメントによって共用されるアドレスに関する情報を
集めたのち、二次的な並列化においてエントリ・ポイン
トを確立することである。ひとたびこの情報が集められ
ると、プログラム・セグメントの再並列化が、これらの
共用アドレスからエントリ・ポイントを作成することが
できる。もう一つの手段は、次の命令に対し、エントリ
・ポイントを周期的に(すなわち、Pセグメントをもつ
一定数の命令ごとに)宣言することである。
【0127】ひとたび確立されると、エントリ・ポイン
トは、以下の情報とともに各処理要素のZコード・キャ
ッシュ・ディレクトリに配置されなければならない。
【0128】このエントリ・ポイントを使用するときに
各処理要素Zキャッシュから導出される最初のZコード
命令のアドレス。
【0129】エントリ・ポイント・キャッシュのレジス
タ対応表(190)に維持されているレジスタ対応表の
コピーに対するポインタ。
【0130】このエントリ・ポイントの後のコードがリ
ネームする共用のレジスタを識別するCCRの現在値。
【0131】処理要素中で現在利用可能であるLC。
【0132】このエントリ・ポイントに関連するレジス
タ対応表は、エントリ・ポイントと宣言される命令のデ
コードの前に存在する表である。エントリ・ポイントに
関連するレジスタ対応表は、各処理要素によってキャッ
シュに記憶され、エントリ・ポイントがプログラム・セ
グメントの並列化実行によって利用されるときに用いら
れる。加えて、各処理要素は、処理要素が命令をスケジ
ュールする際に使用した最大サイクルMAXCYCLE
を維持する。各処理要素に関してエントリ・ポイントが
宣言される点でのMAXCYCLE+1の値は、エント
リ・ポイントに後続する処理要素中の第一の実行サイク
ルを表す。何らかな命令がこのサイクルにスケジュール
される前にPセグメントの最後の命令に遭遇するという
起こりそうにないイベントにおいては、MAXCYCL
E+1の値が、最後に使用された処理要素エントリ・ポ
イント・サイクルEPCに配置される。このEPCは、
必要な調節を行うために、Eモード中の最後のPセグメ
ント命令ハンドラ・ルーチンによって使用される。
【0133】占有割り当てアルゴリズム(420)によ
ってスケジュールされたコードは処理要素の中で概念的
順序にはないが、エントリ・ポイントに後続する各処理
要素の命令のスケジュールは、概念的にエントリ・ポイ
ントに先行する処理要素に割り当てられたすべての命令
に後続しなければならない。これは、エントリ・ポイン
トが宣言されたとき、各処理要素中でサイクル占有ベク
トルCOVを調節することによって達成される。唯一の
要件は、たとえば処理要素kに割り当てられる、エント
リ・ポイントに後続する命令を、エントリ・ポイントで
決定された処理要素kのMAXCYCLE、MAXCY
CLE(k)未満のサイクルに割り当てることができな
いことである。COVをしてこの要件を実施させる処理
は、MAXCYCLE(k)未満のすべてのサイクル位
置のCOV中の値をすべてのk値に関して少なくともk
になるよう調節することである。これは、サイクル上で
索引されるときのCOVを値において単調で非増加的に
することに等しい。これは、すべての処理要素にわたっ
て最大のサイクル・スケジュールの値MAXMAXCY
CLEを使用し、COVに沿って逆方向に進むCOVの
直接観察によって実施することができる。MAXMAX
CYCLE未満のCOV中のサイクル位置ごとに、CO
Vの値は、COV要素中のサイクル値の最大値および次
に高いサイクル位置のCOV要素の値になるようにセッ
トされる。この手順は、COVの最初の位置で、また
は、COV要素に挿入すべき値がn、すなわち、SPU
RR中の処理要素の数に等しいとき、終了する。これが
起こると、COV中のすべての先行位置がnに等しくセ
ットされる。
【0134】セクション5.2 命令スケジューリング
(ステップ420) 各処理要素は、現在処理されている命令の点までサイク
ルごとにスケジュールされた命令の数を記録するサイク
ル占有ベクトルCOVを含む。レジスタがリネームさ
れ、レジスタ変更を生じさせる命令のデコードのサイク
ルが決定されるたびに、このレジスタのレジスタ可用性
時間RATが、レジスタのリネームを記録するレジスタ
対応表の局所コピーの中にセットされる。レジスタ・リ
ネーム動作の詳細は、以下セクション5.3に説明す
る。
【0135】Eモード処理のはじめには、すべてのアー
キテクチャレジスタは、利用可能であると見なされ、ア
ーキテクチャレジスタの可用性時間はゼロであると見な
される。新たに変更されたレジスタの可用性時間は、新
たな値を作成する命令のデコード時間と、命令に関連す
る実行時間および記憶アクセス遅延とをプラスしたもの
である。命令によって要求されるオペランドの記憶アク
セス遅延は、1サイクルであると考える一定の量であ
る。命令のデコード時間は、命令のすべてのデコード入
力のRATを1サイクルだけ超えなければならず、そし
て、以下に記載する占有割り当てアルゴリズム(OA
A)によって定義される占有可用性制限を受ける。命令
のデコードに入力されるすべてのRATの1+最大値
を、命令の最小スロット時間と呼ぶ。
【0136】割り当てアルゴリズムとは、Pセグメント
中の各命令のデコード時間を決定し、その命令をデコー
ドタイムスロットおよび処理要素に割り当てる規則であ
る。通常、以下のようにして、命令が審査され、それら
のレジスタがリネームされ、概念的順序で割り当てら
れ、それらの入力のRATの後にスケジュールされる。
【0137】1.COV中の各タイムスロットを、その
タイムスロットに割り当てられた命令の数、いわゆるタ
イムスロットの占有に関連させる。
【0138】2.命令によって使用されるレジスタに関
連するRATの内容に基づいて、命令のタイムスロット
を計算する。このタイムスロットを命令の最小スロット
時間と呼ぶ。
【0139】最小スロット時間のCOVの値が、n、す
なわちSPURRプロセッサ中の処理要素の数よりも小
さいならば、選択されたタイムスロットが最小スロット
時間となる。
【0140】最小スロット時間のCOVの値が、n、す
なわちSPURRプロセッサ中の処理要素の数であるな
らば、命令は、COVエントリがn未満であるその後最
初のタイムスロットに割り当てられ、これが選択された
タイムスロットになる。
【0141】3.選択されたタイムスロットの占有は1
ずつインクリメントされ、命令は、番号が、選択された
タイムスロットのCOV中にある値に等しい処理要素に
割り当てられる。
【0142】4.デコード時間は選択時間に等しく、命
令の実行の結果のRATの計算を使用して、レジスタ対
応表の中のRATフィールドを更新する。
【0143】5.各処理要素は、その割り当てられた命
令の1個がスケジュールされている最高の番号のサイク
ルMAXCYCLEを維持する。選択されたタイムスロ
ットが、命令に割り当てられた処理要素のMAXCYC
LEを超えるならば、割り当てられた処理要素のMAX
CYCLEの現在値を更新して、選択時間に等しくす
る。
【0144】6.各処理要素は、いずれかの命令がスケ
ジュールされている最高の番号のサイクルMAXCYC
LEを維持する。選択されたタイムスロットがMAXC
YCLEを超えるならば、MAXCYCLEの現在値を
選択時間の値に更新する。
【0145】この方法で作成された割り当てが、命令を
実行する処理要素およびこの命令のデコード時間を決定
する。命令のデコード時間の値がセクション4.3で使
用されて、命令が変更するレジスタがあるならばそのR
ATが計算される。
【0146】セクション5.3 レジスタ・リネーミン
グ(ステップ430) Eモードにある命令を処理する際、命令がアーキテクチ
ャレジスタの新たな値をセットするたびにレジスタ・リ
ネーム動作が起こる必要がある。SPURR中のレジス
タは、一つの命令が作成する、別の命令が依存すること
ができる何かを包含するように汎用化されており、した
がって、条件コードの設定にも関連する。条件コード設
定命令を用いるアーキテクチャにおいて、条件コード
は、アーキテクチャレジスタによって表され、したがっ
てリネーミングを受ける。
【0147】各処理要素は、レジスタ・ファイル中の、
リネーミングに使用することができる次のレジスタをC
RR中に記録する。命令処理のこの点で、すでに命令は
ある処理要素にスケジュールされており、そのデコード
時間が決定されている。命令への入力としても使用され
るレジスタを変更する命令の混乱を避けるため、処理要
素による命令の処理は、命令が所与の処理要素にスケジ
ュールされているかどうかで異なる。命令が処理要素α
にスケジュールされているならば、Eモード中の処理要
素αが以下の動作を実行する。
【0148】処理要素がレジスタ対応表を使用して、す
べての命令ソース・レジスタをそれらのリネーミング値
に翻訳する。
【0149】処理要素αは、そのCRRを参照して、命
令のシンク・レジスタをリネームし、CRRをインクリ
メントする。
【0150】処理要素αは、命令を実行し、リネームさ
れたレジスタの値を共通のレジスタ・ファイル中にセッ
トする。
【0151】処理要素αは、命令222のZコード・バ
ージョンを作成し(図4を参照)、その命令を、それ自
体のZコード・キャッシュ中の、命令がスケジュールさ
れたサイクルと相応するアドレスに配置する。
【0152】そして、処理要素αは、命令のシンク・レ
ジスタのリネームに続いて、他すべてのプロセッサによ
って実行される処理を完了する。
【0153】処理要素が処理要素αではなく、命令がレ
ジスタの値を変更するならば、次のようになる。
【0154】処理要素は、CRR中の値を使用して命令
のシンク・レジスタをリネームし、CRR中の値をイン
クリメントする。
【0155】そして、すべての処理要素が、実行がレジ
スタの値を潜在的に変更する命令ごとに、以下を実施す
る。
【0156】このリネームの結果を、各処理要素によっ
て維持されるレジスタ対応表の現在のコピーに転記す
る。
【0157】セクション4.2で決定した命令のスケジ
ュールされたデコード時間を使用して、命令記憶アクセ
スおよび実行に含まれる待ち時間をデコードに加えるこ
とにより、命令によって変更されるレジスタのRATを
決定する。これが、RATを次の命令の処理に利用する
ことを可能にする。
【0158】処理される命令が分岐命令でもPセグメン
ト終了命令でもないならば、セクション4.4、4.5
および4.6をスキップすることができ、セクション
4.1のEモード処理によって次の命令を処理する。
【0159】セクション5.4 状態回復の分岐処理−
レジスタ対応表キャッシュ(ステップ440) Eモードの間、処理要素1が分岐命令に遭遇すると、ど
の処理要素がその命令のデコードおよび実行に割り当て
られるかにかかわらず、その処理要素は、SPURRプ
ロセッサが状態回復を実施することができるよう、その
命令のリネーム動作の最後にそのレジスタ対応表の内容
を保存しなければならない。共通のレジスタを、命令処
理のこの点で共通のレジスタがリネームするそれらのア
ーキテクチャ対応物と関連させる局所レジスタ対応表に
関連する情報を、分岐のためのレジスタ対応表(18
0)に記憶しなければならず、Pセグメントの開始アド
レスおよび分岐の条件性レベルを使用してこのキャッシ
ュから検索することができる。Pセグメントが分岐で入
れ込まれるならば、エントリ・ポイントの条件性レベル
を使用してコード中の分岐をカウントし、立証する方法
を相対化したのと同様にして、検索に使用される条件性
レベルをエントリ・ポイントの条件性レベルに相対化さ
せる。情報をレジスタ対応表から検索する方法を使用し
て、SPURRの並列処理段階が完了したのち、または
セクション4にすでに説明した分岐予測誤りが発生した
のち、処理の再会のために初期レジスタ状態を確立す
る。
【0160】セクション5.5 PELCを確立するた
めの分岐処理(ステップ450) 分岐予測誤りがZモードで起こると、Pセグメント中の
誤って予測された分岐の条件性レベル以下の条件性レベ
ルをもつ分岐命令よりも概念的に早いすべての命令がそ
れらの処理を完了する点で各処理要素を停止させなけれ
ばならない。処理要素によって実行される命令はもはや
順序どおりではない(すなわち、順序外で実行される)
ため、処理要素によって発される個々の命令の条件性レ
ベルを、より低い条件性レベルをもつすべての命令が処
理要素中で完了したという保証とみなすことはできな
い。各処理要素中で処理を停止させる方法は、Eモード
の間にセットされる処理要素条件性レベルPELCを使
用する方法である。いずれかの処理要素がPセグメント
・ストリーム中で分岐に遭遇すると、その分岐がその処
理要素に割り当てられているかどうかにかかわらず、そ
の処理要素は、その処理要素のMAXCYCLEにスケ
ジュールされた命令に対し、227(図4を参照)で遭
遇した分岐命令の条件性レベルを添付した。所与の命令
は、その227を何回も、しかも常に増大する値で上書
きされているかもしれない。PELCは、PELC=α
と標識された命令に後続する命令が、α以下の条件性レ
ベルを有してはいなかったことを保証する。PELC
は、中間値をスキップすることができ、したがって、取
り出し/格納制御の中で格納命令を刈り込むための唯一
のベースとしては不適当である。これはセクション3で
論じた。さらに、命令が分岐であるならば、すべての処
理要素は、次の命令が正しい条件性レベルで処理される
よう、それらの条件性レベルをインクリメントしなけれ
ばならない。
【0161】セクション5.6 最後のPセグメント命
令の扱い/Eモードの終了(ステップ460) Pセグメント中の最後の命令に遭遇すると、各処理要素
は、ビット228(図4を参照)をオンにすることによ
り、処理要素に関連するMAXCYCLEでその処理要
素に割り当てられた命令を、セグメントの終わり命令と
して宣言する。この規則に対する唯一の例外は、所与の
処理要素のMAXCYCLEの現在値がEPC未満であ
る場合である。この場合、EPCに関連する命令位置に
は、Pセグメントの最後の命令としてフラグ付けされて
いる無操作NOP命令が充填されている。次の命令のア
ドレスがZコード・キャッシュ・ディレクトリにおける
エントリであるならば、Pセグメントの最後の命令を宣
言することができる。したがって、次の命令のアドレス
をEモードによって使用して、現在の命令がEモードを
終了させ、Pセグメントの最終命令を表すかどうかが決
定される。
【0162】Pセグメントの最後の命令は普通は分岐で
あるが、いずれにしても、処理要素1は、Pセグメント
の最後の命令に遭遇したとき現在の条件性レベルで索引
されるそのレジスタ対応表のキャッシュ記憶可能なコピ
ーを生成する。ここでSPURRは、この条件性レベル
を使用して、すべての命令が完了し、取り出し/格納表
の刈り込みが達成されることを保証する状態回復を開始
する。
【0163】処理ステップの終了時および状態の回復お
よび取り出し/格納表の刈り込みののち、次の命令アド
レスを使用して、Zコード・キャッシュ・ディレクトリ
を探索して、次の処理間隔がEモードを含むのかZモー
ドを含むのかを決定するということは、セクション2で
すでに記載した。次の命令のアドレスがPセグメント開
始アドレスまたはPセグメント中のエントリ・ポイント
と一致する。Zモード処理間隔が確立される。
【0164】セクション6 Zモードにおける処理 Zモード処理は、レジスタ・リネーミング、命令スケジ
ューリングまたは回復情報のキャッシュ記憶が必要では
ないため、Eモード処理よりも簡素である。Zモードに
おける処理は、すべての処理要素がそれらの最後の命令
に達するか、分岐予測誤りが宣言されるまで継続する。
分岐予測誤りは、全証明条件性レベル(OCLC)34
1(図6を参照)によって宣言される。各処理要素中の
分岐解機構がZコードでの各分岐命令の解をバス390
を介して刈り込みモニタに通信する。所与の期間に、O
CLCは、より低いレベルのすべての分岐が正しく解か
れているよう、最大のLCである。OCLCを超えるも
のであるLCでの分岐がBWGとして解かれると、この
レベルのLCでの分岐予測誤りがすべての処理要素に通
信される。この分岐予測誤りを宣言した処理要素は、す
べての処理要素が静止し、状態回復が完了し、取り出し
/格納表が刈り込まれると、正しい目標アドレスをすべ
ての処理要素に通信する。Zモードでは、ひとたび処理
要素のPELCが分岐予測誤りのLC以上になると、処
理要素は分岐予測誤りののち静止する。処理要素は、そ
れに割り当てられた命令の最高のPELC227(図4
を参照)に基づいて継続的にそのPELCをリセットす
る。処理要素は、セグメントの終わりビット228がオ
ンになっている命令に達すると、自動的に静止する。
【0165】一つの好ましい実施態様に関して本発明を
説明したが、当業者であれば、請求項の真髄および範囲
の中で、本発明に変更を加えて実施しうることを認識す
るであろう。
【0166】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)命令のシーケンスを格納するメモリと、複数の実
行装置と、前記メモリに格納された前記命令のシーケン
スの第一のシーケンスの代替符号化を、前記メモリに格
納された前記命令のシーケンスの実行と同時に生成する
並列命令生成手段と、を含み、前記代替符号化を、前記
複数の実行装置によって非同期的に並列で実行すること
ができ、前記複数の実行装置が共通のレジスタ・ファイ
ルを介してインタフェースすることを特徴とするコンピ
ュータ処理装置。 (2)前記代替符号化が前記命令の第一のシーケンスの
複数のサブシーケンスを含み、前記命令のサブシーケン
スを、前記複数の実行装置によって非同期的に並列で実
行することができる上記(1)記載のコンピュータ処理
装置。 (3)前記複数の実行装置それぞれが、前記命令のサブ
シーケンスの一つを格納するための専有命令キャッシュ
に関連している上記(2)記載のコンピュータ処理装
置。 (4)前記並列命令生成手段が前記命令のサブシーケン
スへの複数のエントリ・ポイントを識別する上記(2)
記載のコンピュータ処理装置。 (5)前記並列命令生成手段がレジスタ・リネーミング
を使用して前記命令の第一のシーケンスの前記複数のサ
ブシーケンスを生成する上記(2)記載のコンピュータ
処理装置。 (6)前記並列生成手段が、命令の各サブシーケンスに
関連するレジスタ対応表を格納し、前記レジスタ対応表
が、関連する命令のサブシーケンスの中の命令によって
使用され、定義されるレジスタと、前記共通のレジスタ
・ファイルのレジスタとの間のマッピングを表す上記
(5)記載のコンピュータ処理装置。 (7)前記レジスタ対応表が、レジスタ対応表に関連す
る命令のサブシーケンスの中の命令によって使用および
/または定義されるレジスタがマッピングされる前記共
通のレジスタ・ファイルの各レジスタに対応するエント
リを含み、前記エントリが、前記共通のレジスタ・ファ
イルの対応するレジスタに関連する可用性期間を表す可
用性データを含む上記(6)記載のコンピュータ処理装
置。 (8)命令のシーケンスを格納するメモリと、複数の実
行装置とを含むコンピュータ処理装置において前記命令
のシーケンスを実行する方法において、前記メモリに格
納された前記命令のシーケンスを実行するステップと、
前記メモリに格納された前記命令のシーケンスの前記実
行ステップと同時に、前記メモリに格納された前記命令
のシーケンスの第一のシーケンスの代替符号化を生成す
るステップと、を含み、前記代替符号化を、前記複数の
実行装置によって非同期的に並列で実行することがで
き、前記複数の実行装置が共通のレジスタ・ファイルを
介してインタフェースすることを特徴とする方法。 (9)前記代替符号化が前記命令の第一のシーケンスの
複数のサブシーケンスを含み、前記命令のサブシーケン
スを、前記複数の実行装置によって非同期的に並列で実
行することができる上記(8)記載の方法。 (10)前記複数の実行装置それぞれが、前記命令のサ
ブシーケンスの一つを格納するための専有命令キャッシ
ュに関連している上記(9)記載の方法。 (11)前記命令のサブシーケンスへの複数のエントリ
・ポイントを識別するステップをさらに含む上記(9)
記載の方法。 (12)前記生成ステップがレジスタ・リネーミングを
使用して前記命令の第一のシーケンスの前記複数のサブ
シーケンスを生成する上記(9)記載の方法。 (13)命令の各サブシーケンスに関連するレジスタ対
応表を格納するステップをさらに含み、前記レジスタ対
応表が、関連する命令のサブシーケンスの中の命令によ
って使用され、定義されるレジスタと、前記共通のレジ
スタ・ファイルのレジスタと間のマッピングを表す上記
(12)記載の方法。 (14)前記レジスタ対応表が、レジスタ対応表に関連
する命令のサブシーケンスの中の命令によって使用およ
び/または定義されるレジスタがマッピングされる前記
共通のレジスタ・ファイルの各レジスタに対応するエン
トリを含み、前記エントリが、前記共通のレジスタ・フ
ァイルの対応するレジスタに関連する可用性期間を表す
可用性データを含む上記(13)記載の方法。 (15)命令のシーケンスを格納するメモリと、複数の
実行装置と、前記メモリに格納された前記命令のシーケ
ンスの第一のシーケンスの代替符号化を、前記メモリに
格納された前記命令のシーケンスの実行と同時に生成す
る並列命令生成手段と、を含み、前記代替符号化を、前
記複数の実行装置によって非同期的に並列で実行するこ
とができ、前記代替符号化が、順序外にスケジュールさ
れた少なくとも一つの命令と、少なくとも一つの推論的
分岐命令とを含み、前記少なくとも一つの推論的分岐命
令が誤って推測されたことを示す分岐予測誤り信号を生
成する手段と、前記メモリに格納された、前記少なくと
も一つの推論的分岐命令に先行するすべての命令の実行
を完了したとき、前記分岐予測誤り信号に応答して、前
記実行装置を制御して、前記代替符号化の実行を停止さ
せる手段とを含む回復手段と、を含むことを特徴とする
コンピュータ処理装置。 (16)前記推論的分岐命令の結果が前記分岐命令の最
初の実行に基づいて推論される上記(15)記載のコン
ピュータ処理装置。 (17)前記回復手段が、前記実行装置によって実行さ
れる各代替符号化に関連する条件性レベルを表す第一の
データを格納する表と、前記少なくとも一つの推論的分
岐命令の条件性レベルを表す第二のデータを生成する手
段と、前記実行装置によって実行される前記代替符号化
に関連する前記第一のデータが前記第二のデータに対応
すると決定したとき、各実行装置を制御して、前記代替
符号化の実行を停止させる手段と、を含む上記(15)
記載のコンピュータ処理装置。 (18)命令のシーケンスを格納するメモリと、複数の
実行装置とを含むコンピュータ処理装置において前記命
令のシーケンスを実行する方法において、前記メモリに
格納された前記命令の順列を実行するステップと、前記
命令のシーケンスの前記実行ステップと同時に、前記メ
モリに格納された前記命令のシーケンスの第一のシーケ
ンスの代替符号化を生成するステップと、を含み、前記
代替符号化を、前記複数の実行装置によって非同期的に
並列で実行することができ、前記代替符号化が、順序外
にスケジュールされた少なくとも一つの命令と、少なく
とも一つの推論的分岐命令とを含み、前記少なくとも一
つの推論的分岐命令が誤って推測されたことを示す分岐
予測誤り信号を生成するステップと、前記メモリに格納
された、前記少なくとも一つの推論的分岐命令に先行す
るすべての命令の実行を完了したとき、前記分岐予測誤
り信号に応答して、前記実行装置を制御して、前記代替
符号化の実行を停止させるステップと、を含むことを特
徴とする方法。 (19)前記推論的分岐命令の結果を、前記分岐命令の
最初の実行に基づいて推論する上記(18)記載の方
法。 (20)前記実行装置によって実行される各代替符号化
に関連する条件性レベルを表す第一のデータを生成する
ステップと、前記少なくとも一つの推論的分岐命令の条
件性レベルを表す第二のデータを生成するステップと、
前記実行装置によって実行される前記代替符号化に関連
する前記第一のデータが前記第二のデータに対応すると
決定したとき、各実行装置を制御して、前記代替符号化
の実行を停止させるステップとをさらに含む上記(1
8)記載の方法。
【図面の簡単な説明】
【図1】本発明の自己並列化処理システムの好ましい実
施態様のブロック図である。
【図2】好ましい実施態様において一つの処理要素によ
って使用される専有Zキャッシュの構造を示す図であ
る。
【図3】Zキャッシュのディレクトリ中のエントリのフ
ォーマットを示す図である。
【図4】Zキャッシュのセルに記憶されたZ命令のフォ
ーマットを示す図である。
【図5】Zキャッシュ・セルの命令フォーマット拡張部
を示す図である。
【図6】好ましい実施態様において順番外ハザードを監
視するOSC/PSC制御のブロック図である。
【図7】OSC/PSC制御における取り出し表エント
リのフォーマットを示す図である。
【図8】OSC/PSC制御における格納表エントリの
フォーマットを示す図である。
【図9】OSC/PSC制御における刈り込みモニタを
示す図である。
【図10】Eモードにおける動作の順序を示す図であ
る。
【図11】Eモードにおける動作の順序を示す図であ
る。
【符号の説明】
100 処理要素 130 実行装置 140 記憶階層 145 インタフェース 160 共通のレジスタ・ファイル 170 レジスタ対応表 180 レジスタ対応表キャッシュ 200 Zキャッシュ 300 OSC/PSC制御 500 命令デコーダ/スケジューラ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 カタッムリ・エカナハム アメリカ合衆国10598 ニューヨーク州 ヨークタウン ハイツ カリー ストリー ト 3263

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】命令のシーケンスを格納するメモリと、 複数の実行装置と、 前記メモリに格納された前記命令のシーケンスの第一の
    シーケンスの代替符号化を、前記メモリに格納された前
    記命令のシーケンスの実行と同時に生成する並列命令生
    成手段と、を含み、 前記代替符号化を、前記複数の実行装置によって非同期
    的に並列で実行することができ、前記複数の実行装置が
    共通のレジスタ・ファイルを介してインタフェースする
    ことを特徴とするコンピュータ処理装置。
  2. 【請求項2】前記代替符号化が前記命令の第一のシーケ
    ンスの複数のサブシーケンスを含み、前記命令のサブシ
    ーケンスを、前記複数の実行装置によって非同期的に並
    列で実行することができる請求項1記載のコンピュータ
    処理装置。
  3. 【請求項3】前記複数の実行装置それぞれが、前記命令
    のサブシーケンスの一つを格納するための専有命令キャ
    ッシュに関連している請求項2記載のコンピュータ処理
    装置。
  4. 【請求項4】前記並列命令生成手段が前記命令のサブシ
    ーケンスへの複数のエントリ・ポイントを識別する請求
    項2記載のコンピュータ処理装置。
  5. 【請求項5】前記並列命令生成手段がレジスタ・リネー
    ミングを使用して前記命令の第一のシーケンスの前記複
    数のサブシーケンスを生成する請求項2記載のコンピュ
    ータ処理装置。
  6. 【請求項6】前記並列生成手段が、命令の各サブシーケ
    ンスに関連するレジスタ対応表を格納し、前記レジスタ
    対応表が、関連する命令のサブシーケンスの中の命令に
    よって使用され、定義されるレジスタと、前記共通のレ
    ジスタ・ファイルのレジスタとの間のマッピングを表す
    請求項5記載のコンピュータ処理装置。
  7. 【請求項7】前記レジスタ対応表が、レジスタ対応表に
    関連する命令のサブシーケンスの中の命令によって使用
    および/または定義されるレジスタがマッピングされる
    前記共通のレジスタ・ファイルの各レジスタに対応する
    エントリを含み、前記エントリが、前記共通のレジスタ
    ・ファイルの対応するレジスタに関連する可用性期間を
    表す可用性データを含む請求項6記載のコンピュータ処
    理装置。
  8. 【請求項8】命令のシーケンスを格納するメモリと、複
    数の実行装置とを含むコンピュータ処理装置において前
    記命令のシーケンスを実行する方法において、 前記メモリに格納された前記命令のシーケンスを実行す
    るステップと、 前記メモリに格納された前記命令のシーケンスの前記実
    行ステップと同時に、前記メモリに格納された前記命令
    のシーケンスの第一のシーケンスの代替符号化を生成す
    るステップと、を含み、 前記代替符号化を、前記複数の実行装置によって非同期
    的に並列で実行することができ、前記複数の実行装置が
    共通のレジスタ・ファイルを介してインタフェースする
    ことを特徴とする方法。
  9. 【請求項9】前記代替符号化が前記命令の第一のシーケ
    ンスの複数のサブシーケンスを含み、前記命令のサブシ
    ーケンスを、前記複数の実行装置によって非同期的に並
    列で実行することができる請求項8記載の方法。
  10. 【請求項10】前記複数の実行装置それぞれが、前記命
    令のサブシーケンスの一つを格納するための専有命令キ
    ャッシュに関連している請求項9記載の方法。
  11. 【請求項11】前記命令のサブシーケンスへの複数のエ
    ントリ・ポイントを識別するステップをさらに含む請求
    項9記載の方法。
  12. 【請求項12】前記生成ステップがレジスタ・リネーミ
    ングを使用して前記命令の第一のシーケンスの前記複数
    のサブシーケンスを生成する請求項9記載の方法。
  13. 【請求項13】命令の各サブシーケンスに関連するレジ
    スタ対応表を格納するステップをさらに含み、前記レジ
    スタ対応表が、関連する命令のサブシーケンスの中の命
    令によって使用され、定義されるレジスタと、前記共通
    のレジスタ・ファイルのレジスタと間のマッピングを表
    す請求項12記載の方法。
  14. 【請求項14】前記レジスタ対応表が、レジスタ対応表
    に関連する命令のサブシーケンスの中の命令によって使
    用および/または定義されるレジスタがマッピングされ
    る前記共通のレジスタ・ファイルの各レジスタに対応す
    るエントリを含み、前記エントリが、前記共通のレジス
    タ・ファイルの対応するレジスタに関連する可用性期間
    を表す可用性データを含む請求項13記載の方法。
  15. 【請求項15】命令のシーケンスを格納するメモリと、 複数の実行装置と、 前記メモリに格納された前記命令のシーケンスの第一の
    シーケンスの代替符号化を、前記メモリに格納された前
    記命令のシーケンスの実行と同時に生成する並列命令生
    成手段と、を含み、 前記代替符号化を、前記複数の実行装置によって非同期
    的に並列で実行することができ、前記代替符号化が、順
    序外にスケジュールされた少なくとも一つの命令と、少
    なくとも一つの推論的分岐命令とを含み、 前記少なくとも一つの推論的分岐命令が誤って推測され
    たことを示す分岐予測誤り信号を生成する手段と、 前記メモリに格納された、前記少なくとも一つの推論的
    分岐命令に先行するすべての命令の実行を完了したと
    き、前記分岐予測誤り信号に応答して、前記実行装置を
    制御して、前記代替符号化の実行を停止させる手段とを
    含む回復手段と、を含むことを特徴とするコンピュータ
    処理装置。
  16. 【請求項16】前記推論的分岐命令の結果が前記分岐命
    令の最初の実行に基づいて推論される請求項15記載の
    コンピュータ処理装置。
  17. 【請求項17】前記回復手段が、 前記実行装置によって実行される各代替符号化に関連す
    る条件性レベルを表す第一のデータを格納する表と、 前記少なくとも一つの推論的分岐命令の条件性レベルを
    表す第二のデータを生成する手段と、 前記実行装置によって実行される前記代替符号化に関連
    する前記第一のデータが前記第二のデータに対応すると
    決定したとき、各実行装置を制御して、前記代替符号化
    の実行を停止させる手段と、を含む請求項15記載のコ
    ンピュータ処理装置。
  18. 【請求項18】命令のシーケンスを格納するメモリと、
    複数の実行装置とを含むコンピュータ処理装置において
    前記命令のシーケンスを実行する方法において、 前記メモリに格納された前記命令の順列を実行するステ
    ップと、 前記命令のシーケンスの前記実行ステップと同時に、前
    記メモリに格納された前記命令のシーケンスの第一のシ
    ーケンスの代替符号化を生成するステップと、を含み、 前記代替符号化を、前記複数の実行装置によって非同期
    的に並列で実行することができ、前記代替符号化が、順
    序外にスケジュールされた少なくとも一つの命令と、少
    なくとも一つの推論的分岐命令とを含み、 前記少なくとも一つの推論的分岐命令が誤って推測され
    たことを示す分岐予測誤り信号を生成するステップと、 前記メモリに格納された、前記少なくとも一つの推論的
    分岐命令に先行するすべての命令の実行を完了したと
    き、前記分岐予測誤り信号に応答して、前記実行装置を
    制御して、前記代替符号化の実行を停止させるステップ
    と、を含むことを特徴とする方法。
  19. 【請求項19】前記推論的分岐命令の結果を、前記分岐
    命令の最初の実行に基づいて推論する請求項18記載の
    方法。
  20. 【請求項20】前記実行装置によって実行される各代替
    符号化に関連する条件性レベルを表す第一のデータを生
    成するステップと、 前記少なくとも一つの推論的分岐命令の条件性レベルを
    表す第二のデータを生成するステップと、 前記実行装置によって実行される前記代替符号化に関連
    する前記第一のデータが前記第二のデータに対応すると
    決定したとき、各実行装置を制御して、前記代替符号化
    の実行を停止させるステップとをさらに含む請求項18
    記載の方法。
JP25972997A 1996-10-01 1997-09-25 命令シーケンスを実行する方法及び装置 Expired - Lifetime JP3731843B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/724,633 US5802338A (en) 1996-10-01 1996-10-01 Method of self-parallelizing and self-parallelizing multiprocessor using the method
US08/724633 1996-10-01

Publications (2)

Publication Number Publication Date
JPH10124317A true JPH10124317A (ja) 1998-05-15
JP3731843B2 JP3731843B2 (ja) 2006-01-05

Family

ID=24911209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25972997A Expired - Lifetime JP3731843B2 (ja) 1996-10-01 1997-09-25 命令シーケンスを実行する方法及び装置

Country Status (4)

Country Link
US (1) US5802338A (ja)
JP (1) JP3731843B2 (ja)
CN (1) CN1127016C (ja)
GB (1) GB2318660B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898849A (en) * 1997-04-04 1999-04-27 Advanced Micro Devices, Inc. Microprocessor employing local caches for functional units to store memory operands used by the functional units
US6161167A (en) * 1997-06-27 2000-12-12 Advanced Micro Devices, Inc. Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US6757816B1 (en) * 1999-12-30 2004-06-29 Intel Corporation Fast branch misprediction recovery method and system
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US20030154419A1 (en) * 2002-01-10 2003-08-14 Binyu Zang Register renaming in binary translation using rollback and recovery
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
WO2005013123A1 (en) * 2003-07-29 2005-02-10 Bitfone Corporation Mobile handset with update agent implemented in hardware
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
JP2006053662A (ja) * 2004-08-10 2006-02-23 Matsushita Electric Ind Co Ltd 多重プロセッサ
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8281083B2 (en) * 2005-06-30 2012-10-02 Intel Corporation Device, system and method of generating an execution instruction based on a memory-access instruction
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US7849290B2 (en) * 2007-07-09 2010-12-07 Oracle America, Inc. Store queue architecture for a processor that supports speculative execution
US8423584B2 (en) * 2008-05-08 2013-04-16 International Business Machines Corporation Conditional inclusion of resources in a computer system configuration
EP2601577B1 (en) * 2010-08-06 2019-02-13 Frederick Furtek A method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system
US20130339666A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Special case register update without execution
JP6307975B2 (ja) * 2014-03-28 2018-04-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法
DE102017209697A1 (de) * 2016-06-13 2017-12-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10430197B2 (en) 2017-05-12 2019-10-01 Samsung Electronics Co., Ltd. Banking register renaming to reduce power

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574349A (en) * 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
DE69030931T2 (de) * 1989-04-24 1998-01-15 Ibm Mehrfachsequenzprozessorsystem
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5412784A (en) * 1991-07-15 1995-05-02 International Business Machines Corporation Apparatus for parallelizing serial instruction sequences and creating entry points into parallelized instruction sequences at places other than beginning of particular parallelized instruction sequence
US5408658A (en) * 1991-07-15 1995-04-18 International Business Machines Corporation Self-scheduling parallel computer system and method
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5581719A (en) * 1992-11-12 1996-12-03 Digital Equipment Corporation Multiple block line prediction
EP0779577B1 (en) * 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Micoprocessor pipe control and register translation
DE69425311T2 (de) * 1993-10-18 2001-03-15 Nat Semiconductor Corp Mikroprozessor mit spekulativer Befehlsausführung
JP3699518B2 (ja) * 1995-01-26 2005-09-28 サン マイクロシステムズ インコーポレイテッド パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013532331A (ja) * 2010-06-29 2013-08-15 インテル・コーポレーション 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム

Also Published As

Publication number Publication date
GB9719580D0 (en) 1997-11-19
CN1178942A (zh) 1998-04-15
GB2318660A (en) 1998-04-29
JP3731843B2 (ja) 2006-01-05
GB2318660B (en) 2001-07-04
US5802338A (en) 1998-09-01
CN1127016C (zh) 2003-11-05

Similar Documents

Publication Publication Date Title
JP3731843B2 (ja) 命令シーケンスを実行する方法及び装置
JP2898820B2 (ja) 自己並列化式のコンピュータ・システムおよび方法
Franklin et al. The expandable split window paradigm for exploiting fine-grain parallelsim
Franklin et al. ARB: A hardware mechanism for dynamic reordering of memory references
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
US5408658A (en) Self-scheduling parallel computer system and method
US8028152B2 (en) Hierarchical multi-threading processor for executing virtual threads in a time-multiplexed fashion
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
US20160098279A1 (en) Method and apparatus for segmented sequential storage
US5996060A (en) System and method for concurrent processing
US6442679B1 (en) Apparatus and method for guard outcome prediction
US20080133889A1 (en) Hierarchical instruction scheduler
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
US20080133893A1 (en) Hierarchical register file
US9176741B2 (en) Method and apparatus for segmented sequential storage
JP2000029699A (ja) プロセサア―キテクチャ
WO1998037485A1 (en) Method and apparatus for forwarding of operands in a computer system
WO2007027671A2 (en) Scheduling mechanism of a hierarchical processor including multiple parallel clusters
US6032244A (en) Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling
Krishnan et al. The need for fast communication in hardware-based speculative chip multiprocessors
JP2007531164A (ja) データスペキュレーションの明示的ソフトウェア制御のための方法及び構造
US7434004B1 (en) Prefetch prediction
JPH08286913A (ja) パイプライン・プロセッサにおいて次に完了すべき命令のアドレスを生成する方法および装置
Hirata et al. Parallel binary search tree construction inspired by thread-level speculation
Mitrevski et al. Prediction and speculation techniques in ILP

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041001

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20041224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050330

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050330

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050926

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050926

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050926

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081021

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111021

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121021

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121021

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131021

Year of fee payment: 8

EXPY Cancellation because of completion of term