JP3816845B2 - プロセッサ及び命令制御方法 - Google Patents
プロセッサ及び命令制御方法 Download PDFInfo
- Publication number
- JP3816845B2 JP3816845B2 JP2002197307A JP2002197307A JP3816845B2 JP 3816845 B2 JP3816845 B2 JP 3816845B2 JP 2002197307 A JP2002197307 A JP 2002197307A JP 2002197307 A JP2002197307 A JP 2002197307A JP 3816845 B2 JP3816845 B2 JP 3816845B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- renaming
- update
- condition code
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 34
- 239000000872 buffer Substances 0.000 description 63
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000013500 data storage Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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, 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
Description
【発明の属する技術分野】
本発明は、動的パイプラインスケジューリングにより命令を実行するプロセッサ及び命令制御方法に関し、特に、同時にデコードしたコンディションコードの更新命令と読出命令のリネーミングを効率良く行うプロセッサ及び命令制御方法に関する。
【0002】
【従来の技術】
従来、動的パイプラインスケジュールを実行するプロセッサにあっては、プログラム順序に依存したインオーダーの命令発行部、プログラムの順番に依存しないアウトオブオーダーの命令実行部、更に、プログラム順序に依存したインオーダーの確定部(コミット部)という3つに分かれて処理を実行する。
【0003】
即ち、命令発行部は、インオーダーにより複数命令をフェッチしてデコードし、リザベーションステーションに命令操作(オペコード)とオペランドを保持させる。命令実行部は、リザベーションステーションに全てのオペランドが準備され、演算器が利用可能となり次第、アウトオブオーダーで投機的に命令を実行し、結果を得る。確定部は、分岐予測結果などに基づき命令の確定を判別してインオーダーで命令を完了させ、実行結果をレジスタファイルまたはメモリ(ストアの場合のみ)に入れる。
【0004】
このような動的パイプラインスケジューリングを採用したプロセッサにあっては、レジスタ値のプログラム順序性を守るために、命令完了(コミット)までレジスタ更新データを保持するリネーミングレジスタとしてレジスタ更新バッファを用意している。
【0005】
このように同時に複数命令のデコードを行うプロセッサでは、デコードサイクルでのリネーミングにおいて、前のサイクルまでのリネーミング履歴を登録してあるリネーミングマップを参照するだけでなく、同時にデコードされた命令のうち、自身より前の命令との依存関係をみてリネーミングする必要がある。
【0006】
このレジスタリネーミングは、先行命令となるレジスタ更新命令のデコードステージにおけるリネーミングマップ更新処理、後続命令となるレジスタ読出命令のデコードステージにおけるリネーミングマップ参照処理、先行命令のプライオリティステージにおけるフォーワード制御判断及び先行命令の更新ステージにおけるレジスタ書込み処理に分かれる。
【0007】
特に、同時にレジスタ更新命令とレジスタ読出命令がデコードされた場合には、レジスタ読出命令は自身より前のレジスタ更新命令との依存関係をみてリネーミングする必要がある。
【0008】
具体的には、リネーミングレジスタが更新保留中で、演算器もしくはリネーミングレジスタからレジスタ読出命令により値を参照するときは、先行するレジスタ更新命令の演算結果を書き込むタイミングでリネーミングレジスタのアドレス番号と、リザベーションステーションに登録されたソースレジスタのアドレス番号とを比較することで、先行するレジスタ更新命令の実行結果を後続するレジスタ参照命令の実行ステージに投入して実行させるフォーワード制御を行う。
【0009】
図9は、同時にデコードされた先行するレジスタ更新命令と後続するレジスタ読出命令について、先行するレジスタ更新命令のデコードステージでレジスタ更新バッファ上にレジスタ割当てを行った場合のリネーミングマップ更新処理の説明図である。
【0010】
図9において、レジスタ更新命令及びレジスタ読出命令を含むデコードステージで、命令の実行結果がコミットするまでレジスタ更新データを保持する専用レジスタを図示しないレジスタ更新バッファ上に割り当てる。
【0011】
即ち命令語レジスタ218−1〜218−4の4つの命令について、レジスタ更新バッファ上に4つのバッファを割り当て、この割当バッファに関する情報をリネーミングマップ262に保持する。ここで命令語レジスタ218−1にレジスタ更新命令がフェッチされ、命令語レジスタ218−2に次のレジスタ読出命令がフェッチされたとする。
【0012】
リネーミングマップ262はペンディングビット264と割当アドレス266を持っており、4つの命令に対応して割り当てた各割当レジスタごとにペンディングビット264をセットし、且つ汎用レジスタREGと更新バッファにおける割当アドレスUBAの関係を割当アドレス266として登録している。
【0013】
命令語レジスタ218−1〜218−4における4命令のデコードと同時に、例えば命令語レジスタ218−1のレジスタ更新命令について示すように、リザベーションステーション226に命令に対応した割当エントリ226−11が確保され、またコミットスタックエントリ242にも命令に対応した割当エントリ242−11が確保される。
【0014】
コミットスタックエントリ242の割当エントリ242−11は、バリッドビット290、書込レジスタ割当ビット292、レジスタ更新バッファ割当ビット294、書込レジスタアドレス296、更新バッファ割当アドレス298、演算完了待ちビット300、オペコードなどの命令操作302、コンディションコードレジスタ書込ビット304及びコンディションコードデータ306の領域で構成されている。
【0015】
この割当エントリ242−11の命令に対応した割当てと同時に、命令のデコードサイクルで書込レジスタ割込ビット292のビットセット、レジスタ更新バッファ割当ビット294のビットセット、及び更新バッファ割当アドレス298に対する割当アドレスの書込みが行われる。
【0016】
一方、リザベーションステーション226に確保されたレジスタ更新命令に対応した割当エントリ226−11は、第1ソースレジスタ領域275、第2ソースレジスタ領域285に続いて、ディストネーション更新バッファ割当アドレス286及びオペコードなどの命令操作288を格納している。
【0017】
第1ソースレジスタ領域275には、第1ソースバリッドビット276、第1ソースレジスタアドレス278、第1ソースペンディングビット280、第1ソースレジスタ更新バッファ割当アドレス(以下「R1更新バッファ割当アドレス」という)282及びバイパスレディビット(フォーワードレディビット)284が設けられる。
【0018】
第2ソースレジスタ領域285についても、第1ソースレジスタ領域275と同様な領域が設けられるが、図示を省略している。尚、以下の説明及び図面上では、第1ソースレジスタをR1、第2ソースレジスタをR2と省略して表現する。
【0019】
図10は、図9で更新されたリネーミングマップ262を、命令語レジスタ218−2にフェッチされて同時にデコードされた後続のレジスタ読出命令が参照する場合の説明図である。
【0020】
図10において、命令語レジスタ218−2の命令を後続のレジスタ読出命令とすると、後続命令は読出ソースとなるレジスタのアドレス例えばアドレス「REG0」によりリネーミングマップ262を参照し、そのペンディングビット264及び割当アドレス266によって、リザベーションステーション226の先行命令の割当エントリ226−11における第1ソースレジスタアドレス278及びR1更新バッファ割当アドレス282を参照する。この先行命令の実行結果の参照により、図11のような後続命令に対するフォーワード制御を行うことができる。
【0021】
図11の後続命令に対するフォーワード制御は、先行するレジスタ更新命令の実行結果から得られたR1更新バッファ割当アドレス314と図10の後続するレジスタ読出命令によるリネーミングマップ262の参照で得られた割当エントリ226−11のR1更新バッファ割当アドレス282を、例えば先行命令のプライオリティステージにおいてマッチング処理部316で比較し、一致した場合には割当エントリ226−11のバイパスレディビット284をセットする。
【0022】
このようにして先行命令の実行結果から後続命令に対するバイパスレディ、即ちフォーワードレディが判定されると、処理318のように、バイパスレディビット284に基づき命令実行部に対し準備が整ったことを通知し、先行命令の実行結果をコミット前にフォーワードして後続命令が実行される。
【0023】
またSPARC(商標)命令アーキテクチャーを採用したプロセッサにあっては、コンディションコード(以下「CC」という)をソースデータとして更新命令により更新した後に読出命令により読出してフォーワード制御する場合がある。このコンディションコードCCには、ネガティブ、ゼロ、オーバーフロー、キャリーといった数値演算命令の実行結果の状態を示すコードが使用される。
【0024】
このようにCCレジスタを更新して参照する命令に関しても、同時に複数命令のデコードを行うプロセッサでは、デコードサイクルでのCCリネーミングにおいて、前のサイクルまでのCCリネーミング履歴を登録してあるCCリネーミングマップを参照するだけでなく、同時にデコードされた命令のうち、自身より前の命令との依存関係をみてCCリネーミングする必要がある。
【0025】
このCCレジスタを更新して参照する命令に関しても、アウトオブオーダー実行のためには、コミットまでCCレジスタの更新データを保持するリネーミングレジスタとしてCCレジスタ更新バッファを用意する。
【0026】
図12は、同時にデコードされた先行する命令語レジスタ218−1のCCレジスタ更新命令と後続する命令語レジスタ218−2のCCレジスタ読出命令について、CCレジスタのリネーミングにおけるCC更新命令のデコードステージの説明図であり、基本的には図9のレジスタ更新命令の場合と同じになる。
【0027】
即ち命令語レジスタ218−1のCC更新命令のデコードで、レジスタ更新バッファ上にバッファを割り当て、この割当バッファに関する情報をCCリネーミングマップ320に保持する。
【0028】
CCリネーミングマップ320はCCペンディングビット322と割当アドレス324を登録している。命令語レジスタ218におけるCC更新命令のデコードと同時に、リザベーションステーション226に命令に対応した割当エントリ226−11が確保され、またコミットスタックエントリ242にも命令に対応した割当エントリ242−11が確保される。
【0029】
リザベーションステーション226の割当エントリ226−11は、第1ソースレジスタ領域275に続いてCCソースレジスタ領域334を追加している。図示しない第2ソースレジスタ領域についてもCCソースレジスタ領域を追加している。
【0030】
CCソースレジスタ領域334には、CCペンディングビット326、CC更新バッファ割当アドレス328及びCCバイパスレディビット(フォーワードレディビット)330及びCCデータ領域332が設けられる。
【0031】
続いて命令語レジスタ218−2のCCレジスタ読出命令により読出ソースとなるレジスタのアドレスによりCCリネーミングマップ320を参照し、そのペンディングビット322及び割当アドレス324によって、リザベーションステーション226の先行命令の割当エントリ226−11におけるペンディングビット326及びCC更新バッファ割当アドレス328を参照し、後続するCCレジスタ読出命令に対するフォーワード制御を行う。
【0032】
このフォーワード制御は、先行するCCレジスタ更新命令の実行結果から得られた更新バッファ割当アドレスと後続するレジスタ読出命令によるCCリネーミングマップ320の参照で得られた割当エントリ226−11のCC更新バッファ割当アドレス328を、例えば先行命令のプライオリティステージにおいてマッチング処理で比較し、一致した場合には割当エントリ226−11のCCバイパスレディビット330をセットする。
【0033】
このようにして先行命令の実行結果から後続命令に対するCCバイパスレディ、即ちフォーワードレディが判定されると、CCバイパスレディビット330に基づき命令実行部に対し準備が整ったことを通知し、先行命令の実行結果をコミット前にフォーワードして後続命令が実行される。
【0034】
【課題を解決するための手段】
しかしながら、同時に複数命令のデコードを行うプロセッサにあっては、デコードサイクルでのリネーミングにおいて、前のサイクルまでのリネーミング履歴を登録してあるリネーミングマップを参照するだけでなく、同時にデコードされた命令のうち、自身より前の命令との依存関係をみてリネーミングする必要がある。
【0035】
このためCCリネーミングでは、CCを更新する命令、CC読出命令ともに複雑な命令デコードをしてからしか判断出来ず、同時に発行した命令間でのCCリネーミングを行うことは、高周波数で動作することを目標とするプロセッサにおいてはネックとなる。
【0036】
またリザベーションステーションの割当エントリについて、命令の頻度が少ないコンディションコード専用にCCソース領域を設けることは、必要以上に資源を増やすという問題もある。
【0037】
本発明は、同時にデコードされた依存関係をもつ先行するCC更新命令と後続するCC読出命令につき、同時のCCリネーミングを回避して動作周波数の向上を可能とするプロセッサ及び命令制御方法を提供することを目的とする。
【0038】
【課題を解決するための手段】
図1は本発明の原理説明図である。
【0039】
本発明は、フェッチしてデコードした命令をインオーダーに発行する命令発行部と、リザベーションステーションに保持された命令をアウトオブオーダーで実行する命令実行部と、命令実行部で実行した命令の確定を判別してインオーダーで完了させる確定部とを備えたプロセッサを対象とする。
【0040】
このようなプロセッサにつき本発明は、命令フェッチ部、CCリネーミングマップ更新処理部52、リネーミングマップ参照処理部54及びコンディションコードデータ書込処理部60を備える。
【0041】
命令フェッチ部は、先行命令となるCC更新命令48と後続命令となるCC読出命令50を含む複数命令を同時に命令発行部にフェッチする。CCリネーミングマップ更新処理部52は、CC更新命令(先行命令)48のデコードステージD1で、命令確定まで更新データを保持するリネーミングレジスタを割当てた際に、リネーミングレジスタのレジスタ番号を含むコンディションコード情報をCCリネーミングマップ70に登録する。
【0042】
リネーミングマップ参照処理部54は、CC読出命令(後続命令)50をマルチフロー展開し、CC更新命令(先行命令)48と同じデコードステージをノーオペレーションとしてマルチフロー命令語レジスタに転送して保持し、次のCC読出命令(後続命令)50のデコードステージD2で、リザベーションステーション26に格納した先行命令割当エントリ26−11の第1ソースレジスタ領域75に、CCリネーミングマップ70に登録しているCC更新命令(先行命令)48のコンディションコード情報を格納する。
【0043】
バイパス制御判断部(フォーワード制御判断部)56は、CC更新命令(先行命令)48のプライオリティステージP1で、実行結果のリネーミングレジスタ番号とリザベーションステーションの先行命令割当エントリにおけるリネーミングレジスタ番号を比較し、両者が一致した際に命令実行部に後続命令に対するコンディションデータのフォーワード制御の準備が整ったことを通知して実行させる。
【0044】
コンディションデータ書込処理部60は、先行命令の更新ステージU1で、CC更新命令(先行命令)48の実行結果として得られたコンディションコードデータを、リザベーションステーション26における先行命令割当エントリの第1ソースレジスタ領域75に格納する。
【0045】
このように本発明は、同時にデコードされたCC更新命令とCC読出命令のうち、自身より前の命令との依存関係をみてリネーミングする必要のあるCC読出命令をマルチフロー展開し、先行するCC更新命令と同時に発行され得る最初のフローはノーオペレーションとしてマルチフロー命令語レジスタに格納し、次の同時に他の命令の発行のないセカンドフローでマルチフロー命令語レジスタのCC読出命令をデコードしてCC読出しのためのリネーミングマップ参照を行う。
【0046】
このため同時にフェッチされてデコードされるCC更新命令とCC読出命令について、CCリネーミングを2つのデコードステージに分けて順番に行なうことで、同時のCCリネーミングを避けることができ、プロセッサの動作周波数の向上を可能とする。
【0047】
また、コンディションコードの更新命令に対応してリザベーションステーションに割当てられたエントリに、コンディションコードのバイパス制御に必要な専用の領域を設けず、通常のレジスタオペランド領域を流用してコンディションコード情報を格納するため、新たに資源を増加させる必要がない。
【0048】
ここで、CCリネーミングマップ更新処理部52は、コンディションコード更新命令に割り当てたリネーミングレジスタのレジスタ番号と共に更新保留中ビットをコンディションコード用リネーミングマップ70に格納する。
【0049】
CCリネーミングマップ参照処理部54は、リザベーションステーション26の先行命令割当エントリ26−11におけるソースレジスタの更新保留ビットとリネーミングレジスタ番号の領域に、CCリネーミングマップ70に登録している先行命令のCC更新保留中ビット72とコンディションコード用リネーミングレジスタのCC更新バッファ割当アドレス(レジスタ番号)74を格納する。
【0050】
バイパス制御判断部(フォーワード制御判断部)56は、先行命令実行結果のリネーミングアドレス番号とリザベーションステーション26の先行命令割当エントリにおけるリネーミングレジスタ番号をCC更新保留中ビットが立っていることを条件に比較し、両者が一致した際にリザベーションステーション26の先行命令割当エントリ26−11におけるソースレジスタのバイパスレディ領域にコンディションコード用バイパスレディビットを立て、コンディションコード用バイパスレディビットに基づいて、命令実行部に後続命令のコンディションデータのフォーワード制御の準備が整ったことを通知する。
【0051】
コンディションデータ書込処理部60は、リザベーションステーション26に格納した先行命令割当エントリ26−11のコンディションコード更新保留中ビット、コンディションコード用リネーミングレジスタのアドレス番号、及びコンディションコード用バイパスレディビットに続くソースレジスタ領域に、先行命令の演算結果として得られたコンディションデータを格納する。
【0052】
本発明は、フェッチしてデコードした命令をインオーダーでリザベーションステーションに発行する命令発行部と、リザベーションステーションに保持された命令をアウトオブオーダーで実行する命令実行部と、命令実行部で実行した命令の確定を判別してインオーダーで完了させる確定部とを備えたプロセッサの命令制御方法を提供する。
【0053】
この命令制御方法は、
命令フェッチ部により、先行命令となるCC更新命令と後続命令となるCC読出命令を含む複数命令を同時に命令発行部にフェッチする命令フェッチステップと、
CCリネーミングマップ更新処理部52により、先行命令となるコンディションコード更新命令のデコードステージで、命令確定まで更新データを保持するリネーミングレジスタを割当てた際に、リネーミングレジスタのレジスタ番号を含むコンディションコード情報をコンディションコード用リネーミングマップに登録するリネーミングマップ更新ステップと、
CCリネーミングマップ参照処理部54により、後続命令をマルチフロー展開して先行命令と同じデコードステージをノーオペレーションとしてマルチフロー命令語レジスタに転送して保持し、次の後続命令のデコードステージで、リザベーションステーションに格納した先行命令割当エントリのソースレジスタ領域に、コンディションコード用リネーミングマップに登録している先行命令のコンディションコード情報を格納するリネーミングマップ参照ステップと、
バイパス制御判断部(フォーワード制御判断部)56により、先行命令のプライオリティステージで、実行結果のリネーミングアドレス番号とリザベーションステーションの先行命令割当エントリにおけるリネーミングレジスタ番号を比較し、両者が一致した際に命令実行部に後続命令に対するコンディションデータのフォーワード制御の準備が整ったことを通知して実行させるフォーワード制御判断ステップと、
CCデータ書込処理部60により、先行命令の更新ステージで、先行命令の実行結果として得られたコンディションコードデータを、リザベーションステーションに格納した先行命令割当エントリのソースレジスタ領域に格納するコンディションデータ書込ステップと、
を備えたことを特徴とする。尚、この命令制御方法の詳細は、プロセッサの場合と基本的に同じになる。
【0054】
【発明の実施の形態】
図2は、動的パイプラインスケジューリングにより命令を実行し、CCデータをリザベーションステーションに格納する本発明の命令制御を行うプロセッサのハードウェア構成のブロック図である。
【0055】
図2において、プロセッサは、命令フェッチ部10、分岐予測部14、命令キャッシュ12、命令発行部16、リネーミング処理部20、リザベーションステーション処理部24、命令実行部28、ストアバッファ36、データキャッシュ38、レジスタファイル40及びリソースモニタ45を備える。
【0056】
命令発行部16には4つの命令語レジスタ18−1〜18−4が設けられ、本発明が対象とするCC更新命令とCC読出命令を含む4命令が同時にフェッチされデコードされる。リザベーションステーション処理部24には、リザベーションステーション26−1〜26−5が設けられる。命令実行部28には、固定小数点演算部30−1,30−2、浮動小数点演算部32−1,32−2及びロード/ストア演算部34が設けられる。
【0057】
レジスタファイル40には、コミットスタックエントリ42、アーキテクチャーレジスタファイルとして知られた汎用レジスタファイル44、及びリネーミング処理部20のレジスタ割り当ての対象となるレジスタ更新バッファ46を備えている。
【0058】
リネーミング処理部20には、本発明によるリザベーションステーションへのCCデータの格納制御を行うCCリネーミング処理部22が設けられる。CCリネーミング処理部22は、先行命令となるCC更新命令のデコードステージでCCリネーミングレジスタとしてレジスタ更新バッファ46上に割当バッファを確保し、CCリネーミングマップを作成する。
【0059】
また後続命令となるCC読出命令については、マルチフロー展開し、先行するCC更新命令のデコードステージと同じ先行フローの命令操作では、NOP(ノーオペレーション)としてマルチフロー命令語レジスタにCC読出命令を格納し、次の後続フローの命令操作によるマルチフロー命令語レジスタからのCC読出命令のデコードステージにおいて、CCリネーミングマップのCC情報を、リザベーションステーションの割当エントリのR1ソースレジスタ領域を流用して格納する。
【0060】
更に、先行命令のプライオリティステージで実行結果のバッファ割当アドレスをリザベーションステーションに格納したCC情報のバッファ割当アドレスと比較して、後続命令に対するフォーワード制御の準備完了を通知して実行させる。
【0061】
最終的に先行命令の更新ステージで、リザベーションステーションに先行命令の実行結果として得られたCCデータを格納する。
【0062】
また命令キャッシュ12及びデータキャッシュ38は、SPARC命令アーキテクチャに対応した図示しないインタフェースからシステムコントローラを介してメモリに接続されている。
【0063】
図2について、動的パイプラインスケジューリングを行う本発明のプロセッサの基本的な処理手順を説明すると次のようになる。命令フェッチ部10は、命令キャッシュ12側の待ち行列から例えば4命令をまとめて命令発行部16内の4の命令語レジスタ18−1〜18−4にフェッチしてデコードする。デコードされた4つの命令はリザベーションステーション処理部24に送られる。
【0064】
リザベーションステーション処理部24は、例えば5つのリザベーションステーション26−1〜26−5を備えており、予め定めた関係にある空きのあるリザベーションステーションに対し命令を格納する。
【0065】
ここでリザベーションステーション26−1〜26−5は例えば8つのエントリを持ち、合計40個の命令をリザーブすることができる。このリザベーションステーション処理部24に対する命令の発行は、プログラムの順番に従ったインオーダーで行われている。
【0066】
リザベーションステーション26−1〜26−5に命令を投入すると同時に、コミットスタックエントリ42にも命令ごとにエントリが割り当てられ、命令のコミット(確定)による開放まで保持される。この実施形態でコミットスタックエントリ42は64エントリを有する。
【0067】
このため命令発行部16の命令語レジスタ18−1〜18−4からは、リザベーションステーション処理部24の対応するリザベーションステーション26−1〜22−5とコミットスタックエントリ42及びその命令実行に必要な資源(レジスタ更新バッファ,ストアバッファ等)に利用可能なエントリがないと命令は発行されず、デコードステージでストールすることになる。
【0068】
命令実行部28は、リザベーションステーション26−1〜26−5のいずれかに命令の全てのオペランドの準備が整い且つ対応する演算部が対応可能となると、直ちに命令操作が実行されて実行結果が得られる。命令実行部28における命令の実行操作はプログラムの順序どおりとはならず、実行可能な命令から逐次投機的に実行するアウトオブオーダーで行う。
【0069】
命令実行部28の実行結果は、分岐の成立などの判定結果を受けて命令を確定し、ストアバッファ36に格納した後、ストア命令であればデータキャッシュ38に格納してインオーダーで命令を完了させ、それ以外の演算命令であれば、更に汎用レジスタファイル44の対応レジスタに格納してインオーダーで命令を完了させる。このように命令が確定すると、コミットスタックエントリ42の割当エントリは開放される。
【0070】
また本発明のプロセッサは、命令実行部28においてアウトオブオーダーで命令操作を実行しており、命令実行がプログラムの順序どおりでないために、命令ごとに情報を保持する専用レジスタを割り当てなければならない。
【0071】
図2の命令発行部16には例えば4つの命令語レジスタ18−1〜18−4を用意していることから、4つの専用レジスタを割り当てることができなければ、命令を同時にリザベーションステーション処理部24に格納することができず、専用レジスタを割り当て尽くした時点のデコードステージでストールしなければならない。
【0072】
この命令ごとに割り当てる専用レジスタとしてレジスタ更新バッファ46が準備されている。この実施形態においてレジスタ更新バッファ46は、例えば64エントリを確保している。
【0073】
命令ごとに専用レジスタを割り当て、レジスタ内容がプログラム順序で更新参照される方法として、レジスタリネーミングが知られている。このレジスタリネーミングを具体的に説明すると次のようになる。いま次のような命令1、命令2、命令3があったとする。
【0074】
命令1 R1+R2=R3
命令2 R3+R4=R3
命令3 R3+R8=R9
この3つの命令1〜3において、命令1のディストネーションレジスタR3と命令2の第1オペランドレジスタR3は依存関係にある。また命令2のディストネーションレジスタR3と命令3の第1オペランドレジスタR3も依存関係にある。
【0075】
このような場合に、レジスタリネーミングにあっては、命令1のディストネーションレジスタR3と命令2の第1オペランドレジスタR3を例えばリネーミングレジスタR3aとして専用レジスタを割り当てる。また命令2のディストネーションレジスタR3と命令3の第1オペランドレジスタR3にリネーミングレジスタR3bを割り当てる。
【0076】
命令のデコードの際に割り当てられたリネーミングレジスタR3aは、命令1がコミットするまで使用が確保される。またリネーミングレジスタR3bは命令2がコミットするまで使用が確保される。
【0077】
通常のレジスタ更新命令に対するレジスタリネーミングは、図2のリネーミング処理部で行われ、その詳細は、図9〜図11と同じになる。しかし、本発明にあっては、CCリネーミング処理部22によるCC情報のリザベーションステーションへの格納につき、ソースレジスタ領域を流用することから、図12のように追加したCC専用のCCソースレジスタ領域334をリザベーションステーションに持たない。
【0078】
図3は、本発明のリザベーションステーションに対するCCデータ格納処理が行われるパイプラインステージの説明図である。
【0079】
図3において、本発明のリザベーションステーションに対するCCデータの格納制御は、命令発行部16の命令語レジスタ18−1〜18−4に対し、命令フェッチ部10がCC更新命令48とCC読出命令50を含む複数命令を同時にフェッチしてデコードした場合に行われる。
【0080】
先行するCC更新命令48は、デコードステージD1、プライオリティステージP1、バッファストアサイクルとして知られたバッファステージB1、実行ステージX1、更新ステージU1、更に書込ステージW1の処理を順次行う。なお、デコードステージD1の内の後ろの2ステージは、リザベーションステーションでプライオリティがとれないサイクルを示す。
【0081】
一方、後続するCC読出命令50は、マルチフロー展開により1ステージ遅れて、デコードステージD2、プライオリティステージP2、バッファステージB2、実行ステージX2、更新ステージU2、更に図示しない書込ステージW2の順に処理される。なお、デコードステージD2の内の後ろの2ステージは、リザベーションステーションでプライオリティがとれないサイクルを示す。
【0082】
図4は後続するCC読出命令50のマルチフロー展開による命令操作の説明図である。いま図4(A)のように、命令語レジスタ18−1,18−2に、先行するCC更新命令48と後続するCC読出命令50がフェッチされた場合、デコードステージD1では、先行するCC更新命令48がリザベーションステーション処理部24に発行される。これに対し後続するCC読出命令50はマルチフロー展開され、最初のステージはNOP(ノーオペレーション)としてデコードによる命令発行は行わず、マルチフロー展開による先行フロー(ファーストフロー)の命令操作として、CC読出命令50をマルチフロー命令語レジスタ55に転送して格納する。このため最初のステージでは、先行するCC更新命令48のデコードによるCCリネーミングマップ更新処理のみが行われる。
【0083】
次のステージでは図4(B)のように、マルチフロー展開した後続フロー(セカンドフロー)の命令操作により、マルチフロー命令語レジスタ55に格納したCC読出命令のデコードステージD2となってリザベーションステーション処理部24に発行され、このとき他の命令の発行はない。このため先行するCC更新命令48のデコードから分離して後続するCC読出命令50によるCCリネーミングマップ読出処理のみが行われる。
【0084】
再び図3を参照するに、先行するCC更新命令48のデコードステージD1においては、CCリネーミングマップ更新処理部52が命令確定までCCレジスタ更新データを保持するCCリネーミングレジスタを割り当てた際に、このCCリネーミングレジスタのバッファ割当アドレス(レジスタ番号)を含むコンディションコード情報をコンディションコード用リネーミングレジスタマップに登録する。
【0085】
次のステージは、マルチフロー展開した後続するCC読出命令50のデコードステージD2となり、CCリネーミングマップ参照処理部54が先行するCC更新命令48のリザベーションステーションにおける割当エントリのソースレジスタ領域に、コンディションコード用リネーミングマップに登録している先行命令のコンディションコード情報を格納する。
【0086】
更に、先行するCC更新命令48のプライオリティステージP1において、バイパス制御判断部56がCC更新命令48の実行結果として得られたリネーミングアドレス番号とリザベーションステーションの先行命令割当エントリに格納しているリネーミングレジスタ番号を比較し、両者が一致した際に、フォーワード制御の準備が整ったことを命令実行部に通知し、先行命令48の実行ステージX1からの矢印58のように、CC読出命令50の実行ステージX2で演算を行う命令実行部の演算器に対し先行命令48の演算結果を直接フォーワードさせる。
【0087】
更に、先行するCC更新命令48の更新ステージU1において、後続するCC読出し命令50のフォーワード制御による実行ステージX2の演算と並行して、CCデータ書込処理部60が先行するCC更新命令48の実行結果として得られたコンディションコードデータを、リザベーションステーションにおける先行命令割当エントリのソースレジスタ領域に格納する。
【0088】
図5は、図3のCCリネーミングマップ更新処理部52の処理の詳細である。図5において、命令語レジスタ18−1にフェッチしてデコードされたCC更新命令に基づき、CC更新命令の実行結果を格納するディストネーションレジスタについてリネーミングレジスタとして、図2のレジスタ更新バッファ46上の空きバッファが割当バッファとして確保される。
【0089】
このリネーミングレジスタとして確保されたレジスタ更新割当バッファに対応してCCリネーミングマップ70が作成され、CCリネーミングマップ70にCC更新保留中ビット72が立てられ、同時にディストネーションレジスタのリネーミングレジスタとして確保されたCC更新バッファ割当アドレス74が登録される。
【0090】
同時にコミットスタックエントリ42には割当エントリ42−11が確保され、更にリザベーションステーション26に、命令語レジスタ18−1にフェッチされてデコードされたCC更新命令が発行されて割当エントリ26−11が確保される。
【0091】
ここでリザベーションステーション26における割当エントリ26−11は、第1ソースレジスタ領域75、図示しない第2ソースレジスタ領域、ディストネーション更新バッファ割当アドレス86、更にオペコードなどの命令操作88を持っている。
【0092】
また第1ソースレジスタ領域75には、バリッドビット76、R1更新バッファ割当アドレス78、R1ペンディングビット80、R1更新バッファ割当アドレス82及びR1レディビット84が設けられている。
【0093】
一方、コミットスタックエントリ42に確保された割当エントリ42−11は、バリッドビット90、書込レジスタ割当ビット92、レジスタ更新バッファ割当ビット94、書込レジスタアドレス96、更新バッファ割当アドレス98、演算完了待ちビット100、オペコードなどの命令操作102、CCレジスタ書込ビット104及びCCデータ領域106を備えている。
【0094】
このため、命令語レジスタ18−1にフェッチしてデコードしたCC更新命令によって、CCリネーミングマップ70を準備すると同時に、コミットスタックエントリ42に確保した割当エントリ42−11の書込レジスタ割当ビット92の立ち上げ、レジスタ更新バッファ割当ビット94の立ち上げ、更新バッファ割当アドレス98のセット、CCレジスタ書込ビット104のセットが行われ、更にリザベーションステーション26に確保した割当エントリ26−11に対しては、ディストネーション更新バッファ割当アドレス86の格納を行う。
【0095】
図6は、図3の後続するCC読出命令50のデコードステージD2で動作するCCリネーミングマップ参照処理部54の詳細である。図6のCCリネーミングマップ70の参照処理にあっては、命令語レジスタ18−2にフェッチし、マルチフロー展開による後続フローの命令操作でデコードされたCC読出命令50によるCCリネーミングマップ70の参照で、図5の更新処理で登録されているCC更新保留中ビット72とCCバッファ割当アドレス74が読み出され、リザベーションステーション26に確保されている先行命令の割当エントリ26−11における第1ソースレジスタ領域75の中のR1ペンディングビット80の領域と、R1更新バッファ割当アドレス82の領域にそれぞれ格納される。
【0096】
図7は、図3の先行するCC更新命令48のプライオリティステージP1におけるバイパス制御判断部56の処理の詳細である。このバイパス制御判断部56の処理にあっては、プライオリティステージP1においてCC更新命令48の演算結果となる更新バッファ割当アドレス114をマッチング処理部116に与え、このときのリザベーションステーション26の割当エントリ26−11に参照処理で格納しているCC更新バッファ割当アドレス110を読み出して比較する。
【0097】
マッチング処理部116で両者のアドレス一致が判別されると、図5のリザベーションステーション26に示すように、第1ソースレジスタ領域75のR1レディビット84として割り当てていた領域にCCレディビット112を立てる。
【0098】
このようにリザベーションステーション26の割当エントリ26−11にCCレディビット112が立てられると、これに基づいて、後続命令としてのCC読出命令を実行しようとしている命令実行部に対し、先行命令の実行結果であるCCデータを用いた後続命令におけるフォーワード制御の準備が整ったことを、処理118に示すように命令実行部に対しバイパスレディを発行して通知して実行させる。
【0099】
図8は、図3の先行するCC更新命令48の更新ステージU1におけるCCデータ書込処理部60の処理の詳細である。この図8のCCデータ書込処理は、図6のフォーワード制御判断の場合と同様、先行命令の実行結果として得られた演算結果の更新バッファ割当アドレス114をマッチング処理部122に入力し、このときのリザベーションステーション26の割当エントリ26−11のCC更新バッファ割当アドレス110と比較し、両者が一致した場合には、データバスにより得られている演算結果のCCデータ126をリザベーションステーション26の割当エントリ26−11に既に格納したCCレディビット112に続く第2ソースレジスタ領域の先頭部分の領域を利用して、CCデータ124に格納する。
【0100】
一方、リザベーションステーション26における先行命令に割り当てられた割当エントリ26−11に格納されるCCデータ124は、図3のCC更新命令48の実行ステージX1で後続するCC読出命令を実行する演算器に直接フォーワードされており、このCCデータを用いて、後続するCC読出命令50の演算を実行ステージX2で実行している。
【0101】
このようにCCリネーミングが重ならないように後続命令をマルチフロー展開して順次デコードすることでマルチフロー展開でステージ数が増加しても、CC更新命令48とCC読出命令50の発生頻度は低いため、全体的にみたプロセッサ性能への影響は少ない。またCCリネーミング用に通常のレジスタのリネーミングに使用する図2のレジスタ更新バッファ46を割り当ていても、バッファが不足してデコードステージでストールするような事態を招くこともない。
【0102】
むしろ通常のレジスタリネーミングの資源をCCレジスタのリネーミングに流用することで資源の増加を防ぎ、特に、CC更新命令とCC読出命令の同時のCCリネーミングが回避できることで、プロセッサの動作周波数の向上を可能とする。
【0103】
なお、本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。また本発明は上記の実施形態に示した数値による限定は受けない。
【0104】
【発明の効果】
以上説明してきたように本発明によれば、同時に複数命令のデコードを行うプロセッサにおいて、同時にデコードされたCC更新命令とCC読出命令のうち、自身より前の命令との依存関係をみてリネーミングする必要のあるCC読出命令をマルチフロー展開し、先行するCC更新命令と同時に発行され得る最初のフローはノーオペレーションとしてマルチフロー命令語レジスタに格納し、次の同時に他の命令の発行のないセカンドフローでマルチフロー命令語レジスタのCC読出命令をデコードしてCC読出しのためのリネーミングマップ参照を行い、同時のCCリネーミングを避けることによって、プロセッサの動作周波数を向上させることができる。
【0105】
またマルチフロー展開でステージ数が増加するが、同時にデコードされるCC更新命令とCC読出命令の頻度は少ないため、プロセッサ全体としての影響は無視できる程度に少なく、むしろ、プロセッサの動作周波数を向上できる利点の方が勝る。
【0106】
またリザベーションステーションの割当エントリにCC専用の領域を設けず、通常のレジスタオペランド領域を流用して、ここにCC情報としてCCリネーミングレジスタの更新保留中ビット、バッファ割当アドレス、更にCCデータを格納することで、通常のレジスタ更新命令に対し頻度の少ないCC更新命令に必要な資源を必要最小限に抑える。
【0107】
更にCCデータのフォーワード制御を判断するプライオリティステージについても、CCデータ専用の条件を追加せずに通常のレジスタ更新の条件を流用することで、資源を節減できる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】CCデータのリザベーションステーションへの格納制御を行う本発明によるプロセッサのハードウェア構成のブロック図
【図3】本発明のCCデータ格納処理が行われるパイプラインステージの説明図
【図4】図3で1ステージ遅らせるための後続するCC読出命令のマルチフロー展開による命令操作の説明図
【図5】本発明によるCCリネーミングマップの更新処理の説明図
【図6】本発明によるCCリネーミングマップの参照処理の説明図
【図7】本発明によるCCデータのフォーワード制御の判断処理の説明図
【図8】本発明によるCCデータのリザベーションステーションへの書込み処理の説明図
【図9】レジスタデータのリネーミングマップによる更新処理の説明図
【図10】レジスタデータのリネーミングマップの参照処理の説明図
【図11】レジスタデータのフォーワード制御の判断処理の説明図
【図12】
従来のCCリネーミングマップの更新処理の説明図
Claims (10)
- フェッチしてデコードした命令をインオーダーでリザベーションステーションに発行する命令発行部と、前記リザベーションステーションに保持された命令をアウトオブオーダーで実行する命令実行部と、前記命令実行部で実行した命令の確定を判別してインオーダーで完了させる確定部とを備えたプロセッサに於いて、
先行命令となるコンデションコード更新命令と後続命令となるコンデションコード読出命令を含む複数命令を同時に前記命令発行部にフェッチする命令フェッチ部と、
前記先行命令のデコードステージで、命令確定まで更新データを保持するリネーミングレジスタを割当てた際に、前記リネーミングレジスタのレジスタ番号を含むコンディションコード情報をコンディションコード用リネーミングマップに登録するリネーミングマップ更新処理部と、
前記後続命令をマルチフロー展開し、前記先行命令と同じデコードステージをノーオペレーションとしてマルチフロー命令語レジスタに転送して保持し、次の前記後続命令のデコードステージで、前記リザベーションステーションに格納した先行命令割当エントリのソースレジスタ領域に、前記コンディションコード用リネーミングマップに登録している先行命令のコンディションコード情報を格納するリネーミングマップ参照処理部と、
前記先行命令のプライオリティステージで、実行結果のリネーミングレジスタ番号と前記リザベーションステーションの先行命令割当エントリにおけるリネーミングレジスタ番号を比較し、両者が一致した際に前記命令実行部に後続命令に対するコンディションデータのフォーワード制御の準備が整ったことを通知して実行させるフォーワード制御判断部と、
前記先行命令の更新ステージで、先行命令の実行結果として得られたコンディションコードデータを、前記リザベーションステーションに格納した先行命令割当エントリのソースレジスタ領域に格納するコンディションデータ書込処理部と、
を備えたことを特徴とするプロセッサ。 - 請求項1記載のプロセッサに於いて、前記リネーミングマップ更新処理部は、前記コンディションコード更新命令に割り当てたリネーミングレジスタのレジスタ番号と共に更新保留中ビットを前記コンディションコード用リネーミングマップに格納することを特徴とするプロセッサ。
- 請求項2記載のプロセッサに於いて、前記リネーミングマップ参照処理部は、前記リザベーションステーションの先行命令割当エントリにおけるソースレジスタの更新保留中ビットとリネーミングレジスタ番号の領域に、前記コンディションコード用リネーミングマップに登録している先行命令の更新保留中ビットとコンディションコード用リネーミングレジスタのレジスタ番号を格納することを特徴とするプロセッサ。
- 請求項3記載のプロセッサに於いて、前記フォーワード制御判断部は、先行命令実行結果のリネーミングアドレス番号と前記ザベーションステーションの先行命令割当エントリにおけるリネーミングレジスタ番号を前記更新保留中ビットが立っていることを条件に比較し、両者が一致した際に前記リザベーションステーションの先行命令割当エントリにおけるソースレジスタのバイパスレディ領域にコンディションコード用バイパスレディビットを立て、前記コンディションコード用バイパスレディビットに基づいて、前記命令実行部に後続命令のコンディションデータのフォーワード制御の準備が整ったことを通知することを特徴とするプロセッサ。
- 請求項4記載のプロセッサに於いて、前記コンディションデータ書込処理部は、前記リザベーションステーションに格納した先行命令割当エントリの前記コンディションコード更新保留中ビット、コンディションコード用リネーミングレジスタのアドレス番号、及びコンディションコード用バイパスレディビットに続くソースレジスタ領域に、先行命令の演算結果として得られたコンディションデータを格納することを特徴とするプロセッサ。
- フェッチしてデコードした命令をインオーダーでリザベーションステーションに発行する命令発行部と、前記リザベーションステーションに保持された命令をアウトオブオーダーで実行する命令実行部と、前記命令実行部で実行した命令の確定を判別してインオーダーで完了させる確定部とを備えたプロセッサの命令制御方法に於いて、
命令フェッチ部により、先行命令となるコンデションコード更新命令と後続命令となるコンデションコード読出命令を含む複数命令を同時に命令発行部にフェッチする命令フェッチステップと、
リネーミングマップ更新処理部により、前記先行命令のデコードステージで、命令確定まで更新データを保持するリネーミングレジスタを割当てた際に、前記リネーミングレジスタのレジスタ番号を含むコンディションコード情報をコンディションコード用リネーミングマップに登録するリネーミングマップ更新ステップと、
リネーミングマップ参照処理部により、前記後続命令をマルチフロー展開し、前記先行命令と同じデコードステージをノーオペレーションとしてマルチフロー命令語レジスタに転送して保持し、次の前記後続命令のデコードステージで、前記リザベーションステーションに格納した先行命令割当エントリのソースレジスタ領域に、前記コンディションコード用リネーミングマップに登録している先行命令のコンディションコード情報を格納するリネーミングマップ参照ステップと、
フォーワード制御判断部により、前記先行命令のプライオリティステージで、実行結果のリネーミングアドレス番号と前記リザベーションステーションの先行命令割当エントリにおけるリネーミングレジスタ番号を比較し、両者が一致した際に前記命令実行部に後続命令に対するコンディションデータのフォーワード制御の準備が整ったことを通知して実行させるフォーワード制御判断ステップと、コンディションデータ書込処理部により、先行命令の更新ステージで、先行命令の実行結果として得られたコンディションコードデータを、前記リザベーションステーションに格納した先行命令割当エントリのソースレジスタ領域に格納するコンディションデータ書込ステップと、
を備えたことを特徴とする命令制御方法。 - 請求項6記載の命令制御方法に於いて、前記リネーミングマップ更新ステップは、前記コンディションコード更新命令に割り当てたリネーミングレジスタのレジスタ番号と共に更新保留中ビットを前記コンディションコード用リネーミングマップに格納することを特徴とする命令制御方法。
- 請求項7記載の命令制御方法に於いて、前記リネーミングマップ参照ステップは、前記リザベーションステーションの先行命令割当エントリにおけるソースレジスタの更新保留ビットとリネーミングレジスタ番号の領域に、前記コンディションコード用リネーミングマップに登録している先行命令の更新保留中ビットとコンディションコード用リネーミングレジスタのレジスタ番号を格納することを特徴とする命令制御方法。
- 請求項8記載の命令制御方法に於いて、前記フォーワード制御判断ステップは、先行命令実行結果のリネーミングアドレス番号と前記リザベーションステーションの先行命令割当エントリにおけるリネーミングレジスタ番号を前記更新保留中ビットが立っていることを条件に比較し、両者が一致した際に前記リザベーションステーションの先行命令割当エントリにおけるソースレジスタのバイパスレディ領域にコンディションコード用バイパスレディビットを立て、前記コンディションコード用バイパスレディビットに基づいて、前記命令実行部に後続命令のコンディションデータのフォーワード制御の準備が整ったことを通知することを特徴とする命令制御方法。
- 請求項9記載の命令制御方法に於いて、前記コンディションデータ書込ステップは、前記リザベーションステーションに格納した先行命令割当エントリの前記コンディションコード更新保留中ビット、コンディションコード用リネーミングレジスタのアドレス番号、及びコンディションコード用バイパスレディビットに続くソースレジスタ領域に、先行命令の演算結果として得られたコンディションデータを格納することを特徴とする命令制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002197307A JP3816845B2 (ja) | 2002-07-05 | 2002-07-05 | プロセッサ及び命令制御方法 |
US10/347,359 US7269716B2 (en) | 2002-07-05 | 2003-01-21 | Processor to efficiently rename decoded condition codes and instruction control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002197307A JP3816845B2 (ja) | 2002-07-05 | 2002-07-05 | プロセッサ及び命令制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038753A JP2004038753A (ja) | 2004-02-05 |
JP3816845B2 true JP3816845B2 (ja) | 2006-08-30 |
Family
ID=29997073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002197307A Expired - Fee Related JP3816845B2 (ja) | 2002-07-05 | 2002-07-05 | プロセッサ及び命令制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7269716B2 (ja) |
JP (1) | JP3816845B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2867873A1 (fr) * | 2004-03-18 | 2005-09-23 | St Microelectronics Sa | Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur |
FR2867872A1 (fr) * | 2004-03-18 | 2005-09-23 | St Microelectronics Sa | Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur |
KR100597414B1 (ko) * | 2004-10-21 | 2006-07-05 | 삼성전자주식회사 | 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 |
US8340241B2 (en) | 2006-02-27 | 2012-12-25 | Kabushiki Kaisha Toshiba | Image display apparatus and X-ray computed tomography apparatus |
US7380104B2 (en) * | 2006-04-25 | 2008-05-27 | International Business Machines Corporation | Method and apparatus for back to back issue of dependent instructions in an out of order issue queue |
KR100861701B1 (ko) | 2007-01-10 | 2008-10-06 | 연세대학교 산학협력단 | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
JP5471082B2 (ja) * | 2009-06-30 | 2014-04-16 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US8266126B2 (en) * | 2010-03-24 | 2012-09-11 | Matrixx Software, Inc. | System with multiple conditional commit databases |
GB2480285A (en) * | 2010-05-11 | 2011-11-16 | Advanced Risc Mach Ltd | Conditional compare instruction which sets a condition code when it is not executed |
US11144324B2 (en) * | 2019-09-27 | 2021-10-12 | Advanced Micro Devices, Inc. | Retire queue compression |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
EP0378415A3 (en) * | 1989-01-13 | 1991-09-25 | International Business Machines Corporation | Multiple instruction dispatch mechanism |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5632023A (en) | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
US5974240A (en) | 1995-06-07 | 1999-10-26 | International Business Machines Corporation | Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution |
US5805851A (en) * | 1996-06-13 | 1998-09-08 | Hewlett-Packard Co. | System for determining data dependencies among intra-bundle instructions queued and prior instructions in the queue |
US6049864A (en) * | 1996-08-20 | 2000-04-11 | Intel Corporation | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor |
US5838988A (en) * | 1997-06-25 | 1998-11-17 | Sun Microsystems, Inc. | Computer product for precise architectural update in an out-of-order processor |
US6061785A (en) | 1998-02-17 | 2000-05-09 | International Business Machines Corporation | Data processing system having an apparatus for out-of-order register operations and method therefor |
US6708267B1 (en) * | 2000-02-04 | 2004-03-16 | International Business Machines Corporation | System and method in a pipelined processor for generating a single cycle pipeline stall |
-
2002
- 2002-07-05 JP JP2002197307A patent/JP3816845B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-21 US US10/347,359 patent/US7269716B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US7269716B2 (en) | 2007-09-11 |
JP2004038753A (ja) | 2004-02-05 |
US20040006687A1 (en) | 2004-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6131157A (en) | System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US5918005A (en) | Apparatus region-based detection of interference among reordered memory operations in a processor | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
JP3602840B2 (ja) | 命令の投機的実行制御装置およびその方法 | |
JPH07160501A (ja) | データ処理システム | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
WO2020024759A1 (en) | System and method for store instruction fusion in a microprocessor | |
US9535744B2 (en) | Method and apparatus for continued retirement during commit of a speculative region of code | |
JP3816845B2 (ja) | プロセッサ及び命令制御方法 | |
US11055096B2 (en) | Checkpointing of architectural state for in order processing circuitry | |
JPH09152973A (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
US6983359B2 (en) | Processor and method for pre-fetching out-of-order instructions | |
JP3800533B2 (ja) | プログラムカウンタ制御方法及びプロセッサ | |
US20100100709A1 (en) | Instruction control apparatus and instruction control method | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
JP7409208B2 (ja) | 演算処理装置 | |
JP2004038751A (ja) | プロセッサ及び命令制御方法 | |
US9858075B2 (en) | Run-time code parallelization with independent speculative committing of instructions per segment | |
JP3854200B2 (ja) | プロセッサ及び命令制御方法 | |
JP3948615B2 (ja) | プロセッサ及び命令制御方法 | |
US6490653B1 (en) | Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050606 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060502 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060608 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3816845 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100616 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110616 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130616 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140616 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |