JP2003263313A - デジタルプロセッサおよび命令の選択方法 - Google Patents

デジタルプロセッサおよび命令の選択方法

Info

Publication number
JP2003263313A
JP2003263313A JP2002352041A JP2002352041A JP2003263313A JP 2003263313 A JP2003263313 A JP 2003263313A JP 2002352041 A JP2002352041 A JP 2002352041A JP 2002352041 A JP2002352041 A JP 2002352041A JP 2003263313 A JP2003263313 A JP 2003263313A
Authority
JP
Japan
Prior art keywords
instruction
branch
target
instructions
digital processor
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
JP2002352041A
Other languages
English (en)
Inventor
Sivaram Krishnan
シバラム・クリシュナン
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2003263313A publication Critical patent/JP2003263313A/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Landscapes

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

Abstract

(57)【要約】 【課題】 複雑な分岐予測を利用せずに分岐ペナルティ
を低減するための技術。 【解決手段】 データプロセッサは、分岐命令を有する
命令ストリームを実行するための命令パイプラインを少
なくとも1つ備えている。分岐命令の選択、すなわちネ
クストインライン命令またはターゲット命令の選択は、
分岐命令をデコードする間に生成される制御バイパス信
号による選択に役立てられている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはデジタ
ルプロセッサアーキテクチャに関し、更に詳細にはパイ
プライン型のデジタルプロセッサ内で分岐ペナルティを
低減するメカニズムに関する。
【0002】
【従来の技術】デジタルプロセッサの性能を増大するに
は様々な技術および設計が伴う。そのような技術の一例
は、メインメモリアクセスから生じるボトルネックを緩
和するための小さくて速いメモリ(すなわちキャッシ
ュ)の使用である。もう一つは、並列処理のコンセプト
を使った命令実行ユニットを設計して、命令実行タスク
をオーバーラップすることである。そのような命令実行
ユニットの設計は、一般的には「パイプライン」設計と
呼ばれ、通常少なくともフェッチ、デコード、および、
実行ステージを含んでいる。パイプライン設計によっ
て、命令が、メモリ内で現れる順番に実行可能となる
が、初期命令がフェッチ、デコード、および実行段階を
終了する前に、新しい命令がこれらの段階を開始可能と
なる。並列処理におけるこのような形式により性能はほ
ぼ向上可能となるが、ある困難さなくして向上不可能で
ある。
【0003】パイプライン設計を含むデジタルプロセッ
サの最適性能は、そのパイプラインが十分に保持される
ことを必要とする。入力ステージが特定サイクルで使用
されていない場合には、この未使用が全てのパイプライ
ンを通して最終的に広まってパイプライン効率を損なう
だろう。命令が、命令シーケンス内で全体的に十分近く
に生じる先行命令のデータまたはオペランドに依存し
て、矛盾する結果の可能性を上げる時に、パイプライン
型のデジタルプロセッサの最適性能に対する1つの障害
が起こる。このような障害を回避する一つのアプローチ
は「データバイパス」、「データ転送」、または「オペ
ランド転送」と呼ばれ、「データバイパス」、「データ
転送」または「オペランド転送」がプロセッサの通常デ
ータパスを通して利用可能になる前に、最後のユーザに
データを送ることを伴う。
【0004】最適性能に対する別の障害は、パイプライ
ン設計の悩みの種である条件付き分岐である。なぜなら
ば、分岐ターゲットが決定されるまで、条件付き分岐が
一時的にパイプラインを停止させることができるからで
ある。この問題を軽減するためによく利用されるアプロ
ーチは遅延分岐および分岐予測を伴っている。要する
に、遅延分岐の背後にあるコンセプトは、パイプライン
に分岐命令を導入することであり、そのパイプライン
は、分岐が選ばれる前に命令ストリーム用に実行される
ネクストインライン命令に続く。これにより、ブロック
の最終命令が実行されている間に、分岐命令が、分岐を
決定する手順を設定開始可能となる。
【0005】分岐予測は、どの分岐経路を選ぶのかとい
う見積もりである。その見積もりに基づいて、見積もら
れた命令ストリームに対して分岐がなされる。その見積
もりが正しくない場合には、見積もられた命令ストリー
ムが、正しい命令ストリームを選んで除去されなければ
ならない。そのような見積もりが大部分正しいと、分岐
予測は非常に効率的になることがある。
【0006】
【発明が解決しようとする課題】一般的に、分岐命令は
2つの異なったタイプ:単純または複雑なタイプからな
る。単純な分岐命令は、通常、分岐を決定する条件がデ
コードの直ぐ前に、または、デコード中に知られる命令
である。比較命令の何らかの形式によって先行される分
岐命令のとおり、無条件の分岐がこのタイプから成る。
複雑な分岐命令は、分岐命令が実際に実行されるまで、
分岐を選ぶ条件が知らされない命令である。より速いク
ロックスピードでデジタルプロセッサを動かすためにパ
イプラインの奥行きが増大されると、複雑な分岐命令に
よって課されるペナルティをもたらすことになるが、分
岐予測によってそのペナルティをある程度まで緩和でき
る。
【0007】分岐予測は複雑であり、そして設計および
検査に対して高価になることがある。分岐予測によって
達成される性能利益は、予測アルゴリズムの効率に依存
し、その予測アルゴリズムの多くは、相対的に大容量の
記憶装置と、非常に高価で複雑なハードウェアとを利用
している。
【0008】従って、複雑な分岐予測を利用せずに分岐
ペナルティを低減するための技術が、パイプライン設計
技術を使用した高速デジタルプロセッサの設計および動
作に対して顕著な利点になる。
【0009】
【課題を解決するための手段】パイプライン設計におけ
る並列処理を利用した実行ユニットを備えたデジタルプ
ロセッサに関連して記述される。通常、1つの分岐命令
は、何らかの条件に基づいて2つ(時にはそれ以上)の
命令のうち1つに移す。2つの命令の間で選択する分岐
が選ばれる前に、1つの分岐に従う2つの命令の位置
(すなわちアドレス)が知らされることを、本発明は利
用している。それ故に、分岐命令によって示された分岐
決定を表示する制御信号が最も速く可能な瞬間に転送さ
れて、分岐に適用するための2つの命令の何れかを選択
して分岐を達成する。
【0010】本発明は、データバイパス内で使用される
技術と類似の技術に適用する。2つの命令の間の依存
性、すなわち、命令ストリーム内の先行命令と後続命令
との間の依存性が、後続命令をデコードし続けている時
に知らされることに、データバイパスの技術は頼ってい
る。レジストされたデータと、先行命令によって利用可
能なデータとは、たとえば、マルチプレクシング機能に
適用される。次の命令がレジストされたデータを使用で
きる場合には、そのデータはマルチプレクシング機能に
よって選択および提供される。しかしながら、レジスタ
を使用することが、おそらく正しいデータでまだ書き込
まれていなかったために矛盾した結果を引き起こす場合
には、先行命令によって作り出されたデータがマルチプ
レクシング機能により選択され、レジスタを「バイパス
する」ために使用され、そして利用可能になる。データ
バイパス技術は、データ値が時間の前に知らされること
に頼っている。
【0011】それ故に、本発明は、分岐が選択した命令
が時間の前に知らされること、すなわち、分岐条件が計
算されて初めて知らされるのが選択であることを利用し
ている。このように、本発明によれば、分岐が決定しな
ければならない2つの命令がマルチプレクサに適用され
る。マルチプレクサによってなされた選択は、分岐命令
に基づく条件が知らされる時に作り出されるバイパス制
御信号により制御される。単純な分岐命令に対して、そ
の条件は、パイプラインのデコードステージの間で知ら
され、それ故に、パイプラインに適用するための適切な
命令を選択するために使用される。複雑な分岐命令に対
して、バイパス制御信号は、遅延の少なくとも1サイク
ルを必要とするので、第1の実行ステージにより作り出
されるだろう。遅延における少なくとも1サイクルを必
要とする。
【0012】代わりの態様では、複雑な命令によって作
り出される1サイクル遅延は、2つの命令における部分
的なデコードを提供し、パイプラインの入力に対して部
分的にデコードされた命令をマルチプレクシングするこ
とにより最小化され得る。
【0013】本発明によって達成される利点のうちの1
つは、これまでに出くわした分岐ペナルティが緩和され
得ることである。さらに、ターゲット命令のプリデコー
ドまたは部分的なデコードが必要である場合には、この
ことが回路系における最小数の付加物だけをもたらし得
る。第2のデコーダが何らかの複雑さをハードウェアに
加え、そして一方、オリジナルなデコードロジックのレ
プリカを伴うことがもっともありそうに思われる。分岐
プレディクターの使用は完全に新しい設計を必要とす
る。
【0014】本発明におけるこれらおよび他の利点は、
発明の詳細に記述され、添付図面に関して選ばれた以下
を読めば、当業者にとって明らかになるだろう。
【0015】
【発明の実施の形態】次に、本発明における実施の形態
を説明する前に、専門用語の説明が、本発明における以
下の記載を理解する際に役立つだろう。第1に、分岐が
選ばれた場合には「ターゲット」命令、または、分岐が
選ばれなかった場合には「ネクストインライン」命令の
何れかによって、分岐命令が続けられる。第2に、分岐
命令は、「単純な」分岐命令または「複雑な」分岐命令
の何れかになる。単純な分岐命令は、以前に決定された
条件(たとえば比較命令によって)に、または、分岐命
令に潜在する条件(たとえば無条件命令)に分岐の決定
が依存するものである。複雑な分岐命令は、分岐命令の
実行の間に分岐決定が行われる(たとえば、比較命令が
分岐命令の一部分である)ものである。そこで、頭の中
でこのような専門用語を使って、本発明の実施の形態が
記述される。
【0016】さて、図1を参照すると、ブロック図の形
式で、規定されたインタフェースに繋がるプロセッサ、
モジュール、または機能ユニットの集合体として記述さ
れることもあるデジタルプロセッサシステム10が例示
されている。機能ユニットのそれぞれは、回路系の大き
な集合体から成ることもあり、そして、サイズまたは構
成の点で顕著に変わることもある。その回路系の特性は
幾分大ざっぱに規定されている。以下で非常に詳細に説
明されるこれらの機能ユニットは、メモリからの命令お
よびデータをフェッチし、フェッチされた命令を予備的
に処理し、実行されるべき命令をスケジューリングし、
その命令を実行し、メモリ処理を管理し、および、外部
回路系およびデバイス(図示せず)にインタフェースす
る機能を実行する。
【0017】図1が示すように、デジタルプロセッサシ
ステム10はバスインタフェースユニット(BIU)1
2を備え、バスインタフェースユニット12は、メイン
メモリ(図示せず)に接続するシステムバス14へのリ
クエスト、および、システムバス14からのリクエスト
を処理するように動作する。命令フローユニット(IF
U)16はプロセッサシステムのパイプラインの前端に
あり、そして、フェッチ、プリデコーダ(使用された場
合)、デコーダ、イシュー、および、分岐動作を制御す
る。実行ユニット(EU)18は、浮動小数点および/
または整数の計算のような演算と、ビットシフトおよび
シャッフル操作と、他のデータ動作、および、整数およ
びマルチメディア命令を処理するために必要な操作とを
行う。メインプロセッサのデータパスは命令キャッシュ
ユニット(ICU)20を備えている。
【0018】さらに、ロード/ストアユニット(LS
U)22は全てのメモリ命令を処理し、データキャッシ
ュ制御ユニット(DCU)24はデータキャッシュ(図
示せず)とデータ・トランスレーション・ルッカサイド
・バッファ(図示せず)とを管理する。一般的な実施の
形態では、特定の構成成分および集積密度は、特別なア
プリケーションの要求を満たすように選択された設計選
択の問題であるけれども、図1で示される機能ユニット
が単一の集積回路内に集積されることもある。
【0019】簡略化されたブロック図を例示する図2
は、外部インタフェーシングユニットのみならず内部ブ
ロックを含めて、IFU16を実行するハードウェアリ
ソースを示す。図2が示すように、動作に従ってIFU
16を次の機能ブロックに分割できる:命令キャッシュ
制御ユニット(ICC)30,フェッチユニット(F
E)32,分岐ユニット(BR)34,デコーダ36,
パイプライン制御ユニット38,レジスタファイル4
0,およびパイプファイル42。
【0020】IFU16は、プロセッサシステム10の
範囲内で命令およびデータのフローを調整するように動
作する。その主要な動作は、フェッチユニット32を使
ってICU20からの命令をフェッチし、デコーダ36
内で命令をデコードすることである。IFU16は命令
の入力依存性をチェックし、レジスタファイル40から
オペランドを読み出し、デコードされた命令とそのオペ
ランドとを実行ユニット(たとえばEU18とLSU2
2)に送る。さらに、キャッシュミスの場合にはICU
20内の命令キャッシュをより多くの命令で満たすため
に、IFU16は、システムバス14(図1)を介して
外部またはメインメモリ(図示せず)へのアクセス用
に、BIU12に接続されている。
【0021】デジタルプロセッサシステム10内での順
序付け役割のため、IFU16は、殆ど全ての他の機能
ユニットに接続するだろう。IFU16とBIU12と
の間のインタフェースは、命令キャッシュにロードする
命令を初期化するだろう。以下説明されるように、IF
U16とEU18とLSU22との間のインタフェース
は、本発明に関連されるものを含めて、命令、オペラン
ド、結果、および制御信号を送ると共に受け取るための
パスを提供して命令の実行を可能にする。これらのイン
タフェースに加えて、適切なハンドラーを起動するため
に、IFU16はまた、受け取られた外部割込の間で何
らかの内部的例外を伴ってサンプリングすると共にアー
ビトレートする割込コントローラ(図示せず)から様々
な外部割込信号を受け取ることもある。
【0022】パイプファイル42は、実行ユニットから
結果を収集するように動作し、その結果をレジスタファ
イル40に戻して書き込む。ひとたび命令がデコードさ
れると、パイプライン制御ユニット38は、パイプライ
ンへの命令の適用に注意し、残ったパイプラインステー
ジを通して命令の実行を監視する。パイプライン制御ユ
ニット38の主要な機能は、命令がスムーズかつ正確に
実行されていることを確保し、そして、(i) ソースオペ
ランドが準備できるまで、または、必要とされる時にソ
ースオペランドが準備可能になるまで、命令がデコーダ
36内で保持されること、(ii)内部/外部イベントのみ
ならず命令によって課されるシンクロナイゼイションお
よびシリアライゼイション要件が観測されること、およ
び、(iii) データオペランド/テンポラリ結果が正確に
転送されることを確保する。
【0023】好適には、デジタルプロセッサシステム1
0は「準備ターゲット」(PT)命令を使ってターゲッ
ト命令のアドレスを計算する。PT命令がデコードされ
ると、BR34は、プログラムカウンタ(図示せず)の
内容を、ターゲットアドレスを計算するためのEU18
に送る。その結果が、BR34のインラインバッファ領
域(IBA)35内に格納される。その後、BR34が
別の方法で動いていない時に、ターゲットアドレスは、
FE32に送られ、FE32はターゲットアドレスを使
ってターゲット命令バッファ(IAR.T)33をター
ゲット命令にプリロードする。BR34は、デコードさ
れた分岐命令をデコーダ36から処理し、EU18から
分岐条件を検索し、異なったフェッチアドレスにFE3
2を向けることによって命令実行の場所を変更する。B
R34はまた、プログラムカウンタ(図示せず)および
ICC30へのアクセスを必要とする命令を処理する。
【0024】さて、図3Aおよび図3Bを参照して、本
発明を組み込んだ実行パイプライン構造の一例が示され
ている。個々の例は、スカラー(すなわち単一パイプラ
イン)、単一イシューアーキテクチャーである。そのイ
ンプリメンテーション(実施例)は3つの実行ステージ
(EXE_1、EXE_2、およびEXE_3)を示す
が、3つより多くのまたは3つより少ない実行ステージ
が利用されることもある。多くの命令は単一サイクルで
実行される。本発明は、分岐命令制御の包括的な促進が
高い命令効率を達成可能にする特徴を提供する。
【0025】図3Aが示すように、符号50で一般的に
示されたパイプラインは7つのステージを備えている:
フェッチステージ52、デコードステージ56、3つの
実行ステージ58,60,62、および、ライトバック
ステージ64。フェッチステージ52は、FU32(図
2)を介してフェッチ動作を実行して順次ICU20か
ら命令をリクエストすると共に、パイプライン50の第
1ステージへの適用、すなわちデコードステージ56へ
の適用のためにその命令を決定するように動作する(命
令をプリデコードすることは有益であることもあり、も
し有益ならば、パイプライン50の第1ステージはプリ
デコードステージを含むこともある。)。
【0026】デコードステージ56は、オペランド依存
性のチェック、レジストファイル読み出し、および、実
行ユニットへの命令イシューだけでなく、完全な命令デ
コード(プリデコーディングが実行されない場合)を処
理する。また、ある分岐命令(すなわち、以下もっと完
全に説明される「単純な」分岐命令)が検出されて、F
U32(図2)に繋げられ本発明(SEL_1)に従う
バイパス制御信号を発生させるのは、デコードステージ
内である。それから、FU32は、以下に記載される方
法でターゲットアドレスまたはネクストインラインアド
レスを分岐命令に提供する準備を行うことができる。
【0027】第1の実行ステージ58は、メモリ用のア
ドレス計算および分岐命令だけでなく全ての単一サイク
ル整数命令の実行を行う。第2の実行ステージ60は、
全ての多数サイクル整数/マルチメディア命令用の実行
のうち第2サイクルを実行する。さらに、それはロード
命令用の第2サイクルに対応している。第3の実行ステ
ージ62は、全ての多数サイクル整数/マルチメディア
命令用の実行のうち第3サイクルを実行し、ロード命令
用の完成ステージになる。ライトバックステージ64
は、命令によって変形される全てのアーキテクチャ状態
(たとえば、汎用レジスタまたはプログラムカウンタな
ど)が更新される場所である。何らかの例外のうち、こ
のステージに達する命令の例外状態はこのステージ内の
更新を防止できる。
【0028】上記の分岐命令を説明したように、さしあ
たり脱線するのは一般的に2つタイプである:単純また
は複雑。単純な分岐命令は、予め構築されまたは予め設
定された条件に基づいて、どのフローパスを選ぶべきか
の決定を作り上げる。これらの命令は、使用可能性のあ
る条件を構築する比較命令の何らかの形式で、一般的に
先行される。他方、複雑な命令は一般的に比較動作を備
えている。単純な分岐命令によってどのフローパスが選
択されるかの決定を、デコードステージで行うことがで
きる。しかしながら、複雑な分岐命令は、分岐条件が実
行の第1の(または、もっと後の)ステージで決定され
ることを必要とする。図3Aは、命令選択用のFU32
に繋げられた必要なバイパス制御信号(「SEL_
2」)を作り出すために、第1の実行ステージEXE_
1 58により決定されるべき分岐命令を示す。これは
図4で例示され、発明の機能的な特徴を概略的に表示し
ている。
【0029】図4を参照すると、信号ライン70はバイ
パス制御信号(SEL_1)をデコードステージ56か
ら、FU32内に収容されたORゲート72の入力に運
ぶ。同様に、第2のバイパス制御信号(SEL_2)は
信号ライン74によって、EXE_1ステージ58から
ORゲート72の第2入力に運ばれる。ORゲート72
の出力は、入力としてIAR.Tレジスタ33(ターゲ
ット命令)も受け取るマルチプレクサ76と、インライ
ンバッファエリア(IBA)35(ネクストインライン
命令を含む)との制御(C)に適用される制御バイパス
信号である。SEL_1またはSEL_2信号の何れか
がアサートされると、ORゲート72が制御バイパス信
号を作り出して、マルチプレクサ76に、IAR.Tレ
ジスタ33内に収容されたターゲット命令を選択させる
だろう。SEL_1またはSEL_2信号の何れもがア
サートされない場合には、制御バイパス信号はアサート
されず、マルチプレクサ76は、IBA35内に収容さ
れたネクストインライン命令を選択するだろう。こうし
て、分岐命令の結果を使って2つの利用可能な命令のう
ち1つを選択する:ターゲット命令またはネクストイン
ライン命令。
【0030】単純な命令に対して、本発明の動作を例示
するタイミング図が図5に示されている。図5が示すよ
うに、分岐命令(BR)のフェッチより前のある時間
で、比較命令(CMP)がフェッチされ(サイクル
n)、デコードされ(サイクルn+1)、そして、サイ
クルn+2の間に実行される。CMP命令の結果はバイ
パスを通してサイクルn+2内で利用可能になる。
【0031】CMP命令がデコードされ続けている間
に、または、その後に続いて、BR命令がフェッチされ
(サイクルn+1)、次のサイクル(n+2)の間にデ
コードステージに適用される。これが単純な命令である
ので、分岐命令がデコードステージ内に存在する時に、
分岐結果が知らされる。それ故に、SEL_1信号がア
サートされて(テスト状態がそのように指示する場合)
IAR.Tレジスタ33からのターゲット命令を選択す
ることもある。SEL_1信号がアサートされない場合
には、インラインバッファエリア35の内容、すなわ
ち、ネクストインライン命令が選択される。それから、
選択されたターゲットまたはネクストインライン命令は
デコードステージ56に適用される。分岐におけるこれ
らのタイプに対して、分岐予測は必要ではない。
【0032】複雑な分岐命令は少し難しい。なぜなら
ば、命令が第1のEXE_1ステージ58(図3A)内
に存在する時のみ、分岐結果が知らされるからである。
こうして、たとえターゲット命令が利用可能であって
も、少なくとも1サイクルの遅延が必要とされることも
ある。図6Aおよび図6Bはそれぞれ、正しい予測(図
6A)と正しくない予測(図6B)とを備えた複雑な分
岐命令を例示している。複雑な分岐(BR.C)は、動
きのない分岐命令、または、動きのある分岐命令の何れ
かを使用することもある。図6Aを参照すると、BR.
C命令はサイクルnでフェッチされ、サイクルn+1で
デコードされている。必要な条件(すなわち比較動作)
が分岐命令内に含まれているから、分岐命令が、通常、
第1の(EXE_1)ステージ内のみで実行されるま
で、必要な条件は決定され得ない。しかしながら、サイ
クルn+1の間でBR.Cがデコードされているうち
に、デコードステージが予測を検出でき、予測されたネ
クスト命令(すなわち、ネクストインライン命令または
ターゲット命令)をフェッチでき、IAR.Tレジスタ
33またはインラインバッファエリア35内でそれらを
それぞれロードできる。
【0033】サイクルn+2では、BR.C命令は、E
XE_1パイプラインステージ58内で実行されてフロ
ーパスを決定し、この例では予測は正しく、SEL_2
信号がアサートされて(または、予測が命令すると、S
EL_2信号がアサートされず)MUX76を介して予
測されたネクスト命令を選択する。
【0034】万一予測が正しくない場合には、図6Bが
例示するように、1サイクルの遅延が存在するだろう。
図6Bは、パイプライン内に挿入されたバブル(動作を
しない、すなわちNOP命令)を示し、BR.C命令に
従ってどのフローパスを選ぶべきかを決定するための時
間を与える。それから、その決定がなされ、EXE_1
パイプラインステージ58の間でSEL_2信号がアサ
ートされ、または、アサートされないだろう。再び、そ
の決定により、ネクスト命令またはターゲット命令とし
てフェッチするためにIAR.Tレジスタ33またはイ
ンラインバッファエリア35の一方が、すなわち、その
時にサイクルn+3の間でデコードステージに適用され
るIAR.Tレジスタ33またはインラインバッファエ
リア35の一方が選択されるだろう。
【0035】理解されるように、最悪の場合でさえ、た
った1つのバブルが存在する。すなわち、誤った予測の
下での分岐ペナルティは1つだけである。だから、たと
え分岐予測が存在しなかった場合でも、ペナルティは1
サイクルより悪くなることはない。
【0036】しかしながら、分岐予測を使って、分岐予
測が選ばれると、ターゲットデコードは1サイクル速く
起こることができる。
【0037】単純な分岐命令、すなわちSEL_1用の
制御信号がパイプライン50のデコードステージ56内
に遅れてアサートされるように、デジタルプロセッサシ
ステム10が特別に設計されることもある。もしそうな
らば、分岐命令のデコードに従うサイクルを備えたネク
スト命令(インラインまたはターゲット)をデコードす
るのに十分な利用可能時間がないこともある。そのよう
な場合には、一方で、プリデコード回路がIAR.Tレ
ジスタ33とインラインバッファエリア35との間での
パスの中に加えられることもあり、他方で、マルチプレ
クサ76が加えられてインライン命令およびターゲット
命令の両方を部分的にまたは完全にデコードすることも
ある。このような付加物を加えることがハードウェアの
複雑さを増大させ、そして一方、分岐プレディクター用
に必要とされるハードウェアよりも実質上簡単そうに思
われる。さらに、分岐プレディクターが全く新しい設計
を必要とするのに対して第2のデコーダは、オリジナル
なデコードロジックのレプリカを伴うだろう。しかし、
制御バイパスを処理するための付加的なロジックは必要
とされるだろう。そして、実行される特別なプレデコー
ド設計が様々に変更できるうちに、特別な要求に従っ
て、プレデコードの2つの例が図7および図8によって
例示される。
【0038】最初に、図7を参照すると、デコーダ80
(ターゲット命令用)とデコーダ82(ネクストインラ
イン命令用)とによって実行されるプレデコードが例示
されている。デコーダ80,82はそれぞれIAR.T
33とIBA35との内容を受け取って、それぞれに対
応する命令からソースレジスタの識別(SRC1,SR
C2)を抜き取る。ソースレジスタは、実行用のオペラ
ンドコード(OPCODE)と共に、そのような命令に
よって使用されるオペランドを備えている。この例のプ
レデコーダ設計を調整するために、マルチプレクサ76
は、3つの二入力マルチプレクサ76A,・・・,76
Cを含むように再構成されている。マルチプレクサの入
力選択は、前述のように、ORゲート72によって生成
される制御バイパス信号の状態により制御される。制御
バイパス信号の状態は、分岐の条件に依存して、ターゲ
ット命令またはネクストインライン命令の何れかのソー
スアドレスとOPCODEとを選択するだろう。
【0039】図7はまた、映像的に付加的なマルチプレ
クサ76Iを示して、望まれるまたは必要とされる付加
的なプリデコード値の選択を表示している。
【0040】さて、図8を参照すると、デコードバイパ
ス転送用でプリデコードの幾分異なったタイプが示され
ている。図8Aは、4つの命令(I1,I2,・・・,
I4)から成る命令ストリームの一部分を例示してい
る。また、図8Aでは、各命令がサイクルn,n+1,
・・・,n+7の間で通過する実行パイプラインのステ
ージが示されている。簡単のために、図3B、図5及び
図6で示された6つのステージに対抗されるように、図
8Aは、5つのステージだけ:I(命令フェッチ)、D
(命令デコード)、E(実行)、A(メモリアクセ
ス)、および、S(セーブまたはライトバック)を有す
る実行パイプラインを示している。しかしながら、当業
者にとって、本発明を使用することが実行パイプライン
のステージ数に必ずしも依存しないことは明らかであ
る。
【0041】第1の命令I1は、ADD動作用のソース
オペランドを含んだレジスタ(R1,R2)のアドレス
を備えたADD命令として示されている。ADD命令は
また、その結果が格納されるレジスタアドレス(R3)
を備えている。同様に、第2の命令I2、すなわち減算
(SUB)命令は、ソースオペランド用のレジスタアド
レス(R10,R20)と、その結果用のレジスタアド
レス(R30)とを備えている。
【0042】命令I3は、選択された分岐パスにおける
第1の命令によって従われる分岐命令であり、分岐が選
ばれた場合にはターゲット命令になり、分岐が選ばれな
かった場合にはネクストインライン命令になる。ターゲ
ット命令は、レジスタR3およびレジスタR4のコンテ
ンツの間でAND動作として示されている。AND動作
の結果は、アドレスR5によって識別されるレジスタ内
に格納されるだろう。あるいはまた、ネクストインライ
ン命令は、アドレスR30,R40によって識別される
レジスタのコンテンツ上で実行されるOR動作であり、
その動作の結果はレジスタアドレスR50内に配置され
るだろう。
【0043】コンパレータ(90,92,・・・,9
6)のバンクは、分岐命令(I3)に従う選択された命
令が、すなわち、ターゲット命令またはネクストインラ
イン命令がデータパスを必要とするか否かを決定する。
コンパレータ90,92,94,96は、(1)2つの
命令のうち一方が選択され、デコード(D)ステージ内
に存在する時にターゲット命令およびネクストインライ
ン命令によって使用されるオペランドのレジスタアドレ
スと、(2)同じサイクルのメモリアクセスステージの
間に書き込まれるレジスタアドレスとを比較することに
よりプリデコードを実行するように動作する。こうし
て、図8Aが示すように、分岐によって選択された命
令、すなわちターゲット命令またはネクストインライン
命令の何れかは、サイクルn+4の間にパイプラインの
デコード(D)ステージに適用され、そして同時に、S
UB命令(命令I2)はメモリアクセスステージ(A)
内に存在して、R30のアドレスを備えたメモリレジス
タにアクセスする。このように、コンパレータ90,9
2は、ターゲット命令(R3,R4)用のオペランドを
含んだレジスタアドレスと、アクセスステージ(レジス
タR30)によってアクセスされるレジスタのアドレス
とを比較する。同様に、コンパレータ94,96は、同
じ比較を実行する。なお、ターゲット命令と、レジスタ
R3,R4を使ったAND命令とが選択された場合に
は、整合性がない。すなわち、ターゲット命令(R3,
R4)によって使用されるソースレジスタは、命令I2
用のアクセスステージの間に書き込まれ続けない。しか
しながら、インライン命令が選択された場合には、OR
機能用に必要とされるオペランドの1つを含んだレジス
タ、すなわちレジスタR30が命令I2のAステージ実
行内でサイクルn+4の間に書き込まれることを、コン
パレータ94が検出する。従って、分岐命令がマルチプ
レクサ100,102を動作させてソースレジスタR3
0用のデータバイパス信号を形成して、それをデコード
Dまたは実行ステージE内のOR命令に転送する。
【0044】
【発明の効果】分岐命令によって作り出される分岐決定
を表示する制御信号が最も速く可能な瞬間に転送され
て、分岐に適用するための2つの命令の何れかを選択
し、分岐を達成する。
【0045】本発明は、分岐が選択した命令が時間の前
に知らされること、すなわち、分岐条件が計算されて初
めて知らされるのが選択であることを利用している。こ
のように、本発明によれば、分岐が決定しなければなら
ない2つの命令がマルチプレクサに適用される。マルチ
プレクサによってなされた選択は、分岐命令に基づく条
件が知らされる時に作り出されるバイパス制御信号によ
り制御される。単純な分岐命令に対して、その条件は、
パイプラインのデコードステージの間で知らされ、それ
故に、パイプラインに適用するための適切な命令を選択
するために使用される。複雑な分岐命令に対して、バイ
パス制御信号は、遅延における少なくとも1サイクルを
必要とするので、第1の実行ステージにより作り出され
るだろう。
【0046】本発明によって達成される利点のうちの1
つは、これまでに出くわした分岐ペナルティが緩和され
得ることである。さらに、ターゲット命令のプリデコー
ドまたは部分的なデコードが必要である場合には、この
ことが回路系における最小数の付加物だけをもたらし得
る。
【0047】本発明は、分岐命令制御の包括的な促進が
高い命令効率を達成可能にする特徴を提供する。
【図面の簡単な説明】
【図1】本発明を使用するためのデジタルプロセッサの
アーキテクチャを概略的に例示するブロック図である。
【図2】図1の命令フローユニットを示すブロック図で
ある。
【図3A】図1のデジタルプロセッサで使用されるパイ
プライン設計の概念的な図である。
【図3B】図3Aで示されたパイプライン設計の動作を
例示するタイミング図である。
【図4】単一デコーダを使って、本発明による分岐予測
を選択するために使用される転送構造の図解的な表示の
図である。
【図5】単純な分岐命令に応答して、本発明による経路
選択を例示するパイプラインのタイミング図の一例であ
る。
【図6A】分岐予測を使った複雑な折返し分岐命令に基
づいて、本発明による分岐経路の選択をそれぞれ示す代
表的なパイプラインのタイミング図である。
【図6B】分岐予測を使った複雑な折返し分岐命令に基
づいて、本発明による分岐経路の選択をそれぞれ示す代
表的なパイプラインのタイミング図である。
【図7】一つのプリデコード例を示す図である。
【図8A】各命令に対して実行ダイアグラムと共に命令
ストリームを示す図である。
【図8B】図8Aの命令用にチェックされ、データ転送
を提供するプリデコーダの一例を示す図である。
【符号の説明】
10 デジタルプロセッサシステム 12 バスインタフェースユニット 14 システムバス 16 命令フローユニット 18 実行ユニット 20 命令キャッシュユニット 22 ロード/ストアユニット 24 データキャッシュ制御ユニット 30 命令キャッシュ制御ユニット 32 フェッチユニット 34 分岐ユニット 36 デコーダ 38 パイプライン制御ユニット 40 レジスタファイル 42 パイプファイル 50 パイプライン 52 フェッチステージ 56 デコードステージ 64 ライトバックステージ 70 信号ライン 72 ORゲート 76 マルチプレクサ 80 デコーダ1 82 デコーダ2 90 コンパレータ 92 コンパレータ 94 コンパレータ 96 コンパレータ 100 マルチプレクサ 102 マルチプレクサ

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 比較命令および分岐命令を含む命令をデ
    コードおよび実行するように動作するデジタルプロセッ
    サであって、 ターゲット命令を保持するための第1記憶装置と、 ネクストインライン命令を保持するための第2記憶装置
    と、 前記第1および第2記憶装置を受け取るための入力を有
    するマルチプレクサと、 前記比較命令を受け取りデコードし、前記比較命令によ
    って識別される少なくとも2つの値を比較し、比較がう
    まくいった場合には適正な条件を作り出し、それから、
    前記分岐命令を受け取り、前記マルチプレクサに結合さ
    れたバイパス制御信号をアサートし、前記条件が真の時
    にパイプラインへの入力用に前記ターゲット命令を選択
    する実行ユニットとを備えることを特徴とするデジタル
    プロセッサ。
  2. 【請求項2】 請求項1に記載のデジタルプロセッサに
    おいて、 前記実行ユニットが、前記命令をデコードするためのデ
    コードステージを有する複数のパイプラインステージか
    ら成ることを特徴とするデジタルプロセッサ。
  3. 【請求項3】 請求項2に記載のデジタルプロセッサに
    おいて、 第1条件の分岐命令が、前記デコードステージに適用さ
    れた時に、前記バイパス制御信号をアサートさせること
    を特徴とするデジタルプロセッサ。
  4. 【請求項4】 請求項1に記載のデジタルプロセッサに
    おいて、 前記バイパス制御信号がアサートされない時に、前記マ
    ルチプレクサが前記ネクストインライン命令を選択する
    ことを特徴とするデジタルプロセッサ。
  5. 【請求項5】 請求項4に記載のデジタルプロセッサに
    おいて、 前記実行ユニットが第2の分岐命令を受け取るように動
    作し、パイプラインステージが、前記第2の分岐命令を
    受け取って、前記条件が真の時に前記制御信号をアサー
    トする実行ステージを備えることを特徴とするデジタル
    プロセッサ。
  6. 【請求項6】 請求項1に記載のデジタルプロセッサに
    おいて、 前記第1および第2記憶装置を前記マルチプレクサに結
    合して前記ターゲット命令および前記ネクストインライ
    ン命令の上でプリデコードを実行するためのプリデコー
    ドユニットを備えることを特徴とするデジタルプロセッ
    サ。
  7. 【請求項7】 分岐命令に応答してデジタルプロセッサ
    の実行ユニットを適用するために、一方および他方が第
    1命令としてターゲット命令およびネクストインライン
    命令をそれぞれ有する2つの分岐命令パスのうち1つを
    選択する方法であって、 前記ターゲット命令および前記ネクストインライン命令
    を格納する工程と、 分岐命令のデコードから選択信号を作り出す工程と、 前記選択信号を使って前記ターゲット命令または前記ネ
    クストインライン命令を選択する工程と、 前記選択されたターゲット命令またはネクストインライ
    ン命令を前記実行ユニットに適用する工程とを有するこ
    とを特徴とする分岐命令の選択方法。
  8. 【請求項8】 請求項7に記載の方法において、 前記格納工程が、少なくとも部分的にデコードしたター
    ゲット命令を含むことを特徴とする分岐命令の選択方
    法。
  9. 【請求項9】 請求項7に記載の方法において、 前記格納工程が、少なくとも部分的にデコードしたネク
    ストインライン命令を含むことを特徴とする分岐命令の
    選択方法。
  10. 【請求項10】 請求項7に記載の方法において、 前記格納工程が、少なくとも部分的にデコードしたター
    ゲットおよびネクストインライン命令を含むことを特徴
    とする分岐命令の選択方法。
  11. 【請求項11】 請求項10に記載の方法において、 前記適用工程が、選択されて部分的にデコードされた前
    記ターゲット命令またはネクストインライン命令を前記
    実行ユニットに適用することを含むことを特徴とする分
    岐命令の選択方法。
  12. 【請求項12】 分岐命令に応答してデジタルプロセッ
    サの実行ユニットに適用するためにネクストインライン
    命令またはターゲット命令の何れかを選択する方法であ
    って、 前記ターゲット命令および前記ネクストインライン命令
    を格納する工程と、 前記分岐命令を少なくとも部分的にデコードすることに
    適用して、前記ターゲット命令または前記ネクストイン
    ライン命令の選択を示すデジタル状態を備える選択信号
    を作り出す工程と、 前記選択信号を使って、前記実行ユニットに適用するた
    めに前記ターゲット命令または前記ネクストインライン
    命令を選択する工程とを有することを特徴とする命令の
    選択方法。
  13. 【請求項13】 請求項12に記載の方法において、 ターゲット命令を少なくとも部分的にデコードする工程
    を備えることを特徴とする命令の選択方法。
  14. 【請求項14】 請求項13に記載の方法において、 ターゲット命令を少なくとも部分的にデコードする工程
    を備えることを特徴とする命令の選択方法。
  15. 【請求項15】 比較命令および分岐命令を含む命令を
    デコードおよび実行するように動作するデジタルプロセ
    ッサであって、 ターゲット命令およびネクストインライン命令を保持す
    るための記憶装置と、前記記憶装置に結合されて前記タ
    ーゲット命令および前記ネクストインライン命令を受け
    取る選択エレメントと、 デコードステージを有する実行パイプラインとを備え、 前記デコードステージが、前記比較命令を受け取りデコ
    ードして分岐条件を作り出し、それから、前記分岐命令
    を受け取り少なくとも部分的にデコードして、マルチプ
    レクサに結合されたバイパス制御信号をアサートして前
    記条件が真である時に入力用に前記ターゲット命令また
    は前記ネクストインライン命令を選択することを特徴と
    するデジタルプロセッサ。
JP2002352041A 2002-03-08 2002-12-04 デジタルプロセッサおよび命令の選択方法 Pending JP2003263313A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/094,560 US7003649B2 (en) 2002-03-08 2002-03-08 Control forwarding in a pipeline digital processor
US10/094560 2002-03-08

Publications (1)

Publication Number Publication Date
JP2003263313A true JP2003263313A (ja) 2003-09-19

Family

ID=29214384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002352041A Pending JP2003263313A (ja) 2002-03-08 2002-12-04 デジタルプロセッサおよび命令の選択方法

Country Status (2)

Country Link
US (1) US7003649B2 (ja)
JP (1) JP2003263313A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340587B2 (en) 2004-06-15 2008-03-04 Seiko Epson Corporation Information processing apparatus, microcomputer, and electronic computer

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484075B2 (en) * 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US7290153B2 (en) * 2004-11-08 2007-10-30 Via Technologies, Inc. System, method, and apparatus for reducing power consumption in a microprocessor
US7996655B2 (en) * 2008-04-22 2011-08-09 International Business Machines Corporation Multiport execution target delay queue FIFO array
US8203984B2 (en) 2008-12-19 2012-06-19 Intel Corporation Power management for wireless networks
US10108419B2 (en) * 2014-09-26 2018-10-23 Qualcomm Incorporated Dependency-prediction of instructions
US9824414B2 (en) 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
US10013253B2 (en) * 2014-12-23 2018-07-03 Intel Corporation Method and apparatus for performing a vector bit reversal

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4439827A (en) * 1981-12-28 1984-03-27 Raytheon Company Dual fetch microsequencer
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US4736292A (en) * 1985-12-16 1988-04-05 Unisys Corporation Electronic data processing system overlaid jump mechanism
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
JPH1124929A (ja) * 1997-06-30 1999-01-29 Sony Corp 演算処理装置およびその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340587B2 (en) 2004-06-15 2008-03-04 Seiko Epson Corporation Information processing apparatus, microcomputer, and electronic computer

Also Published As

Publication number Publication date
US7003649B2 (en) 2006-02-21
US20030172258A1 (en) 2003-09-11

Similar Documents

Publication Publication Date Title
US6304955B1 (en) Method and apparatus for performing latency based hazard detection
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
JP5425627B2 (ja) 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置
US20070022277A1 (en) Method and system for an enhanced microprocessor
WO2009114289A1 (en) System and method of selectively committing a result of an executed instruction
US5799180A (en) Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
JPH1124929A (ja) 演算処理装置およびその方法
US20220035635A1 (en) Processor with multiple execution pipelines
US20070079076A1 (en) Data processing apparatus and data processing method for performing pipeline processing based on RISC architecture
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
JP2003263313A (ja) デジタルプロセッサおよび命令の選択方法
US6115730A (en) Reloadable floating point unit
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
JP2004192021A (ja) マイクロプロセッサ
US6851044B1 (en) System and method for eliminating write backs with buffer for exception processing
JP2008299729A (ja) プロセッサ
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法
JPH06214785A (ja) マイクロプロセッサ
Pulka et al. Multithread RISC architecture based on programmable interleaved pipelining
US7509365B2 (en) Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units
KR100635111B1 (ko) 지정 가능한 지연 슬롯과 스쿼싱 조건을 가지는 분기 처리프로세서
JP2503223B2 (ja) 先行制御方式