JP3721002B2 - メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法 - Google Patents

メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法 Download PDF

Info

Publication number
JP3721002B2
JP3721002B2 JP07891399A JP7891399A JP3721002B2 JP 3721002 B2 JP3721002 B2 JP 3721002B2 JP 07891399 A JP07891399 A JP 07891399A JP 7891399 A JP7891399 A JP 7891399A JP 3721002 B2 JP3721002 B2 JP 3721002B2
Authority
JP
Japan
Prior art keywords
instruction
processor
branch instruction
address
instructions
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
JP07891399A
Other languages
English (en)
Other versions
JP2000029694A (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 JP2000029694A publication Critical patent/JP2000029694A/ja
Application granted granted Critical
Publication of JP3721002B2 publication Critical patent/JP3721002B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address

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)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、全般的にはデータ処理の方法およびシステムに関し、具体的には、プロセッサ内でメモリ要求アドレスを生成するプロセッサおよび方法に関する。さらに具体的に言うと、本発明は、複数の命令を復号し、復号された命令のそれぞれから取出アドレスを並列に生成し、その後、生成された取出アドレスのうちの1つをメモリ要求アドレスとして選択するプロセッサに関する。
【0002】
【従来の技術】
プロセッサには、そこから1つまたは複数の実行ユニットへ実行のために命令がディスパッチされる命令待ち行列と、取出アドレスを計算し、その取出アドレスを使用してメモリから命令を取り出して命令待ち行列を満たす命令フェッチャが含まれる場合がある。通常のプロセッサでは、優先順位論理を使用して、命令待ち行列に含まれる命令のどれを使用して次の取出アドレスを生成するかが決定される。優先順位論理による命令の選択の後に、取出アドレスが、通常は選択された命令のアドレスに命令長オフセットを加算することによって、命令から生成される。選択された命令から生成された取出アドレスは、その後、要求アドレスによって指定されるメモリ位置に格納された1つまたは複数の命令を取得するために、要求アドレスとしてメモリに渡される。したがって、通常の命令取出サイクルは、順次実行される複数のステップからなる。
【0003】
命令待ち行列内の命令の検査から始まり、メモリから取り出された命令の受取で終了する時間間隔を、命令取出サイクル時間と称する場合がある。プロセッサの命令取出サイクル時間を減らし、したがって、プロセッサの総合性能を強化する努力において、通常、たとえばより高速のメモリ技術の採用、命令キャッシュ・ヒット率の改善、プロセッサへのオンチップの追加レベルのキャッシュの組込みによるなど、メモリの個々の構成要素の設計および構成の改善に注意が集中される。これらの解決は、確実に命令取出サイクル時間を改善できるが、本発明には、命令取出サイクル内のステップを並列化することによっても命令取出サイクル時間を減らすことができるという認識が含まれる。
【0004】
【発明が解決しようとする課題】
本発明の目的は、データ処理のための改良された方法およびシステムを提供することである。
【0005】
本発明のもう1つの目的は、プロセッサ内でメモリ要求アドレスを生成する、改良されたプロセッサおよび方法を提供することである。
【0006】
本発明のもう1つの目的は、複数の命令を復号し、復号された命令のそれぞれから取出アドレスを並列に生成し、生成された取出アドレスのうちの1つをメモリ要求アドレスとして選択するプロセッサを提供することである。
【0007】
【課題を解決するための手段】
前述の目的は、これから説明する形で達成される。本発明の方法によれば、複数の以前に取り出された命令を使用するプロセッサによって複数の目標アドレスが決定され、複数の以前に取り出された命令のうちの最後の命令を使用して順次アドレスが決定される。目標アドレスおよび順次アドレスの決定と並列に、複数の目標アドレスのうちの1つまたは順次アドレスを指定する選択信号が生成される。この選択信号は、複数の目標アドレスのうちの1つまたは順次アドレスをメモリ要求アドレスとして選択するのに使用される。その後、メモリ要求アドレスが、プロセッサからメモリに伝送され、その結果、メモリが、少なくとも1つの命令をプロセッサに供給する。目標アドレスおよび順次アドレスの生成と選択信号の生成を並列に行うことによって、命令取出待ち時間が短縮される。
【0008】
【発明の実施の形態】
ここで図面、具体的には図1を参照すると、請求項に記載された本発明に従って命令およびデータを処理するための、全体を10として示されたプロセッサの実施例のブロック図が示されている。図示の実施例では、プロセッサ10に、単一の集積回路スーパースカラ・マイクロプロセッサが含まれる。したがって、下でさらに述べるように、プロセッサ10には、さまざまな実行ユニット、レジスタ、バッファ、メモリおよび他の機能ユニットが含まれ、これらのすべてが集積回路によって形成される。プロセッサ10は、IBM Microelectronics社から入手できる、縮小命令セット・コンピューティング(RISC)技法に従って動作するPowerPC(商標)系列のマイクロプロセッサのうちの1つを含むことが好ましい。しかし、当業者であれば、本発明を他のプロセッサにも適用できることを以下の説明から諒解するであろう。
【0009】
図1からわかるように、プロセッサ10は、プロセッサ10内のバス・インターフェース・ユニット(BIU)12を介してプロセッサ・バス23に結合される。BIU12は、バス調停に参加することによって、プロセッサ10と、外部レベル2(L2)キャッシュや主記憶(図示せず)などのプロセッサ・バス23に結合された他のデバイスとの間の情報の転送を制御する。プロセッサ10、プロセッサ・バス23および、プロセッサ・バス23に結合された他のデバイスが、データ処理システムを形成する。
【0010】
BIU12は、プロセッサ10内の命令(I)キャッシュ14およびデータ(D)キャッシュ13に結合される。Iキャッシュ14やDキャッシュ13などの高速キャッシュは、プロセッサ10が、下位レベルのメモリからキャッシュに以前に転送されたデータまたは命令のサブセットへの比較的高速のアクセス時間を達成できるようにし、したがって、ホスト・データ処理システムの性能を高められるようにする。Iキャッシュ14は、さらに、各サイクル中にIキャッシュ14から命令を取り出す命令ユニット11に結合される。命令ユニット11は、分岐命令を内部で処理するが、順次命令は、実行のためにプロセッサ10の順次実行回路にディスパッチされる。
【0011】
図示の実施例では、順次実行回路に、整数ユニット15、ロード/ストア・ユニット(LSU)16および浮動小数点ユニット(FPU)17が含まれる。整数ユニット15、LSU16およびFPU17のそれぞれは、通常は、各プロセッサ・サイクル中に特定のタイプの順次命令のうちの1つまたは複数の命令を実行する。たとえば、整数ユニット15は、指定された汎用レジスタ(GPR)18またはGPRリネーム・バッファから受け取った整数オペランドに対して、加算、減算、論理和、論理積、排他的論理和などの算術論理演算を実行する。ある命令を実行した後に、整数ユニット15は、結果のデータが存在するならば、そのデータをGPRリネーム・バッファ24に出力する。GPRリネーム・バッファ24は、結果のデータをGPRリネーム・バッファ24から1つまたは複数のGPR18に転送することによって完了ユニット20の指示の下で命令が完了するまで、結果のデータのための一時記憶域を提供する。
【0012】
FPU17は、通常は、浮動小数点レジスタ(FPR)19またはFPRリネーム・バッファ25から受け取ったソース・オペランドに対して、浮動小数点乗除算などの単精度および倍精度の浮動小数点算術論理演算を実行する。FPU17は、浮動小数点命令の実行からもたらされるデータを、選択されたFPRリネーム・バッファ25に出力する。このFPRリネーム・バッファ25は、結果のデータをFPRリネーム・バッファ25から選択されたFPR19に転送することによって完了ユニット20の指示の下で命令が完了するまで、結果データを一時的に記憶する。
【0013】
名前からわかるように、LSU16は、通常は、メモリ(すなわちDキャッシュ13または主記憶のいずれか)から選択されたGPR18またはFPR19にデータをロードするか、GPR18、GPRリネーム・バッファ24、FPR19またはFPRリネーム・バッファ25のうちの選択された1つからメモリにデータを格納するかのいずれかを行う浮動小数点命令および固定小数点命令を実行する。プロセッサ10には、任意選択として、BIU12とIキャッシュ14の間に挿入され、下位レベルのメモリから受け取った命令をIキャッシュ14に事前復号された命令を格納する前に事前復号する、プリデコーダ22を含めることができる。このような事前復号には、たとえば、命令ユニット11による能率化された処理を容易にする均一な形式で分岐命令を配置することを含めることができる。
【0014】
プロセッサ10は、スーパースカラ・アーキテクチャの性能をさらに高めるために、命令のパイプライン化とアウト・オブ・オーダー実行の両方を使用することが好ましい。したがって、命令は、データ依存性が監視される限り、整数ユニット15、LSU16およびFPU17によってどのような順序でも実行できる。さらに、命令は、取出、復号/ディスパッチ、実行、終了および完了を含むパイプライン・ステージのシーケンスで、プロセッサ10によって処理される。本発明に従い、下で詳細に述べるように、プロセッサ10の総合性能は、取出パイプライン・ステージの命令取出サイクル時間を減らすことによって強化される。
【0015】
ここで図2を参照すると、命令ユニット11の詳細なブロック図が示されている。図からわかるように、命令ユニット11には、命令待ち行列30が含まれ、命令待ち行列30には、Iキャッシュ14から取り出した命令を一時的に格納する、実装依存の個数の項目が含まれる。命令は、命令待ち行列30の最下部の項目からプログラムの順序でロードされる。ディスパッチ・ウィンドウ32内の命令は、命令待ち行列30内で最も古い命令を表すが、プロセッサ・クロックの各サイクル中にディスパッチのためにマルチプレクサ34に提示される。ディスパッチ論理36による適当な選択信号のアサートの際に、1つまたは複数の命令が、実行のために順次実行ユニットである整数ユニット15、LSU16およびFPU17にディスパッチされ、命令待ち行列30から除去される。命令待ち行列30に残っている命令は、ディスパッチの際に命令が除去される時に下にシフトされる。所望の実施態様に応じて、ディスパッチ論理36を、実行資源(たとえば実行ユニットとオペランド)が使用可能になった時にプログラムの順序で命令をディスパッチするように制限することができ、その代わりに、データ依存性の観察を検証し、プログラム順序と異なる順序で命令をディスパッチできるようにすることができる。
【0016】
図2からわかるように、命令待ち行列30は、関連する取出ウィンドウ38も有し、取出ウィンドウ38は、ディスパッチ・ウィンドウ32と部分的または完全に重なり合うか、ディスパッチ・ウィンドウ32から外れている可能性がある。取出ウィンドウ38内の各命令は、デコーダ40のうちの対応する1つならびに優先順位論理42および分岐処理ユニット(BPU)44によって入力として受け取られる。デコーダ40は、取出ウィンドウ38内の各命令が分岐命令であるという前提の下で動作する。したがって、命令の受け取りに応答して、デコーダ40のそれぞれは、それぞれの命令が分岐命令であるかのようにその命令を復号して、「分岐」が行われる場合に実行の分岐先になる復号済み目標アドレスを決定する。デコーダ40によって決定された復号済み目標アドレスは、マルチプレクサ50の入力を形成する。
【0017】
デコーダ40が命令を復号する方法は、プロセッサ10によって実行される命令セットのアーキテクチャと、所望の論理の複雑さの両方に依存する。すべての分岐命令が直接分岐を指定するかそれを指定すると仮定される、最も単純な場合では、デコーダ40は、単純に分岐命令の即値フィールドの値を使用して、復号済み目標アドレスを決定する。相対分岐がサポートされるプロセッサ10の実施例では、図1のプリデコーダ22を使用して、相対分岐および即値分岐を前処理して一貫性のある形式にし、その結果、直接分岐命令と相対分岐命令の両方を、デコーダ40が同一の形で処理できるようにすることが好ましい。この前処理は、たとえば、デコーダ40が復号済み目標アドレスの計算に使用できる追加の複数ビット(たとえば5ビット)分岐フィールドを含めるために各分岐命令を拡張することが必要になる場合がある。さらに複雑な実施例では、レジスタ間接分岐もサポートされる可能性がある。レジスタ間接分岐は、PowerPC(商標)のリンク・レジスタおよびカウント・レジスタのうちの1つなど、アーキテクテッド・レジスタ内のアドレスへのプログラム・フローの分岐を指定する命令である。この実施例では、レジスタ間接分岐のアドレスを含む可能性があるアーキテクテッド・レジスタ46の内容を、デコーダ40が復号し、マルチプレクサ50に入力することが好ましい。
【0018】
下でさらに述べるように、命令待ち行列30内の最後の(プログラム順序で)命令のアドレスは、取出ウィンドウ38内にある場合もそうでない場合もあるが、その命令の長さと共に加算器48に入力される。加算器48は、命令アドレスと命令長の和を計算し、この和によって、次の順次命令のアドレスが指定される。この順次命令アドレスは、デコーダ40によって復号され、マルチプレクサ50に入力される。したがって、マルチプレクサ50へのアドレス入力のすべてが、復号済みアドレスである。
【0019】
デコーダ40および加算器48の動作と並列に、優先順位論理42は、取出ウィンドウ38内に命令がある場合に、どの命令が実際に分岐命令であり、どの分岐命令が取出ウィンドウ38内で未処理の最も古い(プログラム順序で)分岐命令であるかを判定する。さらに、BPU44は、取出ウィンドウ38内に分岐命令がある場合に、どの分岐命令で実際に分岐するかを判定する。したがって、BPU44は、優先順位論理42に、どの命令が無条件分岐命令であるか、実際に分岐すると解決された条件分岐命令であるか、静的または動的な分岐予測のいずれかを使用して実際に分岐すると予測された条件分岐命令であるかを示す。当業者であれば理解できるように、静的予測は、通常はコンパイラによって分岐命令に関連付けられたビットに基づき、動的予測は、通常は、少なくとも部分的に、分岐命令の命令アドレスに基づく。図からわかるように、BPU44は、ディスパッチ論理36に分岐予測と分岐解決も提供し、ディスパッチ論理36は、この分岐予測および分岐解決を使用して、マルチプレクサ34を制御する選択信号を生成する。
【0020】
BPU44から受け取った入力と、取出ウィンドウ38内に命令がある場合にどの命令が最も古い未処理の分岐命令であるかの判定とに基づいて、優先順位論理42は、復号済みの選択信号52を生成する。この選択信号52は、マルチプレクサ50の入力と同数であることが好ましい。選択信号52は、マルチプレクサ50に、アクティブな選択信号に対応する復号済み入力アドレスをメモリ要求アドレスとして選択させる。このメモリ要求アドレスの受け取りに応答して、Iキャッシュ14は、そのメモリ要求アドレスに関連する1つまたは複数の命令を命令待ち行列30に供給する。重要なことに、メモリ要求アドレスは、Iキャッシュ14によるメモリ要求アドレスの受け取りの前に、命令ユニット11内のデコーダ40のうちの1つによって復号されるので、Iキャッシュ14がメモリ要求アドレスを復号する必要がなくなる。これは命令取出サイクル時間の短縮をもたらす。というのは、優先順位論理42の動作と並列に、デコーダ40によってアドレス復号が実行されるからである。
【0021】
ここで図3を参照すると、本発明に従って命令を取り出す方法の例の高水準論理流れ図が示されている。図からわかるように、この処理はブロック60で開始され、その後、ブロック62に進んで、1つまたは複数の取り出された命令を命令待ち行列30の最上部にある項目内に格納する。命令待ち行列30は、先行する項目が除去される際に命令待ち行列30の最下部に向かって項目がシフトされるシフト式待ち行列として上で説明したが、本発明は、たとえば環状待ち行列など、命令待ち行列30の他の実施態様にも同様に適用可能であることを理解されたい。その後、処理はブロック62からブロック64に進み、デコーダ40が、取出ウィンドウ38内の各命令から目標アドレスを決定する。さらに、ブロック64では、加算器48が、命令待ち行列30内の最後の命令のアドレスと最後の命令の長さから、次の順次取出アドレスを計算する。
【0022】
ブロック64によって表される動作と並列に、ブロック70ないしブロック76によって表される動作が、優先順位論理42およびBPU44によって実行される。ブロック70を参照すると、優先順位論理42によって、取出ウィンドウ38に未処理の分岐命令が含まれるか否かの判定が行われる。ブロック70で取出ウィンドウ38に未処理の分岐命令が含まれないと判定された場合、処理はブロック72に進み、優先順位論理42が、適当な選択信号を生成して、メモリ要求アドレスとして順次取出アドレスを選択する。その後、処理は、下で説明するブロック80に進む。
【0023】
ブロック70に戻って、取出ウィンドウ38に未処理の分岐命令が含まれると優先順位論理42が判定した場合には、処理はブロック74に進む。ブロック74では、BPU44が、取出ウィンドウ38内の分岐命令のそれぞれを解決または予測する。ブロック74は、ブロック70に続くものとして図示されているが、ブロック70およびブロック74に図示された動作は、タイミングの考慮に応じて、順次または並列のいずれかで実行できることを理解されたい。言い換えると、命令取出サイクル時間を最小にするために、ブロック70ないしブロック76に関連する遅延は、デコーダ40および加算器48の遅延のうちの最長の遅延より長くなってはならない。したがって、タイミングの考慮から必要になる場合には、ブロック74を、任意選択として省略する(波線によって示されているように)ことができ、すべての分岐が実際に分岐すると仮定することができる。この実施例では、BPU44を使用して、ブロック84に関して下で説明するように、誤って予測された実行経路に含まれる命令を後程取り消すことができる。処理は、ブロック74からブロック76に進み、優先順位論理42が、取出ウィンドウ38内の最も古い未処理の分岐命令から決定された目標アドレスを選択する選択信号を生成する。選択された目標アドレスは、デコーダ40のうちで取出ウィンドウ38内の命令に関連するものによって出力されるか、レジスタ間接分岐命令をサポートする場合には、アーキテクテッド・レジスタ46に関連するデコーダ40によって出力される可能性がある。その後、処理はブロック80に進む。
【0024】
ブロック80では、マルチプレクサ50が、選択信号52に応答して、復号済み入力アドレスのうちの少なくとも1つを、メモリ要求アドレスとして選択する。その後、このメモリ要求アドレスは、マルチプレクサ50からIキャッシュ14に送られる。投機分岐目標アドレスがメモリ要求アドレスとしてIキャッシュ14に供給される場合、優先順位論理42は、マルチプレクサ50に加算器48によって計算された順次アドレスを副取出アドレスとしてIキャッシュ14へ供給させる選択信号52も生成することができる。この形で、目標アドレスが正しいものとして解決された場合には、順次経路内の命令を破棄できる。その代わりに、目標アドレスが誤って予測された実行経路内にあることが後程判明した場合には、誤って予測された経路内の命令を破棄することができ、追加の待ち時間をこうむらずに順次実行経路内の命令を用いて命令処理を進めることができる。
【0025】
ブロック80の後に、処理はブロック82に進み、メモリ要求アドレスによって指定される1つまたは複数の命令が命令待ち行列30内で受け取られているかどうかを判定する。そうでない場合には、この処理は要求された命令を受け取るまで、単純にブロック82を繰り返す。命令待ち行列30が要求された命令を受け取ったことに応答して、命令取出サイクルが完了し、この処理は、任意選択のブロック84に進む。任意選択のブロック84では、BPU44が、予測された分岐を解決するか、分岐命令を予測(ブロック74で予測を実行しない場合)して、取り出された命令がある場合にどの命令を破棄すべきかを決定する。重要なことに、ブロック84に示された動作は、命令取出サイクルに含まれず、したがって、分岐が正しく予測された場合に命令取出待ち時間に寄与しない。その後、処理はブロック62に戻る。
【0026】
上で説明したように、本発明は、命令取出の改良された方法を使用して命令取出サイクル時間を減らすプロセッサを提供する。本発明によれば、複数の潜在的なメモリ要求アドレスが生成され、それらのアドレスの生成と並列に、少なくとも1つのアドレスがメモリ要求アドレスとして選択される。アドレスの生成とアドレスの選択をオーバーラップさせることによって、全体的な命令取出サイクル時間が短縮される。上で述べたように、潜在的なメモリ要求アドレスは、メモリ要求アドレスとしての1つのアドレスの選択の前に復号され、その結果、アドレス復号がクリティカルなタイミング・パスで実行されないようにすることが好ましい。
【0027】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0028】
(1)複数の以前に取り出された未処理の分岐命令をプログラムの古い順に使用して複数の目標アドレスを決定し、前記複数の以前に取り出された命令のうちの最後の命令を使用して順次アドレスを決定するステップと、
前記複数の目標アドレスおよび前記順次アドレスの前記決定と並列に、前記複数の目標アドレスのうちの1つを指定するか、または前記順次アドレスを指定する選択信号を生成するステップと、
前記選択信号を使用して、前記複数の目標アドレスのうちの1つまたは前記順次アドレスをメモリ要求アドレスとして選択するステップと、
メモリがプロセッサに少なくとも1つの命令を供給するようにするために、前記メモリ要求アドレスを前記プロセッサから前記メモリに伝送するステップと
を含む命令取出方法。
(2)さらに、前記複数の以前に取り出された命令を、そこから命令が前記プロセッサによってディスパッチされる命令待ち行列内に格納するステップを含む、上記(1)に記載の方法。
(3)前記生成するステップが、
前記複数の以前に取り出された命令に分岐命令が含まれるか否かを判定するステップと、
前記複数の以前に取り出された命令に分岐命令が含まれることの判定に応答して、前記複数の目標アドレスの中で前記分岐命令から決定される目標アドレスを指定する選択信号を生成するステップと、
前記複数の以前に取り出された命令に分岐命令が含まれないことの判定に応答して、前記順次アドレスを指定する選択信号を生成するステップと
を含む、上記(1)に記載の方法。
(4)前記方法がさらに、前記分岐命令によって指定される目標実行経路が採用されるかどうかを判定するステップを含み、
前記複数の目標アドレスの中で前記分岐命令から決定される目標アドレスを指定する選択信号を生成する前記ステップが、前記分岐命令によって指定される前記目標実行経路が採用されることの判定に応答してのみ実行される
上記(3)に記載の方法。
(5)前記複数の以前に取り出された命令が、第1分岐命令と第2分岐命令とを含み、前記生成するステップが、前記第1分岐命令および前記第2分岐命令のうちでプログラム順で古いものを指定する選択信号を生成するステップを含む、上記(1)に記載の方法。
(6)前記選択するステップが、マルチプレクサを使用して、前記複数の目標アドレスおよび前記順次アドレスのうちの1つをメモリ要求アドレスとして選択するステップを含む、上記(1)に記載の方法。
(7)さらに、前記選択の前に、前記複数の目標アドレスおよび前記順次アドレスを復号するステップを含む、上記(1)に記載の方法。
(8)複数の以前に取り出された未処理の分岐命令をプログラムの古い順に使用して複数の目標アドレスを決定し、前記複数の以前に取り出された命令のうちの最後の命令を使用して順次アドレスを決定するための手段と、
前記複数の目標アドレスおよび前記順次アドレスの前記決定と並列に、前記複数の目標アドレスのうちの1つを指定するか、または前記順次アドレスを指定する選択信号を生成するための手段と、
前記選択信号を使用して、前記複数の目標アドレスのうちの1つまたは前記順次アドレスをメモリ要求アドレスとして選択するための手段と、
メモリが少なくとも1つの命令をプロセッサに供給するようにするために、前記メモリ要求アドレスをプロセッサから前記メモリに伝送するための手段と
を含む、プロセッサ。
(9)さらに、前記複数の以前に取り出された命令を格納するための命令待ち行列を含み、命令が、前記プロセッサによって前記命令待ち行列からディスパッチされる、上記(8)に記載のプロセッサ。
(10)前記生成するための手段が、
前記複数の以前に取り出された命令に分岐命令が含まれるか否かを判定するための手段と、
前記複数の以前に取り出された命令に分岐命令が含まれることの判定に応答して、前記複数の目標アドレスの中で前記分岐命令から決定される目標アドレスを指定する選択信号を生成するための手段と、
前記複数の以前に取り出された命令に分岐命令が含まれないことの判定に応答して、前記順次アドレスを指定する選択信号を生成するための手段と
を含む、上記(8)に記載のプロセッサ。
(11)前記プロセッサがさらに、前記分岐命令によって指定される目標実行経路が採用されるかどうかを判定するための手段を含み、
前記複数の目標アドレスの中で前記分岐命令から決定された目標アドレスを指定する選択信号を生成するための前記手段が、前記分岐命令によって指定される前記目標実行経路が採用されることの判定に応答してのみ前記選択信号を生成する
上記(10)に記載のプロセッサ。
(12)前記複数の以前に取り出された命令に、第1分岐命令および第2分岐命令が含まれ、生成するための前記手段が、前記第1分岐命令および第2分岐命令のうちのプログラム順で古いものを指定する選択信号を生成するための手段を含む、上記(8)に記載のプロセッサ。
(13)選択するための前記手段が、マルチプレクサを含む、上記(8)に記載のプロセッサ。
(14)さらに、前記選択の前に、前記複数の目標アドレスおよび前記順次アドレスを復号するための手段を含む、上記(8)に記載のプロセッサ。
(15)ディスパッチされた命令を実行する実行ユニットと、
ディスパッチされる複数の命令を含むことができる命令待ち行列と、
前記命令待ち行列内に含まれる複数の以前に取り出された命令を使用して、複数の目標アドレスおよび順次アドレスを決定するアドレス決定回路と、
前記アドレス決定回路による前記複数の目標アドレスおよび前記順次アドレスの前記決定と並列に、前記複数の目標アドレスのうちの1つまたは前記順次アドレスをメモリ要求アドレスとして選択する、優先順位論理と
を含む、関連するメモリを有するプロセッサ。
(16)前記優先順位論理が、
前記複数の以前に取り出された命令に分岐命令が含まれるか否かを判定するための手段と、
前記複数の以前に取り出された命令に分岐命令が含まれることの判定に応答して、前記複数の目標アドレスの中で前記分岐命令から決定される目標アドレスを指定する選択信号を生成するための手段と、
前記複数の以前に取り出された命令に分岐命令が含まれないことの判定に応答して、前記順次アドレスを指定する選択信号を生成するための手段と
を含む、上記(15)に記載のプロセッサ。
(17)さらに、前記優先順位論理に結合された、前記分岐命令によって指定される目標実行経路が採用されるかどうかを判定する分岐処理ユニットを含み、
前記複数の目標アドレスの中で前記分岐命令から決定された目標アドレスを指定する選択信号を生成するための前記手段が、前記分岐命令によって指定される前記目標実行経路が採用されることの前記分岐処理ユニットによる判定に応答してのみ前記選択信号を生成する
上記(16)に記載のプロセッサ。
(18)前記複数の以前に取り出された命令に、第1分岐命令および第2分岐命令が含まれ、前記優先順位論理が、前記第1分岐命令および前記第2分岐命令のうちのプログラム順で古いものを選択する、上記(15)に記載のプロセッサ。
(19)さらに、入力として前記複数の目標アドレスおよび前記順次アドレスを有するマルチプレクサを含み、前記マルチプレクサが、前記優先順位論理に結合された選択入力と、前記メモリに結合できる出力とを含む、上記(15)に記載のプロセッサ。
(20)前記アドレス決定回路が、それぞれが前記優先順位論理による前記メモリ要求アドレスの選択の前に前記命令待ち行列内の前記複数の命令のうちの1つを復号する複数の命令デコーダを含む、上記(15)に記載のプロセッサ。
【図面の簡単な説明】
【図1】本発明の方法およびシステムを有利に使用することができるデータ処理システムの実施例を示す図である。
【図2】図1に示されたデータ処理システムの命令ユニットの詳細なブロック図である。
【図3】本発明による、メモリから命令を取り出す方法を示す論理流れ図である。
【符号の説明】
10 プロセッサ
11 命令ユニット
14 命令(I)キャッシュ
30 命令待ち行列
32 ディスパッチ・ウィンドウ
34 マルチプレクサ
36 ディスパッチ論理
38 取出ウィンドウ
40 デコーダ
42 優先順位論理
44 分岐処理ユニット(BPU)
46 アーキテクテッド・レジスタ
48 加算器
50 マルチプレクサ
52 選択信号

Claims (20)

  1. プロセッサがメモリから命令を取り出す方法であって、
    前記メモリから以前に取り出された複数の未処理の分岐命令をプログラムの古い順に使用して複数の復号された目標アドレスを決定し、前記以前に取り出された複数の命令のうちの最後の命令を使用して復号された順次アドレスを決定するステップと、
    前記複数の目標アドレスおよび前記順次アドレスの前記決定と並列に、前記複数の目標アドレスのうちの1つを指定するか、または前記順次アドレスを指定する復号された選択信号を生成するステップと、
    前記選択信号を使用して、前記複数の目標アドレスのうちの1つまたは前記順次アドレスをメモリ要求アドレスとして選択するステップと、
    前記メモリが前記プロセッサに少なくとも1つの命令を供給するようにするために、前記メモリ要求アドレスを前記プロセッサから前記メモリに伝送するステップと
    を含む、命令取出方法。
  2. さらに、前記以前に取り出された複数の命令を、そこから命令が前記プロセッサによってディスパッチされる命令待ち行列内に格納するステップを含む、請求項1に記載の方法。
  3. 前記生成するステップが、
    前記以前に取り出された複数の命令に分岐命令が含まれるか否かを判定するステップと、
    前記以前に取り出された複数の命令に分岐命令が含まれることの判定に応答して、前記複数の目標アドレスの中で前記分岐命令から決定される前記目標アドレスを指定する前記選択信号を生成するステップと、
    前記以前に取り出された複数の命令に分岐命令が含まれないことの判定に応答して、前記順次アドレスを指定する前記選択信号を生成するステップと
    を含む、請求項1に記載の方法。
  4. 前記方法がさらに、前記分岐命令によって指定される目標実行経路が採用されるかどうかを判定するステップを含み、
    前記複数の目標アドレスの中で前記分岐命令から決定される目標アドレスを指定する選択信号を生成する前記ステップが、前記分岐命令によって指定される前記目標実行経路が採用されることの判定に応答してのみ実行される
    請求項3に記載の方法。
  5. 前記以前に取り出された複数の命令が、第1分岐命令と第2分岐命令とを含み、前記生成するステップが、前記第1分岐命令および前記第2分岐命令のうちプログラム順で古いものを指定する前記選択信号を生成するステップを含む、請求項1に記載の方法。
  6. 前記選択するステップが、マルチプレクサを使用して、前記複数の目標アドレスおよび前記順次アドレスのうちの1つをメモリ要求アドレスとして選択するステップを含む、請求項1に記載の方法。
  7. さらに、前記選択の前に、前記複数の目標アドレスおよび前記順次アドレスを復号するステップを含む、請求項1に記載の方法。
  8. メモリから以前に取り出された複数の未処理の分岐命令をプログラムの古い順に使用して複数の復号された目標アドレスを決定し、前記以前に取り出された複数の命令のうちの最後の命令を使用して復号された順次アドレスを決定するための手段と、
    前記複数の目標アドレスおよび前記順次アドレスの前記決定と並列に、前記複数の目標アドレスのうちの1つを指定するか、または前記順次アドレスを指定する復号された選択信号を生成するための手段と、
    前記選択信号を使用して、前記複数の目標アドレスのうちの1つまたは前記順次アドレスをメモリ要求アドレスとして選択するための手段と、
    前記メモリが少なくとも1つの命令をプロセッサに供給するようにするために、前記メモリ要求アドレスを前記プロセッサから前記メモリに伝送するための手段と
    を含む、プロセッサ。
  9. さらに、前記以前に取り出された複数の命令を格納するための命令待ち行列を含み、命令が、前記プロセッサによって前記命令待ち行列からディスパッチされる、請求項8に記載のプロセッサ。
  10. 前記生成するための手段が、
    前記以前に取り出された複数の命令に分岐命令が含まれるか否かを判定するための手段と、
    前記以前に取り出された複数の命令に分岐命令が含まれることの判定に応答して、前記複数の目標アドレスの中で前記分岐命令から決定される目標アドレスを指定する前記選択信号を生成するための手段と、
    前記以前に取り出された複数の命令に分岐命令が含まれないことの判定に応答して、前記順次アドレスを指定する前記選択信号を生成するための手段と
    を含む、請求項8に記載のプロセッサ。
  11. 前記プロセッサがさらに、前記分岐命令によって指定される目標実行経路が採用されるかどうかを判定するための手段を含み、
    前記複数の目標アドレスの中で前記分岐命令から決定された目標アドレスを指定する前記選択信号を生成するための前記手段が、前記分岐命令によって指定される前記目標実行経路が採用されることの判定に応答してのみ前記選択信号を生成する
    請求項10に記載のプロセッサ。
  12. 前記以前に取り出された複数の命令に、第1分岐命令および第2分岐命令が含まれ、生成するための前記手段が、前記第1分岐命令および第2分岐命令のうちのプログラム順で古いものを指定する前記選択信号を生成するための手段を含む、請求項8に記載のプロセッサ。
  13. 選択するための前記手段が、マルチプレクサを含む、請求項8に記載のプロセッサ。
  14. さらに、前記選択の前に、前記複数の目標アドレスおよび前記順次アドレスを復号するための手段を含む、請求項8に記載のプロセッサ。
  15. ディスパッチされた命令を実行する実行ユニットと、
    ディスパッチされる複数の命令を含むことができる命令待ち行列と、
    前記命令待ち行列内に含まれる、メモリから以前に取り出された複数の未処理の分岐命令をプログラムの古い順に使用して、複数の復号された目標アドレスを決定し、前記以前に取り出された複数の命令のうちの最後の命令を使用して、復号された順次アドレスを決定するアドレス決定回路と、
    前記アドレス決定回路による前記複数の目標アドレスおよび前記順次アドレスの前記決定と並列に、前記複数の目標アドレスのうちの1つまたは前記順次アドレスをメモリ要求アドレスとして選択する復号された選択信号を発生する、優先順位論理と
    を含む、関連するメモリを有するプロセッサ。
  16. 前記優先順位論理が、
    前記以前に取り出された複数の命令に分岐命令が含まれるか否かを判定するための手段と、
    前記以前に取り出された複数の命令に分岐命令が含まれることの判定に応答して、前記複数の目標アドレスの中で前記分岐命令から決定される前記目標アドレスを指定する前記選択信号を生成するための手段と、
    前記以前に取り出された複数の命令に分岐命令が含まれないことの判定に応答して、前記順次アドレスを指定する前記選択信号を生成するための手段と
    を含む、請求項15に記載のプロセッサ。
  17. さらに、前記優先順位論理に結合された、前記分岐命令によって指定される目標実行経路が採用されるかどうかを判定する分岐処理ユニットを含み、
    前記複数の目標アドレスの中で前記分岐命令から決定された目標アドレスを指定する前記選択信号を生成するための前記手段が、前記分岐命令によって指定される前記目標実行経路が採用されることの前記分岐処理ユニットによる判定に応答してのみ前記選択信号を生成する
    請求項16に記載のプロセッサ。
  18. 前記以前に取り出された複数の命令に、第1分岐命令および第2分岐命令が含まれ、前記優先順位論理が、前記第1分岐命令および前記第2分岐命令のうちのプログラム順で古いものを選択する、請求項15に記載のプロセッサ。
  19. さらに、入力として前記複数の目標アドレスおよび前記順次アドレスを有するマルチプレクサを含み、前記マルチプレクサが、前記優先順位論理に結合された選択入力と、前記メモリに結合できる出力とを含む、請求項15に記載のプロセッサ。
  20. 前記アドレス決定回路が、それぞれが前記優先順位論理による前記メモリ要求アドレスの選択の前に前記命令待ち行列内の前記複数の命令のうちの1つを復号する複数の命令デコーダを含む、請求項15に記載のプロセッサ。
JP07891399A 1998-03-24 1999-03-24 メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法 Expired - Fee Related JP3721002B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/046,872 US6334184B1 (en) 1998-03-24 1998-03-24 Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request
US09/046872 1998-03-24

Publications (2)

Publication Number Publication Date
JP2000029694A JP2000029694A (ja) 2000-01-28
JP3721002B2 true JP3721002B2 (ja) 2005-11-30

Family

ID=21945849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07891399A Expired - Fee Related JP3721002B2 (ja) 1998-03-24 1999-03-24 メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法

Country Status (6)

Country Link
US (1) US6334184B1 (ja)
EP (1) EP0945785B1 (ja)
JP (1) JP3721002B2 (ja)
KR (1) KR100331199B1 (ja)
DE (1) DE69938911D1 (ja)
TW (1) TW409224B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
US7210025B1 (en) * 2000-04-19 2007-04-24 Uht Augustus K Automatic and transparent hardware conversion of traditional control flow to predicates
US6823473B2 (en) * 2000-04-19 2004-11-23 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit
US6854075B2 (en) * 2000-04-19 2005-02-08 Hewlett-Packard Development Company, L.P. Simultaneous and redundantly threaded processor store instruction comparator
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0774992B2 (ja) 1988-08-09 1995-08-09 松下電器産業株式会社 データ処理装置
JPH0375932A (ja) 1989-08-18 1991-03-29 Nec Corp 数値演算処理装置
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
JPH04125733A (ja) 1990-09-18 1992-04-27 Nec Corp パイプライン情報処理方式
JP2591325B2 (ja) 1990-10-30 1997-03-19 松下電器産業株式会社 分岐制御装置
JPH05108345A (ja) 1991-10-16 1993-04-30 Nec Corp 分岐命令処理装置
JP2761688B2 (ja) 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US5495598A (en) * 1993-12-23 1996-02-27 Unisys Corporation Stuck fault detection for branch instruction condition signals
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation
TW360852B (en) 1995-04-12 1999-06-11 Matsushita Electric Ind Co Ltd Pipeline processor
JPH08314720A (ja) 1995-05-12 1996-11-29 Hitachi Ltd 分岐制御システム
US5911153A (en) 1996-10-03 1999-06-08 International Business Machines Corporation Memory design which facilitates incremental fetch and store requests off applied base address requests
US5796998A (en) * 1996-11-21 1998-08-18 International Business Machines Corporation Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US5926628A (en) * 1997-07-15 1999-07-20 International Business Machines Corporation Selectable priority bus arbitration scheme
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US5974543A (en) * 1998-01-23 1999-10-26 International Business Machines Corporation Apparatus and method for performing subroutine call and return operations

Also Published As

Publication number Publication date
JP2000029694A (ja) 2000-01-28
EP0945785B1 (en) 2008-06-18
EP0945785A2 (en) 1999-09-29
DE69938911D1 (de) 2008-07-31
KR100331199B1 (ko) 2002-04-06
US6334184B1 (en) 2001-12-25
TW409224B (en) 2000-10-21
KR19990077433A (ko) 1999-10-25
EP0945785A3 (en) 2000-09-27

Similar Documents

Publication Publication Date Title
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5850543A (en) Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US5752014A (en) Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5740419A (en) Processor and method for speculatively executing an instruction loop
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
US5864697A (en) Microprocessor using combined actual and speculative branch history prediction
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
JPH0334024A (ja) 分岐予測の方法とそのための装置
EP1849063A2 (en) System and method of correcting a branch misprediction
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US20040044884A1 (en) Evaluation of condition codes in a data processing apparatus
JPH10111800A (ja) 分岐解決方法、プロセッサ、及びシステム
US6662360B1 (en) Method and system for software control of hardware branch prediction mechanism in a data processor
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
US6035390A (en) Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
US5987599A (en) Target instructions prefetch cache
US6170053B1 (en) Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy
JP7409208B2 (ja) 演算処理装置
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
US6157995A (en) Circuit and method for reducing data dependencies between instructions
US5764940A (en) Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch
US7991816B2 (en) Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050804

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050909

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080916

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090916

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090916

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100916

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100916

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110916

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120916

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130916

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees