JPH1069385A - 命令ループを推論的に実行するプロセッサ及び方法 - Google Patents

命令ループを推論的に実行するプロセッサ及び方法

Info

Publication number
JPH1069385A
JPH1069385A JP9181943A JP18194397A JPH1069385A JP H1069385 A JPH1069385 A JP H1069385A JP 9181943 A JP9181943 A JP 9181943A JP 18194397 A JP18194397 A JP 18194397A JP H1069385 A JPH1069385 A JP H1069385A
Authority
JP
Japan
Prior art keywords
instruction
executed
instruction loop
execution
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.)
Granted
Application number
JP9181943A
Other languages
English (en)
Other versions
JP3093684B2 (ja
Inventor
Terence M Potter
テレンス・エム・ポッター
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 JPH1069385A publication Critical patent/JPH1069385A/ja
Application granted granted Critical
Publication of JP3093684B2 publication Critical patent/JP3093684B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 命令ループを推論的に実行するプロセッサ及
び方法を提供する。 【解決手段】 プロセッサにより、実行すべき命令ルー
プの実際の繰り返し回数と、実行された命令ループの繰
り返し回数との間の差が0になるまで、命令ループを繰
り返させる。前記差が0より小さいときは、前記誤予測
による命令ループの繰り返しにおいて実行していないフ
ェッチ命令を取り消し、命令ループの繰り返しのデータ
結果は無視する。

Description

【発明の詳細な説明】
【0001】
【発明が属する技術分野】本発明の技術分野は、概要的
にデータ処理方法及びシステムに関し、特に分岐命令を
実行するプロセッサ及び方法に関する。更に詳細に述べ
ると、本発明の技術分野は、命令ループを推論的に実行
するプロセッサ及び方法に関する。
【0002】
【従来の技術】最新のスーパースケーラ・プロセッサ
は、例えば、命令を記憶する命令キャッシュ、命令キャ
ッシュからフェッチした複数の命令を一時的に記憶して
実行する命令バッファ、命令シーケンスを実行する1以
上の実行ユニット、分岐命令を実行する分岐処理ユニッ
ト(BPU)、命令バッファから特定の実行ユニットへ
命令シーケンスをディスパッチするディスパッチ・ユニ
ット、及び実行を終了したが、完結しなかった命令シー
ケンスを一時記憶する完了バッファを備えることができ
る。
【0003】スーパースケーラ・プロセッサの分岐処理
ユニット(BPU)により実行される分岐命令は、条件
分岐命令又は無条件分岐命令に分類され得る。無条件分
岐命令は、プログラム実行の流れを逐次的な実行パスか
ら指定された目標実行パスへ変更し、かつ他の命令の実
行により提供される条件に依存しない分岐命令である。
従って、常に無条件分岐命令により指定された分岐が行
われる。これに対して、条件分岐命令は、プロセッサ内
の条件、例えば指定されたレジスタの状態又はカウンタ
の値に従い、プログラムの流れにおいて指示された分岐
を行うか、又は行わない分岐命令である。更に、条件分
岐命令は、これが分岐処理ユニット(BPU)により評
価されるときに、分岐が依存する条件が得られるか否か
に基づいて、決定済み又は未決定として分類できる。決
定された条件分岐命令が依存している条件は実行前に分
かっているので、典型的には、決定された条件分岐命令
を実行することができ、また目標実行パス内の命令を命
令シーケンスの実行において僅かな遅延又は遅延なしで
フェッチすることができる。他方、未解決の条件命令
は、分岐が依存する条件が入手可能となるまで、命令シ
ーケンスのフェッチを遅延させるのであれば、大きなパ
フォーマンスの低下を来す恐れがある。
【0004】従って、いくつかのプロセッサは、パフォ
ーマンスを高めるために、指示された分岐をするのか、
しないのかを予測して、未決定の分岐命令を推論的に実
行する。次に、フェッチヤーは、予測の結果を利用し
て、分岐の決定前に、推論的な実行パス内の複数の命令
をフェッチすることにより、次に分岐が正しく予測され
たとして分岐を決定する場合に、実行パイプラインにお
けるストールをなくするすることができる。
【0005】大抵の形式の条件命令は、例えば静的又は
動的な予測を用いて、BPUにより通常に予測される
が、命令ループのインデックスとして用いられるレジス
タ内に保持されている値に基づいて分岐する「カウント
による条件分岐」は、通常のプロセッサにより予測され
ることはない。カウント命令による分岐条件が通常のプ
ロセッサのBPUによりデコードされると、命令は、分
岐インデックス値(典型的には特殊用レジスタ内に記憶
される)が利用可能になるまでストールする。このよう
にしてプロセッサがストールすると、特に実行している
プログラムが多数回のループを有するときは、大きなパ
フォーマンス劣化に帰結する。従って、プロセッサにカ
ウント命令による条件分岐を推論的に実行させ、次いで
分岐インデックス値を判断したときに、分岐を決定させ
る分岐予測方法論が必要とされるのは、明らかである。
【0006】
【発明が解決しようとする課題】従って、本発明の第1
の目的はデータ処理方法及びシステムを提供することで
ある。
【0007】本発明の他の目的は分岐命令を実行するプ
ロセッサ及び方法を提供することである。
【0008】本発明の更に他の目的は推論的に命令ルー
プを実行するプロセッサ及び方法を提供することであ
る。
【0009】
【課題を解決するための手段】以上の目的は、ここで説
明されているように達成される。命令ループを推論的に
実行するプロセッサ及び方法を開示する。この方法によ
れば、プロセッサが命令ループの実行を開始し、それぞ
れ実行された前記命令ループの繰り返しをカウントす
る。その後、命令ループが実行されるべき実際の繰り返
し回数を判断する。この判断に応答して、前記命令ルー
プが実行されるべき実際の繰り返し回数と、実行された
繰り返し回数との間の差を判断する。この差が0より大
きいという判断に応答して、その差に等しい付加的な繰
り返し回数につき命令ループが実行される。一実施例に
よれば、この差が0未満であるとの判断に応答して、誤
予測による命令ループの繰り返し内でフェッチされた未
実行命令は、取り消される。更に、実行された誤予測に
よる命令ループの繰り返しのデータ結果は、無視され
る。他の実施例によれば、実行された命令ループの繰り
返しは、カウント・レジスタを0にセットし、かつ実行
された命令ループの各繰り返しについて前記カウント・
レジスタを1つ減算することにより、カウントされる。
実行すべき実際の繰り返し回数と実行繰り返し回数との
間の差は、実際の繰り返しの数とカウント・レジスタの
値とを加算することにより、決定される。
【0010】この実施例の付加的な目的、特徴及び効果
は以下に詳細に記載した説明により明らかとなる。
【0011】
【発明の実施の形態】ここで図、特に図1を参照する
と、特許請求の範囲に記載され、本発明により情報を処
理するプロセッサの一実施例のブロック図が総体的に1
0により示されている。説明する図示の実施例におい
て、プロセッサ10は一個の集積回路スーパースケーラ
・マイクロプロセッサを備えている。従って、以下で更
に説明しているように、プロセッサ10は、集積回路に
より全て形成された種々の実行ユニット、複数のレジス
タ、複数バッファ、複数のメモリ、及び他の複数の機能
ユニットを備えている。プロセッサ10は、好ましく
は、縮小命令セット(RISC)技術に従って動作し、IBM
マイクロエレクトロニクスから入手可能なマイクロプロ
セッサのPower PC(登録商標)ラインのうちの一つを備
えている。しかし、当該技術分野において習熟する者
は、他の適当なプロセッサを使用してもよいことを理解
すべきである。図1に示すように、プロセッサ10は、
このプロセッサ10内のバス・インターフェイス・ユニ
ット(BIU)12を介してシステム・バス11に接続
されている。BIU12はプロセッサ10とシステム・
バス11に接続されている他の装置、例えばメイン・メ
モリ(図示なし)との間の情報の転送を制御する。プロ
セッサ10、システム・バス11、及びシステム・バス
11に接続された他の装置は、相互にデータ処理システ
ムを形成している。
【0012】BIU12はプロセッサ10内の命令キャ
ッシュ14及びデータ・キャッシュ16に接続されてい
る。命令キャッシュ14及びデータ・キャッシュ16の
ような高速度キャッシュは、プロセッサ10がメイン・
メモリから命令キャッシュ14及びデータ・キャッシュ
16へ前に転送されたデータ又は命令のサブセットに対
して比較的に速いアクセス時間を達成できるようにする
ものであり、従ってデータ処理システムの動作速度を改
善する。命令キャッシュ14は、更に、各サイクルにお
いて1以上の命令をフェッチして命令キャッシュ14か
ら実行するシーケンシャル・フェッチヤー17に接続さ
れている。シーケンシャル・フェッチヤー17は命令キ
ャッシュ14からフェッチされた命令を分岐処理ユニッ
ト(BPU)18及び命令キュー19へ転送し、これら
の命令が分岐か又は命令シーケンスかを判断する。分岐
命令は実行のためにBPU18により保持され、かつ命
令キュー19から取り消される。他方、命令シーケンス
はBPU18から取り消されると共に、プロセッサ10
内の他の実行回路による次の実行のために命令キュー1
9内に記憶される。前述のように、BPU18により実
行される分岐命令を条件命令又は無条件命令に分類する
ことができる。更に、条件分岐命令を決定済みか、又は
未決定かに分類することができる。条件分岐命令は、デ
ータ処理システム内の種々の条件に応答してセット若し
くはクリアされる条件レジスタ(CR)における特定の
ビット状態、及び/又はカウント・レジスタ(CTR)に
記憶した値に基づくことができる。
【0013】この実施例において、プロセッサ10の実
行回路は、BPU18に加えて、固定少数点ユニット
(FXU)22、ロード・ストア・ユニット(LSU)
28、浮動少数点ユニット(FPU)30を含むシーケ
ンシャル命令用の複数の実行ユニットを備えている。コ
ンピュータの技術分野に習熟する者にとっては周知のよ
うに、各実行ユニット22、LSU28及びFPU30
は、典型的には、各プロセッサ・サイクルにおいて特定
形式の命令シーケンスにおける1以上の命令を実行す
る。例えば、FXU22は、指定された汎用レジスタ
(GPR)32又はGPRリネーム・バッファ33から
受け取ったソース・オペランドを用いて加算、減算、論
理積、論理和及び排他的論理和のような固定少数点算術
及び論理演算を実行する。FXU22は、固定少数点命
令を実行した後に、GPRリネーム・バッファ33に対
して命令の結果データを出力する。このGPRリネーム
・バッファ33は、命令を完了するまで、GPRリネー
ム・バッファ33から1以上の汎用レジスタ(GPR)
32へ結果データを転送することにより、結果データを
一時的に記憶する。逆に、FPU30は、典型的には、
浮動少数点レジスタ(FPR)36又はFPRリネーム
・バッファ37から受け取ったソース・オペランにより
浮動少数点掛け算及び割り算のような単及び倍精度算術
及び論理演算を実行する。FPU30は浮動少数点命令
の実行結果によるデータを選択したFPRリネーム・バ
ッファ37に出力し、このFPRリネーム・バッファ3
7は、命令を完了するまで、FPRリネーム・バッファ
37から選択した浮動少数点レジスタ(FPR)36へ
結果データを転送することにより、結果データを一時的
に記憶する。LSU28は、その名称が意味するよう
に、LSU28は、典型的には、メモリ(即ち、データ
・キャッシュ16又はメイン・メモリ)からのデータを
選択した汎用レジスタ(GPR)32若しくは浮動少数
点レジスタ(FPR)36にロードするか、又は汎用レ
ジスタ(GPR)32、GPRリネーム・バッファ3
3、浮動少数点レジスタ(FPR)36若しくはFPR
リネーム・バッファ37のうちから選択した一つからの
データをメモリに記憶する固定少数点命令及び浮動少数
点命令を実行する。
【0014】プロセッサ10は、その推論的なアーキテ
クチャのパフォーマンスを更に改善するために、命令に
ついてのパイプライン処理実行及び順序通りでない実行
を共に採用する。従って、データ依存性を喪失しない限
り、実行ユニット22、LSU28及びFPU30によ
り、任意の順序で命令を便宜的に実行してもよい。更
に、命令はシーケンスのパイプライン段階により処理さ
れる。典型的な多くのハイ・パフォーマンス・プロセッ
サのように、各命令は、5つの異なるパイプライン段
階、即ちフェッチ、デコード/ディスパッチ、実行、終
了及び完了で処理される。
【0015】フェッチ段階において、逐次フェッチヤー
17は命令キャッシュ14から、1又は複数のメモリ・
アドレスに関連づけられた1又は複数の命令を取り出
す。以上で述べたように、命令キャッシュ14からフェ
ッチした命令シーケンスは逐次フェッチヤー17により
命令キュー19に記憶され、一方分岐命令は命令シーケ
ンス・ストリームから除去(フォールド・アウト)され
る。前述のように、第2図〜第6図を参照して以下で説
明するように、BPU18がカウント命令に基づき未決
定の分岐条件を推論的に実行できるようにする機能を含
む分岐命令は、BPU18により実行される。
【0016】デコード/ディスパッチ段階において、デ
ィスパッチ・ユニット20は命令キュー19からの1以
上の命令を実行ユニット22、LSU28及びFPU3
0へディスパッチする。更に、デコード/ディスパッチ
段階において、ディスパッチ・ユニット20はGPRリ
ネーム・バッファ33又はFPRリネーム・バッファ3
7内のリネーム・バッファを各ディスパッチされた命令
の結果データに割り付ける。この実施例によれば、更
に、ディスパッチ・ユニット20によりディスパッチさ
れた命令は、完了ユニット40内の完了バッファに転送
される。順序通りでない実行において、プロセッサ10
は固有の命令識別を利用してディスパッチされた命令の
プログラム順序をトラッキングしている。
【0017】実行段階において、実行ユニット22、L
SU28及びFPU30は、指示されたオペレーション
用のオペランド及び実行リソースが利用可能になると、
ディスパッチ・ユニット20から受け取った命令シーケ
ンスを便宜的に実行する。各実行ユニットのFXU2
2、LSU28及びFPU30は、好ましくは、オペラ
ンド又は実行リソースが利用可能になるまで、その実行
ユニットにディスパッチされた命令を記憶する予約ステ
ーションを備えている。命令の実行を終結した後に、実
行ユニットのFXU22、LSU28及びFPU30
は、命令形式に従ってGPRリネーム・バッファ33か
又はFPRリネーム・バッファ37における命令のデー
タ結果を記憶する。次いで、実行ユニットのFXU2
2、LSU28及びFPU30は、完了ユニット40の
完了バッファ内に記憶された命令の実行を終了したこと
を完了ユニット40に通知する。最後に、完了ユニット
40がプログラム順序により、GPRリネーム・バッフ
ァ33及びFPRリネーム・バッファ37から汎用レジ
スタ(GPR)32及び浮動少数点レジスタ(FPR)
36に命令のデータ結果をそれぞれ転送することによ
り、命令を完了する。
【0018】ここで図2を参照すると、プロセッサ10
におけるBPU18の更に詳細なブロック図が示されて
いる。図示のように、BPU18はデコード・ロジック
50を有する。このデコード・ロジック50は、BPU
18が逐次フェッチヤー17から受け取った各命令をデ
コードして、命令が分岐命令であるか否かを判断し、イ
エスであれば、どのような形式の分岐命令かを判断す
る。更に、BPU18は制御ロジック52を有する。こ
の制御ロジック52は、分岐をするのであれば目標実行
パスの有効アドレス(EA)を計算し、分岐をしないの
であれば逐次実行パスの有効アドレス(EA)を計算す
ることにより、デコード・ロジック50が識別した各分
岐命令を実行する。図示のように、制御ロジック52は
条件レジスタ(CR)56、カウント・レジスタ(CT
R)60、及び分岐履歴テーブル(BHT)54に接続
されている。条件レジスタ(CR)56は32ビット・
レジスタを備えており、これにはデータ処理システム内
の種々の条件に応答してセット又はリセットされるいく
つかのビット・フィールドが含まれている。従って、制
御ロジック52は、条件レジスタ(CR)56を参照し
て条件レジスタ(CR)56内のビット・フィールドを
セット又はクリアする事象の発生に従って、各分岐条件
命令を決定する。カウント・レジスタ(CTR)60は分
岐インデックス値を記憶する32ビット・レジスタを備
えており、この分岐インデックス値はカウント命令に基
づく分岐条件を決定するために制御ロジック52により
参照される。分岐履歴テーブル(BHT)54は、分岐
命令により指定された分岐をすべきか、又はすべきでな
いという予測に関連して、最近に実行された分岐命令の
アドレスを記憶する。制御ロジック52は分岐履歴テー
ブル(BHT)54を参照して、条件レジスタ(CR)
56内のビット・フィールドの状態に従う未決定の条件
分岐命令を推論的に実行する。
【0019】図2を引き続いて参照すると、BPU18
は更に加算器62及びマルチプレクサ64を備えてお
り、これらはカウント命令による分岐条件を実行するた
めに用いられる。図示のように、マルチプレクサ64
は、−1(FFFF FFFFh)に接続された第1の入力、及び
「特殊用レジスタに移動」(mtspr)命令の実行に応答
して、32ビット分岐インデックス値をカウント・レジ
スタ(CTR)60にロードすることを指定する第2の入
力を有する。制御ロジック52から制御信号を受け取る
と、マルチプレクサ64の選択入力に存在する値、及び
カウント・レジスタ(CTR)60の値は、加算器62に
より加算されて、カウント・レジスタ(CTR)60に記
憶される。従って、カウント・レジスタ(CTR)60を
クリアすることにより、及びマルチプレクサ64の分岐
インデックス入力を選択することにより、制御ロジック
52はカウント・レジスタ(CTR)60に32ビット分
岐インデックス値をロードすることができる。その代わ
りに、マルチプレクサ64の−1入力を選択することに
より、制御ロジック52はカウント・レジスタ(CTR)
60内に記憶した分岐インデックス値を減少させてもよ
い。
【0020】ここで図3を参照すると、参照番号70に
より、プロセッサ10の命令セット内のカウント命令に
基づく分岐条件の実施例が示されている。図示のよう
に、カウント命令70による分岐条件には多数のフィー
ルドを有する32ビット命令が含まれており、これらの
フィールドには、オペレーション・コード・フィールド
72、分岐オプション(BO)フィールド74、分岐条
件(BC)フィールド76、アドレス計算フィールド7
8、及びリンク・フィールド80が含まれる。オペレー
ション・コード・フィールド72はカウント命令70に
よる分岐条件の命令形式を固有に識別する。分岐オプシ
ョン(BO)フィールド74は、指定された分岐インデ
ックス値の検出に応答して、分岐をするのか、しないの
かを指定する。更に、分岐オプション(BO)フィール
ド74は、その分岐が分岐条件(BC)フィールド76
で指定された条件レジスタ(CR)56のビット・フィ
ールドに従うのか否かを表している。更に指示された分
岐が条件レジスタ(CR)56内の選択したビット・フ
ィールドの状態に依存しているか、いないかに拘わら
ず、指示された分岐がカウント・レジスタ(CTR)60
内の分岐インデックス値に依存するということを指定し
たBO符号を有する全ての分岐インデックスは、カウン
ト命令による分岐条件を含んでいることに注意すること
が重要である。カウント命令70による分岐条件を再び
参照すると、アドレス計算フィールド58は、カウント
命令70による分岐条件により表された分岐をするとき
に、実行を進める目標アドレスを指定する。最後に、リ
ンク・フィールド60は、カウント命令50による分岐
条件の実行に応答して、フォール・スルー(逐次的な次
の)アドレスをリンク・レジスタにロードするのか否か
を表している。
【0021】図4を参照すると、プログラムにおけるカ
ウント命令による分岐条件の典型的な使用を説明する命
令シーケンス例が示されている。プログラム順序による
と、命令シーケンス100はロード命令100、及びmt
spr命令104により開始し、これらは汎用レジスタ
(GPR)32内のレジスタ26から特殊用レジスタ
(SPR)9、即ちカウント・レジスタ(CTR)60に
分岐インデックス値をロードする。次に、命令シーケン
ス100には、加算命令106及び108と、カウント
命令110による分岐条件とを備えた命令ループが含ま
れている。図示されているように、カウント命令110
による分岐条件は、分岐すると決定すれば実行し続ける
ことになる目標アドレスとして、加算命令106のアド
レスを指定することにより、命令ループを閉じている。
最後に、命令シーケンス100にはストア命令112が
含まれており、この命令は、カウント命令110による
条件分岐をしないと決定するのであれば、実行されるシ
ーケンス命令である。
【0022】多数の異なる実行シナリオにより、制御ロ
ジック52がレディーであって、カウント命令110に
よる条件分岐を実行するときは、カウント命令110に
よる条件分岐が依存する分岐インデックス値をカウント
・レジスタ(CTR)60にストアすることはできない。
例えば、mtspr命令104は、ロード命令102により
要求された分岐インデックス値がデータ・キャッシュ1
6におけるキャッシュ・ミスに応答してメイン・メモリ
から戻されるまで、ストールする恐れがある。その代り
に、ロード命令102の実行は、LSU28内に利用可
能な実行リソースがないために、単純に遅延されること
がある。このような場合には、分岐インデックス値がカ
ウント・レジスタ(CTR)60から得られるまで、カウ
ント命令110による条件分岐によって指定された分岐
を決定することができない。図5を参照して以下で詳細
に説明するように、カウント命令により条件分岐が決定
されるまでストールする通常のプロセッサに対して、プ
ロセッサ10は、プロセッサ・パフォーマンスを高める
ためにカウント命令(及び関連の命令ループ)による未
決定の分岐条件を推論的に実行する。
【0023】ここで図5を参照すると、BPU18内の
カウント命令による条件分岐を推論的に実行する方法の
実施例の論理的なフローチャートが示されている。図5
に示した論理的なフローチャートは多数の逐次的なステ
ップを記載しているが、当該技術分野に習熟する者は、
記載したいくつかのステップを平行して実行ししてもよ
いことが以下の説明から明らかである。図4に示す命令
シーケンス例を参照して、カウントによる分岐命令を推
論的に実行する本発明の方法を説明することにより、記
載のステップを更に詳細に説明する。
【0024】図示のように、処理はブロック200から
開始し、その後、ブロック202及び204に進む。ブ
ロック202及び204は、逐次フェッチヤー17が命
令シーケンスの次のセット、例えば命令キャッシュ14
からロード命令102及びmtspr命令104を検索し
て、フェッチされた命令をBPU18及び命令キュー1
9に転送する。図2に示すように、BPU18内のデコ
ード・ロジック50は各サイクルにおいて逐次フェッチ
ヤー17から1以上の命令を受け取る。デコード・ロジ
ック50は、命令の受け取りに応答して、図5のブロッ
ク206に示すように命令をデコードする。次に、プロ
セスはブロック206からブロック208に進み、命令
が分岐命令を含むか否かを判断する。ブロック208に
おいて、デコード・ロジック50によりデコードされた
命令が非分岐インデックスであるとの判断に応答して、
命令はデコード・ロジック50により単に無視される。
しかし、ブロック210において、ディスパッチ・ユニ
ット20により、命令はカウント・レジスタ(CTR)6
0に選択した値をロードするmtspr命令にあるか否かを
判断する。ノーのときは、処理がページ・コネクタAを
介して、FXU22、LSU28及びFPU30のうち
の一つによる通常の命令実行を表すブロック212に進
む。従って、例えば、図4を参照すると、ロード命令1
02は、BPU18により無視されるが、ディスパッチ
・ユニット20によりディスパッチされて実行される。
同様に、加算命令106及び108はBPU18により
無視されるが、FXU22にディスパッチされて実行さ
れる。その後、処理はページ・コネクタBを介してブロ
ック202に戻る。
【0025】ブロック210に戻り、命令はカウント・
レジスタ(CTR)60に選択した値をロードするmtspr命
令であるという判断をしたときは、更にブロック214
において、カウント・レジスタ(CTR)60を目標とし
ている他のmtspr命令がディスパッチされ、未完了であ
るか否かを判断をする。例えば、mtspr命令用に完了ユ
ニット40内の完了バッファを検索することにより、ブ
ロック214に示した判断をすることができる。未完了
のmtspr命令がカウント・レジスタ(CTR)60を目標と
しているとの判断に応答して、処理はブロック216に
進む。ブロック216は、前にディスパッチしたmtspr
命令が完了するまで、ディスパッチ・ユニット20がカ
ウント・レジスタ(CTR)60内の分岐インデックス値
が重ね書きされないように、命令キュー19にデコード
したmtspr命令を保持することを表している。次いで、
処理はページ・コネクタBを介してブロック202に戻
る。
【0026】しかし、ブロック214において、カウン
ト・レジスタ(CTR)60を目標としている他のmtspr命
令はないという判断に応答して、処理はブロック218
に進む。ブロック218はディスパッチ・ユニット20
がカウント・レジスタ(CTR)60をクリアするように
制御ロジック52に通知することを表している。カウン
ト・レジスタ(CTR)60のクリアは他の2つの目的に
利用される。プログラム順序でmtspr命令及びカウント
命令による条件分岐を実行する場合に(分岐が非推論的
に実行される場合に)、カウント・レジスタ(CTR)6
0のクリアは、カウント命令による条件分岐が依存して
いる分岐インデックス値を、カウント・レジスタ(CT
R)60の現在値と分岐インデックス値とを加算する加
算器62を介してカウント・レジスタ(CTR)60にロ
ードさせる。その代りとして、BPU18によるカウン
ト命令による未決定の条件分岐がデコードされる場合
に、このBPU18の実施例は、常にカウント命令によ
る条件分岐をすると想定して、関連する命令ループの推
論的な実行を可能にする。従って、カウント・レジスタ
(CTR)60の値がカウント命令による条件分岐により
指定された分岐オプションを満足させるか否かを判断す
る前に、制御ロジック52はカウント・レジスタ(CT
R)60を減算させるので、mtspr命令セットの検出に応
答して、カウント・レジスタ(CTR)60のクリアによ
り、カウント・レジスタ(CTR)60における値を推論
的に実行可能な命令ループの最大繰返し回数にセットす
る。更に、カウント命令による条件分岐を推論的に実行
する前に、カウント・レジスタ(CTR)60をクリアす
ることにより、カウント・レジスタ(CTR)60内の値
は、カウント命令による条件分岐の繰返し回数と、カウ
ント命令による条件分岐を決定する前に、推論的に実行
する関連の命令ループとの2の補数表示を指定する。ブ
ロック218を再び参照すると、処理はブロック218
からページ・コネクタAを介してブロック212に進
む。ブロック212は、実行リソース及びオペランドが
利用可能になったときに、mtspr命令を実行することを
表している。
【0027】ここで、図6を参照すると、mtspr命令の
実行に応答してカウント・レジスタ(CTR)60を更新
する方法のフローチャートが示されている。図示のよう
に、BPU18が分岐インデックス値を受け取ることに
応答して、ブロック250から処理が開始される。その
後、処理はブロック252に進む。ブロック252は、
制御ロジック52が分岐インデックス値をカウント・レ
ジスタ(CTR)60に記憶されている2の補数値に加算
することを表している。次に、ブロック254におい
て、カウント・レジスタ(CTR)60の値が0より大き
いか又は等しいかを判断する。この値が0より大きい又
は等しく、カウント命令による条件分岐が実行されなか
った、又はカウント命令による条件分岐が分岐インデッ
クス値により指定された回数より少ない回数について推
論的に実行されたことを示しているときは、処理はブロ
ック260に進み、終了する。いずれの場合も、カウン
ト・レジスタ(CTR)60の値が0より大きいときは、
推論的な分岐オプションが満足されるまで、図5に示す
方法に従って命令ループの非推論的な実行が続く。
【0028】ブロック254に戻り、カウント・レジス
タ(CTR)60に記憶された値が0より小さく、カウン
ト命令による条件分岐の少なくとも一回の繰返しが誤っ
て予測されたことを示しているときは、処理はブロック
256に進む。ブロック256は、BPU18が命令キ
ュー19、FXU22、LSU28、FPU30、及び
完了ユニット40内の完了バッファによる誤予測の命令
ループの繰返し内の命令を取り消すことを表している。
更に、誤予測の命令ループの繰返し内で推論的に実行さ
れた命令のデータ結果は、GPRリネーム・バッファ3
3及びFPRリネーム・バッファ37が無視するものと
なる。次に、処理は、ブロック258に進む。ブロック
258は、制御ロジック52がカウント・レジスタ(CT
R)60をクリアして、ブロック260で終了する。
【0029】図5のブロック208を再び参照して、デ
コード・ロジック50によりデコードされた命令が分岐
命令であると判断されたときは、ブロック230に示す
ように、更に分岐命令がカウントによる条件分岐命令で
あるか否かを判断する。ノーのときは、処理はブロック
230からブロック212に進む。ブロック212は分
岐命令を通常的に実行することを表している。従って、
例えば、デコード・ロジック50から無条件分岐命令を
受け取ったことに応答して、制御ロジック52は単に分
岐命令により指示された目標命令パスの有効アドレス
(EA)を計算して、有効アドレス(EA)を命令キャ
ッシュ14に送信する。しかし、制御ロジック52は、
条件レジスタ(CR)56におけるビット状態に依存す
る条件分岐命令を受け取ったことに応答して、まず条件
レジスタ(CR)56における指定されたビット・フィ
ールドを調べることにより、分岐を決定しようとする。
条件分岐命令が依存するCRビット・フィールドが利用
可能でないときは、制御ロジック52が分岐履歴テーブ
ル(BHT)54を利用して指定された分岐を予測す
る。その後、制御ロジック52は、目標の推論的実行の
有効アドレス(EA)を計算して、命令キャッシュ14
の有効アドレス(EA)に送信する。
【0030】分岐230に戻り、フェッチ命令がカウン
トによる条件分岐命令であること、例えばカウントによ
る条件分岐命令110であることをデコード・ロジック
50が判断したときは、処理がブロック232に進む。
このブロック232は、制御ロジック52がカウント・
レジスタ(CTR)60に記憶した値を減少させることを
表している。次に、ブロック234において、カウント
・レジスタ(CTR)60に記憶した値がカウントによる
条件分岐命令のBOフィールド74に符号化された分岐
オプションを満足させるか否か(例えば、分岐インデッ
クス値が0か否か)の判断する。カウントによる条件分
岐命令の分岐オプションが満足されないときは、処理が
ブロック236に進む。ブロック236は命令ループの
他の繰り返しを実行することを表している。次に、処理
は前述したようにページ・コネクタBを介してブロック
202に戻る。しかし、ブロック234において、カウ
ント・レジスタ(CTR)60に記憶されている分岐イン
デックス値が分岐オプションを満足させると判断された
ときは、処理がブロック240に進む。ブロック240
はカウントによる条件分岐命令を含む命令ループの実行
を終了させる。
【0031】カウントによる条件分岐命令により閉じら
れた命令ループを推論的に実行するプロセッサ及び方法
を説明した。このプロセッサ及び方法はカウント命令に
よる未決定の条件分岐に応答してストールした従来のプ
ロセッサよりもパフォーマンスが高い。更に、このプロ
セッサ及び方法は、誤予測の命令ループの繰り返しを実
行することから立ち直る効果的な機構を提供する。カウ
ント命令の条件分岐により閉じられた命令ループの実行
を参照して、このプロセッサ及び方法を説明したが、当
該技術分野に習熟する者は、開示した実施例を参照し
て、ループ繰り返しを制御する推論的な命令構成を含ま
ないアーキテクチャに説明した概念を拡張できることを
理解すべきである。
【0032】実施例を詳細に示し、かつ説明したが、当
該技術分野に習熟する者は、本発明の精神及び範囲から
逸脱することなく、形式及び細部において種々の変更を
行い得ることを理解すべきである。
【0033】まとめとして、本発明の構成に関して以下
の項を開示する。
【0034】(1)プロセッサ内で命令ループを推論的
に実行する方法であって、前記命令ループの実行を開始
して、実行された前記命令ループの繰り返しをそれぞれ
カウントするステップと、その後に、前記命令ループが
実行されるべき実際の繰り返し回数を判断するステップ
と、前記判断に応答して、前記実際の繰り返し回数と実
行された前記命令ループの繰り返しとの間の差を判断す
るステップと、前記差が0より大きいとの判断に応答し
て、前記差に等しい付加的な繰り返し回数につき前記命
令ループを実行するステップとを含む方法。 (2)前記命令ループは条件分岐命令を含み、前記条件
分岐命令は前記実際の繰り返しについての前記判断に応
答して解決される(1)記載の方法。 (3)前記プロセッサはカウント・レジスタを含み、更
に前記命令ループが実行される繰り返し回数を予測し、
前記予測を前記カウント・レジスタに記憶するステップ
を含む(1)記載の方法。 (4)前記プロセッサはカウント・レジスタを含み、実
行された前記命令ループの繰り返しをそれぞれカウント
する前記ステップは、前記カウント・レジスタに前記実
行された繰り返し回数を保持するステップを含む(1)
記載の方法。 (5)前記カウント・レジスタに前記実行された繰り返
し回数を保持するステップは、前記カウント・レジスタ
を0にセットし、かつ実行される前記命令ループの各繰
り返しについて前記カウント・レジスタを1つ減算する
ステップを含む(4)記載の方法。 (6)前記差を判断するステップは、前記実際の繰り返
し値を前記カウント・レジスタ内の値に加算するステッ
プを含む(5)記載の方法。 (7)前記命令ループが実行されるべき実際の繰り返し
回数を判断するステップは、前記実際の繰り返し回数を
供給する命令を実行するステップを含む(1)記載の方
法。 (8)更に、前記差が0より小さいとする判断に応答し
て、前記誤予測の命令ループの繰り返し内で未だ実行し
ていない命令を取り消すステップを含む(1)記載の方
法。 (9)更に、前記誤予測による命令ループの繰り返しの
データ結果を無視するステップを含む(8)記載の方
法。 (10)複数の命令を実行する1以上の実行ユニットで
あって、実行すべき前記命令ループの実際の繰り返し回
数が未知である間に、命令ループの実行を開始する前記
実行ユニットと、前記実行された前記命令ループの繰り
返し回数をカウントする手段と、前記実際の繰り返し回
数の判断に応答して、前記実際の繰り返し回数と前記実
行された繰り返し回数との間の差を判断する手段とを含
み、前記実行ユニットは前記差が0又は0より大である
との判断に応答して前記差に等しい付加的な繰り返し回
数につき前記命令ループを実行するプロセッサ。 (11)前記実行された繰り返し回数をカウントする手
段は、カウント・レジスタを含む(10)記載のプロセ
ッサ。 (12)更に、前記命令ループが実行される繰り返しの
回数を予測する手段を含み、前記予測する手段は前記カ
ウント・レジスタに前記予測を記憶する(11)記載の
プロセッサ。 (13)更に、前記実行された命令ループの各繰り返し
について前記カウント・レジスタを1つ減算させる手段
を含む(11)記載の方法。 (14)前記差を判断する手段は前記実際の繰り返し回
数を前記カウント・レジスタ内の値に加算する手段を含
む(13)記載のプロセッサ。 (15)前記実際の繰り返し回数についての判断は、前
記1以上の実行ユニットによる命令の実行に応答して行
われる(10)記載のプロセッサ。 (16)更に、複数の命令を実行するためにフェッチす
るフェッチヤーと、実行の前にフェッチした複数の命令
を一時的に記憶するキューであって、前記差が0より小
さいとの判断に応答して前記キューから前記誤予測によ
る命令ループの繰り返し内の複数の命令を取り消す前記
キューとを含む(10)記載のプロセッサ。 (17)更に、複数の命令のデータ結果を一時的に記憶
する1以上のレジスタであって、前記1以上のレジスタ
から誤予測による命令ループの繰り返し内の複数の命令
のデータ結果を無視する前記レジスタ含む(16)記載
のプロセッサ。 (18)複数の命令を記憶するメモリと、前記メモリか
ら命令ループ内の複数の命令を実行のためにフェッチす
るフェッチヤーと、複数の命令を実行する1以上の実行
ユニットであって、実行すべき前記命令ループの実際の
繰り返し回数が未知である間に、命令ループの実行を開
始する前記実行ユニットと、実行された前記命令ループ
の繰り返し回数をカウントする手段と、前記実際の繰り
返し回数の判断に応答して、前記実際の繰り返し回数と
前記実行された繰り返し回数との間の差を判断する手段
とを含み、前記実行ユニットが前記差が0又はそれより
多いことを判断したことに応答して、前記差に等しい付
加的な繰り返し回数につき前記命令ループを実行するデ
ータ処理システム。 (19)前記実行された繰り返し回数をカウントする手
段は、カウント・レジスタを含む(18)記載のデータ
処理システム。 (20)更に、前記命令ループが実行される繰り返し回
数を予測する手段を含み、前記予測する手段は前記カウ
ント・レジスタ内に前記予測を記憶する(18)記載の
データ処理システム。 (21)更に、前記カウント・レジスタを、実行された
前記命令ループの各繰り返しについて1つ減算させる手
段を含む(19)記載のデータ処理システム。 (22)前記差を判断する手段は、前記実際の繰り返し
回数を前記カウント・レジスタ内の値に加算する手段を
含む(21)記載のデータ処理システム。 (23)前記実際の繰り返し回数の判断は、前記1以上
の実行ユニットによる命令の実行に応答して、行われる
(18)記載のデータ処理システム。 (24)更に、実行の前にフェッチした複数の命令を一
時的に記憶するキューであって、前記キューから誤予測
による前記命令ループの繰り返し内の複数の命令を取り
消す前記キューを含む(18)記載のデータ処理システ
ム。 (25)更に、複数の命令のデータ結果を一時的に記憶
する1以上のレジスタであって、前記1以上のレジスタ
から、誤予測による前記命令ループの繰り返しにおける
複数の命令のデータ結果を無視する(24)記載のデー
タ処理システム。
【図面の簡単な説明】
【図1】カウントによる条件分岐命令を推論的に実行す
る機能を含むプロセッサの実施例を示すブロック図であ
る。
【図2】図1に示したプロセッサ内の分岐処理ユニット
(BPU)の更に詳細なブロック図である。
【図3】カウントによる条件分岐命令の実施例を説明す
るビット・フィールド図である。
【図4】カウントによる条件分岐命令を含み、図5に示
す方法により推論的に実行し得る命令シーケンス例を説
明する図である。
【図5】カウントによる条件分岐命令を含む命令ループ
を推論的に実行する方法の実施例のフローチャートであ
る。
【図6】分岐インデックスの判断に応答して図2に示す
カウント・レジスタ(CRT)内の値を更新する方法の
フローチャートである。
【符号の説明】
10 プロセッサ 12 BIU 14 命令キャッシュ 16 データ・キャッシュ 17 逐次フェッチヤー 18 BPU 19 命令キュー 20 ディスパッチ・ユニット 22 FXU 28 LSU 30 FPU 32 汎用レジスタ(GPR) 33 GPRリネーム・バッファ 36 浮動少数点レジスタ(FPR) 37 FPRリネーム・バッファ 40 完了ユニット 50 デコード・ロジック 52 制御ロジック 56 条件レジスタ(CR) 60 カウント・レジスタ(CTR) 62 加算器

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】プロセッサ内で命令ループを推論的に実行
    する方法であって、 前記命令ループの実行を開始して、実行された前記命令
    ループの繰り返しをそれぞれカウントするステップと、 その後に、前記命令ループが実行されるべき実際の繰り
    返し回数を判断するステップと、 前記判断に応答して、前記実際の繰り返し回数と実行さ
    れた前記命令ループの繰り返しとの間の差を判断するス
    テップと、 前記差が0より大きいとの判断に応答して、前記差に等
    しい付加的な繰り返し回数につき前記命令ループを実行
    するステップとを含む方法。
  2. 【請求項2】前記命令ループは条件分岐命令を含み、前
    記条件分岐命令は前記実際の繰り返しについての前記判
    断に応答して解決される請求項1記載の方法。
  3. 【請求項3】前記プロセッサはカウント・レジスタを含
    み、 更に前記命令ループが実行される繰り返し回数を予測
    し、前記予測を前記カウント・レジスタに記憶するステ
    ップを含む請求項1記載の方法。
  4. 【請求項4】前記プロセッサはカウント・レジスタを含
    み、 実行された前記命令ループの繰り返しをそれぞれカウン
    トする前記ステップは、前記カウント・レジスタに前記
    実行された繰り返し回数を保持するステップを含む請求
    項1記載の方法。
  5. 【請求項5】前記カウント・レジスタに前記実行された
    繰り返し回数を保持するステップは、前記カウント・レ
    ジスタを0にセットし、かつ実行される前記命令ループ
    の各繰り返しについて前記カウント・レジスタを1つ減
    算するステップを含む請求項4記載の方法。
  6. 【請求項6】前記差を判断するステップは、前記実際の
    繰り返し値を前記カウント・レジスタ内の値に加算する
    ステップを含む請求項5記載の方法。
  7. 【請求項7】前記命令ループが実行されるべき実際の繰
    り返し回数を判断するステップは、前記実際の繰り返し
    回数を供給する命令を実行するステップを含む請求項1
    記載の方法。
  8. 【請求項8】更に、前記差が0より小さいとする判断に
    応答して、前記誤予測の命令ループの繰り返し内で未だ
    実行していない命令を取り消すステップを含む請求項1
    記載の方法。
  9. 【請求項9】更に、前記誤予測による命令ループの繰り
    返しのデータ結果を無視するステップを含む請求項8記
    載の方法。
  10. 【請求項10】複数の命令を実行する1以上の実行ユニ
    ットであって、実行すべき前記命令ループの実際の繰り
    返し回数が未知である間に、命令ループの実行を開始す
    る前記実行ユニットと、 前記実行された前記命令ループの繰り返し回数をカウン
    トする手段と、 前記実際の繰り返し回数の判断に応答して、前記実際の
    繰り返し回数と前記実行された繰り返し回数との間の差
    を判断する手段とを含み、前記実行ユニットは前記差が
    0又は0より大であるとの判断に応答して前記差に等し
    い付加的な繰り返し回数につき前記命令ループを実行す
    るプロセッサ。
  11. 【請求項11】前記実行された繰り返し回数をカウント
    する手段は、カウント・レジスタを含む請求項10記載
    のプロセッサ。
  12. 【請求項12】更に、前記命令ループが実行される繰り
    返しの回数を予測する手段を含み、前記予測する手段は
    前記カウント・レジスタに前記予測を記憶する請求項1
    1記載のプロセッサ。
  13. 【請求項13】更に、前記実行された命令ループの各繰
    り返しについて前記カウント・レジスタを1つ減算させ
    る手段を含む請求項11記載の方法。
  14. 【請求項14】前記差を判断する手段は前記実際の繰り
    返し回数を前記カウント・レジスタ内の値に加算する手
    段を含む請求項13記載のプロセッサ。
  15. 【請求項15】前記実際の繰り返し回数についての判断
    は、前記1以上の実行ユニットによる命令の実行に応答
    して行われる請求項10記載のプロセッサ。
  16. 【請求項16】更に、 複数の命令を実行するためにフェッチするフェッチヤー
    と、 実行の前にフェッチした複数の命令を一時的に記憶する
    キューであって、前記差が0より小さいとの判断に応答
    して前記キューから前記誤予測による命令ループの繰り
    返し内の複数の命令を取り消す前記キューとを含む請求
    項10記載のプロセッサ。
  17. 【請求項17】更に、 複数の命令のデータ結果を一時的に記憶する1以上のレ
    ジスタであって、前記1以上のレジスタから誤予測によ
    る命令ループの繰り返し内の複数の命令のデータ結果を
    無視する前記レジスタ含む請求項16記載のプロセッ
    サ。
  18. 【請求項18】複数の命令を記憶するメモリと、 前記メモリから命令ループ内の複数の命令を実行のため
    にフェッチするフェッチヤーと、 複数の命令を実行する1以上の実行ユニットであって、
    実行すべき前記命令ループの実際の繰り返し回数が未知
    である間に、命令ループの実行を開始する前記実行ユニ
    ットと、 実行された前記命令ループの繰り返し回数をカウントす
    る手段と、 前記実際の繰り返し回数の判断に応答して、前記実際の
    繰り返し回数と前記実行された繰り返し回数との間の差
    を判断する手段とを含み、前記実行ユニットが前記差が
    0又はそれより多いことを判断したことに応答して、前
    記差に等しい付加的な繰り返し回数につき前記命令ルー
    プを実行するデータ処理システム。
  19. 【請求項19】前記実行された繰り返し回数をカウント
    する手段は、カウント・レジスタを含む請求項18記載
    のデータ処理システム。
  20. 【請求項20】更に、前記命令ループが実行される繰り
    返し回数を予測する手段を含み、前記予測する手段は前
    記カウント・レジスタ内に前記予測を記憶する請求項1
    8記載のデータ処理システム。
  21. 【請求項21】更に、前記カウント・レジスタを、実行
    された前記命令ループの各繰り返しについて1つ減算さ
    せる手段を含む請求項19記載のデータ処理システム。
  22. 【請求項22】前記差を判断する手段は、前記実際の繰
    り返し回数を前記カウント・レジスタ内の値に加算する
    手段を含む請求項21記載のデータ処理システム。
  23. 【請求項23】前記実際の繰り返し回数の判断は、前記
    1以上の実行ユニットによる命令の実行に応答して、行
    われる請求項18記載のデータ処理システム。
  24. 【請求項24】更に、 実行の前にフェッチした複数の命令を一時的に記憶する
    キューであって、前記キューから誤予測による前記命令
    ループの繰り返し内の複数の命令を取り消す前記キュー
    を含む請求項18記載のデータ処理システム。
  25. 【請求項25】更に、 複数の命令のデータ結果を一時的に記憶する1以上のレ
    ジスタであって、前記1以上のレジスタから、誤予測に
    よる前記命令ループの繰り返しにおける複数の命令のデ
    ータ結果を無視する請求項24記載のデータ処理システ
    ム。
JP09181943A 1996-07-22 1997-07-08 命令ループを投機的に実行するプロセッサ及び方法 Expired - Fee Related JP3093684B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/685060 1996-07-22
US08/685,060 US5740419A (en) 1996-07-22 1996-07-22 Processor and method for speculatively executing an instruction loop

Publications (2)

Publication Number Publication Date
JPH1069385A true JPH1069385A (ja) 1998-03-10
JP3093684B2 JP3093684B2 (ja) 2000-10-03

Family

ID=24750624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09181943A Expired - Fee Related JP3093684B2 (ja) 1996-07-22 1997-07-08 命令ループを投機的に実行するプロセッサ及び方法

Country Status (5)

Country Link
US (1) US5740419A (ja)
EP (1) EP0821305A3 (ja)
JP (1) JP3093684B2 (ja)
KR (1) KR100244842B1 (ja)
TW (1) TW386214B (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US5838988A (en) * 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US6085305A (en) 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US6032252A (en) * 1997-10-28 2000-02-29 Advanced Micro Devices, Inc. Apparatus and method for efficient loop control in a superscalar microprocessor
US6748518B1 (en) 2000-06-06 2004-06-08 International Business Machines Corporation Multi-level multiprocessor speculation mechanism
US6691220B1 (en) * 2000-06-06 2004-02-10 International Business Machines Corporation Multiprocessor speculation mechanism via a barrier speculation flag
US6728873B1 (en) 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US6725340B1 (en) 2000-06-06 2004-04-20 International Business Machines Corporation Mechanism for folding storage barrier operations in a multiprocessor system
US6963967B1 (en) 2000-06-06 2005-11-08 International Business Machines Corporation System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
US6675372B1 (en) * 2000-10-31 2004-01-06 Sun Microsystems, Inc. Counting speculative and non-speculative events
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US6552625B2 (en) 2001-06-01 2003-04-22 Microchip Technology Inc. Processor with pulse width modulation generator with fault input prioritization
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US6601160B2 (en) 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6604169B2 (en) 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US20040021483A1 (en) * 2001-09-28 2004-02-05 Brian Boles Functional pathway configuration at a system/IC interface
US6552567B1 (en) 2001-09-28 2003-04-22 Microchip Technology Incorporated Functional pathway configuration at a system/IC interface
US7181737B2 (en) 2002-03-18 2007-02-20 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using static procedure return addresses
US7010783B2 (en) 2002-03-18 2006-03-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation
US6996802B2 (en) 2002-03-18 2006-02-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using initialization order and calling order constraints
US6912633B2 (en) 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
US20040123075A1 (en) * 2002-12-19 2004-06-24 Yoav Almog Extended loop prediction techniques
US7281237B2 (en) 2003-01-16 2007-10-09 Sun Microsystems, Inc. Run-time verification of annotated software code
US7010676B2 (en) * 2003-05-12 2006-03-07 International Business Machines Corporation Last iteration loop branch prediction upon counter threshold and resolution upon counter one
US7424620B2 (en) 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US8220058B2 (en) 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7415618B2 (en) 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US7353499B2 (en) 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
KR100867269B1 (ko) * 2007-02-22 2008-11-06 삼성전자주식회사 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서
US9459871B2 (en) * 2012-12-31 2016-10-04 Intel Corporation System of improved loop detection and execution
US10990404B2 (en) * 2018-08-10 2021-04-27 Arm Limited Apparatus and method for performing branch prediction using loop minimum iteration prediction
US11693666B2 (en) * 2021-10-20 2023-07-04 Arm Limited Responding to branch misprediction for predicated-loop-terminating branch instruction
US11972264B2 (en) * 2022-06-13 2024-04-30 Arm Limited Micro-operation supply rate variation
US20230418611A1 (en) * 2022-06-23 2023-12-28 Arm Limited Prediction of number of iterations of a fetching process
US11803390B1 (en) * 2022-07-01 2023-10-31 Arm Limited Prediction class determination

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825360A (en) * 1986-07-30 1989-04-25 Symbolics, Inc. System and method for parallel processing with mostly functional languages
US5101484A (en) * 1989-02-14 1992-03-31 Intel Corporation Method and apparatus for implementing an iterative program loop by comparing the loop decrement with the loop value
US5056604A (en) * 1990-05-02 1991-10-15 Xerox Corporation Sheet feeder devices
JPH04102926A (ja) * 1990-08-22 1992-04-03 Nec Corp 繰り返しループの展開最適化方式
US5303355A (en) * 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
DE69425311T2 (de) * 1993-10-18 2001-03-15 National Semiconductor Corp.(N.D.Ges.D.Staates Delaware), Santa Clara Mikroprozessor mit spekulativer Befehlsausführung
US5404473A (en) * 1994-03-01 1995-04-04 Intel Corporation Apparatus and method for handling string operations in a pipelined processor
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches

Also Published As

Publication number Publication date
US5740419A (en) 1998-04-14
JP3093684B2 (ja) 2000-10-03
EP0821305A2 (en) 1998-01-28
TW386214B (en) 2000-04-01
KR100244842B1 (ko) 2000-02-15
KR980010787A (ko) 1998-04-30
EP0821305A3 (en) 1999-05-19

Similar Documents

Publication Publication Date Title
JP3093684B2 (ja) 命令ループを投機的に実行するプロセッサ及び方法
KR100270003B1 (ko) 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
JP5917616B2 (ja) 事前通知技術を用いる、プログラムのシーケンシャルフローを変更するための方法および装置
KR100237985B1 (ko) 추론적 로드 명령을 실행하는 프로세서, 그 방법 및 데이터 처리 시스템
US5404473A (en) Apparatus and method for handling string operations in a pipelined processor
US7594096B2 (en) Load lookahead prefetch for microprocessors
EP0605872B1 (en) Method and system for supporting speculative execution of instructions
US6279105B1 (en) Pipelined two-cycle branch target address cache
US5901307A (en) Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US6338133B1 (en) Measured, allocation of speculative branch instructions to processor execution units
US5784603A (en) Fast handling of branch delay slots on mispredicted branches
US5875325A (en) Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US20090106538A1 (en) System and Method for Implementing a Hardware-Supported Thread Assist Under Load Lookahead Mechanism for a Microprocessor
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つを選択する、プロセッサおよび命令取出方法
US5764940A (en) Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch
US6490653B1 (en) Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system
US8285765B2 (en) System and method for implementing simplified arithmetic logic unit processing of value-based control dependence sequences
JPH07121371A (ja) 複数命令同時取込み機構
Changwatchai et al. Optimizing instruction execution in the powerpc 603e superscalar microprocessor

Legal Events

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