JPH0760384B2 - 命令実行方法およびデータ処理装置 - Google Patents
命令実行方法およびデータ処理装置Info
- Publication number
- JPH0760384B2 JPH0760384B2 JP9550485A JP9550485A JPH0760384B2 JP H0760384 B2 JPH0760384 B2 JP H0760384B2 JP 9550485 A JP9550485 A JP 9550485A JP 9550485 A JP9550485 A JP 9550485A JP H0760384 B2 JPH0760384 B2 JP H0760384B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- executed
- register
- 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 - Lifetime
Links
Landscapes
- Advance Control (AREA)
Description
【発明の詳細な説明】 〔発明の利用分野〕 本発明は情報処理装置に係り、特にパイプライン制御の
情報処理装置の高速化に関する。
情報処理装置の高速化に関する。
パイプライン制御の情報処理装置では、命令の処理全体
を複数の部分処理に分割し、各部分処理ごとに独立の処
理装置を設けている。まず第1命令が第1の部分処理を
行う処理装置で処理される。その処理が完了して第2の
部分処理を行う処理装置に移ると、第1の部分処理を行
う処理装置では第2命令の処理が開始される。第1命令
が第3の部分処理を行う処理装置に移ると、第2命令は
第2の部分処理を行う処理装置で処理され、第3命令は
第1の部分処理装置で処理される。このように、第1命
令の処理の全体が完了する前に、第1命令の後続命令の
実行が開始されるので、パイプライン制御の情報処理装
置では高い命令処理性能を実現することが出来る。
を複数の部分処理に分割し、各部分処理ごとに独立の処
理装置を設けている。まず第1命令が第1の部分処理を
行う処理装置で処理される。その処理が完了して第2の
部分処理を行う処理装置に移ると、第1の部分処理を行
う処理装置では第2命令の処理が開始される。第1命令
が第3の部分処理を行う処理装置に移ると、第2命令は
第2の部分処理を行う処理装置で処理され、第3命令は
第1の部分処理装置で処理される。このように、第1命
令の処理の全体が完了する前に、第1命令の後続命令の
実行が開始されるので、パイプライン制御の情報処理装
置では高い命令処理性能を実現することが出来る。
しかし、ある命令(以降では後続命令と呼ぶ)より前に
ある命令(以降では先行命令と呼ぶ)があるレジスタを
変更する命令であり、後続命令がそのレジスタを参照す
る命令である場合(レジスタコンフリクト状態と呼
ぶ。)には、命令処理は上記の様には進まない。すなわ
ち、先行命令が演算結果をレジスタに書込むまで、もし
くは先行命令が演算結果を生成するまでは、後続命令の
処理全体、少なくともレジスタを参照する部分処理を停
止させなければならない。このようなレジストコンフリ
クトによる後続命令の実行停止は、パイプライン制御の
情報処理装置においては、性能向上の大きな阻止要因と
なつている。
ある命令(以降では先行命令と呼ぶ)があるレジスタを
変更する命令であり、後続命令がそのレジスタを参照す
る命令である場合(レジスタコンフリクト状態と呼
ぶ。)には、命令処理は上記の様には進まない。すなわ
ち、先行命令が演算結果をレジスタに書込むまで、もし
くは先行命令が演算結果を生成するまでは、後続命令の
処理全体、少なくともレジスタを参照する部分処理を停
止させなければならない。このようなレジストコンフリ
クトによる後続命令の実行停止は、パイプライン制御の
情報処理装置においては、性能向上の大きな阻止要因と
なつている。
レジスタ・コンフリクトによる実行停止を短縮化する例
としては、特開昭58-96346がある。
としては、特開昭58-96346がある。
本発明の目的は、レジスタコンフリクト時の後続命令の
実行停止をなくし、高い命令処理性能を有するパイプラ
イン制御の情報処理装置を提供することにある。
実行停止をなくし、高い命令処理性能を有するパイプラ
イン制御の情報処理装置を提供することにある。
本発明では先行命令によつてレジスタに書込まれる演算
結果を用いて後続命令が実行される際に、該演算結果が
確定するまで、該後続命令の処理であつて該演算結果を
用いる処理を停止させるデータ処理装置において、該先
行命令の命令アドレス又は、該先行命令より前の命令の
命令アドレス、該先行命令を先読みする際の先読みアド
レス、該先行命令より前の命令を先読みする際の先読み
アドレスのすべて又はおのおのの任意のビツト位置デー
タの組合せと、該先行命令のメモリ・オペランド・アド
レス決定情報とからなる連想キーとに対応させて該先行
命令のメモリ・オペランド・アドレスと演算結果と演算
結果であることを示す情報を記憶する手段と、該データ
処理装置でストア命令が実行された時に、該ストア命令
のストア・アドレスと一致する該メモリ・オペランド・
アドレスが該記憶手段にあるかを探索し、ある時には、
それに対応する該演算結果を該ストア命令のストア・デ
ータで書換え、該演算結果であることを示す情報をメモ
リ・オペランドであることを示す情報に書換える連想書
込み手段と、該先行命令が実行された時にその時の該連
想キーに基づいて該記憶手段を探索し、該連想キーが記
憶されている時にはそれに対応する該演算結果又は該メ
モリ・オペランドを出力する手段と、該出力手段より該
演算結果が出力された時には、該出力手段よりの該演算
結果を用いて停止されている該後続命令の処理を開始
し、該出力手段よりの該演算結果が該先行命令の演算で
求まる演算結果と等しい場合には、開始した該後続命令
の処理を継続し、等しくない場合には、該後続命令の処
理を無効にし、該先行命令の演算で求まる演算結果を用
いて該後続命令の処理を再実行する手段と、該出力手段
より該メモリ・オペランドが出力された時には、該メモ
リ・オペランドに対して該先行命令の指定する演算を施
し、その演算結果を用いて停止されている該後続命令の
処理を開始する手段を有することを特徴とするデータ処
理装置を提案する。
結果を用いて後続命令が実行される際に、該演算結果が
確定するまで、該後続命令の処理であつて該演算結果を
用いる処理を停止させるデータ処理装置において、該先
行命令の命令アドレス又は、該先行命令より前の命令の
命令アドレス、該先行命令を先読みする際の先読みアド
レス、該先行命令より前の命令を先読みする際の先読み
アドレスのすべて又はおのおのの任意のビツト位置デー
タの組合せと、該先行命令のメモリ・オペランド・アド
レス決定情報とからなる連想キーとに対応させて該先行
命令のメモリ・オペランド・アドレスと演算結果と演算
結果であることを示す情報を記憶する手段と、該データ
処理装置でストア命令が実行された時に、該ストア命令
のストア・アドレスと一致する該メモリ・オペランド・
アドレスが該記憶手段にあるかを探索し、ある時には、
それに対応する該演算結果を該ストア命令のストア・デ
ータで書換え、該演算結果であることを示す情報をメモ
リ・オペランドであることを示す情報に書換える連想書
込み手段と、該先行命令が実行された時にその時の該連
想キーに基づいて該記憶手段を探索し、該連想キーが記
憶されている時にはそれに対応する該演算結果又は該メ
モリ・オペランドを出力する手段と、該出力手段より該
演算結果が出力された時には、該出力手段よりの該演算
結果を用いて停止されている該後続命令の処理を開始
し、該出力手段よりの該演算結果が該先行命令の演算で
求まる演算結果と等しい場合には、開始した該後続命令
の処理を継続し、等しくない場合には、該後続命令の処
理を無効にし、該先行命令の演算で求まる演算結果を用
いて該後続命令の処理を再実行する手段と、該出力手段
より該メモリ・オペランドが出力された時には、該メモ
リ・オペランドに対して該先行命令の指定する演算を施
し、その演算結果を用いて停止されている該後続命令の
処理を開始する手段を有することを特徴とするデータ処
理装置を提案する。
これにより、レジスタコンフリクト発生時に停止される
後続命令の処理を、連想記憶の出力する情報を用いて開
始できるので、上記目的を達成できる。
後続命令の処理を、連想記憶の出力する情報を用いて開
始できるので、上記目的を達成できる。
以下、本発明の一実施例を図に従つて詳細に説明する。
まず、第1図Aを使つて本実施例で用いる命令形式を説
明する。この命令形式では、各命令語は4バイト長から
構成される。第1バイトはオペコード(op)を表わす。
第2バイト及び第3バイトの上4ビツトは3つのレジス
タ指示フイールド(R1,X2,B2)を表わす。第3バイトの
下4ビツト及び第4バイトは変位(D2)を表わす。この
命令形式では各レジスタ指示フイールドはそれぞれ4ビ
ツトであり、それぞれ15個のレジスタの1つを指示す
る。
明する。この命令形式では、各命令語は4バイト長から
構成される。第1バイトはオペコード(op)を表わす。
第2バイト及び第3バイトの上4ビツトは3つのレジス
タ指示フイールド(R1,X2,B2)を表わす。第3バイトの
下4ビツト及び第4バイトは変位(D2)を表わす。この
命令形式では各レジスタ指示フイールドはそれぞれ4ビ
ツトであり、それぞれ15個のレジスタの1つを指示す
る。
命令がStore命令以外の場合には、この意味は、X2フイ
ールドの指示する汎用レジスタの内容とB2フイールドの
指示する汎用レジスタの内容と変位D2の和をオペランド
アドレスとし、このアドレスの指す主記憶上のロケーシ
ヨンの内容(第2オペランドと呼ぶ)と、R1フイールド
の指示する汎用レジスタの内容(第1オペランドと呼
ぶ)とに対して、オペコードopで示される演算を施し、
R1フイールドの指示する汎用レジスタに格納することで
ある。
ールドの指示する汎用レジスタの内容とB2フイールドの
指示する汎用レジスタの内容と変位D2の和をオペランド
アドレスとし、このアドレスの指す主記憶上のロケーシ
ヨンの内容(第2オペランドと呼ぶ)と、R1フイールド
の指示する汎用レジスタの内容(第1オペランドと呼
ぶ)とに対して、オペコードopで示される演算を施し、
R1フイールドの指示する汎用レジスタに格納することで
ある。
命令がストア(Store)命令の場合には、上述とは逆
に、第1オペランドである汎用レジスタの内容を、第2
オペランドである主記憶上のロケーシヨンに格納する。
に、第1オペランドである汎用レジスタの内容を、第2
オペランドである主記憶上のロケーシヨンに格納する。
なお、この命令形式はIBMシステム(System)/370の命
令形式から引用したものであり、更に詳しくは“IBMシ
ステム(Ststem)/370動作処理(307Principles of Ope
ration)”に示されている。
令形式から引用したものであり、更に詳しくは“IBMシ
ステム(Ststem)/370動作処理(307Principles of Ope
ration)”に示されている。
第1B図は、第1A図で表わされた命令をニユーモニツクで
表わしたものである。
表わしたものである。
第2図は、レジスタコンフリクトを起している命令列の
例である。先行命令()はAdd命令であり、レジスタ
1の内容と、レジスタ2の内容と変位100を加えて得ら
れるアドレスの内容をレジスタ5の内容と加算してレジ
スタ5に格納することを意味する。後続命令()はサ
ブトラクト(Subtract)命令であり、レジスタ1の内容
と、レジスタ5の内容と変位150を加えて得られるアド
レスの内容をレジスタ8の内容から引いてレジスタ8に
格納することを意味する。
例である。先行命令()はAdd命令であり、レジスタ
1の内容と、レジスタ2の内容と変位100を加えて得ら
れるアドレスの内容をレジスタ5の内容と加算してレジ
スタ5に格納することを意味する。後続命令()はサ
ブトラクト(Subtract)命令であり、レジスタ1の内容
と、レジスタ5の内容と変位150を加えて得られるアド
レスの内容をレジスタ8の内容から引いてレジスタ8に
格納することを意味する。
先行命令は演算結果をレジスタ5に書込み、後続命令は
レジスタ5の内容を用いているので、レジスタコンフリ
クトが起きている。
レジスタ5の内容を用いているので、レジスタコンフリ
クトが起きている。
次に第3図を使つて実施例の全体構成の概要を説明す
る。この実施例は、先行命令の演算結果として、連想記
憶に蓄えた先行命令の以前の実行での演算結果又は連想
記憶に蓄えた先行命令の第2オペランドに対して演算を
施した結果を用いるものである。
る。この実施例は、先行命令の演算結果として、連想記
憶に蓄えた先行命令の以前の実行での演算結果又は連想
記憶に蓄えた先行命令の第2オペランドに対して演算を
施した結果を用いるものである。
まず、304は命令記憶装置であり、326はオペランド記憶
装置である。命令記憶装置304とオペランド記憶装置は
バイト単位に24ビツトのアドレスでアドレス付けされて
いる。
装置である。命令記憶装置304とオペランド記憶装置は
バイト単位に24ビツトのアドレスでアドレス付けされて
いる。
100は先読み命令アドレスレジスタである。命令の先読
みは、常に命令記憶装置上の4命令語境界から始まる4
命令語単位に行われる。したがつて先読み命令アドレス
レジスタ(IFA)100には24ビツトのアドレスのうちの上
位20ビツト(ビツト0-19)が格納される。
みは、常に命令記憶装置上の4命令語境界から始まる4
命令語単位に行われる。したがつて先読み命令アドレス
レジスタ(IFA)100には24ビツトのアドレスのうちの上
位20ビツト(ビツト0-19)が格納される。
102は先読み命令アドレスレジスタの遅延レジスタであ
る。
る。
104,106,108,110はそれぞれ命令バツファIB0,IB1,IB2,I
B3であり、命令記憶装置304から先読みされた4命令語
がこの順に格納される。
B3であり、命令記憶装置304から先読みされた4命令語
がこの順に格納される。
112は命令レジスタであり、114は命令カウンタである。
1命令語は命令記憶装置上の命令語境界からの4バイト
に必ず置かれる。したがつて、命令カウンタには24ビツ
トのアドレスのうちの上位22ビツト(ビツト0-21)が格
納される。命令カウンタ114の値は、その時の命令レジ
スタ112中の命令語の命令アドレスとなつている。
1命令語は命令記憶装置上の命令語境界からの4バイト
に必ず置かれる。したがつて、命令カウンタには24ビツ
トのアドレスのうちの上位22ビツト(ビツト0-21)が格
納される。命令カウンタ114の値は、その時の命令レジ
スタ112中の命令語の命令アドレスとなつている。
118は16個のレジスタよりなるレジスタフアイルであ
る。
る。
324はアドレス加算器であり、命令語のX2フイールドの
指示するレジスタの内容すなわち、X2レジスタ値とB2フ
イールドの指示するレジスタの内容すなわち、B2レジス
タ値と変位D2を加算する。加算結果はオペランドアドレ
スレジスタ120に格納される。
指示するレジスタの内容すなわち、X2レジスタ値とB2フ
イールドの指示するレジスタの内容すなわち、B2レジス
タ値と変位D2を加算する。加算結果はオペランドアドレ
スレジスタ120に格納される。
122はオペランドデータレジスタであり、330はALUであ
る。
る。
124,130,132,134,136はそれぞれ命令レジスタ122の遅延
レジスタ、命令カウンタ114の遅延レジスタ、X2レジス
タ値の遅延レジスタ、B2レジスタ値の遅延レジスタ値お
よび先読み命令アドレスの遅延レジスタであり、オペラ
ンドアドレスレジスタ120にオペランドアドレスが格納
される時に、その命令の命令レジスタ値、命令カウンタ
値、X2レジスタ値、B2レジスタ値およびその命令の先読
み時の先読み命令アドレスが格納される。
レジスタ、命令カウンタ114の遅延レジスタ、X2レジス
タ値の遅延レジスタ、B2レジスタ値の遅延レジスタ値お
よび先読み命令アドレスの遅延レジスタであり、オペラ
ンドアドレスレジスタ120にオペランドアドレスが格納
される時に、その命令の命令レジスタ値、命令カウンタ
値、X2レジスタ値、B2レジスタ値およびその命令の先読
み時の先読み命令アドレスが格納される。
126,138,140,142,144はそれぞれレジスタ124,130,132,1
34,136の遅延レジスタであり、オペランドデータレジス
タ122にオペランドデータが格納される時に、その命令
の命令レジスタ値、命令カウンタ値、X2レジスタ値、B2
レジスタ値およびその命令の先読み時の先読み命令アド
レスがそれぞれに格納される。
34,136の遅延レジスタであり、オペランドデータレジス
タ122にオペランドデータが格納される時に、その命令
の命令レジスタ値、命令カウンタ値、X2レジスタ値、B2
レジスタ値およびその命令の先読み時の先読み命令アド
レスがそれぞれに格納される。
320は連想記憶装置であり、322はレジスタコンフリクト
検出装置である。
検出装置である。
次に、第3図の全体構成図と第5図のタイミングチヤー
ト図を使つて、レジスタコンフリクトがない場合の全体
の動作を説明する。
ト図を使つて、レジスタコンフリクトがない場合の全体
の動作を説明する。
第5図の如く時刻TOより先読みアドレスレジスタには第
1命令から第4命令を先読みする際の先読みアドレスが
格納されているとする。また命令レジスタ112と命令カ
ウンタ114には時刻T2以前において第1命令の前の命
令、すなわち第0命令の命令語と命令アドレスが格納さ
れているとする。先読みアドレスレジスタ100のアドレ
スは信号線500を介して命令記憶装置304に印加され、そ
のアドレスから始まる4命令語が信号線506に出力さ
れ、第1命令語から第4命令語までの4命令語は時刻T1
に命令バツフア104,106,108,110に格納される。
1命令から第4命令を先読みする際の先読みアドレスが
格納されているとする。また命令レジスタ112と命令カ
ウンタ114には時刻T2以前において第1命令の前の命
令、すなわち第0命令の命令語と命令アドレスが格納さ
れているとする。先読みアドレスレジスタ100のアドレ
スは信号線500を介して命令記憶装置304に印加され、そ
のアドレスから始まる4命令語が信号線506に出力さ
れ、第1命令語から第4命令語までの4命令語は時刻T1
に命令バツフア104,106,108,110に格納される。
アドレス増加器302は、先読みアドレスレジスタ100のア
ドレスを入力として、そのアドレスを4命令語分増加さ
せたアドレスを信号線502に出力する。セレクタ300の選
択信号である信号線586の信号は通常「右選択信号」で
あり(「右選択信号」以外の値を取る場合は下記で説明
される時だけである)、この時、信号線502の信号がセ
レクタ300を通つて信号線506に出力されて、先読アドレ
スレジスタ100に格納される。格納される時刻は時刻T0
の4周期後の時刻T4である。命令バフフア104,106,108,
110には次の4命令語が格納される時刻T5までこの4命
令語が格納される。先読みアドレスレジスタ100は通常
このように4命令語分ずつ増加されるので、命令バツフ
ア104,106,108,110には順々に後続の命令が4命令単位
に先読みされて格納されることとなる。
ドレスを入力として、そのアドレスを4命令語分増加さ
せたアドレスを信号線502に出力する。セレクタ300の選
択信号である信号線586の信号は通常「右選択信号」で
あり(「右選択信号」以外の値を取る場合は下記で説明
される時だけである)、この時、信号線502の信号がセ
レクタ300を通つて信号線506に出力されて、先読アドレ
スレジスタ100に格納される。格納される時刻は時刻T0
の4周期後の時刻T4である。命令バフフア104,106,108,
110には次の4命令語が格納される時刻T5までこの4命
令語が格納される。先読みアドレスレジスタ100は通常
このように4命令語分ずつ増加されるので、命令バツフ
ア104,106,108,110には順々に後続の命令が4命令単位
に先読みされて格納されることとなる。
時刻T2以前においては、命令カウンタ114には第0命令
の命令アドレスが格納されていた。命令カウンタ114の
値は信号線530を介してアドレス増加器310に印加され
て、1命令語分増加されて、第1命令の命令アドレスと
なる。増加された値は信号線520を介してセレクタ308に
入力される。セレクタ308の選択信号586は上述したよう
に通常「右選択信号」であり、この時、信号線520の値
はセレクタ308を介して信号線518へ出力される。信号線
518の値は命令カウンタ114に格納される。また、その値
はセレクタ306に印加される。セレクタ306は、信号線51
8の22ビツトアドレス値のうちの下2ビツトを見て、そ
れが0ならば信号線508のデータが信号線516へ出力さ
れ、それが1ならば信号線510のデータが信号線516に出
力される。又それが2ならば信号線512のデータが信号5
16へ出力され、それが3ならば信号線514のデータが信
号線516へ出力される。これにより、命令レジスタに前
の時刻でセツトされた命令の次の命令がセレクタ306で
選択されて命令レジスタ112に格納される。時刻T2にお
いては命令バツフアIBO104から第1命令語が命令レジス
タ112に格納されて、同時に命令カウンタ114には第1命
令の命令アドレスが格納される。
の命令アドレスが格納されていた。命令カウンタ114の
値は信号線530を介してアドレス増加器310に印加され
て、1命令語分増加されて、第1命令の命令アドレスと
なる。増加された値は信号線520を介してセレクタ308に
入力される。セレクタ308の選択信号586は上述したよう
に通常「右選択信号」であり、この時、信号線520の値
はセレクタ308を介して信号線518へ出力される。信号線
518の値は命令カウンタ114に格納される。また、その値
はセレクタ306に印加される。セレクタ306は、信号線51
8の22ビツトアドレス値のうちの下2ビツトを見て、そ
れが0ならば信号線508のデータが信号線516へ出力さ
れ、それが1ならば信号線510のデータが信号線516に出
力される。又それが2ならば信号線512のデータが信号5
16へ出力され、それが3ならば信号線514のデータが信
号線516へ出力される。これにより、命令レジスタに前
の時刻でセツトされた命令の次の命令がセレクタ306で
選択されて命令レジスタ112に格納される。時刻T2にお
いては命令バツフアIBO104から第1命令語が命令レジス
タ112に格納されて、同時に命令カウンタ114には第1命
令の命令アドレスが格納される。
また、IFASVレジスタ102には、先読み命令アドレスレジ
スタIFA100の2周期遅れの時刻T2に、先読み命令アドレ
スレジスタの値が格納される。
スタIFA100の2周期遅れの時刻T2に、先読み命令アドレ
スレジスタの値が格納される。
セレクタ312,314には信号線532を介して16個のレジスタ
よりなるレジスタフアイル118の値が印加される。セレ
クタ312には更に信号線524を介して命令レジスタ112中
の第1命令のX2フイールドの4ビツトが印加される。セ
レクタ312はこれによりX2フイールドの指示するレジス
タの値を信号線534に出力する。セレクタ314には信号線
526を介して命令レジスタ112中の第1命令のB2フイール
ドの4ビツトが印加される。セレクタ314はこれによりB
2フイールドの指示するレジスタの値を信号線536に出力
する。信号線592,590,593,591には通常「0」が印加さ
れており、(「0」以外の値が印加されるのは下記で説
明する場合だけである)、この時、第10図に示したセレ
クタ316,318の動作図に従つて、信号線534の値はセレク
タ316を介して信号線540に出力され、信号線536の値は
セレクタ318を介して信号線542に出力される。
よりなるレジスタフアイル118の値が印加される。セレ
クタ312には更に信号線524を介して命令レジスタ112中
の第1命令のX2フイールドの4ビツトが印加される。セ
レクタ312はこれによりX2フイールドの指示するレジス
タの値を信号線534に出力する。セレクタ314には信号線
526を介して命令レジスタ112中の第1命令のB2フイール
ドの4ビツトが印加される。セレクタ314はこれによりB
2フイールドの指示するレジスタの値を信号線536に出力
する。信号線592,590,593,591には通常「0」が印加さ
れており、(「0」以外の値が印加されるのは下記で説
明する場合だけである)、この時、第10図に示したセレ
クタ316,318の動作図に従つて、信号線534の値はセレク
タ316を介して信号線540に出力され、信号線536の値は
セレクタ318を介して信号線542に出力される。
アドレス加算器にはこのようにして信号線540を介して
第1命令のX2フイールドの指示するレジスタの内容が入
力され、信号線542を介しては第1命令のB2フイールド
の指示するレジスタの内容が入力される。更に、信号線
528を介して命令レジスタ112中の第1命令の変位D2が入
力される。アドレス加算器は上記3つの入力値を加算
し、加算結果である第1命令のオペランドアドレスを信
号線548に出力し、それは時刻T3でオペランドアドレス
レジスタのOA120に格納される。また同時刻に、IR1レジ
スタ124には第1命令語が信号線522を介して格納され、
IC1レジスタ130には第1命令アドレスが信号線530を介
して格納され、GRX1レジスタ132には第1命令のX2レジ
スタ値が信号線540を介して格納され、GRB1には第1命
令のB2レジスタ値が信号線542を介して格納され、IFA1
レジスタ136には第1命令を先読みした際の先読み命令
アドレスが格納される。
第1命令のX2フイールドの指示するレジスタの内容が入
力され、信号線542を介しては第1命令のB2フイールド
の指示するレジスタの内容が入力される。更に、信号線
528を介して命令レジスタ112中の第1命令の変位D2が入
力される。アドレス加算器は上記3つの入力値を加算
し、加算結果である第1命令のオペランドアドレスを信
号線548に出力し、それは時刻T3でオペランドアドレス
レジスタのOA120に格納される。また同時刻に、IR1レジ
スタ124には第1命令語が信号線522を介して格納され、
IC1レジスタ130には第1命令アドレスが信号線530を介
して格納され、GRX1レジスタ132には第1命令のX2レジ
スタ値が信号線540を介して格納され、GRB1には第1命
令のB2レジスタ値が信号線542を介して格納され、IFA1
レジスタ136には第1命令を先読みした際の先読み命令
アドレスが格納される。
オペランド記憶装置326には信号線550を介してオペラン
ドアドレスレジスタ120中の第1命令のオペランドアド
レスが印加され、信号線552にはそのアドレスで示され
るロケーシヨンにある第1命令のオペランドデータが出
力される。時刻T4になると、この第1命令のオペランド
データはオペランドデータレジスタ122に格納される。
ドアドレスレジスタ120中の第1命令のオペランドアド
レスが印加され、信号線552にはそのアドレスで示され
るロケーシヨンにある第1命令のオペランドデータが出
力される。時刻T4になると、この第1命令のオペランド
データはオペランドデータレジスタ122に格納される。
同時刻に、IR2レジスタ126には、信号線562を介してIR1
レジスタから第1命令語が格納され、IC2レジスタ138に
は、信号線572を介してIC1レジスタ130から第1命令の
命令アドレスが格納され、GRX2レジスタ140には、信号
線570を介してGRX1レジスタ132から第1命令のX2レジス
タ値が格納され、GRB2レジスタ142には、信号線568を介
してGRB1レジスタ134から第1命令のB2レジスタ値が格
納され、IFA2レジスタ144には、信号線566を介してIFA1
レジスタ136から第1命令語を先読みした際の先読み命
令アドレスが格納され、OA2レジスタ706には、信号線55
0を介してOAレジスタ120よりオペランド・アドレスが格
納される。
レジスタから第1命令語が格納され、IC2レジスタ138に
は、信号線572を介してIC1レジスタ130から第1命令の
命令アドレスが格納され、GRX2レジスタ140には、信号
線570を介してGRX1レジスタ132から第1命令のX2レジス
タ値が格納され、GRB2レジスタ142には、信号線568を介
してGRB1レジスタ134から第1命令のB2レジスタ値が格
納され、IFA2レジスタ144には、信号線566を介してIFA1
レジスタ136から第1命令語を先読みした際の先読み命
令アドレスが格納され、OA2レジスタ706には、信号線55
0を介してOAレジスタ120よりオペランド・アドレスが格
納される。
ALU330には3つの入力信号線がある。信号線554から
は、オペランドデータレジスタ122にある第1命令のオ
ペランドデータが入力される。信号線594からはIR2レジ
スタ126にある第1命令のオペコードが入力される。セ
レクタ328には信号線532を介して16個のレジスタよりな
るレジスタフアイル118の値が印加され、更に信号線558
を介して第1命令のR1フイールドが印加される。これに
より、セレクタ328は、R1フイールドによつて指示され
るレジスタの値、すなわちR1レジスタ値を信号線560に
印加し、それがALU330に入力される。ALUは、信号線560
からの入力データを第1オペランドデータとし、信号線
554からの入力データを第2オペランドデータとして、
両者に信号線594に示されるオペコードの演算を施し、
その演算結果を信号線556に出力する。
は、オペランドデータレジスタ122にある第1命令のオ
ペランドデータが入力される。信号線594からはIR2レジ
スタ126にある第1命令のオペコードが入力される。セ
レクタ328には信号線532を介して16個のレジスタよりな
るレジスタフアイル118の値が印加され、更に信号線558
を介して第1命令のR1フイールドが印加される。これに
より、セレクタ328は、R1フイールドによつて指示され
るレジスタの値、すなわちR1レジスタ値を信号線560に
印加し、それがALU330に入力される。ALUは、信号線560
からの入力データを第1オペランドデータとし、信号線
554からの入力データを第2オペランドデータとして、
両者に信号線594に示されるオペコードの演算を施し、
その演算結果を信号線556に出力する。
レジスタフアイル118には、信号線556を介して第1命令
の演算結果が印加され、信号線558を介してIR2レジスタ
126にある第1命令のR1フイールドが印加される。時刻T
5になると、上記第1命令の演算結果はR1フイールドの
指示するレジスタ、すなわちR1レジスタに書込まれる。
の演算結果が印加され、信号線558を介してIR2レジスタ
126にある第1命令のR1フイールドが印加される。時刻T
5になると、上記第1命令の演算結果はR1フイールドの
指示するレジスタ、すなわちR1レジスタに書込まれる。
なお、命令がストア(Store)命令である時には、その
事実が書込み命令検出器710により検出され信号線712を
介してオペランド記憶装置326に入力される。これによ
り、オペランド記憶装置は信号線708を介して入力され
るストア(Store)命令のオペランド・アドレスに信号
線560を介して入力されるストア(Store)命令のR1レジ
スタの内容が時刻T5になると書込まれる。なお、この時
には上述したR1レジスタへの書込みは行なわれない。
事実が書込み命令検出器710により検出され信号線712を
介してオペランド記憶装置326に入力される。これによ
り、オペランド記憶装置は信号線708を介して入力され
るストア(Store)命令のオペランド・アドレスに信号
線560を介して入力されるストア(Store)命令のR1レジ
スタの内容が時刻T5になると書込まれる。なお、この時
には上述したR1レジスタへの書込みは行なわれない。
以上により第1命令の処理は終了する。
第2命令の処理は、まず時刻T3に第2命令語が命令レジ
スタ112に格納され、第2命令の命令アドレスが命令カ
ウンタICに格納される。以降、第1命令と同様に順々に
処理が進む。
スタ112に格納され、第2命令の命令アドレスが命令カ
ウンタICに格納される。以降、第1命令と同様に順々に
処理が進む。
第3命令以降の命令の処理は、前の命令処理の1周期遅
れの時刻で第1,第2命令のように進む。ただし、命令の
先読みは4命令語単位であるので、先読み命令アドレス
レジスタ100,命令バツフア104,106,108,110,IFASVレジ
スタ102への格納はそれぞれ4周期ごとに1度ずつ行な
われる。
れの時刻で第1,第2命令のように進む。ただし、命令の
先読みは4命令語単位であるので、先読み命令アドレス
レジスタ100,命令バツフア104,106,108,110,IFASVレジ
スタ102への格納はそれぞれ4周期ごとに1度ずつ行な
われる。
以上のように、レジスタコンフリクトがない場合には1
周期ごとに命令処理が進んでいく。
周期ごとに命令処理が進んでいく。
次に、レジスタコンフリクトのある場合の全体の動作説
明に移るが、その前に第4図を用いて、連想記憶装置32
0の説明をする。
明に移るが、その前に第4図を用いて、連想記憶装置32
0の説明をする。
実施例における連想記憶装置の記憶容量は10ワードであ
る。
る。
各ワードは、IC記憶部ICP346とIR記憶部IRP348とX2レジ
スタ値記憶部GRXP350とB2レジスタ値記憶部GRBP352と先
読み命令アドレス記憶部IFAP354とデータ記憶部DATAP35
6とアドレス記憶部ADDRP345とフラグ記憶部FLGP347から
なる。
スタ値記憶部GRXP350とB2レジスタ値記憶部GRBP352と先
読み命令アドレス記憶部IFAP354とデータ記憶部DATAP35
6とアドレス記憶部ADDRP345とフラグ記憶部FLGP347から
なる。
信号線530,522,540.542,500にデータを印加すると、連
想記憶装置は探索をする。信号線530,522,540,542,500
上のデータとIC記憶部ICP346,IR記憶部IRP348,X2レジス
タ値記憶部GRXP350,B2レジスタ値記憶部GRBP352,先読み
命令アドレス記憶部IFAP354のデータがそれぞれ全部一
致するワードがある時には、一致検出器344は「1」を
出力してHITLレジスタ156を「1」にし、かつそのワー
ドのデータ記憶部DATAP356のデータをDATALレジスタ158
に格納し、フラグ記憶部FLGP347のデータをFLGLレジス
タ157に格納する。一致するワードがない時は、一致検
出器344は「0」を出力してHITLレジスタ156を「0」に
する。
想記憶装置は探索をする。信号線530,522,540,542,500
上のデータとIC記憶部ICP346,IR記憶部IRP348,X2レジス
タ値記憶部GRXP350,B2レジスタ値記憶部GRBP352,先読み
命令アドレス記憶部IFAP354のデータがそれぞれ全部一
致するワードがある時には、一致検出器344は「1」を
出力してHITLレジスタ156を「1」にし、かつそのワー
ドのデータ記憶部DATAP356のデータをDATALレジスタ158
に格納し、フラグ記憶部FLGP347のデータをFLGLレジス
タ157に格納する。一致するワードがない時は、一致検
出器344は「0」を出力してHITLレジスタ156を「0」に
する。
一方、信号線584に「1」又は信号線586に「0」が印加
された時には、連想記憶装置は、信号線580,564,578,57
6,574,556,708上のデータをそれぞれIC記憶部ICP346,IR
記憶部IRP348,X2レジスタ値記憶部GRXP350,B2レジスタ
値記憶部GRBP352,先読み命令アドレス記憶部IFAP354、
データ記憶部DATAP356アドレス記憶部ADDRP345のデータ
とし、フラグ記憶部FLGP347を「1」とするワードを登
録する。その際、IC記憶部ICP346,IR記憶部IRP348,X2レ
ジスタ値記憶部GRXP350,B2レジスタ値記憶部GRBP352,先
読み命令アドレス記憶部IFAP354のデータが全部一致す
るワードがすでに記憶されている時には、そのワードの
上に重ね書きされる。一致するワードがまだ記憶されて
いない時には、新しくワードが割り当てられて登録され
る。
された時には、連想記憶装置は、信号線580,564,578,57
6,574,556,708上のデータをそれぞれIC記憶部ICP346,IR
記憶部IRP348,X2レジスタ値記憶部GRXP350,B2レジスタ
値記憶部GRBP352,先読み命令アドレス記憶部IFAP354、
データ記憶部DATAP356アドレス記憶部ADDRP345のデータ
とし、フラグ記憶部FLGP347を「1」とするワードを登
録する。その際、IC記憶部ICP346,IR記憶部IRP348,X2レ
ジスタ値記憶部GRXP350,B2レジスタ値記憶部GRBP352,先
読み命令アドレス記憶部IFAP354のデータが全部一致す
るワードがすでに記憶されている時には、そのワードの
上に重ね書きされる。一致するワードがまだ記憶されて
いない時には、新しくワードが割り当てられて登録され
る。
また、信号線712に「1」が印加された時、すなわち、
ストア(Store)命令が実行された時には、連想記憶装
置は信号線708を介して送られるストア(Store)命令の
オペランド・アドレスとアドレス記憶部ADDRPが一致す
るワードが存在するか検出し、存在する場合にはそのよ
うなすべてのワードのデータ記憶部DATAPを信号線560を
介して転送されるストア(Store)命令のR1レジスタの
内容で書換え、かつ、そのワードのフラグ記憶部FLGP
「0」を記憶する。
ストア(Store)命令が実行された時には、連想記憶装
置は信号線708を介して送られるストア(Store)命令の
オペランド・アドレスとアドレス記憶部ADDRPが一致す
るワードが存在するか検出し、存在する場合にはそのよ
うなすべてのワードのデータ記憶部DATAPを信号線560を
介して転送されるストア(Store)命令のR1レジスタの
内容で書換え、かつ、そのワードのフラグ記憶部FLGP
「0」を記憶する。
なお、フラグ記憶部FLGPの「1」は、対応するデータ記
憶部DATAPに以前に命令が実行された時の演算結果が記
憶されていることを意味し、フラグ記憶部FLGPの「0」
は、対応するデータ記憶部DATAPに第2オペランド・デ
ータが記憶されていることを意味する。
憶部DATAPに以前に命令が実行された時の演算結果が記
憶されていることを意味し、フラグ記憶部FLGPの「0」
は、対応するデータ記憶部DATAPに第2オペランド・デ
ータが記憶されていることを意味する。
以上で連想記憶装置の説明を終わる。
次に、レジスタコンフリクトのある場合の動作説明を行
なう。レジスタコンフリクトのある命令としては第2図
の2命令を考え、Add命令が第1命令とし、サブトラク
ト(Subtract)命令が第2命令とする。第3命令以降は
これらの命令との間でレジスタコンフリクトを起さない
任意の命令とする。
なう。レジスタコンフリクトのある命令としては第2図
の2命令を考え、Add命令が第1命令とし、サブトラク
ト(Subtract)命令が第2命令とする。第3命令以降は
これらの命令との間でレジスタコンフリクトを起さない
任意の命令とする。
本発明では、レジスタコンフリクトを起している先行命
令(以下で考える例では第1命令)の演算結果を、連想
記憶装置に記憶した情報を用して求めている。したがつ
て先行命令を実行する際に、その連想記憶装置に情報が
あるか否かで予測が出来るか出来ないかが決まる。
令(以下で考える例では第1命令)の演算結果を、連想
記憶装置に記憶した情報を用して求めている。したがつ
て先行命令を実行する際に、その連想記憶装置に情報が
あるか否かで予測が出来るか出来ないかが決まる。
まず、連想記憶装置に以前の実行時の情報がない場合を
説明する。第6図をタイミングチヤート図として用い
る。
説明する。第6図をタイミングチヤート図として用い
る。
第1命令から第4命令までの命令先読み、および第1命
令の処理の大部分は、上述のレジスタコンフリクトがな
い場合の動作と同じである。すなわち、第6図のタイミ
ングチヤート図のうち、第1命令から第4命令に関する
IFA,IBO〜3,IFASV,第1命令に関するIR/IC,OA/IR1/IC1/
GRX1/GRB1/IFA1,OD/IR2/IC2/GRX2/GRB2/IFA2,GRのタイ
ミングは、第5図のものと同一である。以下ではそれ以
外の部分を説明する。
令の処理の大部分は、上述のレジスタコンフリクトがな
い場合の動作と同じである。すなわち、第6図のタイミ
ングチヤート図のうち、第1命令から第4命令に関する
IFA,IBO〜3,IFASV,第1命令に関するIR/IC,OA/IR1/IC1/
GRX1/GRB1/IFA1,OD/IR2/IC2/GRX2/GRB2/IFA2,GRのタイ
ミングは、第5図のものと同一である。以下ではそれ以
外の部分を説明する。
まず、時刻TOより先読み命令アドレスレジスタ100に格
納されている先読み命令アドレスは信号線500を介して
連想記憶装置の先読み命令アドレス記憶部IFAP354に印
加されている。また、時刻T2になると第1命令の命令
語、命令アドレス,X2レジスタ値、B2レジスタ値がそれ
ぞれ信号線522,530,540,542を介してそれぞれ連想記憶
装置のIR記憶部348,IC記憶部346,X2レジスタ値記憶部35
0,B2レジスタ値記憶部352に印加される。
納されている先読み命令アドレスは信号線500を介して
連想記憶装置の先読み命令アドレス記憶部IFAP354に印
加されている。また、時刻T2になると第1命令の命令
語、命令アドレス,X2レジスタ値、B2レジスタ値がそれ
ぞれ信号線522,530,540,542を介してそれぞれ連想記憶
装置のIR記憶部348,IC記憶部346,X2レジスタ値記憶部35
0,B2レジスタ値記憶部352に印加される。
連想記憶装置は上記信号線530,522,540,542,500のデー
タで探索をする。今は、連想記憶装置に以前の実行時の
情報がない場合を考えているので、時刻T3においてHITL
レジスタ156には「0」が格納される。更に、この
「0」は信号線546に印加される。
タで探索をする。今は、連想記憶装置に以前の実行時の
情報がない場合を考えているので、時刻T3においてHITL
レジスタ156には「0」が格納される。更に、この
「0」は信号線546に印加される。
時刻T3においてIR1レジスタ124には第1命令であるAdd
命令の命令語が格納されており、命令レジスタ112には
第2命令であるサブトラクト(Subtract)命令の命令語
が格納されている。したがつて、信号線582上には第1
命令のR1フイールドの「5」が印加され、信号線524に
は第2命令のX2フイールド「5」が印加される。第1命
令と第2命令以外ではレジスタコンフリクトがないと仮
定しているので、信号線558,526には「5」とは異なる
値が印加されている。したがつて、一致比較回路160の
出力は「1」になり、他の一致比較回路162,164,166の
出力は「0」となる。故にOR回路168の出力信号線593は
「1」になる。また、OR回路170の出力信号線591,AND回
路172の出力信号線592,AND回路174の出力信号線590,AND
回路180の出力信号線584は「0」になる。
命令の命令語が格納されており、命令レジスタ112には
第2命令であるサブトラクト(Subtract)命令の命令語
が格納されている。したがつて、信号線582上には第1
命令のR1フイールドの「5」が印加され、信号線524に
は第2命令のX2フイールド「5」が印加される。第1命
令と第2命令以外ではレジスタコンフリクトがないと仮
定しているので、信号線558,526には「5」とは異なる
値が印加されている。したがつて、一致比較回路160の
出力は「1」になり、他の一致比較回路162,164,166の
出力は「0」となる。故にOR回路168の出力信号線593は
「1」になる。また、OR回路170の出力信号線591,AND回
路172の出力信号線592,AND回路174の出力信号線590,AND
回路180の出力信号線584は「0」になる。
信号線592は「0」であり、信号線593は「1」であるの
で、第10図に示したように、信号線540上に有意なデー
タは出力されない。一方、セレクタ318は信号線536上の
第2命令のB2レジスタ値を信号線542を介してアドレス
加算器324に印加する。信号線528からは第2命令の変位
がアドレス加算器に印加される。これにより、時刻T4に
おいては、オペランドアドレスレジスタ120には有意な
データは格納されない。
で、第10図に示したように、信号線540上に有意なデー
タは出力されない。一方、セレクタ318は信号線536上の
第2命令のB2レジスタ値を信号線542を介してアドレス
加算器324に印加する。信号線528からは第2命令の変位
がアドレス加算器に印加される。これにより、時刻T4に
おいては、オペランドアドレスレジスタ120には有意な
データは格納されない。
また、IR1レジスタ124,IC1レジスタ130,GRX1レジスタ13
2,GRB1レジスタ134,IFA1レジスタ136にも有意なデータ
は格納されない。
2,GRB1レジスタ134,IFA1レジスタ136にも有意なデータ
は格納されない。
以降の第2命令の動作では、信号線540上には有意なデ
ータは出力されないのでアドレス加算器548は有意なデ
ータを出力しない。したがつて、時刻T4になつてもオペ
ランドアドレスレジスタ120には有意なデータは格納さ
れない。また、IR1レジスタ124,IC1レジスタ130,GRX1レ
ジスタ132,GRB1レジスタ134,IFA1レジスタ136にも有意
なデータは格納されない。
ータは出力されないのでアドレス加算器548は有意なデ
ータを出力しない。したがつて、時刻T4になつてもオペ
ランドアドレスレジスタ120には有意なデータは格納さ
れない。また、IR1レジスタ124,IC1レジスタ130,GRX1レ
ジスタ132,GRB1レジスタ134,IFA1レジスタ136にも有意
なデータは格納されない。
一方、時刻T4になるとIR2レジスタ126には第1命令であ
るAdd命令の命令語が格納されている。この時には、一
致比較回路164の出力は「1」になり、他の一致比較回
路160,162,166の出力は「0」になる。故に、OR回路168
の出力信号線593とAND回路180の出力信号線584は「1」
になる。また、OR回路170,182の出力信号線591,596とAN
D回路172と174の出力信号線592,590は「0」になる。こ
の時も信号線592は「0」であり、信号線593は「1」な
ので信号線540上には何のデータも出力されない。信号
線540上には有意なデータが出力されないのでアドレス
加算器548は有意なデータを出力しない。したがつて時
刻T5になつてもオペランドアドレスレジスタ120には有
意なデータは格納されない。また、IR1レジスタ124,IC1
レジスタ130,GRX1レジスタ132,GRB1レジスタ134,IFAレ
ジスタ136にも有意なデータは格納されない。
るAdd命令の命令語が格納されている。この時には、一
致比較回路164の出力は「1」になり、他の一致比較回
路160,162,166の出力は「0」になる。故に、OR回路168
の出力信号線593とAND回路180の出力信号線584は「1」
になる。また、OR回路170,182の出力信号線591,596とAN
D回路172と174の出力信号線592,590は「0」になる。こ
の時も信号線592は「0」であり、信号線593は「1」な
ので信号線540上には何のデータも出力されない。信号
線540上には有意なデータが出力されないのでアドレス
加算器548は有意なデータを出力しない。したがつて時
刻T5になつてもオペランドアドレスレジスタ120には有
意なデータは格納されない。また、IR1レジスタ124,IC1
レジスタ130,GRX1レジスタ132,GRB1レジスタ134,IFAレ
ジスタ136にも有意なデータは格納されない。
一方、時刻T5になると、IR2レジスタ138には有意なデー
タは格納されていない。この時には一致比較回路160,16
2,164,166の出力は「0」となる。故に信号線590,591,5
92,593,584,596はすべて「0」となる。
タは格納されていない。この時には一致比較回路160,16
2,164,166の出力は「0」となる。故に信号線590,591,5
92,593,584,596はすべて「0」となる。
これにより、セレクタ316は信号線534上の第2アドレス
のX2レジスタ値を信号線540を介してアドレス加算器324
に印加し、セレクタ318は信号線536上の第2アドレスの
B2レジスタ値を信号から542を介してアドレス加算器324
に印加する。信号線528からは第2アドレスの変位がア
ドレス加算器に印加される。これにより、時刻T6におい
て、第2アドレスのオペランドアドレスがオペランドア
ドレスレジスタ120に格納される。
のX2レジスタ値を信号線540を介してアドレス加算器324
に印加し、セレクタ318は信号線536上の第2アドレスの
B2レジスタ値を信号から542を介してアドレス加算器324
に印加する。信号線528からは第2アドレスの変位がア
ドレス加算器に印加される。これにより、時刻T6におい
て、第2アドレスのオペランドアドレスがオペランドア
ドレスレジスタ120に格納される。
また、IR1レジスタ124,IC1レジスタ130,GRX1レジスタ13
2,GRB1レジスタ134,IFA1レジスタ136には、レジスタコ
ンフリクトのない時の動作と同一のデータが時刻T6で格
納される。
2,GRB1レジスタ134,IFA1レジスタ136には、レジスタコ
ンフリクトのない時の動作と同一のデータが時刻T6で格
納される。
以降の第2アドレスの動作は、レジスタコンフリクトが
ない場合と同様に進む。
ない場合と同様に進む。
時刻T4から第1命令の演算がALU330で行なわれており、
時刻T4とT5の中間でその演算結果が信号線556を介して
連想記憶装置に印加される。
時刻T4とT5の中間でその演算結果が信号線556を介して
連想記憶装置に印加される。
更に、信号線584上の「1」は連想記憶装置に印加され
る。これにより、連想記憶装置のIC記憶部346,IR記憶部
348,X2レジスタ値記憶部350,B2レジスタ値記憶部352,先
読み命令アドレス記憶部354,データ記憶部356,アドレス
記憶部347がそれぞれ信号線580上の第1命令の命令アド
レス,信号線564上の第1命令語、信号線578上の第1命
令のX2レジスタ値,信号線576上の第1命令のB2レジス
タ値,信号線574上の第1命令の先読み時の先読み命令
アドレス,信号線556上の第1命令の演算結果,信号線7
08上の第1命令のオペランドアドレスであり、フラグ記
憶部347が「1」であるワードが時刻T5において登録さ
れる。
る。これにより、連想記憶装置のIC記憶部346,IR記憶部
348,X2レジスタ値記憶部350,B2レジスタ値記憶部352,先
読み命令アドレス記憶部354,データ記憶部356,アドレス
記憶部347がそれぞれ信号線580上の第1命令の命令アド
レス,信号線564上の第1命令語、信号線578上の第1命
令のX2レジスタ値,信号線576上の第1命令のB2レジス
タ値,信号線574上の第1命令の先読み時の先読み命令
アドレス,信号線556上の第1命令の演算結果,信号線7
08上の第1命令のオペランドアドレスであり、フラグ記
憶部347が「1」であるワードが時刻T5において登録さ
れる。
これにより、連想記憶装置に情報がない場合の説明を終
わる。
わる。
次に、連想記憶に情報がある場合について説明する。連
想記憶には、以前の実行時の先行命令の演算結果が格納
されている場合と、先行命令のメモリ・オペランドが格
納されている場合がある。
想記憶には、以前の実行時の先行命令の演算結果が格納
されている場合と、先行命令のメモリ・オペランドが格
納されている場合がある。
まず、連想記憶装置に以前の実行時の情報結果がある場
合を説明する。第7図をタイミングチヤート図として用
いる。
合を説明する。第7図をタイミングチヤート図として用
いる。
演算結果は、ロード命令以外の演算命令では第1オペラ
ンドと第2オペランド(メモリ・オペランド)に演算を
施して求まる。以前の実行時の第1オペランドは、次に
実行した時の第1オペランドと一致しない可能性がある
ので、連想記憶内の演算結果は必ずしも正しいとは言え
ない。したがつて、以下の場合、連想記憶の演算結果で
第2命令の処理を開始し、後に第1命令の演算結果が求
まつた時にそれを連想記憶の演算結果と比較し、不一致
の時には第2命令の処理をやり直すという方法をとつて
いる。
ンドと第2オペランド(メモリ・オペランド)に演算を
施して求まる。以前の実行時の第1オペランドは、次に
実行した時の第1オペランドと一致しない可能性がある
ので、連想記憶内の演算結果は必ずしも正しいとは言え
ない。したがつて、以下の場合、連想記憶の演算結果で
第2命令の処理を開始し、後に第1命令の演算結果が求
まつた時にそれを連想記憶の演算結果と比較し、不一致
の時には第2命令の処理をやり直すという方法をとつて
いる。
第1命令から第4命令までの命令先読み、および第1命
令の処理の大部分は、上述のレジスタコンフリクトがな
い場合の動作と同じである。すなわち、第7図のタイミ
ングチヤート図のうち、第1命令から第4命令に関する
IFA,IBO〜3IFASV,第1命令に関するIR/IC,OA/IR1/IC1/G
RX1/GRB1/IFA1,OD/IR2/IC2/GRX2/GRB2/IFA2,GRのタイミ
ングは、第5図のものと同一である。以下ではそれ以外
の部分を説明する。
令の処理の大部分は、上述のレジスタコンフリクトがな
い場合の動作と同じである。すなわち、第7図のタイミ
ングチヤート図のうち、第1命令から第4命令に関する
IFA,IBO〜3IFASV,第1命令に関するIR/IC,OA/IR1/IC1/G
RX1/GRB1/IFA1,OD/IR2/IC2/GRX2/GRB2/IFA2,GRのタイミ
ングは、第5図のものと同一である。以下ではそれ以外
の部分を説明する。
まず、時刻TOより先読み命令アドレスレジスタ100に格
納されている先読み命令アドレスは、信号線500を介し
て連想記憶装置の先読み命令アドレス記憶部IFAP354に
印加されている。また、時刻T2になると第1命令の命令
語、命令アドレスX2レジスタ値、B2レジスタ値がそれぞ
れ信号線522,530,540,542を介してそれぞれ連想記憶装
置のIR記憶部348,IC記憶部346,X2レジスタ値記憶部350,
B2レジスタ値記憶部352に印加される。
納されている先読み命令アドレスは、信号線500を介し
て連想記憶装置の先読み命令アドレス記憶部IFAP354に
印加されている。また、時刻T2になると第1命令の命令
語、命令アドレスX2レジスタ値、B2レジスタ値がそれぞ
れ信号線522,530,540,542を介してそれぞれ連想記憶装
置のIR記憶部348,IC記憶部346,X2レジスタ値記憶部350,
B2レジスタ値記憶部352に印加される。
連想記憶装置は、上記信号線530,522,540,542,500のデ
ータで探索をする。今は、連想記憶装置に以前の実行時
の情報がある場合を考えているので、時刻T3においてDA
TALレジスタ158には第1命令の以前の演算結果が格納さ
れ、FLGLレジスタ157には「1」が格納され、HITLレジ
スタ156には「1」が格納される。更に、この「1」は
信号線546に印加される。
ータで探索をする。今は、連想記憶装置に以前の実行時
の情報がある場合を考えているので、時刻T3においてDA
TALレジスタ158には第1命令の以前の演算結果が格納さ
れ、FLGLレジスタ157には「1」が格納され、HITLレジ
スタ156には「1」が格納される。更に、この「1」は
信号線546に印加される。
時刻T3においてIR1レジスタ124には第1命令であるAdd
命令の命令語が格納されており、命令レジスタ112には
第2命令であるサブトラクト(Subtract)命令の命令語
が格納されている。したがつて、信号線582上には第1
命令のR1フイールドの「5」が印加され、信号線524に
は第2命令のX2フイールド「5」が印加される。第1命
令と第2命令以外ではレジスタコンフリクトがないと仮
定しているので、信号線558,526には「5」とは異なる
値が印加されている。したがつて、一致比較回路160の
出力は「1」になり、他の一致比較回路162,164,166の
出力は「0」となる。故にOR回路168の出力信号線593と
OR回路182の出力信号線596と、AND回路172の出力信号線
172は「1」になる。また、OR回路の出力信号線591,AND
回路174の出力信号線590,AND回路180の出力信号線は
「0」になる。
命令の命令語が格納されており、命令レジスタ112には
第2命令であるサブトラクト(Subtract)命令の命令語
が格納されている。したがつて、信号線582上には第1
命令のR1フイールドの「5」が印加され、信号線524に
は第2命令のX2フイールド「5」が印加される。第1命
令と第2命令以外ではレジスタコンフリクトがないと仮
定しているので、信号線558,526には「5」とは異なる
値が印加されている。したがつて、一致比較回路160の
出力は「1」になり、他の一致比較回路162,164,166の
出力は「0」となる。故にOR回路168の出力信号線593と
OR回路182の出力信号線596と、AND回路172の出力信号線
172は「1」になる。また、OR回路の出力信号線591,AND
回路174の出力信号線590,AND回路180の出力信号線は
「0」になる。
信号線596はICSVレジスタ158のセツト信号となつてお
り、この信号線が「1」なので時刻T4においてICSVレジ
スタ116には第2命令の命令アドレスが格納されDATASV
レジスタ154には第1命令の以前の演算結果が格納され
る。
り、この信号線が「1」なので時刻T4においてICSVレジ
スタ116には第2命令の命令アドレスが格納されDATASV
レジスタ154には第1命令の以前の演算結果が格納され
る。
信号線592が「1」であり、信号線714が「1」であるの
で、第10図のようにセレクタ316は信号線538上の第1命
令の以前の演算結果を信号線540を介してアドレス加算
器324に印加し、セレクタ318は信号線536上の第2命令
のB2レジスタ値を信号線542を介してアドレス加算器324
に印加する。信号線528からは第2命令の変位がアドレ
ス加算器に印加される。これにより、時刻T4において、
第2命令のオペランドアドレスがオペランドアドレスレ
ジスタ120に格納される。
で、第10図のようにセレクタ316は信号線538上の第1命
令の以前の演算結果を信号線540を介してアドレス加算
器324に印加し、セレクタ318は信号線536上の第2命令
のB2レジスタ値を信号線542を介してアドレス加算器324
に印加する。信号線528からは第2命令の変位がアドレ
ス加算器に印加される。これにより、時刻T4において、
第2命令のオペランドアドレスがオペランドアドレスレ
ジスタ120に格納される。
また、IR1レジスタ124,IC1レジスタ130,GRX1レジスタ13
2,GRB1レジスタ134,IFA1レジスタ136には、レジスタコ
ンフリクトのない時の動作と同一のデータが時刻T4で格
納される。
2,GRB1レジスタ134,IFA1レジスタ136には、レジスタコ
ンフリクトのない時の動作と同一のデータが時刻T4で格
納される。
以降の第2命令の動作は、レジスタコンフリクトがない
場合と同様に進む。
場合と同様に進む。
時刻T4から第1命令の演算がALU330で行なわれており、
時刻T4とT5の中間でその演算結果が信号線556を介して
比較器332に印加される。比較器332のもう一方の入力に
はDATASVレジスタ154に格納されている第1命令の以前
の演算結果が印加されている。
時刻T4とT5の中間でその演算結果が信号線556を介して
比較器332に印加される。比較器332のもう一方の入力に
はDATASVレジスタ154に格納されている第1命令の以前
の演算結果が印加されている。
ALU330での演算結果が以前の演算結果と一致するか否か
で以下の動作は2通りに分かれる。まず、一致する場合
を説明する。この場合、信号線586上には「1」が印加
される。この「1」はセレクタ300と308に入力される。
この時、セレクタ300は信号線502のデータを信号線506
に出力し、セレクタ308は信号線520のデータを信号線51
8に出力する。これは、レジスタコンフリクトがない場
合の動作と同一であり、以降の動作はその場合と同じに
進んでいく。
で以下の動作は2通りに分かれる。まず、一致する場合
を説明する。この場合、信号線586上には「1」が印加
される。この「1」はセレクタ300と308に入力される。
この時、セレクタ300は信号線502のデータを信号線506
に出力し、セレクタ308は信号線520のデータを信号線51
8に出力する。これは、レジスタコンフリクトがない場
合の動作と同一であり、以降の動作はその場合と同じに
進んでいく。
ALU330での演算結果が以前の演算結果と一致しない場合
を次に説明する。以上の説明ではタイミングチヤート図
としては第7図を用いてきたが、以下の説明では第8図
を用いる。この場合、信号線586には「0」が印加され
る。この「0」はセレクタ300と308に入力される。この
時、セレクタ300は信号線504のデータを信号線506に出
力し、セレクタ308は、信号線504のデータを信号線518
に出力する。これにより、時刻T5において、先読み命令
アドレスレジスタ100にはICSVレジスタ116に格納されて
いた第2命令の命令アドレスの上位20ビツトが格納され
る。この値は第1命令から第4命令までの先読みアドレ
スと同一である。これにより先読みが実行されて時刻T6
で第1命令から第4命令が命令バツフア104,106,108,11
0に格納される。信号線518には第2命令の命令アドレス
が印加されているので、時刻T7において命令レジスタ11
2には命令バツファ(IB1)106上の第2命令が格納され
る。第2命令とレジスタコンフリクトを起こしていた第
1命令は時刻5において、すでに演算結果をR1フイール
ドの指示するレジスタに書込んである。したがつて、時
刻T7においては、第1命令と第2命令の間にはレジスタ
コンフリクトのない場合の動作説明と同じに進んでい
く。
を次に説明する。以上の説明ではタイミングチヤート図
としては第7図を用いてきたが、以下の説明では第8図
を用いる。この場合、信号線586には「0」が印加され
る。この「0」はセレクタ300と308に入力される。この
時、セレクタ300は信号線504のデータを信号線506に出
力し、セレクタ308は、信号線504のデータを信号線518
に出力する。これにより、時刻T5において、先読み命令
アドレスレジスタ100にはICSVレジスタ116に格納されて
いた第2命令の命令アドレスの上位20ビツトが格納され
る。この値は第1命令から第4命令までの先読みアドレ
スと同一である。これにより先読みが実行されて時刻T6
で第1命令から第4命令が命令バツフア104,106,108,11
0に格納される。信号線518には第2命令の命令アドレス
が印加されているので、時刻T7において命令レジスタ11
2には命令バツファ(IB1)106上の第2命令が格納され
る。第2命令とレジスタコンフリクトを起こしていた第
1命令は時刻5において、すでに演算結果をR1フイール
ドの指示するレジスタに書込んである。したがつて、時
刻T7においては、第1命令と第2命令の間にはレジスタ
コンフリクトのない場合の動作説明と同じに進んでい
く。
更に、信号線586上の「0」は連想記憶装置に印加され
る。これにより、連想記憶装置のIC記憶部346,IR記憶部
348,X2レジスタ値記憶部350,B2レジスタ値記憶部352,先
読み命令アドレス記憶部354,データ記憶部356,アドレス
記憶部345がそれぞれ信号線580上の第1命令の命令アド
レス,信号線564上の第1命令語,信号線578上の第1命
令のX2レジスタ値,信号線576上の第1命令のB2レジス
タ値,信号線574上の第1命令の先読み時の先読み命令
アドレス,信号線556上の第1命令の演算結果,信号線7
08上の第1命令のオペランドアドレスであり、フラグ記
憶部が「1」であるワードが時刻T5において登録され
る。
る。これにより、連想記憶装置のIC記憶部346,IR記憶部
348,X2レジスタ値記憶部350,B2レジスタ値記憶部352,先
読み命令アドレス記憶部354,データ記憶部356,アドレス
記憶部345がそれぞれ信号線580上の第1命令の命令アド
レス,信号線564上の第1命令語,信号線578上の第1命
令のX2レジスタ値,信号線576上の第1命令のB2レジス
タ値,信号線574上の第1命令の先読み時の先読み命令
アドレス,信号線556上の第1命令の演算結果,信号線7
08上の第1命令のオペランドアドレスであり、フラグ記
憶部が「1」であるワードが時刻T5において登録され
る。
以上でALU330での演算結果が以前の演算結果と一致しな
い場合の説明を終わる。
い場合の説明を終わる。
更に、これにより、連想記憶装置に以前の実行時の演算
結果がある場合の説明を終わる。
結果がある場合の説明を終わる。
以下のような状況を考える。まず、第2図の加算(Ad
d)命令、サブトラクト(Subtract)命令が実行され
る。両者間には上述のレジスタコンフリクトが存在す
る。加算(Add)命令の演算結果は、上述のように、連
想記憶320に格納される。次にストア(Store)命令が実
行される。この命令のストア・アドレスは上述の加算
(Add)命令のオペランド・アドレスと同じと仮定す
る。もしもこのストア(Store)命令の実行時に、連想
記憶320の内容(すなわち、上記演算結果)を変更しな
いとすると、次にまた上記の加算(Add)命令、サブト
ラクト命令を実行した場合に、連想記憶320からは加算
(Add)命令の前回の実行時の演算結果が出力されて、
サブトラクト命令で利用されてしまう。上述のストア
(Store)命令により、2度目の加算(Add)命令で使用
されるオペランドデータは変更されているので、連想記
憶320から出力された加算(Add)命令の前回の実行時の
演算結果は、加算命令の2度目の実行時の演算結果を正
しく予測していない。このように、ストア(Store)命
令が実行されて、そのストア・アドレスが、連想記憶に
格納されている命令のオペランド・アドレスと等しい場
合、連想記憶に格納されたこの命令の演算結果は、その
命令がそれ以降に実行される時の演算結果とは異なつて
くる。ストア(Store)命令が実行された時には、連想
記憶内の演算結果をストア・データで書換えれば良い。
なお、この際、2回目のAdd命令の実行時に連想記憶320
の内容が正しくない状況になるのは、上述のように、1
回目のAdd、Subtract命令の実行時点から2回目のAdd命
令の実行時点までの間に、ストア命令によって、Add命
令のオペランドデータが書き換えられる場合にのみであ
るので、ストアデータで連想記憶320の演算結果を書き
換えておけば、書き換えられた連想記憶320のデータは
常に正しいことになる。その処理を次に述べる。
d)命令、サブトラクト(Subtract)命令が実行され
る。両者間には上述のレジスタコンフリクトが存在す
る。加算(Add)命令の演算結果は、上述のように、連
想記憶320に格納される。次にストア(Store)命令が実
行される。この命令のストア・アドレスは上述の加算
(Add)命令のオペランド・アドレスと同じと仮定す
る。もしもこのストア(Store)命令の実行時に、連想
記憶320の内容(すなわち、上記演算結果)を変更しな
いとすると、次にまた上記の加算(Add)命令、サブト
ラクト命令を実行した場合に、連想記憶320からは加算
(Add)命令の前回の実行時の演算結果が出力されて、
サブトラクト命令で利用されてしまう。上述のストア
(Store)命令により、2度目の加算(Add)命令で使用
されるオペランドデータは変更されているので、連想記
憶320から出力された加算(Add)命令の前回の実行時の
演算結果は、加算命令の2度目の実行時の演算結果を正
しく予測していない。このように、ストア(Store)命
令が実行されて、そのストア・アドレスが、連想記憶に
格納されている命令のオペランド・アドレスと等しい場
合、連想記憶に格納されたこの命令の演算結果は、その
命令がそれ以降に実行される時の演算結果とは異なつて
くる。ストア(Store)命令が実行された時には、連想
記憶内の演算結果をストア・データで書換えれば良い。
なお、この際、2回目のAdd命令の実行時に連想記憶320
の内容が正しくない状況になるのは、上述のように、1
回目のAdd、Subtract命令の実行時点から2回目のAdd命
令の実行時点までの間に、ストア命令によって、Add命
令のオペランドデータが書き換えられる場合にのみであ
るので、ストアデータで連想記憶320の演算結果を書き
換えておけば、書き換えられた連想記憶320のデータは
常に正しいことになる。その処理を次に述べる。
連想記憶装置320の説明で既に述べたように、ストア(S
tore)命令が実行されると信号線712を介して「1」が
連想記憶装置に転送される。同時に信号線708を介して
ストア(Store)命令のオペランド・アドレス(すなわ
ち、ストア・アドレス)が転送され、信号線560を介し
てストア(Store)命令のR1レジスタの内容(すなわ
ち、ストア・データ)が転送される。
tore)命令が実行されると信号線712を介して「1」が
連想記憶装置に転送される。同時に信号線708を介して
ストア(Store)命令のオペランド・アドレス(すなわ
ち、ストア・アドレス)が転送され、信号線560を介し
てストア(Store)命令のR1レジスタの内容(すなわ
ち、ストア・データ)が転送される。
この時、連想記憶装置はアドレス記憶部ADDRがストア・
アドレスと等しいワードをすべて探し出し、等しいワー
ドのデータ記憶部DATAPをストア・データで書換え、か
つ、そのワードのフラグ記憶部を「0」に書換える。
アドレスと等しいワードをすべて探し出し、等しいワー
ドのデータ記憶部DATAPをストア・データで書換え、か
つ、そのワードのフラグ記憶部を「0」に書換える。
以上で、ストア(Store)命令が実行された時の処理の
説明を終わる。
説明を終わる。
次に、連想記憶装置に先行命令の第2オペランド(メモ
リ・オペランド)がある場合を説明する。第7図をタイ
ミングチヤート図として用いる。
リ・オペランド)がある場合を説明する。第7図をタイ
ミングチヤート図として用いる。
この場合、上記のようにストア命令が実行された時に連
想記憶内のデータ{第1命令の以前の演算結果又は第1
命令のメモリ・データ(第2オペランド)}をストア・
データで書換えているので、連想記憶内の第2オペラン
ドは常に正しい。また、この場合、下記のようにこの第
2オペランドに対して、それ以降第1命令が実行される
と、その第1命令実行時の第1オペランドを用いて、演
算を施すので、その演算結果は、連想記憶内に格納され
ている以前の演算結果とは異なり、正しい。したがつ
て、この場合には、上述のような、以前の演算結果とAL
Uでの演算結果の一致比較及び第2命令のやり直し処理
は不要である。なお、このようなストア命令によるスト
アデータでの連想記憶320内でのデータ書き換えが発生
しておらず、上述のように連想記憶320内に演算結果
(1度目のAdd命令の演算結果)がある場合には、2度
目のAdd命令の実行時の第1オペランドであるR1レジス
タの値が1度目のAdd命令の時とは異なる可能性がある
ので、以前の演算結果とALU330での演算結果の一致比較
および第2命令(Subtract命令)のやり直し処理は不可
欠である。
想記憶内のデータ{第1命令の以前の演算結果又は第1
命令のメモリ・データ(第2オペランド)}をストア・
データで書換えているので、連想記憶内の第2オペラン
ドは常に正しい。また、この場合、下記のようにこの第
2オペランドに対して、それ以降第1命令が実行される
と、その第1命令実行時の第1オペランドを用いて、演
算を施すので、その演算結果は、連想記憶内に格納され
ている以前の演算結果とは異なり、正しい。したがつ
て、この場合には、上述のような、以前の演算結果とAL
Uでの演算結果の一致比較及び第2命令のやり直し処理
は不要である。なお、このようなストア命令によるスト
アデータでの連想記憶320内でのデータ書き換えが発生
しておらず、上述のように連想記憶320内に演算結果
(1度目のAdd命令の演算結果)がある場合には、2度
目のAdd命令の実行時の第1オペランドであるR1レジス
タの値が1度目のAdd命令の時とは異なる可能性がある
ので、以前の演算結果とALU330での演算結果の一致比較
および第2命令(Subtract命令)のやり直し処理は不可
欠である。
第1命令から第4命令までの命令先読み、および第1命
令の処理の大部分は、上述のレジスタコンフリクトがな
い場合の動作と同じである。すなわち、第7図のタイミ
ングチヤート図のうち、第1命令から第4命令に関する
IFA,IBO〜3IFASV,第1命令に関するIR/IC,OA/IR1/IC1/G
RX1/GRB1/IFA1,OD/IR2/IC2/GRX2/GRB2/IFA2,GRのタイミ
ングは、第5図のものと同一である。以下ではそれ以外
の部分を説明する。
令の処理の大部分は、上述のレジスタコンフリクトがな
い場合の動作と同じである。すなわち、第7図のタイミ
ングチヤート図のうち、第1命令から第4命令に関する
IFA,IBO〜3IFASV,第1命令に関するIR/IC,OA/IR1/IC1/G
RX1/GRB1/IFA1,OD/IR2/IC2/GRX2/GRB2/IFA2,GRのタイミ
ングは、第5図のものと同一である。以下ではそれ以外
の部分を説明する。
まず、時刻TOより先読み命令アドレスレジスタ100に格
納されている先読み命令アドレスは、信号線500を介し
て連想記憶装置の先読み命令アドレス記憶部IFAP354に
印加されている。また、時刻T2になると第1命令の命令
語、命令アドレスX2レジスタ値、B2レジスタ値がそれぞ
れ信号線522,530,540,542を介してそれぞれ連想記憶装
置のIR記憶部348,IC記憶部346,X2レジスタ値記憶部350,
B2レジスタ値記憶部352に印加される。
納されている先読み命令アドレスは、信号線500を介し
て連想記憶装置の先読み命令アドレス記憶部IFAP354に
印加されている。また、時刻T2になると第1命令の命令
語、命令アドレスX2レジスタ値、B2レジスタ値がそれぞ
れ信号線522,530,540,542を介してそれぞれ連想記憶装
置のIR記憶部348,IC記憶部346,X2レジスタ値記憶部350,
B2レジスタ値記憶部352に印加される。
連想記憶装置は、上記信号線530,522,540,542,500のデ
ータで探索をする。今は、連想記憶装置に先行命令の第
2オペランド(メモリ・オペランド)がある場合を考え
ているので、時刻T3においてDATALレジスタ158には第1
命令、すなわち先行命令の第2オペランドが格納され、
FLGLレジスタ157には「0」が格納され、HITLレジスタ1
56には「1」が格納される。更に、この「1」は信号線
546に印加される。
ータで探索をする。今は、連想記憶装置に先行命令の第
2オペランド(メモリ・オペランド)がある場合を考え
ているので、時刻T3においてDATALレジスタ158には第1
命令、すなわち先行命令の第2オペランドが格納され、
FLGLレジスタ157には「0」が格納され、HITLレジスタ1
56には「1」が格納される。更に、この「1」は信号線
546に印加される。
時刻T3においてIR1レジスタ124には第1命令であるAdd
命令の命令語が格納されており、命令レジスタ112には
第2命令であるサブトラクト(Subtract)命令の命令語
が格納されている。したがつて、信号線582上には第1
命令のR1フイールドの「5」が印加され、信号線542に
は第2命令のX2フイールド「5」が印加される。第1命
令と第2命令以外ではレジスタコンフリクタがないと仮
定しているので、信号線558,526には「5」とは異なる
値が印加されている。したがつて、一致比較回路160の
出力は「1」になり、他の一致比較回路162,164,166の
出力は「0」となる。故にOR回路168の出力信号線593と
OR回路182の出力信号線と、AND回路172の出力信号線172
は「1」になる。また、OR回路の出力信号線591とAND回
路174の出力信号線590,AND回路180の出力信号線は
「0」になる。
命令の命令語が格納されており、命令レジスタ112には
第2命令であるサブトラクト(Subtract)命令の命令語
が格納されている。したがつて、信号線582上には第1
命令のR1フイールドの「5」が印加され、信号線542に
は第2命令のX2フイールド「5」が印加される。第1命
令と第2命令以外ではレジスタコンフリクタがないと仮
定しているので、信号線558,526には「5」とは異なる
値が印加されている。したがつて、一致比較回路160の
出力は「1」になり、他の一致比較回路162,164,166の
出力は「0」となる。故にOR回路168の出力信号線593と
OR回路182の出力信号線と、AND回路172の出力信号線172
は「1」になる。また、OR回路の出力信号線591とAND回
路174の出力信号線590,AND回路180の出力信号線は
「0」になる。
ALU360には、信号線538を介して第1命令の第2オペラ
ンドが入力され、信号線606を介して第1命令のR1レジ
スタの内容すなわち第1オペランドが入力され、信号線
604を介して第1命令のオペコードが入力される。ALU36
0はこれにより第1命令の演算を行い、その演算結果を
信号線600上に出力する。
ンドが入力され、信号線606を介して第1命令のR1レジ
スタの内容すなわち第1オペランドが入力され、信号線
604を介して第1命令のオペコードが入力される。ALU36
0はこれにより第1命令の演算を行い、その演算結果を
信号線600上に出力する。
信号線592が「1」であり、信号線714が「0」であるの
で、第10図のようにセレクタ316は信号線600上の第1命
令の演算結果を信号線540を介してアドレス加算器324に
印加し、セレクタ318は信号線536上の第2命令のB2レジ
スタ値を信号線542を介してアドレス加算器324に印加す
る。信号線528からは第2命令の変位がアドレス加算器
に印加される。これにより、時刻T4において、第2命令
オペランドアドレスがオペランドアドレスレジスタ120
に格納される。
で、第10図のようにセレクタ316は信号線600上の第1命
令の演算結果を信号線540を介してアドレス加算器324に
印加し、セレクタ318は信号線536上の第2命令のB2レジ
スタ値を信号線542を介してアドレス加算器324に印加す
る。信号線528からは第2命令の変位がアドレス加算器
に印加される。これにより、時刻T4において、第2命令
オペランドアドレスがオペランドアドレスレジスタ120
に格納される。
また、IR1レジスタ124,IC1レジスタ130,GRX1レジスタ13
2,GRB1レジスタ134,IFA1レジスタ136には、レジスタコ
ンフリクトのない時の動作と同一のデータが時刻T4で格
納される。
2,GRB1レジスタ134,IFA1レジスタ136には、レジスタコ
ンフリクトのない時の動作と同一のデータが時刻T4で格
納される。
以降の第2命令の動作は、レジスタコンフリクトがない
場合と同様に進む。
場合と同様に進む。
これにより、連想記憶装置に先行命令の第2オペランド
がある場合の説明を終わる。
がある場合の説明を終わる。
次に、本実施例特有の効果を述べる。
本発明を使用しない場合、先行命令とレジスタコンフリ
クトのある後続命令を実行すると、上述の動作説明の連
想記憶装置に以前の実行の情報がない場合と同じ動作と
なり、2周期の空き時間を生ずる。
クトのある後続命令を実行すると、上述の動作説明の連
想記憶装置に以前の実行の情報がない場合と同じ動作と
なり、2周期の空き時間を生ずる。
本発明を使用すれば空き時間はまつたくなくなるので、
レジスタコンフリクト発生時の命令処理性能が向上す
る。
レジスタコンフリクト発生時の命令処理性能が向上す
る。
上述の実施例は先行命令の演算結果として、連想記憶内
に格納しておいた先行命令の以前の演算結果又は、連想
記憶内に格納しておいた先行命令の第2オペランド(メ
モリ・オペランド)に対して先行命令の第1オペランド
を用いて演算を施した結果を用いるものであつた。しか
し、本発明は、連想記憶内には先行命令の以前の演算結
果を格納せず、常に先行命令の第2オペランドを格納し
ておき、先行命令の演算結果として常に、その第2オペ
ランドに先行命令の第1オペランドを用いて演算を施し
た結果を用いる場合にも適用できる。
に格納しておいた先行命令の以前の演算結果又は、連想
記憶内に格納しておいた先行命令の第2オペランド(メ
モリ・オペランド)に対して先行命令の第1オペランド
を用いて演算を施した結果を用いるものであつた。しか
し、本発明は、連想記憶内には先行命令の以前の演算結
果を格納せず、常に先行命令の第2オペランドを格納し
ておき、先行命令の演算結果として常に、その第2オペ
ランドに先行命令の第1オペランドを用いて演算を施し
た結果を用いる場合にも適用できる。
この場合の実施例を第11図に示す。
この図の連想記憶には、連想記憶に情報がない時に第3
図の信号線556に代つて信号線554を介して先行命令の第
2オペランドを記憶し、フラグ記憶部は「0」とする。
このようにすると、常に連想記憶には先行命令の第2オ
ペランドが格納される。したがつて、連想記憶に第2オ
ペランドが格納されている時には、上述の実施例のよう
に後続命令が空き時間なく実行できる。
図の信号線556に代つて信号線554を介して先行命令の第
2オペランドを記憶し、フラグ記憶部は「0」とする。
このようにすると、常に連想記憶には先行命令の第2オ
ペランドが格納される。したがつて、連想記憶に第2オ
ペランドが格納されている時には、上述の実施例のよう
に後続命令が空き時間なく実行できる。
また、第3図および第11図の2つの実施例では、ストア
命令が実行されるとストア・データを用いて連想記憶内
の情報を書換えている。しかし、本発明はストア命令が
実行された時、そのストア・アドレスとオペランド・ア
ドレスが一致するワードを無効化する場合にも適用でき
る。
命令が実行されるとストア・データを用いて連想記憶内
の情報を書換えている。しかし、本発明はストア命令が
実行された時、そのストア・アドレスとオペランド・ア
ドレスが一致するワードを無効化する場合にも適用でき
る。
この場合には、第4図の連想記憶320を、信号線712に
「1」が印加された時に、信号線708上のストア・アド
レスとアドレス記憶部が等しいワードを連想記憶から削
除するように構成すればよい。この場合にも、連想記憶
に情報が格納されている時には、上述の実施例のように
後続命令は空き時間なく実行できる。
「1」が印加された時に、信号線708上のストア・アド
レスとアドレス記憶部が等しいワードを連想記憶から削
除するように構成すればよい。この場合にも、連想記憶
に情報が格納されている時には、上述の実施例のように
後続命令は空き時間なく実行できる。
更に、連想キーとしては、今まで述べたすべてを使うこ
ともできるし、任意の組合せを使うこともできる。その
際、キー構成要素の一部のビツト位置を使うこともでき
る。
ともできるし、任意の組合せを使うこともできる。その
際、キー構成要素の一部のビツト位置を使うこともでき
る。
本発明を使用しない場合、レジスタコンフリクトを起こ
す先行命令が開始されてから、後続命令が開始されるま
でに、先行命令のアドレス計算時間,オペランド読出し
時間,演算時間がかかる。
す先行命令が開始されてから、後続命令が開始されるま
でに、先行命令のアドレス計算時間,オペランド読出し
時間,演算時間がかかる。
しかし、本発明を用いることにより、連想キーを予測装
置に入力してから予測値が出力するまでの時間しかかか
らない。後者の時間は、連想キーに何を用いるかによつ
て異なるが、先行命令の命令アドレスを連想キーに用い
る最悪の場合でも、その時間は本発明を使用しない場合
より十分短い。
置に入力してから予測値が出力するまでの時間しかかか
らない。後者の時間は、連想キーに何を用いるかによつ
て異なるが、先行命令の命令アドレスを連想キーに用い
る最悪の場合でも、その時間は本発明を使用しない場合
より十分短い。
第1A図は命令形式図、第1B図はロード命令の例、第2図
はレジスタコンフリクトを起こす二つの命令の例、第3
図は実施例の全体構成図、第4図は連想記憶装置の構成
図、第5〜8図はタイミングチヤート図、第9図はレジ
スタコンフリクト検出装置の構成図、第10図はセレクタ
の動作図、第11図はそれぞれ他の実施例の全体構成図で
ある。 100……先読み命令アドレスレジスタ、304……命令記憶
装置、104,106,108,110……命令バツフア、112……命令
レジスタ、114……命令カウンタ、324……アドレス加算
器、120……オペランド・アドレスレジスタ、326……オ
ペランド記憶装置、126……オペランドデータレジス
タ、330……ALU、118……レジスタフアイル、320……連
想記憶、322……レジスタコンフリクト検出装置。
はレジスタコンフリクトを起こす二つの命令の例、第3
図は実施例の全体構成図、第4図は連想記憶装置の構成
図、第5〜8図はタイミングチヤート図、第9図はレジ
スタコンフリクト検出装置の構成図、第10図はセレクタ
の動作図、第11図はそれぞれ他の実施例の全体構成図で
ある。 100……先読み命令アドレスレジスタ、304……命令記憶
装置、104,106,108,110……命令バツフア、112……命令
レジスタ、114……命令カウンタ、324……アドレス加算
器、120……オペランド・アドレスレジスタ、326……オ
ペランド記憶装置、126……オペランドデータレジス
タ、330……ALU、118……レジスタフアイル、320……連
想記憶、322……レジスタコンフリクト検出装置。
フロントページの続き (72)発明者 武内 茂雄 東京都小平市上水本町1479番地 日立超エ ル・エス・アイ・エンジニアリング株式会 社内
Claims (7)
- 【請求項1】先行命令とそれと並行して実行されるべき
後続の命令との間に、該先行命令の実行結果を、該後続
命令が使用するというコンフリクトがあるかを検出し、 該二つの命令の間でコンフリクトが検出されたとき、該
先行命令の実行結果が利用可能になるまで、その先行命
令の実行結果を該後続命令が利用するタイミングを遅延
させ、 該先行命令が後に再実行され、それに並行して該後続命
令も再実行されたとき、該先行命令の再実行の結果が現
に利用可能になる前に、該先行命令の先の実行結果を、
該先行命令の今回の実行結果として使用して、該後続命
令のその再実行を行い、 該先行命令が、主記憶内のオペランドに対して演算を行
なう命令であり、その先行命令の先の実行後その先行命
令のその再実行までに、その先行命令が先に使用したメ
モリオペランドを更新する命令が実行された場合におい
て、上記先行命令の上記再実行および上記後続命令の上
記再実行を行なうときには、 (a)先行命令の該先行命令の上記再実行時にその先行
命令が指定する演算を実行するより前に、上記更新後の
メモリオペランドを使用して該先行命令が指定する演算
を実行し、 (b)上記先行命令の先の実行結果を使用した、上記後
続の命令の上記再実行の代わりに、上記更新後のメモリ
オペランドを利用した上記演算の結果を使用して、該後
続の命令の上記再実行を行なう命令実行方法。 - 【請求項2】上記先行命令に関して、該後続命令のとの
間でコンフリクトが検出された場合、その先行命令の実
行結果を記憶し、 該先行命令が、命令で指定可能なメモリ内のオペランド
に対して演算を行なう命令であって、その先行命令の先
の実行後であってその先行命令の後の実行前に、その先
行命令が使用したメモリオペランドを更新する命令が実
行された場合、上記記憶された演算結果に代えて、上記
更新後のメモリオペランドを記憶し、 上記後続命令の上記再実行時に、上記先行命令に関して
記憶された上記演算結果もしくは上記メモリオペランド
を使用する請求項1記載の命令実行方法。 - 【請求項3】該先行命令が、命令で指定可能なメモリ内
のオペランドに対して演算を行なう命令である場合、そ
の先行命令の上記演算結果を記憶する時に、そのメモリ
オペランドのアドレスをさらに記憶し、 該先行命令の先の実行後にいずれかの、メモリオペラン
ドを更新する命令が実行されたとき、その更新命令が指
定するメモリアドレスと該記憶されたメモリアドレスと
の一致を検出し、 該一致が検出されたときに、上記更新後のメモリオペラ
ンドの上記記憶を行なう請求項1記載の命令実行方法。 - 【請求項4】先行命令とそれと並行して実行されるべき
後続の命令との間に、該先行命令の実行結果を、該後続
命令が使用するという、コンフリクトがあるかを検出す
る手段と、 該二つの命令の間でコンフリクトが検出されたとき、該
先行命令の実行結果が利用可能になるまで、その先行命
令の実行結果を該後続命令が利用するタイミングを遅延
させる手段と、 該先行命令が後に再実行され、それに並行して該後続命
令も再実行されたとき、該先行命令の再実行の結果が現
に利用可能になる前に、該先行命令の先の実行結果を、
該先行命令の今回の実行結果として使用して、該後続命
令のその再実行を行う予測実行手段と、 コンフリクト解消用の演算器と、 該先行命令が、主記憶内のオペランドに対して演算を行
なう命令であり、、その先行命令の先の実行後その先行
命令のその再実行までに、その先行命令が先に使用した
メモリオペランドを更新する命令が実行された場合にお
いて、上記先行命令の上記再実行および上記後続命令の
上記再実行を行なうときに、該先行命令の上記再実行時
にその先行命令が指定する演算を実行するより前に、そ
の更新後のメモリオペランドを該演算器に供給する手段
と、 上記予測実行手段による上記後続の命令の上記再実行の
代わりに、その演算器による、上記更新後のメモリオペ
ランドを利用した演算の結果を使用して、該後続の命令
の再実行を行なう手段とを有するデータ処理装置。 - 【請求項5】先行命令とそれと並行して実行されるべき
後続の命令との間に、該先行命令の実行結果を、該後続
命令が使用するという、コンフリクトがあるかを検出す
る手段と、 該二つの命令の間でコンフリクトが検出されたとき、該
先行命令の実行結果が利用可能になるまで、その先行命
令の実行結果を該後続命令が利用するタイミングを遅延
させる手段と、 該先行命令が後に再実行され、それに並行して該後続命
令も再実行されたとき、該先行命令の再実行の結果が現
に利用可能になる前に、該先行命令の先の実行結果を、
該先行命令の今回の実行結果として使用して、該後続命
令のその再実行を行う予測実行手段と、 コンフリクト解消用の演算器と、 該先行命令が、主記憶内のオペランドに対して演算を行
なう命令であり、、その先行命令の先の実行後その先行
命令のその再実行までに、その先行命令が先に使用した
メモリオペランドを更新する命令が実行された場合にお
いて、上記先行命令の上記再実行および上記後続命令の
上記再実行を行なうときに、該先行命令の上記再実行時
にその先行命令が指定する演算を実行するより前に、そ
の更新後のメモリオペランドを該演算器に供給する手段
と、 上記予測実行手段による上記後続の命令の上記再実行の
代わりに、その演算器による、上記更新後のメモリオペ
ランドを利用した演算の結果を使用して、該後続の命令
の再実行を行なう手段と、 該検出手段による該二つの命令の間のコンフリクトの検
出の応答して、該先行命令の先の実行結果を記憶する手
段と、 上記メモリオペランドを更新する上記命令が実行された
場合、上記先行命令に関して記憶された実行結果を無効
とし、その更新命令で更新された後のメモリオペランド
をその先行命令に関連する情報として該記憶手段に書き
込む手段とを有し、 該予測実行手段は、該先行命令の先の実行結果を該記憶
手段から読み出し、これを該先行命令の今回の実行結果
として使用して、該後続の命令を再実行する手段からな
り、 該供給手段は、上記後続の命令の再実行時に、上記先行
命令に関してメモリオペランドが記憶されている場合
に、その記憶されたメモリオペランドを上記演算器に供
給する手段を有するデータ処理装置。 - 【請求項6】該予測実行手段は、 上記記憶された、該先行命令の先の実行結果もしくはメ
モリオペランドからなるデータを、該先行命令の実行に
同期し、かつ、該後続の命令の実行に無関係に読み出す
手段と、 該後続の命令の実行中に、該検出手段によりコンフリク
トが検出されたときに、かつ、この読み出されたデータ
が先行命令の演算結果であるときにこれを該後続の命令
のオペランドとして使用する手段とを有し、 該供給手段は、該後続の命令の実行中に、該検出手段に
よりコンフリクトが検出されたときに、かつ、この読み
出されたデータがメモリオペランドであるときにこれを
上記演算器に供給する手段を有する請求項第5項のデー
タ処理装置。 - 【請求項7】該記憶手段は、該先行命令に関連する情報
を連想キーとして、その命令の先の実行結果を記憶する
連想記憶からなり、 該予測実行手段は、 いずれかの命令の実行時に、その命令に関連する情報を
連想キーとして、該連想記憶をアクセスし、その命令の
先の実行結果もしくはメモリオペランドがすでに記憶さ
れていればそれを読み出す手段を有する請求項第5項の
データ処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9550485A JPH0760384B2 (ja) | 1985-05-07 | 1985-05-07 | 命令実行方法およびデータ処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9550485A JPH0760384B2 (ja) | 1985-05-07 | 1985-05-07 | 命令実行方法およびデータ処理装置 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6071819A Division JP2685713B2 (ja) | 1994-04-11 | 1994-04-11 | データ処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS6284340A JPS6284340A (ja) | 1987-04-17 |
| JPH0760384B2 true JPH0760384B2 (ja) | 1995-06-28 |
Family
ID=14139425
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9550485A Expired - Lifetime JPH0760384B2 (ja) | 1985-05-07 | 1985-05-07 | 命令実行方法およびデータ処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0760384B2 (ja) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2667851B2 (ja) * | 1988-01-22 | 1997-10-27 | 株式会社日立製作所 | 情報処理装置 |
| JP2685713B2 (ja) * | 1994-04-11 | 1997-12-03 | 株式会社日立製作所 | データ処理装置 |
| WO1998011484A1 (fr) * | 1996-09-13 | 1998-03-19 | Hitachi, Ltd. | Processeur de commande a memoire d'historique |
| US6810474B1 (en) * | 1998-03-04 | 2004-10-26 | Hitachi, Ltd. | Information processor |
| JP3499135B2 (ja) | 1998-06-29 | 2004-02-23 | 富士通株式会社 | 情報処理装置 |
| US7590825B2 (en) | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
-
1985
- 1985-05-07 JP JP9550485A patent/JPH0760384B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPS6284340A (ja) | 1987-04-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3110404B2 (ja) | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 | |
| JP2744890B2 (ja) | ブランチ予測式データ処理装置および動作方法 | |
| EP0135844A2 (en) | A data processor with a branch target instruction storage | |
| JPH11212788A (ja) | プロセッサのデータ供給装置 | |
| US4992932A (en) | Data processing device with data buffer control | |
| US5504925A (en) | Apparatus and method for implementing interrupts in pipelined processors | |
| JPH063584B2 (ja) | 情報処理装置 | |
| US5226169A (en) | System for execution of storage-immediate and storage-storage instructions within cache buffer storage | |
| EP0094535B1 (en) | Pipe-line data processing system | |
| JPH0760384B2 (ja) | 命令実行方法およびデータ処理装置 | |
| US4924377A (en) | Pipelined instruction processor capable of reading dependent operands in parallel | |
| US6016541A (en) | Instruction controlling system and method thereof | |
| US7275146B2 (en) | Instruction control device and method therefor | |
| JPH0552534B2 (ja) | ||
| JP2685713B2 (ja) | データ処理装置 | |
| JPH08249178A (ja) | プロセッサのアネックス内において修飾ビットを形成する方法及び装置 | |
| JP2667851B2 (ja) | 情報処理装置 | |
| WO1998011484A1 (fr) | Processeur de commande a memoire d'historique | |
| JP2901247B2 (ja) | 掃出し制御方式 | |
| JPH07191911A (ja) | アドレス変換装置及びマイクロプロセッサ算出方法 | |
| JP3132566B2 (ja) | 命令先行制御装置 | |
| JPH0452488B2 (ja) | ||
| JPH05307483A (ja) | レジスタ書き込み制御方法および回路 | |
| JPH0248733A (ja) | 情報処理装置 | |
| KR20250135894A (ko) | 예측 스토어-투-로드 포워딩 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EXPY | Cancellation because of completion of term |