JP2522048B2 - マイクロプロセッサ及びそれを使用したデ―タ処理装置 - Google Patents

マイクロプロセッサ及びそれを使用したデ―タ処理装置

Info

Publication number
JP2522048B2
JP2522048B2 JP1121925A JP12192589A JP2522048B2 JP 2522048 B2 JP2522048 B2 JP 2522048B2 JP 1121925 A JP1121925 A JP 1121925A JP 12192589 A JP12192589 A JP 12192589A JP 2522048 B2 JP2522048 B2 JP 2522048B2
Authority
JP
Japan
Prior art keywords
instruction
counter value
program counter
decoding
coprocessor
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
JP1121925A
Other languages
English (en)
Other versions
JPH02300841A (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 JP1121925A priority Critical patent/JP2522048B2/ja
Priority to US07/524,243 priority patent/US5218711A/en
Publication of JPH02300841A publication Critical patent/JPH02300841A/ja
Priority to US08/059,943 priority patent/US5465376A/en
Application granted granted Critical
Publication of JP2522048B2 publication Critical patent/JP2522048B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は高速なコプロセッサインターフェイスを有
し、少ないバスサイクルでコマンドをコプロセッサへ転
送し、コプロセッサ命令を高速に実行することが可能な
マイクロプロセッサ及びそれを用いたデータ処理装置に
関する。更に、コプロセッサ命令の実行に際して例外が
発生した場合に、例外を発生したコプロセッサ命令のプ
ログラムカウンタ(PC)値を特定することが可能なデー
タ処理装置に関する。
[従来の技術] 従来のマイクロプロセッサを主プロセッサ(Main Pro
cessing Unit:以下MPUと称す)として用いたデータ処理
装置では、MPUが整数演算を行い、浮動小数点演算は専
用のコプロセッサで行う構成が一般的である。例えば、
「別冊インターフェイス、“数値演算プロセッサ"CQ出
版、1987年」にはマイクロプロセッサを主プロセッサと
して種々の浮動小数点プロセッサをコプロセッサとして
用いたデータ処理装置が記載されている。
このような従来のデータ処理装置では、主プロセッサ
とコプロセッサとで分担して命令を実行するために種々
の工夫が施されている。第40図に従来のマイクロプロセ
ッサとコプロセッサとを用いたデータ処理装置の一構成
例を示す。
装置全体を制御するMPU201とコプロセッサであるFPU
(Floating−point Processing Unit)202と、命令及び
データを記憶するメモリシステム203と、装置全体にク
ロックCLKを供給するクロックジェネレータ204とが、制
御信号線211,212,213,214,215,216等により結合されて
いる。なお、信号線210はクロックCLKを、信号線211は
信号BS#,AS#,DS#,R/W#を、信号線212は信号CPSTO:2
を、信号線213は信号CPDC#を、信号線214は信号DC#を
それぞれ転送し、また信号線215はアドレスバスA0:31と
して、信号線216はデータバスD0:31としてそれぞれ使用
される。
第41図は上述の第40図に示したデータ処理装置におい
てコプロセッサ命令を実行する場合に、MPU201からFPU2
02へコマンド,オペランド及びコプロセッサ命令のPC
(プログラムカウンタ)値を転送する際のタイミングチ
ャートである。
この従来のマイクロプロセッサをMPU201として用いた
データ処理装置では、MPU201がコプロセッサ命令をフェ
ッチしデコードし、このデコード結果に従ってコマンド
とオペランドとコプロセッサ命令のPC値とが総てデータ
バス216を介して転送される。
第41図のタイミングチャートに示す例では、コマンド
転送に1メモリサイクル、オペランド転送に2メモリサ
イクル(データの上位と下位に各1メモリサイクル)、
PC値転送に1メモリサイクルの合計4メモリサイクルを
要する。このようなコマンドとオペランドとコプロセッ
サ命令のPC値とを転送する手法については、“MC68881/
MC68882 Floating−Point Co−processor User′s Manu
al",MOTOROLA,INC.,PRENTICE HALL,1987,section7、あ
るいは「別冊インターフェイス、“数値演算プロセッ
サ"CQ出版、1987年」のpp.194−210に詳しく述べられて
いる。
また、MPUがコプロセッサ命令をフェッチしデコード
しコプロセッサへコマンドを転送するのではなく、コプ
ロセッサが直接コプロセッサ命令をフェッチしデコード
してそれを実行する手法を採用したデータ処理装置が従
来より提案されている。例えば、インテル社製マイクロ
プロセッサi8086をMPUとして用いたデータ処理装置で
は、コプロセッサであるi8087が常時バスを監視し、コ
プロセッサ命令がバスへ出力された場合にこれをコプロ
セッサがフェッチしデコードして実行する。この手法に
ついては例えば「別冊インターフェイス、“数値演算プ
ロセッサ"CQ出版、1987年」のpp.60−74に詳しく記され
ている。
[発明が解決しようとする課題] 従来のマイクロプロセッサをMPUとして用いたデータ
処理装置では、第41図のタイミングチャートに示す如
く、コプロセッサ命令に対する演算をMPUがコプロセッ
サに指示する場合にコプロセッサ命令のPC値をも併せて
転送するため、演算の指示に多くのメモリサイクルを必
要とし、装置全体の性能を低下させていた。コプロセッ
サ命令のPC値はコプロセッサ命令の実行には直接必要で
はなく、コプロセッサ命令の実行に際して例外が発生し
た場合に備えて転送されるものであり、ほとんどの場合
は利用されずに無駄になる。
これを少し詳しく説明する。前述のようにして転送さ
れてきたコプロセッサ命令のPC値はPC値保持手段に格納
される。MPUがあるコプロセッサ命令に対応するコマン
ドをコプロセッサへ転送し、コプロセッサはこれを受け
てコプロセッサ命令を実行する。一方MPUはこれに並行
して前記コプロセッサ命令に続く1又は複数の主プロセ
ッサ命令を実行する。
コプロセッサ命令の実行により、オーバーフロー,ア
ンダーフロー又はゼロ除算などの例外が検出されるとこ
の例外はMPUへ通知される。MPUではこの例外の原因とな
ったコプロセッサ命令を特定する必要があり、このため
に前述のPC値保持手段の内容が例外処理ハンドラ中の命
令で読出されるのである。従って例外が発生しない場合
は無駄になるのである。
本発明はこのような点に着眼してなされたものであ
り、しかも例外発生時に前記PC値を必要とするのはMPU
であることに着眼し、MPU側でこのPC値を保持すること
で無駄な転送を排除して演算速度の向上を計ったマイク
ロプロセッサ、データ処理装置を提供することを目的と
する。
[課題を解決するための手段] 本発明のマイクロプロセッサ又はデータ処理装置はMP
U側にそのプログラムに係るPC値を保持する第1のPC値
保持手段を備えると共に、コプロセッサ命令に係るPC値
を保持する第2のPC値保持手段をも備えることを基本的
な特徴としている。
第1のPC値保持手段は最も近い時点で自らが実行した
主プロセッサ命令のPC値又は最も近い時点でコプロセッ
サへ転送したコマンドに対応するコプロセッサ命令のPC
値を保持する。第2のPC値保持手段は前記コプロセッサ
命令のPC値を保持し、これを所要時点まで、つまり例外
発生等に対応するのに必要な時点まで保持する。
なおMPUは整数演算実行手段、コプロセッサは浮動小
数点演算実行手段と割付けられる。
第1発明のマイクロプロセッサは、主プロセッサ命令
を自身で実行し、コプロセッサにコプロセッサ命令を実
行させるマイクロプロセッサにおいて、自身に対する主
プロセッサ命令及び前記コプロセッサに対するコプロセ
ッサ命令をデコードしてデコード結果を出力するデコー
ド手段と、該デコード手段のデコード結果に従い主プロ
セッサ命令を実行する第1の演算実行手段と、前記デコ
ード手段のデコード結果に従いコプロセッサ命令に対応
するコマンドを前記コプロセッサに転送してコプロセッ
サ命令を実行させる転送手段と、前記第1の演算実行手
段で最近に実行した主プロセッサ命令又は前記転送手段
で最近に転送したコマンドに対応するコプロセッサ命令
のプログラムカウンタ値を保持する第1のプログラムカ
ウンタ値保持手段と、前記転送手段で最近に転送したコ
マンドに対応するコプロセッサ命令のプログラムカウン
タ値を保持する第2のプログラムカウンタ値保持手段
と、前記デコード手段が第1のコプロセッサ命令をデコ
ードして第1のデコード結果を出力し、前記第1のデコ
ード結果に従い前記転送手段が前記コプロセッサにコマ
ンドを転送して前記第1のコプロセッサ命令を実行さ
せ、前記デコード手段が前記第1のコプロセッサ命令に
引き続いて第1の主プロセッサ命令をデコードして第2
のデコード結果を出力し、前記コプロセッサが前記第1
のコプロセッサ命令の実行を終了する前に前記第1の演
算実行手段が前記第2のデコード結果に従い前記第1の
主プロセッサ命令を実行するとき、前記第1のプログラ
ムカウンタ値保持手段が前記第1の主プロセッサ命令の
プログラムカウンタ値を保持し、前記第2のプログラム
カウンタ値保持手段が前記第1のコプロセッサ命令のプ
ログラムカウンタ値を、前記第1の主プロセッサ命令よ
り後の第2のコプロセッサ命令のデコード結果に対応す
るコマンドを前記転送手段がコプロセッサに転送するま
で保持すべくなしてあることを特徴とする。
第2発明のマイクロプロセッサは、浮動小数点演算プ
ロセッサに浮動小数点演算を行わせ、整数演算を自身で
行うマイクロプロセッサにおいて、自身に対する整数演
算命令及び前記浮動小数点演算プロセッサに対する浮動
小数点演算命令をデコードしてデコード結果を出力する
デコード手段と、該デコード手段のデコード結果に従い
整数演算命令を実行する整数演算実行手段と、前記デコ
ード手段のデコード結果に従い浮動小数点演算命令に対
応するコマンドを前記浮動小数点演算プロセッサに転送
して浮動小数点演算命令を実行させる転送手段と、前記
整数演算実行手段で最近に実行した整数演算命令又は前
記転送手段で最近に転送したコマンドに対応する浮動小
数点演算命令のプログラムカウンタ値を保持する第1の
プログラムカウンタ値保持手段と、前記転送手段で最近
に転送したコマンドに対応する浮動小数点演算命令のプ
ログラムカウンタ値を保持する第2のプログラムカウン
タ値保持手段と、を備え、前記デコード手段が第1の浮
動小数点演算命令をデコードして第1のデコード結果を
出力し、前記第1のデコード結果に従い前記転送手段が
前記浮動小数点演算プロセッサにコマンドを転送して前
記第1の浮動小数点演算命令を実行させ、前記デコード
手段が前記第1の浮動小数点演算命令に引き続いて第1
の整数演算命令をデコードして第2のデコード結果を出
力し、前記浮動小数点演算プロセッサが前記第1の浮動
小数点演算命令の実行を終了する前に前記整数演算実行
手段が前記第2のデコード結果に従い前記第1の整数演
算命令を実行するとき、前記第1のプログラムカウンタ
値保持手段が前記第1の整数演算命令のプログラムカウ
ンタ値を保持し、前記第2のプログラムカウンタ値保持
手段が前記第1の浮動小数点演算命令のプログラムカウ
ンタ値を、前記第1の整数演算命令より後の第2の浮動
小数点演算命令のデコード結果に対応するコマンドを前
記転送手段が前記浮動小数点演算プロセッサに転送する
まで保持すべくなしてあることを特徴とする。
第3発明のマイクロプロセッサは、外部のメモリから
外部バスを経由してフェッチした命令をデコードしてデ
コード結果を出力するデコード手段と、該デコード手段
のデコード結果に従い前記デコード手段でデコードした
命令のプログラムカウンタ値を計算するプログラムカウ
ンタ値計算手段と、前記デコード手段のデコード結果に
従い整数演算命令を実行する整数演算実行手段と、前記
デコード手段のデコード結果に従い浮動小数点演算命令
を実行する浮動小数点演算実行手段と、前記プログラム
カウンタ値計算手段と第1の内部経路で接続し、前記プ
ログラムカウンタ値計算手段から転送されたデコード済
み命令のプログラムカウンタ値を保持する第1のプログ
ラムカウンタ値保持手段と、前記プログラムカウンタ値
計算手段と第2の内部経路で接続し、前記プログラムカ
ウンタ値計算手段から転送されたデコード済み浮動小数
点演算命令のプログラムカウンタ値を保持する第2のプ
ログラムカウンタ値保持手段とを備え、前記メモリから
前記外部バスを経由してフェッチした第1の浮動小数点
演算命令を前記デコード手段がデコードして第1のデコ
ード結果を出力し、該第1のデコード結果に従い前記プ
ログラムカウンタ値計算手段が第1のプログラムカウン
タ値を計算して前記第2の内部経路を経由して前記第2
のプログラムカウンタ値保持手段に書き込み、前記第1
のデコード結果に従い前記浮動小数点演算実行手段が前
記第1の浮動小数点演算命令を実行し、前記デコード手
段が該第1の浮動小数点演算命令に引き続いて第1の整
数演算命令をデコードして第2のデコード結果を出力
し、前記浮動小数点演算実行手段が前記第1の浮動小数
点演算命令の実行を終了する前に前記整数演算実行手段
が前記第2のデコード結果に従い前記第1の整数演算命
令を実行するとき、前記第1のプログラムカウンタ値保
持手段が前記第1の整数演算命令のプログラムカウンタ
値を保持し、前記第2のプログラムカウンタ値保持手段
が前記第1の浮動小数点演算命令のプログラムカウンタ
値を、前記第1の整数演算命令より後の第2の浮動小数
点演算命令のデコード結果を出力して前記浮動小数点演
算実行手段に与えるまで保持すべくなしてあることを特
徴とする。
第4発明のデータ処理装置は、主プロセッサが主プロ
セッサ命令を実行し、コプロセッサがコプロセッサ命令
を実行するデータ処理装置において、前記主プロセッサ
は、自身に対する主プロセッサ命令及びコプロセッサ命
令をデコードしてデコード結果を出力するデコード手段
と、該デコード手段のデコード結果に従い主プロセッサ
命令を実行する第1の演算実行手段と、前記デコード手
段のデコード結果に従いコプロセッサ命令に対応するコ
マンドをコプロセッサに転送してコプロセッサ命令を実
行させる転送手段と、前記第1の演算実行手段で最近に
実行した主プロセッサ命令又は前記転送手段で最近に転
送したコマンドに対応するコプロセッサ命令のプログラ
ムカウンタ値を保持する第1のプラグラムカウンタ値保
持手段と、前記転送手段で最近に転送したコマンドに対
応するコプロセッサ命令のプログラムカウンタ値を保持
する第2のプログラムカウンタ値保持手段と、前記デコ
ード手段のデコード結果に従い前記第2のプログラムカ
ウンタ値保持手段からプログラムカウンタ値を読み出す
読み出し手段とを備え、前記コプロセッサは、前記転送
手段から転送されたコマンドに従いコプロセッサ命令を
実行する第2の演算実行手段と、前記第2の演算実行手
段における演算実行に伴う例外を検出した場合に前記主
プロセッサへ例外発生を通知する通知手段とを備え、前
記デコード手段が第1のコプロセッサ命令をデコードし
て第1のデコード結果を出力し、前記第1のデコード結
果に従い前記転送手段が前記第1のコプロセッサ命令に
対応するコマンドを前記コプロセッサに転送し、前記第
2のプログラムカウンタ値保持手段が前記第1のコプロ
セッサ命令のプログラムカウンタ値である第1のプログ
ラムカウンタ値を保持し、前記コプロセッサが前記第2
の演算実行手段で前記コマンドに従い前記第1のコプロ
セッサ命令を実行して例外を検出したとき、前記通知手
段が前記主プロセッサへ例外発生を通知し、前記主プロ
セッサが例外処理プログラムの実行を開始し、前記デコ
ード手段が前記例外処理プログラムに含まれる命令をデ
コードして第2のデコード結果を出力し、前記第2のデ
コード結果に従い前記読み出し手段が前記第2のプログ
ラムカウンタ値保持手段から前記第1のプログラムカウ
ンタ値を読み出すべくなしてあることを特徴とする。
第5発明のデータ処理装置は、浮動小数点演算プロセ
ッサが浮動小数点演算を行ない、主プロセッサが整数演
算を行うデータ処理装置において、前記主プロセッサ
は、自身に対する整数演算命令及び前記浮動小数点演算
プロセッサに対する浮動小数点演算命令をデコードして
デコード結果を出力するデコード手段と、該デコード手
段のデコード結果に従い整数演算命令を実行する整数演
算実行手段と、前記デコード手段のデコード結果に従い
浮動小数点演算命令に対応するコマンドを前記浮動小数
点演算プロセッサに転送して浮動小数点演算命令を実行
させる転送手段と、前記整数演算実行手段で最近に実行
した整数演算命令又は前記転送手段で最近に転送したコ
マンドに対応する浮動小数点演算命令のプログラムカウ
ンタ値を保持する第1のプログラムカウンタ値保持手段
と、前記転送手段で最近に転送したコマンドに対応する
浮動小数点演算命令のプログラムカウンタ値を保持する
第2のプログラムカウンタ値保持手段と、前記デコード
手段のデコード結果に従い前記第2のプログラムカウン
タ値保持手段からプログラムカウンタ値を読み出す読み
出し手段とを備え、前記浮動小数点演算プロセッサは、
前記転送手段から転送されたコマンドに従い浮動小数点
演算命令を実行する浮動小数点演算実行手段と、前記浮
動小数点演算実行手段における浮動小数点演算命令の実
行に伴う例外を検出した場合に前記主プロセッサへ例外
発生を通知する通知手段を備え、第1の浮動小数点演算
命令を前記デコード手段がデコードして第1のデコード
結果を出力し、前記第1のデコード結果に従い前記転送
手段が前記第1の浮動小数点演算命令に対応するコマン
ドを前記浮動小数点演算プロセッサに転送し、前記第2
のプログラムカウンタ値保持手段が前記第1の浮動小数
点演算命令のプログラムカウンタ値である第1のプログ
ラムカウンタ値を保持し、前記浮動小数点演算プロセッ
サが前記浮動小数点演算実行手段で前記コマンドに従い
前記第1の浮動小数点演算命令を実行して例外を検出し
たとき、前記通知手段が前記主プロセッサへ例外発生を
通知し、前記主プロセッサが例外処理プログラムの実行
を開始し、前記デコード手段が前記例外処理プログラム
に含まれる命令をデコードして第2のデコード結果を出
力し、該第2のデコード結果に従い前記読み出し手段が
前記第2のプログラムカウンタ値保持手段から前記第1
のプログラムカウンタ値を読み出すべくなしてあること
を特徴とする。
第6発明のデータ処理装置は、外部のメモリから外部
バスを経由してフェッチした命令をデコードしてデコー
ド結果を出力するデコード手段と、該デコード手段のデ
コード結果に従い前記デコード手段でデコードした命令
のプログラムカウンタ値を計算するプログラムカウンタ
値計算手段と、前記デコード手段のデコード結果に従い
整数演算命令を実行する整数演算実行手段と、前記デコ
ード手段のデコード結果に従い浮動小数点演算命令を実
行する浮動小数点演算実行手段と、前記プログラムカウ
ンタ値計算手段と第1の内部経路で接続し、前記プログ
ラムカウンタ値計算手段から転送されたデコード済み命
令のプログラムカウンタ値を保持する第1のプログラム
カウンタ値保持手段と、前記プログラムカウンタ値計算
手段と第2の内部経路で接続し、前記プログラムカウン
タ値計算手段から転送されたデコード済み浮動小数点演
算命令のプログラムカウンタ値を保持する第2のプログ
ラムカウンタ値保持手段と、前記デコード手段のデコー
ド結果に従い前記第2のプログラムカウンタ値保持手段
からプログラムカウンタ値を読み出す読み出し手段とを
備え、前記メモリから前記外部バスを経由してフェッチ
した第1の浮動小数点演算命令を前記デコード手段がデ
コードして第1のデコード結果を出力し、該第1のデコ
ード結果に従い前記プログラムカウンタ値計算手段が第
1のプログラムカウンタ値を計算して前記第2の内部経
路を経由して前記第2のプログラムカウンタ値保持手段
に書き込み、前記第1のデコード結果に従い前記浮動小
数点演算実行手段が前記第1の浮動小数点演算命令を実
行して例外を検出したとき、例外処理プログラムを起動
し、該例外処理プログラムに含まれ、前記メモリから前
記外部バスを経由してフェッチした命令を前記デコード
手段がデコードして第2のデコード結果を出力し、該第
2のデコード結果に従い前記プログラムカウンタ値計算
手段が第2のプログラムカウンタ値を計算して前記第1
の内部経路を経由して前記第1のプログラムカウンタ値
保持手段に書き込み、前記第2のデコード結果に従い前
記読み出し手段が前記第2のプログラムカウンタ値保持
手段から前記第1のプログラムカウンタ値を読み出すべ
くなしてあることを特徴とする。
[作用] コプロセッサ命令(浮動小数点演算命令)がデコード
されると第1,第2のプログラムカウンタ値保持手段の内
容はこのコプロセッサ命令に対応するPC値を共に保持す
る。
主プロセッサ(整数演算実行手段)はコプロセッサ
(浮動小数点演算実行手段)へコプロセッサ命令に対応
するコマンドを転送し、コプロセッサにコプロセッサ命
令を実行させる。
一方、主プロセッサは次の命令(更にはそれに続く命
令)をデコードして実行していくが、これに伴い第1の
プログラムカウンタ値保持手段の内容は更新されていく
一方、第2のプログラムカウンタ値保持手段はその内容
を保持し続ける。これは次のコプロセッサ命令がデコー
ドされてコプロセッサへ対応コマンドが転送されるまで
続く。
従って先のコプロセッサ命令の実行において例外が発
生した場合、主プロセッサは第2のプログラムカウンタ
値保持手段の内容を見ることでその命令を特定すること
ができる。
[発明の実施例] 以下、本発明をその実施例を示す図面に基づいて詳述
する。
(1)「本発明のマイクロプロセッサを用いたデータ処
理装置」 第1図は本発明のマイクロプロセッサを用いたデータ
処理装置の一構成例を示すブロック図である。
装置全体を制御する主プロセッサ(MPU)10、浮動小
数点演算を行う2つのコプロセッサ(第1FPU)11,(第2
FPU)12、命令及びデータを記憶するメモリシステム1
3、MPU10に対する割込みを制御する割込み制御回路15、
装置全体のタイミングを決定するクロックを供給するク
ロックジェネレータ14等にて構成されている。
MPU10、第1FPU11、第2FPU12及びメモリシステム13は6
4ビットのデータバスD0:63(信号線1)と32ビットのア
ドレスバスA0:31(信号線2)とで接続されている。MPU
10とメモリシステム13とは32ビットの命令バスI0:31
(信号線3)とでも接続されている。また、装置全体は
制御信号線4で結合されている。
MPU10は装置全体のバスマスタとして動作し、アドレ
スバスA0:31(2)へは常時MPU10から信号が出力され
る。MPU10はメモリシステム13へアドレスバスA0:31
(2)を通じてアドレスを出力し、メモリシステム13か
ら命令バスI0:31(3)を通じて命令をフェッチし、実
行する。MPU10が命令を実行する際、必要ならばデータ
バスD0:63(1)を通じてメモリシステム13との間でオ
ペランドを入出力する。また、コプロセッサ命令をデコ
ードした場合はMPU10から第1FPU11あるいは第2FPU12へ
アドレスバスA0:31(2)を通じてコマンドを送り、FPU
11または12で演算を行う。
FPU11または12で演算を行う場合、必要ならばMPU10は
データバスD0:63(1)を通じてオペランドを入出力す
る。コプロセッサ命令を第1FPU11で実行するか第2FPU12
で実行するかは、その時点でMPU10内に保持さているコ
プロセッサ識別子(CPID)により決定される。CPIDはソ
フトウエアにより書換え可能であり、CPIDを書換えるこ
とによりMPU10はコプロセッサ命令を第1FPU11と第2FPU1
2とのいずれで実行することも可能である。また、FPU1
1,12での演算実行時に例外が発生した場合に、例外を発
生したコプロセッサ命令のプログラムカウンタ(PC)値
を特定するため、コプロセッサ命令のPC値を保持するレ
ジスタがMPU10及びFPU12内に備えられている。
MPU10には第1FPU11で実行するコプロセッサ命令のPC
値を複数保持するPCキュー(第1FPC21)があり、第2FPU
12には第2FPU12で実行するコプロセッサ命令のPC値を保
持する第2FPC22がある。第2FPC22に保持されるPC値はMP
U10から転送される。これらの第1,第2のFPC21,22が上
述のレジスタである。
第1FPC21あるいは第2FPC22に保持されたPC値は対応す
るコプロセッサ命令が例外を起こした際に使用される。
FPU11(12)においてコプロセッサ命令が例外を起こす
と、まずそのFPU11(12)から割込み制御回路15に割込
みが要求される。割込み制御回路15はFPU11(12)から
の割込み要求に従ってMPU10に割込み処理を要求する。
これにより割込み処理ハンドラが起動する。割込み処理
ハンドラではFPU11(12)から例外情報が読出され、そ
の内容に従って第1FPC21または第2FPC22に保持されてい
るPC値が読出されて例外処理が行われる。
以下、本発明のマイクロプロセッサの命令体系,処理
機構及び処理方法について更に詳しく述べる。
(2)「本発明のマイクロプロセッサの命令のフォーマ
ット」 本発明のマイクロプロセッサの命令は16ビット単位で
可変長となっており、奇数バイト長の命令はない。
本発明のマイクロプロセッサでは高頻度に使用される
命令を短いフォーマットとするため、特に工夫された命
令フォーマット体系を有する。例えば、2オペランド命
令に対しては、基本的に「4バイト」+「拡張部」の構
成を有し、総てのアドレッシングモードが利用可能な一
般形フォーマットと、頻度の高い命令とアドレッシング
モードのみを使用可能な短縮形フォーマットとの2つの
フォーマットがある。
第11図から第15図に本発明のマイクロプロセッサの命
令フォーマットの模式図を示す。なお、これらのフォー
マット中に現われる記号の意味は以下の通りである。
−:オペレーションコードが入る部分 Ea:8ビットの一般形のアドレッシングモードでオペラン
ドを指定する部分 Sh:6ビットの短縮形のアドレッシングモードでオペラン
ドを指定する部分 Rn:レジスタファイル上のオペランドをレジスタ番号で
指定する部分 フォーマットは、第11図に示すように、右側がLSB側
で且つ高いアドレスである。アドレスNとアドレスN+
1との2バイトを見ないと命令フォーマットが判別でき
ないが、これは命令が必ず16ビット(2バイト)単位で
フェッチ及びデコードされることを前提としているため
である。
本発明のマイクロプロセッサの命令では、いずれのフ
ォーマットの場合も、各オペランドのEaまたはShの拡張
部は、必ずそのEaまたはShの基本部を含むハーフワード
の直後に置かれる。これは、命令により暗黙に指定され
る即値データあるいは命令の拡張部に優先する。従っ
て、4バイト以上の命令では、Eaの拡張部によって命令
のオペレーションコードが分断される場合がある。
また後述する如く、多段間接モードによってEaの拡張
部に更に拡張部が付加される場合にも、次の命令オペレ
ーションコードよりもそちらの方が優先される。例え
ば、第1ハーフワードにEa1を含み、第2ハーフワード
にEa2を含み、第3ハーフワードまである6バイト命令
の場合を考える。
Ea1に多段間接モードを使用しているため、普通の拡
張部の他に他段間接モードの拡張部も有するものとす
る。この場合、実際の命令ビットパターンは、命令の第
1ハーフワード(Ea1の基本部を含む)、Ea1の拡張部、
Ea1の多段間接モード拡張部、命令の第2ハーフワード
(Ea2の基本部を含む)、Ea2の拡張部、命令の第3ハー
フワード、の順となる。
(2.1)「短縮形2オペランド命令」 第12図は2オペランド命令の短縮形フォーマットの模
式図である。
このフォーマットにはソースオペランド側がメモリと
なるL−formatとデスティネーションオペランド側がメ
モリとなるS−formatとがある。
L−formatでは、Shはソースオペランドの指定フィー
ルド、Rnはデスティネーションオペランドのレジスタの
指定フィールド、RRはShのオペランドサイズの指定を表
す。レジスタ上に置かれたデスティネーションオペラン
ドのサイズは、32ビットに固定されている。レジスタ側
とメモリ側とのサイズが異なり、ソース側のサイズが小
さい場合に符号拡張が行なわれる。
S−formatでは、Shはデスティネーションオペランド
の指定フィールド、Rhはソースオペランドのレジスタ指
定フィールド、RRはShのオペランドサイズの指定を表
す。レジスタ上に置かれたソースオペランドのサイズ
は、32ビットに固定されている。レジスタ側とメモリ側
とのサイズが異なり且つソース側のサイズが大きい場合
には、溢れた部分の切捨てとオーバーフローチェックが
行なわれる。
(2.2)「一般形1オペランド命令」 第13図は1オペランド命令の一般形フォーマット(G1
−format)の模式図である。
MMはオペランドサイズの指定フィールドである。な
お、一部のG1−format命令では、Eaの拡張部以外にも拡
張部がある。また、MMを使用しない命令もある。
(2.3)「一般形2オペランド命令」 第14図は2オペランド命令の一般形フォーマットの模
式図である。
このフォーマットに含まれるのは、8ビットで指定す
る一般形アドレッシングモードのオペランドが最大2つ
存在する命令である。オペランドの総数自体は3つ以上
になる場合もある。EaMはデスティネーションオペラン
ドの指定フィールド、MMはデスティネーションオペラン
ドサイズの指定フィールド、EaRはソースオペランドの
指定フィールド、RRはソースオペランドサイズの指定フ
ィールドである。一部のG−format命令では、EaM及びE
aRの拡張部以外にも拡張部がある。
第15図はショートブランチ命令のフォーマットの模式
図である。
ccccは分岐条件指定フィールド、disp:8はジャンプ先
との変位指定フィールドである。本発明のマイクロプロ
セッサでは、8ビットで変位を指定する場合には、ビッ
トパターンでの指定値を2倍して変位値とする。
(2.4)「アドレッシングモード」 本発明のマイクロプロセッサの命令のアドレッシング
モード指定方法には、レジスタを含めて6ビットで指定
する短縮形と、8ビットで指定する一般形がある。
未定義のアドレッシングモードを指定した場合、ある
いは意味的に考えて明らかに不合理なアドレッシングモ
ードの組合わせが指定された場合には、未定義命令を実
行した場合と同様に予約命令例外が発生し、例外処理が
起動する。
これに該当するのは、デスティネーションが即値モー
ドの場合、アドレス計算を伴うべきアドレシングモード
指定フィールドで即値モードを使用した場合等である。
第16図から第26図に示すフォーマット中で使用される
記号の意味は以下の通りである。
Rn:レジスタ指定 (Sh):6ビットの短縮形アドレッシングモードでの指定
方法 (Ea):8ビットの一般形アドレッシングモードでの指定
方法 図中で点線で囲まれた部分は、拡張部を示す。
(2.4.1)「基本アドレッシングモード」 本発明のマイクロプロセッサの命令では種々なアドレ
ッシングモードをサポートする。その内、本発明のマイ
クロプロセッサでサポートする基本アドレッシングモー
ドには、レジスタ直接モード、レジスタ間接モード、レ
ジスタ相対間接モード、即値モード、絶対モード、PC相
対間接モード、スタックポップモード及びスタックプッ
シュモードがある。
レジスタ直接モードは、レジスタの内容をそのままオ
ペランドとする。フォーマットを第16図に示す。図中、
Rnは汎用レジスタまたはFPUレジスタの番号を示す。
レジスタ間接モードは、汎用レジスタの内容をアドレ
スとするメモリの内容をオペランドとする。フォーマッ
トを第17図に示す。図中、Rnは汎用レジスタの番号を示
す。
レジスタ相対間接モードは、ディスプレースメント値
が16ビットであるか32ビットであるかにより、2種類に
分かれる。それぞれ、汎用レジスタの内容に16ビットま
たは32ビットのディスプレースメント値を加えた値をア
ドレスとするメモリの内容をオペランドとする。フォー
マットを第18図に示す。図中、Rnは汎用レジスタの番号
を示す。disp:16とdisp:32は、それぞれ、16ビットのデ
ィスプレースメント値、32ビットのディスプレースメン
ト値を示す。ディスプレースメント値は符号付きとして
扱われる。
即値モードは、命令コード中で指定されるビットパタ
ンをそのまま2進数と見なしてオペランドとする。フォ
ーマットを第19図に示す。図中imm_dataは即値を示す。
imm_dataのサイズは、オペランドサイズとして命令中で
指定される。
絶対モードは、アドレス値が16ビットで示されるか32
ビットで示されるかにより2種類に分かれる。それぞ
れ、命令コード中で指定される16ビットまたは32ビット
のビットパタンをアドレスとしたメモリの内容をオペラ
ンドとする。フォーマットを第20図に示す。図中、abs:
16とabs:32とは、それぞれ、16ビット、32ビットのアド
レス値を示す。abs:16でアドレスが示される場合は指定
されたアドレス値を32ビットに符号拡張する。
PC相対間接モードは、ディスプレースメント値が16ビ
ットであるか32ビットであるかにより、2種類に分かれ
る。それぞれ、プログラムカウンタの内容に16ビットま
たは32ビットのディスプレースメント値を加えた値をア
ドレスとするメモリの内容をオペランドとする。フォー
マットを第21図に示す。図中、disp:16とdisp:32は、そ
れぞれ16ビットのディスプレースメント値、32ビットの
ディスプレースメント値を示す。ディスプレースメント
値は符号付きとして扱われる。PC相対間接モードにおい
て参照されるプログラムカウンタの値は、そのオペラン
ドを含む命令の先頭アドレスである。多段間接アドレッ
シングモードにおいてプログラムカウンタ(PC)の値が
参照される場合にも、同じように命令先頭のアドレスを
PC相対の基準値として使用する。
スタックポップモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとする。
オペランドアクセス後、SPをオペランドサイズだけイン
クリメントする。例えば、32ビットデータを扱う際に
は、オペランドアクセス後にSPが+4だけ更新される。
8,16,64ビットのサイズのオペランドに対するスタック
ポップモードの指定も可能であり、それぞれSPが+1,+
2,+8だけ更新される。フォーマットを第22図に示す。
オペランドに対してスタックポップモードが意味を持た
ない場合には、予約命令例外が発生される。具体的に予
約命令例外となるのは、writeオペランド、read−modif
y−writeオペランドに対するスタックポップモード指定
である。
スタックプッシュモードは、SPの内容をオペランドサ
イズだけデクリメントした内容をアドレスとするメモリ
の内容をオペランドとする。スタックプッシュモードで
はオペランドアクセス前にSPがデクリメントされる。例
えば、32ビットデータを扱う際には、オペランドアクセ
ス前にSPが−4だけ更新される。8,16,64ビットのサイ
ズのオペランドに対するスタックプッシュモードの指定
も可能であり、それぞれSPが−1,−2,−8だけ更新され
る。フォーマットを第23図に示す。オペランドに対して
スタックプッシュモードが意味を持たない場合には、予
約命令例外が発生される。具体的に予約命令例外となる
のはreadオペランド,read−modify−writeオペランドに
対すスタックプッシュモード指定である。
(2.4.2)「多段間接アドレッシングモード」 複雑なアドレッシングも、基本的には加算と間接参照
の組合わせに分解される、従って、加算と間接参照のオ
ペレーションとをアドレッシングのプリミティブとして
与えておき、それらを任意に組合わせることができれ
ば、いかに複雑なアドレッシングモードも実現可能であ
る。本発明のマイクロプロセッサの命令の多段間接アド
レッシングモードはこのような考え方に基づいている。
複雑なアドレッシングモードは、モジュール間のデータ
参照あるいはAI(Artificial Intelligence)言語の処
理系に特に有用である。
多段間接アドレッシングモードの指定に際しては、基
本アドレッシングモード指定フィールドでは、レジスタ
ベース多段間接モード、PCベース多段間接モード、絶対
ベース多段間接モードの3種類の指定方法の内いずれか
1つを指定する。
レジスタベース多段間接モードは、汎用レジスタの値
を拡張する多段間接アドレッシングのベース値とするア
ドレッシングモードである。フォーマットを第24図に示
す。図中、Rnは汎用レジスタの番号を示す。
PCベース多段間接モードは、プログラムカウンタの値
を拡張する多段間接アドレッシングのベース値とするア
ドレッシングモードである。フォーマットを第25図に示
す。
絶対ベース多段間接モードは、ゼロを拡張する多段間
接アドレッシングのベース値とするアドレッシングモー
ドである。フォーマットを第26図に示す。
拡張される多段間接モード指定フィールドは、16ビッ
トを一単位としており、これを任意数反復する。1段の
多段間接モードにより、ディスプレースメントの加算、
インデクスレジスタのスケーリング(×1,×2,×4,×
8)と加算及びメモリの間接参照を行なう。多段間接モ
ードのフォーマットを第27図に示す。各フィールドは以
下に示す意味を有する。
E=0:多段間接モード継続 E=1:アドレス計算終了 tmp==>address of operand I=0:メモリ間接参照なし tpm+disp+Rx * Scale==>tmp I=1:メモリ間接参照あり mem[tmp+disp+Rx * Scale]==>tmp M=0:<Rx>をインデクスとして使用 M=1:特殊なインデクス <Rx>=0 インデクス値を加算しない(Rx=0) <Rx>=1 プログラムカウンタをインデクス値として
使用(Rx=PC) <Rx>=2〜reserved 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) プログラムカウンタに対して×2、×4、×8のスケ
ーリングを行なった場合には、その段の処理終了後の中
間値(tmp)として、不定値が入る。この多段間接モー
ドによって得られる実効アドレスは予測できない値とな
るが、例外は発生しない。プログラムカウンタに対する
スケーリングの指定は行なってはいけない。
多段間接モードによる命令フォーマットのバリエーシ
ョンを第28図及び第29図に示す。第28図は多段間接モー
ドが継続するか終了するかのバリエーションを示す。第
29図はディスプレースメントのサイズのバリエーション
を示す。
任意段数の多段間接モードが利用できれば、コンパイ
ラの中で段数による場合分けが不要になるので、コンパ
イラの負担が軽減されるというメリットがある。多段の
間接参照の頻度が非常に少ないとしても、コンパイラと
しては必ず正しいコードを発生できなければならないか
らである。このため、フォーマット上、任意の段数が可
能になっている。
(3)「本発明のマイクロプロセッサのコプロセッサコ
マンド」 本発明のマイクロプロセッサの命令にはFPU11,12で実
行されるコプロセッサ命令が含まれる。コプロセッサ命
令はMPU10によりデコードされた後、コマンドとしてFPU
11(12)へ転送されFPU11(12)で実行される。コマン
ドは第30図に示すフォーマットを有し、第31図に示す如
く、アドレスバス2の下位20ビットを使用して転送され
る。
コマンドは、FPU命令フィールドとPCIDフィールドとC
PIDフィールドとにて構成されている。FPU命令フィール
ドはFPU11(12)に対する命令の内容を示す演算指定子
である。PCIDフィールドはMPU10内に保持されたコプロ
セッサ命令のPC値を区別するための番号を示し、FPU11
で例外が発生した場合に、例外を起こしたコプロセッサ
命令のPC値をMPU10内に保持された複数のPC値から選ぶ
ための番号である。CPIDはMPU10のプロセッサステータ
スワード(PSW)のCPIDフィールドの値を示し、複数のF
PUをMPU10に接続した場合に各FPUを区別するための番号
である。
FPU命令には第32図から第34図に示すフォーマットが
ある。メモリ・FPUレジスタ間命令(M−FR命令)、MPU
レジスタ・FPUレジスタ間命令(GR−FR命令)及び1オ
ペランド命令はオペレーションコードフィールドとFPU
レジスタ番号フィールド(FR)とにて構成され、第32図
に示すフォーマットを有する。FPUレジスタ・FPUレジス
タ間命令(FR−FR命令)はオペレーションコードフィー
ルドと2つのFPUレジスタ番号フィールド(FR1とFR2)
とにて構成され、第33図に示すフォーマットを有する。
ゼロオペランドフィールドは第34図に示すフォーマット
を有する。
(4)「機能ブロックの構成」 第2図は本発明のマイクロプロセッサ(第1図のMPU1
0)の一構成例を示すブロック図である。
本発明のマイクロプロセッサの内部を機能的に大きく
分けると、命令フェッチ部51、命令デコード部52、PC計
算部53、オペランドアドレス計算部54、マイクロROM部5
5、データ演算部56及び外部バスインターフェイス部57
に分かれる。第2図では、その他に外部へアドレスを出
力するアドレス出力回路58と外部とデータの入出力を行
うデータ入出力回路59、制御信号入出力回路60及び命令
コードの入力を行う命令入力回路61を上述の各機能ブロ
ック部と分けて示した。
(4.1)「命令フェッチ部」 命令フェッチ部51には、命令キャッシュ、命令キュー
とその制御部等がある。これらは次にフェッチすべき命
令のアドレスを決定して、命令キャッシュまたは外部の
メモリシステム13から命令をフェッチする。また、命令
キャッシュの命令登録も行う。
次にフェッチすべき命令のアドレスは、命令キューへ
入力すべき命令のアドレスとして専用のカウンタで計算
される。ジャンプが発生した場合には、ジャンプターゲ
ットの新たな命令のアドレスがPC計算部53またはデータ
演算部56から転送されてくる。
外部のメモリから命令がフェッチされる場合は、外部
バスインターフェイス部57を通じて、フェッチすべき命
令のアドレスがアドレス出力回路58から外部へ出力さ
れ、命令入力回路61から命令コードがフェッチされる。
バッファリングした命令コードの内、命令デコード部
52で次にデコードすべき命令コードは命令デコード部52
へ出力される。
(4.2)「命令デコード部」 命令デコード部52では基本的に16ビット(ハーフワー
ド)単位で命令コードをデコードする。この命令デコー
ド部52には第1ハーフワードに含まれるオペレーション
コードをデコードするFHWデコーダ、第2,第3ハーフワ
ードに含まれるオペレーションコードをデコードするNF
HWデコーダ、アドレッシングモードをデコードするアド
レッシングモードデコーダが含まれる。
FHWデコーダ及びNFHWデコーダの出力を更にデコード
して、マイクロROMのエントリアドレスを計算する第2
デコーダ、条件分岐命令の分岐予測を行う分岐予測機
構、オペランドアドレス計算の際のパイプラインコンフ
リクトをチェックするアドレス計算コンフリクトチェッ
ク機構も含まれる。
命令フェッチ部51から入力された命令コードは1クロ
ックにつき0〜6バイトデコードされる。デコード結果
の内、データ演算部56での演算に関する情報がマイクロ
ROM部55へ、オペランドアドレス計算に関係する情報が
オペランドアドレス計算部54へ、PC計算に関係する情報
がPC計算部53へそれぞれ出力される。
命令デコード部52では、本発明のマイクロプロセッサ
において実行される主プロセッサ命令とコプロセッサで
実行されるコプロセッサ命令との両方がデコードされ
る。
(4.3)「マイクロROM部」 マイクロROM部55には、データ演算部56の制御を行う
ための種々のマイクロプログラムルーチンが格納されて
いるマイクロROM、マイクロシーケンサ、マイクロ命令
デコーダ等が含まれる。マイクロ命令はマイクロROMか
ら1クロックに1度読出される。マイクロシーケンサは
マイクロプログラムで示されるシーケンス処理の他に、
例外,割込,トラップ(この3つをあわせてEITと称
す)の処理及びテスト割込みをハードウエア的に受付け
る。またマイクロROM55部はストアバッファの管理も行
う。
マイクロROM55部には命令コードに依存しない割込み
及び演算実行結果によるフラッグ情報と、デコーダ2の
出力等の命令デコード部52の出力が入力される。
マイクロデコーダの出力は主にデータ演算部56に対し
て出力されるが、ジャンプ命令の実行による他の先行処
理中止情報等、一部の情報は他の機能ブロックへも出力
される。
(4.4)「オペランドアドレス計算部」 オペランドアドレス計算部54は、命令デコード部52の
アドレスデコーダ等から出力されたオペランドアドレス
計算に関係する情報によりハードワイヤード制御され
る。このオペランドアドレス計算部54ではオペランドの
アドレス計算に関する大半の処理が行われる。メモリ間
接アドレッシングのためのメモリアクセスのアドレス及
びオペランドアドレスがメモリにマップされたI/O領域
に入るか否かのチェックも行われる。また、コプロセッ
サ命令のオペランドアドレス計算も行われる。
アドレス計算結果は外部バスインターフェイス部57へ
送られる。アドレス計算に必要な汎用レジスタ及びプロ
グラムカウンタの値はデータ演算部56から入力される。
メモリ間接アドレッシングを行う際は、外部バスイン
ターフェイス部57を通じてアドレス出力回路58から外部
へ参照すべきメモリアドレスが出力され、データ入出力
部59から間接アドレスをフェッチする。
(4.5)「PC計算部」 PC計算部53は命令デコード部52から出力されるPC計算
に関係する情報でハードワイヤードに制御され、命令の
PC値を計算する。本発明のマイクロプロセッサの命令は
可変長命令であり、命令をデコードした後でなければそ
の命令の長さが判断されない。PC計算部53は、命令デコ
ード部52から出力される命令長をデコード中の命令のPC
値に加算することにより、次の命令のPC値を生成する。
PC計算部53の計算結果は各命令のPC値として命令のデ
コード結果と共に出力される。
(4.6)「データ演算部」 データ演算部56はマイクロプログラムにより制御さ
れ、マイクロROMの出力であるマイクロ命令に従って各
命令の機能を実現するために必要な演算をレジスタファ
イルと演算器とで実行する。
命令の演算対象となるオペランドがアドレスまたは即
値である場合は、オペランドアドレス計算部54で計算さ
れたアドレスまたは即値が外部バスインターフェイス部
57を通過してデータ演算部56へ入力される。また、命令
の演算対象となるオペランドがメモリにあるデータの場
合は、アドレス計算部54で計算されたアドレスをバスイ
ンターフェイス部57がアドレス出力回路58から出力する
ことにより、メモリシステム13からフェッチしたオペラ
ンドがデータ入出力回路59からデータ演算部56へ入力さ
れる。
コプロセッサ命令に対しては、マイクロプログラムに
従って必要なコマンド及びオペランドの転送を定められ
たコプロセッサプロトコルでデータ演算部56が外部バス
I/F部57,アドレス出力回路58,データ入出力回路59,制御
信号入出力回路60等を介して行う。
データ演算の際にメモリシステム13をアクセスする必
要がある場合は、マイクロプログラムの指示により外部
バスインターフェイス部57を通じてアドレス出力回路58
からアドレスをMPU10外部へ出力することにより、デー
タ入出力回路59を通じて目的のデータがフェッチされ
る。
メモリシステム13にデータをストアする場合は、 外部バスインターフェイス部57を通じてアドレス出力
回路58からアドレスを出力すると同時に、データ入出力
回路59からデータをMPU10外部へ出力する。オペランド
ストアを効率的に行うために、データ演算部56には4バ
イトのストアバッファがある。
ジャンプ命令の処理あるいは例外処理等が実行されて
新たな命令アドレスをデータ演算部56が得た場合は、こ
れをデータ演算部56は命令フェッチ部51とPC計算部53へ
出力する。
第5図は本発明のマイクロプロセッサのデータ演算部
56,マイクロROM部55の一部及びバスインターフェイス部
57の一部の詳細な構成のブロック図である。
データ演算部56内には、汎用レジスタ及び作業用レジ
スタからなるレジスタファイル103,プロセッサの状態ビ
ット及びフラッグからなるプロセッサステータスワード
(PSW)104,ALU及びバレルシフタ等からなるデータ演算
回路105,メモリとデータとをやり取りする際にデータを
バイト単位でローテイトしてワード整置する整置回路10
6,8バイトの外部バスと4バイトの内部バスとの間でデ
ータを変換する4バイト−8バイト変換回路107,内部デ
ータバスであるS1バス,S2バス,DOバスとコプロセッサ命
令に従ってコマンドをコプロセッサへ転送する際にその
コプロセッサ命令のPC値を4つまで保持するPCキュー21
等が備えられている。
主な演算器相互間はS1バス,S2バス,DOバスで結合され
ており、1つのレジスタ間演算を指示する1マイクロ命
令を1クロックサイクルで処理する。
PCキュー21に保持されたコプロセッサ命令のPC値は、
そのコプロセッサ命令がオーバーフロー,アンダーフロ
ーあるいはゼロ除算等の例外を起こした際に例外処理ハ
ンドラで読出されて使用される。またPCキュー21の4つ
のエントリへはサイクリックに値が書込まれ、5番目の
書込みでは1番目に書込まれたエントリのPC値にオーバ
ライトされる。これにより、PCキュー21には常に最新の
4つのPC値が保持される。
PSW104の構成を第35図の模式図に示す。
PSW104は、プロセッサの動作モードを示す動作モード
フィールド,外部割込みのマスクレベルを示すIMASKフ
ィールド,コプロセッサに対してコマンドを転送する際
に転送先のコプロセッサを特定するために使用するCPID
フィールド及びキャーリー及びゼロフラッグなど演算結
果により変化するフラッグフィールドにて構成されてい
る。
(4.7)「外部バスインターフェイス部」 外部バスインターフェイス部57は本発明のマイクロプ
ロセッサの入出力ピンでの通信を制御する。メモリのア
クセスはすべてクロック同期で行われ、最小2クロック
サイクルで行うことが可能である。
外部バスインターフェイス部57にはデータキャッシュ
があり、オペランドの読出しがデータキャッシュにヒッ
トした場合はメモリアクセスは行われない。オペランド
の書込みはデータキャッシュとメモリの両方に対して行
われる。コプロセッサがメモリに対してオペランドを書
込む際は、そのオペランドをデータ入出力回路58を介し
て読込み、同一アドレスのデータキャッシュの内容を変
更する。
メモリに対するアクセス要求は、命令フェッチ部51,
アドレス計算部54及びデータ演算部56から独立に生じ
る。外部バスインターフェイス部57はこれらのメモリア
クセス要求を調停する。更に、メモリと本発明のマイク
ロプロセッサとを結ぶデータバスサイズである64ビット
(ダブルワード)の整置境界を跨ぐメモリ番地に位置す
るデータのアクセスに際しては、このブロック内で境界
を跨ぐことを自動的に検知して、2回のメモリアクセス
に分解して行われる。
プリフェッチされるオペランドとストアされるオペラ
ンドとが重なる場合のコンフリクト防止処理及びストア
オペランドからフェッチオペランドへのバイパス処理も
この外部バスインターフェイス部57で行われる。
(5)「パイプライン処理」 本発明のマイクロプロセッサは命令をパイプライン処
理することにより高性能を発揮する。ここではまず、本
発明のマイクロプロセッサのパイプライン処理方法につ
いて説明する。
(5.1)「パイプライン処理機構」 本発明のマイクロプロセッサのパイプライン処理を模
式的に第4図に示す。
命令をプリフェッチする命令フェッチステージ(IFス
テージ)31、命令をデコードするデコードステージ(D
ステージ)32、オペランドのアドレス計算を行うオペラ
ンドアドレス計算ステージ(Aステージ)33、マイクロ
ROMアクセス(特にRステージ36と称す)とオペランド
のプリフェッチ(特にOFステージ37と称す)を行うオペ
ランドフェッチステージ(Fステージ)34、命令を実行
する実行ステージ(Eステージ)35の5段構成をパイプ
ライン処理の基本とする。
Eステージ35には1段のストアバッファがある他、高
機能命令の一部は命令実行自体をパイプライン化してい
るため、実際には5段以上のパイプライン処理効果が発
揮される。
各ステージはそれぞれ他のステージとは独立して動作
し、理論上は5つのステージが完全に独立して動作す
る。各ステージは1回の処理を最小1クロックで実行可
能である。従って理想的には1クロックごとに次々とパ
イプライン処理が進行する。
本発明のマイクロプロセッサには、メモリ−メモリ間
演算,メモリ間接アドレッシング等のような一回の基本
パイプランイン処理では処理不可能な命令があるが、こ
れらの処理に対しても可能な限り均衡したパイプライン
処理が行えるように工夫されている。複数のメモリオペ
ランドを有する命令に対しては、メモリオペランドの数
に基づいてデコード段階で命令を複数のパイプライン処
理単位(ステップコード)に分解してパイプライン処理
を行うようにしている。パイプライン処理単位の分解方
法に関しては特開昭63−89932で詳しく述べられてい
る。
IFステージ31からDステージ32へ渡される情報は命令
コードそのものである。Dステージ32からAステージへ
渡される情報は命令で指定された演算に関する情報(D
コード41と称す)と、オペランドのアドレス計算に関係
する情報(Aコード42と称す)との2つがある。Aステ
ージ33からFステージへ渡される情報はマイクロプログ
ラムルーチンのエントリ番地及びマイクロプログラムへ
のパラメータ等を含むRコード43と、オペランドのアド
レスとアクセス方法指示情報等を含むFコード44との2
つである。Fステージ34からEステージ35へ渡される情
報は演算制御情報とリテラル等を含むEコード45と、オ
ペランド及びオペランドアドレス等を含むSコード46と
の2つである。
Eステージ35以外のステージで検出されたEITは、そ
のコードがEステージ35へ到達するまではEIT処理を起
動しない。Eステージ35で処理されている命令のみが実
行段階の命令であり、IFステージ31からFステージ34ま
での間で処理されている命令は未だ実行段階に至ってい
ないのである。従ってEステージ35以外で検出されたEI
Tはこれが検出されたことがステップコード中に記録さ
れて次のステージへ伝えられるのみである。
(5.2)「各パイプラインステージの処理」 各パイプラインステージの入出力ステップコードには
第4図に示す如き名称が便宜上付与されている。またス
テップコードはオペレーションコードに関する処理を行
い、マイクロROMのエントリ番地及びEステージ35に対
するパラメータ等になる場合とEステージ35のマイクロ
命令に対するオペランドになる場合とがある。
(5.2.1)「命令フェッチステージ」 命令フェッチステージ(IFステージ)31は命令を命令
キャッシュあるいはメモリシステム13からフェッチして
命令キューへ入力し、Dステージ32へ命令コードを出力
する。命令キューの入力は整置された4バイト単位で行
われる。メモリシステム13から命令をフェッチする場合
は、整置された4バイトにつき最小2クロックを要す
る。命令キャッシュがヒットした場合は、整置された4
バイトにつき1クロックでフェッチ可能である。命令キ
ューの出力単位は2バイトごとに可変であり、1クロッ
クの間に最大6バイトまで出力できる。またジャンプの
直後には命令キューをバイパスして命令基本部2バイト
を直接命令デコーダへ転送することも可能である。
命令キャッシュへの命令の登録及びクリア等の制御、
プリフェッチ先命令アドレスの管理及び命令キューの制
御もIFステージ31で行われる。
(5.2.2)「命令デコードステージ」 命令デコードステージ(Dステージ)32はIFステージ
31から入力された命令コードをデコードする。デコード
は命令デコード部52のFHWデコーダ、NFHWデコーダ、ア
ドレッシングモードデコーダを使用して、1クロックに
1度行われ、1回のデコード処理で、0〜6バイトの命
令コードが消費される(リターンサブルーチン命令の復
帰先アドレスを含むステップコードの出力処理等では命
令コードは消費されない)。1回のデコードでAステー
ジ33に対してアドレス計算情報としてのAコード42であ
る約35ビットの制御コードと最大32ビットアドレス修飾
情報と、オペコードの中間デコード結果としてのDコー
ド41である約50ビットの制御コードと8ビットのリテラ
ル情報とが出力される。
Dステージ32では各命令のPC計算部53の制御、命令キ
ューからの命令コード出力処理も行われる。
(5.2.3)「オペランドアドレス計算ステージ」 オペランドアドレス計算ステージ(Aステージ)33で
の処理は大きく2つに分かれる。1つは命令デコード部
52の第2デコーダを使用して、オペレーションコードの
後段デコードを行う処理で、他方はオペランドアドレス
計算部54でオペランドアドレスの計算を行う処理であ
る。
オペコードの後段デコード処理はDコード41を入力と
し、レジスタ及びメモリの書込み予約及びマイクロプロ
グラムルーチンのエントリ番地とマイクロプログラムに
対するパラメータ等を含むRコード43の出力を行う。な
お、レジスタ及びメモリの書込み予約は、アドレス計算
で参照したレジスタ及びメモリの内容が、パイプライン
上を先行する命令で書換えられることにより誤ったアド
レス計算が行われることを回避するためである。
オペランドアドレス計算処理はAコード42を入力と
し、これに従ってオペランドアドレス計算部54で加算及
びメモリ間接参照を組合わせてアドレス計算を行い、そ
の計算結果をFコード44として出力する。この際、アド
レス計算に伴うレジスタ及びメモリの読出し時にコンフ
リクトチェックが行われる。即ち、先行命令のレジスタ
あるいはメモリへの書込み処理が終了していないために
コンフリクトが指示されれば、Eステージ35での書込み
処理が終了するまで先行命令が待機させられる。
(5.2.4)「マイクロROMアクセスステージ」 オペランドフェッチステージ(Fステージ)34での処
理も大きく2つに分かれる。1つはマイクロROMのアク
セス処理であり、これを特にRステージ36と称す。他方
はオペランドプリフェッチ処理であり、これを特にOFス
テージ37と称す。Rステージ36とOFステージ37とは必ず
しも同時に動作するわけではなく、メモリアクセス権が
獲得可能か否か等に依存して、独立に動作する。
Rステージ36での処理であるマイクロROMアクセス処
理は、Rコード43に対して次のEステージ35での実行に
使用する実行制御コードであるEコード45を生成するた
めのマイクロROMアクセスとマイクロ命令デコード処理
とである。1つのRコード43に対する処理が2つ以上の
マイクロプログラムステップに分解される場合、マイク
ロROMはEステージ35で使用され、次のRコード43はマ
イクロROMアクセス待ちになる。Rコード43に対するマ
イクロROMアクセスが行われるのはその前のEステージ3
5での最後のマイクロ命令実行の時である。本発明のマ
イクロプロセッサではほとんどの基本命令は1マイクロ
プログラムステップ行われるため、実際にはRコード43
に対するマイクロROMアクセスが次々と行われることが
多い。
(5.2.5)「オペランドフェッチステージ」 オペランドフェッチステージ(OFステージ)37はFス
テージ34で行われる上記の2つの処理の内、オペランド
プリフェッチ処理を行う。オペランドのプリフェッチは
データキャッシュまたはメモリシステム13から行われ
る。
オペランドプリフェッチはFコード44を入力とし、フ
ェッチしたオペランドとそのアドレスとをSコード46と
して出力する。1つのFコード44ではダブルワード境界
を跨いでもよいが、8バイト以下のオペランドフェッチ
が指定される。Fコード44にはオペランドのアクセスを
行うか否かの指定も含まれており、Aステージ33で計算
されたオペランドアドレス自体及び即値をEステージ35
へ転送する場合にはオペランドプリフェッチは行われ
ず、Fコード44の内容がSコード46として転送される。
プリフェッチしようとするオペランドとEステージ35が
書込み処理を行おうとするオペランドとが一致する場合
は、オペランドプリフェッチはデータキャッシュあるい
はメモリからは行われず、バイパス処理される。
(5.2.6)「実行ステージ」 実行ステージ(Eステージ)35はEコード45,Sコード
46を入力として動作する。このEステージ35が命令を実
行するステージであり、Fステージ34以前のステージで
行われた処理は総てEステージ35での処理のための前処
理である。Eステージ35でジャンプ命令が実行されたり
あるいはEIT処理が起動されたりした場合は、IFステー
ジ31からFステージ34までの間の処理は総て無効化され
る。Eステージ35はマイクロプログラムにより制御さ
れ、Rコード45で示されたマイクロプログラムルーチン
のエントリ番地からの一連のマイクロ命令を実行するこ
とにより命令を実行する。
マイクロROMの読出しとマイクロ命令の実行とはパイ
プライン化されている。従って、マイクロプログラムで
分岐が発生した場合は1マイクロステップの空白が生じ
る。また、Eステージ35はデータ演算部56にあるストア
バッファを利用して、4バイト以内のオペランドストア
と次のマイクロ命令の実行とをパイプライン処理するこ
とも可能である。
Eステージ35ではAステージ33で行ったレジスタ及び
メモリに対する書込み予約をオペランドの書込みの後に
解除する。
各種の割込は命令の切れ目のタイミングにおいてEス
テージ35で直接受付けられ、マイクロプログラムにより
必要な処理が実行される。その他の各種EITの処理もマ
イクロプログラムにより実行される。
(5.3)「各パイプラインステージの状態制御」 パイプラインの各ステージは入力ラッチと出力ラッチ
とを有していて、他のステージとは独立に動作すること
を基本とする。各ステージは1つ前に行った処理が終了
し、その処理結果を出力ラッチから次のステージの入力
ラッチへ転送し、自身のステージの入力ラッチに次の処
理に必要な入力信号が総てそろえば次の処理を開始す
る。
つまり、各ステージは、1つ前段のステージから出力
されてくる次の処理に必要な入力信号が総て有効とな
り、現在の処理結果を後段のステージの入力ラッチへ転
送して出力ラッチが空になると次の処理を開始する。
換言すれば、各ステージが動作を開始する直前のタイ
ミングで入力信号が総てそろっている必要がある。入力
信号がそろっていない場合は、そのステージは待ち状態
(入力待ち)になる。出力ラッチから次のステージの入
力ラッチへの転送を行う際は次のステージの入力ラッチ
が空き状態になっている必要があり、次のステージの入
力ラッチが空いていない場合もパイプラインステージは
待ち状態(出力待ち)になる。必要なメモリアクセス権
が獲得不可能であったり、処理しているメモリアクセス
にウエイトステート(待機状態)が挿入されていたり、
その他のパイプラインコンフリクトが生じると、各ステ
ージの処理自体が遅延する。
(6)「本発明のマイクロプロセッサを用いたデータ処
理装置の詳細回路接続図」 第3図に本発明のマイクロプロセッサをMPU10とし、
第1FPU11,メモリシステム13,クロックジェネレータ14,
割込み制御回路15を用いたデータ処理装置の接続関係を
示す。
本発明装置の第1FPU11は最大3個までコプロセッサ命
令を蓄積して受付けることが可能であるが、MPU10では
4エントリのPCキューがあるため、コプロセッサ命令の
実行時に例外が発生した際にも、その命令のPC値はPCキ
ュー21に保持され、後続のコプロセッサ命令のPC値の書
込みにより破壊されることはない。また、MPU10のPSW10
4のCPID=“001"であり、第1FPU11にはコプロセッサ番
号001が与えられているとする。
システムクロックCLKはクロックジェネレータ14によ
り生成され、信号線70を介してMPU10,第1FPU11,メモリ
システム13へ入力される。信号線71のBAT0:1はバスサイ
クルの種類を示す信号、信号線72のCPDE#はコプロセッ
サである第1FPU11へのデータ出力制御信号、信号線73の
BS#,AS#,DS#,R/W#はMPU10が出力するその他のバス
サイクル制御信号、信号線74のCPST0:2は第1FPU11の内
部状態をMPU10へ転送する制御信号、信号線75のCPDC#
は第1FPU11が出力するバスサイクル完了制御信号、信号
線76のDC#はメモリシステム13が出力するバスサイクル
完了制御信号である。また信号線1はデータバスD0:63
として、信号線2はアドレスバスA0:31としてそれぞれ
使用される。
割込み関係では、メモリシステム13から割込み制御回
路15に割込みを要求する信号線79、第1FPU11で例外が発
生した際に割込み制御回路15に割込みを要求する信号線
80、それらの割込み要求が割込み制御回路15で整理され
た結果MPU10に割込みを要求する信号線78の信号IRL0:2
がある。
信号線3のI0:31は命令コードをメモリシステム13か
らMPU10へ転送する命令バスである。各信号はシステム
クロックに対してクロック同期して動作する。
信号線71の信号BAT0:1の意味は第9図の表に示す通り
である。各値“00",“01",“10",“11"それぞれに対し
てアドレスバスA0:31(2)及びデータバスD0:63(1)
の内容が定められている。未定義の部分に対しては、MP
U10,第1FPU11及びメモリシステム13はその内容を無視す
る。
信号線74の信号CPST0:2の意味は第10図の表に示す通
りである。値“001"は第1FPU11がデータ出力の準備作業
中であることを示す。値“010"はコマンドが正常に受付
けられたことを示す。値“011"は第1FPU11がデータ出力
準備を完了したことを示す。値“101"は第1FPU11がコマ
ンドの再転送を要求していることを示す。値“110"はコ
マンド転送に際してエラーが生じたことを示す。値“11
1"は第1FPU11が接続されていないことを示す。値“000"
及び“100"は未定義である。
信号線80の信号IRL0:2はその値により割込み処理をMP
U10に要求する。MPU10はIRL0:2とPSW(104)中のIMASK
フィールドの値とに従って割込みを受付けるか割込みを
マスクするかを決定する。
(6.1)「メモリアクセス動作」 第6図は第3図に構成を示したデータ処理装置のメモ
リアクセス動作のタイミングチャートである。
メモリアクセスは、十分高速なメモリに対してはクロ
ックBCLKの2クロックに1度のレートで行われる。第6
図では最初にゼロウエイトのデータリードサイクル、次
にゼロウエイトのデータライトサイクル、次に1クロッ
クウエイトの命令リードサイクル、次に1クロックウエ
イトのデータライトサイクルを示す。図中CLKとBCLKと
は信号線70を介して供給されるシステムクロックであ
る。BCLKはCLKの2倍の周期のバスクロックであり、CLK
の奇数番目パルスと偶数番目パルスとを定める。CLKに
同期して動作する本発明のマイクロプロセッサとBCLKの
同期はシステムリセット時に行われる。
データリードサイクルではBAT0:1=“00"としてアド
レスが出力され、DS#とBCLKとがローレベルである間の
CLKの立下り時にDC#(76)がアサートされた際のデー
タバスD0:63(1)の値が取込まれ、バスサイクルを終
了する。
データライトサイクルではBAT0:1=“00"とし、まず
アドレスが、次にCLKの1クロック遅れてデータがデー
タバスD0:63(1)へ出力され、DS#とBCLKとがローレ
ベルである間のCLKの立下り時にDC#(76)がアサート
されればバスサイクルが終了する。
命令リードサイクルではBAT0:1=“01"としてアドレ
スを出力し、BS#とBCLKとがローレベルである間のCLK
の立下り時にDC#(76)がアサートされた際の命令バス
I0:31(3)の値を取込み、バスサイクルを終了する。
このようにプロセッサモードではクロックCLKに同期
したバスサイクルを本発明のマイクロプロセッサが起動
することにより外部との入出力動作を行う。
(6.2)「FPUアクセス動作」 第7図は第3図に構成を示したデータ処理装置におい
てMPU10から第1FPU11へコマンドを転送する場合のタイ
ミングチャートの一例を示す。コマンド転送はバスサイ
クルの一種として行われる。
第7図では最初にメモリ・FPUレジスタ間(M−FR)F
PU命令に対するコマンドとオペランドの1ウエイトの転
送サイクル、次にメモリからの0ウエイトのデータリー
ドサイクル、次にFPUレジスタ・FPUレジスタ間(FR−F
R)FPU命令に対するコマンドの1ウエイトの転送サイク
ル、次にMPUレジスタ・FPUレジスタ間(GR−FR)FPU命
令に対するコマンドとオペランドの0ウエイトの転送サ
イクルが示されている。
メモリ・FPUレジスタ間FPU命令に対するコマンドとオ
ペランドとの転送サイクルではBAT0:1=“10"としてア
ドレスバスA0:31(2)のビット10からビット31へコマ
ンドが出力され、DS#とBCLKとがローレベルである間の
CLKの立下り時にCPDC#(75)がアサートされればMPU10
はバスサイクルを終了する。第1FPU11はアドレスバス2
からコマンドを、データバスD0:63(1)からオペラン
ドをそれぞれ受取る。この際、CPST0:2(74)の値によ
り第1FPU11の状態がMPU10へ通知される。
FPUレジスタ・FPUレジスタ間FPU命令に対するコマン
ドの転送サイクルはオペランド転送がない以外はメモリ
・FPUレジスタ間FPU命令に対するコマンドとオペランド
の転送サイクルと同じである。
MPUレジスタ・FPUレジスタ間FPU命令に対するコマン
ドとオペランドの転送サイクルもメモリ・FPUレジスタ
間FPU命令に対するコマンドとオペランドの転送サイク
ルと類似している。即ち、データバス1の下位4バイト
のみでオペランドが転送される点が異なる。
第8図は第3図に構成を示したデータ処理装置におい
てFPUレジスタ・メモリ間FPU命令に対するコマンドとオ
ペランドとの転送を行う場合のタイミングチャートであ
る。この場合、まずMPU10から第1FPU11へコマンドが転
送され、その後、第1FPU11からMPU10とメモリシステム1
3へオペランドが転送される。
コマンドの転送サイクルではBAT0:1=“10"としてア
ドレスバスA0:31(3)のビット10からビット31へコマ
ンドが出力され、DS#とBCLKとがローレベルである間の
CLKの立下り時にCPDC#(75)がアサートされればMPU10
はバスサイクルを終了する。第1FPU11はアドレスバス2
からコマンドを受取る。この際、CPST0:2(74)の値に
より第1FPU11の状態がMPU10へ通知される。この例ではF
PUレジスタ・メモリ間FPU命令に対するコマンドである
ので、第1FPU11が正常にコマンドを受取り、CPST0:2(7
4)が“010",“001",“011"と順次変化する。MPU10はコ
マンド転送後このCPST0:2の値を見て、“011"となった
後にCPDE#をアサートし、その1クロック後からオペラ
ンド転送のバスサイクルを起動する。
このサイクルではBAT0:1=“00"でアドレスバスA0:31
(2)へはオペランドを格納すべきメモリアドレスがMP
U10から出力され、データバスD0:63(1)へは第1FPU11
からオペランドが出力される。オペランドはMPU10とメ
モリシステム13との両方で取込まれる。MPU10がオペラ
ンドを取込むのは内蔵データキャッシュを書換えるため
である。
また、MPU10が第2FPU12をアクセスする場合のプロト
コルとタイミングは、MPU10が第1FPU11をアクセスする
場合と基本的に同じである。異なる点は、コマンドを転
送したメモリサイクルの直後にBAT0:1=“11"としてコ
プロセッサのPC値をMPU10から第2FPU12へ転送するメモ
リサイクルが存在する点のみである。
(7)「コプロセッサ命令の処理例」 第36図〜第38図は第1FPU11でコプロセッサ命令を実行
する場合の処理手順例のフローチャートである。
第1FPU11のCPIDは“001"であり、これらの例ではMPU1
0のPSW104中のCPID値も“001"であるため、コプロセッ
サ命令のPC値は第1FPU11へは転送されない。
第36図はメモリ・FPUレジスタ間FPU命令であるコプロ
セッサ命令がMPU10でフェッチされてから第1FPU11で実
行されるまでの処理手順のフローチャートである。
第37図はFPUレジスタ・メモリ間FPU命令であるコプロ
セッサ命令がMPU10でフェッチされてから第1FPU11で実
行されるまでの処理手順のフローチャートである。
第38図はメモリ・FPUレジスタ間FPU命令であるコプロ
セッサ命令がMPU10でフェッチされ、第1FPU11で実行さ
れ、例外を起こし、第1FPU11が割込制御回路15を通じて
MPU10に割込みを要求して、MPU10が例外処理を行う場合
の処理手順のフローチャートである。
例外処理は割込み処理ハンドラで処理される。本発明
のマイクロプロセッサでは、第1FPU11からPCIDを読出す
命令とPCIDに基づいてMPU10のPCキュー21の対応するエ
ントリからコプロセッサ命令のPC値を読出す特権命令と
がある。割込み処理ハンドラではこれらの命令を用いて
PCID及びコプロセッサのPC値を読出す。
第39図はメモリ・FPUレジスタ間FPU命令であるコプロ
セッサ命令がMPU10でフェッチされてから第2FPU12で実
行されるまでの処理手順のフローチャートである。
第2FPU12のCPIDは“010"であり、ここではMPU10のPSW
104中のCPID値が“010"である際にコプロセッサ命令が
実行された場合を示す。
(8)「本発明の他の実施例」 上述の実施例では、MPU10からコプロセッサへのコマ
ンド転送とオペランド転送とを同一のメモリサイクルで
行っているが、必ずしも1つのメモリサイクルで行う必
要はない。オペランドのビット数がデータバス1のビッ
ト数より大きい場合はオペランド転送を複数のメモリサ
イクルで行ってもよい。
また本発明ではコプロセッサ命令の実行時の例外を割
込みにより処理し、第1FPU11からPCIDを読出す動作とPC
キュー21のエントリに蓄えられたコプロセッサ命令のPC
値をMPU10から読出す動作とをハンドラ中の命令で行っ
ている。しかし、コプロセッサ命令の実行時に発生した
例外を専用信号でMPU10へ通知し、MPU10がハードウエア
動作としてPCIDの読出しとPCキュー21のエントリの内容
の読出しとを行い、例外処理ハンドラへ渡す情報として
例外を起こしたコプロセッサ命令のPC値をスタックに積
んでもよい。この場合、例外処理ハンドラは例外を起こ
したコプロセッサ命令のPC値をスタック中から得るた
め、ハンドラではPCIDを読出したり、PCキュー21の内容
を読出したりする必要はない。
また、上記実施例ではコプロセッサ命令を実行する際
に、CPIDの保持値により第1FPU11にコマンドを転送する
か第2FPU12にコマンドを転送するかを区別し、且つCPID
=“001"であって第1FPU11にコマンドを転送する場合に
はコプロセッサ命令のPC値をPCキュー21に保持するよう
にしているが、この保持動作は必ずしも必要ではない。
コプロセッサ命令のPC値はそのコプロセッサ命令の実行
に際して例外が発生した場合に、そのコプロセッサ命令
を特定するために必要なものであってそのコプロセッサ
命令の実行そのものには基本的には不必要だからであ
る。従って、MPU10のPCキュー21においてコプロセッサ
命令のPC値を保持する機構が備えられていない場合に
も、コプロセッサ命令の例外発生に対してその命令のア
ドレスを特定する必要があるのであれば、CPID=“010"
として第2FPU12でコプロセッサ命令を実行し、コプロセ
ッサ命令の例外発生に対してそのコプロセッサ命令のア
ドレスを特定する必要がないのであればCPID=“001"と
して第1FPU11でコプロセッサ命令を実行すればよい。
[発明の効果] 以上に詳述した如く、本発明のマイクロプロセッサ又
はデータ処理装置ではコプロセッサ命令の実行時の例外
発生に備えてコプロセッサ命令のPC値を保持する第2の
プログラムカウンタ値保持手段をMPU側に備えているた
め、コプロセッサ命令に対応するコマンドを転送する際
に、コプロセッサ命令のPC値を転送するためのメモリサ
イクルを必要としない。従って、1メモリサイクルでコ
プロセッサ命令に対するコプロセッサへの動作指示が可
能であり、高性能なマイクロプロセッサ又はデータ処理
装置を得ることが可能になる。
【図面の簡単な説明】
第1図は本発明のマイクロプロセッサを用いたデータ処
理装置の一構成例を示すブロック図、 第2図は本発明のマイクロプロセッサの一構成例を示す
ブロック図、 第3図は本発明のマイクロプロセッサとコプロセッサの
接続状態を示すブロック図、 第4図は本発明のマイクロプロセッサのパイプライン処
理の概要を示す模式図、 第5図は本発明のマイクロプロセッサのデータ演算部と
その関係部分の詳細な構成を示すブロック図、 第6図は本発明のマイクロプロセッサのメモリアクセス
時のタイミングチャート、 第7図は本発明のマイクロプロセッサのコプロセッサア
クセス時のタイミングチャート、 第8図は本発明のマイクロプロセッサでFPUレジスタ−
メモリ間FPU命令を行う場合のメモリサイクルのタイミ
ングチャート、 第9図は本発明のマイクロプロセッサのメモリサイクル
の種類を示す信号BAT0:1の値と各値に対するデータバ
ス,アドレスバス及び命令バスの内容を示す図、 第10図は本発明のマイクロプロセッサにコプロセッサの
内部状態を伝える信号CPST0:2の値とその意味を示す
図、 第11図は本発明のマイクロプロセッサのメモリ上での命
令の並び方を示す模式図、 第12図から第15図は本発明のマイクロプロセッサの命令
のフォーマットを示す模式図、 第16図から第29図は本発明のマイクロプロセッサの命令
のアドレッシングモードを説明するための模式図、 第30図は本発明のマイクロプロセッサからコプロセッサ
へ転送されるコマンドのフォーマットを示す模式図、 第31図は本発明のマイクロプロセッサからアドレスバス
を通じてコプロセッサへコマンド転送する場合の転送ビ
ット位置を示す模式図、 第32図から第34図は本発明のマイクロプロセッサからコ
プロセッサへ転送されるコマンド中のFPU命令のフォー
マットを示す模式図、 第35図は本発明のマイクロプロセッサのPSWの内容を示
す模式図、 第36図から第39図は本発明のマイクロプロセッサを用い
たデータ処理装置で種々のコプロセッサ命令を実行する
場合のフローチャート、 第40図は従来のマイクロプロセッサとコプロセッサを用
いたデータ処理装置の構成を示すブロック図、 第41図は第40図に構成を示す従来のマイクロプロセッサ
を用いたデータ処理装置においてMPUがコプロセッサを
アクセスする場合のタイミングチャートである。 10……主プロセッサ(MPU)、11,12……コプロセッサ
(FPU)、21……PCキュー(第1FPC)、22……第2FPC、5
2……命令デコード部、58……アドレス出力回路 なお、各図中同一符号は同一又は相当部分を示す。

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】主プロセッサ命令を自身で実行し、コプロ
    セッサにコプロセッサ命令を実行させるマイクロプロセ
    ッサにおいて、 自身に対する主プロセッサ命令及び前記コプロセッサに
    対するコプロセッサ命令をデコードしてデコード結果を
    出力するデコード手段と、 該デコード手段のデコード結果に従い主プロセッサ命令
    を実行する第1の演算実行手段と、 前記デコード手段のデコード結果に従いコプロセッサ命
    令に対応するコマンドを前記コプロセッサに転送してコ
    プロセッサ命令を実行させる転送手段と、 前記第1の演算実行手段で最近に実行した主プロセッサ
    命令又は前記転送手段で最近に転送したコマンドに対応
    するコプロセッサ命令のプログラムカウンタ値を保持す
    る第1のプログラムカウンタ値保持手段と、 前記転送手段で最近に転送したコマンドに対応するコプ
    ロセッサ命令のプログラムカウンタ値を保持する第2の
    プログラムカウンタ値保持手段と、 前記デコード手段が第1のコプロセッサ命令をデコード
    して第1のデコード結果を出力し、前記第1のデコード
    結果に従い前記転送手段が前記コプロセッサにコマンド
    を転送して前記第1のコプロセッサ命令を実行させ、前
    記デコード手段が前記第1のコプロセッサ命令に引き続
    いて第1の主プロセッサ命令をデコードして第2のデコ
    ード結果を出力し、前記コプロセッサが前記第1のコプ
    ロセッサ命令の実行を終了する前に前記第1の演算実行
    手段が前記第2のデコード結果に従い前記第1の主プロ
    セッサ命令を実行するとき、 前記第1のプログラムカウンタ値保持手段が前記第1の
    主プロセッサ命令のプログラムカウンタ値を保持し、前
    記第2のプログラムカウンタ値保持手段が前記第1のコ
    プロセッサ命令のプログラムカウンタ値を、前記第1の
    主プロセッサ命令より後の第2のコプロセッサ命令のデ
    コード結果に対応するコマンドを前記転送手段がコプロ
    セッサに転送するまで保持すべくなしてあることを特徴
    とするマイクロプロセッサ。
  2. 【請求項2】浮動小数点演算プロセッサに浮動小数点演
    算を行わせ、整数演算を自身で行うマイクロプロセッサ
    において、 自身に対する整数演算命令及び前記浮動小数点演算プロ
    セッサに対する浮動小数点演算命令をデコードしてデコ
    ード結果を出力するデコード手段と、 該デコード手段のデコード結果に従い整数演算命令を実
    行する整数演算実行手段と、 前記デコード手段のデコード結果に従い浮動小数点演算
    命令に対応するコマンドを前記浮動小数点演算プロセッ
    サに転送して浮動小数点演算命令を実行させる転送手段
    と、 前記整数演算実行手段で最近に実行した整数演算命令又
    は前記転送手段で最近に転送したコマンドに対応する浮
    動小数点演算命令のプログラムカウンタ値を保持する第
    1のプログラムカウンタ値保持手段と、 前記転送手段で最近に転送したコマンドに対応する浮動
    小数点演算命令のプログラムカウンタ値を保持する第2
    のプログラムカウンタ値保持手段と、 を備え、 前記デコード手段が第1の浮動小数点演算命令をデコー
    ドして第1のデコード結果を出力し、前記第1のデコー
    ド結果に従い前記転送手段が前記浮動小数点演算プロセ
    ッサにコマンドを転送して前記第1の浮動小数点演算命
    令を実行させ、前記デコード手段が前記第1の浮動小数
    点演算命令に引き続いて第1の整数演算命令をデコード
    して第2のデコード結果を出力し、前記浮動小数点演算
    プロセッサが前記第1の浮動小数点演算命令の実行を終
    了する前に前記整数演算実行手段が前記第2のデコード
    結果に従い前記第1の整数演算命令を実行するとき、 前記第1のプログラムカウンタ値保持手段が前記第1の
    整数演算命令のプログラムカウンタ値を保持し、前記第
    2のプログラムカウンタ値保持手段が前記第1の浮動小
    数点演算命令のプログラムカウンタ値を、前記第1の整
    数演算命令より後の第2の浮動小数点演算命令のデコー
    ド結果に対応するコマンドを前記転送手段が前記浮動小
    数点演算プロセッサに転送するまで保持すべくなしてあ
    ることを特徴とするマイクロプロセッサ。
  3. 【請求項3】外部のメモリから外部バスを経由してフェ
    ッチした命令をデコードしてデコード結果を出力するデ
    コード手段と、 該デコード手段のデコード結果に従い前記デコード手段
    でデコードした命令のプログラムカウンタ値を計算する
    プログラムカウンタ値計算手段と、 前記デコード手段のデコード結果に従い整数演算命令を
    実行する整数演算実行手段と、 前記デコード手段のデコード結果に従い浮動小数点演算
    命令を実行する浮動小数点演算実行手段と、 前記プログラムカウンタ値計算手段と第1の内部経路で
    接続し、前記プログラムカウンタ値計算手段から転送さ
    れたデコード済み命令のプログラムカウンタ値を保持す
    る第1のプログラムカウンタ値保持手段と、 前記プログラムカウンタ値計算手段と第2の内部経路で
    接続し、前記プログラムカウンタ値計算手段から転送さ
    れたデコード済み浮動小数点演算命令のプログラムカウ
    ンタ値を保持する第2のプログラムカウンタ値保持手段
    と を備え、 前記メモリから前記外部バスを経由してフェッチした第
    1の浮動小数点演算命令を前記デコード手段がデコード
    して第1のデコード結果を出力し、該第1のデコード結
    果に従い前記プログラムカウンタ値計算手段が第1のプ
    ログラムカウンタ値を計算して前記第2の内部経路を経
    由して前記第2のプログラムカウンタ値保持手段に書き
    込み、前記第1のデコード結果に従い前記浮動小数点演
    算実行手段が前記第1の浮動小数点演算命令を実行し、
    前記デコード手段が該第1の浮動小数点演算命令に引き
    続いて第1の整数演算命令をデコードして第2のデコー
    ド結果を出力し、前記浮動小数点演算実行手段が前記第
    1の浮動小数点演算命令の実行を終了する前に前記整数
    演算実行手段が前記第2のデコード結果に従い前記第1
    の整数演算命令を実行するとき、 前記第1のプログラムカウンタ値保持手段が前記第1の
    整数演算命令のプログラムカウンタ値を保持し、前記第
    2のプログラムカウンタ値保持手段が前記第1の浮動小
    数点演算命令のプログラムカウンタ値を、前記第1の整
    数演算命令より後の第2の浮動小数点演算命令のデコー
    ド結果を出力して前記浮動小数点演算実行手段に与える
    まで保持すべくなしてあることを特徴とするマイクロプ
    ロセッサ。
  4. 【請求項4】主プロセッサが主プロセッサ命令を実行
    し、コプロセッサがコプロセッサ命令を実行するデータ
    処理装置において、 前記主プロセッサは、 自身に対する主プロセッサ命令及びコプロセッサ命令を
    デコードしてデコード結果を出力するデコード手段と、 該デコード手段のデコード結果に従い主プロセッサ命令
    を実行する第1の演算実行手段と、 前記デコード手段のデコード結果に従いコプロセッサ命
    令に対応するコマンドをコプロセッサに転送してコプロ
    セッサ命令を実行させる転送手段と、 前記第1の演算実行手段で最近に実行した主プロセッサ
    命令又は前記転送手段で最近に転送したコマンドに対応
    するコプロセッサ命令のプログラムカウンタ値を保持す
    る第1のプログラムカウンタ値保持手段と、 前記転送手段で最近に転送したコマンドに対応するコプ
    ロセッサ命令のプログラムカウンタ値を保持する第2の
    プログラムカウンタ値保持手段と、 前記デコード手段のデコード結果に従い前記第2のプロ
    グラムカウンタ値保持手段からプログラムカウンタ値を
    読み出す読み出し手段と を備え、 前記コプロセッサは、 前記転送手段から転送されたコマンドに従いコプロセッ
    サ命令を実行する第2の演算実行手段と、 前記第2の演算実行手段における演算実行に伴う例外を
    検出した場合に前記主プロセッサへ例外発生を通知する
    通知手段と を備え、 前記デコード手段が第1のコプロセッサ命令をデコード
    して第1のデコード結果を出力し、前記第1のデコード
    結果に従い前記転送手段が前記第1のコプロセッサ命令
    に対応するコマンドを前記コプロセッサに転送し、前記
    第2のプログラムカウンタ値保持手段が前記第1のコプ
    ロセッサ命令のプログラムカウンタ値である第1のプロ
    グラムカウンタ値を保持し、前記コプロセッサが前記第
    2の演算実行手段で前記コマンドに従い前記第1のコプ
    ロセッサ命令を実行して例外を検出したとき、 前記通知手段が前記主プロセッサへ例外発生を通知し、
    前記主プロセッサが例外処理プログラムの実行を開始
    し、前記デコード手段が前記例外処理プログラムに含ま
    れる命令をデコードして第2のデコード結果を出力し、
    前記第2のデコード結果に従い前記読み出し手段が前記
    第2のプログラムカウンタ値保持手段から前記第1のプ
    ログラムカウンタ値を読み出すべくなしてあることを特
    徴とするデータ処理装置。
  5. 【請求項5】浮動小数点演算プロセッサが浮動小数点演
    算を行ない、主プロセッサが整数演算を行うデータ処理
    装置において、 前記主プロセッサは、 自身に対する整数演算命令及び前記浮動小数点演算プロ
    セッサに対する浮動小数点演算命令をデコードしてデコ
    ード結果を出力するデコード手段と、 該デコード手段のデコード結果に従い整数演算命令を実
    行する整数演算実行手段と、 前記デコード手段のデコード結果に従い浮動小数点演算
    命令に対応するコマンドを前記浮動小数点演算プロセッ
    サに転送して浮動小数点演算命令を実行させる転送手段
    と、 前記整数演算実行手段で最近に実行した整数演算命令又
    は前記転送手段で最近に転送したコマンドに対応する浮
    動小数点演算命令のプログラムカウンタ値を保持する第
    1のプログラムカウンタ値保持手段と、 前記転送手段で最近に転送したコマンドに対する浮動小
    数点演算命令のプログラムカウンタ値を保持する第2の
    プログラムカウンタ値保持手段と、 前記デコード手段のデコード結果に従い前記第2のプロ
    グラムカウンタ値保持手段からプログラムカウンタ値を
    読み出す読み出し手段と を備え、 前記浮動小数点演算プロセッサは、 前記転送手段から転送されたコマンドに従い浮動小数点
    演算命令を実行する浮動小数点演算実行手段と、 前記浮動小数点演算実行手段における浮動小数点演算命
    令の実行に伴う例外を検出した場合に前記主プロセッサ
    へ例外発生を通知する通知手段を備え、 第1の浮動小数点演算命令を前記デコード手段がデコー
    ドして第1のデコード結果を出力し、前記第1のデコー
    ド結果に従い前記転送手段が前記第1の浮動小数点演算
    命令に対応するコマンドを前記浮動小数点演算プロセッ
    サに転送し、前記第2のプログラムカウンタ値保持手段
    が前記第1の浮動小数点演算命令のプログラムカウンタ
    値である第1のプログラムカウンタ値を保持し、前記浮
    動小数点演算プロセッサが前記浮動小数点演算実行手段
    で前記コマンドに従い前記第1の浮動小数点演算命令を
    実行して例外を検出したとき、 前記通知手段が前記主プロセッサへ例外発生を通知し、
    前記主プロセッサが例外処理プログラムの実行を開始
    し、前記デコード手段が前記例外処理プログラムに含ま
    れる命令をデコードして第2のデコード結果を出力し、
    該第2のデコード結果に従い前記読み出し手段が前記第
    2のプログラムカウンタ値保持手段から前記第1のプロ
    グラムカウンタ値を読み出すべくなしてあることを特徴
    とするデータ処理装置。
  6. 【請求項6】外部のメモリから外部バスを経由してフェ
    ッチした命令をデコードしてデコード結果を出力するデ
    コード手段と、 該デコード手段のデコード結果に従い前記デコード手段
    でデコードした命令のプログラムカウンタ値を計算する
    プログラムカウンタ値計算手段と、 前記デコード手段のデコード結果に従い整数演算命令を
    実行する整数演算実行手段と、 前記デコード手段のデコード結果に従い浮動小数点演算
    命令を実行する浮動小数点演算実行手段と、 前記プログラムカウンタ値計算手段と第1の内部経路で
    接続し、前記プログラムカウンタ値計算手段から転送さ
    れたデコード済み命令のプログラムカウンタ値を保持す
    る第1のプログラムカウンタ値保持手段と、 前記プログラムカウンタ値計算手段と第2の内部経路で
    接続し、前記プログラムカウンタ値計算手段から転送さ
    れたデコード済み浮動小数点演算命令のプログラムカウ
    ンタ値を保持する第2のプログラムカウンタ値保持手段
    と、 前記デコード手段のデコード結果に従い前記第2のプロ
    グラムカウンタ値保持手段からプログラムカウンタ値を
    読み出す読み出し手段と を備え、 前記メモリから前記外部バスを経由してフェッチした第
    1の浮動小数点演算命令を前記デコード手段がデコード
    して第1のデコード結果を出力し、該第1のデコード結
    果に従い前記プログラムカウンタ値計算手段が第1のプ
    ログラムカウンタ値を計算して前記第2の内部経路を経
    由して前記第2のプログラムカウンタ値保持手段に書き
    込み、前記第1のデコード結果に従い前記浮動小数点演
    算実行手段が前記第1の浮動小数点演算命令を実行して
    例外を検出したとき、 例外処理プログラムを起動し、該例外処理プログラムに
    含まれ、前記メモリから前記外部バスを経由してフェッ
    チした命令を前記デコード手段がデコードして第2のデ
    コード結果を出力し、該第2のデコード結果に従い前記
    プログラムカウンタ値計算手段が第2のプログラムカウ
    ンタ値を計算して前記第1の内部経路を経由して前記第
    1のプログラムカウンタ値保持手段に書き込み、前記第
    2のデコード結果に従い前記読み出し手段が前記第2の
    プログラムカウンタ値保持手段から前記第1のプログラ
    ムカウンタ値を読み出すべくなしてあることを特徴とす
    るデータ処理装置。
JP1121925A 1989-05-15 1989-05-15 マイクロプロセッサ及びそれを使用したデ―タ処理装置 Expired - Fee Related JP2522048B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP1121925A JP2522048B2 (ja) 1989-05-15 1989-05-15 マイクロプロセッサ及びそれを使用したデ―タ処理装置
US07/524,243 US5218711A (en) 1989-05-15 1990-05-15 Microprocessor having program counter registers for its coprocessors
US08/059,943 US5465376A (en) 1989-05-15 1993-05-05 Microprocessor, coprocessor and data processing system using them

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1121925A JP2522048B2 (ja) 1989-05-15 1989-05-15 マイクロプロセッサ及びそれを使用したデ―タ処理装置

Publications (2)

Publication Number Publication Date
JPH02300841A JPH02300841A (ja) 1990-12-13
JP2522048B2 true JP2522048B2 (ja) 1996-08-07

Family

ID=14823316

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1121925A Expired - Fee Related JP2522048B2 (ja) 1989-05-15 1989-05-15 マイクロプロセッサ及びそれを使用したデ―タ処理装置

Country Status (1)

Country Link
JP (1) JP2522048B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137060A (zh) * 2011-12-30 2014-11-05 英特尔公司 高速缓存协处理单元

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1573515A2 (en) * 2002-10-31 2005-09-14 Lockheed Martin Corporation Pipeline accelerator and related system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137060A (zh) * 2011-12-30 2014-11-05 英特尔公司 高速缓存协处理单元

Also Published As

Publication number Publication date
JPH02300841A (ja) 1990-12-13

Similar Documents

Publication Publication Date Title
US5717946A (en) Data processor
US5218711A (en) Microprocessor having program counter registers for its coprocessors
EP0789297A2 (en) Data processor and method of processing data
JPH0766324B2 (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JPH02155037A (ja) デジタルコンピュータに於けるパイプライン化された処理ユニットの動作方法
JP2581236B2 (ja) データ処理装置
JPH0810428B2 (ja) データ処理装置
JPH1049370A (ja) 遅延命令を有するマイクロプロセッサ
JP2847974B2 (ja) データ処理装置
JPH081602B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JPH10232821A (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP2556182B2 (ja) デ−タ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置
JP2504235B2 (ja) デ―タ処理装置
JPH0769806B2 (ja) データ処理装置
JP2646855B2 (ja) データ処理装置
JPH04109338A (ja) プライオリティエンコーダ及びそれを備えたデータ処理装置
JP2696578B2 (ja) データ処理装置
JPH0218621A (ja) データ処理装置
JPH0769801B2 (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

LAPS Cancellation because of no payment of annual fees