JP2008234075A - 演算処理装置 - Google Patents
演算処理装置 Download PDFInfo
- Publication number
- JP2008234075A JP2008234075A JP2007069613A JP2007069613A JP2008234075A JP 2008234075 A JP2008234075 A JP 2008234075A JP 2007069613 A JP2007069613 A JP 2007069613A JP 2007069613 A JP2007069613 A JP 2007069613A JP 2008234075 A JP2008234075 A JP 2008234075A
- Authority
- JP
- Japan
- Prior art keywords
- window
- register
- data
- instruction
- arithmetic processing
- 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
- 238000004364 calculation method Methods 0.000 claims description 25
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 230000006870 function Effects 0.000 description 26
- 239000000872 buffer Substances 0.000 description 23
- 238000000034 method Methods 0.000 description 16
- 230000010365 information processing Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000007853 buffer solution Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001960 triggered 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30098—Register arrangements
-
- 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/30101—Special purpose registers
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- 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/3824—Operand accessing
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
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
【解決手段】MRF10は、レジスタファイル、MRF_RA1及びMRF_RA2と5つの読み出しポートio0、io1、io2、l0、l1を備える。レジスタ制御部210によってMRF_RA1を制御し、それらの読み出しポートから、CWPレジスタ213の値(cwp)で指定されるレジスタウィンドウのインレジスタ/アウトレジスタ、ローカルレジスタのウィンドウを選択出力する。次に、レジスタ制御部210によってMRF_RA2を制御し、該選択出力されたウィンドウのデータと前記レジスタファイルから入力するグローバルレジスタのウィンドウのデータから、演算部30が必要とするレジスタのデータを選択し、該データを演算部30に出力する。
【選択図】図2
Description
同図に示すレジスタファイル1000は、8本のレジスタウィンドウW0〜W7から成り、これらのレジスタウィンドウW0〜W7は論理的にリング状に連結されている。各レジスタウィンドウWk(k=0〜7)は、W globals(不図示)、Wk outs、Wk ins、及びWk localsの4種類のセグメント(以後、これをウィンドウと呼ぶことにする)を備えている。これら4種類のウィンドウは、いずれも、8個のレジスタから構成されている。W globalsは全てのサブルーチンで共用される8個のグローバルレジスタを備え、Wk localsは各レジスタウィンドウ固有の8個のローカルレジスタを備えている。Wk insは8個のinレジスタ(インレジスタ)を備え、Wk outsは8個のoutレジスタ(アウトレジスタ)を備えている。
Pointer)に保持される。CWPの値は、SAVE命令の実行もしくはトラップ(trap)発生によってインクリメントされ、RESTORE命令の実行もしくはRETT命令によるトラップからの復帰によってデクリメントされる。図17では、CWPの値は“0”となっており、CWPはレジスタウィンドウW0を指定している。このように、CWPの値を増減させて、カレントウィンドウの切り替えを行う命令を、本明細書では“ウィンドウ切り替え命令”と呼ぶことにする。
のデータに加え、該カレントウィンドウの前後のレジスタウィンドウのデータを保持するようになっている。また、MRF3001とWRF3002の間には、MRF3001からWRF3002にレジスタウィンドウのデータを転送する際に、そのデータを一時的に保持するためのレジスタ群3113(例えば、8バイトのレジスタが8個)が設けられている。
が可能となる。
本発明の演算処理装置の第3態様は、前記第1態様の演算処理装置において、前記制御手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを前記レジスタファイルから読み出すウィンドウデータ読み出し手段と、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、該ウィンドウデータ読み出し手段によって読み出された前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる複数のレジスタのデータの中から、前記演算手段が必要とするレジスタのデータを選択して出力するレジスタデータ選択出力手段とを備える。
本発明の演算処理装置の第5態様は、前記第3態様の演算処理装置において、前記レジスタファイルは、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを出力する複数の読み出しポートを備え、前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを前記複数の読み出しポートから出力し、前記レジスタデータ選択出力手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記複数の読み出しポートから出力される前記第1のレジスタウィンドウのデータと前記第2のレジスタデータウィンドウに含まれる複数のレジスタのデータの中から、前記演算手段が必要とするレジスタのデータのみを選択して出力する。
ジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを交互に切り替え出力するようにしてもよい(前記第5態様の演算処理装置の第1の構成例)。
前記第5態様の演算処理装置の第3の構成例において、例えば、前記ウィンドウデータ読み出し手段は、ウィンドウ切り替え命令のデコード開始からコミットが完了するまでの間は、全ての前記第1の読み出しポートと全ての前記第2の読み出しポートを介して前記データ出力を行うような構成にしてもよい(前記第5態様の演算処理装置の第4の構成例)。
前記第5態様の第3または第4の構成例において、例えば、前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のコミットが開始されると、前記第1のレジスタウィンドウに含まれる第1のウィンドウのデータのみを前記複数の第1の読み出しポートの一部のポートから出力し、前記第1のレジスタウィンドウに含まれる第2のウィンドウのデータのみを前記複数の第2の読み出しポートの一部のポートから出力するような構成にしてもよい(前記第5態様の演算処理装置の第5構成例)。
前記演算処理装置の第5構成例において、例えば、前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令の実行が開始される毎に、前記第1のレジスタウィンドウのデータを出力する前記第1の読み出しポートと、前記第2のレジスタウィンドウのデータを出力する前記第2の読み出しポートを切り替えるような構成にしてもよい。
本発明の演算処理装置の第6態様は、前記第5態様の演算処理装置において、前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のコミットが開始されると、前記第2のジスタウィンドウのデータのみを前記複数のポートのいずれかのポートから出力する。
本発明の演算処理装置の第7態様は、前記第5または第6態様の演算処理装置において、前記第1の読み出しポートと前記第2の読み出しポートには、それぞれ、前記第1のウィンドウのデータと前記第2のウィンドウのデータが入力されるマルチプレクサが設けられており、前記ウィンドウデータ読み出し手段は、前記第1の読み出しポートと前記第2の読み出しポートの各ポートに設けられたマルチプレクサを制御して、前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第1のウィンドウのデータと前記第2のウィンドウのデータを該マルチプレクサから選択出力させ、前記レジスタデータ選択出力手段は、前記マルチプレクサから出力される前記第1のウィンドウのデータと前記第2のウィンドウのデータの中から前記演算手段が必要とするレジスタのデータを選択して出力する。
本発明の演算処理装置の第9態様は、前記第3態様の演算処理装置において、前記制御手段は、さらに、ウィンドウ切り替え命令が実行される度に、前記カレントウィンドウがアドレス順に切り替わってサイクリックに使用されるように、前記カレントウィンドウポインタ手段が保持するアドレス情報を更新するカレントウィンドウポインタ制御手段と、
前記サイクリックに切り替わるアドレス情報の全てのステートに関するステート情報を格納する記憶手段と、前記カレントウィンドウポインタ手段が保持するアドレス情報が更新されたとき、更新後のアウトオブオーダ実行方式に対応するステート情報を前記記憶手段から読み出し、そのステート情報を前記ウィンドウデータ読み出し手段に出力するステート情報出力手段とを備える。
本発明の演算処理装置の第9態様によれば、レジスタウィンドウが論理的にリング状に構成されたレジスタファイルからのデータ読み出しを、前記記憶手段に格納されている前記ステート情報を利用して効率的に制御できる。
続命令を正しく実行できる。
[概要]
本発明は、上述したレジスタウィンドウ方式のレジスタファイルを有し、アウトオブオーダ実行機能を備えた演算処理装置において、前記MRFからのデータ読み出しを工夫することで、前記WRFを設けることなく、演算部のデータ読み出し速度を確保しながら、ウィンドウ切り替え命令の後続命令のアウトオブオーダ実行も可能にすることを特徴としている。本発明は、このような構成により、演算処理装置の回路面積の削減による消費電力の低減、ワークバッファ間(CWRとCRB間)のデータ転送を無くすことにより消費電力の削減を実現する。
{全体構成}
図1は、本発明の実施形態である演算処理装置の全体構成図である。
同図に示す演算処理装置1は、MRF10、制御部20及び演算部30を備えている。
図1と図19、20を比較すれば分かるように、本実施形態の演算処理装置1は、上述した従来の前記情演算処理装置3000や前記情報処理装置4000と異なり、WRF3002やワークバッファ(CWR4020、CRB4030)を備えていない。本実施形態の演算処理装置1は、制御部20内に設けられた組み合わせ回路(不図示)とMRF10内に設けられたレジスタ(例えば、前記MRF_RA1と前記MRF_RA2)により、CWPで指定されるMRF10内のレジスタウィンドウをアクセスして、該レジスタウィンドウに対するデータの読み出し/書き込みを行う。制御部20は、演算部30に対して命令の演算実行を指示するための信号を出力する。
{命令パイプラインの構成}
まず、図4に示す命令パイプラインの構成を説明する。図4に示すように、演算処理装置1の命令パイプラインは、Fetchステージ(F)、Issueステージ(D)、D
ispatchステージ(P)、Operand Readステージ(B)、Executeステージ(X)、Update Bufferステージ(U)、及びCommitステージ(W)から構成される。
Fetchステージ:メモリから命令を読み出す
Issueステージ:命令をデコードし、そのデコード結果をリザベーションステーションに登録する。
Oerand Readステージ:演算器までオペランドを読み出す
Executeステージ:命令を実行する
Update Bufferステージ:実行結果を待ち合わせる
Commitステージ:命令を完了する
このように、演算処理装置1の命令パイプラインは、アウトオブオーダ命令発行/インオーダ完了のアウトオブオーダ処理を実行する構成となっている。
図2に示すように、MRF10は、レジスタファイル100、MRF_RA1及びMRF_RA2を備えている。レジスタファイル100は、前述した図17に示すレジスタファイル1000と同様な構成のオーバーラップウィンドウ方式のレジスタファイルである。したがって、ここでは、詳しい説明は省略する。
図1の制御部20は、図2に示すレジスタ制御部210及び命令制御部220を備えている。
レジスタ制御部210は、ポート割り当て制御部テーブル211、SETレジスタ212、CWPレジスタ213、及びset、cwp制御装置214を備えている。
ポート割り当て制御部テーブル211は、MRF_RA1に設定される値(後述するポート割り当てステート)が格納されているテーブルである。
図3(a)は、MRF_RA1の構成例を示す図である。
図3(a)に示すMRF_RA1は、図5に示すポート割り当てステート215(5つのポートID「l0」、「l1」、「io0」、「io1」、「io2」)を格納する領域を備えている。本実施形態のMRF10は、W0〜W7の8本レジスタウィンドウを備えているため、ポートIDl0、l1は、それら8本のレジスタウィンドウW0〜W7の中から一つのローカルレジスタ用ウィンドウ(=8個のローカルレジスタ)を指定するアドレスである。また、ポートIDio0〜io2は、上記8本のレジスタウィンドウW0〜W7の中から一つのインレジスタ/アウトレジスタ用ウィンドウ(=8個のインレジスタ/アウトレジスタ)を指定するアドレスである。したがって、各ポートIDl0、l1、io0、io1、io2の最小構成は3ビットである。
図3(b)に示すMRF_RA2は、MRF10の5つの読み出しポートl0、l1、io0、io1、io2の中から1つのポートを選択するためのアドレス(ポート指定ア
ドレス)と、ウィンドウ内のレジスタを特定するためのアドレス(レジスタ指定アドレス)を格納する領域を備えている。ポート指定アドレスは、上記5つの読み出しポートl0、l1、io0、io1、io2の中から1つを指定するので、最小3ビット構成となる。また、MRF10が備えるレジスタウィンドウが8個のレジスタから構成される場合、レジスタ指定アドレスは、最小3ビット構成となる。したがって、この場合、MRF_RA2は全体で最小6ビット構成となる。
図5は、前記ポート割り当て制御部テーブル211の構成例を示す図である。
図5に示すように、ポート割り当て制御部テーブル211は、24個のエントリを備えており、それらのエントリに上記24種類のステートに関する情報を、ステートの周回順序に対応させて格納している。ポート割り当て制御部テーブル211の各エントリのレコードは、「set」、「cmp」、「ポート割り当てステート215」から構成される。setは上記セットの番号(セット番号)を、cwpはCWPレジスタ213の値、すなわち、カレントウィンドウに指定されているレジスタウィンドウの番号(レジスタウィンドウ番号)を示す。setとcwpの組(set、cwp)は、ポート割り当て制御部テーブル211のインデックスとなっている。
set、cwp制御装置214は、SETレジスタ212とCWPレジスタ213の値設定を制御する。レジスタ制御部210には、命令制御部220からウィンドウ切り替え情報が入力される。この情報は、例えば、デコード対象命令がSAVE命令であるか、または、RESTORE命令であるかを示す情報である。set、cwp制御装置214は、デコード対象命令がSAVE命令であれば、cwpを“1”だけインクリメントする。このインクリメントによりcwpが“8”(レジスタウィンドウ数)になれば、cwpを“0”にリセットし、setを“1”だけインクリメントする。このインクリメントによりsetが“3”になれば、setを“0”にリセットする。
図7と図8に、それぞれ、デコード対象命令がSAVE命令、RESTORE命令であった場合のset、cwp制御装置214の処理フローを示す。
まず、図7のフローチャートを説明する。尚、図7及び図8に示す演算子%は、a%bという式で使用された場合、aをbで除算した場合の剰余を求めることを意味するものである。
set、cwp制御装置214は、命令制御部220から入力されたウィンドウ切り替え情報を調べ、デコード対象命令がRESTORE命令であるか否か判断する(S21)。そして、RESTORE命令でなければ処理を終了する。一方、ステップS21においてそのデクリメント結果をレジスタウィンドウ数(本実施形態の場合、“8”)で除算し、その剰余を求める。そして、その剰余をcwpに設定し、cwpを更新する(S12)。
次に、命令制御部220の構成を説明する。
命令制御部220は、ウィンドウ切り替え命令後続命令の実行タイミング制御機能221(以後、実行タイミング制御機能221と記載)、リネームレジスタ開放制御機能222及びMRF_RA2の制御機能223を備えている。
解釈する機能である。命令制御部220は、レジスタ制御部210を介して、MRF_RA2が前記オペランドレジスタ番号で指定されるレジスタのデータを前記読み出しポート261から選択出力させるように制御する。
{第1実施形態}
MRF10から演算部30へのレジスタデータの転送に複数サイクルを要する場合には、新しく切り替わったレジスタウィンドウのレジスタデータを読み出せないタイミングが発生する。このような場合の例を、図9を参照しながら説明する。
図9において、IO.FDは、インオーダで実行されるFetchステージ(Fステージ)とIssueステージ(Dステージ)を示す。また、OOO.PBXUは、アウトオブオーダで実行されるDispatchステージ(Pステージ)、Operand Readステージ(B ステージ)、Executeステージ(Xステージ)及びUpdate
Bufferステージ(Uステージ)を示す。また、IO.Wは、インオーダ完了するCommitステージ(Wステージ)を示す(以上、図4参照)。
サイクル1でウィンドウ切り替え命令が演算部30でデコード(D)され、サイクル2で命令制御部220からレジスタ制御部210にMRF_RA1の変更指示信号が送られる(図10のa)。そして、サイクル3、4で、レジスタ制御部210によりMRF_R
A1が更新される(図10のb)。この場合、図10のbで示す期間は、MRF_RA1の更新により、ウィンドウ切り替え命令の後続命令の実行に必要なレジスタウィンドウのデータをMRF_RA1から読み出すことができない。演算部30は、サイクル5(図10のc)以降に、該レジスタウィンドウのデータをMRF10から読み出し可能となる。したがって、この場合、ウィンドウ切り替え命令のデコードが実行されたサイクル1の次のサイクル2においては、前記後続命令のデコードをストールさせる。したがって、この場合、前記後続命令の実行は1サイクルだけストールする。
図11は、真のデータ依存関係にある命令を、命令パイプラインにパイプラインバブルが発生しないように、リネームレジスタ(ROB31)の開放を制御する手法を示す図である。図11おいて、%1はレジスタを示す。
次に、レジスタファイル(MRF10)からのデータの読み出しに複数サイクルを要する場合の制御手法を図12に示す。
本実施形態は、本発明を、8本のレジスタウィンドウを備えるMRF10について、ポート割り当て制御部テーブル211を用いて、ウィンドウ切り替え前後でのMRF10からのデータ読み出し制御に適用したものである。
MRF10は、ローカルレジスタ、インレジスタ、アウトレジスタ及びグローバルレジスタを備えるが(図2参照)、グローバルレジスタは全てのレジスタウィンドウで共通であり、ウィンドウ切り替えが発生しても影響が出ないため、以後の説明では省略する。
VE命令のデコード(D)終了からコミット(W)開始までは、cwp=2でのローカルレジスタはMRF10のl0ポートから、インレジスタのデータは読み出しポートio2から、アウトレジスタのデータは読み出しポートio1から読み出される。また、cwp=3でのローカルレジスタのデータは読み出しポートl1から、インレジスタのデータは読み出しポートio0から、アウトレジスタのデータは読み出しポートio1から読み出される(以上、図13の表B参照)。
図15に示す演算処理装置300は、レジスタリネーミングにリオーダバッファ方式を採用している。このレジスタリネーミングはROB(リオーダバッファ)31を利用して行われる。演算処理装置300の固定小数点演算のパイプラインとアドレス演算のパイプラインは、共に、プライオリティ取得(P−stage)、レジスタ読み出し(B−stage)、演算(X−stage)の3ステージで処理されるように構成されている。
ら予め選択しておき、演算を実行する際には、ソースデータ(ソースオペランド)を1サイクルで演算器に供給することを可能にしている。さらに、ウィンドウ切り替え命令のデコードを契機に、切り替え先のウィンドウ(レジスタウィンドウ)のデータも、MRF10から予め選択するような制御を行っており、サブルーチン呼び出しの場合でも、命令が滞ることはない。
MRF301は、図2に詳細に示された8本のレジスタウィンドウ(8−Window)をブロックで示したものである。また、マルチプレクサ303は、図2の5個のマルチプレクサ231、232、241〜243を統合して示したものであり、MRF_RA1によって制御される。ROB(リオーダバッファ)31は、リネームレジスタを備え、アウトオブオーダで実行された演算結果を、インオーダでコミットされるまで保持する。ROB31の領域(エントリ)は、デコード時において確保され、コミット時に開放される。該エントリには、例えば、命令が書き込むレジスタのアドレスと、該レジスタの値の組が格納される。
本発明が適用可能なレジスタファイルは、MRF10のようなオーバーラップウィンドウ方式のレジスタファイルに限定されない。例えば、図16に示すようなフラット構成の巨大なレジスタファイルにも適用できる。
ータ読み出しを、MRF10内部にMRF_RA1とMRF_RA2と読み出しポートio0〜io2、l0、l1を設け、MRF10外部に、MRF10からレジスタのデータを読み出すための制御回路(レジスタ制御部210と命令制御部220)を設けることにより実現している。
したがって、本発明が適用可能なレジスタファイルは上記したレジスタファイルに限定されるものではない。例えば、グローバルレジスタ用のウィンドウを複数本備えるオーバーラップウィンドウ方式のレジスタファイルにも本発明を適用できる。また、ウィンドウ切り替え命令が実行する毎に、カレントウィンドウポインタ(CWP)が指定するカレントウィンドウのアドレスがシリアルではなくランダムに更新される構成のレジスタファイルにも、本発明は適用可能である。
レジスタウィンドウを複数備えるレジスタファイルと、
前記レジスタファイルに保持されているデータをオペランドとする命令を実行する演算手段と、
前記レジスタファイルが備える複数のレジスタウィンドウの中から、カレントウィンドウとなるレジスタウィンドウを指定するアドレス情報を保持するカレントウィンドウポインタ手段と、
前記カレントウィンドウの切り替えを指示するウィンドウ切り替え命令がデコードされたとき、前記カレントウィンドウポインタ手段が保持する前記アドレス情報を更新し、前記ウィンドウ切り替え命令のデコードが開始されてからコミットが開始される直前までの間は、前記演算手段が、前記更新前のアドレス情報が指定する第1のレジスタウィンドウのデータと前記更新後のアドレス情報が指定する第2のレジスタウィンドウのデータを、
前記レジスタファイルから読み出しできるように制御する制御手段と、
を備えたことを特徴とする演算処理装置。
(付記2)
付記1記載の演算処理装置であって、
前記制御手段は、前記ウィンドウ切り替え命令のコミットが開始されたとき、前記演算手段が、前記更新後のアドレス情報が指定する前記第2のレジスタウィンドウのデータのみを、前記レジスタファイルから読み出しできるように制御することを特徴とする。
(付記3)
付記1記載の演算処理装置であって、
前記制御手段は、
前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを前記レジスタファイルから読み出すウィンドウデータ読み出し手段と、
前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、該ウィンドウデータ読み出し手段によって読み出された前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる複数のレジスタのデータの中から、前記演算手段が必要とするレジスタのデータを選択して出力するレジスタデータ選択出力手段と、
を備えることを特徴とする。
(付記4)
付記3記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、
前記ウィンドウ切り替え命令のコミットが開始されると、前記第2のジスタウィンドウに含まれるレジスタのデータのみを前記レジスタファイルから読み出すことを特徴とする。
(付記5)
付記3記載の演算処理装置であって、
前記レジスタファイルは、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを出力する複数の読み出しポートを備え、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを前記複数の読み出しポートから出力し、
前記レジスタデータ選択出力手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記複数の読み出しポートから出力される前記第1のレジスタウィンドウのデータと前記第2のレジスタデータウィンドウに含まれる複数のレジスタのデータの中から、前記演算手段が必要とするレジスタのデータのみを選択して出力することを特徴とする。
(付記6)
付記5記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のコミットが開始されると、前記第2のジスタウィンドウのデータのみを前記複数のポートのいずれかのポートから出力することを特徴とする。
(付記7)
付記5記載の演算処理装置であって、
前記複数の読み出しポートの各ポートは、前記第1のレジスタウィンドウのデータ出力と前記第2のレジスタウィンドウのデータ出力に兼用されることを特徴とする。
(付記8)
付記7記載の演算処理装置であって、
前記複数の読み出しポートの各ポートは、前記ウィンドウ切り替え命令が実行される毎に、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを交互に切り替え出力することを特徴とする。
(付記9)
付記5記載の演算処理装置であって、
前記レジスタウィンドウは、親ルーチンと子ルーチンとの間で引き数の授受に使用されるレジスタを備える第1のウィンドウと、個々のルーチンが個別に使用するレジスタを備える第2のウィンドウと、全てのルーチンで共有されるレジスタを備える第3のウィンドウを備え、
前記複数の読み出しポートは、前記第1のウィンドウのデータを出力する第1の読み出しポートと、前記第2のウィンドウのデータを出力する第2の読み出しポートを含み、前記第1の読み出しポートの本数と前記第2の読み出しポートの本数は、共に、複数であることを特徴とする。
(付記10)
付記9記載の演算処理装置であって、
前記第1のウィンドウは、子ルーチンに渡す引き数を格納する第4のウィンドウと親ルーチンから受け取る引き数を格納する第5のウィンドウとルーチンが専用に使用する第6のウィンドウを備え、前記レジスタウィンドウ内において、前記第4のウィンドウと前記第5のウィンドウは、それぞれ、一方の端と他方の端に配置されることを特徴とする。
(付記11)
付記10記載の演算処理装置であって、
前記レジスタファイルの複数のレジスタウィンドウは論理的に連結されており、互いに隣接する一方のレジスタウィンドウの前記第4のウィンドウと他方のレジスタウィンドウの第5のウィンドウは共有されることを特徴とする。
(付記12)
付記11記載の演算処理装置であって、
前記レジスタファイルの複数のレジスタウィンドウは論理的にリング状に連結されていることを特徴とする。
(付記13)
付記12記載の演算処理装置であって、
前記複数の第1の読み出しポートは、前記第4のウィンドウのデータと前記第5のデータを出力する第1のグループと、前記第6のウィンドウのデータを出力する第2のグループに分けられていることを特徴とする。
(付記14)
付記13記載の演算処理装置であって、
前記第1のグループに属する前記第1の読み出しポートの本数は前記第4のウィンドウと前記第5のウィンドウの総数よりも1つ大きな数であり、前記第2のグループに属する前記第2の読み出しポートの本数は前記第5のウィンドウの個数よりも1つ大きな数であることを特徴とする。
(付記15)
付記11乃至14のいずれか1項に記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令が実行される毎に、前記第4乃至第6の各ウィンドウのデータが出力される前記第1の読み出しポートをサイクリックに切り替えることを特徴とする。
(付記16)
付記9乃至15のいずれか1項に記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、ウィンドウ切り替え命令のデコード開始からコミットが完了するまでの間は、前記複数の第1の読み出しポートを介して前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第1のウィンドウのデータを出力し、前記複数の第2の読み出しポートを介して前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第2のウィンドウのデータを出力することを特徴とする。
(付記17)
付記16記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、ウィンドウ切り替え命令のデコード開始からコミットが完了するまでの間は、全ての前記第1の読み出しポートと全ての前記第2の読み出しポートを介して前記データ出力を行うことを特徴とする。
(付記18)
付記16または17記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のコミットが開始されると、前記第1のレジスタウィンドウに含まれる第1のウィンドウのデータのみを前記複数の第1の読み出しポートの一部のポートから出力し、前記第1のレジスタウィンドウに含まれる第2のウィンドウのデータのみを前記複数の第2の読み出しポートの一部のポートから出力することを特徴とする。
(付記19)
付記18記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令の実行が開始される毎に、前記第1のレジスタウィンドウのデータを出力する前記第1の読み出しポートと、前記第2のレジスタウィンドウのデータを出力する前記第2の読み出しポートを切り替えることを特徴とする。
(付記20)
付記9乃至19のいずれか1項に記載の演算処理装置であって、
前記第1の読み出しポートと前記第2の読み出しポートには、それぞれ、前記第1のウィンドウのデータと前記第2のウィンドウのデータが入力されるマルチプレクサが設けられており、
前記ウィンドウデータ読み出し手段は、前記第1の読み出しポートと前記第2の読み出しポートの各ポートに設けられたマルチプレクサを制御して、前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第1のウィンドウのデータと前記第2のウィンドウのデータを該マルチプレクサから選択出力させ、
前記レジスタデータ選択出力手段は、前記マルチプレクサから出力される前記第1のウィンドウのデータと前記第2のウィンドウのデータの中から前記演算手段が必要とするレジスタのデータを選択して出力することを特徴とする。
(付記21)
付記3乃至20のいずれか1項に記載の演算処理装置であって
前記レジスタデータ選択出力手段は、さらに、前記レジスタファイルから前記演算手段が必要とするデータを読み出して、そのデータを出力させることを特徴とする。
(付記22)
付記3記載の演算処理装置であって、
前記制御手段は、さらに、
ウィンドウ切り替え命令が実行される度に、前記カレントウィンドウがアドレス順に切り替わってサイクリックに使用されるように、前記カレントウィンドウポインタ手段が保持するアドレス情報を更新するカレントウィンドウポインタ制御手段と、
前記サイクリックに切り替わるアドレス情報の全てのステートに関するステート情報を格納する記憶手段と、
前記カレントウィンドウポインタ手段が保持するアドレス情報が更新されたとき、更新後のアドレス情報に対応するステート情報を前記記憶手段から読み出し、そのステート情報を前記ウィンドウデータ読み出し手段に出力するステート情報出力手段と、
を備えることを特徴とする。
(付記23)
付記22記載の演算処理装置であって、
前記記憶手段に記憶されるステート情報は、何回目のサイクリックであるかを示すサイクリック情報とカレントウィンドウのアドレス情報の組であることを特徴とする。
(付記24)
付記1記載の演算処理装置であって、さらに、
前記ウィンドウ切り替え命令のデコード後に、前記ウィンドウ切り替え命令の後続命令を一定サイクルだけストールさせるパイプライン制御手段を、
備えることを特徴とする。
(付記25)
付記1記載の演算処理装置であって、さらに、
レジスタリネーミングを行うリネームレジスタ手段と、
第1の命令と、該第1の命令の後に実行される後続命令が真のデータ依存関係にあるとき、前記第1の命令の実行結果を前記レジスタファイルから読み出し可能となるまで、前記実行結果を前記リネームレジスタ手段が保持するように制御するリネームレジスタ制御手段と、
を備えることを特徴とする。
(付記26)
付記25記載の演算処理装置であって、
前記リネームレジスタ制御手段は、前記第1の命令の実行結果を前記リネームレジスタ手段に格納してから前記レジスタファイルから読み出すまでに複数サイクルを要する場合、
前記実行結果を前記レジスタファイルから読み出し可能になるまで、前記実行結果を前記リネームレジスタ手段が保持するように制御することを特徴とする。
(付記27)
付記26記載の演算処理装置であって、
パイプラインのコミットステージを伸ばすことを特徴とする。
(付記28)
付記25または26記載の演算処理装置であって、
前記第1の命令の直後の第1の後続命令は、前記第1の命令の演算結果をバイパスして使用することを特徴とする。
(付記29)
付記25または26記載の演算処理装置であって、
前記第1の後続命令の次の命令である第2の後続命令は、前記第1の命令の演算結果を演算結果レジスタから読み出して使用することを特徴とする。
(付記30)
付記25または26記載の演算処理装置であって、
前記第2の後続命令の次の命令である第3の後続命令は、前記第1の命令の演算結果をリネームレジスタから読み出して使用することを特徴とする。
(付記31)
付記25記載の演算処理装置であって、
前記第1の命令から数えて後ろから4番目に位置する第4の後続命令は、前記第1の命令の演算結果をリネームレジスタから読み出して使用することを特徴とする。
(付記32)
付記1記載の演算処理装置であって、
前記レジスタファイルは、論理的にリング状なレジスタウィンドウを備えることを特徴とする。
(付記33)
付記32記載の演算処理装置であって、
前記レジスタファイルの互いに隣接する2つのレジスタウィンドウの一部のウィンドウは共有されることを特徴とする。
(付記34)
付記32記載の演算処理装置であって、
前記レジスタウィンドウは、親ルーチンと子ルーチンとの間で引き数の授受に使用されるレジスタを備える第1のウィンドウと、個々のルーチンが個別に使用するレジスタを備
える第2のウィンドウと、全てのルーチンで共有されるレジスタを備える第3のウィンドウを備えることを特徴とする。
(付記35)
付記34記載の演算処理装置であって、
前記第1のウィンドウは、子ルーチンに渡す引き数を格納する第4のウィンドウと親ルーチンから受け取る引き数を格納する第5のウィンドウとルーチンが専用に使用する第6のウィンドウを備え、前記レジスタウィンドウ内において、前記第4のウィンドウと前記第5のウィンドウは、それぞれ、一方の端と他方の端に配置されることを特徴とする。
(付記36)
付記35記載の演算処理装置であって、
互いに隣接する一方のレジスタウィンドウの前記第4のウィンドウと他方のレジスタウィンドウの第5のウィンドウは共有されることを特徴とする。
10 MRF
100 レジスタファイル
231、232、241〜243、261、271 マルチプレクサ
251 inレジスタ/outレジスタ(インレジスタ/アウトレジスタ)用ウィンドウ252 localレジスタ(ローカルレジスタ)用ウィンドウ
253 globalレジスタ(グローバルレジスタ)用ウィンドウ
io0〜io2 インレジスタ/アウトレジスタ・ウィンドウの読み出しポート
l0、l1 ローカルレジスタウィンドの読み出しポート
MRF_RA1、MRF_RA2 レジスタ
20 制御部
210 レジスタ制御部
211 ポート割り当て制御部テーブル
215 ポート割り当てステート
212 SETレジスタ
213 CWPレジスタ
214 set、cwp制御装置
220 命令制御部
221 ウィンドウ切り替え命令の後続命令の実行タイミング制御機能
222 リネームレジスタ開放制御機能
223 MRF_RA2の制御機能
30 演算部30
31 ROB(リオーダバッファ)
301 MRF
303、311〜314、341〜344、351〜354、371 マルチプレクサ
320〜324、361〜364、381 レジスタ
331 ALU/SFT/VIS演算器
332 乗算器(MPY)
333 除算器(DVD)
335、336 アドレス生成器(AGEN)
Claims (20)
- レジスタウィンドウを複数備えるレジスタファイルと、
前記レジスタファイルに保持されているデータをオペランドとする命令を実行する演算手段と、
前記レジスタファイルが備える複数のレジスタウィンドウの中から、カレントウィンドウとなるレジスタウィンドウを指定するアドレス情報を保持するカレントウィンドウポインタ手段と、
前記カレントウィンドウの切り替えを指示するウィンドウ切り替え命令がデコードされたとき、前記カレントウィンドウポインタ手段が保持する前記アドレス情報を更新し、前記ウィンドウ切り替え命令のデコードが開始されてからコミットが開始される直前までの間は、前記演算手段が、前記更新前のアドレス情報が指定する第1のレジスタウィンドウのデータと前記更新後のアドレス情報が指定する第2のレジスタウィンドウのデータを、前記レジスタファイルから読み出しできるように制御する制御手段と、
を備えたことを特徴とする演算処理装置。 - 請求項1記載の演算処理装置であって、
前記制御手段は、前記ウィンドウ切り替え命令のコミットが開始されたとき、前記演算手段が、前記更新後のアドレス情報が指定する前記第2のレジスタウィンドウのデータのみを、前記レジスタファイルから読み出しできるように制御することを特徴とする。 - 請求項1記載の演算処理装置であって、
前記制御手段は、
前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを前記レジスタファイルから読み出すウィンドウデータ読み出し手段と、
前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、該ウィンドウデータ読み出し手段によって読み出された前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる複数のレジスタのデータの中から、前記演算手段が必要とするレジスタのデータを選択して出力するレジスタデータ選択出力手段と、
を備えることを特徴とする。 - 請求項3記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、
前記ウィンドウ切り替え命令のコミットが開始されると、前記第2のジスタウィンドウに含まれるレジスタのデータのみを前記レジスタファイルから読み出すことを特徴とする。 - 請求項3記載の演算処理装置であって、
前記レジスタファイルは、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを出力する複数の読み出しポートを備え、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを前記複数の読み出しポートから出力し、
前記レジスタデータ選択出力手段は、前記ウィンドウ切り替え命令のデコード開始からコミット開始の直前まで、前記複数の読み出しポートから出力される前記第1のレジスタウィンドウのデータと前記第2のレジスタデータウィンドウに含まれる複数のレジスタのデータの中から、前記演算手段が必要とするレジスタのデータのみを選択して出力することを特徴とする。 - 請求項5記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のコミットが開始されると、前記第2のジスタウィンドウのデータのみを前記複数のポートのいずれかのポートから出力することを特徴とする。 - 請求項5記載の演算処理装置であって、
前記複数の読み出しポートの各ポートは、前記第1のレジスタウィンドウのデータ出力と前記第2のレジスタウィンドウのデータ出力に兼用されることを特徴とする。 - 請求項7記載の演算処理装置であって、
前記複数の読み出しポートの各ポートは、前記ウィンドウ切り替え命令が実行される毎に、前記第1のレジスタウィンドウのデータと前記第2のレジスタウィンドウのデータを交互に切り替え出力することを特徴とする。 - 請求項5記載の演算処理装置であって、
前記レジスタウィンドウは、親ルーチンと子ルーチンとの間で引き数の授受に使用されるレジスタを備える第1のウィンドウと、個々のルーチンが個別に使用するレジスタを備える第2のウィンドウと、全てのルーチンで共有されるレジスタを備える第3のウィンドウを備え、
前記複数の読み出しポートは、前記第1のウィンドウのデータを出力する第1の読み出しポートと、前記第2のウィンドウのデータを出力する第2の読み出しポートを含み、前記第1の読み出しポートの本数と前記第2の読み出しポートの本数は、共に、複数であることを特徴とする。 - 請求項9記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、ウィンドウ切り替え命令のデコード開始からコミットが完了するまでの間は、前記複数の第1の読み出しポートを介して前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第1のウィンドウのデータを出力し、前記複数の第2の読み出しポートを介して前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第2のウィンドウのデータを出力することを特徴とする。 - 請求項10記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、ウィンドウ切り替え命令のデコード開始からコミットが完了するまでの間は、全ての前記第1の読み出しポートと全ての前記第2の読み出しポートを介して前記データ出力を行うことを特徴とする。 - 請求項10または11記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令のコミットが開始されると、前記第1のレジスタウィンドウに含まれる第1のウィンドウのデータのみを前記複数の第1の読み出しポートの一部のポートから出力し、前記第1のレジスタウィンドウに含まれる第2のウィンドウのデータのみを前記複数の第2の読み出しポートの一部のポートから出力することを特徴とする。 - 請求項12記載の演算処理装置であって、
前記ウィンドウデータ読み出し手段は、前記ウィンドウ切り替え命令の実行が開始される毎に、前記第1のレジスタウィンドウのデータを出力する前記第1の読み出しポートと、前記第2のレジスタウィンドウのデータを出力する前記第2の読み出しポートを切り替えることを特徴とする。 - 請求項9乃至13のいずれか1項に記載の演算処理装置であって、
前記第1の読み出しポートと前記第2の読み出しポートには、それぞれ、前記第1のウィンドウのデータと前記第2のウィンドウのデータが入力されるマルチプレクサが設けられており、
前記ウィンドウデータ読み出し手段は、前記第1の読み出しポートと前記第2の読み出しポートの各ポートに設けられたマルチプレクサを制御して、前記第1のレジスタウィンドウと前記第2のレジスタウィンドウに含まれる前記第1のウィンドウのデータと前記第2のウィンドウのデータを該マルチプレクサから選択出力させ、
前記レジスタデータ選択出力手段は、前記マルチプレクサから出力される前記第1のウィンドウのデータと前記第2のウィンドウのデータの中から前記演算手段が必要とするレジスタのデータを選択して出力することを特徴とする。 - 請求項3乃至14のいずれか1項に記載の演算処理装置であって
前記レジスタデータ選択出力手段は、さらに、前記レジスタファイルから前記演算手段が必要とするデータを読み出して、そのデータを出力させることを特徴とする。 - 請求項3記載の演算処理装置であって、
前記制御手段は、さらに、
ウィンドウ切り替え命令が実行される度に、前記カレントウィンドウがアドレス順に切り替わってサイクリックに使用されるように、前記カレントウィンドウポインタ手段が保持するアドレス情報を更新するカレントウィンドウポインタ制御手段と、
前記サイクリックに切り替わるアドレス情報の全てのステートに関するステート情報を格納する記憶手段と、
前記カレントウィンドウポインタ手段が保持するアドレス情報が更新されたとき、更新後のアドレス情報に対応するステート情報を前記記憶手段から読み出し、そのステート情報を前記ウィンドウデータ読み出し手段に出力するステート情報出力手段と、
を備えることを特徴とする。 - 請求項16記載の演算処理装置であって、
前記記憶手段に記憶されるステート情報は、何回目のサイクリックであるかを示すサイクリック情報とカレントウィンドウのアドレス情報の組であることを特徴とする。 - 請求項1記載の演算処理装置であって、さらに、
前記ウィンドウ切り替え命令のデコード後に、前記ウィンドウ切り替え命令の後続命令を一定サイクルだけストールさせるパイプライン制御手段を備えることを特徴とする。 - 請求項1記載の演算処理装置であって、さらに、
レジスタリネーミングを行うリネームレジスタ手段と、
第1の命令と、該第1の命令の後に実行される後続命令が真のデータ依存関係にあるとき、前記第1の命令の実行結果を前記レジスタファイルから読み出し可能となるまで、前記実行結果を前記リネームレジスタ手段が保持するように制御するリネームレジスタ制御手段と、
を備えることを特徴とする。 - 請求項19記載の演算処理装置であって、
前記リネームレジスタ制御手段は、前記第1の命令の実行結果を前記リネームレジスタ手段に格納してから前記レジスタファイルから読み出すまでに複数サイクルを要する場合、
前記実行結果を前記レジスタファイルから読み出し可能になるまで、前記実行結果を前記リネームレジスタ手段が保持するように制御することを特徴とする。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007069613A JP5130757B2 (ja) | 2007-03-16 | 2007-03-16 | 演算処理装置及び演算処理装置の制御方法 |
US12/037,395 US20080229080A1 (en) | 2007-03-16 | 2008-02-26 | Arithmetic processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007069613A JP5130757B2 (ja) | 2007-03-16 | 2007-03-16 | 演算処理装置及び演算処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008234075A true JP2008234075A (ja) | 2008-10-02 |
JP5130757B2 JP5130757B2 (ja) | 2013-01-30 |
Family
ID=39763866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007069613A Expired - Fee Related JP5130757B2 (ja) | 2007-03-16 | 2007-03-16 | 演算処理装置及び演算処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080229080A1 (ja) |
JP (1) | JP5130757B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2821917A1 (en) | 2013-07-04 | 2015-01-07 | Fujitsu Limited | Processing device and control method of processing device |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9055517B2 (en) * | 2007-02-26 | 2015-06-09 | Blackberry Limited | System and method of user-directed dynamic domain selection |
JP5229321B2 (ja) * | 2008-08-08 | 2013-07-03 | 富士通株式会社 | 演算処理装置 |
JP4830164B2 (ja) * | 2009-07-07 | 2011-12-07 | エヌイーシーコンピュータテクノ株式会社 | 情報処理装置及びベクトル型情報処理装置 |
KR20110103256A (ko) * | 2010-03-12 | 2011-09-20 | 삼성전자주식회사 | 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법 |
JP7043985B2 (ja) * | 2018-06-13 | 2022-03-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02148223A (ja) * | 1988-11-30 | 1990-06-07 | Toshiba Corp | レジスタ退避復活装置 |
JPH0520010A (ja) * | 1991-07-16 | 1993-01-29 | Matsushita Electric Ind Co Ltd | レジスタフアイル |
JPH0916409A (ja) * | 1995-06-30 | 1997-01-17 | Matsushita Electric Ind Co Ltd | マイクロコンピュータ |
JP2003196086A (ja) * | 2001-12-28 | 2003-07-11 | Fujitsu Ltd | レジスタウィンドウ方式によるレジスタファイル及びその制御方法 |
JP2007087108A (ja) * | 2005-09-22 | 2007-04-05 | Fujitsu Ltd | 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5159680A (en) * | 1988-07-28 | 1992-10-27 | Sun Microsystems, Inc. | Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register |
JP2000353092A (ja) * | 1999-06-09 | 2000-12-19 | Nec Corp | 情報処理装置及びそのレジスタファイル切替方法 |
US7080237B2 (en) * | 2002-05-24 | 2006-07-18 | Sun Microsystems, Inc. | Register window flattening logic for dependency checking among instructions |
JP2005284646A (ja) * | 2004-03-29 | 2005-10-13 | Toshiba Corp | マイクロプロセッサ |
US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
-
2007
- 2007-03-16 JP JP2007069613A patent/JP5130757B2/ja not_active Expired - Fee Related
-
2008
- 2008-02-26 US US12/037,395 patent/US20080229080A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02148223A (ja) * | 1988-11-30 | 1990-06-07 | Toshiba Corp | レジスタ退避復活装置 |
JPH0520010A (ja) * | 1991-07-16 | 1993-01-29 | Matsushita Electric Ind Co Ltd | レジスタフアイル |
JPH0916409A (ja) * | 1995-06-30 | 1997-01-17 | Matsushita Electric Ind Co Ltd | マイクロコンピュータ |
JP2003196086A (ja) * | 2001-12-28 | 2003-07-11 | Fujitsu Ltd | レジスタウィンドウ方式によるレジスタファイル及びその制御方法 |
JP2007087108A (ja) * | 2005-09-22 | 2007-04-05 | Fujitsu Ltd | 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2821917A1 (en) | 2013-07-04 | 2015-01-07 | Fujitsu Limited | Processing device and control method of processing device |
JP2015014891A (ja) * | 2013-07-04 | 2015-01-22 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5130757B2 (ja) | 2013-01-30 |
US20080229080A1 (en) | 2008-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0679991B1 (en) | Data processor for variable width operands | |
US8069340B2 (en) | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions | |
JP4610593B2 (ja) | デュアルスレッドプロセッサ | |
US6131157A (en) | System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor | |
US5761476A (en) | Non-clocked early read for back-to-back scheduling of instructions | |
US6161173A (en) | Integration of multi-stage execution units with a scheduler for single-stage execution units | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
US20080109640A1 (en) | Method For Changing A Thread Priority In A Simultaneous Multithread Processor | |
JP3919764B2 (ja) | 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 | |
US7093106B2 (en) | Register rename array with individual thread bits set upon allocation and cleared upon instruction completion | |
US20040193854A1 (en) | Multi-threaded processor and method of multi-threaded processing | |
WO2011155097A1 (ja) | 命令発行制御装置及び方法 | |
GB2501791A (en) | Subdivided register file and associated individual buffers for write operation caching in an out-of-order processor | |
JP5130757B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
EP0677188A1 (en) | SYSTEM AND METHOD FOR ASSIGNING LABELS TO INSTRUCTIONS TO CONTROL THE EXECUTION OF INSTRUCTIONS. | |
GB2496934A (en) | Multi-stage register renaming using dependency removal and renaming maps. | |
US20220214884A1 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
JP2006039815A (ja) | マルチスレッドプロセッサおよびレジスタ制御方法 | |
US20040215938A1 (en) | SMT flush arbitration | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
JP3611304B2 (ja) | 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法 | |
US7406587B1 (en) | Method and system for renaming registers in a microprocessor | |
JP3816844B2 (ja) | プロセッサ及び命令制御方法 | |
US11467841B1 (en) | Microprocessor with shared functional unit for executing multi-type instructions | |
US5841998A (en) | System and method of processing instructions for a processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091208 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110801 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110906 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111104 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120612 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120906 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20120918 |
|
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: 20121009 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121022 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151116 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |