JP3851707B2 - スーパースカラープロセッサの中央処理ユニット - Google Patents

スーパースカラープロセッサの中央処理ユニット Download PDF

Info

Publication number
JP3851707B2
JP3851707B2 JP15173897A JP15173897A JP3851707B2 JP 3851707 B2 JP3851707 B2 JP 3851707B2 JP 15173897 A JP15173897 A JP 15173897A JP 15173897 A JP15173897 A JP 15173897A JP 3851707 B2 JP3851707 B2 JP 3851707B2
Authority
JP
Japan
Prior art keywords
processor
instructions
central processing
processing unit
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP15173897A
Other languages
English (en)
Other versions
JPH1097424A (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 JPH1097424A publication Critical patent/JPH1097424A/ja
Application granted granted Critical
Publication of JP3851707B2 publication Critical patent/JP3851707B2/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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

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)
  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータアーキテクチャに関し、より詳しくはスーパースカラープロセッサの中央処理ユニットに関する。
【0002】
【従来の技術】
並列処理は、現代のコンピュータの構成に於いて非常に発展してきた。このような構成のうちで、2つの異なるアーキテクチャが知られており、各々、VLIWアーキテクチャと、スーパースカラーアーキテクチャとして知られている。スーパースカラープロセッサは、同時に1つもしくはそれ以上の命令をディスパッチすることのできるコンピュータである。そのようなプロセッサは、通常、ディスパッチされた命令を別個に実行することのできる複数の機能的なユニットを含んでいる。そのようなプロセッサでは、制御論理回路が、「グループ化ロジック」回路として知られており、この制御論理回路が、特定のリソースの配置及びデータの従属性(dependency)の制約に基づいて、命令(命令グループ)がディスパッチされるか否かを決定する。コンピュータの設計者の仕事は、利用できるリソースを最適に用いる命令グループをディスパッチするように、そのような制約をダイナミックに評価することのできるグループ化ロジック回路を提供することである。すなわち、1つのフローティングポイント乗算ユニットを有するコンピュータでは、リソースの配置の制約は、1つのフローティングポイント乗算命令しか、任意の与えられたプロセッササイクルの間に、ディスパッチされないということである。このプロセッササイクルは、プロセッサのパイプラインされたユニットに対する基本的なタイミングの単位であり、通常は、CPUクロックのクロック周期である。データの従属性の制約のある例は、「書き込み後の読み出し(read−after−write)」ハザードを回避するということである。この制約によって、以前にディスパッチされしかもまだリタイヤしていない書き込み命令の宛先であるレジスタからのオペランドを必要とする命令を、ディスパッチすることが防止される。
【0003】
スーパースカラープロセッサとは異なり、VLIWプロセッサでは、実行時間中にシステムのリソースをダイナミックに配置することはない。そのかわり、リソースの配置とデータの従属性の解析は、プログラムのコンパイルの間に実行される。VLIWプロセッサは、長い命令ワードをデコードして、様々な独立した関数ユニットを動作させるための制御情報を出力する。コンパイラの仕事は、デコードされたときにコンピュータの並列化されたハードウェア内に於けるプログラム固有の並列化を効率よく活用することのできる命令のシーケンスを発生させることによって、プログラムの性能を最適化することである。ハードウェアには、命令のシーケンス及びディスパッチに対する制御は与えられていない。
【0004】
しかしながら、VLIWコンピュータは、命令実行中に各マシーンに対してそのプログラムを再コンパイル(recompile)しなければならないという重大な欠点を有する。そのような再コンパイルは、各マシーンによって必要とされる制御情報が命令ワード内にデコードされているために、必要とされる。一方、スーパースカラーコンピュータは、既存の実行可能プログラム(すなわち「バイナリ」)を実行できるように設定されている。スーパスカラコンピュータでは、既存の実行可能なプログラムの命令は、実行時間中に、コンピュータの特定のリソースの利用可能性と、データの完全性の要求とに基づいて、コンピュータによってディスパッチされる。コンピュータの利用者の立場から見れば、既存のバイナリには大きな資本が投下されているので、新たなバイナリをコピーするための費用を必要とせずに、性能を高めることができるということが、重要な利点である。
【0005】
従来技術では、与えられたプロセッササイクルの命令グループ内に含まれるべき命令を決定するために、スーパースカラーコンピュータが、直前のプロセッササイクルでリソースの配置及びデータの従属性のチェック作業を実行する。このような方法に於いては、コンピューターの設計者は、そのようなリソースの配置及びデータの従属性のチェック作業が、そのプロセッササイクル内で確実に完了するようにしなければならない。別個に実行される関数ユニットの個数が増加するにつれて、そのようなリソースの配置及びデータの従属性のチェック作業は、比例関係以上に急速に増加する。したがって、スーパースカラーコンピュータの構成では、リソース及びデータの完全性の解析を1つのプロセッササイクル内で行うことができるか否かが、さらに並列処理化を進めることができるか否かを限定する1つの要因となっている。
【0006】
【発明が解決しようとする課題】
本発明の目的は、リソース及びデータの完全性の解析を1つのプロセッササイクル内で行うようにすることで、さらに並列処理化を進めることである。
【0007】
【課題を解決するための手段】
本発明は、1つのプロセッササイクルの間に同時にディスパッチできる命令を決定するためのグループ化論理回路を含む。本発明の中央処理ユニットは、そのようなグループ化論理回路と、各々がそのグループ化論理回路によってディスパッチされた1つもしくは複数の指定された命令を実行できるように適合された複数の関数ユニットを含む。このグループ化論理回路は、複数のパイプラインステージを含み、リソースの配置及びデータの従属性のチェックが、複数のプロセッササイクルにわたって実行される。したがって、本発明は、複数の命令を同時にディスパッチすることを可能とし、一方グループ化論理回路の複雑さによる中央処理ユニットのプロセッササイクルの期間の限定を、回避する。
【0008】
ある実施例では、グループ化論理回路は、命令グループを受け取った直後にイントラグループ(intra−group)のデータの従属性をチェックする。この実施例では、最初の(第1の)プロセッササイクルの間に受け取られた命令のグループ内の全ての命令が、最初のプロセッササイクルに続くプロセッササイクルで受け取られた第2のグループの命令のいずれの命令のよりも先にディスパッチされる。
【0009】
本発明は、添付の図面を参照しながら行われる以下の詳細な説明によってよりよく理解される。
【0010】
【発明の実施の形態】
本発明のある実施例が、図1のブロック図に例示されており、この図には、本発明の1つの例としての4ウェイ・スーパースカラープロセッサの中央処理ユニット(CPU)100が表されている。この4ウェイ・スーパースカラープロセッサは、プロセッササイクルごとに、4つまでの命令を、フェチ(fetch)し、ディスパッチ(dispatch)し、実行(execute)し、かつリタイア(retire)する。図1に表されているように、中央処理ユニット100は、2つの算術論理演算ユニット101及び102と、ロード/記憶ユニット103(9層ロードバッファ104と8層記憶バッファ105とを含む)と、フローティングポイント加算器106と、浮動小数点乗算器107と、浮動小数点除算器108とを含む。この実施例は、グループ化論理回路109は、1プロセッササイクルごとに4つまでの命令をディスパッチする。完了ユニット110は、命令が完了するとその命令をリタイアする。レジスタファイル(図示されていない)は、複数の整数レジスタ及び浮動小数点レジスタを含み、オペランドのフェッチもしくは結果のライトバックの間にこのレジスタファイルをアクセスする関数ユニットが競合することを防止するための十分な数のポートが設けられている。更に、この実施例では、ローディングは非ブロック形式で行われ、すなわち、CPU100は、1つもしくは複数のディスパッチされたロード命令が完了していない場合でも実行を続ける。ロード命令のデータが主メモリから戻されたとき、これらのデータは第2レベルのキャッシュメモリ内に記憶されるようにパイプライン形式に配置されることができる。この実施例では、浮動小数点加算器106と浮動小数点乗算器107は、各々、4ステージパイプラインを有する。同様に、ロード/記憶ユニット103は、2ステージパイプラインを有する。パイプライン形式ではないが、浮動小数点除算器108は、1命令あたり複数のプロセッササイクルを必要とする。
【0011】
以下の説明を明瞭にするために、グループ化論理109に関連するCPU100の状態は、以下に説明される状態変数S(P)によって表される。もちろん、CPU100の状態は他の変数をも含み、これら他の変数には、そのプロセッサの状態ワードに含まれるものがある。当業者には、プロセッサの状態の使用及び実施が容易に理解される。すなわち、時刻tでのCPU100の状態S(t)は、次の式によって表される。
S(t)={ALU1(t),ALU2(t),LS(t),LB(t),SB(t),FA(t),FM(t),FSD(t)}(式1)
【0012】
ここで、ALU1(t)とALU2(t)は、各々、時刻tでの算術論理演算ユニット101と102の状態であり、LS(t)とLB(t)は、各々、時刻tでの記憶バッファ105とロードバッファ104の状態であり、FA(t)、FM(t)、及びFDS(t)は、各々、時刻tでの浮動小数点加算器106、浮動小数点乗算器107、及び浮動小数点除算器108の状態である。
【0013】
任意の時刻で、各関数ユニットの状態は、ソースレジスタと、その関数ユニットにディスパッチされかつまだリタイアされていない命令によって指定された宛先レジスタとによって表される。すなわち、
ALU1={ALU1.rs1(t),ALU1.rs2(t),ALU1.rd(t)}(式2)
【0014】
ここで、rs1(t)、rs2(t)、及びrd(t)は、各々、第1ソースレジスタと、第2ソースレジスタと、時刻tで算術論理演算ユニット101内で実行されている命令の宛先レジスタとを表している。
【0015】
同様に、算術論理演算ユニット102の状態は、以下のように定義される。
ALU2={ALU2.rs1(t),ALU2.rs2(t),ALU2.rd(t)}(式3)
【0016】
浮動小数点加算器106のようなパイプラインされた関数ユニットに対しては、その状態は、ソースレジスタ、及び各々がパイプラインされた命令の宛先レジスタからなり、比較的複雑である。すなわち、パイプラインされたユニット、すなわち、ロード/記憶ユニット103、ロードバッファ104,記憶バッファ105、浮動小数点加算器106、及び浮動小数点乗算器107に対して、それらの各々の時刻tでの状態、LS(t)、LB(t)、SB(t)、FA(t)、及びFM(t)は、各々次のように表される。
LS={LS.rs1i(t),LS.rs2i(t),LS.rdi(t)}(ここで、i={1,2})(式4)
LB={LB.rs1i(t),LB.rs2i(t),LB.rdi(t)}(ここで、i={1,2,...,9})(式5)
SB={SB.rs1i(t),SB.rs2i(t),SB.rdi(t)}(ここで、i={1,2,...,8})(式6)
FA={FA.rs1i(t),FA.rs2i(t),FA.rdi(t)}(ここで、i={1,...,4})(式7)
FM={FM.rs1i(t),FM.rs2i(t),FM.rdi(t)}(ここで、i={1,...,4})(式8)
【0017】
最後に、浮動小数点除算器108の状態FSD(t)は、以下の式によって表される。
FDS={FDS.rs1i(t),FDS.rs2i(t),FDS.rdi(t)}(式9)
【0018】
状態変数S(t)は、集中化された配置もしくは分散化された配置のいずれかで、1つのレジスタもしくは内容参照可能メモリなどの記憶素子によって表すことができる。例えば、分散化された配置では、ある与えられた関数ユニットに関する状態S(t)の一部が、その関数ユニットの制御論理によって実施される。
【0019】
従来技術では、グループ化論理回路は、時刻tでの現在の状態S(t)から、時刻(t+1)での次のプロセッササイクルの命令をディスパッチするために必要な情報を含む次の状態S(t+1)を求める。例えば、書き込み後の読み出しハザードを回避するために、グループ化論理回路は、次の状態S(t+1)から、完了したばかりの命令の結果を記憶するために指定されたレジスタからフェッチされるオペランドを含む命令を除外する。他の例では、グループ化論理回路は、状態S(t+1)の中に、ただ1つの浮動小数点「ADD」命令を各プロセッササイクルごとに含み、その理由はただ1つの浮動小数点加算器(すなわち、浮動小数点加算機106)のみが利用できるからである。上述されたように、複雑さが増すにしたがって、グループ化論理回路を通して伝達されるために必要な時間が、プロセッササイクルに対する臨界的なパスとなりえる。すなわち、本発明に基づけば、グループ化論理回路109は、τプロセッササイクルにわたって、現在の状態S(t)に基づく将来の状態S(t+τ)を伝達するためにパイプラインされている。この将来の状態S(t+τ)は、時刻(t+τ)でのディスパッチを行うための命令グループを決定する。パイプライングループ化ロジック109は、以下に例示されるように、(1)状態S(t+τ)が十分な確度で状態S(t)の対応する値から求められること、及び、(2)その値が正確には予測されない状態変数に対して、状態S(t+τ)の全ての可能な結果を提供すること、及び性能に関するわずかな不利を伴って伝統的なアプローチを(すなわち、そのような命令がディスパッチされていた可能性のある場合に、その命令をディスパッチしないこと)を用いることが、比較的容易であるということ、により実現可能である。
【0020】
状態S(t+τ)を予測する方法が以下に説明される。以下の説明は、次の状態S(t+1)のほとんどの要素が、現在の状態S(t)から正確に求められ、状態S(t)の残りの要素が、特定の非決定論的な条件が適切に処理される場合に、適切に求められるということを説明する。帰納法を用いることによって、将来の状態S(t+τ)が(ここでτは1より大きい数)が同様に状態S(t)から求められるということが表される。
【0021】
浮動小数点加算器106もしくは浮動小数点乗算器107内の1つの命令が4つのプロセッササイクルの後に完了し、ロード/記憶ユニット103内の1つの命令が2つのプロセッササイクルの後に完了するので、時刻(t+1)での状態FA、FM、及びLSは、プロセッササイクルの直前の時刻tに於ける対応する状態S(t)から求めることができる。特に、時刻(t+1)と時刻tとの間の、浮動小数点加算器106と、浮動小数点乗算器107と、ロード/記憶ユニット103との、各々のソースレジスタおよび宛先レジスタとの間の関係は、以下の式で表される。
rs1i(t+1)=rs1(i−1)(t)(ここで、1<i≦k)(式10)
rs2i(t+1)=rs2(i−1)(t)(ここで、1<i≦k)(式11)
rdi(t+1)=rd(i−1)(t)(ここで、1<i≦k(式12)
【0022】
ここで、kは、対応するパイプラインの深さを表している。
【0023】
命令を実行するために必要とされる時間が1プロセッササイクルを越える、浮動小数点除算器108の状態FSD(t+1)は、以下の式に表されるように状態FSD(t)から求められる。
FSD(t+1)=FSD(t)(最後のステージ),又は=0(それ以外の場合)(式13)
【0024】
浮動小数点除算器108がその最後の状態にあるか否かは、浮動小数点除算器108の命令の実行が開始されたために経過した複数のプロセッササイクルの経緯(track)を保持するハードウェアカウンタもしくは状態レジスタから求められる。
【0025】
ロードバッファ104と記憶バッファ105では、各々の待ち時間のヘッドに於ける継続中の読み出しもしくは書き込み動作が1つのプロセッササイクル内で完了する必要はないので、時刻(t+1)での状態LB(t+1)は、時刻tでのすぐ前の状態LB(t)からは正確には求められない。しかしながら、状態LB(t+1)は同じ状態にあるか、もしくは1ステージだけのパイプラインの動きを反映するので、状態LB(t+1)を求める2つの方法が用いられる。第1の方法は、伝統的なアプローチであり、LB(t)と同様にLB(t+1)を予測するものである。このアプローチでは、ロードバッファ104が満たされた状態のとき、ロードバッファ106のパイプラインが進行するまで、命令はディスパッチされない。予測が正しくない場合、すなわちロード命令が時刻tのプロセッササイクルの間に完了した場合、この伝統的なアプローチは、1プロセッササイクルの不利を導く。その理由はロード命令が時刻(t+1)でディスパッチされるからである。代わりに、2つの結果、すなわちロードバッファ104は1ステージ進み、ロードバッファ104が同じ状態に留まることに対して、より攻撃的なアプローチが用いられる。この攻撃的なアプローチでは、グループ化ロジック109は、時刻(t+1)でロード命令が実際に完了したことを表す制御信号によってイネーブルたとき、ロード命令をディスパッチするよう準備が整っている。この攻撃的な方法は、伝統的なアプローチよりも複雑な論理回路を必要とする。
【0026】
すなわち、当業者には、CPU100の状態S(t+1)が状態S(t)から予測されることがわかる。したがって、予測された状態S(t+1)に基づいて時刻(t+1)でディスパッチされる命令の個数と命令の形式の両方(すなわち、時刻t+1での命令グループ)が、時刻(t+1)での実際の状態SA(t+1)に基づいて更に処理が行われた場合を前提として、時刻tで状態S(t)から求められる。
【0027】
上述された方法は、時刻(t+τ)での状態S(t+τ)を、時刻tでの状態S(t)から求める場合にも敷衍することができる。時刻(t+τ)での命令グループは、時刻tと時刻(t+τ)との間の各命令グループに対して、その命令グループからの全ての命令が、次の命令グループからの任意の命令がディスパッチされる前に、ディスパッチされる場合に(すなわち命令グループがマージされない場合に)、時刻tから求められる。
【0028】
異なる命令グループからの命令はマージされないので、イントラグループの従属性とインターグループの従属性とは並列にチェックできる。命令は、命令キャッシュメモリもしくは命令バッファからフェッチされる。命令バッファは、好ましくは、命令キャッシュメモリに対する全てのアクセスが(例えば、分岐命令が)整列しておらず、かつプログラムの基本的ブロック内の複数のエントリーポイントが可能であるシステム内にあることが好ましい。
【0029】
1つの命令グループに対する4つの候補命令が特定されると、イントラグループのデータの従属性のチェックが開始される。上述された命令グループのマージに対する、すなわち、命令グループの命令の全てに対する、次の命令グループがディスパッチされる前にディスパッチされなければならない、という制約のために、イントラグループの従属性のチェックはパイプライン形式で行われる。すなわち、イントラグループの従属性のチェックは、2以上のプロセッササイクルにわたって行われ、全てのインターグループの従属性のチェックは、イントラグループの従属性のチェックとは別個に行われる。イントラグループの従属性のチェックのために、各命令グループは以下の式で表される。
IntraS(t)={rs1i(t),rs2i(t),rdi(t),resi(t)}(ここで、0≦i<W−1)(式14)
【0030】
ここで、Wはマシンの幅であり、resiは、命令Iのリソースの利用を表している。4ステージパイプライン200の例が図2に表されている。図2では、命令グループが指定されるとすぐに、第1のステージ201で、イントラグループの従属性のチェックが実行される。その後、ステージ202では、命令グループ内でのリソースの配置が決定される。ステージ203では、前の命令グループのリソースの配置を考慮に入れたリソースの配置の決定が、ステージ201と202での決定とともにマージされる。例えば、現在の命令グループが浮動小数点除算器108に対して指定された命令を含む場合、浮動小数点除算器108を用いる以前の命令が、現在の命令グループがディスパッチされる時刻までに完了されていた場合に、ステージ203がこの時刻までに求められる。最後に、ステージ204で、非決定論的な条件が、例えば、記憶バッファ105での条件が考慮される。ディスパッチ可能な命令が、ステージ204の終わりでCPU100内に与えられる。
【0031】
上述された説明は本発明のある例を表すものであり、限定を意図するものではない。本発明の技術的視点を逸雑せずに、さまざまな変型及び変更が可能である。本発明は添付の特許請求の範囲によって定義される。
【0032】
【発明の効果】
本発明によれば、リソース及びデータの完全性の解析が1つのプロセッササイクル内で行われ、並列処理化を促進される。
【図面の簡単な説明】
【図1】本発明の1つの例である4ウェイ・スーパースカラープロセッサのCPU100のブロック図。
【図2】図1の4ウェイ・スーパースカラープロセッサの4ステージパイプライン・グループ化論理回路109の模式図。
【符号の説明】
109 グループ化論理回路
103 ロード/記憶ユニット
106 浮動小数点加算器
107 浮動小数点乗算器
108 浮動小数点除算器
110 完了ユニット

Claims (13)

  1. スーパースカラープロセッサの中央処理ユニットであって、
    各々が命令を実行するように適合された複数の関数ユニットと、
    複数のパイプラインステージを含み、かつ各プロセッササイクルで複数の命令及び1以上の状態ベクトルを受け取るグループ化論理回路であって、前記状態ベクトルのそれぞれは、前記グループ化論理回路において以前のプロセッササイクルで受け取った命令の状態を表しており、前記グループ化論理回路が、前記状態ベクトルに基づいて、前記機能的ユニットの1つよって実行されるべき現プロセッササイクルで受け取った命令の各々をディスパッチし、前記現プロセッササイクルで受け取った命令の状態を表す現在の状態ベクトルを供給する、前記グループ化論理回路とを有することを特徴とするスーパースカラープロセッサの中央処理ユニット。
  2. 前記グループ化論理回路が、前記複数の命令が同時にディスパッチできるか否かを求めるべく、前記複数の命令の間のデータの従属性をチェックすることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  3. 前記グループ化論理回路が、前記複数の命令内でのリソースの競合に対するチェックを行うことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  4. 前記グループ化論理回路は、1つのプロセッササイクルでの命令グループと、1つ前のプロセッササイクルで受け取られた複数の命令との間のデータの従属性をチェックすることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  5. 前記中央処理ユニットの状態が、レジスタで表されており、
    前記状態が、前記複数の命令内の命令の宛先レジスタの表現を含むことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  6. 第1のプロセッササイクルの間に受け取られた前記複数の命令の全ての命令が、前記第1のプロセッササイクルに続くプロセッササイクルで受け取られた第2の複数の命令の任意の命令のディスパッチの前に、ディスパッチされることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  7. 前記関数ユニットが、各プロセッササイクルで命令を受け取りかつ次のプロセッササイクルで前記命令を完了することのできるパイプラインされた関数ユニットを含むことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  8. 前記関数なユニットが、前記関数ユニットによって実行される1つの命令を完了するために複数のプロセッササイクルを必要とする関数ユニットを含むことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  9. 前記グループ化論理回路が、第1のプロセッササイクルのすぐ前の複数のプロセッササイクルで受け取られた複数の命令に対して求められた複数の前記状態ベクトルに基づいて、前記第1のプロセッササイクルで受け取られた複数の命令に対する特定の現在の状態ベクトルを求め、
    前記プロセッササイクルの個数は、前記複数のパイプラインステージの個数と等しいことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  10. 所定の命令に対して、前記グループ化論理回路が、複数のプロセッササイクルにわたって、ディスパッチするための命令のグループ化を行い、このグループ化にはイントラグループの従属性のチェックとインターグループの従属性のチェックとが含まれることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
  11. 前記イントラグループの従属性のチェックが、2以上のプロセッササイクルにわたって行われることを特徴とする請求項10に記載のスーパースカラープロセッサの中央処理ユニット。
  12. 前記イントラグループの従属性のチェックが、前記インターグル ープの従属性のチェックとは独立して行われることを特徴とする請求項10に記載のスーパースカラープロセッサの中央処理ユニット。
  13. プロセッサで実行するための命令をグループ化する方法であって、
    複数のプロセッササイクルのそれぞれにおいて、複数の命令及び1以上の状態ベクトルを受け取る過程であって、前記状態ベクトルのそれぞれは、以前のプロセッササイクルで受け取った命令の状態を表している、該過程と、
    前記状態ベクトルに基づいて、前記機能的ユニットの1つによって実行されるべき現プロセッササイクルで受け取った命令の各々をディスパッチする過程と、
    後に行われるディスパッチのために、前記現プロセッササイクルで受け取った命令の状態を表す現在の状態ベクトルを供給する過程とを有することを特徴とする方法。
JP15173897A 1996-06-11 1997-06-10 スーパースカラープロセッサの中央処理ユニット Expired - Lifetime JP3851707B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/662,582 1996-06-11
US08/662,582 US5958042A (en) 1996-06-11 1996-06-11 Grouping logic circuit in a pipelined superscalar processor

Publications (2)

Publication Number Publication Date
JPH1097424A JPH1097424A (ja) 1998-04-14
JP3851707B2 true JP3851707B2 (ja) 2006-11-29

Family

ID=24658307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15173897A Expired - Lifetime JP3851707B2 (ja) 1996-06-11 1997-06-10 スーパースカラープロセッサの中央処理ユニット

Country Status (5)

Country Link
US (3) US5958042A (ja)
EP (1) EP0813145B1 (ja)
JP (1) JP3851707B2 (ja)
KR (1) KR100616722B1 (ja)
DE (1) DE69734303D1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE38599E1 (en) * 1996-06-11 2004-09-21 Sun Microsystems, Inc. Pipelined instruction dispatch unit in a superscalar processor
US5958042A (en) 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
EP1050809A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer instruction dependency
US6618802B1 (en) * 1999-09-07 2003-09-09 Hewlett-Packard Company, L.P. Superscalar processing system and method for selectively stalling instructions within an issue group
US6651164B1 (en) * 1999-10-14 2003-11-18 Hewlett-Packard Development Company, L.P. System and method for detecting an erroneous data hazard between instructions of an instruction group and resulting from a compiler grouping error
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
US7020765B2 (en) * 2002-09-27 2006-03-28 Lsi Logic Corporation Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
US7191320B2 (en) * 2003-02-11 2007-03-13 Via Technologies, Inc. Apparatus and method for performing a detached load operation in a pipeline microprocessor
US7237094B2 (en) * 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US20100070958A1 (en) * 2007-01-25 2010-03-18 Nec Corporation Program parallelizing method and program parallelizing apparatus
KR101335001B1 (ko) * 2007-11-07 2013-12-02 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
JP5436033B2 (ja) * 2009-05-08 2014-03-05 パナソニック株式会社 プロセッサ
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
WO2013188460A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a distributed structure
EP2862068B1 (en) 2012-06-15 2022-07-06 Intel Corporation Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
WO2013188696A2 (en) * 2012-06-15 2013-12-19 Soft Machines, Inc. An instruction definition to implement load store reordering and optimization
KR101826080B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
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
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US9710278B2 (en) 2014-09-30 2017-07-18 International Business Machines Corporation Optimizing grouping of instructions
US9971601B2 (en) 2015-02-13 2018-05-15 International Business Machines Corporation Dynamic assignment across dispatch pipes of source ports to be used to obtain indication of physical registers
US9710281B2 (en) * 2015-07-30 2017-07-18 International Business Machines Corporation Register comparison for operand store compare (OSC) prediction
US10089114B2 (en) 2016-03-30 2018-10-02 Qualcomm Incorporated Multiple instruction issuance with parallel inter-group and intra-group picking
CN114327644B (zh) * 2022-03-16 2022-06-03 广东省新一代通信与网络创新研究院 一种处理器预测访存相关性的实现方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
JP2535252B2 (ja) * 1990-10-17 1996-09-18 三菱電機株式会社 並列処理装置
GB9027853D0 (en) * 1990-12-21 1991-02-13 Inmos Ltd Multiple instruction issue
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
JP3544214B2 (ja) * 1992-04-29 2004-07-21 サン・マイクロシステムズ・インコーポレイテッド プロセッサの状態を監視する方法及び監視システム
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
US5627984A (en) * 1993-03-31 1997-05-06 Intel Corporation Apparatus and method for entry allocation for a buffer resource utilizing an internal two cycle pipeline
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
DE69431998T2 (de) * 1993-11-05 2004-08-05 Intergraph Hardware Technologies Co., Las Vegas Superskalare Rechnerarchitektur mit Softwarescheduling
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5958042A (en) 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor

Also Published As

Publication number Publication date
KR100616722B1 (ko) 2006-12-07
JPH1097424A (ja) 1998-04-14
US5958042A (en) 1999-09-28
EP0813145A2 (en) 1997-12-17
US6349381B1 (en) 2002-02-19
KR980004028A (ko) 1998-03-30
US7430653B1 (en) 2008-09-30
EP0813145A3 (en) 1999-07-28
DE69734303D1 (de) 2005-11-10
EP0813145B1 (en) 2005-10-05

Similar Documents

Publication Publication Date Title
JP3851707B2 (ja) スーパースカラープロセッサの中央処理ユニット
US6247115B1 (en) Non-stalling circular counterflow pipeline processor with reorder buffer
US5442756A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US6212542B1 (en) Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
US5913925A (en) Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US5854934A (en) Optimizing compiler having data cache prefetch spreading
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
WO1985000453A1 (en) Data processing system
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
JP3589698B2 (ja) インタロックハードウェアの単純化方法及び装置
USRE38599E1 (en) Pipelined instruction dispatch unit in a superscalar processor
US5875326A (en) Data processing system and method for completing out-of-order instructions
GB2321544A (en) Concurrently executing multiple threads containing data dependent instructions
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring
US10296350B2 (en) Parallelized execution of instruction sequences
JP7495030B2 (ja) プロセッサ、処理方法、および関連デバイス
EP1058186A2 (en) Issuing dependent instructions in a data processing system based on speculative secondary cache hit
Gepner Overview of ia-64 explicitly parallel instruction computing architecture
Küçük et al. Instruction Scheduling in Microprocessors
Mitra Performance Evaluation of Improved Superscalar Issue Mechanisms
Unger et al. Simultaneous Speculation Scheduling-A Technique for Speculative Dual Path Execution.
Ramarao A hybrid partitioning and scheduling technique for branch decoupling
JPH11259295A (ja) プロセッサの命令スケジューリング装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060501

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060804

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: 20060829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060904

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: 20100908

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100908

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110908

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120908

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130908

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term