JPH08505725A - 命令実行を制御するため命令にタグを割り当てるシステム及び方法 - Google Patents

命令実行を制御するため命令にタグを割り当てるシステム及び方法

Info

Publication number
JPH08505725A
JPH08505725A JP6516016A JP51601694A JPH08505725A JP H08505725 A JPH08505725 A JP H08505725A JP 6516016 A JP6516016 A JP 6516016A JP 51601694 A JP51601694 A JP 51601694A JP H08505725 A JPH08505725 A JP H08505725A
Authority
JP
Japan
Prior art keywords
instruction
instructions
tag
register file
unit
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.)
Granted
Application number
JP6516016A
Other languages
English (en)
Other versions
JP3531167B2 (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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of JPH08505725A publication Critical patent/JPH08505725A/ja
Application granted granted Critical
Publication of JP3531167B2 publication Critical patent/JP3531167B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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
    • 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
    • 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

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)

Abstract

(57)【要約】 命令にタグを割り当てるためのタグ・モニタ・システム。メモリ・ユニットは、実行ユニットにより実行される命令を格納する。実行の前に命令取り出しユニットが命令をデコードする。レジスタ・ファイルはデコードされた命令を格納する。待ち行列は、デコードされた命令にタグを付けるのに用いるタグを含む複数のスロットを備えている。制御ユニットは、デコードされた命令にタグを割り当て、実行された命令の完了を監視し、実行された命令の完了時に待ち行列のタグを進める。レジスタは、デコードされた命令を、その命令に割り当てられたタグによって決められたレジスタ・ファイル内のアドレス位置に格納する。レジスタ・ファイルはまた、複数の読み出しアドレス可能ポート及びそれに対応する読み出し出力ポートを含んでいる。待ち行列の各スロットは、対応する個々の読み出しアドレス可能ポートに接続されている。従って、デコードされた命令は、そのデコードされた命令に割り当てられたタグによって読み出し可能状態になった読み出し出力ポートからプログラムの順序通りに読み出される。

Description

【発明の詳細な説明】 命令実行を制御するため命令にタグを割り当てる システム及び方法 (System And Method For Assigning Tags to Instructions to Control Instruction Execution) 発明の背景 1.産業上の利用分野 本発明は、一般的にスーパースカラ・コンピュータに関し、より具体的には 、スーパースカラ型縮小命令セット・コンピュータ(RISC)に於て命令実行を制 御するためタグを用いるシステム及び方法に関する。 2.関連技術 従来のコンピュータ・システムで用いられるプロセサは、一般的に、プログ ラム命令を一度に1つづつ順次実行する。1つの命令を実行するプロセスにはい くつかのシーケンシャルなステップが含まれている。第1のステップは、普通、 メモリ素子から命令を取り出すことである。第2のステップは、普通、命令をデ コードしオペランドをアセンブルすることである。第3のステップは、普通、命 令を実行しその結果を格納することである。プロセサによっては、プロセサの一 回のクロック・サイクルで各ステップを行うように設計されているものがある。 あるいは、 ステツプ当たりのプロセサのクロック・サイクル数が命令によって変わるように プロセサを設計することも可能である。 現代のコンピュータは、性能向上のためパイプライン方式として知られる手 法を用いる。パイプライン方式では、命令実行過程のシーケンシャルなステップ が重なり合うことになる。例えば、プロセサは、1つの命令に対して実行ステッ プを行っている間に、同時に、第2の命令に対してはデコードのステップを行い 、第3の命令に対しては取り出しを行うのである。このようにして、パイプライ ン方式は命令の1つのシーケンスにかかる実行時間を短縮することが出来る。ス ーパーパイプライン式のプロセサは、上で述べた3つのシーケンシャル・ステッ プのサブステップを重なり合わせることにより、さらに性能を向上させようとす る。 性能向上のための他の手法には、1つ以上の命令を同時に並行に実行するこ とが含まれる。この手法を用いるプロセサは、普通、スーパースカラ型プロセサ と呼ばれる。2つ以上の命令を同時に実行するスーパースカラ型プロセサの能力 は実行される命令に依存する。例えば、共に限られた、同じプロセサ資源(浮動 小数点ユニットのような)を使用する必要がある2つの命令を同時に実行するこ とは出来ない。この種の衝突は資源衝突として知られている。さらに、前の命令 を実行して得られる結果に依存する命令は、その前の命令と一緒にすることは出 来ない。前の命令の結果に依存する命令は、最初の命令にデータ依存性を持つと いわれる。同様に、命令は前の命令に手続き依存性を持っているかも知れないが 、これはその2つの命令が同時に実行されるのを防いでいる。 このように、スーパースカラ型プロセサは同時に2つ以上の命令を実行しよ うとする。これを行うには、プロセサは、複数の命令を実行する実行ユニット( 例えば、浮動小数点ユニット及び整数ユニット)と呼ばれるシステムを持たなけ ればならない。また実行ユニットには、そ れが近い将来実行する命令のグループを供給しなければならない。この命令のグ ループは、普通、いわゆる「命令ウインドウ」と呼ばれる場所にある。このウイ ンドウは命令プログラムの「スナップショット」を与える。 上に述べたウインドウは、通常、命令取り出しユニットにある。 この命令取り出しユニットは、メモリから命令のグループを取り出し、それらを デコードし、スーパースカラ・ユニットに送る。そしてスーパースカラ・ユニッ トは、それら命令を種々の機能ユニットに発令する。スーパースカラ・ユニット には、その命令がどのマイクロプロセサ資源(例えば、ロード/ストア等)を使 用するかを示す情報、その命令の入力がどのレジスタ(例えば、整数ユニットの レジスタ・ファイル)から来て、その出力がどこ(例えば、浮動小数点ユニット のレジスタ・ファイル)に出て行くのかといったレジスタの名称、その命令が何 の機能(例えば、加算、乗算)を行うのかを示す情報、等が必要である。こうし た情報を知っている結果、一旦命令が完了すれば、スーパースカラ・ユニットは 、命令取り出しユニットにそれらをウインドウから削除し、その場所に新しい命 令を加えることを指示するのである。 現在の設計では、命令ウインドウは先入れ先出し(FIFO)待ち行列を用いて いる。このFIFOのデータは「決められた量だけ」進められる。例えば、ある命令 ウインドウは4つの命令(I0−I3)を含み、4つをグループとして変えることが 出来る。この場合、命令I0、I1、I2、I3が実行された後、これらの命令はウイン ドウから削除され、4つの新しい命令がウインドウに入れられる。ウインドウ内 の1グループの命令が完了する度にウインドウは決まった量だけ変化するので、 スーパースカラ・ユニットは、ウインドウを通して命令の進展を容易に追ってい くことが出来る。 固定アドバンスのウインドウにはいくつかの欠点がある。1つの 命令のためにグループ全体の命令がウインドウから削除されるのが遅れる可能性 があることである。例えば、もしI0、I1、I2は全て1サイクルで実行される命令 で、I3は実行に多くのサイクルを要する場合、I0、I1、I2は、それらが完了した 後でもI3の実行が完了するまで(FIFOから押し出され、3つの新しい命令で置き 換えられる代わりに)ウインドウ内に留まらなくてはならない。これは命令の流 れを止め(即ち、ボトルネック)、性能に制限を与えることになりがちである。 固定アドバンスのウインドウ(FIFO)に対する一つの解決法には、可変量だ けを進めることが可能な命令ウインドウがある。これにより、命令が実行された すぐ後に、それらの命令をウインドウから削除することが可能になる。可変アド バンス・ウインドウを用いる命令実行は非常に複雑である。その理由は、命令が 、FIFOの色々な場所に存在することが可能だからである。例えば、I0がリタイア する(完了する)のと同じサイクル中にI1が実行されるなら、次のサイクルでは 、I0はFIFOから押し出され、I1はFIFOのI0のスロツトに移る(ここでI0及びI1は FIFOのスロットの場所のことであって命令プログラムの順序ではない)。スーパ ースカラ・ユニットは、新しいI0がその前はI1であったことを知っておかなけれ ばならない、そうすると、実行された時には命令をリタイアさせることが出来る 。そして、実行ユニットは対応する結果を機能ユニットの正しいレジスタ・ファ イル・アドレスに書き込める。 これによって性能の向上が得られるが、このシステムに係わる欠点も存在す る。典型的には、命令取り出しユニットからの命令を含む大容量の主待ち行列( 通常スーパースカラ・ユニット内にある)を用いることが必要なことである。さ らに、いくつかの中央に位置した他の待ち行列が、主待ち行列中の各命令に対応 したデコード済みの情報を含む必要がある(即ち、資源待ち行列、デスティネー シヨン待ち行列等)。主待ち行列及びデコードされた情報を含む行列は全て、命 令の進行状況を 把握しておくために(即ち、どこに送られるかとか、どこで実行されるか等)並 列で送られなくてはならない。 現在では、命令を保持するのにいくつかの待ち行列を用いるという考えは多 くの点で不都合である。その理由は、大量のチップ面積資源を複数の待ち行列専 用にすることになり、2つ以上の待ち行列を有するシステムの設計に於て大した 柔軟性が得られず、さらに待ち行列中のデータを導く制御論理は込み入っており 柔軟性を欠く、等がある。 それ故、命令がデコードされた後、それらを「追跡」する、即ち監視する手 法が必要である。そのシステムは、チツプ上で小さな面積のみを要するものでな くてはならない、そして、柔軟性があり、「可変アドバンス命令ウインドウ」を 通って命令が進むにつれてそれらを適切に監視できなくてはならない。 発明の要約 本発明は、複数の命令にタグを割り当てるシステムによって複数の命令の並 列命令実行を監視する手法に関する。該システムは、スーパースカラ・ユニット の1つの構成要素であり、命令取り出しユニット(メモリ・ユニットから命令を 送る)と実行ユニット(命令を実行する)との間を接続する。該スーパースカラ ・ユニットの役割は、実行ユニットの種々の機能ユニットに命令を振り向けるこ と、及び、命令取り出しユニットに何時命令が実行されるか、又はもう不要か( リタイアする)を告げ、命令取り出しユニットが新たな命令を実行ユニットに転 送することが出来るようにすることである。本発明は、スーパースカラ・ユニッ トが命令(プログラムの順序に従わずに実行するかも知れない)を監視し、可変 方式で「命令ウインドウ」内の命令を進める機構を提供する。 本発明は、スーパースカラ・ユニットの一部であるタグ・モニタ・システム を用いる。このタグ・モニタ・システムは、レジスタ・ファイル及び先入り先出 し(FIFO)に基づいて動作する待ち行列を含む。レジスタ・ファイルは、命令取 り出しユニットに接続され、デコードされた命令(即ち、各命令に対する資源要 件)を格納するのに用いられる。待ち行列はレジスタ・ファイルに接続されてい る。待ち行列の各スロットはタグを含んでいる。命令取り出しユニットから命令 が送られる時、それには、レジスタ・ファイルに格納されているデコードされた 実行中の命令のどれにも現在割り当てられていないタグが割り当てられる。次い で命令は、レジスタ・ファイル中のタグが示すアドレス位置においてレジスタ・ ファイルに格納される。 命令がリタイアする毎に、待ち行列は前に進む(待ち行列は命令プログラム の順序通りに進む)。典型的には、命令がリタイアするとき、夫々のタグは待ち 行列の底から押し出される。このタグは、命令取り出しユニットから送られる新 しい命令に再び割り当てられる。このように、タグは、待ち行列の最上部に送り 返される(言い換えれば、リサイクルされる)。プロセサのサイクル毎に待ち行 列の各スロットはレジスタ・ファイルの読み出し可能ポートに出力されるが、そ れはレジスタ・ファイルの内容をプログラムの順序通りに表示する。一般的に、 待ち行列はその前の実行サイクルでリタイアした命令の数だけ前に進む。 レジスタ・ファイルは、命令取り出しユニットから命令を受け取る書き込み ポートを有する。レジスタ・ファイルに書き込むことが可能な命令の最大数は、 待ち行列が一度に進める命令(タグ)の最大数によって決定される。レジスタ・ ファイルの出力ポート(読み出しデータポート)は、レジスタ・ファイルに格納 された各命令に対して1つのポートを有する(待ち行列のスロット数に対応する )。 本発明の一つの特長は、複数の待ち行列を必要とせずにデコード された命令を識別できることである。これによって設計が簡単になり、オペレー ション上の柔軟性が増す。さらに、チップ上で必要な面積を減少させる。 本発明の他の特徴及び利点、並びに本発明の種々の実施例の構造及び動作に 関して、添付の図面を参照しながら以下に詳しく説明する。 図面の簡単な説明 第1図は、スーパースカラ環境101のブロック図である。 第2図は、スーパースカラ・ユニット106の一部内にあるタグ・モニタ・シ ステム222のブロック図である。 第3図は、タグ・モニタ・システム222のオペレーションを示すフローチャ ートである。 参照番号の一番左の数字は、その番号が最初に出てくる図面の番号を表す。 発明の詳細な説明 1.0 システム環境 第1図にスーパースカラ環境101のブロック図を示す。スーパースカラ環境1 01は、メモリ・ユニット102、命令取り出しユニット104、スーパースカラ・ユニ ット106、及び、実行ユニット108を含む。 スーパースカラ・ユニット106は、実行ユニット108で行われる命令の実行を 制御する。実行ユニット108は、浮動小数点ユニット (ここに示されていない)、整数ユニット(ここに示されていない)、ロード/ ストア・ユニット(ここに示されていない)、及び、所望のアプリケーションに よってはプロセサが通常用いるような他の機能ユニットを含んでよい。 命令取り出しユニット104は、メモリ102からバス103を経て一群の命令を取 り出し、デコードし、それをバス105を経てスーパースカラ・ユニット106に送る 。スーパースカラ・ユニット106は、次に、実行ユニット108に命令を発令する。 一般的に、スーパースカラ・ユニット106は実行ユニット108の可用性を監視し、 命令相互間の従属性をチェックする。一旦命令が完了すると、スーパースカラ・ ユニット106は命令をリタイアさせる。これは、スーパースカラ・ユニット106に あるウインドウから完了した命令を削除することによって行われる(後ほど説明 する)。スーパースカラ・ユニット106は、次に、バス105を通して信号を送り、 命令取り出しユニット104に命令を送るよう指示することが出来る。これにより 、スーパースカラ・ユニツト106が、新しい命令を用いてウインドウ(第1図に 示されていない)をリフレッシュすることが可能となる。 この好適な実施例では命令は32ビットの固定長を有する。第1図のバスはデ ータ及び制御信号を表している。バス及び命令の大きさはアプリケーションによ り異なる。以下の議論では、スーパースカラ・ユニット106内の命令を追跡する タグ・モニタ・システムに焦点を当てる。 2.0 タグ・モニタ・システムの構造と動作 A.構造 第2図は、スーパースカラ・ユニット106の一部(破線で示され ている)にあるタグ・モニタ・システム222のブロツク図である。タグ・モニタ ・システム222には、レジスタ・ファイル202、タグFIFO204、制御論理207が含ま れている。 タグFIFO204は、スロット206に位置するタグ0から7を格納する(保持する )待ち行列である。タグとは、命令取り出しユニット104から命令が転送されス ーパースカラ・ユニット106のレジスタ・ファイル202に格納される時に命令に割 り当てられる独特なラベル(2進法数0〜7)のことである。 一旦タグが命令に割り当てられると、そのタグは命令がリタイアするまでそ の命令にずっと残る。命令は以下のことが起きた後にリタイアする。即ち、(1 )その結果が既に比較されたか格納された時、及び/又は、(2)実行ユニット 108によって実行された時、及び/又は、如何なる理由にせよもう必要でなくな った時。一旦命令がリタイアすると、それに対応するタグは、タグFIFO204の底2 10から押し出され、タグFIFO206の最上部212に送り返される。ここで、タグは、 命令取り出しユニット104から送られた新しい命令に再び割り当てされる。この ようにして、タグは、タグFIFO204中で「リサイクル」又は再び循環される。 レジスタ・ファイル202は、FIFO204及び命令取り出しユニット104に接続さ れている。レジスタ・ファイル202は、命令取り出しユニット104から送られる命 令の実行データ(実行ユニット108内のデスティネーシヨン・レジスタ、資源要 件、オペレーシヨン機能等)を格納している。レジスタ・ファイル202は、書き 込みデータポート214、書き込みアドレス・ポート216、書き込み可能ポート218 、読み出しアドレス・ポート220、読み出しデータポート224を備える。レジスタ ・ファイル202は1個のランダム・アクセス・メモリである。 書き込みデータポート214は、命令取り出しユニット104から命令実行データ を受け取る。命令実行データはバス208で運ばれる。第2図において、W.D.A .は「書き込み命令実行データA」を、W.D.B.は「書き込み命令実行データ B」等を意味する。命令を区別するために文字を用いたのは、命令プログラムの 順序と混同しないようにするためである。 書き込みアドレス・ポート216は、レジスタ・ファイル202にあるどのタグ位 置に命令を格納するかを指定する。書き込みアドレス・ポート216は制御論理207 と接続している。書き込み可能ポート218も制御論理207と接続している。アクテ ィブ書き込み可能信号226でレジスタ・ファイル202にデータが書き込まれる。 読み出しアドレス・ポート220は、バス(出力)230を介してタグFIFO204に 接続している。タグFIFO204のスロット206の夫々は、出力信号として、読み出し アドレス・ポート206(R.A.7‐R.A.O)に接続されている。したがって、 読み出しアドレス・ポート220により、FIFO204がレジスタ・ファイル202の内容 を選択し、それが読み出しデータポート224から読み出されることが可能になる 。タグFIFO204の出力230により、レジスタ・ファイル202がその内容を順序通り に表示することが可能になる。言い換えれば、出力230は、デコードされた命令 をプログラムの順序に従って示すことが出来るのである。 典型的に、レジスタ・ファイル202は、スーパースカラ・ユニット106内にあ る、命令がプログラムの順序どおりに現われることを必要とする他の要素(例え ば、ここに示されていないイシュア)に接続されている。 重ねて述べると、デコードされた命令はレジスタ・ファイル202中にタグに よって格納される。例えば、もしタグ4が命令Bに割り当 てられていると、そのデコードされた情報は、レジスタ・ファイル202のアドレ ス4に格納される。 制御論理207は論理回路から成る。制御論理207は、バス234を介して実行ユ ニット108を監視し、タグFIFO204を監視する。1つの命令がリタイアすると、制 御論理207は、レジスタ・ファイル202に新しい命令を送るように命令取り出しユ ニット104に信号を出す。制御論理207はまた、命令取り出しユニット104が新た にいくつの命令を送るかということも知らせる。好適な実施例では、一度に送れ る命令の最大数は4であるが、これは、レジスタ・ファイル202の書き込みポー トに対応している。制御論理207はまた、タグFIFO204と同期をとり、信号236を 介して要求されるのと同数の命令を進める。タグFIFOは、1ステップ、2ステッ プ、3ステップ、又は、4ステップを同時に進めることが出来る。制御論理207 の回路のインプリメンテーシヨンは当業者にはすぐに明らかになるであろう。例 えば、現在既によく知られ市販されている論理及びレイアウトのシステムを用い て動作記述(即ち、Verilog又はV.H.D.L.)をシリコン又はチップ設計に変 換することが出来る。 B.オペレーション 第3図に、タグ・モニタ・システム222のオペレーシショを表すフローチャ ートを示す。オペレーシショのステップ301-312について第1図、第2図のハー ドウエア要素を参照しながら説明する。 ステップ302では、制御論理207が命令取り出しユニット104に要求データ信 号238を送り、必要な命令の数を伝える。例えば、レジスタ・ファイル202のギャ ップを埋めるために(命令のリタイアに伴って)1つの命令が必要な時、制御論 理207は、命令取り出しユニット104に要求データ信号238を送り、実行するため の新しい命令を1つ 要求する。 ステップ304では、 制御論理207は、書き込みアドレス・ポート216及び書 き込み可能ポート218にアクティブ論理信号228及び226を夫々送る。制御論理304 は、新しくリタイアしたタグを受け取ったスロットA‐Dに対応する書き込みポ ートのみを起動させる。例えば、タグFIFO106が先にステップ312(後に述べる) で1つだけ進んでいたとすれば、タグ0が、命令アドレスAに対応するスロット 17に現われる。従って、この例では、書き込みアドレス信号228A及び書き込み可 能信号226Aのみが制御論理207によって起動させられる。このように、ポート216 Aのみが書き込み可能状態になる。 ステップ306では、命令取り出しユニット104からバス208を経てレジスタ・ ファイル202に命令(命令実行データ)が送られる。命令取り出しユニット104か ら送られる命令は、これらの命令に割り当てられたタグ番号によってレジスタ・ ファイルに格納される。言い換えると、命令は、書き込みアドレス・ポート216 に送られた、タグFIFO204の最初の4つのスロット(A,B,C,D)の内の1つ以 上(命令取り出しユニット104から送られる命令の数によって)に対応したタグ 番号で示されたレジスタ・ファイル202の中のアドレス位置に書き込まれる。例 えば、命令取り出しユニット104からレジスタ・ファイル202に1つの命令が送ら れるとすると、それはバス208A上を転送される。それは、タグFIFO204の最上部 のスロット(17の位置)にあるタグに従ってアドレス位置”0”に格納される。 このタグは、タグFIFOからバス232Aを経て読み出され、制御207を通して転送さ れ、バス228Aを介して書き込みアドレス・ポート216Aに送られる。 ステツプ308では、レジスタ・ファイル読み出しデータ・ファイル・ポート2 24から命令が読み出される。レジスタ・ファイル202は、プログラムの順序どお りにその内容を表示する。タグFIFO204の各ス ロット206が出力されバス230上を読み出しアドレス・ポート220に転送される。 読み出しアドレス・ポート220によってレジスタ・ファイルからの内容(データ アウト240)が表示されるようになる。タグFIFO204は、命令取り出しユニット10 4から送られて来る可変アドバンス命令及びリタイアする命令と常に同期してい るので、タグFIFO204の出力230は、実際のプログラム順序の「スナップショット 」を示している。このようにして、読み出しアドレス・ポート220に接続したタ グFIFO204の出力230がある結果、レジスタ・ファイル202のデータ出力240は、プ ログラムの順序通りに命令の実行データを示すことになる。例えば、読み出しア ドレス・ポート7(R.A.7)は17の命令データ(これはタグ0に対応している )が読み出しデータポート7(R.D.7)から読み出されることを可能にし、タ グ1はI0の実行データを読み出す。 さらに、ステップ308では、読み出されデコードされた命令が実行ユニット1 08に発行され、実行される。 判断ステップ310では、制御307はどの命令でもいいが命令がリタイアするの を待つ。もしどの命令もリタイアしなければ、データはレジスタ・ファイル202 から引き続き読み出されるが、これは判断ステップ310の”NO”の経路で示され ている。もし命令がリタイアすると、制御論理207は、ステップ312に示されるよ うに、アクティブ・リタイア・ステータス信号234を受信する。リタイア・ステ ータス信号234は、制御論理207に、タグFIFO204にいくつの空きスロット(タグF IFO204を進めるスロットの数)があるかを知らせる。命令取り出しユニット104 から送られた不当命令(即ち、キャッシュミス、ブランチ等)がある場合にもタ グFIFO204に空きスペースが生じる。さらに、ステップ312では、制御論理207は 、アドバンス・データ信号236をタグFIFO204に送り、タグFIFO204を進める回数 (必要な命令数に対応する)を示す。図2を参照して、タグ1は17のスロットに 移動し、他の全てのタグはそれに応じて進められる。ステップ312の後では、タ グ2は、タグFIFO206の底210になくてはならない。ここで、タグ・モニタ・シス テム222のオペレーションは、上に述べたステップ302に戻り引き続き継続される 。 本発明の多くの実施例について上に述べたが、それらは例として挙げられた ものであり、限度を示すためのものではない。従って、本発明の広さと範囲は、 上述したいかなる典型的な実施例もその限界を与えるものではなく、出願の特許 請求範囲及びそれと同等のものに従ってのみ規定される。
【手続補正書】特許法第184条の8 【提出日】1994年12月22日 【補正内容】 新規クレーム 1. プロセサにおいて命令にタグを割り当てるシステムで、該プロセサ は、実行すべき命令を格納するメモリ・ユニット(102)と、前記メモリ・ユニ ット(102)から検索された命令をデコードするための命令取り出しユニット(1 04)と、該デコードされた命令を格納し複数の読み出し可能ポート(220)及び 対応する読み出し出力ポート(224)を有するレジスタ・ファイル(202)とを備 え、該システムは、 該デコードされた命令にタグをつけるために用いられるタグを格納するた めのタグ待ち行列(204)と、 制御ユニット(207)で、 該待ち行列にタグが格納されているのと同じ順序で該デコードされた 命令に前記タグを割り当てる手段と、 命令がいつ実行されるか監視する手段と、 実行された命令の完了時に待ち行列(204)のタグを進める手段とか らなる制御ユニット(207)とを備え、 各命令をその命令に割り当てられたタグによってアドレス指定された位置 に該命令を格納するためにレジスタ・ファイル(202)にタグが適用され、また 、前記タグは、前記読み出し出力ポート(224)に於てデコードされた命令を読 み出すために前記タグ待ち行列(204)に保たれているのと同じ順序で、前記読 み出し可能ポート(220)に適用されることを特徴とするシステム。 2. 請求項第1項記載のシステムであって、前記タグ待ち行列(204) は、 命令がリタイアする度にタグを進める手段と、 前記タグ待ち行列(204)にあるタグをリサイクルして、新たな命令にそ のタグが割り当てられるようにする手段とをさらに備えることを特徴とするシス テム。 3. 請求項第1または2項記載のシステムであって、前記制御ユニッ ト(207)は、ある数の命令を要求する手段を備え、前記数は、その前のサイク ルでリタイアした命令の数以下であることを特徴とするシステム。 4. プログラムの順序より外れて命令を実行することが可能なマイク ロプロセサに於てプログラムの順序通りに命令データを保つ方法で、 各命令が発行されるに従ってそれにタグを割り当てるステップと、 各命令に対する実行データ(208)を、その命令に割り当てられた前記タ グにより示されたレジスタ・ファイル(202)内の位置に格納するステツプと、 前記タグを、タグが割り当てられた順番で、順次タグ・ファイル(204) に保つステップと、そして 前記タグ・ファイル(204)内の前記タグを、プログラムの順序通りに前 記実行データ(208)を読み出すために、前記レジスタ・ファイル(202)に適用 するステップとからなることを特徴とする方法。 5. 請求項第4項記載の方法であって、命令取り出しユニット(104) を用いて命令を発行するステップをさらに含むことを特徴とする方法。 6. 請求項第4または5項記載の方法であって、前記タグを保つ前記 ステップは、 命令がリタイアする度に前記タグ・ファイル(204)にあるタグを進める ステップと、 前記タグ・ファイル(204)の底(210)にあるタグを前記タグ・ファイル (204)の上部(212)にリサイクルして、新たな命令にそのタグが割り当てられ るようにするステップとを含むことを特徴とする方法。 7. 請求項第4〜6項の少なくともいずれかの記載の方法であって、 命令を要求するために命令取り出しユニットに要求信号(238)を送るステップ をさらに含むことを特徴とする方法。 8. 請求項第4〜6項の少なくとも記載の方法であって、ある数の命 令を要求するステップをさらを有し、前記数は、その前のサイクルでリタイアし た命令の数以下であることを特徴とする方法。

Claims (1)

  1. 【特許請求の範囲】 特許請求の範囲は以下の通りである。 1.命令にタグを割り当てるシステムであって、該システムは、 実行する命令を格納するメモリ・ユニットと、 前記メモリ・ユニットに接続され、実行する前に前記命令をデコードするた めの命令取り出しユニットと、 前記命令取り出しユニットに接続され、デコードされた命令を格納するため のレジスタ・ファイルと、 前記レジスタ・ファイルに接続され、デコードされた命令にタグを付けるた めのタグを保持するための複数のスロットから成る待ち行列と、 前記レジスタ・ファイル、及び、前記待ち行列に接続され、 (a)デコードされた命令にタグを割り当て、 (b)実行された命令の完了を監視し、そして (c)実行された命令の完了時に待ち行列のタグを進めるための、 制御ユニットから成り、さらに 前記レジスタ・ファイルは、デコードされた命令を、その命令に割り当てられた タグで決められたレジスタ・ファイル中のアドレス位置に格納することを特徴と するシステム。 2.請求項第1項のシステムであって、 前記レジスタ・ファイルは、複数の読み出しアドレス可能ポート及びそれに 対応した読み出し出力ポートを含み、 前記のスロットは各々、対応する前記読み出しアドレス可能ポートの1個に 接続され、 デコードされた命令は、そのデコードされた命令に割り当てられたタグによ って読み出し可能状態にされる読み出し出力ポートから読み出されることを特徴 とするシステム。
JP51601694A 1992-12-31 1993-12-16 命令実行を制御するため命令にタグを割り当てるシステム及び方法 Expired - Lifetime JP3531167B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/999,648 US5604912A (en) 1992-12-31 1992-12-31 System and method for assigning tags to instructions to control instruction execution
US07/999,648 1992-12-31
PCT/US1993/012309 WO1994016385A1 (en) 1992-12-31 1993-12-16 System and method for assigning tags to instructions to control instruction execution

Publications (2)

Publication Number Publication Date
JPH08505725A true JPH08505725A (ja) 1996-06-18
JP3531167B2 JP3531167B2 (ja) 2004-05-24

Family

ID=25546575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51601694A Expired - Lifetime JP3531167B2 (ja) 1992-12-31 1993-12-16 命令実行を制御するため命令にタグを割り当てるシステム及び方法

Country Status (6)

Country Link
US (2) US5604912A (ja)
EP (1) EP0677188B1 (ja)
JP (1) JP3531167B2 (ja)
KR (1) KR100295081B1 (ja)
DE (1) DE69305366T2 (ja)
WO (1) WO1994016385A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021166030A (ja) * 2020-04-07 2021-10-14 晶心科技股▲ふん▼有限公司Andes Technology Corporation 読み取りシフタを備えたプロセッサおよびそれを用いた制御方法

