(57)【要約】【課題】プログラム上で参照可能な論理レジスタ数を増加させても、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）実行等のような複雑な制御を可能にする。【解決手段】プロセッサは、命令フェッチ部１で取込まれた命令から命令コードを復号する命令デコード部２と、復号された命令コードが示すレジスタ番号のデータを保持するレジスタ本体４と、保持されたデータの一部をキャッシングするキャッシングレジスタ３と、フェッチ部１の命令によりキャッシングレジスタ３に保持された論理レジスタ番号やキャッシングレジスタ番号を含む内部命令状態の情報を保持する内部命令情報保持部６と、フェッチ部１からの命令をプリデコードした命令コードと保持部６で保持された内部命令の情報とを比較して内部命令を挿入するか否かを判定する命令挿入判定部８と、判定部８が内部転送命令の挿入を判定したときキャッシングレジスタ３とレジスタ本体４の間で内部データのレジスタ転送命令を発行するレジスタ転送命令発行部９とを備える。【選択図】  図１
2004303026.tif 000002
【特許請求の範囲】
【請求項１】
命令を取り込む命令フェッチ部と、前記命令フェッチ部により取り込まれた前記命令から命令コードを復号するデコード部と、前記デコード部により復号された前記命令コードにより示されるレジスタ番号に対応するデータを保持するレジスタ部とを備え、デコードされた命令コードに含まれる論理レジスタ番号とその番号の物理レジスタ番号との対応をレジスタエイリアステーブルに保持すると共に前記物理レジスタ番号の割り当て可能な番号を物理レジスタフリーリストに格納して命令番号，処理状態，アーキテクチャレジスタ番号，古い物理レジスタ番号の対応関係を格納するリオーダバッファと前記物理レジスタフリーリストとを用いてレジスタエイリアステーブルの内容を順次書き換えるレジスタ・リネーミング機能を有するプロセッサにおいて、
前記命令コードにより示されるレジスタ番号に対応するデータを保持するレジスタ本体と、
前記レジスタ本体に保持された内容の一部をキャッシングするキャッシングレジスタと、
前記命令フェッチ部からの命令により前記キャッシングレジスタにより保持されている論理レジスタ番号やキャッシングレジスタ番号を含む内部命令の状態に関する情報を保持する内部命令情報保持部と、
前記命令フェッチ部からの命令をプリデコードした命令コードと前記内部命令情報保持部により保持された前記内部命令の状態に関する情報とを比較して内部命令を挿入するか否かを判定する命令挿入判定部と、
前記命令挿入判定部により内部転送命令を挿入するべきものと判定されたときに前記キャッシングレジスタと前記レジスタ本体との間で内部データの転送を行なうレジスタ転送命令を発行するレジスタ転送命令発行部と、
を備えることを特徴とするレジスタ・リネーミング機能を有するプロセッサ。
【請求項２】
前記レジスタ本体はプログラム上で参照可能な論理レジスタより構成され、前記キャッシングレジスタは前記論理レジスタの一部を保持する内部レジスタより構成され、前記レジスタ転送命令発行部は前記論理レジスタと前記内部レジスタとにより使用される内部レジスタ番号に変換する変換部と前記論理レジスタと前記内部レジスタとの間でデータ転送を行なうプロセッサ内部命令コードと同じ形式のコードを生成するコード生成部とより構成されることを特徴とする請求項１に記載のレジスタ・リネーミング機能を有するプロセッサ。
【請求項３】
前記命令フェッチ部からの命令を命令コードにプリデコードするプリデコード部をさらに備えることを特徴とする請求項１に記載のレジスタ・リネーミング機能を有するプロセッサ。
【請求項４】
前記内部命令情報保持部、前記プリデコード部、前記命令挿入判定部、前記レジスタ転送命令発行部によりロードレジスタ命令とストアレジスタ命令を挿入して命令を発行するレジスタ命令挿入ユニットが構成されていることを特徴とする請求項３に記載のレジスタ・リネーミング機能を有するプロセッサ。
【請求項５】
前記レジスタ命令挿入ユニットは、前記内部命令情報を保持する内部命令保持部と、前記命令フェッチ部より供給される命令コードからレジスタ番号情報を取り出すプリデコード部と、このプリデコード部からの前記レジスタ番号情報と前記内部命令保持部が保持する内部命令情報のＴＡＧ領域に格納される論理レジスタ番号の比較を行なって挿入命令のレジスタ番号を生成する前記命令挿入判定部としての挿入命令レジスタ番号生成部と、この挿入命令レジスタ番号生成部により生成された前記挿入命令のレジスタ番号に基づいてロード／ストアレジスタ命令を発行する前記レジスタ転送命令発行部としてのロード／ストアレジスタ命令発行部と、を備えることを特徴とする請求項４に記載のレジスタ・リネーミング機能を有するプロセッサ。
【請求項６】
前記命令フェッチ部と前記命令デコード部との間に、前記ロード／ストアレジスタ命令発行部により発行された命令に基づいて、前記命令フェッチ部より供給される命令の前に前記ロード／ストアレジスタ命令発行部からの命令を付加して前記命令デコード部に供給する命令挿入制御部をさらに備える請求項５に記載のレジスタ・リネーミング機能を有するプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はレジスタ・リネーミング機能を有するマイクロプロセッサに関する。
【０００２】
【従来の技術】
一般に、マイクロプロセッサにおいては、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ―順番通りでない―）実行や、レジスタ・リネーミング（ｒｅｇｉｓｔｅｒ  ｒｅｎａｍｉｎｇ―レジスタ名の変更―）機能等の複雑な機能を組み込むことによってプロセッサの性能向上を図っている。レジスタ・リネーミング機能は、レジスタの複製を作成しておくことにより、ＷＡＲ，ＷＡＷといったレジスタ書き込みにより引き起こされるハザード（ｈａｚａｒｄ―障害・事故―）を解消するためプログラム上では参照することができない物理レジスタを有する機能である。
【０００３】
このレジスタ・リネーミング処理においては、例えばプロセッサに代表される構成により、物理レジスタとプログラム上で参照可能な論理レジスタが適切に割り当てられるようにレジスタ番号の比較を行なうことによって、レジスタ・バッファの識別を行ない、複雑なリネーミング処理を制御している。
【０００４】
同時多重スレッド実行（以下、ＳＭＴ―Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ―）のように、１つのプロセッサ内で複数のスレッドを同時に実行する構成の場合には、前述のレジスタ・リネーミング機能は同時実行数と同数の構成を有することになる（非特許文献２参照）。したがって、論理レジスタ数が増加することは、マイクロプロセッサ全体の構成の複雑さを増加させることになる。ここで、スレッドとは、論理演算を実行するための論理的な経路または筋道のことをいう。
【０００５】
一方、ソフトウェア技術の向上により、レジスタ割り当ての柔軟性を高めることにより、プログラムの最適化によって性能向上を図ることが可能になってきている。例えば、マルチタスク処理を実現させるための１つのやり方としてのマルチスレッド化の場合を考える。処理の粒度を細かくしてスレッド化を行なった場合には、その処理内で必要とされるレジスタは少ない。しかし、あまり細かい粒度でのスレッド化は、スレッド間の処理の切り替え等のオーバヘッド（ｏｖｅｒｈｅａｄ―限界を超える状態―）が現れて、スレッド化による効果を得ることができない場合がある。
【０００６】
また、処理の粒度は簡単に細かく分割できるものではなく、処理の内容によっては処理の最適化の都合上、ある程度粒度が粗くなる場合もある。この場合、粒度が粗くなることにより、１つのスレッドで行なう処理が複雑になり、割り当てられるレジスタ数も増加することになる。以上のように、レジスタ数の増加は、ソフトウェアによる処理性能を向上させる長所を有しているが、ハードウエアの構成上の複雑さを増加させるという短所もある。
【０００７】
図８は、従来のスーパースカラ方式によるマイクロプロセッサの構成例を示している（非特許文献１参照）。メモリから命令（ｉｎｓｔｒｕｃｔｉｏｎ）をフェッチ（取り込むこと）する命令フェッチ部１０と、命令フェッチ部１０によりフェッチされた命令コードをデコードする命令デコード部２０と、命令デコード部２０からのコードによりレジスタ番号を一時的に保持する集中ウインド３０と、レジスタ４０と、プロセッサ５０と、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ―演算論理回路―）６０と、ストアユニット７０と、ロードユニット８０と、データキャッシュメモリ９０より構成されている。説明を簡単にするため、図８ではデータパスの接続関係のみ示した。
【０００８】
集中ウインド３０はプロセッサ５０からの対象となる物理レジスタの演算終了情報に基づいて発行可能な命令を発行し、レジスタ４０からＡＬＵ６０，ストアユニット７０，ロードユニット８０へリネーミングされた物理レジスタにデータを供給し、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）で演算実行される。演算結果は、リオーダバッファ５０へ送られ、イン・オーダ（ｉｎ−ｏｒｄｅｒ）で論理レジスタ番号に対応した結果を得ている。
【０００９】
図９は、スーパースカラ方式で重要なレジスタ・リネーミング機構の一例を示しており、図９を用いてさらに詳細な動作の説明を行なう。レジスタ・リネーミング機構は、リオーダバッファ２０４０と、物理レジスタ２０１０と、物理レジスタフリーリスト２０２０と、レジスタ・エイリアス・テーブル（ｒｅｇｉｓｔｅｒ  ａｌｉａｓ  ｔａｂｌｅ）２０３０より構成される。物理レジスタフリーリスト２０２０とレジスタ・エイリアス・テーブル２０３０は、図８に示される命令デコード２０の中に組み込まれるものとする。リオーダバッファ２０４０は、図８のリオーダバッファ５０をさらに詳細に示したものであり、命令番号、完了ビット、論理レジスタ番号、旧物理レジスタ番号より構成される。
【００１０】
レジスタ・リネーミング方式では、論理レジスタ数よりも多い数の物理レジスタが存在する。命令がフェッチされ、デコードを行なう段階で命令コードのディスティネーション（行き先）で指定される論理レジスタ番号にその命令の結果が実際に格納される物理レジスタ番号が割り当てられる。その割り当ては、レジスタ・エイリアス・テーブル２０３０で示される。物理レジスタ番号の割り当ては、物理レジスタフリーリスト２０２０のレジスタ番号リストから読み出される。また、リオーダバッファ２０４０には、命令番号を割り付けながら命令フェッチ順に命令が格納されており、先行命令が全て終了してリオーダバッファから退去しているときに限り、後続命令を終了することができる。
【００１１】
リオーダバッファ２０４０は、命令番号１、２，３が割り付けられた３つの命令が発行された後、未終了のままで保持しており、命令番号３の命令が分岐命令であるものとする。リオーダバッファ２０４０の完了ビットは「１」のときに命令実行中（ビジー）であり、「０」のときに命令実行完了を示している。完了ビットが示しているように、命令番号２の命令のみ命令実行完了の状態で、命令４がフェッチされ発行される状況からレジスタ・リネーミング機構の動作の流れを説明する。
【００１２】
命令４はディスティネーション（行き先）として論理レジスタ番号２を使うものとする。その時、信号線１００１を介して物理レジスタフリーリスト２０２０から物理レジスタ番号３をもらい、レジスタ・エイリアス・テーブル２０３０の当該物理レジスタ番号０を３に書き換え、信号線１００３を介して以前の物理レジスタ番号をリオーダバッファ２０４０の旧物理レジスタ番号欄に書き込む。次に、命令番号１の命令実行が完了すると対応する完了ビットは「０」となり、論理レジスタ番号Ｒ１は以前の命令に未終了命令のないイン・オーダ（ｉｎ−ｏｒｄｅｒ）状態となり、その値はレジスタ・エイリアス・テーブル２０３０で示される論理レジスタ番号Ｒ１に対応する物理レジスタ番号１０に格納される。
【００１３】
リオーダバッファ２０４０の命令番号１に対応する旧物理レジスタ番号２０は、命令番号１以前の命令で論理レジスタＲ１に書き込みを行なった物理レジスタ番号を表している。物理レジスタ番号１０がＲ１に対応することになり、この旧物理レジスタ番号２０は、信号線１００４を介して物理レジスタフリーリスト２０２０に登録される。物理レジスタフリーリスト２０２０は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ―先入れ先出し―）構造となっており、レジスタ・エイリアス・テーブル２０３０で物理レジスタ番号を割り当てる処理では登録された順に行なわれることになる。命令１が終了すると、命令２は既に実行終了しているので、リオーダバッファ２０４０から退去すると共に、命令１と同様に信号線１００４を介して旧物理レジスタ番号が物理レジスタフリーリスト２０２０に登録される。物理レジスタ番号１０，０には論理レジスタＲ１，Ｒ２のイン・オーダ状態での値が記憶されている。
【００１４】
命令４が命令３より早く終了すると、論理レジスタＲ２に対する物理レジスタ番号３に結果が格納され、信号線１００５が指し示すレジスタに格納される。命令３が未終了であるので、信号線１００５で指し示されたレジスタの値は先見状態となる。
【００１５】
ここで、命令３の分岐命令の実行において分岐予測ミスとなった場合、命令４の結果はキャンセルされることになる。その場合、リオーダバッファ２０４０の命令４の項目で示される論理レジスタＲ２で対応するレジスタ・エイリアス・テーブル２０３０の物理レジスタ番号を、リオーダバッファ２０４０の命令４の旧物理レジスタ番号０に書き戻しを行ない、リオーダバッファ２０４０の命令４の項目を削除する。
【００１６】
したがって、論理レジスタＲ２は、このレジスタＲ２を書き換えたひとつ前の命令である命令２の演算結果が格納されている物理レジスタ０に対応される。物理レジスタ３は、物理レジスタフリーリスト２０２０に書き戻される。
【００１７】
書き込みは全てレジスタ・エイリアス・テーブル２０３０を介して論理レジスタに対応する物理レジスタ番号により行なわれる。値の読み出しに関しては、読み出し対象のレジスタ番号がリオーダバッファ２０４０に格納（エントリ）されているか確認し、エントリされていなければレジスタ・エイリアス・テーブル２０３０を介して論理レジスタに対応する物理レジスタ番号により行なわれる。
【００１８】
読み出し対象のレジスタ番号がエントリされている場合、リオーダバッファ２０４０の完了ビットフィールドにより依存関係のある命令の実行修了を確認し、レジスタ・エイリアス・テーブル２０３０を介して論理レジスタに対応する物理レジスタ番号により値の読み出しが行われる。レジスタ・リネーミング機構はこのような複雑な構成で実現されており、レジスタ・エイリアス・テーブル２０３０およびリオーダバッファ２０４０は連想方式により論理レジスタ番号の示すデータをやり取りすることになる。
【００１９】
したがって、論理レジスタ番号が増えることは、レジスタ・エイリアス・テーブル２０３０のサイズが大きくなり、その影響で物理レジスタ２０１０、物理レジスタフリーリスト２０２０のサイズを大きくする必要がある。また、リオーダバッファ２０４０の論理レジスタ番号のフィールドのサイズが増えることになる。その結果、レジスタ・リネーミング機構の構成がより複雑なものになりインプリメントを行なった場合、動作スピード上クリティカルパスを構成する要因となり動作目標であるスピードを実現する上でネックとなる可能性がある。
【００２０】
図１０は、２スレッド同時実行のマルチスレッド対応プロセッサの構成例を示している。物理レジスタ３４００と物理レジスタ３７００は説明の便宜上レジスタリードとレジスタライトの動作に分けて示してあるが、実体はひとつのレジスタであり、図１０で示した物理レジスタ２０１０に対応するものとする。相互に依存関係のないプログラムＡと、プログラムＢを同時に実行可能とするため、命令フェッチユニット３１００では２つのプログラムカウンタ３１００と３１２０と命令キュー（待ち行列）３１３０で構成されており、命令フェッチは１サイクル毎にプログラムカウンタ３１００と３１２０でのアクセス権を交代しながらフェッチを行なっている。
【００２１】
一方のプログラムカウンタに対応する命令フェッチでキャッシュミス等によりフェッチできない場合、もう一方のプログラムカウンタにより連続して命令フェッチすることが可能となるように機能するものとする。命令キュー３１３０に格納された命令は、デコーダ３２００内に設けられたレジスタ・エイリアス・テーブル３２１０，３２２０に各々対応する命令が振り分けられ、論理レジスタ番号に対応する物理レジスタ番号が割り当てられる。
【００２２】
プログラムカウンタ３１００にはレジスタ・エイリアス・テーブル３２１０、プログラムカウンタ３１２０にはレジスタ・エイリアス・テーブル３２２０が対応するものとする。デコーダ３２００でデコードされた命令コードは、集中ウインド３３００に格納され物理レジスタ３４００から演算に必要なデータを読み、実行ユニット３５００に同時実行可能な限りの命令が投入される。実行ユニット３５００の演算結果は、物理レジスタ３７００にレジスタ・エイリアス・テーブル３２１０，３２２０で示される論理レジスタ番号に対応する番号の物理レジスタに書き込まれ、リオーダバッファ３８００で命令フェッチ順にその演算結果が確定される。
【００２３】
リオーダバッファ３８００には、２つのリオーダバッファ３８１０と３８２０で構成され、レジスタ・エイリアス・テーブル３２１０にリオーダバッファ３８１０が、レジスタ・エイリアス・テーブル３２２０にリオーダバッファ３８２０が対応し、各々独立に動作するものである。つまり、２スレッド同時実行のマルチスレッド対応プロセッサでは図９で説明したレジスタ・リネーミング機構が独立した状態で２つ存在することになり、ｎスレッド同時実行のマルチスレッド対応プロセッサとした場合、ｎ個のプログラムカウンタとｎ組のレジスタ・リネーミング機構が存在することになる。したがって、図９で説明した論理レジスタ数増加に伴うレジスタ・リネーミング機構の構成上のネックは、マルチスレッド対応プロセッサにおいても同様に影響することになる。
【００２４】
【特許文献１】
特開２００２−１６３１２１号公報
【特許文献２】
特表２００２−５２１７６２号公報
【特許文献３】
米国特許第６，２４７，１０６号明細書
【特許文献４】
特開平５−２４１８３０号公報
【非特許文献１】
ケネス・イーガ（Ｋｅｎｎｅｔｈ  Ｃ．  Ｙｅａｇｅｒ）著「ＭＩＰＳ・Ｒ１００００スーパースカラマイクロプロセッサ（Ｔｈｅ  ＭＩＰＳ  １００００  Ｓｕｐｅｒｓｃａｌａｒ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）」ＩＥＥＥマイクロ、１９９６年４月、ｐ．２８−３３
【非特許文献２】
キース・ディフェンドルフ（Ｋｅｉｔｈ  Ｄｉｅｆｅｎｄｏｒｆｆ）著「コンパックの選択−アルファ用ＳＭＴ（Ｃｏｍｐａｑ  Ｃｈｏｏｓｅ  ＳＭＴ  ｆｏｒ  Ａｌｐｈａ）」マイクロプロセッサ報告（Ｃａｈｎｅｒｓ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  ｒｅｐｏｒｔ）、１９９９年１２月６日、Ｖｏｌ．１３、Ｎｏ．１６、ｐ．５−７
【００２５】
【発明が解決しようとする課題】
キャッシングレジスタを設け、キャッシングレジスタとレジスタ本体との整合性を、後続命令のレジスタとキャッシング情報に従ってレジスタデータをロードまたはストアする命令を挿入して実行することにより、プログラム上参照可能な論理レジスタ数を増加させたとしても、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）実行等のような複雑な制御について従来と同様の構成により実現することを可能にする。
【００２６】
【課題を解決するための手段】
上記目的を達成するため、本発明の基本構成としての第１構成に係るレジスタ・リネーミング機能を有するプロセッサは、命令を取り込む命令フェッチ部と、前記命令フェッチ部により取り込まれた前記命令から命令コードを復号するデコード部と、前記デコード部により復号された前記命令コードにより示されるレジスタ番号に対応するデータを保持するレジスタ部とを備え、デコードされた命令コードに含まれる論理レジスタ番号とその番号の物理レジスタ番号との対応をレジスタエイリアステーブルに保持すると共に前記物理レジスタ番号の割り当て可能な番号を物理レジスタフリーリストに格納して命令番号，処理状態，アーキテクチャレジスタ番号，古い物理レジスタ番号の対応関係を格納するリオーダバッファと前記物理レジスタフリーリストとを用いてレジスタエイリアステーブルの内容を順次書き換えるレジスタ・リネーミング機能を有するプロセッサにおいて、前記命令コードにより示されるレジスタ番号に対応するデータを保持するレジスタ本体と、前記レジスタ本体に保持された内容の一部をキャッシングするキャッシングレジスタと、前記命令フェッチ部からの命令により前記キャッシングレジスタにより保持されている論理レジスタ番号やキャッシングレジスタ番号を含む内部命令の状態に関する情報を保持する内部命令情報保持部と、前記命令フェッチ部からの命令をプリデコードした命令コードと前記内部命令情報保持部により保持された前記内部命令の状態に関する情報とを比較して内部命令を挿入するか否かを判定する命令挿入判定部と、前記命令挿入判定部により内部転送命令を挿入するべきものと判定されたときに前記キャッシングレジスタと前記レジスタ本体との間で内部データの転送を行なうレジスタ転送命令を発行するレジスタ転送命令発行部と、を備えることを特徴とする。
【００２７】
本発明の第２構成に係るレジスタ・リネーミング機能を有するプロセッサは、上記第１構成のプロセッサにおいて、前記レジスタ本体はプログラム上で参照可能な論理レジスタより構成され、前記キャッシングレジスタは前記論理レジスタの一部を保持する内部レジスタより構成され、前記レジスタ転送命令発行部は前記論理レジスタと前記内部レジスタとにより使用される内部レジスタ番号に変換する変換部と前記論理レジスタと前記内部レジスタとの間でデータ転送を行なうプロセッサ内部命令コードと同じ形式のコードを生成するコード生成部とより構成されることを特徴とする。
【００２８】
本発明の第３構成に係るレジスタ・リネーミング機能を有するプロセッサは、上記第１構成に係るプロセッサにおいて、前記命令フェッチ部からの命令を命令コードにプリデコードするプリデコード部をさらに備えることを特徴とする。
【００２９】
本発明の第４構成に係るレジスタ・リネーミング機能を有するプロセッサは、第３構成に係るプロセッサにおいて、前記内部命令情報保持部、前記プリデコード部、前記命令挿入判定部、前記レジスタ転送命令発行部によりロードレジスタ命令とストアレジスタ命令を挿入して命令を発行するレジスタ命令挿入ユニットが構成されていることを特徴とする。
【００３０】
本発明の第５構成に係るレジスタ・リネーミング機能を有するプロセッサは、第４構成に係るプロセッサにおいて、前記レジスタ命令挿入ユニットは、前記内部命令情報を保持する内部命令保持部と、前記命令フェッチ部より供給される命令コードからレジスタ番号情報を取り出すプリデコード部と、このプリデコード部からの前記レジスタ番号情報と前記内部命令保持部が保持する内部命令情報のＴＡＧ領域に格納される論理レジスタ番号の比較を行なって挿入命令のレジスタ番号を生成する前記命令挿入判定部としての挿入命令レジスタ番号生成部と、この挿入命令レジスタ番号生成部により生成された前記挿入命令のレジスタ番号に基づいてロード／ストアレジスタ命令を発行する前記レジスタ転送命令発行部としてのロード／ストアレジスタ命令発行部と、を備えることを特徴とする。
【００３１】
本発明の第６構成に係るレジスタ・リネーミング機能を有するプロセッサは、第５構成に係るプロセッサにおいて、前記命令フェッチ部と前記命令デコード部との間に、前記ロード／ストアレジスタ命令発行部により発行された命令に基づいて、前記命令フェッチ部より供給される命令の前に前記ロード／ストアレジスタ命令発行部からの命令を付加して前記命令デコード部に供給する命令挿入制御部をさらに備えることを特徴とする。
【００３２】
【発明の実施の形態】
以下、添付図面を参照しながら本発明に係るレジスタ・リネーミング機能を有するプロセッサの実施形態について詳細に説明する。まず、図１に従って本発明の基本的な原理を含む第１実施形態に係るプロセッサについて説明する。
【００３３】
図１に示すように、第１実施形態に係るプロセッサは、命令を取り込む命令フェッチ部１と、命令フェッチ部１により取り込まれた前記命令から命令コードを復号する命令デコード部２と、命令デコード部２により復号された命令コードを保持するレジスタ部３とを備えている。
【００３４】
さらに、第１実施形態に係るプロセッサは、デコードされた命令コードに含まれる物理レジスタ番号とその番号の物理レジスタ内の命令との対応をレジスタエイリアステーブルに保持すると共に前記物理レジスタ番号の割り当てを物理レジスタフリーリストに格納して命令番号，処理状態，アーキテクチャレジスタ番号，古い物理レジスタ番号の対応関係を格納するリオーダバッファ２０４０と物理レジスタフリーリストとを用いてレジスタエイリアステーブルの内容を順次書き換えるレジスタ・リネーミング処理部２０３０を有している。リオーダバッファ２０４０を用いるレジスタ・リネーミング処理部２０３０の機能については図９を用いて説明した従来のものと略々同じであるので、重複説明を省略すると共に第２実施形態の説明においてさらに詳細に説明する。
【００３５】
このような基本構成を有するプロセッサにおいて、前記命令コードを保持するレジスタ本体３と、レジスタ本体３に保持された内容の一部をキャッシングするキャッシングレジスタ４と、レジスタ命令を挿入するためのレジスタ命令挿入ユニット５とを備えている。
【００３６】
レジスタ命令挿入ユニット５は、命令フェッチ部１からの命令によりキャッシングレジスタ４により保持されている論理レジスタ番号やキャッシングレジスタ番号を含む内部命令の状態に関する情報を保持する内部命令情報保持部６と、前記命令フェッチ部からの命令をプリデコードするプリデコード部７と、プリデコード部７によりプリデコードされた命令コードと内部命令情報保持部６により保持された内部命令の状態に関する情報とを比較して内部命令を挿入するか否かを判定する命令挿入判定部８と、命令挿入判定部８により内部転送命令を挿入するべきものと判定されたときに前記キャッシングレジスタ４と前記レジスタ本体３との間で内部データの転送を行なうレジスタ転送命令を発行するレジスタ転送命令発行部９と、を備える。
【００３７】
以上のような第１実施形態に係るプロセッサによれば、キャッシングレジスタ４を設け、このキャッシングレジスタ４とレジスタ本体３との整合性を、後続命令のレジスタとキャッシング情報とに従ってレジスタデータをレジスタ命令挿入ユニット５によってロードあるいはストアする命令を挿入して実行することにより、プログラム上参照可能な論理レジスタ数を増加させても、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）実行等のような複雑な制御も従来通りの構成で可能にすることができる。
【００３８】
次に、本発明に係るレジスタ・リネーミング機能を有するプロセッサの第２実施形態について図２ないし図６を参照しながら説明する。この第２実施形態に係るプロセッサは、レジスタ本体３とキャッシングレジスタ４との動作がより詳細に説明される。
【００３９】
ソフトウエア技術の向上により、プログラムをマルチストリーム化し独立に実行できたとしても、プログラムの最小単位では、直前命令の処理結果に依存して命令実行されることはプログラムの特性上から避けられない。このことは、使用される論理レジスタに局所性が生じることを意味する。
【００４０】
使用される論理レジスタに局所性があることから、全体の論理レジスタの一部をキャッシングし、キャッシングされたレジスタのみを対象にレジスタ・リネーミング等の制御を行なえば論理レジスタ数増加に伴うハードウエア構成上の複雑度は軽減される。しかし、通常のデータキャッシュのような構成にした場合、キャッシュミスした場合にはリフィルする必要があり、リフィル処理によってパイプラインが長い期間ストールし性能低下を招くことになる。
【００４１】
図２には、上記の問題も含めて回避した、レジスタファイルのキャッシング機構を有するプロセッサ構成が示されている。図２において、図８と同一符号を付した構成要素は、同一または相当する機能を有するものとして、重複説明は省略する。本発明の第２実施形態に係るプロセッサにおいては、図８に示されたレジスタ４０をＲＡＭ４００として設置してレジスタの本体とし、集中ウインド３０の下にキャッシングレジスタ３００を配置する。キャッシングレジスタ３００はロード／ストアレジスタ命令挿入ユニット１００から供給される命令によりＲＡＭ４００とのデータ交換を行なう。動作としてはデータキャッシュメモリ９０に対するロード／ストア命令と同様のデータ転送動作を行なう。
【００４２】
ロード／ストアレジスタ命令挿入ユニット１００は、ＴＡＧ１１０とロード／ストアレジスタ命令発行装置１２０より構成される。ＴＡＧ１１０は、命令フェッチ１０の下に配置され、命令フェッチ１０から供給される命令コード中のソースレジスタナンバーＲｓ，Ｒｔ、ディスティネーションレジスタナンバーＲｄによりロード／ストアレジスタ命令発行装置１２０に対し、命令を挿入の制御を行なう。
【００４３】
ＴＡＧ１１０には、命令フェッチ１０からの命令コード情報により、キャッシングレジスタ３００にレジスタキャッシングされている論理レジスタ番号、キャッシングされているキャッシングレジスタ番号、キャッシングデータがＲＡＭ４００との間で好ましくない（ｄｉｒｔｙ―ダーティーな―）状態であるかどうかの情報を持っている。図３にはＴＡＧ１１０の構成を、図４にはＴＡＧ１１０の制御フローを示す。図２において、タグ（Ｔａｇ．）領域には図３のフローに従って論理レジスタ番号がセットされる。キャッシングレジスタ番号領域（図中ではＣ＿Ｒｅｇ．Ｎｏ．とする）には、ＴＡＧにセットされた論理レジスタ番号のデータがセットされるキャッシングレジスタ３００のレジスタ番号がセットされる。Ｄは、キャッシングレジスタ３００のデータがダーティーであるかどうかのフラグであり、Ｄ＝１の場合はダーティーとする。ＴＡＧ１１０の初期状態は、キャッシングレジスタ番号と同じ論理レジスタ番号が割り当てられ、全てＤ＝０という状態であるとする。
【００４４】
図４の制御フローに従って動作を説明する。始めに、ソースレジスタ番号とＴＡＧを比較し、一致しなければ、ＴＡＧ１１０中にソースレジスタ番号をＴＡＧに割り当て、対応するキャッシングレジスタ番号に対するロードレジスタ命令挿入をロード／ストアレジスタ命令挿入ユニット１２０に対して要求する。また、対応するＤ  ビット（ｂｉｔ）を０にクリアする。ソースレジスタ番号とＴＡＧを比較し一致した場合には、Ｄビットをチェックし、Ｄ＝１の場合、対応するＣ＿Ｒｅｇ番号のデータがダーティーな状態であることを示しているので、ストアレジスタ命令挿入をロード／ストアレジスタ命令挿入ユニット２００に対して要求する。図４のフローチャートではソースレジスタＲｓ，Ｒｔの順で前記チェックを行なっているが、同時に実行しても構わない。
【００４５】
ソースレジスタに対する処理後、ディスティネーションレジスタ番号とＴＡＧを比較し、一致しなければ、ＴＡＧ４００中にディスティネーション（行き先）レジスタ番号をＴＡＧに割り当て、Ｄ  ｂｉｔを０にクリアし、ストアレジスタ命令挿入をロード／ストアレジスタ命令挿入ユニット２００に対して要求する。ディスティネーションレジスタ番号とＴＡＧが一致した場合は、一致したキャッシングレジスタ（Ｃ＿Ｒｅｇ．）番号のデータを書き換えることになるのでＤ＝１をセットしてダーティーな状態としてセットし終了する。
【００４６】
ＴＡＧの置き換えは、一般的に知られているＬＲＵ（ｌｅａｓｔ−ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）等の置換アルゴリズムを使って最も使用頻度の少ないキャッシングレジスタ番号のデータを論理レジスタ番号が示すＲＡＭ４００の番地に書き戻し、新規にエントリされる論理レジスタ番号のそのキャッシングレジスタ番号を割り当てて置き換えを行なう。
【００４７】
以上のような処理の流れにより生成された命令挿入要求によって、ロード／ストアレジスタ命令挿入ユニット１００は、対象となる命令の前に要求のあった挿入命令をストアレジスタ命令、ロードレジスタ命令の順で挿入して、集中ウインド３０に供給している。
【００４８】
これ以降の動作は従来のプロセッサと同様の動作であり、キャッシングレジスタ３００とレジスタ本体であるＲＡＭ４００との整合性はレジスタロード命令／レジスタストア命令挿入により整合性を取っている。したがって、長い期間パイプラインストールすることがなく、レジスタネーミング処理や、アウト・オブ・オーダ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）実行といった制御を従来のままの構成で、より多くの論理レジスタ数を扱うことが可能となる。図５は、従来例の図９で示したレジスタ・リネーミング機構の構成において、本第２実施形態であるキャッシングレジスタを設けたレジスタ・リネーミング機構の構成例を示している。
【００４９】
図５において、図９と同一符号の構成要素は同一または相当する機能を有するものである。レジスタ・エイリアス・テーブル２０３０は、図９の例では論理レジスタ番号と物理レジスタ番号との対応を取るテーブルであるが、図５におけるレジスタ・エイリアス・テーブル２０３０では、キャッシングレジスタ番号と物理レジスタ番号との対応を取るテーブルとなっている。ただし、キャッシングレジスタ番号と論理レジスタ番号が差し変わっただけで、レジスタ・エイリアス・テーブル２０３０で扱うキャッシングレジスタ番号と従来例で扱う論理レジスタ番号の数は全く同一の番号である。
【００５０】
したがって、従来のレジスタ・エイリアス・テーブル２０３０と図５で示すレジスタ・エイリアス・テーブル２０３０は同一のものである。同様に、図５におけるプロセッサ２０４０および物理レジスタフリーリスト２０２０も扱う番号が論理レジスタ番号からキャッシングレジスタ番号に差し替えただけで全く同一の構成となっている。
【００５１】
図５において、レジスタ・エイリアス・テーブル２０３０、プロセッサ２０４０、物理レジスタフリーリスト２０２０、物理レジスタ２０１０で、図９で説明したレジスタ・リネーミング機構と同じもので構成されている。これらの動作については、従来例の図９の説明される動作と全く同じ動作となるので説明を省略する。本第２実施形態では、従来のレジスタ・リネーミング機構の構成加えて、論理レジスタ４０００、ＴＡＧ４１００、ＬＲＵカウンタ４２００により構成される。
【００５２】
ＴＡＧ４１００は、図３に示したＴＡＧ１１０に対応するもので、論理レジスタ番号を示すＴＡＧフィールド４１１０と、ダーティービット４１２０とキャッシングレジスタ番号．フィールド４１３０に加えてキャッシングレジスタエントリビット４１４０で構成されている。
【００５３】
キャッシングレジスタエントリビット４１４０は現在キャッシングレジスタにエントリされている論理レジスタ番号を示すビットで、ＴＡＧフィールド４１１０の論理レジスタ番号に対応するキャッシングレジスタエントリビット４１４０が「１」の場合、キャッシングレジスタにエントリされていることとする。
【００５４】
図３で説明したロードレジスタ命令が発行された場合、ロードレジスタ命令で指定される論理レジスタ番号に一致するキャッシングレジスタエントリビット４１４０が「１」にセットされる。このとき、ロードレジスタ命令に割り当てられるキャッシングレジスタ番号は最もアクセス頻度の少ないキャッシングレジスタ番号が割り当てられる。このとき、キャッシングレジスタエントリビット４１４０が１でかつキャッシングレジスタ番号．フィールド４１３０のキャッシングレジスタ番号にマッチした論理レジスタ番号、つまりキャッシングレジスタにエントリされており、置き換え対象となる論理レジスタ番号のダーティービット４１２０が「１」でダーティーな場合、対象となる割り当てを行なうキャッシングレジスタ番号．に対するストアレジスタ命令が作成され、対応するダーティービット４１２０が０にクリアされる。
【００５５】
ストアレジスタ命令、ロードレジスタ命令の順で発行され、ストアレジスタ命令は、通常のフェッチされるレジスタを参照するのみの命令と同様に、レジスタ・エイリアス・テーブル２０３０のキャッシングレジスタ番号．に対応する物理レジスタ番号を参照し、置き換え対象の論理レジスタ番号へストアするという命令として作成され、プロセッサ２０４０に該当するキャッシングレジスタ番号がエントリされていないか確認する手順を踏んで実行される。その命令が実行されると、信号線４３１０を経由して物理レジスタ２０１０から論理レジスタ４０００の指定先へとデータがストアされることになる。
【００５６】
後続のロードレジスタ命令も通常のフェッチされるレジスタ書き換えを行なう命令と同様に、レジスタ・エイリアス・テーブル２０３０のキャッシングレジスタ番号に対応するテーブルに物理レジスタフリーリスト２０２０より割り当てを行なう物理レジスタ番号を割り当てて、プロセッサ２０４０にエントリされて実行されると、信号線４３００を経由して、論理レジスタ４０００から物理レジスタ２０１０へレジスタ・エイリアス・テーブル２０３０で示される物理レジスタ番号へデータがロードされる。
【００５７】
以上のような動作によって、キャッシングレジスタの入れ替えが行なわれる。図４に示されたフローチャートにより説明したように、ＴＡＧ４１００でソースレジスタナンバーＲｓ，Ｒｔに該当する論理レジスタがキャッシングレジスタにエントリされていれば、ストアレジスタ命令、ロードレジスタ命令が挿入されることなく、通常のフェッチされた命令のみが従来例と同様の動作で実行され続ける。
【００５８】
キャッシングレジスタの入れ替え動作時のＴＡＧ４１００で行なわれるキャッシングレジスタ番号の割り当ては、前述したように本実施例では最もアクセス頻度の少ないキャッシングレジスタ番号を割り当てることとする。その実現は、例えばカウンタを用いたＬＲＵアルゴリズムにより簡単に実現できる。ＬＲＵカウンタ４２００は、ＴＡＧ４１００で通常のフェッチされた命令のソースレジスタナンバーＲｓ，Ｒｔのキャッシングレジスタへのエントリチェック時、ヒットしたキャッシングレジスタ番号．に対応するカウンタを０にクリアし最近アクセスされたことを記憶する。
【００５９】
また、ヒットしたカウンタのクリア前カウントより小さいカウンタは、１つインクリメントする。それ以外のカウンタはそのままとすることにより、各キャッシングレジスタ番号．にエントリされている論理レジスタ番号のアクセス頻度が相対的に示されることになり、最も値の大きいものが最もアクセス頻度の少ないキャッシングレジスタ番号となる。
【００６０】
仮に、キャッシングレジスタ数の半分のレジスタ数のみを使用するプログラムが実行され、キャッシングレジスタがヒットし続けると、残り半分のカウンタはオーバーフローすることになるが、その場合はキャッシングレジスタ番号の小さい順に割り当てるなどのプライオリティー（優先度）により割り当てを行なえば良い。また、オーバーフロー以外でもカウンタの値が最大なものが複数存在した場合でも同様方法で対応可能である。
【００６１】
図６には、図１０で説明した、２スレッド同時実行のマルチスレッド対応プロセッサの構成例に本実施例を組み込んだ場合の構成例を示す。従来例と同様に物理レジスタ３４００と物理レジスタ３７００は説明の便宜上レジスタリードとレジスタライトの動作で分けて示してあるが、実体はひとつのレジスタであり、図５で示した物理レジスタ２０１０に対応するものであるとする。
【００６２】
デコーダ３２００中には、２つのロード／ストアレジスタ命令挿入ユニット５２１０と５２２０と、実行ユニット３５００中に論理レジスタ５３００を加えている。ロード／ストアレジスタ命令挿入ユニット５２１０と５２２０は各々レジスタ・エイリアス・テーブル３２１０とレジスタ・エイリアス・テーブル３２２０に対応し、その動作の関係は図５で説明した動作と全く同様である。また、ロード／ストアレジスタ命令挿入ユニット５２１０と５２２０がキャッシングの対象とする論理レジスタは、各々論理レジスタ５３００に実装される全レジスタ番号を対象とし特に制限されるものではない。
【００６３】
ストアレジスタ命令がロード／ストアレジスタ命令挿入ユニット５２１０または５２２０から発行された場合、物理レジスタ３４００から論理レジスタ５３００へデータ転送される。ロードレジスタ命令がロード／ストアレジスタ命令挿入ユニット５２１０または５２２０から発行された場合には、論理レジスタ５３００から物理レジスタ３７００へデータが転送される。
【００６４】
従来例で示したようにプログラムＡ、プログラムＢ相互に依存関係のない処理である。仮に、プログラムＡ、プログラムＢに共通の論理レジスタ番号が割り当てられたとすると、本実施例においてはストアレジスタ命令またはロードレジスタ命令のデータ転送処理で同一論理レジスタ番号に対するアクセスが発生してしまう。この問題は、本実施形態により増加した論理レジスタによりソフトウエアにより各スレッドプログラムへのレジスタ割り当ての最適化と各スレッドの実行スケジューリングによるソフト上の最適化により回避されるものとする。
【００６５】
この第２実施形態によるプロセッサによれば、論理レジスタの増加がソフトウエアによる最適化を容易にすることになる。また、第２実施形態では、インプリメントを行なった場合に問題となる、動作スピード上クリティカルとなる要因を分散させることになる。
【００６６】
実行ユニット３５００中にある演算ユニット等が演算処理のために必要なデータをリードし演算処理後に結果をライトするといった処理に比べ、単にデータ転送するのみのストアレジスタ命令またはロードレジスタ命令の処理はシンプルであり動作スピード上問題とはならない。また、従来例において論理レジスタ数が仮に４倍になった場合には、各レジスタ・エイリアス・テーブル、物理レジスタのサイズがリニアに（正比例して）増加すると共に、プロセッサの論理レジスタ番号フィールドの増加により、プロセッサ３８００とデコーダ３２００を跨ぐ必要な信号線が飛躍的に増加することになる。
【００６７】
この第２実施形態では、各レジスタ・エイリアス・テーブル、物理レジスタ、プロセッサ構成はそのままで、論理レジスタを実行ユニットに加える増加と、デコーダ３２００内でのロード／ストアレジスタ命令挿入ユニットはレジスタ・エイリアス・テーブルとの関係の内部信号に限定されるため、従来の動作スピード上クリティカルとなる問題を解決すると共に、論理レジスタ数を容易に増加することが可能となる。
【００６８】
次に、図７を用いて本発明の第３実施形態に係るレジスタ・リネーミング機能を有するプロセッサについて説明する。第３実施形態に係るプロセッサは、図４のフローチャートに示した第２実施形態のプロセッサの制御フローを実現するロード／ストアレジスタ命令挿入ユニット１００の構成の一例を示している。
【００６９】
図７において、ＴＡＧ１１０と、命令フェッチ１０より供給される命令コードからレジスタナンバー情報を取り出すプリデコード装置１３０と、このプリデコード装置１３０からのレジスタナンバー情報と、ＴＡＧ１１０のタグ（Ｔａｇ．）領域に格納される論理レジスタ番号の比較を行い、挿入命令のレジスタナンバーを生成する挿入命令レジスタ番号生成装置１４０と、ロード／ストアレジスタ命令発行装置１２０と、命令挿入制御装置１５０とより構成される。
【００７０】
プリデコード装置１３０は、命令フェッチ１０より供給される命令よりレジスタナンバー情報を取り出し、挿入命令レジスタ番号生成装置１４０へ供給する。挿入命令レジスタ番号生成装置１４０は、供給されたレジスタナンバー情報によりＴＡＧ１１０のタグ（Ｔａｇ．）領域に格納される論理レジスタ番号の比較を行う。レジスタ番号情報の比較は、ディスティネーションレジスタナンバーＲｄ、ソースレジスタナンバーＲｓ，Ｒｔ毎にそれぞれＴＡＧ１１０のタグ（Ｔａｇ．）領域の全ての論理レジスタ番号と連想方式により比較を行なう。
【００７１】
ソースレジスタナンバーＲｓ，Ｒｔの比較を行ない、一致した場合、対応するＴＡＧ１１０のＤビット（ｂｉｔ）を参照し、Ｄ＝１でダーティーな場合には、信号線１１１，１１２よりストアレジスタ命令のレジスタ番号情報がロード／ストアレジスタ命令発行装置１２０に供給される。また、ストアレジスタ命令のレジスタ番号情報を供給と同じタイミングで、信号線１４５，１４６を介して、ＴＡＧ１１０のＤビットをクリアする。Ｄ＝０の場合には何も行なわない。
【００７２】
ソースレジスタナンバーＲｓ，Ｒｔの比較が不一致の場合には信号線１４１，１４２をよりロードレジスタ命令のレジスタ番号情報がロード／ストアレジスタ命令発行装置１２０に供給され、信号線１１３よりロードすべきキャッシングレジスタ番号．がロード／ストアレジスタ命令発行装置１２０に供給される。また、ロードレジスタ命令のレジスタ番号情報の供給と同じタイミングで、信号線１４５，１４６を介しＴＡＧ１１０のＤビットをクリアする。
【００７３】
ディスティネーションレジスタナンバーＲｄの比較では、一致した場合、信号線１４７を介して一致したタグ（Ｔａｇ．）領域の対応するＤビットを１にセットし、ダーティーな状態になることをセットする。ディスティネーションレジスタナンバーＲｄの比較が不一致の場合には、ＬＲＵ（ｌｅａｓｔ−ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）等の置換アルゴリズムでＴＡＧ１１０の追い出すエントリを決定し、決定されたキャッシングレジスタ番号．に対応するレジスタ番号情報が信号線１１１，１１２を介してストアレジスタ命令のレジスタ番号情報としてロード／ストアレジスタ命令発行装置１２０に供給される。また、信号線１４５を介してディスティネーションレジスタナンバーＲｄが置換対象となったＴＡＧ１１０のタグ（Ｔａｇ．）領域に供給される。
【００７４】
ロード／ストアレジスタ命令発行装置１２０は、命令コードのオペコード部にロードレジスタ（Ｌｄ．Ｒｅｇ．）命令、ストアレジスタ（Ｓｔ．Ｒｅｇ．）命令を示すコードが埋め込まれたフェッチされる命令コードと同形式のコードがＲＯＭまたはＰＬＡ等の構成によりコードを有しており、挿入命令レジスタ番号生成装置１４０より供給されるレジスタ番号情報を組み込むことで、実際に発行する挿入命令コードを作成する。
【００７５】
また、ロードレジスタ（Ｌｄ．Ｒｅｇ．）命令、ストアレジスタ（Ｓｔ．Ｒｅｇ．）命令の各々に対応するレジスタ番号情報が供給されることにより、命令発行の必要の有無を判断し、作成した命令コードを命令挿入制御装置１５０に命令発行する。ロードレジスタ（Ｌｄ．Ｒｅｇ．）命令に対応するレジスタ情報が供給されなければ、ロードレジスタ（Ｌｄ．Ｒｅｇ．）命令は発行されず、ストアレジスタ（Ｓｔ．Ｒｅｇ．）命令に対応するレジスタ情報が供給されなければ、ストアレジスタ（Ｓｔ．Ｒｅｇ．）命令は発行されない。
【００７６】
命令挿入制御装置１５０は、ロード／ストアレジスタ命令発行装置１２０より命令発行が行われると、命令フェッチ１０より供給される命令の前にロード／ストアレジスタ命令発行装置１２０からの命令を付けて命令デコード２０に供給する。以上の構成により、図４に示した制御フローにおける動作を実現することができる。
【００７７】
【発明の効果】
プログラム上で参照可能な論理レジスタ数を扱うプロセッサにおける制御の複雑度を抑えることができると共に、長い期間のパイプラインストールを発生することなく、多くの論理レジスタ数を扱えることができ、ソフトウェア最適化による性能向上が可能になる。
【図面の簡単な説明】
【図１】本発明の基本概念としての第１実施形態に係るマイクロプロセッサの構成を示すブロック図である。
【図２】本発明の第２実施形態によるレジスタファイルを有するマイクロプロセッサの構成を示す機能ブロック図である。
【図３】図２におけるＴＡＧ１１０の詳細な構成を示す説明図である。
【図４】同じく図２のＴＡＧ１１０での制御フローを示すフローチャートである。
【図５】本発明の第２実施形態に係る実施例のレジスタファイルを有するマイクロプロセッサにおけるレジスタ・リネーミング機構の構成を示す説明図である。
【図６】本発明の第２実施形態におけるマルチスレッド対応のマイクロプロセッサの構成例を示す機能ブロック図である。
【図７】図４の制御フローを実現する構成としての第３実施形態に係るマイクロプロセッサのロード／ストアレジスタ命令挿入ユニットを示すブロック図である。
【図８】従来のマイクロプロセッサの一例を示す機能ブロック図である。
【図９】従来のマイクロプロセッサにおけるレジスタ・リネーミング機構の構成を示す説明図である。
【図１０】従来のマルチスレッド対応のマイクロプロセッサの構成例を示す機能ブロック図である。
【符号の説明】
１  命令フェッチ部
２  命令デコード部
３  キャッシングレジスタ
４  レジスタ本体
５  レジスタ命令挿入ユニット
６  内部命令情報保持部（ＴＡＧ）
７  プリデコード部
８  命令挿入判定部
９  レジスタ転送命令発行部
１０  命令フェッチ部
２０  命令デコード部
３０  集中ウインド
４０  レジスタ本体
５０  プロセッサ
６０  ＡＬＵ
７０  ストアユニット
８０  ロードユニット
９０  データキャッシュメモリ
１００  （ロード／ストア）レジスタ命令挿入ユニット
１１０  内部命令情報保持部（ＴＡＧ）
１２０  レジスタ転送命令発光部（ロード／ストアレジスタ命令発行部）
１３０  プリデコード部
１４０  命令挿入判定部（挿入命令レジスタ番号生成部）
１５０  命令挿入制御部
３００  キャッシングレジスタ
４００  ＲＡＭ（レジスタ本体）
２０３０  レジスタ・リネーミング処理部
２０４０  リオーダバッファ
【図１】
2004303026.tif 000003
【図２】
2004303026.tif 000004
【図３】
2004303026.tif 000005
【図４】
2004303026.tif 000006
【図５】
2004303026.tif 000007
【図６】
2004303026.tif 000008
【図７】
2004303026.tif 000009
【図８】
2004303026.tif 000010
【図９】
2004303026.tif 000011
【図１０】
2004303026.tif 000012