JPH04505823A - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH04505823A JPH04505823A JP3507370A JP50737091A JPH04505823A JP H04505823 A JPH04505823 A JP H04505823A JP 3507370 A JP3507370 A JP 3507370A JP 50737091 A JP50737091 A JP 50737091A JP H04505823 A JPH04505823 A JP H04505823A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- compound
- sequence
- byte
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 39
- 150000001875 compounds Chemical class 0.000 claims abstract description 221
- 238000013329 compounding Methods 0.000 claims abstract description 111
- 238000000034 method Methods 0.000 claims description 77
- 239000002131 composite material Substances 0.000 claims description 48
- 230000008569 process Effects 0.000 claims description 35
- 238000007689 inspection Methods 0.000 claims description 19
- 238000012360 testing method Methods 0.000 claims description 10
- 238000000354 decomposition reaction Methods 0.000 claims description 6
- 230000002441 reversible effect Effects 0.000 claims description 6
- 230000009467 reduction Effects 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 3
- 230000003213 activating effect Effects 0.000 claims 1
- 238000002474 experimental method Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 35
- 230000007246 mechanism Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 18
- 238000013461 design Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 239000000203 mixture Substances 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000000536 complexating effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 210000002784 stomach Anatomy 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000894590 Homo sapiens Uncharacterized protein C20orf85 Proteins 0.000 description 1
- 241000287462 Phalacrocorax carbo Species 0.000 description 1
- 102100021442 Uncharacterized protein C20orf85 Human genes 0.000 description 1
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000009940 knitting Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000009828 non-uniform distribution Methods 0.000 description 1
- 230000010363 phase shift Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。
Description
【発明の詳細な説明】
異なる参照点情報を有するテキスト及びデータ処理用の装置と複合命令用の逆方
向複合化装置とを有する異なる属性を有する命令プロセッサ用の命令を複合化す
るためのシステム関連特許出願の相互参照
本出願は、優先権を請求し、1990年5月4日出願の米国特許出願第0715
19384号、1990年6月26日出願ノ米国特許出願第071543458
号、1991年1月15日出願の米国特許出願第07/642011号および1
990年5月4日出願の米国特許出願第071519382号に対する米国一部
継続出願に当たる。
本米国特許出願は、下記の同時係属の米国特許出願に関連している。
(1)1990年5月4日出願の発明の名称がrscalableCompou
nd In5truction Set Machine Architect
ure」で、発明者がスタマティス・バシリアディス(StamatisVas
siliadis)他の米国特許出願第071519384号(よりMド’y−
ット番%EN9−90−020)(2)1990年5月4日出願の発明の名称が
r GeneralPurpose Compound Technique
For In5truction−LevelParallel Proces
sorsJで、発明者がリチャード・J−アイケマイヤ−(Richard J
、 Eickemeyer)他の米国特許出願第O77519382号(I B
Mドケット番号EN9−90−01(3)1990年4月4日出願の発明の名称
がrDataDependency CCo11apsin Hardware
ApparatusJで、発明者がタマティス・バシリアディス他の米国特杆
出願第071504910号(IBMドケット番号EN9−90−014)(4
)1990年5月10日出願の発明の名称がrcompounding Pre
processor For Cache−Jで、発明者がバーソロミュー・プ
ラナ−(Bartholomew Blaner)他の米国特許出願第0715
22219号(I BMドケット番号EN9−(5)1990年6月26日出願
の発明の名称がrAnIn−Memory Preprocessor for
a 5calable CompoundInstruction Set
Machine Processor4で、発明者がリチャード・アイケマイヤ
ー他の米国特許出願第071543464号(IBMドケット番号EN9−90
−018)(6)1990年6月26日出願の発明の名称がr MemoryM
anagement for 5calable Compound In5t
ruction SetMachines With In−Memory C
ompounding」で、発明者がリチャード・J・アイケマイヤー他の米国
特許出願第071543458号(I BMドケット番号EN9−90−042
)(7)1990年11月28日出願の発明の名称がroverflow De
termination for Three−Operand ALUS i
n aScalable Compound In5truction Set
MachineJで、発明者がスタマティス・バシリアディス他の米国特詐出
願第07/619868号(IBMドケット番号EN9−90−033)(8)
1991年1月15日出願の発明の名称がrcompounding Prep
rocessor for CacheJで、発明者がスタマティス・バシリア
ディス他の米国特許出願第07/642011号(IBMドケット番号EN9−
90−049)(9)−一年一月一日出願の発明の名称がrsystem fo
rPreparing In5tructions for In5truct
ion Processor andSysteu WithMechanis
m for Branching in the Middle of aCo
mpound In5tructionJで、発明者がスタマティス・バシリア
ディス他の米国特許出願節−−−−−−−−−号(IBMドケット番号EN9−
90−040)
これらの同時係属の特許出願及び本出願は、同一の譲受人、すなわち米国ニュー
ヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレー
ション(International Business Machines
Corporation)が所有する。これら同時係属の特許出願に記述された
記載を、引用により本明細書に合体する。
これら関連ケースを再検討すると、第1図および第2図は1990年5月4日出
願の米国特許出願第071519384号に図示され、第3図は、1990年6
月26日出願の米国特奸出願第071543458号に記載され、第4B図は、
1991年1月15日畠願ノ米国特許a願第07/642011号に一般的に記
載され、第5図ないし第7図は、1990年5月4日出願の米国特許出願第07
1519382号に図示されていることがわかる。
口技術分野]
本発明は、デジタル・コンピュータ及びデジタル・データ・プロセッサに関し、
特に、2つ以上の命令を並列に実行することができるデジタル・コンピュータ及
びデータ・プロセッサに関するものであり、命令とデータを別々に処理するアー
キテクチャを使用するプロセッサ、命令とデータが混在できるプロセッサ、命令
を識別する基準表示を有するプロセッサ及びこれを有さないプロセッサを含めて
、様々な命令プロセッサ用の命令を複合化するシステム及び技法を詳述し、可変
ワード長の命令を複合化するための逆方向複合化装置を提供するものである。さ
らに、2つまたはそれ以上の長さの複数命令の複合化が提供される。
[背景技術]
命令のシーケンスを受け取り、1回に1命令ずつそのシーケンスを実行する従来
型コンピュータは公知である。これらのコンピュータによって実行される命令は
、単一の値のオブジェクトで作動し、したがって、これらのコンピュータには、
「スカラー」という名称が用いられる。
従来型のスカラ一式コンピュータの動作速度は、回路技術、コンピュータ機構及
びコンピュータ・アーキテクチャの進歩によって、その限界まで高速化されてき
た。しかしながら、計算機の新しい世代ごとに、従来型のスカラ一式計算機用の
新しい加速機構が発見されなければならない。
単一プロセッサの計算速度を加速するための最近の機構は、限られた非常に単純
な命令セットを使用する縮小命令セット・アーキテクチャに見られる。もう1つ
の加速機構は、最小限の1組の複雑な多重オペランド命令セットに基づく、複合
命令セット・アーキテクチャである。これらのどちらかの手法を既存のスカラ一
式コンピュータに適用するには、計算機の命令セットとアーキテクチャを根本的
に変更する必要がある。このような広範囲に及ぶ変更は、出費と停止時間を伴い
、当初は計算機の信頼性と可用性が低下する恐れがある。
命令セットの縮小によって実現される利益のいくつかをスカラ一式計算機に適用
しようとする努力の中で、いわゆる「スーパースカラー」コンピュータが開発さ
れた。これらの計算機は、基本的にはスカラ一式計算機であるが、単一スカラー
命令のシーケンスを含む命令ストリームから複数の命令を同時に実行するよう適
合させることによって、その性能を向上させたものである。通常、これらの計算
機は、スカラー命令のシーケンス中の2つ以上の命令を並列に実行できるか否か
を、命令実行時に判断する。この判断は、その命令の命令コードと、命令間に存
在するデータ依存性に基づいて行われる。命令コードは、ある命令に必要な計算
ハードウェアを示す。一般に、同一のハードウェア(ハードウェア依存性)また
は同一のオペランド(データ依存性)を利用する2つ以上の命令を同時に実行す
ることはできない。これらのハードウェア依存性とデータ依存性のため、ある種
の命令の組合せの並列実行が妨げられる。これらの場合、影響を受ける命令は、
逐次実行される。そのため、もちろん、スーパースカラー計算機の性能は低下す
る。
スーパースカラー計算機にはいくつかの短所があり、それらを最小限に抑えるこ
とが望ましい。どの命令が並列に実行できるかを命令実行時に判断する際に、一
定量の時間が消費される。この時間は、他の計算機動作とオーバーラツプさせる
ことによって容易に解消できない。この欠点は、命令セット・アーキテクチャの
複雑さが増加するにつれて顕著になる。
また、同一の命令を実行しようとするたびに並列実行の判断を繰り返さなければ
ならない。
既存のスカラ一式計算機の耐用寿命を伸ばすには、実行を加速するためのあらゆ
る手段が重要である。しかし、縮小命令セット・アーキテクチャ、複合命令セッ
ト・アーキテクチャ、またはスーパースカラー技法による加速は、既存のスカラ
ー計算機用としては、潜在的にコストが高すぎるか、不利益が多すぎる。命令セ
ットの変更や、計算機アーキテクチャの変更や、命令実行に必要な時間の延長を
必要とせず、既存の命令セット中の命令を並列にまたは同時に実行することによ
ってこのような計算機の実行速度を加速することが好ましい。
[発明の概要コ
本発明者等は本明細書及び参照された特許出願で、それらのシステム及び技法が
既存のプロセッサの機能強化及びその更に進んだ開発を可能にすると同時に、機
能強化されたプロセッサがその先行プロセッサ用に開発されたコードをより効率
的に実行できるようにすることを前提とする、命令プロセッサ用の命令の複合化
に関する諸発明について詳述した。しかしながら、本明細書に記述するこれら諸
発明の背景に焦点を当てる時、本発明者等及び他の著者が他所で記述したこれら
すべての開発において、本明細書に記載の諸発明の利益を適用しなければ、コン
ピュータによって実行される命令セットまたはプログラムの処理中に、どのよう
に命令を組み合わせればこれら諸発明が適用できる可能な様々なアーキテクチャ
用の複合命令にすることができるかを判断する必要が満たされないままになるこ
とが認識されるべきである。現在、RISCやS/370を含めて多(の種類の
アーキテクチャがあり、データが命令と混在するものと、そうでないものがあり
、可変長命令を有するものと、そうでないものがある。将来の計算機にも、2つ
の並列命令だけを処理できるものと、より長い命令を処理できるものがあろう。
これらの相違のゆえに多くの問題を解決する必要があるが、これらの問題は、本
明細書で対象とし詳述する諸発明によって解決された。
本明細書に記載の諸発明は、元のプログラムを、命令の並列処理が可能な計算機
によって実行できるように実施された元のプログラム機能に適合する並列および
単一の命令として処理できるシステムによってこの目的を達成する。本発明者等
は、既存の高水準言語で記述された既存のプログラムまたは既存のアセンブリ言
語プログラムを、プリプロセッサによって処理する方法を提供した。このブリプ
ロセッサは、複合命令を命令として並列に実行できるように設計されたコンピュ
ータ内で、単一の複合命令として実行できる命令シーケンスを識別することがで
きる。
この命令プロセッサは、スカラー計算機の一連の基本命令に対する複合化復号を
実行し、一連の複合命令を生成し、複合命令の取出しと、取り出された複合命令
及び必要な単一命令の復号を実行し、複合命令を含むプログラムがシステム上で
実行される時にスカラー計算機の基本命令のスカラー実行を元のままに保つ複合
命令プログラムを提供する。このシステムは、複合命令の途中で分岐するための
機構も提供する。
複合命令の途中で分岐する場合、制御ビットが付加されているかどうか複合命令
を検査する。複合命令の途中に分岐が存在し、それがプログラムの内部関係に応
じて記録された結果に悪影響を及ぼす場合に、正しさに影響を及ぼす複合命令の
命令単位の実行を無効にする無効化機構が提供される。
本明細書に詳述する諸発明は、基本アーキテクチャが異なる属性を有する場合に
、実行されるプログラム内の命令に制御情報を付加する方法を教示する。本明細
書に記載の諸発明が対象とするのはこの目的である。本発明者等は、複合命令を
実行できるように設計されたコンピュータ内で単一の複合命令として実行できる
命令のシーケンスを識別できるソフトウェアによって、既存の高水準言語で記述
された既存プログラムまたは既存のアセンブリ言語プログラムを処理する方法を
提供した。
本明細書に開示する複合化を達成するための基本装置は、スケーラプル複合命令
セット計算機に関する前記の同時係属の諸特許出願に詳述されているが、システ
ム上で複合化を実施するに当っては困難な問題が存在する。「好ましい実施例の
詳細な説明」の項で好ましい基本システムを詳述した後に、システム・ハードウ
ェアと複合化ファシリティを相互に接続して、それを広範囲のシステムに適用で
きるようにする進歩について述べる。前記システムのうちの1つが、IBMS/
37oアーキテクチャであり、親基本命令プロセッサとして働き、その後、アー
キテクチャ内にオーバーラツプ式命令セットを有する後続プロセッサと共に使用
することができる。
したがって、このより新しい命令プロセッサは、本システムに関連して企図され
る特定の複合化規則セットを有することができる。複合化全般について本発明者
等が対象とした問題は、入ってくる命令とデータを、複合化ファシリティによっ
て検査される連続するバイト・ストリームとして処理する方法に関するものであ
る。複合化ファシリティは、命令プロセッサ上で実行される複合命令セット・プ
ログラムを生成する。
遭遇する可能性のあるある種の問題を解決するために、本発明者等は、異なる部
分的な参照点情報を有し、異なる属性を有するアーキテクチャ、及びテキストと
データを処理するアーキテクチャを扱うための、本明細書で詳細に説明する装置
を備えた、本明細書で詳述する新しいシステム・ハードウェアを作成した。
この「発明の概要」の項では、下記の「好ましい実施例の詳細な説明」の項で説
明する新システムを作成する際に発見し、処理した相互関係の種類を説明する。
本発明者等の研究は、現在異なるアーキテクチャを使用している諸システムのた
めの解決策をもたらした。
このようなシステムの1つは、複合化すべきバイト列がその命令ストリング内に
データ・バイトを含まないことが公知であり、最初の命令の命令コードなど、参
照点の位置が公知のシステムである。この種のシステムは、現在では通常、RI
SCアーキテクチャ計算機であるが、他の特定のケースも存在し得る。この状況
は、元のプログラムのコンパイルに特定のコンパイラを使用した結果生じること
がある。さらにテキストの短い部分で有用な仮定として使用される場合、ここで
説明する技術はこの問題を解決する。
この問題に対する本発明者等の解決策は、この技法とシステムを利用した結果、
命令とデータの両方が元のテキスト・バイト・ストリーム内にあるが、それらが
既知の境界にあるケースも解決されるので、最善のケースの解決策となった。
したがって、本発明者等は、特定のアーキテクチャに対して複合化できる命令の
クラスが提供されるアーキテクチャ的複合化規則を有するシステムを提供した。
適用可能な複合化規則を基本命令シーケンスの命令のバイト・ストリームに適用
し、基本命令シーケンスのバイト・ストリームを命令コードを含むかどうか検査
し、複合化規則を適用しながらそのストリームを走査する。この複合化動作の間
、命令長コードの検査の後に複合化ファシリティの命令複合化ユニットが各命令
を識別し、1組の複合化された命令の先頭の複合命令を示す複合命令用のタグ・
ビット情報を生成し、複合化ファシリティが複合化を継続する際に、その出力が
、複合命令の複合シーケンスを複合プログラムとして供給する。命令プロセッサ
がこれを使って、従来の計算機ではスカラー命令として実行されたはずの命令で
ある複合命令部の単位を並列に実行できるようにし、それと同時に、データと命
令の混在に関連する問題、古典的手段による未知の境界、及び現代のより洗練さ
れたアーキテクチャが遭遇する他の問題を処理する。
いくつかの状況では、命令内に存在するハーフワードは、そのハーフワードが最
初の複合命令ではないことを示すように初期設定される。前記の複合化規則に従
って、複合化に最適の対を選ぶ。複合化を排除する状況が発生することが発見さ
れると、本システムは、複合化できない命令を含み、複合化すべき命令を選択す
る技法を使用し、検査されるある種の命令にタグを付けて、特定の命令が最初の
命令でないことを示し、検査中の1組の命令中の最初の命令が最初の複合命令と
して適切でない場合には、その命令が最初の命令ではないことを示すマークをそ
の命令に付ける。本システムは、検査し終えたばかりのグループ内の次の逐次命
令を含む後続の命令グループの検査を続行する。
命令が非命令またはデータと混在している時は、本システムは各ハーフワードに
、命令の第1バイトを含むとのマークまたは複合命令の第1バイトを含まないと
のマークのいずれかを付け、複合化処理の際に、複合命令の第1バイトを含まな
いとマークを付けた命令を飛び越す。
「詳細な説明」の項を読めば、参照点のない複合命令が存在する場合、すなわち
複合化がより複雑になる場合に、本システムで何が行われるかが理解されよう。
検査中の基本命令セット・ストリーム内に複合化すべき命令部の境界があり、そ
れぞれが複数の可能な命令シーケンスを有する場合には、各シーケンスごとに可
能な境界が決定され、複数の可能なシーケンスの論理和をとる新しいハードウェ
アによって、複数のシーケンスが単一のビット・シーケンスに縮がされる。
通常、S/370型システムには、潜在的な境界を有する3つの可能な命令のシ
ーケンスがあり、そのそれぞれが異なる複合化ビットのシーケンスを生じる。し
たがって、新システムは、論理和をとると単一のシーケンスを生じる3ビツト・
シーケンスを処理して、現命令が命令プロセッサによって複合化されるか否かを
判定することができる。
本発明者等は、バイト境界上で収れんするかどうか複数の可能なシーケンスを実
験的に試し、収れんが検出された時は、1つのシーケンスだけが残るまで、収れ
んするシーケンスを1つずつ除去してシーケンスの数を減らすシステムを提供し
た。
認識する必要のある第2のより高水準の問題は、非RISCアーキテクチャを有
する計算機では、1つのバイト・ストリーム内に命令とデータを混在させること
が可能である。その結果、複合命令バイト・ストリームは、追加情報なしで正し
く複合化されることができる。これは、命令とデータが混在するバイト・ストリ
ームが存在し、命令がどこから始まるかが不明である場合に発生する最悪の場合
であると本発明者等は考える。本発明者等の提供するハードウェアは、この種の
システムに対応できる。従来のより一般的な例と同様に、収れんテストを行い、
収れんが発生し、あるシーケンスが収れんによって除去される場合には、収れん
によって除去されたシーケンスの代わりに新しいシーケンスが開始される。この
場合も、シーケンスはあらゆるハーフワードで開始する。
1組の命令を検査し、複合化ビットを決定し、シーケンス内のあるバイト数だけ
後からこの検査プロセスを繰り返して、各シーケンスからの複合化ビットの論理
和をとって合成複合ビット命令を形成する。
さらに、IBM S/370型のアーキテクチャなどより進んだ命令プロセッサ
・アーキテクチャは、可変長命令を処理することができる。このアーキテクチャ
を有するより進んだ計算機用のプログラムを形成するための命令複合化は、困難
であり、最高次の最悪の場合の代表と見なすことができる。
というのは、バイトの列が命令だけを含んでいることがわかっているとしても、
その列のある命令の先頭をどうすれば識別できるかが明らかではないからである
。このような状況は、現在のS/370命令プロセツサの特徴である。というの
は、このような命令プロセッサは、命令取出しプロセス中にキャッシュ内の命令
を識別する手段を有するからである。
本明細書に記載の好ましいシステムでは、S/370と同様にキャッシュを有す
る複合化ファシリティが設けられ、好ましいシステムは、キャッシュを有し、キ
ャッシュ・ミスまたはある行のまだ複合化されていない部分への分岐が可能なの
で、複数の命令が、命令の複合化なしに前記命令プログラムを介して中央処理装
置に供給される。
上記のS/370システム・アーキテクチャ複合化ファシリティは、バイト・ス
トリームを検査し、データに遭遇すると、そのデータが命令からなるかのように
データを複合化する。しかし、S/370アーキテクチヤの計算機は、データを
実行することができない命令プロセッサを有するので、したがって、複合命令プ
ログラムを正しく実行する。検査される命令に特定の命令が最初の命令でないこ
とを示すタグをつけ、検査中の1組の命令中の最初の命令が最初の複合命令とし
て適切でない場合には、その命令が最初の命令ではないことを示すマークをその
命令に付ける。本明細書で詳述するシステムは、検査を終えたばかりのグループ
内の次の逐次命令を含む後続の命令群を検査する。この複合化ファシリティは、
複合化プロセスで、複合命令の第1バイトを含まないとのマークを付けた命令を
スキップする。
また本発明者等が発見したもう1つの技法は、複合化がより複雑になる、参照点
のない命令を複合化する方法である。
S/370型プロセツサは参照点を有することができるが、可変長命令を予想し
ているプログラムが可能であり、したがって、最初の命令の参照点が存在しない
可能性がある。検査中の基本命令セット・ストリーム内のどこに命令境界がある
かが不明で、命令の可能なシーケンスが複数存在する場合には、各シーケンスが
複合化ファシリティ・ハードウェアで処理されて、その可能な境界が決定され、
得られた複数のシーケンスが、複数の可能なシーケンスの論理和をとることによ
って、単一のビット・シーケンスに縮小される。S/370型命令プロセツサの
場合、システムが3ビツト・シーケンスをもたらし、これらの論理和をとって単
一のシーケンスを生成して、現命令が本明細書で詳述する命令プロセッサによっ
て複合化されるか否かを判定することが好ましい。
複合化ファシリティ用の基本命令処理装置を使用して、メモリから命令群を取り
出すプロセスで、検索の直後、検査の前に、それらの命令が命令であってデータ
ではないとのマークを付ける。さらに、複合化ファシリティは、複合グループ命
令を構成する命令の数を示す命令の複合ビットを提供する。
これを用いると、2個だけでなく、より進んだ計算機用の複数の複合命令を処理
することができる。各複合命令内で、その複合命令に対して提供されるタグ情報
が、その複合命令のメンバ命令単位に適用可能なビット情報を有し、その特定の
メンバ単位が後続の命令と複合化されるか否かを示す。
本システムに組み込まれることができる追加の他の実施例もある。システム命令
プロセッサの中央演算処理装置は、実行中に複合命令の第1命令部のタグ情報以
外のすべてのタグ情報を無視することができる。検査の間に、実行されないバイ
トに未検査のマークを付けることができ、その場合、そのコードが後で命令プロ
セッサによって実行できるのであれば、それらを再検査する。検査中、実行され
ないバイトを検査済み状態に残しておき、それらが実行中に無視されるか実行さ
れない場合であっても、位置の正しさを示すことができる。
検査中、後で他のシーケンスを検査できるように、バイト群を一部検査済みシー
ケンスの状態に残しておくこともできる。
上記及びその他の改良は、以下の詳細な説明に詳述されている。本発明及びその
利点と特徴とをよりよく理解するため、詳細な背景について、関連特許を参照さ
れたい。さらに、特に本明細書に記載の改良については、以下の説明及び添付の
図面を参照されたい。
[図面の簡単な説明]
第1図は、同時実行のためスカラー命令のシーケンス内の命令を複合化すること
のできる高水準計算機システムの概略図である。
第2図は、複合命令ストリーム内で選択的にグループ化された命令群の並列実行
を示す単一プロセッサの動作タイミング図である。
第3図は、動作環境の好ましい他の実施例として示されたインメモリ処理を有す
るスケーラプル複合命令セット計算機の階層的メモリ機構のブロック図である、
。
第4A図は、複合命令を実行するように設計されたコンピュータ内で単一の複合
命令として実行されることができる命令のシーケンスを識別するために既存プロ
グラムを処理する手段を提供する高水準処理の概略図である。
第4B図は、本発明の好ましい動作環境と、その環境内での本発明の位置を示す
図である。
第5図は、元のプログラム・コードから実際の実行までにプログラムが取る経路
を示す図である。
第6図は、アセンブリ言語プログラムからの複合命令セット・プログラムの生成
を示す流れ図である。
第7図は、複合命令セットの実行を示す流れ図である。
第8図は、複合命令実行エンジンを示す図である。
第9図は、複合命令プログラムを示す図である。
第10図は、分岐先が複合命令の先頭または途中にある状況を示す図である。
第11図は、複合化が最善の場合の例を示す図である。
第12図は、参照点を有する例を示す図である。
第13図は、好ましい実施例による複合化が最悪の場合の例を示す図である。
第14図は、最悪の場合の複合化装置の論理的実施様態とハードウェア実施様態
を示す図である。
第15図は、逆方向複合化を示す図である。
第16図は、グループ当たり4個の命令を有する最悪の場合の複合化の例を示す
図である。
[好ましい実施例の詳細な説明コ
第1図を参照すると、本発明に従って構成されたデジタル・データ処理システム
月のデジタル・コンピュータ・システムの一部分の代表的な実施例が示されてい
る。このコンピュータ・システムは、2個以上の命令を並列に実行することがで
きる。このシステムは、並列または同時実行のために命令を複合化する能力を備
える。これに関連して、「複合化」とは、スカラー命令のシーケンス内の複数の
命令をグループ化することを指し、グループ化のサイズは、1からNまでスケー
ラプルである。例えば、このスカラー命令のシーケンスは、IBM システム/
37o製品で使用されるものなど既存の1組のスカラー命令から引き出すことが
できる。
最高N個の命令からなるグループの同時実行をサポートするため、このコンピュ
ータ・システムは、同時に並列に動作し、それぞれが独自に1つまたは複数のタ
イプの機械レベル命令を処理できる複数の命令実行ユニットを含む。
一般に第1図に示すように、命令複合化ユニット2oは、2進スカラー命令のス
トリーム21を受け取り、隣接するスカラー命令の一部を選択的にグループ化し
て、コード化された複合命令を形成する。したがって、その結果得られる複合化
された命令ストリーム22は、単独で実行されるスカラー命令、または並列に実
行されるスカラー命令のグループによって形成される複合命令を供給する。スカ
ラー命令が命令処理ユニット24に提示される時、それが複数の実行ユニットの
うちの適当な1つに経路指定されて、逐次実行される。複合命令が命令処理ユニ
ット24に提示される時は、そのスカラー構成要素が、それぞれ適当な実行ユニ
ットに経路指定されて、同時に並列に実行される。典型的な機能ユニットには、
演算論理装置(ALU)26及び28、浮動小数点演算装置(FP)30.及び
メモリ・アドレス生成装置(AU)32が含まれるが、それだけに限られるもの
ではない。
複合化は、サイクルごとに複数の命令を処理できるすべてのコンピュータ・アー
キテクチャで、命令の並列の発行及び実行を容易にするように意図されているこ
とを理解されたい。
第2図を参照すると、複合化は、各機能ユニットがスカラー命令(S)または複
合命令(C3)を実行する単一プロセッサ環境で実施することができる。図に示
すように、スカラー命令と複合化スカラー命令のシーケンスを含む命令ストリー
ム33は、各複合命令に関連する制御タグ(T)を有する。
したがって、第1のスカラー命令34は、サイクル1で機能ユニットAによって
単独に実行でき、タグT3で識別される3つ組の複合命令36は、サイクル2で
機能ユニットA、 C及びDによってその3つの複合化スカラー命令が並列に実
行でき、タグT2で識別されるもう1つの複合命令38は、サイクル3で機能ユ
ニットA及び已によってその2つの複合化スカラー命令が並列に実行でき、第2
のスカラー命令40は、サイクル4で機能ユニットCによって単独に実行でき、
大きなグループの複合命令42は、サイクル5で機能ユニットAないしDによっ
てその4つの複合化スカラー命令が並列に実行でき、第3のスカラー命令44は
、サイクル6で機能ユニットAによって単独に実行できる。
複合命令を処理するために適合させることのできるコンピュータ・アーキテクチ
ャの1例は、IBM システム/370命令レベル・アーキテクチャである。こ
のアーキテクチャでは、各マシン・サイクル内で複数のスカラー命令を発行して
、実行させることができる。これに関連して、マシン・サイクルとは、1スカラ
ー命令を実行するのに必要な単一のパイプライン段を指す。命令ストリームが複
合化される時、隣接するスカラー命令は、同時または並列に実行するために選択
的にグループ化される。
一般に、命令複合化ファシリティは、並列に実行できる命令クラスを探す。互換
性のある命令のシーケンスが見つかった時、複合命令が生成される。
複合化技法は、他の特許出願で検討されている。複合化を一般的に理解するには
、1990年5月4日出願の米国特許出願第071519384号(IBMドケ
ット番号EN9−90−020)及び1990年5月4日出願の発明の名称力r
GENERAL PURPO5E COMPOUNDING TECHNIQU
E FORINSTRUCTION−LEVEL PARALLEL PROC
ESSOR5J テア6米’5n許出願第071519382号(IBMドケッ
ト番号EN9−90−019)を参照されたい。1対ずつの複合化用の命令複合
化ユニットの例が、1990年6月26日出願の米国特許出願第0715434
64号(I BMドケット番号EN9−90−018)に示されている。
一般に、命令発行前のある時点で複合化を行って、何回も実行される1つまたは
複数の命令に対してこの処理が1回で済むようにすることが有用である。コンパ
イルの後、命令発行の前にハードウェアでの複合化を実施するために、コンピュ
ータ・システムの実記憶域内に命令複合化機能を置くことが提案されている。こ
のような複合化は、本明細書に記載の他の代替案よりも対する好ましい代替案と
考えられ、これを「インメモリ複合化」と称する。これは、1990年5月10
日出願の米国特許出願第071522219号(I BMドケット番号EN9−
90−012) と、1990年6月26日出願の米国特許出願第071543
464号(IBMドケット番号EN9−90−018)及びその第3図に示され
ている。また、背景として本明細書に記載するメモリ管理は、1990年6月2
6日出願の発明の名称がrMEMORYMANAGEMENT FOR5CAL
ABLE COMPOUND lN5TRUCTION SETMACHINE
S WITHIN MEMORY COMPOUNDINGJである米国特許出
願第071543458号(I BMドケット番号EN9−90−042)にも
記載されている。
インメモリ複合化は、第3図に全体的に示されている。第3図で、階層的メモリ
機構は、補助記憶装置及びコンピュータの実メモリとインターフェースする入出
力アダプタ40を含んでいる。この機構の実メモリには、中速で比較的大容量の
主記憶装置46と、高速で比較的小容量の命令キャッシュ48が含まれる。(本
明細書では、主記憶装置とキャッシュを総称して、「実メモリ」、「実記憶域」
または単に「メモリ」と称する。)命令のストリームは、補助記憶装置から入出
力アダプタ40によって取り込まれ、主記憶装置46内の「ページ」と称するブ
ロックに記憶される。「行」と称する隣接したIMの命令が、主記憶装置46か
ら命令キャッシュ48に移動され、そこで命令取出し/発行ユニット5oによる
処理のため高速参照に使用できる。キャッシュから取り出された命令は、発行さ
れ、52で復号された後に、実行のため機能ユニット56.581401.60
に渡される。
実行中、プログラム内にある命令に対する参照が行われる時、その命令のアドレ
スがキャッシュ管理ユニット62に供給される。キャッシュ管理ユニット62は
、このアドレスを使って、アドレスされた命令を含む1つまたは複数の命令を命
令キャッシュ48から取り出してユニット50内の待ち行列に入れる。アドレス
された命令がキャッシュ内にある場合は、キャッシュ「ヒツト」が発生する。そ
うでない場合は、キャッシュ「ミス」が発生する。キャッシュ・ミスの場合、キ
ャッシュ管理ユニット62は、要求された命令の行アドレスを記憶管理機能群6
4に送る。この記憶管理機能群64には、たとえば、キャッシュ管理ユニット6
2の供給する行アドレスを使って、アドレスされた行を含むページが主記憶装置
46内にあるか否かを判定する実記憶管理機能を含めることができる。そのペー
ジが実メモリ内にある場合、実記憶管理機能は、その行アドレスを使って、キャ
ッシュ・ミスになっている命令を含む行を、主記憶装置46から命令キャッシュ
48に転送する。要求された命令を含む行が主記憶装置内にない場合は、オペレ
ーティング・システムが別の記憶管理機能を活動化し、必要な行を含むページの
識別をそれに供給する。上記の記憶管理機能は、その行を含むページを識別する
アドレスを入出力アダプタ4oに送る。入出力アダプタ40は、補助記憶装置か
らそのページを取り込み、それを主記憶装置46に供給する。取り出されたペー
ジ用の場所をあけるために、記憶管理機能は、取り出されたページで置換すべき
主記憶装置46内のページを選択する。SCl5Mアーキテクチャでは、置換さ
れたページは、タグ情報を複合化せずに入出力アダプタを介して補助記憶装置に
返すことが企図されている。このようにして、ある命令シーケンスの実行中に即
座に必要になる可能性の最も高い命令群が、命令キャッシュ48内の機能ユニッ
トに隣接する位置にくる。この階層的メモリ機構は、必要とされるがキャッシュ
内にない命令を高速に検索する能力を提供する。
SCl5Mアーキテクチャの環境では、インメモリ命令複合化は、命令複合化ユ
ニット70によって提供されることができる。この命令複合化ユニット70は、
機能的に入出力アダプタ4oと主記憶装置46間にあり、従って、スカラー命令
ストリームの複合化を、主記憶装置46への入力または主記憶装置46内で行う
ことができる。この記憶位置では、ページ取出し進行中に命令は複合化されるこ
とができる。
代りに、命令複合化ユニットは、主記憶装置46と命令キャッシュ48間の位置
72を占有することができ、複合命令は、命令キャッシュ48から取り出される
際に、行ごとに形成される。これは、好ましい実施例と見なせる。
分岐を伴う複合命令の実行
分岐の存在する複合命令を、他の命令と同様に命令を静的に解析した後に実行す
ることを含めて、処理後に複合命令を実行する必要が存在する。本発明者等は、
前もって命令を復号し、プログラム内の実行すべき命令に制御情報を付加する。
さらに、複合命令プログラムを形成するためのプログラム複合化規則を提供して
この目的を達成すると同時に、現代のコンパイラに供給されるものに匹敵するア
ーキテクチャ情報が供給される。
解析中に、ある分岐クラスのすべてのメンバを他の命令と同様に静的に解析して
、計算機で実行中に作動することが保証される命令の複合実行を実現する。分岐
を処理する好ましい方法については、後で第9図及び第10図を参照しながら説
明する。その環境を理解するには、複合化の好ましい方法について考察すること
が適切である。
どんな複合化の技法を使用するかは、設計上の選択の問題である。しかし、例示
のため、隣接するスカラー命令から形成される複合命令を生成する1つの技法に
ついて説明する。
これは、前記の米国特許出願第071543458号に示されたものである。例
えば、命令は、テキストの6バイト(3ハーフワード)、4バイト(2ハーフワ
ード)または2バイト(1ハーフワード)を占めることができる。この例では、
可変長命令を含む命令セットを複合化するための規則が、長さ2バイトまたは4
バイトのすべての命令が、互いに複合化可能であると規定している。すなわち、
2バイト命令は、この特定の例では、別の2バイト命令または別の4バイト命令
と並列に実行することができ、4バイト命令は、別の2バイト命令または別の4
バイト命令と並列に実行することができる。この規則はさらに、6バイト長の命
令は、すべて複合化できないと規定している。したがって、6バイト命令は、単
独でしか実行できない。もちろん、複合化は、この規則の例に制限されるもので
はなく、所定のコンピュータ・アーキテクチャ用の特定の構成内に存在する命令
を並列に実行するための判定基準を規定する複数の規則を含むことができる。
この例で使用する命令セットは、システム/370アーキテクチヤから採ったも
のである。各命令の命令コードを検査することによって、その命令コード内の命
令長コード(ILC)から、各命令の長さを決定することができる。さらに、命
令のタイプは、他の命令コード・ビット内に規定されている。命令のタイプと長
さが決定されると、特定の命令が並列実行のために他の1つまたは複数の命令と
複合化されるか、それとも単独で実行されるかを示すためにその特定の命令用の
タグ・ビットを含む複合化タグが生成される。
この例(限定されていない)では、2つの隣接する命令が複合化できる場合、メ
モリ内で生成されるタグ・ビットは、複合化された最初の命令では”1″、複合
化された第2の命令では″Ouとなる。しかし、第1および第2の命令が複合化
できない場合は、最初の命令のタグ・ビットが1707′になり、その後に第2
および第3の命令が、複合化できるかどうか検討される。選択された複合化技法
に従って命令バイト・ストリームが処理され、様々なスカラー命令に対する複合
化ビットがコード化された後、命令のより大きなグループを見るためのより大き
なウィンドウを使用し、複合化に最善のN個の命令の組合せを取り上げることに
よって、並列実行を達成するためにより最適な結果を得ることができる。
しかしながら、本明細書で解決される問題の例として上記の例を取り上げると、
一般に、第4図に全体的に示したシステム及び処理を提供する必要があると考え
られる。第5図に関して述べる既存の高水準言語で記述された既存のプログラム
、または第6図に関して説明されたように処理すべき既存のアセンブリ言語プロ
グラムを処理する必要がある。そこで本発明者等は、複合命令を実行できるよう
に設計されたコンピュータ内で単一の複合命令として実行できる命令のシーケン
スを識別する能力を有するシステムを提供した。
第4図に移ると、システムとハードウェア・アーキテクチャの両方に反映する1
組の規則に基づいて複合命令プログラムを作成する複合化ファシリティに、プロ
グラムが入力として供給されるシーケンスが図示されている。好ましい複合化フ
ァシリティは、1991年1月15日出願の米国特許出願第07/6420’l
1号(I BMドケット番号EN9−90−049)に示されている。これらの
規則を、以下では複合化規則と称する。複合化ファシリティによって作成された
プログラムは、その後、第8図に全体的に示す複合命令実行エンジンによって直
接実行されることができる。
しかしながら、第5図は、あるプログラムがたどる高水準ソース・コードから実
際の実行までの典型的な経路を示しており、第4図で示唆される可能な機構の1
つと見なすことができる。アセンブリ水準プログラムに関する他の例については
、第6図に関して説明する。
第5図を参照すると、コンピュータ・システム内には、ソフトウェアとハードウ
ェアの両方で、複合化が発生できる位置が多数あり得ることが理解されよう。そ
のそれぞれに独自の長所と短所がある。第5図に示すように、プログラムがソー
ス・コードから実際の実行までに典型的にたどる様々な段階がある。コンパイル
段階の間に、ソース・プログラムが機械コードに変換され、ディスク46に記憶
される。実行段階の間に、そのプログラムがディスク46から読み出され、特定
のコンピュータ・システム構成50の主記憶装置48にロードされる。コンピュ
ータ・システム構成50内では、適当な命令処理ユニット52.54.56によ
って命令が実行される。複合化は、この経路上のどこでも行うことができる。
一般に、複合化を行う位置が命令処理ユニットまたはCPUに近ければ近いほど
、時間の制約が厳しくなる。複合化の位置がCPUから遠ければ、それだけ多く
の命令を大きなサイズの命令ストリーム・ウィンドウ内で検査して、複合化のた
めの最善のグループ化を決定し、実行性能を向上させることができる。しかしな
がら、このような早期の複合化は、必要な開発労力と費用が増す点で、システム
設計の残りの部分に及ぼす影響が大きくなる傾向がある。
第6図の流れ図は、システムとハードウェア・アーキテクチャの両方に反映する
1組のカストマイズされた複合化規則58に従ってアセンブリ言語プログラムか
ら複合命令セット・プログラムの生成を示す図である。このアセンブリ言語プロ
グラムは、複合命令プログラムを作成するソフトウェア複複合化ファシリティ5
9への入力として供給される。所定の長さを有する連続した命令ブロックが、ソ
フトウェア複合化ファシリティ59によって解析される。複合化が考えられてい
る命令群を含むバイト・ストリーム内の各ブロック60.62.64の長さは、
複合化ファシリティの複雑さに応じて変わる。
第6図に示されるように、この特定の複合化ファシリティは、各ブロック内の”
m ”個の固定長命令について2元複合化を考慮するように設計されている。
第1ステツプは、第1および第2の命令が複合化可能な対をなすか否かを検討し
、次に第2および第3の命令が複合化可能な対をなすか否かを検討し、次に第3
および第4の命令が複合化可能な対をなすか否かを検討し、そのブロックの終り
までこれを繰り返すことである。様々な可能な複合化可能対01〜C5が識別さ
れた後、複合化ファシリティは、複合化された命令の好ましいシーケンスを選択
し、フラグまたは識別子ビットを使って、複合命令の最適シーケンスを識別する
ことができる。
最適シーケンスが存在しない場合は、複合化可能な隣接するスカラー命令のすべ
てを識別して、様々な複合命令の間に位置する目標への分岐で、遭遇する複合化
されたどの対をも活用できるようにすることができる(第14図参照)、複数の
複合化ユニットが利用できる場合、命令ストリーム内の複数の連続したブロック
を同時に複合化することができる。
もちろん、命令の先頭を示すための既知の参照点が既に存在する場合には、複合
命令を生成する目的で命令ストリームを前処理することも簡単である。本明細書
では、参照点とは、テキストのどのバイトが命令の第1バイトであるかの知識を
意味する。この知識は、命令境界の位置に関する情報を提供するマーキング・フ
ィールドまたは他の標識によって得ることができる。多くのコンピュータ・シス
テムでは、このような参照点は、コンパイル時にコンパイラによって、また命令
取出し時にCPUによってのみ明白に知られている。このような参照点は、特殊
な基準タグ付は方式を採用しない限り、コンパイル時から命令取出しまでの間は
知られていない。
第7図の流れ図は、ハードウェア・プリプロセッサ66またはソフトウェア・ブ
リプロセッサ67によって生成された複合命令セット・プログラムの実行を示す
図である。複合命令を有するバイト・ストリームは、複合命令(CI)キャッシ
ュ68に流れ込む。このキャッシュ68は、記憶バッファとして役立つ複合命令
に対する高速アクセスを実現するCI発行論理回路69が、CIキャッシュから
複合命令を取り出し、個々の複合化された命令を適当な機能ユニットに発行して
、並列に実行させる。
複合命令コンピュータ・システム内のALU群などの命令実行ユニット(CI
EU)71は、スカラー命令を単独で1回に1つ実行するか、または複合化され
たスカラー命令を他の複合化されたスカラー命令と並列に実行する能力を有する
ことを強調する必要がある。また、上記の並列実行は、コンピュータのアーキテ
クチャ及び特定のコンピュータ・システム構成に応じて、ALU、浮動小数点(
FP)ユニット73、記憶アドレス生成ユニット(AU)75などの異なるタイ
プの実行ユニット内で、または複数の同一タイプのユニット(FPI、FP2な
ど)内で行うことができる。
コンパイル後に複合化が行われる時は、コンパイラは、タグを用いて、どのバイ
トが命令の第1バイトを含み、どれがデータを含んでいるかを示すことができる
。この余分の情報は、正確な命令位置がわかるので、より効率的な複合化装置を
もたらす。もちろん、コンパイラは、複合化機構に命令境界を示す情報を提供す
るために、他の形で命令とデータを区別することになる。
典型的な本発明の2元複合化の実施例では、複合化情報が、テキストの2バイト
(命令とデータ)ごとに1ビツトとして、命令ストリームに付加される。一般に
、制御情報を含むタグは、複合化されたバイト・ストリーム内の各命令に、すな
わち複合化されないスカラー命令、ならびに対、3つ組、またはそれより大きな
複合化されたグループとして含まれる複合化された各スカラー命令に付加される
ことができる。本明細書では、識別子ビットとは、複合化されたグループを形成
する複合化されたスカラー命令を識別し、複合化された命令プログラム内に残っ
ており、取り出されると単独で実行される、複合化されていないスカラー命令か
らそれを区別するのに特に使用されるタグの部分を指す。
4バイトの命令がすべて4バイト境界上で整列されるシステムでは、テキストの
4バイトごとに1つのタグが関連づけられる。同様に、命令が任意に整列される
ことができる場合は、テキストのバイトごとにタグが必要である。
せいぜい2個の命令を複合化するケースは、複合命令を形成するためのスカラー
命令の最小のグループ化を提供する。
この場合、識別子ビットに対して下記の好ましいコード化手順が使用される。シ
ステム/37oのす、べての命令は、長さが2バイトまたは4バイトまたは6バ
イトのハーフワード(2バイト)境界上で整列されるので、各ハーフワードごと
に、識別子ビットを有するタグが1つ必要である。この小さなグループ化の例で
は、識別子ビット″1”は、検討中のバイトから始まる命令が次の命令と複合化
されることを示し、一方、11021は、検討中のバイトから始まる命令が複合
化されないことを示す。命令の第1バイトを含まないハーフワードに関連づけら
れた識別子ビットは、無視される。複合化された対の第2の命令の第1バイトに
対する識別子ビットも、無視される。その結果、識別子ビットに対するこのコー
ド化手順は、最も単純な場合には、複合化された命令を識別するために、実行中
のCPUが1ビツトの情報しか必要としないことを意味する。
3個以上のスカラー命令をグループ化して複合命令を形成できる場合、追加の識
別子ビットが必要になる。実際に複合化された特定のスカラー命令数を示すのに
必要な識別子ビットの最小数は、グループ化して複合命令を形成することのでき
るスカラー命令の最大数の2を底とする対数(を最も近い整数に切り上げた値)
である。例えば、最大値が2であれば、各複合命令ごとに1つの識別子ビットが
必要である。最大値が3または4であれば、各複合命令ごとに2つの識別子ビッ
トが必要である。最大値が5.6.7または8であれば、各複合命令ごとに3つ
の識別子ビットが必要である。このコード化方式を、下記の表1に示す。
表1
識別子 複合化され
ビット コード化された意味 る命令の数oOこの命令は次の命令と複合化さ
なしれない
01 この命令は次の1つの命令と複 2合化される
1o この命令は次の2つの命令と複 3合化される
11 この命令は次の3つの命令と複 4合化される
したがって、各ハーフワードにタグが必要であるが、cPUは、実行される命令
ストリームの最初の命令のタグ以外のすべてのタグを無視することが理解されよ
う。言いかえれば1バイトを調べて、その識別子ビットを検査することによって
、それが複合命令であるか否かを判定する。それが複合命令の先頭でない場合、
その識別子ビットは0である。そのバイトが2つのスカラー命令を含む複合命令
の先頭である場合第1の命令の識別子ビットはII 1”であり、第2の命令の
識別子ビットは”071である。そのバイトが3つのスカラー命令を含む複合命
令の先頭である場合、第1の命令の識別子ビットは2″′であり、第2の命令の
識別子ビットは71111であり、第3の命令の識別子ビットはflollであ
る。言いかえれば、各ハーフワードの識別子ビットは、この特定のバイトが複合
命令の先頭であるか否かを識別すると同時に、その複合化されたグループを構成
する命令数を示す。
この複合命令をコード化する方法は、3つの命令を複合化して3つ組のグループ
を形成する場合、第2および第3の命令も複合化されて対のグループを形成する
ことを前提としている。言いかえると、3つ組のグループの第2の命令への分岐
が発生する場合、第2の命令の識別子ビットl1l)lは、その3つ組のグルー
プの第1の命令が実行されなかった場合でも、第2および第3の命令が複合化さ
れた対として並列に実行されることを示している。
本発明では、特定のコンピュータ・システム構成について1回だけ命令ストリー
ムを複合化すればよ(、その後、複合化された命令が取り出されると、それに関
連する識別子ビットも取り出されることは、当業者にとって明白であろう。これ
によって、いわゆるスーパースカラー計算機で実行のために同一のまたは異なる
命令が取り出されるごとに、並列実行のために最後の瞬間に特定のスカラー命令
の非効率な判定と選択を繰り返し行うことが不要になる。
命令ストリームの複合化のあらゆる長所にもかかわらず、特定のコンピュータ・
アーキテクチャの下でこれを行うことは、バイト・ストリングにおける命令境界
を決定する技法が開発されない限り、困難になる。このような決定は、可変長命
令が許容される時は複雑になり、データと命令が混在できる時にはさらに複雑に
なる。もちろん、実行時には、適切な実行を可能にするために命令境界がわかっ
ていなければならない。しかし、複合化は、命令実行よりも十分に前の時点で行
うことが好ましいので、命令がどこから始まるかの知識もどのバイトがデータで
あるかの知識もない状態で命令を複合化する技法が必要である。この技法は、命
令が通常は固定長でありデータと混在しないRISC(縮小命令セット・コンピ
ュータ)アーキテクチャを含めて、広く受け入れられているタイプのすべてのア
ーキテクチャに適用できることが必要である。
本発明の技法には、複合化中の特定の命令ストリームに関して既に入手可能であ
る情報に応じて、多数のバリエーションがある。典型的な関連情報の様々な組合
せを、下記の表2表2
ケース 命令長 データの混在 参照点A 固定 なし あり
B 可変 なし あり
C固定または可変 あり あり
D 固定 なし なし
E 可変 なし なし
F 固定 あり なし
G 可変 あり なし
いくつかの場合、固定長命令と可変長命令が、異なるケースとして識別されてい
ることに留意されたい。これは、参照点がわかっていない場合、可変長命令が存
在すると不確定性が増し、それによって多くの可能な複合化ビットが生成される
ためである。言いかえると、本発明の技法によって提供される可能な命令シーケ
ンスの生成時には、どの固定長命令でも、その途中のバイトに対する複合化識別
子タグは存在しない。また、好ましいコード化方式の下で必要とされる識別子タ
グの総数は、より少ない(すなわち、4バイトの固定長を有する命令では、識別
子タグは4バイトごとに1つ)。それにもかかわらず、本発明のユニークな技法
は、固定長命令でも可変長命令でも同様に良好に機能する。というのは、ある命
令の起点がわかる(または仮定される)と、何らかの方法でその命令内のどこか
でその長さを必ず見つけることができるからである。システム/370命令では
、その長さが命令コード内でコード化され、他のシステムでは、多分、長さがオ
ペランド内でコード化される。
命令が固定長でデータが混在せず、命令コードの参照点位置がわかっているケー
スAでは、その特定のコンピュータ構成に適用できる規則に従って複合化を進め
ることができる。
固定長なので、スカラー命令のシーケンスは容易に決定され。
シーケンス内の各命令を、次の命令と共に並列に実行するための可能な候補と見
なすことができる。制御タグ内の第1のコード化された値は、その命令が次の命
令と複合化できないことを示し、制御タグ内の第2のコード化された値は、その
命令が並列実行のために次の命令と複合化できることを示す。
同様に、命令が可変長でデータが混在せず、命令の参照点が(したがって、命令
長コードの参照点も)わかっているケースBでは、通常の形で複合化を進めるこ
とができる。命令コードは、たとえば次のような命令シーケンスを示す。最初の
命令は長さ6バイトであり、第2および第3の命令はそれぞれ2バイト、第4の
命令は4バイト、第5の命令は2バイト、第6の命令は6バイト、第7および第
8の命令はそれぞれ2バイトである。
説明の都合上、たとえば第6図に示すように、図示の命令コードの例は、可変長
でも固定長でもよいものとする。
この説明では、スカラー命令の隣接する対から形成される複合命令の生成、なら
びにスカラー命令のより大きなグループから形成される複合命令の生成について
、複合化の技法を示す。図面に示した実施例のための規則の例は、さらに、長さ
2バイトまたは4バイトのすべての命令が、互いに複合化できる(すなわち、こ
の特定のコンピュータ構成では、2バイト命令が別の2バイト命令または別の4
バイト命令と並列に実行できる)と規定するものと定義されている。さらに、こ
の規則では、システム/37o環境で長さ6バイトのすべての命令が、全(複合
化できない(すなわち、この特定のコンピュータ構成では、6バイト命令は単独
でしか実行できない)と規定される。もちろん、本発明は、この複合化規則の例
だけに限定されるものではなく、所定のコンピュータ・アーキテクチャ用の特定
の構成内の既存の命令を並列に実行するための判定基準を規定するいかなる1組
の複合化規則にも適用可能である。
本発明のこれらの複合化技法の例で使用する命令セットは、システム/370か
ら採ったものである。以下で詳細に説明するように、各命令に対する命令コード
を検査することによって、各命令のタイプと長さを決定することができ、その後
、その特定の命令に対する識別子ビットを含む制御タグが生成される。もちろん
、本発明は、特定のアーキテクチャまたは命令セットだけに限定されるものでは
なく、前述の複合化規則は例として示したものにすぎない。
次に、これらの実施例における複合命令のための好ましいコード化について説明
する。隣接する2つの命令が複合化できる場合、記憶するために生成されるその
識別子ビットは、第1の複合化された命令では++1++であり、その後、第2
および第3の命令が、複合化できるかどうか検討される。本技法に従って命令バ
イト・ストリームが前処理され、様々なスカラー命令に対する識別子ビットがコ
ード化された後、より大きな命令のグループを表示するためにより大きなウィン
ドウを使用し、複合化に最適な隣接する対の組合せを取り上げることによって、
並列実行を実現するためのより最適な結果を得ることができる。
本発明に関連して、第4A図に関して全般的に述べる諸タスクの実行は、199
0年5月4日出願の米国特許出願第071519382号に全般的に記載されて
いる種類の複合命令実行エンジンの助けを得て、他の環境で実施される。
一般に、好ましい動作環境は、第4B図に示した動作環境で代表される。複合化
ファシリティは、ソフトウェア・エンティティでもよいが、1991年1月16
日出願の米国特許出願第07/642011号に詳細に記載された命令複合化ユ
ニットによって複合化ファシリティを実施することもできる。第4B図を参照す
ると、本発明に従って構成された、キャッシュ管理ユニット144を有するデジ
タル・コンピュータ・システムまたはデジタル・データ処理システムの一部分の
代表的な実施例が示されている。このコンピュータ・システムは、2つまたはそ
れ以上の命令を並列に処理する能力を有する。このコンピュータ・システムは、
処理すべきである命令およびデータを、スカラー計算機用の1連の基本命令の形
で記憶するための第1の記憶機構を含んでいる。この記憶機構は、高水準記憶装
置136として識別される。この記憶装置(「主記憶装置」でもある)は、大容
量で低速の記憶機構であり、たとえば、大容量システム記憶装置、または包括的
な階層的記憶システムの下位部分とすることができる。
第4B図のコンピュータ・システムはまた、高水準記憶装置136から命令を受
け取り、かつこれらの命令に、これらの命令のうちのどれが互いに並列に実行で
きるかを示すタグの形の複合情報を関連づける命令複合化ファシリティまたは機
構も含んでいる。適当な命令複合化ユニットは、命令複合化ユニット137によ
って表される。この命令複合化ユニット137は、入って(る命令を解析して、
そのどれが並列に処理できるかを判定する。さらに、命令複合化ユニット137
は、これらの解析された命令に対して、どの命令が互いに並列に処理でき、どの
命令が互いに並列に処理できず単独で処理しなければならないかを示す、タグ・
ビットを生成する。
第4B図のシステムはさらに、命令複合化ユニット137に結合され、解析され
た命令とそれらに関連するタグ・フィールドを受け取り、かつこれらの記憶され
た複合化された命令が取り出せるようにそれらのタグ・フィールドを記憶するた
めの第2の記憶機構を含んでいる。この第2または第3以降の記憶機構は、複合
命令キャッシュ138で代表される。
複合命令キャッシュ138は、低速の記憶機構136にアクセスする頻度を低下
させてコンピュータ・システムの性能を改良するのに一般的に使用される種類の
小容量で、高速の記憶機構である。
第4図のシステムはさらに、互いに並列に動作する複数の命令処理機能ユニット
を含んでいる。これらの命令処理機能ユニット139.140,141などは、
互いに並列に同時に動作し、それぞれが、それ自体で1つまたは複数のタイプの
機械レベル命令を処理する能力を有する。使用される機能ユニットの例には、汎
用演算論理装置(ALU)、アドレス生成型ALU、データ依存性縮小式(da
ta dependencycollapsing) A L U (1990
年4月4日出願の同時継続の米国特許出願第071504910号に開示されて
いる好ましいタイプのもの)、分岐命令処理ユニット、データ・シフタ・ユニッ
ト、浮動小数点処理ユニットなどがある。所定のコンピュータ・システムは、可
能な機能ユニットのいくつかを含むことができる。例えば、所定のコンピュータ
・システムは、汎用ALUを2個以上含むことができる。また、所定のコンピュ
ータ・システムは、これら異なるタイプの機能ユニットのすべてを含む必要はな
い。どんな構成をとるかは、検討中の特定のコンピュータ・システムの性質によ
って決まる。
第4B図のコンピュータ・システムはまた、複合命令キャッシュ138に結合さ
れ、そこに記憶された隣接する命令が並列に処理できることを命令タグ・ビット
指示する時、命令処理機能ユニット139〜141のうちの異なるユニットにそ
れらの命令を供給する命令取出し/発行機構も含んでいる。
この機構はまた、並列実行が不可能であり、命令を単独で処理しなければならな
いことをタグ・ビットが指示する時は、単一の命令を個々の機能ユニットに供給
する。この機構は、命令取出し/発行ユニット142で代表される。命令取出し
/発行ユニット142は、複合命令キャッシュ138から命令を取り出し、タグ
・ビットと命令コード・フィールドを検査すると同時に復号機能を実行し、この
ような検査に基づいて、検討中の命令を機能ユニット139〜141のうちの適
当なユニットに送る。
3013Mアーキテクチャの環境では、命令複合化ユニット137によってイン
キャッシュ命令複合化を行い、その結果、各キャッシュ行の複合化が、複合命令
キャッシュ138の入力部で行えるようになる。すなわち、各キャッシュ行が主
記憶装置136から取り出されてキャッシュ138に入れられる時、その行は、
ユニット137内で複合化できるかどうか解析され、複合化情報タグ・ビットと
共に渡されて、複合命令キャッシュ138に記憶される。
キャッシュ化の前に、行は、命令複合化ユニット137で複合化される。このユ
ニット137はタグ・ビット・セットを生成する。これらのタグ・ビットは、そ
れらと関連する命令に直接付加できる。また、それらの命令自体と並列にタグ・
ビットを供給することもできる。いずれの場合でも、これらのビットは、その命
令の行と共にキャッシュ138に記憶するために供給される。必要に応じて、キ
ャッシュ138の複合化された命令は、命令取出し/発行ユニット142によっ
て、そのタグ・ビット情報と共に取り出される。命令取出し/発行ユニット14
2は、命令を受け取ると、それらのタグ・ビットを検査して、復号検査によって
それらが並列に処理できるか否かを判定し、命令コード・フィールドを検査して
、使用可能な機能ユニットのうちのどれがそれらの処理に最も適しているかを決
定する。2つ以上の命令が並列処理に適しているとタグ・ビットが示す場合には
、それらの命令は、その命令コード・フィールドのコード化に応じて、機能ユニ
ットのうちの適当なユニットに送られる。その後、これらの命令は、それぞれの
機能ユニットによって互いに並列に処理される。
並列処理に適さない命令に遭遇した時には、命令コードによって決定される適当
な機能ユニットにその命令を送り、その後、この命令は、選択された機能ユニッ
ト内で単独に処理される。
複数の命令が常に並列に処理される最も完全な場合には、このコンピュータ・シ
ステムの命令実行率が、1回に1命令が実行される場合のN倍になるはずである
。ただし、Nは、並列に処理されるグループの命令数である。
第8図は、複合命令の途中で分岐を実行できる複合命令実行エンジンを示す図で
ある。複合命令は、記憶装置からCIキャッシュ(複合命令に対する高速アクセ
スを実現する記憶バッファ)へ流れる。C1行論理回路は、CIキャッシュから
複合命令を取り出し、それらを適当な機能ユニットに発行する。機能ユニットの
組は、
・EU −実行ユニット、ALtJ
・AU −記憶アドレス生成ユニット
・FP −浮動小数点演算ユニット、その他などの従来型の機能ユニットからな
るが、各ユニットが複合命令ならびに単一のスカラー命令を実行できる点で、従
来のものとは異なる。したがって、各ユニットの名前の前にLLC1′″を付け
て、それが複合命令を実行できることを示す。すなわち、第8図に示すように、
J/ E U ppの代りに”CIEU″′となる。
いくつかの命令を単一の複合命令に結合すると、コンピュータの命令処理ユニッ
トは、これらの命令を効果的に復号し並列に処理することができるようになるの
で、性能が改善される。命令を並列に復号し実行するという概念は、当技術分野
で周知であり、本明細書の導、入部で論じたが、本発明で使用する通常の技法は
、命令ストリームが命令復号ハードウェアに入力される時点でその命令ストリー
ムを動的に復号して、その命令が並列に実行できるか否かを判定するというもの
である。この判定は、各命令セット・アーキテクチャ、ならびにその基礎となる
任意の所定の命令プロセッサでのそのアーキテクチャの実施態様に関して一義的
である。動的復号(導入部で説明されているような動的スケジューリング)は、
しばしばアーキテクチャの複雑さによって制限される。アーキテクチャが複雑な
ために、並列に実行できる命令の組合せを判定する論理が複雑になり、したがっ
て、命令プロセッサのサイクル・タイムが増加する可能性があるためである。本
発明の教示する命令プロセッサの復号は、前記命令プロセッサで複合命令フォー
マット・テキストの実行を可能にする制御ビットを付加された命令フォーマット
・テキストを伴う一連の複合命令を生成することによって、スカラー計算機の一
連の基本命令に対する複合命令を提供する。この複合命令フォーマット・テキス
トを取り出して復号すると、命令プロセッサの演算論理装置が複合命令及び単一
命令として実行されることができる複合命令及び単一命令を決定することができ
る。
もともと記憶域内にあったスカラー計算機の基本命令のスカラー実行は、そのま
まに保たれる。これによって、既存のプログラムの正しい実行の必要条件として
、複合命令の実行の結果は、それらの命令を個別に実行した場合に得られる結果
と同じであるが、複合化された命令ストリームが並列な性質のため、一般に高速
で実行できることが保証される。
複合化ファシリティは、ソフトウェア・エンティティでもよい。このソフトウェ
アの設計は、その詳細が所定の命令セット・アーキテクチャ及びその基礎となる
実施態様に独特であり、かつこのようなプログラムの設計が、特定の計算機アー
キテクチャに基づいて命令のスケジューリング及びその他の最適化を行う現代の
コンパイラに概念上多少類似しているので、本明細書では説明しない。すなわち
、入力プログラムと、システム(命令セット)及びハードウェア・アーキテクチ
ャ(すなわち、実施態様の構造的様態)が与えられると、出力プログラムが作成
される。現代のコンパイラの場合、出力は、最適化された命令のシーケンスであ
る。本発明の場合、出力は、必要な制御ビットを伴う一連の複合命令、すなわち
複合命令プログラムである。前述のように、複合命令プログラムを形成するため
の基礎は、現代のコンパイラに供給される情報に匹敵するアーキテクチャ情報を
供給する、複合化規則セットである。
複合命令プログラムを第9図に示す。図では、複合化ファシリティは、n個のコ
ード・ブロックまたは複合化可能な単位を、様々な長さのn個の複合命令に組み
立てる。各複合命令中には、可変長の元の命令がある。各複合命令中には、第9
図に示すように、各命令に制御フィールドTが付加された元の命令が入力プログ
ラムにある。
第9図のビットTは、特定の意味を示すように規定されている。1つの実施例で
は、以下に示すように、toビットが命令の先頭をマークする。どの場合でも、
0は確定されていないことを意味する。どの場合でも、複合命令が確実に取り出
されることが好ましい。したがって、取り出すために選択されるビット数は、そ
の並列な複合化された命令を実行しているターゲット計算機の最大命令長の命令
に含まれ、それと共に実行できる最大のビット数である。したがって、この取出
しシステムは、最大長の取出しを行う。
1つの好ましい実施例では、第6図および第9図にT′″で示される複合命令の
開始を示すタグを利用する。しかしながら、好ましい実施例では、Tは、複合命
令の一部と見なされる次の命令の数を表すものと理解される。したがって、Oが
単一の命令を表すように、1は、その複合命令中にもう1つ命令があることを示
し、2は2つの命令、3はもう3つの命令が、現命令と複合化されることを示す
。
したがって、装置内で、各複合命令は、その命令に付加された複合命令に関する
タグ情報を表すタグIt T I+を有し、この情報のある値は、その命令を別
の複合命令または単一命令の一部ではなく、単一の命令と見なすべきことを示し
、一方、このタグ情報の別の値は、付加された命令単位が複合命令の一部である
ことを示す。タグ情報の値は、複合命令の長さと、実行すべき複合命令内の命令
単位数に関連する。
本発明の好ましい実施例では、取り出された′複合命令は、後続の命令数をカウ
ント値として示すタグ情報を有し、その同じ複合命令の後続の命令は、その複合
命令のメンバ単位に付加された副カウント・タグによって供給される副カウント
情報を有する。以下の好ましい実施例の説明は、タグ値を使って命令が複合命令
の一部であることを示すことに関するものであり、タグの値1は両方の実施例に
共通するが、2個より長い命令では、この値が複合命令の命令単位数に関連する
ことに留意されたい。
前述したように、制御フィールドは、複合命令の実行に関連する情報を含み、ま
た、特定の実施態様に有効と見なされるだけの情報を含むことができる。たとえ
ば、制御フィールドは、8ビツト・フィールドとして次のように規定される。
t□ tl t2 t3 ℃4 t、 t6 ℃7ビツト 機能
し。 1ならば、この命令は、複合命令の先頭にマークを付ける。
tl 1ならば、2つの複合命令を並列に実行する。
℃2 1ならば、この複合命令は、複数の実行サイクルを有する。
t、 lならば、パイプライン化を中断する。
t4 命令が分岐でこのビットが1ならば、分岐を取ると予測される。
t5 1ならば、この命令は、前の複合命令からの記憶インターロックを有する
。
t6 1ならば、動的命令発行をイネーブルする。
t7 1ならば、この命令はALUを使用する。
℃0ビットは、上記のすべてのビットのうちでこれだけが不可欠なので、さらに
検討に値する。このビットの目的は、複合命令の先頭の命令を識別することであ
る。論理1が、2つの命令を並列に実行することを意味し、Oが、単一命令の実
行を意味するものと規定すると、ハードウェアは、複合命令を構成する命令数を
容易に検出することができる。
一般に、複合化ファシリティは、並列に実行される命令のクラスを捜し、ハード
ウェアによって処理されることができない複合命令のメンバ間のインターロック
が存在しないことを確認する。互換性のある命令のシーケンスが見つかった時、
複合命令が生成される。例えば、システム/370アーキテクチヤは、下記のク
ラスに分割できる。
1、RR−フォーマット ロード、論理演算、算術演算、比較
・L CR−−Load Complement (補数ロード)・L P R
−−Load Po5itive (正数ロード)−L N R−−Load
Negative (負数ロード)−LR−−LoadRegister(レジ
スタ・ロード)・LTR−−Load and Te5t (ロードおよびテス
ト)・NR−−AND(論理積)
・0R−−OR(論理和)
・XR−−ExclusiveOR(排他的論理和)・AR−−Add(加算)
・SR−−5ubtract (減算)・ALR−−AddLogical(論
理加算)・S L R−−5ubtract Logical (論理減算)・
CL R−−Compare Logical (論理比較)・CR−−Com
pare(比較)
2、R8−フォーマット シフト(記憶アクセスなし)・S RL −−5hi
ft Right Logical (論理右シフト)−S L L −−5h
ift Left Logical (論理左シフト)・S RA −−5hi
ft Right Arithmetic(算術右シフト)
・S LA −−5hift Left Arithmetic(算術左シフト
)
・S RD L −−5hift Right Logical (論理右シフ
ト)・S L D L −−5hift Left Logical (論理左
シフト)・S RD A −−5hift Right Arithmetic
(算術右シフト)
・S LDA −−5hift LeftΔrithmetic(算術左シフト
)
3、分岐 −一 カウント及びインデックスによる分岐・ B CT −−Br
anch on Count(カウント分岐、RXフォーマット)
IBCTR−−Branch on Count(カウント分岐、RRフォーマ
ット)
・B XH−−Branch on Index High(高位インデックス
分岐、RSフォーマット)・B X L E −−Branch on Ind
ex Low(低位インデックス分岐、RSフォーマット)4、分岐 −一 条
件分岐
・B C−−Branch on Condition(条件分岐、RXフォー
マット)
−B CR−−Branch on Condition(条件分岐、RRフォ
ーマット)
5、分岐−分岐およびリンク
・B A L −−Branch and Link(分岐およびリンク、RX
フォーマット)・B A L R−−Branch and Link(分岐お
よびリンク、RRフォーマット)φB A S −−Branch and 5
ave(分岐およびセーブ、RXフォーマット)・B A S R−−Bran
ch and 5ave(分岐およびセーブ、RRフォーマット)6、記憶
命S TCM −−5tore Characters Under Mask
(マスク下文字記憶、0−4バイト記憶、RSフォーマット)
−MVI −−MoveImmediate(即値移動、1バイト、
SIフォーマット)
・ST −−3tore (記憶、4バイト)・S T C−−3tore C
haracter(文字記憶、1バイト)
一3TH−−5toreHalf
(ハーフ記憶、2バイト)
7、ロード
・L H−−Load Half (ハーフ ・ロード、2バイト)−L−−L
oad(ロード、4バイト)8、 LA −−LoadAddress (アド
レス−0−ド)9、、RXフォーマット 算術演算、論理演算、挿入、比較・A
−−Adcl(加算)
・AH−−Add Half (半加算)・A L −−Add Logica
l (論理加算)・N −−AND(論理積)
・〇 −−OR(論理和)
−S−−5ubtract (減算)
・S H−−5ubtract Half (半減界)・S L −−5ubt
ract Logical (論理減算)・X −−Exclusive OR
(排他的論理和)−I C−−In5ert Character (文字挿入
)−I CM −−In5ert Character Under Mask
(マスク下の文字挿入、
0−4バイト取出し)
−C−−Compare (比較)
・CH−−Compare’ Half (半比較)・CL −−Compar
e Logical (論理比較)・CL I −−Compare Logi
cal Immediate(即値論理比較)
6CLM −−Compare Logical Character Und
er Mask(マスク下文字論理比較)
10、 TM −−Te5t Under Mask (マスク下のテスト)シ
ステム/370命令の残りの命令は、本発明では、実行のために複合化されると
は見なされない。これによって、これらの命令が、将来の複合命令実行エンジン
上で複合化されることが排除されるわけではない。複合命令の実行に必要なハー
ドウェア構造は、水平マイクロコードによって容易に制御することができ、残り
の命令に含まれる並列性を利用して性能を向上できることに留意されたい。
プログラムでの最も一般的なシーケンスの1つは、TMまたはRXフォーマット
の比較クラスの命令を実行することである。その結果は、その直後に続く条件分
岐型命令の実行を制御するのに使用される。COMPARE命令およびBRAN
CH命令を並列に実行することによって性能が改善でき、これは、高性能命令プ
ロセッサでは時として動的に行われる。典型的なアーキテクチャでは、COMP
AREクラスの命令の様々なメンバのすべてとBRANCHクラスの命令のメン
バのすべてを命令復号処理中にすばやく識別することには、多少の困難が伴う。
この困難は、本発明によって回避される。というのは、諸クラスの全メンバの解
析が前もって行われ、動作することが保証された複合命令が生成されるためであ
る。
ハードウェアの設計に応じて、多くのクラスの命令を並列に実行することができ
る。上述のCOMPAREとBRANCHの複合命令に加えて、LOAD命令と
RRフォーマット命令、BRANCH命令とLOAD ADDRESS命令など
、他の複合命令が考えられる。
プロセッサが必要な実行ユニットを有する場合には、複合命令に、例えばRRフ
ォーマットの算術演算など、同一クラスの複数の命令を含めることもできる。
実現可能などの命令プロセッサにも、複合命令を構成できる命令数に上限が存在
する。複合命令を生成することによって実行可能命令を生成しつつある複合化フ
ァシリティに対してこの上限mを指定して、複合化ファシリティの生成する複合
命令が、基礎となるハードウェアの最大能力を超えないようにしなければならな
い。厳密にいえば、mは、ハードウェア実施態様の結果であることに留意された
い。これは、ソフトウェアによって所定のコード・シーケンスで複合化するため
に解析される命令の範囲を制限するものではない。一般に、解析の範囲が広いほ
ど、複合化ファシリティによってより有利な複合化が認識されるので、それだけ
大きな並列性が得られる。例として、以下のシーケンスを検討する。
Xl;何らかの複合化可能な命令
X2;何らかの複合化可能な命令
LOAD R1,(X) ;R1ヲメモ’)位t X カラ0−)’tルADD
R3,R1;R3= R3+ RISUB R1,R2、R1=R1−R2C
OMP R1,R3;R1とR3とを比較するX3 ;何らかの複合化可能な命
令
X4;何らかの複合化可能な命令
ハードウェアによって課される複合化の上限がm=2である場合、複合化ファシ
リティの有効範囲に応じて、この命令のシーケンスを複合化する方法がいくつか
存在する。この有効範囲が4に等しい場合、複合化ソフトウェアは、<−XI>
<X2 LOAD> <ADD SUB> <COMP X3> <X4−>
トイう対を作成して、LOADとADDの間及びSUBとCOMPの間の障害を
完全に取り除(。一方、m=2のスーパースカラー計算機は、その命令発行論理
回路内で、厳密に先入れ先出し方式で命令を対にすルノテ、<Xi X2> <
LOAD ADD> <SUB COMP> <X3 X4> トイう対を作成
するはずであり、インターロックを発生させる命令の不利益を完全にこうむる。
残念ながらADDにはLOADの結果が必要なので、このLOADとADDを並
列に実行することはできない。同様に、SUBとCOMPを並列に実行すること
もできない。したがって、性能向上が得られない。
通常は、複合命令の途中への分岐が発生しないという保証はない。これは、第1
0図に示すように、ハードウェアによって容易に処理される。第10図では、複
合化タグの表現でT=1を使用して、値が1の次のタグまで延びるが、それを含
まない複合命令の先頭をマークする。このハードウェアは、命令を取り出す時、
必ず正確に分岐目標アドレスから始まる最大長の複合命令を記憶装置から取り出
し、次いで、命令テキストで、次の複合命令の先頭を示すし。=1の命令に遭遇
する位置にいたるまで、1o=0のすべての命令を複合命令として実行する。分
岐目標のt0ビットが1である場合、それは複合命令の先頭であり、直接実行で
きる。第1o図はこの状況Tフィールドを、t0ビットだけに縮小しである。ま
た、複合命令の最大長は3である。C11の第2の命令は、分岐命令であり、こ
の例では、2つの可能な目標経路a及びbを有する。
a経路はCIjの途中に分岐するが、b経路はCIjの先頭に分岐する。分岐が
経路aに従う場合、ハードウェアは、最大長の複合命令すなわち3個の命令を取
り出し、その後、■1□とXi3を複合命令として実行する。取出しの残りの部
分すなわち1に、は、次の複合命令の先頭として認識され、CIにの残りが次の
実行のために取り出される間、保存される。
この分岐命令が、b経路を取ってCI、の先頭に分岐する場合、ハードウェアは
、やはり最大長の複合命令を取り出し、この場合は、完全な複合命令、すなわち
Ijo、■1□及びlj3をもたらす。第10図に示すように、その複合命令の
実行は、直接に進行する。
異なる属性を有するアーキテクチャおよび逆方向複合化を有命令を複合化する一
般的な方法は、命令レベルの並列プロセッサを有する計算機に適用できるが、こ
れらのアーキテクチャは、RISCなど様々なタイプのものであり得、S/37
0型の基本プロセッサ、及び本明細書で詳述するシステム属性を有するその将来
の世代の拡張版を使用することが好ましい。複合化は、前述の説明で詳述したよ
うに、隣接する命令を同時実行のためにグループ化する処理であり、前記で参照
した関連特許出願に記載された変形を含む。N、P、ジュッピ(Jouppi)
の論文”The Nonuniform Distribution ofIn
struction−Level andMachine Paralleli
sm and ItsEffect on Performance”、 IE
EE Transactions on Computers。
Vol、 38. No、 12. 1989年12月、 pp、1645−1
658に記載された種類のスーパースカラー計算機と比較して、複合命令実施態
様は、次の理由からより高速度をもたらすことができる。
1、並列実行のための命令のグループ化が、ハードウェアの利用に関して最適化
される。
2.テキストが前処理され、たとえばメモリ・インターロックなど、一部のイン
ターロックが除去できる。
3、それぞれが単一サイクルで複数の逐次命令を実行できる機能ユニットを複数
用いると、第1図〜第10図に関連して説明し、米国特許出願第0715193
84号に記載されているように、並列の命令実行とレジスタ依存性の縮tJzと
による性能向上が得られる。
複合化の処理で、実行のためCPUに提示される命令ストリームにグループ化情
報が追加される。命令の元の内容は破壊されず、目標計算機上で直接にまたは記
憶された形で複合命令プログラムとして実行されるプログラムとして出力される
。解決する必要のある問題は、異なる属性を有する様々な可能なアーキテクチャ
でどのようにすれば複合化を達成できるかである。
可変長の命令を有するアーキテクチャでは、一般に、バイト・ストリングを検査
することによって命令境界を決定することができない。データと命令が混在でき
、命令ストリームが修正できるアーキテクチャでは、複合化はさらに複雑になる
。適切に実行できるためには、実行時に命令境界がわかっていなければならない
。複合化は、命令実行の前に行うことができるので、命令がどこで開始するかと
、どのバイトがデータであるかの知識なしで、命令を複合化するシステムが必要
である。本発明は、このような装置を記述する。例えば、r IBM Ente
rprise Systems Architecture/370 Pr1n
ciplesof 0peration」と題するIBM刊行物、資料番号5A
22−7200−]:詳述され6 S/370など(7)CISCアーキテクチ
ャに、これらの問題が存在する。IBMによって最初に開発され、その後、バー
クレイその他で様々な商業的実施態様、たとえばIBMの製品RISC6000
に関して開発が統けられているRISCアーキテクチャでは、たとえばり、 A
、バダーリン(Patterson)の論文r ReducedInstruc
tion Set Computers」、 Communications
of the ACM。
Vol、 28. No、 1. 1985年1月、 pp、8−21に記載さ
れているように、命令は通常、固定長であり、データは命令と混在しない。した
がって、複合化は簡単である。ここに提案する装置を実例で説明するためにS/
370に適用できる例を示したが、ここに提案する装置は、他のアーキテクチャ
にも適用可能である。さらに、本明細書の例は、異なる部分的な基準に対する解
決策を記述したものであり、後で逆方向複合化装置についても述べる。
S/370命令セツト・アーキテクチャには、複合化処理を複雑にする3つの難
点がある。まず、命令ストリームへの書込みによって、前の複合化が無効になる
ことがある。簡単な解決策は、その命令(または命令バッファ、命令キャッシュ
の行など)を無効にすることである。その後、無効になったテキストに対して複
合化処理を繰り返すか、あるいは複合化せずにそのテキストを実行することがで
きる。命令ストリームへの書込みによって、通常はデータ一貫性の維持により性
能が低下するので、複合化を伴わない実行による追加の性能低下も許容できよう
。1990年5月10日出願の発明の名称がrcompounding Pre
processor for CacheJの米国特許出願第07152221
9号に詳述されているように、キャッシュを用いてこれを多少最適化することが
可能である。S/37oの第2の難点は、命令とデータが混在できることである
。本発明では、この問題を記述し、追加の情報なしでバイト・ストリングを正し
く複合化できる解決策を提案する。
S/370の第3の難点は、命令が可変長であることである。
可能な長さが3種(2,4、または6バイト)だけ存在し、それが命令の命令コ
ードの最初の2ビツトに示される。固定長ではないので、そのストリングが命令
だけを含むことがわかっている場合でも、バイト・ストリングの命令の先頭を識
別することはできない。本明細書に記載の装置は、この問題に対する解決策も提
供する。
以下では、上記の諸問題に対する一般的な解決策を詳述する。説明を簡単にする
ため、1対の命令を複合化するという特別な場合について詳しく述べる。3個以
上の命令の複合化は、このシステムで使用する技法及びアルゴリズムの拡張であ
り、それについても論じる。コンピュータ・システムには、命令複合化ユニット
(ICU)と称する、複合化の発生する可能な位置が複数存在する。これらの問
題の議論は、例えば米国特許出願筒07 / 543464号に出ている。ただ
し、本明細書に記載のシステム技法及びアルゴリズムは、他のアーキテクチャに
も適用可能である。実際、これらは、アーキテクチャがすべての命令に対して単
一の長さを有するか、あるいは命令とデータが混在されることができない時、例
えばRISCでは簡単になる。
複合命令の表現
本明細書では、複合化情報が、テキスト(命令とデータ)の2バイトごとに1ビ
ツトとして、命令ストリームに追加される。一般に、第1図〜第10図に関して
詳述し、上記で参照した米国特許出願第071519384号でも例として記載
されているように、制御情報を含むタグを各命令に追加することができる。本明
細書では、「複合化ビット」とは、特に複合命令のグループを識別するのに使用
されるタグの部分を指す。せいぜい2個の命令を複合化する場合では、下記の手
順を使用して、複合化が行われる位置を示す。すべての命令はハーフワード(2
バイト)境界上で整列され、長さは2.4または6バイトのいずれかであるので
、各ハーフワードごとに1つの複合化タグが必要である。複合か否かを示すには
、1ビツトのタグで十分である。特に、1は、検討中のバイトから始まる命令が
、次の命令と複合化されることを示す、0は、複合化が行われないことを示す。
命令の第1バイトを含まないハーフワードに関連する複合化ビットは、無視され
る。
複合対の第2の命令のバイトの複合化ビットも無視される。
その結果、複合化された命令を正しく実行するために実行中CPUが必要とする
情報は、1ビツトだけである。システムが、3個以上の命令を複合化できる時は
、複合化情報を表すための異なる方法が必要である。これについては、3個以上
の命令に対する拡張について説明する部分で述べる。
命令対の処理方法
どの情報が利用可能かに応じて、基本的複合化に対するいくつかの変形が存在し
得る。テキストの既知の内容と、命令境界(参照点)がわかっているか否かによ
って、ケースは区別される。下記のケースを検討する。
1、テキストは命令だけを含み、参照点は既知である。
2、テキストは既知の境界で命令とデータを含む。
3、テキストは命令だけを含むが、参照点は未知である。
4、テキストは未知の参照点を有する命令とデータを含む。
5、テキストは部分参照点情報を有する命令とデータを含む。
ケース1および2
この最も簡単なケースでは、命令ストリームにデータ・バイトがないことがわか
っており、最初の命令の命令コードの位置が既知である時に、バイト・ストリン
グが複合化される。
これは、特定のコンパイラの結果として、またはテキストの短い部分での有用な
仮定として、現代のアーキテクチャに当てはまることがある。各バイトが所属す
る命令は、すべての場合に、命令コードの長さビットを使用し、バイト・ストリ
ングによって順次前進することによって、正確に決定できる。
複合規則を検査する間にある命令から次の命令に移動することによって、命令を
複合化することができる。
命令を対として並列に実行することができる計算機用の2元命令複合化を仮定す
ると、複合化規則を適用して、命令を対として検査することができる。第11図
は、特定の長さが既知である場合の、最善の場合の複合化の例を示す図である。
好ましい実施例は、この場合、ならびに中間の場合と最悪の場合を処理する。こ
のケースでは、命令複合化ユニット(ICU)は、各命令の命令コードに含まれ
る命令長コード(工LC)を検査することによって、各命令を識別することがで
きる。1が複合対の最初を示すタグ・ビットが生成される。
命令の先頭を含まないハーフワードは、0に初期設定され、修正されない。説明
を簡単にするため、この例では、2バイトと4バイトの命令が、目標アーキテク
チャのために複合化可能であり、6バイト命令は複合化不能であると仮定する。
これは、目標計算機および適用可能な複合化規則に応じて変わる。どの命令が複
合化できるかを判定するのに使用される特定の規則は、命令セットのアーキテク
チャおよびCPUの設計によって変わるので、本明細書ではそれについては詳述
しない。2つの命令が複合化できる場合、タグは、それぞれ1とOになる。その
後、次の2つの命令が検討される。しかしながら、この2つの命令が複合化でき
ない場合は、第1の命令のタグが0になる。その後、第2の命令及びその次の命
令が複合化できるかどうか検討され、システムは、入力データのバイト・ストリ
ームの検査中、この事象に順次前進する。
これよりわずかに複雑な状況は、命令が非命令と混在しているが、各ハーフワー
ドが、命令の第1バイトを含むあるいは含まないものとして(多分タグを用いて
)識別される場合である。この場合も、各バイトが識別でき、複合化は簡単であ
る。この識別子ビットは、コンパイラによって作成できる。
これに関連して米国特許出願第071543464号に詳述されているような問
題がここで調査されることができる。ここでの相違は、非命令の複合化は試みら
れないことである。
非命令バイトをスキップするのに余分の時間を要する場合、システムは、検査中
のバイト・ストリームに含まれる非命令バイト量に比例した量だけ低速になる。
しかし、この出力によって実施する複合化は誤ってはおらず、命令プロセッサは
、より低速であるとはいえ、このコードを実行する。
ケース3:参照点なしの命令の複合化
あるバイト・ストリームは命令バイトだけを含むことがわかっているが、最初の
命令の始点が未知である時は、複合化はより複雑になる。命令の最大長は6であ
るが、2バイトの境界上で整列されているので、このストリームの最初の命令の
開始点は3つあり得る。このストリームには命令だけが存在することがわかって
いるので、このシステム用の簡単なスチップ・アルゴリズムは、バイト0が命令
の先頭であるかのように、そこから開始し、複合化を進めるものである。次に、
バイト2から開始し、ストリームを複合化する。最後に、バイト4から開始し、
ストリームを複合化する。
第12図は、3つの異なる命令のシーケンスが考慮される例である。各シーケン
スごとに、命令境界が決定され、最善の場合の説明と同様に、複合化ビットが割
り当てられる。可能な命令境界の3つのシーケンス(第12図(b))のそれぞ
れが、異なる複合化ビットのシーケンスを生ずる。この好ましいシステムが、テ
キストの2バイトごとに3ビツトを必要とするアルゴリズムを使用すると仮定す
ると、この3つのシーケンスを単一のビット・シーケンスに縮小して、ビット数
を最善の場合以下になるようにすることが望ましい。必要な情報は、所定のバイ
トに対して複合命令を構成する命令の最大数だけであり、2個の命令からなる複
合命令では最大値が論理和に等しいことがわかっているので、3つのビット・シ
ーケンスの論理和をとって、単一のシーケンスを生成することができる(第12
図(C))。
第12図(C)の合成複合化ビットは、第12図(b)の3つのシーケンスと等
価である。第12図(C)のrccベクトル」を考慮されたい。逐次実行または
分岐のため、バイト○から始まるバイト群が実行するかどうか検討される場合、
プロセッサは、その命令とタグ・ビットを取り出す。複合化ビットが0なので、
この命令は、単一命令として実行される。
その後、バイト6から始まる次の命令が、実行するかどうか検討される。CPt
Jが、その命令とタグを取り出す。複合化ビットが1なので、第2の命令も取り
出される(その複合ビットは無視される。)。この2つの命令が、同時に実行さ
れる。この命令のシーケンスは、第12図(b)に示した最初のシーケンスであ
ることに留意されたい。実際の命令境界がどこにあるかは未知なので、バイトO
ではなくバイト2が命令の始点である可能性がある。バイト2が実行するかどう
か検討される時、その命令とタグが取り出される。複合ビットが1なので、もう
1つの命令が取り出され、この2つが1対として実行される。この実行は、第1
2図(b)の第2のシーケンスに対応する。同様に、最初の命令がバイト4から
始まる場合には、第3のシーケンスが実行される。複合ビットを用いると、3つ
の可能なシーケンスのどれについても、複合化を伴う実行が可能になる。バイト
8への分岐が発生する場合には、バイト8が命令の先頭でなければならない。そ
うでない場合は、そのプログラムにエラーがある。バイト8に関連するタグが使
用され、逐次実行を進めることができる。
これによって、分岐目標によってアドレスされる時、複数の有効な複合化ビット
・シーケンスが選択される可能性が出てくる。この能力を最善の場合に追加する
のも有用であり、最も完全な実施例はこのアルゴリズムを含む。
可能な命令の3つの異なるシーケンスは、1つの独自のシーケンスに収れんする
ことがあり得る。収れん速度は、特定のビットに依存し、収れんが起こらない場
合もある。まず、同一の命令境界への収れんは、複合化の位相がずれた状態で発
生し得る。これは、最初の複合化不能な命令またはそれ以前に訂正される。第1
2図では、3つのシーケンスが、バイト8にある命令境界上で収れんしているこ
とに留意されたい。
また、追加のシーケンスが6.8.10などから開始される場合にも、すぐに収
れんするであろうことに留意されたい。
シーケンス2と3は、バイト4にある命令境界上で収れんしているが、バイト1
6までの複合化では位相がずれる。すなわち、この2つのシーケンスは、同一の
命令のシーケンスからの異なる命令の対を考慮したものである。バイト16は、
複合化不能な命令の始点である(複合化アルゴリズムが同時に3個以上の命令を
見る場合、同じ最適の組合せを選択することによって、それらのシーケンスがよ
り早く収れんすることもあり得る)。この収れんのため、この場合の複合化アル
ゴリズムは、3つの異なるシーケンスを試行するフロント・エンドを有すること
ができる。収れんが検出されると、シーケンス数は2に縮小され、その後1に縮
小される。この時点から、最善の場合のアルゴリズムが使用できる。単一の複合
化装置が使用される場合、収れん検出は、長さが既知のアーキテクチャについて
説明した最善の場合よりも、活動シーケンス数に等しい倍率だけ遅くなる。収れ
んが速い場合、複合化速度が漸近的に等しくなる。収れん速度がデータに依存す
ると仮定すると、様々な収れん速度の確率に関する統計をとることかできる。し
かしながら、例えば、長さシーケンス(4,4,41,、、)などの収れんが発
生する前のバイト数に上限を設けることはできない。
ケース4:最悪の場合の複合化
発生し得る最悪の場合は、命令とデータが混在するバイト・ストリームを有し、
命令の始まる位置がわかっていない場合である。これは、参照点がわかっていな
い時にメモリ内または命令キャッシュ内のページを複合化する際に起こり得る。
このケースを扱う方法は、命令のみの場合と同様に始まるが、1つの重要な相違
点がある。収れんが起こる場合、収れんによって取り除かれた各シーケンスの代
わりに、新しいシーケンスを開始しなければならない。これは、収れんがデータ
を含むバイト中で発生し得、その結果、3つのシーケンスがすべて、「命令」境
界の悪いシーケンスに収れんし得るからである。これは、実命令のシーケンスに
出会った時、収れんが起こるのと同じ形で訂正できる(テキストが命令だけを含
む場合は、第12図のように、最終的にすべての複合化シーケンスが同一の命令
境界に収れんする)。その結果得られるシーケンスは、それでも正しく実行され
るが、検出される複合対が減り、CPU性能が低下することになる。1990年
5月4日出願の米国特許出願第071519382号を参照さことである。最善
の場合と同様、2つの命令を検査し、複合ビットを決定する。2バイト後ろから
これを繰り返す。第13図分例は第12図の例を前提としており、第12図と第
13図の複合シーケンスの結果、同じプログラムを実行する。
最悪の場合は、最善の場合または命令のみの場合よりも多数の可能な命令シーケ
ンスの検査を行う手段を有するシステムによって対処される。この場合、タグを
生成するのに、より多くの時間またはより多くの複合化装置が必要となる。テキ
ストの使用に関する既知の情報がないので、最大の複合化を達成するのにこれが
必要である。複合化の程度を下げてもよければ、上記のシーケンスに修正を加え
ることができる。
ケース5:混合のケース
実際の実施態様では、ICUの位置、命令セットのアーキテクチャ、およびコン
パイラに応じて、上記のうちの任意のケースがICUに与えられる。興味深いケ
ースは、キャッシュで命令を複合化するものである。これは、複合ビットをキャ
ッシュに保持されることができることが好ましいからである。典型的な命令キャ
ッシュ・ヒツト率は、他の著者等も認めているように高イ(A、 J、 スミx
(Smith)の論文”CacheMemories、”Computing
5urveys、 Vol、 14. No、 3.1982年9月、 pp
、473を参照されたい)。したがって、既に複合化されていて、再び複合化す
る必要のない命令の再使用が多いことが理解されよう。これは、命令が実行され
た後に複合化情報が失われる、命令バッファまたはスタックでの複合化とは対照
的である。ただし、場合によっては後者を使用してもよい。S/370では、命
令とデータが混在できるが、キャッシュは、どのバイトが命令であるか多少の知
識を有する。これは、CPtJが命令取出し時にこれらのバイトを指定できるか
らである。上記参照の米国特許出願筒071522219号によれば、迅速に実
行するために、キャッシュ・ミス時またはまだ複合化されていない行の一部への
分岐時に、少数(多分1個または2個)の命令を、複合化を試みずにCPUに送
ることが提案された。ICUは、このような命令を複合化し、その結果をセーブ
する。その後、ICUは、その命令がどこで始まるかの知識を用いて、次の命令
から複合化を開始する。ICUは、少なくともCPUの実行と同じ速さで命令を
処理する。その結果、CPUは、その時点から(次のキャッシュ・ミスまたは分
岐が発生するまで)複合命令を受け取る。
このシナリオの下で発生し得る少数の異なる状況がある。
ICUとCPUが同じ速度で命令を処理する場合、ICUは、(キャッシュ行の
まだ複合化されていない部分への分岐、またはキャッシュ・ミスが発生するまで
)cpuよりわずかに先に進んでいる。データに出会うと、ICUは、それが命
令であるかのようにそのバイトを複合化する。これらのバイトは実行できないの
で、プログラムは正しく実行される。データ・バイト数が少なく、その後に命令
が続いている場合は、CPUがそのデータの前後で分岐したことをICUが認識
するまで、少数の命令が誤って複合化される可能性がある。しかしながら、生成
された複合化情報は、依然として正しい実行をもたらす。CPUが分岐したとI
CtJが判定する時、実行されなかったことをICUが知っているバイトに対し
てとることのできる措置がいくつかある。ICUは、どのバイトが複合化できる
かどうか検査されており、どのバイトが検査されていないかの情報を維持してい
るものと仮定する。
1、実行されないバイトには、「未検査」のマークを付けることができる。この
場合、後でそのコードが実行される場合に、これらのバイトは再検査される。
2、このバイトを、「検査済みj状態に残しておくことが可能である。最大の複
合化は達成されないであろうが、複合ビットは、実行時に無視されるかもしれな
いが、正しい。
3、このバイトを、「一部検査済み」状態に残してお(ことが可能である。この
状態は、最悪の場合の複合化アルゴリズムの1つのシーケンスと等価である。他
のシーケンスは、後で検査できる。
どのアルゴリズムを選択するかは、ハードウェアの考慮点とプログラムの特性に
応じて変わる。
CPU実行速度は、データ・キャッシュ・ミス、マイクロコード化命令、または
パイプラインのストールなどによって低下し得るので、ICUがCPUよりかな
り前に行くことがあり得る。この距離は、コードの特性に依存する。分岐の発往
頻度が低いと、この距離が大きくなり得る。ICUはCPUより先に進んでいる
ので、データの存在のためにICUが命令境界の参照点を見失う可能性が常に存
在する。距離が大きくなるほど、この可能性が大きくなる。この状況は、上述の
ように処理できるが、正しくない命令境界を使って複合化されるバイトの数が多
くなるにつれて、性能に及ぼす影響が大きくなり得る。1つの解決策は、複合化
の速度を低下させることである。最悪の場合の複合化は、実際の命令をすべて複
合化できるかどうか検査する。ICUがCPUの前方である閾値よりも遠くなる
時には、ICUは、CPtJが追いつくまで、最悪の場合の解決プログラム及び
多重検査要素に切り替える。閾値の値は、実施上の判断による。
CPUが、前もって複合化された命令を実行している場合、ICUは不要である
。実施上の選択肢の1つは、コードの他の部分が将来実行できるようになった場
合に、ICUを使用してその部分を複合化することである。コードの部分として
は、下記のものが挙げられよう。
木取り出された命令キヤツシユ行の実行されない部分、*予め取出されたキャッ
シュ行、
*複合化されずにCPUに直接送られた、分岐目標にある以前に実行された命令
、または
*複合化されたかもしれないが、実行されなかったのでデータと区別できない、
実際に取った分岐に続く逐次バイト。
まだ実行しなければならない行の部分を複合化する時、ICUは、検査している
バイト使用の知識を有していないので、最悪の場合のシステムを使用しなければ
ならない。
可能なICU機構
ICUには、その位置とテキスト内容の知識に応じて、多くの可能な設計がある
。本節では、1つの可能な実施態様の論理的な説明を行う。第14図は、最悪の
場合のアルゴリズムの実施に使用される3つの複合化装置を示す図である。この
数は任意であり、テキスト・バッファのハーフワード数と同じ大きさにすること
ができる。複合化装置は、それぞれバイト0,2、及び4から開始する。可能な
命令シーケンスを完了すると、前のシーケンスから6バイトだけオフセットされ
る。各複合化装置は、タグの内部状態を保存し、テキストの各ハーフワードごと
に複合ビットを生成する。3つのシーケンスの論理和をとり、その結果得られる
複合シーケンスをテキストと共に記憶する。
もう1度、キャッシュの例を検討する。ある実施態様は、第14図に示すように
複数の複合化装置を有することができる。第14図で、要素160,161及び
162は、命令ファシリティの検査によって識別されるシーケンスのための別々
の複合化装置を備えている。これらの複合化装置の出力は、論理和要素164に
も結合されていることに留意されたい。
ある複合化装置は、最善の場合の長さカウントを使って複合化を行い、CPUよ
り先に進んでいる。もう1つの複合化装置は、最悪の場合のシステム(最善の場
合と組み合わせることができる)を使用し、同一のキャッシュ行の他の部分を複
合化する。例えば、第2の複合化装置が、その行の末尾から開始して、その行を
逆方向に複合化することができる。
逆方向複合化装置
第15図は、逆方向複合化を示す図である。最後のハーフワードから始めて、前
の3つのハーフワードの命令長コードが、−貫した命令境界をもつかどうか検査
される。その内の2つが逐次命令であり得る場合には、通常の規則に従って複合
化ビットが生成される。このシステム処理には、1ハーフワード後向きに移動し
ながら繰り返す逐次式の装置が設けられている。この場合も複合化ビットの論理
和をとる。第15図では、バイト24の可能な命令が検査される。バイト22だ
けが、可能な先行命令である。バイト22が検査される時、バイト20.18及
び16のいずれも、それぞれ長さが2.4及び6であるため、可能な先行命令で
ある。バイト20の検査時には、可能な命令が見つからない。
3個以上の命令を複合化する方法
複合化される命令の数を示すのに必要な情報の最小量は、複合化できる数の最大
値の対数である。最大値が2の場合、各複合命令ごとに1ビツトが必要である。
最大値が4の場合、3.2.1、または0個の命令を所定の1命令と複合化する
ことができるので、2ビツトが必要である。前述したように、各ハーフワードご
とにタグが必要であるが、CPUは、最初の命令のタグ以外のすべてのタグを無
視する。
もう1度、最悪の場合のアルゴリズムを検討する。ただし、今回は4元複合化を
行うアルゴリズムである。第16図を参照されたい。1バイトが、命令であるか
のように検査される。
それが複合化できない場合は、その複合化ビットがOになる。
それが他の命令と複合化できる場合は、第1の命令の複合化ビットは1、第2の
命令の複合化ビットは0になる。同様に、3つの命令が複合化される場合、複合
化ビットは、それぞれ2.1及びOになる。この方法では、命令A、B及びCを
3つ組として複合化できる場合、BとCが対として複合化できるものと仮定して
いる。これは、有効な仮定であると思われる。したがって、Bへの分岐が発生す
る場合には、BとCが複合対として実行される。
前記と同様に、各ハーフワードから始まるバイトを、可能な命令境界をもつかど
うか検査しなければならない。より多くの情報が利用できる場合には、命令のみ
または最善の場合のアルゴリズムを使用できる。検査された各シーケンスから、
複合化ビットのシーケンスが生成される。この複合シーケンスは、それらのシー
ケンスによって生成される個々の複合化ビットの最大値をとることによって形成
される。複合グループが実行される時、CPUは、そのグループの第1バイト以
外のバイトに関連するすべての複合ビットを無視する。これらの複合ビットは、
複合グループを構成する命令数を示す。
実際に使用する複合化規則に応じて、このアルゴリズムに対する何らかの最適化
が存在し得る。例えば、第16図(b)の第5のシーケンス(バイト8から始ま
る)では、長さが2.4.2及び6の命令が仮定されている。この例では、6バ
イト命令は絶対に複合化できないので、それ以外の3つの命令(バイト10,1
2.14)から始めて複合化を試みても利益はない。というのは、この3個の命
令は既に可能な限り複合化されているからである。この例が簡単であることから
、バイト14以降から始まる可能なシーケンスは、検査されな転送するビット数
を減らすため、複合情報の他の表現があり得る。キャッシュから複合命令が要求
された時、複合ビットを異なるフォーマットに変換することができる。例えば、
tL I IIは次の命令と複合化することを意味し、II OIIは次の命令
と複合化しないことを意味するという1命令当たり1ビツトのコード化を用いる
。4つの複合化された命令のグループは、コード化ビット(1,1,1,O)を
有するはずである。好ましい実施例では、4つの複合化された命令のグループは
、値3.2.1.0を有するものとして表される命令メンバ単位用のコード化タ
グを有する。命令コードを含まなし1ハーフワードに関連する複合化ビットは、
無視される。
命令のグループを複合化するための汎用装置を提示したカ(、検査中のバイトの
用途の知識のない最悪の場合の状況で動作する装置を有するシステムを提供する
ことが好ましい。テキスト内容の何らかの知識が利用できる時は、上述のより単
純化されたアーキテクチャのように、この装置を単純化することができる。複合
グループの命令の最大数が2より大きい時は、基本的長さカウントに対する拡張
を使用することができる。
明らかに、本発明を実施するための最善の態様の例として以上で述べた本発明は
、プロセッサ性能の潜在的な大きな成長の基礎を提供するものである。したがっ
て、当業者なら本開示の発明を理解すれば気付くであろう様々な修正及び改良を
現在及び将来に加えることができることが、本実施例及び他の実施例の再検討の
後に、当業者には理解されよう。上記の修正及び将来の改良は、本発明を最初に
発明した本発明者等の権利を保護するものと解釈すべき特許請求の範囲に含まれ
るものであることを理解されたい。
ムー
FIG、4A
FIG、48
=r−−−−−−−−−−−−コ
FIG、7
記憶
FIG、8
バイト 0 2 4 6 8 1012141618202224バ イ 上*
テキストのカワント
シーケンスキプログラム命令長シーケンスCベクトル寓2バイトごとの複合化ビ
ットFIG、11
(a) ゛
(b)
(C)
長 さ;2バイトごとの命令長コード
バ イ トコテキストのカワント
シーケンス=可能なプログラム命令!にレーケンスCベクトル=2バイトごとの
複合化ピットCCベクトル冨2バイトごとの合成複合化ビットFIG、12
o+++++ooo+++。
置と複合命令の逆方向複合化装置とを有する、異なる属性を有する命令プロセッ
サ用の命令を複合化するためのシステム開示の要約
Cl5CアーキテクチヤおよびRISCを含む他の属性を有するアーキテクチャ
のための命令の複合化に使用できる装置を有するシステムが開示される。複合化
が命令実行の前に行われ、適当な命令実行ハードウェア上で並列に実行できる複
合命令プログラムをもたらす。特に、本明細書で提案する装置は、命令とデータ
が混在でき、可変長の命令を含み、命令ストリームが修正できるアーキテクチャ
に対して複合化能力を提供する。このシステムは、異なる部分的な参照点情報に
対処できる。ここに提案する装置の1実施例は、どのテキスト・バイトが命令で
あり、どれがデータであるかがわからない最悪の場合の状況を扱う。何らかの情
報がわかっている場合は、システムを単純化することができる。ここに提示する
装置は、任意の命令数に対して複合化能力を提供する。このシステムは、特に、
そのい(つかの例を示したS/370命令セツトを用いる計算機用に開発されて
いる。逆方向複合化装置が提供される。複数の複合ユニットと、シーケンスの論
理和演算が、より困難な機構に対するシステム・サポートを提供する。
国際調査報告
Claims (60)
- 1.適用可能な複合化規則を、基本命令シーケンスの命令のバイト・ストリーム に適用するための規則手段と、命令コードに対して命令長コードとして割り当て られた固定長のピット・セットの基本命令シーケンス・バイト・ストリームを検 査し、複合化規則を適用しながら、ある命令から次の命令へと基本命令バイト・ ストリームを逐次走査するための検査手段と、 命令長コードの検査の後に、命令複合化ユニットに各命令を識別させるための境 界識別手段と、 複合化された命令セットの最初の複合命令を示す複合命令のためのタグ・ビット 情報を生成するための生成手段と、複合化処理を継続し、複合命令の複合シーケ ンスを複合プログラムとして提供するための出力手段とを備えたことを特徴とす る 特定のアーキテクチャに対して複合化できる命令のクラスを規定したアーキテク チャ的複合化規則を有するシステム。
- 2.命令に存在するハーフワードは、そのハーフワードが最初の複合命令でない ことを示すように初期設定されることを特徴とする請求項1記載のシステム。
- 3.命令は、対になつているかどうか検査されることを特徴とする請求項1記載 のシステム。
- 4.対になっているかどうかの検査で、基本命令の隣接する命令コードより大き いグループを調べ、前記複合化規則に従って、複合化に最適の対を採りあげるこ とを特徴とする請求項1記載のシステム。
- 5.検査手段は、複合化されることができない命令を含む複合化すべき命令を処 理し、検査された命令に、前記生成手段によって、特定の命令が最初の命令でな いことを示すタグが付けられ、検査中の組の最初の命令が最初の複合命令として 適切でない場合は、その命令に最初の命令ではないことを示すマークが付けられ 、検査手段が、検査し終えたばかりのグループの次の逐次命令を含む後続の命令 グループを検査することを特徴とする請求項1に記載のシステム。
- 6.検査されるべき命令は、非命令またはデータと混合されており、前記生成手 段は、各ハーフワードに、命令の第1バイトを含むとのマーク、または複合命令 の第1バイトを含まない命令とのマークを付け、前記出力手段は、複合化処理の 際に、複合命令の第1バイトを含まないとのマークを付けられた命令をスキップ することを特徴とする請求項1記載のシステム。
- 7.検査中の基本命令セット・ストリームのどこに複数の可能な命令シーケンス との境界が存在するかがわかっていない場合に各シーケンスごとに可能な境界を 決定するための決定手段が設けられ、前記複数の可能なシーケンスの最大値を計 算することによって複数のシーケンスを単一のシーケンスに縮小するための論理 和手段が設けられていることを特徴とする請求項1記載のシステム。
- 8.可能な境界を有する3つの可能な命令シーケンスが存在し、そのそれぞれが 異なる複合化ビットのシーケンスを生成し、現命令が命令プロセッサによって複 合化されるか否かを判定するため、前記論理和手段が、3ビット・シーケンスの 論理和をとって、単一のシーケンスを生成することを特徴とする請求項7記載の システム。
- 9.可能な境界を有するいくつかの可能な命令シーケンスが存在し、そのそれぞ れが異なる複合化ビットのシーケンスを生成し、バイト境界上で収れんするかど うか複数の可能なシーケンスを実験的に試行し、複合化のための収れん手段が設 けられ、収れんが検出された時は、収れんしているシーケンスのうちの1つが除 去されることを特徴とする請求項1記載のシステム。
- 10.単一のシーケンスが残るまで、シーケンス数を縮小させる縮小手段が設け られていることを特徴とする請求項9記載のシステム。
- 11.基本命令シーケンスの入力情報のバイト・ストリームで命令とデータが混 在している可能性があり、どこで命令が始まるかの知識がない場合に、収れんが 発生し、収れんによつてシーケンスが除去された場合、前記収れん手段が、収れ んによつて除去されたシーケンスの代わりに新しいシーケンスを開始する手段を 含むことを特徴とする請求項9記載のシステム。
- 12.各シーケンスは各ハーフワードから開始されることを特徴とする請求項1 1記載のシステム。
- 13.前記検査手段は命令セットを検査し、前記決定手段によつてシーケンスに 対する複合化ビットが決定され、この検査と決定の技法をシーケンス内であるバ イト数だけ後から繰り返し、前記論理和手段が、各シーケンスからの複合化ビッ トの論理和をとって、合成複合ビット命令を形成するように結合されていること を特徴とする請求項7記載のシステム。
- 14.中央処理装置、キャッシュ、メモリを有する命令プロセッサと、 システムが、スカラー命令の入力シーケンスを処理でき、複合命令の複合メンバ 単位のうちの少なくとも一部が、目標命令プロセッサによって並列に実行可能で ある複合命令プログラムに前記スカラー命令に変換できる複数の複合化ユニット を含む複合化ファシリティと、 特定のアーキテクチャに対して複合化できる命令のどれかのクラスでアーキテク チャ的複合化規則をチェックするための検査手段と、 適用可能な複合化規則を、基本命令シーケンスの命令のバイト・ストリームに適 用するための規則手段と、ビット・セットの基本命令シーケンス・バイト・スト リームを命令コードのために検査し、複合化規則を適用しながら、ある命令から 次の命令へと基本命令バイト・ストリームを逐次走査するための検査手段と、 命令複合化ユニットに複合命令の命令単位メンバを識別させるための境界手段と 、 複合化された命令セットの最初の複合命令を示す複合命令のためのタグ・ビット 情報を生成するための生成手段と、複合命令の複合シーケンスを、前記命令プロ セッサによって実行される複合プログラムとして提供するための出力手段とを備 えたことを特徴とする基本命令シーケンスの構成命令を並列に実行できる目標命 令プロセッサによって命令を処理し、基本命令のうちの少なくとも一部を並列に 実行できるように基本命令シーケンスを複合化するためのシステム。
- 15.前記出力手段は、複数の命令が命令を複合化せずに前記命令プログラムを 介して中央処理装置に提供されるようにするキャッシュ・ミスまたはまだ複合化 されていない行の一部への分岐に対応する手段は、前記複合化ファシリティに設 けられていることを特徴とする請求項14記載のシステム。
- 16.複合化ファシリティがバイト・ストリームを検査してデータに出会った場 合、複合化ファシリティの出力手段は、それが命令からなるかのようにデータを 複合化し、データを実行することができない命令プロセッサは、したがって、複 合命令プログラムを正しく実行することを特徴とする請求項14記載のシステム 。
- 17.命令に存在するハーフワードは、前記生成手段によって、そのハーフワー ドが最初の複合命令でないことを示すように初期設定されることを特徴とする請 求項14記載のシステム。
- 18.命令が対になっているかどうか検査されることを特徴とする請求項14記 載のシステム。
- 19.前記検査手段による対になっているかどうかの検査で、基本命令バイト・ ストリームの隣接する命令コードよりも大きいグループを調べ、前記複合化規則 に従って、複合化に最適の対を採りあげるための最適化手段が設けられることを 特徴とする請求項18記載のシステム。
- 20.検査手段は、複合化できない命令を検査し、このような検査された命令に 、前記生成手段によって、特定の命令が最初の命令でないことを示すマークが付 けられ、前記生成手段は、検査中の組の最初の命令が最初の複合命令として適切 でない場合に、その命令にマークを付け、出力手段は、実行中の命令プロセッサ に対してそれが最初の命令であると示さないようにし、前記命令が最初の命令で ないとのマークを付けられたので、検査を継続して、検査したばかりのグループ の次の逐次命令を含む後続の命令グループを検査することを特徴とする請求項1 4記載のシステム。
- 21.命令は、非命令またはデータと混合されており、複合命令の命令メンバが 、各ハーフワードに、命令の第1のバイトを含むとのマーク、または複合命令の 第1のバイトを含まないとのマークを付けられ、前記出力手段は、複合化処理の 際に、複合命令の第1のバイトを含まないとのマークを付けられた命令をスキッ プすることを特徴とする請求項20記載のシステム。
- 22.検査中の基本命令セット・ストリームのどこに複数の可能な命令シーケン スとの境界が存在するかがわかっていない場合に各シーケンスごとに可能な境界 を決定するための決定手段が設けられ、前記複数の可能なシーケンスの論理和を とることによって複数のシーケンスを単一のシーケンスに縮小するための論理和 手段が設けられていることを特徴とする請求項14記載のシステム。
- 23.可能な境界を有する3つの可能な命令シーケンスが存在し、そのそれぞれ が異なる複合化ビットのシーケンスを生成し、現命令が命令プロセッサによって 複合化されるか否かを判定するため、前記論理和手段は、3ビット・シーケンス の論理和をとって、単一のシーケンスを生成することを特徴とする請求項22記 載のシステム。
- 24.可能な境界を有する複数の可能な命令シーケンスが存在し、そのそれぞれ が異なる複合化ビットのシーケンスを生成し、バイト境界上で収れんするかどう か複数の可能なシーケンスを実験的に試行し、複合化のための収れん手段が設け られ、収れんが検出された時は、収れんしているシーケンスのうちの1つが除去 されることを特徴とする請求項14記載のシステム。
- 25.単一のシーケンスが残るまで、シーケンス数を縮小させる縮小手段が設け られていることを特徴とする請求項24記載のシステム。
- 26.基本命令シーケンスの入力情報のバイト・ストリームに命令とデータが混 在している可能性があり、どこで命令が始まるかの知識がない場合に、収れんが 発生し、収れんによってシーケンスが除去された場合、前記収れん手段は、収れ んによって除去されたシーケンスの代わりに新しいシーケンスを開始する手段を 含むことを特徴とする請求項24記載のシステム。
- 27.各シーケンスはハーフワードごとに開始されることを特徴とする請求項2 6記載のシステム。
- 28.前記検査手段は命令セットを検査し、前記決定手段によって、シーケンス に対する複合化ビットが決定され、この検査と決定の技法をシーケンスであるバ イト数だけ後から繰り返し、前記論理和手段が、各シーケンスからの複合化ビッ トの論理和をとって、合成複合ピット命令を形成するように結合されていること を特徴とする請求項22記載のシステム。
- 29.複合化ファシリティによって処理されつつある基本命令シーケンスの入力 情報のバイト・ストリームで命令とデータが混在している可能性があり、どこで 命令が始まるかの知識がない場合に、収れんが発生し、収れんによってシーケン スが除去された場合、収れんによって除去されたシーケンスの代わりに新しいシ ーケンスが開始されることを特徴とする請求項9記載のシステム。
- 30.各シーケンスはハーフワードごとに開始されることを特徴とする請求項2 9記載のシステム。
- 31.命令セットの1グループが検査され、複合化ビットが決定された後に、検 査手段は、再びあるグループに対してシーケンスであるバイト数だけ後から検査 のための処理を繰り返し、各シーケンスからの複合化ビットの論理和をとって合 成複合ビット命令が形成されることを特徴とする請求項29記載のシステム。
- 32.複数の複合化ユニットが設けられ、それぞれが合成複合ベクトルとして組 み合わされる出力を有する前記複数の別々の複合化ユニットによって、命令セッ トが検査され、複合化ビットが決定され、シーケンスが検査されることを特徴と する請求項14記載のシステム。
- 33.前記複数の複合化ユニットに結合された論理和ユニットが設けられ、命令 セットが検査され、前記出力手段によって、前記論理和ユニットと前記複合化ユ ニットの出力に基づいて、合成複合ベクトルが生成されることを特徴とする請求 項32記載のシステム。
- 34.複合命令の2つの命令メンバ単位は、命令プロセッサによって並列に実行 できる1対の命令を形成することを特徴とする請求項14記載のシステム。
- 35.メモリからの命令取り出しの処理中命令が識別され、検索の後、検査の前 に、これらが命令であってデータでないとのマークを付けられることを特徴とす る請求項14記載のシステム。
- 36.命令の複合ビットは、複合グループ命令を構成する命令数を示すことを特 徴とする請求項1記載のシステム。
- 37.複合命令のメンバ単位が複数存在し、複合命令に対して、複合命令のメン バ命令単位に適用される、それが次の命令と複合化されるか否かを示す情報が供 給されることを特徴とする請求項1記載のシステム。
- 38.実行中のシステム命令プロセッサの中央処理装置は、複合命令の第1の命 令メンバのタグ情報以外のすべてのタグ情報を無視することを特徴とする請求項 1記載のシステム。
- 39.検査中に、実行されないバイトが未検査のマークを付けられ、その場合に 、そのコードが後で命令プロセッサによって実行できるようになった場合、これ らのバイトが再検査されることを特徴とする請求項1記載のシステム。
- 40.検査中に、実行されないバイトが検査済みの状態に残されて、これらが実 行中に無視され、あるいは実行されなくても、位置が正しいことを示すことを特 徴とする請求項1記載のシステム。
- 41.検査中に、他のシーケンスが後で検査できるように、バイトは部分的に検 査済みのシーケンスの状態に残されることを特徴とする請求項1記載のシステム 。
- 42.命令の複合ビットは、複合グループ命令を構成する命令数を示すことを特 徴とする請求項14記載のシステム。
- 43.複数の複合命令のメンバ単位が存在し、複合命令に対して、複合命令のメ ンバ命令単位に適用される、それが次の命令と複合化されるか否かを示す情報が 供給されることを特徴とする請求項14記載のシステム。
- 44.実行中のシステム命令プロセッサの中央処理装置は、複合命令の第1の命 令メンバのタグ情報以外のすべてのタグ情報を無視することを特徴とする請求項 14記載のシステム。
- 45.検査中に、実行されないバイトは未検査のマークを付けられ、その場合に 、そのコードが後で命令プロセッサによって実行できるようになった場合、これ らのバイトが再検査されることを特徴とする請求項14記載のシステム。
- 46.検査中に、実行されないバイトは検査済みの状態に残されて、これらが実 行中に無視され、あるいは実行されなくても、位置が正しいことを示すことを特 徴とする請求項14記載のシステム。
- 47.検査中に、他のシーケンスが後で検査できるように、バイトは部分的に検 査済みのシーケンスの状態に残されることを特徴とする請求項14記載のシステ ム。
- 48.複数の逆方向複合化ユニットを含む逆方向複合化ファシリティと、 それらが命令の先頭であるかのように候補のビット・セットを検査し、命令スト リームを逆方向に移動して、命令の先頭と見なされる時、複合命令を判定するた めの規則手段に適用される他のすべてのビット・セットを見つけ、ある命令から 前の命令へと命令ストリームを逆方向に進むための検査手段と、 チェック、規則、境界、生成及び出力の手段とを備えたことを特徴とする命令を 複合化するためのシステム。
- 49.最後のハーフワードから始めて、一貫した命令境界をもつかどうか前の3 つのハーフワードの命令長コードを検査しチェックする手段と、2つの命令を、 あるアーキテクチャに適用される複合化規則に従って生成される複合化ビットを 伴う逐次命令として処理する手段と、検査とチェックを1ハーフワード後方に移 動させる手段と、その後、複合化ビットの論理和をとって複合命令を提供するた めの比較手段とを含む逆方向複合化手段を備えたことを特徴とする命令を複合化 するためのシステム。
- 50.転送するビット数を減らすために、複合情報の代りの表現があり得、複合 命令が要求される時、複合ビットを異なるフォーマットに変換できることを特徴 とする請求項1記載のシステム。
- 51.命令あたり1ビットは次の命令と複合化されることを意味する値と、次の 命令と複合化されないことを意味する値0の符号化に用いることを特徴とする請 求項50記載のシステム。
- 52.命令が対になっているかどうか検査されることを特徴とする請求項49記 載のシステム。
- 53.ハーフワードが検査されることを特徴とする請求項49記載のシステム。
- 54.複数の前記逆方向複合化手段は、結果を組み合わせることを特徴とする請 求項49記載のシステム。
- 55.複合化の結果は、論理和に結合されることを特徴とする請求項54記載の システム。
- 56.3つの前のビット・セットは、複合化できるかどうか検討されることを特 徴とする請求項49記載のシステム。
- 57.順方向複合化と逆方向複合化の両方が行われることを特徴とする請求項1 4記載のシステム。
- 58.前記複合化ファシリティに、使用可能な参照点情報に応じて複数の動作モ ードを提供するための制御手段が設けられていることを特徴とする請求項14記 載のシステム。
- 59.前記制御手段は動作モード間で動的に切り替えられることを特徴とする請 求項52記載のシステム。
- 60.検査中の基本命令セット・ストリームのどこに複数の可能な命令シーケン スとの境界があるかがわかっていない場合に各シーケンスごとに可能な境界を決 定するための決定手段が設けられ、前記複数の可能なシーケンスの論理和をとる ことによって複数のシーケンスを単一のシーケンスに縮小するための論理和手段 が設けられていることを特徴とする請求項7記載のシステム。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51938490A | 1990-05-04 | 1990-05-04 | |
US51938290A | 1990-05-04 | 1990-05-04 | |
US519,384 | 1990-05-04 | ||
US519,382 | 1990-05-04 | ||
US07/543,458 US5197135A (en) | 1990-06-26 | 1990-06-26 | Memory management for scalable compound instruction set machines with in-memory compounding |
US543,458 | 1990-06-26 | ||
US07/642,011 US5295249A (en) | 1990-05-04 | 1991-01-15 | Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel |
US642,011 | 1991-01-15 | ||
PCT/US1991/002040 WO1991017495A1 (en) | 1990-05-04 | 1991-03-29 | System for compounding instructions for handling instruction and data stream for processor with different attributes |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04505823A true JPH04505823A (ja) | 1992-10-08 |
JPH0680489B2 JPH0680489B2 (ja) | 1994-10-12 |
Family
ID=46201961
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3507370A Expired - Lifetime JPH0680489B2 (ja) | 1990-05-04 | 1991-03-29 | データ処理装置 |
JP3507600A Expired - Fee Related JPH0679273B2 (ja) | 1990-05-04 | 1991-03-29 | データ処理装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3507600A Expired - Fee Related JPH0679273B2 (ja) | 1990-05-04 | 1991-03-29 | データ処理装置 |
Country Status (7)
Country | Link |
---|---|
EP (2) | EP0481031A4 (ja) |
JP (2) | JPH0680489B2 (ja) |
AT (1) | ATE194236T1 (ja) |
DE (1) | DE69132271T2 (ja) |
HU (1) | HU216990B (ja) |
PL (1) | PL166513B1 (ja) |
WO (2) | WO1991017496A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011512590A (ja) * | 2008-02-14 | 2011-04-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 入出力(i/o)処理システム内の入出力サブシステムとの通信用に構成された制御装置において可変長デバイス・コマンド・ワード(dcw)を処理するためのコンピュータ・プログラム、装置、および方法(入出力処理システム内の制御装置における可変長デバイス・コマンド・ワードの処理) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728639A (ja) * | 1993-07-13 | 1995-01-31 | Nec Corp | マイクロプロセッサ |
US5619665A (en) * | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
US11204768B2 (en) | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
US11334491B1 (en) * | 2020-11-18 | 2022-05-17 | Centaur Technology, Inc. | Side cache array for greater fetch bandwidth |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US4586127A (en) * | 1982-11-03 | 1986-04-29 | Burroughs Corp. | Multiple control stores for a pipelined microcontroller |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4574348A (en) * | 1983-06-01 | 1986-03-04 | The Boeing Company | High speed digital signal processor architecture |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPS60101644A (ja) * | 1983-11-07 | 1985-06-05 | Masahiro Sowa | ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ |
JPH0769818B2 (ja) * | 1984-10-31 | 1995-07-31 | 株式会社日立製作所 | デ−タ処理装置 |
US4755966A (en) * | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
-
1991
- 1991-03-29 EP EP19910907170 patent/EP0481031A4/en not_active Withdrawn
- 1991-03-29 WO PCT/US1991/002037 patent/WO1991017496A1/en active IP Right Grant
- 1991-03-29 JP JP3507370A patent/JPH0680489B2/ja not_active Expired - Lifetime
- 1991-03-29 EP EP91908085A patent/EP0545927B1/en not_active Expired - Lifetime
- 1991-03-29 HU HU9200024A patent/HU216990B/hu unknown
- 1991-03-29 JP JP3507600A patent/JPH0679273B2/ja not_active Expired - Fee Related
- 1991-03-29 AT AT91908085T patent/ATE194236T1/de not_active IP Right Cessation
- 1991-03-29 DE DE69132271T patent/DE69132271T2/de not_active Expired - Fee Related
- 1991-03-29 WO PCT/US1991/002040 patent/WO1991017495A1/en not_active Application Discontinuation
- 1991-03-29 PL PL91293182A patent/PL166513B1/pl not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011512590A (ja) * | 2008-02-14 | 2011-04-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 入出力(i/o)処理システム内の入出力サブシステムとの通信用に構成された制御装置において可変長デバイス・コマンド・ワード(dcw)を処理するためのコンピュータ・プログラム、装置、および方法(入出力処理システム内の制御装置における可変長デバイス・コマンド・ワードの処理) |
Also Published As
Publication number | Publication date |
---|---|
EP0545927A1 (en) | 1993-06-16 |
HU9200024D0 (en) | 1992-03-30 |
HUT60048A (en) | 1992-07-28 |
WO1991017495A1 (en) | 1991-11-14 |
DE69132271T2 (de) | 2000-12-21 |
EP0481031A4 (en) | 1993-01-27 |
DE69132271D1 (de) | 2000-08-03 |
PL166513B1 (pl) | 1995-05-31 |
EP0481031A1 (en) | 1992-04-22 |
ATE194236T1 (de) | 2000-07-15 |
EP0545927B1 (en) | 2000-06-28 |
HU216990B (hu) | 1999-10-28 |
PL293182A1 (en) | 1992-10-19 |
WO1991017496A1 (en) | 1991-11-14 |
JPH0680489B2 (ja) | 1994-10-12 |
JPH0679273B2 (ja) | 1994-10-05 |
JPH04506878A (ja) | 1992-11-26 |
EP0545927A4 (en) | 1993-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5303356A (en) | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag | |
US5448746A (en) | System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution | |
US5504932A (en) | System for executing scalar instructions in parallel based on control bits appended by compounding decoder | |
US7458069B2 (en) | System and method for fusing instructions | |
US5502826A (en) | System and method for obtaining parallel existing instructions in a particular data processing configuration by compounding instructions | |
US6029240A (en) | Method for processing instructions for parallel execution including storing instruction sequences along with compounding information in cache | |
US6338136B1 (en) | Pairing of load-ALU-store with conditional branch | |
US5710902A (en) | Instruction dependency chain indentifier | |
KR102311619B1 (ko) | 파이프라인 제어 신호들을 발생시키도록 프로세서를 인에이블링하기 위한 방법 및 장치 | |
US5701430A (en) | Cross-cache-line compounding algorithm for scism processors | |
EP0454984A2 (en) | General purpose compounding technique for instruction-level processors | |
US7979637B2 (en) | Processor and method for executing data transfer process | |
JPH0429093B2 (ja) | ||
US5745724A (en) | Scan chain for rapidly identifying first or second objects of selected types in a sequential list | |
JPH11510291A (ja) | スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ | |
JPH02240733A (ja) | 可変長命令アーキテクチャにおける複数の規制詞の復合方法及び装置 | |
JP2000112758A (ja) | 投機的実行中に発生する例外を遅延させるシステム及び方法 | |
US8683261B2 (en) | Out of order millicode control operation | |
US6871343B1 (en) | Central processing apparatus and a compile method | |
JP4607958B2 (ja) | プロセッサおよびプログラム変換装置 | |
JPH04505823A (ja) | データ処理装置 | |
EP0825529A2 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
CA2053941A1 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
Vassiliadis et al. | In-cache pre-processing and decode mechanisms for fine grain parallelism in SCISM | |
JP2000347861A (ja) | コンパイラ、プロセッサおよび記録媒体 |