JP3207173B2 - 命令バッファへのロードを行うための方法および装置 - Google Patents

命令バッファへのロードを行うための方法および装置

Info

Publication number
JP3207173B2
JP3207173B2 JP02418899A JP2418899A JP3207173B2 JP 3207173 B2 JP3207173 B2 JP 3207173B2 JP 02418899 A JP02418899 A JP 02418899A JP 2418899 A JP2418899 A JP 2418899A JP 3207173 B2 JP3207173 B2 JP 3207173B2
Authority
JP
Japan
Prior art keywords
instruction
buffer
cache
instructions
symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP02418899A
Other languages
English (en)
Other versions
JPH11316681A (ja
Inventor
デービッド・メルツァー
ジョエル・エイブラハム・シルバーマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JPH11316681A publication Critical patent/JPH11316681A/ja
Application granted granted Critical
Publication of JP3207173B2 publication Critical patent/JP3207173B2/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/22Microcontrol or microprogram arrangements
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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
    • 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令バッファへの
ロードを行うための方法および装置に関し、さらに詳細
には、命令の順不同発行が可能なスーパースカラ・プロ
セッサの命令バッファへのロードを行うための方法およ
び装置に関する。
【0002】
【従来の技術】すべてではなくとも、ほとんどのスーパ
ースカラ・プロセッサは、命令の順不同(out-of-orde
r)発行を実行することができる。命令の順不同発行に
は多くの実方式があるが、これらすべての方式にとっ
て重要な要素は、プログラム内での命令の出現順序では
なくデータ依存関係の解決と実行資源の利用可能性に
基づいて実際の実行順序を決定する発行キュー(すなわ
ち発行論理回路)である。
【0003】それにもかかわらず、命令は通常、プログ
ラム順序に基づいてプロセッサの命令キャッシュ内のキ
ャッシュ・ラインに格納される。さらに、命令キャッシ
ュへのアクセスの各単位は通常、複数の命令である。た
とえば、命令長が4バイトであるプロセッサ・アーキテ
クチャでは、各命令キャッシュ・アクセスは32バイト
幅となるが、これは1回の命令キャッシュ・アクセス当
たり合計8個の命令に等しい。最も単純な命令キャッシ
ュ設計の場合でも、これらの命令は、多重化して8個以
下のスロットを有する命令バッファに入れてから発行キ
ューに送らなければならない。
【0004】引き続き述の例を考えると、まず、8個
の命令が命令キャッシュから読み出される。次いで、最
初の命令のフェッチ・アドレスを利用して8−1マルチ
プレクサを制御することにより、たとえば4個のスロッ
トを有する命令バッファに最初の4個の命令をゲート入
力する。また、当該フェッチ・アドレスは、前記8個の
命令から1個のターゲット命令を次の3個の命令と共に
選択して命令バッファにゲート入力するのにも利用す
る。4個の命令はすべて、プログラム順ではなく実行順
に命令バッファにゲート入力される。この構成では、
フェッチ・アドレスが(予測済みまたは実際の)分岐
命令の結果である場合、命令バッファにゲート入力すべ
最初の命令が前記8個の命令のうちのいずれかの命令
となる可能性がある。すなわち、この分岐命令のターゲ
ット・アドレスが当該命令キャッシュ・アクセスの最後
の命令か最後の命令の1つ前の命令を指している場合、
あるいは最後の命令の2つ前の命令を指している場合、
命令バッファ内の4個のスロットがすべて完全に充填さ
れるとは限らず、ディスパッチ帯域幅の損失を招く。し
たがって、ディスパッチ帯域幅またはキャッシュ効率を
犠牲にすることなく命令バッファへのロードを行うた
めの改良型の方法および装置を提供することが望まし
い。
【0005】
【発明が解決しようとする課題】前述に鑑みて、本発明
の一目的は、データ処理のための改良型の方法および装
置を提供することである。
【0006】本発明の他の目的は、命令バッファへのロ
ードを行うための改良型の方法および装置を提供するこ
とである。
【0007】本発明の他の目的は、命令の順不同発行が
可能なスーパースカラ・プロセッサの命令バッファへの
ロードを行うための改良型の方法および装置を提供する
ことである。
【0008】
【課題を解決するための手段】本発明の方法および装置
に基づく、命令の順不同発行が可能なプロセッサは、複
数のキャッシュ・ラインを有する命令キャッシュを備え
る。命令キャッシュは、マルチプレクサを介して命令バ
ッファに結合されている。命令バッファは複数のスロッ
トを備えており、これらのスロットには、マルチプレク
監視下で命令キャッシュからの複数の命令が順次充
填される。最初の命令が存在するスロットは、フェッチ
・アドレスによって示される。最初の命令が命令バッフ
ァの第1スロット内に存在しない場合、命令キャッシュ
の後続キャッシュ・ラインからの命令で、命令バッファ
内の任意の空きスロットを充填する。
【0009】本発明の目的、特徴、および利点は、以下
の詳細な説明から明らかになろう。
【0010】
【発明の実施の形態】本発明は、様々なスーパースカラ
・プロセッサ内ですることができる。例示のため
、本発明の好ましい実施例は、本出願人が製造する
owerPCTMファミリ・プロセッサ内で現され
る。さらに、本発明の好ましい実施例は、縮小命令セッ
ト・コンピュータ(RISC)アーキテクチャに基づく
固定長命令セットに関するものであるが、その原理は任
意のタイプの命令セット・アーキテクチャに応用するこ
とができる。
【0011】次に、図1に、本発明の好ましい実施例に
基づく、命令の順不同発行が可能なプロセッサのブロッ
ク図を示す。プロセッサ10内では、バス・インターフ
ェース・ユニット12が、データ・キャッシュ13と命
令キャッシュ14にそれぞれ結合されている。データ・
キャッシュ13と命令キャッシュ14はどちらも高速キ
ャッシュであり、そのためプロセッサ10は、メイン・
メモリ(図示せず)からすでに転送されているデータま
たは命令のサブセットに比較的短時間にアクセスするこ
とができる。命令キャッシュ14はさらに、命令ユニッ
ト11にも結合されており、そのため命令ユニット11
は命令キャッシュ14から命令をフェッチすることがで
きる。
【0012】プロセッサ10は、3個の実行ユニット、
すなわち整数ユニット15、ロード/ストア・ユニット
16、および浮動小数点ユニット17を備える。実行ユ
ニット1517はそれぞれ、1つ以上のクラスの命令
を実行することができ、実行ユニット1517はすべ
て、各プロセッサ・サイクル中同時に動作する。実行
が終了すると、実行ユニット1517は、命令のタイ
プに応じてデータ結果をリネーム・バッファに格納す
る。その後、実行ユニット1517のうちのいずれか
1つが、命令実行が了したことを完了ユニット20に
知らせる。最後に、リネーム・バッファからの結果デー
タを、それに応じて汎用レジスタ18または浮動小数点
レジスタ19にそれぞれ転送することにより、命令はプ
ログラム順に完了する。
【0013】次に、図2に、図1のプロセッサ10
命令の順不同発行機構のブロック図を示す。図示よう
に、命令フェッチャ21は、命令キャッシュ14(図
1)から命令をフェッチするためのアドレスを生成す
る。次いで、命令キャッシュ14からフェッチした命令
前述のように、命令キャッシュからは通常、2つ以上
の命令がフェッチされる)を、命令バッファ23にラッ
チする。その後、命令バッファ23内の命令を解析し
て、それぞれに対応するソース・アドレスとターゲット
・アドレス、必要な実行ユニットのタイプ、およびこれ
らの命令を実際に実行するのに必要なその他の情報を決
定する。命令がレジスタ・ターゲットを伴う場合は、そ
のレジスタ・ターゲットをリネームしなければならな
い。また、リネームされたレジスタ・オペランド・ソー
ス名も決定しなければならない。これらの2の機能
は、レジスタ・リネーム・バッファ24内で実行する。
【0014】また、命令バッファ23内にある命令が依
存関係を有する可能性もある。たとえば、命令バッファ
23内の命令2が、命令1によって格納されレジスタ
・ターゲットを利用する場合がある。命令バッファ23
内の命令間のこうした依存関係を命令依存関係解析ユニ
ット25によって解析し、その出力によってレジスタ・
リネーム・バッファ24内のリネーム論理回路の動作を
修正する。これが必要なのは、レジスタ・リネーム・バ
ッファ24が命令バッファ23内の命令に関する情報を
まだ有していないからである。次いで、解析された命令
データと、リネームされたレジスタ情報を含んだテキス
トを発行キュー26に移動させる。発行キュー26は、
実行ユニット28(図1の実行ユニット1517)の
うちの対応する実行ユニットから情報をステータス線
27を介して受け取って、発行キュー26内の、実行に
必要かつ利用可能なすべてのデータを有する命令を識別
する。そうした命令は、「発行準備完了」と見なされ、
現に「空き」になっているいずれかの実行ユニット28
に送ることができる。図2に示した構成要素のうち、命
令キャッシュ14と実行ユニット28を除くすべての構
成要素は、図1の命令ユニット11内に配置することが
好ましい。
【0015】次に、図3に、本発明の好ましい実施例に
基づく、命令バッファ23に命令をロードするための装
置を示す。この実施例では、面密度を最大限にするのに
望ましい正方形の平面形状を維持するために、命令キャ
ッシュ14(図2)を偶数セル・アレイ31と奇数セル
・アレイ32とに分割することが好ましい。偶数セル・
アレイ31と奇数セル・アレイ32は、セル・アレイ出
力レジスタ33および34にそれぞれ結合されている。
出力レジスタ33および34はどちらも、4個の2−1
マルチプレクサ36a36dに結合されている。マル
チプレクサ36a36dの各々は、命令バッファ23
内の1つのスロットにそれぞれ結合されている。
【0016】命令フェッチャ21(図2)によって生成
される命令フェッチの実効アドレス(EA)は通常、
EAとEA+アクセス幅の形をとる。すなわち、1回の
命令キャッシュ・アクセスが1命令当たり4バイトを伴
う4命令幅である場合、EAとEA+16が生成される
(バイトアドレッシング方式を利用することを前提と
して)。この機能の追加の論理回路は必要ないことを
理解されたい。なぜなら、この機能は、当該アドレスの
解読結果をシフトして命令キャッシュ内の隣接するキ
ッシュ・ラインを選択することによって容易に実現でき
からである。読出幅を考慮すると、この増分はキャッ
シュ・ラインのサイズを法(モジュロ)とすることにな
ろう。生成されたアドレスが偶数の場合は、生成された
アドレスを偶数セル・アレイ31に送り、増分したアド
レスを奇数セル・アレイ32に利用する。一方、生成
されたアドレスが奇数の場合には、生成されたアドレス
を奇数セル・アレイ32に送り、増分したアドレスを偶
数セル・アレイ31に利用する。このようにして、プ
ログラム順に並んだ4個の命令の2つのグループを命令
キャッシュから読み出し、これらの命令をそれに対応
出力レジスタ33および34に入れる。要求された命
令のEAの下位2ビット35(説明中の例では4バイト
、命令長を法とする)と、開始EAが奇数と偶数のい
ずれであったかについての判定(説明中の例では16バ
イトの、アクセス幅を法とする)を利用してマルチプレ
クサ36a36dを制御することにより、複数の命令
ビットを命令バッファ23に導く。
【0017】図示ように、命令バッファ23内のス
ットには、参照符号I0〜I3を連続して付けた。さら
に、出力レジスタ33および34内のスロットにも、偶
数セル・アレイ31からのキャッシュ・ラインついて
参照符号E0〜E3を、奇数セル・アレイ32からの
キャッシュ・ラインついて参照符号O0〜O3をそ
れぞれ付けた。要求された命令のEAの下位2ビットが
2進数「00」であり、かつ開始EAが偶数の場合は、
I0=E0、I1=E1、I2=E2、I3=E3とい
う順序で命令バッファ23にロードする(ここで、E0
が要求された命令である)。その結果、これらの命令は
プログラム順に命令バッファ23にロードされることに
なる。しかし、要求された命令のEAの下位2ビットが
2進数「10」であり、かつ開始EAが奇数の場合は、
I0=E0、I1=E1、I2=O2、I3=O3とい
う順序で命令バッファ23にロードする(ここで、O2
が要求された命令である)。その結果、これらの命令は
プログラム順には命令バッファ23にロードされない。
実際には、命令を命令バッファ23にロードすべき正し
いプログラム順序は、I2、I3、I0、I1である。
命令バッファ23がプログラム順にロードされるか否か
に関する種々のケースをすべて、表1にまとめる。
【表1】
【0018】従来技術では、命令依存関係解析ユニット
25(図2)は、命令バッファ23内の命令がすでにプ
ログラム順になっているということを利用するので、命
令間の依存関係を解析するのに1組の比較器しか必要な
い。本発明では、命令バッファ23内の命令は、必ずし
もプログラム順であるとは限らない。命令バッファ23
内の命令がプログラム順でない場合、命令依存関係解析
ユニット25が命令間の依存関係を正しく識別できない
ことになる。したがって、本発明の好ましい実施例で
は、命令バッファ23内の最初の命令を突き止めるため
に、命令依存関係解析ユニット25の助けとしてデコー
ダ37を採用する。図示ように、デコーダ37は4個
のANDゲートを備え、その一部は否定入力を有する。
デコーダ37への入力は、図2の命令フェッチャ21か
ら来ている。この入力は、プログラム順に従った、命令
バッファ23内の最初の命令のフェッチ・アドレスで
ある。命令バッファ23内のプログラム順に従った最初
の命令(4個のスロットのいずれかにある)EAの
位2ビットを、デコーダ37によって解読する。デコー
ダ37の出力は、図4に示す論理回路に入力する。
可能な出力には、参照符号A、B、C、およびDを付
けた。
【0019】次に、図4に、本発明の好ましい実施例に
基づく、命令バッファ23内の命令間の依存関係を解析
するのに必要な論理回路を示す。この論理回路は、命令
依存関係解析ユニット25の内部に組み込むことが好ま
しい。この論理回路を例示するために、RISC命令セ
ットを考えてみる。このRISC命令セットは、各命令
が命令コード、ソース・レジスタA、ソース・レジスタ
B、ターゲット・レジスタ、およびその他の形をとる。
これらの要素は、命令41〜44において、それぞれO
P、RA、RB、RT、およびOと省略して示されてい
【0020】図示ように、例示された命令バッファ2
3は、依存関係を解析しなければならない4個の命令4
44を保持しており、その解析結果はレジスタ・リ
ネーム・バッファ24(図2)が利用する。この依存関
係解析を部分的に実行する比較器46のアレイは、命令
4144から対応するフィールドを取り出し、それぞ
れのソース・レジスタ番号およびターゲット・レジスタ
番号を比較する。従来技術とは違い、本発明のレジスタ
依存関係解析では、命令バッファ23内の命令41
4がプログラム順ではない可能性があることを考慮に入
れなければならない。たとえば、解析中の命令43の左
に位置する命令42実際には(プログラム順で
)、命令43に論理的に先行する可能性もあるし、命
令43に論理的に後続する可能性もある。したがって、
命令43のターゲット・オペランド・フィールドRT2
が命令42のRB1などのソース・オペランド・フィー
ルドのいずれかに等しく、そのことが比較器46のいず
れか(たとえば、左側にある比較器46のうち、上から
5番目の比較器46)の出力によって真と示されている
場合、命令42が命令43に論理的に後続するときに
は、命令42のRB1のリネーム・タグの値は命令43
のRT2のターゲット・レジスタ・タグの値となるはず
である。そうでない場合、命令43が命令42に論理的
に後続するときには別の値を利用する必要があり、そ
うした値はレジスタ・リネーム論理回路24によって
定される。
【0021】デコーダ37(図3)によって生成された
4個の出力信号A〜Dは、各命令 1〜44内のターゲ
ット・レジスタ番号と、当該ターゲット・レジスタを利
用する可能性のある他の命令内のすべてのソース・レジ
スタ番号とを比較する各比較器46の出力をゲートする
のに利用する。一致するものがあり、かつ当該ターゲッ
・レジスタ番号を保持する命令が(当該ターゲット・
レジスタ番号と一致する)ソース・レジスタ番号を保持
する他の命令に論理的に先行する場合、後者の命令の
ース・レジスタ・タグを前者の命令内のターゲット・レ
ジスタのリネームされたレジスタ・タグに置き換えなけ
ればならない。各ANDゲート47は、1個の比較器
6と、デコーダ37(図3)からの少なくとも1個の出
力信号とに接続されている。各出力信号の間の符号
「+」は論理OR演算を表す。各ANDゲート47は、
後者の命令のソース・オペランドが利用される前(プロ
グラム順において)に前者の命のターゲット・レジス
タ番号との比較結果が一致した場合にのみ、可能な比較
結果一致信号をゲートする。たとえば、信号45aは、
フェッチ・アドレスの下位ビットが「11」である場
合、すなわち命令43が(プログラム順では)命令44
に論理的に後続する場合、命令43のソース・レジスタ
・タグRB2の代わりに命令44内のターゲット・レジ
スタのリネームされたレジスタ・タグを利用するよう、
レジスタ・リネーム・バッファ24に通知するのに利用
される。信号45b45nも、同様の方法で生成する
ことができる。
【0022】その後、命令バッファ23内の、リネーム
されたレジスタ・タグを有する命令を、任意の順序で発
行キュー26(図2)に転送することができる。発行キ
ュー26は、リネームされたレジスタ・タグのみを利用
して、命令がいつでも発行できる状態にあるかどうかを
判定するが、前述のように、これらのタグは命令バッフ
ァ23内の命令の正しい順序を反映するよう適宜修正さ
れている。
【0023】前述のように、本発明は命令の順不同発
行が可能なスーパースカラ・プロセッサ内の命令バッフ
ァへのロードを行うための改良型の方法および装置を提
供する。本発明の特徴は、命令がプログラム順でない可
能性があることを踏まえて、命令依存関係解析ユニット
が命令バッファ内の命令を解析できるようにしたことに
ある。本発明の特徴はまた、命令の順不同発行が可能な
すべてのスーパースカラ・プロセッサが一般に備える発
行キューとその他の順不同命令順序制御ハードウェアを
利用して、命令バッファ内の命令が正しいプログラム順
になっていない場合でも命令の順序を解決することにも
ある。
【0024】プログラム順以外の順序で命令バッファ内
に命令を格納できるようにすることにより、命令キャッ
シュの有効帯域幅が高まり、しかも命令キャッシュと命
令バッファとの間の多重化の量のみならず、命令バッフ
ァと発行キューとの間の多重化の量も減少する。本発明
に適した発行キューは、「発行準備完了」の判定が解決
済みのデータ依存関係と実行ユニットの利用可能性のみ
に基づいて行われる限り、どんなタイプのものでもよ
い。
【図面の簡単な説明】
【図1】本発明の好ましい実施例に基づく、命令の順不
同発行が可能なプロセッサのブロック図である。
【図2】図1のプロセッサの命令の順不同発行機構の
ブロック図である。
【図3】本発明の好ましい実施例に基づく、命令バッフ
ァに命令ロードするための装置を示す図である。
【図4】本発明の好ましい実施例に基づく、命令バッフ
ァ内の命令間の依存関係を解析するのに必要な論理回路
を示す図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョエル・エイブラハム・シルバーマン アメリカ合衆国10589 ニューヨーク州 ソマーズ ミッチェル・ロード 134 (56)参考文献 特開 平7−121371(JP,A) 特開 平9−114733(JP,A) 特開 平5−20068(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 G06F 9/38

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】命令の順不同発行が可能なプロセッサ(1
    0)の命令バッファ(23)へのロードを行うための方
    法であって、前記プロセッサが複数のキャッシュ・ライ
    を有する命令キャッシュ(31、32)を備え、 前記命令キャッシュをマルチプレクサ(36a〜36
    d)を介して命令バッファに結合する段階を含み、前記
    命令バッファが複数のスロット(I0〜I3)を備え、 前記マルチプレクサの監視のもとに、前記命令バッファ
    の前記複数のスロットを前記命令キャッシュからの複数
    命令で順次充填する段階をさらに含み、プログラム順
    序に従った最初の命令が存在する1つのスロットがフェ
    ッチ・アドレス(35)によって示され、 その後、前記命令バッファの第1スロット(I0)内に
    前記最初の命令が存在しない場合は、前記命令バッファ
    すべての空きスロットを前記命令キャッシュの後続キ
    ャッシュ・ラインからの複数の命令で充填する段階をさ
    らに含み、前記空きスロットの少なくとも1つが前記最
    初の命令が存在する前記1つのスロットよりも前に位置
    する前記方法。
  2. 【請求項2】記命令バッファ内に存在する命令の実際
    のプログラム順序を命令依存関係解析ユニット(25)
    によって決定する段階をさらに含む請求項1記載の方
    法。
  3. 【請求項3】前記最初の命令が存在する前記命令バッフ
    ァのスロットを示す信号を前記命令依存関係解析ユニッ
    トによって受け取る段階をさらに含む請求項2記載の方
    法。
  4. 【請求項4】記フェッチ・アドレスを入力として有す
    デコーダ(37)によって前記信号を生成する段階を
    さらに含む請求項3記載の方法。
  5. 【請求項5】デコーダが複数のANDゲートを有す
    請求項4記載の方法。
  6. 【請求項6】命令の順不同発行が可能なプロセッサ(1
    0)の命令バッファ(23)へのロードを行うための装
    置であって、前記プロセッサが複数のキャッシュ・ライ
    を有する命令キャッシュ(31、32)を備え、 前記命令キャッシュと前記命令バッファとを結合するマ
    ルチプレクサ(36a〜36d)を含み、前記命令バッ
    ファが複数のスロット(I0〜I3)を備え、プログラ
    ム順序に従った最初の命令が存在する1つのスロットが
    フェッチ・アドレス(35)によって示され、 記命令バッファの第1スロット(I0)内に前記最初
    の命令が存在しない場合は、前記命令バッファのすべて
    の空きスロットを前記命令キャッシュの後続キャッシュ
    ・ラインからの複数の命令で順次充填する充填手段をさ
    らに含み、前記空きスロットの少なくとも1つが前記最
    初の命令が存在する前記1つのスロットよりも前に位置
    する前記装置。
  7. 【請求項7】記命令バッファ内に存在する命令の実際
    のプログラム順序を決定するための命令依存関係解析ユ
    ニット(25)をさらに備える請求項6に記載の装
    置。
  8. 【請求項8】記命令依存関係解析ユニットが前記最初
    の命令が存在する前記命令バッファのスロットを示す信
    号を受け取る請求項7記載の装置。
  9. 【請求項9】記信号が前記フェッチ・アドレスを入力
    として有するデコーダ(37)によって生成される請求
    8記載の装置。
  10. 【請求項10】記デコーダが複数のANDゲートを
    る請求項9記載の装置。
JP02418899A 1998-02-09 1999-02-01 命令バッファへのロードを行うための方法および装置 Expired - Fee Related JP3207173B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/020631 1998-02-09
US09/020,631 US6065110A (en) 1998-02-09 1998-02-09 Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue

Publications (2)

Publication Number Publication Date
JPH11316681A JPH11316681A (ja) 1999-11-16
JP3207173B2 true JP3207173B2 (ja) 2001-09-10

Family

ID=21799712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02418899A Expired - Fee Related JP3207173B2 (ja) 1998-02-09 1999-02-01 命令バッファへのロードを行うための方法および装置

Country Status (5)

Country Link
US (1) US6065110A (ja)
JP (1) JP3207173B2 (ja)
KR (1) KR100335747B1 (ja)
CN (1) CN1152301C (ja)
TW (1) TW520482B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
JP2002318687A (ja) * 2001-04-18 2002-10-31 Fujitsu Ltd 情報処理装置及び計算機システム
US6740942B2 (en) * 2001-06-15 2004-05-25 Hrl Laboratories, Llc. Permanently on transistor implemented using a double polysilicon layer CMOS process with buried contact
JP3655908B2 (ja) * 2003-02-26 2005-06-02 株式会社東芝 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム
TWI232403B (en) * 2003-04-23 2005-05-11 Ip First Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7725690B2 (en) * 2007-02-13 2010-05-25 Advanced Micro Devices, Inc. Distributed dispatch with concurrent, out-of-order dispatch
US8140830B2 (en) * 2008-05-22 2012-03-20 International Business Machines Corporation Structural power reduction in multithreaded processor
US9158541B2 (en) * 2010-11-03 2015-10-13 Apple Inc. Register renamer that handles multiple register sizes aliased to the same storage locations
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771141A (en) * 1971-11-08 1973-11-06 Culler Harrison Inc Data processor with parallel operations per instruction
US4760518A (en) * 1986-02-28 1988-07-26 Scientific Computer Systems Corporation Bi-directional databus system for supporting superposition of vector and scalar operations in a computer
DE3802025C1 (ja) * 1988-01-25 1989-07-20 Otto 7750 Konstanz De Mueller
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
EP1526446A3 (en) * 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JPH07121371A (ja) * 1993-10-25 1995-05-12 Nkk Corp 複数命令同時取込み機構
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
JPH09114733A (ja) * 1995-10-17 1997-05-02 Nec Corp キャッシュ記憶装置における非整列データ転送機構
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer

Also Published As

Publication number Publication date
KR100335747B1 (ko) 2002-05-08
JPH11316681A (ja) 1999-11-16
TW520482B (en) 2003-02-11
CN1226024A (zh) 1999-08-18
US6065110A (en) 2000-05-16
KR19990072269A (ko) 1999-09-27
CN1152301C (zh) 2004-06-02

Similar Documents

Publication Publication Date Title
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6553482B1 (en) Universal dependency vector/queue entry
US6308259B1 (en) Instruction queue evaluating dependency vector in portions during different clock phases
KR100626858B1 (ko) 단일 적재 워드를 형성하기 위해서 별개의 저장 버퍼 엔트리들로부터의 개별 바이트들의 전송을 적재하는 저장 시스템
US6212622B1 (en) Mechanism for load block on store address generation
US6119223A (en) Map unit having rapid misprediction recovery
US5867684A (en) Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction
US6449710B1 (en) Stitching parcels
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
CN100495325C (zh) 用于按需临时寄存器重命名的方法和系统
US5892963A (en) System and method for assigning tags to instructions to control instruction execution
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US6343337B1 (en) Wide shifting in the vector permute unit
US6463524B1 (en) Superscalar processor and method for incrementally issuing store instructions
KR100309309B1 (ko) 단일클록사이클동안슈퍼스칼라프로세서에서복수의저장인스트럭션완료를용이하게하는방법및시스템
JP3207173B2 (ja) 命令バッファへのロードを行うための方法および装置
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6230262B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
US6178500B1 (en) Vector packing and saturation detection in the vector permute unit
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
JPH03233630A (ja) 情報処理装置
US6442675B1 (en) Compressed string and multiple generation engine
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5875316A (en) Method for handling complex instructions in an out-of-order processor
US6430678B1 (en) Scoreboard mechanism for serialized string operations utilizing the XER

Legal Events

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