JPH10320197A - 条件実行命令を備えるマイクロプロセッサ - Google Patents

条件実行命令を備えるマイクロプロセッサ

Info

Publication number
JPH10320197A
JPH10320197A JP12452697A JP12452697A JPH10320197A JP H10320197 A JPH10320197 A JP H10320197A JP 12452697 A JP12452697 A JP 12452697A JP 12452697 A JP12452697 A JP 12452697A JP H10320197 A JPH10320197 A JP H10320197A
Authority
JP
Japan
Prior art keywords
instruction
execution
pipeline
register
circuit
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
JP12452697A
Other languages
English (en)
Other versions
JP3568737B2 (ja
Inventor
Atsushi Mori
篤史 毛利
Akira Yamada
朗 山田
Toyohiko Yoshida
豊彦 吉田
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 JP12452697A priority Critical patent/JP3568737B2/ja
Priority to US08/942,295 priority patent/US6016543A/en
Publication of JPH10320197A publication Critical patent/JPH10320197A/ja
Application granted granted Critical
Publication of JP3568737B2 publication Critical patent/JP3568737B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 複数段のパイプライン実行を行うマイクロプ
ロセッサでは、データ干渉を回避するためパイプライン
の一時停止が頻繁に発生する。 【解決手段】 メモリ6,7、命令デコーダ2、命令の
実行を制御する情報を格納する制御レジスタ、データを
格納する複数個のレジスタ、算術演算等を実行する演算
ユニットを含む命令を実行する命令実行ユニット3,4
を備え、命令デコーダ2内の実行停止回路720がプロ
グラム内の先行命令の動作に基づき現命令の実行を一時
的に停止し現命令を実行するか否か判定する条件実行判
定回路が先行命令を実行しないと判定した場合、条件実
行判定回路が先行命令の動作を開始する信号を無効とす
る処理を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、命令の一部で指
定される実行条件フィールドを用いて、マイクロプロセ
ッサの命令の実行を制御する機能を備えた条件実行命令
を備えるマイクロプロセッサに関するものである。
【0002】
【従来の技術】マイクロプロセッサの性能向上のための
一手法として、分岐のペナルティを減少させるために、
条件実行や、投機実行などの手法が検討されている。条
件実行を行う従来のARMマイクロプロセッサでは、条
件実行の判定に用いるためのフラグが、ネガティブフラ
グ(N)、ゼロフラグ(Z)、キャリーフラグ(C)、
オーバーフローフラグ(V)という特定の命令でのみ設
定される専用フラグを使用している。
【0003】また従来では、マイクロプロセッサの性能
向上のための一手法として、一命令の実行を複数ステー
ジに分割しパイプライン的に連続して実行する手法があ
る。
【0004】図28は、従来のMMAマイクロプロセッ
サのプロセッサコアの構成を示すブロック図であり、図
において、900は、MMAマイクロプロセッサのプロ
セッサコア、901はMMAのマイクロプロセッサ内の
1つの実行ユニットである。902は、MMAマイクロ
プロセッサの命令を実行する他の実行ユニット、904
はデータRAMである。このように、従来のMMAマイ
クロプロセッサでは一つの命令中の2つのサブ命令を2
つの実行ユニット901,902で同時に実行可能であ
る。
【0005】実行ユニット901は、乗算器910、ア
キュムレータ911、シフタ912およびALU913
から構成されている。また、実行ユニット902は、A
LU914、ロード/ストアユニット915から構成さ
れている。920,921は、実行ユニット901に含
まれる演算器のためのソースデータバスである。このソ
ースデータバス920,921を介して演算のために必
要なデータが汎用レジスタより読み出される。また、9
30,931は、実行ユニット902内に含まれる演算
器等のためのソースデータバスである。演算のために必
要なデータが汎用レジスタ903より読み出される。
【0006】925は、実行ユニット901内の乗算器
910やALU913等の演算結果を汎用レジスタ90
3へ書き戻すためのライトバックバスである。932,
933は、実行ユニット902内のALU914等の演
算結果等を汎用レジスタ903へ書き戻すためのライト
バックレジスタである。922,923は、乗算器91
0とアキュムレータ911との間を結ぶ内部バスであ
り、この内部バスを介して、ペナルティなしに累積加算
を実行することが可能である。940は、ロード/スト
アユニット915とデータRAM904を結ぶ双方向バ
スであり、オペランドデータのロード/ストアの制御に
使用される。
【0007】図29は、図28に示した従来のMMAマ
イクロプロセッサ内に組み込まれている実行ユニット9
01の一部の回路をパイプライン的に配置したブロック
図である。903は汎用レジスタである。913はAL
Uである。910a,910bは乗算を行うための部品
であり、それぞれワレスの(Wallace)ツリー回
路とCPAである。乗算は2ステージで実行することが
可能である。921は、汎用レジスタからソースデータ
を読み出すバスである。925は、汎用レジスタに演算
結果を書き戻すためのライトバックレジスタである。9
70,971,972は、ソースデータバスにデータを
ドライブする3ステートバッファである。980は、A
LU913の演算結果をソースデータバスに出力するた
めのバイパス経路である。981は、乗算結果をソース
データバスに出力するためのバイパス経路である。
【0008】図28に示すように、実行ユニット901
での1つの命令の実行は、F,D,R,E,M,Wの6
ステージを必要とし、これらのステージはパイプライン
的に実行される。1命令を6段のパイプラインで実行す
るために、データバス用のレジスタ(DR)950,9
51,952,953,954,955,956等が組
込まれている。960は命令デコーダである。制御信号
もパイプライン的に生成され、制御パス用のレジスタ
(CR)961,962,963,964が組込まれて
いる。
【0009】制御パス用のレジスタ962から出力され
る出力信号は、レジスタ950のライトイネーブル信号
である。制御パス用レジスタ963の出力信号は、3ス
テートバッファ971,972のイネーブル信号であ
る。制御パス用レジスタ964の出力信号は、3ステー
トバッファ970のイネーブル信号である。
【0010】図30は、図28に示す従来のMMAマイ
クロプロセッサで実行される命令のパイプライン図であ
り、図において、白の部分は実行ユニット901で実行
されているサブ命令のパイプラインを示しており、斜線
部分は実行ユニット902で実行されているサブ命令の
パイプラインを示している。1000は、実行ユニット
901で実行されるサブ命令のパイプラインである。1
001は、実行ユニット902で実行されるサブ命令の
パイプラインであり、パイプライン1000と同時に実
行される。1002は、パイプライン1000,100
1のサブ命令とデータ干渉が発生しない場合において、
後続命令が実行ユニット901で実行されるサブ命令の
パイプラインである。1003は、パイプライン100
0,1001のサブ命令の実行とデータ干渉が発生しな
い場合、実行ユニット902で実行される後続命令とし
てのサブ命令のパイプラインである。
【0011】
【発明が解決しようとする課題】従来のMMAマイクロ
プロセッサは以上のように構成されているので、先行命
令と後続命令との間にデータ干渉が発生しない場合は、
パイプラインが乱れることなく1クロック遅れで後続命
令を実行することが可能である。1005は、実行ユニ
ット902で実行されるサブ命令のパイプラインであ
り、パイプライン1000のサブ命令との間でデータ干
渉が発生する場合を示している。1004は、実行ユニ
ット901で実行されるサブ命令のパイプラインであ
り、パイプライン1005と同時に実行される。
【0012】上記したように、異なる複数の実行ユニッ
ト901,902間で先行命令と後続命令との間にデー
タ干渉が発生した場合、これらの実行ユニット901,
902を直接に接続する専用のバイパス経路等が組み込
まれていない場合は、先行命令が汎用レジスタ903内
に処理結果を書き込むまでは、後続命令は汎用レジスタ
903の読み出しを待つ必要がある。
【0013】上記した従来例の場合では、パイプライン
1002,1003に比較して、パイプライン100
4,1005では3クロックのペナルティが発生する。
MMAマイクロプロセッサのように複数段のパイプライ
ン実行を行うマイクロプロセッサでは、データ干渉を回
避するため上記したパイプラインの一時停止が頻繁に発
生するという課題があった。
【0014】この発明は上記のような課題を解決するた
めになされたもので、先行命令と現在実行する命令のパ
イプライン間にデータ干渉が発生し、そのデータ干渉を
回避するためパイプラインの停止を行う場合、そのパイ
プラインの停止を誘因した原因となる命令が、条件実行
判定で不実行となった場合、そのパイプラインの停止動
作をキャンセルし、パイプラインのペナルティを削減す
ることが可能な条件実行命令を備えるマイクロプロセッ
サを得ることを目的とする。
【0015】
【課題を解決するための手段】請求項1記載の発明に係
る条件実行命令を備えるマイクロプロセッサは、命令や
データを格納する命令RAMやデータRAM等からなる
メモリと、メモリへ接続され命令をデコードする命令デ
コーダと、命令の実行を制御する情報を格納する制御レ
ジスタと、データを格納する複数個のレジスタと、算術
演算等を実行する演算ユニットと、命令デコーダに接続
され命令デコーダから出力された出力に従い命令を実行
する命令実行ユニットとを備え、実行停止回路がプログ
ラム内の先行命令の動作に基づいて現命令の実行を一時
的に停止し、条件実行判定回路が現命令の実行を行うか
否かの判定を行い、条件実行判定回路が先行命令を実行
しないと判定した場合、条件実行制御回路が先行命令の
動作を開始する信号を無効とする処理を行い、パイプラ
インの停止を誘因した原因となる命令が条件実行判定で
不実行となった場合、そのパイプラインの停止動作をキ
ャンセルし、パイプラインのペナルティを削減するもの
である。
【0016】請求項2記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、実行停止回路が、先行命
令がメモリをアクセスしそのアクセス完了を示すメモリ
アクセス完了信号がメモリから送信されるまでに複数ク
ロック必要とする場合、先行命令のメモリアクセスが完
了するまで現命令の実行を停止させ、またメモリから送
信されるアクセス完了信号に基づいて条件実行判定回路
の動作は制御され、条件実行判定回路は、現命令内の実
行条件フィールドと制御レジスタ内の汎用フラグの値に
基づいて先行命令の実行を行うか否かの判定を行い、条
件実行判定回路が先行命令を実行しないと判定した場合
に、条件実行制御回路は、先行命令のメモリへのアクセ
ス処理を開始するアクセス開始信号を無効とするように
制御して、ロード命令が条件実行判定で不実行となった
場合に、ロードしたデータを汎用レジスタへ書き込む処
理のみをキャンセルするのではなく、データRAMアク
セス処理からキャンセルして、パイプラインのペナルテ
ィを削除するものである。
【0017】請求項3記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令の処理結果を汎
用レジスタへ書き込む以前に現命令が処理結果を汎用レ
ジスタから読み出す場合、先行命令のデスティネーショ
ンレジスタ指定フィールドと現命令のソースレジスタ指
定フィールドが一致することを判定するデータ干渉判定
回路と、先行命令の処理結果を汎用レジスタを経由する
ことなく現命令を実行する命令実行ユニットに転送する
バイパス経路とをさらに備え、実行停止回路がバイパス
経路を介して先行命令の処理結果が転送可能になるま
で、現命令の実行を停止し、条件実行判定回路が先行命
令内の実行条件フィールドの値および制御レジスタから
得られる汎用フラグの値により先行命令の実行を行うか
否かの判定を行い、データ干渉判定回路から送信される
制御信号に基づいて実行停止回路とバイパス経路の動作
が制御され、条件実行判定回路が先行命令を実行しない
と判定した場合、条件実行制御回路が実行停止回路から
送信される現命令の動作を停止する制御信号および先行
命令の処理結果を現命令を実行する命令実行ユニットへ
転送するためのバイパス経路の動作を制御する制御信号
を無効とするように制御し、ロード命令のアドレス計算
用データが同じ命令実行ユニットで実行される先行命令
の結果データと干渉を発生し、かつその先行命令が条件
実行判定で不実行となった場合に、その条件実行キャン
セル信号でパイプラインインターロック信号とバイパス
経路選択信号をキャンセルして、パイプラインのペナル
ティを削除するものである。
【0018】請求項4記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令の処理結果を汎
用レジスタへ書き込む以前に、現命令が処理結果を汎用
レジスタから読み出す場合、先行命令のデスティネーシ
ョンレジスタ指定フィールドと現命令のソースレジスタ
指定フィールドとが一致することを判定するデータ干渉
判定回路とをさらに備え、実行停止回路が先行命令の処
理結果が汎用レジスタへ書き込み完了されるまで現命令
の実行を停止させ、条件実行判定回路が先行命令内の実
行条件フィールドの値および制御レジスタから得られる
汎用フラグの値により先行命令の実行を行うか否かの判
定を行い、データ干渉判定回路から送信される制御信号
により実行停止回路の動作が制御され、条件実行判定回
路で先行命令を実行しないと判定した場合、条件実行制
御回路は実行停止回路から送信される現命令の動作の停
止を制御する制御信号を無効とするように制御し、異な
る命令実行ユニット間でデータ干渉が発生し、かつその
先行命令が条件実行判定で不実行となった場合に、その
条件実行キャンセル信号でパイプラインインターロック
信号をキャンセルして、パイプラインのペナルティを削
除するものである。
【0019】請求項5記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令の処理結果を汎
用レジスタへ書き込む以前に、異なる命令実行ユニット
で実行される現命令が処理結果を汎用レジスタから読み
出す場合、先行命令のデスティネーションレジスタ指定
フィールドと現命令のソースレジスタ指定フィールドと
が一致することを判定するデータ干渉判定回路と、先行
命令の処理結果を汎用レジスタを経由することなく現命
令を実行する異なる命令実行ユニットへ転送するバイパ
ス経路とをさらに備え、実行停止回路がバイパス経路を
介して先行命令の処理結果を転送可能な時まで現命令の
実行を停止し、条件実行判定回路が先行命令内の実行条
件フィールドおよび制御レジスタから得られる汎用フラ
グの値により先行命令の実行を行うか否かの判定を行
い、データ干渉判定回路から送信される制御信号に基づ
いて実行停止回路およびバイパス経路の動作が制御さ
れ、条件実行判定回路が先行命令を実行しないと判定し
た場合、条件実行制御回路は、実行停止回路から送信さ
れる現命令の実行停止を指示する制御信号と、現命令の
実行を行う異なる命令実行ユニットへ先行命令の処理結
果を転送するためのバイパス経路の動作を制御する制御
信号を無効とするように制御し、メモリアクセス部で実
行されるロード命令のロードデータが、整数演算部で実
行される乗算命令のソースデータと干渉を起こし、かつ
その先行ロード命令が条件実行判定で不実行となった場
合に、その条件実行キャンセル信号でパイプラインイン
ターロック信号とバイパス経路選択信号とをキャンセル
して、パイプラインのペナルティを削除するものであ
る。
【0020】請求項6記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令の処理結果を制
御レジスタ内の汎用フラグへ書き込む以前に、現命令が
処理結果を制御レジスタ内の汎用フラグから読み出す場
合、先行命令のデスティネーションフラグ指定フィール
ドと現命令のソースフラグ指定フィールドとが一致する
ことを判定するフラグ干渉判定回路とをさらに備え、実
行停止回路が先行命令の処理結果が制御レジスタ内の汎
用フラグへの書き込み動作が完了するまで現命令の実行
を停止させ、条件実行判定回路が先行命令内の実行条件
フィールドの値と制御レジスタ内の汎用フラグの値とに
より先行命令の実行を行うか否かの判定を行い、フラグ
干渉判定回路から送信された制御信号に基づいて実行停
止回路の動作が制御され、条件実行判定回路が先行命令
を実行しないと判定した場合、条件実行制御回路は実行
停止回路から送信された現命令の実行を停止する制御信
号を無効とするように制御し、あるフラグを用いる命令
の先行命令がそのフラグを更新し、かつその先行命令が
条件実行判定で不実行となった場合に、その条件実行キ
ャンセル信号でパイプラインインターロック信号をキャ
ンセルすることでパイプラインのペナルティを削除する
ものである。
【0021】請求項7記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令の処理結果を制
御レジスタ内の汎用フラグへ書き込む以前に、現命令が
制御レジスタ内の汎用フラグを用いて条件実行判定を行
う場合、先行命令のデスティネーションフラグ指定フィ
ールドと現命令のソースフラグ指定フィールドとが一致
することを判定するフラグ干渉判定回路とをさらに備
え、実行停止回路が先行命令の処理結果が制御レジスタ
内の汎用フラグへ書き込み完了されるまで現命令の実行
を停止させ、条件実行判定回路が先行命令内の実行条件
フィールドと制御レジスタから得られる汎用フラグの値
により先行命令の実行を行うか否かの判定を行い、フラ
グ干渉判定回路から送信される制御信号に基づいて実行
停止回路の動作が制御され、条件実行判定回路が先行命
令を実行しないと判定した場合、条件実行制御回路が実
行停止回路から送信される現命令の実行停止を指示する
制御信号を無効とするように制御し、条件実行判定を伴
う命令の先行命令が条件実行フラグを更新し、かつその
先行命令が条件実行判定で不実行となった場合に、その
条件実行キャンセル信号でパイプラインインターロック
信号をキャンセルしてパイプラインのペナルティを削除
するものである。
【0022】請求項8記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令が制御レジスタ
内のモードフラグを更新する場合、先行命令が制御レジ
スタ内のモードフラグを更新する命令であることを検知
するモードフラグ判定回路とをさらに備え、実行停止回
路は、先行命令が制御レジスタ内のモードフラグの値を
更新完了するまで現命令の動作を停止させ、条件実行判
定回路が、先行命令内の実行条件フィールドと制御レジ
スタから得られる汎用フラグの値により先行命令の実行
を行うか否かの判定を行い、条件実行判定回路から送信
される制御信号に基づいて実行停止回路の動作が制御さ
れ、条件実行判定回路で先行命令を実行しないと判定し
た場合、条件実行制御回路は実行停止回路から送信され
る現命令の動作の停止を指示する制御信号を無効とする
ように制御し、モードフラグを更新する命令が条件実行
判定で不実行となった場合に、その条件実行キャンセル
信号で後続命令のパイプラインインターロック信号をキ
ャンセルすることでパイプラインのペナルティを削除す
るものである。
【0023】請求項9記載の発明に係る条件実行命令を
備えるマイクロプロセッサは、先行命令が含んでいる少
なくとも1つ以上の副命令である先行副命令を実行する
ため、演算回路及び演算回路と汎用レジスタとの間のデ
ータ読み出し及び書き込み経路等が同時に使用される場
合、先行副命令の組み合わせによりデータ読み出し及び
書き込み経路の同時使用が行われるか否かを検知する同
時使用判定回路と、先行副命令の実行でデータ読み出し
及び書き込み経路の同時使用を回避するため先行副命令
のいずれかの動作を停止する衝突回避回路とをさらに備
え、実行停止回路は、先行副命令の動作が停止される期
間と同一期間だけ現命令の動作を停止し、条件実行判定
回路が先行命令内の実行条件フィールドと制御レジスタ
内の汎用フラグの値により先行副命令の実行を行うか否
かの判定を行い、条件実行判定回路から送信される制御
信号に基づいて衝突回避回路と実行停止回路の動作が制
御され、条件実行判定回路が先行副命令を実行しないと
判定し、データ読み出し及び書き込み経路の同時使用が
発生しない場合に、条件実行制御回路は、衝突回避回路
から送信される先行副命令の実行を指示する制御信号
と、実行停止回路から送信される現命令の実行を停止す
る制御信号を無効とするように制御して、あるリソース
コンフリクトによりパイプラインインターロックが発生
し、かつそのリソースコンフリクトを発生させるサブ命
令のいずれかが条件実行判定で不実行となった場合に、
その条件実行キャンセル信号でパイプラインストール信
号をキャンセルしてパイプラインのペナルティを削除す
るものである。
【0024】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。
【0025】以下で説明する条件実行命令を備えるマイ
クロプロセッサの各実施の形態を説明する前に、この発
明のマイクロプロセッサに共通の基本構成に関してまず
説明する。
【0026】マイクロプロセッサのハードウエア構成 図1は、この発明の条件実行命令を備えるマイクロプロ
セッサの全体構成を示すブロック図であり、マイクロプ
ロセッサ1は、命令デコードユニット(命令デコーダ)
2、メモリアクセスユニット(命令実行ユニット)3、
整数演算ユニット(命令実行ユニット)4、汎用レジス
タ5、命令RAM(メモリ)6、データRAM(メモ
リ)7から構成されている。
【0027】命令デコードユニット2は、命令RAM6
から64ビット幅のIDバスを通じて送られる命令コー
ドをMUデコーダ8、IUデコーダ9を用いてデコード
する。MUデコーダ8のデコード結果とプロセッサ状態
語(PSW)10よりメモリアクセスユニット3への制
御信号11を生成し、また、IUデコーダ9のデコード
結果とプロセッサ状態語10より整数演算ユニット4へ
の制御信号12を生成する。メモリアクセスユニット3
は、PC制御部13、メモリ制御部14、ALU15、
シフタ16から構成される。PC制御部13は、有効な
ジャンプ演算や分岐演算を含まない命令では、例えば実
行した命令のPC値に8を加えて次に実行する命令のP
C値を計算し、ジャンプ演算や分岐演算では実行した命
令のPC値に分岐変位を加算し、また演算で指定された
アドレッシングモードに従う計算をしてジャンプ先命令
のPC値を計算する。
【0028】メモリ制御部14は、PC制御部13で計
算されたPC値をもとにIAバスを用いて命令RAM6
を起動する。また、命令実行に必要なデータをデータメ
モリのアドレスを転送するOAバス、データを転送する
ODバスを通じてデータRAM7にアクセスし、汎用レ
ジスタ5にデータ転送する。ALU15およびシフタ1
6では、汎用レジスタ5から32ビット幅のS1バス、
S2バス、S6バスを通じて転送された最大3ワードの
データを用いて算術論理演算もしくはシフト演算を行
い、演算結果をW1バスを用いて汎用レジスタ5に転送
する。
【0029】S1、S2、S6、S5バスを通じて、汎
用レジスタ5から読み出された最大4ワードの32ビッ
ト長のデータが、メモリアクセスユニット3へ転送され
る。これにより、汎用レジスタ5からデータRAM7へ
2ワードストア命令を実現している。2ワードストア命
令では、2つのオペランドを使用し、メモリアドレスを
計算し、データRAM7へ2ワードデータを転送する。
また、メモリアクセスユニット3は、W1、W3E、W
3Oバスを通じて、メモリアクセスユニット3内での演
算結果およびデータRAM7から転送された2ワードの
ロードデータを、汎用レジスタ5へ転送する。
【0030】整数演算ユニット4は、乗算器17、アキ
ュムレータ18、ALU19、シフタ20から構成され
る。乗算器17、ALU19、シフタ20では、汎用レ
ジスタ5から32ビット幅のS3、S4、S5バスを通
じて転送された最大3ワードのデータを用いて算術論理
演算もしくはシフト演算を行い、演算結果をW2,W3
E、W3Oバスを用いて汎用レジスタ5に転送する。ま
た、アキュムレータ18は、乗算の結果を累積加算また
は累積減算してその演算結果を保持する。
【0031】汎用レジスタ5は、最大6種類のレジスタ
値を同時に読み出すことが可能で、読み出されたデータ
は、それぞれS1、S2、S3、S4、S5、S6バス
に出力される。また、汎用レジスタ5は、W1、W2、
W3E、W3Oバスに接続され、最大4種類のレジスタ
値を同時に書き込むことが可能である。命令RAM6
は、32ビット幅のIAバスと64ビット幅のIDバス
に接続されており、IAバスの示すアドレスに対応する
64ビット長の命令データを読み出す。データRAM7
は、32ビット幅のOAバスと64ビット幅のODバス
に接続されており、OAバスの示すアドレスに対応す
る、64ビット長のデータを読み書きする。
【0032】命令セットとレジスタ 図2は、図1に示したマイクロプロセッサ1で用いられ
る命令フォーマットを示す説明図である。マイクロプロ
セッサ1の命令フォーマットには、1つの命令で2つの
演算を指示する2副命令のフォーマット101と1つの
命令で1つの演算を指示する1演算命令のフォーマット
102がある。2演算命令のフォーマット101にはフ
ィールド103とフィールド104からなるフォーマッ
トフィールド、2つの演算フィールド106、107及
び各演算フィールドに1つずつ付属する実行条件フィー
ルド105がある。1演算命令のフォーマットにはフィ
ールド103とフィールド104からなるフォーマット
フィールド、フィールド108とフィールド109とフ
ィールド110とからなる演算フィールド及びこの演算
フィールドに付属する実行条件フィールド105があ
る。
【0033】図3は、図2に示した命令フォーマット内
のフォーマットフィールド103,104の詳細を示す
説明図であり、図において、FM=00の場合、この命
令は2演算命令であり、演算フィールド106で指示さ
れたoperation_0の演算と演算フィールド1
07で指示されたoperation_1の演算がデコ
ード直後のクロックサイクルで並列に実行される。フォ
ーマットフィールドの値FM=01の場合、この命令は
2演算命令であり、演算フィールド106で指示された
operation_0の演算がデコード直後のクロッ
クサイクルに実行され、演算フィールド107で指示さ
れたoperation_1の演算がoperatio
n_0の演算に対して1クロックサイクル遅れて実行さ
れる。
【0034】FM=10の場合、この命令は2演算命令
であり、演算フィールド107で指示されたopera
tion_1の演算がデコード直後のクロックサイクル
に実行され、演算フィールド106で指示されたope
ration_0の演算がoperation_1の演
算に対して1クロックサイクル遅れて実行される。FM
=11の場合、この命令は1演算命令であり、108と
109と110からなる演算フィールドで指示された1
つの演算がデコード直後のクロックサイクルで実行され
る。
【0035】図4は、図2に示した実行条件フィールド
(CC)105の詳細を示す説明図である。実行条件フ
ィールド105は、後述するマイクロプロセッサ1の状
態フラグF0及びF1の値に依存して演算フィールド1
06、107でそれぞれ示されたoperation_
0の演算やoperation_1の演算及び演算フィ
ールド108と109と110で示された演算が有効で
あるか無効であるかを定める。演算が有効であるとき
は、演算結果がレジスタ、メモリ、フラグに反映され、
その演算により定義された動作結果が残ることを意味
し、演算が無効であるときは、演算結果がレジスタ、メ
モリ、フラグに反映されず、定められた演算の種類には
関わらずその演算により無効演算(NOP:no op
eration)と同じ結果がレジスタやフラグに残る
ことを意味する。
【0036】実行条件フィールド105の値CC=00
0のとき、演算はフラグF0、F1の値に関わらず常に
有効である。CC=001のとき、演算はF1の値には
関わらずF0=真のときのみ有効である。CC=010
のとき、演算はF1の値には関わらずF0=偽のときの
み有効である。CC=011のとき、演算はF0の値に
は関わらずF1=真のときのみ有効である。CC=10
0のとき、演算はF0の値には関わらずF1=偽のとき
のみ有効である。CC=101のとき、演算はF0=真
かつF1=真のときのみ有効である。CC=110のと
き、演算はF0=真かつF1=偽のときのみ有効であ
る。CC=111のときの動作は未定義であり、この値
が命令で用いられることはない。
【0037】図5は、28ビット長で表現される短型の
演算フィールド106、107と54ビット長で表現さ
れる長型の演算フィールド(図2に示した演算フィール
ド108、109、110で構成される)の詳細を示す
説明図である。短型の演算フィールドには、7つのフォ
ーマット111、112、113、114、115、1
16、117があり、長型の演算フィールドには1つの
フォーマット118がある。
【0038】フォーマット111は、演算内容を指定す
るフィールド120、レジスタの番号を指定する2つの
フィールド121、122、レジスタ番号または6ビッ
ト長の即値を指定するフィールド123、フィールド1
23がレジスタ番号を示すか即値を示すかを指定するフ
ィールド124から構成される。このフォーマット11
1はレジスタ間接アドレッシングのメモリアクセス演算
に使用される。
【0039】フォーマット112は、演算内容を指定す
るフィールド120、レジスタの番号を指定する2つの
フィールド121、122、レジスタ番号または6ビッ
ト長の即値を指定するフィールド123、フィールド1
23がレジスタ番号を示すか即値を示すかを指定するフ
ィールド125から構成される。このフォーマット11
2は算術演算、論理演算、シフト演算、ビット演算に使
用される。
【0040】フォーマット113は、演算内容を指定す
るフィールド120、レジスタの番号を指定するフィー
ルド126から構成される。このフォーマット113
は、レジスタ指定によるジャンプ、分岐命令に使用され
る。フォーマット114は、演算内容を指定するフィー
ルド120、18ビット長のディスプレイスメントのフ
ィールド127から構成される。このフォーマット11
4は、ジャンプ、分岐命令に使用される。
【0041】フォーマット115は、演算内容を指定す
るフィールド120、レジスタの番号を指定するフィー
ルド121、レジスタ番号または12ビット長の即値を
指定するフィールド128、フィールド128がレジス
タ番号を示すか即値を示すかを指定するフィールド12
9、フィールド121がゼロ判定による条件ジャンプお
よび条件分岐を行うか否かを指定するフィールド130
から構成される。このフォーマット115は、条件ジャ
ンプ、条件分岐命令に使用される。
【0042】フォーマット116は、演算内容を指定す
るフィールド120、レジスタの番号を指定するフィー
ルド121、レジスタ番号または12ビット長の即値を
指定するフィールド128、フィールド128がレジス
タ番号を示すか即値を示すかを指定するフィールド12
9から構成される。このフォーマット116は、条件ジ
ャンプ、条件分岐命令、リピート命令に使用される。
【0043】フォーマット117は、演算内容を指定す
るフィールド120、レジスタ番号または12ビット長
の即値を指定するフィールド128、フィールド128
がレジスタ番号を示すか即値を示すかを指定するフィー
ルド129、ディレイド命令のディレイ値を指定するフ
ィールド131から構成される。このフォーマット11
7は、ディレイドジャンプ、ディレイド分岐命令に使用
される。
【0044】フォーマット118は、演算内容を指定す
るフィールド120、レジスタの番号を指定する2つの
フィールド121、122、32ビット長の即値を指定
するフィールド132から構成される。このフォーマッ
ト118の演算には、複雑な算術演算、大きな即値を用
いる算術演算、大きなディスプレースメント付きレジス
タ間接アドレッシングのメモリアクセス演算や大きな分
岐変位の分岐演算、絶対番地へのジャンプ演算などがあ
る。
【0045】フォーマット119は、演算内容を指定す
るフィールド120、レジスタの番号を指定する2つの
フィールド121、122、32ビット長の即値を指定
するフィールド132、フィールド132がゼロ判定に
よる条件ジャンプおよび条件分岐を行うか否かを指定す
るフィールド133から構成される。このフォーマット
119は、大きな分岐変位をもつ条件ジャンプ、条件分
岐命令に使用される。
【0046】図6は、図1に示したマイクロプロセッサ
1のレジスタの構成を示す説明図である。マイクロプロ
セッサ1には、64本の32ビット長の汎用レジスタ
5、12本の制御レジスタ150、および2本のアキュ
ムレータ18がある。汎用レジスタ(R0)140は、
読み出した場合常に0で書き込みは無視される。汎用レ
ジスタ(R63)はスタックポインタであり、プロセッ
サ状態語(PSW)10のSMフィールドの値に依存し
てユーザスタックポインタ(SPU)141または割り
込みスタックポインタ(SPI)142が動作する。制
御レジスタ150には、プログラムカウンタ151、プ
ロセッサ状態語10や各種の専用レジスタが含まれる。
フォーマット112の演算では、64本の汎用レジスタ
5のそれぞれを上位16ビットと下位16ビットに分け
て別々にアクセスできる。また、2本のアキュムレータ
18はそれぞれ上位32ビットと下位32ビットを別々
にアクセスできる。
【0047】図7は、プロセッサ状態語10の詳細を示
す説明図である。プロセッサ状態語(PSW)10の上
位16ビット170にはスタックポインタを切り替える
SMフィールド171、ソフトウェアデバッガトラップ
(SDBT)の検出を示すEAフィールド172、SD
BTの許可を指定するDBフィールド173、割り込み
許可を指定するEIフィールド174、リピート動作の
許可を指定するRPフィールド175、モジュロアドレ
シングの許可を指定するMDフィールド176がある。
【0048】下位16ビットは、フラグフィールド18
0である。フラグフィールド180には8個のフラグが
あり、その中のF0フラグ181とF1フラグ182は
演算の有効無効を制御する。各フラグの値は、比較演算
や算術演算の結果に依存して変化するほか、フラグ初期
化演算で初期化したり、フラグ値書き込み演算で任意の
値をフラグフィールド180に書き込むことで変化す
る。また、フラグ値読み出し演算でフラグフィールド1
80の値を読み出すこともできる。
【0049】以下に、図1に示したこの発明のマイクロ
プロセッサ1で用いられる命令一覧を示す。
【0050】 A. MCU function instructions A-1. Load/Store instructions LDB Load one byte to a register with sign extension LDBU Load one byte to a register with zero extension LDH Load one half-word to a register with sign extension LDHH Load one half-word to a register high with sign extension LDHU Load one half-word to a register with zero extension LDW Load one word to a register LD2W Load two words to registers LD4BH Load four bytes to four half-word in two registers with sign extension LD4BHU Load four bytes to four half-word in two registers with zero extension LD2H Load two half-word to two word in two registers with sign extension STB Store one byte from a register STH Store one half-word from a register STHH Store one half-word from a register high STW Store one word from a register ST2W Store two words from registers ST4HB Store four bytes from four half-word from two registers ST2H Store two half-word from two registers MODDEC Decrement a register value by a 5-bit immediate value MODINC Increment a register value by a
5−bit immediate value
【0051】 A−2. Transfer instructions MVFSYS Move a control register to a general purpose register MVTSYS Move a general purpose register to a control register MVFACC Move a word from an accumulator MVTACC Move two general purpose registers to an accumulator
【0052】 A-3. Compare instructions CMPcc Compare cc = EQ, NE, GT, GE, LT, LE, PS(both positive), NG(both negative) CMPUcc Compare unsigned cc = GT, GE, LT, LE
【0053】 A-4. Maximum/Minimum instructions reserved
【0054】 A-5. Arithmetic operation instructions ABS Absolute ADD Add ADDC Add with carry ADDHppp Add half-word ppp = LLL, LLH, LHL, LHH, HLL, HLH, HHL, HHH ADDS Add register Rb with the sign of the third operand ADDS2H Add sign to two half-word ADD2H Add two pairs of half-words AVG Average with rounding towards positive infinity AVG2H Average two pairs of half-words rounding towards positive infinity JOINpp Join two half-words pp = LL, LH, HL, HH SUB Subtract SUBB Subtract with borrow SUBHppp Subtract half-word ppp = LLL, LLH, LHL, LHH, HLL, HLH, HHL, HHH SUB2H Subtract two pairs of half-words
【0055】 A-6. Logical operation instructions AND logical AND OR logical OR NOT logical NOT XOR logical exclusive OR ANDFG logical AND flags ORFG logical OR flags NOTFG logical NOT a flag XORFG logical exclusive OR flags
【0056】 A-7. Shift operation instructions SRA Shift right arithmetic SRA2H Shift right arithmetic two half-words SRC shift right concatenated registers SRL Shift right logical SRL2H Shift right logical two half-words ROT Rotate right ROT2H Rotate right two half-words
【0057】 A-8. Bit operation instructions BCLR Clear a bit BNOT Invert a bit BSET Set a bit BTST Test a bit
【0058】 A-9. Branch instructions BRA Branch BRATZR Branch if zero BRATNZ Branch if not zero BSR Branch to subroutine BSRTZR Branch to subroutine if zero BSRTNZ Branch to subroutine if not zero DBRA Delayed Branch DBRAI Delayed Branch immediate DBSR Delayed Branch to subroutine DBSRI Delayed Branch immediate to subroutine DJMP Delayed Jump DJMPI Delayed Jump immediate DJSR Delayed Jump to subroutine DJSRI Delayed Jump immediate to subroutine JMP Jump JMPTZR Jump if zero JMPTNZ Jump if not zero JSR Jump to subroutinee JSRTZR Jump to subroutine if zero JSRTNZ Jump to subroutine if not zero NOP No operation
【0059】 A-10. OS-related instructions TRAP Trap REIT Return from exception, interrupts, and traps
【0060】 B. DSP function instructions B-1. Arithmeti operation instructions MUL Multiply MULX Multiply with extended precision MULXS Multiply and shift to the right by one with extended precision MULX2H Multiply two pairs of half-words with extended precision MULHXpp Multiply two half-words with extended precision pp = LL, LH, HL, HH MUL2H Multiply two pairs of half-words MACa Multiply and add a = 0, 1 MACSa Multiply, shift to the right by one, and add a = 0, 1 MSUBa Multiply and subtract a= 0, 1 MSUBSa Multiply, shift to the right by one, and subtract a = 0, 1 SAT Saturate SATHH Saturate word operand into high half-word SATHL Saturate word operand into low half-word SATZ Saturate into positive number SATZ2H Saturate two half-words into positive number SAT2H Saturate two half-word operands
【0061】 B-2. Repeat instructions REPEAT Repeat a block of instructions REPEAT Repeat a block of instructions with immediate
【0062】マイクロプロセッサ1におけるパイプライ
ン動作 図8は、図1に示したこの発明のマイクロプロセッサ1
の並列2命令実行時(FM=00)のパイプライン動作
を示す説明図である。パイプラインは、命令フェッチ
(IF)ステージ191、デコード/アドレス演算(D
/A)ステージ192、実行/メモリアクセス(Eor
M)ステージ193、ライトバック(W)ステージ19
4から構成される。
【0063】並列2命令実行時には、メモリアクセスユ
ニット3での実行190と整数演算ユニット4での実行
195(斜線の部分)が並列に行われる。図9は、一つ
の命令実行でなされる各処理を4段のパイプライン図に
割当てた場合を示す説明図である。まず、IFステージ
で命令フェッチが実行され、D/Aステージでその命令
のデコードが実行される。そして、同じくD/Aステー
ジの前半から汎用レジスタの読み出しが開始されて、後
半でアドレス計算がなされる。EorMステージでは、
演算及びメモリアクセスが実行される。そして、Wステ
ージの後半で汎用レジスタの書き込みが実行される。こ
れが1命令を実行する際のパイプライン的な処理の概要
である。
【0064】また、図9においてパイプラインの下に示
しているように、4つのステージの前半と後半で行われ
る処理は、それぞれクロックのHighとLowに同期
して行われている。IFステージの前半と後半の処理を
それぞれI1、I2期間中の処理と呼ぶ。また、Dステ
ージの前半と後半の処理をそれぞれD1、D2期間中の
処理と呼ぶ。また、Eステージの前半と後半の処理をそ
れぞれE1、E2期間中の処理と呼ぶ。また、Wステー
ジの前半と後半の処理をそれぞれW1、W2期間中の処
理と呼ぶ。
【0065】マイクロプロセッサ1の詳細なブロック図 図10〜図13は、図1に示したマイクロプロセッサ1
のメモリアクセスユニットと整数演算ユニットを中心と
した詳細な構成を示すブロック図であり、図において、
マイクロプロセッサ1は、命令デコードユニット2、メ
モリアクセスユニット3、整数演算ユニット4、汎用レ
ジスタ5、命令RAM6、データRAM7から構成され
ている。
【0066】メモリアクセスユニット3は、図1に示し
たマイクロプロセッサ内のALU15、シフタ16を備
えている。220は、D2同期バス群の値を取り込むレ
ジスタであり、格納した値をシフタ16へ出力する。2
21は、D2同期バス群の値を取り込むレジスタであ
り、格納した値をALU15へ出力する。また、その他
メモリ制御、PC制御、演算制御等を行うための各種演
算器やレジスタ等がメモリアクセスユニット3内に含ま
れている。29は、命令フェッチ処理の際に、命令RA
M6へ送信するアドレスを保持するための命令アドレス
レジスタである。30は、メモリへのストア処理を行う
際に、ストアデータの整値を行うための制御部である。
33は、メモリからのロードデータの符号拡張を行うた
めの制御部である。31は、ロードとストア命令実行時
のポストインクリメント/デクリメントアドレッシング
を行うためのインクリメンタである。32は、ロード/
ストア命令及び分岐命令等を実行する際にアドレス計算
を行うための加算器である。50は、ALU、シフタの
結果を保持するレジスタである。
【0067】またCR0〜CR11は、図6で示した制
御レジスタ150に相当する。34は、プログラムカウ
ンタCR0をインクリメントするためのインクリメンタ
である。35は、リピート命令やディレイド分岐命令を
実行する際に、リピートカウントレジスタCR6の値や
リピートエンドアドレスレジスタCR8の値を計算する
ための加算器である。36は、リピートカウントレジス
タの値をデクリメントするためのデクリメンタである。
37は、命令アドレスレジスタの値をインクリメントす
るためのインクリメンタである。40は、命令ブレーク
アドレスレジスタCR11の値とプログラムカウンタC
R0の値とを比較し、両者が同じ値であれば一致信号を
出力する32ビット比較器である。
【0068】41は、リピートカウントレジスタCR6
の値が0以上であれば有効となる信号を出力する32ビ
ット比較器である。42は、リピートエンドアドレスレ
ジスタCR8の値と命令アドレスレジスタ29の値を比
較し、同じ値であれば一致信号を出力する32ビットの
比較器である。43は、モジュロエンドアドレスレジス
タCR10の値とインクリメンタ31の値が同じであれ
ば一致信号を出力する32ビット比較器である。44
は、D1S6BUSバスの値が0であれば有効となる信
号を出力するための32ビット比較器である。
【0069】また整数演算ユニット4内には、図1に示
すマイクロプロセッサ1内の乗算器17(図13では、
17a〜17dに相当する)、ALU19、シフタ20
がある。その他の演算器として、飽和演算をするための
演算器21がある。222は、D2同期バス群の値を取
り込むレジスタであり、格納した値はALU20へ出力
される。223は、D2同期バス群の値を取り込むレジ
スタであり、格納した値をシフタ19及び飽和演算器2
1へ出力する。224は、D2同期バス群の値を取り込
むレジスタであり、格納した値を乗算器17へ出力す
る。
【0070】また、A0、A1は、積和演算等を行う際
の累積加算等を行うためのアキュムレータである。55
は、ALU,シフタ,飽和演算器の結果を保持するレジ
スタである。
【0071】また、図1に示したS1、S2、S3、S
4、S5、S6バスは、図10〜図13ではD1S1B
US、D1S2BUS、D1S3BUS、D1S4BU
S、D1S5BUS、D1S6BUSに相当する。参照
記号D1S1BUS内のD1とは、図9に示すD1期間
中にバスがドライブされることを意味する。これら先頭
にD1の付いているバスをD1同期バス群と呼ぶ。
【0072】また、図1に示したW1、W2、W3E、
W3Oバスは、図10〜図13ではW1W1BUS、W
1W2BUS、W1W3EBUS、W1W3OBUSに
相当する。参照記号W1W1BUS内のW1とは、図9
に示すW1期間中にバスがドライブされることを示して
いる。これら先頭にW1の付いているバスは同様にW1
同期バス群と呼ぶ。
【0073】またD2S1BUS、D2S2BUS、D
2S3BUS、D2S4BUS、D2S5MBUS、D
2S5IBUS、D2S6BUSは、D1同期バス群の
データをラッチを介して半クロック遅延させ、D2の期
間中にこれらのデータをドライブする。そのタイミング
を変更するラッチは、40a、40bである。
【0074】また41a、41b、41cは、命令デコ
ーダ部より出力された即値データである。これらは、バ
スドライバ42a、42b、42c、42dを介して、
D1、D2同期バス群に出力される。また、E2D1B
US、E2D3BUS、E2D4BUSは、制御レジス
タの値や演算器の値を保持するレジスタの値をE2期間
中に出力するバスである。
【0075】また51は、E2D1BUS上のデータを
W1W1BUSに出力するためのライトバックレジスタ
である。53は、ロードデータの値をW1W3EBU
S、W1W3OBUSへ出力するためのレジスタであ
る。54は、演算結果保持レジスタ55の値をW1W2
BUSへ出力するためのライトバックレジスタである。
また60は、命令デコードユニット2内のPSWレジス
タの値をE2D1BUSに読み出すための経路である。
61は、E1CRBUSの値を命令デコードユニット2
内のPSWレジスタに書き込むための経路である。62
は、ALU15でキャリーフラグを用いる演算を実行す
る時にキャリーフラグの伝播する経路である。
【0076】63は、ALU15から命令デコードユニ
ット2へ出力されるフラグの伝搬経路である。64は、
ALU20から命令デコードユニットに出力されるフラ
グの伝搬経路である。65は、ALU20でキャリーフ
ラグを用いる演算を実行する時にキャリーフラグの伝播
する経路である。66は、飽和演算器21から命令デコ
ードユニットに出力されるフラグの伝搬経路である。
【0077】200〜211は、バイパス処理を行うた
めの回路及び経路である。即ち、200は、ロードデー
タバスM2ODBUSの値を符号拡張するための制御部
である。201は、ライトバックレジスタ56の値が出
力されたバスW1W3EBUS、W1W3OBUSの値
を取り込むレジスタである。202は、レジスタ50の
値をメモリアクセス部のD2同期バス群へ出力するため
の経路である。203、はライトバックレジスタ51の
値をD1同期バス群へ出力するための経路である。20
4は、レジスタ57の値をD1同期バス群へ出力するた
めの経路である。205は、レジスタ201の値をメモ
リアクセス部のD2同期バス群へ出力するための経路で
ある。206は、符号拡張部33の値をメモリアクセス
部のD2同期バス群へ出力するための経路である。20
7は、レジスタ53の値をメモリアクセス部のD2同期
バス群へ出力するための経路である。208は、符号拡
張部200の値を整数演算部のD2同期バス群へ出力す
るための経路である。209は、ライトバックレジスタ
54の値をD1同期バス群へ出力するための経路であ
る。
【0078】210は、レジスタ55の値を整数演算部
のD2同期バス群に出力するための経路である。211
は、ライトバックレジスタ56の値をD1同期バス群に
出力するための経路である。
【0079】データ干渉発生時にデータの整合性を保証
する処理 図9に示したパイプライン図で説明したように、汎用レ
ジスタ5からのデータの読み出しはD1期間中に実行さ
れる。そして、汎用レジスタ5へのデータの書き込みは
W2期間中に実行される。このことから、先行する命令
の書き込み先(ディスティネーション)レジスタから、
直後の命令がデータの読み出しを行いたい場合、バイパ
ス処理やパイプラインインターロック処理等でデータの
整合性を保証してやる必要がある。このような処理が必
要なデータの関係をデータ干渉と呼んでいる。
【0080】図14は、命令コード間のパイプラインで
のデータの干渉を示す説明図であり、図において、60
0a、600b、600cはそれぞれメモリアクセスユ
ニット3で実行されるWステージ、EorMステージ、
Dステージで実行されるサブ命令コードを示す。また、
601a、601b、601cは、それぞれ整数演算ユ
ニット4で実行されるWステージ、EorMステージ、
Dステージのサブ命令コードを示している。
【0081】各サブ命令コードの5つのフィールドは、
先頭からオペコードと、条件実行フィールドと、ディス
ティネーションレジスタ指定フィールドと、2つのソー
スレジスタ指定フィールドを示している。各フィールド
に書いている記号の先頭の2文字は、それぞれのステー
ジとそれぞれの演算ユニットでの実行を示している。す
なわち、参照記号WMは、Wステージのメモリアクセス
ユニットでの実行であることを示している。
【0082】図14に示す各パイプライン内の点線の矢
印610,611は、バイパス処理によりデータの整合
性を保証するデータ干渉の例を示している。矢印610
のように同一メモリアクセスユニット3内でのデータ干
渉は比較的バイパス経路を設け易い。そのためデータ干
渉発生時のデータの整合性の保証は、ほとんどがバイパ
ス処理により実行されている。また矢印611のよう
に、異なるメモリアクセスユニット3,4間のデータ干
渉でも、性能に影響が出る場合は、専用のバイパス経路
を設けてデータの整合性を保証している。
【0083】バイパス経路でデータの整合性を保証する
場合は、パイプラインを停止する必要がなくペナルティ
なしで処理を実行することができる。それに対して、実
線の矢印612,613,614,615は、パイプラ
インインターロック処理によりデータの整合性を保証す
るデータ干渉の例を示している。矢印612では、同一
メモリアクセスユニット内でもタイミング的に間に合わ
ない処理の場合に、必要なデータが生成されるまでパイ
プラインのインターロック処理が必要となる。矢印また
613のように、異なるメモリアクセスユニット3,4
間では、ほとんどがバイパス処理不可能であるため、干
渉しているデータが汎用レジスタ5内に書き込まれる
迄、パイプラインのインターロック処理が必要となる。
【0084】また矢印614,615のように、Eステ
ージのサブ命令コード600b、601bが、条件実行
フラグを更新する命令である場合で、かつ、その直後の
Dステージのサブ命令コードの条件実行フィールドが、
条件実行判定が必要である場合に、そのフラグの値が更
新されるまでパイプラインをインターロックさせる必要
がある。このように、パイプラインインターロック処理
では、干渉しているデータの整合性を保証するためにパ
イプラインを停止する必要があり、そのためペナルティ
が発生する。
【0085】この発明のマイクロプロセッサ1では、こ
のパイプラインインターロックにより発生するペナルテ
ィを特定条件下で削除する機能を有するものであり、以
降では、上記処理をパイプラインインターロックキャン
セル処理と呼ぶ。
【0086】図15は、命令デコードユニット2内に組
み込まれているパイプラインインターロックキャンセル
処理を制御する制御回路(図1,図10〜図13では煩
雑さを避けるため図示せず)を示すブロック図であり、
図において、700は命令RAM6から命令データバス
I2IDBUSを介して送信される命令コードとフィー
ドバック経路から送信される命令コードのいずれかを選
択するセレクタである。セレクタ700の動作は、セレ
クタ制御回路721により制御される。このセレクタ7
00の出力は、パイプラインのIステージ内のI2期間
のタイミングであり、プリデコード用の命令コードとし
てプリデコード回路710へ出力される。
【0087】また、701〜706は、命令コードを保
持するレジスタである。701,702は、Dステージ
の命令コードを保持するレジスタである。703,70
4は、Eステージの命令コードを保持するレジスタであ
る。705は、Wステージの命令コードを保持するレジ
スタである。また706は、フィードバック経路用のレ
ジスタであり、レジスタ701の値を取り込んでセレク
タ700へ出力する。これらのレジスタ701〜706
は、命令コードライト信号生成回路(実行停止回路)7
20より出力されるライトイネーブル信号により制御さ
れる。またレジスタ701〜705の出力は、各種デコ
ーダ710,712,714〜719へ出力される。
【0088】710は、プリデコード用の命令コードを
デコードし汎用レジスタ(GPR)リード信号を生成す
るデコーダ回路である。711は、デコーダ710の結
果を保持するD1同期のラッチである。すなわち汎用レ
ジスタ(GPR)5からの読み出しは、D1期間より開
始する。712は、レジスタ702の出力をデコード
し、データRAMアクセスの制御信号を生成するデコー
ダ回路である。713は、デコーダ712の結果を保持
するM1同期のラッチ(M1L)である。すなわちデー
タRAM7に対するアクセスは、M1より開始される。
【0089】717は、レジスタ701の出力をデコー
ドし、D1同期のデータバス制御信号を生成するデコー
ダ回路である。714は、レジスタ702の出力をデコ
ードし、D2同期のデータバス制御信号を生成するデコ
ーダ回路である。715はレジスタ703の出力をデコ
ードし、E1同期のデータバス制御信号を生成するデコ
ーダ回路である。716は、レジスタ705の出力をデ
コードし、汎用レジスタ(GPR)5のライト信号を生
成するデコーダ回路である。汎用レジスタ(GPR)5
へのライトは、W1同期のライト信号によりW2期間中
に実行される。
【0090】718は、バイパス処理を実行するための
デコーダ回路(衝突回避回路)である。719は、パイ
プラインインターロック処理を実行するためのデコーダ
回路(データ干渉判定回路)である。また722は、P
SWからの条件実行フラグとレジスタ702内の条件実
行フィールドから条件実行を制御する条件実行制御回路
である。条件実行制御回路722からキャンセル信号が
各種デコーダ回路に出力されて条件実行の可否を制御し
ている。
【0091】図16は、パイプラインインターロック制
御回路図を示すブロック図であり、図15に示すデコー
ダ回路719に相当するものである。図において、80
0〜803は、パイプラインインターロックが必要か否
か検知する制御ブロックである。この制御ブロック80
0は、メモリアクセスユニット3のパイプラインのEス
テージでのデスティネーションレジスタ指定フィールド
810とDステージのソースレジスタ指定フィールド8
11とを比較器814で比較し、その比較結果とオペコ
ード812,813との値からパイプラインインターロ
ックを判定する回路815より構成されている。
【0092】802は、メモリアクセスユニット3のパ
イプラインのDステージでの条件実行フィールド816
が、0以上であることを比較器819で比較し、その比
較結果とオペコード817,818との値からパイプラ
インインターロックを判定する回路820より構成され
ている。
【0093】803は、メモリアクセスユニット3のパ
イプラインのDステージでのオペコード821とデステ
ィネーションレジスタ指定フィールド822との値か
ら、パイプラインフラッシュを判定する判定回路823
より構成されている。
【0094】801は、異なる命令コードが入力する8
00,802,803と同様な回路構成を有する制御ブ
ロックであり、このような制御ブロックがパイプライン
インターロック制御回路部には多数存在する。各制御ブ
ロック800〜803からの出力信号は、AND回路8
30〜833へ出力され、制御信号850がHighレ
ベルである時にキャンセルされる。AND回路830〜
833からの出力は、タイミング調整回路835〜83
8へ出力され、これによりパイプラインインターロック
制御用の必要なタイミングの信号851〜854が生成
される。パイプラインインターロック制御信号851〜
854は、OR回路839へ入力され、ラッチを介して
信号855として出力される。
【0095】図17は、図15に示す条件実行制御回路
722を示すブロック図であり、図において、860,
861は、メモリアクセス部及び整数演算部それぞれの
3ビットの条件実行フィールドをデコードするデコード
回路である。862,863は、プロセッサ状態ワード
(PSW)から得られる条件実行フラグ880とデコー
ダ860,861のデコード結果とから条件実行命令を
実行するか否かを判定する条件実行判定回路である。
【0096】条件実行判定回路862,863の出力
は、OR回路864,865に出力され、パイプライン
インターロック信号881とOR処理された後に出力さ
れる。さらにそれらの信号は、866〜871のE1,
E2,W1同期のラッチで必要なタイミングに加工さ
れ、キャンセル信号として出力される。884a,88
4b,884c,885a,885b,885cは、ラ
ッチ886〜871の更新処理を制御するライトイネー
ブル信号である。
【0097】図18は、パイパス制御回路図を示すブロ
ック図であり、図15に示すデコーダ回路718に相当
するものである。図において、890,891はバイパ
ス処理が必要か否か検知する制御ブロックである。制御
ブロック890では、メモリアクセスユニット3のDス
テージのソースレジスタ指定フィールド892と整数演
算ユニット4のWステージのデスティネーションレジス
タ指定フィールド893とを比較器896で比較し、そ
の結果とオペコード894,895との値からバイパス
処理が必要か否かを判定する回路897より構成されて
いる。891は、異なる命令コードを入力するバイパス
制御回路890と同様な回路構成を有する制御ブロック
であり、このような制御ブロックがバイパス制御回路部
には複数個存在する。各制御ブロック890,891か
らの出力は、OR回路898,899へ出力され、そこ
で制御信号900とOR処理されてバイパス経路選択信
号として出力される。
【0098】パイプラインインターロックキャンセル処
理 次に、この発明のマイクロプロセッサ1でのパイプライ
ンインターロックキャンセル処理に係わる各実施の形態
について説明する。この発明のマイクロプロセッサ1に
おけるパイプラインインターロックキャンセル処理で
は、パイプラインインターロックを発生させる命令コー
ドが、条件実行判定により不実行となった場合に、その
パイプラインインターロック処理をキャンセルし、パイ
プラインのペナルティを削減するものである。
【0099】実施の形態1.図19は、この発明の実施
の形態1によるマイクロプロセッサ1のメモリアクセス
時のパイプラインインターロックキャンセル処理を示す
タイミング図であり、図において、白の部分はメモリア
クセスユニット3で実行されているパイプライン、斜線
部分は、整数演算ユニット4で実行されているパイプラ
インを示す。
【0100】901は、メモリアクセスユニット3で実
行されるロード命令のパイプラインである。902はパ
イプライン901の後続のパイプラインである。903
は条件実行判定で不実行となるロード命令のパイプライ
ンである。904はパイプライン903の後続のパイプ
ラインである。
【0101】実施の形態1のマイクロプロセッサ1で
は、ロード命令のパイプライン901では、D1で汎用
レジスタ(GPR)5からデータの読み出しを開始し、
読み出したデータを用いてD2でデータRAM7に対す
るアドレス計算を行う。そしてMステージからデータR
AMリクエスト信号を出力する。そのリクエストに対す
るデータの読み出しが2クロック後である場合、そのデ
ータが到達する2クロックの間、パイプライン901の
Mステージはインターロックされる。そして後続のパイ
プライン902のDステージもパイプラインが停止され
てペナルティが発生する。
【0102】不実行となるロード命令のパイプライン9
03では、Dステージで条件実行判定を行い、D2から
条件実行キャンセル信号を出力する。そしてそのキャン
セル信号によりデータRAMリクエスト信号をキャンセ
ルし、Mステージ以降のパイプラインをキャンセルす
る。これにより実施の形態1のマイクロプロセッサで
は、Mステージでのパイプラインインターロックが発生
しないため、後続パイプライン904もペナルティなし
に実行することが可能となる。
【0103】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
19に示すメモリアクセス時のパイプラインインターロ
ックキャンセル処理を示すタイミング図を用いて、メモ
リアクセス時のパイプラインインターロックキャンセル
処理について説明する。
【0104】図19に示すパイプラインのロード命令
が、図10〜図13に示す命令RAM6からI2IDB
USを介して読み出され、図15に示すセレクタ700
を介して各制御回路に転送され読み出された命令が転送
される。デコーダ回路710では、アドレス計算用のソ
ースデータの読み出しを行うための汎用レジスタ(GP
R)5への読み出し信号の生成を行う。そして図12に
示す加算器32では、D1S1BUS、D1S2BUS
へ読み出されたソースデータを加算し、アドレスの計算
を行う。そして生成されたアドレスは、オペランドアド
レスバスM1OABUSへ出力される。
【0105】データRAMリクエスト信号は、図15の
レジスタ702の命令コードをデコード回路712でデ
コードし、ラッチ713を介してMステージより出力さ
れる。そしてデータRAMより読み出されたデータは、
図10〜図13に示すオペランドデータバスM2ODB
US経由で符号拡張部33を介してロードデータレジス
タ53に取り込まれる。そしてレジスタ53の値は、ラ
イトバックバスW1W3EBUS,W1W3OBUSを
介して汎用レジスタ(GPR)5に書き込まれる。
【0106】汎用レジスタ(GPR)5への書き込み信
号であるGPRライト信号は、図15に示すレジスタ7
05の値をデコーダ回路716でデコードして生成す
る。データRAMアクセスでパイプラインインターロッ
クが発生した場合は、図15に示す命令コードライト信
号生成回路(実行停止回路)720で命令コードの更新
を制御するように信号を生成し、レジスタ701〜70
5の更新をインターロック期間中停止する。このロード
命令が条件実行判定で不実行である場合は、図15に示
す条件実行制御回路722から条件実行キャンセル信号
723がデコーダ回路712,716に出力されて、デ
ータRAMリクエスト信号及び汎用レジスタライト信号
がキャンセルされる。
【0107】以上のように、この実施の形態1によれ
ば、ロード命令が条件実行判定で不実行となった場合
に、ロードしたデータを汎用レジスタ(GPR)5へ書
き込む処理のみをキャンセルするのではなく、データR
AMアクセス処理の動作からキャンセルするので、先行
命令と現在実行する命令のパイプライン間にデータ干渉
が発生した場合におけるパイプラインの停止動作をキャ
ンセルするのでパイプラインのペナルティを削減するこ
とができる。
【0108】実施の形態2.図20は、この発明の実施
の形態2によるマイクロプロセッサ1のアドレス計算デ
ータのパイプラインインターロックキャンセル処理を示
すタイミング図であり、図において、白の部分はメモリ
アクセスユニット3で実行されているパイプライン、斜
線部分は、整数演算ユニット4で実行されているパイプ
ラインを示す。
【0109】905は、メモリアクセスユニット3で実
行される加算命令のパイプラインである。906は、パ
イプライン905の後続のロード命令のパイプラインで
ある。907は、条件実行判定で不実行となる加算命令
のパイプラインである。908は、パイプライン907
の後続のロード命令のパイプラインである。
【0110】この実施の形態2のマイクロプロセッサ1
では、パイプライン905の加算命令の書き込みレジス
タr10から、パイプライン906のロード命令のアド
レス計算用のデータ読み出しが発生した場合、そのデー
タ干渉をパイプライン906のDステージで検知し、パ
イプラインインターロック信号を生成する。パイプライ
ンインターロック信号が生成されると、パイプライン9
06のD/Aステージを1クロック停止するためのセレ
クタ信号を生成する。そしてパイプライン905のEス
テージで加算されたデータを、パイプライン906にバ
イパスするための制御信号を生成し、バイパス処理を実
行する。このようなアドレス計算用データのデータ干渉
が発生した場合、パイプラインインターロックのための
ペナルティが1クロック発生する。
【0111】不実行となる加算命令のパイプライン90
7では、Dステージで条件実行判定を行い、D2から条
件実行キャンセル信号を出力する。そのキャンセル信号
により、パイプライン908のDステージで検知するパ
イプラインインターロック信号をキャンセルする。これ
により、実施の形態2のマイクロプロセッサ1では、パ
イプライン908のアドレス計算用データのためのパイ
プラインインターロックが発生しないため、後続パイプ
ライン908をペナルティなしに実行することができ
る。
【0112】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
20に示すアドレス計算データのパイプラインインター
ロックキャンセル処理を示すタイミング図を用いて、ア
ドレス計算データのパイプラインインターロックキャン
セル処理について説明する。
【0113】図20に示すパイプライン906のロード
命令が、図10〜図13に示す命令RAM6からI2I
DBUSを介して読み出されると、図15に示すセレク
タ700を介して各制御回路に転送される。デコーダ回
路(データ干渉判定回路)719では、セレクタ700
からのロード命令の命令コードと、Dステージの命令コ
ードを保持するレジスタ701の出力とを比較し、パイ
プラインインターロックが発生していることを検知す
る。パイプラインインターロック信号731,735を
生成し、セレクタ制御回路721と命令コードライト信
号生成回路720とデコーダ回路718へ出力する。
【0114】命令コードライト信号生成回路720から
はライト信号が出力され、レジスタ701の値をフィー
ドバックレジスタ706に取り込む。そしてセレクタ制
御回路721では、フィードバックレジスタ706の値
を選択するようにセレクタ700を制御して、そのロー
ド命令のコードを各制御回路に出力する。この処理によ
り、図20に示すパイプライン906のD/Aステージ
が1クロックインターロックされることになる。デコー
ダ回路718では、デコーダ回路719からのパイプラ
インインターロック信号735を受けてバイパス経路選
択信号を生成し、図10〜図13に示すバイパス経路2
03を経由してALU15で加算した結果データを取り
込んだライトバックレジスタ51の値を、D1同期バス
群に出力する。
【0115】次に、そのバイパスされたデータを用い
て、図20に示すパイプライン906のロード命令は、
図10〜図13に示すアドレス計算用の加算器32でデ
ータRAMアクセス用のアドレスを計算し、以降のステ
ージの処理を実行する。図20に示すパイプライン90
7の加算命令のように、条件実行判定で不実行となった
場合、図15に示す条件実行制御回路722から条件実
行キャンセル信号723がデコーダ回路719へ出力さ
れ、パイプラインインターロック信号をキャンセルす
る。
【0116】以上のように、この実施の形態2によれ
ば、ロード命令のアドレス計算用データが同じ整数演算
ユニット4で実行される先行命令の結果データと干渉を
起こしており、かつその先行命令が条件実行判定で不実
行となった場合に、その条件実行キャンセル信号でパイ
プラインインターロック信号とバイパス経路選択信号を
キャンセルするので、パイプラインのペナルティを削除
することができる。
【0117】実施の形態3.図21および図22は、こ
の発明の実施の形態3によるマイクロプロセッサ1の異
なる実行ユニット間でのパイプラインインターロックキ
ャンセル処理を示すタイミング図であり、図において、
白の部分はメモリアクセスユニット3で実行されている
パイプライン、斜線部分は、整数演算ユニット4で実行
されているパイプラインを示す。この実施の形態3の説
明では、先ず図21に示す異なる実行ユニット間のパイ
プラインインターロックキャンセル処理の例を説明し、
次に図22に示す異なる実行ユニット間でのパイプライ
ンインターロックキャンセル処理の例を説明する。
【0118】図21において、911は、整数演算ユニ
ット4で実行される加算命令のパイプラインである。9
12は、パイプライン911の後続のメモリアクセスユ
ニット3で実行されるロード命令のパイプラインであ
る。913は、条件実行判定で不実行となる整数演算ユ
ニット4で実行される加算命令のパイプラインである。
914は、パイプライン913の後続のメモリアクセス
ユニット3で実行されるロード命令のパイプラインであ
る。
【0119】実施の形態3のマイクロプロセッサ1で
は、パイプライン911の加算命令の書き込みレジスタ
r10からパイプライン912のロード命令のアドレス
計算用のデータ読み出しが発生した場合、そのデータ干
渉をパイプライン912のDステージで検知し、パイプ
ラインインターロック信号を生成する。パイプラインイ
ンターロック信号は、パイプライン911のWステージ
が完了しデータr10が汎用レジスタ(GPR)5内に
書き込まれてから、パイプライン912のD/Aステー
ジでの汎用レジスタ(GPR)5からの読み出しが実行
できるまでの2クロック分生成される。そして、パイプ
ラインインターロック信号は、パイプライン912のD
/Aステージを2クロック停止するためのセレクタ信号
を生成する。このようなアドレス計算用データのデータ
干渉が発生した場合、パイプラインインターロックのた
めのペナルティが2クロック発生する。
【0120】不実行となる加算命令のパイプライン91
3では、Dステージで条件実行判定を行い、D2から条
件実行キャンセル信号を出力する。そしてそのキャンセ
ル信号により、パイプライン914のDステージで検知
するパイプラインインターロック信号をキャンセルす
る。これにより、実施の形態3のマイクロプロセッサ1
では、パイプライン914のアドレス計算用データのた
めのパイプラインインターロックが発生しないために、
後続パイプライン914をペナルティなしに実行するこ
とが可能となる。
【0121】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
21に示す異なる実行ユニット間でのパイプラインイン
ターロックキャンセル処理を示すタイミング図を用い
て、異なる実行ユニット間でのパイプラインインターロ
ックキャンセル処理について説明する。
【0122】図21に示すパイプライン912のロード
命令が、図10〜図13に示す命令RAM6からI2I
DBUSを介して読み出されると、読み出されたロード
命令は、図15に示すセレクタ700を介して各制御回
路に転送される。デコーダ回路(データ干渉判定回路)
719では、セレクタ700からのロード命令の命令コ
ードと、Dステージの命令コードとを保持するレジスタ
702の出力とを比較し、パイプラインインターロック
が発生していることを検知する。そして、パイプライン
インターロック信号731を生成し、セレクタ制御回路
721と命令コードライト信号生成回路720に出力す
る。命令コードライト信号生成回路720からはライト
信号が出力され、レジスタ701の値をフィードバック
レジスタ706に取り込む。
【0123】そしてセレクタ制御回路721は、フィー
ドバックレジスタ706の値を選択するようにセレクタ
700を制御して、そのロード命令のコードを各制御回
路に出力する。この処理により、図21に示すのパイプ
ライン912のD/Aステージが2クロックインターロ
ックされることになる。
【0124】図10〜図13に示す整数演算ユニット4
内の加算器20で実行された図21に示すパイプライン
911の加算処理結果が、レジスタ55及びライトバッ
クレジスタ54を介して汎用レジスタ(GPR)5内に
W2期間中に書き込まれてから、図21に示すパイプラ
イン912のロード命令では汎用レジスタ(GPR)5
からのデータのリード動作を開始し、アドレス加算器3
2でデータRAMアクセス用のアドレスを生成する。
【0125】以上のように、図21に示す異なる実行ユ
ニット間のパイプラインインターロックキャンセル処理
を実行するマイクロプロセッサ1によれば、パイプライ
ン913の加算命令のように、条件実行判定で不実行と
なった場合、図15に示す条件実行制御回路722から
条件実行キャンセル信号723がデコーダ回路719に
出力され、パイプラインインターロック信号をキャンセ
ルする。
【0126】次に、図22に示す異なる実行ユニット間
のパイプラインインターロックキャンセル処理のタイミ
ング図、図10〜図13に示すこの発明のマイクロプロ
セッサ1のブロック図、および図15に示す命令デコー
ドユニット2内に組み込まれている制御回路のブロック
図を用いて、図21に示す異なる実行ユニット間でのパ
イプラインインターロックキャンセル処理の他の例に関
して説明する。
【0127】図22において、915は整数演算ユニッ
ト4で実行される加算命令のパイプライン、916はパ
イプライン915の1クロック後のメモリアクセス部で
実行されるロード命令のパイプラインである。917
は、条件実行判定で不実行となる整数演算ユニット4で
実行される加算命令のパイプラインである。918は、
パイプライン917の1クロック後のメモリアクセス部
で実行されるロード命令のパイプラインである。
【0128】この実施の形態3のマイクロプロセッサ1
では前記した機能に加え、さらに以下の機能を備える。
即ち、実施の形態3のマイクロプロセッサ1では、パイ
プライン915の加算命令の書き込みレジスタr10か
らパイプライン916のロード命令のアドレス計算用の
データ読み出しが発生した場合、そのデータ干渉をパイ
プライン916のDステージで検知し、パイプラインイ
ンターロック信号を生成する。パイプラインインターロ
ック信号は、パイプライン915のWステージが完了し
データr10がGPRに書き込まれてから、パイプライ
ン916のD/Aステージでの汎用レジスタ(GPR)
5からのデータの読み出しが実行できるまでの1クロッ
ク分生成される。そしてパイプラインインターロック信
号は、パイプライン916のD/Aステージを1クロッ
ク停止するためのセレクタ信号を生成する。このような
アドレス計算用データのデータ干渉が発生した場合、パ
イプラインインターロックのためのペナルティが1クロ
ック発生する。
【0129】不実行となる加算命令のパイプライン91
7では、Dステージで条件実行判定を行い、D2から条
件実行キャンセル信号を出力する。そしてそのキャンセ
ル信号により、パイプライン918のDステージで検知
するパイプラインインターロック信号をキャンセルす
る。これにより、実施の形態3のマイクロプロセッサ1
は、パイプライン918のアドレス計算用データのため
のパイプラインインターロックが発生しないため、後続
パイプライン918をペナルティなしに実行することが
できるものである。
【0130】次に動作について説明する。以下では、異
なる実行ユニット間のパイプラインインターロックキャ
ンセル処理の他の例について説明する。図22に示すパ
イプライン916のロード命令が、図10〜図13に示
す命令RAM6からI2IDBUSを介して読み出され
ると、図15に示すセレクタ700を介して各制御回路
に転送される。
【0131】図15に示すデコーダ回路719では、セ
レクタ700から送信されたロード命令の命令コード
と、Eステージの命令コードを保持するレジスタ704
の出力とを比較し、パイプラインインターロックが発生
していることを検知する。そしてパイプラインインター
ロック信号731を生成し、セレクタ制御回路721と
命令コードライト信号生成回路720に出力する。
【0132】命令コードライト信号生成回路720はラ
イト信号を出力し、レジスタ701の値をフィードバッ
クレジスタ706内に取り込む。そしてセレクタ制御回
路721では、フィードバックレジスタ706の値を選
択するようにセレクタ700を制御して、そのロード命
令のコードを各制御回路に出力する。この処理により、
図22に示すパイプライン916のD/Aステージが1
クロックインターロックされることになる。
【0133】図10〜図13に示す整数演算ユニット4
内の加算器20で実行された図22に示すパイプライン
915の加算処理結果が、レジスタ55及びライトバッ
クレジスタ54を介して汎用レジスタ(GPR)5内へ
W2期間中に書き込まれた後、図22に示すパイプライ
ン916のロード命令では、汎用レジスタ(GPR)5
に対するデータのリード動作を開始し、アドレス加算器
32でデータRAMアクセス用のアドレスを生成する。
【0134】図22に示すパイプライン917の加算命
令のように、条件実行判定で不実行となった場合、図1
5に示す条件実行制御回路722から条件実行キャンセ
ル信号723がデコーダ回路(データ干渉判定回路)7
19へ出力され、パイプラインインターロック信号をキ
ャンセルする。
【0135】以上のように、この実施の形態3によれ
ば、異なる命令実行ユニット間でデータ干渉を起こして
おり、かつその先行命令が条件実行判定で不実行となっ
た場合に、その条件実行キャンセル信号でパイプライン
インターロック信号をキャンセルするので、パイプライ
ンのペナルティを削除することができる。
【0136】実施の形態4.図23は、この発明の実施
の形態4によるマイクロプロセッサ1の乗算データのパ
イプラインインターロックキャンセル処理を示すタイミ
ング図であり、図において、白の部分はメモリアクセス
ユニット3で実行されているパイプライン、斜線部分
は、整数演算ユニット4で実行されているパイプライン
を示す。
【0137】921は、メモリアクセスユニット3で実
行されるロード命令のパイプラインである。922は、
パイプライン921の後続の整数演算ユニット4で実行
される乗算命令のパイプラインである。923は、条件
実行判定で不実行となるメモリアクセスユニット3で実
行されるロード命令のパイプラインである。924は、
パイプライン923の後続の整数演算ユニット4で実行
される乗算命令のパイプラインである。
【0138】実施の形態4のマイクロプロセッサ1で
は、図23に示すパイプライン921のロード命令の書
き込みレジスタr20からパイプライン922の乗算命
令のソースデータ読み出しが発生した場合、そのデータ
干渉をパイプライン922のDステージで検知し、パイ
プラインインターロック信号を生成する。パイプライン
インターロック信号が生成されると、パイプライン92
2のDステージを1クロック停止するためのセレクタ信
号を生成する。そして、パイプライン921のMステー
ジでロードしたデータをパイプライン922にバイパス
するための制御信号を生成しバイパス処理を実行する。
【0139】上記のように、乗算データのデータ干渉が
発生した場合、パイプラインインターロックのためのペ
ナルティが1クロック発生する。不実行となる加算命令
のパイプライン923では、Dステージで条件実行判定
を行い、D2から条件実行キャンセル信号を出力する。
そしてそのキャンセル信号により、パイプライン924
のDステージで検知するパイプラインインターロック信
号をキャンセルする。これにより、実施の形態4のマイ
クロプロセッサ1では、パイプライン924の乗算デー
タのためのパイプラインインターロックが発生しないの
で、後続パイプライン924をペナルティなしに実行す
ることができるものである。
【0140】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
23に示す乗算データのパイプラインインターロックキ
ャンセル処理を示すタイミング図を用いて、乗算データ
のパイプラインインターロックキャンセル処理について
説明する。
【0141】図23に示すパイプライン922の乗算命
令が、図10〜図13に示す命令RAM6からI2ID
BUSを介して読み出されると、読み出された命令は、
図15に示すセレクタ700を介して各制御回路に転送
される。図15に示すデコーダ回路(データ干渉判定回
路)719では、セレクタ700からの乗算命令の命令
コードと、Dステージの命令コードを保持するレジスタ
702の出力とを比較し、パイプラインインターロック
が発生していることを検知する。そして、パイプライン
インターロック信号731,735を生成し、セレクタ
制御回路721と命令コードライト信号生成回路720
とデコーダ回路718へ出力する。
【0142】命令コードライト信号生成回路720から
はライト信号が出力され、レジスタ701の値をフィー
ドバックレジスタ706に取り込む。そしてセレクタ制
御回路721では、フィードバックレジスタ706の値
を選択するようにセレクタ700を制御して、その乗算
命令のコードを各制御回路に出力する。この処理によ
り、図23に示すのパイプライン922のDステージが
1クロックインターロックされることになる。
【0143】図15に示すデコーダ回路718では、デ
コーダ回路719からのパイプラインインターロック信
号735を受け、バイパス経路選択信号をさらに1クロ
ック余分に生成し、図10〜図13に示すバイパス経路
208を経由して、オペランドデータバスM2ODBU
Sの値を符号拡張部200で処理した値を整数演算ユニ
ット4のD2同期バス群へ出力する。そして、図23に
示すパイプライン922の乗算命令は、そのバイパスさ
れたデータを、図10〜図13に示す乗算器17の入力
ラッチ22内4に取り込み、乗算処理を実行し、それ以
降のステージを継続する。
【0144】図23に示すのパイプライン923のロー
ド命令のように条件実行判定で不実行となった場合、図
15に示す条件実行制御回路722から条件実行キャン
セル信号723がデ、コーダ回路719に出力され、パ
イプラインインターロック信号をキャンセルする。
【0145】以上のように、この実施の形態4によれ
ば、メモリアクセスユニット3で実行されるロード命令
のロードデータが、整数演算ユニット4で実行される乗
算命令のソースデータとデータ干渉を起こしており、か
つその先行ロード命令が条件実行判定で不実行となった
場合に、その条件実行キャンセル信号でパイプラインイ
ンターロック信号とバイパス経路選択信号をキャンセル
するので、パイプラインのペナルティを削除することが
できる。
【0146】実施の形態5.図24は、この発明の実施
の形態5によるマイクロプロセッサ1のキャリーフラグ
のパイプラインインターロックキャンセル処理を示すタ
イミング図であり、図において、白の部分はメモリアク
セスユニット3で実行されているパイプライン、斜線部
分は、整数演算ユニット4で実行されているパイプライ
ンを示す。
【0147】925は、メモリアクセスユニット3で実
行される加算命令のパイプラインである。926は、パ
イプライン925の後続のキャリーフラグを用いる加算
命令のパイプラインである。927は、条件実行判定で
不実行となるメモリアクセスユニット3で実行される加
算命令のパイプラインである。928は、パイプライン
927の後続のキャリーフラグを用いる加算命令のパイ
プラインである。
【0148】実施の形態5のマイクロプロセッサ1で
は、パイプライン925の加算命令がキャリーフラグを
更新し、パイプライン926の命令がその更新されたキ
ャリーフラグを用いて加算処理を行う場合、そのキャリ
ーフラグの干渉をパイプライン926のDステージで検
知し、パイプラインインターロック信号を生成する。パ
イプラインインターロック信号が生成されると、パイプ
ライン926のDステージを1クロック停止するための
セレクタ信号を生成する。そして、キャリーセレクト信
号を生成して、パイプライン925のW1で更新された
キャリーフラグをパイプライン926に転送する。
【0149】このようなキャリーフラグの干渉が発生し
た場合、パイプラインインターロックのためのペナルテ
ィが1クロック発生する。不実行となる加算命令のパイ
プライン927では、Dステージで条件実行判定を行
い、D2から条件実行キャンセル信号を出力する。そし
てそのキャンセル信号により、パイプライン928のD
ステージで検知するパイプラインインターロック信号を
キャンセルする。これにより、実施の形態5のマイクロ
プロセッサ1は、パイプライン928のキャリーフラグ
のためのパイプラインインターロックが発生しないため
に、後続パイプライン928をペナルティなしに実行す
ることができるものである。
【0150】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
24に示すキャリーフラグのパイプラインインターロッ
クキャンセル処理を示すタイミング図を用いて、キャリ
ーフラグのパイプラインインターロックキャンセル処理
について説明する。
【0151】図24に示すパイプライン926のキャリ
ーフラグを用いる加算命令が、図10〜図13に示す命
令RAM6からI2IDBUSを介して読み出される
と、図15に示すセレクタ700を介して各制御回路に
転送される。図15に示すデコーダ回路(フラグ干渉判
定回路)719では、セレクタ700からのその加算命
令の命令コードと、Dステージの命令コードを保持する
レジスタ702の出力を比較し、パイプラインインター
ロックが発生していることを検知する。そしてパイプラ
インインターロック信号731を生成し、セレクタ制御
回路721と命令コードライト信号生成回路720に出
力する。
【0152】命令コードライト信号生成回路720から
はライト信号が出力され、レジスタ701の値をフィー
ドバックレジスタ706内に取り込む。そしてセレクタ
制御回路721は、フィードバックレジスタ706の値
を選択するようにセレクタ700を制御して、その乗算
命令のコードを各制御回路に出力する。この処理によ
り、図24に示すパイプライン926のDステージが1
クロックインターロックされることになる。
【0153】図15に示すデコーダ714では、2クロ
ック間キャリーフラグを用いる加算命令のコードを保持
しているレジスタ702の値をデコードし、キャリーセ
レクト信号を2クロック間生成する。その信号により、
図10〜図13に示すフラグ経路62から更新されたキ
ャリーフラグの値がALU15内へ入力され、そのフラ
グ値を用いた加算命令を実行する。
【0154】図24に示すパイプライン927の加算命
令のように、条件実行判定で不実行となった場合、図1
5に示す条件実行制御回路722から条件実行キャンセ
ル信号723がデコーダ回路719へ出力され、パイプ
ラインインターロック信号をキャンセルする。
【0155】以上のように、この実施の形態5によれ
ば、あるフラグを用いる命令の先行命令がそのフラグを
更新し、かつその先行命令が条件実行判定で不実行とな
った場合に、その条件実行キャンセル信号でパイプライ
ンインターロック信号をキャンセルするので、パイプラ
インのペナルティを削除することができる。
【0156】実施の形態6.図25は、この発明の実施
の形態6によるマイクロプロセッサ1の条件実行フラグ
のパイプラインインターロックキャンセル処理を示すタ
イミング図であり、図において、白の部分はメモリアク
セスユニット3で実行されているパイプライン、斜線部
分は、整数演算ユニット4で実行されているパイプライ
ンを示す。
【0157】931は、メモリアクセスユニット3で実
行される比較命令のパイプラインである。932は、パ
イプライン931の後続の条件実行判定を伴う加算命令
のパイプラインである。933は、条件実行判定で不実
行となるメモリアクセスユニット3で実行される比較命
令のパイプラインである。934は、パイプライン93
3の後続の条件実行判定を伴う加算命令のパイプライン
である。
【0158】実施の形態6のマイクロプロセッサ1で
は、パイプライン931の比較命令が条件実行フラグを
更新し、パイプライン932の命令がその更新された条
件実行フラグを用いて条件実行判定を伴う場合、その条
件実行フラグの干渉をパイプライン932のDステージ
で検知し、パイプラインインターロック信号を生成す
る。パイプラインインターロック信号が生成されると、
パイプライン932のDステージを1クロック停止する
ためのセレクタ信号を生成する。そして条件実行判定期
間中信号を生成して、パイプライン931のW1で更新
された条件実行フラグをパイプライン932で条件実行
の判定に用いる。このような条件実行フラグの干渉が発
生した場合、パイプラインインターロックのためのペナ
ルティが1クロック発生する。
【0159】不実行となる比較命令のパイプライン93
3では、Dステージで条件実行判定を行い、D2から条
件実行キャンセル信号を出力する。そして、そのキャン
セル信号により、パイプライン934のDステージで検
知するパイプラインインターロック信号をキャンセルす
る。これにより、実施の形態6のマイクロプロセッサ1
では、パイプライン934の条件実行フラグのためのパ
イプラインインターロックが発生しないために、後続パ
イプライン934をペナルティなしに実行することがで
きるものである。
【0160】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
25に示す条件実行フラグのパイプラインインターロッ
クキャンセル処理を示すタイミング図を用いて、条件実
行フラグのパイプラインインターロックキャンセル処理
について説明する。
【0161】図25に示すパイプライン932の条件実
行判定を伴う加算命令が、図10〜図13に示す命令R
AM6からI2IDBUSを介して読み出されると、図
15に示すセレクタ700を介して各制御回路に転送さ
れる。デコーダ回路(フラグ干渉判定回路)719は、
セレクタ700からその加算命令の命令コードと、Dス
テージの命令コードを保持するレジスタ702の出力と
を比較し、パイプラインインターロックが発生している
ことを検知する。そして、パイプラインインターロック
信号731を生成し、セレクタ制御回路721と命令コ
ードライト信号生成回路720へ出力する。命令コード
ライト信号生成回路720からレジスタ701へライト
信号が出力され、レジスタ701の値をフィードバック
レジスタ706内へ取り込む。そして、セレクタ制御回
路721は、フィードバックレジスタ706の値を選択
するようにセレクタ700を制御して、その乗算命令の
コードを各制御回路に出力する。この処理により、図2
5に示すパイプライン932のDステージが1クロック
インターロックされることになる。
【0162】図25に示すパイプライン933の比較命
令のように、条件実行判定で不実行となった場合、図1
5に示す条件実行制御回路722から条件実行キャンセ
ル信号723がデコーダ回路719へ出力され、パイプ
ラインインターロック信号をキャンセルする。
【0163】以上のように、この実施の形態6によれ
ば、条件実行判定を伴う命令の先行命令が条件実行フラ
グを更新し、かつその先行命令が条件実行判定で不実行
となった場合に、その条件実行キャンセル信号によりパ
イプラインインターロック信号をキャンセルするので、
パイプラインのペナルティを削除することができる。
【0164】実施の形態7.図26は、この発明の実施
の形態7によるマイクロプロセッサ1のモードフラグ更
新時のパイプラインインターロックキャンセル処理を示
すタイミング図であり、図において、白の部分はメモリ
アクセスユニット3で実行されているパイプライン、斜
線部分は、整数演算ユニット4で実行されているパイプ
ラインを示す。
【0165】935は、メモリアクセスユニット3で実
行される制御レジスタデータ転送命令のパイプラインで
ある。936は、パイプライン935の後続命令のパイ
プラインである。937は、条件実行判定で不実行とな
るメモリアクセスユニット3で実行される制御レジスタ
データ転送命令のパイプラインである。938は、パイ
プライン937の後続命令のパイプラインである。
【0166】実施の形態7のマイクロプロセッサ1で
は、パイプライン935の制御レジスタデータ転送命令
がモードフラグを更新した場合、そのモードフラグの更
新をパイプライン925のDステージで検知し、パイプ
ラインインターロック信号を生成する。パイプラインイ
ンターロック信号が生成されると、パイプライン935
のE2で更新されたモードフラグの値で後続命令を実行
できるまで、後続命令が2クロック間インターロックさ
れる。このようなモードフラグの更新が発生した場合、
パイプラインインターロックのためのペナルティが2ク
ロック発生する。
【0167】不実行となる制御レジスタデータ転送命令
のパイプライン937では、Dステージで条件実行判定
を行い、D2から条件実行キャンセル信号を出力する。
そして、そのキャンセル信号によりパイプラインインタ
ーロック信号をキャンセルする。これにより、実施の形
態7のマイクロプロセッサ1は、後続パイプライン93
8をペナルティなしに実行することができるものであ
る。
【0168】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
26に示すモードフラグ更新時のパイプラインインター
ロックキャンセル処理を示すタイミング図を用いて、モ
ードフラグ更新時のパイプラインインターロックキャン
セル処理について説明する。
【0169】図26に示すパイプライン935のモード
フラグを更新する制御レジスタデータ転送命令が、図1
0〜図13に示す命令RAM6からI2IDBUSを介
して読み出されると、読み出された命令は、図15に示
すセレクタ700を介して各制御回路に転送される。デ
コーダ回路(モードフラグ判定回路)719では、セレ
クタ700からのその制御レジスタデータ転送命令の命
令コードからパイプラインインターロック信号を生成す
る。そしてそのパイプラインインターロック信号734
を生成し、デコーダ回路717に出力する。デコーダ回
路717では、図10〜図13に示す命令アドレスレジ
スタ29を更新する制御信号が生成されている。その更
新制御信号をパイプラインインターロック信号でキャン
セルすることにより、命令アドレスレジスタの更新を停
止する。これにより、図26に示す後続のパイプライン
936のIFステージを停止することが可能である。
【0170】図26に示すパイプライン937の制御レ
ジスタデータ転送命令のように条件実行判定で不実行と
なった場合、図15に示す条件実行制御回路722から
条件実行キャンセル信号723がデコーダ回路719へ
出力され、パイプラインインターロック信号をキャンセ
ルする。
【0171】以上のように、この実施の形態7によれ
ば、モードフラグを更新する命令が条件実行判定で不実
行となった場合に、その条件実行キャンセル信号で後続
命令のパイプラインインターロック信号をキャンセルす
るので、パイプラインのペナルティを削除することがで
きる。
【0172】実施の形態8.図27は、この発明の実施
の形態8によるマイクロプロセッサ1のリソースコンフ
リクト発生時のパイプラインインターロックキャンセル
処理を示すタイミング図であり、図において、白の部分
はメモリアクセスユニット3で実行されているパイプラ
イン、斜線部分は、整数演算ユニット4で実行されてい
るパイプラインを示す。
【0173】941は、メモリアクセスユニット3で実
行されるロード命令のパイプラインである。942は、
パイプライン941と同時に整数演算ユニット4で実行
される乗算命令のパイプラインである。943は、パイ
プライン941,942の後続命令のパイプラインであ
る。944は、条件実行判定で不実行となるメモリアク
セスユニット3で実行されるロード命令のパイプライン
である。945は、パイプライン944と同時に整数演
算ユニット4で実行される乗算命令のパイプラインであ
る。946は、パイプライン944,945の後続命令
のパイプラインである。948は、条件実行判定で不実
行となる整数演算ユニット4で実行される乗算命令のパ
イプラインである。947は、パイプライン948と同
時に実行されるメモリアクセスユニット3で実行される
ロード命令のパイプラインである。949は、パイプラ
イン947,948の後続命令のパイプラインである。
【0174】実施の形態8のマイクロプロセッサ1で
は、図27に示すパイプライン941,942のよう
に、メモリアクセスユニット3でのロード命令と整数演
算ユニット4での乗算命令が同時に実行される場合、W
ステージでの汎用レジスタ(GPR)5へのデータの書
き込み時に、同じライトバックバスを用いるためにリソ
ースコンフリクト(リソース衝突)が発生する。
【0175】このリソースコンフリクトを回避するた
め、パイプライン942のWステージを1クロックスト
ールし、パイプライン941の結果を汎用レジスタ(G
PR)5へ書き込んだ1クロック後に、パイプライン9
42の結果を汎用レジスタ(GPR)5へ書き込む。こ
のパイプラインストール信号は、パイプライン941,
942のDステージで生成し、後続命令のパイプライン
943のIFステージをストールする。そしてGRPラ
イト信号を2クロック間生成し、パイプライン941の
結果を書き込むアドレスAとパイプライン942の結果
を書き込むアドレスBを連続して出力する。このよう
に、リソースコンフリクトが発生した場合、パイプライ
ンストールのためのペナルティが1クロック発生する。
【0176】不実行となるロード命令のパイプライン9
44では、Dステージで条件実行判定を行い、D2から
条件実行キャンセル信号を出力する。そしてこの条件実
行キャンセル信号により、パイプラインストール信号を
キャンセルする。そしてパイプライン945の結果をG
PRに書き込むためのアドレスBをGPRライト信号と
共に出力する。これによりパイプライン945の後続パ
イプライン946をペナルティなしに実行することが可
能である。
【0177】不実行となる乗算命令のパイプライン94
8では、Dステージで条件実行判定を行い、D2から条
件実行キャンセル信号を出力する。そしてこの条件実行
キャンセル信号により、パイプラインストール信号をキ
ャンセルする。そしてパイプライン947の結果を汎用
レジスタ(GPR)5へ書き込むためのアドレスAをG
PRライト信号と共に出力する。これにより、実施の形
態8のマイクロプロセッサ1は、パイプライン947の
後続パイプライン949をペナルティなしに実行するこ
とができるものである。
【0178】次に動作について説明する。以下では、図
10〜図13に示すこの発明のマイクロプロセッサ1の
ブロック図および図15に示す命令デコードユニット2
内に組み込まれている制御回路のブロック図、および図
27に示すリソースコンフリクト発生時のパイプライン
インターロックキャンセル処理を示すタイミング図を用
いて、リソースコンフリクト発生時のパイプラインイン
ターロックキャンセル処理について説明する。
【0179】図24に示すパイプライン941,942
のロード命令と乗算命令が、図10〜図13に示す命令
RAM6からI2IDBUSを介して読み出されると、
読み出された命令は、図15に示すセレクタ700を介
して各制御回路に転送される。
【0180】図15に示すデコーダ回路(同時使用判定
回路)719は、セレクタ700からのその命令コード
からリソースコンフリクトによるパイプラインインター
ロックが発生していることを検知する。そして、パイプ
ラインインターロック信号730,732,735を生
成し、命令コードライト信号生成回路720とデコーダ
回路(衝突回避回路)718とデコーダ回路(衝突回避
回路)716へ出力する。
【0181】命令コードライト信号生成回路720から
レジスタ705へ送信されるライト信号によりレジスタ
705の更新動作を制御し、Wステージの命令コードを
2クロック間保持する。そしてデコーダ回路716で
は、そのWステージの命令コードをデコードして、最初
にメモリアクセスユニット3へのGPRライト信号を出
力し、次に整数演算ユニット4へのGPRライト信号を
出力する。
【0182】また、デコーダ回路717は、図10〜図
13に示す命令アドレスレジスタ29の更新制御信号を
加工し、命令アドレスレジスタ29の値を更新しないよ
うに処理する。これにより、パイプライン943のIF
ステージをストールし、それ以降のステージを継続す
る。
【0183】図27に示すパイプライン944のロード
命令のように、条件実行判定で不実行となった場合、図
15に示す条件実行制御回路722から条件実行キャン
セル信号723がデコーダ回路719に出力され、パイ
プラインストール信号をキャンセルする。そして、図1
5に示すデコーダ回路(衝突回避回路)716では、整
数演算ユニット4の結果を書き込むためのGPRライト
信号を出力する。また図27に示すパイプライン948
の乗算命令のように、条件実行判定で不実行となった場
合、図15に示す条件実行制御回路722から条件実行
キャンセル信号723が、デコーダ回路719へ出力さ
れ、パイプラインストール信号をキャンセルする。そし
てデコーダ回路716では、メモリアクセスユニット3
での実行結果を書き込むためのGPRライト信号を出力
する。
【0184】以上のように、実施の形態8によれば、あ
るリソースコンフリクトによりパイプラインインターロ
ックが発生し、かつそのリソースコンフリクトを発生さ
せるサブ命令のいずれかが条件実行判定で不実行となっ
た場合に、その条件実行キャンセル信号でパイプライン
ストール信号をキャンセルするので、パイプラインのペ
ナルティを削除することができる。
【0185】
【発明の効果】以上のように、請求項1記載の発明によ
れば、実行停止回路がプログラム内の先行命令の動作に
基づいて現命令の実行を一時的に停止し、条件実行判定
回路が現命令の実行を行うか否かの判定を行い、条件実
行判定回路が先行命令を実行しないと判定した時に条件
実行制御回路が先行命令の動作を開始する信号を無効と
する処理を行い、パイプラインの停止を誘因した原因と
なる命令が条件実行判定で不実行となった場合、そのパ
イプラインの停止動作をキャンセルするように構成した
ので、パイプラインのペナルティを削減できる効果があ
る。
【0186】請求項2記載の発明によれば、条件実行判
定回路の判定によりロード命令が条件実行判定で不実行
となった場合に、ロードしたデータをGPRに書き込む
処理のみをキャンセルするのではなく、条件実行制御回
路がデータRAMアクセス処理からキャンセルするよう
に構成したので、パイプラインのペナルティを削除でき
る効果がある。
【0187】請求項3記載の発明によれば、ロード命令
のアドレス計算用データが同じ命令実行ユニットで実行
される先行命令の結果データと干渉を起こし、かつ先行
命令が条件実行判定回路の条件実行判定で不実行となっ
た場合に、条件実行制御回路がその条件実行キャンセル
信号でパイプラインインターロック信号とバイパス経路
選択信号をキャンセルするように構成したので、パイプ
ラインのペナルティを削除できる効果がある。
【0188】請求項4記載の発明によれば、異なる命令
実行ユニット間でデータ干渉が発生し、かつその先行命
令が条件実行判定回路の条件実行判定で不実行となった
場合に、条件実行制御回路がその条件実行キャンセル信
号でパイプラインインターロック信号をキャンセルする
ように構成したので、パイプラインのペナルティを削除
できる効果がある。
【0189】請求項5記載の発明によれば、メモリアク
セス部で実行されるロード命令のロードデータが、整数
演算部で実行される乗算命令のソースデータと干渉を起
こし、かつその先行ロード命令が条件実行判定回路の条
件実行判定で不実行となった場合に、条件実行制御回路
がその条件実行キャンセル信号でパイプラインインター
ロック信号とバイパス経路選択信号をキャンセルするよ
うに構成したので、パイプラインのペナルティを削除で
きる効果がある。
【0190】請求項6記載の発明によれば、あるフラグ
を用いる命令の先行命令がそのフラグを更新し、かつそ
の先行命令が条件実行判定回路の条件実行判定で不実行
となった場合に、条件実行制御回路が条件実行キャンセ
ル信号でパイプラインインターロック信号をキャンセル
するように構成したので、パイプラインのペナルティを
削除できる効果がある。
【0191】請求項7記載の発明によれば、条件実行判
定を伴う命令の先行命令が条件実行フラグを更新し、か
つその先行命令が条件実行判定回路の条件実行判定で不
実行となった場合に、条件実行制御回路がその条件実行
キャンセル信号でパイプラインインターロック信号をキ
ャンセルするように構成したので、パイプラインのペナ
ルティを削除できる効果がある。
【0192】請求項8記載の発明によれば、モードフラ
グを更新する命令が条件実行判定回路の条件実行判定で
不実行となった場合に、条件実行制御回路がその条件実
行キャンセル信号で後続命令のパイプラインインターロ
ック信号をキャンセルするように構成したので、パイプ
ラインのペナルティを削除できる効果がある。
【0193】請求項9記載の発明によれば、あるリソー
スコンフリクトによりパイプラインインターロックが発
生し、かつそのリソースコンフリクトを発生させるサブ
命令のいずれかが条件実行判定回路の条件実行判定で不
実行となった場合に、条件実行制御回路が条件実行キャ
ンセル信号でパイプラインストール信号をキャンセルす
るように構成したので、パイプラインのペナルティを削
除できる効果がある。
【図面の簡単な説明】
【図1】 この発明における条件実行命令を備えるマイ
クロプロセッサの基本構成を示すブロック図である。
【図2】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサで用いられる命令フォーマ
ットを示す説明図である。
【図3】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサで用いられる命令フォーマ
ットを示す説明図である。
【図4】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサで用いられる命令フォーマ
ットを示す説明図である。
【図5】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサで用いられる命令フォーマ
ットを示す説明図である。
【図6】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサのレジスタの構成を示す説
明図である。
【図7】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサのレジスタの構成を示す説
明図である。
【図8】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサのパイプライン動作を示す
説明図である。
【図9】 図1に示したこの発明における条件実行命令
を備えるマイクロプロセッサのパイプライン動作を示す
説明図である。
【図10】 図1に示したこの発明における条件実行命
令を備えるマイクロプロセッサの実行ユニットを中心と
した詳細な構成を示すブロック図であり、図10〜図1
3で一つのブロック図を示す。
【図11】 図10の右側に連続した部分のブロック図
である。
【図12】 図11の右側に連続した部分のブロック図
である。
【図13】 図12の右側に連続した部分のブロック図
である。
【図14】 命令コード間のパイプラインでのデータの
干渉を示す説明図である。
【図15】 命令デコードユニット内に組み込まれてい
るパイプラインインターロックキャンセル処理を制御す
る制御回路を示すブロック図である。
【図16】 パイプラインインターロック制御回路図を
示すブロック図である。
【図17】 図15に示す条件実行制御回路を示すブロ
ック図である。
【図18】 パイパス制御回路を示すブロック図であ
る。
【図19】 この発明の実施の形態1による条件実行命
令を備えるマイクロプロセッサのメモリアクセス時のパ
イプラインインターロックキャンセル処理を示すタイミ
ング図である。
【図20】 この発明の実施の形態2による条件実行命
令を備えるマイクロプロセッサのアドレス計算データの
パイプラインインターロックキャンセル処理を示すタイ
ミング図である。
【図21】 この発明の実施の形態3による条件実行命
令を備えるマイクロプロセッサの異なる実行ユニット間
でのパイプラインインターロックキャンセル処理を示す
タイミング図である。
【図22】 この発明の実施の形態3による条件実行命
令を備えるマイクロプロセッサの異なる実行ユニット間
でのパイプラインインターロックキャンセル処理を示す
タイミング図である。
【図23】 この発明の実施の形態4による条件実行命
令を備えるマイクロプロセッサの乗算データのパイプラ
インインターロックキャンセル処理を示すタイミング図
である。
【図24】 この発明の実施の形態5による条件実行命
令を備えるマイクロプロセッサのキャリーフラグのパイ
プラインインターロックキャンセル処理を示すタイミン
グ図である。
【図25】 この発明の実施の形態6による条件実行命
令を備えるマイクロプロセッサの条件実行フラグのパイ
プラインインターロックキャンセル処理を示すタイミン
グ図である。
【図26】 この発明の実施の形態7による条件実行命
令を備えるマイクロプロセッサのモードフラグ更新時の
パイプラインインターロックキャンセル処理を示すタイ
ミング図である。
【図27】 この発明の実施の形態8による条件実行命
令を備えるマイクロプロセッサのリソースコンフリクト
発生時のパイプラインインターロックキャンセル処理を
示すタイミング図である。
【図28】 従来のMMAマイクロプロセッサのプロセ
ッサコアの構成を示すブロック図である。
【図29】 図28に示した従来のMMAマイクロプロ
セッサ内に組み込まれている実行ユニットの一部の回路
をパイプライン的に配置したブロック図である。
【図30】 図28に示す従来のMMAマイクロプロセ
ッサで実行される命令のパイプライン図である。
【符号の説明】
2 命令デコードユニット(命令デコーダ)、3 メモ
リアクセスユニット(命令実行ユニット)、4 整数演
算ユニット(命令実行ユニット)、5 汎用レジスタ、
6 命令RAM(メモリ)、7 データRAM(メモ
リ)、716,718 デコーダ回路(衝突回避回
路)、719 デコーダ回路(データ干渉判定回路、フ
ラグ干渉判定回路、モードフラグ判定回路、同時使用判
定回路)、720 命令コードライト信号生成回路(実
行停止回路)、722 条件実行制御回路、862,8
63 条件実行判定回路。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 命令やデータを格納する命令RAMやデ
    ータRAM等からなるメモリと、前記メモリへ接続され
    命令をデコードする命令デコーダと、命令の実行を制御
    する情報を格納する制御レジスタと、データを格納する
    複数個のレジスタと、算術演算等を実行する演算ユニッ
    トと、前記命令デコーダに接続され前記命令デコーダか
    ら出力された出力に従い前記命令を実行する命令実行ユ
    ニットと、前記プログラム内の先行命令の動作に基づい
    て現命令の実行を一時的に停止する実行停止回路と、前
    記現命令の実行を行うか否かの判定を行う条件実行判定
    回路と、前記条件実行判定回路が前記先行命令を実行し
    ないと判定した場合、前記先行命令の動作を開始する信
    号を無効とする処理を行う条件実行制御回路とを備える
    ことを特徴とする条件実行命令を備えるマイクロプロセ
    ッサ。
  2. 【請求項2】 実行停止回路は、先行命令がメモリをア
    クセスし、そのアクセス完了を示すメモリアクセス完了
    信号が前記メモリから送信されるまでに複数クロック必
    要とする場合、前記先行命令のメモリアクセスが完了す
    るまで現命令の実行を停止し、前記メモリから送信され
    る前記アクセス完了信号に基づいて条件実行判定回路の
    動作は制御され、前記条件実行判定回路は、前記現命令
    内の実行条件フィールドと制御レジスタ内の汎用フラグ
    の値に基づいて前記先行命令の実行を行うか否かの判定
    を行い、前記条件実行判定回路が前記先行命令を実行し
    ないと判定した場合に、条件実行制御回路は、前記先行
    命令の前記メモリへのアクセス処理を開始するアクセス
    開始信号を無効とすることを特徴とする請求項1記載の
    条件実行命令を備えるマイクロプロセッサ。
  3. 【請求項3】 先行命令の処理結果を汎用レジスタへ書
    き込む以前に、現命令が前記処理結果を前記汎用レジス
    タから読み出す場合、前記先行命令のデスティネーショ
    ンレジスタ指定フィールドと前記現命令のソースレジス
    タ指定フィールドが一致することを判定するデータ干渉
    判定回路と、前記先行命令の処理結果を前記汎用レジス
    タを経由することなく前記現命令を実行する命令実行ユ
    ニットに転送するバイパス経路とをさらに備え、実行停
    止回路は、前記バイパス経路を介して前記先行命令の処
    理結果が転送可能になるまで、前記現命令の実行を停止
    し、条件実行判定回路は、前記先行命令内の実行条件フ
    ィールドの値および制御レジスタから得られる汎用フラ
    グの値により前記先行命令の実行を行うか否かの判定を
    行い、前記データ干渉判定回路から送信される制御信号
    に基づいて前記実行停止回路と前記バイパス経路の動作
    が制御され、前記条件実行判定回路が、前記先行命令を
    実行しないと判定した場合、条件実行制御回路は、前記
    実行停止回路から送信される前記現命令の動作を停止す
    る制御信号および前記先行命令の処理結果を前記現命令
    を実行する命令実行ユニットへ転送するための前記バイ
    パス経路の動作を制御する制御信号を無効とすることを
    特徴とする請求項1記載の条件実行命令を備えるマイク
    ロプロセッサ。
  4. 【請求項4】 先行命令の処理結果を汎用レジスタへ書
    き込む以前に、現命令が前記処理結果を前記汎用レジス
    タから読み出す場合、前記先行命令のデスティネーショ
    ンレジスタ指定フィールドと前記現命令のソースレジス
    タ指定フィールドとが一致することを判定するデータ干
    渉判定回路とをさらに備え、実行停止回路は、前記先行
    命令の処理結果が前記汎用レジスタへ書き込み完了され
    るまで前記現命令の実行を停止させ、条件実行判定回路
    は、前記先行命令内の実行条件フィールドの値および制
    御レジスタから得られる汎用フラグの値により前記先行
    命令の実行を行うか否かの判定を行い、前記データ干渉
    判定回路から送信される制御信号により前記実行停止回
    路の動作が制御され、前記条件実行判定回路で前記先行
    命令を実行しないと判定した場合、条件実行制御回路
    は、前記実行停止回路から送信される前記現命令の動作
    の停止を制御する制御信号を無効とすることを特徴とす
    る請求項1記載の条件実行命令を備えるマイクロプロセ
    ッサ。
  5. 【請求項5】 先行命令の処理結果を汎用レジスタへ書
    き込む以前に、異なる命令実行ユニットで実行される現
    命令が前記処理結果を前記汎用レジスタから読み出す場
    合、前記先行命令のデスティネーションレジスタ指定フ
    ィールドと前記現命令のソースレジスタ指定フィールド
    とが一致することを判定するデータ干渉判定回路と、前
    記先行命令の処理結果を前記汎用レジスタを経由するこ
    となく前記現命令を実行する前記異なる命令実行ユニッ
    トへ転送するバイパス経路とをさらに備え、実行停止回
    路は、前記バイパス経路を介して前記先行命令の処理結
    果を転送可能な時まで前記現命令の実行を停止し、条件
    実行判定回路は、前記先行命令内の実行条件フィールド
    および制御レジスタから得られる汎用フラグの値により
    前記先行命令の実行を行うか否かの判定を行い、前記デ
    ータ干渉判定回路から送信される制御信号に基づいて前
    記実行停止回路および前記バイパス経路の動作が制御さ
    れ、前記条件実行判定回路が前記先行命令を実行しない
    と判定した場合、条件実行制御回路は、前記実行停止回
    路から送信される前記現命令の実行停止を指示する制御
    信号と、前記現命令の実行を行う前記異なる命令実行ユ
    ニットへ前記先行命令の処理結果を転送するための前記
    バイパス経路の動作を制御する制御信号を無効とするこ
    とを特徴とする請求項1記載の条件実行命令を備えるマ
    イクロプロセッサ。
  6. 【請求項6】 先行命令の処理結果を制御レジスタ内の
    汎用フラグへ書き込む以前に、現命令が前記処理結果を
    前記制御レジスタ内の前記汎用フラグから読み出す場
    合、前記先行命令のデスティネーションフラグ指定フィ
    ールドと前記現命令のソースフラグ指定フィールドとが
    一致することを判定するフラグ干渉判定回路とをさらに
    備え、実行停止回路は前記先行命令の処理結果が前記制
    御レジスタ内の前記汎用フラグへの書き込み動作が完了
    するまで前記現命令の実行を停止させ、条件実行判定回
    路は、前記先行命令内の実行条件フィールドの値と前記
    制御レジスタ内の前記汎用フラグの値とにより前記先行
    命令の実行を行うか否かの判定を行い、前記フラグ干渉
    判定回路から送信された制御信号に基づいて前記実行停
    止回路の動作が制御され、前記条件実行判定回路が前記
    先行命令を実行しないと判定した場合、条件実行制御回
    路は、前記実行停止回路から送信された前記現命令の実
    行を停止する制御信号を無効とすることを特徴とする請
    求項1記載の条件実行命令を備えるマイクロプロセッ
    サ。
  7. 【請求項7】 先行命令の処理結果を制御レジスタ内の
    汎用フラグへ書き込む以前に、現命令が前記制御レジス
    タ内の汎用フラグを用いて条件実行判定を行う場合、前
    記先行命令のデスティネーションフラグ指定フィールド
    と前記現命令のソースフラグ指定フィールドとが一致す
    ることを判定するフラグ干渉判定回路とをさらに備え、
    実行停止回路は前記先行命令の前記処理結果が前記制御
    レジスタ内の前記汎用フラグへ書き込み完了されるまで
    前記現命令の実行を停止させ、条件実行判定回路は、前
    記先行命令内の実行条件フィールドと前記制御レジスタ
    から得られる前記汎用フラグの値により前記先行命令の
    実行を行うか否かの判定を行い、前記フラグ干渉判定回
    路から送信される制御信号に基づいて前記実行停止回路
    の動作が制御され、前記条件実行判定回路が前記先行命
    令を実行しないと判定した場合、条件実行制御回路は、
    前記実行停止回路から送信される前記現命令の実行停止
    を指示する制御信号を無効とすることを特徴とする請求
    項1記載の条件実行命令を備えるマイクロプロセッサ。
  8. 【請求項8】 先行命令が制御レジスタ内のモードフラ
    グを更新する場合、前記先行命令が前記制御レジスタ内
    の前記モードフラグを更新する命令であることを検知す
    るモードフラグ判定回路をさらに備え、実行停止回路
    は、前記先行命令が前記制御レジスタ内の前記モードフ
    ラグの値を更新完了するまで現命令の動作を停止させ、
    条件実行判定回路は、前記先行命令内の実行条件フィー
    ルドと前記制御レジスタから得られる汎用フラグの値に
    より前記先行命令の実行を行うか否かの判定を行い、前
    記条件実行判定回路から送信される制御信号に基づいて
    前記実行停止回路の動作が制御され、前記条件実行判定
    回路で前記先行命令を実行しないと判定した場合、前記
    条件実行制御回路は、前記実行停止回路から送信される
    前記現命令の動作の停止を指示する制御信号を無効とす
    ることを特徴とする請求項1記載の条件実行命令を備え
    るマイクロプロセッサ。
  9. 【請求項9】 先行命令が含んでいる少なくとも1つ以
    上の副命令である先行副命令を実行するため、演算回路
    及び前記演算回路と汎用レジスタとの間のデータ読み出
    し及び書き込み経路等が同時に使用される場合、前記先
    行副命令の組み合わせにより前記データ読み出し及び書
    き込み経路の同時使用が行われるか否かを検知する同時
    使用判定回路と、前記先行副命令の実行で前記データ読
    み出し及び書き込み経路の同時使用を回避するため前記
    先行副命令のいずれかの動作を停止する衝突回避回路と
    をさらに備え、実行停止回路は、前記先行副命令の動作
    が停止される期間と同一期間だけ前記現命令の動作を停
    止し、条件実行判定回路は、前記先行命令内の実行条件
    フィールドと制御レジスタ内の汎用フラグの値により前
    記先行副命令の実行を行うか否かの判定を行い、前記条
    件実行判定回路から送信される制御信号に基づいて前記
    衝突回避回路と前記実行停止回路の動作が制御され、前
    記条件実行判定回路が前記先行副命令を実行しないと判
    定し、前記データ読み出し及び書き込み経路の同時使用
    が発生しない場合に、条件実行制御回路は、前記衝突回
    避回路から送信される前記先行副命令の実行を指示する
    制御信号と、前記実行停止回路から送信される前記現命
    令の実行を停止する制御信号を無効とすることを特徴と
    する先行副命令記載の条件実行命令を備えるマイクロプ
    ロセッサ。
JP12452697A 1997-05-14 1997-05-14 条件実行命令を備えるマイクロプロセッサ Expired - Fee Related JP3568737B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP12452697A JP3568737B2 (ja) 1997-05-14 1997-05-14 条件実行命令を備えるマイクロプロセッサ
US08/942,295 US6016543A (en) 1997-05-14 1997-10-01 Microprocessor for controlling the conditional execution of instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12452697A JP3568737B2 (ja) 1997-05-14 1997-05-14 条件実行命令を備えるマイクロプロセッサ

Publications (2)

Publication Number Publication Date
JPH10320197A true JPH10320197A (ja) 1998-12-04
JP3568737B2 JP3568737B2 (ja) 2004-09-22

Family

ID=14887672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12452697A Expired - Fee Related JP3568737B2 (ja) 1997-05-14 1997-05-14 条件実行命令を備えるマイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP3568737B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366876B1 (en) 2000-10-31 2008-04-29 Analog Devices, Inc. Efficient emulation instruction dispatch based on instruction width

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366876B1 (en) 2000-10-31 2008-04-29 Analog Devices, Inc. Efficient emulation instruction dispatch based on instruction width

Also Published As

Publication number Publication date
JP3568737B2 (ja) 2004-09-22

Similar Documents

Publication Publication Date Title
US6016543A (en) Microprocessor for controlling the conditional execution of instructions
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
EP0789297B1 (en) Data processor loading data and performing multiply-add operation in parallel
JP3881763B2 (ja) データ処理装置
US20010021970A1 (en) Data processor
JP3745039B2 (ja) 遅延命令を有するマイクロプロセッサ
JP3543181B2 (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
EP0855648A2 (en) Data processing with parallel or sequential execution of program instructions
JPH1049368A (ja) 条件実行命令を有するマイクロプロセッサ
JPH0496825A (ja) データ・プロセッサ
JP3578883B2 (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP2007102333A (ja) データ処理装置およびデータ処理方法
JPH07120284B2 (ja) データ処理装置
JP2002229779A (ja) 情報処理装置
JP2000207210A (ja) マイクロプロセッサ
JP2710994B2 (ja) データ処理装置
JP3568737B2 (ja) 条件実行命令を備えるマイクロプロセッサ
JPH10124312A (ja) 中央処理装置
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040309

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040518

A61 First payment of annual fees (during grant procedure)

Effective date: 20040616

Free format text: JAPANESE INTERMEDIATE CODE: A61

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080625

Year of fee payment: 4

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

Year of fee payment: 4

Free format text: PAYMENT UNTIL: 20080625

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

Free format text: PAYMENT UNTIL: 20090625

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees