JPH0679273B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH0679273B2
JPH0679273B2 JP3507600A JP50760091A JPH0679273B2 JP H0679273 B2 JPH0679273 B2 JP H0679273B2 JP 3507600 A JP3507600 A JP 3507600A JP 50760091 A JP50760091 A JP 50760091A JP H0679273 B2 JPH0679273 B2 JP H0679273B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
compound
execution
compounding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP3507600A
Other languages
English (en)
Other versions
JPH04506878A (ja
Inventor
ヴアシリアデイス、スタマテイス
ブライナー、バソロミユー
ジエリマイー、トーマス・レオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Priority claimed from US07/543,458 external-priority patent/US5197135A/en
Priority claimed from US07/642,011 external-priority patent/US5295249A/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04506878A publication Critical patent/JPH04506878A/ja
Publication of JPH0679273B2 publication Critical patent/JPH0679273B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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 or 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or 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
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • 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 or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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 or look ahead
    • G06F9/3885Concurrent 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)

Description

【発明の詳細な説明】 関連特許出願の相互参照 本出願は、優先権を請求し、1990年5月4日出願の米国
特許出願第07/519384号、1990年6月26日出願の米国特
許出願第07/543458号、1991年1月15日出願の米国特許
出願第07/642011号及び1990年5月4日出願の米国特許
出願第07/519382号に対する米国一部継続出願に当た
る。
本米国特許出願は、下記の同時係属の米国特許出願に関
連している。
(1)1990年5月4日出願の発明の名称が「Scalable C
ompound Instruction Set Machine Architecture」で、
発明者がスタマティス・バシリアディス(Stamatis Vas
siliadis)他の米国特許出願第07/519384号(IBMドケッ
ト番号EN9−90−020) (2)1990年5月4日出願の発明の名称が「General Pu
rpose Compounding Technique For Instruction−Level
Parallel Processors」で、発明者がリチャード・J・
アイケマイヤー(Richard J.Eickemeyer)他の米国特許
出願第07/519382号(IBMドケット番号EN9−90−019) (3)1990年4月4日出願の発明の名称が「Data Depen
dency Collapsing Hardware Apparatus」で、発明者が
スタマティス・バシリアディス他の米国特許出願第07/5
04910号(IBMドケット番号EN9−90−014) (4)1990年5月10日出願の発明の名称が「Compoundin
g Preprocessor For Cache」で、発明者がバーソロミュ
ー・ブラナー(Bartholomew Blaner)他の米国特許出願
第07/522219号(IBMドケット番号EN9−90−012) (5)1990年6月26日出願の発明の名称が「An In−Mem
ory Preprocessor for a Scalable Compound Instructi
on Set Machine Processor」で、発明者がリチャード・
アイケマイヤー他の米国特許出願第07/543464号(IBMド
ケット番号EN9−90−018) (6)1990年6月26日出願の発明の名称が「Memory Man
agement for Scalable Compound Instruction Set Mach
ines With In−Memory Compounding」で、発明者がリチ
ャード・J・アイケマイヤー他の米国特許出願第07/543
458号(IBMドケット番号EN9−90−042) (7)1990年11月28日出願の発明の名称が「Overflow D
etermination for Three−Operand ALUS in a Scalable
Compound Instruction Set Machine」で、発明者がス
タマティス・バシリアディス他の米国特許出願第07/619
868号(IBMドケット番号EN9−90−033) (8)1991年1月15日出願の発明の名称が「Compoundin
g Preprocessor for Cache」で、発明者がバーソロミュ
ー・ブレーナ(Bartholomew Blaner)他の米国特許出願
第07/642011号(IBMドケット番号EN9−90−049) これらの同時係属の特許出願及び本出願は、同一の譲受
人、すなわち米国ニューヨーク州アーモンクのインター
ナショナル・ビジネス・マシーンズ・コーポレーション
(International Business Machines Corporation)が
所有する。
これら同時係属の特許出願に記述された記載を、引用に
より本明細書に合体する。
これら関連ケースを再検討すると、第1図及び第2図は
1990年5月4日出願の米国特許出願第07/519384号に図
示され、第3図は、1990年6月26日出願の米国特許出願
第07/543458号に記載され、第4B図は、1991年1月15日
出願の米国特許出願第07/642011号に一般的に記載さ
れ、第5図〜第7図は、1990年5月4日出願の米国特許
出願第07/519382号に図示されていることがわかる。
[技術分野] 本発明は、デジタル・コンピュータ及びデジタル・デー
タ・プロセッサに関するものであり、特に、2つ以上の
命令を並列に実行することができるデジタル・コンピュ
ータ及びデジタル・データ・プロセッサに関し、複合命
令の途中で分岐するための機構を提供するものである。
また、特に、このようにして提供されるシステムは、組
み合わせて複合命令にすることのできる命令セットを静
的に決定し、複合命令の途中での分岐を含む実行される
プログラムの命令に制御情報を付加することができる。
[背景技術] 命令のシーケンスを受け取り、1回に1命令ずつそのシ
ーケンスを実行する従来型コンピュータは公知であり、
「スカラー式」コンピュータと称される。計算機の新し
い世代ごとに、従来型のスカラー式計算機用の新しい加
速機構を発見しなけれならない。計算速度を加速するた
めの最近の機構は、限られた非常に単純な命令セットを
使用して高速で実行される縮小命令セット(RISC)のア
ーキテクチャに見られる。またもう1つの加速機構は、
このアーキテクチャにより複雑な命令を追加して、1命
令当たりの計算機能を増加させ、プログラムの命令数を
減少させるものであろう。これらのどちらかの手法を既
存のスカラー式コンピュータに適用するには、計算機の
命令セットとアーキテクチャを根本的に変更する必要が
ある。このような広範囲に及ぶ変更は、出費と停止時間
を伴い、当初は計算機の信頼性と可用性が低下する恐れ
がある。
最近、計算速度をさらに加速する「スーパースカラー」
コンピュータが開発された。これらの計算機は、基本的
にはスカラー式計算機であるが、単一スカラー命令のシ
ーケンスを含む命令ストリームから複数の命令を同時に
実行するよう適合させることによって、その性能を向上
させたものである。通常、これらの計算機は、スカラー
命令のシーケンス中の2つ以上の命令を並列に実行でき
るか否かを、命令実行時に判断する。この判断は、その
命令の命令コードと、命令間に存在するデータ依存性に
基づいて行われる。命令コードは、ある命令に必要な計
算ハードウェアを示唆する。一般に、同一のハードウェ
ア(ハードウェア依存性)または同一のオペランド(デ
ータ依存性)を使用する2つ以上の命令を同時に実行す
ることはできない。このハードウェア依存性とデータ依
存性のため、ある種の命令の組合せの並列実行が妨げら
れる。この場合、影響を受ける命令は、逐次実行され
る。そのため、もちろん、スーパースカラー計算機の性
能は低下する。
スーパースカラー計算機にはいくつかの短所があり、そ
れらを最小限に抑えることが望ましい。どの命令が並列
に実行できるかを命令実行時に判断する際に、一定量の
時間が消費される。この時間は、他の計算機動作とオー
バーラップさせることによって容易に解消できない。こ
の欠点は、命令セット・アーキテクチャの複雑さが増加
するにつれて顕著になる。また、同一の命令を実行しよ
うとするたびに並列実行の判断を繰り返さなければなら
ない。
既存のスカラー式計算機の耐用寿命を伸ばすには、実行
を加速するためのあらゆる手段が重要である。しかし、
縮小命令セット・アーキテクチャ、複合命令セット・ア
ーキテクチャ、またはスーパースカラー技法による加速
は、既存のスカラー計算機用としては、潜在的にコスト
が高すぎるか、不利益が多すぎる。
このような計算機の実行速度は、命令セットの変更や、
計算機アーキテクチャの変更や、命令実行に必要な時間
の延長を必要とせず、既存の命令セット中の命令を並列
にまたは同時に実行することによって加速することが好
ましい。
[発明の概要] 本明細書に記載の諸発明は、元のプログラムを、命令レ
ベルの並列処理が可能な計算機によって実行できるよう
に実施された元のプログラム機能に適合する並列の単一
命令群として処理できるシステムによってこの目的を達
成する。本発明者等は、既存の高水準言語で記述された
既存のプログラムまたは既存のアセンブリ言語プログラ
ムを、プリプロセッサによって処理する方法を提供し
た。このプリプロセッサは、複合命令を実行できるよう
に設計されたコンピュータ内で、単一の複合命令として
実行できる命令シーケンスを識別することができる。
この命令プロセッサ・システムは、スカラー計算機の一
連の基本命令に対する複合化復号を実行し、一連の複合
命令を生成し、複合命令の取出しと、取り出された複合
命令及び必要な単一命令の復号を実行し、複合命令を含
むプログラムがシステム上で実行される時にスカラー計
算機の基本命令のスカラー実行を元のままに保つ複合命
令プログラムを提供する。このシステムは、複合命令の
途中で分岐するための機構も提供する。複合命令の途中
で分岐する場合、制御ビットが付加されているかどうか
複合命令を検査する。この制御ビットに応答して、分岐
先または後続の複合命令の実行が正しくないプログラム
挙動を引き起こす場合に、それらの複合命令のメンバ単
位の実行を無効にする無効化機構が提供される。
本明細書に記載する諸発明の命令プロセッサ・システム
は、スカラー計算機の一連の基本命令から生成された複
合命令の復号を行い、前記命令プロセッサは、システム
内に設けられた複合化ファシリティを用いた、前記命令
プロセッサ内での複合命令の実行を可能にする、制御ビ
ツトが命令テキストに付加された、一連の複合命令を生
成する。このシステムは、命令プロセッサの機能的命令
ユニットによって複合命令及び単一命令として実行でき
る複合命令を取り出して復号し、元々記憶装置内にあっ
たスカラー計算機の基本命令のスカラー実行は、元のま
まに保持する。その結果得られる一連の複合化された命
令は、実行される複合化された命令ストリームが並列の
性質をもつため、通常は元のフォーマットよりも高速に
実行される。
上記及びその他の改良は、以下の詳細な説明に詳述され
ている。本発明及びその利点と特徴とをよりよく理解す
るため、詳細な背景について、関連特許を参照された
い。さらに、特に本明細書に記載の改良については、以
下の説明及び添付の図面を参照されたい。
図面の簡単な説明 第1図は、同時実行のためスカラー命令のシーケンス内
の命令を複合化することのできる高水準計算機システム
の概略図である。
第2図は、複合命令ストリーム内で選択的にグループ化
された命令群の並列実行を示す単一プロセッサの動作タ
イミング図である。
第3図は、動作環境の好ましい他の実施例として示され
たインメモリ処理を有するスケーラブル複合命令セット
計算機の階層的メモリ機構のブロック図である。
第4A図は、複合命令を実行するように設計されたコンピ
ュータ内で単一の複合命令として実行されることができ
る命令のシーケンスを識別するために既存のプログラム
を処理する手段を提供する高水準処理の概略図である。
第4B図は、本発明の好ましい動作環境と、その環境内で
の本発明の位置を示す図である。
第5図は、元のプログラム・コードから実際の実行まで
にプログラムが取る経路を示す図である。
第6図は、アセンブリ言語プログラムからの複合命令セ
ット・プログラムの生成を示す流れ図である。
第7図は、複合命令セットの実行を示す流れ図である。
第8図は、分岐先が複合命令の先頭または途中にある状
況を示す図である。
[好ましい実施例の詳細な説明] 背景 同時係属の米国特許出願第07/519382号(IBMドケット番
号EN9−90−020)では、スケーラブル複合命令セット計
算機(SCISM)アーキテクチャ方法が提案されている。
この方法では、命令実行の前にスカラー命令のシーケン
スを静的に解析して、隣接する命令をグループ化して並
列に実行できるシーケンスにすることによって形成され
る複合命令を生成することにより、命令レベルの並列性
が達成される。このシステムも、本明細書で開示する。
ある複合命令がどこで始まるか及びある複合命令に組み
込まれた命令数を示す関連制御情報は、複合化タグの形
で命令ストリームに加えられる。これに関連して、本明
細書では、「複合化」という用語は、グループ化された
命令を同時または並列に実行することを目的として、命
令の1シーケンスに含まれる命令群をグループ化するこ
とを指す。複合化は、最低限、同時に実行すべき2つの
命令を「対にする」ことによって満足される。複合化さ
れた命令は、スカラー実行のために提示される時の形か
ら変更されていないことが好ましい。
複数の命令を並列に実行する手段を含むデジタル・コン
ピュータ・システムでは、本発明の特に有利な実施例
は、命令を発行し実行する前にその複合化を行うメモリ
・アーキテクチャに基づくものである。このメモリ構造
が、コンピュータのCPU(中央演算処理装置)に命令を
供給する。通常、階層的メモリ構造は、現在アクセスさ
れている命令を格納する高速のキャッシュ記憶装置、キ
ャッシュに接続された中速の主記憶装置、及び低速大容
量の補助記憶装置を含んでいる。通常、キャッシュと主
記憶装置(これらをまとめて「実記憶装置」と称する)
は、命令を格納しており、これらは実行のために直接参
照することができる。補助記憶装置内の命令に対するア
クセスは、主記憶装置と補助記憶装置間に接続された入
出力アダプタを介して行われる。
同時係属の米国特許出願第07/543464号(IBMドケット番
号EN9−90−018)では、実記憶装置内の命令複合化機構
がスカラー命令のシーケンスに対する複合化タグ情報を
生成するSCISMアーキテクチャ用のインメモリ・プリプ
ロセッサが提案されている。この複合化タグ情報は、並
列に実行されるシーケンスの命令を示す。命令ページが
予め取出しされ、主記憶装置に記憶される時、命令複号
化ユニットは複合化タグ情報を生成する。上記特許出願
の具体的な実施例は、2つまでの命令の複合化を教示し
ているが、スカラー・コンピュータでの同時実行のため
に最大N個までの命令を複号化できることが企図されて
いる。
米国特許出願第07/522219号(IBMドケット番号EN9−90
−012)では、命令複合化ユニットが階層記憶機構の主
記憶装置とキャッシュ間にある階層メモリ内のキャッシ
ュ用の複合化プリプロセッサが開示されている。命令複
合化ユニットは、主記憶装置からキャッシュに取り出さ
れつつある命令ラインの命令に関する複合化タグ情報を
生成する。
これらの特許出願では、キャッシュ内の命令が複合化タ
グを伴っており、この複合化タグに応答して、複数の並
列実行ユニットは、最大N個までの命令グループ中の1
つまたは複数の命令を並列に実行する。1990年6月26日
出願の発明の名称が「Memory Management for Scalable
Compound Instruction Set Machines With In−Memory
Compounding」で、発明者がリチャード・J・アイケマ
イヤー他の米国特許出願第07/543458号を含むこれら関
連システムでは、スカラー命令のシーケンス中の最大N
個までの命令を同時に実行できるコンピュータ・システ
ムの環境中で、順序通り並べられたスカラー命令セット
に付随し、活動化されると、同時に実行される命令を示
す複合化タグを含むシーケンスが提案されている。コン
ピュータ・システムの実記憶装置内に記憶されたスカラ
ー命令の複合化タグを管理するための機構があり、この
機構は、実記憶装置からの修正済み命令を実記憶装置内
の未修正の命令と組み合わせるための、実記憶装置に接
続された組合せユニットを含んでいる。組合せユニット
と実記憶装置に接続されたタグ短縮ユニットが、修正済
み命令、及び修正済み命令と複合化することのできる実
記憶装置内のN−1個の命令の複合化タグを非活動化す
る。
しかしながら、これらの開発のすべてには満たされてい
ない要件がある。それは、コンピュータによって実行さ
れる命令セットまたはプログラムを処理する際に、どの
命令が組み合わせて複合命令にすることができるか、及
びどのようにして実行されるプログラム内の命令に制御
情報を付加するかを正確に決定することである。米国特
許出願第07/522219号(IBMドケット番号EN9−90−012)
と第07/642011号(IBMドケット番号EN9−90−049)の開
示は、この要件を対象としている。
概要 第1図を参照すると、本発明に従って構成されたデジタ
ル・データ処理システム用のデジタル・コンピュータ・
システムの一部分の代表的な実施例が示されている。こ
のコンピュータ・システムは、2個以上の命令を並列に
実行することができる。2個以上の命令からなるグルー
プの同時実行をサポートするため、このコンピュータ・
システムは、同時に並列に動作し、それぞれが独自に1
つまたは複数のタイプの機械レベル命令を処理すること
ができる複数の機能ユニットを含む。このシステムは、
並列または同時に実行するために命令を複合化する能力
を備えている。これに関連して、「複合化」とは、スカ
ラー命令のシーケンス中の複数の命令をグループ化する
ことを指し、このグループ化のサイズは、1からNまで
スケーラブルである。例えば、このスカラー命令のシー
ケンスは、IBMシステム/370製品で使用されるものなど
の既存の1組のスカラー命令から引き出すことができ
る。しかしながら、複合化は、サイクルごとに複数の命
令を処理できるように適合させることのできるすべての
コンピュータ・アーキテクチャで、命令の並列の発行及
び実行を容易にするように意図されていることを理解さ
れたい。
命令ストリームが複合化される時、隣接するスカラー命
令は、同時または並列に実行できるように選択的にグル
ープ化される。互換性のある命令のシーケンスが見つか
った時、複合命令が生成される。
複合化技法は、他の特許出願で論じられている。複合化
を一般的に理解するには、1990年5月4日出願の米国特
許出願第07/519384号(IBMドケット番号EN9−90−020)
及び1990年5月4日出願の発明の名称が「GENERAL PURP
OSE COMPOUNDING TECHNIQUE FOR INSTRUCTION−LEVEL P
ARALLEL PROCESSORS」である米国特許出願第07/519382
号(IBMドケット番号EN9−90−019)を参照されたい。
1対ずつの複合化用の命令複合化ユニットの例は、1990
年6月26日出願の米国特許出願第07/543464号(IBMドケ
ット番号EN9−90−018)に示されている。
命令の複合化と実行 一般に第1図に示すように、命令複合化ユニット20は、
2進スカラー命令のストリーム21を受け取り、隣接する
スカラー命令の一部を選択的にグループ化して、コード
化された複合命令を形成する。したがって、その結果得
られる複合化された命令ストリーム22は、単独で実行さ
れるスカラー命令、または並列に実行されるスカラー命
令のグループによって形成される複合命令を供給する。
スカラー命令が命令処理ユニット24に提示される時、そ
れが複数の実行ユニットのうちの適当な1つに経路指定
されて、逐次実行される。複合命令が命令処理ユニット
24に提示される時は、そのスカラー構成要素が、それぞ
れ適当な実行ユニットに経路指定されて、同時に並列に
実行される。典型的な機能ユニットには、演算論理装置
(ALU)26及び28、浮動小数点演算装置(FP)30、及び
メモリ・アドレス生成装置(AU)32が含まれるが、それ
だけに限られるものではない。
第2図を参照すると、複合化は、各機能ユニットがスカ
ラー命令(S)または複合命令(CS)を実行する単一プ
ロセッサ環境で実施することができる。図に示すよう
に、スカラー命令と複合化スカラー命令のシーケンスを
含む命令ストリーム33は、各複合命令に関連する制御ピ
ットまたはタグ(T)を有する。したがって、第1のス
カラー命令34は、サイクル1で機能ユニットAによって
単独に実行でき、タグT3で識別される3つ組の複合命令
36は、サイクル2で機能ユニットA、C及びDによって
その3つの複合化スカラー命令が並列に実行でき、タグ
T2で識別されるもう1つの複合命令38は、サイクル3で
機能ユニットA及びBによってその2つの複合化スカラ
ー命令が並列に実行でき、第2のスカラー命令40は、サ
イクル4で機能ユニットCによって単独に実行でき、大
きなグループの複合命令42は、サイクル5で機能ユニッ
トAないしDによってその4つの複合化スカラー命令が
並列に実行でき、第3のスカラー命令44は、サイクル6
で機能ユニットAによって単独に実行できる。
複合命令を処理するために適合させることのできるコン
ピュータ・アーキテクチャの1例は、IBMシステム/370
命令レベル・アーキテクチャである。このアーキテクチ
ャでは、図2に従って、各マシン・サイクル内で複数の
スカラー命令を発行して、実行させることができる。こ
れに関連して、マシン・サイクルとは、1スカラー命令
を実行するのに必要な単一のパイプライン段を指す。
一般に、命令発行前のある時点で複合化を行って、何回
も実行される1つまたは複数の命令に対してこの処理が
1回で済むようにすることが有用である。コンパイルの
後、命令発行の前にハードウェアでの複合化を実施する
ために、コンピュータ・システムの実記憶域内に命令複
合化機能を置くことが提案されている。このような複合
化は、本明細書に記載の他の代替案よりも対する好まし
い代替案と考えられ、これを「インメモリ複合化」と称
する。これは、1990年5月10日出願の米国特許出願第07
/522219号(IBMドケット番号EN9−90−012)と、1990年
6月26日出願の米国特許出願第07/543464号(IBMドケッ
ト番号EN9−90−018)及びその第3図に示されている。
また、背景として本明細書に記載するメモリ管理は、19
90年6月26日出願の発明の名称が「MEMORY MANAGEMENT
FOR SCALABLE COMPOUND INSTRUCTION SET MACHINES WI
TH IN MEMORY COMPOUNDING」である米国特許出願第07/5
43458号(IBMドケット番号EN9−90−042)にも記載され
ている。
インメモリ複合化は、第3図に全体的に示されている。
第3図で、階層的メモリ機構は、補助記憶装置及びコン
ピュータの実メモリとインターフェースする入出力アダ
プタ40を含んでいる。この機構の実メモリには、中速で
比較的大容量の主記憶装置46と、実速で比較的小容量の
命令キャッシュ48が含まれる。(本明細書では、主記憶
装置とキャッシュを総称して、「実メモリ」、「実記憶
域」または単に「メモリ」と称する。)命令のストリー
ムは、補助記憶装置から入出力アダプタ40によって取り
込まれ、主記憶装置46内の「ページ」と称するブロック
に記憶される。「ライン」と称する隣接した1組の命令
が、主記憶装置46から命令キャッシュ48に移動され、そ
こで命令取出し/発行ユニット50による処理のため高速
参照に使用できる。キャッシュから取り出された命令
は、命令取出し/発行ユニット50で発行され、復合器52
で復合化された後に、実行のため機能ユニット56、58、
…、60に渡される。
実行中、プログラム内にある命令に対する参照が行われ
る時、その命令のアドレスがキャッシュ管理ユニット62
に供給される。キャッシュ管理ユニット62は、このアド
レスを使って、アドレスされた命令を含む1つまたは複
数の命令を命令キャッシュ48から取り出してユニット50
内の待ち行列に入れる。アドレスされた命令がキャッシ
ュ内にある場合は、キャッシュ「ヒット」が発生する。
そうでない場合は、キャッシュ「ミス」が発生する。キ
ャッシュ・ミスの場合、キャッシュ管理ユニット62は、
要求された命令のラインアドレスを記憶管理機能群64に
送る。この記憶管理機能群64には、例えば、キャッシュ
管理ユニット62の供給するラインアドレスを使って、ア
ドレスされたラインを含むページが主記憶装置46内にあ
るか否かを判定する、実記憶管理機能を含めることがで
きる。そのページが実メモリ内にある場合、実記憶管理
機能は、その行アドレスを使って、キャッシュ・ミスに
なっている命令を含むラインを、主記憶装置46から命令
キャッシュ48に転送する。要求された命令を含むライン
が主記憶装置内にない場合は、オペレーティング・シス
テムが別の記憶管理機能を活動化し、必要なラインを含
むページの識別をそれに供給する。上記の記憶管理機能
は、そのラインを含むページを識別するアドレスを入出
力アダプタ40に送る。入出力アダプタ40は、補助記憶装
置からそのページを取り込み、それを主記憶装置46に供
給する。取り出されたページ用の場所をあけるために、
記憶管理機能は、取り出されたページで置換すべき主記
憶装置46内のページを選択する。SCISMアーキテクチャ
では、置換されたページは、タグ情報を複合化せずに入
出力アダプタを介して補助記憶装置に返すことが企図さ
れている。このようにして、ある命令シーケンスの実行
中に即座に必要になる可能性の最も高い命令群が、命令
キャッシュ48内の機能ユニットに隣接する位置にくる。
この階層的メモリ機構は、必要とされるがキャッシュ内
にない命令を高速に検索する能力を提供する。
SCISMアーキテクチャの環境では、インメモリ命令複合
化は、命令複合化ユニット70によって提供されることが
できる。この命令複合化ユニット70は、機能的に入出力
アダプタ40と主記憶装置46間にあり、従って、スカラー
命令ストリームの複合化を、主記憶装置46への入力また
は主記憶装置46内で行うことができる。この記憶位置で
は、ページ取出し進行中に命令は複合化されることがで
きる。
代りに、命令複合化ユニットは、主記憶装置46と命令キ
ャッシュ48間の位置72を占有することができ、複合命令
は、命令キャッシュ48から取り出される際に、ラインご
とに形成される。これは、好ましい実施例と見なせる。
複合化の例 どんな複合化の技法を使用するかは、設計上の選択の問
題である。しかし、例示のため、隣接するスカラー命令
から形成される複合命令を生成する1つの技法について
説明する。これは、前記の米国特許出願第07/543458号
に示されたものである。例えば、命令は、テキストの6
バイト(3ハーフワード)、4バイト(2ハーフワー
ド)または2バイト(1ハーフワード)を占めることが
できる。この例では、可変長命令を含む命令セットを複
合化するための規則は、長さ2バイトまたは4バイトの
すべての命令が、互いに複合化可能であると規定してい
る。すなわち、2バイト命令は、この特定の例では、別
の2バイト命令または別の4バイト命令と並列に実行す
ることができ、4バイト命令は、別の2バイト命令また
は別の4バイト命令と並列に実行することができる。こ
の規則はさらに、6バイト長の命令は、すべて複合化で
きないと規定している。したがって、6バイト命令は、
単独でしか実行できない。もちろん、複合化は、この規
則の例に制限されるものではなく、所定のコンピュータ
・アーキテクチャ用の特定の構成内に存在する命令を並
列に実行するための判定基準を規定する複数の規則を含
むことができる。
この例で使用する命令セットは、システム/370アーキテ
クチャから採ったものである。各命令の命令コードを検
査することによって、その命令コード内の命令長コード
(ILC)から、各命令の長さを決定することができる。
さらに、命令のタイプは、他の命令コード・ビット内に
規定されている。命令のタイプと長さが決定されると、
特定の命令が並列実行のために他の1つまたは複数の命
令と複合化されるか、それとも単独で実行されるかを示
すためにその特定の命令用のタグ・ビットを含む複合化
タグが生成される。
この例(限定されていない)のタグ・フォーマットで
は、2つの隣接する命令が複合化できる場合、メモリ内
で生成されるタグ・ビットは、複合化された最初の命令
では“1"、複合化された第2の命令では“0"となる。し
かし、第1及び第2の命令が複合化できない場合は、こ
の第1のタグ・フォーマットでは、最初の命令のタグ・
ビットが“0"になり、その後に第2及び第3の命令が、
複合化できるかどうか検討される。選択された複合化技
法に従って命令バイト・ストリームが処理され、様々な
スカラー命令に対する複合化ビットがコード化された
後、命令のより大きなグループを見るためのより大きな
ウィンドウを使用し、複合化に最善のN個の命令の組合
せを取り上げることによって、並列実行を達成するため
により最適な結果を得ることができる。
プログラムの複合化 しかしながら、本明細書で解決される問題の例として上
記の例を取り上げると、一般に、第4A図に全体的に示し
たシステム及び処理を提供する必要があると考えられ
る。第5図に関して述べる既存の高水準言語で記述され
た既存のプログラム、または第6図に関して説明された
ように処理すべき既存のアセンブリ言語プログラムを処
理する必要がある。そこで本発明者等は、複合命令を実
行できるように設計されたコンピュータ内で単一の複合
命令として実行できる命令のシーケンスを識別する能力
を有するシステムを提供した。
第4A図に移ると、システムとハードウェア・アーキテク
チャの両方に反映する1組の規則に基づいて複合命令プ
ログラムを作成する複合化ファシリティに、プログラム
が入力として供給されるシーケンスが図示されている。
好ましい複合化ファシリティは、1991年1月15日出願の
米国特許出願第07/642011号(IBMドケット番号EN9−90
−049)に示されている。これらの規則を、以下では複
合化規則と称する。複合化ファシリティによって作成さ
れたプログラムは、その後、第7図に全体的に示す複合
命令実行エンジンによって直接実行されることができ
る。
しかしながら、第5図は、あるプログラムがたどる高水
準ソース・コードから実際のの実行までの典型的な経路
を示しており、第4図で示唆される可能な機構の1つと
見なすことができる。アセンブリ水準プログラムに関す
る他の例については、第6図に関して説明する。
第5図を参照すると、コンピュータ・システム内には、
ソフトウェアとハードウェアの両方で、複合化が発生で
きる位置が多数なり得ることが理解されよう。そのそれ
ぞれに独自の長所と短所がある。第5図に示すように、
プログラムがソース・コードから実際の実行までに典型
的にたどる様々な段階がある。コンパイル段階の間に、
ソース・プログラムが機械コードに変換され、ディスク
46に記憶される。実行段階の間に、そのプログラムがデ
ィスク46から読み出され、特定のコンピュータ・システ
ム構成50の主記憶装置48にロードされる。コンピュータ
・システム構成50内では、適当な命令処理ユニット52、
54、56によって命令が実行される。複合化は、この経路
上のどこでも行うことができる。一般に、複合化ファシ
リティの位置が命令処理ユニット(IPU)に近ければ近
いほど、時間の制約が厳しくなる。複合化ファシリティ
の位置がIPUから遠ければ、それだけ多くの命令を大き
なサイズの命令ストリーム・ウィンドウ内で検査して、
複合化のための最善のグループ化を決定し、実行性能を
向上させることができる。
アセンブリ言語プログラムの複合化 第6図の流れ図は、システムとハードウェア・アーキテ
クチャの両方に反映する1組のカストマイズされた複合
化規則58に従ってアセンブリ言語プログラムから複合命
令セット・プログラムの生成を示す図である。このアセ
ンブリ言語プログラムは、ソフトウェア複合化ファシリ
ティ59への入力として供給される。複合化ファシリティ
59は、m1,m2…m命令ブロック(m=1,2,…)中のプ
ログラムを解析し、複合命令プログラムを作成する連続
した命令ブロックが、複合化ファシリティ59によって分
析される。ブロックには、1からnまでの番号が付けら
れる。ブロックnのメンバ命令は、I で示される。
ただし、mの範囲は、1からそのブロック内の命令の数
までである。複合化できるかどうか一緒に考慮される命
令群を含むバイト・ストリーム内の各ブロック60、62、
64の命令の数は、複合化ファシリティの設計に応じて変
わり、ブロックごとに変わることがある。
第6図に示されるように、この特定の複合化ファシリテ
ィは、各ブロック内の“m"個の命令について2元複合化
を考慮するように設計されている。第1ステップは、第
1及び第2の命令が複合化可能な対をなすか否かを検討
し、次に第2及び第3の命令が複合化可能な対をなすか
否かを検討し、次に第3及び第4の命令が複合化可能な
対をなすか否かを検討し、そのブロックの終りまでこれ
を繰り返すことである。様々な可能な複合化可能対C1〜
C5が識別された後、複合化ファシリティは、複合化され
た命令の好ましいグループ化を選択し、フラグまたは識
別子ビットを使って、複合命令の最適のグループ化を識
別することができる。
最適のグループ化が存在しない場合は、複合化可能な隣
接するスカラー命令のすべてを識別して、様々な複合命
令の間に位置する目標への分岐で、遭遇する複合化され
たどの対をも活用できるようにすることができる。複数
の複合化ユニットが利用できる場合、命令ストリーム内
の複数の連続したブロックを同時に複合化することがで
きる。
複合化されたプログラムの実行 第7図の流れ図は、ハードウェア・プリプロセッサ66ま
たはソフトウェア・プリプロセッサ67によって生成され
た複合命令セット・プログラムの実行を示す図である。
複合命令を有するバイト・ストリームは、複合命令への
高速アクセスを提供する記憶バッファとして役立つ複合
命令(CI)キャッシュ68に流れ込む。CI発行論理回路69
は、CIキャッシュから複合命令を取り出し、並列に実行
するため個々の複合命令を適当な機能ユニットに発行す
る。
複合命令コンピュータ・システム内のALU群などの命令
実行ユニット(CI EU)71は、スカラー命令を単独で1
回に1つ実行するか、または複合化されたスカラー命令
を他の複合化されたスカラー命令と並列に実行する能力
を有することを強調する必要がある。また、上記の並列
実行は、コンピュータのアーキテクチャ及び特定のコン
ピュータ・システム構成に応じて、ALU、浮動小数点(F
P)ユニット73、記憶アドレス生成ユニット(AU)75な
どの異なるタイプの実行ユニット内で、または複数の同
一タイプのユニット(FP1、FP2など)内で行うことがで
きる。
複合化における制御情報 前記の例で説明された第1のタグ・フォーマットでは、
複合化情報が、テキストの2バイト(命令データ)ごと
に1ビットとして、命令ストリームに付加される。
一般に、制御情報を含むタグは、複合化されたバイト・
ストリーム内の各命令に、すなわち複合化されないスカ
ラー命令、ならびに対、3つ組、またはそれより大きな
複合化されたグループとして含まれる複合化された各ス
カラー命令に付加されることができる。本明細書では、
識別子ビットとは、複合化されたグループを形成する複
合化されたスカラー命令を識別し、複合化命令プログラ
ム内に残っており、取り出されると単独で実行される、
複合化されていないスカラー命令からそれを区別するの
に特に使用されるタグ部を指示する。
3個以上のスカラー命令をグループ化して複合命令を形
成できる場合、追加の識別子ビットが有利となることが
ある。実際に複合化された特定のスカラー命令数を示す
のに必要な識別子ビットの最小数は、グループ化して複
合命令を形成することのできるスカラー命令の最大数の
2を底とする対数(を最も近い整数に切り上げた値)で
ある。例えば、最大値が2であれば、各複合命令ごとに
1つの識別子ビットが必要である。最大値が3または4
であれば、各複合命令ごとに2つの識別子ビットが必要
である。最大値が5、6、7または8であれば、各複合
命令ごとに3つの識別子ビットが必要である。
このコード化方式を実施した第2のタグ・フォーマット
を、下記の表1に示す。
テキストの各ハーフワードごとにタグが必要になるよう
な命令の整列を仮定すると、命令ストリームが実行する
ために取り出される時に、IPUが最初の命令のタグ以外
のすべてのタグを無視することが理解できる。言い換え
ると、取り出されたテキストのうちの1ハーフワードを
検査し、その識別子ビットのチェックによってそれが複
合命令の先頭であるか否かを判定する。表1に従って、
それが複合命令の先頭でない場合、その識別子ビットは
0である。そのハーフワードが2つのスカラー命令を含
む複合命令の先頭である場合、第1の命令の識別子ビッ
トは“1"であり、第2の命令の識別子ビットは“0"であ
る。そのハーフワードが3つのスカラー命令を含む複合
命令の先頭である場合、第1の命令の識別子ビットは
“2"であり、第2の命令の識別子ビットは“1"であり、
第3の命令の識別子ビットは“0"である。言いかえれ
ば、各ハーフワードの識別子ビットは、この特定のハー
フワードが複合命令の先頭であるか否かを識別すると同
時に、その複合化されたグループを構成する命令数を示
す。
この複合命令をコード化する方法は、3つの命令を複合
化して3つ組のグループを形成する場合、第2及び第3
の命令も複合化されて対のグループを形成することを前
提としている。言いかえると、3つ組のグループの第2
の命令への分岐が発生する場合、第2の命令の識別子ビ
ット“1"は、その3つ組のグループの第1の命令が実行
されなかった場合でも、第2及び第3の命令が複合化さ
れた対として並列に実行されることを示している。
本発明では、特定のコンピュータ・システム構成につい
て1回だけ命令ストリームを複合化すればよく、その
後、複合化された命令が取り出されると、それに関連す
る識別子ビットも取り出されることは、当業者にとって
明白であろう。これによって、いわゆるスーパースカラ
ー計算機で実行のために同一のまたは異なる命令が取り
出されるごとに、並列実行のために最後の瞬間に特定の
スカラー命令の非効率な判定と選択を繰り返し行うこと
が不要になる。
命令間に参照点がない場合の複合化 命令ストリームからの複合命令の生成は、命令がどこで
始まるかを示す参照点がわかっている場合には簡単であ
る。本明細書では、参照点とは、命令またはデータある
いはその両方を含むテキストのどのバイトが命令の第1
バイトであるかについての知識を意味する。この知識
は、命令境界の位置に関する情報を提供する何らかのマ
ーキング・フィールドまたは他の標識によって得ること
ができる。多くのコンピュータ・システムでは、このよ
うな参照点は、コンパイル時にコンパイラによって、ま
た命令の取出し時にCPUによってだけ明示的に知られ
る。コンパイルの後に複合化が完了した時に、コンパイ
ラは、タグを用いて、どのバイトが命令の第1バイトを
含み、どの命令がデータを含んでいるかを示すことがで
きる。正確な命令位置は既知であるので、この余分の情
報により複合化ファシリティはより効率的になる。もち
ろん、コンパイラは、命令境界を示す特定の情報を複合
化ファシリティに提供するために、他の方法で命令とデ
ータを区別する。
4バイト命令がすべてバイト境界上で整列されるシステ
ムでは、テキストの4バイトごとに1つのタグが関連付
けられる。同様に、命令が任意に整列されることができ
る場合には、テキストの1バイトごとにタグが必要であ
る。ただし、一部のコンピュータ・アーキテクチャで
は、可変長命令が可能であり、さらにデータを命令が混
在することが許されることもあり、したがって、複合化
処理が複雑になる。もちろん、実行時には、適切な実行
を可能にするために命令境界がわかっていなければなら
ない。しかし、複合化は、命令実行よりも十分に前の時
点で行うことが好ましいので、命令がどこから始まるか
の知識もどのバイトがデータであるかの知識もない状態
で命令を複合化する技法が必要である。この技法は、命
令が通常は固定長でありデータと混在しないRISC(縮小
命令セット・コンピュータ)アーキテクチャを含めて、
広く受け入れられているタイプのすべてのアーキテクチ
ャに適用できることが必要である。本発明に関連して、
第4A図に関して全般的に述べる諸タスクの実行は、1990
年5月4日出願の米国特許出願第07/519382号に全般的
に記載されている種類の複合命令実行エンジンの助けを
得て、他の環境で実施される。
複合化ファシリティを備えた好ましいシステムの編成 一般に、好ましい動作環境は、第4B図に示した動作環境
で代表される。複合化ファシリティは、ソフトウェア・
エンティティでもよいが、1991年1月16日出願の米国特
許出願第07/642011号に詳細に記載された命令複合化ユ
ニットによって複合化ファシリティのこの実施例を実施
することもできる。第4B図を参照すると、本発明に従っ
て構成された、キャッシュ管理ユニット144を有するデ
ジタル・コンピュータ・システムまたはデジタル・デー
タ処理システムの一部の代表的な実施例が示されてい
る。このコンピュータ・システムは、2つまたはそれ以
上の命令を並列に処理する能力を有する。このコンピュ
ータ・システムは、処理すべきである命令及びデータ
を、スカラー計算機用の1連の基本命令の形で記憶する
ための第1の記憶機構を含んでいる。この記憶機構は、
高水準記憶装置136として識別される。この記憶装置
(「主記憶装置」でもある)は、大容量で低速の記憶機
構であり、例えば、大容量システム記憶装置、または包
括的な階層的記憶システムの下位部分とすることができ
る。
第4B図のコンピュータ・システムはまた、高水準記憶装
置136から命令を受け取り、かつこれらの命令に、これ
らの命令のうちのどれが互いに並列に実行できるかを示
すタグの形の複合情報を関連づける命令複合化ファシリ
ティまたは機構も含んでいる。適当な命令複合化ユニッ
トは、命令複合化ユニット137によって表される。この
命令複合化ユニット137は、入ってくる命令を解析し
て、そのどれが並列に処理できるかを判定する。さら
に、命令複合化ユニット137は、これらの解析された命
令に対して、どの命令が互いに並列に処理でき、どの命
令が互いに並列に処理できず単独で処理しなければなら
ないかを示す、タグ・ビットを生成する。
第4B図のシステムはさらに、命令複合化ユニット137に
結合され、解析された命令とそれらに関連するタグ・フ
ィールドを受け取り、かつこれらの記憶された複合化さ
れた命令が取り出せるようにそれらのタグ・フィールド
を記憶するための第2の記憶装置を含んでいる。この第
2または第3以降の記憶装置は、複合命令キャッシュ13
8で代表される。複合命令キャッシュ138は、低速の記憶
装置136にアクセスする頻度を低下させてコンピュータ
・システムの性能を改良するのに一般的に使用される種
類の小容量で、高速の記憶装置である。
第4B図のシステムはさらに、互いに並列に動作する複数
の命令処理機能ユニット139、140、141などを含んでい
る。これらの命令処理機能ユニット139ないし141は、互
いに並列に同時に動作し、それぞれが、それ自体で1つ
または複数のタイプの機械レベル命令を処理する能力を
有する。使用される機能ユニットの例には、汎用演算論
理装置(ALU)、アドレス生成型ALU、データ依存性縮小
式(data dependency collapsing)ALU(1990年4月4
日出願の同時継続の米国特許出願第07/504910号に開示
されている好ましいタイプのもの)、分岐命令処理ユニ
ット、データ・シフタ・ユニット、浮動小数点処理ユニ
ットなどがある。所定のコンピュータ・システムは、可
能な機能ユニットのいくつかを含むことができる。例え
ば、所定のコンピュータ・システムは、汎用ALUを2個
以上含むことができる。また、所定のコンピュータ・シ
ステムは、これら異なるタイプの機能ユニットのすべて
を含む必要はない。どんな構成をとるかは、検討中の特
定のコンピュータ・システムの性質によって決まる。
第4B図のコンピュータ・システムはまた、複合命令キャ
ッシュ138に結合され、そこに記憶された隣接する命令
が並列に処理できることを命令タグ・ビットが指示する
時、命令処理機能ユニット139〜141のうちの異なるユニ
ットにそれらの命令を供給する命令取出し/発行機構も
含んでいる。この機構はまた、並列実行が不可能であ
り、命令を単独で処理しなければならないことをタグ・
ビットが指示する時は、単一の命令を個々の機能ユニッ
トに供給する。この機構は、命令取出し/発行ユニット
142で代表される。命令取出し/発行ユニット142は、複
合命令キャッシュ138から命令を取り出し、タグ・ビッ
トと命令コード・フィールドを検査すると同時に復号機
能を実行し、このような検査ならびに関連する他のパイ
プライン制御信号に基づいて、検討中の命令を機能ユニ
ット139〜141のうちの適当なユニットに送る。
SCISMアーキテクチャの環境では、命令複合化ユニット1
37によってインキャッシュ命令複合化を行い、その結
果、各キャッシュ行の複合化が、複合命令キャッシュ13
8の入力部で行えるようになる。すなわち、各キャッシ
ュラインが主記憶装置136から取り出されてキャッシュ1
38に入れられる時、そのラインは、ユニット137内で複
合化できるかどうか解析され、複合化情報タグ・ビット
と共に渡されて、複合命令キャッシュ138に記憶され
る。
キャッシュ化の前に、ラインは、命令複合化ユニット13
7内で複合化される。このユニット137はタグ・ビット・
セットを生成する。これらのタグ・ビットは、それらと
関連する命令に直接付加できる。また、それらの命令自
体と並列にタグ・ビットを供給することもできる。いず
れの場合でも、これらのビットは、その命令のラインと
共にキャッシュ138に記憶するために供給される。必要
に応じて、キャッシュ138の複合化された命令は、命令
取出し/発行ユニット142によって、そのタグ・ビット
情報と共に取り出される。命令取出し/発行ユニット14
2及び複合命令キャッシュ138は、(システムで規定され
るような)最大の長さの複合命令が、複合命令キャッシ
ュ138から取り出され、機能ユニット139、140、141など
に発行されるように設計されている。命令取出し/発行
ユニット142は、命令を受け取ると、それらのタグ・ビ
ットを検査して、復号検査によってそれらが並列に処理
できるか否かを判定し、命令コード・フィールドを検査
して、使用可能な機能ユニットのうちのどれがそれらの
処理に最も適しているかを決定する。2つ以上の命令が
並列処理に適しているとタグ・ビットが示す場合には、
それらの命令は、その命令コード・フィールドのコード
化に応じて、機能ユニットのうちの適当なユニットに送
られる。その後、これらの命令は、それぞれの機能ユニ
ットによって互いに並列に処理される。
並列処理に適さない命令に遭遇した時には、その命令コ
ードによって決定される適当な機能ユニットにその命令
を送り、その後、この命令は、選択された機能ユニット
内で単独に処理される。
複数の命令が常に並列に処理される理想的なケースで
は、このコンピュータ・システムの命令実行率が、1回
に1命令が実行される場合のN倍になるはずである。た
だし、Nは、並列に処理されるグループの命令数であ
る。
複合化におけるさらに別の制御情報(タグ) 前述したように、制御フィールドまたはタグは、複合命
令の境界を定める情報を含むが、特定の実施態様に有効
と考えられるだけの追加情報を含むことができる。
例えば、第3のタグ・フォーマットでは、制御フィール
ド(タグ)を、8ビット・フィールドとして、次のよう
に規定される。
その各ビットは、次のように規定される。
ビット 機能 t0 1ならば、この命令は、複合命令の先頭にマーク
を付ける。
t1 1ならば、2つの複合命令を並列に実行する。
t2 1ならば、この複合命令は、複数の実行サイクル
を有する。
t3 1ならば、パイプライン化を中断する。
t4 命令が分岐でこのビットが1ならば、分岐を取る
と予測される。
t5 1ならば、この命令は、前の複合命令からの記憶
インターロックを有する。
t6 1ならば、動的命令発行をイネーブルする。
t7 1ならば、この命令はALUを使用する。
複合化のための命令の分類 一般に、複合化ファシリティは、並列に実行される命令
のクラスを捜し、ハードウェアによって処理されること
ができない複合命令のメンバ間のインターロックが存在
しないことを確認する。互換性のある命令のシーケンス
が見つかった時、複合命令が生成される。例えば、シス
テム/370アーキテクチャは、下記のクラスに分割でき
る。
1.RR−フォーマット ロード、論理演算、算術演算、比
較 ・LCR−−Load Complement(補数ロード) ・LPR−−Load Positive(正数ロード) ・LNR−−Load Negative(負数ロード) ・LR−−Load Register(レジスタ・ロード) ・LTR−−Load and Test(ロード及びテスト) ・NR−−AND(論理積) ・OR−−OR(論理和) ・XR−−Exclusive OR(排他的論理和) ・AR−−Add(加算) ・SR−−Subtract(減算) ・ALR−−Add Logical(論理加算) ・SLR−−Subtract Logical(論理減算) ・CLR−−Compare Logical(論理比較) ・CR−−Compare(比較) 2.RS−フォーマット シフト(記憶アクセスなし) ・SRL−−Shift Right Logical(論理右シフト) ・SLL−−Shift Left Logical(論理左シフト) ・SRA−−Shift Right Arithmetic (算術右シフト) ・SLA−−Shift Left Arithmetic (算術左シフト) ・SRDL−−Shift Right Logical(論理右シフト) ・SLDL−−Shift Left Logical(論理左シフト) ・SRDA−−Shift Right Arithmetic (算術右シフト) ・SLDA−−Shift Left Arithmetic (算術左シフト) 3.分岐−−カウント及びインデックスによる分岐 ・BCT−−Branch on Count (カウント分岐、RXフォーマット) ・BCTR−−Branch on Count (カウント分岐、RRフォーマット) ・BXH−−Branch on Index High (高位インデックス分岐、RSフォーマット) ・BXLE−−Branch on Index Low (低位インデックス分岐、RSフォーマット) 4.分岐−−条件分岐 ・BC−−Branch on Condition (条件分岐、RXフォーマット) ・BCR−−Branch on Condition (条件分岐、RRフォーマット) 5.分岐−−分岐及びリンク ・BAL−−Branch and Link (分岐及びリンク、RXフォーマット) ・BALR−−Branch and Link (分岐及びリンク、RRフォーマット) ・BAS−−Branch and Save (分岐及びセーブ、RXフォーマット) ・BASR−−Branch and Save (分岐及びセーブ、RRフォーマット) 6.記憶 ・STCM−−Store Characters Under Mask (マスク下文字記憶、0−4バイト記憶、RSフォーマッ
ト) ・MVI−−Move Immediate (即値移動、1バイト、SIフォーマット) ・ST−−Store(記憶、4バイト) ・STC−−Store Character (文字記憶、1バイト) ・STH−−Store Half (ハーフ記憶、2バイト) 7.ロード ・LH−−Load Half(ハーフ・ロード、2バイト) ・L−−Load(ロード、4バイト) 8.LA−−Load Address(アドレス・ロード) 9.RXフォーマット 算術演算、論理演算、挿入、比較 ・A−−Add(加算) ・AH−−Add Half(半加算) ・AL−−Add Logical(論理加算) ・N−−AND(論理積) ・O−−OR(論理和) ・S−−Subtrach(減算) ・SH−−Subtract Half(半減算) ・SL−−Subtract Logical(論理減算) ・X−−Exclusive OR(排他的論理和) ・IC−−Insert Character(文字挿入) ・ICM−−Insert Character Under Mask (マスク下の文字挿入、O−4バイト取出し) ・C−−Compare(比較) ・CH−−Compare Half(半比較) ・CL−−Compare Logical(論理比較) ・CLI−−Compare Logical Immediate (即値論理比較) ・CLM−−Compare Logical Character Under Mask (マスク下文字論理比較) 10.TM−−Test Under Mask(マスク下のテスト) システム/370命令の残りの命令は、本発明では、実行の
ために複合化されるものとは見なされない。これによっ
て、これらの命令が、将来の複合命令実行エンジン上で
複合化されることが排除されるわけではない。
プログラムでの最も一般的なシーケンスの1つは、TMま
たはRXフォーマットの比較クラスの命令を実行すること
である。その結果は、その直後に続く条件分岐型命令の
実行を制御するのに使用される。COMPARE命令及びBRANC
H命令を並列に実行することによって性能が改善でき、
これは、高性能命令プロセッサでは時として動的に行わ
れる。典型的なアーキテクチャでは、COMPAREクラスの
命令の様々なメンバのすべてとBRANCHクラスの命令のメ
ンバのすべてを命令復号処理中にすばやく識別すること
には、多少の困難が伴う。この困難は、本発明によって
回避される。というのは、諸クラスの全メンバの解析が
前もって行われ、動作することが保証された複合命令が
生成されるためである。
ハードウェアの設計に応じて、多くのクラスの命令を並
列に実行することができる。上述のCOMPAREとBRANCHの
複合命令に加えて、LOAD命令とRRフォーマット命令、BR
ANCH命令とLOAD ADDRESS命令など、他の複合命令が考
えられる。プロセッサが必要な実行ユニットを有する場
合には、複合命令に、例えばRRフォーマットの算術演算
など、同一クラスの複数の命令を含めることもできる。
命令複合化の最適化 実現可能な、どの命令プロセッサにも、複合命令を構成
できる命令数に上限が存在する。複合命令を生成するこ
とによって実行可能命令を生成しつつある複合化ファシ
リティに対してこの上限mを指定して、複合化ファシリ
ティの生成する複合命令が、基礎となるハードウェアの
最大能力を超えないようにしなければならない。厳密に
いえば、mは、ハードウェア実施態様の結果であること
に留意されたい。これは、ソフトウェアによって所定の
コード・シーケンス中で複合化するために解析される命
令の範囲を制限するものではない。一般に、解析の範囲
が広いほど、複合化ファシリティによってより有利な複
合化が認識されるので、それだけ大きな並列性が得られ
る。例として、以下のシーケンスを検討する。
X1;何らかの複合化可能な命令 X2;何らかの複合化可能な命令 LOAD R1,(X);R1をメモリ位置Xからロードする ADD R3,R1;R3=R3+R1 SUB R1,R2;R1=R1−R2 COMP R1,R3;R1とR3とを比較する X3;何らかの複合化可能な命令 X4;何らかの複合化可能な命令 ハードウェアによって課される複合化の上限がm=2で
ある場合、複合化ファシリティの有効範囲に応じて、こ
の命令のシーケンスを複合化する方法がいくつか存在す
る。この有効範囲が4に等しい場合、複合化ファシリテ
ィは、〈−X1〉〈X2 LOAD〉〈ADD SUB〉〈COMP X3〉〈X
4−〉という対を作成して、LOADとADDの間及びSUBとCOM
Pの間の障害を完全に取り除く。一方、m=2のスーパ
ースカラー計算機は、その命令発行論理回路内で、厳密
に先入れ先出し方式で命令を対にするので、〈X1 X2〉
〈LOAD ADD〉〈SUB COMP〉〈X3 X4〉という対を作成す
るはずであり、インターロックを発生させる命令の不利
益を完全にこうむる。残念ながらADDにはLOADの結果が
必要なので、このLOADとADDを並列に実行することはで
きない。同様に、SUBとCOMPを並列に実行することもで
きない。したがって、性能向上が得られない。
分岐と複合命令 前述のシステムは、複合命令プログラムを生成する方法
を提供し、さらに、複合化情報(タグ)と命令テキスト
の関連を、比較的永久的な形で維持するための様々な方
法を提案する。しかし、複合命令の途中への分岐が存在
しないという保証はあり得ないので、どのようにすれば
この複合化情報が維持できるか、さらに、より重要なこ
とであるが、任意の位置への分岐が存在する状態で、ど
のようにすれば正しいプログラムの挙動を維持すること
ができるかは、これまでに明らかになっていない。この
問題は、後述するように、実際には第4B図の命令取出し
/発行ユニット142によって解決される。まず、複合化
タグTの第4の定義を仮定する。関連する命令が、複合
化命令の先頭であるか、あるいは単独に実行される命令
である場合には、T=1である。さらに、複合命令の先
頭以外のメンバ命令では、T=0である。次に、命令取
出し/発行ユニット142が、(上述のような)最大長の
複合命令を取り出すことができると仮定すると、命令取
出し/発行ユニット142は、分岐が成立したことに応じ
て命令を取り出す時、必ず正確に分岐目標アドレスから
始まる最大長の複合命令に等しいテキストのブロックを
取り出し、その後、取り出されたテキストで、次の複合
命令の先頭を示すT=1の命令に出会うまで、取り出さ
れたT=0の全ての命令を複合命令として実行する。分
岐目標のTビットが1である場合には、これは複合命令
の先頭であり、直接実行できる。第8図はこの状況を示
す図である。第8図に使用した表記法は、I であ
る。ただし、nは複合命令の番号、mは複合命令n中の
その命令の番号である。mの許容範囲は、1から複合命
令の最大長までであり、この例では、複合命令の最大長
は3と仮定されている。複合命令1の命令2は、分岐命
令であり、この例では、2つの可能な目標経路“a"及び
“b"を有する。経路“a"は、複合命令jの途中(I2)に
分岐し、経路“b"は、複合命令jの先頭の命令に分岐す
る。この分岐が経路“a"に従う場合、ハードウェアは、
最大長の複合命令、すなわち3個の命令を取り出し、そ
の後、I とU を複合命令として実行する。取出
しの残りすなわちI は、(T=1であることから)
次の複合命令の先頭または単一の命令であると認めら
れ、続いて実行するためにテキストの次のブロックが取
り出される間、保持される。この分岐命令が“b"経路を
取って複合命令jの先頭の命令に達した場合、ハードウ
ェアは、やはり最大長の複合命令に等しいテキストのブ
ロックを取り出す。このブロックは、この場合は完全な
複合命令、すなわち、I 、I 及びI をもた
らす。この複合命令の実行は直接に進行する。
この技法は、上述の第2のタブ・フォーマットなど、他
のタグ・フォーマットにも同様に適用可能である。
第8図では、分岐命令B1 2が、その次の命令と複合化さ
れているが、分岐が成立するので、この分岐命令の次の
予め取出された命令は、それがその分岐を含む複合命令
のメンバ単位から構成されようが、次の単一命令または
複合命令であろうが、(データと命令が混在できるシス
テムでは)実際にはデータであろうが、いずれの場合で
も、正しいプログラムの挙動を維持しようとするなら
ば、次の命令によって機械状態が更新されてはならな
い。さらに、分岐命令の目標が取り出された結果、第2
の分岐を含む複合命令が取り出されることがあり、この
第2の分岐の後にもテキストが続くことがあるが、第2
の分岐が成立する場合には、このテキストによって機械
状態が更新されてはならない。この分岐命令への分岐の
シーケンスは、無限に繰り返す可能性がある。いずれの
場合でも、正しいプログラム挙動を維持するための解決
策は、実行済みになってはならない命令が機械状態を更
新しないようにすることである。すなわち、成立した分
岐の後に逐次的に続く予め取出されたテキストの実行の
結果を、無効にしなければならない。これは、アルゴリ
ズムでは次のように記述できる。
1.複合命令のすべての分岐を含む複合命令の実行を開始
する。
2.複合命令が実際に分岐命令を含む場合には、その分岐
命令と同一の複合命令であろうと、後続の複合命令また
は単一命令にあろうと、その分岐の後に続くどの命令も
マシン・ステートを更新しないようにする。
3.分岐が成立する場合、その分岐の後に逐次的に続く全
ての命令の実行の結果を無効にする。しかしながら、分
岐目標の実行は無効にしてはならない。
本発明を好ましい実施例及び他の実施例に関して説明し
てきたが、ここに開示した発明を理解すれば当業者に理
解されるように、現在及び将来に様々な変更を行うこと
ができる。上記の修正及び将来の改良は、本発明を最初
に発明した本発明者等の権利を保護するものと解釈すべ
き特許請求の範囲に含まれるものであることを理解され
たい。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 642,011 (32)優先日 1991年1月15日 (33)優先権主張国 米国(US) (72)発明者 ジエリマイー、トーマス・レオ アメリカ合衆国ニユーヨーク州エンドウエ ル、リツキイー・ドライブ2926番地 (56)参考文献 特開 昭62−65133(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】取り出されたテキストに含まれ、メンバ単
    位から構成される複合命令を復合化して、この複合命令
    の実行に関連する前記複合命令の命令フォーマットに付
    加された制御ビットを検査する復号化手段と、 前記複合命令の前記メンバ単位の実行の正しさ、又は前
    記複合命令のメンバ単位と複合命令プログラムとして結
    合された一連の複合命令中の他の命令との関連する相互
    関係に基づく前記一連の複合命令の正しさに影響を及ぼ
    す可能性のある状態が発生した場合、前記複合命令のメ
    ンバ単位の実行を全て無効にする無効化手段と、 前記無効化した実行が生じなかったように前記一連の命
    令の実行を持続する手段とを備えたことを特徴とするデ
    ータ処理装置。
  2. 【請求項2】前記複合命令は、前記複合命令の他のメン
    バ単位と並列に実行できる分岐命令であるメンバ単位を
    含み、分岐が成立した場合、前記無効化手段によってこ
    の分岐に続くメンバ単位が実行されなかったようにされ
    るようにしたことを特徴とする請求項1記載のデータ処
    理装置。
JP3507600A 1990-05-04 1991-03-29 データ処理装置 Expired - Fee Related JPH0679273B2 (ja)

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
US07/543,458 US5197135A (en) 1990-06-26 1990-06-26 Memory management for scalable compound instruction set machines with in-memory compounding
US519,382 1991-01-15
US543,458 1991-01-15
US642,011 1991-01-15
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
PCT/US1991/002037 WO1991017496A1 (en) 1990-05-04 1991-03-29 System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction

Publications (2)

Publication Number Publication Date
JPH04506878A JPH04506878A (ja) 1992-11-26
JPH0679273B2 true JPH0679273B2 (ja) 1994-10-05

Family

ID=46201961

Family Applications (2)

Application Number Title Priority Date Filing Date
JP3507600A Expired - Fee Related JPH0679273B2 (ja) 1990-05-04 1991-03-29 データ処理装置
JP3507370A Expired - Lifetime JPH0680489B2 (ja) 1990-05-04 1991-03-29 データ処理装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP3507370A Expired - Lifetime JPH0680489B2 (ja) 1990-05-04 1991-03-29 データ処理装置

Country Status (7)

Country Link
EP (2) EP0545927B1 (ja)
JP (2) JPH0679273B2 (ja)
AT (1) ATE194236T1 (ja)
DE (1) DE69132271T2 (ja)
HU (1) HU216990B (ja)
PL (1) PL166513B1 (ja)
WO (2) WO1991017496A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
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
US7840717B2 (en) * 2008-02-14 2010-11-23 International Business Machines Corporation Processing a variable length device command word at a control unit in an I/O processing system
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)

* Cited by examiner, † Cited by third party
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
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置

Also Published As

Publication number Publication date
JPH0680489B2 (ja) 1994-10-12
EP0545927A1 (en) 1993-06-16
HU9200024D0 (en) 1992-03-30
HU216990B (hu) 1999-10-28
PL293182A1 (en) 1992-10-19
ATE194236T1 (de) 2000-07-15
JPH04505823A (ja) 1992-10-08
HUT60048A (en) 1992-07-28
EP0481031A4 (en) 1993-01-27
JPH04506878A (ja) 1992-11-26
WO1991017495A1 (en) 1991-11-14
EP0481031A1 (en) 1992-04-22
DE69132271T2 (de) 2000-12-21
PL166513B1 (pl) 1995-05-31
DE69132271D1 (de) 2000-08-03
EP0545927B1 (en) 2000-06-28
EP0545927A4 (en) 1993-04-26
WO1991017496A1 (en) 1991-11-14

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
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US5448746A (en) System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
JP3499252B2 (ja) コンパイル装置及びデータ処理装置
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5974538A (en) Method and apparatus for annotating operands in a computer system with source instruction identifiers
JPH11510289A (ja) Risc86命令セット
EP0810519A2 (en) Method and system for supporting speculative execution using a speculative look-aside table
JP3151444B2 (ja) ロード命令を処理する方法及びスーパースカラ・プロセッサ
JPH0429093B2 (ja)
US6260189B1 (en) Compiler-controlled dynamic instruction dispatch in pipelined processors
US5784603A (en) Fast handling of branch delay slots on mispredicted branches
US20070118696A1 (en) Register tracking for speculative prefetching
JPH01214932A (ja) データ処理装置
JP3486690B2 (ja) パイプライン方式プロセッサ
EP1974254B1 (en) Early conditional selection of an operand
US6871343B1 (en) Central processing apparatus and a compile method
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
KR100317769B1 (ko) 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령
JPH0679273B2 (ja) データ処理装置
JP2874351B2 (ja) 並列パイプライン命令処理装置
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees