JP2002163104A - マイクロコンピュータ - Google Patents

マイクロコンピュータ

Info

Publication number
JP2002163104A
JP2002163104A JP2000363257A JP2000363257A JP2002163104A JP 2002163104 A JP2002163104 A JP 2002163104A JP 2000363257 A JP2000363257 A JP 2000363257A JP 2000363257 A JP2000363257 A JP 2000363257A JP 2002163104 A JP2002163104 A JP 2002163104A
Authority
JP
Japan
Prior art keywords
instruction
code
data
register
bit
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
JP2000363257A
Other languages
English (en)
Other versions
JP3760093B2 (ja
Inventor
Naomiki Mitsuishi
直幹 三ッ石
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2000363257A priority Critical patent/JP3760093B2/ja
Publication of JP2002163104A publication Critical patent/JP2002163104A/ja
Application granted granted Critical
Publication of JP3760093B2 publication Critical patent/JP3760093B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】マイクロコンピュータのプログラムをC言語の
ような高級言語で記述する場合、アセンブリ言語で記述
する場合よりプログラム容量が大きくなる。既存のCP
Uと互換性を維持しつつ、メモリ上のフラグの設定を容
易にしてプログラム容量を縮小し、高速化を図る。 【解決手段】指定したメモリからデータをリードする命
令コードと、汎用レジスタ上の所定のビットに無条件の
ビット操作を行う命令コードを組み合わせ、後者の汎用
レジスタを指定するフィールドを条件フィールドとし
て、条件付でビット操作を行う命令機能を実現する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はマイクロコンピュー
タ乃至はマイクロコントローラ、またはデータ処理装置
或いは半導体集積回路装置にかかり、特に機器組込み型
の、これらの中央処理装置(CPU)などに利用して有
効な技術に関するものである。
【0002】
【従来の技術】半導体集積回路でなるマイクロコンピュ
ータは、アドレス空間の拡張や、命令セットの拡大、高
速化などが図られてきた。マイクロコンピュータのCP
Uは、ソフトウェアによってその機能を定義されている
から、アドレス空間の拡張や、命令セット拡大、高速化
などを図ったマイクロコンピュータにおいても、既存の
マイクロコンピュータのソフトウェア資産を有効に利用
できることが望ましい。
【0003】このため、オブジェクトレベルで互換性を
保ちつつ、アドレス空間の拡張や、命令セット拡大を実
現した例として、例えば、特開平6−51981号公報
乃至は平成5年6月(株)日立製作所発行『H8/30
0Hシリーズプログラミングマニュアル』などがある。
この中で、いわゆるロードストア型アーキテクチャを採
用することが、命令セットの拡張を図る上で有効である
ことが示されている。
【0004】また、上記CPUのように2ステートで基
本命令を実行していたものの互換性を保ちつつ1ステー
トで基本命令を実行するように高速化し、さらに、CP
Uとは独立した乗算器を内蔵して高速化を図った例とし
て、特開平8−263290号公報或は平成7年3月
(株)日立製作所発行『H8S/2600シリーズH8
S/2000シリーズプログラミングマニュアル』など
がある。
【0005】上記の技術などによって、単位時間のCP
Uまたはマイクロコンピュータの処理能力が向上する。
これにより、マイクロコンピュータの応用システムの制
御処理を高速化でき、マイクロコンピュータによって制
御される機器の高速化や高機能化、高精度化、或は、従
来複数の半導体集積回路(マイクロコンピュータ)で構
成したものを、統合したりすることによる小型化などを
図ることができる。また、特に、割込みに対する応答時
間を短縮することによって、種々の機器を制御する場合
の時間的な精度、いわゆるリアルタイム性を向上するこ
とができる。
【0006】本発明者は、互換性を維持して、ソフトウ
ェア資産を有効に利用できるようにしつつ、また、論理
的物理的規模の増大を最小限にし、かつ消費電力の増大
も最小限にして、機器組み込み型マイクロコンピュータ
として、更に高速処理を可能とすることを検討した。
【0007】本発明者は、先願(特願平11−1518
90)において、以下の提案を行った。
【0008】既存の、メモリ−レジスタ間の転送命令の
単数または複数、レジスタ−レジスタ間の演算命令、の
内、複数の命令コードを組合せ、これを結合させる前置
コードを持って、メモリ上の演算を可能にする。
【0009】即ち、前記前置コードに続いて、メモリ−
レジスタ間命令を実行する場合は、汎用レジスタではな
く、CPU内の、テンポラリレジスタの様な、プログラ
ム上解放されていないラッチ手段とメモリの間でデータ
転送を行なう。
【0010】更に、引き続きレジスタ−レジスタ間の演
算命令を実行する場合は、演算対象の内の単数または複
数のデータを前記ラッチ手段から読み出すようにする。
【0011】演算結果のメモリに格納する命令の場合に
は、前記転送命令で使用したメモリのアドレスは、別の
ラッチ手段(TRA)に格納し、上記演算命令の演算結
果を前記ラッチ手段に格納する。引き続き、メモリ−レ
ジスタ間の転送命令を生成し、前記アドレスを格納した
ラッチ手段の内容をアドレスとして、前記演算結果を格
納したラッチ手段の内容をデータとして、メモリへの書
込みを行なう。
【0012】これによって、メモリ−レジスタ間の転送
命令、レジスタ−レジスタ間の演算命令などの命令コー
ドは既存のものであるから、単独では従来同様に動作
し、既存の命令実行を阻害することがない。また、既存
の命令のみを使用していれば、既存のソフトウェア資産
を有効に利用できる。
【0013】汎用レジスタやロードストアアーキテクチ
ャなどの既存のCPUのメリットを損なうことがない。
【0014】前記前置コードは、アドレッシングモード
や演算の内容によらず共通に使用できるから、追加する
命令コードを最低限にすることができる。また、前置コ
ードに、そのほかのデータサイズなどの情報を持たせる
ことによって、全体的な命令コード長を短縮できる。
【0015】メモリからラッチ手段へのデータ読み込
み、演算、ラッチ手段の内容に基づくメモリへのライト
は既存の命令と、使用するレジスタが相違するのみであ
るから、既存の命令動作を大きく変更することなく、利
用できる。これによって、メモリ上のデータへの演算を
可能にすることによる論理規模の増加を最小限にするこ
とができる。
【0016】メモリ上のデータを演算可能とすることに
よって、直接処理できるデータ量を増加でき、また、汎
用レジスタの待避/復帰などを省くことができ、処理速
度を向上することができる。
【0017】一方、機器制御用のマイクロコンピュータ
において、CPUの処理は、外部入力状態に適合するよ
うに行われる。これは、入出力ポートの状態や、周辺機
能のフラグや、内蔵RAMなどに保持した、処理状態を
示すビットの状態に応じて、プログラムを分岐すること
によってなされる。
【0018】同様に、プログラムの実行に従って、処理
状態などに応じて、前記ビットやフラグをセットした
り、クリアしたりする。
【0019】処理状態に応じるために、条件分岐命令が
用いられる。条件分岐命令は、それ自体、直接的な処理
(転送/演算など)は行わないから、分岐した先での処
理が短い場合にはオーバヘッドが相対的に大きくなって
しまう。
【0020】比較結果乃至演算結果に従って、次の命令
を実行するかしないかを切替えるものも知られている。
しかしながら、この場合は、次の命令しか制御しないか
ら、比較結果乃至演算結果に従って、複数の処理を切替
える場合には対応できない。
【0021】また、マイクロコンピュータのCPUに
は、前記ビットやフラグといったビット単位のデータを
容易に操作できるように、いわゆるビット操作命令を持
っている。ビットデータの状態を検査するビットテスト
(BTST)命令、ビットデータの値を変更するビット
セット(BSET)命令、ビットクリア(BCLR)命
令、ビットノット(BNOT)命令などがあり、更に、
キャリ(C)フラグをビットアキュムレータとして、ビ
ット転送や、ビット演算を行う命令を持つものがある。
【0022】また、マイクロコンピュータのプログラム
を、C言語のような高級言語で記述することが増えてき
ている。高級言語で記述する場合、アセンブリ言語で記
述する場合に比較して、プログラム容量が大きくなりや
すい。
【0023】
【発明が解決しようとする課題】本発明が解決しようと
する課題は、論理的・物理的規模の増大を最小限とし、
既存のCPUと互換性を維持しつつ、メモリ上のフラグ
の設定を容易にすることにある。即ち、プログラム容量
を縮小し、高速化を図ることである。
【0024】また、既存の、メモリ−レジスタ間の転送
を行なう命令コード、レジスタに対する演算命令コード
を組合せ、これを結合させる前置コード(前置命令コー
ド、制御コードともいう)を以ってメモリ上のデータに
対する演算命令を実現する場合などに、命令コード長を
増加させることなく、更に、多様な命令機能を実現する
ことにある。
【0025】CPUの使い勝手の向上、プログラム容量
の縮小、及び処理性能の向上を実現することにある。
【0026】本発明の前記ならびにそのほかの目的と新
規な特長は、本明細書の記述および添付図面か明らかに
なるであろう。
【0027】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば、下
記の通りである。
【0028】第1の発明は、既存の、メモリ−レジスタ
間の転送を行なう命令コード、レジスタに対する演算命
令コードを組合せ、これを結合させる前置コードを以っ
て、新規のメモリ−レジスタ間の演算命令を実現するよ
うにするとともに、単独の命令として実行する場合のレ
ジスタフィールドに、別の修飾情報を定義する。この別
の修飾情報は、当該命令コード又は後続の命令コードを
修飾するようにする。
【0029】前記前置コードに続いて、メモリ−レジス
タ間転送命令を実行する場合は、汎用レジスタではな
く、CPU内の、テンポラリレジスタやデータバッファ
の様な、プログラム上解放されていないラッチ手段とメ
モリの間でデータ転送を行うようにするとき、データを
格納する先は固定的なラッチ手段であり、汎用レジスタ
を指定する必要がないから、メモリ−レジスタ間転送命
令を単独の命令として実行する場合に、データを格納す
る汎用レジスタを指定するフィールド(ビット列)を別
の情報として、当該命令コード乃至後続の命令コードの
動作を変更(修飾)するようにする。当該命令コードを
修飾する場合には、当該命令コードが、結合された命令
の一部である情報(MODS、MODD)を参照して、
前記修飾情報も含めて命令デコードを行うようにする。
後続の命令コードを修飾する場合には、当該命令コード
が、結合された命令の一部である情報(MODS、MO
DD)を参照して、前記修飾情報に基づいた修飾情報
(MODOPT)を出力する。
【0030】更に、前記前置コード及びメモリ−レジス
タ間転送命令に引き続きレジスタ−レジスタ間の演算命
令を実行する場合は、演算対象の内の単数または複数の
データを前記ラッチ手段から読み出すようにし、汎用レ
ジスタ(の番号)を指定するフィールド(ビット)を別
の情報として、当該命令コード乃至後続の命令コードの
動作を変更するようにする。当該命令コードが、結合さ
れた命令の一部である情報(MODS、MODD)を参
照して、前記修飾情報も含めて命令デコードを行うよう
にする。
【0031】第2の発明は、ビットセット(BSE
T)、ビットクリア(BCLR)、ビット転送(BS
T)を条件付きで実行する命令を有するようにする。条
件はコンディションコードレジスタの所要のフラグ
(C、V、Z、N)の状態を設定する。即ち、一般的に
は、条件付ビットセット命令は、 BSET/cc #n1,@aa1 と記述され、例えば、ゼロフラグ(Z)が1のとき、を
条件とする場合(EQ=equal)には、 BSET/EQ #n1,@aa1 と記述され、本命令実行時には、条件が成立している場
合に、デスティネーションのロケーション(アドレスa
a1)の所定のビット(ビットn1)を1にセットす
る。条件が不成立の場合には、デスティネーションのロ
ケーションのデータは保持されるようにする。
【0032】同様に、条件が成立したときのみ所定のビ
ットをクリアする命令は、 BCLR/cc #n1,@aa1 である。また、条件が成立したときに、デスティネーシ
ョンのロケーション(アドレスaa1)の所定のビット
(ビットn1)を1にセットし、不成立のときは0にク
リアする命令は、 BST/cc #n1,@aa1 である。
【0033】かかる命令は、コンディションコードレジ
スタの条件となっているフラグ(C、V、Z、N)に影
響を与えないようにする。
【0034】このため、ビット番号を検知する手段と、
条件の成立/不成立を検知する手段と、前記検知された
ビット番号の所定のビット状態とする手段を有するよう
にする。
【0035】上記条件付きビット操作命令によって、C
言語で記述された以下のプログラム if(temp != xyz) flag &= 0xfd; else flag |= 0x02; は、tempを汎用レジスタR0に保持しているものと
して、 CMP.W #xyz,R0 BST/EQ #1,@flag と記述することができる。不一致のとき、ビット1が0
にクリアされ、一致のとき、ビット1が1にセットされ
る。
【0036】分岐命令を不要とし、より簡単なプログラ
ムとし、プログラム容量の縮小や高速化に寄与できる。
例えば、従来技術によれば、 CMP.W #xyz,R0 BEQ L1 BCLR #1,@flag BRA L2 L1 BSET #1,@flag L2 となる。
【0037】更に、本発明によれば、排他的な条件でな
かったり、セットする条件が異なる場合、即ち、 if(temp != xyz) flag0 &= 0xfd; else flag1 |= 0x02;のように、条件に
よって別のフラグを操作する場合は、 CMP.W #xyz,R0 BCLR/NE #1,@flag0 BSET/EQ #1,@flag1 と記述することができる。BCLR/NE命令によっ
て、フラグに影響を受けない、即ち、CMP.W命令の
実行結果が保持するようにして、この実行結果に従った
BSET/EQ命令を実行可能である。
【0038】コンディションコードのような演算結果を
反映するフラグの条件を参照して、所望のデータのセッ
ト/クリア/保持を選択可能な命令は、動作を規定する
フィールド(オペレーションフィールド)を複数に分割
し、これを命令コードの基本単位上の別のワードで実現
し、かかるワードを、独立して使用可能な別の命令の命
令コード、乃至、別の命令の命令コードの一部と共通に
する。
【0039】かかる命令コードの第1のワードは、テン
ポラリレジスタやデータバッファの様な、プログラム上
解放されていないラッチ手段とメモリの間でデータ転送
を行なう。第2のワードは、前記コンディションコード
の指定した状態に従って、前記データの操作(所望のビ
ットのセット/クリア/保持)を行うようにする。
【0040】上記命令コードの第2のワードは、独立し
て使用可能な別の命令の命令コードとして使用する場合
の、汎用レジスタを指定するフィールド(ビット列)
に、前記条件を指定する情報を定義する。
【0041】当該命令コードが、結合された命令の一部
である情報(MODD)を参照して、前記条件を判定
し、セット/クリア/保持を選択する。
【0042】
【発明の実施の形態】図1に、本発明の適用されたマイ
クロコンピュータのブロック図を示す。マイクロコンピ
ュータは、シングルチップ型であり、全体の制御を司る
CPU、割込コントローラ(INT)、CPUの処理プ
ログラムなどを格納するメモリであるROM、CPUの
作業領域並びにデータの一時記憶用及びスタック用のメ
モリとすることができるRAM、タイマ、シリアルコミ
ュニケーションインタフェース(SCI)、A/D変換
器、第1乃至第9入出力ポート(IOP1〜IOP
9)、クロック発振器(CPG)の機能ブロック乃至は
モジュールから構成され、公知の半導体製造技術により
1つの半導体基板上に形成される。
【0043】かかるマイクロコンピュータは、電源端子
として、グランドレベル(Vss)、電源電圧レベル
(Vcc)、アナロググランドレベル(AVss)、ア
ナログ電源電圧レベル(AVcc)、の他専用制御端子
として、リセット(RES)、スタンバイ(STB
Y)、モード制御(MD0、MD1)、クロック入力
(EXTAL、XTAL)端子を有する。
【0044】CPGの端子EXTAL、XTALに接続
される水晶発振子またはEXTAL端子に入力される外
部クロックに基づいて生成される基準クロック(システ
ムクロック)に同期して、マイクロコンピュータは動作
を行う。この基準クロック1周期をステートと呼ぶ。
【0045】マイクロコンピュータの機能ブロックは、
内部バスによって相互に接続される。バスの制御を行な
うバスコントローラ(不図示)を内蔵している。内部バ
スはアドレスバス・データバスの他、リード信号・ライ
ト信号・バスサイズ信号を含み、これらはバスコマンド
(BCMD)としてコード化される。
【0046】かかる機能ブロックやモジュールは内部バ
スを介して、CPUによってリード/ライトされる。内
部バスのデータバス幅は32ビットとする。内蔵RO
M、RAMリード/ライトを1ステートでリード/ライ
ト可能とする。
【0047】タイマ、SCI、A/D変換器、IOP1
〜IOP9、SYSC、INT、CPGなどが有する制
御レジスタを総称して、内部I/Oレジスタと呼ぶ。こ
れらには、ビット単位で意味を持つビットやフラグが含
まれる。例えば、入出力ポートや、割込み要因フラグな
どがある。また、内蔵RAMなどにも適宜、所定のアド
レスの所定のビットにフラグが割当てられる。これら
は、Cプログラムでは、構造体としてビットフィールド
宣言して取り扱われる。
【0048】各入出力ポートは、アドレスバス、データ
バス、バス制御信号あるいはタイマ、SCI、A/D変
換器の入出力端子と兼用されている。すなわち、タイ
マ、SCI、A/D変換器は、それぞれ入出力信号を有
し、入出力ポートと兼用にされた端子を介して、外部と
入出力されるものである。例えばIOP5、6は、タイ
マの入出力端子と兼用、IOP7はSCIの入出力端子
と兼用にされている。アナログデータの入出力(AIN
0〜AIN7)端子は、IOP8と兼用にされている。
外部割込み入力は、IOP9と兼用にされている。
【0049】かかるマイクロコンピュータにリセット信
号RESが与えられると、CPUを始めとし、マイクロ
コンピュータはリセット状態になる。このリセットが解
除されると、モード制御で指定された動作モード(シン
グルチップ、外部バス拡張、内蔵ROM有効など)とさ
れ、CPUは所定のアドレス(ベクタアドレス)からス
タートアドレスをリードして、このスタートアドレスか
ら命令のリードを開始するリセット例外処理を行う。こ
の後、CPUは逐次、ROMなどから命令をリードし、
解読して、その解読内容に基づいて、フラグやビットの
判定や操作を含む、データの処理或はRAM、タイマ、
SCI、A/D変換器、入出力ポートなどとのデータ転
送を行う。即ち、CPUは、タイマ、SCI、A/D変
換器、入出力ポートなどから入力されるデータ或は機器
の状態や指示(スイッチ、ボリュームなど)を参照しつ
つ、ROMなどに記憶されている命令に基づいて処理を
行い、その結果に基づいて、入出力ポート、タイマなど
を使用しつつ、外部に信号を出力し、機器の制御を行う
ものである。
【0050】割込みコントローラ(INT)は、タイ
マ、SCI、A/D変換器、外部入力の各割込み信号を
入力して、割込み要求信号をCPUに出力する。
【0051】CPUに割込要求信号が与えられると、C
PUは実行中の処理を中断して、割込み例外処理状態を
経て、所定の処理ルーチンに分岐し、所望の処理を行
い、割込要因をクリアしたりする。所定の処理ルーチン
の最後には、通常復帰命令がおかれ、この命令を実行す
ることによって前記中断した処理を再開する。
【0052】割込み例外処理の実行時には、後述のプロ
グラムカウンタ(PC)やコンディションコードレジス
タ(CCR)などがRAMなどに退避され、復帰命令実
行時に上記プログラムカウンタ(PC)やコンディショ
ンコードレジスタ(CCR)などが復帰される。
【0053】図2に、CPUに内蔵されている汎用レジ
スタ及び制御レジスタの構成例(プログラミングモデ
ル)を示す。
【0054】CPUは、32ビット長の汎用レジスタを
8本持っている。汎用レジスタは、すべて同機能を持っ
ており、アドレスレジスタとしてもデータレジスタとし
ても使用することができる。
【0055】データレジスタとしては32ビット、16
ビットおよび8ビットレジスタとして使用きる。アドレ
スレジスタおよび32ビットレジスタとしては、一括し
て汎用レジスタER(ER0〜ER7)として使用す
る。16ビットレジスタとしては、汎用レジスタERを
分割して汎用レジスタE(E0〜E7)、汎用レジスタ
R(R0〜R7)として使用する。これらは同等の機能
を持っており、16ビットジスタを最大16本まで使用
することができる。なお、汎用レジスタE(E0〜E
7)を、特に拡張レジスタと呼ぶ場合がある。8ビット
レジスタとしては、汎用レジスタRを分割して汎用レジ
スタRH(R0H〜R7H)、汎用レジスタRL(R0
L〜R7L)として使用する。これらは同等の機能を持
っており、8ビットレジスタを最大16本まで使用する
ことができる。各レジスタ独立に使用方法を選択するこ
とができる。
【0056】汎用レジスタER7には、汎用レジスタと
しての機能に加えて、スタックポインタ(SP)として
の機能が割り当てられており、例外処理やサブルーチン
分岐などで暗黙的に使用される。例外処理は前記割込み
処理を含む。
【0057】PCは24ビットのカウンタで、CPUが
次に実行する命令のアドレスを示す。特に制限されない
もののCPUの命令は、すべて2バイト(ワード)を単
位としているため、最下位ビットは無効であり、命令リ
ード時には最下位ビットは0とみなされる。
【0058】CCRは8ビットのレジスタで、割込みマ
スクビット(I)とハーフキャリ(H)、ネガティブ
(N)、ゼロ(Z)、オーバフロー(V)、キャリ
(C)の各フラグを含む。ハーフキャリ(H)、ネガテ
ィブ(N)、ゼロ(Z)、オーバフロー(V)、キャリ
(C)の各フラグは転送命令や演算命令実行時に、デー
タを検査して、その状態を反映する。ハーフキャリ
(H)は10進補正用にのみ用いられる。
【0059】EXRは8ビットのレジスタで、割込みな
どの例外処理の制御を行なう。割込みマスクビット(I
2〜I0)とトレース(T)の各ビットを含んでいる。
【0060】汎用レジスタ上のデータ構成例、メモリ空
間上のデータ構成、アドレッシングモードと実効アドレ
スの計算方法などについては、前記平成7年3月(株)
日立製作所発行『H8S/2600シリーズH8S/2
000シリーズプログラミングマニュアル』記載のCP
Uと同様である。
【0061】図3に、実効アドレスの計算方法を示す。
アドレス空間は16Mバイトとして、実行アドレスは2
4ビットが有効である。
【0062】(1)レジスタ間接では命令コード中にレ
ジスタを指定する部分を含み、この命令コードで指定さ
れた汎用レジスタERの内容の合計32ビットをアドレ
スとしてメモリ上のアドレスを指定する。アドレスは2
4ビットでよいため、上位8ビットは無視する。
【0063】(2)(3)ディスプレースメント付レジ
スタ間接は、上記レジスタ間接と同様に得られた32ビ
ットのアドレスに、命令コード中に含まれるディスプレ
ースメントを加算した結果をアドレスとしてメモリ上の
アドレスを指定する。加算結果はアドレスの指定のみに
使用され、汎用レジスタERの内容には反映されない。
特に制限はされないものの、ディスプレースメントは3
2ビットまたは16ビットであり、16ビットディスプ
レースメントは加算する場合には上位16ビットは符号
拡張される。すなわち、ディスプレースメントの上位1
6ビットは16ビットディスプレースメントのビット1
5と同じ値であるとして加算が行われる。この場合、3
2ビットディスプレースメントの上位8ビットは、予約
領域とされ、無視される。
【0064】(4)ポストインクリメントレジスタ間接
は、前記レジスタ間接と同様に得られた24ビットのア
ドレスでメモリ上のアドレスを指定する。その後、この
アドレスに1または2または4を加算し、その加算結果
が汎用レジスタERに格納される。メモリ上のバイトデ
ータを指定する場合1が、ワードデータを指定する場合
2が、ロングワードデータを指定する場合4が、それぞ
れ加算される。加算結果は32ビットで汎用レジスタに
格納される。特に制限はされないものの、ポストインク
リメントレジスタ間接は、メモリからレジスタへの転送
命令に使用する。
【0065】(5)プリデクリメントレジスタ間接は、
前記レジスタ間接と同様に得られた32ビットのアドレ
スから1または2または4を減算した結果の24ビット
のアドレスでメモリ上のアドレスを指定する。その後、
その減算結果が汎用レジスタに格納される。メモリ上の
バイトデータを指定する場合1が、ワードデータを指定
する場合2が、アドレスデータを指定する場合4が、そ
れぞれ減算される。減算結果の上位8ビットも拡張レジ
スタに格納される。特に制限はされないものの、プリデ
クリメントレジスタ間接は、レジスタからメモリへの転
送命令に使用する。本発明では、前置コードに修飾情報
を持ってポストデクリメントレジスタ間接、プリインク
リメントレジスタ間接も実行可能にする。
【0066】(6)(7)(8)絶対アドレスは命令コ
ード中に含まれる、8ビット、16ビットまたは24ビ
ットの絶対アドレスをアドレスとしてメモリ上のアドレ
スを指定する。8ビット絶対アドレスは、上位16ビッ
トが1拡張される。すなわちアドレスのビット23〜8
は全ビット1とされる。従って使用可能なアドレスは
H’FFFF00〜H’FFFFFFの256バイトで
ある。また、16ビット絶対アドレスは、上位8ビット
が符号拡張される。すなわち、16ビット絶対アドレス
のビット15が0であればアドレスのビット23〜16
は全ビット0とされ、ビット15が1であればアドレス
のビット23〜16は全ビット1とされる。従って使用
可能なアドレスはH’000000〜H’007FFF
及びH’FF8000〜H’FFFFFFの64kバイ
トである。
【0067】(9)(10)プログラムカウンタ相対
は、プログラムカウンタの内容の24ビットのアドレス
に命令コード中に含まれるディスプレースメントを加算
した結果をアドレスとしてメモリ上のアドレスを指定す
る。加算結果はプログラムカウンタに格納される。特に
制限はされないものの、ディスプレースメントは16ビ
ットまたは8ビットであり、これらのディスプレースメ
ントは加算する場合には上位8ビットまたは16ビット
は符号拡張される。すなわち、ディスプレースメントの
上位8ビットは16ビットディスプレースメントのビッ
ト15と、または上位16ビットは8ビットディスプレ
ースメントのビット7と同じ値であるとみなして加算が
行われる。プログラムカウンタ相対は分岐命令のみで使
用される。上記の他にイミディエイト、レジスタ直接、
メモリ間接などのアドレッシングモードを実行するが、
詳細な説明は省略する。
【0068】図4に、従来技術のCPUの機械語の命令
フォーマットの一例を示す。CPUの命令は、2バイト
(ワード)を単位にしている。各命令はオペレーション
フィード(op)、レジスタフィールド(r)、EA拡
張部(EA)、およびコンディションフィールド(c
c)を含む。特に制限はされないものの、前記平成7年
3月(株)日立製作所発行『H8S/2600シリーズ
H8S/2000シリーズプログラミングマニュアル』
記載のCPUと同じ命令フォーマットとしている。
【0069】オペレーションフィールド(op)は、命
令の機能を表し、アドレッシングモードの指定オペラン
ドの処理内容を指定する。命令の先頭4ビットを必ず含
む。2つのオペレーションフィールドを持つ場合もあ
る。
【0070】レジスタフィールド(r)は汎用レジスタ
を指定する。レジスタフィールド(r)はアドレスレジ
スタのとき3ビット、データレジスタのとき3ビット
(32ビットレジスタ)または4ビット(8または16
ビットレジスタ)である。2つのレジスタフィールドを
持つ場合、またはレジスタフィールドを持たい場合もあ
る。
【0071】EA拡張部(EA)は、イミディエイトデ
ータ、絶対アドレスまたはディスプレースメンを指定す
る。8ビット、16ビット、または32ビットである。
【0072】コンディションフィールド(cc)は条件
分岐命令(Bcc命令)の分岐条件を指定する。
【0073】図5に、従来技術のCPUのメモリに対す
る転送命令の例の詳細な命令フォーマットを示す。ここ
では、同図(1)にレジスタ間接、(2)にポストインクリメ
ント/プリデクリメントレジスタ間接、(3)に16ビッ
トディスプレースメント付きレジスタ間接、(4)に16
ビット絶対アドレスについて示す。このほかのアドレッ
シングモードも持つが、詳細な説明は省略する。
【0074】レジスタ間接(@ERn)は、命令コードのレ
ジスタフィールド(r1)で指定されるアドレスレジス
タ(ERn)の内容をアドスとしてメモリ上のオペランド
を指定する。
【0075】ディスプレースメント付きレジスタ間接
(@(d:16,ERn))は、命令コードのレジスタフィール
ド(r1)で指定されるアドレスレジスタ(ERn)の内
容に命令コード中に含まれる16ビットディスプレース
メント(d)を加算した内容をアドレスとしてメモリ上
のオペランドを指定する。転送データは別のレジスタフ
ィールド(r2)で指定されるデータレジスタから入出
力される。
【0076】ポストインクリメントレジスタ間接(@ERn
+)は、命令コードのレジスタフィールド(r1)で指
定されるアドレスレジスタ(ERn)の内容をアドレスと
してメモリ上のオペランドを指定する。転送データは別
のレジスタフィールド(r2)で指定されるデータレジ
スタから入出力される。
【0077】プリデクリメントレジスタ間接(@−ERn)
は、命令コードのレジスタフィールドで指定されるアド
レスレジスタ(ERn)の内容から1、2または4を減算し
た内容をアドレスとしてメモリ上のオペランドを指定す
る。転送データは別のレジスタフィールド(r2)で指
定されるデータレジスタから入出力される。
【0078】絶対アドレス(@aa:16)は、命令コード中
に含まれる絶対アドレス(aa)で、メモリ上のオペラ
ンドを指定する。転送データは別のレジスタフィールド
(r2)で指定されるデータレジスタから入出力され
る。いずれも命令コードの第1ワードのビット7でデー
タサイズ、ビット8で転送方向を指定する。図6に、前
置コード(制御コードともいう)のフォーマットを示
す。前置コードは、ソース側、デスティネーション側が
メモリである情報を示すビットを持っている。後述の図
7のEA1とEA2の転送命令コードは同一としている
ため、ソース側がメモリであれば、デスティネーション
側に拘らず、前置コードに続くものが、EA1と判断さ
れる。一方、ソース側が汎用レジスタとされ、デスティ
ネーション側がメモリであれば、EA2と判断される。
そのほか、ロングワードサイズを示す情報を持ってい
る。
【0079】また、EA1、EA2の転送命令コードの
動作を変更させる(修飾する)情報を持っている。例え
ば、ポストインクリメント/プリデクリメントレジスタ
間接が、メモリのリード/ライトの方向によって一義的
に指定されてしまうような場合、即ち、前記のようにポ
ストインクリメントはライト時、プリデクリメントはリ
ード時などと固定されている命令セットの場合、前記修
飾情報によって、リード時にポストインクリメント動作
を行なったり、ライト時にプリデクリメントを行なった
りすることができる。
【0080】なお、命令フォーマット自体は、プログラ
ミングする場合には特に意識することはなく、アセンブ
リ言語やC言語で、プログラムを記述すれば、自動的に
オブジェクトコード(2進コード)を発生する、アセン
ブラやCコンパイラが提供される。
【0081】例えば、汎用レジスタに空きがない状態
で、メモリ上の2つのデータの加算を行なう場合、従来
のロードストア型アーキテクチャでは、 PUSH.W R0 PUSH.W R1 MOV.W @aa1,R0 MOV.W @aa2,R1 ADD.W R1,R0 MOV.W R0,@aa1 POP.W R1 POP.W R0 などと記述する必要があった。本発明によれば、 ADD.W @aa2,@aa1 と記述すればよい。
【0082】図7〜図10に、本発明によるメモリに対
する演算命令の命令フォーマットの組合せを示す。メモ
リに対する演算命令は、制御コード(前述の前置コード
と同じ)とEA1コード、EA2コード、演算コードを
組合せる。EA1、EA2は、図5に示される各アドレ
ッシングモードの転送命令の命令コードと同一にされ
る。演算コードは、汎用レジスタ間の演算命令の命令コ
ードと同一にされる。
【0083】EA1コード、EA2コード、演算コード
の組合せは意味があるものについては任意にできる。即
ち、所望の処理の内容に従って、EA1コード、EA2
コード、演算コードの必要なものを組合せる。
【0084】例えば、インクリメント演算、シフト演算
などは、デスティネーション側データのみしか必要とし
ないから、ソース側データをリードするためのEA1コ
ードは不要である。前置コード、EA2コード、演算コ
ードを組合せる。
【0085】加算命令のような場合、ソース側、デステ
ィネーション側の、メモリを使用する方のみを組合せれ
ばよい。ソース側のみをメモリ上のデータとする場合
(例えば、ADD.W @ER1,R0)は、前置コード、EA1コ
ード(MOV.W @ER1,Rxと同一。Rxは意味を持たないので
必要に応じて修飾情報とする)、演算コード(ADD.W R
x,R0と同一)を組合せる。デスティネーション側のみを
メモリ上のデータとする場合は(ADD.W R1,@ER0)、前
置コード、EA2コード、演算コードを組合せる。ソー
ス側、デスティネーション側の両方をメモリ上のデータ
とする場合(ADD.W@ER1,@ER0)は、前置コード、EA
1、EA2コード、演算コードを組合せる。なお、ソー
ス側、デスティネーション側の両方を汎用レジスタ上の
データとする場合(ADD.W R1,R0)は、既存の命令であ
り、演算コードのみでよい(前置コードは不要であ
る)。
【0086】イミディエイトデータとメモリ上のデータ
との演算(例えば、ADD.W #xx,@ER1)も、同様である
が、イミディエイトデータはソース側とされるから、E
A1コードは必要なく、また、演算コードとして、レジ
スタ間演算の代わりに、イミディエイト−レジスタ間の
演算コード(ADD.W #xx,Rxと同一)を用いる。
【0087】メモリ間の転送命令(例えば、MOV.W @ER
1,@aa:16)は、上記メモリ間の演算同様に、前置コー
ド、EA1コード、EA2コード、及びレジスタ間の転
送命令コードを組合せてもよいが、本実施例では、前置
コード、EA1コード(MOV.W@ER1,Rxと同一)、EA2
コード(MOV.W Rx,@aa:16と同一)を組合せる。演算コ
ードは不要とし、EA1コードの転送方向はリード方
向、EA2コードの転送方向はライト方向とする。これ
によって、命令コード長を短縮(演算コード分)し、実
行ステート数(演算コードのリード、デスティネーショ
ン側データのリード)も短縮できる。
【0088】イミディエイトデータのメモリへの転送
(例えば、 MOV.W #xx,@ER1)は、上記イミディエイト
データとメモリ上のデータとの演算同様に、前置コー
ド、EA2コード、演算コードを組合せてもよいが、本
実施例では、前置コード、イミディエイト−レジスタ間
の転送命令コード(MOV.W #xx,Rxと同一)、EA2コー
ド(MOV.W Rx,@aa:16と同一)を組合せる。これによっ
て、実行ステート数(デスティネーション側データのリ
ード)も短縮できる。
【0089】本発明においては、使用しないレジスタフ
ィールド(r)は、適宜修飾情報とする。例えば、演算
命令として、キャリ付き加算(ADDX)命令がサポー
トされていなかったり、バイトサイズのみだったりする
場合にも、メモリ上のデータに対するロングワードサイ
ズのキャリ付き加算命令を実現することができる。例え
ば、ソース側、デスティネーション側の両方をメモリ上
のデータとする、ロングワードサイズのキャリ付き加算
命令を実現する場合、組み込む演算命令コードを、ロン
グワード加算(ADD)命令として、先行する転送命令
コード(EA2)の使用しないレジスタ指定フィールド
(r)の、例えば、ビット0を1とすることにより、加
算命令をキャリ付きに修飾することができる。
【0090】演算命令コードの使用しないレジスタ指定
フィールドは、ソース側/デスティネーション側の一方
または両方で、変わるのに対して、先行する転送命令コ
ードは、使用しないレジスタ指定フィールドが固定され
ており、修飾情報に使用しやすい。
【0091】図6の通り、前置コードは、後続する転送
命令コードを修飾することができる。転送命令コードは
後続する転送命令コード、演算命令コードを修飾するこ
とができる。前置コードにビットの余裕がない場合で
も、転送命令コード、演算命令コードのレジスタフィー
ルドを利用することによって、必要な修飾を行うことが
できる。
【0092】図11に、メモリ上のデータに対するキャ
リ付加算命令の例を示す。転送命令コードの使用しない
レジスタ指定フィールドを修飾情報フィールド(mod
opt)としている。前記命令コード、MOV.W @ERm+,Rx
命令2個(EA1、EA2)、ADD.L ERy,ERz命令(e
xe)を組合わせる。データサイズは前置コードで指示
され、EA1、EA2のデータサイズはロングワードに
変更される。また、EA2の修飾情報フィールド(mo
dopt)によって、後続のADD.L命令がADDX.L命令に
変更される。
【0093】これによって、MOV.L @ERm-,Rn命令、ADD
X.L ERm,ERn命令がサポートされていなくても、前置コ
ード、転送命令コード(EA2)に修飾情報を持つこと
によって、ADDX.L @ERm-,@ERn-命令を実現可能にでき
る。例えば、 ADD.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- ADDX.L @ER0-,@ER1- などとして、メモリ上に配置された多バイト長(上記で
は32バイト)のデータの加算命令を効率的に実行可能
である。
【0094】多バイト長のデータは限られた本数の汎用
レジスタ上に配置することが困難であるから、上記メモ
リに対する連続的な操作を可能にすることで、逐次的
な、メモリ−レジスタ間の転送命令を不要にし、使い勝
手を向上し、高速化とプログラム容量の縮小を図ること
ができる。
【0095】演算命令コードの使用しないレジスタ指定
フィールドは適宜利用可能である。例えば、後述のよう
に、条件付の演算としてもよい。
【0096】図12に、本発明の条件付ビットセット/
クリア/転送命令(BST/cc、BSET/cc、B
CLR/cc)の説明図を示す。
【0097】BST/cc命令は、 BST/cc #n,<EA> のアセンブラフォーマットを持つ。デスティネーション
データは、メモリであって、<EA>で指定する。図3
の所定のアドレッシングモードが使用可能である。指定
ビットは、そのビット番号をnで指定する。ccで指定
した条件が成立した場合、指定ビットに1がセットさ
れ、不成立の場合、指定ビットは0にクリアされる。
【0098】BSET/cc命令は、 BSET/cc #n,<EA> のアセンブラフォーマットを持つ。前記同様に、ccで
指定した条件が成立した場合、指定ビットに1がセット
され、不成立の場合、元のデータが保持される。
【0099】BCLR/cc命令は、 BCLR/cc #n,<EA> のアセンブラフォーマットを持つ。前記同様に、ccで
指定した条件が成立した場合、指定ビットは0にクリア
され、不成立の場合、元のデータが保持される。
【0100】図13に、無条件/条件付ビットセット/
クリア/転送命令の命令フォーマットを示す。アドレッ
シングモードについては、特に制限はされないものの、
レジスタ直接と、絶対アドレス8ビット/16ビット/
32ビット、レジスタ間接の場合のみを示す。
【0101】レジスタ直接の場合は、1ワードの命令コ
ードで、各命令の機能を示すオペレーションフィールド
(op)と、ビット番号を指定するビットフィールド
(n)3ビットと、汎用レジスタを指定するレジスタフ
ィールド(r)4ビットを有する。無条件ビットセット
/クリア/転送命令の場合は、データ転送を行う命令コ
ードと前記レジスタ直接のビットセット/クリア/転送
命令の命令コードを組合わせる。レジスタフィールドは
使用しない。条件付ビットセット/クリア/転送命令の
場合は、前記同様にした上で、レジスタフィールドに相
当する部分を、条件を指定するコンディションフィール
ド(cc)4ビット、とする。
【0102】コンディションフィールド(cc)は、例
えば以下の表1に示す通りとすることができる。なお、
コンディションフィールド(cc)に相当するフィール
ドが0の場合は、無条件のビット操作命令とされ、既存
の命令コード(無条件ビットセット/クリア/転送命令
の命令コード)の上位互換とされる。
【0103】
【表1】 絶対アドレス8ビットの場合は、2ワードの命令コード
で、第1ワードに、オペレーションフィールド(op)
とEA拡張部である絶対アドレス(EA)を持ち、第2
ワードに、前記レジスタ直接同様にオペレーションフィ
ールド(op)と、ビット番号を指定するビットフィー
ルド(n)3ビットを有する。
【0104】即ち、本実施例においては、無条件ビット
セット/クリア/転送命令のレジスタ直接の命令コード
が、絶対アドレス8ビット/16ビット/32ビット、
レジスタ間接の命令コードの最後のワードと共通にして
いる。
【0105】第2ワードを、前記レジスタ直接の命令コ
ードと共通化する場合、データの所在を示すレジスタフ
ィールド(r)4ビットが不要になるので、この部分を
コンディションフィールド(cc)として、命令コード
のビットの有効利用を図ると共に、データをリードする
命令コードを、各ビット操作命令と共通化して、論理の
簡略化を図ることができる。
【0106】前記同様に、前置コードと転送命令コード
と、演算命令としてビット操作命令を組合わせてもよ
い。
【0107】図14に、CPUの構成例を示す。CPU
は、制御部と実行部から構成される。制御部は、命令レ
ジスタIR、命令変更部CH、命令デコーダDEC、レ
ジスタセレクタRSEL、割込み制御部INTを含む。
【0108】命令デコーダDECは、例えばマイクロR
OM或はPLA(Programmable Logic Array)または布
線論理で構成され、入力された命令コード(opcod
e)を解読して、所要の制御信号を発生する。制御信号
はそのタイミングに応じて、後述のControlA、
B、Cが存在する。命令デコーダDECの出力の一部が
命令デコーダDECにフィードバックされている。これ
は各命令コード内の遷移に用いるステージコード(TM
G)と、命令コード間に用いる制御信号(MODS、M
ODD、MODEA1、MODEA2、MODOPT)
を含む。即ち、前置コードは制御信号を発生し、EA1
コード、EA2コードは、前記制御信号を参照しつつ動
作し、更に制御信号を発生したりする。演算コードも制
御信号を参照して、データの入出力元/先を切替え、演
算処理を行なう。また、制御信号に従って、演算動作も
変更される。また、制御信号に従って内部で命令コード
を発生する。
【0109】命令デコーダDECの一部を概念的に図示
している。前置コード(pf)は、制御信号(mod:
MODS、MODD、MODEA1、MODEA2の
生成信号を含む)、割込みマスク信号(mskint)
を出力する。そのほかの動作はNOP(無操作)命令な
どと同じでよい。
【0110】転送命令コード(mov、例えば、mov
_1/2、bst_1)は、制御信号(mod: MO
DOPTの生成信号を含む)、割込みマスク信号(ms
kint)、汎用レジスタリード/ライト信号(Rdr
/w)、テンポラリレジスタリード/ライト信号(TR
Ar/w、TRDr/w)を出力する。これらの信号
が、制御信号(MODS、MODD)によって相違され
る。例えば、MODS=1のときはテンポラリレジスタ
ライト信号(TRDwr)が、 MODS=0のときは
汎用レジスタライト信号(Rdwr)が、それぞれ選択
される。
【0111】演算命令コード(exe、例えばadd、
bst−0など)は、割込みマスク信号(mskin
t)、ソース汎用レジスタリード信号(Rsrd)、デ
スティネーション汎用レジスタリード/ライト信号(R
dr/w)、リードデータバッファリード信号(DBR
rd)、テンポラリレジスタリード信号(TRDr
d)、ライトデータバッファライト信号(DBWw
r)、条件判定信号(check_ccr)、ALU制
御信号(alu_cnt)を出力する。これらの信号
は、その演算内容に従って所定のものが出力される。更
にこれらの出力は、制御信号(MODS、MODD)に
よって相違される。例えば、BST命令の場合ソース汎
用レジスタリード信号(Rsrd)とテンポラリレジス
タリード信号(TRDrd)は出力されない。また、M
ODD信号に従って、デスティネーション汎用レジスタ
リード信号(Rdrd)とリードデータバッファリード
信号(DBRrd)、デスティネーション汎用レジスタ
ライト信号(Rdwr)とライトデータバッファライト
信号(DBWwr)、がそれぞれ排他的に選択され、汎
用レジスタを使用するかラッチ手段を使用するかを選択
する。また、デスティネーション側メモリの場合は、内
部でライト型転送命令と同等の動作を行なう命令コード
を発生させる信号(mkmov)を出力する。MODD
=1で、条件付ビットセット/クリア/転送命令のとき
は、条件判定信号(check_ccr)が出力され
る。MODS=1またはMODD=1で、かつMODO
PT=1であり、加算命令のときは、ALU制御信号
(alu_cnt)が相違され、加算はキャリ付で行わ
れる。
【0112】命令レジスタIRは、リードした命令を一
旦格納する。実行すべき命令は、命令デコーダに出力さ
れる。
【0113】命令変更部CHは、リードした命令以外の
命令コードを、命令デコーダに与える場合に動作し、そ
のほかの場合は、命令レジスタIRの内容を命令デコー
ダDECに与える。リードした命令以外の命令コード
は、割込み制御部INTの指示によって、割込みなどの
例外処理を実行するとき、及び、命令デコーダDECの
指示(mkmov)によって、前記内部でライト型転送
命令と同等の動作を行なう命令コード乃至無操作命令コ
ードを発生させるとき、などに用いる。
【0114】割込み制御部INTは、図1の割込みコン
トローラの出力する割込み要求信号を受け付ける。ま
た、命令デコーダの出力する割込みマスク信号(msk
int)を参照して、割込みがマスクされていなけれ
ば、命令変更部CHに割込みを指示する。
【0115】前記の通り、複数の命令コード(オペレー
ションフィールドを持つワード)を一連のものとして実
行する場合には、それぞれの命令コードが割込みマスク
を指示して、所定の組合せの命令コードの実行が途切れ
ないようにする。
【0116】レジスタセレクタRSELは、命令デコー
ダの指示と、命令コード中に含まれるレジスタフィール
ドの情報と命令デコーダの出力(Rdr/wなど)に基
づいて、汎用レジスタを選択する。
【0117】実行部EXECには、汎用レジスタ、プロ
グラムカウンタ、コンディションコードレジスタ、テン
ポラリレジスタTRA、TRD、算術論理演算器AL
U、分岐アドレス演算器AU、インクリメンタINC、
リードデータバッファDBR、ライトデータバッファD
BW、アドレスバッファABを含む。これらのブロック
はGBバス、DBバス、WBバスによって相互に接続さ
れている。
【0118】図2に示される汎用レジスタ、プログラム
カウンタ、コンディションコードレジスタ以外は、プロ
グラミング上は参照できず、マイクロコンピュータ内部
の動作にのみ用いられる。即ち、リードデータバッファ
DBR、ライトデータバッファDBW、アドレスバッフ
ァABなどは、内部バスIAB、IDBとのインタフェ
ースをとるために、一時的にデータをラッチする。テン
ポラリレジスタTRA、TRDは、マイクロコンピュー
タ内部の動作に適宜用いられる。
【0119】リードデータバッファDBRは、ROM、
RAM、内部I/Oレジスタ、或は図示はされない外部
メモリから、リードした命令コードやデータを一時的に
格納する。ライトデータバッファDBWはROM、RA
M、内部I/Oレジスタ、或は外部メモリへのライトデ
ータを一時的に格納する。アドレスバッファABは、C
PUがリード/ライトするアドレスを一時的に格納す
る。
【0120】算術論理演算器ALUは、命令によって指
定される各種の演算や実効アドレスの計算などに用い
る。インクリメンタINCは、PCのインクリメントと
アドレスレジスタのインクリメント/デクリメントに用
いられる。
【0121】メモリに対する演算を行なう場合には、T
RA、TRD、DBR、DBWなどを用いる。テンポラ
リレジスタTRAは、デスティネーション側データがメ
モリになる演算命令の場合に、デスティネーションアド
レスのリード時にリードアドレスを格納し、データのデ
スティネーション側メモリへのライト時に、デスティネ
ーションアドレス(リードアドレスと同じアドレス)を
出力する。テンポラリレジスタTRDは、ソース側デー
タがメモリになる演算命令の場合などに、ソース側デー
タを一時格納し、演算命令コードの実行時にソース側デ
ータを出力する。
【0122】リードデータバッファDBRは、更に、デ
スティネーション側データがメモリになる演算命令の場
合に、デスティネーション側データを一時格納し、演算
コードの実行時にソース側データを出力する。ライトデ
ータバッファDBWは、デスティネーション側データが
メモリになる演算命令の場合に、演算結果を一時格納
し、データのデスティネーション側メモリへのライト時
に、ライトデータを出力する。
【0123】これらの、TRA、TRD、DBR、DB
Wは適宜他の場合にも動作も行なうが、詳細な説明は省
略する。
【0124】図15に、ALUのビット操作命令に関係
する部分のブロック図を示す。そのほかのALUの機能
については図示を省略する。ALUは、条件判定回路、
デコーダ、セレクタ、入力セレクタ1、入力セレクタ
2、論理演算回路、出力セレクタを含む。これらは、a
lu_cntおよび図示はされない制御信号によって制
御される。デコーダは、命令コードに含まれるビット番
号を示す情報(bn)を入力して、指定されたビットの
み1とし、そのほかのビットを0としたパターンを生成
する。
【0125】条件判定回路は、命令コードに含まれる条
件フィールド(cc)とコンディションコードレジスタ
(CCR)の所定のビット(C、V、Z、N)を入力し
て、条件を判定する。即ち、ハードウェア記述言語によ
って表現すると、assign文で、 chk_cc= (cc==4'h2)&((C|Z)==1'b0) |(cc==4'h3)&((C|Z)==1'b1) |(cc==4'h4)&( C ==1'b0) |(cc==4'h5)&( C ==1'b1) |(cc==4'h6)&( Z ==1'b0) |(cc==4'h7)&( Z ==1'b1) |(cc==4'h8)&( V ==1'b0) |(cc==4'h9)&( V ==1'b1) |(cc==4'hA)&( N ==1'b0) |(cc==4'hB)&( N ==1'b1) |(cc==4'hC)&((N^V)==1'b0) |(cc==4'hD)&((N^V)==1'b1) |(cc==4'hE)&((Z|(N^V))==1'b0) |(cc==4'hF)&((Z|(N^V))==1'b1);とすればよい。
「4’h2」は4ビットの16進数の「2」を示す。
「cc==4’h2」は条件フィールド(cc)が2の
ときに1となる。「&」は論理積、「|」は論理和、
「^」は排他的論理和である。また、後述の「 ̄」は論
理反転である。
【0126】セレクタは、キャリフラグ(C)と命令コ
ードを入力し、挿入すべきビットデータを選択する。即
ち、 ここで、「_a」は無条件、「_cc」は条件付を示
し、ex(bset_a/cc、bclr_a/cc、
bst_a/cc)は前記ALU制御信号(alu_cn
tに含まれる)。例えば、 と表現できる。
【0127】入力セレクタ1は、内部バスGBとデコー
ダ出力を入力する。入力セレクタ2は、セレクタの出力
するビットデータ(bacc)及びデコーダ出力(de
cout)を入力する。論理演算回路は、入力セレクタ
1、2の出力に対して、所定の論理演算を行なう。
【0128】出力セレクタは、論理演算回路の出力と、
条件判定回路と命令コードを入力して、内部バスWB、
DBへの出力を行なう。即ち、 alu_out= ((ex==bset_cc)&(chk_cc==1'b0) |(ex==bclr_cc) &(chk_cc==1'b0))? gb : log_out; BSET/cc及びBCLR/cc命令(ex==bs
et_ccまたはex==bclr_cc)で、条件不
成立(chk_cc==1’b0)の場合は、gbが選
択され、元のデータが出力される。そのほかの場合は、
論理演算回路の出力(log_out)が選択される。
BST、BSET、BCLR命令は条件あり/なしに拘
らず、ALUの入力セレクタ1、2を、下記のようにす
る。 aluin1[7:0]= data[7:0]&  ̄decout[7:0]; al
uin2[7:0]= bacc& decout[7:0]; ALUには論理積を指示することによって、指定された
ビットはビットアキュムレータ、そのほかのビットは入
力データとされて、ビットの挿入が行われる。出力セレ
クタは、ALUの結果を出力するようにする。即ち、各
ビットは aluout = decout? bacc: data; と表現される。
【0129】ALUの出力は、WBを介して汎用レジス
タに格納したり、DBとライトデータバッファDBWな
どを介して、所定のメモリにライト可能である。条件付
ビットセット/クリア/転送命令の場合は、DBに出力
され、ライトデータバッファDBWなどを介して、所定
のメモリにライトされる。
【0130】以下に、本発明の命令の実行タイミングの
例を示す。特に制限はされないものの、内部データバス
は32ビットであって、内蔵ROM、RAMリード/ラ
イトを1ステートでリード/ライト可能とする。内蔵R
OM、RAMは、IABをアドレスバスとし、IDBを
データバスとする。後述のPAB、PDBは接続されて
いないが、同様のタイミングを内部で生成している。
【0131】図16に、メモリ−メモリ型の加算命令
(ADDX.L @ERm−、@ERn−)の実行タイ
ミングを示す。前置コード(pf)、 MOV.W @E
Rm+,Rx、 MOV.W @ERn+,Rxに相当す
る命令コード(mov1、mov2)、ADD.L E
Ry,ERzに相当する命令コード(add)を組合せ
て定義される。前置コードは、図7〜図10に従い、
H’014Fとされ、MODS,MODD信号によっ
て、ソース側、デスティネーション側がいずれもメモリ
であることを指示する。
【0132】T0のC2(φ#同期。#は反転論理を示
す)で、CPUのアドレスバッファ(AB)からアドレ
スがIABに出力される。T1のC1(φ同期)で、I
ABの内容がPABに出力され、リードサイクルが開始
される。C2でリードデータが内部データバスに得ら
れ、これをT2のC1でIRにラッチする。これは、メ
モリ−メモリ演算命令の第1のワード(pf)である。
引き続き、T2のC2で次のアドレス(+2された内
容)がIABに出力され、このリードデータがT3のC
1でIRにラッチされる(転送命令コード(mov−
1))。以上の動作は以前の命令の実行の制御によって
行われ、相対的な関係が異なる場合もある。
【0133】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、T2のC1で命令コ
ードの第1ワード(pf)がDECに入力されて、命令
の内容が解読される。かかる前置コードの場合には、ソ
ース、デスティネーション側データがメモリ上に存在す
ること、EA1及びEA2動作変更、ロングワードサイ
ズを指示する。即ち、制御信号CとしてMODS、MO
DD、MODEA1、MODEA2、LONG信号を1
にセットし、DECにフィードバックする。
【0134】T2のC1で命令コードの第2ワード(m
ov−1)がDECに入力される。これは、前記EA1
コードに相当する。この転送命令コード(mov−1)
は、前置コードによるソース側をメモリとする指示(M
ODS)とEA1の動作を変更する指示(MODEA
1)とともに解読される。解読結果に従って、T3のC
2から、アドレス出力とバスコマンド出力を行い、メモ
リのリードが実行される。前置コードによるソース側を
メモリとする指示(MODS)に基づき、生成した実効
アドレス(ea1:アドレスレジスタERmの内容)を
テンポラリレジスタTRAに格納する。また、アドレス
レジスタの内容は、EA1の動作を変更する指示(MO
DEA1)に基づき、T3のC2から、インクリメンタ
(INC)でデクリメント(−4)され、その結果(e
a1’)はT4のC1でアドレスレジスタERmに格納
される(MODEA1=0であれば、デクリメントが行
われる)。
【0135】また、T5のC1で、リードデータ(da
ta1)をリードデータバッファDBRを経由して、G
Bに出力する。ALUを経由してWBに出力され、T5
のC2でテンポラリレジスタTRDに格納される。MO
DS、MODD、MODEA1、MODEA2、LON
G信号を継続する。
【0136】転送命令コード(mov−21)は、前置
コードによるデスティネーション側をメモリとする指示
(MODD)とEA2の動作を変更する指示(MODE
A2)とともに解読される。解読結果に従って、T5の
C2から、メモリのリードを行ない、前置コードによる
デスティネーション側をメモリとする指示(MODD)
に基づき、生成した実効アドレス(ea2:アドレスレ
ジスタERn)をテンポラリレジスタTRAに格納す
る。また、アドレスレジスタの内容は、EA2の動作を
変更する指示(MODEA2)に基づき、T5のC2か
ら、インクリメンタ(INC)でデクリメント(−4)
され、その結果(ea2’)はT6のC1でアドレスレ
ジスタERnに格納される。
【0137】また、T7のC1で、リードデータをリー
ドデータバッファDBRに格納した時点で、既存の転送
命令またはソース側のデータのリードの場合より1ステ
ート早く実行を終了する。MODS、MODD、MOD
EA1、MODEA2、LONG信号を継続するととも
に、MODOPTを発生する。MODOPTは、例え
ば、以下の通り生成される。 modopt = (MODS | MODD) & opcode[0]; 演算命令
コードは、ソース側及びデスティネーション側をメモリ
とする指示(MODS、MODD)に従い、T7のC1
で、デスティネーション側データをリードデータバッフ
ァDBRから、GBに読み出し、ALUに入力する。ソ
ース側データをテンポラリレジスタTRDから、DBに
読み出し、ALUに入力する。演算命令コード(ad
d)と、第2の転送命令コード(mov−21)の出力
した修飾情報(modopt)に基づいて、ALUには
キャリ付の加算が指示される。
【0138】演算時に、ADD命令をADDX命令に変
更する場合は、ALUに入力するキャリビット(ci
n)を変更すればよい。即ち、 cin = (((op==add)& modopt)|(op==addx))? ccr_c: 1'b0; と記述できる。ADD命令の場合(op==add)は
制御信号(modopt)に従って、キャリフラグが入
力されるか、0が入力されるか選択される。なお、AD
DX命令の場合(op==addx)はキャリフラグが
入力される。また、適宜、加算とキャリ付加算の相違点
は必要に応じて、上記同様に制御されて、キャリ付加算
が実行される。
【0139】T7のC2で、演算結果をライトデータバ
ッファDBWに格納する。さらに、メモリライトを行う
命令コード(mov−st)を発生し、T7のC1から
デコーダDECに入力する。発生された命令コード(m
ov−st)は、 テンポラリレジスタTRAをアドレ
スレジスタとし、ライトデータバッファDBWをデータ
レジスタとする転送命令同様の動作を行う。
【0140】コンディションコードレジスタCCRは、
演算命令コード実行時(T7のC2)にキャリ付加算結
果に従って更新(result’)される。その他の命
令コード(pf、EA1、EA2、mov−st)では
CCRを保持する様にして、直前の命令の結果のキャリ
フラグを利用し、また演算結果(result’)を保
持する。
【0141】図17に、条件付ビット転送命令の例(BS
T/cc #n,@ERs)の実行タイミングを示す。また、図1
8に対応する動作フローを示す。動作フローには、制御
信号(ControlA、B、C)の制御内容を示す。
【0142】前記同様に、条件付ビット転送命令の第1
ワード(bst−1)、第2ワード(BST命令コード
(bst−0))がリードされる。T2のC1で命令コ
ード(bst−1)がDECに入力されて、命令の内容
が解読される。解読結果に従って、ステップS1とし
て、制御信号を出力して、各部の制御を行う。レジスタ
間接のアドレッシングモードであるので、このアドレス
レジスタ(ERs)に基づき、データのリードを行い、
リード結果をリードデータバッファ(DBR)に格納す
る。また、制御信号MODD=1とする。これらは個別
の制御信号によって制御される。T2のC2で、アドレ
スレジスタを内部バスGBに読み出して、ABに入力す
る。ABからアドレスIABが出力される。バイトデー
タリードのバスコマンドを出力する。
【0143】T3から、データがリードされる。同時に
ステップS2として、T3のC1で命令コード(bst
−0)がDECに入力され、制御信号MODDとともに
解読され、解読結果に従って、命令のリードと、ビット
転送の演算動作を行う。T3のC2で、PCの内容を内
部バスGBに読み出して、ABとINCに入力する。A
BからアドレスIABが出力される。
【0144】T4のC1で前記リードデータが、リード
データバッファDBRに格納される。更に、リードデー
タバッファDBRから内部バスDBに出力され、ALU
に入力する。ALUは、check_ccとalu_c
nt信号によって、条件付ビット転送が行われる。即
ち、指定したビットに、指定した条件が成立していれば
1を、成立していなければ0を転送する。そのほかのビ
ットは保持される。T4のC2で、リードデータが、A
LUから内部バスDBに出力され、ライトデータバッフ
ァDBWに格納される。
【0145】一方、ステップS3として、T4のC1
で、命令コード(mov−st)を発生し、DECに入
力して、TRAに格納したメモリのアドレスに対して、
DBWに格納したデータを転送する。即ち、T4のC2
で、テンポラリレジスタTRAに格納されている実効ア
ドレスをGBに読み出し、アドレスバッファABを経由
してIABに出力するとともに、バイトデータライトの
バスコマンドを発行する。T5のC2で、ライトデータ
バッファDBWに格納されている演算結果を、IDBに
出力して、デスティネーションのメモリアドレスに演算
結果を書込む。ステップS4として、T5のC2から命
令フェッチを行なうとともに、PCのインクリメントを
行なう。
【0146】なお、命令コードの各ワードが分割されな
いための連続命令信号(mskint)をステップS
1、S2の制御信号Bとして出力する。本信号によっ
て、割込み要求などが発生していても、命令の実行を継
続することができる。
【0147】また、直前の命令によるCCRの更新は、
T2のC2で行われており、条件付ビット転送命令の条
件判定には間に合うようにされている。また、条件付ビ
ット転送命令はCCRを更新しないようになっている。
【0148】図19に、条件付ビットセット命令の例
(BSET/cc #n,@ERs)の実行タイミング
を示す。条件が不成立の場合は、メモリライトを行う命
令コード(mov−st)ではなく、無操作の命令コー
ド(nop)を発生するようにする。図17のステップ
S3の動作が省略されたものと同一の動作である。デー
タを保持する場合に、不必要なライト動作を不要にして
より高速化できる。また、この場合は、図15の出力セ
レクタを不要にできる。
【0149】条件の成立/不成立によって、発生する命
令コードを変更するために、DECに入力する命令コー
ドdecinを以下のようにすればよい。これはCH部
に含まれる。 if (mk_mov &(op==bset_cc) &(chk_cc==1'b0)) decin = nop; else if (mk_mov) decin = mv_st; else decin = ir; 条件付ビットセット/クリア/転送命令の第3ワードを
発生する制御信号(mk_mov)が発生しても、ビッ
ト操作命令(op==bset_cc)であって、条件
不成立(chk_cc==1’b0)のときは、無操作
の命令コード(nop)をDECに入力する。同様に上
記記述の1行目に条件付ビットクリア命令の条件を加え
る。条件付ビットセット/クリア/転送命令のそのほか
の場合は、第3ワードを発生する制御信号(mk_mo
v)に従って、メモリライトを行う命令コード(mov
−st)をDECに入力する。
【0150】上記実施例によれば、以下の作用効果を得
るものである。 (1)前置コードと、既存の、転送命令の命令コード、演
算命令の命令コードを組合せて、動作させるに当たり、
組合わせることによって、使用しないレジスタフィール
ドに修飾情報を含めて、当該命令コード乃至後続の命令
コードの動作を変更することができる。同様に、単独で
動作する命令コード(bst−0)を、長い命令コード
に組み入れる場合にも、使用しないレジスタフィールド
に修飾情報を含めて、当該命令コードの動作を変更する
ことができる。修飾情報は、条件付を指示したり、条件
フィールドとしたりすることができる。単独では、既存
の動作を行なわせることによって、既存の命令実行を阻
害することがない。また、既存の命令のみを使用した、
既存のソフトウェア資産をそのまま利用できる。換言す
れば、互換性を損なわずに、メモリ上のデータへの演算
を可能とするとともに、命令コードのビットを有効に利
用して、プログラム容量を縮小することができる。修飾
情報によって既存の命令に存在しない命令機能を容易に
実現できる。ポストデクリメントレジスタ間接のキャリ
付加算命令を実現し、多バイト長の加算を容易かつ高速
に実行することができる。ロングワードサイズとして、
更に、高速化できる。ソフトウェア資産を有効に利用可
能とするとともに、不所望の汎用レジスタの待避/復帰
動作などを抑止して、使い勝手を向上するとともに、プ
ログラム容量を縮小し、処理速度を向上することができ
る。プログラム容量を縮小することによって、ひいて
は、プログラム格納用のROMなどのメモリ容量を縮小
し、費用を節約することができる。
【0151】(2)既存の、転送命令の命令コード、演算
命令の命令コードを組合せて、動作するから、制御信号
(MODS、MODD、MODEA1、MODEA2、
MODOPT)の出力と参照を追加するのみで、命令デ
コーダの、従来の設計資産を有効に利用することがで
き、論理的な規模の追加と変更を最小限にし、論理的・
物理的規模の増大を最小限にできる。また、開発に必要
な期間を短縮し、資源を節約することができる。既存の
データアクセスのためのアドレッシングモードを全てサ
ポートし、更に拡張できるから、任意のアドレッシング
モードの組合せを可能にして、プログラムの作成を容易
にすることができる。 (3)コンディションコードの状態に応じてビットセット
/クリア/転送を行う条件付ビットセット/クリア/転
送命令を実行可能にし、データを評価してコンディショ
ンコードを更新する命令(比較命令など)の後に、かか
る条件付ビットセット/クリア/転送命令を実行するこ
とによって、データの評価結果などに応じたフラグの設
定が容易に実現できる。分岐命令を不要にして、オーバ
ヘッドを低減し、プログラム容量を削減するとともに、
高速化を実現できる。条件付ビットセット/クリア/転
送命令の実行時に、条件となるコンディションコードに
影響を与えないようにして、前記データ評価命令の実行
結果を保持するから、一つのデータ評価命令などの後
に、複数の条件によって、複数のビットセット/クリア
/転送を行うことができる。プログラム容量を縮小する
とともに、高速化を実現できる。C言語で記述したプロ
グラムであっても、その記述(if文)に従ったビット
セット/クリア/転送を可能にして、コンパイルの容易
化や、コンパイル結果のプログラム容量縮小と高速化を
実現できる。
【0152】以上、本発明は上記実施例に限定されるも
のではなく、本発明の精神を逸脱しない範囲内におい
て、種々の変更をなし得ることは勿論である。
【0153】例えば、ポストデクリメントレジスタ間接
のキャリ付加算命令について説明したが、同様に、キャ
リ付減算命令も実現可能であることはいうまでもない。
ポストインクリメントレジスタ間接の論理演算なども同
様に実現できる。
【0154】レジスタフィールドを利用して含める修飾
情報は、アドレッシングモードや、データサイズ、演算
の種類、実行条件などのほか、イミディエイトデータな
どとしてもよい。例えば、0〜7のような3ビットで表
現できるようなデータを、含めることができるし、イミ
ディエイトデータを使用することを、先行する命令コー
ドで指定して、より多くのビットを利用することもでき
る。例えばレジスタ間接を修飾して1.2.4といった
ディスプレースメントのディスプレースメント付レジス
タ間接を、命令コード長を増加することなく、実現する
ことができる。
【0155】条件付とするのは、ビットセット/クリア
/転送に限定されない。条件付きで加算/減算/論理演
算/転送を行うようなものであってもよい。
【0156】組合せる命令コードは、新規の命令セット
を考える場合、既存の命令セットの上位互換とする場合
など、適宜、適当な命令コードを組合せるようにしてよ
い。少なくとも、命令コード長の長い命令の一部のワー
ドが単独に実行可能であって、かかる命令の所定のフィ
ールドを、単独で実行する場合にレジスタフィールドと
し、長い命令の一部となる場合に他の情報を定義するよ
うにすればよい。
【0157】条件付ビットセット/クリア/転送命令の
条件は一例であり、適宜変更可能である。条件付ビット
セット/クリア/転送命令の前に、比較命令によってコ
ンディションコードを設定する例を示したが、そのほか
の演算命令や、転送命令、ビットテスト命令でも同様で
ある。コンディションコードを設定する命令は任意にす
ることができる。
【0158】CPUのアーキテクチャは、ロードストア
型アーキテクチャでなくてもよい。汎用レジスタは、ア
ドレス及びデータに共通に利用可能なものである必要は
なく、一部または全部がアドレス専用またはデータ専用
のものであってもよい。汎用レジスタのデータサイズに
ついても任意とすることができる。
【0159】前置コードの種類は特に限定はされない。
また、前置コードは、転送命令と演算命令などを組合せ
る情報のほか、そのほかの制御情報を含んでもよい。例
えば、データサイズを指示する情報を含んでもよい。ま
た、命令コードの基本単位16ビットに限定する必要は
なく、8ビット或いは32ビットなど任意のビット幅と
できる。
【0160】簡単のために、バス幅を32ビットとし、
命令リードを16ビット単位としたが、命令リードを3
2ビット単位にして高速化することができる。また、バ
ス幅を16ビットとして、ロングワードのリード/ライ
トを、ワード単位の2回のリード/ライトで実行するよ
うにしてもよい。マイクロコンピュータのその他の機能
ブロックについても何等制約されない。
【0161】C言語によるプログラムはif文について
説明したが、switch文であっても同様にできる。
各分岐条件を評価する比較命令と条件付ビットセット/
クリア命令を組みにして、必要な数を記述すればよく、
分岐命令を不要にできる。
【0162】以上の説明では主として本発明者によって
なされた発明をその背景となった利用分野であるマイク
ロコンピュータに適用した場合について説明したが、こ
れに限定されるものではなく、その他のマイクロコンピ
ュータまたはデータ処理装置にも適用可能であり、本発
明は少なくとも、命令を解読して処理し、演算処理を行
なうデータ処理装置に適用することができる。
【0163】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば、下
記の通りである。
【0164】すなわち、条件付ビットセット/クリア/
転送命令によって、処理状態に応じたメモリ上のフラグ
の設定を容易にすることができ、プログラム容量を縮小
し、高速化を図ることができる。
【0165】指定されたメモリからデータをリードする
命令コードと、汎用レジスタ上の所定のビットに、無条
件のビットセット/クリア/転送を行う命令コードとを
組合わせ、後者の汎用レジスタを指定するフィールド
を、条件フィールドとして、論理的・物理的規模の増大
を最小限とし、既存のCPUと互換性を維持することが
できる。
【0166】また、既存の、メモリ−レジスタ間の転送
を行なう命令コード、レジスタに対する演算命令コード
を組合せ、これを結合させる前置コードを以ってメモリ
上のデータに対する演算命令を実現する場合に、汎用レ
ジスタを指定するフィールドに別の定義情報を持つよう
にして、命令コード長を増加させることなく、更に、多
様な命令機能を実現することができる。CPUの使い勝
手の向上、命令コード長の短縮、及び処理性能の向上を
実現することになる。
【図面の簡単な説明】
【図1】本発明の適用されたマイクロコンピュータのブ
ロック図である。
【図2】CPUに内蔵されている汎用レジスタ及び制御
レジスタの構成例(プログラミングモデル)を示す図で
ある。
【図3】実効アドレスの計算方法を説明するための図で
ある。
【図4】従来技術のCPUの機械語の命令フォーマット
の一例を示す図である。
【図5】従来技術のCPUのメモリに対する転送命令の
例の詳細な命令フォーマットを示す図である。
【図6】前置コード(制御コード)のフォーマットを示
す図である。
【図7】本発明によるメモリに対する演算命令の命令フ
ォーマットの組合せを示す図である。
【図8】本発明によるメモリに対する演算命令の命令フ
ォーマットの組合せを示す図である。
【図9】本発明によるメモリに対する演算命令の命令フ
ォーマットの組合せを示す図である。
【図10】本発明によるメモリに対する演算命令の命令
フォーマットの組合せを示す図である。
【図11】メモリ上のデータに対するキャリ付加算命令
の例を示す図である。
【図12】本発明の条件付ビットセット/クリア/転送
命令の説明図である。
【図13】本発明の無条件/条件付ビットセット/クリ
ア/転送命令の命令フォーマットを示す図である。
【図14】CPUの構成例を示す図である。
【図15】ALUのビット操作命令に関係する部分のブ
ロックを示す図である。
【図16】メモリ−メモリ型の加算命令の実行タイミン
グを示す図である。
【図17】条件付ビット転送命令の例の実行タイミング
を示す図である。
【図18】図17の条件付ビット転送命令の実行タイミ
ングに対応する制御信号の制御内容を示す動作フロー図
である。
【図19】条件付ビットセット命令の例の実行タイミン
グを示す図である。
【符号の説明】
AIN0〜AIN7…アナログデータの入出力端子、A
Vss…アナロググランドレベル端子、AVcc…アナ
ログ電源電圧レベル端子、BSET…ビットセット、B
CLR…ビットクリア、BST…ビット転送、C,V,
Z,N…フラグ、CH…命令変更部、CPG…クロック
発振器、CCR…コンディションコードレジスタ、DB
W…ライトデータバッファ、DEC…命令デコーダ、
E,R,ER,RH,RL…汎用レジスタ、EXTA
L,XTAL…クロック入力端子、INT…割込コント
ローラ、IOP1〜IOP9…入出力ポート、IR…命
令レジスタ、MODS,MODD…結合された命令の一
部である情報、MODOPT…修飾情報、PC…プログ
ラムカウンタ、pf…前置コード、RSEL…レジスタ
セレクタ、TMG…ステージコード、TRA…テンポラ
リレジスタ、Vss…グランドレベル端子、Vcc…電
源電圧レベル端子。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】命令コードを読み込んで動作するマイクロ
    コンピュータであって、 コンディションコードの状態を条件として、 アドレス空間上のデータの指定されたビットの操作内容
    を変更する命令実行手段を有し、 前記命令実行手段を定義する命令コードは、アドレス空
    間上のアドレスを指定するための情報と、ビットを指定
    する情報と、条件を指定する情報を含み、 前記命令実行手段は、演算手段を有し、 前記演算手段は、前記ビットを指定する情報を解読し
    て、指定されないビットを保持し、 前記条件を指定する情報と前記コンディションコードの
    状態を解読して、指定されたビットのデータを生成する
    手段を含むことを特徴とするマイクロコンピュータ。
  2. 【請求項2】請求項1記載のマイクロコンピュータであ
    って、 汎用レジスタ上のデータの指定されたビットを操作する
    命令実行手段を含み、 前記汎用レジスタ上のデータの指定されたビットを操作
    する命令の命令コードは、前記アドレス空間上のデータ
    の指定されたビットを、コンディションコードの状態を
    条件として操作内容を変更する命令の命令コードの一部
    と共通であって、 当該命令コードの一部のビットは、前記汎用レジスタ上
    のデータの指定されたビットを操作する命令の命令コー
    ドとしては汎用レジスタを指定し、 前記アドレス空間上のデータの指定されたビットを、コ
    ンディションコードの状態を条件として操作内容を変更
    する命令の命令コードとしては条件を指定することを特
    徴とするマイクロコンピュータ。
  3. 【請求項3】請求項1または2に記載のマイクロコンピ
    ュータであって、 前記コンディションコードは、演算結果を反映するもの
    であって、 前記コンディションコードの状態は比較の一致を示すも
    のを含み、 前記条件の成立/不成立に従って、 前記アドレス空間上のデータの指定されたビットをセッ
    トするか、クリアするかを変更することを特徴とするマ
    イクロコンピュータ。
  4. 【請求項4】請求項1乃至3のいずれかに記載のマイク
    ロコンピュータであって、 前記コンディションコードは、演算結果を反映するもの
    であって、 前記条件の成立時に、前記アドレス空間上のデータの指
    定されたビットをセット、またはクリアし、 不成立時に、前記アドレス空間上のデータの指定された
    ビットを保持することを特徴とするマイクロコンピュー
    タ。
  5. 【請求項5】命令コードを読み込んで動作し、データま
    たはアドレスを格納可能なレジスタを有するマイクロコ
    ンピュータであって、 メモリとレジスタ間のデータ転送を行なう転送命令と、 レジスタ上のデータに対して演算を行なう演算命令を持
    ち、 前置コードと、前記転送命令の命令コードと、前記演算
    命令の命令コードを、順次読み込んで、一つの命令とし
    て解釈し、 メモリ上のデータに対する演算を実行する命令実行手段
    を有し、 前記命令実行手段は命令コードで指定されない処理を禁
    止する手段と、 前記転送命令の命令コードの実行時に、コンディション
    コードの変化を抑止する手段とを含み、 メモリとレジスタ間のデータ転送を行なう転送命令また
    はレジスタ上のデータに対して演算を行なう演算命令の
    レジスタを指定するビットを、前記前置コードと、前記
    転送命令の命令コードと、前記演算命令の命令コードを
    含む、一つの命令として、命令の動作を定義するビット
    とすることを特徴とするマイクロコンピュータ。
JP2000363257A 2000-11-29 2000-11-29 マイクロコンピュータ Expired - Lifetime JP3760093B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000363257A JP3760093B2 (ja) 2000-11-29 2000-11-29 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000363257A JP3760093B2 (ja) 2000-11-29 2000-11-29 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JP2002163104A true JP2002163104A (ja) 2002-06-07
JP3760093B2 JP3760093B2 (ja) 2006-03-29

Family

ID=18834390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000363257A Expired - Lifetime JP3760093B2 (ja) 2000-11-29 2000-11-29 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP3760093B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487338B2 (en) 2002-07-19 2009-02-03 Renesas Technology Corp. Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
CN113614690A (zh) * 2019-04-01 2021-11-05 华为技术有限公司 一种指令集的执行方法和计算装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487338B2 (en) 2002-07-19 2009-02-03 Renesas Technology Corp. Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7966476B2 (en) 2003-06-30 2011-06-21 Intel Corporation Determining length of instruction with escape and addressing form bytes without evaluating opcode
US8161269B2 (en) 2003-06-30 2012-04-17 Intel Corporation Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode
US8402252B2 (en) 2003-06-30 2013-03-19 Intel Corporation Determining length of instruction with address form field exclusive of evaluating instruction specific opcode in three byte escape opcode
US8793470B2 (en) 2003-06-30 2014-07-29 Intel Corporation Length determination of instruction code with address form field and escape opcode value by evaluating portions other than instruction specific opcode
CN113614690A (zh) * 2019-04-01 2021-11-05 华为技术有限公司 一种指令集的执行方法和计算装置

Also Published As

Publication number Publication date
JP3760093B2 (ja) 2006-03-29

Similar Documents

Publication Publication Date Title
US6405302B1 (en) Microcomputer
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
JP2834837B2 (ja) プログラマブルコントローラ
JP4004915B2 (ja) データ処理装置
JP2001202243A (ja) データ処理装置
JP3760093B2 (ja) マイクロコンピュータ
JP3727395B2 (ja) マイクロコンピュータ
JP3786575B2 (ja) データ処理装置
JP3841820B2 (ja) マイクロコンピュータ
JP2003005954A (ja) データ処理装置およびその制御方法
JP3740321B2 (ja) データ処理装置
JP4545777B2 (ja) データ処理装置
JP4528993B2 (ja) マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP3765782B2 (ja) マイクロコンピュータ
JP4498338B2 (ja) データ処理装置
JP2002132499A (ja) データ処理装置及び記録媒体
JP3733137B2 (ja) マイクロコンピュータ
JP2001337821A (ja) データ処理装置
JP2007156557A (ja) 並列プロセッサ
JP3958320B2 (ja) マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP2522564B2 (ja) プログラマブルコントロ―ラ
JPH02236734A (ja) マイクロプロセッサのエミュレーション方式
JP2001067335A (ja) マイクロコンピュータ
JP2000181703A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050920

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051121

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20051121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3760093

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090113

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100113

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20210113

Year of fee payment: 15

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

Free format text: PAYMENT UNTIL: 20210113

Year of fee payment: 15

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20210113

Year of fee payment: 15

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term