JPH03212734A - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH03212734A
JPH03212734A JP937790A JP937790A JPH03212734A JP H03212734 A JPH03212734 A JP H03212734A JP 937790 A JP937790 A JP 937790A JP 937790 A JP937790 A JP 937790A JP H03212734 A JPH03212734 A JP H03212734A
Authority
JP
Japan
Prior art keywords
instruction
branch
stage
address
output
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.)
Pending
Application number
JP937790A
Other languages
English (en)
Inventor
Tatsuya Ueda
達也 上田
Masahito Matsuo
雅仁 松尾
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP937790A priority Critical patent/JPH03212734A/ja
Publication of JPH03212734A publication Critical patent/JPH03212734A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はデータ処理装置に関し、更に詳述すれば、分岐
命令処理機構によりパイプライン処理の乱れを抑制して
多段パイプライン処理機構を効率的に動作させて高度の
処理能力を発揮し得るデータ処理装置に関する。
〔従来の技術〕
第6図は従来のデータ処理装置において一般的に採用さ
れているパイプライン処理機構の概略の構成例を示す模
式図である。
図中11は命令フェッチステージ(IFステージ)12
は命令デコードステージ(Dステージ)、13はオペラ
ンドアドレス計算ステージ(Aステージ)、14はオペ
ラントフェッチステージ(Fステージ)、15は命令実
行ステージ(Eステージ)である。
[Fステージ11は図示しないメモリから命令コードを
フェッチしてDステージ12へ出力する。Dステージ1
2はIPステージ11がフェッチした命令コートをデコ
ードし、そのデコード結果をAステージ13へ出力する
。Aステージ13は命令コード中で指定されたオペラン
ドの実効アドレスを計算し、その結果をFステージ14
へ出力する。Fステージ14はAステージ13から入力
されたオペランドアドレスに従ってメモリからオペラン
ドアドレスをフェッチし、Eステージ15へ出力する。
Eステージ15はFステージ14から入力されたオペラ
ンドを対象として命令コード中で指定された演算を実行
し、更に必要な場合はその演算結果をメモリにストアす
る。
上述のように、従来のデータ処理装置ではパイプライン
処理機構により各命令で指定される処理は一例として5
つに分解されて順次処理される。
それぞれの5つの処理は異なる命令に対しては並列動作
させることが可能であり、理想的には5段のパイプライ
ン処理機構により5個の命令を同時並列的に処理して、
パイプライン処理を採用しない場合に比して最大で5倍
の処理能力を有するデータ処理装置が得られる。
パイプライン処理の手法は上述の如く、データ処理装置
の処理能力を大幅に向上させ得るため、処理速度が高い
データ処理装置では広く採用されている。
しかし、パイプライン処理は常に理想的な状態で動作す
るという保証はない。パイプライン処理における問題の
一つとして、分岐命令の処理が挙げられる。
たとえば、第6図に示す如き構成のパイプライン処理機
構により分岐命令をEステージ15において処理した後
、別の分岐命令をIFステージ11が処理する場合には
、パイプライン処理が大きく乱れる。その様子を第7図
の従来のデータ処理装置における分岐命令の処理手順を
示す模式図を参照して説明する。
第7図においては、命令1)13及び命令lNl2が分
岐命令である。命令rN3が実行されると、既にパイプ
ライン処理が開始されている命令IN4.  命令IN
S、  命令IN6.  命令IN7はキャンセルされ
、命令IN3の分岐先命令である命令INIIの処理が
新たにIFステージ11から開始される。
命令IN3がEステージ15で実行されてから命令IN
IIがEステージ15で実行されるまでには4命令分の
処理時間が無駄になる。
命令lNl2についても同様に4命令分の処理時間が無
駄になる。
この無駄時間は分岐命令の実行後に処理されるべき命令
のフェッチが分岐命令に対する全パイプライン処理が終
了した後に行われるために生しる。
従って、パイプライン処理の段数が多ければ多い程、無
駄時間も長くなる。
このような、分岐命令の実行に際するパイプライン処理
の乱れを抑制する目的で、IFステージ11において命
令をフェッチする時点で分岐命令の分岐先を予測し、そ
の分岐命令がEステージ15において実行される以前に
命令のフェッチ先を予め分岐先へ変更する先行分岐処理
が採用されている。
このような先行分岐処理をプリブランチ処理と称する。
第8図は上述のようなプリブランチ処理に使用される従
来のデータ処理装置のブランチターゲットバッファ(B
TB)及び命令フェッチ部の構成例を示す模式図である
BTB160は、複数のエントリにて構成され、それぞ
れのエントリは分岐命令アドレスフィールド。
エントリが有効であるか否かを示す有効ビットフィール
ド及び分岐先アドレスフィールドにて構成されている。
分岐命令アドレスフィールドには、分岐命令のアドレス
が登録される。分岐先アドレスフィールドにはそれぞれ
の分岐命令が分岐した場合の分岐先アドレスが登録され
る。
Eステージ15において分岐命令が分岐を発生すると、
その命令のアドレスと分岐先アドレスとが対になってそ
れぞれBTB160の分岐命令アドレスフィールドと分
岐先アドレスフィールドとに登録され、対応する有効ビ
ットフィールドのビットが“1“にセットされる。
1Fステージ11による命令のフェッチは、フェッチす
べき命令のアドレスをカウンタ口INPC115にセッ
トすることにより行われる。
IPステージ11が命令をフェッチすると、カウンタQ
INPC115の値であるその命令のアドレスがデコー
ダ190によりデコードされ、このデコード結果に従っ
てBTB160の対応するエントリが指定される。
指定されたBT3160中の分岐命令アドレスフィール
ドの値は比較器191へ出力されるが、比較器191に
はカウンタQINPC115の値も与えられており、両
者は比較器191で比較される。
この比較器191による比較結果が一致し、且つ対応す
る有効ビットフィールドのビットが“1″であれば、プ
リブランチが発生する。即ち、比較器191の比較結果
が一致したことを示す信号“l”と有効ビットフィール
ドの値“1”とが共にANDゲート192へ入力される
ので、その“1″出力がプリブランチ発生信号として分
岐先アドレスレジスタ161に与えられると共に命令フ
ェッチシーケンスがBTB160中の分岐先アドレスフ
ィールドの値に変更される。
具体的には、分岐先アドレスレジスタ161はBTB1
60中の分岐先アドレスフィールドからの出力をラッチ
し、このアドレスの命令、即ち分岐先命令をフェッチし
て命令キュー112に格納する。
このようにして分岐先命令が命令キュー112に格納さ
れると、それに対応して入力ポインタP1164がイン
クリメントされる。この現在入カポインタP1164が
指示している位置の一つ前の位置には分岐命令が格納さ
れている。即ち、命令キュー112には分岐命令とこの
分岐命令からの分岐先命令とが連続して格納されている
。従って、Dステージ12以降の各ステージにおける処
理を混乱させることなく、命令シーケンスを変更するこ
とが可能である。
〔発明が解決しようとする課題〕
上述の如く、プリブランチ処理の採用により、命令フェ
ッチステージにおいて命令フェッチシーケンスを予め分
岐先へ切換えれば、パイプライン処理の効率は一般的に
向上する。
しかし、命令キュー112の各エントリの命令フィール
ドのサイズが命令フェッチのデータサイズ以下である場
合、たとえば命令が4バイト(32ビツト)単位でフェ
ッチされ、一方命令キュー112の命令フィールドのサ
イズが2ハイド(16ビツト)であるような場合には、
分岐命令の最後が命令フェッチのデータサイズの境界で
終わらない場合、あるいは分岐先命令の先頭が命令フェ
ッチのデータサイズの境界から始まらない場合等が有り
得る。
このような場合には、命令キューの内部で分岐命令と分
岐先命令との間に無効なコードが介在することになるの
で、命令キューの制御が不可能になる。
本発明はこのような事情に鑑みてなされたものであり、
命令キューの内部において分岐命令と分岐先命令との間
に無効なコードが介在するような状況においても、命令
キューの制御が可能なデータ処理装置の提供を目的とす
る。
〔課題を解決するための手段〕
本発明のデータ処理装置では、分岐発生時専用の出力ポ
インタを備え、分岐発生時にはその分岐の原因となった
命令の命令キューでの格納位置と分岐先命令のアドレス
とに基づいて分岐先命令の格納位置を分岐発生時専用の
出力ポインタに与える。
〔作用〕
本発明のデータ処理装置では、分岐発生時に、命令キュ
ーの内部において分岐命令と分岐先命令との間に無効な
コードが介在する場合にも、分岐発生時専用の出力ポイ
ンタにより命令キューからの命令の出力位置が補正され
て分岐命令の先頭から出力され、正しくプリブランチが
行われる。
〔発明の実施例〕
以下、本発明をその実施例を示す図面に基づいて詳述す
る。
(1)「機能ブロックの構成」 第4図は本発明のデータ処理装置の一構成例を示すブロ
ック図である。
本発明のデータ処理装置の内部を機能的に大きく分ける
と、命令フェッチ部51.命令デコード部52、 PC
計算部53.オペランドアドレス計算部54゜マイクロ
ROM部55.データ演算部56.外部バスインターフ
ェイス部57に分かれる。
第4図では、その他にCPU外部ヘアドレスを出力する
ためのアドレス出力回路58と、CPU外部とデータを
入出力するためのデータ入出力回路59とを他の機能ブ
ロック部と分けて示した。
(1,1)  r命令フェッチ部」 命令フェッチ部51にはブランチバッファ、命令キュー
とその制御部等があり、次にフェッチすべき命令のアド
レスを決定してブランチバッファあるいはCPU外部の
メモリから命令をフェッチする。
またブランチバッファへの命令登録をも行う。
ブランチバッファは小規模であるためセレクティプキャ
、シュとして動作する。ブランチバッファの動作の詳細
は特開昭63−56731号公報に開示されている。
次にフェッチすべき命令のアドレスは、後述する命令キ
ュー112(第1図参照)へ入力すべき命令のアドレス
として専用のカウンタにて計算される。
分岐あるいはジャンプが発生した場合には、新たな命令
のアドレスがPC計算部53またはデータ演算部56か
ら転送されてくる。
CPU外部のメモリから命令をフェッチする場合は、外
部バスインターフェイス部57を通じて、フェッチすべ
き命令のアドレスがアドレス出力回路58からCPU外
部へ出力されることにより、データ入出力回路59から
命令コードがフェッチされる。
そして、バンファリングした命令コードの内、次にデコ
ードすべき命令コードが命令デコード部52へ出力され
る。
(1,2)  r命令デコード部」 命令デコード部52においては、基本的には16ビノト
(ハーフワード)単位で命令コードがデコートされる。
このブロックには命令コードの第1ハーフワードに含ま
れるオペレーションコードをデコードするFH−デコー
ダ、第2.第3ハーフワードに含まれるオペレーション
コードをデコートするNFHWデコーダ、アドレッシン
グモードをデコードするアドレッシングモードデコーダ
が含まれる。
これらFH−デコーダ、NFH−デコーダ、アドレッシ
ングモードデコーダを一括して第1デコーダと称する。
FHWデコーダあるいはNFH−デコーダの出力を更に
デコードしてマイクロROMのエントリアドレスを計算
する第2デコーダ及びオペランドアドレス計算の際のパ
イプラインコンフリクトをチエツクするアドレス計算コ
ンフリクトチエツク機構も命令デコード部52に含まれ
る。
命令デコード部52は命令フェッチ部51から入力され
た命令コードを2クロツク(1ステツプ)につき0〜6
バイトずつデコードする。デコード結果の内、データ演
算部56での演算に関係する情報がマイクロROM部5
5へ、オペランドアドレス計Xに関係する情報がオペラ
ンドアドレス計算部54へ、PC計算に関係する情報が
pc計算部53へそれぞれ出力される。
(1,3)  rマイクロROM部」 マイクロROM部55には、主にデータ演算部56を制
御するマイクロプログラムが格納されているマイクロR
OM、  マイクロシーケンサ、マイクロ命令デコーダ
等が含まれる。
マイクロ命令はマイクロROMから2クロツク(1ステ
ツプ)に1度続出される。マイクロシーケンサはマイク
ロプログラムで示されるシーケンス処理の他に、例外1
割込及びトラップ(この3つを合わせてEITと称する
)の処理をハードウェア的に受付ける。またマイクロR
OM部55はストアバッファの管理も行う6 マイクロll0M部55には命令コードに依存しない割
込みあるいは演算実行結果によるフラッグ情報と、第2
デコーダの出力等の命令デコード部の出力が入力される
マイクロデコーダの出力は主にデータ演算部56に対し
て出力されるが、ジャンプ命令の実行による他の先行処
理中止情報等の一部の情報は他のブロックへも出力され
る。
(1,4)  rオペランドアドレス計算部」オペラン
ドアドレス計算部54は命令デコード部52のアドレス
デコーダ等から出力されたオペランドアドレス計算に関
係する情報によりハードワイヤード制御される。このブ
ロックではオペランドのアドレス計算に関するほとんど
の処理が行われる。メモリ間接アドレッシングのための
メモリアクセスのアドレス及びオペランドアドレスがメ
モリにマツプされたI/CII域に入るか否かのチエツ
クもこのオペランドアドレス計算部54で行われる。
アドレス計算結果は外部バスインターフェイス部57へ
送られる。アドレス計算に必要な汎用レジスタ及びプロ
グラムカウンタの値はデータ演算部から入力される。
メモリ間接アドレッシングを行う際は外部バスインター
フェイス部57を通してアドレス出力回路5BからCP
U外部へ参照すべきメモリアドレスが出力されることに
より、データ入出力部59から入力された間接アドレス
値が命令デコード部52をそのまま通過してフェッチさ
れる。
(1,5)  rPC計算部J PC計算部53は命令デコード部52から出力されるP
C計算に関係する情報によりハードワイヤードに制御さ
れ、命令のPC値を計算する。
本発明のデータ処理装置は可変長命令セントを有してお
り、命令をデコードしなければその命令の長さが判らな
い。このため、PC計算部53は命令デコード部52か
ら出力される命令長をデコード中の命令のPC値に加算
することにより次の命令のPC値を作り出す。
pc計算部53の計算結果は各命令のpc値として命令
のデコード結果と共に出力される。
(1,6)  rデータ演算部」 データ演算部56はマイクロプログラムにより制御され
、マイクロROM部55の出力情報に従って各命令の機
能を実現するに必要な演算をレジスタと演算器とで実行
する。
演算対象となるオペランドがアドレスあるいは即値であ
る場合は、データ演算部56はオペランドアドレス計算
部54で計算されたアドレスあるいは即値を外部バスイ
ンクフェイス部57を通じて得る。
また、演算対象となるオペランドがCPU外部のメモリ
にある場合は、アドレス計算部54で計算されたアドレ
スをバスインタフェイス部57がアドレス出力回路58
から出力することにより、データ演算部56はCPu外
部のメモリからフェッチしたオペランドをデータ入出力
回路59から得る。
演算器としてはALU、  バレルシフク、プライオリ
ティエンコーダあるいはカウンタ、シフトレジスタなど
がある。レジスタと主な演算器との間は3バスで結合さ
れており、1つのレジスタ間演算を指示する1マイクロ
命令は2クロツク(1ステツプ)で処理される。
データ演算時にCPU外部のメモリをアクセスする必要
がある場合は、マイクロプログラムの指示により外部ハ
スインターフェイス部57を通してアドレス出力回路5
8からアドレスがCPU外部へ出力されることにより、
データ入出力回路59を通して目的のデータがデータf
R算部56ヘフエノチされる。
データ演算部56がCPU外部のメモリからデータをリ
ードする場合は、リードすべきデータのアドレスが^A
ルジスタ76にセットされ、そのアドレスが外部バスイ
ンターフェイス部57を通じてアドレス出力回路58か
ら出力されることにより、データがデータ入出力回路5
9から後述するDDハス108(第1図参照)を通して
[l[l12ルジスク77(第1図参照)へ取込まれる
データ演算部56がCPU外部のメモリへデータをライ
トする場合は、ライトすべきデータのアドレスがAAI
レジスタ76にセットされ、そのアドレスが外部バスイ
ンターフェイス部57を通してアドレス出力回路58か
ら出力されることにより、後述するDDR2レジスタ7
8(第1図参照)にセットされているデータがDDババ
ス08を通じてデータ入出力回路59からCPU外部へ
出力される。
ジャンプ命令の処理あるいは例外処理等を行って新たな
命令アドレスをデータ演算部56が得た場合は、これを
命令フェッチ部11とPC計算部13とへ出力する。
(1,7)  r外部バスインターフェイス部」外部バ
スインターフェイス部57は本発明のデータ処理装置の
外部バスでの通信を制御する。メモリのアクセスはすべ
てクロック同期で行われ、最小2クロックサイクル(1
ステツプ)で行うことができる。
メモリに対するアクセス要求は命令フェッチ部51、オ
ペランドアドレス計算部54及びデータ演算部56から
独立に生じる。更に、オペランドプリフェッチを行うた
めのアクセス要求も生じる。
外部ハスインターフェイス部57はこれらのメモリアク
セス要求を調停する。更に、メモリとCPUとを結ぶデ
ータバスサイズである32ビツト(1ワード)の整置境
界を跨ぐメモリ番地にあるデータのアクセスは、このブ
ロック内で自動的にワード境界を跨ぐことが検知されて
2回のメモリアクセスに分解されて行われる。
ブリフェッチされるオペランドとストアされるオペラン
ドとが重なる場合のコンフリクト防止処理及びストアオ
ペランドからフェッチオペランドへのバイパス処理もこ
の外部バスインターフェイス部57で行われる。
命令フェッチ部51からのアクセス要求がある場合は、
後述するCAMレジスタ142(第1図参照)にアクセ
ス対象のアドレスがセットされる。アドレス計算部54
からのアクセス要求がある場合は、■^レジスタ125
にアクセス対象のアドレスがセントされる。データ演算
部56からのアクセス要求がある場合は、AAIレジス
タ76にアクセス対象のアドレスがセントされる。
オペランドのブリフェッチのためのアクセス要求がある
場合は、FAレジスタ127にセットされたアクセス対
象のアドレスがA^ババス07へ出力されることにより
、CPU外部のメモリから外部バスインターフェイス部
57ヘオペランドデータがフェッチされる6フエツチさ
れたオペランドデータはI)Dバス10gを通してS[
1ATA80へ入力される。また、アクセスに使用され
たAAババス07上のアドレスがSCAM79へ入力さ
れる。
SCAM79と5DATA80とは一致指示線90によ
り相互に接続されている。5DATA80には整置され
た4バイトのデータが2個まで入る。SCAM79には
5DATA80中のデータに対応するアドレスが入る。
5DATA80へのデータの入力は整置された上で行わ
れるが、そのデータをデータ演算部56が取出して使用
する際には、任意のアドレスから任意のデータ長(但し
、4バイト以内)を取出すことが可能である。
(2)「パイプライン機構」 本発明のデータ処理装置のパイプライン処理機構は第5
図に模式的に示される如く構成されている。
命令のブリフェッチを行う命令フェッチステージ(IP
ステージ)31.  命令のデコードを行うデコードス
テージ(Dステージ)32.  オペランドのアドレス
計算を行うオペランドアドレス計算ステージ(Aステー
ジ)33.  マイクロROMアクセス(特にRステー
ジ36と称す)を行う部分とオペランドのブリフェッチ
(特にOFステージ37と称す)を行う部分とからなる
オペランドフェッチステージ(Fステージ)34.  
命令を実行する実行ステージ(Eステージ)35の5段
構成を本発明のデータ処理装置のパイプライン処理の基
本とする。
Eステージ35では1段のストアバッファがある他、高
機能命令の一部は命令の実行自体をパイプライン化する
ため、実際には5段以上のパイプライン処理効果がある
各ステージは他のステージとは独立に動作し、理論上は
5つのステージが完全に独立して動作する。各ステージ
は1回の処理を最小2クロック(lステップ)で行うこ
とができる。従って、理想的には2クロツク(lステッ
プ)毎に次々とパイプライン処理が進行する。
本発明のデータ処理装置には、メモリーメモリ間演算あ
るいはメモリ間接アドレッシング等の如く1回の基本パ
イプライン処理のみでは処理し得ない命令もあるが、本
発明のデータ処理装置はこれらの処理に対してもなるべ
く均衡のとれたパイプライン処理が行えるように設計さ
れている。また、本発明のデータ処理装置では複数のメ
モリオペランドを持つ命令に対しては、メモリオペラン
ドの数に基づいてデコード段階で複数のパイプライン処
理華位(ステップコード)に分解してパイプライン処理
を行う。
パイプライン処理華位の分解方法に関しては特開昭63
−89932号公報に詳しく開示されている。
IFステージ31からDステージ32へ渡される情報は
命令コード40そのものである。Dステージ32からA
ステージ33へ渡される情報は命令で指定された演算に
関するもの(Dコード41と称す)と、オペランドのア
ドレス計算に関係するもの(Aコード42と称す)との
2つがある。
Aステージ33からFステージ34へ渡される情報はマ
イクロプログラムルーチンのエントリアドレスあるいは
マイクロプログラムのパラメータ等を含むRコード43
と、オペランドのアドレスとアクセス方法指示情報等を
含むFコード44との2つである。
Fステージ34からEステージ35へ渡される情報は演
算制御情報とリテラル等を含むEコード45と、オペラ
ンドあるいはオペランドアドレス等を含むSコード46
との2つである。
Eステージ35以外のステージで検出されたEITは、
そのコードがEステージ35へ到達する迄はEIT処理
を起動しない。Eステージ35で処理されている命令の
みが実行段階の命令であり、IFステージ31からFス
テージ34までの間で処理されている命令はまだ実行段
階に至っていないからである。従って、Eステージ35
以外で検出されたEITは、それが検出されたことがス
テップコード中に記録されて次のステージへ伝えられる
のみである。
(2,1)  rパイプライン処理単位」(2,1,1
)  rステップコードへの命令の分解」本発明のデー
タ処理装置では、上述のパイプライン機構の特徴を生か
したパイプライン処理を行う。
Dステージ32では“2ハイドの命令基本部+θ〜4バ
イトのアドレッシング拡張部”、“多段間接モード指定
部子アドレッシング拡張部”又は命令固有の拡張部を1
つのデコード単位として処理する。
各回のデコード結果をステップコードと称し、Aステー
ジ33以降ではこのステップコードをパイプライン処理
の単位としている。ステップコードの数は命令毎に固有
であり、多段間接モード指定を行わない場合は、1つの
命令は最小1個、最大3個のステップコードに分かれる
。多段間接モード指定が行われた場合はそれだけステッ
プコードが増加する。
(2,1,2)  rプログラムカウンタの管理」本発
明のデータ処理装置のパイプライン上に存在するステッ
プコードは全て別命令に対するものである可能性があり
、このためプログラムカウンタの値はステップコード毎
に管理される。全てのステップコードは、そのステップ
コードを発生した命令のプログラムカウンタ値を有する
ステップコードに付属してパイプラインの各ステージを
流れるプログラムカウンタ値はステンブブログラムカウ
ンタ(SPC) と称する。SPCはパイプラインの各
ステージ間を次々と受渡されていく。
(2,2)  r各パイプラインステージの処理J各パ
イプラインステージの入出カステップコードには第5図
に示したように便宜上名前が付けられている。
また、ステップコードはオペレーションコードに関する
処理を行い、マイクロプログラムのエントリアドレス及
びEステージ35に対するパラメータ等になる系列と、
Eステージ35のマイクロ命令に対するオペランドにな
る系列との2系列がある。
(2,2,1)  r命令フェッチステージ」命令フェ
ッチステージ(IFステージ)31は命令をメモリある
いはブランチバッファからフェッチして命令キュー11
2(第1図参照)へ入力し、Dステージ32に対して命
令コードを出力する。命令キュー112への入力は整置
された4ハイド単位で行われる。
メモリから命令をフェッチする場合は、整置された4バ
イトにつき最小2クロック(1ステツプ)を要する。ブ
ランチターゲットバッファ160(BTB:第1図及び
第2図参照)がヒントした場合は、整置された4バイト
につき1クロツクでフェッチ可能である。命令キュー1
12の出力単位は2バイト毎lこ可変であり、2クロツ
クの間に最大6バイトまで出力できる。また、分岐の直
後には命令キュー112をバイパスして命令基本部2バ
イトを直接命令デコーダへ転送することも可能である。
ブランチターゲットバッファ160への命令の登録及び
クリア等の制御、ブリフェッチ先の命令のアドレスの管
理及び命令キュー112の制御もIPステージ31で行
う。
1Fステージ31で検出するErTには、命令をメモリ
からフェッチする際のハスアクセス例外あるいはメモリ
保護違反などによるアドレス変換例外がある。
(2,2,2)  r命令デコードステージ」命令デコ
ードステージ(Dステージ)32はIFステージ31か
ら入力された命令コードをデコードする。
デコードは命令デコード部52のFHWデコーダ、NP
H−デコーダ及びアドレッシングモードデコーダを合わ
せた第1デコーダを使用して、2クロツク(1ステツプ
)単位に1度行ない、1回のデコード処理でθ〜6バイ
トの命令コードを消費する(RET命令の復帰先アドレ
スを含むステップコードの出力処理などでは命令コード
を消費しない)。Dステージ32は1回のデコードでA
ステージ33に対してアドレス計算情報としてのAコー
ド42である約35ビツトの制御コードと最大32ビツ
トのアドレス修飾情報と、オペレーションコードの中間
デコード結果としてのDコード41である約50ビツト
の制御コードと、8ビツトのリテラル情報とを出力する
Dステージ32では、各命令のPC計算部53の制御。
命令キュー112からの命令コードの出力処理をも行う
Dステージ32で検出するEITには予約命令例外があ
る。また、IPステージ31から転送されてきた各種E
l↑はステップコード内にエンコードする処理をしてA
ステージ33へ転送する。
(2,2,3)  rオペランドアドレス計算ステージ
」オペランドアドレス計算ステージ(Aステージ)33
は処理機能が大きく2つに分かれる。1つは命令デコー
ド部52の第2デコーダを使用してオペレーションコー
ドの後段デコードを行う処理で、他方はオペランドアド
レス計算部54でオペランドアドレスの計算を行う処理
である。
オペレーションコードの後段デコード処理はDコード4
1を入力とし、レジスタ、メモリの書込み予約及びマイ
クロプログラムのエントリアドレスとマイクロプログラ
ムに対するパラメータなどを含むRコード43の出力を
行う。なお、レジスタあるいはメモリの書込み予約は、
アドレス計算で参照したレジスタやメモリの内容がパイ
プライン上を先行する命令で書換えられることにより誤
ったアドレス計算が行われるのを防ぐためのものである
。レジスタあるいはメモリの書込み予約はデッドロック
を避けるため、ステ、プコード毎ではなく命令毎に行う
レジスタ及びメモリへの書込み予約については特廓昭6
2−144394号に詳細に開示されている。
オペランドアドレス計算処理はAコード42を入力とし
、Aコード42に従いオペランドアドレス計算部54で
加算あるいはメモリ間接参照を組合わせてアドレス計算
を行い、その計算結果をFコード44として出力する。
この際、アドレス計算に伴うレジスタ及びメモリの続出
し時にコンフリクトチエツクが行われ、先行命令がレジ
スタあるいはメモリへの書込み処理を終了していないた
めコンフリクトが指示されれば、先行命令がEステージ
35で書込み処理を終了するまで待機する。また、オペ
ランドアドレス及びメモリ間接参照のアドレスがメモリ
にマツプされたI10領域に入るか否かのチエツクも行
われる。
Aステージ33で検出するBITには予約命令例外特権
命令例外、バスアクセス例外、アドレス変換例外、メモ
リ間接アドレッシング時のオペランドブレイクポイント
ヒントによるデバッグトラップがある。Dコード41又
はAコード42自体がEITを発生したことを示してい
れば、Aステージ33はそのコードに対してアドレス計
算処理をせず、そのEITをRコード43及びFコード
44へ伝える。
(2,2,4)  rマイクロROMアクセスステージ
」オペランドフェッチステージ(Fステージ)34も処
理が大きく2つに分かれる。一方はマイクロROMのア
クセス処理であり、特にRステージ36と称する。他方
はオペランドプリフェッチ処理であり、特にOFステー
ジ37と称する。Rステージ36と叶ステージ37とは
必ずしも同時に動作するわけではなく、メモリアクセス
権が獲得できるか否か等に依存して独立に動作する。
Rステージ36の処理であるマイクロROMアクセス処
理は、Rコード43に対して次のEステージ35での実
行に使用する実行制御コードであるEコード45を生成
するためのマイクロROMアクセスとマイクロ命令デコ
ード処理とである。1つのRコード43に対する処理が
2つ以上のマイクロプログラムステップに分解される場
合、マイクロROMはEステージ35で使用され、次の
Rコード43はマイクロROMアクセス待ちになる。R
コード43に対するマイクロROMアクセスが行われる
のは、その前のEステージ35での最後のマイクロ命令
実行の時である。本発明のデータ処理装置では、はとん
どの基本命令は1マイクロプログラムステツプで行われ
るため、実際にはRコード43に対するマイクロROM
アクセスが次々と行われることが多い。
Rステージ36で新たに検出するBITはない。Rコー
ド43が命令処理再実行型のEITを示している場合は
そのETT処理に対するマイクロプログラムが実行され
るので、Rステージ36はそのRコード43に従ったマ
イクロ命令をフェッチする。
Rコード43が奇数アドレスジャンプトラップを示して
いる場合、Rステージ36はそれをEコード45によっ
て伝える。これはプリブランチに対するもので、Eステ
ージ35ではそのEコード45で分岐が生しなければそ
のプリブランチを有効として奇数アドレスジャンプトラ
ップを発生する。
(2,2,5)  rオペランドフェッチステージ」オ
ペランドフェッチステージ(OFステージ)37はFス
テージ34で行う上記の2つの処理の内のオペランドプ
リフェッチ処理を行う。
オペランドプリフェッチはFコード44を入力とし、フ
ェッチしたオペランドとそのアドレスとをSコード46
として出力する。1つのFコード44ではワード境界を
跨いでもよいが、4ハイド以下のオペランドフェッチを
指定する。Fコード44にはオペランドのアクセスを行
うか否かの指定も含まれており、Aステージ33で計算
したオペランドアドレス自体あるいは即値をEステージ
35に転送する場合にはオペランドプリフェッチは行わ
ず、Fコード44の内容をSコード46として転送する
ブリフェッチしようとするオペランドと、Eステージ3
5が書込み処理を行おうとするオペランドとが一致する
場合は、オペランドブリフェッチはメモリからは行われ
ずにバイパスして行われる。
また、I/C1i域に対してはオペランドプリフェッチ
を遅延させ、先行命令の処理が全て完了するまで待って
オペランドフェッチを行う。
叶ステージ37で検出されるBITには、ハスアクセス
例外、アドレス変換例外、オペランドプリフェッチに対
するブレイクポイントヒツトによるデバッグトラップが
ある。
Fコード44がデバッグトラップ以外のBITを示して
いる場合はそれをSコード46へ転送し、オペランドプ
リフェッチは行われない。Fコード44がデバッグトラ
ップを示している場合はそのFコード44に対してEI
Tを示していない場合と同し処理をすると共にデバッグ
トラップがSコード46へ伝えられる。
(2,2,6)  r実行ステージ」 実行ステージ(Eステージ)35はEコード45及びS
コード46を入力として動作する。このEステージ35
が命令を実行するステージであり、Fステージ34以前
のステージで行われた処理は全てEステージ35のため
の前処理である。Eステージ35でジャンプ命令が実行
されたり、あるいはBIT処理が起動されたりした場合
は、IPステージ31からFステージ34までの間に行
われた処理は全て無効化される。Eステージ35はマイ
クロプログラムにより制御され、Rコード43に示され
たマイクロプログラムのエントリアドレスからの一連の
マイクロプログラムを実行することにより命令を実行す
る。
マイクロROMの読出しとマイクロ命令の実行とはパイ
プライン化されて行われる。従って、マイクロプログラ
ムで分岐が起きた場合は、1マイクロステツプの空きが
できる。また、Eステージ35はデータ演算部56にあ
るストアバッファを利用して、4バイト以内のオペラン
ドストアと次のマイクロ命令実行とをパイプライン処理
することもできる。
Eステージ35では、Aステージ33で行われたレジス
タ及びメモリに対する書込み予約をオペランドの書込み
後に解除される。
また、条件分岐命令がEステージ35で分岐を発生した
場合は、その条件分岐命令に対する分岐予測が誤ってい
たのであるから、分岐履歴の書換えが行われる。
Eステージ35で検出されるBITには、バスアクセス
例外、アドレス変換例外、デバッグトラップ。
奇数アドレスジャンプトラップ、予約機能例外。
不正オペランド例外、予約スタックフォーマット例外、
ゼロ除算トラップ、無条件トラップ、条件トラップ、遅
延コンテキストトラップ、外部割込遅延割込、リセット
割込、システム障害がある。
Eステージ35で検出されたBITは全てBIT処理さ
れるが、Eステージ以前のIPステージ31からFステ
ージ34の間で検出され且つRコード43あるいはSコ
ード46に反映されているBITは必ずしもBIT処理
されるとは限らない。IFステージ31からFステージ
34の間で検出されたが、先行の命令がEステージ35
でジャンプ命令が実行されたなどの原因でEステージ3
5まで到達しなかったErTは全てキャンセルされる。
そのEITを起こした命令はそもそも実行されなかった
ことになる。
外部割込及び遅延割込は命令の切目でEステージ35に
直接受付けられ、マイクロプログラムにより必要な処理
が実行される。その他の各種BITの処理はマイクロプ
ログラムにより実行される。
(2,3)  r各パイプラインステージの状態制御」
パイプラインの各ステージは入力ラッチと出力ランチと
を有し、他のステージとは独立して動作することを基本
とする。各ステージは1つ前に行った処理が終わり、そ
の処理結果を出力ランチから次のステージの入力ラッチ
へ転送し、自身のステージの入力ランチに次の処理に必
要な入力信号が総て揃えば次の処理を開始する。
つまり各ステージは、1つ前段のステージから出力され
てくる次の処理に対する入力信号が全て有効となり、今
の処理結果を後段のステージの入力ランチに転送して出
力ランチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号が全て揃っている必要がある。入力信号が
揃っていない場合、そのステージは待ち状態(入力待ち
)になる。出力ランチから次のステージの入力ランチへ
の転送を行う場合には次のステージの入力ラッチが空き
状態になっている必要があり、次のステージの入力ラン
チが空きでない場合もパイプラインステージは待ち状態
(出力待ち)になる。必要なメモリアクセス権が獲得で
きなかったり、処理しているメモリアクセスにウェイト
が挿入されたり、その他のパイプラインコンフリクトが
生しると各ステージの処理自体が遅延する。
(3)「分岐命令の処理」 本発明のデータ処理装置においては、上述のように多段
構成のパイプライン処理を採用しているため、分岐命令
を実行した際のオーバヘッドが大きい。このオーバヘッ
ドを小さくするためにIFステージ11においてプリブ
ランチ処理を行っている。
プリブランチ処理はEステージ15において分岐する代
わりにIFステージ11において予め分岐することによ
り、可及的早期において分岐先命令をパイプライン処理
機構へ取込むことを目的としている。
また、本発明のデータ処理装置のプリブランチ処理は可
変長の分岐命令にも対応可能であり、従来の固定長の分
岐命令にのみ対応可能であったプリブランチ処理に比し
て、処理可能な分岐命令の数が大幅に増加する。
本発明のデータ処理装置に限らず、−i的にブタ処理装
置では分岐命令が実行される頻度は非常に高く、このた
めプリブランチ処理による性能向上の効果は大きい。
(3,1)  r分岐命令の種類」 本発明のデータ処理装置では、命令フェッチステージに
おいてプリブランチを行う命令をプリフランチ命令と称
す。このプリブランチ命令には、無条件分岐命令のよう
に、必ず分岐する命令も含まれる。
本発明のデータ処理装置が有する分岐命令は、分岐条件
がスタティックであるかダイナミックであるか及び分岐
先がスタティックであるかダイナミックであるかにより
計4種類に分類される。しかし、本発明のデータ処理装
置においては以下の2種類の命令をプリブランチ命令と
して扱う。
第1は、分岐条件及び分岐先共にスタティックな命令で
ある。この種の命令には無条件分岐命令(BRA)とサ
ブルーチン呼出し命令(BSR)とがある。
第2は、分岐条件がダイナミックで分岐先がスタティッ
クな命令である。この種の命令には、条件分岐命令(B
cc)とループ制御命令(ACB)とがある。
(3,2)  r分岐命令処理回路の機能構成」第1図
は本発明のデータ処理装置の全体の構成を示すブロック
図である。
第1図には、命令フェッチ部51.命令デコート部52
. PC計算部53.オペランドアドレス計算部54デ
ータ演算部56.外部ハスインターフェイス部57のそ
れぞれに含まれる内部回路の構成と、アドレス出力回路
58.データ入出力回路59等が示されている。
命令デコーダ111とpc加算器132の入力端及びア
ドレス加算器124の入力側とは、ディスプレースメン
ト値1分岐命令の変位値を転送するDISPバス100
にて接続されている。
命令デコーダ111 とアドレス加算器124の入力側
とは、ステップコード生成に使用された命令コード長、
スタックブツシュモード時のプリデクリメント値等を転
送する補正値バス102とでも接続されている。
命令デコーダ111とpc加算器132の入力側とは、
ステップコード生成に使用した命令コード長を転送する
命令長ハス101 とでも接続されている。
レジスタファイル144 とアドレス加算器124の入
力側とは、レジスタファイル144に蓄えられているア
ドレス値を転送するAバス103で接続されている。
命令デコーダ111には命令キュー112から命令コー
ドが入力される。命令デコーダ111の出力部には、プ
リブランチ処理により条件分岐命令の分岐条件指定フィ
ールドをEステージ15へそのまま出力するか、条件指
定を反転して出力するかを選択する分岐条件生成回路1
14が備えられている。
命令長バス101の値とDISPハス100の値とを入
力とし、いずれかを選択して出力する被加算値選択回路
131の出力と、Dステージ12においてデコードされ
た命令のPC値を保持するDPC135の値またはステ
ップコードの切目毎の作業用PC値を保持するTPC1
34の値のいずれかとはPC加算器132へ入力される
pc加算器132の出力はpc加算器出力ラうチ133
にラッチされた後、POババス05へ出力される。
POハス105は、ラッチTPC134,ラッチDPC
135゜Aステージ13において処理中の命令のPC値
を保持するラッチAPC136とに接続している。
TPC134にはEステージ15で分岐あるいはジャン
プが生じた際に新たな命令アドレスを入力するためのC
Aババス04からの入力経路もある。
補正値ハス102の出力とDISPバス100の出力と
はディスプレースメント選択回路122へ入力され、い
ずれか一方がアドレス加算器124へ入力される。
DISPバスlOOの出力とAバス103の出力とはベ
ースアドレス選択回路123へ入力され、いずれか−方
がアドレス加算器124へ入力される。
アドレス加算器124は、ディスプレースメント選択回
路122の出力、ベースアドレス選択回路123の出力
及びAハス103から入力された値をシフトすることに
より、1倍、2倍、4倍、8倍の値をとるインデックス
値生成回路121の出力の3つ値を入力として3値加算
を行う。
アドレス加算器124の出力値はアドレス加算器出力ラ
ッチ125を通じてへ〇ハス106へ出力される。
AOババス06は、メモリ間接アドレッシング時に、A
Aババス07を通してアドレス出力口858からCPU
外部ヘアドレス値を出力する際にそのアドレス値を保持
するラッチrA126と、Fステージ14におけるオペ
ランドフェッチ時に、靜バス107を通してアドレス出
力回路58からCPU外部へオペランドアドレス値を出
力する際にそのオペランドアドレス値を保持するラッチ
FA127とに接続されている。
ラッチFAI27は、アドレス加算器124により計算
されたオペランドアドレスをEステージI5で使用する
ためにオペランドアドレス値を保持するラッチ5A14
1への出力経路を有する。
ラッチ5A141は、データ演算部56の汎用データバ
スであるSバス109への出力経路を存する。
命令のアドレスを転送するCAババス04はPC加算器
出力ララッチ33と、ラッチTPC134と、命令フェ
ッチ部51がブリフェッチする命令コードのアドレスを
管理するカウンタQrNPC115と、命令フェッチの
ためのアドレスをAAババス07を通してアドレス出力
回路58からCPU外部へ出力する際にその値を保持す
るラッチCAAI42と、Eステージ15において分岐
あるいはジャンプが生した際に新たな命令アドレスをS
バス109から入力するEBレジスタ143とに接続さ
れている。
ラッチAPC136は、Aバス103 と、Fステージ
14において処理中の命令のPC値を保持するためのラ
ンチFPC137とへの出力経路を有する。
ラッチFPC137は、Eステージ15において処理中
の命令のPC値を保持するう7 fcPc13Bへの出
力経路を有する。
ラッチCPCl38は、Sバス109と、−分岐履歴書
換えのためにPC値の最下位バイトの値を保持するう・
ノチ0PCI39とに出力経路を有する。
レジスタファイル144は汎用レジスタあるいは作業用
レジスタ等にて構成されており、Sバス109とAバス
103とへの出力経路を有し、Dバス110からの入力
経路を有する。
データ演算部56の演算機構であるデータ演算器145
は、Sバス109からの入力経路を有し、Dバス110
への出力経路を有している。
BTB (ブランチターゲントバッファ)160は詳細
は後述するが64エントリで構成されており、各エント
リは分岐命令アドレスフィールド(25ビツト)有効ビ
ットフィールド(lビット)、 分岐先アドレスフィー
ルド(31ビツト)及びシーケンス制御フィールド(2
ビツト)で構成されている (第2図参照)。
有効ビットフィールドは対応するエントリが有効か否か
を示すフィールドであり、シーケンス制御フィールドは
、プリブランチが生した際の命令フェッチシーケンスを
切換えるタイミングを制御するフィールドである。
分岐命令アドレスをBTB160に登録するために、ラ
ッチCPCl38からBTB160への経路が設けられ
ている。また、プリブランチが発生した際にフェッチす
る命令のアドレスを登録するために、CAハス104か
らBTB160への経路が設けられている。
分岐先アドレスレジスタ161は、BTB160から出
力される分岐先アドレスフィールドの内容の上位30ピ
ントをランチしておき、命令フェッチシーケンスが切換
わるタイミングでカウンタQTNPC115へ値を出力
する。
シーケンス制御機構162はダウンカウンタにて構成さ
れており、BTB160のシーケンス制御フィールドの
値を取込み、命令フェッチが行われる都度値をカウント
ダウンする。そして、シーケンス制御機構162は計数
値が“O”になると命令シーケンスを切換える制御信号
を出力する。
(3,3)  rプリブランチの処理方法」第1図に示
した本発明のデータ処理装置の構成の内の、プリブラン
チ処理に特に関係が深い部分の詳細な構成を第2図のブ
ロック図に示す。
BTB160は64エントリで構成され、各エントリは
分岐命令アドレスフィールド(25ビツト)、 有効ビ
ットフィールド(2ビツト)、 分岐先アドレスフィー
ルド(31ビツト)及びシーゲンス制御フィルド(2ビ
ツト)にて構成される。
分岐命令アドレスフィールドには、分岐命令アドレスの
上位24ビツトと、最下位から2番目の1ビツトとが登
録される。
分岐先アドレスフィールドには、分岐先の命令アドレス
の上位31ビツトが登録される。
分岐先アドレスレジスタ161 は30ビツトであり、
BTB15Qの分岐先アドレスフィールドの出力の上位
30ビツトをランチする。
シーケンス制御機構162は、BTB160のシーケン
ス制御フィールドの出力値を取込み、命令フェッチが行
われる都度、その値をカウントダウンする。
シーケンス制?i1機構162はカウント値が“0”に
なると、命令フェッチシーケンスを次フェッチアドレス
に切換える制御信号を出力する。
163はプリブランチ時に使用されるPOO値をラッチ
するプリブランチ出力ポインタレジスタPBRAPOで
あり、プリブランチが発生した際の命令キュー112の
出力ポインタレジスタPO165を調整する。
190はデコーダであり、カウンタQINPC115の
下位6ビツトをデコードしてBTB160の一致すエン
トリを選択する。即ち、デコーダ190はBTB160
のエントリ検索手段として機能する。
191は比較器であり、分岐命令アドレスフィールドの
上位24ビツトの出力値とカウンタQINPC115の
上位24ビツトとを比較し、一致すれば一致信号179
を2入力のANDゲート192の一方の入力として出力
する。
ANDゲート192の他方の入力には有効ビットフィー
ルドの1ビツトの出力値180が与えられている。AN
Dゲート192は再入力が共に“1″であれば、プリブ
ランチ発生信号171(“1”)を出力して分岐先アド
レスレジスタ161及びシーケンス制御機構162へ与
える。即ち、このANDゲート192はBTB160の
有効ビットフィールドの有効性を判断する手段として機
能する。
その他に、カウンタQINPC115,命令キュー11
2゜命令キューの入力ポインタレジスタP1164. 
 命令デコーダ111等が備えられている。
入力ポインタレジスタPK164.  出力ポインタレ
ジスタPO165,プリブランチ出力ポインタレジスタ
PBRAPO163はそれぞれ3ビツト構成であり、カ
ウンタQINPC115の値は下位側に2ビツトのデー
タ“00”を付加して命令フェッチのアドレスとして使
用される。
命令キュ〜112には、命令コードを入力するフィール
ド(16ビノト)の他に、プリブランチが生したことを
示すフィールド(1ビツト)がある。
命令キュー112の各エントリは16ビツトで8エント
リで構成されている。
なお、本実施例では、内部キャッシュを有していないも
のとする。
以下、第1図及び第2図を参照して、分岐命令のプリブ
ランチ処理の手順を以下の4通りの場合に分けて説明す
る。
・プリブランチが発生せず、EステージI5で分岐が発
生しない場合。
・プリブランチが発生せず、Eステージ15で分岐が発
生する場合。
・プリブランチが発生し、Eステージ15で分岐が発生
しない場合。
・プリブランチが発生し、Eステージ15で分岐が発生
する場合。
(3,3,1)  rプリブランチが発生せず、Eステ
ージで分岐が発生しない場合」 カウンタQINPC115の値で外部メモリに対して命
令フェッチが行われると同時に、カウンタ旧NPC11
5の下位6ビントがデコーダ190でデコードされてB
TB160の一つのエントリを選択する。
選択されたエントリの分岐命令アドレスフィールドの上
位24ビツトとカウンタQINPC115の上位24ビ
ツトとが比較器191で比較される。比較結果が一致し
なければ、プリブランチは発生しない。また、比較結果
が一致する場合でも、選択されたエントリの有効ピント
ビットフィールドの値が“0”であれば、プリブランチ
は発生しない。プリブランチが発生しない場合、カウン
タQINPC115の値は°1”だけインクリメントさ
れる。即ち、以降の命令のフェッチはシーケンシャルに
行われる。
外部メモリから取込まれた命令データは命令キュー11
2へ入力され、入力ポインタレジスタP1164は“2
”だけインクリメントされる。命令キュー112に入力
された命令データは出力ポインタレジスタPO165に
従って命令バス170を経由し、命令デコーダ111へ
送られる。
命令デコーダ111が命令をデコードした結果、POイ
ンクリメント信号172が出力され、これに従ってPO
±0(166)、 PO+1(167)、 PO+2(
168)のいずれかの出力ポインタインクリメンタが選
択され、出力ポインタレジスタPO165にセットされ
る。
命令デコーダ111は命令をデコードする際にその命令
の命令長も計数し、計数結果の情報をPOインクリメン
ト信号172として出力すると共に、後段のバイブライ
ンステージへも伝送する。
次のAステージ13では分岐先のアドレスが計算される
。また、命令の先頭アドレスはラッチDPC135、ラ
ッチAPC136,ラッチPPC137を経由してEス
テージ15が使用するランチCPCI3Bへ伝えられる
命令デコーダ111でデコードされたプリブランチ命令
がEステージ15で分岐しない場合には、命令処理シー
ケンスは変更されない。
(3,3,2)  rブリブランチが発生せず、Eステ
ージで分岐が発生する場合」 プリブランチしないプリブランチ命令がパイプライン処
理され、Eステージ15に到達するまでの処理は(3,
3,1)の場合と同様である。
プリブランチしなかったプリブランチ命令がEステージ
15で分岐すると、そのプリブランチ命令はBTB16
0に登録される。
プリブランチ命令のアドレスがラッチCPCl38から
BTB160へ入力され、分岐先アドレスがEBレジス
タ143からCAババス04を経由し、更にインクリメ
ンタ192によりml′ インクリメントされた後に[
1TB160へ入力される。
ラッチCPCl38の最下位2ビツトを除く下位6ビノ
トがデコーダ190によりデコードされ、BTB160
の一つのエントリが選択される。選択されたエントリの
分岐命令アドレスフィールドには、ランチCPCl38
の上位24ビツトと最下位から2番目の1ビツトとが登
録される。
選択されたエントリの分岐先アドレスフィールドには、
EBレジスタ143の出力の上位31ビツトが登録され
る。また、プリブランチ命令のアドレスとその命令長と
からその命令をフェッチするに必要なメモリアクセスの
回数が計算され、その値がシーケンス制御の値として選
択されたエントリのシーケンス制御フィールドに登録さ
れる。また、選択されたエントリの有効ビットフィール
ドは“ビにセットされる。
Eステージ15におけるBTB160の登録動作と、I
Pステージ11におけるBTB160の参照動作とが同
時に起こった場合には登録動作が優先される。
(3,3,3)  rプリブランチが発生し、Eステー
ジで分岐が発生しない場合」 カウンタΩINPC115の値で外部メモリに対して命
令フェッチが行われると同時に、カウンタ旧NPC11
5の下位6ビノトがデコーダ190でデコートされてB
TB160のlエントリが選択される。
選択されたエントリの分岐命令アドレスフィールドの上
位24ビツトとカウンタQINPC115の上位24ビ
ツトとが比較器191で比較され、比較結果が−致し且
つ選択されたエントリの有効ビットフィールドの値が“
1”であればプリブランチが発生する。
この際、プリブランチ発生信号177が分岐先アドレス
レジスタ161 とシーケンス制御機構162とへ出力
される。
プリブランチ発生信号177により分岐先アトレスレジ
スフ161はBTB160の分岐先アドレスフィールド
からの出力の上位30ビツトをラッチし、ラッチ174
はBTB160の分岐先アドレスフィールドの下位1ビ
ツトをラッチする。シーケンス制御機構162はBTB
160のシーケンス制御フィールドからの出力(2ビツ
ト)をランチする。
シーケンス制御フィールドには分岐命令全体が取込まれ
るのに必要な命令フェッチの回数がセットされている。
シーケンス制御機構162にセントされた値は外部メモ
リアクセスが完了する都度“1”づつカウントダウンさ
れる。そして、シーケンス制御機構162中の値が“0
”になると命令シーケンス切換え信号178が出力され
る。
この命令シーケンス切換え信号178の出力により、分
岐先アドレスレジスタ161の値がカウンタQINPC
115にセントされる。また、インクリメント後の入力
ポインタレジスタP1164の上位2ビツトがプリブラ
ンチ出力ポインタレジスタPBRAPO163の上位2
ビツトに、ラッチ174の値がプリブランチ出力ポイン
タレジスタPBRAPO163の下位lビットにそれぞ
れセントされる。
分岐命令の最後がワード境界で終わっていない場合及び
分岐先の命令の先頭がワード境界から始まっていない場
合には、命令キュー112中で分岐命令と分岐先命令と
の間に無効なコードが挿入される。ブリブランチ出力ポ
インタレジスタPBRAPO163はこの無効なコード
を補正するために使用される。
第3図にプリブランチが発生した場合の命令キュー11
2内での分岐命令と分岐先命令との関係を示す。
第3図(alに示されているのは、分岐命令(ハンチン
グを付して示す)の最後がワード境界で終わっており、
分岐先命令(クロスハンチングを付して示す)の先頭が
ワード境界から始まっていない場合、 第3図山)に示されているのは、分岐命令の最後がワー
ド境界で終わっておらず、分岐先命令の先頭がワード境
界から始まっている場合、第3図tc+に示されている
のは、分岐命令の最後がワード境界で終わっておらず、
分岐先命令の先頭がワード境界から始まっていない場合
である。
第3図fat、 fbl及び(C1のいずれの場合も、
分岐命令と分岐先命令との間に無効なコードが介在して
おり、これを調整するためにブリブランチ出力ポインタ
レジスタPBRAPO163が使用される。
プリブランチを発生した分岐命令が命令キュー112へ
取込まれる際に、BTB160の分岐先アドレスフィー
ルドの最下位ビットを参照することにより、その先頭の
ハーフワードに対応するエントリのプリブランチ発生フ
ィールドが“1“にセントされる。
プリブランチを発生した分岐命令が命令デコーダ111
へ送られる際には、命令データと同時にプリブランチ命
令信号171が送られ、プリブランチを発生した命令で
あることが伝達される。
命令デコーダ111がプリブランチを発生した命令のデ
コードを完了すると、POインクリメント信号172の
代わりにプリブランチ命令デコード完了信号173が出
力される。
セレクタ176はブリブランチ命令デコード完了信号1
73を受取ると、ブリブランチ出力ポインタレジスタP
BRAPO163の出力を選択して出力ポインタレジス
タPO165にセットする。これによって、分岐命令と
分岐先命令との間に介在する無効なコードは無視される
命令デコーダ111はデコードした命令がプリブランチ
した命令であることを示す情報を後段のパイプラインス
テージへ伝達する。また、PC計算部53において分岐
先のアドレスが計算され、次の命令のpc値とされる。
更に、分岐条件生成回路114によりプリブランチした
命令の分岐条件を反転する。
また、プリブランチの予測が外れた場合には命令シーケ
ンスを分岐命令の次の命令に戻す必要がある。このため
、Aステージ13においてプリブランチ命令のアドレス
とプリブランチ命令の命令長とを加算して次の命令のア
ドレスを計算する。
これは、ラッチAPC136の値をAバス103及びベ
ースアドレス選択回路123を通してアドレス加算器1
24へ送り、プリブランチ命令の命令長を補正値バス1
02及びディスプレースメント選択回路122を通して
アドレス加算器124へ送り、インデンクス値生成回路
121から“O“を出力することで、アドレス加算器1
24により計算されてアドレス加算器出力ラッチ125
にセットされる。
このアドレスはAOババス06及びラッチFA127を
通してランチ5A141へ伝送され、Eステージ15で
使用される。
プリブランチしたプリブランチ命令がEステージ15で
分岐しない場合には、Eステージ15では命令シーケン
スは変更されない。
(3,3,4)  rプリブランチが発生し、Eステー
ジで分岐が発生する場合」 プリブランチを発生したプリブランチ命令が命令デコー
ダ111でデコードされ、Eステージ15に到達するま
での処理は(3,3,3)と同様である。
プリブランチを発生したプリブランチ命令がEステージ
15で分岐するということは、プリブランチが誤ってい
たことを意味する。そこで、プリブランチ命令の次の命
令にシーケンスを戻す必要がある。プリブランチ命令の
次の命令のアドレスはラッチS^141にセットされて
いるので、ラッチ5A141の値t−sバス109を通
じてEBレジスタ143にセットし、Eステージ15に
おいて分岐を発生する。
またEステージ15において分岐が発生した後、次に同
一のプリブランチ命令が実行される際にプリブランチを
発生しないようにするために、BT8160中の対応す
るエントリのをビットフィールドを“0”にする。
以上に説明したプリブランチ処理においては、BTB1
60はダイレクトマツピング方式を採っているが、それ
以外の方式でも勿論よい。
また本実施例では、分岐先がスタティックに決定される
分岐命令のみをプリブランチ命令としているが、分岐先
がダイナミックな分岐命令に関してもプリブランチした
分岐先が適当であるか否かをチエツクする機構を備えれ
ば、プリブランチ命令として処理することが出来る。
〔発明の効果〕
以上に詳述した如く本発明によれば、分岐発生時に命令
キューの内部で分岐命令と分岐先命令との間に無効なコ
ードが介在しているような場合においても、ブリブラン
チ時専用の出力ポインタにより命令キューからの出力を
補正して分岐先命令がその先頭から出力されるので、分
岐処理が正しく行われ、従ってパイプライン処理機構が
より効率的に動作し、高いデータ処理能力を発揮する。
【図面の簡単な説明】
第1図は本発明のデータ処理装置の全体の構成例を示す
ブロック図、第2図はそのブリブランチ処理に関係する
部分のより詳細な構成を示すブロック図、第3図は本発
明のデータ処理装置の命令キュー内の分岐命令と分岐先
命令との関係を示す模式図、第4図は本発明のデータ処
理装置の全体の概略構成を示すブロック図、第5図は本
発明のデータ処理装置のパイプライン処理itsの概略
構成を示す模式図、第6図は従来のデータ処理装置のパ
イプライン処理機構の概略構成を示す模式図、第7図は
従来のデータ処理装置における分岐命令の処理手順を示
す模式図、第8図は従来のデータ処理装置のブランチタ
ーゲノトハノファの構成を示す模式図である。 III・・・デコーダ 112・・・命令キュー 160・・・BTB (ブランチターゲノトハソファ)
161・・・分岐先アドレスレジスタ 163・・・プリブランチ出力ポインタレジスタPBR
APO164・・・入力ポインタレジスタP1165・
・・出力ポインタレジスタP0166、167、168
・・・出力ポインタインクリメンタ173・・・プリブ
ランチ命令デコード完了信号176・・・セレクタ 190・・・デコーダ(エントリ検索手段)192・・
・へNOゲート (有効性判断手段)なお、図中、同一
符号は同一、又は相当部分を示す。

Claims (1)

    【特許請求の範囲】
  1. (1)フェッチすべき命令のアドレスが記憶される命令
    アドレスレジスタと、 複数のエントリにて構成され、各エントリが分岐命令の
    アドレスを格納する命令アドレスフィールドと、エント
    リの有効性を示す情報を格納する有効エントリフィール
    ドと、分岐先の命令のアドレスを格納する分岐先アドレ
    スフィールドとを含むテーブルと、 前記命令アドレスレジスタの記憶値で前記テーブルの命
    令アドレスフィールドを検索して双方の記憶値が一致す
    るエントリを検出するエントリ検索手段と、 該エントリ検索手段により検出されたエントリの有効性
    をそのエントリの有効エントリフィールドの情報により
    判断する有効性判断手段と、 1命令を複数に分割して格納する命令フィールドと、前
    記有効性判断手段が有効と判断したエントリの命令の先
    頭が対応するエントリに格納されていることを示す情報
    を格納する分岐命令表示フィールドとで構成されるエン
    トリを複数有する命令キューと、 該命令キューのいずれのエントリへ次の命令の先頭を入
    力するかを指示する入力ポインタレジスタと、 前記命令キューのいずれのエントリから命令を出力する
    かを指示する出力ポインタレジスタと、 前記出力ポインタレジスタの値をインクリメントする出
    力ポインタインクリメンタと、前記有効性判断手段が有
    効と判断した場合に、前記入力ポインタレジスタの値と
    前記分岐先アドレスフィールドの内容とに基づいて前記
    出力ポインタが次に採るべき値を求めて保持する分岐用
    出力ポインタレジスタと、 前記命令キューの命令フィールドと分岐命令表示フィー
    ルドとの内容を取込み、デコードして分岐を発生した命
    令であると判断した場合に所定の信号を出力するデコー
    ダと、 該デコーダから前記所定の信号が出力された場合に前記
    分岐用出力ポインタレジスタの値を、前記所定の信号が
    出力されなかった場合に前記出力ポインタインクリメン
    タの値をそれぞれ選択して前記出力ポインタへ入力する
    セレクタと を備えたことを特徴とするデータ処理装置。
JP937790A 1990-01-17 1990-01-17 データ処理装置 Pending JPH03212734A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP937790A JPH03212734A (ja) 1990-01-17 1990-01-17 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP937790A JPH03212734A (ja) 1990-01-17 1990-01-17 データ処理装置

Publications (1)

Publication Number Publication Date
JPH03212734A true JPH03212734A (ja) 1991-09-18

Family

ID=11718767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP937790A Pending JPH03212734A (ja) 1990-01-17 1990-01-17 データ処理装置

Country Status (1)

Country Link
JP (1) JPH03212734A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006613A1 (en) * 2004-07-08 2006-01-19 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006613A1 (en) * 2004-07-08 2006-01-19 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table
US7500088B2 (en) 2004-07-08 2009-03-03 Sony Computer Entertainment Inc. Methods and apparatus for updating of a branch history table

Similar Documents

Publication Publication Date Title
EP0463975A2 (en) Byte-compare operation for high-performance processor
EP0463978A2 (en) Granularity hint for translation buffer in high performance processor
EP0465322A2 (en) In-register data manipulation in reduced instruction set processor
EP0463973A2 (en) Branch prediction in high performance processor
EP0465321A2 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US5148529A (en) Pipelined multi-stage data processor including an operand bypass mechanism
US5522053A (en) Branch target and next instruction address calculation in a pipeline processor
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
JPH05224928A (ja) データ処理装置
US6131158A (en) Data processing system capable of executing groups of instructions, including at least one arithmetic instruction, in parallel
JPH04260950A (ja) キャッシュメモリ装置
JP2006520964A5 (ja)
JPH03158928A (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JPH0215331A (ja) データ処理装置
US5461715A (en) Data processor capable of execution of plural instructions in parallel
JPH10232821A (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP2710994B2 (ja) データ処理装置
JPH03212734A (ja) データ処理装置
US5745723A (en) Data processing system capable of execution of plural instructions in parallel
JPH0377138A (ja) データ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JPH02105937A (ja) データ処理装置
JPH03212736A (ja) データ処理装置