JP3851707B2 - スーパースカラープロセッサの中央処理ユニット - Google Patents
スーパースカラープロセッサの中央処理ユニット Download PDFInfo
- 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
Links
Images
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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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
【発明の属する技術分野】
本発明は、コンピュータアーキテクチャに関し、より詳しくはスーパースカラープロセッサの中央処理ユニットに関する。
【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に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記グループ化論理回路が、前記複数の命令内でのリソースの競合に対するチェックを行うことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記グループ化論理回路は、1つのプロセッササイクルでの命令グループと、1つ前のプロセッササイクルで受け取られた複数の命令との間のデータの従属性をチェックすることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記中央処理ユニットの状態が、レジスタで表されており、
前記状態が、前記複数の命令内の命令の宛先レジスタの表現を含むことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。 - 第1のプロセッササイクルの間に受け取られた前記複数の命令の全ての命令が、前記第1のプロセッササイクルに続くプロセッササイクルで受け取られた第2の複数の命令の任意の命令のディスパッチの前に、ディスパッチされることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記関数ユニットが、各プロセッササイクルで命令を受け取りかつ次のプロセッササイクルで前記命令を完了することのできるパイプラインされた関数ユニットを含むことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記関数なユニットが、前記関数ユニットによって実行される1つの命令を完了するために複数のプロセッササイクルを必要とする関数ユニットを含むことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記グループ化論理回路が、第1のプロセッササイクルのすぐ前の複数のプロセッササイクルで受け取られた複数の命令に対して求められた複数の前記状態ベクトルに基づいて、前記第1のプロセッササイクルで受け取られた複数の命令に対する特定の現在の状態ベクトルを求め、
前記プロセッササイクルの個数は、前記複数のパイプラインステージの個数と等しいことを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。 - 所定の命令に対して、前記グループ化論理回路が、複数のプロセッササイクルにわたって、ディスパッチするための命令のグループ化を行い、このグループ化にはイントラグループの従属性のチェックとインターグループの従属性のチェックとが含まれることを特徴とする請求項1に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記イントラグループの従属性のチェックが、2以上のプロセッササイクルにわたって行われることを特徴とする請求項10に記載のスーパースカラープロセッサの中央処理ユニット。
- 前記イントラグループの従属性のチェックが、前記インターグル ープの従属性のチェックとは独立して行われることを特徴とする請求項10に記載のスーパースカラープロセッサの中央処理ユニット。
- プロセッサで実行するための命令をグループ化する方法であって、
複数のプロセッササイクルのそれぞれにおいて、複数の命令及び1以上の状態ベクトルを受け取る過程であって、前記状態ベクトルのそれぞれは、以前のプロセッササイクルで受け取った命令の状態を表している、該過程と、
前記状態ベクトルに基づいて、前記機能的ユニットの1つによって実行されるべき現プロセッササイクルで受け取った命令の各々をディスパッチする過程と、
後に行われるディスパッチのために、前記現プロセッササイクルで受け取った命令の状態を表す現在の状態ベクトルを供給する過程とを有することを特徴とする方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/662,582 US5958042A (en) | 1996-06-11 | 1996-06-11 | Grouping logic circuit in a pipelined superscalar processor |
| US08/662,582 | 1996-06-11 |
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)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5958042A (en) | 1996-06-11 | 1999-09-28 | Sun Microsystems, Inc. | Grouping logic circuit in a pipelined superscalar processor |
| USRE38599E1 (en) * | 1996-06-11 | 2004-09-21 | Sun Microsystems, Inc. | Pipelined instruction dispatch unit in a 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 |
| WO2008090665A1 (ja) * | 2007-01-25 | 2008-07-31 | Nec Corporation | プログラム並列化方法及び装置 |
| KR101335001B1 (ko) * | 2007-11-07 | 2013-12-02 | 삼성전자주식회사 | 프로세서 및 인스트럭션 스케줄링 방법 |
| JP5436033B2 (ja) * | 2009-05-08 | 2014-03-05 | パナソニック株式会社 | プロセッサ |
| CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
| EP2862069A4 (en) | 2012-06-15 | 2016-12-28 | Soft Machines Inc | INSTRUCTION DEFINITION FOR IMPLEMENTING LOAD MEMORY TRANSFER AND OPTIMIZATION |
| CN104823168B (zh) | 2012-06-15 | 2018-11-09 | 英特尔公司 | 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统 |
| CN107748673B (zh) | 2012-06-15 | 2022-03-25 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
| TWI646422B (zh) | 2012-06-15 | 2019-01-01 | 英特爾股份有限公司 | 在處理器中之免消歧義失序載入/儲存佇列方法、微處理器、和非暫態性電腦可讀取儲存媒體 |
| CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
| EP2862062B1 (en) | 2012-06-15 | 2024-03-06 | Intel Corporation | A virtual load store queue having a dynamic dispatch window with a distributed structure |
| 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 |
| 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 |
| 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)
| 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 |
| 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 |
| ATE146611T1 (de) * | 1990-05-04 | 1997-01-15 | Ibm | Maschinenarchitektur für skalaren verbundbefehlssatz |
| 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., Tokio/Tokyo | 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 |
| EP0652510B1 (en) * | 1993-11-05 | 2000-01-26 | Intergraph Corporation | Software scheduled superscalar computer architecture |
| 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 |
-
1996
- 1996-06-11 US US08/662,582 patent/US5958042A/en not_active Expired - Lifetime
-
1997
- 1997-06-04 EP EP97303831A patent/EP0813145B1/en not_active Expired - Lifetime
- 1997-06-04 DE DE69734303T patent/DE69734303D1/de not_active Expired - Lifetime
- 1997-06-10 JP JP15173897A patent/JP3851707B2/ja not_active Expired - Lifetime
- 1997-06-11 KR KR1019970023946A patent/KR100616722B1/ko not_active Expired - Lifetime
-
1999
- 1999-08-02 US US09/583,097 patent/US7430653B1/en not_active Expired - Fee Related
-
2000
- 2000-07-25 US US09/625,268 patent/US6349381B1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| US5958042A (en) | 1999-09-28 |
| US7430653B1 (en) | 2008-09-30 |
| EP0813145A2 (en) | 1997-12-17 |
| EP0813145A3 (en) | 1999-07-28 |
| KR980004028A (ko) | 1998-03-30 |
| KR100616722B1 (ko) | 2006-12-07 |
| DE69734303D1 (de) | 2005-11-10 |
| JPH1097424A (ja) | 1998-04-14 |
| US6349381B1 (en) | 2002-02-19 |
| 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 | |
| JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
| US6212542B1 (en) | Method and system for executing a program within a multiscalar processor by processing linked thread descriptors | |
| US5854934A (en) | Optimizing compiler having data cache prefetch spreading | |
| CN1158597C (zh) | 超标量或超长指令字计算机中选择下一指令的方法与装置 | |
| US9811340B2 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
| WO1985000453A1 (en) | Data processing system | |
| US20160291982A1 (en) | Parallelized execution of instruction sequences based on pre-monitoring | |
| JPH10133873A (ja) | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法 | |
| JP3589698B2 (ja) | インタロックハードウェアの単純化方法及び装置 | |
| USRE38599E1 (en) | Pipelined instruction dispatch unit in a superscalar processor | |
| CN116113940B (zh) | 一种图计算装置、处理方法及相关设备 | |
| US5875326A (en) | Data processing system and method for completing out-of-order instructions | |
| GB2321544A (en) | Concurrently executing multiple threads containing data dependent instructions | |
| JP7495030B2 (ja) | プロセッサ、処理方法、および関連デバイス | |
| US10296350B2 (en) | Parallelized execution of instruction sequences | |
| WO2016156955A1 (en) | Parallelized execution of instruction sequences based on premonitoring | |
| US6490653B1 (en) | Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system | |
| Küçük et al. | Instruction Scheduling in Microprocessors | |
| CN120994249A (zh) | 一种矢量段访存指令处理方法及装置 | |
| Gepner | Overview of ia-64 explicitly parallel instruction computing architecture | |
| Unger et al. | Simultaneous Speculation Scheduling-A Technique for Speculative Dual Path Execution. | |
| 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 |