JP2592586B2 - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2592586B2
JP2592586B2 JP10953395A JP10953395A JP2592586B2 JP 2592586 B2 JP2592586 B2 JP 2592586B2 JP 10953395 A JP10953395 A JP 10953395A JP 10953395 A JP10953395 A JP 10953395A JP 2592586 B2 JP2592586 B2 JP 2592586B2
Authority
JP
Japan
Prior art keywords
instruction
register
branch
executed
registers
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
JP10953395A
Other languages
English (en)
Other versions
JPH08249182A (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 Microcomputer System Ltd
Hitachi Ltd
Original Assignee
Hitachi Microcomputer System Ltd
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 Microcomputer System Ltd, Hitachi Ltd filed Critical Hitachi Microcomputer System Ltd
Priority to JP10953395A priority Critical patent/JP2592586B2/ja
Publication of JPH08249182A publication Critical patent/JPH08249182A/ja
Application granted granted Critical
Publication of JP2592586B2 publication Critical patent/JP2592586B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

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

Claims (2)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10953395A JP2592586B2 (ja) 1995-05-08 1995-05-08 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10953395A JP2592586B2 (ja) 1995-05-08 1995-05-08 情報処理装置

Publications (2)

Publication Number Publication Date
JPH08249182A JPH08249182A (ja) 1996-09-27
JP2592586B2 true JP2592586B2 (ja) 1997-03-19

Family

ID=14512671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10953395A Expired - Lifetime JP2592586B2 (ja) 1995-05-08 1995-05-08 情報処理装置

Country Status (1)

Country Link
JP (1) JP2592586B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060090061A1 (en) * 2004-09-30 2006-04-27 Haitham Akkary Continual flow processor pipeline

Also Published As

Publication number Publication date
JPH08249182A (ja) 1996-09-27

Similar Documents

Publication Publication Date Title
US5553305A (en) System for synchronizing execution by a processing element of threads within a process using a state indicator
US5828874A (en) Past-history filtered branch prediction
US5519841A (en) Multi instruction register mapper
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
EP0106670B1 (en) Cpu with multiple execution units
EP0394624B1 (en) Multiple sequence processor system
JP3663317B2 (ja) コンピュータ・システム
US7987322B2 (en) Snoop request management in a data processing system
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
JPS61107434A (ja) デ−タ処理装置
US8171268B2 (en) Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors
JPH0782438B2 (ja) コンピュータ・システム
GB2037041A (en) Cache unit
JPH09120359A (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
US7093105B2 (en) Method and apparatus for determining availability of a queue to which a program step is issued out of program order
KR100242403B1 (ko) 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
JP2023526788A (ja) マスターシャドウ物理レジスタファイルを利用するための方法及びシステム
US5581719A (en) Multiple block line prediction
US6363474B1 (en) Process switching register replication in a data processing system
US6920549B1 (en) Branch history information writing delay using counter to avoid conflict with instruction fetching
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
JP2592586B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19961025

EXPY Cancellation because of completion of term