Families Citing this family (26)

* 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
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo Befehlsablauffolgeplanung von einem risc-superskalarprozessor
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
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
WO1994016384A1 (en) * 1992-12-31 1994-07-21 Seiko Epson Corporation System and method for register renaming
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US6035424A (en) * 1996-12-09 2000-03-07 International Business Machines Corporation Method and apparatus for tracking processing of a command
US5948098A (en) * 1997-06-30 1999-09-07 Sun Microsystems, Inc. Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines
US6237083B1 (en) 1998-02-13 2001-05-22 Advanced Micro Devices, Inc. Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence
US6883090B2 (en) * 2001-05-17 2005-04-19 Broadcom Corporation Method for cancelling conditional delay slot instructions
US6785804B2 (en) * 2001-05-17 2004-08-31 Broadcom Corporation Use of tags to cancel a conditional branch delay slot instruction
US6859874B2 (en) * 2001-09-24 2005-02-22 Broadcom Corporation Method for identifying basic blocks with conditional delay slot instructions
US20030041073A1 (en) * 2001-08-21 2003-02-27 Collier Josh D. Method and apparatus for reordering received messages for improved processing performance
US6813704B1 (en) * 2001-12-20 2004-11-02 Lsi Logic Corporation Changing instruction order by reassigning only tags in order tag field in instruction queue
US7398375B2 (en) * 2002-04-04 2008-07-08 The Regents Of The University Of Michigan Technique for reduced-tag dynamic scheduling and reduced-tag prediction
US7734901B2 (en) * 2005-10-31 2010-06-08 Mips Technologies, Inc. Processor core and method for managing program counter redirection in an out-of-order processor pipeline
US7711934B2 (en) * 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) * 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US10229066B2 (en) * 2016-09-30 2019-03-12 Arm Limited Queuing memory access requests
US11709681B2 (en) 2017-12-11 2023-07-25 Advanced Micro Devices, Inc. Differential pipeline delays in a coprocessor
US11567554B2 (en) * 2017-12-11 2023-01-31 Advanced Micro Devices, Inc. Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics
CN111966406B (zh) * 2020-08-06 2021-03-23 北京微核芯科技有限公司 乱序处理器中乱序执行队列的调度方法和装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US5255384A (en) * 1985-02-22 1993-10-19 Intergraph Corporation Memory address translation system having modifiable and non-modifiable translation mechanisms
JPH0762823B2 (ja) * 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
JP2684362B2 (ja) * 1986-06-18 1997-12-03 株式会社日立製作所 可変長データの記憶方式
US4811296A (en) * 1987-05-15 1989-03-07 Analog Devices, Inc. Multi-port register file with flow-through of data
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
JP2736092B2 (ja) * 1989-01-10 1998-04-02 株式会社東芝 バッファ装置
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
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
US5142633A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Preprocessing implied specifiers in a pipelined processor
US5109495A (en) * 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
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
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5120083A (en) * 1990-03-19 1992-06-09 Henkels & Mccoy, Inc. Expansion joint for conduit for cables
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
DE69127936T2 (de) * 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
JP2911278B2 (ja) * 1990-11-30 1999-06-23 松下電器産業株式会社 プロセッサ
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
JPH0621466Y2 (ja) * 1991-11-11 1994-06-08 キャピーインターナショナル株式会社 担 架
US5285527A (en) * 1991-12-11 1994-02-08 Northern Telecom Limited Predictive historical cache memory
US5398330A (en) * 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
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
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021166030A (ja) * 2020-04-07 2021-10-14 晶心科技股▲ふん▼有限公司Andes Technology Corporation 読み取りシフタを備えたプロセッサおよびそれを用いた制御方法

Also Published As

Publication number Publication date
EP0677188A1 (en) 1995-10-18
US5892963A (en) 1999-04-06
KR100295081B1 (ko) 2001-09-17
KR960700475A (ko) 1996-01-20
DE69305366T2 (de) 1997-02-20
JP3531167B2 (ja) 2004-05-24
US5604912A (en) 1997-02-18
WO1994016385A1 (en) 1994-07-21
EP0677188B1 (en) 1996-10-09
DE69305366D1 (de) 1996-11-14

Similar Documents

Publication Publication Date Title
JPH08505725A (ja) 命令実行を制御するため命令にタグを割り当てるシステム及び方法
JP2701179B2 (ja) データ処理システム
JP3587261B2 (ja) 命令処理制御方法
US4468736A (en) Mechanism for creating dependency free code for multiple processing elements
US4466061A (en) Concurrent processing elements for using dependency free code
US4725947A (en) Data processor with a branch target instruction storage
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
US5280593A (en) Computer system permitting switching between architected and interpretation instructions in a pipeline by enabling pipeline drain
EP0600611B1 (en) Super scalar computer system
US7624253B2 (en) Determining register availability for register renaming
JPS59132044A (ja) デ−タ処理システムにおいて複合デイスクリプタを発生する方法および装置
JPH10312282A (ja) 命令完了を改良するための方法および装置
US4562538A (en) Microprocessor having decision pointer to process restore position
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
US6108771A (en) Register renaming with a pool of physical registers
US5996063A (en) Management of both renamed and architected registers in a superscalar computer system
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US4456958A (en) System and method of renaming data items for dependency free code
EP0863460B1 (en) Management of renamed registers in a superscalar computer system

Legal Events

Date Code Title Description
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: 20040210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040223

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090312

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090312

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100312

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100312

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110312

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120312

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 9

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130312

Year of fee payment: 9

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350