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

データ処理装置

Info

Publication number
JP2001337821A
JP2001337821A JP2000161137A JP2000161137A JP2001337821A JP 2001337821 A JP2001337821 A JP 2001337821A JP 2000161137 A JP2000161137 A JP 2000161137A JP 2000161137 A JP2000161137 A JP 2000161137A JP 2001337821 A JP2001337821 A JP 2001337821A
Authority
JP
Japan
Prior art keywords
instruction
bit
data
register
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.)
Withdrawn
Application number
JP2000161137A
Other languages
English (en)
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 JP2000161137A priority Critical patent/JP2001337821A/ja
Publication of JP2001337821A publication Critical patent/JP2001337821A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

(57)【要約】 【課題】 高級言語でプログラムを作成した場合も、ビ
ット操作、特にビットの状態をパラメータなどとして保
存したりする場合の処理効率の向上を実現する。 【解決手段】 データ処理装置は、ビットアキュムレー
タとして、所定の汎用レジスタの所定のビット、例え
ば、汎用レジスタR0Lのビット0を用いるようにし、
同時に上位側7ビットを“0”にクリアするという、処
理をサポートする。このとき、データ処理装置は、例え
ば、アドレスaa1のバイトデータのビットn1を、汎
用レジスタR0Lのビット0に格納するとともに、ビッ
ト7〜1を“0”にクリアする処理を指示する命令
(“BLDS #n1,@aa1”)を実行可能であ
る。これにより、“flag=iop17”は、“BL
DS #7,@iop1”と“MOV.B R0L,
@flag”とによて実現でき、プログラムの簡素化、
プログラム容量の縮小や高速化に寄与できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータなどのデータ処理装置におけるビット転送やビット
演算等のビット操作を伴う処理の効率化に関し、例え
ば、半導体集積回路化されたマイクロコンピュータ、マ
イクロプロセッサ、データプロセッサ又はCPUなどの
データ処理装置、特に機器組込み型のデータプロセッサ
に適用して有効な技術に関するものである。
【0002】
【従来の技術】半導体集積回路で成るマイクロコンピュ
ータのプログラムを、C言語のような高級言語で記述す
ることが増えてきている。
【0003】機器制御においては、マイクロコンピュー
タのI/Oポートなどの周辺機能にビット単位のデータ
を用いて処理することが多い。例えば、I/Oポートの
入力の状態を参照してプログラムの分岐を行なったりす
る。また、I/Oポートに所望の値を出力して、機器制
御を実現している。
【0004】マイクロコンピュータのCPUには、これ
らのビット単位のデータを容易に操作できるように、い
わゆるビット操作命令を持っている。ビット操作命令に
は、ビットデータの状態を検査するビットテスト(BT
ST)命令と、所定のビットデータの値を変更する命
令、例えば指定されたビットの値を“1”にセットする
ビットセット(BSET)命令、指定されたビットの値
を“0”にクリアするビットクリア(BCLR)命令、
および指定されたビットの値を反転するビットノット
(BNOT)命令などがある。更に、キャリ(C)フラ
グをビットアキュムレータとして、ビット転送や、ビッ
ト演算を行う命令を持つものがある。例えば、汎用レジ
スタ又はメモリのオペランドの指定された1ビットをキ
ャリーフラグに転送するビットロード(BLD)命令、
汎用レジスタ又はメモリのオペランドの指定された1ビ
ットにキャリーフラグの内容を転送するビットストア
(BST)命令等がある。
【0005】
【発明が解決しようとする課題】例えばビット操作処理
として、第1のビットの状態を判定し、判定結果に応じ
て第2のビットをセット/クリアする場合、前記ビット
テスト命令を用いると、 BTST #n1,@aa1 BEQ L1 BSET #n2,@aa2 BRA L2 L1:BCLR #n2,@aa2 L2:という処理で実現できる。これは、アドレス@a
a1のデータのn1番目のビットの値を判定し、判定結
果が“0”であればラベルL1に分岐し、アドレス@a
a2のデータのn2番目のビットを“0”にクリアし、
判定結果が“1”であればアドレス@aa2のデータの
n2番目のビットを“1”にセットしてラベルL2に抜
ける、という処理である。
【0006】上記処理にキャリ(C)フラグをビットア
キュムレータとするビット転送命令BLD,BSTを用
いれば、その処理は、 BLD #n1,@aa1 BST #n2,@aa2 のように、より簡単なプログラムとして記述でき、プロ
グラム容量の縮小や高速化に寄与できる。
【0007】C言語でソースプログラムを記述する場
合、ビットデータは、ビットフィールドで即ち構造体と
して宣言する。例えば、I/OポートIOP1の各ビッ
トは、 などと定義される。
【0008】一方、パラメータは、 unsigend char flag; などと定義される。キャラクタ型のパラメータflag
は、バイトサイズとされ、通常RAM上に配置される。
前記IOP1のビット7の内容を、前記パラメータfl
agに代入する記述である、 flag=iop17; に対応する処理は、iop17のビットの値を、バイト
サイズに符号なし拡張(上位7ビットを0とする)し
て、前記flagの領域に格納するという処理になる。
この処理は、 MOV.B #00,R0L BLD #7,@iop1 BST #0,R0L MOV.B R0L,@flag などとなる。即ち、レジスタR0Lに“0”を転送し、
iop1のビット7をキャリーフラグ(C)にロード
し、キャリーフラグ(C)をレジスタR0Lのビット0
に転送し、レジスタR0Lの値をアドレス@flagの
領域に転送する。ビット転送命令(BLD,BST)を
もつマイクロコンピュータであっても、符号なし拡張を
行なう必要があったりして、必ずしも効率がよくない、
ということが本発明者によって見出された。
【0009】また、前記の通り、アドレス@flagに
直接転送できる場合はよいが、格納先が配列などであっ
て、アドレス計算を必要とするような場合、ビットアキ
ュムレータとされるCフラグは、算術演算の結果が反映
され、不所望に変化してしまう場合もあるから、一旦、
汎用レジスタに待避したり、実行順序を入れ替えたりす
る必要がある。このような事態を考慮するとなれば、C
コンパイラの開発効率を損なうことにもないり易い。
【0010】本発明の目的は、機器制御用マイクロコン
ピュータ等のデータ処理装置において、C言語などの高
級言語でプログラムを作成した場合も、ビット操作、特
にビットの状態をパラメータなどとして保存したりする
場合の処理効率の向上を実現することにある。
【0011】本発明の前記並びにその他の目的と新規な
特徴は本明細書の記述及び添付図面から明らかになるで
あろう。
【0012】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0013】〔1〕データ処理装置は、ビットアキュム
レータとして、所定の汎用レジスタの所定のビット、例
えば、汎用レジスタR0Lのビット0を用いるように
し、同時に上位側7ビットを“0”にクリアするとい
う、処理をサポートする。このとき、データ処理装置
は、例えば、“BLDS #n1,@aa1”と表せる
命令(第1の所定の命令)を実行可能である。この命令
は、アドレスaa1のバイトデータのビットn1を、汎
用レジスタR0Lのビット0に格納するとともに、ビッ
ト7〜1を“0”にクリアする処理を指示する命令であ
る。
【0014】命令セットに、キャリ(C)フラグをビッ
トアキュムレータとする前記ビットロード(BLD)命
令を持つ場合、前記BLDS命令実行において所定のビ
ットを抽出する回路手段をBLD命令と共通に利用し、
抽出したビットをビット0に格納し、上位側を“0”に
すたデータを生成する回路を設け、汎用レジスタR0L
への書込み信号を発生するようにすればよい。
【0015】また、データ処理装置は、“BSTS #
n2,@aa2”と表せる命令を実行可能である。この
命令“BSTS #n2,@aa2”は、汎用レジスタ
R0Lのビット0を、アドレスaa2のバイトデータの
ビットn2に格納する処理を指示する。このとき、汎用
レジスタR0Lの上位ビットは無視され、アドレスaa
2の他のビットは保持される。
【0016】命令セットに、汎用レジスタの指定された
1ビットにキャリーフラグ(C)の内容を転送するビッ
トストア(BST)命令を持つ場合、前記BSTS命令
実行において汎用レジスタR0Lのビット0を出力する
機能を新たに追加し、所定のビットへの挿入機能は共通
にすることができる。
【0017】命令コードなどに余裕がある場合には、前
記BLDS命令、BSTS命令において、汎用レジスタ
をR0Lに固定することなく、他の汎用レジスタも利用
可能にしてよい。複数のビットを操作する場合などに、
プログラミングを容易にできる。
【0018】また、前記BLDS命令、BSTS命令に
おいて、ビットアキュムレータを、前記汎用レジスタR
0Lのビット0とするか、キャリ(C)フラグとするか
を選択できるようにしてよい。マイクロコンピュータ又
はコンパイラの一方のみに、前記選択する手段(CPU
CRの設定)を設けてもよい。既存のプログラムの互換
性を維持することもできる。
【0019】上記BLDS命令によって、前記“fla
g=iop17;”は、 BLDS #7,@iop1 MOV.B R0L,@flag とすることができ、より簡単なプログラムとし、プログ
ラム容量の縮小や高速化に寄与できる。
【0020】汎用レジスタR0Lを使用しない限り、ア
ドレス計算を行なっても問題なく、Cコンパイラの開発
効率を損なうことが少ない。
【0021】〔2〕更に好適な例においては、ビット転
送命令として、第1の所望のアドレスの所定のビットか
ら、第2の所望のアドレスの特定ビット例えばビット0
へ転送するようにし、同時に上位7ビットを0にクリア
する命令を実行できるようにしてよい。例えば、そのよ
うな命令(第2の所定の命令)は、 BLDMOV #n1,@aa1,@aa2 と表すことができる。この命令は、アドレスaa1のバ
イトデータのビットn1を、アドレスaa2のバイトデ
ータのビット0に格納するとともに、ビット7〜1を0
にクリアするようにされる。上記BLDMOV命令によ
って、前記“flag=iop17;”は、 BLDMOV #7,@iop1,@flag とすることができ、より簡単なプログラムとし、プログ
ラム容量の縮小や高速化に寄与できる。汎用レジスタR
0Lを使用せずに転送でき、プログラム効率を向上する
ことができる。
【0022】〔3〕また、別の例においては、ビット転
送命令として、第1の、所望のアドレスの所定のビット
から、第2の、所望のアドレスの所定のビットへ転送す
るようにしてもよい。この命令(第3の所定の命令)
は、例えば BMOV #n1,@aa1,#n2,@aa2 と表すことができる。この命令は、アドレスaa1のバ
イトデータのビットn1を、アドレスaa2のバイトデ
ータのビットn2に格納するとともに、そのほかのビッ
トを保持するようにされる。即ち、BLDS命令とBS
TS命令を同一の命令としたものである。I/Oポート
のビットの状態の保持に、RAMなどのバイトデータの
内、所要のビットデータのみを使用し、当該バイトデー
タの他のビットは、他の用途に有効に利用でき、RAM
などのメモリの使用効率を向上することができる。特に
アセンブリ言語などで、プログラミングを行なう場合に
は、有効である。また、C言語などにおいても、RAM
などにおくパラメータなどを、構造体として、ビットフ
ィールド宣言をおこなうことによって、RAM上の1バ
イトに、複数のビットを配置することができ、RAMの
使用量を節約できる。内蔵メモリのみで動作する、いわ
ゆるシングルチップモード時などに有効である。
【0023】また、前記汎用レジスタR0Lのビット0
や、キャリ(C)フラグなどのビットアキュムレータを
使用しないので、プログラム効率を向上し、使い勝手を
向上することができる。
【0024】この例を拡張した命令として、上記一方の
メモリを汎用レジスタとした命令をサポートすることも
できる。即ち、デスティネーション側を汎用レジスタと
した命令として、 BMOV #n1,@aa1,#n2,Rd の命令は、アドレスaa1のバイトデータのビットn1
を、汎用レジスタRdのバイトデータのビットn2に格
納するとともに、そのほかのビットを保持するようにさ
れる。
【0025】また、ソース側を汎用レジスタとした命令
として、 BMOV #n1,Rs,#n2,@aa2 の命令は、汎用レジスタRsのバイトデータのビットn
1を、アドレスaa2のバイトデータのビットn2に格
納するとともに、そのほかのビットを保持するようにさ
れる。
【0026】さらに、ソース側、デスティネーション側
を汎用レジスタとした命令として、 BMOV #n1,Rs,#n2,Rd の命令は、汎用レジスタRsのバイトデータのビットn
1を、汎用レジスタRdのバイトデータのビットn2に
格納するとともに、そのほかのビットを保持するように
される。これらの命令をサポートすることにより、命令
と使用するデータの指定との間の制限がなくなり、乃至
少なくなり、プログラミング性を向上できる。
【0027】〔4〕ビット転送命令においては、ソース
/デスティネーションのメモリからCPU内部のラッチ
手段(TRD、DBR)への転送を行なう命令実行機能
(bld−1、bst−1)と、汎用レジスタまたはラ
ッチ手段から所定のビットを抽出したり(bld、bm
ov1)、また、ビットアキュムレータなどを所定のビ
ットへ代入したり(bst、bmov2)する命令実行
機能を組合せるようにするとよい。
【0028】メモリからの転送を行なう命令実行機能を
共通化したり、ビット操作自体を行なう命令実行機能
を、汎用レジスタに対するビット操作命令と共通化した
りして、論理規模の縮小や、開発期間の短縮を図ること
ができる。
【0029】前記ラッチ手段の少なくとも1つ(TR
D)は所望のビットを抽出して出力する機能、所望のビ
ットのみを格納する機能を持つことによって、ALUの
論理構成や動作を複雑化したりすることなく、ビットア
キュムレータとの間のロード/ストアと同様の動作によ
って、任意ビット間のビット転送を実現できる。
【0030】前記メモリからの転送を行なう命令実行機
能において、当該メモリの実効アドレスを、別のラッチ
手段(TRA)に格納するとともに、前記ビット操作自
体を行なう命令実行機能は、結果を前記ラッチ手段(T
RD)に格納する。引き続き、メモリへの転送命令機能
を内部で生成し、前記アドレスを格納したラッチ手段の
内容をアドレスとして、前記演算結果を格納したラッチ
手段の内容をデータとして、メモリへの書込みを行なう
ようにする。メモリからラッチ手段へのデータ読み込
み、ラッチ手段の内容に基づくメモリへのライトは既存
の命令と共通化できるから、既存の命令動作を大きく変
更することなく、また、論理規模の増加を最小限にする
ことができる。
【0031】前記ビットアキュムレータの選択を行なう
場合には、コンパイラなどの開発装置で、ビットアキュ
ムレータの選択を行なう手段を持つようにし、この選択
に基づいて、CPUの実行すべきプログラムを相違する
ようにすればよい。
【0032】
【発明の実施の形態】図2には本発明に係るデータ処理
装置の一例であるCPU(例えば後述の図4に示される
CPU1)に内蔵されている汎用レジスタ及び制御レジ
スタの構成例(プログラミングモデル)を示す。
【0033】CPUは、32ビット長の汎用レジスタを
8本持っている。汎用レジスタは、全て同一機能を持っ
ており、アドレスレジスタとしてもデータレジスタとし
ても使用することができる。
【0034】データレジスタとしてしては32ビット、
16ビットおよび8ビットレジスタとして使用きる。ア
ドレスレジスタおよび32ビットレジスタとしては、一
括して汎用レジスタER(ER0〜ER7)として使用
する。16ビットレジスタとしては、汎用レジスタER
を分割して汎用レジスタE(E0〜E7)、汎用レジス
タR(R0〜R7)として使用する。これらは同等の機
能を持っており、16ビットジスタを最大16本まで使
用することができる。8ビットレジスタとしては、汎用
レジスタRを分割して汎用レジスタRH(R0H〜R7
H)、汎用レジスタRL(R0L〜R7L)として使用
する。これらは同等の機能を持っており、8ビットレジ
スタを最大16本まで使用することができる。各レジス
タ独立に使用方法を選択することができる。
【0035】汎用レジスタR0Lのビット0には、ビッ
トアキュムレータとしての機能がある。ビットアキュム
レータの場合、ビット0以外の上位側ビットは、ライト
時“0”とされ、リード時に無視される。
【0036】汎用レジスタER7には、汎用レジスタと
しての機能に加えて、スタックポインタ(SP)として
の機能が割り当てられており、例外処理やサブルーチン
分岐などで暗黙的に使用される。例外処理は割込み処理
を含む。
【0037】PCは24ビットのプログラムカウンタ
で、CPU1が次に実行する命令のアドレスを示す。特
に制限されないもののCPU1の命令は、すべて2バイ
ト(ワード)を単位としているため、最下位ビットは無
効であり、命令リード時には最下位ビットは0とみなさ
れる。
【0038】CCRは8ビットのコンディションコード
レジスタで、CPU1の内部状態を示している。割込み
マスクビット(I)とハーフキャリ(H)、ネガティブ
(N)、ゼロ(Z)、オーバフロー(V)、キャリ
(C)の各フラグを含む8ビットで構成されている。キ
ャリフラグ(C)は、算術演算時のキャリ/ボロー、シ
フト/ローテートのキャリとしての動作に加えて、ビッ
トアキュムレータとしての機能を持つ。
【0039】EXRは8ビットのレジスタで、割込みな
どの例外処理の制御を行なう。割込みマスクビット(I
2〜I0)とトレース(T)の各ビットを含んでいる。
【0040】汎用レジスタ上のデータ構成例、メモリ空
間上のデータ構成、アドレッシングモードと実効アドレ
スの計算方法などについては、平成7年3月(株)日立
製作所発行『H8S/2600シリーズH8S/200
0シリーズプログラミングマニュアル』記載のCPUと
同様である。
【0041】ビットアキュムレータとして、前記レジス
タR0Lのビット0を使用するか、CCRのキャリ
(C)フラグを使用するかを選択可能にされる。その選
択は、後述の制御レジスタCPUCRの所定のビットで
指定する。
【0042】図1には本発明に係るデータ処理装置の一
例であるCPU1の命令セットに含まれるビット転送命
令(BLDS、BSTS、BLDMOV、BMOV)の
内容が例示される。
【0043】BLDS命令は、“BLDS #n1,
<EA1>”のアセンブラフォーマットを持つ。R0L
をビットアキュムレータとする場合、ソースデータの指
定されたビットを、汎用レジスタR0Lのビット0に格
納し、上位ビットは0とする。ソースデータは、汎用レ
ジスタまたはメモリであって、<EA1>で指定する。
指定ビットは、そのビット番号をn1で指定する。
【0044】BLDMOV命令は、“BLDMOV #
n1,<EA1>,<EA2>”のアセンブラフォーマ
ットを持つ。BLDS命令と同様であるが、結果は、汎
用レジスタR0Lではなく、デスティネーションのロケ
ーションに格納する。デスティネーションのロケーショ
ンは<EA2>で指定される。
【0045】BSTS命令は、“BSTS #n2,
<EA2>”のアセンブラフォーマットを持つ。R0L
をビットアキュムレータとする場合、汎用レジスタR0
Lのビット0を、デスティネーションデータの指定され
たビットに格納する。R0Lの上位ビットは無視し、デ
スティネーションデータの他のビットは保持する。デス
ティネーションのロケーションは、汎用レジスタまたは
メモリであって、<EA2>で指定する。指定ビット
は、そのビット番号をn2で指定する。
【0046】BMOV命令は、“BMOV #n1,<
EA1>,#n2,<EA2>”のアセンブラフォーマ
ットを持つ。ソースデータの指定されたビットを、デス
ティネーションデータの別の指定されたビットに格納す
る。ソースデータの他のビットは無視し、デスティネー
ションデータの他のビットは保持する。ソース、デステ
ィネーションのロケーションは、汎用レジスタまたはメ
モリであって、それぞれ<EA1>、<EA2>で指定
する。ソースデータ、デスティネーションデータの指定
ビットは、そのビット番号をそれぞれ、n1、n2で指
定する。
【0047】図3には(1)ビット0固定転送命令であ
るビット転送命令(BLDS、BSTS、BLDMO
V)、及び(2)任意ビット間のビット転送命令(BM
OV)の命令フォーマットを示す。
【0048】BLDS命令は、汎用レジスタ上またはア
ドレス空間上のデータの所定のビットを、ビットアキュ
ムレータ(CまたはR0L[0])に格納するものであ
る。
【0049】BSTS命令は、ビットアキュムレータ
(CまたはR0L[0])を、汎用レジスタ上またはア
ドレス空間上のデータの所定のビットに格納し、そのほ
かのビットは保持するものである。
【0050】アドレッシングモードについては、代表的
にレジスタ直接と、絶対アドレス8ビットの場合のみを
示す。
【0051】レジスタ直接の場合は、1ワードの命令コ
ードで、各命令の機能を示すオペレーションフィールド
(op)と、ビット番号を指定するビットフィールド
(n)3ビットと、汎用レジスタを指定するレジスタフ
ィールド(r)4ビット、を有する。
【0052】絶対アドレス8ビットの場合は、2ワード
の命令コードで、第1ワードに、オペレーションフィー
ルド(op)とEA拡張部である絶対アドレス(EA)
を持ち、第2ワードに、前記レジスタ直接同様に、オペ
レーションフィールド(op)と、ビット番号を指定す
るビットフィールド(n)3ビットを有する。
【0053】第2ワードを、前記レジスタ直接の命令コ
ードと共通化する場合、データの所在を示すレジスタフ
ィールド(r)4ビットが不要になる。ビットアキュム
レータを汎用レジスタR0Lと限定せずに、レジスタ指
定フィールド(r)で指定した、任意のレジスタとする
ことができる。即ち、BLDS命令は、汎用レジスタ上
またはアドレス空間上のデータの所定のビットを、指定
した汎用レジスタのビット0に格納し、その上位ビット
を0とするようにする。ビットアキュムレータを汎用レ
ジスタR0Lと限定するより、柔軟な使用が可能にな
る。具体的には、複数のビットを操作するような場合
に、これに対応して、汎用レジスタを複数使用すること
ができる。
【0054】オペレーションフィールドの内容は、各命
令を定義するために、適宜設定される。
【0055】任意ビット間のビット転送命令BMOVは
以下の通りである。レジスタ−レジスタ間の場合は、2
ワードの命令コードで、第1ワードに、オペレーション
フィールド(op)と汎用レジスタを指定するレジスタ
フィールド(r)4ビットを持ち、第2ワードに、オペ
レーションフィールド(op)と、ソース用、デスティ
ネーション用ビット番号を指定するビットフィールド
(n)各3ビット、を有する。
【0056】また、メモリと汎用レジスタとの間のビッ
ト転送命令は、汎用レジスタ間のビット転送命令は、レ
ジスタ指定フィールド、ビット指定フィールドを2つず
つ必要とし、1ワードの命令コードでは実現できない。
2ワード命令の場合は、BLDS命令とBSTS命令を
組合せたものと同等であるので、かかる汎用レジスタ間
のビット転送命令は定義しなくてもよいが、定義してあ
る方が、ビットアキュムレータを保持できるし、命令の
機能とアドレッシングモードの組合せが任意にできるの
で、使い易く、プログラム効率を向上できる。
【0057】図4には本発明に係るデータ処理装置の一
例である前記CPU1の構成例を示す。
【0058】CPU1は、命令フェッチと命令解読を行
って制御信号を生成する命令制御部(命令制御手段)2
と前記制御信号に基づいて演算を行って命令を実行する
実行部(命令実行手段)3から構成される。
【0059】命令制御部2は、命令レジスタIR、命令
変更部CHG、命令デコーダDEC、レジスタセレクタ
RSEL、割込み制御部INTを含む。
【0060】命令レジスタIRには内部データバスID
Bから命令がロードされる。ロードされた命令は命令デ
コーダDECによって解読される。命令デコーダDEC
は、例えば、マイクロROM或はPLA(Progra
mable Logic Array)または布線論理で
構成される。命令デコーダDECの出力の一部が命令デ
コーダDECにフィードバックされている。これは各命
令コード内の遷移に用いるステージコード(TMG)
と、命令コード間に用いる制御信号(MODS、MOD
D)を含む。
【0061】図4では命令デコーダDECの一部の機能
が概念的に図示されているしている。転送命令コード
(bld−1、bst−1、mov−st)は、ステー
トコード信号(nxttmg)、割込みマスク信号(i
ntmsk)、メモリリード信号(read)、メモリ
ライト信号(write)、テンポラリレジスタリード
/ライト信号(TRDr/w、TRAr/w:後述のt
rdgb、wbtrd、bittrdなどを含む)、制
御信号(mod:後述のMODS、MODDを含む)を
出力する。
【0062】演算命令コード(exe:後述のbld−
0、bst−0、bldst−0、bmov−0a、b
mov−0b)は、割込みマスク信号(intms
k)、ソース汎用レジスタリード信号(Rsrd)、デ
スティネーション汎用レジスタリード/ライト信号(R
dr/w)、汎用レジスタR0Lリード/ライト信号
(R0Lr/w:後述のr0lgb、wbrolを含
む)、キャリフラグセット信号(Cset)、リードデ
ータバッファリード信号(DBRrd:後述のdbrg
bを含む)、テンポラリレジスタリード/ライト信号
(TRDr/w:後述のtrdgb、wbtrdを含
む)、ALU制御信号、及びデータ転送動作を内部生成
するための制御信号(mkmov)を出力する。
【0063】命令デコーダDECはビットアキュムレー
タ選択信号を入力し、汎用レジスタR0Lリード/ライ
ト信号、キャリフラグセット信号が切り替えられる。ま
た、制御信号MODS、MODDによって、使用するデ
ータの入力元/出力先が切り替えられる。デスティネー
ション側メモリ(MODD=1)の場合は、内部でライ
ト型転送命令と同等の動作を行なう命令コードを発生さ
せる信号(mkmov)を出力する。また、所定のビッ
トフィールド(図1、図3のn1、n2)を、算術論理
演算器ALU及びテンポラリレジスタTRDに与える。
命令デコーダDECと命令実行の詳細については、後述
する。
【0064】命令レジスタIRは、リードした命令を一
旦格納する。実行すべき命令は、命令デコーダDECに
出力される。
【0065】命令変更部CHGは、リードした命令以外
の命令コードを、命令デコーダDECに与える場合に動
作し、そのほかの場合は、命令レジスタIRの内容を命
令デコーダDECに与える。リードした命令以外の命令
コードは、割込み制御部INTの指示によって、割込み
などの例外処理を実行するとき、及び、命令デコーダD
ECの指示(mkmov)によって、前記内部でライト
型転送命令と同等の動作を行なう命令コード(mov−
st)を発生させるとき、などに用いる。
【0066】割込み制御部INTは、後述の図14の割
込みコントローラ32の出力する割込み要求信号を受け
付ける。また、命令デコーダDECの出力する割込みマ
スク信号を参照して、割込みがマスクされていなけれ
ば、命令変更部CHGに割込みを指示する。
【0067】図1及び図3に示されるところの、複数の
命令コード(オペレーションフィールドを持つワード)
を一連のものとして実行する命令の場合には、それぞれ
の命令コードが割込みマスクを指示して、所定の組合せ
の命令コードの実行が割り込みによって途切れないよう
にされている。
【0068】レジスタセレクタRSELは、命令デコー
ダDECの指示と、命令コード中に含まれるレジスタフ
ィールドの情報に基づいて、汎用レジスタを選択する。
汎用レジスタR0Lをビットアキュムレータとして使用
する場合には、命令デコーダDECから直接指定可能に
なっている。
【0069】実行部3には、汎用レジスタER0〜ER
7、プログラムカウンタPC、コンディションコードレ
ジスタCCR、テンポラリレジスタTRA、TRD、算
術論理演算器ALU、分岐アドレス演算器AU、インク
リメンタINC、リードデータバッファDBR、ライト
データバッファDBW、アドレスバッファMAを含む。
これらのブロックはGBバス、DBバス、WBバスによ
って相互に接続されている。テンポラリデータレジスタ
TRDには、ビット入出力機能を備える。
【0070】図2に示される汎用レジスタER0〜ER
7、プログラムカウンタPC、コンディションコードレ
ジスタCCR以外は、プログラミング上は参照できず、
マイクロコンピュータ内部の動作にのみ用いられる。即
ち、リードデータバッファDBR、ライトデータバッフ
ァDBW、アドレスバッファMAなどは、内部アドレス
バスIAB、内部データバスIDBとのインタフェース
を採るために、一時的にデータをラッチするものであ
る。テンポラリレジスタTRA、TRDは、マイクロコ
ンピュータ内部の動作に適宜用いられる。
【0071】リードデータバッファDBRは、ROM、
RAM、内部I/Oレジスタ、或は図示はされない外部
メモリから、リードした命令コードやデータを一時的に
格納する。
【0072】ライトデータバッファDBWはROM、R
AM、内部I/Oレジスタ、或は外部メモリへのライト
データを一時的に格納する。
【0073】アドレスバッファMAは、CPUがリード
/ライトするアドレスを一時的に格納する。
【0074】算術論理演算器ALUは、命令によって指
定される各種の演算や実効アドレスの計算などに用い
る。インクリメンタINCは、プログラムカウンタPC
のインクリメントに用いられる。
【0075】また、実行部3の各部は、汎用レジスタの
分割E(16ビット)、H(8ビット)、L(8ビッ
ト)に対応して分割されている。メモリに対するビット
転送を行なう場合には、前記レジスタTRA、TRD、
DBRなどを用いる。
【0076】テンポラリレジスタTRAは、デスティネ
ーション側データがメモリになるBSTS、BMOV命
令の場合に、デスティネーションアドレスのリード時に
リードアドレスを格納し、データのデスティネーション
側メモリへのライト時に、デスティネーションアドレス
(リードアドレスと同じアドレス)を出力する。
【0077】テンポラリレジスタTRDは、ソース側デ
ータがメモリになるBLDS、BSTS命令の場合など
に、ソース側データを一時格納し、演算命令コードの実
行時にソース側データを出力する。また、デスティネー
ション側データがメモリになるBSTS、BMOV命令
の場合に、演算結果を一時格納し、データのデスティネ
ーション側メモリへのライト時に、ライトデータを出力
する。
【0078】リードデータバッファDBRは、更に、デ
スティネーション側データがメモリになる演算命令の場
合に、デスティネーション側データを一時格納し、演算
コードの実行時にソース側データを出力する。これら
の、レジスタTRA、TRD、DBRは適宜他の場合に
も動作も行なうが、詳細な説明は省略する。
【0079】図5には算術論理演算器ALUのビット転
送命令に関係する部分のブロック図が示される。そのほ
かのALUの機能については図示を省略する。
【0080】算術論理演算器ALUは、デコーダ10、
セレクタ11、入力セレクタ12、入力セレクタ13、
論理演算回路14、ゼロ検出回路15、出力セレクタ1
6を含む。これらは、図示はされない制御信号によって
制御される。前記デコーダ10は、命令コードに含まれ
るビット番号を示す情報(bn)を入力して、指定され
たビットのみ1とし、そのほかのビットを0としたパタ
ーンを生成する。
【0081】前記セレクタ11は、キャリフラグ(C)
と内部バスDBのビット0(DB[0])を入力し、何
れかの入力をビットアキュムレータ選択信号で選択す
る。汎用レジスタR0Lをビットアキュムレータとする
場合には、所定のタイミングで、汎用レジスタR0Lの
内容が内部バスDBに出力されている。
【0082】前記入力セレクタ12は、内部バスGBと
デコーダ10の出力(decout)を入力する。前記
入力セレクタ13は、セレクタ11が出力するビットア
キュムレータ(bacc)、レジスタTRDの指定され
たビット(trdbit)及びデコーダ10の出力(d
ecout)を入力する。
【0083】前記論理演算回路14は、入力セレクタ1
2,13の出力に対して、所定の論理演算を行なう。前
記ゼロ検出回路15は、論理演算回路14の出力の全ビ
ットの論理和を生成する。出力セレクタ16は、論理演
算回路14の出力と、ゼロ検出回路15の出力(zou
t)を入力して、内部バスWBへの出力を行なう。
【0084】BLDS命令の場合は、論理演算回路は論
理積演算動作を行なう。指定されたビットのみ、データ
の入力値が抽出され、他のビットは0となる。即ち、 aluin1[7:0]=data[7:0]&dec
out[7:0]; aluin2[7:0]=decout[7:0]; である。
【0085】論理演算回路14の出力は、ゼロ検出回路
(論理和回路)15に入力される。ゼロ検出回路15の
出力は、入力に対する全ビットの論理和、即ち、 zout=|(data[7:0]&decout
[7:0]); である。出力セレクタ16は、BLD命令のときは、ゼ
ロ検出回路15の出力をビット0に出力し、そのほかの
ビットを“0”にするような選択を行う。即ち、 aluout[7:0]={7’b0000000,z
out}; である。
【0086】更に、前記出力セレクタ16の出力を汎用
レジスタR0Lへライトする指示が行われるようにされ
る。前記の通り、任意の汎用レジスタを使用可能とする
場合には、命令コードで指定された汎用レジスタへのラ
イトを指示するようにされる。
【0087】なお、BLD命令の結果を、汎用レジスタ
R0Lに格納するに当たって、上位ビットを0拡張せ
ず、符号拡張する場合には、 aluout[7:0]={zout,zou
t,...,zout}; とすればよい。これにより、バイトデータH’00また
はH’FFがライトされるのに等しくされる。
【0088】ビット論理演算命令を持つ場合は、選択さ
れたビットのみ、データとビットアキュムレータを算術
論理演算器ALUに入力するようにし、論理演算回路1
4に所定の演算を指示するようにすればよい。論理演算
回路14の入力セレクタ12,13を、下記のようにす
る。即ち、 aluin1[7:0]=data[7:0]&dec
out[7:0]; aluin2[7:0]=bacc&decout
[7:0]; である。
【0089】入力セレクタ13の場合、1ビットのba
ccを、8ビットのdecout[7:0]の各ビット
と論理積を採り、8ビットのaluin2[7:0]を
得る。選択されたビットを、ビットアキュムレータの値
とし、そのほかのビットは0としたデータが入力され
る。
【0090】結果は、ゼロ検出回路15で検出され、即
ち、 zout=|((data[7:0]<op>8{ba
cc})&decout[7:0]); と表現できる。ここで、<op>は指定された論理演算
であり、論理積、論理和、排他的論理和である。これを
汎用レジスタR0Lにライトすることは、前記同様に実
現することができる。
【0091】BSTS命令については、論理演算回路1
5の入力セレクタ12を、下記のようにする。即ち、 aluin1[7:0]=data[7:0]& ̄de
cout[7:0]; である。論理演算回路15の入力セレクタ13は、前記
ビット論理演算と同様にする。即ち、 aluin2[7:0]=bacc & decout
[7:0]; である。論理演算回路15には論理積を指示することに
よって、指定されたビットはビットアキュムレータ、そ
のほかのビットは入力データとされて、ビットの挿入が
行われる。出力セレクタ16は、論理演算回路14の演
算結果を出力するようにする。即ち、各ビットは aluout = decout? 8{bacc}:
data; と表現される。尚、記号?はdecoutにより、続く
記号:で区切られた前後の信号を選択することを意味す
る。
【0092】算術論理演算器ALUの出力は、汎用レジ
スタに格納したり、テンポラリレジスタとデータライト
バッファなどを介して、所定のメモリにライト可能であ
る。
【0093】ビットアキュムレータのセレクタ11は、
ビットアキュムレータとして、キャリフラグ(C)また
は汎用レジスタR0Lのビット0(R0L[0])の何
れを使用するかを、モード信号によって選択する。
【0094】任意ビット間のビット転送命令(BMO
V)については以下の通りである。第1モードの場合、
算術論理演算器ALUに入力されたソースデータの指定
されたビットをゼロ検出回路15で検出して、テンポラ
リレジスタTRDに格納したデスティネーションデータ
の別の指定されたビットに格納する。即ち、入力セレク
タ12,13の出力は、 aluin1[7:0]=data[7:0]&dec
out[7:0]; aluin2[7:0]=decout[7:0]; とされ、ゼロ検出回路15の出力は、 zout=|(data[7:0]&decout
[7:0]); となり、ビットアキュムレータの代わりに、テンポラリ
レジスタの指定されたビットに格納する他は、前記BL
DS命令と同一である。ここでdecoutは、ソース
側のビット番号をデコードしたものである。
【0095】第2モードの場合、テンポラリレジスタT
RDに格納したソースデータの指定されたビット(tr
dbit)を、算術論理演算器ALUに入力されたデス
ティネーションデータの、別の指定されたビットに格納
する。前記入力セレクタ12,13の出力は、 aluin1[7:0]=data[7:0]& ̄de
cout[7:0]; aluin2[7:0]=8{trdbit}&dec
out[7:0]; とされ、算術論理演算器ALUの出力は、 aluout=decout?8{trdbit}:d
ata; となり、baccの代わりに、trdbitを使用する
他は、前記BSTS命令と同一である。ここでdeco
utは、デスティネーション側のビット番号をデコード
したものである。
【0096】前記第1モード、第2モードとでは、命令
コード中の、ソース側/デスティネーション側のビット
番号フィールドが入れ替わっているので、デコーダ10
に入力する命令コードのビット位置は共通にできる。
【0097】図6にはテンポラリレジスタTRDのブロ
ック図が示される。テンポラリレジスタTRDは、レジ
スタ部22に加えて、デコーダ20、入力セレクタ2
1、出力セレクタ23を含む。出力セレクタ23の出力
trdbitは図5の入力セレクタ13に供給される。
【0098】デコーダ20は、命令コードに含まれるビ
ット番号を示す所定の情報(bm)を入力して、指定さ
れたビットのみ“1”とし、そのほかのビットを“0”
としたパターンを生成する(tdecout[7:
0])。
【0099】出力セレクタ23で選択されるレジスタ部
22の指定されたビットは、以下の論理式 trdbit=|(trd[7:0]&tdecout
[7:0]); で得られる。即ち、デコーダ20の出力と、レジスタ部
22の各ビットの論理積を採り、その全ビットの論理和
を採るものであって、セレクタを構成し、所望のビット
を抽出する。これは、任意ビット間のビット転送命令
(BMOV)の第2モードで使用する。このとき、td
ecoutは、ソース側のビット番号をデコードしたも
のである。trd[7:0]はレジスタ部22の出力で
ある。
【0100】入力セレクタ21は、レジスタ部22への
入力値を、 casex(wbtrd,dbtrd,bittrd) 100:trdin[7:0]=wb[7:0]; 010:trdin[7:0]=db[7:0]; 011:trdin[7:0] =(8{zout} & tdecout[7:0]); |(db[7:0] &  ̄tdecout[7:0]); 001: trdin[7:0] =(8{zout} & tdecout[7:0]); |(trd[7:0]&  ̄tdecout[7:0]); 000: trdin[7:0]=trd[7:0]; のように選択する。即ち、制御信号wbtrdによっ
て、内部バスWBの内容が選択され、制御信号dbtr
dによって、内部バスDBの内容が選択される。また、
制御信号bittrdによって、選択されたビットは、
ゼロ検出回路15の出力が、その他のビットは、レジス
タ部22の元の値が選択される。同時に、上記制御信号
(wbtrd、dbtrd、bittrd)によって、
所定のクロック( ̄φ)に同期してライトが行われる。
これは以下のように記述できる。
【0101】 これは、任意ビット間のビット転送命令(BMOV)の
第1モードで使用する。このとき、tdecoutは、
デスティネーション側のビット番号をデコードしたもの
である。
【0102】以下に、本発明の命令の実行タイミングの
例を示す。特に制限はされないものの、内部データバス
は16ビットであって、内蔵ROM、RAMリード/ラ
イトを1ステートでリード/ライト可能とする。内蔵R
OM、RAMは、IABをアドレスバスとし、IDBを
データバスとする。後述のPAB、PDBは接続されて
いないが、同様のタイミングを内部で生成している。以
下で説明する動作タイミングは、各動作サイクルTiで
クロック信号φの立ち上がりC1に同期され、クロック
信号φの立ち下がりC2に同期される。特に図示はしな
いが実際にはC2はクロック信号φの反転クロック信号
(若しくはノンオーバラップ信号)φ#の立ち上がりに
同期するタイミングとされる。
【0103】前記デコーダDECの出力する制御信号に
は、その位相に応じて、controlA、contr
olB、controlCがあり、制御対象によって、
位相が異なる。
【0104】controlAは、主として、バス制御
を行なう。バスコマンドやアドレス出力の制御を行な
う。
【0105】実行シーケンスの制御は、control
Bで行い、制御信号TMGやMODS、MODDの出
力、制御信号intmskによる割込みの禁止、デステ
ィネーションにデータを書き戻すための命令コード(m
ov−st)の生成信号mkmovの出力などを行な
う。また、算術論理演算器ALUに入力するデータの読
み出しの制御を行なう。
【0106】制御信号controlCは、算術論理演
算器ALUの制御と、演算結果の汎用レジスタ、テンポ
ラリレジスタなどへの書込みの指示を行なう。例えば、
命令リードを行なう場合は、制御信号controlA
に含まれる所定の制御信号が活性状態になり、次のC2
から、以下の一連の動作を行なう。(1)PCの内容が
内部バスGBに読み出され、アドレスバッファABに転
送され、アドレスバスIABに出力される。(2)命令
リード(if)を示すバスコマンドを出力する。(3)
インクリメンタINCに、内部バスGB上のプログラム
カウンタPCの値を取り込み、+2を指示する。(4)
次のC1(φ同期)で、内部バスWB上のインクリメン
トされたプログラムカウンタPC値を、プログラムカウ
ンタPCに書込む。
【0107】図7にはビット転送命令の第1の例(BL
DS#7,@FFFFFE)の実行タイミングが例示さ
れる。
【0108】T0のC2(φ#同期)で、CPU1のア
ドレスバッファMAからアドレス信号がアドレスバスI
ABに出力される。T1のC1(φ同期)で、アドレス
バスIABの内容がアドレスバスPABに出力され、リ
ードサイクルが開始される。C2でリードデータが内部
データバスに得られ、これをT2のC1で命令レジスタ
IRにラッチする。これは、命令コードの第1のワード
であり(bld−1)、指定したアドレスのデータをテ
ンポラリレジスタTRDへ格納する。
【0109】引き続き、T2のC2で次のアドレス(+
2された内容)がアドレスバスIABに出力され、この
リードデータがT3のC1で命令レジスタIRにラッチ
される。これは、命令コードの第2ワードであり(bl
d−0)、指定されたビットをアキュムレータに格納す
る。以上の動作は以前の命令の実行の制御によって行わ
れ、相対的な関係が異なる場合もある。
【0110】直前の命令の実行が終了すると、命令のリ
ードから最も早く命令の実行が開始される場合には、T
2のC1で命令コード(bld−1)が命令デコーダD
ECに入力されて、命令の内容が解読される。解読結果
に従って、制御信号を出力して、各部の制御を行う。即
ち、8ビット絶対アドレスのアドレッシングモードであ
るので、この絶対アドレスに基づき、ソースデータのリ
ードを行い、リード結果をテンポラリレジスタ(TR
D)に格納する。また、制御信号MODS=1とすると
ともに、割込み禁止intmsk=1とする。
【0111】T2のC2で、命令コードの第1ワードの
ビット7〜0(IR[7:0]=8’hFE)の内容
(絶対アドレス)を内部バスGBに読み出して、アドレ
スバッファMAに入力する。このとき上位ビットは1拡
張される。アドレスバッファMAからアドレス信号がバ
スIABに出力される。
【0112】T3から、データがリードされる。また、
T3のC2で、プログラムカウンタPCの内容を内部バ
スGBに読み出して、アドレスバッファMAとインクリ
メンタINCに入力する。アドレスバッファMAからア
ドレス信号がバスIABに出力される。
【0113】T4のC1で前記リードデータが、リード
データバッファDBRに格納される。更に、リードデー
タバッファDBRから内部バスDBに出力され、算術論
理演算器ALUに入力する。算術論理演算器ALUの動
作は無操作とする。T4のC2で、リードデータが、算
術論理演算器ALUから内部バスWBに出力され、テン
ポラリレジスタTRDに格納される。
【0114】T4のC1で、命令コード(bld−0)
が命令デコーダDECに入力されて、制御信号MODS
とともに、命令の内容が解読される。解読結果に従っ
て、制御信号を出力して、各部の制御を行う。MODS
信号が1にセットされているので、テンポラリレジスタ
TRDの指定されたビットをビットアキュムレータに転
送する。
【0115】前記の通り、T4のC1の制御信号con
trolAによる命令リードとPCインクリメントの指
示に従い、T4のC2で、プログラムカウンタPCの内
容を内部バスGBに読み出して、アドレスバッファMA
とインクリメンタINCに入力する。アドレスバッファ
MAからアドレス信号がアドレスバスIABに出力され
る。T5のC1で、インクリメンタINCでインクリメ
ント(+2)された結果が、内部バスWBを経由してプ
ログラムカウンタPCにライトされる。
【0116】一方、T4のC2のcontrolBで、
算術論理演算器ALUの入力データの指示(trd_g
b)を行い、T5のC1のcontrolCで、ALU
制御と、レジスタ格納の指示(wb_r0l)を出力す
る。これに従って、テンポラリレジスタTRDの内容を
内部バスGBに読み出して、算術論理演算器ALUに入
力する。算術論理演算器ALUはBLDS命令を実行す
るために次の動作(bld)を行なう。算術論理演算器
ALUのデコーダ10には、命令コードのビット6〜4
(opcode[6:4]=7)が与えられ、算術論理
演算器ALUの入力セレクタ12はデコーダ10の出力
(decout=H’80)と内部バスGBとの論理積
を、算術論理演算器ALUの入力セレクタ13はデコー
ダ10のデコード出力decoutを出力して、これら
の、論理積演算を行なう。結果が、ゼロ検出回路15に
得られる(zout=gb[7]=trd[7])。
【0117】汎用レジスタR0Lをビットアキュムレー
タとする場合には、内部バスWBの内容をR0Lに格納
する指示(wb_r0l)がなされる。また、キャリフ
ラグ(C)をビットアキュムレータとする場合には、制
御信号wb_r0lの代わりに、ゼロ検出回路15の結
果(zout)をキャリフラグに格納する指示を行なう
ようにする。
【0118】算術論理演算器ALUの出力セレクタ16
により、ゼロ検出回路15の結果をビット0とし、上位
を“0”とした出力データ({7’b0000000,
zout})が生成され、T5のC2で、内部バスWB
に出力される。内部バスWBまたはゼロ検出回路15の
内容が、前記指示に従って、汎用レジスタR0Lまたは
キャリフラグ(C)に格納される。
【0119】T5のC1で、バスIDBの内容(次の命
令)が命令レジスタIRにラッチされ、デコーダDEC
に入力されて、命令の内容が解読される。解読結果に従
って、動作が行われる。T5のC2から命令リードを行
なう。
【0120】前記の通り、第1ワードと第2ワードが分
割されないために、T2のC2からT4のC2まで、連
続命令信号(intmsk)を出力する。本信号によっ
て、割込み要求などが発生していても、命令の実行を継
続することができる。
【0121】R0L以外の汎用レジスタを使用する場合
には、命令コードのビット3〜0(op[3:0])を
命令デコーダDECでデコードして、T5のC1で、前
記制御信号wb_r0lに代えて、指定された汎用レジ
スタへ、内部バスWBからの入力を行なう指示を行なう
ようにすればよい。
【0122】図8にはビット転送命令の第2の例(BL
DMOV #6,@FFFFFD,@FFFF00)の
実行タイミングを示す。
【0123】T2のC1で命令コード(bld−1)が
命令デコーダDECに入力されて、命令の内容が解読さ
れる。これは、前記BLDS命令の第1ワードと同様で
ある。T4のC1で命令コードの第2ワード(bst−
1)が命令デコーダDECに入力されて、命令の内容が
解読される。解読結果に従って、制御信号を出力して、
各部の制御を行う。即ち、8ビット絶対アドレスのアド
レッシングモードであるので、この絶対アドレスに基づ
き、デスティネーションデータのリードを行い、リード
結果をリードデータバッファDBRに格納する。リード
に使用した実効アドレス(EA2=FFFF00)は、
T5のC1でテンポラリレジスタTRAに格納する。ま
た、制御信号MODD=1とする。第1ワードの出力し
た制御信号MODS=1を継続する。
【0124】T5のC1で命令コード(bldmov−
0)が命令デコーダDECに入力されて、制御信号MO
DS、MODDとともに、命令の内容が解読される。解
読結果に従って、制御信号を出力して、各部の制御を行
う。制御信号MODS、MODDが1にセットされてい
るので、リードデータバッファDBRの指定されたビッ
トを、ビット0とし、上位を0としたデータを、テンポ
ラリレジスタTRDに格納するように制御を行なう。前
記同様に、T5のC1のcontrolAによる命令リ
ードとプログラムカウンタPCのインクリメントを行な
う。
【0125】T5のC2のcontrolBで、算術論
理演算器ALUの入力データの指示(dbr_gb)を
行い、T5のC1のcontrolCで、算術論理演算
器ALUに対する制御と、レジスタ格納の指示(wb_
trd)を出力する。これに従って、リードデータバッ
ファRDBの内容を内部バスGBに読み出して、算術論
理演算器ALUに入力する。算術論理演算器ALUはB
LDS命令と同様の動作を実行するために次の動作(b
ld)を行なう。算術論理演算器ALUのデコーダ10
には、命令コードのビット6〜4(IR[6:4]=
6)が与えられ、算術論理演算器ALUの入力セレクタ
12はデコーダ出力(decout=H’40)と内部
バスGBとの論理積を、算術論理演算器ALUの入力セ
レクタ13はデコーダ10のデコード出力を出力して、
これらの、論理積演算を行なう。結果が、ゼロ検出回路
15に得られる(zout=gb[6]=dbr
[6])。
【0126】算術論理演算器ALUの出力セレクタ16
により、ゼロ検出回路15の結果をビット0とし、上位
を0とした出力データ(data0={7’b0000
000,zout})が生成され、T6のC2で、内部
バスWBに出力される。内部バスWBの内容が、前記指
示(wb_trd)に従って、テンポラリレジスタTR
Dに格納される。
【0127】T5のC2で、命令コード(mov−s
t)を発生する制御信号を生成し、当該命令コードは、
T6のC1から命令デコーダDECに入力する。この命
令コード(mov−st)は、テンポラリレジスタTR
Aをアドレスレジスタとし、テンポラリレジスタTRD
をデータレジスタとする転送命令同様の動作を行う。即
ち、T6のC2で、テンポラリレジスタTRAに格納さ
れているデスティネーション実効アドレス(EA2)を
GBに読み出し、アドレスバッファMAを経由してアド
レスバスIABに出力するとともに、バイトデータライ
トのバスコマンドを発行する。T7のC2で、テンポラ
リレジスタTRDに格納されている演算結果(data
o)をデータバスDBに読み出し、ライトデータバッフ
ァDBWを経由して、データバスIDBに出力して、デ
スティネーションのメモリアドレスに演算結果を書込
む。T7のC2から命令フェッチを行なうとともに、プ
ログラムカウンタPCのインクリメントを行なう。これ
によって、命令コード第2ワード(bst−1)で、命
令フェッチとPCインクリメントを行なわなかった分を
回復する。
【0128】デスティネーション側メモリにライトする
場合、命令コード(mov−st)をCPU1の内部で
発生することにより、命令コードを短縮し、処理時間を
短縮することができる。テンポラリレジスタTRAの内
容を参照することによって、再度実効アドレスの計算を
行なう必要がなく、更に、処理時間を短縮することがで
きる。既存の転送命令(MOV.B R0L,@ER
0)に類似する動作を採ることにより、設計を容易にす
ることができる。なお、命令コードの第1ワード(bl
d−1)でも、共通化のため、テンポラリレジスタTR
Aへの格納を行なっている。
【0129】前記同様に、第1ワードと第2ワード以降
が分割されないために、T2のC2からT6のC2ま
で、連続命令信号(intmsk)を出力する。本信号
によって、割込み要求などが発生していても、命令の実
行を継続することができる。
【0130】図9にはビット転送命令の第3の例(BS
TS#5,@FFFF10)の実行タイミングを示す。
T2のC1で命令コードの第1ワード(bst−1)が
命令デコーダDECに入力されて、命令の内容が解読さ
れる。解読結果に従って、制御信号を出力して、各部の
制御を行う。これは、図8の命令コードの第2ワード
(bst−1)と同一である。
【0131】T4のC1で、命令コードの第2ワード
(bst−0)が命令デコーダDECに入力されて、制
御信号MODDとともに、命令の内容が解読される。解
読結果に従って、制御信号を出力して、各部の制御を行
う。制御信号MODDが1にセットされているので、リ
ードデータバッファDBRの指定されたビットに、汎用
レジスタR0Lのビット0を格納し、その他のビットを
保持して、テンポラリレジスタTRDに格納するように
制御を行なう。
【0132】前記同様に、T3のC1のcontrol
Aによる命令リードとPCのインクリメントを行なう。
【0133】T3のC2のcontrolBで、算術論
理演算器ALUの入力データの指示(dbr_gb、r
0l_db)を行い、T4のC1のcontrolC
で、算術論理演算器ALUに対する制御と、レジスタ格
納の指示(wb_trd)を出力する。これに従って、
リードデータバッファDBRの内容を内部バスGBに読
み出して、算術論理演算器ALUに入力する。また、汎
用レジスタR0Lの内容を内部バスDBに読み出す。算
術論理演算器ALUはBSTS命令を実行するために次
の動作(bst)を行なう。算術論理演算器ALUのデ
コーダ10には、命令コードのビット6〜4(IR
[6:4]=5)と、内部バスDBのビット0(ビット
アキュムレータである汎用レジスタR0Lのビット0)
が与えられ、算術論理演算器ALUの入力セレクタ12
はデコーダ10の出力(decout=H’20)の反
転と内部バスGBとの論理積を、算術論理演算器ALU
の入力セレクタ13はデコーダ10の出力とビットアキ
ュムレータの論理積(H’20&8{DB[0]})を
出力して、これらの、論理積演算を行なう。
【0134】算術論理演算器ALUの出力セレクタ16
に結果({2’b00,DB[0],5’b0000
0})が生成され、T6のC2で、内部バスWBに出力
される。内部バスWBの内容が、前記指示(wb_tr
d)に従って、テンポラリレジスタTRDに格納され
る。T4のC2で、命令コード(mov−st)を発生
する制御信号を生成し、当該命令コードは、T5のC1
からデコーダDECに入力する。これは、図8と同一で
ある。
【0135】図10にはビット転送命令の第4の例(B
MOV #6,@FFFFFC,#5,@FFFF2
1)の実行タイミングを示す。命令コードの第3ワード
以外の動作は、図8と同一である。
【0136】T5のC1で命令コード(bmov−0
b)が命令デコーダDECに入力されて、制御信号MO
DS、MODDとともに、命令の内容が解読される。解
読結果に従って、制御信号を出力して、各部の制御を行
う。制御信号MODS、MODDが1にセットされてい
るので、テンポラリレジスタTRDの指定されたビット
(ビット6)を、リードデータバッファDBRの指定さ
れたビット(ビット5)に代入し、その他のビットを保
持したデータを、テンポラリレジスタTRDに格納する
ように制御を行なう。算術論理演算器ALUは、BMO
V命令の第2モード(bmov2)で動作する。
【0137】前記同様に、T5のC1のcontrol
Aによる命令リードとプログラムカウンタPCのインク
リメントを行なう。
【0138】T3のC2のcontrolBで、算術論
理演算器ALUの入力データの指示(dbr_gb)を
行い、T4のC1のcontrolCで、算術論理演算
器ALUに対する制御と、レジスタ格納の指示(wb_
trd)を出力する。これに従って、リードデータバッ
ファDBRの内容を内部バスGBに読み出して、算術論
理演算器ALUに入力する。
【0139】算術論理演算器ALUはBMOV命令の第
2モードを実行するために次の動作を行なう。算術論理
演算器ALUのデコーダ10には、命令コードのビット
6〜4(IR[6:4]=5)が与えられ、入力セレク
タ12はデコーダ10の出力(decout=H’2
0)の反転と内部バスGBとの論理積を、入力セレクタ
13はデコーダ10の出力とテンポラリレジスタTRD
の指定されたビット(ビット6)trdbitの論理積
(H’20&8{trdbit})を出力して、これら
の、論理積演算を行なう。
【0140】出力セレクタ16に結果(data0=
{DBR[7:6],trdbit,DBR[4:
0]})が生成され、T6のC2で、内部バスWBに出
力される。内部バスWBの内容が、前記指示(wb_t
rd)に従って、テンポラリレジスタTRDに格納され
る。T4のC2で、命令コード(mov−st)を発生
する制御信号を生成し、当該命令コードは、T5のC1
からデコーダDECに入力する。これは、図8と同一で
ある。
【0141】図11にはビット転送命令の第5の例(B
MOV #4,@FFFFFB,#3,R2L)の実行
タイミングを示す。全体的な動作は、概略、図7と同じ
であり、命令コードの第1ワード(bld−1)の動作
は、図7と同一である。
【0142】命令コードの第2ワードの動作は、概略、
図10と同じであるが、指定された汎用レジスタ(デス
ティネーション汎用レジスタRd=R2L)を内部バス
GBに読み出し、結果(data0={R2L[7:
4],trdbit,R2L[2:0]})は、指定さ
れた汎用レジスタ(R2L)に格納して、終了する。
【0143】図12にはビット転送命令の第6の例(B
MOV #2,R3H,#1,@FFFF32)の実行
タイミングを示す。命令コードの第2ワード以外の動作
は、図9と同一である。
【0144】T4のC1で、命令コード(bmov−0
a)が命令デコーダDECに入力されて、制御信号MO
DDとともに、命令の内容が解読される。制御信号MO
DDが1にセットされているので、指定された汎用レジ
スタ(R3H)の指定されたビット(ビット2)をテン
ポラリレジスタTRDの指定されたビット(ビット1)
に転送する。算術論理演算器ALUは、BMOV命令の
第1モードで動作する。
【0145】前記同様に、T4のC1のcontrol
Aによる命令リードとプログラムカウンタPCのインク
リメントを行なう。
【0146】T3のC2のcontrolBで、算術論
理演算器ALUの入力データの指示(rs_gb:R3
Hを指定するためr3h_gb)を行い、T4のC1の
controlCで、算術論理演算器ALUに対する制
御と、ゼロ検出回路15の出力のレジスタ格納の指示
(bittrd)を出力する。これに従って、汎用レジ
スタR3Hの内容を内部バスGBに読み出して、算術論
理演算器ALUに入力する。
【0147】算術論理演算器ALUはBMOV命令の第
1モードを実行するために次の動作(bmov1)を行
なう。算術論理演算器ALUのデコーダ10には、命令
コードのビット6〜4(IR[6:4]=2)が与えら
れ、入力セレクタ12はデコーダ10の出力(deco
ut=H’02)の反転と内部バスGBとの論理積を、
入力セレクタ13はデコーダ10の出力を出力して、こ
れらの、論理積演算を行なう。
【0148】ゼロ検出回路15に結果(zout=|
(R3H[7:0]& H’02)=R3H[2])が
生成され、T6のC2で、前記指示(bittrd)に
従って、テンポラリレジスタTRDのビット1に格納さ
れる。そのほかのビットは保持され、結果(data0
={TRD[7:2],zout,TRD[0]})が
得られる。
【0149】T4のC2で、命令コード(mov−s
t)を発生する制御信号を生成し、当該命令コードは、
T5のC1からデコーダDECに入力する。これは、図
8と同一である。
【0150】図13にはビット転送命令の第7の例(B
MOV #7,R4H,#6,R5L)の実行タイミン
グを示す。命令コードの第1ワード(mov−1)は、
指定された汎用レジスタ(R4H)をテンポラリレジス
タTRDに転送する。これは既存の命令(MOV.B
R4H,R0L)に類似する動作を採ることにより、設
計を容易にすることができる。第2ワードの動作は、図
11と同一である。
【0151】図14には本発明に係るデータ処理装置の
一例として前記CPUを内蔵するマイクロコンピュータ
が示される。
【0152】マイクロコンピュータ30は、前記CPU
1、システムコントローラ(SYSC)31、割込コン
トローラ(INT)32、CPU1の処理プログラムな
どを格納するメモリであるROM33、CPU1の作業
領域並びにデータの一時記憶用のメモリであるRAM3
4、タイマ35、シリアルコミュニケーションインタフ
ェース(SCI)36、A/D変換器37、第1乃至第
9入出力ポートIOP1〜IOP9、クロック発振器
(CPG)38等の機能ブロック若しくは機能モジュー
ルから構成され、公知の半導体製造技術により1つの半
導体基板上に形成される。
【0153】前記マイクロコンピュータ30は、電源端
子として、グランドレベル(Vss)、電源電圧レベル
(Vcc)、アナロググランドレベル(AVss)、ア
ナログ電源電圧レベル(AVcc)、アナログ基準電圧
(Vref)の入力端子を有すると共に、専用制御端子
として、リセット(RES)、スタンバイ(STB
Y)、モード制御(MD0、MD1)、クロック入力
(EXTAL、XTAL)の各端子を有する。CPG3
8の端子EXTAL、XTALに接続される水晶発振子
またはEXTAL端子に入力れる外部クロックに基づい
て生成される基準クロック(システムクロック)φに同
期して、マイクロコンピュータ30は動作を行う。この
基準クロック信号φの1周期をステートと呼ぶ。
【0154】マイクロコンピュータ30の機能ブロック
は、内部バス39によって相互に接続される。内部バス
39は、アドレスバス、データバスの他、バスコマンド
やリード信号・ライト信号・バスサイズ信号などが伝達
されるコントロールバスを含む。特に図示はしないが、
前記の通り、内部アドレスバスはその位相によって、I
AB、PABの2種類があり、内部データバスもその位
相によって、IDB、PDBが存在する。IABとPA
B、IDBとPDBは相互にインタフェースされる。内
部バスのデータバス幅は16ビットとする。CPU1は
内蔵ROM33、RAM34を1ステートでリード/ラ
イト可能とする。かかる内部バス39を介して、CPU
1は、前記機能ブロックやモジュールをリード/ライト
する。
【0155】ROM33は、CPU1の処理プログラム
を格納する。フラッシュメモリやマスクROMであっ
て、フラッシュメモリの場合は、所定PROMライタで
使用者が書込むことが可能である。マスクROMは、使
用者が提供する所定のオブジェクトファイルに基づい
て、製造工程での書込みが行われる。RAM34は、前
記パラメータなどを保持したりする。
【0156】システムコントローラ(SYSC)31
は、マイクロコンピュータ30の全体の状態を制御(動
作モードや低消費電力状態)するとともに、CPU1の
制御を行なう制御レジスタCPUCRを持ち、前記ビッ
トアキュムレータとしてCCR又は汎用レジスタの何れ
を用いるか等を指示する制御情報が設定される。
【0157】タイマ35、SCI36、A/D変換器3
7、入出力ポートIOP1〜IOP9、SYSC31、
INT32、CPG38が有する制御レジスタを総称し
て、内部I/Oレジスタと呼ぶ。これらには、ビット単
位で意味を持つビットやフラグが含まれる。例えば、出
力ポートや、割込み要因フラグなどがある。これらは、
C言語プログラムでは、構造体としてビットフィールド
宣言して取り扱われる。
【0158】各入出力ポートIOP1〜IOP9は、ア
ドレスバス、データバス、バス制御信号あるいはタイマ
35、SCI36、A/D変換器37の入出力端子と兼
用されている。すなわち、タイマ35、SCI36、A
/D変換器37は、それぞれ入出力信号を有し、入出力
ポートと兼用にされた端子介して、外部と入出力される
ものである。例えばIOP5、IOP6、IOP7はタ
イマ35の入出力端子と兼用、IOP8はSCI36の
入出力端子と兼用にされている。アナログデータの入出
力端子は、入出力ポートIOP9と兼用にされている。
【0159】前記マイクロコンピュータ30にリセット
信号RESが与えられると、CPU1を始めとし、マイ
クロコンピュータ30はリセット状態になる。このリセ
ットが解除されると、CPU1は所定のアドレスからス
タートアドレスをリードして、このスタートアドレスか
ら命令のリードを開始するリセット例外処理を行う。こ
の後、CPU1は逐次、ROM33などから命令をリー
ドし、解読して、その解読内容に基づいてデータの処理
或はRAM34、タイマ35、SCI36等とのデータ
転送を行う。即ち、CPU1は、入出力ポートIOP1
〜IOP9、A/D変換器37などか入力されるデー
タ、或はSCI36などから入力される指示を参照しつ
つ、ROM33などに記憶されている命令に基づいて処
理を行い、その結果に基づいて、入出力ポートIOP1
〜IOP9、タイマ35などを使用しつて、外部に信号
を出力し、各種機器の制御を行うものである。
【0160】タイマ35、SCI36、外部信号などの
状態を割込み信号として、CPU1に伝達することがで
きる。割込信号は、A/D変換器37、タイマ35、S
CI36、入出力ポートIOP1〜IOP9が出力し、
割込コントローラ(INT)32はこれを入力して、所
定のレジスタなどの指定に基づて、CPU1に割込要求
信号を与える。割込要因が発生すると、CPU1に割込
要求信号が発生され、CPU1は命令の切れ目で、実行
中の処理を中断し、例外処理状態を実行し、所定の処理
ルーチンに分岐し、所望の処理を行い、割込要因をクリ
アしたりする。所定の処理ルーチンの最後には、通常復
帰命令がおかれ、この命令を実行することによって前記
中断した処理を再開する。
【0161】図15には前記CPU1の開発環境の概略
が示される。使用者は、各種エディタなどを用いて、C
言語乃至アセンブリ言語でプログラムを作成する。これ
は通常、複数のモジュールに分割して作成される。
【0162】Cコンパイラ40は、使用者の作成したそ
れぞれのC言語ソースプログラムを入力し、アセンブリ
言語ソースプログラム若しくはオブジェクトモジュール
を出力する。アセンブラ41は、アセンブリ言語ソース
プログラムを入力し、オブジェクトモジュールを出力す
る。リンケージエディタ42は、上記Cコンパイラ40
やアセンブラ41の生成した、複数のオブジェクトモジ
ュールを入力して、各モジュールの外部参照や相対アド
レスなどの解決を行い、1つのプログラムに結合して、
ロードモジュールを出力する。ロードモジュールは、シ
ミュレータ/デバッガ43に入力して、パーソナルコン
ピュータなどのシステム開発装置上で、CPU1の動作
をシミュレーションし、実行結果を表示し、プログラム
の解析や評価を行なうことができる。また、エミュレー
タ44に入力して、実際の応用システム上などで動作す
る、いわゆるインサーキットエミュレーションを行な
い、マイクロコンピュータ全体としての、実動作の解析
や評価を行なうことができる。さらに、ロードモジュー
ルをPROMライタ45に入力して、マイクロコンピュ
ータ30の内蔵ROM33がフラッシュメモリなどの場
合や、外部のフラッシュメモリなどに、作成したプログ
ラムをロードすることができる。必要に応じて、オブジ
ェクトコンバータなどによって、所望のフォーマットに
変換する。このほかに、ライブラリアンとして、汎用的
なサブルーチンなどを提供することもできる。
【0163】図16には前記CPU1のシステム開発装
置におけるビットアキュムレータの指定方法を例示す
る。ここでは、CPU1の命令を選択する場合を示す。
【0164】(a)に例示されるように、パーソナルコ
ンピュータなどのシステム開発装置上のディスプレイで
プロンプトが表示された状態で、例えば、“SET C
PU= BITACC−R0L”と入力すればよいよう
にする。
【0165】或いは、(b)に例示されるように、プロ
ンプトが表示された状態で、“SET CPU”とコマ
ンドを入力し、これに対して、CPUの種類及び動作モ
ードのメニューを、例えば、“BITACC (1.B
ITACC−R0L、2.BITACC−C)”と表示
するとともに、メニュー番号の入力を要求し、使用者が
メニューの番号1〜2のいずれかを入力すればよいよう
にする。そのほかのオプションがある場合には、引き続
き入力可能にすればよい。
【0166】このほか、ウィンドウのドロップダウンメ
ニューで選択可能にしてもよいし、ワークステーション
などであれば、Cシェルコマンドとして入力することも
できる。かかる情報は、CPU情報ファイル(CPU定
義情報)などとして保存され、図15の通りコンパイル
時などに参照される。更に、アセンブラやCコンパイラ
などの、ソースプログラムの制御命令として、ビットア
キュムレータの選択などを入力することができる。
【0167】また、(c)に例示されるようにCコンパ
イラを実行する場合のオプションとして、設定してもよ
い。例えば、“ccomp−bitacc=r0l s
ource.c”と入力する。オプション「−bita
cc=r0l」でビットアキュムレータをR0Lとし、
「source.c」をコンパイルする。
【0168】Cコンパイラは、例えば、“flag=i
op17;”に対し、キャリフラグ(C)をビットアキ
ュムレータとする場合には、 MOV.B #00,R0L BLD #7,@iop1 BST #0,R0L MOV.B R0L,@flag などのプログラムを生成し、ビットアキュムレータをR
0Lとする場合には、 BLD #7,@iop1 MOV.B R0L,@flag などのプログラムを生成するようにされる。
【0169】これらは、Cソースプログラムの字句や意
味の解析を行い、最適化を行なう段階は共通にでき、そ
の後、CPUに応じたプログラムを生成する段階でのみ
相違される。
【0170】Cコンパイラは、選択された命令の種類及
び動作モードに従って、使用可能な、オペレーション、
データサイズ、アドレッシングモードの組合せで示され
る命令などを判別して、C言語によるプログラムを、C
PU1の命令に変換し、アセンブリ言語プログラムやオ
ブジェクトモジュールとして出力する。
【0171】Cコンパイラ自体には、C言語によるプロ
グラムを、CPU1の命令に変換する機能の他、C++
言語によるプログラムのコンパイルや、モジュール間最
適化などといった、CPU1の命令セットとは直接関係
のない機能の向上が図られているが、CPU毎の個別の
コンパイラでは、これらの機能向上を全ての個別のコン
パイラに適用しなければならない。本発明のように、共
通のCコンパイラとしておけば、前記、CPU1の命令
セットとは直接関係のない機能向上を図ることが容易に
なり、また、開発効率などを向上することができる。
【0172】前記レジスタCPUCRの設定は上記ビッ
トアキュムレータの選択と同一であるようにする。これ
はアセンブリ言語で記述する場合には、レジスタCPU
CRに設定すべき値をxyとして、 MOV.B #xy,R0L MOV.B R0L,@CPUCR とすればよい。C言語ソースプログラムに埋め込むこと
も可能である。C言語で、 CPUCR=xy; などとしてもよい。
【0173】以上説明したCPUなどによれば、以下の
作用効果を得るものである。
【0174】〔1〕メモリ上のデータの任意のビット
を、所定の汎用レジスタ乃至メモリ上のデータの、所定
のビット(例えば、ビット0)に格納し、そのほかのビ
ットを固定的な値(0乃至符号拡張)などとする命令を
持つことにより、例えば、C言語で記述される、構造体
上のビットフィールド宣言された値の、キャラクタ型の
パラメータへの代入などを、容易に実行可能にし、命令
の実行時間を短縮したり、命令コード長を短縮したりす
ることができる。例えば、BLDS命令とMOV命令を
組合せることにより、従来技術における命令コード6ワ
ード、実行ステート数8ステートを、3ワード、5ステ
ートに短縮できる。機器制御用のマイクロコンピュータ
においてはかかる動作が頻出するから、効果は更に大き
くなる。ひいては、マイクロコンピュータの処理性能を
向上して、機器制御の高速化や高機能化などに寄与でき
る。C言語に即した命令を持つことによって、コンパイ
ルや最適化などの開発装置の開発効率の向上を図ること
ができる。
【0175】〔2〕ビットアキュムレータを、キャリフ
ラグ(C)ではなく、汎用レジスタとすることにより、
操作すべきビットを、ビットアキュムレータに保持した
まま、アドレス計算などのほかの演算の実行を可能にし
て、プログラミングを容易にすることができる。また、
BSTS命令や、そのほかのビット論理演算命令も、同
一のビットアキュムレータを使用して、ビット単位の論
理演算を容易に行なうことができる。
【0176】〔3〕ビットアキュムレータを、キャリフ
ラグ(C)とするか、汎用レジスタとするかを指定可能
にすることにより、多様な使用方法に対応できる。キャ
リフラグ(C)をビットアキュムレータとする既存のC
PUが存在する場合には、このソフトウェア資産を有効
に利用することができる。キャリフラグ(C)をビット
アキュムレータとする場合には、汎用レジスタの本数が
十分に多くはない場合などであっても、限られた資源を
有効に利用することができる。
【0177】開発装置は、上記ビットアキュムレータを
選択する手段を持つことによって、Cコンパイラなどを
共通にし、開発効率を向上することができる。共通化に
よって、移植やメンテナンスの工数なども低減できる。
使用者も、ビットアキュムレータの使用方法に拘らず、
共通に利用可能であって、便利である。ビットアキュム
レータの使用方法を変更したり、両方のプログラムで比
較を行なったりすることが直ちに行なえるので、開発期
間の短縮に寄与したり、不所望の費用を抑止できる。
【0178】〔4〕ビットアキュムレータとして使用す
る汎用レジスタを選択可能にすることによって、複数の
ビットを操作するような場合に、プログラミングの柔軟
性を向上できる。例えば、 flag1=iop17; flag2=iop27; という場合において、flag1とflag2を連続す
るアドレスに配置していれば、 BLD #7,@iop1,R0L BLD #7,@iop2,R0H MOV.W R0,@flag などとして、メモリに対するライトを共通化して、高速
化を図ったりすることができる。
【0179】〔5〕任意のビットから別の任意のビット
への転送を可能にして、プログラミングを容易にし、実
行時間を短縮できる。内蔵RAM上に、構造体のビット
フィールドなどを宣言して、複数のビットを保持して、
内蔵RAMの利用効率を向上することができる。ソース
及びデスティネーションを、汎用レジスタ/メモリか
ら、それぞれ独立に選択可能にして、プログラミングを
更に容易にできる。
【0180】〔6〕既存の、ビット転送命令の命令コー
ドと、その機械語や制御を共通化し、命令デコーダの、
従来の設計資産を有効に利用することができ、論理的な
規模の追加と変更を最小限にし、論理的・物理的規模の
増大を最小限にできる。また、開発に必要な期間を短縮
し、資源を節約することができる。
【0181】命令コードを複数のワードからなるように
し、メモリからの転送を行なう命令実行機能、ビット操
作自体を行なう命令実行機能、メモリへの転送命令機能
を別々の命令コードのワードで制御するようにし、それ
ぞれを既存の類似の命令と同様の動作を行なうように
し、開発期間を短縮することができる。前記メモリから
の転送を行なう命令実行機能やメモリへの転送命令機能
は、ビット転送命令の種類に共通に利用できるから、ま
た、ビット操作自体を行なう命令実行機能は、汎用レジ
スタに対するものと共通に利用できるから、論理規模の
増加を抑止できる。前記メモリからの転送を行なう命令
実行機能を共通にしておくことによって、アドレッシン
グモードの種類を増やすことも容易にできる。
【0182】〔7〕テンポラリレジスタTRDの様なラ
ッチ手段には、指定されたビットの状態を判定する手段
を設け、算術論理演算器ALUなどに読み出したりする
ことなく、所定のビットの状態を判定できるようにする
ことにより、ビット転送命令の全体的な動作を変更する
ことなく、実現できるから、変更する部分を小さくし、
また論理的規模の増加を最小限にすることができる。同
様に、所定のビットのみの入力を行なう手段を設けるこ
とによって、変更する部分を小さくし、また論理的規模
の増加を最小限にすることができる。
【0183】任意ビット間のビット転送命令(BMO
V)の第1モード、第2モードは、それぞれBLDS命
令、BSTS命令とALUの動作を共通にでき、論理規
模の増加を抑止し、開発期間の短縮を図ることができ
る。
【0184】任意ビット間のビット転送命令(BMO
V)の第1モード、第2モードとでは、命令コード中
の、ソース側/デスティネーション側のビット番号フィ
ールドを入れ替えて、デコーダに入力する命令コードの
ビット位置は共通にし、論理の簡略化を図ることができ
る。
【0185】以上本発明者等によってなされた発明を実
施例に限定されるものではなく、その要旨を逸しない範
囲において種々変更可能である。例えば、ビット0固定
転送と任意ビット間転送の両方を持つ必要はなく、一方
のみ、乃至それらの内の一部の命令やアドレッシングモ
ードのみであってもよい。
【0186】ビットアキュムレータは、汎用レジスタR
0Lのビット0とするか、キャリ(C)フラグとするか
の選択に限定されない。両方を使用可能にし、命令の種
類を別にしたり、アドレッシングモードなどで指定可能
にしてもよい。汎用レジスタR0Lのほか、任意の汎用
レジスタを指定可能にできることは前記の通りである。
ビット0を使用するほか、ビット7など、最上位ビット
としてもよい。上位のビットは、0とするほか、ビット
0と同じ内容(例えば、H’00、FFを格納)にでき
ることは前記の通りである。これらを選択可能にした
り、命令やアドレッシングモードの種類などで指定可能
にしてもよい。
【0187】ビットを転送するソースまたはデスティネ
ーションのデータのサイズは、バイトに限定されず、ワ
ードなどであってもよく、当該CPUの持つデータサイ
ズに応じて適宜選択可能である。複数のサイズを使用可
能にしてもよい。
【0188】ビットを転送するソースまたはデスティネ
ーションのアドレッシングモードも、レジスタ直接や8
ビット絶対アドレスに限定されず、16ビット乃至32
ビット絶対アドレスやレジスタ間接など、当該CPUの
持つアドレッシングモードに応じて適宜使用可能であ
る。ソースとデスティネーションのアドレッシングモー
ドは相互に一致している必要はない。
【0189】上述の例では、ソースまたはデスティネー
ションのデータをリードする命令コードと、ビット転送
の演算動作を実行する命令コードと、実行結果をライト
する命令コードとに分けて実行するものとしたが、命令
コードの構成や、命令コードの解読方法や、命令の実行
方法については種々の方法を採ることができる。例え
ば、BLDMOV命令は、メモリ−メモリのBMOV命
令と共通にシーケンスになるようにしてあるが、第2ワ
ードと第3ワードの順序を入れ替えて、デスティネーシ
ョンのメモリはリードを行なわず、演算結果(TRD)
のライトのみを行なうようにしてもよい。この方が1ス
テートの短縮が可能である。この場合、ライト型転送命
令と同等の動作を行なう命令コード(mov−st)の
生成は行なわないようにする。
【0190】制御信号は、MODS、MODDを用いる
ものとしたが、そのほかの制御信号に分割することもで
きる。また、命令コードの基本単位16ビットに限定す
る必要はなく、8ビット或いは32ビットなど任意のビ
ット幅とできる。
【0191】CPUの内部構成、例えば、内部バスやA
LUの構成や、動作タイミングなどは随時変更可能であ
ることは言うまでもない。マイクロコンピュータのその
他の機能ブロックについても何等制約されない。
【0192】以上の説明では主として本発明者によって
なされた発明をその背景となった利用分野であるマイク
ロコンピュータに適用した場合について説明したが、そ
れに限定されるものではなく、その他のマイクロコンピ
ュータまたはデータ処理装置も適用可能であり、本発明
は少なくとも、命令を解読して処理し、演算処理を行な
うデータ処理装置に適用することができる。
【0193】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
【0194】すなわち、アドレス空間上のデータを読み
込んで、この所望のビットの状態を検出し、汎用レジス
タの所定のビット(例えば、ビット0)に格納するとと
もに、この汎用レジスタのその他のビットを所定の状態
(例えば0)とする命令(BLDS命令)を有すること
により、機器制御用マイクロコンピュータにおいて、C
言語などの高級言語でプログラムを作成した場合など
で、ビット操作(特にビットの状態をパラメータなどと
して保存する場合)の命令コード長を短縮し、実行時間
の短縮を実現することができる。上記において、汎用レ
ジスタではなく、所望のアドレス空間上に格納する命令
(BLDMOV命令)を持つことにより、更に、命令コ
ード長、実行時間の短縮を図ることができる。任意ビッ
ト間のビット転送命令(BMOV命令)を持つことによ
り、命令コード長、実行時間の短縮と、RAMなどのメ
モリの使用効率を向上することができる。
【図面の簡単な説明】
【図1】本発明に係るデータ処理装置の一例であるCP
Uの命令セットに含まれるビット転送命令(BLDS、
BSTS、BLDMOV、BMOV)の全体的な説明図
である。
【図2】本発明に係るデータ処理装置の一例であるCP
Uに内蔵されている汎用レジスタ及び制御レジスタの構
成例を示す説明図である。
【図3】ビット0固定転送命令であるビット転送命令
(BLDS、BSTS、BLDMOV)及び任意ビット
間のビット転送命令(BMOV)の命令フォーマット図
である。
【図4】本発明に係るデータ処理装置の一例であるCP
Uの一例を示すブロック図である。
【図5】算術論理演算器のビット転送命令に関係する部
分を例示するブロック図である。
【図6】テンポラリデータレジスタの一例を示すブロッ
ク図である。
【図7】ビット転送命令の第1の例(BLD #7,@
FFFFFE)の実行タイミングを例示するタイミング
チャートである。
【図8】ビット転送命令の第2の例(BLDMOV #
6,@FFFFFD,@FFFF00)の実行タイミン
グを例示するタイミングチャートである。
【図9】ビット転送命令の第3の例(BST #5,@
FFFF10)の実行タイミングを例示するタイミング
チャートである。
【図10】ビット転送命令の第4の例(BMOV #
6,@FFFFFC,#5,@FFFF21)の実行タ
イミングを例示するタイミングチャートである。
【図11】ビット転送命令の第5の例(BMOV #
4,@FFFFFB,#3,R2L)の実行タイミング
を例示するタイミングチャートである。
【図12】ビット転送命令の第6の例(BMOV #
2,R3H,#1,@FFFF32)の実行タイミング
を例示するタイミングチャートである。
【図13】ビット転送命令の第7の例(BMOV #
7,R4H,#6,R5L)の実行タイミングを例示す
るタイミングチャートである。
【図14】本発明に係るデータ処理装置の一例であるマ
イクロコンピュータを示すブロック図である。
【図15】本発明に係るデータ処理装置の一例であるC
PUの開発環境の概略を示す説明図である。
【図16】本発明に係るデータ処理装置の一例であるC
PUのシステム開発装置におけるビットアキュムレータ
の指定方法を例示する説明図である。
【符号の説明】
1 CPU 2 命令制御部 3 実行部 DEC 命令デコーダ ER0〜ER7 汎用レジスタ MA アドレスバッファ ALU 算術論理演算器 10 デコーダ 11 セレクタ 12 入力セレクタ 13 入力セレクタ 14 論理演算回路 15 ゼロ検出回路 16 出力セレクタ TRD テンポラリデータレジスタ 20 デコーダ 21 入力セレクタ 22 レジスタ部 23 出力セレクタ CCR コンディションコードレジスタ PC プログラムカウンタ 30 マイクロコンピュータ

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 読み込んだ命令コードを命令制御手段で
    解読し、その命令を命令実行手段で実行するデータ処理
    装置であって、 前記命令実行手段は、命令実行に利用されるレジスタ手
    段及び演算手段を有し、 前記命令制御手段は第1の所定の命令を解読すると、命
    令実行手段に、アドレス空間上のデータを読み込ませ、
    前記データの所望のビットの状態を検出させ、前記レジ
    スタ手段を所定の状態に制御するものであり、 前記レジスタ手段の所定の状態は、前記レジスタ手段の
    所定のビットに前記データの所望のビットの状態が反映
    されるともに、前記レジスタ手段のその他のビットが一
    定の値にされる状態であることを特徴とするデータ処理
    装置。
  2. 【請求項2】 前記命令制御手段は第2の所定の命令を
    解読すると、命令実行手段に、アドレス空間上のデータ
    を読み込ませ、前記データの所望のビットの状態を検出
    させ、アドレス空間上の別のデータを所定の状態に制御
    するものであり、 前記アドレス空間上の別のデータの所定の状態は、当該
    別のデータの所定のビットに前記データの所望のビット
    の状態が反映されるともに、当該別のデータのその他の
    ビットが一定の値にされる状態であることを特徴とする
    請求項1記載のデータ処理装置。
  3. 【請求項3】 前記レジスタ手段として、フラグを格納
    する状態レジスタ手段と汎用レジスタ手段とを含み、 前記データの所望のビットの状態を反映させる前記レジ
    スタ手段として前記状態レジスタ手段又は汎用レジスタ
    手段との何れを対象とするかを指示する手段を有して成
    るものであることを特徴とする請求項1又は2記載のデ
    ータ処理装置。
  4. 【請求項4】 前記命令制御手段は第3の所定の命令を
    解読すると、命令実行手段に、レジスタ手段又はアドレ
    ス空間上のデータを読み込ませ、前記データの所望のビ
    ットの状態を検出させ、検出した状態を、別のレジスタ
    手段又はアドレス空間上の別のデータの所望のビットの
    状態に反映させる制御を行なうものであることを特徴と
    する請求項1乃至3の何れか1項記載のデータ処理装
    置。
  5. 【請求項5】 前記命令実行部はテンポラリデータラッ
    チ手段を有し、このテンポラリデータラッチ手段は、所
    望のビットの状態を出力する機能、所望のビットのみの
    入力を行なう機能の少なくとも一方を有し、前記テンポ
    ラリデータラッチ手段の出力が前記演算手段の入力に接
    続可能にされて成るものであることを特徴とする請求項
    4記載のデータ処理装置。
JP2000161137A 2000-05-26 2000-05-26 データ処理装置 Withdrawn JP2001337821A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000161137A JP2001337821A (ja) 2000-05-26 2000-05-26 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000161137A JP2001337821A (ja) 2000-05-26 2000-05-26 データ処理装置

Publications (1)

Publication Number Publication Date
JP2001337821A true JP2001337821A (ja) 2001-12-07

Family

ID=18665210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000161137A Withdrawn JP2001337821A (ja) 2000-05-26 2000-05-26 データ処理装置

Country Status (1)

Country Link
JP (1) JP2001337821A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346291C (zh) * 2005-12-02 2007-10-31 浙江大学 多地址空间的块传输指令的控制方法及其装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346291C (zh) * 2005-12-02 2007-10-31 浙江大学 多地址空间的块传输指令的控制方法及其装置

Similar Documents

Publication Publication Date Title
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
JP2003085000A (ja) トレース情報生成装置およびその方法
JP4004915B2 (ja) データ処理装置
JP2001202243A (ja) データ処理装置
JP2006313561A (ja) データ処理装置
JP4073721B2 (ja) データ処理装置
JP3786575B2 (ja) データ処理装置
JP3727395B2 (ja) マイクロコンピュータ
JP2001337821A (ja) データ処理装置
JP3841820B2 (ja) マイクロコンピュータ
JP3839835B2 (ja) データ処理装置及びマイクロコンピュータ
JP3760093B2 (ja) マイクロコンピュータ
JP2504235B2 (ja) デ―タ処理装置
JP4545777B2 (ja) データ処理装置
JP3740321B2 (ja) データ処理装置
JP4284559B2 (ja) マイクロプロセッサ、マイクロコンピュータ、電子機器
JP4498338B2 (ja) データ処理装置
JP4029016B2 (ja) データ処理装置
JP2002132499A (ja) データ処理装置及び記録媒体
JP3097602B2 (ja) データ処理装置
JP3765782B2 (ja) マイクロコンピュータ
JP4382076B2 (ja) データ処理装置
JP2001297002A (ja) データ処理装置
JP3733137B2 (ja) マイクロコンピュータ
JP3759742B2 (ja) データ処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070807