JP2002175181A - プロセッサおよびリネーミング装置 - Google Patents
プロセッサおよびリネーミング装置Info
- Publication number
- JP2002175181A JP2002175181A JP2001101216A JP2001101216A JP2002175181A JP 2002175181 A JP2002175181 A JP 2002175181A JP 2001101216 A JP2001101216 A JP 2001101216A JP 2001101216 A JP2001101216 A JP 2001101216A JP 2002175181 A JP2002175181 A JP 2002175181A
- Authority
- JP
- Japan
- Prior art keywords
- register
- bank
- instruction
- control register
- logical
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 13
- 238000007796 conventional method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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
-
- 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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
軟性のあるレジスタ・リネーム処理を行うことが可能な
プロセッサを提供する。 【解決手段】 プロセッサは、命令メモリ1と、フェッ
チ・ユニット2と、デコード・ユニット3と、後述する
リネーム命令を実行するリネーム制御ユニット(RCU)4
と、リネーム制御レジスタ(RCR)5と、物理アドレスと
論理アドレスとの対応関係を記憶するレジスタファイル
6と、デコードした命令を実行する演算処理ユニット(A
LUs)7とを備えている。物理レジスタ番号と論理レジス
タ番号との対応関係を指定するための専用の命令である
レジスタ・リネーム命令により、制御レジスタ内の任意
のバンドルについて、バンドルごとに物理レジスタ番号
と論理レジスタ番号との対応関係を指定できるようにし
たため、命令の数を増やすことなく、パイプライン・バ
ブルの発生を抑制できる。
Description
サやディジタル処理プロセッサ(DSP:Digital Signal Pr
ocessor)のような高周波動作が要求されるプロセッサ
と、レジスタのリネーミングを行うリネーミング装置に
関し、特に、ソフトウェア・パイプライニングを行う技
術に関する。
波数を上げていくとどうしてもパイプラインステージ数
が多くなり、パイプライン・バブル(パイプライン・ス
トール)が多くなる。バブルを埋めるためには、ソフト
ウェア・パイプライニングを行うことが一般的である。
テージを示す図、図19は図18のプロセッサが実行す
るプログラムの一例を示す図である。
を実行するにあたって、データのバイパスはまったくな
いものとし、Wステージでレジスタへの書き込みを行っ
た後のみ、Dステージでデータの読み込みが可能になる
ものとする。
プライン実行が可能なプロセッサは、図19のプログラ
ムを図20のような手順で実行する。命令1のWa(5
サイクル目)でレジスタr1にデータが書き込まれ、命
令2のWb(6サイクル目)でレジスタr2にデータが
書き込まれる。命令3は、Dcでレジスタr1,r2を
読み込むため、3サイクル分、インターロック(ストー
ル)させられる。これがデータ依存関係によるパイプラ
イン・バブルであり、図20では「*」で示している。
図20の例では、6個のパイプライン・バブルが存在す
る。
スタr3を、命令4はDeで読み込む。命令5は、ただ
の分岐命令であり、他と依存関係がないため、すぐ次の
サイクルで実行される。
の分岐命令はペナルティなし(分岐遅延スロットなし)
としており、ロードストア命令のアドレス・インクリメ
ントも1サイクルでできるものとしている。
決するために行われるのが、各ループのオーバーラップ
実行である。図21はオーバーラップ実行の一例を示す
図である。図21の例では、3ループ中でパイプライン
・バブルは一つしか発生していない。図20の例だと、
1ループあたり6個のパイプライン・バブルが発生して
いたため、バブル数を1/18に激減させることができる。
能を上げるには、原始的には、プログラマがソフトウェ
ア・パイプライニングを組んで実現する。そのプログラ
ムは例えば図22のようなものである。
r1,r2,r7,a1,a2,a7を使用し、ループ
2ではレジスタr3,r4,r8,a3,a4,a8を
使用し、ループ3ではレジスタr5,r6,r9,a
5,a6,a9を使用する。
でそれぞれ異なるレジスタを使用するため、プログラム
の命令数が3倍になってしまい、また、プログラマはオ
ーバーラップしている各ループでレジスタがぶつからな
いように指定しなければならない。
して、以下の二つが提案されている。一つは、out-of-o
rder発行機能と自動レジスタ・リネーミング機能を備え
たプロセッサであり、このようなプロセッサでは、図1
9のようなプログラムの記述のままで、図21のような
理想的な動作を行う。ただし、out-of-order発行機能を
実現するためのハードウェアが膨大になるという問題が
ある。
omeのコンピュータに実装されている、レジスタ・ロー
テーション機能である。図22の例をレジスタ・ローテ
ーションで実現すると、図23のようになる。
命令を実行するのと同時に、レジスタのローテーション
を行う。ローテーションでは、3つのレジスタずつ入れ
替える。この場合のプログラムは、図24のようにな
り、またパイプラインの動作は図25のようになる。
図26のようになる。また、2ループ目終了時のレジス
タの対応関係は図27のようになる。
ェアが複雑になるという問題がある。また、従来のレジ
スタ・ローテーション機能は、柔軟性が低く、単純なロ
ーテーション以外には適用できないという問題がある。
ものであり、その目的は、ハードウェアを複雑にするこ
となく、柔軟性に富んだレジスタ・リネーム機能を実現
可能なプロセッサを提供することにある。
成でレジスタ・リネーム機能を実現可能なリネーミング
装置を提供することにある。
ために、本発明は、レジスタのリネーミング機能を持
ち、ソフトウェア・パイプライニングを行うプロセッサ
において、物理レジスタ番号と論理レジスタ番号との対
応関係を示す制御レジスタと、発行された命令列の中
に、前記制御レジスタへの値の設定を指示する命令が含
まれている場合に、前記命令の内容に応じて前記制御レ
ジスタへの値の設定を行う制御レジスタ設定手段と、を
備える。
応じて、物理レジスタ番号と論理レジスタ番号との対応
関係を任意に設定変更できるようにしたため、ハードウ
ェアの構成を複雑にすることなく、柔軟性のあるレジス
タ・リネーム機能を実現できる。
位として物理レジスタ番号と論理レジスタ番号との対応
づけを行えば、簡易かつ迅速にレジスタ・リネームを行
えるようになる。
スタ部を設け、各レジスタ部を利用してレジスタ・リネ
ームを行えば、よりいっそう高速にレジスタ・リネーム
を行えるようになる。
は論理レジスタを単位とする複数のバンクのそれぞれご
とに、物理レジスタ番号と論理レジスタ番号との対応関
係を格納する制御レジスタと、発行された命令の中に、
前記バンクを単位とした物理レジスタ番号と論理レジス
タ番号との対応づけを変更する対応づけ変更命令が含ま
れている場合に、該命令で指示されたバンクに対応する
前記制御レジスタの内容をリセットするリセット手段
と、前記対応づけ変更命令で指示される、対応づけの変
更を行うバンクの種類に関する情報と対応づけの変更量
に関する情報とに基づいて、リセットされた前記制御レ
ジスタに新たな値を設定する制御レジスタ設定手段と、
を備える。
ついて、図面を参照しながら具体的に説明する。
ロセッサの一実施形態の概略構成を示すブロック図であ
る。図1のプロセッサは、命令列を記憶する命令メモリ
1と、命令メモリ1からの命令をフェッチするフェッチ
・ユニット2と、フェッチした命令をデコードするデコ
ード・ユニット3と、後述するリネーム命令を実行する
リネーム制御ユニット(RCU:Rename Control Unit)4
と、リネーム制御レジスタ(RCR:Rename Control Regist
er)5と、物理アドレスと論理アドレスとの対応関係を
記憶するレジスタファイル6と、デコードした命令を実
行する演算処理ユニット(ALUs)7とを備えている。
本ずつ組みにした複数のバンドル(バンク)に区分け
し、バンクを単位として物理レジスタ番号と論理レジス
タ番号との対応づけを行う点に特徴がある。
ム制御レジスタ5が利用される。リネーム制御レジスタ
5は、ソース・レジスタ(ソースRCR、第1のレジス
タ部)、デスティネーション・レジスタ(デスティネー
ションRCR、第2のレジスタ部)、およびエフェクテ
ィブ・レジスタ(エフェクティブRCR、第3のレジス
タ部)の3種類で構成される。
うに、5段階に分けてパイプライン処理を行う。また、
このプロセッサは、命令セットとして、図3(a)に示
す演算命令と、図3(b)に示すロード/ストア命令
と、図3(c)に示す条件分岐命令とを有し、この他
に、図3(d)に示すレジスタ・リネーム命令を有する
点に特徴がある。
レジスタ5をセットするための専用の命令であり、
(1)〜(4)までの4つの命令からなる。(1)のST
ORE_RENは、汎用レジスタsrc1の内容をデスティネーシ
ョンRCRにセットする命令である。(2)のLOAD_REN
は、デスティネーションRCRの内容を汎用レジスタsr
c1にセットする命令である。(3)のROTATEは、後述す
るように、ソースRCRのfromビット目からtoビット目
まで、bit数分だけ左にローテートする命令である。
(4)のRENAMEは、デスティネーションRCRの内容を
エフェクティブRCRとソースRCRにコピーする命令
である。
(d)に示すレジスタ・リネーム命令が発行されると、
リネーム制御レジスタ5の設定を行う。図4はRENAME命
令実行時のリネーム制御ユニット4の処理動作を示すフ
ローチャートである。まず、リネーム制御ユニット4
は、ソースRCRの内容をデスティネーションRCRに
書き込む(ステップS1)。
Rの更新を行う(ステップS2)。次に、ソースRCR
の更新結果をデスティネーションRCRに書き込む(ス
テップS3)。
を、ソースRCRとエフェクティブRCRに書き込む
(ステップS4)。次に、エフェクティブRCRの内容
に基づいてレジスタファイル6に物理レジスタ番号と論
理レジスタ番号との対応関係を書き込む(ステップS
5)。
ティブRCRを参照することにより、論理レジスタ番号
と物理レジスタ番号との対応関係を検出する。したがっ
て、エフェクティブRCRが参照されている間に、ソー
スRCRとデスティネーションRCRは、他の作業、例
えば次のリネーム処理を行うための作業等に利用可能で
ある。
であり、リネーム制御レジスタ5が持つ16個のバンド
ルそれぞれについて、バンドルごとに、論理レジスタ番
号のフィールド(管理領域)を物理アドレス番号に対応
づける例を示している。具体的には、バンドル0に属す
る16個の論理レジスタ番号E0〜EFを物理レジスタ
番号00〜0Fに対応づけ、バンドル1に属する16個
の論理レジスタ番号F0〜FFを物理レジスタ番号10
〜1Fに対応づけ、以下順繰りに対応づけを行い、バン
ドルfに属する16個の論理レジスタ番号D0〜DFを
物理レジスタ番号F0〜FFに対応づける例を示してい
る。
6ビットの容量をもち、リネーム制御レジスタ5の16
個分のバンドルそれぞれの物理レジスタ番号と論理レジ
スタ番号との対応関係を記憶する。
り、4番目のバンドルからc番目のバンドルまで、2バ
ンドルずつ左にローテートする例を示している。
バンドルずつ左にローテートする例を示し、図7(b)
はすべてのバンドルを2バンドルずつ左にローテートす
る例を示している。
バンドルずつ左にローテートする例を示し、図8(b)
はすべてのバンドルを8バンドルずつ左にローテートす
る例を示している。
バンドルずつ左にローテートする例を示し、図9(b)
は上位側8バンドルを2バンドルずつ左にローテートす
る例を示している。
4バンドルずつ左にローテートする例を示し、図10
(b)は8バンドル目からbバンドル目までを1バンド
ルずつ左にローテートする例を示している。
バンドル目までを1バンドルずつ左にローテートする例
を示し、図11(b)はaバンドル目からbバンドル目
までを1バンドルずつ左にローテートする例を示してい
る。
タ番号と論理レジスタ番号との対応関係を指定するため
の専用の命令であるレジスタ・リネーム命令により、制
御レジスタ内の任意のバンドルについて、バンドルごと
に物理レジスタ番号と論理レジスタ番号との対応関係を
指定できるようにしたため、命令の数を増やすことな
く、パイプライン・バブルの発生を抑制できる。
容はプログラマが任意に指定できるため、必要に応じて
リネーム処理を行うことができ、柔軟性のあるレジスタ
リネーム処理が可能になる。
して、ソースRCR、デスティネーションRCRおよび
エフェクティブRCRを設け、ローテートした結果をソ
ースRCRとエフェクティブRCRの双方に書き込むた
め、エフェクティブRCRの内容を参照して物理レジス
タ番号と論理レジスタ番号との対応づけを行い、その間
にソースRCRやデスティネーションRCRを他の作
業、例えば次のローテート処理に利用することができ
る。したがって、処理効率が向上する。
スタ5内に論理レジスタの各バンドルに対応したフィー
ルドを持つ例を説明したが、その逆に、リネーム制御レ
ジスタ5内に物理レジスタの各バンドルに対応したフィ
ールドを持っておき、リネーム制御ユニット4が論理レ
ジスタのバンドル番号をセットしてもよい。
ジスタ・リネーム命令にて、From=2、To=a、Shift=3を
指定した場合のローテーション動作を示しており、図1
2(a)はバンドルの初期値を示している。図12
(a)のようなバンドルに対してローテーションを行う
と、バンドル番号が「2」から「a」までのバンドルの
内容が「3」バンドルずつ左にシフトし、シフトではみ
出た分がローテーション対象のバンドルの右側から埋め
られるように動作する。その結果、図12(b)のよう
になる。この状態からさらに同様のローテーションを行
うと図12(c)のようになり、この状態からさらに同
様のローテーションを行うと図12(a)に戻る。
号、cはレジスタ番号)のレジスタにアクセスするプロ
グラムでは、実際にアクセスされる物理アドレスは、図
13のように変化し、プログラムでは同一の論理アドレ
スを指定しても、実際には異なる物理アドレスを使用す
ることになり、ソフトウェア・パイプライニングが行わ
れる。
テンションさせるバンドルの種類および範囲を任意に指
定できるため、レジスタ・リネーム処理をハードウェア
で構成する場合には、ローテーションにより移動先とな
る可能性のあるすべてのバンドルに対してデータを受け
渡すパスを設ける必要がある。
合のデータパスの例を示している。このように、データ
パスはバンドル間をまたがる配線になる。これらの配線
はマルチプレクサに接続されて、最終的にマルチプレク
サによって必要なバンドルのデータが選択されてバンド
ルが更新される。
を設けると、配線面積が増大し、配線長の増加に伴って
速度が低下するなどの問題が起こるおそれがある。特
に、バンドル数が増加する場合、配線面積はバンドル数
の2乗に比例するため、ますます重大な問題になる。
は、上述したレジスタ・リネーム命令によるレジスタ番
号のローテーションを、簡易な構成のハードウェアによ
り実現することを特徴とする。
一実施形態のブロック図である。図15のリネーミング
装置は各バンドルごとに設けられ、例えば16個のバン
ドルが存在する場合には、図15のリネーミング装置も
16個設けられる。これらリネーミング装置は、例えば
プロセッサに内蔵される。
れた元のバンドル番号がレジスタ・リネーム命令で指示
された下限バンドル番号および上限バンドル番号の間に
含まれるか否かを判定する第1判定部(第1判定手段)
11と、第1判定部11の判定結果に基づいて、バンド
ルのローテーション量を設定する第1選択部(第1選択
手段)12と、元のバンドル番号に対応する新たなバン
ドル番号を演算する第1バンドル番号演算部(第1バン
ドル番号演算手段)13と、演算された新たなバンドル
番号がレジスタ・リネーム命令で指示された下限バンド
ル番号のバンドル番号よりも若い番号であるか否かを判
定する第2判定部(第2判定手段)14と、第2判定部
14の判定結果に基づいてバンドル番号の補正値を選択
する第2選択部(第2選択手段)15と、第2選択部1
5の選択制御を行うアンド回路16と、バンドル番号演
算部で演算されたバンドル番号と第2選択部(第2選択
手段)15で選択された補正値とを加算して最終的なバ
ンドル番号を演算する第2バンドル番号演算部(第2バ
ンドル番号演算手段)17と、第1バンドル番号演算部
13で演算されたバンドル番号と制御レジスタ18に格
納されたバンドル番号とのいずれか一方を選択する第3
選択部(第3選択手段)19と、制御レジスタ18に格
納するための最終的なバンドル番号を選択する第4選択
部(リセット手段)20とを備えている。
ジスタ・リネーム命令の下限バンドル番号と上限バンド
ル番号との間にあれば、レジスタ・リネーム命令のロー
テーション量を選択して出力し、入力されたバンドル番
号がレジスタ・リネーム命令の下限バンドル番号と上限
バンドル番号との間になければ、ゼロを出力する。
スタ18に格納されたバンドル番号から第1選択部12
での選択結果を引く演算を行う。
号が下限バンドル番号と上限バンドル番号との間で、か
つ第1バンドル番号演算部13で演算されたバンドル番
号がレジスタ・リネーム命令の下限バンドル番号よりも
小さいときに「1」を出力し、それ以外のときは「0」
を出力する。
が「0」であれば「0」を出力し、アンド回路16の出
力が「1」であれば、レジスタ・リネーム命令の上限バ
ンドル番号から下限バンドル番号を引いた値に「1」を
加えた値(To−From+1)を出力する。
令の実行時に第2バンドル番号演算部17で演算された
バンドル番号を選択し、それ以外の命令を実行するとき
は制御レジスタ18に格納されているバンドル番号を選
択する。
令が発行されたときに、一時的に制御レジスタ18を初
期化し、それ以外のときは第3選択部19で選択された
バンドル番号をそのまま選択する。初期化する際は、入
力されたバンドル番号をそのまま制御レジスタ18に格
納する。
に対応し、第2バンドル番号演算部17および第3選択
部19が制御レジスタ設定手段に対応する。
て、図16に示すように、下限バンドル番号Fromが3、
上限バンドル番号Toがb、ローテーション量Shiftが3
の場合を例にとって、図15のリネーミング装置の処理
動作を説明する。図16の制御レジスタには、物理アド
レスのバンドル番号が格納されている。
テーション情報セット時、(2)ローテーション命令非
実行時、(3)ローテーション命令実行時で、指定され
たバンドル番号が下限バンドル番号と上限バンドル番号
との間にある場合、および(4)ローテーション命令実
行時で、指定されたバンドル番号が下限バンドル番号と
上限バンドル番号との間にない場合の4通りの処理動作
を行う。
動作を説明する。ローテーション命令が発行されると、
ローテーション動作を行う前に、第4選択部20は制御
レジスタ18の内容を初期化する。具体的には、ローテ
ーションを行う範囲内のバンドルについては論理レジス
タ番号と物理レジスタ番号とを一致させ、それ以外の範
囲内のバンドルについては制御レジスタ18の値を変更
しないようにする。この結果、図16(b)のように、
論理アドレスのバンドル番号と物理アドレスのバンドル
番号は一致する。
動作を説明する。この場合、第3選択部19は制御レジ
スタ18に格納されたバンドル番号を選択するため、制
御レジスタ18のデータは変化しない。
バンドル番号が下限バンドル番号と上限バンドル番号と
の間に存在しない場合(図16のバンドル番号0〜2と
c〜f)の処理動作を説明する。この場合、第1選択部
12は「0」を出力し、第1バンドル番号演算部13は
制御レジスタ18に格納されているバンドル番号をその
まま出力する。また、第1判定部11の出力は「0」で
あるため、アンド回路16の出力はゼロになり、第4選
択部20は「0」を出力する。
バンドル番号が下限バンドル番号と上限バンドル番号と
の間に存在する場合の処理動作を説明する。この場合、
第1判定部11は「1」を出力し、第1選択部12は
「3」を出力し、第1バンドル番号演算部13は制御レ
ジスタ18に格納されたバンドル番号から「3」を引い
た値を出力する。これにより、第1バンドル番号演算部
13の出力は、図16(c)のようになる。
部13で演算されたバンドル番号が「0」、「1」、
「2」のいずれかであれば「0」を出力し、それ以外の
ときは「1」を出力する。
と、第2選択部15は上限バンドル番号「b」から下限
バンドル番号「3」を引いた値に「1」を加えた値(11
-3+1=9)を出力する。第2判定部14から「1」が出力
されると、第2選択部15は「0」を出力する。
ドル番号演算部13で演算されたバンドル番号が
「0」、「1」、「2」のときは、これらの値に「9」
を加えた値「9」、「a」、「b」をそれぞれ出力す
る。また、第1バンドル番号演算部13で演算されたバ
ンドル番号が「3」〜「8」のときはそのまま出力す
る。これにより、制御レジスタ18の内容は図16
(d)のようになる。
リネーム命令を実行するとき、ローテーションする範囲
内のバンドルを初期化した後、レジスタ・リネーム命令
のローテーション量、下限バンドル番号、および上限バ
ンドル番号に基づいて、ハードウェアによりバンドルの
ローテーションを行うため、バンドル間でデータのやり
取りを行わなくても新たなバンドル番号を設定できる。
したがって、バンドル間をまたがる配線が不要となり、
配線量を削減できるとともに、高速処理が可能になる。
内部に組み込む場合、リネーミング装置をパイプライン
の動きに合わせて動作させるのが望ましい。図17はプ
ロセッサをパイプライン動作させる場合のリネーミング
装置の動作状態を示すブロック図である。この例は、4
サイクルかけてバンドルの内容をローテーションするも
のである。
ンの各ステージに同期させるためのレジスタファイル2
1を有する点を除けば、図15の装置と同様に構成され
ており、図15と同様に回路構成を簡素化でき、かつ高
速動作が可能になる。
は、装置内部に設けられるレジスタファイル21でシス
テムクロックに同期させるため、ゲート段数が多くても
タイミングが保障され、動作が安定化し、高速クロック
にも容易に対応できる。
れば、物理レジスタ番号と論理レジスタ番号との対応関
係を示す制御レジスタを設け、プログラマが指定した命
令により制御レジスタに値を任意に設定できるようにし
たため、ハードウェアの構成を複雑にすることなく、パ
イプライン・バブルの発生を抑えることができる。特
に、従来のout-of-order発行機能を有するスーパースカ
ラプロセッサなどよりも、ハードウェアの構成を大幅に
簡略化できる。
理レジスタ番号との対応関係を任意に設定変更できるた
め、従来のレジスタ・ローテーション機能を持つプロセ
ッサよりも柔軟性のあるレジスタ・ローテーションが実
現できる。
令が発行されると、いったん制御レジスタの内容をリセ
ットした後、対応づけ変更命令で指示される内容にした
がって制御レジスタに新たな値を設定するようにしたた
め、各バンド間でデータのやり取りをしなくても対応づ
けの変更を行うことができ、ハードウェアで実現したと
きの回路構成を大幅に簡素化できる。したがって、配線
量を削減できるとともに、各配線を短くできるため、プ
ロセッサのパイプライン動作に合わせて動作させること
ができるとともに、高速クロックへの対応が容易にな
る。
ック図。
す図。
処理動作を示すフローチャート。
a、Shift=3を指定した場合のローテーション動作を示す
図。
図。
を示す図。
のブロック図。
リネーミング装置の動作状態を示すブロック図。
す図。
一例を示す図。
グラムの一例を示す図。
す図。
す図。
6)
Claims (13)
- 【請求項1】レジスタのリネーミング機能を持ち、ソフ
トウェア・パイプライニングを行うプロセッサにおい
て、 物理レジスタ番号と論理レジスタ番号との対応関係を示
す制御レジスタと、 発行された命令列の中に、前記制御レジスタへの値の設
定を指示する命令が含まれている場合に、前記命令の内
容に応じて前記制御レジスタへの値の設定を行う制御レ
ジスタ設定手段と、を備えることを特徴とするプロセッ
サ。 - 【請求項2】前記制御レジスタは、複数の物理レジスタ
または論理レジスタを単位とする複数のバンクに分けら
れており、 前記制御レジスタ設定手段は、前記バンクを単位とし
て、物理レジスタ番号と論理レジスタ番号とを対応づけ
ることを特徴とする請求項1に記載のプロセッサ。 - 【請求項3】前記制御レジスタへの値の設定を指示する
命令は、前記制御レジスタ中の任意のバンクについてそ
れぞれ個別に物理レジスタ番号と論理レジスタ番号との
対応関係を指定可能な命令であることを特徴とする請求
項2に記載のプロセッサ。 - 【請求項4】前記制御レジスタは、第1、第2および第
3のレジスタ部を有し、 前記制御レジスタ設定手段は、前記第1のレジスタ部の
内容に基づいて物理レジスタ番号と論理レジスタ番号と
の対応づけを行い、その結果を前記第2のレジスタ部に
書き込み、その後、前記第2のレジスタ部の内容を前記
第1および第3のレジスタ部に書き込むことを特徴とす
る請求項1〜3のいずれかに記載のプロセッサ。 - 【請求項5】前記制御レジスタへの値の設定を指示する
命令は、 前記第1のレジスタ部の内容に基づいて物理レジスタ番
号と論理レジスタ番号との対応づけを行い、その結果を
前記第2のレジスタ部に書き込む命令と、 前記第2のレジスタ部の内容を前記第1および第3のレ
ジスタ部に書き込む命令と、を含むことを特徴とする請
求項4に記載のプロセッサ。 - 【請求項6】前記制御レジスタは、複数の論理レジスタ
を単位とするバンクのそれぞれに対応した管理領域を有
し、各管理領域に物理レジスタのバンク番号を対応づけ
ることを特徴とする請求項1〜5のいずれかに記載のプ
ロセッサ。 - 【請求項7】前記制御レジスタは、複数の物理レジスタ
を単位とするバンクのそれぞれに対応した管理領域を有
し、各管理領域に論理レジスタのバンク番号を対応づけ
ることを特徴とする請求項1〜5のいずれかに記載のプ
ロセッサ。 - 【請求項8】複数の物理レジスタまたは論理レジスタを
単位とする複数のバンクのそれぞれごとに、物理レジス
タ番号と論理レジスタ番号との対応関係を格納する制御
レジスタと、 発行された命令の中に、前記バンクを単位とした物理レ
ジスタ番号と論理レジスタ番号との対応づけを変更する
対応づけ変更命令が含まれている場合に、該命令で指示
されたバンクに対応する前記制御レジスタの内容をリセ
ットするリセット手段と、 前記対応づけ変更命令で指示される、対応づけの変更を
行うバンクの種類に関する情報と対応づけの変更量に関
する情報とに基づいて、リセットされた前記制御レジス
タに新たな値を設定する制御レジスタ設定手段と、を備
えることを特徴とするリネーミング装置。 - 【請求項9】前記対応づけ変更命令は、対応付けの変更
量を示す前記バンクのローテーション量と、ローテーシ
ョンを行う下限バンクおよび上限バンクとを指示するこ
とを特徴とする請求項8に記載のリネーミング装置。 - 【請求項10】予め指定された元のバンク番号が前記対
応づけ変更命令で指示された下限バンクおよび上限バン
クの間に含まれるか否かを判定する第1判定手段と、 第1判定手段の判定結果に基づいて、バンクのローテー
ション量を設定する第1選択手段と、 前記元のバンク番号に対応する新たなバンク番号を演算
する第1バンク番号演算手段と、 演算された前記新たなバンク番号が、前記対応づけ変更
命令で指示された下限バンクのバンク番号よりも若い番
号であるか否かを判定する第2判定手段と、 前記第2判定手段の判定結果に基づいて、バンク番号の
補正値を選択する第2選択手段と、 前記バンク番号演算手段で演算されたバンク番号と前記
第2選択手段で選択された補正値とを加算して最終的な
バンク番号を演算する第2バンク番号演算手段と、 前記第1バンク番号演算手段で演算されたバンク番号と
前記制御レジスタに格納されたバンク番号とのいずれか
一方を選択する第3選択手段と、を備え、 前記リセット手段は、前記対応づけ変更命令が発行され
ると、バンク番号のローテーションを行う前に、前記元
のバンク番号に基づいて前記制御レジスタの内容を初期
化し、それ以外のときは前記第3選択手段で選択された
バンク番号を前記制御レジスタに格納することを特徴と
する請求項9に記載のリネーミング装置。 - 【請求項11】前記第1選択手段は、前記元のバンク番
号が前記対応づけ変更命令で指示された下限バンクおよ
び上限バンクの間に含まれると判定されたときに、前記
対応づけ変更命令で指示されたローテーション量を出力
し、それ以外のときはゼロを出力し、 前記第2選択手段は、前記第1判定手段により下限バン
クおよび上限バンクの間に含まれると判定され、かつ前
記第2判定手段により下限バンクのバンク番号よりも若
い番号であると判定されたときに、前記対応づけ変更命
令で指示された下限バンク番号と上限バンク番号とに基
づいて補正値を選択し、 前記第3選択手段は、前記対応づけ変更命令が発行され
た後、前記バンク番号格納手段に新たなバンク番号を格
納するまでは前記第2バンク番号演算手段で演算された
バンク番号を選択し、それ以外は前記制御レジスタに格
納されているバンク番号を選択することを特徴とする請
求項10に記載のリネーミング装置。 - 【請求項12】前記制御レジスタには、バンクを単位と
して物理レジスタ番号が格納されることを特徴とする請
求項8〜11のいずれかに記載のリネーミング装置。 - 【請求項13】レジスタのリネーミング機能を持ち、ソ
フトウェア・パイプライニングを行うプロセッサにおい
て、 請求項8〜12のいずれかに記載のリネーミング装置を
各バンクごとに設けたことを特徴とするプロセッサ。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001101216A JP3817436B2 (ja) | 2000-09-28 | 2001-03-30 | プロセッサおよびリネーミング装置 |
TW090121830A TWI221579B (en) | 2000-09-28 | 2001-09-04 | Renaming device and processor |
KR1020010057935A KR20020025703A (ko) | 2000-09-28 | 2001-09-19 | 리네이밍 장치 및 프로세서 |
CNB011406623A CN1149472C (zh) | 2000-09-28 | 2001-09-20 | 更名装置及处理器 |
US09/962,197 US6938149B2 (en) | 2000-09-28 | 2001-09-26 | Renaming apparatus and processor |
DE60138445T DE60138445D1 (de) | 2000-09-28 | 2001-09-28 | Gerät und Prozessor zur Umbenennung von Registern |
EP01122676A EP1193594B1 (en) | 2000-09-28 | 2001-09-28 | Register renaming apparatus and processor |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000297242 | 2000-09-28 | ||
JP2000-297242 | 2000-09-28 | ||
JP2001101216A JP3817436B2 (ja) | 2000-09-28 | 2001-03-30 | プロセッサおよびリネーミング装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002175181A true JP2002175181A (ja) | 2002-06-21 |
JP3817436B2 JP3817436B2 (ja) | 2006-09-06 |
Family
ID=26601013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001101216A Expired - Fee Related JP3817436B2 (ja) | 2000-09-28 | 2001-03-30 | プロセッサおよびリネーミング装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6938149B2 (ja) |
EP (1) | EP1193594B1 (ja) |
JP (1) | JP3817436B2 (ja) |
KR (1) | KR20020025703A (ja) |
CN (1) | CN1149472C (ja) |
DE (1) | DE60138445D1 (ja) |
TW (1) | TWI221579B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011018120A (ja) * | 2009-07-07 | 2011-01-27 | Nec Computertechno Ltd | 情報処理装置及びベクトル型情報処理装置 |
US10824431B2 (en) | 2018-06-13 | 2020-11-03 | Fujitsu Limited | Releasing rename registers for floating-point operations |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3576148B2 (ja) * | 2002-04-19 | 2004-10-13 | 株式会社半導体理工学研究センター | 並列プロセッサ |
US7206923B2 (en) * | 2003-12-12 | 2007-04-17 | International Business Machines Corporation | Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling |
US20080215804A1 (en) * | 2006-09-25 | 2008-09-04 | Davis Gordon T | Structure for register renaming in a microprocessor |
US20080077778A1 (en) * | 2006-09-25 | 2008-03-27 | Davis Gordon T | Method and Apparatus for Register Renaming in a Microprocessor |
US8386712B2 (en) * | 2006-10-04 | 2013-02-26 | International Business Machines Corporation | Structure for supporting simultaneous storage of trace and standard cache lines |
CN100524208C (zh) * | 2006-10-26 | 2009-08-05 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
US8725989B2 (en) * | 2010-12-09 | 2014-05-13 | Intel Corporation | Performing function calls using single instruction multiple data (SIMD) registers |
US9841974B2 (en) * | 2014-04-25 | 2017-12-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Renaming with generation numbers |
US10430197B2 (en) | 2017-05-12 | 2019-10-01 | Samsung Electronics Co., Ltd. | Banking register renaming to reduce power |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781753A (en) * | 1989-02-24 | 1998-07-14 | Advanced Micro Devices, Inc. | Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions |
US5481683A (en) | 1992-10-30 | 1996-01-02 | International Business Machines Corporation | Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions |
JP3220881B2 (ja) * | 1992-12-29 | 2001-10-22 | 株式会社日立製作所 | 情報処理装置 |
GB2286265B (en) | 1994-01-26 | 1998-02-18 | Advanced Risc Mach Ltd | selectable processing registers |
JPH1011352A (ja) * | 1996-06-19 | 1998-01-16 | Hitachi Ltd | データ処理装置およびそのレジスタアドレス変換方法 |
JPH1097423A (ja) * | 1996-09-20 | 1998-04-14 | Hitachi Ltd | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ |
US6003126A (en) * | 1997-07-01 | 1999-12-14 | International Business Machines | Special instruction register including allocation field utilized for temporary designation of physical registers as general registers |
US6009509A (en) * | 1997-10-08 | 1999-12-28 | International Business Machines Corporation | Method and system for the temporary designation and utilization of a plurality of physical registers as a stack |
US5974525A (en) * | 1997-12-05 | 1999-10-26 | Intel Corporation | System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized |
JP3209205B2 (ja) * | 1998-04-28 | 2001-09-17 | 日本電気株式会社 | プロセッサにおけるレジスタ内容の継承装置 |
US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
US6230262B1 (en) | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
-
2001
- 2001-03-30 JP JP2001101216A patent/JP3817436B2/ja not_active Expired - Fee Related
- 2001-09-04 TW TW090121830A patent/TWI221579B/zh active
- 2001-09-19 KR KR1020010057935A patent/KR20020025703A/ko not_active Application Discontinuation
- 2001-09-20 CN CNB011406623A patent/CN1149472C/zh not_active Expired - Fee Related
- 2001-09-26 US US09/962,197 patent/US6938149B2/en not_active Expired - Fee Related
- 2001-09-28 EP EP01122676A patent/EP1193594B1/en not_active Expired - Lifetime
- 2001-09-28 DE DE60138445T patent/DE60138445D1/de not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011018120A (ja) * | 2009-07-07 | 2011-01-27 | Nec Computertechno Ltd | 情報処理装置及びベクトル型情報処理装置 |
US10824431B2 (en) | 2018-06-13 | 2020-11-03 | Fujitsu Limited | Releasing rename registers for floating-point operations |
Also Published As
Publication number | Publication date |
---|---|
TWI221579B (en) | 2004-10-01 |
DE60138445D1 (de) | 2009-06-04 |
CN1348132A (zh) | 2002-05-08 |
JP3817436B2 (ja) | 2006-09-06 |
EP1193594A2 (en) | 2002-04-03 |
US6938149B2 (en) | 2005-08-30 |
US20020042872A1 (en) | 2002-04-11 |
EP1193594B1 (en) | 2009-04-22 |
CN1149472C (zh) | 2004-05-12 |
EP1193594A3 (en) | 2005-10-19 |
KR20020025703A (ko) | 2002-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8255665B2 (en) | SIMD processor with register addressing, buffer stall and methods | |
JP3592230B2 (ja) | データ処理装置 | |
US9361242B2 (en) | Return stack buffer having multiple address slots per stack entry | |
US5822575A (en) | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction | |
JP3919802B2 (ja) | プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法 | |
US7487338B2 (en) | Data processor for modifying and executing operation of instruction code according to the indication of other instruction code | |
WO1995016954A1 (fr) | Circuit de traitement d'instructions dans un systeme informatique | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
EP3166015A1 (en) | Fetch ahead branch target buffer | |
EP0094535B1 (en) | Pipe-line data processing system | |
JP2002175181A (ja) | プロセッサおよびリネーミング装置 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
US20240004663A1 (en) | Processing device with vector transformation execution | |
US6092184A (en) | Parallel processing of pipelined instructions having register dependencies | |
JP7048612B2 (ja) | ベクトル生成命令 | |
JP3802038B2 (ja) | 情報処理装置 | |
US6732251B2 (en) | Register file circuitry | |
JPH0373010B2 (ja) | ||
JPS6346856B2 (ja) | ||
JP2763450B2 (ja) | パイプライン処理データ処理装置 | |
JP2825315B2 (ja) | 情報処理装置 | |
JP2001034474A (ja) | データ処理装置及びデータ処理方法 | |
JPH0667879A (ja) | パイプライン処理計算機 | |
JPH10187444A (ja) | データ処理装置及び方法 | |
JPH11272463A (ja) | 記憶装置及び情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050311 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060307 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060508 |
|
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: 20060602 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060612 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090616 Year of fee payment: 3 |
|
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: 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 |
|
LAPS | Cancellation because of no payment of annual fees |