JP3854200B2 - プロセッサ及び命令制御方法 - Google Patents
プロセッサ及び命令制御方法 Download PDFInfo
- Publication number
- JP3854200B2 JP3854200B2 JP2002197306A JP2002197306A JP3854200B2 JP 3854200 B2 JP3854200 B2 JP 3854200B2 JP 2002197306 A JP2002197306 A JP 2002197306A JP 2002197306 A JP2002197306 A JP 2002197306A JP 3854200 B2 JP3854200 B2 JP 3854200B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- buffer
- data
- register update
- 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 41
- 239000000872 buffer Substances 0.000 claims description 261
- 238000010586 diagram Methods 0.000 description 22
- 238000013500 data storage Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000004044 response 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/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/3842—Speculative 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 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
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)
Description
【発明の属する技術分野】
本発明は、動的パイプラインスケジューリングにより命令を実行するプロセッサ及び命令制御方法に関し、特に、命令デコード時にリザベーションステーションのデータ領域にレジスタ更新データを格納するためのプロセッサ及び命令制御方法に関する。
【0002】
【従来の技術】
従来、動的パイプラインスケジュールを実行するプロセッサにあっては、プログラム順序に依存したインオーダーの命令発行部、プログラムの順番に依存しないアウトオブオーダーの命令実行部、更に、プログラム順序に依存したインオーダーの確定部(コミット部)という3つに分かれて処理を実行する。
【0003】
即ち、命令発行部は、インオーダーにより命令をフェッチしてデコードし、リザベーションステーションに命令操作(オペコード)とオペランドを保持させる。命令実行部は、リザベーションステーションに全てのオペランドが準備され、演算器が利用可能となり次第、アウトオブオーダーで投機的に命令を実行し、結果を得る。確定部は、分岐予測結果などに基づき命令の確定を判別してインオーダーで命令を完了させ、実行結果をレジスタファイルまたはメモリ(ストアの場合のみ)に入れる。
【0004】
このような動的パイプラインスケジューリングを採用したプロセッサにあっては、命令発行部でレジスタ更新命令を解読した場合、リザベーションステーションの割当エントリにおけるデータ領域にレジスタ更新データを格納する制御を、例えば図12のように行っている。
【0005】
図12において、例えば命令語レジスタ200−1にフェッチされたレジスタ更新命令をデコードした時に、ソースデータがレジスタ更新バッファ204上に存在せず、リネーミングマップ205に登録されずに更新保留中でない場合は、汎用レジスタファイル202の対応する汎用レジスタ202−3からデータ信号214を読み出しリザベーションステーション206のデータ領域232に格納している。
【0006】
即ち、レジスタアドレス信号212により汎用レジスタファイル202の対応する汎用レジスタ202−3からデータ信号214を読み出し、ペンディングビット信号220のオフにより切替っているセレクタ216からリザベーションステーション206の中の割当エントリ206−1におけるデータ領域232にデータ信号214を格納している。
【0007】
ここで、データ領域232を各エントリにつき点線のようにまとめた部分を、通常、データリザベーションステーション234と呼んでいる。
【0008】
一方、命令語レジスタ200−1にフェッチされたレジスタ更新命令をデコードした時に、ソースデータがレジスタ更新バッファ204上に存在し、リネーミングマップ205に登録されて更新保留中である場合は、ソースデータのリネーミングレジスタであるレジスタ更新バッファ204の割当バッファ204−3からデータを読み出してリザベーションステーション206のデータ領域232に格納する。
【0009】
即ち、ソースデータを格納している汎用レジスタ202−3のレジスタアドレス信号224によりリネーミングマップ205を参照して割当バッファアドレス210を取得し、割当バッファアドレス信号226によりレジスタ更新バッファ204の割当バッファ204−3を参照し、レジスタ更新データ228を読出し、このとき更新保留中を示すペンディングビット208によりオンしているペンディングビット信号220により切替っているセレクタ216からリザベーションステーション206の中の割当エントリ206−1におけるデータ領域232にレジスタ更新データ228を格納している。
【0010】
このようなリザベーションステーションのデータ領域、即ちデータリザベーションステーションに対するレジスタ更新データの格納制御には、汎用レジスタのデータ以外に、SPARC(商標)命令アーキテクチャーを採用したプロセッサにあっては、コンデションコード(以下の説明で省略表現する場合は「CC」という)をソースデータとして更新するCCレジスタ更新命令がある。このコンデションコードには、ネガティブ、ゼロ、オーバーフロー、キャリーといった数値演算命令の実行結果の状態を示すコードが使用される。
【0011】
このためCCレジスタ更新命令をデコードした場合にも、汎用レジスタの更新命令の場合と同様にして、データリザベーションステーションにCCレジスタ更新データを格納する制御を図13のように行う。
【0012】
図13において、例えば命令語レジスタ300−1にフェッチされたCCレジスタ更新命令をデコードした時に、CCソースデータはCCレジスタ更新バッファ304上に存在せず、CCリネーミングマップ305に登録されずに更新保留中でない場合は、CCレジスタ302からCCデータ信号314を読み出しリザベーションステーション306のCCデータ領域332に格納している。
【0013】
即ち、CCレジスタアドレス信号312によりCCレジスタ302からCCデータ信号314を読み出し、CCペンディングビット信号320のオフにより切替っているセレクタ316からリザベーションステーション306の中のCC割当エントリ306−1におけるCCデータ領域332にCCデータ信号314を格納している。
【0014】
ここで、CCデータ領域332を各エントリにつき点線のようにまとめた部分を、通常、CCデータリザベーションステーション334と呼んでいる。
【0015】
一方、命令語レジスタ300−1にフェッチされたCCレジスタ更新命令をデコードした時に、CCソースデータがCCレジスタ更新バッファ304上に存在し、CCリネーミングマップ305に登録されて更新保留中である場合は、CCソースデータのリネーミングレジスタであるCCレジスタ更新バッファ304のCC割当バッファ304−3からCCレジスタ更新データ328を読み出してリザベーションステーション306のCCデータ領域332に格納する。
【0016】
即ち、CCソースデータを格納しているCCレジスタ302のCCレジスタアドレス信号324によりCCリネーミングマップ305を参照してCC割当バッファアドレス310を取得し、CC割当バッファアドレス信号326によりCCレジスタ更新バッファ304のCC割当バッファ304−3を参照し、CCレジスタ更新データ328を読出し、このとき更新保留中を示すCCペンデングビット308によりオンしているCCペンディングビット信号320により切替っているセレクタ316からリザベーションステーション306の中のCC割当エントリ306−1におけるCCデータ領域332にCCデータ328を格納している。
【0017】
【発明が解決しようとする課題】
しかしながら、図12のように命令デコード時にソースデータをリザベーションステーションに格納する従来の制御にあっては、ソースデータが更新保留中でなければ、
(1)レジスタアドレス信号212による汎用レジスタ202−3の読出し、 (2)読出したデータ信号214のリザベーションステーション206への格
納、
という2段階の処理となるが、ソースデータが更新保留中である場合は、
(1)レジスタアドレス信号224によるリネーミングマップ205の参照、
(2)割当バッファアドレス信号226によるレジスタ更新バッファ204の割当レジスタ204−3からの読出し、
(3)読み出したレジスタ更新データ228のリザベーションステーション206への格納、
という3段階の処理となる。
【0018】
このようにソースデータの更新保留中有無によりリザベーションステーションへのデータ格納制御の論理が深くなるため、プロセッサの動作周波数を向上させる場合の大きな障害となっている。即ち、デコードサイクルは論理の深い3段階の制御で決まることになる。
【0019】
この問題は、図13のように命令デコード時にCCソースデータをリザベーションステーションに格納する制御についても同じである。図13にあっては、CCソースデータが更新保留中でなければ、
(1)CCレジスタアドレス信号312によるCCレジスタ302の読出し、
(2)読出したCCデータ信号314のリザベーションステーション306への格納、
という2段階の処理となるが、CCソースデータが更新保留中である場合は、
(1)CCレジスタアドレス信号324によるCCリネーミングマップ305の参照、
(2)CC割当バッファアドレス信号326によるCCレジスタ更新バッファ304のCC割当バッファ304−3からの読出し、
(3)読み出したCCデータ328のリザベーションステーション306への格納、
という3段階の処理となる。
【0020】
このようにCCソースデータの更新保留中有無によりリザベーションステーションへのデータ格納制御の論理が深くなるため、プロセッサの動作周波数を向上させる場合の大きな障害となっている。
【0021】
本発明は、レジスタ更新命令のデコード時に、ソースデータ又はCCソースデータの更新中の有無に係らず論理を簡略にすることで、高い動作周波数でリザベーションステーションへのデータ格納を可能とするプロセッサ及び命令制御方法を提供することを目的とする。
【0022】
【課題を解決するための手段】
図1は本発明の原理説明図である。
(レジスタ更新データの格納)
本発明のプロセッサは、図1(A)のように、ソースデータを格納する汎用レジスタ毎に割当られ、最新のレジスタ更新データを格納する最新レジスタ更新割当バッファ48−0と、最新レジスタ更新割当バッファ48−0にレジスタ更新命令の投機実行の有無に応じて最新のレジスタ更新データを格納するバッファ制御部としての最新レジスタ更新データ処理部22と、命令デコード時に、最新レジスタ更新割当バッファ48−0から最新のレジスタ更新データを読出してリザベーションステーション26のデータ領域58に格納する格納制御部としてのマッチング処理部92とを備えたことを特徴とする。
【0023】
このように本発明は、汎用レジスタ毎に最新レジスタ更新バッファを割り当てて準備し、レジスタ更新命令が投機実行されていない間は汎用レジスタのデータを最新レジスタ更新バッファに格納し、投機実行されたときは、その投機的実行結果で最新レジスタ更新バッファに上書きし、レジスタ更新命令のデコード時は、レジスタ更新データが更新保留中であっても無くても、全て最新レジスタ更新バッファから読出してリザベーションステーションのデータ領域に格納することで、選択論理を簡略化し、プロセッサの動作周波数向上を可能とする。
【0024】
ここでバッファ制御部としての最新レジスタ更新データ処理部22は、命令の投機実行により得られた最新のレジスタ更新データを最新レジスタ更新バッファに格納する。
【0025】
バッファ制御部としての最新レジスタ更新データ処理部22は、図1(B)のように、レジスタ更新割当バッファ46−0の割当アドレスを保持するアドレスラッチ66と、レジスタ更新データが更新保留中にあることを示すペンディングビットを保持する更新保留中ラッチ64と、命令の投機実行による更新サイクルで、レジスタ更新データの更新アドレスがアドレスラッチ66の割当アドレスと一致し、更新保留中ラッチ(ペンディングビットラッチ64)にペンディングビットが保持されており、且つ更新サイクルバリッド信号が得られたことを条件に、最新のレジスタ更新データを最新レジスタ更新バッファに格納する論理制御部70とを備えたことを特徴とする。
【0026】
バッファ制御部としての最新レジスタ更新データ処理部22は、投機実行されている命令が破棄された時(フラッシュ時)に、汎用レジスタ44−1のデータを最新レジスタ更新バッファ48−0に格納する。
【0027】
バッファ制御部としての最新レジスタ更新データ処理部22は、投機実行されている命令が破棄された後の1ブランクサイクルで汎用レジスタ44−1からデータを読出して最新レジスタ更新割当バッファ48−0に格納する。
【0028】
バッファ制御部としての最新レジスタ更新データ処理部22は、命令デコード時にレジスタアドレスにより最新レジスタ更新割当バッファ48−0の参照で最新のレジスタ更新データを読出してリザベーションステーションの26データ領域58に格納する。
【0029】
本発明は、動的パイプラインスケジューリングにより命令を実行するプロセッサの命令制御方法を提供する。この命令制御方法は、
バッファ制御部としての最新レジスタ更新データ処理部22により、ソースデータを格納する汎用レジスタ毎に割当られた最新レジスタ更新割当バッファ48−0に、レジスタ更新命令の投機実行の有無に応じて最新のレジスタ更新データを格納するバッファ制御ステップと、
命令デコード時に、最新レジスタ更新割当バッファ48−0から最新のレジスタ更新データを読出してリザベーションステーション26のデータ領域58に格納する格納制御ステップと、
を備えたことを特徴とする。なお、この命令制御方法の詳細はプロセッサの場合と基本的に同じになる。
【0030】
(CCレジスタ更新データの格納)
本発明のプロセッサは、コンデションコードCCを格納するレジスタ毎に割当られ、最新のCCレジスタ更新データを格納する最新CCレジスタ更新割当バッファと、最新CCレジスタ更新割当バッファにCCレジスタ更新命令の投機実行の有無に応じて最新のCCレジスタ更新データをセットするバッファ制御部としてのCC最新レジスタ更新データ処理部と、命令デコード時に、最新CCレジスタ更新割当バッファから最新のCCレジスタ更新データを読出してリザベーションステーションのCCデータ領域に格納する格納制御部とを備えたことを特徴とする。
【0031】
このように本発明は、CCレジスタ毎に最新CCレジスタ更新バッファを割り当てて準備し、CCレジスタ更新命令が投機実行されていない間はCCレジスタのデータを最新CCレジスタ更新割当バッファに格納し、投機実行されたときは、その投機的実行結果で最新CCレジスタ更新割当バッファに上書きし、CCレジスタ更新命令のデコード時は、CCレジスタ更新データが更新保留中であっても無くても、全て最新CCレジスタ更新割当バッファから読出してリザベーションステーションのCCデータ領域に格納することで、選択論理を簡略化し、プロセッサの動作周波数向上を可能とする。
【0032】
ここで、バッファ制御部は、命令の投機実行により得られた最新のCC更新データを最新CCレジスタ更新割当バッファに格納する。
【0033】
バッファ制御部は、CCレジスタ更新割当バッファの割当アドレスを保持するアドレスラッチと、CCレジスタ更新データが更新保留中にあることを示すペンディングビットを保持する更新保留中ラッチと、命令の投機実行により更新サイクルで、CCレジスタ更新データの更新アドレスがアドレスラッチの割当アドレスと一致し、更新保留中ラッチにペンディングビットが保持されており、且つ更新サイクルバリッド信号が得られたことを条件に、最新のCCレジスタ更新データを最新CCレジスタ更新バッファに格納する論理制御部と、
を備えたことを特徴とする。
【0034】
バッファ制御部は、投機実行されている命令が破棄された時に、CCレジスタのデータを最新CCレジスタ更新割当バッファに格納する。
【0035】
バッファ制御部は、投機実行されている命令が破棄された後の1ブランクサイクルで、CCレジスタからデータを読出して最新CCレジスタ更新割当バッファに格納する。
【0036】
バッファ制御部は、命令デコード時にCCレジスタのアドレスによる最新CCレジスタ更新割当バッファの参照で最新のCCレジスタ更新データを読出してリザベーションステーションのCCデータ領域に格納する。
【0037】
本発明は、動的パイプラインスケジューリングにより命令を実行するプロセッサの命令制御方法を提供する。この命令制御方法は、
バッファ制御部としてのCC最新レジスタ更新データ処理部により、コンデションコードCCを格納するレジスタ毎に割当られた最新CCレジスタ更新割当バッファに、CCレジスタ更新命令の投機実行の有無に応じて最新のCCレジスタ更新データをセットするバッファ制御ステップと、
命令デコード時に、最新CCレジスタ更新割当バッファから最新のCCレジスタ更新データを読出してリザベーションステーションのCCデータ領域に格納する格納制御ステップと、
を備えたことを特徴とする。なお、この命令制御方法の詳細はプロセッサの場合と基本的に同じになる。
【0038】
【発明の実施の形態】
図2は、動的パイプラインスケジューリングにより命令を実行し、且つレジスタ更新命令の投機的実行に応じて最新レジスタ更新データをリザベーションステーションに格納する本発明の命令発行制御を行うプロセッサのハードウェア構成のブロック図である。
【0039】
図2において、プロセッサは、命令フェッチ部10、命令キャッシュ部12、分岐予測部14、リザベーションステーション処理部24、命令実行部28、ストアバッファ36、データキャッシュ38、レジスタファイル40及びリソースモニタ50を備える。
【0040】
命令発行部16には4つの命令語レジスタ18−1〜18−4が設けられ、本発明が対象とするレジスタ更新命令を含む4命令が同時にフェッチされデコードされる。リザベーションステーション処理部24には、リザベーションステーション26−1〜26−5が設けられる。命令実行部28には、固定小数点演算部30−1,30−2、浮動小数点演算部32−1,32−2及びロード/ストア演算部34が設けられる。
【0041】
レジスタファイル40には、コミットスタックエントリ42、アーキテクチャレジスタファイルとして知られた汎用レジスタファイル44、及びリネーミング処理部20のレジスタ割り当ての対象となるレジスタ更新バッファ46、更に本発明の最新のレジスタ更新データの保持に使用される最新レジスタ更新バッファ48を備えている。
【0042】
リネーミング処理部20には、本発明によるリザベーションステーションへのデータ格納制御を行う最新レジスタ更新データ処理部(バッファ制御部)22が設けられる。最新レジスタ更新データ処理部22は、レジスタ更新命令の投機実行の有無に応じて最新レジスタ更新バッファ48の中の割当バッファに最新レジスタ更新データを格納すると共に、レジスタ更新命令のデコード時に、最新レジスタ更新バッファ48の割当バッファから最新レジスタ更新データを読出してリザベーションステーション26−1〜26−5のデータ領域に格納する。
【0043】
また命令キャッシュ12及びデータキャッシュ38は、SPARCポートアーキテクチャに対応した図示しないインタフェースからシステムコントローラを介してメモリに接続されている。
【0044】
図2について、動的パイプラインスケジューリングを行う本発明のプロセッサの基本的な処理手順を説明すると次のようになる。命令フェッチ部10は、命令キャッシュ12側の待ち行列から例えば4命令をまとめて命令発行部16内の4の命令語レジスタ18−1〜18−4にフェッチしてデコードする。デコードされた4つの命令はリザベーションステーション処理部24に送られる。
【0045】
リザベーションステーション処理部24は演算用として、例えば5つのリザベーションステーション26−1〜26−5を備えており、予め定めた関係にある空きのあるリザベーションステーションに対し命令を格納する。
【0046】
ここでリザベーションステーション26−1〜26−5は例えば8つのエントリを備えており、合計40個の命令をリザーブすることができる。このリザベーションステーション処理部24に対する命令の発行は、プログラムの順番に従ったインオーダーで行われている。
【0047】
リザベーションステーション26−1〜26−5に命令を投入すると同時に、コミットスタックエントリ42にも命令ごとにエントリが割り当てられ、命令のコミット(確定)による開放まで保持される。この実施形態でコミットスタックエントリ42は64エントリを有する。
【0048】
このため命令発行部16の命令語レジスタ18−1〜18−4からは、リザベーションステーション処理部24の対応するリザベーションステーション26−1〜26−5とコミットスタックエントリ42等の資源に利用可能なエントリがないと命令は発行されず、デコードサイクルでストールすることになる。
【0049】
命令実行部28は、リザベーションステーション26−1〜26−5のいずれかに命令の全てのオペランドの準備が整い且つ対応する演算部が対応可能となると、直ちに命令操作が実行されて実行結果が得られる。命令実行部28における命令の実行操作はプログラムの順序どおりとはならず、実行可能命令から逐次投機的に実行するアウトオブオーダーで行う。
【0050】
命令実行部28の実行結果は、分岐の成立などの判定結果を受けて命令を確定し、ストアバッファ36に格納した後、ストア命令であればデータキャッシュ38に格納してインオーダーで命令を完了させ、それ以外の演算命令であれば、更に汎用レジスタファイル44の対応レジスタに格納してインオーダーで命令を完了させる。このように命令が確定すると、コミットスタックエントリ42の割当エントリは開放される。
【0051】
また本発明のプロセッサは、命令実行部28においてアウトオブオーダーで命令操作を実行しており、命令実行がプログラムの順序どおりでないために、命令ごとに情報を保持する専用レジスタを割り当てなければならない。
【0052】
図2の命令発行部16には例えば4つの命令語レジスタ18−1〜18−4を用意していることから、4つの専用レジスタを割り当てることができなければ、命令を同時にリザベーションステーション処理部24に格納することができず、専用レジスタを割り当て尽くした時点でデコードサイクルでストールしなければならない。
【0053】
この命令ごとに割り当てる専用レジスタとしてレジスタ更新バッファ46が準備されている。この実施形態においてレジスタ更新バッファ46は、例えば64エントリを確保している。
【0054】
命令ごとに専用レジスタを割り当て、レジスタ内容がプログラム順序で更新参照される方法として、レジスタリネーミングが知られている。このレジスタリネーミングを具体的に説明すると次のようになる。いま次のような命令1、命令2、命令3があったとする。
【0055】
命令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も依存関係にある。
【0056】
このような場合に、レジスタリネーミングにあっては、命令1のディストネーションレジスタR3と命令2の第1オペランドレジスタR3に例えばリネーミングレジスタR3aとして専用レジスタを割り当てる。また命令2のディストネーションレジスタR3と命令3の第1オペランドレジスタR3にリネーミングレジスタR3bを割り当てる。
【0057】
命令のデコードの際に割り当てられたリネーミングレジスタR3aは、命令1がコミットするまで使用が確保される。またリネーミングレジスタR3bは命令2がコミットするまで使用が確保される。
【0058】
図3は、図2の最新レジスタ更新データ処理部22の機能構成のブロック図であり、リザベーションステーションに格納する最新レジスタ更新データを最新レジスタ更新バッファ上の割当レジスタ上に準備する処理状態を表している。
【0059】
ここで、本発明が対象とする命令は、命令のデコードサイクルでソースレジスタの値をリザベーションステーション26のデータ領域58に格納する。このソースレジスタの値は、レジスタ更新命令が投機実行されていなければ、即ちレジスタ更新バッファの割付けにより更新保留中でなければ、汎用レジスタの値を命令のデコードサイクルでリザベーションステーション26のデータ領域58に格納する。
【0060】
これに対しレジスタ更新命令が投機実行されていれば、即ちレジスタ更新バッファ46の割付けにより更新保留中であれば、投機実行の結果を、実行サイクルに続く更新サイクルで、リザベーションステーション26のデータ領域58に格納する。
【0061】
図3において、最新レジスタ更新データ処理部22には、汎用レジスタファイル44において汎用レジスタ44−0〜44−4の5つがソースレジスタとして使用されていた場合、各汎用レジスタ44−0〜44−4に対応してバッファ割当エントリ62−0〜62−4が準備される。
【0062】
バッファ割当エントリ62−0〜62−4は、バッファ割当エントリ62−0に示すように、図2の最新レジスタ更新バッファ48上で割り当てられた最新レジスタ更新割当バッファ48−0が準備され、これに加えてペンディングビットラッチ64−0と割当バッファアドレスラッチ66−0が設けられる。この点は他のバッファ割当エントリ62−1〜62−4についても同じである。
【0063】
この最新レジスタ更新データ処理部22に対しては、レジスタ更新命令の投機実行の有無に応じた最新レジスタ更新データ書込みのため、命令のデコードステージで得られるデコードステージ割当バッファアドレス信号E1、更新保留中信号E2が与えられ、またデコードステージ後の投機的な実行ステージで得られた演算結果のレジスタ値を最新レジスタ更新データとして上書きするため、実行ステージに続く更新ステージで得られる更新ステージ割当バッファアドレス信号E3、更新サイクルバリッド信号E4及び演算結果データ信号E6が与えられている。
【0064】
更に最新レジスタ更新データ処理部22には、投機実行された命令が破棄されたときに分岐前の状態に戻すためのフラッシュの1サイクルレイト(1 cycle-late)信号E5が与えられている。
【0065】
最新レジスタ更新データ処理部22の最新レジスタ更新割当バッファ48−0を例にとると、命令の投機実行が行われていないときには汎用レジスタ44−0から読み出された汎用レジスタデータ信号E7によるレジスタ値が格納されている。
【0066】
これに対し命令の投機的実行結果のレジスタ値が得られた場合には、実行ステージに続く更新ステージのタイミングで最新レジスタ更新割当バッファ48―0に格納している汎用レジスタ44−0のレジスタ値を演算結果のレジスタ値で上書きする。
【0067】
最新レジスタ更新割当バッファ48−0に格納された最新のレジスタ更新データは、このレジスタ値をソースオペランドとして用いる命令のデコードステージで読み出され、例えばリザベーションステーション26のリザベーションステーション割当エントリ26−11のデータ領域58に格納される。
【0068】
ここでリザベーションステーション26の各エントリは、例えばリザベーションステーション割当エントリ(以下「RS割当エントリ」という)26−11を例にとると、バリッドビット52、R1ペンディングビット54、R1更新バッファアドレス56、データ領域58及びオペコードなどを格納した命令操作60を含む。なお、図示のRS割当エントリ26−11は第1ソースレジスタR1側となる第1オペランドを例示しているが、これに続いて通常は第2ソースレジスタR2側となる第2オペランドを持ち、更に命令操作60に続いてディストネーションレジスタアドレスの領域を持つが、省略している。
【0069】
図4は、図3の最新レジスタ更新データ処理部22の具体的な実施形態を示した機能ブロック図である。
【0070】
図4において、汎用レジスタに対応して最新レジスタ更新割当バッファ48−0〜48−4が設けられ、これに加えて汎用レジスタに対応してペンディングビットラッチ64−0〜64−4と割当バッファアドレスラッチ66−0〜66−4が設けられている。
【0071】
更に、最新レジスタ更新割当バッファ48−0〜48−4に対し、汎用レジスタのレジスタ値または投機的実行結果としてのレジスタ値を格納するため論理制御部70が設けられる。この論理制御部70は、マッチング処理部72、NANDゲート74,80,82,84、インバータ76及びANDゲート78で構成されている。
【0072】
次に図4の最新レジスタ更新データ処理部22の処理動作を説明する。命令のデコードステージでレジスタ更新を行うことが判断されたとき、投機的実行による実行結果のレジスタ値を命令コミットまで格納する最新レジスタ更新割当バッファ48−0のデコードステージ割当バッファアドレス信号E1を、割当バッファアドレスラッチ66−0に保持する。
【0073】
また、命令のデコードステージで最新レジスタ更新割当バッファ48−0が更新保留中であることを示す更新保留中信号E2が得られることから、これをペンディングビットラッチ64−0に保持する。
【0074】
続いて、命令の投機的実行による実行結果のレジスタ値が得られ、次の更新ステージにおいて更新ステージ割当バッファアドレス信号E3及び更新サイクルバリッド信号E4が得られる。
【0075】
更新ステージ割当バッファアドレス信号E3はマッチング処理部72に与えられ、割当バッファアドレスラッチ66−0に保持しているレコードステージで得られた割当バッファアドレスと比較され、両者が一致するとNANDゲート74に対する出力を論理レベル1とする。なお、以下の説明で論理レベルは単にレベルと言う。
【0076】
また、このときペンディングビットラッチ64−0には、デコードステージで既にペンディングビットが保持されていることから、NANDゲート74に対する出力はレベル1となっている。更に更新サイクルバリッド信号E4によりNANDゲート74に対する入力もレベル1となる。
【0077】
したがって、NANDゲート74の出力はレベル0となり、このときフラッシュの1サイクルレイト信号E5は得られていないことから、インバータ76の出力はレベル1にあり、したがってANDゲート78の出力がレベル0となり、最新レジスタ更新割当バッファ48−0の制御端子IH(Inhibit Pin)に対する書込制御を有効とする。このため投機実行の結果として得られているレジスタ値を示す演算結果データ信号E6がNANDゲート80,84を介して最新レジスタ更新割当バッファ48−0のデータ端子Dから書き込まれる。
【0078】
一方、投機実行された命令が分岐失敗により破棄されると、分岐予測から実行された全ての命令を破棄するためフラッシュの1サイクルレイト信号E5が得られ、そのときの汎用レジスタのレジスタ値を示している汎用レジスタデータ信号E7を最新レジスタ更新割当バッファ48−0に格納する。
【0079】
即ち、フラッシュの1サイクルレイト信号E5が得られるとインバータ76の出力はレベル0となり、これによってANDゲート78の出力もレベル0となって、最新レジスタ更新割当バッファ48−0の制御端子IHが書込有効となる。このときフラッシュの1サイクルレイト信号E5によってNANDゲート82が許容状態となり、このため汎用レジスタデータ信号E7がNANDゲート82,84を介して最新レジスタ更新割当バッファ48−0のデータ端子Dに与えられ、汎用レジスタのレジスタ値で上書きされる。
【0080】
図5は、図4の最新レジスタ更新データ処理部22の処理動作に対応するパイプラインステージの説明図である。図5において、時刻t1で2つの命令のデコードステージD1,D2が開始され、時刻t2,t3,t4において順次、分岐予測に基づく命令のデコードステージD3,D4,D5が行われている。
【0081】
時刻t2の投機実行における命令のデコードステージD3にあっては、図4の割当バッファアドレスラッチ66−0に対する最新レジスタ更新割当バッファ48−0の割当バッファアドレスのラッチと、ペンディングビットラッチ64−0に対する更新保留中信号E2によるラッチが行われる。
【0082】
次に、デコードステージD3に続いて実行ステージX3となって命令の演算操作が行われ、演算結果としてのレジスタ値が得られる。この投機実行による演算結果としてのレジスタ値は、次の更新ステージU3で得られる図4の更新ステージ割当バッファアドレス信号E3、更新サイクルバリッド信号E4に基づき、最新レジスタ更新割当バッファ48−0を書込制御状態として、このとき得られた演算結果のレジスタ値である演算結果データ信号E6を最新レジスタ更新割当バッファ48−0格納する。
【0083】
続いて時刻t5で、分岐予測に基づく命令の投機実行について分岐ミスが判断されたとすると、時刻t5で分岐ミス85の位置以降の命令を全て破棄するためフラッシュ処理86が行われる。
【0084】
この時刻t5〜t6のフラッシュ処理86に続いて、1サイクルブランクを経て時刻t7より分岐失敗後の最初の命令のデコードステージD6が開始される。本発明にあっては、時刻t6〜t7の1サイクルブランクにおいて、図4の最新レジスタ更新データ処理部22に対するフラッシュの1サイクルレイト信号E5により、分岐前の時刻t1からの2番目の命令のデコードステージD2に続く書込ステージW2で汎用レジスタに書き込まれたレジスタ値を汎用レジスタ読出処理88で読出し、図4の最新レジスタ更新バッファ48−0に保持している更新ステージU3のレジスタ値に上書きする最新レジスタ更新割当バッファ格納処理90を行う。
【0085】
このため、分岐失敗後の時刻t7からの最初の命令のデコードステージD6にあっては、最新レジスタ更新割当バッファ48−0のレジスタ値は分岐前の投機実行でない実行結果の汎用レジスタ値となっており、デコードステージD6で、この分岐前の汎用レジスタ値を読み出してリザベーションステーションのデータ格納領域に格納し、分岐前に戻って命令操作を実行することができる。
【0086】
図6は、図3の最新レジスタ更新データ処理部22について、命令のデコードステージでバッファ割当エントリ62−0のレジスタ値をリザベーションステーション26に格納する処理を示している。
【0087】
このリザベーションステーション26に対する最新レジスタ更新データ値の格納は、最新レジスタ更新割当バッファ48−0のレジスタ値をソースオペランドとして用いる命令のデコードステージで行われる。即ち、命令のデコードステージで得られるデコードステージ割当バッファアドレス信号E1と、リザベーションステーション26のRS割当エントリ26−11のR1更新バッファアドレス56をマッチング処理部92でマッチングし、一致していた場合には、最新レジスタ更新割当バッファ48−0の最新レジスタ更新データを読み出して、リザベーションステーション26におけるRS割当エントリ26−11の中のデータ領域58に格納する。
【0088】
なお、RS割当エントリ26−11のデータ領域58は、他の割当エントリを含む点線の領域で区切ることでデータリザベーションステーション62として定義することができる。したがって、最新レジスタ更新データ処理部22は、このデータリザベーションステーション62の中の割当エントリの部分に最新レジスタ更新割当バッファ48−0のレジスタ値を読み出して格納することになる。
【0089】
このように図2〜図6のレジスタデータのリザベーションステーションへの格納制御について、データ更新命令のデコードステージで、命令の投機実行であっても、投機実行でない場合であっても、いずれの場合も最新レジスタ更新割当バッファの割当アドレスによる読出しと読出したCCデータのリザベーションステーションへの格納を、2段階で実現することができる。
【0090】
図7はコンディションコードCCのリザベーションステーションへの格納制御を行う本発明によるプロセッサのハードウェア構成のブロック図である。
【0091】
図7において、このプロセッサの構成は、基本的に図2のプロセッサと同じであるが、リネミーング処理部20に最新CCレジスタ更新データ処理部94を設け、またレジスタファイル40の中にCCレジスタ更新バッファ96と最新CCレジスタ更新バッファ98を設けている点が相違する。
【0092】
もちろん実際の装置にあっては、図2の実施形態に図7における最新CCレジスタ更新データ処理部94、レジスタファイル40におけるCCレジスタ更新バッファ96及び最新CCレジスタ更新バッファ98を追加した構成をとることになる。
【0093】
図8は、図7の最新CCレジスタ更新データ処理部において更新ステージで最新CCレジスタ更新バッファに対し、CCデータを格納する処理状態のブロック図である。
【0094】
図8において、最新CCレジスタ更新データ処理部94には、図7の最新CCレジスタ更新バッファ98上で、CCレジスタ100に対応して割当られた最新CCレジスタ更新バッファ98−0が準備されている。この最新CCレジスタ更新割当バッファ98−0に対応し、CCペンディングビットラッチ102−0とCC割当バッファアドレスラッチ104−0が設けられている。
【0095】
最新CCレジスタ更新データ処理部94に対しては、命令のデコードステージにおいてデコードステージ割当バッファアドレス信号E11と更新保留中信号E12が与えられる。またデコードステージに続く実行ステージで実行結果としてのレジスタ値が得られた後の更新ステージおいて得られる更新ステージ割当バッファアドレス信号E13、更新サイクルバリット信号E14、更に演算結果CCデータ信号E16が与えられている。
【0096】
また命令の初期実行で分岐失敗となった時の空きのためフラッシュの1サイクルレイト信号E15が与えられる。更にCCレジスタ100の読み出しによりCCレジスタデータ信号E17が与えられる。
【0097】
リザベーションステーション26には、命令のデコードステージで、例えばRS割当エントリ26−11が確保される。このRS割当エントリ26−1はCCレジスタ更新バッファアドレス110、CCデータ領域112及びオペコードなどの命令操作114を含む。
【0098】
尚、このRS割当エントリ26−11についての第1ソースレジスタR1側を取り出しており、第2ソースレジスタR2側及びディストネーションレジスタ側は省略している。またRS割当エントリ26−11におけるCCデータ領域112は他の割当エントリを含めて点線のようにCCデータリザベーションステーション116と呼ばれる。
【0099】
図9は、図8の最新CCレジスタ更新データ処理部94の具体的実施形態を示した機能構成のブロック図である。
【0100】
図9において、最新CCレジスタ更新データ処理部94には、図8のCCレジスタ100に対応して、最新CCレジスタ更新割当バッファ98−0が準備される。この最新CCレジスタ更新割当バッファ98−0に対応し、CC割当バッファアドレスラッチ104−0とCCペンディングビットラッチ102−0が設けられる。
【0101】
最新CCレジスタ更新割当バッファ98−0に対するCCデータの書き込みは論理制御部118で行われる。論理制御部118はマッチング処理部120、NANDゲート122,128,130,132、インバータ124及びANDゲート126で構成される。
【0102】
図9における最新CCレジスタ更新データ処理部94の処理動作を説明すると次のようになる。
【0103】
CCデータの更新を必要とする命令のデコードステージで図9のような構成を持つ、CCレジスタに対応した割当エントリが準備される。また命令のデコードステージで準備された最新CCレジスタ更新割当バッファ98−0のデコードステージ割当バッファアドレス信号E11が得られることから、これをCC割当バッファアドレスラッチ104−0に保持する。同時に更新保留中信号E12が得られることからCCペンディングビットラッチ102−0に保持する。
【0104】
命令のデコートステージに続いて投機実行による実行ステージで実行結果としてCCレジスタ値が得られると、次の更新ステージにおいて更新ステージ割当バッファアドレス信号E13、更新サイクルバリッド信号E14、演算結果CCデータ信号E16が得られる。
【0105】
そこでマッチング処理部120でCC割当バッファアドレスラッチ102−0のデコードステージの割当バッファアドレスと更新ステージの割当バッファアドレスをマッチングし、一致した場合にNANDゲート122に対する出力をレベル1とする。
【0106】
また、この時CCペンディングビットラッチ104にCCペンディングビットが保持されていることからNANDゲート122に対する出力はレベル1となっている。更に更新サイクルバリット信号E14が得られることで、NANDゲート122に対する入力は1となり、全ての入力がレベル1となることでその出力はレベル0となる。
【0107】
この時、インバータ124に対するフラッシュの1サイクルレイト信号E15は得られてないことからANDゲート126の入力は(0,1)となり、その出力はレベル0となり、最新CCレジスタ更新割当バッファ98−0の制御端子IH(Inhibit Pin)を書込み有効とする。
【0108】
この更新ステージにあっては、演算結果として演算結果CCデータ信号E16がNANDゲート128に対し得られており、フラッシュの1サイクルレイト信号E15がないことからNANDゲート128は許容状態となり、演算結果CCデータ信号E16はNANDゲート128,132を介してデータ端子Dから最新CCレジスタ更新割当バッファ98−0に書き込まれる。
【0109】
一方、分岐予測より命令を投機実行している途中で分岐失敗が判断されると、分岐予測からの命令を全て破棄するためフラッシュの1サイクルレイト信号E15が得られる。このフラッシュの1サイクルレイト信号E15が得られるとNANDゲート122の出力のいかんにかかわらず、ANDゲート126の出力はレベル0となって、最新CCレジスタ最新割当バッファ98−0の制御端子IHを書込み有効とする。この時、フラッシュの1サイクルレイト信号E15により許容状態となったNANDゲート130に対しては、CCレジスタデータ信号E17が与えれており、CCレジスタデータ信号E17はNANDゲート130,132を介してデータ端子Dより最新CCレジスタ更新割当バッファ98−0に上書きされる。
【0110】
図10は、図9のCC最新レジスタ更新データ処理部94の処理動作に対応したパイプラインステージの説明図である。
【0111】
図10において、時刻t1より投機実行でない2つの命令を同時にフェッチしてデコードステージD11,D12を開始する。続いて分岐予測に基づき時刻t2,t3,t4で命令の投機実行のためのデコードステージD13,D14,D15が順次開始される。
【0112】
分岐予測による最初の命令のデコードステージD13に続き、実行ステージX13での投機実行により実行結果としてCCレジスタ値が得られ、次の更新ステージU13において図9の論理制御部118の制御によって、演算結果であるCCレジスタデータ信号E17が最新CCレジスタ更新割当バッファ98−0に格納される。
【0113】
続いて時刻t5において、分岐予測の失敗が判断されると分岐ミス134までの命令を全て破棄するため、時刻t5〜t6においてフラッシュ処理136を行う。
【0114】
このフラッシュ処理136に伴い図9の最新CCレジスタ更新データ処理部94に対し、フラッシュの1サイクルレイト信号E15が与えられ、論理制御部118による制御動作で最新CCレジスタ更新割当バッファ98−0に、この時CCレジスタ100から得られているCCレジスタデータ信号E17を上書きする。
【0115】
続いてフラッシュ処理136に続く時刻t6〜t7の1サイクルブランクで、CC汎用レジスタ読出処理138により分岐前のCCデータを保持している図8のCCレジスタ100のレジスタ値を読み出し、図9の論理制御部118によって最新CCレジスタ更新割当バッファ98−0に上書きする最新CCレジスタ更新バッファ格納処理140を行う。
【0116】
このため分岐失敗後の1サイクルブランクを経た、時刻t7からの命令のデコードステージD16にあっては、分岐失敗によるフラッシュ処理136に伴う処理で図9の最新CCレジスタ更新割当バッファ98−0に上書きされた分岐前の、例えば時刻t1から2番目の命令の書込ステージW12で書き込まれた最新のCCデータを最新CCレジスタ更新割当バッファ98−0から読出し、リザベーションステーションに格納する。
【0117】
図11は、図8の最新CCレジスタ更新データ処理部94における命令のデコードステージにおける最新CCデータのリザベーションステーションに対する格納処理の説明図である。
【0118】
この図11の命令のデコードステージにあっては、デコードステージ割当バッファアドレス信号E11が得られていることから、これをマッチング処理部142に与えて、リザベーションステーション26におけるRS割当エントリ26−11のCCレジスタ更新バッファアドレス110とマッチングし、一致した場合には最新CCレジスタ更新割当バッファ98−0に格納している最新CC更新データを読み出して、リザベーションステーション26のCCデータ領域112に格納する。
【0119】
このように図7〜図11のCCデータのリザベーションステーションへの格納制御についても、CCデータ更新命令のデコードステージで、命令の投機実行であっても、投機実行でない場合であっても、いずれの場合も最新CCレジスタ更新割当バッファ98−0の割当アドレスによる読出しと読出したCCデータのリザベーションステーションへの格納を、2段階で実現することができる。
【0120】
尚、本発明は、上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。また本発明は上記の実施形態に示した数値による限定は受けない。特に図8〜図11のCCデータのリザベーションステーションへの格納制御にあっては、説明を簡単にするためコンディションコードCCを格納するCCレジスタをひとつ設けた場合を例にとっているが、実際には複数のCCレジスタが使用されており、各CCレジスタに対応して最新CCレジスタ更新データ処理部94における最新CCレジスタ更新割当バッファ98−0、CC割当バッファアドレスラッチ104−0及びCCペンディングビットラッチ102−0の組み合わせからなる割当エントリが複数設けられる。
【0121】
(付記)
(付記1)
ソースデータを格納する汎用レジスタ毎に割当られ、最新のレジスタ更新データを格納するバッファと、
前記バッファにレジスタ更新命令の投機実行の有無に応じて最新のレジスタ更新データを格納するバッファ制御部と、
命令デコード時に、前記バッファから最新のレジスタ更新データを読出してリザベーションステーションのデータ領域に格納する格納制御部と、
を備えたことを特徴とするプロセッサ。(1)
【0122】
(付記2)
付記1記載のプロセッサに於いて、前記バッファ制御部は、命令の投機実行により得られた最新のレジスタ更新データを前記バッファに格納することを特徴とするプロセッサ。(2)
【0123】
(付記3)
付記1記載のプロセッサに於いて、前記バッファ制御部は、
前記バッファの割当アドレスを保持するアドレスラッチと、
前記レジスタ更新データが更新保留中にあることを示すペンディングビットを保持する更新保留中ラッチと、
命令の投機実行に続く更新サイクルで、レジスタ更新データの更新アドレスが前記アドレスラッチの割当アドレスと一致し、前記更新保留中ラッチにペンディングビットが保持されており、且つ更新サイクルバリッド信号が得られたことを条件に、最新のレジスタ更新データを前記バッファに格納する論理制御部と、
を備えたことを特徴とするプロセッサ。
【0124】
(付記4)
付記1記載のプロセッサに於いて、前記バッファ制御部は、投機実行されている命令が破棄された時に、汎用レジスタのデータを前記バッファに格納することを特徴とするプロセッサ。(3)
【0125】
(付記5)
付記4記載のプロセッサに於いて、前記バッファ制御部は、投機実行されている命令が破棄された後の1ブランクサイクルで前記汎用レジスタからデータを読出して前記バッファに格納することを特徴とするプロセッサ。
【0126】
(付記6)
付記1記載のプロセッサに於いて、前記バッファ制御部は、命令デコード時にレジスタアドレスにより前記バッファの参照で最新のレジスタ更新データを読出して前記リザベーションステーションのデータ領域に格納することを特徴とするプロセッサ。(4)
【0127】
(付記7)
動的パイプラインスケジューリングにより命令を実行するプロセッサの命令制御方法に於いて、
バッファ制御部により、ソースデータを格納する汎用レジスタ毎に割当られたバッファにレジスタ更新命令の投機実行の有無に応じて最新のレジスタ更新データを格納するバッファ制御ステップと、
命令デコード時に、前記バッファから最新のレジスタ更新データを読出してリザベーションステーションのデータ領域に格納する格納制御ステップと、
を備えたことを特徴とする命令制御方法。(5)
【0128】
(付記8)
付記7記載の命令制御方法に於いて、前記バッファ制御ステップは、命令の投機実行により得られた最新のレジスタ更新データを前記バッファに格納することを特徴とする命令制御方法。
【0129】
(付記9)
付記7記載の命令制御方法に於いて、前記バッファ制御ステップは、
レジスタ更新バッファの割当アドレスをアドレスラッチに保持するステップと、前記レジスタ更新データが更新保留中にあることを示すペンディングビットを更新保留中ラッチに保持するステップと、
命令の投機実行により更新サイクルで、レジスタ更新データの更新アドレスが前記アドレスラッチの割当アドレスと一致し、前記更新保留中ラッチにペンディングビットが保持されており、且つ更新サイクルバリッド信号が得られたことを条件に、最新のレジスタ更新データを前記バッファに格納するステップと、
を備えたことを特徴とする命令制御方法。
【0130】
(付記10)
付記7記載の命令制御方法に於いて、前記バッファ制御ステップは、投機実行されている命令が破棄された時に、汎用レジスタのデータを前記バッファに格納することを特徴とする命令制御方法。
【0131】
(付記11)
付記10記載の命令制御方法に於いて、前記バッファ制御ステップは、投機実行されている命令が破棄された後の1ブランクサイクルで前記汎用レジスタからデータを読出して前記バッファに格納することを特徴とする命令制御方法。
【0132】
(付記12)
付記7記載の命令制御方法に於いて、前記バッファ制御ステップは、命令デコード時にレジスタアドレスにより前記バッファの参照で最新のレジスタ更新データを読出して前記リザベーションステーションのデータ領域に格納することを特徴とする命令制御方法。
【0133】
(付記13)
コンデションコードを格納するレジスタ毎に割当られ、最新のコンデションコードレジスタ更新データを格納するバッファと、
前記バッファに、コンデションコードレジスタ更新命令の投機実行の有無に応じて最新のコンデションコードレジスタ更新データをセットするバッファ制御部と、
命令デコード時に、前記バッファから最新のコンデションコードレジスタ更新データを読出してリザベーションステーションのコンデションコードデータ領域に格納する格納制御部と、
を備えたことを特徴とするプロセッサ。(6)
【0134】
(付記14)
付記13記載のプロセッサに於いて、前記バッファ制御部は、命令の投機実行により得られた最新のコンデションコードレジスタ更新データを前記バッファに格納することを特徴とするプロセッサ。(7)
【0135】
(付記15)
付記14記載のプロセッサに於いて、前記バッファ制御部は、
前記バッファの割当アドレスを保持するアドレスラッチと、
前記コンディションコードレジスタ更新データが更新保留中にあることを示すペンディングビットを保持する更新保留中ラッチと、
命令の投機実行により更新サイクルで、コンディションコードレジスタ更新データの更新アドレスが前記アドレスラッチの割当アドレスと一致し、前記更新保留中ラッチにペンディングビットが保持されており、且つ更新サイクルバリッド信号が得られたことを条件に、最新のコンディションコードレジスタ更新データを前記バッファに格納する論理制御部と、
を備えたことを特徴とするプロセッサ。
【0136】
(付記16)
付記13記載のプロセッサに於いて、前記バッファ制御部は、投機実行されている命令が破棄された時に、コンデションコードレジスタのデータを前記バッファにセットすることを特徴とするプロセッサ。(8)
【0137】
(付記17)
付記16記載のプロセッサに於いて、前記バッファ制御部は、投機実行されている命令が破棄された後の1ブランクサイクルで前記コンディションコードレジスタからデータを読出して前記バッファに格納することを特徴とするプロセッサ。
【0138】
(付記18)
付記13記載のプロセッサに於いて、前記バッファ制御部は、命令デコード時にコンデションコードレジスタのアドレスにより前記バッファの参照で最新のコンデションコードレジスタ更新データを読出して前記リザベーションステーションのコンデションコードデータ領域に格納することを特徴とするプロセッサ。(9)
【0139】
(付記19)
動的パイプラインスケジューリングにより命令を実行するプロセッサの命令制御方法に於いて、
バッファ制御部により、コンデションコードを格納するレジスタ毎に割当られたバッファに、コンディションコードレジスタ更新命令の投機実行の有無に応じて最新のコンデションコードレジスタ更新データをセットするバッファ制御ステップと、
命令デコード時に、前記バッファから最新のコンデションコードレジスタ更新データを読出してリザベーションステーションのコンデションコードデータ領域に格納する格納制御ステップと、
を備えたことを特徴とする命令制御方法。(10)
【0140】
(付記20)
付記19記載の命令制御方法に於いて、前記バッファ制御ステップは、命令の投機実行により得られた最新のコンデションコードレジスタ更新データを前記バッファに格納することを特徴とする命令制御方法。
【0141】
(付記21)
付記20記載の命令制御方法に於いて、前記バッファ制御ステップは、
前記バッファの割当アドレスをアドレスラッチに保持するステップと、
前記コンディションコードレジスタ更新データが更新保留中にあることを示すペンディングビットを更新保留中ラッチに保持するステップと、
命令の投機実行により更新サイクルで、コンディションコードレジスタ更新データの更新アドレスが前記アドレスラッチの割当アドレスと一致し、前記更新保留中ラッチにペンディングビットが保持されており、且つ更新サイクルバリッド信号が得られたことを条件に、最新のコンディションコードレジスタ更新データを前記バッファに格納するステップと、
を備えたことを特徴とする命令制御方法。
【0142】
(付記22)
付記19記載の命令制御方法に於いて、前記バッファ制御ステップは、投機実行されている命令が破棄された時に、コンデションコードレジスタのデータを前記バッファに格納することを特徴とする命令制御方法。
【0143】
(付記23)
付記22記載の命令制御方法に於いて、前記バッファ制御ステップは、投機実行されている命令が破棄された後の1ブランクサイクルで前記コンディションコードレジスタからデータを読出して前記バッファに格納することを特徴とする命令制御方法。
【0144】
(付記24)
付記19記載の命令制御方法に於いて、前記バッファ制御ステップは、命令デコード時にコンデションコードレジスタのアドレスにより前記バッファの参照で最新のコンデションコードレジスタ更新データを読出して前記リザベーションステーションのコンデションコードデータ領域に格納することを特徴とする命令制御方法。
【0145】
【発明の効果】
以上説明してきたように本発明によれば、汎用レジスタごとに最新レジスタ更新バッファを割当てて準備し、レジスタを更新するための命令が投機実行されていない間は、汎用レジスタのデータを最新レジスタ更新バッファに格納し、投機実行された時は投機実行の結果として得られたレジスタ値を最新レジスタ更新バッファに上書きし、レジスタ更新命令のデコード時は、レジスタ更新データが更新保留中であってもなくても全て最新レジスタ更新バッファから読み出して、リザベーションステーションのデータ領域に格納することで、いずれの場合も同じクロックサイクルの処理でリザベーションステーションにデータを格納することができ、同じリザベーションステーションに対するデータ格納処理にかかわらず、処理クロック数が相違することによるプロセッサの動作周波数を向上する場合の高周波回路の障害の問題を起こすことなくプロセッサの動作周波数を向上することが容易にできる。
【0146】
またCCレジスタごとに最新レジスタ更新バッファを割当てて準備し、CCレジスタ更新命令が投機実行されていない間は、CCレジスタのデータを最新CCレジスタ更新バッファに格納し、投機実行されたときはその投機実行結果のレジスタ値で最新CCレジスタ更新バッファを上書きし、CCレジスタ更新命令のデコード時はCCレジスタ更新データが更新保留中であってもなくても全て最新CCレジスタ更新バッファから読み出してリザベーションステーションのCCデータ領域に格納することで、投機実行中すなわちCCレジスタ更新データが更新保留中であってもなくてもいずれの場合も同じクロックサイクルの処理でリザベーションステーションにCCデータを格納することができ、クロックサイクル数の相違によるプロセッサの動作周波数が向上した際の高周波回路の障害を引き起こす問題を生ずることなく、容易にプロセッサの動作周波数の向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】レジスタデータのリザベーションステーションへの格納制御を行う本発明によるプロセッサのハードウェア構成のブロック図
【図3】更新ステージで最新レジスタ更新バッファにデータを格納する本発明による命令制御の機能ブロック図
【図4】図3の最新レジスタ更新データ処理部における機能構成のブロック図
【図5】本発明のデータ格納処理が行われるパイプラインステージの説明図
【図6】図3の最新レジスタ更新バッファのデータをデコードステージでリザベーションステーションに格納する本発明による命令制御の機能ブロック図
【図7】CCレジスタデータのリザベーションステーションへの格納制御を行う本発明によるプロセッサのハードウェア構成のブロック図
【図8】更新ステージで最新レジスタ更新バッファに対しCCデータを格納する本発明による命令制御の機能ブロック図
【図9】図3の最新CCレジスタ更新データ処理部における機能構成のブロック図
【図10】本発明のCCデータ格納処理が行われるパイプラインステージの説明図
【図11】図3の最新CCレジスタ更新バッファのCCデータをデコードステージでリザベーションステーションに格納する本発明による命令制御の機能ブロック図
【図12】リザベーションステーションにレジスタ更新データを格納する従来の命令制御の説明図
【図13】リザベーションステーションにCCレジスタ更新データを格納する従来の命令制御の説明図
Claims (8)
- データを格納する汎用レジスタと、
発行された命令を保持し、前記命令の実行に用いるデータをデータ領域に保持するリザベーションステーションと、
前記汎用レジスタを更新させるレジスタ更新命令の実行結果をレジスタ更新データとして、前記汎用レジスタの代わりに一時格納するレジスタ更新バッファと、
前記レジスタ更新命令の投機実行の有無に応じて、前記レジスタ更新バッファに最新のレジスタ更新データを格納するとともに、投機実行されているレジスタ更新命令が破棄された場合には、前記汎用レジスタが保持するデータを前記レジスタ更新バッファに格納するバッファ制御部と、
命令デコード時に、前記レジスタ更新バッファから最新のレジスタ更新データを読出して前記リザベーションステーションのデータ領域に格納する格納制御部と、
を有することを特徴とする命令処理装置。 - 前記バッファ制御部は、命令の投機実行により得られた最新のレジスタ更新データを前記レジスタ更新バッファに格納することを特徴とする請求項1記載の命令処理装置。
- 前記バッファ制御部は、命令デコード時において、レジスタアドレスを用いて前記レジスタ更新バッファを参照することにより、最新のレジスタ更新データを読み出して前記リザベーションステーションのデータ領域に格納することを特徴とする請求項1記載の命令処理装置。
- 汎用レジスタを更新させるレジスタ更新命令の実行結果をレジスタ更新データとして、前記汎用レジスタの代わりにレジスタ更新バッファに一時格納するステップと、
投機実行されている前記レジスタ更新命令が破棄された場合には、前記汎用レジスタが保持するデータを前記レジスタ更新バッファに格納するステップと、
命令デコード時に、前記レジスタ更新バッファから最新のレジスタ更新データを読出して前記リザベーションステーションのデータ領域に格納するステップと、
を有することを特徴とする命令制御方法。 - コンディションコードを格納するコンディションコードレジスタと、
発行された命令を保持し、前記命令の実行に用いるコンディションコードをコンディションコードデータ領域に保持するリザベーションステーションと、
前記コンディションコードレジスタを更新させるコンディションコードレジスタ更新命令の実行結果をコンディションコードレジスタ更新データとして、前記コンディションコードレジスタの代わりに一時格納するレジスタ更新バッファと、
前記コンディションコードレジスタ更新命令の投機実行の有無に応じて、前記レジスタ更新バッファに最新のコンディションコードレジスタ更新データを格納するとともに、投機実行されているコンディションコードレジスタ更新命令が破棄された場合には、前記コンディションコードレジスタが保持するコンディションコードのデータを前記レジスタ更新バッファに格納するバッファ制御部と、
命令デコード時に、前記レジスタ更新バッファから最新のコンディションコードレジスタ更新データを読出して前記リザベーションステーションのコンディションコードデータ領域に格納する格納制御部と、
を有することを特徴とする命令処理装置。 - 前記バッファ制御部は、命令の投機実行により得られた最新のコンディションコードレジスタ更新データを前記レジスタ更新バッファに格納することを特徴とする請求項5記載の命令処理装置。
- 前記バッファ制御部は、命令デコード時において、コンディションコードレジスタのアドレスを用いて前記レジスタ更新バッファを参照することにより、最新のコンディションコードレジスタ更新データを読み出して前記リザベーションステーションのコンディションコードデータ領域に格納することを特徴とするに格納することを特徴とする請求項6記載の命令処理装置。
- コンディションコードレジスタを更新させるコンディションコードレジスタ更新命令の実行結果をコンディションコードレジスタ更新データとして、前記コンディションコードレジスタの代わりにレジスタ更新バッファに一時格納するステップと、
投機実行されているコンディションコードレジスタ更新命令が破棄された場合には、前記コンディションコードレジスタが保持するコンディションコードのデータを前記レジスタ更新バッファに格納するステップと、
命令デコード時に、前記レジスタ更新バッファから最新のコンディションコードレジスタ更新データを読出して前記リザベーションステーションのコンディションコードデータ領域に格納するステップと、
を備えたことを特徴とする命令制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002197306A JP3854200B2 (ja) | 2002-07-05 | 2002-07-05 | プロセッサ及び命令制御方法 |
US10/347,407 US7590827B2 (en) | 2002-07-05 | 2003-01-21 | Processor and instruction control method having a storage of latest register for updating data of source operands, and instruction control |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002197306A JP3854200B2 (ja) | 2002-07-05 | 2002-07-05 | プロセッサ及び命令制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038752A JP2004038752A (ja) | 2004-02-05 |
JP3854200B2 true JP3854200B2 (ja) | 2006-12-06 |
Family
ID=29997072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002197306A Expired - Fee Related JP3854200B2 (ja) | 2002-07-05 | 2002-07-05 | プロセッサ及び命令制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7590827B2 (ja) |
JP (1) | JP3854200B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006114874A1 (ja) * | 2005-04-21 | 2006-11-02 | Fujitsu Limited | プロセッサ装置 |
US8266126B2 (en) * | 2010-03-24 | 2012-09-11 | Matrixx Software, Inc. | System with multiple conditional commit databases |
US20140189328A1 (en) * | 2012-12-27 | 2014-07-03 | Tomer WEINER | Power reduction by using on-demand reservation station size |
JP7032647B2 (ja) * | 2018-04-17 | 2022-03-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627985A (en) * | 1994-01-04 | 1997-05-06 | Intel Corporation | Speculative and committed resource files in an out-of-order processor |
US6047369A (en) * | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
EP0706122A3 (en) | 1994-09-30 | 1998-07-01 | International Business Machines Corporation | System and method to process multi-cycle operations |
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 |
US5946468A (en) * | 1996-07-26 | 1999-08-31 | Advanced Micro Devices, Inc. | Reorder buffer having an improved future file for storing speculative instruction execution results |
US5872951A (en) * | 1996-07-26 | 1999-02-16 | Advanced Micro Design, Inc. | Reorder buffer having a future file for storing speculative instruction execution results |
JP3481479B2 (ja) | 1998-12-17 | 2003-12-22 | 富士通株式会社 | 命令制御装置 |
-
2002
- 2002-07-05 JP JP2002197306A patent/JP3854200B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-21 US US10/347,407 patent/US7590827B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004038752A (ja) | 2004-02-05 |
US20040006686A1 (en) | 2004-01-08 |
US7590827B2 (en) | 2009-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6370829B2 (ja) | 誤予測された分岐のためにフラッシュするセグメント化パイプライン | |
JP3977016B2 (ja) | 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ | |
US7222227B2 (en) | Control device for speculative instruction execution with a branch instruction insertion, and method for same | |
US7624253B2 (en) | Determining register availability for register renaming | |
US8074060B2 (en) | Out-of-order execution microprocessor that selectively initiates instruction retirement early | |
US6625723B1 (en) | Unified renaming scheme for load and store instructions | |
US5931957A (en) | Support for out-of-order execution of loads and stores in a processor | |
US6119223A (en) | Map unit having rapid misprediction recovery | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
US5535346A (en) | Data processor with future file with parallel update and method of operation | |
WO1993022722A1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
JP2839075B2 (ja) | 処理システムを動作させる方法及び処理システム | |
US6981131B2 (en) | Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
KR100572040B1 (ko) | 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서 | |
WO2005098613A2 (en) | Facilitating rapid progress while speculatively executing code in scout mode | |
JP2001092657A (ja) | 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体 | |
JP3611304B2 (ja) | 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法 | |
US5875326A (en) | Data processing system and method for completing out-of-order instructions | |
JP3816845B2 (ja) | プロセッサ及び命令制御方法 | |
JP3854200B2 (ja) | プロセッサ及び命令制御方法 | |
US5841998A (en) | System and method of processing instructions for a processor | |
US20030182538A1 (en) | Method and system for managing registers | |
JPH08263288A (ja) | パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置 | |
JP3948615B2 (ja) | プロセッサ及び命令制御方法 |
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 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060718 |
|
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: 20060815 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060907 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090915 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100915 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100915 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110915 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120915 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120915 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130915 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |