JP6107485B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6107485B2
JP6107485B2 JP2013141015A JP2013141015A JP6107485B2 JP 6107485 B2 JP6107485 B2 JP 6107485B2 JP 2013141015 A JP2013141015 A JP 2013141015A JP 2013141015 A JP2013141015 A JP 2013141015A JP 6107485 B2 JP6107485 B2 JP 6107485B2
Authority
JP
Japan
Prior art keywords
register
instruction
save
window
renaming map
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
JP2013141015A
Other languages
English (en)
Other versions
JP2015014891A (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 JP2013141015A priority Critical patent/JP6107485B2/ja
Priority to US14/279,962 priority patent/US20150012727A1/en
Priority to EP20140170467 priority patent/EP2821917A1/en
Publication of JP2015014891A publication Critical patent/JP2015014891A/ja
Application granted granted Critical
Publication of JP6107485B2 publication Critical patent/JP6107485B2/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
レジスタウィンドウを複数備えるレジスタファイルと、レジスタファイルに保持されているデータをオペランドとする命令を実行する演算手段とを有する演算処理装置が知られている(例えば、特許文献1参照)。カレントウィンドウポインタ手段は、レジスタファイルが備える複数のレジスタウィンドウの中から、カレントウィンドウとなるレジスタウィンドウを指定するアドレス情報を保持する。カレントウィンドウの切り替えを指示するウィンドウ切り替え命令がデコードされたとき、カレントウィンドウポインタ手段が保持するアドレス情報を更新する。ウィンドウ切り替え命令のデコードが開始されてからコミットが開始される直前までの間は、演算手段が、更新前のアドレス情報が指定する第1のレジスタウィンドウのデータと更新後のアドレス情報が指定する第2のレジスタウィンドウのデータを、レジスタファイルから読み出しできるように制御する。
また、inレジスタ、localレジスタ及びoutレジスタの順序によるレジスタの組から構成されるレジスタウィンドウを複数有し、複数のレジスタウィンドウがリング状に構成される少なくとも一つのレジスタファイルを有する演算処理装置が知られている(例えば、特許文献2参照)。カレントウィンドウポインタ手段は、レジスタウィンドウにアクセスする場合において、現在のレジスタウィンドウ位置をポインタ値により示す。カレントレジスタは、カレントウィンドウポインタ手段が示すポインタ値により指定されるレジスタウィンドウが保持するデータを、レジスタファイルから読み出して保持する。置換バッファは、レジスタファイルとカレントレジスタとの間に実装され、レジスタファイルからカレントレジスタに転送されるデータを保持する。演算手段は、ウィンドウ切替命令と、カレントレジスタに保持されたデータもしくは置換バッファに保持されたデータに係る命令処理とを実行する。演算手段がレジスタウィンドウの切替を実行するウィンドウ切替命令を実行した場合に、ウィンドウ切替命令がデコードされたときには、ウィンドウ切替命令の実行によってカレントウィンドウポインタ手段が指定するレジスタウィンドウのデータを置換バッファに転送する。
また、演算処理を行う演算部と、各々N本のレジスタを備えたK枚のウィンドウを有し、各ウィンドウを構成する一部のレジスタは両隣のウィンドウを構成するレジスタと共有され、共有部分をサブルーチン呼び出し時の引数の引き渡しに使用するように構成されたレジスタウィンドウとを有する演算処理装置が知られている(例えば、特許文献3参照)。カレントウィンドウ選択手段は、K枚のウィンドウのうちの1枚を選択する。レジスタ選択手段は、読み出しアドレスにより読み出しレジスタを選択する。制御部は、カレントウィンドウ選択手段においてウィンドウを選択するためのウィンドウアドレス信号を出力する。
特開2008−234075号公報 特開2007−87108号公報 国際公開第2010/016097号
レジスタウィンドウの番号を1変化させるウィンドウ切替命令を実行中に他のウィンドウ切替命令が入力されると、実行が完了するまで、入力されたウィンドウ切替命令のデコードが待機される。その場合、命令の実行速度が低下する課題がある。
1つの側面では、本発明の目的は、レジスタウィンドウの番号を1変化させる命令の待機時間を短縮することができる演算処理装置及び演算処理装置の制御方法を提供することである。
演算処理装置は、アクセス可能な複数のレジスタウィンドウに対応する複数のレジスタと、現在のレジスタウィンドウの番号を1変化させる第1の命令を実行中に前記第1の命令と同じ方向に現在のレジスタウィンドウの番号を1変化させる第2の命令が入力されると、前記第1の命令の実行が完了するまで前記第2の命令のデコードを抑止し、現在のレジスタウィンドウの番号を1変化させる第1の命令を実行中に前記第1の命令と逆の方向に現在のレジスタウィンドウの番号を1変化させる第2の命令が入力されると、前記第1の命令の実行中に前記第2の命令のデコードを行う命令デコーダとを有する。
第1の命令の実行中に第2の命令のデコードを行うことができるので、第2の命令を高速に処理することができる。
図1は、本実施形態による演算処理システムの構成例を示す図である。 図2は、図1のコア(演算処理装置)の構成例を示す図である。 図3は、図2の固定小数点レジスタの構成例を示す図である。 図4は、レジスタリネーミングマップの構成例を示す図である。 図5は、図2のコア(演算処理装置)の一部の構成例を示す図である。 図6は、命令デコーダの制御方法を示すフローチャートである。 図7は、SAVE命令が入力され、その後にRESTORE命令が入力される場合の制御方法を示す図である。 図8は、SAVE命令が入力され、その後にRESTORE命令が入力される場合の制御方法を示す図である。 図9は、SAVE命令が入力され、その後にSAVE命令が入力される場合の制御方法を示す図である。 図10は、レジスタリネーミングマップを制御する回路の構成例を示す図である。 図11は、レジスタウィンドウを切り替える命令の制御方法を示す図である。 図12は、図11の信号SAVE_PENDING及びRESTORE_PENDINGの生成回路の構成例を示す図である。 図13は、図11の切り替え方向LAST_SAVEの生成回路の構成例を示す図である。 図14は、命令デコード抑止信号INH_D_RELの生成回路の構成例を示す図である。 図15は、読み出しレジスタウィンドウを示す図である。 図16は、読み出しレジスタウィンドウカウンタを示す図である。
図1は、本実施形態による演算処理システム100の構成例を示す図である。演算処理システム100は、中央処理装置(CPU:Central Processing Unit)101、デュアルインラインメモリモジュール(DIMM:Dual Inline Memory Module)102、及びインターコネクト部103を有する。中央処理装置101は、複数のコア111、共用の2次キャッシュメモリ112及びメモリアクセスコントローラ(MAC:Memory Access Controller)113を有する。メモリアクセスコントローラ113は、デュアルインラインメモリモジュール102及び2次キャッシュメモリ112のメモリアクセスを制御する。これにより、中央処理装置101は、デュアルインラインメモリモジュール102に対してデータを入出力することができる。インターコネクト部103は、他の装置に対してデータを入出力することができる。
図2は、図1のコア(演算処理装置)111の構成例を示す図である。命令フェッチアドレス生成器201は、命令フェッチを行うために、プログラムカウンタ220又は分岐予測機構205から入力した命令アドレスを選択し、選択された命令アドレスの命令フェッチリクエストを1次命令キャッシュメモリ202に発行する。1次命令キャッシュメモリ202は、それに応じた命令を命令バッファ203に出力する。命令バッファは、命令をバッファリングし、プログラムの順番通りに命令デコーダ204に命令を供給する。命令デコーダ204は、プログラムの順番通りに命令のデコード処理を行い、命令を発行する。命令デコーダ204は、デコードする命令の種類に従って、命令の実行を制御する主記憶オペランドアドレス生成用リザベーションステーション(RSA:Reservation Station for Address generate)206、固定小数点演算用リザベーションステーション(RSE:Reservation Station for Execute)207、浮動小数点演算用リザベーションステーション(RSF:Reservation Station for Floating)208、分岐命令用リザベーションステーション(RSBR:Reservation Station for BRanch)209に必要なエントリを作成する。また、命令デコーダ204は、全てのデコードされた命令に対して、命令の完了を制御するコミットスタックエントリ(CSE:Commit Stack Entry)210にエントリを作成する。デコードされた命令がRSA206、RSE207、RSF208にエントリを作成される場合には、固定小数点リネーミングレジスタ215と浮動小数点リネーミングレジスタ217に対応するレジスタリネーミングを行うことで、アウト・オブ・オーダー実行を行うことが可能となる。オペランドアドレス生成器211は、RSA206のエントリに応じて、オペランドのアドレスを生成し、1次データキャッシュメモリ212に出力する。1次データキャッシュメモリ212は、生成されたオペランドアドレスのデータを固定小数点リネーミングレジスタ215又は浮動小数点リネーミングレジスタ217に出力する。演算器213はRSE207のエントリに応じて固定小数点演算を行い、演算器214はRSF208のエントリに応じて浮動小数点演算を行う。演算の実行結果は、固定小数点リネーミングレジスタ215と浮動小数点リネーミングレジスタ217に格納される。リザベーションステーション206〜209から、アウト・オブ・オーダーで実行された命令は、CSE210の制御によりプログラムの順番通りに命令の完了を行い、完了した命令に対してのみ、固定小数点レジスタ216や浮動小数点レジスタ217やプログラムカウンタ219,220などのプログラマブルな資源の更新を行う。プログラムカウンタ220は、現在実行する命令のアドレスを出力する。プログラムカウンタ219は、プログラムカウンタ220のアドレスの次のアドレスを出力する。分岐予測機構205は、RSBR209のエントリに応じて、分岐命令が分岐するか否かを予測し、次に実行するアドレスを出力する。
図3は、図2の固定小数点レジスタ216の構成例を示す図である。固定小数点レジスタ216は、8個のレジスタウィンドウW0〜W7を有する。各レジスタウィンドウW0〜W7は、インレジスタins、ローカルレジスタlocals及びアウトレジスタoutsを有する。図4に示すように、インレジスタinsは8個のレジスタI0〜I7を有し、ローカルレジスタlocalsは8個のレジスタL0〜L7を有し、アウトレジスタoutsは8個のレジスタO0〜O7を有する。複数のレジスタウィンドウW0〜W7は、リング状に構成される。各レジスタウィンドウW0〜W7を構成する一部のレジスタins及びoutsは、両隣のレジスタウィンドウW0〜W7を構成する一部のレジスタins及びoutsと共有される。例えば、レジスタウィンドウW0のインレジスタinsはレジスタウィンドウW7のアウトレジスタoutsと共有され、レジスタウィンドウW0のアウトレジスタoutsはレジスタウィンドウW1のインレジスタinsと共有される。使用中のレジスタウィンドウW0〜W7の番号は、カレントウィンドウポインタ(CWP:Current Window Pointer)によって保持される。レジスタウィンドウW0〜W7は、リング状に連結され、レジスタウィンドウの管理はレジスタウィンドウ番号で行われる。CWP=0の場合にはレジスタウィンドウW0が使用中のレジスタウィンドウであり、CWP=1の場合にはレジスタウィンドウW1が使用中のレジスタウィンドウであり、CWP=7の場合にはレジスタウィンドウW7が使用中のレジスタウィンドウである。レジスタウィンドウ切り替え命令には、CWPの番号をインクリメント(+1)するSAVE命令(セーブ命令)と、CWPの番号をデクリメント(−1)するRESTORE命令(リストア命令)がある。例えば、CWP=0の状態で、SAVE命令が実行されると、CWP=1になる。CWP=0の状態で、RESTORE命令が実行されると、CWP=7になる。CWPの更新は、レジスタウィンドウを切り替える命令の完了時に行われる。
図4は、レジスタリネーミングマップの構成例を示す図である。上記のように、図3のインレジスタinsは8個のレジスタI0〜I7を有し、図3のローカルレジスタlocalsは8個のレジスタL0〜L7を有し、図3のアウトレジスタoutsは8個のレジスタO0〜O7を有する。レジスタリネーミングマップは、命令をデコードしたときに命令の書き込み先のレジスタアドレスに対して、命令デコード時に割り当てられた書き込み先のリネーミングレジスタ215のアドレスと、有効フラグとを有し、命令デコーダ204により制御される。登録されたレジスタリネーミングマップが有効なときには、有効フラグが1(有効)であり、後続の命令がソースレジスタとして使用するときには、リネーミングレジスタ215のアドレスを使用することにより、レジスタリネーミングの制御を行う。命令の完了により、リネーミングレジスタ215の内容はレジスタ216に書き込まれる。すなわち、リネーミングレジスタ215は、レジスタ216の内容を記憶する。命令デコーダ204は、完了した命令の書き込み先のリネーミングレジスタと、リネーミングマップに登録されているリネーミングレジスタ215のアドレスが同一の場合に、リネーミングマップの有効フラグを0にし、登録されているリネーミングマップを無効にする。
命令の完了によりレジスタ216にデータが書き込まれるまでは、リネーミングレジスタ215に書き込み対象のデータが書き込まれる。後続の命令は、リネーミングレジスタ215のデータを使用することにより、高速処理が可能になる。命令の完了によりレジスタ216にデータが書き込まれると、後続の命令はレジスタ216のデータを使用する。
レジスタウィンドウW0〜W7を切り替えるためにSAVE命令又はRESTORE命令を実行すると、後続の命令は新しいレジスタウィンドウから読み出す必要がある。このために、レジスタリネーミングマップは、レジスタウィンドウW0〜W7を切り替える命令を命令デコードしたときに新しいレジスタウィンドウW0〜W7のリネーミングマップに切り替えられる。この際、新しいレジスタウィンドウのリネーミングマップの情報については、何もない状態であるために既存のレジスタリネーミングマップがリセットされる。
図5は、図2のコア(演算処理装置)111の一部の構成例を示す図である。コア111は、命令デコーダ204、リザベーションステーション207、命令完了制御部(CSE)210及び固定小数点レジスタ216の他に、最新レジスタリネーミングマップ記憶部501及び退避レジスタリネーミングマップ記憶部502を有する。最新レジスタリネーミングマップ記憶部501は、最新のレジスタリネーミングマップ(図4)を記憶する。退避レジスタリネーミングマップ記憶部502は、1つ前のレジスタリネーミングマップ(図4)を記憶する。
図6は、命令デコーダ204の制御方法を示すフローチャートである。ステップS601では、命令デコーダ204は、入力された命令がレジスタウィンドウを切り替える命令(SAVE命令又はRESTORE命令)であるか否かを判定する。レジスタウィンドウを切り替える命令である場合にはステップS602に進み、レジスタウィンドウを切り替える命令でない場合にはステップS605に進む。
ステップS602では、命令デコーダ204は、命令完了制御部210からの命令完了通知を基に、レジスタウィンドウを切り替える命令が実行中か否かを判定する。実行中である場合にはステップS603に進み、実行中でない場合にはステップS605に進む。すなわち、レジスタウィンドウを切り替える命令の実行中に、他のレジスタウィンドウを切り替える命令が命令デコーダ204に入力された場合には、ステップS603に進む。
ステップS603では、命令デコーダ204は、レジスタウィンドウを切り替える方向が最後にレジスタウィンドウを切り替えた方向と一致するか否かを判定する。先行命令及び後続命令が共にSAVE命令である場合は共にインクリメント方向の切り替えであるので、方向が一致すると判定される。先行命令及び後続命令が共にRESTORE命令である場合は共にデクリメント方向の切り替えであるので、方向が一致すると判定される。先行命令及び後続命令がSAVE命令及びRESTORE命令である場合は切り替え方向が一致しないと判定される。一致する場合にはステップS604に進み、一致しない場合にはステップS605に進む。
ステップS604では、命令デコーダ204は、上記の入力されたレジスタウィンドウを切り替える命令のデコードを抑止し、ステップS602に戻る。すなわち、命令デコーダ204は、先行のレジスタウィンドウ切り替え命令の実行が完了するまで、後続のレジスタウィンドウ切替命令のデコード処理を待機する。
ステップS605では、命令デコーダ204は、上記の入力された命令のデコード処理を行う。その後、ステップS606では、次の命令の処理を行う。
図7及び図8は、SAVE命令が入力され、その後にRESTORE命令が入力される場合の制御方法を示す図であり、図6のステップS603からステップS605に進む場合を示す。最初、最新レジスタリネーミングマップ記憶部501は、例えばCWP=0のリネーミングレジスタの情報(図4)を格納しており、退避レジスタリネーミングマップ記憶部502の内容は無効である。この状態における命令は、最新レジスタリネーミングマップ記憶部501に記憶されているCWP=0のリネーミングレジスタの情報(図4)を用いて実行される。
次に、命令デコーダ204は、SAVE命令のデコードを行う。命令デコード時のCWP=0は、インクリメントされ、CWP=1になる。最新レジスタリネーミングマップ記憶部501に記憶されているCWP=0のリネーミングレジスタの情報は、退避レジスタリネーミングマップ記憶部502にコピーされる。最新レジスタリネーミングマップ記憶部501には、最新のCWP=1のリネーミングレジスタの情報が書き込まれる。その後、SAVE命令の前の命令は、CWP=0における実行が行われ、SAVE命令の後の命令は、CWP=1における実行が行われる。
次に、命令デコーダ204は、RESTORE命令のデコードを行う。命令デコード時のCWP=1は、デクリメントされ、CWP=0になる。最新レジスタリネーミングマップ記憶部501に記憶されているCWP=1のリネーミングレジスタの情報は、退避レジスタリネーミングマップ記憶部502にコピーされる。退避レジスタリネーミングマップ記憶部502に記憶されているCWP=0のリネーミングレジスタの情報は、最新レジスタリネーミングマップ記憶部501にコピーされる。これにより、RESTORE命令の後続命令は、最新レジスタリネーミングマップ記憶部501に記憶されているCWP=0のリネーミングレジスタの情報を用いることができる。
SAVE命令が入力され、その後にRESTORE命令が入力される場合、CWPの番号は、0→1→0のように元に戻る。これに対応し、CWP=0のリネーミングレジスタの情報は、最新レジスタリネーミングマップ記憶部501→退避レジスタリネーミングマップ記憶部502→最新レジスタリネーミングマップ記憶部501の順に移動する。退避レジスタリネーミングマップ502を設けることにより、CWP=0のリネーミングレジスタの情報は、削除されることなく、最新レジスタリネーミングマップ記憶部501に戻すことができる。これにより、SAVE命令が実行中であって、ステップS603からステップS605に進み、RESTORE命令のデコードを抑止することなく、RESTORE命令のデコード処理をすることができ、処理を高速化することができる。なお、先行命令がSAVE命令であり後続命令がRESTORE命令である場合だけでなく、先行命令がRESTORE命令であり後続命令がSAVE命令である場合も同様である。
本実施形態では、レジスタウィンドウを切り替える命令の命令デコード時にレジスタウィンドウを切り替える方向を保持しておく。レジスタウィンドウを切り替える方向は、CWPの番号を+1又は−1する方向を意味する。さらに、命令デコード時に、現在のレジスタリネーミングマップを破棄することなく、退避レジスタリネーミングマップ記憶部502に格納して保持する。退避レジスタリネーミングマップ記憶部502に登録されている命令が完了した場合には、退避リネーミングレジスタマップ記憶部502の有効フラグも無効にする。
レジスタウィンドウを切り替える命令が完了するまでに、再びレジスタウィンドウを切り替える命令をデコードする場合に、レジスタウィンドウの切り替え方向と保持されている切り替え方向とが一致しない場合には、ステップS603からS605に進み、命令デコードが可能となる。命令デコード時には、レジスタウィンドウを切り替える方向を更新して保持する。そして、最新レジスタリネーミングマップ記憶部501の情報を退避レジスタリネーミングマップ記憶部502に移動し、退避リネーミングマップ記憶部502の情報を最新レジスタリネーミングマップ記憶部501に移動することにより、後続命令は、正しいリネーミングマップを使用することが可能となる。
図9は、SAVE命令が入力され、その後にSAVE命令が入力される場合の制御方法を示す図であり、図6のステップS603からステップS604に進む場合を示す。2回目のSAVE命令が入力される前までは、図8と同じである。命令デコーダ204は、1回目のSAVE命令の実行中に2回目のSAVE命令を入力すると、ステップS603からS604に進み、2回目のSAVE命令のデコードを抑止する。そして、命令デコーダ204は、1回目のSAVE命令の実行が完了した後、ステップS602からS605に進み、2回目のSAVE命令のデコード処理を行う。2回目のSAVE命令により、CWP=2になるが、CWP=2のレジスタリネーミングマップは、退避レジスタリネーミングマップ記憶部502に保持されていないので、2回目のSAVE命令のデコードは抑止される。なお、先行命令がSAVE命令であり後続命令がSAVE命令である場合だけでなく、先行命令がRESTORE命令であり後続命令がRESTORE命令である場合も同様である。
以上のように、レジスタウィンドウを切り替える命令をデコードするときに、レジスタウィンドウを切り替える命令が実行中であり、そのデコードする切り替え方向と最後のレジスタウィンドウを切り替える命令のレジスタウィンドウの切り替え方向とが一致する場合には、命令デコーダ204は、命令デコードを抑止する。そして、命令デコーダ204は、最後のレジスタウィンドウを切り替えた命令が完了するまで命令デコードを抑止する。
図10は、レジスタリネーミングマップを制御する回路の構成例を示す図である。命令デコーダ204は、レジスタウィンドウを切り替える命令を命令デコードする。すると、命令デコーダ204は、切り替え前のレジスタウィンドウのリネーミングマップを最新レジスタリネーミングマップ記憶部501から退避レジスタリネーミングマップ記憶部502にコピーする。リネーミングマップ登録回路1001は、新しいレジスタウィンドウのリネーミングマップを最新レジスタリネーミングマップ記憶部501に登録する。レジスタリネーミング回路1002は、命令デコード時のリネーミングレジスタ215の制御として、最新レジスタリネーミングマップ記憶部501の情報を使用し、退避レジスタリネーミングマップ記憶部502の情報を使用しない。
その後、命令デコーダ204は、再びレジスタウィンドウを切り替える命令を命令デコードしたときには、最新レジスタリネーミングマップ記憶部501の情報を退避レジスタリネーミングマップ記憶部502に移動し、退避レジスタリネーミングマップ記憶部502の情報を最新レジスタリネーミングマップ記憶部501に移動する。命令デコード後の最新レジスタリネーミングマップ記憶部501と退避レジスタリネーミングマップ記憶部502の情報に登録されているアドレスは、そのまま有効な状態として、移動する。
命令の完了により、リネーミングレジスタ215のデータは、固定小数点レジスタ216に書き込まれる。退避レジスタリネーミングマップ記憶部502は、登録されたリネーミングレジスタ215のアドレスを保持している。リネーミングマップリセット回路1004は、命令完了制御部210から命令完了通知を入力すると、完了した命令が、最新レジスタリネーミングマップ記憶部501に登録されたアドレスと一致した場合には、最新レジスタリネーミングマップ記憶部501に登録されたアドレスを無効にする。同様に、リネーミングマップリセット回路1003は、命令完了制御部210から命令完了通知を入力すると、完了した命令が、退避レジスタリネーミングマップ記憶部502に登録されたアドレスと一致した場合には、退避レジスタリネーミングマップ記憶部502に登録されたアドレスを無効にする。これにより、最新レジスタリネーミングマップ記憶部501及び退避レジスタリネーミングマップ記憶部502は、常に最新のレジスタリネーミングに必要な状態を保つことが可能となる。
なお、レジスタウィンドウを切り替える命令が実行中でないときに、レジスタウィンドウを切り替える命令が命令デコードされたときには、退避レジスタリネーミングマップ記憶部502は、全て、無効な状態になっている。これは、レジスタウィンドウを切り替える命令が実行中でないときには、1つのレジスタウィンドウしか使用していないためである。このために、レジスタウィンドウを切り替える命令が実行中でないときには、退避レジスタリネーミングマップ記憶部502は、全て無効な状態であるために、退避レジスタリネーミングマップ記憶部502の情報を最新レジスタリネーミングマップ記憶部501に移動しても問題はない。
図11は、レジスタウィンドウを切り替える命令の制御方法を示す図である。命令デコーダ204は、レジスタウィンドウを切り替える命令をデコードしたときに、レジスタウィンドウを切り替える命令が実行中であることを示す信号SAVE_PENDING及びRESTORE_PENDINGを保持する。信号SAVE_PENDING及びRESTORE_PENDINGは、それぞれ、SAVE命令及びRESTORE命令の信号であり、SAVE命令及びRESTORE命令が完了するまで保持され、SAVE命令及びRESTORE命令が完了したときにリセットされる。SAVE命令又はRESTORE命令が実行中であることを示す信号SAVE_PENDING又はRESTORE_PENDINGがオンになっているときに、再びSAVE命令又はRESTORE命令を命令デコードする場合には、命令デコードを抑止して、SAVE命令又はRESTORE命令が実行中であることを示す信号SAVE_PENDING又はRESTORE_PENDINGがリセットされるまで、命令デコードを抑止する。また、SAVE命令又はRESTORE命令が実行中であることを示す信号がオンになっているときに、レジスタウィンドウを切り替える命令以外の命令をデコードするとき、固定小数点レジスタ216を使用する命令を命令デコードする場合には、SAVE命令又はRESTORE命令が実行中であることを示す信号SAVE_PENDING又はRESTORE_PENDINGからレジスタ216の読み出しアドレスを作成する。
命令デコーダ204は、レジスタウィンドウを切り替える命令(SAVE命令又はRESTORE命令)を命令デコードしたときに、レジスタウィンドウを切り替える命令が実行中であることを示す信号SAVE_PENDING又はRESTORE_PENDINGを格納すると同時に命令識別子IIDをSAVE_PENDING_IID又はRESTORE_PENDING_IIDとして格納して保持する。命令識別子IIDは、命令完了を制御しているCSE210のエントリの番号を示し、命令デコード時に割り当てられる。SAVE命令又はRESTORE命令が完了したときに、完了した命令識別子IIDとレジスタウィンドウを切り替える命令が実行中であることを示す命令識別子SAVE_PENDING_IID又はRESTORE_PENDING_IIDとの一致チェックを行い、一致がとれた場合に、実行中であることを示す信号SAVE_PENDING又はRESTORE_PENDINGをリセットする。
命令デコーダ204は、レジスタウィンドウを切り替える命令を命令デコードするときに、レジスタウィンドウを切り替える方向LAST_SAVEについても格納して、保持する。SAVE命令のときには、切り替え方向LAST_SAVEに1を格納して、RESTORE命令のときには、切り替え方向LAST_SAVEに0を格納する。切り替え方向LAST_SAVEは、最後にレジスタウィンドウを切り替える命令を命令デコードしたときのレジスタウィンドウを切り替える方向を格納していることになる。
命令デコーダ204は、上記のSAVE命令及びRESTORE命令が実行中であることを示す信号SAVE_PENDING及びRESTORE_PENDINGとレジスタウィンドウを切り替える方向LAST_SAVEから、後続のレジスタウィンドウを切り替える命令の命令デコードの制御を行う。レジスタウィンドウを切り替える命令が入力されると、SAVE命令及びRESTORE命令のどちらも実行中でない場合は、通常通りに命令デコードを行う。SAVE命令及びRESTORE命令のどちらかが実行中である場合、自分のレジスタウィンドウを切り替える方向と最後にレジスタウィンドウを切り替える方向LAST_SAVEが異なる場合は命令デコードを行い、同一の場合は命令デコードを抑止する。
図11の“D”は、命令デコードサイクルを示している。図11の“W”は、命令完了サイクルを示している。信号SAVE_PENDINGは、SAVE命令が実行中であることを示している。識別子SAVE_PENDING_IIDは、SAVE命令の命令識別子IIDを示しており、最後に命令デコードしたSAVE命令の識別子IIDを示している。識別子RESTORE_PENDING_IIDは、RESTORE命令の命令識別子IIDを示しており、最後に命令デコードしたRESTORE命令の識別子IIDを示している。切り替え方向LAST_SAVEは、SAVE命令を命令デコードすると「1」を格納し、RESTORE命令を命令デコードすると「0」を格納する。切り替え方向LAST_SAVEは、最後にレジスタウィンドウを切り替える方向を示している。
(1)のSAVE命令は、信号SAVE_PENDING及びRESTORE_PENDINGが「0」であり、SAVE命令及びRESTORE命令のどちらも実行中でないため、命令デコードDを行う。このときに、信号SAVE_PENDINGは「1」になり、識別子SAVE_PENDING_IIDは、命令デコード時に割り当てられた「0x4」になる。切り替え方向LAST_SAVEは、「1」になる。
(2)のRESTORE命令は、信号SAVE_PENDINGが「1」であり、SAVE命令が実行中であるために、命令デコーダ204は、切り替え方向LAST_SAVEをチェックする。切り替え方向LAST_SAVEは、「1」であるために、自分のRESTORE命令は、前回の切り替え命令とは異なる方向の切り替えのために、RESTORE命令は、命令デコード可能と判断して、命令デコードDが行われる。信号RESTORE_PENDINGは「1」になり、識別子RESTORE_PENDING_IIDは、命令デコード時に割り当てられた「0x10」になる。切り替え方向LAST_SAVEは、「0」になる。
(3)のSAVE命令は、信号SAVE_PENDING及びRESTORE_PENDINGが「1」であり、SAVE命令とRESTORE命令が実行中であるため、命令デコーダ204は、切り替え方向LAST_SAVEをチェックする。このとき、切り替え方向LAST_SAVEは、「0」であるために、自分のSAVE命令は、前回の切り替え命令とは異なる方向の切り替えのために、SAVE命令は、命令デコード可能と判断して、命令デコードが行われる。このとき、信号SAVE_PENDINGは「1」を維持し、識別子SAVE_PENDING_IIDは「0x4」から命令デコード時に割り当てられた「0x15」に更新される。切り替え方向LAST_SAVEは、「1」になる。
(4)のSAVE命令は、信号SAVE_PENDING及びRESTORE_PENDINGが「1」であり、SAVE命令とRESTORE命令が実行中であるため、命令デコーダ204は、切り替え方向LAST_SAVEをチェックする。このとき、切り替え方向LAST_SAVEは、「1」であり、自分のSAVE命令は、前回の切り替え命令と同一方向の切り替えのために、SAVE命令は、命令デコードができないと判断して、命令デコードが抑止される。
(1)のSAVE命令が命令完了したサイクルWには、命令完了した識別子IID(0x4)と識別子SAVE_PENDING_IIDに格納されている識別子IID(0x15)を比較して一致しないために、信号SAVE_PENDINGは、「1」が保持される。(2)のRESTORE命令が命令完了したサイクルWに、命令完了した識別子IID(0x10)と識別子RESTORE_PENDING_IIDに格納されている識別子IID(0x10)を比較して一致するために、信号RESTORE_PENDINGを「0」にリセットする。(3)のSAVE命令が命令完了したサイクルWに、命令完了した識別子IID(0x15)と識別子SAVE_PENDING_IIDに格納されている識別子IID(0x15)を比較して一致するために、信号SAVE_PENDINGを「0」にリセットする。
(4)のSAVE命令は、信号SAVE_PENDINGとRESTORE_PENDINGが「0」になったために、命令デコード可能と判断して、命令デコードDが行われる。このときに、信号SAVE_PENDINGは「1」になり、識別子SAVE_PENDING_IIDは、命令デコード時に割り当てられた「0x20」になる。切り替え方向LAST_SAVEは、「1」になる。
図12は、図11の信号SAVE_PENDING及びRESTORE_PENDINGの生成回路の構成例を示す図である。信号D_REL_SAVEは、SAVE命令が命令デコードされたことを示す信号である。論理和回路1201は、信号D_REL_SAVEが「1」になると、「1」の信号SAVE_PENDINGを出力する。識別子D_IIDは、命令識別子を示す。信号D_REL_SAVEが「1」になると、論理積回路1202,1203及び論理和回路1204により、識別子D_IIDは識別子SAVE_PENDING_IIDとして出力される。識別子SAVE_PENDING_IIDは、信号D_REL_SAVEが「1」でないときには、識別子SAVE_PENDING_IIDを保持する。信号W_SAVEは、SAVE命令が完了したことを示す信号である。識別子W_IIDは、完了した命令の命令識別子を示す。信号W_SAVEが「1」のときに、比較器1205は、識別子SAVE_PENDING_IIDと識別子W_IIDを比較して、一致した場合には、「1」を出力し、論理積回路1206は、信号SAVE_PENDINGをリセットする。一致しなかった場合には、信号SAVE_PENDINGはリセットされずに保持される。なお、信号SAVE_PENDINGが「1」のときに、再び、SAVE命令が命令デコードされた場合には、識別子SAVE_PENDING_IIDが更新される。
上記では、信号SAVE_PENDING及び識別子SAVE_PENDING_IIDの生成回路について説明したが、信号RESTORE_PENDING及び識別子RESTORE_PENDING_IIDの生成回路も、論理積回路1208,1209,1212、論理和回路1207,1210及び比較器1211を有し、同様の処理により、信号RESTORE_PENDING及び識別子RESTORE_PENDING_IIDを生成する。
図13は、図11の切り替え方向LAST_SAVEの生成回路の構成例を示す図である。生成回路は、インバータ1301,1302、論理積回路1303及び論理和回路1304を有する。信号D_REL_SAVEは、SAVE命令が命令デコードされたことを示す信号である。信号D_REL_RESTOREは、RESTORE命令が命令デコードされたことを示す信号である。信号D_REL_SAVEが「1」のときに、切り替え方向LAST_SAVEは「1」になる。信号D_REL_RESTOREが「1」のときに、切り替え方向LAST_SAVEは「0」になる。信号D_REL_SAVE及びD_REL_RESTOREが両方とも「0」のときには、切り替え方向LAST_SAVEは保持される。なお、信号D_REL_SAVE及びD_REL_RESTOREが同時に「1」になることはない。
図14は、命令デコード抑止信号INH_D_RELの生成回路の構成例を示す図である。生成回路は、インバータ1401、論理積回路1402,1403及び論理和回路1404を有する。信号D_INST_SAVEは、命令デコードする命令がSAVE命令であることを示す信号である。信号SAVE_PENDINGは、SAVE命令が実行中であることを示す信号である。信号D_INST_RESTOREは、命令デコードする命令がRESTORE命令であることを示す信号である。信号RESTORE_PENDINGは、RESTORE命令が実行中であることを示す信号である。切り替え方向LAST_SAVEは、レジスタウィンドウを切り替える命令が実行中であり、最後にレジスタウィンドウを切り替えた方向を示す。信号INH_D_RELは、命令デコードを抑止する信号を示す。信号INH_D_RELが「1」のときは、図6のステップS604で、命令デコードを抑止する。信号D_INST_SAVEが「1」であり、信号SAVE_PENDINGが「1」であり、切り替え方向LAST_SAVEが「1」のときには、命令デコード抑止信号INH_D_RELが「1」になり、SAVE命令の命令デコードが抑止される。信号D_INST_RESTOREが「1」であり、信号RESTORE_PENDINGが「1」であり、切り替え方向LAST_SAVEが「0」のときには、命令デコード抑止信号INH_D_RELが「1」になり、RESTORE命令の命令デコードが抑止される。
図15は、読み出しレジスタウィンドウを示す図である。固定小数点レジスタ216から読み出すことが可能なレジスタウィンドウについては、レジスタウィンドウを切り替える命令が実行しているときには、CWPが示すレジスタウィンドウとレジスタウィンドウを切り替える命令の完了後のレジスタウィンドウの2つのレジスタウィンドウから読み出すことが可能となる。この2つの読み出すことが可能なレジスタウィンドウを、CWPが示すレジスタウィンドウをカレントレジスタウィンドウとして、レジスタウィンドウを切り替える命令の後続命令が読み出すレジスタウィンドウを先読みレジスタウィンドウとする。
レジスタウィンドウを切り替える命令が実行されていないときに、レジスタウィンドウを切り替える命令を命令デコードすると、レジスタウィンドウを切り替える命令により更新されるレジスタウィンドウが先読みレジスタウィンドウとなり、後続の命令が読み出すことが可能となる。レジスタウィンドウを切り替える命令が完了すると、先読みレジスタウィンドウのCWPの内容がカレントレジスタウィンドウのCWPの内容となる。レジスタウィンドウを切り替える命令が実行中のときに、レジスタウィンドウを切り替える命令を命令デコードする場合には、カレントレジスタウィンドウと先読みレジスタウィンドウの変更は行われない。レジスタウィンドウを切り替える命令が完了したときに、レジスタウィンドウを切り替える方向が反対のレジスタウィンドウを切り替える命令が実行中のときには、カレントレジスタウィンドウのCWPの内容を先読みレジスタウィンドウのCWPの内容に変更して、先読みレジスタウィンドウのCWPの内容をカレントレジスタウィンドウのCWPの内容に変更する。
CWP=0のときには、カレントレジスタウィンドウの内容は、CWP=0の内容が割り当てられている。このときの先読みレジスタウィンドウは、レジスタウィンドウを切り替える命令が実行中ではないために、無効である。(1)のSAVE命令が命令デコードされると、先読みレジスタウィンドウにCWP=1の内容が割り当てられる。(2)のRESTORE命令が命令デコードされたとき、SAVE命令が実行中であるために、カレントレジスタウィンドウ及び先読みレジスタウィンドウは変更されない。(3)のSAVE命令が命令デコードされたときも同様であり、RESTORE命令が実行中であるために、カレントレジスタウィンドウ及び先読みレジスタウィンドウは変更されない。(1)のSAVE命令が完了すると、CWP=1に更新される。このときに、カレントレジスタウィンドウは、先読みレジスタウィンドウの内容が割り当てられる。さらに、(1)のSAVE命令の完了時には、RESTORE命令が実行中であるために、先読みレジスタウィンドウは、カレントレジスタウィンドウの内容が割り当てられる。(2)のRESTORE命令の完了時には、CWP=0に更新される。このときに、カレントレジスタウィンドウは、先読みレジスタウィンドウの内容が割り当てられる。さらに、(2)のRESTORE命令の完了時には、SAVE命令が実行中であるために、先読みレジスタウィンドウは、カレントレジスタウィンドウの内容が割り当てられる。(3)のSAVE命令の完了時には、CWP=1に更新される。このときに、カレントレジスタウィンドウは、先読みレジスタウィンドウの内容が割り当てられる。さらに、(3)のSAVE命令の完了時には、RESTORE命令が実行中ではないために、先読みレジスタウィンドウは、無効となる。
図16は、読み出しレジスタウィンドウカウンタを示す図である。図15の命令の実行時に、読み出すレジスタウィンドウを指示する機能として、命令デコード時に、カレントレジスタウィンドウ又は先読みレジスタウィンドウのどちらから読み出すのかを制御する必要がある。このために、命令デコーダ204は、レジスタウィンドウの状態を示す機能を備える。この機能は、レジスタウィンドウを切り替える命令を命令デコードしたときと命令完了したときに制御する読み出しレジスタウィンドウカウンタREAD_REG_WIN_CNTである。読み出しレジスタウィンドウカウンタREAD_REG_WIN_CNTの値によって、命令デコードする命令に対して、読み出すレジスタをカレントレジスタウィンドウか先読みレジスタウィンドウのどちらから読み出すのかを割り当てる。
カウンタREAD_REG_WIN_CNTの値は、SAVE命令を命令デコードしたときに+1され、SAVE命令が完了したときに−1され、RESTORE命令を命令デコードしたときに−1され、RESTORE命令が完了したときに+1される。カウンタREAD_REG_WIN_CNTの値が「0」のときには、カレントウィンドウレジスタから読み出すように割り当て、カウンタREAD_REG_WIN_CNTの値が「+1」又は「−1」のときには、先読みウィンドウレジスタから読み出すように割り当てられる。
CWP=0の状態で、レジスタウィンドウを切り替える命令が実行中でないときは、カウンタREAD_REG_WIN_CNTの値は、「0」である。このときに命令デコードする命令は、カレントレジスタウィンドウから読み出すことになる。(1)のSAVE命令が命令デコードされると、カウンタREAD_REG_WIN_CNTの値は、+1され、「1」になる。後続の命令は、先読みレジスタウィンドウから読み出すように割り当てられる。(2)のRESTORE命令がデコードされると、カウンタREAD_REG_WIN_CNTの値は、−1され、「0」になる。後続の命令は、カレントレジスタウィンドウから読み出すように割り当てられる。(3)のSAVE命令がデコードされると、カウンタREAD_REG_WIND_CNTの値は、+1され、「1」になる。後続の命令は、先読みレジスタウィンドウから読み出すように割り当てられる。その後に、(1)のSAVE命令が完了したために、カウンタREAD_REG_WIN_CNTの値は、−1され、「0」になる。後続の命令は、カレントレジスタウィンドウから読み出すように割り当てられる。(2)のRESTORE命令が完了すると、カウンタREAD_REG_WIND_CNTの値は、+1され、「1」になる。後続の命令は、先読みレジスタウィンドウから読み出すように割り当てられる。(3)のSAVE命令が完了すると、カウンタREAD_REG_WIND_CNTの値は、−1され、「0」になる。後続の命令は、カレントレジスタウィンドウから読み出すように割り当てられる。
命令の実行をするときは、リザベーションステーション207から実行される。上記の制御により、読み出すレジスタウィンドウが割り当てられ、命令デコードされた命令がリザベーションステーション207に格納される。リザベーションステーション207は、実行の準備ができるまでは命令の実行をすることはできずに、リザベーションステーション207に滞留する。この間に、レジスタウィンドウを切り替える命令が完了した場合には、カレントレジスタウィンドウと先読みレジスタウィンドウの位置関係が変更になるために、命令デコード時に割り当てられた読み出しレジスタウィンドウを変更する必要がある。レジスタウィンドウを切り替える命令が完了したときに、リザベーションステーション207に有効なエントリの読み出しレジスタが、カレントレジスタウィンドウの場合は、先読みレジスタウィンドウに変更し、先読みレジスタウィンドウの場合は、カレントレジスタウィンドウに変更することで、正しいレジスタウィンドウから読み出すことが可能となる。
以上のように、固定小数点レジスタ216は、アクセス可能な複数のレジスタウィンドウW0〜W7に対応する複数のレジスタを有する。命令デコーダ204は、現在のレジスタウィンドウの番号(CWP)を1変化させる第1の命令を実行中に第1の命令と同じ方向に現在のレジスタウィンドウの番号(CWP)を1変化させる第2の命令が入力されると、図6のステップS603からS604に進み、第1の命令の実行が完了するまで第2の命令のデコードを抑止する。また、命令デコーダ204は、現在のレジスタウィンドウの番号(CWP)を1変化させる第1の命令を実行中に第1の命令と逆の方向に現在のレジスタウィンドウの番号(CWP)を1変化させる第2の命令が入力されると、図6のステップS603からS605に進み、第1の命令の実行中に第2の命令のデコードを行う。
リネーミングレジスタ215は、固定小数点レジスタ216の内容を記憶する。最新レジスタリネーミングマップ記憶部501は、リネーミングレジスタ215のアドレスを示す最新のレジスタリネーミングマップを記憶する。退避レジスタリネーミングマップ記憶部502は、リネーミングレジスタ215のアドレスを示す古いレジスタリネーミングマップを記憶する。
第1の命令がデコードされると、最新レジスタリネーミングマップ記憶部501に記憶されているレジスタリネーミングマップは退避レジスタリネーミングマップ記憶部502に記憶され、第1の命令に対応する現在のレジスタウィンドウ(CWP)のレジスタリネーミングマップが最新レジスタリネーミングマップ記憶部501に記憶される。
第1の命令と逆方向の第2の命令がデコードされると、最新レジスタリネーミングマップ記憶部501に記憶されているレジスタリネーミングマップは退避レジスタリネーミングマップ記憶部502に記憶され、退避レジスタリネーミングマップ記憶部502に記憶されているレジスタリネーミングマップは最新レジスタリネーミングマップ記憶部501に記憶される。
命令の完了により、リネーミングレジスタ215の内容が固定小数点レジスタ216に書き込まれると、上記のレジスタリネーミングマップのアドレスが無効化される。
本実施形態によれば、第1の命令の実行中に第2の命令のデコードを行うことができるので、第2の命令を高速に処理することができる。すなわち、レジスタウィンドウを切り替える命令の実行中に、再び入力されるレジスタウィンドウを切り替える命令が最後にレジスタウィンドウを切り替える命令と反対方向の切り替えのときには、命令デコードを抑止することなく、命令デコード行うことになるために、後続命令のデコードを抑止することなく動作することが可能となる。これにより、高速に命令を実行することが可能になり、性能の向上につながる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
204 命令デコーダ
207 リザベーションステーション
210 命令完了制御部
215 固定小数点リネーミングレジスタ
216 固定小数点レジスタ
501 最新レジスタリネーミングマップ記憶部
502 退避レジスタリネーミングマップ記憶部
1001 リネーミングマップ登録回路
1002 レジスタリネーミング回路
1003,1004 リネーミングマップリセット回路

Claims (5)

  1. アクセス可能な複数のレジスタウィンドウに対応する複数のレジスタと、
    現在のレジスタウィンドウの番号を1変化させる第1の命令を実行中に前記第1の命令と同じ方向に現在のレジスタウィンドウの番号を1変化させる第2の命令が入力されると、前記第1の命令の実行が完了するまで前記第2の命令のデコードを抑止し、現在のレジスタウィンドウの番号を1変化させる第1の命令を実行中に前記第1の命令と逆の方向に現在のレジスタウィンドウの番号を1変化させる第2の命令が入力されると、前記第1の命令の実行中に前記第2の命令のデコードを行う命令デコーダと
    を有することを特徴とする演算処理装置。
  2. さらに、前記レジスタの内容を記憶するリネーミングレジスタと、
    前記リネーミングレジスタのアドレスを示す最新のレジスタリネーミングマップを記憶する最新レジスタリネーミングマップ記憶部と、
    前記リネーミングレジスタのアドレスを示す古いレジスタリネーミングマップを記憶する退避レジスタリネーミングマップ記憶部とを有し、
    前記第1の命令がデコードされると、前記最新レジスタリネーミングマップ記憶部に記憶されているレジスタリネーミングマップは前記退避レジスタリネーミングマップ記憶部に記憶され、前記第1の命令に対応する現在のレジスタウィンドウの前記レジスタリネーミングマップが前記最新レジスタリネーミングマップ記憶部に記憶され、
    前記第1の命令と逆方向の前記第2の命令がデコードされると、前記最新レジスタリネーミングマップ記憶部に記憶されているレジスタリネーミングマップは前記退避レジスタリネーミングマップ記憶部に記憶され、前記退避レジスタリネーミングマップ記憶部に記憶されているレジスタリネーミングマップは前記最新レジスタリネーミングマップ記憶部に記憶され、
    命令の完了により、前記リネーミングレジスタの内容が前記レジスタに書き込まれると、前記レジスタリネーミングマップのアドレスが無効化されることを特徴とする請求項1記載の演算処理装置。
  3. 前記複数のレジスタウィンドウの各々は、インレジスタと、ローカルレジスタと、アウトレジスタとを含み、
    前記複数のレジスタウィンドウに含まれる各インレジスタは、当該インレジスタが含まれるレジスタウィンドウの左隣のレジスタウィンドウに含まれるアウトレジスタでもあり、
    前記複数のレジスタウィンドウに含まれる各アウトレジスタは、当該アウトレジスタが含まれるレジスタウィンドウの右隣のレジスタウィンドウに含まれるインレジスタでもあることを特徴とする請求項1又は2記載の演算処理装置。
  4. 各レジスタウィンドウは、インレジスタ、ローカルレジスタ及びアウトレジスタを有し、
    前記複数のレジスタウィンドウはリング状に構成されることを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。
  5. アクセス可能な複数のレジスタウィンドウに対応する複数のレジスタと、命令デコーダとを有する演算処理装置の制御方法であって、
    前記命令デコーダが、現在のレジスタウィンドウの番号を1変化させる第1の命令を実行中に前記第1の命令と同じ方向に現在のレジスタウィンドウの番号を1変化させる第2の命令が入力されると、前記第1の命令の実行が完了するまで前記第2の命令のデコードを抑止し、現在のレジスタウィンドウの番号を1変化させる第1の命令を実行中に前記第1の命令と逆の方向に現在のレジスタウィンドウの番号を1変化させる第2の命令が入力されると、前記第1の命令の実行中に前記第2の命令のデコードを行うことを特徴とする演算処理装置の制御方法。
JP2013141015A 2013-07-04 2013-07-04 演算処理装置及び演算処理装置の制御方法 Active JP6107485B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013141015A JP6107485B2 (ja) 2013-07-04 2013-07-04 演算処理装置及び演算処理装置の制御方法
US14/279,962 US20150012727A1 (en) 2013-07-04 2014-05-16 Processing device and control method of processing device
EP20140170467 EP2821917A1 (en) 2013-07-04 2014-05-29 Processing device and control method of processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013141015A JP6107485B2 (ja) 2013-07-04 2013-07-04 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015014891A JP2015014891A (ja) 2015-01-22
JP6107485B2 true JP6107485B2 (ja) 2017-04-05

Family

ID=50980117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013141015A Active JP6107485B2 (ja) 2013-07-04 2013-07-04 演算処理装置及び演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US20150012727A1 (ja)
EP (1) EP2821917A1 (ja)
JP (1) JP6107485B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10552164B2 (en) * 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10782979B2 (en) * 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US11150908B2 (en) * 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799166A (en) * 1996-06-17 1998-08-25 Sun Microsystems, Inc. Window delta from current window for fast register file address dependency checking
JP3737755B2 (ja) * 2001-12-28 2006-01-25 富士通株式会社 レジスタウィンドウ方式によるレジスタファイル及びその制御方法
US7203821B2 (en) * 2003-01-08 2007-04-10 Sun Microsystems, Inc. Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands
US7337305B2 (en) * 2003-11-24 2008-02-26 Sun Microsystems, Inc. Method and pipeline architecture for processing multiple swap requests to reduce latency
JP5028774B2 (ja) * 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法
JP5130757B2 (ja) * 2007-03-16 2013-01-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP2169537B1 (en) * 2007-06-20 2013-02-27 Fujitsu Limited Instruction processor
WO2008155801A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 情報処理装置及びレジスタ制御方法
WO2010016097A1 (ja) 2008-08-08 2010-02-11 富士通株式会社 演算処理装置
US8621160B2 (en) * 2010-12-17 2013-12-31 Futurewei Technologies, Inc. System and method for contention-free memory access

Also Published As

Publication number Publication date
EP2821917A1 (en) 2015-01-07
US20150012727A1 (en) 2015-01-08
JP2015014891A (ja) 2015-01-22

Similar Documents

Publication Publication Date Title
JP6107485B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
CN107077329B (zh) 用于实现和维持判定值的栈的方法和设备
US20140095847A1 (en) Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
JP2016207232A (ja) 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム
US9043806B2 (en) Information processing device and task switching method
US20150019843A1 (en) Method and apparatus for selective renaming in a microprocessor
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
KR20170027883A (ko) 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법
US10579378B2 (en) Instructions for manipulating a multi-bit predicate register for predicating instruction sequences
JP2009193378A (ja) ベクトル処理装置
US9886396B2 (en) Scalable event handling in multi-threaded processor cores
US20100100709A1 (en) Instruction control apparatus and instruction control method
JP5104862B2 (ja) 命令実行制御装置及び命令実行制御方法
JP3640855B2 (ja) プロセッサ
JP5949327B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2000181707A (ja) 命令制御装置及びその方法
EP2416250B1 (en) Prefetch request circuit
JP2005275703A (ja) プロセッサ及びコンテキスト切り替え方法
CN114327634A (zh) 用于经由单个作业描述符的低时延解压缩加速的装置和方法
CN115858015A (zh) 基于核心的推测性页故障列表
JP2015036855A (ja) 演算処理装置及び演算処理装置の制御方法
JPH0764803A (ja) プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170220

R150 Certificate of patent or registration of utility model

Ref document number: 6107485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150