JP3342894B2 - 記憶装置内の複数の命令間の依存を解決するための装置および方法 - Google Patents

記憶装置内の複数の命令間の依存を解決するための装置および方法

Info

Publication number
JP3342894B2
JP3342894B2 JP25014592A JP25014592A JP3342894B2 JP 3342894 B2 JP3342894 B2 JP 3342894B2 JP 25014592 A JP25014592 A JP 25014592A JP 25014592 A JP25014592 A JP 25014592A JP 3342894 B2 JP3342894 B2 JP 3342894B2
Authority
JP
Japan
Prior art keywords
instructions
hit
instruction
enable
signal
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
JP25014592A
Other languages
English (en)
Other versions
JPH05250159A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH05250159A publication Critical patent/JPH05250159A/ja
Application granted granted Critical
Publication of JP3342894B2 publication Critical patent/JP3342894B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/123Contention resolution, i.e. resolving conflicts between simultaneous read and write operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の背景】データ依存を処理するための予約技術を
使用するスーパースカラコンピューティング装置におい
、ディスパッチされた命令およびリタイア処理された
命令の順序を適切に保つために、一般にリオーダバッフ
ァが使用される。このようなリオーダバッファの1つの
主機能は、送込まれた読出オペランドとリオーダバッフ
ァ内の前の命令の宛先オペランドと一致していないか
どうかについてデコード間に命令オペランドを検査
することである。もしこのような一致が検出されれば、
一致のあった宛先オペランドを識別するタグが、送込ま
れた命令の読出オペランドとともに予約ステーションに
送られるであろう。このようなタグによって、予約ステ
ーションは機能ユニットからリオーダバッファされ
るデータのための結果バスを調べて、適当なタグが検出
されると結果を直接受けとって迅速に処理をな行うこと
ができる。
【0002】リオーダバッファは一般に、リオーダバッ
ファ内のパイプライン中の先頭の命令を識別する書込ポ
インタと、パイプライン中の最後の命令の後のエントリ
を指す読出ポインタとを有する。リオーダバッファは一
般にループ先入先出方式(FIFO)レジスタであり、
もし一杯か、または空であれば、結果的に読出および書
込ポインタ同じエントリを指すことになる。このよう
なデータ処理条件が、パイプラインされた命令処理技
術を使用するスーパースカラコンピューティング装置に
必要である。このようなコンピューティング装置で
は、典型的に、複数の命令をフェッチしたものがまと
めて各サイクルごとに処理される。このような装置の設
計目標は、サイクルごとに複数の命令をディスパッチ
し、実行することであるが、設計目標に到達するまでに
、命令間のデータ依存または分岐命令という障害に遭
遇する。
【0003】別の命令によって計算されることになって
いるデータに依存する命令は、必要なオペランドが使用
可能になるまでその演算を始めることができない。もし
オペランドが前の命令によって計算されるのであれば、
第2の命令はその前の命令が実行を完了するまで待機し
なければならない。したがって、命令間のデータ依存は
命令の実行を遅らせ、計算機の動作効率を低下させ得
る。分岐命令は、多くの場合その実行前に条件が分かる
まで待たねばならないので、分岐命令も計算機の動作効
率を低下させるであろう。これらの問題(データ依存お
よび分岐命令)のいずれも、結果的に、パイプライン命
令処理技術を使用するスーパースカラシステム内の命令
の流れを停止させる。命令の流れは「割込」および「ト
ラップ」によっても中断されるであろう。割込およびト
ラップは一連の令の正常な実行を停止する異常な原因
について用いられる用語である。割込およびトラップ
は、ユーザ外部ピンをアサートすること、違法命令、
予め設定されたトレース、停止点、メモリエラーまたは
他の原因によって生じ得る。プロセッサは現在の条件、
プロセッサの状態、および現在の命令のアドレスを記憶
して、トラップまたは割込を処理(別の命令のシーケン
ス)しなければならない。トラップ/割込ルーチンの完
了後、プロセッサは命令の流れの正常な実行に戻らねば
ならない。割込およびトラップはそれらの発生において
不正確であり得、その場合でもリオーダバッファは正常
な命令の実行を適切に停止し、かつ再開するために命令
のストリームのを把握しておかなければならない。
【0004】この発明はリオーダバッファのような記憶
装置内の複数の命令間のこのようなデータ依存および他
の割込を解決するための装置および方法を提供する。こ
の発明はパイプライン命令処理を使用するスーパースカ
ラコンピューティング装置において特に有用である。
【0005】
【発明の概要】この発明はパイプライン命令処理を使用
するスーパースカラコンピューティング装置内のリオー
ダバッファのような記憶装置内の複数の命令間のデータ
依存を解決するための装置および方法である。この装置
は複数のメモリ、またはレジスタ、セルを有する記憶装
置とともに使用可能であり、ループ先入先出方式(FI
FO)モードで作動する記憶装置内で特に使用可能であ
る。記憶装置は、記憶装置内の中で次の空のメモリセル
を示す読出ポインタを有し、かつ記憶装置内の複数の命
令のパイプ中の第1の命令を示す書込ポインタを有す
る。複数の命令の各々は複数のオペランドの操作の組合
せを行ない、結果を決定する。複数のオペランドの各々
はソースインジケータによって識別され、その結果は宛
先インジケータによって識別される。この装置は、記憶
装置内の複数の命令の中の、次にディスパッチされるべ
き命令のそれぞれのソースインジケータと一致する宛先
インジケータを有する最も新しく記憶された命令を識
別する出力信号を発生する。
【0006】命令をディスパッチするということは、命
令がデコーダから機能ユニットおよびリオーダバッファ
へ送られるということを意味する。命令がディスパッチ
れると、ロケーションがリオーダバッファに割当てら
れる。書込ポインタはリオーダバッファ内の第1の割当
てられた命令を指し、読出ポインタは次にディスパッチ
れるべき命令のためにリオーダバッファ内の次に空の
ロケーションを指す。リオーダバッファ内の割当てられ
たエントリは、割当てられたエントリに関連する命令が
機能ユニット内にあることを示し、これらの命令は実行
されているか、または実行を予約ステーション内で待っ
ているかのいずれかである。命令はデコーダから「イン
オーダで(順序正しく)」ディスパッチされ、命令のス
トリームを確立せねばならない。命令のストリームが進
むのを妨げる(したがって性能を低下させる)ことがな
いようにするために、リオーダバッファは命令間の依存
を検査して、できるだけ早くデコーダに命令をディスパ
ッチせねばならないということが重要である。命令が機
能ユニットによってその実行を完了すると、このような
実行の結果はリオーダバッファに送り返され、割当てら
れたエントリが有効なものとして表示される。リオーダ
バッファの主な機能は、有効に割当てられたエントリで
インオーダで」(先入先出方式)書込ポインタから正
確にその結果を更新することである。リオーダバッファ
はまた、リオーダバッファ内のロケーションの割当てを
外し、書込ポインタをインクリメントする。この発明の
プロセッサにおいて、命令はリオーダバッファによって
許容されるようにデコーダによって「インオーダで
ィスパッチされる。機能ユニットにおいて、命令は「
ウトオブオーダで」実行され、かつリオーダバッファに
戻される。リオーダバッファは「インオーダで」その結
果(レジスタファイルおよびプロセッサ状態)を更新す
る。リオーダバッファは命令がディスパッチされる得る
前にすべての依存を調和させる。
【0007】この装置は、次にディスパッチされるべき
命令中のそれぞれのソースインジケータが記憶装置内の
先に記憶された命令の宛先インジケータと一致するごと
に比較ヒット信号を発生するための比較ヒット回路と、
複数の命令の第1の一群の命令のために第1のイネーブ
ル信号を発生するための第1のイネーブル回路とを含
み、その第1の一群の命令は読出ポインタおよび書込ポ
インタによって規定され、この装置はさらに比較ヒット
信号と第1のイネーブル信号とがともに発生するごとに
ヒットイネーブル信号を発生するための第1の比較回路
と、第2の一群の命令のために第2のイネーブル信号を
発生するための第2のイネーブル回路とを含み、この第
2の一群の命令は読出ポインタおよびヒットイネーブル
信号によって規定され、この回路はさらに第2のイネー
ブル信号とヒットイネーブル信号とがともに発生するご
とに出力信号を発生するための第2の比較回路を含む。
【0008】その好ましい実施例において、第1のイネ
ーブル回路および第2のイネーブル回路は実質的に同じ
構成のものであり、第1の比較回路および第2の比較回
路は実質的に同じ構成のものである。
【0009】この発明はまた、パイプライン命令処理技
術を使用するスーパースカラコンピューティング装置内
のリオーダバッファのような記憶装置内の複数の命令間
のデータ依存を解決するための方法を含む。この方法
は、(1)次にディスパッチされるべき命令中のそれぞ
れのソースインジケータの各々を記憶装置内の先に記憶
された命令の宛先インジケータと比較するステップと、
(2)次にディスパッチされるべき命令中のそれぞれの
ソースインジケータが先に記憶された命令の宛先インジ
ケータと一致するごとに比較ヒット信号を発生するステ
ップと、(3)第1の一群の命令のために第1のイネー
ブル信号を発生するステップとを含み、第1の一群の命
令は読出ポインタおよび書込ポインタによって規定さ
れ、(4)比較ヒット信号を第1のイネーブル信号と比
較するステップと、(5)比較ヒット信号と第1のイネ
ーブル信号とが一致するごとにヒットイネーブル信号を
発生するステップと、(6)第2の一群の命令のために
第2のイネーブル信号を発生するステップとをさらに含
み、第2の一群の命令は読出ポインタおよびヒットイネ
ーブル信号によって規定され、(7)第2のイネーブル
信号をヒットイネーブル信号と比較するステップと、
(8)第2のイネーブル信号とヒットイネーブル信号が
ともに発生するごとに出力信号を発生するステップとを
さらに含む。出力信号は、記憶装置内の複数の命令の中
で、次にディスパッチされるべき命令のそれぞれのソー
スインジケータと一致する宛先インジケータを有する
最も新しく記憶された命令を識別する。
【0010】したがってこの発明の目的は、ディスパッ
チされた読出オペランドと記憶装置内の前の命令の宛先
オペランドとの間の一致を効率的に識別する記憶装置内
の複数の命令間のデータ依存を解決するための装置およ
び方法を提供することである。
【0011】この発明のさらなる目的は、ディスパッチ
れた命令によって使用されるための一致した宛先オペ
ランドを識別するタグを与え、そのタグはディスパッチ
れた命令を伴う、記憶装置内の複数の命令間のデータ
依存を解決するための装置および方法を提供することで
ある。
【0012】この発明のさらなる目的は、別個の機能に
ついて類似の回路を使用することによってその動作に信
頼性および持続性を与え、かつ構成が簡単な、記憶装置
内の複数の命令間のデータ依存を解決するための装置を
提供することである。
【0013】この発明のさらなる目的および特徴は、こ
の発明の好ましい実施例を表わす添付の図面に関連して
検討されると、以下の明細書および特許請求の範囲から
明らかであろう。
【0014】
【好ましい実施例の詳細な説明】図1はこの発明の装置
および方法とともに使用するために意図される型のリオ
ーダバッファを使用するコンピューティング装置の概略
図である。好ましくは図1に示される装置はデータ依存
を処理するために待合せ技術を使用し、かつパイプライ
ン命令処理技術を使用するスーパースカラコンピューテ
ィング装置である。
【0015】したがって、図1においてデコーダ10は
適当な処理ユニット12によって処理するための命令の
フェッチバッチ(好ましくは4つの命令からなるバッ
チ)を発行する。それぞれの命令によって実行されるべ
き演算の型によって、命令は演算論理ユニット(AL
U)14、シフタ16、または機能ユニット(FU)1
8、20に送られるであろう。与えられた取出バッチ中
の各命令は同時にリオーダバッファ22にも入れられ
る。リオーダバッファ22は、命令間のデータ依存、分
岐命令または他の原因によって生じる可能性のある、
令処理への割込に対処するために、パイプライン命令処
理を使用するこのようなスーパースカラコンピューティ
ング装置に必要である。すなわち、与えられた命令の結
果が次の命令のためのオペランドとして必要となると
か、分岐命令が、その分岐の条件の解決によってレジス
タファイルが更新されるを待つ必要がある、というよう
なことである。むろん、分岐命令も、の命令におい
こり得るように、データ依存を有する読出オペランド
を含むことがあり得る。たとえば条件付き分岐命令は、
別の命令のストリームへジャンプするか、または現在の
命令のストリームを継続することができる。条件付き分
岐命令の結果は、機能ユニットによってそれが実行さ
れ、その実行結果リオーダバッファに戻されるまで分
からない。この発明の好ましい実施例において、プロ
セッサは分岐命令の結果に関してインテリジェント
量を行ない、命令のストリームから命令を取出してデコ
ーダへ入れることを継続する。もし分岐結果の推量が正
しくなければ、リオーダバッファは分岐命令の後に記憶
された不正確な命令を除去し、新しい命令のストリーム
フェッチされるであろう。分岐命令はリオーダバッフ
ァ内の有効に割当てられたエントリを使用して実行され
る。
【0016】図1に示されるスーパースカラコンピュー
タによって実行されるプログラムが準備されるとき、プ
ログラム中の各命令は、それぞれの命令によって行なわ
れる演算結果を受けるのがレジスタファイル24のどの
アドレスかに関する情報を含む。各命令について、その
特定の命令の実行のために必要なオペランドがどのレジ
スタアドレスから受けられるであろうかに関する情報も
含まれる。
【0017】すなわち、デコーダ10はレジスタファイ
ル24へソースオペランドを送って、データが線31を
介して機能ユニット12へ送られることを要求する。も
しソースオペランドとリオーダバッファ22内の前に記
憶された宛先オペランドとの間に一致が生じ、かつその
データが有効であれば、リオーダバッファ22は、デー
タがレジスタファイル24から供給される代わりに、線
30を介して適当な機能ユニット12へデータを供給す
るであろう。もしソースオペランドとリオーダバッファ
22内の前に記憶された宛先オペランドとの間に一致が
生じ、かつそのデータが有効でなければ、機能ユニット
12へデータは送られないであろう。代わりに、タグが
適当な機能ユニット12の予約ステーション(図示せ
ず)に送られるであろう。その予約ステーションは、予
約ステーションのタグと一致するタグを有するデータ
見つけるために、機能ユニット12からの結果バス34
を監視するであろう。一致したタグと関連付けられた
ータはバス34からバス32を介してバス30へ送られ
るであろう。デコーダ10によって線26を介して機能
ユニット12へ送られる情報は命令の型に関するもので
ある。命令は依存度検査のためにリオーダバッファ22
の補助を得てデコーダ10によってディスパッチされる
(または発行される)。
【0018】図1に示されるようなコンピューティング
装置において、それぞれの処理ユニット12の各々は一
般に予約ステーションなどのある種の待合せ装置を有す
る。したがって、線26上のデコーダ10からそれぞれ
の処理ユニット12へ発行される、必要とされる結果を
識別するための識別子を伴う命令は、リオーダバッファ
22または出力線34から線30、32を介しての、
要な命令が保持される適当な予約ステーションまたは他
の待合せ装置への識別情報によって、それぞれの必要な
情報その要求される結果との照合を行わせることがで
きる。
【0019】命令は機能ユニット12によって実行さ
れ、リオーダバッファ22へ「アウトオフオーダで」戻
される。リオーダバッファ22は線35を介して「イン
オーダで」レジスタファイル24を更新する。
【0020】この発明の理解を容易にするために、様々
な図面において同一のエレメント同一の参照数字によ
って識別されるであろう。
【0021】図2はこの発明の装置の概略的ブロック図
である。図2において、装置40は比較回路42、デコ
ーダ54、58、AND回路50、86、イネーブル回
路66、80、およびエンコーダ回路90を含む。比較
回路42は入力44で次にディスパッチされるべき命令
ソースアドレス情報を受け、このソースアドレス情報
(オペランドのような)次に命令の実行のために要求
される情報が記憶されるレジスタ24(図1を参照)内
のアドレスを識別する。比較回路42は入力46におい
て、リオーダバッファ内の命令の宛先情報も受け、その
宛先情報は、命令の実行結果がそれぞれの命令の実行後
に記憶されるレジスタファイル24内のアドレスを識別
する。比較ヒット信号「D」比較回路42から出力4
8で発生され、入力52としてAND回路50に受けら
れ、それによって、いかなる命 結果にせよ、その宛
先アドレスが、与えられた命令のオペランドについての
ソースアドレスと一致するような、リオーダバッファ2
2内の各命令を識別する情報をAND回路50に与え
る。デコーダ54は入力56でリオーダバッファ22
(図1を参照)内の読出ポインタのロケーションを識別
する情報を受ける。読出ポインタはリオーダバッファ
22内のフェッチバッチのうちの、次にディスパッチさ
れるべき命令を識別する。書込ポインタはリオーダバッ
ファ22内の最初に記憶された命令を識別する。書込ポ
インタは入力60でデコーダ58によって受けられる。
デコーダ54は出力62で信号「A」を発生し、これは
リオーダバッファ22内の読出ポインタのロケーション
に関してデコードされた情報である。デコーダ58は出
力64で信号「B」を発生し、これはリオーダバッファ
22内の書込ポインタのロケーションに関してデコード
された情報である
【0022】イネーブル回路66はデコードされた読出
ポインタ情報(信号「A」)を入力68に受け、かつデ
コードされた書込ポインタ情報(信号「B」)を入力7
0に受ける。イネーブル回路66は、リオーダバッファ
22内のエントリであって、かつ読出ポインタおよび書
込ポインタ間のすべてのエントリについてイネーブル信
号「C」(好ましくは「1」)を発生する。イネーブル
信号「C」は出力72で与えられる。
【0023】AND回路50は入力53でイネーブル回
路66からのイネーブル信号「C」を受ける。AND回
路50は出力74で出力信号「E」を発生し、この信号
「E」はリオーダバッファ22内の読出ポインタおよび
書込ポインタ間のソースアドレスおよび宛先アドレス
をすべて識別する。
【0024】信号「E」はイネーブル回路80の入力7
与えられる。イネーブル回路80はデコードされた
読出ポインタ情報(信号「A」)を入力78に受ける。
好ましくはイネーブル回路80はイネーブル回路66と
同じ構成のものである。イネーブル回路80は出力端子
82で出力信号「F」を発生する。信号「F」は読出
ポインタからイネーブル信号「C」および比較ヒット
信号「D」とがともに 生じている最初の箇所までの間、
イネーブル信号(好ましくは「1」)を発生させる。
【0025】AND回路86は信号「E」を入力84に
受け、信号「F」を入力85に受ける。好ましくはAN
D回路86はAND回路50と同じ構成のものである。
AND回路86は出力端子88で出力信号「G」を発生
する。信号「G」はリオーダバッファ22内の読出
ポインタおよび書込ポインタの間のそれぞれの命令によ
って要求される結果のうち、最も新しく記憶されたもの
を識別する。出力信号「G」はエンコーダ90によって
エンコードされ、出力端子92で出力タグとして装置4
0からディスパッチされる。
【0026】もし出力タグがリオーダバッファ22内の
有効なエントリを指せば、リオーダバッファ22は(デ
ータがレジスタファイル24から送られる代わりに)線
30を介して機能ユニット12へデータを送るであろ
う。リオーダバッファ22内の有効なエントリは、
命令が機能ユニット12によって実行を完了してお
、リオーダバッファ22内に戻されたことを意味す
る。命令の結果レジスタファイル24、またはプロセ
ッサの状態を「インオーダで」更新せねばならないの
で、有効なエントリ命令はその順番が来るのを待たねば
ならない。もし出力タグがリオーダバッファ22内の有
効でないエントリを指している場合その出力タグは
次にディスパッチされることになっている命令に適切に
付加され、それによって、その命令を実行するためにそ
の命令によって必要とされる情報のロケーションに関す
る、その命令についての識別情報与えられ、かつ図1
に関連して説明したように、出力線34から線32を介
してその命令に対する情報の一致があるか否かを判定し
て、待合せ装置およびそれぞれの処理ユニット12
にその情報が送られるのを可能にする
【0027】図3は図2に示される装置40によって使
用されるイネーブル回路66、80の電気的概略図であ
る。図3において、第1の入力バス94および第2の入
力バス96の各々は10ビット(ビット0−9)信号を
イネーブル装置100へ送る。したがって、イネーブル
装置100は10個のセル0−9を含む。各セルは入力
バス94および入力バス96の双方について対応のビッ
トと関連付けられ、その結果、各セルについて1つの
力IN0 −IN9 が存在す。出力バス98は関連され
た出力OUT0 −OUT9 を有する。
【0028】説明を明瞭にするために、代表的セル、セ
ル0の構造詳細に説明する。セル0は入力バス96か
らの入力112と入力バス94からの入力114を有す
るNORゲート110を含む。PチャネルCMOSスイ
ッチングトランジスタ116はゲート118で入力バス
96からの信号によってゲートされる。Pチャネルスイ
ッチングトランジスタ116は基準電圧VCCをNチャ
ネルCMOSスイッチングトランジスタ120へゲート
する。Nチャネルスイッチングトランジスタ120は入
力バス94からの信号によってそのゲート122でゲー
トされる。NORゲート110の出力124はNチャネ
ルCMOSスイッチングトランジスタ126をそのゲー
ト128でゲートする。NチャネルCMOSスイッチン
グトランジスタ130はそのゲート132で入力バス9
6からの信号によってゲートされる。
【0029】共通線140すべてのセル0−9を横切
り、復帰共通線141セル0からループしてセル9に
戻る。
【0030】イネーブル装置100は、いかなる与えら
れた時間にも入力バス94の1ビットと入力バス96の
1ビットだけが「1」値を有するであろうようにフォー
マット化された入力バス94、96によって与えられる
アドレスに応答するように構成される。したがって例示
として、入力バス94がビット6で「1」値を有し、か
つ入力バス96がビット2で「1」値を有する場合のイ
ネーブル装置100の動作説明する
【0031】このような例示的状況において、入力バス
94上のビット0−5および7−9の「0」値により、
セル0−5および7−9の各々において入力114上の
値は[0」値になるであろう。セル0−1およびセル3
−9における入力バス96の「0」値により、各セル0
−1、3−9について入力112上の値は「0」値にな
るであろう。したがってNORゲート110からの出力
124はセル0−1、3−5、および7−9で「1」値
を有するであろう。言い換えれば、セル2および6はN
ORゲート110の出力124で「0」値を有するであ
ろう。
【0032】このような構成によって、Nチャネルスイ
ッチングトランジスタ128はセル2および6において
ゲートオフされ、イネーブル装置100内の他のすべ
てのセルにおいてゲートオンされるであろう。入力1
14その「1」値を有するセル6は、セル6のNチャ
ネルスイッチングトランジスタ20をゲートオンするで
あろう。同様に、セル6内の入力112における「0」
値はセル6内のPチャネルスイッチングトランジスタ1
16のゲート118に印加され、それによってPチャネ
ルスイッチングトランジスタ116をゲートオンし、そ
の結果基準電圧VCC共通線140に与えられるであ
ろう。セル6内のNチャネルスイッチングトランジスタ
132はゲートオフされ、それによって接地から共通線
140を絶縁するであろう。
【0033】共通線140上の信号の流れはセル9から
セル0への方向を持ち、復帰共通線141上の信号の流
れはセル0からセル9への方向を持つ。セル3−5の入
力114の「0」値はそれらのセル3−5のそれぞれの
Nチャネルスイッチングトランジスタをゲートオフし、
それによってセル3−5において基準電圧VCCから共
通線140を絶縁する。同様に、セル3−5内の入力バ
ス96から受けられた「0」入力はセル3−5のそれぞ
れのNチャネルトランジスタ130をゲートオフし、そ
れによってセル3−5において接地から共通線140を
絶縁するであろう。したがって、「1」値が出力OUT
2 からOUT5 には与えられ、これはセル6においてV
CCの接続によって共通線140へ課される。「0」値
出力OUT0 −OUT1 およびOUT6 −OUT9
与えられる。このような態様において、イネーブル回路
100は入力バス94および96のそれぞれ存在する
2つの「1」の間イネーブル信号(「1」値)
を課す。
【0034】セル2において、入力114の「0」値は
Nチャネルスイッチングトランジスタ120をゲートオ
フし、それによって基準電圧VCCから共通線140を
絶縁し、類似の結果がセル0−1およびセル7−9にお
いて生じる。さらに、セル2の入力112の「1」値は
Pチャネルスイッチングトランジスタ116をゲートオ
フし、かつNチャネルスイッチングトランジスタ130
をゲートオンし、それによって共通線140を接地に接
続し、出力OUT1 で「0」値を課す。出力OUT1
よびOUT2 はセル2においてNチャネルスイッチング
トランジスタ126の「オフ」状態によって互いに絶縁
される。セル0−1およびセル6−9の入力112の
「0」値はそれらのセルにおいてNチャネルスイッチン
グトランジスタ126をゲートオフし、それらのセルに
おいて共通線140を接地から絶縁する。
【0035】したがって、セル6において共通線140
に課された「1」値が出力OUT2−OUT5 へ伝搬さ
れる。セル2において共通線140に課された「0」値
も出力OUT0 −OUT1 、および出力OUT6 −OU
9 へ伝搬される。
【0036】図4は、図3に示されるようなイネーブル
回路100の方法および動作の概略的図表である。図4
においてリオーダバッファ22内の選択された値が示
される。リオーダバッファ22は好ましくは、読出ポイ
ンタおよび書込ポインタをインクリメントすることによ
ってリオーダバッファ22内のデータのシフト方向が達
成される、ループ先入先出方式(FIFO)レジスタと
して構成される。読出ポインタ(RP)および書込ポイ
ンタ(WP)は、図4においては、リオーダバッファ2
2内の4つの命令のフェッチバッチを区分する特定のロ
ケーションで示されている。さらに図4においては、
2の説明に関連して信号を指定する際に使用された方法
と一致するように、文字「A」−「G」の指定を用いて
いる
【0037】図2および図4をともに検討するに際し
例示を目的として、レジスタファイル24(図1を参
照)内のレジスタR1 存在していることがわかってい
、命令のためのオペランドのような情報が要求され
ものと仮定する。読出ポインタRPは図4の読出ポ
インタRPの位置に隣接するところでは、信号「A」の
値を「1」する。同様に、書込ポインタWPは図4の
書込ポインタWPの位置に隣接するところでは、信号
「B」 値を「1」する。信号「C」、すなわち読出
ポインタRPおよび書込ポインタWPの中間のすべての
エントリについてのイネーブル信号は、読出ポインタR
Pおよび書込ポインタWPの中間のすべてのエントリに
ついてリオーダバッファ22内に「1」を割当てる。信
号「D」はリオーダバッファ22内の前に発生された
結果を含む宛先アドレスと、ある命令によって必要と
れる情報についてのソースインジケータ間の一致
表わす。したがって、図4の宛先ポインタ列内レジス
タR1 が現れるたびに、図4の列「D」内の値が「1」
となる。イネーブル信号「C」および比較ヒット信号
「D」がともに発生していることを表わす信号「E」
信号「D」および「C」がともに発生するたびに
「1」値となる。信号「F」は信号「E」についての
「1」値が最初に発生した箇所と読出ポインタRPとの
間のすべてのエントリについて「1」値を割当てるイネ
ーブル信号である。信号「G」は図2のAND回路86
によって発生され、信号「E」および「F」とがともに
発生したことを表わす。したがって、信号「G」は、リ
オーダバッファ22内の、読出ポインタRP書込ポイ
ンタWPとので、もっとも新しく記憶された宛先レジ
スタR1 位置を「1」値で識別する。このように信号
「G」によって識別された宛先レジスタがあれば、次に
ディスパッチされるべき命令のソースオペランドとし
て、その宛先レジスタに格納された値を用いることがで
きる。したがって、他のオペランドも利用可能であれ
ば、次にディスパッチされるべき命令は直ちに実行を開
始することができ、ソースレジスタの更新を待つ必要は
ない。
【0038】与えられた詳細な図面および特定の例はこ
の発明の好ましい実施例を説明するが、これらは説明の
目的のみのためであり、この発明の装置は開示される精
密な詳細および条件に限定されることなく、かつ前述の
請求項によって規定されるこの発明の精神から逸脱する
ことなしに様々な変更がその中で行なわれてもよいこと
が理解されるべきである。
【図面の簡単な説明】
【図1】この発明の装置および方法とともに使用するこ
とが意図される型のリオーダバッファを使用するコンピ
ューティング装置の概略図である。
【図2】この発明の装置の概略ブロック図である。
【図3】図2に示される装置によって使用されるイネー
ブル回路の電気的概略図である。
【図4】図3に示されるイネーブル回路の方法および動
作を表わす概略図表の図である。
【符号の説明】
42:比較回路 54 58:デコーダ 50 86:AND回路 66 80:イネーブル回路 90:エンコーダ回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 タン・ミン・トラン アメリカ合衆国 78741、テキサス州、 オースティン、イー・リバーサイド、 4821、ナンバー・117 (56)参考文献 特開 平4−270421(JP,A) 特開 平4−110688(JP,A) 特表 平6−501124(JP,A) 久我守弘、外3名,”『新風』プロセ ッサの依存解析機能付きレジスタファイ ル”,情報処理学会第40回(平成2年前 期)全国大会論文集,日本,1990年3月 14日,p.1269−1270 久我守弘、外4名,SIMP(単一命 令流/多重パイプライン)方式に基づく 『新風』プロセッサの低レベル並列処理 アルゴリズム,情報処理学会論文誌,日 本,1989年12月15日,Vol.30,N o.12,p.1603−1611 久我守弘、外2名,SIMP(単一命 令流/多重パイプライン)方式に基づく 『新風』プロセッサの低レベル並列処理 アルゴリズム,並列処理シンポジウム JSPP’89,日本,1990年2月,p. 163−170 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】 記憶装置内の複数の命令間の依存を解決
    するための装置であって、前記記憶装置は複数のメモリ
    セルを有し、前記複数のメモリセルの選択されたメモリ
    セル内に前記複数の命令を順次記憶し、前記記憶装置
    前記複数のメモリセルの中の次に空のメモリセルを
    示す読出ポインタと、前記複数の命令の中で最初に記憶
    された命令を示す書込ポインタとを有し、前記複数の命
    令の各々は、複数のオペランドに対する組合わせの操作
    を行って結果を決定、前記複数のオペランドの各々は
    ソースインジケータによって識別され、前記結果は宛先
    インジケータによって識別され、この装置は出力信号を
    発生し、前記出力信号は、前記複数の命令の中で、次に
    ディスパッチされるべき命令の前記ソースインジケータ
    のそれぞれと一致する前記宛先インジケータを有する
    ののうち最も新しく記憶された命令を識別、この装置
    は、 前記ソースインジケータと前記宛先インジケータとを比
    較するための比較ヒット手段を含み、前記比較ヒット手
    段は、前記複数の命令の中で最初に記憶された命令の前
    記宛先インジケータと前記次にディスパッチされるべき
    命令中の前記それぞれのソースインジケータ一致
    る毎に比較ヒット信号を発生し、 前記読出ポインタおよび前記書込ポインタに応答して、
    前記複数の命令の第1の一群の命令について第1のイネ
    ーブル信号を発生するための第1のイネーブル手段を含
    み、前記第1の一群の命令は前記読出ポインタおよび前
    記書込ポインタによって規定され、 前記比較ヒット信号と前記第1のイネーブル信号
    もに発生するごとにヒットイネーブル信号を発生するた
    めの第1の比較手段と、 前記読出ポインタおよび前記ヒットイネーブル信号に応
    答して、前記複数の命令の第2の一群の命令について第
    2のイネーブル信号を発生するための第2のイネーブル
    手段とをさらに含み、前記第2の一群の命令は前記読出
    ポインタおよび前記ヒットイネーブル信号によって規定
    され、 前記第2のイネーブル信号と前記ヒットイネーブル信号
    とがともに発生するごとに、前記出力信号を発生するた
    めの第2の比較手段をさらに含む、装置。
  2. 【請求項2】 前記順次記憶は先入先出方式記憶として
    行なわれる、請求項1に記載の複数の命令間の依存を解
    決するための装置。
  3. 【請求項3】 前記第1のイネーブル手段および前記第
    2のイネーブル手段は実質的に同じ構成のものである、
    請求項2に記載の複数の命令間の依存を解決するための
    装置。
  4. 【請求項4】 前記第1の比較手段および前記第2の比
    較手段は実質的に同じ構成のものである、請求項3に記
    載の複数の命令間の依存を解決するための装置。
  5. 【請求項5】 前記第1のイネーブル手段および前記第
    2のイネーブル手段は実質的に同じ構成のものである、
    請求項1に記載の複数の命令間の依存を解決するための
    装置。
  6. 【請求項6】 前記第1の比較手段および前記第2の比
    較手段は実質的に同じ構成のものである、請求項5に記
    載の複数の命令間の依存を解決するための装置。
  7. 【請求項7】 前記複数のオペランドは2つのオペラン
    ドである、請求項1に記載の複数の命令間の依存を解決
    するための装置。
  8. 【請求項8】 前記第1比較手段および前記第2の比較
    手段は実質的に同じ構成のものである、請求項1に記載
    の複数の命令間の依存を解決するための装置。
  9. 【請求項9】 記憶装置内の複数の命令間の依存を解決
    するための装置であって、前記記憶装置は複数のメモリ
    セルを有し、かつ前記複数のメモリセルの選択されたメ
    モリセル内に前記複数の命令を順次記憶し、前記複数の
    メモリセルの各々は複数のタグを含み、前記複数のタグ
    の各々はイネーブルメントを示す第1の値と、非イネー
    ブルメントを示す第2の値とを有し、前記記憶装置は
    前記複数のメモリセルの中で、次に空のメモリセルを示
    す読出ポインタと、前記複数の命令の中で、最初に記憶
    された命令を示す書込ポインタとを有し、前記複数の命
    令の各々は結果を決定するために複数のオペランドの
    合わせの操作を行ない、前記複数のオペランドの各々は
    ソースインジケータによって識別され、前記結果は宛先
    インジケータによって識別され、この装置は識別タグを
    設定し、前記識別タグは、前記複数の命令の中で、次に
    ディスパッチされるべき命令の前記ソースインジケータ
    のそれぞれと一致する前記宛先インジケータを有する
    ののうち、最も新しく記憶された命令を識別する装置で
    あって、 前記ソースインジケータと前記宛先インジケータとを比
    較するための比較ヒット手段を含み、前記比較ヒット手
    段は、前記複数の命令のそれぞれの先に記憶された命令
    について、前記次にディスパッチされるべき命令中の前
    記それぞれのソースインジケータが前記それぞれの先に
    記憶された命令の前記宛先インジケータと一致すると
    き、前記第1の値比較ヒットタグを設定し、 前記読出ポインタおよび前記書込ポインタに応答して、
    前記複数の命令の第1の一群の命令中の各命令について
    前記第1の値第1のイネーブルタグを設定するための
    第1のイネーブル手段を含み、前記第1の一群の命令
    、前記複数の命令のうち、前記読出ポインタおよび前
    記書込ポインタの間に記憶されているすべての命令を含
    み、前記第1の一群の命令のうち、対応の 前記比較ヒットタ
    グおよび前記第1のイネーブルタグが前記第1の値
    定されている命令の各々について前記第1の値ヒッ
    トイネーブルタグを設定するための第1の比較手段と、 前記読出ポインタおよび前記ヒットイネーブルタグに応
    答して、前記複数の命令の第2の一群の命令中の各命令
    について前記第1の値第2のイネーブルタグを設定
    するための第2のイネーブル手段とをさらに含み、前記
    第2の一群の命令は、前記第1の一群の命令の中で、
    記第1の値設定された前記ヒットイネーブルタグを有
    するもののうち最初に記憶された命令と前記読出ポイン
    タとのに記憶されているすべての命令を含み、対応の 前記第2のイネーブルタグおよび前記ヒットイネ
    ーブルタグが前記第1の値設定されている各命令につ
    いて前記識別タグを設定するための第2の比較手段をさ
    らに含む、装置。
  10. 【請求項10】 記憶装置内の複数の命令間の依存を解
    決するための方法であって、前記記憶装置は複数のメモ
    リセルを有し、かつ前記複数のメモリセルの選択された
    メモリセル内に前記複数の命令を順次記憶し、前記記憶
    装置は前記複数のメモリセルの中で、次に空のメモリセ
    ルを示す読出ポインタと、前記複数の命令の中で、最初
    に記憶された命令を示す書込ポインタとを有し、前記複
    数の命令の各々は複数のオペランドに対する操作の
    合せを行なって結果を決定し、前記複数のオペランドの
    各々はソースインジケータによって識別され、前記結果
    は宛先インジケータによって識別され、この方法は、前
    記複数の命令の中で、次にディスパッチされるべき命令
    の前記ソースインジケータのそれぞれと一致する前記宛
    先インジケータを有するもののうち最も新しく記憶され
    た命令を識別する方法であって、 (1) 前記次にディスパッチされるべき命令中の前記
    それぞれのソースインジケータの各々を前記複数の命令
    の先に記憶された命令の各々の前記宛先インジケータと
    比較するステップと、 (2) 前記次にディスパッチされるべき命令中の前記
    それぞれのソースインジケータが前記複数の命令の先に
    記憶された命令の前記宛先インジケータと同時に発生
    るごとに比較ヒット信号を発生するステップと、 (3) 前記読出ポインタおよび前記書込ポインタに応
    答して、前記複数の命令の中の第1の一群の命令につい
    て第1のイネーブル信号を発生するステップとを含み、
    前記第1の一群の命令は前記読出ポインタおよび前記書
    込ポインタによって規定され、 (4) 前記第1のイネーブル信号と前記比較ヒット信
    号を比較するステップと、 (5) 前記比較ヒット信号と前記第1のイネーブル信
    号とがともに発生するごとにヒットイネーブル信号を発
    生するステップと、 (6) 前記読出ポインタおよび前記ヒットイネーブル
    信号に応答して、前記複数の命令の中の、第2の一群
    命令について第2のイネーブル信号を発生するステップ
    とをさらに含み、前記第2の一群の命令は前記読出ポイ
    ンタおよび前記ヒットイネーブル信号によって規定さ
    れ、 (7) 前記ヒットイネーブル信号と前記第2のイネー
    ブル信号を比較するステップと、 (8) 前記第2のイネーブル信号と前記ヒットイネー
    ブル信号とがともに発生するごとに出力信号を発生する
    ステップとをさらに含み、前記出力信号は、前記複数の
    命令の中で、前記次にディスパッチされるべき命令の前
    記ソースインジケータのそれぞれと一致する前記宛先イ
    ンジケータを有するもののうち最も新しく記憶された命
    令を識別する、方法。
  11. 【請求項11】 前記順次記憶は先入先出方式記憶とし
    て行なわれる、請求項10に記載の複数の命令間の依存
    を解決するための方法。
  12. 【請求項12】 前記複数のオペランドは2つのオペラ
    ンドである、請求項10に記載の複数の命令間の依存を
    解決するための方法。
JP25014592A 1991-09-20 1992-09-18 記憶装置内の複数の命令間の依存を解決するための装置および方法 Expired - Lifetime JP3342894B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US764155 1991-09-20
US07/764,155 US5345569A (en) 1991-09-20 1991-09-20 Apparatus and method for resolving dependencies among a plurality of instructions within a storage device

Publications (2)

Publication Number Publication Date
JPH05250159A JPH05250159A (ja) 1993-09-28
JP3342894B2 true JP3342894B2 (ja) 2002-11-11

Family

ID=25069840

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25014592A Expired - Lifetime JP3342894B2 (ja) 1991-09-20 1992-09-18 記憶装置内の複数の命令間の依存を解決するための装置および方法

Country Status (5)

Country Link
US (1) US5345569A (ja)
EP (1) EP0533337B1 (ja)
JP (1) JP3342894B2 (ja)
AT (1) ATE172802T1 (ja)
DE (1) DE69227429T2 (ja)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
WO1993020505A2 (en) 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5465373A (en) * 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
US5493669A (en) * 1993-03-03 1996-02-20 Motorola, Inc. Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits
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
JPH06337843A (ja) * 1993-05-28 1994-12-06 Fujitsu Ltd データ転送制御方法
TW242673B (ja) * 1993-08-18 1995-03-11 Ibm
US5826094A (en) * 1993-09-30 1998-10-20 Intel Corporation Register alias table update to indicate architecturally visible state
US5740393A (en) * 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
US5878245A (en) 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US6128721A (en) * 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor
US6101597A (en) * 1993-12-30 2000-08-08 Intel Corporation Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor
US6393550B1 (en) * 1993-12-30 2002-05-21 Intel Corporation Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
US5553256A (en) * 1994-02-28 1996-09-03 Intel Corporation Apparatus for pipeline streamlining where resources are immediate or certainly retired
DE69531933T2 (de) * 1994-03-01 2004-08-12 Intel Corp., Santa Clara Busarchitektur in hochgradiger pipeline-ausführung
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5490280A (en) * 1994-03-31 1996-02-06 Intel Corporation Apparatus and method for entry allocation for a resource buffer
US5689693A (en) * 1994-04-26 1997-11-18 Advanced Micro Devices, Inc. Range finding circuit for selecting a consecutive sequence of reorder buffer entries using circular carry lookahead
US5535345A (en) * 1994-05-12 1996-07-09 Intel Corporation Method and apparatus for sequencing misaligned external bus transactions in which the order of completion of corresponding split transaction requests is guaranteed
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
EP0724215A1 (en) * 1995-01-26 1996-07-31 Sun Microsystems, Inc. Method and apparatus for recovering from mispredicted branches in a pipelined processor
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5848433A (en) * 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5634026A (en) * 1995-05-12 1997-05-27 International Business Machines Corporation Source identifier for result forwarding
US5617543A (en) * 1995-05-26 1997-04-01 National Semiconductor Corporation Non-arithmetical circular buffer cell availability status indicator circuit
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US6038657A (en) * 1995-10-06 2000-03-14 Advanced Micro Devices, Inc. Scan chains for out-of-order load/store execution control
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5765035A (en) * 1995-11-20 1998-06-09 Advanced Micro Devices, Inc. Recorder buffer capable of detecting dependencies between accesses to a pair of caches
US5961580A (en) * 1996-02-20 1999-10-05 Advanced Micro Devices, Inc. Apparatus and method for efficiently calculating a linear address in a microprocessor
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5838942A (en) * 1996-03-01 1998-11-17 Hewlett-Packard Company Panic trap system and method
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US5761474A (en) * 1996-05-24 1998-06-02 Hewlett-Packard Co. Operand dependency tracking system and method for a processor that executes instructions out of order
US5805851A (en) * 1996-06-13 1998-09-08 Hewlett-Packard Co. System for determining data dependencies among intra-bundle instructions queued and prior instructions in the queue
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5838944A (en) * 1996-07-31 1998-11-17 Hewlett-Packard Company System for storing processor register data after a mispredicted branch
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US5848256A (en) * 1996-09-30 1998-12-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for address disambiguation using address component identifiers
US5805907A (en) * 1996-10-04 1998-09-08 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US5870616A (en) * 1996-10-04 1999-02-09 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US5860014A (en) * 1996-10-15 1999-01-12 International Business Machines Corporation Method and apparatus for improved recovery of processor state using history buffer
US5870612A (en) * 1996-10-15 1999-02-09 International Business Machines Corporation Method and apparatus for condensed history buffer
US5805906A (en) * 1996-10-15 1998-09-08 International Business Machines Corporation Method and apparatus for writing information to registers in a data processing system using a number of registers for processing instructions
US6016540A (en) * 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves
US5923900A (en) * 1997-03-10 1999-07-13 International Business Machines Corporation Circular buffer with n sequential real and virtual entry positions for selectively inhibiting n adjacent entry positions including the virtual entry positions
US6148393A (en) * 1997-03-10 2000-11-14 Advanced Micro Devices, Inc. Apparatus for generating a valid mask
US5930521A (en) * 1997-04-15 1999-07-27 Industrial Technology Research Institute Reorder buffer architecture for accessing partial word operands
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6070235A (en) * 1997-07-14 2000-05-30 International Business Machines Corporation Data processing system and method for capturing history buffer data
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6240503B1 (en) 1998-11-12 2001-05-29 Advanced Micro Devices, Inc. Cumulative lookahead to eliminate chained dependencies
JP3851228B2 (ja) * 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム
US20040168045A1 (en) * 2003-02-21 2004-08-26 Dale Morris Out-of-order processor executing speculative-load instructions
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US20060149931A1 (en) * 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
JPH0731615B2 (ja) * 1986-04-18 1995-04-10 日本電気株式会社 情報処理装置
US5125083A (en) * 1989-02-03 1992-06-23 Digital Equipment Corporation Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
久我守弘、外2名,SIMP(単一命令流/多重パイプライン)方式に基づく『新風』プロセッサの低レベル並列処理アルゴリズム,並列処理シンポジウム JSPP’89,日本,1990年2月,p.163−170
久我守弘、外3名,"『新風』プロセッサの依存解析機能付きレジスタファイル",情報処理学会第40回(平成2年前期)全国大会論文集,日本,1990年3月14日,p.1269−1270
久我守弘、外4名,SIMP(単一命令流/多重パイプライン)方式に基づく『新風』プロセッサの低レベル並列処理アルゴリズム,情報処理学会論文誌,日本,1989年12月15日,Vol.30,No.12,p.1603−1611

Also Published As

Publication number Publication date
ATE172802T1 (de) 1998-11-15
JPH05250159A (ja) 1993-09-28
EP0533337A1 (en) 1993-03-24
DE69227429D1 (de) 1998-12-03
EP0533337B1 (en) 1998-10-28
DE69227429T2 (de) 1999-06-10
US5345569A (en) 1994-09-06

Similar Documents

Publication Publication Date Title
JP3342894B2 (ja) 記憶装置内の複数の命令間の依存を解決するための装置および方法
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
EP1099157B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US7299343B2 (en) System and method for cooperative execution of multiple branching instructions in a processor
US5463745A (en) Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US6119223A (en) Map unit having rapid misprediction recovery
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
CN100449499C (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置
JP3597540B2 (ja) 並列データプロセッサにおけるアクティブ命令を回転させる方法および装置
KR100404257B1 (ko) 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛
US5684971A (en) Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
EP1099158B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
US5469552A (en) Pipelined data processor having combined operand fetch and execution stage to reduce number of pipeline stages and penalty associated with branch instructions
US5778247A (en) Multi-pipeline microprocessor with data precision mode indicator
US6237085B1 (en) Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
JP3182741B2 (ja) 分散命令完了方法及びプロセッサ
US5809324A (en) Multiple instruction dispatch system for pipelined microprocessor without branch breaks
JP3122420B2 (ja) プロセッサおよび条件コード・ビット計算方法
US5903918A (en) Program counter age bits
US6658555B1 (en) Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US20020174385A1 (en) Computer system with debug facility

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020730

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20070823

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080823

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20080823

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100823

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110823

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110823

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120823

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20130823

Year of fee payment: 11

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130823

Year of fee payment: 11