JPH11345122A - プロセッサ - Google Patents
プロセッサInfo
- Publication number
- JPH11345122A JPH11345122A JP11134565A JP13456599A JPH11345122A JP H11345122 A JPH11345122 A JP H11345122A JP 11134565 A JP11134565 A JP 11134565A JP 13456599 A JP13456599 A JP 13456599A JP H11345122 A JPH11345122 A JP H11345122A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- processor
- execution
- instructions
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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
ザードを回避する。 【解決手段】 レジスタロック50のセットが、ビット
ベクトルの形式で管理される。各ビットは、対応するレ
ジスタ36の現在のロックステータスを示す。プロセッ
サのデコードユニット34は、メモリからフェッチされ
た命令をデコードしてソースレジスタおよびデスティネ
ーションレジスタを決定する。それらのレジスタのいず
れかが既にロックしている場合に、少なくとも1プロセ
ッササイクルの間、命令はストールされる。このストー
ルは、命令のソースレジスタおよびデスティネーション
レジスタがいずれもアンロックされるまで継続する。命
令が実行のためにディスパッチされる前に、命令のデス
ティネーションレジスタがロックされる。このロック
は、命令が実行を完了し結果をデスティネーションレジ
スタに書き込むまで維持される。
Description
サおよびその他のタイプのディジタルデータプロセッサ
に関し、特に、パイプライン処理技術を利用するディジ
タルデータプロセッサに関する。
なわち、各命令の実行がいくつかのステージに分けられ
ていることが多い。図1は、従来のパイプラインプロセ
ッサ10の機能ブロック図である。この例示的なパイプ
ラインプロセッサは、4個のステージ、すなわち、フェ
ッチ(F)ステージ12、デコード(D)ステージ1
4、実行(E)ステージ16、およびライトバック
(W)ステージ18を有する。プロセッサ10のような
パイプラインプロセッサは、レジスタ方式であることが
可能である。すなわち、命令のロード用およびストア用
の他に、各命令のソースおよびデスティネーションがレ
ジスタであることが可能である。フェッチユニット12
は、命令メモリから命令を取り出す。デコードステージ
14は、命令のソースレジスタを読み取り、ライトバッ
クステージ18は命令のデスティネーションレジスタに
書き込む。実行ステージ16では、命令が、4つの特殊
な実行ユニットのうちの1つによって実行される。それ
らの実行ユニットは、1サイクルの整数(I)ユニット
20、8サイクルの整数/浮動小数点乗算器(M)2
2、4サイクルの浮動小数点加算器(Fadd)24、
および、15サイクルの整数/浮動小数点除算器(Di
v)26である。この例の実行ユニットは完全にパイプ
ライン化されている。すなわち、いずれのクロックサイ
クルでも新しい命令を受け入れることができる。これら
の特殊ユニットは、特定のタイプの命令を実行するため
に使用され、それぞれのユニットは相異なるレイテンシ
を有する。命令は、デコードステージ14でレジスタ読
み出しを完了し、実行ステージ16で実行を開始したと
き、「ディスパッチ」されたという。換言すれば、ディ
スパッチは、命令がデコードステージ14から実行ステ
ージ16内の実行ユニットのうちの1つに渡るときに起
こる。
プラインプロセッサの重大な問題点は、パイプラインが
ないときには存在しないデータハザードがパイプライン
の使用により生じることである。その理由は、前の命令
の結果が後の命令で利用可能であるとは限らないからで
ある。さらに、インオーダ(プログラムの順序通りの)
命令ディスパッチの場合でも、異なる実行ユニットで同
時にアクティブになることが可能である場合には、実行
ユニットの相異なるレイテンシにより制御ハザードが生
じ、アウトオブオーダ(プログラムの順序通りでない)
命令完了が起こりうる。データハザードおよび制御ハザ
ードは一般に、パイプラインプロセッサの正しい動作を
保証するためには避けなければならない。
に一般的なデータハザードは、RAW(read after wri
te:書き込み後読み出し)データハザードというもので
ある。図2のAに、例示的なRAWデータハザードを示
す。この図は、図1のパイプラインプロセッサ10がプ
ロセッサクロックサイクル1〜5の間にどのようにして
add(加算)命令i1およびi2を実行するかを示す。
命令i1は、ソースレジスタr2とr3の内容を加算し、
その結果をデスティネーションレジスタr1に書き込
む。命令i2は、ソースレジスタr5とr1の内容を加算
し、その結果をデスティネーションレジスタr4に書き
込む。理解されるように、他に対策を講じなければ、従
来のプロセッサ10において命令i2はクロックサイク
ル3でレジスタr1を読み出すことになるが、これはr1
の新しい値が命令i1によって書き込まれる前である。
非パイプラインプロセッサでは、図2のAに示した命令
はハザードを生じることはない。命令i2の開始前に命
令i1は完了しているからである。
サで起こりうるWAW(write after write:書き込み
後書き込み)という、それほど一般的でないデータハザ
ードを例示する。この例でプロセッサは、プロセッサク
ロックサイクル1〜11の間に命令i1およびi2を実行
する。命令i1は、ソースレジスタr2とr3の内容を乗
算し、その結果をデスティネーションレジスタr1に書
き込む。命令i2は、ソースレジスタr4とr5の内容を
加算し、その結果をデスティネーションレジスタr1に
書き込む。理解されるように、他に対策を講じなけれ
ば、従来のプロセッサにおいて命令i2はクロックサイ
クル5でレジスタr1に書き込むことになるが、これは
命令i1による書き込みの前であり、その後、i1は、ク
ロックサイクル11で、レジスタr1において、i2の結
果に誤って上書きすることになる。このタイプのハザー
ドは、例えば、i1とi2の間に静的に誤予測された分岐
に対してコンパイラによって投機的に命令i1が発行さ
れた場合に起こりうる。インオーダ命令完了の場合、命
令i1は結果に影響を与えない。インオーダ完了ではi1
の結果は捨てられるからである。しかし、上記のよう
に、アウトオブオーダ命令完了がある場合には、ハザー
ドは重大である。
サで起こりうる制御ハザードの例を示す。制御ハザード
は一般に、命令ストリームにおけるジャンプ(分岐)に
より生じる。例えば、分岐が成立すると、命令アドレス
レジスタ(プログラムカウンタとして作用する)は新し
い値に変わる。その結果、既にパイプライン内にフェッ
チされているが実行されるべきでない命令が存在しう
る。図2のCの例では、制御ハザードは、命令i1〜i4
がクロックサイクル1〜11の間に実行されるときに起
こる。命令i2は、ソースレジスタr4の内容が特定の値
である場合にlabelすなわち命令i4へ分岐する分
岐命令brzである。図1のパイプラインプロセッサ1
0では、分岐命令i2の結果は、i2がクロックサイクル
5のライトバック(W)に到達するまで有効でないと仮
定する。分岐が成立した場合、制御は、命令i3に到達
することなく命令i4にジャンプすべきであるが、この
ことがわかるときまでに命令i3は既に実行中である。
問題点を解決するためにいくつかの技術が開発されてい
る。そのような技術の1つは「スコアボーディング」と
して知られているものであり、スコアボードという中央
コントローラを用いて命令の動的スケジューリングを行
うことにより、アウトオブオーダ命令発行を可能にする
ものである。このアプローチは、Control Data 6600コ
ンピュータに結びつけられることが多く、さらに詳細に
は、D. A. Patterson and J. L. Hennessy, "Computer
Architecture: A Quantitative Approach", Second Edi
tion, Morgan Kaufmann, San Francisco, CA, USA, pp.
240-251, 1996、に記載されている。同じく動的スケジ
ューリングを利用してアウトオブオーダ命令発行に対処
する関連技術にはTomasuloアルゴリズムとして知られて
いるものがあり、上記のD. A. Patterson and J. L. He
nnessyの文献の第251〜261ページに記載されてい
る。別の知られている技術には、リオーダ(reorder:
並べ替え)バッファ(リタイアバッファ(retire buffe
r)ともいう。)を利用するものがある。この技術によれ
ば、レジスタへの実行直後のライトバックを許すのでは
なく、シーケンシャルなプログラム順序でのライトバッ
クが可能になるまで結果はリタイアバッファに記憶され
る。
来技術はパイプラインハザード問題を解決することが可
能であるが、これらの技術は一般に、プロセッサに大幅
に複雑さを追加することを必要とする。例えば、スコア
ボーディングは別個の中央制御ユニットを必要とし、To
masuloアルゴリズムは、ブロードキャスト結果バス、レ
ジスタリネーミング(名前替え)機構、およびリザベー
ションステーションのような追加構造を必要とし、リタ
イアバッファは、結果記憶領域および並べ替えロジック
を必要とする。従って、パイプラインハザードを回避す
るための別のさらに簡単な機構が必要とされている。
プロセッサにおいて実行ユニットレイテンシおよびアウ
トオブオーダ命令完了によって引き起こされるハザード
を回避する方法および装置を実現する。本発明によれ
ば、プロセッサは、実行ユニットの実際のレイテンシを
無視し、実質的に単一サイクル実行であるかのように扱
うことが可能となる。そこで、本発明のこの特徴を、
「仮想単一サイクル実行」あるいは「インペーシャント
(impatient)実行」と呼ぶ。本発明によれば、レジスタ
にロックをかけ、レジスタロックステータスによる判定
で必要なときに命令をストールすることによって、デー
タハザードおよび制御ハザードは回避される。命令はプ
ログラム指定の順序でディスパッチされるが、別の順序
で実行完了することが許される。これは、実行ユニット
の真のレイテンシを隠蔽し、各命令の実行が単一プロセ
ッササイクルで完了しているかのように命令デコードユ
ニットが命令のディスパッチを継続することを可能にす
る。
ットが、記憶されたビットベクトルの形式で管理され
る。ここで、各ビットは、対応するレジスタの現在のロ
ックステータスを示す。プロセッサのデコードユニット
は、メモリからフェッチされた命令を受け取り、その命
令をデコードして、ソースレジスタおよびデスティネー
ションレジスタを決定する。ソースレジスタまたはデス
ティネーションレジスタのいずれかが既にロックしてい
る場合に、少なくとも1プロセッササイクルの間、命令
はストールされる。このストールは、命令のソースレジ
スタおよびデスティネーションレジスタがいずれもアン
ロックされるまで、すなわち、他の命令による使用中で
なくなるまで、継続する。命令が実行のためにディスパ
ッチされる前に、命令のデスティネーションレジスタが
ロックされ(locked)、このロックは、命令が実行を完了
しその結果をデスティネーションレジスタに書き込むま
で維持される。
ードによって阻止されるときを除いて、各プロセッササ
イクル中に実行へとディスパッチされることにより、個
々の実行ユニットのレイテンシを実質的にマスクする。
本発明は、複雑なロジックや、他の追加回路構造を必要
とせず、また、本発明を用いて、異なるプロセッサ実装
間のオブジェクトコード互換性を提供することができ
る。
ロセッサの例示的な実装に関連して以下で説明する。し
かし、理解されるべき点であるが、本発明は、さらに一
般的に、実行ユニットを実質的に単一サイクル実行を行
うものとして扱う(すなわち、「仮想」単一サイクル実
行を提供する)ことが所望される任意のプロセッサに適
用可能である。本明細書で用いられる「プロセッサ」と
いう用語は、メモリなどの記憶要素から取得される命令
が1個以上の実行ユニットを用いて実行されるような任
意のデバイスを含むものとする。従って、本発明による
プロセッサの例としては、マイクロプロセッサ、特定用
途向け集積回路(ASIC)、パーソナルコンピュー
タ、メインフレームコンピュータ、ネットワークコンピ
ュータ、ワークステーションおよびサーバや、その他の
タイプのデータ処理装置を含む。
ラインプロセッサの一部を示す。このプロセッサは、フ
ェッチユニット32、デコードユニット34およびレジ
スタ36のセットを有するプロセッサコア30を含む。
命令は、フェッチユニット32によって命令メモリから
フェッチされ、デコードユニット34に送られる。デコ
ードユニット34は、命令をデコードし、その命令に関
連する1個以上のソースレジスタからデータを読み出
し、命令および必要なデータを実行ユニットのうちの1
つに送る。この実施例の実行ユニットは、メモリ(Me
m)実行ユニット38、1サイクルの整数(I)ユニッ
ト40、8サイクルの整数/浮動小数点乗算器(M)4
2、4サイクルの浮動小数点加算器(Fadd)44、
および15サイクルの整数/浮動小数点除算器(Di
v)46を有する。これらの実行ユニットは従来通りに
動作するのでここで詳細には説明しない。実行ユニット
で実行された演算の結果は、レジスタ36のセットにお
ける1個以上の指定されたデスティネーションレジスタ
に記憶される。例えば従来のロードおよびストア命令を
用いて、レジスタ36と、プロセッサコア30の外部の
データメモリとの間でデータを移動することが可能であ
る。強調されるべき点であるが、プロセッサコア30内
の要素のタイプおよび配置は単なる例示であり、本発明
は、これらおよびその他の要素のいくつもの代替構成で
実装可能である。
ユニット34によって順番に実行のためにディスパッチ
されると仮定する。この順序は、命令を含むプログラム
によって指定される。また、実行に到達した命令が、完
了し結果をライトバックすることが可能となると仮定す
る。換言すれば、命令はディスパッチ時にコミットされ
る。
ット34は、レジスタロック50のセットを有する。レ
ジスタロック50は、レジスタ36のセット内のレジス
タの少なくともサブセットの各レジスタに対するロック
指示を提供する。一般に、プロセッサコア30は、ハザ
ードにつながる可能性のある演算が実行されるときにレ
ジスタをロックするように構成される。あるレジスタが
ある命令によって必要とされ、そのレジスタのロック指
示が、そのレジスタがロックされていないことを示して
いる場合、その命令は自由にそのレジスタを使用するこ
とができる。しかし、ロック指示が、そのレジスタがロ
ックされていることを示している場合、その命令は、そ
のレジスタを使用する前に、そのレジスタがアンロック
されるまで待機する。以下で詳細に説明するように、レ
ジスタロック50を、適当な命令ストールとともに用い
て、データハザードおよび制御ハザードを回避すること
ができる。本発明におけるこのレジスタロックおよび命
令ストールのプロセスを「仮想単一サイクル実行」ある
いは「インペーシャント実行」という。
50のセットの1つの可能な実装を示す。この実装で
は、レジスタロック50は、いくつかのビットを含む記
憶されたビットベクトルの形式である。ビットベクトル
の各ビットは、論理的に、レジスタ36のセット内のレ
ジスタのうちの1つに対応する。この例では、レジスタ
36のセットは全部で32個のレジスタを含むと仮定す
る。従って、レジスタロック50は32ビットであり、
図示のようにr0,r1,...,r31で表す。各ビットri
は、対応するレジスタ36のロックステータスを示す。
各ビットriは、対応するレジスタがアンロックされて
いるときに0にセットされ、対応するレジスタがロック
されているときに1にセットされる。このように、レジ
スタロック50は、各レジスタ36のロックステータス
の指示を行う。図3のAの実施例ではデコードユニット
34内に実装されるように図示されているが、本発明に
よるロック機構は、いずれかのレジスタ36において、
または、プロセッサコア30の別の構成要素内に、ある
いは、コア30内の独立要素としてのいずれでも提供可
能である。
サがRAWデータハザードを回避する方法について詳細
に説明する。RAWデータハザードの状況では、ロック
されているレジスタは、まだ完了していない命令によっ
てこれから内容が更新されるレジスタ、すなわち、現在
は内容が不正なレジスタ、とみなすことができる。フェ
ッチユニット32によって取り出されデコードユニット
34でデコードされた命令がレジスタ36のセット内の
ソースレジスタを使用することができる前に、次のregi
ster read(レジスタ読み出し)アルゴリズムを実行す
る。 register read: while(いずれかのソースレジスタがロックされている) 1サイクルストールする; デスティネーションレジスタをロックする; ソースレジスタを読み出す; register readアルゴリズムは、対応するソースレジス
タからまだオペランドを読み出していないすべての命令
に対してストールを行いながら、他のすべての命令の進
行を許す。このアルゴリズムは、デコードユニット34
に組み込まれたレジスタ読み出しユニットとして実装可
能である。図3のAの実施例では、ストールはデコード
ユニット34で実行され、それにより、実行ユニットへ
既にディスパッチされたすべての命令がストールなしで
進行するようにする。レジスタ36のセット内のデステ
ィネーションレジスタに結果をライトバックするときに
は、次のregister writeback(レジスタライトバック)
アルゴリズムを実行する。 register writebackアルゴリズムは、ライトバック動作
が完了した後にデスティネーションレジスタがアンロッ
クされることを保証する。図3のAの実施例では、実行
ユニット38、40、42、44および46のそれぞれ
がこのアルゴリズムを含むように構成される。
図2のAに関して述べたRAWデータハザードを回避す
る様子を例示する。add命令i1およびi2の実行はク
ロック1〜7の間に示されている。理解されるように、
図2のAのRAWハザードは回避される。その理由は、
register readアルゴリズムによれば、命令i2は、ソー
スレジスタr1が利用可能になるまではデコードステー
ジ(D)でストール(st.)するからである。ソース
レジスタr1が利用可能になるのは、命令i1のライトバ
ック(W)ステージの完了後、すなわち、register wri
tebackアルゴリズムによりレジスタr1がアンロックさ
れた後である。
は、WAWデータハザードも回避する。この場合、修正
されたregister readアルゴリズムを用いて、ソースレ
ジスタおよびデスティネーションレジスタの両方がアン
ロックされていることをチェックする。修正register r
eadアルゴリズムは次の通りである。 register read: while(いずれかのソースレジスタまたはデスティネーションレジスタがロ ックされている) 1サイクルストールする; デスティネーションレジスタをロックする; ソースレジスタを読み出す; 前のregister readアルゴリズムの場合と同様に、このr
egister readアルゴリズムは、対応するソースレジスタ
からまだオペランドを読み出していないすべての命令に
対してストールを行いながら、他のすべての命令の進行
を許す。このアルゴリズムもまた、デコードユニット3
4に組み込まれたレジスタ読み出しユニットとして実装
可能である。レジスタ36のセット内のデスティネーシ
ョンレジスタに結果をライトバックするときには、前と
同じregister writebackアルゴリズムを実行し、ライト
バック動作が完了した後にデスティネーションレジスタ
がアンロックされることを保証する。
図2のBに関して述べたWAWデータハザードを回避す
る様子を例示する。図2のBの命令i1およびi2の実行
は、図4のBでは、クロックサイクル1〜14の間に示
されている。理解されるように、図2のBのWAWハザ
ードは回避される。その理由は、修正register readア
ルゴリズムによれば、命令i2は、デスティネーション
レジスタr1が利用可能になるまではデコードステージ
(D)でストールするからである。図4のAの例の場合
と同様に、命令i2は、命令i1のライトバック(W)ス
テージの完了後までストールする。命令i1のライトバ
ック(W)ステージの完了時に、レジスタr1は、regis
ter writebackアルゴリズムによりアンロックされる。
が制御ハザードを回避する方法について詳細に説明す
る。上記のように、本発明のこの実施例におけるインペ
ーシャント実行では、命令が順にディスパッチされるこ
と、および、命令がディスパッチ時にコミットされるこ
とを仮定する。さまざまなタイプの分岐命令の効果につ
いて考える。命令は一般に、分岐が成立するか否かにか
かわらず、論理的に正しい順序で実行されなければなら
ない。従って、分岐後の命令は分岐が解決されるまでス
トールされ、分岐が成立した場合、分岐後の新しい命令
がフェッチされる。プロセッサは、正しい命令を有して
いることを知った後、それをディスパッチする。注意す
べき点であるが、分岐に先行する命令は、分岐後の命令
が開始または完了するときまでに実行を完了してない可
能性がある。このような状況は、本発明によるプロセッ
サでは許容される。その理由は、上記のレジスタロック
が、データハザードが回避されることを保証するからで
ある。
ブ)する必要のない割込みハンドラを考える。このハン
ドラは、例えば、特権的なレジスタのセットを使用し、
ユーザに見えるプロセッサの状態を乱す必要がないもの
である。この場合、割込みハンドラは、フェッチストリ
ーム中に自分の命令を単に入れ始めることが可能であ
る。ユーザプログラム命令は依然として実行中かも知れ
ないが、いずれ完了し、命令が完了するとレジスタロッ
クが更新される。割込みハンドラが終わると、制御は単
に、ディスパッチされなかった最初のユーザプログラム
命令に戻ることが可能である。
要のあるルーチンの呼出しを考える。この場合、以下の
アプローチのうちの1つを使用可能である。 (1)ディスパッチされた命令が実行を完了するのを許
す。 (2)ルーチンによって要求されるレジスタを直ちに保
存しようと試みるが、レジスタロックのステータスは尊
重する。 アプローチ(1)では、すべてのディスパッチされた命
令が実行を完了するのを許した後は、すべてのレジスタ
がアンロックされることが保証される。アプローチ
(2)は、より高速である可能性がある。その理由は、
少数のレジスタしか使用しない被呼出し側保存ルーチン
のほうが、使用する必要のあるすべてのレジスタがアン
ロックされていることを見出す可能性があるからであ
る。このような判定は、例えば、必要なレジスタのビッ
トマスクを図3のBのレジスタロックビットベクトル5
0と比較することによって単一の演算で行うことが可能
である。ルーチンが使用する必要のあるすべてのレジス
タがアンロックされている場合、一部の命令が完了して
いなくても、ルーチンは直ちに保存に進むことが可能で
ある。アプローチ(1)および(2)のいずれの場合
も、レジスタロックを保存することなしに状態を保存す
ることが可能である。その理由は、保存されるすべての
レジスタはアンロックされているためである。呼出しの
最後に、状態は復元(リストア)され、実行は、前にデ
ィスパッチされなかった最初の命令から開始する。
て述べた制御ハザードを回避する様子を例示する。図2
のCの命令i1〜i4の実行は、図4のCでは、クロック
サイクル1〜11の間に示されている。サイクル4で、
分岐命令i2の結果は未知であるため、i2の後の命令に
ついてパイプラインは図示のようにストールされる。サ
イクル5で、分岐命令i2の結果がわかり、命令i3は実
行されるべきではないため、デコードステージ(D)か
ら除去される。同じくサイクル5で、命令i 4がフェッ
チされる。一方、命令i1はサイクル11まで完了しな
い。従って、命令i3の不正実行から生じる制御ハザー
ドは、本発明によるレジスタロックおよびストールを用
いて回避される。
一般に、ある命令が他の結果を待機するようにしている
ので、デッドロック、すなわち、決して来ない結果を命
令が待機する可能性があると思われるかも知れない。し
かし、本実施例では、命令は順にディスパッチされると
仮定しているので、デッドロックは回避される。これは
次のように示すことができる。命令ストリームi1,
i2,...,in,...において、命令inは命令i1,
i2,...,in-1のみに依存する。命令inが1個以上の
命令ikを待機してストールしている場合、それぞれの
このような命令ikに対してk<nであり、命令は順に
ディスパッチされるため、それぞれのこのような命令i
kは既にディスパッチされており、いずれ完了する。注
意すべき点であるが、各命令inは、先行する命令に依
存するという点でのみ制限される。各inは、各命令が
先行する命令または命令パケットのみに依存し、同じパ
ケットの他の命令には依存しない限りにおいて、命令の
パケット{ij,ij+1,...,ij+l}であることも可能
である。
式機械命令(VLIW)プロセッサでも使用可能であ
る。前述のように、命令ストリームは、独立な命令から
なるパケットを含むことが可能である。仮想単一サイク
ル実行により、複合VLIW命令を各サイクルでディス
パッチし、ハザードを回避する必要がある場合にのみス
トールすることが可能である。各VLIW命令は部分ご
とに異なる時刻に完了するかも知れないが、レジスタロ
ックがハザードを防止する。
タ読み出しポートの利用率分布に影響を及ぼす可能性が
ある。本発明は、結果が使用される前あるいは状態が保
存される前に命令がプログラム順に完了したように見え
ることを保証するが、本実施例では、命令が順に完了す
るようには制限されていないため、レジスタは一般に順
に書き込まれるとは限らない。プロセッサが各サイクル
で実行ユニットに1個の命令のみを発行するとしても、
複数の命令が同じサイクルでライトバックに到達する可
能性がある。各サイクルで必要なレジスタ書き込みポー
トの平均個数は一般に同一のままであるが、ピーク個数
は高くなる可能性がある。レジスタ書き込みポートの個
数が制限された実装では、利用可能な個数より多くの書
き込みポートが要求される場合に、一部の命令をストー
ルさせなければならない可能性がある。
イプのパイプライン処理を用いて、さまざまな処理のア
プリケーションおよび環境の要求を満たすように構成す
ることが可能である。従って、上記の本発明の実施例は
単なる例示である。
イプラインハザードを回避するための簡単な機構が、複
雑なロジックや、他の追加回路構造を必要とせずに実現
される。
図である。
うるデータハザードおよび制御ハザードを例示する図で
ある。
セッサの機能ブロック図である。Bは、Aのパイプライ
ンプロセッサで利用可能なレジスタロック機構の1つの
可能な実装を示す図である。
なデータハザードおよび制御ハザードを回避する様子を
説明する図である。
Claims (20)
- 【請求項1】 メモリから取り出した命令をデコードす
るデコードユニットと、 命令の少なくとも一部を実行する実行ユニットと、 命令に関連する少なくとも1つのレジスタを含む複数の
レジスタと、 前記複数のレジスタの少なくともサブセットの各レジス
タのロックステータスを示すロック機構とからなるプロ
セッサにおいて、 前記サブセットは、前記命令に関連するレジスタを含
み、 前記命令に関連するレジスタのロックステータスが、該
命令の実行を許す前にチェックされることを特徴とする
プロセッサ。 - 【請求項2】 前記ロック機構は、複数のビットを有す
る記憶されたビットベクトルの形式のレジスタロックの
セットを有し、各ビットは論理的に前記複数のレジスタ
のうちの1つに関連づけられることを特徴とする請求項
1に記載のプロセッサ。 - 【請求項3】 前記命令に関連するレジスタは、前記命
令のソースレジスタおよびデスティネーションレジスタ
のうちの少なくとも一方を含むことを特徴とする請求項
1に記載のプロセッサ。 - 【請求項4】 前記プロセッサは、複数の実行ユニット
をさらに有し、 前記デコードユニットは、各命令の実行が単一プロセッ
ササイクルで完了したかのように複数の命令を実行ユニ
ットにディスパッチすることを特徴とする請求項1に記
載のプロセッサ。 - 【請求項5】 前記プロセッサは、複数の実行ユニット
をさらに有し、 前記命令は、前記デコードユニットによって実行ユニッ
トのうちの1つにディスパッチされるときに実行がコミ
ットされることを特徴とする請求項1に記載のプロセッ
サ。 - 【請求項6】 前記プロセッサは、複数の実行ユニット
をさらに有し、 プログラムシーケンスによって設定された順序で複数の
命令が前記デコードユニットによって実行ユニットにデ
ィスパッチされるが、命令は異なる順序で実行完了する
ことが許されることを特徴とする請求項1に記載のプロ
セッサ。 - 【請求項7】 レジスタのロックステータスは、該レジ
スタが命令のデスティネーションレジスタであると判定
された場合にロックされることを特徴とする請求項1に
記載のプロセッサ。 - 【請求項8】 命令のソースレジスタおよびデスティネ
ーションレジスタのうちの少なくとも一方が、該レジス
タが既に他の命令によってロックされていることを示す
ロックステータスを有する場合に、該命令は、少なくと
も1つのプロセッササイクルの間ストールされることを
特徴とする請求項1に記載のプロセッサ。 - 【請求項9】 命令のデスティネーションレジスタのロ
ックステータスは、該命令の結果が該デスティネーショ
ンレジスタに書き込まれるとロックからアンロックに変
化することを特徴とする請求項1に記載のプロセッサ。 - 【請求項10】 デコードユニット、少なくとも1つの
実行ユニットおよび複数のレジスタを有するプロセッサ
で命令を処理する方法において、該方法は、 a.メモリから取り出した命令をデコードするステップ
と、 b.前記命令の実行を許す前に、前記命令に関連するレ
ジスタのロックステータスをチェックするステップと、 c.前記複数のレジスタの少なくともサブセットの各レ
ジスタのロックステータスを記憶するステップとからな
り、 前記サブセットは、前記命令に関連するレジスタを含む
ことを特徴とする命令処理方法。 - 【請求項11】 前記ステップcは、複数のビットを有
するビットベクトルを記憶するステップを含み、各ビッ
トは論理的に前記複数のレジスタのうちの1つに関連づ
けられることを特徴とする請求項10に記載の方法。 - 【請求項12】 前記命令に関連するレジスタは、前記
命令のソースレジスタおよびデスティネーションレジス
タのうちの少なくとも一方を含むことを特徴とする請求
項10に記載の方法。 - 【請求項13】 前記デコードユニットが、各命令の実
行が単一プロセッササイクルで完了したかのように複数
の命令を実行ユニットにディスパッチするステップをさ
らに有することを特徴とする請求項10に記載の方法。 - 【請求項14】 前記命令は、前記デコードユニットに
よって実行ユニットのうちの1つにディスパッチされる
ときに実行がコミットされることを特徴とする請求項1
0に記載の方法。 - 【請求項15】 前記デコードユニットが、プログラム
シーケンスによって設定された順序で複数の命令を実行
ユニットにディスパッチするステップをさらに有し、命
令は異なる順序で実行完了することが許されることを特
徴とする請求項10に記載の方法。 - 【請求項16】 レジスタが命令のデスティネーション
レジスタであると判定された場合に該レジスタのロック
ステータスをセットするステップをさらに有することを
特徴とする請求項10に記載の方法。 - 【請求項17】 命令のソースレジスタおよびデスティ
ネーションレジスタのうちの少なくとも一方が、該レジ
スタが既に他の命令によってロックされていることを示
すロックステータスを有する場合に、少なくとも1つの
プロセッササイクルの間、該命令をストールするステッ
プをさらに有することを特徴とする請求項10に記載の
方法。 - 【請求項18】 命令の結果がデスティネーションレジ
スタに書き込まれるときに、該命令のデスティネーショ
ンレジスタのロックステータスを変更するステップをさ
らに有することを特徴とする請求項10に記載の方法。 - 【請求項19】 命令をデコードするデコードユニット
と、 命令の少なくとも一部を実行する実行ユニットと、 命令に関連する少なくとも1つのレジスタを含む複数の
レジスタと、 前記複数のレジスタの少なくともサブセットの各レジス
タのロックステータスを示すロック機構とからなる集積
回路において、 前記サブセットは、前記命令に関連するレジスタを含
み、 前記命令に関連するレジスタのロックステータスが、該
命令の実行を許す前にチェックされることを特徴とする
集積回路。 - 【請求項20】 命令のソースレジスタおよびデスティ
ネーションレジスタのうちの少なくとも一方が、該レジ
スタが既に他の命令によってロックされていることを示
すロックステータスを有する場合に、該命令は、少なく
とも1つのプロセッササイクルの間ストールされること
を特徴とする請求項19に記載の集積回路。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/080,787 US6317821B1 (en) | 1998-05-18 | 1998-05-18 | Virtual single-cycle execution in pipelined processors |
| US09/080787 | 1998-05-18 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11345122A true JPH11345122A (ja) | 1999-12-14 |
Family
ID=22159607
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11134565A Pending JPH11345122A (ja) | 1998-05-18 | 1999-05-14 | プロセッサ |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6317821B1 (ja) |
| EP (1) | EP0959402A3 (ja) |
| JP (1) | JPH11345122A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003058367A (ja) * | 2001-08-17 | 2003-02-28 | Victor Co Of Japan Ltd | 演算装置 |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080184017A1 (en) * | 1999-04-09 | 2008-07-31 | Dave Stuttard | Parallel data processing apparatus |
| US6694425B1 (en) * | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
| US6842849B2 (en) * | 2001-05-21 | 2005-01-11 | Arm Limited | Locking source registers in a data processing apparatus |
| US6968445B2 (en) * | 2001-12-20 | 2005-11-22 | Sandbridge Technologies, Inc. | Multithreaded processor with efficient processing for convergence device applications |
| US7000095B2 (en) * | 2002-09-06 | 2006-02-14 | Mips Technologies, Inc. | Method and apparatus for clearing hazards using jump instructions |
| US6842848B2 (en) | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
| US6925643B2 (en) | 2002-10-11 | 2005-08-02 | Sandbridge Technologies, Inc. | Method and apparatus for thread-based memory access in a multithreaded processor |
| US6904511B2 (en) * | 2002-10-11 | 2005-06-07 | Sandbridge Technologies, Inc. | Method and apparatus for register file port reduction in a multithreaded processor |
| US7373548B2 (en) * | 2003-08-29 | 2008-05-13 | Intel Corporation | Hardware recovery in a multi-threaded architecture |
| US7308607B2 (en) * | 2003-08-29 | 2007-12-11 | Intel Corporation | Periodic checkpointing in a redundantly multi-threaded architecture |
| US7243262B2 (en) * | 2003-08-29 | 2007-07-10 | Intel Corporation | Incremental checkpointing in a multi-threaded architecture |
| US20080126754A1 (en) * | 2006-07-28 | 2008-05-29 | Padauk Technologies Corporation, R.O.C. | Multiple-microcontroller pipeline instruction execution method |
| GB2591490B (en) * | 2020-01-30 | 2022-03-02 | Advanced Risc Mach Ltd | An apparatus and method for controlling access to a set of memory mapped control registers |
| CN113835759B (zh) * | 2020-06-24 | 2025-05-02 | 上海寒武纪信息科技有限公司 | 指令处理装置、指令处理方法和板卡 |
| CN115033289B (zh) * | 2022-08-12 | 2022-11-22 | 南京砺算科技有限公司 | 图形处理器及其伪指令处理方法、编译方法及装置、介质 |
-
1998
- 1998-05-18 US US09/080,787 patent/US6317821B1/en not_active Expired - Lifetime
-
1999
- 1999-05-10 EP EP99303631A patent/EP0959402A3/en not_active Withdrawn
- 1999-05-14 JP JP11134565A patent/JPH11345122A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003058367A (ja) * | 2001-08-17 | 2003-02-28 | Victor Co Of Japan Ltd | 演算装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0959402A2 (en) | 1999-11-24 |
| US6317821B1 (en) | 2001-11-13 |
| EP0959402A3 (en) | 2002-11-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6247106B1 (en) | Processor configured to map logical register numbers to physical register numbers using virtual register numbers | |
| US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
| US6493820B2 (en) | Processor having multiple program counters and trace buffers outside an execution pipeline | |
| US5761476A (en) | Non-clocked early read for back-to-back scheduling of instructions | |
| CN1021144C (zh) | 带有指令标识装置的数据处理系统 | |
| US6240509B1 (en) | Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation | |
| US6119223A (en) | Map unit having rapid misprediction recovery | |
| US6772324B2 (en) | Processor having multiple program counters and trace buffers outside an execution pipeline | |
| JP3093639B2 (ja) | プロセッサ内の資源割当て追跡方法及びそのシステム | |
| US5615385A (en) | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming | |
| US5867684A (en) | Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction | |
| US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
| US6085312A (en) | Method and apparatus for handling imprecise exceptions | |
| US6260189B1 (en) | Compiler-controlled dynamic instruction dispatch in pipelined processors | |
| US20100058034A1 (en) | Creating register dependencies to model hazardous memory dependencies | |
| US20100131742A1 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
| GB2324181A (en) | Executing out-of-order operations in a processor | |
| JP2002508568A (ja) | 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム | |
| US5537560A (en) | Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor | |
| JPH11345122A (ja) | プロセッサ | |
| US6219778B1 (en) | Apparatus for generating out-of-order results and out-of-order condition codes in a processor | |
| CN100432924C (zh) | 用于在数据推测微处理器中操作重放的系统及方法 | |
| US6324640B1 (en) | System and method for dispatching groups of instructions using pipelined register renaming | |
| US5727177A (en) | Reorder buffer circuit accommodating special instructions operating on odd-width results | |
| JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040216 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040512 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040607 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070823 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070828 |