JP3575617B2 - コンピュータシステム - Google Patents

コンピュータシステム Download PDF

Info

Publication number
JP3575617B2
JP3575617B2 JP12478693A JP12478693A JP3575617B2 JP 3575617 B2 JP3575617 B2 JP 3575617B2 JP 12478693 A JP12478693 A JP 12478693A JP 12478693 A JP12478693 A JP 12478693A JP 3575617 B2 JP3575617 B2 JP 3575617B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
integer
data
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP12478693A
Other languages
English (en)
Other versions
JPH06318155A (ja
Inventor
リチャード・ディ・トローバン
サニル・ナンダ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH06318155A publication Critical patent/JPH06318155A/ja
Application granted granted Critical
Publication of JP3575617B2 publication Critical patent/JP3575617B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent 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)

Description

【0001】
【産業上の利用分野】
本発明はコンピュータシステムの分野に関し、特に、パイプライン化プロセッサを備えているコンピュータシステムに関する。更に詳細に述べれば、本発明は複数の命令をグループ化し、それらを同時に発行し、それらをパイプライン化プロセッサで実行することに関する。
【0002】
【従来技術】
所定のコンピュータプログラムに必要な実行時間は三つの因子、すなわちプログラムの動的アセンブリ言語命令回数、命令あたりのサイクル数、およびプロセッサの基本クロック速度の積である。最初の因子は注目しているプログラムの動的命令回数の全数を減らすコンパイラ技術によって決まる。最後の因子は高速トランジスタ間に低キャパシタンス接続を作る際の集積回路製作技術の速度限界によって決まる。2番目の因子はプロセッサの構造、特に、命令の発令および実行に関する構造、によって決まるが、これが本発明の中心点である。
【0003】
今日、実行性能を改善するため、多数のコンピュータシステムはパイプライン化プロセッサを備えている。パイプライン化は、複数の命令を実行時に同時に重ねて行うプロセッサの実施法である。パイプライン化は、パイプライン制御が付加されて個々の命令の実行時間がわずかに増大するにもかかわらず、プロセッサの命令実行の処理量、すなわちパイプラインを出る命令の割合を増加させる。
【0004】
パイプライン化プロセッサは、各パイプラインのステージで実行中の命令の一部を完了する複数のステージから成る組立ラインに似ている。典型的には、パイプラインは六つのステージ、命令の取出し、命令の復号、データ記憶装置のアドレス発生、プロセッサに存在するオペランドの取出し、命令の実行、および結果の書込み、に分解することができる。複数の命令は一部重なるようにパイプステージを通して移動する。
【0005】
伝統的に、すべてのステージは同時に準備完了し進行しなければならない。その結果、機械サイクル、すなわち命令をパイプライン中を1ステージ下方に動かすのに必要な時間、したがってパイプライン化プロセッサの処理量は最も低速のステージによって決まり、制限されている。このように、更に速いステージを使用するという明らかな方法に加えて、最新のパイプライン化プロセッサの多くは機能ユニットをそのそれぞれのペースで独立に進行することができるように設計されている。
【0006】
しかし、機能ユニットをそれら自身のペースで独立に進行できるようにすることにより、パイプラインの種々なハザードが入ってきている。ハザードに遭遇すると、実行および後続の命令は失速しなければならないことになる。パイプラインのハザードには三つの種類がある。
【0007】
1.プロセッサが同時に重なった実行の命令のあらゆる組合わせを支持するよう完全にはパイプライン化されていないとき、たとえば、レジスタファイル書込みポートが一つしかないパイプライン化プロセッサに二つのレジスタが同時に書込むときのような、資源の衝突による構造的ハザード。
2.命令が未だ利用可能になっていない初期の命令の結果に依存する。たとえば、後続ADD命令が未だ利用可能になっていない初期のSUBTRACT命令の結果に依存する、ことによるデータのハザード、および
3.プログラムカウンタを変える分岐命令や他の命令をパイプライン化することによる制御のハザード。
【0008】
したがって、最新のパイプライン化プロセッサは典型的にはパイプラインのハザードの発生の可能性を少なくするよう最適化されている。その他に、種々の同期化法の一つがパイプラインのハザードを処理するのに採用されている。同期化法の特定の例には次のようなものがある。
【0009】
1)転送または迂回。これは算術論理装置(ALU)の結果を常にALU入力ラッチにフィードバックする簡単なハードウェア技法である。始めのALU演算が現在のALU演算の源に対応するレジスタに書込まれていれば、レジスタファイルから読取った値の代わりに転送した結果をALU入力として選択する。
【0010】
2)スコアボード。これは更にこみ入ったハードウェア技法であって、中央に集中した情報を維持してデータのハザードの周りの動的スケジュールを容易にする、すなわち、充分な資源を用い且つデータの依存性無しに順序の乱れた命令実行を可能とする。典型的には、スコアボードは発令されたまたは未決定の各命令の現在の状態を追跡する命令状態表、各機能ユニットの現在の状態を追跡する機能ユニット状態表、およびどの機能ユニットがレジスタに書込むかを追跡するレジスタ結果状態表を備えている。
【0011】
3)Tomasuloアルゴリズム。これはスコアボード法の中央集中を排除した変種であるが重要な二つの点で異なっている。
a.ハザード検出および実行制御を機能ユニット内の保留ステーションを用いて機能ユニットに分配し、ディスパッチされた命令を機能ユニットのすべての依存性および利用可能性について実行未定になっている解決を列を作って待つ。b.実行結果を、レジスタを通して進めるのではなく直接機能ユニットから送る。
【0012】
伝統的に、命令はその長さが可変であり、それらは読出されて一度に一つづつパイプラインにディスパッチされている。命令の長さは、記憶装置の費用が比較的高いので記憶装置内に命令を能率良く詰め込むことに対して高いプレミアムが設けられている。その結果、命令復号ステージでは多数の理論的ハードウェアが必要になっている。命令は、第1の命令が復号されるまで、次の命令の開始バイト位置を決定することができないので、順次に復号されていた。更に、各命令は復号するのに多数クロックサイクルを必要としている。
【0013】
【発明が解決しようとする課題】
しかし、記憶装置の費用は比較的廉価になってきており、最新式のパイプライン化プロセッサの多くは、特に縮小命令集合を基準とするパイプライン化プロセッサは、現在は固定長の命令を発生している。その結果、命令復号ステージにはもはや多数の理論的ハードウェアは必要ではない。各命令の開始位置を決定することができるから、複数の命令を同時に復号することができる。更に、充分な資源を用いて、多数の命令を1クロックサイクルで復号することができる。
【0014】
したがって、固定長命令では実行速度を増し、そのためパイプライン化プロセッサの処理量を増す新しい機会が提供される。それ故独立の機能ユニットに対する複数の命令を1クロックサイクルで取出し、復号し、発行することができることが望まれる。更に、複数の命令を集中式または非集中式のいずれの同期化についてもハードウェアの増加を最少限にして発令することが特に望ましい。
【0015】
以下の開示から明らかなように、これらの目的および所要結果は、本発明の目的および所要結果に含まれるものであり、本発明は複数の命令を同時に取出し、復号し、発令することができ、これによりパイプライン化プロセッサの実行速度および処理量を増大する新しい方法を提供するものである。
パイプライン化に関するこれ以上の説明については、J.L.HennessyとD.A.Pattersonとの共著、Computer Architecture A Quantitative Approach, Morgan Kaufmann Publishers, Inc., 1990を参照されたい。
【0016】
【課題を解決するための手段】
複数の命令をグループ化し、これらを同時に発行し、それらをパイプライン化プロセッサで実行する方法および装置を開示している。現在のところ好適な実施例のもとでは、一部重ねて実行するためクロックサイクルあたり最大m個の命令を同時にグループ化して発行するパイプライン化プロセッサに命令待行列および命令制御ユニットが設けられている。他に、パイプライン化プロセッサはクロックサイクルあたりそれぞれ最大n1個の整数結果およびn2個の浮動小数点結果を発生することができる整数ユニットおよび浮動小数点ユニットをも備えている。ここでn1およびn2はクロックサイクルあたり発行されるm個の命令を支持して命令待行列および命令制御ユニットを補足するに充分な大きさである。整数ユニットおよび浮動小数点ユニットにはそれ自身の整数レジスタファイルおよび浮動小数点レジスタファイルがそれぞれ設けられている。浮動小数点ユニットには浮動小数点演算待行列および浮動小数点演算制御ユニットも設けられている。更に、プロセッサのパイプラインステージは整数パイプラインステージおよび浮動小数点パイプラインステージに分割されており、始めの方の浮動小数点パイプラインステージが後の方の整数パイプラインステージに一部重なっている。
【0017】
その現在のところ好適な形態においては、命令待行列は逐次待行列および目標待行列から成り、命令キャッシュから取出されたプログラムの逐次命令およびプログラムの分岐命令の目標命令をそれぞれ格納している。
その現在のところ好適な形態では、命令制御ユニットは先取りコントローラおよびスケジューラから構成されている。先取りコントローラは、分岐径路の予測および解決を含む、命令先取りを制御する。スケジューラはオプコード復号器、カスケード検出器、グループ化論理、および以前のグループ経歴を備えている。オプコード復号器は命令を復号する。カスケード検出器は命令から命令へのオペランドのカスケードを検出する。以前のグループ経歴は発令された命令グループを追跡する。グループ化論理は命令を、オプコード復号器およびカスケード検出器から受取った入力、以前のグループ経歴によって、保持されている経歴、および「前で区切る」および「後で区切る」除外規則(排他規則)の数の適用に基づき、多くともm個の命令の命令グループにグループ化する。「前で区切る」および「後で区切る」除外規則は資源の特性およびプロセッサの特定の実施法を反映するものである。グループ化された命令は一部重ねて実行するため整数ユニットおよび浮動小数点ユニットに対して同時に発行される。
【0018】
一実施例では、整数ユニットは多数の加算器および少なくとも一つのシフタから構成され、n1個の論理的加算器として協同で働いている。加算器の少なくとも一つはアドレス加算器であり、加算器の少なくとも二つはブール演算をも行う。
【0019】
整数パイプラインステージは多数の命令取出しステージ、多数の命令復号ステージ、多数の実行ステージ、および少なくとも一つの書き戻しステージから構成されている。浮動小数点パイプラインステージは多数の復号ステージ、多数の実行ステージ、および少なくとも一つの書戻しステージから構成されている。浮動小数点命令復号ステージは後の方の整数実行ステージおよび書戻しステージと一部重なり合っている。
【0020】
整数命令取出しステージで、命令は命令制御ユニットの先取りコントローラの制御のもとで命令キャッシュから適切な命令待行列へ先取りされる。整数命令復号ステージで、適切な命令が復号され、少なくともm個の命令から成る命令グループにグループ化され、命令制御ユニットのスケジューラにより一部重ねて実行するため同時に発行される。更に、整数命令復号ステージでは、データがレジスタから読出され、目標およびロード/格納の各アドレスが整数ユニットにより計算される。整数実行ステージで、データがデータキャッシュから読出され、整数演算が行われ、データが整数ユニットにより記憶装置からロードされる。更に、整数実行ステージでは、浮動小数点演算が発行され、例外が命令制御ユニットにより解決される。整数書戻しステージ(一つまたは複数)で、整数結果が整数ユニットにより書戻される。
【0021】
浮動小数点命令復号ステージで、浮動小数点命令が浮動小数点演算制御ユニットにより復号され、データが浮動小数点ユニットによりレジスタから読出される。浮動小数点実行ステージで、浮動小数点演算が浮動小数点ユニットにより行われる。最後に、浮動小数点書戻しステージ(一つまたは複数)で、データが浮動小数点ユニットにより書戻される。
【0022】
分岐命令はすべて命令制御ユニットの先取りコントローラにより取出されることを予測される。それぞれの場合において、目標命令が分岐方向が整数ユニットにより決められる前に先取りコントローラにより先取りされる。次の逐次命令が遅延命令と共にグループ化され、命令制御ユニットのスケジューラにより純理論的に発行される。分岐命令を取る必要があれば、分岐が解決されたとき、純理論的に発行された逐次命令を整数ユニットにより押しつぶす。分岐を取らなければ、分岐が解決されたとき、先取りした目標命令を捨て、逐次命令を復号し、スケジューラにより代わりに発行する。
【0023】
【実施例】
複数の命令をグループ化し、それらを独立の機能ユニットを備えているパイプライン化プロセッサで実行するため同時に発行する方法および装置を開示する。説明の目的で以下の記述では、本発明を充分理解できるようにするため特定の数、材料、および構成を示してある。しかし、当業者には本発明をこの特定の細目無しで実用化し得ることが明らかであろう。その他の場合では、周知のシステムを本発明を不必要にあいまいにしないために図式の形でまたはブロック図の形で示してある。
【0024】
次に図1には、本発明の教示を取入れている実施例パイプライン化プロセッサを示す機能ブロック図が図示されている。図示されているのは、プログラムカウンタ12、多数の命令待行列14、および命令制御ユニット16から構成されている実施例パイプライン化プロセッサ10である。プログラムカウンタ12、命令待行列14、および命令制御ユニット16は互いに結合されている。共に、それらは協働してクロックサイクルあたり最大三つの命令を同時に発行する。
【0025】
プログラムカウンタ12が命令制御ユニット16と協働する仕方の他は、大部分のパイプライン化プロセッサに見られる広範な部類のプログラムカウンタを表すつもりである。その基本的機能および構成は周知であり、これ以上説明しないことにする。命令待行列14、命令制御ユニット16、およびそれらが互いに協働する仕方、およびプログラムカウンタ12を図3〜図9を参照して後に更に詳しく説明することにする。
【0026】
本発明を理解しやすくするため、本発明をそのプログラムカウンタ12、命令待行列14、および命令制御ユニット16が以下の説明に基づき、クロックサイクルあたり同時に最大三つの命令を発行する実施例プロセッサ10を用いて説明しているが、代わりに本発明をすべての他の補足的設計考慮事項を対応させてして調節すれば、協同動作するこれらの要素を用いてクロックサイクルあたり最大m個の命令を同時に発行するよう実用化し得ることが認められるであろう。更に、mの選択は、比較的小さいmについて、実行性能ゲインのそれ以上の増大の命令グループの決定に必要な時間のそれ以上の増加に対する比と実施装置の複雑さとのかね合いによる。しかし、命令グループを決定するのに必要な時間および実施装置の複雑さはmが増加するにつれて非線形的に増大し、或る点で、命令グループを決定するのに必要な時間および/または実施装置の複雑さは命令実行時間の節約より大きくなる。
【0027】
図1を引き続き参照すると、パイプライン化プロセッサ10は更に整数ユニットレジスタファイル18および整数機能ユニット20を備えている。整数ユニットレジスタファイル18は命令制御ユニット16および整数機能ユニット20に結合されており、整数機能ユニット20は命令制御ユニット16にも結合されている。整数ユニットレジスタファイル18および整数機能ユニット20は、協働してクロックサイクルあたり最大二つの整数結果を発生する。
【0028】
整数ユニットレジスタファイル18は互いに無関係な4個のレジスタポートを備えている。互いに無関係な4個のレジスタポートは、時間多重すると、6個の読出しポートおよび2個の書込みポートと同等の容量を備え、2個のアドレスレジスタの同時読出し、または4個のデータレジスタの同時読出し、またはどれか2個のレジスタの同時書込みを支持するのに充分である。整数ユニットレジスタファイル18の読み書き帯域幅、および整数ユニットレジスタファイル18が整数機能ユニット20と協同動作する仕方を除けば、整数ユニットレジスタファイル18は大部分のパイプライン式プロセッサに見られる広範な部類のレジスタファイルを表すことを目的としている。その基本的機能および機能は周知であり、これ以上説明しないことにする。整数機能ユニット20の一つの実施例、および整数機能ユニット20が命令制御ユニット16および整数ユニットレジスタファイル18と協同動作する仕方を図2、図8〜図9を参照して後に更に詳しく説明する。
【0029】
本発明を理解しやすくするため、本発明を、その整数ユニットレジスタファイル18および整数機能ユニット20が、以下の説明に基づいて、協働してクロックサイクルあたり最大二つの整数結果を発生する実施例プロセッサ10を用いて説明しているが、代わりに本発明を、他のすべての補足的設計考慮事項、特に整数機能ユニット20を対応させて調節すれば、協同動作するそれら要素を用いてクロックサイクルあたり最大n1個の整数結果を発生するよう実用化し得ることが認められよう。
【0030】
なおも図1を参照すると、実施例パイプライン化プロセッサ10は、更に浮動小数点命令待行列24、浮動小数点命令制御ユニット26、浮動小数点ユニットレジスタファイル28、浮動小数点機能ユニット30、およびマルチプレクサ32を備えている。浮動小数点命令待行列24は命令制御ユニット16および浮動小数点命令制御ユニット26に結合されており、浮動小数点命令制御ユニット26は浮動小数点ユニットレジスタファイル28にも結合されている。浮動小数点ユニットレジスタファイル28は浮動小数点機能ユニット30およびマルチプレクサ32にも結合されている。共に、これらはクロックサイクルあたり多くとも一つの浮動小数点結果を発生する。
【0031】
浮動小数点命令待行列が命令制御ユニット16と協同動作する仕方を除けば、浮動小数点命令待行列24、浮動小数点命令制御ユニット26、浮動小数点ユニットレジスタファイル28、浮動小数点ユニット30、およびマルチプレクサ32は大部分のパイプライン化プロセッサに見られる広範な部類のこれら要素を表すことを目的としている。それらの基本的機能および構成は周知であり、これ以上説明しないことにする。浮動小数点命令待行列24が命令制御ユニット16と協同動作する仕方を図8〜図9を参照して後に更に詳しく説明する。
【0032】
本発明を理解しやすくするため、その浮動小数点命令待行列24、浮動小数点制御ユニット26、浮動小数点ユニットレジスタファイル28、浮動小数点機能ユニット30、およびマルチプレクサ32が、以下に説明することに基づき、クロックサイクルあたり多くとも一つの浮動小数点結果を発生する実施例プロセッサ10を用いて説明しているが、代わりに本発明を、他のすべての補足的設計考慮事項、特に、浮動小数点命令待行列24、浮動小数点命令制御ユニット26、および浮動小数点機能ユニット30を対応させて調節すれば、協同動作するこれら要素を用いてクロックサイクルあたり最大n2個の浮動小数点結果を発生するように実施することができる。
【0033】
なおも図1を参照すると、実施例パイプライン化プロセッサ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、に供給する。
【0034】
命令キャッシュ34が命令待行列14と協同動作する仕方の他は、命令制御ユニット16、およびデータキャッシュ36が整数機能ユニット20、命令キャッシュ34、データキャッシュ36、共有記憶装置管理ユニット38、書込みバッファ40、およびキャッシュ・コヒーレント・バスインターフェースユニットと協同動作する仕方は大部分のパイプライン化プロセッサに見られるこれら要素の広範な部類を表すことを目的としている。それらの基本的機能および構成は周知であり、これ以上説明しないことにする。命令キャッシュ34が命令待行列14、命令制御ユニット16と協同動作する仕方、およびデータキャッシュ36が整数機能ユニット20と協同動作する仕方を図3、図8、および図9を参照して後に更に詳細に説明する。
【0035】
今度は図2を参照すると、図1の実施例パイプライン化プロセッサの整数機能ユニットの一実施例を示す機能ブロックが示されている。図示してあるのはアドレス加算器22、データ加算器44、46、および48、シフタ50、および三つのマルチプレクサ52、54、および56から構成されている整数機能ユニット20である。共に、これらは協同動作してクロックサイクルあたり多くとも二つの整数結果を発生する。
【0036】
アドレス加算器22は第2のマルチプレクサ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に結合されている。
【0037】
アドレス加算器22はアドレスを発生する。アドレス加算器22はアドレスを整数ユニットレジスタファイル18から第2のマルチプレクサ54を介して入力として受取り、アドレスをデータキャッシュ36および共有記憶装置管理ユニット38に出力する。
【0038】
3個のデータ加算器44、46、および48、およびシフタ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に選択的に供給されるか、または次の命令のため前に送られる。
【0039】
加算器28、44〜48、およびシフタ50はクロックサイクルあたり最大2個のアドレスレジスタのオペランドおよび最大4個のアドレスレジスタのオペランドを受取ることができる。加算器22、44〜48の他にシフタ50も各々、その動作を完了するのに半クロックサイクルしか必要としない。
【0040】
理解しやすくするため、整数機能ユニット20を、協同動作してクロックサイクルあたり多くとも2個の整数結果を発生する2個の論理的加算器を備えている上述の実施例を用いて説明しているが、上の実施例を協同動作してクロックサイクルあたり多くともn1個の整数結果を発生するn1個の論理的加算器を備えるよう拡張し得ることが認められよう。他に、整数機能ユニット20を上の実施例を用いて説明しているが、本発明はクロックサイクルあたり充分な補足数の整数結果を発生する他の実施例を用いて実用化し得ることが認められよう。
【0041】
今度は図3を参照すれば、図1の実施例パイプライン化プロセッサの命令待行列を示す機能ブロック図が示されている。図示されているのは、逐次待行列58、分岐目標待行列60、および2個のマルチプレクサ62および64から成る命令待行列14である。共に、これらは協同動作してクロックサイクルあたり三つの命令を命令制御ユニット16に供給する。
【0042】
逐次待行列および分岐目標待行列、58および60、は命令キャッシュ34および2個のマルチプレクサ62および64に結合されている。他に、逐次待行列58、第1のマルチプレクサ62、および第2のマルチプレクサ64は命令制御ユニット16にも結合されている。逐次待行列58はプログラムカウンタ12にも結合されている。
【0043】
逐次待行列および分岐目標待行列、58および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の末尾に付加される。
【0044】
逐次待行列58および分岐目標待行列60の両者はクロックサイクルあたり4つの命令を命令キャッシュ34から受取ることができる。逐次待行列58には一度に4つまでの命令を保持する能力がある。逐次待行列58および分岐目標待行列60はクロックサイクルあたり最大三つの命令を命令制御ユニット16に対し第1のマルチプレクサ62を通して出力することもできる。
【0045】
理解しやすくするため、命令待行列14をクロックサイクルあたり三つの逐次命令および/または分岐目標命令を命令制御ユニット16に供給することができる実施例により説明してきたが、命令待行列14は、入力および出力の帯域幅および待行列の容量を対応させて調節すれば、mを3より大きいとして、クロックサイクルあたりm個の命令を命令制御ユニット16に供給するよう拡張し得ることが認められよう。
【0046】
次に図4を参照すると、図1の実施例パイプライン化プロセッサの命令制御ユニットを図解する機能ブロック図が示されている。図示されているのは先取りコントローラ66およびスケジューラ68を備えている命令制御ユニット16である。共に、これらは協働してクロックサイクルあたり多くとも三つの命令を整数機能ユニットおよび/または浮動小数点命令待行列に対して発行する。
先取りコントローラ66はプログラムカウンタ12、命令待行列14、命令キャッシュ34、スケジューラ68、および整数ユニットに結合されている。スケジューラ68は命令待行列14、先取りコントローラ66、整数ユニットレジスタファイル、および浮動小数点命令待行列に結合されている。
【0047】
先取りコントローラ66は分岐路の予測および選択を行い、命令の先取りを制御する。先取りコントローラ66は分岐路解答を整数ユニットから、命令取出し有効ビットおよび命令待行列の未使用容量を命令キャッシュ34から、および命令選択結果をスケジューラから入力として受取り、分岐路予測および解答をプログラムカウンタ12に、および制御信号を命令待行列14に出力する。スケジューラ68は命令を命令待行列14から入力として受取り、レジスタ選択およびレジスタオペランドを整数ユニットレジスタファイルにおよび/または浮動小数点命令を浮動小数点待行列に、命令選択結果を先取りコントローラ66に、および最後のサイクルで発行された命令の数を命令待行列14およびプログラムカウンタ12に出力する。
【0048】
先取りコントローラ66は、分岐が取られているか否かに基づき、制御信号を命令待行列14に供給し、命令待行列14にクロックサイクルあたり三つの命令をその逐次待行列または目標待行列の先頭からスケジューラ68に供給させる。その他、先取りコントローラ66は、命令が実行のため発行されているか否かに基づき、制御信号を命令待行列14に条件付きで供給し、命令待行列に供給された命令の全部または幾つかを逐次待行列または目標待行列のいずれかから逐次待行列まで再循環させる。先取りコントローラ66が分岐径路を予測し解答する仕方を図10および図11を参照して更に詳細に説明することにする。
【0049】
スケジューラ68は候補命令が現在の命令グループの一部として発行されているか否か判定する。スケジューラ68は逐次待行列または目標待行列のいずれかからクロックサイクルあたり最大三つの命令を受取り、最大三つの命令を整数機能ユニットおよび/または浮動小数点命令待行列に向けて出力することができる。スケジューラ68は、三つの命令が存在する場合、そのうちのどれを実行のため同時に発行することができるかを判定するのに1クロックサイクルより少ない時間しか必要としない。スケジューラ68が判定を行う仕方を図6〜図7を参照して後に更に詳しく説明することにする。
【0050】
理解しやすくするため、命令制御ユニット16をクロックサイクルあたり全部で最大三つの命令を整数機能ユニットおよび/または浮動小数点命令待行列に供給することができる実施例を用いて説明してきたが、命令制御ユニット16は、入力および出力の帯域幅およびスケジューラ68を対応させて調節すれば、mを3より大きいとして、クロックサイクルあたり全部で最大m個の命令を整数機能ユニットおよび/または浮動小数点待行列に供給するよう拡張し得ることが認められるであろう。
【0051】
次に図5を参照すると、図4の命令制御ユニットのスケジューラを図解する機能ブロック図が示されている。図示されているのはオプコード復号器70、カスケード検出器72、グループ化論理74、および以前のグループ経歴76を備えているスケジューラ68である。共に、これらは協働してクロックサイクルあたり最大3個の命令を実行のため整数機能ユニットおよび/または浮動小数点待行列に対して発行する。
オプコード復号器70およびカスケード検出器72の両者は命令待行列およびグループ化論理74に結合されている。カスケード検出器72は以前のグループ経歴76に接続されている。グループ化論理74は命令待行列、先取りコントローラ、以前のグループ経歴76、整数ユニットレジスタファイル、および浮動小数点命令待行列にも結合されている。
【0052】
オプコード復号器70は候補命令のオプコードを復号する。オプコード復号器70は命令オプコードを命令待行列から入力として受取り、各命令に関する命令形成情報をグループ化論理74に出力する。
カスケード検出器72は候補命令それ自身の間、および候補命令と前任命令との間、のデータ依存性を検出する。カスケード検出器72は発信および宛先の各オペランド指標を命令待行列から、および後に到着する整数結果指数を以前のグループ経歴76から入力として受取り、命令間オペランド依存性情報をグループ化論理74に出力する。
【0053】
グループ化論理74は候補命令が現在の命令グループの一部として発行されているか否か判定する。グループ化論理74は命令形式および命令間オペランド依存性情報をそれぞれオプコード復号器70およびカスケード検出器72から入力として受取り、整数ユニットレジスタファイルおよび/または浮動小数点命令に対するレジスタ選択およびレジスタオペランドを浮動小数点命令待行列に出力する。その他に、グループ化論理74は命令の分類および発行の結果を以前のグループ経歴76、先取りコントローラ、および命令待行列に出力する。
【0054】
以前のグループ経歴は、命令グループ化および発行結果を蓄積し、発行した命令がパイプラインを出るまで保持する。以前のグループ経歴76は最新のグループ経歴をグループ化論理74から入力として受取り、グループ経歴をグループ化論理74およびカスケード検出器72に出力する。
オプコード復号器70、カスケード検出器72、およびグループ化論理74はすべてクロックサイクルあたり最大三つの命令を受取り、分析し、出力することができる。同様に、以前のグループ経歴76は、命令分類および発行結果をクロックサイクルあたり最大三つの命令について受取ることができる。
【0055】
オプコード復号器70が命令待行列およびグループ化論理74と協同動作する仕方の他は、オプコード復号器70は大部分のパイプライン化プロセッサに見られるオプコード復号器の広範な部類を表すことを目的としている。その基本的機能および構成は周知であり、これ以上説明しない。カスケード検出器72およびグループ化論理74は図6〜図7を参照して後に更に詳しく説明することにする。以前のグループ経歴76がカスケード検出器72およびグループ化論理74と協同動作する仕方の他は、以前のグループ経歴76は、大部分のパイプライン化プロセッサに見られる「スコアボード」の広範な部類を表すことを目的としている。その基本的機能および構成は周知であり、これ以上説明しないことにする。
【0056】
理解しやすくするため、スケジューラ68をクロックサイクルあたり全部で最大三つの命令を分類し、整数機能ユニットおよび/または浮動小数点命令待行列に対して発行することができる実施例により説明してきたが、スケジューラ68は、入力および出力の帯域幅、オプコード復号器70、カスケード検出器72、グループ化論理74、および以前のグループ経歴76を対応させて調節すれば、mを3より大きいとして、クロックサイクルあたり全部で最大m個までの命令を分類し、整数機能ユニットおよび/または浮動小数点命令待行列に対して発行するよう拡張し得ることが認められよう。
【0057】
次に図6を参照すると、図5のスケジューラのカスケード検出器を図解する機能ブロック図が示されている。図示されているのは同等検出器の三つのグループ78〜82から成るカスケード検出器72である。共に、これらは協同動作して候補命令そのものの間、および候補命令と前任命令との間のデータ依存性を決定する。各同等検出器84a、・・・、または84rはスケジューラの命令待行列およびグループ化論理に結合されている。その他、同等検出器の第3のグループ82の各同等検出器84g、・・・、84rはスケジューラの以前のグループ経歴にも結合されている。
【0058】
同等検出器の第1のグループ78は、第2および第3の候補命令の源オペランドにより第1の候補命令の結果オペランドに関するデータ依存性を検出する4個の同等検出器84a〜84dから構成されている。同等検出器の第1のグループ78の各同等検出器84a、84b、84c、または84dは第1の候補命令の結果オペランド指標および第2および第3の命令の4個の源オペランド指標の一つを入力として受取る。応答して、各同等検出器84a、84b、84c、または84dは入力が互いに等しいか否かを示す指示子を出力する。
【0059】
同等検出器の第2のグループ80は、第3の候補命令の源オペランドにより第2の候補命令の結果オペランドに関するデータ依存性を検出する2個の同等検出器84e〜84fから構成されている。同等検出器の第2のグループ80の各同等検出器、84eまたは84f、は第2の候補命令の結果オペランド指標および第3の候補命令の源オペランド指標の一つを入力として受取る。応答して、各同等検出器、84eまたは84f、は入力が互いに等しいか否かを示す指示子を出力する。
【0060】
同等検出器の第3のグループ82は、第1、第2、および第3の候補命令の源オペランドによりパイプラインの実行ステージの後期に計算される二つの整数結果のいずれか一つに関するデータ依存性を検出する12個の同等検出器84g〜84rから構成されている。同等検出器の第3のグループ82の各同等検出器、84g、・・・、または84rは第3の候補命令の二つの前のグループの整数結果指標の一つおよび六つの源オペランド指標の一つを入力として受取る。応答して、各同等検出器、84g、・・・、または84r、は入力が互いに等しいか否かを示す指示子を出力する。
理解しやすくするためのカスケード検出器72をクロックサイクルあたり三つの候補命令についてデータ依存性を検出することができる実施例により説明してきたが、カスケード検出器72は、同等検出器の数を対応して増加すれば、mを3より大きいとして、クロックサイクルあたりm個の候補命令についてデータ依存性を検出するよう拡張し得ることが認められよう。
【0061】
次に図7を参照すると、図5のスケジューラのグループ化論理を図解する機能ブロック図が示されている。図示されているのは三つの排他論理86a〜86cおよび三つの対応するANDゲート88a〜88cから成るグループ化論理74である。他に、グループ化論理74はエンコーダ90および多数のラッチ92を備えている。共に、これらは協働して1クロックサイクルに三つの候補命令から発行するための最大3個の命令を選択する。
排他論理86a〜86c、およびANDゲート88a〜88cは対応して互いに結合されている。排他論理86a〜86cは命令待行列、オプコード復号器、カスケード検出器、および以前のグループ経歴にも結合されている。ANDゲート88a〜88cはエンコーダ90およびラッチ92に結合されている。エンコーダ90はプログラムカウンタおよび命令待行列にも結合されている。ラッチ92はオプコード復号器、カスケード検出器、以前のグループ経歴、先取りコントローラ、整数ユニットレジスタファイル、および浮動小数点命令待行列にも結合されている。
【0062】
各排他論理86a、86b、または86cは、パイプライン化プロセッサの資源特性を反映して候補命令を現在の命令グループから排除すべきか否かを決定する多数の排他規則を実施する多数の組合わせ論理から構成されている。各排他論理86a、86b、または86cは候補命令有効信号を命令待行列から、 オプコードをオプコード復号器から、およびデータ依存性指示子をカスケード検出器から入力として受取る。応答して、 各排他論理86a、86b、または86cは候補命令を実行のため発行することになっている命令の現在のグループから排除すべきか否かを示す多数の排他信号を出力する。排他規則については後に更に詳しく説明する。
【0063】
各ANDゲート88a、88b、または 88cは候補命令を現在の命令グループに入れるべきか否かを決定する。各ANDゲート88a、88b、または 88cは排他信号を対応する排他論理86a、86b、 または86cから入力として受取る。応答して、各ANDゲート88a、88b、 または88cは候補命令に対して候補命令を実行のため発行することになっている命令の現在のグループに入れるべきか否かを示す「取得」信号を出力する。
エンコーダ90は現在の命令グループに対するグループサイズを発生する。エンコーダ90は「取得」信号をANDゲート88a〜88cから入力として受取る。応答して、エンコーダ90は現在のグループのサイズをプログラムカウンタおよび命令待行列に向けて出力する。
【0064】
ラッチ92は分類選択、分類経歴の更新、レジスタ選択およびオペランド、および浮動小数点命令を発生する。ラッチ92は「取得」信号をANDゲート88a〜88cから、およびオプコードをオプコード検出器から、およびデータ依存性をカスケード検出器から入力として受取る。応答して、ラッチ92は分岐選択を先取りコントローラに、分類経歴の更新を以前のグループ経歴に、レジスタ選択およびオペランドを整数ユニットレジスタファイルに、および浮動小数点命令を浮動小数点待行列に出力する。
排他論理86a〜86c、およびANDゲート88a〜88cは次のように命令を分類し発行する。
【0065】
三つの命令をi0、i1、およびi2とし、
R0、R1、・・・、Rnを排他規則とし、
Excludei_Rjは、命令iを排他規則j、i=0、1、2、およびj=0、1、・・・nのもとで排除すべきことを意味し、
Groupi_Rjは、命令iを排他規則jに基づいて分類することができることを意味し、
dGroupiは、命令iを、それに先行するすべての命令も分類されている場合
およびその場合に限りばらばらに分類することができることを意味し、
Gropuiは、命令iを分類することができることを意味し、
!は反転を意味し、
&&は二進和を意味するとしよう。
【0066】
そうすると、
Figure 0003575617
【0067】
どの排他規則も一つの命令およびそれに続くどの命令をも同時に実行するためグループ化し且つ発行することから除外することができることが認められるであろう。
【0068】
排他規則には基本的な二つの種類がある。すなわち「後で区切る」排他規則、および「前で区切る」排他規則である。「後で区切る」排他規則は命令の後で命令のグループ化を終結し、「前で区切る」排他規則は命令の前で命令のグループ化を終結する。各種類の場合、排他規則は、分析中の命令に基づく排他規則、前のグループに基づく排他規則、および例外に基づく排他規則に更に細分される。
【0069】
「後で区切る」排他規則は次のものから成る。
a)最初の有効例外の後で区切る。
この排他規則は命令取出し段階中に命令アクセスの例外を受ける命令に続く現在の命令のグループ化を終結する。
b)或る制御転送命令の後で区切る。
この排他規則は分岐と分岐に続く次の命令との間で現在の命令のグループ化を終結する。図1の実施例なパイプライン化プロセッサでは、遅延命令が常に分岐命令に基づいている。
【0070】
c)複数ステップ(MULSCC)命令の後で、その結果が直ぐ後に続くMULSCC命令に直列に接続しないとき、区切る。
この排他規則は第1のMULSCC命令の宛先が直ぐ後に続く第2のMULSCC命令にカスケードしないとき二つの連続するMULSCC命令の後で現在の命令のグループ化を終結する。本実施例のパイプライン化プロセッサでは、MULSCC命令は二つの32ビットの整数を乗算して64ビットの整数積を生ずるのに連続して32回使用される。各MULSCC命令は整数条件コードの現在の状態に依存する。MULSCCを実行するごとに単一ビットの積が生じ、新しい整数条件コードが発生する。
【0071】
d)カスケード実行段階で設定された条件コードの後で区切る。
この排他規則はカスケード実行段階で条件コードを設定する命令の直後に現在の命令のグループ化を終結する。その源引数の一つが現在の命令のグループ化の中の前の命令により発生されるとき命令はカスケード実行段階を利用する。
e)無効分岐に続く最初の命令の後で区切る。
この排他規則は前の命令グループ(現在はパイプラインを更に下っている)が無効分岐を含んでいるとき最初の候補命令の直後に現在の命令のグループ化を終結する。この排他規則は複数の命令が無効分岐の遅延スロットで実行しないようにする。本実施例のパイプライン化プロセッサでは、二つの形式の分岐、遅延分岐および条件付取消しのある遅延分岐がある。分岐目標を計算し、目標アドレスで命令の流れを取出す潜伏期間は命令を各分岐の直後に各目的に実行することにより軽減される。この次の命令は分岐遅延命令と呼ばれる。条件付き取消しを有する遅延分岐は、条件付き分岐を取らない場合、遅延命令を押しつぶす。分岐命令の取扱いについては図10〜図11を参照して後に更に詳しく説明することにする。
【0072】
f)分岐結合の最初の目標アドレスにある最初の命令の後で区切る。
この排他規則はプロセッサが分岐結合を処理している途中にあるとき分岐の目標にある最初の命令を後で現在の命令のグループ化を終結する。この排他規則は複数の命令が、分岐結合の最初の目標命令が発行されているとき実行されないようにする。実施例パイプライン化プロセッサでは、分岐結合は分岐の遅延命令が他の分岐であるとき形成される。
【0073】
「前で区切る」排他命令は次のものから構成されている。
a)無効例外の前で区切る。
この排他規則は命令制御ユニットが命令待行列から命令を待っているとき現在の命令のグループ化を終結する。命令待行列は三つより少ない有効命令を備えることが可能である。本実施例のパイプライン化プロセッサでは、命令アクセス除外の期間中に取出された命令さえ有効命令と考えられている。
b)整数ユニットレジスタファイル読取りポートからはずれる前で区切る。
この排他規則は整数ユニットレジスタファイル読取りポートすべてが使用される前に現在の命令のグループ化を終結する。この排他規則はグループがあまり多数の整数ユニットレジスタファイル読取りポートを使用しないようにする
【0074】
c)第2のデータ記憶装置参照の前で区切る。
この排他規則は記憶装置が第2の時間についてもう一度参照される前に現在の命令のグループ化を終結する。実施例パイプライン化プロセッサでは、記憶装置へのポートが一つしか存在しない。この排他規則は単一ポートが複数の命令により同時に使用されないようにする。
d)第2の浮動小数点演算の前で区切る。
この排他規則は第2の浮動小数点演算が浮動小数点命令待行列に送られる前に現在の命令のグループ化を終結する。本実施例パイプライン化プロセッサでは、命令制御ユニットから浮動小数点命令待行列までポートが一つしか存在しない。この排他規則は単一ポートが複数の命令により同時に使用されないようにする。
【0075】
e)第2のシフトの前で区切る。
この排他規則はシフトが第2の時間についてもう一度使用される前に現在の命令のグループ化を終結する。本実施例パイプライン化プロセッサでは、シフタが一つしか存在しない。この排他規則はシフタが複数の命令により同時に使用されないようにする。
f)第2のカスケードの前で区切る。
この排他規則は第2のオペランドが後続の命令までカスケードされる前に現在の命令のグループ化を終結する。この排他規則は二つ以上のオペランドが一度にカスケードされないようにする。命令間のカスケードには二つの命令が必要である。第2のカスケードには三つの命令かまたは両源オペランドが実行段階の前半の結果である場合もう一つの命令が必要である。実行段階については図8〜図9を参照して後に更に詳しく説明することにする。
【0076】
g)シフトのカスケードされる前で区切る。
この排他規則はオペランドがシフタの使用を必要とする命令にカスケードされる前に現在の命令のグループ化を終結する。この排他規則はシフタが実行段の後半で必要となることがないようにする。本実施例パイプライン化プロセッサでは、シフタは一つしか存在せず、それは実行ステージの前半で使用されなければならないことになっている。
【0077】
h)レジスタ相対制御転送(JMPL)命令にカスケードする前に区切る。
この排他規則はオペランドがJMPL命令にカスケードされる前に現在の命令のグループ化を終結する。この排他規則はJMPL命令がJMPL命令の源レジスタの一つを変える命令グループに分類されることがないようにする。本実施例パイプライン化プロセッサでは、その目標アドレスが整数ユニットレジスタファイルのエントリの内容に基づいて計算される分岐命令であるJMPL命令を支持する。
【0078】
i)ロードデータカスケード使用の前で区切る。
この排他規則は現在の命令のグループ化に入っているロード命令の結果を使用する命令の前で現在の命令のグループ化を終結する。この排他規則はロード命令の結果が同じ命令グループ内の他の命令にカスケードされないようにする。本実施例パイプライン化プロセッサでは、データを記憶装置からロードするのに1クロックサイクル全部が必要である。それ故、データは後続グループの命令に対してだけ利用可能であり、同じ命令グループ内の他の命令にカスケードされることはできない。
【0079】
j)記憶装置基準アドレスにカスケードする前に区切る。
この排他規則は現在の命令のグループ化に入っている他の命令により修正されている記憶装置アドレスを基準とする命令の前に現在の命令のグループ化を終結する。この排他規則は記憶装置基準アドレスが同じ命令グループ内の先行命令からカスケードされた結果により修正されないようにする。
【0080】
k)前のグループが記憶装置基準にカスケードする前に区切る。
この排他規則は前の命令グループに入っている他のロード命令の結果を使用するロード命令の前で現在の命令のグループ化を終結する。この排他規則は二つのロード命令が二つの連続するグループに入ることがないようにする(「第2のロードの前で区切る」および「ロード使用の前で区切る」排他規則は二つの連続するロード命令が同じ命令グループ内に入らないようにする)。実施例パイプライン化プロセッサでは、記憶装置内のデータは実行ステージで参照される。記憶装置基準に対するアドレスは記憶装置基準が始まる半サイクル前に記憶装置アドレスレジスタポートを読取ることにより前のサイクルで計算される。その結果、アドレスレジスタに実行段の開始までに、ロード格納アドレスを発生する即時データを付加することができる。計算したアドレスをロード格納アドレス加算器に送るのに前送り径路が設けられている。
【0081】
l)逐次命令の前で区切る
この排他規則は、それ自身によってだけ実行されることができる命令の特定のグループの一員である命令の前で現在の命令のグループ化を終結する。この排他規則はこれら特定の命令が同じ命令グループに分類されないようにする。本実施例パイプライン化プロセッサでは、これら特定の命令は、制御レジスタにアクセスする命令、I/Oポートにアクセスする命令、整数の乗除を行う命令、浮動小数点分岐命令、信号装置を更新するのに使用される微細記憶装置基準、パイプラインの排出およびキャッシュを無効とする命令、および現在のレジスタウィンドウポインタを修正する命令、から構成されている。
【0082】
m)前のグループが整数条件コードを設定(SetCC)してから制御レジスタ読出しの前に区切る。
この排他規則は先行命令により修正されているプロセスで制御レジスタを読取る命令を入れる前に現在の命令のグループ化を終結する。この排他規則は制御レジスタが同じ命令グループ内の先行命令により修正されているとき制御レジスタが命令により読取られないようにする。本実施例パイプライン化プロセッサでは、整数条件コードが整数ユニットにより発生される。
【0083】
n)二つの隣接するMULSCCの他は第2のSetCCの前で区切る。
この排他規則は、最初の二つの候補命令がMULSCCでない場合には、第2のSetCCの前で現在の命令のグループ化を終結する。この排他規則は第2の候補命令の後でMULSCC対のグループ化をも終結する。これにより整数機能ユニットを用いて設定する条件コードの可能な源を制限する際の複雑さが少なくなる。実施例パイプライン化プロセッサでは、MULSCC命令は単一命令グループで、または他のMULSCC命令を用いる二つの命令グループで実行される。
【0084】
o)現在グループがSetCCであるとき拡張算術の前で区切る。
この排他規則は、整数条件コードを設定する包含命令に続く拡張演算の前に現在の命令コードを終結する。この排他規則は拡張演算命令の整数条件コードが修正されないようにする。実施例パイプライン化プロセッサの命令では、実行段階中整数ユニットを通じて複数のパスが行われる。この第1のパスは後続反復に対する条件コードを修正する伝統的な演算命令である。後続パスは付加源引数として整数条件を使用する「拡張」演算命令を使用する。
【0085】
p)分岐が遅延命令それ自身でない限り遅延命令グループでの分岐の前で区切る。
この排他規則は含まれている遅延命令に続く分岐命令の前で現在の命令のグループ化を終結する。この排他規則は遅延命令それ自身が分岐である場合の他は別の分岐が遅延命令により開始されないようにする。
q)分岐がレジスタ相対分岐である場合の他はJMPL遅延スロットによる分岐の前で区切る。
この排他規則は、分岐命令がレジスタ相対分岐でもある場合の他は、レジスタ相対分岐の遅延スロットによる分岐命令の前で現在の命令のグループ化を終結する。この排他規則は命令キャッシュに至る分岐目標アドレス選択に対する設計の複雑さを少なくする。
【0086】
r)パイプラインが機能停止するとき最初の命令の前で区切る。
この排他規則はパイプラインが機能停止するとき現在の命令のグループ化を終結する。この排他規則は命令が、パイプラインが機能停止したとき、パイプラインに入らないようにする。実施例パイプライン化プロセッサでは、パイプラインはデータキャッシュの失敗や浮動小数点待行列の満杯状態により機能停止することがある。
【0087】
今度は図8を参照すると、図1のパイプライン化プロセッサに組込まれている本発明のパイプライン段の現在のところ好適な実施例を図解するブロック図が示されている。図示されているのは、複数の整数パイプライン段102〜116、および複数の浮動小数点パイプラインステージ118〜126から成る本発明のパイプラインステージ 100の現在のところ好適な実施例である。また図示されているのは7クロックサイクルから成る一連のクロックパルス128である。
【0088】
整数パイプライン段102〜116は、二つの命令取出しステージ(f0およびf1)102および104、三つの命令復号段(d0、d1、およびd2)106〜110、二つの実行段(e0およびe1)112および114、および一つの書戻しステージ(wb)116から構成されている。浮動小数点パイプラインステージ118〜126は二つの命令復号ステージ(fdおよびfrf)118および120、二つの実行ステージ(fadd/fmulおよびfnorm/frnd)122および124、および一つの書戻しステージ126から構成されている。浮動小数点実行ステージ(fadd/fmulおよびfnorm/frnd)122および124の他は、各パイプラインステージ102、・・・120、または126は半クロックサイクル必要である。各浮動小数点ステージ(fadd/fmulまたはfnorm/frnd)122または124は1クロックサイクルを必要とする。
本発明は、パイプライン化プロセッサの特定の実施形態に応じて、これら排他規則無しで、または別の排他規則を付加して実用化し得ることが認められよう。
【0089】
次に図9を参照すると、図8のパイプラインの種々のパイプラインステージでの動作の流れを図解するブロック図が示されている。ステージf0およびf1で、命令キャッシュから、ステージごとに二つづつ四つの命令が取出される(ブロック132および134)。
【0090】
ステージd0で、最大三つの命令が実行のため同時に整数機能ユニットおよび/または浮動小数点待行列に対して発行される(ブロック136)。ステージd1で、整数ユニットレジスタファイルに二つのアドレスレジスタが読取られ、分岐命令の目標アドレスが計算される(ブロック138)。ステージd2で、整数ユニットレジスタファイルの四つのデータレジスタが読取られ、ロード/格納命令のロード/格納アドレスが計算される(ブロック140)。
ステージe0で、データキャッシュがアクセスされ、浮動小数点動作が発行され、整数ユニットの第1の命令が実行される(ブロック142)。ステージe1で、整数ユニットの第2の命令が実行され、データがデータキャッシュ/記憶装置からロードされ、除外条件が解決される(ブロック144)。ステージwbで、二つの整数結果がデータキャッシュ/記憶装置または整数ユニットレジスタファイルに書込まれる(ブロック146)。
【0091】
ステージfdで、浮動小数点命令が復号される(ブロック148)。ステージfrfで、浮動小数点レジスタファイルが読取られる(ブロック150)。ステージfadd/fmulで、浮動小数点和または浮動小数点積が計算される(ブロック152)。ステージfnorm/frndで、浮動小数点和が正規化されるかまたは浮動小数点積が丸められる(ブロック154)。ステージfwbで、浮動小数点結果が浮動小数点レジスタファイルに書戻される(ブロック156)。
次に図10および図11を参照すると、図9のパイプラインに対する分岐命令の取扱いを図解する二つのブロック図が示されている。図10は分岐が取られる場合を示している。図11は分岐が取られない場合を示している。
図10に示されているのは整数パイプラインを通して移動する四つの実施例命令グループ162〜168である。時刻3で、命令制御ユニットは比較命令(CMP)および等しくないとき分岐する命令(BNE)から成る第1の実施例な二つの命令グループを実行のため整数機能ユニットに発行する。命令制御ユニットは命令グループを形成する途中で分岐命令を検出する。先取りコントローラは分岐が取られるように進むと仮定して、遅延命令が逐次命令待行列に存在するまで待ってから目標命令の流れを取出す。
【0092】
時刻5で、命令制御ユニットは先取り遅延命令および次の逐次命令から成る第2の実施例な二つの命令グループを実行のため整数機能ユニットに対して発行する。同時に、命令制御ユニットは第1および第2の目標命令を目標命令待行列に編入させる。
時刻6で、分岐を取っている整数機能ユニットおよび従って更新されているプログラムカウンタにより分岐が解決される。それで、時刻7で、命令制御ユニットは第1の逐次命令を押しつぶし、先取りコントローラは目標命令待行列の内容を逐次命令待行列へ移動する。命令制御ユニットは、例外を生ぜしめて第1の逐次命令を押しつぶし、従ってプログラムカウンタを更新させる。同時に、命令制御ユニットは第1および第2の目標命令から成る第3の模範的な二つの命令グループを命令復号およびデータ依存性検出のためオプコード復号器およびカスケード検出器まで移動させる。更に、命令制御ユニットは第3および第4の目標命令を目標命令待行列に編入させる。
【0093】
図11に図示されているのは整数パイプラインを通して移動する四つの実施例命令グループ162’〜168’である。時刻3で、命令制御ユニットは、比較命令(CMP)および等しくないとき分岐する命令(BNE)から成る第1の実施例の二つの命令グループの実行のため整数機能ユニットに対して発行する。命令制御ユニットは命令グループを形成する途中で分岐命令を検出する。命令制御ユニットは分岐が取られるように進んでいると仮定して遅延命令が逐次命令待行列に存在するまで待ってから目標命令の流れを取出す。
【0094】
時刻5で、命令制御ユニットは取出し遅延命令および次の逐次命令から成る第2の二つの命令グループを実行のため整数機能ユニットに対して発行する。同時に、命令制御ユニットは第1および第2の目標命令を目標命令待行列に編入させる。
時刻6で、分岐を取っている整数機能ユニットおよび従って更新されているプログラムカウンタにより分岐が解決される。それで、時刻7で、命令制御ユニットは、第1の逐次命令を押しつぶす例外を生ぜしめずに第1の逐次命令に整数パイプラインを下って移動し続けさせ、先取りコントローラは取出された第1および第2の目標命令を捨てる。同時に、命令制御ユニットは第2および第3の逐次命令から成る第3の二つの命令グループを命令復号およびデータ依存性検出のためオプコード復号器およびカスケード検出器に移動させる。更に、命令制御ユニットは第4および第5の逐次命令を逐次命令待行列に編入させる。
【0095】
例外的取扱いを多様な既知の仕方で実施し得ることが認められよう。精密な例外機構を採用するのが望ましい。精密例外機構のこれ以上の説明については、1992年4月29日に出願され、本発明と同じ譲受人、カリフォルニヤ州マウンテンビューのSun Microsystems、に譲渡されたスーパースカラーコンピュータ用精密例外機構という名称の米国特許出願、07/875,963を参照されたい。
【0096】
今度は図12を参照すると、図1の実施例パイプライン化プロセッサによる実施例アプリケーションの実行を図解する図が示されている。図示されているのは、4回解かれる方程式A(i)=N×B(j)+C(k)をもちいるLINPACK Daxpy_4プログラム170である。 結果を得るには全部で27の命令を実行しなければならない。本実施例パイプライン化プロセッサの命令制御ユニットは、各グループ、172、・・・、または192、が重ねて実行する最大三つの命令から構成される12の命令グループ172〜194の形で27の命令を発行する。その結果、27の命令を12クロックサイクルで実行することができ、処理量がサイクルあたり2.25命令のように改善される。
【0097】
本発明を現在の好適なおよび代わりの実施例を用いて説明してきたが、当業者は本発明が記述した実施例に限定されないことを認めるであろう。本発明の方法および装置は特許請求の範囲の精神および範囲の中で修正および変形を行って実施することが可能である。したがって説明は本発明を限定するのではなく例示と見なすものとする。
【図面の簡単な説明】
【図1】本発明の教示を取入れたパイプライン化プロセッサの機能ブロック図を示す。
【図2】図1のパイプライン化プロセッサの整数機能ユニットの一実施例の機能ブロック図を示す。
【図3】図1のパイプライン化プロセッサに組込まれている本発明の命令待行列の現在のところ好適な実施例の機能ブロック図を示す。
【図4】図1のパイプライン化プロセッサに組込まれている本発明の命令制御機能ユニットの現在のところ好適な実施例の機能ブロック図を示す。
【図5】図4の命令制御ユニットのスケジューラの現在のところ好適な実施例の機能ブロック図を示す。
【図6】図5のスケジューラのカスケード検出器の現在のところ好適な実施例の機能ブロック図を示す。
【図7】図5のスケジューラのグループ化論理の現在のところ好適な実施例の機能ブロック図を示す。
【図8】図1のパイプライン化プロセッサのパイプラインステージの現在のところ好適な実施例を示す。
【図9】図8のパイプラインの動作の流れを図解する流れ図を示す。
【図10】図4の命令制御機能ユニットによる分岐命令の取扱を示す。
【図11】図4の命令制御機能ユニットによる分岐命令の取扱を示す。
【図12】図1のパイプライン化プロセッサの実施例アプリケーションの実行を示す。
【符号の説明】
10 パイプライン化プロセッサ
12 プログラムカウンタ
14 命令待行列
16 命令制御ユニット
18 整数ユニットレジスタファイル
20 整数機能ユニット
22 アドレス加算器
24 浮動小数点命令待行列
26 浮動小数点命令制御ユニット
28 浮動小数点ユニットレジスタファイル
30 浮動小数点機能ユニット
34 命令キャッシュ
36 データキャッシュ
38 共有記憶装置管理ユニット
40 書込みバッファ
42 キャッシュコヒーレントバスインターフェースユニット

Claims (8)

  1. 命令制御ユニットを備えているパイプライン化プロセッサであって前記命令制御ユニットに対する命令の待行列を作る方法において、
    a)複数の逐次命令を逐次命令待行列に編成するステップと、
    b)複数の分岐目標命令を分岐目標命令待行列に編成するステップと、
    c)前記逐次命令待行列および目標命令待行列から選択された逐次命令および分岐目標命令前記命令制御ユニットに与えるステップと、
    d)前記命令制御ユニットに与えられた命令の内実行されるべき命令を、連続する命令中の特定の命令の後で命令のグループ化を終了する「後で区切る」排他規則と、前記パイプライン・プロセッサに使用できるハードウェア資源の用法に関連して考慮される命令の前で命令のグループ化を終了する「前で区切る」排他規則とを用いてグループ化するステップと、
    e)前記ステップにおいてグループ化されなかった命令を前記逐次待行列に再編入するステップと、
    から成る方法。
  2. 整数および浮動小数点機能ユニットを構成する整数パイプラインステージと浮動小数点パイプラインステージを備えているパイプライン化プロセッサでの複数の命令をグループ化し、前記整数機能ユニットおよび浮動小数点機能ユニットに対して同時に発行するとともに実行する方法において、
    a)命令待行列からm個の命令を受取るステップと、
    b)前記m個の命令のオプコードを復号するステップと、
    c)一つの命令から他の命令までカスケードにされているオペランドを検出するステップと、
    d)前記m個の命令の各々に複数の排他規則を適用して前記命令を他の命令と関連して実行するため前記整数および浮動小数点機能ユニットに対して発行することから除外すべきか否かを判定するステップと、
    e)除外されない前記命令をグループ化し、それらを実行のため前記整数および浮動小数点機能ユニットに同時に発行するステップと、
    f)前記整数および浮動小数点機能ユニットの前記整数パイプラインステージの後段と前記浮動小数点パイプラインステージの前段が一部重なるようにして、同時に発行された前記グループ化された命令が実行されるステップと、
    から成る方法。
  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の待行列作成手段および前記命令制御ユニットに結合して、該命令制御ユニットに与えられた命令の内実行されるべき命令を、連続する命令中の特定の命令の後で命令のグループ化を終了する「後で区切る」排他規則と、前記パイプライン・プロセッサに使用できるハードウェア資源の用法に関連して考慮される命令の前で命令のグループ化を終了する「前で区切る」排他規則とを用いてグループ化するグループ化手段と、
    e)前記グループ化手段によりグループ化されなかった命令を前記逐次待行列に再編入する第2のマルチプレクサ手段と、
    から構成される装置。
  6. 整数および浮動小数点機能ユニットを構成する整数パイプラインステージと浮動小数点パイプラインステージを備えているパイプライン化プロセッサでの複数の命令をグループ化し、前記整数機能ユニットおよび浮動小数点機能ユニットに対して同時に発行するとともに実行する装置において、
    a)m個の命令を命令待行列から受取る受領手段と、
    b)前記受領手段に結合して前記m個の命令のオプコードを復号する復号手段と、
    c)前記受領手段に結合して、一つの命令から他の命令までカスケードされているオペランドを検出する検出手段と、
    d)前記復号手段および検出手段に結合して、複数の排他規則を前記m個の命令の各々に適用して前記命令を他の命令と関連して実行するため前記整数および浮動小数点機能ユニットに対する発行から除外すべきか否かを判定し、除外されない前記命令をグループ化し、それらを実行のため前記整数および浮動小数点機能ユニットに対して同時に発行するグループ化手段と、
    e)前記整数および浮動小数点機能ユニットの前記整数パイプラインステージの後段と前記浮動小数点パイプラインステージの前段が一部重なるようにして、同時に発行された前記グループ化された命令を実行する命令実行手段と、
    から構成されている装置。
  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のマルチプレクサと、
    から構成されている整数機能ユニット。
JP12478693A 1992-04-29 1993-04-30 コンピュータシステム Expired - Lifetime JP3575617B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US875353 1978-03-20
US87535392A 1992-04-29 1992-04-29

Publications (2)

Publication Number Publication Date
JPH06318155A JPH06318155A (ja) 1994-11-15
JP3575617B2 true 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)

* Cited by examiner, † Cited by third party
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
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
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
US5754811A (en) * 1996-10-08 1998-05-19 Putrino; Michael Instruction dispatch queue for improved instruction cache to queue timing
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
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
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
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
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
EP1236088B9 (en) 1999-09-01 2008-10-08 Intel Corporation Register set used in multithreaded parallel processor architecture
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
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
US6728866B1 (en) * 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
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
CN101449256B (zh) 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
JPWO2010021119A1 (ja) * 2008-08-21 2012-01-26 パナソニック株式会社 命令制御装置
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 パナソニック株式会社 プロセッサ
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9092236B1 (en) * 2011-06-05 2015-07-28 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US8856769B2 (en) * 2012-10-23 2014-10-07 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
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
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
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
WO2014151018A1 (en) * 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
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
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
KR930022193A (ko) 1993-11-23
JPH06318155A (ja) 1994-11-15
KR100309566B1 (ko) 2001-12-15
US5509130A (en) 1996-04-16

