JP5229321B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP5229321B2
JP5229321B2 JP2010523656A JP2010523656A JP5229321B2 JP 5229321 B2 JP5229321 B2 JP 5229321B2 JP 2010523656 A JP2010523656 A JP 2010523656A JP 2010523656 A JP2010523656 A JP 2010523656A JP 5229321 B2 JP5229321 B2 JP 5229321B2
Authority
JP
Japan
Prior art keywords
register
window
local
group
register group
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.)
Active
Application number
JP2010523656A
Other languages
English (en)
Other versions
JPWO2010016097A1 (ja
Inventor
祥照 大貫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2010016097A1 publication Critical patent/JPWO2010016097A1/ja
Application granted granted Critical
Publication of JP5229321B2 publication Critical patent/JP5229321B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports

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)

Description

本発明は、レジスタウィンドウ方式のレジスタファイルを備える演算処理装置に関わる。本発明は、レジスタファイルから高速読み出しのための一時記憶要素を用いずに、レジスタからの高速読み出しを実現する演算処理装置、およびその方法を含む。
RISC(Reduced Instruction Set Computer)アーキテクチャのプロセッサ(以下、RISCプロセッサと呼ぶ)は、レジスタ−レジスタ演算を中心としており、メモリアクセスを減少することにより処理の高速化を図っている。これをロード−ストア・アーキテクチャと称する。RISCプロセッサは、上記レジスタ−レジスタ演算の効率化のために大容量のレジスタファイルを備えている。このレジスタファイルとして、サブルーチン呼び出し時の引数の引き渡し(引数の退避/復帰)のオーバーヘッドを削減するように構成されたレジスタウィンドウ方式のレジスタファイルが知られている。
図1は、レジスタウィンドウ方式のレジスタファイルの構成を示す図である。
図1に示すレジスタファイル1000は、1本のレジスタウィンドウW globalと、8本のレジスタウィンドウW0〜W7を有し、これらのうち、レジスタウィンドウW0〜W7は論理的にリング状に連結されている。各レジスタウィンドウWk(k=0〜7)はそれぞれ、、Wk out、Wk in、およびWk localの3種類のセグメントを備えている。これら3種類のセグメントは、いずれも、8個のレジスタから構成されている。Wk localは各レジスタウィンドウ固有の8個のローカルレジスタを備えている。Wk inは8個のinレジスタ(インレジスタ)を備え、Wk outは8個のoutレジスタ(アウトレジスタ)を備えている。また、W globalは、全てのサブルーチンで共用される8個のグローバルレジスタを備えている。
Wk outはルーチンが呼び出すサブルーチンに引数を渡すために、Wk inはルーチン
を呼び出した親ルーチンから引数を受け取るために使用される。レジスタファイル1000ではWk inとWk+1 out、およびWk outとWk-1 inがオーバーラップするように構成されているため、サブルーチンコール時において、引数の引き渡しとそのために使用するレジスタの確保を高速化できる。Wk localは、各サブルーチン、つまり親ルーチンから呼び出された子ルーチンが作業用のレジスタセットとして使用する。
各サブルーチンは、実行時において、8本のレジスタウィンドウW0〜W7のいずれか一つを使用する。ここで、実行中のサブルーチンが使用するレジスタウィンドウWk(カレントウィンドウと呼ばれる)は、サブルーチンコールが発生するたびに右回り(“SAVE”で示された破線の矢印の方向)に前記セグメント2個分回転し、サブルーチンの復帰時に左回り(“RESTORE”で示された破線の矢印の方向)に前記セグメント2個分回転するようになっている。
レジスタファイル1000においては、各レジスタウィンドウWkは、それぞれに割り当てられたレジスタウィンドウ番号(以下、ウィンドウ番号と呼ぶ)によって管理されている。レジスタウィンドウWkにはウィンドウ番号kが割り当てられる。実行中のサブルーチンが使用しているレジスタウィンドウWkのウィンドウ番号kはCWP(Current Window Pointer)に保持される。CWPの値は、SAVE命令の実行もしくはトラップ(trap)発生によってインクリメントされ、RESTORE命令の実行もしくはRETT命令によるトラップからの復帰によってデクリメントされる。図1ではCWPの値は“0”となっており、CWPはレジスタウィンドウW0を指定している。このように、CWPの値を増減させて、カレントウィンドウの切り替えを行う命令を、本明細書では、“ウィンドウ切り替え命令”と呼ぶことにする。
図1に示すレジスタファイル1000は、1本のウィンドウW globalを有する。W globalは全てのルーチンで共用されるデータを格納するレジスタセットである。
各レジスタウィンドウWkは24個(=8×3)のレジスタを備えており、レジスタウィンドウW globalは8個のレジスタを備えている。これらのレジスタのうち、Wk inとWk outのレジスタが64個(=8×8)オーバーラップしているので、レジスタファイル1000が備えるレジスタの総数は、136個(=24×8+8−64)である。プロセッサの演算器がサブルーチンを実行するためには、レジスタファイル1000のそれら全てのレジスタにデータを読み書きできる必要がある。
この場合、このような大きなレジスタファイル1000からデータを読み出す回路の規模と速度が問題となる。この問題を解消するため、図2に示すような構成の演算処理装置が考案されている。
図2に示す演算処理装置2000は、マスタレジスタファイル2001(以後、MRFと記載)ワーキングレジスタファイル2002(以後、WRFと記載)および演算部2003、制御部2004を有する。
一般に、レジスタウィンドウ方式のレジスタファイルは、レジスタウィンドウ数が増えると、具備するレジスタの数が多くなり、演算器にオペランドを高速に供給することが困難となる。そのため、すべてのウィンドウを保持するレジスタファイルであるMRF2001に加えて、ポインタCWPで示されるMRF2001中の1つのウィンドウのコピーを保持するMRF2001のサブセットとしてWRF2002を保持し、このWRF2002よりデータの読み出しを行う。WRF2002はポインタで示されるウィンドウのコピーのみを保持する。WRF2002はMRF2001に比べて小さいので、制御部2004から読み出しのアドレスであるREAD_ADDRESSが供給されて読み出しを行う場合、データ読み出しを高速化できる。
演算部2003には、MRF2001へのリネームレジスタROB2005を備え、演算結果のリネーミングを行う。更にコミット時にROB2005からMRF2001、WRF2002へと演算結果の書き戻しが行われる。
以上のように、図2に示すような構成の演算処理装置が考案されているが、このような構成の場合、MRF中の1つのウィンドウのコピーを保持するMRFのサブセットを設ける点でハードウェアコストがかかる。更に、MRFとWRF間の転送を行うことで電力を消費する。
また、アウトオブオーダ(out-of-order)実行機能を備えたプロセッサの場合には、命令の実行順序はプログラムの順序とは限らず、処理可能な命令から実行していく。よってレジスタウィンドウ切り替え命令を追い越して命令の実行順序入れ替えを実現することも求められる。
特開平5−282147号公報「レジスタファイル」
そこで、本発明の課題は、レジスタウィンドウ方式を採用する演算処理装置において、レジスタ読出しに関連するハードウェアコストを低減すること、ワークバッファやバッファ間の転送にかかる消費電力をなくすことにある。また、アウトオブオーダ実行機能を備えた演算処理装置の場合には、レジスタウィンドウ切り替え命令を追い越して命令の実行順序入れ替えを実現することが必要である。
本発明では、MRFの読み出し部分をカレントウィンドウ選択、レジスタ選択と2段階で制御するように構成した。そして、レジスタの読み出しポートにおいて選択されるレジスタを、アウトオブオーダ実行可能なように各ポートについて予め設定するように構成した。これにより一時記憶であるWRFを持つことなく、高速に演算部へのデータ読み出しが可能であり、かつ、ウィンドウ切り替え命令の後続命令のアウトオブオーダ実行も可能である。
本発明によれば、従来の性能をほぼ保ったまま、WRFのハードウェア分のコストを削減できる。更に、WRFを使用しないことによる消費電力の削減、MRF−WRF間のデータ転送が無くなることによる消費電力の削減を図ることが可能である。
レジスタウィンドウ方式のレジスタファイルの構成例を示す図である。 レジスタウィンドウ方式を採用する演算処理装置の従来の構成例を示す図である。 本実施の形態における、レジスタウィンドウ方式を採用する演算処理装置の構成を示す図である。 レジスタウィンドウシステムの一般的な構成を説明する図である。 レジスタウィンドウシステムの改良構成例を示す図である。 パイプラインにおいてアウトオブオーダ処理を行う箇所を説明する図である。 SAVE命令前後の命令実行パイプラインの一例を示す図である。 読み出しの際の各ポートの割り当てを示す図である。 従来のレジスタウィンドウシステムの具体的構成例を示す図である。 本実施形態のレジスタウィンドウシステムの具体的構成例を示す図である。 本実施の形態の情報処理装置の構成を示す図である。
以下、図面を参照して、レジスタウィンドウ方式のレジスタファイルを備える演算処理装置において、レジスタからの高速読み出しを実現する実施の形態の一例を説明する。
図3に、レジスタウィンドウ方式を採用する本実施形態の演算処理装置の構成を示す。
演算処理装置0は、マスタレジスタファイル(MRF)1と、演算部3と制御部4を有する。図2の演算処理装置2000と比較すると、図3に示した演算処理装置0は、一時記憶であるWRF2002を備えない構成となっている。また、演算部3が備えるROB(リネームレジスタ)5は、演算結果のリネーミングを行う部分で、コミット時にMRF1に演算結果の書き戻しが行われる(write)。
図3において、MRF1の読み出し部分を、カレントウィンドウ選択と、レジスタ選択との2段階で制御する。カレントウィンドウ選択は、制御部4から出力されるWINDOW_ADDRESS信号によって制御される。WINDOW_ADDRESS信号はCWP(Current Window Pointer)の値に基づく信号である。また、レジスタ選択は、制御部4から出力されるREAD_ADDRESS信号によって制御される。
更に、後述するように、レジスタ読出しポートが選択するレジスタをアウトオブオーダ実行可能なように予め設定する。これにより、本実施の形態では一時記憶を備えることなく、演算部3への高速なデータ読み出しが可能であり、かつ、SAVE命令、RESTORE命令の後続命令のアウトオブオーダ実行が可能である。。
このように本実施の形態では、WRFが不要となるため、その分ハードウェアのコストを削減することが可能である。また、WRFによる消費電力、MRF−WRF間転送がなくなることによる消費電力の削減を図ることができる。
以下、演算処理装置0の構成をより詳しく説明する。
図1に示したように、MRF1のレジスタは、Wk local, Wk in, Wk outがそれぞれ8レジスタずつ、8ウィンドウ分(k=0〜7)あり、またそれらとは別にW globalが8レジスタある。W globalレジスタはすべてのウィンドウで共通であり、ウィンドウ切り替えで影響がないため、以降の説明からは省略することとする。
図4にレジスタウィンドウの構成を示す。レジスタウィンドウの特徴として、例えばk=1のW1 inは、k=0のW0 outと同じものである。よって本実施の形態では、図5に示すようにWk inレジスタは実装せず、Wk localレジスタとWk outレジスタを実装する。
図6に、命令をパイプライン処理する際に、アウトオブオーダ処理を行う箇所を示す。図6に示すように、命令の実行時にはFetch(F)、Decode(D)、Dispatch(P)、Buffer read(B)、Execute(x)、Update buffer(U)、Commit(W)の各処理が実行される。図6に示すように、Dispatch(P)、Buffer Read(B)、Execute(X),Update Buffer(U)でアウトオブオーダ処理(OOO)が行われる。
図7に、CWP=1の命令、SAVE命令、およびCWP=1の命令に後続するCWP=2の命令がアウトオブオーダ実行される際の各命令の関係を示す。図7に示されるように、アウトオブオーダ実行を行うためには、SAVE命令が実質的に実行中の期間、即ち、SAVE命令の実行処理のうちDispatch(図示「P」)からUpdate buffer(図示「U」)までの処理を実行中の期間において、現在のCWPに対応するレジスタ群(図7ではCWP=1)および現在のCWPの次のCWPに対応するレジスタ群(図7ではCWP=2)のいずれのデータも読み出せなければならない。
より具体的には、CWP=1のは命令において読み出されるレジスタ群W global, W1 local, W1 out, W1 in (W0 out)であり、CWP=2の命令において読み出されるレジスタ群W global, W2 local, W2 out, W2 in(W1 out)であるから、SAVE命令の後続命令のアウトオブオーダ実行を行うためには、レジスタ群W global, W2 local, W2 out, W1 local, W1 out, W0 outが読み出し可能である必要がある。
また、SAVE命令に変えてRESTORE命令を実行する場合、図7と同様にCWP=1の命令とRESTORE命令、後続のCWP=0の命令がアウトオブオーダ実行を行うためには、CWP=1のときに読み出されるレジスタ群であるW global, W1 local, W1 out, W1 in (W0 out)と、CWP=0のときに読み出されるレジスタ群であるW global, W0 local, W0 out, W0 in(W7 out)との読み出しが可能でなければならない。つまり、この状況では、W global, W1 local, W1 out, W0 local, W0 out, W7 outが読み出し可能である必要がある。
以上のことから、アウトオブオーダ実行を可能にするためには、MRF1からのレジスタ読出しの1段目のポートとして、6ポートが必要であることとがわかる。以下、これらのポートをG_PORT(global)、L_PORT0、L_PORT1、OUT_PORT0, OUT_PORT1, OUT_PORT2とする。G_PORTにはグローバルレジスタ群が、L_PORTにはローカルレジスタ群が、OUT_PORTにはアウトレジスタ群が、それぞれ割り当てられる。
そして、たとえばCWP=1の命令に続くSAVE命令の実行時にはG_PORTにW globalレジスタ群が、L_PORT0にW2 localレジスタ群が、L_PORT1にW1 localレジスタ群が、OUT_PORT0にW0 outレジスタ群が, OUT_PORT1にW1 outレジスタ群が、OUT_PORT2にW2 outレジスタ群が、それぞれ割り当てられることになる。
これをまとめると、CWPの値によって各ポートへの読み出しレジスタ群を図8に示すように対応させればよいことになる。
図8において、例えば「W7/W1」のようなスラッシュで区切られた表記は、RESTORE命令実行時のアウトオブオーダ実行においては「W7」レジスタ群が、SAVE命令実行時のアウトオブオーダ実行においては「W1」レジスタ群が割り当てられることを示している。
図8において、現在のCWPがCWP=0であってそれに続いてRESTORE命令が実行される場合のアウトオブオーダ実行を例に説明すると、L_PORT0およびL_PORT1には、ローカルレジスタ群が割り当てられるから、それぞれW0 localおよびW7 localの各ローカルレジスタ群が割り当てられ、OUT_PORT0、OUT_PORT1、およびOUT_PORT2には、アウトレジスタ群が割り当てられるから、それぞれW0 out、W7 out、W6 outの各アウトレジスタ群が割り当てられる。
一方、現在のCWPがCWP=0であってそれに続いてSAVE命令が実行される場合のアウトオブオーダ実行を例に説明すると、L_PORT0およびL_PORT1には、それぞれW0 localおよびW1 localの各ローカルレジスタ群が割り当てられ、OUT_PORT0、OUT_PORT1、およびOUT_PORT2には、それぞれW0 out、W7 out、W1 outの各アウトレジスタ群が割り当てられる。 以上のことから、MRF1からのレジスタ読出しの1段階目としてのカレントウィンドウ選択において、WINDOW_ADDRESS信号に基づいて各レジスタの読み出しポートが選択するレジスタを、次のルール1〜ルール6として示される動作アルゴリズムに基づいて割り当てることができる。尚、ウィンドウが0, 1, 2, ・・・, 2n, 2n+1のレジスタウィンドウがあるとする。(「n」は任意の自然数である)また、CWP=2n+1の次(CWP=2n+2)はCWP=0に回帰する。
ルール1 CWP=2nの時(SAVE・RESTORE命令実行中以外):
L_PORT0 = W2n local
L_PORT1 = *(don’t careの意)
OUT_PORT0 = W2n out
OUT_PORT1 = W(2n-1) out
OUT_PORT2 = *(don’t careの意)
ルール2 CWP=2n+1の時(SAVE・RESTORE命令実行中以外):
L_PORT0 = *(don’t careの意)
L_PORT1 = W(2n+1) local
OUT_PORT0 = W2n out
OUT_PORT1 = WP(2n+1) out
OUT_PORT2 = *(don’t careの意)
ルール3 CWP=2nの時(SAVE命令実行中):
L_PORT0 = W2n local
L_PORT1 = W(2n+1) local
OUT_PORT0 = W2n out
OUT_PORT1 = W(2n-1) out
OUT_PORT2 = W(2n+1) out
ルール4 CWP=2n+1の時(SAVE命令実行中):
L_PORT0 = W(2n+2) local
L_PORT1 = W(2n+1) local
OUT_PORT0 = W2n out
OUT_PORT1 = W(2n+1) out
OUT_PORT2 = W(2n+2) out
ルール5 CWP=2nの時(RESTORE命令実行中):
L_PORT0 = W2n local
L_PORT1 = W(2n-1) local
OUT_PORT0 = W2n out
OUT_PORT1 = W(2n-1) out
OUT_PORT2 = W(2n-2) out
ルール6 CWP=2n+1の時(RESTORE命令実行中):
L_PORT0 = W2n local
L_PORT1 = W(2n+1) local
OUT_PORT0 = W2n out
OUT_PORT1 = W(2n+1) out
OUT_PORT2 = W(2n-2) out
以上のルール1〜6に基づいて、各ポートの読み出しにおいて、L_PORT0にはW(2n) localのレジスタ群からいずれか1つが選択され、L_PORT1にはW(2n+1) localのレジスタ群からいずれか1つが選択される。また、O_PORT0にはW(2n) outのレジスタ群からいずれか1つが選択され、O_PORT1にはW(2n+1) outのレジスタ群からいずれか1つが選択され、O_PORT2にはW(2n) out またはW(2n+1) outのレジスタ群からいずれか1つが選択されればよいことがわかる。そして、各レジスタ読出しポートでは、CWPの値に基づくWINDOW_ADDRESS信号、およびSAVE命令、RESTORE命令をそれぞれ実行中か否かによって読み出すレジスタを選択すればよい。
上述のレジスタ割り当ての原理に基づく本実施形態の具体的な構成について、従来の構成と対比させながら以下に説明する。図10は、図3に示される本実施形態の演算処理装置0におけるレジスタウィンドウシステムの構成例を示す図、図9は、従来のレジスタウィンドウシステムの構成例を示す図である。
図10に示される本実施形態のレジスタウィンドウシステムの構成例において、W0 local、W2 local、W4 local、W6 localで示される4個のローカルレジスタ群から出力される8レジスタ値からなる各組は、セレクタ904によっていずれかの組が選択されて、L_PORT0ポートに出力される。
W1 local、W3 local、W5 local、W7 localで示される4個のローカルレジスタ群から出力される8レジスタ値からなる各組は、セレクタ905によっていずれかの組が選択されて、L_PORT1ポートに出力される。
W0 out、W2 out、W4 out、W6 outで示される4個のローカルレジスタ群から出力される8レジスタ値からなる各組は、セレクタ905によっていずれかの組が選択されて、OUT_PORT0ポートに出力され、また、セレクタ905および907によっていずれかの組が選択されて、OUT_PORT2ポートに出力される。
W1 out、W3 out、W5 out、W7 outで示される4個のローカルレジスタ群から出力される8レジスタ値からなる各組は、セレクタ906によっていずれかの組が選択されて、OUT_PORT1ポートに出力され、また、セレクタ906および907によっていずれかの組が選択されて、OUT_PORT2ポートに出力される。
GLで示されるグローバルレジスタ群から出力される8レジスタ値からなる組は、G_PORTポートに出力される。
L_PORT0、L_PORT1、OUT_PORT0、OUT_PORT1、OUT_PORT2 、およびG_PORTの6ポートに出力されたそれぞれ8レジスタ値からなる合計8×6=48レジスタ値は、セレクタ908によって1つのレジスタ値が選択されて、READ_DATA(読出しデータ)として出力される。なお、セレクタ908中の「48:1」は、48レジスタ値から1レジスタ値を選択出力することを意味する。
図10に示される本実施形態のレジスタウィンドウシステムの構成において、CWPの値に基づくWINDOW_ADDRESS信号、およびSAVE命令またはRESTORE命令の実行状態に基づいて、前述したルール1〜6の動作アルゴリズムに従って、セレクタ903〜907が、各レジスタ群出力を選択するように動作する。この動作アルゴリズムは、簡単な論理回路によって構成することが可能である。そして、セレクタ908に供給されるREAD_ADDRESS信号は、48レジスタ値から1レジスタ値を選択させる信号でよい。なお、WRITE_ADDRESS信号は、セレクタ902を制御して、WRITE_DATA(書込みデータ)を、各レジスタ群に書き込ませる。
このように、本実施形態では、WINDOW_ADDRESS信号もしくはMRF901に保持されるデータが変わらない場合は、WINDOW_ADDRESS信号とREAD_ADDRESS信号による簡単なアドレス指定によって、高速なデータ読出しが可能になる。以下に説明する図9の従来構成に比較して、ワーキングレジスタファイル(WRF)が不要な分だけハードウェア量を削減することが可能となる。但し、WINDOW_ADDRESS信号もしくはMRF901に保持されるデータが変化した場合は、図3に示されるROB5からの読み出しで対応をするように構成することができる。
次に、図9に示される従来のレジスタウィンドウシステムの構成例において、マスタレジスタファイル(MRF)1001は、W0 local〜W7 localで示される8個のローカルレジスタ群と、W0 out〜W7 outで示される8個のアウトレジスタ群と、GLで示されるグローバルレジスタ群とを有する。なお、8個のインレジスタ群W0 in〜W7 inはそれぞれ、8個のアウトレジスタ群W7 out,W0 out〜W6 outと共用される。
一方、ワーキングレジスタファイル(WRF)1002は、MRF1001における或るCWP値においてMRF1001から出力された選択された1組のグローバルレジスタ群の8レジスタ値、選択された1組のローカルレジスタ群の8レジスタ値、選択された1組のインレジスタ群(=アウトレジスタ群)の8レジスタ値、及び選択された1組のアウトレジスタ群の8レジスタ値をそれぞれ保持するGレジスタ群1005、Lレジスタ群1006、INレジスタ群1007、及びOUTレジスタ群1008と、MRF1001からのローカルレジスタ群W0 local〜W7 localまたはグローバルレジスタ群GLのいずれかの現在の8レジスタ出力値を一時保持するG/Lレジスタ群1003と、同じくMRF1001からのアウトレジスタ群W0 out〜W7 outのいずれかの現在の8レジスタ出力値を一時保持するIOレジスタ群1004と、G/Lレジスタ群1003、IOレジスタ群1004、またはWRITE_DATA(書込みデータ)を選択して1005〜1008のレジスタ群に保持させるセレクタ1009と、レジスタ群1003〜1008の6レジスタ群、即ち、6×8=48レジスタ群のうちの1レジスタ値を選択してREAD_DATA(読出しデータ)として出力するセレクタ1010とを有する。なお、セレクタ1010中の「48:1」は、48レジスタ群から1レジスタを選択することを意味する。
上述の構成を有する図9の従来のレジスタウィンドウシステムにおいて、読出し動作時には、MRF1001における現在のCWP値に対応する読出しデータは、MRF1001中の各レジスタ群の出力からG/Lレジスタ群1003及びIOレジスタ群1004及びセレクタ1009を介して、WRF1002内のレジスタ群1005〜1008に常に保持される。また、書込み動作時には、MRF1001における現在の書込みデータは、MRF1001中のセレクタ1009を介して、WRF1002内のレジスタ群1005〜1008に保持される。従って、READ_ADDRESSとして、上記レジスタ群1005〜1008、または1003、1004のいずれかを選択するアドレス信号をセレクタ1010に供給するだけで、現在のCWPが指し示すデータを、READ_DATAとして高速に読み出すことが可能となる。なお、アウトオブオーダ実行等を考慮して、セレクタ1010は、現在のMRF1001の出力であるレジスタ群1003及び1004の出力も選択することができるように構成されている。
図9に示される従来のレジスタウィンドウシステムの構成例では、MRF1001に加えてWRF1002が具備されることにより、高速なデータ読出しが実現されているが、前述したように、WRF1002のためのハードウェア構成が増加してしまうという問題点を有している。
以上、図10に示される本実施形態の構成と図9に示される従来例の構成とを比較すれば、本実施形態の優位性は明らかである。
ここまで、本実施の形態の演算処理装置0の構成を詳細に説明した。上述したように、本実施の形態の演算処理装置0では、図3のMRF1の読み出し部分をCWPの値、すなわちカレントウィンドウの番号によって選択するカレントウィンドウ選択(WINDOW_ADDRESS)と、読み出しアドレスに相当するREAD_ADDRESSにより読み出しレジスタを選択する2段階で制御する。カレントウィンドウ選択においては、カレントウィンドウ番号に基づいてウィンドウ番号が偶数のローカルレジスタ群からレジスタを選択する第1のローカルレジスタ読出しポート(L_PORT0)と、カレントウィンドウ番号に基づいてウィンドウ番号が奇数のローカルレジスタ群からレジスタを選択する第2のローカルレジスタ読出しポート(L_PORT1)と、カレントウィンドウ番号に基づいてウィンドウ番号が偶数のアウトレジスタ群からレジスタを選択する第1のアウトレジスタ読出しポート(OUT_PORT0)と、カレントウィンドウ番号に基づいてウィンドウ番号が奇数のアウトレジスタ群からレジスタを選択する第2のアウトレジスタ読出しポート(OUT_PORT1)と、カレントウィンドウ番号に基づいてアウトレジスタ群からレジスタを選択する第3のアウトレジスタ読出しポート(OUT_PORT2)によりレジスタの選択が行われる。
このような構成により本実施の形態の演算処理装置は、一時記憶であるWRFを用いずに、レジスタからの高速読み出しを実現することができ、かつ、ウィンドウ切替命令の後続命令のアウトオブオーダ実行も可能である。
これにより、WRFのハードウェア分のコストを削減できる。また、WRFを使用しないことにより消費電力の削減、および、MRF−WRF間のデータ転送が無くなることによる消費電力の削減が可能である。
以上、図面を参照しながら本実施の形態の一例を説明したが、本発明は上述した演算処理装置を含む情報処理装置としても構成することができる。
図11に情報処理装置の構成の一例を示す。情報処理装置110は、演算ユニット112、メモリ111、命令制御ユニット113、キャッシュ115を含むキャッシュ制御ユニット114を有する。上述した演算処理装置0は演算ユニット112に対応する。図3に示した制御部4が演算制御部116に、演算部3が演算部118、MRF1がレジスタ部117に対応する。
情報処理装置110は、上述した演算処理装置0を採用して構成されることで、ハードウェアコストを低減させることができ、また消費電力も低減することが可能である。
以上のように、本発明の実施の形態の一例について詳細に説明したが、本発明はこれに限定されるものではなく、本実施の形態の要旨を逸脱しない範囲内で様々の構成または形状をとることができることは言うまでもない。

Claims (3)

  1. 演算処理を行う演算部と、
    各々N本のレジスタを備えたK枚のウィンドウを有し、各ウィンドウを構成する一部のレジスタは両隣のウィンドウを構成するレジスタと共有され、該共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウと、前記K枚のウィンドウのうちの1枚を選択するカレントウィンドウ選択手段と、読み出しアドレスにより読み出しレジスタを選択するレジスタ選択手段と、を備えるレジスタファイルと、
    前記レジスタファイルにおいてカレントウィンドウ選択手段においてウィンドウを選択するためのウィンドウアドレス信号を出力する制御部と、
    を備え、
    前記ウィンドウアドレス信号は、実行中のサブルーチンが使用しているレジスタウィンドウのウィンドウ番号を保持するカレントウィンドウポインタの値に基づく信号であり、
    前記カレントウィンドウ選択手段は、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が偶数のローカルレジスタ群から第1のローカルレジスタを選択する第1のローカルレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が奇数のローカルレジスタ群から第2のローカルレジスタを選択する第2のローカルレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が偶数のアウトレジスタ群から第1のアウトレジスタを選択する第1のアウトレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が奇数のアウトレジスタ群から第2のアウトレジスタを選択する第2のアウトレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記偶数のアウトレジスタ群と前記奇数のアウトレジスタ群から第3のアウトレジスタを選択する第3のアウトレジスタ読出しポートと、
    選択された前記第1のローカルレジスタ群、選択された前記第2のローカルレジスタ群、選択された前記第1のアウトレジスタ群、選択された前記第2のアウトレジスタ群、及び、選択された前記第3のアウトレジスタ群の中から、前記読み出しアドレスに基づいて1つの前記読み出しレジスタを選択するセレクタと、
    を備えることを特徴とする演算処理装置。
  2. 演算処理を行う演算部と、
    複数のレジスタから構成されるレジスタファイルで、該レジスタファイルを各々N本のレジスタを備えたK枚のウィンドウに分割し、各ウィンドウは各々一部のレジスタを両隣のウィンドウと共有し、該共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウを備えるレジスタファイルであって、前記K枚のウィンドウのうちの1枚を選択するカレントウィンドウ選択手段と、読み出しアドレスにより読み出しレジスタを選択するレジスタ選択手段と、を備えるレジスタファイルと、
    前記レジスタファイルにおいてカレントウィンドウ選択手段においてウィンドウを選択するためのウィンドウアドレス信号を出力する制御部と、
    を含む演算処理装置を有し、
    前記ウィンドウアドレス信号は、実行中のサブルーチンが使用しているレジスタウィンドウのウィンドウ番号を保持するカレントウィンドウポインタの値に基づく信号であり、
    前記カレントウィンドウ選択手段は、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が偶数のローカルレジスタ群から第1のローカルレジスタを選択する第1のローカルレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が奇数のローカルレジスタ群から第2のローカルレジスタを選択する第2のローカルレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が偶数のアウトレジスタ群から第1のアウトレジスタを選択する第1のアウトレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が奇数のアウトレジスタ群から第2のアウトレジスタを選択する第2のアウトレジスタ読出しポートと、
    前記ウィンドウアドレス信号に基づいて、前記偶数のアウトレジスタ群と前記奇数のアウトレジスタ群から第3のアウトレジスタを選択する第3のアウトレジスタ読出しポートと、
    選択された前記第1のローカルレジスタ群、選択された前記第2のローカルレジスタ群、選択された前記第1のアウトレジスタ群、選択された前記第2のアウトレジスタ群、及び、選択された前記第3のアウトレジスタ群の中から、前記読み出しアドレスに基づいて1つの前記読み出しレジスタを選択するセレクタと、
    を備えることを特徴とする情報処理装置。
  3. 複数のレジスタから構成されるレジスタファイルで、該レジスタファイルを各々N本のレジスタを備えたK枚のウィンドウに分割し、各ウィンドウは各々一部のレジスタを両隣のウィンドウと共有し、該共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウを備えるレジスタファイルの読み出し方法であって、
    前記K枚のウィンドウのうちの1枚を選択する第1のステップと、
    前記選択されたウィンドウレジスタから、読み出しアドレスにより読み出しレジスタを選択する第2のステップと、
    からレジスタを読み出し、
    前記ウィンドウアドレス信号は、実行中のサブルーチンが使用しているレジスタウィンドウのウィンドウ番号を保持するカレントウィンドウポインタの値に基づく信号であり、
    前記第1のステップにおいて、前記K枚のウィンドウをそれぞれ識別するためのウィンドウ番号のうち1つがカレントウィンドウ番号として選択され、
    前記カレントウィンドウ番号に基づいて、第1のローカルレジスタ読出しポートにおいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が偶数のローカルレジスタ群から第1のローカルレジスタを選択し、
    前記カレントウィンドウ番号に基づいて、第2のローカルレジスタ読出しポートにおいて、前記サブルーチンの作業用レジスタであるローカルレジスタのうち、ウィンドウ番号が奇数のローカルレジスタ群から第2のローカルレジスタを選択し、
    前記カレントウィンドウ番号に基づいて、第1のアウトレジスタ読出しポートにおいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が偶数のアウトレジスタ群から第1のアウトレジスタを選択し、
    前記カレントウィンドウ番号に基づいて、第2のアウトレジスタ読出しポートにおいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられるアウトレジスタのうち、ウィンドウ番号が奇数のアウトレジスタ群から第2のアウトレジスタを選択し、
    前記カレントウィンドウ番号に基づいて、前記サブルーチンの呼出し時の引数の引き渡しに用いられる前記偶数のアウトレジスタ群と前記奇数のアウトレジスタ群から第3のアウトレジスタを選択し、
    選択された前記第1のローカルレジスタ群、選択された前記第2のローカルレジスタ群、選択された前記第1のアウトレジスタ群、選択された前記第2のアウトレジスタ群、及び、選択された前記第3のアウトレジスタ群の中から、前記読み出しアドレスに基づいて1つの前記読み出しレジスタを選択する、
    ことを特徴とするレジスタファイルの読み出し方法。
JP2010523656A 2008-08-08 2008-08-08 演算処理装置 Active JP5229321B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/002172 WO2010016097A1 (ja) 2008-08-08 2008-08-08 演算処理装置

Publications (2)

Publication Number Publication Date
JPWO2010016097A1 JPWO2010016097A1 (ja) 2012-01-12
JP5229321B2 true JP5229321B2 (ja) 2013-07-03

Family

ID=41663327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010523656A Active JP5229321B2 (ja) 2008-08-08 2008-08-08 演算処理装置

Country Status (6)

Country Link
US (1) US8539208B2 (ja)
EP (1) EP2325744B1 (ja)
JP (1) JP5229321B2 (ja)
KR (1) KR101244074B1 (ja)
CN (1) CN102112965B (ja)
WO (1) WO2010016097A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6107485B2 (ja) 2013-07-04 2017-04-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11144364B2 (en) * 2019-01-25 2021-10-12 International Business Machines Corporation Supporting speculative microprocessor instruction execution

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520010A (ja) * 1991-07-16 1993-01-29 Matsushita Electric Ind Co Ltd レジスタフアイル
JPH05282147A (ja) * 1992-02-03 1993-10-29 Matsushita Electric Ind Co Ltd レジスタファイル

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179682A (en) * 1990-05-15 1993-01-12 Sun Microsystems, Inc. Method and apparatus for improved current window cache with switchable address in, out, and local cache registers
JP3737755B2 (ja) * 2001-12-28 2006-01-25 富士通株式会社 レジスタウィンドウ方式によるレジスタファイル及びその制御方法
JP5028774B2 (ja) * 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法
JP5130757B2 (ja) * 2007-03-16 2013-01-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5282147B2 (ja) 2010-02-15 2013-09-04 株式会社日立製作所 暗号通信システム及びそれに用いる送信機及び受信機

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520010A (ja) * 1991-07-16 1993-01-29 Matsushita Electric Ind Co Ltd レジスタフアイル
JPH05282147A (ja) * 1992-02-03 1993-10-29 Matsushita Electric Ind Co Ltd レジスタファイル

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012053940; Ben J. Catanzaro: "The SPARC Technical Papers" , 1991, P.14, 60-61,235-237, Springer-Verlag *

Also Published As

Publication number Publication date
KR20110034654A (ko) 2011-04-05
EP2325744A1 (en) 2011-05-25
US20110125988A1 (en) 2011-05-26
WO2010016097A1 (ja) 2010-02-11
EP2325744B1 (en) 2022-08-03
CN102112965B (zh) 2015-06-17
KR101244074B1 (ko) 2013-03-18
CN102112965A (zh) 2011-06-29
EP2325744A4 (en) 2011-08-10
US8539208B2 (en) 2013-09-17
JPWO2010016097A1 (ja) 2012-01-12

Similar Documents

Publication Publication Date Title
US7457938B2 (en) Staggered execution stack for vector processing
JP5625903B2 (ja) 演算処理装置および演算処理方法
JP3555140B2 (ja) レジスタリネーム回路の半導体フロアプランと方法
US7904702B2 (en) Compound instructions in a multi-threaded processor
US8140829B2 (en) Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution
US7343478B2 (en) Register window system and method that stores the next register window in a temporary buffer
JP5130757B2 (ja) 演算処理装置及び演算処理装置の制御方法
US7093110B2 (en) Register file in the register window system and controlling method thereof
JP5229321B2 (ja) 演算処理装置
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
JP5145659B2 (ja) ベクトルリネーミング方式およびベクトル型計算機
JP4444305B2 (ja) 半導体装置
JP2004038751A (ja) プロセッサ及び命令制御方法
KR100636596B1 (ko) 고에너지 효율 병렬 처리 데이터 패스 구조
JP2000231488A (ja) プロセッサ
JP3771682B2 (ja) ベクトル処理装置
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2023088443A (ja) 演算処理装置および演算処理方法
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
JPH06332700A (ja) 情報処理装置
JP3517139B2 (ja) 情報処理装置
JPH1091442A (ja) プロセッサ
JPH10207720A (ja) 情報処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

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: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130304

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229321

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150