JPH06318155A - コンピュータシステム - Google Patents
コンピュータシステムInfo
- Publication number
- JPH06318155A JPH06318155A JP5124786A JP12478693A JPH06318155A JP H06318155 A JPH06318155 A JP H06318155A JP 5124786 A JP5124786 A JP 5124786A JP 12478693 A JP12478693 A JP 12478693A JP H06318155 A JPH06318155 A JP H06318155A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- integer
- data
- floating point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
理量を増大する。 【構成】 パイプラインステージは、整数及び浮動小数
点のパイプラインステージに分割され、始めの浮動小数
点ステージが後の方の整数パイプラインステージと一ス
テージ重なっており、命令待行列は、命令キャッシュか
ら取出されたプログラムの逐次命令及びプログラムの分
岐命令の目標命令を格納する。また、命令制御ユニット
は、命令を復号し、命令から命令へカスケードするオペ
ランドを検出し、命令を多数の排他規則を適用する最大
m個の命令から成る命令グループに分類し、分類した命
令を実行のため整数ユニット、浮動小数点ユニットの双
方又はいづれかに対して同時に発行する。命令制御ユニ
ットは、命令グループの経歴を追跡し、この経歴を命令
グループを形成する際、排他規則と関連して使用する。
Description
分野に関し、特に、パイプライン化プロセッサを備えて
いるコンピュータシステムに関する。更に詳細に述べれ
ば、本発明は複数の命令をグループ化し、それらを同時
に発行し、それらをパイプライン化プロセッサで実行す
ることに関する。
行時間は三つの因子、すなわちプログラムの動的アセン
ブリ言語命令回数、命令あたりのサイクル数、およびプ
ロセッサの基本クロック速度の積である。最初の因子は
注目しているプログラムの動的命令回数の全数を減らす
コンパイラ技術によって決まる。最後の因子は高速トラ
ンジスタ間に低キャパシタンス接続を作る際の集積回路
製作技術の速度限界によって決まる。2番目の因子はプ
ロセッサの構造、特に、命令の発令および実行に関する
構造、によって決まるが、これが本発明の中心点であ
る。
ンピュータシステムはパイプライン化プロセッサを備え
ている。パイプライン化は、複数の命令を実行時に同時
に重ねて行うプロセッサの実施法である。パイプライン
化は、パイプライン制御が付加されて個々の命令の実行
時間がわずかに増大するにもかかわらず、プロセッサの
命令実行の処理量、すなわちパイプラインを出る命令の
割合を増加させる。
インのステージで実行中の命令の一部を完了する複数の
ステージから成る組立ラインに似ている。典型的には、
パイプラインは六つのステージ、命令の取出し、命令の
復号、データ記憶装置のアドレス発生、プロセッサに存
在するオペランドの取出し、命令の実行、および結果の
書込み、に分解することができる。複数の命令は一部重
なるようにパイプステージを通して移動する。
完了し進行しなければならない。その結果、機械サイク
ル、すなわち命令をパイプライン中を1ステージ下方に
動かすのに必要な時間、したがってパイプライン化プロ
セッサの処理量は最も低速のステージによって決まり、
制限されている。このように、更に速いステージを使用
するという明らかな方法に加えて、最新のパイプライン
化プロセッサの多くは機能ユニットをそのそれぞれのペ
ースで独立に進行することができるように設計されてい
る。
スで独立に進行できるようにすることにより、パイプラ
インの種々なハザードが入ってきている。ハザードに遭
遇すると、実行および後続の命令は失速しなければなら
ないことになる。パイプラインのハザードには三つの種
類がある。
令のあらゆる組合わせを支持するよう完全にはパイプラ
イン化されていないとき、たとえば、レジスタファイル
書込みポートが一つしかないパイプライン化プロセッサ
に二つのレジスタが同時に書込むときのような、資源の
衝突による構造的ハザード。 2.命令が未だ利用可能になっていない初期の命令の結
果に依存する。たとえば、後続ADD命令が未だ利用可
能になっていない初期のSUBTRACT命令の結果に
依存する、ことによるデータのハザード、および 3.プログラムカウンタを変える分岐命令や他の命令を
パイプライン化することによる制御のハザード。
ッサは典型的にはパイプラインのハザードの発生の可能
性を少なくするよう最適化されている。その他に、種々
の同期化法の一つがパイプラインのハザードを処理する
のに採用されている。同期化法の特定の例には次のよう
なものがある。
(ALU)の結果を常にALU入力ラッチにフィードバ
ックする簡単なハードウェア技法である。始めのALU
演算が現在のALU演算の源に対応するレジスタに書込
まれていれば、レジスタファイルから読取った値の代わ
りに転送した結果をALU入力として選択する。
ハードウェア技法であって、中央に集中した情報を維持
してデータのハザードの周りの動的スケジュールを容易
にする、すなわち、充分な資源を用い且つデータの依存
性無しに順序の乱れた命令実行を可能とする。典型的に
は、スコアボードは発令されたまたは未決定の各命令の
現在の状態を追跡する命令状態表、各機能ユニットの現
在の状態を追跡する機能ユニット状態表、およびどの機
能ユニットがレジスタに書込むかを追跡するレジスタ結
果状態表を備えている。
はスコアボード法の中央集中を排除した変種であるが重
要な二つの点で異なっている。 a.ハザード検出および実行制御を機能ユニット内の保
留ステーションを用いて機能ユニットに分配し、ディス
パッチされた命令を機能ユニットのすべての依存性およ
び利用可能性について実行未定になっている解決を列を
作って待つ。 b.実行結果を、レジスタを通して進めるのではなく直
接機能ユニットから送る。
それらは読出されて一度に一つづつパイプラインにディ
スパッチされている。命令の長さは、記憶装置の費用が
比較的高いので記憶装置内に命令を能率良く詰め込むこ
とに対して高いプレミアムが設けられている。その結
果、命令復号ステージでは多数の理論的ハードウェアが
必要になっている。命令は、第1の命令が復号されるま
で、次の命令の開始バイト位置を決定することができな
いので、順次に復号されていた。更に、各命令は復号す
るのに多数クロックサイクルを必要としている。
用は比較的廉価になってきており、最新式のパイプライ
ン化プロセッサの多くは、特に縮小命令集合を基準とす
るパイプライン化プロセッサは、現在は固定長の命令を
発生している。その結果、命令復号ステージにはもはや
多数の理論的ハードウェアは必要ではない。各命令の開
始位置を決定することができるから、複数の命令を同時
に復号することができる。更に、充分な資源を用いて、
多数の命令を1クロックサイクルで復号することができ
る。
し、そのためパイプライン化プロセッサの処理量を増す
新しい機会が提供される。それ故独立の機能ユニットに
対する複数の命令を1クロックサイクルで取出し、復号
し、発行することができることが望まれる。更に、複数
の命令を集中式または非集中式のいずれの同期化につい
てもハードウェアの増加を最少限にして発令することが
特に望ましい。
目的および所要結果は、本発明の目的および所要結果に
含まれるものであり、本発明は複数の命令を同時に取出
し、復号し、発令することができ、これによりパイプラ
イン化プロセッサの実行速度および処理量を増大する新
しい方法を提供するものである。パイプライン化に関す
るこれ以上の説明については、J.L.HennessyとD.A.Patt
ersonとの共著、Computer Architecture A Quantitativ
e Approach, Morgan Kaufmann Publishers, Inc., 1990
を参照されたい。
し、これらを同時に発行し、それらをパイプライン化プ
ロセッサで実行する方法および装置を開示している。現
在のところ好適な実施例のもとでは、一部重ねて実行す
るためクロックサイクルあたり最大m個の命令を同時に
グループ化して発行するパイプライン化プロセッサに命
令待行列および命令制御ユニットが設けられている。他
に、パイプライン化プロセッサはクロックサイクルあた
りそれぞれ最大n1個の整数結果およびn2個の浮動小数点
結果を発生することができる整数ユニットおよび浮動小
数点ユニットをも備えている。ここでn1およびn2はクロ
ックサイクルあたり発行されるm個の命令を支持して命
令待行列および命令制御ユニットを補足するに充分な大
きさである。整数ユニットおよび浮動小数点ユニットに
はそれ自身の整数レジスタファイルおよび浮動小数点レ
ジスタファイルがそれぞれ設けられている。浮動小数点
ユニットには浮動小数点演算待行列および浮動小数点演
算制御ユニットも設けられている。更に、プロセッサの
パイプラインステージは整数パイプラインステージおよ
び浮動小数点パイプラインステージに分割されており、
始めの方の浮動小数点パイプラインステージが後の方の
整数パイプラインステージに一部重なっている。
命令待行列は逐次待行列および目標待行列から成り、命
令キャッシュから取出されたプログラムの逐次命令およ
びプログラムの分岐命令の目標命令をそれぞれ格納して
いる。その現在のところ好適な形態では、命令制御ユニ
ットは先取りコントローラおよびスケジューラから構成
されている。先取りコントローラは、分岐径路の予測お
よび解決を含む、命令先取りを制御する。スケジューラ
はオプコード復号器、カスケード検出器、グループ化論
理、および以前のグループ経歴を備えている。オプコー
ド復号器は命令を復号する。カスケード検出器は命令か
ら命令へのオペランドのカスケードを検出する。以前の
グループ経歴は発令された命令グループを追跡する。グ
ループ化論理は命令を、オプコード復号器およびカスケ
ード検出器から受取った入力、以前のグループ経歴によ
って、保持されている経歴、および「前で区切る」およ
び「後で区切る」除外規則の数の適用に基づき、多くと
もm個の命令の命令グループにグループ化する。「前で
区切る」および「後で区切る」除外規則は資源の特性お
よびプロセッサの特定の実施法を反映するものである。
グループ化された命令は一部重ねて実行するため整数ユ
ニットおよび浮動小数点ユニットに対して同時に発行さ
れる。
器および少なくとも一つのシフタから構成され、n1個の
論理的加算器として協同で働いている。加算器の少なく
とも一つはアドレス加算器であり、加算器の少なくとも
二つはブール演算をも行う。
出しステージ、多数の命令復号ステージ、多数の実行ス
テージ、および少なくとも一つの書き戻しステージから
構成されている。浮動小数点パイプラインステージは多
数の復号ステージ、多数の実行ステージ、および少なく
とも一つの書戻しステージから構成されている。浮動小
数点命令復号ステージは後の方の整数実行ステージおよ
び書戻しステージと一部重なり合っている。
御ユニットの先取りコントローラの制御のもとで命令キ
ャッシュから適切な命令待行列へ先取りされる。整数命
令復号ステージで、適切な命令が復号され、少なくとも
m個の命令から成る命令グループにグループ化され、命
令制御ユニットのスケジューラにより一部重ねて実行す
るため同時に発行される。更に、整数命令復号ステージ
では、データがレジスタから読出され、目標およびロー
ド/格納の各アドレスが整数ユニットにより計算され
る。整数実行ステージで、データがデータキャッシュか
ら読出され、整数演算が行われ、データが整数ユニット
により記憶装置からロードされる。更に、整数実行ステ
ージでは、浮動小数点演算が発行され、例外が命令制御
ユニットにより解決される。整数書戻しステージ(一つ
または複数)で、整数結果が整数ユニットにより書戻さ
れる。
点命令が浮動小数点演算制御ユニットにより復号され、
データが浮動小数点ユニットによりレジスタから読出さ
れる。浮動小数点実行ステージで、浮動小数点演算が浮
動小数点ユニットにより行われる。最後に、浮動小数点
書戻しステージ(一つまたは複数)で、データが浮動小
数点ユニットにより書戻される。
りコントローラにより取出されることを予測される。そ
れぞれの場合において、目標命令が分岐方向が整数ユニ
ットにより決められる前に先取りコントローラにより先
取りされる。次の逐次命令が遅延命令と共にグループ化
され、命令制御ユニットのスケジューラにより純理論的
に発行される。分岐命令を取る必要があれば、分岐が解
決されたとき、純理論的に発行された逐次命令を整数ユ
ニットにより押しつぶす。分岐を取らなければ、分岐が
解決されたとき、先取りした目標命令を捨て、逐次命令
を復号し、スケジューラにより代わりに発行する。
機能ユニットを備えているパイプライン化プロセッサで
実行するため同時に発行する方法および装置を開示す
る。説明の目的で以下の記述では、本発明を充分理解で
きるようにするため特定の数、材料、および構成を示し
てある。しかし、当業者には本発明をこの特定の細目無
しで実用化し得ることが明らかであろう。その他の場合
では、周知のシステムを本発明を不必要にあいまいにし
ないために図式の形でまたはブロック図の形で示してあ
る。
る実施例パイプライン化プロセッサを示す機能ブロック
図が図示されている。図示されているのは、プログラム
カウンタ12、多数の命令待行列14、および命令制御ユニ
ット16から構成されている実施例パイプライン化プロセ
ッサ10である。プログラムカウンタ12、命令待行列14、
および命令制御ユニット16は互いに結合されている。共
に、それらは協働してクロックサイクルあたり最大三つ
の命令を同時に発行する。
16と協働する仕方の他は、大部分のパイプライン化プロ
セッサに見られる広範な部類のプログラムカウンタを表
すつもりである。その基本的機能および構成は周知であ
り、これ以上説明しないことにする。命令待行列14、命
令制御ユニット16、およびそれらが互いに協働する仕
方、およびプログラムカウンタ12を図3〜図9を参照し
て後に更に詳しく説明することにする。
そのプログラムカウンタ12、命令待行列14、および命令
制御ユニット16が以下の説明に基づき、クロックサイク
ルあたり同時に最大三つの命令を発行する実施例プロセ
ッサ10を用いて説明しているが、代わりに本発明をすべ
ての他の補足的設計考慮事項を対応させてして調節すれ
ば、協同動作するこれらの要素を用いてクロックサイク
ルあたり最大m個の命令を同時に発行するよう実用化し
得ることが認められるであろう。更に、mの選択は、比
較的小さいmについて、実行性能ゲインのそれ以上の増
大の命令グループの決定に必要な時間のそれ以上の増加
に対する比と実施装置の複雑さとのかね合いによる。し
かし、命令グループを決定するのに必要な時間および実
施装置の複雑さはmが増加するにつれて非線形的に増大
し、或る点で、命令グループを決定するのに必要な時間
および/または実施装置の複雑さは命令実行時間の節約
より大きくなる。
化プロセッサ10は更に整数ユニットレジスタファイル18
および整数機能ユニット20を備えている。整数ユニット
レジスタファイル18は命令制御ユニット16および整数機
能ユニット20に結合されており、整数機能ユニット20は
命令制御ユニット16にも結合されている。整数ユニット
レジスタファイル18および整数機能ユニット20は、協働
してクロックサイクルあたり最大二つの整数結果を発生
する。
無関係な4個のレジスタポートを備えている。互いに無
関係な4個のレジスタポートは、時間多重すると、6個
の読出しポートおよび2個の書込みポートと同等の容量
を備え、2個のアドレスレジスタの同時読出し、または
4個のデータレジスタの同時読出し、またはどれか2個
のレジスタの同時書込みを支持するのに充分である。整
数ユニットレジスタファイル18の読み書き帯域幅、およ
び整数ユニットレジスタファイル18が整数機能ユニット
20と協同動作する仕方を除けば、整数ユニットレジスタ
ファイル18は大部分のパイプライン式プロセッサに見ら
れる広範な部類のレジスタファイルを表すことを目的と
している。その基本的機能および機能は周知であり、こ
れ以上説明しないことにする。整数機能ユニット20の一
つの実施例、および整数機能ユニット20が命令制御ユニ
ット16および整数ユニットレジスタファイル18と協同動
作する仕方を図2、図8〜図9を参照して後に更に詳し
く説明する。
を、その整数ユニットレジスタファイル18および整数機
能ユニット20が、以下の説明に基づいて、協働してクロ
ックサイクルあたり最大二つの整数結果を発生する実施
例プロセッサ10を用いて説明しているが、代わりに本発
明を、他のすべての補足的設計考慮事項、特に整数機能
ユニット20を対応させて調節すれば、協同動作するそれ
ら要素を用いてクロックサイクルあたり最大n1個の整数
結果を発生するよう実用化し得ることが認められよう。
イン化プロセッサ10は、更に浮動小数点命令待行列24、
浮動小数点命令制御ユニット26、浮動小数点ユニットレ
ジスタファイル28、浮動小数点機能ユニット30、および
マルチプレクサ32を備えている。浮動小数点命令待行列
24は命令制御ユニット16および浮動小数点命令制御ユニ
ット26に結合されており、浮動小数点命令制御ユニット
26は浮動小数点ユニットレジスタファイル28にも結合さ
れている。浮動小数点ユニットレジスタファイル28は浮
動小数点機能ユニット30およびマルチプレクサ32にも結
合されている。共に、これらはクロックサイクルあたり
多くとも一つの浮動小数点結果を発生する。
16と協同動作する仕方を除けば、浮動小数点命令待行列
24、浮動小数点命令制御ユニット26、浮動小数点ユニッ
トレジスタファイル28、浮動小数点ユニット30、および
マルチプレクサ32は大部分のパイプライン化プロセッサ
に見られる広範な部類のこれら要素を表すことを目的と
している。それらの基本的機能および構成は周知であ
り、これ以上説明しないことにする。浮動小数点命令待
行列24が命令制御ユニット16と協同動作する仕方を図8
〜図9を参照して後に更に詳しく説明する。
小数点命令待行列24、浮動小数点制御ユニット26、浮動
小数点ユニットレジスタファイル28、浮動小数点機能ユ
ニット30、およびマルチプレクサ32が、以下に説明する
ことに基づき、クロックサイクルあたり多くとも一つの
浮動小数点結果を発生する実施例プロセッサ10を用いて
説明しているが、代わりに本発明を、他のすべての補足
的設計考慮事項、特に、浮動小数点命令待行列24、浮動
小数点命令制御ユニット26、および浮動小数点機能ユニ
ット30を対応させて調節すれば、協同動作するこれら要
素を用いてクロックサイクルあたり最大n2個の浮動小数
点結果を発生するように実施することができる。
イン化プロセッサ10は更に命令キャッシュ34、データキ
ャッシュ36、共有記憶装置管理ユニット38、書込みバッ
ファ40、およびキャッシュ・コヒーレント・バスインタ
ーフェースユニット42を備えている。命令キャッシュ34
はプログラムカウンタ12、命令待行列14、命令制御ユニ
ット16、共有記憶装置管理ユニット38、およびキャッシ
ュ・コヒーレント・バスインターフェースユニット42に
結合されている。データキャッシュ36は整数機能ユニッ
ト20、浮動小数点ユニットレジスタファイル28、マルチ
プレクサ32、共有記憶装置管理ユニット38、書込みバッ
ファ40、およびキャッシュ・コヒーレント・バスインタ
ーフェースユニット42に結合されている。共有記憶装置
管理ユニット38および書込みバッファ40は今度はキャッ
シュ・コヒーレント・バスインターフェースユニット42
にも結合している。共に、これらは協働して命令を命令
待行列14に、データを整数機能ユニット20および浮動小
数点機能ユニット30、およびそれらのレジスタファイ
ル、18および28、に供給する。
作する仕方の他は、命令制御ユニット16、およびデータ
キャッシュ36が整数機能ユニット20、命令キャッシュ3
4、データキャッシュ36、共有記憶装置管理ユニット3
8、書込みバッファ40、およびキャッシュ・コヒーレン
ト・バスインターフェースユニットと協同動作する仕方
は大部分のパイプライン化プロセッサに見られるこれら
要素の広範な部類を表すことを目的としている。それら
の基本的機能および構成は周知であり、これ以上説明し
ないことにする。命令キャッシュ34が命令待行列14、命
令制御ユニット16と協同動作する仕方、およびデータキ
ャッシュ36が整数機能ユニット20と協同動作する仕方を
図3、図8、および図9を参照して後に更に詳細に説明
する。
イプライン化プロセッサの整数機能ユニットの一実施例
を示す機能ブロックが示されている。図示してあるのは
アドレス加算器22、データ加算器44、46、および48、シ
フタ50、および三つのマルチプレクサ52、54、および56
から構成されている整数機能ユニット20である。共に、
これらは協同動作してクロックサイクルあたり多くとも
二つの整数結果を発生する。
54、データキャッシュ36、および共有記憶装置管理ユニ
ット38に結合されており、第2のマルチプレクサ54は整
数ユニットレジスタファイル18に結合されている。第1
および第2のデータ加算器44および46、およびシフタ50
は第1および第2のマルチプレクサ52および54に結合さ
れており、第1のマルチプレクサは整数ユニットレジス
タファイル18に結合されている。第3のデータ加算器48
は第2および第3のマルチプレクサ54および56に結合さ
れており、第3のマルチプレクサはデータキャッシュ36
にも結合されている。他に、第1および第2のデータ加
算器44および46は命令制御ユニット16に結合されてい
る。
アドレス加算器22はアドレスを整数ユニットレジスタフ
ァイル18から第2のマルチプレクサ54を介して入力とし
て受取り、アドレスをデータキャッシュ36および共有記
憶装置管理ユニット38に出力する。
よびシフタ50は共に整数機能ユニット結果を計算する2
個の論理的加算器資源として働く。第1および第2の加
算器44および46はブール演算を行うこともできる。第1
のデータ加算器44はデータを整数ユニットレジスタファ
イル18から第1のマルチプレクサ52を介して入力として
受取り、データをプログラムカウンタ12または第2のマ
ルチプレクサ54に出力するが、これらは第3のデータ加
算器48および/または第3のマルチプレクサ56に選択的
に供給される。第3のマルチプレクサ56に供給されたデ
ータはデータキャッシュ36に選択的に供給され、または
次の命令のため前に送られる。第2のデータ加算器46お
よびシフタ50はデータを整数ユニットレジスタファイル
18から受取り、またはデータをデータキャッシュ36から
受取るか、またはデータを第1のマルチプレクサ52を介
して入力として前に送り、状態コードまたはデータを命
令制御ユニット16または第2のマルチプレクサ54に出力
するが、これは第3のデータ加算器48および/またはマ
ルチプレクサ56に選択的に供給される。同様に、第3の
マルチプレクサ56に供給されたデータは今度はデータキ
ャッシュ36に選択的に供給されるか、または次の命令の
ため前に送られる。
ックサイクルあたり最大2個のアドレスレジスタのオペ
ランドおよび最大4個のアドレスレジスタのオペランド
を受取ることができる。加算器22、44〜48の他にシフタ
50も各々、その動作を完了するのに半クロックサイクル
しか必要としない。
20を、協同動作してクロックサイクルあたり多くとも2
個の整数結果を発生する2個の論理的加算器を備えてい
る上述の実施例を用いて説明しているが、上の実施例を
協同動作してクロックサイクルあたり多くともn1個の整
数結果を発生するn1個の論理的加算器を備えるよう拡張
し得ることが認められよう。他に、整数機能ユニット20
を上の実施例を用いて説明しているが、本発明はクロッ
クサイクルあたり充分な補足数の整数結果を発生する他
の実施例を用いて実用化し得ることが認められよう。
イプライン化プロセッサの命令待行列を示す機能ブロッ
ク図が示されている。図示されているのは、逐次待行列
58、分岐目標待行列60、および2個のマルチプレクサ62
および64から成る命令待行列14である。共に、これらは
協同動作してクロックサイクルあたり三つの命令を命令
制御ユニット16に供給する。
び60、は命令キャッシュ34および2個のマルチプレクサ
62および64に結合されている。他に、逐次待行列58、第
1のマルチプレクサ62、および第2のマルチプレクサ64
は命令制御ユニット16にも結合されている。逐次待行列
58はプログラムカウンタ12にも結合されている。
び60、は命令制御ユニット16に向けて候補命令を発生す
る。逐次待行列58は命令を命令キャッシュから、最後の
サイクルで発行された命令の数を命令制御ユニット16か
ら、および分岐路選択信号をプログラムカウンタ12から
入力として受取り、命令を二つのマルチプレクサ62およ
び64に対して出力する。同様に、分岐目標待行列60は命
令を命令キャッシュ34から入力として受取り、命令を両
マルチプレクサ62および64に出力する。第1のマルチプ
レクサ62は、命令制御ユニットの制御のもとに、分岐が
取られるか否かにより、逐次待行列58または目標待行列
60からの命令制御ユニット16に供給する。第2のマルチ
プレクサ64は、命令制御ユニット16の制御のもとに、命
令が実行のため発生され且つ分岐が取られているか否か
により、逐次待行列58または目標待行列60からの命令を
逐次待行列58に条件付きで供給する。命令キャッシュ34
から受取られた命令は逐次待行列58または分岐目標待行
列60の末尾に付加される。
者はクロックサイクルあたり4つの命令を命令キャッシ
ュ34から受取ることができる。逐次待行列58には一度に
4つまでの命令を保持する能力がある。逐次待行列58お
よび分岐目標待行列60はクロックサイクルあたり最大三
つの命令を命令制御ユニット16に対し第1のマルチプレ
クサ62を通して出力することもできる。
ロックサイクルあたり三つの逐次命令および/または分
岐目標命令を命令制御ユニット16に供給することができ
る実施例により説明してきたが、命令待行列14は、入力
および出力の帯域幅および待行列の容量を対応させて調
節すれば、mを3より大きいとして、クロックサイクル
あたりm個の命令を命令制御ユニット16に供給するよう
拡張し得ることが認められよう。
プライン化プロセッサの命令制御ユニットを図解する機
能ブロック図が示されている。図示されているのは先取
りコントローラ66およびスケジューラ68を備えている命
令制御ユニット16である。共に、これらは協働してクロ
ックサイクルあたり多くとも三つの命令を整数機能ユニ
ットおよび/または浮動小数点命令待行列に対して発行
する。先取りコントローラ66はプログラムカウンタ12、
命令待行列14、命令キャッシュ34、スケジューラ68、お
よび整数ユニットに結合されている。スケジューラ68は
命令待行列14、先取りコントローラ66、整数ユニットレ
ジスタファイル、および浮動小数点命令待行列に結合さ
れている。
び選択を行い、命令の先取りを制御する。先取りコント
ローラ66は分岐路解答を整数ユニットから、命令取出し
有効ビットおよび命令待行列の未使用容量を命令キャッ
シュ34から、および命令選択結果をスケジューラから入
力として受取り、分岐路予測および解答をプログラムカ
ウンタ12に、および制御信号を命令待行列14に出力す
る。スケジューラ68は命令を命令待行列14から入力とし
て受取り、レジスタ選択およびレジスタオペランドを整
数ユニットレジスタファイルにおよび/または浮動小数
点命令を浮動小数点待行列に、命令選択結果を先取りコ
ントローラ66に、および最後のサイクルで発行された命
令の数を命令待行列14およびプログラムカウンタ12に出
力する。
いるか否かに基づき、制御信号を命令待行列14に供給
し、命令待行列14にクロックサイクルあたり三つの命令
をその逐次待行列または目標待行列の先頭からスケジュ
ーラ68に供給させる。その他、先取りコントローラ66
は、命令が実行のため発行されているか否かに基づき、
制御信号を命令待行列14に条件付きで供給し、命令待行
列に供給された命令の全部または幾つかを逐次待行列ま
たは目標待行列のいずれかから逐次待行列まで再循環さ
せる。先取りコントローラ66が分岐径路を予測し解答す
る仕方を図10および図11を参照して更に詳細に説明
することにする。
ループの一部として発行されているか否か判定する。ス
ケジューラ68は逐次待行列または目標待行列のいずれか
からクロックサイクルあたり最大三つの命令を受取り、
最大三つの命令を整数機能ユニットおよび/または浮動
小数点命令待行列に向けて出力することができる。スケ
ジューラ68は、三つの命令が存在する場合、そのうちの
どれを実行のため同時に発行することができるかを判定
するのに1クロックサイクルより少ない時間しか必要と
しない。スケジューラ68が判定を行う仕方を図6〜図7
を参照して後に更に詳しく説明することにする。
16をクロックサイクルあたり全部で最大三つの命令を整
数機能ユニットおよび/または浮動小数点命令待行列に
供給することができる実施例を用いて説明してきたが、
命令制御ユニット16は、入力および出力の帯域幅および
スケジューラ68を対応させて調節すれば、mを3より大
きいとして、クロックサイクルあたり全部で最大m個の
命令を整数機能ユニットおよび/または浮動小数点待行
列に供給するよう拡張し得ることが認められるであろ
う。
ニットのスケジューラを図解する機能ブロック図が示さ
れている。図示されているのはオプコード復号器70、カ
スケード検出器72、グループ化論理74、および以前のグ
ループ経歴76を備えているスケジューラ68である。共
に、これらは協働してクロックサイクルあたり最大3個
の命令を実行のため整数機能ユニットおよび/または浮
動小数点待行列に対して発行する。オプコード復号器70
およびカスケード検出器72の両者は命令待行列およびグ
ループ化論理74に結合されている。カスケード検出器72
は以前のグループ経歴76に接続されている。グループ化
論理74は命令待行列、先取りコントローラ、以前のグル
ープ経歴76、整数ユニットレジスタファイル、および浮
動小数点命令待行列にも結合されている。
ドを復号する。オプコード復号器70は命令オプコードを
命令待行列から入力として受取り、各命令に関する命令
形成情報をグループ化論理74に出力する。カスケード検
出器72は候補命令それ自身の間、および候補命令と前任
命令との間、のデータ依存性を検出する。カスケード検
出器72は発信および宛先の各オペランド指標を命令待行
列から、および後に到着する整数結果指数を以前のグル
ープ経歴76から入力として受取り、命令間オペランド依
存性情報をグループ化論理74に出力する。
グループの一部として発行されているか否か判定する。
グループ化論理74は命令形式および命令間オペランド依
存性情報をそれぞれオプコード復号器70およびカスケー
ド検出器72から入力として受取り、整数ユニットレジス
タファイルおよび/または浮動小数点命令に対するレジ
スタ選択およびレジスタオペランドを浮動小数点命令待
行列に出力する。その他に、グループ化論理74は命令の
分類および発行の結果を以前のグループ経歴76、先取り
コントローラ、および命令待行列に出力する。
よび発行結果を蓄積し、発行した命令がパイプラインを
出るまで保持する。以前のグループ経歴76は最新のグル
ープ経歴をグループ化論理74から入力として受取り、グ
ループ経歴をグループ化論理74およびカスケード検出器
72に出力する。オプコード復号器70、カスケード検出器
72、およびグループ化論理74はすべてクロックサイクル
あたり最大三つの命令を受取り、分析し、出力すること
ができる。同様に、以前のグループ経歴76は、命令分類
および発行結果をクロックサイクルあたり最大三つの命
令について受取ることができる。
ループ化論理74と協同動作する仕方の他は、オプコード
復号器70は大部分のパイプライン化プロセッサに見られ
るオプコード復号器の広範な部類を表すことを目的とし
ている。その基本的機能および構成は周知であり、これ
以上説明しない。カスケード検出器72およびグループ化
論理74は図6〜図7を参照して後に更に詳しく説明する
ことにする。以前のグループ経歴76がカスケード検出器
72およびグループ化論理74と協同動作する仕方の他は、
以前のグループ経歴76は、大部分のパイプライン化プロ
セッサに見られる「スコアボード」の広範な部類を表す
ことを目的としている。その基本的機能および構成は周
知であり、これ以上説明しないことにする。
クロックサイクルあたり全部で最大三つの命令を分類
し、整数機能ユニットおよび/または浮動小数点命令待
行列に対して発行することができる実施例により説明し
てきたが、スケジューラ68は、入力および出力の帯域
幅、オプコード復号器70、カスケード検出器72、グルー
プ化論理74、および以前のグループ経歴76を対応させて
調節すれば、mを3より大きいとして、クロックサイク
ルあたり全部で最大m個までの命令を分類し、整数機能
ユニットおよび/または浮動小数点命令待行列に対して
発行するよう拡張し得ることが認められよう。
ラのカスケード検出器を図解する機能ブロック図が示さ
れている。図示されているのは同等検出器の三つのグル
ープ78〜82から成るカスケード検出器72である。共に、
これらは協同動作して候補命令そのものの間、および候
補命令と前任命令との間のデータ依存性を決定する。各
同等検出器84a、・・・、または84rはスケジューラの命
令待行列およびグループ化論理に結合されている。その
他、同等検出器の第3のグループ82の各同等検出器84
g、・・・、84rはスケジューラの以前のグループ経歴に
も結合されている。
よび第3の候補命令の源オペランドにより第1の候補命
令の結果オペランドに関するデータ依存性を検出する4
個の同等検出器84a〜84dから構成されている。同等検出
器の第1のグループ78の各同等検出器84a、84b、84c、
または84dは第1の候補命令の結果オペランド指標およ
び第2および第3の命令の4個の源オペランド指標の一
つを入力として受取る。応答して、各同等検出器84a、8
4b、84c、または84dは入力が互いに等しいか否かを示す
指示子を出力する。
候補命令の源オペランドにより第2の候補命令の結果オ
ペランドに関するデータ依存性を検出する2個の同等検
出器84e〜84fから構成されている。同等検出器の第2の
グループ80の各同等検出器、84eまたは84f、は第2の候
補命令の結果オペランド指標および第3の候補命令の源
オペランド指標の一つを入力として受取る。応答して、
各同等検出器、84eまたは84f、は入力が互いに等しいか
否かを示す指示子を出力する。
第2、および第3の候補命令の源オペランドによりパイ
プラインの実行ステージの後期に計算される二つの整数
結果のいずれか一つに関するデータ依存性を検出する12
個の同等検出器84g〜84rから構成されている。同等検出
器の第3のグループ82の各同等検出器、84g、・・・、
または84rは第3の候補命令の二つの前のグループの整
数結果指標の一つおよび六つの源オペランド指標の一つ
を入力として受取る。応答して、各同等検出器、84g、
・・・、または84r、は入力が互いに等しいか否かを示
す指示子を出力する。理解しやすくするためのカスケー
ド検出器72をクロックサイクルあたり三つの候補命令に
ついてデータ依存性を検出することができる実施例によ
り説明してきたが、カスケード検出器72は、同等検出器
の数を対応して増加すれば、mを3より大きいとして、
クロックサイクルあたりm個の候補命令についてデータ
依存性を検出するよう拡張し得ることが認められよう。
ラのグループ化論理を図解する機能ブロック図が示され
ている。図示されているのは三つの排他論理86a〜86cお
よび三つの対応するANDゲート88a〜88cから成るグル
ープ化論理74である。他に、グループ化論理74はエンコ
ーダ90および多数のラッチ92を備えている。共に、これ
らは協働して1クロックサイクルに三つの候補命令から
発行するための最大3個の命令を選択する。排他論理86
a〜86c、およびANDゲート88a〜88cは対応して互いに
結合されている。排他論理86a〜86cは命令待行列、オプ
コード復号器、カスケード検出器、および以前のグルー
プ経歴にも結合されている。ANDゲート88a〜88cはエ
ンコーダ90およびラッチ92に結合されている。エンコー
ダ90はプログラムカウンタおよび命令待行列にも結合さ
れている。ラッチ92はオプコード復号器、カスケード検
出器、以前のグループ経歴、先取りコントローラ、整数
ユニットレジスタファイル、および浮動小数点命令待行
列にも結合されている。
プライン化プロセッサの資源特性を反映して候補命令を
現在の命令グループから排除すべきか否かを決定する多
数の排他規則を実施する多数の組合わせ論理から構成さ
れている。各排他論理86a、86b、または86cは候補命令
有効信号を命令待行列から、 オプコードをオプコード
復号器から、およびデータ依存性指示子をカスケード検
出器から入力として受取る。応答して、 各排他論理86
a、86b、または86cは候補命令を実行のため発行するこ
とになっている命令の現在のグループから排除すべきか
否かを示す多数の排他信号を出力する。排他規則につい
ては後に更に詳しく説明する。
補命令を現在の命令グループに入れるべきか否かを決定
する。各ANDゲート88a、88b、または 88cは排他信号
を対応する排他論理86a、86b、 または86cから入力とし
て受取る。応答して、各ANDゲート88a、88b、 また
は88cは候補命令に対して候補命令を実行のため発行す
ることになっている命令の現在のグループに入れるべき
か否かを示す「取得」信号を出力する。エンコーダ90は
現在の命令グループに対するグループサイズを発生す
る。エンコーダ90は「取得」信号をANDゲート88a〜8
8cから入力として受取る。応答して、エンコーダ90は現
在のグループのサイズをプログラムカウンタおよび命令
待行列に向けて出力する。
ジスタ選択およびオペランド、および浮動小数点命令を
発生する。ラッチ92は「取得」信号をANDゲート88a
〜88cから、およびオプコードをオプコード検出器か
ら、およびデータ依存性をカスケード検出器から入力と
して受取る。応答して、ラッチ92は分岐選択を先取りコ
ントローラに、分類経歴の更新を以前のグループ経歴
に、レジスタ選択およびオペランドを整数ユニットレジ
スタファイルに、および浮動小数点命令を浮動小数点待
行列に出力する。排他論理86a〜86c、およびANDゲー
ト88a〜88cは次のように命令を分類し発行する。
R1、・・・、Rnを排他規則とし、Excludei_Rjは、命令
iを排他規則j、i=0、1、2、およびj=0、1、
・・・nのもとで排除すべきことを意味し、Groupi_Rj
は、命令iを排他規則jに基づいて分類することができ
ることを意味し、dGroupiは、命令iを、それに先行す
るすべての命令も分類されている場合およびその場合に
限りばらばらに分類することができることを意味し、Gr
opuiは、命令iを分類することができることを意味
し、!は反転を意味し、&&は二進和を意味するとしよ
う。
くどの命令をも同時に実行するためグループ化し且つ発
行することから除外することができることが認められる
であろう。
すなわち「後で区切る」排他規則、および「前で区切
る」排他規則である。「後で区切る」排他規則は命令の
後で命令のグループ化を終結し、「前で区切る」排他規
則は命令の前で命令のグループ化を終結する。各種類の
場合、排他規則は、分析中の命令に基づく排他規則、前
のグループに基づく排他規則、および例外に基づく排他
規則に更に細分される。
る。 a)最初の有効例外の後で区切る。この排他規則は命令
取出し段階中に命令アクセスの例外を受ける命令に続く
現在の命令のグループ化を終結する。 b)或る制御転送命令の後で区切る。この排他規則は分
岐と分岐に続く次の命令との間で現在の命令のグループ
化を終結する。図1の実施例なパイプライン化プロセッ
サでは、遅延命令が常に分岐命令に基づいている。
後で、その結果が直ぐ後に続くMULSCC命令に直列
に接続しないとき、区切る。この排他規則は第1のMU
LSCC命令の宛先が直ぐ後に続く第2のMULSCC
命令にカスケードしないとき二つの連続するMULSC
C命令の後で現在の命令のグループ化を終結する。本実
施例のパイプライン化プロセッサでは、MULSCC命
令は二つの32ビットの整数を乗算して64ビットの整数積
を生ずるのに連続して32回使用される。各MULSCC
命令は整数条件コードの現在の状態に依存する。MUL
SCCを実行するごとに単一ビットの積が生じ、新しい
整数条件コードが発生する。
コードの後で区切る。この排他規則はカスケード実行段
階で条件コードを設定する命令の直後に現在の命令のグ
ループ化を終結する。その源引数の一つが現在の命令の
グループ化の中の前の命令により発生されるとき命令は
カスケード実行段階を利用する。 e)無効分岐に続く最初の命令の後で区切る。この排他
規則は前の命令グループ(現在はパイプラインを更に下
っている)が無効分岐を含んでいるとき最初の候補命令
の直後に現在の命令のグループ化を終結する。この排他
規則は複数の命令が無効分岐の遅延スロットで実行しな
いようにする。本実施例のパイプライン化プロセッサで
は、二つの形式の分岐、遅延分岐および条件付取消しの
ある遅延分岐がある。分岐目標を計算し、目標アドレス
で命令の流れを取出す潜伏期間は命令を各分岐の直後に
各目的に実行することにより軽減される。この次の命令
は分岐遅延命令と呼ばれる。条件付き取消しを有する遅
延分岐は、条件付き分岐を取らない場合、遅延命令を押
しつぶす。分岐命令の取扱いについては図10〜図11
を参照して後に更に詳しく説明することにする。
最初の命令の後で区切る。この排他規則はプロセッサが
分岐結合を処理している途中にあるとき分岐の目標にあ
る最初の命令を後で現在の命令のグループ化を終結す
る。この排他規則は複数の命令が、分岐結合の最初の目
標命令が発行されているとき実行されないようにする。
実施例パイプライン化プロセッサでは、分岐結合は分岐
の遅延命令が他の分岐であるとき形成される。
成されている。 a)無効例外の前で区切る。この排他規則は命令制御ユ
ニットが命令待行列から命令を待っているとき現在の命
令のグループ化を終結する。命令待行列は三つより少な
い有効命令を備えることが可能である。本実施例のパイ
プライン化プロセッサでは、命令アクセス除外の期間中
に取出された命令さえ有効命令と考えられている。 b)整数ユニットレジスタファイル読取りポートからは
ずれる前で区切る。この排他規則は整数ユニットレジス
タファイル読取りポートすべてが使用される前に現在の
命令のグループ化を終結する。この排他規則はグループ
があまり多数の整数ユニットレジスタファイル読取りポ
ートを使用しないようにする
る。この排他規則は記憶装置が第2の時間についてもう
一度参照される前に現在の命令のグループ化を終結す
る。実施例パイプライン化プロセッサでは、記憶装置へ
のポートが一つしか存在しない。この排他規則は単一ポ
ートが複数の命令により同時に使用されないようにす
る。 d)第2の浮動小数点演算の前で区切る。この排他規則
は第2の浮動小数点演算が浮動小数点命令待行列に送ら
れる前に現在の命令のグループ化を終結する。本実施例
パイプライン化プロセッサでは、命令制御ユニットから
浮動小数点命令待行列までポートが一つしか存在しな
い。この排他規則は単一ポートが複数の命令により同時
に使用されないようにする。
規則はシフトが第2の時間についてもう一度使用される
前に現在の命令のグループ化を終結する。本実施例パイ
プライン化プロセッサでは、シフタが一つしか存在しな
い。この排他規則はシフタが複数の命令により同時に使
用されないようにする。 f)第2のカスケードの前で区切る。この排他規則は第
2のオペランドが後続の命令までカスケードされる前に
現在の命令のグループ化を終結する。この排他規則は二
つ以上のオペランドが一度にカスケードされないように
する。命令間のカスケードには二つの命令が必要であ
る。第2のカスケードには三つの命令かまたは両源オペ
ランドが実行段階の前半の結果である場合もう一つの命
令が必要である。実行段階については図8〜図9を参照
して後に更に詳しく説明することにする。
る。この排他規則はオペランドがシフタの使用を必要と
する命令にカスケードされる前に現在の命令のグループ
化を終結する。この排他規則はシフタが実行段の後半で
必要となることがないようにする。本実施例パイプライ
ン化プロセッサでは、シフタは一つしか存在せず、それ
は実行ステージの前半で使用されなければならないこと
になっている。
令にカスケードする前に区切る。この排他規則はオペラ
ンドがJMPL命令にカスケードされる前に現在の命令
のグループ化を終結する。この排他規則はJMPL命令
がJMPL命令の源レジスタの一つを変える命令グルー
プに分類されることがないようにする。本実施例パイプ
ライン化プロセッサでは、その目標アドレスが整数ユニ
ットレジスタファイルのエントリの内容に基づいて計算
される分岐命令であるJMPL命令を支持する。
切る。この排他規則は現在の命令のグループ化に入って
いるロード命令の結果を使用する命令の前で現在の命令
のグループ化を終結する。この排他規則はロード命令の
結果が同じ命令グループ内の他の命令にカスケードされ
ないようにする。本実施例パイプライン化プロセッサで
は、データを記憶装置からロードするのに1クロックサ
イクル全部が必要である。それ故、データは後続グルー
プの命令に対してだけ利用可能であり、同じ命令グルー
プ内の他の命令にカスケードされることはできない。
る前に区切る。この排他規則は現在の命令のグループ化
に入っている他の命令により修正されている記憶装置ア
ドレスを基準とする命令の前に現在の命令のグループ化
を終結する。この排他規則は記憶装置基準アドレスが同
じ命令グループ内の先行命令からカスケードされた結果
により修正されないようにする。
ードする前に区切る。この排他規則は前の命令グループ
に入っている他のロード命令の結果を使用するロード命
令の前で現在の命令のグループ化を終結する。この排他
規則は二つのロード命令が二つの連続するグループに入
ることがないようにする(「第2のロードの前で区切
る」および「ロード使用の前で区切る」排他規則は二つ
の連続するロード命令が同じ命令グループ内に入らない
ようにする)。実施例パイプライン化プロセッサでは、
記憶装置内のデータは実行ステージで参照される。記憶
装置基準に対するアドレスは記憶装置基準が始まる半サ
イクル前に記憶装置アドレスレジスタポートを読取るこ
とにより前のサイクルで計算される。その結果、アドレ
スレジスタに実行段の開始までに、ロード格納アドレス
を発生する即時データを付加することができる。計算し
たアドレスをロード格納アドレス加算器に送るのに前送
り径路が設けられている。
ができる命令の特定のグループの一員である命令の前で
現在の命令のグループ化を終結する。この排他規則はこ
れら特定の命令が同じ命令グループに分類されないよう
にする。本実施例パイプライン化プロセッサでは、これ
ら特定の命令は、制御レジスタにアクセスする命令、I/
Oポートにアクセスする命令、整数の乗除を行う命令、
浮動小数点分岐命令、信号装置を更新するのに使用され
る微細記憶装置基準、パイプラインの排出およびキャッ
シュを無効とする命令、および現在のレジスタウィンド
ウポインタを修正する命令、から構成されている。
(SetCC)してから制御レジスタ読出しの前に区切る。
この排他規則は先行命令により修正されているプロセス
で制御レジスタを読取る命令を入れる前に現在の命令の
グループ化を終結する。この排他規則は制御レジスタが
同じ命令グループ内の先行命令により修正されていると
き制御レジスタが命令により読取られないようにする。
本実施例パイプライン化プロセッサでは、整数条件コー
ドが整数ユニットにより発生される。
2のSetCCの前で区切る。この排他規則は、最初の
二つの候補命令がMULSCCでない場合には、第2の
SetCCの前で現在の命令のグループ化を終結する。
この排他規則は第2の候補命令の後でMULSCC対の
グループ化をも終結する。これにより整数機能ユニット
を用いて設定する条件コードの可能な源を制限する際の
複雑さが少なくなる。実施例パイプライン化プロセッサ
では、MULSCC命令は単一命令グループで、または
他のMULSCC命令を用いる二つの命令グループで実
行される。
拡張算術の前で区切る。この排他規則は、整数条件コー
ドを設定する包含命令に続く拡張演算の前に現在の命令
コードを終結する。この排他規則は拡張演算命令の整数
条件コードが修正されないようにする。実施例パイプラ
イン化プロセッサの命令では、実行段階中整数ユニット
を通じて複数のパスが行われる。この第1のパスは後続
反復に対する条件コードを修正する伝統的な演算命令で
ある。後続パスは付加源引数として整数条件を使用する
「拡張」演算命令を使用する。
延命令グループでの分岐の前で区切る。この排他規則は
含まれている遅延命令に続く分岐命令の前で現在の命令
のグループ化を終結する。この排他規則は遅延命令それ
自身が分岐である場合の他は別の分岐が遅延命令により
開始されないようにする。 q)分岐がレジスタ相対分岐である場合の他はJMPL
遅延スロットによる分岐の前で区切る。この排他規則
は、分岐命令がレジスタ相対分岐でもある場合の他は、
レジスタ相対分岐の遅延スロットによる分岐命令の前で
現在の命令のグループ化を終結する。この排他規則は命
令キャッシュに至る分岐目標アドレス選択に対する設計
の複雑さを少なくする。
の命令の前で区切る。この排他規則はパイプラインが機
能停止するとき現在の命令のグループ化を終結する。こ
の排他規則は命令が、パイプラインが機能停止したと
き、パイプラインに入らないようにする。実施例パイプ
ライン化プロセッサでは、パイプラインはデータキャッ
シュの失敗や浮動小数点待行列の満杯状態により機能停
止することがある。
イン化プロセッサに組込まれている本発明のパイプライ
ン段の現在のところ好適な実施例を図解するブロック図
が示されている。図示されているのは、複数の整数パイ
プライン段102〜116、および複数の浮動小数点パイプラ
インステージ118〜126から成る本発明のパイプラインス
テージ 100の現在のところ好適な実施例である。また図
示されているのは7クロックサイクルから成る一連のク
ロックパルス128である。
令取出しステージ(f0およびf1)102および104、三つの
命令復号段(d0、d1、およびd2)106〜110、二つの実行
段(e0およびe1)112および114、および一つの書戻しス
テージ(wb)116から構成されている。浮動小数点パイ
プラインステージ118〜126は二つの命令復号ステージ
(fdおよびfrf)118および120、二つの実行ステージ(f
add/fmulおよびfnorm/frnd)122および124、および一つ
の書戻しステージ126から構成されている。浮動小数点
実行ステージ(fadd/fmulおよびfnorm/frnd)122および
124の他は、各パイプラインステージ102、・・・120、
または126は半クロックサイクル必要である。各浮動小
数点ステージ(fadd/fmulまたはfnorm/frnd)122または
124は1クロックサイクルを必要とする。本発明は、パ
イプライン化プロセッサの特定の実施形態に応じて、こ
れら排他規則無しで、または別の排他規則を付加して実
用化し得ることが認められよう。
ンの種々のパイプラインステージでの動作の流れを図解
するブロック図が示されている。ステージf0およびf1
で、命令キャッシュから、ステージごとに二つづつ四つ
の命令が取出される(ブロック132および134)。
め同時に整数機能ユニットおよび/または浮動小数点待
行列に対して発行される(ブロック136)。ステージd1
で、整数ユニットレジスタファイルに二つのアドレスレ
ジスタが読取られ、分岐命令の目標アドレスが計算され
る(ブロック138)。ステージd2で、整数ユニットレジ
スタファイルの四つのデータレジスタが読取られ、ロー
ド/格納命令のロード/格納アドレスが計算される(ブ
ロック140)。ステージe0で、データキャッシュがアク
セスされ、浮動小数点動作が発行され、整数ユニットの
第1の命令が実行される(ブロック142)。ステージe1
で、整数ユニットの第2の命令が実行され、データがデ
ータキャッシュ/記憶装置からロードされ、除外条件が
解決される(ブロック144)。ステージwbで、二つの整
数結果がデータキャッシュ/記憶装置または整数ユニッ
トレジスタファイルに書込まれる(ブロック146)。
る(ブロック148)。ステージfrfで、浮動小数点レジス
タファイルが読取られる(ブロック150)。ステージfad
d/fmulで、浮動小数点和または浮動小数点積が計算され
る(ブロック152)。ステージfnorm/frndで、浮動小数
点和が正規化されるかまたは浮動小数点積が丸められる
(ブロック154)。ステージfwbで、浮動小数点結果が浮
動小数点レジスタファイルに書戻される(ブロック15
6)。 4 次に図10および図11を参照すると、図9のパイプラ
インに対する分岐命令の取扱いを図解する二つのブロッ
ク図が示されている。図10は分岐が取られる場合を示
している。図11は分岐が取られない場合を示してい
る。図10に示されているのは整数パイプラインを通し
て移動する四つの実施例命令グループ162〜168である。
時刻3で、命令制御ユニットは比較命令(CMP)およ
び等しくないとき分岐する命令(BNE)から成る第1
の実施例な二つの命令グループを実行のため整数機能ユ
ニットに発行する。命令制御ユニットは命令グループを
形成する途中で分岐命令を検出する。先取りコントロー
ラは分岐が取られるように進むと仮定して、遅延命令が
逐次命令待行列に存在するまで待ってから目標命令の流
れを取出す。
命令および次の逐次命令から成る第2の実施例な二つの
命令グループを実行のため整数機能ユニットに対して発
行する。同時に、命令制御ユニットは第1および第2の
目標命令を目標命令待行列に編入させる。時刻6で、分
岐を取っている整数機能ユニットおよび従って更新され
ているプログラムカウンタにより分岐が解決される。そ
れで、時刻7で、命令制御ユニットは第1の逐次命令を
押しつぶし、先取りコントローラは目標命令待行列の内
容を逐次命令待行列へ移動する。命令制御ユニットは、
例外を生ぜしめて第1の逐次命令を押しつぶし、従って
プログラムカウンタを更新させる。同時に、命令制御ユ
ニットは第1および第2の目標命令から成る第3の模範
的な二つの命令グループを命令復号およびデータ依存性
検出のためオプコード復号器およびカスケード検出器ま
で移動させる。更に、命令制御ユニットは第3および第
4の目標命令を目標命令待行列に編入させる。
インを通して移動する四つの実施例命令グループ162'〜
168'である。時刻3で、命令制御ユニットは、比較命令
(CMP)および等しくないとき分岐する命令(BN
E)から成る第1の実施例の二つの命令グループの実行
のため整数機能ユニットに対して発行する。命令制御ユ
ニットは命令グループを形成する途中で分岐命令を検出
する。命令制御ユニットは分岐が取られるように進んで
いると仮定して遅延命令が逐次命令待行列に存在するま
で待ってから目標命令の流れを取出す。
命令および次の逐次命令から成る第2の二つの命令グル
ープを実行のため整数機能ユニットに対して発行する。
同時に、命令制御ユニットは第1および第2の目標命令
を目標命令待行列に編入させる。時刻6で、分岐を取っ
ている整数機能ユニットおよび従って更新されているプ
ログラムカウンタにより分岐が解決される。それで、時
刻7で、命令制御ユニットは、第1の逐次命令を押しつ
ぶす例外を生ぜしめずに第1の逐次命令に整数パイプラ
インを下って移動し続けさせ、先取りコントローラは取
出された第1および第2の目標命令を捨てる。同時に、
命令制御ユニットは第2および第3の逐次命令から成る
第3の二つの命令グループを命令復号およびデータ依存
性検出のためオプコード復号器およびカスケード検出器
に移動させる。更に、命令制御ユニットは第4および第
5の逐次命令を逐次命令待行列に編入させる。
得ることが認められよう。精密な例外機構を採用するの
が望ましい。精密例外機構のこれ以上の説明について
は、に出願され、本発明と同じ譲受人、カリフォルニヤ
州マウンテンビューのSun Microsystems、に譲渡された
スーパースカラーコンピュータ用精密例外機構という名
称の米国特許出願、整数番号No. を参照された
い。
パイプライン化プロセッサによる実施例アプリケーショ
ンの実行を図解する図が示されている。図示されている
のは、4回解かれる方程式A(i)=N×B(j)+C
(k)をもちいるLINPACK Daxpy_4プロ
グラム170である。 結果を得るには全部で27の命令を実
行しなければならない。本実施例パイプライン化プロセ
ッサの命令制御ユニットは、各グループ、172、・・
・、または192、が重ねて実行する最大三つの命令から
構成される12の命令グループ172〜194の形で27の命令を
発行する。その結果、27の命令を12クロックサイクルで
実行することができ、処理量がサイクルあたり2.25命令
のように改善される。
例を用いて説明してきたが、当業者は本発明が記述した
実施例に限定されないことを認めるであろう。本発明の
方法および装置は特許請求の範囲の精神および範囲の中
で修正および変形を行って実施することが可能である。
したがって説明は本発明を限定するのではなく例示と見
なすものとする。
ッサの機能ブロック図を示す。
ニットの一実施例の機能ブロック図を示す。
いる本発明の命令待行列の現在のところ好適な実施例の
機能ブロック図を示す。
いる本発明の命令制御機能ユニットの現在のところ好適
な実施例の機能ブロック図を示す。
のところ好適な実施例の機能ブロック図を示す。
のところ好適な実施例の機能ブロック図を示す。
ところ好適な実施例の機能ブロック図を示す。
ンステージの現在のところ好適な実施例を示す。
れ図を示す。
の取扱を示す。
の取扱を示す。
プリケーションの実行を示す。
ニット
Claims (10)
- 【請求項1】 命令制御ユニットを備えているパイプラ
イン化プロセッサにでの前記命令制御ユニットに対する
命令の待行列を作る方法において、 a)複数の逐次命令を逐次命令待行列に編成するステッ
プと、 b)複数の分岐目標命令を分岐目標命令待行列に編成す
るステップと、 c)前記逐次命令待行列および目標命令待行列から選択
された前記逐次命令および分岐目標命令の各一つを前記
命令制御ユニットに与えるステップと、 d)前記与えられた命令が実行するため前記命令制御ユ
ニットにより発行されなければ、前記命令制御ユニット
に与えられた前記命令を前記逐次待行列に再編入するス
テップと、から成る方法。 - 【請求項2】 整数および浮動小数点機能ユニットを備
えているパイプライン化プロセッサでの複数の命令を実
行するためグループ化し、前記整数ユニットおよび浮動
小数点ユニットに対して同時に発行する方法において、 a)命令待行列からm個の命令を受取るステップと、 b)前記m個の命令のオプコードを復号するステップ
と、 c)一つの命令から他の命令までカスケードにされてい
るオペランドを検出するステップと、 d)前記m個の命令の各々に複数の除外規則を適用して
前記命令を他の命令と関連して実行するため前記整数お
よび浮動小数点ユニットに対して発行することから除外
すべきか否かを判定するステップと、 e)除外されない前記命令をグループ化し、それらを実
行のため前記整数および浮動小数点ユニットに同時に発
行するステップと、から成る方法。 - 【請求項3】 パイプライン化プロセッサで命令実行を
パイプライン化する方法において、 a)n1個の整数演算を複数の逐次整数パイプラインステ
ージによりパイプライン化するステップと、 b)浮動小数点パイプラインステージの始めの方を前記
整数パイプラインステージの後の方と重ねてn2個の浮動
小数点演算を複数の逐次浮動小数点パイプラインステー
ジを通じてパイプライン化するステップと、から成る方
法。 - 【請求項4】 パイプライン式プロセッサで整数の結果
を発生する方法において、 a)レジスタデータおよび転送データを選択的にマルチ
プレクサし、その選択されたレジスタデータおよび転送
データを出力するステップと、 b)前記レジスタデータおよび転送データを選択的にシ
フトし、シフトしたデータを出力するステップと、 c)前記レジスタデータおよび転送データを選択的に加
算し、複数の第1の加算データを出力するステップと、 d)アドレス、前記シフトデータ、および前記第1の加
算データを選択的にマルチプレクサし、その選択された
アドレス、シフトデータ、および第1の加算データを出
力するステップと、 e)前記アドレスを選択的に加算し、その加算されたア
ドレスを出力するステップと、 f)前記シフトデータおよび第1の加算データを選択的
に加算し、第2の加算データを出力するステップと、 g)前記シフトデータ、および第1および第2の加算デ
ータを選択的にマルチプレクサし、そのシ選択されたシ
フトデータ、および第1および第2の加算データを出力
するステップと、から成る方法。 - 【請求項5】 命令制御ユニットを備えているパイプラ
イン化プロセッサで前記命令制御ユニットに対する命令
の待行列を作る装置において、 a)複数の逐次命令の待行列を作る第1の待行列作成手
段と、 b)複数の分岐目標命令の待行列を作る第2の待行列作
成手段と、 c)前記第1および第2の待行列作成手段および前記命
令制御ユニットに結合して、前記逐次命令および分岐目
標命令の所定の各々を前記命令制御ユニットに与える第
1のマルチプレクサ手段と、 d)前記第1および第2の待行列作成手段および前記命
令制御ユニットに結合して、前記与えられた命令が実行
のため前記命令制御ユニットにより発行されない場合
に、前記命令制御ユニットに与えられた前記命令を前記
逐次待行列に再編入する第2のマルチプレクサ手段と、
から構成される装置。 - 【請求項6】 整数および浮動小数点機能ユニットを備
えているパイプライン化プロセッサでの複数の命令を実
行するためにグループ化し、前記整数ユニットおよび浮
動小数点ユニットに対して同時に発行する方法におい
て、 a)m個の命令を命令待行列から受取る受領手段と、 b)前記受領手段に結合して前記m個の命令のオプコー
ドを復号する復号手段と、 c)前記受領手段に結合して、一つの命令から他の命令
までカスケードされているオペランドを検出する検出手
段と、 d)前記復号手段および検出手段に結合して、複数の実
行規則を前記m個の命令の各々に適用して前記命令を他
の命令と関連して実行するため前記整数および浮動小数
点ユニットに対する発行から除外すべきか否かを判定
し、除外されない前記命令をグループ化し、それらを実
行のため前記整数および浮動小数点ユニットに対して同
時に発行するグループ化手段と、から構成されている装
置。 - 【請求項7】 パイプライン化プロセッサで命令実行を
パイプライン化する装置であって、 a)n1個の整数演算を複数の逐次整数パイプラインステ
ージによりパイプライン化する整数パイプライン化手段
と、 b)前記整数パイプライン化手段に結合してn2個の浮動
小数点演算を複数の逐次浮動小数点パイプラインステー
ジによりパイプライン化するにあたって、前記浮動小数
点パイプラインステージの始めの方を前記整数パイプラ
インステージの後の方と重ねて行う浮動小数点パイプラ
イン化手段と、から構成されている装置。 - 【請求項8】 パイプライン化プロセッサで整数の結果
を発行する整数機能ユニットにおいて、 a)前記パイプライン化プロセッサの整数ユニットレジ
スタファイルおよび第2のマルチプレクサに結合し、そ
の整数ユニットレジスタファイルおよび前記第2のマル
チプレクサからデータを選択的に受取り、この受取った
データを出力する第1のマルチプレクサと、 b)前記第1のマルチプレクサに結合し、前記受取った
データを選択的にシフトしてシフトデータを出力する少
なくとも一つのシフタと、 c)前記第1のマルチプレクサに結合し、前記受取りデ
ータを選択的に加算して第1の加算データを出力する複
数の第1の加算器と、 d)前記整数ユニットレジスタファイル、前記少なくと
も一つのシフタ、および前記複数の第1の加算器に結合
して、アドレス、前記シフトデータ、および前記加算デ
ータを選択的に受取り、この受取ったアドレス、シフト
データ、および加算データを出力する第3のマルチプレ
クサと、 e)前記第3のマルチプレクサに結合して前記受取った
アドレスを加算し、加算アドレスを出力する少なくとも
一つのアドレス加算器と f)前記第2のマルチプレクサに結合して前記シフトデ
ータおよび第1の加算データを選択的に加算し、第2の
加算データを出力する少なくとも一つの第2の加算器
と、 g)前記第3のマルチプレクサおよび前記少なくとも一
つの第2の加算器に結合して、前記シフトデータ、第1
の加算データ、および第2の加算データを選択的に受取
り、この受取ったデータを前記整数ユニットレジスタフ
ァイルおよび前記第1のマルチプレクサに出力する第2
のマルチプレクサと、から構成されている整数機能ユニ
ット。 - 【請求項9】 a)逐次命令目標および目標命令目標か
ら成り、複数の命令の待行列を作る命令待行列作成手段
と、 b)前記命令待行列作成手段に結合してm個の命令をク
ロックサイクルごとに同時にグループ化して発行し、実
行する命令制御手段と、 c)前記命令制御手段に結合して前記命令のオペランド
を格納する整数ユニットレジスタファイル手段と、 d)前記整数ユニットレジスタファイルに結合し、n1を
mを支持するのに充分な大きさであるときクロックサイ
クルごとにn1個の整数結果を発生する整数機能手段と、 e)前記命令制御手段に結合して浮動小数点命令の待行
列を作り、実行のためこれを発行する浮動小数点待行列
作成制御手段と、 f)前記浮動小数点待行列作成制御手段に結合し、前記
浮動小数点命令のオペランドを格納する浮動小数点ユニ
ットレジスタファイル手段と、 g)前記浮動小数点ユニットレジスタファイル手段に結
合し、n2をmを支持するのに充分な大きさであるとき、
クロックサイクルごとにn2個の浮動小数点結果を発生す
る浮動小数点機能手段と、を備えて構成されるパイプラ
イン化プロセッサ。 - 【請求項10】 パイプライン化プロセッサで分岐命令
を処理する方法において、 a)前記分岐命令を取出すステップと、 b)前記分岐命令を復号するステップと、 c)前記分岐を行わない場合に前記分岐命令の後に実行
される命令である複数の逐次命令を、前記分岐命令の前
記復号と実質上同時に取出すステップと、 d)前記分岐命令を発行し、実行するステップと、 e)前記逐次命令の少なくとも第1の命令を、前記分岐
命令の前記実行と実質上同時に復号するステップと、 f)前記分岐が行われる場合に前記分岐命令の後に実行
される命令である複数の目標命令を、前記逐次命令の少
なくとも前記第1の命令の前記復号と実質上同時に取出
すステップと、から成る方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US87535392A | 1992-04-29 | 1992-04-29 | |
| US875353 | 1992-04-29 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH06318155A true JPH06318155A (ja) | 1994-11-15 |
| JP3575617B2 JP3575617B2 (ja) | 2004-10-13 |
Family
ID=25365656
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP12478693A Expired - Lifetime JP3575617B2 (ja) | 1992-04-29 | 1993-04-30 | コンピュータシステム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5509130A (ja) |
| JP (1) | JP3575617B2 (ja) |
| KR (1) | KR100309566B1 (ja) |
Families Citing this family (86)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5835745A (en) * | 1992-11-12 | 1998-11-10 | Sager; David J. | Hardware instruction scheduler for short execution unit latencies |
| JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
| US5848288A (en) * | 1995-09-20 | 1998-12-08 | Intel Corporation | Method and apparatus for accommodating different issue width implementations of VLIW architectures |
| US5872947A (en) * | 1995-10-24 | 1999-02-16 | Advanced Micro Devices, Inc. | Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions |
| US5787026A (en) * | 1995-12-20 | 1998-07-28 | Intel Corporation | Method and apparatus for providing memory access in a processor pipeline |
| US6115730A (en) * | 1996-02-28 | 2000-09-05 | Via-Cyrix, Inc. | Reloadable floating point unit |
| US5619667A (en) * | 1996-03-29 | 1997-04-08 | Integrated Device Technology, Inc. | Method and apparatus for fast fill of translator instruction queue |
| US5799167A (en) * | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
| EP0810518B1 (en) * | 1996-05-30 | 2004-03-17 | Matsushita Electric Industrial Co., Ltd. | Method and circuit for delayed branch control |
| US5958042A (en) | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
| US5784603A (en) * | 1996-06-19 | 1998-07-21 | Sun Microsystems, Inc. | Fast handling of branch delay slots on mispredicted branches |
| US6006320A (en) * | 1996-07-01 | 1999-12-21 | Sun Microsystems, Inc. | Processor architecture with independent OS resources |
| US6049863A (en) * | 1996-07-24 | 2000-04-11 | Advanced Micro Devices, Inc. | Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor |
| US5867680A (en) * | 1996-07-24 | 1999-02-02 | Advanced Micro Devices, Inc. | Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions |
| US5754811A (en) * | 1996-10-08 | 1998-05-19 | Putrino; Michael | Instruction dispatch queue for improved instruction cache to queue timing |
| US5870582A (en) * | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
| US5805849A (en) * | 1997-03-31 | 1998-09-08 | International Business Machines Corporation | Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions |
| US5887161A (en) * | 1997-03-31 | 1999-03-23 | International Business Machines Corporation | Issuing instructions in a processor supporting out-of-order execution |
| US5913048A (en) * | 1997-03-31 | 1999-06-15 | International Business Machines Corporation | Dispatching instructions in a processor supporting out-of-order execution |
| US6047368A (en) * | 1997-03-31 | 2000-04-04 | Sun Microsystems, Inc. | Processor architecture including grouping circuit |
| US6098167A (en) * | 1997-03-31 | 2000-08-01 | International Business Machines Corporation | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution |
| US5913047A (en) * | 1997-10-29 | 1999-06-15 | Advanced Micro Devices, Inc. | Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency |
| US6216218B1 (en) * | 1997-11-03 | 2001-04-10 | Donald L. Sollars | Processor having a datapath and control logic constituted with basis execution blocks |
| KR100480384B1 (ko) * | 1997-11-22 | 2005-07-18 | 엘지산전 주식회사 | 피엘씨전용마이크로프로세서의프로그램제어방법 |
| US6163821A (en) * | 1998-12-18 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for balancing load vs. store access to a primary data cache |
| US6460130B1 (en) * | 1999-02-19 | 2002-10-01 | Advanced Micro Devices, Inc. | Detecting full conditions in a queue |
| US6237066B1 (en) * | 1999-03-22 | 2001-05-22 | Sun Microsystems, Inc. | Supporting multiple outstanding requests to multiple targets in a pipelined memory system |
| WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
| HK1046049A1 (zh) | 1999-09-01 | 2002-12-20 | Intel Corporation | 用於多线程处理器的分支指令 |
| US6711670B1 (en) * | 1999-10-14 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | System and method for detecting data hazards within an instruction group of a compiled computer program |
| US6438664B1 (en) | 1999-10-27 | 2002-08-20 | Advanced Micro Devices, Inc. | Microcode patch device and method for patching microcode using match registers and patch routines |
| US6697939B1 (en) * | 2000-01-06 | 2004-02-24 | International Business Machines Corporation | Basic block cache microprocessor with instruction history information |
| US6609190B1 (en) * | 2000-01-06 | 2003-08-19 | International Business Machines Corporation | Microprocessor with primary and secondary issue queue |
| US6708267B1 (en) | 2000-02-04 | 2004-03-16 | International Business Machines Corporation | System and method in a pipelined processor for generating a single cycle pipeline stall |
| US6735686B1 (en) * | 2000-06-30 | 2004-05-11 | Hitachi, Ltd. | Data processing device including two instruction decoders for decoding branch instructions |
| US6757807B1 (en) * | 2000-08-18 | 2004-06-29 | Sun Microsystems, Inc. | Explicitly clustered register file and execution unit architecture |
| US6728866B1 (en) * | 2000-08-31 | 2004-04-27 | International Business Machines Corporation | Partitioned issue queue and allocation strategy |
| US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
| US6948054B2 (en) * | 2000-11-29 | 2005-09-20 | Lsi Logic Corporation | Simple branch prediction and misprediction recovery method |
| US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
| US7047397B2 (en) * | 2002-09-13 | 2006-05-16 | Intel Corporation | Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU |
| JP2004192021A (ja) * | 2002-12-06 | 2004-07-08 | Renesas Technology Corp | マイクロプロセッサ |
| US20060174089A1 (en) * | 2005-02-01 | 2006-08-03 | International Business Machines Corporation | Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture |
| US7269715B2 (en) * | 2005-02-03 | 2007-09-11 | International Business Machines Corporation | Instruction grouping history on fetch-side dispatch group formation |
| US7475223B2 (en) * | 2005-02-03 | 2009-01-06 | International Business Machines Corporation | Fetch-side instruction dispatch group formation |
| US7774582B2 (en) * | 2005-05-26 | 2010-08-10 | Arm Limited | Result bypassing to override a data hazard within a superscalar processor |
| US20060277425A1 (en) * | 2005-06-07 | 2006-12-07 | Renno Erik K | System and method for power saving in pipelined microprocessors |
| US7634644B2 (en) * | 2006-03-13 | 2009-12-15 | Sun Microsystems, Inc. | Effective elimination of delay slot handling from a front section of a processor pipeline |
| EP2011018B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
| CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
| WO2010021119A1 (ja) * | 2008-08-21 | 2010-02-25 | パナソニック株式会社 | 命令制御装置 |
| JP2010140398A (ja) * | 2008-12-15 | 2010-06-24 | Renesas Electronics Corp | データ処理装置及びデータ処理方法 |
| US8667476B1 (en) | 2009-01-20 | 2014-03-04 | Adaptmicrosys LLC | Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system |
| JP5436033B2 (ja) * | 2009-05-08 | 2014-03-05 | パナソニック株式会社 | プロセッサ |
| EP3156896B1 (en) | 2010-09-17 | 2020-04-08 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
| CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
| CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
| KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
| US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
| CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
| US9092236B1 (en) * | 2011-06-05 | 2015-07-28 | Yong-Kyu Jung | Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system |
| WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
| KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
| US8856769B2 (en) * | 2012-10-23 | 2014-10-07 | Yong-Kyu Jung | Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system |
| US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
| US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
| WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
| US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
| US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
| EP2972845B1 (en) * | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
| US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
| WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
| US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
| US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
| WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
| WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
| KR101562910B1 (ko) * | 2014-02-13 | 2015-10-26 | 한국과학기술원 | 명령어 캐시의 구동 방법, 이를 이용하는 명령어 캐시 및 이를 포함하는 데이터 처리 장치 |
| US20160055001A1 (en) * | 2014-08-19 | 2016-02-25 | Oracle International Corporation | Low power instruction buffer for high performance processors |
| US9710278B2 (en) | 2014-09-30 | 2017-07-18 | International Business Machines Corporation | Optimizing grouping of instructions |
| US20160283243A1 (en) * | 2015-03-28 | 2016-09-29 | Yong-Kyu Jung | Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system |
| GB2563589B (en) * | 2017-06-16 | 2019-06-12 | Imagination Tech Ltd | Scheduling tasks |
| US11269650B2 (en) * | 2018-12-29 | 2022-03-08 | Texas Instruments Incorporated | Pipeline protection for CPUs with save and restore of intermediate results |
| US10936321B2 (en) * | 2019-02-01 | 2021-03-02 | International Business Machines Corporation | Instruction chaining |
| CN110647362B (zh) * | 2019-09-11 | 2023-03-31 | 上海高性能集成电路设计中心 | 一种基于记分牌原理的两级缓置发射装置 |
| US11544062B2 (en) * | 2019-09-27 | 2023-01-03 | Intel Corporation | Apparatus and method for store pairing with reduced hardware requirements |
| US11656877B2 (en) * | 2021-03-31 | 2023-05-23 | Advanced Micro Devices, Inc. | Wavefront selection and execution |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
| US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
| US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
| US5230068A (en) * | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
| US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
-
1993
- 1993-04-27 KR KR1019930007075A patent/KR100309566B1/ko not_active Expired - Fee Related
- 1993-04-30 JP JP12478693A patent/JP3575617B2/ja not_active Expired - Lifetime
-
1994
- 1994-12-14 US US08/355,804 patent/US5509130A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| KR930022193A (ko) | 1993-11-23 |
| US5509130A (en) | 1996-04-16 |
| KR100309566B1 (ko) | 2001-12-15 |
| JP3575617B2 (ja) | 2004-10-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3575617B2 (ja) | コンピュータシステム | |
| US10380063B2 (en) | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator | |
| US6279100B1 (en) | Local stall control method and structure in a microprocessor | |
| US5450556A (en) | VLIW processor which uses path information generated by a branch control unit to inhibit operations which are not on a correct path | |
| US6272616B1 (en) | Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths | |
| US5710902A (en) | Instruction dependency chain indentifier | |
| US5574942A (en) | Hybrid execution unit for complex microprocessor | |
| US9329866B2 (en) | Methods and apparatus for adapting pipeline stage latency based on instruction type | |
| US5619664A (en) | Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms | |
| JP2006012182A (ja) | データ処理システムとその方法 | |
| EP3776228A1 (en) | Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
| US6128721A (en) | Temporary pipeline register file for a superpipelined superscalar processor | |
| US5604878A (en) | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path | |
| WO2000033183A9 (en) | Method and structure for local stall control in a microprocessor | |
| EP3491514A1 (en) | Transactional register file for a block-based processor | |
| US5860154A (en) | Method and apparatus for calculating effective memory addresses | |
| WO2000033186A1 (en) | Variable issue-width vliw processor | |
| US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
| US11726912B2 (en) | Coupling wide memory interface to wide write back paths | |
| JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
| US7340590B1 (en) | Handling register dependencies between instructions specifying different width registers | |
| US6988121B1 (en) | Efficient implementation of multiprecision arithmetic | |
| US7437544B2 (en) | Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction | |
| Nakajima et al. | OHMEGA: a VLSI superscalar processor architecture for numerical applications | |
| US7509365B2 (en) | Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040218 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040309 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040517 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040615 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040701 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070716 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090716 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090716 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100716 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110716 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110716 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120716 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120716 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130716 Year of fee payment: 9 |
|
| EXPY | Cancellation because of completion of term |