JP2000330788A - コンピュータシステム - Google Patents

コンピュータシステム

Info

Publication number
JP2000330788A
JP2000330788A JP2000135141A JP2000135141A JP2000330788A JP 2000330788 A JP2000330788 A JP 2000330788A JP 2000135141 A JP2000135141 A JP 2000135141A JP 2000135141 A JP2000135141 A JP 2000135141A JP 2000330788 A JP2000330788 A JP 2000330788A
Authority
JP
Japan
Prior art keywords
instruction
branch
guard
unit
indicator
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
JP2000135141A
Other languages
English (en)
Inventor
Andrew Cofler
アンドルー、コフレ
Stephane Bouvier
ステファンヌ、ブビエ
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.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
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 STMicroelectronics SA filed Critical STMicroelectronics SA
Publication of JP2000330788A publication Critical patent/JP2000330788A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

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)【要約】 【課題】 スーパースカラ型パイプライン式コンピュー
タシステムにおける分岐命令の実行を提供する。 【解決手段】 コンピュータシステムは述語命令を使用
する。すなわち、命令に含まれたガードインディケータ
の値に応じて実行される。通常の動作では、ガードイン
ディケータが真の場合、命令が実行され、それが偽の場
合、命令は実行されない。これに関連して、ガードイン
ディケータが偽の場合に実行されガードインディケータ
が真の場合には実行されない所謂偽ガード付き分岐命令
が含まれる。プログラム列では、通常の命令は、偽ガー
ド付き分岐命令の後ろに見出され、偽ガード付き分岐の
ガードインディケータと同じガードで保護される。こう
した性質の命令は、分岐が定められるまで分岐命令の後
でパイプラインに供給されつづける。分岐命令に続く命
令のガードインディケータと比較し、ガードインディケ
ータが一致しない場合には命令の供給を防ぐ手段が備え
られている。これにより動的分岐シャドウが分岐命令の
後に形成されることになる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分岐命令などの命
令を実行する方法に関し、さらに、こうした命令を実行
するコンピュータシステムに関する。
【0002】
【従来の技術】スーパースカラ型パイプライン式コンピ
ュータシステムでは、分岐を実行すると問題が発生する
ことがある。これは中でもガード付き命令を実行するシ
ステムにおける述語分岐の場合に当てはまる。パイプラ
イン式コンピュータシステムでは、分岐命令は、分岐を
取ったかどうかを判定するために分岐のガードインディ
ケータが消える(真でも偽でも)状態より数サイクル早
く取り出され復号される。
【0003】
【発明が解決しようとする課題】分岐のガードインディ
ケータが消えるまで、コンピュータシステムは、次に実
行されることになる分岐命令に続く命令が、分岐命令を
含む元のプログラム列中の命令であるか、または分岐に
より指示された目標アドレスの命令であるかを把握でき
ない。前者の場合では、分岐が取られてなく、後者の場
合では、分岐が取られている。分岐されている場合に
は、目標アドレスからの命令取出しを開始して、パイプ
ライン式コンピュータシステムを介して命令を供給する
必要がある。分岐されてない場合には、分岐命令に続く
元の命令列からの命令の供給と実行を継続する必要があ
る。
【0004】その場合には実行する利用可能な命令を先
に保持して分岐が取られない場合の不利益を減ずること
が望ましい。
【0005】
【課題を解決するための手段】本発明の1態様による
と、ガードインディケータが真の場合に実行される通常
の命令と、ガードインディケータが偽の場合に実行され
る分岐命令を含む複数の命令に含まれているガードイン
ディケータに基づく命令を実行するコンピュータシステ
ムが提供されており、このコンピュータシステムは、命
令供給回路と、供給回路からの命令を受け取る少なくと
も1つの実行ユニットと、分岐命令のガードインディケ
ータを保持し、分岐シャドウモードを設定し、分岐命令
のガードインディケータとその後の命令に含まれたガー
ドインディケータを比較して、ガードインディケータが
一致する場合には命令を供給しつづけ、ガードインディ
ケータが一致しない場合には命令の供給を停止する、分
岐命令を検出する分岐検出回路と、分岐が取られている
かどうかといったような分岐命令が判定されると、ガー
ドインディケータの状況を定めることで、分岐シャドウ
モードを無効にする手段を備える。
【0006】本発明の他の態様によると、ガードインデ
ィケータが真の場合に実行される通常の命令と、ガード
インディケータが偽の場合に実行される分岐命令とを含
む複数の命令に含まれているガードインディケータに基
礎が置かれたコンピュータシステムにおいて命令を実行
する方法が備えられており、前記方法は、少なくとも1
つの実行ユニットに命令を供給する過程と、分岐命令を
検出する過程と、こうした検出に対して、分岐命令のガ
ードインディケータを保持し分岐シャドウモードを設定
する過程と、分岐シャドウモードにおいて、分岐命令の
ガードインディケータとその後の命令に含まれているガ
ードインディケータを比較して、両インディケータが一
致する場合には命令の供給を継続し、不一致の場合には
命令の供給を停止する過程と、分岐が取られているかど
うかといったような分岐命令が判定されると、ガードイ
ンディケータの状況を定めることで分岐シャドウモード
を無効にする過程と、から構成されている。
【0007】本明細書に載されるコンピュータシステム
では、命令の基礎が偽りのガード付き分岐命令と同じガ
ードインディケータに置かれている場合には、それらの
命令の取出しが継続される。したがって、ガードインデ
ィケータのガード値が偽と定められ、分岐が取られる
と、その後の命令は自動的に無効になる、というのはそ
れらの命令はガードインディケータが真であることに基
づいているからである。すなわち、ガードインディケー
タが真の場合に限りこれらの命令は実行される。したが
って、分岐が取られると実行中のこうした命令を回避す
るために他の動作を取る必要はない。
【0008】しかし、分岐が取られない場合には、ガー
ドが真であることに基づいた命令は自動的に次に実行さ
れることになり、パイプラインに行くように準備され
る。したがって、本明細書に記載されたシステムを用い
ると、分岐が取られない場合の遅延が大幅に改良され
る。
【0009】ガードインディケータの検出は、コンピュ
ータシステムの復号器で実行可能なので、パイプライン
の初期の段階で事実を判定できる。
【0010】本発明をよりよく理解し、本発明がいかに
して実施されるかを示すために、添付図面を例として参
照すべきである。
【0011】
【実施例】偽のガード付きブランチ命令の原理を説明す
る前に、最初に、ガード付き命令を実行するコンピュー
タシステムを、発明の背景として説明する。
【0012】本例のコンピュータシステムは、複数の命
令を並列に実行するように構成され、高度なデジタル信
号処理(DSP)性能を提供するのに特にふさわしい。命
令はプログラムメモリ11に保持され、その後、制御ユニ
ット12を通過して、4つの並列実行パイプライン13、1
4、15および16に供給される。パイプライン13と14は、
算術演算を含む命令を実行するように構成されているデ
ータユニットのスロット0とスロット1として示されてい
る。パイプライン15と16は、データメモリ20へのメモリ
アクセスする命令を実行するのに使用されるアドレスユ
ニット19のスロット0とスロット1として示される。アド
レスユニット19のスロット1または0は、アドレスユニッ
ト19と資源を共有する汎用ユニット21に供給するのにも
使用される。汎用ユニット21は、制御レジスタファイル
21と、制御ユニット21に線23を介して命令分岐情報を供
給するのに使用される分岐回路構成3とを備えている。
【0013】汎用ユニット21は、アドレスユニット21と
共に命令発信待ち行列41を共有する。汎用ユニット21
は、ガードの判定を待っている間に分岐命令を置く場所
であるA-IDQ41の特殊な専用スロット41aを備えており、
分岐がこのスロットで待っているときには、アドレスユ
ニット命令は、分岐を迂回して、アドレスユニットによ
り実行可能である(すなわち、分岐外れ)。これが行わ
れるのは、以下で説明される分岐実行の実施のためであ
る。
【0014】データユニット18の2つのパイプライン13
と14は、データレジスタファイル14と、命令に関連する
主ガード値を保持する共通ガードレジスタファイル27と
を供給している。2つのパイプラインは、データユニッ
ト18の共通命令発信待ち行列(D-IDQ)29からの命令も
誘導して、待ち行列19の命令は、データユニット18の共
通上下方向依存性検査回路構成30によりデータの依存性
が検査される。データユニット18のパイプライン段それ
ぞれの動作列には、レジスタファイル26または27の1方
に通常にアクセスするオペランド取出しが含まれ、その
後に、算術回路構成33と、その後の算術演算の結果をレ
ジスタファイル26と27に戻すデータ書込み段とを使用す
る2つの実行段が続いて含まれる。同様のパイプライン
がデータユニット18の両パイプライン13と14に在る。
【0015】アドレスユニット19でも同様に、パイプラ
イン15と16の両方ともが、データメモリ20でのロードま
たは記憶動作で使用されるポインタ値を保持する共通レ
ジスタファイル40にアクセスする。2つのパイプライン
はそれぞれ共通命令発信待ち行列(A-IDQ)からそれら
の命令を取りだし、同様の上下方向依存性検査がアドレ
スユニット19の両パイプライン15と16共通に備えられて
いる。上下方向依存性検査は、データユニット18ですで
に参照されたものと同様である。2つのパイプライン15
と16を介して命令を実行する際には、レジスタファイル
40にアクセスが行われる。加算および減算ユニット43
が、命令の実行で使用される。アドレスユニット19のパ
イプライン15と16それぞれには、オペランド取出しが含
まれ、それに続いて、実行段とアドレス書戻し段が含ま
れている。データユニット18とアドレスユニット19はデ
ータメモリインターフェース制御部50を介してデータメ
モリ20に接続されている。制御部50は、複数のバス53を
介して、データユニット18とアドレスユニット19に接続
されている。インターフェース制御部50には、複数のバ
ス53にそれぞれ接続された複数の待ち行列が含まれてい
る。これらの待ち行列には、データユニット18またはア
ドレスユニット19のレジスタファイルへのロードを待機
するロードデータ待ち行列(IDQ)60が含まれる。イン
ターフェース制御部50は、メモリ20へのデータ待機記憶
用の記憶データ待ち行列(SDQ)70も備えている。記憶
アドレス待ち行列(SAQ)71は、データが記憶されるメ
モリ20の位置を示すために備えられている。
【0016】データメモリ20からデータユニット18のデ
ータレジスタファイルにデータをロードするよう命令が
実行されると、適切な待ち行列60からデータを転送する
ことでデータレジスタファイル26の更新を完了する前
に、アドレスユニット19が、データメモリ20にアクセス
し、必要なデータをロードデータ待ち行列60にロードす
ることが理解されるであろう。同様に、データユニット
18からデータメモリにデータを記憶するよう命令が実行
されると、データメモリ20の記憶動作を完了する前に、
適切なデータは、待ち行列71の記憶アドレスと共に記憶
データ待ち行列70に保持できる。
【0017】データユニット18に備えられているものと
は別の並列パイプラインでアドレスユニット19のメモリ
アドレス指定命令を実行することで、メモリアクセスは
データユニット18内で実行される算術演算から独立して
実行されるので、メモリコンピュータシステムはアクセ
スの分離を実行する。これによりメモリの遅延の問題が
低下することになる。規則的な反復演算を実行するデジ
タル信号処理システムでは、メモリの遅延を実行プログ
ラムから隠すことができる。
【0018】上記の説明では、パイプライン13、14、15
および16を介して供給される命令にはすべて上下方向依
存性検査が行われ、迂回により定められないデータ依存
性が見つかると、実行ユニットは、パイプライン13また
は14の対または対15と16の一方で一時的な動作停止を引
き起こすよう動作して、対のパイプラインの一方での一
時的な遅延が引き起こされて、データ依存性が定まる。
データ依存性の検査には、ガード値を表すデータを含む
任意の形のデータが含まれることが理解されるであろ
う。
【0019】制御ユニット12は左右方向依存性検査を実
行するようにも構成されている。本明細書では、同じマ
シンサイクルで並列パイプラインに供給される命令間の
データ依存性は並列依存性と呼ばれる。制御ユニット12
は、プログラムカウンタとアドレス生成器80を備え、プ
ログラムメモリ11からの命令取出し動作用のメモリアド
レスを提供する。マシンは、可変命令ビット長のスーパ
ースカラモードを含む複数の命令モードの選択モードま
たは極めて長い命令ワード(VLIW)モードで動作可能で
ある。制御ユニット12は、処理状況レジスタを備えて、
マシンが動作している命令モードを指示する。
【0020】制御ユニット12は、実行ユニットへの供給
が準備されるように、メモリから取り出された命令を保
持する事前取出し段を備えている。
【0021】使用時には、複数の命令が、1サイクル中
に単一取出し動作でメモリ11から獲得され、事前取出し
段に送られて、その後、制御ユニット12の復号器82によ
り復号される。これらの命令は、依存性検査回路構成87
により左右方向データ依存性が検査されて、左右方向デ
ータ依存性が見出されたかどうかを示す。復号の後で、
命令は、各実行パイプラインのマイクロ命令を生成する
のに使用される。復号器82からの命令はマイクロ命令生
成器98に渡されて、そこで、複数の並列マイクロ命令が
生成され、発信回路構成99により並列経路100を介して
4つの並列実行パイプライン13、14、15および16と汎用
ユニット21に出される。左右方向依存性が見出される
と、線100のマイクロ命令には、データユニット18また
はアドレスユニット19の命令発信待ち行列へのパイプラ
インの停止などの動作が左右方向依存性を定めるために
実行パイプラインで必要となるという指示が含まれるこ
とに成る。
【0022】この例では、各命令はG0とG15の間のガー
ドインディケータGを備える場合がある。通常の命令で
は、ガードが真の場合、命令が実行される(すなわち、
マシンの構成状態を更新する)。ガードが偽の場合、マ
シンの構成状態は命令実行によって変わることはない。
ガードの判定は、マシンの異なるパイプライン段で実行
可能である。以下に説明されるように、特殊な分野の分
岐命令はこの場合は除外される。
【0023】各命令のガードはG0とG5の間で選択され、
特殊な本例では、ガードG15は常に真である。しかし、
ガードG0ないしG14に属する値の真または偽は、ガード
レジスタファイルに任意の特定の時点で保持されたガー
ド値に依存している。本例における主ガードレジスタフ
ァイルはデータユニット18のガードレジスタファイル27
(しばしば、構成ガードレジスタと呼ばれる)である。
【0024】データユニット18のガードレジスタファイ
ル27は、ガード値G0ないしG14の構成状態を維持し、レ
ジスタファイルは両実行ファイル13と14に共通である。
ガードの命令値はすべての実行パイプラインに対して同
じである。
【0025】本例では、ガード値の主レジスタファイル
は、データユニット18に保持される、というのは、ガー
ドの値を変える可能性の高い命令を実行する頻度が最も
高いのがデータユニットのためである。したがって、実
行サイクルの効率は、データユニット18において命令を
実行することで直接アクセスされるレジスタファイルの
主ガード値を維持することで一層高くなる。命令がデー
タユニット18のスロット0または1を介して供給される
と、必要なガード値は、制御ユニット12からデータユニ
ット18に供給されるマイクロ命令に付随したガードイン
ディケータに応じて、主ガードレジスタファイル27から
直接取り出される。
【0026】アドレスユニット19への命令の場合には、
アドレスユニット19での命令の実行に必要なガード値
を、データユニット18のガードレジスタファイル27から
確保しなければならなくなる。線100を介して実行ユニ
ットに供給されたマイクロ命令には、アドレスユニット
19の正しいスロットへの適切なマイクロ命令の供給と同
時に、「sendguard」(sndg)マイクロ命令の供給が含
まれる。「sendgaurd」マイクロ命令は、最初に、アド
レスユニット19に必要なマイクロ命令がアドレスユニッ
トの命令発信待ち行列41に配列されるのと同じ動作サイ
クルでデータユニット18の命令発信待ち行列29に配列さ
れることになる。所与の実行ユニットにおけるマイクロ
命令はすべて常に順序どおりに実行され、すべてのガー
ド操作と転送はこれらのマイクロ命令に関して順序どお
りに維持される。これによりガード転送の同期性が保証
される(すなわち、所与の実行ユニットからのあらゆる
ガード放出では、他の実行ユニットにおいて相対するガ
ード受信があり、これらはすべて順序どおりに行われ
る。制御ユニットは、ガード転送の正確なマイクロ命令
の生成を担当する。送信または受信実行ユニットは、送
信または受信(それぞれの)マイクロ命令、すなわち、
それが実行しなければならない動作を確認するだけであ
る。)このようにして、正確な順序付けがなされ、正確
なガード値がアドレスユニット19で実行される命令に対
応するガードレジスタファイル27から獲得される。こう
した状況での「sendgaurd」マイクロ命令の供給が図面
の番号110に示されている。
【0027】アドレスユニット19と汎用ユニット21は、
実行ユニットへの発信を待機している命令41の待ち行列
を共有している。項目の待ち行列111(ARLQ)もポイン
タまたは制御レジスタ40また22へのロードを待機してい
る。記憶アドレス待ち行列のメモリインタフェース制御
部50における待ち行列71も、アドレスユニット19の記憶
命令の部分的実行の結果として、メモリアクセスを待機
している。アドレスユニット19または汎用ユニット21が
データユニット18からのガード転送を待機していると、
要求されたガード値がデータユニット18からガード転送
回路構成112を介して要求された目標に転送されるま
で、命令はA-IDQ41またはARLQ111または記憶アドレス待
ち行列71で機能停止する。正確なガード値は、データユ
ニット18がパイプライン動作で「sendguard」マイクロ
命令を実行するときに転送され、アドレスユニット19ま
たはデータメモリインターフェース制御部50に転送され
るガード値は、待ち行列に保持されて、機能停止が終了
すると命令の実行が継続可能になるよう準備される。転
送されたガード値はガード付き命令がIDQ41で機能停止
されると、A-IDQガード待ち行列113に保持されるように
なる。機能停止がARLQ待ち行列111で発生する場合に
は、転送されたガード値は、ARLQガード待ち行列114に
保持されることになる。記憶アドレスがインターフェー
ス制御部50のSAQ71に追加されている記憶命令の場合に
は、ガード値が回路構成112からデータメモリインター
フェース制御部50のSQAガード待ち行列115に転送される
ので、転送されたガード値が認める場合SAQ71の入力に
応じてメモリアクセスが実行される。記憶命令のガード
値が真または偽であるかを検査する前に、必要な記憶ア
ドレスを識別しそのアドレスをインターフェース部50の
待ち行列に追加するまで、アドレスユニットはメモリ記
憶命令を実行可能である。記憶動作は、ガード値が検査
されるまで、待ち行列71に保持され、ガード値が真の場
合にはただ完了まで進むだけである。ガード値がデータ
ユニット18からアドレスユニット19に転送される場合に
は、アドレスユニットまたは汎用ユニット21に対して機
能停止された命令は、データユニットファイル27から転
送されたガード値に応じて、再開されるか、機能停止さ
れたままになる。
【0028】ガード待ち行列113、114および115を使用
すると、要求「sendguard」110がデータユニット18に送
られるようにするマイクロ命令と、ガード値とが再同期
されることになる。ガード付き記憶命令の動作の上記の
記載は、ガード値を定める前に、実効記憶アドレスを待
ち行列71に配置する方法を示していた。アドレスユニッ
ト19は、記憶命令を実行する際に早い時期に機能停止に
なるので、ガード値が転送されて定められるまで、実効
アドレスは計算されず、インターフェース制御部50に送
られる。同様に、ガード値を定める前に、ガード付きロ
ード命令はアドレスユニット19により実行され、メモリ
にアクセスし、必要なデータを確保して、ロードデータ
待ち行列60に追加する。代わりに、アドレスユニットで
は、メモリからデータを確保してデータを待ち行列60に
入力する前に、早い時期の機能停止によりデータユニッ
トから転送されたガード値の決定を待つ場合もある。ガ
ード値が決定される前にデータがメモリから確保されロ
ードデータ待ち行列60に入力される場合には、適切なレ
ジスタファイル26、40または22は、ガード値が真である
と判明する場合に限りロードデータ待ち行列からのロー
ド動作により更新される。偽のガード値の場合には、レ
ジスタファイルは更新されないで、適切な実行部は、目
的のレジスタファイルを更新することなく、ロードデー
タ待ち行列の読取りを実行して、待ち行列から望ましく
ないデータを取り除く。
【0029】上記に示したように、ガードインディケー
タG0ないしG4に指定されるガード値は、ガード修正子命
令を実行することで修正できる。こうしたことはデータ
ユニット18またはアドレスユニット19により実行可能で
ある。データユニット18による実行されたガード修正子
命令の場合には、新しいガード値は、データユニット18
の適切なスロット0または1の実行パイプラインで計算さ
れて、これらのパイプラインのどれが使用されても、実
行パイプラインの終わりでガードレジスタファイル27に
ガードの新しい値が書きこまれて、レジスタファイル27
が更新される。ガード修正子命令自体はガード可能であ
る。
【0030】アドレスユニット19に供給されるガード修
正子命令の場合には、新しい値は、アドレスユニット19
のスロット0または1パイプラインでの命令の実行に基づ
いて計算され、新しい値は、実行パイプラインの終わり
でアドレスユニット19のアドレスガードレジスタファイ
ル100に書きこまれる。しかし、新しいガード値はデー
タユニット18の主ガードレジスタファイル27に転送さ
れ、動作の正しいサイクルで主ファイルを更新しなけれ
ばならない。これを達成するために、制御ユニット12
は、新しいガード値がアドレスユニット19により計算さ
れるアドレスユニット19へのマイクロ命令の供給と同時
に、「受信ガード(receive guard)」マイクロ命令を
データユニット18に供給するように構成されている。こ
の「受信ガード」マイクロ命令は、図面の16で例示さ
れ、新しいガード値を生成するマイクロ命令がアドレス
ユニット19に供給されるのと同じサイクルでデータユニ
ット18の命令発信待ち行列29に追加される。アドレスユ
ニット19の実行パイプラインが新しいガード値を計算す
るとすぐに、その値は転送FIFO117に供給され、データ
ユニット18に供給可能になる。データユニット18に供給
された「受信ガード」マイクロ命令は、ガード修正子命
令と同じ方式でデータユニット18により処理される、た
だし新しいガード値を計算する必要はなくFIFO117から
確保しさえすればよい。
【0031】ガード値を生成するマイクロ命令は、「受
信ガード」マイクロ命令がデータユニット18のIDQ29に
供給されるのと同じサイクルでアドレスユニット19のID
Q41に供給される。上記で説明したように、2つのユニ
ットの間で同期が達成されるので、FIFO117を介して転
送された新しいガード値は、命令実行の順序の正確な点
で主レジスタファイル27を更新する。
【0032】ロードGR命令を実行して、アドレスユニッ
ト19のデータユニット20のメモリ20からガードレジスタ
ファイル27と100にロードすることができる。この命令
は、ロードデータレジスタとロードポインタレジスタ命
令として処理され、正確な値がメモリから確保されロー
ドデータ待ち行列60に配列される。ロードデータ待ち行
列60からアドレスユニット19とデータユニット18への転
送は独立して実行され、両ユニットが適切なデータを読
むまでデータはロードデータ待ち行列60に維持される。
ガードレジスタ27と100にロードする必要のある命令発
信待ち行列29と41のマイクロ命令は、データユニット18
とアドレスユニット19の両方の実行部からガード修正子
命令が空になるまで、機能停止される。その時点では、
ロードガードレジスタ命令は、他のガード修正子命令と
競合することなく、ロードデータ待ち行列60からガード
レジスタファイルに必要な値の転送を進めることができ
る。
【0033】基本的なガードの機構を説明してきたが、
これから分岐化を説明する。制御ユニットは、コンピュ
ータシステムのあらゆる制御活動を担当している。中で
も、制御ユニットは、現命令および/または内部および
外部事象に応じて、プログラムカウンタとアドレス生成
器80を更新する。特に、制御ユニットは、プログラムア
ドレス生成および命令取出しおよび発信を実行する。プ
ログラムカウンタ80はアドレスを制御して、アドレスに
基づいて、命令がプログラムメモリから取り出される。
分岐を実行するために、プログラムカウンタ80には、分
岐化のための目標アドレスを保持する取出し分岐アドレ
スユニット18が備えられている。目標アドレスは、分岐
が形成される命令の順序での第1命令のアドレスであ
る。分岐位置アドレスは、分岐命令が見出される実行命
令列のアドレスである。
【0034】汎用ユニット21はプログラム分岐アドレス
計算すべてを実行し、計算された目標アドレスを制御ユ
ニットの取出し分岐アドレスユニット218にバス23を介
して転送する。このために、汎用ユニット21は分岐プロ
グラムカウンタ220を備えている。通常の動作では、分
岐命令が現在実行中の命令列に見出されると、この分岐
命令は、通常の命令について前述されたように、復号器
に供給されて、汎用ユニット21に供給されるマイクロ命
令を含む適切なマイクロ命令を生成する。分岐命令がG1
5以外のガードインディケータで保護されている場合、
分岐が定められる以前、すなわち、ガード値に応じて分
岐が取られるかどうかが判定される以前で、数マシンサ
イクル後となりうる。分岐命令が制御ユニット12のパイ
プライン式段を介して、それ自体パイプライン式である
汎用ユニット21に送られている間は、マシンサイクルを
「浪費」しないようにその後の命令の取出しと復号を継
続するのが有益であろう。しかし、分岐命令が復号器に
供給されると、コンピュータシステムは、その時点で、
実行する命令が分岐の目標アドレスで始まる命令または
分岐位置アドレスのすぐ後の元の命令列の命令であるか
は把握していない。これは、分岐が定められる方法、す
なわち、分岐が取られるかどうかに左右される。本明細
書で説明されるコンピュータシステムでは、命令が復号
器により応答される場合、命令はパイプライン式実行ユ
ニットに供給されることに注意すべきである。すなわ
ち、復号器は、命令にとって「帰還不能点」である。現
在記載されている実施例によるコンピュータシステム
は、分岐が取られない場合、すなわち、コンピュータシ
ステムが分岐位置アドレスの後の元の命令列の命令の実
行を継続する場合には、意義深い改良がなされている。
分岐が取られると、制御ユニット12の事前取出し段か
ら、分岐位置の後の通常の列の思惑的に取り出された命
令すべてが流し出される。
【0035】本実施例におけるこの改良を達成する機構
は、ガード付き命令実行の使用に依存している。通常の
命令では、上記のように、指定されたガードが真の場合
に命令が実行され、そうでない場合には、命令は無動作
命令化または無効になる(マシンの構成状態に全く影響
を及ぼさない)場合となるであろう。しかし、本明細書
で記載されているコンピュータシステムは、偽ガードで
ガードされる分岐、すなわち、指定されたガードが偽の
場合に取られる分岐を可能にする。これらには、偽ガー
ド分岐を示すためbrfと注釈がついている。他のあらゆ
る命令では、指定されたガードインディケータが真の場
合命令が実行され、そうでない場合に、命令は「無動作
命令化」される。命令の無動作化とは、実際上、命令が
マシンの構成状態にいかなる影響も及ぼさないことを意
味している。これは、命令の特質に応じて様々な方式で
実施される。すべての分岐命令が本コンピュータシステ
ムで偽ガードされる必要はない。システムは、通常にガ
ードされる分岐命令の実行を可能にするが、こうした命
令は本明細書ではこれ以上説明されない。
【0036】命令列では、分岐シャドウは、分岐のガー
ドインディケータと同じガードインディケータでガード
された通常の命令により偽ガード分岐命令brfの後の命
令を見つけ出すことで作成可能である。任意の数のこう
した命令を分岐シャドウに見出すことができる。分岐シ
ャドウは、分岐化用語における遅延スロットと通常考え
られるものを構成していると理解される。
【0037】しかし、遅延スロットまたは分岐シャドウ
の大きさは事前設定されていない。プログラマーと同じ
数の命令が含まれる。ただし、これらの命令が偽ガード
分岐と同じ分岐インディケータでガードされている場合
に限る。
【0038】典型的な命令列を以下に示す。 Gy? instr1 :Gyが真の場合instr1を実行する。 Gx? brf(アドレス):Gxが偽の場合アドレスに分岐する。 分岐(Gx? instr2 :Gxが真の場合instr2を実行する。 シャドウ(Gx?instr3 :Gxが真の場合instr3を実行する。
【0039】復号器82は、偽ガード分岐のガードインデ
ィケータの検出により分岐シャドウに帰属する規則に命
令が応じているかどうかを判定し、その命令とその後の
各命令のガードインディケータを比較する構成を備えて
いる。復号器が偽ガード付き分岐を検出すると、復号器
は「分岐シャドウ」モードに入る。このモードでは、復
号器は、偽ガード付き分岐と同じガードインディケータ
にガードされる命令とnops(無動作命令)にしか応答し
ない。nopsとは「無動作」命令(no operationinstruct
ion)のことで、マシンの構成状態に全く影響を及ぼさ
ないので無条件に分岐シャドウを通過する。無動作命令
は、命令が分岐シャドウの規則を破るとすぐ、すなわ
ち、他の分岐命令が発生する場合や、偽ガード付き分岐
のガードインディケータでガードされない命令や、無条
件命令などの場合、応答の発行を停止させる。無動作命
令は、汎用ユニット21が分岐を取るか取らないかを定め
るとすぐ分岐シャドウモードから脱出する。すなわち、
偽ガード付き分岐は復号器自体で検出されて、分岐シャ
ドウモードを設定する。分岐シャドウモードは汎用ユニ
ット21から復号器82への線224上の信号により設定が解
除されて、分岐が定められたことを示す。
【0040】復号器82の分岐シャドウモード回路構成は
図2に示されている。命令は、INSTRと記された線に沿っ
てプログラムメモリ11から復号ブロック226に供給され
る。復号ブロック226は、マイクロ命令生成器98への出
力としてスロット0ないし3で復号命令を生成する。さら
に、復号ブロック226は、3つのガード関連出力を生成
する。第1ガード関連出力228は、通常ガード付き命令
を示している。第2出力230は、偽ガードに基づいてガ
ードされたガード付き分岐を示している。第3出力232
は、到来命令のガードインディケータである。偽ガード
付き分岐230が指示されると、線232上のガードインディ
ケータはフリップフロップ234に保持される。フリップ
フロップ234はその入力端にマルチプレクサ236を備え
て、分岐シャドウモード時には分岐ガードインディケー
タが帰還経路236により循環化され、分岐シャドウモー
ドではない時には到来命令のガードインディケータが保
持される。分岐シャドウモード時には、到来命令のガー
ドインディケータは比較器240に供給される。この比較
器240は、比較のために再循環された分岐ガードインデ
ィケータを受け取る。フリップフロップ34で循環化した
偽ガード分岐のガードインディケータと同じガードで現
命令がガードされているときには、比較器の出力信号gu
ard_oppが設定される。信号guard_oppが設定されると、
命令が応答され、さらなる命令が復号器に供給されつづ
ける。信号guard_oppが設定されないと、命令は応答さ
れず、制御ユニットはさらに命令が供給されないように
適切な動作を取る。復号器が分岐シャドウモードにない
時には、ガードインディケータ232はフリップフロップ2
34を介して比較器に直接送られるだけである。比較器で
は、このガードインディケータが比較されて、guard_op
pが設定されつづける。
【0041】復号器の分岐検出回路構成は、偽ガード付
き分岐命令の後の命令をコンピュータを介して供給しつ
づける機能をもつ、ただしこれらの命令が偽ガード付き
分岐と同じガードインディケータで保護されている場合
に限る。したがって、分岐が取られない場合、すなわ
ち、ガードが偽ではない場合、ガードが真であることを
意味し、このことは、必然的に許容された以後の命令す
べての実行が継続することを意味する。したがって、分
岐がとられない状況における不利益が本質的に減ずるこ
とになる。当然のことながら、分岐が取られると、すな
わち、ガード値が偽の場合、その後の命令は自動的に動
作停止化または無効にされる、というのはそれらのガー
ドインディケータは偽として判定されるからである。し
たがって、コンピュータシステムは、これらの命令を実
行しなくする追加動作を取る必要はなくなる。当然、こ
こでは時間面で不利益を被る。しかし、これは分岐が取
られたときのみである。分岐が取られないときには、前
述のシステムは関連する時間面の不利益を本質的に低下
させることになる。A-IDQ41の分岐命令の専用分岐スロ
ット41aに戻ると、最後に発生する不適切な実行が全く
影響を及ぼさない理由が今度は明確になっている。復号
器は、分岐シャドウの規則に従っている命令以外の分岐
命令の後のすべての命令を遮断する。そうして、分岐が
取られない場合には、非分岐の後ではこうした命令は通
常実行される。(すなわち、これらの命令が分岐に対し
て不適切に実行されなかったという事実が全く影響を及
ぼさなくなる。)分岐が取られると、これらの命令は再
び動作停止され、これらの命令が分岐に関して不適切に
実行されたという事実が全く影響を及ぼさなくなる。
【0042】分岐命令の後の動的分岐シャドウでできる
だけ多くの命令を見つけ出せばプログラマは改良レベル
を最大化できることが理解できるであろう。プログラマ
(またはソフトウェアツール鎖、コンパイラなど)は、
ゼロから最高N個の命令までを分岐シャドウに入力す
る。次いで、ハードウェアは動的に、早い段階で定義さ
れたシャドウ規則に合致する命令を取る。分岐シャドウ
に入力された各命令は、分岐を定めるためにマシンが取
るサイクルの数に応じた有用な最高数にまで分岐が取ら
れないときの不利益を減ずる。
【0043】データユニット18がアドレスユニット19か
ら離れているので、データユニット命令は、制限を受け
ることなく、分岐シャドウに入れることにも注意すべき
である。
【図面の簡単な説明】
【図1】コンピュータシステムのブロック図である。
【図2】分岐化のためのガードインディケータ検出回路
のブロック図である。
【符号の説明】
11 プログラムメモリ 12 制御ユニット 18 データユニット 19 アドレス装置 21 汎用ユニット 26 共通データレジスタファイル
───────────────────────────────────────────────────── フロントページの続き (71)出願人 599124688 7 Avenue Gallieni, 94250 Gentilly, Franc e (72)発明者 ステファンヌ、ブビエ フランス国サン、ティスミエ、ルート、 ド、シャンベリ、2547

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】ガードインディケータが真の場合に実行さ
    れる通常の命令とガードインディケータが偽の場合に実
    行される分岐命令を含む命令に含まれている前記ガード
    インディケータに基づく命令を実行するコンピュータシ
    ステムであって、 命令供給回路構成と、 前記供給回路構成から命令を受け取る少なくとも1つの
    実行ユニットと、 分岐命令を検出し、前記分岐命令のガードインディケー
    タを保持し、分岐シャドウモードを設定する分岐検出回
    路構成と、 前記分岐命令のガードインディケータとその後の命令に
    含まれたガードインディケータを比較して、前記ガード
    インディケータが一致すると命令を供給しつづけ、前記
    ガードインディケータが一致しない場合には命令の供給
    を防ぐように前記分岐シャドウモードで動作可能な手段
    と、 前記ガードインディケータの状況を定めることで前記分
    岐が取られるかどうかといった前記分岐命令が判定され
    るときに前記分岐シャドウモードを不能にする手段とを
    備えたことを特徴とする前記コンピュータシステム。
  2. 【請求項2】前記命令を復号する復号器を含み、前記分
    岐検出回路構成は前記復号器にあることを特徴とする請
    求項1に記載のコンピュータシステム。
  3. 【請求項3】前記命令供給回路構成から前記各命令を受
    け取る複数の並列実行ユニットを含み、各命令は、前記
    複数の実行ユニットに共通のガードインディケータの集
    合から選択された各ガードインディケータを含んでいる
    ことを特徴とする請求項1または2に記載のコンピュー
    タシステム。
  4. 【請求項4】前記複数の実行ユニットの1つが、前記ガ
    ードインディケータの集合の中のガードインディケータ
    の現値の主表示を含む主ガード値記憶部を備えており、
    前記実行ユニットの他の1つは、分岐命令の実行を担当
    し、前記他の実行ユニットは前記主記憶部から分岐命令
    を定めるガード値を要求し受け取るよう動作することを
    特徴とする請求項3に記載のコンピュータシステム。
  5. 【請求項5】前記命令供給回路構成は、分岐目標アドレ
    スを保持する取出し分岐アドレスユニットを備えた制御
    ユニットを含むことを特徴とする請求項1ないし4のい
    ずれかに記載のコンピュータシステム。
  6. 【請求項6】前記の各実行ユニットは、複数のパイプラ
    イン段を含み、複数の実行ユニットがあるときには前記
    実行ユニットそれぞれのパイプラインサイクルが同期化
    されることを特徴とする請求項1ないし5のいずれかに
    記載のコンピュータシステム。
  7. 【請求項7】命令を供給し、復号し、実行する複数のパ
    イプライン段を含むことを特徴とする請求項1ないし6
    のいずれかに記載のコンピュータシステム。
  8. 【請求項8】前記実行ユニットは、データメモリへのア
    クセスをする複数の実行パイプラインを含み、前記複数
    のパイプラインはメモリアクセス動作に必要な実行され
    た命令で使用されるパイプラインの第1集合と、算術演
    算を実行するよう構成され、算術演算からメモリアクセ
    ス動作を切り離すパイプラインの第2集合と、分岐命令
    を実行する第3パイプラインと、を含むことを特徴とす
    る請求項3に記載のコンピュータシステム。
  9. 【請求項9】前記第2のパイプライン集合と第3パイプ
    ラインは、前記パイプラインへのアクセスを待機する命
    令を保持する命令待ち行列を共有し、前記第3パイプラ
    インは、前記命令待ち行列からの命令が前記パイプライ
    ンに供給されつづけている間に決定を待機している分岐
    命令を保持する専用スロットを備えていることを特徴と
    する請求項8に記載のコンピュータシステム。
  10. 【請求項10】ガードインディケータが真の場合には実
    行される通常の命令とガードインディケータが偽の場合
    には実行される分岐命令を含む命令に含まれた前記ガー
    ドインディケータに基づいたコンピュータシステムで命
    令を実行する方法であって、 少なくとも1つの実行ユニットに命令を供給する過程
    と、 分岐命令を検出し、こうした検出に応じて、前記分岐命
    令の前記ガードインディケータを保持して分岐シャドウ
    モードを設定する過程と、 前記分岐シャドウモードでは、前記分岐命令のガードイ
    ンディケータとその後の命令に含まれたガードインディ
    ケータを比較し、前記ガードインディケータが一致する
    と命令を供給しつづけ、前記ガードインディケータが一
    致しないと命令の供給を停止する過程と、 前記ガードインディケータの状況を定めることで分岐が
    取られるかどうかなど分岐命令が判定されると前記分岐
    シャドウモードを不能にする過程と、を含むことを特徴
    とする方法。
  11. 【請求項11】通常命令は実行ユニットの第1集合に供
    給され、分岐命令は実行ユニットの第2集合に供給され
    ることを特徴とする請求項10に記載の方法。
  12. 【請求項12】前記実行ユニットの第1集合は、前記ガ
    ードインディケータの現在値の主表現を含む主ガード値
    記憶を保持し、ガードインディケータの値を実行ユニッ
    トの前記第2集合に転送して前記分岐を定める過程を含
    むことを特徴とする請求項11に記載の方法。
JP2000135141A 1999-05-03 2000-05-08 コンピュータシステム Pending JP2000330788A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP99410061.8 1999-05-03
EP99410061A EP1050811A1 (en) 1999-05-03 1999-05-03 Branching in a computer system

Publications (1)

Publication Number Publication Date
JP2000330788A true JP2000330788A (ja) 2000-11-30

Family

ID=8242264

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000135141A Pending JP2000330788A (ja) 1999-05-03 2000-05-08 コンピュータシステム

Country Status (3)

Country Link
US (1) US6725365B1 (ja)
EP (1) EP1050811A1 (ja)
JP (1) JP2000330788A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020025687A (ko) * 2000-09-28 2002-04-04 포만 제프리 엘 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서
JPWO2013080289A1 (ja) * 2011-11-28 2015-04-27 富士通株式会社 信号処理装置及び信号処理方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158695A1 (en) 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
GB2366006B (en) * 1999-12-23 2004-06-30 St Microelectronics Sa A computer system with debug facility
US6785804B2 (en) * 2001-05-17 2004-08-31 Broadcom Corporation Use of tags to cancel a conditional branch delay slot instruction
US6883090B2 (en) * 2001-05-17 2005-04-19 Broadcom Corporation Method for cancelling conditional delay slot instructions
US6859874B2 (en) 2001-09-24 2005-02-22 Broadcom Corporation Method for identifying basic blocks with conditional delay slot instructions
US6988187B2 (en) * 2002-03-21 2006-01-17 Sony Computer Entertainment Inc. Counting instructions to skip in superscaler processor
JP3738842B2 (ja) * 2002-06-04 2006-01-25 富士通株式会社 遅延分岐機能を備えた情報処理装置
GB0215029D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Strand based execution
KR100628573B1 (ko) * 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
US10275393B2 (en) * 2015-10-08 2019-04-30 Via Alliance Semiconductor Co., Ltd. Tri-configuration neural network unit
US20220207148A1 (en) * 2020-12-26 2022-06-30 Intel Corporation Hardening branch hardware against speculation vulnerabilities

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775927A (en) * 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
KR940000968B1 (ko) * 1989-08-28 1994-02-07 니뽄 덴끼 가부시끼가이샤 마이크로프로세서
US5446849A (en) * 1990-11-30 1995-08-29 Kabushiki Kaisha Toshiba Electronic computer which executes squash branching
JP3494484B2 (ja) * 1994-10-12 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
US5799180A (en) * 1995-10-31 1998-08-25 Texas Instruments Incorporated 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
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
WO1998008160A1 (en) * 1996-08-20 1998-02-26 Idea Corporation A method for identifying hard-to-predict branches to enhance processor performance

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020025687A (ko) * 2000-09-28 2002-04-04 포만 제프리 엘 마이크로프로세서의 명령 처리 방법 및 마이크로프로세서
JPWO2013080289A1 (ja) * 2011-11-28 2015-04-27 富士通株式会社 信号処理装置及び信号処理方法

Also Published As

Publication number Publication date
US6725365B1 (en) 2004-04-20
EP1050811A1 (en) 2000-11-08

Similar Documents

Publication Publication Date Title
US6732276B1 (en) Guarded computer instruction execution
US20240411559A1 (en) Variable latency instructions
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US7111126B2 (en) Apparatus and method for loading data values
KR960001274B1 (ko) 트랩 및 스톨 제어기능을 갖는 병렬처리형 프로세서 시스템
JP2000330788A (ja) コンピュータシステム
EP0357188B1 (en) Pipelined processor
JPH02224025A (ja) コンピューターシステム
JP2003029986A (ja) プロセッサ間レジスタ継承方法及びその装置
JP2002268878A (ja) スレッド間優先度可変プロセッサ
US12223327B2 (en) CPUs with capture queues to save and restore intermediate results and out-of-order results
US20230350681A1 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
TW201734768A (zh) 分支指令
US6701425B1 (en) Memory access address comparison of load and store queques
US7496737B2 (en) High priority guard transfer for execution control of dependent guarded instructions
CN108834427B (zh) 处理向量指令
US6769049B1 (en) Memory access in a computer system having parallel execution pipelines
CN113853584B (zh) 可变延时指令
JPH06266556A (ja) データ処理装置
EP1050805B1 (en) Transfer of guard values in a computer system
JPH0250259A (ja) ベクタープロセッサによって非同期メモリ管理例外を取り扱う方法及び装置
JP3017866B2 (ja) 割込み処理方式
KR20030097018A (ko) 잘못된 분기 예측의 페널티를 최소화 또는 제거할 수 있는방법 및 이를 이용한 명령어 페치회로
JPH07200294A (ja) 遅延分岐実行機能を備えたプロセッサ装置
JPH02211533A (ja) 分岐命令に続く命令の選択的実行を行うためのコンピューター装置