JPH02234229A - ソース・リスト、ポインタ・キューおよび結果キュー - Google Patents

ソース・リスト、ポインタ・キューおよび結果キュー

Info

Publication number
JPH02234229A
JPH02234229A JP2010443A JP1044390A JPH02234229A JP H02234229 A JPH02234229 A JP H02234229A JP 2010443 A JP2010443 A JP 2010443A JP 1044390 A JP1044390 A JP 1044390A JP H02234229 A JPH02234229 A JP H02234229A
Authority
JP
Japan
Prior art keywords
instruction
unit
source
queue
operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010443A
Other languages
English (en)
Other versions
JPH0567970B2 (ja
Inventor
William R Grundmann
ウィリアム アール グランドマン
David B Fite
ディヴィッド ビー ファイト
Tryggve Fossum
トリューグヴ フォッサム
Dwight P Manley
ドワイト ピー マンリー
Francis X Mckeen
フランシス エックス マッキーン
John E Murray
ジョン イー マーレイ
Ronald M Salett
ロナルド エム サレット
Eileen Samberg
アイリーン サンバーグ
Daniel P Stirling
ダニエル ピー スターリング
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

    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 本発明は全体的にはディジタル・コンピュータに関し、
もっと詳しく言えば、ディジタル・コンピュータにおい
て多重命令をその実行前に前処理する間のデータ依存状
態を解決するシステムに関する。本発明は、特に、可変
長複素数命令セット(C I S)アーキテクチャを用
いてパイプライン化ディジタル・コンピュータにおいて
多重命令の前処理に応用できる。
命令の前処理というのは多数の命令の実行速度を高める
ためにディジタル・コンピュータで使用される一般に昔
及している手段である。前処理作業は、普通、命令を記
憶するメモリと命令を実行する実行ユニットの間に挿設
された命令ユニットによって実施される。前処理作業と
しては、たとえば、連続して来る命令におけるオペラン
ドスペシファイヤによって識別されるオペランドを先取
りする作業があり、それによって、それぞれの命令を実
行ユニソトにロードしたときにオペランドを容易に利用
できる。命令ユニットが引き続いて来る命令について前
処理作業を実施している間、実行ユニットによって現行
命令が実行されており、それによって、任意所与の命令
シーケンスのためにかかる処理時間を全体的に減らすこ
とができる。
命令の前処理はCPU性能を改善するが、前処理作業と
命令実行との間のコンフリクトによって、特に、可変長
命令の場合に、実行の際に費やされる時間が多くの場合
前処理中に費やされる時間と異なるという事実により、
性能の向上に限界がある。
命令の前処理と無関係に可変長命令を実行するために、
1つの命令ユニットと1つの実行ユニットの間のデータ
・制御経路に一組のキューを備えた中央演算処理装置が
設けられる。これらのキューは命令を前処理した結果と
して命令ユニットによってロードされ、実行ユニットに
よって読み出されて命令が実行される。
好ましくは、これらのキューは「フォーク」キュー、ソ
ース・キュー、宛先キュー、プログラム・カウンタ・キ
ューを含む。フォーク・キューは命令ユニットによって
処理される各命令毎に制御情報の入力を行なう。この制
御情報は命令のためのオプコードに対応し、それはマイ
クロコード実行ユニットが命令を実行し始めるマイクロ
コード「フォーク」アドレスである。
ソース・キューは命令のためのソース・オペランドを特
定する。好ましくは、ソース・キューはソース・ポイン
タを記憶しており、オペランドそれ自体はそれがメモリ
から取り出されたオペランドであるかあるいは命令スト
リームからの直接のデータの場合に別個の「ソース・リ
スト」に含まれるか、もしくは、実行ユニット内の一組
の汎用レジスタの内容となる。好ましくは、ソース・キ
ューは1サイクル毎に2つのソース・ポインタと共にロ
ードされるとよく、ここでの「ソース・リスト」という
のは1サイクル毎にメモリからのソース・オペランドと
直接データのソース・オペランドの両方と共にロードさ
れ得るFIFOバツファである。
宛先キューは命令の宛先を特定する。宛先はメモリであ
っても、汎用レジスタであってもよい。
好ましくは、メモリ・アクセス・ユニット内の別個の「
書き込みキュー」がメモリ宛先のアドレスを保持し、宛
先キューが宛先がメモリ内にあることを示すレジスタ番
号あるいはフラグのいずれかを保持する. プログラム・カウンタ・キューは命令ユニットから実行
ユニットまで通った各命令毎のプログラム・カウンタの
出発値を含む。プログラム・カウンタの出発値は典型的
なctsc命令セット内のいくつかの種々の可変長命令
によって使用され、普通の様式で例外、割り込みを取り
扱うためにも使用される。
好ましくは、これらのキューは6つまでの命令に対する
制御情報、データを保持するのに充分な大きさを持つ。
したがって、キューは実行ユニットおよび命令ユニット
を他の各複雑なものからシールドし、そのいずれでも一
様でない処理速度を許すバソファを提供する。
本発明の他の目的ならびに利点は添付図面に関連した以
下の詳しい説明から明らかとなろう.本発明は種々の修
正、代替形態で可能であるが、その特殊な実施例を図面
に示し、以下に詳しく説明する.しかしながら、発明を
この特別な開示形態に限定するつもりはなく、本発明が
特許請求の範囲に定義したような発明の精神、範囲内で
あらゆる修正形態、均等形態ならびに変更形態を含むこ
とは了解されたい。
まず第1図を参照して、ここにはディジタル・コンピュ
ータ・システムの一部が示してあり、これは主メモリ1
0と、メモリCPUインターフェース・ユニット11と
、命令ユニットl2および実行ユニット13からなる少
なくとも1つのCPuとを包含する。ここで、主メモリ
lOを共有することによってシステムで余分なCPUを
使用できることは了解されたい。しかしながら、共有の
主メモリエ0を通じて効率良く同時に作動し、通信する
には4つまでのCPUが実用的である.データおよびこ
のデータを処理する情報は、共に、主メモリ10内にア
ドレス指定可能な記憶場所に格納される。1つの命令は
CPUによって実施しようとしている動作を符号化形態
で特定する1つの動作コード(オプコード)と、オペラ
ンドを位置指定する情報を与えるオペランドスペシファ
イヤとを含む。個々の命令の実行は多重小タスクに分解
される。これらのタスクはその目的に最適化された専用
の個別の独立した機能ユニットによって実施される. 各命令は最終的には異なった動作を実施するが、各命令
が分解される小タスクの多くはすべての命令に共通であ
る。一般的には、1つの命令の実行中に次のステップが
実施される。すなわち、命令取り出し、命令復号、オペ
ランド取り出し、実行、結果格納である.こうして、専
用のハードウェア・ステージを使用することによって、
これらのステップは1つのパイプライン化された作業で
オーバーラップでき、そ、れによって、全命令処理能力
を向上させる. パイプラインを通るデータ経路は各バイブライン・ステ
ージの結果を次のパイプライン・ステージに転送するた
めのそれぞれの一組のレジスタを含む.これらの転送レ
ジスタは共通のシステム・クロソクに応答して計時され
る.たとえば、一回目のクロック・サイクルでは、最初
の命令が命令取り出し専用のハードウェアによって取り
出される。二回目のクロック・サイクル中、取り出され
た命令は命令復号ハードウェアによって転送され、復号
されるが、同時に、次の命令が命令取り出しハードウェ
アによって取り出される。三回目のクロック・サイクル
で、各命令はパイプラインの次のステージに移され、新
しい命令が取り出される.こうして、バイブラインがい
っぱいになった後、クロソク・サイクルの終りで1つの
命令が完全に実行されることになる。
このプロセスは製造環境における組立てラインに類似し
ている.各作業員はその作業ステージを通る各製品につ
いての1種類の仕事を専ら実施するようになっている.
各仕事が実施されるにつれて、製品は完成に近づくこと
になる.最終ステージで、作業員が割り当てられた仕事
を実施する毎に、完成した製品は組立てラインを移動す
る。
第1図に示す特定のシステムでは、インターフェース・
ユニット11は主キャッシュ14を包含し、この主キャ
ッシュは平均的には命令、実行ユニット12、13が主
メモリ10のアクセス時間よりも速い速度でデータを処
理するのを可能とする.このキャッシュl4はデータ要
素の選んだ事前定義ブロックを記憶する手段と、命令ユ
ニット12から変換バッファ15を経てリクエストを受
け取って或る特定のデータ要素にアクセスする手段と、
キャッシュ内に記憶された或るブロック内にデータ要素
があるかどうかをチェソクする手段と、特定されたデー
タ要素を含むブロックについてのデータが格納されてい
ないときに主メモリ10からデータの特定されたブロッ
クを読み出し、キャッシュl4にこのデータ・ブロック
を格納するように作動する手段とを包含する。換言すれ
ば、キャッシュは主メモリに通じる「ウィンドウ」とな
るものであり、命令、実行ユニットで必要となりそうな
データを含む. 命令、実行ユニット12、13の必要とするデータ要素
がキャッシュ14内に見出されない場合には、データ要
素は主メモリlOから得られるが、このプロセスは、付
加的なデータを含むブロック全体が主メモリlOから得
られ、キャッシュl4に書き込まれる。時間・メモリス
ペースの局所性の原理により、命令、実行ユニットがデ
ータ要素を望む次のときには、このデータ要素が先にア
ドレス指定されたデータ要素を含むブロック内に見出さ
れる可能性は高い。その結果、キャッシュ14が命令、
実行ユニット12、l3の必要とするデータ要素を既に
含むという可能性が高い。一般に、キャッシュl4は主
メモリ10よりもかなり高い速度でアクセスされること
になっているので、主メモリはデータ処理システムの平
均性能を実質的に悪化させることなくキャッシュよりも
比較的遅いアクセス時間を持ち得る。したがって、主メ
モリ10は遅い安価なメモリ要素からなるものであって
もよい。
変換バッファ15は最も近い時点で用いられた仮想/物
理的アドレス変換を格納する高速連想メモリである.仮
想メモリ・システムでは、ただ1つの仮想アドレスに対
する参照は所望の情報が利用可能とされる前にいくつか
のメモリ参照を生じる可能性がある.しかしながら、変
換バッファ15が用いられる場合には、変換バンファ1
5内の「ヒット」を見出すだけに変換量は減らされる。
主メモリlOと主キャッシュ14には入出力バスl6が
接続してあってシステムに指令と入力データを伝送する
と共にシステムから出力データを受けとるようになって
いる. 命令ユニット12は、プログラム・カウンタl7と主キ
ャッシュl4から命令を取り出す命令キャッシュ18と
を包含する。プログラム・カウンタ17は主メモリ10
、キャソシュ14の物理的記憶場所よりむしろ仮想記憶
場所をアドレス指定すると好ましい.したがって、プロ
グラム・カウンタ17の仮想アドレスは命令が検索され
る前に主メモリlOの物理的アドレスに変換されなけれ
ばならない.したがって、プログラム・カウンタ17の
内容はインターフェース・ユニット11に転送され、そ
こで変化バンファ15がアドレス変換を実施する。命令
は変換されたアドレスを用いてキャッシュ14内の物理
的記憶場所から検索される。キャッシ工14は命令をデ
ータ・リターン・ラインを通して命令キャッシュ18に
送る。
キャッシュl4および変換バッファ15の構成および動
作は、Digitaj Equipment Corp
oration発行、The VAX−11の351〜
368頁(1 9 8 0)のLevy and Ec
khouse,Jr.著rcomputerProgr
amming and ArchitectureJの
第11章にさらに記載されている. 大部分の時間、プログラム・カウンタ17によって指定
されたアドレスに命令キャッシュが命令を予め格納し、
アドレス指定された命令は直ちに利用されて命令バッフ
ァ19に転送される.このバッファl9から、アドレス
指定済みの命令はオプコード、スペシファイヤの両方を
復号する命令デコーダ20に送られる.オペランド処理
ユニ・ノ} (OPU)2 1が特定されたオペランド
を取り出し、それらを実行ユニット13に送る.OPL
l2 1は仮想アドレスも生成する。特に、OPU2 
1はメモリ・ソース(読み出し)と宛先(書き込み)オ
ペランドのための仮想アドレスを発生する.少なくとも
メモリ読み出しオペランドの場合には、OPU2 1は
これらの仮想アドレスをインターフェース・ユニット1
1に送り、そこにおいて、物理的なアドレスに変換する
。キャッシュl4の物理的記憶場所が次にアクセスされ
てメモリ・ソース・オペランドのためのオペランドを取
り出す。
各命令において、最初のバイトはオプコードを含み、次
のバイトは復号すべきオペランドスペシファイヤとなる
。各スベシファイヤの第1バイトはそのスベシファイヤ
のアドレス指定モードを示している。このバイトは、通
常、半分に分解され、一方の半分はアドレス指定モード
を指定し、他方の半分はアドレス指定するのに用いられ
るべきレジスタを指定する。命令が可変長を有すると好
ましく、その場合、種々のタイプのスペシファイヤを同
じオプコードと共に用いることができる.これは198
0年12月23日に許されたStrecker等の米国
特許第4.241.397号に開示されている。
命令を処理する最初のステップは命令の「オプコード」
部分を復号することである。各命令の最初の部分はこの
命令で実施されようとしている動作を特定するオプコー
ドからなる。復号操作は命令デコーダ20においてテー
ブル・ルックアップ技術を用いて行なわれる.命令デコ
ーダはルックアップ・テーブルで命令を実行するための
マイクロコード出発アドレスを見出し、この出発アドレ
スを実行ユニット13に送る。その後、実行ユニットは
指示された出発アドレスで始まる予格納されたマイクロ
コードを実行することによって特定された動作を実施す
る。また、このデコーダはソース・オペランド、宛先オ
ペランドスペシファイヤがこの命令で生じるところを決
定し、これらのスペシファイヤをOPLJ2 1に送り
、命令の実行前に前処理を行うことができる. ルックアップ・テーブルはそれぞれ多重エントリを有す
る多重ブロックの列として構成されている。各エントリ
はそのブロックならびにエントリ・インデックスによっ
てアドレス指定され得る.オプコード・バイトはブロッ
クをアドレス指定し、実行ポイント・カウンタからのポ
インタ(命令内の現行スペシファイヤの位置を示す)が
ブロック内の或る特定のエントリを選ぶ.ルックアップ
・テーブルの出力はデータ・コンテキスト(バイト、ワ
ード等)、データタイプ(アドレス、整数等)およびア
クセス用モード(読み出し、書き込み、修飾等)を各ス
ベシファイヤに対して特定し、また、マイクロコード・
ディスパッチ・アドレスを実行ユニットに与える。
命令が復号された後、OPU2 1はオペランドスベシ
ファイヤを文法的に解剖し、それらの有効アドレスを演
算する。このプロセスでは、GPRを読み出し、おそら
くは、自動増分または自動減分を行なうことによってG
RP内容を修正する。
オペランドが次にこれらの有効アドレスから取り出され
、実行ユニソト13に送られ、この実行ユニット13が
命令を実行し、結果をその命令のための宛先ポインタに
よって識別される宛先に書き込む。
或る命令が実行ユニットに送られる毎に、命令ユニット
はマイクロコード・ディスパッチ・アドレスと一組のポ
インタを、(1)ソース・オペランドが見出され得る実
行ユニット・レジスタ・ファイルの記憶場所と(2)結
果を格納することにな゜っている記憶場所とに送る。実
行ユニット内では、一組のキュー23がマイクロコード
・ディスパッチ・アドレスを格納するフォーク・キュー
と、ソース・オペランド位置を格納するソース・ポイン
タ・キューと、宛先場所を格納する宛先ポインタ・キュ
ーとを含む.これらのキューの各々は多重命令のための
データを保持することのできるFIFOバッファである
. 実行ユニット13はソース・リスト24も含み、これは
GPHのコピーとソー“ス・オペランドのリストを含む
多ポート式レジスタ・ファイルである.こうして、ソー
ス・ポインタ・キュー内のエントリはレジスタ・オペラ
ンドのためのGPR位置を指すか、あるいは、メモリ、
リテラル・オペランドのためのソース・リストを指すこ
とになる。インターフェース・ユニットtiと命令ユニ
ット12は共にエントリをソース・リスト24に書き込
み、実行ユニット13は命令を実行する必要に応じてソ
ース・リストからオペランドを読み出す。
命令を実行するために、実行ユニットl3は命令発行ユ
ニット25、マイクロコード実行ユニット26、演算・
論理ユニット(ALU)22、回収ユニット27を包含
する. 本発明は、特に、パイプライン化したプロセッサにとっ
て有用である.上述したように、パイプライン化プロセ
ッサにおいて、プロセッサの命令取り出しハードウエア
が1つの命令を取り出しているときに、他のハードウエ
アが第2の命令の動作コードを復号し、第3の命令のオ
ペランドを取り出し、第4の命令を実行し、第5の命令
の処理済みのデータを記憶する.第2図は代表的な命令
のためのバイブラインを示している.たとえば、これは
次のようになる. ADDL3  RO、B  12  (Rl) 、R2
これはアドレス指定の変位モードを用いるロングワード
追加である. この命令のパイプライン化実行の第1のステージで、命
令のプログラム・カウント(PC)が発生させられる.
これは、通常、先の命令がらのプログラム・カウンタを
増分させるか、あるいは、、分岐命令のターゲット・ア
ドレスを用いるかすることによって達成される.PCは
次にパイプラインの第2ステージにおいて命令キャソシ
ュ18にアクセスするのに用いられる。
パイプラインの第3ステソブで、命令データが命令デコ
ーダ20で使用するためにあるいは命令バッファl9に
ロードするためにキャッシュl8から取り出される。命
令デコー゜ダ20が以下に一層詳しく説明するように一
回のサイクルでオプコードと3つのスペシファイヤを復
号する。Rl数がバイト変位と共に復号サイクルの終り
でO P U21に送られる。
ステージ4において、RO、R2ポインタがキュー・ユ
ニット23に送られる.また、オペランド・ユニット2
lが位置R1でGPRレジスタ・ファイルの内容を読み
出し、その値を特定された変位(12)に加え、こうし
て得たアドレスをアドレス発生ステージの終りでOP 
 READリクエストと一緒にインターフェース・ユニ
ットl1の変換バッファl5に送る.第2のオペランド
を受け取るためにソース・リストの反転位置に向うポイ
ンタがキュー・ユニット23に送られる。
OP  READリクエストが作用すると、メモリから
読み出された第2オペランドはソース・リストの反転位
置に転送される. ステージ5において、インターフェース・ユニッ}11
は実行のためにステージ4で発生させられたアドレスを
選ぶ.変換バッファ15を用いて、インターフェース・
ユニット11はアドレス変換ステージ中に仮想アドレス
を物理的アドレスに変換する.この物理的アドレスが次
に用いられてキャッシュ14をアドレス指定する。これ
はパイプラインのステージ6で読み出される。
パイプラインのステージ7において、命令がALU22
に対して発行され、ALUは2つのオペランドを加算し
、結果を回収ユニット27に送る。ステージ4の間、R
1、R2のためのレジスタ番号およびメモリ・データの
ためのソース・リスト位置を指すポインタが実行ユニッ
トに送られ、ポインタ・キューに格納された。次いで、
キャッシュ読み出しステージで、実行ユニットが始動し
てソース・リスト内の2つのソース・オペランドを探し
た。この特別の例においては、R. Oにレジスタ・デ
ータのみを見出しているが、このステージの終りで、メ
モリ・データが到達し、レジスタ・ファイルの失効した
読み出しと代えられる.こうして、両オペランドが命令
実行ステージで利用できる. パイプラインのステージ8において、結果データは回収
キューの次のエントリと対になる。またこのとき、分岐
決定が基礎を置く状態コードも利用できる。いくつかの
機能実行ユニソトが同時にビジーとなる可能性があるが
、一回のサイクルでは1つの命令しか回収されない。
図示のバイブラインの最後のステージ9では、データが
実行ユニットl3、命令ユニットl2の両方のレジスタ
・ファイルのGPR部分に書き込まれる。
パイプライン化プロセソサが状態分岐決定のアウトカム
を予測してバイブライン内のストールすなわち「ギャッ
プ」のインパクトを最小限に抑える機構を備えることが
望ましい。これはキュー23が多数の命令の中間結果を
記憶する可能性があるので第1図のパイプライン化プロ
セッサにとって特に重要である。ストールまたはギャッ
プが生じると、キューはブロセソサの処理能力を高める
際の有効度を失う。しかしながら、パイプラインの深さ
はハードウェアまたは実行時間が大きくなることによっ
て不正な予想の場合に命令シーケンスの「巻き戻し(u
nwiding) jのコストを高める原因となる。巻
き戻しは不正に予想された分岐に続く誤った経路におけ
る命令からの情報のパイプラインのフラソシングを生じ
させ、実行を正しい経路に沿って再方向付ける. 第1図に示すように、パイプライン・プロセッサの命令
ユニット12は分岐予測ユニット28を備えている。分
岐予測ユニット28の特定機能はプログラム・カウンタ
17が分岐命令をアドレス指定した後に採る値(PRE
DICTION PC)を決定あるいは選定することで
ある。この値または選定はバス29を通して分岐予測ユ
ニソト28からプログラム・カウンタ・ユニットl7へ
転送される。
分岐予測ユニット28は4つの主要入力信号に応答する
。命令デコーダ20が命令バソファ19から分岐オプコ
ードを受け取ったとき、分岐オプコード情報および分岐
オプコード・ストローブ信号(BSHOP)が人力バス
30を経て分岐予測ユニットに転送される。同時に、分
岐命令のアドレス<DECQOE PC)がプログラム
・カウンタ・ユニソト17から人力バス3lに送られる
。分岐命令のターゲット・アドレス(TARGET P
C)およびタ−ゲット・アドレス・ストローブ信号(T
ARGETVALID)がオペランド・ユニット21か
ら入力バス32に送られる。たとえば、オペランド・ユ
ニット21は分岐命令の変位スペシファイヤの値を分岐
命令に続く命令のアドレスに加えてターゲット・アドレ
スを計算する。状態分岐の場合、実行ユニソトl3から
バス33ヘデータ信号(BRANCIIDECISIO
N)と共に送られた妥当性検査信号(BRANCH V
ALID) ニよっ”’C分岐決定がナサれ、予測が妥
当化される。
たいていの命令シーケンスの実行中、分岐予測ユニット
28はまず分岐オプコードならびにそれに対応するアド
レスを受け取り、次に対応するターゲット・アドレスを
受け取り、最後に妥当性検査信号を受け取る。分岐予測
ユニット28は分岐オプコードおよび対応するアドレス
を受け取るとすぐに分岐決定をなすことによってこの典
型的なシーケンスに応答する。
或る条件分岐命令が妥当化された場合、通常は実行が継
続する.さもなければ、分岐決定が予測と一敗しないと
きには、「巻戻し」操作が実施される。これには、分岐
ヒストリ・キャソシュにおける決定を記録し、次いで命
令ストリームを再方向付けることを伴う。命令ストリー
ムは中央処理ユニットの状態を予測がなされた時点で存
在する状態に復帰させ、次いで分岐命令からの代わりの
実行経路の始めで実行を再開することによって再方向付
けられる。たとえば、先に保管されていた[巻戻しJア
,ドレス(IINWIND PC)で実行が再開される
。好ましい分岐予測ユニソトの構造、動作は、1989
年2月3日に出願されたD.Fite等の米国特許出願
第3.0 6,7 6 0号rBranch Pred
ictionJにもっと詳しく記載されており、これを
参考資料としてここに援用する。
命令ユニット12の命令デコーダ20と実行ユニット1
3のキュー23が第3図により詳しく示してある。ここ
でわかるように、デコーダ20はプログラム・カウンタ
のためのデコーダ20aと、フォーク・テーブルRAM
20bと、2つのソース・オペランドスペシファイヤデ
コーダ2Qc、20dと、宛先オペランドスペシファイ
ヤデコーダ20eと、レジスタ動作デコーダ2Ofとを
包含する。これらは後に詳しく説明する。好ましい実施
例では、デコーダ20c〜20fは密接に相互接続して
あり、大きくて複雑なデコード・ユニットにまとめられ
いる.これについては、1989年2月3日に出願され
たFlte等の米国特許出願302.347号rDec
oding Multiple Specifiers
in a Variable Length Inst
ructionArch i tec ture Jに
一層詳しく説明されており、これを参考資料としてここ
に援用する。デコーダ20bは好ましくは命令ユニット
の代わりにフォーク・キュー23bに続く実行ユニット
内に設置する。これはフォーク・アドレスがより多くの
ビットを含み、したがって、命令ユニットと実行ユニソ
トの間のデータ・ラインが少なくて済むからである。
プログラム・カウンタ・デコーダ20aの出力は実行ユ
ニット13のプログラム・カウンタ・キュー23aに格
納される。RAM2 0 bは各命令のオプコード・バ
イトのみを受け取り、そのデータを使ってテーブルから
「フォーク」 (マイクロコード)・ディスパソチ・ア
ドレスを選ぶ。このディスパッチ・アドレスは命令の実
行に適するマイクロコードの開始を識別し、実行ユニソ
ト13内のフォーク・キュー23bに格納される。
4つのデコーダ209C〜2Ofの各々は命令バッファ
19からオプコード・バイトとオペランドスペシファイ
ヤデー夕の両方を受け取る。デコ−I”20c,2dは
2つのソース・オペランドスペシファイヤを復号してソ
ース・オペランド・ポインタを発生する。これは実行ユ
ニ7}で用いて2つのソース・オペランドを位置指定す
ることができる。これら2つのポインタは実行ユニソト
のソース・ポインタ・キュー23Cに格納される。
宛先オペランドスペシファイヤはデコーダ20eによっ
て復号されて宛先オペランド・ポインタを発生する.こ
れは実行ユニソトの宛先ポインタ・キュー23sに格納
される。
上記のレジスタ・コンフリクトのチェソクを行なうため
に、新しい命令が復号される毎に一対のマスクが発生さ
せられて、その命令の実行中に実行ユニットが読み出し
たり、書き込んだりすることになるすべてのGPRを識
別する。これらのマスクはレジスタ動作デコーダ20f
 (第4図に関連して以下に説明する)において発生さ
せられ、命令ユニー/ トのマスク・キュー23fに格
納される。各マスクはGPRの数に等しい多数のビット
位置を包含する。読み出しマスクでは、1つのビットが
新しい命令の実行中に読み出されるべき各GPR毎にセ
ットされており、書き込みマスクでは、1つのビットが
その命令の実行中に書き込まれるべき各GPR毎にセソ
トされている。
成る所与の命令に対する読み出し、書き込みの両マスク
・キュー23fにただ1つのエントリとして格納される
,GPRが15個あるとき、マスク・キューの各エント
リは30個のビットからなる(読み出そうとしているG
PRを識別するために各読み出しマスクに15個のビッ
トと、書き込もうとしているGPRを識別するために1
5個のビット)。マスク・キュー23fのすべての有効
マスクの複合体は命令ユニット12において命令を前処
理しているときにメモリ・アドレスを発生してその命令
の前処理をストールさせるべきかどうかを決定するのに
使用されるべき各レジスタをチェックするのに用いられ
る。マスク・キュー23fの好ましい構造、動作は、1
989年2月3日に出願されたMurray等の米国特
許出願第306,833号rMultiple Ins
tructionProcessing System
 l+ltth Data DependencyRe
solutionJに詳しく記載されており、これを参
考資料としてここに援用する。この参考資料はインサー
ト・ポインタ、リムーブ・ポインタ、キューがいっぱい
のときを検出するロジソク、キューをフラッシングする
ロジックを含むキューの基本的な構造も詳しく示してい
る。
次に第4図に目を転じて、ここにはソース・リスト24
とそれに関連したレジスタ・ファイル(全体的に40で
示してある)のブロソク図が詳しく示してある。これら
の構成要素は一対のセルフタイムド・レジスタ・ファイ
ル集積回路として一緒にまとめてある。このセルフタイ
ムド・レジスタ・ファイル40は、メモリ・アクセス・
ユニット11、命令ユニット12、実行ユニット13の
間のデータ・インターフェースを与える。
好まし《は、レジスタ・ファイル40は16個一組のレ
ジスタを4&ll包含し、各レジスタは長さ36ビット
である。この場合、同じ種類の集積回路のうち2つが組
み合わせて用いられて16個の32ビット・レジスタ4
組を与える。各レジスタは各バイトに対して4つのバイ
トプラス1つのパリティ・ビットを含むように構成され
ている。4組はそれぞれGPR4 Lソース・リスト2
4、メモリー時レジスタ42および実行一時レジスタ4
3に対応する。これらのレジスタはデュアルボート出力
を有し、一対のマルチブレクサ45、46を包含する。
マルチブレクサの入力部は4組のレジスタの各々にある
16個のレジスタの各々に接続している.36ビット・
マルチブレクサの出力部は実行ユニソト13に直結して
いる。セレクト・ラインが実行ユニット13とマルチプ
レクサ45、46のセレクト入力部の間に接続してある
。これらのセレクト・ラインは6ビット信号を与えて6
4個のレジスタそれぞれのアドレス指定を許すようにな
っている。各レジスタ4l、24、42、43の入力部
もデュアルボートタイプであり、A,B両方のデータ入
力を受け入れる。しかしながら、ここで、4vAのレジ
スタがそれぞれデュアルボートタイブであるが、レジス
タ・フプイル40が3つの別個のソースから人力を受け
取り、これらの人力のうち2つ以下の入力を4組のレジ
スタのうち任意の1つに送るようになっていることに注
目されたい。
上述したように、ソース・リスト24はソース・オペラ
ンドを含むレジスタ・ファイルである。
したがって、実行ユニット13のソース・ポインタ・キ
ューのエントリはメモリおよび直接オペランドあるいは
リテラル・オペランドのためのソース・リストを指す。
メモリ・アクセス・ユニソトl1ならびに命令ユニット
l2の両方がソース・リスト24にエントリを書き込み
、実行ユニソトl3は命令を実行する必要に応じてソー
ス・リストからオペランドを読み出す。
GPR41はVAXアーキテクチャによって定められる
ような16個の汎用レジスタを含む。これらのレジスタ
はソース・オペランドおよび実行された命令の結果を記
憶する。さらに、実行ユニット13はGPR41に結果
を書き込み、命令ユニット12は自動増分、自動減分命
令のためにGPR41を更新する。
メモリー時レジスタ42が実行ユニット13およびメモ
リ・アクセス・ユニット11によってアクセスできる1
6個の高速レジスタを含む。メモリ・アクセス・ユニッ
ト11は実行ユニット13の必要とするデータを書き込
む。さらに、マイクロコード実行ユニソト26もマイク
ロコード実行での必要に応じてメモリー時レジスタへの
書き込みを開始することができる。
実行一時レジスタ43は実行ユニットl3によってのみ
アクセスできる16個の高速レジスタを含む。一層詳し
く言えば、マイクロコード実行ユニソ}13が中間記憶
のためにこの実行一時レジスタ43を使用する。
実行ユニソト13は36ビット・データ・バスを経てG
PR46、メモリー時レジスタ42および実行一時レジ
スタ43に接続している。転送ゲート47、48、49
が、それぞれのセレクト入力部に接続した6ビット・セ
レクト・バスを経て実行ユニ・ノト・データ・バスから
GPR41、メモリー時レジスタ42および実行一時レ
ジスタ43に送られるデータを制御するようになってい
る.同様にして、命令ユニットl2は転送ゲート50、
51を経てGPR41のB入力部とソース・リスト24
に接続している。しかしながら、この場合、転送ゲート
50、51のセレクト・ラインは互いに分離しており、
独立して制御される。
この独立したアドレス指定能力の目的は自動増分あるい
は自動減分モードを有するスベシファイヤの前処理と組
み合わせて自動増分、自動減分ムーブ・アドレス操作を
実施するのに必要なクロック・サイクルの数を減らすこ
とにある。特に、自動減分の場合、一回のサイクルで、
或る特定されたGPHの初期値が減分され、減分された
値はそのGPRに戻されてロードされ、ソース・リスト
24の選ばれたエントリにもロードされる。しかしなが
ら、自動増分の場合には、一回のサイクルで、特定され
たGPRの初期値が増分され、そのGPRに戻されてそ
こにロードされるが、初期値はソース・リストの選ばれ
たエントリにロードされる。したがって、独立アドレス
指定は自動増分、自動減分の両作業を一回のサイクルで
実施するのを可能とする。
メモリ・アクセス・ユニット11は72ビット・データ
・バスを有し、一対の36ビット・レジスタに書き込み
を行なうのが好ましい。したがって、このバスは低位3
6ビント部と高位36ビット部に分割され、データを連
続レジスタ・アドレスで格納できるようにする.低位3
6ビットは転送ゲート52を通してソース・リストに送
られるか、あるいは、転送ゲート53を通してメモリー
時レジスタ42に送られる。物理的には、同じ種類の集
積回路を2つ使用する上記の好ましい構成において、各
32ビット部の箭位18ビットは集積回路の一方に格納
され、32ビット部の対応した低位18ビットは他方の
集積回路に格納される。
メモリ・アクセス・ユニット11も7ビット・セレクト
・バスを転送ゲート68、70に送る。
この付加的なビットは、メモリ・アクセス・ユニット1
2が転送ゲート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によって実施されるアドレス演算およびメモ
リ読み出し操作を必要とする。
分岐変位または即値データ(すなわち、命令ストリーム
に見出されるロング・リテラル)の評価のためには、C
Pユニットがメモリ読み出し操作を開始する必要はない
。分岐変位の場合には、CPユニットは変位を分岐予測
ユニット(第1図の28)に直接転送する。即値データ
の場合には、GPユニットはデータをソース・リスト2
4に転送する。ソース・リストがオペランド処理ユニッ
ト21のために利用できるボートを1つしか持っていな
いため、マルチプレクサ63がオペランド処理ユニット
内に設けられ、GPユニソト62またはEXPユニット
61のいずれかからのデータの32ビット・ワードを選
定するようになっている.1つのショート・リテラルの
有効拡張には優先権が与えられる. 通常、レジスタスペシファイヤは命令ユニットでは評価
されないが、代わりに、レジスタ・ポインタ(すなわち
、GPR番号)が実行ユニットに送られる。これにより
、先に復号されているがまだ実行されていない命令がレ
ジスタの値を変更した場合に生じるストールを避けるこ
とができる。
しかしながら、「命令内レジスタ読み出しコンフリクト
」のような異常状態では、GPユニットはレジスタ・オ
ペランドによって特定されたレジスタの内容を得、それ
をソース・リストに入れることになる。これは命令デコ
ーダ20がコンフリクトを検出し、応答信号をマイクロ
シーケンサ63(CPユニットの正規の動作をオーバー
ライドしてコンフリクトを処理するようにプログラムさ
れている)に送ったときに生じる.マイクロシーケンサ
は汎用レジスタの命令ユニットのコピーを実行ユニット
の汎用レジスタと一致させ続けるようにもプログラムさ
れている.オペランド処理ユニットのこれらの特徴は上
記のD.Fite等の米国特許出願rDecoding
 Multiple Specifiers In A
Variable Length Instructi
on ArchitectureJに記載されている. レジスタスペシファイヤが復号されたときに実行ユニッ
トにレジスタ・ポインタを送るために、命令デコーダは
オペランド処理ユニット内の転送ユニソト64まで延び
るTRバスを有する。このTRバスは、本質的には、キ
ュー23がいっぱいになるようなストール状態の場合に
3つまでのレジスタ・ポインタを保持する「ストール・
バソファ」を構成する一対のランチである.「ストール
・バッファ」の特定の回路が上記のMurray等の米
国特許出願rMultiple Instructio
n ProcessingSystem  −ith 
 Data  Dependency  Resolu
tion  ForDigital Computer
s Jに示されている。
次に第6図を参照して、ここにはGPユニットのフォー
マットが一層詳しく示してある.CPバスは単一ビット
の「有効データ・フラグ(VDF) Jをシステム・ク
ロックの先のサイクルでコンプレックススペシファイヤ
が復号されているかどうかを汎用ユニット62に示すべ
く転送する。単一ビットの「インデックス・レジスタ・
フラグ(IRF) Jもまたコンプレックススベシファ
イヤがインデソクス・レジスタを参照しているかどうか
を示すべく転送される。参照されたインデックス・レジ
スタのいずれにもGPバスを通して転送された4ビット
・インデックス・レジスタ番号で示されている。CPバ
スはコンプレックススベシファイヤのスベシファイヤモ
ードを示す4ビット、ベース・レジスタ番号を示す4ビ
ットおよびコンプレックススペシファイヤによって特定
される任意の変位を含32ビントも搬送する. GPバスは現行命令のためのスペシファイヤのシーケン
スでコンプレックススペシファイヤの位置を示す3ビッ
トスベシファイヤ番号も転送する.このスベシファイヤ
番号により、汎用ユニット62がオプコード・バイトの
デコードからの特定オペランドのためのアクセス、デー
タタイプを選ぶことができる。したがって、汎用ユニッ
ト62は第5図の拡張ユニット61および転送ユニフト
64から幾分独立して作動することができる。特に、汎
用ユニソト62はそれがオペランドを決定すべく2以上
のサイクルを必要とするかどうがを示す独立したストー
ル信号< OPU  STALL)ヲ与える。
次に第7図に参照して、ここには拡張バス(EX)のた
めのフォーマットが示してある。この拡張バスは単ビッ
ト有効データ・フラグ、ショート・リテラル・データの
6ビットおよび3ビットスベシファイヤ番号を搬送する
。このスベシファイヤ番号は現行命令に続くスベシファ
イヤのシーケンスでショート・リテラルスペシファイヤ
の位置を示し、拡張ユニット3lで用いられてオプコー
ド・バイトのデコードからの関連したデータタイプを選
ぶ。したがって、拡張ユニット61もむしろ独立して作
動し、この拡張ユニットがショート・リテラルスペシフ
ァイヤを処理するのに2以上のサイクルを必要とするか
どうかを示すそれぞれのストール信号(SL  STA
LL)を発生する。
次いで第8図を参照して、ここには転送バス(TR)の
フォーマットが示してある,TRバスは第1のソース・
バス65、第2のソース・バス66および宛先バス67
を含み、各バスはそれぞれの有効データ・フラグ(VD
F)、レジスタ・フラグ(RGF)およびレジスタ番号
を搬送する。
レジスタ・フラグは対応するレジスタスベシファイヤが
復号されているときにモノトされる。また、コンプレッ
クスまたはショート・リテラルスベシファイヤが復号さ
れたときにはいつでも、第1、第2のソース・バスある
いは宛先バスの有効データ・フラグのいずれか1つがセ
ットされ、それに組み合わせられたレジスタ・フラグが
クリアされてソース・リスト・ポインタ・キヱーまたは
宛先キューに通じるデータ経路内のスペースをソース・
オペランドまたは宛先オペランドのために予約する。
ソース・ポインタ・キューのエントリは第1ソース・バ
ス65と同じ(第2ソース・バス66と同じ)フォーマ
ントを有する。有効ソース1スベシファイヤがレジスタ
でないときにはいつでも、それはメモリ・ソースとなる
。有効ソース1ポインタがメモリ・ソースであるときに
は、次の自由なソース・リスト位置ポインタがレジスタ
番号を変える。同様に、有効ソース2スペシファイヤが
レジスタでない場合にはいつでも、それはメモリ・ソー
スとなる。有効ソース2ポインタがメモリソースである
ときには、次の自由ソース・リスト位置ポインタがレジ
スタ番号を変える。各有効ポインタはソース・ポインタ
・キューにロードされ、そのうちの1つのエントリを占
有することになる。2つもの多くのポインタが同時にロ
ー卜され得る.1つのポインタをロードしようとしてい
る場合、それはソース1ポインタでなければならない。
2つのソース・ポインタを一度にロードしようとしてい
る場合には、ソース1ポインタはソース2ポインタのた
めの位置の前方のキュー内位置を占有することになる。
これは実行ユニソトが命令に現われたソーススベシファ
イヤと同し順序でソース・ポインタを使用することを保
証する。
ソース・リスト内のデータのために利用できる充分な自
由スペースがない場合、ソース・ポインタはまったくロ
ードされない。また、オーバーフロー時にもソース・ポ
インタ・キュー23Cにはソース・ポインタはまったく
ロードされない。これらの考慮に従って次の自由ソース
・リスト・ポインタを発生させるために、オペランド処
理ユニソト2l (第5図参照)に自由ポインタ・ロジ
ソク68を設けると共に、有効非レジスタスペシファイ
ヤが存在し、オーバーフロー状態が存在しないときに必
要に応じてそれぞれの無効レジスタ番号に自由ポインタ
を挿入する一組のマルチプレクサ69を設ける。
好ましくは、非レジスタ宛先スベシファイヤ(すなわち
、リテラルスベシファイヤが有効宛先として復号されな
いためにコンプレックススベシファイヤ)に対して用い
られた宛先ポインタの一部のみが有効データ・フラグと
なる。換言すれば、メモリ書き込みスペシファイヤの宛
先アドレスを指すだめの或る種の機構が使用される。好
ましい機構としては、メモリ書き込みスペシファイヤの
物理的なアドレスを持つための「書き込みキュー」70
 (第1図参照)をメモリ・アクセス・ユニットに設け
たものである。したがって、CPユニソトが宛先位置の
アドレスを演算するとき、GPユニソトはそれを或るコ
ード(対応する結果が実行ユニソト13の回収ユニソト
27によってメモリに回収されるまで書き込みキューに
格納されることになっている宛先アドレスとして上記の
アドレスを識別するコード)と一緒にメモリ・アクセス
・ユニットに転送する。回収ユニットが復号されるシー
ケンスと同じシーケンスで結果を回収するので、各結果
に対するそれぞれのアドレスは結果がメモリ・アクセス
・ユニットに回収されたときに書き込みキューのヘッド
から取り出される。書き込みキュー70のこれ以上の特
徴は1989年2月3日に出願されたD, Fite等
の米国特許出願第306,767号rMethod a
nd Apparatus ForResolving
 A  Variable Number of  P
otentialMe+wory Access Co
nflicts  111  A  Pipeline
dComputer System Jに開示されてお
り、これを参考資料としてここに援用する。
次に第9図を参照して、ここにはソース・ポインタ・キ
ュー23cの概略図が示してある。このソース・ポイン
タ・キューは16個1組の5ビット・レジスタ400を
含み、各レジスタは4ビット・ポインタと、このポイン
タが汎用レジスタあるいはソース・リストのエントリを
示しているかどうかを示すフラグとを保持することがで
きる。
比較すれば、プログラム・カウンタ・キュー23aとフ
ォーク・キュー23bは各々8個のレジスタを有する。
2つのソース・ポインタを同時に挿入するために、レジ
スタ400は、各々、それぞれのORゲ−}401に接
続したデータ・クロツク・イネーブル入力部を有し、こ
れらの入力部がインサート・ポインタ・レジスタ404
からのインサート・ポインタによって選ばれるのに応じ
てSRCI  PTR、SRC2  PTRおよび対応
したSRCI  VALID , SRC2VALID
の信号を次の2つの自由レジスタに送る2つのマルチプ
レクサ402、403の出力を混合する。インサート・
ポインタはSRCI  VALID ,SRC2  ν
^LID信号のいずれもが、そのうちの1つが、あるい
は、そのうちの2つが加算機405で計算されるときな
どに主張されたかどうかに依存してO、1、2だけ増分
される. 2つまでのポインタを同時に取り出すために、ソース・
ポインタ・キュー23cは第1、第2マルチプレクサ4
06、407を含み、これらのマルチブレクサはREM
OVEO,  REMOVEIの信号によって要求され
るそれぞれのポインタに依存して加算機409によって
0、■または2だけ増分される取り出しポインタ・レジ
スタ408によって制御される。
ソース・ポインタ・キュー内の現在あるエントリの数を
決定するために、ソース・ポインタ・キュー23cがイ
ンサート・ポインタ・レジスタ404および取り出しポ
インタ・レジスタ408をリセットすることによってフ
ラッシュされるときにレジスタ420はゼロにリセ冫ト
される。減算器、加算器の回路421 422がキヱ−
23cに挿入されるか、あるいは、そこから取り出され
たポインタの正味数に応答してレジスタ420を増分あ
るいは減分する。本質的には、キュー内のエントリの数
はインサート・ポインタと取り出しポインタの差である
が、現在キュー内にあるポインタの数についてのレジス
タ420もそのキューが完全に空であるかあるいは完全
にいっぱいであるかどうかを示す。ソース・ポインタ・
キューから命令ユニットニPOINTER  (IUE
UEFULL信号を転送する際の遅延により、このPO
INTER  QUEUE!  FULL信号はデコー
ダ回路423によって決定されるなどしてこのキュー内
のエントリの数が最大数16ではなくて14に達したと
きに発生するのが好ましい。同様にして、デコーダ42
4、425が第1、第2のソース・ポインタがこのキュ
ーから利用できるかどうかを示す。
次に第10図を参照して、ここには全体的に64で転送
ユニットが、全体的に68で自由ポインタ・ロジックが
、そして、全体的に69でマルチブレクサのセットが概
略的に示してある。輸送ユニット64は任意のパリティ
・エラーを命令デコーダ(第5図の20)に戻すために
バリティ・チェッカ81と、転送バス・レジスタ番号、
フラグをそれぞれ緩衝するためのストール・バッファ8
2、83とを包含する。自由ポインタ・ロジックも同様
にして第1、第2の有効非レジスタスペシファイヤの場
合にコンプレックススペシファイヤの前にショート・リ
テラルが来るかどうかを示す信号SL  FIRSTを
緩衝するストール・バソファ84を包含する。この信号
はコンパレータ85で与えることができる。このコンパ
レータはコンプレックススペシファイヤのスベシファイ
ヤ数をショート・リテラルスベシファイヤのスペシファ
イヤ数と比較する.緩衝されたSL  FIRSTは第
1マルチブレクサ86へのセレクトとして使用され、ま
た、ANDゲート88内の緩衝されたSL  FILI
D信号による修飾の後に第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、97ならびに加算
器98を含むアキュムレータ内に現行のままに留められ
る,しかしながら、自由ポインタはソース・リストがい
っぱいになったとき、あるいは、初期化サイクル中には
SIZE  ToALLOCATEによって増分させら
れない。ORゲート97およびマノレチフ゜レクサ98
は自由ポインタがこれらの状態の下でその値を変えない
ということを保証する。たとえば、フラッシュ時、IN
IT  FPL信号が主張され、EBOX  LAST
  POINTER信号がFREE POINTER信
号の値に等しくセットされる。
EBOX  LAST  POINTER信号は実行ユ
ニソト内のカウンタ(図示せず)によって与えられる。
キューが現行の有効非レジスタスペシファイヤのために
ソース・リスト内に充分なサイズを割り当てるにはいっ
ぱいでありすぎる場合には、転送ユニットがストールし
なければならない。この場合、有効フラグがゲート99
によって非主張値にセットされる。ゲート99も、IN
IT  FRL信号が主張されたときに初期化サイクル
で非主張状態にフラグをセットする。有効フラグは出力
ラッチ100を通してソース・ポインタ・キューに転送
される。同様にして、マルチブレクサ組69からの2つ
のソース・ポインタと宛先ポインタが出力ラフチ101
を通して転送される。
次に第11図を参照して、ここには全体的に61で拡張
ユニットが概略的に示してある。拡張ユニットは復号さ
せられたショート・リテラルを命令デコーダから取り出
し、ソース・リストの36ビット・エントリに挿入する
ために拡張する。実際に行なわれる拡張スベシファイヤ
のデータタイプの依存する。特に、マルチプレクサ12
0はスペシファイヤのデータタイプに依存して整数、F
−D不動点、G不動点あるいはH不動フオーマソトのい
ずれかを選ぶ。少なくとも第1のデータ・ワードに対し
て、フォーマットはショート・リテラル・フォーマソタ
としで知られる組み合わせロジック121によって与え
られる。付加的な32ビット・データ・ワードを必要と
するデータタイプに対しては、付加的なワードがゼロで
満たされる。
ストール時、マルチブレクサ120は先の拡張を選び、
それを維持する。このマルチプレクサ120のセレクト
・ラインはストール中にストール・バッファ123内に
保持されるショート・リテラル・データタイプに応答し
て拡張セレクト・デコーダ122によって与えられる。
拡張セレクト・デコーダは拡張の第1あるいは他の任意
のロングワードが現在発生されつつあるかどうかにも応
答する。この状態は当該ロングワードの数がゼロと異な
っているかどうかを決定するゲート124によって与え
られる。拡張に必要とされるロングワードの数はショー
ト・リテラルのデータタイプに応答してデコーダ125
によって与えられる。ロングワードの必要数は一対のラ
ッチ126、127および減分ロジック128を含むア
キュムレー夕によってカウントダウンされる。
このアキュムレータはそれを最初にセットするか、それ
をクリアするか、あるいは、その値をストールの場合に
保持するかするマルチブレクサ129を包含する。アキ
ュムレータの次のステージが組み合わせロジソク130
によって選ばれる。ゲート131はアキュムレー夕の次
のステージで示すように次のサイクル中に拡張が継続し
なければならないときにいつでもリテラル・ストール信
号を発生する.換言すれば、ロングワードの当該数がゼ
ロにならないかぎりストール信号が主張される。
次に第12図を参照して、ここには汎用(CAP)ユニ
ットが概略的に示してある。この汎用ユニットはインデ
ックス(X)、ベース(Y)、変位(D)のスペシファ
イヤによって特定されるメモリ・アドレス.の演算のた
めの2つのサイクルを必要とする.第1のサイクルにお
いて、ベース・レジスタの内容は変位に加えられる。第
2のサイクルでは、インデックス・レジスタの内容が索
引付け動作がバイト、ワード、ロングワード、カップワ
ード・コンテキストのうちのいずれかなのに依存して0
、1、2または3ビソト位置分だけシフトされ、先行の
結果に加えられる.このシフト動作はシフト・マルチブ
レクサ141によって行なわれる.ベース・レジスタの
値はマルチブレクサ142によって選ばれ、インデック
ス・レジスタの値はマルチブレクサ143によって選ば
れる。
第1サイクルでは、選ばれたベース・レジスタの内容は
別のマルチブレクサ144を通して中間パイプラインま
たはストール・レジスタ145に送られ、同様にして、
変位はまた別のマルチプレクサ146によって選ばれ、
0位置のシフト後でシフト・マルチブレクサ141を通
して転送された後、第2の中間パイプラインまたはスト
ール・レジスタ147に受け取られる。ベース、変位は
次に加算器148で加算され、その合計がマルチブレク
サ144を通してパイプライン・レジスタ145に戻さ
れる。このとき、マルチブレクサ146は変位の代わり
にインデックス・レジスタ値を選び、シフタ141は索
引付け動作のコンテキストに従ってインデックス・レジ
スタの値にシフトし、このシフトされた値は第2中間バ
イブライン・レジスタ147に格納される。演算サイク
ル中、加算器148は2つのパイプライン・レジスタ1
45、147の内容を加算する。
CPユニットは組み合わせロジック150と、4つの個
別の状態を定める2ピット状態レジスタ151とを包含
する逐次状態機によって制御される。命令を処理するオ
ペランドの完了後に状態はゼロに戻る.命令デコーダか
ら許可信号が与えられ、ストール状態が存在していない
ときには、GPユニソトはメモリ・アクセス・リクエス
トを発行し、オペランドの命令処理完了までその状態を
通して循環することができる。状態レジスタ151の計
数動作およびGPユニットによるデータのリクエストま
たは輸送を禁じると考えられる許可、ストール信号とは
別に、組み合わせロジック150は9人カビットを有す
る状態テーブルで構成され得る.この状態テーブルはス
ペシファイヤモードの組み合わせを定める4ビットと、
スペシファイヤアクセス形式を特定する3ビットと、状
態レジスタ151からの2ビットとからなる.スベシフ
ァイヤモード(D4 、Ds 、Dz 、D+ )の組
み合わせを定める4ビットは5つのビット(PC,M4
、M3、M2、Ml)から得られる.これらの5つのビ
ットは、 jl4=Pc,  ロ,=NO↑(M4)、D!=(M
4.AND  M3)  OR  M2  、0.冨n
t に従ってスベシファイヤモードを定める.したがって、
4つのビット(D4、D,、、Dよ、DI)は次の表I
に示されるようにスペシファイヤモードに関係する. このインプリメンテーションの場合、好ましい組み合わ
せロジック150は表■に示す次の状態シーケンスによ
って定められる. きい: S−EBOソース・リストへの書き込みR−M
BOX  ORボート・リクエストの発行 G−IBOX..EBOX  GPRへの書き込み P−IBOXのPCユニットへのターゲットpcの発行 c−opu演算サイクル ゛は保証されたストール・サイクル ここで、上記の表■から、組み合わせロジック150に
よって選ばれた動作のシーケンスがスベシファイヤモー
ドとスペシファイヤアクセス形式に依存することに注目
されたい.テーブル内の任意のスペシファイヤモードと
任意のスベシファイヤアクセス形式の交点については、
3以下の動作のシーケンスがあるが、2までの保証され
たストール・サイクルもあり得ることがわかる.したが
って、状態レジスタ151の状態ゼロは機械のアイドル
状態を定め得る.状態1、2、3は機械が実際に或る動
作を実施している3つの状態のシーケンスを定め得る. 次に第13図を参照して、これは内部の種々の構成要素
間の制御信号の流れを示す実行ユニットのブロック図で
ある.たとえば、ここで、実行を初期化してアイドル状
態に置いたと仮定する。このアイドル状態でも、実行ユ
ニットはソース・ポインタ・キューのヘッドで有効デー
タ・フラグによって示すように有効ソース・オペランド
を検索している。マイクロコードがソース・ポインタ・
リムーバル・ロジック161がキューのヘッドでソース
・ポインタをソース妥当性検査ロジソク163に送るの
を可能とする。ソース・ポインタが有効非レジスタ・ソ
ーススベシファイヤの存在を示す場合、ソース妥当性検
査ロジック163はソース・ポインタによって指示され
るソース・リスト内のエントリと組み合わせられたそれ
ぞれの有効ビットの状態をチェックする。有効ビットが
主張されている場合には、ソース妥当性検査ロジック1
63はマイクロコード実行ユニット26の制御下にある
発行ユニット25へのSRC  OK信号を主張する. 発行ユニット25がフォーク・キューのヘッドに次のフ
ォークがあると決定したときには、マイクロコード実行
ユニット26に新しいフォーク信号を発行する.それに
よって、マイクロコード実行ユニットはそのフォーク・
アドレスでマイクロコード・ワードを戻すことによって
応答する.たとえば、第1ワードは発行ユニットに、有
効非レジスタスペシファイヤの場合にはソース・リスト
から、あるいは、特定された汎用レジスタから有効化さ
れたソース・データを転送するように命令する.たとえ
ば、マイクロコード・ワードは多機能ユニットのうちの
特定のものを指定してソース・データを受け取る.多機
能ユニットは、たとえば、整数ユニット164、浮動小
数点ユニット165、乗算ユニット166および除算ユ
ニット167を包含する. たとえば、整数ユニットは32ビット演算ロジソ.ク・
ユニット、64ビット・バレル・シフタおよび1サイク
ル毎にメモリ・アドレスを発生するアドレス発生ユニッ
トを有し、したがって、毎サイクルあたり1の率で少な
いマイク.ロコード制御によってムーブロングやアンド
ロングのような単純な命令を実行する。CALLS,M
OVCのようなコンプレックス命令は整数ユニットのデ
ータ経路の通過を反復させることによって行なわれる。
これらの命令について、マイクロコードは実行ユニット
内のデータ経路よりソースへのアクセスを制御する。多
機能ユニットの使用により、整数命令のピーク流を追従
するにはただ1つの整数ユニットで充分である.たとえ
ば、コンプレックス命令はストリング処理やスタック・
フレームに固有のメモリ反応により同時に役立たない。
マイクロコードがこれらの命令を実行している間、他の
機能ユニットはアイドル状態にある。
浮動小数点ユニット165はADD,SUB,CMP,
CVTおよびFSG,D浮動フォーマットのためのMO
Vのような浮動小数点動作を実行する.パイプライン化
されているので、発行ユニットが命令を発行し、それら
を回収するのと同じはと迅速に命令を受け取ることがで
きる。ソース・オペランドが32ビット片になっている
が、内部には64ビットのデータ経路を有する。浮動小
数点ユニットはFOSSu一等の米国特許出願rPip
elined  Floating  Potnt  
Adder  For  DigitalCompu 
ter Jに詳しく記載されている。
乗算器166は整数、浮動小数点両方の乗算を実施する
パイプライン化乗算器であると好ましい。
除算器167は整数、浮動小数点両方の除算を行ない、
充分に迅速であるためロジックを退避するようにパイプ
ライン化されていない。たとえば、除算器はD,G浮動
小数点フォーマントについてもl2サイクルで除算を行
なう. 命令が発行された場合、動作が結果を回収するための宛
先を要求すると考えられる。さらに、結果についての宛
先ポインタがソーススベシファイヤが有効化された後の
ある時点で宛先ポインタ・キュー23eに挿入される可
能性もある。宛先が予測される場合には、マイクロコー
ドは宛先ボインタ・リムーバル・ロジック171が宛先
ポインタ・キューのヘッドから宛先ポインタを取り出し
、それを結果を与えることになっている多機能ユニット
22の或る特定のものを識別する情報と共に結果キュー
172に挿入することを可能とする。
また、発行ユニットが命令内で特定された明示宛先を持
たない命令を発行する可能性もある。たとえば、この命
令は実行一時レジスタ(第4図の43)の使用を必要と
する可能性がある。この場合、その命令についての宛先
のあるものあるいはおそらくは全部がマイクロコード実
行ユニット26に知らされ得る。したがって、この場合
、発行ユニット25は命令の実行のごく初めで結果キュ
ーをロードすることができる。
上述したように、実行ユニソトは命令が命令ストリーム
の形で現われると同じシーケンスで命令の結果を回収す
るように設計されている。同しことが、命令ストリーム
でマクロ命令を構成しているマイクロワードによる中間
動作にもあてはまる。
したがって、メモリ書き込み結果が書き込みキュ一で特
定されたメモリ・アドレスで回収され得るという利点に
加えて、本発明では、結果キュー172を使用して多機
能ユニットが実際に処理を完了したときのトラックを維
持する負担を発行ユニットから除くこともできる。代わ
りに、結果を回収するタスクは別体の回収ユニット17
3に任され得る。
回収ユニット173は結果キューのヘッドで宛先情報を
モニタしており、特に、結果キューのヘッドでエントリ
内の機能ユニット仕様によって示される特定の機能ユニ
ットから選ばれた結果レディ信号をモニタしている.こ
の結果レディ信号を受け取ったとき、回収ユニットは結
果キューのそのヘッド・エントリ内の情報によって示さ
れる様式で結果を回収することができる. 結果について通常考えられている実際の場所に加えて、
結果ユニットは結果に組み合わされた、アンダーフロー
またはオーバーフローのような状態コードをチェックす
ることができる.このチェックは状態コード、セット・
トラップ、イネーブル・フラグに依存し、マイクロコー
ド実行ユニットにトラップを取り扱わせる。メモリ宛先
については、結果ユニットは結果をメモリ・ユニットに
送るのを保証する。たとえば、多数の32ビット・ロン
グワードを含む結果の場合、回収ユニットはレジスタ1
74内で或るカウント数を維持し、結果全体が結果キュ
ーのヘッドで任意の次の結果を回収することになる前に
回収されることを保証する。また、回収ユニットが結果
を回収する際になんらかの困難に遭遇した場合には、た
とえば、発行ユニットに組み合わせたストール・ロジソ
ク175をしてストール、トラップあるいは例外を実施
させて問題を解決することができるようにする. 次に第14図を参照して、ここには実行ユニットの好ま
しいデータ経路のブロック図が示してある。各機能ユニ
ットは回収ユニットで終る結果を回収するためのデータ
経路を有する。結果キューのヘッドで結果キュー・エン
トリで示される機能ユニットからの結果は回収マルチプ
レクサ185で選ばれるrRETIRB  REStl
LTjと呼ぶ。RE!TIRE一REStlLTは全体
的に180で示される中央データ宛先ネットワークに送
られる。回収ユニット27は、フラソシュのために、命
令ユニット12におけるレジスタ・ファイルのコピーへ
、そして、命令ユニットのプログラム・カウンタ(第1
図の17)に結果を送るための一対のデータ経路も有す
る。
回収ユニソトはメモリ・アクゼス・ユニソト1lへ直結
するデータ経路も有する。しかしながら、実行ユニット
がメモリ・アクセス・ユニット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において、回収ユニットは結果
キューのヘッドでエンドリ内の宛先情報を検索し、その
宛先が利用できるかどうかをチェ’7クする。
もしそうでなければ、回収ユニソトによる結果キューの
サービス動作は現行サイクルで終了する。
あるいは、ステソプ214では、回収ユニットは結果キ
ューのヘッドにおけるエントリ内の情報に従って結果の
回収を開始することができる。結果がひとたび回収され
たならば、ステップ215において、回収ユニットは実
行ユニットの状態を変えて結果キューのヘッドでエント
リを取り出すことによってその事実を示すことができる
.エントリがヘソドから取り出された後、その結果の回
収は完了する。
次に第18図を参照して、ここには回収キュー内のエン
トリのための好ましいフォーマットを示す。たとえば、
このエントリは27ビットの情報を含む.最初の3つの
ビット<26724>は回収すべき次の結果を受け取る
ことになっている機能ユニソトのうちの或る特定の1つ
を選ぶRETIRBTAGを特定する。
ビット23は、たとえば、選定された状態コードをセッ
トするだけの代わりに結果をどこかに書き込むと仮定さ
れるかどうかを示すフラグであり、このフラグは結果使
用済み信号(第12図参照)によって認識され、したが
って、機能ユニットは新しい組のオペランドから結果を
自由に発生させることができる。
ビット22は結果をメモリに書き込むことになっている
かどうかを示すメモリ宛先フラグである.結果キュー内
のエントリがメモリ・アドレスを指示する必要はない。
なぜならば、そのメモリ・アドレスは通常の状況の下で
は既に物理的メモリ・アドレスに変換され、結果を待っ
ているからである. ビット<21:20>は結果コンテキストがバイト、ワ
ード、ロングワード、かっどワードのどれであるかを示
すコンテキスト・フィールドCTXを示す.たとえば、
カッドワードの場合、このカッドワードを32ビット・
データ・ラインを通して回収するのには2つのサイクル
が必要である.したがって、2つのサイクルが回収に要
求される。パイトーワード・コンテキストは32ビット
・レジスタあるいは記憶場所にバイトあるいはワードの
書き込みを行なうために使用され得る。
4ビット・フィールドUCCK<19:16>は実行ユ
ニットの状態コード・ビットをどのようにして更新すべ
きかを示す一組のフラグである。
たとえば、これらのフラグはプロセッサ状況ワードの負
ビット、ゼロピット、オーバーフロー・ビットならびに
キャリ・ビットを使用可能あるいは使用禁止とする。
4ビット・フィールドUTRAP  fiN< 1 5
 : 1 2>はそれぞれのトラップ状態を使用可能あ
るいは使用禁止とする4つ1組のトラップ・イネーブリ
ング・ビットである。
ビソト11はマクロ命令の終りをマークするULAST
である。
ビット10はマクロ・ブランチの終りをマークするフラ
グUMACROBである。
ビット9は、使用可能となったときに、引き続く回収動
作を完了する前に成功したメモリ書き込みの肯定応答を
待つことを回収ユニットに要求するフラグUMEM  
WAITである。
最後に、ビット<s : o>には、結果を回収するた
めの実行ユニット内の選定場所DEST  SELを示
す9つのビットがある。これらの場所は、たとえば、汎
用レジスタか、あるいは、結果を回収できる実行ユニッ
ト内の任意の他のレジスタである。
【図面の簡単な説明】
第1図は本発明を使用している中央パイプライン化処理
ユニットを有するディジタル・コンピュータ・システム
のブロック図である。 第2図は命令を処理するのに実行される種々のステップ
を示す図であり、これらのステップが第1図に示すバイ
ブライン化された命令ブロセソサによって種々の命令に
対して並列に実施され得ることを示す図である。 第3図は第1図の命令ブロセソサのブロック図であり、
命令ユニットと実行ユニットの間に挿入されたキューを
一層詳しく示す図である。 第4図は第1図の命令デコーダのブロック図であり、ソ
ース・リストおよび命令ユニット、メモリ・アクセス・
ユニット、実行ユニットのうちデータを交換するのに使
用される他のレジスタと組み合わされてデータ経路をよ
り詳しく示す図である。 第5図は命令ユニットを通ってキューに通じるデータ経
路を示すブロック図である。 第6図は命令ユニットのオペランド処理ユニット内の汎
用ユニットに命令デコーダからGPバスを通って転送さ
れるオペランドスペシファイヤデー夕のフォーマットを
示す図である。 第7図は命令デコーダからオペランド処理ユニット内の
拡張ユニットへSLバスを通して送られるショート・リ
テラルスペシファイヤデータのフォーマットを示す図で
ある。 第8図は命令デコーダからオペランド処理ユニソト内の
転送ユニットへTRバスを通して送られるソース、宛先
スペシファイヤデー夕のフォーマントを示す図である。 第9図は転送ユニットの概略図である。 第10図は拡張ユニットの概略図である。 第11図はオペランド処理ユニットの汎用ユニットの概
略図である。 第12図は実行ユニットのブロック図であり、命令を実
行し、結果を回収するための制御流を示す図である。 第13図は実行ユニットのブロック図であり、命令の実
行中や結果の回収中に使用するデータ経路を示す図であ
る. 第14図は種々のデータタイプのソース・オペランドに
ついてそれぞれ演算あるいは論理動作を実施していると
きのそれぞれの機能ユニットの状態を示すタイミング図
である。 第15図は実行ユニット内の命令発行ユニ・ノトが特定
された機能ユニットへソース・オペランドを発行し、実
行ユニット内の結果キューにおけるそれぞれの結果につ
いての発行状態および宛先を記録する制jIl手順のフ
ローチャートである。 第16図は回収ユニットが回収キューのヘッドでエント
リによって特定された機能ユニ・ソトの結果を得、これ
らの結果をそのエントリによって特定された宛先で回収
し、そのエントリを回収キューのヘッドから取り出す制
御手順のフローチャートである. 第17図は回収キューのエントリに格納するのが好まし
い情報を示す図である. 第18図は結果キューのエントリに格納するのが好まし
い情報を示す図である。 図面において、10・・・主メモリ、11・・・メモリ
ーCPUインターフェース・ユニット、l2・・・命令
ユニット、13・・・実行ユニソト、14・・・主キャ
ッシュ、15・・・変換バッファ、16・・・入出力バ
ス、17・・・プログラム・カウンタ、18・・・命令
キャッシュ、19・・・命令バフファ、20・・・命令
デコーダ、21・・、・オペランド処理ユニット、23
・・・キュー・ユニット、28・・・分岐予測ユニット
、30、32・・・入カバス、40・・・レジスタ・フ
ァイル、41・・・GPR,42・・・メモリー時レジ
スタ、43・・・実行一時レジスタ、45、46・・・
マルチブレクサ、47、48、49、50、5 1.6
 8.7 0・・・転送ゲート、65、66・・・ソー
ス・バス、67・・・宛先バス、93・・・減算器、9
4・・・コンパレー夕、95・・・ORゲート、96、
97・・・ラッチ、99・・・ゲート、100,101
・・・出力ラッチ、120・・・マルチブレクサ、12
2・・・拡張セレクト・デコーダ、123・・・ストー
ル・バフファ、126、127・・・ラッチ、128・
・・減分ロシック、130・・・組み合わせロジック、
141・・・シフト・マルチブレクサ、142、143
・・・マルチプレクサ、145、147・・・ストール
・レジスタ、148・・・加算器、150・・・組み合
わせ口ジソク、151・・・状態レジスタ、161・・
・ソース・ポインタ・リムーバル・ロジック、163・
・・ソース有効化ロジック、166・・・マルチプレク
サ、167・・・除算器、173・・・回収ユニット、
401  ・ ・ ・ORゲート、402、403 ・
 ・ ・デマルチプレクサ、404・・・インサート・
ポインタ・レジスタ、406、407・・・マルチブレ
クサ、40B・・リムーブ・ポインタ・レジスタ、40
9・・・加算器、420・・・レジスタ。 EXバス τRノVス FIG.6

Claims (5)

    【特許請求の範囲】
  1. (1)命令を取り出し、命令を復号し、ソース・オペラ
    ンドおよび宛先オペランド・アドレスを生成し、オペラ
    ンドを取り出し、命令を実行し、実行した命令の結果を
    回収するパイプライン化したユニットを有するディジタ
    ル・コンピュータにおいてオプコード、オペランドスペ
    シファイヤを含む多重命令を前処理し、実行する方法に
    おいて、各命令内のオプコードを復号して命令実行ユニ
    ットのためのマイクロコード・ディスパッチ・アドレス
    を識別する「フォーク・データ」を決定する段階と、多
    重命令のための前記フォーク・データをフォーク・デー
    タ・キューに格納する段階と、各命令内のオプコード、
    オペランドを復号してそれぞれのオペランドの記憶場所
    を識別するソース・ポインタおよび宛先ポインタを決定
    する段階と、多重命令のための前記ソース・ポインタを
    ソース・ポインタ・キューに格納する段階と、多重命令
    のための前記宛先・ポインタ・キューに格納する段階と
    、前記ソース・ポインタによって識別された記憶場所か
    らソース・オペランドを取り出す段階と、取り出したソ
    ース・オペランドをソース・オペランド・キューに格納
    する段階とを包含することを特徴とする方法。
  2. (2)請求項(1)記載の方法において、前記ディジタ
    ル・コンピュータがメモリを包含し、前記ソース・ポイ
    ンタならびに前記宛先ポインタによって識別された記憶
    場所の或るものが前記メモリにおける記憶場所であるこ
    とを特徴とする方法。
  3. (3)請求項(1)記載の方法において、前記ソース・
    オペランド・キューからのソース・オペランドで各命令
    を実行する段階と、前記宛先ポインタによって識別され
    た記憶場所宛先オペランドを取り出す段階と、実行した
    命令の結果をそれぞれの宛先オペランドによって識別さ
    れた宛先に回収する段階とを包含することを特徴とする
    方法。
  4. (4)請求項(1)記載の方法において、命令を実行す
    る前記ユニットが規定の動作の実行専用の複数の個別の
    機能ユニットを包含し、前記フォーク・データが各命令
    を実行するのに用いられることになっている機能ユニッ
    トを識別することを特徴とする方法。
  5. (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 true JPH02234229A (ja) 1990-09-17
JPH0567970B2 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
DE69031705T2 (de) * 1989-11-29 1998-04-02 Toshiba Kawasaki Kk Zum Anschluss einer Erweiterungseinheit geeignetes Rechnersystem
EP0443876A3 (en) * 1990-02-23 1992-01-02 Kabushiki Kaisha Toshiba Computer system capable of connecting expansion unit
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
CA2045756C (en) * 1990-06-29 1996-08-20 Gregg Bouchard Combined queue for invalidates and return data in multiprocessor system
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
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
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
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
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
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 Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
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
JP3372970B2 (ja) * 1992-09-02 2003-02-04 シャープ株式会社 自己同期型転送制御回路
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
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
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
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
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
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
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
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
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
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
WO1985000453A1 (en) * 1983-07-11 1985-01-31 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
EP0380859A3 (en) 1992-09-16
DE68928513D1 (de) 1998-02-05
EP0380859A2 (en) 1990-08-08
US5109495A (en) 1992-04-28
ATE161640T1 (de) 1998-01-15
EP0380859B1 (en) 1997-12-29
DE68928513T2 (de) 1998-06-10
JPH0567970B2 (ja) 1993-09-28

Similar Documents

Publication Publication Date Title
JPH02234229A (ja) ソース・リスト、ポインタ・キューおよび結果キュー
EP0381471B1 (en) Method and apparatus for preprocessing multiple instructions in a pipeline processor
EP0380850B1 (en) Method and digital computer for preproccessing multiple instructions
JP2846406B2 (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
JP3333196B2 (ja) トラップ処理方法
US5860000A (en) Floating point unit pipeline synchronized with processor pipeline
US4742451A (en) Instruction prefetch system for conditional branch instruction for central processor unit
EP0381469B1 (en) Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction
JP2846407B2 (ja) 例外処理方法及び例外処理装置
JP3842474B2 (ja) データ処理装置
US6279105B1 (en) Pipelined two-cycle branch target address cache
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
EP0405495B1 (en) Instruction unit logic management apparatus included in a pipelined processing unit and method therefor
EP0381444A2 (en) Branch prediction
JP2001297000A (ja) 1次発行キューと2次発行キューを持つマイクロプロセッサ
JPH07334364A (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
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
JP2001297001A (ja) 命令履歴情報を持つ基本キャッシュ・ブロック・マイクロプロセッサ
JP2001229024A (ja) 基本キャッシュ・ブロックを利用したマイクロプロセッサ
JPH07120284B2 (ja) データ処理装置
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
US6012139A (en) Microprocessor including floating point unit with 16-bit fixed length instruction set
JP2001356905A (ja) スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法