JPH0769818B2 - デ−タ処理装置 - Google Patents
デ−タ処理装置Info
- Publication number
- JPH0769818B2 JPH0769818B2 JP59227773A JP22777384A JPH0769818B2 JP H0769818 B2 JPH0769818 B2 JP H0769818B2 JP 59227773 A JP59227773 A JP 59227773A JP 22777384 A JP22777384 A JP 22777384A JP H0769818 B2 JPH0769818 B2 JP H0769818B2
- Authority
- JP
- Japan
- Prior art keywords
- store
- data
- instruction
- area
- store data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の詳細な説明】 〔発明の利用分野〕 本発明はデイジタルコンピユータに係り、特に概念的に
先行する命令の実行が終了しないうちにその結果等を予
測しながら後続の命令を並列に実行することで高速化を
図るデータ処理装置におけるストア処理方式に関する。
先行する命令の実行が終了しないうちにその結果等を予
測しながら後続の命令を並列に実行することで高速化を
図るデータ処理装置におけるストア処理方式に関する。
従来より、汎用大型デイジタルコンピユータにおいて
は、高速化のためにパイプライン方式や並列処理方式の
ような、複数の命令を同時に処理するのが一般的となつ
ている。この例としては、日経エレクトロニクス「汎用
コンピユータ」p.251〜263“IBM3033プロセツサの内部
設計とパフオーマンズ”で挙げられているIBM3033,“An
Efficient Algorithm for Exploiting Multiple Arith
metic Units",IBM Journal Jan,1967で挙げられているI
BM360/91がある。
は、高速化のためにパイプライン方式や並列処理方式の
ような、複数の命令を同時に処理するのが一般的となつ
ている。この例としては、日経エレクトロニクス「汎用
コンピユータ」p.251〜263“IBM3033プロセツサの内部
設計とパフオーマンズ”で挙げられているIBM3033,“An
Efficient Algorithm for Exploiting Multiple Arith
metic Units",IBM Journal Jan,1967で挙げられているI
BM360/91がある。
3033では高速化のために、分岐命令の処理においては、
分岐判定が下る前に後続の命令の処理を開始するため
に、分岐が成立か不成立かの予測を立て、分岐判定が下
るまでは後続命令を予測状態のまま処理する方式をとつ
ている。
分岐判定が下る前に後続の命令の処理を開始するため
に、分岐が成立か不成立かの予測を立て、分岐判定が下
るまでは後続命令を予測状態のまま処理する方式をとつ
ている。
一方、360/91では高速化のために独立に命令の演算を行
える演算器を複数設け、入力オペランドが揃い次第、概
念的に後の命令であつても直ちに演算を始めるという方
式をとつている。
える演算器を複数設け、入力オペランドが揃い次第、概
念的に後の命令であつても直ちに演算を始めるという方
式をとつている。
さてより一層の高速化を図るためには、これら予測処理
方式と並列演算方式の両方を採用することが望ましい
が、この場合次のような問題が生ずる。すなわち、予測
状態でストア命令の処理を行い結果を主記憶に書き込ん
だ後で実は予測が誤つていたことが判明する、というケ
ースが起るとすると、2つの理由で好ましくない。第1
の理由は、結局該ストア命令は実行してはいけなかつた
わけであるから、主記憶の内容をその書き込みの前の状
態に復元する必要が生ずるため、このための制御論理を
設ける必要が生じ、またこの復元のための余分な時間ロ
スが生じるため高速化を妨げる可能性があることであ
る。また第2の理由は、主記憶を複数のCPU(中央処理
装置)やチヤネルが共有する場合、上記のストア命令が
誤つて書き込んだ結果を、該CPUが主記憶の復元を完了
する前に他のCPUやチヤネルが読み出してしまう可能性
があるが、これは多くの場合許されないことである。
方式と並列演算方式の両方を採用することが望ましい
が、この場合次のような問題が生ずる。すなわち、予測
状態でストア命令の処理を行い結果を主記憶に書き込ん
だ後で実は予測が誤つていたことが判明する、というケ
ースが起るとすると、2つの理由で好ましくない。第1
の理由は、結局該ストア命令は実行してはいけなかつた
わけであるから、主記憶の内容をその書き込みの前の状
態に復元する必要が生ずるため、このための制御論理を
設ける必要が生じ、またこの復元のための余分な時間ロ
スが生じるため高速化を妨げる可能性があることであ
る。また第2の理由は、主記憶を複数のCPU(中央処理
装置)やチヤネルが共有する場合、上記のストア命令が
誤つて書き込んだ結果を、該CPUが主記憶の復元を完了
する前に他のCPUやチヤネルが読み出してしまう可能性
があるが、これは多くの場合許されないことである。
本発明の目的は予測処理方式と並列演算方式を供に採用
しているデータ処理装置において上記従来技術の問題点
のない、すなわち、予測中のストア命令による誤つた主
記憶書き込みによる復元動作がなく、また誤つた主記憶
の内容を他CPUやチヤネルから読み出されることのな
い、高速な命令処理方式を提供することにある。
しているデータ処理装置において上記従来技術の問題点
のない、すなわち、予測中のストア命令による誤つた主
記憶書き込みによる復元動作がなく、また誤つた主記憶
の内容を他CPUやチヤネルから読み出されることのな
い、高速な命令処理方式を提供することにある。
本発明においては、ストアすべきデータ,アドレス情報
を保持するストアバツフアを1つ以上設け,各ストアバ
ツフアにストア命令の処理が予測中か否かの状態フラグ
を付与する。ストア命令の処理にあたつては、演算ステ
ージまでは予測中か否かに関わらず、並列演算方式にの
つとつて処理を続けるが、主記憶書き込みステージにお
いては予測状態が解消するまでは主記憶への書き込みを
行わず、ストアバツフアにデータ等を保持するのみにし
ておく。そして予測状態が解消した時点で、予測が誤つ
ていればストアバツフアのストア命令をキヤンセルし、
予測が正しければ主記憶に書き込みを行う。
を保持するストアバツフアを1つ以上設け,各ストアバ
ツフアにストア命令の処理が予測中か否かの状態フラグ
を付与する。ストア命令の処理にあたつては、演算ステ
ージまでは予測中か否かに関わらず、並列演算方式にの
つとつて処理を続けるが、主記憶書き込みステージにお
いては予測状態が解消するまでは主記憶への書き込みを
行わず、ストアバツフアにデータ等を保持するのみにし
ておく。そして予測状態が解消した時点で、予測が誤つ
ていればストアバツフアのストア命令をキヤンセルし、
予測が正しければ主記憶に書き込みを行う。
以下本発明の実施例を説明する。説明の都合上IBMのシ
ステム370アーキテクチヤに基づくマシンを前提とす
る。
ステム370アーキテクチヤに基づくマシンを前提とす
る。
第1図は典型的な命令フオーマツトを示している。第1
図(a)は、浮動小数点加算命令ADや、ストア命令STの
フオーマツトであり、OP部は演算の内容を、R1部は命令
の第1オペランドが格納されるレジスタ番号を、X2部,
B2部,D2部は、第2オペランドアドレスを作成するため
のインデクスレジスタ番号,ベースレジスタ番号,デイ
スプレイスメントをそれぞれ示す。第1図(b)は、Br
anch on Condition命令(BCと略記)のフオーマツトで
あり、OP部はBC命令であることを、M1部は分岐成立とす
べき条件コードの値を示すマクスを、X2,B2,D2部は分岐
先命令アドレスを作成するためのインデクスレジスタ番
号,ベースレジスタ番号,デイスプレイスメントをそれ
ぞれ示す。
図(a)は、浮動小数点加算命令ADや、ストア命令STの
フオーマツトであり、OP部は演算の内容を、R1部は命令
の第1オペランドが格納されるレジスタ番号を、X2部,
B2部,D2部は、第2オペランドアドレスを作成するため
のインデクスレジスタ番号,ベースレジスタ番号,デイ
スプレイスメントをそれぞれ示す。第1図(b)は、Br
anch on Condition命令(BCと略記)のフオーマツトで
あり、OP部はBC命令であることを、M1部は分岐成立とす
べき条件コードの値を示すマクスを、X2,B2,D2部は分岐
先命令アドレスを作成するためのインデクスレジスタ番
号,ベースレジスタ番号,デイスプレイスメントをそれ
ぞれ示す。
第2図は本発明を用いたデータ処理装置において、高速
処理が可能な命令列の主記憶上の配置である。第1の命
令はAD命令であり、演算結果に基づいて条件コードが設
定される。第2のBC命令はこの条件コードの値によつて
分岐成立/不成立を判定する。第3のST命令は、該BC命
令が分岐不成立であつた場合実行される。このST命令
は、該BC命令の分岐判定により実行されるか否かが定ま
る点を除けば、該BC,AD命令とデータの依存関係はな
く、またオペランドレジスタの値は十分前に確定してい
るものとする。
処理が可能な命令列の主記憶上の配置である。第1の命
令はAD命令であり、演算結果に基づいて条件コードが設
定される。第2のBC命令はこの条件コードの値によつて
分岐成立/不成立を判定する。第3のST命令は、該BC命
令が分岐不成立であつた場合実行される。このST命令
は、該BC命令の分岐判定により実行されるか否かが定ま
る点を除けば、該BC,AD命令とデータの依存関係はな
く、またオペランドレジスタの値は十分前に確定してい
るものとする。
第3図は、本発明を適用したデータ処理装置の全体構成
の概略図である。1及び2はCPU,3はプログラム及びデ
ータを格納する主記憶とその制御を行う主記憶装置(以
下MSと略記する)、4はチヤネルであり、入出力装置5
とMSとの間のデータ転送を制御する。CPU1,2,チヤネル
4は、いずれもMS3と接続されており、それぞれ主記憶
に対して読み出しと書き込みを行う。
の概略図である。1及び2はCPU,3はプログラム及びデ
ータを格納する主記憶とその制御を行う主記憶装置(以
下MSと略記する)、4はチヤネルであり、入出力装置5
とMSとの間のデータ転送を制御する。CPU1,2,チヤネル
4は、いずれもMS3と接続されており、それぞれ主記憶
に対して読み出しと書き込みを行う。
CPU-1の内部は命令制御ユニツト(以下IUと略す)6,演
算ユニツト(以下EUと略す)7,記憶制御ユニツト(以下
SCUと略す)8から成る。
算ユニツト(以下EUと略す)7,記憶制御ユニツト(以下
SCUと略す)8から成る。
IU6はSCU8に対して命令読み出し要求を発行しSCU8経由
で読み出された命令を解読しオペランド読み出し要求を
再びSCU8に発行する。読み出されたオペランドはSCU8及
びIU6経由にてEU7に送出される。IU6によつてオペラン
ドと伴に命令の解読情報がEU7に渡されると、EU7では複
数個設けられている演算器E0,E1…のうち空いているも
のにこれをセツトアツプし演算を行う。命令がストア命
令である場合は、演算器はSCU8に対してストア要求を発
行し、ストアデータ,アドレス情報を送出する。SCU8は
IU6からの命令読み出し、オペランド読み出しEU7からの
ストア要求を受け付け、必要ならアドレス変換を行い、
MS3に対してこれらの主記憶参照を行う。SCU8には通常
の制御回路の他に本発明によるストアバツフア9とスト
アバツフア制御回路10が設けられている。
で読み出された命令を解読しオペランド読み出し要求を
再びSCU8に発行する。読み出されたオペランドはSCU8及
びIU6経由にてEU7に送出される。IU6によつてオペラン
ドと伴に命令の解読情報がEU7に渡されると、EU7では複
数個設けられている演算器E0,E1…のうち空いているも
のにこれをセツトアツプし演算を行う。命令がストア命
令である場合は、演算器はSCU8に対してストア要求を発
行し、ストアデータ,アドレス情報を送出する。SCU8は
IU6からの命令読み出し、オペランド読み出しEU7からの
ストア要求を受け付け、必要ならアドレス変換を行い、
MS3に対してこれらの主記憶参照を行う。SCU8には通常
の制御回路の他に本発明によるストアバツフア9とスト
アバツフア制御回路10が設けられている。
第4図は、上記CPU1がMS3上に置かれた第2図の命令列
を処理した時の概略のタイムチヤートである。横軸はマ
シンサイクルを単位とした時間を表わし、縦軸は命令処
理を行う各論理ユニツト/論理回路である。本タイムチ
ヤートでは、各論理ユニツト/論理回路において各命令
の処理が行われている時間帯を、該命令のニーモニツク
を矩形で囲むことにより表している。またIU6にてAD命
令の解読の始まる時刻からST命令によるMS3への書き込
みの終了時刻までを、順にC1,C2,…,C6と呼ぶことに
する。
を処理した時の概略のタイムチヤートである。横軸はマ
シンサイクルを単位とした時間を表わし、縦軸は命令処
理を行う各論理ユニツト/論理回路である。本タイムチ
ヤートでは、各論理ユニツト/論理回路において各命令
の処理が行われている時間帯を、該命令のニーモニツク
を矩形で囲むことにより表している。またIU6にてAD命
令の解読の始まる時刻からST命令によるMS3への書き込
みの終了時刻までを、順にC1,C2,…,C6と呼ぶことに
する。
C1にてAD命令の解読、オペランド読み出しが行われ、C2
からC5の間、演算器E0にて演算が行われる。本タイムチ
ヤートでは示していないがC6にて結果を浮動小数点レジ
スタにまた条件コードをPSWに書き込む。またBC命令はC
2にて解読が行われ、C3にて演算器E1にセツトアツプさ
れるが、先行するAD命令の処理が完了していないため、
AD命令が設定する条件コードを用いて行うべき分岐判定
ができず、従つてC5まで保留される。C6にてAD命令の条
件コードが設定されるので同サイクルにおいてBC命令の
分岐判定が行われる。本例においては分岐不成立であつ
たものとする。一方ST命令はC3において解読を行う。本
来C3ではBC命令の分岐判定が下つていないため、ST命令
を実行すべきか否か決定できないが、BC命令は分岐不成
立になるという予測のもとにST命令の処理を開始する。
からC5の間、演算器E0にて演算が行われる。本タイムチ
ヤートでは示していないがC6にて結果を浮動小数点レジ
スタにまた条件コードをPSWに書き込む。またBC命令はC
2にて解読が行われ、C3にて演算器E1にセツトアツプさ
れるが、先行するAD命令の処理が完了していないため、
AD命令が設定する条件コードを用いて行うべき分岐判定
ができず、従つてC5まで保留される。C6にてAD命令の条
件コードが設定されるので同サイクルにおいてBC命令の
分岐判定が行われる。本例においては分岐不成立であつ
たものとする。一方ST命令はC3において解読を行う。本
来C3ではBC命令の分岐判定が下つていないため、ST命令
を実行すべきか否か決定できないが、BC命令は分岐不成
立になるという予測のもとにST命令の処理を開始する。
ST命令はC4にて演算器E2にセツトアツプされ、C5にてス
トアデータやアドレス情報がストアバツフアに一時的に
格納される。この時このST命令が予測状態であることを
示す予測フラグをセツトする。一方C6にてBC命令の分岐
判定が下るが、本例では上述のように分岐不成立である
ため、予測が正しかつたことが判明する。ゆえに、スト
アバツフア内に格納されていた該ST命令の予測フラグを
リセツトしさらにストアデータを、アドレス情報に従つ
てC7にて主記憶に書き込む。仮に上記BC命令の分岐判定
により、予測が誤つていたとすると、この場合は、スト
アバツフア内の該ST命令をキヤンセルする。このように
することで、演算器E2はC5にて空き状態にすることがで
き、後続命令の演算に使用可能となり、他の演算器が使
用である時には命令処理の高速化に役立つ。
トアデータやアドレス情報がストアバツフアに一時的に
格納される。この時このST命令が予測状態であることを
示す予測フラグをセツトする。一方C6にてBC命令の分岐
判定が下るが、本例では上述のように分岐不成立である
ため、予測が正しかつたことが判明する。ゆえに、スト
アバツフア内に格納されていた該ST命令の予測フラグを
リセツトしさらにストアデータを、アドレス情報に従つ
てC7にて主記憶に書き込む。仮に上記BC命令の分岐判定
により、予測が誤つていたとすると、この場合は、スト
アバツフア内の該ST命令をキヤンセルする。このように
することで、演算器E2はC5にて空き状態にすることがで
き、後続命令の演算に使用可能となり、他の演算器が使
用である時には命令処理の高速化に役立つ。
次に第5図,第6図を用いてストアバツフア及びストア
バツフア制御回路の構成を説明する。
バツフア制御回路の構成を説明する。
まず第5図はストアバツフアの構成を示す。501〜502は
m+1個のストアデータレジスタ及びストアアドレスレ
ジスタである。演算ユニツトにてST命令が実行される
と、演算ユニツトより信号線503を介してストア要求信
号REQが発行され、同時に信号線504,505を介して演算ユ
ニツトから送られてくるストアデータ及びストアアドレ
スを501〜502のいずれかのレジスタに格納する。この場
合何番のレジスタに格納するかは、ストアバツフア制御
回路10より信号線506を介して送られてくる入力ポイン
タIPで示される。507はセレクタであり、ストアバツフ
ア出力制御回路より信号線508を介して送られてくる出
力ポインタOPで示される番号のストアデータレジスタ及
びストアアドレスレジスタの内容を選択し、これを信号
線509を介して主記憶装置に送出する。
m+1個のストアデータレジスタ及びストアアドレスレ
ジスタである。演算ユニツトにてST命令が実行される
と、演算ユニツトより信号線503を介してストア要求信
号REQが発行され、同時に信号線504,505を介して演算ユ
ニツトから送られてくるストアデータ及びストアアドレ
スを501〜502のいずれかのレジスタに格納する。この場
合何番のレジスタに格納するかは、ストアバツフア制御
回路10より信号線506を介して送られてくる入力ポイン
タIPで示される。507はセレクタであり、ストアバツフ
ア出力制御回路より信号線508を介して送られてくる出
力ポインタOPで示される番号のストアデータレジスタ及
びストアアドレスレジスタの内容を選択し、これを信号
線509を介して主記憶装置に送出する。
第6図はストアバツフア制御回路10の構成を示す。601
はストアバツフア状態制御回路であり、上述した501〜5
02のm+1個のレジスタ対応して、ストア要求の有無を
示す要求フラグと、ストア要求が予測状態か否かを示す
予測フラグ602〜603とを有する。すなわち、602は、ス
トアバツフア内の0番のレジスタに対応してストア要求
が有ることを示す要求フラグREQ0及び、該ストア要求が
予測状態で処理しているST命令によるものであることを
示す予測フラグP0である。また603はm番のレジスタに
対応する要求フラグREQmと予測フラグPmである。
はストアバツフア状態制御回路であり、上述した501〜5
02のm+1個のレジスタ対応して、ストア要求の有無を
示す要求フラグと、ストア要求が予測状態か否かを示す
予測フラグ602〜603とを有する。すなわち、602は、ス
トアバツフア内の0番のレジスタに対応してストア要求
が有ることを示す要求フラグREQ0及び、該ストア要求が
予測状態で処理しているST命令によるものであることを
示す予測フラグP0である。また603はm番のレジスタに
対応する要求フラグREQmと予測フラグPmである。
604はストアバツフア入力制御回路である。604は601か
ら信号線605を介してREQ0〜REQmを受けとり、このうち
オフであるものの中から1つを選択しその番号をストア
バツフアの入力ポインタIPとして信号線506に出力す
る。信号線506はストアバツフア9及びストアバツフア
状態制御回路601に送出される。EU7(第3図)から信号
線503を介してストアバツフア状態制御回路にREQ信号が
送出されると、入力ポインタIPで示される番号の要求フ
ラグを1にセツトし、同時に信号線606を介してEU7から
送出される予測状態信号Pの値を入力ポインタIPで示さ
れる予測フラグの値としてセツトする。
ら信号線605を介してREQ0〜REQmを受けとり、このうち
オフであるものの中から1つを選択しその番号をストア
バツフアの入力ポインタIPとして信号線506に出力す
る。信号線506はストアバツフア9及びストアバツフア
状態制御回路601に送出される。EU7(第3図)から信号
線503を介してストアバツフア状態制御回路にREQ信号が
送出されると、入力ポインタIPで示される番号の要求フ
ラグを1にセツトし、同時に信号線606を介してEU7から
送出される予測状態信号Pの値を入力ポインタIPで示さ
れる予測フラグの値としてセツトする。
607はストアバツフア出力制御回路である。607は601か
ら信号線605を介してREQ0〜REQmを、また信号線608を介
してP0〜Pmを受けとり、このうち予測フラグがオフでか
つ要求フラグがオンであるレジスタの番号をストアバツ
フアの出力ポインタOPとして信号線508に出力する。信
号線508は、ストアバツフア9及びストアバツフア状態
制御回路601に送出される。また実際に予測フラグがオ
フでかつ要求フラグがオンであるレジスタが存在した場
合は、607はMS3(第3図)に対するストア要求信号MREQ
を発行する。MREQは信号線609を介して、3及び601に送
出される。607がMREQを発行した時、601はOPで示される
番号の要求フラグ及び予測フラグを0にリセツトする。
ら信号線605を介してREQ0〜REQmを、また信号線608を介
してP0〜Pmを受けとり、このうち予測フラグがオフでか
つ要求フラグがオンであるレジスタの番号をストアバツ
フアの出力ポインタOPとして信号線508に出力する。信
号線508は、ストアバツフア9及びストアバツフア状態
制御回路601に送出される。また実際に予測フラグがオ
フでかつ要求フラグがオンであるレジスタが存在した場
合は、607はMS3(第3図)に対するストア要求信号MREQ
を発行する。MREQは信号線609を介して、3及び601に送
出される。607がMREQを発行した時、601はOPで示される
番号の要求フラグ及び予測フラグを0にリセツトする。
一方、ストアバツフア状態制御回路601は、EU7から信号
線610を介して送られてくる分岐判定信号BJを受けとる
と、もし分岐予測が正しければ、すなわち本実施例にお
いては、BJが分岐不成立を示していたならば、P0〜Pmを
すべて0にリセツトする。こうすることにより、今まで
要求フラグはオンであつたにも係らず予測フラグがオン
であつたがためにMREQを発行できないでいたストア要求
は、予測フラグがオフとなるためMREQを発行することが
でき、MSに書き込みが行われることとなる。またもしBJ
信号を受け取つた時に分岐予測が誤つていたとすれば、
REQ0〜REQmのうち、対応する予測フラグがオンであるも
のを全て“0"にリセツトする。同時にP0〜Pmも全て“0"
にリセツトする。こうすることにより、ストアバツフア
内の、実は実行してはいけなかつたストア要求はキヤン
セルされたことになる。
線610を介して送られてくる分岐判定信号BJを受けとる
と、もし分岐予測が正しければ、すなわち本実施例にお
いては、BJが分岐不成立を示していたならば、P0〜Pmを
すべて0にリセツトする。こうすることにより、今まで
要求フラグはオンであつたにも係らず予測フラグがオン
であつたがためにMREQを発行できないでいたストア要求
は、予測フラグがオフとなるためMREQを発行することが
でき、MSに書き込みが行われることとなる。またもしBJ
信号を受け取つた時に分岐予測が誤つていたとすれば、
REQ0〜REQmのうち、対応する予測フラグがオンであるも
のを全て“0"にリセツトする。同時にP0〜Pmも全て“0"
にリセツトする。こうすることにより、ストアバツフア
内の、実は実行してはいけなかつたストア要求はキヤン
セルされたことになる。
演算ユニツトから記憶制御ユニツトSCU8に信号線503,50
4,505,610を介して送出される信号REQ,ストアデータ,
ストアアドレス,BJはいずれも従来技術で容易に作成す
ることができるのでその説明は省略する。また信号線60
6上の信号Pは例えば次のようにして作成できる。すな
わち、命令制御ユニツト6からEU-7への命令セツトアツ
プは命令の概念的実行順序通りだとした場合、EU7へ分
岐命令がセツトアツプされたと同時に“1"にセツトさ
れ、分岐判定が行われたと同時に“0"にセツトされるフ
リツプフロツプの値をPとすればよい。
4,505,610を介して送出される信号REQ,ストアデータ,
ストアアドレス,BJはいずれも従来技術で容易に作成す
ることができるのでその説明は省略する。また信号線60
6上の信号Pは例えば次のようにして作成できる。すな
わち、命令制御ユニツト6からEU-7への命令セツトアツ
プは命令の概念的実行順序通りだとした場合、EU7へ分
岐命令がセツトアツプされたと同時に“1"にセツトさ
れ、分岐判定が行われたと同時に“0"にセツトされるフ
リツプフロツプの値をPとすればよい。
またSCU8からMS3に信号線609,509を介して送出される信
号MREQ,ストアデータ,ストアアドレスに対するMS-3の
構成とこれらを受けとつた時の、動作は従来技術と同様
であるので説明を省略する。
号MREQ,ストアデータ,ストアアドレスに対するMS-3の
構成とこれらを受けとつた時の、動作は従来技術と同様
であるので説明を省略する。
なお上記実施例における予測としては、分岐命令の分岐
判定だけではなく、次に述べるような各種のものが考え
られ、いずれに対しても本発明を適用可能である。すな
わち、特公昭54-9456にあるように、分岐命令における
分岐先命令データを予測するもの、特願昭58-237778に
あるように、レジスタコンフリクトを生じる2命令の処
理において先行命令の演算結果を予測するものがある。
判定だけではなく、次に述べるような各種のものが考え
られ、いずれに対しても本発明を適用可能である。すな
わち、特公昭54-9456にあるように、分岐命令における
分岐先命令データを予測するもの、特願昭58-237778に
あるように、レジスタコンフリクトを生じる2命令の処
理において先行命令の演算結果を予測するものがある。
本発明によれば、予測処理方式と並列演算方式を供に採
用しているデータ処理装置において、予測中であつても
ストア命令の演算処理を完了し、該ストア命令の演算処
理を行つた演算器がさらに別の命令の演算処理に使用可
能となるため、高速化に効果がある。しかも本発明によ
れば予測中の命令によつて誤つて主記憶に書き込みが行
われることがないため、復元動作が必要なく、これによ
る処理速度低下も生じない。さらに誤つて主記憶に書き
込みが行われることがないため、他CPUやチヤンネルか
らこの予測の誤つたストア命令の結果が見えてしまうこ
とも妨げるため、この点についてIBMシステム370アーキ
テクチヤ等の仕様を守ることも可能である。
用しているデータ処理装置において、予測中であつても
ストア命令の演算処理を完了し、該ストア命令の演算処
理を行つた演算器がさらに別の命令の演算処理に使用可
能となるため、高速化に効果がある。しかも本発明によ
れば予測中の命令によつて誤つて主記憶に書き込みが行
われることがないため、復元動作が必要なく、これによ
る処理速度低下も生じない。さらに誤つて主記憶に書き
込みが行われることがないため、他CPUやチヤンネルか
らこの予測の誤つたストア命令の結果が見えてしまうこ
とも妨げるため、この点についてIBMシステム370アーキ
テクチヤ等の仕様を守ることも可能である。
しかも、予測で実行された命令により生成されたストア
データを複数保持出来るので、複数のストアデータを生
成する命令を続けて予測で実行できる。
データを複数保持出来るので、複数のストアデータを生
成する命令を続けて予測で実行できる。
さらに、予測状態ではなく通常の状態で実行された複数
の命令により生成された複数のストアデータだけでな
く、予測により実行された複数の命令により生成された
ストアデータも混ぜて一時的に保持することが出来る。
の命令により生成された複数のストアデータだけでな
く、予測により実行された複数の命令により生成された
ストアデータも混ぜて一時的に保持することが出来る。
言い替えると、予測で実行された命令の前に実行されて
いた命令の中に、ストアデータを生成する命令が一つあ
るいは複数ある場合でも、その一つ又は複数の命令のス
トアの完了を待たないで、後続の予測で実行する命令を
実行することが出来る。
いた命令の中に、ストアデータを生成する命令が一つあ
るいは複数ある場合でも、その一つ又は複数の命令のス
トアの完了を待たないで、後続の予測で実行する命令を
実行することが出来る。
とくに、命令の実行時間が命令により異なる汎用の計算
機では、先行する、ストアデータを生成する命令の実行
の終了を待たないで後続の、ストアデータを生成する命
令を実行できるということは、命令の実行の高速化とい
う点で利点が大きい。しかも、このことが上記で述べた
ごとく予測で実行されている複数の命令間でも当てはま
ること、さらに上記で述べた、予測でなく実行される命
令とその後の予測で実行される命令の間で当てはまると
いう効果も大きい。
機では、先行する、ストアデータを生成する命令の実行
の終了を待たないで後続の、ストアデータを生成する命
令を実行できるということは、命令の実行の高速化とい
う点で利点が大きい。しかも、このことが上記で述べた
ごとく予測で実行されている複数の命令間でも当てはま
ること、さらに上記で述べた、予測でなく実行される命
令とその後の予測で実行される命令の間で当てはまると
いう効果も大きい。
これらの効果は、予測で実行された命令によるストアデ
ータとそうでない命令によるそれとの区別を同じストア
バツフア上で行なつていることに直接的あるいは間接的
に生じている。
ータとそうでない命令によるそれとの区別を同じストア
バツフア上で行なつていることに直接的あるいは間接的
に生じている。
第1図は典型的な命令フオーマツトを示す図、第2図は
高速化される命令列の例を示す図、第3図はデータ処理
装置の全体構成例を示す図、第4図は第2図の命令列を
処理した時のタイムチヤート、第5図はストアバツフア
の構成図、第6図はストアバツフア制御回路図である。 3……主記憶装置、7……演算ユニツト、8……記憶制
御ユニツト、9……ストアバツフア、10……ストアバツ
フア制御回路、601……ストアバツフア状態制御回路、6
04……ストアバツフア入力制御回路、607……ストアバ
ツフア出力制御回路。
高速化される命令列の例を示す図、第3図はデータ処理
装置の全体構成例を示す図、第4図は第2図の命令列を
処理した時のタイムチヤート、第5図はストアバツフア
の構成図、第6図はストアバツフア制御回路図である。 3……主記憶装置、7……演算ユニツト、8……記憶制
御ユニツト、9……ストアバツフア、10……ストアバツ
フア制御回路、601……ストアバツフア状態制御回路、6
04……ストアバツフア入力制御回路、607……ストアバ
ツフア出力制御回路。
フロントページの続き (72)発明者 釜田 栄樹 東京都国分寺市東恋ヶ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 武内 茂雄 東京都小平市上水本町1479番地 日立マイ クロコンピユータエンジニアリング株式会 社内 (56)参考文献 特開 昭58−178464(JP,A) 特開 昭58−9274(JP,A) 特公 昭60−49339(JP,B2)
Claims (1)
- 【請求項1】プログラムを構成する複数の命令を並列に
実行するとともに、実行の可否の判別した後に実行すべ
き特定の命令をその判別の結果を待たないで予測により
実行開始し、もしくは先行する命令の実行結果により値
が変わるデータを使用する命令を、そのデータが確定す
るのを待たないで、そのデータの予測値を使用して実行
するように構成されたデータ処理装置であって、 該複数の命令を実行した結果得られ、プログラムおよび
データを格納する主記憶もしくはその写しを保持するキ
ャッシュ記憶に書込むべき複数のストアデータとそれぞ
れのストアアドレスを保持するためのストアバッファ
と、 該ストアバッファに保持された複数のストアデータを該
主記憶または該キャッシュ記憶に書き込むストアバッフ
ァ制御回路とを有し、 ストアバッファ制御回路は、 該ストアバッファ内の、ストアデータ保持用の複数の領
域の各々に対応して設けられた、第1および第2のフラ
グと、 いずれかの命令の実行の結果生成されたストアデータを
該複数の領域の一つに記憶するときに、その領域に、該
主記憶または該キャッシュ記憶に書込むべきストアデー
タが保持されていることを指示するように、その領域に
対応して設けられた第1のフラグを更新する第1の更新
手段と、 そのストアデータを生成した命令が予測により実行され
た命令であるか否かに応じて、その領域に保持されたス
トアデータが、それぞれ予測状態および非予測状態を指
示するように、その領域に対応して設けられた第2のフ
ラグを更新する第2の更新手段と、 該ストアバッファのいずれかの領域に保持されたストア
データが、予測状態のストアデータである場合におい
て、後にそのストアデータを生成した命令の予測実行が
成功したことが該データ処理装置により判別されたとき
に、そのストアデータが非予測状態のストアデータであ
ることを指示するように、その領域に対応して設けられ
た第2のフラグを更新する第3の更新手段と、 該ストアバッファのいずれかの領域に保持されたストア
データが、予測状態のストアデータである場合におい
て、後に予測が失敗したことが該データ処理装置により
判別されたときに、その領域に、該主記憶または該キャ
ッシュ記憶に書込むべきストアデータが保持されていな
いことを指示するように、その領域に対応して設けられ
た第1のフラグを更新する第4の更新手段と、 該第1および該第2のフラグを参照して、該ストアバッ
ファの該複数の領域に保持されたストアデータの内、該
主記憶または該キャッシュ記憶に書込むべき有効なスト
アデータであって、かつ、非予測状態であるストアデー
タを選択して、該主記憶または該キャッシュ記憶に書込
む手段とを有するデータ処理装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP59227773A JPH0769818B2 (ja) | 1984-10-31 | 1984-10-31 | デ−タ処理装置 |
| US06/793,545 US4760520A (en) | 1984-10-31 | 1985-10-31 | Data processor capable of executing instructions under prediction |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP59227773A JPH0769818B2 (ja) | 1984-10-31 | 1984-10-31 | デ−タ処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS61107434A JPS61107434A (ja) | 1986-05-26 |
| JPH0769818B2 true JPH0769818B2 (ja) | 1995-07-31 |
Family
ID=16866154
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP59227773A Expired - Lifetime JPH0769818B2 (ja) | 1984-10-31 | 1984-10-31 | デ−タ処理装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US4760520A (ja) |
| JP (1) | JPH0769818B2 (ja) |
Families Citing this family (43)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
| US5440704A (en) * | 1986-08-26 | 1995-08-08 | Mitsubishi Denki Kabushiki Kaisha | Data processor having branch predicting function |
| US5265220A (en) * | 1986-12-23 | 1993-11-23 | Nec Corporation | Address control device for effectively controlling an address storing operation even when a request is subsequently cancelled |
| JPS63245525A (ja) * | 1987-03-31 | 1988-10-12 | Toshiba Corp | マイクロプログラム処理装置 |
| US5134561A (en) * | 1987-07-20 | 1992-07-28 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
| US4901233A (en) * | 1987-07-20 | 1990-02-13 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
| JPS6488844A (en) * | 1987-09-30 | 1989-04-03 | Takeshi Sakamura | Data processor |
| JP2810043B2 (ja) * | 1987-11-13 | 1998-10-15 | 株式会社日立製作所 | データ処理装置 |
| US4943908A (en) * | 1987-12-02 | 1990-07-24 | International Business Machines Corporation | Multiple branch analyzer for prefetching cache lines |
| GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
| JP2723238B2 (ja) * | 1988-01-18 | 1998-03-09 | 株式会社東芝 | 情報処理装置 |
| US5228131A (en) * | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
| JPH07113890B2 (ja) * | 1988-06-24 | 1995-12-06 | 日本電気株式会社 | 情報処理装置 |
| GB8817912D0 (en) * | 1988-07-27 | 1988-09-01 | Int Computers Ltd | Data processing apparatus |
| GB8817911D0 (en) * | 1988-07-27 | 1988-09-01 | Int Computers Ltd | Data processing apparatus |
| US5125083A (en) * | 1989-02-03 | 1992-06-23 | Digital Equipment Corporation | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system |
| DE69030931T2 (de) * | 1989-04-24 | 1998-01-15 | Ibm | Mehrfachsequenzprozessorsystem |
| US5072364A (en) * | 1989-05-24 | 1991-12-10 | Tandem Computers Incorporated | Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel |
| CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
| JP2570859B2 (ja) * | 1989-05-25 | 1997-01-16 | 日本電気株式会社 | データ処理装置 |
| US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
| JP2680899B2 (ja) * | 1989-08-28 | 1997-11-19 | 日本電気株式会社 | 情報処理装置及びその制御方法 |
| US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
| EP0545927B1 (en) * | 1990-05-04 | 2000-06-28 | International Business Machines Corporation | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction |
| US5303356A (en) * | 1990-05-04 | 1994-04-12 | International Business Machines Corporation | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag |
| JP2845578B2 (ja) * | 1990-06-19 | 1999-01-13 | 甲府日本電気 株式会社 | 命令制御方式 |
| US5235697A (en) * | 1990-06-29 | 1993-08-10 | Digital Equipment | Set prediction cache memory system using bits of the main memory address |
| US5257354A (en) * | 1991-01-16 | 1993-10-26 | International Business Machines Corporation | System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results |
| US5253349A (en) * | 1991-01-30 | 1993-10-12 | International Business Machines Corporation | Decreasing processing time for type 1 dyadic instructions |
| US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
| JPH056274A (ja) * | 1991-06-27 | 1993-01-14 | Mitsubishi Electric Corp | データ処理装置 |
| ATE200357T1 (de) | 1991-07-08 | 2001-04-15 | Seiko Epson Corp | Risc-prozessor mit dehnbarer architektur |
| US5649097A (en) * | 1991-10-25 | 1997-07-15 | International Business Machines Corporation | Synchronizing a prediction RAM |
| EP0638183B1 (en) | 1992-05-01 | 1997-03-05 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
| US5442767A (en) * | 1992-10-23 | 1995-08-15 | International Business Machines Corporation | Address prediction to avoid address generation interlocks in computer systems |
| US5463746A (en) * | 1992-10-30 | 1995-10-31 | International Business Machines Corp. | Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes |
| US5465373A (en) * | 1993-01-08 | 1995-11-07 | International Business Machines Corporation | Method and system for single cycle dispatch of multiple instructions in a superscalar processor system |
| TW242673B (ja) * | 1993-08-18 | 1995-03-11 | Ibm | |
| US5584009A (en) * | 1993-10-18 | 1996-12-10 | Cyrix Corporation | System and method of retiring store data from a write buffer |
| US5524220A (en) * | 1994-08-31 | 1996-06-04 | Vlsi Technology, Inc. | Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems |
| US6604190B1 (en) * | 1995-06-07 | 2003-08-05 | Advanced Micro Devices, Inc. | Data address prediction structure and a method for operating the same |
| US7051192B2 (en) * | 2000-05-31 | 2006-05-23 | Sun Microsystems, Inc. | Facilitating value prediction to support speculative program execution |
| KR20040045467A (ko) * | 2001-10-02 | 2004-06-01 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 자바 하드웨어 가속기에 대한 추론적 실행 |
Family Cites Families (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3881173A (en) * | 1973-05-14 | 1975-04-29 | Amdahl Corp | Condition code determination and data processing |
| JPS5466048A (en) * | 1977-11-07 | 1979-05-28 | Hitachi Ltd | Information processor |
| JPS6024985B2 (ja) * | 1978-08-31 | 1985-06-15 | 富士通株式会社 | デ−タ処理方式 |
| JPS56149646A (en) * | 1980-04-21 | 1981-11-19 | Toshiba Corp | Operation controller |
| JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
| US4370711A (en) * | 1980-10-21 | 1983-01-25 | Control Data Corporation | Branch predictor using random access memory |
| JPS57155666A (en) * | 1981-03-20 | 1982-09-25 | Fujitsu Ltd | Instruction controlling system of vector processor |
| JPS589274A (ja) * | 1981-07-10 | 1983-01-19 | Nec Corp | 書込デ−タバツフア制御装置 |
| JPS5858653A (ja) * | 1981-10-02 | 1983-04-07 | Hitachi Ltd | デ−タ処理装置 |
| JPS5896349A (ja) * | 1981-12-02 | 1983-06-08 | Hitachi Ltd | マイクロ命令制御のデータ処理装置 |
| US4532589A (en) * | 1981-12-02 | 1985-07-30 | Hitachi, Ltd. | Digital data processor with two operation units |
| US4435756A (en) * | 1981-12-03 | 1984-03-06 | Burroughs Corporation | Branch predicting computer |
| JPS58178464A (ja) * | 1982-04-14 | 1983-10-19 | Hitachi Ltd | 並列演算処理装置 |
| US4604691A (en) * | 1982-09-07 | 1986-08-05 | Nippon Electric Co., Ltd. | Data processing system having branch instruction prefetching performance |
| US4651276A (en) * | 1982-10-06 | 1987-03-17 | Mcdonnell Douglas Corporation | Computer read next instruction system |
| US4594659A (en) * | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Method and apparatus for prefetching instructions for a central execution pipeline unit |
| JPS5984292A (ja) * | 1982-11-08 | 1984-05-15 | 富士通株式会社 | Crtデイスプレイ制御装置 |
| US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
| US4608633A (en) * | 1983-04-01 | 1986-08-26 | Honeywell Information Systems Inc. | Method for decreasing execution time of numeric instructions |
| JPS6043751A (ja) * | 1983-08-18 | 1985-03-08 | Hitachi Ltd | 情報処理装置 |
| JPS6049339A (ja) * | 1983-08-30 | 1985-03-18 | Dainippon Screen Mfg Co Ltd | 複製画像の編集装置 |
| US4571673A (en) * | 1983-09-29 | 1986-02-18 | Tandem Computers Incorporated | Enhanced CPU microbranching architecture |
| JPS60120439A (ja) * | 1983-12-05 | 1985-06-27 | Nec Corp | 演算処理装置 |
-
1984
- 1984-10-31 JP JP59227773A patent/JPH0769818B2/ja not_active Expired - Lifetime
-
1985
- 1985-10-31 US US06/793,545 patent/US4760520A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPS61107434A (ja) | 1986-05-26 |
| US4760520A (en) | 1988-07-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0769818B2 (ja) | デ−タ処理装置 | |
| EP0368332B1 (en) | Pipeline data processor | |
| JP2539199B2 (ja) | デジタルプロセッサ制御装置 | |
| US5293500A (en) | Parallel processing method and apparatus | |
| EP0135844B1 (en) | A data processor with a branch target instruction storage | |
| US4679140A (en) | Data processor with control of the significant bit lengths of general purpose registers | |
| US5155817A (en) | Microprocessor | |
| JPH0766329B2 (ja) | 情報処理装置 | |
| US4807113A (en) | Microprogrammed control data processing apparatus in which operand source and/or operand destination is determined independent of microprogram control | |
| JPH03286332A (ja) | デジタルデータ処理装置 | |
| JPH0752390B2 (ja) | 命令処理装置 | |
| JPH0743648B2 (ja) | 情報処理装置 | |
| JPH0461390B2 (ja) | ||
| US4975837A (en) | Programmable unit having plural levels of subinstruction sets where a portion of the lower level is embedded in the code stream of the upper level of the subinstruction sets | |
| JPH06168263A (ja) | ベクトル処理装置 | |
| JPH02123442A (ja) | 高速化メモリ | |
| JPH0377137A (ja) | 情報処理装置 | |
| JPH08263289A (ja) | 複数命令流パイプライン計算機 | |
| JPH06131180A (ja) | 命令処理方式および命令処理装置 | |
| JP3102399B2 (ja) | データ処理装置及び方法 | |
| JP2856784B2 (ja) | 電子計算機 | |
| JPH06332700A (ja) | 情報処理装置 | |
| JPH06332701A (ja) | 情報処理装置 | |
| JPH01271842A (ja) | 情報処理装置 | |
| JPH0679296B2 (ja) | 多重仮想アドレス空間アクセス方法およびデータ処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EXPY | Cancellation because of completion of term |