JPH081601B2 - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JPH081601B2
JPH081601B2 JP59257585A JP25758584A JPH081601B2 JP H081601 B2 JPH081601 B2 JP H081601B2 JP 59257585 A JP59257585 A JP 59257585A JP 25758584 A JP25758584 A JP 25758584A JP H081601 B2 JPH081601 B2 JP H081601B2
Authority
JP
Japan
Prior art keywords
instruction
register
branch
executed
physical
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 - Lifetime
Application number
JP59257585A
Other languages
English (en)
Other versions
JPS61136132A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP59257585A priority Critical patent/JPH081601B2/ja
Publication of JPS61136132A publication Critical patent/JPS61136132A/ja
Publication of JPH081601B2 publication Critical patent/JPH081601B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明は、動的レジスタ割り当てあるいはレジスタ名
称変更により複数命令を並列に処理することが可能で、
しかも、分岐命令を予測で実行することができる情報処
理装置に関する。
〔発明の背景〕
複数命令の並列処理によって高速化を図る一方式とし
て、動的レジスタ割り当てあるいはレジスタ名称変更と
言える方法がある。この方法では、命令が指定するレジ
スタ番号により指定可能な数より多い、命令が指定する
レジスタ番号に動的に割り当て可能な複数のレジスタを
情報処理装置内に予め実装し、同じレジスタ番号を指定
し、その番号のレジスタにデータを書き込むことを要求
する複数の命令に対して、互いに異なるレジスタを割り
当て、それぞれの命令が要求するデータを一時的にそれ
ぞれの命令に割り当てられたレジスタに書き込む。それ
により、それぞれの命令が要求する、レジスタへのデー
タの書き込みをこのような異なるレジスタに対して実行
させることにより、これらの命令を並列に実行可能とす
るものである。この方法では、装置内に実装された複数
のレジスタは、時間の経過とともに、いろいろのレジス
タ番号のレジスタとして使用される。その意味でレジス
タの動的割り当てであり、あるいは各レジスタが割り当
てられるレジスタ番号が変更されると言う意味でレジス
タの名称変更と言える。以下では動的割り当てあるいは
レジスタ名称の変更を、簡単化のために単にレジスタの
動的割り当てと呼ぶことがある。このような方法を具体
的に実現する装置の一例は、たとえば、特願昭58−2377
7号明細書(特開昭60−129838号明細書)あるいは特開
昭57−166649号明細書に記載されている。
一方、近年、分岐命令の実行を高速化するために、分
岐命令が指定する分岐判定を結果が確定する前に、予め
定めた方法により、分岐が成功したあるいは分岐が不成
功であると予測して、分岐先命令とそれに続く命令列あ
るいは分岐命令に続く命令列のどちらかを実行するとい
う分岐命令の予測実行という技術が知られている。
したがって、上に例示したレジスタの動的割り当てあ
るいはレジスタ名称変更という技術を使用する場合で
も、この分岐命令の予測実行を実行できることが望まし
い。しかし、従来技術には、このことを考慮したものは
ない。
レジスタの動的な割り当てあるいはレジシタ名称変更
を採用する装置にこの分岐命令の予測実行を採用する
と、分岐命令の予測実行中でも、いずれかのレジスタ書
き込み命令にレジスタを新に割り当てることになる。し
かし、後にこの分岐の予測が外れていたと判明したとき
には、この予測状態で実行された命令の実行を無効にす
る必要がある。したがって、これらの命令の実行を無効
にする処理を簡単化することが望まれる。
このためには、各レジスタの割り当て状態を示す情報
あるいは各レジスタに割り当てられたレジスタ名称(以
下、これらを単にレジスタの割り当て情報と言うことが
ある)を分岐命令に実行前の状態に戻す処理を簡単に行
えることが望ましい。
さらに、レジスタの動的割り当てを使用するには、い
ずれかの命令にレジスタを割り当てるときには、開き状
態にあるレジスタを割り当てる。したがって、分岐命令
の予測実行状態において実行された命令の実行を無効に
するとき、空きレジスタに関する情報を予測実行前に戻
す処理を簡単に行えることが望ましい。
また、予測状態で実行されたレジスタ書き込み命令に
よってもいずれかのレジスタの内容が更新されてしま
う。したがって、この命令を無効にするときには、この
レジスタの状態を分岐命令実行前の状態に戻す必要があ
る。したがって、このような処理を簡単に行えることが
望ましい。
〔発明の目的〕
本発明の目的は、動的レジスタ割り当てあるいはレジ
スタ名称変更を採用するデータ処理装置内において、分
岐予測失敗時にレジスタの有り当て情報を分岐命令の実
行前の状態に簡単に戻すことが出来る情報処理装置を提
供することにある。
〔発明の概要〕
本発明においては、動的レジスタ割り当てあるいはレ
ジスタ名称変更を採用するデータ処理装置内において、
分岐予測実行直前のレジスタ割り当て情報を退避する手
段と、予測が失敗と判明したときに、退避されたレジス
タ割り当て情報を回復する手段とを設ける。
〔発明の実施例〕
以下、本発明の一実施例を説明する。説明の都合上、
日立製作所のMシリーズアーキテクチャに基づく情報処
理を、以下の説明の前提とする。第1図に典型的な命令
フォーマットを示す。すなわち命令は、演算の種類を示
すOP部、第1オペランドが格納されているレジスタ番号
を示すR1部、第2オペランドが格納されているメモリア
ドレスを作成するためのインデクスレジスタ番号を示す
X2部、同じくベースレジスタ番号を示すB2部、同じくデ
ィスプレースメントを示すD2部とからなる。例外の一つ
として、Branch on Condition命令(以下BC命令と略記
する)がある。BC命令ではR1部の位置に、分岐する条件
を設定するためのマスク(M1部)が置かれる。
第2図では、本実施例で実行される命令例の例を示し
ている。第1番目の命令Aは、X2,B2で示されるレジス
タの内容とD2を加算して得られるアドレスaの内容をR1
で示される汎用レジスタ(以下GRと略記する)1番の内
容に加算しその結果を同じく1番のGR(これをGR1と記
す)に格納しその加算結果によって条件コード(以下CC
と略記する)を設定する、いわゆるRXタイプの加算命令
である。第2番目の命令BCは、設定されているCCとマス
クによって、次にBC命令のメモリ上で次の命令を実行す
るか、あるいはbで示されるアドレスに格納されている
命令(以下、ターゲット命令と呼ぶ)を実行するかを決
定し、プログラム状態語内の令令アドレスフィールドの
値を実行すべき命令の命令アドレスに置き換える分岐命
令である。第3番目の命令Lは、アドレスCの内容をGR
1に転送する命令である。第4,5,6番目の命令は、R1部、
第2オペランドアドレスが異なる点を除いては、第3番
目の命令と同じく、ロード命令である。
第3図は、本実施例の情報処理装置において、第2図
で示した命令列を実行したときの概略のタイムチャート
である。横軸は処理の時刻をあらわし、処理の時間的単
位であるサイクルの開始時刻毎に目盛り付けされ、左か
らT0,T1,……,T7と呼ぶ。ある時刻TiからTi+1までの時
間をサイクルと呼び、それを左から第0サイクル(C0
略記,以下同様),C1,……,と名付ける。縦方向には、
この情報処理装置において重要な構成要素である命令レ
ジスタ(命令を保持しておくレジスタ)と並列動作可能
なn+1個の演算器E0,E1,……,Enおよび分岐命令にお
いて分岐するか否かを判定する分岐判定回路を示してい
る。
T0で命令レジスタにセットされた第1番目の命令Aは
ただちに演算器E0を起動し、C0,C1,C2,C3の4サイクル
をかけて演算を行ない、C3サイクルの終点時点において
演算結果にしたがってCCを設定する。命令レジスタに
は、演算器または分岐判定回路に起動をかけたとき、次
に処理すべき命令がセットされる。すなわち、T1におい
て第2番目の命令BCがセットされる。BC命令はただちに
分岐判定回路を起動し、C3で設定される判定に必要な命
令AのCCに従ってC4サイクルで分岐判定を行なう。BC命
令が命令レジスタにセットされてから分岐判定がなされ
る間、すなわちC2,C3,C4サイクルでは、BC命制の次の命
令列を処理すべきか、あるいはターゲット命令を処理す
べきか不明である。このような状態で、分岐が成立する
かもしくは成立しないと予測して、それぞれ分岐先の命
令列あるいは分岐命令に続く命令を仮に実行する方法が
知られている(以下このような予測で命令を実行する状
態を予測状態と呼ぶ)。本実施例では、例えば、分岐が
不成立になると予測し、BC命令のメモリ上で次の命令列
の処理を行なう。C2,C3,C4サイクルを予測サイクル、そ
の状態下で命令レジスタにセットされた命令を予測命令
と呼ぶ。このような処理を行なうことにより、分岐不成
立時の性能劣化を防ぐことができる。
T2において第3番目の命令L,T3において第4番目の命
令L,T4において第5番目の命令Lが命令レジスタにセッ
トされ、ただちに演算器E1,E2,E3において演算が行なわ
れ、GRへデータが書き込まれる。GR1へデータを書き込
む第1の命令がまだ実行中にかかわらず後述の第3の命
令がGR1へデータを書き込める理由については後述す
る。L命令の演算に要する時間は1サイクルである。こ
の3つのL命令の命令列は、BC命令のメモリ上で次の命
令列であり、3つの命令すべてが予測命令である。ここ
では分岐予測状態で実行中で実行される、物理レジスタ
を更新する命令の例として、ロード命令Lを説明する。
BC命令の分岐判定がC4でなされた後T5で命令レジスタに
セットされる第6番目の命令Lは、もし分岐が不成立す
なわち予測成功であるならば第5番目のL命令のメモリ
上で次の命令を、逆に分岐成立すなわち失敗であるなら
ばBC命令のターゲット命令を表わすものとする。分岐が
成立のとき、予測サイクル中に処理された3つのL命令
は、本来処理されるべきではなかった命令である。した
がって、後続の命令の処理に対して弊害となる実行結果
は、その時点でキャンセルされなければならない。
以下、この問題をさらに具体的に説明する。分岐予測
状態で命令を実行しているときにその予測が失敗したと
判明した場合に、予測状態で実行した命令を無効にする
必要がある。その無効にあたっては、予測状態で実行さ
れた命令が指定する論理レジスタに割り当てた物理レジ
スタに書き込まれた内容を無効にする必要がある。も
し、予測状態で実行されたレジスタ更新命令に新に物理
レジスタを割り当てないとすると、その命令が指定する
論理レジスタに対して予測実行開始前にすでに実行され
た命令の実行時に割り当てられた物理レジスタの内容
を、予測実行状態で実行された命令により更新すること
になる。したがって、分岐予測が不成功と判明したとき
には、その物理レジスタが更新される前の内容に、その
物理レジスタの内容を回復する必要がある。このために
は、この物理レジスタを更新する際に、その物理レジス
タの更新前の内容をどこに退避する必要がある。
この問題を避けるためには、予測実行状態で実行され
たレジスタ更新命令が指定する論理レジスタに対して、
すでに物理レジスタが予測実行前に割り当てられている
ときには、そのレジスタ更新命令に対して必ず新たに物
理レジスタを割り当てればよい。
本実施例では、このような割り当て方法をもっとも簡
単に実行する方法として、いずれかの論理レジスタの内
容を変更する命令を実行するときには、そのレジスタ更
新命令の種類に依らないで、その命令が指定する、その
更新すべき論理レジスタに対して、空き状態にある物理
レジスタを新に割り当てる方法を採用する。このような
レジスタ割り当て方法を分岐予測状態で実行される命令
に適用する。この結果、分岐予測状態では、レジスタ更
新命令が指定する更新すべき論理レジスタには必ず空き
状態にある物理レジスタが新に割り当てられるので、分
岐予測が失敗した場合に備えて、その物理レジスタの更
新前の内容を予め退避しておく必要がなく、分岐予測が
実際に生じた場合には、分岐予測状態で実行された命令
が指定する論理レジスタに割り当てられた物理レジスタ
の割り当てを無効にすればよい。このレジスタの割り当
てを無効にするもっとも簡単な方法は、予測実行開始直
前のレジスタ割り当て情報を退避してから予測実行を開
始し、分岐予測が失敗と判明したときに、レジスタ割り
当て情報として、退避した情報を回復すればよい。同様
に、空きレジスタを識別するための情報(空きレジスタ
情報)も退避回復すれば、空きレジスタ情報も分岐予測
実行開始前の情報に簡単に戻せる。
以下、第4〜7図を用いて、本実施例の情報処理装置
の構成と動作を説明する。
第4図は全体構成である。この情報処理装置では、具
体的な動的レジスタ割り当て方法の一例として、演算結
果を先行する命令Aと同一の汎用レジスタaに格納する
ように指定された命令Bの処理を行なうにたあり、汎用
レジスタの総数より多い物理レジスタの群を設け、命令
Aの演算結果をある物理レジスタaに格納したとき、命
令Bの演算結果を物理レジスタaとは異なる物理レジス
タa′に格納し、以後の命令で命令Bの演算結果を演算
に用いるとき、物理レジスタa′から読み出すようにす
ることで、先行する命令の実行を待たずに後続の命令B
の実行を可能にする方法を使用する。この方法を用いる
ことにより、第3図で示したタイムチャートでGR1で書
き込む順番が逆転できた。
図において、406はこのような、命令で指定可能なレ
ジスタの数より多い物理レジスタの群を示す。401は命
令デコード制御回路であり、次に処理すべき命令をメモ
リ(図示せず)から読み出し、命令レジスタ402へ出力
する。通常は、現在命令レジスタ402にセットされてい
る命令の、上記メモリ上で次の命令を出力するが、BC命
令の判定がなされ分岐成立、すなわち予測失敗のときタ
ーゲット命令を上記メモリから読み出し、命令レジスタ
402に出力する。出力する命令はすべてメモリから読み
出されるが、この命令の読み出しのための論理は本実施
例の説明には不要であり、また公知の技術により構成可
能であるため、図示せず、また説明も省略する。また、
命令デコード制御回路の命令の切り替え制御も公知の技
術であり、本実施例の効果とは直接関連が無いので、説
明を省略する。以下に本実施例に必要な命令デコード制
御回路401の出力情報を示す。
(1)INS:次に処理すべき命令を示す。本信号は命令レ
ジスタ402に送られる。
(2)DS:命令レジスタ402にINSをセットすべきことを
示す。本信号は、命令のデコードを抑止する信号SUP
(本信号は、並列演算制御回路404から与えられる)が
1のとき抑止される。本信号は、命令レジスタ402に送
出される。
402は命令レジスタであり、処理を行なう命令を保持
する。命令レジスタには、DSが1のときINSで示される
次に処理すべき命令がセットされる。命令レジスタ402
内の命令は命令デコーダ403に送られ、命令の実行に必
要な情報を生成するための解読が行なわれる。命令デコ
ーダ403が出力する命令解読情報のうち、本実施例の説
明に必要なものは以下である。
(1)OP:命令のOP部であり、演算の内容を示してい
る。本信号は、並列演算制御回路404、演算器407に送出
される。
(2)CR:汎用レジスタGRを変更する命令であることを
示す。本信号は、仮想レジスタ制御回路405、演算器407
に送出される。
本信号は命令Lの場合に限らず、物理レジスタを更新
するいずれの命令に対しても‘1'となる。本実施例で
は、この信号CRは命令がレジスタを変更する命令である
限り、その命令の種類によらずに、出力される。例え
ば、第3図で示した加算命令Aは加算結果を汎用レジス
タR1に書き込む命令である。ロード命令Lは、メモリ内
のオペランドを汎用レジスタR1に書き込む命令である。
したがって、このような命令はこれらのレジスタを更新
する命令であるので、これらの命令のいずれに対しても
この信号CRが出力される。
(3)IN:命令レジスタ402にセットされた命令に対し一
意に定まり、命令の概念的順序を表す命令番号を示す。
本信号は、0,1,2,……,mと順次加算され、mの次は0に
戻る。本信号は、並列演算制御回路404に送られる。m
は十分大きな値とする。
(4)R1M1:BC命令のときのM1部、BC命令以外のときのR
1部である。本信号は、仮想レジスタ制御回路405、分岐
判定回路408に送出される。
(5)BR:命令レジスタにセットされている命令がBC命
令であることを示す。本信号は、仮想レジスタ制御回路
405、分岐判定回路408に送られる。
分岐判定回路408では、後に説明するように、この分
岐命令を実行して、分岐成立か否かを判定し、成立のと
きには、分岐成功信号TKNを1にする。本実施例では分
岐命令の後の予測実行状態では、分岐不成立と予測し
て、分岐命令に続く命令を実行すると仮定しているの
で、もしこの信号TKNが1になれば、予測が失敗したこ
とになる。
並列演算制御回路404は、演算器E0〜Enの状態を監視
し、以下の信号を生成する。
(1)BOPi(i:0〜n):演算器Eiに起動をかける信号
である。並列演算制御回路404は、OPが演算器を用いる
ことを示すとき、現在演算実行中でない空いている演算
器に対応するBOPi信号を発行し演算器を起動すると同時
に、演算器対応に持ち演算器の状態を保持するレジスタ
(以下、EBi(i:0〜n)レジスタと呼ぶ)に1をたて、
この演算器が空いていないことを示す。後にその演算が
終了し演算器からEOPi信号を受けたとき、そのEBiレジ
スタは0にクリアされその後、その演算器は後続の命令
の演算に用いることができる。場合によっては、すへて
の演算器がふさがっていて後続命令の演算が開始できな
いことがありうるが、そのための制御回路は本実施例の
効果とは直接関連はないので説明の簡単化のため省略す
る。本信号は、演算器407および分岐判定回路408に送出
される。
(2)ECC:CCを決定する演算器の番号を示す。並列演算
制御回路404の中に、既に処理されたCCを変更する命令
のうち、最近に処理(命令レジスタにセット)された命
令が実行された演算器番号を保持するレジスタを持って
いる。ECCは、その内容である。本信号は、分岐判定回
路408に送出される。
(3)SUP:命令のデコードを抑止することを示す。本信
号はOPがBC命令であることを示すとき、それ以後の命令
によって変更されるGRの数がカウントされ、分岐判定終
了信号BJが1となる前にその数がある数以上の大きさに
なるとき1となる。本信号は、分岐命令に続いて予測状
態で命令を実行してから、分岐判定が下される以前に実
行される、汎用レジスタを更新する命令の数に歯止めを
かける。歯止めの数について詳細は後述する。
仮想レジスタ制御回路405は、汎用レジスタGRの管理
を行なう制御回路である。R1M1は、BC命令以外の命令で
は命令のR1部であり、Mシリーズアーキテクチャでは16
本ある汎用レジスタGRのレジスタ番号を示す。このとき
R1M1によって示されるGRのレジスタ番号を論理レジスタ
番号を呼ぶ。すなわち、論理レジスタとは、命令で直接
指定可能なレジスタのことである。したがって、動的レ
ジスタ割り当てを用いないで、命令で指定されるレジス
タ番号を割り当てられた汎用レジスタを有する情報処理
装置では、各汎用レジスタは、一つの論理レジスタに一
対一に対応する。しかし、動的レジスタ割り当ての情報
処理装置においては、異なる命令によって同一論理レジ
スタへデータの格納を行なうとき、物理的に異なるレジ
スタ(以後、これを物理レジスタと呼ぶ)へ格納するこ
とは既に述べた。したがって、このような情報処理装置
では、論理レジスタの数と、その装置内に実在する物理
レジスタの数は異なり、論理レジスタと物理レジスタと
は一対一には対応しないで、物理レジスタの数の方が多
い。このような情報処理装置では、いわゆる汎用レジス
タは存在しない。しかし、以下では、論理レジスタの意
味で、汎用レジスタあるいは略してGRという名称を使用
することがある。
異なる命令が同一論理レジスタ番号のGRを読み出すと
き、その論理レジスタへ結果を格納した命令が読み出す
命令によって異なるならば、読み出す論理レジスタ番号
に対応する物理レジスタは異なる。このような、論理レ
ジスタ番号から物理レジスタ番号への変換を、仮想レジ
スタ制御回路405では行なう。また、分岐命令であるこ
とを示す信号BRが1となったとき、GRの管理状態を退避
し、予測状態で、命令を実行後その予測が失敗と判明し
たとき、すなわち、本実施例では、TKNが1になったと
き、管理状態をBC命令以前の状態に戻す制御も行なう。
詳細は第5図に示す。以下に、仮想レジスタ制御回路で
生成される信号を示す。
(1)RPR:R1M1によって指定される論理レジスタ番号に
対応する物理レジスタ番号を示す。このRPRは読み出し
に用いる物理レジスタの番号を示す。すなわち、第3図
で示した加算命令Aの場合、レジスタR1は読み出し用の
汎用レジスタの番号でもある。したがって、この命令の
場合、この汎用レジスタR1に対して割り当てられた物理
レジスタからオペランドを読み出す必要がある。したが
って、この読み出しに使用する物理レジスタを指定する
ときにそのレジスタの番号がRPRとして使用される、R1M
1がBC命令のM1部であるとき、それを論理レジスタ番号
とみなし、RPRを出力する。
(2)APR:CRが1、すなわち命令レジスタにセットされ
ている命令がGRの内容を変更する命令であるとき、R1M1
によって指定される論理レジスタ番号に対応して新たに
割り当てられた演算結果を格納すべき物理レジスタ番号
を示す。CRが1でないときのAPRの値は意味を持たな
い。この物理レジスタ番号APRは、内容を更新するのに
使用する物理レジスタの番号として使用される。したが
って、第2図で示したA命令のR1部で示される論理レジ
スタ番号1に対応するRPRとAPRは、異なる物理レジスタ
番号となる。すなわち、RPRは読み出すべき物理レジス
タの番号、APRは結果を格納すべき物理レジスタの番号
を表す。
物理レジスタ群406は、物理レジスタと、その読み出
し、書き込みの制御回路から成る。データを読み出すと
き読み出すべき物理レジスタ番号RPRを受け、その物理
レジスタの内容を演算器へセットするデータRRDとして
出力する。また、データを書き込むとき各演算器Ei(i:
0〜n)によって出力される演算終了を示す信号EOPi
(i:0〜n)と同時に出力される。レジスタ書き込み信
号RWi(i:0〜n)が1となり、これに応答して書き込む
べき物理レジスタの番号WPRI(i:0〜n)によって示さ
れる物理レジスタに、演算結果SRDi(i:0〜n)を書き
込む。
演算器Ei(i:0〜n)407は、命令デコーダ403から送
られる演算の内容を示す信号OPを、並列演算制御回路40
4から送られる演算開始信号BOPi(i:0〜n)が1のとき
とり込み、これで指定される演算を開始する。この時OP
がGRのデータをオペランドとして必要とすることを示す
ならば、物理レジスタ群406から送られるデータを演算
のオペランドとする。演算器は一旦BOPi信号によって起
動をかけられると、演算終了まで起動時にとり込んだ情
報を保持しながら演算を行なう。すなわち、演算途中で
RRDが変っても、セットされたオペランドデータは変わ
らない。メモリからも演算器にセットすべきデータが送
られてくるが、その制御に関しては、本実施例の結果,
本質とは関連がないので、図示せず説明も省略する。以
下に演算器Eiで生成される信号を示す。
(1)EOPi(i:0〜n):その演算器での演算が終了し
たことを示す。演算サイクルが複数の演算では、最後の
演算サイクルに立つ。本信号は、並列演算制御回路40
4、分岐判定回路408に送出される。
(2)CCi(i:0〜n):演算した命令がCCを変更する命
令であるときのCCである。
EOPiと同時に出力される。本信号は、分岐判定回路408
に送出される。
(3)WPRi(i:0〜n):BOPi(i:0〜n)が1となって
いる演算器Ei(i:0〜n)は、命令デコーダ403から送ら
れる信号RCが1、すなわちGRを変更する命令であること
を示すとき、演算結果を格納する物理レジスタの番号を
示すAPRを演算器内に取り込む。WPRiは、演算結果を格
納する物理レジスタ番号であり、演算器内に保持されて
いるAPRと同一の内容である。WPRiは、後述するRWi信号
と同時に出力され、RWiが1のときのみ有効である。本
信号は、物理レジスタ群406に送出される。
(4)RWi(i:0〜n):BOPi信号が1のとき、CRを演算
器内に取り込み、RWiは、演算結果をGRに格納する命令
であることを示す信号であり、演算器内に保持されてい
るCRと同一の内容である。RWiは、EOPi信号と同時に出
力され、EOPiが1のときのみ有効である。本信号は物理
レジスタ群406に送出される。
(5)SRDi(i:0〜n):演算器Eiの演算結果である。E
OPiが1のときのみ有効である。本信号は、物理レジス
タ群406に送出される。
分岐判定回路408は、BC命令の分岐判定を行なう回路
である。BC命令が命令レジスタ402にセットされると同
時に、BC命令であることを示す信号BRが1となり、分岐
判定回路に起動をかける。同時に並列演算制御回路404
からCCが決定される演算器の番号を示す信号ECCが送ら
れて来る。分岐判定回路408は、起動をかけられている
否かにかかわらず、常に演算器から送られるCCを管理し
ている。すなわち、演算器対応にCCの有効,無効状態を
保持するレジスタ(以後、CCVRi(i:0〜n)と記す。)
をn+1本持ち、BOPiにて対応するそのCCVRiを0にク
リアし、EOPiと同時にCCiが送られてきたときに1にセ
ットする。送られたCCは演算器対応にCCの値を保持する
レジスタ(以後、CCRi(i:0〜n)と呼ぶ)に格納され
る。BRが1となりECCが送られて来ると、分岐判定回路4
08はECCで示される演算器に対応するCCVRiを参照する。
参照したCCVRiが1であるとき、CCを決定する命令の演
算は既に終了し、CCRiにはその命令によって設定された
CCの値が格納されている。命令レジスタにセットされて
いる命令がBC命令であるとき、R1M1はBC命令のM1部、す
なわち分岐のマスクを示す。そのマスクと設定されてい
るCCによって分岐の判定を行う。参照したCCVRiが0で
あるとき、CCを決定する命令の演算はまだ実行中である
ので、CCが設定されるまで分岐の判定は待たされる。分
岐の判定信号TKNは、分岐成立のときにのみ1となり、
その他の状況では常に0を示す。BJは分岐成立不成立に
かかわらず分岐判定がなされたとき1となる分岐判定終
了信号である。分岐判定は、CCが既に設定されている場
合にはただちになされるが、CCが設定されていない場合
には、演算器でCCが決定された次のサイクルでなされ
る。分岐判定終了信号がBRが1のときに送られて来る分
岐のマスクR1M1は、分岐の判定がなされるまで、分岐判
定回路408内に保持される。
第5図に第4図で示した仮想レジスタ制御回路の詳細
を示す。本実施例による動的レジスタ割り当てを用いた
情報処理装置では、いずれかの論理レジスタの内容を変
更する命令を実行する毎に、その命令が指定する論理レ
ジスタに対応して新たに別の物理レジスタを割りあてる
ことにより、異なる命令による、同一の論理レジスタへ
のデータ書き込みの順序性を逆転できる。すなわち、同
一論理レジスタ番号の論理レジスタを変更する2つの命
令A,Bがあるとき、後続の命令Bのその論理レジスタへ
の書き込みを先行する命令Aがその論理レジスタに書き
込む以前に実行できる。命令A,Bの変更する論理レジス
タ番号に対応する物理レジスタ番号を、それぞれa,bと
すれば、命令B以降の命令がその論理レジスタ番号のレ
ジスタからデータの読み出しを行なうときの物理レジス
タ番号bの物理レジスタから読み出しを行なうので、物
理レジスタaは概念的順序が命令B以前の命令の処理が
すべて終了した後、命令B以後の命令によっては永久に
参照されない。したがって、概念的順序が命令B以前の
命令の処理がすべて終了した後には、物理レジスタa全
く別のどの論理レジスタにも対応しない物理レジスタ
(これを空き物理レジスタと呼ぶ。)と見なすことがで
き、B以降の後続命令がいずれかの論理レジスタを変更
する命令であるとき、データの書き込みを行なう物理レ
ジスタとして、その物理レジスタaをその論理レジスタ
に割りあてることが可能である。このように、今まで論
理レジスタに割り当てられていた物理レジスタが空きレ
ジスタとなるとき、該物理レジスタは解放されたと言う
ことにする。
以上に述べた物理レジスタの再利用を効率良く行なう方
法として、次のような方法が考えられる。この方法で
は、空き物理レジスタの番号を保持するレジスタ群RAQ
を設けている。RAQを構成する個々のレジスタをRAQレジ
スタと呼び、その本数は本実施例においては、物理レジ
スタの本数から論理レジスタの本数16を引き、これに、
分岐予測状態で命令を実行中に書き換えられる可能性の
ある物理レジスタの最大本数を加えたものとする。本実
施例において、このRAQレジスタの本数はl+1本であ
るとする。RAQはFIFOのキュー構造をしており、RAQレジ
スタにはおのおの番号付けがなされ、入力ポインタと出
力ポインタによって、それぞれ新たに解放された物理レ
ジスタ番号を格納すべきRAQレジスタ番号、新たに割り
当てるべき物理レジスタ番号の格納されているRAQレジ
スタ番号が示される。ある物理レジスタが解放されたと
き、その物理レジスタ番号をRAQの入力ポインタの指すR
AQレジスタへ格納する。命令がGRを変更する命令で、変
更するGRの論理レジスタに対応して新たに物理レジスタ
を割り当てる必要のあるとき、RAQの出力ポインタによ
って示される番号のRAQレジスタに保持されている番号
の物理レジスタを割り当てる。以上に述べた動的レジス
タ割り当てを用いることを本実施例の前提とする。以
下、第5図を用いて仮想レジスタ制御回路405の説明を
行なう。
レジスタ割り当て管理回路501は、CRが1すなわち命
令レジスタにセットされた命令がGRを変更する命令であ
るとき、論理レジスタ番号から物理レジスタ番号へ変換
する表の出力である TDi(i:0〜15)において、R1M1によって示される論理レ
ジスタ番号をiとするTDiに新たにAPRによって示される
物理レジスタ番号を割りあて、STDi(i:0〜15)として
出力し、解放された物理レジスタ番号FPRのRAQへの登録
を管理する。RAQへの登録のための信号として、RAQの入
力ポインタ、出力ポインタを生成するために後述するPI
P,POPを受け取り、次の入力ポインタ、出力ポインタと
してNIP,NOPを出力する。詳細は第6図を用いて後述す
る。
RAQ502は、空き物理レジスタの番号を保持するレジスタ
群である。前述したように、個々のレジスタをRAQレジ
スタと呼ぶ。前述したようにRAQレジスタの数はl+1
本とする。FPRで示される解放された物理レジスタの物
理レジスタ番号はCRが1のとき、PIPIの指すPAQレジス
タへセットされる。
セレクタ503は、RAQレジスタl+1本の出力からPOP
によって示されているRAQレジスタ番号のRAQレジスタに
保持されている物理レジスタ番号を選択する。出力され
る信号APRは、この選択された信号で、GRを変更する命
令が命令レジスタにセットされたとき、変更される論理
レジスタに対し割りあてるべき物理レジスタ番号を示
し、物理レジスタ割りあて管理回路501と演算器407に送
られる。
RAQはPIP,POPにより入力すべきRAQレジスタ番号と出
力すべきRAQレジスタ番号が指定され、FIFO方式で管理
される。すなわち、最も新たにRAQに登録された物理レ
ジスタ番号は、既に登録されていた物理レジスタ全てが
割りあてられた後に、割りあてられる。
504は、論理レジスタ番号を物理レジスタ番号に変換
するための2組の表RMT0及びRMT1であり、それぞれ16本
の論理レジスタ対応に16本のレジスタ(以下、個々のレ
ジスタをRMTレジスタと呼ぶ)を持ち、その論理レジス
タ番号に対応する物理レジスタ番号を保持する。交換表
の更新データSTD0〜15は、RMT0又はRMT1のうち後述する
SMの示す側に、第3図に示すタイミングTiにおいて命令
の種類に関らず毎サイクルセットされる。RMTを2面持
つ理由については後述する。
セレクタ505は、SMによってRMT0又はRMT1のいずれか
を選択するセレクタである。TD0〜15は、セレクタ505で
セレクタされた変換表の内容である。
セレクタ506は、R1M1の示す論理レジスタ番号がiで
あるとき、TDiを選択するセレクタである。このセレク
タにより、GRを読み出す命令において、読み出す論理レ
ジスタ番号を実際に読み出すデータが格納されている物
理レジスタの物理レジスタ番号に変換する。RPRは選択
された物理レジスタ番号である。
507は、回路501が出力する、次の出力ポインタNOPを
保持する2組のレジスタOPQ0及びOPQ1である。NOPはOPQ
0又はOPQ1のうちSMで示される側に、第3図で示すタイ
ミングTiにおいて毎サイクルセットされる。
508は、回路501が出力する、次の入力ポインタNIPを
保持する2組のレジスIPQ0又はIPQ1である。NIPはIPQ0
又はIPQ1のうち、SMの示す側に、第3図で示すタイミン
グTiにおいて毎サイクルセットされる。OPQ,IPQを2面
ずつ持つ理由については後述する。
セレクタ509,510は、それぞれSMによってOPQ0又はOPQ
1,IPQ0又はIPQ1を選択するセレクタである。POP,PIP
は、それぞれセレクタ509,510によって選択された出力
であり、前述のRAQの出力ポインタ、および入力ポイン
タである。
レジスタ退避管理回路511は、分岐予測が失敗すなわ
ちTKNが1となったとき、BC命令の処理開始の後、予測
状態にて実行した命令で変更したGRの管理状態をそれら
の命令による変更前の状態に回復し、またBC命令が命令
レジスタにセットされたとき、すなわちBRが1となった
とき、予測失敗となる場合に備えて、GRに関する後述の
管理情報を退避させるためのポインタSMの制御を行な
う。詳細は第7図を用い後述する。以上が、仮想レジス
タ制御回路405の概要である。
次に、第6図を用いて物理レジスタ割りあて管理回路
501の詳細を説明する。
比較器601は、論理レジスタ番号対応に16個あり、命
令のR1部を示すR1M1の値と0から15までの定数値を比較
し、一致したとき1を、不一致のとき0を出力する。M
シリーズアーキテクチャは、R1部は4ビットであるの
で、比較器601の出力のうち必ず一つが1で残りは全て
0である。
論理積を与える回路(以下、AND回路と記す)602は、
論理レジスタ対応に16個あり比較器601の出力とGRを変
更することを示す信号CRの論理積を与える。この出力が
1であるとき、1となっている比較器601の番号を論理
レジスタ番号とするGRを変更することを示す。
セレクタ603も論理レジスタ対応に16個あり、AND回路
602の出力結果にしたがって、TDi(ただしi:0〜15)ま
たはAPRをセレクトする。AND回路602の出力結果が1で
あるとき、APRを選択、0であるときTDiを選択する。TD
iは、GRを読み出す際に論理レジスタ番号から物理レジ
スタ番号へ変換するための変換表に格納されている論理
レジスタiに対応する物理レジスタの番号である。APR
は、GRを変更する命令が命令レジスタにセットされたと
き、変更する論理レジスタの論理レジスタ番号に対して
新たに割りあてるべき物理レジスタの番号を示す。セレ
クタ603からの出力STDi(i:0〜15)は、命令レジスタに
セットされている命令がGRを変更しないでその内容を読
み出す命令であるとき、読み出し対象の物理レジスタ番
号TDiそのものであり、GRを変更する命令であるとき、
変更する論理レジスタ番号に対応する物理レジスタ番号
のみ、新に割り当てた物理レジスタの番号APRに置い替
えた内容となる。
セレクタ604は、AND回路602の出力結果によって、TDi
から1つを選択するセレクタである。すなわちi番目の
AND回路602の出力が1のときTDiを選択する。選択され
たTDiは信号線FPRに出力され、これは解放された物理レ
ジスタ番号を示す。FPRは、R信号が1であるときにの
み有効である。
加算器605は、GRを変更する命令が命令レジスタにセ
ットされたとき、GRを変更する次の命令で割りあてるべ
き物理レジスタ番号が格納されているRAQレジスタを示
す信号NOPを生成する加算器である。簡単のため1つの
命令で1つのGRを変更することを前提としているので、
加算器605の一方の入力を1としている。加算器605の他
方の入力POPは、命令レジスタにGRを変更する命令が現
在セットされている場合、新たに割りあてるべき物理レ
ジスタ番号の格納されているRAQレジスタの番号を示
す。
セレクタ606は、命令レジスタにセットされている命
令がGRを変更する命令であるとき1となる信号CRが1の
とき加算器605の出力を、0のときPOPを選択する。NOP
は、その選択された信号である。
加算器607は、GRを変更する命令が命令レジスタにセ
ットされたとき、GRを変更する次の命令で解放される物
理レジスタの番号を格納するRAQレジスタを示す信号NIP
を生成する加算器である。加算器607の一方の入力を1
としているのは、加算器605で述べた理由と同じであ
る。加算器607の他方の入力PIPは、命令レジスタにGRを
変更する命令が現在セットされた時に解放されることに
なる物理レジスタの番号を格納するRAQレジスタの番号
を示す。加算器605と607は出力がl+1となるまで加算
され、次に0へ戻る。l+1はRAQレジスタの本数であ
る。
セレクタ608は、CRが1のとき加算器607の出力を、0
のときPIPを選択する。NIPは、その選択された信号であ
る。
以上から分かるように、本実施例では、レジスタ群RA
Qは空きになった物理レジスタの番号をそれらが空きに
なった時刻が古いものから順に並べて保持し、それらを
空きになった時刻が古いものから順に新に論理レジスタ
に割り付けるように、これらの入力ポインタ、出力ポイ
ンタが管理されている。これにより、極めて簡単に空き
状態にある物理レジスタを選択することが出来る。
さらに、本実施例では、レジスタ更新命令を実行する
ときには、そのレジスタ更新命令の種類によらないで、
必ず、空き状態の物理レジスタ、その命令が指定する更
新されるべき論理レジスタに割り当てる。このレジスタ
割り当て方法は分岐命令を予測で実行している場合にも
用いる。この結果、分岐命令の実行前に実行された先行
するいずれかのレジスタ更新命令が指定する論理レジス
タと同じ論理レジスタを指定する後続のレジスタ変更命
令が分岐予測状態で実行されたときには、この後続のレ
ジスタ更新命令が指定した論理レジスタには、この先行
するレジスタ更新命令が指定した同じ論理レジスタに割
り当てられた物理レジスタと異なる物理レジスタが割り
当てられる。したがて、分岐予測状態で実行されたこの
後続のレジスタ更新命令が、この先行するレジスタ更新
命令に割り当てられた物理レジスタの内容を更新するこ
とはない。したがって、後に分岐予測が失敗と判明した
時点において、物理レジスタを分岐予測実行前の状態に
戻すには、この予測状態で実行された後続のレジスタ更
新命令に割り当てられた物理レジスタの割り当てを無効
にするだけでよい。しかも、本実施例では、このレジス
タの割り当ての無効処理は分岐命令の予測実行の直前の
レジスタ割り当て情報を退避しておき、分岐予測が失敗
と判明したときに、この退避したレジスタ割り当て情報
を回復ればよく、レジスタの回復が簡単に行える。同様
に、空きレジスタ情報を退避回復すれば、空きレジスタ
情報も分岐予測実行開始前の情報に簡単に戻せる。以上
が、物理レジスタ割りあて管理回路501の詳細である。
次に第7図を用いて、レジスタ退避管理回路511の詳
細を説明する。動的レジスタ割り当てを用いるとき、第
5図に示した論理レジスタ番号から物理レジスタ番号へ
変換する表RMTと、RAQの入力ポインタPIPと出力ポイン
タPOPの予測状態に入る直前の値を予測状態に入る時に
退避しておき、予測失敗が判明したときにそれらを元に
戻す、という方法を用いることにより、予測失敗時のGR
の回復を実現できる。ただし、ここで述べているGRの回
復とは、ターゲット命令以降の実行にあたって、GRの値
として正しいものを読み出すことのできる状態に回復す
るという意味であり、予測中に書き込んだ物理レジスタ
の内容を元に戻すという意味ではない。この方法を用い
て予測失敗時のGRの回復を行なうためには、入力ポイン
タPIP、出力ポインタPOPを予測状態の直前の値に戻すだ
けでなく、戻したPIPとPOPによってはさまれ、全体の物
理レジスタの本数から論理レジスタの数16を引いた数だ
けある。解放されている物理レジスタのすべての番号が
格納されているRAQレジスタのおのおのが、予測実行状
態で変更されることなく予測状態になる前と同じ内容で
あることが前提である。もし仮に、予測状態下で複数の
GRを変更する命令によって新たに物理レジスタに割りあ
てられ、PIPが予測状態前のPOPの示すRAQレジスタの位
置を越えたRAQレジスタを示し、そのRAQレジスタへ解放
された物理レジスタの番号が書き込まれたとき、PIP,PO
Pを予測状態前の値に戻しても、GRの状態管理情報は完
全には復元されたことにはならない。。本実施例では、
RAQレジスタ全体の本数l+1から空き物理レジスタの
数を引いた数のRAQレジスタを、分岐予測中のGR変更用
に持っている。その数をiとすれば、分岐予測時に実行
できるGR変更命令の最大数は、1つの命令によって変更
されるGRの最大数をjとすれば、i/jとなる。この値がS
UPによって抑止されるまでに実行可能な最大の命令数で
あり、これを越えて命令を実行しようとするときSUPは
1となる。論理和を与える回路701(以下、OR回路と記
す)は、BC命令が命令レジスタにセットされたことを示
す信号BRと分岐判定の結果、分岐成立が判明したことを
示す信号TKNの論理和を与える回路である。出力される
信号が1であるとき、予測状態に変化があることを示
す。
702は論理否定回路であり、フリップフロップ703の値
を入力し、その否定を再び703に入力する。信号SMはフ
リップフロップ703の出力であり、それぞれ2組ずつあ
るOPQ,IPQ,RMTのうち、入力および出力すべき側を示
す。
フリップフロップ703は、OR回路701の出力が1のと
き、論理否定回路702の出力をセットし、SMを0から1
または1から0へ切り替える。すなわち使用すべきOPQ,
IPQ,RMTをもう一方の側に切り替えることを示す。それ
まで非予測状態であったならば、上記切り替えによって
使用されなくなった側のOPQ,IPQ,RMTには、予測状態に
入る直前のGR管理情報が残ることになり、これはすなわ
ちGRの管理情報の退避を意味し、逆にそれまで予測状態
であったならば、上記切り替えによって新たに使用する
ようになった側のOPQ,IPQ,RMTには、予測状態に入る直
前のGR管理情報が入っていたわけであり、これはすなわ
ち分岐予測失敗に伴うGRの管理情報の回復を意味する。
OPQ,IPQ,RMTを2面持つ理由は、以上述べたように一方
予測状態時の退避用とするためである。以上がレジスタ
退避管理回路511の詳細である。
第8図は、第2図のプログラム例をこの装置で処理し
た場合の主要信号のタイミングを示しており、これを用
いて以下では装置の動作の概要を説明する。命令レジス
タにセットされるタイミングは第3図に等しい。説明の
簡単化のために、第1番目の命令Aが命令レジスタに設
定されるCOサイクルにおいて、SMの値は0、PIP,POPの
値はそれぞれx,y,RMT0,RMT1の全体の内容をまとめてa0,
b0とする。
時刻T0において命令レジスタに第1の命令Aがセット
され、命令が解読された結果、CRに1が立つ。A命令は
GRを変更する命令であるため、変更する論理レジスタ番
号1に対応する物理レジスタ番号(POPで示されるRAQレ
ジスタy番に格納されている。)を割りあてる、このと
き、解放された物理レジスタの物理レジスタ番号は、時
刻T1においてRAQレジスタx番に格納される。PIP,POP
は、CRが1であるため1加算され、T1においてx+1,y
+1となる。COサイクルでは、演算器E0に起動をかける
ためにB0P0が発行され、E0は演算を開始する。
時刻T1において第2の命令BCが命令レジスタにセット
され、命令が解読された結果、BRに1が立つ。BC命令よ
り先行し、かつ概念的に最後に条件コードを設定する命
令、すなわち第1番目の命令Aの演算が行なわれている
演算器の番号は上述のごとく0であるため、命令レジス
タにセットされている命令がBC命令であることにより発
行されるECC信号として0が立つ。このとき、IPQ0にx
+1,OPQ0にy+1がセットされ、PIP,POPにx+1,y+1
が立つ。またPMT0には、a0の論理レジスタ番号1に対応
する物理ジスタ番号のみ変更された内容a1がセットさ
れ、TD0〜15にはa1が立つ。BRが1となりGRの管理情報
を退避するために、SMが1となる。
時刻T2において第3の命令Lが命令レジスタにセット
される。GRを変更する命令としての処理である、物理レ
ジスタの割りあて、解放された物理レジスタの番号のRA
Qへの登録、PIP,POPの変更は、時刻T0においてなされた
第1番目のA命令の処理におけると同様に行われるが、
SMが1であるために、IPQ1,OPQ1に前命令がBC命令でIPQ
0,OPQ0の値のx+1,y+1に変化が無かったために、そ
れぞれIPQ0,OPQ0の値x+1,y+1がセットされ、PIP,PO
PはそれをSMによってセレクトしたx+1,y+1が立つ。
また同様に、RMT1にはRMT0の内容a1がセットされ、それ
をb1とする。TD0〜15は、SMによってセレクトされたb1
が立つ。TPQ0,OPQ0,RMT0の内容は変化しない。
時刻T3において第4番目の命令Lが命令レジスタにセ
ットされる。GRを変更する命令としての処理は、第1番
目のA命令、第3番目のL命令と同様でありIPQ1にx+
2が、OPQ1にy+2がセットされ、1となっているSMで
それがセレクトされ、PIPにx+2,POPにy+2が立つ。
C3サイクルにおいて、演算器E0では第1番目のA命令が
終了し、演算が終了したことを示す信号EOP0が1とな
り、それと同時に演算結果に基づいてCC0が立つ。RMT1
にはb2がセットされ、1となっているSMによってそれが
セレクトされ、TD0〜15はb2となるが、b2はb1のうち第
3番目の命令Lで変更される論理レジスタ番号1に対応
する物理レジスタ番号のみ変更された内容である。IPQ
0,OPQ0,RMT0の内容は変化しない。
時刻T4において第5番目の命令Lが命令レジスタにセ
ットされる。GRを変更する命令としての処理は、第3番
目のL命令等の処理と同様であり、IPQ1にx+3が、OP
Q1にy+3がセットされ、それが1となっているSMによ
ってセレクトされ、PIPにx+3,POPにy+3が立つ。同
様に、RMT1にb2のうち第4番目の命令Lで変更される論
理レジスタ番号2に対応する物理レジスタ番号のみ変更
された内容b3がセットされ、1となっているSMでそれが
セレクトされ、TD0〜15はb3が立つ。IPQ0,OPQ0,RMT0の
内容は変化しない。C4サイクルにおいて、G3サイクルで
設定されたCC0を用い分岐判定が下される。分岐成立す
なわち予測失敗であるので、TKNが1となる。その結果
ターゲット命令の処理に際し、GRを管理するTD0〜15お
よびRAQの入力,出力ポインタを予測前の状態に戻すた
めに、SMが0となる。
C4サイクルにおいて分岐成立の判定がなされた結果、
時刻T5においてBC命令のターゲット命令である第6番目
の命令Lが命令レジスタにセットされる。同時に0示し
ているSMによって、PIP,POPの値、TD0〜15の内容は、IP
Q0,OPQ0,RMT0に保持されている値、内容すなわちx+1,
y+1,a1となり、予測状態の前に戻る。このようにして
第6番目のL命令は、予測状態下で行なわれた処理があ
たかも行なわれなかったかの状態の下で処理を開始する
ことができる。
以上が、第2図の命令列を本情報処理装置で処理した
場合の動作の概要である。このようにして、分岐予測が
失敗した場合の予測して実行した命令によるGR変更のオ
ーバーランの回復を、瞬時に行なうことができる。
〔発明の効果〕
本願発明では、動的レジスタ割り当てあるいはレジス
タ名称変更を採用するデータ処理装置内において、予測
実行開始時に、レジスタの割り当て情報を退避し、予測
失敗時にこれを回復するので、予測失敗時のレジスタ割
り当て情報の回復が簡単に行なえる。
【図面の簡単な説明】
第1図は典型的な命令フォーマット、第2図は本発明の
実施例で実行する命令列の例を示す図、第3図は本発明
の実施例による、第2図の命令列の処理の流れを示す
図、第4図は本発明の実施例の全体構成を示す図、第5
図は仮想レジスタ制御回路の詳細構成を示す図、第6図
は物理レジスタ割りあて管理回路の詳細構成を示す図、
第7図はレジスタ退避管理回路の詳細構成を示す図、第
8図は第2図の命令処理における、本実施例中の信号、
レジスタ等のタイムチャートである。 402……命令レジスタ、403……命令デコーダ、404……
並列演算制御回路、405……仮想レジスタ制御回路、406
……物理レジスタ群、407……演算器、408……分岐判定
回路、501……物理レジスタ割りあて管理回路、503……
レジスタ割りあてキュー(RAQ)、504……レジスタ変換
表(RMT)、507……アウトポイントキュー(OPQ)、508
……インポインタキュー(IPQ)、511……レジスタ退避
管理回路。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 庄内 亨 東京都国分寺市東恋ヶ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 釜田 栄樹 東京都国分寺市東恋ヶ窪1丁目280番地 株式会社日立製作所中央研究所内 (56)参考文献 特開 昭57−166649(JP,A) 特開 昭60−129838(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】命令で指定可能なレジスタ番号の総数より
    多い複数のレジスタと、 実行すべき命令が指定する、データ書き込み用のレジス
    タの番号に対して、該複数のレジスタの一つを割り当て
    る手段であって、複数の命令が指定した同一のレジスタ
    番号に対して異なるレジスタを割り当て可能なものと、 該割り当てられた一つのレジスタをデータ書き込み用の
    レジスタとして使用して該命令を実行する手段と、 複数の実行すべき命令が指定した複数のレジスタ番号に
    対して該割り当て手段により割り当てられたレジスタを
    識別するためのレジスタ割り当て情報を記憶する手段
    と、 上記実行すべき命令もしくは他の実行すべき命令が指定
    する、データ読み出し用のレジスタの番号に対してすで
    に割り当てられたレジスタを、該レジスタ割り当て情報
    に基づいて判別し、その判別されたレジスタをデータ読
    み出し用のレジスタとして使用して、上記実行すべき命
    令もしくは上記他の命令を実行する手段と、 分岐命令に応答して、その命令が指定する分岐条件が成
    立したか否かを判定する手段と、 その分岐命令に対する上記判定手段の判定結果の予測値
    に基づいてその分岐命令の分岐先命令列およびその分岐
    命令の後続列の命令のいずれか一方が予測で実行される
    ときに、上記レジスタ割り当て情報を退避する手段と、 その分岐命令に対する上記判定手段の判定結果が上記予
    測値と異なると判明したために、上記実行された一方の
    命令列の実行が無効とされ、該分岐先命令列および該後
    続命令列の内の他方の命令列が実行されるときに、該退
    避されたレジスタ割り当て情報を回復する手段とを有す
    る情報処理装置。
  2. 【請求項2】該レジスタ割り当て情報を記憶する手段
    は、それぞれ分岐命令実行前と予測実行状態とにおける
    レジスタ割り当て情報を記憶する少なくとも二つの記憶
    手段を有し、 該レジスタ割り当て情報を退避する手段と該退避された
    レジスタ割り当て情報を回復する手段は、該二つの記憶
    手段を切り替えてそれぞれ退避あるいは回復を行なう請
    求項1記載の情報処理装置。
JP59257585A 1984-12-07 1984-12-07 情報処理装置 Expired - Lifetime JPH081601B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP59257585A JPH081601B2 (ja) 1984-12-07 1984-12-07 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP59257585A JPH081601B2 (ja) 1984-12-07 1984-12-07 情報処理装置

Publications (2)

Publication Number Publication Date
JPS61136132A JPS61136132A (ja) 1986-06-24
JPH081601B2 true JPH081601B2 (ja) 1996-01-10

Family

ID=17308307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59257585A Expired - Lifetime JPH081601B2 (ja) 1984-12-07 1984-12-07 情報処理装置

Country Status (1)

Country Link
JP (1) JPH081601B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
JP2845578B2 (ja) * 1990-06-19 1999-01-13 甲府日本電気 株式会社 命令制御方式
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
JP6107904B2 (ja) * 2015-09-09 2017-04-05 日本電気株式会社 プロセッサ及びストア命令の変換方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57166649A (en) * 1981-03-30 1982-10-14 Ibm Data processing system

Also Published As

Publication number Publication date
JPS61136132A (ja) 1986-06-24

Similar Documents

Publication Publication Date Title
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
KR0122529B1 (ko) 슈퍼스칼라 프로세서 시스템에서 복수의 명령어를 단일 사이클 동안 디스패치하기 위한 방법 및 장치
EP0565849A2 (en) A method and system for synchronizing threads within a process
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
EP0394624B1 (en) Multiple sequence processor system
KR0122528B1 (ko) 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
US5898882A (en) Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
US5812810A (en) Instruction coding to support parallel execution of programs
JPS5991546A (ja) 中央処理装置
JPH0668726B2 (ja) レジスタ管理システム
JP7793543B2 (ja) マスターシャドウ物理レジスタファイルを利用するための方法及びシステム
JPH0782438B2 (ja) コンピュータ・システム
KR100242403B1 (ko) 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
JPH06230961A (ja) データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
US5860014A (en) Method and apparatus for improved recovery of processor state using history buffer
US6363474B1 (en) Process switching register replication in a data processing system
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
JPH081601B2 (ja) 情報処理装置
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
KR0175986B1 (ko) 분산 완전 제어 시스템 및 디스패치 장치
JP2592586B2 (ja) 情報処理装置
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term