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

データ処理装置

Info

Publication number
JP3345787B2
JP3345787B2 JP08617493A JP8617493A JP3345787B2 JP 3345787 B2 JP3345787 B2 JP 3345787B2 JP 08617493 A JP08617493 A JP 08617493A JP 8617493 A JP8617493 A JP 8617493A JP 3345787 B2 JP3345787 B2 JP 3345787B2
Authority
JP
Japan
Prior art keywords
instruction
branch
address
unit
jump
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP08617493A
Other languages
English (en)
Other versions
JPH06301535A (ja
Inventor
雅仁 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP08617493A priority Critical patent/JP3345787B2/ja
Priority to US08/223,909 priority patent/US5453927A/en
Publication of JPH06301535A publication Critical patent/JPH06301535A/ja
Application granted granted Critical
Publication of JP3345787B2 publication Critical patent/JP3345787B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理装置に関し、
具体的にはジャンプ命令の処理を高速に行うパイプライ
ン処理機構を有するデータ処理装置に関し、より詳しく
は、パイプラインの初期のステージでジャンプ処理を行
うことにより、ジャンプ命令が実行された場合のパイプ
ライン処理のオーバーヘッドを削減し得るデータ処理装
置に関する。
【0002】
【従来の技術】従来のデータ処理装置では、データ処理
の流れに従って処理を複数のステップに分割し、異なる
命令の各ステップをパイプラインのそれぞれ対応するス
テージにおいて同時に処理することにより、1命令に必
要な平均処理時間を短縮させ、全体としての処理性能を
向上させている。
【0003】ところが、ジャンプ命令のように命令処理
のシーケンスを乱す命令が実行された場合には、命令の
実行段階で命令の処理シーケンスが切り替わるためにパ
イプライン処理のオーバーヘッドが大きくなり、効率の
よいパイプライン処理が行えない。しかも、現実にプロ
グラムを実行した際にジャンプ命令が出現する頻度は非
常に高く、従ってジャンプ命令の処理の高速化はデータ
処理装置の性能を向上する上で最も重要な項目の一つで
ある。
【0004】データ処理装置の性能向上のため、無条件
分岐命令,条件分岐命令等の命令実行の際のオーバーヘ
ッド削減について種々の工夫がなされている。たとえ
ば、図61のブロック図は従来のデータ処理装置の一例と
しての特願平4-22695号の発明の命令デコード段階でジ
ャンプ処理を行うための構成を示している。
【0005】図61において、参照符号401 は分岐先アド
レス計算部を、402 はPC計算部を、403 は命令デコード
部を、404 は命令フェッチ部をそれぞれ示している。こ
れらの各ブロックは、命令コードを転送するためのIIバ
ス433,命令デコード結果に従って切り出された分岐変位
あるいは即値を転送するためのDISPバス434,命令デコー
ド処理を行った命令長を転送するためのILENバス435,デ
コード中の命令のPC値を転送するためのPIバス431,ジャ
ンプ先アドレスを転送するためのJAバス436 等により相
互に結合されていて、それぞれの間でデータを授受す
る。
【0006】図61に示されている構成を採ることによ
り、ジャンプ先アドレスがPC相対あるいは絶対アドレス
で指定される場合には命令デコード処理と並行してジャ
ンプ先アドレスを生成して命令デコード直後にジャンプ
先命令をフェッチ出来るようになっている。
【0007】命令フェッチ部404 は、命令アドレスのア
ドレス変換機構, 内蔵命令キャッシュ, 命令用TLB(Tras
lation Lookaside Buffer:変換索引バッファ) 及びその
制御部を含む命令用MMU(Memory Management Unit)/キャ
ッシュ部と命令キュー部とを備えており、命令フェッチ
アドレスのアドレス変換を行って内蔵命令キャッシュあ
るいは外部メモリから命令コードを取り込み、命令デコ
ード部403 及び分岐先アドレス計算部401 へIIバス433
を介して命令コードを送る。
【0008】命令デコード部403 はIIバス433 から取り
込まれた命令コードを16ビット (ハーフワード) 単位で
デコードする。命令デコード部403 は命令フェッチ部40
4 から出力された命令コードを1クロックについて0乃
至8バイトデコードする。PC計算に関する情報はPC計算
部402 に、分岐命令をデコードした際の分岐制御を行う
ための信号は分岐先アドレス計算部401 あるいは命令フ
ェッチ部404 に、命令キューの出力ポインタ更新情報は
命令フェッチ部404 にそれぞれ出力される。
【0009】PC計算部402 は命令デコード部403 から出
力されるPC計算に関する情報によりハードワイヤードに
制御されて命令のPC値を計算する。処理対象の命令は可
変長命令であり、命令をデコードした後でなければその
命令長は判明しない。PC計算部402 は、命令デコード部
403 から出力される命令長をデコード中の命令のPC値に
加算することにより次の命令のPC値を計算する。PC計算
部402 において、DPC 79はデコード中の命令の先頭アド
レスを保持する。また、TPC 77は1命令の命令コード
複数の処理単位に分割されて処理される場合をも含めて
デコード処理対象のコードの先頭アドレスを保持する。
即ち、IIバス433 から命令デコード部403 に取り込まれ
るコードの先頭アドレスが保持される。
【0010】PC加算器73は、命令デコード部403 からIL
ENバス435 を介して取り込まれた命令長とTPC 77の値と
を加算し、その加算結果をTPC 77及びATPC78に書き戻
す。1命令のデコード終了時には加算結果は次の命令の
先頭アドレスを示しているので、DPC 79にも書き戻され
る。なお、ATPC78はアドレス計算時に次の命令のPC値と
して参照される。
【0011】ジャンプが生じた場合には、ジャンプ先ア
ドレスがJAバス436 から取込まれ、TPC 77及びDPC 79が
初期化される。但し、ATPC78はジャンプが発生しても初
期化されない。このような制御により、DPC 79にはデコ
ード処理中の命令のPC値が常に保持されるようになって
いる。
【0012】分岐先アドレス計算部401 は、命令デコー
ド段階で分岐先アドレスの計算及び絶対アドレスフィー
ルドの切り出しを行う。命令フェッチ部404 から命令デ
コード部403 に送られるIIバス433 上の命令コードから
分岐変位位置のデータを切り出し、デコードしようとし
ている命令のPC値であるDPC 79の値と加算することによ
り分岐先アドレスが計算される。使用頻度が高い分岐命
令は命令デコードと同時にジャンプ先アドレスが計算で
きるように、4つの加算器、即ち第1乃至第4加算器A
1, A2, A3, A4が備えられている。なお、参照符号409
乃至416 は各加算器A1, A2, A3, A4の入力ラッチであ
り、417 乃至420 は各加算器A1, A2, A3, A4の出力ラッ
チである。
【0013】分岐先アドレス計算部401 は、命令コード
のデコード処理に同期して動作する。各命令デコードサ
イクルに同期してDPC 79の値がPIバス431 を介して入力
ラッチ413, 414, 415, 416に取り込まれる。また、IIバ
ス433 上のデータが4つの分岐変位フィールドの位置に
対応して4つの入力ラッチ409, 410, 411, 412に符号拡
張されてそれぞれ取り込まれる。第1乃至第4加算器A
1, A2, A3, A4はそれぞれの入力ラッチ409, 410, 411,
412の内容を加算して出力ラッチ417, 418, 419, 420へ
それぞれ出力する。
【0014】入力ラッチ411, 412に取り込まれる分岐変
位フィールドは、ジャンプ命令のジャンプ先アドレスが
絶対アドレスで指定される場合の絶対アドレスフィール
ドにも対応している。ラッチ421 には入力ラッチ411 に
取り込まれた符号拡張されたデータが保持される。ま
た、ラッチ422 には入力ラッチ412 に取り込まれたデー
タがそのまま保持される。
【0015】第1乃至第4加算器A1, A2, A3, A4で命令
のデコードと並列して分岐先アドレスが計算可能な分岐
命令あるいはジャンプ先アドレスが絶対アドレスで指定
されるジャンプ命令をデコードした場合は、そのサイク
ルでジャンプ処理あるいは分岐先命令のプリフェッチが
行われる。
【0016】分岐命令デコードサイクル中に第1乃至第
4加算器A1, A2, A3, A4で分岐先アドレスが計算できな
い場合には、次のサイクルで分岐先アドレスの計算が行
われ、分岐処理あるいは分岐先命令のプリフェッチが行
われる。この場合、分岐命令デコード後に入力ラッチ41
2 は命令デコード部403 からDISPバス434 を介して命令
デコード結果により切り出された分岐変位を取り込む。
入力ラッチ416 はPIバス431 を介してDPC 79の値を取り
込む。第4加算器A4は入力ラッチ412 及び416の内容を
加算して出力ラッチ420 へ出力する。
【0017】命令デコード段階でジャンプ処理が行われ
る場合は、命令デコード部403 から入力された制御信号
により出力ラッチ417 〜422 の内の一つを選択してその
内容をJAバス436 へ出力し、ジャンプ先アドレスを命令
フェッチ部404 へ転送する。命令フェッチ部404 は、JA
バス436 から取り込んだアドレスに従ってジャンプ先の
命令のフェッチを開始する。また、JAバス436 上の値が
TPC 77及びDPC 79にも取り込まれてPC計算部402 が初期
化される。
【0018】このように従来のデータ処理装置では、命
令デコードと並列してPC相対で分岐先アドレスが指定さ
れる分岐命令の分岐先アドレス計算あるいは絶対アドレ
スでジャンプ先アドレスを指定するジャンプ命令の絶対
アドレスフィールドの切り出しを行うことにより、命令
デコード直後に分岐先命令をフェッチすることが可能に
なる。従って、上述のようなジャンプ処理機構を備える
ことにより、分岐命令のデコード後に分岐先命令をデコ
ードするまでの無駄時間を分岐先命令のフェッチに要す
る時間のみに縮減することが可能になるので、高性能な
データ処理装置を得ることができる。
【0019】
【発明が解決しようとする課題】ところで上述のような
従来のデータ処理装置では、命令のデコードと並列して
分岐先アドレスが計算される分岐命令の分岐変位フィー
ルドの数と同数の加算器が必要であり、高速化の対象と
なる命令の数が増加するとそれに比例してハードウェア
量も増大するという問題点があった。また、絶対アドレ
スでジャンプ先アドレスが指定される命令に関しても、
切り出されるフィールドの数だけラッチが必要になるた
めハードウェア量が増大するという問題があった。
【0020】本発明はこのような事情に鑑みてなされた
ものであり、より少量のハードウェアで効率的にジャン
プ命令をパイプライン処理することが可能な高性能なデ
ータ処理装置の提供を主たる目的とする。また本発明
は、従来に比してより少量のハードウェア追加で命令デ
コード処理と並列にジャンプ先アドレスを生成する処理
を行い得るデータ処理装置の提供を目的とする。
【0021】
【課題を解決するための手段】本発明の第1の発明に係
るデータ処理装置は、オペレーションコードフィールド
と第1の分岐変位フィールドとを含み、自身の先頭アド
レスに第1の分岐変位フィールドの値を加算したアドレ
スに分岐する第1の分岐命令と、オペレーションコード
フィールドと第2の分岐変位フィールドとを含み、自身
先頭アドレスに第2の分岐変位フィールドの値を加算
したアドレスに分岐する第2の分岐命令とを含む第1の
分岐命令群の分岐命令と、オペレーションコードフィー
ルドと第3の分岐変位フィールドとを含み、自身の先頭
アドレスに第3の分岐変位フィールドの値を加算したア
ドレスに分岐する第3の分岐命令を含む第2の分岐命令
群の分岐命令とを処理するデータ処理装置であって、第
及び第2の分岐命令群の分岐命令を含む命令を格納す
るメモリと、メモリから命令を取り込む命令フェッチ部
と、命令フェッチ部が取り込んだ命令をデコードする命
令デコード部と、命令デコード部による命令のデコード
結果に基づいて命令を実行する命令実行部と、命令デコ
ード部においてデコード中の命令の先頭アドレスを保持
するプログラムカウンタ部と、新たな命令のデコード処
理の都度その命令が第1の分岐命令群に含まれる分岐命
令であるものとして、命令フェッチ部から転送されるオ
ペレーションコードフィールドの一部のフィールドの値
に従って命令フェッチ部から第1の分岐変位フィールド
の値または第2の分岐変位フィールドの値とを含む複数
の分岐フィールドのいずれか一つを選択的に入力し、プ
ログラムカウンタ部から命令の先頭アドレスを入力し、
両者の加算処理を命令デコード部による命令のデコード
処理と並行して実行することにより第1のアドレスを計
算する第1の加算手段と、新たな命令のデコード処理の
都度その命令が第2の分岐命令群に含まれる分岐命令で
あるものとして、命令フェッチ部から第3の分岐変位フ
ィールドを含む分岐フィールドの値を入力し、プログラ
ムカウンタ部から命令の先頭アドレスを入力し、両者の
加算処理を前記命令デコード部による命令のデコード処
理と並行して実行することにより第2のアドレスを計算
する第2の加算手段と、第1の加算手段及び第2の加算
手段により計算されたアドレスを命令フェッチ部に選択
的に転送する転送手段とを有するジャンプ先アドレス生
成部とを備えている。
【0022】
【0023】本発明の第2の発明に係るデータ処理装置
は、第1の絶対アドレスフィールドでジャンプ先を指定
する第1のジャンプ命令と、第2の絶対アドレスフィー
ルドでジャンプ先を指定する第2のジャンプ命令とを
むジャンプ命令群のジャンプ命令を処理するデータ処理
装置であって、第1及び第2のジャンプ命令を含む命令
を格納するメモリと、メモリから命令を取り込む命令フ
ェッチ部と、命令フェッチ部が取り込んだ命令をデコー
ドする命令デコード部と、命令デコード部による命令の
デコード結果に基づいて命令を実行する命令実行部と、
新たな命令のデコード処理の都度その命令がジャンプ命
令群に含まれるジャンプ命令であるものとして、命令フ
ェッチ部から転送されるオペレーションコードフィール
ドの一部のフィールドの値に従って命令フェッチ部から
第1の絶対アドレスフィールドの値または第2の絶対ア
ドレスフィールドの値を含む複数の絶対アドレスフィー
ルドの一つを選択的に切り出す処理を命令デコード部に
よる命令のデコード処理と並行して実行することにより
アドレスを生成するフィールド切り出し手段と、フィー
ルド切り出し手段により切り出されたアドレスを命令フ
ェッチ部に転送する転送手段とを有するジャンプ先アド
レス生成部とを備えている。
【0024】
【作用】本発明の第1の発明に係るデータ処理装置で
は、命令デコード部においてデコード中の命令が第1の
分岐命令または第2の分岐命令を含む第1の分岐命令群
の分岐命令であることが判明した場合に、ジャンプ先ア
ドレス生成部は第1のアドレスを転送手段を介して命令
フェッチ部に転送し、命令フェッチ部はジャンプ先アド
レス生成部から転送された第1のアドレスの命令をフェ
ッチするので、また命令デコード部においてデコード中
の命令が第3の分岐命令を含む第2の分岐命令群の分岐
命令であることが判明した場合に、ジャンプ先アドレス
生成部は第2のアドレスを転送手段を介して命令フェッ
チ部に転送し、命令フェッチ部はジャンプ先アドレス生
成部から転送された第2のアドレスの命令をフェッチす
るので、分岐命令処理時には分岐命令がデコードされた
直後に分岐先命令がメモリからフェッチされる。
【0025】
【0026】本発明の第2の発明に係るデータ処理装置
では、命令デコード部においてデコード中の命令が第1
のジャンプ命令または第2のジャンプ命令を含むジャン
プ命令群のジャンプ命令であることが判明した場合に、
ジャンプ先アドレス生成部はアドレスを転送手段を介し
て命令フェッチ部に転送し、命令フェッチ部はジャンプ
先アドレス生成部から転送されたアドレスの命令をフェ
ッチするので、ジャンプ命令処理時にはジャンプ命令が
デコードされた直後にジャンプ先命令がメモリからフェ
ッチされる。
【0027】
【実施例】以下、本発明をその実施例を示す図面に基づ
いて詳述する。
【0028】(1) 「本発明のデータ処理装置を用いたシ
ステムの構成」 図4は本発明のデータ処理装置100 を用いたシステム構
成の一実施例を示すブロック図である。
【0029】本実施例では、本発明のデータ処理装置10
0, 命令キャッシュ106, データキャッシュ107, 108及
び主メモリ109 がアドレスバス101, データバス102,
命令バス103, メモリアドレスバス104 及びメモリデー
タバス105 で相互に結合されている。
【0030】アドレスバス101 は本発明のデータ処理装
置100 から出力されるアドレスを命令キャッシュ106 と
データキャッシュ107, 108とに入力する。命令バス103
は命令キャッシュ106 から出力される命令コードを本発
明のデータ処理装置100 へ転送する。データバス102 は
本発明のデータ処理装置100 から出力されるデータをデ
ータキャッシュ107, 108へ転送し、またデータキャッシ
ュ107, 108から出力されるデータを本発明のデータ処理
装置100 へ転送する。メモリアドレスバス104は命令キ
ャッシュ106 またはデータキャッシュ107, 108から出力
されるアドレスを主メモリ109 へ転送する。メモリデー
タバス105 は主メモリ109 と命令キャッシュ106 または
データキャッシュ107, 108間で命令またはデータを転送
する。
【0031】命令キャッシュ106, データキャッシュ10
7, 108がミスした場合はそれぞれのキャッシュ106, 107
または108 がメモリアドレスバス104 とメモリデータバ
ス105 とのバス権を調停して主メモリ109 をアクセスす
る。
【0032】データキャッシュ107, 108は本発明のデー
タ処理装置100 側では64ビットのバスに結合しているた
め、両データキャッシュ107, 108が協調して動作する。
各64ビットデータ単位のデータの内の上位32ビットのデ
ータをデータキャッシュ107が、下位32ビットのデータ
をデータキャッシュ108 がそれぞれ分担して受け持つ。
【0033】以下、本発明のデータ処理装置100 の命令
体系及び処理機構について最初に説明し、次にジャンプ
命令の処理方法について詳しく説明する。
【0034】 (2) 「本発明のデータ処理装置の命令ビット割り付け」 (2.1) 「命令フォーマット」 本発明のデータ処理装置の命令は16ビット単位で可変長
となっており、奇数バイト長の命令はない。
【0035】本発明のデータ処理装置100 では高頻度に
使用される命令を短いフォーマットとするため、特に工
夫された命令フォーマット体系を有する。たとえば、2
オペランド命令に対しては基本的に「4バイト+拡張
部」の構成を有し、全てのアドレッシングモードが利用
可能な一般形フォーマットと、頻度の高い命令とアドレ
ッシングモードとのみを使用可能な短縮形フォーマット
の2つのフォーマットを有する。
【0036】図8乃至図16は本発明のデータ処理装置の
命令フォーマットを示す模式図である。これらの模式図
中に現われる記号の意味は以下の通りである。
【0037】−:オペレーションコードが入る部分 #:リテラルまたは即値の入る部分 Ea:8ビットの一般形のアドレッシングモードでオペラ
ンドを指定する部分 Sh:6ビットの短縮形のアドレッシングモードでオペラ
ンドを指定する部分 Rn: レジスタファイル上のオペランドをレジスタ番号
で指定する部分 * : 何が入ってもかまわない部分
【0038】フォーマットは、図8に示すように右側が
LSB側で、かつ高いアドレスになっている。アドレスN
とアドレスN+1との2バイトを見た後でないと命令フォ
ーマットが判別できないようになっているが、これは命
令が必ず16ビット(ハーフワード)単位でフェッチ、デ
コードされることを前提としたためである。
【0039】本発明のデータ処理装置100 の命令では、
いずれのフォーマットの場合も、各オペランドのEaまた
はShの拡張部は必ずそのEaまたはShの基本部を含む16ビ
ット(ハーフワード)の直後に置かれる。これは、命令
により暗黙に指定される即値データ及び命令の拡張部に
優先する。従って、4バイト以上の命令では、Eaの拡張
部によって命令のオペレーションコードが分断される場
合がある。
【0040】また、後述するように、多段間接モードに
おいてEaの拡張部に更に拡張部が付加される場合にも次
の命令オペレーションコードよりもそちらの方が優先さ
れる。例えば、第1ハーフワードにEa1を含み、第2ハ
ーフワードにEa2 を含み、第3ハーフワードまである6
バイト命令の場合について考える。なおこおでは、Ea1
に多段間接モードを使用したため、普通の拡張部の他に
多段間接モードの拡張部も付加されるものとする。この
場合、実際の命令ビットパターンは、命令の第1ハーフ
ワード(Ea1の基本部を含む), Ea1の多段間接モード
拡張部, 命令の第2ハーフワード(Ea2の基本部を含
む), Ea2の拡張部, 命令の第3ハーフワードの順とな
る。
【0041】(2.1.1) 「短縮形2オペランド命令」 図9乃至図12は2オペランド命令の短縮形フォーマット
を示す模式図である。
【0042】図9はメモリ−レジスタ間演算命令のフォ
ーマットを示す模式図である。このフォーマットにはソ
ースオペランド側がメモリとなるL-formatと、デスティ
ネーションオペランド側がメモリとなるS-formatがあ
る。
【0043】L-formatでは、Shはソースオペランドの指
定フィールドを、Rnはデスティネーションオペランドの
レジスタの指定フィールドを、RRはShのオペランドサイ
ズの指定をそれぞれ表す。レジスタ上に置かれたデステ
ィネーションオペランドのサイズは、32ビットに固定さ
れている。レジスタ側とメモリ側とのサイズが異なり、
且つソース側のサイズが小さい場合に符号拡張が行なわ
れる。また、一部の命令(加算命令, 減算命令)では、
ソースのオペランドサイズもワードに固定されている。
この場合、RRのフィールドはオペレーションコードとな
っている。
【0044】S-formatでは、Shはデスティネーションオ
ペランドの指定フィールドを、Rnはソースオペランドの
レジスタ指定フィールドを、RRはShのオペランドサイズ
の指定フィールドをそれぞれ表す。レジスタ上に置かれ
たソースオペランドのサイズは32ビットに固定されてい
る。レジスタ側とメモリ側とのサイズが異なり、且つソ
ース側のサイズが大きい場合は、オーバフローした部分
の切り捨てとオーバフローチェックが行なわれる。
【0045】図10はレジスタ−レジスタ間演算命令のフ
ォーマット(R-format)を示す模式図である。このフォー
マットでは、Rnはデスティネーションレジスタの指定フ
ィールドを、Rmはソースレジスタの指定フィールドをそ
れぞれ示している。オペランドサイズは32ビットのみで
ある。
【0046】図11はリテラル−メモリ間演算命令のフォ
ーマット(Q-format)を示す模式図である。このフォーマ
ットでは、MMはディスティネーションオペランドサイズ
の指定フィールドを、#はリテラルによるソースオペラ
ンドの指定フィールドを、Shはデスティネーションオペ
ランドの指定フィールドをそれぞれ示している。
【0047】図12は即値−メモリ間演算命令のフォーマ
ット(I-format)の模式図である。このフォーマットで
は、MMはオペランドサイズの指定フィールド(ソース,
ディスティネーションで共通)を、Shはデスティネーシ
ョンオペランドの指定フィールドをそれぞれ示してい
る。I-formatの即値のサイズはデスティネーション側の
オペランドのサイズと共通であって8, 16, 32ビットと
なり、ゼロ拡張、符号拡張は行なわれない。
【0048】(2.1.2) 「一般形1オペランド命令」 図13は1オペランド命令の一般形フォーマット(G1-form
at) を示す模式図である。このフォーマットでは、MMは
オペランドサイズの指定フィールドを表している。一部
のG1-format 命令では、Eaの拡張部以外にも拡張部を有
する。また、MMを使用しない命令もある。
【0049】(2.1.3) 「一般形2オペランド命令」 図14乃至図16は2オペランド命令の一般形フォーマット
を示す模式図である。このフォーマットに含まれるの
は、8ビットで指定される一般形アドレッシングモード
のオペランドが最大2つ存在する命令である。オペラン
ドの総数自体は3つ以上になる場合がある。
【0050】図14は第1オペランドがメモリ読み出しを
必要とする命令のフォーマット(G-format)を示す模式図
である。このフォーマットでは、 EaMはデスティネーシ
ョンオペランドの指定フィールドを、MMはデスティネー
ションオペランドサイズの指定フィールドを、 EaRはソ
ースオペランド指定フィールドを、RRはソースオペラン
ドサイズの指定フィールドをそれぞれ表している。な
お、一部のG-format命令では、EaM, EaRの拡張部以外に
も拡張部を有する。
【0051】図15は第1オペランドが8ビット即値の命
令のフォーマット(E-format)を示す模式図である。この
フォーマットでは、 EaMはデスティネーションオペラン
ドの指定フィールドを、MMはデスティネーションオペラ
ンドサイズの指定フィールドを、#はソースオペランド
値をそれぞれ表している。
【0052】図16は第1オペランドがアドレス計算のみ
の命令のフォーマット(GA-format)を示す模式図であ
る。このフォーマットでは、 EaWはデスティネーション
オペランドの指定フィールドを、WWはデスティネーショ
ンオペランドサイズの指定フィールドを、EaA はソース
オペランドの指定フィールドをそれぞれ表している。な
お、ソースオペランドとしては実効アドレスの計算結果
自体が使用される。
【0053】(2.1.4) 「その他の命令」 上述の命令の他に、変則的なオペランド指定を行う命
令、あるいはオペランド指定の無いオペレーションコー
ドのみの命令なども存在する。
【0054】(2.2) 「アドレッシングモード」 本発明のデータ処理装置100 の命令のアドレッシングモ
ード指定方法には、レジスタを含めて6ビットで指定す
る短縮形と、8ビットで指定する一般形とがある。
【0055】未定義のアドレッシングモードを指定した
場合、あるいは意味的に考えて明らかに不合理なアドレ
ッシングモードの組合わせが指定された場合には、未定
義命令を実行した場合と同様に予約命令例外を発生し、
例外処理が起動される。これに該当するのは、デスティ
ネーションが即値モードである場合、アドレス計算を伴
うべきアドレシングモード指定フィールドで即値モード
が使用されたた場合などである。
【0056】図17乃至図27に示すフォーマットの模式図
中で使われている記号の意味は以下の如くである。
【0057】Rn:レジスタ指定 (Sh):6 ビットの短縮形アドレッシングモードでの指定
方法 (Ea):8ビットの一般形アドレッシングモードでの指定
方法 なお、各フォーマットの模式図において点線にて表され
ている部分は拡張部を示す。
【0058】(2.2.1) 「基本アドレッシングモード」 本発明のデータ処理装置100 の命令は種々のアドレッシ
ングモードをサポートする。それらの内、本発明のデー
タ処理装置100 でサポートする基本アドレッシングモー
ドには、レジスタ直接モード, レジスタ間接モード, レ
ジスタ相対間接モード, 即値モード, 絶対モード, PC相
対間接モード, スタックポップモード,スタックプッシ
ュモードがある。
【0059】レジスタ直接モードは、レジスタの内容を
そのままオペランドとするアドレッシングモードであ
る。フォーマットの模式図を図17に示す。図中、Rnは汎
用レジスタまたは FPUレジスタの番号を示す。
【0060】レジスタ間接モードは、汎用レジスタの内
容をアドレスとするメモリの内容をオペランドとするア
ドレッシングモードである。フォーマットの模式図を図
18に示す。図中、Rnは汎用レジスタの番号を示す。
【0061】レジスタ相対間接モードは、ディスプレー
スメント値が16ビットであるか32ビットであるかにより
2種類に分かれる。いずれも、汎用レジスタの内容に16
ビットまたは32ビットのディスプレースメント値を加え
た値をアドレスとするメモリの内容をオペランドとする
アドレッシングモードである。フォーマットの模式図を
図19に示す。図中、Rnは汎用レジスタの番号を示す。di
sp:16とdisp:32とは、それぞれ16ビットのディスプレ
ースメント値, 32ビットのディスプレースメント値を示
す。ディスプレースメント値は符号付きとして扱われ
る。
【0062】即値モードは、命令コード中で指定される
ビットパターンをそのまま2進数と見なしてオペランド
とするアドレッシングモードである。フォーマットの模
式図を図20に示す。図中、 imm_dataは即値を示す。 i
mm_dataのサイズは、オペランドサイズとして命令中で
指定される。
【0063】絶対モードは、アドレス値が16ビットで示
されるか32ビットで示されるかにより2種類に分かれ
る。いずれも、命令コード中で指定される16ビットまた
は32ビットのビットパターンをアドレスとしたメモリの
内容をオペランドとするアドレッシングモードである。
フォーマットの模式図を図21に示す。図中、abs:16とab
s:32とは、それぞれ16ビット, 32ビットのアドレス値を
示す。abs:16にてアドレスが示される場合は指定された
アドレス値を32ビットに符号拡張される。
【0064】PC相対間接モードは、ディスプレースメン
ト値が16ビットであるか32ビットであるかにより2種類
に分かれる。いずれも、プログラムカウンタの内容に16
ビットまたは32ビットのディスプレースメント値を加え
た値をアドレスとするメモリの内容をオペランドとする
アドレッシングモードである。フォーマットの模式図を
図22に示す。図中、disp:16 とdisp:32 とは、それぞれ
16ビットのディスプレースメント値, 32ビットのディス
プレースメント値を示す。ディスプレースメント値は符
号付きとして扱われる。PC相対間接モードにおいて参照
されるプログラムカウンタの値は、そのオペランドを含
む命令の先頭アドレスである。多段間接アドレッシング
モードにおいてプログラムカウンタの値が参照される場
合にも、同様に命令の先頭のアドレスがPC相対モードの
基準値として使用される。
【0065】スタックポップモードはスタックポインタ
(SP)の内容をアドレスとするメモリの内容をオペランド
とするアドレッシングモードである。オペランドアクセ
ス後にSPがオペランドサイズだけインクリメントされ
る。例えば、32ビットデータが扱われる場合には、オペ
ランドアクセス後にSPが+4だけ更新される。8, 16, 64
ビットのサイズのオペランドに対するスタックポップモ
ードの指定も可能であり、それぞれSPが+1, +2, +
8だけ更新される。フォーマットの模式図を図23に示
す。オペランドに対しスタックポップモードが意味を持
たない場合には予約命令例外が発生する。具体的に予約
命令例外となるのは、 writeオペランド及びread-modif
y-writeオペランドに対するスタックポップモード指定
である。
【0066】スタックプッシュモードはSPの内容をオペ
ランドサイズだけデクリメントした内容をアドレスとす
るメモリの内容をオペランドとするアドレッシングモー
ドである。スタックプッシュモードではオペランドアク
セス前にSPがデクリメントされる。例えば、32ビットデ
ータが扱われる場合には、オペランドアクセス前にSPが
-4だけ更新される。8, 16, 64ビットのサイズのオペラ
ンドに対するスタックプッシュモードの指定も可能であ
り、それぞれSPが−1, −2, −8だけ更新される。フ
ォーマットの模式図を図24に示す。オペランドに対して
スタックプッシュモードが意味を持たない場合には予約
命令例外が発生する。具体的に予約命令例外となるの
は、readオペランド及び read-modify-writeオペランド
に対すスタックプッシュモード指定である。
【0067】(2.2.2) 「多段間接アドレッシングモー
ド」 複雑なアドレッシングも、基本的には加算と間接参照の
組み合わせに分解することが可能である。従って、加算
と間接参照のオペレーションをアドレッシングのプリミ
ティブとして与えておき、それらを任意に組み合わせる
ことができれば、どんな複雑なアドレッシングモードを
も実現することが出来る。
【0068】本発明のデータ処理装置100 の命令の多段
間接アドレッシングモードは上述のような考え方に基づ
いたアドレッシングモードである。複雑なアドレッシン
グモードは、モジュール間のデータ参照あるいは AI(人
工知能) 言語の処理系に特に有用である。
【0069】多段間接アドレッシングモードを指定する
場合、基本アドレッシングモード指定フィールドではレ
ジスタベース多段間接モード, PCベース多段間接モー
ド, 絶対ベース多段間接モードの3種類の指定方法の内
のいずれか1つを指定する。
【0070】レジスタベース多段間接モードは、汎用レ
ジスタの値を、拡張する多段間接アドレッシングのベー
ス値とするアドレッシングモードである。フォーマット
の模式図を図25に示す。図中、Rnは汎用レジスタの番号
を示す。
【0071】PCベース多段間接モードは、プログラムカ
ウンタの値を拡張する多段間接アドレッシングのベース
値とするアドレッシングモードである。フォーマットの
模式図を図26に示す。
【0072】絶対ベース多段間接モードは、ゼロを拡張
する多段間接アドレッシングのベース値とするアドレッ
シングモードである。フォーマットの模式図を図27に示
す。
【0073】拡張される多段間接モード指定フィールド
は16ビットを単位としており、これが任意回反復して付
加される。1段の多段間接アドレッシングモードによ
り、ディスプレースメントの加算, インデクスレジスタ
のスケーリング(×1, ×2,×4, ×8)と加算, メ
モリの間接参照を行なう。多段間接モードのフォーマッ
トの模式図を図28に示す。各フィールドは以下に示す意
味を有する。
【0074】E=0 :多段間接モード継続 E=1 :アドレス計算終了 tmp ==> address of operand I=0 :メモリ間接参照なし tmp + disp + Rx * Scale ==> tmp I=1 :メモリ間接参照あり mem[tmp + disp + Rx * Scale] ==> tmp
【0075】M=0 : <Rx> をインデクスとして使用 M=1 :特殊なインデクス <Rx>=0 インデクス値を加算しない (Rx=0) <Rx>=1 プログラムカウンタをインデクス値として使
用 (Rx=PC) <Rx>=2〜 reserved
【0076】D=0 :多段間接アドレッシングモード中の
4ビットのフィールドd4の値を4倍してディスプレース
メント値とし、これを加算する。d4は符号付きとして扱
われ、オペランドのサイズとは関係なく必ず4倍して使
用される。 D=1 :多段間接アドレッシングモードの拡張部で指定さ
れたdispx (16/32ビット)をディスプレースメント値と
し、これを加算する。拡張部のサイズはd4フィールドで
指定する。 d4 = 0001 dispxは16ビット d4 = 0010 dispxは32ビット XX :インデクスのスケール(scale = 1/2/4/8)
【0077】プログラムカウンタに対して×2, ×4,
×8のスケーリングを行なった場合には、その段の処理
終了後の中間値(tmp) として不定値が入る。この多段間
接アドレッシングモードによって得られる実効アドレス
は予測できない値となるが、例外は発生しない。プログ
ラムカウンタに対するスケーリングの指定は禁じられて
いる。
【0078】多段間接アドレッシングモードによる命令
フォーマットのバリエーションを図29及び図30の模式図
に示す。図29は多段間接アドレッシングモードが継続す
るか終了するかのバリエーションを、図30はディスプレ
ースメントのサイズのバリエーションをそれぞれ示す。
【0079】任意段数の多段間接アドレッシングモード
が利用できれば、コンパイラの中で段数による場合分け
が不要になるので、コンパイラの負担が軽減されるとい
うメリットがある。多段の間接参照の頻度が非常に少な
いとしても、コンパイラとしては必ず正しいコードを発
生できなければならないからである。このため、フォー
マット上では任意の段数が可能になっている。
【0080】(2.3) 「ジャンプ命令」 図31乃至図47の模式図に本発明のデータ処理装置100 の
ジャンプ命令の命令フォーマットを示す。ここでは、以
下に説明する先行ジャンプ関連処理の対象となる命令の
みをあげている。図31乃至図47に現われる”*”は何が
入っても構わない部分であることを示す。
【0081】図31は短縮形(Dフォーマット)の無条件
分岐命令(BRA命令)の命令フォーマットを示す模式図で
ある。 BRA命令は分岐先アドレスがPC相対で指定される
ジャンプ命令である。図中、pcdispは分岐変位であり、
8ビットの即値で指定される。分岐変位は符号付き数と
して扱われる。Dフォーマットの命令では、分岐変位は
2倍して用いられる。
【0082】図32は、一般形(Gフォーマット)の無条
件分岐命令(BRA命令)の命令フォーマットを示す模式図
である。図中、pcdispは分岐変位であり、8,16または
32ビットの即値で指定され、符号付き数として扱われ
る。分岐変位サイズはsxで指定される。sxのビット割り
付けを以下に示す。
【0083】sx = 00 : 8 ビット sx = 01 : 16 ビット sx = 10 : 32 ビット
【0084】本発明のデータ処理装置100 では奇数バイ
ト長の命令は禁止されているので、8ビットの変位が指
定された場合にもフィールドとしては16ビットで指定さ
れる。但しこの場合、16ビットのフィールドの下位8ビ
ットのみが有効となり、上位8ビットはどのような値で
あっても無視される。
【0085】図33は短縮形(Dフォーマット)の条件分
岐命令(Bcc命令)の命令フォーマットを、図34は一般形
(Gフォーマット)の条件分岐命令(Bcc命令)の命令フ
ォーマットをそれぞれ示す模式図である。命令フォーマ
ットとしては BRA命令と同一である。図中のccccフィー
ルドで分岐条件の指定が行われる。指定された条件が成
立した場合のみ分岐処理が行われ、条件が不成立の場合
には次の命令が実行される。
【0086】図35は短縮形(Dフォーマット)のサブル
ーチン分岐命令(BSR命令)の命令フォーマットを、図36
は一般形(Gフォーマット)のサブルーチン分岐命令(B
SR命令)の命令フォーマットをそれぞれ示す模式図であ
る。命令フォーマットとしては BRA命令と同一である。
分岐処理が行われると共に、戻り先アドレスがスタック
トップにプッシュされる。
【0087】図37はジャンプ命令(JMP命令)のフォーマ
ットを、図38はサブルーチンジャンプ命令(JSR命令)の
フォーマットをそれぞれ示す模式図である。共に上述し
た一般形1オペランド命令(G1フォーマット)の命令
である。図中のpcadr は分岐先アドレスを示し、前述の
一般形アドレッシングモードで指定される。アドレッシ
ングモードの指定に従って計算されたオペランドのアド
レスにジャンプする。アドレッシングモードとして多段
間接モードを指定することも可能である。 JSR命令で
は、戻り先アドレスがスタックトップにプッシュされ
る。
【0088】図39乃至図42は、加算, 比較及び条件分岐
を行う ACB命令の命令フォーマットを示す模式図であ
る。この命令は、xreg値にstep値を加算しxregに書き戻
し、加算結果がlimit より小さければPC値にpcdispで指
定される分岐変位を加算したアドレスに分岐する命令で
あり、ループ制御のプリミティブとして使用される。分
岐変位はszにより指定される。szのビット割り付けを以
下に示す。
【0089】sz = ”00” : 8 ビット sz = ”01” : 16 ビット sz = ”10” : 32 ビット
【0090】変位サイズが16ビットあるいは32ビットで
あった場合には、16ビットあるいは32ビットの拡張部が
付加される。変位サイズが8ビットであった場合には、
変位はpcdispのフィールドで指定され、拡張部は付加さ
れない。分岐変位は符号付き数として扱われる。
【0091】ACB命令には4つの命令フォーマットがあ
る。全てのフォーマットについてxregはレジスタで指定
される。図39は、stepが”1”に固定され、limit 値が
6ビットのリテラル(オペレーションコード中にエンコ
ードされた小さな即値)で指定される短縮形のフォーマ
ット(Qフォーマット)を示す模式図である。図40は、
stepが”1”に固定され、limit 値がレジスタで指定さ
れる短縮形のフォーマット(Rフォーマット)を示す模
式図である。
【0092】図41は前述のGフォーマットの命令フォー
マットを示す模式図である。step及びlimit は一般形の
アドレッシングモードで指定される。図42は前述のEフ
ォーマットの命令フォーマットを示す模式図である。st
ep値が8ビットのリテラル値で、limit 値が一般形のア
ドレッシングモードでそれぞれ指定される。
【0093】図43乃至図46は、減算, 比較及び条件分岐
を行う SCB命令の命令フォーマットを示す模式図であ
る。この SCB命令は、xreg値からstep値を減算しxregに
書き戻し、減算結果がlimit 以上であればPC値にpcdisp
で指定される分岐変位を加算したアドレスに分岐する命
令である。 ACB命令と同様にループ制御のプリミティブ
として使用される。
【0094】SCB命令には ACB命令と同様に4つのフォ
ーマットがある。図43はQフォーマットの命令フォーマ
ットを、図44はRフォーマットの命令フォーマットを、
図45はGフォーマットの命令フォーマットを、図46はE
フォーマットの命令フォーマットをそれぞれ示す模式図
である。
【0095】図47は浮動小数点数の演算結果による条件
分岐を行うFBcc命令の命令フォーマットを示す模式図で
ある。分岐条件はccccc で指定される。条件が成立した
場合、PC値にpcdispで示される分岐変位を加算したアド
レスに分岐する。分岐変位サイズはsyで指定される。分
岐変位は符号付き数として扱われる。sxは他の命令の命
令フォーマットとの関連でフィールドはあるが、FBcc命
令では特に意味は持たない。分岐変位の指定方法はGフ
ォーマットの BRA命令と同様である。
【0096】sy = ”00” : 8 ビット sy = ”01” : 16 ビット sy = ”10” : 32 ビット
【0097】本発明のデータ処理装置100 では命令は16
ビット単位となっており、奇数アドレスへのジャンプは
禁止されている。従って、奇数アドレスへのジャンプが
行われた場合には奇数アドレスジャンプトラップ(OAJT)
が起動され、例外処理が行われる。
【0098】 (3) 「本発明のデータ処理装置の機能ブロックの構成」 図5は本発明のデータ処理装置100 の構成を示すブロッ
ク図である。
【0099】本発明のデータ処理装置100 の内部を機能
的に大きく分けると、命令入力部110, 命令フェッチ部
111, 命令デコード部112, 第1マイクロROM 部113,
第2マイクロROM 部114, オペランドアドレス計算部11
5, PC処理部116, 整数演算部117, 浮動小数点演算部
118, アドレス入出力部119, オペランドアクセス部12
0, データ入出力部121 に分かれる。
【0100】各ブロックは、S1バス201, S2バス202,
DOバス203, IIバス204, DISPバス205, IXバス206,
AGバス207, JAバス208, AAバス209, DDバス210, EI
バス211, EAバス212, EDバス213, ADJSTバス214, IL
ENバス215, AOバス216 を介してアドレス及びデータの
転送を行っている。そして、アドレス入出力部119 をア
ドレスバス101 に結合し、データ入出力部121 をデータ
バス102 に結合し、命令入力部110 を命令バス103 に結
合することにより、図4に示されているシステム構成を
とることが出来る。
【0101】(3.1) 「命令入力部」 命令入力部110 は外部の命令バス103 から32ビット単位
で命令コードを本発明のデータ処理装置100 へ入力す
る。命令キャッシュ106 のアクセス方法には、1つのア
ドレスに対して32ビットの命令コードをアクセスする標
準アクセスモードと、1つのアドレスに対して4回連続
で32ビットの命令コードをアクセスするクワッドアクセ
スモードとがあり、どちらの場合も命令入力部110 は入
力した命令コードをEIバス211 を介して命令フェッチ部
111 へ出力する。
【0102】(3.2) 「命令フェッチ部」 図7は命令フェッチ部111 の構成を示すブロック図であ
る。命令フェッチ部111 には命令アドレスのアドレス変
換機構, 内蔵命令キャッシュ, 命令用TLB 及びその制御
部を含む命令用MMU(Memory Management Unit)/キャッシ
ュ部81と命令キュー部82等が備えられている。
【0103】命令用MMU/キャッシュ部81は命令アドレス
のアドレス変換及び命令のフェッチを行う。通常、次に
フェッチすべき命令のPC値がQINPCA86あるいはQINPCB87
からPFAバス91を介して命令用MMU/キャッシュ部81へ転
送される。但し、ジャンプが発生してジャンプ先命令を
直ちにフェッチする場合には、オペランドアドレス計算
部115, PC処理部116 あるいは整数演算部117 から出力
されたジャンプ先アドレス値がJAバス208 を介してMMU/
キャッシュ部81に直接取り込まれる。命令用MMU/キャッ
シュ部81ではこのPC値を物理アドレスに変換し、内蔵命
令キャッシュから命令コードをフェッチして命令コード
を ICOバス93を介して命令キューA83あるいは命令キュ
ーB84に送る。
【0104】内蔵命令キャッシュがミスした場合にはア
ドレス入出力部119 へ物理アドレスが出力されて外部へ
の命令アクセスが要求され、命令入力部110 を通じて入
力された命令コードが内蔵命令キャッシュに登録される
と共に、命令キューA83あるいは命令キューB84にも送
られる。命令用TLB がミスした場合のページングによる
アドレス変換及び命令用TLB の 更新も命令用MMU/キャ
ッシュ部81の内部に備えられている制御回路により行わ
れる。
【0105】命令キュー部82は、命令のフェッチアドレ
ス管理と取り込まれた命令のバッファリングとを行う。
命令キュー部82は、条件分岐命令の分岐/非分岐の2方
向の命令をキューイング可能なように、2つの命令キュ
ーA83及び命令キューB84と、命令キュー取り込みアド
レスを保持する2 つのアドレスレジスタQINPCA86及びQI
NPCB87を備えている。また、2つ目の条件分岐命令の分
岐先アドレスを退避しておくためのラッチであるQINPCC
88をも備えている。
【0106】なお、89は命令プリフェッチアドレスをイ
ンクリメントするためのカウンタであり、90はカウンタ
89の入力ラッチである。
【0107】命令キューA83及び命令キューB84は共に
32バイトの容量を有し、入出力ポインタ部85により入出
力制御が行われる。命令キューの入力ポインタはワード
(4バイト)単位で管理されており、キャッシュヒット
時には ICOバス93から 128ビットの命令コードが、キャ
ッシュミス時にはEIバス211 から32ビットの命令が命令
キューA83または命令キューB84にそれぞれ取り込まれ
る。入力ポインタは命令キャッシュのヒット/ミスに応
じて更新される。出力ポインタはハーフワード(2バイ
ト)単位で管理されており、命令キューA83及びB84に
取り込まれた命令コードは、16ビット単位で整置されて
IIバス204 へ出力され、命令デコード部112 及びPC処理
部116 へ転送される。出力ポインタは、命令デコード部
112 から送られて来る出力ポインタ更新情報に従って更
新される。
【0108】また、命令キューA84及びB85は、ジャン
プ直後のように命令キューが空の場合に ICOバス93ある
いはEIバス211 から取り込まれたデータをバイパスして
IIバス204 へ出力することも可能である。
【0109】命令入出力ポインタ部85には、命令キュー
A83及び命令キューB84を管理するための2組の入出力
ポインタと、QINPCC88に対応してポインタ値を退避して
おくラッチも備えられている。ジャンプが発生した場合
には、JAバス208 から取り込まれた値によりポインタの
初期化が行われる。
【0110】命令キュー部82は2本の命令キューA83及
び命令キューB84とQINPCC88とを用いて分岐命令を効率
よく処理する。また命令キュー部82は条件分岐命令処理
時には2方向の命令のフェッチを行うが、次に実行され
ると予測された側のシーケンスの命令を優先的に取り込
み、予測された側のシーケンスの命令キューがフルであ
れば他方のシーケンスの命令を取り込む。更に、命令キ
ュー部82は、2つの条件分岐命令をパイプライン処理可
能なように、2つ目の条件分岐命令の分岐先アドレスを
QINPCC88に退避しておき、2つの命令キューの一方が空
いたらQINPCC88に退避されているアドレスの命令を直ち
に取り込めるようになっている。
【0111】通常、命令キュー部82が連続的に命令フェ
ッチを行う場合には、QINPCA86またはQINPCB87の値が P
FAバス91へ出力されて命令用MMU/キャッシュ部81に送ら
れると共に、ラッチ90を介してカウンタ89に取り込まれ
てインクリメントされ、QINPCA86またはQINPCB87に書き
戻される。ジャンプ先アドレスがJAバス208 を介して転
送されてきた場合には、JAバス208 上の値がQINPCA86,
QINPCB87あるいはQINPCC88のいずれかに取り込まれる。
いずれのレジスタに書き込まれるかは、命令フェッチ部
111 が受け付けた要求の種類と命令キュー部82の内部状
態とに応じて異なる。また、JAバス208 上のジャンプ先
アドレスの命令が次のサイクルにおいて取り込まれる場
合には、JAバス208 上のジャンプ先アドレスがラッチ90
を介してカウンタ89に直接取り込まれてインクリメント
され、QINPCA86あるいはQINPCB87に書き込まれる。
【0112】命令キュー部82において2つの条件分岐命
令を処理中で、QINPCA86, QINPCB87及びQINPCC88に有効
なアドレスが取り込まれており、且つ1つ目の条件分岐
命令の分岐予測が的中していた場合には、命令キューA
83または命令キューB84の一方が無効になり、無効にな
った側のQINPCA86またはQINPCB87にQINPCC88の値が書き
込まれる。また、QINPCC88に退避されているアドレスの
命令のフェッチを直ちに開始する場合には、QINPCC88の
値が PFAバス91へ出力されて命令用MMU/キャッシュ部81
に送られると共に、ラッチ90を介してカウンタ89に取り
込まれてインクリメントされ、QINPCA86またはQINPCB87
に書き戻される。
【0113】また、本発明のデータ処理装置100 がバス
ウッチモードである場合には、アドレス入出力部119 を
通じて入力された物理アドレスがヒットする内蔵命令キ
ャッシュのエントリが無効化される。
【0114】(3.3) 「命令デコード部」 命令デコード部112 では、IIバス204 から取り込まれた
命令コードを16ビット(ハーフワード)単位でデコード
する。この命令デコード部112 には、第1ハーフワード
に含まれるオペレーションコードをデコードする OPDEC
1, 第2及び第3ハーフワードに含まれるオペレーショ
ンコードをデコードする OPDEC2, アドレッシングモー
ドをデコードするアドレッシングモードデコーダ, 2命
令の並列デコードを行うために限られた2バイト命令の
みをデコードするSUBDEC1, SUBDEC2が備えられてい
る。
【0115】更に、 OPDEC1及びOPDEC 2の出力を更に
デコードして、マイクロROM のエントリアドレスを計算
する第2デコーダ, 条件分岐命令の分岐予測を行う分岐
予測部, オペランドアドレス計算に際してパイプライン
コンフリクトをチェックするアドレス計算コンフリクト
チェック機構も含まれる。分岐予測部では、過去1回の
分岐履歴により条件分岐命令の分岐予測が行われる。こ
の分岐予測情報が条件分岐命令デコード時に参照され
る。分岐履歴は条件分岐命令の直前に実行された命令ア
ドレスの一部をタグとして記憶しており、登録及び参照
を行うPC値はPC処理部116 から送られてくる。
【0116】命令デコード部112 は命令フェッチ部111
から出力された命令コードを1クロックにつき0乃至8
バイトデコードする。デコード結果の内の整数演算部11
7 での演算に関する情報が第1マイクロROM 部113 に、
浮動小数点演算部118 での演算に関する情報が第2マイ
クロROM 部114 に、オペランドアドレス計算に関係する
情報がオペランドアドレス計算部115 に、PC計算に関係
する情報がPC処理部116 に、命令キューの出力ポインタ
更新情報が命令フェッチ部111 にそれぞれ出力される。
命令デコード部112 は、後ろ側の命令がメモリオペラン
ドを持たない2バイト命令である場合に限り2つの命令
を並列にデコードすることが可能であり、後ろ側の命令
に関するデコード結果(サブコードという)は第1マイ
クロROM部113 に送られる。また、命令デコード段階で
行われるジャンプ処理に関する情報が、命令フェッチ部
111, PC処理部116 あるいはオペランドアドレス計算部
115 へ出力される。
【0117】なお、分岐予測部は条件分岐命令の動的分
岐予測を行うが、分岐しないと静的に予測するように整
数演算部117 内の制御レジスタにより設定可能である。
【0118】(3.4) 「第1マイクロROM 部」 第1マイクロROM 部113 には、整数演算部117 の制御を
行う種々のマイクロプログラムルーチンが格納されてい
るマイクロROM, マイクロシーケンサ, マイクロ命令デ
コーダ, サブコードデコーダ等が備えられている。マイ
クロ命令はマイクロROM から1クロック当り1度読み出
される。マイクロシーケンサは命令実行に関するマイク
ロプログラム実行のためのシーケンス処理の他に、例
外, 割り込み及びトラップ(この3つをあわせて EITと
いう)の受付けと各 EITに対応するマイクロプログラム
のシーケンス処理も行う。
【0119】第1マイクロROM 部113 には命令コードに
依存しない外部割り込み及び整数演算実行結果によるマ
イクロプログラムの分岐条件も入力される。マイクロ命
令デコーダの出力は主に整数演算部117 へ出力される
が、ジャンプ命令の実行時及び例外受付時は一部の情報
を他の機能ブロックへも出力する。サブデコーダはサブ
コードのデコードを行う。サブコードが有効な場合は、
1命令の最終マイクロステップに同期してサブコードに
関する演算情報が有効になる。サブデコーダの出力は整
数演算部117 に対して出力される。
【0120】(3.5) 「第2マイクロROM 部」 第2マイクロROM 部114 には浮動小数点演算部118 の制
御を行う種々のマイクロプログラムルーチンが格納され
ているマイクロROM, マイクロシーケンサ, マイクロ命
令デコーダ等が備えられている。マイクロ命令はマイク
ロROM から1クロック当り1度読み出される。マイクロ
シーケンサはマイクロプログラムで示されるシーケンス
処理の他に、浮動小数点演算にかかわる例外の処理も行
い、マスクされていない浮動小数点例外が検出された場
合には第1マイクロROM 部113 へ例外処理を要求する。
第2マイクロROM 部114 のマイクロシーケンサは第1マ
イクロROM 部113 のマイクロシーケンサと並列に動作
し、整数演算部117 と並列に浮動小数点演算部118 を制
御する。
【0121】第2マイクロROM 部113 には浮動小数点演
算の実行結果によるフラグ情報も入力される。マイクロ
命令デコーダの出力は主に浮動小数点演算部118 へ出力
されるが、浮動小数点演算にかかわる例外の検出など一
部の情報は他の機能ブロックへも出力される。
【0122】(3.6) 「オペランドアドレス計算部」 オペランドアドレス計算部115 は、命令デコード部112
のアドレッシングモードデコーダ等から出力されたオペ
ランドアドレス計算に関係する情報によりハードワイヤ
ードに制御される。このオペランドアドレス計算部115
ではメモリ間接アドレッシングのためのメモリアクセス
以外のオペランドのアドレス計算とジャンプ命令のジャ
ンプ先アドレスの計算が行われる。
【0123】図3はオペランドアドレス計算部115 の詳
細な構成を示すブロック図である。図において、61はア
ドレス計算を行うためのアドレス加算器を、62, 63, 64
は入力ラッチを、65は出力ラッチ(AOラッチ)を、66は
プッシュモード時のプリデクリメント値などの補正値を
保持する ADJSTラッチを、67はアドレス計算のための変
位及び即値を保持するためのDISPラッチをそれぞれ示し
ている。なお、多段間接モードの1段のアドレス計算を
1サイクルで処理するために、アドレス加算器61は3値
加算器が使用されている。
【0124】アドレス計算時に参照される汎用レジスタ
の値及びPC値は整数演算部117 及びPC処理部116 からIX
バス206 を介してラッチ64あるいはラッチ63に取り込ま
れる。ラッチ62には ADJSTラッチ66あるいはDISPラッチ
67に保持されているデータが32ビットに符号拡張されて
取り込まれる。多段間接モードで間接参照を行う場合に
は、フェッチアドレスがAOラッチ65及びAAバス209 を介
してオペランドアクセス部120 へ転送されてデータのフ
ェッチを行う。フェッチされたデータはAGバス207 を介
して入力ラッチ64に取り込まれる。多段間接モードで間
接参照が行われない場合には、前段のアドレス計算結果
がそのまま入力ラッチ64に取り込まれる。アドレス計算
結果はAOバス216 を介して整数演算部117 に送られる。
また、オペランドのプリフェッチが行われる場合には、
AOラッチ65及びAAバス209 を介してオペランドアドレス
がオペランドアクセス部120 へ転送される。
【0125】オペランドが即値である場合には、DISPラ
ッチ67に取り込まれたデータがアドレス加算器61, AOラ
ッチ65及びAOバス216 を介して整数演算部117 に送られ
る。また、即値が倍精度浮動小数点数(64ビット)であ
る場合には、上位32ビットと下位32ビットとの2つの部
分に分割され、2回に分けてDISPラッチ67に取り込まれ
る。この場合、第1サイクルにおいて上位32ビットがAO
ラッチ65に退避され、第2サイクルにおいて上位32ビッ
トがAGバス207 を介して整数演算部117 へ転送されると
共に下位32ビットがAOバス216 を介して整数演算部117
に送られる。
【0126】オペランドアドレス計算が終了した段階で
ジャンプが行われる場合には、ジャンプ先アドレスの計
算結果がAOラッチ65及びJAバス208 を介して命令フェッ
チ部111 とPC処理部116 とへ出力される。
【0127】(3.7) 「PC処理部」 図1及び図2はPC処理部116 の構成を示すブロック図で
ある。PC処理部116 は、大きく分けて、ジャンプ先アド
レス生成部1, PC計算部2, ステップPC転送部3及びPC
スタック4に分かれる。
【0128】PC計算部2は命令デコード部112 から出力
されるPC計算に関係する情報でハードワイヤードに制御
され、命令のPC値を計算する。本発明のデータ処理装置
100の命令は可変長命令であり、命令をデコードした後
でなければ命令の長さが判明しない。PC計算部2は、命
令デコード部112 から出力される命令長をデコード中の
命令のPC値に加算することにより次に実行すべき命令の
PC値を計算する。
【0129】PC計算部2において、DPC 29はデコード中
の命令の先頭アドレスを保持する。また、TPC 27は1命
令の命令コードが複数の処理単位に分割されて処理され
る場合も含めて、デコード処理対象のコードの先頭アド
レスを保持する。即ち、IIバス204 から命令デコード部
112 に取り込まれるコードの先頭アドレスが保持され
る。
【0130】PC加算器23は、命令デコード部112 からIL
ENバス215 を介して取り込まれた命令長とTPC 27の値と
を加算し、加算結果はTPC 27及びATPC28に書き戻され
る。また、1命令のデコード終了時には加算結果は次の
命令の先頭アドレスを示すので、DPC 29にも書き戻され
る。ATPC28はアドレス計算時に次の命令のPC値として参
照される。ジャンプが発生した場合には、ジャンプ先ア
ドレスがJAバス208 から取り込まれ、TPC 27及びDPC 29
が初期化される。但し、ATPC28はジャンプが発生しても
初期化されない。DPC 29の一部は命令デコード部112 に
も転送されて分岐予測に用いられる。
【0131】ジャンプ先アドレス生成部1は、命令デコ
ード段階でジャンプ先アドレスの計算を行うブロックで
ある。命令フェッチ部111 から命令デコード部112 に送
られるIIバス204 上の命令コードから分岐変位位置のデ
ータを切り出してDPC 29と加算することにより、ジャン
プ先アドレス生成部1は分岐先アドレスを計算する。本
発明のデータ処理装置100 では、 BRA命令, BSR命令,
Bcc命令の全ての命令に関して命令デコードと同時にジ
ャンプ先アドレスが計算出来るように、第1及び第2加
算器5,6の2つの加算器を備えている。
【0132】なお、参照符号7及び8は各加算器5,6
の入力ラッチであり、10及び11は各加算器5,6の出力
ラッチである。また、絶対アドレスを保持するための入
力ラッチ9及び出力ラッチ12も備えられている。
【0133】ジャンプ先アドレス生成部1は命令コード
のデコード処理に同期して動作する。ジャンプ先アドレ
ス生成部1は、主としてDフォーマットの BRA命令, B
SR命令, Bcc命令の分岐先アドレスを計算するための第
1加算器5と、主としてGフォーマットの BRA命令, B
SR命令, Bcc命令の分岐先アドレスを計算するための第
2加算器6との二つの加算器を備えている。
【0134】各命令デコードサイクルに同期して、DPC
29の値がPIバス40を介して第1加算器5及び第2加算器
6に取込まれる。また、IIバス204 上のデータが入力ラ
ッチ7,8,9に取り込まれる。図48に分岐変位及び絶
対アドレスとして各入力ラッチ7,8,9に取り込まれ
るIIバス204 のビット位置を示す。
【0135】入力ラッチ7は、Dフォーマットの BRA命
令, BSR命令, Bcc命令の分岐変位フィールドであるII
バス204 のbit(8:15)(ビット8から15までの8ビット、
以下II(8:15)と記す)を2倍し (左へ1ビットシフト
し) 、且つ32ビットに符号拡張したデータを取り込む。
また、入力ラッチ8は、Gフォーマットの BRA命令, B
SR命令, Bcc命令の分岐変位フィールドに相当するIIバ
ス204 のbit(6:7)(II(6:7)) の値に応じてIIバス204 上
のデータを選択的に取り込む。II(6:7) =”00”または
II(6:7) =”11”である場合には、IIバス204 のbit(2
4:31)(II(24:31))を32ビットに符号拡張したデータを取
り込む。また、II(6:7) =”01”である場合には、II(1
6:31) を32ビットに符号拡張したデータを取り込む。更
に、II(6:7) =”10”である場合には、II(16:47) をそ
のまま取り込む。第1加算器5及び第2加算器6はそれ
ぞれ入力ラッチ7及び8の内容とDPC 29の値とを加算
し、その加算結果を出力ラッチ10及び11へそれぞれ転送
する。
【0136】入力ラッチ9は、図48に示されているよう
に、アドレッシングモードが絶対モードである場合のア
ドレスデータサイズを区別することが可能なIIバス204
のbit15(II(15))の値に応じてIIバス204 上のデータを
選択的に取り込む。II(15)=”1”である場合にはII(1
6:31) を32ビットに符号拡張したデータを取り込む。II
(15)=”0”である場合にはII(16:47) をそのまま取り
込む。出力ラッチ12には入力ラッチ9に取り込まれたデ
ータがそのまま転送される。
【0137】分岐命令デコードサイクル中に第1, 第2
加算器5, 6で分岐先アドレスが計算できない場合に
は、次のサイクルにおいて入力ラッチ7は命令デコード
部112からDISPバス205 を介して分岐変位を取り込む。
第1加算器5は、入力ラッチ7の内容とPIバス40を介し
て取り込まれたDPC 29の値とを加算し、その加算結果を
出力ラッチ10へ転送する。
【0138】命令デコード段階でジャンプ処理が行われ
る場合には、命令デコード部112 から入力された制御信
号により出力ラッチ10, 11, 12の内の1つが選択され、
その内容がJAバス208 へ出力されることにより、ジャン
プ先アドレスが命令フェッチ部111 に転送される。ま
た、命令の処理シーケンスが切り替えられる場合には、
JAバス208 上の値がTPC 27及びDPC 29に取り込まれる。
【0139】PCスタック4は、サブルーチンへのジャン
プ命令の実行時にスタックにプッシュしたサブルーチン
からの戻り先PC値のコピーを保持するためのバッファで
ある。サブルーチンからのリターン命令に対してはPCス
タック4から戻り先PC値が読み出されてJAバス208 を介
して命令フェッチ部111 に転送される。また、JAバス20
8 上の値がTPC 27及びDPC 29に取り込まれる。
【0140】ステップPC転送部3は、各パイプラインス
テージに対応してPC値を保持するための複数のラッチを
備えており、命令デコード段階で計算されたDPC 29の値
がパイプライン処理の進行と共に各命令のPC値として転
送されてゆく。OLDPC 36は実行ステージが直前に実行し
た命令のPC値を保持しており、命令デコード部112 に出
力している。この値を用いることにより、命令デコード
部112 内の分岐履歴テーブルの更新が行われる。
【0141】(3.8) 「整数演算部」 整数演算部117 は第1マイクロROM 部113 のマイクロRO
M に格納されたマイクロプログラムとサブコードとによ
り制御され、各整数演算命令の機能を実現するために必
要な演算を整数演算部117 の内部にあるレジスタファイ
ルと演算器とで実行する。レジスタファイルには汎用レ
ジスタや作業用レジスタが含まれる。この整数演算部11
7 には演算器としては、マイクロプログラムにより制御
される ALU, シフタ, プライオリティエンコーダ等にて
構成される主演算器と、サブコードの実行を行うための
ALU 及びシフタ等の副演算器とが備えられている。
【0142】また、整数演算部117 は、主演算器と副演
算器とを用いて2命令を並列に実行することが可能なよ
うに構成されている。副演算器はマイクロプログラムで
も制御可能である。また、整数演算部117 には整数演算
の結果により変化するフラグ, 外部割り込みのマスクレ
ベルを定めるビット等を含むプロセッサ状態語(PSW)及
びバッファメモリ制御レジスタ等も備えられている。
【0143】命令の演算対象となるオペランドがアドレ
スまたは即値である場合は、オペランドアドレス計算部
115 からA0バス216 及びAGバス207 を介して即値あるい
は計算されたアドレスが入力される。また、命令の演算
対象となるオペランドがメモリ上のデータである場合
は、アドレス計算部115 で計算されたアドレスがオペラ
ンドアクセス部120 へ出力され、内蔵データキャッシュ
または外部からフェッチしたオペランドがDDバス210 を
介して整数演算部117 へ入力される。
【0144】演算に際して内蔵データキャッシュ, 外部
のデータキャッシュ107, 108あるいは主メモリ109 をリ
ードする必要がある場合は、マイクロプログラムの指示
によりAAバス209 を介してオペランドアクセス部120 へ
アドレスが出力され、目的のデータがDDバス210 から取
り込まれる。一方、演算結果を内蔵データキャッシュ,
外部のデータキャッシュ107, 108あるいは主メモリ109
へストアする必要がある場合は、マイクロプログラムの
指示によりAAバス209 を介してアドレスが、DDバス210
を介してデータがそれぞれオペランドアクセス部120 へ
出力される。
【0145】外部割り込みまたは例外の処理等が行われ
て新たな命令アドレスを整数演算部117 が得た場合は、
新たなアドレスが命令フェッチ部111 とPC処理部116 と
へ出力される。
【0146】(3.9) 「浮動小数点演算部」 浮動小数点演算部118 は第2マイクロROM 部114 のマイ
クロROM に格納されたマイクロプログラムにより制御さ
れ、各浮動小数点演算命令の機能を実現するために必要
な演算を浮動小数点演算部118 の内部に備えられている
レジスタファイルと演算器で実行する。浮動小数点演算
部118 には浮動小数点演算の丸め処理方法及び浮動小数
点演算例外の検出許可のモードを設定する浮動小数点演
算モード制御レジスタ(FMC) と、浮動小数点演算結果に
対するフラグ, 浮動小数点例外の発生状態を示すステー
タスビットからなる浮動小数点演算状態語(FSW) とが備
えられている。
【0147】命令の演算対象となるオペランドが即値の
場合またはメモリ上のデータである場合は、オペランド
の値がS1バス201 またはS2バス202 を介して整数演算部
117から浮動小数点演算部118 へ入力される。
【0148】ストア動作では浮動小数点演算部118 と整
数演算部117 とが協調して動作する。オペランドを内蔵
データキャッシュ, 外部のデータキャッシュ107, 108あ
るいは主メモリ109 へストアする必要がある場合は、浮
動小数点演算部118 はマイクロプログラムの指示により
DOバス203 を介して整数演算部117 にデータを出力す
る。整数演算部117 は、オペランドアクセス部120 に対
してAAバス209 を介してオペランドのアドレスを、DDバ
ス210 を介してオペランドデータをそれぞれ出力する。
【0149】(3.10)「オペランドアクセス部」 オペランドアクセス部120 にはオペランドアドレスのア
ドレス変換機構, 内臓データキャッシュ, データ用TLB,
プリフェッチデータバッファ, ストアバッファ, オペ
ランドブレイクポイントレジスタ及びそれらの制御部が
備えられている。
【0150】データのロード動作ではオペランドアドレ
ス計算部115 または整数演算部117からAAバス209 に出
力されたロードすべきデータの論理アドレスが物理アド
レスに変換されることにより内蔵データキャッシュから
データがフェッチされ、整数演算部117 へ出力される。
【0151】内蔵データキャッシュがミスした場合に
は、アドレス入出力部119 へ物理アドレスが出力されて
外部へのデータアクセスが要求され、データ入出力部12
1 を通じて入力されたデータが内蔵データキャッシュに
登録される。一方、データのストア動作においては、整
数演算部117 から出力されたストアすべきデータの論理
アドレスが物理アドレスに変換されることにより整数演
算部117 または浮動小数点演算部118 から出力されたデ
ータが内蔵データキャッシュにストアされると共に、ス
トアバッファを通じてアドレス入出力部119 へ物理アド
レスが出力され、データ入出力部121 を通じてデータが
外部へ出力される。ストア動作でミスが発生した場合に
はデータの更新は行わない。
【0152】ストアバッファではストアすべきデータと
そのアドレス、更にそのストア動作を行った命令のPC値
とが1組として管理される。ストアバッファでのストア
動作は先入れ先だし制御方式で管理される。
【0153】データ用TLB がミスした場合のページング
によるアドレス変換及びデータ用TLB の更新もオペラン
ドアクセス部120 内部の制御回路により行われる。ま
た、メモリアクセスアドレスがメモリ空間にマッピング
されている I/O領域に入るか否かのチェックも行われ
る。
【0154】また、データバッファを内蔵データキャッ
シュとして動作させる場合、本発明のデータ処理装置10
0 がバスウッチモードで動作している場合には、アドレ
ス入出力部119 を通じて入力された物理アドレスがヒッ
トする内蔵データキャッシュのエントリが無効化され
る。
【0155】(3.11)「アドレス入出力部」 アドレス入出力部119 は命令フェッチ部111 とオペラン
ドアクセス部120 とから出力されたアドレスを本発明の
データ処理装置100 の外部へ出力する。アドレスの出力
は本発明のデータ処理装置100 で定められたバスプロト
コルに従って行われる。バスプロトコルの制御はアドレ
ス入出力部119 内にある外部バス制御回路が行う。外部
バス制御回路ではページ不在例外, バスアクセス例外あ
るいは外部割り込みの受け付けも行う。
【0156】また、本発明のデータ処理装置100 以外の
外部デバイスがバスマスタになっており、且つ本発明の
データ処理装置100 がバスウッチモードであれば外部デ
バイスがデータライトサイクルを実行した場合にアドレ
スバス101 上に出力されたアドレスを取り込んで命令フ
ェッチ部111 とオペランドアクセス部120 とへ転送す
る。
【0157】(3.12)「データ入出力部」 データ入出力部121 はオペランドのロード動作の際にデ
ータバス102 からデータを取り込んでオペランドアクセ
ス部120 へ転送し、またオペランドのストア動作の際に
オペランドアクセス部120 から出力されたオペランドを
データバス102へ出力する。データキャッシュ107, 108
のアクセス方法には、1つのアドレスに対して64ビット
のデータをアクセスする標準アクセスモードと1つのア
ドレスに対して4回連続で64ビットのデータをアクセス
するクワッドアクセスモードとがあり、いずれの場合も
データ入出力部121 はオペランドアクセス部120 と外部
のメモリとの間で送受されるデータの入出力を制御す
る。
【0158】(4) 「パイプライン処理」 本発明のデータ処理装置100 は各種のバッファ記憶と、
命令バス103 及びデータバス102 を使用したメモリの効
率的アクセスとにより、命令をパイプライン処理して高
性能に動作する。ここでは、本発明のデータ処理装置10
0 のパイプライン処理方法について説明する。
【0159】(4.1) 「パイプライン処理機構」 本発明のデータ処理装置100 のパイプライン処理機構を
図6の模式図に示す。本発明のデータ処理装置100 のパ
イプライン処理機構は、命令のプリフェッチを行う命令
フェッチステージ(IFステージ)131, 命令のデコードを
行うデコードステージ(Dステージ)132, オペランドの
アドレス計算を行うオペランドアドレス計算ステージ
(Aステージ)133, マイクロROM アクセス(特にRステ
ージ137 という)とオペランドのプリフェッチ(特にOF
ステージ138 という)とを行うオペランドフェッチステ
ージ(Fステージ)134, 命令の実行を行う実行ステージ
(Eステージ)135, メモリオペランドのストアを行うス
トアステージ(Sステージ)136の6段構成でパイプライ
ン処理を行う。なお、Sステージ136 には3段のストア
バッファが備えられている。
【0160】各ステージは他のステージとは独立に動作
し、理論上は6つのステージが完全に独立して動作す
る。Sステージ136 以外の各ステージは1回の処理を最
小1クロックで行うことが可能である。Sステージ136
は1回のオペランドストア処理を最小2クロックで行う
ことが可能である。但し、ストアバッファがフルになる
まではSステージは1クロック毎に1つのストア処理を
受け付けることが出来る。従って、理想的には1クロッ
クごとに次々とパイプライン処理が進行する。
【0161】本発明のデータ処理装置100 にはメモリ−
メモリ間演算あるいはメモリ間接アドレッシング等のよ
うに、1回の基本パイプライン処理だけでは処理が行え
ない命令があるが、これらの命令に対しても本発明のデ
ータ処理装置100 はなるべく均衡したパイプライン処理
が行えるように設計されている。複数のメモリオペラン
ドを有する命令に対しては、本発明のデータ処理装置10
0 はメモリオペランドの数に基づいてデコード段階で複
数のパイプライン処理単位(ステップコード)に分解し
てパイプライン処理を行う。
【0162】IFステージ131 からDステージ132 に渡さ
れる情報は命令コードそのものである。Dステージ132
からAステージ133 に渡される情報は命令で指定された
演算に関する情報(Dコード141 と呼ぶ)と、オペラン
ドのアドレス計算に関係する情報(Aコード142 と呼
ぶ)と、処理中の命令のプログラムカウンタ値(PC)との
3つである。Aコード142 にはAステージ133 で行われ
る先行ジャンプ処理に関する情報も含まれている。
【0163】Aステージ133 からFステージ134 に渡さ
れる情報はマイクロプログラムルーチンのエントリ番
地, マイクロプログラムへのパラメータ等を含むRコー
ド143と、オペランドのアドレス, アクセス方法指示情
報等を含むFコード144 と、処理中の命令のプログラム
カウンタ値(PC)との3つである。Fステージ134 からE
ステージ135 に渡される情報は演算制御情報, リテラル
等を含むEコード145 と、オペランド, オペランドアド
レス等を含むSコード146 と、処理中の命令のプログラ
ムカウンタ値(PC)との3つである。Sコード146 はアド
レスとデータとにて構成されている。
【0164】Eステージ135 からSステージ136 に渡さ
れる情報はストアすべき演算結果であるWコード147
と、その演算結果を出力した命令のプログラムカウンタ
値(PC)との2つである。Wコード147 はアドレスとデー
タとにて構成されている。
【0165】Eステージ135 以前の各ステージで検出さ
れたEIT(例外, 割り込み, トラップ)はそのコードがE
ステージ135 に到達するまで EIT処理を起動しない。E
ステージ135 で処理されている命令のみが実行段階の命
令であり、IFステージ131 〜Fステージ134 で処理され
ている命令はまだ実行段階に至っていないからである。
従って、Eステージ135 以前で検出された EITは検出さ
れたことがステップコード中に記録されて次のステージ
に伝えられるのみである。Sステージ136 で検出された
EITはEステージ135 で処理中の命令が完了した時点で
受け付けられるか、またはその命令の処理がキャンセル
されて受け付けられ、Eステージ135 に戻って処理され
る。
【0166】(4.2) 「各パイプラインステージの処理」 各パイプラインステージの入出力ステップコードには図
6に示されているように便宜上名前が付与されている。
またステップコードはオペレーションコードに関する処
理を行い、マイクロROM のエントリ番地あるいはEステ
ージ135 に対するパラメータなどになる系列と、Eステ
ージ135 の処理対象のオペランドになる系列との2系列
がある。また、Dステージ132 からSステージ136 まで
の間では処理中の命令のプログラムカウンタ値が受け渡
される。
【0167】(4.2.1) 「命令フェッチステージ」 命令フェッチステージ(IFステージ)131では命令フェッ
チ部111 が動作する。IFステージ131 では、内蔵命令キ
ャッシュまたは外部から命令をフェッチして命令キュー
に取り込み、Dステージ132 に対して0〜8バイト単位
で命令コードを出力する。命令キューへの入力は整置さ
れた4バイト単位で行われる。
【0168】標準アクセスモードで外部から命令をフェ
ッチする場合は整置された4バイトにつき最小2クロッ
クを要する。クワッドアクセスモードでは16バイトにつ
き最小5クロックを要する。内蔵命令キャッシュがヒッ
トした場合は整置された16バイトにつき1クロックでフ
ェッチ可能である。命令キューの出力単位は2バイトご
とに可変であり、1クロックの間に最大8バイトまで出
力できる。またジャンプの直後には命令キューをバイパ
スして2または4バイトの命令コードを直接命令デコー
ダに転送することもできる。
【0169】命令の論理アドレスの物理アドレスへの変
換, 内蔵命令キャッシュ及び命令用TLB の制御, プリフ
ェッチ先命令アドレスの管理, 命令キューの制御もIFス
テージ131 で行われる。
【0170】なお、IFステージ131 で検出される EITに
は、命令フェッチに関するアドレス変換例外, ページ不
在例外, バスアクセス例外がある。
【0171】(4.2.2) 「命令デコードステージ」 命令デコードステージ(Dステージ)132はIFステージ13
1 から入力された命令コードをデコードする。命令コー
ドのデコードは命令デコード部112 の OPDEC1, OPDEC
2、アドレッシングモードデコーダ, SUBDEC1, SUBDEC
2を使用して、1クロックに1度行ない、1回のデコー
ド処理で、0〜8バイトの命令コードを消費する。 OPD
EC1または OPDEC2でデコードされた命令に引き続く命
令がSUBDEC1またはSUBDEC2でデコードされ、レジスタ
オペランドに関して干渉が発生しない場合には、1回の
デコード処理で2つの命令が処理される(OPDEC1または
OPDEC2でのデコード結果をメインコード、SUBDEC1ま
たはSUBDEC2でのデコード結果をサブコードという)。
【0172】なお、一部の命令では、1命令の第2デコ
ードサイクル以降で命令コードを消費せずにステップコ
ードの生成を行う場合がある。1回のデコードでAステ
ージ133 に対してアドレス計算情報であるAコード142
とオペレーションコードの中間デコード結果であるDコ
ード141 とが出力される。
【0173】Dステージ132 ではPC処理部116 の制御及
び命令キューからの命令コードの出力制御も行う。ま
た、Dステージ132 では無条件分岐命令及びサブルーチ
ンからのリターン命令等に対して先行ジャンプ処理を行
う。先行ジャンプを行った無条件分岐命令に対してはD
コード141 もAコード142 も出力せず、Dステージ132
で命令の処理が終了する。
【0174】但し、ジャンプ先アドレスが奇数である場
合、またはデバッグ事象検出モードである場合には、無
条件分岐命令に対してDコード141 及びAコード142 が
出力される。なお、Dステージ132 で検出される例外に
は、予約命令例外, 先行ジャンプに関する奇数アドレス
ジャンプトラップがある。
【0175】 (4.2.3) 「オペランドアドレス計算ステージ」 オペランドアドレス計算ステージ(Aステージ)133での
処理は大きく2つに分かれる。一方は命令デコード部11
2 の第2デコーダを使用してオペレーションコードの後
段デコードを行う処理で、他方はオペランドアドレス計
算部54でオペランドアドレスの計算を行う処理である。
【0176】オペレーションコードの後段デコード処理
はDコード141 を入力とし、レジスタとメモリの書き込
み予約及びマイクロプログラムルーチンのエントリ番地
及びマイクロプログラムに対するパラメータ等を含むR
コード143 の出力を行う。なお、レジスタ及びメモリの
書き込み予約は、アドレス計算で参照したレジスタある
いはメモリの内容がパイプライン上を先行する命令で書
き換えられてしまって誤ったアドレス計算が行われるの
を防ぐためのものである。
【0177】オペランドアドレス計算処理はAコード14
2 を入力とし、Aコード142 に従ってオペランドアドレ
ス計算部54でオペランドのアドレス計算を行い、その計
算結果をFコード144 として出力する。この際、アドレ
ス計算に伴うレジスタの読み出し時に書き込み予約のチ
ェックが行われ、先行命令のレジスタまたはメモリへの
書き込み処理が終了していないために予約があることが
指示されれば、先行命令のEステージ135 での書き込み
処理が終了するまで待機状態になる。また、多段間接モ
ードでメモリ間接参照の指定が行われた場合のメモリア
クセス制御も行われる。
【0178】Aステージ133 では、Dステージ132 で先
行ジャンプを行わなかったジャンプ命令に対して先行ジ
ャンプ処理を行う。レジスタ間接アドレッシングのジャ
ンプ等に対してはAステージ133 で先行ジャンプが行わ
れる。先行ジャンプを行った無条件ジャンプ命令に対し
てはRコード143 もFコード144 も出力されず、Aステ
ージ133 で命令の処理が終了する。
【0179】Aステージ133 で検出される EITには、予
約命令例外, 特権命令例外, 先行ジャンプに関する奇数
アドレスジャンプトラップ, 間接参照に関するアドレス
変換例外, ページ不在例外, バスアクセス例外がある。
また、間接参照アドレスとオペランドブレイクポイント
の比較チェックもAステージ133 で行われる。
【0180】 (4.2.4) 「マイクロROM アクセスステージ」 オペランドフェッチステージ(Fステージ)134での処理
も大きく2つに分かれる。第1はマイクロROM のアクセ
ス処理であり、特にRステージ137 という。第2はオペ
ランドプリフェッチ処理であり、特にOFステージ138 と
いう。Rステージ137 とOFステージ138 とは必ずしも同
時に動作するわけではなく、データキャッシュのミス,
ヒット、データ用TLB のミス, ヒットなどに依存して動
作タイミングが異なる。
【0181】Rステージ137 での処理であるマイクロRO
M アクセス処理はRコード143 に対して次のEステージ
135 での実行に使用される実行制御コードであるEコー
ド145 を作り出すためのマイクロROM アクセスとマイク
ロ命令デコード処理とである。
【0182】1つのRコードに対する処理が2つ以上の
マイクロプログラムステップに分解される場合、第1マ
イクロROM 部113 及び第2マイクロROM 部114 がEステ
ージ135 で使用され、次のRコード143 がマイクロROM
アクセス待機状態になる場合がある。Rコード143 に対
するマイクロROM アクセスが行われるのは、Eステージ
135 でのマイクロROM アクセスが行われない場合であ
る。本発明のデータ処理装置100 では多くの整数演算命
令が1マイクロプログラムステップで行われ、多くの浮
動小数点演算命令が2マイクロプログラムステップで行
われるため、実際にはRコード143 に対するマイクロRO
M アクセスが次々と行われる可能性が高い。
【0183】2命令が並列にデコードされ且つサブコー
ドが有効な場合には、サブデコーダでのデコード結果が
有効になる。1つのRコードに対する処理が2つ以上の
マイクロプログラムステップに分解される場合、最終マ
イクロプログラムステップでサブコードに関するEコー
ド145 が有効になる。Rステージ137 では、実行PCに関
するブレークポイントのチェックが行われる。
【0184】(4.2.5) 「オペランドフェッチステージ」 オペランドフェッチステージ(OFステージ)138はFステ
ージ134 が行う上記の2つの処理の内のオペランドプリ
フェッチ処理を行う。
【0185】OFステージ138 では、Fコード144 の論理
アドレスをデータ用TLB で物理アドレスに変換して得ら
れた物理アドレスで内蔵データキャッシュまたは外部の
メモリをアクセスしてオペランドをフェッチし、そのオ
ペランドとFコード144 として転送されてきたその論理
アドレスとを組み合わせてSコード146 として出力す
る。
【0186】1つのFコード144 では8バイト境界をク
ロスしてもよいが、8バイト以下のオペランドフェッチ
を指定する。Fコード144 にはオペランドのアクセスを
行うか否かの指定も含まれており、Aステージ133 で計
算されたオペランドアドレス自体あるいは即値をEステ
ージ135 に転送する場合にはオペランドプリフェッチは
行われず、Fコード144 の内容がSコード146 として転
送される。
【0187】OFステージ138 で検出される EITには、オ
ペランドプリフェッチに関するアドレス変換例外, ペー
ジ不在例外, バスアクセス例外がある。
【0188】(4.2.6) 「実行ステージ」 実行ステージ(Eステージ)135はEコード145 とSコー
ド146 とを入力として動作する。このEステージ135 が
命令を実行するステージであり、Fステージ134 以前の
各ステージで行われた処理は全てEステージ135 のため
の前処理である。Eステージ135 でジャンプが実行され
たり、 EIT処理が起動されたりした場合には、IFステー
ジ131 〜Fステージ134 までの処理は全て無効化され
る。Eステージ135 はマイクロプログラムにより制御さ
れ、Eコード145 に示されたマイクロプログラムルーチ
ンのエントリ番地からの一連のマイクロ命令を実行する
ことにより命令を実行する。
【0189】Eコード145 には整数演算部117 を制御す
るコード(特にEIコードと呼ぶ)と浮動小数点演算部11
8 を制御するコード(特にEFコードと呼ぶ)とがある。
EIコードとEFコードとは独立に出力されることが可能で
ある。両コードが独立して出力された場合には、Eステ
ージ135 では整数演算部117 と浮動小数点演算部118と
が並列に動作する。たとえば、浮動小数点演算部118 で
メモリオペランドを持たない浮動小数点演算命令を実行
する場合、この動作は整数演算部117 の動作と独立して
実行される。
【0190】整数演算においてもまた浮動小数点演算に
おいても、マイクロROM の読み出しとマイクロ命令の実
行とはパイプライン化されて行われる。従って、マイク
ロプログラムで分岐が発生した場合は1マイクロステッ
プの空きが発生するが、この空きステップで有効な処理
を行うことが可能なように構成されている。Eステージ
135 ではAステージ133 で行われたレジスタまたはメモ
リに対する書き込み予約をオペランドの書き込みの後に
解除する。
【0191】2命令が並列にデコードされ、且つサブコ
ードが有効な場合には、主演算器と副演算器とにより2
命令が並列に実行される。1つのRコードに対する処理
が2つ以上のマイクロプログラムステップに分解される
場合、最終マイクロプログラムステップでサブコードに
関する演算実行が行われる。
【0192】各種の割り込みは命令の切れ目のタイミン
グにおいてEステージ135 が直接受け付け、マイクロプ
ログラムにより必要な処理が実行される。その他の各種
EITの処理もEステージ135 でマイクロプログラムによ
り処理される。
【0193】演算の結果をメモリにストアする必要があ
る場合には、Eステージ135 はSステージ136 へWコー
ド147 とストア処理を行う命令のプログラムカウンタ値
との双方を出力する。
【0194】(4.2.7) 「オペランドストアステージ」 オペランドストアステージ(Sステージ)136はWコード
147 の論理アドレスをデータ用TLB で物理アドレスに変
換して得られたアドレスでWコード147 のデータを内蔵
データキャッシュにストアする。同時に、Wコード147
とプログラムカウンタ値とをストアバッファに入力し、
データ用TLB から出力された物理アドレスを用いて外部
のメモリへWコード147 のデータをストアする処理を行
う。
【0195】Sステージ136 の動作はオペランドアクセ
ス部120 で行われ、データ用TLB または内蔵データキャ
ッシュがミスした場合のアドレス変換処理や内蔵データ
キャッシュの入れ替え処理も行う。オペランドのストア
処理で EITが検出された場合は、ストアバッファにWコ
ード147 とプログラムカウンタ値とが保持されたままの
状態で、Eステージ135 にEITの検出が通知される。
【0196】 (4.3) 「各パイプラインステージの状態制御」 パイプラインの各ステージは入力ラッチと出力ラッチと
を有し、基本的にはそれぞれ他のステージと独立に動作
する。各ステージは1つ前に行った処理が終了するとそ
の処理結果を出力ラッチから次のステージの入力ラッチ
に転送し、自ステージの入力ラッチに次の処理に必要な
入力信号が全て揃えば次の処理を開始する。
【0197】つまり、各ステージは、1つ前段のステー
ジから出力されてくる次の処理に対する入力信号が全て
有効となり、今の処理結果を後段のステージの入力ラッ
チに転送して出力ラッチが空になると次の処理を開始す
る。換言すれば、各ステージが動作を開始する直前のタ
イミングで入力信号が全て揃っている必要がある。入力
信号が揃っていない場合には、そのステージは待ち状態
(入力待ち)になる。出力ラッチから次のステージの入
力ラッチへの転送が行われる場合には次のステージの入
力ラッチが空き状態になっている必要があり、次のステ
ージの入力ラッチが空き状態でない場合もパイプライン
ステージは待ち状態(出力待ち)になる。また、キャッ
シュまたはTLB がミスしたり、パイプラインで処理中の
命令間にデータ干渉が生じたよな場合には、1つのステ
ージの処理に複数クロック必要となり、パイプライン処
理が遅延する。
【0198】また、 BRA命令あるいは JMP命令の実行に
際して奇数アドレスジャンプトラップ(OAJT)が検出され
なかった場合には、先行ジャンプ処理終了後のステップ
コードの出力は行われず、そのステージで命令処理が終
了する。また、NOP(ノー・オペレーション) 命令も通常
はDステージ132 で処理が終了する。
【0199】(5) 「先行ジャンプ処理機構の詳細動作」 本発明のデータ処理装置100 ではEステージ135 以前の
ステージで行われるジャンプ処理を総称して先行ジャン
プ処理という。以下の説明において、ジャンプを発生す
る命令を総称してジャンプ命令といい、ジャンプ先アド
レスがPC相対モードに限られたジャンプ命令を特別に分
岐命令と定義しておく。
【0200】表1に示すように、先行ジャンプ処理の処
理対象となる命令は大きく分けて3つに分類できる。第
1は無条件ジャンプ命令であり、指定されたジャンプ先
に必ずジャンプする命令である。該当する命令としてBR
A, BSR, JMP, JSRの各命令がある。第2は条件分岐命令
であり、分岐先アドレスに分岐するか否かが実行時のフ
ラグ状態に依存する命令である。該当する命令として、
Bcc, ACB, SCB, FBccの各命令があ
る。第3はサブルーチンからのリターン命令である。該
当する命令としてRTS 及びEXITD の各命令がある。
【0201】
【表1】
【0202】本発明のデータ処理装置100 では表1に示
されている全ての命令を対象として先行ジャンプ処理を
行う。
【0203】無条件ジャンプ命令に関しては、無条件プ
リジャンプが行われる。更に、Dステージ132 で無条件
プリジャンプが行われる場合と、Aステージ133 で無条
件プリジャンプが行われる場合とがある。また、条件ジ
ャンプ命令に関しては、分岐予測が行われ、分岐すると
予測された場合には条件プリブランチが、分岐しないと
予測された場合には分岐先命令プリフェッチが行われ
る。
【0204】本発明のデータ処理装置100 の条件分岐命
令の分岐予測方法は、表2に示すように、分岐すると静
的に予測を行う場合と、分岐しないと静的に予測を行う
場合と、過去の分岐履歴に従って動的に分岐予測を行う
場合との3つに分類できる。但し、整数演算部117 内の
制御レジスタにより条件分岐命令を分岐しないと静的に
予測するように設定することも可能である。
【0205】
【表2】
【0206】条件プリブランチはDステージ132 で行わ
れる。分岐先命令プリフェッチはDステージ132 で行わ
れる場合と、Aステージ133 で行われる場合とがある。
サブルーチンリターン命令に関しては、サブルーチンコ
ール時に戻り先アドレスが登録されているPCスタック4
を用いてDステージ132 でプリリターン処理が行われ
る。
【0207】Dステージ132 で行われるプリリターン以
外の先行ジャンプ処理時のジャンプ先アドレスはジャン
プ先アドレス生成部1で生成される。ジャンプ先アドレ
ス生成部1には、ハードウェアコストを考慮して、出現
頻度が高い BRA命令, BSR命令, Bcc命令を高速処理す
るための二つの加算器、即ち前述の第1加算器5及び
2加算器6がインプリメントされている。
【0208】第2加算器6は、主としてGフォーマット
の BRA命令, BSR命令, Bcc命令の分岐先アドレスを計
算するために使用される。これらの命令では、命令コー
ドのbit(6:7)が分岐変位サイズを指定するフィールドに
なっている。従って、第2加算器6の入力ラッチ8はこ
の2bit の値に従って分岐変位フィールドを選択し、32
ビットに拡張して取り込むように構成されている。
【0209】第1加算器5はDフォーマットの BRA命
令, BSR命令, Bcc命令の分岐先アドレスを計算するた
めに使用される。Dフォーマットの分岐命令では、命令
コードのbit(6:7)が命令を区別するためのフィールドに
割り当てられているため第2加算器6では対処出来な
い。このため、Dフォーマット専用の加算器として第1
加算器5が備えられている。このように、出現頻度が高
いジャンプ命令を高速処理することが可能なようにハー
ドウェア構成が設計されている。
【0210】なお、 BRA命令, BSR命令, Bcc命令以外
のPC相対で分岐先アドレスが指定される命令では、上述
の第1加算器5及び第2加算器6で命令のデコードと並
行して分岐先アドレスが計算できる場合はそのサイクル
で分岐先アドレスが計算されるが、そうでない場合には
分岐命令をデコードして分岐変位を切り出した後に分岐
先アドレスの計算が行われるようになっている。
【0211】処理方法による先行ジャンプ処理対象のジ
ャンプ命令の分類を表3にまとめて示す。各先行ジャン
プ処理の処理方法について以下で説明する。但し、プリ
リターン処理に関しては本発明では特に重要ではないの
で詳しい説明は行わない。
【0212】
【表3】
【0213】図49は、命令フェッチ部111, 命令デコー
ド部112, PC処理部116, オペランドアドレス計算部11
5, 整数演算部117 相互間で先行ジャンプ処理, あるい
は実行ステージジャンプ等の命令処理シーケンス制御関
連の制御信号及びジャンプ先アドレスの受渡しの関係を
示すブロック図である。
【0214】(5.1) 「Dステージ無条件プリジャンプ」 BRA命令, BSR命令, ジャンプ先アドレスが絶対モード
あるいはPC相対間接モード (32ビット変位) で示される
JMP命令及び JSR命令では、Dステージ132 で無条件プ
リジャンプ処理が行われる。これらの各命令の処理に際
しては、命令のデコードサイクルにおいてジャンプ先ア
ドレス生成部1において有効なジャンプ先アドレス生成
が行われる。
【0215】命令デコード部112 は、これらの命令をデ
コードした場合には、DJMPAREQ信号301 を”1”にする
ことによりDステージ無条件プリジャンプ要求を命令フ
ェッチ部111 に伝える。また、命令デコード部112 は、
JAバス208 に出力するジャンプ先アドレスの格納位置を
選択するための JASEL信号313 をPC処理部116 に出力す
る。命令フェッチ部111 は各ステージからのジャンプ要
求を調停し、Dステージでの無条件プリジャンプ要求が
受け付け可能な場合には、DPJMPACK信号305 を”1”に
することにより、Dステージ無条件プリジャンプ要求を
受け付けたことを、命令デコード部112 及びPC処理部11
6 に伝える。命令デコード部112 は、DPJMPACK信号305
が”1”になるまでDJMPAREQ信号301 を”1”に維持す
る。
【0216】DPJMPACK信号305 が”1”になると、PC処
理部116 では JASEL信号313 により選択されたジャンプ
先アドレス生成部1内の出力ラッチの値をJAバス208 に
出力し、命令フェッチ部111 に転送する。
【0217】命令フェッチ部111 は、JAバス208 から取
り込まれたジャンプ先アドレスに従って命令フェッチ処
理を開始し、フェッチされた命令を命令デコード部112
に出力中であった側の命令キューに取り込む。また、命
令フェッチ部111 はJAバス208 から取り込まれたジャン
プ先アドレスに従って命令キューの入出力ポインタ及び
命令キュー取り込みアドレスレジスタが初期化される。
【0218】命令デコード部112 はDPJMPACK信号305
が”1”になったことにより、PCINIT信号314 を”1”
にして、PC処理部116 にPC値の初期化を指示する。PCIN
IT信号314 が”1”になると、PC処理部116 はJAバス20
8 上の値をTPC 27及びDPC 29に取り込んで初期化を行
う。命令デコード部112 はこれらの処理を行った後に、
命令コード待ち状態になり、有効な命令コードが取り込
まれて命令フェッチ部111から転送され次第、ジャンプ
先命令のデコードを行う。また、命令デコード部112
は、ジャンプアドレスが奇数アドレスであるか否かの判
定を行い、奇数アドレスにジャンプしたか否かを示す情
報をDコード141 として転送する。
【0219】BRA命令及びジャンプ先アドレスが絶対モ
ードまたはPC相対間接モード (32ビット変位) で示され
る JMP命令では、OAJTが検出された場合を除いて、 BRA
命令, JMP命令に対してDコード141 あるいはAコード
142 の出力は行われず、Dステージ132 で命令の処理が
終了する。
【0220】(5.2) 「Aステージ無条件プリジャンプ」 ジャンプ先アドレスが絶対モード及びPC相対モード (32
ビット変位) 以外のアドレッシングモードで示される J
MP命令及び JSR命令の処理に際してはAステージ133 で
無条件プリジャンプ処理が行われる。
【0221】命令デコード部112 がこれらの命令をデコ
ードすると、Aステージ133 で無条件プリジャンプを行
うことを示す情報がAコード142 としてオペランドアド
レス計算部115 に送られる。この場合、パイプラインの
処理シーケンスが変更されるため、命令デコード部112
はデコード処理を一時中断する。これらの命令の処理に
際しては、オペランドアドレス計算部115 においてジャ
ンプ先アドレスが計算される。なお、多段間接モードを
用いてジャンプ先のアドレスを指定することも可能であ
る。
【0222】オペランドアドレス計算部115 は、有効な
ジャンプ先アドレスが計算されるサイクルにおいてAJMP
AREQ信号308 を”1”にすることによりAステージ無条
件プリジャンプ要求を命令フェッチ部111 に伝える。命
令フェッチ部111 は各ステージからのジャンプ要求を調
停し、Aステージ無条件プリジャンプ要求が受け付け可
能な場合には、APJMPACK信号307 を”1”にすることに
より、Aステージ無条件プリジャンプ要求を受け付けた
ことを、命令デコード部112 及びPC処理部116に伝え
る。
【0223】オペランドアドレス計算部115 は、APJMPA
CK信号307 が”1”になるまでAJMPAREQ信号308 を”
1”に維持する。オペランドアドレス計算部115 では、
APJMPACK信号307 が”1”になると、ジャンプ先アドレ
スを示すAOラッチ65の値をJAバス208 に出力し、命令フ
ェッチ部111 に転送する。命令フェッチ部111 は、JAバ
ス208 から取り込まれたジャンプ先アドレスに従って命
令フェッチ処理を開始し、フェッチされた命令を命令デ
コード部112 に出力中であった側の命令キューに取り込
む。また、命令フェッチ部111 はJAバス208 から取り込
まれたジャンプ先アドレスに従って命令キューの入出力
ポインタや命令キュー取り込みアドレスレジスタの初期
化を行う。
【0224】命令デコード部112 はAPJMPACK信号307
が”1”になったことにより、中断されていた命令デコ
ード処理を再開すると共に、PCINIT信号314 を”1”に
して、PC処理部116 にPC値の初期化を指示する。PCINIT
信号314 が”1”になると、PC処理部116 はJAバス208
上の値をTPC 27及びDPC 29に取り込んで初期化する。命
令デコード部112 はこれらの処理を行った後、命令コー
ド待ち状態になり、有効な命令コードが取り込まれて命
令フェッチ部111 から転送され次第、ジャンプ先命令の
デコードを行う。
【0225】また、オペランドアドレス計算部115 は、
ジャンプアドレスが奇数アドレスであるか否かの判定を
行い、奇数アドレスにジャンプしたか否かを示す情報を
Rコード143 として転送する。
【0226】ジャンプ先アドレスが絶対モードまたはPC
相対間接モード (32ビット変位) 以外のモードで示され
る JMP命令の処理に際しては、 JMP命令に対してRコー
ド143 もFコード144 も出力されず、Aステージ133 で
命令の処理が終了する。
【0227】(5.3) 「Dステージ条件プリジャンプ」 Bcc命令の処理に際して分岐すると予測された場合及び
ACB命令, SCB命令の処理に際しては、Dステージ132
で条件プリジャンプ処理が行われる。条件プリジャンプ
では、命令デコード部112 が分岐変位を取り込むサイク
ルにおいてジャンプ先アドレス生成部1の2つの加算器
5, 6のいずれで分岐先アドレスが計算されるか否かに
応じて以降の処理が異なる。
【0228】分岐変位を取り込むサイクルにおいて分岐
先アドレスが計算される場合では、命令デコード部112
は、これらの命令をデコードすると、DJMPCREQ信号302
を”1”にすることによりDステージ条件プリジャンプ
要求を命令フェッチ部111 に伝える。また、命令デコー
ド部112 は、JAバス208 に出力するジャンプ先アドレス
の格納位置を選択するための JASEL信号313 をPC処理部
116 に出力する。
【0229】他方、分岐変位を取り込むサイクルにおい
て分岐先アドレスを計算することが出来ない場合には、
そのサイクルにおいて分岐変位の切り出し処理のみが行
われる。切り出された分岐変位はDISPバス205 を介して
ジャンプ先アドレス生成部1に送られる。また、LDDISP
信号315 は”1”に維持される。このサイクルにおいて
は、PC加算器23による加算結果はDPC 29に書き戻される
ことはなく、DPC 29はジャンプ命令のPC値を保持してい
る。
【0230】ジャンプ先アドレス生成部1は、次のサイ
クルにおいて分岐先アドレスを計算する。LDDISP信号31
5 が”1”になっていることにより、第1加算器5の入
力ラッチ7にはIIバス204 の代わりにDISPバス205 から
分岐変位が取り込まれる。第1加算器5においてこの分
岐変位とDPC 29の値とが加算され、計算された分岐先ア
ドレスの値が出力ラッチ10に取り込まれる。命令デコー
ド部112 は、このサイクルにおいてDJMPCREQ信号302
を”1”にすることによりDステージ条件プリジャンプ
要求を命令フェッチ部111 に伝える。また、出力ラッチ
10を選択する値がJASEL信号313 としてPC処理部116 に
出力される。
【0231】以後の処理はいずれの場合も同一である。
命令フェッチ部111 は各ステージからのジャンプ要求を
調停し、Dステージ条件プリジャンプ要求が受け付け可
能な場合には、DPJMPACK信号305 を”1”にすることに
より、Dステージ条件プリジャンプ要求を受け付けたこ
とを命令デコード部112 及びPC処理部116 に伝える。
【0232】命令フェッチ部111 は2本の命令キューと
1つのアドレス退避機構(QINPCC)88を備えており、2つ
の条件分岐命令に関して3つのシーケンスの情報を保持
できるように構成されている。既に3つのシーケンス情
報が取り込まれている場合には、整数演算部117 から先
行する条件分岐命令の分岐予測ヒット/ミスが伝えられ
るまで、Dステージ条件プリジャンプ要求を受け付けな
い。命令デコード部112 はDPJMPACK信号305 が”1”に
なるまでDJMPCREQ信号302 を”1”に維持する。
【0233】DPJMPACK信号305 が”1”になると、PC処
理部116 では JASEL信号313 により選択されたジャンプ
先アドレス生成部1内の出力ラッチの値をJAバス208 に
出力して命令フェッチ部111 に転送する。
【0234】命令フェッチ部111 が1つのシーケンス情
報のみを保持している場合には、命令フェッチ部111 は
命令キューの切り替え処理を行う。現在使用中の命令キ
ューA83または命令キューB84の内容と、命令キュー取
り込みアドレスを保持する2つのレジスタQINPCA86また
はQINPCB87の値と、命令キューの入出力ポインタ値とを
保持したままで、命令フェッチ部111 はJAバス208 から
取り込まれたジャンプ先アドレスに従って命令フェッチ
処理を開始し、フェッチされた命令を未使用であった側
の命令キューに取り込んで命令デコード部112 に出力す
る。また、JAバス208 から取り込まれたジャンプ先アド
レスに従って、未使用であった側の命令キューの入出力
ポインタ及び命令キュー取り込みアドレスレジスタを初
期化する。命令フェッチ部111 は、分岐先命令側のシー
ケンス命令を優先的にフェッチし、命令キューがフルに
なっている期間を利用して条件分岐命令に引き続く側の
シーケンスの命令フェッチを行う。
【0235】命令フェッチ部111 が既に2つのシーケン
ス情報を保持している場合には、命令フェッチ部111 は
JAバス208 から取り込まれたジャンプ先アドレスをQINP
CC88及び入出力ポインタ部85に退避しておき、命令キュ
ーの切り替え処理をペンディング状態にする。先行する
条件分岐命令の分岐条件が確定し、分岐予測が的中して
いた場合には、ペンディングになっていた処理が再開さ
れる。予測が外れていた場合には、QINPCC88に退避され
ていたアドレス値も無効化される。
【0236】命令デコード部112 はDPJMPACK信号305
が”1”になったことにより、PCINIT信号314 を”1”
にして、PC処理部116 にPC値の初期化を指示する。PCIN
IT信号314 が”1”になると、PC処理部116 はJAバス20
8 上の値をTPC 27及びDPC 29に取り込んで初期化する。
命令デコード部112 はこれらの処理を行った後、命令コ
ード待ち状態になり、有効な命令コードが取り込まれて
命令フェッチ部111 から転送され次第、ジャンプ先命令
のデコードを行う。
【0237】また、命令デコード部112 はジャンプアド
レスが奇数アドレスであるか否かの判定を行い、奇数ア
ドレスにジャンプしたか否かを示す情報をDコード141
として転送する。
【0238】命令フェッチ部111 では、条件プリジャン
プ処理を行った条件分岐命令がEステージ135 で処理さ
れ分岐条件が確定するまで、予測された側のシーケンス
のフェッチを優先的に行うが、命令キューがフルになっ
ている期間には元のシーケンスのフェッチも継続して行
う。
【0239】条件プリジャンプ処理を行った命令の処理
に際しては、分岐予測が外れた場合にPC計算部2の初期
化を行う必要があるので、Aステージ133 で条件分岐命
令の次の命令アドレスを計算する。この処理は、ATPC28
の値をIXバス206, アドレス加算器61, AOバス216 を介
して整数演算部117 に転送することにより行われる。
【0240】条件プリジャンプ処理を行った条件分岐命
令の分岐条件判定はEステージ135で行われる。分岐予
測が的中していた場合には、整数演算部117 は QCANCEL
信号312 を”1”にすることにより、命令フェッチ部11
1 に条件分岐命令に引き続くシーケンス情報を無効化す
ることを伝える。 QCANCEL信号312 が”1”になると、
命令フェッチ部111 は条件分岐命令に引き続くシーケン
ス側の命令キューを開放する。QINPCC88にアドレスが退
避されていた場合には、その情報で無効化された側の命
令キューに関する情報が初期化される。パイプライン中
で処理中の命令処理はそのまま継続される。分岐予測が
外れていた場合には、命令キューの切り替え処理が行わ
れる。
【0241】整数演算部117 はQEXCHG信号311 を”1”
にする事により命令フェッチ部111に分岐予測が外れた
ことを通知する。また、整数演算部117 は、Dステージ
132以降のパイプライン処理を無効化するためにINIT信
号300 を”1”にすると共に、PC計算部2の初期化を行
うためにJAバス208 に条件分岐命令の次の命令のPC値を
出力する。パイプライン機構のDステージ132 以降の各
ステージでは、INIT信号300 が”1”になったことを受
けて初期化される。
【0242】QEXCHG信号311 が”1”になると、命令フ
ェッチ部111 は分岐先シーケンス側の命令キューを開放
し、条件分岐命令に引き続くシーケンス側のフェッチを
行い、命令コードを命令デコード部112 に送る。QINPCC
88にアドレスが退避されていた場合にはQINPCC88の無効
化も行われる。条件分岐命令に引き続くシーケンス側の
命令キューには既に命令コードが取り込まれている場合
が多い。
【0243】命令デコード部112 は、INIT信号300 が”
1”になったことを受けて初期化を行うと共に、PCINIT
信号314 を”1”にすることによりPC計算部2の初期化
を指示する。PCINIT信号314 が”1”になると、PC処理
部116 はJAバス208 上の値をTPC 27及びDPC 29に取り込
んで初期化する。
【0244】 (5.4) 「Dステージ分岐先命令プリフェッチ」 Bcc命令で分岐しないと予測された場合には、Dステー
ジ132 で分岐先命令プリフェッチ処理が行われる。この
場合、分岐先アドレスは命令デコードサイクルにおいて
ジャンプ先アドレス生成部1の2つの加算器5,6のい
ずれかで分岐先アドレスが計算される。
【0245】命令デコード部112 は Bcc命令をデコード
し、且つ過去の分岐履歴により分岐が発生しないと予測
されていた場合には、DPFETREQ信号303 を”1”にする
ことによりDステージ分岐先命令プリフェッチ要求を命
令フェッチ部111 に伝える。また、命令デコード部112
は、JAバス208 に出力するジャンプ先アドレスの格納位
置を選択するための JASEL信号313 をPC処理部116 に出
力する。
【0246】命令フェッチ部111 は各ステージからのジ
ャンプ要求を調停し、Dステージ分岐先命令プリフェッ
チ要求が受け付け可能な場合には、DPJMPACK信号305
を”1”にすることによりDステージ分岐先命令プリフ
ェッチ要求を受け付けたことを命令デコード部112 及び
PC処理部116 に伝える。
【0247】命令フェッチ部111 は、前述のように2つ
の条件分岐命令に関して3つのシーケンスの情報を保持
出来るようになっている。既に3つのシーケンス情報が
取り込まれている場合には、整数演算部117 から先行す
る条件分岐命令の分岐予測ヒット/ミスが伝えられるま
で、命令フェッチ部111 はDステージ条件プリジャンプ
要求を受け付けない。命令デコード部112 はDPJMPACK信
号305 が”1”になるまでDPFETREQ信号303 を”1”に
維持する。
【0248】DPJMPACK信号305 が”1”になると、PC処
理部116 ではJASEL 信号313 により選択されたジャンプ
先アドレス生成部1内の出力ラッチの値をJAバス208 に
出力して命令フェッチ部111 に転送する。
【0249】命令フェッチ部111 が1つのシーケンス情
報のみを保持している場合には、命令フェッチ部111 は
JAバス208 から取り込まれたジャンプ先アドレスに従っ
て、使用中でない側の命令キューのフェッチアドレスレ
ジスタQINPCA86またはQINPCB87と、命令キューの入出力
ポインタ値とを初期化する。現在使用中の命令キューA
83または命令キューB84は引き続く命令のフェッチを行
い、取り込んだ命令を命令デコード部112 に出力する。
命令フェッチ部111 は、条件分岐命令に引き続く側のシ
ーケンス命令を優先的にフェッチし、命令キューがフル
になっている期間を利用して分岐先の命令フェッチを行
う。
【0250】命令フェッチ部111 が既に2つのシーケン
ス情報を保持している場合には、命令フェッチ部111 は
JAバス208 から取り込まれたジャンプ先アドレスをQINP
CC88及び入出力ポインタ部85に退避しておき、命令キュ
ーのプリフェッチ処理をペンディング状態にしておく。
先行する条件分岐命令の分岐条件が確定し、分岐予測が
的中していた場合には、ペンディングになっていた処理
が再開される。予測が外れていた場合には、QINPCC88に
退避されていたアドレス値も無効化される。
【0251】分岐先命令プリフェッチでは、パイプライ
ン処理を行うシーケンス自身は変化しないので、PC処理
部116 はPC値の初期化は行わない。命令デコード部112
は引き続く命令の処理を行う。この場合は、処理シーケ
ンスの切り替えは行わないので、命令デコード部112 で
はジャンプアドレスが奇数アドレスであるか否かの判定
は行われない。
【0252】分岐先命令プリフェッチ処理を行った命令
では、分岐予測が外れた場合にPC計算部2の初期化を行
う必要があるので、Aステージ133 で再び分岐先アドレ
スの計算が行われる。この処理は、IXバス206 を介して
入力されたAPC 30の値と、DISPバス205, DISPラッチ67
を介して命令デコード部112 より取り込まれた分岐変位
の値とを加算することにより行われる。
【0253】分岐先命令プリフェッチ処理を行った条件
分岐命令の分岐条件判定はEステージ135 で行われる。
分岐予測が的中していた場合には、整数演算部117 はQC
ANCEL 信号312 を”1”にすることにより命令フェッチ
部111 に分岐先命令に引き続くシーケンス情報を無効化
することを伝える。QCANCEL 信号312 が”1”になる
と、命令フェッチ部111 は分岐先命令に引き続くシーケ
ンス側の命令キューを開放する。QINPCC88にアドレスが
退避されていた場合には、その情報で無効化された側の
命令キューに関する情報が初期化される。パイプライン
中で処理中の命令処理はそのまま継続される。
【0254】分岐予測が外れていた場合には、命令キュ
ーの切り替え処理が行われる。整数演算部117 は、QEXC
HG信号311 を”1”にすることにより命令フェッチ部11
1 に分岐予測が外れたことを通知する。また、整数演算
部117 は、Dステージ132 以降のパイプライン処理を無
効化するためにINIT信号300 を”1”にすると共に、PC
計算部2の初期化を行うためにJAバス208 に分岐先アド
レスを出力する。パイプライン処理機構のDステージ13
2 以降のパイプライン処理を行う各ステージは、INIT信
号300 が”1”になったことを受けて初期化される。
【0255】QEXCHG信号311 が”1”になると、命令フ
ェッチ部111 は条件分岐命令に引き続くシーケンス側の
命令キューを開放し、分岐先命令に引き続くシーケンス
側のフェッチを行って命令コードを命令デコード部112
に送る。QINPCC88にアドレスが退避されていた場合には
QINPCC88は無効化される。条件分岐命令に引き続くシー
ケンス側の命令キューには既に命令コードが取り込まれ
ている場合が多い。
【0256】命令デコード部112 は、INIT信号300 が”
1”になったことを受けて初期化を行うと共に、PCINIT
信号314 を”1”にすることによりPC計算部2の初期化
を指示する。PCINIT信号314 が”1”になると、PC処理
部116 はJAバス208 上の値をTPC 27及びDPC 29に取り込
んで初期化する。
【0257】 (5.5) 「Aステージ分岐先命令プリフェッチ」 FBcc命令の処理に際しては、Aステージ133 で分岐先命
令プリフェッチ処理が行われる。Dステージ132 ではな
くAステージ133 で分岐先命令のプリフェッチ処理が行
われる理由は、FBcc命令では命令デコードサイクルにお
いてはジャンプ先アドレス生成部1の2つの加算器5,
6のいずれかで分岐先アドレスを計算することが出来な
いためである。
【0258】命令デコード部112 はFBcc命令をデコード
すると、Aステージ133 で分岐先命令プリフェッチを行
うことを示す情報をAコード142 としてオペランドアド
レス計算部115 に送る。この場合、命令フェッチ部111
に出力される先行ジャンプ処理要求が命令の処理順序に
なるように、命令デコード部112 はこの命令のプリフェ
ッチ要求が受け付けられるまで、Dステージ132 での先
行ジャンプ処理の要求を命令フェッチ部111 に出力する
ことを抑止する。
【0259】Aステージ133 で分岐先命令プリフェッチ
処理を行う命令では、Aステージ133 で分岐先アドレス
の計算が行われる。この処理は、IXバス206 を介して入
力されたAPC 30の値と、DISPバス205 及びDISPラッチ67
を介して命令デコード部112より取り込まれた分岐変位
の値とを加算することにより行われる。
【0260】オペランドアドレス計算部115 は、分岐先
アドレスが計算されるサイクルにおいて、APFETREQ信号
309 を”1”にすることによりAステージ分岐先命令プ
リフェッチ要求を命令フェッチ部111 に伝える。
【0261】命令フェッチ部111 は各ステージからのジ
ャンプ要求を調停し、Aステージ分岐先プリフェッチ要
求が受け付け可能な場合には、APJMPACK信号307 を”
1”にすることにより、Aステージ分岐先命令プリフェ
ッチ要求を受け付けたことを命令デコード部112 及びオ
ペランドアドレス計算部115 に伝える。オペランドアド
レス計算部115 は、APJMPACK信号307 が”1”になるま
でAPFETREQ信号309 を”1”に維持する。
【0262】APJMPACK信号307 が”1”になると、オペ
ランドアドレス計算部115 ではAOラッチ65の値をJAバス
208 に出力して命令フェッチ部111 に転送する。命令フ
ェッチ部111 内部の処理はDステージ分岐先命令プリフ
ェッチの場合と同様である。分岐予測が外れた場合にPC
計算部2の初期化を行う必要があるので、この分岐先ア
ドレスはAOバス216 を介して整数演算部117 にも転送さ
れる。
【0263】また、命令デコード部112 はDPJMPACK信号
305 が”1”になったことによりDステージ132 での先
行ジャンプ処理の抑止を解除する。分岐先命令プリフェ
ッチでは、パイプライン処理を行うシーケンス自身は変
化しないので、PC処理部116はPC値の初期化は行われな
い。この場合は、処理シーケンスの切り替えは行われな
いため、オペランドアドレス計算部115 ではジャンプア
ドレスが奇数アドレスであるか否かの判定は行われな
い。
【0264】分岐先命令プリフェッチ処理を行った条件
分岐命令の分岐条件判定はEステージ135 で行われる。
Eステージ135 での処理はDステージ分岐先命令プリフ
ェッチを行った場合の処理とまったく同一である。
【0265】(6) 「各ジャンプ命令の処理方法」 各ジャンプ命令について、それぞれの処理方法を以下に
詳しく説明する。
【0266】(6.1) 「 BRA命令」 BRA命令の命令フォーマットは図31, 図32に示されてい
るが、この命令は1サイクルでデコードされる。図50の
模式図に BRA命令処理時のIIバス204 上の分岐変位位置
を示す。図50(a) はDフォーマットの場合を、図50(b)
〜図50(d) はGフォーマットの分岐変位がそれぞれ8ビ
ット, 16ビット, 32ビットの場合をそれぞれ示してい
る。これらと図48とを比較すれば明らかなように、全て
の場合について命令デコード時に分岐先アドレスの計算
が可能である。
【0267】BRA命令処理時のタイミングを図54のタイ
ミングチャートに示す。図54(b) に示されているよう
に、Dステージ132 ではC1サイクルにおいて命令デコ
ード部112 が BRA命令のデコードを行うと共に、ジャン
プ先アドレス生成部1が分岐先アドレスの計算を行う。
Dフォーマットの場合には第1加算器5で、Gフォーマ
ットの場合には第2加算器6でそれぞれ分岐先アドレス
が計算される。Gフォーマットでは、II(6:7) は分岐変
位サイズフィールドとして割り付けられている。前述の
ように、分岐変位はII(6:7) がそれぞれ”00”では8ビ
ット、”01”では16ビット、”10”では32ビットで指定
される。
【0268】入力ラッチ8は、II(6:7) =”00”である
場合はII(24:31) を32ビットに符号拡張したデータを、
II(6:7) =”01”である場合はII(16:31) を32ビットに
符号拡張したデータを、II(6:7) =”10”である場合は
II(16:47) をそのままそれぞれ取り込む。従って、全て
の場合について正しい分岐変位が32ビットに符号拡張さ
れて入力ラッチ8に取込まれ、正しい分岐先アドレスが
第2加算器6で計算される。
【0269】デコードされた命令が BRA命令であるた
め、C1サイクルにおいてDステージ無条件プリジャン
プ処理が行われる。 BRA命令の処理はDステージ132 で
終了し、Dコード141 もAコード142 も出力されない。
図54(a) に示されているように、C2サイクルにおいて
IFステージ131 で分岐先の命令フェッチが行われ、キャ
ッシュヒット時には、図54(b) に示されているように、
C3サイクルにおいて分岐先の命令のデコードが開始さ
れる。即ち、キャッシュヒット時には2サイクルで BRA
命令の処理が終了する。
【0270】(6.2) 「 BSR命令」 BSR命令の命令フォーマットは図35, 図36に示されてい
るが、この命令は1サイクルでデコードされる。 BSR命
令処理時のIIバス204 上の分岐変位位置は BRA命令と同
一であり、図50に示されている。 BSR命令でも BRA命令
の場合と同様に全ての場合について命令デコード時に分
岐先アドレスの計算が可能である。
【0271】BSR命令処理時のタイミングを図55のタイ
ミングチャートに示す。図55(b) に示されているよう
に、Dステージ132 ではC1サイクルにおいて命令デコ
ード部112 が BSR命令のデコードを行うと共に、ジャン
プ先アドレス生成部1が分岐先アドレスの計算を行う。
【0272】デコードされた命令が BSR命令であるた
め、C1サイクルにおいてDステージ無条件ジャンプ処
理が行われる。図55(a) に示されているように、C2サ
イクルにおいて分岐先の命令フェッチが行われる。この
際、Aステージ133 ではサブルーチンからの戻り先アド
レスの計算が行われる。この処理はPC計算部2内のATPC
28の値をIXバス206 及びアドレス加算器61を介して転送
することにより行われる。図55(e) に示されているよう
に、C4サイクルにおいて戻り先アドレスの値がPCスタ
ック201 に登録される。図55(f) に示されているよう
に、C5サイクルにおいて戻り先アドレスのキャッシュ
及びメモリへの書き込みが行われる。メモリへの書き込
みは、最低2クロックサイクル必要である。
【0273】キャッシュヒット時には、図55(b) に示さ
れているように、C3サイクルにおいて分岐先の命令の
デコードを開始することができる。従って、キャッシュ
ヒット時には2サイクルで BSR命令の処理が終了する。
【0274】(6.3) 「 Bcc命令」 Bcc命令の命令フォーマットは図33, 図34に示されてい
るが、この命令は1サイクルでデコードされる。 Bcc命
令処理時のIIバス204 上の分岐変位位置は BRA命令と同
一であり、図50に示されている。 Bcc命令でも BRA命令
の場合と同様に全ての場合について命令デコード時に分
岐先アドレスの計算が可能である。
【0275】Bcc命令処理時のタイミングを図56(A),
(B)のタイミングチャートに示す。C1サイクルにおい
て命令デコード部112 はDPC 29のアドレスに従って分岐
履歴テーブルの検索を行い、次にデコードされる Bcc命
令の分岐予測を行う。C1サイクルの前半ではDPC 29に
は Bcc命令の直前にデコードされた命令のアドレスが格
納されている。即ち、 Bcc命令の分岐予測は Bcc命令の
直前に処理した命令のアドレスで行われる。この処理
は、命令をデコードする前に行うため、デコードサイク
ルの都度行われており、次の命令が Bcc命令である場合
にのみ有効な情報が出力される。 Bcc命令に関しては整
数演算部117 内の制御レジスタにより分岐しないと静的
に予測するように設定することも可能である。分岐予測
を行わない場合には、分岐履歴テーブルから読み出され
た値にはよらずに強制的に分岐予測結果を分岐しないこ
とを示す値にする。
【0276】図56(A) は、分岐しないと予測された場合
のタイミングチャートである。図56(A)(b)に示されてい
るように、C2サイクルにおいて命令デコード部112 は
Bcc命令のデコードを行うと共に、ジャンプ先アドレス
生成部1は分岐先アドレスの計算を行う。分岐しないと
予測された場合には図56(A)(b)に示されているように、
C2サイクルにおいてDステージ分岐先命令プリフェッ
チ処理が行われる。図56(A)(c)に示されているように、
C3サイクルにおいてAステージ133 では Bcc命令の分
岐先アドレスが計算される。C5サイクルにおいて分岐
条件の判定が行われ、分岐予測が的中しており分岐しな
かった場合には、命令フェッチ部111 は分岐先のシーケ
ンス側の命令キューの無効化を行う。この場合、1サイ
クルで Bcc命令の処理が終了する。分岐予測が外れてい
た場合には、命令フェッチ部111は条件分岐命令に引き
続くシーケンス側の命令キューが無効化され、処理シー
ケンスの切り替えが行われる。また、分岐履歴テーブル
の更新処理も行われる。C5サイクルにおいてステップ
PC転送部3のOLDPC 36には Bcc命令の直前に実行された
命令のアドレスが格納されており、その値で分岐履歴テ
ーブルの更新が行われる。C5サイクルにおいて命令キ
ューに既に分岐先の命令がフェッチされていた場合に
は、 Bcc命令の処理に見かけ上4サイクルが費やされた
ことになる。
【0277】図56(B) は、分岐すると予測された場合の
タイミングチャートである。図56(B)(b)に示されている
ように、C2サイクルにおいて命令デコード部112 は B
cc命令のデコードを行うと共に、ジャンプ先アドレス生
成部1は分岐先アドレスの計算を行う。分岐すると予測
された場合にはC2サイクルにおいてDステージ条件プ
リジャンプ処理が行われる。図56(A)(c)に示されている
ように、C3サイクルにおいてAステージ133 ではその
サイクルの開始時にATPC28に保持されているアドレスを
転送することにより Bcc命令の次の命令のPC値が計算さ
れる。C5サイクルにおいて分岐条件の判定が行われ、
分岐予測が的中していた場合には命令フェッチ部111 は
条件分岐命令に引き続くシーケンス側の命令キューを無
効化する。この場合、キャッシュヒット時には2サイク
ルで Bcc命令の処理が終了する。分岐予測が外れて Bcc
命令に引き続く命令の処理を行わなければならない場合
には、命令フェッチ部111 は分岐先のシーケンス側の命
令キューを無効化し、処理シーケンスの切り替えを行
う。また、分岐履歴テーブルの更新処理も行われる。更
新処理は、分岐しないと予測して分岐が発生した場合と
同様である。C5サイクルにおいて命令キューに既に B
cc命令に引き続く命令が取り込まれていた場合には、 B
cc命令の処理に見かけ上は4サイクルが費やされたこと
になる。
【0278】(6.4) 「 JMP命令」 JMP命令は図37に示したように、ジャンプ先アドレスを
一般形アドレッシングモードで指定可能であるが、アド
レッシングモードに応じて先行ジャンプ処理を行うタイ
ミングが異なる。
【0279】まず、アドレッシングモードがPC相対間接
モード (32ビット変位) あるいは絶対モードである場合
について説明する。図51の模式図にジャンプ先アドレス
がPC相対間接モードあるいは絶対モードで指定される J
MP命令処理時のIIバス204 上の分岐変位及び絶対番地の
指定位置を示す。図51(a) 及び図51(b) はそれぞれPC相
対間接モードで分岐変位が16ビットである場合と32ビッ
トである場合とを示し、図51(c) 及び図51(d) はそれぞ
れ絶対モードでアドレスが16ビットで指定される場合と
32ビットで指定される場合とを示す。
【0280】JMP命令では BRA命令とは異なり、II(6:7)
は分岐変位サイズフィールドとして割り付けられてい
ない。アドレッシングモードがPC相対間接モードである
場合の分岐変位サイズは、II(14:15) に割り付けられて
おり、16ビット変位の場合は”01”に、32ビット変位の
場合は”10”にそれぞれなっている。 JMP命令ではII
(6:7) は常に”10”であるため、分岐変位が32ビットで
ある場合には第2加算器6で正しい分岐先アドレスが計
算されている。しかし、分岐変位が16ビットである場合
にはジャンプ先アドレス生成部1では正しいジャンプ先
アドレスを計算することが出来ない。
【0281】アドレッシングモードが絶対モードである
場合には、絶対アドレスのサイズがII(14:15) で指定さ
れており、16ビット変位である場合は”01”に、32ビッ
ト変位である場合は”10”にそれぞれなっている。入力
ラッチ9は、II(15)が”1”である場合にはII(16:31)
を32ビットに符号拡張したデータを取り込み、”0”で
ある場合にはII(16:47) をそのまま取り込むので、絶対
モードである場合には正しいジャンプ先アドレスが入力
ラッチ9, 出力ラッチ12にそれぞれ取り込まれる。
【0282】従って、絶対モードと分岐変位が32ビット
で指定されるPC相対間接モードの場合にのみ、命令デコ
ード時に分岐先アドレスの計算が可能になる。
【0283】ジャンプ先アドレスがPC相対間接モード
(32ビット変位) あるいは絶対モードで示される場合に
は、 JMP命令処理時のタイミングは図54に示されている
BRA命令の処理タイミングとまったく同一である。Dス
テージ132 ではC1サイクルにおいて命令デコード部11
2 が JMP命令のデコードを行うと共に、ジャンプ先アド
レス生成部1がジャンプ先アドレスの計算を行う。PC相
対間接モードで分岐変位が32ビットである場合には第2
加算器6でジャンプ先アドレスが計算される。絶対モー
ドである場合はジャンプ先アドレスが出力ラッチ12に32
ビットのアドレスとして保持される。
【0284】この場合、C1サイクルにおいてDステー
ジ無条件ジャンプ処理が行われる。処理方法は BRA命令
の場合とまったく同様である。 JMP命令の処理はDステ
ージ132 で終了し、Dコード141 もAコード142 も出力
されない。キャッシュヒット時には2サイクルで JMP命
令の処理が終了する。
【0285】次に、アドレッシングモードがPC相対間接
モード (32ビット変位) で指定された場合あるいは絶対
モード以外のモードで指定された場合について説明す
る。この場合は、ジャンプ先アドレスはジャンプ先アド
レス生成部1では計算できない。従って、この場合はA
ステージ無条件プリジャンプ処理が行われる。
【0286】ジャンプ先アドレスがPC相対間接モード
(32ビット変位) でも絶対モードでもないアドレッシン
グモードで指定された JMP命令処理時のタイミングチャ
ートを図57に示す。
【0287】図57(b) に示されているように、Dステー
ジ132 ではC1サイクルにおいて命令デコード部112 が
JMP命令のデコードを行う。図57(c) に示されているよ
うに、C2サイクルにおいてジャンプ先アドレスの計算
が行われ、Aステージ無条件プリジャンプ処理が行われ
る。 JMP命令の処理はAステージ133 で終了し、Rコー
ド143 もFコード144 も出力されない。図57(a) に示さ
れているように、C3サイクルにおいてIFステージ131
で分岐先の命令フェッチが行われ、キャッシュヒット時
には、図57(b) に示されているように、C4サイクルに
おいて分岐先の命令のデコードが開始される。即ち、キ
ャッシュヒット時には3サイクルで JMP命令の処理が終
了する。ジャンプ先アドレスが多段間接モードで指定さ
れている場合にはジャンプ先アドレスの計算が終了する
サイクルにおいてAステージ無条件ジャンプ処理が行わ
れるので、 JMP命令の処理時間は長くなる。
【0288】(6.5) 「 JSR命令」 JMP命令と同様に、 JSR命令もジャンプ先アドレスを一
般形アドレッシングモードで指定可能であり、アドレッ
シングモードに応じて先行ジャンプ処理を行うタイミン
グが異なる。まず、アドレッシングモードがPC相対間接
モード (32ビット変位) あるいは絶対モードである場合
について説明する。これらの場合には、 JMP命令と同様
に、命令デコード時に分岐先アドレスの計算が可能であ
る。
【0289】ジャンプ先アドレスがPC相対間接モードあ
るいは絶対モードで示される JSR命令処理時のIIバス20
4 上の分岐変位及び絶対アドレスの指定位置は図51に示
されている JMP命令処理時の場合と同様である。ジャン
プ先アドレスがPC相対間接モード (32ビット変位) ある
いは絶対モードで示される場合には、 JSR命令処理時の
タイミングは図55に示されている BSR命令の処理タイミ
ングとまったく同一である。
【0290】Dステージ132 ではC1サイクルにおいて
命令デコード部112 が JSR命令のデコードを行うと共
に、ジャンプ先アドレス生成部1がジャンプ先アドレス
の計算を行う。PC相対間接モードで分岐変位が32ビット
である場合には第2加算器6でジャンプ先アドレスが計
算される。絶対モードである場合はジャンプ先アドレス
が出力ラッチ12に32ビットのアドレスとして保持され
る。
【0291】C1サイクルにおいてDステージ無条件ジ
ャンプ処理が行われる。C2サイクルにおいて分岐先の
命令フェッチが行われる。この際、Aステージ133 では
サブルーチンからの戻り先アドレスが計算される。以後
の処理も BSR命令の場合とまったく同様である。キャッ
シュヒット時には2サイクルで JSR命令の処理が終了す
る。
【0292】次に、アドレッシングモードがPC相対間接
モード (32ビット変位) でも絶対モードでもないアドレ
ッシングモードで指定された場合について説明する。こ
の場合は、ジャンプ先アドレスはジャンプ先アドレス生
成部1では計算できない。従って、この場合はAステー
ジ無条件プリジャンプ処理が行われる。また、この場
合、Aステージ133 までは2つのステップコードに分解
されて処理され、Aステージ133 で1つのステップコー
ドにマージされて出力される。
【0293】ジャンプ先アドレスがPC相対間接モード
(32ビット変位) でも絶対モードでもないアドレッシン
グモードで指定された JSR命令処理時のタイミングチャ
ートを図58に示す。
【0294】図58(b) に示されているように、Dステー
ジ132 ではC1サイクルにおいて命令デコード部112 が
JSR命令のデコードを行う。図58(c) に示されているよ
うに、C2サイクルにおいてジャンプ先アドレスの計算
が行われ、Aステージ無条件プリジャンプ処理が行われ
る。C2サイクルにおいてはRコード143 とFコード14
4 の出力は行われない。Dステージ132 でC2サイクル
において戻り先アドレスの計算を行うための制御信号が
生成される。図58(c) に示されているように、Aステー
ジ133 でC3サイクルにおいてサブルーチンからの戻り
先アドレスの計算が行われ、Rコード143 とFコード14
4 とが出力される。C2サイクルにおいて奇数アドレス
ジャンプが検出された場合には、その情報がC3サイク
ルにおいて出力されるRコード143 に反映される。以後
の処理は BSR命令の場合とまったく同一である。
【0295】図58(a) に示されているように、C3サイ
クルにおいてIFステージ131 で分岐先の命令フェッチが
行われ、キャッシュヒット時には図58(b) に示されてい
るように、C4サイクルにおいて分岐先の命令のデコー
ドが開始される。即ち、キャッシュヒット時には3サイ
クルで JSR命令の処理が終了する。ジャンプ先アドレス
が多段間接モードで指定されている場合には、ジャンプ
先アドレスの計算が終了するサイクルにおいてAステー
ジ無条件ジャンプ処理が行われるため、 JSR命令の処理
時間は長くなる。
【0296】(6.6) 「ACB, SCB命令」 ACB命令及び SCB命令はループ制御のプリミティブとし
て用いられるため、これらの命令では静的に分岐すると
予測してDステージ条件プリジャンプ処理が行われる。
ACB, SCB命令では、図39〜図46に示されているように多
くのフォーマットを有するが、大きく分けて短縮形
(Q, Rフォーマット)と、一般形(G, Eフォーマッ
ト)に分類できる。短縮形フォーマットの場合は1サイ
クルでデコードは終了するが、一般形の場合は、オペラ
ンドの指定に多段間接モードが用いられていない場合で
も1命令のデコードに2または3サイクルの時間を要す
る。この場合、分岐変位の取り込み及び条件プリジャン
プ処理は最終デコードサイクルにおいて行われる。
【0297】図52(a), (b), (c), (d), (e), (f)の模式
図にそれぞれ、 ACB命令, SCB命令の最終デコードサイ
クル時のIIバス204 上の分岐変位位置を示す。短縮形フ
ォーマットの場合、分岐変位サイズフィールドはII(6:
7) ではなくbit(22:23)に割り付けられている。しかし
この場合は、II(6:7) は常に”11”である。図48と比較
して明らかなように、分岐変位フィールドで分岐先アド
レスの計算が可能であるのは、変位サイズが8ビットの
場合のみである。また、上述の命令ではbit(6:7)が”1
1”である場合には特に意味を持たない。従って、”1
1”を分岐変位が8であると意味付けして処理を行うこ
とにより、第2加算器6で分岐先アドレスが計算出来る
可能性を増加させている。
【0298】一般形フォーマットの場合、II(6:7) は分
岐変位サイズフィールドである。しかし、分岐変位が8
ビットで指定される場合の分岐変位フィールドの位置が
BRA命令等とは異なるため、命令デコードサイクルで分
岐先アドレスを計算することが出来ない。従って、短縮
形で変位サイズが8ビットである場合と、一般形で変位
サイズが16ビットあるいは32ビットである場合とにのみ
分岐変位の取り込みサイクルで分岐先アドレスの計算が
行われる。それ以外の場合には、分岐命令がデコードさ
れた後に命令デコードの際に切り出された分岐変位を用
いて分岐先アドレスの計算が行われる。このように、フ
ォーマット及び分岐変位サイズに応じて処理方法が異な
る。
【0299】一般形の場合、最終ステップ以外の処理で
はオペランドの退避処理が行われるだけであるため、短
縮形の命令について説明を行う。
【0300】まず、前者の場合について説明する。短縮
形で分岐変位が8ビットである場合の ACB命令処理時の
タイミングチャートを図59(A) に示す。
【0301】図59(A)(b)に示されているように、C1サ
イクルにおいて命令デコード部112は ACB命令のデコー
ドを行うと共に、ジャンプ先アドレス生成部1は分岐先
アドレスの計算を行う。C1サイクルにおいてDステー
ジ条件ジャンプ処理が行われる。C2サイクルにおい
て、 ACB命令の次の命令のPC値が計算される。図59(A)
(e)に示されているように、C4サイクルにおいて演算
が行われ、C5サイクルにおいて分岐条件の判定が行わ
れる。分岐予測が的中していた場合には、命令フェッチ
部111 は ACB命令に引き続く側のシーケンスの命令キュ
ーを無効化する。この場合、キャッシュヒット時には2
サイクルで ACB命令の処理が終了する。分岐予測が外れ
て ACB命令に引き続く命令の処理を行わなければならな
い場合には、C5サイクルにおいて処理シーケンスが元
に戻される。C5サイクルにおいて命令キューに既に A
CB命令に引き続く命令が取り込まれていた場合には ACB
命令の処理に見かけ上5サイクルが費やされたことにな
る。
【0302】次に、後者の場合について説明する。短縮
形で分岐変位が16ビットまたは32ビットである場合の A
CB命令処理時のタイミングチャートを図59(B) に示す。
【0303】図59(B)(b)に示されているように、C1サ
イクルにおいて命令デコード部112は ACB命令のデコー
ドを行うと共に、分岐変位フィールドの切り出しを行
う。C2サイクルにおいてAステージ133 で ACB命令の
次の命令のPC値が計算される。またDステージ132 で
は、切り出された分岐変位に基づいてジャンプ先アドレ
ス生成部1で分岐先アドレスの計算が行われ、Dステー
ジ条件ジャンプ処理が行われる。図59(B)(e)に示されて
いるように、C4サイクルにおいては演算が行われ、C
5サイクルにおいて分岐条件の判定が行われる。分岐予
測が的中していた場合には、命令フェッチ部111 は ACB
命令に引き続く側のシーケンスの命令キューを無効化す
る。この場合、キャッシュヒット時には3サイクルで A
CB命令の処理が終了する。分岐予測が外れて ACB命令に
引き続く命令の処理を行わなければならない場合には、
C5サイクルにおいて処理シーケンスが元に戻される。
C5サイクルにおいて命令キューに既に ACB命令に引き
続く命令が取り込まれていた場合には、 ACB命令の処理
に見かけ上5サイクルが費やされたことになる。
【0304】いずれの場合も、分岐先アドレスが奇数で
あり、且つ実際に分岐が発生した場合のみ、 ACB命令の
処理終了後に奇数アドレスジャンプトラップの処理が起
動される。
【0305】(6.7) 「FBcc命令」 FBcc命令は1サイクルでデコードされるが、図53(a),
(b), (c) の模式図にそれぞれsy =”00” : 8 ビッ
ト、sy =”01” : 16 ビット、sy =”10” : 32 ビット
の場合について示されているように、分岐変位のサイズ
には拘わらず、デコードするサイクルにおいて分岐先ア
ドレスを計算することは不可能である。また、この命令
では静的に分岐しないと予測して処理が行われる。条件
分岐命令では迅速に条件判定することが重要であり、分
岐しないと予測して処理が行われるため、ステップコー
ドを先に進めてAステージ133 で分岐先命令プリフェッ
チ処理が行われる。
【0306】図60に、FBcc命令処理時のタイミングチャ
ートを示す。図60(b) に示されているように、Dステー
ジ132 ではC1サイクルにおいて命令デコード部112 が
FBcc命令のデコードを行う。図60(c) に示されているよ
うに、C2サイクルにおいてAステージ133 で分岐先ア
ドレスが計算され、Aステージ分岐先命令プリフェッチ
処理が行われる。C4サイクルにおいて分岐条件の判定
が行われる。分岐予測が的中していた場合には、命令フ
ェッチ部111 は分岐先のシーケンスの命令キューを無効
化する。この場合、1サイクルでFBcc命令の処理が終了
する。分岐予測が外れて、分岐が発生する場合には、C
4サイクルにおいて処理シーケンスが切り替えられる。
C4サイクルにおいて命令キューに既に分岐先の命令が
取り込まれていた場合には、FBcc命令の処理に見かけ上
4サイクルが費やされたことになる。
【0307】いずれの場合も、分岐先アドレスが奇数で
あり、且つ実際に分岐が発生した場合のみ、FBcc命令の
処理終了後に奇数アドレスジャンプトラップの処理が起
動される。
【0308】なお上記実施例では、少ないハードウェア
コストで性能向上を図るために、データ処理装置におい
て特に使用頻度が高い BRA命令, BSR命令, Bcc命令を
主たる対象として処理すべく、命令デコード時に分岐先
アドレスを計算するための二つの加算器、即ち第1加算
器5及び第2加算器6をインプリメントしている。しか
し、16ビット変位の JMP命令, ACB命令, SCB命令、あ
るいはFBcc命令の分岐変位に対応してより多くの加算器
をインプリメントする構成を採ってもよいことは言うま
でもない。また、更にハードウェア量を削減する目的
で、第1加算器5または第2加算器6の一方のみをイン
プリメントする構成を採ってもよい。
【0309】また上記実施例では、分岐命令のデコード
処理と並行して分岐先アドレスを計算することができな
い場合の分岐先アドレスの計算を第1加算器5で行うよ
うに構成しているが、第2加算器6で行うようにしても
よいことは言うまでもない。なおこの場合、DISPバス20
5 を入力ラッチ7ではなく入力ラッチ8に結合し、入力
ラッチ8で選択的にラッチするようにする。
【0310】
【発明の効果】以上に詳述したように、本発明のデータ
処理装置の第1の発明によれば、多くの分岐命令の分岐
先アドレスの計算を従来に比して少量のハードウェアで
命令のデコードと並行して行えるので、分岐命令を高速
にパイプライン処理することが可能な高性能のデータ処
理装置を低コストで得ることが出来る。
【0311】また本発明のデータ処理装置の第の発明
によれば、絶対アドレスでジャンプ先アドレスが指定さ
れる複数のジャンプ命令の絶対アドレスフィールドの切
り出しを従来に比して少量のハードウェアで命令のデコ
ードと並行して行えるので、ジャンプ命令を高速にパイ
プライン処理することが可能な高性能のデータ処理装置
を低コストで得ることが出来る。
【図面の簡単な説明】
【図1】本発明のデータ処理装置の一実施例によるPC処
理部の構成を示すブロック図である。
【図2】本発明のデータ処理装置の一実施例によるPC処
理部の構成を示すブロック図である。
【図3】本発明のデータ処理装置の一実施例によるオペ
ランドアドレス計算部の構成を示すブロック図である。
【図4】本発明のデータ処理装置の一実施例を用いたシ
ステムの構成例を示すブロック図である。
【図5】本発明のデータ処理装置の一実施例の構成を示
すブロック図である。
【図6】本発明のデータ処理装置の一実施例によるパイ
プライン構成を示す模式図である。
【図7】本発明のデータ処理装置の一実施例による命令
フェッチ部の構成を示すブロック図である。
【図8】本発明のデータ処理装置の一実施例による命令
フォーマットを示す模式図である。
【図9】本発明のデータ処理装置の一実施例による命令
フォーマットを示す模式図である。
【図10】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図11】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図12】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図13】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図14】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図15】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図16】本発明のデータ処理装置の一実施例による命
令フォーマットを示す模式図である。
【図17】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図18】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図19】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図20】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図21】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図22】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図23】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図24】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図25】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図26】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図27】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図28】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図29】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図30】本発明のデータ処理装置の一実施例によるア
ドレッシングモードのフォーマットを示す模式図であ
る。
【図31】本発明のデータ処理装置の一実施例による B
RA命令のビットパターンを示す模式図である。
【図32】本発明のデータ処理装置の一実施例による B
RA命令のビットパターンを示す模式図である。
【図33】本発明のデータ処理装置の一実施例による B
cc命令のビットパターンを示す模式図である。
【図34】本発明のデータ処理装置の一実施例による B
cc命令のビットパターンを示す模式図である。
【図35】本発明のデータ処理装置の一実施例による B
SR命令のビットパターンを示す模式図である。
【図36】本発明のデータ処理装置の一実施例による B
SR命令のビットパターンを示す模式図である。
【図37】本発明のデータ処理装置の一実施例による J
MP命令のビットパターンを示す模式図である。
【図38】本発明のデータ処理装置の一実施例による J
SR命令のビットパターンを示す模式図である。
【図39】本発明のデータ処理装置の一実施例による A
CB命令のビットパターンを示す模式図である。
【図40】本発明のデータ処理装置の一実施例による A
CB命令のビットパターンを示す模式図である。
【図41】本発明のデータ処理装置の一実施例による A
CB命令のビットパターンを示す模式図である。
【図42】本発明のデータ処理装置の一実施例による A
CB命令のビットパターンを示す模式図である。
【図43】本発明のデータ処理装置の一実施例による S
CB命令のビットパターンを示す模式図である。
【図44】本発明のデータ処理装置の一実施例による S
CB命令のビットパターンを示す模式図である。
【図45】本発明のデータ処理装置の一実施例による S
CB命令のビットパターンを示す模式図である。
【図46】本発明のデータ処理装置の一実施例による S
CB命令のビットパターンを示す模式図である。
【図47】本発明のデータ処理装置の一実施例によるFB
cc命令のビットパターンを示す模式図である。
【図48】本発明のデータ処理装置の一実施例によるジ
ャンプ先アドレス生成部の各加算器に分岐変位として入
力されるIIバスのビット位置を示す模式図である。
【図49】本発明のデータ処理装置の一実施例による各
ブロック間でのジャンプ関連の制御信号及びジャンプ先
アドレスの受渡しの関係を示すブロック図である。
【図50】本発明のデータ処理装置の一実施例による B
RA, BSR, Bcc命令処理時のIIバス上の分岐変位位置を
示す模式図である。
【図51】本発明のデータ処理装置の一実施例によるJM
P, JSR命令処理時のIIバス上の分岐変位位置を示す模式
図である。
【図52】本発明のデータ処理装置の一実施例によるAC
B, SCB命令処理時のIIバス上の分岐変位位置を示す模式
図である。
【図53】本発明のデータ処理装置の一実施例によるFB
cc命令処理時のIIバス上の分岐変位位置を示す模式図で
ある。
【図54】本発明のデータ処理装置の一実施例による B
RA命令処理時のタイミングチャートである。
【図55】本発明のデータ処理装置の一実施例による B
SR命令処理時のタイミングチャートである。
【図56】本発明のデータ処理装置の一実施例による B
cc命令処理時のタイミングチャートである。
【図57】本発明のデータ処理装置の一実施例による J
MP命令処理時のタイミングチャートである。
【図58】本発明のデータ処理装置の一実施例による J
SR命令処理時のタイミングチャートである。
【図59】本発明のデータ処理装置の一実施例による A
CB命令処理時のタイミングチャートである。
【図60】本発明のデータ処理装置の一実施例によるFB
cc命令処理時のタイミングチャートである。
【図61】命令デコード段階でジャンプ先アドレスを生
成してジャンプ処理を行う従来のデータ処理装置のジャ
ンプ命令処理機構の構成を示すブロック図である。
【符号の説明】
1 ジャンプ先アドレス生成部 2 PC計算部 5 第1加算器 6 第2加算器 7 入力ラッチ 8 入力ラッチ 9 入力ラッチ 10 出力ラッチ 11 出力ラッチ 12 出力ラッチ 111 命令フェッチ部 112 命令デコード部 115 オペランドアドレス計算部 117 整数演算部 118 浮動小数点演算部 204 IIバス 208 JAバス

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 オペレーションコードフィールドと第1
    の分岐変位フィールドとを含み、自身の先頭アドレスに
    前記第1の分岐変位フィールドの値を加算したアドレス
    に分岐する第1の分岐命令と、オペレーションコードフ
    ィールドと第2の分岐変位フィールドとを含み、自身の
    先頭アドレスに前記第2の分岐変位フィールドの値を加
    算したアドレスに分岐する第2の分岐命令とを含む第1
    の分岐命令群の分岐命令と、オペレーションコードフィ
    ールドと第3の分岐変位フィールドとを含み、自身の
    頭アドレスに前記第3の分岐変位フィールドの値を加算
    したアドレスに分岐する第3の分岐命令を含む第2の分
    岐命令群の分岐命令とを処理するデータ処理装置であっ
    て、 前記第1及び第2の分岐命令群の分岐命令を含む命令を
    格納するメモリと、 前記メモリから命令を取り込む命令フェッチ部と、 前記命令フェッチ部が取り込んだ命令をデコードする命
    令デコード部と、 前記命令デコード部による命令のデコード結果に基づい
    て命令を実行する命令実行部と、 前記命令デコード部においてデコード中の命令の先頭ア
    ドレスを保持するプログラムカウンタ部と、 新たな命令のデコード処理の都度その命令が前記第1の
    分岐命令群に含まれる分岐命令であるものとして、前記
    命令フェッチ部から転送されるオペレーションコードフ
    ィールドの一部のフィールドの値に従って前記命令フェ
    ッチ部から前記第1の分岐変位フィールドの値または前
    記第2の分岐変位フィールドの値とを含む複数の分岐フ
    ィールドのいずれか一つを選択的に入力し、前記プログ
    ラムカウンタ部から前記命令の先頭アドレスを入力し、
    両者の加算処理を前記命令デコード部による前記命令の
    デコード処理と並行して実行することにより第1のアド
    レスを計算する第1の加算手段と、新たな命令のデコー
    ド処理の都度その命令が前記第2の分岐命令群に含まれ
    分岐命令であるものとして、前記命令フェッチ部から
    前記第3の分岐変位フィールドを含む分岐フィールド
    値を入力し、前記プログラムカウンタ部から前記命令の
    先頭アドレスを入力し、両者の加算処理を前記命令デコ
    ード部による前記命令のデコード処理と並行して実行す
    ることにより第2のアドレスを計算する第2の加算手段
    と、前記第1の加算手段及び前記第2の加算手段により
    計算されたアドレスを前記命令フェッチ部に選択的に転
    送する転送手段とを有するジャンプ先アドレス生成部と
    を備え、 前記命令デコード部においてデコード中の命令が前記第
    1の分岐命令群に含まれる分岐命令であることが判明し
    た場合に、 前記ジャンプ先アドレス生成部は前記第1のアドレスを
    前記転送手段を介して前記命令フェッチ部に転送し、 前記命令フェッチ部は前記ジャンプ先アドレス生成部か
    ら転送された前記第1のアドレスの命令をフェッチすべ
    くなしてあり、 前記命令デコード部においてデコード中の命令が前記第
    2の分岐命令群に含まれる分岐命令であることが判明し
    た場合に、 前記ジャンプ先アドレス生成部は前記第2のアドレスを
    前記転送手段を介して前記命令フェッチ部に転送し、 前記命令フェッチ部は前記ジャンプ先アドレス生成部か
    ら転送された前記第2のアドレスの命令をフェッチすべ
    くなしてあることを特徴とするデータ処理装置。
  2. 【請求項2】 第1の絶対アドレスフィールドでジャン
    プ先を指定する第1のジャンプ命令と、第2の絶対アド
    レスフィールドでジャンプ先を指定する第2のジャンプ
    命令とを含むジャンプ命令群のジャンプ命令を処理する
    データ処理装置であって、 前記第1及び第2のジャンプ命令を含む命令を格納する
    メモリと、 前記メモリから命令を取り込む命令フェッチ部と、 前記命令フェッチ部が取り込んだ命令をデコードする命
    令デコード部と、 前記命令デコード部による命令のデコード結果に基づい
    て命令を実行する命令実行部と、 新たな命令のデコード処理の都度その命令が前記ジャン
    プ命令群に含まれるジャンプ命令であるものとして、前
    記命令フェッチ部から転送されるオペレーションコード
    フィールドの一部のフィールドの値に従って前記命令フ
    ェッチ部から前記第1の絶対アドレスフィールドの値ま
    たは前記第2の絶対アドレスフィールドの値を含む複数
    の絶対アドレスフィールドの一つを選択的に切り出す処
    理を前記命令デコード部による前記命令のデコード処理
    と並行して実行することによりアドレスを生成するフィ
    ールド切り出し手段と、前記フィールド切り出し手段に
    より切り出されたアドレスを前記命令フェッチ部に転送
    する転送手段とを有するジャンプ先アドレス生成部とを
    備え、 前記命令デコード部においてデコード中の命令が前記ジ
    ャンプ命令群に含まれるジャンプ命令であることが判明
    した場合に、 前記ジャンプ先アドレス生成部は前記アドレスを前記転
    送手段を介して前記命令フェッチ部に転送し、 前記命令フェッチ部は前記ジャンプ先アドレス生成部か
    ら転送されたアドレスの命令をフェッチすべくなしてあ
    ることを特徴とするデータ処理装置。
JP08617493A 1993-04-13 1993-04-13 データ処理装置 Expired - Fee Related JP3345787B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP08617493A JP3345787B2 (ja) 1993-04-13 1993-04-13 データ処理装置
US08/223,909 US5453927A (en) 1993-04-13 1994-04-06 Data processor for processing branch instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08617493A JP3345787B2 (ja) 1993-04-13 1993-04-13 データ処理装置

Publications (2)

Publication Number Publication Date
JPH06301535A JPH06301535A (ja) 1994-10-28
JP3345787B2 true JP3345787B2 (ja) 2002-11-18

Family

ID=13879400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08617493A Expired - Fee Related JP3345787B2 (ja) 1993-04-13 1993-04-13 データ処理装置

Country Status (2)

Country Link
US (1) US5453927A (ja)
JP (1) JP3345787B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5532947A (en) * 1995-01-25 1996-07-02 International Business Machines Corporation Combined decoder/adder circuit which provides improved access speed to a cache
US5717909A (en) * 1995-05-26 1998-02-10 National Semiconductor Corporation Code breakpoint decoder
US5761490A (en) * 1996-05-28 1998-06-02 Hewlett-Packard Company Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
TW405090B (en) * 1997-04-04 2000-09-11 Ibm Predictive cache loading by program address discontinuity history
US5872946A (en) * 1997-06-11 1999-02-16 Advanced Micro Devices, Inc. Instruction alignment unit employing dual instruction queues for high frequency instruction dispatch
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US6243798B1 (en) * 1997-10-28 2001-06-05 Microchip Technology Incorporated Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction
US7827389B2 (en) * 2007-06-15 2010-11-02 International Business Machines Corporation Enhanced single threaded execution in a simultaneous multithreaded microprocessor
US8145887B2 (en) * 2007-06-15 2012-03-27 International Business Machines Corporation Enhanced load lookahead prefetch in single threaded mode for a simultaneous multithreaded microprocessor
JP4941365B2 (ja) * 2008-03-13 2012-05-30 オムロン株式会社 産業用コントローラ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US5226128A (en) * 1987-05-01 1993-07-06 Hewlett-Packard Company Horizontal computer having register multiconnect for execution of a loop with a branch
US5146571A (en) * 1988-03-28 1992-09-08 Emc Corporation Remapping defects in a storage system through the use of a tree structure
JPH0650465B2 (ja) * 1989-10-16 1994-06-29 株式会社東芝 分岐制御回路
US5293624A (en) * 1990-08-27 1994-03-08 Apple Computer, Inc Data chaining mechanism for SCSI devices

Also Published As

Publication number Publication date
JPH06301535A (ja) 1994-10-28
US5453927A (en) 1995-09-26

Similar Documents

Publication Publication Date Title
JP2761688B2 (ja) データ処理装置
JP2616182B2 (ja) データ処理装置
JP3543181B2 (ja) データ処理装置
US5522053A (en) Branch target and next instruction address calculation in a pipeline processor
JPH03186928A (ja) データ処理装置
JPH07114469A (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JP2847974B2 (ja) データ処理装置
JPH04260950A (ja) キャッシュメモリ装置
JP2581236B2 (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JP2669158B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP2556182B2 (ja) デ−タ処理装置
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置
JPH04260929A (ja) データ処理装置
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP2646855B2 (ja) データ処理装置
JP2504235B2 (ja) デ―タ処理装置
JP2928879B2 (ja) データ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP2696578B2 (ja) データ処理装置
JPH0769808B2 (ja) データ処理装置

Legal Events

Date Code Title Description
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070906

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080906

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees