JP3817436B2 - プロセッサおよびリネーミング装置 - Google Patents
プロセッサおよびリネーミング装置 Download PDFInfo
- Publication number
- JP3817436B2 JP3817436B2 JP2001101216A JP2001101216A JP3817436B2 JP 3817436 B2 JP3817436 B2 JP 3817436B2 JP 2001101216 A JP2001101216 A JP 2001101216A JP 2001101216 A JP2001101216 A JP 2001101216A JP 3817436 B2 JP3817436 B2 JP 3817436B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- bank
- instruction
- control register
- bank number
- 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
- 238000010586 diagram Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 13
- 238000000034 method Methods 0.000 description 9
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001360 synchronised effect 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
-
- 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)
Description
【発明の属する技術分野】
本発明は、マイクロプロセッサやディジタル処理プロセッサ(DSP:Digital Signal Processor)のような高周波動作が要求されるプロセッサと、レジスタのリネーミングを行うリネーミング装置に関し、特に、ソフトウェア・パイプライニングを行う技術に関する。
【0002】
【従来の技術】
高性能を求めるために、プロセッサの周波数を上げていくとどうしてもパイプラインステージ数が多くなり、パイプライン・バブル(パイプライン・ストール)が多くなる。バブルを埋めるためには、ソフトウェア・パイプライニングを行うことが一般的である。
【0003】
図18はあるプロセッサのパイプラインステージを示す図、図19は図18のプロセッサが実行するプログラムの一例を示す図である。
【0004】
図18のプロセッサが図19のプログラムを実行するにあたって、データのバイパスはまったくないものとし、Wステージでレジスタへの書き込みを行った後のみ、Dステージでデータの読み込みが可能になるものとする。
【0005】
1issueのインターロック機能を持つパイプライン実行が可能なプロセッサは、図19のプログラムを図20のような手順で実行する。命令1のWa(5サイクル目)でレジスタr1にデータが書き込まれ、命令2のWb(6サイクル目)でレジスタr2にデータが書き込まれる。命令3は、Dcでレジスタr1,r2を読み込むため、3サイクル分、インターロック(ストール)させられる。これがデータ依存関係によるパイプライン・バブルであり、図20では「*」で示している。図20の例では、6個のパイプライン・バブルが存在する。
【0006】
同じく、命令3のWdで書き込まれたレジスタr3を、命令4はDeで読み込む。命令5は、ただの分岐命令であり、他と依存関係がないため、すぐ次のサイクルで実行される。
【0007】
なお、図20では、簡略化のため、ループの分岐命令はペナルティなし(分岐遅延スロットなし)としており、ロードストア命令のアドレス・インクリメントも1サイクルでできるものとしている。
【0008】
図20のようなパイプライン・バブルを解決するために行われるのが、各ループのオーバーラップ実行である。図21はオーバーラップ実行の一例を示す図である。図21の例では、3ループ中でパイプライン・バブルは一つしか発生していない。図20の例だと、1ループあたり6個のパイプライン・バブルが発生していたため、バブル数を1/18に激減させることができる。
【0009】
【発明が解決しようとする課題】
命令スループットの性能を上げるには、原始的には、プログラマがソフトウェア・パイプライニングを組んで実現する。そのプログラムは例えば図22のようなものである。
【0010】
図22の例の場合、ループ1ではレジスタr1,r2,r7,a1,a2,a7を使用し、ループ2ではレジスタr3,r4,r8,a3,a4,a8を使用し、ループ3ではレジスタr5,r6,r9,a5,a6,a9を使用する。
【0011】
このように、図22の例の場合、各ループでそれぞれ異なるレジスタを使用するため、プログラムの命令数が3倍になってしまい、また、プログラマはオーバーラップしている各ループでレジスタがぶつからないように指定しなければならない。
【0012】
この煩雑さを解消するための従来の技術として、以下の二つが提案されている。一つは、out-of-order発行機能と自動レジスタ・リネーミング機能を備えたプロセッサであり、このようなプロセッサでは、図19のようなプログラムの記述のままで、図21のような理想的な動作を行う。ただし、out-of-order発行機能を実現するためのハードウェアが膨大になるという問題がある。
【0013】
二つ目は、Intel株式会社のItaniumやCydromeのコンピュータに実装されている、レジスタ・ローテーション機能である。図22の例をレジスタ・ローテーションで実現すると、図23のようになる。
【0014】
branch_regrot命令で、ループのジャンプ命令を実行するのと同時に、レジスタのローテーションを行う。ローテーションでは、3つのレジスタずつ入れ替える。この場合のプログラムは、図24のようになり、またパイプラインの動作は図25のようになる。
【0015】
1ループ目終了時のレジスタの対応関係は図26のようになる。また、2ループ目終了時のレジスタの対応関係は図27のようになる。
【0016】
従来の自動リネーミング機能は、ハードウェアが複雑になるという問題がある。また、従来のレジスタ・ローテーション機能は、柔軟性が低く、単純なローテーション以外には適用できないという問題がある。
【0017】
本発明は、このような点に鑑みてなされたものであり、その目的は、ハードウェアを複雑にすることなく、柔軟性に富んだレジスタ・リネーム機能を実現可能なプロセッサを提供することにある。
【0018】
また、本発明の他の目的は、簡易な回路構成でレジスタ・リネーム機能を実現可能なリネーミング装置を提供することにある。
【0019】
【課題を解決するための手段】
本発明の一態様によれば、レジスタのリネーミング機能を持ち、ソフトウェア・パイプライニングを行うプロセッサにおいて、物理レジスタ番号と論理レジスタ番号との対応関係を示す制御レジスタと、発行された命令列の中に、前記制御レジスタへの値の設定を指示する命令が含まれている場合に、前記命令の内容に応じて前記制御レジスタへの値の設定を行う制御レジスタ設定手段と、を備え、前記制御レジスタは、第1、第2および第3のレジスタ部を有し、前記制御レジスタ設定手段は、前記第1のレジスタ部の内容に基づいて物理レジスタ番号と論理レジスタ番号との対応づけを行い、その結果を前記第2のレジスタ部に書き込み、その後、前記第2のレジスタ部の内容を前記第1および第3のレジスタ部に書き込むことを特徴とするプロセッサが提供される。
【0020】
本発明では、制御レジスタに設定する値に応じて、物理レジスタ番号と論理レジスタ番号との対応関係を任意に設定変更できるようにしたため、ハードウェアの構成を複雑にすることなく、柔軟性のあるレジスタ・リネーム機能を実現できる。
【0021】
また、複数のレジスタからなるバンクを単位として物理レジスタ番号と論理レジスタ番号との対応づけを行えば、簡易かつ迅速にレジスタ・リネームを行えるようになる。
【0022】
さらに、制御レジスタに第1〜第3のレジスタ部を設け、各レジスタ部を利用してレジスタ・リネームを行えば、よりいっそう高速にレジスタ・リネームを行えるようになる。
【0023】
また、本発明は、複数の物理レジスタまたは論理レジスタを単位とする複数のバンクのそれぞれごとに、物理レジスタ番号と論理レジスタ番号との対応関係を格納する制御レジスタと、
発行された命令の中に、前記バンクを単位とした物理レジスタ番号と論理レジスタ番号との対応づけを変更する対応づけ変更命令が含まれている場合に、該命令で指示されたバンクに対応する前記制御レジスタの内容をリセットするリセット手段と、
前記対応づけ変更命令で指示される、対応づけの変更を行うバンクの種類に関する情報と対応づけの変更量に関する情報とに基づいて、リセットされた前記制御レジスタに新たな値を設定する制御レジスタ設定手段と、を備える。
【0024】
【発明の実施の形態】
以下、本発明に係るプロセッサについて、図面を参照しながら具体的に説明する。
【0025】
(第1の実施形態)
図1は本発明に係るプロセッサの一実施形態の概略構成を示すブロック図である。図1のプロセッサは、命令列を記憶する命令メモリ1と、命令メモリ1からの命令をフェッチするフェッチ・ユニット2と、フェッチした命令をデコードするデコード・ユニット3と、後述するリネーム命令を実行するリネーム制御ユニット(RCU:Rename Control Unit)4と、リネーム制御レジスタ(RCR:Rename Control Register)5と、物理アドレスと論理アドレスとの対応関係を記憶するレジスタファイル6と、デコードした命令を実行する演算処理ユニット(ALUs)7とを備えている。
【0026】
本実施形態は、256本のレジスタを16本ずつ組みにした複数のバンドル(バンク)に区分けし、バンクを単位として物理レジスタ番号と論理レジスタ番号との対応づけを行う点に特徴がある。
【0027】
このような対応づけを行うために、リネーム制御レジスタ5が利用される。リネーム制御レジスタ5は、ソース・レジスタ(ソースRCR、第1のレジスタ部)、デスティネーション・レジスタ(デスティネーションRCR、第2のレジスタ部)、およびエフェクティブ・レジスタ(エフェクティブRCR、第3のレジスタ部)の3種類で構成される。
【0028】
本実施形態のプロセッサは、図2に示すように、5段階に分けてパイプライン処理を行う。また、このプロセッサは、命令セットとして、図3(a)に示す演算命令と、図3(b)に示すロード/ストア命令と、図3(c)に示す条件分岐命令とを有し、この他に、図3(d)に示すレジスタ・リネーム命令を有する点に特徴がある。
【0029】
レジスタ・リネーム命令は、リネーム制御レジスタ5をセットするための専用の命令であり、(1)〜(4)までの4つの命令からなる。(1)のSTORE_RENは、汎用レジスタsrc1の内容をデスティネーションRCRにセットする命令である。(2)のLOAD_RENは、デスティネーションRCRの内容を汎用レジスタsrc1にセットする命令である。(3)のROTATEは、後述するように、ソースRCRのfromビット目からtoビット目まで、bit数分だけ左にローテートする命令である。(4)のRENAMEは、デスティネーションRCRの内容をエフェクティブRCRとソースRCRにコピーする命令である。
【0030】
図1のリネーム制御ユニット4は、図3(d)に示すレジスタ・リネーム命令が発行されると、リネーム制御レジスタ5の設定を行う。図4はRENAME命令実行時のリネーム制御ユニット4の処理動作を示すフローチャートである。まず、リネーム制御ユニット4は、ソースRCRの内容をデスティネーションRCRに書き込む(ステップS1)。
【0031】
次に、ROTATE命令に基づいて、ソースRCRの更新を行う(ステップS2)。次に、ソースRCRの更新結果をデスティネーションRCRに書き込む(ステップS3)。
【0032】
次に、デスティネーションRCRの内容を、ソースRCRとエフェクティブRCRに書き込む(ステップS4)。次に、エフェクティブRCRの内容に基づいてレジスタファイル6に物理レジスタ番号と論理レジスタ番号との対応関係を書き込む(ステップS5)。
【0033】
このように、ステップS5では、エフェクティブRCRを参照することにより、論理レジスタ番号と物理レジスタ番号との対応関係を検出する。したがって、エフェクティブRCRが参照されている間に、ソースRCRとデスティネーションRCRは、他の作業、例えば次のリネーム処理を行うための作業等に利用可能である。
【0034】
図5はRENAME命令の実行手順を説明する図であり、リネーム制御レジスタ5が持つ16個のバンドルそれぞれについて、バンドルごとに、論理レジスタ番号のフィールド(管理領域)を物理アドレス番号に対応づける例を示している。具体的には、バンドル0に属する16個の論理レジスタ番号E0〜EFを物理レジスタ番号00〜0Fに対応づけ、バンドル1に属する16個の論理レジスタ番号F0〜FFを物理レジスタ番号10〜1Fに対応づけ、以下順繰りに対応づけを行い、バンドルfに属する16個の論理レジスタ番号D0〜DFを物理レジスタ番号F0〜FFに対応づける例を示している。
【0035】
レジスタファイル6は、16×16=256ビットの容量をもち、リネーム制御レジスタ5の16個分のバンドルそれぞれの物理レジスタ番号と論理レジスタ番号との対応関係を記憶する。
【0036】
図6はROTATE命令の動作例を示す図であり、4番目のバンドルからc番目のバンドルまで、2バンドルずつ左にローテートする例を示している。
【0037】
また、図7(a)はすべてのバンドルを1バンドルずつ左にローテートする例を示し、図7(b)はすべてのバンドルを2バンドルずつ左にローテートする例を示している。
【0038】
また、図8(a)はすべてのバンドルを4バンドルずつ左にローテートする例を示し、図8(b)はすべてのバンドルを8バンドルずつ左にローテートする例を示している。
【0039】
また、図9(a)は上位側8バンドルを1バンドルずつ左にローテートする例を示し、図9(b)は上位側8バンドルを2バンドルずつ左にローテートする例を示している。
【0040】
また、図10(a)は上位側8バンドルを4バンドルずつ左にローテートする例を示し、図10(b)は8バンドル目からbバンドル目までを1バンドルずつ左にローテートする例を示している。
【0041】
また、図11(a)は8バンドル目からbバンドル目までを1バンドルずつ左にローテートする例を示し、図11(b)はaバンドル目からbバンドル目までを1バンドルずつ左にローテートする例を示している。
【0042】
このように、本実施形態では、物理レジスタ番号と論理レジスタ番号との対応関係を指定するための専用の命令であるレジスタ・リネーム命令により、制御レジスタ内の任意のバンドルについて、バンドルごとに物理レジスタ番号と論理レジスタ番号との対応関係を指定できるようにしたため、命令の数を増やすことなく、パイプライン・バブルの発生を抑制できる。
【0043】
また、レジスタ・リネーム命令の具体的内容はプログラマが任意に指定できるため、必要に応じてリネーム処理を行うことができ、柔軟性のあるレジスタリネーム処理が可能になる。
【0044】
さらに、本実施形態では、制御レジスタとして、ソースRCR、デスティネーションRCRおよびエフェクティブRCRを設け、ローテートした結果をソースRCRとエフェクティブRCRの双方に書き込むため、エフェクティブRCRの内容を参照して物理レジスタ番号と論理レジスタ番号との対応づけを行い、その間にソースRCRやデスティネーションRCRを他の作業、例えば次のローテート処理に利用することができる。したがって、処理効率が向上する。
【0045】
上述した実施形態では、リネーム制御レジスタ5内に論理レジスタの各バンドルに対応したフィールドを持つ例を説明したが、その逆に、リネーム制御レジスタ5内に物理レジスタの各バンドルに対応したフィールドを持っておき、リネーム制御ユニット4が論理レジスタのバンドル番号をセットしてもよい。
【0046】
(第2の実施形態)
図12は、上述したレジスタ・リネーム命令にて、From=2、To=a、Shift=3を指定した場合のローテーション動作を示しており、図12(a)はバンドルの初期値を示している。図12(a)のようなバンドルに対してローテーションを行うと、バンドル番号が「2」から「a」までのバンドルの内容が「3」バンドルずつ左にシフトし、シフトではみ出た分がローテーション対象のバンドルの右側から埋められるように動作する。その結果、図12(b)のようになる。この状態からさらに同様のローテーションを行うと図12(c)のようになり、この状態からさらに同様のローテーションを行うと図12(a)に戻る。
【0047】
例えば、論理番号3c(3はバンドル番号、cはレジスタ番号)のレジスタにアクセスするプログラムでは、実際にアクセスされる物理アドレスは、図13のように変化し、プログラムでは同一の論理アドレスを指定しても、実際には異なる物理アドレスを使用することになり、ソフトウェア・パイプライニングが行われる。
【0048】
上述したレジスタ・リネーム命令は、ローテンションさせるバンドルの種類および範囲を任意に指定できるため、レジスタ・リネーム処理をハードウェアで構成する場合には、ローテーションにより移動先となる可能性のあるすべてのバンドルに対してデータを受け渡すパスを設ける必要がある。
【0049】
例えば、図14はバンドル数が「8」の場合のデータパスの例を示している。このように、データパスはバンドル間をまたがる配線になる。これらの配線はマルチプレクサに接続されて、最終的にマルチプレクサによって必要なバンドルのデータが選択されてバンドルが更新される。
【0050】
図14のようにバンドル間をまたがる配線を設けると、配線面積が増大し、配線長の増加に伴って速度が低下するなどの問題が起こるおそれがある。特に、バンドル数が増加する場合、配線面積はバンドル数の2乗に比例するため、ますます重大な問題になる。
【0051】
そこで、以下に説明する第2の実施形態は、上述したレジスタ・リネーム命令によるレジスタ番号のローテーションを、簡易な構成のハードウェアにより実現することを特徴とする。
【0052】
図15は本発明に係るリネーミング装置の一実施形態のブロック図である。図15のリネーミング装置は各バンドルごとに設けられ、例えば16個のバンドルが存在する場合には、図15のリネーミング装置も16個設けられる。これらリネーミング装置は、例えばプロセッサに内蔵される。
【0053】
図15のリネーミング装置は、予め指定された元のバンドル番号がレジスタ・リネーム命令で指示された下限バンドル番号および上限バンドル番号の間に含まれるか否かを判定する第1判定部(第1判定手段)11と、第1判定部11の判定結果に基づいて、バンドルのローテーション量を設定する第1選択部(第1選択手段)12と、元のバンドル番号に対応する新たなバンドル番号を演算する第1バンドル番号演算部(第1バンドル番号演算手段)13と、演算された新たなバンドル番号がレジスタ・リネーム命令で指示された下限バンドル番号のバンドル番号よりも若い番号であるか否かを判定する第2判定部(第2判定手段)14と、第2判定部14の判定結果に基づいてバンドル番号の補正値を選択する第2選択部(第2選択手段)15と、第2選択部15の選択制御を行うアンド回路16と、バンドル番号演算部で演算されたバンドル番号と第2選択部(第2選択手段)15で選択された補正値とを加算して最終的なバンドル番号を演算する第2バンドル番号演算部(第2バンドル番号演算手段)17と、第1バンドル番号演算部13で演算されたバンドル番号と制御レジスタ18に格納されたバンドル番号とのいずれか一方を選択する第3選択部(第3選択手段)19と、制御レジスタ18に格納するための最終的なバンドル番号を選択する第4選択部(リセット手段)20とを備えている。
【0054】
第1選択部12は、元のバンドル番号がレジスタ・リネーム命令の下限バンドル番号と上限バンドル番号との間にあれば、レジスタ・リネーム命令のローテーション量を選択して出力し、入力されたバンドル番号がレジスタ・リネーム命令の下限バンドル番号と上限バンドル番号との間になければ、ゼロを出力する。
【0055】
第1バンドル番号演算部13は、制御レジスタ18に格納されたバンドル番号から第1選択部12での選択結果を引く演算を行う。
【0056】
アンド回路16は、入力されたバンドル番号が下限バンドル番号と上限バンドル番号との間で、かつ第1バンドル番号演算部13で演算されたバンドル番号がレジスタ・リネーム命令の下限バンドル番号よりも小さいときに「1」を出力し、それ以外のときは「0」を出力する。
【0057】
第2選択部15は、アンド回路16の出力が「0」であれば「0」を出力し、アンド回路16の出力が「1」であれば、レジスタ・リネーム命令の上限バンドル番号から下限バンドル番号を引いた値に「1」を加えた値(To−From+1)を出力する。
【0058】
第3選択部19は、レジスタ・リネーム命令の実行時に第2バンドル番号演算部17で演算されたバンドル番号を選択し、それ以外の命令を実行するときは制御レジスタ18に格納されているバンドル番号を選択する。
【0059】
第4選択部20は、レジスタ・リネーム命令が発行されたときに、一時的に制御レジスタ18を初期化し、それ以外のときは第3選択部19で選択されたバンドル番号をそのまま選択する。初期化する際は、入力されたバンドル番号をそのまま制御レジスタ18に格納する。
【0060】
ここで、制御レジスタ18がリセット手段に対応し、第2バンドル番号演算部17および第3選択部19が制御レジスタ設定手段に対応する。
【0061】
以下、レジスタ・リネーム命令の一例として、図16に示すように、下限バンドル番号Fromが3、上限バンドル番号Toがb、ローテーション量Shiftが3の場合を例にとって、図15のリネーミング装置の処理動作を説明する。図16の制御レジスタには、物理アドレスのバンドル番号が格納されている。
【0062】
図15のリネーミング装置は、(1)ローテーション情報セット時、(2)ローテーション命令非実行時、(3)ローテーション命令実行時で、指定されたバンドル番号が下限バンドル番号と上限バンドル番号との間にある場合、および(4)ローテーション命令実行時で、指定されたバンドル番号が下限バンドル番号と上限バンドル番号との間にない場合の4通りの処理動作を行う。
【0063】
まず、ローテーション情報セット時の処理動作を説明する。ローテーション命令が発行されると、ローテーション動作を行う前に、第4選択部20は制御レジスタ18の内容を初期化する。具体的には、ローテーションを行う範囲内のバンドルについては論理レジスタ番号と物理レジスタ番号とを一致させ、それ以外の範囲内のバンドルについては制御レジスタ18の値を変更しないようにする。この結果、図16(b)のように、論理アドレスのバンドル番号と物理アドレスのバンドル番号は一致する。
【0064】
次に、ローテーション命令非実行時の処理動作を説明する。この場合、第3選択部19は制御レジスタ18に格納されたバンドル番号を選択するため、制御レジスタ18のデータは変化しない。
【0065】
次に、ローテンション命令実行時で、元のバンドル番号が下限バンドル番号と上限バンドル番号との間に存在しない場合(図16のバンドル番号0〜2とc〜f)の処理動作を説明する。この場合、第1選択部12は「0」を出力し、第1バンドル番号演算部13は制御レジスタ18に格納されているバンドル番号をそのまま出力する。また、第1判定部11の出力は「0」であるため、アンド回路16の出力はゼロになり、第4選択部20は「0」を出力する。
【0066】
次に、ローテンション命令実行時で、元のバンドル番号が下限バンドル番号と上限バンドル番号との間に存在する場合の処理動作を説明する。この場合、第1判定部11は「1」を出力し、第1選択部12は「3」を出力し、第1バンドル番号演算部13は制御レジスタ18に格納されたバンドル番号から「3」を引いた値を出力する。これにより、第1バンドル番号演算部13の出力は、図16(c)のようになる。
【0067】
第2判定部14は、第1バンドル番号演算部13で演算されたバンドル番号が「0」、「1」、「2」のいずれかであれば「0」を出力し、それ以外のときは「1」を出力する。
【0068】
第2判定部14から「0」が出力されると、第2選択部15は上限バンドル番号「b」から下限バンドル番号「3」を引いた値に「1」を加えた値(11-3+1=9)を出力する。第2判定部14から「1」が出力されると、第2選択部15は「0」を出力する。
【0069】
第2バンドル番号演算部17は、第1バンドル番号演算部13で演算されたバンドル番号が「0」、「1」、「2」のときは、これらの値に「9」を加えた値「9」、「a」、「b」をそれぞれ出力する。また、第1バンドル番号演算部13で演算されたバンドル番号が「3」〜「8」のときはそのまま出力する。これにより、制御レジスタ18の内容は図16(d)のようになる。
【0070】
このように、本実施形態では、レジスタ・リネーム命令を実行するとき、ローテーションする範囲内のバンドルを初期化した後、レジスタ・リネーム命令のローテーション量、下限バンドル番号、および上限バンドル番号に基づいて、ハードウェアによりバンドルのローテーションを行うため、バンドル間でデータのやり取りを行わなくても新たなバンドル番号を設定できる。したがって、バンドル間をまたがる配線が不要となり、配線量を削減できるとともに、高速処理が可能になる。
【0071】
図15のリネーミング装置をプロセッサの内部に組み込む場合、リネーミング装置をパイプラインの動きに合わせて動作させるのが望ましい。図17はプロセッサをパイプライン動作させる場合のリネーミング装置の動作状態を示すブロック図である。この例は、4サイクルかけてバンドルの内容をローテーションするものである。
【0072】
図17のリネーミング装置は、パイプラインの各ステージに同期させるためのレジスタファイル21を有する点を除けば、図15の装置と同様に構成されており、図15と同様に回路構成を簡素化でき、かつ高速動作が可能になる。
【0073】
このように、図17のリネーミング装置は、装置内部に設けられるレジスタファイル21でシステムクロックに同期させるため、ゲート段数が多くてもタイミングが保障され、動作が安定化し、高速クロックにも容易に対応できる。
【0074】
【発明の効果】
以上詳細に説明したように、本発明によれば、物理レジスタ番号と論理レジスタ番号との対応関係を示す制御レジスタを設け、プログラマが指定した命令により制御レジスタに値を任意に設定できるようにしたため、ハードウェアの構成を複雑にすることなく、パイプライン・バブルの発生を抑えることができる。特に、従来のout-of-order発行機能を有するスーパースカラプロセッサなどよりも、ハードウェアの構成を大幅に簡略化できる。
【0075】
また、プログラマが物理レジスタ番号と論理レジスタ番号との対応関係を任意に設定変更できるため、従来のレジスタ・ローテーション機能を持つプロセッサよりも柔軟性のあるレジスタ・ローテーションが実現できる。
【0076】
さらに、本発明によれば、対応づけ変更命令が発行されると、いったん制御レジスタの内容をリセットした後、対応づけ変更命令で指示される内容にしたがって制御レジスタに新たな値を設定するようにしたため、各バンド間でデータのやり取りをしなくても対応づけの変更を行うことができ、ハードウェアで実現したときの回路構成を大幅に簡素化できる。したがって、配線量を削減できるとともに、各配線を短くできるため、プロセッサのパイプライン動作に合わせて動作させることができるとともに、高速クロックへの対応が容易になる。
【図面の簡単な説明】
【図1】本発明に係るプロセッサの概略構成を示すブロック図。
【図2】5段階に分けてパイプライン処理を行う例を示す図。
【図3】命令セットの一例を示す図。
【図4】 RENAME命令実行時のリネーム制御ユニット4の処理動作を示すフローチャート。
【図5】 RENAME命令の実行手順を説明する図。
【図6】 ROTATE命令の動作例を示す図。
【図7】 ROTATE命令の動作例を示す図。
【図8】 ROTATE命令の動作例を示す図。
【図9】 ROTATE命令の動作例を示す図。
【図10】 ROTATE命令の動作例を示す図。
【図11】 ROTATE命令の動作例を示す図。
【図12】レジスタ・リネーム命令にて、From=2、To=a、Shift=3を指定した場合のローテーション動作を示す図。
【図13】実際にアクセスされる物理アドレスを示す図。
【図14】バンドル数が「8」の場合のデータパスの例を示す図。
【図15】本発明に係るリネーミング装置の一実施形態のブロック図。
【図16】制御レジスタの値を示す図。
【図17】プロセッサをパイプライン動作させる場合のリネーミング装置の動作状態を示すブロック図。
【図18】あるプロセッサのパイプラインステージを示す図。
【図19】図18のプロセッサが実行するプログラムの一例を示す図。
【図20】図19のパイプライン動作を示す図。
【図21】オーバーラップ実行の一例を示す図。
【図22】ソフトウェア・パイプライニングを行うプログラムの一例を示す図。
【図23】レジスタ・ローテーションの一例を示す図。
【図24】図23に対応するプログラムを示す図。
【図25】図24のパイプライン動作を示す図。
【図26】1ループ目終了時のレジスタの対応関係を示す図。
【図27】2ループ目終了時のレジスタの対応関係を示す図。
【符号の説明】
1 命令メモリ
2 フェッチ・ユニット
3 デコード・ユニット
4 リネーム制御ユニット
5 リネーム制御レジスタ
6 レジスタファイル
7 演算処理ユニット
11 第1判定部
12 第1選択部
13 第1バンドル番号演算部
14 第2判定部
15 第2選択部
16 アンド回路
17 第2バンドル番号演算部
18 制御レジスタ
19 第3選択部
20 第4選択部
21 レジスタファイル
Claims (10)
- レジスタのリネーミング機能を持ち、ソフトウェア・パイプライニングを行うプロセッサにおいて、物理レジスタ番号と論理レジスタ番号との対応関係を示す制御レジスタと、発行された命令列の中に、前記制御レジスタへの値の設定を指示する命令が含まれている場合に、前記命令の内容に応じて前記制御レジスタへの値の設定を行う制御レジスタ設定手段と、を備え、
前記制御レジスタは、第1、第2および第3のレジスタ部を有し、前記制御レジスタ設定手段は、前記第1のレジスタ部の内容に基づいて物理レジスタ番号と論理レジスタ番号との対応づけを行い、その結果を前記第2のレジスタ部に書き込み、その後、前記第2のレジスタ部の内容を前記第1および第3のレジスタ部に書き込むことを特徴とするプロセッサ。 - 前記制御レジスタへの値の設定を指示する命令は、前記第1のレジスタ部の内容に基づいて物理レジスタ番号と論理レジスタ番号との対応づけを行い、その結果を前記第2のレジスタ部に書き込む命令と、前記第2のレジスタ部の内容を前記第1および第3のレジスタ部に書き込む命令と、を含むことを特徴とする請求項1に記載のプロセッサ。
- 前記制御レジスタは、複数の論理レジスタを単位とするバンクのそれぞれに対応した管理領域を有し、各管理領域に物理レジスタのバンク番号を対応づけることを特徴とする請求項1または2に記載のプロセッサ。
- 前記制御レジスタは、複数の物理レジスタを単位とするバンクのそれぞれに対応した管理領域を有し、各管理領域に論理レジスタのバンク番号を対応づけることを特徴とする請求項1〜3のいずれかに記載のプロセッサ。
- 複数の物理レジスタまたは論理レジスタを単位とする複数のバンクのそれぞれごとに、物理レジスタ番号と論理レジスタ番号との対応関係を格納する制御レジスタと、発行された命令の中に、前記バンクを単位とした物理レジスタ番号と論理レジスタ番号との対応づけを変更する対応づけ変更命令が含まれている場合に、該命令で指示されたバンクに対応する前記制御レジスタの内容をリセットするリセット手段と、前記対応づけ変更命令で指示される、対応づけの変更を行うバンクの種類に関する情報と対応づけの変更量に関する情報とに基づいて、リセットされた前記制御レジスタに新たな値を設定する制御レジスタ設定手段と、を備えることを特徴とするリネーミング装置。
- 前記対応づけ変更命令は、対応付けの変更量を示す前記バンクのローテーション量と、ローテーションを行う下限バンクおよび上限バンクとを指示することを特徴とする請求項5に記載のリネーミング装置。
- 予め指定された元のバンク番号が前記対応づけ変更命令で指示された下限バンクおよび上限バンクの間に含まれるか否かを判定する第1判定手段と、第1判定手段の判定結果に基づいて、バンクのローテーション量を設定する第1選択手段と、前記元のバンク番号に対応する新たなバンク番号を演算する第1バンク番号演算手段と、演算された前記新たなバンク番号が、前記対応づけ変更命令で指示された下限バンクのバンク番号よりも若い番号であるか否かを判定する第2判定手段と、前記第2判定手段の判定結果に基づいて、バンク番号の補正値を選択する第2選択手段と、前記バンク番号演算手段で演算されたバンク番号と前記第2選択手段で選択された補正値とを加算して最終的なバンク番号を演算する第2バンク番号演算手段と、前記第1バンク番号演算手段で演算されたバンク番号と前記制御レジスタに格納されたバンク番号とのいずれか一方を選択する第3選択手段と、を備え、前記リセット手段は、前記対応づけ変更命令が発行されると、バンク番号のローテーションを行う前に、前記元のバンク番号に基づいて前記制御レジスタの内容を初期化し、それ以外のときは前記第3選択手段で選択されたバンク番号を前記制御レジスタに格納することを特徴とする請求項6に記載のリネーミング装置。
- 前記第1選択手段は、前記元のバンク番号が前記対応づけ変更命令で指示された下限バンクおよび上限バンクの間に含まれると判定されたときに、前記対応づけ変更命令で指示されたローテーション量を出力し、それ以外のときはゼロを出力し、前記第2選択手段は、前記第1判定手段により下限バンクおよび上限バンクの間に含まれると判定され、かつ前記第2判定手段により下限バンクのバンク番号よりも若い番号であると判定されたときに、前記対応づけ変更命令で指示された下限バンク番号と上限バンク番号とに基づいて補正値を選択し、前記第3選択手段は、前記対応づけ変更命令が発行された後、前記バンク番号格納手段に新たなバンク番号を格納するまでは前記第2バンク番号演算手段で演算されたバンク番号を選択し、それ以外は前記制御レジスタに格納されているバンク番号を選択することを特徴とする請求項7に記載のリネーミング装置。
- 前記制御レジスタには、バンクを単位として物理レジスタ番号が格納されることを特徴とする請求項5〜8のいずれかに記載のリネーミング装置。
- レジスタのリネーミング機能を持ち、ソフトウェア・パイプライニングを行うプロセッサにおいて、請求項5〜9のいずれかに記載のリネーミング装置を各バンクごとに設けたことを特徴とするプロセッサ。
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 |
EP01122676A EP1193594B1 (en) | 2000-09-28 | 2001-09-28 | Register renaming apparatus and processor |
DE60138445T DE60138445D1 (de) | 2000-09-28 | 2001-09-28 | Gerät und Prozessor zur Umbenennung von Registern |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000-297242 | 2000-09-28 | ||
JP2000297242 | 2000-09-28 | ||
JP2001101216A JP3817436B2 (ja) | 2000-09-28 | 2001-03-30 | プロセッサおよびリネーミング装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002175181A JP2002175181A (ja) | 2002-06-21 |
JP3817436B2 true 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) |
Families Citing this family (11)
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 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
JP4830164B2 (ja) * | 2009-07-07 | 2011-12-07 | エヌイーシーコンピュータテクノ株式会社 | 情報処理装置及びベクトル型情報処理装置 |
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 |
JP7043985B2 (ja) | 2018-06-13 | 2022-03-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
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 DE DE60138445T patent/DE60138445D1/de not_active Expired - Fee Related
- 2001-09-28 EP EP01122676A patent/EP1193594B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1348132A (zh) | 2002-05-08 |
JP2002175181A (ja) | 2002-06-21 |
CN1149472C (zh) | 2004-05-12 |
TWI221579B (en) | 2004-10-01 |
EP1193594B1 (en) | 2009-04-22 |
KR20020025703A (ko) | 2002-04-04 |
DE60138445D1 (de) | 2009-06-04 |
US20020042872A1 (en) | 2002-04-11 |
EP1193594A2 (en) | 2002-04-03 |
EP1193594A3 (en) | 2005-10-19 |
US6938149B2 (en) | 2005-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7694109B2 (en) | Data processing apparatus of high speed process using memory of low speed and low power consumption | |
JP3592230B2 (ja) | データ処理装置 | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
JP3817436B2 (ja) | プロセッサおよびリネーミング装置 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
EP0094535B1 (en) | Pipe-line data processing system | |
JP2006517322A (ja) | パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
JP7048612B2 (ja) | ベクトル生成命令 | |
JP3802038B2 (ja) | 情報処理装置 | |
US11768685B2 (en) | Processing device with vector transformation execution | |
JP2748957B2 (ja) | データ処理装置 | |
US6732251B2 (en) | Register file circuitry | |
JP3490005B2 (ja) | 命令制御装置及びその方法 | |
US5812845A (en) | Method for generating an object code for a pipeline computer process to reduce swapping instruction set | |
JPH03204030A (ja) | コンピュータ用プロセツサ | |
JPS60178580A (ja) | 命令制御方式 | |
JPS6346856B2 (ja) | ||
JPH0218732B2 (ja) | ||
WO2001082059A2 (en) | Method and apparatus to improve context switch times in a computing system | |
JP2005134987A (ja) | パイプライン演算処理装置 | |
JPH0520064A (ja) | パイプライン制御方式 | |
JP2004302655A (ja) | パイプライン演算処理装置 | |
JP2002351656A (ja) | マイクロプロセッサ | |
JPH04168526A (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 |