JP2667849B2 - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2667849B2
JP2667849B2 JP63000351A JP35188A JP2667849B2 JP 2667849 B2 JP2667849 B2 JP 2667849B2 JP 63000351 A JP63000351 A JP 63000351A JP 35188 A JP35188 A JP 35188A JP 2667849 B2 JP2667849 B2 JP 2667849B2
Authority
JP
Japan
Prior art keywords
instruction
register
address
general
operand
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
JP63000351A
Other languages
English (en)
Other versions
JPH01177127A (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 JP63000351A priority Critical patent/JP2667849B2/ja
Priority to US07/292,346 priority patent/US5075849A/en
Priority to DE3900246A priority patent/DE3900246A1/de
Publication of JPH01177127A publication Critical patent/JPH01177127A/ja
Application granted granted Critical
Publication of JP2667849B2 publication Critical patent/JP2667849B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は命令をパイプライン制御方式によって次々と
処理することを特徴とする情報処理装置において、パイ
プラインの乱れを少なくすることにより、さらに高速な
処理を実現する情報処理装置に関する。
[従来技術] パイプライン制御方式においては、命令の処理を複数
のステージに分け、各ステージをオーバラップさせなが
ら実行していく。第2図(1)は従来のパイプライン制
御方式の処理を示したものである。ここで、Dは命令語
の解読を行うステージ、Aはオペランドの実効アドレス
を計算するステージ、Bはオペランドを記憶装置から読
出すステージ、Lは記憶装置から読出したオペランドを
オペランドバッファレジスタに転送するステージ、Eは
命令個有の演算を実行するステージである。Aステージ
で行う実行アドレスの計算は、命令のインデクスパート
およびベースパートで指定した汎用レジスタの内容と命
令の一部であるディスプレイメントの値とを加算するこ
とによって行う。
パイプライン制御方式においては、1つの命令のDス
テージが終了すると該命令のAステージが開始され、そ
れと同時に後続命令のDステージが開始され、次々と複
数の命令がオーバラップしながら処理されていく。
第2図(1)に示したのは、命令I1が演算結果を格納
することによって変更する汎用レジスタの内容を直後の
命令I2がインデクスあるいはベースレジスタとして実効
アドレス生成に使用する場合において、高速化手段を用
いない場合の命令処理の流れである。この時、命令I1
演算ステージ(Eステージ)が終了し、演算結果が汎用
レジスタに格納された後、命令I2の実効アドレス生成ス
テージ(Aステージ)が開始されるため、図のように3
サイクルのオーバヘッドを生じてしまう。このように、
オペランドの実効アドレスを生成する時に使用する汎用
レジスタの内容を先行する命令が変更した場合をアドレ
スコンフリクトと呼び、従来よりいくつかの高速化方式
が考案されている。
特公昭56-46170号に記載されている方法では、汎用レ
ジスタを変更する命令のうち、オペランドとして指定さ
れた記憶装置上のデータをその時汎用レジスタに格納す
る命令(以下、L系命令を略す)においてのみ高速化を
図っている。すなわち記憶装置から読出したオペランド
バッファに転送する際、同一オペランドをアドレス生成
分レジスタにも転送することにより汎用レジスタを経由
しないので、第2図(2)に示した通りオーバヘッドを
2サイクルに低減している。
一方特願昭61-191841「先行制御方式」に示されてい
る方法は、アドレスコンフリクトを生じている後続命令
に条件を付すことによって高速化を図っている。すなわ
ち、先行する命令で変更されている汎用レジスタが後続
命令のインデクスレジスタとして指定されている場合に
は、残りのベースレジスタおよびディスプレースメント
値が共にゼロである場合に限り、また、先行命令で変更
されている汎用レジスタが後続命令のベースレジスタと
して指定されている場合には、インデクスレジスタおよ
びディスプレースメント値が共にゼロの場合に限り、記
憶装置から読出したオペランドを直接記憶装置参照用ア
ドレスレジスタに転送することにより、第2図(3)に
示した通りオーバヘッドを1サイクルに低減している。
[発明が解決しようとする課題] 上記2つの従来技術においては、高速化を図るために
条件を付している。
すなわち、第一に示した例ではL系命令に対してのみ
高速化を図っており、加算命令や減算命令がアドレスコ
ンフリフトを生じている場合には高速化されない。
また、第二に示した例では、インデクスレジスタとデ
ィスプレースメントあるいは、ベースレジスタとディス
プレースメントが共にゼロである場合にのみ高速化され
る。つまり,インデクスレジスタとベースレジスタを両
方共アドレス生成に使用する場合にはその効果を発揮す
ることができない。また、汎用レジスタの内容を変更す
る命令が加減算命令の場合、演算器を経由することが必
要なのでオーバヘッドが1サイクル増えてしまう。
本発明は、L系命令のみならず加減算命令も高速化の
対象とし、かつインデクスレジスタやベースレジスタに
何ら条件を付すことなく高速化を実現する方法を提供す
るものである。
[課題を解決するための手段] 上記目的を達成するために、本発明による情報処理装
置では、命令で指定されたインデクスレジスタの内容と
ベースレジスタの内容とディスプレースメントの値とか
ら実効アドレスを生成する従来の3入力アドレス加算器
の加算結果を保持するレジスタと、該レジスタの値と記
憶装置から読出したデータとを入力とする演算手段を新
たに備え、そして先行する命令が変更するレジスタの内
容を後続命令がアドレス生成に使用するというコンフリ
クトが存在することを検出する手段と、上記コンフリク
トを検出した時、上記3入力アドレス加算器においては
変更の終了していないレジスタの内容をゼロとみなして
アドレス加算を行わせしむる手段と、先行命令が記憶装
置から読出したデータが上記新設した演算手段に入力さ
れたことを認識して、記憶装置に対する参照アドレスと
して、送出する手段を有するところに特徴がある。
[作用] 先行命令が変更するレジスタの内容を後続命令がアド
レス生成に使用することを検出する回路は、検出結果に
よって該変更されているレジスタの読出しデータをゼロ
とすることにより、3入力アドレス加算器においてアド
レス加算の中間結果を出力せしめる。3入力アドレス加
算器の出力を保持するレジスタは、上記中間結果を先行
命令による記憶装置からのオペランド読出しまで保持
し、新設した演算手段において両者の演算を行わせる。
[実施例] 以下、本発明の一実施例を第1図〜第5図を用いて説
明する。
第1図は本発明による情報処理装置の全体構成を示し
たものであり、第3図は本発明で高速化することが可能
な命令列の一例を示したものである。まず、第3図
(1)で示した命令列の処理について、第1図を用いて
全体の流れを説明する。第3図(1)で示した命令列に
おいては、先行する命令I1がL命令であり、汎用レジス
タの3番を変更する。一方後続命令I2は加算命令(Ad
d)であり、その記憶装置上のオペランドの実効アドレ
スを計算する際に汎用レジスタ3番をベースレジスタと
して必要としている。このため、命令I1とI2は汎用レジ
スタ3番に関してアドレスコンフリクトを生じており、
命令I2のアドレスの計算は命令I1のオペランド読出しの
終了を待つことが必要である。
第1図において、第3図(1)の命令列が入力される
と、まず命令レジスタ1にL命令がセットされる。制御
回路CTL3は命令レジスタ1にセットされた命令がL命令
であることを認識し、該命令が命令のR1パートで指定し
た汎用レジスタすなわち3番の内容を変更することを記
憶すると共に、該命令の記憶装置上のオペランドのアド
レス生成にインデクスレジスタおよびベースレジスタと
して汎用レジスタ4番,8番をそれぞれ指定したことを解
釈し、かつ汎用レジスタ4番,8番が、先行するいかなる
命令ともアドレスコンフリクトを生じていない(すなわ
ち、汎用レジスタ4番,8番の内容を使用したアドレス加
算が実行可能である)ことを判断すると、アドレス加算
器7におけるアドレス加算を実行する。この場合信号線
22にはインデクスレジスタ番号4が送出され、信号線23
にはベースレジスタ番号8が送出される。この結果汎用
レジスタ群2からそれぞれの読出しアドレスに対応した
汎用レジスタの内容すなわち、4番と8番の内容が信号
線24,25にそれぞれ送出され、3入力アドレス加算器7
のインデクス入力レジスタ4とベース入力レジスタ5に
それぞれセットされる。この時信号線26,27は、インデ
クス入力レジスタ4,ベース入力レジスタ5への入力デー
タとして汎用レジスタから読出しデータである、信号線
24,25上のデータを選択するよう制御されているものと
する。(信号線35を選択する場合の制御については前述
の特願昭61-191841号に記載されており、本発明の特徴
ではないので説明を省略する。)一方、ディスプレース
メント入力レジスタ6には、命令の一部であるディスプ
レースメント部が、命令レジスタ1から直接入力され
る。この結果3入力アドレス加算器7において加算を行
い、L命令のアドレスを算出することができる。算出さ
れたアドレスは、記憶装置内のアドレスレジスタ11にセ
ットされる。この時、該L命令は先行命令とのコンフリ
クトを生じていないため、セレクト信号32は3入力アド
レス加算器7の出力データを選択するものとする。アド
レスレジスタ11にセットされたアドレスを利用して記憶
装置12を参照し、L命令のオペランドを読出し、読出し
たデータをデータレジスタ13にセットする。位置合わせ
回路14は、読出したデータから必要な部分を切出し、演
算に好適なように位置合わせを行う回路であり信号線42
によって制御される。データレジスタ13にセットしたデ
ータは、位置合わせ回路14を経てオペランドバッファレ
ジスタ15にセットされ、演算器16に入力される。演算器
16は命令の種類に応じて信号線43の制御を受けるがL命
令は演算を必要としないため、読出しデータをそのまま
演算器16を素通りし、信号線36を経て汎用レジスタ群2
に送られ、命令のR1パートで指定した番号の汎用レジス
タ3番に格納される。
一方、後続命令である加算命令は、先行命令であるL
命令に対するアドレス生成の準備が整った時点、すなわ
ち、インデクス入力レジスタ4、ベース入力レジスタ
5、ディスプレースメント入力レジスタ6にそれぞれの
データがセットされた時点で命令レジスタ1に切出され
る。この時、制御回路3において、該命令が記憶装置上
のオペランドのアドレス生成において汎用レジスタ3番
と1番の読出しを必要としていることを解読し、かつ、
汎用レジスタ3番を先行命令であるL命令が変更してい
ることを認識する。前述の特願昭61-191841号にて示さ
れた方法では、このようなケースを高速処理することが
できない。なぜならば、後続命令である加算命令の、先
行命令とコンフリクトを生じていないベースレジスタの
番号が0でないからである。しかるに本発明によれば、
次のような手法によって高速化を実現することができ
る。
制御回路3によって命令レジスタ1に切出した命令
(加算命令)が、先行するL命令とアドレスコンフリク
トを生じていることを認識すると、コンフリクトを生じ
ている汎用レジスタ番号、すなわちこの場合インデクス
レジスタとして指定されている汎用レジスタ3番の内容
を0とみなしてアドレス加算を終了する。この結果信号
線33にはベースレジスタとして指定された汎用レジスタ
番号1の内容とディスプレースメントの値だけを加えた
結果が出力される。すなわち、従来技術で示した特公昭
56-46170号で示されたように3入力アドレス加算器7で
先行命令をオペランドの到着を待つのではなく、その前
に不完全なアドレス値を算出し、出力してしまう訳であ
る。信号線33に出力された不完全アドレスは、先行命令
のオペランド読出し終了を待ち合わせるために本発明に
より設けたレジスタ8にセットされる。一方、先行する
L命令によって記憶装置から読出されたオペランドは、
演算処理を必要としないためオペランドバッファレジス
タ15に転送それると同時に信号線35によって本発明によ
る演算手段10に入力することができる。この時、制御信
号29は信号線35を選択することを指示する。この結果、
演算手段10において、レジスタ8に格納されていたデー
タと記憶装置から読出した先行命令のオペランドデータ
を加算することができ、加算命令のオペランドアドレス
を不完全なものから完全なものとして信号線34に出力す
ることができる。また、制御回路3では、記憶装置から
オペランド読出し終了を信号線37によって認識すると、
制御信号線32により、アドレスレジスタ11の入力として
演算手段10の出力である信号線14とセレクトするよう指
示する。このようにして後続命令である加算命令のアド
レスを算出してアドレスレジスタ11にセットすることが
でき、以下L命令の場合と同様にしてオペランドを読出
す。但し、加算命令の場合にはL命令と異なり、演算器
16にて命令のR1パートで指定した汎用レジスタの内容
を、記憶装置から読出したオペランドとの加算を行い、
その結果を汎用レジスタ群2内のR1で指定された番号5
のレジスタに格納する。
第3図(1)で示した命令列を処理するためには、従
来技術による高速化によっても第2図(2)あるいは第
3図(4)に示す如く2サイクルのオーバヘッドを生じ
ていたが、これを本発明では第2図(3)に示す如く1
サイクルのオーバヘッドに抑えることができる。
次に第4図に参照して制御回路3の詳細を述べる。第
4図において、レジスタ101は命令の命令コードを、レ
ジスタ102は命令のR1パートをそれぞれ保持するもので
ある。また、デコーダ103は現在命令レジスタ1にセッ
トされている命令の命令コードを解読するものであり、
一方デコーダ104は1つ前の命令の命令コードを解読す
るものである。比較回路105,106はそれぞれ4ビットの
比較を行う回路で、1つ前の命令のR1パートすなわち、
1つ前の命令が変更する汎用レジスタ番号と、現在命令
レジスタ1に切出されている命令のインデクスパートで
指定されている汎用レジスタ番号および、ベースパート
で指定されている汎用レジスタ番号とを比較し、一致し
ているか否かを判定するものである。
L命令が命令レジスタに切出されると、その命令コー
ドがレジスタ101に、そしてR1パートで指定した汎用レ
ジスタ番号がレジスタ102にそれぞれセットされる。続
いてA命令が命令レジスタ1に切出されると、まずデコ
ーダ103によって解読し、該命令が記憶装置上のオペラ
ンドのアドレスを計算する際に、インデクスパートで指
定した汎用レジスタの値と、ベースパートで指定した汎
用レジスタの値とを必要とすることを認識する。その結
果信号線135,136をそれぞれセットする。一方、先行命
令はL命令であるため、命令コードを保持したレジスタ
101の内容をデコーダ104によって解読することにより、
L命令であることを示す信号線137がセットされる。そ
して、比較回路105,106によって、A命令がアドレス計
算のために読出そうとする汎用レジスタ番号と、先行命
令であるL命令が変更する汎用レジスタ番号とを比較
し、両者の間にコンフリクトが存在するか否かをチェッ
クする。この時、A命令のインデクスレジスタ番号は信
号線132によって比較回路105に入力され、ベースレジス
タ番号は信号線133によって比較回路106に入力される。
一方L命令が変更する汎用レジスタ番号は命令のR1パー
トで指定されるのでレジスタ102に保持されており、こ
こから2つの比較回路105,106に入力される。比較の結
果、汎用レジスタ番号が一致すれば、L命令とA命令の
間にアドレスコンフリクトが生じているということを信
号線142および143をセットすることによって示す。以上
のデコード結果および比較結果を利用して、次のような
制御によってコンフリクト時の高速化を実現する。
ANDゲート108は、先行命令がL命令であり、かつ後続
命令がオペランドのアドレス計算にインデクスパートで
指定した汎用レジスタの内容を必要とし、さらにL命令
が変更する汎用レジスタの番号とインデクスレジスタの
番号が一致した時に出力信号26をセットするものであ
る。この時コンフリクトを生じているインデクスレジス
タの内容すなわちL命令が変更しようとしている値を除
いてA命令のアドレス計算を行うために、信号線26によ
り第1図のインデクス入力レジスタ4への入力データが
ゼロとなるようセレクタを制御する。この結果、3入力
アドレス加算器7では、ベースレジスタの内容とディス
プレースメントとが加算される。同様にANDゲート109
は、先行命令がL命令であり、かつ後続命令がベースパ
ートで指定した汎用レジスタの内容をアドレス計算に必
要とし、さらにL命令が変更する汎用レジスタの番号と
ベースレジスタの番号が一致した時に出力信号27をセッ
トする。この時、3入力アドレス加算器7においてイン
デクスレジスタの内容をディスプレースメントの値のみ
を加算するように、ベース入力レジスタ5にゼロをセッ
トするべく信号線27で制御する。第3図(1)の命令列
においてはANDゲート108の出力信号26がセットされる。
ANDゲート108,109少なくともどちらかが出力信号とセ
ットすると、ORゲート116を駆動し、その出力がラッチ1
17にセットされる。ラッチ117はタイミングを合わせる
ためのものであり、その出力信号31により、第1図にお
いて、3入力アドレス加算器7の出力データがレジスタ
8にセットされる。レジスタ8は、上述の通り、3入力
アドレス加算器から出力された、インデクスレジスタの
内容あるいはベースレジスタの内容を除いた不完全なア
ドレス値を保持し、先行命令であるL命令のオペランド
読出し終了を持って、読出したオペランドデータとの加
算を可能せしむるものである。
このように、先行命令とのアドレスコンフリクトを検
出した時に、コンフリクトを生じているレジスタの3入
力加算器への入力データをゼロにするべく論理ゲート10
8,109を設けたことが本発明の大きな特徴の1つであ
る。
さて、先行命令であるL命令のオペランド読出しの終
了が記憶装置12から信号線37により通知されると、第3
図のゲート118が駆動され、信号線29が動作して演算手
段10の入力データとして信号線35を選択する。その結
果、演算手段10によって完全アドレスが算出され、その
加算結果をやはり信号線32の制御により選択してアドレ
スレジスタ11にセットする。
次に第2の例として、第3図(2)で示した命令列を
実行した場合の、本発明の高速化手法について述べる。
今回の命令列は先行命令がA命令であり、該A命令が変
更する汎用レジスタを後続のL命令がインデクスレジス
タとして使用するものである。
先行命令であるA命令のデコード終了後、後続命令で
あるL命令が命令レジスタ1にセットされた時、第4図
の制御回路は次の動作を行う。
まず命令レジスタ1にセットされた命令の命令コード
をデコーダ103で解読し、該命令がアドレス計算を行う
ためにインデクスレジスタとベースレジスタを必要とす
ることを認識して信号線135と136をセットする。一方、
レジスタ101に保持されている先行命令の命令コードを
デコーダ104にて解読し、該命令がA命令であることを
認識すると信号線138をセットする。さらに、比較回路1
05,106によってL命令の指定するインデクスレジスタ番
号およびベースレジスタ番号と、レジスタ102に保持さ
れている先行命令であるA命令のR1パート、すなわち、
A命令が変更する汎用レジスタ番号とを比較する。その
結果番号が一致すれば、それぞれ信号線142,143をセッ
トする。第3図(2)の命令列の場合、A命令のR1パー
トとL命令のインデクスレジスタが共に汎用レジスタ3
番を指定しているため、比較回路105の出力信号142がセ
ットされる。先行する汎用レジスタ変更命令がA命令の
場合には、後続のL命令のオペランドアドレス計算を行
うために、まず汎用レジスタ番号3の内容をA命令が指
定する記憶装置上の第2オペランドの値を加算し、さら
にL命令がベースレジスタとして指定している汎用レジ
スタ番号1の内容およびディスプレースメント値を加え
ることが必要である。これを式で表わすとC(GPR3)+
C(OP2)+C(GPR1)+Dとなる。ここでC( )は
カッコ内で示された汎用レジスタの内容あるいは記憶装
置上のオペランドデータの値をここで、A命令の第2オ
ペランドデータはまだ記憶装置から読出されていない訳
であるから、残りのデータを用いてアドレスの中間加算
結果を求めることを考える。すなわち、まずA命令によ
って変更される前の汎用レジスタ番号3の内容を利用し
てC(GPR3)+C(CPR1)+Dという3つのデータの加
算を行い、A命令の第2オペランドが記憶装置から読出
された時に再度加算を行う訳である。これを実現するた
めには、まず3入力アドレス加算器7においてはL命令
のオペランドアドレスの計算を通常通り行えば良い。す
なわち、インデクスパートで指定された3番の汎用レジ
スタおよびベースパートで指定された1番の汎用レジス
タの内容をそれぞれ読出し、ディスプレースメントの値
と加算すれば良い訳である。先行命令がL命令の場合
(第3図(1))には、コンフリクトを生じたインデク
スレジスタあるいはベースレジスタの値をゼロにする必
要があったが、A命令ではその動作は不要である。それ
ゆえ、先行するA命令とコンフリクトを生じていること
を認識する制御論理としてANDゲート110,111を設けてい
る。ANDゲート110は、命令レジスタ1に切出された命令
が先行するA命令とインデクスレジスタに関してコンフ
リクトを生じている時に駆動され、ANDゲート111はベー
スレジスタに関してコンフリクトを生じている時に駆動
される。両ANDゲートの出力は、3入力アドレス加算器
の入力データ制御には利用される訳ではなく、ORゲート
116を経てラッチ117にセットされ、信号線31によって3
入力アドレス加算器7の出力結果をレジスタ8にセット
するために利用される。すなわちアドレス加算器7にお
ける加算は、コンフリクトが生じていない場合と全く同
様に行う。これ以後の動作は第3図(1)の命令列の場
合と同じで、先行するA命令のオペランド読出しが終了
した時点で、読出しデータを信号線35を経由して演算手
段10に入力し、レジスタ8に保持している不完全アドレ
スとの加算を行う。一方A命令のオペランド読出しの終
了が信号線37によって制御回路3に伝えられるとANDゲ
ート118を経て信号線29をセットし、アドレスレジスタ1
1にL命令のオペランドアドレスをセットする。こうし
てL命令の記憶装置上のオペランドの読出しが可能とな
る。
この結果、先行するA命令との間にアドレスコンフリ
クトがある場合でも第2図(3)に示した如く後続命令
の処理の高速化を図ることができる。この時制御構造上
大きな役割を果しているのが第4図110,111のANDゲート
である。この2つのゲートをL命令用のANDゲート108,1
09とは別に設けることによって、先行命令がA命令の場
合もL命令の場合と同様に高速処理することが可能とな
った。
次に、第3図の例として第3図(3)に示したよう
に、半語オペランドを扱う汎用レジスタ変更命令が先行
命令となった場合を第5図を用いて説明する。
第5図の特徴は記憶装置からの読出しデータを演算手
段10に入力する際、論理回路309を経由するところにあ
る。それ以外の部分は第1図と同じである。これまで説
明に利用してきたL命令およびA命令は、共にオペラン
ドとして4バイト長のデータを扱う命令であり、記憶装
置から読出すデータや加算も全て4バイトであった。し
かるに第3図(3)に示したLH命令は、記憶装置上の2
バイト長のデータを読出し、R1パードで指定された4バ
イト幅の汎用レジスタに格納する命令で、この時記憶装
置から読出した2バイトデータの先頭ビットを符号ビッ
トとみなし、符号ビットの値を上位の2バイトに拡張す
ることにより、4バイトのデータとする。すなわち、第
6図(2)に示した如く2バイトデータの先頭ビットが
0ならば上位2バイトには0を埋め込み、‘1'ならば
‘1'を埋め込む訳である。
さて第3図(3)の命令列において、LH命令のデコー
ドおよびオペランドアドレスの計算をオペランドの読出
しは第3図(1)で示したL命令と全く同様に処理され
る。そして後続命令であるA命令が命令レジスタ1に設
定されると、L命令の場合と同様、第4図のANDゲート1
08によってインデクスレジスタに対するコンフリクトを
認識し、LH命令のオペランドアドレス計算におけるイン
デクスレジスタの入力データをゼロとする。そして不完
全なアドレス加算結果を第5図レジスタ8に保守して、
LH命令のオペランドの読出し終了を持つ訳である。LH命
令のオペランドが読出された時、演算手段10でA命令の
オペランドアドレスを求めるが、この時2バイトのオペ
ランドデータを4バイトに符号拡張することが必要であ
る。この機能を果たすのが第5図の論理回路309で、そ
の構造を第7図に示す。LH命令では読出した2バイト長
のオペランドは、アライナ14によって4バイトのデータ
パスの右端に整列させるものとすると、L命令のような
4バイトオペランドの命令では、データ線38上のデータ
がそのままデータ線200に出力されるが、LH命令の場合
には、制御線149が働くことによって上位2バイトのデ
ータとしてビット16すなわち2バイトオペランドの符号
ビットを選択し、荷号拡張を行う。符号を拡張されたデ
ータはそのままデータ線200,201を経てデータ線39に出
力され、演算手段10への入力となる。このようにして、
先行命令がLH命令の場合にも後続命令であるA命令のア
ドレスを正しく求めることができる。この時制御線149
は、第4図において、先行する命令がLH命令であること
をデコードした信号線140と、先行する命令のR1のレジ
スタ番号と後続命令(いまの場合A命令)のインデクス
レジスタ番あるいはベースレジスタ番号が一致したこと
を示すORゲート112の出力信号146とをANDすることによ
って生成される。
このように第7図に示した符号拡張回路210および第
4図に示した半語命令認識ゲート112,114を設けること
により、先行する汎用レジスタ変更命令が半語オペラン
ドを扱う場合にもL命令の場合と同様に処理の高速化を
図ることができる。また、半語オペランドを扱う命令の
うち、加算命令(AU)および減算命令(SH)も同様に高
速処理が可能となる。(減算命令については次の例で説
明する。) 次に第3図(4)の命令列の処理について説明する。
ここでは先行する汎用レジスタ変更命令が減算(S)で
ある。S命令が変更する汎用レジスタ番号3と後続命令
であるL命令のインデクスレジスタ番号が一致しており
コンフリクトが生じている。この時L命令が行うべきア
ドレス計算を式で表わすと、C(GPR3)−C(OP2)+
C(GPR1)+Dとなる。そこでA命令の場合と同様に、
まず最初にS命令の第2オペランドとの演算を除いた3
つのデータの加算すなわちC(GPR3)+C(GPR1)+D
を行い、S命令の第2オペランドを読出した時点で両者
の演算(減算)を行うことにより、L命令のペランドア
ドレスが計算できることに着目する。すなわち、先行命
令がA命令であった場合と同様に、S命令によって変更
される前のインデクスレジスタ(汎用レジスタ3番)の
内容とベースレジスタ(汎用レジスタ1番)の内容をデ
ィスプレースメント値を加算することによってL命令に
対する不完全なアドレスを求め、これをアドレスレジス
タ8に保持して、S命令のオペランドの読出しを持つ。
先行命令がA命令の場合と異なる点は、A命令の場合に
は、記憶装置から読出したオペランドデータを演算手段
10において単純に加算すれば良かったが、S命令の場合
には減算を行わねばならないところである。一般に、減
算は、2つの補数を利用することにより加算によって行
うことができる。第5図においては、レジスタ8に保持
されている値から、信号線35上に読出されてくるS命令
の第2オペランドを減じる代わりに、信号線35上のデー
タに関して2の補数をとり、レジスタ8に保持されてい
る値と加算することにより同じ結果が得られるのであ
る。そこで、論理回路309には第7図で示した通り、半
語オペランド用符号拡張回路210の他に、ビット値の反
転回路211を備えており、これを信号線30の中の信号線1
50によって制御する。単純なビットの反転では該データ
の1の補数が得られるだけであるので、信号線150を演
算手段10に入力し、イニシャルキャリー(最下位ビット
に対する桁上げ)をセットすることによりS命令の第2
オペランドの2の補数生成を実現している。信号線150
は、第4図で示した通り、先行命令が減算命令(S,SH,S
L etc.)であることを示すデコード信号141と、先行命
令のR1パートとインデクスレジスタ番号あるいは、ドー
スレジスタ番号が一致したことを示す信号線146とをゲ
ート115によってANDすることによって生成される。ラッ
チ121はタイミング調整用である。このような制御方法
により、先行命令がS命令である場合にも、第2図
(3)に示すように、先行命令がL命令あるいはA命令
である場合と同じくオーバヘッド1サイクルまで高速化
することができる。尚、半語オペランドを扱う減算命令
(SH)では、第7図において、符号拡張回路210とビッ
ト反転回路211とが同時に動作するよう、信号線149,150
を共にセットすることにより、制御することができる。
続いて、第3図(5)で示した命令列の高速処理につ
いて説明する。命令の組合せ自体は第3図(1)で示し
たが、ここではL命令で変更した汎用レジスタを、後続
のA命令がインデクスレジスタ、ベースレジスタの両方
として指定した場合である。従来装置ではこうしたケー
スの処理高速化について何の記述もないが、本発明によ
れば簡単な論理回路を付加することによって第3図
(1)〜(4)の命令列と同様の高速化を図ることがで
きる。
後続命令であるA命令のオペランドアドレスは先行命
令であるL命令の第2オペランドデータを利用してC
(OP2)+C(OP2)+Dという式によって求めることが
できる。すなわち、記憶装置から読出したL命令の第2
オペランドを2倍して、ディスプレースメントと加算す
れば良い。そこで、まず3入力アドレス加算器7におい
て、コンフリクトを生じているレジスタを除いた残りの
加算(この場合はディスプレースメントだけが残る)を
行い、レジスタ8に保持する。この時第4図のANDゲー
ト108,109によって、3入力アドレス加算器7のインデ
クスレジスタ入力、およびベースレジスタ入力がゼロと
なるのは第3図(1)の命令列で説明した通りの論理動
作による。その後、L命令の第2オペランドを読出して
くると、論理回路309によって該データを2倍し、演算
手段10にてレジスタ8の内容と加算することによって、
A命令のオペランドアドレスを正しく求めることができ
る。第7図に示した2倍化回路212は単純な1ビット左
シフト回路として構成することができる。また信号線15
1は先行命令のR1パートと後続命令のインデクスおよび
ベースレジスタ番号が共に一致した場合にセットされ
る。このように先行するL命令が変更するレジスタを、
接続命令のインデクスおよびベースレジスタとして同時
に使用する場合にも、第2図(3)で示した通り、オー
バヘッドを1サイクルとすることができる。この考えは
先行命令がL命令である場合に限らず、A命令、S命令
である場合にも同様に高速化を図ることができる。
第4図におけるラッチ107は、アドレスモードを指定
するものである。アドレスモードとは、アドレス加算器
7から出力される記憶装置参照用オペランドアドレスの
ビット幅を決めるもので、ラッチ107の出力信号28が0
の時にはアドレスを24ビットとし、出力信号28が1の時
にはアドレスが31ビットとなるよう制御する。この結
果、24ビットあるいは31ビットのアドレスのいずれかを
利用して記憶装置12を参照することができる。ラッチ10
7のセット,リセットは、デコーダ103によってアドレス
モードを変更する命令をデコードした時に行う。第8図
にアドレスモードを変更する命令の例を示す。ここで、
‘OB'‘OC'は命令コードである。ここで示した命令はい
ずれも2バイト長の命令でR2で示したレジスタ番号がゼ
ロの場合にはNO-OPERATIONとして処理するが、R2がゼロ
でない場合にはR2で指定した汎用レジスタのビット0を
アドレスモードとする。すなわち、デコーダ103によっ
て第8図の命令をデコードすると信号線24上にセットさ
れるR2で指定された汎用レジスタのビット0の値をラッ
チ107にセットする。その出力信号28は3入力アドレス
加算器7の出力データを抑制する。アドレスモードに関
する本発明の特徴は、アドレスモード制御ラッチ107の
出力信号28を用いて3入力アドレス加算器7を制御する
だけでなく、演算手段10の出力をも制御することであ
る。ラッチ107の出力信号28によって演算手段10の出力
データにアドレスモードを反映させることにより、アド
レスモードが変わった直後でもアドレスコンフリクトの
高速化を図ることができる。
もし信号線28によるアドレスモードの制御を演算手段
10の出力に対して施されない場合には、先行命令の記憶
装置から読出したオペランドデータを演算手段10に入力
することができないため、3入力加算器7あるいは汎用
レジスタ2を経由せざるを得ず、1サイクルあるいは2
サイクルオーバヘッドが増えてしまう。
第9図は、本発明の拡張の例を示したものである。情
報処理装置において、3入力アドレス加算器7から出力
されるオペランドアドレスデータは非常に重要な信号で
あり、記憶装置に送られて参照アドレスとなるばかりで
なく、記憶装置に格納する命令においては格納アドレス
にもなるし、記憶装置がヒジー状態で3入力アドレス加
算器の出力データを受取れない場合には一時的に退避バ
ッファに保結することが必要であり、また、3入力アド
レス加算器の出力を汎用レジスタに格納する命令では、
該命令のパイプライン処理ステージ対応に該アドレスデ
ータを保持しておくことが必要であるなど、アドレスデ
ータの負荷は非常に大きい。これまでの第1図〜第8図
を用いた説明では、記憶装置の参照アドレスのみに着目
し、レジスタ8、論理回路309そして加算器10を新たに
追加することにより、コンフリクトの高速化を図る手段
について述べてきた。勿論、アドレスデータの負荷数が
どんなに多くとも、アドレスレジスタ11の入力である信
号線550を必要なところ全てに直接接続することによっ
て解決することができる訳であるが、実際問題として
は、論理的,物理的な分割や、信号伝搬遅延時間などの
制限から、アドレスデータを必要とする全ての論理に、
演算手段10と同様の論理が必要になると予想される。そ
こで、第8図では、アドレスコンフリクトの高速処理用
演算手段を2つ備えた情報処理装置の全体像を示した。
レジスタ508は3入力アドレス加算器7の出力を保持
し、記憶装置からの先行命令のオペランド読出しを持つ
ためのレジスタでレジスタ8に相当するものである。論
理回路509はやはり論理回路9に相当するもので、記憶
装置から読出したオペランドデータに対し、符号拡張,
反転,2倍の各種処理を施すことが可能な回路である。そ
して演算手段510は演算手段10に相当するもので、3入
力アドレス加算器7の出力データである不完全アドレス
を完全なアドレスとする加算器である。そしてアドレス
レジスタ511は、3入力アドレス加算器7と演算手段510
の出力のうちいずれかを選択してセットするレジスタで
ある。
これらの各回路に対して、記憶装置からの読出しデー
タ線35や演算器16の出力データ36あるいは制御回路3か
らの各種制御信号を全て入力することにより、アドレス
レジスタ511にはアドレスレジスタ11と全く同じアドレ
ス値がセットされる。そしてその値を記憶装置内のデー
タ参照以外の目的に利用できる訳である。
このように、アドレスコンフリクト解消用加算器およ
びその周辺論理を、アドレスデータを必要とする全ての
論理に追加することによって、アドレスコンフリクト時
の高速化を、アドレスデータを必要とする全ての論理に
対して実現することができる。この時、物量は少々増加
するものの、信号伝搬遅延時間を大きくすることがない
ため、コンフリクト時の高速処理がそのまま性能向上に
つながるといえる。
[発明の効果] 本発明によれば、先行するL命令、加減算命令とアド
レスコンフリクトを生じている場合でも後続命令のデコ
ード処理の高速化を図ることが可能であり、かつこの時
後続命令に対して何ら条件を付す必要がない。また、先
行する命令が半語オペランドを扱う命令の場合、あるい
は先行命令によって後続命令のインデクスレジスタ,ベ
ースレジスタを同時に変更した場合にも高速処理可能で
ある。
【図面の簡単な説明】
第1図は本発明の一実施例の全体構造図、第2図は命令
処理の流れを示した図、第3図は本発明の高速処理の対
象となる命令列の一例を示した図、第4図は第1図にお
ける制御回路の詳細図、第5図は本発明の他の実施例を
示す図、第6図は半語オペランドと符号拡張方法を示し
た図、第7図は第6図における論理回路の内部構造を示
した図、第8図はアドレスモードを変更する命令の命令
形式を示した図、第9図は本発明の拡張の一例を示した
図である。 1……命令レジスタ、2……汎用レジスタ、3……制御
回路、7……3入力アドレス加算器、8,508……3入力
アドレス加算器の出力データを保持するレジスタ、9,50
9……記憶装置から読出したデータに対して、符号拡
張,反映,2倍の各種処理を行う論理回路、11……アドレ
スレジスタ、12……記憶装置、13……データレジスタ、
14……アライナ、15……オペランドバッファレジスタ、
16……演算器、103,104……デコーダ、105,106……4ビ
ット比較器。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 釜田 栄樹 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 井上 潔 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (56)参考文献 特開 昭61−109145(JP,A) 特開 昭61−133440(JP,A) 特開 昭61−267135(JP,A)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】命令によってインデックスレジスタとして
    指定された汎用レジスタの内容と、ベースレジスタとし
    て指定された汎用レジスタの内容と、命令で指定された
    ディスプレースメント値とを加算してオペランドアドレ
    スを計算する3入力アドレス加算器を有する情報処理装
    置であって、先行する命令が記憶装置から読出したオペ
    ランドデータを汎用レジスタに格納する命令であること
    を認識して該先行命令が変更する汎用レジスタ番号と後
    続命令がオペランドアドレスの生成に使用するインデッ
    クスレジスタ番号あるいはベースレジスタ番号とが一致
    しているか否かを検出する手段を有し、該検出手段が番
    号の一致を検出しない場合は、後続命令によって指定さ
    れた汎用レジスタの前記3入力アドレス加算器への読出
    しデータをそのまま設定して前記3入力アドレス加算器
    にて加算を行わしめて後続命令のオペランドアドレスを
    求め、前記検出手段が番号の一致を検出した場合は、番
    号が一致している汎用レジスタの前記3入力アドレス加
    算器への読出しデータをゼロに設定して該3入力アドレ
    ス加算器にて先行命令によって変更される汎用レジスタ
    以外のデータの加算を行わしめ、該3入力アドレス加算
    器の出力データを保持する待合わせレジスタの出力と前
    記記憶装置から読出した先行命令のオペランドデータを
    入力として2入力加算器にて加算を行わしめて後続命令
    のオペランドアドレスを求めることを特徴とする情報処
    理装置。
  2. 【請求項2】命令によってインデックスレジスタとして
    指定された汎用レジスタの内容と、ベースレジスタとし
    て指定された汎用レジスタの内容と、命令で指定された
    ディスプレースメント値とを加算してオペランドアドレ
    スを計算する3入力アドレス加算器を有する情報処理装
    置であって、先行する命令が記憶装置から読出したオペ
    ランドデータに演算を施して結果を汎用レジスタに格納
    する命令であることを認識して該先行命令が変更する汎
    用レジスタ番号と後続命令がオペランドアドレスの生成
    に使用するインデックスレジスタ番号あるいはベースレ
    ジスタ番号とが一致しているか否かを検出する手段を有
    し、該検出手段が番号の一致を検出しない場合は、後続
    命令によって指定された汎用レジスタの前記3入力アド
    レス加算器への読出しデータをそのまま設定して前記3
    入力アドレス加算器にて加算を行わしめて後続命令のオ
    ペランドアドレスを求め、前記検出手段が番号の一致を
    検出した場合は、先行命令による汎用レジスタの変更が
    終了する前に変更前のデータを利用して前記3入力アド
    レス加算器にてそのまま実行させ、該3入力アドレス加
    算器の出力を保持する待合わせレジスタの出力と記憶装
    置から読出した先行命令のオペランドデータを入力とし
    て2入力演算器にて演算を行わしめて後続命令のオペラ
    ンドアドレスを求めることを特徴とする情報処理装置。
JP63000351A 1988-01-06 1988-01-06 情報処理装置 Expired - Fee Related JP2667849B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP63000351A JP2667849B2 (ja) 1988-01-06 1988-01-06 情報処理装置
US07/292,346 US5075849A (en) 1988-01-06 1988-12-30 Information processor providing enhanced handling of address-conflicting instructions during pipeline processing
DE3900246A DE3900246A1 (de) 1988-01-06 1989-01-05 Informationsverarbeitungsvorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63000351A JP2667849B2 (ja) 1988-01-06 1988-01-06 情報処理装置

Publications (2)

Publication Number Publication Date
JPH01177127A JPH01177127A (ja) 1989-07-13
JP2667849B2 true JP2667849B2 (ja) 1997-10-27

Family

ID=11471415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63000351A Expired - Fee Related JP2667849B2 (ja) 1988-01-06 1988-01-06 情報処理装置

Country Status (3)

Country Link
US (1) US5075849A (ja)
JP (1) JP2667849B2 (ja)
DE (1) DE3900246A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2668438B2 (ja) * 1989-04-21 1997-10-27 三菱電機株式会社 データ検索装置
US5276822A (en) * 1989-11-15 1994-01-04 Matsushita Electric Industrial Co., Ltd. System with enhanced execution of address-conflicting instructions using immediate data latch for holding immediate data of a preceding instruction
JP2542120B2 (ja) * 1989-11-15 1996-10-09 松下電器産業株式会社 情報処理装置
JPH04275628A (ja) * 1991-03-01 1992-10-01 Mitsubishi Electric Corp 演算処理装置
US5522052A (en) * 1991-07-04 1996-05-28 Matsushita Electric Industrial Co. Ltd. Pipeline processor for processing instructions having a data dependence relationship
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
JP3499135B2 (ja) * 1998-06-29 2004-02-23 富士通株式会社 情報処理装置
US6453424B1 (en) * 1999-03-31 2002-09-17 International Business Machines Corporation System and method for temporally controlling instruction execution
US7107438B2 (en) 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US20050216713A1 (en) * 2004-03-25 2005-09-29 International Business Machines Corporation Instruction text controlled selectively stated branches for prediction via a branch target buffer
US7694286B2 (en) * 2005-02-10 2010-04-06 International Business Machines Corporation Apparatus and method for detecting base-register usage conflicts in computer code
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CS164932B2 (ja) * 1971-09-07 1975-11-28
JPS5928793B2 (ja) * 1979-09-06 1984-07-16 ロス・オペレ−テイング・バルブ・カンパニ− 複式安全弁
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
JPS59231652A (ja) * 1983-06-13 1984-12-26 Hitachi Ltd メモリアクセス・オ−バラツプ検出方式
JPS61109145A (ja) * 1984-11-01 1986-05-27 Fujitsu Ltd メモリアドレス算出方式
JPS61133440A (ja) * 1984-11-30 1986-06-20 Nec Corp デ−タ処理装置
JPS61267135A (ja) * 1985-05-21 1986-11-26 Nec Corp デ−タ処理装置
US4789925A (en) * 1985-07-31 1988-12-06 Unisys Corporation Vector data logical usage conflict detection
JPS6347834A (ja) * 1986-08-15 1988-02-29 Hitachi Ltd 先行制御方式

Also Published As

Publication number Publication date
US5075849A (en) 1991-12-24
DE3900246C2 (ja) 1992-01-23
DE3900246A1 (de) 1989-07-20
JPH01177127A (ja) 1989-07-13

Similar Documents

Publication Publication Date Title
JP2667849B2 (ja) 情報処理装置
JP2559399B2 (ja) 情報処理装置
JP2965206B2 (ja) 境界合せされていないリファレンスを処理するrisc型コンピュータ及び同処理の方法
JPS6015746A (ja) デ−タ処理装置
JPH03218523A (ja) データプロセッサ
JPS63273134A (ja) マクロ命令パイプラインを用いてマイクロ命令を変更する方法及び装置
JPH0831032B2 (ja) データ処理装置
US20100250904A1 (en) Methods and processor-related media to perform rapid returns from subroutines in microprocessors and microcontrollers
US4541047A (en) Pipelined data processing system
JPH0348536B2 (ja)
JP3578883B2 (ja) データ処理装置
US4631672A (en) Arithmetic control apparatus for a pipeline processing system
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US5867696A (en) Saving a program counter value as the return address in an arbitrary general purpose register
JPS6212529B2 (ja)
US5276822A (en) System with enhanced execution of address-conflicting instructions using immediate data latch for holding immediate data of a preceding instruction
JP2520882B2 (ja) デ−タ処理装置およびデ−タ処理方法
JPS623336A (ja) 条件付きブランチ方式
US4991130A (en) Normalization control system for floating point arithmetic operation
US5784634A (en) Pipelined CPU with instruction fetch, execution and write back stages
JPS63245525A (ja) マイクロプログラム処理装置
JP2826927B2 (ja) 演算処理装置および処理方法
JP3658879B2 (ja) パイプライン計算機
JPS6149692B2 (ja)
JPH02254541A (ja) 条件分岐命令の制御方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees