JPH09120360A - ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法 - Google Patents

ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法

Info

Publication number
JPH09120360A
JPH09120360A JP7160147A JP16014795A JPH09120360A JP H09120360 A JPH09120360 A JP H09120360A JP 7160147 A JP7160147 A JP 7160147A JP 16014795 A JP16014795 A JP 16014795A JP H09120360 A JPH09120360 A JP H09120360A
Authority
JP
Japan
Prior art keywords
load
instruction
unit
store
data
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
JP7160147A
Other languages
English (en)
Inventor
David P Burgess
デビッド・ピー・バージェス
Marvin A Denman
マービン・デンマン
Milton M Hood Jr
ミルトン・エム・フッド,ジュニア
A Kearny Mark
マーク・エイ・ケアニイ
Kling Lavanya
ラバンヤ・クリング
R Murphy Graham
グラハム・アール・マーフィ
Seungyoon P Song
ソンヨーン・ピーター・ソング
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
Motorola Solutions Inc
Original Assignee
International Business Machines Corp
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp, Motorola Inc filed Critical International Business Machines Corp
Publication of JPH09120360A publication Critical patent/JPH09120360A/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/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/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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3824Operand accessing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 ロード/ストア命令を実行するユニットを改
善する。 【構成】 データ・プロセッサ10は、簡易ロード命令
又はストア命令として、ロード/ストア・マルチプル及
びロード/ストア・ストリング命令をロード/ストア・
ユニット28にディスパッチする。シーケンサ・ユニッ
ト18は、リネーム・バッファ34のエントリを割り当
て、このエントリに対してロード/ストア・ユニットは
各簡易ロード命令のデータをライトバックする。この技
法は、以降の命令について早期データ転送を容易にす
る。逆に、シーケンサ・ユニットは、簡易ストア命令の
オペランドを供給できない場合に、リネーム・バッファ
・タグをロード/ストア・ユニットに供給する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般に、デジタル・コ
ンピューティング・システムに関し、さらに詳しくは、
ロードおよびストア命令に関する。
【0002】
【従来の技術】すべてのデータ・プロセッサは、内部計
算の結果を、データ・プロセッサがその一部であるデー
タ処理システムの残りの部分に、あるいはその逆に移動
するための命令を実行する。これらの計算の結果は、格
納または後で利用するために外部メモリ・システムに移
動したり、ユーザに表示するためにCRTに移動した
り、別のデータ処理システムに伝送するためにネットワ
ークに移動される。これらの命令は、「ストア(store)
」または「ライト(write) 」命令という場合が多い。
逆に、データは外部メモリ・システムからや、キーボー
ドなどの入出力(I/O)デバイスからデータ処理シス
テムに移動でき、ここで処理される。これらの命令は、
「ロード(load)」または「リード(read)」命令という場
合が多い。
【0003】特定のコンピュータ・アーキテクチャ内で
もさまざまなロード/ストア命令がある。さまざまなロ
ード/ストア命令は、ソフトウェア・プログラマの負担
を軽減する。これら各命令は、転送されるデータの量,
データ・ソースまたはデスティネーションのアドレスの
計算,データのフォーマットなどの点で互いに異なる。
1つの種類のロード/ストア命令として、「ロード・マ
ルチプル(load multiple) 」または「ストア・マルチプ
ル(store multiple)」命令がある。これら2つの命令
は、数プロセッサ・クロック・サイクル中に一連の順次
メモリ番地の内容を一連の順次内部レジスタにロードす
る。メモリ番地の数,メモリ・アドレスの開始アドレス
および内部レジスタの開始アドレスは、命令フォーマッ
トおよびそのオペランドによって決定される。
【0004】ロード/ストア・マルチプル命令は、パイ
プラインド・データ・プロセッサ(pipelined data proc
essor)において実行するのが困難な命令である。特定の
データ・プロセッサ、特にRISC(reduced instructi
on set computers) や一部のCISC(complex instruc
tion set computers) は、性能を向上させるため命令処
理を重複させる。この方法は、ロード/ストア・マルチ
プル命令によって無効(defeat)にされる場合が多い。例
えば、シングル・ロード・マルチプル命令は、各内部レ
ジスタを更新することがある。命令ストリーム内のすべ
てのそれ以降の命令は、関連データが利用できるまで遅
延しなければならない。逆に、シングル・ストア・マル
チプル命令は、各内部レジスタを出力することがある。
この命令は、データが利用可能になるまで遅延しなけれ
ばならない。また、ストア・マルチプル命令は、ある種
の内部キュー(internal queue)にバッファしなければな
らない。そのため、この方法は、他の命令がこれらのリ
ソースを利用することを妨げる。
【0005】
【発明が解決しようとする課題】本発明により、既知の
データ・プロセッサおよび方式の欠点を実質的に解消す
る、ロード命令を実行する実行ユニットを有するデータ
・プロセッサおよびその動作方法を提供する。
【0006】
【課題を解決するための手段】本発明のデータ・プロセ
ッサは、複数のアーキテクチャ・レジスタ(architectur
al register),リネーム・バッファ(rename buffer) ,
ロード・ユニットおよび互いに接続されたシーケンサ・
ユニットを有する。リネーム・バッファは、複数の命令
のうち異なる1つの命令の複数の結果のうち異なる1つ
の結果をバッファする複数のエントリを有する。ディス
パッチされる各ロード命令タグ・ペアについて、ロード
・ユニットは、メモリ・システムからのアドレスによっ
てインデクスされたデータを要求する。また、ロード・
ユニットは、ロード命令タグ・ペア内のタグによって指
定されるように、リネーム・バッファの複数のエントリ
のうちの1つにデータをバッファする。シーケンサ・ユ
ニットは、N*Wバイトを要求するロード・マルチプル
命令を受け、ここでNおよびWは整数であり、Nは1よ
り大きく、複数のアーキテクチャ・レジスタのそれぞれ
はWバイト・サイズである。次に、シーケンサ・ユニッ
トは、N個のロード命令タグ・ペアをロード・ユニット
にディスパッチする。
【0007】本発明の方法は、第1回目に、シーケンサ
・ユニットにおいてロード・マルチプル命令を受ける段
階と、その後のN回目にN個のロード命令タグ・ペアを
ロード・ユニットにディスパッチし、リネーム・バッフ
ァの複数のエントリのうち異なる1つを複数のアーキテ
クチャ・レジスタのうち異なる1つにストアする段階を
有する。ロード・マルチプル命令は、N*Wバイトのデ
ータを要求し、ここでNおよびWは整数であり、Nは1
よりも大きく、複数のアーキテクチャ・レジスタのそれ
ぞれはWバイト・サイズである。ディスパッチされる各
ロード命令タグ・ペアについて、ロード・ユニットは、
メモリ・システムからのアドレスによってインデクスさ
れたWバイトのデータを要求する。また、ロード・ユニ
ットは、リネーム・バッファの複数のエントリのうち1
つにWバイトのデータをバッファする。ロード命令タグ
・ペアのタグは、特定のインデクス済みエントリを識別
する。
【0008】本発明の特徴および利点は、図面とともに
以下の詳細な説明から明らかになろう。ただし、同様な
参照番号は、同様な対応する部分を表す。
【0009】
【実施例】図1は、本発明により構成されるデータ・プ
ロセッサ10のブロック図を示す。データ・プロセッサ
10は、パワーPCアーキテクチャ命令セットを実行す
る。パワーPCアーキテクチャ命令セットは、ロード/
ストア・マルチプル命令およびロード/ストア・ストリ
ング命令を含む。データ・プロセッサ10は、命令スト
リームをを実行する際にこれらの命令の存在を判定し、
これらの命令を個別のロード命令または個別のストア命
令のシーケンスに「アンロール(unroll)」または分割す
る。例えば、データ・プロセッサ10が16個の順次内
部レジスタの内容を16個の順次メモリ番地に出力する
ストア・マルチプル命令に遭遇すると、データ・プロセ
ッサ10は16個のシングル・レジスタ・ストア命令を
ディスパッチする。この方式では、データ・プロセッサ
10は、ロード/ストア・マルチプル命令についてその
リネーミング方法を利用できる。また、データ・プロセ
ッサ10は、ロード/ストア・マルチプル命令以外の他
の命令をディスパッチできる。
【0010】さらに図1において、バス・インタフェー
ス・ユニット(以下ではBIU)12は、データ・プロ
セッサ10とデータ処理システムの残りの部分(図示せ
ず)との間のデータのフローを制御する。BIU12
は、命令キャッシュ14とデータ・キャッシュ16とに
接続される。命令キャッシュ14は、命令ストリームを
シーケンサ・ユニット18に供給する。シーケンサ・ユ
ニット18は、個別の命令を適切な実行ユニットに転送
する。データ・プロセッサ10は、ブランチ・ユニット
20,固定小数点実行ユニットA22,固定小数点実行
ユニットB24,複素(complex) 固定小数点実行ユニッ
ト26,ロード/ストア実行ユニット28および浮動小
数点実行ユニット30を有する。固定小数点実行ユニッ
トA22,固定小数点実行ユニットB24,複素固定小
数点実行ユニット26およびロード/ストア実行ユニッ
ト28は、その結果を汎用アーキテクチャ・レジスタ・
ファイル32(GPRと表し、以下ではGPRファイル
という)および第1リネーム・バッファ34に対して読
み書きする。第1リネーム・バッファについては、図3
および図4で詳しく説明する。浮動小数点実行ユニット
26およびロード/ストア実行ユニット28は、その結
果を浮動小数点アーキテクチャ・レジスタ・ファイル3
6(FPRと表し、以下ではFPRファイルという)お
よび第2リネーム・バッファ38に対して読み書きす
る。
【0011】本開示の発明を具備しないデータ・プロセ
ッサ10の動作は当技術分野で周知である。一般に、ブ
ランチ・ユニット20は、特定のデータ・レジスタの内
容および命令自体を考慮して、プログラム済み命令のど
のシーケンスが適切かを判定する。命令キャッシュ14
は、このプログラム済み命令のシーケンスをシーケンサ
18に与える。命令キャッシュ14が必要な命令を格納
していない場合、データ・プロセッサ10に対して外部
のメイン・メモリ(図示せず)からこれらの命令をフェ
ッチする。
【0012】シーケンサ・ユニット18は、プログラム
済み命令のシーケンスの個別の命令を各実行ユニット2
0,22,24,26,28,30にディスパッチす
る。また、シーケンサ・ユニット18は、各命令の結果
がもしあればその結果を一時的に格納するためのリネー
ム・バッファ34または38のいずれかにエントリを確
保(reserve) する。両方のリネーム・バッファは、先入
れ先出し(FIFO)キューである。
【0013】各実行ユニットは、特定のクラスの命令の
1つまたはそれ以上の命令を実行する。各実行ユニット
の特定のクラスの命令は、実行ユニットの名前によって
表される。例えば、固定小数点実行ユニットA,Bは、
加算,減算,論理積(AND),論理和(OR),排他
的論理和(XOR)など、固定小数点で表されるオペラ
ンドに対する単純な演算を実行する。複素固定小数点実
行ユニット26は、乗算および除算など、固定小数点で
表されるオペランドに対するより複雑な演算を実行す
る。浮動小数点実行ユニット30は、乗算および除算な
ど、浮動小数点で表されるオペランドに対する演算を実
行する。
【0014】固定小数点実行ユニットA,Bおよび複素
固定小数点実行ユニット26は、その演算の結果を第1
リネーム・バッファ34内の指定されたエントリにリタ
ーンする。結果を生成した命令に先立つすべての命令が
そのGRPファイル・エントリを更新した場合には、第
1リネーム・バッファ34は、GPRファイル32のエ
ントリを第1リネーム・バッファ34からのエントリで
周期的に更新する。シーケンサ・ユニット18は、この
更新を調整するためリオーダ・バッファ(reorder buffe
r)39を維持する。リオーダ・バッファ39は、プログ
ラム済み命令ストリームの一部を元の順番に格納するF
IFOキューである。シーケンサ・ユニット18は、リ
オーダ・バッファ39内の最古の命令が完了するまで待
つ。次に、シーケンサ・ユニット18は、命令について
割り当てられたリネーム・バッファ・エントリに格納さ
れた結果でアーキテクチャ・レジスタを更新する。ま
た、シーケンス・ユニット18は、それ以降の命令の余
地を設けるためリオーダ・バッファ39における命令の
エントリを無効にする。第1リネーム・バッファ34お
よびGPRファイル32の両方は、固定小数点実行ユニ
ットA,Bおよび複素固定小数点実行ユニット26にオ
ペランドを供給できる。
【0015】浮動小数点実行ユニット30は、その演算
を第2リネーム・バッファ38内の指定されたエントリ
にリターンする。結果を生成した命令に先立つすべての
命令がそのFPRファイル・エントリを更新した場合
に、第2リネーム・バッファ38は、FPRファイル3
6のエントリを第2リネーム・バッファ38内のエント
リで周期的に更新する。また、シーケンサ・ユニット3
8はこの更新を調整する。第2リネーム・バッファ38
およびFPRファイル36の両方は、オペランドを浮動
小数点実行ユニット30に供給する。
【0016】ロード/ストア・ユニット28は、GPR
ファイル32またはFPRファイル36に格納されたデ
ータを完了時に読み出し、選択されたデータをデータ・
キャッシュ16に書き込む。このデータは、本発明とは
関係ないデータ・プロセッサ10の動作特性に応じて、
外部メモリ・システム(図示せず)にも書き込まれるこ
とがある。逆に、ロード/ストア・ユニット28は、デ
ータ・キャッシュ16に格納されたデータを読み出し、
この読み出したデータを第1リネーム・バッファ34ま
たは第2リネーム・バッファ38に書き込む。データ・
キャッシュ16が必要なデータを格納していない場合、
データ・プロセッサ10に対して外部のメイン・メモリ
・システムからBIU12を介してこのデータをフェッ
チする。ロード/ストア・ユニット28については図3
および図4を参照して以下で説明する。
【0017】本発明を具備するデータ・プロセッサ10
の動作について図2ないし図4を参照して以下で説明す
る。一般に、データ・プロセッサ10は、縮小命令セッ
ト・コンピュータ(RISC)である。データ・プロセ
ッサ10は、各命令を小さいステップのシーケンスに分
割し、各ステップを他の命令のステップと時間的に重複
させることによって高性能を達成する。この性能方法
は、「パイプライン処理(pipelining)」という。
【0018】図2は、図1に示すデータ・プロセッサ1
0によって実行される命令のタイミング図を示す。図示
の実施例では、各命令は5つの個別のステップ、すなわ
ちフェッチ(fetch) ,デコード(decode),ディスパッチ
(dispatch),実行(execute)および完了(completion)に
分割される。
【0019】フェッチ段階では、命令キャッシュ14内
のメモリ管理回路(図示せず)は、前のクロック・サイ
クルにおいてシーケンサ・ユニット18またはブランチ
・ユニット20によって識別されたメモリ・アドレスか
ら、1つまたはそれ以上の命令を取り出す。
【0020】デコード段階では、命令は、その後の段階
によって利用される多数の制御信号にシーケンサ・ユニ
ット18によってデコードされる。この段階中に、シー
ケンサ・ユニット18は、ロード/ストア・マルチプル
命令が存在することを判定する。
【0021】ディスパッチ段階では、シーケンサ・ユニ
ット18は、許容不可データまたはリソース依存が無い
ことを判定した後、および命令の結果についてリネーム
・バッファ・エントリを確保した後、各命令を適切な実
行ユニットに転送する。また、ディスパッチ段階は、デ
ィスパッチされる命令についてオペランド情報を供給す
る責任があり、また1つまたはそれ以上のオペランドが
まだない場合には、オペランドが書き込まれるリネーム
・バッファ・エントリを識別するタグを供給する責任が
ある。各実行ユニットは、命令を実行するためにすべて
の必要なオペランド情報を受け取るまで、その特定の命
令をリザベーション・ステーション(reservation stati
on) に格納する。シーケンサ・ユニット18は、1つの
ロード/ストア・マルチプル命令を一連の簡易ロード/
ストア命令に分割する。シーケンサ・ユニット18は、
各簡易ロード命令についてリネーム・バッファ・エント
リを確保する。各簡易ロード命令は、最初にそのデータ
をこの指定された命令に書き込む。その後、シーケンサ
・ユニット18は、このデータを対応するアーキテクチ
ャ・レジスタにコピーする。アーキテクチャ・レジスタ
の1つの内容を必要とするその後の命令は、データがバ
ッファされるリネーム・バッファ・エントリを指定する
タグを受け取る。この技法は、その後の命令のディスパ
ッチを高速化する。同様に、シーケンサ・ユニット18
は、各1つの簡易ストア命令とともにリネーム・バッフ
ァ・タグを転送する。このタグは、ストア・データが最
初にどこで見つかるかを識別する。
【0022】実行段階では、各特定の実行ユニットは、
必要なオペランド情報のすべて(または一部)を受け取
り、そのためそのプログラム済み命令の実行を開始でき
る。結果は、整数および浮動小数点結果のそれぞれにつ
いて、第1リネーム・バッファ34または第2リネーム
・バッファ38のいずれかにリターンされる。ロード/
ストア・ユニット28は、ロード/ストア命令のオペラ
ンドおよびそのフォーマットに基づいて、デスティネー
ション・メモリ番地の有効アドレスを算出する。ロード
/ストア・ユニット28は、命令をロードまたはストア
・キュー(図3)に移動することができる。また、デー
タ・キャッシュ16は算出された有効アドレスを実アド
レスに変換開始する。データ・プロセッサ10は、有効
アドレスを内部的に利用して各可能なメモリ番地をイン
デクスし、また実アドレスを外部的に利用して各可能な
メモリ番地をインデクスする。データ・プロセッサ10
は、あるフォーマットから別のフォーマットに変換する
ためにアドレス変換テーブル(図示せず)を維持する。
【0023】ストア命令は、1つまたはそれ以上の追加
実行段階を必要とすることがある。ストア命令がデータ
・キャッシュ16を即時アクセスできない場合、ストア
命令は、以下で説明するようにストア・バッファにとど
まる。
【0024】完了段階では、特定の命令に先立つ各命令
がアーキテクチャ・レジスタ・ファイルを更新した後、
シーケンサ・ユニット18は、アーキテクチャ・レジス
タ・ファイルを、リネーム・バッファに格納された特定
の命令の結果で更新する。この条件が満たされたとき
は、命令はリオーダ・バッファ39内の最古の命令であ
る。また、完了段階は、特定の命令に先立つ各命令がア
ーキテクチャ・ステートを更新した後に、マシーンにお
ける他のすべてのアーキテクチャ・ステートを更新す
る。ストア命令は、これらのストア命令に先立つすべて
の命令が完了したときにデータ・キャッシュ16に与え
られる。
【0025】一般に、各命令段階は、1マシーン・クロ
ック・サイクルを要する。ただし、複素固定小数点命令
などの一部の命令は、実行するために2つ以上のクロッ
ク・サイクルを必要とする。従って、前の命令が実行す
るために要した時間の範囲により、特定の命令の実行段
階と完了段階との間に遅延が生じることがある。
【0026】図3は、図1に示すロード/ストア・ユニ
ット28のブロック図を示す。ロード/ストア・ユニッ
ト28は、各ロード/ストア命令に関するさまざまな情
報を格納するリザベーション・ステーション40を有す
る。リザベーション・ステーション40は、シーケンサ
・ユニット18からのストア命令またはロード命令のい
ずれかと、2つのオペランドAおよびBと、リネーム・
タグとを受け取る。リネーム・タグは、ロード・データ
のリネーム・バッファの1つにおけるデスティネーショ
ンを識別する。マルチプレクサ(MUX)41は、2つ
の入力のうち1つをリザベーション・ステーションにオ
ペランドAとして出力する。マルチプレクサ43は、2
つの入力のうち1つをリザベーション・ステーション4
0にオペランドBとして出力する。各マルチプレクサ4
1,43は、GPRファイル32と第1リネーム・バッ
ファ34とに接続された結果バスから1つの入力を受け
取る。リザベーション・ステーション40は、2つのオ
ペランドおよび命令を加算器42およびラッチ44にそ
れぞれ転送する。加算器42は、2つのオペランドを数
学的に加算することにより、各ロード/ストア命令のソ
ース/デスティネーションの有効アドレスを算出する。
加算器42の出力はラッチ46によってラッチされ、デ
ータ・キャッシュ16とマルチプレクサ41の第2入力
とに転送される。ラッチ44,46は、グローバル周期
クロック信号(図示せず)によってクロックされる。マ
ルチプレクサ43の第2入力は、1対4発生器(one-to-
four generator) 45の出力を受け取る。1対4発生器
45は、「CONTROL」と記されたシーケンサ・ユ
ニット18からの制御情報を受け取り、この情報を利用
して、どの入力をマルチプレクサ41,42がリザベー
ション・ステーション40に出力するかを選択する。
【0027】ラッチ44,46によってラッチされる命
令および有効アドレスは、ストア・キュー48とロード
・キュー50とに転送される。制御論理ユニット52
は、命令のクラスに応じて2つのキューのうちどれがデ
ータをラッチするかを選択する。制御論理ユニット52
は、この転送を簡単にするためリザベーション・ステー
ション40から命令オプコードを受け取る。また、制御
論理ユニット52は、データ・キャッシュ16およびシ
ーケンサ・ユニット18からさまざまな制御信号を受け
取る。制御論理ユニット52は、3つの入力のうちどの
入力をマルチプレクサ54がデータ・キャッシュ16に
出力するのかを制御する。マルチプレクサ54は、ラッ
チ46,ストア・キュー48およびロード・キュー50
からアドレスを受け取る。制御論理ユニット52の動作
について以下で説明する。
【0028】ロードおよびストア動作に関するデータ・
プロセッサ10の動作について、2つの部分で説明す
る。これら2つの部分は、一般に、データ・プロセッサ
10におけるロードまたはストア命令の流れに従う。ま
ず、一連の簡易ロード/ストア命令にロード/ストア・
マルチプル命令を「アンロール(unrolling) 」すること
について説明する。次に、ロード・キュー50またはス
トア・キュー48に各簡易ロード/ストア命令をバッフ
ァすることについて説明する。
【0029】ロード/ストア・マルチプル命令のアンロ
ール データ・プロセッサ10は、パワーPCアーキテクチャ
を構成したものである。パワーPCアーキテクチャ命令
セットは、ロード命令およびストア命令の両方について
3種類の複素形式、すなわち(1)マルチプル・ワード
(multiple word) ,(2)ストリング・ワード・イミデ
ィエイト(string word immediate) および(3)ストリ
ング・ワード・インデクスト(string word indexed) を
定義する。
【0030】ロード・マルチプル・ワード 「lmw
RT.D(RA)」 ロード・マルチプル・ワード命令は、N個の連続したワ
ード(1ワードあたり32ビット)の内容をGPRファ
イル32のN個の連続したレジスタにロードし、ここで
Nは(32−RT)に等しい整数である。慣例により、
GPRファイル32の32個のレジスタは、0から31
まで番号がつけられる。GPRファイル32の各レジス
タは、4バイトまたは1ワード幅である。ロード・マル
チプル命令によって読み出されるデータは、レジスタR
A(オペランドA)とフィールドD(オペランドB)と
の和によって指定されるメモリ・アドレスから開始す
る。このデータは、RTによって指定されるレジスタか
ら開始する一連のレジスタにロードされる。
【0031】シーケンサ・ユニット18は、ロード・マ
ルチプル・ワード命令をデコードし、(32−RT)個
のシングル・ロード命令をロード/ストア・ユニット2
8にディスパッチする。シーケンサ・ユニット18は、
各以降のロード命令についてロード・データのデスティ
ネーション・レジスタ番号(RT)を1だけインクリメ
ントする。このデスティネーションは、適切なアーキテ
クチャ・レジスタに対するデータのその後の転送を簡単
にするためにリネーム・バッファ34に格納される。シ
ーケンサ・ユニット18は、(32−RT)個の命令の
各1つに異なるリネーム・バッファ・エントリおよび異
なるリオーダ・バッファ・エントリを割り当てる。
【0032】シーケンサ・ユニット18は、1対4発生
器45に対する制御信号をアサートし、特定のディスパ
ッチされた命令がロード・マルチプル・ワード命令であ
ることを表す。まず最初に、1対4発生器45は、マル
チプレクサ41,43に結果バスに結合された入力を出
力させる。各以降の(31−N)個の命令において、1
対4発生器45はマルチプレクサ41,43に、加算器
42と1対4発生器45とに結合された入力を出力させ
る。また、1対4発生器45は、番号4をマルチプレク
サ45に出力する。機能的には、以前の有効アドレスに
加算された番号4の出力は、ロード/ストア・ユニット
28に、データ・キャッシュ16または外部メモリ・シ
ステムから次の整合ワード(aligned word)を要求させ
る。
【0033】制御論理ユニット52は、シーケンサ・ユ
ニット18によって指定される異なるリネーム・バッフ
ァ・エントリに各ロード命令をライトバックする。この
技法により、以降の命令は、ロード命令のアーキテクチ
ャ・レジスタの更新、すなわち「データ転送(data forw
arding) 」前に、その計算についてデータにアクセスで
きる。各ロード命令は、ディスパッチされるとすぐに、
「推論的(speculatively) 」にデータ・キャッシュ16
へのアクセスが許される。必要ならば、各ロード命令
は、そのリオーダ・バッファ39のエントリが最古のエ
ントリの場合に、「非推論的(non-speculatively) 」に
外部メモリシステムへのアクセスが許される。
【0034】ストア・マルチプル・ワード 「stmw
RS.D(RA)」 ストア・マルチプル・ワード命令は、GPRファイル3
2のN個の連続したレジスタの内容をN個の連続したメ
モリ・ワードの内容にストアし、ここでNは(32−R
S)に等しい整数である。ストア・マルチプル命令は、
レジスタRA(オペランドA)とフィールドD(オペラ
ンドB)との和によって指定されるメモリ・アドレスか
ら開始する。データは、RSによって指定されるレジス
タから開始する一連のレジスタにロードされる。
【0035】シーケンサ・ユニット18は、ストア・マ
ルチプル・ワード命令をデコードし、(32ーRS)個
のシングル・ストア命令をロード/ストア・ユニット2
8にディスパッチする。シーケンサ・ユニット18は、
各以降のストア命令についてストア・データのソース・
レジスタ番号(RS)を1だけインクリメントする。ス
トア命令がデータ・プロセッサ10における最古の命令
のとき、シーケンサ・ユニット18は、これらのレジス
タからのデータ(まず、RS)をロード/ストア・ユニ
ット28に供給する。(以下の説明を参照。) シーケンサ・ユニット18は、1対4発生器45に対す
る制御信号をアサートし、特定のディスパッチされた命
令がストア・マルチプル・ワード命令であることを表
す。まず最初に、1対4発生器45は、マルチプレクサ
41,43に結果バスに結合された入力を出力させる。
各以降の(31−N)個のストア命令において、1対4
発生器45は、マルチプレクサ41,43に加算器42
と1対4発生器45とに結合された入力を出力させる。
また1対4発生器45は、番号4をマルチプレクサ45
に出力する。機能的には、以前の有効アドレスに加算さ
れた番号4の出力は、ロード/ストア・ユニット28
に、データ・キャッシュ16または外部メモリ・システ
ムにおいて次のワードをインデクスさせる。
【0036】各ストア命令は、そのリオーダ・バッファ
39のエントリが最古のエントリの場合にのみ、データ
・キャッシュ16および外部メモリ・システムに対する
アクセスが許される。
【0037】ロード・ストリング・ワード・イミディエ
イト 「lswi RT.RA.NB」 ロード・ストリング・ワード・イミディエイト命令は、
連続したNBメモリ・バイトの内容をGPRファイル3
2の(NB/4,次の整数に丸められる)個の連続した
レジスタにロードする。ロード・ストリング・ワード・
イミディエイト命令は、レジスタRAの内容によって指
定されるメモリ・バイト・アドレスから、およびRTに
よって指定されるレジスタから開始する。この命令に
は、「B有効アドレス・オペランド」はない。
【0038】シーケンサ・ユニット18は、ロード・ス
トリング・ワード・イミディエイト命令をデコードし、
(NB/4,次の整数に丸められる)個のシングル・ロ
ード命令をロード/ストア・ユニット28にディスパッ
チする。シーケンサ・ユニット18は、各以降のロード
命令についてロード・データのデスティネーション・レ
ジスタを1だけインクリメントする。デスティネーショ
ン・レジスタは、NBおよびRTの値に応じて、レジス
タ32からレジスタ0に「ラップアラウンド(wrap arou
nd) 」することがある。それ以外では、シーケンサ・ユ
ニット18の動作は、ロード・マルチプル・ワード命令
における動作と同様である。
【0039】シーケンサ・ユニット18は、1対4発生
器45に対する制御信号をアサートし、特定のディスパ
ッチされた命令がロード・ストリング・ワード・イミデ
ィエイト命令であることを表す。まず最初に、1対4発
生器45は、マルチプレクサ41,43に結果バスに結
合された入力を出力させる。各ロード・ストリング・ワ
ード・イミディエイト命令は、整合(aligned) または非
整合(mis-aligned) のいずれかである。整合ロード・ス
トリング・ワード・イミディエイト命令における第1バ
イトの2最下位ビットはゼロである。非整合ロード・ス
トリング・ワード・イミディエイト命令における第1バ
イトの2最下位ビットは、ともにゼロでない。ロード/
ストア・ユニット28は、整合および非整合ロード・ス
トリング・ワード・イミディエイト命令について機能が
異なる。
【0040】整合ロード・ストリング・ワード・イミデ
ィエイト命令では、制御論理ユニット52は、データ・
キャッシュ16に対して(NB/4,次の整数に丸めら
れる)回のアクセスを行う。この動作は、上記のロード
・マルチプル・ワード命令と同様である。
【0041】非整合ロード・ストリング・ワード・イミ
ディエイト命令では、ロード/ストア・ユニット28
は、データ・キャッシュ16に対して(NB/4+1,
次の整数に丸められる)回のアクセスを行う。この技法
により、各モディファイされたレジスタについてリネー
ム・バッファ34に対する1つのライトバック動作が保
証される。それ以外では、3つのアーキテクチャ・レジ
スタを更新するために、2つのキャッシュ・アクセスが
必要とされる。まず最初に、制御論理ユニット52は、
ロード・ストリング・ワード・イミディエイト命令が非
整合であることを判定する。1対4発生器45は、マル
チプレクサ41,43に結果バスに結合された入力を出
力させる。各以降のロード命令について、1対4発生器
45は、マルチプレクサ41,43に、加算器42と1
対4発生器45に結合された入力を出力させる。第2ロ
ード命令中に、1対4発生器45は、番号1〜4のうち
1つをマルチプレクサ45に出力し、このマルチプレク
サ45は、RAによって指定されるバイトの直後の整合
ワードをインデクスする。ロード/ストア・ユニット2
8は、2つのロード命令を完了した後に、第1レジスタ
の新規データをリネーム・バッファ34の適切なエント
リに書き込むことができる。図示しない回路は、4つの
連続したバイトがリネーム・バッファ34のシングル・
エントリにロードされるまで、非整合データをバッファ
する。それ以降、1対4発生器は、番号4を出力する。
ロード/ストア・ユニット28は、各以降のロード命令
の後に、各以降のレジスタの新規データをリネーム・バ
ッファ34の適切なエントリに書き込むことができる。
最後に、最後の2つのロード命令は、制御論理ユニット
52によってモディファイされる。最後から2番目のロ
ード命令は、1バイトのみを要求する。最後のロード命
令は、ロード・ストリング・ワード・イミディエイト命
令を完了するために必要な残りのバイト(3バイトま
で)を要求する。それ以外では、シーケンサ・ユニット
18の動作は、ロード・マルチプル・ワード命令におけ
る動作と同様である。
【0042】ストア・ストリング・ワード・イミディエ
イト 「stswi RS.RA.nB」 ストア・ストリング・ワード・イミディエイト命令は、
GPRファイル32の(NB/4,次の整数の丸められ
る)個の連続したレジスタの内容を連続したNBメモリ
・バイトの内容にストアする。ストア・ストリング・ワ
ード・イミディエイト命令は、レジスタRAの内容によ
って指定されるメモリ・アドレスから、およびRSによ
って指定されるレジスタから開始する。この命令には
「B有効アドレス・オペランド」はない。
【0043】シーケンサ・ユニット18は、ストア・ス
トリング・ワード・イミディエイト命令をデコードし、
(NB/4,次の整数に丸められる)個のシングル・ス
トア命令をロード/ストア・ユニット28にディスパッ
チする。シーケンサ・ユニット18は、各以降のストア
命令についてストア・データのソース・レジスタを1だ
けインクリメントする。シーケンサ・ユニット18は、
ストア命令がデータ・プロセッサ10における最古の命
令である場合に、これらのレジスタからのデータ(最初
にRS)をロード/ストア・ユニット28に供給する。
(以下の説明を参照。)それ以外では、シーケンサ・ユ
ニット18の動作は、ストア・マルチプル・ワード命令
における動作と同様である。
【0044】シーケンサ・ユニット18は、1対4発生
器45に対する制御信号をアサートし、特定のディスパ
ッチされた命令がストア・ストリング・ワード・イミデ
ィエイト命令であることを表す。各ストア・ストリング
・ワード・イミディエイト命令は、整合または非整合の
いずれかである。整合ストア・ストリング・ワード・イ
ミディエイト命令における第1バイトの2最下位ビット
はゼロである。非整合ストア・ストリング・ワード・イ
ミディエイト命令における第1バイトの2最下位ビット
はともにゼロでない。ロード/ストア・ユニット28
は、整合および非整合ストア・ストリング・ワード・イ
ミディエイト命令について機能が異なる。整合ストア・
ストリング・ワード・イミディエイト命令では、ロード
/ストア・ユニット28は、データ・キャッシュ16に
対して(NB/4,次の整数に丸められる)回のアクセ
スを行う。この動作は、上記のストア・マルチプル・ワ
ード命令と同様である。
【0045】非整合ストア・ストリング・ワード・イミ
ディエイト命令では、ロード/ストア・ユニット28
は、データ・キャッシュ16に対して(2*NB/4+
1,次の整数に丸められる)回のアクセスを行う。ロー
ド/ストア・ユニット28は、これにディスパッチされ
た最後のストア命令以外のすべてについてデータ・キャ
ッシュ16に対して一対のアクセスを生成し、また最後
のストア命令について単一アクセスを生成する。まず最
初に、1対4発生器45は、マルチプレクサ41,43
に結果バスに結合された入力を出力させる。ロード/ス
トア・ユニット28は、命令によってプログラムされる
バイトのみをデータ・キャッシュ16に書き込む。制御
論理ユニット52は、ワード整合アクセスを完了するた
め同じストア命令を繰り返す。1対4発生器45は、第
2命令のアドレスを次の整合ワードにインクリメントす
る。ここで、ロード/ストア・ユニット28は、データ
・キャッシュ16に対する以前のアクセスと併せて4と
なるために必要なバイト数のみを書き込む。1対4発生
器および制御論理ユニット52は、最後の命令まで各非
整合ワード・アクセスを2分するプロセスを継続する。
このとき、制御論理ユニット52はデータ・キャッシュ
16に対して1回アクセスするだけでよい。
【0046】ロード・ストリング・ワード・インデクス
ト 「lswx RT.RA.RB」 ロード・ストリング・ワード・インデクスト命令は、連
続したMメモリ・バイトの内容をGPRファイル32の
(M/4,次の整数に丸められる)個の連続したレジス
タにロードする。Mは、専用レジスタ(図示せず)にお
けるフィールドである。ロード・ストリング・インデク
スト命令は、レジスタRAおよびレジスタRBの内容の
和によって指定されるメモリ・バイト・アドレスから、
およびRTによって指定されるレジスタから開始する。
それ以外では、ロード・ストリング・ワード・インデク
スト命令は、ロード・ストリング・イミディエイト命令
と同様である。
【0047】ストア・ストリング・ワード・インデクス
ト 「stswx RS.RA.RB」 ストア・ストリング・ワード・インデクスト命令は、G
PRファイル32の(M/4,次の整数に丸められる)
個の連続したレジスタの内容を連続したMメモリ・バイ
トの内容にストアする。Mは、専用レジスタにおけるフ
ィールドである。ストア・ストリング・ワード・インデ
クスト命令は、レジスタRAおよびレジスタRBの内容
の和によって指定されるメモリ・アドレスから、および
RSによって指定されるレジスタから開始する。それ以
外では、ストア・ストリング・ワード・インデクスト命
令は、ストア・ストリング・イミディエイト命令と同様
である。
【0048】簡易ロード/ストア命令のバッファリング シーケンサ・ユニット18は、命令のディスパッチ段階
中にロードまたはストア命令をロード/ストア・ユニッ
ト28に転送する。リザベーション・ステーション40
は、命令と、(a)別の実行ユニットが完了した場合
に、オペランドAまたはオペランドAのリネーム・バッ
ファ34またはリネーム・バッファ38内のデスティネ
ーションを識別するタグのいずれか,および(b)別の
実行ユニットが完了した場合に、オペランドBまたはオ
ペランドBのリネーム・バッファ34またはリネーム・
バッファ38内のデスティネーションを識別するタグの
いずれかのうち各1つとをラッチする。リザベーション
・ステーション40は、両方のオペランドが利用可能に
なるまで待つ。
【0049】ロード/ストア命令の実行フェーズは、両
方のオペランドが利用可能になると開始する。加算器4
2は、ソース/デスティネーションの有効アドレスを算
出する。ラッチ44,46は、命令およびこの命令のア
ドレスをラッチし、リザベーション・ステーション40
が別の命令を受け取るのを可能にする。
【0050】シーケンサ・ユニット18は、ロード命令
またはストア命令に先立つすべての命令を完了したとき
に、制御論理ユニット52に対する制御信号をアサート
する。このアクションは、データ・キャッシュ16,ス
トア・キュー48およびロード・キュー50の内容に応
じて、命令を即時完了させても、させなくてもよい。命
令は、例外を生成できなくなると完了する。このスケジ
ューリング技法は、ある以前の命令により例外が発生す
る場合に、ロードまたはストア命令を「アンドゥ(un
do)」しなければならない可能性を省く。また、シー
ケンサ・ユニット18は、命令がストア命令である場合
には、このとき命令によって格納すべきデータをストア
・キュー48に供給する。
【0051】データ・プロセッサ10の他の部分は、ロ
ード/ストア命令に関する機能を行う。データ・キャッ
シュ16は、加算器42によって生成された有効アドレ
スを実アドレスに変換し、このアドレスがロードまたは
ストア命令に関するデータを含んでいるかどうか調べ
る。データ・キャッシュ16が有効アドレスを変換でき
る場合、データ・キャッシュ16は実アドレスをロード
/ストア・ユニット28にリターンする。データ・キャ
ッシュ16が有効アドレスを変換できない場合、データ
・キャッシュ16はメモリ・システムにおける専用アド
レス変換テーブル(図示せず)にアクセスする。以降、
データ・キャッシュ16は、このアクセスが完了する
と、割り込み信号を生成し、変換を供給できる。次に、
制御論理ユニット52は、未変換ロードまたはストア命
令に関連するエントリに変換済みアドレスをストアす
る。同時に、データ・キャッシュ16は、実アドレスに
よってインデクスされたデータを格納しているかどうか
を調べる。データ・キャッシュ16がロード命令によっ
て要求されるデータを格納している場合、データ・キャ
ッシュ16は次のクロック・サイクル中にこのデータを
ロード/ストア・ユニット28にリターンする。ストア
命令がデータ・プロセッサ10における最古の命令であ
ることをシーケンサ・ユニット18が示すまで、データ
・キャッシュ16はそのメモリをモディファイしない。
データ・キャッシュ16が実アドレスによってインデク
スされたデータを格納していない場合、データ・キャッ
シュ16は、データを要求する命令がデータ・プロセッ
サ10における最古の命令であることを制御論理ユニッ
ト52が示した後に、BIU12を介してメモリ・シス
テムからそのデータを要求する。
【0052】制御論理ユニット52は、ストア・キュー
48およびロード・キュー50からマルチプレクサ54
を介してデータ・キャッシュ16にセレクト命令を転送
する。両方のキューは、先入れ先出し(FIFO)キュ
ーである。制御論理ユニット52は、各キューにおける
どのエントリが次の命令を受けるべきか、またどのエン
トリがデータ・キャッシュ16に提示されるのかを識別
するためさまざまなポインタを維持する。前述のよう
に、制御論理ユニット52は、ロード命令およびストア
命令の両方が同時に適格(eligible)である場
合に、ロード命令アドレスをデータ・キャッシュ16に
提示する。(1)命令が提示すべき次の命令である場
合,(2)データ・キャッシュ16が前のクロックサイ
クルで命令のアドレスを変換できた場合,および(3)
データ・キャッシュ16がインデクス済みデータを有す
ると判定した場合に、特定の条件下でストア・キュー4
8が命令をラッチする次のクロック・サイクルになると
すぐに、制御論理ユニット52はストア命令をデータ・
キャッシュ16に「提示(present) 」できる
(あるいはメモリ・システムを命令データで更新でき
る)。それ以外の場合には、制御論理ユニット52は、
少なくとも1追加クロック・サイクルだけデータ・キャ
ッシュ16に対するストア命令の提示を遅延する。両方
の場合で、制御論理ユニット52は、ストア・キュー4
8における次の利用可能なエントリに命令をバッファす
る。制御論理ユニット52は、加算器42が命令の有効
アドレスを算出するとすぐに、ロード命令をデータ・キ
ャッシュ16に提示する。データ・キャッシュ16が命
令のアドレスを変換でき、かつデータ・キャッシュ16
がインデクス済みデータを格納している場合、ロード命
令は完全実行されたとみなされる。それ以外の場合に
は、制御論理ユニット52は、ロード・キュー50にお
ける次の利用可能なエントリにロード命令をバッファす
る。
【0053】さらに図3において、制御論理ユニット5
2は、ストア命令をストア・キュー48にバッファす
る。ストア・キュー48は、6エントリのスタティック
・ランダム・アクセス・メモリ(SRAM)構造であ
る。6つのエントリのそれぞれは138ビットを含み、
72ビットはストア命令のオプコードおよびデータ属性
の一部を格納し、67ビットは、ストア命令の実アドレ
スを格納し、1有効ビットは有効実アドレス・フィール
ドを示す。制御論理ユニット52は、ストア・キュー4
8について4つのポインタ、すなわちOLDEST M
ISSポインタ,NEXT ACCESSポインタ,C
OMPLETEポインタおよびDISPATCHポイン
タを維持する。以下の説明から明らかになるように、O
LDESTMISSポインタは常にNEXT ACCE
SSポインタより以降か等しく、NEXT ACCES
Sポインタは常にCOMPLETEポインタより以降か
等しく、COMPLETEポインタは常にDISPAT
CHポインタより以降か等しい。最初に、すべての4つ
のポインタは、ストア・キュー48における同じエント
リを示す。
【0054】制御論理ユニット52は、DISPATC
Hポインタによってインデクスされるエントリに各新規
ストア命令をバッファする。制御論理ユニット52は、
データ・キャッシュ16が与えると、命令の変換済みア
ドレスを同じエントリの実アドレス・フィールドにスト
アする。また、制御論理ユニット52は、実アドレスを
受け取ると、DISPATCHポインタを1だけインク
リメントまたは進める。
【0055】前述のように、シーケンサ・ユニット18
は制御信号をアサートし、ストア・データを供給して、
ロード/ストア・ユニット28がストア命令を完了でき
ることを示す。制御論理ユニット52は、COMPLE
TEポインタによって指定されるエントリのデータ・フ
ィールドにストア・データをバッファする。また、制御
論理ユニット52は、ストア・データを受け取ると、C
OMPLETEポインタを1だけインクリメントする。
【0056】制御論理ユニット52は、優先順位の高い
ロード命令がない場合には、NEXT ACCESSポ
インタによってインデクスされる命令の実アドレスおよ
びストア・データをデータ・キャッシュ16に転送す
る。制御論理ユニット52は、NEXT ACCESS
ポインタを1だけインクリメントする。アクセスに成功
すると、データ・キャッシュ16は適切なメモリ番地の
内容をモディファイし、制御論理ユニット52は、エン
トリの有効ビットを無効にする。アクセスに成功しなけ
れば、ロード/ストア・ユニット28は、データ・キャ
ッシュ16およびBIU12が外部メモリ・システムか
らデータを取り出すのを待たなければならない。データ
・キャッシュ16は、外部メモリ・システムから有効デ
ータを受け取ると、制御信号をアサートする。次に、制
御論理ユニット52は、OLDEST MISSによっ
てインデクスされるアドレスをデータ・キャッシュ16
に提示する。なお、制御論理ユニット52は、ミス(m
iss)後にも、NEXTACCESSポインタによっ
てインデクスされるストア命令をデータ・キャッシュ1
6に提示し続けることが理解される。これらの以降の提
示は、データ・キャッシュに16において「ヒット(h
it) 」してもしなくてもよい。
【0057】最後に、制御論理ユニット52は、OLD
EST MISSポインタを次の有効エントリに、ある
いはカレント・エントリによってインデクスされるエン
トリが無効になった場合に他の有効エントリがないと、
DISPATCH POINTERにインクリメントす
る。
【0058】制御論理ユニット52は、ロード命令をロ
ード・キュー50にバッファする。ロード・キュー50
は、4エントリのSRAM構造である。4つのエントリ
のそれぞれは65ビットを格納し、32ビットはロード
命令のオプコードおよびデータ属性の一部を格納し、3
2ビットはロード命令の実アドレスを格納し、1有効ビ
ットは有効実アドレス・フィールドを表す。制御論理ユ
ニット52は、ロード・キュー50について2つのポイ
ンタ、すなわちHEADポインタおよびTAILポイン
タを維持する。以下の説明から明らかになるように、H
EADポインタは常にTAILポインタより以降か等し
い。最初に、両方のポインタはロード・キュー50にお
ける同じエントリを示す。
【0059】ロード/ストア・ユニット28は、加算器
42がロード命令の有効アドレスを生成した後に、各ロ
ード命令をデータ・キャッシュ16に直接転送する。こ
のスケジューリングは、ストア命令に対するロード命令
の優先順位を反映する。データ・キャッシュ16が有効
アドレスを実アドレスに変換でき、かつデータ・キャッ
シュ16が要求されたデータを格納している場合、デー
タ・キャッシュ16はデータをリネーム・バッファ34
または38に転送する。データ・キャッシュ16がアド
レスを変換できない場合、ロード命令は、データ・キャ
ッシュ16がアドレスをこのように変換できるまで、ラ
ッチ44,46で待つ。データ・キャッシュ16がデー
タを格納していない場合、制御論理ユニット52は、T
AILポインタによってインデクスされるエントリにロ
ード命令をストアする。図示の実施例では、ロード命令
に先立つすべての命令がその結果をデータ・プロセッサ
10の各アーキテクチャ・レジスタにライトバックした
ことをシーケンサ・ユニットが指示するまで、データ・
キャッシュ16は外部メモリ・システムからロード命令
を要求しない。この技法は、外部メモリ・システムに対
する推論的データ・ロード・オペレーションを防ぐ。制
御論理ユニット52は、実アドレスを受け取ると、TA
ILポインタを1だけインクリメントする。また、制御
論理ユニット52は、エントリの有効ビットをセット
し、有効実アドレス・フィールドを示す。
【0060】前述のように、シーケンサ・ユニット18
は制御信号をアサートし、ロード/ストア・ユニット2
8がロード命令を完了できることを示す。制御論ユニッ
ト52は、HEADポインタによってインデクスされる
ロード命令の実アドレスをデータ・キャッシュ16に転
送する。データ・キャッシュ16が要求されたデータを
供給できる場合、データ・キャッシュ16はロード/ス
トア・ユニット28を介してデータを結果バスに転送
し、制御論理ユニット52はHEADポインタを1だけ
インクリメントし、制御論理ユニット52は命令の有効
ビットをクリアする。データ・キャッシュ16が要求さ
れたデータを供給できない場合、ロード/ストア・ユニ
ット28は、データ・キャッシュ16およびBIU12
が外部メモリ・システムからデータを取り出すのを待た
なければならない。データ・キャッシュ16は、ロード
/ストア・ユニット28を介して受信データを適切な結
果バスに直接転送し、制御論理ユニットに対する制御信
号をアサートする。次に、制御論理ユニット52は、H
EADポインタをインクリメントする。
【0061】図4は、図3に示すストア・キュー48の
各エントリがある、可能な状態を示す状態遷移図を示
す。ストア・キュー48における6つのエントリのそれ
ぞれは、5つの図示の状態、すなわちINVALID,
FINISHED,COMPLETED,ATTEMP
TEDまたはHIT−UNDER−MISSのうち1つ
のみにある。4つのストア・ポインタ、すなわちOLD
EST MISS,NEXT ACCESS,COMP
LETE,DISPATCHの特定の値,各エントリの
有効ビットおよびデータ・プロセッサ10のオペレーシ
ョンは、エントリの状態を決定する。
【0062】ストア・キュー48における6つのエント
リのそれぞれは、最初にINVALID状態である。O
LDEST MISSポインタからDISPATCHポ
インタまでの間の各エントリは、INVALID状態で
ある。最後に、シーケンサ・ユニット18は、十分なス
トア命令をロード/ストア・ユニット28にディスパッ
チし、DISPATCHポインタに特定のエントリをイ
ンデクスさせる。次に、制御論理ユニット52は、ロー
ド/ストア・ユニット18にディスパッチされる次のス
トア命令をエントリにバッファする。データ・キャッシ
ュ16は、特定のエントリの有効アドレスを実アドレス
に変換し、このアドレスをロード/ストア・ユニット2
8に転送する。制御論理ユニット52は、変換済みアド
レスの受信時に特定のエントリの有効ビットをセットす
る。この特定のエントリの状態は、INVALID状態
からFINISHED状態に遷移する。この特定のエン
トリは、エントリにストアされたストア命令がデータ・
プロセッサ10における最古の命令であることをシーケ
ンサ・ユニット18が示すまで、この状態に維持され
る。DISPATCHポインタからCOMPLETEポ
インタまでの間の各エントリは、FINISHED状態
である。
【0063】最後に、シーケンサ・ユニット18は、C
OMPLETEポインタによって指示されるエントリに
ストアされたストア命令がデータ・プロセッサ10にお
ける最古の命令であることを制御論理ユニットに指示す
る。この時点で、プログラム順序においてストア命令に
先立つ各命令は、適切なアーキテクチャ・レジスタを更
新し、また更新が必要ない場合には、そのオペレーショ
ンにおけるある点に達し、この点以降で例外を生成でき
ない。このとき、ストア命令を「アンドゥ」する必要の
危険なしに、外部メモリ・システムにデータを安全に書
き込むことができる。この特定のエントリの状態は、F
INISHED状態からCOMPLETED状態に遷移
する。COMPLETEポインタからNEXT ACC
ESSポインタまでの間の各エントリは、COMPLE
TED状態である。
【0064】NEXT ACCESSポインタがストア
・アドレス・データ・ペアを格納するエントリをインデ
クスし、かつより高い優先順位のオペレーションがない
場合に、制御論理ユニット52はストア・アドレス・デ
ータ・ペアをデータ・キャッシュ16に提示する。この
時点で、特定のエントリは、ATTEMPTED状態に
遷移する。このエントリの状態は、データ・キャッシュ
16が制御信号RETRYをアサートする場合に、CO
MPLETED状態にリターンすることがある。例え
ば、データ・キャッシュ16がBIU12からデータを
受け取ったり、データ・キャッシュ16が専用アドレス
変換テーブルにアクセスするためなど、データ・キャッ
シュ16がストア命令を処理できない場合に、データ・
キャッシュ16は制御信号RETRYをアサートする。
NEXT ACCESSポインタからOLDEST M
ISSポインタまでの間で、有効ビットがセットされた
各エントリは、ATTEMPTED状態である。
【0065】制御論理ユニット52がストア・アドレス
・データ・ペアをデータ・キャッシュ16に提示した後
に、2つの可能な結果がある。データ・キャッシュ16
は、データを格納している、すなわち「ヒット」か、あ
るいはデータを格納していない、すなわち「ミス」であ
る。
【0066】データ・キャッシュ・ヒットの場合、エン
トリはHIT−UNDER−MISS状態またはINV
ALID状態のいずれかに遷移する。OLDEST M
ISSポインタが最古の有効ストア命令として識別しな
い場合には、エントリはHIT−UNDER−MISS
状態に遷移する。逆に、OLDEST MISSが最古
の有効ストア命令として識別すると、エントリはINV
ALID状態に遷移する。両方の場合において、制御論
理ユニット52はエントリの有効ビットをクリアする。
COMPLETEポインタからOLDEST MISS
ポインタまでの間で、有効ビットがクリアされた各エン
トリは、HIT−UNDER−MISS状態である。
【0067】データ・キャッシュ・ミスの場合、提示さ
れたストア・アドレス・データ・ペアを格納する特定の
エントリは、ATTEMPTED状態のままである。
【0068】特定のエントリは、OLDEST MIS
Sポインタが最古の有効ストア命令として識別しない限
り、HIT−UNDER−MISS状態のままである。
エントリは、OLDEST MISSポインタが最古の
有効ストア命令として識別すると、INVALID状態
に遷移する。
【0069】特定の実施例を参照して本発明について説
明してきたが、更なる修正や改善は当業者に想起され
る。例えば、本発明は、CISCマシーンとして従来分
類されるデータ・プロセッサに組み込むことができる。
また、特定の実施例で特定の機能ユニットを省略でき、
あるいはデータ・プロセッサの他の領域に移すことがで
きる。従って、本発明は特許請求の範囲に定義される発
明の精神および範囲から逸脱しないこのようなあらゆる
修正を網羅するものとする。
【図面の簡単な説明】
【図1】本発明により構成されたデータ・プロセッサの
ブロック図である。
【図2】図1に示すデータ・プロセッサによって実行さ
れる命令のタイミング図である。
【図3】図1に示すロード/ストア・ユニット28のブ
ロック図である。
【図4】図3に示すストア・キュー(store qu
eue) の各エントリがある、可能な状態を示す状態
遷移図である。
【符号の説明】
10 データ・プロセッサ 12 バス・インタフェース・ユニット(BIU) 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 ブランチ・ユニット 22 固定小数点実行ユニットA 24 固定小数点実行ユニットB 26 複素固定小数点実行ユニット 28 ロード/ストア・ユニット 30 浮動小数点実行ユニット 32 汎用アーキテクチャ・レジスタ・ファイル(GP
R) 34 第1リネーム・バッファ 36 浮動小数点アーキテクチャ・レジスタ・ファイル
(FPR) 38 第2リネーム・バッファ 39 リオーダ・バッファ 40 リザベーション・ステーション 41 マルチプレクサ(MUX) 42 加算器 43 マルチプレクサ(MUX) 44 ラッチ 45 1対4発生器 46 ラッチ 48 ストア・キュー 50 ロード・キュー 52 制御論理ユニット 54 マルチプレクサ(MUX)
───────────────────────────────────────────────────── フロントページの続き (71)出願人 390009531 インターナショナル・ビジネス・マシーン ズ・コーポレイション INTERNATIONAL BUSIN ESS MASCHINES CORPO RATION アメリカ合衆国10504、ニューヨーク州 アーモンク (番地なし) (72)発明者 デビッド・ピー・バージェス アメリカ合衆国テキサス州オースチン、ラ ンス・ウェイ1413 (72)発明者 マービン・デンマン アメリカ合衆国テキサス州オースチン、ラ スタウン・ドライブ4804 (72)発明者 ミルトン・エム・フッド,ジュニア アメリカ合衆国テキサス州オースチン、ブ ラッドウッド・ロード4205 (72)発明者 マーク・エイ・ケアニイ アメリカ合衆国テキサス州ダラス、ラビ タ・レーン3048 (72)発明者 ラバンヤ・クリング アメリカ合衆国カリフォルニア州パロ・ア ルト、カウパー・ストリート328−ビー (72)発明者 グラハム・アール・マーフィ アメリカ合衆国テキサス州オースチン、ナ ンバー1222、テイラー・ドレイパー・レー ン11250 (72)発明者 ソンヨーン・ピーター・ソング アメリカ合衆国テキサス州オースチン、バ ケロ・コーブ8405

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 ロード命令を実行する実行ユニットを具
    備するデータ・プロセッサ(10)であって:複数のア
    ーキテクチャ・レジスタ(32);前記複数のアーキテ
    クチャ・レジスタに結合されたリネーム・バッファ(3
    4)であって、前記リネーム・バッファは複数のエント
    リからなり、前記複数のエントリのそれぞれは、複数の
    命令のうち異なる1つの複数の結果のうち異なる1つを
    バッファする、リネーム・バッファ(34);前記リネ
    ーム・バッファに結合されるロード・ユニット(28)
    であって、前記ロード・ユニットにディスパッチされる
    各ロード命令タグ・ペアについて、前記ロード・ユニッ
    トは、メモリ・システムからのアドレスによってインデ
    クスされるデータを要求し、かつタグによってインデク
    スされる前記リネーム・バッファの複数のエントリのう
    ち1つにデータをバッファし、前記ロード命令タグ・ペ
    アは、前記リネーム・バッファの複数のエントリのうち
    1つを識別するタグからなる、ロード・ユニット(2
    8);および前記ロード・ユニットに結合されるシーケ
    ンサ・ユニット(18)であって、前記シーケンサ・ユ
    ニットは、ロード・マルチプル命令を受け取り、前記ロ
    ード・マルチプル命令は、NおよびWを整数とし、Nが
    1よりも大きく、前記複数のアーキテクチャ・レジスタ
    のそれぞれ1つがWバイト・サイズとして、N*Wバイ
    トを要求し、前記シーケンサ・ユニットは、N個のロー
    ド命令タグ・ペアを前記ロード・ユニットにディスパッ
    チするシーケンサ・ユニット;によって構成されること
    を特徴とするデータ・プロセッサ。
  2. 【請求項2】 前記シーケンサ・ユニット(18)は1
    アドレスを前記ロード・ユニットにディスパッチし、前
    記ロード・ユニットは、前記N個のロード命令タグ・ペ
    アのうち(N−1)個のロード命令タグ・ペアの(N−
    1)個のアドレスを生成するアドレス計算手段(41,
    42,43,45)をさらに含んで構成されることを特
    徴とする請求項1記載のデータ・プロセッサ(10)。
  3. 【請求項3】 前記アドレス計算手段は:第1マルチプ
    レクサの出力と、第2マルチプレクサの出力とを加算す
    る加算器(42);前記N個のロード命令タグ・ペアの
    それぞれの第1フィールドまたは番号Wのいずれかを出
    力する前記第1マルチプレクサ;前記N個のロード命令
    タグ・ペアのそれぞれの第2フィールドまたは前記加算
    器の出力のいずれかを出力する前記第2マルチプレク
    サ;および前記第1および第2マルチプレクサの入力を
    選択する制御回路(45);によって構成されることを
    特徴とする請求項2記載のデータ・プロセッサ(1
    0)。
  4. 【請求項4】 前記シーケンサ・ユニット(18)は、
    ディスパッチ済み命令のシーケンスを格納するリオーダ
    ・バッファ(39)をさらに含んで構成され、前記シー
    ケンサ・ユニットは、前記シーケンスに応答して、前記
    リネーム・バッファの複数のエントリのうち1つを前記
    複数のアーキテクチャ・レジスタのうち1つにコピーす
    ることを特徴とする請求項3記載のデータ・プロセッサ
    (10)。
  5. 【請求項5】 前記ロード・ユニット(28)に対して
    ディスパッチされる各ストア命令について、前記ロード
    ・ユニットは、アドレスによってインデクスされるデー
    タを前記メモリ・システムに格納し、前記シーケンサ・
    ユニット(18)は、ストア・マルチプル命令を受け取
    り、前記ストア・マルチプル命令は、Mを1より大きい
    整数として、M*Wバイトを格納し、前記シーケンサ・
    ユニットは、M個のストア命令を前記ロード・ユニット
    にディスパッチすることを特徴とする請求項4記載のデ
    ータ・プロセッサ(10)。
JP7160147A 1994-06-03 1995-06-05 ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法 Pending JPH09120360A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US25527194A 1994-06-03 1994-06-03
US255271 1994-06-03

Publications (1)

Publication Number Publication Date
JPH09120360A true JPH09120360A (ja) 1997-05-06

Family

ID=22967591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7160147A Pending JPH09120360A (ja) 1994-06-03 1995-06-05 ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法

Country Status (6)

Country Link
US (1) US5664215A (ja)
EP (1) EP0686912B1 (ja)
JP (1) JPH09120360A (ja)
KR (1) KR960001989A (ja)
CN (1) CN1144934A (ja)
DE (1) DE69506623T2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007249914A (ja) * 2006-03-20 2007-09-27 Nec Corp データロード方法及びデータ処理装置
JP2008090848A (ja) * 2006-10-03 2008-04-17 Arm Ltd データ処理システム内のレジスタリネーミング
JP2017521798A (ja) * 2014-07-25 2017-08-03 インテル・コーポレーション ロードが同じアドレスに対する他のロードの前にディスパッチしないことを確実にするjit最適化を通じたリオーダリングプロセスを実施するシステム変換器
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5822602A (en) * 1996-07-23 1998-10-13 S3 Incorporated Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
US5859999A (en) * 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
JPH11212788A (ja) * 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
US6192461B1 (en) * 1998-01-30 2001-02-20 International Business Machines Corporation Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
FR2777370B1 (fr) 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
US6301654B1 (en) * 1998-12-16 2001-10-09 International Business Machines Corporation System and method for permitting out-of-order execution of load and store instructions
US6349382B1 (en) * 1999-03-05 2002-02-19 International Business Machines Corporation System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
EP1050797A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics S.A. Execution of instructions in a computer program
US6629233B1 (en) * 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US6791564B1 (en) 2000-05-05 2004-09-14 Ipfirst, Llc Mechanism for clipping RGB value during integer transfer
US6868491B1 (en) 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
GB0023697D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Register assignment in a processor
US20100223295A1 (en) * 2000-12-06 2010-09-02 Io Informatics, Inc. Applied Semantic Knowledgebases and Applications Thereof
US20020156792A1 (en) * 2000-12-06 2002-10-24 Biosentients, Inc. Intelligent object handling device and method for intelligent object data in heterogeneous data environments with high data density and dynamic application needs
JP3497832B2 (ja) * 2001-03-28 2004-02-16 株式会社半導体理工学研究センター ロード・ストアキュー
US7266811B2 (en) * 2001-09-05 2007-09-04 Conexant Systems, Inc. Methods, systems, and computer program products for translating machine code associated with a first processor for execution on a second processor
US7315934B2 (en) * 2002-03-06 2008-01-01 Matsushita Electric Industrial Co., Ltd. Data processor and program for processing a data matrix
US20050015542A1 (en) * 2003-07-15 2005-01-20 Gateway, Inc. Multiple write storage device
US8144156B1 (en) * 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US8745627B2 (en) * 2005-06-27 2014-06-03 Qualcomm Incorporated System and method of controlling power in a multi-threaded processor
US7434032B1 (en) * 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
US9135005B2 (en) * 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
EP2508983A1 (en) * 2011-04-07 2012-10-10 VIA Technologies, Inc. Conditional non-branch instruction prediction
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9201656B2 (en) 2011-12-02 2015-12-01 Arm Limited Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers
US8914616B2 (en) 2011-12-02 2014-12-16 Arm Limited Exchanging physical to logical register mapping for obfuscation purpose when instruction of no operational impact is executed
US20140310500A1 (en) * 2013-04-11 2014-10-16 Advanced Micro Devices, Inc. Page cross misalign buffer
JP6344022B2 (ja) * 2014-04-08 2018-06-20 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN105117202B (zh) * 2015-09-25 2018-11-27 上海兆芯集成电路有限公司 具有融合保留站结构的微处理器
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) * 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11113056B2 (en) * 2019-11-27 2021-09-07 Advanced Micro Devices, Inc. Techniques for performing store-to-load forwarding
US11687347B2 (en) * 2021-05-25 2023-06-27 Andes Technology Corporation Microprocessor and method for speculatively issuing load/store instruction with non-deterministic access time using scoreboard

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4287561A (en) * 1978-03-16 1981-09-01 International Business Machines Corporation Address formulation interlock mechanism
JPH02190930A (ja) * 1988-12-29 1990-07-26 Internatl Business Mach Corp <Ibm> ソフトウエア命令実行装置
EP0495162A3 (en) * 1991-01-16 1994-05-18 Ibm Storage management
US5416911A (en) * 1993-02-02 1995-05-16 International Business Machines Corporation Performance enhancement for load multiple register instruction

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007249914A (ja) * 2006-03-20 2007-09-27 Nec Corp データロード方法及びデータ処理装置
JP2008090848A (ja) * 2006-10-03 2008-04-17 Arm Ltd データ処理システム内のレジスタリネーミング
JP2017521798A (ja) * 2014-07-25 2017-08-03 インテル・コーポレーション ロードが同じアドレスに対する他のロードの前にディスパッチしないことを確実にするjit最適化を通じたリオーダリングプロセスを実施するシステム変換器
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture

Also Published As

Publication number Publication date
KR960001989A (ko) 1996-01-26
EP0686912B1 (en) 1998-12-16
EP0686912A3 (en) 1997-03-12
DE69506623D1 (de) 1999-01-28
DE69506623T2 (de) 1999-07-22
EP0686912A2 (en) 1995-12-13
CN1144934A (zh) 1997-03-12
US5664215A (en) 1997-09-02

Similar Documents

Publication Publication Date Title
JPH09120360A (ja) ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法
US7302527B2 (en) Systems and methods for executing load instructions that avoid order violations
EP1116103B1 (en) Mechanism for store-to-load forwarding
US6122727A (en) Symmetrical instructions queue for high clock frequency scheduling
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
JP2701179B2 (ja) データ処理システム
US5535346A (en) Data processor with future file with parallel update and method of operation
US6192465B1 (en) Using multiple decoders and a reorder queue to decode instructions out of order
US5664137A (en) Method and apparatus for executing and dispatching store operations in a computer system
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
US5621896A (en) Data processor with unified store queue permitting hit under miss memory accesses
JPH07334364A (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
JP2002525741A (ja) 間接分岐ターゲットを計算するための方法
JPH08147165A (ja) マルチコンテキストをサポートするプロセッサおよび処理方法
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
KR100322149B1 (ko) 고성능 추론적 스트링/다중 연산 방법
JPH096611A (ja) データ処理システムにおけるデータをバッファリングする方法およびシステム
EP1053522B1 (en) Microprocessor including multiple register files occupying the same logical space
US20030182537A1 (en) Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system
JP2575219B2 (ja) データ処理システム及びその命令実行を促進する方法
US7293160B2 (en) Mechanism for eliminating the restart penalty when reissuing deferred instructions
US6907518B1 (en) Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same
JP3469469B2 (ja) 情報処理装置
US6115730A (en) Reloadable floating point unit