Similar Documents

Publication Publication Date Title
JP3575617B2 (ja) コンピュータシステム
CN109074261B (zh) 用于乱序块isa处理器的增量调度器
US20230106990A1 (en) Executing multiple programs simultaneously on a processor core
US6279100B1 (en) Local stall control method and structure in a microprocessor
US5519864A (en) Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5564056A (en) Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US10452399B2 (en) Broadcast channel architectures for block-based processors
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
US20170371660A1 (en) Load-store queue for multiple processor cores
US9329866B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
US20160378491A1 (en) Determination of target location for transfer of processor control
US5604878A (en) Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
US20180032335A1 (en) Transactional register file for a processor
WO2000033183A9 (en) Method and structure for local stall control in a microprocessor
US5860154A (en) Method and apparatus for calculating effective memory addresses
US20180032344A1 (en) Out-of-order block-based processor
US11726912B2 (en) Coupling wide memory interface to wide write back paths
WO2017223004A1 (en) Load-store queue for block-based processor
WO2018217390A1 (en) Microprocessor instruction predispatch before block commit
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US7340590B1 (en) Handling register dependencies between instructions specifying different width registers
US6988121B1 (en) Efficient implementation of multiprecision arithmetic
Brehob et al. Beyond RISC–The Post-RISC Architecture
Gaudiot et al. Techniques to improve performance beyond pipelining: superpipelining, superscalar, and VLIW
JPH0756735A (ja) 並列演算処理装置

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