JPH096610A - データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム - Google Patents

データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム

Info

Publication number
JPH096610A
JPH096610A JP8145470A JP14547096A JPH096610A JP H096610 A JPH096610 A JP H096610A JP 8145470 A JP8145470 A JP 8145470A JP 14547096 A JP14547096 A JP 14547096A JP H096610 A JPH096610 A JP H096610A
Authority
JP
Japan
Prior art keywords
operand
pointer
field
multiplexer
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8145470A
Other languages
English (en)
Inventor
Augustas Bjorksten Andrew
アンドリュー・オーガスタズ・ビョルクステン
Quan V Dock
ドック・クァン・ブイ
Richard E Fry
リチャード・エドマンド・フライ
Edward Philip James
ジェームズ・エドワード・フィリップス
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 JPH096610A publication Critical patent/JPH096610A/ja
Pending 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 複合命令の実行を促進する。 【解決手段】 複数のフィールドを有する命令が、実行
ユニット内の実行パイプの第1段にロードされる。その
フィールドは、レジスタ・ファイル内に記憶された値を
指定して第1および第2のオペランド・レジスタにそれ
ぞれロードするための第1および第2のオペランド・ポ
インタをそれぞれ含む第1および第2のフィールドを含
む。次に、第1および第2のオペランド・ポインタが、
第1と第2のフィールドの間で交換される。最後に、第
1のフィールド内に記憶された第2のオペランド・ポイ
ンタによって指定されるレジスタ・ファイル内の値が第
1のオペランド・レジスタにロードされ、第2のフィー
ルド内の第1のオペランド・ポインタによって指定され
るレジスタ・ファイル内の値が第2のオペランド・レジ
スタにロードされ、命令フィールド内のオペランド・ポ
インタによって指定されるレジスタ・ファイル内の値
が、その命令によって本来指定されるものとは異なるオ
ペランド・レジスタにロードされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に改良型デー
タ処理システムに関し、より詳細には、データ処理シス
テム内の実行ユニットにおいてオペランド・ラッチへの
オペランドの流れを制御するための方法およびシステム
に関する。さらに詳細には、本発明は、データ処理シス
テム内の実行ユニットにおいてオペランドがオペランド
・ラッチにロードされるときにオペランドを交換するた
めの方法およびシステムに関する。
【0002】
【従来の技術】データ処理システム、より具体的には、
中央演算処理装置(CPU)は、複合命令セット・コン
ピュータ(CISC)と縮小命令セット・コンピュータ
(RISC)の2つのカテゴリに分けることができる。
CISCでは、通常、「マイクロエンジン」で多数の複
雑な命令が実施される。そのようなマイクロエンジン
は、マイクロ命令セットを含み、そのようなマイクロ命
令で書かれたマイクロプログラムまたはマイクロコード
を実行して複合命令を解釈していた。
【0003】それに対して、RISCは、極めて簡単な
データ・フローと命令セットを有する。RISCの目的
は、マイクロコードを必要とせずにデータ・プロセッサ
を実施することである。しかし、RISC内の選択され
た命令を、状態機械、マイクロコードなどを利用して実
施した方が有利なこともある。これらの選択された命令
は「複合命令」と呼ばれるが、通常は複雑すぎて、他の
「アトミック命令」を実施する組合せ論理では実施でき
ない。そのような複合命令の1つの例は、浮動小数点除
算命令である。もう1つの例は、平方根を計算する命令
である。
【0004】RISCのいくつかの実施態様では、浮動
小数点除算演算は、指定されたアルゴリズムに従ってよ
り簡単なアトミック命令を実行する状態機械によって合
成またはエミュレートされる。
【0005】次のような浮動小数点除算演算を検討す
る。 a/b=Q
【0006】いくつかのデータ処理システムでは、この
浮動小数点除算演算を、以下に示す浮動小数点乗算に変
更するのが効率的である。 b'×Q'=a'
【0007】この場合、状態機械は、次のようなアルゴ
リズムを制御する。 (1)テーブルを使って初期推定値「Q」を探す。 (2)推定値「Q」に除数「b」を掛け、結果「a'」
を被除数「a」と比較して「偏差」を求め、次にその
「偏差」を利用して、事前定義された限界内に収まるま
で推定値「Q」を修正する。この「偏差」は、次の方程
式によって計算される。 a'−a=偏差
【0008】他のアルゴリズムも利用できるが、すべ
て、一連の「アトミック」命令を利用して所望の結果に
収束させる。そのようなアトミック命令は、実行ユニッ
ト内で、一連のより簡単な命令を制御するために利用さ
れる状態機械やマイクロコードなどを使用せずに実行さ
れる。アトミック命令は、通常、実行パイプと呼ばれる
パイプライン式組合せ論理で実行される。
【0009】所与のデータ処理システム・アーキテクチ
ャにおいて複合命令を合成するアルゴリズムを実行する
ためには、実行パイプにオペランドを送る前に、オペラ
ンド・レジスタ間でオペランドを交換またはスワップで
きることがしばしば必要である。たとえば、除算命令
が、アセンブリ言語命令で次のようなコードで指定され
るアーキテクチャでは、 DIV FRT,FRA,FRB 次の演算が実施される。 (FRT)=(FRA)/(FRB) ここで、FRAは、被除数オペランドを含むレジスタを
指定するオペランド・ポインタを記憶する命令ワード内
のフィールドであり、FRBは、除数オペランドを指定
するオペランド・ポインタを記憶する命令ワード内のフ
ィールドであり、FRTは、結果を記憶するレジスタを
指定するオペランド・ポインタを記憶する命令ワード内
のフィールドである。
【0010】上記で論じた除算アルゴリズムは、アルゴ
リズムの一部分として乗算演算の代わりをする。そのよ
うな乗算演算は、このデータ処理システム・アーキテク
チャにおいて、次のようなアセンブリ言語命令で実施さ
れ、 MUL FRT,FRA,FRC 次の演算が実施される。 (FRT)=(FRA)×(FRC) この乗算を利用して上記除算アルゴリズムを実施する際
には、FRAフィールドまたはFRCフィールド内の数
によって初期推定値「Q'」を指すことができるが、除
数「b」を指す数を含むFRBフィールドは、実行パイ
プにデータを提供するオペランド・レジスタに適正なオ
ペランドをロードするために、残りの被乗数オペランド
と交換しなければならない。すなわち、この乗算演算を
実行するには、FRBフィールド内のポインタが指定ま
たは指すオペランドを使用して、aオペランド・レジス
タまたはcオペランド・レジスタにbオペランドをロー
ドしなければならない。
【0011】従来技術では、このオペランドの交換は、
図1に示すように、オペランドをオペランド・ラッチに
ラッチする前に、オペランドを多重化することによって
実施されていた。
【0012】ここで、図1を参照すると、実行ユニット
10は、IBM Microelectronicsと
Motorola Semiconductorから
「Power PC」の商標で販売されているスーパー
スカラー・マイクロプロセッサなどの、スーパースカラ
ー・データ処理システムにおける浮動小数点実行ユニッ
トの詳細なブロック図である。「Power PC」ア
ーキテクチャは、「PowerPC 603-RISC Microprocessor
User's Manual」Copyright 1994 IBM Part No.MPR603
UMU-01を含む様々なユーザーズ・マニュアルにより詳細
に記載されている。
【0013】浮動小数点実行ユニット10は、命令待ち
行列12中に命令を受け取る。浮動小数点実行ユニット
10で受け取った命令は、命令待ち行列12の最下部か
ら実行される。図示したように、命令14が、命令待ち
行列12内の最下部位置にある。
【0014】この例では、命令14は、命令コード・フ
ィールド16、目標レジスタ・ポインタ・フィールド1
8、aオペランド・レジスタ・ポインタ・フィールド2
0、bオペランド・レジスタ・ポインタ・フィールド2
2、cオペランド・レジスタ・ポインタ・フィールド2
4、目標リネーム・バッファ・ポインタ・フィールド2
6、aオペランド・リネーム・バッファ・ポインタ・フ
ィールド28、bオペランド・リネーム・バッファ・ポ
インタ・フィールド30、cオペランド・リネーム・バ
ッファ・ポインタ・フィールド32、aオペランド完了
ビット34、bオペランド完了ビット36、cオペラン
ド完了ビット38を含む複数のフィールドを有する。
【0015】命令コード・フィールド16は、浮動小数
点実行ユニット10内で実行される特定の命令を指定す
るデータを含む。フィールド18〜24およびフィール
ド26〜32はそれぞれ、レジスタ・ファイル40内の
レジスタを指すまたは指定するデータまたはポインタを
含む。レジスタ・ファイル40は、浮動小数点ユニット
・リネーム・バッファ42と浮動小数点レジスタ44を
含む。レジスタ・ファイル40内の各レジスタは、たと
えば、65ビットのデータを含むデータ・ワードを記憶
することができる。
【0016】フィールド18〜24は、浮動小数点レジ
スタ44内の特定のレジスタを指定するポインタを記憶
するために利用される。同様に、フィールド26〜32
は、浮動小数点ユニット・リネーム・バッファ42内の
レジスタを指定するポインタを記憶するために利用され
る。完了ビット34〜38は、命令14にオペランドを
提供する先行の命令の状況に基づいて、フィールド20
〜24あるいは28〜32から対応するポインタを選択
するために利用される。たとえば、aオペランドを計算
またはロードする命令が「終了」すると、aオペランド
が、浮動小数点ユニット・リネーム・バッファ42内の
レジスタに記憶される。その同じ命令が「完了」する
と、aオペランドを、浮動小数点実行ユニット10によ
って使用される構成レジスタである浮動小数点レジスタ
44に移動することができる。浮動小数点ユニット・リ
ネーム・バッファ42は、後続の命令をプログラム順に
完了する前に順序外れで実行された命令が「終了」した
ときに使用されるレジスタを含む。
【0017】したがって、aオペランド・レジスタ・ポ
インタ・フィールド20、bオペランド・レジスタ・ポ
インタ・フィールド22、およびcオペランド・レジス
タ・ポインタ・フィールド24はそれぞれ、浮動小数点
レジスタ44内のレジスタを指すポインタを含む。これ
らのポインタは、命令コード・フィールド16によって
指定された命令を実行するために使用されるそれぞれの
オペランドを指定するために使われる。同様に、aオペ
ランド・リネーム・バッファ・ポインタ・フィールド2
8、bオペランド・リネーム・バッファ・ポインタ・フ
ィールド30、およびcオペランド・リネーム・バッフ
ァ・ポインタ・フィールド32はそれぞれ、浮動小数点
ユニット・リネーム・バッファ42内のレジスタを指定
するポインタを含む。
【0018】命令コード・フィールド16内のデータ
は、命令が「アトミック」命令の場合はすぐに命令レジ
スタ46にロードされる。命令コード・フィールド16
内の命令が「複合」命令の場合は、アルゴリズム状態機
械48が制御権を得て、一連のアトミック命令を命令レ
ジスタ46に入れる。また、目標リネーム・バッファ・
ポインタ・フィールド26内のポインタが、命令レジス
タ46にロードされ、命令14の結果を記憶するレジス
タ・アドレスを指定する。命令レジスタ46はまた、実
行パイプ内の命令の実行を開始する命令コードを受け取
るので、実行パイプの第1段階と呼ばれることもある。
【0019】算術制御50は、命令レジスタ46にロー
ドされた命令に従って仮数実行パイプ52と指数実行パ
イプ54を制御する。実行後、命令レジスタ46内の命
令の結果は、レジスタ・ファイル40内のレジスタにロ
ードされ、あるいは一時レジスタ56内に記憶され、あ
るいはマルチプレクサ58〜62に直接戻してロードさ
れる。命令レジスタ46内の命令の結果がすぐに必要な
場合は、その結果がマルチプレクサ58〜62に転送さ
れる。結果がすぐに必要でない場合は、一時レジスタ5
6を使って、結果を一時的に記憶することができる。命
令の最終的な答は、レジスタ・ファイル40内の浮動小
数点ユニット・リネーム・バッファ42に記憶するか、
あるいは完了論理64の制御下で浮動小数点レジスタ4
4に記憶することができる。算術制御50は、書込みア
ドレスおよび書込みイネーブル信号を浮動小数点ユニッ
ト・リネーム・バッファ42に提供し、完了論理64
は、書込みアドレスおよび書込みイネーブル信号を浮動
小数点レジスタ44に提供する。
【0020】たとえば、aオペランド・レジスタ・ポイ
ンタ・フィールド20内のポインタで指定されたオペラ
ンドを、bオペランド・ラッチ66にロードしなければ
ならない場合、そのオペランド値が、マルチプレクサ6
0によって、スワップされ、または交換され、または多
重化され、マルチプレクサ60は、アルゴリズム状態機
械48からのマルチプレクサ制御信号に従ってbオペラ
ンド・ラッチ66にロードするbオペランドを選択す
る。同様に、aオペランドおよびcオペランドは、アル
ゴリズム状態機械48からの信号の制御下で、マルチプ
レクサ58および62によってそれぞれ選択される。
【0021】したがって、従来技術においては、aオペ
ランド、bオペランド、およびcオペランドをオペラン
ド・ラッチ66にロードする際に、これらのオペランド
のデータ・フローを交換または制御するために、3つの
マルチプレクサを必要とする。これらのマルチプレクサ
58〜62はそれぞれ5つの入力を有し、各入力が65
ビット幅である。したがって、図1に示したような適切
なオペランド・ラッチにオペランドを多重化するには、
975本の入力線が必要である。
【0022】当業者には明らかなように、従来技術の不
都合な点は、オペランドを交換するためのマルチプレク
サへの多数の入力線が、半導体デバイス内にかなりのデ
ッド・スペースを必要とすること、およびそのようなマ
ルチプレクサのデータ・フローによってレジスタ・ファ
イル40とオペランド・ラッチ66の間で遅延が生じる
ことである。また、従来技術では、マルチプレクサのす
べての入力線のキャパシタンスを充電し放電しなければ
ならないため、消費電力も問題になる。また、複数のマ
ルチプレクサの複数の入力に接続されたすべてのデータ
線を駆動するためにより大型で大電力のトランジスタが
必要なため、消費電力とデッド・スペースも問題とな
る。
【0023】
【発明が解決しようとする課題】したがって、本発明の
一目的は、改良されたデータ処理システムを提供するこ
とである。
【0024】本発明のもう1つの目的は、データ処理シ
ステム内の実行ユニットにおけるオペランド・ラッチへ
のオペランドの流れを制御するための方法およびシステ
ムを提供することである。
【0025】本発明のもう1つの目的は、データ処理シ
ステム内の実行ユニットにおいてオペランドをオペラン
ド・ラッチにロードする際にオペランドを交換するため
の方法およびシステムを提供することである。
【0026】
【課題を解決するための手段】前述の目的は、以下に述
べるようにして達成される。データ処理システムにおい
て、複合命令の実行中に、データ処理システムによって
実行ユニット内でオペランドを交換しそのようなオペラ
ンドを複数のオペランド・レジスタにロードするための
方法およびシステムを開示する。第1のオペランドと第
2のオペランドを含む複数のオペランドが、レジスタ・
ファイル内に記憶される。複数のフィールドを有する命
令が、実行ユニットの命令待ち行列内にロードされる。
そのようなフィールドは、それぞれ第1および第2のオ
ペランド・ポインタを含む第1および第2のフィールド
を含み、各オペランド・ポインタは、それぞれ第1およ
び第2のオペランド・レジスタにロードすべき、レジス
タ・ファイル内に記憶された値を指定する。次に、第1
および第2のオペランド・ポインタが、第1と第2のフ
ィールドの間で交換される。最後に、第1のフィールド
内に記憶された第2のオペランド・ポインタによって指
定されるレジスタ・ファイル内の値が、第1のオペラン
ド・レジスタにロードされ、第2のフィールド内の第1
のオペランド・ポインタによって指定されるレジスタ・
ファイル内の値が、第2のオペランド・レジスタにロー
ドされ、命令フィールド内のオペランド・ポインタによ
って指定されたレジスタ・ファイル内の値が、その命令
によって本来指定されるものとは異なるオペランド・レ
ジスタにロードされ、それにより、実行ユニット内の複
合命令の実行が促進される。
【0027】
【発明の実施の形態】次に図面、特に図2を参照すると
本発明の方法およびシステムによるスーパースカラー・
データ処理システムが示されている。スーパースカラー
・プロセッサは、多重パイプラインに複数の独立した命
令を出して複数の命令を並列に実行できるようにするも
のである。図2に示したように、スーパースカラー・デ
ータ処理システム100は、5つの独立した実行ユニッ
トと2つのレジスタ・ファイルを有する。この5つの独
立した実行ユニットは、ブランチ処理ユニット(BP
U)102、ロード/記憶ユニット104、整数ユニッ
ト106、および浮動小数点ユニット108を含む。レ
ジスタ・ファイルは、整数オペランド用の汎用レジスタ
・ファイル(GPR)107と、単精度または倍精度の
浮動小数点オペランド用の浮動小数点レジスタ・ファイ
ル(FPR)109とを含む。さらに、GPR107お
よびFPR109は共に、1組のリネーム・レジスタを
含むことができる。たとえば、FPR109は、図1の
浮動小数点レジスタ44などの浮動小数点レジスタと、
図1の浮動小数点ユニット・リネーム・バッファ42な
どのレジスタを含むリネーム・バッファの両方を含む。
【0028】命令ユニット110は、順次フェッチャ1
12、命令待ち行列114、ディスパッチ・ユニット1
16、およびブランチ処理ユニット102を含む。命令
ユニット110は、順次フェッチャ112とブランチ処
理ユニット102から受け取った情報に基づいて、次に
取り出す命令のアドレスを決定する。
【0029】順次フェッチャ112は、命令キャッシュ
118から命令を取り出し、その命令を命令待ち行列1
14にロードする。ブランチ命令は、順次フェッチャ1
12によって識別され、命令待ち行列114を通らずに
直接ブランチ処理ユニット102に転送される。そのよ
うなブランチ命令は、(ブランチが無条件の場合または
必要条件が実現可能な場合は)実行されて解決され、あ
るいは予測される。非ブランチ命令は、実行ユニットの
ビジー状態と、リネーム・バッファおよび完了バッファ
の可用性と、いくつかの命令の直列化挙動とで決まるデ
ィスパッチ速度で、命令待ち行列114から出される。
命令のディスパッチは、プログラム順に行なわれる。B
PU102は、未解決の条件付きブランチの静的ブラン
チ予測を利用して、予測した目標命令ストリームから命
令ユニット110が命令を取り出せるようにし、同時に
条件付きブランチを評価する。ブランチ処理ユニット1
02は、無条件ブランチ、あるいは実行パイプライン内
で処理中の命令の影響を受けない条件付きブランチにつ
いてブランチ命令を展開する。
【0030】命令待ち行列114は、順次フェッチャ1
12によってロードされるいくつかの命令を保持する。
順次フェッチャ112は、命令待ち行列114内の空間
を満杯に保つように命令を連続的にロードする。命令
は、ディスパッチ・ユニット116から各実行ユニット
にディスパッチされる。動作中、命令は、命令キャッシ
ュ118から取り出され、命令待ち行列114またはブ
ランチ処理ユニット102に入れられる。命令待ち行列
114に入った命令は、命令待ち行列114から様々な
実行ユニットに出される。命令待ち行列114は、スー
パースカラー・データ処理システム100用のマスタ・
パイプラインのバックボーンであり、たとえば6入力の
待ち行列を有する。命令待ち行列114を充填している
間に、命令キャッシュ118内に順次フェッチャ112
からの要求が見つからない場合は、メモリ・アクセスの
調停がはじまる。
【0031】データ・キャッシュ126は、ロード/記
憶ユニット104用のキャッシュ・メモリを提供する。
命令メモリ管理ユニット128とデータ・メモリ管理ユ
ニット130は、それぞれ命令およびデータを求めて仮
想メモリおよび物理メモリにアクセスする。メモリ管理
ユニットは、アドレス・トランザクションを実行し、キ
ャッシュ・ヒットが起こったかそれともキャッシュ・ミ
スが起こったかを判定する。バス・インターフェース・
ユニット120は、バスの調停に関与して、外部アドレ
スおよびデータ・バスへのアクセスを制御する。外部ア
ドレス・バスは、参照数字122で示し、外部データ・
バスは参照数字124で示してある。
【0032】次に、図3を参照すると、本発明の方法お
よびシステムによる浮動小数点実行ユニットが示してあ
る。図示したように、浮動小数点実行ユニット210
は、図2のディパッチ・ユニット116から命令を受け
取る命令待ち行列212を含む。命令214などの命令
が、命令待ち行列212の最下部から実行される。
【0033】命令214は、命令コード・フィールド2
16、目標レジスタ・ポインタ・フィールド218、a
オペランド・レジスタ・ポインタ・フィールド220、
bオペランド・レジスタ・ポインタ・フィールド22
2、cオペランド・レジスタ・ポインタ・フィールド2
24、目標リネーム・バッファ・ポインタ・フィールド
226、aオペランド・リネーム・バッファ・ポインタ
・フィールド228、bオペランド・リネーム・バッフ
ァ・ポインタ・フィールド230、cオペランド・リネ
ーム・バッファ・ポインタ・フィールド232、目標レ
ジスタ完了ビット233、aオペランド完了ビット23
4、bオペランド完了ビット236、およびcオペラン
ド完了ビット238を含む。図1に関して説明したよう
に、前記のフィールドはそれぞれ、命令214の実行に
必要なデータを含む。命令コード・フィールド216
は、浮動小数点実行ユニット210によって実行される
特定の命令を指定するデータを含む。フィールド218
〜232は、レジスタ・ファイル240内のレジスタを
指す。より詳細には、フィールド218〜224は、浮
動小数点レジスタ244内のレジスタを指すデータを含
み、フィールド226〜232は、浮動小数点ユニット
・リネーム・バッファ242内のレジスタを指すポイン
タを含む。
【0034】完了ビット233〜238は、浮動小数点
レジスタ244から読み取るか、それとも浮動小数点ユ
ニット・リネーム・バッファ242から読み取りそこに
書き込むかを示すために使用される。特定のオペランド
を計算したまたはレジスタにロードした命令が完了した
とき、浮動小数点レジスタ244からその特定の命令用
のオペランドが読み取られる。オペランドを計算するか
またはレジスタにロードする命令が完了しない場合は、
浮動小数点ユニット・リネーム・バッファ242からオ
ペランドを読み取ることができる。したがって、浮動小
数点レジスタ244および浮動小数点ユニット・リネー
ム・バッファ242の2組のレジスタがある理由は、従
来技術では既知のように、順序外れまたは投機的な命令
の実行を促進するためである。
【0035】命令レジスタ246は、命令を、アトミッ
ク命令を実行する場合には命令コード・フィールド21
6から受け取り、複合命令を実行する場合にはアルゴリ
ズム状態機械248から受け取る。また、命令レジスタ
246は、実行パイプ内での命令の実行を開始する命令
コードを受け取るので、第1段階の実行パイプと呼ばれ
ることもある。
【0036】算術制御250は、命令レジスタ246内
の命令によって指示される結果を出すように仮数実行パ
イプ252と指数実行パイプ254を制御する。命令を
実行することによって出たそのような結果は、次に、複
合命令を実行するために実施される特定のアルゴリズム
の必要に応じて、オペランド・ラッチ266またはレジ
スタ・ファイル240に直接ロードされる。オペランド
・ラッチ266は、aオペランド・ラッチ、bオペラン
ド・ラッチ、およびcオペランド・ラッチを含む。これ
らのオペランド・ラッチに記憶されたオペランドは、実
行パイプ内で、算術制御250の制御下で処理される。
完了論理264は、書込みアドレスおよび書込みイネー
ブル信号を浮動小数点レジスタ244に提供するために
利用される。
【0037】本発明の重要な態様によれば、命令214
のフィールド218〜238内に記憶されるポインタを
多重化することによって、命令214のフィールド内の
ポインタで指定されたオペランドを、オペランド・ラッ
チ266内の選択されたオペランド・ラッチにロードす
ることができる。この多重化は、マルチプレクサ270
〜292によって実施される。図示したように、フィー
ルド218〜224は、それぞれマルチプレクサ270
〜276に入力され、アルゴリズム状態機械248から
の信号の制御下で、任意のフィールド218〜224内
の任意のポインタを、任意の他のフィールド218〜2
24とスワップまたは交換することができる。
【0038】同様に、フィールド226〜232は、そ
れぞれマルチプレクサ278〜284に入力され、アル
ゴリズム状態機械248からの信号の制御下で、任意の
フィールド226〜232を、任意の他のフィールド2
26〜232と交換またはスワップすることができる。
同様に、完了ビット233〜238は、それぞれマルチ
プレクサ286〜292に入力され、任意の完了ビット
233〜238を、任意の他の完了ビット233〜23
8と交換またはスワップすることができる。
【0039】動作中、アルゴリズム状態機械248が、
aオペランド・レジスタ・ポインタ・フィールド220
内の指定されたオペランドをbオペランド・ラッチ26
6にロードすることを必要とするアトミック命令の実行
を行う場合は、アルゴリズム状態機械248は、マルチ
プレクサ272および274にマルチプレクサ制御信号
を送って、フィールド220内のポインタをフィールド
222中に入れ、フィールド222内のポインタをフィ
ールド220中に入れる。この場合、それらのポインタ
によって提供される読取りアドレスが、bオペランド・
レジスタ・ポインタ・フィールド222から浮動小数点
レジスタ244に適用されるので、bオペランド・ラッ
チ266に、aオペランド・レジスタ・ポインタ・フィ
ールド220内に記憶されていたポインタによって以前
に指されていたオペランドがロードされる。同様に、浮
動小数点ユニット・リネーム・バッファ242内のレジ
スタを指定するフィールドがスワップされ、それにより
同様の結果が得られる。
【0040】通常、浮動小数点レジスタ244を指すポ
インタが交換されるときは、それと対応する浮動小数点
ユニット・リネーム・バッファ242を指すポインタも
交換され、フィールド218〜224およびフィールド
226〜232内のポインタの交換に対応して完了ビッ
ト233〜238が交換される。
【0041】本発明のもう1つの重要な態様によれば、
アルゴリズム状態機械248の制御下においてアルゴリ
ズムで計算された中間結果が、図1に示したような一時
レジスタ56ではなく、目標リネーム・バッファ・ポイ
ンタ・フィールド226内のポインタによって指定され
るレジスタ内に記憶される。一時結果などを記憶するた
めの書込みアドレスおよび書込みイネーブル信号は、命
令レジスタ246と算術制御250を介して、フィール
ド226から浮動小数点ユニット・リネーム・バッファ
242に供給される。したがって、アルゴリズムにおけ
る後続の命令でオペランドに一時結果が必要なとき、本
発明に従って、フィールド226内に記憶されたポイン
タが、フィールド228〜232のうちの1つと交換さ
れ、一時結果が、a、b、およびcオペランド・ラッチ
266にロードされる。
【0042】次に、図4を参照し、本発明による方法お
よびシステムによるデータ処理システムにおいて、複合
命令の実行中にオペランドを交換するプロセスの詳細な
フローチャートを示す。図示したように、このプロセス
は、ブロック300で始まり、その後ブロック302に
移る。ブロック302では、図3の命令待ち行列212
内の命令214など、命令待ち行列内の次の命令を復号
する。命令は、実行ユニットによってどのような種類の
命令が実行されるかを決定するために復号される。
【0043】次に、ブロック304で、新しく復号され
た命令が「複合」命令かどうかを判定する。復号された
命令が複合命令でない場合、その命令は「アトミック」
命令であり、ブロック306でそのアトミック命令が実
行される。アトミック命令の実行後、処理はブロック3
02に進み、次の命令が復号される。
【0044】新しく復号された命令が複合命令の場合
は、ブロック308で、アルゴリズム状態機械248
(図3を参照)が、複合命令アルゴリズムを実行するた
めの最初の命令を、命令レジスタ246(図3を参照)
にロードする。次に、ブロック310で、その命令が、
現在実行されている複合命令内の命令ワード・フィール
ドによって指定されるものとは異なるオペランド・レジ
スタ内のオペランドを必要とするかどうかを判定する。
命令フィールド内のポインタが、オペランドを適正なオ
ペランド・レジスタ内に適切にロードするように設定さ
れていない場合は、ブロック312で、アルゴリズム状
態機械が、命令ワード内のポインタ・フィールドに結合
されたマルチプレクサを、そのマルチプレクサが命令待
ち行列内の命令ワードのフィールドにあるオペランド・
ポインタを交換できるように設定する。次いで、ブロッ
ク314で、アルゴリズム状態機械は、マルチプレクサ
に信号を送って、命令待ち行列の中の命令ワードのフィ
ールド内のオペランド・ポインタを交換するよう指示す
る。
【0045】オペランド・ポインタを交換し、適切なオ
ペランドを適正なオペランド・ラッチにロードした後、
ブロック316で、アルゴリズム状態機械248からロ
ードされた命令レジスタ246(図3を参照)内の命令
を実行する。ブロック310を再び参照すると、命令が
オペランドを交換する必要がない場合は、ブロック31
0からブロック316に進んで命令を実行する。
【0046】命令を実行した後で、アルゴリズムが一時
結果を記憶する必要がある場合は、ブロック318で、
目標リネーム・バッファ・レジスタに一時結果を記憶す
ることができる。次に、ブロック320で、アルゴリズ
ムが終了したかどうかを判定する。アルゴリズムが終了
していない場合は、ブロック308で、アルゴリズム状
態機械が、次の命令をロードする。アルゴリズムが終了
した場合は、ブロック302に戻り、実行ユニットが実
行すべき次の命令を復号する。
【0047】本発明を、スーパースカラー・データ・プ
ロセッサ内の浮動小数点実行ユニットの状況で説明した
が、当業者は、本発明を、命令ワードによって指定され
たオペランドを、オペランド・ラッチにロードする前に
交換しなければならないような他の状況にも適用できる
ことを理解されよう。さらに、RISCにおいてアルゴ
リズムを実施して複合命令を実行するときは、本発明を
利用して、目標リネーム・バッファ・レジスタ内のその
ようなアルゴリズムで計算された中間結果を一時的に記
憶することができる。
【0048】上記に開示した本発明の実施形態において
は、12個のマルチプレクサを使って、命令ワード内の
選択したフィールドの内容を多重化する。これらのマル
チプレクサのうち4つは、それぞれ4つの5ビット入力
を有する。これらのマルチプレクサのうち他の4つは、
それぞれ4つの4ビット入力を有する。そして、これら
のマルチプレクサの最後の4つは、それぞれ4つの1ビ
ット入力を有する。したがって、マルチプレクサの入力
線の合計は160本である。当業者は、本発明により、
マルチプレクサへの入力線の数が975本から160本
に減少し、815本の入力線が節約されることを理解さ
れよう。さらに、目標リネーム・バッファ・レジスタ内
に中間結果を一時的に保存するので、データ処理システ
ムにおいて、図1のレジスタ56などの一時レジスタが
不要になり、スペースがさらに節約でき、複雑さが減少
する。
【0049】前述した本発明の実施形態では、複数のオ
ペランド・ポインタをスワップまたは交換するが、本発
明の方法およびシステムを利用することにより、ポイン
タを交換せずに単一のオペランド・ポインタを移動する
こともできる。たとえば、アルゴリズム状態機械によっ
て、単一のオペランドをaオペランド・ラッチにロード
する命令を、そのオペランドをbオペランド・ラッチに
ロードする別の命令に変更することができる。この場
合、本発明の方法およびシステムを利用して、オペラン
ド・ポインタをaオペランド・レジスタ・ポインタ・フ
ィールドからbオペランド・レジスタ・ポインタ・フィ
ールドに移動することができる。
【0050】前述の本発明の好ましい実施形態の説明
は、例示および説明のために提示したものであり、網羅
的なものではなく、本発明をここに開示した詳細な形態
に限定するものでもない。上記の教示を考慮すれば、明
らかに修正または変更が可能である。この実施形態は、
本発明の原理およびその実際の用途を最も良く例示し、
かつ、当業者が本発明を、企図した特定の使用法に適し
た様々な実施形態で様々な修正を加えて利用できるよう
に選択し説明した。そのようなすべての修正および変形
は、公正、合法的、かつ衡平法的に権限を与えられた範
囲に従って解釈する限り、頭記の特許請求の範囲によっ
て決定される本発明の範囲内に含まれる。
【0051】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0052】(1)データ処理システムにおいて、複合
命令の実行中に前記データ処理システム内の実行ユニッ
ト内でオペランドを交換し前記オペランドを複数のオペ
ランド・レジスタにロードするための方法であって、前
記実行ユニットが命令待ち行列を有し、前記実行ユニッ
トが、前記オペランド・レジスタに結合されたレジスタ
・ファイル内に記憶された前記複数のオペランドを指す
複数のオペランド・ポインタを有する命令を実行し、前
記複数のオペランドが第1のオペランドと第2のオペラ
ンドを有し、複数のフィールドを有し、第1のフィール
ドが、第1のオペランド・レジスタにロードすべき、前
記レジスタ・ファイル内に記憶された値を指定する第1
のオペランド・ポインタを含み、第2のフィールドが、
第2のオペランド・レジスタにロードすべき、前記レジ
スタ・ファイル内に記憶された値を指定する第2のオペ
ランド・ポインタを含む、命令を前記命令待ち行列内に
ロードする段階と、前記第1のフィールド内の前記第1
のオペランド・ポインタを、前記第2のフィールド内の
前記第2のオペランド・ポインタと交換する段階と、前
記第1のフィールド内に記憶された前記第2のオペラン
ド・ポインタによって指定される前記レジスタ・ファイ
ル内に記憶された値を、前記第1のオペランド・レジス
タにロードする段階と、前記第2のフィールド内に記憶
された前記第1のオペランド・ポインタによって指定さ
れる前記レジスタ内に記憶された値を、前記第2のオペ
ランド・レジスタにロードする段階とを含み、前記命令
の前記フィールド内のオペランド・ポインタによって指
定される前記レジスタ・ファイル内の値が、前記複合命
令の実行中に前記命令によって本来指定されるものとは
異なるオペランド・レジスタにロードされることを特徴
とする方法。 (2)前記第1のフィールドが第1のマルチプレクサの
出力に結合され、前記第2のフィールドが第2のマルチ
プレクサの出力に結合され、前記第1のマルチプレクサ
への入力が前記第2のフィールドに結合され、前記第2
のマルチプレクサへの入力が前記第1のフィールドに結
合されており、前記第1のフィールド内の前記第1のオ
ペランド・ポインタを前記第2のフィールド内の前記第
2のオペランド・ポインタと交換する段階が、前記第1
のオペランド・ポインタを前記第2のマルチプレクサ経
由で前記第2のフィールドに移動し、前記第2のオペラ
ンド・ポインタを前記第1のマルチプレクサ経由で前記
第1のフィールドに移動する段階を含むことを特徴とす
る、上記(1)に記載のオペランドを交換し前記オペラ
ンドを複数のオペランド・レジスタにロードするための
方法。 (3)前記実行ユニット内の前記命令待ち行列中に複合
命令があることを検出する段階と、前記複合命令の検出
に応答して、代替命令を実行し中間結果を出す段階と、
前記中間結果を、前記命令のリネーム・バッファ・ポイ
ンタ・フィールドに記憶されたリネーム・バッファ・ポ
インタによって指定されるリネーム・バッファ内に一時
的に記憶する段階と、前記第1のフィールド内の前記第
1のオペランド・ポインタを、前記リネーム・バッファ
・ポインタ・フィールド内のリネーム・バッファ・ポイ
ンタと交換する段階と、前記第1のフィールド内に記憶
された前記リネーム・バッファ・ポインタによって指定
される前記リネーム・バッファ内に記憶された値を、前
記第1のオペランド・レジスタにロードする段階とを含
むことを特徴とする、上記(1)に記載のオペランドを
交換し複数のオペランド・レジスタに前記オペランドを
ロードするための方法。 (4)前記第1のフィールドが第1のマルチプレクサの
出力に結合され、前記リネーム・バッファ・ポインタ・
フィールドが第2のマルチプレクサの出力に結合され、
前記第1のマルチプレクサへの入力が前記リネーム・バ
ッファ・ポインタ・フィールドに結合され、前記第2の
マルチプレクサへの入力が前記第1のフィールドに結合
されており、前記第1のフィールド内の前記第1のオペ
ランド・ポインタを前記リネーム・バッファ・ポインタ
・フィールド内の前記リネーム・バッファ・ポインタと
交換する前記段階が、前記第1のオペランド・ポインタ
を前記第2のマルチプレクサ経由で前記リネーム・バッ
ファ・ポインタ・フィールドに移動し、前記リネーム・
バッファ・ポインタを前記第1のマルチプレクサ経由で
前記第1のフィールドに移動する段階を含むことを特徴
とする、上記(3)に記載のオペランドを交換し前記オ
ペランドを複数のオペランド・レジスタにロードするた
めの方法。 (5)前記実行ユニットが、前記第1および第2のマル
チプレクサに結合された、制御信号を送って複合命令を
合成するアルゴリズムの実行を制御するためのアルゴリ
ズム状態機械を含み、前記第1のオペランド・ポインタ
を前記第2のマルチプレクサ経由で前記第2のフィール
ドに移動し、前記第2のオペランド・ポインタを前記第
1のマルチプレクサ経由で前記第1のフィールドに移動
する段階が、前記制御信号の受信に応答して、前記第1
のマルチプレクサを前記リネーム・バッファ・ポインタ
を出力するように設定する段階と、前記制御信号の受信
に応答して、前記第2のマルチプレクサを前記第1のオ
ペランド・ポインタを出力するように設定する段階と、
前記アルゴリズム状態機械からの前記制御信号に応答し
て、前記第1のオペランド・ポインタを前記第2のマル
チプレクサ経由で前記リネーム・バッファ・ポインタ・
フィールドに移動し、前記リネーム・バッファ・ポイン
タを前記第1のマルチプレクサ経由で前記第1のフィー
ルドに移動する段階とを含むことを特徴とする、上記
(4)に記載のオペランドを交換し前記オペランドを複
数のオペランド・レジスタにロードするための方法。 (6)前記実行ユニットが、前記第1および第2のマル
チプレクサに結合された、制御信号を送って複合命令を
合成するアルゴリズムの実行を制御するためのアルゴリ
ズム状態機械を含み、前記第1のオペランド・ポインタ
を前記第2のマルチプレクサ経由で前記第2のフィール
ドに移動し、前記第2のオペランド・ポインタを前記第
1のマルチプレクサ経由で前記第1のフィールドに移動
する段階が、前記制御信号の受信に応答して、前記第1
のマルチプレクサを前記第2のオペランド・ポインタを
出力するように設定する段階と、前記制御信号の受信に
応答して、前記第2のマルチプレクサを前記第1のオペ
ランド・ポインタを出力するように設定する段階と、前
記アルゴリズム状態機械からの前記制御信号に応答し
て、前記第1のオペランド・ポインタを前記第2のマル
チプレクサ経由で前記第2のフィールドに移動し、前記
第2のオペランド・ポインタを前記第1のマルチプレク
サ経由で第1のフィールドに移動する段階とを含むこと
を特徴とする、上記(2)に記載のオペランドを交換し
前記オペランドを複数のオペランド・レジスタにロード
する方法。 (7)前記複数のフィールドを有し、第3のフィールド
が、第1のオペランド・レジスタにロードすべき、リネ
ーム・バッファ・レジスタ・ファイル内に記憶された値
を指定するための第3のオペランド・ポインタを含み、
第4のフィールドが、前記第2のオペランド・レジスタ
にロードすべき、前記リネーム・バッファ・レジスタ・
ファイル内に記憶された値を指定するための第4のオペ
ランド・ポインタを含む命令を前記命令待ち行列内にロ
ードする段階と、前記第1のフィールド内の前記第1の
オペランド・ポインタを前記第2のフィールド内の前記
第2のオペランド・ポインタと交換するのに応答して、
前記第3のフィールド内の前記第3のオペランド・ポイ
ンタを前記第4のフィールド内の前記第4のオペランド
・ポインタと交換する段階とを含むことを特徴とする、
上記(1)に記載のオペランドを交換して前記オペラン
ドを複数のオペランド・レジスタにロードするための方
法。 (8)前記複数のフィールドを有し、第5のフィールド
が、前記第1のオペランド・レジスタにロードすべき2
つの値のうちの一方を指定するために、前記第1のオペ
ランド・ポインタまたは前記第3のオペランド・ポイン
タを選択する第1のビットを含み、第6のフィールド
が、前記第2のオペランド・レジスタにロードすべき2
つの値のうちの一方を指定するために、前記第2のオペ
ランド・ポインタまたは前記第4のオペランド・ポイン
タを選択する第2のビットを含む、命令を前記命令待ち
行列にロードする段階と、前記第1のフィールド内の前
記第1のオペランド・ポインタを前記第2のフィールド
内の前記第2のオペランド・ポインタと交換するのに応
答して、前記第5のフィールド内の前記第1のビットを
前記第6のフィールド内の前記第2のビットと交換する
段階とをさらに含むことを特徴とする、上記(7)に記
載のオペランドを交換して前記オペランドを複数のオペ
ランド・レジスタにロードするための方法。 (9)前記命令のリネーム・バッファ・ポインタ・フィ
ールド内に記憶されたリネーム・バッファ・ポインタに
よって指定されるリネーム・バッファ内に前記中間結果
を一時的に記憶する段階が、前記命令の目標リネーム・
バッファ・ポインタ・フィールド内に記憶された目標リ
ネーム・バッファ・ポインタによって指定されるリネー
ム・バッファ内に前記中間結果を一時的に記憶する段階
を含むことを特徴とする、上記(3)に記載のオペラン
ドを交換し前記オペランドを複数のオペランド・レジス
タにロードするための方法。 (10)複合命令の実行中に、実行ユニットにおいてオ
ペランドを交換し前記オペランドを複数のオペランド・
レジスタにロードするためのデータ処理システムであっ
て、前記実行ユニットが、命令待ち行列を有し、前記実
行ユニットが、前記オペランド・レジスタに結合された
レジスタ・ファイル内に記憶された前記複数のオペラン
ドを指す複数のオペランド・ポインタを有する命令を実
行し、第1のオペランドと第2のオペランドを含む前記
複数のオペランドを、前記レジスタ・ファイル内に記憶
する手段と、複数のフィールドを有し、第1のフィール
ドが、第1のオペランド・レジスタにロードすべき、前
記レジスタ・ファイル内に記憶された値を指定する第1
のオペランド・ポインタを含み、第2のフィールドが、
第2のオペランド・レジスタにロードすべき、前記レジ
スタ・ファイル内に記憶された値を指定する第2のオペ
ランド・ポインタを含む、命令を前記命令待ち行列内に
ロードする手段と、前記第1のフィールド内の前記第1
のオペランド・ポインタを、前記第2のフィールド内の
前記第2のオペランド・ポインタと交換する手段と、前
記第1のフィールド内に記憶された前記第2のオペラン
ド・ポインタによって指定される前記レジスタ・ファイ
ル内に記憶された値を、前記第1のオペランド・レジス
タにロードする手段と、前記第2のフィールド内に記憶
された前記第1のオペランド・ポインタによって指定さ
れる前記レジスタ内に記憶された値を、前記第2のオペ
ランド・レジスタにロードする手段とを含み、前記命令
の前記フィールド内のオペランド・ポインタによって指
定される前記レジスタ・ファイル内の値が、前記複合命
令の実行中に前記命令によって本来指定されるものと異
なるオペランド・レジスタにロードされることを特徴と
するデータ処理システム。 (11)前記第1のフィールドが第1のマルチプレクサ
の出力に結合され、前記第2のフィールドが第2のマル
チプレクサの出力に結合され、前記第1のマルチプレク
サへの入力が前記第2のフィールドに結合され、前記第
2のマルチプレクサへの入力が前記第1のフィールドに
結合されており、前記第1のフィールド内の前記第1の
オペランド・ポインタを前記第2のフィールド内の前記
第2のオペランド・ポインタと交換する手段が、前記第
1のオペランド・ポインタを前記第2のマルチプレクサ
経由で前記第2のフィールドに移動する手段と、前記第
2のオペランド・ポインタを前記第1のマルチプレクサ
経由で前記第1のフィールドに移動する手段を含むこと
を特徴とする、上記(10)に記載のオペランドを交換
し前記オペランドを複数のオペランド・レジスタにロー
ドするためのデータ処理システム。 (12)前記実行ユニット内の前記命令待ち行列中に複
合命令があることを検出する手段と、前記複合命令の検
出に応答して、代替命令を実行して中間結果を出す手段
と、前記中間結果を、前記命令のリネーム・バッファ・
ポインタ・フィールド内に記憶されたリネーム・バッフ
ァ・ポインタによって指定されるリネーム・バッファ内
に一時的に記憶する手段と、前記第1のフィールド内の
前記第1のオペランド・ポインタを、前記リネーム・バ
ッファ・ポインタ・フィールド内の前記リネーム・バッ
ファ・ポインタと交換する手段と、前記第1のフィール
ド内に記憶された前記リネーム・バッファ・ポインタに
よって指定される前記リネーム・バッファ内に記憶され
た値を前記第1のオペランド・レジスタ内にロードする
手段とを含むことを特徴とする、上記(10)に記載の
オペランドを交換し前記オペランドを複数のオペランド
・レジスタにロードするためのデータ処理システム。 (13)前記第1のフィールドが第1のマルチプレクサ
の出力に結合され、前記リネーム・バッファ・ポインタ
・フィールドが第2のマルチプレクサの出力に結合さ
れ、前記第1のマルチプレクサへの入力が前記リネーム
・バッファ・ポインタ・フィールドに結合され、前記第
2のマルチプレクサへの入力が前記第1のフィールドに
結合されており、前記第1のフィールド内の前記第1の
オペランド・ポインタを前記リネーム・バッファ・ポイ
ンタ・フィールド内の前記リネーム・バッファ・ポイン
タと交換する前記手段が、前記第1のオペランド・ポイ
ンタを前記第2のマルチプレクサ経由で前記リネーム・
バッファ・ポインタ・フィールドに移動する手段と、前
記リネーム・バッファ・ポインタを前記第1のマルチプ
レクサ経由で前記第1のフィールドに移動する手段とを
含むことを特徴とする、上記(12)に記載のオペラン
ドを交換し前記オペランドを複数のオペランド・レジス
タにロードするためのデータ処理システム。 (14)前記実行ユニットが、前記第1および第2のマ
ルチプレクサに結合された、制御信号を送って複合命令
を合成するアルゴリズムの実行を制御するためのアルゴ
リズム状態機械を含み、前記第1のオペランド・ポイン
タを前記第2のマルチプレクサ経由で前記第2のフィー
ルドに移動する前記手段、および前記第2のオペランド
・ポインタを前記第1のマルチプレクサ経由で前記第1
のフィールドに移動する手段が、前記制御信号の受信に
応答して、前記第1のマルチプレクサを前記リネーム・
バッファ・ポインタを出力するように設定する手段と、
前記制御信号の受信に応答して、前記第2のマルチプレ
クサを前記第1のオペランド・ポインタを出力するよう
に設定する手段と、前記アルゴリズム状態機械からの制
御信号に応答して、前記第1のオペランド・ポインタを
前記第2のマルチプレクサ経由で前記リネーム・バッフ
ァ・ポインタ・フィールドに移動し、前記リネーム・バ
ッファ・ポインタを前記第1のマルチプレクサ経由で前
記第1のフィールドに移動する手段とを含むことを特徴
とする、上記(13)に記載のオペランドを交換し前記
オペランドを複数のオペランド・レジスタにロードする
ためのデータ処理システム。 (15)前記実行ユニットが、前記第1および第2のマ
ルチプレクサに結合された、制御信号を送って複合命令
を合成するアルゴリズムの実行を制御するためのアルゴ
リズム状態機械を含み、前記第1のオペランド・ポイン
タを前記第2のマルチプレクサ経由で前記第2のフィー
ルドに移動する前記手段、および前記第2のオペランド
・ポインタを前記第1のマルチプレクサ経由で前記第1
のフィールドに移動する手段が、前記制御信号の受信に
応答して、前記第1のマルチプレクサを前記第2のオペ
ランド・ポインタを出力するように設定する手段と、前
記制御信号の受信に応答して、前記第2のマルチプレク
サを前記第1のオペランド・ポインタを出力するように
設定する手段と、前記アルゴリズム状態機械からの前記
制御信号に応答して、前記第1のオペランド・ポインタ
を前記第2のマルチプレクサ経由で前記第2のフィール
ドに移動する手段と、前記第2のオペランド・ポインタ
を前記第1のマルチプレクサ経由で第1のフィールドに
移動する手段とを含むことを特徴とする、上記(11)
に記載のオペランドを交換し前記オペランドを複数のオ
ペランド・レジスタにロードするためのデータ処理シス
テム。 (16)複数のフィールドを有し、第3のフィールド
が、前記第1のオペランド・レジスタにロードすべき、
リネーム・バッファ・レジスタ・ファイル内に記憶され
た値を指定するための第3のオペランド・ポインタを含
み、第4のフィールドが、前記第2のオペランド・レジ
スタにロードすべき、前記リネーム・バッファ・レジス
タ・ファイル内に記憶された値を指定するための第4の
オペランド・ポインタを含む、命令を前記命令待ち行列
内にロードする手段と、前記第1のフィールド内の前記
第1のオペランド・ポインタを前記第2のフィールド内
の前記第2のオペランド・ポインタと交換するのに応答
して、前記第3のフィールド内の前記第3のオペランド
・ポインタを前記第4のフィールド内の前記第4のオペ
ランド・ポインタと交換する手段とを含むことを特徴と
する、上記(10)に記載のオペランドを交換して複数
のオペランド・レジスタに前記オペランドをロードする
ためのデータ処理システム。 (17)複数のフィールドを有し、第5のフィールド
が、前記第1のオペランド・レジスタにロードすべき、
2つの値のうちの一方を指定するために、前記第1のオ
ペランド・ポインタか前記第3のオペランド・ポインタ
のどちらかを選択する第1のビットを含み、第6のフィ
ールドが、前記第2のオペランド・レジスタにロードす
べき2つの値のうちの一方を指定するために、前記第2
のオペランド・ポインタか第4のオペランド・ポインタ
のどちらかを選択する第2のビットを含む、命令を前記
命令待ち行列にロードする手段と、前記第1のフィール
ド内の前記第1のオペランド・ポインタを前記第2のフ
ィールド内の前記第2のオペランド・ポインタと交換す
るのに応答して、前記第5のフィールド内の前記第1の
ビットを前記第6のフィールド内の前記第2のビットと
交換する手段とをさらに含むことを特徴とする、上記
(16)に記載のオペランドを交換して前記オペランド
を複数のオペランド・レジスタにロードするためのデー
タ処理システム。 (18)前記命令のリネーム・バッファ・ポインタ・フ
ィールド内に記憶されたリネーム・バッファ・ポインタ
によって指定されるリネーム・バッファ内に前記中間結
果を一時的に記憶する手段が、前記命令の目標リネーム
・バッファ・ポインタ・フィールド内に記憶された目標
リネーム・バッファ・ポインタによって指定されるリネ
ーム・バッファ内に前記中間結果を一時的に記憶する手
段を含むことを特徴とする、上記(12)に記載のオペ
ランドを交換し前記オペランドを複数のオペランド・レ
ジスタにロードするためのデータ処理システム。 (19)データ処理システムにおいて、複合命令の実行
中に前記データ処理システム内の実行ユニットにおける
複数のオペランド・レジスタのうちの1つにオペランド
をロードするための方法であって、前記実行ユニットが
命令待ち行列を有し、前記実行ユニットが、前記複数の
オペランド・レジスタに結合されたレジスタ・ファイル
内に記憶されたオペランドを示すオペランド・ポインタ
を有し、複数のポインタ・フィールドを有し、第1のポ
インタ・フィールドが、第1のオペランド・レジスタに
ロードすべき、前記レジスタ・ファイル内に記憶された
オペランドを指定するオペランド・ポインタを含み、第
2のポインタ・フィールドが、第2のオペランド・レジ
スタにロードすべき、前記レジスタ・ファイル内に記憶
されたオペランドを指定する、命令を前記命令待ち行列
内にロードする段階と、前記第1のポインタ・フィール
ド内の前記オペランド・ポインタを前記第2のポインタ
・フィールドに移動する段階と、前記第2のポインタ・
フィールド内に記憶された前記オペランド・ポインタに
よって指定される前記レジスタ・ファイル内に記憶され
た値を、前記第2のオペランド・レジスタにロードする
段階とを含み、前記命令の前記第1のポインタ・フィー
ルド内の前記オペランド・ポインタによって指定される
前記レジスタ・ファイル内の前記オペランドが、前記複
合命令の実行中に前記命令によって本来指定される前記
第1のオペランド・レジスタとは異なる前記第2のオペ
ランド・レジスタにロードされることを特徴とする方
法。 (20)前記第2のポインタ・フィールドがマルチプレ
クサの出力に結合され、前記マルチプレクサへの入力が
前記第1のポインタ・フィールドに結合されており、前
記第2のポインタ・フィールドに前記第1のポインタ・
フィールド内の前記オペランド・ポインタを移動する段
階が、前記第1のポインタ・フィールド内の前記オペラ
ンド・ポインタを前記マルチプレクサ経由で前記第2の
ポインタ・フィールドに移動する段階を含むことを特徴
とする、上記(19)に記載のデータ処理システムにお
いてオペランドを複数のオペランド・レジスタのうちの
1つにロードするための方法。
【図面の簡単な説明】
【図1】スーパースカラー・データ処理システムにおけ
る浮動小数点実行ユニットの詳細なブロック図である。
【図2】本発明の方法およびシステムによるスーパース
カラー・データ処理システムを示す図である。
【図3】本発明の方法およびシステムによる浮動小数点
実行ユニットを示す図である。
【図4】本発明の方法およびシステムによるデータ処理
システムにおいて複合命令の実行中にオペランドを交換
するプロセスを示す詳細なフローチャートである。
【符号の説明】
100 スーパースカラー・データ処理システム 102 ブランチ処理ユニット(BPU) 104 ロード/記憶ユニット 106 整数ユニット 107 汎用レジスタ・ファイル(GPR) 108 浮動小数点ユニット 109 浮動小数点ジレスタ・ファイル(FPR) 110 命令ユニット 112 順次フェッチャ 114 命令待ち行列 116 ディスパッチ・ユニット 118 命令キャッシュ 126 データ・キャッシュ 128 命令メモリ管理ユニット 130 データ・メモリ管理ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ドック・クァン・ブイ アメリカ合衆国78752 テキサス州オース チン シェヴィー・チェース・ドライブ 7580 ナンバー101 (72)発明者 リチャード・エドマンド・フライ アメリカ合衆国78664 テキサス州ラウン ド・ロック イースト・ナコマ 200 (72)発明者 ジェームズ・エドワード・フィリップス アメリカ合衆国78681 テキサス州オース チン パイン・オーク・レーン 1602

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】データ処理システムにおいて、複合命令の
    実行中に前記データ処理システム内の実行ユニット内で
    オペランドを交換し前記オペランドを複数のオペランド
    ・レジスタにロードするための方法であって、前記実行
    ユニットが命令待ち行列を有し、前記実行ユニットが、
    前記オペランド・レジスタに結合されたレジスタ・ファ
    イル内に記憶された前記複数のオペランドを指す複数の
    オペランド・ポインタを有する命令を実行し、前記複数
    のオペランドが第1のオペランドと第2のオペランドを
    有し、 複数のフィールドを有し、第1のフィールドが、第1の
    オペランド・レジスタにロードすべき、前記レジスタ・
    ファイル内に記憶された値を指定する第1のオペランド
    ・ポインタを含み、第2のフィールドが、第2のオペラ
    ンド・レジスタにロードすべき、前記レジスタ・ファイ
    ル内に記憶された値を指定する第2のオペランド・ポイ
    ンタを含む、命令を前記命令待ち行列内にロードする段
    階と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを、前記第2のフィールド内の前記第2のオペラン
    ド・ポインタと交換する段階と、 前記第1のフィールド内に記憶された前記第2のオペラ
    ンド・ポインタによって指定される前記レジスタ・ファ
    イル内に記憶された値を、前記第1のオペランド・レジ
    スタにロードする段階と、 前記第2のフィールド内に記憶された前記第1のオペラ
    ンド・ポインタによって指定される前記レジスタ内に記
    憶された値を、前記第2のオペランド・レジスタにロー
    ドする段階とを含み、前記命令の前記フィールド内のオ
    ペランド・ポインタによって指定される前記レジスタ・
    ファイル内の値が、前記複合命令の実行中に前記命令に
    よって本来指定されるものとは異なるオペランド・レジ
    スタにロードされることを特徴とする方法。
  2. 【請求項2】前記第1のフィールドが第1のマルチプレ
    クサの出力に結合され、前記第2のフィールドが第2の
    マルチプレクサの出力に結合され、前記第1のマルチプ
    レクサへの入力が前記第2のフィールドに結合され、前
    記第2のマルチプレクサへの入力が前記第1のフィール
    ドに結合されており、前記第1のフィールド内の前記第
    1のオペランド・ポインタを前記第2のフィールド内の
    前記第2のオペランド・ポインタと交換する段階が、前
    記第1のオペランド・ポインタを前記第2のマルチプレ
    クサ経由で前記第2のフィールドに移動し、前記第2の
    オペランド・ポインタを前記第1のマルチプレクサ経由
    で前記第1のフィールドに移動する段階を含むことを特
    徴とする、請求項1に記載のオペランドを交換し前記オ
    ペランドを複数のオペランド・レジスタにロードするた
    めの方法。
  3. 【請求項3】前記実行ユニット内の前記命令待ち行列中
    に複合命令があることを検出する段階と、 前記複合命令の検出に応答して、代替命令を実行し中間
    結果を出す段階と、 前記中間結果を、前記命令のリネーム・バッファ・ポイ
    ンタ・フィールドに記憶されたリネーム・バッファ・ポ
    インタによって指定されるリネーム・バッファ内に一時
    的に記憶する段階と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを、前記リネーム・バッファ・ポインタ・フィール
    ド内のリネーム・バッファ・ポインタと交換する段階
    と、 前記第1のフィールド内に記憶された前記リネーム・バ
    ッファ・ポインタによって指定される前記リネーム・バ
    ッファ内に記憶された値を、前記第1のオペランド・レ
    ジスタにロードする段階とを含むことを特徴とする、請
    求項1に記載のオペランドを交換し複数のオペランド・
    レジスタに前記オペランドをロードするための方法。
  4. 【請求項4】前記第1のフィールドが第1のマルチプレ
    クサの出力に結合され、前記リネーム・バッファ・ポイ
    ンタ・フィールドが第2のマルチプレクサの出力に結合
    され、前記第1のマルチプレクサへの入力が前記リネー
    ム・バッファ・ポインタ・フィールドに結合され、前記
    第2のマルチプレクサへの入力が前記第1のフィールド
    に結合されており、前記第1のフィールド内の前記第1
    のオペランド・ポインタを前記リネーム・バッファ・ポ
    インタ・フィールド内の前記リネーム・バッファ・ポイ
    ンタと交換する前記段階が、前記第1のオペランド・ポ
    インタを前記第2のマルチプレクサ経由で前記リネーム
    ・バッファ・ポインタ・フィールドに移動し、前記リネ
    ーム・バッファ・ポインタを前記第1のマルチプレクサ
    経由で前記第1のフィールドに移動する段階を含むこと
    を特徴とする、請求項3に記載のオペランドを交換し前
    記オペランドを複数のオペランド・レジスタにロードす
    るための方法。
  5. 【請求項5】前記実行ユニットが、前記第1および第2
    のマルチプレクサに結合された、制御信号を送って複合
    命令を合成するアルゴリズムの実行を制御するためのア
    ルゴリズム状態機械を含み、前記第1のオペランド・ポ
    インタを前記第2のマルチプレクサ経由で前記第2のフ
    ィールドに移動し、前記第2のオペランド・ポインタを
    前記第1のマルチプレクサ経由で前記第1のフィールド
    に移動する段階が、 前記制御信号の受信に応答して、前記第1のマルチプレ
    クサを前記リネーム・バッファ・ポインタを出力するよ
    うに設定する段階と、 前記制御信号の受信に応答して、前記第2のマルチプレ
    クサを前記第1のオペランド・ポインタを出力するよう
    に設定する段階と、 前記アルゴリズム状態機械からの前記制御信号に応答し
    て、前記第1のオペランド・ポインタを前記第2のマル
    チプレクサ経由で前記リネーム・バッファ・ポインタ・
    フィールドに移動し、前記リネーム・バッファ・ポイン
    タを前記第1のマルチプレクサ経由で前記第1のフィー
    ルドに移動する段階とを含むことを特徴とする、請求項
    4に記載のオペランドを交換し前記オペランドを複数の
    オペランド・レジスタにロードするための方法。
  6. 【請求項6】前記実行ユニットが、前記第1および第2
    のマルチプレクサに結合された、制御信号を送って複合
    命令を合成するアルゴリズムの実行を制御するためのア
    ルゴリズム状態機械を含み、前記第1のオペランド・ポ
    インタを前記第2のマルチプレクサ経由で前記第2のフ
    ィールドに移動し、前記第2のオペランド・ポインタを
    前記第1のマルチプレクサ経由で前記第1のフィールド
    に移動する段階が、 前記制御信号の受信に応答して、前記第1のマルチプレ
    クサを前記第2のオペランド・ポインタを出力するよう
    に設定する段階と、 前記制御信号の受信に応答して、前記第2のマルチプレ
    クサを前記第1のオペランド・ポインタを出力するよう
    に設定する段階と、 前記アルゴリズム状態機械からの前記制御信号に応答し
    て、前記第1のオペランド・ポインタを前記第2のマル
    チプレクサ経由で前記第2のフィールドに移動し、前記
    第2のオペランド・ポインタを前記第1のマルチプレク
    サ経由で第1のフィールドに移動する段階とを含むこと
    を特徴とする、請求項2に記載のオペランドを交換し前
    記オペランドを複数のオペランド・レジスタにロードす
    る方法。
  7. 【請求項7】前記複数のフィールドを有し、第3のフィ
    ールドが、第1のオペランド・レジスタにロードすべ
    き、リネーム・バッファ・レジスタ・ファイル内に記憶
    された値を指定するための第3のオペランド・ポインタ
    を含み、第4のフィールドが、前記第2のオペランド・
    レジスタにロードすべき、前記リネーム・バッファ・レ
    ジスタ・ファイル内に記憶された値を指定するための第
    4のオペランド・ポインタを含む命令を前記命令待ち行
    列内にロードする段階と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを前記第2のフィールド内の前記第2のオペランド
    ・ポインタと交換するのに応答して、前記第3のフィー
    ルド内の前記第3のオペランド・ポインタを前記第4の
    フィールド内の前記第4のオペランド・ポインタと交換
    する段階とを含むことを特徴とする、請求項1に記載の
    オペランドを交換して前記オペランドを複数のオペラン
    ド・レジスタにロードするための方法。
  8. 【請求項8】前記複数のフィールドを有し、第5のフィ
    ールドが、前記第1のオペランド・レジスタにロードす
    べき2つの値のうちの一方を指定するために、前記第1
    のオペランド・ポインタまたは前記第3のオペランド・
    ポインタを選択する第1のビットを含み、第6のフィー
    ルドが、前記第2のオペランド・レジスタにロードすべ
    き2つの値のうちの一方を指定するために、前記第2の
    オペランド・ポインタまたは前記第4のオペランド・ポ
    インタを選択する第2のビットを含む、命令を前記命令
    待ち行列にロードする段階と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを前記第2のフィールド内の前記第2のオペランド
    ・ポインタと交換するのに応答して、前記第5のフィー
    ルド内の前記第1のビットを前記第6のフィールド内の
    前記第2のビットと交換する段階とをさらに含むことを
    特徴とする、請求項7に記載のオペランドを交換して前
    記オペランドを複数のオペランド・レジスタにロードす
    るための方法。
  9. 【請求項9】前記命令のリネーム・バッファ・ポインタ
    ・フィールド内に記憶されたリネーム・バッファ・ポイ
    ンタによって指定されるリネーム・バッファ内に前記中
    間結果を一時的に記憶する段階が、前記命令の目標リネ
    ーム・バッファ・ポインタ・フィールド内に記憶された
    目標リネーム・バッファ・ポインタによって指定される
    リネーム・バッファ内に前記中間結果を一時的に記憶す
    る段階を含むことを特徴とする、請求項3に記載のオペ
    ランドを交換し前記オペランドを複数のオペランド・レ
    ジスタにロードするための方法。
  10. 【請求項10】複合命令の実行中に、実行ユニットにお
    いてオペランドを交換し前記オペランドを複数のオペラ
    ンド・レジスタにロードするためのデータ処理システム
    であって、前記実行ユニットが、命令待ち行列を有し、
    前記実行ユニットが、前記オペランド・レジスタに結合
    されたレジスタ・ファイル内に記憶された前記複数のオ
    ペランドを指す複数のオペランド・ポインタを有する命
    令を実行し、 第1のオペランドと第2のオペランドを含む前記複数の
    オペランドを、前記レジスタ・ファイル内に記憶する手
    段と、 複数のフィールドを有し、第1のフィールドが、第1の
    オペランド・レジスタにロードすべき、前記レジスタ・
    ファイル内に記憶された値を指定する第1のオペランド
    ・ポインタを含み、第2のフィールドが、第2のオペラ
    ンド・レジスタにロードすべき、前記レジスタ・ファイ
    ル内に記憶された値を指定する第2のオペランド・ポイ
    ンタを含む、命令を前記命令待ち行列内にロードする手
    段と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを、前記第2のフィールド内の前記第2のオペラン
    ド・ポインタと交換する手段と、 前記第1のフィールド内に記憶された前記第2のオペラ
    ンド・ポインタによって指定される前記レジスタ・ファ
    イル内に記憶された値を、前記第1のオペランド・レジ
    スタにロードする手段と、 前記第2のフィールド内に記憶された前記第1のオペラ
    ンド・ポインタによって指定される前記レジスタ内に記
    憶された値を、前記第2のオペランド・レジスタにロー
    ドする手段とを含み、前記命令の前記フィールド内のオ
    ペランド・ポインタによって指定される前記レジスタ・
    ファイル内の値が、前記複合命令の実行中に前記命令に
    よって本来指定されるものと異なるオペランド・レジス
    タにロードされることを特徴とするデータ処理システ
    ム。
  11. 【請求項11】前記第1のフィールドが第1のマルチプ
    レクサの出力に結合され、前記第2のフィールドが第2
    のマルチプレクサの出力に結合され、前記第1のマルチ
    プレクサへの入力が前記第2のフィールドに結合され、
    前記第2のマルチプレクサへの入力が前記第1のフィー
    ルドに結合されており、前記第1のフィールド内の前記
    第1のオペランド・ポインタを前記第2のフィールド内
    の前記第2のオペランド・ポインタと交換する手段が、
    前記第1のオペランド・ポインタを前記第2のマルチプ
    レクサ経由で前記第2のフィールドに移動する手段と、
    前記第2のオペランド・ポインタを前記第1のマルチプ
    レクサ経由で前記第1のフィールドに移動する手段を含
    むことを特徴とする、請求項10に記載のオペランドを
    交換し前記オペランドを複数のオペランド・レジスタに
    ロードするためのデータ処理システム。
  12. 【請求項12】前記実行ユニット内の前記命令待ち行列
    中に複合命令があることを検出する手段と、 前記複合命令の検出に応答して、代替命令を実行して中
    間結果を出す手段と、 前記中間結果を、前記命令のリネーム・バッファ・ポイ
    ンタ・フィールド内に記憶されたリネーム・バッファ・
    ポインタによって指定されるリネーム・バッファ内に一
    時的に記憶する手段と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを、前記リネーム・バッファ・ポインタ・フィール
    ド内の前記リネーム・バッファ・ポインタと交換する手
    段と、 前記第1のフィールド内に記憶された前記リネーム・バ
    ッファ・ポインタによって指定される前記リネーム・バ
    ッファ内に記憶された値を前記第1のオペランド・レジ
    スタ内にロードする手段とを含むことを特徴とする、請
    求項10に記載のオペランドを交換し前記オペランドを
    複数のオペランド・レジスタにロードするためのデータ
    処理システム。
  13. 【請求項13】前記第1のフィールドが第1のマルチプ
    レクサの出力に結合され、前記リネーム・バッファ・ポ
    インタ・フィールドが第2のマルチプレクサの出力に結
    合され、前記第1のマルチプレクサへの入力が前記リネ
    ーム・バッファ・ポインタ・フィールドに結合され、前
    記第2のマルチプレクサへの入力が前記第1のフィール
    ドに結合されており、前記第1のフィールド内の前記第
    1のオペランド・ポインタを前記リネーム・バッファ・
    ポインタ・フィールド内の前記リネーム・バッファ・ポ
    インタと交換する前記手段が、前記第1のオペランド・
    ポインタを前記第2のマルチプレクサ経由で前記リネー
    ム・バッファ・ポインタ・フィールドに移動する手段
    と、前記リネーム・バッファ・ポインタを前記第1のマ
    ルチプレクサ経由で前記第1のフィールドに移動する手
    段とを含むことを特徴とする、請求項12に記載のオペ
    ランドを交換し前記オペランドを複数のオペランド・レ
    ジスタにロードするためのデータ処理システム。
  14. 【請求項14】前記実行ユニットが、前記第1および第
    2のマルチプレクサに結合された、制御信号を送って複
    合命令を合成するアルゴリズムの実行を制御するための
    アルゴリズム状態機械を含み、前記第1のオペランド・
    ポインタを前記第2のマルチプレクサ経由で前記第2の
    フィールドに移動する前記手段、および前記第2のオペ
    ランド・ポインタを前記第1のマルチプレクサ経由で前
    記第1のフィールドに移動する手段が、 前記制御信号の受信に応答して、前記第1のマルチプレ
    クサを前記リネーム・バッファ・ポインタを出力するよ
    うに設定する手段と、 前記制御信号の受信に応答して、前記第2のマルチプレ
    クサを前記第1のオペランド・ポインタを出力するよう
    に設定する手段と、 前記アルゴリズム状態機械からの制御信号に応答して、
    前記第1のオペランド・ポインタを前記第2のマルチプ
    レクサ経由で前記リネーム・バッファ・ポインタ・フィ
    ールドに移動し、前記リネーム・バッファ・ポインタを
    前記第1のマルチプレクサ経由で前記第1のフィールド
    に移動する手段とを含むことを特徴とする、請求項13
    に記載のオペランドを交換し前記オペランドを複数のオ
    ペランド・レジスタにロードするためのデータ処理シス
    テム。
  15. 【請求項15】前記実行ユニットが、前記第1および第
    2のマルチプレクサに結合された、制御信号を送って複
    合命令を合成するアルゴリズムの実行を制御するための
    アルゴリズム状態機械を含み、前記第1のオペランド・
    ポインタを前記第2のマルチプレクサ経由で前記第2の
    フィールドに移動する前記手段、および前記第2のオペ
    ランド・ポインタを前記第1のマルチプレクサ経由で前
    記第1のフィールドに移動する手段が、 前記制御信号の受信に応答して、前記第1のマルチプレ
    クサを前記第2のオペランド・ポインタを出力するよう
    に設定する手段と、 前記制御信号の受信に応答して、前記第2のマルチプレ
    クサを前記第1のオペランド・ポインタを出力するよう
    に設定する手段と、 前記アルゴリズム状態機械からの前記制御信号に応答し
    て、前記第1のオペランド・ポインタを前記第2のマル
    チプレクサ経由で前記第2のフィールドに移動する手段
    と、前記第2のオペランド・ポインタを前記第1のマル
    チプレクサ経由で第1のフィールドに移動する手段とを
    含むことを特徴とする、請求項11に記載のオペランド
    を交換し前記オペランドを複数のオペランド・レジスタ
    にロードするためのデータ処理システム。
  16. 【請求項16】複数のフィールドを有し、第3のフィー
    ルドが、前記第1のオペランド・レジスタにロードすべ
    き、リネーム・バッファ・レジスタ・ファイル内に記憶
    された値を指定するための第3のオペランド・ポインタ
    を含み、第4のフィールドが、前記第2のオペランド・
    レジスタにロードすべき、前記リネーム・バッファ・レ
    ジスタ・ファイル内に記憶された値を指定するための第
    4のオペランド・ポインタを含む、命令を前記命令待ち
    行列内にロードする手段と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを前記第2のフィールド内の前記第2のオペランド
    ・ポインタと交換するのに応答して、前記第3のフィー
    ルド内の前記第3のオペランド・ポインタを前記第4の
    フィールド内の前記第4のオペランド・ポインタと交換
    する手段とを含むことを特徴とする、請求項10に記載
    のオペランドを交換して複数のオペランド・レジスタに
    前記オペランドをロードするためのデータ処理システ
    ム。
  17. 【請求項17】複数のフィールドを有し、第5のフィー
    ルドが、前記第1のオペランド・レジスタにロードすべ
    き、2つの値のうちの一方を指定するために、前記第1
    のオペランド・ポインタか前記第3のオペランド・ポイ
    ンタのどちらかを選択する第1のビットを含み、第6の
    フィールドが、前記第2のオペランド・レジスタにロー
    ドすべき2つの値のうちの一方を指定するために、前記
    第2のオペランド・ポインタか第4のオペランド・ポイ
    ンタのどちらかを選択する第2のビットを含む、命令を
    前記命令待ち行列にロードする手段と、 前記第1のフィールド内の前記第1のオペランド・ポイ
    ンタを前記第2のフィールド内の前記第2のオペランド
    ・ポインタと交換するのに応答して、前記第5のフィー
    ルド内の前記第1のビットを前記第6のフィールド内の
    前記第2のビットと交換する手段とをさらに含むことを
    特徴とする、請求項16に記載のオペランドを交換して
    前記オペランドを複数のオペランド・レジスタにロード
    するためのデータ処理システム。
  18. 【請求項18】前記命令のリネーム・バッファ・ポイン
    タ・フィールド内に記憶されたリネーム・バッファ・ポ
    インタによって指定されるリネーム・バッファ内に前記
    中間結果を一時的に記憶する手段が、前記命令の目標リ
    ネーム・バッファ・ポインタ・フィールド内に記憶され
    た目標リネーム・バッファ・ポインタによって指定され
    るリネーム・バッファ内に前記中間結果を一時的に記憶
    する手段を含むことを特徴とする、請求項12に記載の
    オペランドを交換し前記オペランドを複数のオペランド
    ・レジスタにロードするためのデータ処理システム。
  19. 【請求項19】データ処理システムにおいて、複合命令
    の実行中に前記データ処理システム内の実行ユニットに
    おける複数のオペランド・レジスタのうちの1つにオペ
    ランドをロードするための方法であって、前記実行ユニ
    ットが命令待ち行列を有し、前記実行ユニットが、前記
    複数のオペランド・レジスタに結合されたレジスタ・フ
    ァイル内に記憶されたオペランドを示すオペランド・ポ
    インタを有し、 複数のポインタ・フィールドを有し、第1のポインタ・
    フィールドが、第1のオペランド・レジスタにロードす
    べき、前記レジスタ・ファイル内に記憶されたオペラン
    ドを指定するオペランド・ポインタを含み、第2のポイ
    ンタ・フィールドが、第2のオペランド・レジスタにロ
    ードすべき、前記レジスタ・ファイル内に記憶されたオ
    ペランドを指定する、命令を前記命令待ち行列内にロー
    ドする段階と、 前記第1のポインタ・フィールド内の前記オペランド・
    ポインタを前記第2のポインタ・フィールドに移動する
    段階と、 前記第2のポインタ・フィールド内に記憶された前記オ
    ペランド・ポインタによって指定される前記レジスタ・
    ファイル内に記憶された値を、前記第2のオペランド・
    レジスタにロードする段階とを含み、前記命令の前記第
    1のポインタ・フィールド内の前記オペランド・ポイン
    タによって指定される前記レジスタ・ファイル内の前記
    オペランドが、前記複合命令の実行中に前記命令によっ
    て本来指定される前記第1のオペランド・レジスタとは
    異なる前記第2のオペランド・レジスタにロードされる
    ことを特徴とする方法。
  20. 【請求項20】前記第2のポインタ・フィールドがマル
    チプレクサの出力に結合され、前記マルチプレクサへの
    入力が前記第1のポインタ・フィールドに結合されてお
    り、前記第2のポインタ・フィールドに前記第1のポイ
    ンタ・フィールド内の前記オペランド・ポインタを移動
    する段階が、前記第1のポインタ・フィールド内の前記
    オペランド・ポインタを前記マルチプレクサ経由で前記
    第2のポインタ・フィールドに移動する段階を含むこと
    を特徴とする、請求項19に記載のデータ処理システム
    においてオペランドを複数のオペランド・レジスタのう
    ちの1つにロードするための方法。
JP8145470A 1995-06-09 1996-06-07 データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム Pending JPH096610A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US489181 1995-06-09
US08/489,181 US5771366A (en) 1995-06-09 1995-06-09 Method and system for interchanging operands during complex instruction execution in a data processing system

Publications (1)

Publication Number Publication Date
JPH096610A true JPH096610A (ja) 1997-01-10

Family

ID=23942743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8145470A Pending JPH096610A (ja) 1995-06-09 1996-06-07 データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム

Country Status (2)

Country Link
US (1) US5771366A (ja)
JP (1) JPH096610A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010517180A (ja) * 2007-01-24 2010-05-20 クゥアルコム・インコーポレイテッド 拡張命令の構成命令間で中間結果を転送するためのレジスタリネーミングシステムの使用

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3435278B2 (ja) * 1996-02-02 2003-08-11 東芝マイクロエレクトロニクス株式会社 データ処理装置
JPH09297677A (ja) * 1996-05-02 1997-11-18 Fujitsu Ltd 一部のデータ群を消去可能としたfifoバッファ
US6131156A (en) * 1996-05-31 2000-10-10 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
US5913047A (en) 1997-10-29 1999-06-15 Advanced Micro Devices, Inc. Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US6112296A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Floating point stack manipulation using a register map and speculative top of stack values
US6112018A (en) 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US7337258B1 (en) * 2004-04-12 2008-02-26 Apple Inc. Dynamically allocating devices to buses
KR101699685B1 (ko) * 2010-11-16 2017-01-26 삼성전자 주식회사 명령어 오퍼랜드 변경 장치 및 방법
US8341316B2 (en) * 2010-11-17 2012-12-25 Advanced Micro Devices, Inc. Method and apparatus for controlling a translation lookaside buffer
US20120191956A1 (en) * 2011-01-26 2012-07-26 Advanced Micro Devices, Inc. Processor having increased performance and energy saving via operand remapping

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3234367A (en) * 1962-11-05 1966-02-08 Ibm Quotient guess divider
US3344261A (en) * 1965-09-28 1967-09-26 Division by preselected divisor
US3863224A (en) * 1973-01-30 1975-01-28 Gen Electric Selectively controllable shift register and counter divider network
US4413326A (en) * 1978-10-18 1983-11-01 Honeywell Inc. Floating point division control
JPS60140428A (ja) * 1983-12-28 1985-07-25 Hitachi Ltd 除算装置
US4823301A (en) * 1987-10-22 1989-04-18 Tektronix, Inc. Method and circuit for computing reciprocals
US4823260A (en) * 1987-11-12 1989-04-18 Intel Corporation Mixed-precision floating point operations from a single instruction opcode
US5249149A (en) * 1989-01-13 1993-09-28 International Business Machines Corporation Method and apparatus for performining floating point division
US4996660A (en) * 1989-04-17 1991-02-26 International Business Machines Corporation Selection of divisor multipliers in a floating point divide circuit
JPH04283831A (ja) * 1991-03-13 1992-10-08 Fujitsu Ltd 除算器
US5325494A (en) * 1991-06-21 1994-06-28 Kabushiki Kaisha Toshiba Computer
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
US5258944A (en) * 1992-09-01 1993-11-02 Cray Research, Inc. High performance mantissa divider
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010517180A (ja) * 2007-01-24 2010-05-20 クゥアルコム・インコーポレイテッド 拡張命令の構成命令間で中間結果を転送するためのレジスタリネーミングシステムの使用

Also Published As

Publication number Publication date
US5771366A (en) 1998-06-23

Similar Documents

Publication Publication Date Title
US5416912A (en) System for handling exceptions occurring during parallel execution of microinstructions
US5996057A (en) Data processing system and method of permutation with replication within a vector register file
US5261113A (en) Apparatus and method for single operand register array for vector and scalar data processing operations
EP0437044B1 (en) Data processing system with instruction tag apparatus
US6334176B1 (en) Method and apparatus for generating an alignment control vector
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US5559977A (en) Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage
JPH03116233A (ja) データプロセッサの命令処理システム
EP0829045B1 (en) Coordinating the issue of instructions in a parallel instruction processing system
JPH03116235A (ja) 分岐処理方法及び分岐処理装置
JPH07334362A (ja) 複数の動作を同時に行なうためのプロセッサ、その中のスタック、およびスタック制御方法
JPH03116236A (ja) 例外処理方法及び例外処理装置
EP0677807B1 (en) Processing system and method of operation
US6463524B1 (en) Superscalar processor and method for incrementally issuing store instructions
US5590351A (en) Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
JPH096610A (ja) データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム
JP2003523574A (ja) 2次リオーダ・バッファ・マイクロプロセッサ
JPH10154073A (ja) データ依存性を管理する装置及び方法
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
US8028151B2 (en) Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
JP3122420B2 (ja) プロセッサおよび条件コード・ビット計算方法
JPH096612A (ja) カウント・レジスタおよびリンク・レジスタへの書込みを行う多重分岐命令を処理するための方法と装置