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

データ処理装置

Info

Publication number
JPH0225932A
JPH0225932A JP17794188A JP17794188A JPH0225932A JP H0225932 A JPH0225932 A JP H0225932A JP 17794188 A JP17794188 A JP 17794188A JP 17794188 A JP17794188 A JP 17794188A JP H0225932 A JPH0225932 A JP H0225932A
Authority
JP
Japan
Prior art keywords
stage
instruction
address
operand
code
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.)
Granted
Application number
JP17794188A
Other languages
English (en)
Other versions
JPH0769801B2 (ja
Inventor
Yukari Watanabe
渡辺 由香里
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 JP63177941A priority Critical patent/JPH0769801B2/ja
Publication of JPH0225932A publication Critical patent/JPH0225932A/ja
Publication of JPH0769801B2 publication Critical patent/JPH0769801B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】 [産業上の利用分野] この発明は高度なパイプライン処理機構により高い処理
能力を実現したデータ処理装置に関するものである。
〔従来の技術〕
第33図は従来のパイプライン処理を行うデータ処理装
置の構成を示すブロック図であり、202は命令デコー
ドステージ、203はアドレス計算ステージ、204は
オペランドフェッチステージ、205は実行ステージ、
60はスタックポインタである。
また実行ステージ205ではストア処理とデータ演算処
理とを並列して行うことができ、ストア処理の終了を待
たずに次の命令の処理を始めることが可能である。
次に動作について説明する。プッシュ命令は見かけ上l
オペランド命令であり、命令中に書かれたソースオペラ
ンドをスタックにプッシュする命令である。スタックへ
のプッシュはスタックポインタの値をオペランドのサイ
ズ分デクリメントした値が指すところをデスティネーシ
ョンアドレスとし、そこへソースオペランドを書き込む
プッシュ命令の場合は命令中に記述されるソースオペラ
ンドと、スタックトップのデスティネーションオペラン
ドとの2つを有しており、従来はソースオペランドをア
ドレス計算ステージ203で、デスティネーションオペ
ランドを実行ステージ205で計算していた。
第34図にプッシュ命令のソースオペランドがメモリに
ある場合の各ステージの動作を示すフローチャートであ
る。
アドレス計算ステージ203ではプッシュ命令中のアド
レシッシングモードに基づきソースアドレスを計算する
(ステップ1)。
次にオペランドフェッチステージ204で、ステップl
で計算されたアドレスの示すアドレスからデータを取り
込む(ステップ2)。
次に実行ステージ205ではスタックポインタをオペラ
ンドのサイズ分デクリメントすることによりデスティネ
ーションアドレス(スタックトップ)をスタックポイン
タ60に設定する(ステップ3a)。
次にデクリメントされたスタックポインタの値をアドレ
スレジスタに、フェッチされたソースオペランドをデー
タレジスタに書き込む(ステップ3b)。
アドレスレジスタの示すアドレスにデータレジスタの値
を書き込む(ステップ3c)。
プッシュ命令のみの流れはこのようになっているが、パ
イプライン処理により命令を流すと、理想的にはステッ
プ1のアドレス計算が終わりアドレス計算ステージが使
用可能になったら、次の命令のアドレス計算がすぐに実
行される。これにより最も効率のよいパイプライン処理
を行えば、常に各ステージが命令を処理中であり、実行
ステージでの処理時間がその命令の実行時間を決めるこ
とになる。
しかし、いつもパイプラインがスムーズに流れるわけで
はなく、効率を低下させる原因かい(つかある。その中
に、[一番遅いステージで速度が制限される]という問
題がある。いまパイプライン中の各ステージの1回の処
理に必要な最小時間を2クロツクとする。ここで仮りに
実行ステージか2クロンクで処理で実行を終了しても、
アドレス計算ステージで4クロツクかかれば、その命令
の実行時間は4クロツクになってしまう。そこで各ステ
ージにおける命令実行のクロック数を均一にし、一番ク
ロック数の多くなるステージを重点的にクロック数減少
に向けることが望ましい。
また別の問題点として、各ステージのリソースのコンフ
リクトがあるので、特に本発明に関連するアドレス計算
ステージでのコンフリクトについて説明する。アドレス
計算ステージ203で各命令はアドレス計算を行うわけ
だが、この計算実行時に参照したレジスタやメモリの値
をパイプライン中を先行する命令が書き換えてしまうこ
とがある。
そうするとすでに行ったアドレス計算の結果は誤ってい
ることになる。このようなリソースの衝突(コンフリク
ト)が起こった時にも正しい結果を出すためには、先行
する命令が必要なリソースを書き換える可能性がある場
合は先行命令の処理が終了するまでアドレス計算を行わ
ないようにするか、アドレス計算を行った後で参照した
リソースが書き換わった場合にはアドレス計算をやり直
すようにしなければならない。
第34図に示したプッシュ命令実行時に問題となるのは
、このプッシュ命令の実行が終了してスタックポインタ
の値を書き換えるまでは、スタックポインタがコンフリ
クトを起こすので、後の命令はアドレス計算においてス
タックポインタの値を参照できないことである。そのた
めプッシュ命令の次の命令がアドレス計算ステージでス
タックボインクを参照する場合は、プッシュ命令終了後
、次の命令が終了するまで、アドレス計算ステージ、オ
ペランドフェッチステージ、実行ステージの合計骨のク
ロック数が必要になる。また実行ステージでデスティネ
ーションアドレスを計算するために、実行ステージは2
つの処理を行い、プッシュ命令は最小でも4クロック分
の時間かかることになる。
プッシュ命令と同じ様な命令にプッシュ八命令があり、
この命令はソースオペランドとしてソースアドレスが指
定され、第34図のステップ2の「オペランドフェッチ
ステージ204でのメモリからのデータのフェッチ」が
なく、アドレス計算結果がそのまま実行ステージ205
に転送される。それ以外はプッシュ命令と同様であり、
同じ問題点を持つ。
〔発明が解決しようとする課題〕
このように従来のデータ処理装置においては、実行ステ
ージでの処理でスタックポインタの値を更新するため、
プッシュ命令の実行時間が増え、またプッシュ命令以降
の命令でのアドレス計算において、スタックポインタの
コンフリクトを起こす可能性があり、高速化の妨げとな
っていた。
この発明は上記の問題点を解決するためになされたもの
で、プッシュ命令を高速に行うと共にプッシュ命令以降
の命令でスタックポインタのコンフリクトを起こさない
ようなデータ処理装置を得ることを目的とする。
(課題を解決するための手段〕 本発明におけるデータ処理装置は、パイプライン中のア
ドレス計算ステージ以降のステージに作業用のスタック
ポインタを設け、アドレス計算ステージのスタックポイ
ンタがアドレス加算部とは独立にインクリメントあるい
はデクリメント可能にし、このスタックポインタの値が
バイブライン中の命令の流れに同期して各ステージのス
タックポインタに転送されるようにしたものである。
〔作用] この発明におけるデータ処理装置は、ソースアドレスを
アドレス計算ステージのアドレス加算部において計算し
、デスティネーションアドレスをアドレス計算ステージ
のスタックポインタを更新することにより得る。
〔発明の実施例〕
以下、本発明をその実施例を示す図面に基づいて詳述す
る。
(1)「本発明のデータ処理装置の命令フォーマット」
本発明のデータ処理装置の命令は16ビツト単位で可変
長となっており、奇数バイト長の命令は使用しない。
本発明のデータ処理装置では高頻度命令を短いフォーマ
ットとする目的で特に工夫された命令フォーマット体系
を有する。例えば、2オペランド命令に関しては基本的
に“4バイト+拡張部”の構成を有して総てのアドレッ
シングモードが利用可能な一般形フオーマットと、使用
頻度の高い命令及びアドレッシングモードのみが使用可
能な短縮形フォーマットの2つのフォーマットとがある
本発明のデータ処理装置の命令フォーマット中に現われ
る記号の意味は次の通りである。
:オペレーションコードが入ル部分 #;リテラルまたは即値が入る部分 Ea:8ミニ8ビツト形のアドレッシングモードでオペ
ランドを指定する部分 Sh:6ビツトの短縮形のアドレッシングモードでオペ
ランドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定す
る部分 フォーマットは、第3図に示す如く右側がLSB側で且
つ高いアドレスになっている。アドレスNとアドレスN
+1の2バイトを見ないと命令フォー゛7ツトが判別で
きないようになっているが、これは前述の如く、命令が
必ず16ビツト(2バイト)単位でフェッチ及びデコー
ドされることを前提どしているためである。
本発明のデータ処理装置では、いずれのフォーマットの
場合も、各オペランドのEaまたはshの拡張部は必ず
そのEaまたはshの基本部を含むハーフワードの直後
に位置される。これは、命令により暗黙に指定される即
値データあるいは命令の拡張部に優先する。従って、4
バイト以上の命令では、Eaの拡張部によって命令のオ
ペレーションコードが分断される場合がある。
また後述する如く、多段間接モードによってEaの拡張
部に更に拡張部が付く場合にも、次の命令オペレーショ
ンコードよりもそちらの方が優先される。例えば、第1
ハーフワードにfialを含み、第2ハーフワードにE
a2を含み、第3ハーフワードまである6バイト命令の
場合を考える。Ealに多段間接モードを使用したため
、普通の拡張部の他に多段間接モードの拡張部も付くも
のとすると、実際の命令ビットパターンは、命令の第1
ハーフワード(Ealの基本部を含む)I Ealの拡
張部、Ealの多段間接モード拡張部、命令の第2ハー
フワード(Ea2の基本部を含む)+ Ealの拡張部
、命令の第3ハーフワードの順となる。
(1,1) r短縮形2オペランド命令」第4図から第
7図は2オペランド命令の短縮形フォーマットを示す模
式図である。
第4図はメモリーレジスタ間演算命令のフォーマットを
示す模式図である。このフォーマットには、ソースオペ
ランド側がメモリとなるL−formatと、デスティ
ネーションオペランド側がメモリとなるS−forma
tとがある。
L−formatでは、shはソースオペランドの指定
フィールドを、Rnはデスティネーションオペランドの
レジスタの指定フィールドを、RRはshのオペランド
サイズの指定をそれぞれ表す。レジスタ上に位置された
デスティネーションオペランドのサイズは32ビツトに
固定されている。レジスタ側とメモリ側とのサイズが異
なり、ソース側のサイズが小さい場合に符号拡張が行な
われる。
S−formatでは、shはデスティネーションオペ
ランドの指定フィールドを、Rnはソースオペランドの
レジスタ指定フィールドを、RRはshのオペランドサ
イズの指定をそれぞれ表す。レジスタ上に位置されたソ
ースオペランドのサイズは32ビツトに固定されている
。レジスタ側とメモリ側とのサイズが異なり、ソース側
のサイズが大きい場合にオーバフローした部分の切捨て
とオーバフローチエツクが行なわれる。
第5図はレジスターレジスタ間演算命令のフォーマット
(R−format)を示す模式図である。Rnはデス
ティネーションレジスタの指定フィールド、Rmはソー
スレジスタの指定フィールドである。オペランドサイズ
は32ビツトのみである。
第6図はリテラル−メモリ間演算命令のフォーマット(
ローformat)を示す模式図である。間はディステ
ィネーションオペランドサイズの指定フィールド、1l
lllはリテラルによるソースオペランドの指定フィー
ルド、shはデスティネーションオペランドの指定フィ
ールドである。
第7図は即値−メモリ間演算命令のフォーマット(1−
format)を示す模式図である。聞はオペランドサ
イズの指定フィールド(ソース、ディスティネーション
で共通) 、shはデスティネーションオペランドの指
定フィールドである。[−formatの即値のサイズ
はデスティネーション側のオペランドのサイズと共通に
8.16.32ビツトとなり、ゼロ拡張及び符号拡張は
行なわれない。
(1,2) r−船形1オペランド命令」第8図はlオ
ペランド命令の一般形フオーマット(Gl−forma
t)を示す模式図である。MMはオペランドサイズの指
定フィールドである。一部のGlformat命令では
、Haの拡張部以外にも拡張部がある。また、財を使用
しない命令もある。
(1,3) r−船形2オペランド命令」第9図から第
11図は2オペランド命令の一般形フオーマットを示す
模式図である。このフォーマントに含まれるのは、8ビ
ツトで指定する一般形アドレッシングモードのオペラン
ドが最大2つ存在する命令である。オペランドの総数自
体は3つ以上になる場合がある。
第9図は第1オペランドがメモリ読み出しを必要とする
命令のフォーマット(G−format)を示す模式図
である。EaMはデスティネーションオペランドの指定
フィールド、財はデスティネーションオペランドサイズ
の指定フィールド、F!、aRはソースオペランド指定
フィールド、RRはソースオペランドサイズの指定フィ
ールドである。一部のG−format命令では、Ea
MあるいはEaRの拡張部以外にも拡張部がある。
第10図は第1オペランドが8ビツト即値の命令のフォ
ーマット(E−format)を示す模式図である。
EaMはデスティネーションオペランドの指定フィール
ド、開はデスティネーションオペランドサイズの指定フ
ィールド、■・・・はソースオペランド値である。
E−formatとI−formatとは機能的には類
似しているが、考え方の点では大きく違っている。具体
的には、E−formatはあくまでも2オペランド−
船形(G−format)の派生形であり、ソースオペ
ランドのサイズが8ビツト固定、ディスティネーション
オペランドのサイズが8 /16/32ビットからの選
択となっている。つまり、E−formatは異種サイ
ス間の演算を前提とし、デスティネーションオペランド
のサイズに合わせて8ビツトのソースオペランドがゼロ
拡張または符号拡張される。一方、I−formatは
、特に転送命令及び比較命令で頻度の多い即値のパター
ンを短縮形にしたものであり、ソースオペランドとディ
スティネーションオペランドのサイズが等しい。
第11図は、第1オペランドがアドレス計算のみの命令
のフォーマツ) (GA−format)を示す模式図
である。Ea−はデスティネーションオペランドの指定
フィールド、四はデスティネーションオペランドサイズ
の指定フィールド、Ea八はソースオペランドの指定フ
ィールドである。ソースオペランドとしては実行アドレ
スの計算結果自体が使用される。
第12図は、ショートブランチ命令のフォーマットを示
す模式図である。ccccはブランチ条件指定フィール
ド、disp:8はジャンプ先との変位指定フィールド
であり、本発明のデータ処理装置では8ビツトで変位を
指定する場合には、ビットパターンでの指定値を2倍し
て変位値とする。
(1,4) rアドレッシングモード」本発明のデータ
処理装置のアドレッシングモード指定方法には、レジス
タを含めて6ビツトで指定する短縮形と、8ビツトで指
定する一般形とがある。
未定義のアドレッシングモードが指定された場合、ある
いは意味的に考えて明らかに不適当なアドレッシングモ
ードの組み合わせが指定された場合には、未定義命令が
実行された場合同様に予約命令例外が発生され、例外処
理が起動される。
これに該当するのは、デスティネーションが即値モード
の場合、アドレス計算を伴うべきアドレッシングモード
指定フィールドで即値モードを使用した場合等である。
フォーマットの図中で使われる記号の意味は次の通りで
ある。
Rn:レジスタ指定 mem HA : EAで示されるアドレスのメモリ内
容(Sh)  76ビツトの短縮形アドレッシングモー
ドでの指定方法 (Ha)  :8ビツトの一般形アドレッシングモード
での指定方法 フォーマットの図において破線にて囲繞された部分は拡
張部を示す。
(1,4,1)  r基本アドレッシングモード」本発
明のデータ処理装置は様々なアドレッシングモードをサ
ポートする。それらの内、本発明のデータ処理装置でサ
ポートする基本アドレッシングモードには、レジスタ直
接モード、レジスタ間接モード、レジスタ相対間接モー
ド、即値モード、絶対モード、PC(プログラムカウン
タ)相対間接モード、スタックポツプモード及びスタッ
クプッシュモードがある。
レジスタ直接モードはレジスタの内容をそのままオペラ
ンドとする。フォーマットの模式図を第13図に示す。
Rnは汎用レジスタの番号を示す。
レジスタ間接モードはレジスタの内容をアドレスとする
メモリの内容をオペランドとする。フォーマントの模式
図を第14図に示す。Rnは汎用レジスタの番号を示す
レジスタ相対間接モードはディスプレースメント値が1
6ビツトであるか32ビツトであるかにより2種類があ
る。それぞれ、レジスタの内容に16ビツトまたは32
ビツトのディスプレースメント値を加えた値をアドレス
とするメモリの内容をオペランドとする。フォーマット
の模式図を第15図に示す、Rnは汎用レジスタの番号
を示す。disp : 16とdisp : 32とば
それぞれ各々16ビツトのディスプレースメント値また
は32ビツトのディスプレースメント値を示す。ディス
プレースメント値は符号付きとして扱う。
即値モードは命令コード中で指定されるビットパターン
をそのまま2進数と見なしてオペランドとする。フォー
マットの模式図を第16図に示す。
imm−dataは即値を示す。imm−dataのサ
イズは、オペランドサイズとして命令中で指定される。
絶対モードはアドレス値が16ビツトで示されるか32
ビツトで示されるかにより2種類ある。それぞれ、命令
コード中で指定される16ビツトまたは32ビツトのビ
ットパターンをアドレスとするメモリの内容をオペラン
ドとする。フォーマットの模式図を第17図に示す、a
bs:16とabs:32とはそれぞれ16ビツトまた
は32ビツトのアドレス値を示す。
abs : 16でアドレスが示される時はI旨定され
たアドレス値を32ビツトに符号拡張する。
11c相対間接モードはディスプレースメント値が16
ビツトか32ビツトかにより2種類ある。それぞれ、プ
ログラムカウンタの内容に16ビツトまたは32ビツト
のディスプレースメント値を加えた値をアドレスとする
メモリの内容をオペランドとする。
フォーマットの模式図を第18図に示す。disp :
 16とdisp : 32とはそれぞれ16ビツトの
ディスプレースメント値または32ビツトのディスプレ
ースメント値を示す。ディスプレースメント値は符号付
きとして扱う。PC相対間接モードにおいて、参照され
るプログラムカウンタの値はそのオペランドを含む命令
の先頭アドレスである。多段間接アドレッシングモード
においてプログラムカウンタの値が参照される場合にも
、同じように命令の先頭のアドレスをPC相対の基準値
として使用する。
スタックポツプモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとする。
オペランドアクセス後、スタックポインタをオペランド
サイズだけインクリメントする。
例えば、32ビツトデータを扱う場合には、オペランド
アクセス後にSPが+4だけ更新(インクリメント)さ
れる。B、Hのサイズのオペランドに対するスタックポ
ツプモードの指定も可能であり、それぞれSPが+1.
+2だけ更新(インクリメント)される。フォーマット
の模式図を第19図に示す。オペランドに対しスタック
ポツプモードが意味を持たないものに関しては予約命令
例外が発生される。
具体的に予約命令例外となるのは、writeオペラン
ド、read−modify−writeオペランドに
対するスタックポツプモード指定である。
スタックプッシュモードはスタックポインタの内容をオ
ペランドサイズだけデクリメントした内容をアドレスと
するメモリの内容をオペランドとする。スタックプッシ
ュモードでは、オペランドアクセス前にスタックポイン
タがデクリメントされる。例えば、32ビツトデータを
扱う場合には、オペランドアクセス前にSPが−4だけ
更新(デクリメント)される。B、)(のサイスのオペ
ランドに対するスタックプッシュモードの指定も可能で
あり、それぞれSPが−1,−2だけ更新(デクリメン
ト)される。フォーマットの模式図を第20図に示す。
オペランドに対してスタックプッシュモードが意味を持
たないものに関しては、予約命令例外が発生される。具
体的に予約命令例外となるのは、readオペランド、
read−modify−writeオペランドに対す
スタックプッシュモード指定である。
(1,4,2) r多段間接アドレッシングモード」如
何に複雑なアドレッシングも、基本的には加算と間接参
照の組み合わせに分解される。従って、加算と間接参照
のオペレーションをアドレッシングのプリミティブとし
て与えておき、それを任意に組み合わせることができれ
ば、如何なる複雑なアドレッシングモードをも実現可能
となる。本発明のデータ処理装置の多段間接アドレッシ
ングモードはこの様な考え方に基づいたアドレッシング
モードである。複雑なアドレッシングモードはモジヱー
ル間のデータ参照あるいはAl (人工知能)言語の処
理系に特に有用である。
多段間接アドレッシングモードを指定する場合、基本ア
ドレッシングモード指定フィールドでは、レジスタベー
ス多段間接モード、PCヘース多段間接モード、絶対ベ
ース多段間接モードの3種類の指定方法の内のいずれか
1つを指定する。
レジスタベース多段間接モードはレジスタの値を拡張す
る多段間接アドレッシングのベース値とするアドレッシ
ングモートである。フォーマットの模式図を第21図に
示す。Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を
拡張する多段間接アドレッシングのベース値とするアド
レッシングモードである。フォーマットの模式図を第2
2図に示す。
絶対ベース多段間接モードはゼロを拡張する多段間接ア
ドレッシングのベース値とするアドレッシングモードで
ある。フォーマットの模式図を第23図に示す。
拡張する多段間接モード指定フィールドは16ビツトを
単位としており、これを任意回反復する。
1段の多段間接モードにより、ディスプレースメントの
加算、インデクスレジスタのスケーリング(Xi、 X
2. X4. X8)と加算、メモリの間接参照を行な
う。多段間接モードのフォーマットの模式図を第24図
に示す。各フィールドは以下に示す意味を持つ。
E・0 :多段間接モード継続 E=1  ニアドレス計算終了 tmp ==> address  of opera
nd■=0:メモリ間接参照なし tmp  +  disp  +  Rx  *  5
cale  ==>  tmp1=1  :メモリ間接
参照あり mem  tip  +  disp  +  Rx 
 率 5cale  ==>tmpM=0  :  <
Rx>をインデクスとして使用トl :特殊なインデク
ス <Rx>=Oインデクス値を加算しな い  (Rx=O) <Rx>・1  プログラムカウンタをインデクス値と
して使用 (Rx=PC) <Rx>=2〜reserved 0.0 7多段間接モード中の4ビツトのフィールドd
4の値を4倍してディスプレースメント値とし、これを
加算する d4は符号付きとして扱い、オペラン ドのサイズとは関係なく必ず4倍して 使用する D・1 :多段間接モードの拡張部で指定されたd 1
spx (16/32ビツト)をディスプレースメント
値とし、これを加算する 拡張部のサイズはd4フィールドで指 定する d4=ooo1   dispxは16ビツトd4□0
010   dispxは32ビットXx:インデクス
のスケール(scale=1/2/4/8)プログラム
カウンタに対してx2. x4. x Bのスケーリン
グを行なった場合には、その段の処理終了後の中間値(
t+*p)として不定値が入る。この多段間接モードに
よって得られる実効アドレスは予測できない値となるが
、例外は発生しない。プログラムカウンタに対するスケ
ーリングの指定は行なっではいけない。
多段間接モードによる命令フォーマットのバリエーショ
ンを第25図、第26図に示す。
第25図は、多段間接モードが継続するか終了するかの
バリエーションを示す。
第26図は、ディスプレースメントのサイズのバリエー
ションを示す。
任意段数の多段間接モードが利用できれば、コンパイラ
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないから
である。このため、フォーマット上では任意の段数が可
能になっている。
(1,5) r例外処理」 本発明のデータ処理装置はソフトウェア負荷の軽減のた
め豊富な例外処理機能を有する。本発明のデータ処理装
置では、例外処理は命令処理を再実行するもの(例外)
、命令処理を完了するもの(トラップ)及び割込の3種
類に分けて名称をつけている。また本発明のデータ処理
装置では、この3種の例外処理とシステム障害とを総称
してEITと称する。
(2)「機能ブロックの構成」 第1図は本発明のデータ処理装置の構成を示すブロック
図である。
本発明のデータ処理装置の内部を機能的に大きく分ける
と、命令フェッチ部101.命令デコード部102、P
C計算部103.オペランドアドレス計算部104゜マ
イクロROM部105.データ演算部106.外部バス
インターフェイス部107に分かれる。
第1図では、その他にCPu外部にアドレスを出力する
ためのアドレス出力回路108と、CPU外部とデータ
を入出力するためのデータ入出力回路109とを他の機
能ブロック部と分けて示した。
(2,1)’命令フェッチ部」 命令フェッチ部101にはブランチバッファ、命令キュ
ー301とその制御部等があり、次にフェッチすべき命
令のアドレスを決定してブランチバッファあるいはCP
u外部のメモリから命令をフェッチする。またブランチ
バッファへの命令登録をも行う。
ブランチバッファは小規模であるためセレクティブキャ
ッシュとして動作する。ブランチバッファの動作の詳細
は特願昭61−202041号で詳しく述べられている
次にフェッチすべき命令のアドレスは、命令キュー30
1に入力すべき命令のアドレスとして専用のカウンタに
て計算される。分岐あるいはジャンプが発生した場合に
は、新たな命令のアドレスがPC計算部103あるいは
データ演算部106から転送されてくる。
CPU外部のメモリから命令をフェッチする場合は、外
部バスインターフェイス部107を通して、フェッチす
べき命令のアドレスをアドレス出力回路108からCP
U外部へ出力し、データ入出力回路109から命令コー
ドをフェッチする。そして、バッファリングした命令コ
ードの内、次にデコードすべき命令コードを命令デコー
ド部102に出力する。
(2,2) r命令デコード部」 命令デコード部102では、基本的には16ビツト(ハ
ーフワード)単位で命令コードをデコードする。このブ
ロックには第1ハーフワードに含まれるオペレーション
コードをデコードするFHWデコーダ、第2.第3ハー
フワードに含まれるオペレーションコードをデコードす
るNFHWデコーダ、アドレッシングモードをデコード
するアドレッシングモードデコーダが含まれる。これら
FIIWデコーダ、N P II Wデコーダ、アドレ
ッシングモードデコーダを纏めて第1デコーダ303と
いう。
Fl+−デコーダあるいはNFHWデコーダの出力を更
にデコードして、マイクロROMのエントリアドレスを
計算する第2デコーダ305、条件分岐命令の分岐予測
を行う分岐予測機構、オペランドアドレス計算の際のバ
イブラインコンフリクトをチエツクするアドレス計算コ
ンフリクトチエツク機構も含まれる。
命令デコード部102は命令フェッチ部101から入力
された命令コードを2クロツク(1ステツプ)につきO
〜6バイトずつデコードする。デコード結果の内、デー
タ演算部106での演算に関する情報がマイクロROM
部105に、オペランドアドレス計算に関係する情報が
オペランドアドレス計算部104に、pc計算に関係す
る情報がPC計算部103にそれぞれ出力される。
(2,3) rマイクロROM部」 マイクロROM部105には、主にデータ演算部106
を制御するマイクロプログラムが格納されているマイク
ロROM、マイクロシーケンサ、マイクロ命令デコーダ
等が含まれる。マイクロ命令はマイクロROMから2ク
ロツク(lステップ)に1度読出される。マイクロシー
ケンサはマイクロプログラムで示されるシーケンス処理
の他に、例外、割込及びトラップ(この3つを合わせて
BITと称する)の処理をハードウェア的に受付ける。
またマイクロROM部105はストアバッファの管理も
行う。マイクロROM部105には命令コードに依存し
ない割込みあるいは演算実行結果によるフラッグ情報と
、第2デコーダ305の出力等の命令デコード部の出力
が人力される。マイクロデコーダの出力は主にデータ演
算部106に対して出力されるが、ジャンプ命令の実行
による他の先行処理中止情報等の一部の情報は他のブロ
ックへも出力される。
(2,4) rオペランドアドレス計算部」オペランド
アドレス計算部104は命令デコード部102のアドレ
スデコーダ等から出力されたオペランドアドレス計算に
関係する情報によりハードワイヤード制御される。この
ブロックではオペランドのアドレス計算に関するほとん
どの処理が行われる。メモリ間接アドレシングのための
メモリアクセスのアドレス及びオペランドアドレスがメ
モリにマツプされたI / Ofi、ff域に入るか否
かのチエツクも行われる。
アドレス計算結果は外部バスインターフェイス部107
に送られる。アドレス計算に必要な汎用レジスタ及びプ
ログラムカウンタの値はデータ演算部より入力される。
メモリ間接アドレッシングを行う際は外部バスインター
フェイス部107を通してアドレス出力回路108から
CPu外部へ参照すべきメモリアドレスを出力し、デー
タ入出力部109から入力された間接アドレス値を命令
デコード部102を通してフェッチする。
(2,5)  rpc計算部」 PC計算部103は命令デコード部102から出力され
るPC計算に関係する情報によりハードワイヤードに制
御され、命令のpc値を計算する。本発明のデータ処理
装置は可変長命令セットを有しており、命令をデコード
しなければその命令の長さが判らない。このため、PC
計算部103は命令デコード部102から出力される命
令長をデコード中の命令のpc値に加算することにより
次の命令のpc値を作り出す。また、命令デコード部1
02が分岐命令をデコードしてデコード段階での分岐を
指示した場合は、命令長の代わりに分岐変位を分岐命令
のpc値に加算することにより分岐先命令のpc値を計
算する。分岐命令に対して命令デコード段階で分岐を行
うことを本発明のデータ処理装置ではブリブランチと称
する。
このブリブランチの手法については特願昭61−204
500号及び特願昭61−200557号で詳しく述べ
られている。
pc計算部103の計算結果は各命令のpc値として命
令のデコード結果と共に出力される他、プリブランチ時
には、次にデコードすべき命令のアドレスとして命令フ
ェッチ部101へ出力される。また、次に命令デコード
部102でデコードされる命令の分岐予測のためのアド
レスにも使用される。
分岐予測の手法については特願昭62−8394号で詳
しく述べられている。
(2,6) rデータ演算部」 データ演算部106はマイクロプログラムにより制御さ
れ、マイクロROM部105の出力情報に従って各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスあるいは
即値である場合は、オペランドアドレス計算部オペラン
ドアドレス計算部104で計算されたアドレスあるいは
即値を外部ハスインタフェイス部107を通過させて得
る。また、演算対象となるオペランドがCPU外部のメ
モリにある場合は、アドレス計算部104で計算された
アドレスをバスインクフェイス部がアドレス出力回路l
O8から出力して、CPu外部のメモリからフェッチし
たオペランドをデータ入出力回路109から得る。
演算器としては^LIJ313、バレルシフタ、プライ
オリティエンコーダあるいはカウンタ、シフトレジスタ
などがある。レジスタと主な演算器の間は3バスで結合
されており、1つのレジスタ間演算を指示する1マイク
ロ命令を2クロツク(1ステツプ)で処理する。
データ演算時にCPU外部のメモリをアクセスする必要
がある場合は、マイクロプログラムの指示により外部バ
スインターフェイス部107を通してアドレス出力回路
108からアドレスをCI)U外部に出力し、データ入
出力回路109を通して目的のデータをフェッチする。
CPu外部のメモリにデータをストアする場合は、外部
バスインターフェイス部107を通してアドレス出力回
路108よりアドレスを出力すると同時に、データ入出
力回路109からデータをCPU外部に出力する。オペ
ランドストアを効率的に行うため、データ演算部106
には4バイトのストアバ・ソファが備えられている。
ジャンプ命令の処理あるいは例外処理等を行って新たな
命令アドレスをデータ演算部106が得た場合は、これ
を命令フェッチ部101とpc計算部103へ出力する
(以下余白) (2,7) r外部バスインターフェイス部」外部バス
インター−フェイス部107は本発明のデータ処理装置
の外部バスでの通信を制御する。メモリのアクセスはす
べてクロック同期で行われ、最小2クロックサイクル(
1ステツプ)で行うことができる。
メモリに対するアクセス要求は命令フェア千部101、
オペランドアドレス計算部104及びデータ演算部10
6から独立に生じる。外部バスインターフェイス部10
7はこれらのメモリアクセス要求を調停する。更にメモ
リとCPUとを結ぶデータバスサイズである32ビツト
(1ワード)の整置境界を跨ぐメモリ番地にあるデータ
のアクセスは、このブロック内で自動的にワード境界を
跨ぐことを検知して2回のメモリアクセスに分解して行
う。
ブリフェッチするオペランドとストアするオペランドと
が重なる場合のコンフリクト防止処理及びストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
(3)[パイプライン機構j 本発明のデータ処理装置のパイプライン処理機能は第2
図に模式的に示される如くである。
命令のブリフェッチを行う命令フヱッチステージ(IF
ステージ)201.命令のデコードを行うデコードステ
ージ(、Dステージ)202.オペランドのアドレス計
算を行うオペランドアドレス計算ステージ(へステージ
)203.マイクロROMアクセス(特にRステージ2
06と呼ぶ)を行う部分とオペランドのブリフェッチ(
特にOFステージ207と称す)を行う部分とからなる
オペランドフェッチステージ(Fステージ)204.命
令を実行する実行ステージ(Eステージ)205の5段
構成をパイプライン処理の基本とする。
Eステージ205では1段のストアバッファがある他、
高機能命令の一部は命令の実行自体をパイプライン化す
るため、実際には5段以上のパイプライン処理効果があ
る。
各ステージは他のステージとは独立に動作し、理論上は
5つのステージが完全に独立動作する。
各ステージは1回の処理を最小2クロック(1ステツプ
)で行うことができる。従って理想的には2クロツク(
1ステツプ)毎に次々とパイプライン処理が進行する。
本発明のデータ処理装置には、メモリーメモリ間演算あ
るいはメモリ間接アドレッシング等の如く1回の基本パ
イプライン処理のみでは処理し得ない命令もあるが、本
発明のデータ処理装置はこれらの処理に対してもなるべ
く均衡のとれたパイプライン処理が行える様に設計され
ている。複数のメモリオペランドを持つ命令に対しては
メモリオペランドの数に基づいてデコード段階で複数の
パイプライン処理単位(ステップコード)に分解してバ
イブライン処理を行う。
パイプライン処理単位の分解方法に関しては特願昭61
−236456号で詳しく述べられている。
IFステージ201からDステージ202に渡される情
報は、命令コード211そのものである。Dステージ2
02からAステージ203に渡される情報は、命令で指
定された演算に関するもの(Dコード212と称す)と
、オペランドのアドレス計算に関係するもの(Aコード
213と称す)との2つがある。
Aステージ203からFステージ204に渡される情報
はマイクロプログラムのエントリアドレスあるいはマイ
クロプログラムのパラメータ等を含むRコード214と
、オペランドのアドレスとアクセス方法指示情報等を含
むFコード215との2つである。
Fステージ204からEステージ205に渡される情報
は、演算制御情報とリテラル等を含むEコード216と
、オペランドあるいはオペランドアドレス等を含むSコ
ード217との2つである。
Eステージ205以外のステージで検出されたEl↑は
、そのコードがEステージ205に到達する迄はBIT
処理を起動しない。Eステージ205で処理されている
命令のみが実行段階の命令であり、IFステージ201
からFステージ204までの間で処理されている命令は
まだ実行段階に至っていないからである。従って、Eス
テージ205以外で検出されたBITは、それが検出さ
れたことがステップコード中に記録されて次のステージ
に伝えられるのみである。
(3,1) rパイプライン処理単位」(3,1,l)
 r命令コードフィールドの分類」本発明のデータ処理
装置のパイプライン処理単位は命令セットのフォーマッ
トの特徴を利用して決定されている。
(1)節で述べた如く、本発明のデータ処理装置の命令
は2バイト単位の可変長命令であり、基本的には″2バ
イトの命令基本部+0〜4バイトのアドレシング拡張部
”を1〜3回反復することにより命令が構成されている
命令基本部には多くの場合、オペレーションコード部と
アドレッシングモード指定部とがあり、インデックスア
ドレシッングあるいはメモリ間接アドレッシングが必要
な場合にはアドレッシング拡張部の代わりに“2バイト
の多段間接モード指定部+0〜4バイトのアドレッシン
グ拡張部”が任意価付く。また、命令により2または4
バイトの命令固有の拡張部が最後に付く。
命令基本部には命令のオペレーションコード、基本アド
レッシングモード、リテラルなどが含まれる。アドレッ
シング拡張部はディスプレースメント、絶対アドレス、
即値、分岐命令の変位のいずれかである。命令固有の拡
張部にはレジスタマツプ、I−format命令の即値
指定等がある。第27図は、本発明のデータ処理装置の
基本的命令フォーマットの特徴を示す模式図である。
(3,1,2) rステップコードへの命令の分解」本
発明のデータ処理装置では、上記の命令フォーマットの
特徴を生かしたパイプライン処理を行う。
Dステージ202では“2バイトの命令基本部+0〜4
バイトのアドレッシング拡張部”、“多段間接モード指
定部+アドレッシング拡張部”又は命令固有の拡張部を
1つのデコード単位として処理する。各回のデコード結
果をステップコードと称し、Aステージ203以降では
このステップコードをパイプライン処理の単位としてい
る。ステップコードの数は命令毎に固有であり、多段間
接モード指定を行わない場合は、1つの命令は最小1個
、最大3個のステップコードに分かれる。多段間接モー
ド指定が行われた場合はそれだけステップコードが増加
する。但し、これは後で述べる様にデコード段階のみで
ある。
(3,1,3) rプログラムカウンタの管理」本発明
のデータ処理装置のパイプライン上に存在するステップ
コードは全て別命令に対するものである可能性があり、
このためプログラムカウンタの値はステップコード毎に
管理される。全てのステップコードは、そのステップコ
ードのもとになった命令のプログラムカウンタ値を有す
る。ステップコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステッププログラム
カウンタ(SPC)と称する。SPCはパイプラインス
テージ間を次々と受は渡されていく。
(3,2) r各バイブラインステージの処理」各パイ
プラインステージの人出カステップコードには第2図に
示したように便宜上名前が付けられている。また、ステ
ップコードはオペレーションコードに関する処理を行い
、マイクロプログラムのエントリアドレス及びEステー
ジ205に対するパラメータなどになる系列とEステー
ジ205のマイクロ命令に対するオペランドになる系列
との2系列がある。
(3,2,1) r命令フェッチステージ」命令フェッ
チステージ(IFステージ)201は命令をメモリある
いはブランチバッファからフェッチして命令キュー30
1に入力し、Dステージ202に対して命令コードを出
力する。命令キュー301の人力は整置された4バイト
単位で行う。メモリから命令をフェッチする場合は、整
置された4バイトにつき最小2クロック(lステップ)
を要する。
ブランチバッファがヒツトした場合は、整置された4バ
イトにつきlクロックでフェッチ可能である。命令キュ
ー301の出力単位は2バイト毎に可変であり、2クロ
ツクの間に最大6バイトまで出力できる。また、分岐の
直後には命令キュー301をバイパスして命令基本部2
バイトを直接命令デコーダに転送することも可能である
ブランチバッファへの命令の登録及びクリア等の制御、
ブリフェッチ先の命令のアドレスの管理や命令キュー3
01の制御もIFステージ201で行う。
IFステージ201で検出するEITには、命令をメモ
リからフェッチする際のバスアクセス例外あるいはメモ
リ保護違反などによるアドレス変換例外がある。
(3,2,2) r命令デコードステージ」命令デコー
ドステージ(Dステージ)202は■Fステージ201
から入力された命令コードをデコードする。デコードは
命令デコード部102のFHWデコーダ、NFHWデコ
ーダ及びアドレッシングモードデコーダを合わせた第1
デコーダ303を使用して、2クロツク(1ステツプ)
単位に1度行ない、1回のデコード処理で、0〜6バイ
トの命令コードを消費する()IET命令の復帰先アド
レスを含むステップコードの出力処理などでは命令コー
ドを消費しない)。1回のデコードでAステージ203
に対してアドレス計算情報としてのAコード213であ
る制御コードとアドレス修飾情報と、オペレーションコ
ードの中間デコード結果としての1〕コード212であ
る制御コードと8ビツトのリテラル情報とを出力する。
Dステージ202では、各命令のPC計算部103の制
御、分岐予測処理、ブリブランチ命令に対するブリブラ
ンチ処理、命令キュー301からの命令コード出力処理
をも行う。
Dステージ202で検出するEITには、予約命令例外
及びブリブランチ時の奇数アドレスジャンプトラップが
ある。また、IFステージ201より転送されてきた各
種BITはステップコード内にエンコードする処理をし
てAステージ203に転送する。
(3,2,3) rオペランドアドレス計算ステージ」
オペランドアドレス計算ステージ(Aステージ)203
は処理機能が大きく2つに分かれる。1つは命令デコー
ド部102の第2デコーダ305を使用してオペレーシ
ョンコードの後段デコードを行う処理で、他方はオペラ
ンドアドレス計算部104でオペランドアドレスの計算
を行う処理である。
オペレーションコードの後段デコード処理はDコード2
12を入力とし、レジスタ、メモリの書込み予約及びマ
イクロプログラムのエントリアドレスとマイクロプログ
ラムに対するパラメータなどを含むRコード214の出
力を行う。なお、レジスタあるいはメモリの書込み予約
は、アドレス計算で参照したレジスタやメモリの内容が
パイプライン上を先行する命令で書換えられることによ
り誤ったアドレス計算が行われるのを防ぐためのもので
ある。レジスタあるいはメモリの書込み予約はデッドロ
ックを避けるため、ステップコード毎ではなく命令毎に
行う。レジスタ及びメモリへの書込み予約については特
願昭62−144394号で詳しく述べられている。
オペランドアドレス計算処理はAコード213を入力と
し、Aコード213に従いオペランドアドレス計算部1
04で加算あるいはメモリ間接参照を組合わせてアドレ
ス計算を行い、その計算結果をFコード215として出
力する。この際、アドレス計算に伴うレジスタ及びメモ
リの読出し時にコンフリクトチエツクを行い、先行命令
がレジスタあるいはメモリに書込み処理を終了していな
いためコンフリクトが指示されれば、先行命令がEステ
ージ205で書込み処理を終了するまで待つ。また、オ
ペランドアドレス及びメモリ間接参照のアドレスがメモ
リにマツプされたl10SI域に入るか否かのチエツク
も行う。
Aステージ203で検出するBITには予約命令例外、
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレッシングの時のオペランドブレイクポ
イントヒツトによるデバッグトラップがある。Dコード
212又はAコード213自体がEITを起こしたこと
を示していれば、Aステージ203はそのコードに対し
てアドレス計算処理をせず、そのEITをRコード21
4及びFコード215に伝える。
(3,2,4) rマイクロROMアクセスステージ」
オペランドフェッチステージ(Fステージ)204も処
理が大きく2つに分かれる。一方はマイクロROMのア
クセス処理であり、特にRステージ206と称する。他
方はオペランドブリフェッチ処理であり、特にOFステ
ージ207と称する。Rステージ206とOFステージ
207とは必ずしも同時に動作するわけではな(、メモ
リアクセス権が獲得できるか否か等に依存して独立に動
作する。
Rステージ206の処理であるマイクロROMアクセス
処理は、Rコード214に対して次のEステージ205
での実行に使用する実行制御コードであるEコード21
6を生成するためのマイクロROMアクセスとマイクロ
命令デコード処理である。1つのRコード214に対す
る処理が2つ以上のマイクロプログラムステップに分解
される場合、マイクロROMはEステージ205で使用
され、次のRコード214はマイクロROMアクセス待
ちになる。Rコード214に対するマイクロROMアク
セスが行われるのは、その前のEステージ205での最
後のマイクロ命令実行の時である。本発明のデータ処理
装置では、はとんどの基本命令は1マイクロプログラム
ステツプで行われるため、実際にはRコード214に対
するマイクロROMアクセスが次々と行われることが多
い。
Rステージ206で新たに検出するBITはない。
Rコード214が命令処理再実行型のEITを示してい
る時は、そのEIT処理に対するマイクロプログラムが
実行されるので、Rステージ206はそのRコード21
4に従ったマイクロ命令をフェッチする。
Rコード214が奇数アドレスジャンプトラップを示し
ている場合、Rステージ206はそれをEコード216
によって伝える。これはブリブランチに対するもので、
Eステージ205ではそのEコード216で分岐が生じ
なければそのブリブランチを有効として奇数アドレスジ
ャンプトラップを発生する。
(3,2,5) rオペランドフェッチステージ」オペ
ランドフェッチステージ(OFステージ)207はFス
テージ204で行う上記の2つの処理の内のオペランド
プリフェッチ処理を行う。
オペランドブリフェッチはFコード215を入力とし、
フェッチしたオペランドとそのアドレスをSコード21
7として出力する。1つのFコード215ではワード境
界を跨いでも良いが4バイト以下のオペランドフェッチ
を指定する。Fコード215にはオペランドのアクセス
を行うか否かの指定も含まれており、Aステージ203
で計算したオペランドアドレス自体あるいは即値をEス
テージ205に転送する場合にはオペランドブリフェッ
チは行わず、Fコード215の内容をSコード217と
して転送する。ブリフェッチしようとするオペランドと
、Eステージ205が書き込み処理を行おうとするオペ
ランドとが一致する場合は、オペランドブリフェッチは
メモリから行わずバイパスして行う。また、[10領域
に対してはオペランドプリフェッチを遅延させ、先行命
令がすべて完了するまで待ってオペランドフェッチを行
う。
OFステージ207で検出されるBITには、ハ′スア
クセス例外、アドレス変換例外、オペランドブリフェッ
チに対するブレイクポイントヒツトによるデバッグトラ
ップがある。Fコード215がデバッグトラップ以外の
EITを示している時は、それをSコード217に転送
し、オペランドプリフェッチは行わない。Fコード21
5がデバッグトラップを示している時は、そのFコード
215に対してBITを示していない場合と同じ処理を
すると共にデバラグトラップをSコード217に伝える
(3,2,6) r実行ステージ」 実行ステージ(Eステージ)205はEコード216及
びSコード217を入力として動作する。このEステー
ジ205が命令を実行するステージであり、Fステージ
204以前のステージで行われた処理は全てEステージ
205のための前処理である。Eステージ205でジャ
ンプ命令が実行されたり、あるいはBIT処理が起動さ
れたりした場合は、IFステージ201からFステージ
204までの処理は全て無効化される。Eステージ20
5はマイクロプログラムにより制御され、Rコード21
4に示されたマイクロプログラムのエントリアドレスか
らの一連のマイクロプログラムを実行することにより命
令を実行する。
マイクロRO?Iの読み出しとマイクロ命令の実行とは
パイプライン化されて行われる。従ってマイクロプログ
ラムで分岐が起きた場合は、1マイクロステツプの空き
ができる。また、Eステージ205はデータ演算部10
6にあるストアバッファを利用して、4バイト以内のオ
ペランドストアと次のマイクロ命令実行をパイプライン
処理することもできる。
Eステージ205では、Aステージ203で行ったレジ
スタ及びメモリに対する書込み予約をオペランドの書き
込み後に解除する。
また、条件分岐命令がEステージ205で分岐を発した
場合は、その条件分岐命令に対する分岐予測が誤ってい
たのであるから、分岐履歴の書換えを行う。
Eステージ205で検出されるBITには、バスアクセ
ス例外、アドレス変換例外、デバッグトラップ、奇数ア
ドレスジャンプトラップ、予約機能例外、不正オペラン
ド例外、予約スタックフォーマット例外、ゼロ除算トラ
ップ、無条件トラップ、条件トラップ、遅延コンテキス
トトラップ、外部割込、遅延割込、リセット割込、シス
テム障害がある。
Eステージ205で検出されたBITは全てBIT処理
されるが、Eステージ以前のIFステージ201からF
ステージ2040間で検出され、Rコード214あるい
はSコード217に反映されているBITは必ずしもB
IT処理されるとは限らない。IPステージ201から
Fステージ204の間で検出されたが、先行の命令がE
ステージ205でジャンプ命令が実行されたなどの原因
でEステージ205まで到達しなかったBITは全てキ
ャンセルされる。そのIEITを起こした命令はそもそ
も実行されなかったことになる。
外部割込及び遅延割込は命令の切れ目でEステージ20
5に直接受は付けられ、マイクロプログラムにより必要
な処理が実行される。その他の各種EITの処理はマイ
クロプログラムにより行われる。
(3,3) r各パイプラインステージの状態制御」パ
イプラインの各ステージは入力ラッチと出力ラッチとを
有し、他のステージとは独立に動作することを基本とす
る。各ステージは1つ前に行った処理が終わり、その処
理結果を出力ランチから次のステージの入力ラッチに転
送し、自分のステージの入力ラッチに次の処理に必要な
入力信号がすべて揃えば次の処理を開始する。
つまり各ステージは、1つ前段のステージから出力され
てくる次の処理に対する人力信号が全て有効となり、今
の処理結果を後段のステージの入力ラッチに転送して出
力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号が全て揃っている必要がある。入力信号が
揃っていない場合、そのステージは待ち状態(入力待ち
)になる。出力ラッチから次のステージの人力ラッチへ
の転送を行う場合には次のステージの入力ランチが空き
状態になっている必要があり、次のステージの入力ラッ
チが空きでない場合もパイプラインステージは待ち状態
(出力待ち)になる。必要なメモリアクセス権が獲得で
きなかったり、処理しているメモリアクセスにウェイト
が挿入されたり、その他のパイプラインコンフリクトが
生じると各ステージの処理自体が遅延する。
(3,4) 、  rプッシュ、プッシュA命令に関す
るステップコード処理」 第28図は、本発明を説明するためのブロック図である
。61はオペランドアドレス計算ステージ(Aステージ
203)の作業用ステージスタックポインタ(ASP)
であり、Aステージ203で実行中の命令に付随するス
タックポインタの値を示す。62はオペランドフェッチ
ステージ(Fステージ204)の作業用ステージスタッ
クポインタ(FSP)、63は実行ステージ(Eステー
ジ205)の作業用ステージスタックポインタ(C3P
)であり、それぞれ各ステージで実行中の命令に付随す
るスタックポインタの値を示す。64はソフトウェアか
らみたレベルのスタックポインタ群、70はFステージ
204のアドレスレジスタ(FAレジスタ)、71はS
コード217としてオペランドアドレスを格納するアド
レスレジスタ(SAレジスタ)、72はEステージ20
5のアドレスレジスタ(AAレジスタ)、73は外部と
やり取りされるデータのためのEステージ205のデー
タレジスタ(DDレンジング、74はFステージ204
でメモリからフェッチされたオペランドをいれるデータ
レジスタ(SDレジスタ)、75はAステージ203の
アドレス加算部、80〜87は内部データバスである。
102は命令デコード部、106は実行ステージ205
のデータ演算部、108はアドレス出力回路、109は
データ入出力回路である。
第32図は、本発明のデータ処理装置において処理され
るプッシュ、プッシュ^命令の命令フォーマット図であ
る。
また第29図、第30図、第31図は本発明のデータ処
理装置において実施されるプッシュ、プッシュ^命令の
、各ステージでの動作を示すフローチャートであり第2
9図はソースがメモリ、第30図はソースがレジスタ、
第31図はプッシュ命令の場合である。またステップ5
100〜5105はAステージ203、ステップ520
0〜5205はFステージ204及びステップ5300
〜5307はEステージ205での動作を夫々示してい
る。
本発明のデータ処理装置において処理されるプッシュ、
プッシュ八命令は第32図に示すフォーマットを持ち、
命令の中で指定されたソースオペランドをスタックトッ
プにストアする。プッシュ命令ではソースアトレンジン
グモードが示す値がソースオペランドに、またプッシュ
^命令ではソースアドレスがソースオペランドとなる。
またデスティネーションのアドレスとしては、スタック
ポインタの値をオペランドのサイズ分デクリメントした
値が使用される。このようにプッシュ、プッシュ命令は
、メモリーメモリ間転送が可能な命令であり2つのアド
レス計算が必要なため、本来なら2つのステップコード
を必要とする。
しかし、本発明においてはASI’61にデクリメント
機能を設け、Aステージ33でのアドレス演算と八5l
)61のブリデクリメントを1つのステ・ンブコードで
同時に行う。
プッシュ、プッシュA命令を第2図、第28図、第29
図、第30図及び第31図により、バイブラインの流れ
に沿ってみていく。まず命令デコード部102でプッシ
ュ、プッシュツA命令をデコードしたら、アドレシッシ
ングモード情報、ASP61の更新制御情報等を1つの
ステップコード(Aコード213)として、Aステージ
203のアドレス加算部75とASP61へ出力する。
命令のオペコード側の情報はDコード212として出力
される。
この後の各ステージの動作を第29図、第30図、第3
1図に示す。Eステージ205における1つのEコード
216の処理を1ステツプと呼ぶこととする。
まず第30図にプッシュ命令でソースがレジスタである
場合を示す。
Aステージ203ではAコード213の^sp更新制御
情報により、^5P61をオペランドのサイズ分デクリ
メントする。そしてこのデクリメントされた八5P61
の値をステップコードのパイプライン中の流れと同期し
てFSP62に転送する(S103)  、またソース
のレジスタ番号等をRコード214として出力する(5
102)。
Fステージ204ではFSP62の値をステップコード
のパイプライン中の流れと同期してC3P63に転送す
る(S203)  。またRコード214からソースの
レジスタをアクセスする信号を含むEコード216を生
成し出力する(S202)。
Eステージ205でAAレジスタ72にはデスティネー
ションアドレスとしてC5P63の値を書き込む。
この時の経路は、 C3P63→Stバス82→AAレジスタ72となる。
またEコード216で指定されたレジスタの値をDDレ
ジスタ73に書き込む。この時の経路は、レジスタ76
→S2バス87→データ演算部106→DOバス85→
DDレジスタ73 となる。この2つの経路はぶつからないので1ステツプ
で実行される(S303)。
次にAAレジスタ72の指すアドレスにDDレジスタ7
3の値を書き込む(S304)。このストア処理はEス
テージ205でのデータ演算処理とは独立して実行可能
であり、ストア処理と並列に次の命令の処理を行うこと
ができる。
次に、第29図にプッシュ命令でソースがメモリの場合
を示す。
Aステージ203では、Aコード213の^sp更新制
御情報により、ASP61をオペランドのサイズ分デク
リメントする。そしてこのデクリメントされたASP6
1の値をステップコードのバイ′ブライン中の流れと同
期してFSP62に転送する(S101)。またアドレ
ス加算部75にてソースアドレスを計算しく5100)
、Fコード215として出力する。
Fステージ204ではFSP62の値はステップコード
のパイプライン中の流れと同期してC3P63に転送さ
れる(S201)。Fコード215のソースアドレスを
FAレジスタ70に格納し、その値に基づきソースオペ
ランドをメモリからフェッチして来てSロレジスタ74
にいれる(S200)。
Eステージ205ではAAレジスタ72ζこデスティネ
ーションアドレスとしてC5P63の値を書き込む(S
300)。この時の経路は、 C3P63→Slバス82→AAレジスタ72となる。
Fステージ204でフェッチされたソースオペランドは
SDレジスタ(74)からDDレジスタ73に転送され
る(S301)。この時の経路は、 SOレジスタ73→S1バス87→テータ演算部106
→D。
バス85→00レジスタ73 となる。
この2つの経路は両方S1バス82を含むのでステップ
を2つに分けて実行する。ただし、SDレジスタ74に
はS2バス87を通る経路もあるが、実行ステージ20
5ではレジスタ直接とそれ以外という分は方が実行し易
いため上記の経路をとる。レジスタ直接以外でSlバス
82シか経路のない場合として、ソースが即値の場合が
ある。即値データはアドレス加算部75からそのまま出
力され、AOババス3→F^レジスタ70→SAレジス
タ71とわたってS1パス82に出力される。この時は
C5P63→AAレジスタ72もS1バス82を使う経
路しかないため、2つのステップに分けて実行される。
この即値等に合わせてメモリの場合も2つのステップで
実行する。
そしてAAレジスタ72の指すアドレスにDDレジスタ
73の値を書き込む(S302)。
本実施例ではSlバス82のコンフリクトが起こるため
に2つのステップがEステージ205で必要となる。し
かしS2バス87を延長するなどの方法で、SAレジス
タ71→データ演算部106 とC5P63→静レジス
タ72を1つのステップで行えれば、Eステージ205
のステップを1つにすることができる。
次に、第31図にプッシュA命令の場合を示す。
Aステージ203でハAコード213の^sp更新制御
情報により、ASP61をオペランドのサイズ分デクリ
メントする。そしてこのデクリメントされた^5P61
の値をステップコードのパイプライン中の流れと同期し
てFSP (62)に転送する(S105)。またアド
レス加算部75にてソースアドレスを計算しFコード2
15として出力する(S104)。
Fステージ204ではFSP62の値をステップコード
のパイプライン中の流れと同期してC5P63に転送す
る(S205)。Fコード215のソースアドレスをF
Aレジスタ70に格納し、その値をSAレジスタ71に
転送する(5204)。この値がソースオペランドとな
る。
Eステージ205ではAAレジスタ72にデスティネー
ションアドレスとしてC5P63の値を書き込む(S3
05)。この時の経路は、 C5P63→Slバス82→AAレジスタ72となる。
SAレジスタ71の値をソースオペランドとしてロロレ
ジスタ73に送る(S306)。この時の経路は、SA
レジスタ71→S1バス87→テータ演算部106→ロ
0バス85→DOレジスタ73 となる。この2つの経路は両方S1バス82を含むので
2ステツプで実行する。
AAレジスタ72の指すアドレスにDDレジスタ73の
値を書き込む(S307)。
このようにプッシュ、プッシュA命令がAステージ20
3で処理を終わった時点で、この命令終了時のスタック
ポインタの値がASP61に格納されている。そのため
後の命令のステップコードがスタックポインタをAステ
ージ203で参照しても、プッシュ、プッシュA命令が
Fステージ204又はEステージ205でASP61の
値を書き換えることはないので、スタックポインタに関
するコンフリクトは起こらない。例えば次の命令のアド
レシッシングモードが(SP + disp)であって
も、(ASP +disp)をアドレス加算部75で実
行することにより、プッシュ、プッシュ^命令の実行終
了を待たなくても、正しいアドレスが得られる。
また、プッシュ命令でソースがレジスタの場合は各ステ
ージでの実行ステップ数は1ステツプであり、この時の
命令実行時間は最小2クロックということになる。つま
りアドレス加算部75での計算とASP61の更新を1
つのステップコードで行うことにより、これをソース側
とデスティネーション側との2つのステップコードを生
成する場合に生じる、Aステージ203での実行ステッ
プの増加(1ステツプ→2ステツプ)によるプッシュ命
令の高速化をはかることができる。
[発明の効果] 以上のようにこの発明によれば、プッシュ、プッシュ八
命令処理時にアドレス計算ステージにおいて、アドレス
加算部でのオペランドアドレスの計算と、アドレス計算
ステージのスタックポインタの更新とを行い、スタック
ポインタの値をパイプラインの流れに同期して転送する
ことにより、プッシュ、プッシュA命令の後の命令がア
ドレス計算ステージでスタックポインタに関するコンフ
リクトを起こすことなくパイプラインの処理効率を上げ
ることができ、またプッシュ命令を最小1ステツプで実
行できるため、データ処理装置の性能が向上するという
効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例によるデータ処理装置の全体
ブロック図、第2図は本発明の一実施例によるデータ処
理装置のパイプライン概要図、第3図〜第27図は本発
明の一実施例によるデータ処理装置の命令フォーマット
の特徴を示す図、第28図は本発明の一実施例によるデ
ータ処理装置のスタックポインタ関連部分の構成図、第
29図、第30図、第31図は本発明のデータ処理装置
において実施されるプッシュ、プッシュ^命令の実行フ
ローチャート、第32図は本発明のデータ処理装置にお
いて実施されるプッシュ、プッシュ八命令の命令フォー
マント図、第33図は従来のデータ処理装置のブロック
図、第34図は従来のプッシュ命令の実行フローチャー
トである。 203・・・アドレス計算ステージ(Aステージ)20
5・・・実行ステージ(Eステージ)212〜217・
・・パイプライン処理の単位であるステップコード 6
1・・・Aステージの作業用ステージスタックポインタ
 63・・・Eステージの作業用ステージスタックポイ
ンタ 75・・・Aステージのアドレス加算部である。 なお、図中同一符号は、同一、または相当部分を示す。

Claims (1)

  1. 【特許請求の範囲】 1、汎用アドレシッシングモードで指定可能なオペラン
    ドの値をメモリ上のスタックにプッシュするプッシュ命
    令を備え、命令の実行を行う実行ステージと、該実行ス
    テージでの処理に先行してオペランドのアドレス計算を
    行うアドレス計算ステージとを含む複数のステージによ
    るパイプライン処理により命令を処理するデータ処理装
    置において、 前記アドレス計算ステージで制御され、オペランドのア
    ドレス計算を行うアドレス加算部と、 前記アドレス計算ステージで制御され、前記汎用アドレ
    シッシングモードがスタックプッシュモードのときオペ
    ランドの処理に伴うデクリメント処理を行う第1のスタ
    ックポインタと、 前記実行ステージが制御する第2のスタックポインタと
    を備え、 前記第1のスタックポインタは前記第2のスタックポイ
    ンタの更新処理に先行して更新され、 前記プッシュ命令処理時に、前記アドレス計算ステージ
    にて、前記アドレス加算部を用いたオペランドのアドレ
    ス計算と、前記第1のスタックポインタにおけるプッシ
    ュ操作に伴うスタックポインタの更新とをすべくなして
    あることを特徴とするデータ処理装置。
JP63177941A 1988-07-14 1988-07-14 データ処理装置 Expired - Lifetime JPH0769801B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63177941A JPH0769801B2 (ja) 1988-07-14 1988-07-14 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63177941A JPH0769801B2 (ja) 1988-07-14 1988-07-14 データ処理装置

Publications (2)

Publication Number Publication Date
JPH0225932A true JPH0225932A (ja) 1990-01-29
JPH0769801B2 JPH0769801B2 (ja) 1995-07-31

Family

ID=16039748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63177941A Expired - Lifetime JPH0769801B2 (ja) 1988-07-14 1988-07-14 データ処理装置

Country Status (1)

Country Link
JP (1) JPH0769801B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04260928A (ja) * 1991-01-21 1992-09-16 Mitsubishi Electric Corp データ処理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308641A (ja) * 1987-06-10 1988-12-16 Mitsubishi Electric Corp パイプライン処理機構を持つデータ処理装置および処理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308641A (ja) * 1987-06-10 1988-12-16 Mitsubishi Electric Corp パイプライン処理機構を持つデータ処理装置および処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04260928A (ja) * 1991-01-21 1992-09-16 Mitsubishi Electric Corp データ処理装置

Also Published As

Publication number Publication date
JPH0769801B2 (ja) 1995-07-31

Similar Documents

Publication Publication Date Title
US5091853A (en) Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction
JPH02173823A (ja) データ処理装置
JP2581236B2 (ja) データ処理装置
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
JPH0215331A (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP2710994B2 (ja) データ処理装置
US5269008A (en) Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer
JPH02105937A (ja) データ処理装置
JP2504235B2 (ja) デ―タ処理装置
JPH0225932A (ja) データ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JPH0218621A (ja) データ処理装置
JPH0290325A (ja) データ処理装置
JPH0769802B2 (ja) データ処理装置
JPH0298734A (ja) データ処理装置
JPH0769808B2 (ja) データ処理装置
JPH01214933A (ja) データ処理装置
JPH0769803B2 (ja) データ処理装置
JPH0573294A (ja) マイクロプロセツサ
JPH01281534A (ja) データ処理装置
JPH01280832A (ja) データ処理装置
JPH0769807B2 (ja) データ処理装置