JPH11316681A - 命令バッファへのロ―ド方法、装置およびプロセッサ - Google Patents

命令バッファへのロ―ド方法、装置およびプロセッサ

Info

Publication number
JPH11316681A
JPH11316681A JP11024188A JP2418899A JPH11316681A JP H11316681 A JPH11316681 A JP H11316681A JP 11024188 A JP11024188 A JP 11024188A JP 2418899 A JP2418899 A JP 2418899A JP H11316681 A JPH11316681 A JP H11316681A
Authority
JP
Japan
Prior art keywords
instruction
instruction buffer
cache
instructions
buffer
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
JP11024188A
Other languages
English (en)
Other versions
JP3207173B2 (ja
Inventor
David Meltzer
デービッド・メルツァー
Joel Abraham Silberman
ジョエル・エイブラハム・シルバーマン
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)

Abstract

(57)【要約】 【課題】 命令の順不同発行が可能なプロセッサの命令
バッファへのロードを行うための方法および装置を提供
すること。 【解決手段】 命令の順不同発行が可能なこのプロセッ
サは、複数のキャッシュ行を有する命令キャッシュを備
える。命令キャッシュは、マルチプレクサを介して命令
バッファに結合されている。命令バッファは複数のスロ
ットを備えており、これらのスロットには、マルチプレ
クサの監視下で命令キャッシュから命令が順次充填され
る。最初の命令が存在するスロットは、フェッチ・アド
レスによって示される。最初の命令が命令バッファの第
1スロット内に存在しない場合、命令キャッシュの後続
のキャッシュ行から命令バッファ内の任意の空きスロッ
トを命令で充填する。

Description

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

Claims (15)

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

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
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
US09/020631 1998-02-09

Publications (2)

Publication Number Publication Date
JPH11316681A true JPH11316681A (ja) 1999-11-16
JP3207173B2 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
ATE200357T1 (de) * 1991-07-08 2001-04-15 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
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 複数命令同時取込み機構
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
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
US6065110A (en) 2000-05-16
CN1226024A (zh) 1999-08-18
KR100335747B1 (ko) 2002-05-08
TW520482B (en) 2003-02-11
JP3207173B2 (ja) 2001-09-10
KR19990072269A (ko) 1999-09-27
CN1152301C (zh) 2004-06-02

Similar Documents

Publication Publication Date Title
US5553256A (en) Apparatus for pipeline streamlining where resources are immediate or certainly retired
US5892963A (en) System and method for assigning tags to instructions to control instruction execution
US5546597A (en) Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US6449710B1 (en) Stitching parcels
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
EP0491693B1 (en) Improved cpu pipeline having register file bypass on update/access address compare
JPH0778738B2 (ja) ディジタル・コンピュータ・システム
US5684971A (en) Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US6393550B1 (en) Method and apparatus for pipeline streamlining where resources are immediate or certainly retired
KR19990072271A (ko) 고성능의추론적인오정렬로드연산
US4348724A (en) Address pairing apparatus for a control store of a data processing system
KR100309309B1 (ko) 단일클록사이클동안슈퍼스칼라프로세서에서복수의저장인스트럭션완료를용이하게하는방법및시스템
US20180217840A1 (en) An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
US5930520A (en) Pipelining device in a parallel processing apparatus and an instruction supplying method therefor
US6851033B2 (en) Memory access prediction in a data processing apparatus
JPH11316681A (ja) 命令バッファへのロ―ド方法、装置およびプロセッサ
US6101597A (en) Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor
US4360869A (en) Control store organization for a data processing system
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US20040148493A1 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
US6442675B1 (en) Compressed string and multiple generation engine
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations

Legal Events

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