JP2788605B2 - 計算機システム及び命令実行方法 - Google Patents

計算機システム及び命令実行方法

Info

Publication number
JP2788605B2
JP2788605B2 JP6163633A JP16363394A JP2788605B2 JP 2788605 B2 JP2788605 B2 JP 2788605B2 JP 6163633 A JP6163633 A JP 6163633A JP 16363394 A JP16363394 A JP 16363394A JP 2788605 B2 JP2788605 B2 JP 2788605B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
buffer
independent
instruction buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP6163633A
Other languages
English (en)
Other versions
JPH07105002A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH07105002A publication Critical patent/JPH07105002A/ja
Application granted granted Critical
Publication of JP2788605B2 publication Critical patent/JP2788605B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Selective Calling Equipment (AREA)
  • Supplying Of Containers To The Packaging Station (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、多重実行ユニットを持
つ処理システムにおける命令のタスク指名(dispatch)
に関するものである。特に、多重命令バッファを持つシ
ステムが提供される。ここで、命令は、依存、または独
立、または利用不可能な資源に依存、と定義される。こ
れらの命令は、それらの定義と他の命令との関係に依存
して、逐次に、あるいは並列に実行される。
【0002】
【従来の技術】現在、多重実行ユニットを内蔵する処理
システムがあることが知られている。従来システムの大
多数は、加算、ストア、ロード、減算、乗算、分岐など
のような操作を実行するための多重特定目的実行ユニッ
トを含んでいる。命令依存性に関連した問題を解決する
ため、従来システムは対応する特定目的実行ユニットに
関連したバッファに特定命令を入れる。例えば、ロード
操作をロードユニットに関連したバッファに入れる、等
である。命令依存性があれば従来システムは最新の命令
を持っているだけである。最新の命令は前の命令の結果
に依存する。いったん前の命令が実行されると最新の依
存命令の特定の実行ユニットでの実行が許可される。従
来システムでは命令のシフトは様々な実行ユニットに関
連した様々なバッファの間で生起するが、このシフトは
命令の型とその型の命令を実行可能な特定の実行ユニッ
トとの関係に依存する。すなわちロード命令はロード実
行ユニットに関連したバッファにシフトされ得る。ま
た、これらの従来の技術である多重実行ユニットシステ
ムは、命令の順序を保持している本発明とは対称的に、
一般に乱れた順序で命令を実行する。
【0003】米国特許第5133077号は多重相違実
行を示している。その中では、個々の実行が特定の型の
命令に対し責務を持っている。それ故、個々の命令は、
命令の型に基づいた実行ユニットの一つに関連した、特
定のバッファに記憶されなければならない。これらの命
令を別の実行ユニットに関連した別のバッファにシフト
することはできない。なぜならそれらの命令はある型の
実行ユニットに特有のものであるからである。したがっ
て、命令依存性が見つけられるとき、このシステムには
選ぶべきものがないが、保持している命令が依存する、
前の命令までの最新の依存する命令を保持することが実
行を完成させてきた。
【0004】米国特許第4837678号は、命令を受
信し命令の型に基づいて命令をシフトするシフト回路を
含む命令順序器を含んだシステム、および命令間に依存
性を持たない命令を実行するためにどの実行ユニットが
要求されるか(第11段、8〜10行目)について論じ
ている。
【0005】米国特許第4847755号は、実行順序
を解析し、実行順序に知識を加えた多数のプロセッサエ
レメントを持つ処理システムである。例えば、システム
は自然な一致性(独立命令)を探し、個々の命令に、論
理プロセッサと命令発生時間を含んだ知識を加える(第
17段、54〜60行目)。そのシステムは本質的に命
令を並べ換える。論理資源ドライバがそれから(第18
段、10〜25行目)選択された処理エレメントに個々
の命令を配送する。
【0006】米国特許第5075840号は、順序が乱
れた命令を実行可能な多重プロセッサを持つシステムに
ついて論じている。このシステムは、特定の型の命令の
実行を、適した逐次的順序で実行することができるま
で、遅延する可能性を含んでいる。
【0007】
【発明が解決しようとする課題】全ての命令の順序関係
を保持したまま多重実行ユニットを持つシステムで実行
する依存命令に関連した問題に対し、従来システムには
一般的な解決法を提供するものがないことが知られてい
る。多くの従来システムは、順序の乱れた命令を実行す
ることによって、処理システムの複雑さを増してしまう
複雑な分岐機構を要求する。したがって、命令の順序を
保持することによって、本発明はオーバーヘッドを減ら
し性能を最適化する。例えば、いつ分岐が生じるかを決
めておく。命令が解析され、他の命令との命令依存性だ
けに基づき実行ユニットの可能性には基づかずに実行さ
れる、多くの型の計算機を操作可能なプロセッサを持つ
ことは有利になる。
【0008】
【課題を解決するための手段】従来技術とは対称的に、
本発明は、命令が復号ステージの間に解析され、これら
の命令が独立または依存または「利用不可能」と考えら
れるかどうかを決定するシステムを提供する。本発明の
目的のために、依存命令がすぐ前の命令に依存する命令
のみとして定義される。例えばレジスタのような、資源
における値の有効性に依存する命令は「利用不可能」と
定義され、ある場合には、それらの命令は本発明によっ
て独立として扱われ、並列(だが順序の乱れなし)にシ
フトされ得る。もちろん全くの独立命令は並列に実行さ
れる。
【0009】概して言えば、個々の実行ユニットが関連
命令バッファを持つ、2重実行ユニット処理システムが
提供される。第1実行ユニット(ユニット0)は常に最
古の命令を含有し、第2ユニット(ユニット1)は最新
の命令を含有する。ロード、ストア、加算などのような
プロセッサ命令が命令キャッシュバッファからの命令バ
ッファ(0,1)のそれぞれに提供される。第1命令
(最古)をバッファ0に入れ、次の(第2)命令をバッ
ファ1に記憶する。命令が依存かどうか、命令が一度に
一つ実行されなければならないかどうか、あるいは命令
が独立かまたは「利用不可能」か、並列に実行すること
ができるか、を復号ステージの間に決定する。第2命令
が第1命令に依存するならば、(実行される第1命令に
続く)第2命令をバッファ1から第1命令バッファ0へ
横にシフトする。このシフトは全体的に第1命令に対す
る第2命令の依存性による。シフトされた命令はそれか
ら第1命令になり、新しい「第2」命令を第2命令バッ
ファに受信する。全ての命令は逐次的順序で実行される
ことに注意する。多数の逐次依存命令に出会ったなら実
行ユニット0のみによって逐次的に実行される。すなわ
ち2つの第1命令は、依存し合い、両方の命令バッファ
に入れられ、決定される。第2バッファの命令は第1に
依存するから、第1命令の実行に続いて、その命令を第
1命令バッファへシフトする。次の命令が第2命令バッ
ファ1に入れられ、それがまた依存性を持つなら、前の
命令を実行した後、第1バッファへシフトされる、など
である。次の命令が独立ならば、第1・第2実行ユニッ
トにおいて両者は並列に実行される。このように、プロ
セッサ命令が効率的に実行され、実行ユニットの可能性
ではなく、他との依存性に基づき逐次的に実行される。
【0010】それ故、前の概要に従って、本発明の目
的、特徴、および利点が、付帯する図と共に記された請
求項と以下の記述から、技術上の熟練者に明らかになる
だろう。
【0011】
【実施例】図1を参照しながら、本発明の多重実行プロ
セッサの中の様々な構成要素のハイレベルブロック図が
示される。1は命令バスA、B、C、Dから命令を受信
する命令バッファを表す。命令バッファ1は記憶装置
で、ハードウェアメモリのように、技術上よく知られた
ものである。レジスタファイル入力ラッチ10は、シス
テムメモリ(図示なし)に接続されたデュアルポートデ
ータキャッシュユニット(図示なし)からデータを受信
する。2個を越える実行ユニットを持った処理システム
が考えられるが、本発明の実施例は2個の実行ユニット
を持ったプロセッサであることに注意されたい。復号制
御ユニット3および5(それぞれ実行ユニット0および
1に対応する)は命令バッファ1から受信した命令を解
釈するのに用いられる。復号ユニット3、5はロード、
ストア、加算、等の命令を認識できる。個々の復号ユニ
ット3、5はそれぞれ対応するレジスタファイル7、9
を持っている。レジスタファイルは、データキャッシュ
バス36から直接にあるいは書き込みデータ線35を通
して、入力ラッチ10からデータを受信する。復号ユニ
ット3および5は、バッファ1から受信した命令に基づ
き、レジスタファイル7および9に読み込み・書き込み
制御信号を提供する。これらの制御信号は、データを、
入力ラッチ10からレジスタファイル7、9へ書き込
み、レジスタファイル7、9から実行入力ラッチ11へ
読み込むかどうかを決定する。したがって図1から、レ
ジスタファイル7は、4個のデータ語の入力レジスタか
らの書き込みと、3個のデータ語のそこからの実行ラッ
チ11による読み込みを行わせることが明らかとなる。
レジスタファイル9は、4個のデータ語の入力レジスタ
ファイル10からの書き込み、4語のそこからの実行ユ
ニットラッチ11による読み込みを行わせる。
【0012】本発明は復号制御ユニット3および5の中
に含むブール代数論理で装置化されることを注記する。
この論理は命令解釈の処理を装置化し、実行ユニット1
7および19へ1命令をシフトするか、2命令をシフト
するかを決定する。図3および4のフローチャートに図
示されている本発明の論理の流れは、平均的な技術の一
つによって、本発明の復号ユニット3および5により装
置化されたハードウェア論理へ直ちに変換され得る。
【0013】技術上の熟練者はまた、本発明がパイプラ
イン構造を持ったプロセッサであることを理解するだろ
う。このことは、様々なステージでデータがラッチされ
たり保持されることを意味する。このように、異なる命
令が処理システムへ同時に入力可能なように実行命令の
結果等を蓄える。したがって、プロセッサを通したデー
タの連続した流れが可能である。実行ユニット入力ラッ
チは、実際の実行ユニットへ入力されるデータより先
に、レジスタファイル7および9により与えられるデー
タを保持する。多重化器(図示なし)もまた実行ユニッ
ト入力ラッチ11に含まれている。多重化器は、データ
が実行ユニットへ迂回できるデータキャッシュバス36
から受信したデータ信号を組み合わせることができる。
レジスタファイル入力ラッチ10はまた、データキャッ
シュユニットバス36と書き込みバス35からのデータ
の組み合わせを行うために、多重化器を含んでいること
を注記する。
【0014】実行ユニット17および19は両方とも、
多数の命令を実行可能な全関数ユニットである。これら
のユニットは同一でもよいが、そのような制限は本発明
には要求されない。実施例では、ユニット17および1
9は同一ではなく、2つの全関数実行ユニットで、それ
らは、二、三の特殊化された命令の特定の要求を取り扱
うための、わずかに異なる特徴を持っている。実行ユニ
ット17は、加算関数を実行する2ポート加算器21、
回転のような命令を実行するのに用いられる論理ユニッ
ト23等を含んでいる。3ポート加算器25は論理ユニ
ット27と共に実行ユニット19に含まれている。3ポ
ート加算器25は、ロード、ストア、比較等を含む加算
型命令を実行するために要求されるサイクルの数に関し
て主要な節約を提供する。これは、命令が並列に実行さ
れ得るかどうかを決定するときに、本発明が全ての加算
型命令を独立命令として扱うことができることによる。
従来技術のシステムでは、加算型命令は依存と考えられ
る。すなわち第2命令は前の命令の完了まで待たなけれ
ばならない。例えば、命令(1)ADD R1,R2,
R3および(2)ADD R5,R1,R4は、レジス
タファイルR2およびR3の中の値を加算し、レジスタ
ファイルR1に新しい値を入れるのに、典型的に用いら
れる。次の命令は値がレジスタファイルR1に入れられ
るまで待たなければならない。なぜならこの値は、レジ
スタファイルR5に入れられた所望の結果の値を得るた
めに、レジスタファイルR4の値に加算されるからであ
る。所望の結果は実際はレジスタファイルR2、R3、
R4の値の和である。したがって、この操作を行うため
に、従来システムは2マシンサイクルを越える2個の命
令の実行を要求する。
【0015】対称的に、本発明は、ADD命令を独立と
して定義することを許し、それ故並列に実行される機構
を提供することによって、単一マシンサイクルで同じ操
作を行うことができる。前の例を用いて、命令ADD
R1,R2,R3およびADD R5,R1,R4が復
号制御ユニット3および5によって復号されるとき、そ
れらの命令はAdd R1,R2,R3およびAdd
R5,R2,R3,R4を意味すると解釈される。すな
わち依存命令は独立命令に合体される。そこでは、R2
およびR3の値は第2命令でR1の値に代入される。第
1加算命令ADD R1,R2,R3はそれでも実行さ
れなければならない。なぜならレジスタファイルR1に
入れられた値は次の加算命令(ADD R5,R1,R
4)以外の命令によって要求され得るからである。さら
に、3ポート加算器25の存在によって、これらの命令
は両方とも同時に実行することができる。すなわち、A
DD R1,R2,R3が2ポート加算器21で実行さ
れ、ADD R5,R2,R3,R4が3ポート加算器
25で同時に実行される。このように、本発明は加算型
命令を他のどの命令も独立と定義することが可能であ
る。
【0016】実行制御ユニット13および15もまた提
供され、それらは、それぞれ実行ユニット17および1
9への制御信号の形式で、復号ユニット3、5からの復
号された命令を受信し、それらの命令を入力する。ユニ
ット17および19によるロードおよびストア命令の実
行の間、ストア命令に対するデータ値自体を計算するだ
けでなく、データを扱うために、有効なアドレス(すな
わちキャッシュのどこに参照データが位置するのか)が
加算器21および25によって計算される。有効なアド
レスはそれからデュアルポートデータアドレス翻訳論理
ユニット33へ移される。ユニット33は、実行ユニッ
トからの前に計算された有効なアドレスを物理的アドレ
スに翻訳する(すなわちメモリのどこに参照データが位
置するのか)。データはデータキャッシュからバス36
で返され、レジスタファイル入力ラッチ10に入力さ
れ、実行入力ラッチ11へ迂回され得る(データキャッ
シュバス36経由)。加算命令のような、プロセッサで
データを扱う他の型の命令に対し、実行ユニット17、
19からのデータ値がレジスタファイル入力ラッチ10
に入力され、実行入力ラッチ11へ迂回され得る(書き
込みバス35経由)。
【0017】図2は、図1に示された命令バッファ1の
より詳細な図である。命令バスA、B、C、およびD
は、命令キャッシュユニット等からバス8への命令を入
力する。バス8は直接実際の命令バッファ14へ命令を
送信する。バッファ14は高速入力、高速出力ハードウ
ェア記憶装置である。出力命令バッファ2および4は、
バス8から直接に、あるいはバッファ14から、バス1
2経由で命令を受信する。命令バッファ2および4はそ
れぞれ実行ユニット17、19の一つと対応する。さら
に、バス6が提供される。バス6は命令をシフトさせる
か、あるいは出力バッファ2および4の間を転送させ
る。本発明の実施例は2個の全関数処理ユニットを含む
ので、命令はユニット17、19のどちらかによる実行
のために出力バッファ2および4の間をシフト可能であ
る。この可能性の意義は図3および図4と共に以下でも
っと十分に記述される。実行される命令はそのときバッ
ファ2および4から復号制御ユニット3および5への出
力である。
【0018】図3および図4は本発明によって定義され
た命令の間の関係を示している。1つのカテゴリが、す
ぐ先の命令以外の、前の命令に依存する命令として定義
される。すなわち、LOAD命令によってメモリからロ
ードされた値は、後で数マシンサイクル実行される次の
命令によって利用され得る。例えば、次の命令が出会っ
たと仮定する。 (1)LOAD R1,R31,R30 (2)ADD R4,R3,R2 (3)ADD R5,R1,R2
【0019】第1の命令(1)はレジスタファイルR1
の値をロードする。メモリでの有効なアドレスはR31
とR30を加算することによって計算される。「計算さ
れた」アドレスでのデータはR1にロードされる。次
に、命令(2)はレジスタファイルR3とR2の内容を
加算し、レジスタファイルR5に結果を入れる。したが
って、命令(3)が、利用不可能であり得る資源(レジ
スタファイルR1)の値に依存することが明らかとな
る。すなわちレジスタファイルR1にロードされる値は
多くのマシンサイクルがかかるシステムメモリからのも
のでなければならないかもしれない。
【0020】本発明は、潜在的に利用不可能な資源(レ
ジスタファイル)に依存するということのために、すぐ
前の命令以外の、前の命令に依存する命令を「利用不可
能」と定義する。これらの「利用不可能」な命令が、ま
るでそれらが独立であるかのように、実行ユニット17
および19へ並列に動かされる。しかしながら、非常に
詳細に以下で論じるように、「利用不可能」な命令が依
存命令に先行するときや、これらの命令が逐次的に実行
しなければならないときのように、他に条件がある。依
存命令と共にこれらの「利用不可能」な命令は、それが
すぐ前の命令に基づこうと別の前の命令に基づこうと、
データ依存命令、すなわちある種のデータ依存性を持つ
命令と考えられる。
【0021】それ故、本発明に従って、全ての命令は以
下のどれか一つにクラス分けされる。(1)独立、
(2)依存、あるいは(3)利用不可能。本発明は、こ
れらの命令のどの組み合わせを実行ユニット17および
19で同時に実行することができるか、および命令のう
ちのどれを逐次に実行しなければならないかを決定する
機構を提供する。命令バッファ0(参照番号2)に与え
られる第1命令およびバッファ1(参照番号4)への第
2命令の二つ一組にして、命令が命令ユニットバッファ
2および4に与えられる。このように、全ての命令を逐
次的順序で一度に一つ実行するか、最初の順序も維持し
て並列に実行するかのどちらかである。最古の命令は常
に命令バッファ2に入れられ、バッファ4の命令より先
に実行されると考えられるから、逐次的順序が保存され
る。前述のように、依存命令はすぐ前の命令に依存する
命令のみと定義し、3ポート加算器を用いた加算命令を
除いたものとする。その加算器は本発明の目的のために
独立と考えられる。独立命令はどんな結果、値、デー
タ、資源等を要求しないものと定義される。「利用不可
能」な命令は、すぐ前の命令以外の命令に依存するよう
に定義されたものである。
【0022】上述のように、図3および図4は、より効
率的に2重実行ユニット17および19を利用するた
め、本発明に従って、前に定義された命令の実行を記述
するフローチャートである。初めに、上で示したように
定義される普通の命令を用いて、処理の一般的な記述
が、特定の例に従って表される。さらに、以下の記述は
2つの実行ユニットがある場合をカバーするが、異なる
数の実行ユニットを持つ処理システムが本発明によって
考えられることを理解されたい。
【0023】ステップ1で、処理が始められ、ステップ
2は実行ユニット17および19が両方とも利用可能で
あるかどうかを決定する。もしそうでないなら、両方の
ユニットが利用可能になるまでシステムはステップ3で
保持される。いったんそれらのユニットが利用可能にな
れば、ステップ4は、命令系列(図2の命令バッファ2
および4からの)での第1命令および第2命令が両方と
も独立命令であるか両方とも依存命令であるかを決定す
る。第1命令および第2命令が両方とも独立なら、命令
は両方とも、ユニット3および5によって復号され、実
行ユニット17および19で同時に実行するため、マシ
ンへシフトされる(ステップ8)。第1命令および第2
命令が両方とも独立命令でないならば、この方法はステ
ップ5に進む。そこでは、第1命令および第2命令が両
方ともある理由で延期するかどうかを決定する。このこ
とは、レジスタの内容が必要であるが、まだ利用できな
いとき起こる。第1命令および第2命令が両方とも利用
不可能であるならば、(命令バッファあるいは復号で
の)命令の位置に関わらず、システムがこれらの命令が
アクセスできるようになるために必要とする「利用不可
能」な資源を待たなければならないから、命令は両方と
もステップ8でシフトされる。それ故、「利用不可能」
な命令は、新しい命令をバッファ2および4へ移して、
実行ユニット17および19へシフトされ得る。
【0024】第1命令が利用不可能なレジスタファイル
の中身に依存し、第2命令が独立なら(ステップ6)、
これらの命令は両方ともステップ8で実行ユニットへシ
フトされる。この状況では、本発明は、2つの命令をシ
フトする。なぜなら「利用不可能」な命令が要求された
データのアクセスを待つために実行ユニット17へ動か
され、独立命令が、「利用不可能」な命令が準備できる
まで実行ユニット14で待つことができ、それから命令
は両方とも並列に実行されるからである。しかしなが
ら、第1命令が「利用不可能」でない、あるいは第2命
令が独立でないならば、本発明の命令実行法は、第1命
令が独立で第2命令が「利用不可能」であるかどうかを
決定するステップ7へ進む。ステップ7の状況では、た
った一つの命令がシフトされる。なぜなら命令バッファ
2へ利用不可能な命令を移す必要があり、利用不可能な
命令の次に来る命令が独立か利用不可能かのどちらかで
あるなら、2つの命令は次のマシンサイクルの間にシフ
トされ得る。また、本発明は全ての命令を順序正しく実
行するので、次の命令を受信する準備ができている命令
バッファ4を持つことが有利となる。すなわち、利用不
可能な命令を実行するまでシステムが待たなければなら
ないなら、バッファ2で待っている命令を持つことが最
も効率がよい。ここでその命令は実行するための次の命
令である。このように、後の命令が命令バッファ4へ移
動可能であり、それによってパイプラインの泡を避けて
いる。その資源が利用可能になった後で、マシンがバッ
ファ2へ利用不可能な命令を横にシフトしなければなら
ないなら、1サイクルが無駄になる。したがって、バッ
ファ4からバッファ2への利用不可能な命令のシフトの
後で、次に続く命令がバッファ4に配置可能であるか
ら、命令の連続した流れが確保される。
【0025】ステップ7の条件が満たされるなら、その
方法はステップ11へ続く。ステップ11では、単一命
令が復号および実行のためマシンにシフトされる。1命
令のシフトはここでは実行ユニット17への命令バッフ
ァでの命令のシフト、および命令バッファ2への命令バ
ッファ4での命令のシフトであると定義されることに注
意されたい。2命令のシフトは、バッファ2および4か
ら実行ユニット17および19への2つの命令の同時の
シフトを意味する。しかしながら、第1命令が独立でな
く、第2命令が「利用不可能」でないなら、ステップ9
は第1命令が独立で第2命令が依存であるかどうかを決
定する。もしそうであれば、処理はステップ11へ続
く。ここでは独立命令をマシンへシフトし(バッファ2
から実行ユニット17へ)、実行して、依存命令を命令
バッファ4から命令バッファ2へシフトする。依存命令
はいま、既に実行されていてもはや依存性を持つとは考
えられない命令に依存することに注意されたい。ステッ
プ11の後で、処理はステップ2へ戻り、別の命令(第
2命令)がバス8またはバッファ14により提供され、
これらの2つの命令がステップ2、4〜7、9および1
0の評価基準に従って考えられる。
【0026】ステップ9で第1命令が独立でなく、第2
命令が依存でないと決定されたなら、ステップ10は、
第1命令がマシンへ提供され、第2命令が第1命令出力
バッファへシフトされる(シフト1)かどうかを決定す
る。したがって、本発明の決定ブロック(ステップ4〜
10)が、逐次的にも実行しながら、最大数の命令を並
列に実行するのを確実にするため、個々の型の定義され
た命令にどのように通信するかが明らかとなる。
【0027】次に、典型的な命令系列が本発明の操作例
として用いられる。バスA、B、C、Dからバッファ1
に次の命令を受信したと仮定する。 (1)LOAD R1,R31,R30 (2)LOAD R2,R29,R30 (3)ADD R22,R20,R21 (4)ADD R24,R22,R23 (5)ADD R3,R1,R2 (6)LOAD R6,R2,R22 (7)LOAD R25,R28,R29 (8)ADD R8,R6,R7 (9)LOAD R9,R27,R28 (10)LOAD R10,R31,R30 (11)ADD R11,R9,R3 (12)OR R11,R11,R20 (13)ADD R13,R11,R12
【0028】最初の2つの命令(1)および(2)はバ
ッファ2および4に入れられる。これらの命令は、それ
ぞれレジスタファイルR31、R30およびR29、R
30の値から計算されるアドレスに基づき、レジスタフ
ァイルR1およびR2の値をロードする。命令(1)お
よび(2)は、他のどの命令にも依存しないので、独立
であり、図3aのステップ4に従って、両方とも実行ユ
ニット17および19へ同時にシフトされる(シフト
2)。命令(3)および(4)はそのときそれぞれバッ
ファ2および4に入れられる。命令(3)は加算命令
で、2つのレジスタファイルR20、R21の値を合計
し、レジスタファイルR22に結果を入れる。命令
(4)は別の加算演算で、前の加算命令(3)の結果を
用いる。すなわちR22の値がR23の値に加算され、
結果がレジスタファイルR24に入れられる。命令
(3)および(4)はレジスタファイルR20、R2
1、およびR23の値を加算する。本発明における3ポ
ート加算器25の存在によって、これらの命令は独立で
あると考えられ、同時実行のために本発明によって実行
ユニット17および19へシフトされる(図3、ステッ
プ4)。
【0029】命令(5)および(6)はそれからそれぞ
れバッファ2および4へ移される。命令(5)は加算命
令で、どちらも前の命令ではない命令(1)および
(2)に依存し、それ故、命令(5)は「利用不可能」
と考えられる。命令(6)は、有効なアドレスがレジス
タファイルR2およびR22の値に依存するロード命令
である。これらの値は前の命令(5)の影響を受けな
い。しかしながら、R2は命令(load R2)に依
存し、それ故、命令(6)もまた「利用不可能」と定義
される。本発明(図3のステップ5)に従って、2つの
「利用不可能」な命令を実行ユニット17および19へ
シフトする。ここで、それらのユニットは利用不可能な
データへのアクセスのために待っている。このことは、
次の2つの命令がバッファ2および4へ移されることを
許可する。
【0030】命令(7)は、プロセッサの中でメモリか
らレジスタファイルR25へ値をロードするロード命令
である。命令(7)は他のどの命令やレジスタとも独立
である。命令(8)はレジスタファイルR6、R7の値
を加算し、和をR8に入れる加算命令である。この命令
(8)は、命令(6)に依存しているから、「利用不可
能」である。第1命令が独立で第2命令が利用不可能で
あるこの場合、バッファ2の命令(7)のみが(実行ユ
ニット17へ)シフトされるが、命令(8)はバッファ
4からバッファ2へ横に移される(図3、ステップ
7)。次の命令(9)はそれからバッファ4に入れら
れ、命令(8)および(9)が考えられる。命令(9)
は、プロセッサの中で値をメモリからレジスタファイル
R9へ入れ換え、独立と考えられるロード命令である。
それ故、利用不可能な命令(9)はバッファ2にあり、
独立命令(9)はバッファ14にある。この場合、命令
(8)および(9)は両方とも、前の命令を実行すると
すぐに、実行ユニット17および19へ同時にシフトさ
れる(図3、ステップ6)。
【0031】次の2つの命令(10)および(11)は
それぞれバッファ2および4へ提供される。命令(1
0)は独立命令で、そこでは処理システムの中で、メモ
リでの位置内容がレジスタファイルR10へロードされ
る。命令(11)は、(すぐ前の命令以外の)前の命令
の間に決定されるレジスタファイルR9の値に依存する
から、「利用不可能」である。第1命令(10)が独立
で、第2命令(11)が利用不可能である場合、第1命
令(10)はバッファ2から実行ユニット17へシフト
され、第2命令(11)はバッファ4からバッファ2へ
シフトされる(図3、ステップ7)。
【0032】命令(12)はOR命令で、2つのレジス
タファイルの内容について論理的な「or」演算を行
う。この場合、2つのレジスタファイルはR11および
R20で、命令(12)は結果をレジスタファイルR1
1に入れる。したがって、命令(12)が、レジスタフ
ァイルR11の値を決定する前の命令(11)に依存す
ることが明らかとなる。したがって、バッファ2に利用
不可能な命令(11)があり、バッファ4に依存命令
(12)がある。この場合、単一命令(11)が実行ユ
ニット17へシフトされる(図4、ステップ10)。命
令(12)は実行19へシフトできない。なぜならその
命令はR11の値を必要とする。命令(12)は、命令
(11)に続いて実行されるため、バッファ2へシフト
される。命令(13)は、レジスタファイルR11およ
びR12の内容を加算し、レジスタファイルR13に和
を入れ、バッファ4へ移される。命令(12)は、それ
が依存する命令(11)を実行したから、いま独立と考
えられる。命令(13)は、すぐ前の命令(12)に依
存するから、依存性を持つ。したがって、バッファ2に
独立命令(12)があり、バッファ4に依存命令(1
3)がある。この例では、独立命令(12)が実行ユニ
ット17へ移動され、依存命令(13)がバッファ2へ
横にシフトされる(図4、ステップ9)。
【0033】図5はマシンサイクル数での比較を提供す
る2つのタイミングダイヤグラムAおよびBを示してい
る。命令が独立なとき(ダイヤグラムA)および命令が
依存性を持つとき(ダイヤグラムB)には、ロード加算
命令を実行するためにマシンサイクルが要求される。
【0034】ダイヤグラムAに関しては、サイクル1に
おいて、命令バッファ2および4にロードおよび加算命
令がそれぞれ蓄えられ、両方の命令とも独立であるから
(図3、ステップ4)、それらは両方ともサイクル2の
間に実行のため実行ユニット13および15へシフトさ
れる。サイクル2の終わりにおいて、レジスタファイル
入力ラッチ10へ加算命令からのデータがラッチされ
る。サイクル3の間にキャッシュからロード命令のため
のデータがアクセスされ、レジスタファイル入力ラッチ
10へラッチされる。またサイクル3の間に、加算命令
のための制御信号がレジスタファイル7、9への書き込
みを生じさせる。サイクル4において、入力レジスタ1
0にあるキャッシュからのデータがレジスタファイル
7、9のレジスタ11へ書き込まれる。
【0035】ダイヤグラムBは、命令バッファにある
(0および1にもある)同一の命令がサイクル1に位置
しているが、この場合、例えばLOAD R1とADD
R1,R2,R3のように、加算命令がロード命令に
依存していることを示している。この場合、(図3のス
テップ9に従って)サイクル2の間に実行制御ユニット
へロード命令のみがシフトされる。またサイクル2の間
にも、命令バッファ4からバッファ2へ加算命令がシフ
トされる。この命令は、プロセッサ19よりむしろプロ
セッサ17による実行のために効果的にシフトされる。
この場合、ロードおよび加算命令はプロセッサ17で順
番に実行されることに注意されたい。もちろん、サイク
ル2〜5の間にバス8またはバッファ14からの付加的
な命令が命令バッファ4へ供給され、図3および図4の
処理に従って解析される。しかしながら、簡単のため、
これらの付加的な命令はダイヤグラムAおよびBには示
さない。サイクル3の間に、ロード命令はキャッシュに
アクセスさせ、要求されたデータを入力レジスタ10へ
ロードさせて、実行ユニット入力ラッチ11へ迂回させ
る。また、加算命令は実行制御13へ移される。ここ
で、データは利用不可能であるからそれは止まる。サイ
クル4の間に加算命令が実行され、ロードデータと共に
レジスタファイル7、9が書き込まれる。最終的に、サ
イクル5の間にレジスタファイル7、9へ加算命令の結
果が書き込まれる。
【0036】したがって、同一の依存命令より少ないサ
イクルで同一の独立命令は実行されることは明らかであ
る。ダイヤグラムAおよびBは明らかに独立命令が異な
った実行ユニットでどのように並列に実行され得るかを
示しているが、一方、依存命令は連続的に実行されなけ
ればならない。ダイヤグラムAの加算命令は、その独立
性のため、ロード命令より先に実行される。しかしなが
ら、ダイヤグラムBでは、加算は、そこでは依存性を持
つから、ロード命令の後で実行される。
【0037】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0038】(1) 第1及び第2の実行ユニットを含
んでいる計算機システムであって、命令を上記第1及び
第2の実行ユニットへ提供するための上記第1及び第2
の実行ユニットに関連した第1及び第2の命令バッファ
と、上記第1及び第2の命令バッファにある命令がデー
タ依存命令であるかどうかを解釈する手段と、上記第1
の実行ユニットへ上記データ依存命令を提供すると同時
に上記第2の実行ユニットへ他の命令を提供する手段と
を有する上記コンピュータ・システム。 (2)上記提供手段が上記第2のバッファから上記第1
のバッファへ命令を移すための手段を含む上記(1)に
記載のシステム。 (3)上記データ依存命令が依存命令および利用不可能
な命令を含み、他の命令が独立命令を含む上記(2)に
記載のシステム。 (4)3つの異なる記憶位置に記憶される値の加算に用
いられる命令が独立命令と定義されるような3ポート加
算器をさらに含む上記(3)に記載のシステム。 (5)上記第1及び第2の命令バッファからそれぞれの
第1及び第2の実行ユニットへ独立命令が並列にシフト
される上記(4)に記載のシステム。 (6)第1及び第2命令バッファからそれぞれの第1及
び第2の実行ユニットへ利用不可能な命令が並列にシフ
トされる上記(5)に記載のシステム。 (7)第1の命令バッファにある依存命令の一つが第1
の実行ユニットへシフトされ、第2の命令バッファにあ
る依存命令の一つが第1の命令バッファへ移される上記
(6)に記載のシステム。 (8)第1の命令バッファにある利用不可能な命令の一
つと、第2の命令バッファにある独立命令の一つがそれ
ぞれ第1及び第2の実行ユニットへ並列にシフトされる
上記(7)に記載のシステム。 (9)第1の命令バッファにある独立命令の一つが第1
の実行ユニットへシフトされ、第2の命令バッファにあ
る利用不可能な命令の一つが第1の命令バッファへ移さ
れる上記(8)に記載のシステム。 (10)第1の命令バッファにある独立命令の一つが第
1の実行ユニットへシフトされ、第2の命令バッファに
ある依存命令の一つが第1の命令バッファに移される上
記(9)に記載のシステム。 (11)第1及び第2の実行ユニットを含むコンピュー
タ・システムにおいて命令を実行する方法であって、命
令を上記第1及び第2の実行ユニットへ提供するための
上記第1及び第2の実行ユニットに関連した第1及び第
2の命令バッファを提供するステップと、上記第1及び
第2の命令バッファにある命令がデータ依存命令である
かどうかを解釈するステップと、上記第1の実行ユニッ
トへデータ依存命令を提供し、他の命令を上記第2の実
行ユニットへ同時に提供するステップとを有する上記方
法。 (12)上記提供するステップが上記第2のバッファか
ら第1のバッファへ命令を移すステップを含む上記(1
1)に記載の方法。 (13)データ依存命令が依存命令および利用不可能な
命令を含み、他の命令が独立命令を含む上記(12)に
記載の方法。 (14)3つの異なる記憶位置に記憶された値の加算に
用いる命令が独立命令と定義される3ポート加算器を提
供するステップをさらに含む上記(13)に記載の方
法。 (15)上記第1及び第2の命令バッファからそれぞれ
第1及び第2の実行ユニットへ独立命令を並列にシフト
するステップと、上記第1及び第2の命令バッファから
それぞれ第1及び第2の実行ユニットへ利用不可能な命
令を並列にシフトするステップとをさらに含む上記(1
4)に記載の方法。 (16)上記第1の命令バッファにある依存命令の一つ
を上記第1の実行ユニットへシフトするステップと、上
記第2の命令バッファにある依存命令の一つを上記第1
の実行ユニットへ移すステップとをさらに含む上記(1
5)に記載の方法。 (17)上記第1の命令バッファにある利用不可能な命
令の一つ、および上記第2の命令バッファにある独立命
令の一つを、それぞれの第1及び第2の実行ユニットへ
シフトするステップをさらに含む上記(16)に記載の
方法。 (18)上記第1の命令バッファにある独立命令の一つ
を上記第1の実行ユニットへシフトするステップと、上
記第2の命令バッファにある利用不可能な命令の一つを
上記第1命令バッファへ移すステップとをさらに含む上
記(17)に記載の方法。 (19)上記第1の命令バッファにある独立命令の一つ
を上記第1の実行ユニットへシフトするステップと、上
記第2の命令バッファにある依存命令の一つを上記第1
の命令バッファへ移すステップとをさらに含む上記(1
8)に記載の方法。 (20)上記第1の命令バッファへ移された上記第2の
命令バッファにある命令の後の、第2の命令バッファへ
単一の連続する命令を提供する手段と、上記第1及び第
2の命令バッファにある命令が上記第1及び第2の実行
ユニットへ並列にシフトされるとき、2つの連続する命
令を第1及び第2の命令バッファへそれぞれ提供する手
段とをさらに含む上記(10)に記載のシステム。 (21)上記第1の命令バッファへ移された上記第2の
命令バッファにある命令の後の、単一の連続する命令を
第2の命令バッファへ提供するステップと、上記第1及
び第2の命令バッファにある命令が上記第1及び第2の
実行ユニットへ並列にシフトされるとき、2つの連続す
る命令を第1及び第2の命令バッファへそれぞれ提供す
るステップとをさらに含む上記(19)に記載の方法。
【0039】
【発明の効果】当業者には、本発明が、従来システムよ
り1サイクル当たりの命令を多く実行することによっ
て、プロセッサ性能を上げることがわかる。例えば、独
立、利用不可能、独立と定義された命令(I1,U,I
2)は従来の2重実行ユニットシステムへ提供され、I
1およびUはユニット0および1へ提供される。資源が
利用可能になるとき、処理システムはI1を実行し、そ
のあと(nサイクル後)U命令を実行する。したがっ
て、I1を実行した後、本発明は、実行ユニット0へU
命令を移動し、実行ユニット1へI2をシフトする。資
源が利用可能になるとき、処理システムは(nサイクル
後に)UおよびI2の両方を実行する。もちろん、I2
は、独立であるから、Uと共に並列に実行することがで
きる。したがって、本発明はnサイクルに3つの命令を
実行させることができる。前の例の中で、利用不可能な
命令U2がUの次に来ると、他の利点もある。この場
合、逐次的で利用不可能な命令はよく同じ資源に依存す
ることがあり、いったん(nサイクル後に)それが利用
可能になれば両方とも実行できるから、UとU2の両方
が並列に実行できる高い確率がある。それ故、本発明は
再びnサイクルで3つの命令を実行するが、従来システ
ムは、U2は実行のためにUを待つから、2つを実行す
るに過ぎない。
【図面の簡単な説明】
【図1】本発明を利用可能な多重実行プロセッサの様々
な構成要素を示したブロック図である。
【図2】個々の実行ユニットに関連した命令バッファお
よび命令フローパスを図示した本発明の詳細図である。
【図3】第1命令および第2命令が様々な評価基準に基
づいて依存性を持つように示された、本発明の実施例を
図示した流れ図である。
【図4】第1命令および第2命令が様々な評価基準に基
づいて依存性を持つように示された、本発明の実施例を
図示した流れ図である。
【図5】独立命令および依存命令を実行するために本発
明が要求するマシンサイクルの数の例を示したタイミン
グ図である。
【符号の説明】
1 命令バッファ 2 命令バッファ0 3 復号ユニット0制御 4 命令バッファ1 5 復号ユニット1制御 6 バス 7 レジスタファイル 8 バス 9 レジスタファイル 10 レジスタファイル入力ラッチおよび多重化器 11 実行ユニット入力ラッチおよび多重化器 12 バス 13 実行ユニット0制御 14 命令バッファ 15 実行ユニット1制御 17 実行ユニット0 19 実行ユニット1 21 2ポート加算器 23 論理ユニット 25 3ポート加算器 27 論理ユニット 33 デュアルポートデータアドレス翻訳論理 35 書き込みデータ線 36 データキャッシュバス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラリー・エドワード・サッチャー アメリカ合衆国78759 テキサス州、オ ースチン、ディー・ケー・ランチ・ロー ド 11507 (72)発明者 ヘンリー・スタンレイ・ワレン、ジュニ ア アメリカ合衆国10562 ニューヨーク州、 オシニング、キッチャワン・ロード 879 (56)参考文献 特開 昭51−40043(JP,A) 特開 平3−214235(JP,A) 特開 平2−130634(JP,A) 特開 平5−127903(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】第1及び第2の実行ユニットを含んでいる
    計算機システムであって、 命令キャッシュから特定の順序で命令を受信し、上記第
    1及び第2の実行ユニットのそれぞれに対応して上記命
    令をそれらに供給する第1及び第2の命令バッファと、 上記第1及び第2の命令バッファにある命令が独立命令
    であるかどうかを解釈する手段と、 上記第1及び第2の命令バッファ内の上記命令が独立命
    令であると判断された場合に、上記第1の命令バッファ
    内の上記命令及び上記第2の命令バッファ内の上記命令
    をそれぞれ上記第1及び第2の実行ユニットに同時に供
    給する手段と、 上記第2の命令バッファ内の上記命令が上記第1の命令
    バッファ内の上記命令に依存する場合に、上記第1の命
    令バッファ内の上記命令を上記第1の実行ユニットに供
    給し、さらに上記第2の命令バッファ内の上記命令を直
    接上記第2の命令バッファから上記第1の命令バッファ
    に、及び上記命令の他のものを上記命令キャッシュから
    上記第2の命令バッファに同時に移動する手段と、 を有し、上記命令の上記特定の順序は正しい順序で維持
    されかつ実行される上記計算機システム。
  2. 【請求項2】3つの異なる記憶位置に記憶される3つの
    値を同時に加算するために、かつ上記解釈手段によって
    いかなる他の命令とも独立して実行される独立命令とし
    て上記3つの値を加算する命令を指定されるようにする
    ために使用される3ポート加算器をさらに含む請求項1
    に記載のシステム。
  3. 【請求項3】上記解釈手段に含まれ、上記第1及び第2
    の命令バッファからそれぞれの第1及び第2の実行ユニ
    ットへ独立命令が並列にシフトされるようにする復号制
    御回路を有する請求項2に記載のシステム。
  4. 【請求項4】上記復号制御回路が第1及び第2命令バッ
    ファからそれぞれの第1及び第2の実行ユニットへ利用
    不可能な命令が並列にシフトされるようにする請求項3
    に記載のシステム。
  5. 【請求項5】上記復号制御回路が第1の命令バッファに
    ある依存命令の一つが第1の実行ユニットへシフトさ
    れ、第2の命令バッファにある依存命令の一つが第1の
    命令バッファへ移されるようにする請求項4に記載のシ
    ステム。
  6. 【請求項6】第1及び第2の実行ユニットを含んでいる
    計算機システムにおいて命令を実行する方法であって、 命令キャッシュから特定の順序で命令を受信し、上記第
    1及び第2の実行ユニットのそれぞれに対応して上記命
    令をそれらに供給する第1及び第2の命令バッファを提
    供するステップと、 復号制御回路によって上記第1及び第2の命令バッファ
    にある命令が独立命令であるかどうかを解釈するステッ
    プと、 上記復号制御回路によって、上記第1及び第2の命令バ
    ッファ内の上記命令が独立命令であると判断された場合
    に、上記第1の命令バッファ内の上記命令及び上記第2
    の命令バッファ内の上記命令をそれぞれ上記第1及び第
    2の実行ユニットに同時に供給するステップと、 上記復号制御回路によって、上記第2の命令バッファ内
    の上記命令が上記第1の命令バッファ内の上記命令に依
    存する場合に、上記第1の命令バッファ内の上記命令を
    上記第1の実行ユニットに供給し、さらに上記第2の命
    令バッファ内の上記命令を直接上記第2の命令バッファ
    から上記第1の命令バッファに、及び上記命令の他のも
    のを上記命令キャッシュから上記第2の命令バッファに
    同時に移動するステップと、 を有し、上記命令の上記特定の順序は正しい順序で維持
    されかつ実行される上記方法。
  7. 【請求項7】上記移動するステップが上記第2のバッフ
    ァから第1のバッファへ上記第1及び第2のバッファを
    相互接続するバスを介して命令を移すステップを含む請
    求項6に記載の方法。
  8. 【請求項8】3つの異なる記憶位置に記憶される3つの
    値を同時に加算するために、かつ上記解釈手段によって
    いかなる他の命令とも独立して実行される独立命令とし
    て上記3つの値を加算する命令を指定されるようにする
    ために使用される3ポート加算器を使用するステップを
    さらに含む請求項7に記載の方法。
  9. 【請求項9】上記復号制御回路によって、上記第1及び
    第2の命令バッファからそれぞれ第1及び第2の実行ユ
    ニットへ独立命令を並列にシフトするステップと、 上記復号制御回路によって、上記第1及び第2の命令バ
    ッファからそれぞれ第1及び第2の実行ユニットへ利用
    不可能な命令を並列にシフトするステップとをさらに含
    む請求項8に記載の方法。
  10. 【請求項10】上記復号制御回路によって、上記第1の
    命令バッファにある依存命令の一つを上記第1の実行ユ
    ニットへシフトするステップと、 上記復号制御回路によって、上記第2の命令バッファに
    ある依存命令の一つを上記第1の実行ユニットへ移すス
    テップとをさらに含む請求項9に記載の方法。
JP6163633A 1993-09-20 1994-07-15 計算機システム及び命令実行方法 Expired - Fee Related JP2788605B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12382893A 1993-09-20 1993-09-20
US123828 1993-09-20

Publications (2)

Publication Number Publication Date
JPH07105002A JPH07105002A (ja) 1995-04-21
JP2788605B2 true JP2788605B2 (ja) 1998-08-20

Family

ID=22411140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6163633A Expired - Fee Related JP2788605B2 (ja) 1993-09-20 1994-07-15 計算機システム及び命令実行方法

Country Status (11)

Country Link
US (1) US5613080A (ja)
EP (1) EP0644482B1 (ja)
JP (1) JP2788605B2 (ja)
KR (1) KR0133238B1 (ja)
CN (1) CN1047677C (ja)
AT (1) ATE209794T1 (ja)
BR (1) BR9403516A (ja)
CA (1) CA2123442A1 (ja)
DE (1) DE69429226T2 (ja)
ES (1) ES2165375T3 (ja)
TW (1) TW393622B (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US5717882A (en) * 1994-01-04 1998-02-10 Intel Corporation Method and apparatus for dispatching and executing a load operation to memory
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
JP3180175B2 (ja) * 1995-02-13 2001-06-25 株式会社日立製作所 命令レベルの並列処理制御方法およびプロセッサ
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
GB9514433D0 (en) * 1995-07-14 1995-09-13 Sgs Thomson Microelectronics Computer instruction execution
US5930490A (en) * 1996-01-02 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
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
US5796975A (en) * 1996-05-24 1998-08-18 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order
US6049864A (en) * 1996-08-20 2000-04-11 Intel Corporation Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor
KR100222039B1 (ko) * 1996-12-20 1999-10-01 윤종용 수퍼 스칼라 프로세서의 명령 종속성 검증 장치 및 방법
US5963723A (en) * 1997-03-26 1999-10-05 International Business Machines Corporation System for pairing dependent instructions having non-contiguous addresses during dispatch
US5918034A (en) * 1997-06-27 1999-06-29 Sun Microsystems, Inc. Method for decoupling pipeline stages
US5928355A (en) * 1997-06-27 1999-07-27 Sun Microsystems Incorporated Apparatus for reducing instruction issue stage stalls through use of a staging register
US6035388A (en) 1997-06-27 2000-03-07 Sandcraft, Inc. Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6393551B1 (en) 1999-05-26 2002-05-21 Infineon Technologies North America Corp. Reducing instruction transactions in a microprocessor
US6490653B1 (en) * 1999-06-03 2002-12-03 International Business Machines Corporation Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system
JP3878508B2 (ja) * 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
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
KR100473390B1 (ko) * 2002-05-24 2005-03-08 창 원 석 케이블티브이용 채널분배기
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US20080168260A1 (en) * 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
JP5491071B2 (ja) 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
US9122487B2 (en) * 2009-06-23 2015-09-01 Oracle America, Inc. System and method for balancing instruction loads between multiple execution units using assignment history
US9733941B2 (en) * 2012-10-09 2017-08-15 Advanced Micro Devices, Inc. Technique for translating dependent instructions
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US9372695B2 (en) * 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US10417152B2 (en) * 2016-06-03 2019-09-17 International Business Machines Corporation Operation of a multi-slice processor implementing datapath steering
JP7032647B2 (ja) * 2018-04-17 2022-03-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN112559054B (zh) * 2020-12-22 2022-02-01 上海壁仞智能科技有限公司 用于同步指令的方法和计算系统

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771141A (en) * 1971-11-08 1973-11-06 Culler Harrison Inc Data processor with parallel operations per instruction
JPS5140043A (ja) * 1974-10-01 1976-04-03 Nippon Telegraph & Telephone Hanyonyushutsuryokuseigyosochi
JPS5263038A (en) * 1975-10-01 1977-05-25 Hitachi Ltd Data processing device
US4130885A (en) * 1976-08-19 1978-12-19 Massachusetts Institute Of Technology Packet memory system for processing many independent memory transactions concurrently
US4232366A (en) * 1978-10-25 1980-11-04 Digital Equipment Corporation Bus for a data processing system with overlapped sequences
US4376976A (en) * 1980-07-31 1983-03-15 Sperry Corporation Overlapped macro instruction control system
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4630195A (en) * 1984-05-31 1986-12-16 International Business Machines Corporation Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
US4837678A (en) * 1987-04-07 1989-06-06 Culler Glen J Instruction sequencer for parallel operation of functional units
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5099421A (en) * 1988-12-30 1992-03-24 International Business Machine Corporation Variable length pipe operations sequencing
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5093908A (en) * 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
JP2866421B2 (ja) * 1990-01-19 1999-03-08 株式会社日立製作所 複数パス並列処理方法
US5301341A (en) * 1990-11-28 1994-04-05 International Business Machines Corporation Overflow determination for three-operand alus in a scalable compound instruction set machine which compounds two arithmetic instructions
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
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
US5283874A (en) * 1991-10-21 1994-02-01 Intel Corporation Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
JPH05127903A (ja) * 1991-10-31 1993-05-25 Toshiba Corp 並列処理マイクロプロセツサ
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions

Also Published As

Publication number Publication date
US5613080A (en) 1997-03-18
JPH07105002A (ja) 1995-04-21
CN1047677C (zh) 1999-12-22
CN1120195A (zh) 1996-04-10
TW393622B (en) 2000-06-11
KR950009453A (ko) 1995-04-24
DE69429226D1 (de) 2002-01-10
KR0133238B1 (ko) 1998-04-24
EP0644482B1 (en) 2001-11-28
DE69429226T2 (de) 2002-08-08
ES2165375T3 (es) 2002-03-16
CA2123442A1 (en) 1995-03-21
BR9403516A (pt) 1995-06-20
ATE209794T1 (de) 2001-12-15
EP0644482A1 (en) 1995-03-22

Similar Documents

Publication Publication Date Title
JP2788605B2 (ja) 計算機システム及び命令実行方法
KR930004214B1 (ko) 데이타 처리 시스템
US5664215A (en) Data processor with an execution unit for performing load instructions and method of operation
US5450560A (en) Pointer for use with a buffer and method of operation
US6301655B1 (en) Exception processing in asynchronous processor
EP0213842A2 (en) Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US20060294344A1 (en) Computer processor pipeline with shadow registers for context switching, and method
EP0491693B1 (en) Improved cpu pipeline having register file bypass on update/access address compare
US5491829A (en) Method and system for indexing the assignment of intermediate storage buffers in a superscalar processor system
US5099421A (en) Variable length pipe operations sequencing
US5778248A (en) Fast microprocessor stage bypass logic enable
JPH06242954A (ja) 独立にアクセスされる中間記憶域を利用してスーパースカラ・プロセッサ・システムにおける命令ディスパッチを改善する方法およびシステム
KR100309309B1 (ko) 단일클록사이클동안슈퍼스칼라프로세서에서복수의저장인스트럭션완료를용이하게하는방법및시스템
US5696939A (en) Apparatus and method using a semaphore buffer for semaphore instructions
US20070260857A1 (en) Electronic Circuit
US5907693A (en) Autonomously cycling data processing architecture
JPH05506323A (ja) 機能停止キャッシュを提供する装置と方法
US5761474A (en) Operand dependency tracking system and method for a processor that executes instructions out of order
US5617549A (en) System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
US6115730A (en) Reloadable floating point unit
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
KR100411402B1 (ko) 파이프라인방식의프로세서에서잘못예측된분기로부터의복원방법및장치
US6725355B1 (en) Arithmetic processing architecture having a portion of general-purpose registers directly coupled to a plurality of memory banks
US5504870A (en) Branch prediction device enabling simultaneous access to a content-addressed memory for retrieval and registration
JP2620505B2 (ja) スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees