JPH09138748A - 浮動小数点命令の早期完了方法および装置 - Google Patents

浮動小数点命令の早期完了方法および装置

Info

Publication number
JPH09138748A
JPH09138748A JP8221086A JP22108696A JPH09138748A JP H09138748 A JPH09138748 A JP H09138748A JP 8221086 A JP8221086 A JP 8221086A JP 22108696 A JP22108696 A JP 22108696A JP H09138748 A JPH09138748 A JP H09138748A
Authority
JP
Japan
Prior art keywords
instruction
floating
store
load
execution
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
JP8221086A
Other languages
English (en)
Other versions
JP3096429B2 (ja
Inventor
Albert J Loper
アルバート・ジェイ・ローパー
Mallick Soummya
ソウンミヤ・マリック
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 JPH09138748A publication Critical patent/JPH09138748A/ja
Application granted granted Critical
Publication of JP3096429B2 publication Critical patent/JP3096429B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)【要約】 (修正有) 【課題】 前に発行されたロード多重命令またはストア
多重命令の終了前に浮動小数点命令を早期に完了するた
めのスーパースカラ・マイクロプロセッサ。 【解決手段】 この方法には、ストア多重やロード多重
など、複数の汎用レジスタのうちの複数からメモリへデ
ータをストアまたはロードする多重レジスタ命令をロー
ド/ストア実行ユニットにディスパッチして多重レジス
タ命令の実行を開始するディスパッチ・ユニット20が
含まれ、さらに、ロード/ストア・ユニット内で多重レ
ジスタ命令が実行を終了する前に、ディスパッチ・ユニ
ットは、複数の浮動小数点レジスタ36のうちの1つま
たは複数の浮動小数点レジスタに格納されたソース・オ
ペランド・データに依存する浮動小数点命令を浮動小数
点ユニット30にディスパッチし、ディスパッチされた
浮動小数点命令は、多重レジスタ命令が実行を終了する
前に実行を完了する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的にはマイク
ロプロセッサで命令を実行する方法およびシステムに関
し、具体的には、ロード多重またはストア多重命令の実
行中に浮動小数点命令を実行し、完了するための方法お
よび装置に関する。
【0002】
【従来の技術】現代のマイクロプロセッサでは、多重レ
ジスタ・ロード/ストア命令またはロード/ストア多重
命令によって、マイクロプロセッサの汎用レジスタ(G
PR)と、キャッシュやRAMなどのメモリとの間でデ
ータのブロックを移動する。従来の技術では、多重レジ
スタ命令でマイクロプロセッサ内に含まれる汎用レジス
タのすべて(通常は32個)が変更または使用されるの
で、多重レジスタ・ロード/ストア命令は、後続の命令
との完全な直列化を必要とする。複数のレジスタの読み
書きを実行するには複数のサイクルが必要なので、浮動
小数点演算を含む、命令シーケンス内の後続命令は、非
整順実行によるレジスタ・データの破壊を防ぐために、
多重レジスタ命令が完了するまで命令バッファに保持さ
れる。このようなシステムでは、多重レジスタ命令が完
了するまで命令パイプラインを停止させることによっ
て、実質的にマイクロプロセッサ性能が制限される。
【0003】
【発明が解決しようとする課題】多重レジスタ命令を実
行している間に後続の浮動小数点命令の実行を開始で
き、おそらくは実行を完了できるようにする方法および
システムが必要である。このような機構があれば、複数
のレジスタを利用する命令を後続の浮動小数点命令と並
列に実行できるので、スーパースカラ設計を有するマイ
クロプロセッサの性能がかなり改善されるはずである。
【0004】
【課題を解決するための手段】本発明によれば、前のロ
ード多重命令またはストア多重命令の前に浮動小数点命
令を早期に完了するためのスーパースカラ・マイクロプ
ロセッサ内の方法および装置が提供される。このマイク
ロプロセッサのロード/ストア実行ユニットは、データ
を汎用レジスタに対してロードまたはストアし、このマ
イクロプロセッサのディスパッチ・ユニットは、ロード
/ストア実行ユニットと浮動小数点実行ユニットを含む
複数の実行ユニットに命令をディスパッチする。この方
法には、ストア多重やロード多重など、複数の汎用レジ
スタのうちの複数からメモリへデータをストアまたはロ
ードする多重レジスタ命令をロード/ストア命令にディ
スパッチして多重レジスタ命令の実行を開始するディス
パッチ・ユニットが含まれ、さらに、ロード/ストア・
ユニット内で多重レジスタ命令が実行を終了する前に、
ディスパッチ・ユニットは、複数の浮動小数点レジスタ
のうちの1つまたは複数の浮動小数点レジスタに格納さ
れたソース・オペランド・データに依存する浮動小数点
データに依存する浮動小数点命令を浮動小数点ユニット
にディスパッチし、ディスパッチされた浮動小数点命令
は、多重レジスタ命令が実行を終了する前に実行を完了
する。
【0005】本発明の上記ならびに他の目的、特徴およ
び長所は、以下の詳細な説明で明らかになる。
【0006】
【発明の実施の形態】ここで図面、具体的には図1を参
照すると、本発明の好ましい実施例による、情報を処理
するための、全体として符号10で示されるプロセッサ
のブロック図が示されている。図示の例では、プロセッ
サ10に、単一の集積回路スーパースカラ・マイクロプ
ロセッサが含まれる。したがって、下でさらに説明する
ように、プロセッサ10には、さまざまな実行ユニッ
ト、レジスタ、バッファ、メモリおよび他の機能ユニッ
トが含まれ、これらのすべてが集積回路によって形成さ
れる。本発明の好ましい実施例では、プロセッサ10
に、縮小命令セット・コンピュータ(RISC)技術に
よって動作する、International Business Machines,In
c.社製造のPowerPC(商標)系列のマイクロプロ
セッサのうちの1つが含まれる。
【0007】図1からわかるように、プロセッサ10
は、プロセッサ10内のバス・インターフェース・ユニ
ット(BIU)12を介してシステム・バス11に結合
される。BIU12は、主記憶(図示せず)などのシス
テム・バス11に結合された他のデバイスとプロセッサ
10との間での情報の転送を制御する。プロセッサ1
0、システム・バス11およびシステム・バス11に結
合された他のデバイスが、ホスト・データ処理システム
を形成する。BIU12は、プロセッサ10内の命令キ
ャッシュ14およびデータ・キャッシュ16に接続され
る。命令キャッシュ14やデータ・キャッシュ16など
の高速キャッシュがあると、前に主記憶から高速キャッ
シュに転送されたデータまたは命令のサブセットへの比
較的高速なアクセス・タイムをプロセッサ10が達成で
きるようになり、したがって、ホスト・データ処理シス
テムの動作速度が向上する。命令キャッシュ14は、さ
らに、シーケンシャル・フェッチャ17に結合され、こ
のシーケンシャル・フェッチャ17は、実行の各サイク
ルの間に命令キャッシュ14から命令を取り出す。シー
ケンシャル・フェッチャ17は、実行のために分岐命令
を分岐処理ユニット(BPU)18に転送し、プロセッ
サ10内の他の実行回路によって実行される前の一時的
な記憶のために順次命令を命令キュー19に転送する。
【0008】図示の実施例では、BPU18の他に、プ
ロセッサ10の実行回路に、固定小数点ユニット(FX
U)22、ロード/ストア・ユニット(LSU)28お
よび浮動小数点ユニット(FPU)30を含む複数の実
行ユニットが含まれる。コンピュータ技術の当業者に周
知の通り、FXU22、LSU28およびFPU30の
それぞれは、各プロセッサ・サイクル中に特定の種類の
順次命令内の1つまたは複数の命令を実行する。たとえ
ば、FXU22は、指定された汎用レジスタ(GPR)
32またはGPRリネーム・バッファ33から受け取る
ソース・オペランドを利用して、加算、減算、AND、
OR、XORなどの固定小数点算術演算を実行する。固
定小数点命令の実行に続いて、FXU22は、その命令
の結果データをGPRリネーム・バッファ33に出力
し、GPRリネーム・バッファ33は、GPRリネーム
・バッファ33から1つまたは複数のGPR32へ結果
データを転送することによって命令が完了するまで、結
果データの一時記憶となる。逆に、FPU30は、浮動
小数点レジスタ(FPR)36またはFPRリネーム・
バッファ37から受け取るソース・オペランドに対し
て、浮動小数点の乗算や除算などの浮動小数点演算を実
行する。FPU30は、浮動小数点命令の実行から生じ
るデータを、選択されたFPRリネーム・バッファ37
に出力し、このFPRリネーム・バッファ37は、FP
Rリネーム・バッファ37から選択されたFPR36へ
結果データを転送することによって命令が完了するま
で、結果データを一時的にロードまたはストアする。L
SU28は、浮動小数点命令および固定小数点命令を実
行し、メモリ(すなわち、データ・キャッシュ16また
は主記憶のいずれか)から選択されたGPR32または
FPR36へデータをロードするか、GPR32、GP
Rリネーム・バッファ33、FPR36またはFPRリ
ネーム・バッファ37のうちの選択された1つからメモ
リへデータをロードまたはストアするかのいずれかを行
う。
【0009】プロセッサ10では、命令のパイプライン
化と非整順実行の両方を利用して、スーパースカラ・ア
ーキテクチャの性能をさらに向上させる。したがって、
命令は、データ依存性が監視される限り、任意の順序で
FXU22、LSU28およびFPU30によって実行
できる。さらに、命令は、一連のパイプライン・ステー
ジでFXU22、LSU28およびFPU30のそれぞ
れによって処理される。高性能プロセッサで典型的なと
おり、各命令は、5つの別個のパイプライン・ステー
ジ、すなわち、フェッチ、復号/ディスパッチ、実行、
終了および完了の各ステージで処理される。
【0010】フェッチ・ステージの間に、シーケンシャ
ル・フェッチャ17が、1つまたは複数のメモリ・アド
レスに関連する1つまたは複数の命令を命令キャッシュ
14から取り出す。命令キャッシュ14から取り出され
た順次命令は、シーケンシャル・フェッチャ17によっ
て命令キュー19に格納される。取り出された分岐命令
は、命令ストリームから除去され、実行のためBPU1
8に転送される。BPU18には、分岐履歴テーブルな
ど、その分岐が行われるかどうかを予測することによっ
てBPU18が未解決の条件分岐命令を投機実行できる
ようにする分岐予測機構が含まれる。
【0011】復号/ディスパッチ・ステージの間に、デ
ィスパッチ・ユニット20が、命令キュー19からの1
つまたは複数の命令を復号し、FXU22、LSU28
およびFPU30のうちの適切な1つにディスパッチす
る。また、復号/ディスパッチ・ステージの間に、ディ
スパッチ・ユニット20は、ディスパッチされた命令の
結果データのそれぞれについて、GPRリネーム・バッ
ファ33またはFPRリネーム・バッファ37内で1つ
のリネーム・バッファを割り振る。本発明の好ましい実
施例によれば、プロセッサ10は、プログラム順で命令
をディスパッチし、ディスパッチされた命令のプログラ
ム順序を非整順実行中に独自の命令識別子を使用して追
跡する。命令識別子のほかに、プロセッサ10の実行パ
イプライン内の各命令は、その命令のオペランドAおよ
びBのソースを示すrAタグおよびrBタグと、その命
令の結果データ用のGPRリネーム・バッファ33また
はFPRリネーム・バッファ37内の宛先リネーム・バ
ッファを示すrDタグを有する。
【0012】実行ステージの間に、FXU22、LSU
28およびFPU30は、指示された演算のオペランド
と実行リソースが使用可能である時に、ディスパッチ・
ユニット20から受け取った命令を実行する。実行が終
了した後に、FXU22、LSU28およびFPU30
は、命令のタイプに応じてGPRリネーム・バッファ3
3またはFPRリネーム・バッファ37のいずれかに結
果データをロードまたはストアする。その後、FXU2
2、LSU28およびFPU30は、どの命令の実行を
終了したかを完了ユニット40に通知する。最後に、命
令は、結果データをGPRリネーム・バッファ33から
GPR32へまたはFPRリネーム・バッファ37から
FPR36へ転送することによって、完了ユニット40
によってプログラム順で完了する。
【0013】本発明の好ましい実施例では、プロセッサ
10は、複数の汎用レジスタとメモリとの間でデータの
ロードおよびまたはストアを行う、多重レジスタ命令を
実行することができる。具体的に言うと、PowerP
C(商標)マイクロプロセッサの好ましい実施例では、
マイクロプロセッサ10は、複数ワードをメモリから汎
用レジスタ(GPR)にロードするロード多重命令(l
mw)と、複数ワードをGPRからメモリにストアする
ストア多重命令(stmw)を実行する。
【0014】これらの多重レジスタ命令は、シーケンシ
ャル・フェッチャ17によって命令キャッシュ14から
取り出され、命令キュー19にロードされる。ディスパ
ッチ・ユニット20による多重レジスタ命令のディスパ
ッチの際に、LSU28は、多重レジスタ命令の実行を
開始する。また、その命令のディスパッチの際には、多
重レジスタ命令で識別された、GPR32のうちの複数
のレジスタが、その命令に割り振られる。
【0015】好ましい実施例では、ロード多重命令また
はストア多重命令が、32個までの連続したレジスタ
に、32個までの連続したワードをメモリからストアさ
れることを必要とする。たとえば、ストア多重命令stmw
r3, r2, r1では、レジスタ3ないしレジスタ31の内
容が、<r2 + r1>にあるメモリにロードまたは
ストアされる。したがって、この例では、最初に格納さ
れるレジスタはレジスタ3(r3)である。LSU28
は、レジスタ4のロードまたはストアに進行し、その
後、レジスタ5、レジスタ6など、レジスタ31を含む
レジスタ31までのすべてのレジスタがストアされるま
でこの処理を続ける。その時点で、ストア多重命令の実
行が終了する。これは、完了ユニット40に報告され、
完了ユニット40は、システム内のアーキテクチャ・レ
ジスタにコミットすることによってこの命令を完了す
る。
【0016】図2を参照すると、従来技術のマイクロプ
ロセッサでストア多重命令と後続の浮動小数点命令を処
理するのに必要なプロセッサ・サイクルのタイミング図
が示されている。ストア多重命令(store Mult)は、サ
イクル1の間にシーケンシャル・フェッチャ17によっ
て命令キャッシュ14から取り出される(F)。この命
令は、サイクル2の間に復号(Dec)され、サイクル
3の間にディスパッチ・ユニット20によってLSU2
8にディスパッチ(Disp)される。LSU28は、
サイクル4ないしサイクル7の間にこのストア多重命令
を実行(E)し、この命令は、完了ユニット40によっ
てサイクル8の間に完了(C)する。
【0017】従来技術では、ロード多重命令またはスト
ア多重命令に続く浮動小数点命令は、必ず直列化され、
その結果、ロード多重命令またはストア多重命令が完了
するまで取り出されないようになる。これによって、格
納されたオペランド・データの保全性が保証される。し
たがって、図2の従来技術の例では、後続の浮動小数点
命令は、サイクル9まで取り出されない。このようなシ
ステムでは、多重レジスタ命令が完了するまで命令パイ
プラインを停止させることによって、実質的にマイクロ
プロセッサ性能が制限される。
【0018】本発明によれば、ロード多重命令またはス
トア多重命令の実行中に後続の浮動小数点命令を非整順
に完了することができる。たとえば、好ましい実施例で
は、ストア多重動作で、32個までの連続したレジスタ
を32ワードまでのメモリ内の位置にストアすることが
必要である。たとえば、ストア多重命令stmw r3, r2,r1
では、レジスタ3ないしレジスタ31の内容が、位置<
r2+r1>にあるメモリにストアされる。本発明によ
れば、ストア多重命令のディスパッチの直後に、無条件
に後続の浮動小数点命令をマイクロプロセッサ内の浮動
小数点実行ユニットにディスパッチすることができる。
さらに、これらの浮動小数点命令は、プログラミング・
シーケンスから外れて、ストア多重命令の前に完了す
る。
【0019】本発明では、浮動小数点演算からの結果デ
ータが浮動小数点レジスタに格納されるのに対して、ロ
ード多重またはストア多重命令が汎用レジスタからスト
アを行うので、多重レジスタ命令を後続の浮動小数点命
令と直列化する必要がないことが認識される。その結
果、ロード多重命令またはストア多重命令に必要なレジ
スタの連続した組の全体が、浮動小数点命令の実行によ
って破壊される可能性がない。この種の早期完了は、例
外をもたらす命令が整順に完了しない場合であっても、
すべての事象がプログラム順で発生することの見通しを
プログラマが有しなければならないという要件に違反し
ない。浮動小数点演算の実行が例外をもたらすが、多重
レジスタ命令がまだ実行中の場合には、その例外はこの
多重レジスタ命令が完了するまで採用されない。
【0020】ここで図3を参照すると、本発明の好まし
い実施例による、本発明のマイクロプロセッサ内で1つ
のストア多重命令(Store Mult)と2つの浮動小数点命
令(FP Inst1およびFP Inst2)を処理するサイクルのタ
イミング図が示されている。1例として、下記の命令シ
ーケンスの処理を検討する。 stmw r28, r2, r1 fp-add r2, r2, r28 fp-add r3, r3, r30
【0021】図3からわかるように、ストア多重命令は
サイクル1の間に取り出され、サイクル2で復号され、
サイクル3でディスパッチされ、サイクル4ないしサイ
クル7の間にLSU28によって実行され、サイクル8
で完了する。本発明によれば、FP Inst1およびFP Inst2
を、ストア多重命令のディスパッチの前または後の任意
の時刻にディスパッチできるようにすることによって、
非整順完了がサポートされる。この例では、浮動小数点
命令は、先行するストア多重命令がサイクル3でディス
パッチされた後に、プログラム・シーケンス内でできる
限り早くディスパッチされる。FP Inst1はサイクル4の
間にディスパッチされ、1サイクルあたり1命令しか取
り出すことができないので、FP Inst2はサイクル5の間
にディスパッチされる。これらの浮動小数点命令は、ス
トア多重命令実行の進行に無関係に、FPU30内でサ
イクル5およびサイクル6に即座に実行することができ
る。浮動小数点命令1および2の結果は、それぞれサイ
クル6またはサイクル7までFPRリネーム・バッファ
37内に保持され、その時点で、結果のオペランドがそ
れぞれレジスタ2またはレジスタ3にストアされる。し
たがって、前に説明したように、浮動小数点命令は、プ
ログラム・シーケンス上で先行するストア多重命令が完
了する前に完了することができる。
【0022】要約すると、本発明は、先行するロード多
重命令またはストア多重命令の実行中の浮動小数点演算
の早期完了のための方法および装置を提供する。本発明
によれば、直列化が不要になり、追加の後続命令をロー
ド多重命令またはストア多重命令と同時に実行できるよ
うになるので、マイクロプロセッサ性能が実質的に向上
する。マイクロプロセッサの完了バッファに応じて、か
なりの量の追加命令を、多重レジスタ命令の実行中にマ
イクロプロセッサによって実行し、完了することができ
る。たとえば、5レジスタの完了バッファ深さを有する
好ましい実施例では、パイプライン・ストールなしで4
つまでの追加命令を完了させる潜在能力がある。ロード
多重命令またはストア多重命令の完了には最大36サイ
クルを要するので、本発明は、マイクロプロセッサの速
度と効率を強化する実質的な時間の節約をもたらす。
【0023】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0024】(1)複数の汎用レジスタのうちの複数の
レジスタからメモリへデータをストアまたはロードする
多重レジスタ命令を少なくとも1つ含み、ディスパッチ
ャと、複数の汎用レジスタと、複数の浮動小数点レジス
タと、ロード/ストア・ユニットおよび浮動小数点実行
ユニットを含む複数の実行ユニットとを含むスーパース
カラ・マイクロプロセッサにおいて、多重レジスタ命令
のディスパッチ時にその多重レジスタ命令の実行を開始
するロード/ストア・ユニットへ、ディスパッチャから
多重レジスタ命令をディスパッチするステップと、プロ
グラム順ではディスパッチされた多重レジスタ命令の後
に続き、複数の浮動小数点レジスタのうちの1つまたは
複数の浮動小数点レジスタに格納されたソース・オペラ
ンド・データに依存する浮動小数点命令を、浮動小数点
命令を実行する浮動小数点ユニットへ、ディスパッチャ
からディスパッチするステップと、多重レジスタ命令が
ロード/ストア・ユニットにディスパッチされた後で、
多重レジスタ命令の実行が終了する前に、浮動小数点命
令を完了するステップとを含む、スーパースカラ・マイ
クロプロセッサ内で複数の命令の非整順完了をサポート
する方法。 (2)多重レジスタ命令が、複数の汎用レジスタからメ
モリにデータをストアすることを特徴とする、上記
(1)に記載の方法。 (3)多重レジスタ命令が、メモリから複数の汎用レジ
スタにデータをロードすることを特徴とする、上記
(1)に記載の方法。 (4)整数データを選択的に格納する複数の汎用レジス
タと、浮動小数点データを選択的に格納する複数の浮動
小数点レジスタと、複数の汎用レジスタにデータをロー
ドするロード多重命令およびストアするストア多重命令
を実行する、ロード/ストア実行ユニットと、複数の浮
動小数点レジスタに格納されたオペランド・データに対
して浮動小数点演算を実行する浮動小数点実行ユニット
と、ロード/ストア実行ユニットおよび浮動小数点実行
ユニットを含む複数の実行ユニットに命令をディスパッ
チするディスパッチ・ユニットであって、多重レジスタ
命令の実行を開始するためにロード/ストア・ユニット
に多重レジスタ命令をディスパッチし、ロード/ストア
・ユニットで多重レジスタ命令が実行を終了する前に、
複数の浮動小数点レジスタのうちの1つまたは複数の浮
動小数点レジスタに格納されたソース・オペランド・デ
ータに依存する浮動小数点命令を、浮動小数点実行ユニ
ットにディスパッチするディスパッチ・ユニットとを含
み、ディスパッチされた浮動小数点命令が、多重レジス
タ命令が実行を終了する前に完了することを特徴とする
メモリに接続された、前のロード多重命令またはストア
多重命令から非整順に浮動小数点命令を完了することが
できるスーパースカラ・マイクロプロセッサ。
【図面の簡単な説明】
【図1】本発明の好ましい実施例による、情報を処理す
るためのプロセッサのブロック図である。
【図2】従来技術でロード多重命令またはストア多重命
令と後続の浮動小数点命令を処理するのに必要なサイク
ルのタイミング図である。
【図3】本発明の好ましい実施例による、本発明のマイ
クロプロセッサでロード多重命令またはストア多重命令
と後続の2つの浮動小数点命令とを処理するのに必要な
サイクルのタイミング図である。
【符号の説明】
10 プロセッサ 11 システム・バス 12 バス・インターフェース・ユニット(BIU) 14 命令キャッシュ 16 データ・キャッシュ 17 シーケンシャル・フェッチャ 18 分岐処理ユニット(BPU) 19 命令キュー 20 ディスパッチ・ユニット 22 固定小数点ユニット(FXU) 28 ロード/ストア・ユニット(LSU) 30 浮動小数点ユニット(FPU) 32 汎用レジスタ(GPR) 33 GPRリネーム・バッファ 36 浮動小数点レジスタ(FPR) 37 FPRリネーム・バッファ 40 完了ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ソウンミヤ・マリック アメリカ合衆国78729 テキサス州オース チン パートリッジ・ベンド・ドライブ 13032

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】複数の汎用レジスタのうちの複数のレジス
    タからメモリへデータをストアまたはロードする多重レ
    ジスタ命令を少なくとも1つ含み、ディスパッチャと、
    複数の汎用レジスタと、複数の浮動小数点レジスタと、
    ロード/ストア・ユニットおよび浮動小数点実行ユニッ
    トを含む複数の実行ユニットとを含むスーパースカラ・
    マイクロプロセッサにおいて、 多重レジスタ命令のディスパッチ時にその多重レジスタ
    命令の実行を開始するロード/ストア・ユニットへ、デ
    ィスパッチャから多重レジスタ命令をディスパッチする
    ステップと、 プログラム順ではディスパッチされた多重レジスタ命令
    の後に続き、複数の浮動小数点レジスタのうちの1つま
    たは複数の浮動小数点レジスタに格納されたソース・オ
    ペランド・データに依存する浮動小数点命令を、浮動小
    数点命令を実行する浮動小数点ユニットへ、ディスパッ
    チャからディスパッチするステップと、 多重レジスタ命令がロード/ストア・ユニットにディス
    パッチされた後で、多重レジスタ命令の実行が終了する
    前に、浮動小数点命令を完了するステップとを含む、ス
    ーパースカラ・マイクロプロセッサ内で複数の命令の非
    整順完了をサポートする方法。
  2. 【請求項2】多重レジスタ命令が、複数の汎用レジスタ
    からメモリにデータをストアすることを特徴とする、請
    求項1に記載の方法。
  3. 【請求項3】多重レジスタ命令が、メモリから複数の汎
    用レジスタにデータをロードすることを特徴とする、請
    求項1に記載の方法。
  4. 【請求項4】整数データを選択的に格納する複数の汎用
    レジスタと、 浮動小数点データを選択的に格納する複数の浮動小数点
    レジスタと、 複数の汎用レジスタにデータをロードするロード多重命
    令およびストアするストア多重命令を実行する、ロード
    /ストア実行ユニットと、 複数の浮動小数点レジスタに格納されたオペランド・デ
    ータに対して浮動小数点演算を実行する浮動小数点実行
    ユニットと、 ロード/ストア実行ユニットおよび浮動小数点実行ユニ
    ットを含む複数の実行ユニットに命令をディスパッチす
    るディスパッチ・ユニットであって、多重レジスタ命令
    の実行を開始するためにロード/ストア・ユニットに多
    重レジスタ命令をディスパッチし、ロード/ストア・ユ
    ニットで多重レジスタ命令が実行を終了する前に、複数
    の浮動小数点レジスタのうちの1つまたは複数の浮動小
    数点レジスタに格納されたソース・オペランド・データ
    に依存する浮動小数点命令を、浮動小数点実行ユニット
    にディスパッチするディスパッチ・ユニットとを含み、 ディスパッチされた浮動小数点命令が、多重レジスタ命
    令が実行を終了する前に完了することを特徴とするメモ
    リに接続された、前のロード多重命令またはストア多重
    命令から非整順に浮動小数点命令を完了することができ
    るスーパースカラ・マイクロプロセッサ。
JP08221086A 1995-09-11 1996-08-22 複数の命令の非整順完了をサポートする方法およびスーパースカラ・マイクロプロセッサ Expired - Fee Related JP3096429B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/526,610 US5850563A (en) 1995-09-11 1995-09-11 Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US08/526610 1995-09-11

Publications (2)

Publication Number Publication Date
JPH09138748A true JPH09138748A (ja) 1997-05-27
JP3096429B2 JP3096429B2 (ja) 2000-10-10

Family

ID=24098036

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08221086A Expired - Fee Related JP3096429B2 (ja) 1995-09-11 1996-08-22 複数の命令の非整順完了をサポートする方法およびスーパースカラ・マイクロプロセッサ

Country Status (4)

Country Link
US (1) US5850563A (ja)
EP (1) EP0762271A3 (ja)
JP (1) JP3096429B2 (ja)
KR (1) KR100260680B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100322149B1 (ko) * 1998-02-17 2002-02-04 포만 제프리 엘 고성능 추론적 스트링/다중 연산 방법
JP2015201026A (ja) * 2014-04-08 2015-11-12 富士通株式会社 演算処理装置および演算処理装置の制御方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789187B2 (en) * 2000-12-15 2004-09-07 Intel Corporation Processor reset and instruction fetches
DE10210085B8 (de) * 2002-03-08 2008-11-27 Technische Universität Hamburg-Harburg Verfahren und Prozessor zur Kombination von Daten- und Kontrollflußoperationen
US7308527B2 (en) * 2005-01-24 2007-12-11 International Business Machines Corporation System for indicating a plug position for a memory module in a memory system
US20060179286A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation System and method for processing limited out-of-order execution of floating point loads
CH716218B1 (de) 2019-05-24 2024-02-15 Digitum Ag System und Verfahren zur Autorisierung von Transaktionen.

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493020A (en) * 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
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
GB8817911D0 (en) * 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
JPH0673105B2 (ja) * 1988-08-11 1994-09-14 株式会社東芝 命令パイプライン方式のマイクロプロセッサ
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5241636A (en) * 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JP2556182B2 (ja) * 1990-08-29 1996-11-20 三菱電機株式会社 デ−タ処理装置
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
JP3544214B2 (ja) * 1992-04-29 2004-07-21 サン・マイクロシステムズ・インコーポレイテッド プロセッサの状態を監視する方法及び監視システム
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
JP2742375B2 (ja) * 1993-01-08 1998-04-22 インターナショナル・ビジネス・マシーンズ・コーポレイション スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5542109A (en) * 1994-08-31 1996-07-30 Exponential Technology, Inc. Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities
US5625789A (en) * 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100322149B1 (ko) * 1998-02-17 2002-02-04 포만 제프리 엘 고성능 추론적 스트링/다중 연산 방법
JP2015201026A (ja) * 2014-04-08 2015-11-12 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
US5850563A (en) 1998-12-15
KR970016946A (ko) 1997-04-28
EP0762271A2 (en) 1997-03-12
EP0762271A3 (en) 2000-11-15
JP3096429B2 (ja) 2000-10-10
KR100260680B1 (ko) 2000-07-01

Similar Documents

Publication Publication Date Title
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3580657B2 (ja) 並列マルチタスキングの方法及びシステム
KR930004214B1 (ko) 데이타 처리 시스템
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
JP2597811B2 (ja) データ処理システム
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
JPH09185506A (ja) プロセッサ内で命令を実行する方法およびシステム
JPH03116236A (ja) 例外処理方法及び例外処理装置
US5872948A (en) Processor and method for out-of-order execution of instructions based upon an instruction parameter
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US5678016A (en) Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization
JP3096429B2 (ja) 複数の命令の非整順完了をサポートする方法およびスーパースカラ・マイクロプロセッサ
US6092184A (en) Parallel processing of pipelined instructions having register dependencies
KR100267434B1 (ko) 제 1 처리 환경내에서 제 1 명령어를 에뮬레이션 환경내에서의제 2 명령어 처리 개시에 응하여 처리하는 방법 및 시스템
RU2150738C1 (ru) Система обработки и способ ее функционирования
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US5926645A (en) Method and system for enabling multiple store instruction completions in a processing system
EP0306891A2 (en) Pipelined slave protocol for high performance CPU-FPU cluster
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
US7991816B2 (en) Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units
JPH10283178A (ja) 命令を発行するための方法及びシステム

Legal Events

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