JPH10320199A - 条件実行命令を有するマイクロプロセッサ - Google Patents

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

Info

Publication number
JPH10320199A
JPH10320199A JP12452597A JP12452597A JPH10320199A JP H10320199 A JPH10320199 A JP H10320199A JP 12452597 A JP12452597 A JP 12452597A JP 12452597 A JP12452597 A JP 12452597A JP H10320199 A JPH10320199 A JP H10320199A
Authority
JP
Japan
Prior art keywords
instruction
register
execution
condition
general
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
JP12452597A
Other languages
English (en)
Other versions
JP3547585B2 (ja
Inventor
Kazumasa Suzuki
和雅 鈴木
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 JP12452597A priority Critical patent/JP3547585B2/ja
Priority to US08/942,295 priority patent/US6016543A/en
Publication of JPH10320199A publication Critical patent/JPH10320199A/ja
Application granted granted Critical
Publication of JP3547585B2 publication Critical patent/JP3547585B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 条件実行命令を実行し結果を格納するレジス
タを後続命令がバイパス経路を介して参照する場合、条
件が満足されず無効の時、後続命令の実行で誤動作が生
じるという課題があった。 【解決手段】 条件実行命令を備えるマイクロプロセッ
サにおいて、命令デコーダ2内の条件実行判定部260
が、汎用フラグ5内に設定された条件データと実行条件
フィールド内に設定された条件とが合致しているか否か
を判定し、条件実行判定部の判定結果に従って、バイパ
ス制御部250,380がバイパス経路B0,B1,B
2またはデータ経路D0,D1を介してデータ転送する
か否かを制御する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、命令の一部に含
まれる実行条件フィールドを用いて命令の実行を制御す
る条件実行命令を備えたマイクロプロセッサに関するも
のである。
【0002】
【従来の技術】従来より、分岐のペナルティを減少さ
せ、マイクロプロセッサの性能向上のための手法とし
て、条件実行などの手法が検討されている。従来のAR
Mマイクロプロセッサでは、条件実行の判定に用いるた
めのフラグとして、ネガティブフラグ(N),ゼロフラ
グ(Z),キャリーフラグ(C),オーバーフローフラ
グ(V)という特定の命令でのみ設定される専用フラグ
を用いている。
【0003】また、マイクロプロセッサの性能向上のた
めの従来の他の手法として、動作周波数の高速化を目的
としてパイプラインの段数を多くした場合における演算
結果のバイパス処理を用いた手法がある。この手法で
は、例えば、演算結果を汎用レジスタへ書き込む命令を
実行し、次にそのレジスタを参照する命令を実行した場
合、後者の命令でレジスタを参照する時点では、前者の
命令における演算結果が汎用レジスタへ書き込まれてい
ないため、前者の命令の演算結果を汎用レジスタを経由
することなく、専用に設けられたバイパス経路を介して
直接参照することで命令を効率良く実行する手法であ
る。
【0004】
【発明が解決しようとする課題】しかしながら、従来の
条件実行命令を有するマイクロプロセッサにおいてバイ
パス経路を使用する場合、例えば、演算結果を汎用レジ
スタ内に書き込む条件実行命令を実行し、次にその演算
結果が書き込まれた汎用レジスタを参照するのにバイパ
ス経路を用いる命令を実行した場合に、前者の命令の実
行条件が満たされず命令が無効となった場合には、後者
の命令で間違ったデータをバイパスすることになり、誤
動作を引き起こすという課題があった。
【0005】この発明は上記のような課題を解決するた
めになされたもので、データを直接転送するバイパス経
路を設けた条件実行命令を有するマイクロプロセッサに
おいて、条件実行命令の後にバイパス経路を用いる命令
が続いた場合でも、パイプラインのペナルティを課する
ことなく効率良く、また誤動作なく命令を実行可能な条
件実行命令を有するマイクロプロセッサを得ることを目
的とする。
【0006】
【課題を解決するための手段】請求項1記載の発明に係
る条件実行命令を有するマイクロプロセッサは、実行条
件フィールドおよび演算フィールドを含む条件実行命令
等の各種命令をデコードする命令デコーダと、条件が設
定される汎用フラグを含む制御レジスタと、命令デコー
ダの出力に従って命令を実行する命令実行部と、命令実
行部の実行結果を格納する複数の汎用レジスタと、命令
実行部に設けられ汎用レジスタを経由することなく、直
前に実行された命令の演算結果を格納しているレジスタ
内の演算結果をバイパスするためのバイパス経路とを備
える。特に、命令デコーダ内の条件実行判定部が、汎用
フラグ内に設定された条件データと実行条件フィールド
内に設定された条件とが合致しているか否かを判定し、
バイパス制御部が条件実行判定部の判定結果に従って、
バイパス経路を使用するか否かを制御して、条件実行命
令の後にバイパス経路を用いる命令が続いた場合でも、
パイプラインのペナルティを課することなく効率良く、
また誤動作なく命令を実行するものである。
【0007】請求項2記載の発明に係る条件実行命令を
有するマイクロプロセッサは、バイパス制御部内のバイ
パス判定部が、命令実行部で実行される命令のパイプラ
インでデータ干渉が発生しているか否かを判定し、レジ
スタ出力制御部が、バイパス判定部の判定結果に基づい
て、バイパス経路を介した制御レジスタのデータ転送動
作を制御し、また、条件実行制御部内の条件実行判定部
が、実行しようとする条件実行命令が有効であるか無効
であるかを判定し、汎用レジスタ書き込み制御部が条件
実行判定部の判定結果に基づいて汎用レジスタへのデー
タの書き込みを制御する。さらに、バイパス判定部がデ
ータ干渉の発生を判定した場合であっても、レジスタ出
力制御部は、条件実行判定部から送信される判定結果に
従ってレジスタの動作を停止し、また汎用レジスタ内の
データを使用するようにレジスタおよび汎用レジスタを
制御して、条件実行命令の後にバイパス経路を用いる命
令が続いた場合でも、パイプラインのペナルティを課す
ることなく効率良く、また誤動作なく命令を実行するも
のである。
【0008】請求項3記載の発明に係る条件実行命令を
有するマイクロプロセッサは、実行条件フィールドおよ
び演算フィールドを含む条件実行命令等の各種命令をデ
コードする命令デコーダと、条件が設定される汎用フラ
グを含む制御レジスタと、命令デコーダの出力に従って
命令を実行する命令実行部と、命令実行部の実行結果を
格納する複数の汎用レジスタと、命令実行部に設けら
れ、汎用レジスタを経由することなく、直前に実行され
た命令の演算結果を格納している複数のレジスタ内の演
算結果をバイパスするための複数のバイパス経路と汎用
レジスタを経由するデータ転送のためのデータ経路とを
備える。特に、命令デコーダ内の条件実行制御部は、汎
用フラグ内に設定された条件と実行条件フィールド内に
設定された条件が合致しているか否かを判定し、バイパ
ス制御部は、条件実行判定部の判定に従って、複数のバ
イパス経路および汎用レジスタを経由するデータ経路の
うちいずれかを介したデータ転送を制御するので、条件
実行命令の後にバイパス経路を用いる命令が続いた場合
でも、パイプラインのペナルティを課することなく効率
良く、また誤動作なく命令を実行するものである。
【0009】請求項4記載の発明に係る条件実行命令を
有するマイクロプロセッサは、バイパス制御部内のバイ
パス判定部が、命令実行部で実行される命令のパイプラ
インでデータ干渉が発生しているか否かを判定し、レジ
スタ出力制御部が、バイパス判定部の判定結果に基づい
て、バイパス経路を介した制御レジスタのデータ転送動
作を制御し、条件実行制御部内の条件実行判定部が、実
行しようとする条件実行命令が有効であるか無効である
かを判定し、汎用レジスタ書き込み制御部が、条件実行
判定部の判定結果に基づいて汎用レジスタへのデータの
書き込みを制御し、バイパス判定部がデータ干渉の発生
を判定した場合であっても、レジスタ出力制御部は、条
件実行判定部から送信される判定結果に従って、複数の
バイパス経路およびデータ経路のいずれかを選択して複
数のレジスタあるいは複数の汎用レジスタのいずれかを
介したデータ転送を制御するので、条件実行命令の後に
バイパス経路を用いる命令が続いた場合でも、パイプラ
インのペナルティを課することなく効率良く、また誤動
作なく命令を実行するものである。
【0010】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.まず、この発明の条件実行命令を有する
マイクロプロセッサの基本構成に関して説明する。
【0011】マイクロプロセッサのハードウエア構成 図1は、この発明の条件実行命令を有するマイクロプロ
セッサの全体構成を示すブロック図であり、32ビット
の内部データバスを有する32ビットマイクロプロセッ
サである。図において、1は条件実行命令を有するマイ
クロプロセッサコア、2は命令RAM6から64ビット
幅のIDバスを介して入力した命令コードをデコードす
る処理を行う命令デコードユニット(命令デコーダ)、
3はアドレス計算を行うメモリアクセスユニット(命令
実行部)、4は算術論理演算またはシフト演算を行う整
数演算ユニット、5は32ビット×64ワードの汎用レ
ジスタ(複数の汎用レジスタ)、7はデータが格納され
るデータRAMである。
【0012】命令デコードユニット2において、8、9
はそれぞれ命令コードをデコードするデコーダ、10は
プロセッサの状態を示すプロセッサ状態語(Proce
ssor Status Word、以下プロセッサ状
態語をPSWという)である。命令デコードユニット2
は、さらに、制御信号11を作成し、それをメモリアク
セスユニット3へ与える。また、命令デコードユニット
2は、デコーダ9のデコード結果とPSW10の内容に
基づいて制御信号12を作成しそれを整数演算ユニット
4へ与える。
【0013】メモリアクセスユニット3において、13
はジャンプや分岐を含まない命令を実行するとPC(プ
ログラムカウンタ)値に8を加えて次に実行する命令に
対するPC値を算出するとともに、ジャンプや分岐を含
む命令の実行時に分岐変位をPC値に加算したり、演算
で指定されたアドレッシングモードに応じた計算を行っ
てジャンプ先の命令に対するPC値を計算するPC制御
部である。14は、PC制御部13が計算したPC値を
32ビット幅のIAバスを介して命令RAM6へ送ると
ともに、命令RAM6から命令コードを出力させるメモ
リ制御部である。
【0014】メモリ制御部14は、32ビット幅のOA
バスを介してアドレスデータをデータRAM7へ転送
し、命令実行に必要なデータを64ビット幅のODバス
を介してアクセスする。15は、汎用レジスタ5から3
2ビット幅のS1バス、S2バス、S6バスを介して転
送された最大3ワードのデータを用いて算術論理演算を
行い、演算結果を32ビット幅のW1バスを介して汎用
レジスタ5に転送するALUである。16は、汎用レジ
スタ5からS1バス、S2バス、S6バスを介して転送
されたデータを用いてシフト演算を行い、演算結果をW
1バスを介して汎用レジスタ5へ転送するシフタであ
る。
【0015】メモリアクセスユニット3に対して、S1
バス、S2バス、S5バス、S6バスを介して、32ビ
ット長のデータを一時に4ワード転送することが可能で
ある。従って、例えば、第1のレジスタの内容と第2の
レジスタの内容との和でアドレッシングされるメモリの
領域に第3のレジスタの内容をストアするとともに、第
3のレジスタの内容をストアしたアドレスに所定値を加
算して得られる値でアドレッシングされるメモリの領域
に、第4のレジスタの内容をストアする2ワードストア
命令を実現することができる。
【0016】また、メモリアクセスユニット3は、W1
バスおよびW3EバスおよびW3Oバスを介して、メモ
リアクセスユニット3内での2ワードの演算結果または
データRAM7から転送された2ワードのデータを、汎
用レジスタ5に転送することができる。
【0017】整数演算ユニット4において、17は汎用
レジスタ5から32ビット幅のS3バス、S4バス、S
5バスを介して転送された最大3ワードのデータを用い
て乗算を行い、演算結果を32ビット幅のW2バス、W
3Eバス、W3Oバスを介して汎用レジスタ5へ転送す
る乗算器である。18は、乗算の結果を累積加算または
累積減算して保持するアキュムレータである。アキュム
レータとして、64ビットのものが2本組み込まれてい
る。19は、汎用レジスタ5からS3バス、S4バス、
S5バスを介して転送された最大3ワードのデータを用
いて算術論理演算を行い、演算結果をW2バス、W3E
バス、W3Oバスを介して汎用レジスタ5へ転送するA
LUである。20は、汎用レジスタ5からS3バス、S
4バス、S5バスを介して転送されたデータを用いてシ
フト演算を行い、演算結果をW2バス、W3Eバス、W
3Oバスを介して汎用レジスタ5へ転送するシフタであ
る。
【0018】このマイクロプロセッサ1では、汎用レジ
スタ5から、最大6種類のレジスタ値を読み出すことが
可能であり、読み出されたデータは、それぞれ、S1バ
ス、S2バス、S3バス、S4バス、S5バス、S6バ
スへ出力される。また、汎用レジスタ5内へ、W1バ
ス、W2バス、W3Eバス、W3Oバスを介して最大4
種類のレジスタ値を同時に書き込むことが可能である。
【0019】図2は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサ1で用いられる
命令フォーマットを示す説明図である。命令フォーマッ
トとして、1つの命令コードで2つの演算(opera
tion)を指示する2演算命令のフォーマット101
と、1つの令令コードで1つの演算を指示する1演算命
令のフォーマット102とがある。
【0020】2演算命令のフォーマット101には、フ
ィールド103およびフィールド104からなるフォー
マットフィールドと、2つの演算フィールド106、1
07に付属する各実行条件フィールド105とがある。
1演算命令のフォーマット102には、フィールド10
8およびフィールド104からなるフオーマットフィー
ルドと、フィールド108、109、110からなる演
算フィールドと、演算フィールドに付属する実行条件フ
ィールド105とがある。
【0021】図3は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサ1で用いられる
命令フォーマットフィールドを示す説明図であり、図に
おいて、FMは、フィールド103およびフィールド1
04からなる2ビットの値である。
【0022】フォーマットフィールドの値がFM=00
の場合、この命令は2演算命令であることを示す。そし
て、演算フィールド106で指示されたoperati
on_0の演算と演算フィールド107で指示されたo
peration_1の演算とが、デコード直後のクロ
ックサイクルで並列に実行される。operation
_0の演算はメモリアクセスユニット3で実行され、o
peration_1の演算は整数演算ユニット4で実
行される。
【0023】フォーマットフィールドの値がFM=01
の場合、この命令は2演算命令であることを示す。そし
て、operation_0の演算がデコード直後のク
ロックサイクルに実行され、operation_1の
演算がoperation_0の演算に対して1クロッ
クサイクル遅れて実行される。
【0024】フォーマットフィールドの値がFM=10
の場合、この命令は2演算命令であることを示す。そし
て、operation_1の演算がデコード直後のク
ロックサイクルに実行され、operation_0の
演算がoperation_1の演算に対して1クロッ
クサイクル遅れて実行される。
【0025】フォーマットフィールドの値がFM=11
の場合、この命令は1演算命令であることを示す。そし
て、フィールド108、109、110からなる演算フ
ィールドで指示された1つの演算がデコード直後のクロ
ックサイクルで実行される。
【0026】図4は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサで用いられる命
令フォーマット内の実行条件フィールド105の詳細な
内容を示す説明図である。実行条件フィールド105
は、マイクロプロセッサ1の実行コントロールフラグF
0、F1の値に応じて、演算フィールド106、107
のoperation_0の演算やoperation
_1の演算、および演算フィールド108、109、1
10の演算が有効であるか無効であるかを定める。実行
コントロールフラグF0、F1の内容については後述す
る。
【0027】演算が有効であるとは、演算結果がレジス
タ、メモリおよびフラグに反映され、その演算による動
作の結果が残ることを意味する。演算が無効であると
は、演算結果がレジスタ、メモリおよびフラグに反映さ
れず、あたかも無効演算(NOP)が実行されたかのよ
うな動作の結果が残ることを意味する。
【0028】実行条件フィールド105の値がCC=0
00ときには、実行コントロールフラグF0、F1の値
に関わらず常に演算は有効である。命令に/TXを記述
したときには、CC=000であることを意味する。
【0029】実行条件フィールド105の値がCC=0
01のときには、実行コントロールフラグF0=真のと
きにのみ演算は有効である。実行コントロールフラグF
1の状態はいずれでもよい。命令に/FXを記述したと
きには、CC=001であることを意味する。
【0030】実行条件フィールド105の値がCC=0
10のときには、実行コントロールフラグF0=偽のと
きにのみ演算は有効である。実行コントロールフラグF
1の状態はいずれでもよい。命令に/FXを記述したと
きには、CC=010であることを意味する。
【0031】実行条件フィールド105の値がCC=0
11のときには、実行コントロールフラグF1=真のと
きにのみ演算は有効である。実行コントロールフラグF
0の状態はいずれでもよい。命令に/XTを記述したと
きには、CC=011であることを意味する。CC=1
00のときには、実行コントロールフラグF1=偽のと
きにのみ演算は有効である。実行コントロールフラグF
0の状態はいずれでもよい。命令に/XFを記述したと
きには、CC=100であることを意味する。
【0032】実行条件フィールド105の値がCC=1
01のときには、実行コントロールフラグF0=真かつ
F1=真のときにのみ演算は有効である。命令に/TT
を記述したときには、CC=101であることを意味す
る。CC=110のときには、実行コントロールフラグ
F0=真かつF1=偽のときのみ演算は有効である。命
令に/TFを記述したときには、CC=110であるこ
とを意味する。
【0033】実行条件フィールド105の値がCC=1
11のときの動作は未定義であり、ユーザは、CC=1
11となる命令を用いることはできない。
【0034】図5は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサで用いられる命
令フォーマット内の演算フィールドを示す説明図であ
る。図において、フォーマット111〜117は、それ
ぞれ28ビットで表現される短型の演算フィールド10
6または演算フィールド107によるものである。フォ
ーマット118、119は、フィールド108、10
9、110で構成される長型の演算フィールドによるも
のである。フォーマット111(Short_M)は、
演算内容を指定するフィールド120、レジスタ番号を
指定する2つのフィールド121、122、レジスタ番
号または6ビット長の即値指定するフィールド123、
およびフィールド123がレジスタ番号を示すのか即値
を示すのかを指定するフィールド124で構成される。
【0035】図5の説明図に示すように、フィールド1
24の値Xが「00」、「01」または「11」である
ときにはフィールド123がレジスタ番号を示している
ことを示し、「10」であるときには即値を示している
ことを示す。このフォーマット111は、レジスタ間接
アドレッシングのメモリアクセス演算に用いられる。
【0036】フォーマット112(Short_A)
は、演算内容を指定するフィールド120、レジスタ番
号を指定する2つのフィールド121、122、レジス
タ番号または6ビット長の即値を指定するフィールド1
23、およびフィールド123がレジスタ番号を示すの
か即値を示すのかを指定するフィールド125で構成さ
れる。
【0037】図5の説明図に示すように、フォーマット
112内のフィールド125の値Xが「0」であるとき
にはフィールド123がレジスタ番号を示していること
を示し、「1」であるときには即値を示していることを
示す。このフォーマット112は、算術演算、論理演
算、シフト演算およびビット演算に用いられる。
【0038】フォーマット113(Short_B1)
は、演算内容を指定するフィールド120およびレジス
タ番号を指定するフィールド126で構成される。この
フォーマット113は、レジスタ指定によるジャンプ命
令および分岐命令に用いられる。
【0039】フォーマット114(Short_B2)
は、演算内容を指定するフィールド120および18ビ
ット長のディスプレイスメントのフィールド127で構
成される。このフォーマット114は、ジャンプ命令お
よび分岐命令に用いられる。
【0040】フォーマット115(Short_B3)
は、演算内容を指定するフィールド120、レジスタ番
号を指定するフィールド121、レジスタ番号または1
2ビット長の即値を指定するフィールド128、フィー
ルド128がレジスタ番号を示すのか即値を示すのかを
指定するフィールド129、およびゼロ判定に基づいて
フィールド121に基づく条件ジャンプまたは条件分岐
を行うか否かを指定するフィールド130で構成され
る。このフォーマット115は、条件ジャンプ命令およ
び条件分岐命令に使用される。
【0041】フォーマット116(Short_D1)
は、演算内容を指定するフィールド120、レジスタ番
号を指定するフィールド121、レジスタ番号または1
2ビット長の即値を指定するフィールド128、フィー
ルド128がレジスタ番号を示すのか即値を示すのかを
指定するフィールド129で構成される。このフォーマ
ット116は、条件ジャンプ命令、条件分岐命令および
リピート命令に使用される。
【0042】フォーマット117(Short_D2)
は、演算内容を指定するフィールド120、レジスタ番
号または12ビット長の即値を指定するフィールド12
8、フィールド128がレジスタ番号を示すのか即値を
示すのかを指定するフィールド129、遅延命令(ディ
レイド命令)に関するフィールド131で構成される。
このフォーマット117は、ディレイドジャンプ命令、
ディレイド分岐命令およびリピート命令に使用される。
【0043】フォーマット118(Long1)は、演
算内容を指定するフィールド120、レジスタ番号を指
定する2つのフィールド121、122、32ビット長
の即値を指定するフィールド132で構成される。この
フォーマット118は、複雑な算術演算、大きな即値を
用いる算術演算、大きなディスプレイスメント付きレジ
スタ間接アドレッシングのメモリアクセス演算、大きな
変位の分岐演算および絶対番値へのジャンプ命令などに
使用される。
【0044】フォーマット119(Long2)は、演
算内容を指定するフィールド120、レジスタ番号を指
定する2つのフィールド121、122、32ビット長
の即値を指定するフィールド132、およびゼロ判定に
基づいてフィールド132に基づく条件ジャンプまたは
条件分岐を行うか否かを指定するフィールド133で構
成される。
【0045】このフォーマット119は、大きな分岐変
位を持つ条件ジャンプや条件分岐命令に使用される。
【0046】図6は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサのレジスタの構
成を示す説明図である。このマイクロプロセッサ1は、
64本の32ビット長の汎用レジスタ5、12本の制御
レジスタ150、および2本のアキュムレータ18を備
えている。R0の汎用レジスタ140の内容は常に0で
あり、そこへの書き込みは無視される。R62の汎用レ
ジスタは、サブルーチンからの戻り先アドレスが設定さ
れるリンクレジスタである。R63の汎用レジスタは、
スタックポインタであり、PSW10のSMフィールド
の値に応じてユーザスタックポインタ(SPU)または
割り込みスタッタポインタ(SPI)として動作する。
制御レジスタ150には、プログラムカウンタ151、
PSW10、および各種の専用レジスタが含まれる。
【0047】図5に示すフォーマット112による演算
では、64本の汎用レジスタ5のそれぞれを上位16ビ
ットと下位16ビットとに分けてアクセスできる。ま
た、2本のアキュムレータ18を、上位32ビットと下
位32ビットとに分けて別々にアクセスできる。
【0048】図7は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサのレジスタ内の
PSWを示す説明図である。PSW10の上位16ビッ
トは、スタックポインタを切り替えるためのSMフィー
ルド171、ソフトウェアデバッガトラップ(SDB
T)の検出を示すEAフィールド172、SDBTの許
可を指定するDBフィールド173、割り込み許可を指
定するIEフィールド174、リピート動作の許可を指
定するRPフィールド178、モジュロアドレッシング
の許可を指定するMDフィールド176がある。
【0049】下位16ビットは、フラグフィールド18
0である。フラグフィールド180には8個のフラグが
あり、その中のF0フラグ181およびF1フラグ18
2は演算の有効/無効を指定する。各フラグの値は、比
較演算や算術演算の結果に応じて変化する。また、フラ
グ初期化演算で初期化したり、フラグ値書き込み演算で
は任意の値をフラグフィールド180に書き込むことに
よって変化する。フラグフィールド180の内容は、フ
ラグ値読み出し演算によって読み出される。
【0050】以下、この発明の条件実行命令を有するマ
イクロプロセッサ1の命令一覧を示す。
【0051】 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
【0052】 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
【0053】 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
【0054】 A-4. Maximum/Minimum instructions reserved
【0055】 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
【0056】 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
【0057】 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
【0058】 A-8. Bit operation instructions BCLR Clear a bit BNOT Invert a bit BSET Set a bit BTST Test a bit
【0059】 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
【0060】 A-10. OS-related instructions TRAP Trap REIT Return from exception, interrupts, and traps
【0061】 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
【0062】 B-2. Repeat instructions REPEAT Repeat a block of instructions REPEAT Repeat a block of instructions with immediate
【0063】図8は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサ1の並列2命令
実行時のパイプライン動作を示す説明図である。この動
作は、命令のフォーマットフィールドの値FM=00の
ときに実行される。パイプライン190、195は、I
Fステージ191、D/Aステージ192、E/Mステ
ージ193、Wステージ194で構成される。並列2命
令実行時には、メモリアクセスユニット3での実行19
0と整数演算ユニット4での実行195が並列に行われ
る。
【0064】図9は、図1に示したこの発明における条
件実行命令を有するマイクロプロセッサのパイプライン
動作を示す説明図であり、図において、各ステージはク
ロックに同期しており、クロックのHighの期間とL
owの期間により、2つの期間に分割される。
【0065】IFステージのクロックがHighのとき
がI1期間、LowのときがI2期間、D/Aステージ
のクロックがHighのときがD1期間、Lowのとき
がD2期間、E/MステージのクロックがHighのと
きがE1期間、LowのときがE2期間、IFステージ
のクロックがHighのときがW1期間、Lowのとき
がW2期間である。
【0066】IFステージでは命令のフェッチを行い、
D/AステージではD1期間内に命令のデコード及び汎
用レジスタのリードを行い、D2期間内にメモリのアド
レス計算を行う。E/MステージとWステージのW1期
間では演算の実行及びメモリのアクセスを行い、Wステ
ージのW2期間にて汎用レジスタへの書き込みを行う。
【0067】図10は、マイクロプロセッサ1において
データ干渉が起こる場合のプログラム例である。データ
干渉については後述する。
【0068】図において、ADD命令は、第2オペラン
ド及び第3オペランドで指定される汎用レジスタの値を
加算し、演算結果を第1オペランドで指定される汎用レ
ジスタに書き込む命令である。ADD命令200では、
汎用レジスタR2の値及び汎用レジスタR3の値が加算
され、その加算結果が、汎用レジスタR4に書き込まれ
る。
【0069】ADD命令210では、汎用レジスタR1
0の値及び汎用レジスタR4の値が加算され、その加算
結果が、汎用レジスタR11内に書き込まれる。ADD
命令210において、汎用レジスタR4の値は、ADD
命令200の加算結果と等しい。
【0070】ADD命令200において、汎用レジスタ
R4への加算結果の書き込みは、W2期間内に行われる
ために、ADD命令210のD2期間では、この汎用レ
ジスタR4への加算結果の書き込みはまだ終っていない
ため、ADD命令210のD1期間で読み出した汎用レ
ジスタR4の値は、演算に使用することができない。こ
のような状況をデータ干渉と呼ぶ。データ干渉が起こる
状況では、ADD命令200の加算結果を、汎用レジス
タR4を経由せずに専用のデータ転送経路(バイパス経
路)を介してADD命令210のD2期間に渡す制御を
行う。
【0071】図11は、図10のプログラムを実行した
ときのパイプラインの動作を示した説明図であり、図に
おいて、220は命令200に対応したパイプライン、
230は命令210に対応したパイプラインである。パ
イプライン220とパイプライン230で同じ列にある
ステージがそれぞれ同時に実行されることを示してい
る。図11内の矢印が示すように、パイプライン220
のE2期間からパイプライン230のD2期間に加算結
果をバイパス経路を介して渡すことにより、パイプライ
ンを乱さずに命令の実行を行う。
【0072】図12は、図10に示すプログラムを実行
するときのマイクロプロセッサ1の動作を説明するため
のブロック図であり、図1に示すマイクロプロセッサ1
のブロック図と同一の参照番号を用いている。即ち、A
LU15、汎用レジスタ5、メモリアクセスユニット
3、MUデコーダ8は、図1に示したものと同一構成要
素である。
【0073】メモリアクセスユニット3において、24
0はD2バスに出力されたデータをE1期間内に取り込
み、取り込んだデータをALU15に出力するE1レジ
スタ、241は、ALU15からの出力データをE1バ
スを介してE2期間内に取り込み、取り込んだデータを
E2バスに出力するとともに、レジスタ出力制御部25
2から出力される制御信号に従って取り込んだデータを
バイパス経路B0を経由してD2バスへ出力するE2レ
ジスタ、242は汎用レジスタ5の出力をS2バスを介
してD2期間内に取り込み、レジスタ出力制御部252
の出力に従って取り込んだデータをデータ経路D0を経
由してD2バスへ出力するD2レジスタ、243はE2
レジスタ241の出力をE2バスを介してW1期間内に
取り込み、取り込んだデータをW1バスに出力するW1
レジスタである。
【0074】MUデコーダ8において、250はバイパ
ス制御を行うバイパス制御部、260は条件実行命令に
おける制御を行う条件実行制御部である。
【0075】バイパス制御部250において、251は
データ干渉が起こっているか否かを判定するバイパス判
定部、252はバイパス判定部の判定結果および条件実
行判定部261の判定結果に従って、E2レジスタ24
1およびD2レジスタ242にD2バスへの出力を制御
する信号を出力するレジスタ出力制御部である。
【0076】条件実行制御部260において、261は
条件実行命令が有効であるか無効であるかを判定する条
件実行判定部、262は条件実行判定部261の判定結
果に従って、汎用レジスタ5への書き込みを制御する信
号を出力する汎用レジスタ書き込み制御部である。
【0077】図13は、条件実行判定部261を示すブ
ロック図であり、図において、270は図2における実
行条件フィールド105と同じものである。271は図
7におけるF0フラグ181およびF1フラグ182と
同じものである。272は実行条件フィールド270に
設定されている条件をデコードし実行コントロールフラ
グ271に設定されている条件と合致しているか否かを
判断するデコーダである。
【0078】次に動作について説明する。先ず、図10
に示すプログラムを実施の形態1の条件実行命令を有す
るマイクロプロセッサ1が実行したときの動作について
説明する。
【0079】図10に示すプログラム内の命令200が
実行され得られる加算結果は、ALU15から出力さ
れ、E1バスを介して、命令200のE2期間内にE2
レジスタ241に格納される。E2レジスタ241から
の出力は、E2バスを介して命令200のW1期間内に
W1レジスタ243に格納される。
【0080】命令200の実行の場合には、実行条件フ
ィールド270はCC=000の値を持ち、前に述べた
ように実行コントロールフラグ271の値によらずいつ
でも当該命令は有効である。従って、条件実行判定部2
61は、当該命令が有効であると判定し判定結果を汎用
レジスタ書き込み制御部262およびレジスタ出力制御
部252に出力する。汎用レジスタ書き込み制御部26
2は、条件実行判定部261の判定結果に従って書き込
むことを許可する制御信号を汎用レジスタへ出力する。
【0081】W1レジスタ243に格納されたデータ
は、汎用レジスタ書き込み制御部262の制御信号に従
って、W1バスを介して汎用レジスタ内に、命令200
のW2期間内に書き込まれる。命令210においてR4
のデータは、汎用レジスタ5からS2バスを介して命令
210のD2期間内にD2レジスタ242に取り込まれ
る。
【0082】バイパス判定部251は、命令210がデ
ータ干渉を起こしていると判定し、判定結果をレジスタ
出力制御部252へ出力する。レジスタ出力制御部25
2は、バイパス判定部251の判定結果に従って、命令
200の加算結果を保持しているE2レジスタ241
に、D2バスへの出力を許可することを意味する制御信
号を出力し、汎用レジスタ5のデータを保持するD2レ
ジスタ242にD2バスへの出力を許可しないことを意
味する制御信号を出力する。
【0083】E2レジスタ241は、レジスタ出力制御
部252の制御信号に従って保持したデータのD2バス
への出力を行う。一方、D2レジスタ242は、レジス
タ出力制御部252の制御信号に従って保持したデータ
のD2バスへの出力を行わない。E1レジスタ240
は、E2レジスタ241からの出力データをD2バスを
介して命令210のE1期間内に取り込み、取り込まれ
たデータをALU15へ出力する。ALU15は、E1
レジスタ240からの出力データをもとに命令210の
加算演算を行う。
【0084】次に、図10に示すプログラム内の命令2
00が条件実行命令であった場合の実施の形態1の条件
実行命令を有するマイクロプロセッサ1の動作について
説明する。
【0085】図14は、図10に示すプログラム内の命
令200が、条件実行命令である場合のデータ干渉の発
生を示す説明図である。図において、命令280は条件
実行命令であり、命令に/TXが記述されているため、
前述したように実行コントロールフラグF0が1のとき
命令280は有効になり、実行コントロールフラグF0
が0のとき命令280は無効となる。実行コントロール
フラグF1の値は考慮されない。
【0086】命令280が有効のときには、命令291
の汎用レジスタR4の値は、命令280の加算結果と一
致し、命令280が無効のときは、命令291の汎用レ
ジスタR4の値は、命令280を実行する以前の値と一
致する。図14に示す命令280の加算結果は、ALU
15から出力され、E1バスを介して命令200のE2
期間内にE2レジスタ241内に格納される。E2レジ
スタ241からの出力は、E2バスを介して命令280
のW1期間内にW1レジスタ243内に格納される。
【0087】命令280の場合には、実行条件フィール
ド270はCC=001の値を持ち、条件実行判定部2
61は、実行コントロールフラグ271のF0フラグが
1のとき命令280は有効であると判定し、F0フラグ
が0のとき命令280は無効であると判定し、判定結果
を汎用レジスタ書き込み制御部262に出力するととも
に、レジスタ出力制御部252に出力する。
【0088】まず、命令280が有効であった場合、マ
イクロプロセッサ1が図10に示すプログラムを実行し
たときと同じ動作を行う。次に、命令280が無効であ
ったときの動作を説明する。汎用レジスタ書き込み制御
部262は、条件実行判定部261の判定結果に従っ
て、書き込むことを許可しないことを指示する制御信号
を汎用レジスタ5に対して出力する。W1レジスタ24
3内に格納されたデータは、汎用レジスタ書き込み制御
部262の制御信号に従い、汎用レジスタ5への書き込
みは行われない。命令290においてR4のデータは、
汎用レジスタ5からS2バスを介して命令290のD2
期間内にD2レジスタ242内に取り込まれる。
【0089】バイパス判定部251は、命令210がデ
ータ干渉を起こしていると判定し、判定結果をレジスタ
出力制御部252へ出力する。レジスタ出力制御部25
2は、条件実行判定部261の判定結果に従って、バイ
パス判定部251の判定結果によらず、E2レジスタ2
41に対してバイパス経路B0を経由して行われるD2
バスへの出力を許可しないことを意味する制御信号を出
力する。さらに、レジスタ出力制御部252は、汎用レ
ジスタ5のデータを保持するD2レジスタ242に、デ
ータ経路D0を経由したD2バスへのデータ出力を許可
することを指示する制御信号を出力する。E2レジスタ
241は、レジスタ出力制御部252から送信される制
御信号に従って、保持したデータのバイパス経路B0を
経由して行われるD2バスへの出力を実行しない。
【0090】一方、D2レジスタ242は、レジスタ出
力制御部252の制御信号に従って保持したデータのD
2バスへの出力を行う。E1レジスタ240は、E2レ
ジスタからの出力データをD2バスを介して命令210
のE1期間内に取り込み、取り込まれたデータをALU
15へ出力する。ALU15は、E1レジスタからの出
力データをもとに命令280の加算演算を行う。
【0091】以上のように、この実施の形態1によれ
ば、条件実行命令を含む命令のパイプライン間でデータ
干渉が発生しているか否かを判定し、バイパス判定部2
51での判定結果に基づいて行われるレジスタ出力制御
部252の出力を、実行条件制御部260内の条件実行
判定部261での判定結果に従って制御し、バイパス経
路B0やデータ経路D0を介したデータ転送を制御する
ようにしたので、条件実行命令を実行するパイプライン
においてデータ干渉が発生した場合でも、命令を効率良
く実行し、データ干渉による誤動作を回避できる。
【0092】実施の形態2.図15は、この発明の実施
の形態2におけるマイクロプロセッサで実行されるプロ
グラム例を示す説明図である。実施の形態1のマイクロ
プロセッサの構成要素以外のこの実施の形態2のマイク
ロプロセッサの構成要素は、図17に示す説明図を用い
て後述する。なお、図1および図12に示した実施の形
態1のマイクロプロセッサの構成要素と同様のものにつ
いては、同一符号を用い、またそれらの説明を省略す
る。
【0093】図15におけるLD2W命令300は、第
2オペランド及び第3オペランドで指定された汎用レジ
スタに設定されている値の和で示されるメモリアドレス
から8byteのデータを読み出し、第1オペランドで
指定された汎用レジスタおよび、その汎用レジスタ内の
レジスタ番号に1を加えた汎用レジスタ内に読み出した
データを書き込む命令である。また、図15において、
第2オペランドのプラス(+)記号は、アドレッシング
モードがポストインクリメントであることを示してお
り、メモリからデータを読み出した後、第2オペランド
で指定されている汎用レジスタの値に8が加算される。
【0094】図15に示すプログラムにおいて、命令3
00はレジスタR2およびR3の値の和で示されるメモ
リ内のメモリアドレスから8byteのデータを読み出
し、読み出したデータをレジスタR10、R11へ書き
込む命令である。また、レジスタR2へは、メモリから
データが読み出された後、8が加算される。
【0095】命令310は条件実行命令である。命令3
10において記号/TXは、実行コントロールフラグF
0が1のとき命令310は有効になり、実行コントロー
ルフラグF0が0のとき命令310は無効となることを
示している。実行コントロールフラグF1の値は考慮さ
れない。命令310が有効のときは、命令300で更新
されたレジスタR2の値およびR3の値の和で示される
メモリアドレスからデータが読み出され、読み出された
データは、レジスタR12、R13内に書き込まれる。
【0096】また、レジスタR2はメモリからデータが
読み出された後、8が加算される。命令310が無効の
ときには、レジスタR12、R13および、R2の値は
変化しない。
【0097】命令320は、命令310が有効のときに
は、命令310で更新されたレジスタR2の値およびR
3の値の和で示されるメモリ内のメモリアドレスからデ
ータが読み出され、読み出されたデータはレジスタR1
4、R15へ書き込まれる。命令310が無効のときに
は、命令300で更新されたレジスタR2の値およびR
3の値の加算で示されるメモリアドレスのデータが読み
出され、読み出されたデータは、レジスタR14、R1
5内に書き込まれる。また、レジスタR2へは、メモリ
からデータが読み出された後、8が加算される。
【0098】図16は、実施の形態2のマイクロプロセ
ッサ1が、図15に示すプログラムを実行したときのパ
イプラインの動作を示した説明図であり、図において、
命令300に対応したパイプラインが330であり、命
令310に対応したパイプラインが340であり、命令
320に対応したパイプラインが350である。
【0099】図16において、パイプライン330、3
40および350で同じ列にあるステージがそれぞれ同
時に実行されることを示している。命令300におい
て、汎用レジスタR2に8が加算された値が書き戻され
るのはW2期間であるため、命令310においてレジス
タR2の値が読み出されるD1期間ではまだ更新されて
おらず、データ干渉が起こっている。そのため、矢印3
31に示すように命令300のD1期間で更新されたR
2の値を、命令300のE1期間から命令310のD1
期間に渡す。
【0100】命令310において、命令が有効であると
き、レジスタR2の値に8が加算された値が書き戻され
るのは、W2期間であるため、命令320においてレジ
スタR2の値が汎用レジスタ5から読み出されるD1期
間では、レジスタR2の値はまだ更新されておらず、デ
ータ干渉が起こっている。そのため、矢印341に示す
ように、命令320のD1期間で更新されたレジスタR
2の値を命令310のE1期間から命令320のD1期
間に渡す。
【0101】命令310が無効であるとき、命令300
においてレジスタR2の値に8が加算された値が書き戻
されるのはW2期間であるため、命令320においてレ
ジスタR2が汎用レジスタ5から読み出されるD1期間
ではまだ更新されておらず、データ干渉が起こってい
る。そのため、矢印332に示すように、命令300の
D1期間で更新されたR2の値を命令300のW1期間
から命令320のD1期間に渡す。
【0102】図17は、図15に示すプログラムを実行
するときの実施の形態2のマイクロプロセッサの動作を
説明するためのブロック図である。図において、汎用レ
ジスタ5、メモリアクセスユニット3、MUデコーダ
8、データRAM7は、図1に示したものと同一の構成
要素からなる。また、条件実行制御部260は、図12
に示したものと同じ構成要素からなる。
【0103】図17に示す命令実行ユニットとしてのメ
モリアクセスユニット3において、360はインクリメ
ンタ370から得られる出力をD2期間内に取り込み、
取り込んだデータをE1レジスタ361へ出力するD2
レジスタである。361はD2レジスタ360から出力
されたデータをE1期間内に取り込み、取り込んだデー
タをE2レジスタ362に出力するとともに、レジスタ
出力制御部382から出力される制御信号に従って、バ
イパス経路B1を介してS1バスへ出力するE1レジス
タである。
【0104】363は加算器371からの出力データを
D2期間内に取り込み、取り込んだデータをM1レジス
タ364へ出力するD2レジスタである。364はD2
レジスタ363の出力をE1期間内に取り込み、取り込
んだデータをOAバスに出力するM1レジスタである。
365はE2バスに出力されたデータをW1期間内に取
り込み、取り込んだデータをW1バスに出力するととも
に、レジスタ出力制御部382から出力される制御信号
に従って、バイパス経路S2を介してS1バスへ出力す
るW1レジスタである。
【0105】370はS1バスに出力されたデータに8
を加算した値を出力するインクリメンタである。371
はS1バスおよび、S2バスに出力されたデータを入力
し、それらの加算結果をD2レジスタ363に出力する
加算器である。MUデコーダ8において、380はバイ
パス制御を行うバイパス制御部である。
【0106】バイパス制御部380において、381は
命令を実行するパイプライン間でデータ干渉が発生して
いるか否かを判定し、さらにデータ干渉が発生している
場合はどのように起こっているかを判定し、判定結果を
レジスタ出力制御部382へ出力するバイパス判定部で
ある。382はバイパス判定部381の判定結果および
条件実行判定部261の判定結果に従って、バイパス経
路B1を介したE1レジスタ361のデータ転送、バイ
パス経路B2を介したW1レジスタ365のデータ転
送、およびデータ経路D1を介した汎用レジスタ5によ
るS1バスへのデータ転送を制御する制御信号を、これ
らのE1レジスタ361、W1レジスタ365および汎
用レジスタ5へ出力するレジスタ出力制御部である。
【0107】次に動作について説明する。先ず、図15
に示すプログラムを実施の形態2のマイクロプロセッサ
が実行したときの動作について説明する。命令300に
おいて、汎用レジスタ5内のレジスタR2、R3のデー
タは、それぞれS1バス、S2バスを介して加算器37
1に出力されるとともに、レジスタR2のデータは、S
1バスを介してインクリメンタ370にも出力される。
加算器371から出力される加算結果は、D2レジスタ
363、M1レジスタ364を経てOAバスへ出力さ
れ、データRAM7のメモリアドレスとして出力され
る。
【0108】一方、インクリメンタ370では、汎用レ
ジスタ5内のレジスタR2の値に8が加算され、その加
算結果がD2レジスタ360を経てE1レジスタ361
に出力される。E1レジスタ361に取り込まれたデー
タは、E2レジスタ362に取り込まれ、E2バスを介
してW1レジスタに出力される。W1レジスタに取り込
まれたデータは、W1バスを介して汎用レジスタ5内へ
出力されレジスタR2の値が更新される。
【0109】図15に示す命令310では、バイパス判
定部381は、命令310のレジスタR2が命令300
とデータ干渉を起こしていると判定し、判定結果をレジ
スタ出力制御部382に出力する。レジスタ出力制御部
382では、バイパス判定部381の判定結果に従っ
て、命令300のレジスタR2の加算結果を保持してい
るE1レジスタにS1バスへの出力を許可することを意
味する制御信号を出力し、W1レジスタ365および汎
用レジスタ5に対してS1バスへの出力を許可しないこ
とを意味する制御信号を出力する。
【0110】バイパス経路B1を介してS1バスへ出力
されたE1レジスタ361からのデータは、加算器37
1へ入力されると同時に、インクリメンタ370内へ入
力される。加算器371の加算結果は、D2レジスタ3
63、M1レジスタ364を経てOAバスに出力され、
データRAM7に対するメモリアドレスとして出力され
る。また、インクリメンタ370での加算結果は、D2
レジスタ360を経てE1レジスタ361に取り込まれ
る。E1レジスタ361に取り込まれたデータは、E2
レジスタ362内へ取り込まれ、E2バスを介してW1
レジスタ365へ出力される。W1レジスタ365に取
り込まれたデータは、W1バスを介して汎用レジスタ5
へ出力される。
【0111】実行条件フィールド270はCC=001
の値を持ち、条件実行判定部261は、実行コントロー
ルフラグ271のF0フラグが1のとき命令310は有
効であると判定し、F0フラグが0のとき命令310は
無効であると判定し、判定結果を汎用レジスタ書き込み
制御部262へ出力する同時に、レジスタ出力制御部3
82へ出力する。命令310が有効のときは、汎用レジ
スタ書き込み制御部262は、書き込みを許可すること
を指示する制御信号を汎用レジスタ5へ出力し、これに
より汎用レジスタ5は、W1バスに出力されたR2の更
新結果を書き込む。
【0112】命令310が無効のときは、汎用レジスタ
書き込み制御部262は、書き込みを許可しないことを
指示する制御信号を汎用レジスタ5に対して出力し、こ
れにより汎用レジスタ5は、W1バスに出力されたレジ
スタR2の更新結果の書き込みを実行しない。
【0113】命令320では、バイパス判定部381
は、命令320のレジスタR2が命令300および命令
310とデータ干渉を起こしていると判定し、判定結果
をレジスタ出力制御部382へ出力する。レジスタ出力
制御部382は、条件実行判定部261から出力された
命令310に対する判定結果に従って、命令310が有
効のときには、命令310のレジスタR2の加算結果を
保持しているE1レジスタ361に対し、バイパス経路
B1を介したS1バスへのデータ転送を許可することを
指示する制御信号を出力し、命令300のレジスタR2
の加算結果を保持しているW1レジスタ365および、
汎用レジスタ5に対しては、それぞれバイパス経路B
2、データ経路D1を介したS1バスへの出力を許可し
ないことを指示する制御信号を出力する。
【0114】命令310が無効のときには、レジスタ出
力制御部382は、命令310のレジスタR2の加算結
果を保持しているE1レジスタ361および汎用レジス
タ5に対し、それぞれバイパス経路B1、データ経路D
1を介したS1バスへのデータ転送を許可しないことを
指示する制御信号を出力し、さらに命令300のレジス
タR2への加算結果を保持しているW1レジスタ365
に対し、バイパス経路B2を介したS1バスへデータ転
送を許可することを指示する制御信号を出力する。
【0115】インクリメンタ370および加算器371
は、命令310が有効のとき、E1レジスタ361から
出力されたデータをS1バスを介して入力する。一方、
命令310が無効のときには、W1レジスタ365から
出力されたデータをS1バスを介して入力する。加算器
371の加算結果は、D2レジスタ363、M1レジス
タ364を経てOAバスへ出力され、データRAM7の
メモリアドレスとしてデータRAM7に出力される。
【0116】インクリメンタ370の加算結果は、D2
レジスタ360を経てE1レジスタ361へ出力され
る。E1レジスタ361に取り込まれたデータは、E2
レジスタ362へ取り込まれ、E2バスを介してW1レ
ジスタに出力される。W1レジスタに取り込まれたデー
タは、W1バスを介して汎用レジスタ5へ出力される。
【0117】以上のように、この実施の形態2によれ
ば、命令デコードユニット2内に設けられた条件実行制
御部260内の条件実行判定部261が、データ干渉が
どのように発生しているかを判定するバイパス制御部3
80内のバイパス判定部381の出力を制御し、レジス
タ出力制御部382から出力される制御信号を制御し
て、バイパス経路B1、B2やデータ経路D1を選択し
てデータ転送を実行するように構成したので、条件実行
命令を含む複数の命令のパイプラインにおいてデータ干
渉が発生した場合でも、命令を効率良く実行でき、デー
タ干渉による誤動作を回避できる。
【0118】
【発明の効果】以上のように、請求項1記載の発明によ
れば、命令デコーダ内の条件実行判定部が、汎用フラグ
内に設定された条件データと実行条件フィールド内に設
定された条件とが合致しているか否かを判定し、バイパ
ス制御部が条件実行判定部の判定結果に従って、バイパ
ス経路を使用するか否かを制御するように構成したの
で、条件実行命令の後にバイパス経路を用いる命令が続
いた場合でも、パイプラインのペナルティを課すること
なく効率良く、また誤動作なく命令を実行できる効果が
ある。
【0119】請求項2記載の発明によれば、バイパス制
御部内のバイパス判定部が、命令実行部で実行される命
令のパイプラインでデータ干渉が発生しているか否かを
判定し、レジスタ出力制御部が、バイパス判定部の判定
結果に基づいて、バイパス経路を介した制御レジスタの
データ転送動作を制御し、また、条件実行制御部内の条
件実行判定部が、実行しようとする条件実行命令が有効
であるか無効であるかを判定し、汎用レジスタ書き込み
制御部が条件実行判定部の判定結果に基づいて汎用レジ
スタへのデータの書き込みを制御し、バイパス判定部が
データ干渉の発生を判定した場合であっても、レジスタ
出力制御部は、条件実行判定部から送信される判定結果
に従ってレジスタの動作を停止し、また汎用レジスタ内
のデータを使用するようにレジスタおよび汎用レジスタ
を制御するように構成したので、条件実行命令の後にバ
イパス経路を用いる命令が続いた場合でも、パイプライ
ンのペナルティを課することなく効率良く、また誤動作
なく命令を実行できる効果がある。
【0120】請求項3記載の発明によれば、命令デコー
ダ内の条件実行制御部が、汎用フラグ内に設定された条
件と実行条件フィールド内に設定された条件が合致して
いるか否かを判定し、バイパス制御部が条件実行判定部
の判定に従って、複数のバイパス経路および汎用レジス
タを経由するデータ経路のうちいずれかを介したデータ
転送を制御するように構成したので、条件実行命令の後
にバイパス経路を用いる命令が続いた場合でも、パイプ
ラインのペナルティを課することなく効率良く、また誤
動作なく命令を実行できる効果がある。
【0121】請求項4記載の発明によれば、バイパス制
御部内のバイパス判定部が、命令実行部で実行される命
令のパイプラインでデータ干渉が発生しているか否かを
判定し、レジスタ出力制御部がバイパス判定部の判定結
果に基づいて、バイパス経路を介した制御レジスタのデ
ータ転送動作を制御し、条件実行制御部内の条件実行判
定部が、実行しようとする条件実行命令が有効であるか
無効であるかを判定し、汎用レジスタ書き込み制御部
が、条件実行判定部の判定結果に基づいて汎用レジスタ
へのデータの書き込みを制御し、バイパス判定部がデー
タ干渉の発生を判定した場合であっても、レジスタ出力
制御部が条件実行判定部から送信される判定結果に従っ
て、複数のバイパス経路およびデータ経路のいずれかを
選択して複数のレジスタあるいは複数の汎用レジスタの
いずれかを介したデータ転送を制御するように構成した
ので、条件実行命令の後にバイパス経路を用いる命令が
続いた場合でも、パイプラインのペナルティを課するこ
となく効率良く、また誤動作なく命令を実行できる効果
がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1における条件実行命
令を有するマイクロプロセッサの基本構成を示すブロッ
ク図である。
【図2】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサで用いられる命令フォーマ
ットを示す説明図である。
【図3】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサで用いられる命令フォーマ
ットフィールドを示す説明図である。
【図4】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサで用いられる命令フォーマ
ット内の実行条件フィールドの詳細な内容を示す説明図
である。
【図5】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサで用いられる命令フォーマ
ット内の演算フィールドを示す説明図である。
【図6】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサのレジスタの構成を示す説
明図である。
【図7】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサのレジスタ内のPSWを示
す説明図である。
【図8】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサのパイプライン動作を示す
説明図である。
【図9】 図1に示したこの発明における条件実行命令
を有するマイクロプロセッサのパイプライン動作を示す
説明図である。
【図10】 この発明の一実施の形態におけるマイクロ
プロセッサのデータ干渉が起こる場合のプログラム例で
ある。
【図11】 図10に示すプログラムを実行したときの
パイプラインの動作を示した説明図である。
【図12】 図10に示すプログラムを実行するときの
マイクロプロセッサの動作を説明するためのブロック図
である。
【図13】 条件実行判定部を示すブロック図である。
【図14】 図10に示すプログラム内の命令が、条件
実行命令である場合のデータ干渉の発生を示す説明図で
ある。
【図15】 この発明の実施の形態2におけるマイクロ
プロセッサで実行されるプログラム例を示す説明図であ
る。
【図16】 図15に示すプログラムを実行したときの
パイプラインの動作を示す図である。
【図17】 図15に示すプログラムを実行するときの
実施の形態2のマイクロプロセッサの動作を説明するた
めのブロック図である。
【符号の説明】
2 命令デコードユニット(命令デコーダ)、3 メモ
リアクセスユニット(命令実行部)、5 汎用レジスタ
(複数の汎用レジスタ)、241,242,361,3
65 複数のレジスタ、250,380 バイパス制御
部、251,381 バイパス判定部、252,382
レジスタ出力制御部、260 条件実行制御部、26
1 条件実行判定部、262 汎用レジスタ書き込み制
御部、B0,B1,B2 バイパス経路、D0,D1
データ経路。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 吉田 豊彦 東京都千代田区丸の内二丁目2番3号 三 菱電機株式会社内

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 実行条件フィールドおよび演算フィール
    ドを含む条件実行命令等の各種命令をデコードする命令
    デコーダと、条件が設定される汎用フラグを含む制御レ
    ジスタと、前記命令デコーダの出力に従って命令を実行
    する命令実行部と、前記命令実行部の実行結果を格納す
    る複数の汎用レジスタと、前記命令実行部に設けられ前
    記汎用レジスタを経由することなく、直前に実行された
    命令の演算結果を格納しているレジスタ内の前記演算結
    果をバイパスするためのバイパス経路とを備え、前記命
    令デコーダは、前記汎用フラグ内に設定された条件デー
    タと前記実行条件フィールド内に設定された条件とが合
    致しているか否かを判定する条件実行判定部および前記
    条件実行判定部の判定結果に従って、前記バイパス経路
    を使用するか否かを制御するバイパス制御部とを有する
    ことを特徴とする条件実行命令を有するマイクロプロセ
    ッサ。
  2. 【請求項2】 バイパス制御部は、命令実行部で実行さ
    れる命令のパイプラインでデータ干渉が発生しているか
    否かを判定するバイパス判定部と、前記バイパス判定部
    の判定結果に基づいて、バイパス経路を介した制御レジ
    スタのデータ転送動作を制御するレジスタ出力制御部と
    を有し、条件実行制御部は、実行しようとする条件実行
    命令が有効であるか無効であるかを判定する条件実行判
    定部と、前記条件実行判定部の判定結果に基づいて汎用
    レジスタへのデータの書き込みを制御する汎用レジスタ
    書き込み制御部とを有し、前記バイパス判定部がデータ
    干渉の発生を判定した場合であっても、前記レジスタ出
    力制御部は、前記条件実行判定部から送信される判定結
    果に従って前記レジスタとバイパス経路を経由するデー
    タ転送を停止し、前記汎用レジスタ内のデータを使用す
    るように前記レジスタおよび前記汎用レジスタを制御す
    ることを特徴とする請求項1記載の条件実行命令を有す
    るマイクロプロセッサ。
  3. 【請求項3】 実行条件フィールドおよび演算フィール
    ドを含む条件実行命令等の各種命令をデコードする命令
    デコーダと、条件が設定される汎用フラグを含む制御レ
    ジスタと、前記命令デコーダの出力に従って命令を実行
    する命令実行部と、前記命令実行部の実行結果を格納す
    る複数の汎用レジスタと、前記命令実行部に設けられ、
    前記汎用レジスタを経由することなく、直前に実行され
    た命令の演算結果を格納している複数のレジスタ内の前
    記演算結果をバイパスするための複数のバイパス経路と
    前記汎用レジスタを経由するデータ転送のためのデータ
    経路とを備え、前記命令デコーダは、前記汎用フラグ内
    に設定された条件と前記実行条件フィールド内に設定さ
    れた条件が合致しているか否かを判定する条件実行制御
    部と前記条件実行判定部の判定に従って、前記複数のバ
    イパス経路および前記汎用レジスタを経由する前記デー
    タ経路のうちいずれかを介したデータ転送を制御するバ
    イパス制御部とを有することを特徴とする条件実行命令
    を有するマイクロプロセッサ。
  4. 【請求項4】 バイパス制御部は、命令実行部で実行さ
    れる命令のパイプラインでデータ干渉が発生しているか
    否かを判定するバイパス判定部と、前記バイパス判定部
    の判定結果に基づいて、バイパス経路を介した制御レジ
    スタのデータ転送動作を制御するレジスタ出力制御部と
    を有し、条件実行制御部は、実行しようとする条件実行
    命令が有効であるか無効であるかを判定する条件実行判
    定部と、前記条件実行判定部の判定結果に基づいて汎用
    レジスタへのデータの書き込みを制御する汎用レジスタ
    書き込み制御部とを有し、前記バイパス判定部がデータ
    干渉の発生を判定した場合であっても、前記レジスタ出
    力制御部は、前記条件実行判定部から送信される判定結
    果に従って、前記複数のバイパス経路および前記データ
    経路のいずれかを選択して前記複数のレジスタあるいは
    前記複数の汎用レジスタのいずれかを介したデータ転送
    を制御することを特徴とする請求項3記載の条件実行命
    令を有するマイクロプロセッサ。
JP12452597A 1997-05-14 1997-05-14 条件実行命令を有するマイクロプロセッサ Expired - Fee Related JP3547585B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP12452597A JP3547585B2 (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
JP12452597A JP3547585B2 (ja) 1997-05-14 1997-05-14 条件実行命令を有するマイクロプロセッサ

Publications (2)

Publication Number Publication Date
JPH10320199A true JPH10320199A (ja) 1998-12-04
JP3547585B2 JP3547585B2 (ja) 2004-07-28

Family

ID=14887650

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP3547585B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008537208A (ja) * 2005-03-04 2008-09-11 クゥアルコム・インコーポレイテッド 条件付命令を実行しない時のソース・オペランドの停止待機
JP2009230338A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd プロセサおよび情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008537208A (ja) * 2005-03-04 2008-09-11 クゥアルコム・インコーポレイテッド 条件付命令を実行しない時のソース・オペランドの停止待機
JP2009230338A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd プロセサおよび情報処理装置

Also Published As

Publication number Publication date
JP3547585B2 (ja) 2004-07-28

Similar Documents

Publication Publication Date Title
US6016543A (en) Microprocessor for controlling the conditional execution of instructions
EP0789297B1 (en) Data processor loading data and performing multiply-add operation in parallel
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
JP3881763B2 (ja) データ処理装置
KR100563012B1 (ko) 처리기를보조처리기에인터페이스하는방법및그장치
JP3745039B2 (ja) 遅延命令を有するマイクロプロセッサ
JPH1049368A (ja) 条件実行命令を有するマイクロプロセッサ
JPH03218523A (ja) データプロセッサ
JP2004054585A (ja) データ処理装置
EP0855648A2 (en) Data processing with parallel or sequential execution of program instructions
JPH0496825A (ja) データ・プロセッサ
US5941984A (en) Data processing device
US20020138712A1 (en) Data processing device with instruction translator and memory interface device
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
JPH07120284B2 (ja) データ処理装置
JP2000207210A (ja) マイクロプロセッサ
JP2002229779A (ja) 情報処理装置
JPH10320199A (ja) 条件実行命令を有するマイクロプロセッサ
EP1050800A1 (en) A pipelined execution unit
JPH10320197A (ja) 条件実行命令を備えるマイクロプロセッサ
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JPH0997180A (ja) プログラマブルコントローラ
JP2002123389A (ja) データ処理装置
JP2000347858A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Effective date: 20031224

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040220

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

Effective date: 20040316

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Effective date: 20040414

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: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees