JPH0567970B2 - - Google Patents

Info

Publication number
JPH0567970B2
JPH0567970B2 JP2010443A JP1044390A JPH0567970B2 JP H0567970 B2 JPH0567970 B2 JP H0567970B2 JP 2010443 A JP2010443 A JP 2010443A JP 1044390 A JP1044390 A JP 1044390A JP H0567970 B2 JPH0567970 B2 JP H0567970B2
Authority
JP
Japan
Prior art keywords
instruction
unit
source
queue
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2010443A
Other languages
English (en)
Other versions
JPH02234229A (ja
Inventor
Aaru Gurandoman Uiriamu
Bii Fuaito Deiuitsudo
Fuotsusamu Toryuugu
Pii Manrii Dowaito
Etsukusu Matsukiin Furanshisu
Ii Maarei Jon
Emu Saretsuto Ronarudo
Sanbaagu Airiin
Pii Sutaaringu Danieru
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH02234229A publication Critical patent/JPH02234229A/ja
Publication of JPH0567970B2 publication Critical patent/JPH0567970B2/ja
Granted legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/3016—Decoding the operand specifier, e.g. specifier format
    • G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/3016—Decoding the operand specifier, e.g. specifier format
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/3824—Operand accessing
    • G06F9/383—Operand prefetching
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)
  • Executing Machine-Instructions (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Vehicle Body Suspensions (AREA)

Description

【発明の詳細な説明】 本発明は全体的にはデイジタル・コンピユータ
に関し、もつと詳しく言えば、デイジタル・コン
ピユータにおいて多重命令をその実行前に前処理
する間のデータ依存状態を解決するシステムに関
する。本発明は、特に、可変長複素数命令セツト
(CIS)アーキテクチヤを用いてパイプライン化
デイジタル・コンピユータにおいて多重命令の前
処理に応用できる。 命令の前処理というのは多数の命令の実行速度
を高めるためにデイジタル・コンピユータで使用
される一般に普及している手段である。前処理作
業は、普通、命令を記憶するメモリと命令を実行
する実行ユニツトの間に挿設された命令ユニツト
によつて実施される。前処理作業としては、たと
えば、連続して来る命令におけるオペランドスペ
シフアイヤによつて識別されるオペランドを先取
りする作業があり、それによつて、それぞれの命
令を実行ユニツトにロードしたときにオペランド
を容易に利用できる。命令ユニツトが引き続いて
来る命令について前処理作業を実施している間、
実行ユニツトによつて現行命令が実行されてお
り、それによつて、任意所与の命令シーケンスの
ためにかかる処理時間を全体的に減らすことがで
きる。 命令の前処理はCPU性能を改善するが、前処
理作業と命令実行との間のコンフリクトによつ
て、特に、可変長命令の場合に、実行の際に費や
される時間が多くの場合前処理中に費やされる時
間と異なるという事実により、性能の向上に限界
がある。 命令の前処理と無関係に可変長命令を実行する
ために、1つの命令ユニツトと1つの実行ユニツ
トの間のデータ・制御経路に一組のキユーを備え
た中央演算処理装置が設けられる。これらのキユ
ーは命令を前処理した結果として命令ユニツトに
よつてロードされ、実行ユニツトによつて読み出
されて命令が実行される。 好ましくは、これらのキユーは「フオーク」キ
ユー、ソース・キユー、宛先キユー、プログラ
ム・カウンタ・キユーを含む。フオーク・キユー
は命令ユニツトによつて処理される各命令毎に制
御情報の入力を行なう。この制御情報は命令のた
めのオプコードに対応し、それはマイクロコード
実行ユニツトが命令を実行し始めるマイクロコー
ド「フオーク」アドレスである。 ソース・キユーは命令のためのソース・オペラ
ンドを特定する。好ましくは、ソース・キユーは
ソース・ポインタを記憶しており、オペランドそ
れ自体はそれがメモリから取り出されたオペラン
ドであるかあるいは命令ストリームからの直接の
データの場合に別個の「ソース・リスト」に含ま
れるか、もしくは、実行ユニツト内の一組の汎用
レジスタの内容となる。好ましくは、ソース・キ
ユーは1サイクル毎に2つのソース・ポインタと
共にロードされるとよく、ここでの「ソース・リ
スト」というのは1サイクル毎にメモリからのソ
ース・オペランドと直接データのソース・オペラ
ンドの両方と共にロードされ得るFIFOバツフア
である。 宛先キユーは命令の宛先を特定する。宛先はメ
モリであつても、汎用レジスタであつてもよい。
好ましくは、メモリ・アクセス・ユニツト内の別
個の「書き込みキユー」がメモリ宛先のアドレス
を保持し、宛先キユーが宛先がメモリ内にあるこ
とを示すレジスタ番号あるいはフラグのいずれか
を保持する。 プログラム・カウンタ・キユーは命令ユニツト
から実行ユニツトまで通つた各命令毎のプログラ
ム・カウンタの出発値を含む。プログラム・カウ
ンタの出発値は典型的なCISC命令セツト内のい
くつかの種々の可変長命令によつて使用され、普
通の様式で例外、割り込みを取り扱うためにも使
用される。 好ましくは、これらのキユーは6つまでの命令
に対する制御情報、データを保持するのに充分な
大きさを持つ。したがつて、キユーは実行ユニツ
トおよび命令ユニツトを他の各複雑なものからシ
ールドし、そのいずれでも一様でない処理速度を
許すバツフアを提供する。 本発明の他の目的ならびに利点は添付図面に関
連した以下の詳しい説明から明らかとなろう。 本発明は種々の修正、代替形態で可能である
が、その特殊な実施例を図面に示し、以下に詳し
く説明する。しかしながら、発明をこの特別な開
示形態に限定するつもりはなく、本発明が特許請
求の範囲に定義したような発明の精神、範囲内で
あらゆる修正形態、均等形態ならびに変更形態を
含むことは了解されたい。 まず第1図を参照して、ここにはデイジタル・
コンピユータ・システムの一部が示してあり、こ
れは主メモリ10と、メモリCPUインターフエ
ース・ユニツト11と、命令ユニツト12および
実行ユニツト13からなる少なくとも1つつの
CPUとを包含する。ここで、主メモリ10を共
有することによつてシステムで余分なCPUを使
用できることは了解されたい。しかしながら、共
有の主メモリ10を通じて効率良く同時に作動
し、通信するには4つまでのCPUが実用的であ
る。 データおよびこのデータを処理する情報は、共
に、主メモリ10内にアドレス指定可能な記憶場
所に格納される。1つの命令はCPUによつて実
施しようとしている動作を符号化形態で特定する
1つの動作コード(オプコード)と、オペランド
を位置指定する情報を与えるオペランドスペシフ
アイヤとを含む。個々の実行は多重小タスクに分
解される。これらのタスクはその目的に最適化さ
れた専用の個別の独立した機能ユニツトによつて
実施される。 各命令は最終的には異なつた動作を実施する
が、各命令が分解される小タスクの多くはすべて
の命令に共通である。一般的には、1つの命令の
実行中に次のステツプが実施される。すなわち、
命令取り出し、命令復号、オペランド取り出し、
実行、結果格納である。こうして、専用のハード
ウエア・ステージを使用することによつて、これ
らのステツプは1つのパイプライン化された作業
でオーバーラツプでき、それによつて、全命令処
理能力を向上させる。 パイプラインを通るデータ経路は各パイプライ
ン・ステージの結果を次のパイプライン・ステー
ジに転送するためのそれぞれの一組のレジスタを
含む。これらの転送レジスタは共通のシステム・
クロツクに応答して計時される。たとえば、一回
目のクロツク・サイクルでは、最初の命令が命令
取り出し専用のハードウエアによつて取り出され
る。二回目のクロツク・サイクル中、取り出され
た命令は命令復号ハードウエアによつて転送さ
れ、復号されるが、同時に、次の命令が命令取り
出しハードウエアによつて取り出される。三回目
のクロツク・サイクルで、各命令はパイプライン
の次のステージに移され、新しい命令が取り出さ
れる。こうして、パイプラインがいつぱいになつ
た後、クロツク・サイクルの終りで1つの命令が
完全に実行されることになる。 このプロセスは製造環境における組立てライン
に類似している。各作業員はその作業ステージを
通る各製品についての1種類の仕事を専ら実施す
るようになつている。各仕事が実施されるにつれ
て、製品は完成に近づくことになる。最終ステー
ジで、作業員が割り当てられた仕事を実施する毎
に、完成した製品は組立てラインを移動する。 第1図に示す特定のシステムでは、インターフ
エース・ユニツト11は主キヤツシユ14を包含
し、この主キヤツシユは平均的には命令、実行ユ
ニツト12,13が主メモリ10のアクセス時間
よりも速い速度でデータを処理するのを可能とす
る。このキヤツシユ14はデータ要素の選んだ事
前定義ブロツクを記憶する手段と、命令ユニツト
12からの変換バツフア15を経てリクエストを
受け取つて成る特定のデータ要素にアクセスする
手段と、キヤツシユ内に記憶された或るブロツク
内にデータ要素があるかどうかをチエツクする手
段と、特定されたデータ要素を含むブロツクにつ
いてのデータが格納されていないときに主メモリ
10からデータの特定されたブロツクを読み出
し、キヤツシユ14にこのデータ・ブロツクを格
納するように作動する手段とを包含する。換言す
れば、キヤツシユは主メモリに通じる「ウインド
ウ」となるものであり、命令、実行ユニツトで必
要となりそうなデータを含む。 命令、実行ユニツト12,13の必要とするデ
ータ要素がキヤツシユ14内に見出されない場合
には、データ要素は主メモリ10から得られる
が、このプロセスは、付加的なデータを含むブロ
ツク全体が主メモリ10から得られ、キヤツシユ
14に書き込まれる。時間・メモリスペースの局
所性の原理により、命令、実行ユニツトがデータ
要素を望む次のときには、このデータ要素が先に
アドレス指定されたデータ要素を含むブロツク内
に見出される可能性は高い。その結果、キヤツシ
ユ14が命令、実行ユニツト12,13の必要と
するデータ要素を既に含むという可能性が高い。
一般に、キヤツシユ14は主メモリ10よりもか
なり高い速度でアクセスされることになつている
ので、主メモリはデータ処理システムの平均性能
を実質的に悪化させることはなくキヤツシユより
も比較的遅いアクセス時間を持ち得る。したがつ
て、主メモリ10は遅い安価なメモリ要素からな
るものであつてもよい。 変換バツフア15は最も近い時点で用いられた
仮想/物理的アドレス変換を格納する高速連想メ
モリである。仮想メモリ・システムでは、ただ1
つの仮想アドレスに対する参照は所望の情報が利
用可能とされる前にいくつかのメモリ参照を生じ
る可能性がある。しかしながら、変換バツフア1
5が用いられる場合には、変換バツフア15内の
「ヒツト」を見出すだけに変換量は減らされる。 主メモリ10と主キヤツシユ14には入出力バ
ス16が接続してあつてシステムに指令と入力デ
ータを伝送すると共にシステムから出力データを
受けとるようになつている。 命令ユニツト12は、プログラム・カウンタ1
7と主キヤツシユ14から命令を取り出す命令キ
ヤツシユ18とを包含する。プログラム・カウン
タ17は主メモリ10、キヤツシユ14の物理的
記憶場所よりむしろ仮想記憶場所をアドレス指定
すると好ましい。したがつて、プログラム・カウ
ンタ17の仮想アドレスは命令が検索される前に
主メモリ10の物理的アドレスに変換されなけれ
ばならない。したがつて、プログラム・カウンタ
17の内容はインターフエース・ユニツト11に
転送され、そこで変化バツフア15がアドレス変
換を実施する。命令は変換されたアドレスを用い
てキヤツシユ14内の物理的記憶場所から検索さ
れる。キヤツシユ14は命令をデータ・リター
ン・ラインを通して命令キヤツシユ18に送る。
キヤツシユ14および変換バツフア15の構成お
よび動作は、Digital Equipment Corporation発
行、The VAX−11の351〜368頁(1980)の
Levy and Eckhouse,Jr.著「Computer
Programming and Architecture」の第11章に
さらに記載されている。 大部分の時間、プログラム・カウンタ17によ
つて指定されたアドレスに命令キヤツシユが命令
を予め格納し、アドレス指定された命令は直ちに
利用されて命令バツフア19に転送される。この
バツフア19から、アドレス指定済みの命令はオ
プコード、スペシフアイヤの両方を復号する命令
デコーダ20に送られる。オペランド処理ユニツ
ト(OPU)21が特定されたオペランドを取り
出し、それらを実行ユニツト13に送る。 OPU21は仮想アドレスも生成する。特に、
OPU21はメモリ・ソース(読み出し)と宛先
(書き込み)オペランドのための仮想アドレスを
発生する。少なくともメモリ読み出しオペランド
の場合には、OPU21はこれらの仮想アドレス
をインターフエース・ユニツト11に送り、そこ
において、物理的なアドレスに変換する。キヤツ
シユ14の物理的記憶場所が次にアクセスされて
メモリ・ソース・オペランドのためのオペランド
を取り出す。 各命令において、最初のバイトはオプコードを
含み、次のバイトは復号すべきオペランドスペシ
フアイヤとなる。各スペシフアイヤの第1バイト
はそのスペシフアイヤのアドレス指定モードを示
している。このバイトは、通常、半分に分解さ
れ、一方の半分はアレドス指定モードを指定し、
他方の半分はアドレス指定するのに用いられるべ
きレジスタを指定する。命令が可変長を有すると
好ましく、その場合、種々のタイプのスペシフア
イヤを同じオプコードと共に用いることができ
る。これは1980年12月23日に許されたStreker等
の米国特許第4241397号に開示されている。 命令を処理する最初のステツプは命令の「オプ
コード」部分を復号することである。各命令の最
初の部分はこの命令で実施されようとしている動
作を特定するオプコードからなる。復号操作は命
令デコーダ20においてテーブル・ルツクアツプ
技術を用いて行なわれる。命令デコーダはルツク
アツプ・テーブルで命令を実行するためのマイク
ロコード出発アドレスを見出し、この出発アドレ
スを実行ユニツト13に送る。その後、実行ユニ
ツトは指示された出発アドレスで始まる予格納さ
れたマイクロコードを実行することによつて特定
された動作を実施する。このデコーダはソース・
オペランド、宛先オペランドスペシフアイヤがこ
の命令で生じるところを決定し、これらのスペシ
フアイヤをOPU21に送り、命令の実行前に前
処理を行うことができる。 ルツクアツプ・テーブルはそれぞれ多重エント
リを有する多重ブロツクの列として構成されてい
る。各エントリはそのブロツクならびにエント
リ・インデツクスによつてアドレス指定され得
る。オプコード・バイトはブロツクをアドレス指
定し、実行ポイント・カウンタからのポインタ
(命令内の現行スペシフアイヤの位置を示す)が
ブロツク内の或る特定のエントリを選ぶ。ルツク
アツプ・テーブルの出力はデータ・コンテキスト
(バイト、ワード等)、データタイプ(アドレス、
整数等)およびアクセス用モード(読み出し、書
き込み、修飾等)を各スペシフアイヤに対して特
定し、また、マイクロコード・デイスパツチ・ア
ドレスを実行ユニツトに与える。 命令が復号された後、OPU21はオペランド
スペシフアイヤを文法的に解剖し、それらの有効
アドレスを演算する。このプロセスでは、GPR
を読み出し、おそらくは、自動増分または自動減
分を行なうことによつてGRP内容を修正する。
オペランドが次にこれらの有効アドレスから取り
出され、実行ユニツト13に送られ、この実行ユ
ニツト13が命令を実行し、結果をその命令のた
めの宛先ポインタによつて識別される宛先に書き
込む。 或る命令が実行ユニツトに送られる毎に、命令
ユニツトはマイクロコード・デイスパツチ・アド
レスと一組のポインタを、(1)ソース・オペランド
が見出され得る実行ユニツト・レジスタ・フアイ
ルの記憶場所と(2)結果を格納することになつてい
る記憶場所とに送る。実行ユニツト内では、一組
のキユー23がマイクロコード・デイスパツチ・
アドレスを格納するフオーク・キユーと、ソー
ス・オペランド位置を格納するソース・ポイン
タ・キユーと、宛先場所を格納する宛先ポイン
タ・キユーとを含む。これらのキユーの各々は多
重命令のためのデータを保持することのできる
FIFOバツフアである。 実行ユニツト13はソース・リスト24も含
み、これはGPRとコピーとソース・オペランド
のリストを含む多ポート式レジスタ・フアイルで
ある。こうして、ソース・ポインタ・キユー内の
エントリはレジスタ・オペランドのためのGPR
位置を指すか、あるいは、メモリ、リテラル・オ
ペランドのためのソース・リストを指すことにな
る。インターフエース・ユニツト11と命令ユニ
ツト12は共にエントリをソース・リスト24に
書き込み、実行ユニツト13は命令を実行する必
要に応じてソース・リストからオペランドを読み
出す。命令を実行するために、実行ユニツト13
は命令発行ユニツト25、マイクロコード実行ユ
ニツト26、演算・論理ユニツト(ALU)22、
回収ユニツト27を包含する。 本発明は、特に、パイプライン化したプロセツ
サにとつて有用である。上述したように、パイプ
ライン化プロセツサにおいて、プロセツサの命令
取り出しハードウエアが1つの命令を取り出して
いるときに、他のハードウエアが第2の命令の動
作コードを復号し、第3の命令のオペランドを取
り出し、第4の命令を実行し、第5の命令の処理
済みのデータを記憶する。第2図は代表的な命令
のためのパイプラインを示している。たとえば、
これは次のようになる。 ADDL3 RO、B 12(R1)、R2これはアドレ
ス指定の変位モードを用いるロングワード追加で
ある。 この命令のパイプライン化実行の第1のステー
ジで、命令のプログラム・カウント(PC)が発
生させられる。これは、通常、先の命令からのプ
ログラム・カウンタを増分させるか、あるいは、
分岐命令のターゲツト・アドレスを用いるかする
ことによつて達成される。PCは次にパイプライ
ンの第2のステージにおいて命令キヤツシユ18
にアクセスするのに用いられる。 パイプラインの第3のステツプで、命令データ
が命令デコーダ20で使用するためにあるいは命
令バツフア19にロードするためにキヤツシユ1
8から取り出される。命令デコーダ20が以下に
一層詳しく説明するように一回のサイクルでオプ
コードと3つのスペシフアイヤを復号する。R1
数がバイト変位と共に復号サイクルの終りで
OPU21に送られる。 ステージ4において、R0、R2ポインタがキユ
ー・ユニツト23に送られる。また、オペラン
ド・ユニツト21が位置R1でGPRレジスタ・フ
アイルの内容を読み出し、その値を特定された変
位12に加え、こうして得たアドレスをアドレス
発生ステージの終りでOP READリクエストと一
緒にインターフエース・ユニツト11の変換バツ
フア15に送る。第2のオペランドを受へ取るた
めにソース・リストの反転位置に向うポインタが
キユー・ユニツト23に送られる。OP READリ
クエストが作用すると、メモリから読み出された
第2のオペランドはソース・リストの反転位置に
転送される。 ステージ5において、インターフエース・ユニ
ツト11は実行のためにステージ4で発生させら
れたアドレスを選ぶ。変換バツフア15を用い
て、インターフエース・ユニツト11はアドレス
変換ステージ中に仮想アドレスを物理的アドレス
に変換する。この物理的アドレスが次に用いられ
てキヤツシユ14をアドレス指定する。これはパ
イプラインのステージ6で読み出される。 パイプラインのステージ7において、命令が
ALU22に対して発行され、ALUは2つのオペ
ランドを加算し、結果を回収ユニツト27に送
る。ステージ4の間、R1、R2のためのレジスタ
番号およびメモリ・データのためのソース・リス
ト位置を指すポインタが実行ユニツトに送られ、
ポインタ・キユーに格納された。次いで、キヤツ
シユ読み出しステージで、実行ユニツトが始動し
てソース・リスト内の2つのソース・オペランド
を探した。この特別の例においては、R0にレジ
スタ・データのみを見出しているが、このステー
ジの終りで、メモリ・データが到達し、レジス
タ・フアイルの失効した読み出しと代えられる。
こうして、両オペランドが命令実行ステージで利
用できる。 パイプラインのステージ8において、結果デー
タは回収キユーの次のエントリと対になる。また
このとき、分岐決定が基礎を置く状態コードも利
用できる。いくつかの機能実行ユニツトが同時に
ビジーとなる可能性があるが、一回のサイクルで
は1つの命令しか回収されない。 図示のパイプラインの最後のステージ9では、
データが実行ユニツト13、命令ユニツト12の
両方のレジスタ・フアイルのGPR部分に書き込
まれる。 パイプライン化プロセツサが状態分岐決定のア
ウトカムを予測してパイプライン内のストールす
なわち「ギヤツプ」のインパクトを最小限に抑え
る機構を備えることが望ましい。これはキユー2
3が多数の命令の中間結果を記憶する可能性があ
るので第1図のパイプライン化プロセツサにとつ
て特に重要である。ストールまたはギヤツプが生
じると、キユーはプロセツサの処理能力を高める
際の有効度を失う。しかしながら、パイプライン
の深さはハードウエアまたは実行時間が大きくな
ることによつて不正な予想の場合に命令シーケン
スの「巻き戻し(unwiding)」のコストを高める
原因となる。巻き戻しは不正に予想された分岐に
続く誤つた経路における命令からの情報のパイプ
ラインのフラツシングを生じさせ、実行を正しい
経路に沿つて再方向付ける。 第1図に示すように、パイプライン・プロセツ
サの命令ユニツト12は分岐予測ユニツト28を
備えている。分岐予測ユニツト28の特定機能は
プログラム・カウンタ17が分岐命令をアドレス
指定した後に採る値(PREDICTION PC)を決
定あるいは選定することである。この値または選
定はバス29を通して分岐予測ユニツト28から
プログラム・カウンタ・ユニツト17へ転送され
る。 分岐予測ユニツト28は4つの主要入力信号に
応答する。命令デコーダ20が命令バツフア19
から分岐オプコードを受け取つたとき、分岐オプ
コード情報および分岐オプコード・ストローブ信
号(BSHOP)が入力バス30を経て分岐予測ユ
ニツトに転送される。同時に、分岐命令のアドレ
ス(DECODE PC)がプログラム・カウンタ・
ユニツト17から入力バス31に送られる。分岐
命令のターゲツト・アドレス(TARGET PC)
およびターゲツト・アドレス・ストローブ信号
(TARGET VALID)がオペランド・ユニツト
21から入力バス32に送られる。たとえば、オ
ペランド・ユニツト21は分岐命令の変位スペシ
フアイヤの値を分岐命令に続く命令のアドレスに
加えてターゲツト・アドレスを計算する。状態分
岐の場合、実行ユニツト13からバス33へデー
タ信号(BRANCH DECISION)と共に送られ
た妥当性検査信号(BRANCH VALID)によつ
て分岐決定がなされ、予測が妥当化される。 たいていの命令シーケンスの実行中、分岐予測
ユニツト28はまず分岐オプコードならびにそれ
に対応するアドレスを受け取り、次に対応するタ
ーゲツト・アドレスを受け取り、最後に妥当性検
査信号を受け取る。分岐予測ユニツト28は分岐
オプコードおよび対応するアドレスを受け取ると
すぐに分岐決定をなすことによつてこの典型的な
シーケンスに応答する。 或る条件分岐命令が妥当化された場合、通常は
実行が継続する。さもなければ、分岐決定が予測
と一致しないときには、「巻戻し」操作が実施さ
れる。これには、分岐ヒストリ・キヤツシユにお
ける決定を記録し、次いで命令ストリームを再方
向付けることを伴う。命令ストリームは中央処理
ユニツトの状態を予測がなされた時点で存在する
状態に復帰させ、次いで分岐命令からの代わりの
実行経路の始めで実行を再開することによつて再
方向付けられる。たとえば、先に保管されていた
「巻戻し」アドレス(UNWIND PC)で実行が
再開される。好ましい分岐予測ユニツトの構造、
動作は、1989年2月3日に出願されたD.Fite等の
米国特許出願第306760号「Branch Prediction」
にもつと詳しく記載されており、これを参考資料
としてここに援用する。 命令ユニツト12の命令デコーダ20と実行ユ
ニツト13のキユー23が第3図により詳しく示
してある。ここでわかるように、デコーダ20は
プログラム・カウンタのためのデコーダ20a
と、フオーク・テーブルRAM20bと、2つの
ソース・オペランドスペシフアイヤデコーダ20
c、20dと、宛先オペランドスペシフアイヤデ
コーダ20eと、レジスタ動作デコーダ20fと
を包含する。これらは後に詳しく説明する。好ま
しい実施例では、デコーダ20c〜20fは密接
に相互接続してあり、大きくて複雑なデコーダ・
ユニツトにまとめられている。これについては、
1989年2月3日に出願されたFite等の米国特許出
願302347号「Decoding Multiple Specifiersin
a Variable Length Instruction
Architecture」に一層詳しく説明されており、こ
れを参考資料としてここに援用する。デコーダ2
0bは好ましくは命令ユニツトの代わりにフオー
ク・キユー23bに続く実行ユニツト内に設置す
る。これはフオーク・アドレスがより多くのビツ
トを含み、したがつて、命令ユニツトと実行ユニ
ツトの間のデータ・ラインが少なくて済むからで
ある。 プログラム・カウンタ・デコーダ20aの出力
は実行ユニツト13のプログラム・カウンタ・キ
ユー23aに格納される。RAM20bは各命令
のオプコード・バイトのみを受け取り、そのデー
タを使つてテーブルから「フオーク」(マイクロ
コード)・デイスパツチ・アドレスを選ぶ。この
デイスパツチ・アドレスは命令の実行に適するマ
イクロコードの開始を識別し、実行ユニツト13
内のフオーク・キユー23bに格納される。 4つのデコーダ209c〜20fの各々は命令
バツフア19からオプコード・バイトとオペラン
ドスペシフアイヤデータの両方を受け取る。デコ
ーダ20c、2dは2つのソース・オペランドス
ペシフアイヤを復号してソース・オペランド・ポ
インタを発生する。これは実行ユニツトで用いて
2つのソース・オペランドを位置指定することが
できる。これら2つのポインタは実行ユニツトの
ソース・ポインタ・キユー23cに格納される。
宛先オペランドスペシフアイヤはデコーダ20e
によつて復号されて宛先オペランド・ポインタを
発生する。これは実行ユニツトの宛先ポインタ・
キユー23eに格納される。 上記のレジスタ・コンフリクトのチエツクを行
なうために、新しい命令が復号される毎に一対の
マスクが発生させられて、その命令の実行中に実
行ユニツトが読み出したり、書き込んだりするこ
とになるすべてのGPRを識別する。これらのマ
スクはレジスタ動作デコーダ20f(第4図に関
連して以下に説明する)において発生させられ、
命令ユニツトのマスク・キユー23fに格納され
る。各マスクはGPUの数に等しい多数のビツト
位置を包含する。読み出しマスクでは、1つのビ
ツトが新しい命令の実行中に読み出されるべき各
GPR毎にセツトされており、書き込みマスクで
は、1つのビツトがその命令の実行中に書き込ま
れるべき各GPR毎にセツトされている。 或る所与の命令に対する読み出し、書き込みの
両マスク・キユー23fにただ1つのエントリと
して格納される。GPRが15個あるとき、マス
ク・キユーの各エントリは30個のビツトからなる
(読み出そうとしているGPRを識別するために各
読み出しマスクに15個のビツトと、書き込もうと
しているGPRを識別するために15個のビツト)。
マスク・キユー23fのすべての有効マスクの複
合体は命令ユニツト12において命令を前処理し
ているときにメモリ・アドレスを発生してその命
令の前処理をストールさせるべきかどうかを決定
するのに使用されるべき各レジスタをチエツクす
るのに用いられる。マスク・キユー23fの好ま
しい構造、動作は、1989年2月3日に出願された
Murray等の米国特許出願第306833号「Multiple
Instruction Processing System With Data
Dependency Resolution」に詳しく記載されて
おり、これを参考資料としてここに援用する。こ
の参考資料はインサート・ポインタ、リムーブ・
ポインタ、キユーがいつぱいのときを検出するロ
ジツク、キユーをフラツシングするロジツクを含
むキユーの基本的な構造も詳しく示している。 次に第4図に目を転じて、ここはソース・リス
ト24とそれに関連したレジスタ・フアイル(全
体的に40で示してある)のブロツク図が詳しく
示してある。これらの構成要素は一対のセルフタ
イムド・レジスタ・フアイル集積回路として一緒
にまとめてある。このセルフタイムド・レジス
タ・フアイル40は、メモリ・アクセス・ユニツ
ト11、命令ユニツト12、実行ユニツト13の
間のデータ・インターフエースを与える。 好ましくは、レジスタ・フアイル40は16個一
組のレジスタを4組包含し、各レジスタは長さ36
ビツトである。この場合、同じ種類の集積回路の
うち2つが組み合わせて用いられて16個の32ビツ
ト・レジスタ4組を与える。各レジスタは各バイ
トに対して4つのバイトプラス1つのパリテイ・
ビツトを含むように構成されている。4組はそれ
ぞれGPR41、ソース・リスト24、メモリ一
時レジスタ42および実行一時レジスタ43に対
応する。これらのレジスタはデユアルポート出力
を有し、一対のマルチプレクサ45,46を包含
する。マルチプレクサの入力部は4組のレジスタ
の各々にある16個のレジスタの各々に接続してい
る。36ビツト・マルチプレクサの出力部は実行ユ
ニツト13に直結している。セレクト・ラインが
実行ユニツト13とマルチプレクサ45,46の
セレクト入力部の間に接続してある。これらのセ
レクト・ラインは6ビツト信号を与えて64個のレ
ジスタそれぞれのアレドス指定を許すようになつ
ている。各レジスタ41,24,42,43の入
力部もデユアルポートタイプであり、A、B両方
のデータ入力を受け入れる。しかしながら、ここ
で、4組のレジスタがそれぞれデユアルポートタ
イプであるが、レジスタ・フアイル40が3つの
別個のソースから入力を受け取り、これらの入力
のうち2つ以下の入力を4組のレジスタのうち任
意の1つに送るようになつていることに注目され
たい。 上述したように、ソース・リスト24はソー
ス・オペランドを含むレジスタ・フアイルであ
る。したがつて、実行ユニツト13のソース・ポ
インタ・キユーのエントリはメモリおよび直接オ
ペランドあるいはリテラル・オペランドのための
ソース・リストを指す。メモリ・アクセス・ユニ
ツト11ならびに命令ユニツト12の両方がソー
ス・リスト24にエントリを書き込み、実行ユニ
ツト13は命令を実行する必要に応じてソース・
リストからオペランドを読み出す。 GPR41はVAXアーキテクチヤによつて定め
られるような16個の汎用レジスタを含む。これら
のレジスタはソース・オペランドおよび実行され
た命令の結果を記憶する。さらに、実行ユニツト
13はGPR41に結果を書き込み、命令ユニツ
ト12は自動増分、自動減分命令のためにGPR
41を更新する。 メモリ一時レジスタ42が実行ユニツト13お
よびメモリ・アクセス・ユニツト11によつてア
クセスできる16個の高速レジスタを含む。メモ
リ・アクセス・ユニツト11は実行ユニツト13
の必要とするデータを書き込む。さらに、マイク
ロコード実行ユニツト26もマイクロコード実行
での必要に応じてメモリ一時レジスタへの書き込
みを開始することができる。 実行一時レジスタ43は実行ユニツト13によ
つてのみアクセスできる16個の高速レジスタを含
む。一層詳しく言えば、マイクロコード実行ユニ
ツト13が中間記憶のためにこの実行一時レジス
タ43を使用する。 実行ユニツト13は36ビツト・データ・バスを
経てGPR46、メモリ一時レジスタ42および
実行一時レジスタ43に接続している。転送ゲー
ト47,48,49が、それぞれのセレクト入力
部に接続した6ビツト・セレクト・バスを経て実
行ユニツト・データ・バスからGPR41、メモ
リ一時レジスタ42および実行一時レジスタ43
に送られるデータを制御するようになつている。
同様にして、命令ユニツト12は転送ゲート5
0,51を経てGPR41のB入力部とソース・
リスト24に接続している。しかしながら、この
場合、転送ゲート50,51のセレクト・ライン
は互いに分離しており、独立して制御される。こ
の独立したアドレス指定能力の目的は自動増分あ
るいは自動減分モードを有するスペシフアイヤの
前処理と組み合わせて自動増分、自動減分ムー
ブ・アドレス操作を実施するのに必要なクロツ
ク・サイクルの数を減らすことにある。特に、自
動減分の場合、一回のサイクルで、或る特定され
たGPRの初期値が減分され、減分された値はそ
のGPRに戻されてロードされ、ソース・リスト
24の選ばれたエントリにもロードされる。しか
しながら、自動増分の場合には、一回のサイクル
で、特定されたGPRの初期値が増分され、その
GPRに戻されてそこにロードされるが、初期値
はソース・リストの選ばれたエントリにロードさ
れる。したがつて、独立アドレス指定は自動増
分、自動減分の両作業を一回のサイクルで実施す
るのを可能とする。 メモリ・アクセス・ユニツト11は72ビツト・
データ・バスを有し、一対の36ビツト・レジスタ
に書き込みを行なうのが好ましい。したがつて、
このバスは低位36ビツト部と高位36ビツト部に分
割され、データを連続レジスタ・アドレスで格納
できるようにする。低位36ビツトは転送ゲート5
2を通してソース・リストに送られるか、あるい
は、転送ゲート53を通してメモリ一時レジスタ
42に送られる。物理的には、同じ種類の集積回
路を2つ使用する上記の好ましい構成において、
各32ビツト部の高位18ビツトは集積回路の一方に
格納され32ビツト部の対応した低位18ビツトは他
方の集積回路に格納される。 メモリ・アクセス・ユニツト11も7ビツト・
セレクト・バスを転送ゲート68,70に送る。
この付加的なビツトは、メモリ・アクセス・ユニ
ツト12が転送ゲート68を通してソース・リス
ト48の次の順番のレジスタ、あるいは転送ゲー
ト70を通してメモリ一時レジスタ50に送られ
つつある高位36ビツトを書き込めるようにするの
に用いられる。こうして、高位36ビツトは同じレ
ジスタに格納されている低位36ビツトより1大き
い記憶場所でソース・リスト48かあるいはメモ
リ一時レジスタ50のいずれかに格納される。し
たがつて、実行ユニツト16がソース・リストお
よびメモリ一時レジスタ48,50に格納されて
いるデータを検索するとき、まず、低位36ビツト
に格納されているデータを検索し、その内部ポイ
ンタを増分し、次いで第2のアドレスを再演算す
ることなく高位36ビツトを検索する。 次に第5図を参照して、ここには命令ユニツト
を通るデータ経路が一層詳しく示してある。命令
デコーダ20は2つのソーススペシフアイヤと1
つの宛先スペシフアイヤを同時に復号する能力を
有する。或るクロツク・サイクル中、ソーススペ
シフアイヤのうちの1つはシヨート・リテラルス
ペシフアイヤとなり得る。この場合、復号された
シヨート・リテラルはEXバスを通して拡張ユニ
ツトに転送される。この拡張ユニツトはシヨー
ト・リテラルを現在復号されつつある命令のため
のスペシフアイヤについて特定されるデータタイ
プに変換するに充分な1つまたはそれ以上の32ビ
ツト・ロングワードに拡張する。 命令デコーダは各クロツク・サイクル毎に1つ
の「コンプレツクス」ソースまたは宛先スペシフ
アイヤを復号する能力を有する。コンプレツクス
というのは、スペシフアイヤがレジスタスペシフ
アイヤでもなければ、シヨート・リテラルスペシ
フアイヤでもないことを意味する。たとえば、コ
ンプレツクススペシフアイヤはベース・レジスタ
番号、インデツクス・レジスタ番号および変位を
含み得る。そして、即値、絶対値、デフアードお
よび自動増分、自動減分モードのような種々のモ
ードを持ち得る。これらのモードのあるものにつ
いてのコンプレツクススペシフアイヤの評価には
GPまたはアドレス演算ユニツト62によつて実
施されるアドレス演算およびメモリ読み出し操作
を必要とする。 分岐変位または即値データ(すなわち、命令ス
トリームに見出されるロング・リテラル)の評価
のためには、GPユニツトがメモリ読み出し操作
を開始する必要はない。分岐変位の場合には、
GPユニツトは変位を分岐予測ユニツト(第1図
の28)に直接転送する。即値データの場合に
は、GPユニツトはデータをソース・リスト24
に転送する。ソース・リストがオペランド処理ユ
ニツト21のために利用できるポートを1つしか
持つていないため、マルチプレクサ63がオペラ
ンド処理ユニツト内に設けられ、GPユニツト6
2またはEXPユニツト61のいずれかからのデ
ータの32ビツト・ワードを選定するようになつて
いる。1つのシヨート・リテラルの有効拡張には
優先権が与えられる。 通常、レジスタスペシフアイヤは命令ユニツト
では評価されないが、代わりに、レジスタ・ポイ
ンタ(すなわち、GPR番号)が実行ユニツトに
送られる。これにより、先に復号されているがま
だ実行されての命令がレジスタの値を変更した場
合に生じるストールを避けることができる。しか
しながら、「命令内レジスタ読み出しコンフリク
ト」のような異常状態では、GPユニツトはレジ
スタ・オペランドによつて特定されたレジスタの
内容を得、それをソース・リストに入れることに
なる。これは命令デコーダ20がコンフリクトを
検出し、応答信号をマイクロシーケンサ63
(GPユニツトの正規の動作をオーバーライドして
コンフリクトを処理するようにプログラムされて
いる)に送つたときに生じる。マイクロシーケン
サは汎用レジスタの命令ユニツトのコピーを実行
ユニツトの汎用レジスタと一致させ続けるように
もプログラムされている。オペランド処理ユニツ
トのこれらの特徴は上記のD.Fite等の米国特許出
願「Decoding Multiple Specifiers In A
Variable Length Instruction Architecture」に
記載されている。 レジスタスペシフアイヤが復号されたときに実
行ユニツトにレジスタ・ポインタを送るために、
命令デコーダはオペランド処理ユニツト内の転送
ユニツト64まで延びるTRバスを有する。この
TRバスは、本質的には、キユー23がいつぱい
になるようなストール状態の場合に3つまでのレ
ジスタ・ポインタを保持する「ストール・バツフ
ア」を構成する一対のラツチである。「ストー
ル・バツフア」の特定の回路が上記のMurray等
の米国特許出願「Multiple Instruction
Processing System With Data Dependency
Resolution For Digital Computers」に示され
ている。 次に第6図を参照して、ここにはGPユニツト
のフオーマツトが一層詳しく示してある。GPバ
スは単一ビツトに「有効データ・フラグ
(VDF)」をシステム・クロツクの先のサイクル
でコンプレツクススペシフアイヤが復号されてい
るかどうかを汎用ユニツト62に示すべく転送す
る。単一ビツトの「インデツクス・レジスタ・フ
ラグ(IRF)」もまたコンプレツクススペシフア
イヤがインデツクス・レジスタを参照しているか
どうかを示すべく転送される。参照されたインデ
ツクス・レジスタのいずれにもGPバスを通して
転送された4ビツト・インデツクス・レジスタ番
号で示されている。GPバスはコンプレツクスス
ペシフアイヤのスペシフアイヤモードを示す4ビ
ツト、ベース・レジスタ番号を示す4ビツトおよ
びコンプレツクススペシフアイヤによつて特定さ
れる任意の変位を含32ビツトも搬送する。 GPバスは現行命令のためのスペシフアイヤの
シーケンスでコンプレツクススペシフアイヤの位
置を示す3ビツトスペシフアイヤ番号も転送す
る。このスペシフアイヤ番号により、汎用ユニツ
ト62がオプコード・バイトのデコードからの特
定オペランドのためのアクセス、データタイプを
選ぶことができる。したがつて、汎用ユニツト6
2は第5図の拡張ユニツト61および転送ユニツ
ト64から幾分独立して作動することができる。
特に、汎用ユニツト62はそれがオペランドを決
定すべく2以上のサイクルを必要とするかどうか
を示す独立したストール信号(OPU STALL)
を与える。 次に第7図に参照して、ここには拡張バス
(EX)のためのフオーマツトが示してある。この
拡張バスは単ビツト有効データ・フラグ、シヨー
ト・リテラル・データの6ビツトおよび3ビツト
スペシフアイヤ番号を搬送する。このスペシフア
イヤ番号は現行命令に続くスペシフアイヤのシー
ケンスでシヨート・リテラルスペシフアイヤの位
置を示し、拡張ユニツト31で用いられてオプコ
ード・バイトのデコードからの関連したデータタ
イプを選ぶ。したがつて、拡張ユニツト61もむ
しろ独立して作動し、この拡張ユニツトがシヨー
ト・リテラルスペシフアイヤを処理するのに2以
上のサイクルを必要とするかどうかを示すそれぞ
れのストール信号(SL STALL)を発生する。 次いで第8図を参照して、ここには転送バス
(TR)のフオーマツトが示してある。TRバスは
第1のソース・バス65、第2のソース・バス6
6および宛先バス67を含み、各バスはそれぞれ
の有効データ・フラグ(VDF)、レジスタ・フラ
グ(RGF)およびレジスタ番号を搬送する。レ
ジスタ・フラグは対応するレジスタスペシフアイ
ヤが復号されているときにセツトされる。また、
コンプレツクスまたはシヨート・リテラルスペシ
フアイヤが復号されたときにはいつでも、第1、
第2のソース・バスあるいは宛先バスの有効デー
タ・フラグのいずれか1つがセツトされ、それに
組み合わせられたレジスタ・フラグがクリアされ
てソース・リスト・ポインタ・キユーまたは宛先
キユーに通じるデータ経路内のスペースをソー
ス・オペランドまたは宛先オペランドのために予
約する。 ソース・ポインタ・キユーのエントリは第1ソ
ース・バス65と同じ(第2ソース・バス66と
同じ)フオーマツトを有する。有効ソース1スペ
シフアイヤがレジスタでないときにはいつでも、
それはメモリ・ソースとなる。有効ソース1ポイ
ンタがメモリ・ソースであるときには、次の自由
なソース・リスト位置ポインタがレジスタ番号を
変える。同様に、有効ソース2スペシフアイヤが
レジスタでない場合にはいつでも、それはメモ
リ・ソースとなる。有効ソース2ポインタがメモ
リ・ソースであるときには、次の自由ソース・リ
スト位置ポインタがレジスタ番号を変える。各有
効ポインタはソース・ポインタ・キユーにロード
され、そのうちの1つのエントリを占有すること
になる。2つもの多くのポインタが同時にロード
され得る。1つのポインタをロードしようとして
いる場合、それはソース1ポインタでなければな
らない。2つのソース・ポインタを一度にロード
しようとしている場合には、ソース1ポインタは
ソース2ポインタのための位置の前方のキユー内
位置を占有することになる。これは実行ユニツト
が命令に現われたソーススペシフアイヤと同じ順
序でソース・ポインタを使用することを保証す
る。ソース・リスト内のデータのために利用でき
る充分な自由スペースがない場合、ソース・ポイ
ンタはまつたくロードされない。また、オーバー
フロー時にもソース・ポインタ・キユー23cに
はソース・ポインタはまつたくロードされない。
これらの考慮に従つて次の自由ソース・リスト・
ポインタを発生させるために、オペランド処理ユ
ニツト21(第5図参照)に自由ポインタ・ロジ
ツク68を設けると共に、有効非レジスタスペシ
フアイヤが存在し、オーバーフロー状態が存在し
ないときに必要に応じてそれぞれの無効レジスタ
番号に自由ポインタを挿入する一組のマルチプレ
クサ69を設ける。 好ましくは、非レジスタ宛先スペシフアイヤ
(すなわち、リテラルスペシフアイヤが有効宛先
として復号されないためにコンプレツクススペシ
フアイヤ)に対して用いられた宛先ポインタの一
部のみが有効データ・フラグとなる。換言すれ
ば、メモリ書き込みスペシフアイヤの宛先アレド
スを指すための或る種の機構が使用される。好ま
しい機構としては、メモリ書き込みスペシフアイ
ヤの物理的なアドレスを持つための「書き込みキ
ユー」70(第1図参照)をメモリ・アクセス・
ユニツトに設けたものである。したがつて、GP
ユニツトが宛先位置のアドレスを演算するとき、
GPユニツトはそれを或るコード(対応する結果
が実行ユニツト13の回収ユニツト27によつて
メモリに回収されるまで書き込みキユーに格納さ
れることになつている宛先アドレスとして上記の
アドレスを識別するコード)と一緒にメモリ・ア
クセス・ユニツトに転送する。回収ユニツトが復
号されるシーケンスと同じシーケンスで結果を回
収するので、各結果に対するそれぞれのアドレス
は結果がメモリ・アクセス・ユニツトに回収され
たときに書き込みキユーのヘツドから取り出され
る。書き込みキユー70のこれ以上の特徴は1989
年2月3日に出願されたD.Fite等の米国特許出願
第306767号「Method and Apparatus
ForResolving A Variable Number of
Potential Memory Access Conflicts In A
Pipelined Computer System」に開示されてお
り、これを参考資料としてここに援用する。 次に第9図を参照して、ここにはソース・ポイ
ンタ・キユー23cの概略図が示してある。この
ソース・ポインタ・キユーは16個1組の5ビツ
ト・レジスタ400を含み、各レジスタは4ビツ
ト・ポインタと、このポインタが汎用レジスタあ
るいはソース・リストのエントリを示しているか
どうかを示すフラグとを保持することができる。
比較すれば、プログラム・カウンタ・キユー23
aとフオーク・キユー23bは各々8個のレジス
タを有する。 2つのソース・ポインタを同時に挿入するため
に、レジスタ400は、各々、それぞれのORゲ
ート401に接続したデータ・クロツク・イネー
ブル入力部を有し、これらの入力部がインサー
ト・ポインタ・レジスタ404からのインサー
ト・ポインタによつて選ばれるのに応じてSRC1
PTR、SRC2 PTRおよび対応したSRC1
VALID、SRC2 VALIDの信号を次の2つの自
由レジスタに送る2つのマルチプレクサ402,
403の出力を混合する。インサート・ポインタ
はSRC1 VALID、SRC2 VALID信号のいず
れもが、そのうちの1つが、あるいは、そのうち
の2つが加算機405で計算されるときなどに主
張されたかどうかに依存して0、1、2だけ増分
される。 2つまでのポインタを同時に取り出すために、
ソース・ポインタ・キユー23cは第1、第2マ
ルチプレクサ406,407を含み、これらのマ
ルチプレクサはREMOVE0、REMOVE1の信号
によつて要求されるそれぞれのポインタに依存し
て加算機409によつて0、1または2だけ増分
される取り出しポインタ・レジスタ408によつ
て制御される。 ソース・ポインタ・キユー内の現在あるエント
リの数を決定するために、ソース・ポインタ・キ
ユー23cがインサート・ポインタ・レジスタ4
04および取り出しポインタ・レジスタ408を
リセツトすることによつてフラツシユされるとき
にレジスタ420はゼロにリセツトされる。減算
機、加算機の回路421,422がキユー23c
に挿入されるか、あるいは、そこから取り出され
たポインタの正味数に応答してレジスタ420を
増分あるいは減分する。本質的には、キユー内の
エントリの数はインサート・ポインタと取り出し
ポインタの差であるが、現在キユー内にあるポイ
ンタの数についてのレジスタ420もそのキユー
が完成に空であるかあるいは完全にいつぱいであ
るかどうかを示す。ソース・ポインタ・キユーか
らの命令ユニツトにPOINTER QUEUE
FULL信号を転送する際の遅延により、この
POINTER QUEUE FULL信号はデコーダ回
路423によつて決定されるなどしてこのキユー
内のエントリの数が最大数16ではなくて14に達し
たときに発生するのが好ましい。同様にして、デ
コーダ424,425が第1、第2のソース・ポ
インタがこのキユーから利用できるかどうかを示
す。 次に第10図を参照して、ここには全体的に6
4で転送ユニツトが、全体的に68で自由ポイン
タ・ロジツクが、そして、全体的に69でマルチ
プレクサのセツトが概略的に示してある。輸送ユ
ニツト64は任意のパリテイ・エラーを命令デコ
ーダ(第5図の20)に戻すためにパリテイ・チ
エツカ81と、転送バス・レジスタ番号、フラグ
をそれぞれ緩衝するためのストール・バツフア8
2,83とを包含する。自由ポインタ・ロジツク
も同様にして第1、第2の有効非レジスタスペシ
フアイヤの場合にコンプレツクススペシフアイヤ
の前にシヨート・リテラルが来るかどうかを示す
信号SL FIRSTを緩衝するストール・バツフア
84を包含する。この信号はコンパレータ85で
与えることができる。このコンパレータはコンプ
レツクススペシフアイヤのスペシフアイヤ数をシ
ヨート・リテラルスペシフアイヤのスペシフアイ
ヤ数と比較する。緩衝されたSL FIRSTは第1
マルチプレクサ86へのセレクトとして使用さ
れ、また、ANDゲート88内の緩衝されたSL
FILID信号による修飾の後に第2マルチプレクサ
87へのセレクトとして使用され、コンプレツク
ススペシフアイヤ、シヨート・リテラルスペシフ
アイヤのサイズから第1、第2のスペシフアイヤ
のサイズを決定する。コンプレツクススペシフア
イヤ、シヨート・リテラルスペシフアイヤのサイ
ズはオプコード、コンプレツクススペシフアイ
ヤ、シヨート・リテラルスペシフアイヤのそれぞ
れのスペシフアイヤ番号に応答してデコーダ(図
示せず)から得られる。加算器89はソース・リ
スト内のエントリの全体的なサイズまたは数を計
算してコンプレツクスソース・オペランドおよび
拡張されたシヨート・リテラル・オペランドの両
方を格納する。 ソース・リスト内の有効非コンプレツクススペ
シフアイヤを格納するのに必要とされるエントリ
の数はマルチプレクサ90によつて選ばれる。マ
ルチプレクサ90のセレクト・ラインは第1、第
2のスペシフアイヤが有効データ・フラグおよび
第1、第2のソースのためのレジスタ・フラグか
らANDゲート91,92によつて検出されるな
どしてそれぞれ有効非レジスタスペシフアイヤで
あるかどうかを示す。 任意の有効非レジスタスペシフアイヤがソー
ス・リスト内に格納される場合にオーバーフロー
状態が発生するかどうかを決定するために、減算
器93が値EBOX LAST POINTERによつて
示されるようにキユーのヘツドの位置(次の
FREE POINTERの値を示す)を比較する。コ
ンパレータ94は割り当てるべきサイズが利用で
きるスロツト数を超えたときに潜在的なオーバー
フロー状態を検出する。コンパレータ94からの
信号はORゲート95内のQUEUE FULL信号と
組み合わされてソース・リストがいつぱいである
か、あるいは、ソース・ポインタ・キユーがいつ
ぱいであるかを示す信号を得る。 自由ポインタは非オーバラツピング式A、Bブ
ロツクによつて賦活される一対のラツチ96,9
7ならびに加算器98を含むアキユムレータ内に
現行のままに留められる。しかしながら、自由ポ
インタはソース・リストがいつぱいになつたと
き、あるいは、初期化サイクル中にはSIZE TO
ALLOCATEによつて増分させられない。OR
ゲート97およびマルチプレクサ98は自由ポイ
ンタがこれらの状態の下でその値を変えないとい
うことを保証する。たとえば、フラツシユ時、
INIT FPL信号が主張され、EBOX LAST
POINTER信号がFREE POINTER信号の値に
等しくセツトされる。EBOX LAST
POINTER信号は実行ユニツト内のカウンタ(図
示せず)によつて与えられる。 キユーが現行の有効非レジスタスペシフアイヤ
のためのソース・リスト内に充分なサイズを割り
当てるにはいつぱいでありすぎる場合には、転送
ユニツトがストールしなければならない。この場
合、有効フラグがゲート99によつて非主張値に
セツトされる。ゲート99も、INIT FRL信号
が主張されたときに初期化サイクルで非主張状態
にフラグをセツトする。有効フラグは出力ラツチ
100を通してソース・ポインタ・キユーに転送
される。同様にして、マルチプレクサ組69から
の2つのソース・ポインタと宛先ポインタが出力
ラツチ101を通して転送される。 次に第11図を参照して、ここには全体的に6
1で拡張ユニツトが概略的に示してある。拡張ユ
ニツトは復号させられたシヨート・リテラルを命
令デコーダから取り出し、ソース・リストの36ビ
ツト・エントリに挿入するために拡張する。実際
に行なわれる拡張スペシフアイヤのデータタイプ
の依存する。特に、マルチプレクサ120はスペ
シフアイヤのデータタイプに依存して整数、F・
D不動点、G不動点あるいはH不動フオーマツト
のいずれかを選ぶ。少なくとも第1のデータ・ワ
ードに対して、フオーマツトはシヨート・リテラ
ル・フオーマツタとして知られる組み合わせロジ
ツク121によつて与えられる。付加的な32ビツ
ト・データ・ワードを必要とするデータタイプに
対しては、付加的なワードがゼロで満たされる。 ストール時、マルチプレクサ120は先の拡張
を選び、それを維持する。このマルチプレクサ1
20のセレクト・ラインはストール中にストー
ル・バツフア123内に保持されるシヨート・リ
テラル・データタイプに応答して拡張セレクト・
デコーダ122によつて与えられる。拡張セレク
ト・デコーダは拡張の第1あるいは他の任意のロ
ングワードが現在発生されつつあるかどうかにも
応答する。この状態は当該ロングワードの数がゼ
ロと異なつているかどうかを決定するゲート12
4によつて与えられる。拡張に必要とされるロン
グワードの数はシヨート・リテラルのデータタイ
プに応答してデコーダ125によつて与えられ
る。ロングワードの必要数は一対のラツチ12
6,127および減分ロジツク128を含むアキ
ユムレータによつてカウントダウンされる。この
アキユムレータはそれを最初にセツトするか、そ
れをクリアするか、あるいは、その値をストール
の場合に保持するかマルチプレクサ129を包含
する。アキユムレータの次のステージが組み合わ
せロジツク130によつて選ばれる。ゲート13
1はアキユムレータの次のステージで示すように
次のサイクル中に拡張が継続しなければならない
ときにいつでもリテラル・ストール信号を発生す
る。換言すれば、ロングワードの当該数がゼロに
ならないかぎりストール信号が主張される。 次に第12図を参照して、ここには汎用(GP)
ユニツトが概略的に示してある。この汎用ユニツ
トはインデツクス(X)、ベース(Y)、変位(D)のスペシ
フアイヤによつて特定されるメモリ・アドレスの
演算のための2つのサイクルを必要とする。第1
のサイクルにおいて、ベース・レジスタの内容は
変位に加えられる。第2のサイクルでは、インデ
ツクス・レジスタの内容が索引付け動作がバイ
ト・ワード、ロングワード、カツプワード、コン
テキストのうちのいずれかなのに依存して0、
1、2または3ビツト位置分だけシフトされ、先
行の結果に加えられる。このシフト動作はシフ
ト・マルチプレクサ141によつて行なわれる。
ベース・レジスタの値はマルチプレクサ142に
よつて選ばれ、インデツクス・レジスタの値はマ
ルチプレクサ143によつて選ばれる。第1サイ
クルでは、選ばれたベース・レジスタの内容は別
のマルチプレクサ144を通して中間パイプライ
ンまたはストール・レジスタ145に送られ、同
様にして、変位または別のマルチプレクサ146
によつて選ばれ、0位置のシフト後でシフト・マ
ルチプレクサ141を通して転送された後、第2
の中間パイプラインまたはストール・レジスタ1
47に受け取られる。ベース、変位は次に加算器
148で加算され、その合計がマルチプレクサ1
44を通してパイプライン・レジスタ145に戻
される。このとき、マルチプレクサ146は変位
の代わりにインデツクス・レジスタ値を選び、シ
フタ141は索引付け動作のコンテキストに従つ
てインデツクス・レジスタの値にシフトし、この
シフトされた値は第2中間パイプライン・レジス
タ147に格納される。演算サイクル中、加算器
148は2つのパイプライン・レジスタ145,
147の内容を加算する。 GPユニツトは組み合わせロジツク150と、
4つの個別の状態を定める2ビツト状態レジスタ
151とを包含する逐次代態機によつて制御され
る。命令を処理するオペランドの完了後に状態は
ゼロに戻る。命令デコーダから許可信号が与えら
れ、ストール状態が存在していないときには、
GPユニツトはメモリ・アクセス・リクエストを
発行し、オペランドの命令処理完了までその状態
を通して循環することができる。状態レジスタ1
51の計数動作およびGPユニツトによるデータ
のリクエストまたは輸送を禁じると考えられる許
可、ストール信号とは別に、組み合わせロジツク
150は9入力ビツトを有する状態テーブルで構
成され得る。この状態テーブルはスペシフアイヤ
モードの組み合わせを定める4ビツトと、スペシ
フアイヤアクセス形式を特定する3ビツトと、状
態レジスタ151からの2ビツトとからなる。ス
ペシフアイヤモード(D4、D3、D2、D1)の組み
合わせを定める4ビツトは5つのビツト(PC、
M4、M3、M2、M1)から得られる。これらの5
つのビツトは、 D4=PC、D3=NOT(M4)、D2=(M4、AND
M3)OR M2、D1=M1 に従つてスペシフアイヤモードを定める。したが
つて、4つのビツト(D4、D3、D2、D1)は次の
表に示されるようにスペシフアイヤモードに関
係する。 【表】 このインプリメンテーシヨンの場合、好ましい
組み合わせロジツク150は表に示す次の状態
シーケンスによつて定められる。 【表】 ==========+ +==========+
+==========+ +========
==+ +===========+
D(Rn) | | R|
| | SP| | | SR|
| | R|P| |
D(PC) | | R|
| | SP| | | SR|
| | R|P| |
−−−−−−−−−−+ +−−−−−−−−−−+
+−−−−−−−−−−+ +−−−−−−−−
−−+ +−−−−−−−−−−−+
D(Rn)〓Rx〓 | | C|R|
| | C|SP| | | C|SR|
| | C|R|P| |
D(PC)〓Rx〓 | | C|R|
| | C|SP| | | C|SR|
| | C|R|P| |
==========+ +==========+
+==========+ +========
==+ +===========+
@D(Rn) | | R|−|−|R|
| | R|−|−|SP| | | R|−|−
|SR| | | R|−|−|RP| |
@D(PC) | | R|−|−|R|
| | R|−|−|SP| | | R|−|−
|SR| | | R|−|−|RP| |
−−−−−−−−−−+ +−−−−−−−−−−+
+−−−−−−−−−−+ +−−−−−−−−
−−+ +−−−−−−−−−−−+
@D(Rn)〓Rx〓 | | R|−|−|R|
| | R|−|−|SP| | | R|−|
−|SR| | | R|−|−|R|P| |
@D(PC)〓Rx〓 | | R|−|−|R|
| | R|−|−|SP| | | R|−|
−|SR| | | R|−|−|R|P| |
==========+ +==========+
+==========+ +========
==+ +===========+
【表】 ここで、上記の表から、組み合わせロジツク
150によつて選ばれた動作のシーケンスがスペ
シフアイヤモードとスペシフアイヤアクセス形式
に依存することに注目されたい。テーブル内の任
意のスペシフアイヤモードと任意のスペシフアイ
ヤアクセス形式の交点については、3以下の動作
のシーケンスがあるが、2までの保証されたスト
ール・サイクルもあり得ることがわかる。したが
つて、状態レジスタ151の状態ゼロは機械のア
イドル状態を定め得る。状態1、2、3は機械が
実際に或る動作を実施している3つの状態シーケ
ンスを定め得る。 次に第13図を参照して、これは内部の種々の
構成要素間の制御信号の流れを示す実行ユニツト
のブロツク図である。たとえば、ここで、実行を
初期化してアイドル状態に置いたと仮定する。こ
のアイドル状態でも、実行ユニツトはソース・ポ
インタ・キユーのヘツドで有効データ・フラグに
よつて示すように有効ソース・オペランドを検索
している。マイクロコードがソース・ポインタ・
リムーバル・ロジツク161がキユーのヘツドで
ソース・ポインタをソース妥当性検査ロジツク1
63に送るのを可能とする。ソース・ポインタが
有効非レジスタ・ソーススペシフアイヤの存在を
示す場合、ソース妥当性検査ロジツク163はソ
ース・ポインタによつて指示されるソース・リス
ト内のエントリと組み合わせられたそれぞれの有
効ビツトの状態をチエツクする。有効ビツトが主
張されている場合には、ソース妥当性検査ロジツ
ク163はマイクロコード実行ユニツト26の制
御下にある発行ユニツト25へのSRC OK信号
を主張する。 発行ユニツト25がフオーク・キユーのヘツド
に次のフオークがあると決定したときには、マイ
クロコード実行ユニツト26に新しいフオーク信
号を発行する。それによつて、マイクロコード実
行ユニツトはそのフオーク・アドレスでマイクロ
コード・ワードを戻すことによつて応答する。た
とえば、第1ワードは発行ユニツトに、有効非レ
ジスタスペシフアイヤの場合にはソース・リスト
から、あるいは、特定された汎用レジスタから有
効化されたソース・データを転送するように命令
する。たとえば、マイクロコード・ワードは多機
能ユニツトのうちの特定のものを指定してソー
ス・データを受け取る。多機能ユニツトは、たと
えば、整数ユニツト164、浮動小数点ユニツト
165、乗算ユニツト166および除算ユニツト
167を包含する。 たとえば、複数ユニツトは32ビツト演算ロジツ
ク・ユニツト、64ビツト・バレル・シフタおよび
1サイクル毎にメモリ・アドレスを発生するアド
レス発生ユニツトを有し、したがつて、毎サイク
ルあたり1の率でマイクロコード制御によつてム
ーブロングやアツドロングのような単純な命令を
実行する。CALLS、MOVCのようなコンプレツ
クス命令は整数ユニツトのデータ経路の通過を反
復させることによつて行なわれる。これらの命令
について、マイクロコードは実行ユニツト内のデ
ータ経路よりソースへのアクセスを制御する。多
機能ユニツトの使用により、整数命令のピーク流
を追従するにはただ1つの整数ユニツトで充分で
ある。たとえば、コンプレツクス命令はストリン
グ処理やスタツク・フレームに固有のメモリ反応
により同時に役立たない。マイクロコードがこれ
らの命令を実行している間、他の機能ユニツトは
アイドル状態にある。 浮動小数点ユニツト165はADD、SUB、
CMP、CVTおよびF、G、D浮動フオーマツト
のためのMOVのような浮動小数点動作を実行す
る。パイプライン化されているので、発行ユニツ
トが命令を発行し、それらを回収するのと同じほ
ど迅速に命令を受け取ることができる。ソース・
オペランドが32ビツト片になつているが、内部に
は64ビツトのデータ経路を有する。浮動小数点ユ
ニツトはFossum等の米国特許出願「Pipelined
Floating Point Adder For Digital Computer」
に詳しく記載されている。 乗算器166は整数、浮動小数点両方の乗算を
実施するパイプライン化乗算器であると好まし
い。 除算器167は整数、浮動小数点両方の除算を
行ない、充分に迅速であるためロジツクを退避す
るようにパイプライン化されていない。たとえ
ば、除算器はD、G浮動小数点フオーマツトにつ
いても12サイクルで除算を行なう。 命令が発行された場合、動作が結果を回収する
ための宛先を要求すると考えられる。さらに、結
果についての宛先ポインタがソーススペシフアイ
ヤが有効化された後のある時点で宛先ポインタ・
キユー23eに挿入される可能性もある。宛先が
予測される場合には、マイクロコードは宛先ポイ
ンタ・リムーバル・ロジツク171が宛先ポイン
タ・キユーのヘツドから宛先ポインタを取り出
し、それを結果を与えることになつている多機能
ユニツト22の或る特定のものを識別する情報と
共に結果キユー172に挿入することを可能とす
る。 また、発行ユニツトが命令内で特定された明示
宛先を持たない命令を発行する可能性もある。た
とえば、この命令は実行一時レジスタ(第4図の
43)の使用を必要とする可能性がある。この場
合、その命令についての宛先のあるものあるいは
おそらくは全部がマイクロコードが実行ユニツト
26に知らされ得る。したがつて、この場合、発
行ユニツト25は命令の実行のごく初めで結果キ
ユーをロードすることができる。 上述したように、実行ユニツトは命令が命令ス
トリームの形で現われると同じシーケンスで命令
の結果を回収するように設計されている。同じこ
とが、命令ストリームでマクロ命令を構成してい
るマイクロコードによる中間動作にもあてはま
る。したがつて、メモリ書き込み結果が書き込み
キユーで特定されたメモリ・アドレスで回収され
得るという利点に加えて、本発明では、結果キユ
ー172を使用して多機能ユニツトが実際に処理
を完了したときのトラツクを維持する負担を発行
ユニツトから除くこともできる。代わりに、結果
を回収するタスクは別体の回収ユニツト173に
任され得る。 回収ユニツト173は結果キユーのヘツドで宛
先情報をモニタしており、特に、結果キユーのヘ
ツドでエントリ内の機能ユニツト仕様によつて示
される特定の機能ユニツトから選ばれた結果レデ
イ信号をモニタしている。この結果レデイ信号を
受け取つたとき、回収ユニツトは結果キユーのそ
のヘツド・エントリ内の情報によつて示される様
式で結果を回収することができる。 結果について通常考えられている実際の場所に
加えて、結果ユニツトは結果に組み合わされた、
アンダーフローまたはオーバーフローのような状
態をコードをチエツクすることができる。このチ
エツクは状態コード、セツト・トラツプ・イネー
ブル・フラグに依存し、マイクロコード実行ユニ
ツトにトラツプを取り扱わせる。メモリ宛先につ
いては、結果ユニツトは結果をメモリ・ユニツト
に送るのを保証する。たとえば、多数の32ビツ
ト・ロングワードを含む結果の場合、回収ユニツ
トはレジスタ174内で或るカウント数を維持
し、結果全体が結果キユーのヘツドで任意の次の
結果を回収することになる前に回収されることを
保証する。また、回収ユニツトが結果を回収する
際になんらかの困難に遭遇した場合には、たとえ
ば、発行ユニツトに組み合わせたストール・ロジ
ツク175をしてストール、トラツプあるいは例
外を実施させて問題を解決することができるよう
にする。 次に第14図を参照して、ここには実行ユニツ
トの好ましいデータ経路のブロツク図が示してあ
る。各機能ユニツトは回収ユニツトで終る結果を
回収するためのデータ経路を有する。結果キユー
のヘツドで結果キユー・エントリで示される機能
ユニツトからの結果は回収マルチプレクサ185
で選ばれる「RETIRE RESULT」と呼ぶ。
RETIRE RESULTは全体的に180で示され
る中央データ宛先ネツトワークに送られる。回収
ユニツト27は、フラツシユのために、命令ユニ
ツト12におけるレジスタ・フアイルのコピー
へ、そして、命令ユニツトのプログラム・カウン
タ(第1図の17)に結果を送るための一対のデ
ータ経路も有する。回収ユニツトはメモリ・アク
セス・ユニツト11へ直結するデータ経路も有す
る。しかしながら、実行ユニツトがメモリ・アク
セス・ユニツト11からデータを回収したとき、
データは常にメモリ・アクセス・ユニツトからレ
ジスタ・フアイル40内の16個の一時記憶場所の
うちの1つあるいは16個のソース・リスト場所の
うちの1つに転送される。これはデータがメモ
リ・アクセス・ユニツト11と実行ユニツト13
の間のバス182から利用できるようになるとす
ぐに実行ユニツトによつて直ちに使用される場合
にあてはまる。換言すれば、バイパス・バスがバ
ス182からデータを得るようになつた場合で
も、データはレジスタ・フアイル40に書き込ま
れるのである。実行ユニツトがメモリ読み出しを
行なうとき、それはまずそれぞれの「有効デー
タ・ビツト」をクリアすることによつてレジス
タ・フアイル40内の一時記憶場所の或る特定の
記憶場所を無効化し、次いで、メモリ・アクセ
ス・ユニツトにリクエストして或る特定のアドレ
スからデータを取り出し、それを特定された一時
記憶場所に転送し、最後に、それぞれの有効デー
タ・ビツトがセツトされるまで待機する。メモ
リ・アクセス・ユニツトは或る特定された一時記
憶場所に取り出されたデータを転送するときにそ
れぞれの有効データ・ビツト」を書き込んでセツ
トする。「システム・リセツト」はメモリ一時レ
ジスタ内の「有効データ・ビツト」のすべてをク
リアすなわち無効化する。 次に第15図を参照して、ここには或る種の共
通の命令を実行するための種々の機能ユニツトの
状態についてのタイミング図が示してある。これ
らの命令が完了するのに種々のサイクルを必要と
する事実、また、異なつた回数の回収サイクルを
必要とする事実は、結果キユーと回収ユニツトの
仕様で結果を回収するためであつたり、回収しつ
つある間待機しなければならないというかなりの
負担からマイクロコード、発行ロジツクを解放す
ることができることを示す。この利点はメモリ・
ユニツトへのアクセスのためのコンテンシヨンに
より機能ユニツトによる正規の処理の中断を考え
たときにも意味がある。 第15図は種々機能ユニツトの動作速度がそれ
ぞれの動作の同時発生の頻度にまつたくよく一致
することも示している。これは、1つのユニツト
が回収していない場合に、他のユニツトストール
され、それらの結果が出力バツフアで待機するた
め、パイプライン化した機能ユニツトの場合には
中間結果が中間パイプライン・レジスタで待機す
るために、重要な設計上の考慮である。このよう
なシステムはいかなる機能ユニツトも他の機能ユ
ニツトをストールしそうもない場合に非常によく
適している。 次いで第16図を参照して、ここには実行ユニ
ツトがソース・オペランドおよびリクエストを機
能ユニツトに発行する制御手順を概略的に示すフ
ローチヤートが示してある。ステツプ201で、マ
イクロコード実行ユニツトは新しい動作が要求さ
れているかどうかを検出する。要求されていない
場合には、現行サイクルでは機能ユニツトも結果
キユーも使用不要である。さもなければ、ステツ
プ202で、マイクロコード実行ユニツトは新しい
動作を実施するための機能ユニツトがビジーであ
り、したがつて、新しいソース・オペランドを受
け入れることができないかどうかをチエツクす
る。 機能ユニツトがビジーである場合、リクエスト
の処理は現行サイクルの間に終了する。さもなけ
れば、ステツプ203で、マイクロコード実行ユニ
ツトはソース・オペランドを入手して要求された
機能ユニツトへ転送できるかどうかをテストす
る。もしそうでなければ、リクエストのサービス
動作は現行サイクルで完了する。あるいは、ステ
ツプ204で、実行ユニツトは宛先が既知であるか
どうかを決定する。もし既知でなければ、処理は
現行サイクルで終了する。あるいは、ステツプ
205において、マイクロコード実行ユニツトは新
しいエントリを結果キユーに挿入し、この結果キ
ユーは要求された機能ユニツトを識別し、その機
能ユニツトからの結果を回収するのに必要とされ
る情報をすべて含む。ステツプ205が完了した後、
マイクロコード実行ユニツトはリクエストされた
動作の処理にも結果の回収にも関係する必要がな
い。そのすべては回収ユニツトによつてモニタさ
れ得、回収ユニツトがマイクロコード実行ユニツ
トの援助を必要とする問題を検出した場合には、
それは問題の制御をマイクロコード実行ユニツト
に転送すべく適切なストール、トラツプあるいは
例外を示し得る。 次に第17図を参照して、ここには回収ユニツ
トが結果を回収し、結果キユーをサービス動作さ
せる制御手順のフローチヤートが示してある。第
1ステツプ211において、回収ユニツトは結果キ
ユーが空かどうかをチエツクする。もし空であれ
ば、結果キユーのサービス動作は現行サイクルで
完了する。あるいは、ステツプ212では、回収ユ
ニツトは或る結果がキユーのヘツドでリクエスト
のために利用できるかどうかをテストする。換言
すれば、結果ユニツトはそのリクエストに割り当
てられた機能ユニツトを識別するエントリ内の情
報を得、その機能ユニツトからの結果レデイ信号
をテストする。もしこの結果レデイ信号が主張さ
れていない場合には、回収ユニツトによるキユー
は現行サイクルで終了する。あるいは、ステツプ
213において、回収ユニツトは結果キユーのヘツ
ドでエントリ内の宛先情報を検索し、その宛先が
利用できるかどうかをチエツクする。もしそうで
なければ、回収ユニツトによる結果キユーのサー
ビス動作は現行サイクルで終了する。あるいは、
ステツプ214では、回収ユニツトは結果キユーの
ヘツドにおけるエントリ内の情報に従つて結果の
回収を開始することができる。結果がひとたび回
収されたならば、ステツプ215において、回収ユ
ニツトは実行ユニツトの状態を変えて結果キユー
のヘツドでエントリを取り出すことによつてその
事実を示すことができる。エントリがヘツドから
取り出された後、その結果の回収は完了する。 次に第18図を参照して、ここには回収キユー
内のエントリのための好ましいフオーマツトを示
す。たとえば、このエントリは27ビツトの情報を
含む。最初の3つのビツト<26:24>は回収すべ
き次の結果を受け取ることになつている機能ユニ
ツトのうちの或る特定の1つを選ぶRETIRE
TAGを特定する。 ビツト23は、たとえば、選定された状態コード
をセツトするだけの代わりに結果をどこかに書き
込むと仮定されるかどうかを示すフラグであり、
このフラグは結果使用済み信号(第12図参照)
によつて認識され、したがつて、機能ユニツトは
新しい組のオペランドから結果を自由に発生させ
ることができる。 ビツト22は結果をメモリに書き込むことになつ
ているかどうかを示すメモリ宛先フラグである。
結果キユー内のエントリがメモリ・アドレスを指
示する必要はない。なぜならば、そのメモリ・ア
レドスは通常の状況の下では既に物理的メモリ・
アドレスに変換され、結果を待つているからであ
る。 ビツト<21:20>は結果コンテキストがバイ
ト、ワード、ロングワード、かつどワードのどれ
であるかを示すコンテキスト・フイールドCTX
を示す。たとえば、カツドワードの場合、このカ
ツドワードを32ビツト・データ・ラインを通して
回収するのには2つのサイクルが必要である。し
たがつて、2つのサイクルが回収に要求される。
バイト−ワード・コンテキストは32ビツト・レジ
スタあるいは記憶場所にバイトあるいはワードの
書き込みを行なうために使用され得る。 4ビツト・フイールドUCCK<19:16>は実行
ユニツトの状態コード・ビツトをどのようにして
更新すべきかを示す一組のフラグである。たとえ
ば、これらのフラグはプロセツサ状況ワードの負
ビツト、ゼロビツト、オーバーフロー・ビツトな
らびにキヤリ・ビツトを使用可能あるいは使用禁
止とする。 4ビツト・フイールドUTRAP EN<15:12
>はそれぞれのトラツプ状態を使用可能あるいは
使用禁止とする4つ1組のトラツプ・イネーブリ
ング・ビツトである。 ビツト11はマクロ命令の終りをマークする
ULASTである。 ビツト10はマクロ・ブランチの終りをマークす
るフラグUMACROBである。 ビツト9は、使用可能となつたときに、引き続
く回収動作を完了する前に成功したメモリ書き込
みの肯定応答を待つことを回収ユニツトに要求す
るフラグUMEM WAITである。 最後に、ビツト<8:0>には、結果を回収す
るための実行ユニツト内の選定場所DEST SEL
を示す9つのビツトがある。これらの場所は、た
とえば、汎用レジスタか、あるいは、結果を回収
できる実行レジスタ内の任意の他のレジスタであ
る。
【図面の簡単な説明】
第1図は本発明を使用している中央パイプライ
ン化処理ユニツトを有するデイジタル・コンピユ
ータ・システムのブロツク図である。第2図は命
令を処理するのに実行される種々のステツプを示
す図であり、これらのステツプが第1図に示すパ
イプライン化された命令プロセツサによつて種々
の命令に対して並列に実行され得ることを示す図
である。第3図は第1図の命令プロセツサのブロ
ツク図であり、命令ユニツトと実行ユニツトの間
に挿入されたキユーを一層詳しく示す図である。
第4図は第1図の命令デコーダのブロツク図であ
り、ソース・リストおよび命令ユニツト、メモ
リ・アクセス・ユニツト、実行ユニツトのうちデ
ータを交換するのに使用される他のレジスタと組
み合わされてデータ経路をより詳しく示す図であ
る。第5図は命令ユニツトを通つてキユーに通じ
るデータ経路を示すブロツク図である。第6図は
命令ユニツトのオペランド処理ユニツト内の汎用
ユニツトに命令デコーダからGPバスを通つて転
送されるオペランドスペシフアイヤデータのフオ
ーマツトを示す図である。第7図は命令デコーダ
からオペランド処理ユニツト内の拡張ユニツトへ
SLバスを通して送られるシヨート・リテラルス
ペシフアイヤデータのフオーマツトを示す図であ
る。第8図は命令デコーダからオペランド処理ユ
ニツト内の転送ユニツトへTRバスを通して送ら
れるソース、宛先スペシフアイヤデータのフオー
マツトを示す図である。第9図は転送ユニツトの
概略図である。第10図は拡張ユニツトの概略図
である。第11図はオペランド処理ユニツトの汎
用ユニツトの概略図である。第12図は実行ユニ
ツトのブロツク図であり、命令を実行し、結果を
回収するための制御流を示す図である。第13図
は実行ユニツトのブロツク図であり、命令の実行
中や結果の回収中に使用するデータ経路を示す図
である。第14図は種々のデータタイプのソー
ス・オペランドについてそれぞれ演算あるいは論
理動作を実施しているときのそれぞれの機能ユニ
ツトの状態を示すタイミング図である。第15図
は実行ユニツト内の命令発行ユニツトが特定され
た機能ユニツトへソース・オペランドを発行し、
実行ユニツト内の結果キユーにおけるそれぞれの
結果についての発行状態および宛先を記録する制
御手順のフローチヤートである。第16図は回収
ユニツトが回収キユーのヘツドでエントリによつ
て特定された機能ユニツトの結果を得、これらの
結果をそのエントリによつて特定された宛先で回
収し、そのエントリを回収キユーのヘツドから取
り出す制御手順のフローチヤートである。第17
図は回収キユーのエントリに格納するのが好まし
い情報を示す図である。第18図は結果キユーの
エントリに格納するのが好ましい情報を示す図で
ある。 図面において、10……主メモリ、11……メ
モリ−CPUインターフエース・ユニツト、12
……命令ユニツト、13……実行ユニツト、14
……主キヤツシユ、15……変換バツフア、16
……入出力バス、17……プログラム・カウン
タ、18……命令キヤツシユ、19……命令バツ
フア、20……命令デコーダ、21……オペラン
ド処理ユニツト、23……キユー・ユニツト、2
8……分岐予測ユニツト、30,32……入力バ
ス、40……レジスタ・フアイル、41……
GPR、42……メモリ一時レジスタ、43……
実行一時レジスタ、46,46……マルチプレク
サ、47,48,49,50,51,68,70
……転送ゲート、65,66……ソース・バス、
67……宛先バス、93……減算器、94……コ
ンパレータ、95……ORゲート、96,97…
…ラツチ、99……ゲート、100,101……
出力ラツチ、120……マルチプレクサ、122
……拡張セレクト・デコーダ、123……ストー
ル・バツフア、126,127……ラツチ、12
8……減分ロジツク、130……組み合わせロジ
ツク、141……シフト・マルチプレクサ、14
2,143……マルチプレクサ、145,147
……ストール・レジスタ、148……加算器、1
50……組み合わせロジツク、151……状態レ
ジスタ、161……ソース・ポインタ・リムーバ
ル・ロジツク、163……ソース有効化ロジツ
ク、166……マルチプレクサ、167……除算
器、173……回収ユニツト、401……ORゲ
ート、402,403……デマルチプレクサ、4
04……インサート・ポインタ・レジスタ、40
6,407……マルチプレクサ、408……リム
ーブ・ポインタ・レジスタ、409……加算器、
420……レジスタ。

Claims (1)

  1. 【特許請求の範囲】 1 命令を取り出し、命令を復号し、ソース・オ
    ペランドおよび宛先オペランド・アドレスを生成
    し、オペランドを取り出し、命令を実行し、実行
    した命令の結果を回収するパイプライン化したユ
    ニツトを有するデイジタル・コンピユータにおい
    てオプコード、オペランドスペシフアイヤを含む
    多重命令を前処理し、実行する方法において、各
    命令内のオプコードを復号して命令実行ユニツト
    のためのマイクロコード・デイスパツチ・アドレ
    スを識別する「フオーク・データ」を決定する段
    階と、多重命令のための前記フオーク・データを
    フオーク・データ・キユーに格納する段階と、各
    命令内のオプコード、オペランドを復号してそれ
    ぞれのオペランドの記憶場所を識別するソース・
    ポインタおよび宛先ポインタを決定する段階と、
    多重命令のための前記ソース・ポインタをソー
    ス・ポインタ・キユーに格納する段階と、多重命
    令のための前記宛先・ポインタ・キユーに格納す
    る段階と、前記ソース・ポインタによつて識別さ
    れた記憶場所からソース・オペランドを取り出す
    段階と、取り出したソース・オペランドを、ソー
    ス・オペランド・キユーに格納する段階とを包含
    することを特徴とする方法。 2 請求項1記載の方法において、前記デイジタ
    ル・コンピユータがメモリを包含し、前記ソー
    ス・ポインタならびに前記宛先ポインタによつて
    識別された記憶場所の或るものが前記メモリにお
    ける記憶場所であることを特徴とする方法。 3 請求項1記載の方法において、前記ソース・
    オペランド・キユーからのソース・オペランドで
    各命令を実行する段階と、前記宛先ポインタによ
    つて識別された記憶場所宛先オペランドを取り出
    す段階と、実行した命令の結果をそれぞれの宛先
    オペランドによつて識別された宛先に回収する段
    階とを包含することを特徴とする方法。 4 請求項1記載の方法において、命令を実行す
    る前記ユニツトが規定の動作の実行専用の複数の
    個所の機能ユニツトを包含し、前記フオーク・デ
    ータが各命令を実行するのに用いられることにな
    つている機能ユニツトを識別することを特徴とす
    る方法。 5 請求項1記載の方法において、前記デイジタ
    ル・コンピユータがそれぞれの命令に対するプロ
    グラム・カウントを発生するパイプライン化した
    プログラム計数ユニツトを包含し、さらに、プロ
    グラム・カウント・キユーに前記プログラム・カ
    ウントを格納する段階を包含することを特徴とす
    る方法。
JP2010443A 1989-02-03 1990-01-19 ソース・リスト、ポインタ・キューおよび結果キュー Granted JPH02234229A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US306843 1989-02-03
US07/306,843 US5109495A (en) 1989-02-03 1989-02-03 Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor

Publications (2)

Publication Number Publication Date
JPH02234229A JPH02234229A (ja) 1990-09-17
JPH0567970B2 true JPH0567970B2 (ja) 1993-09-28

Family

ID=23187116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010443A Granted JPH02234229A (ja) 1989-02-03 1990-01-19 ソース・リスト、ポインタ・キューおよび結果キュー

Country Status (5)

Country Link
US (1) US5109495A (ja)
EP (1) EP0380859B1 (ja)
JP (1) JPH02234229A (ja)
AT (1) ATE161640T1 (ja)
DE (1) DE68928513T2 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293592A (en) * 1989-04-07 1994-03-08 Intel Corporatino Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
US5233702A (en) * 1989-08-07 1993-08-03 International Business Machines Corporation Cache miss facility with stored sequences for data fetching
EP0429780B1 (en) * 1989-11-29 1997-11-12 Kabushiki Kaisha Toshiba Computer system capable of connecting an expansion unit
EP0443876A3 (en) * 1990-02-23 1992-01-02 Kabushiki Kaisha Toshiba Computer system capable of connecting expansion unit
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
CA2045756C (en) * 1990-06-29 1996-08-20 Gregg Bouchard Combined queue for invalidates and return data in multiprocessor system
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp., Maynard, Mass. Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
US5305446A (en) * 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
US5515523A (en) * 1991-06-03 1996-05-07 Digital Equipment Corporation Method and apparatus for arbitrating conflicts by monitoring number of access requests per unit of time in multiport memory systems
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5490255A (en) * 1991-12-26 1996-02-06 Amdahl Corporation Expedited execution of pipelined command having self-ordering operand processing requirements
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
WO1993022722A1 (en) * 1992-05-01 1993-11-11 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US6240508B1 (en) * 1992-07-06 2001-05-29 Compaq Computer Corporation Decode and execution synchronized pipeline processing using decode generated memory read queue with stop entry to allow execution generated memory read
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
JP3372970B2 (ja) * 1992-09-02 2003-02-04 シャープ株式会社 自己同期型転送制御回路
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
EP1107111A3 (en) * 1992-12-31 2002-02-06 Seiko Epson Corporation System and method for register renaming
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5511174A (en) * 1993-03-31 1996-04-23 Vlsi Technology, Inc. Method for controlling the operation of a computer implemented apparatus to selectively execute instructions of different bit lengths
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
US5615402A (en) * 1993-10-18 1997-03-25 Cyrix Corporation Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
US5805913A (en) * 1993-11-30 1998-09-08 Texas Instruments Incorporated Arithmetic logic unit with conditional register source selection
US5625808A (en) * 1995-03-31 1997-04-29 International Business Machines Corporation Read only store as part of cache store for storing frequently used millicode instructions
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US6145038A (en) * 1997-10-31 2000-11-07 International Business Machines Corporation Method and system for early slave forwarding of strictly ordered bus operations
US6112270A (en) * 1997-10-31 2000-08-29 International Business Machines Corporation Method and system for high speed transferring of strictly ordered bus operations by reissuing bus operations in a multiprocessor system
US6405303B1 (en) * 1999-08-31 2002-06-11 Advanced Micro Devices, Inc. Massively parallel decoding and execution of variable-length instructions
US7376814B1 (en) * 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US6539470B1 (en) * 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US7055020B2 (en) * 2001-06-13 2006-05-30 Sun Microsystems, Inc. Flushable free register list having selected pointers moving in unison
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
JP3940707B2 (ja) * 2003-06-23 2007-07-04 桂子 溝尾 文章分析装置、及び文章分析プログラム
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US9082078B2 (en) * 2012-07-27 2015-07-14 The Intellisis Corporation Neural processing engine and architecture using the same
CN112395004A (zh) * 2019-08-14 2021-02-23 上海寒武纪信息科技有限公司 运算方法、系统及相关产品

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1443777A (en) * 1973-07-19 1976-07-28 Int Computers Ltd Data processing apparatus
US4395758A (en) * 1979-12-10 1983-07-26 Digital Equipment Corporation Accelerator processor for a data processing system
US4392200A (en) * 1980-01-28 1983-07-05 Digital Equipment Corporation Cached multiprocessor system with pipeline timing
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4509116A (en) * 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US4543626A (en) * 1982-12-06 1985-09-24 Digital Equipment Corporation Apparatus and method for controlling digital data processing system employing multiple processors
EP0150177A1 (en) * 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
EP0208181A1 (en) * 1985-06-28 1987-01-14 Hewlett-Packard Company Programme counter queue for a pipelined processor
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
JP2695157B2 (ja) * 1986-12-29 1997-12-24 松下電器産業株式会社 可変パイプラインプロセッサ
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor

Also Published As

Publication number Publication date
DE68928513D1 (de) 1998-02-05
US5109495A (en) 1992-04-28
EP0380859A3 (en) 1992-09-16
DE68928513T2 (de) 1998-06-10
EP0380859B1 (en) 1997-12-29
JPH02234229A (ja) 1990-09-17
ATE161640T1 (de) 1998-01-15
EP0380859A2 (en) 1990-08-08

Similar Documents

Publication Publication Date Title
EP0381471B1 (en) Method and apparatus for preprocessing multiple instructions in a pipeline processor
US5109495A (en) Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
EP0381469B1 (en) Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction
EP0380850B1 (en) Method and digital computer for preproccessing multiple instructions
EP0380847B1 (en) Method and data processing unit for decoding multiple specifiers in a variable length instruction architecture
JP3333196B2 (ja) トラップ処理方法
US4985825A (en) System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
EP0407911B1 (en) Parallel processing apparatus and parallel processing method
US6298423B1 (en) High performance load/store functional unit and data cache
EP0380849B1 (en) Method and data processing unit for preprocessing implied specifiers in a pipelined processor
JP2846406B2 (ja) 分岐処理方法及び分岐処理装置
EP0381444A2 (en) Branch prediction
JPH07334362A (ja) 複数の動作を同時に行なうためのプロセッサ、その中のスタック、およびスタック制御方法
JPH07295811A (ja) 可変サイズのオペランドを利用してオペレーションを実行するプロセッサ、ならびにそれにおけるデータ処理装置およびオペランドデータを処理する方法
JPH03116236A (ja) 例外処理方法及び例外処理装置
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
JP2002527798A (ja) ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム
JP3751402B2 (ja) データ精度モード表示器を備えたマルチパイプライン・マイクロプロセッサ
JP2001356905A (ja) スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法
IE901524A1 (en) Control of multiple function units with parallel operation¹in a microcoded execution unit
IE901516A1 (en) Decoding multiple specifiers in a variable length¹instruction architecture
IE901525A1 (en) Processing of memory access exceptions with pre-fetched¹instructions within the instruction pipeline of a memory¹system based digital computer
IE901519A1 (en) Multiple instruction preprocessing system with data¹dependency resolution
IE901518A1 (en) Pipeline processing of register and register modifying¹specifiers within the same instruction
IE901520A1 (en) Branch prediction