JPH10177482A - マイクロプロセッサおよび動作方法 - Google Patents

マイクロプロセッサおよび動作方法

Info

Publication number
JPH10177482A
JPH10177482A JP9301180A JP30118097A JPH10177482A JP H10177482 A JPH10177482 A JP H10177482A JP 9301180 A JP9301180 A JP 9301180A JP 30118097 A JP30118097 A JP 30118097A JP H10177482 A JPH10177482 A JP H10177482A
Authority
JP
Japan
Prior art keywords
instruction
loop
instructions
execution unit
backward branch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9301180A
Other languages
English (en)
Inventor
Timothy D Anderson
ディー.アンダーソン ティモシー
Jonathan H Shiell
エィチ.シェル ジョナサン
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JPH10177482A publication Critical patent/JPH10177482A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 マルチプレクサの作動方法を得る。 【解決手段】 マイクロプロセッサ36の作動方法は、
分岐命令SSBおよび目的命令TRからなる命令の短い
後向き分岐ループ34をフェッチし14、短い後向き分
岐命令がフェッチした後の短い後向き分岐命令であるこ
とを確認する。さらに、演算実行ユニット命令の短い後
向き分岐ループを格納する30。さらに、格納ステップ
の後で短い後向き分岐ループを再フェッチすることな
く、演算実行ユニット命令の短い後向き分岐ループの複
数の反復が複数のクロックサイクルにわたって実行され
る22。さらに、複数のクロックサイクルのいくつか
(クロックサイクル10)に対して、実行ステップが第
1の反復に対応する演算実行ユニット命令の第1セット
と第2の反復に対応する演算実行ユニット命令の第2セ
ットの両方を実行し、第2の反復は第1の反復にすぐ続
く。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明の実施例はマイクロプ
ロセッサに関し、特に、単一の実行サイクルで短い後向
き分岐ループの連続反復を発行するマイクロプロセッサ
回路、システム、および方法に関する。
【0002】下記の実施例は開発され絶えず拡張される
コンピュータシステムおよびマイクロプロセッサの分野
を包含している。所与の期間にわたって実行される命令
数で測定した場合の性能を改善する著しい進展が近年マ
イクロプロセッサの設計においてなされつつある。その
一つは、単一の命令ポインタにより並列命令完了を達成
することができる“スーパースカラー”型のマイクロプ
ロセッサに関連している。典型的に、スーパースカラー
マイクロプロセッサは、多数の整数算術論理演算器(A
LU)、多数のロード/ストアユニット(LSU)、お
よび浮動小数点ユニット(FPU)等の多数の演算実行
ユニット(execution unit)を有し、そ
の各々が命令を実行することができる。そのため、多数
のマシン命令をスーパースカラーマイクロプロセッサに
おいて同時に実行することができ、デバイスの全体性能
とそのシステム応用に明らかな利点が得られる。
【0003】性能向上のために最新のマイクロプロセッ
サで使用されるもう一つの共通技術は命令の“パイプラ
イニング”である。従来技術で周知のように、マイクロ
プロセッサ命令はその各々が一般的に、命令フェッチ、
命令デコード、レジスタやメモリからのオペランドの読
出し、命令の実行、および命令の結果のライトバックを
含んでいる。マイクロプロセッサにおける命令のパイプ
ライニングは命令のこのシーケンス化のステージングと
呼ばれ、シーケンス内の多数の命令が内部シーケンスの
さまざまなステージで同時に処理されるようにされる。
例えば、パイプライン化されたマイクロプロセッサが所
与のマイクロプロセッサクロックサイクルにおいて命令
nを実行している場合、4ステージパイプラインマイク
ロプロセッサは命令n+1(すなわち、シーケンス内の
次の命令)のオペランドを同時に(すなわち、同じマシ
ンサイクル内に)検索し、命令n+2を復号し、命令n
+3をフェッチすることができる。パイプライニングを
使用すれば、マイクロプロセッサの性能により一連のマ
ルチサイクル命令をクロックサイクル当たり1命令のレ
ートで有効に実行することができる。
【0004】パイプライニングとスーパースカラー技術
の両方を使用すれば、命令が周知のシーケンスで進行す
る場合、最新のマイクロプロセッサによりマシンクロッ
クサイクル当たり2命令以上のレートでマルチサイクル
マシン命令を実行することができる。しかしながら、従
来技術で周知のように、多くのコンピュータプログラム
は命令の逐次順序で連続的に進行することはなく、現在
の命令シーケンスにおける次の連続命令以外のプログラ
ム命令への分岐(条件付および無条件の両方)を含んで
いる。このようなオペレーションは、命令フェッチング
および実行等の多くの理由で、しばしば分岐命令のタイ
プおよび目的命令の位置に応じて、コンピュータに挑戦
する。事実、分岐の複雑さが長年コンピュータシステム
に発生してきている。例えば、非スーパースカラー技術
およびキャッシュが使用される前に、IBM360モデ
ル91は分岐ループの状況においてキャッシュのような
オペレーションを達成するループバッファを含んでい
た。特に、フェッチされた命令を受信するシステム内に
命令バッファが含まれていた。バッファ内の命令が分岐
ループを表すことが検出されると、キャッシュが効果的
に生成されそこから各命令を検索して、主記憶装置(コ
アメモリである)からループ命令を再フェッチすること
なく、命令の所望の反復が全て完了するまで個々に実行
することができる。したがって、これらの命令をフェッ
チするための余分な時間が解消される。
【0005】スーパスカラーマイクロプロセッサの分岐
に関しては、本実施例はこの文書において短い後向き分
岐命令と呼ばれるものに向けられている。後向き分岐命
令は、分岐を行う時に、分岐命令を越える目的命令へフ
ローを向ける命令である。短い後向き分岐命令はこのよ
うに動作するが、目的命令への後向き分岐は比較的少数
の命令に跨がるにすぎない。この点において特定数の命
令を規定する必要はないが、例として5程度の数を仮定
する。したがって、分岐命令の前に5以下の命令である
目的へ分岐する(行われる場合)分岐命令は短い後向き
分岐と呼ばれる。
【0006】前記したような短い後向き分岐命令を導入
した場合、短い後向き命令とその目的命令を含むその間
の命令である、短い後向き分岐命令により定義されるル
ープからの実行可能な命令を処理する時に著しい欠点が
生じることがあることを発明者は確認した。特に、現在
の技術の元では、短い後向き分岐命令ループが処理され
ると、そのループ内で実行可能な命令数以下の実行可能
な命令しか1クロックサイクルで実行されない。すなわ
ち、演算実行ユニット数が短い後向き分岐命令ループか
ら引き出される実行可能な命令数よりも多い場合には、
短い後向き分岐命令が実行されるサイクル中に、ある演
算実行ユニットは実行されない。数値的な例として、実
行ステージが8つの演算実行ユニットを含み、短い後向
き分岐ループから引き出される5つの実行可能な命令が
あるものとする。このように仮定すると、従来技術で
は、少なくとも3つの演算実行ユニットが短い後向き分
岐ループの実行中は実行されない。その結果、相当な演
算実行ユニットが使用されなくなる。さらに、短い後向
き分岐命令ループを処理している時には、命令パイプラ
インの他の位置のリソースも使用されないことがある。
さらに、演算実行ユニットや他の非使用リソースが増加
したり、短い後向き分岐ループからの実行可能な命令数
が増加すると、非効率性がさらに大きくなる。
【0007】
【発明が解決しようとする課題】前記したことから、従
来技術の欠点に取り組んで、1実行サイクルで2つ以上
の短い後向き分岐ループを実行したりすることによりそ
のリソースをより効率的に使用するように作動するマイ
クロプロセッサを提供するニーズが生じている。
【0008】
【課題を解決するための手段】好ましい方法の実施例で
は、本方法によりマイクロプロセッサが作動される。本
方法において、命令の短い後向き分岐ループがフェッチ
され、短い後向き分岐ループは分岐命令および目的命令
を含んでいる。また、本方法により、短い後向き分岐命
令はフェッチした後の短い後向き分岐命令であることが
確認される。さらに、本方法により演算実行ユニット命
令の短い後向き分岐ループが格納される。この短い後向
き分岐ループは分岐演算実行ユニット命令および目的演
算実行ユニット命令を含んでいる。さらに、格納ステッ
プの後で短い後向き分岐ループを再フェッチすることな
く、本方法により演算実行ユニット命令の短い後向き分
岐ループの複数の反復が複数のクロックサイクルにわた
って実行される。特に、複数のクロックサイクルのいく
つかに対して、実行ステップは第1の反復に対応する第
1セットの演算実行ユニット命令および第2の反復に対
応する第2セットの演算実行ユニット命令の両方を実行
し、第2の反復は第1の反復にすぐ続く。他の回路、シ
ステム、および方法も開示され請求される。
【0009】
【発明の実施の形態】図1に命令処理システムを一般的
に10に示し、本実施例を内蔵することができるタイプ
のシステムへ導入するために使用される。システム10
は一般的な感覚として多くの従来技術マイクロプロセッ
サに存在するものと同じであり、実施例の全体動作を説
明する背景を例示するために図示されており、発明の局
面の詳細な検討は後で行う。また、図1のマイクロプロ
セッサ構造および他の周知のマイクロプロセッサは、他
にも図示せぬさまざまな局面を含むことをお判り願いた
い。しかしながら、ここでは、他の周知のマイクロプロ
セッサの詳細については検討を簡潔にするために説明し
ない。次に、システム10に戻って、それはパイプライ
ン12を含み、それは“CISC”(complex
instruction set computer)
において命令を受信して処理する現在の技術において広
く存在するタイプにある局面において類似している。こ
の点において、CISCパイプラインを使用するのは例
にすぎず、当業者ならばこの文書に記載されたさまざま
な発明原理を“RISC”(reduced inst
ruction set computer)にも応用
できるものと思われる。次に、図1の例に戻って、パイ
プライン12は、一例として、14−24の偶数番の6
ステージを有して図示されている。各ステージ14−2
4は従来技術で周知のステージを表し、さまざまなアー
キテクチュアにおいて名称および/もしくは機能が異な
ることがある。従来技術で周知のように、一般的に、マ
イクロプロセッサパイプラインは開始ステージ、終了ス
テージ、および一群の中間ステージを含み、命令は開始
ステージから終了ステージへ向かって通され、各ステー
ジにある命令に応答して1つ以上のオペレーションが生
じる。しかしながら、図4−図9に関して後述するよう
に、少なくとも短い後向き分岐命令が処理される限りパ
イプライン12は従来技術から著しく異なるように修正
することができる。短い後向き分岐命令に関連してシス
テム10の修正動作の詳細説明を行う前に、発明の範囲
をさらに理解するのにいくつかの一般化が役立つ。した
がって、以下の検討は例にすぎず後述する実施例を制約
するものではない。
【0010】パイプライン12に戻って、本発明では命
令フェッチステージ14であるパイプライン開始ステー
ジにおいて、一般的に命令が検索されることをお判り願
いたい。ステージ14による命令フェッチングはキャッ
シュ等のさまざまなリソースからメモリのさまざまなレ
ベルで生じることがあり、論理アドレスと物理アドレス
間の変換等のアドレス操作を含むこともできる。したが
って、命令フェッチステージ14は、さらに命令キャッ
シュおよびアドレス計算回路26に接続されている。さ
らに、命令フェッチステージ14は、従来技術で周知の
ように分岐命令が遂行されているかどうかを予測する、
従来技術で周知の、分岐目的バッファ(“BTB”)2
8を含んでいる。さらに、BTB28は短い後向き分岐
命令に関して後述するように修正することができる。ま
た、BTB28は単なる例としてステージ14内に図示
されており、命令フェッチプロセスに対するその機能的
関係により、図1に示すような構造ではなく独立した物
理構造とすることができることをお判り願いたい。
【0011】典型的には、命令は命令フェッチステージ
14で受信された後で、1つ以上のデコードステージに
おいてデコードされる。したがって、パイプラインは任
意数のデコードステージを含むことができるが、例とし
て1つのデコードステージ16しか含まないように簡単
化されている。さらに、従来技術のさまざまな教示がさ
まざまな方法でこれらのステージに関係しており、例え
ば、これらのステージはデコードステージが後に続くい
わゆる予デコードステージへ分解される場合が多い。い
ずれの場合にも、1つ以上のデコードステージにより、
より複雑な命令セットアーキテクチュア命令が、後述す
る理由により本明細書では演算実行ユニット命令と呼ぶ
1つ以上のより単純なオペレーションへ分解される。こ
れらの演算実行ユニット命令は、典型的には、1実行ク
ロック内で実行することができる。また、演算実行ユニ
ット命令はアーキテクチュアおよび/もしくはメーカに
よって名称が異なることもあることをお判り願いたい。
例えば、テキサスインスツルメンツ社の標準では、演算
実行ユニット命令はアトミックオペレーション(“AO
ps”)と呼ばれる。これらのAOpsは全体が完了す
ると、適用できる場合のopcodeおよびオペランド
を含む、命令セット命令の完了および階級(gradu
ation)を表す。AOpsはあるRISC命令にほ
ぼ匹敵し、したがって、マイクロプロセッサのさまざま
な部分に接続されて後にデコードされた命令の実行を開
始するコードである。したがって、AOpsは他のアー
キテクチュアではROps,μOps,もしくはRIS
C86命令と呼ばれるものに匹敵する。さらに、あるR
ISCアーキテクチュアでは命令セット命令および演算
実行ユニット命令は同じ命令であることをお判り願いた
い(CISCシステムに対しては、命令セット命令はデ
コードされて命令セット命令自体とは異なる1つ以上の
演算実行ユニット命令が形成される)。したがって、演
算実行ユニット命令を使用してこのアーキテクチュアも
カバーしようとするものである。いずれにしても、演算
実行ユニット命令が形成されると(あるRISCシステ
ムの場合には、命令セット命令として単に提示される
と)、それらは図1の目的のためにデコードステージ1
6内にキュー30として図示されている記憶構造に格納
される。したがって、後述するように、キュー30は演
算実行ユニット命令を格納して次の後続パイプラインス
テージへ通す。
【0012】キュー30は演算実行ユニット命令をスケ
ジュールステージ18へ与え、それはマイクロプロセッ
サの対応する適切な演算実行ユニットへこれらの命令を
スケジュールする。スケジュールステージは各演算実行
ユニット命令をその適切な演算実行ユニットへ発行する
ものと決められている場合もある。例えば、パイプライ
ン12は実行ステージ22を含み、それは8つの演算実
行ユニット(EX1−EX8)を含んでいる。このよう
な演算実行ユニットは演算装置、ロード/ストアユニッ
ト、もしくは小数点ユニット等のさまざまなタイプとす
ることができる。いずれの場合にも、8つの演算実行ユ
ニットを含むパイプライン12に対して、対応する各演
算実行ユニットにより1クロックサイクル内に一般的に
8つまでの演算実行ユニット命令の実行をステージ18
によりスケジュールすることができる。さらに、マイク
ロプロセッサは9つ以上の演算実行ユニットを含むこと
ができ、したがって、1クロックサイクル内に実行でき
る演算実行ユニット命令数をそれに応じて増加すること
ができる。
【0013】演算実行ユニット命令が発行された後で、
オペランド読み出しステージ20は現在スケジュールさ
れている1つ以上の任意の演算実行ユニット命令を実行
するのに必要な任意のオペランドを読み出すことができ
る。典型的には、レジスタから読み出されるオペランド
がこれに含まれている。次に、ステージ22において、
前記したように、演算実行ユニット命令が実行される、
すなわち、各演算実行ユニットEX1−EX8がそのス
ケジュールされた演算実行ユニット命令に対して対応す
る機能を実行する。1つ以上の演算実行ユニットEX1
−EX8が特定の分岐処理回路を含み、本明細書に記載
されているかあるいは従来技術で周知のように、分岐を
検出しそれに応答して他の分岐関連機能を実行すること
をお判り願いたい。事実、この点について、実行ステー
ジ22は分岐命令を処理する時に3つの分岐関連制御信
号をBTB30へ与えることをお判り願いたい。後述す
るように、特に、分岐命令を実行すると、実行ステージ
22は分岐命令に対応する実際の(予想されたものでは
なく)目的アドレスを決定し、このアドレスはBTB3
0へ送られ図1にACTUAL TARGET ADD
RESS信号として図示されている。さらに、実行ステ
ージ22は所与の分岐命令に対するACTUAL TA
RGET ADDRESSが同じ分岐命令に対して予想
された目的アドレスと一致するかどうかを確認する。こ
の確認結果はMISPREDICTED信号を介してB
TB30へ通される。MISPREDICTED信号は
少なくとも2ビットを含み、一方のビットは予測が正確
であるかどうかを示し、他方のビットは現在のMISP
REDICTED信号が有効であるかどうかを示す。演
算実行ユニット以外のエリアさらには実行ステージより
も前のエリアからこれらの制御信号のいずれかもしくは
両方を実際に与えることができるアーキテクチュアもあ
る。例えば、あるアーキテクチュアは、命令のデコーデ
ィング中にその命令は分岐命令ではなく、しかもそれは
分岐されると予測されることを確認することができる。
当然、定義による非分岐命令は分岐を“取らない”た
め、非分岐命令の遂行された予測は不正確である。した
がって、この場合には分岐命令が実行ステージに達する
前であっても誤予測となる。当業者ならば、他の例も確
かめることができるであろう。最後に、ACTUAL
TARGET ADDRESSおよびMISPREDI
CTED信号の他に、実行ステージ22は実行される分
岐命令のアドレス(図1にBRANCH ADDRES
Sとして示す)をBTB28へ与える。従来技術で周知
のように、実行ステージ22はさらに他の信号をBTB
28へ与えることができる。
【0014】パイプライン12が完成すると、ステージ
24は命令を段階に分け、それは命令が完了してマイク
ロプロセッサのアーキテクトされた状態に、もしあれ
ば、効果を表すことを意味する。さらに、命令の結果
は、もしあれば、レジスタファイル等の記憶装置に書き
込むことができる。この最後のオペレーションは通常ラ
イトバックと呼ばれ、しばしば最終パイプラインステー
ジの一部ではなく、命令の段階分けと同時に生じる機能
と考えられる。
【0015】従来の技術で前記した短い後向き分岐命令
を詳細に説明する目的で、命令のストリームを図2に一
般的に32で示す。命令ストリーム32は8つの命令を
含み、それは図面の頂部から底部にわたって逐次的性質
である(すなわち、図面頂部の命令は図面底部の命令よ
りも早期の命令シーケンスである)。検討を簡単にする
ために、各命令は大文字や略字で示されている。最も早
期の命令Xで開始して、命令Yがシーケンスに続く。そ
の次は短い後向き分岐命令に対する分岐命令であり、こ
の目的命令は図2において命令TRとして略示されてい
る。TR命令には3つの命令A,B,Cが続き、それに
はSBBの略字で示す短い後向き分岐命令が続く。最後
に、SBB命令には付加命令が続き、図2には命令Mと
して任意に示されている。
【0016】命令ストリーム32の処理を、最初に短い
後向き分岐オペレーションの処理を一般的に例示するた
めに説明し、従来技術および図3および図5に関連して
後述する実施例と、それぞれ、対比させて説明する。次
に、一般動作に戻って、SBB命令が生じて分岐が遂行
されるものと仮定すると、プログラムフローは命令A,
B,CだけでなくTR命令を処理するように戻る。した
がって、ループが明確に定められ図2に一般的に34で
示される。したがって、ループ34はSBB命令に再度
到達して完結する。しかしながら、SBB分岐が再度遂
行されるものとすると、おびたたしい反復に対してルー
プ34がこのように処理できるようにプロセスが繰り返
される。典型的には、ある点において、短い後向き分岐
はもはや遂行されずSBBに続く次の後続命令(すなわ
ち、命令M)が処理される。したがって、命令ストリー
ム32は5つの命令からなる分岐ループ34を含む。こ
のようなループ34は、したがって、分岐命令、目的命
令、および分岐および目的命令間の少数の命令を含む。
この明細書の目的のために、この少数の命令は検討を容
易にするために中間命令と呼ばれる。さらに、図2のル
ープ34は例として5つの命令を含んでいるが、図3−
図9に例示する他のさまざまな局面を理解した後で、実
施例を使用して他の例を明示する目的で短い後向き分岐
ループの長さがさらに明確に定められる。
【0017】図1に示すシステム10のようなマイクロ
プロセッサ構造により従来技術の方法で処理される場合
の図2の命令ストリーム32のタイミング図を図3に示
す。一般的に、図3を左から右へ横切する水平軸は連続
するマイクロプロセッサクロックサイクルを表し、図3
を頂部から底部へ横切する垂直軸はマイクロプロセッサ
パイプライン12を通る命令ストリームの通路を表す。
したがって、クロックサイクル1中に、命令ストリーム
32は命令フェッチステージ14により命令キャッシュ
回路26からフェッチされる。フェッチに応答して、S
BB命令は分岐命令として識別されBTB28は分岐予
測を確認するように相談される。本実施例に対して、こ
れは特定のSBB命令がフェッチされる最初の例であ
り、したがって、さらに分岐は予測されないか(すなわ
ち、その点にはBTB28内の対応する表示がない)あ
るいは最初のフェッチに対してしばしばそうであるよう
に遂行されないと予測されたものと仮定する。最後に、
図3において命令ストリーム32はシーケンスの頂部で
最も早期の命令(すなわち、命令X)を示し、シーケン
スの底部で最も最近の命令(すなわち、命令M)を示す
ように方向付けされていることをお判り願いたい。
【0018】クロックサイクル2中に、図3は命令スト
リーム32がキュー30と同じ方位を通ることを示して
いる。したがって、図2から、命令ストリーム32の各
命令がデコードされキュー30へ通されることが判る。
この表現から本検討を簡単にするための2つの仮定がな
される。第1に、ストリーム32からの各命令をデコー
ドするのに1つのクロックサイクルしか使われないもの
と仮定する。しかしながら、多数のクロックサイクル
(および多数のデコードステージ)が実際上各命令をデ
コードすることができる。第2に、命令ストリーム32
の各命令に対して1つの対応する演算実行ユニット命令
がデコードオペレーションにより生じるものと仮定す
る。しかしながら、2つ以上の演算実行ユニット命令へ
デコードできる命令もある。それでも、本説明を簡単に
するために、かつしばしばそうであるように、図2にお
いてキューステージおよびそれを越える演算実行ユニッ
ト命令は早期のステージでフェッチされている命令に1
対1で対応し次にデコードされる。
【0019】図3のクロックサイクル2中にキュー30
内に命令ストリーム32が存在する他に、命令フェッチ
ステージ14はその同じクロックサイクル2中に、命令
ストリーム32に続く次のラインの命令もフェッチす
る。この点を例示するために、これらの命令を連続する
大文字を使用して示す。命令ストリーム32の最後の命
令は命令Mであるため、クロックサイクル2中のフェッ
チステージに示すように、命令Mに続く次の8つのフェ
ッチされた命令は命令N−Uである。
【0020】クロックサイクル3中に、命令ストリーム
32に対応する演算実行ユニット命令はスケジュールス
テージ18により処理され実行のためにスケジュールさ
れる。最適化されたスケジューリングを仮定すると、8
つの演算実行ユニット命令の各々が図1に示す実行ステ
ージ22の8つの演算実行ユニットの1つへスケジュー
ルされる。また、クロックサイクル3中に、命令ストリ
ーム32に続く命令ストリーム(すなわち、命令N−
U)もデコードされキュー30に配置される。さらに、
命令N−Uに続くさらにもう1つの命令が命令フェッチ
ステージ14によりフェッチされるが、図3を簡単化す
るために、命令ストリーム32と次に続くストリーム
(すなわち、命令N−U)の処理だけを図示して実例お
よび検討を簡単化する。
【0021】クロックサイクル4中に、命令ストリーム
32に対応する各演算実行ユニット命令がオペランドリ
ードステージ20へ通される。したがって、これらの演
算実行ユニット命令の任意の1つ以上を実行するのにオ
ペランドが必要とされる程度まで、このようなオペラン
ドはこの時点で読み出される(例えば、レジスタか
ら)。ここでも、クロックサイクル4中に、命令ストリ
ーム32に続く命令ストリーム(すなわち、命令N−
U)はスケジュールステージ18によりスケジュールさ
れ、やはり最適状態で各演算実行ユニット命令が実行ス
テージ22の8つの演算実行ユニットの1つへ割り当て
られるようにされる。
【0022】最後に、クロックサイクル5中に、命令ス
トリーム32からの命令に対応する各演算実行ユニット
命令が実行される。しかしながら、ここで、短い後向き
分岐命令、SBB、はその演算実行ユニットにより遂行
されると決定されるものと仮定する。しかしながら、S
BB命令は遂行されないと予測されている(もしくは、
BTB28へのエントリを欠くため予測されてない)た
め、誤予測(もしくは、BTBエントリが存在していな
いケースに相当するもの)が生じている。したがって、
しばらく図1に戻って、MISPREDICTED信号
が表明され、パイプライン12がフラッシュされる。さ
らに、分岐が誤予測されていると、BTB28が更新さ
れてSBBに対応するその命令が遂行されていないから
遂行されたへ変化する。同様に、分岐の対応する表示が
まだBTB28内になければ、この時点で1つが確立さ
れ予測は遂行されたへ設定される。いずれの場合にも、
分岐目的命令TRに対応するACTUAL TARGE
T ADDRESSが命令フェッチステージ14へ通信
される。したがって、SBB命令が遂行されるため、ク
ロックサイクル6に関して後述するように、命令フェッ
チステージ14は次にTR命令を含む1セットの命令を
フェッチする。
【0023】図3に示す次に続くクロックサイクルはク
ロックサイクル6である。しかしながら、前記したよう
に分岐誤予測およびパイプラインフラッシュに続いて、
パイプラインへの次に続くフェッチが生じる前にいくつ
かのクロックサイクルが経過する場合がしばしばある。
それでも、アクションの逐次性を簡単化するために、図
3にはクロックサイクル5に続く次のクロックサイクル
はクロックサイクル6として例示されており、当業者な
らば実際には幾分後のクロックサイクルまでフェッチお
よびそれに続くステップは開始されないことがお判りで
あろう。次にクロックサイクル6(すなわち、パイプラ
インが進行する準備が完了している次のサイクル)に戻
って、命令フェッチステージ14は、命令キャッシュ回
路26から、TR命令およびそれに続くいくつかの命令
をフェッチする。しかしながら、命令はキャッシュライ
ンからフェッチされるため、TR命令に先行するその同
じラインの任意の命令(例えば、命令XおよびY)は使
用されない。それでも、TR命令がキャッシュライン内
に整列され、かつその整列は命令フェッチステージ14
により保存されるため、クロックサイクル6中に命令フ
ェッチステージ14に示す最初の2つの命令位置は、そ
の位置に命令がフェッチされないことを示す2つのアス
テリスクで開始される、すなわち、その位置の情報は無
効もしくは無関係である。さらに、フェッチされた命令
ラインは分岐命令SBBも含んでいるため、同じライン
のSBB命令に続く任意他の命令(例えば、命令M)も
やはりフェッチされない、すなわち、その位置の情報は
無効もしくは無関係である(やはり、図3にアステリス
クで示す)。したがって、クロックサイクル6を要約す
ると、命令ストリーム32のループ34しかフェッチさ
れないが、そこからフェッチされるキャッシュライン内
の整列は保存される。
【0024】クロックサイクル7中に、クロックサイク
ル6からのフェッチされたループ34はデコードステー
ジ16を通ってキュー30へ進む。さらに、キュー30
に配置されると、ループ34は目的命令TRがキュー3
0の頂部に配置されるように再整列される。したがっ
て、ループ34がキュー30内に格納できる命令数より
も少ない命令を有する程度まで、残りの位置が使用され
なくなる。したがって、本例では、ループ34は5つの
命令からなりキュー30は8つの位置を有している。ル
ープ34はキュー30の頂部へ整列されるため、キュー
30の残りの3つの位置は使用されない。また、クロッ
クサイクル7中に、命令フェッチステージ14はクロッ
クサイクル6に関して前記したようにループ34の次の
反復を再びフェッチする。
【0025】前記したように、ループ34はクロックサ
イクル6からフェッチされとクロックサイクル8,9,
10中にパイプライン中を進行し、その時までに実行ス
テージ26に達する。同時に、先行するステージはルー
プ34の連続する反復を処理し、これらの反復もクロッ
クサイクル6からフェッチされる時にループ34に遅れ
てフェッチされ、デコードされキューされ、スケジュー
ル等されるようにされる。次にクロックサイクル10中
の実行ステージ22に戻って、スケジューリングに利用
できるのはループ34だけであり、したがって、実行ス
テージ22はループの最初の反復、すなわち、(ステー
ジ20からオペランドが読み出された後で)スケジュー
ルステージ18から割り当てられる5つの演算実行ユニ
ット命令、しか実行しない。すなわち、各クロックサイ
クルに対して、ループの1反復に対する演算実行ユニッ
ト命令しか実行されない。したがって、キュー30内の
位置の非使用と同様に演算実行ユニットのいくつかが使
用されない。すなわち、本例では、ループは5つの演算
実行ユニット命令しか含んでいないため、短い後向き分
岐の一つのループを実行するのに5つの演算実行ユニッ
トで済む。その結果、実行ステージ22の残りの3つの
演算実行ユニットはクロックサイクル10中にアイドル
のままとされる。さらに、クロックサイクル10の後
で、ループ34の連続する各反復実行に対して、ループ
の反復がもう1回実行され、したがって、5つの演算実
行ユニットしか実行されない。このプロセスは分岐が行
われなくなるまで続けられる。この点で、図示されては
いないが、分岐が誤予測されMISPREDICTED
信号に応答してパイプラインが再びフラッシュされる。
次に、短い後向き分岐を含むラインがもう1回フェッチ
されが、今度はTR命令に続く任意の命令を含み、これ
らの後続する命令は次に従来技術で周知のようにパイプ
ラインを介して処理して実行できるようにされる。
【0026】前記説明は、例示したような短い後向き分
岐命令に対して演算実行ユニットを使用しないだけでな
く、キュー30内の位置さえ使用しない非効率性等の、
従来技術のさまざまな非効率性を発明者が認識している
ことを示すものである。事実、キュー位置および演算実
行ユニットのこの非使用はループ34の連続する各反復
について生じる。したがって、ループの実行回数が増す
と非効率性も増す。さらに、前例は5つの命令の後向き
分岐ループを示し、キューは8つの位置を有し実行ステ
ージは8つの演算実行ユニットを有している。したがっ
て、非使用とされるのはキュー30内の3つの位置およ
び実行ステージ22内の3つの演算実行ユニットである
が、ループ34内の命令数が少なかったり実行ステージ
30が9つ以上の演算実行ユニットを含む場合には、非
使用はさらに大きくなる。
【0027】本発明による前記局面を理解すれば、下記
の実施例によりこの従来技術の方法に勝るさまざまな利
点が得られる。これらの利点は以下の詳細な検討から良
く理解することができるが、図3の方法の利点を理解し
たこの時点で簡単に紹介する。例えば、実施例ではキュ
ー30の各位置は、たとえ短い後向き分岐ループが処理
されていても、最初の反復の後で書き込まれる。もう1
つの例として、実行ステージ22の各演算実行ユニット
は、たとえ短い後向き分岐ループが処理されていても1
クロックサイクル中に命令を実行することができ、好ま
しくは、図3のケースのように実行サイクル中に使用さ
れない演算実行ユニットは無いようにされる。この後者
の目標に関して、短い後向き分岐ループの1回の反復を
実行するのに必要なものを越える演算実行ユニットが、
好ましくは、同じクロックサイクル中に使用されてルー
プの連続する反復のもう1つの反復を同時に実行する
(一部もしくは全体)。これらの利点については後述す
る図4−図9の検討から良く理解することができる。
【0028】図4に命令処理システムを一般的に36に
示し、それは前記した非効率性を克服して後述する発明
的局面を達成するための付加特徴が与えられている点を
除けば、図1のシステム10と同じである。次に図4に
戻って、図1と同様に同じ参照番号が図4でも使用され
ている。システム36は命令フェッチステージ14の修
正も含んでいる、すなわち、SBBおよびTR命令検出
回路38が付加されBTB28と情報を通信する。ま
た、回路38は例としてステージ14内に示されている
が、パイプライン12に対して他の位置(例えば、実行
ステージ22)に配置することもできる。いずれにせ
よ、この回路の目的は図5−図9の以下の検討から理解
することができる。
【0029】図5は図4のマイクロプロセッサ36に従
って処理される場合の図2の命令ストリーム32のタイ
ミング図を示す。図5は、また、実施例を従来技術と対
比するための図3と同じタイミング条件を使用してお
り、したがって、図5を左から右へ横切する水平軸は連
続するマイクロプロセッサのクロックサイクルを表し、
図5を頂部から底部へ横切する垂直軸はマイクロプロセ
ッサパイプラインを通過する命令ストリームを表す。
【0030】図5には、一般的に、クロックサイクル1
−5について前記した図3と同じ処理動作が図示されて
いる。したがって、クロックサイクル1において、命令
ストリーム2は図3のクロックサイクル1のケースと同
様に命令キャッシュ回路26から命令フェッチステージ
14によりフェッチされる。さらに、図5のクロックサ
イクル2−5に関して、前記した図3と同じ処理動作も
図示されている。したがって、読者はこれらのクロック
サイクルの詳細については図3の前記検討を参照された
い。また、前記検討から、図5のクロックサイクル5の
結論によりSBB命令が実行されその誤予測によりパイ
プラインはMISPREDICTED信号に応答してフ
ラッシュすることも思い出して頂きたい。また、ACT
UALTARGET ADDRESSが命令フェッチス
テージ14へ送られて、その次のフェッチはTR命令を
含むラインのものとされることも思い出して頂きたい。
【0031】図5のクロックサイクル5の表現にもかか
わらず、この点において、本実施例はクロックサイクル
5中にSBB命令も短い後向き分岐として構成するよう
に決定され、したがって、その目的は短い後向き分岐命
令の目的として確認されることが従来技術とは著しく異
なっている。実施例では、この確認はさまざまな方法で
実行することができる。しかしながら、検討を簡単にす
るために、このような技術の詳細な検討は図9まで延期
する。しかしながら、ここで、確認に応答して、SBB
およびTR命令検出回路38により分岐命令を短い後向
き分岐命令として指示し、さらにTR命令をその目的と
して指示するBTB28へのエントリがなされる。後述
するように、本方法は次に連続する次のクロックサイク
ルへ進む。
【0032】図3のケースと同様に、図5に示す連続す
る次のクロックサイクルはクロックサイクル6である。
しかしながら、前記したように、分岐誤予測およびパイ
プラインフラッシュに続いて、パイプラインへの連続す
る次のフェッチインの前にいくつかのクロックサイクル
が経過することがある。それでも、アクションの逐次性
を単純化するために、図5ではクロックサイクル5に続
く次のクロックサイクルはクロックサイクル6として例
示されており、当業者ならばフェッチおよびそれに続く
ステップは実際上いくつか後のクロックサイクルまで開
始されないこともあることがお判りであろう。次に図5
のクロックサイクル6(すなわち、パイプラインが進行
できる準備が完了している次のサイクル)へ戻って、一
般的に図3のクロックサイクル6のケースのように、ル
ープ34は命令フェッチステージ14により命令キャッ
シュ回路26からフェッチされる。したがって、ループ
34はキャッシュ回路26からのその整列に従って整列
されているライン内に受け入れられる。しかしながら、
従来技術と対比される本実施例の2つの付加局面に注目
願いたい。本動作の第1の違いとして、好ましい実施例
では、SBBおよびTR命令検出回路38はフェッチさ
れたラインがそのTR命令だけでなくSBB命令も含む
ことを検出する。特に、前記したことから、BTB28
はそのTR命令だけでなくBTB28の指示も含むよう
に書き込まれていることを思い出して頂きたい。したが
って、これらの命令は命令フェッチステージ14により
フェッチされると、BTB28内のルックアップからそ
のようなものとして検出される。後述する理由により、
BTB28はそのTR命令だけでなくSBB命令にもタ
グを付すようにして、このような各命令がパイプライン
14に沿って通過する時に、SBBもしくはそのTR命
令として区別され後述する方法論に従って処理できるよ
うにされる。本動作の第2の違いとして、フェッチング
ループ34の他に、命令フェッチステージ14はキャッ
シュ回路26からの同じラインでTR命令の後の任意の
命令もフェッチする。したがって、本例では、ループ3
4がフェッチされると、ループ34に続く命令Mもフェ
ッチされる。
【0033】クロックサイクル7中に、クロックサイク
ル6からの付加命令Mだけでなくフェッチされたループ
34もデコードステージ16を通過してキュー30へ進
む。キュー30に配置されると、ループ34および命令
MはTR命令がキュー30の頂部に配置されるように再
整列される。したがって、この点において、ループ34
および同じキュッシュラインでそれに続く任意の命令の
数がキュー30に格納できる命令数よりも少なくなる程
度まで、残りの位置が非使用とされる(すなわち、本例
では2つの位置)。図3とは対照的に、さらに図5のク
ロックサイクル7に関して、また後に図6−図8に関し
て良く理解できるように、キュー30が短い後向き分岐
ループの全体を格納すると、ループはもはや従来技術の
方法では再フェッチされない。キュー30は後述する理
由でループがその中に残るような状態へ有効に固定され
る。さらに、従来技術とは反対に、クロックサイクル7
中に、命令Mに続く次の8つのフェッチされた命令がフ
ェッチされ、クロックサイクル7中に命令N−Uとして
フェッチステージに示される。
【0034】図5のクロックサイクル8中のスケジュー
ルステージ18のオペレーションにより、図3に示す従
来技術のオペレーションと対照的な本実施例のもう1つ
の特徴が明示される。特に、クロックサイクル8中に、
キュー30はスケジューリングのための8つの演算実行
ユニットの全てをスケジュールステージ18へ出力す
る。したがって、クロックサイクル8の終わりまでに、
スケジュールステージ18はループ34の最初の反復に
対する各演算実行ユニット命令をスケジュールできるだ
けでなく、ループ34の次の(すなわち、第2の)反復
に対応する演算実行ユニット命令の開始命令をスケジュ
ールすることができる。この対比は、この点よりも以前
に使用した略字に連番を付して図5に示されている。特
に、クロックサイクル8中にスケジュールステージ18
によりスケジュールされた最初の5つのエントリは、各
々がループ34の最初の反復に対応する、TR1,A
1,B1,C1,およびSBB1として示され、次の3
つのエントリは、各々がループ34の第2の反復の最初
の3つの演算実行ユニット命令に対応する、TR2,A
2,およびB2として示されている。しばらく、クロッ
クサイクル8中の図3の従来技術のオペレーションへ戻
って、キュー30は命令の完全な1ループまでしかスケ
ジュール回路18へ与えられないことを思い出して頂き
たい。したがって、そのループ(例えば、5つの命令)
しかスケジュールすることができず、その後そのループ
だけが1クロックサイクル(例えば、図3のクロックサ
イクル10)で実行される。しかしながら、本実施例に
おいて短い後向き分岐ループ命令をスケジューリングす
る場合であって、図6に示すような回路を使用する時に
は、キュー30によりループ34はスケジュールステー
ジ18が巡回式に利用できるようにされ、スケジュール
される演算実行ユニット命令数はループの1回の反復に
おける単なる演算実行ユニット命令数を越えて増加す
る。すなわち、ループに含まれる演算実行ユニット命令
がスケジュールできる数よりも少ない場合には、ループ
の各演算実行ユニット命令はキュー30により巡回式に
利用されて同じクロックサイクル中にスケジュールされ
る最大数の演算実行ユニット命令までスケジューリング
が行われる。したがって、本例では、ループ34は5つ
の演算実行ユニット命令を含みスケジュールステージ1
8は8つまでの演算実行ユニットに対して8つまでの演
算実行ユニット命令をスケジュールすることができる。
したがって、演算実行ユニット命令の最初の反復(すな
わち、T1−SBB1)がキュー30によりスケジュー
ルステージ18へ与えられて5つの対応する演算実行ユ
ニットへスケジュールされると、スケジュールステージ
18が演算実行ユニット命令をスケジュールすることが
できる3つの付加演算実行ユニットがそのまま残され
る。したがって、キュー30により最初の反復(すなわ
ち、T1−SBB1)が与えられる同じクロックサイク
ル中に、キュー30は次の3つの連続する命令(すなわ
ち、T2−B2)をスケジュールステージ18へ与えて
対応する演算実行ユニットへスケジュールすることがで
きる。その結果、図5のクロックサイクル8の終わりま
でには、合計8つの演算実行ユニット命令がスケジュー
ルされる。最後に、好ましい実施例を実現するマイクロ
プロセッサはレジスタリネーミング(renamin
g)、および/もしくは適切なオペランドおよび結果を
保存しながら同時に短い後向き分岐演算実行ユニット命
令の後の実行を可能にするある種の他のout−of−
order実行技術を必ず含まなければならない。
【0035】クロックサイクル9について検討する前
に、デコードステージ16に対するクロックサイクル8
中のオペレーションについて述べる。このオペレーショ
ンはクロックサイクル8に続くデコードステージ16の
情報とクロックサイクル7に続く情報との比較により最
も良く理解される。特に、クロックサイクル8の後で、
キュー30の各位置にデコードされた情報が格納され
る。本例では、デコードされた命令NおよびOはデコー
ドされた命令Mの後に加えられる。さらに、クロックサ
イクル7から思い出されるように、本実施例では短い後
向き分岐ループが含まれるラインに続く次のラインの命
令がフェッチされるため、このオペレーションが可能で
あることとをお判り願いたい。その結果後述するよう
に、短い後向き分岐ループがエグジットすると(すなわ
ち、もはや遂行されない)、連続する次の命令は既にパ
イプラインを介して一部処理されており、したがって、
パイプライン全体をフラッシュした後で従来技術のケー
スのようにフェッチされる必要がない。
【0036】クロックサイクル9中に、オペランドリー
ドステージ20に対するオペレーションおよびスケジュ
ールステージ18に対するオペレーションが独立して行
われる。オペランドリードステージ20に関しては、ク
ロックサイクル8中にスケジュールされた演算実行ユニ
ット命令(すなわち、TR1−SBB1,およびTR2
−B2)で、このようなオペランドが必要であるものに
ついてオペランドが読み出される。スケジュールステー
ジ18に関しては、クロックサイクル8中にスケジュー
ルされたものに続く連続する次のループ命令がスケジュ
ールされ、ループの反復が完了すると、キュー30によ
り次の反復からの付加命令をスケジュールステージ18
が利用してスケジュールできるようにされる。すなわ
ち、クロックサイクル8中に演算実行ユニット命令TR
1−SBB1およびTR2−B2がスケジュールされた
ことを思い出して頂きたい。したがって、これらの演算
実行ユニット命令は、ループ34の第2の反復の5つの
演算実行ユニット命令の中の最初の3つだけでなくルー
プ34の最初の完全な反復にも対応していた。したがっ
て、シーケンスを続けると、クロックサイクル9中にル
ープ34の第3の反復からの最初の演算実行ユニット命
令(すなわち、TR4)と同様な、ループ34の第2の
反復からの5つの演算実行ユニット命令(すなわち、T
R3−SBB3)と同様に、ループ34の第2の反復か
らの残りの演算実行ユニット命令(すなわち、C2およ
びSBB2)がスケジュールされる。
【0037】クロックサイクル10中に、実行ステージ
22の各演算実行ユニットは対応する演算実行ユニット
命令を実行する。図5から、このオペレーションにより
ループ34の最初の反復(すなわち、TR1−SBB
1)が実行されることが判る。しかしながら、残り3つ
の演算実行ユニットもループ34の第2の反復の一部を
実行するようにスケジュールされている。したがって、
同じクロックサイクル10中に、これら3つの残りの演
算実行ユニットによりTR2−B2が実行される。した
がって、ここで、当業者ならば本実施例により短い後向
き分岐ループが1実行サイクルで1回以上反復されるこ
とがお判りであろう。例えば、この場合、最初の完全な
反復プラスループの次の反復の3/5(すなわち、5つ
のループ命令の中の3つ)が実行され、1サイクルで合
計1.6回の反復(すなわち、1回の反復よりも多い)
が実行される。最後に、これらの演算実行ユニット命令
に関して、図5には図示されていないが、クロックサイ
クル10に続いて各演算実行ユニット命令が段階に分け
られマイクロプロセッサのアーキテクトされた状態に影
響を及ぼす。
【0038】クロックサイクル10に関して前記したオ
ペレーションが与えられると、本明細書で使用する短い
後向き分岐ループという用語に含まれるものをさらに明
確に定めることができる。ここで、前記したことからこ
のようなループには分岐命令が含まれそれは、遂行され
ると、比較的少数の演算実行ユニット命令だけ分岐命令
に先行する目的へコントロールを戻すと述べたことを思
い出して戴きたい。クロックサイクル10中の図5のオ
ペレーションを理解したので、短い後向き分岐の演算実
行ユニット命令数はそこから命令をスケジュールするこ
とができる記憶セル数、すなわち、キュー30内の記憶
セル数よりも少なくなければならないことが判る。すな
わち、図9のもう1つの実施例に示すように、本実施例
は各々がキュー30から巡回出力を与えて1サイクルで
実行するように作動できる命令演算実行ユニットを最小
限に抑えようとする能力を共有している。したがって、
前記したものは8セルを有するデコードキュー30、お
よび7つ以下(例えば、5つ)の演算実行ユニット命令
を有する短い後向き分岐ループの例である。キュー30
の出力の巡回性が与えられて短い後向き分岐が格納され
ると、それはスケジュールステージ18と組み合わされ
て所与のクロックサイクルに対して各演算実行ユニット
を使用するようにすることができる。さらに、これらを
考慮すると、さらに短い後向き分岐ループは7つまでの
演算実行ユニット命令を含むことができることが判る。
このような場合、本実施例を使用すると、7つの演算実
行ユニット命令の各々の最初の反復をループの第2の反
復の最初の演算実行ユニット命令と同じクロックサイク
ルで実行するようにスケジュールすることができる。さ
らに、キューセル数が整数Qまで増加する場合には、こ
のような場合に使用する短い後向き分岐命令ループはQ
−1以下の演算実行ユニット命令で構成することがで
き、これらの2回以上のQ−1(もしくはそれ以下)の
反復を1実行サイクルでスケジュールする機会が再び与
えられる。
【0039】次に図5のクロックサイクル10に戻っ
て、クロックサイクル9でスケジュールステージ18に
よりスケジュールされた命令はオペランドリードステー
ジ20へ通されることが判る。さらに、当業者ならば次
のクロックサイクル(すなわち、クロックサイクル1
1)において、これらの命令は実行されて、ループ34
の第2の反復の実行(すなわち、C2およびSBB2の
実行による)、ループ34の第3の反復の完全な実行
(すなわち、TR3−SBB3の実行による)、および
ループ34の第4の反復の部分的実行(すなわち、TR
4の実行による)の完了を表すことがお判りであろう。
したがって、ここでも、短い後向き分岐ループの2つ以
上の反復が1サイクルで実行される。
【0040】クロックサイクル10について説明してき
たので、さらに、プロセスは短い後向き分岐の所望数の
反復を実行するのに必要な任意の付加クロックサイクル
だけでなく、クロックサイクル11を通して継続される
ことが判る。したがって、TR1−B2はクロックサイ
クル10中に実行されたが、連続する次の8つの実行命
令(すなわち、C2−TR4)はクロックサイクル11
中に実行される。したがって、クロックサイクル12が
示されていると、少なくともA4−SSB4が実行さ
れ、分岐が遂行され続ければさらにC5が実行される。
【0041】次に本実施例により与えられる短い後向き
分岐ループが存在する効果について述べる。特に、クロ
ックサイクル12が示されると、少なくともA4−SS
B4が実行されることを前に述べた。しかしながら、S
SB4は実行した時に遂行されないことが判ったものと
する。したがって、誤予測が生じ実行したい次の命令は
SSBに続くもの、すなわち、クロックサイクル6にお
いてSSB命令にすぐ続く命令Mとなる。従来技術で
は、誤予測が生じると、全体パイプラインがフラッシュ
され分岐に続く次の命令(例えば、命令M)がフェッチ
されパイプラインに沿って実行に向けて通される。しか
しながら、これとは対照的に、本実施例では連続する次
の命令は既にパイプライン内へフェッチされ、デコード
され、キュー30内に格納されている。例えば、クロッ
クサイクル11(もしくは、クロックサイクル7−10
のいずれか)を見ると、キュー30は命令NおよびOだ
けでなくデコードされた命令Mも既に格納して図示され
ている。したがって、前記したようにSSB4の誤予測
の場合には、本実施例のパイプラインは次の命令および
恐らくは連続する付加命令をデコードされた形式で既に
格納しており、パイプラインのフラッシュに続いてこれ
らの命令を再フェッチすることなくそれ(もしくは、そ
れら)を次のサイクルでスケジューリングのために転送
することができる。したがって、クロックサイクル11
において誤予測が生じると、命令M−Oは僅か3クロッ
クサイクル後に実行準備が完了するが、従来技術では最
初のフェッチおよび第2のデコード命令Mにさらに2つ
のクロックサイクルが必要である。したがって、本実施
例により短い後向き分岐エグジットに基づいた従来技術
もさらに改善される。
【0042】図6にキュー30の好ましい実施例の詳細
な模式図を示し、前記したようにスケジュールステージ
18へ巡回式に演算実行ユニット命令を与える回路を含
んでいる。キュー30は8つの記憶セルを含み、各々が
42に連続文字“a”−“h”を組み合わせた参照番号
で示されている。各セルはデコードステージ16から受
信した演算実行ユニット命令に対応する出力を格納する
ように作動する(セルへの入力は図面を単純化するため
に図示されていない)。各セル42a−42hは後述す
るアドレス計算のための対応するセルアドレスを有して
いる。さらに、好ましい実施例では、一度セル内に格納
された演算実行ユニット命令は別のセルへ動くことはな
く、替わりにポインタを使用してキューの頂部および底
部を識別し、各演算実行ユニット命令が受信される順序
の基準が与えられる。したがって、例として、図5のク
ロックサイクルからの演算実行ユニット命令はセル42
c−42h内に格納されて図示される。演算実行ユニッ
ト命令TRはシーケンス内の最初の命令であるため、キ
ュー頂部ポインタにより指示される。同様に、演算実行
ユニット命令Mはシーケンス内の最後の命令であるた
め、キュー底部ポインタにより指示される。
【0043】各セル42a−42hの出力は8つのマル
チプレクサ44a−44hの各々の入力に接続されてい
る。マルチプレクサ44a−44hは各出力をスケジュ
ールステージ18へ与える。特に、各マルチプレクサ4
4a−44hは制御回路46により制御され、それは図
4に関して紹介したSSBおよびTR演算実行ユニット
命令に関連するタグに応答して活性化される。すなわ
ち、命令はSSB命令であるというBTB28内の表示
に応答して、ビットはSSB命令(もしくは、その対応
するTR命令)を表すことを後続するパイプラインステ
ージへ表示するタグが各命令へ加えられる。ここで、タ
グに応答して、制御回路46はループ34の多数回の反
復を処理する次の機能を達成することができる。特に、
制御回路46はSSBタグを検出すると、各マルチプレ
クサに対するセルアドレスを計算し、1式に基づいてそ
の演算実行ユニット命令を選択する。
【0044】
【数1】 addr(n)=(((n+curr br)mod br q sz)+top of q)mod q sz) (1式) ここに、addr(n) は図6に示すマルチプレクサのアドレ
ス、curr br は短い後向き分岐ループの最初の反復に対
してはゼロであり、その後の各サイクルに対しては(先
行するサイクル内のcurr br +最後のサイクルでスケジ
ュールされた命令数)modbr q z 、br q sz は短い後向
き分岐ループ内の命令数、top of qはキュー頂部ポイン
タに対するセルアドレス、q szは命令キューの合計セル
数(本例では8)。
【0045】図7は図6のシステムを例示するものであ
るが、ループ34からの演算実行ユニット命令を連続的
に供給する制御回路46の動作を明示する各マルチプレ
クサ44a−44hの出力も表している。前例に従っ
て、キュー30に示す演算実行ユニット命令は図5のク
ロックサイクル6のそれであるため、各マルチプレクサ
から出力される演算実行ユニット命令は図5のクロック
サイクル8においてスケジュールステージ18により処
理されるものである(すなわち、シーケンス内の、TR
1−SBB1およびTR2−B2)。この順序が与えら
れると、1式のいくつかの計算例を明示して、その展開
をより完全に理解することができる。
【0046】1式の最初の展開例として、キュー30に
より最初のスケジュールステージ位置(例えば、addr
(0) )へ通される演算実行ユニット命令を考える。1式
は次のように計算される。
【数2】addr(0)=(((0+0)mod5)+2)mod8)=((0mod5)+2)m
od8=2mod8=2 したがって、セルアドレス2(すなわち、セル42c対
応する)からの演算実行ユニット命令はスケジュールス
テージ18のaddr(0) へ通され、最初のスケジュールス
テージ位置へ演算実行ユニット命令TRを与える。
【0047】1式の第2の展開例として、キュー30に
より第5のスケジュールステージ位置(すなわち、addr
(4) )へ通される演算実行ユニット命令を考える。1式
は次のように計算される。
【数3】addr(4)=(((4+0)mod5)+2)mod8)=((4mod5)+2)m
od8=6mod8=6 したがって、セルアドレス6(すなわち、セル42gに
対応する)からの演算実行ユニット命令はスケジュール
ステージ18のaddr(4) へ通され、第5のスケジュール
ステージ位置へ演算実行ユニット命令SBBを与える。
【0048】1式の第3の展開例として、キュー30に
より第6のスケジュールステージ位置(すなわち、addr
(5) )へ通される演算実行ユニット命令を考える。1式
は次のように計算される。
【数4】addr(5)=(((5+0)mod5)+2)mod8)=((5mod5)+2)mo
d8=2mod8=2 したがって、セルアドレス2(すなわち、セル42cに
対応する)からの演算実行ユニット命令はスケジュール
ステージ18のaddr(5) へ通され、第6のスケジュール
ステージ位置へ演算実行ユニット命令TRを与える。
【0049】1式の展開例をさらに明示するために、図
8に図7を重複して示すが、図5からのクロックサイク
ル9(すなわち、図7の例に続くクロックサイクル)に
対するマルチプレクサ44a−44hの各々の所望の出
力が明示されている。したがって、図5のクロックサイ
クル9に対して各マルチプレクサから出力されるように
図示されている演算実行ユニット命令はC2およびSB
B2であり、TR3−SBB3が続き、最後にTR4が
続く。この順序が与えられると、1式のいくつかの計算
例を明示して、その展開をより完全に理解することがで
きる。図8に対して1式の例を続ける前に、1式の各展
開がパラメータcurr br を含み、また前記したようにル
ープの最初の反復後の各サイクルに対してこのcurr br
は(先行サイクルのcurr br +最終サイクルでスケジュ
ールされた命令数)modbr q z であることを思い出して
頂きたい。したがって、次の例では、curr br は次のよ
うになる。
【数5】curr br=(0+8)mod5=3
【0050】次に1式の最初の展開例に戻って、キュー
30により最初のスケジュールステージ位置(すなわ
ち、addr(0) )へ通される演算実行ユニット命令を考え
る。1式は次のように計算される。
【数6】addr(0)=(((0+3)mod5)+2)mod8)=((3mod5)+2)mo
d8=5mod8=5 したがって、セルアドレス5(すなわち、セル42fに
対応する)からの演算実行ユニット命令はスケジュール
ステージ18のaddr(0) へ通され、最初のスケジュール
ステージ位置へ演算実行ユニット命令Cを与える。
【0051】1式の第2の展開例として、キュー30に
より第2のスケジュールステージ位置(すなわち、addr
(1) )へ通される演算実行ユニット命令を考える。1式
は次のように計算される。
【数7】addr(1)=(((1+3)mod5)+2)mod8)=((4mod5)+2)mo
d8=6mod8=6 したがって、セルアドレス6(すなわち、セル42gに
対応する)からの演算実行ユニット命令はスケジュール
ステージ18のaddr(1) へ通され、第2のスケジュール
ステージ位置へ演算実行ユニット命令SBBを与える。
【0052】1式の最後の展開例として、キュー30に
より第8のスケジュール位置(すなわち、addr(7) )へ
通される演算実行ユニット命令を考える。1式は次のよ
うに計算される。
【数8】addr(7)=(((7+3)mod5)+2)mod8)=((10mod5)+2)m
od8=2mod8=2 したがって、セルアドレス0(すなわち、セル42cに
対応する)からの演算実行ユニット命令はスケジュール
ステージ18のaddr(7) へ通され、第8のスケジュール
ステージ位置へ演算実行ユニット命令TRを与える。
【0053】図9に図4のマイクルプロセッサ36の修
正に従って処理される場合の図2のストリーム32と同
様な、別の命令ストリームのタイミング図を示す。最初
に、図9の命令ストリームも短い後向き分岐ループを含
んでいるが、前記原理をさらに明示するために、ループ
は10の演算実行ユニット命令を含み、それには最も早
期のものから最も最近までの下記のフォーマットが含ま
れるものとする。
【数9】 TR A B C D E F G H SSB さらに、前記したように、図9に示す処理は修正された
マイクルプロセッサ36にも適用される。特に、本例で
は、キュー30の記憶セル(すなわち、対応する演算実
行ユニット命令を格納できるセル)の数は8から12へ
増加される。しかしながら、マイクルプロセッサに含ま
れる演算実行ユニットは8個のままである。
【0054】以下の検討を簡単にするために、図9では
図5と同じきまりのタイミングが使用され、図9を左か
ら右へ横切する水平軸は連続するマイクルプロセッサク
ロックサイクルを表し、図9を頂部から底部へ横切する
垂直軸はマイクルプロセッサパイプラインを通過する命
令ストリームを表す。さらに検討を簡単にするために、
図9の分岐ループは誤予測により既に検出されており、
したがって、目的および連続命令のフェッチングが開始
する最初のクロックサイクル(すなわち、図5のクロッ
クサイクル6と同様)としてクロックサイクル10が任
意に明示される。すなわち、クロックサイクル9(図示
せず)の計算により、SBB命令が実行されその誤予測
によりMISPREDICTED信号に応答してパイプ
ラインがフラッシュされる。また、ACTUALTAR
GET ADDRESSが命令フェッチステージ14へ
送られてその次のフェッチがTR命令を含むラインとな
るようにされることを思い出して頂きたい。最後に、S
BBがBTB28内の短い後向き分岐として明示され、
その目的も短い後向き分岐の目的として指示されること
を思い出して頂きたい。
【0055】次に図9のクロックサイクル10に戻っ
て、本ループ内の最初の10の命令の中のいくつかが命
令フェッチステージ14によりフェッチされる。これら
の最初の命令はキャッシュ回路26からのその整列に従
って整列されるライン内で受信される。本例では、ルー
プはキャッシュラインからフェッチされる最初の2つの
命令がループの一部ではなく、したがって、クロックサ
イクル10にアステリスクで示されるように整列される
ものと仮定する。さらに、全体ループが10命令長であ
り、ループはキャッシュライン内の2つの非ループ命令
で置換され、かつフェッチステージは一時に8つの命令
しかフェッチできないため、クロックサイクル10中に
10のループ命令の僅か6つしかフェッチされない。し
たがって、後述するように、ループの残りの命令はクロ
ックサイクル11中にフェッチされる。クロックサイク
ル10を継続すると、再びBTB28(あるいはそれに
関連する目的記憶レジスタ等の他の記憶装置)が相談さ
れてTR命令はSBB命令の目的であることが表示さ
れ、したがって、それを示すタグがTR命令に付加もし
くは関連ずけられてそれがパイプライン14を通過する
こと等が明示される。
【0056】クロックサイクル10中に、前記したよう
に、本ループの残りの4つの命令がフェッチステージ1
4によりフェッチされる。さらに、図5のクロックサイ
クル6のケースのように、ループのフェッチを完了する
他に命令フェッチステージ14はキャッシュ回路26か
らの同じラインでTR命令の後の任意の命令をフェッチ
する。したがって、本例では、クロックサイクル11で
ループの最終命令がフェッチされると、ループに続く命
令M,N,OおよびPもフェッチされる。さらに、SB
B命令がフェッチされているため、BTB28への対応
するエントリによりそれも短い後向き分岐としてタグが
付される。また、クロックサイクル11中に、フェッチ
されたループの最初の6つの命令がデコードステージ1
6を通ってキュー30へ進む。キュー30に配置される
と、これらの最初のループ命令はTR命令がキュー30
の頂部に配置されるように再整列される。したがって、
ここで、ループの最初の命令がキュー30に格納できる
命令数よりも少くなる程度まで、またこれらの最初の命
令がそれを読み出したキャッシュライン内で変位される
程度まで、キュー30の残りの位置は非使用とされる
(すなわち、本例では、6つの位置)。
【0057】クロックサイクル12中に、デコードステ
ージ16はさらにこの短い後向き分岐ループの残りの命
令をデコードし、デコードした演算実行ユニット命令を
キュー30内に格納する。したがって、クロックサイク
ル12の後で、スケジュールステージ18は、図5−図
9に関して前記しかつ後述する方法に匹敵する方法で巡
回式に演算実行ユニット命令を受信することができる。
【0058】クロックサイクル13中に、スケジュール
ステージ18はキュー30から演算実行ユニット命令を
巡回式に受信する。したがって、スケジュールステージ
18は考えられる最大数の命令、すなわち、利用可能な
演算実行ユニット数に対応する数の命令を実行するため
に発行する。本例では、8つの演算実行ユニットが利用
可能であり、したがって、TR1−G1が実行のために
スケジュールされる。クロックサイクル13の表現が与
えられると、ループのスケジューリングが開始される前
に1クロックの遅延が生じていることが判る。特に、た
とえクロックサイクル11中に演算実行ユニット命令が
キュー30内に格納されていても、クロックサイクル1
2中にスケジューリングは示されていないことをお判り
願いたい。したがって、図9に図示する例の代替例で
は、クロックサイクル13中に8つの演算実行ユニット
命令全部をスケジュールするのを待機せずに、クロック
サイクル11中にキュー30に格納された演算実行ユニ
ット命令をクロックサイクル12中にスケジュールする
ことができる。しかしながら、このような場合、6つの
演算実行ユニット命令(すなわち、TR−E1)しかス
ケジューリングに利用できずパイプラインへ通して6つ
だけの命令としてクロックサイクル14で実行される。
したがって、説明を簡単にするために、替わりに図9の
パターンについて検討する。
【0059】クロックサイクル14中に、スケジュール
ステージ18は再び演算実行ユニット命令をキュー30
命令から巡回式に受信する。しかしながら、ここではこ
のループ内の10の命令の中の最初の8つが先行するク
ロックサイクル13中にステージ18により受信されス
ケジュールされるため、このクロックサイクル14は、
ループの次の反復に対する最初の6つの演算実行ユニッ
ト命令(すなわち、TR2−E2)だけでなく、ループ
の最初の反復における残りの演算実行ユニット命令(す
なわち、H1およびSSB1)を受信しスケジュールす
る。
【0060】前記したことから、当業者ならば、クロッ
クサイクル12の後で各サイクル毎に8つの演算実行ユ
ニット命令をスケジュールしてこのループの所望する全
ての反復が完了するまで、各演算実行ユニットに命令を
割り当てられることがお判りであろう。したがって、こ
こでも、演算実行ユニットは従来技術のようにアイドル
のままとされることはない。事実、図9に示すようにキ
ャッシュ整列された10の命令ループの例が与えられる
と、従来技術では第1のキャッシュラインに対応する第
1群の命令(TR−E命令を含む)それに続く第2のキ
ャッシュラインに対応する第2群の命令(F−SSB命
令を含む)を連続してフェッチし、毎回それらをパイプ
ラインへ通すことができる。したがって、実行時間に、
ループの各反復はフェッチされる各命令群に一つずつの
2つのクロックサイクルが必要である。さらに、これら
のクロックサイクルの最初のクロックサイクル中に、演
算実行ユニットの2つが使用されず(8つの演算実行ユ
ニットの中の6つだけを使用して6つの命令しか実行さ
れないため)、これらのクロックサイクルの第2のクロ
ックサイクル中には、演算実行ユニットの4つが使用さ
れない(8つの演算実行ユニットの中の4つだけを使用
して4つの命令しか実行されないため)。これとは対照
的に、本発明の実施例では短い後向き分岐ループを実行
する時に利用可能な演算実行ユニットは完全に利用でき
る。したがって、ここでも図9の実施例は従来技術に較
べて性能の向上を表している。
【0061】前記したオペレーションが行われると、本
明細書で使用されている短い後向き分岐命令ループとい
う用語に何が含まれるかを本実施例で検討することがこ
こでも有用となる。前記したことから、短い後向き分岐
の演算実行ユニット命令数は命令をスケジュールするこ
とができる記憶セル数、すなわち、キュー30内の記憶
セル数よりも少なくなければならないことを思い出して
頂きたい。これに関して、図9の実施例には12の記憶
セル、および10の命令ループが明示されている。ここ
でも、相対的ベースで演算実行ユニットへ命令を巡回発
行して、全ての演算実行ユニットが短い後向き分岐ルー
プの一部を1サイクルで実行することができる。さら
に、図5および図9のオペレーションの他の共通的局面
にも注目願いたい。特に、いずれの場合にも、短い後向
き分岐が検出され、デコードキュー30はさきざまな反
復にわたってそれらを再フェッチすることなく短い後向
き分岐命令の全ループを格納し、短い後向き分岐命令の
さきざまな反復はさきざまなクロックサイクルにわたっ
て実行される。さらに、これらのクロックサイクル中
に、各演算実行ユニットはスケジュールして実行する利
用可能な演算実行ユニット命令が無いためにアイドルと
されるのではなく、好ましくは対応する演算実行ユニッ
ト命令を実行することができる。さらに、これらのさき
ざまなクロックサイクルにおいて、所与のクロックサイ
クル中に、実行されるある演算実行ユニット命令はルー
プの1反復を表し、同じサイクルで実行される他の演算
実行ユニット命令はループの先行もしくは後続反復を表
す。この最後に関して、例えば、図5のクロックサイク
ル10中にTR1−SBB1はループの最初の反復を表
し、TR2−B2はループの第2の反復を表す。同様
に、図9において、クロックサイクル16中にH1−S
SB1はループの最初の反復を表しTR2−E2はルー
プの第2の反復を表す。最後に、後述するように、短い
後向き分岐ループの全反復を実行するのに使用されるク
ロックサイクルの全セットにわたって、非使用演算実行
ユニットの平均数は従来技術の非使用演算実行ユニット
の平均数よりも少ない。
【0062】前記したように、好ましい実施例が与えら
れると短い後向き分岐に関するさきざまな観察を行うこ
とができる。これらの観察が行われると、図5および図
9のオペレーションを図3の従来技術のそれと対比し、
かつ前記したいくつかの仮定を再び調べることにより発
明の範囲をさらに特徴づけることができる。前記したよ
うに、実施例では、非使用演算実行ユニットの平均数は
従来技術の非使用演算実行ユニットの平均数よりも少な
い。この局面は前記説明のより集中した解析により調査
することができる。以下の説明を良く理解するために、
以後演算実行ユニットタイムスロットと呼ばれるものを
ここで紹介する。特に、演算実行ユニットタイムスロッ
トは1クロックサイクルで演算実行ユニット命令を実行
する演算実行ユニットの可用性である。例えば、前記し
たさまざまな場合において、演算実行ユニット命令は1
クロックサイクル中に実行されるものと仮定されてお
り、この場合、このようなイベントにより1演算実行ユ
ニットタイムスロットが費やされるということができ
る。同様に、同じ演算実行ユニット命令を実行するのに
2クロックサイクルを要した場合、このようなイベント
は2演算実行ユニットタイムスロットを費やしたといわ
れる。しかしながら、さらに、所与のサイクル中にたと
え演算実行ユニットが演算実行ユニット命令を実行しな
い場合でも、演算実行ユニットタイムスロットは経過し
てしまう。すなわち、演算実行ユニットタイムスロット
は、実施例が実際にその可用性を利用してそのスロット
中に実行するかどうかに無関係に、所与のクロックサイ
クル中に実行する可用性を表す。後述するように、実行
タイムスロットのこの概念により従来技術を越える実施
例の集中解析が可能となる。
【0063】従来技術では、短い後向き分岐ループの反
復実行中に経過する演算実行ユニットタイムスロット
数、EUTSI、は4式で定義することができる。
【数10】 EUTSI=NEU* CFI 4式 ここに、NEUはマイクロプロセッサ内の演算実行ユニ
ット数に等しく、CFIは短い後向き分岐ループの1反
復をフェッチするクロックサイクル数に等しい。例え
ば、4式は次のように図3へ適用される。最初に、図3
は8つの演算実行ユニットを有するマイクロプロセッサ
を示している。第2に、短い後向き分岐ループは1本の
キャッシュライン内にあり、したがって、1クロックサ
イクルでフェッチすることができる。したがって、4式
を図3の従来技術のオペレーションに適用すると、下記
の結果が得られる。
【数11】EUTSI=NEU* CFI=8* 1=8 したがって、短い後向き分岐の1反復を実行するクロッ
クサイクルに対して8つの演算実行ユニットタイムスロ
ットが経過する。これは、図3の1実行クロックサイク
ル(例えば、クロックサイクル10)に対して5つの演
算実行ユニット命令しか実行されなくても、合計8つの
演算実行ユニットタイムスロットが経過することを数学
的に示すものである。したがって、これらのタイムスロ
ットの中の3つのタイムスロットは非使用とされ、その
クロックサイクル中に8つの演算実行ユニットの中の3
つはアイドルであるため無駄にされる。
【0064】4式のもう1つの例として、図9の短い後
向き分岐ループが従来技術により処理されると(図9に
示すように本発明によるのではなく)、4式の結果は次
のようになる。ここでも、図9は8つの演算実行ユニッ
トを有するマイクロプロセッサを示している。しかしな
がら、短い後向き分岐ループは2本のキャッシュライン
内にあり、したがって、2クロックサイクルでフェッチ
される。したがって、4式を従来技術の短い後向き分岐
に適用すると、次式が得られる。
【数12】EUTSI=NEU* CFI=8* 2=16 したがって、16の演算実行ユニットタイムスロットが
2クロックサイクルにわたって経過して短い後向き分岐
の1反復を実行する。これは、2実行クロックサイクル
にわたって僅か10の演算実行ユニット命令しか実行さ
れなくても、合計16の演算実行ユニットタイムスロッ
トが経過することを数学的に示すものである。したがっ
て、これらのタイムスロットの中の6つのタイムスロッ
トは非使用とされ、ループの1反復の実行の終わりまで
に無駄にされる。
【0065】従来技術に較べて、前記した好ましい実施
例は、ループの1反復に対して、従来技術よりも少ない
演算実行ユニットタイムスロットを使用する方法で短い
後向き分岐を実行する能力を提供する構成および方法論
を表すものである。したがって、残りの演算実行ユニッ
トタイムスロットを使用してループのもう1つの反復の
一部もしくは全部を実行するのに使用することができ
る。後述するように、実施例では、短い後向き分岐ルー
プの反復に要する演算実行ユニットタイムスロット数、
EUTSIINV 、は5式のように定義することができ
る。
【数13】 ここに、Lは短い後向き分岐ループ内の命令数、EUC
は命令を実行するのに費やされる演算実行ユニット数
(すなわち、命令当たりの演算実行ユニット命令数)、
CEは演算実行ユニット命令を実行するクロック数、し
たがって、CEi, j はループ内の第i番命令に対応する
第j番演算実行ユニット命令を実行するクロック数であ
る。5式のパラメータは、さらに、図5および図9に関
して行ったいくつかの仮定も説明するものである。例え
ば、EUCに関して、前の検討では各命令(デコードす
る前)は1つの演算実行ユニット命令(デコード後)に
対応するものと仮定した。したがって、各命令は実行す
るのに1つの演算実行ユニットしか費やさなかった。し
かしながら、ある命令は2つ(あるいはそれ以上の)演
算実行ユニット命令へデコードされ、したがって、実行
するのに対応する数の演算実行ユニットを費やすことが
ある。もう1つの例として、図5および図9は、演算実
行ユニット命令が実行ステージに達すると必ず次のクロ
ックサイクルで実行されることを暗示している。しかし
ながら、パイプラインストール、インターロック、もし
くは従来技術で周知の他のイベント等の場合に、演算実
行ユニット命令が実行される前に実際に遅延が生じ、さ
らに、CEの値は特定の演算実行ユニット命令に依存す
ることがある。したがって、5式のパラメータCEはこ
のような遅延を調整することができる。例えば、所与の
演算実行ユニット命令にストールが生じて実行するのに
2クロックが必要になれば、5式はその反復中にこのよ
うなイベントを考慮する。いずれにせよ、短い後向き分
岐ループに対して、前記した回路およびオペレーション
方法により5式が4式のそれよりも少ない総タイムスロ
ット数を実現する場合には、本実施例に従って利点が実
現される。これをさらに明示するために、下記のように
図5に5式が適用される。
【数14】EUTSIINV =CE1,1 +CE2,1 +CE
3,1 +CE4,1 +CE5,1 =1+1+1+1+1=5 すなわち、各命令CE1 −CE5 に対して、1つの演算
実行ユニット命令しかなく、これらの各演算実行ユニッ
ト命令に対して、図5では演算実行ユニット命令を実行
するのにクロックサイクルしか使用されないものと仮定
されている。したがって、前記したことから、5式を図
5に適用すると図5の短い後向き分岐ループの反復中に
必要な演算実行ユニットタイムスロットの平均数は僅か
5であることが明示される。しかしながら、図3のよう
な従来技術を使用して同じループを処理すると8つのこ
のようなタイムスロットが生じることを思い出して戴き
たい。したがって、本実施例は遥かに効率的である。別
の例として、5式は次のように図9へ適用される。
【数15】EUTSIINV =CE1,1 +CE2,1 +CE
3,1 +CE4,1 +CE5,1 +CE6,1 +CE7,1 +CE
8,1 +CE9,1 +CE10,1 =1+1+1+1+1+1
+1+1+1+1=10 前記したことから、5式を図9へ適用すると図9の短い
後向き分岐ループの反復中に必要な演算実行ユニットタ
イムスロットの平均数は僅か10であることが明示さ
れ、同じループを従来技術を使用して処理すると4式か
ら16のタイムスロットが使用される。したがって、こ
こでも、1反復に対して必要な演算実行ユニットタイム
スロットは少なくなる。
【0066】5式の効果をさらに理解するために、最後
に2つの命令(すなわち、分岐とその目的のみ)を有す
る短い後向き分岐ループを仮定し、第1の命令は3つの
演算実行ユニット命令へデコードされ第2の命令は2つ
の演算実行ユニット命令へデコードされる。さらに、こ
の例において、対応する各演算実行ユニット命令を実行
するクロック数は下記の表1に示されたものとする。
【0067】
【表1】
【0068】したがって、5式を表1へ適用すると次式
が得られる。
【数16】 EUTSIINV =(CE1,1 +CE1,2,+CE1,3 )+(CE2,1 +CE2,2 ) =(1+1+2)+(2+3)=9 前記したことから、5式を表1のループへ適用すると前
記した本発明の装置および方法論により、短い後向き分
岐ループの反復中に平均数9の演算実行ユニットタイム
スロットを得られることが明示される。
【0069】最後に、式4と式5の対比によりループの
1反復に対するオペレーションが明示される。しかしな
がら、同じループの多数の反復に対して、再び平均数を
計算して本実施例により得られる相対的な改善を明示す
ることができる。例えば、4式および図3は、命令当た
り1演算実行ユニット命令の最善のケースであっても、
ループの全反復に対して平均で3つのタイムスロットが
使用されないことを示唆している。もちろん、ストール
等の状況では、1反復に対して6つ以上の演算実行ユニ
ットが使用される場合があり、したがって、使用されな
い演算実行ユニットは2つ以下となる。しかしながら、
当業者ならば平均で少なくとも3つの演算実行ユニット
が使用されないことがお判りであろう。これに対して、
5式はループの1反復に対してより少数の演算実行ユニ
ットタイムスロットを使用することができる代案を明示
している。事実、ここでもループの全反復にわたる平均
のケースを考えると、あるクロックサイクルにおいて、
パラメータは、その反復に対して、反復を実行するのに
付加タイムスロットが使用されることを表示することが
できる。しかしながら、ループの全反復の平均をとり、
本実施例に従って処理すると、ループの全反復を完了す
るのに経過するタイムスロット数が少なくなる。
【0070】短い後向き分岐ループを処理する好ましい
パイプラインオペレーションを明示してきたので、この
ようなオペレーションを実行するのに、SBBは最初に
パイプラインを通過して誤予測であると判った時に(あ
るいは、予測されずにBTB28へのエントリが無い時
に)短い後向き分岐と確認されると説明したことを思い
出して戴きたい。好ましい実施例では、この確認はさま
ざまな方法で、SBBおよびTR検出回路38を単独で
あるいは実行ステージ22に含まれる機能と組み合わせ
て使用して実行することができる。いずれにせよ、さま
ざまな確認の例を後述する。
【0071】本実施例がRISCマイクロプロセッサに
実施される場合には、SBB検出はかなり直接的であ
り、各RISC命令は1演算実行ユニット命令に対応す
る。最初に、図5のクロックサイクル5のように、分岐
命令はそれが誤予測されるかあるいはBTB28へのエ
ントリが無い場合に最初に実行されることを思い出して
戴きたい。ここで、適切な演算実行ユニットの分岐処理
回路は前記した信号(すなわち、ACTUAL TAR
GET ADDRESS,INSTRUCTION A
DDRESS, MISPREDICTED)で応答す
る。したがって、演算実行ユニットはそれ自体が目的命
令のアドレスだけでなく分岐命令のアドレスを入手する
ことができる。したがって、現在の分岐命令がSBB命
令であるかどうかを決定する2つの確認を行うことがで
きる。第1に、演算実行ユニットは目的アドレスが分岐
命令アドレスよりも小さいことを確認することができ、
そうであれば、分岐は後向き分岐である。第2に、演算
実行ユニットは目的アドレスを分岐命令アドレスから減
じることができる。次に、その結果をキュー30内の記
憶セル数(例えば、図5の例では8、図9の例では1
2)と比較することができる。結果がキュー30内の記
憶セル数よりも小さければ、分岐は短い後向き分岐であ
り、さもなくば分岐は後向き分岐であり、本実施例でそ
の用語が定義されているほど小さくはない。
【0072】本実施例がCISCマイクロプロセッサ
(すなわち、複雑なデコードを有するRISC)に実施
される場合にはSBB検出はより複雑となり、2つの技
術しか後述されていないが当業者ならば代替策が考えら
れるであろう。
【0073】CISCマイクロプロセッサの第1のSB
B検出技術では、シミュレーションや他の匹敵する解析
を実行してISA命令当たりの演算実行ユニット命令の
平均数だけでなく、命令セットアーキテクチュア(“I
SA”)命令当たり平均バイト数Bを求めることができ
る。これらのパラメータが与えられると、キュー30内
に格納できるISA命令の平均数QIが2式により求め
られる。
【0074】
【数17】 QI=(キュー30内のセル数)÷I 2式 次に、1式の結果を使用してキュー30内に格納されて
いるバイトの平均数QBを3式に従って求めることがで
きる。
【0075】
【数18】 QB=QI* B 3式
【0076】3式のQBの値(すなわち、キュー30内
に格納できるバイトの平均数)が与えられると、前記し
たRISCのケースのようなアドレス減算を再び使用す
ることができる。すなわち、目的アドレスが分岐アドレ
スから減じられて差Dが作り出される。アドレスはバイ
トによるため、Dはループ内に含まれるバイト総数を表
す。したがって、DがQBよりも小さければ、後向き分
岐は統計的に短い後向き分岐である可能性が高い。ま
た、前記パラメータは平均に基づいているため前記確認
は統計的近似にすぎない。したがって、平均を越える偏
差をさらに幾分含めるために、別の実施例ではQBの値
を、1.1程度の、ある因数だけ増加してQBとDのあ
からさまな比較よりも多くのループを短い後向き分岐と
見なせるようにすることができる。QBが増加されるか
どうかに無関係に、分岐が短い後向き分岐として検出さ
れると、SBBおよびTR検出回路38はBTB28を
更新して現在の分岐命令がSBB命令であることを表示
し、前記したように、その後でSBBおよびその対応す
るTR命令にタグを付けることができる。
【0077】前記したことから、2式および3式の計算
とそこからのSBBの結論は平均に基づいていることに
再び注目願いたい。したがって、短い後向き分岐として
識別された分岐ループが実際にこのようなループよりも
大きい場合がある(すなわち、ループに対応する演算実
行ユニット命令がおびただしいためキュー30のセル内
に適合しない)。したがって、好ましい実施例はさらに
前式および後述するステップに基づいて確認を検証する
付加ステップおよびハードウェアを含んでいる。
【0078】前記したようにBTB28が更新された後
で、パイプラインはTR命令とそれに続く命令をフェッ
チすることを思い出して戴きたい。ここで、TR命令に
はBTB28へのエントリによる短い後向き分岐ループ
のタグが付されてそのように識別される。次に、図5に
戻って、TR命令は次にデコードされキュー30内に格
納されることを思い出して戴きたい。(SBB命令目的
として必ずタグが付されている)TR命令がキュー30
内に格納されると、本実施例はさらにその到来を検出す
る適切な回路を含み、さらに2つの確認を実行する。最
初に、対応するSBBもキュー30内にあるかどうかが
確認される。ある場合には、TRおよびSBB演算実行
ユニット命令の両方がキュー30内にあるため、定義に
よりループは短い後向き分岐ループである。その結果、
前式に基づいたBTB28への早期のエントリは正確で
あり、図5(もしくは図9)に示すように方法が継続さ
れる。一方、対応するSBBもキュー30内になけれ
ば、キュー30が満杯(すなわち、各キュー位置が有効
な情報を格納している)であるかどうかが確認される。
例えば、図9のクロックサイクル11に戻って、TR命
令がキュー30内に格納されているが、キュー30はま
だ満杯ではない場合がある。このような場合、次のクロ
ックサイクルにおいて、現在の実行命令はパイプライン
14に沿って継続することを許されるが、それらのコピ
ーもキュー30内に保持される。その後の各サイクルに
対して、この解析は継続される、すなわち、SBBとT
R演算実行ユニット命令の両方がキュー30内にあるか
どうかが確認され、なければ、キュー30が満杯である
かどうかが確認される。したがって、ある点において、
キュー30は演算実行ユニット命令で満たされる。例え
ば、図9において、これはクロックサイクル12で起こ
る。ここで、再び、SBBおよびTR演算実行ユニット
命令がキュー30内にあれば、ループが短い後向き分岐
ループであるという前記確認は正確であり、前記したよ
うにそのループの処理を継続することができる。一方、
キュー30が満杯であれば、SBB演算実行ユニット命
令はキュー30内にはないことが確認され、次に現在ル
ープの定義により、短い後向き分岐ループとして識別さ
れてはいるが、実際にはそのようなループではない。そ
れに応答して、2つのアクションがとられる。最初に、
分岐命令がSBB命令であることを示すBTB28への
エントリが、短い後向き分岐命令を示さないように修正
される。第2に、キュー30内に保持されこの確認が保
留されかつそれに対してコピーが既に後続パイプライン
ステージへ通されている演算実行ユニット命令につい
て、それらは無効とされ後続パイプラインステージへま
だ通されていない連続する次の命令が適切な順序でパイ
プラインに沿って進行できるようにされる。
【0079】CICSマイクロプロセッサの第2のSB
B検出技術では、式および比較だけでなく前記した平均
も使用されない。替わりに、フェッチされた各後向き分
岐命令に対して、最初にBTB28内でSBB命令とし
て指示される。次に、前節で説明したようにフローが継
続される、すなわち、分岐の目的に対応する演算実行ユ
ニット命令のキュー30への到来が検出される。その
後、SBBがキュー30内に格納されるのはキュー30
が満杯とされるクロックサイクルよりも前すなわち後で
はないかどうかが確認される。ここでも、目的およ分岐
演算実行ユニット命令の両方が同時にキュー30内に格
納される場合には、BTB28内の表示は正確であるこ
とが確認され、さもなくば表示は不正確で前記したよう
に修正される。その後、この方法は前記したように継続
される、すなわち、ループが短い後向き分岐であれば発
明の方法で進められ、ループが長い後向き分岐を表す場
合には従来技術のように進められる。
【0080】前記したことから、当業者ならば本実施例
のさまざまな利点を理解できるであろう。例えば、さま
ざまな実施例に従ったマイクロプロセッサが短い後向き
分岐ループの2回以上の反復を1実行サイクルで実行す
ることができ、あるいは短い後向き分岐ループのさまざ
まな反復の部分に対応する命令を1サイクルで実行する
ことができる。その結果、短い後向き分岐を実行する場
合、各実行中に従来技術よりも多くの演算実行ユニット
が使用される。もう1つの利点として、当業者ならばさ
まざまな構成を使用して前記した機能を実施することが
できる。もう1つの利点として、当業者ならば前記した
機能を達成しながら本実施例を修正することができる。
例えば、8つの演算実行ユニットを有するマイクロプロ
セッサを開示したが、前記したようにこの数は増減する
ことができる。もう1つの例として、短い後向き分岐ル
ープの長さについて定めた前記定義はこのようなループ
内の演算実行ユニット命令数も変化できることを明示し
ている。事実、演算実行ユニット数の多いマイクロプロ
セッサおよび/もしくは演算実行ユニット命令数の少な
い短い後向き分岐ループに対して、そのループの2回以
上の反復を1クロックサイクルで実行することができ
る。本発明のシステムのその他の利点についても説明し
てきたが、それらは発明の範囲内に含まれるさまざまな
実施例を明示するものである。当業者ならば、さらに他
の例も確認できるであろう。したがって、実施例につい
て詳細に説明してきたが、これらの利点および例は、前
記説明をさまざまに置換、修正もしくは変更できること
を明示するものであり、それらは全て特許請求の範囲に
明記された発明の範囲の柔軟性を示すものである。
【0081】以上の説明に関して更に以下の項を開示す
る。 (1)マイクロプロセッサの動作方法であって、該方法
は、命令の短い後向き分岐ループをフェッチするステッ
プであって、命令の前記短い後向き分岐ループは分岐命
令および目的命令からなり、命令の前記短い後向き分岐
ループは演算実行ユニット命令の対応する短い後向き分
岐ループを有する前記ステップと、前記短い後向き分岐
命令が命令の前記短い後向き分岐ループをフェッチする
前記ステップの後の短い後向き分岐命令であることを確
認するステップと、前記フェッチングステップの後で命
令の前記短い後向き分岐ループを再フェッチすることな
く、演算実行ユニット命令の前記短い後向き分岐ループ
の複数の反復を複数のクロックサイクルにわたって実行
するステップと、を含み、前記実行ステップは、前記複
数のクロックサイクルのいくつかに、前記複数の反復の
最初の反復に対応する前記演算実行ユニット命令の第1
セットを実行するステップと、前記複数の反復の第2の
反復に対応する前記演算実行ユニット命令の第2セット
を実行するステップと、を含み、前記第2の反復は前記
第1の反復にすぐ続く、マイクロプロセッサの動作方
法。
【0082】(2)第1項記載の方法であって、さら
に、演算実行ユニット命令の前記短い後向き分岐ループ
を格納するステップを含み、前記格納ステップは、前記
実行ステップの前に、演算実行ユニット命令の前記短い
後向き分岐ループを整数Qの記憶セルを有するキュー内
へ格納するステップを含み、演算実行ユニット命令の前
記短い後向き分岐ループは整数Lの演算実行ユニット命
令を有し、前記整数Lは前記整数Qよりも小さい、方
法。
【0083】(3)第1項記載の方法であって、命令の
前記短い後向き分岐ループをフェッチする前記ステップ
は、complex instruction set
アーキテクチュア命令をフェッチするステップを含む、
方法。
【0084】(4)第3項記載の方法であって、前記演
算実行ユニット命令は前記命令セットアーキテクチュア
命令とは異なる、方法。
【0085】(5)第1項記載の方法であって、命令の
前記短い後向き分岐ループをフェッチする前記ステップ
は、reduced instrction setア
ーキテクチュア命令をフェッチするステップを含む、方
法。
【0086】(6)第5項記載の方法であって、前記演
算実行ユニット命令は前記命令セットアーキテクチュア
命令と同じである、方法。
【0087】(7)第1項記載の方法であって、さら
に、命令の前記短い後向き分岐ループをデコードして演
算実行ユニット命令の前記短い後向き分岐ループを形成
するステップを含む、方法。
【0088】(8)第1項記載の方法であって、命令の
短い後向き分岐ループをフェッチする前記ステップは、
さらに、命令の前記短い後向き分岐ループを第1のクロ
ックサイクルでフェッチするステップと、前記第1のク
ロックサイクルで、前記分岐命令の後で逐次的に方向づ
けされた付加命令をフェッチするステップと、前記第1
のクロックサイクルのすぐ後の第2のクロックサイクル
で、前記付加命令のすぐ後で逐次的に方向づけされた第
2群の命令をフェッチするステップと、を含む、方法。
【0089】(9)第8項記載の方法であって、前記複
数の反復を実行するステップは、第3のクロックサイク
ルで、前記短い後向き分岐ループの最後の反復を実行す
るステップと、さらに、前記第3のクロックサイクルの
後のクロックサイクルで、前記第2群の命令の少なくと
も1つの命令に対応する少なくとも1つの演算実行ユニ
ット命令を再フェッチすることなく実行するステップ
と、を含む、方法。
【0090】(10)第1項記載の方法であって、前記
短い後向き分岐ループは整数Lの前記演算実行ユニット
命令を有し、前記マイクロプロセッサは前記実行ステッ
プを実行する整数Eの演算実行ユニットを含み、前記整
数Lは前記整数Eよりも小さい、方法。
【0091】(11)第1項記載の方法であって、前記
短い後向き分岐ループは整数Lの前記演算実行ユニット
命令を有し、前記マイクロプロセッサは前記実行ステッ
プを実行する整数Eの演算実行ユニットを含み、前記整
数Lは前記整数Eよりも大きい、方法。
【0092】(12)第1項記載の方法であって、さら
に、演算実行ユニット命令の前記短い後向き分岐ループ
を格納するステップを含み、前記格納ステップは、前記
実行ステップの前に、演算実行ユニット命令の前記短い
後向き分岐ループを整数Qの記憶セルを有するキュー内
へ格納するステップを含み、前記実行ステップの前に、
さらに、演算実行ユニット命令の前記短い後向き分岐ル
ープを前記キューからスケジュール回路へ巡回式に送る
ステップを含む、方法。
【0093】(13)第12項記載の方法であって、さ
らに、前記実行ステップの前に、演算実行ユニット命令
の前記短い後向き分岐ループをスケジュールして実行す
るステップを含む、方法。
【0094】(14)マイクロプロセッサの動作方法で
あって、該方法は、命令の短い後向き分岐ループをフェ
ッチするステップであって、前記短い後向き分岐ループ
は分岐命令および目的命令からなり、命令の前記短い後
向き分岐ループは演算実行ユニット命令の対応する短い
後向き分岐ループを有する前記ステップと、前記短い後
向き分岐命令が命令の前記短い後向き分岐ループをフェ
ッチする前記ステップの後の短い後向き分岐命令である
ことを確認するフェッチステップと、演算実行ユニット
命令の前記短い後向き分岐ループを格納するステップで
あって、前記短い後向き分岐ループは分岐演算実行ユニ
ット命令および目的演算実行ユニット命令を含む整数L
の演算実行ユニット命令を有し、演算実行ユニット命令
の前記短い後向き分岐ループを整数Qの記憶セルを有す
るキュー内へ格納するステップを含む前記格納ステップ
と、演算実行ユニット命令の前記短い後向き分岐ループ
を前記キューからスケジュール回路へ巡回式に通信する
ステップと、前記格納ステップおよび前記通信ステップ
の後で命令の前記短い後向き分岐ループを再フェッチす
ることなく、演算実行ユニット命令の前記短い後向き分
岐ループの複数の反復を複数のクロックサイクルにわた
って実行するステップと、を含み、前記実行ステップ
は、前記複数のクロックサイクルのいくつかに、前記複
数の反復の最初の反復に対応する前記演算実行ユニット
命令の第1セットを実行するステップと、前記複数の反
復の第2の反復に対応する前記演算実行ユニット命令の
第2セットを実行するステップと、を含み、前記第2の
反復は前記第1の反復にすぐ続く、マイクロプロセッサ
の動作方法。
【0095】(15)第14項記載の方法であって、命
令の前記短い後向き分岐ループをフェッチする前記ステ
ップは、complex instruction s
etアーキテクチュア命令をフェッチするステップを含
む、方法。
【0096】(16)第15項記載の方法であって、前
記演算実行ユニット命令は前記命令セットアーキテクチ
ュア命令とは異なる、方法。
【0097】(17)第14項記載の方法であって、命
令の前記短い後向き分岐ループをフェッチする前記ステ
ップは、reduced instruction s
etアーキテクチュア命令をフェッチするステップを含
む、方法。
【0098】(18)第17項記載の方法であって、前
記演算実行ユニット命令は前記命令セットアーキテクチ
ュア命令と同じである、方法。
【0099】(19)第14項記載の方法であって、命
令の短い後向き分岐ループをフェッチする前記ステップ
は、さらに、命令の前記短い後向き分岐ループを第1の
クロックサイクルでフェッチするステップと、前記第1
のクロックサイクルで、前記分岐命令の後で逐次的に方
向づけされた付加命令をフェッチするステップと、前記
第1のクロックサイクルのすぐ後の第2のクロックサイ
クルで、前記付加命令のすぐ後に逐次的に方向づけされ
た第2群の命令をフェッチするステップと、を含む、方
法。
【0100】(20)第19項記載の方法であって、前
記複数の反復を実行する前記ステップは、第3のクロッ
クサイクルで、前記短い後向き分岐ループの最後の反復
を実行するステップと、さらに、前記第3のクロックサ
イクルの後のクロックサイクルで、前記第2群の命令の
少なくとも1つの命令に対応する少なくとも1つの演算
実行ユニット命令を再フェッチすることなく実行するス
テップと、を含む、方法。
【0101】(21)マイクロプロセッサの動作方法で
あって、該方法は、命令の短い後向き分岐ループを1以
上の整数Cのクロックサイクルにわたってフェッチする
ステップであって、前記短い後向き分岐ループは分岐命
令および目的命令からなり、命令の前記短い後向き分岐
ループは演算実行ユニット命令の対応する短い後向き分
岐ループを有する前記ステップと、前記短い後向き分岐
命令が命令の前記短い後向き分岐ループをフェッチする
前記ステップの後の短い後向き分岐命令であることを確
認するステップと、演算実行ユニットの前記短い後向き
分岐ループの複数の反復を複数のクロックサイクルにわ
たって実行するステップであって、前記マイクロプロセ
ッサは前記実行ステップを実行する整数Eの演算実行ユ
ニットを含み、前記複数のクロックサイクルの各サイク
ル中に前記各演算実行ユニットに対して演算実行ユニッ
トタイムスロットが定義される前記実行ステップと、を
含み、前記複数の反復の各々を実行する前記演算実行ユ
ニットタイムスロットの平均数は前記整数Cと前記整数
Eの積よりも小さい、方法。
【0102】(22)第21項記載の方法であって、さ
らに、演算実行ユニット命令の前記短い後向き分岐ルー
プを格納するステップを含み、前記格納ステップは、前
記実行ステップの前に、前記短い後向き分岐ループを整
数Qの記憶セルを有するキュー内へ格納するステップを
含み、前記短い後向き分岐ループは整数Lの演算実行ユ
ニット命令を有し、前記整数Lは前記整数Qよりも小さ
い、方法。
【0103】(23)第21項記載の方法であって、命
令の前記短い後向き分岐ループをフェッチする前記ステ
ップは、complex instruction s
etアーキテクチュア命令をフェッチするステップを含
む、方法。
【0104】(24)第23項記載の方法であって、前
記演算実行ユニット命令は前記命令セットアーキテクチ
ュア命令とは異なる、方法。
【0105】(25)第21項記載の方法であって、命
令の前記短い後向き分岐ループをフェッチする前記ステ
ップは、reduced instrction se
tアーキテクチュア命令をフェッチするステップを含
む、方法。
【0106】(26)第25項記載の方法であって、前
記演算実行ユニット命令は前記命令セットアーキテクチ
ュア命令と同じである、方法。
【0107】(27)第21項記載の方法であって、さ
らに、命令の前記短い後向き分岐ループをデコードして
演算実行ユニット命令の前記短い後向き分岐ループを形
成するステップを含む、方法。
【0108】(28)第21項記載の方法であって、命
令の短い後向き分岐ループをフェッチする前記ステップ
は、さらに、命令の前記短い後向き分岐ループを第1の
クロックサイクルでフェッチするステップと、前記第1
のクロックサイクルで、前記分岐命令の後に逐次的に方
向づけされた付加命令をフェッチするステップと、前記
第1のクロックサイクルのすぐ後の第2のクロックサイ
クルで、前記付加命令のすぐ後に逐次的に方向づけされ
た第2群の命令をフェッチするステップと、を含む、方
法。
【0109】(29)第28項記載の方法であって、前
記複数の反復を実行する前記ステップは、第3のクロッ
クサイクルで、前記短い後向き分岐ループの最後の反復
を実行するステップを含み、さらに、前記第3のクロッ
クサイクルの後のクロックサイクルで、前記第2群の命
令の少なくとも1つの命令に対応する少なくとも1つの
演算実行ユニット命令を再フェッチすることなく実行す
るステップと、を含む、方法。
【0110】(30)第21項記載の方法であって、前
記短い後向き分岐ループは整数Lの演算実行ユニット命
令を有し、前記整数Lは前記整数Eよりも小さい、方
法。
【0111】(31)第21項記載の方法であって、前
記短い後向き分岐ループは整数Lの前記演算実行ユニッ
ト命令を有し、前記整数Lは前記整数Eよりも大きい、
方法。
【0112】(32)第21項記載の方法であって、さ
らに、演算実行ユニット命令の前記短い後向き分岐ルー
プを格納するステップを含み、前記格納ステップは、前
記実行ステップの前に、前記短い後向き分岐ループを整
数Qの記憶セルを有するキュー内へ格納するステップを
含み、前記実行ステップの前に、さらに、演算実行ユニ
ット命令の前記短い後向き分岐ループを前記キューから
スケジュール回路へ巡回式に送るステップを含む、方
法。
【0113】(33)第21項記載の方法であって、さ
らに、前記実行ステップの前に、演算実行ユニット命令
の前記短い後向き分岐ループをスケジュールして実行す
るステップを含む、方法。
【0114】(34)マイクロプロセッサであって、該
マイクロプロセッサは、命令の前記短い後向き分岐ルー
プをフェッチする回路であって、前記短い後向き分岐ル
ープは分岐命令および目的命令からなり命令の前記短い
後向き分岐ループは演算実行ユニット命令の対応する短
い後向き分岐ループを有する前記回路と、前記短い後向
き分岐命令が命令の前記短い後向き分岐ループをフェッ
チした後の短い後向き分岐命令であることを確認する回
路と、演算実行ユニット命令の前記短い後向き分岐ルー
プを格納した後で前記短い後向き分岐ループを再フェッ
チすることなく、演算実行ユニット命令の前記短い後向
き分岐ループの複数の反復を複数のクロックサイクルに
わたって実行する回路と、を含み、前記実行回路は、前
記複数のクロックサイクルのいくつかに、前記複数の反
復の第1の反復に対応する前記演算実行ユニット命令の
第1セットを実行する回路と、前記複数の反復の第2の
反復に対応する前記演算実行ユニット命令の第2セット
を実行する回路と、を含み、前記第2の反復は前記第1
の反復にすぐ続く、マイクロプロセッサ。
【0115】(35)第34項記載のマイクロプロセッ
サであって、さらに、演算実行ユニット命令の前記短い
後向き分岐ループを格納する回路を含み、前記格納回路
は整数Qの記憶セルを有するキューを含み、前記短い後
向き分岐ループは整数Lの演算実行ユニット命令を有
し、前記整数Lは前記整数Qよりも小さい、マイクロプ
ロセッサ。
【0116】(36)第34項記載のマイクロプロセッ
サであって、命令の前記短い後向き分岐ループをフェッ
チする前記回路は、complex instruct
ion setアーキテクチュア命令をフェッチする回
路を含む、マイクロプロセッサ。
【0117】(37)第36項記載のマイクロプロセッ
サであって、前記演算実行ユニット命令は前記命令セッ
トアーキテクチュア命令とは異なる、マイクロプロセッ
サ。
【0118】(38)第34項記載のマイクロプロセッ
サであって、命令の前記短い後向き分岐ループをフェッ
チする前記回路は、reduced instruct
ion setアーキテクチュア命令をフェッチする回
路を含む、マイクロプロセッサ。
【0119】(39)第38項記載のマイクロプロセッ
サであって、前記演算実行ユニット命令は前記命令セッ
トアーキテクチュア命令と同じである、マイクロプロセ
ッサ。
【0120】(40)第34項記載のマイクロプロセッ
サであって、さらに、命令の前記短い後向き分岐ループ
をデコードして演算実行ユニット命令の前記短い後向き
分岐ループを形成する回路を含む、マイクロプロセッ
サ。
【0121】(41)第34項記載のマイクロプロセッ
サであって、命令の前記短い後向き分岐ループをフェッ
チする前記回路は、命令の前記短い後向き分岐ループを
第1のクロックサイクルでフェッチし、さらに、前記第
1のクロックサイクルで、前記分岐命令の後に逐次的に
方向づけられた付加命令をフェッチし、前記フェッチ回
路は、さらに、前記第1のクロックサイクルの後の第2
のクロックサイクルで、前記分岐命令のすぐ後に逐次的
に方向づけられた第2群の命令をフェッチする、マイク
ロプロセッサ。
【0122】(42)第41項記載のマイクロプロセッ
サであって、前記複数の反復を実行する前記回路は、前
記短い後向き分岐ループの最後の反復を第3のクロック
サイクルで実行し、前記第3のクロックサイクルの後の
クロックサイクルで、前記実行回路は、さらに、前記第
2群の命令の少なくとも1つの命令に対応する少なくと
も1つの演算実行ユニット命令を再フェッチすることな
く実行する、マイクロプロセッサ。
【0123】(43)第34項記載のマイクロプロセッ
サであって、さらに、演算実行ユニット命令の前記短い
後向き分岐ループを格納する回路を含み、前記格納回路
は、整数Qの記憶セルを有するキューを含み、さらに、
前記実行回路による演算実行ユニット命令の前記短い後
向き分岐ループの前記複数の反復を実行する前に、演算
実行ユニット命令の前記短い後向き分岐ループを前記キ
ューからスケジュール回路へ巡回式に送る前記回路を含
む、マイクロプロセッサ。
【0124】(44)マイクロプロセッサであって、該
マイクロプロセッサは、命令の短い後向き分岐ループを
1以上の整数Cのクロックサイクルにわたってフェッチ
する回路であって、前記短い後向き分岐ループは分岐命
令および目的命令からなり、命令の前記短い後向き分岐
ループは演算実行ユニット命令の対応する短い後向き分
岐ループを有する前記回路と、命令の前記短い後向き分
岐命令が前記フェッチ回路によりフェッチされた後で、
前記短い後向き分岐命令が短い後向き分岐命令であるこ
とを確認する回路と、演算実行ユニット命令の前記短い
後向き分岐ループを格納する回路と、演算実行ユニット
命令の前記短い後向き分岐ループの複数の反復を複数の
クロックサイクルにわたって実行する回路であって、前
記実行回路は前記複数のクロックサイクルの各サイクル
中に前記各演算実行ユニットに対して演算実行ユニット
タイムスロットが定義されるように実行する整数Eの演
算実行ユニットを含み、前記複数の反復の各々を実行す
る前記演算実行ユニットタイムスロットの平均数は前記
整数Cと前記整数Eの積よりも小さい、マイクロプロセ
ッサ。
【0125】(45)好ましい実施例の方法では、本方
法によりマイクロプロセッサ36が作動される。本方法
は、命令の短い後向き分岐ループ34をフェッチし1
4、短い後向き分岐ループは分岐命令SSBおよび目的
命令TRからなっている。また、本方法により、短い後
向き分岐命令がフェッチした後の短い後向き分岐命令で
あることが確認される。さらに、本方法により演算実行
ユニット命令の短い後向き分岐ループが格納される3
0。この短い後向き分岐ループは分岐演算実行ユニット
命令SSBおよび目的演算実行ユニット命令TRを含ん
でいる。さらに、格納ステップの後で短い後向き分岐ル
ープを再フェッチすることなく、本方法により演算実行
ユニット命令の短い後向き分岐ループの複数の反復が複
数のクロックサイクルにわたって実行される22。さら
に、複数のクロックサイクルのいくつか(クロックサイ
クル10)に対して、実行ステップが第1の反復に対応
する演算実行ユニット命令の第1セットと第2の反復に
対応する演算実行ユニット命令の第2セットの両方を実
行し、第2の反復は第1の反復にすぐ続く。
【図面の簡単な説明】
【図1】短い後向き分岐命令ループをより効率的に処理
するように修正することができるマイクロプロセッサパ
イプラインを示す図。
【図2】短い後向き分岐命令ループを含む命令シーケン
スを示す図。
【図3】図1の命令パイプラインを通る短い後向き分岐
命令シーケンスのタイミング図。
【図4】本発明の実施例に従って短い後向き分岐命令ル
ープをより効率的に処理するように修正した図1のマイ
クロプロセッサパイプラインを示す図。
【図5】シーケンスが演算実行ユニット数よりも少数の
命令を含む、図4の命令パイプラインを通る短い後向き
分岐命令シーケンスのタイミング図。
【図6】短い後向き分岐命令を図4のキュー30からス
ケジュールステージ18へ与えるキュー回路の模式図。
【図7】図5のクロックサイクル8中に、スケジュール
ステージ18へループ命令を与えてスケジュールした後
の図6の模式図。
【図8】図5のクロックサイクル9中に、スケジュール
ステージ18へループ命令を与えてスケジュールした後
の図6の模式図。
【図9】キューが演算実行ユニット数よりも多い命令を
含む、図4の命令パイプラインを通る短い後向き分岐命
令シーケンスのタイミング図。
【符号の説明】
10,36 命令処理システム 12 パイプライン 14 命令フェッチステージ 16 デコードステージ 18 スケジュールステージ 20 オペランド読取りステージ 22 実行ステージ 24 段階分け/ライトバックステージ 26 命令キャッシュ回路 28 分岐目的バッファ 30 キュー 32 命令ストリーム 34 ループ 38 SSBおよびTR命令検出回路 42a−42h 記憶セル 44a−44h マルチプレクサ 46 制御回路

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 マイクロプロセッサの動作方法であっ
    て、該方法は、命令の短い後向き分岐ループをフェッチ
    するステップであって、命令の前記短い後向き分岐ルー
    プは分岐命令および目的命令からなり、命令の前記短い
    後向き分岐ループは演算実行ユニット命令の対応する短
    い後向き分岐ループを有するフェッチステップと、前記
    短い後向き分岐命令が命令の前記短い後向き分岐ループ
    をフェッチする前記ステップの後の短い後向き分岐命令
    であることを確認するステップと、前記フェッチングス
    テップの後で命令の前記短い後向き分岐ループを再フェ
    ッチすることなく、演算実行ユニット命令の前記短い後
    向き分岐ループの複数の反復を複数のクロックサイクル
    にわたって実行するステップと、を含み、前記実行ステ
    ップは、前記複数のクロックサイクルのいくつかに、前
    記複数の反復の最初の反復に対応する前記演算実行ユニ
    ット命令の第1セットを実行するステップと、前記複数
    の反復の第2の反復に対応する前記演算実行ユニット命
    令の第2セットを実行するステップと、を含み、前記第
    2の反復は前記第1の反復にすぐ続く、マイクロプロセ
    ッサの動作方法。
  2. 【請求項2】 マイクロプロセッサであって、該マイク
    ロプロセッサは、命令の短い後向き分岐ループをフェッ
    チする回路であって、前記短い後向き分岐ループは分岐
    命令および目的命令からなり、命令の前記短い後向き分
    岐ループは演算実行ユニット命令の対応する短い後向き
    分岐ループを有する前記フェッチ回路と、前記短い後向
    き分岐命令が命令の前記短い後向き分岐ループをフェッ
    チした後の短い後向き分岐命令であることを確認するス
    テップと、演算実行ユニット命令の前記短い後向き分岐
    ループを格納した後で前記短い後向き分岐ループを再フ
    ェッチすることなく、演算実行ユニット命令の前記短い
    後向き分岐ループの複数の反復を複数のクロックサイク
    ルにわたって実行する回路と、を含み、前記実行回路
    は、前記複数のクロックサイクルのいくつかに、前記複
    数の反復の最初の反復に対応する前記実行ユニット命令
    の第1セットを実行する回路と、前記複数の反復の第2
    の反復に対応する前記実行ユニット命令の第2セットを
    実行する回路と、を含み、前記第2の反復は前記第1の
    反復にすぐ続く、マイクロプロセッサ。
JP9301180A 1996-10-31 1997-10-31 マイクロプロセッサおよび動作方法 Pending JPH10177482A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US029230 1979-04-11
US2923096P 1996-10-31 1996-10-31

Publications (1)

Publication Number Publication Date
JPH10177482A true JPH10177482A (ja) 1998-06-30

Family

ID=21847948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9301180A Pending JPH10177482A (ja) 1996-10-31 1997-10-31 マイクロプロセッサおよび動作方法

Country Status (4)

Country Link
US (1) US5951679A (ja)
EP (1) EP0840208B1 (ja)
JP (1) JPH10177482A (ja)
DE (1) DE69718278T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505295B1 (en) * 1997-02-17 2003-01-07 Hitachi, Ltd. Data processor
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
WO2000055724A1 (de) * 1999-03-17 2000-09-21 Infineon Technologies Ag Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7421572B1 (en) * 1999-09-01 2008-09-02 Intel Corporation Branch instruction for processor with branching dependent on a specified bit in a register
US6598155B1 (en) 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
JP2001195302A (ja) * 1999-11-30 2001-07-19 Texas Instr Inc <Ti> 命令ループ・バッファ
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7165257B2 (en) 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7032226B1 (en) * 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7065096B2 (en) * 2000-06-23 2006-06-20 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US7649901B2 (en) 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7139901B2 (en) 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7502876B1 (en) 2000-06-23 2009-03-10 Mips Technologies, Inc. Background memory manager that determines if data structures fits in memory with memory state transactions map
US7058064B2 (en) 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7042887B2 (en) 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6829702B1 (en) * 2000-07-26 2004-12-07 International Business Machines Corporation Branch target cache and method for efficiently obtaining target path instructions for tight program loops
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6604169B2 (en) 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6601160B2 (en) 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US6552625B2 (en) 2001-06-01 2003-04-22 Microchip Technology Inc. Processor with pulse width modulation generator with fault input prioritization
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
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
US7249248B2 (en) * 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
JP4610218B2 (ja) * 2004-03-30 2011-01-12 ルネサスエレクトロニクス株式会社 情報処理装置
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US20080229074A1 (en) * 2006-06-19 2008-09-18 International Business Machines Corporation Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
US20070294519A1 (en) * 2006-06-19 2007-12-20 Miller Laura F Localized Control Caching Resulting In Power Efficient Control Logic
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
US9110683B2 (en) * 2008-08-15 2015-08-18 Apple Inc. Predicting branches for vector partitioning loops when processing vector instructions
US11294681B2 (en) 2019-05-31 2022-04-05 Texas Instruments Incorporated Processing device with a microbranch target buffer for branch prediction using loop iteration count
US20230195517A1 (en) * 2021-12-22 2023-06-22 Advanced Micro Devices, Inc. Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US20240028339A1 (en) * 2022-07-25 2024-01-25 Apple Inc. Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0743647B2 (ja) * 1982-03-18 1995-05-15 横河電機株式会社 データ処理装置における命令ループ捕捉機構
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
JP2690921B2 (ja) * 1987-12-25 1997-12-17 株式会社日立製作所 情報処理装置
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge
DE69129872T2 (de) * 1990-03-27 1999-03-04 Philips Electronics Nv Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
EP0651320B1 (en) * 1993-10-29 2001-05-23 Advanced Micro Devices, Inc. Superscalar instruction decoder
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold

Also Published As

Publication number Publication date
DE69718278T2 (de) 2003-08-21
DE69718278D1 (de) 2003-02-13
EP0840208A3 (en) 1999-04-21
US5951679A (en) 1999-09-14
EP0840208A2 (en) 1998-05-06
EP0840208B1 (en) 2003-01-08

Similar Documents

Publication Publication Date Title
JPH10177482A (ja) マイクロプロセッサおよび動作方法
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
US5606676A (en) Branch prediction and resolution apparatus for a superscalar computer processor
US5958041A (en) Latency prediction in a pipelined microarchitecture
US6212623B1 (en) Universal dependency vector/queue entry
US6212622B1 (en) Mechanism for load block on store address generation
US6308259B1 (en) Instruction queue evaluating dependency vector in portions during different clock phases
US7222227B2 (en) Control device for speculative instruction execution with a branch instruction insertion, and method for same
US7937574B2 (en) Precise counter hardware for microcode loops
EP0853785B1 (en) Self-modifying code handling system
US5828873A (en) Assembly queue for a floating point unit
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
JP2000029701A (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
US6463524B1 (en) Superscalar processor and method for incrementally issuing store instructions
US20060184772A1 (en) Lookahead mode sequencer
US5930492A (en) Rapid pipeline control using a control word and a steering word
EP1121635B1 (en) Mechanism for load block on store address generation and universal dependency vector
WO2010065716A1 (en) Methods and apparatus for performing jump operations in a digital processor
US6708267B1 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US8028151B2 (en) Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines
US6604191B1 (en) Method and apparatus for accelerating instruction fetching for a processor
WO2001027749A1 (en) Apparatus and method for caching alignment information
US6546478B1 (en) Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US5887185A (en) Interface for coupling a floating point unit to a reorder buffer