JP5028774B2 - 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 - Google Patents

演算処理装置,情報処理装置,及びレジスタファイルの制御方法 Download PDF

Info

Publication number
JP5028774B2
JP5028774B2 JP2005275024A JP2005275024A JP5028774B2 JP 5028774 B2 JP5028774 B2 JP 5028774B2 JP 2005275024 A JP2005275024 A JP 2005275024A JP 2005275024 A JP2005275024 A JP 2005275024A JP 5028774 B2 JP5028774 B2 JP 5028774B2
Authority
JP
Japan
Prior art keywords
register
window
current
data
instruction
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
Application number
JP2005275024A
Other languages
English (en)
Other versions
JP2007087108A (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
Priority to JP2005275024A priority Critical patent/JP5028774B2/ja
Priority to US11/333,229 priority patent/US7343478B2/en
Priority to EP06250462A priority patent/EP1768020B1/en
Priority to DE602006013079T priority patent/DE602006013079D1/de
Priority to CNB2006100576399A priority patent/CN100394382C/zh
Priority to KR1020060017688A priority patent/KR100777772B1/ko
Publication of JP2007087108A publication Critical patent/JP2007087108A/ja
Application granted granted Critical
Publication of JP5028774B2 publication Critical patent/JP5028774B2/ja
Expired - Fee Related 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B63SHIPS OR OTHER WATERBORNE VESSELS; RELATED EQUIPMENT
    • B63CLAUNCHING, HAULING-OUT, OR DRY-DOCKING OF VESSELS; LIFE-SAVING IN WATER; EQUIPMENT FOR DWELLING OR WORKING UNDER WATER; MEANS FOR SALVAGING OR SEARCHING FOR UNDERWATER OBJECTS
    • B63C9/00Life-saving in water
    • B63C9/08Life-buoys, e.g. rings; Life-belts, jackets, suits, or the like
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2208/00Characteristics or parameters related to the user or player
    • A63B2208/03Characteristics or parameters related to the user or player the user being in water
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2225/00Miscellaneous features of sport apparatus, devices or equipment
    • A63B2225/60Apparatus used in water
    • A63B2225/605Floating
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B63SHIPS OR OTHER WATERBORNE VESSELS; RELATED EQUIPMENT
    • B63CLAUNCHING, HAULING-OUT, OR DRY-DOCKING OF VESSELS; LIFE-SAVING IN WATER; EQUIPMENT FOR DWELLING OR WORKING UNDER WATER; MEANS FOR SALVAGING OR SEARCHING FOR UNDERWATER OBJECTS
    • B63C9/00Life-saving in water
    • B63C2009/0023Particular features common to inflatable life-saving equipment

Description

本発明は、レジスタウィンドウを持つアーキテクチャの情報処理装置において、アウトオブオーダ命令実行方式を採用した場合に、レジスタウィンドウの切り替えを追い越して命令の実行順序を入れ替えることができるようにするための技術に関する。
従来から、縮小命令セット型アーキテクチャを採用する情報処理装置(RISC:Reduced Instruction Set Computer)には、複数のレジスタセット(以下、レジスタウィンドウという)を持ち、サブルーチンのコール/リターン時に発生するレジスタのメモリスタック上への退避/復帰を不要にするものがある。
レジスタウィンドウはリング状に連結され、その管理はレジスタウィンドウ番号(以下、ウィンドウ番号と呼ぶ)で行われる。例えば、ウィンドウ番号が0〜7の8つのレジスタウィンドウを備え、0、1、2、・・・、7といった順番に使用される。使用中のウィンドウ番号はウィンドウ番号を保持するレジスタ(以下、CWP(Current Window Pointer)という)によって保持される。
図5はリング状レジスタファイルAの構成を示した図である。このレジスタファイルAでは、各レジスタウィンドウW0〜W7がオーバーラップしながらリング状に連結されている。各レジスタウィンドウW0〜W7のそれぞれは、例えば、32本の64ビットレジスタからなり、そのうち8本のレジスタ(Globalレジスタ;図示略)は全てのレジスタウィンドウW0〜W7で共通であり、それ以外の24本のレジスタは、8本ずつに3つの領域(図中の“ins”,“locals”,“outs”)に区切られて構成されている。
つまり、レジスタウィンドウW0を例にあげると、左端の8本のレジスタW0insは1つ前のレジスタウィンドウW7のレジスタW7outsとオーバーラップし共通する(つまり、レジスタW7outsとしても機能する)ものである。また、中央の8本のレジスタW0localsはどことも重複せずに独自のデータを保持する。最後に右端の8本のレジスタW0outsは1つ後のレジスタウィンドウW1のレジスタW1insと共通である。なお、レジスタウィンドウW1〜W7もレジスタウィンドウW0と同様にinsの8本のレジスタが一つ前のoutsのレジスタウィンドウの8本のレジスタと共通し、中央の8本のレジスタがどことも重複せずに独自のデータを保持し、outsの8本のレジスタが一つ後のinsのレジスタウィンドウの8本のレジスタとオーバーラップし共通する。
このような図5に示すレジスタファイルAを、オーバラップレジスタウィンドウと呼ぶ。
このレジスタファイルAにおいて、CWPが示す現在のレジスタウィンドウW0〜W7を切り替えるレジスタウィンドウ切替命令(以下、単に切替命令ともいう)には、CWPをインクリメントするSAVE命令と、CWPをデクリメントするRESTORE命令(RETURN命令)とがある。以下、レジスタウィンドウ切替命令をSAVE命令、RESTORE命令と称する。なお、図5においてCWPはレジスタウィンドウW0を示している。
レジスタファイルAは、ウィンドウ数n=8(レジスタウィンドウW0〜W7)で構成した場合であり、local領域が8本×8ウィンドウ=64本、オーバラップしているin/out領域が8本×8ウィンドウ=64本、globalレジスタ(不図示)が8本の合わせて136本のレジスタを持ち、その全てのレジスタに読み書きできる必要がある。
このような大きなレジスタファイルAからデータを読み出す回路の速度と規模が問題であったため、従来から図6に示すごとく構成された情報処理装置100がある。この情報処理装置100は、マスタレジスタファイル(MRF:Master Register File)101,ワーキングレジスタファイル(WRF:Working Register File)102,及び演算器103をそなえて構成される。なお、演算器103は命令を実行する実行部(図中“Execution unit”と表記)と記憶部(図中“Memory unit”と表記)とから構成される。
一般に、レジスタウィンドウはウィンドウ数が多くなると非常に大きなレジスタファイルが必要になり(8ウィンドウでは136本)、演算器へオペランドを高速に供給することが困難になる。
そのため、図6のように全てのウィンドウを保持するMRF101に加えて、このMRF101内のCWPで示される現在のレジスタウィンドウのデータのコピーを保持するサブセットとしてのWRF102を具備し、演算器103へのオペランド供給は、このWRF102により行なう。WRF102はCWPで示されるウィンドウのみを保持するので、容量は32エントリとMRF101に比べて小さくでき、その結果、演算器103の読み出しを高速化できる。
しかし、情報処理装置100のような構成を取ると、WRF102中にはCWPが示す現在のレジスタウィンドウ一つ分のレジスタしか存在しないため、SAVE命令又はRESTORE命令が実行されると、その後続命令で必要となるオペランドをWRF102から供給できなくなるという新たな問題が生じる。
そのため、SAVE命令又はRESTORE命令が実行されると、WRF102を新しいウィンドウの値に入れ替えなければならず、MRF101からWRF102へのウィンドウ(データ)転送処理が発生し、その間以後の命令実行はストールすることになる。
また、アウトオブオーダ命令実行により命令の処理順序を入れ替えて処理する情報処理装置では、プログラムの順序に関係なく処理可能な命令から実行を行うが、SAVE命令やRESTORE命令に後続する命令は、たとえ処理可能になったとしてもWRF102中にSAVE/RESTORE実行後のウィンドウが転送されるまでは、命令を実行することができない。
このような制約は同時命令発行数の大きいアウトオブオーダ命令実行方式の情報処理装置においては非常に大きな性能低下を引き起こす。アウトオブオーダ命令実行方式の情報処理装置では、多くの命令をフェッチし、バッファにそれらの命令を蓄えておき、そのバッファの中から実行可能な命令をプログラムに指定された実行順序を入れ替えて実行することにより、命令実行のスループットを上げている。
したがって、上記のようなSAVE命令やRESTORE命令を挟んでの命令実行順序の変更ができないという制約があると、SAVE命令やRESTORE命令が出現する度にアウトオブオーダ処理機構が機能せず大幅な性能低下を招くことになる。
そこで、図7に示すごとく、WRF112にCWPが示す現在のレジスタウィンドウのデータ(G,L1,Io1,Io2)に加えて、当該レジスタウィンドウの前後のレジスタウィンドウ(L2,Io3,L3,Io4)のデータを保持する(すなわち、CWP+1,CWP−1で示されるレジスタウィンドウのレジスタを予め先見転送する)ように構成して、SAVE命令やRESTORE命令後の命令に対してもアウトオブオーダ実行させることができるようした情報処理装置110がある(例えば、下記特許文献1参照)。
この情報処理装置110は、MRF111からWRF112へデータを転送する際に、データをラッチするためのレジスタ(ここでは8本×8バイト)113が、MRF111とWRF112との間に実装されている。
そして、WRF112には、図8に示すごとく、CWPが示す現在のレジスタウィンドウ(ここでは、CWPが現在示すレジスタウィンドウを“CWP”で表わし、CWPの一つ次のレジスタウィンドウ(現在のCWPをインクリメントした後のレジスタウィンドウ)を“CWP+1”で表わし、CWPの一つ前のレジスタウィンドウ(現在のCWPをデクリメントした後のレジスタウィンドウ)を“CWP−1”で表わす。なお、以下の説明においてもレジスタウィンドウW0〜W7を上記のCWPとの関係に基づいて“CWP”,“CWP+1”,“CWP−1”で表わす場合がある。)のレジスタである、CWPのIns(CWP−1のOutsと共通),CWPのLocals,CWPのOuts(CWP+1のInsと共通),及びCWPのGlobalsの内容が保持されるとともに、RESTORE命令実行後の命令で必要なレジスタウィンドウのレジスタであるCWP−1のIns,CWP−1のLocals、及び、SAVE命令実行後の命令で必要なレジスタウィンドウのレジスタであるCWP+1のOuts,CWP+1のLocalsが保持される。
したがって、この情報処理装置110によれば、図9に示すごとく、例えば、CWPがレジスタウィンドウW3を示している場合、SAVE命令が実行(図中の両矢印“E”参照)されるまでは、WRF112がレジスタウィンドウW2〜W4のデータを保持しているので、演算器103は、レジスタウィンドウW2〜W4の命令を実行することができる。なお、図9において“D”の両矢印は命令のデコード(Decode;Fetch, Issueサイクル)を示し、“E”の両矢印は命令の実行(Execute;Dispatch, Execute, Update Bufferサイクル)を示し、“W”の両矢印は命令の完了(Write back;Commitサイクル)を示している。
そして、SAVE命令実行後、CWPがレジスタウィンドウW4を示すので、情報処理装置110はレジスタ113を介してレジスタウィンドウW5のデータをMRF111からWRF112に転送する。その結果、WRF112にはレジスタウィンドウW3〜W5のデータを保持することになり、演算器103はレジスタウィンドウW3〜W5の命令を実行することができる。
なお、この情報処理装置110では、演算器103はSAVE命令の実行前にレジスタウィンドウW4、もしくは、RESTORE命令の実行前にレジスタウィンドウW2の命令を実行することができる。
特開2003−196086号公報
しかしながら、上述した従来の情報処理装置110では、WRF112が3つ分のレジスタウィンドウのデータを保持するために、ラッチ用のレジスタ113の8本と、WRF112の64本との合計72本のレジスタをそなえていなければならず、又図6に示す情報処理装置100のWRF102に対して40本のレジスタを追加しなければならず、ハードウェア資源が増大してしまう。
したがって、WRF112及び演算器103へデータを読み出すための選択回路の面積(回路規模)が大きくなってしまうとともに、これに伴って、演算器103によるWRF112からのデータリードのスループットが遅くなってしまう。
本発明は、このような課題に鑑み創案されたもので、レジスタウィンドウ及びアウトオブオーダ実行方式を採用する情報処理装置において、ハードウェア資源を低減させるとともにデータリードのスループットを向上することを目的とする。
上記目的を達成するために、本発明の演算処理装置は、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組を含む複数のレジスタウィンドウがそれぞれリング状に構成される少なくとも一つのレジスタファイルと、前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、前記カレントウィンドウポインタが示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、前記レジスタウィンドウの切替を実行するウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、記ウィンドウ切替命令を前記演算部がデコードした場合前記ウィンドウ切替命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ウィンドウ切替命令の実行を前記演算部が完了した場合、前記カレントレジスタが保持しているデータを前記置換バッファが保持するデータに置換して、前記ウィンドウ切替命令の実行の完了によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる制御と、を備えることを特徴とする。
さらに、本発明の演算処理装置は、前記演算が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行うことが好ましい。
さらに、本発明の演算処理装置は、前記演算が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行うことが好ましい。
さらに、本発明の演算処理装置は、前記レジスタファイルにおいて、互いに隣接する2つのレジスタウィンドウのうちの一方のレジスタウィンドウのinレジスタと、他方のレジスタウィンドウのoutレジスタとが共有されることが好ましい。
さらに、本発明の演算処理装置は、前記演算が前記ウィンドウ切替命令をデコードした場合には、前記制御が、前記ウィンドウ切替命令の実行によって前記カレントウィンドウポインタが指定する前記レジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記置換バッファへ転送することが好ましい。
さらに、本発明の演算処理装置は、前記演算が前記ウィンドウ切替命令の実行を完了した場合には、前記制御が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記カレントレジスタへ転送することが好ましい。
また、上記目的を達成するために、本発明の演算処理装置は、複数のウィンドウがそれぞれリング状に構成されるレジスタウィンドウを複数有するレジスタファイルと、前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、前記カレントウィンドウポインタが示すポインタ値により指定される前記1つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、前記カレントウィンドウポインタ部が保持するポインタ値を更新して前記レジスタウィンドウの切替を実行するポインタ書換命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、ポインタ書換命令を前記演算部がデコードした場合前記ポインタ書換命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ポインタ書換命令を前記演算部が実行して前記ポインタ値が更新された場合、前記レジスタファイルから前記更新後のポインタ値が示す1レジスタウィンドウ分のデータを、前記置換バッファから前記カレントレジスタへ転送する制御と、を備えることを特徴とする。
さらに、本発明の演算処理装置は、前記レジスタファイルのウィンドウは、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される1組のglobalレジスタとから構成され、前記レジスタファイルから前記置換バッファは前記置換バッファから前記カレントレジスタへ転送される前記1レジスタウィンドウ分のデータを、それぞれ前記globalレジスタ、outレジスタ、inレジスタ、localレジスタの順序により転送を行うことが好ましい。
また、上記目的を達成するために、本発明の情報処理装置は、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組を含む複数のレジスタウィンドウがそれぞれリング状に構成される少なくとも一つのレジスタファイルと、前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、前記カレントウィンドウポインタが示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、前記レジスタウィンドウの切替を実行するウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、記ウィンドウ切替命令を前記演算部がデコードした場合前記ウィンドウ切替命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ウィンドウ切替命令の実行を前記演算部が完了した場合、前記カレントレジスタが保持しているデータを前記置換バッファに保持するデータに置換して、前記ウィンドウ切替命令の実行の完了によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる制御と、を備える演算処理装置を有することを特徴とする。
さらに、本発明の情報処理装置は、前記演算が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行うことが好ましい。
さらに、本発明の情報処理装置は、前記演算が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行うことが好ましい。
さらに、本発明の情報処理装置は、前記レジスタファイルにおいて、互いに隣接する2つのレジスタウィンドウのうちの一方のレジスタウィンドウのinレジスタと、他方のレジスタウィンドウのoutレジスタとが共有されることが好ましい。
さらに、本発明の情報処理装置は、前記演算が前記ウィンドウ切替命令をデコードした場合には、前記制御が、前記ウィンドウ切替命令の実行によって前記カレントウィンドウポインタが指定する前記レジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記置換バッファへ転送することが好ましい。
さらに、本発明の情報処理装置は、前記演算が前記ウィンドウ切替命令の実行を完了した場合には、前記制御が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記カレントレジスタへ転送することが好ましい。
さらに、上記目的を達成するために、本発明の情報処理装置は、複数のウィンドウがそれぞれリング状に構成されるレジスタウィンドウを複数有するレジスタファイルと、前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、前記カレントウィンドウポインタが示すポインタ値により指定される前記1つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、前記カレントウィンドウポインタ部が保持するポインタ値を更新して前記レジスタウィンドウの切替を実行するポインタ書換命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、ポインタ書換命令を前記演算部がデコードした場合前記ポインタ書換命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ポインタ書換命令を前記演算部が実行して前記ポインタ値が更新された場合、前記レジスタファイルから前記更新後のポインタ値が示す1レジスタウィンドウ分のデータを、前記置換バッファから前記カレントレジスタへ転送する制御と、を備える演算処理装置を有することを特徴とする。
さらに、本発明の情報処理装置は、前記レジスタファイルのウィンドウは、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される1組のglobalレジスタとから構成され、前記レジスタファイルから前記置換バッファは前記置換バッファから前記カレントレジスタへ転送される前記1レジスタウィンドウ分のデータを、それぞれ前記globalレジスタ、outレジスタ、inレジスタ、localレジスタの順序により転送を行うことが好ましい。
また、上記目的を達成するために、本発明のレジスタファイルの制御方法は、のウィンドウがそれぞれリング状に構成されるレジスタファイルと、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、前記カレントウィンドウポインタ部が示すポインタ値により指定される前記1つのウィンドウが保持するデータを前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、前記レジスタウィンドウの切替を実行するウィンドウ切替命令と前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算とを備える演算処理装置レジスタファイルの制御方法において、前記ウィンドウ切替命令を前記演算部がデコードした場合前記ウィンドウ切替命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記置換バッファに転送記ウィンドウ切替命令の実行を前記演算部が完了した場合、前記カレントレジスタが保持しているデータを前記置換バッファに保持るデータに置換して前記ウィンドウ切替命令の実行の完了によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させることを特徴とする。
このように、本発明によれば、演算部がカレントレジスタ及び置換バッファのデータを読出可能に接続され、演算部によってSAVE命令やRESTORE命令等のウィンドウ切替命令がデコードされると、制御部が当該ウィンドウ切替命令によってカレントレジスタに対して、次に保持されるレジスタウィンドウのデータをマスタレジスタから読み出して置換バッファに保持させるように制御するので、演算部は当該ウィンドウ切替命令の実行を通り越して次のレジスタウィンドウのデータを用いる命令を、置換バッファから当該データを読み出すことによって確実に実行することができる。
したがって、上述した従来の技術のように、現在のレジスタウィンドウの前後のレジスタウィンドウを予め先読み転送して合計3つのレジスタウィンドウのデータを保持することなく、アウトオブオーダ命令実行方式による命令が実行可能になり、ウィンドウ切替命令の実行を通り越して次のレジスタウィンドウが保持するデータを用いる命令を実行するために必要なレジスタの容量(ハードウェア資源)を低減させることができる。
これにより、演算部による命令実行のためのカレントレジスタ及び置換バッファからのデータリードのスループットを向上することができる。
さらに、ハードウェア資源を低減させることができるので、レジスタのための実装面積を低減することができるとともに、消費電力を低減することもできる。
以下、図面を参照しながら本発明の実施の形態について説明する。
〔1〕本発明の一実施形態について
まず、図1に示すブロック図を参照しながら、本発明の一実施形態としての情報処理装置の構成について説明する。図1に示すように、本情報処理装置1は、マスタレジスタファイル(マスタレジスタ;MRF:Master Register File)10,カレントウィンドウレジスタ(カレントレジスタ;CWR:Current Window Register)20,カレントウィンドウリプレースバッファ(置換バッファ;CRB:Current window Replace Buffer)30,演算部(演算手段)40,及び制御部(制御手段)50をそなえて構成されている。
マスタレジスタファイル(以下、MRFという)10は、データを保持する複数のレジスタウィンドウからなり、上述した図5に示すリング状レジスタファイルAをそなえて構成されている。つまり、MRF10としてのレジスタファイルAは、レジスタウィンドウW0〜W7が隣り合うレジスタウィンドウと重複しながらリング状に連結された、オーバラップレジスタウィンドウ方式のレジスタファイルである。
なお、本情報処理装置1も図5に示すように、CWP(カレントウィンドウポインタ:Current Window Pointer)をそなえており(図示略)、このCWPが指し示すレジスタウィンドウW0〜W7のうちの一つを現在のレジスタウィンドウとして扱う。
カレントウィンドウレジスタ(以下、CWRという)20は、MRF10の複数のレジスタウィンドウW0〜W7のうちのCWPが示す現在のレジスタウィンドウWi(i=0,1,・・,7)を保持するものであり、ここではGlobalレジスタを含めた一つのレジスタウィンドウWiのみを保持する。
CWR20は、CWPが示す現在のレジスタウィンドウWiを一つ保持するために、Globalレジスタを保持するための8本×8バイトのレジスタ21と、Localsレジスタを保持するための8本×8バイトのレジスタ22と、InsもしくはOutsレジスタを保持するための8本×8バイトのレジスタ23,24との計32本×8バイトのレジスタから構成される。
カレントウィンドウリプレースバッファ(以下、CRBという)30は、MRF10とCWR20との間に実装され、CWR20に次に保持されるレジスタウィンドウWi−1もしくはレジスタウィンドウWi+1(ただし、i=0のときレジスタウィンドウW7もしくはレジスタウィンドウW1、i=7のときレジスタウィンドウW6もしくはレジスタウィンドウW0)のデータを保持するものである。
つまり、CRB30は、演算部40によって処理を実行されるウィンドウ切替命令(SAVE(セーブ)命令もしくはRESTORE(リストア)命令)によって、次にCWR20に保持されるべきレジスタウィンドウWi−1もしくはレジスタウィンドウWi+1のレジスタ(ここでは、その一部)を先読みして保持するものである。
CRB30は、次のレジスタウィンドウのLocalsレジスタを保持するための8本×8バイトのレジスタ31と、InsもしくはOutsレジスタを保持するための8本×8バイトのレジスタ32との計16本×8バイトのレジスタから構成される。
なお、CWPの値を直接書き換える命令(LOAD_CWP命令)によっても強制的にウィンドウ切替を行うことが出来る。CRB30のレジスタ31は、例えば、本情報処理装置1の初期動作時(つまり、CWR20が空の状態のとき)、プロセス切替時又はマルチスレッドプロセサにおけるスレッド切替時のように、新たな命令列の実行に必要なレジスタセットの内容を更新する必要がある場合には、当該LOAD_CWP命令によってGlobalレジスタをMRF10から読み出してCWR20に保持させる(転送する)ために使用される。
本実施形態においては、LOAD_CWP命令の完了時に1つウィンドウレジスタに保持されるデータをMRF→CRB→CWRの経路により転送を行う。又、MRF→CRB間及びCRB→CWR間の転送におけるバス幅が狭い場合、例えば、当該バス幅が8バイト×8本である場合には、Globals,Outs,Locals,Insの順に8本ずつパイプラインによる転送を行うこともできる。
従って、当該LOAD_CWP命令の完了を契機としてアウトオブオーダ実行をストールさせる(つまり、当該LOAD_CWP命令の完了前にアウトオブオーダ実行によって当該LOAD_CWP命令に後続する命令処理が実行されていても、これら命令処理の結果は一旦破棄され、当該LOAD_CWP命令の実行完了後に再度実行される)ことにより、CRBを中継バッファとして使用しながら1レジスタウィンドウ分のデータをMRFからCWRにコピーすることが可能となる。
演算部40は、CWR20に保持されたデータ及びCRB30に保持されたデータを読出(read)可能に接続され、これらCWR20及びCRB30に保持されたデータにかかる命令,CWPをインクリメントするSAVE命令,及びCWPをデクリメントするRESTORE命令(RETURN命令)を実行するものであり、ここでは、これらの命令をアウトオブオーダ実行方式(後述する図2参照)で実行する。
また、演算部40は、MRF10及びCWR20に対して書込み(write)可能に接続され、これらMRF10及びCWR20に対して同時に書込み処理を実行する。なお、演算部40が採用するアウトオブオーダ命令実行方式では、書込み処理が発生するCommitステージ(後述する図2参照)はインオーダで実行されるので、演算部40がCRB30に対して書込み(write)可能に接続される必要はない。
制御部50は、MRF10とCWR20との間、及び、CWR20とCRB30との間のデータの転送を制御するものである。
ここで、図2を参照しながら、本情報処理装置1が採用するアウトオブオーダ命令実行方式について説明する。なお、図2において命令パイプライン内における命令は、左から右に向けて流れるものとする。
図2に示すように、本情報処理装置1の演算部40は、命令パイプラインにおいて、命令のFetchステージ及びIssue(Decode)ステージは命令実行順序通りインオーダで命令処理を実行し、命令のDispatchステージ,Executeステージ,及びUpdate Bufferステージは命令実行順序とは関係なくアウトオブオーダで実行準備が出来たものから処理を実行し、最後に、Commitステージは命令実行順序通りインオーダで処理を実行する。
なお、Fetchステージはメモリ(図示略)から命令を読み出すステージであり、Issue(Decode)ステージは命令をデコードし、リザベーションステーション(図示略)に登録するステージであり、Dispatchステージはリザベーションステーションから演算器等の命令実行資源に対して命令を発行するステージであり、Executeステージは当該演算器等の命令実行資源において命令を実行するステージであり、Update Bufferステージは実行結果を待ち合わせるステージであり、Commitステージは当該命令処理による結果をメモリ(図示略)にライトバック(Write back)して完了するステージである。
そして、制御部50は、上述のように演算部40がアウトオブオーダ命令実行方式で命令を実行する際に、演算部40によってウィンドウ切替命令(SAVE命令/RESTORE命令)がデコードされると、当該ウィンドウ切替命令によってCWR20に次に保持されるべきレジスタウィンドウWi−1もしくはレジスタウィンドウWi+1のデータ(レジスタ)を、MRF10から読み出してCRB30に保持させるように制御する。
また、制御部50は、演算部によってかかるウィンドウ切替命令の実行が完了されると、CWR20が現在保持しているデータ(レジスタ)をCRB30に保持されているデータ(レジスタ)と置き換えることにより、当該ウィンドウ切替命令による次のレジスタウィンドウのデータをCWR20に保持させるように制御する。
ここで、図3及び図4(a)〜(c)を参照しながら、CWPが現在示すレジスタウィンドウがレジスタウィンドウW3であった場合であって、演算部40が、このレジスタウィンドウW3にかかる命令(以下、CWP=3の命令という),SAVE命令,レジスタウィンドウW4にかかる命令(以下、CWP=4の命令という)を実行する場合の、制御部50の具体的な動作及びCWR20,CRB30に保持されるデータについて説明する。
なお、図3において、“D”の両矢印は命令のデコード(Decode;図2のFetchステージ+Issueステージ)を示し、“E”の両矢印は命令の実行(Execute;図2のDispatchステージ+Executeステージ+Update Bufferステージ)を示し、“W”の両矢印は命令の完了(Write back;図2のCommitステージ)を示しており、演算部40はCWP=3の命令,SAVE命令,CWP=4の命令の順にデコードまでをインオーダで実行する。
まず、演算部40がCWP=3の命令をデコードするまでの間は、本情報処理装置1では、CWR20はCWPが示す現在のレジスタウィンドウ(ここではレジスタウィンドウW3;CWP=3)のデータを保持している。
すなわち、図4(a)に示すごとく、SAVE命令(又は、RESTORE命令)がデコードされる前の状態では、本情報処理装置1ではCWR20が、CWPが示す現在のレジスタウィンドウW3のデータであるGlobalsレジスタをレジスタ21に保持し、レジスタW3Locals(図中“Locals CWP=3”と表記)をレジスタ22に保持し、レジスタW3Ins(図中“Ins CWP=3”と表記)をレジスタ23に保持し、レジスタW3Outs(図中“Outs CWP=3”と表記)をレジスタ24に保持する。また、この状態では、CRB30はデータを保持しない。
したがって、このとき、演算部40はCWR20に保持されたレジスタウィンドウW3のデータを用いてCWP=3の命令のみ実行可能である。
次に、図3に示すように、演算部40がSAVE命令をデコードする(Issueステージを実行する)と、制御部50が、当該SAVE命令によってCWPが次に示すレジスタウィンドウW4(CWP=4)の一部のレジスタが保持するデータをMRF10から読み出してCRB30に保持させるように制御する。
つまり、図4(b)に示すごとく、演算部40によってSAVE命令がデコードされると、制御部50は、MRF10から当該SAVE命令によってCWPが次に示すレジスタウィンドウW4(CWP=4)のレジスタW4Locals(図中“Locals CWP=4”と表記)の内容をCRB30のレジスタ31にコピーして転送し、さらに、レジスタW4Outs(図中“Outs CWP=4”と表記)の内容をCRB30のレジスタ32にコピーして転送する。
ここで、制御部50がレジスタウィンドウW4のレジスタW4Insの内容をCRB30に転送しないのは、このレジスタW4Insは、CWP20のレジスタ24に保持されているレジスタウィンドウW3のレジスタW3Outsと重複する部分(オーバーラップ部分)であるためである(図5参照)。
このように、制御部50は、CWR20に次に保持されるレジスタウィンドウW4のデータのうち、CWR20に現在保持されている現在のレジスタウィンドウW3と重複しない部分のデータ(ここではレジスタW4Locals及びレジスタW4Outs)をCRB30に保持させるように制御し、この重複しない部分(オーバーラップしない部分)のデータをMRF10から読み出してCRB30に保持させるように制御する。
したがって、本情報処理装置1では、演算部40によるSAVE命令のデコード後、Commitステージ(図2参照)前の状態では、CRB30のレジスタ31にレジスタW4Localsの内容が保持され、レジスタ32にレジスタW4Outsの内容が保持される。
これにより、演算部40は、CWR20に保持されたレジスタウィンドウW3のデータを用いてCWP=3の命令を実行可能であるとともに、CRB30に保持されたレジスタウィンドウW4のデータの一部(オーバーラップしないLocalsレジスタ及びOutsレジスタのデータ)と、レジスタW4InsとオーバーラップするCWR20に保持されたレジスタW3Outsとを用いて、CWP=4の命令も実行可能となる。
そして、図3に示すように、演算部40がSAVE命令を完了(Write back)する(Commitステージを実行する)と、制御部50が、CRB30に保持されたデータ(ここではレジスタW4Locals及びレジスタW4Outs)をCWR20が保持するように、CRB30からデータを読み出してCWR20に転送する。
つまり、制御部50は、CWR20が現在保持しているレジスタウィンドウW3のデータのうちの次のレジスタウィンドウW4と重複しない部分のデータ(ここではレジスタW3Locals及びレジスタW3Ins)を、CRB30に保持されているデータ(ここではレジスタW4Locals及びレジスタW4Outs)と置き換えることによって、次のレジスタウィンドウW4のデータをCWR20に保持させるように制御する。
具体的には、図4(c)に示すごとく、演算部40によってSAVE命令が完了されると、制御部50は、CRB30のレジスタ31に保持されたレジスタW4Locals(図中“Locals CWP=4”と表記)を、CWR20のレジスタ22に保持させるようにデータを置き換える(二点鎖線矢印P参照)とともに、CRB30のレジスタ32に保持されたレジスタW4Outs(図中“Outs CWP=4”と表記)を、CWR20のレジスタ23に保持させるようにデータを置き換える(一点鎖線矢印Q参照)。
さらに、制御部50は、CWP=3,4で互いに共通する部分であるレジスタW4Insについては、レジスタ24に元々保持されているレジスタW3Outsの指定を、レジスタW4Insの指定として読み替えてそのまま使用する。
このように、制御部50は、CWR20が現在保持しているデータのうち、次のレジスタウィンドウW4とオーバーラップする部分のデータは、次のレジスタウィンドウW4のデータとして読み替える(すなわち、データをそのまま残して次のレジスタウィンドウのデータとして使用する)ことによって、次のレジスタウィンドウW4をCWR20に保持させるように制御する。
したがって、CWR20では、CWPの偶奇によってレジスタ23,24に保持されるレジスタがInsレジスタとOutsレジスタとの間で入れ替わることになり、CWPが偶数から奇数に変化する場合には、レジスタ23に元々保持されているInsレジスタの指定が次のレジスタウィンドウのOutsレジスタの指定として読み替えられる。
これにより、演算部40によるSAVE命令の完了(write back)後の状態では、CRB30にはデータが保持されず、演算部40はCWR20に保持されたレジスタウィンドウW4のデータを用いてCWP=4の命令のみを実行可能となる。
このように、本発明の一実施形態としての情報処理装置1によれば、演算部40がCWR20及びCRB30に対してデータを読出可能に接続され、演算部40によってウィンドウ切替命令がデコードされると、制御部50が当該切替命令によってCWR20に次に保持されるレジスタウィンドウのデータをMRF10から読み出してCRB30に保持させるように制御するので、演算部40は当該切替命令の実行を通り越して次のレジスタウィンドウのデータを用いる命令を、CRB30からデータを読み出すことによって確実に実行することができる。
このとき、CRB30は16本のレジスタで実現され、CWR20は32本のレジスタで実現されるので、本情報処理装置1では、合計48本のレジスタによって、演算部40がレジスタウィンドウを採用するMRF10に対してアウトオブオーダ命令実行方式で命令を実行可能になる。したがって、図7に示す従来の情報処理装置110が72本のレジスタで実現したのに対して、24本ものレジスタを削減することができる。
つまり、本情報処理装置1はハードウェア資源を低減させることができ、これにより、演算部40による命令実行のためのCWR20及びCRB30からのデータリードのスループットを向上することができる。
また、レジスタの本数を削減することによって回路量を大幅に削除できるので、実装面積を低減することができるとともに、消費電力を低減することもできる。
さらに、本情報処理装置1では、演算部40によってウィンドウ切替命令が完了されると、制御部50は、CWR20が現在保持しているレジスタウィンドウのデータのうち、次のレジスタウィンドウと重複しない部分のデータを、CRB30に保持されているデータと置き換えることによって、次のレジスタウィンドウのデータをCWR20に保持させるように制御するので、インオーダで実行される命令実行にかかる書込み処理をCWR20に対して確実に実行することができる。つまり、演算部40はCRB30に対して書込み処理可能に接続されなくても、命令実行にかかる書込み処理を確実に実行することができるという効果を有する。
また、本情報処理装置1では、演算部40によって切替命令が完了されると、制御部50は、CWR20が現在保持しているデータのうち、次のレジスタウィンドウと重複する部分のデータは、次のレジスタウィンドウのデータとして読み替えることによって、次のレジスタウィンドウをCWR20に保持させるように制御するので、3つの領域(Localsレジスタ,Insレジスタ,Outsレジスタ)からなるレジスタウィンドウを最終的にCWR20に保持させるのに、中継点として機能するCRB30において2つの領域を保持するだけでよくなり、ハードウェア資源の量を低減することができる。具体的には、レジスタウィンドウすべてを保持するために必要な24本のレジスタではなく、16本のレジスタのみによりCRB30を構成することができる。
〔2〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態において、レジスタファイルAが保持するレジスタウィンドウの数や、各レジスタウィンドウの容量(レジスタ本数)は限定されるものではなく、種々変更することができる。
また、本発明の情報処理装置の処理対象はオーバラップウィンドウ方式のレジスタファイルに限定されるものではなく、複数のレジスタウィンドウからなるものであればよい。
したがって、本発明において、CWR20やCRB30の容量は、MRF10が保持するレジスタウィンドウに応じて種々変更される。
以上詳述したように、本発明の情報処理装置は、データを保持する複数のレジスタウィンドウからなるマスタレジスタと、このマスタレジスタの前記複数のレジスタウィンドウのうちの現在のレジスタウィンドウを保持するカレントレジスタと、前記マスタレジスタと前記カレントレジスタとの間に介装され、前記カレントレジスタに次に保持されるレジスタウィンドウのデータを保持する置換バッファと、前記カレントレジスタに保持されたデータ及び前記置換バッファに保持されたデータを読出可能に接続され、前記カレントレジスタに保持されたデータ及び前記置換バッファに保持されたデータにかかる命令を実行する演算部と、この演算部が前記カレントレジスタに保持されている現在のレジスタウィンドウを他のレジスタウィンドウに切り替える切替命令を実行する際、当該切替命令がデコードされると、当該切替命令によって前記カレントレジスタに次に保持されるべきレジスタウィンドウのデータを前記マスタレジスタから読み出して前記置換バッファに保持させるように制御する制御部とをそなえて構成されていることを特徴としている。
なお、前記制御部が、前記演算部によって前記切替命令の実行が完了されると、前記カレントレジスタが現在保持しているデータを前記置換バッファに保持されているデータと置き換えることにより、当該切替命令による次のレジスタウィンドウのデータを前記カレントレジスタに保持させるように制御することが好ましい。
また、前記演算部が、前記マスタレジスタ及び前記カレントレジスタに対して書込み処理を実行することが好ましく、このとき、前記演算部が、前記マスタレジスタ及び前記カレントレジスタに対する書込み処理を同時に実行することが好ましい。
さらに、前記マスタレジスタがオーバラップウィンドウ方式のレジスタファイルであることが好ましく、このとき、前記制御部が、前記カレントレジスタに次に保持されるレジスタウィンドウのデータのうちの前記カレントレジスタに現在保持されている現在のレジスタウィンドウと重複しない部分のデータを前記置換バッファに保持させるように制御することが好ましい。
なお、前記制御部が、前記演算部によって前記切替命令がデコードされると、次に保持されるべきレジスタウィンドウのうちの前記カレントレジスタに保持されている現在のレジスタウィンドウと重複しない部分のデータを前記マスタレジスタから読み出して前記置換バッファに保持させるように制御することが好ましく、このとき、前記制御部が、前記演算部によって前記切替命令の実行が完了されると、前記カレントレジスタが現在保持しているデータのうちの次のレジスタウィンドウと重複しない部分のデータを前記置換バッファに保持されているデータと置き換えることによって、前記次のレジスタウィンドウのデータを前記カレントレジスタに保持させるように制御することが好ましい。
さらに、前記制御部が、前記演算部によって前記切替命令の実行が完了されると、前記カレントレジスタが現在保持しているデータのうちの次のレジスタウィンドウと重複する部分のデータは、前記次のレジスタウィンドウのデータとして読み替えることによって、前記次のレジスタウィンドウのデータを前記カレントレジスタに保持させるように制御することが好ましい。
また、前記マスタレジスタにおいて、前記カレントレジスタに保持される現在のレジスタウィンドウを示すカレントポインタをそなえて構成されていることが好ましく、このとき、前記演算部が実行しうる前記切替命令が、前記カレントポインタをインクリメントするセーブ命令であるとともに、前記カレントポインタをデクリメントするリストア命令であることが好ましい。
本発明の一実施形態としての情報処理装置の構成を示すブロック図である。 本発明の一実施形態としての情報処理装置の演算部が採用するアウトオブオーダ命令実行方式を説明するための図である。 本発明の一実施形態としての情報処理装置の演算部の動作の一例を示す図である。 本発明の一実施形態としての情報処理装置のカレントウィンドウレジスタ及びカレントウィンドウリプレースバッファが保持するデータを説明するための図であり、(a)は演算部によるウィンドウ切替命令のデコード前の状態を示す図であり、(b)は演算部によるウィンドウ切替命令のデコード後の状態を示す図であり、(c)は演算部によるウィンドウ切替命令の完了後の状態を示す図である。 本発明の一実施形態としての情報処理装置のマスタレジスタファイル内に構成される従来からのリング状レジスタファイル(レジスタウィンドウ)を示す図である。 従来の情報処理装置の構成を示すブロック図である。 従来の情報処理装置の構成を示すブロック図である。 図7に示す従来の情報処理装置のレジスタファイルが保持するデータを説明するための図である。 図7に示す従来の情報処理装置の演算器の動作の一例を示す図である。
符号の説明
1,100,110 情報処理装置
10,101,111 マスタレジスタファイル(MRF:Master Register File;マスタレジスタ)
20 カレントウィンドウレジスタ(CWR:Current Window Register;カレントレジスタ)
21〜24,31,32 レジスタ
30 カレントウィンドウリプレースバッファ(CRB:Current window Replace Buffer;置換バッファ)
40 演算部(演算手段)
50 制御部(制御手段)
102,112 ワーキングレジスタファイル(WRF:Working Register File)
103 演算器
A レジスタファイル
W0〜W7 レジスタウィンドウ

Claims (17)

  1. inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組を含む複数のレジスタウィンドウがそれぞれリング状に構成される少なくとも一つのレジスタファイルと、
    前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、
    前記カレントウィンドウポインタが示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
    前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、
    前記レジスタウィンドウの切替を実行するウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、
    記ウィンドウ切替命令を前記演算部がデコードした場合前記ウィンドウ切替命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ウィンドウ切替命令の実行を前記演算部が完了した場合、前記カレントレジスタが保持しているデータを前記置換バッファが保持するデータに置換して、前記ウィンドウ切替命令の実行の完了によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる制御と、
    を備えることを特徴とする演算処理装置。
  2. 前記演算が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行うことを特徴とする請求項1記載の演算処理装置。
  3. 前記演算が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行うことを特徴とする請求項1記載の演算処理装置。
  4. 前記レジスタファイルにおいて、互いに隣接する2つのレジスタウィンドウのうちの一方のレジスタウィンドウのinレジスタと、他方のレジスタウィンドウのoutレジスタとが共有されることを特徴とする請求項1乃至3のいずれか1項に記載の演算処理装置。
  5. 前記演算が前記ウィンドウ切替命令をデコードした場合には、前記制御が、前記ウィンドウ切替命令の実行によって前記カレントウィンドウポインタが指定する前記レジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記置換バッファへ転送することを特徴とする請求項4記載の演算処理装置。
  6. 前記演算が前記ウィンドウ切替命令の実行を完了した場合には、前記制御が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記カレントレジスタへ転送することを特徴とする請求項4又は5記載の演算処理装置。
  7. 数のウィンドウがそれぞれリング状に構成されるレジスタウィンドウを複数有するレジスタファイルと、
    前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、
    前記カレントウィンドウポインタが示すポインタ値により指定される前記1つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
    前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、
    前記カレントウィンドウポインタ部が保持するポインタ値を更新して前記レジスタウィンドウの切替を実行するポインタ書換命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、
    ポインタ書換命令を前記演算部がデコードした場合前記ポインタ書換命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ポインタ書換命令を前記演算部が実行して前記ポインタ値が更新された場合、前記レジスタファイルから前記更新後のポインタ値が示す1レジスタウィンドウ分のデータを、前記置換バッファから前記カレントレジスタへ転送する制御と、
    を備えることを特徴とする演算処理装置。
  8. 前記レジスタファイルのウィンドウは、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される1組のglobalレジスタとから構成され、
    前記レジスタファイルから前記置換バッファは前記置換バッファから前記カレントレジスタへ転送される前記1レジスタウィンドウ分のデータを、それぞれ前記globalレジスタ、outレジスタ、inレジスタ、localレジスタの順序により転送を行うことを特徴とする請求項7記載の演算処理装置。
  9. inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組を含む複数のレジスタウィンドウがそれぞれリング状に構成される少なくとも一つのレジスタファイルと、
    前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、
    前記カレントウィンドウポインタが示すポインタ値により指定されるレジスタウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
    前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、
    前記レジスタウィンドウの切替を実行するウィンドウ切替命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、
    記ウィンドウ切替命令を前記演算部がデコードした場合前記ウィンドウ切替命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ウィンドウ切替命令の実行を前記演算部が完了した場合、前記カレントレジスタが保持しているデータを前記置換バッファに保持するデータに置換して、前記ウィンドウ切替命令の実行の完了によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させる制御と、
    を備える演算処理装置を有することを特徴とする情報処理装置。
  10. 前記演算が、前記レジスタファイル及び前記カレントレジスタに対して前記命令処理の結果データの書込みを行うことを特徴とする請求項9記載の情報処理装置。
  11. 前記演算が、前記レジスタファイル及び前記カレントレジスタの双方に対して同時に前記命令処理の結果データの書込みを行うことを特徴とする請求項9記載の情報処理装置。
  12. 前記レジスタファイルにおいて、互いに隣接する2つのレジスタウィンドウのうちの一方のレジスタウィンドウのinレジスタと、他方のレジスタウィンドウのoutレジスタとが共有されることを特徴とする請求項9乃至11のいずれか1項に記載の情報処理装置。
  13. 前記演算が前記ウィンドウ切替命令をデコードした場合には、前記制御が、前記ウィンドウ切替命令の実行によって前記カレントウィンドウポインタが指定する前記レジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記置換バッファへ転送することを特徴とする請求項12記載の情報処理装置。
  14. 前記演算が前記ウィンドウ切替命令の実行を完了した場合には、前記制御が、前記置換バッファから前記ポインタ値が示すレジスタウィンドウのlocalレジスタが保持するデータ、inレジスタ又はoutレジスタのうちいずれかが保持するデータを前記カレントレジスタへ転送することを特徴とする請求項12又は13記載の情報処理装置。
  15. 数のウィンドウがそれぞれリング状に構成されるレジスタウィンドウを複数有するレジスタファイルと、
    前記レジスタウィンドウにアクセスする場合、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、
    前記カレントウィンドウポインタが示すポインタ値により指定される前記1つのウィンドウが保持するデータを、前記レジスタファイルから読み出して保持するカレントレジスタと、
    前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、
    前記カレントウィンドウポインタ部が保持するポインタ値を更新して前記レジスタウィンドウの切替を実行するポインタ書換命令と、前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算と、
    ポインタ書換命令を前記演算部がデコードした場合前記ポインタ書換命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記レジスタファイルから前記置換バッファに転送し、前記ポインタ書換命令を前記演算部が実行して前記ポインタ値が更新された場合、前記レジスタファイルから前記更新後のポインタ値が示す1レジスタウィンドウ分のデータを、前記置換バッファから前記カレントレジスタへ転送する制御と、
    を備える演算処理装置を有することを特徴とする情報処理装置。
  16. 前記レジスタファイルのウィンドウは、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組と、前記レジスタウィンドウ間で共有される1組のglobalレジスタとから構成され、
    前記レジスタファイルから前記置換バッファは前記置換バッファから前記カレントレジスタへ転送される前記1レジスタウィンドウ分のデータを、それぞれ前記globalレジスタ、outレジスタ、inレジスタ、localレジスタの順序により転送を行うことを特徴とする請求項15記載の情報処理装置。
  17. のウィンドウがそれぞれリング状に構成されるレジスタファイルと、現在のウィンドウ位置をポインタ値により示すカレントウィンドウポインタと、前記カレントウィンドウポインタ部が示すポインタ値により指定される前記1つのウィンドウが保持するデータを前記レジスタファイルから読み出して保持するカレントレジスタと、前記レジスタファイルと前記カレントレジスタとに接続され、前記レジスタファイルから前記カレントレジスタに転送されるデータを保持する置換バッファと、前記レジスタウィンドウの切替を実行するウィンドウ切替命令と前記カレントレジスタに保持されたデータもしくは前記置換バッファに保持されたデータを用いた命令処理とを実行する演算とを備える演算処理装置レジスタファイルの制御方法において、
    記ウィンドウ切替命令を前記演算部がデコードした場合前記ウィンドウ切替命令の実行によ前記カレントウィンドウポインタが指定するウィンドウ位置のデータを前記置換バッファに転送
    記ウィンドウ切替命令の実行を前記演算部が完了した場合、前記カレントレジスタが保持しているデータを前記置換バッファに保持るデータに置換して前記ウィンドウ切替命令の実行の完了によって切り替えられる次のレジスタウィンドウのデータを前記カレントレジスタに保持させることを特徴とするレジスタファイルの制御方法。
JP2005275024A 2005-09-22 2005-09-22 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 Expired - Fee Related JP5028774B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2005275024A JP5028774B2 (ja) 2005-09-22 2005-09-22 演算処理装置,情報処理装置,及びレジスタファイルの制御方法
US11/333,229 US7343478B2 (en) 2005-09-22 2006-01-18 Register window system and method that stores the next register window in a temporary buffer
EP06250462A EP1768020B1 (en) 2005-09-22 2006-01-27 Arithmetic operation apparatus, information processing apparatus and register file control method
DE602006013079T DE602006013079D1 (de) 2005-09-22 2006-01-27 Arithmetische Operationsvorrichtung, Informationsverarbeitungsvorrichtung und Registerspeichersteuerverfahren
CNB2006100576399A CN100394382C (zh) 2005-09-22 2006-02-22 算术运算装置、信息处理装置以及寄存器堆控制方法
KR1020060017688A KR100777772B1 (ko) 2005-09-22 2006-02-23 연산 처리 장치, 정보 처리 장치 및 레지스터 파일의 제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005275024A JP5028774B2 (ja) 2005-09-22 2005-09-22 演算処理装置,情報処理装置,及びレジスタファイルの制御方法

Publications (2)

Publication Number Publication Date
JP2007087108A JP2007087108A (ja) 2007-04-05
JP5028774B2 true JP5028774B2 (ja) 2012-09-19

Family

ID=37547578

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005275024A Expired - Fee Related JP5028774B2 (ja) 2005-09-22 2005-09-22 演算処理装置,情報処理装置,及びレジスタファイルの制御方法

Country Status (6)

Country Link
US (1) US7343478B2 (ja)
EP (1) EP1768020B1 (ja)
JP (1) JP5028774B2 (ja)
KR (1) KR100777772B1 (ja)
CN (1) CN100394382C (ja)
DE (1) DE602006013079D1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5130757B2 (ja) * 2007-03-16 2013-01-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP2159688A4 (en) 2007-06-20 2011-01-05 Fujitsu Ltd INSTRUCTION MANAGEMENT CONTROL AND INSTRUCTION MANUAL CONTROL PROCEDURES
KR101031004B1 (ko) 2007-06-20 2011-04-25 후지쯔 가부시끼가이샤 정보 처리 장치 및 제어 방법
WO2008155800A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 命令実行制御装置及び命令実行制御方法
EP2169537B1 (en) * 2007-06-20 2013-02-27 Fujitsu Limited Instruction processor
US8725991B2 (en) * 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
EP2325744B1 (en) * 2008-08-08 2022-08-03 Fujitsu Limited Processing unit
JP6107485B2 (ja) * 2013-07-04 2017-04-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10977034B2 (en) 2018-11-07 2021-04-13 International Business Machines Corporation Instruction completion table with ready-to-complete vector
CN116450216B (zh) * 2023-06-12 2023-08-29 上海灵动微电子股份有限公司 共享硬件运算单元的局部缓存方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5083263A (en) 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
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
JPH02148223A (ja) * 1988-11-30 1990-06-07 Toshiba Corp レジスタ退避復活装置
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
JP2564054B2 (ja) * 1991-07-16 1996-12-18 松下電器産業株式会社 レジスタファイル
JP3595028B2 (ja) 1995-06-20 2004-12-02 富士通株式会社 リアルタイムosの処理方法
JPH0916409A (ja) * 1995-06-30 1997-01-17 Matsushita Electric Ind Co Ltd マイクロコンピュータ
US6263416B1 (en) * 1997-06-27 2001-07-17 Sun Microsystems, Inc. Method for reducing number of register file ports in a wide instruction issue processor
KR19990026795A (ko) 1997-09-26 1999-04-15 윤종용 마이크로프로세서
US6842853B1 (en) * 1999-01-13 2005-01-11 Sun Microsystems, Inc. Thread suspension system and method
US6314510B1 (en) * 1999-04-14 2001-11-06 Sun Microsystems, Inc. Microprocessor with reduced context switching overhead and corresponding method
JP2000353092A (ja) * 1999-06-09 2000-12-19 Nec Corp 情報処理装置及びそのレジスタファイル切替方法
JP3737755B2 (ja) * 2001-12-28 2006-01-25 富士通株式会社 レジスタウィンドウ方式によるレジスタファイル及びその制御方法
US7080237B2 (en) * 2002-05-24 2006-07-18 Sun Microsystems, Inc. Register window flattening logic for dependency checking among instructions
US7216216B1 (en) * 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window

Also Published As

Publication number Publication date
EP1768020A2 (en) 2007-03-28
KR20070033862A (ko) 2007-03-27
US7343478B2 (en) 2008-03-11
DE602006013079D1 (de) 2010-05-06
EP1768020A3 (en) 2009-02-25
EP1768020B1 (en) 2010-03-24
KR100777772B1 (ko) 2007-11-20
CN100394382C (zh) 2008-06-11
US20070067612A1 (en) 2007-03-22
CN1936831A (zh) 2007-03-28
JP2007087108A (ja) 2007-04-05

Similar Documents

Publication Publication Date Title
JP5028774B2 (ja) 演算処理装置,情報処理装置,及びレジスタファイルの制御方法
EP3362889B1 (en) Move prefix instruction
KR100286416B1 (ko) 여러운영체제기술에서볼수없는상이한데이터형연산을수행하는방법
US7624253B2 (en) Determining register availability for register renaming
KR100312092B1 (ko) 스택레퍼런스및비스택레퍼런스방식으로공유논리레지스터파일의레지스터를지정하는두명령어유형을실행하는방법및장치
JP3675466B2 (ja) スーパースケーラマイクロプロセサ
TWI411957B (zh) 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法
US20060190700A1 (en) Handling permanent and transient errors using a SIMD unit
JPH10301778A (ja) レジスタの名前変更を管理する方法および装置
JPH0673105B2 (ja) 命令パイプライン方式のマイクロプロセッサ
JPH1097423A (ja) ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
EP0747809A1 (en) A method and system for processing multiple branch instructions that write to count and/or link registers
US8271766B2 (en) Intentionally delaying execution of a copy instruction to achieve simultaneous execution with a subsequent, non-adjacent write instruction
US6604193B1 (en) Processor in which register number translation is carried out
US20030191929A1 (en) Microinstruction pointer stack in a processor
JPH1091434A (ja) クイック・デコード命令を用いるための方法およびデータ処理システム
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
JP2003323294A (ja) スーパースカラプロセッサ
JP2000347858A (ja) マイクロプロセッサ
JPH0784785A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080324

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111028

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees