JPH0774991B2 - デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法 - Google Patents
デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法Info
- Publication number
- JPH0774991B2 JPH0774991B2 JP1188708A JP18870889A JPH0774991B2 JP H0774991 B2 JPH0774991 B2 JP H0774991B2 JP 1188708 A JP1188708 A JP 1188708A JP 18870889 A JP18870889 A JP 18870889A JP H0774991 B2 JPH0774991 B2 JP H0774991B2
- Authority
- JP
- Japan
- Prior art keywords
- bus
- pipeline
- address
- segment
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims abstract description 18
- 238000011017 operating method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 3
- 238000011144 upstream manufacturing Methods 0.000 claims description 3
- 230000006835 compression Effects 0.000 abstract description 9
- 238000007906 compression Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 10
- 108091035710 E-box Proteins 0.000 description 5
- 241000272525 Anas platyrhynchos Species 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002789 length control Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 101000574648 Homo sapiens Retinoid-inducible serine carboxypeptidase Proteins 0.000 description 1
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 102100025483 Retinoid-inducible serine carboxypeptidase Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3873—Variable length pipelines, e.g. elastic pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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)
- Pipeline Systems (AREA)
Description
【発明の詳細な説明】 本発明はデジタルコンピュータに関し、更に詳細にはデ
ジタルプロセッサ用パイプラインCPUに関係する。
ジタルプロセッサ用パイプラインCPUに関係する。
汎用コンピュータは一つ以上の種々の所定のインストラ
クションを特定のシークエンスで実行することによりデ
ータを処理する。計算機械の一つとしては、ハンドヘル
ドコンピュータがある。この機械において、所定のイン
ストラクション(インストラクションセット)は加算、
減算、乗算及び除算の算術操作のみを含む場合がある。
データ及びインストラクションの要求されるシークエン
スは使用者毎にに入力され、算術計算の結果が得られ
る。
クションを特定のシークエンスで実行することによりデ
ータを処理する。計算機械の一つとしては、ハンドヘル
ドコンピュータがある。この機械において、所定のイン
ストラクション(インストラクションセット)は加算、
減算、乗算及び除算の算術操作のみを含む場合がある。
データ及びインストラクションの要求されるシークエン
スは使用者毎にに入力され、算術計算の結果が得られ
る。
コンピュータが所望の結果を得るために実行する一連の
インストラクションのセットはプログラムと呼ばれる。
大きなインストラクションセットを有する汎用装置にお
いては、プログラムは極めて大きくなる場合がある。コ
ンピュータは使用者がインストラクションを入力するの
よりも速く、それらを処理するので、プログラムを電子
メモリーに記憶して、コンピュータが自動的にインスト
ラクションを読み出して、最大速度で処理を実行するの
が好ましい。
インストラクションのセットはプログラムと呼ばれる。
大きなインストラクションセットを有する汎用装置にお
いては、プログラムは極めて大きくなる場合がある。コ
ンピュータは使用者がインストラクションを入力するの
よりも速く、それらを処理するので、プログラムを電子
メモリーに記憶して、コンピュータが自動的にインスト
ラクションを読み出して、最大速度で処理を実行するの
が好ましい。
近年の蓄積プログラムデータ処理システムはフォンノイ
マンモデルに基礎を置いている。このフォンノイマンコ
ンピュータの設計は3つのキーポイントに基礎を置いて
いる。
マンモデルに基礎を置いている。このフォンノイマンコ
ンピュータの設計は3つのキーポイントに基礎を置いて
いる。
データ及びインストラクションが単一の読み出し−書き
込みメモリー内に記憶される。
込みメモリー内に記憶される。
このメモリーの内容は、データの形態に関係なく、その
位置に関してアドレス可能である。
位置に関してアドレス可能である。
一つのインストラクションから次のインストラクション
へ(あからさまに変更されることなく)順次実行され
る。
へ(あからさまに変更されることなく)順次実行され
る。
フォンノイマンコンピュータの基本の回路は、大別して
二つの部分にわけることができる。即ち、メモリー及び
中央処理ユニット(CPU)である。メモリーはコンピュ
ータシステムのためのデータ及びインストラクションを
保持する。CPUはシステムの頭脳と考えることができ
る。このCPUは順次記憶されたインストラクションをフ
ェッチ及び実行する電子論理回路を含む。
二つの部分にわけることができる。即ち、メモリー及び
中央処理ユニット(CPU)である。メモリーはコンピュ
ータシステムのためのデータ及びインストラクションを
保持する。CPUはシステムの頭脳と考えることができ
る。このCPUは順次記憶されたインストラクションをフ
ェッチ及び実行する電子論理回路を含む。
多くのデジタルコンピュータ内のデータは2進値の形態
で表される。メモリー内の各位置は2進値を記憶するこ
とができる(その最大サイズはコンピュータシステムの
形態に依存する)。CPUが実行するプログラム又は順次
インストラクションのセットは、メモリーの特定の領域
内に記憶ささる。インストラクションは、メモリーの一
箇所以上を占有することができる。各インストラクショ
ンの最初の部分はPOコードと呼ばれる。このPOコード
は、それがインストラクションであることをCPUに告げ
る唯一無二の2進値である。多くのインストラクション
はオペランド(処理されるべきデータ)又はオペランド
特定子を含むことのできる別の部分を有する。オペラン
ド特定子は、インストラクションが要求するオペランド
を見出す場所をCPUに伝える。これらのオペランドはメ
モリー内或いはCPU内部の或る一次記憶位置内の何れか
に存在することができる。
で表される。メモリー内の各位置は2進値を記憶するこ
とができる(その最大サイズはコンピュータシステムの
形態に依存する)。CPUが実行するプログラム又は順次
インストラクションのセットは、メモリーの特定の領域
内に記憶ささる。インストラクションは、メモリーの一
箇所以上を占有することができる。各インストラクショ
ンの最初の部分はPOコードと呼ばれる。このPOコード
は、それがインストラクションであることをCPUに告げ
る唯一無二の2進値である。多くのインストラクション
はオペランド(処理されるべきデータ)又はオペランド
特定子を含むことのできる別の部分を有する。オペラン
ド特定子は、インストラクションが要求するオペランド
を見出す場所をCPUに伝える。これらのオペランドはメ
モリー内或いはCPU内部の或る一次記憶位置内の何れか
に存在することができる。
一般に、CPUは次のオペレーションを達成してインスト
ラクションを実行する。
ラクションを実行する。
1.インストラクションをメモリーからフェッチする。
2.フェッチされたインストラクションをデコードしてそ
のインストラクションをインタープリトする。
のインストラクションをインタープリトする。
3.前記インストラクションによって要求されたオペラン
ド(インストラクションが作用するデータ)をメモリー
からフエッチする。
ド(インストラクションが作用するデータ)をメモリー
からフエッチする。
4.インストラクションによって定義されるオペレーショ
ンを実行する。
ンを実行する。
5.前記オペレーションの結果を後で参照するためにメモ
リー内に記憶する。
リー内に記憶する。
CPU内の(機能ユニットと呼ばれる)ハードウエアの異
なる組はこれらのオペレーションを実行する。CPUの機
能ユニットは、種々のレジスタ(メモリー素子)及び算
術論理ユニット(ALU)を通常含む。レジスタは一次的
に結果及びインストラクションオペランド(インストラ
クションが操作するデータ)を一時的に記憶する。
なる組はこれらのオペレーションを実行する。CPUの機
能ユニットは、種々のレジスタ(メモリー素子)及び算
術論理ユニット(ALU)を通常含む。レジスタは一次的
に結果及びインストラクションオペランド(インストラ
クションが操作するデータ)を一時的に記憶する。
ALUは複合論理を使用して入力に現れるデータを処理す
る。ALUの出力は、それに与えられた制御信号に依存し
て、算術オペレーション或いは論理(シフティング内は
ブーリアン)オペレーションを達成することにより入力
から得られる。CPU内の処理は、オペランドレジスタか
らのデータをALUを通して結果レジスタに伝えることに
より行われる。データは、複雑なインストラクションに
対して何度もALUを通されることがある。
る。ALUの出力は、それに与えられた制御信号に依存し
て、算術オペレーション或いは論理(シフティング内は
ブーリアン)オペレーションを達成することにより入力
から得られる。CPU内の処理は、オペランドレジスタか
らのデータをALUを通して結果レジスタに伝えることに
より行われる。データは、複雑なインストラクションに
対して何度もALUを通されることがある。
データは、共通バス(関連する信号を搬送する一組のワ
イヤー)を介してCPUの基本素子間で転送される。デー
タ転送は、現在処理されているインストラクションの形
態に依存し、中央制御装置によって開始される。CPU制
御装置は一連の制御信号をCPUの種々のレジスタに送
り、何時データを共通読み出しバス(ALUの入力に向か
う)に置くか及び共通書き込みバス(ALUから導かれ
る)からデータを取り出すかを告げる。CPU制御装置
は、ALUにどのオペレーションが入力から出力へのデー
タに作用するかを告げる。この様にして、CPUの制御装
置は、メインメモリーからインストラクションをフェッ
チすることから始めて、データをALU及び種々の一次記
憶レジスタ間で転送し、そして処理されたデータをメイ
ンメモリに書き込む一連のデータ転送を開始することが
できる。
イヤー)を介してCPUの基本素子間で転送される。デー
タ転送は、現在処理されているインストラクションの形
態に依存し、中央制御装置によって開始される。CPU制
御装置は一連の制御信号をCPUの種々のレジスタに送
り、何時データを共通読み出しバス(ALUの入力に向か
う)に置くか及び共通書き込みバス(ALUから導かれ
る)からデータを取り出すかを告げる。CPU制御装置
は、ALUにどのオペレーションが入力から出力へのデー
タに作用するかを告げる。この様にして、CPUの制御装
置は、メインメモリーからインストラクションをフェッ
チすることから始めて、データをALU及び種々の一次記
憶レジスタ間で転送し、そして処理されたデータをメイ
ンメモリに書き込む一連のデータ転送を開始することが
できる。
制御装置の種々の実行形態は二つの大きなカテゴリー、
ハードワイヤ化及びマイクロプログラム化にある。ハー
ドワイヤ制御装置は組み合わせ論理及びいくつかのレジ
スタを使用して、一連の制御信号を生成する。これら制
御信号は、丁度フェッチされたインストラクションの形
態及び前のインストラクションの実行結果に依存する。
マイクロプログラム制御装置は、同じ機能を、ROM或い
はRAM制御状態マシンを使用して、前の状態及びインス
トラクション入力から制御信号を生成する。
ハードワイヤ化及びマイクロプログラム化にある。ハー
ドワイヤ制御装置は組み合わせ論理及びいくつかのレジ
スタを使用して、一連の制御信号を生成する。これら制
御信号は、丁度フェッチされたインストラクションの形
態及び前のインストラクションの実行結果に依存する。
マイクロプログラム制御装置は、同じ機能を、ROM或い
はRAM制御状態マシンを使用して、前の状態及びインス
トラクション入力から制御信号を生成する。
ハードワイヤ制御装置は特定のインストラクションセッ
トに対して調整され、その制御装置を実働するために使
用される論理手段は、インストラクションセットの複雑
性が増大した時により複雑になる。マイクロプログラム
化制御がより汎用的な装置であるのは、ハードウエア論
理手段を変更することなく、制御記憶の内容の変化をマ
イクロインストラクションの流れを変化するのに使用で
きる点にある。ハードウエア制御装置は高速であり、マ
イクロプログラミング制御装置はより柔軟性を与え且つ
実行を容易にする。
トに対して調整され、その制御装置を実働するために使
用される論理手段は、インストラクションセットの複雑
性が増大した時により複雑になる。マイクロプログラム
化制御がより汎用的な装置であるのは、ハードウエア論
理手段を変更することなく、制御記憶の内容の変化をマ
イクロインストラクションの流れを変化するのに使用で
きる点にある。ハードウエア制御装置は高速であり、マ
イクロプログラミング制御装置はより柔軟性を与え且つ
実行を容易にする。
マイクロプログラムされた制御装置を最も簡単に実行す
るためには、各CPUインストラクションは制御記憶内に
記憶されたマイクロフローに応答する。ここで使用され
ている様に、マイクロフローはマイクロプログラムサブ
ルーチンと呼ばれる。マイクロインストラクションの各
ビット或いは制御信号は制御信号のレベルに対応する。
一連のこの様なマイクロインイストラクションを順番に
並べると、一連の制御信号が生成される。マイクロプロ
グラム制御装置においては、各CPUインストラクション
が少なくとも一つのマイクロ−フロー(これは、小さな
一サイクルCPUインストラクション用のただ一つのマイ
クロインストラクション長であり得る)を呼び出して、
ALUオペレーション及びCPU内部バス上のデータ転送を制
御する制御信号を生成する。
るためには、各CPUインストラクションは制御記憶内に
記憶されたマイクロフローに応答する。ここで使用され
ている様に、マイクロフローはマイクロプログラムサブ
ルーチンと呼ばれる。マイクロインストラクションの各
ビット或いは制御信号は制御信号のレベルに対応する。
一連のこの様なマイクロインイストラクションを順番に
並べると、一連の制御信号が生成される。マイクロプロ
グラム制御装置においては、各CPUインストラクション
が少なくとも一つのマイクロ−フロー(これは、小さな
一サイクルCPUインストラクション用のただ一つのマイ
クロインストラクション長であり得る)を呼び出して、
ALUオペレーション及びCPU内部バス上のデータ転送を制
御する制御信号を生成する。
コンピュータはしばしば、CPUがサポートするインスト
ラクションセットに基づいて、複合インストラクション
セットコンピュータ(CISC)及び減少インストラクショ
ンセットコンピュータ(RISC)に分類される。CISCは共
通して大きく変化の富んだインストラクションを有する
大きなインストラクションセットを有し、RISCは典型的
には単純なインストラクションの比較的小さなセットを
有する。RISC CPUは数個の単純なインストラクション
を有しているので、それらは高速ハードウエア制御装置
を使用できる。CISC CPUは通常、実行が容易なためマ
イクロインストラクション化制御装置を使用する。いく
つかのCPUは複数の制御装置、ハードワイヤ及びマイク
ロプログラム方式を使用してCPUの種々のサブセクショ
ンを制御ことができる。
ラクションセットに基づいて、複合インストラクション
セットコンピュータ(CISC)及び減少インストラクショ
ンセットコンピュータ(RISC)に分類される。CISCは共
通して大きく変化の富んだインストラクションを有する
大きなインストラクションセットを有し、RISCは典型的
には単純なインストラクションの比較的小さなセットを
有する。RISC CPUは数個の単純なインストラクション
を有しているので、それらは高速ハードウエア制御装置
を使用できる。CISC CPUは通常、実行が容易なためマ
イクロインストラクション化制御装置を使用する。いく
つかのCPUは複数の制御装置、ハードワイヤ及びマイク
ロプログラム方式を使用してCPUの種々のサブセクショ
ンを制御ことができる。
或るマシンオペレーションは前のマシンオペレーション
の達成に依存するので、機能ユニットはインストラクシ
ョンの順々に作用する。結果として、単純なコンピュー
タ構造において、各機能ユニットはインストラクション
実行の期間の一部の間でのみ使用される。
の達成に依存するので、機能ユニットはインストラクシ
ョンの順々に作用する。結果として、単純なコンピュー
タ構造において、各機能ユニットはインストラクション
実行の期間の一部の間でのみ使用される。
フォンノイマンマシンの反復するフェッチ及び実行形態
は、多くの方法で改良され、より高速のコンピュータが
製造されている。この様なアーキテクチャ上の改良の一
つはパイプラインとして知られている。パイプライン
は、CPU内の種々のインストラクションの実行をオーバ
ーラッピング(並列)することによってCPUの機能をか
なり増大する。
は、多くの方法で改良され、より高速のコンピュータが
製造されている。この様なアーキテクチャ上の改良の一
つはパイプラインとして知られている。パイプライン
は、CPU内の種々のインストラクションの実行をオーバ
ーラッピング(並列)することによってCPUの機能をか
なり増大する。
パイプラインアーキテクチャにおいて、異なる機能ユニ
ットは異なるインストラクションを同時に処理する。
ットは異なるインストラクションを同時に処理する。
パイプラインCPUの一例はSudhindra N.Mishra in“The
VAX 8800 Microarchitecture,"Digital Technical Jour
nal,Feb.1987,pp.20−33. パイプライン処理は、多くのアイテムのアッセンブリが
同時に生じるが、常に各アイテムはアッセンブリプロセ
スの異なるステージにあるというアッセンブリラインに
似ている。パイプラインは種々のインストラクションを
オーバーラップして実行することを可能にするが、各イ
ンストラクションの有効な実行速度(即ち、スループッ
ト)を増大する。
VAX 8800 Microarchitecture,"Digital Technical Jour
nal,Feb.1987,pp.20−33. パイプライン処理は、多くのアイテムのアッセンブリが
同時に生じるが、常に各アイテムはアッセンブリプロセ
スの異なるステージにあるというアッセンブリラインに
似ている。パイプラインは種々のインストラクションを
オーバーラップして実行することを可能にするが、各イ
ンストラクションの有効な実行速度(即ち、スループッ
ト)を増大する。
各機能ユニットは一度に一つだけのインストラクション
を扱うことができるので、全ての機能ユニットは、それ
らが同期して処理するインストラクションを進める必要
がある。アッセンブリラインの類推とは異なるが、パイ
プラインコンピュータ内の機能ユニットは、処理するイ
ンストラクションに依存して異なる時間を必要とする場
合がある。機能ユニットの一つが長時間を要して特定の
インストラクション上の機能を達成する場合、パイプラ
イン内を流れる全ての機能ユニットが、それが終了する
まで待って、その後各インストラクションを前進させ
る。これはパイプライン停止(ストール)をもたらす。
パイプライン停止はまた、特定のインストラクションが
前のインストラクションの結果を必要とする場合にも生
じる。この結果を必要とするインストラクションは、オ
ペランドフェッチユニットから始まり、パイプラインを
通過し且つ(停止したインストラクションが要求する)
オペランドを生成するために前のインストラクションを
待機するパイプラインを停止する場合がある。
を扱うことができるので、全ての機能ユニットは、それ
らが同期して処理するインストラクションを進める必要
がある。アッセンブリラインの類推とは異なるが、パイ
プラインコンピュータ内の機能ユニットは、処理するイ
ンストラクションに依存して異なる時間を必要とする場
合がある。機能ユニットの一つが長時間を要して特定の
インストラクション上の機能を達成する場合、パイプラ
イン内を流れる全ての機能ユニットが、それが終了する
まで待って、その後各インストラクションを前進させ
る。これはパイプライン停止(ストール)をもたらす。
パイプライン停止はまた、特定のインストラクションが
前のインストラクションの結果を必要とする場合にも生
じる。この結果を必要とするインストラクションは、オ
ペランドフェッチユニットから始まり、パイプラインを
通過し且つ(停止したインストラクションが要求する)
オペランドを生成するために前のインストラクションを
待機するパイプラインを停止する場合がある。
停止はパイプラインにバブルを導入する。バブルは、よ
り前方のパイプラインステージからのデータの欠落のた
めに有効な仕事を達成することの出来ないパイプライン
内のステージを表す。バブルがパイプラインを通して通
過すると、このバブルは対応する機能ユニットをアイド
ル状態にする。実際上、パイプラインバブルは有用な仕
事を妨げる可能性を有し、より低いスループットを結果
する。この発明はバブルを圧縮するCPUパイプライン実
現を扱う。
り前方のパイプラインステージからのデータの欠落のた
めに有効な仕事を達成することの出来ないパイプライン
内のステージを表す。バブルがパイプラインを通して通
過すると、このバブルは対応する機能ユニットをアイド
ル状態にする。実際上、パイプラインバブルは有用な仕
事を妨げる可能性を有し、より低いスループットを結果
する。この発明はバブルを圧縮するCPUパイプライン実
現を扱う。
公知のRISCシステムに於いて、多くのインストラクショ
ンは等しい時間間隔で異なるCPU機能ユニットを使用す
る。RISC内のパイプラインは、上述した様に、CPUイン
ストラクションの実行をオーバーラップすることにより
達成することが出来る。他方、幾つかのCISCインストラ
クションは、他のCISCインストラクションが比較的単純
であり、より短い実行時間を必要とするのにも関わら
ず、長い実行時間を必要とする極めて複雑のものである
ことがある。種々のCISCインストラクション間での機能
ユニット利用に於ける不均衡はCISCパイプラインをしば
しば且つ比較的長時間に渡って停止においやることにな
る。このために、CISC CPUインイストラクションのパ
イプラインはより困難である。
ンは等しい時間間隔で異なるCPU機能ユニットを使用す
る。RISC内のパイプラインは、上述した様に、CPUイン
ストラクションの実行をオーバーラップすることにより
達成することが出来る。他方、幾つかのCISCインストラ
クションは、他のCISCインストラクションが比較的単純
であり、より短い実行時間を必要とするのにも関わら
ず、長い実行時間を必要とする極めて複雑のものである
ことがある。種々のCISCインストラクション間での機能
ユニット利用に於ける不均衡はCISCパイプラインをしば
しば且つ比較的長時間に渡って停止においやることにな
る。このために、CISC CPUインイストラクションのパ
イプラインはより困難である。
種々のCISCインストラクションは異なるサイズのマイク
ロフローを有することがある。各マイクロインストラク
ションは一サイクルに種々の機能ユニットの全ての要素
に対して制御信号を与える。或るCISCマシンにおいて
は、マイクロインストラクションが、(RISCマシンにお
いて共通になされる様に)CPUインストラクションの代
わりにパイプライン化される。これは、各マイクロイン
ストラクションの実行時間が同じであるので、停止を減
少する。マイクロインストラクションパイプラインにお
いて、各ステージはステージの機能ユニットに対応する
マイクロインストラクション内の数個のビットを使用す
る。各機能ユニットが一サイクルの間その活動を制御す
るマイクロインストラクションを使用した後、各ユニッ
トはこのマイクロインストラクションを次のサイクルに
パイプライン内の次の機能ユニットへ転送する。第1の
機能ユニットは新たなマイクロインストラクションを有
する。この様にして、パイプラインの基本的な原理−−
種々の機能ユニットを並列に併用するためのオーバーラ
ップしたインストラクションの実行−−が実行される。
マイクロインストラクションパイプラインであっても、
バブルをさけることはできない。この発明はいかなる種
類のインストラクションパイプラインに於けるバブル圧
縮のための手段を与える。
ロフローを有することがある。各マイクロインストラク
ションは一サイクルに種々の機能ユニットの全ての要素
に対して制御信号を与える。或るCISCマシンにおいて
は、マイクロインストラクションが、(RISCマシンにお
いて共通になされる様に)CPUインストラクションの代
わりにパイプライン化される。これは、各マイクロイン
ストラクションの実行時間が同じであるので、停止を減
少する。マイクロインストラクションパイプラインにお
いて、各ステージはステージの機能ユニットに対応する
マイクロインストラクション内の数個のビットを使用す
る。各機能ユニットが一サイクルの間その活動を制御す
るマイクロインストラクションを使用した後、各ユニッ
トはこのマイクロインストラクションを次のサイクルに
パイプライン内の次の機能ユニットへ転送する。第1の
機能ユニットは新たなマイクロインストラクションを有
する。この様にして、パイプラインの基本的な原理−−
種々の機能ユニットを並列に併用するためのオーバーラ
ップしたインストラクションの実行−−が実行される。
マイクロインストラクションパイプラインであっても、
バブルをさけることはできない。この発明はいかなる種
類のインストラクションパイプラインに於けるバブル圧
縮のための手段を与える。
最もパイプライン化されたプロセッサの制御を支配する
基礎法則は、パイプラインの全ての機能ステージが同時
にその状態を次の機能ステージに進ませる。これは、各
機能ユニットがその処理状態を次のユニットへ転送し、
新たな状態を前のユニットから受け取るために必要であ
る。従って、従前の設計においては、バブルがパイプラ
インステージに導入される場合、全ステージが同時に前
進する時に、バブルは各連続するパイプラインステージ
通して伝播する。従って、オーバーライトしたりバブル
を圧縮することは、システムのスループットを最適にす
るのに好適である。
基礎法則は、パイプラインの全ての機能ステージが同時
にその状態を次の機能ステージに進ませる。これは、各
機能ユニットがその処理状態を次のユニットへ転送し、
新たな状態を前のユニットから受け取るために必要であ
る。従って、従前の設計においては、バブルがパイプラ
インステージに導入される場合、全ステージが同時に前
進する時に、バブルは各連続するパイプラインステージ
通して伝播する。従って、オーバーライトしたりバブル
を圧縮することは、システムのスループットを最適にす
るのに好適である。
本発明はデジタルコンピュータCPUのパイプラインステ
ージに於ける進んだバブル圧縮を可能とする。バブルと
は、より前方(パイプライン上流側)のパイプラインス
テージからのデータの欠損のために有用な仕事を達成す
ることのできないパイプライン内のステージを表してい
る。特定のパイプラインステージが停止すると、このス
テージを既に通過したCPUインストラクションは、順方
向に進み続け、空ステージ即ちバブルを置き去りにす
る。これらの空きステージは、停止のため、所するため
の新たなインストラクションを有さない。
ージに於ける進んだバブル圧縮を可能とする。バブルと
は、より前方(パイプライン上流側)のパイプラインス
テージからのデータの欠損のために有用な仕事を達成す
ることのできないパイプライン内のステージを表してい
る。特定のパイプラインステージが停止すると、このス
テージを既に通過したCPUインストラクションは、順方
向に進み続け、空ステージ即ちバブルを置き去りにす
る。これらの空きステージは、停止のため、所するため
の新たなインストラクションを有さない。
一度バブルがパイプラインに導入されると、停止しない
と、全てのステージが同時に進行するので、バブルは伝
播される。従前の設計だと、停止が生じると、停止した
ステージの前(パイプライン上流側)の全てのステージ
が停止し、この領域にあるバブルがそこに留まる。本発
明は、バブルが停止したステージの前に検出された場
合、停止したステージの前のステージが動くことを可能
にすることにより、停止したステージの前の如何なるバ
ブルも充填されることを可能にする。
と、全てのステージが同時に進行するので、バブルは伝
播される。従前の設計だと、停止が生じると、停止した
ステージの前(パイプライン上流側)の全てのステージ
が停止し、この領域にあるバブルがそこに留まる。本発
明は、バブルが停止したステージの前に検出された場
合、停止したステージの前のステージが動くことを可能
にすることにより、停止したステージの前の如何なるバ
ブルも充填されることを可能にする。
或る実施態様において、本発明は、バブル発生後にステ
ージの一つが停止した場合、そのバブルより前方のパイ
プラインステージの前進を制御することにより実現され
ている。これは、各ステージに於けるバブル及び停止の
検出、それらの相対位置の比較及び各パイプラインステ
ージの条件的な前進を含む。
ージの一つが停止した場合、そのバブルより前方のパイ
プラインステージの前進を制御することにより実現され
ている。これは、各ステージに於けるバブル及び停止の
検出、それらの相対位置の比較及び各パイプラインステ
ージの条件的な前進を含む。
CPU 第1図を参照する。本発明の特徴を使用するCPU即ち中
央処理装置10が示されている。好ましい実施例において
は、CPU10は単一の集積回路として作製されるが、このC
PUは一組の集積回路であってもよいし、一つ以上の回路
基板上に設けられた標準論理回路或いはゲートアレイに
より実現される。本発明はいかなるパイプライン化CPU
においても使用可能であるが、ここで上げられる例はVA
Xインストラクションセットを実行し、本出願人によっ
て以前売られたVAXコンピュータのアーキテクチャに適
合されている。図示された実施例においては、CPU10は
システムデータバス11、例えば64ビット双方向バス及び
27ビットシステムアドレスバス12及びシステム制御バス
13に接続されている。これらのバス11、12及び13はシス
テムメモリー15に接続されてる。このメモリーは詳細に
は図示されていないが通常キャッシュ及びキャッシュ制
御器を含む。このバスは又種々のI/O装置にアクセスす
る。
央処理装置10が示されている。好ましい実施例において
は、CPU10は単一の集積回路として作製されるが、このC
PUは一組の集積回路であってもよいし、一つ以上の回路
基板上に設けられた標準論理回路或いはゲートアレイに
より実現される。本発明はいかなるパイプライン化CPU
においても使用可能であるが、ここで上げられる例はVA
Xインストラクションセットを実行し、本出願人によっ
て以前売られたVAXコンピュータのアーキテクチャに適
合されている。図示された実施例においては、CPU10は
システムデータバス11、例えば64ビット双方向バス及び
27ビットシステムアドレスバス12及びシステム制御バス
13に接続されている。これらのバス11、12及び13はシス
テムメモリー15に接続されてる。このメモリーは詳細に
は図示されていないが通常キャッシュ及びキャッシュ制
御器を含む。このバスは又種々のI/O装置にアクセスす
る。
内部構造に於いて、CPU10は、実行のための機械レベル
のインストラクションをデコードする機能を有するイン
ストラクションユニット20(「Iボックス」と呼ばれ
る)を有し、更にインストラクションのデータ取り扱い
部分の実行を行う実行ユニット21(「Eボックス」と呼
ばれる)を有する。CPU10はマイクロコード化された形
態を有し、ROM(或いはEPROM等)から成る制御記憶22を
採用する。この制御記憶は、例えば1K又は2Kのマイクロ
インストラクションを含み、各ワードはこの本実施例に
おいては50ビット長幅を有する。制御記憶はマイクロシ
ークエンサ23によってアドレスされる。このシークエン
サは、入力点アドレス或いは11ビットディスパッチバス
25によってインストラクションユニット20から受信され
るタスク指名アドレスに基づいて、制御記憶22の11ビッ
トアドレス入力24上に一連のマイクロアドレスを発生す
る。制御記憶22からの出力はマイクロインストラクショ
ンバス26である。本発明においては、50ビット幅であ
る。バス26の16ビット幅はマイクロシークエンサ23の入
力27に戻されて接続され、或る入力口に続く或るシーク
エンスでマイクロインストラクションのアドレスを与
え、且つマイクロ記憶アドレッシングの制御を与える。
マイクロインストラクション出力26の残りの34ビット
は、実行ユニット21及びCPUの他の部分に対する制御入
力28として使用される。
のインストラクションをデコードする機能を有するイン
ストラクションユニット20(「Iボックス」と呼ばれ
る)を有し、更にインストラクションのデータ取り扱い
部分の実行を行う実行ユニット21(「Eボックス」と呼
ばれる)を有する。CPU10はマイクロコード化された形
態を有し、ROM(或いはEPROM等)から成る制御記憶22を
採用する。この制御記憶は、例えば1K又は2Kのマイクロ
インストラクションを含み、各ワードはこの本実施例に
おいては50ビット長幅を有する。制御記憶はマイクロシ
ークエンサ23によってアドレスされる。このシークエン
サは、入力点アドレス或いは11ビットディスパッチバス
25によってインストラクションユニット20から受信され
るタスク指名アドレスに基づいて、制御記憶22の11ビッ
トアドレス入力24上に一連のマイクロアドレスを発生す
る。制御記憶22からの出力はマイクロインストラクショ
ンバス26である。本発明においては、50ビット幅であ
る。バス26の16ビット幅はマイクロシークエンサ23の入
力27に戻されて接続され、或る入力口に続く或るシーク
エンスでマイクロインストラクションのアドレスを与
え、且つマイクロ記憶アドレッシングの制御を与える。
マイクロインストラクション出力26の残りの34ビット
は、実行ユニット21及びCPUの他の部分に対する制御入
力28として使用される。
CPU10は仮想アドレッシングを使用し、メモリー管理ユ
ニット30(Mボックスとも呼ばれる)が採用されて仮想
アドレスを物理アドレスに翻訳する。このユニットは又
インストラクションユニット20に対するインストラクシ
ョンフェッチを調停する。メモリー管理ユニット30は、
他の信号と共にマイクロインストラクションバスからの
34ビット入力28によって制御される。ユニット30は出力
32を介して30ビット内部アドレスバス31に接続され、且
つメモリー管理ユニットからアドレスレジスタを読み取
るために32ビットALU AABus33によって実行ユニット21
に接続される。メモリー管理ユニット30と実行ユニット
21の間の他の接続は、32ビットALU出力バス34が及び32
ビット書き込みデータバス35を含む。これらバス33、34
及び35の部分は実行ユニート21の内部接続に関連して説
明される。ユニット30は、メモリー動作及びワード長を
決めるために、実行ユニットからライン36を介して制御
ビット受信する。ライン36上にこれらの制御ビットはイ
ンストラクションユニット20内で発生し、制御バス38の
部分として実行ユニット21に結合される。メモリー管理
ユニット30は実行ユニット21と共にマイクロテストと定
義される制御信号を発生する。これは3ビットバス39を
介してマイクロシークエンサ23の入力に接続される。こ
の制御信号実行ユニット21又はメモリー管理ユニット30
内の事象によって定義されるマイクロインストラクショ
ン分岐に対するための条件データである。
ニット30(Mボックスとも呼ばれる)が採用されて仮想
アドレスを物理アドレスに翻訳する。このユニットは又
インストラクションユニット20に対するインストラクシ
ョンフェッチを調停する。メモリー管理ユニット30は、
他の信号と共にマイクロインストラクションバスからの
34ビット入力28によって制御される。ユニット30は出力
32を介して30ビット内部アドレスバス31に接続され、且
つメモリー管理ユニットからアドレスレジスタを読み取
るために32ビットALU AABus33によって実行ユニット21
に接続される。メモリー管理ユニット30と実行ユニット
21の間の他の接続は、32ビットALU出力バス34が及び32
ビット書き込みデータバス35を含む。これらバス33、34
及び35の部分は実行ユニート21の内部接続に関連して説
明される。ユニット30は、メモリー動作及びワード長を
決めるために、実行ユニットからライン36を介して制御
ビット受信する。ライン36上にこれらの制御ビットはイ
ンストラクションユニット20内で発生し、制御バス38の
部分として実行ユニット21に結合される。メモリー管理
ユニット30は実行ユニット21と共にマイクロテストと定
義される制御信号を発生する。これは3ビットバス39を
介してマイクロシークエンサ23の入力に接続される。こ
の制御信号実行ユニット21又はメモリー管理ユニット30
内の事象によって定義されるマイクロインストラクショ
ン分岐に対するための条件データである。
CPU10は一次キャッシュ40(「Pキャッシュ」とも呼ば
れる)を含む。これは、実施例においては、2Kバイト高
速スピードRAMであり、最も最近使用されたデータ(イ
ンストラクション或いは通常のデータ)を含む。キャッ
シュ40は30ビット内部アドレスバス31及び32ビット内部
データバス41に接続される。内部データバス41はまたメ
モリ管理ユニット30によってフエッチされたインストラ
クションをインストラクションユニット20によって運
び、又実行ユニット21間で転送されるオペランドを運
ぶ。
れる)を含む。これは、実施例においては、2Kバイト高
速スピードRAMであり、最も最近使用されたデータ(イ
ンストラクション或いは通常のデータ)を含む。キャッ
シュ40は30ビット内部アドレスバス31及び32ビット内部
データバス41に接続される。内部データバス41はまたメ
モリ管理ユニット30によってフエッチされたインストラ
クションをインストラクションユニット20によって運
び、又実行ユニット21間で転送されるオペランドを運
ぶ。
バスインターフェースユニット42は、CPU10及びシステ
ムバス11、12及び13間での接続を、内部命令バス及びク
ロック及び他の制御ビットに基づいて制御或いは調停す
る。
ムバス11、12及び13間での接続を、内部命令バス及びク
ロック及び他の制御ビットに基づいて制御或いは調停す
る。
インストラクションストリーム内に含まれる即値オペラ
ンド或いはアドレスはバス41によってインストラクショ
ンユニット20にロードされる。これらのオペランド特定
子は32ビットバス43によってレジスタにロードするため
に実行ユニット21に転送される。
ンド或いはアドレスはバス41によってインストラクショ
ンユニット20にロードされる。これらのオペランド特定
子は32ビットバス43によってレジスタにロードするため
に実行ユニット21に転送される。
クロック発生器44は、4つの位相出力(φ1からφ4)
を生成する。これらは4つの位相P1、P2、P3及びP4から
なるマシンサイクルを形成する。一例としては、クロッ
ク速度は25MHzであり、40nsのマシンサイクルを形成す
る。
を生成する。これらは4つの位相P1、P2、P3及びP4から
なるマシンサイクルを形成する。一例としては、クロッ
ク速度は25MHzであり、40nsのマシンサイクルを形成す
る。
実行ユニット 第2図を参照する。実行ユニット21がより詳細に示され
る。このユニットは32ビットALU45を含む。これは、AAB
us33から32ビット幅のA入力及びABBus46から32ビット
幅のB入力を有する。ALU45は加算、減算、OR等のCPUの
インストラクションセットをサポートするのに必要とさ
れ、バス28から現在使用されるマイクロインストラクシ
ョンのフィールドによって定義されるオペレーションを
達成する。ALUの出力は常に結果バス47、従って書き込
みバス35へ向かう。結果バスに対するデータの二つだけ
のソースはALU45及びバレルシフター48である。このシ
フター48は64ビット入力の32ビット出力シフターユニッ
トであり、インストラクションセットのシフトオペレー
ションを実行する。零から32ビット右シフト及び零から
32ビット左シフトが、バス28を介して送られるマイクロ
インストラクション内のフィールドの制御の下で、達成
される。結果バス47上のデータはバイパスに対するAABu
s33或いはABBus46或いは書き込みバス35へ、メモリー管
理ユニット30へ行くALU出力バス34へと共にロードされ
る。
る。このユニットは32ビットALU45を含む。これは、AAB
us33から32ビット幅のA入力及びABBus46から32ビット
幅のB入力を有する。ALU45は加算、減算、OR等のCPUの
インストラクションセットをサポートするのに必要とさ
れ、バス28から現在使用されるマイクロインストラクシ
ョンのフィールドによって定義されるオペレーションを
達成する。ALUの出力は常に結果バス47、従って書き込
みバス35へ向かう。結果バスに対するデータの二つだけ
のソースはALU45及びバレルシフター48である。このシ
フター48は64ビット入力の32ビット出力シフターユニッ
トであり、インストラクションセットのシフトオペレー
ションを実行する。零から32ビット右シフト及び零から
32ビット左シフトが、バス28を介して送られるマイクロ
インストラクション内のフィールドの制御の下で、達成
される。結果バス47上のデータはバイパスに対するAABu
s33或いはABBus46或いは書き込みバス35へ、メモリー管
理ユニット30へ行くALU出力バス34へと共にロードされ
る。
書き込みバス35はレジスタファイル50に書き込みができ
る。このファイルは41個の32ビットレジスタの組であ
り、15個の汎用目的レジスタ、18個の一時レジスタ及び
8個のメモリーデータレジスタから成る。これらのレジ
スタは、現在使用されるオペランド及びアドレスを含
む。レジスタファイル間での書き込み及び読み出しは、
現在マイクロインストラクションのフィールド制御の下
で行われる。レジスタファイルの出力のみが32−ビット
出力51及び52によってABBus33或いはABBus46へ送られ
る。内部データバス41は回転子53を介してマイクロイン
ストラクションにより定義されたレジスタファイルの或
るレジスタへ書き込むことができる。内部データバスま
たはレジスタファイルをバイパスし入力54を介してAABu
s及びABBusに直接書き込まれる。これは、内部データバ
スからのデータがレジスタファイルに書き込まれ、且つ
同じサイクルでALU入力として使用される時に行われ
る。
る。このファイルは41個の32ビットレジスタの組であ
り、15個の汎用目的レジスタ、18個の一時レジスタ及び
8個のメモリーデータレジスタから成る。これらのレジ
スタは、現在使用されるオペランド及びアドレスを含
む。レジスタファイル間での書き込み及び読み出しは、
現在マイクロインストラクションのフィールド制御の下
で行われる。レジスタファイルの出力のみが32−ビット
出力51及び52によってABBus33或いはABBus46へ送られ
る。内部データバス41は回転子53を介してマイクロイン
ストラクションにより定義されたレジスタファイルの或
るレジスタへ書き込むことができる。内部データバスま
たはレジスタファイルをバイパスし入力54を介してAABu
s及びABBusに直接書き込まれる。これは、内部データバ
スからのデータがレジスタファイルに書き込まれ、且つ
同じサイクルでALU入力として使用される時に行われ
る。
シフトカウントレジスタ55はシフター48に対するシフト
カウントを与え、サイクルをカウントする様機能する
(乗算或いは除算と有用である)。このカウンタ55は32
ビットシフトレジスタであり、書き込みデータバス35か
らロードでき、マイクロインストラクション制御下でAA
Bus或いはABBusへロードされる。
カウントを与え、サイクルをカウントする様機能する
(乗算或いは除算と有用である)。このカウンタ55は32
ビットシフトレジスタであり、書き込みデータバス35か
らロードでき、マイクロインストラクション制御下でAA
Bus或いはABBusへロードされる。
内部アダーを含む32ビットプログラムカウンタ即ちPC56
はレジスタセットの部分でもある。PC56は実行されるイ
ンストラクションのアドレスを含む。インストラクショ
(CPコード、オペランド特定子、及び特定子拡張を含
む)がインストラクションユニット20内で分析される
時、PC56は更新されて、バス38上のインストラクション
ユニットからのデルタPCビットによってアドレスを追跡
する。プログラムカウンタ56の出力57はAABusへ送ら
れ、ここからアドレスがALU45を通過する。通常はバス3
4を介してメモリー管理ユニット30へ送られる。
はレジスタセットの部分でもある。PC56は実行されるイ
ンストラクションのアドレスを含む。インストラクショ
(CPコード、オペランド特定子、及び特定子拡張を含
む)がインストラクションユニット20内で分析される
時、PC56は更新されて、バス38上のインストラクション
ユニットからのデルタPCビットによってアドレスを追跡
する。プログラムカウンタ56の出力57はAABusへ送ら
れ、ここからアドレスがALU45を通過する。通常はバス3
4を介してメモリー管理ユニット30へ送られる。
ポピュレーションカウンタと呼ばれるカウンタ回路58
は、ABBus46から入力59を受信しAABus33へ出力60を送り
出す。この回路の機能はABBusへロードされる2進ワー
ド内にセットされるビットセットの数をカウントし、且
つビットのこのカウントに等しい2進値を生成する。ポ
ピュレーションカウンタ58はセーブマスク内のビット数
値(各々のセットビットが退避されることを必要とする
レジスタに対応する2進ワード)をカウントするのに使
用され、その2進値が使用される場所を決め、手順CAL
L、RETURN、Push−REGISTER、又はPop−Registeに退避
されるべきレジスタファイル50又はレジスタセットから
のレジスタの数を決める。
は、ABBus46から入力59を受信しAABus33へ出力60を送り
出す。この回路の機能はABBusへロードされる2進ワー
ド内にセットされるビットセットの数をカウントし、且
つビットのこのカウントに等しい2進値を生成する。ポ
ピュレーションカウンタ58はセーブマスク内のビット数
値(各々のセットビットが退避されることを必要とする
レジスタに対応する2進ワード)をカウントするのに使
用され、その2進値が使用される場所を決め、手順CAL
L、RETURN、Push−REGISTER、又はPop−Registeに退避
されるべきレジスタファイル50又はレジスタセットから
のレジスタの数を決める。
プロセッサー状態レジスタ61は又実行ユニット21のレジ
スタの組内に含まれる。この状態レジスタは、キャリ
ー、オーバーフロー、ゼロ及び負の様なALU状態ビット
を、割り込み優先レベル、トレースペンディング等の種
々の他の状態ビットを含む。状態レジスタはマイクロイ
ンストラクション制御下でAABus33上で読み出され、上
書き込みバス35を介して、書き込まれる。
スタの組内に含まれる。この状態レジスタは、キャリ
ー、オーバーフロー、ゼロ及び負の様なALU状態ビット
を、割り込み優先レベル、トレースペンディング等の種
々の他の状態ビットを含む。状態レジスタはマイクロイ
ンストラクション制御下でAABus33上で読み出され、上
書き込みバス35を介して、書き込まれる。
定数発生器62は出力63及び64を介してAABus又はABBusへ
ローディングするための定数を発生する。マイクロイン
ストラクションは、バス28のフィールド内に8ビット定
数(マイクロインストラクション直定数)を含むことが
できる。そしてこのバイトは定数発生器62によって、現
在マイクロインストラクションの別の2ビットフィール
ドによって決められる32ビットワード幅の4バイト位置
のいずれかの位置でABBusへロードされる。また、定数
発生器はライン38上のデータ長DL制御ビットの値に応答
して、1、2、4又は8の定数を発生することができ
る。この定数は扱われるオペランド内のバイトの数を表
しており、出力64を介してABBus46へロードされる。こ
の定数発生器はまた符号拡張データ用シフターと共に使
用される。
ローディングするための定数を発生する。マイクロイン
ストラクションは、バス28のフィールド内に8ビット定
数(マイクロインストラクション直定数)を含むことが
できる。そしてこのバイトは定数発生器62によって、現
在マイクロインストラクションの別の2ビットフィール
ドによって決められる32ビットワード幅の4バイト位置
のいずれかの位置でABBusへロードされる。また、定数
発生器はライン38上のデータ長DL制御ビットの値に応答
して、1、2、4又は8の定数を発生することができ
る。この定数は扱われるオペランド内のバイトの数を表
しており、出力64を介してABBus46へロードされる。こ
の定数発生器はまた符号拡張データ用シフターと共に使
用される。
回転子53は実行ユニット21及び内部データバス41間のI/
Oインターフェースであり、レジスタ或いは実行ユニッ
トのバスにロードされたデータをロングワードの境界上
に揃え、又は実行ユニット21からメモリーに行くデータ
を意図されたバイト位置まで再記憶する機能を有する。
アドレスの二つの最小有効ビット及びデータ長(バス38
上のDL制御ビット)は回転子53によって使用されて、こ
れらの変換が行われる。
Oインターフェースであり、レジスタ或いは実行ユニッ
トのバスにロードされたデータをロングワードの境界上
に揃え、又は実行ユニット21からメモリーに行くデータ
を意図されたバイト位置まで再記憶する機能を有する。
アドレスの二つの最小有効ビット及びデータ長(バス38
上のDL制御ビット)は回転子53によって使用されて、こ
れらの変換が行われる。
マイクロシークエンサ 第3図を参照する。マイクロシークエンサ23がより詳細
に示されている。マイクロシークエンサは、11ビットア
ドレスを全てのマシンサイクルで制御記憶22に送り、次
のサイクルの開始の始めに、制御記憶22は50ビットラッ
チ出力をバス26に生成する。この内の16ビットはバス27
によってアドレス及び制御のためにマイクロシークエン
サにフィードバックされる。これら16ビットは、制御情
報と共に次のマイクロインストラクション用アドレスを
含む。第4図はバス27上の16ビットデータのフォーマッ
トを示す。ここでは、アドレス及び制御情報の二つの形
態がジャンプ及び分岐として示される。ジャンプは11ビ
ットジャンプアドレスビット0から10、3ビットmux制
御フィールドビットと12−14を含む。ここで、ビット15
はジャンプに対しては常に「0」である(そして、分岐
に対しては常に「1」である)。分岐フォーマットは7
ビットオフセットビット0−6、及び4ビット分岐条件
選択子フィールドを含む。
に示されている。マイクロシークエンサは、11ビットア
ドレスを全てのマシンサイクルで制御記憶22に送り、次
のサイクルの開始の始めに、制御記憶22は50ビットラッ
チ出力をバス26に生成する。この内の16ビットはバス27
によってアドレス及び制御のためにマイクロシークエン
サにフィードバックされる。これら16ビットは、制御情
報と共に次のマイクロインストラクション用アドレスを
含む。第4図はバス27上の16ビットデータのフォーマッ
トを示す。ここでは、アドレス及び制御情報の二つの形
態がジャンプ及び分岐として示される。ジャンプは11ビ
ットジャンプアドレスビット0から10、3ビットmux制
御フィールドビットと12−14を含む。ここで、ビット15
はジャンプに対しては常に「0」である(そして、分岐
に対しては常に「1」である)。分岐フォーマットは7
ビットオフセットビット0−6、及び4ビット分岐条件
選択子フィールドを含む。
mux制御フィールドは第3図のマイクロシークエンサ20
内で使用され、多数の入力から一つのマイクロアドレス
出力71を生成する。マルチプレクサ70への一つの入力72
はバス27からのジャンプアドレスフィールドビット0−
10であり、もちろん他の入力はインストラクションユニ
ット20からのタスク指名アドレス25である。出力26上の
マイクロインストラクションがルーチン或いはマイクロ
フローの少なくとも一方で有る場合、「デコーダ次」出
力が発生されIボックス20に、新たなタスク指名を生成
させる。
内で使用され、多数の入力から一つのマイクロアドレス
出力71を生成する。マルチプレクサ70への一つの入力72
はバス27からのジャンプアドレスフィールドビット0−
10であり、もちろん他の入力はインストラクションユニ
ット20からのタスク指名アドレス25である。出力26上の
マイクロインストラクションがルーチン或いはマイクロ
フローの少なくとも一方で有る場合、「デコーダ次」出
力が発生されIボックス20に、新たなタスク指名を生成
させる。
マルチプレクサ70への第3の入力はレジスタスタック75
からの出力74(スタック読み出しバス)である。マイク
ロコードスタック75は後入れ先だしスタックであり、バ
ス24上に現れ従ってこのスタック用の入力書き込みバス
76に現れる11ビットアドレスの8まで記憶する。スタッ
クポインタ77はTOS即ちスタックの頂部を指し示す。そ
して、このポインタは、PUSH或いはPOPスタックオペレ
ーションのために、バス27上の制御情報のビット11−15
からの制御によって増分或いは減分される。バス27は、
バス78を介してスタック制御デコーダ79に接続されてい
る。CALLがデコードされると、入力76上の11ビットアド
レスはスタック75へPUSHされる。RETURNがデコードされ
ると、TOSがマルチプレクサ70に対する入力として選択
され、スタックがポインタ77を減分することによりPOP
される。
からの出力74(スタック読み出しバス)である。マイク
ロコードスタック75は後入れ先だしスタックであり、バ
ス24上に現れ従ってこのスタック用の入力書き込みバス
76に現れる11ビットアドレスの8まで記憶する。スタッ
クポインタ77はTOS即ちスタックの頂部を指し示す。そ
して、このポインタは、PUSH或いはPOPスタックオペレ
ーションのために、バス27上の制御情報のビット11−15
からの制御によって増分或いは減分される。バス27は、
バス78を介してスタック制御デコーダ79に接続されてい
る。CALLがデコードされると、入力76上の11ビットアド
レスはスタック75へPUSHされる。RETURNがデコードされ
ると、TOSがマルチプレクサ70に対する入力として選択
され、スタックがポインタ77を減分することによりPOP
される。
マイクロアドレスサイロ80が別の入力81をマルチプレク
サ70に与える。このサイロは3つのレジスを有してお
り、アドレスバス24からの3つの最後に使用された11ビ
ットアドレスを入力82を介して記憶する。このサイロ
は、停止或いはトラップが信号される場合を除いて、各
マシンサイクル毎にクロックが進まされるシフトレジス
タとして構成される。前記信号が発生される場合は、サ
イロ内の前記3つのアドレスがトラップが終了するまで
退避され、その時前記最後の3つのアドレスが回復マイ
クロルーチンへジャンプすることにより使用できる。こ
の回復マイクロルーチンはバス78を介するマルチプレク
サに対する特定のコードによってサイロ入力81を使用す
る。
サ70に与える。このサイロは3つのレジスを有してお
り、アドレスバス24からの3つの最後に使用された11ビ
ットアドレスを入力82を介して記憶する。このサイロ
は、停止或いはトラップが信号される場合を除いて、各
マシンサイクル毎にクロックが進まされるシフトレジス
タとして構成される。前記信号が発生される場合は、サ
イロ内の前記3つのアドレスがトラップが終了するまで
退避され、その時前記最後の3つのアドレスが回復マイ
クロルーチンへジャンプすることにより使用できる。こ
の回復マイクロルーチンはバス78を介するマルチプレク
サに対する特定のコードによってサイロ入力81を使用す
る。
マルチプレクサ70に対する別の入力はトラップ制御アド
レス発生器84からの出力83である。トラップマイクロル
ーチンの多数の異なる形態、従ってこれらのマイクロル
ーチンを記憶するためのアドレスが利用可能である。
レス発生器84からの出力83である。トラップマイクロル
ーチンの多数の異なる形態、従ってこれらのマイクロル
ーチンを記憶するためのアドレスが利用可能である。
バス78上のビット15が「1」の時特定される分岐アドレ
スは、マイクロプログラムカウンタ85内にアッセンブル
された3つの部分からなっている。11ビット分岐アドレ
スのビット7−10は呼び出しマイクロインストラクショ
ン(即ち、カウンタ85内に現在既にあるマイクロインス
トラクション)からコピーされ、そしてビット0及び4
−6は、入力72によってマイクロインストラクションか
らコピーされる。ビット1−3は、入力72上のマイクロ
インストラクションの、ゲート86を介しての論理OR及び
3ビットマイクロテストバス39の内容である。即ち、
「分岐」タイプマイクロインストラクション(マイクロ
分岐)はマイクロテスト制御論理87によってマイクロイ
ンストラクションバス28上で検出される。マイクロ分岐
インストラクション検出の際、制御論理87はマイクロテ
ストバス39上に有る条件をORゲート86へ進め、同時に、
MUX制御論理88は同様にマイクロインストラクションバ
ス27上のマイクロ分岐を検出し、マイクロプログラムカ
ウンタ85に分岐行き先アドレスを計算させる。これは、
マイクロ分岐バス173上の条件の論理和及びマルチプレ
クサ70への入力として与えられるマイクロ分岐イストラ
クションから選択されたビットに基づいて行われる。
スは、マイクロプログラムカウンタ85内にアッセンブル
された3つの部分からなっている。11ビット分岐アドレ
スのビット7−10は呼び出しマイクロインストラクショ
ン(即ち、カウンタ85内に現在既にあるマイクロインス
トラクション)からコピーされ、そしてビット0及び4
−6は、入力72によってマイクロインストラクションか
らコピーされる。ビット1−3は、入力72上のマイクロ
インストラクションの、ゲート86を介しての論理OR及び
3ビットマイクロテストバス39の内容である。即ち、
「分岐」タイプマイクロインストラクション(マイクロ
分岐)はマイクロテスト制御論理87によってマイクロイ
ンストラクションバス28上で検出される。マイクロ分岐
インストラクション検出の際、制御論理87はマイクロテ
ストバス39上に有る条件をORゲート86へ進め、同時に、
MUX制御論理88は同様にマイクロインストラクションバ
ス27上のマイクロ分岐を検出し、マイクロプログラムカ
ウンタ85に分岐行き先アドレスを計算させる。これは、
マイクロ分岐バス173上の条件の論理和及びマルチプレ
クサ70への入力として与えられるマイクロ分岐イストラ
クションから選択されたビットに基づいて行われる。
第4図にはマイクロインストラクションワードのフォー
マットが同様に示されている。特に、制御記憶の出力に
於けるバス28上に現れる34ビット部分が示されている。
マイクロインストラクションの4つの一般形態が使用さ
れ、それらはBasic、Constant、Shift及びSpecialと呼
ばれる。これら各々に対して、ビット16−33へ同じであ
り、実行ユニット内のAAbus33のソースを選択する6ビ
ット「A」フィールド(ビット16−22)及び行き先即
ち、レジスタファイル50内の或るレジスタ様な、書き込
みバスが書き込まれる場所を選択する「W」フィールド
(ビット28−33)を含む。ビット27はプロセッサ状態レ
ジスタ61に対する条件コード制御である。種雑フィール
ドビット22−26がデコードされて、達成される特定のオ
ペレーションを決める。Basic、Shift、Specialのタイ
プは全て、AABus46上のデータソース即ちALUB入力を選
択する「B」フィールド(ビット37−37)を有する。Sh
iftタイプはシフター48内で達成されるべきシフト機能
及びシフト値(ゼロから32ビットのビット数)を決める
フィールド(ビット38−46)を有している。マイクロイ
ンストラクションフォーマットのConstantタイプは、マ
イクロインストラクション直定数オペレーション用の、
AABusへの定数発生器62を介してロードされる定数(ビ
ット34−41)及び定数位置を決めるための位置フィール
ド(ビット42−43)を含む。ALUによって達成されるべ
き機能(例えば、加算、減算、Pass等)はビット44−48
のBasicフォーマット又はビット44−46のConstantフォ
ーマットによって決められる。Basicのビット38はデー
タワード長制御であり、ビット39−43はメモリー要求機
能を決める。
マットが同様に示されている。特に、制御記憶の出力に
於けるバス28上に現れる34ビット部分が示されている。
マイクロインストラクションの4つの一般形態が使用さ
れ、それらはBasic、Constant、Shift及びSpecialと呼
ばれる。これら各々に対して、ビット16−33へ同じであ
り、実行ユニット内のAAbus33のソースを選択する6ビ
ット「A」フィールド(ビット16−22)及び行き先即
ち、レジスタファイル50内の或るレジスタ様な、書き込
みバスが書き込まれる場所を選択する「W」フィールド
(ビット28−33)を含む。ビット27はプロセッサ状態レ
ジスタ61に対する条件コード制御である。種雑フィール
ドビット22−26がデコードされて、達成される特定のオ
ペレーションを決める。Basic、Shift、Specialのタイ
プは全て、AABus46上のデータソース即ちALUB入力を選
択する「B」フィールド(ビット37−37)を有する。Sh
iftタイプはシフター48内で達成されるべきシフト機能
及びシフト値(ゼロから32ビットのビット数)を決める
フィールド(ビット38−46)を有している。マイクロイ
ンストラクションフォーマットのConstantタイプは、マ
イクロインストラクション直定数オペレーション用の、
AABusへの定数発生器62を介してロードされる定数(ビ
ット34−41)及び定数位置を決めるための位置フィール
ド(ビット42−43)を含む。ALUによって達成されるべ
き機能(例えば、加算、減算、Pass等)はビット44−48
のBasicフォーマット又はビット44−46のConstantフォ
ーマットによって決められる。Basicのビット38はデー
タワード長制御であり、ビット39−43はメモリー要求機
能を決める。
インストラクションユニット 第5図において、インストラクションユニット20の内部
構造が示されている。インストラクションは内部データ
バス41からプリフェッチキュー90へロードされる。この
プリフェッチキューは4つの32ビットのロングワード
(4つの4バイトインストラクション及びオペランドワ
ード)を保持する一組の高速レジスタとして構成された
FIFOである。インストラクショが、1或いは2バイトの
OPコードに続く可変数のオペランド及び特定子を有する
可変長であり、ワードの境界上で整列しない場合がある
ので、プリフェッチキュー90は、直ちにアクセスされる
べき次のインストラクション又はオペランドの解析及び
デコードを開始するの必要とされるその情報を許容する
よう働く。このプリフェッチキューは1マシンサイクル
内で2ロングワードまでシフトアップすることかでき
る。インストラクションストリームデータは、キューが
充填されない時は何時でもプリフェッチキュー90の入力
に入力される。他のシステムプロセスはデータパスを要
求しない。プリフェッチマルチプレクサ91は4ビットア
ドレス情報をプリフェッチポインタ92から受け、出力93
にプレフェッチキュー90から6バイトを生成する。この
6バイトはOPコードから始まる次の6有効バイトを表
す。このOPコードはロングワード境界上にないかもしれ
ない。出力93はOPコードバイト93a、特定子バイト93b及
びマルチプレクサ91によってキュー90から選択され、キ
ューのバイト位置の何れかにおいて始まる特定子拡張フ
ィールドの4バイト93cを含む。これら6バイトの二つ
は一組みのデコーダ或いはOPコードデコーダ94を含む一
組のPLA及び特定子デコーダ95に供給される。
構造が示されている。インストラクションは内部データ
バス41からプリフェッチキュー90へロードされる。この
プリフェッチキューは4つの32ビットのロングワード
(4つの4バイトインストラクション及びオペランドワ
ード)を保持する一組の高速レジスタとして構成された
FIFOである。インストラクショが、1或いは2バイトの
OPコードに続く可変数のオペランド及び特定子を有する
可変長であり、ワードの境界上で整列しない場合がある
ので、プリフェッチキュー90は、直ちにアクセスされる
べき次のインストラクション又はオペランドの解析及び
デコードを開始するの必要とされるその情報を許容する
よう働く。このプリフェッチキューは1マシンサイクル
内で2ロングワードまでシフトアップすることかでき
る。インストラクションストリームデータは、キューが
充填されない時は何時でもプリフェッチキュー90の入力
に入力される。他のシステムプロセスはデータパスを要
求しない。プリフェッチマルチプレクサ91は4ビットア
ドレス情報をプリフェッチポインタ92から受け、出力93
にプレフェッチキュー90から6バイトを生成する。この
6バイトはOPコードから始まる次の6有効バイトを表
す。このOPコードはロングワード境界上にないかもしれ
ない。出力93はOPコードバイト93a、特定子バイト93b及
びマルチプレクサ91によってキュー90から選択され、キ
ューのバイト位置の何れかにおいて始まる特定子拡張フ
ィールドの4バイト93cを含む。これら6バイトの二つ
は一組みのデコーダ或いはOPコードデコーダ94を含む一
組のPLA及び特定子デコーダ95に供給される。
出力93a上のPOコードに基づいて、デコーダ94は出力96
上にアクセスタイプのデータ長制御ビットの数種の組み
(AT/DL制御と呼ばれる)を生成する。各オペランドに
対する一つの組みがこのインストラクションに使用され
る。マルチプレクサ97はこの出力96を受信し、決められ
たようにして各オペランドに対して一つの組みを選択す
る。マルチプレクサ97の出力はラッチ98に保持され、そ
れから実行ユニット21へ行く制御バス38のAT/DL部分が
得られる。
上にアクセスタイプのデータ長制御ビットの数種の組み
(AT/DL制御と呼ばれる)を生成する。各オペランドに
対する一つの組みがこのインストラクションに使用され
る。マルチプレクサ97はこの出力96を受信し、決められ
たようにして各オペランドに対して一つの組みを選択す
る。マルチプレクサ97の出力はラッチ98に保持され、そ
れから実行ユニット21へ行く制御バス38のAT/DL部分が
得られる。
タスク指名マルチプレクサ100は、マイクロシークエン
サ23に送られるべきタスク指定アドレスがインストラク
ションデコーダ94からの実行タスク指定、特定子バイト
デコーダ95からの特定子、停止タスク指定のいずれであ
るかを選択する。
サ23に送られるべきタスク指定アドレスがインストラク
ションデコーダ94からの実行タスク指定、特定子バイト
デコーダ95からの特定子、停止タスク指定のいずれであ
るかを選択する。
停止タスク指名は、プリフェッチキュー90内に実行或い
は特定子タスク指名を決めるために十分なバイトがない
場合発生される。この停止タスク指名はタスク指名アド
レスをマイクロシークエンサ23に単に強制的に送って、
マイクロインストラクションをアドレスする。このマイ
クロインストラクションはIボックスに戻る「デコーダ
次」要求を発生するだけであり、従って、何も行わない
サイクルが導入されて、Iボックスがプリフェッチキュ
ーを充填することが許容される。このマルチプレクサ10
0からの11ビットアドレス出力はタスク指名アドレスラ
ッチ101にラッチされ、サイロイングのために利用可能
となる。キュー90からの出力93c上の4バイトまでの特
定子拡張データはラッチ102に与えられる。このラッチ
から、特定子拡張データは、存在する特定の拡張データ
の符号を拡張し且つ正しく評価するフォーマッタ103を
通過し、このデータが32ビットバス43によって実行ユニ
ット21に接続され別のラッチ104に通過される。
は特定子タスク指名を決めるために十分なバイトがない
場合発生される。この停止タスク指名はタスク指名アド
レスをマイクロシークエンサ23に単に強制的に送って、
マイクロインストラクションをアドレスする。このマイ
クロインストラクションはIボックスに戻る「デコーダ
次」要求を発生するだけであり、従って、何も行わない
サイクルが導入されて、Iボックスがプリフェッチキュ
ーを充填することが許容される。このマルチプレクサ10
0からの11ビットアドレス出力はタスク指名アドレスラ
ッチ101にラッチされ、サイロイングのために利用可能
となる。キュー90からの出力93c上の4バイトまでの特
定子拡張データはラッチ102に与えられる。このラッチ
から、特定子拡張データは、存在する特定の拡張データ
の符号を拡張し且つ正しく評価するフォーマッタ103を
通過し、このデータが32ビットバス43によって実行ユニ
ット21に接続され別のラッチ104に通過される。
また、Iボックスはラッチ105内にデルタPC値を生成す
る。Eボックスプログラムカウンタ56が現在処理されて
いるOPコード及び特定子内のバイドの数に基づいている
次のOPコード又は特定子を指定するよう、プログラムカ
ウンタ56が増分されるべき量をデルタPC値は表す。ラッ
チ105内のデルタPC値はPLAによって変化され、次にラッ
チ106にロードされ、バス38を介してEボックスによっ
て使用されるために次のマシンサイクルにおいて利用可
能となる。更に、Iボックスはラッチ107内の4ビットR
Nフィールドを生成する。ラッチ107は現レジスタ又は実
行マイクロフローに対して使用されるべきレジスタファ
イル50内の16の汎用目的レジスタの一つの特定する。こ
のRNフィールドは、特定子のレジスタフィールドから導
かれる。更に、3ビットSNフィールドがラッチ108内で
作り出され、現特定子フローの結果を記憶するのに使用
されるべきレジスタファイル50内のメモリーデータレジ
スタを特定する。ラッチ108内の値はPLA内で変換され、
バス38を介して第3のサイクル内でEボックスによる使
用のために準備される。第2のサイクルで、ラッチ109
へロードされる。
る。Eボックスプログラムカウンタ56が現在処理されて
いるOPコード及び特定子内のバイドの数に基づいている
次のOPコード又は特定子を指定するよう、プログラムカ
ウンタ56が増分されるべき量をデルタPC値は表す。ラッ
チ105内のデルタPC値はPLAによって変化され、次にラッ
チ106にロードされ、バス38を介してEボックスによっ
て使用されるために次のマシンサイクルにおいて利用可
能となる。更に、Iボックスはラッチ107内の4ビットR
Nフィールドを生成する。ラッチ107は現レジスタ又は実
行マイクロフローに対して使用されるべきレジスタファ
イル50内の16の汎用目的レジスタの一つの特定する。こ
のRNフィールドは、特定子のレジスタフィールドから導
かれる。更に、3ビットSNフィールドがラッチ108内で
作り出され、現特定子フローの結果を記憶するのに使用
されるべきレジスタファイル50内のメモリーデータレジ
スタを特定する。ラッチ108内の値はPLA内で変換され、
バス38を介して第3のサイクル内でEボックスによる使
用のために準備される。第2のサイクルで、ラッチ109
へロードされる。
メモリー管理ユニット メモリー管理ユニット30が第6図に詳細に示される。イ
ンストラクション又はデータの読み出し又は書き込みの
為のアドレスは32ビット仮想アドレスバス110上に現れ
る。この仮想アドレスは翻訳バッファー111内で使用さ
れ、内部アドレスバス31へ行くバス32上に現れる物理的
即ち現実のアドレスを発生する。仮想アドレスは実行ユ
ニット21内のALU45の出力に発生され、ALU出力バスによ
って仮想アドレスバス110へ与えられる。仮想アドレス
は、或いは3つのレジスタから出力112を介してバス110
へロードする場合がある。この3つのレジスタとは仮想
アドレスレジスタ(VA)113、仮想アドレス一次レジス
タ(VAP)114、及び仮想インストラクションバッファー
アドレス(VIBA)レジスタ115である。この3つのレジ
スタ113、114及び115は、メインデータパス及び実行ユ
ニット21のALUを使用することなく、多くのアドレスが
発生されることを可能とする。これらレジスタの各々
は、マイクロインストラクションのW及びAフィールド
の制御下で、入力116を介して書き込みバス35から書き
込みでき、出力117及びAABus33を介して読み出しでき
る。VAレジスタ113は、書き込み操作のためのアドレス
を与え、全てのメモリー要求に対するバス110から仮想
アドレスをラッチする。それでもしメモリー管理例外が
生じると、マイクロインストラクションはVAレジスタ11
3内の誤りアドレスを常にアクセスできる。VAPレジスタ
114が常にVAバス110をプラス4にラッチする。それで、
次のシークエンスのロングワードのアドレスを含む。こ
のVAPレジスタはマイクロインストラクションによって
使用され、複数のロングワードをアクセスし、また整列
されないメモリーリファレンス、即ち完遂される第2の
リファレンスを要求するメモリーリファレンスの第2の
ロングワードをアクセスする。マイクロインストラクシ
ョンが、プログラムカウンタ56のフラッシュ及びロード
を達成するときは何時でも、VIBAレジスタ115はロード
される。VIBAレジスタは次にメモリーからインストラク
ションストリームデータのロングワードをプリフェッチ
するのに使用され、フィフェッチキュー90を満たし、全
インストラクションストリームロングワードの後に4だ
け増分される。インクリメンターはレジスタ114及び115
を4だけ増分する機能を有する。
ンストラクション又はデータの読み出し又は書き込みの
為のアドレスは32ビット仮想アドレスバス110上に現れ
る。この仮想アドレスは翻訳バッファー111内で使用さ
れ、内部アドレスバス31へ行くバス32上に現れる物理的
即ち現実のアドレスを発生する。仮想アドレスは実行ユ
ニット21内のALU45の出力に発生され、ALU出力バスによ
って仮想アドレスバス110へ与えられる。仮想アドレス
は、或いは3つのレジスタから出力112を介してバス110
へロードする場合がある。この3つのレジスタとは仮想
アドレスレジスタ(VA)113、仮想アドレス一次レジス
タ(VAP)114、及び仮想インストラクションバッファー
アドレス(VIBA)レジスタ115である。この3つのレジ
スタ113、114及び115は、メインデータパス及び実行ユ
ニット21のALUを使用することなく、多くのアドレスが
発生されることを可能とする。これらレジスタの各々
は、マイクロインストラクションのW及びAフィールド
の制御下で、入力116を介して書き込みバス35から書き
込みでき、出力117及びAABus33を介して読み出しでき
る。VAレジスタ113は、書き込み操作のためのアドレス
を与え、全てのメモリー要求に対するバス110から仮想
アドレスをラッチする。それでもしメモリー管理例外が
生じると、マイクロインストラクションはVAレジスタ11
3内の誤りアドレスを常にアクセスできる。VAPレジスタ
114が常にVAバス110をプラス4にラッチする。それで、
次のシークエンスのロングワードのアドレスを含む。こ
のVAPレジスタはマイクロインストラクションによって
使用され、複数のロングワードをアクセスし、また整列
されないメモリーリファレンス、即ち完遂される第2の
リファレンスを要求するメモリーリファレンスの第2の
ロングワードをアクセスする。マイクロインストラクシ
ョンが、プログラムカウンタ56のフラッシュ及びロード
を達成するときは何時でも、VIBAレジスタ115はロード
される。VIBAレジスタは次にメモリーからインストラク
ションストリームデータのロングワードをプリフェッチ
するのに使用され、フィフェッチキュー90を満たし、全
インストラクションストリームロングワードの後に4だ
け増分される。インクリメンターはレジスタ114及び115
を4だけ増分する機能を有する。
翻訳バッファー111は、64のロケーション(記憶位置)
を有する。各ロケーションは最新の連続する翻訳のタグ
をこのタグのページテーブルエントリ(PTE)と共に含
む。翻訳バッファーによってバス110から受信される各
仮想アドレスのページアドレス(ビット9−31)は全て
の64エントリの23ビットタグと比較される。一致する場
合、一致したダクに対応するPTEはバス119(21ビット)
上の出力である。仮想アドレスバス110のより低い30ビ
ットがバス120上に現れる。このバスからビット0−8
がライン121を介して内部アドレスバス32に直接加わ
り、ページ内のバイトアドレスを構成する。VAバス110
からの21ビット9−29は、バス120を介してのマルチプ
レクサ122への一方の入力である。翻訳バッファーから
のPTEはバス119を介しての別の入力である。それで、内
部アドレスバス31へバス32を介して加えられるアドレス
のより上方の21ビット部分は従ってVAバスから直接或い
はバッファー111及びPTEを介して翻訳されて得られる。
従って、マイクロインストラクション制御によって、内
部アドレスバス31に加えられるアドレスはVAバス110か
ら直接得られるか又は翻訳バッファー111を使用する翻
訳アドレスである。
を有する。各ロケーションは最新の連続する翻訳のタグ
をこのタグのページテーブルエントリ(PTE)と共に含
む。翻訳バッファーによってバス110から受信される各
仮想アドレスのページアドレス(ビット9−31)は全て
の64エントリの23ビットタグと比較される。一致する場
合、一致したダクに対応するPTEはバス119(21ビット)
上の出力である。仮想アドレスバス110のより低い30ビ
ットがバス120上に現れる。このバスからビット0−8
がライン121を介して内部アドレスバス32に直接加わ
り、ページ内のバイトアドレスを構成する。VAバス110
からの21ビット9−29は、バス120を介してのマルチプ
レクサ122への一方の入力である。翻訳バッファーから
のPTEはバス119を介しての別の入力である。それで、内
部アドレスバス31へバス32を介して加えられるアドレス
のより上方の21ビット部分は従ってVAバスから直接或い
はバッファー111及びPTEを介して翻訳されて得られる。
従って、マイクロインストラクション制御によって、内
部アドレスバス31に加えられるアドレスはVAバス110か
ら直接得られるか又は翻訳バッファー111を使用する翻
訳アドレスである。
VAバス110上のアドレスのページはバッファー111内の64
個のダク内に無く、翻訳アドレスが特定される場合、誤
り条件:TB誤りが発生される。マイクロシークエンサ23
は、メモリー15或いはキャッシュ内にオペーレーティン
グシステムによって維持されるテーブル内でページアド
レスがルップアップされることを可能にするルーチンに
対する開始アドレスを生成する。もちろん、これは達成
される多数のマイクロインストラクションサイクルを必
要とする。
個のダク内に無く、翻訳アドレスが特定される場合、誤
り条件:TB誤りが発生される。マイクロシークエンサ23
は、メモリー15或いはキャッシュ内にオペーレーティン
グシステムによって維持されるテーブル内でページアド
レスがルップアップされることを可能にするルーチンに
対する開始アドレスを生成する。もちろん、これは達成
される多数のマイクロインストラクションサイクルを必
要とする。
主キャッシュ 第7図を参照する。主キャシュ即ちPキャッシュ40がよ
り詳細に示される。このキャッシュは2Kバイト高速メモ
リー130を含む。この高速メモリーは内部アドレスバス3
1によってアドレスされ、内部データバス41間での読み
出し書き込みを行う。このメモリー130は各行に於ける
4つの4倍ワードQW0、QW1、QW2及びQW4及び4つの対応
するタグTag0、Tag1、Tag2、Tag3を有する(各4倍ワー
ドに対して一つのタグが対応する)64行として構成され
ている。行デコーダ132は内部アドレスバス31からライ
ン133上の6つのビット3−8に基づいて64の内の1つ
を選択する。
り詳細に示される。このキャッシュは2Kバイト高速メモ
リー130を含む。この高速メモリーは内部アドレスバス3
1によってアドレスされ、内部データバス41間での読み
出し書き込みを行う。このメモリー130は各行に於ける
4つの4倍ワードQW0、QW1、QW2及びQW4及び4つの対応
するタグTag0、Tag1、Tag2、Tag3を有する(各4倍ワー
ドに対して一つのタグが対応する)64行として構成され
ている。行デコーダ132は内部アドレスバス31からライ
ン133上の6つのビット3−8に基づいて64の内の1つ
を選択する。
選択された行はデータに対する列デコータ134及びタグ
に対する行デコータ135にロードされる。ここで、4の
1選択はIAバス31からライン136上に二つのビット9−1
0に基づいて成される。この方法により、一つのダグ(2
0ビット)及び4倍ワード(64ビッド或いは8バイト)
はPキャッシュ内のデータ及びタグI/Oバス137及び138
に於いて選択される。データバス137はセンスアンプ139
によってよまれるか、書き込みアンプ140によって書き
込まれる。別の2の1選択はIAバス31からライン141上
のビット2に基づいてなされる。その結果、選択された
32ビット即ち4つのバイトは、タグヒットが有る場合、
内部バス41間でロード或いは転送が行われる。キャッシ
ュメモリー130内の選択ロケーションから読み出された
タグは、ライン144を介するIAバス31からの18ビット11
−28とコンパレータ143で比較される。全てのビットが
同じで或る場合、ヒットがライン145上に発せられる。
このライン145から、ミス(miss)論理146はPキャッシ
ュヒット出力をライン147上に生成する。これは、ライ
ン149を介しての内部アドレスバス31のビット29が、I/O
リファレンスがキャッシュされず、リファレンスがI/O
スペースに対応することを示さない場合に行われる。書
き込みアンプ150は、キャッシュ130が充填される時、タ
グをロードするためにタグI/Oバス138のために設けられ
ている。
に対する行デコータ135にロードされる。ここで、4の
1選択はIAバス31からライン136上に二つのビット9−1
0に基づいて成される。この方法により、一つのダグ(2
0ビット)及び4倍ワード(64ビッド或いは8バイト)
はPキャッシュ内のデータ及びタグI/Oバス137及び138
に於いて選択される。データバス137はセンスアンプ139
によってよまれるか、書き込みアンプ140によって書き
込まれる。別の2の1選択はIAバス31からライン141上
のビット2に基づいてなされる。その結果、選択された
32ビット即ち4つのバイトは、タグヒットが有る場合、
内部バス41間でロード或いは転送が行われる。キャッシ
ュメモリー130内の選択ロケーションから読み出された
タグは、ライン144を介するIAバス31からの18ビット11
−28とコンパレータ143で比較される。全てのビットが
同じで或る場合、ヒットがライン145上に発せられる。
このライン145から、ミス(miss)論理146はPキャッシ
ュヒット出力をライン147上に生成する。これは、ライ
ン149を介しての内部アドレスバス31のビット29が、I/O
リファレンスがキャッシュされず、リファレンスがI/O
スペースに対応することを示さない場合に行われる。書
き込みアンプ150は、キャッシュ130が充填される時、タ
グをロードするためにタグI/Oバス138のために設けられ
ている。
バスインターフェース 第8図を参照する。バスインターフェースユニット42が
内部アドレスバス31上の30ビット物理アドレスに基づく
27ビットシステムアドレスバス12を駆動する。このビッ
ト数の違いは、バス31上30ビットアドレスはバイドアド
レスであり、バス12上の27ビットが4倍ワード(8バイ
ト)に対して整列せれており、システムバス11の4倍ワ
ード(64ビット)に対応させるためによる。この変換を
許容し、且つ整列された又は整列されていない種々のデ
ータ長を許容するために、制御バス13は8ビットバイト
フィールドを含む。これは、8つの可能なバイト位置の
各々に対して1ビットを含む。バスインターフェース内
の制御器155は、メモリー管理ユニット内で発生される
内部4ビットバイトマスクに基づいてシステム制御バス
に与えられる8ビットバイトマスクを含んでおり、ライ
ン156によってバスインターフエースに接続される。バ
スインターフェース内の制御器155はシステム制御バス
に与えられる8ビットバイトマスクを発生する。この8
ビットバイトマスクは、メモリー管理ユニット内で生成
され且つライン156によってバスインターフェースに接
続される内部4ビットバイトマスクに基づいている。メ
モリー管理ユニットはライン36上のデータ長DL制御ビッ
トを、バス38を介してIボックス20内のOPコード及びオ
ペランド特定子のデコードに使用する。もちろん、バス
31上のアドレスのより低いビット0−2は開始バイトア
ドレスを決める。この方法において、変換が32ビット内
部データバス41及び64ビットシステムデータバス間及び
30ビット内部アドレスバス及び27ビットシステムアドシ
レスバスとの間でなされる。
内部アドレスバス31上の30ビット物理アドレスに基づく
27ビットシステムアドレスバス12を駆動する。このビッ
ト数の違いは、バス31上30ビットアドレスはバイドアド
レスであり、バス12上の27ビットが4倍ワード(8バイ
ト)に対して整列せれており、システムバス11の4倍ワ
ード(64ビット)に対応させるためによる。この変換を
許容し、且つ整列された又は整列されていない種々のデ
ータ長を許容するために、制御バス13は8ビットバイト
フィールドを含む。これは、8つの可能なバイト位置の
各々に対して1ビットを含む。バスインターフェース内
の制御器155は、メモリー管理ユニット内で発生される
内部4ビットバイトマスクに基づいてシステム制御バス
に与えられる8ビットバイトマスクを含んでおり、ライ
ン156によってバスインターフエースに接続される。バ
スインターフェース内の制御器155はシステム制御バス
に与えられる8ビットバイトマスクを発生する。この8
ビットバイトマスクは、メモリー管理ユニット内で生成
され且つライン156によってバスインターフェースに接
続される内部4ビットバイトマスクに基づいている。メ
モリー管理ユニットはライン36上のデータ長DL制御ビッ
トを、バス38を介してIボックス20内のOPコード及びオ
ペランド特定子のデコードに使用する。もちろん、バス
31上のアドレスのより低いビット0−2は開始バイトア
ドレスを決める。この方法において、変換が32ビット内
部データバス41及び64ビットシステムデータバス間及び
30ビット内部アドレスバス及び27ビットシステムアドシ
レスバスとの間でなされる。
システムコントロールバス13は4ビットコマンドを含
む。このコマンドはバスインターフェースユニット42の
制御器155によって制御され又は受信される。このバス
コマンドは、いかなるオペレーションがシステムバス上
で起こるかをを決める。即ちメモリー15からのCPU10読
み出しインストラクションストリーム4倍ワード、CPU1
0読み出しデータストリーム4倍ワード、メモリー10へ
のCPU10書き込み等を決める。この4ビットコマンド
は、制御バス13の別のラインであるアドレスストローブ
と共に発生される。このバス13はReady、Read、DMA要
求、割り込み、Halt、及びコプロセッサ制御も含む。こ
れらは、完全なシステムを実行するために必要となるこ
とがある。
む。このコマンドはバスインターフェースユニット42の
制御器155によって制御され又は受信される。このバス
コマンドは、いかなるオペレーションがシステムバス上
で起こるかをを決める。即ちメモリー15からのCPU10読
み出しインストラクションストリーム4倍ワード、CPU1
0読み出しデータストリーム4倍ワード、メモリー10へ
のCPU10書き込み等を決める。この4ビットコマンド
は、制御バス13の別のラインであるアドレスストローブ
と共に発生される。このバス13はReady、Read、DMA要
求、割り込み、Halt、及びコプロセッサ制御も含む。こ
れらは、完全なシステムを実行するために必要となるこ
とがある。
データ及びアドレス及びバスコマンドは、入力ラッチ15
8及びデュアル出力ラッチ159によって入出力される。こ
れらラッチの各々は64ビットデータレジスタ16、27ビッ
トアドレスレジスタ161、及びバスコマンドレジスタ162
を含む。この様にして、入力ラッチ158は一サイクルで
バス11から64ビット4倍ワードを受信し、二つの32ビッ
トロングワードを二サイクルで内部バス41に転送する。
同様にして、各出力ラッチ159は二サイクルで二つの32
ビットロングワードをロードできる。次に64ビット4倍
ワードが一サイクルでシステムバスに11に転送すること
ができる。二つの同じ出力ラッチを有うすることの理由
は、CPUがメモリーに書き込む速度を上昇することにあ
る。バス11への出力ラッチの転送は、第3のサイクルま
で(バス41から両出力ラッチへのロードが完了した後)
生じないからである。二つの出力ラッチを有すると、第
1のラッチがシステムデータバス11へ転送されている間
に、第2のラッチがロードできる。
8及びデュアル出力ラッチ159によって入出力される。こ
れらラッチの各々は64ビットデータレジスタ16、27ビッ
トアドレスレジスタ161、及びバスコマンドレジスタ162
を含む。この様にして、入力ラッチ158は一サイクルで
バス11から64ビット4倍ワードを受信し、二つの32ビッ
トロングワードを二サイクルで内部バス41に転送する。
同様にして、各出力ラッチ159は二サイクルで二つの32
ビットロングワードをロードできる。次に64ビット4倍
ワードが一サイクルでシステムバスに11に転送すること
ができる。二つの同じ出力ラッチを有うすることの理由
は、CPUがメモリーに書き込む速度を上昇することにあ
る。バス11への出力ラッチの転送は、第3のサイクルま
で(バス41から両出力ラッチへのロードが完了した後)
生じないからである。二つの出力ラッチを有すると、第
1のラッチがシステムデータバス11へ転送されている間
に、第2のラッチがロードできる。
メモリーリードトランザクションは、内部命令バス125
がメモリー読み出しを指示した時にバスインターフェー
スユニット42によって実行される。メモリ管理ユニット
30から信号され、このメモリー管理ユニットが内部アド
レスバス31上に送られる物理アドレスによって特定され
るデータを要求する時前記トランザクションが発生す
る。このアドレスが一次キャッシュ40タグ記憶内に見出
される場合、キャッシュ40はデータを内部データバス41
に送る。意図された受信器(Iボックス或いはEボック
ス)はデータバス41からのデータをラッチする。タグが
一次キャッシュのタグコンパレータ143にない場合、ラ
イン147上にタグヒット信号は発生せず、ライン125上の
読み出しコマンド及びバス31上の物理アドレスは出力ラ
ッチ159にロードされる。制御器115は、システムバスが
次の数サイクルで利用可能な場合はいつでも処理を開始
し、この読み出し要求をサービスする。要求データが入
力ラッチ158に受信されてラッチされるまでに、Mボッ
クス30からの別のコマンドはサービスされない。このユ
ニット42は入力ラッチからのデータをバス41上、従っ
て、意図された行き先、Iボックス、Eボックス或いは
Pボックスへ送る。例えば、一次キャッシュがなくデー
タがメインメモリ15からフェッチされねばならない場合
は、読み出しトランザクションは、CPUパイプラインが
停止している間6マシンサイクルを必要とする場合があ
る。メモリー書き込みシークエンスはMボックスによっ
て内部コマンドバス125上に発生される書き込みコマン
ドから始まる。この始まりの際、Mボックスは内部バイ
トマスクをライン156上に送る。キャッシュ40が「通し
書き込み」タイプであるので、全てのメモリー書き込み
はキャッシュ内で「試みられ」そしてメインメモリ内で
実行される。従って、書き込みコマンドが内部コマンド
バス125上にあると、Pキャッシュ40はバス31上のアド
レスをそのダク配列と比較する。リファレンスがヒット
すると、IDバス41上のデータはメモリー30内に書き込ま
れる。タグ比較がないと、IAバス31、IDバス41、内部コ
マンドバス125及びバイトマスク上のデータは全てロー
ド出力ラッチにロードされ、外部書き込みコマンドシー
クエンスがメインメモリ(及びもし使用さるならバック
アップキャッシュ)に書き込まれるようにされる。
がメモリー読み出しを指示した時にバスインターフェー
スユニット42によって実行される。メモリ管理ユニット
30から信号され、このメモリー管理ユニットが内部アド
レスバス31上に送られる物理アドレスによって特定され
るデータを要求する時前記トランザクションが発生す
る。このアドレスが一次キャッシュ40タグ記憶内に見出
される場合、キャッシュ40はデータを内部データバス41
に送る。意図された受信器(Iボックス或いはEボック
ス)はデータバス41からのデータをラッチする。タグが
一次キャッシュのタグコンパレータ143にない場合、ラ
イン147上にタグヒット信号は発生せず、ライン125上の
読み出しコマンド及びバス31上の物理アドレスは出力ラ
ッチ159にロードされる。制御器115は、システムバスが
次の数サイクルで利用可能な場合はいつでも処理を開始
し、この読み出し要求をサービスする。要求データが入
力ラッチ158に受信されてラッチされるまでに、Mボッ
クス30からの別のコマンドはサービスされない。このユ
ニット42は入力ラッチからのデータをバス41上、従っ
て、意図された行き先、Iボックス、Eボックス或いは
Pボックスへ送る。例えば、一次キャッシュがなくデー
タがメインメモリ15からフェッチされねばならない場合
は、読み出しトランザクションは、CPUパイプラインが
停止している間6マシンサイクルを必要とする場合があ
る。メモリー書き込みシークエンスはMボックスによっ
て内部コマンドバス125上に発生される書き込みコマン
ドから始まる。この始まりの際、Mボックスは内部バイ
トマスクをライン156上に送る。キャッシュ40が「通し
書き込み」タイプであるので、全てのメモリー書き込み
はキャッシュ内で「試みられ」そしてメインメモリ内で
実行される。従って、書き込みコマンドが内部コマンド
バス125上にあると、Pキャッシュ40はバス31上のアド
レスをそのダク配列と比較する。リファレンスがヒット
すると、IDバス41上のデータはメモリー30内に書き込ま
れる。タグ比較がないと、IAバス31、IDバス41、内部コ
マンドバス125及びバイトマスク上のデータは全てロー
ド出力ラッチにロードされ、外部書き込みコマンドシー
クエンスがメインメモリ(及びもし使用さるならバック
アップキャッシュ)に書き込まれるようにされる。
パイプライン 第1図及び第8図のCPUは高度にパイプラインイ化され
ており、インストラクジョンの実行における事象は多く
のマシンサイクルに渡って、広がる。多くのインストラ
クションの部分の実行はオーバーラップ、即ち同時にお
こる。CPUは第9図に一般的に示される様に5つのセグ
メントからなるパイプラインを使用している。ここで、
インストラクションI1はその実行をサイクル1間のセグ
メントs1で開始し、サイクル5におけるセグメントs5ま
で続く。インストラクションI2はサイクル2内のセグメ
ントs1で実行され(その時、インストラクションI1はセ
グメントs2にある)、サイクル6のセグメントs5まで続
く。サイクル5以降に於いて、パイプラインの5つのセ
グメント内で並列に実行される5つの異なるインストラ
クションが存在する。もちろん、第9図は理想状態であ
り、全てのインストラクションが正確に5つのセグメン
トで実行されると仮定されている。そして、停止或いは
例号もない。この理想状態においては、平均実行速度は
一マシンサイクル当たり一インストラクションである。
ており、インストラクジョンの実行における事象は多く
のマシンサイクルに渡って、広がる。多くのインストラ
クションの部分の実行はオーバーラップ、即ち同時にお
こる。CPUは第9図に一般的に示される様に5つのセグ
メントからなるパイプラインを使用している。ここで、
インストラクションI1はその実行をサイクル1間のセグ
メントs1で開始し、サイクル5におけるセグメントs5ま
で続く。インストラクションI2はサイクル2内のセグメ
ントs1で実行され(その時、インストラクションI1はセ
グメントs2にある)、サイクル6のセグメントs5まで続
く。サイクル5以降に於いて、パイプラインの5つのセ
グメント内で並列に実行される5つの異なるインストラ
クションが存在する。もちろん、第9図は理想状態であ
り、全てのインストラクションが正確に5つのセグメン
トで実行されると仮定されている。そして、停止或いは
例号もない。この理想状態においては、平均実行速度は
一マシンサイクル当たり一インストラクションである。
第1図から第8図のCPU内のパイフラインの5つのセグ
メントで生じる5つの事象は、最も完全に第10図に示さ
れている。第1に、第11図を参照すると、CPU10はクロ
ック発生器44によってクロックされ、同じ長さの4つ位
相P1、P2、P3、P4を各マシンサイクルで与えることが分
かる。これらクロック位相は、具体的な実施例におい
て、CPU10を構成するために使用されるCMOS回路を駆動
するのに使用される。
メントで生じる5つの事象は、最も完全に第10図に示さ
れている。第1に、第11図を参照すると、CPU10はクロ
ック発生器44によってクロックされ、同じ長さの4つ位
相P1、P2、P3、P4を各マシンサイクルで与えることが分
かる。これらクロック位相は、具体的な実施例におい
て、CPU10を構成するために使用されるCMOS回路を駆動
するのに使用される。
第10図のセグメント1において、インストラクションユ
ニット20が、位相P1間でプリフェッチキュー90に存在す
る正しいインストラクション及びオペランド特定子を有
すると、この情報はP2及びP3の間デコーダ94及び95内で
デコードされ、タスク指名マルチプレクサ100の出力がP
4で利用可能であり、ラッチ102にタスク指定アドレスが
ロードされる。ラッチ102にP4において解析された(Par
sed)特定子拡張を有する。これは、インストラクショ
ンストリームのデータ部分である。
ニット20が、位相P1間でプリフェッチキュー90に存在す
る正しいインストラクション及びオペランド特定子を有
すると、この情報はP2及びP3の間デコーダ94及び95内で
デコードされ、タスク指名マルチプレクサ100の出力がP
4で利用可能であり、ラッチ102にタスク指定アドレスが
ロードされる。ラッチ102にP4において解析された(Par
sed)特定子拡張を有する。これは、インストラクショ
ンストリームのデータ部分である。
セグメント2に於いて、タスク指名アドレスはP1の間バ
ス上に送られ、そして制御記憶22はP2及びP3の間アクセ
スされる。マイクロインストラクションはこのセグメン
トのP4の間出力26において利用可能であり、次のサイク
ルのP1に於いて実行ユニットの制御要素の第1のレベル
をロードするのに準備されている。また、このセグメン
ト2において、特定子拡張が少しでもあれば、フオーマ
ッタ103を通してラッチ102からアッチ104へ行く再にフ
ォーマットされる。Sn及びRnのようなデータが計算され
ラッチされる。AT/DL情報がラッチされる。そして、こ
のデータ及び制御情報は、次のサイクルの始めにバス38
を介して実行ユニット21に対して利用可能となる。
ス上に送られ、そして制御記憶22はP2及びP3の間アクセ
スされる。マイクロインストラクションはこのセグメン
トのP4の間出力26において利用可能であり、次のサイク
ルのP1に於いて実行ユニットの制御要素の第1のレベル
をロードするのに準備されている。また、このセグメン
ト2において、特定子拡張が少しでもあれば、フオーマ
ッタ103を通してラッチ102からアッチ104へ行く再にフ
ォーマットされる。Sn及びRnのようなデータが計算され
ラッチされる。AT/DL情報がラッチされる。そして、こ
のデータ及び制御情報は、次のサイクルの始めにバス38
を介して実行ユニット21に対して利用可能となる。
CS0セグメントと呼ばれるパイプラインのセグメント3
に於いて、実行ユニット21は、種々のレジスタ又はバス
にアクセスして、AABus33及びABBus46上にオペーレート
されるべきデータを置く。これは、34ビットCS0ラッチ1
65で利用可能なバス28を介してロードされたマイクロイ
ンストラクションのA及びBの制御フィールドに基づい
て行われる。レジスタファイル50、内部データバス41、
中間データバス43は、レジスタセットの残りと同様、こ
のセグメント内のAABus及びABbusにロードされるべきオ
ペランド対する全ソースである。前記レジスタセットは
プログラムカウンタ56、メモリー管理ユニット30におけ
るアドレスレジスタ113、114及び115を含む。これらの
全てがこのサイクルにおけるP4での読み出しに対して利
用できる様設定されている。また、実行ユニットはこの
セグメントのP1の間バス38上の制御ビットを受け入れ
る。
に於いて、実行ユニット21は、種々のレジスタ又はバス
にアクセスして、AABus33及びABBus46上にオペーレート
されるべきデータを置く。これは、34ビットCS0ラッチ1
65で利用可能なバス28を介してロードされたマイクロイ
ンストラクションのA及びBの制御フィールドに基づい
て行われる。レジスタファイル50、内部データバス41、
中間データバス43は、レジスタセットの残りと同様、こ
のセグメント内のAABus及びABbusにロードされるべきオ
ペランド対する全ソースである。前記レジスタセットは
プログラムカウンタ56、メモリー管理ユニット30におけ
るアドレスレジスタ113、114及び115を含む。これらの
全てがこのサイクルにおけるP4での読み出しに対して利
用できる様設定されている。また、実行ユニットはこの
セグメントのP1の間バス38上の制御ビットを受け入れ
る。
CS1セグメンと呼ばれるセグメント4において、マイク
ロインストラクションのALU機能部分によって特定され
るオペレーションは、第4図に見られる様、それがBasi
c或いはConstantタイプである場合、ALU45で達成され、
マイクロインストラクションがShiftである場合、マイ
クロインストラクションのシフト機能及びシフト値フィ
ールドによって特定されるオペレーションがシフター48
内で達成される。制御記憶22が全サイクル中において新
たなマイクロインストラクションを生成するので、セグ
メント3で使用されたのと同じマイクロインストラクシ
ョンを最後のサイクルから記憶することが必要である。
このために、制御記憶から利用可能なマイクロインスト
ラクション出力28がCS0ラッチ165内でラッチされ、この
ラッチの出力はセグメント3内で達成されるオペレーシ
ョンに使用され、第3図に示されるように別の34ビット
CS1ラッチ166内にサイクルの最後においてラッチされ
る。従って、マイクロインストラクションはセグメント
4内における拡張ユニットに対して利用可能である。再
び、ラッチ166の出力はセグメント4の終わり(このイ
ンストラクションに対する4番目のクロックサイクル)
でセグメント5で使用するため同様のCS2ラッチ167に記
憶される。
ロインストラクションのALU機能部分によって特定され
るオペレーションは、第4図に見られる様、それがBasi
c或いはConstantタイプである場合、ALU45で達成され、
マイクロインストラクションがShiftである場合、マイ
クロインストラクションのシフト機能及びシフト値フィ
ールドによって特定されるオペレーションがシフター48
内で達成される。制御記憶22が全サイクル中において新
たなマイクロインストラクションを生成するので、セグ
メント3で使用されたのと同じマイクロインストラクシ
ョンを最後のサイクルから記憶することが必要である。
このために、制御記憶から利用可能なマイクロインスト
ラクション出力28がCS0ラッチ165内でラッチされ、この
ラッチの出力はセグメント3内で達成されるオペレーシ
ョンに使用され、第3図に示されるように別の34ビット
CS1ラッチ166内にサイクルの最後においてラッチされ
る。従って、マイクロインストラクションはセグメント
4内における拡張ユニットに対して利用可能である。再
び、ラッチ166の出力はセグメント4の終わり(このイ
ンストラクションに対する4番目のクロックサイクル)
でセグメント5で使用するため同様のCS2ラッチ167に記
憶される。
メモリー配列ユニット(MMU)30のオペレーションは拡
張ユニット21のパイプラインセグメントに対して並列的
に処理される。バス28からのインストラクションは、第
6図に示される異なるCS0ラッチ168内にセグメント3で
ラッチされ、セグメント4内で別のCS1ラッチ169内にラ
ッチされる。そてで、第4図にに示されるマイクロイン
ストラクションメモリー要求フィールドが必要な時利用
可能である。セグメント4のマシンサイクルのP2の間、
ユニット30は、バスが要求されている場合、要求をバス
インターフェースユニット(BIU)42に送る。ユニット3
0はCS1ラッチ169におけるマイクロインストラクション
によって決められるアドレスソースを、ALU出力バス3
4、VAレジスタ113等のソースから決定する。仮想アドレ
スバス110はP4の間利用可能な選択されたアドレスを有
し、翻訳バッファー111はタグルックアップを作る。セ
グメント4の終わりに、マイクロインストラクションは
CS1ラッチ169からマルチプレクサ171を通してCS2ラッチ
170へ、故障或いは例外による遅延が導入されない場合
転送される。
張ユニット21のパイプラインセグメントに対して並列的
に処理される。バス28からのインストラクションは、第
6図に示される異なるCS0ラッチ168内にセグメント3で
ラッチされ、セグメント4内で別のCS1ラッチ169内にラ
ッチされる。そてで、第4図にに示されるマイクロイン
ストラクションメモリー要求フィールドが必要な時利用
可能である。セグメント4のマシンサイクルのP2の間、
ユニット30は、バスが要求されている場合、要求をバス
インターフェースユニット(BIU)42に送る。ユニット3
0はCS1ラッチ169におけるマイクロインストラクション
によって決められるアドレスソースを、ALU出力バス3
4、VAレジスタ113等のソースから決定する。仮想アドレ
スバス110はP4の間利用可能な選択されたアドレスを有
し、翻訳バッファー111はタグルックアップを作る。セ
グメント4の終わりに、マイクロインストラクションは
CS1ラッチ169からマルチプレクサ171を通してCS2ラッチ
170へ、故障或いは例外による遅延が導入されない場合
転送される。
セグメント5において、書き込みバス35は実行ユニット
21内のALU或いはシフタ48出力によって駆動され、CS2ラ
ッチ167内のマイクロインストラクションのWフィール
ドによって決められる行き先を書き込む。可能性のある
行き先はレジスタフィールド50内の選択されたレジスタ
又はレジスタセットの選択されたレジスタ、回転子53を
介しての内部データバス41、バイパスに対するAABus或
いはAABus、又はメモリー管理機能ユニット内の仮想ア
ドレスバス110を含む。セグメント5のPIの間、メモリ
ー管理ユニット30内において、PTEは、翻訳バッファー1
11が一致を見出した時、バス119へ読み出されバス32を
介して内部アドレスバス31上に送られる。一次キャッシ
ュ40内の行デコーダがP2の間IA31からアドレスを受信
し、P2の終了によってデータ及びタグをアクセスする。
次に、タグコンパレータ143がP3におけるタグ比較を行
う。一致する場合であり、書き込みが行われている場
合、データなP3の終わりに内部バス41上で利用可能であ
り、それが書き込みの場合、キャッシュメモリー130に
書き込まれる。タグが一致しない場合、失敗がライン14
7上にP3で信号される。メモリー管理ユニットにおい
て、翻訳バッファー111はタグ一致を検出しない場合、
例外がセグメント5のP2によって決定され、物理アドレ
スを発生するためのページ数をルックアップするための
ルーチンが実行されるよう信号される。
21内のALU或いはシフタ48出力によって駆動され、CS2ラ
ッチ167内のマイクロインストラクションのWフィール
ドによって決められる行き先を書き込む。可能性のある
行き先はレジスタフィールド50内の選択されたレジスタ
又はレジスタセットの選択されたレジスタ、回転子53を
介しての内部データバス41、バイパスに対するAABus或
いはAABus、又はメモリー管理機能ユニット内の仮想ア
ドレスバス110を含む。セグメント5のPIの間、メモリ
ー管理ユニット30内において、PTEは、翻訳バッファー1
11が一致を見出した時、バス119へ読み出されバス32を
介して内部アドレスバス31上に送られる。一次キャッシ
ュ40内の行デコーダがP2の間IA31からアドレスを受信
し、P2の終了によってデータ及びタグをアクセスする。
次に、タグコンパレータ143がP3におけるタグ比較を行
う。一致する場合であり、書き込みが行われている場
合、データなP3の終わりに内部バス41上で利用可能であ
り、それが書き込みの場合、キャッシュメモリー130に
書き込まれる。タグが一致しない場合、失敗がライン14
7上にP3で信号される。メモリー管理ユニットにおい
て、翻訳バッファー111はタグ一致を検出しない場合、
例外がセグメント5のP2によって決定され、物理アドレ
スを発生するためのページ数をルックアップするための
ルーチンが実行されるよう信号される。
バブル生成及び圧縮 上述されたCPUパイプライン内におけるバブル圧縮は第1
0図のパイプラインのセグメント1及びセグメント2で
達成される。
0図のパイプラインのセグメント1及びセグメント2で
達成される。
プリフェッチキュー90が空きである時は常に、セグメン
ト1は有効なタスク指名アドレスをマイクロシークエン
サ23に送ることが出来ない。その替わり停止タスク指名
を送る。停止タスク指名をエンドフローマイクロインス
トラクションを製造する制御記憶22内の特別のアドレス
である。このエンドフローインストラクションは、第3
図に示される様にデコーダ次ライン上に信号を発生する
ことにより、新たなタスク指名をマイクロシークエンサ
23に要求させる。これは、セグメント1に別のサイクル
を与えて、新たなタスク指名アドレスを生成する効果を
有する。
ト1は有効なタスク指名アドレスをマイクロシークエン
サ23に送ることが出来ない。その替わり停止タスク指名
を送る。停止タスク指名をエンドフローマイクロインス
トラクションを製造する制御記憶22内の特別のアドレス
である。このエンドフローインストラクションは、第3
図に示される様にデコーダ次ライン上に信号を発生する
ことにより、新たなタスク指名をマイクロシークエンサ
23に要求させる。これは、セグメント1に別のサイクル
を与えて、新たなタスク指名アドレスを生成する効果を
有する。
セグメント1が第5図のタスク指名マルチプレクサ100
を介して停止タスク指名を発生するときは何時でも、ラ
ッチ101、102、105、107及び108に送られる解析及びデ
コードされたCPUインストラクション情報或いはセグメ
ント2は有効でない。本発明によると、これらラッチ10
1、102、105、107及び108は、セグメント1がマルチプ
レクサ100で停止タスク指名を発生する時は常にセット
されるオーバーライトフラグを有する。このオーバーラ
イトフラグは、ラッチが有用でない情報(バブル)を含
み、従って何時でも重ね書きできることを指示する。
を介して停止タスク指名を発生するときは何時でも、ラ
ッチ101、102、105、107及び108に送られる解析及びデ
コードされたCPUインストラクション情報或いはセグメ
ント2は有効でない。本発明によると、これらラッチ10
1、102、105、107及び108は、セグメント1がマルチプ
レクサ100で停止タスク指名を発生する時は常にセット
されるオーバーライトフラグを有する。このオーバーラ
イトフラグは、ラッチが有用でない情報(バブル)を含
み、従って何時でも重ね書きできることを指示する。
表1(第12図)はバブルがどの様にして生成されるかそ
してそれらバブルが、どの様にして本発明に従ってバブ
ルを圧縮しないマイクロプログラムCPUのパイプライン
を介して伝播するかの例を示す。ラッチ101、102等のラ
ッチに対するオーバライトフラグは存在しないと仮定し
ている。
してそれらバブルが、どの様にして本発明に従ってバブ
ルを圧縮しないマイクロプログラムCPUのパイプライン
を介して伝播するかの例を示す。ラッチ101、102等のラ
ッチに対するオーバライトフラグは存在しないと仮定し
ている。
第3図及び表1(第12図)を参照する。サイクル0にお
いて、マイクロシークエンサ23はエンドフローマイクロ
インストラクションをアドレスする。これは、第3図の
マイクロシークエンサ23が、デコーダ次ライン上に信号
を発生して、Iボックスセグメント1から新たなマイク
ロフロータスク指名アドレスを得るようにさせる。ラッ
チ102は現在マイクロワードBで始まるマイクロフロー
のタスク指名アドレスを含む。このサイクルにおいて、
セグメント1は新たな行き先アドレスを発生するための
十分なデータを有さず、従って、停止タスク指名を発生
する。
いて、マイクロシークエンサ23はエンドフローマイクロ
インストラクションをアドレスする。これは、第3図の
マイクロシークエンサ23が、デコーダ次ライン上に信号
を発生して、Iボックスセグメント1から新たなマイク
ロフロータスク指名アドレスを得るようにさせる。ラッ
チ102は現在マイクロワードBで始まるマイクロフロー
のタスク指名アドレスを含む。このサイクルにおいて、
セグメント1は新たな行き先アドレスを発生するための
十分なデータを有さず、従って、停止タスク指名を発生
する。
サイクル1に於いて、デコーダ次ラインでの信号発生
は、ラッチ102、105、107及び108を更新させ、実行ユニ
ット及びメモリー管理ユニットがパイプラインに先立っ
てラッチ165及び168においてデータを更新させる。マイ
クロシークエンサ23はサイクル0間でラッチ101に記憶
されるタスク指名アドレスを使用して、マイクロワード
Bをフェッチする。セグメント1は新たなタスク指名ア
ドレスをあたえることができないので、ラッチ101は今
停止タスク指名をホールドする。このステージにおい
て、ラッチ101そして実質上セグメント2はバブルを含
む。セグメント1は新たなタスク指名アドレスを与える
ためには未だ準備がされていない。
は、ラッチ102、105、107及び108を更新させ、実行ユニ
ット及びメモリー管理ユニットがパイプラインに先立っ
てラッチ165及び168においてデータを更新させる。マイ
クロシークエンサ23はサイクル0間でラッチ101に記憶
されるタスク指名アドレスを使用して、マイクロワード
Bをフェッチする。セグメント1は新たなタスク指名ア
ドレスをあたえることができないので、ラッチ101は今
停止タスク指名をホールドする。このステージにおい
て、ラッチ101そして実質上セグメント2はバブルを含
む。セグメント1は新たなタスク指名アドレスを与える
ためには未だ準備がされていない。
サイクル2に於いて、マイクロシークエンサ23はそのマ
イクロフローを続け、制御記憶22から次のマイクロイン
ストラクションをフェッチする。これにより、第2のイ
ンストラクションユニットセグメント2が停止される。
このサイクルにおいて、セグメント1はマイクロワード
Qで開始するマイクロフローに対する新たなタスク指名
アドレスを発生する。
イクロフローを続け、制御記憶22から次のマイクロイン
ストラクションをフェッチする。これにより、第2のイ
ンストラクションユニットセグメント2が停止される。
このサイクルにおいて、セグメント1はマイクロワード
Qで開始するマイクロフローに対する新たなタスク指名
アドレスを発生する。
サイクル3において、マイクロシークエンサ23はマイク
ロフローの次のインストラクションをフェッチし、セグ
メント2の停止を続行する。セグメント1は同様に停止
される。これは、セグメントはラッチ101、102、105等
に対する状態を進ませることが出来ないためである。セ
グメント1はマイクロワードQに対するアドレスを生成
し続ける。
ロフローの次のインストラクションをフェッチし、セグ
メント2の停止を続行する。セグメント1は同様に停止
される。これは、セグメントはラッチ101、102、105等
に対する状態を進ませることが出来ないためである。セ
グメント1はマイクロワードQに対するアドレスを生成
し続ける。
サイクル4に於いて、マイクロシークエンサ23はマイク
ロフローの終わりに到達し、新たなマイクロフロータス
ク指名アドレスを、デコード次ライン上に信号を発生す
ることにより、要求する。セグメント1及びセグメント
2は停止続ける。
ロフローの終わりに到達し、新たなマイクロフロータス
ク指名アドレスを、デコード次ライン上に信号を発生す
ることにより、要求する。セグメント1及びセグメント
2は停止続ける。
サイクル5に於いて、マイクロシークエンサ23は、ラッ
チ102から停止タスク指名(バブル)を得る。これによ
り、マイクロシークエンサ23に他のエンドフローインス
トラクションをフェッチさせ、デコーダ次ライン上に信
号の発生し続ける。ラッチ105は、セグメント1からの
マイクロワードQから始まるマイクロフローのタスク指
名アドレスをロードする。セグメント1はマイクロワー
ドTで始まるマイクロフローに対する新たなタスク指名
アドレスを発生する。
チ102から停止タスク指名(バブル)を得る。これによ
り、マイクロシークエンサ23に他のエンドフローインス
トラクションをフェッチさせ、デコーダ次ライン上に信
号の発生し続ける。ラッチ105は、セグメント1からの
マイクロワードQから始まるマイクロフローのタスク指
名アドレスをロードする。セグメント1はマイクロワー
ドTで始まるマイクロフローに対する新たなタスク指名
アドレスを発生する。
サイクル6において、マイクロシークエンサ23はラッチ
101からタスク指名アドレス(マイクロワードQに対す
るアドレス)を得る。このラッチはセグメント1から新
たなタスク指名アドレス(マイクロワードTに対するア
ドレス)を得る。セグメント1はマイクロワードYから
始まるマイクロフローに対する新たなタスク指名アドレ
スを生成する。この様にして、第1のパイプライン停止
によって生成されるバブルがパイプラインセグメントを
介して伝達する。
101からタスク指名アドレス(マイクロワードQに対す
るアドレス)を得る。このラッチはセグメント1から新
たなタスク指名アドレス(マイクロワードTに対するア
ドレス)を得る。セグメント1はマイクロワードYから
始まるマイクロフローに対する新たなタスク指名アドレ
スを生成する。この様にして、第1のパイプライン停止
によって生成されるバブルがパイプラインセグメントを
介して伝達する。
表2(第13図)は、本発明に従ってパイプライン化さ
れ、マイクロプログラミングされたCPUのデコーダ次及
びオーバーライトフラグ信号を使用してどの様にしてバ
ブルが生成されかつ圧縮されるかを示している。
れ、マイクロプログラミングされたCPUのデコーダ次及
びオーバーライトフラグ信号を使用してどの様にしてバ
ブルが生成されかつ圧縮されるかを示している。
サイクル0、1及び2は表1のものと本質的に同じであ
る。ラッチ102、105、107、108がサイクル1及びサイク
ル2内で停止タスク指名を含む時に、オーバーライトフ
ラグがセットされる。これはセグメント1に、これらラ
ッチがバブルを含み且つ、パイプラインが停止されるか
どうかに関わらず、次のサイクルの間重ね書きできるこ
とを知らせる。
る。ラッチ102、105、107、108がサイクル1及びサイク
ル2内で停止タスク指名を含む時に、オーバーライトフ
ラグがセットされる。これはセグメント1に、これらラ
ッチがバブルを含み且つ、パイプラインが停止されるか
どうかに関わらず、次のサイクルの間重ね書きできるこ
とを知らせる。
サイクル3に於いて、マイクロシークエンサ23はマイク
ロフローの次のインストラクションをフェッチし、セグ
メント2の停止を続ける。しかしながら、ラッチ101、1
02、105、107及び108内のラッチはセットされたので、
これらのラッチはマイクロコマンドQからスタートする
マイクロフロー用データをセグメント1からロードし、
これらのラッチ内のバブルの重ね書き及び圧縮を結果す
る。同時に、セグメント1はマイクロワードTから始ま
るマイクロフロー用新たなタスク指名を生成する。
ロフローの次のインストラクションをフェッチし、セグ
メント2の停止を続ける。しかしながら、ラッチ101、1
02、105、107及び108内のラッチはセットされたので、
これらのラッチはマイクロコマンドQからスタートする
マイクロフロー用データをセグメント1からロードし、
これらのラッチ内のバブルの重ね書き及び圧縮を結果す
る。同時に、セグメント1はマイクロワードTから始ま
るマイクロフロー用新たなタスク指名を生成する。
サイクル4において、マイクロシークエンサ23はマイク
ロフローの終了に到達し、デコーダ次ライン上に信号を
発生することにより新たなマイクロフロータスク指名ア
ドレスを要求する。サイクル3に於けるラッチ102等の
重ね書きのために、マイクロシークンサ23は今、バブル
圧縮が行われなかった場合に結果された停止タスク指名
の替わりに有効なタスク指名アドレスを得る。
ロフローの終了に到達し、デコーダ次ライン上に信号を
発生することにより新たなマイクロフロータスク指名ア
ドレスを要求する。サイクル3に於けるラッチ102等の
重ね書きのために、マイクロシークンサ23は今、バブル
圧縮が行われなかった場合に結果された停止タスク指名
の替わりに有効なタスク指名アドレスを得る。
サイクル5において、マイクロシークエンサ23はラッチ
102からタスク指名アドレス(マイクロワードQ用アド
レス)を得る。このラッチは新たなマスク指名アドレス
を得、表1のサイクル6に於ける用な新たなタスク指名
アドレスを生成する。
102からタスク指名アドレス(マイクロワードQ用アド
レス)を得る。このラッチは新たなマスク指名アドレス
を得、表1のサイクル6に於ける用な新たなタスク指名
アドレスを生成する。
この様にして、バブル圧縮はサイクルをセーブし、パイ
プラインCPU内のより大きいインストラクションスルー
プットの達成を助ける。
プラインCPU内のより大きいインストラクションスルー
プットの達成を助ける。
本発明は特定の実施例を参照して記述されたが、この記
述は限定的な意味で使用されることを意味しない。開示
された実施例の種々の変形例は、本発明の別の実施例と
同様に当業者には明らかであろう。従って、特許請求の
範囲は、この様な本発明の真の精神に合致するいかなる
実施例或いは実施態様を包含するものと意図されてい
る。
述は限定的な意味で使用されることを意味しない。開示
された実施例の種々の変形例は、本発明の別の実施例と
同様に当業者には明らかであろう。従って、特許請求の
範囲は、この様な本発明の真の精神に合致するいかなる
実施例或いは実施態様を包含するものと意図されてい
る。
第1図は本発明の一実施例に従う中央処理ユニットを含
むコンピュータシステムのブロック図、 第2図は第1図のCPUの拡張ユニットのブロック図、 第3図は第1図のCPUのマイクロプロセッサのブロック
図、 第4図は第3図の中央記憶内に含まれるマイクロインス
トラクションのフォーマット図、 第5図は第1図のCPUのインストラクションユニットの
ブロック図、 第6図は第1図のCPUのメモリー管理ユニットの回路
図、 第7図は第1図のCPUの主キャッシュ即ちPキャッシュ
の回路図、 第8図は第1図のCPUのバスインターフェースユニット
のブロック図、 第9図は連続するマシンサイクルで第1図のパイプライ
ン化されたCPU10で発生する事象を示すタイミング図、 第10図は第1図から第8図のCPUでのインストラクショ
ンの実行を詳細に示す事象と時間との関係を示す図、 第11図は第1図のCPUに於けるクロック発生器により生
成される4つの位相出力クロックのタイミング図、 第12図はバブル生成及びバブル伝播の様子を説明するた
めの表図、 第13図はバブル生成及びバブル圧縮の様子を説明するた
めの表図。
むコンピュータシステムのブロック図、 第2図は第1図のCPUの拡張ユニットのブロック図、 第3図は第1図のCPUのマイクロプロセッサのブロック
図、 第4図は第3図の中央記憶内に含まれるマイクロインス
トラクションのフォーマット図、 第5図は第1図のCPUのインストラクションユニットの
ブロック図、 第6図は第1図のCPUのメモリー管理ユニットの回路
図、 第7図は第1図のCPUの主キャッシュ即ちPキャッシュ
の回路図、 第8図は第1図のCPUのバスインターフェースユニット
のブロック図、 第9図は連続するマシンサイクルで第1図のパイプライ
ン化されたCPU10で発生する事象を示すタイミング図、 第10図は第1図から第8図のCPUでのインストラクショ
ンの実行を詳細に示す事象と時間との関係を示す図、 第11図は第1図のCPUに於けるクロック発生器により生
成される4つの位相出力クロックのタイミング図、 第12図はバブル生成及びバブル伝播の様子を説明するた
めの表図、 第13図はバブル生成及びバブル圧縮の様子を説明するた
めの表図。
フロントページの続き (56)参考文献 特開 昭61−234436(JP,A) 特開 昭63−141131(JP,A)
Claims (7)
- 【請求項1】デジタルコンピュータに於けるパイプライ
ン化された処理ユニットの動作方法であって、 前記パイプライン化された処理ユニットが情報を処理す
るための少なくとも第1のパイプラインセグメント及び
第2のパイプラインセグメントを有しており、前記第1
のパイプラインセグメントが、前記第2のパイプライン
セグメントのパイプライン上流側の情報を処理し、 前記第2のパイプラインセグメントでの情報の前記処理
が、情報の処理の待機を結果する停止条件を引起し、且
つ前記第1のパイプラインセグメントが情報の有効な処
理を行わない間前記第1のパイプラインセグメント内に
バブルを発生する場合があり、 前記パイプライン化された処理ユニット内の制御手段
が、前記停止条件及び前記バブルに応答して、前記情報
の処理を制御し、前記方法が、 a) 第1のパイプラインセグメントのバブルを前記制
御手段により検出し、 b) その後、前記第2のパイプラインセグメント内の
停止条件を前記制御手段により検出し、 c) 前記第1のパイプラインセグメント内のバブル
を、前記制御手段による制御の下で、前記情報の処理に
よって重ね書きして、前記バブルを圧縮する工程からな
ることを特徴とする方法。 - 【請求項2】前記第1のパイプラインセグメントはイン
ストラクションをデコードするオペレーション及び前記
インストラクションに基づく制御データを生成するオペ
レーションを達成することを特徴とする請求項1記載の
方法。 - 【請求項3】前記第2のパイプラインセグメントが、前
記第1のパイプラインのデコーディングに応答して前記
制御データから制御ビットの組みを発生するオペレーシ
ョンを達成する請求項2記載の方法。 - 【請求項4】前記第1のセグメント中の前記バブルが或
る条件を含み、これにより前記制御データが無効にな
り、重ね書きできるようになる請求項3記載の方法。 - 【請求項5】前記プロセッサーが第3のパイプラインセ
グメントを含み、このセグメントに於けるオペランドは
レジスタファイルからフェッチされ、或いはオペレーシ
ョンが前記オペランド上で達成され、結果が前記レジス
タファイルに記憶されることを特徴とする請求項4記載
の方法。 - 【請求項6】前記制御データは前記レジスタファイル内
のレジスタの識別を含むことを特徴とする請求項5記載
の方法。 - 【請求項7】前記プロセッサは、マイクロプログラムグ
ラム化されており、前記第2のパイプラインセグメント
はマイクロインストラクション記憶から前記制御ビット
の組みをフェッチすることを含むことを特徴とする請求
項6記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US221988 | 1988-07-20 | ||
US07/221,988 US5019967A (en) | 1988-07-20 | 1988-07-20 | Pipeline bubble compression in a computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH02155037A JPH02155037A (ja) | 1990-06-14 |
JPH0774991B2 true JPH0774991B2 (ja) | 1995-08-09 |
Family
ID=22830272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1188708A Expired - Fee Related JPH0774991B2 (ja) | 1988-07-20 | 1989-07-20 | デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5019967A (ja) |
EP (1) | EP0352103B1 (ja) |
JP (1) | JPH0774991B2 (ja) |
AT (1) | ATE128565T1 (ja) |
CA (1) | CA1320275C (ja) |
DE (1) | DE68924380T2 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2858140B2 (ja) * | 1988-10-19 | 1999-02-17 | アポロ・コンピューター・インコーポレーテッド | パイプラインプロセッサ装置および方法 |
JPH0395629A (ja) * | 1989-09-08 | 1991-04-22 | Fujitsu Ltd | データ処理装置 |
US5555384A (en) * | 1989-12-01 | 1996-09-10 | Silicon Graphics, Inc. | Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction |
US5280597A (en) * | 1990-03-30 | 1994-01-18 | Mitsubishi Denki Kabushiki Kaisha | Pipeline processor with self timed data transfer |
US5430862A (en) * | 1990-06-29 | 1995-07-04 | Bull Hn Information Systems Inc. | Emulation of CISC instructions by RISC instructions using two pipelined stages for overlapped CISC decoding and RISC execution |
CA2045705A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | In-register data manipulation in reduced instruction set processor |
JPH04184534A (ja) * | 1990-11-20 | 1992-07-01 | Fujitsu Ltd | プロセッサ |
US5590294A (en) * | 1991-03-19 | 1996-12-31 | Silicon Graphics, Inc. | Method and apparatus for retarting pipeline processing |
US5325495A (en) * | 1991-06-28 | 1994-06-28 | Digital Equipment Corporation | Reducing stall delay in pipelined computer system using queue between pipeline stages |
US5524250A (en) * | 1991-08-23 | 1996-06-04 | Silicon Graphics, Inc. | Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US6073231A (en) * | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
DE69408769T2 (de) * | 1993-10-18 | 1998-07-09 | Cyrix Corp | Fliessbandsteuerung und Registerübersetzung in Mikroprozessor |
US6138230A (en) * | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
US6128721A (en) * | 1993-11-17 | 2000-10-03 | Sun Microsystems, Inc. | Temporary pipeline register file for a superpipelined superscalar processor |
US5864716A (en) * | 1994-01-07 | 1999-01-26 | Cirrus Logic, Inc. | Tagged data compression for parallel port interface |
US5784579A (en) * | 1994-03-01 | 1998-07-21 | Intel Corporation | Method and apparatus for dynamically controlling bus access from a bus agent based on bus pipeline depth |
US5548733A (en) * | 1994-03-01 | 1996-08-20 | Intel Corporation | Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system |
US5636352A (en) * | 1994-12-16 | 1997-06-03 | International Business Machines Corporation | Method and apparatus for utilizing condensed instructions |
US5619408A (en) * | 1995-02-10 | 1997-04-08 | International Business Machines Corporation | Method and system for recoding noneffective instructions within a data processing system |
US5751945A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system |
US5691920A (en) * | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5752062A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US5797019A (en) * | 1995-10-02 | 1998-08-18 | International Business Machines Corporation | Method and system for performance monitoring time lengths of disabled interrupts in a processing system |
US5729726A (en) * | 1995-10-02 | 1998-03-17 | International Business Machines Corporation | Method and system for performance monitoring efficiency of branch unit operation in a processing system |
US5748855A (en) * | 1995-10-02 | 1998-05-05 | Iinternational Business Machines Corporation | Method and system for performance monitoring of misaligned memory accesses in a processing system |
US5949971A (en) * | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5889975A (en) * | 1996-11-07 | 1999-03-30 | Intel Corporation | Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core |
US5944841A (en) * | 1997-04-15 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor with built-in instruction tracing capability |
US5933626A (en) * | 1997-06-12 | 1999-08-03 | Advanced Micro Devices, Inc. | Apparatus and method for tracing microprocessor instructions |
US6862563B1 (en) | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
WO2000070483A2 (en) * | 1999-05-13 | 2000-11-23 | Arc International U.S. Holdings Inc. | Method and apparatus for processor pipeline segmentation and re-assembly |
WO2001069411A2 (en) | 2000-03-10 | 2001-09-20 | Arc International Plc | Memory interface and method of interfacing between functional entities |
US6658557B1 (en) | 2000-05-25 | 2003-12-02 | Advanced Micro Devices, Inc. | Synthesizing the instruction stream executed by a microprocessor from its branch trace data |
EP1205840B1 (en) * | 2000-11-08 | 2010-07-14 | Altera Corporation | Stall control in a processor with multiple pipelines |
US7000095B2 (en) | 2002-09-06 | 2006-02-14 | Mips Technologies, Inc. | Method and apparatus for clearing hazards using jump instructions |
US7653807B2 (en) * | 2005-09-19 | 2010-01-26 | Synopsys, Inc. | Removing a pipeline bubble by blocking clock signal to downstream stage when downstream stage contains invalid data |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
JP2008198127A (ja) * | 2007-02-15 | 2008-08-28 | Toshiba Corp | プロセッサシステム |
DE102008045767A1 (de) | 2008-09-04 | 2010-03-11 | Continental Teves Ag & Co. Ohg | Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung |
CN107038125B (zh) * | 2017-04-25 | 2020-11-24 | 上海兆芯集成电路有限公司 | 具有加速预取请求的独立流水线的处理器高速缓存 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3248707A (en) * | 1961-11-14 | 1966-04-26 | Ibm | Semi-asynchronous clock system |
US4025771A (en) * | 1974-03-25 | 1977-05-24 | Hughes Aircraft Company | Pipe line high speed signal processor |
US4090249A (en) * | 1976-11-26 | 1978-05-16 | International Business Machines Corporation | Apparatus for sorting records in overlap relation with record loading and extraction |
JPS5466048A (en) * | 1977-11-07 | 1979-05-28 | Hitachi Ltd | Information processor |
US4236206A (en) * | 1978-10-25 | 1980-11-25 | Digital Equipment Corporation | Central processor unit for executing instructions of variable length |
JPS5621242A (en) * | 1979-07-28 | 1981-02-27 | Fujitsu Ltd | Pipeline control method for computer operation |
US4438492A (en) * | 1980-08-01 | 1984-03-20 | Advanced Micro Devices, Inc. | Interruptable microprogram controller for microcomputer systems |
JPS58189739A (ja) * | 1982-04-30 | 1983-11-05 | Hitachi Ltd | デ−タ処理システム |
US4534009A (en) * | 1982-05-10 | 1985-08-06 | The United States Of America As Represented By The Secretary Of The Navy | Pipelined FFT processor |
US4498136A (en) * | 1982-12-15 | 1985-02-05 | Ibm Corporation | Interrupt processor |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
JPS59231652A (ja) * | 1983-06-13 | 1984-12-26 | Hitachi Ltd | メモリアクセス・オ−バラツプ検出方式 |
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
US4571673A (en) * | 1983-09-29 | 1986-02-18 | Tandem Computers Incorporated | Enhanced CPU microbranching architecture |
US4586130A (en) * | 1983-10-03 | 1986-04-29 | Digital Equipment Corporation | Central processing unit for a digital computer |
BR8503913A (pt) * | 1984-08-18 | 1986-05-27 | Fujitsu Ltd | Sistema e processo de recuperacao de erros em um processador de dados do tipo de canalizacao tendo um dispositivo de memoria de controle e processo de recuperacao de erros em um processador de dados do tipo de canalizacao |
JPS61234436A (ja) * | 1985-04-10 | 1986-10-18 | Matsushita Electric Ind Co Ltd | マイクロプログラム制御装置 |
US4794517A (en) * | 1985-04-15 | 1988-12-27 | International Business Machines Corporation | Three phased pipelined signal processor |
US4701842A (en) * | 1985-10-04 | 1987-10-20 | International Business Machines Corporation | Method and apparatus for avoiding excessive delay in a pipelined processor during the execution of a microbranch instruction |
US4709324A (en) * | 1985-11-27 | 1987-11-24 | Motorola, Inc. | Data processor control unit having an interrupt service using instruction prefetch redirection |
US4794527A (en) * | 1986-01-29 | 1988-12-27 | Digital Equipment Corporation | Microprogrammed data processing system using latch circuits to access different control stores with the same instruction at different times |
JPS63141131A (ja) * | 1986-12-04 | 1988-06-13 | Toshiba Corp | パイプライン制御方式 |
-
1988
- 1988-07-20 US US07/221,988 patent/US5019967A/en not_active Expired - Lifetime
-
1989
- 1989-07-19 CA CA000606106A patent/CA1320275C/en not_active Expired - Fee Related
- 1989-07-20 JP JP1188708A patent/JPH0774991B2/ja not_active Expired - Fee Related
- 1989-07-20 EP EP89307344A patent/EP0352103B1/en not_active Expired - Lifetime
- 1989-07-20 DE DE68924380T patent/DE68924380T2/de not_active Expired - Fee Related
- 1989-07-20 AT AT89307344T patent/ATE128565T1/de not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JPH02155037A (ja) | 1990-06-14 |
EP0352103B1 (en) | 1995-09-27 |
ATE128565T1 (de) | 1995-10-15 |
EP0352103A2 (en) | 1990-01-24 |
EP0352103A3 (en) | 1992-08-12 |
DE68924380D1 (de) | 1995-11-02 |
CA1320275C (en) | 1993-07-13 |
US5019967A (en) | 1991-05-28 |
DE68924380T2 (de) | 1996-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0774991B2 (ja) | デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法 | |
US5006980A (en) | Pipelined digital CPU with deadlock resolution | |
US4875160A (en) | Method for implementing synchronous pipeline exception recovery | |
US5321823A (en) | Digital processor with bit mask for counting registers for fast register saves | |
US4760519A (en) | Data processing apparatus and method employing collision detection and prediction | |
US5293592A (en) | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline | |
US5023828A (en) | Microinstruction addressing in high-speed CPU | |
EP0901071B1 (en) | Methods for interfacing a processor to a coprocessor | |
US5923893A (en) | Method and apparatus for interfacing a processor to a coprocessor | |
EP0464494B1 (en) | A high performance pipelined emulator | |
US4399505A (en) | External microcode operation in a multi-level microprocessor | |
JP2701179B2 (ja) | データ処理システム | |
US5101344A (en) | Data processor having split level control store | |
US5218711A (en) | Microprocessor having program counter registers for its coprocessors | |
US5559977A (en) | Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage | |
EP0405495B1 (en) | Instruction unit logic management apparatus included in a pipelined processing unit and method therefor | |
JP2507638B2 (ja) | デ―タ処理装置 | |
JPS6339931B2 (ja) | ||
JPH04260950A (ja) | キャッシュメモリ装置 | |
JPH04309131A (ja) | 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置 | |
US5062041A (en) | Processor/coprocessor interface apparatus including microinstruction clock synchronization | |
JPH07120284B2 (ja) | データ処理装置 | |
US5590293A (en) | Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization | |
CA2003004C (en) | Apparatus and method for executing a conditional branch instruction | |
JPS6314239A (ja) | 計算機システムの命令作成ユニット |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |