Nothing Special   »   [go: up one dir, main page]

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

データ処理装置

Info

Publication number
JP2001202243A
JP2001202243A JP2000056019A JP2000056019A JP2001202243A JP 2001202243 A JP2001202243 A JP 2001202243A JP 2000056019 A JP2000056019 A JP 2000056019A JP 2000056019 A JP2000056019 A JP 2000056019A JP 2001202243 A JP2001202243 A JP 2001202243A
Authority
JP
Japan
Prior art keywords
instruction
register
instruction code
data
code
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.)
Pending
Application number
JP2000056019A
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 JP2000056019A priority Critical patent/JP2001202243A/ja
Priority to KR1020000022824A priority patent/KR20010007031A/ko
Priority to US09/559,571 priority patent/US6745320B1/en
Publication of JP2001202243A publication Critical patent/JP2001202243A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

(57)【要約】 【課題】 上位互換性を維持しつつ、汎用レジスタの数
を増加させることができるデータ処理装置を提供する。 【解決手段】 レジスタを指定するレジスタ指定情報
を、2つの部分に分割する。この2つの部分を命令コー
ドの基本単位上の別々の基本単位に配置する。一方の命
令コードを省略可能とし、省略可能な命令コードを省略
すると、制御部(CONT)は、所定レジスタ指定情報
を暗黙的に想定してレジスタ選択動作を行う。これによ
れば、暗黙的に指定可能な汎用レジスタ(既存の汎用レ
ジスタ)のみを使用していれば、省略可能の命令コード
を省略できるから、命令コードを増加させることがな
い。少なくとも従来同等の汎用レジスタを使用する場合
は、従来同等の命令コードでよい。命令コードを増加さ
せないことよって、処理速度を低下させることがない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロコンピュ
ータ、マイクロプロセッサ、データプロセッサ、CPU
(セントラル・プロセッシング・ユニット)等のデータ
処理装置に係り、詳しくは、レジスタアーキテクチャ、
上位互換性、演算性能の拡張等に関し、例えば、シング
ルチップマイクロコンピュータにおけるソフトウェア資
産の有効活用と演算性能の拡張、使い勝手の向上等に適
用して有効な技術に関するものである。
【0002】
【従来の技術】半導体集積回路化されたマイクロコンピ
ュータは、アドレス空間の拡張や、命令セットの拡大、
高速化などが図られてきた。マイクロコンピュータのC
PU(中央処理装置)は、ソフトウェアによって、その
機能が定義されているから、アドレス空間の拡張や、命
令セット拡大、高速化などを図ったマイクロコンピュー
タにおいても、既存のマイクロコンピュータのソフトウ
ェア資産を有効に利用できることが望ましい。
【0003】このため、オブジェクトレベルで互換性を
保ちつつ、アドレス空間の拡張や、命令セット拡大を実
現した例として、例えば、特開平6−51981号公報
に記載のマイクロコンピュータ等がある。この中で、い
わゆるRISC(Reduced Instruction Set Computer)
アーキテクチャのようなロードストア型アーキテクチャ
を採用することが、命令セットの拡張を図る上で有効で
あることが示されている。
【0004】ロードストア型アーキテクチャでは、演算
処理は、CPUの汎用レジスタを用いて行なう。すなわ
ち、メモリ上のデータを直接的に用いて演算は行なわ
ず、一旦メモリ上のデータを汎用レジスタに転送し、転
送されたデータに演算を行なった後、汎用レジスタ上の
演算結果をメモリ上に書き戻す。したがって、その処理
で使用していない汎用レジスタがあれば、当該汎用レジ
スタにメモリ上のデータを転送すればよい。しかしなが
ら、汎用レジスタの数には限りがあり、マイクロコンピ
ュータ内部の処理状況によっては、全ての汎用レジスタ
を使用している場合もある。全ての汎用レジスタを使用
している場合、換言すれば、全ての汎用レジスタの内容
が保持されなければならないとき、前記メモリ上のデー
タに対する演算を行なう前に、汎用レジスタの内容をス
タック領域などに退避してから、所要の処理を行ない、
この処理を終了した後は、中断した処理を再開する為
に、前記退避した汎用レジスタの内容を復帰しなければ
ならない。
【0005】
【発明が解決しようとする課題】《検討課題A》本発明
者は、検討課題Aとして互換性を維持して、ソフトウェ
ア資産を有効に利用できるようにしつつ、CPUの汎用
レジスタを増加することを検討した。尚、この検討課題
Aに関する事項は、本願における国内優先権主張の第1
の基礎出願である特願平11−123450号の明細書
に既に開示した内容であるが、未だ公知ではない。この
検討課題Aについて述べる。
【0006】前記ロードストアアーキテクチャを採用し
たCPUにおいては、データ処理はCPUの汎用レジス
タが中心になるから、汎用レジスタが多いことは都合が
よい。これによって、プログラムの容易性や高速化を図
ることができる。
【0007】しかしながら、何れの汎用レジスタに対し
て処理を実行するかは、一般に、命令コードで指定する
から、汎用レジスタ数に対応したレジスタ指定フィール
ドを命令コード中に保持することが必要である。例え
ば、汎用レジスタ16本に対しては、レジスタ指定フィ
ールド4ビットを必要とする。汎用レジスタを増加しよ
うとすれば、レジスタ指定フィールドが増加する。汎用
レジスタを4倍の64本とすれば、レジスタ指定フィー
ルド6ビットが必要になる。処理対象は一般に2つ(ソ
ースとデスティネーション)のデータになるから、レジ
スタ指定フィールドは2倍のビット数が必要になる。
【0008】命令の基本単位を例えば16ビット(以下
ワードと呼ぶ)とすれば、レジスタ指定フィールドで占
有されるビット数のわりあいが多くなり、結局、命令コ
ード長を増加させなければならなくなる。命令コードを
長くすれば、処理速度を低下させることにつながってし
まう。CPUは命令をリードして実行するが、リードす
べき命令のワード数(ビット数)が大きくなれば、命令
自体のリード回数も増加するからである。また、レジス
タ指定フィールドを拡大することは、既存のCPUの既
存の命令と相容れず、既存のCPUとの互換性を保つこ
とを困難にしてしまう。
【0009】汎用レジスタを見掛上増やす技術として、
汎用レジスタをバンクと呼ばれるグループに分け、いず
れかのバンクを排他的に選択するようにする、レジスタ
バンク方式がある。いずれのバンクを選択するかは、制
御レジスタや制御命令などによって指定する。このた
め、命令コードには、バンク内の汎用レジスタに対応す
るレジスタ指定フィールドのみを持ち、命令コード長の
増加を抑止できる。しかし、前記レジスタバンクを切り
替えるための命令が必要になり、また、プログラム作成
に当っては、どのバンクを選択しているかを意識しなけ
ればならず、プログラムの容易性を損いやすい。同時に
使用できる汎用レジスタ数は増えていないので、データ
量の多いタスクや少ないタスクなどがある場合に、相互
に汎用レジスタの割当てを融通し合うなどのことがし難
い。
【0010】検討課題Aに関する本発明の目的は、上位
互換性を維持しつつ、汎用レジスタの数を増加させるこ
とができるデータ処理装置を提供することにある。
【0011】検討課題Aに関する本発明の別の目的は、
全体的な命令コードを増加させることなく、汎用レジス
タ数を増加させることができるデータ処理装置を提供す
ることにある。
【0012】検討課題Aに関する本発明のその他の目的
は、ソフトウェア資産に対して上位互換性を維持しつ
つ、汎用レジスタ数の増加によるプログラム作成の容易
化とCPUの処理性能の向上とを実現できるデータ処理
装置を提供することにある。
【0013】《検討課題B》本発明者は、検討課題Bと
して、ロードストア型等のアーキテクチャに対する互換
性を維持してそのソフトウェア資産を有効に利用(ソフ
トウェア資産に対する上位互換を達成)できるように
し、また、ロードストアアーキテクチャ若しくはRIS
Cアーキテクチャが動作速度の改善に有利であるという
ような、既存のCPUの利点を保ちながら、メモリ上の
データを直接的に演算可能とすることについて検討し
た。尚、この検討課題Bに関する事項は、本願における
国内優先権主張の第2の基礎出願である特願平11−1
51890号の明細書に既に開示したが、その内容は未
だ公知ではない。この検討課題Bについて述べる。
【0014】メモリ上のデータを直接的に演算可能とす
ることによって得られると考えられる利点は以下の通り
である。
【0015】汎用レジスタにデータをロードして演算を
行なうだけでなく、汎用レジスタへのデータロードを経
ることなくメモリ上のデータに対して演算が可能であれ
ば、CPU若しくはマイクロコンピュータが使用可能な
全てのデータ、換言すれば、マイクロコンピュータのユ
ーザがプログラム上で指定可能な全てのデータに対し
て、演算が可能になるから、マイクロコンピュータの使
い勝手、即ち機能が向上することになる。
【0016】この場合、CPUが実行する命令は、デー
タの所在と、その処理内容を指定する。データの所在を
指定する仕方をアドッレシングモードと呼ぶ。特定のア
ドッレシングモードでのみメモリ上のデータの演算を可
能にするのでは、プログラミング上の制約が発生し、使
い易さを十分に向上し得ない。既存のCPUでデータを
アクセスするアドレッシングモードの任意の組合せによ
ってメモリ上のデータを演算できることが望ましいと考
えられる。
【0017】また、メモリ上のデータを直接演算可能と
することができたとしても、使用頻度の高いデータは汎
用レジスタ上に配置して処理することが望ましい。汎用
レジスタは、物理的にCPUの一部として構成されるか
ら、メモリに比べて高速にアクセスでき、メモリ上のデ
ータに比べて高速に処理できる。使用頻度の低いデータ
はメモリ上に配置したまま、処理すればよい。CPUの
処理に直接関係のない汎用レジスタの退避/復帰を行な
わなくてよい。それらによって、CPUの処理速度を全
体として向上させることができると考えられる。
【0018】通常、CPUやマイクロコンピュータによ
って処理されるデータの量は、CPUの汎用レジスタの
数よりも多い。また、タスクの数は複数存在し、これを
時分割で実行することになるから、タスクを切り替えた
とき、メモリ上のデータを直接的に演算できれば、退避
/復帰したりすることなく、メモリに対して即座に処理
を実行することが可能になる。退避・復帰の処理を伴い
ながらも汎用レジスタを用いて演算を高速に行なう処理
手法と織り交ぜながら、都合のよい手法を選択すること
ができる。同様に、割込み処理の時も、汎用レジスタを
退避したりすることなく、即座にメモリに対して処理を
実行することが可能になり、割込みに応答して所望の処
理を行なうまでの応答時間を短縮することも可能にな
る。割込みの応答時間を短縮することによって、種々の
機器を制御する場合の時間的な精度、いわゆるリアルタ
イム性を向上することが可能になる。
【0019】同一の処理ルーチンをループする(繰り返
す)ようなプログラムを作成した場合、ループ内の演算
処理に必要な汎用レジスタを確保し、また、全体的なプ
ログラム容量を縮小したり、処理時間を短縮したりする
ために、ループ外で使用するデータを割り当てるレジス
タを確保したりすることによって、汎用レジスタに余裕
がない場合も、随時、メモリに対して演算処理を行なう
ことが可能になる。これによって、プログラムの作成が
容易になる。また、ループ内の処理を短縮することによ
って、全体的には、繰り返し回数に比例して処理時間を
短縮することが可能になると、予想される。
【0020】また、Cコンパイラなどの開発装置の開発
には、かかる種々の条件を考慮する必要があり、メモリ
に対する演算を可能とすることによって、所望のCコン
パイラの性能を達成するために必要な開発期間や資源を
節約することも可能になると考えられる。
【0021】また、上記のような、機器の高速化や高機
能化、小型化は、アドレス空間が比較的小さく命令セッ
トが比較的小さいCPU若しくはマイクロコンピュータ
においても要求されるから、前記特開平6−51981
号公報などに記載されるアドレス空間の広いCPUとア
ドレス空間の狭いCPUが存在する場合には、その双方
に対してメモリ上のデータに対する演算を追加すること
が望ましい。
【0022】しかしながら、前記ソフトウェア資産に対
する上位互換の達成と、メモリのデータを直接的に演算
可能とするに当たって、以下の問題点のあることが本発
明者によって明らかにされた。
【0023】既存の命令セットは、その仕様内で最適化
されているから、メモリ上のデータを直接的に演算可能
にする種々の演算等の処理に新規の命令コードを割り当
てる余地は少ない。すなわち、加算や論理積などの所望
の演算について、データをアクセスするアドレッシング
モードの任意の組合せでメモリ上のデータを演算できる
ようにするというような、新規の命令コードを、割り付
けることは現実には考え難い。
【0024】また、新規命令コードや新規アドレシング
モードの追加によって命令コードの体系を変更すること
は、既存のCPUにおける既存の命令と相容れず、既存
のCPUとの互換性を保つことが困難になってしまう。
また、既存のCPUのメリットを損なってしまう。
【0025】また、マイクロコンピュータを使用したシ
ステムを開発する場合には、エミュレータと呼ばれる開
発装置が用いられる。エミュレータには、マイクロコン
ピュータの機能を包含するエミュレーション用プロセッ
サが搭載されており、エミュレーション用プロセッサ
は、マイクロコンピュータの動作状態をエミュレータに
よって解析可能にするためのエミュレーション用信号を
出力する。エミュレータ及びエミュレーション用プロセ
ッサについては、特開平8−263290号公報に記載
されている。前述のメモリ上のデータを直接演算可能と
するためにマイクロコンピュータの構成を変更すると
き、前記エミュレーション用信号も変更になれば、エミ
ュレータのハードウェア自体を変更しなければならず、
エミュレータ自体も新たに開発しなければならなくなっ
て、マイクロコンピュータの開発装置若しくは開発環境
の提供も遅くなるという問題点が明らかにされた。
【0026】検討課題Bに関する本発明の目的は、論理
的・物理的規模の増大を最小限とし、ロード・ストア型
の命令セットを持つ既存のCPU若しくはマイクロコン
ピュータ等と互換性を維持しつつ、見掛け上、メモリ上
のデータに対する直接的な演算を可能とするデータ処理
装置を提供することにある。
【0027】検討課題Bに関する本発明の別の目的は、
見掛け上、メモリ上のデータに対する演算を可能とする
ことによって、プログラミングを容易にすると共に、不
所望の汎用レジスタの退避/復帰を抑止して、CPUの
処理性能を向上させることによる。
【0028】《検討課題C》本発明者は、前記検討課題
Aとして検討した前記ソフトウェア資産に対する上位互
換と、前記検討課題Bとして検討したメモリのデータを
直接的に演算可能とすることを実現するに当たり、更に
検討課題Cとして以下を明らかにした。尚、この検討課
題Cに関する事項は、本願における国内優先権主張の第
3の基礎出願である特願平11−191608号の明細
書に既に開示したが、その内容は未だ公知ではない。こ
の検討課題Cについて述べる。
【0029】既存の命令セットは、その仕様内で最適化
されているから、メモリ上のデータを直接的に演算可能
にする種々の演算等の処理に新規の命令コードを割り当
てる余地は少ない。すなわち、加算や論理積などの所望
の演算について、データをアクセスするアドレッシング
モードの任意の組合せでメモリ上のデータを演算できる
ようにするというような、新規の命令コードを、割り付
けることは現実には考え難い。
【0030】また、新規命令コードや新規アドレシング
モードの追加によって命令コードの体系を変更すること
は、既存のCPUにおける既存の命令と相容れず、既存
のCPUとの互換性を保つことが困難になってしまう。
また、既存のCPUのメリットを損なってしまう。
【0031】そこで本発明者は、既存の、メモリ・レジ
スタ間の転送命令の単数または複数、レジスタ・レジス
タ間の演算命令、の内、複数の命令コードを組合せ、こ
れを結合させる前置命令コードを用いて、メモリ上の演
算を可能にすることの有用性を先に見出した。これによ
れば、メモリ・レジスタ間の転送命令、レジスタ・レジ
スタ間の演算命令などの命令コードは既存のものである
から、単独では従来同様に動作し、既存の命令実行を阻
害することがない。また、既存の命令のみを使用してい
れば、既存のソフトウェア資産を有効に利用できる。汎
用レジスタ方式やロードストアアーキテクチャなどの既
存のCPUが持つメリットを損なうことなく、前記演算
性能を拡張することができる。
【0032】更に本発明者は、応用分野の広いマイクロ
コンピュータに対する多種多様の要求についても検討し
た。例えば、アドレス空間の広い応用分野とアドレス空
間の小さい応用分野、高級言語によるプログラミングを
主に用いる応用分野とアセンブリ言語によるプログラミ
ングを主に用いる応用分野、データ処理が重要な応用分
野とビット操作などの制御が必要な応用分野、或いは、
処理性能が必要な応用分野と処理性能より費用低減が必
要な応用分野などがあり、これらに対して、一貫したア
ーキテクチャによるCPU(中央処理装置)を提供し、
アセンブラ、Cコンパイラなどのソフトウェア開発装置
(クロスソフトウェア)などの開発装置を共通に利用し
たりできるようにすることが望ましい。
【0033】そこで、本発明者は、下位互換性をもつC
PUについて検討した。前記の通り、本発明者による先
の提案によれば、既存の、アドレス空間の小さいCPU
に対しても、互換性を維持しながら汎用レジスタを追加
したり、メモリに対する演算を追加することができる。
機能を追加していく場合には、例えば、費用低減の追求
などといった、前記のマイクロコンピュータに対する多
種多様な要求に十分には応えられるようにする考慮の必
要性が本発明者によって見出された。
【0034】また、アセンブリ言語によるプログラミン
グでは、CPUの命令セットに依存する部分が大きく、
また、使用者の経験などによる好みといったものも存在
するから、一つの命令セットでは、全ての要求に応えて
いくことはできない。例えば、別のCPUや、使用者の
好み合った命令セットを持つCPUであれば移行しやす
いが、同じ命令セットを持ったCPUでは、限界が生じ
てしまう。
【0035】マイクロコンピュータ或いはCPUのアー
キテクチャには、汎用レジスタ方式、アキュムレータ方
式などがあるから、それぞれに類似した命令セットを持
つCPUを持てば、大部分の使用者の命令セットについ
ての要求には応えられると考えられる。少なくとも、一
つの命令セットであるよりは、異なる種類の命令セット
を持つCPUを用意することにより、対応できる範囲を
飛躍的に大きくできる。
【0036】このとき、これらのCPUは、独立したも
のを多数用意しても、互換性やソフトウェアの移植性が
損なわれては、使用者にとっては、ソフトウェアの移植
ができず、ソフトウェアを変更したりすることになって
しまい、全体的な開発費用を不所望に増加させてしまっ
たり、開発期間を不所望に増大させてしまいやすい。一
方、CPU乃至はマイクロコンピュータの提供者にとっ
ては、独立したCPUでは、使用する技術も異なってし
まい、一つのCPUで得られた技術を他のCPUに適用
でき難くなったりして、開発効率を低下させ、機能や性
能の向上を図り難くしてしまう。
【0037】また、マイクロコンピュータを使用したシ
ステムを開発する場合には、ソフトウェア開発装置及び
エミュレータと呼ばれる開発装置が用いられる。
【0038】アセンブラやCコンパイラ、シミュレータ
デバッガなどのソフトウェア開発装置については、前記
のような互換性を持った複数のCPUを、互いに一方が
他方を包含する命令セットを持たないようなCPUも含
めて、共通に利用できることが望ましい、ということが
本発明者によって明らかにされた。利用者も、ソフトウ
ェア開発装置を共通にして、異なるCPUに適用できれ
ば、CPUを変更する際に、不所望な費用を発生させな
くてよい。提供者も、一つの開発装置を開発すればよ
く、開発効率を向上できるし、適宜、開発装置の機能の
向上や、使い勝手の向上などを図り易い。アセンブリ言
語によるプログラミングのしやすさを享受しつつ、順
次、高級言語へ移行することも可能になる。
【0039】前記特開平9-198272号公報には、
特に一方が、他方の命令セットやレジスタ構成を包含す
るような複数のCPUに対応可能なエミュレータ及びエ
ミュレーション用プロセッサについての記述があるが、
前記の通り、このような複数のCPUでは、応用分野な
どの多様な要求に十分に応えられない。一方が他方の命
令セット等を包含しないような複数のCPUに対して、
両方の機能を包含する上位のCPUを用意することも考
えられるが、全く異なる複数のCPUについては、命令
コードが異なったり、アドレス空間や実効アドレス計算
方法が異なったりして、これを包含する上位のCPUを
構成することは困難である。また、可能であったとして
も、このために大きな開発資源が必要と考えられ、開発
に必要な各種資源を節約するといった目的を達成できな
い。さらに、上位のCPUが、異なる複数のCPUの機
能を包含するがために、冗長な回路を持つようになり、
実際の製品に用いることが困難になってしまうし、個別
のCPUに切り替えて使用するのでは、新規のCPUと
は言えず、応用分野などの多様な要求に応えるといった
目的を達成できない。
【0040】検討課題Cに関する本発明の目的は、第1
に、応用分野や使用者の広範な要求に応えることができ
るデータ処理装置を提供することにある。具体的には、
半導体集積回路としての製造費用を低減して、ひいて
は、使用者の半導体集積回路についての費用を低減する
こと、応用分野のソフトウェア上の要求に応え易くする
こと、又はアセンブリ言語によるプログラミングも容易
にするなど、使用者のマイクロコンピュータに対する好
みに合わせたり、或いは、他のCPUから移行し易くす
ること、を実現することである。
【0041】検討課題Cに関する本発明の目的は、第2
に、総体的なマイクロコンピュータのようなデータ処理
装置製品群の開発費用を低減し、開発効率を向上するこ
とである。換言すれば、個別の応用分野やシステムに適
した複数のCPUを提供するとともに、複数のCPUの
総体的な開発費用を低減したり、開発効率を向上したり
することである。具体的には、互換性やソフトウェア資
産の継承性を維持し、使用者のソフトウェア開発効率を
向上すること、機能や性能の向上の要求に応え、更に継
続して、機能や性能の向上の要求に応え易くすること、
CPUの移行に当たって、使用者の不所望の費用を抑止
すること、ソフトウェア開発装置やエミュレータなどの
開発環境を共通に利用可能にして使用者の不所望の費用
の増大を抑止すること、又は、開発環境の開発効率を向
上すると共に適宜改善していくことを容易に実現するこ
と、である。
【0042】検討課題Cに関する本発明の目的は、第3
に、プログラム容量は比較的大きいが、データ容量は比
較的小さい、シングルチップマイクロコンピュータなど
に好適なアドレス空間を持ったCPUのようなデータ処
理装置、即ち、アドレス空間は広く、論理的な規模を縮
小したCPUのようなデータ処理装置を提供することで
ある。
【0043】《検討課題D》本発明者は、検討課題Bに
関連する新たな検討課題Dとして、分岐命令の観点よ
り、命令コード長の短縮や処理性能の向上に寄与する複
合的な命令について検討した。この検討課題Dについて
述べる。
【0044】一般的なマイクロコンピュータシステムに
おいて、CPUの処理は、外部入力状態に適合するよう
になされる。これは、入出力ポートの状態に応じたり、
これらに基づいて、内蔵RAMなどに保持したビットの
状態に応じて、プログラムを分岐することによってなさ
れる。
【0045】このような外部入力状態に対応したCPU
の処理を実現するための手段として、USP43342
68号に記載されてるように、所謂ビットテスト・アン
ド・ブランチなどの命令を持つデータプロセッサがあ
る。これにおいては、8ビットの絶対アドレスと3ビッ
トのビット番号で、テストするビットを指定すると共
に、分岐条件が前記指定ビットの論理値“1”状態又は
論理値“0”状態の何れであるのかを1ビットで指定
し、更に、8ビットのディスプレースメントで、分岐先
のアドレスを指定する。この場合、3バイト長の命令コ
ードでは、命令の指定を4ビットで行わなければならな
い。この例では、命令コードの先頭4ビットが論理値
“0”になっているものがビットテスト・アンド・ブラ
ンチである。したがって、これ以外の命令は先頭4ビッ
トを値1〜Fのとしなければならず、全体的な命令コー
ド長の増加を招き易い。
【0046】このような命令は、指定ビットのリードと
判定、及び分岐アドレスの生成など、命令実行制御が複
雑で論理規模の増加を招き易く、また、不所望の論理回
路の遅延によって、動作周波数の向上の障害になり易い
事が本発明者によって明らかにされた。
【0047】更に、8ビット絶対アドレスで指定できる
のは、256バイトに限定されるから、マイクロコンピ
ュータの高機能化に伴って、内部I/Oレジスタなどが
増加されるときに、指定可能な範囲に所望のビットが存
在しなかったり、また、マイクロコンピュータの仕様設
計上、アドレス配置が困難になったりしてしまう。すな
わち、マイクロコンピュータは汎用的に利用可能とされ
るが、応用分野や使用者毎に判定対象となるビットが複
数に亘り、相違されることになり、判定対象となるビッ
トに対する所望の組合せの全ての要求に応えることは難
しい。
【0048】また、制御が複雑になると、8ビットの相
対アドレスでは、分岐できない場合が生じてくる。当該
命令の存在するアドレス又は次の命令の存在するアドレ
スを基準に、+127〜−128バイトの範囲でしか分
岐できないから、判定対象のビットが論理値“1”のと
き、または論理値“0”のときに実行する処理プログラ
ムの少なくとも一方(分岐条件が成立しない場合に実行
する処理プログラム)は、127バイト未満にする必要
がある。これが満足できない場合は、別の分岐命令をも
用いて、2段階の分岐命令の実行によって、所要のアド
レスに分岐しなければならない。これはプログラムを複
雑化し、処理速度も低下させてしまう、ということが本
発明者によって明らかにされた。
【0049】そうかといって、絶対アドレスやディスプ
レースメントを16ビットなどとすると、必然的に命令
コード長の増加を招き、処理速度も低下するし、命令実
行制御も更に複雑になる。絶対アドレスとディスプレー
スメントのビット長の組合せを複数にしようとすると、
命令実行制御が更に複雑になる。これらは、追加すべき
命令の種類を増やすことになり、既存のCPUの上位互
換性を維持することを困難にしてしまう。既存のCPU
の利点(論理構成の簡潔さや高速性など)を維持するこ
とを困難にしてしまう。
【0050】検討事項Dに関する本発明の目的は、論理
的・物理的規模の増大を最小限とし、既存のCPUと互
換性を維持しつつ、メモリ上の任意のアドレスのデータ
のビットの状態を判定して、分岐及びサブルーチン分岐
を可能にすることにある。更に、CPUの使い勝手の向
上、命令コード長の短縮、及び処理性能の向上を実現す
ることを目的とする。
【0051】《検討課題E》本発明者は、検討課題Eと
して、単一の命令で複数の汎用レジスタ等に対してリー
ド/ライトを行うようにすることについて検討した。
尚、この検討課題Eに関する事項は、本願における国内
優先権主張の第4の基礎出願である特願平11−320
518号の明細書に既に開示したが、その内容は未だ公
知ではない。この検討課題Eについて述べる。
【0052】データ転送時のパケットコマンドなどの情
報は、複数の情報の集合で、例えば16バイトなどであ
って、CPUのデータ処理単位よりは大きい。CPU
は、これに含まれる個別の情報(コマンド、転送バイト
数、転送ロケーションなど)をリードして、解析する。
例えば、コマンドは8ビット、転送バイト数は32ビッ
ト、転送ロケーション(アドレス)は32ビットなどと
され、これらの個別の情報は、多くの場合、CPUの操
作可能なデータ長である。
【0053】また、プリンタの印刷データなどは、CP
Uの操作するデータ長より大きい。これらは個別のビッ
ト(ドット、ピクセルなど)の集合である。これを操作
する場合には、算術的な処理ではなく、ビット単位の処
理であり、論理的な処理が主に必要である。かかるデー
タを処理する場合には、CPUの操作するデータの単位
に複数回に分けて行なう。即ち、メモリからデータをリ
ードし、汎用レジスタ上で処理を行い、結果をメモリへ
ライトする処理を行なうことを繰り返す。
【0054】本発明者は、汎用レジスタの利用態様を更
に検討した。前記パケットコマンドや印刷データはワー
ドのようなCPUによるデータ処理のデータ単位より大
きい。このようなCPUによるデータ処理のデータ単位
より大きいデータ単位についても、一括してレジスタか
らリード或いはレジスタにライトできるようにすれば、
データ処理の高速化を図る上で好都合であることを本発
明者は見出した。具体的には、いわゆるフォンノイマン
型のCPUにおいては、転送命令の実行にあたっては、
命令コードをリードし、これをデコードし、データをリ
ード/ライトする必要があるから、バイト或いはワード
単位でそのようなデータのレジスタ転送を複数回繰り返
すよりは、単一の命令で、複数の汎用レジスタのリード
/ライトを行なうようにすれば、データ転送の為に命令
コードをリードする回数を低減することができるからで
ある。
【0055】更に、前記省略可能なワードによって汎用
レジスタを拡張する技術と組み合わせれば、それによっ
て汎用レジスタを拡張して、複数の汎用レジスタを一括
してリード/ライトするためにそれらレジスタを空ける
ことも容易になることを見出した。
【0056】一方、本発明者らが先に提案した特開平8
−263290号公報に記載のCPUは、命令を実行す
る実行手段を制御するための制御手段に対して指定可能
な複数の汎用レジスタの組み合わせを固定にし、それら
複数の汎用レジスタのスタックに対する退避/復帰命令
を有し、前記複数の汎用レジスタを順次待避/復帰する
ようにしている。これは、サブルーチンや例外処理など
の、処理の切れ目で、それ以前の処理の状態を保存する
ことを目的とする処理に限られている。従って、アドレ
ッシングモードも、スタックポインタのプリデクリメン
ト(待避)/ポストインクリメント(復帰)に限定され
ている。また、汎用レジスタの待避/復帰毎に、アドレ
ス演算器を用いてアドレス計算を行なっている。
【0057】前記特開平8−263290号公報に記載
の技術を他のアドレッシングモードに適用しようとする
と、例えば、4本の汎用レジスタとメモリの間の転送命
令では、レジスタ間接のリードの場合、2番め以降の汎
用レジスタ毎に、アドレスレジスタの内容に+4、+
8、+12のアドレス演算処理を行なって実効アドレス
を生成する必要がある。逆に、ライトの場合、最後以外
の汎用レジスタ毎に、アドレスレジスタの内容に−1
2、−8、−4の演算処理を行なって実効アドレスを生
成する必要がある。このため、レジスタ毎に実効アドレ
スの演算が必要になるので、不所望な内部動作ステート
が発生してしまう。
【0058】更に、ディスプレースメント付きレジスタ
間接では、ディスプレースメントとアドレスレジスタの
内容を加算した結果を内部に保持した上で、この加算結
果に上記レジスタ間接同様のアドレス計算を行なう必要
がある。これらは、CPUの内部動作を複雑にし、論理
的規模の増大を招き易い。
【0059】一般に、マイクロコンピュータは、汎用的
に使用できる(1種類のチップで複数の応用分野に対応
できる)ことが、その開発効率などの点で望ましい。特
に、CPUについては、アセンブラやCコンパイラとい
ったソフトウェア開発装置、及びインサーキットエミュ
レータといったハードウェア開発装置が必要であるか
ら、マイクロコンピュータのアーキテクチャの変更は容
易ではないし、また、変更する場合も、既存のCPUと
の互換性を保ち、上記ソフトウェア乃至ハードウェア開
発装置を共通に利用できるようにし、開発効率を向上す
ることが望ましい。
【0060】なお、ブロック転送命令などといった、複
数単位のデータをメモリ上で連続的に転送する命令を命
令セットにマイクロコンピュータもある。このような命
令では、転送データは、CPUの汎用レジスタに格納さ
れないので、当該データに対して、直接操作できなかっ
たり、少なくとも、汎用レジスタに対するほど高速には
操作できない。
【0061】検討課題Eに関する本発明の目的は、マイ
クロコンピュータなどのデータ処理装置またはデータ処
理システムにおいて、その論理的規模の増加を最小限に
しつつ、CPUの処理するデータ長、例えば、バイト、
ワード、ロングワードなどより大きいデータを処理する
必要がある場合に、CPU処理プログラムの短縮、CP
Uによるデータ処理速度の高速化を実現することにあ
る。詳しくは、本発明は、データのリード/ライトに対
して、命令のリードの頻度を低減して、データ処理の高
速化を図ることができるようにしよとするものである。
【0062】検討課題Eに関する本発明の別の目的は、
既存CPUのソフトウェア資産を有効に利用でき、新た
なシステムの開発効率を向上させることができ、既存の
CPUのシステム発装置を流用でき、開発環境をいち早
く手依拠することが可能なデータ処理装置を提供するこ
とにある。
【0063】検討課題Eに関する本発明の更に別の目的
は、既存のCPUに対して汎用レジスタ数の増加をソフ
トウェアで指定でき、これを利用して、プログラム作成
の容易化と、レジスタリード・レジスタライト動作の高
率化によってCPUの処理性能を向上させることができ
るデータ処理装置を提供することにある。
【0064】検討課題Eに関する本発明のその他の目的
は、オブジェクトレベルで互換性を保ちつつ、アドレス
空間の広いCPUとアドレス空間の小さいCPUが存在
する場合には、オブジェクトレベルで互換性を保ちつ
つ、上記CPU処理プログラムの短縮、CPUによる処
理の高速化等の目的を達成することができるデータ処理
装置を提供することにある。
【0065】上記検討課題A乃至検討課題Eに関する本
願発明は、データ処理装置の演算性能の拡張と使いかっ
ての向上という点において、解決しようとする共通の課
題を有している。また、高速であるが、数に限りがある
汎用レジスタのデータの待避/復帰などを行なうことな
く、処理を可能にするという共通の課題を有している。
【0066】本発明の前記並びにその他の目的と新規な
特徴は本明細書の記述及び添付図面から明らかになるで
あろう。
【0067】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0068】《検討課題Aの解決手段》請求項1乃至9
に記載の発明は前記検討課題Aに関する解決手段を与え
るものである。この検討課題Aに関する解決手段とし
て、レジスタを指定するレジスタ指定情報を、2つの部
分に分割する。この2つの部分を命令コードの基本単位
上の別々の基本単位に配置する。一方の命令コードを省
略可能とし、省略可能な命令コードを省略すると、所定
レジスタ指定情報を暗黙的に想定してレジスタ選択動作
を行うようにする。
【0069】省略可能な命令コードは、レジスタ指定情
報の一部を保持するためのフィールドを有し、演算の種
類などは指定しないような命令コードにすれば良い。例
えば、省略不可能な命令コードを、既存のCPUと共通
にし、省略可能な命令コードを既存のCPUの未定義の
ワードに割当てればよい。
【0070】省略可能な命令コードに含まれるレジスタ
指定フィールドの情報を保持する手段を設け、前記省略
可能な命令が実行されると、前記省略可能な命令コード
に含まれるレジスタ指定フィールドの情報を前記保持手
段に格納する。更に、命令の実行終了時に、前記保持手
段を、前記暗黙的な指定に対応する所定の値に設定す
る。
【0071】上記した手段によれば、暗黙的に指定可能
な汎用レジスタ(既存の汎用レジスタ)のみを使用して
いれば、省略可能の命令コードを省略できるから、命令
コード長を増加させることがない。少なくとも従来同等
の汎用レジスタを使用する場合は、従来同等の命令コー
ドでよい。命令コード長を増加させないことよって、処
理速度を低下させることがない。
【0072】前記省略可能な命令コードを付加すること
によって、命令によって直接汎用レジスタの全てを選択
できるから、プロラムの容易性を損うことなく、利用可
能な汎用レジスタの数を増やすことができる。また、任
意の量の汎用レジスタの一部を、所望のタスク毎や所望
の割込み処理などに確保しておく(他のタスクや処理で
は使用しない)ことによって、前記タスクや割込み処理
において汎用レジスタを待避したりする必要がなく、高
速化が図れる。また、前記タスクや割込み処理に確保す
る汎用レジスタ数は任意にできるから、タスクや処理の
間で、使用する汎用レジスタを相互に融通し合うことも
容易である。
【0073】前記省略可能な命令コードを付加すること
によって、指定できる汎用レジスタのアクセスは、RA
Mなどのメモリのアクセスより、一般に高速にできるか
ら、汎用レジスタ数を増加することにより、高速に処理
できるデータ量を増加させ、ひいてはCPUの処理速度
を向上できる。また、いわゆるロードストア型の命令セ
ットを持ち、メモリの内容に対して直接演算できないよ
うなプロセッサについては、汎用レジスタを増加するこ
とにより、直接処理できるデータ量を増加でき、また、
メモリのアクセス頻度を低減することができ、処理速度
を向上することができる。
【0074】オブジェクトレベルで互換性を保ちつつ、
アドレス空間の広いCPUとアドレス空間の小さいCP
Uが存在する場合には、アドレス空間の広いCPUで、
前記省略可能な命令コードを付加できれば、下位互換性
をもつ、アドレス空間の小さいCPUにも前記ワードを
付加できることになるから、オブジェクトレベルで互換
性を保ちつつ、アドレス空間の広いCPUとアドレス空
間の小さいCPUに汎用レジスタを追加できる。オブジ
ェクトレベルで互換性を保つことによる利点と汎用レジ
スタを追加することの利点の双方を享受することができ
る。
【0075】上記手段の更に詳細な態様について言及す
る。命令コードを読み込んで動作し、データまたはアド
レスを格納可能なレジスタ(ER0〜ER31)を複数
個持つデータ処理装置は、命令コードを保持する第1の
命令コード保持手段(IR1)及び第2の命令コード保
持手段(IR2)と、命令コードをデコードする命令デ
コード手段(DEC)と、前記レジスタを選択する選択
手段(RSEL)とを含む。前記第1の命令コード保持
手段の出力は、前記第2の命令コード保持手段、前記命
令デコード手段及び前記レジスタ選択手段に結合され、
前記第2の命令コード保持手段の出力は、レジスタ選択
手段に結合され、前記命令デコード手段の出力は、レジ
スタ選択手段及び前記第2の命令コード保持手段に結合
され、前記命令デコード手段の前記第2の命令コード保
持手段への出力は、前記第2の命令コード保持手段に対
するラッチ信号(LGRCL)と、所定の値へのセット
信号(RSLGR)を含む。前記第2の命令コード保持
手段に対するラッチ信号は、前記命令デコード手段が所
定の命令コードをデコードしたとき発生し、前記第2の
命令コード保持手段に対する所定の値へのセット信号
は、前記所定の命令コードによって指定されたレジスタ
を用いる処理が終了された後にセット動作が行われる様
に発生する。
【0076】前記第2の命令コード保持手段に対する前
記所定の値へのセット信号は、例えば、前記命令デコー
ド手段が、命令の実行終了に呼応して発生すればよい。
あるいは、前記所定の値を保持するためのデータ保持手
段を更に含め、そのデータ保持手段の出力を前記第2の
命令コード保持手段に結合し、前記所定の値へのセット
信号の発生に呼応して、前記第2の命令コード保持手段
が、前記データ保持手段の値に応じた値にセットされる
ようにしてもよい。
【0077】《検討事項Bの解決手段》請求項10乃至
43に記載の発明は前記検討課題Bに関する解決手段を
与えるものである。検討課題Bに関する解決手段とし
て、既存の、メモリ・レジスタ間の転送命令や、レジス
タ・レジスタ間の演算命令の内、複数の命令コードを組
合せ、例えば、これを結合させる前置命令コードを用い
て、メモリ上の演算を可能にする。要するに、所定の前
置命令コードが付加された場合、これに続く複数の命令
コードを1つの命令として解釈し、実行する。ここで、
1つの命令とは、例えばリセット以外の要因で処理が分
断されない、或いは、リセットなどの特定の要因を除い
て途中で割り込み(例外処理)を受け付けない、等のよ
うに定義することができる。このとき、CPU内の、テ
ンポラリレジスタの様な、プログラム上解放されていな
いラッチ手段を、汎用レジスタに代えて、若しくは汎用
レジスタと共に利用するととが、メモリ上のデータに対
する直接的な演算(若しくは直接的なデータ転送)を可
能とする。ここで、メモリ上のデータに対する直接的な
演算とは、前記命令コードには明示されないデータラッ
チ手段へメモリからデータをロードし、当該データラッ
チ手段にロードしたデータを用いて行なう演算処理であ
る。また、メモリとの間の直接的なデータ転送とは、前
記命令コードには明示されないデータラッチ手段へメモ
リからデータをロードし、当該データラッチ手段のデー
タを前記メモリにストアする処理である。
【0078】詳しくは、前記前置命令コードに続いて、
第1番目に、メモリ・レジスタ間転送命令コードを実行
する場合は、汎用レジスタではなく、CPU内の、テン
ポラリレジスタの様な、プログラム上解放されていない
第1のラッチ手段とメモリの間でデータ転送を行なう。
更に、第2番目として、引き続きレジスタ・レジスタ間
の演算命令コードを実行する場合は、演算対象の内の単
数または複数のデータを前記第1のラッチ手段から読み
出すようにする。ここで、プログラム上解放されていな
いラッチ手段とは、プログラム上ユーザが指定できない
ラッチ手段、CPU若しくはマイクロコンピュータ上に
おいてユーザから見えないテンポラリレジスタやバッフ
ァレジスタを意味する。そのようなラッチ手段は、プロ
グラム上解放されていないから、当然その記憶情報が退
避されることは想定されておらず、多くの場合、演算の
途中結果などを格納するのに用いることが想定されてお
り、1命令実行中にその使用状態を終えることが前提に
なっている。したがって、その前提の下では、前記ラッ
チ手段を使うとき退避を全く考えなくてもよい。その前
提を保証する為に、前置命令コードとこれに続く所定の
命令を1命令とみなし、途中に割り込みなどが入らない
ように考慮され、ラッチ手段に対する退避の必要性を排
除している。
【0079】前記第2番目の演算命令コードが、演算結
果をメモリに格納する処理を要求する命令コードの場合
には、前記転送命令コードで使用したメモリのアドレス
は、別のテンポラリレジスタなどの別のラッチ手段(第
2のラッチ手段)に格納する。前記演算命令の演算結果
は前記第1のラッチ手段に格納する。引き続き、メモリ
・レジスタ間の転送命令コードをマイクロコンピュータ
自ら生成し、前記アドレスを格納した第2のラッチ手段
の内容をアドレスとして、前記演算結果を格納した第1
のラッチ手段の内容をデータとして、メモリへの書込み
を行なう。
【0080】更に説明を加える。前置命令コードによっ
て1命令とみなされる命令が、メモリ上のデータと汎用
レジスタ上のデータの演算を行い、結果を汎用レジスタ
上に格納する命令の場合には、前置命令コード、メモリ
・レジスタ転送命令コード、演算命令コードを実行し、
メモリ・レジスタ転送命令コードの実行時には、汎用レ
ジスタではなく、転送データをラッチ手段に格納し、演
算命令コードは、前記ラッチ手段に格納したデータと汎
用レジスタ上のデータとの演算を行い、結果を汎用レジ
スタに格納する。
【0081】前置命令コードによって1命令とみなされ
る命令が、汎用レジスタ上のデータとメモリ上のデータ
の演算を行い、結果をメモリ上に格納する命令の場合に
は、前置命令コード、メモリ・レジスタ転送命令コー
ド、演算命令コード、及び内部で生成されたメモリ・レ
ジスタ転送命令コードを実行し、メモリ・レジスタ転送
命令コードの実行時には、汎用レジスタではなく、転送
データをラッチ手段に格納し、演算命令コードは、前記
ラッチ手段に格納したデータと汎用レジスタ上のデータ
との演算を行い、結果をラッチ手段に格納する。メモリ
・レジスタ転送命令コードは、前記アドレスを格納した
ラッチ手段の内容をアドレスとして、前記演算結果を格
納したラッチ手段の内容をデータとして、メモリへの書
込みを行なう。インクリメントなどのように、1つのメ
モリ上のデータに対する演算を行なう場合もこれと同様
にする。また、メモリ・レジスタ転送命令コード実行時
には、換言すれば、1つの命令とみなされる命令による
処理の途中には、演算結果等を反映するフラグの変化を
抑止し、前の演算命令による演算結果のフラグの状態を
保持する。この理由は以下の通りである。演算命令コー
ドの実行においては前の演算命令の実行によってフラグ
に反映された状態を参照しなければならない場合が有
り、このとき、転送命令若しくは転送命令コードの実行
によっても前記フラグの状態変化を全て許容した場合に
は不都合を生ずるからである。更に詳しくは当該命令と
してのフラグの変化と、転送命令自体のフラグの変化が
異なることによって不都合を生じさせないということで
ある。具体的には、その演算が算術演算であるとき、算
術演算結果で生じたオーバフローフラグが転送命令コー
ドによってクリアされたりしないようにするということ
である。
【0082】前置命令コードによって1命令とみなされ
る命令が、メモリ上の2つのデータを用いて演算し、演
算結果をメモリ上に格納する命令である場合には、前置
命令コード、第1、第2のメモリ・レジスタ転送命令コ
ード、演算命令コード、及び内部で生成したメモリ・レ
ジスタ転送命令コードを実行し、第1、第2のメモリ・
レジスタ転送命令コードの実行時には、汎用レジスタで
はなく、転送データをラッチ手段に格納し、演算命令コ
ードは、前記ラッチ手段に格納したデータの演算を行
い、結果をラッチ手段に格納する。メモリ・レジスタ転
送命令コードは、前記アドレスを格納したラッチ手段の
内容をアドレスとして、前記演算結果を格納したラッチ
手段の内容をデータとして、メモリへの書込みを行な
う。
【0083】一方、前置命令コードによって1命令とみ
なされる命令が、メモリ上のデータを、別のメモリに転
送する命令の場合には、前置命令コード、メモリ・レジ
スタ転送命令コード、メモリ・レジスタ転送命令コード
を実行し、メモリ・レジスタ転送命令コードの実行時に
は、汎用レジスタではなく、転送データをラッチ手段に
格納し、メモリ・レジスタ転送命令コードは、前記演算
結果を格納したラッチ手段の内容をデータとして、メモ
リへの書込みを行なう。
【0084】前置命令コードによって1命令とみなされ
る命令が、イミディエイトデータとメモリ上のデータと
の演算の場合は、概略、汎用レジスタ上のデータとメモ
リ上のデータの演算を行い、結果をメモリ上に格納する
命令と同様にできる。
【0085】前置命令コードによって1命令とみなされ
る命令が、イミディエイトデータを、メモリに転送する
命令の場合には、前置命令コード、イミディエイト・レ
ジスタ転送命令コード、メモリ・レジスタ転送命令コー
ドを実行し、イミディエイト・レジスタ転送命令コード
の実行時には、汎用レジスタではなく、イミディエイト
データをラッチ手段に格納し、メモリ・レジスタ転送命
令コードは、前記演算結果を格納したラッチ手段の内容
をデータとして、メモリへの書込みを行なう。
【0086】複数の命令コードを組合せて一連のものと
して実行する場合には、それぞれの命令コードの間に、
割込みなどの不所望の処理が挿入されることを禁止す
る。そのための制御信号は前記前置命令コードをデコー
ドして生成すればよい。前置命令コードには、そのほか
のデータサイズなどの情報を持たせることも可能であ
る。
【0087】前置命令コードにひき続いて、メモリ−レ
ジスタ転送命令コードを実行する場合、独立したメモリ
−レジスタ転送命令の命令コードと全く同一の命令コー
ドである必要はなく、請求項11及び請求項29に記載
のようにアドレッシングモードといったメモリの指定方
法を示すビットのみを共通にし、その他のビットは適宜
変更することができる。
【0088】上記した手段によれば、メモリ・レジスタ
間の転送命令、レジスタ・レジスタ間の演算命令などの
命令コードは既存のものであるから、単独では従来同様
に動作し、既存の命令実行を阻害することがない。ま
た、既存の命令のみを使用していれば、既存のソフトウ
ェア資産を有効に利用できる。
【0089】汎用レジスタ方式やロード・ストア・アー
キテクチャなどの既存のCPUが持つメリットを損なう
ことなく、前記演算性能を拡張することができる。
【0090】前記前置命令コードは、アドレッシングモ
ードや演算の内容によらず共通に使用できるから、追加
する命令コードを最低限にすることができる。また、前
置命令コードに、そのほかのデータサイズなどの情報を
持たせることによって、全体的な命令コード長を短縮で
きる。
【0091】メモリからラッチ手段へのデータ読み込
み、演算、ラッチ手段の内容に基づくメモリへのライト
は既存の命令と、使用するレジスタが相違なるのみであ
るから、既存の命令動作を大きく変更することなく、利
用できる。これによって、メモリ上のデータへの演算を
可能にすることによる論理規模の増加を最小限にするこ
とができる。
【0092】メモリ上のデータを直接的に演算可能とす
ることによって、直接処理できるデータ量を増加でき、
また、汎用レジスタの退避/復帰などを省くことがで
き、処理速度を向上することができる。
【0093】メモリ上のデータと汎用レジスタ上のデー
タの演算を行い、結果を汎用レジスタ上に格納する命令
の場合は、前置命令コードを含むため、メモリ・レジス
タ転送命令コード、演算命令コードを個別に実行した場
合の合計の処理時間より遅いが、汎用レジスタの退避や
復帰を行なわないので、全体的な処理時間は向上するこ
とができる。また、メモリ上のデータと汎用レジスタ上
のデータの演算を行い、結果をメモリ上に格納する命令
の場合は、レジスタ・メモリ転送命令コードを内部で発
生し、命令コードのリードを行なわないこと、前記別の
ラッチ手段(第2のラッチ手段)を利用して、リード時
に計算したメモリアドレスを再利用可能とすること、に
よって、メモリ・レジスタ転送命令コード、演算命令コ
ード、レジスタ・メモリ転送命令コードを個別に実行し
た場合の合計の処理時間よりも処理時間を短縮すること
ができる。
【0094】オブジェクトレベルで互換性を保ちつつ、
アドレス空間の広いCPUとアドレス空間の小さいCP
Uが存在する場合には、アドレス空間の広いCPUで、
前記前置命令コードを付加し、存在する転送命令、演算
命令を組合せることによって、下位互換性をもつ、アド
レス空間の小さいCPUでもメモリ上のデータに対する
直接的な演算を可能にできる。換言すれば、同一の方法
で、オブジェクトレベルで互換性を保ちつつ、アドレス
空間の広いCPUとアドレス空間の小さいCPUでもメ
モリ上のデータを直接的に演算可能にできる。オブジェ
クトレベルで互換性を保つことによる利点とメモリ上の
データを直接的に演算可能にすることの利点の双方を享
受することができる。
【0095】既存の命令を組合せ、新規の命令機能を実
現しているので、命令セットの更なる拡張や、更なる高
速化に当たって、既存のCPUに対して新たなる課題を
生じることが少ない。換言すれば、既存のCPUに対し
て、更なる命令セットの拡張や、更なる高速化を行なう
技術が存在する(発明された)場合には、本発明を適用
して、既存のCPUに対して命令セットを拡大したCP
Uに対しても、同様の技術を適用することができる。新
規の命令機能を実現するために用いている、既存の命令
のそれぞれに、前記技術を適用して、再度組合せればよ
い。前置命令コードは動作が単純であり、また、既存の
命令に類似した動作とすることによって、変更は容易で
ある。
【0096】また、既存の命令を組合せ、新規の命令機
能を実現しているので、既存のCPUとエミュレーショ
ン用インタフェースを共通化することができ、ひいて
は、同じエミュレータのハードウェアを共通に利用でき
る。エミュレータのハードウェアを共通化することによ
って、早く開発環境を整えることができ、また、エミュ
レータの開発に必要な資源を最小限にすることができ
る。
【0097】《検討事項Cの解決手段》請求項44乃至
66に記載の発明は前記検討課題Cに関する解決手段を
与えるものである。この検討課題Cに関する解決手段と
して、〔1〕レジスタ構成、又は命令とアドレッシング
モードとの組合せ、或いは前記双方の点に関し、一方が
他方を包含しないような異なる命令セットを含む複数の
データ処理装置例えば複数の下位CPUを想定する。こ
のとき、一方が他方の命令セットを包含しない、複数の
下位CPUに対して、何れの下位CPUをも包含する命
令セットを持った上位のCPUを構成して提供する。
【0098】開発に当たっては、既存のCPU(前記下
位CPUの一つ)に対して、汎用レジスタの構成を拡張
し、また、命令とアドレッシングモードの組合せを拡張
した、上位のCPUを開発する。前記下位CPUは前記
上位CPUのサブセットの構成若しくは命令セットを持
つことになる。前記汎用レジスタの拡張、命令とアドレ
ッシングモードの組合せの拡張については後述する。
【0099】更に、前記上位CPUの別のサブセットの
態様を以って、下位CPUの他方を実現する。
【0100】前記のように異なる命令セットを含む複数
の下位CPUと、適宜適当な上位CPUとを提供するこ
とによって、応用分野のソフトウェア上の要求に応えた
り、利用者の様々な好みに応えたり、更に別のCPUの
アセンブリ言語によるプログラムからも、比較的近い命
令セットのCPUを選択可能にでき、高位のCPUへの
移行を容易にすることができる。
【0101】前記の、一方が他方の命令セットを包含し
ない、複数の下位CPUに対して、いずれのCPUをも
包含する命令セットを持った上位のCPUを準備するこ
とにより、ソフトウェア資産の有効利用を可能にしつ
つ、性能/機能の向上したCPUを用意することができ
る。ソフトウェア資産の有効利用によって、使用者のソ
フトウェア開発の開発効率を向上することができる。
【0102】開発に当たっては、既存の下位CPUに対
して、汎用レジスタ乃至は、命令とアドレッシングモー
ドの組合せを拡張した上位CPUを開発し、このサブセ
ットを持つ別の下位のCPUを開発することによって、
上位CPUの論理的規模の増大を最小限にしつつ、性能
・機能・使い勝手などを向上することができると共に、
前記別の下位CPUの開発を容易にし、開発効率を向上
できる。前記上位のCPUの、更に上位のCPUを開発
する場合には、前記上位のCPUに対する互換性を維持
すれば、前記複数のCPUとの互換性を、自動的に維持
することができるから、ソフトウェア資産の有効利用を
実現しつつ、将来的な機能や性能の向上を図ったCPU
を実現し易くなる。
【0103】下位CPUのために開発されたプログラム
は、少なくとも、ソースプログラムのレベル(アセンブ
リ言語での記述レベル)で本発明に係る上位CPUに利
用可能になる。なお、ここで下位CPUとは、そのレジ
スタ構成並びにその命令セットが本発明に係る上位CP
UなどのCPUのレジスタ構成及び命令セットに包含さ
れるようなCPUをいう。
【0104】更に、オブジェクトプログラムレベルでの
上位互換を実現するには、有効なアドレスのビット数
と、ベクタ及びスタックの単位サイズとを、前記レジス
タの利用形態に応じて切り替える動作モード、例えばマ
キシマムモードとミニマムモードを用意しておけばよ
い。ミニマムモードにおいてCPUは少なくとも一つの
下位CPUと全く同様に動作する。マキシマムモードに
おいてCPUはそれに備えられた最大限の機能を以って
上位CPUとして動作される。
【0105】〔2〕汎用レジスタを拡張するためには、
前記検討課題Aに関する手段で述べたように、レジスタ
を指定するレジスタ指定情報を、2つの部分に分割す
る。この2つの部分を命令コードの基本単位上の別々の
基本単位に配置する。一方の命令コードを省略可能と
し、省略可能な命令コードを省略すると、所定レジスタ
指定情報を暗黙的に想定してレジスタ選択動作を行うよ
うにする。
【0106】〔3〕命令とアドレッシングモードの組合
せを拡張するためには、前記検討課題Bに関する手段で
述べたように、既存の、メモリ・レジスタ間の転送命令
やレジスタ・レジスタ間の演算命令の内、複数の命令コ
ードを組合せ、例えばこれを結合させる前置命令コード
を用いて、メモリのデータを直接的に用いた演算を可能
にする。要するに、所定の前置命令コードが付加された
場合、これに続く複数の命令コードを1つの命令として
解釈し、実行する。
【0107】〔4〕アドレス空間が広く、論理的な規模
を縮小したCPUを実現するには、アドレス空間全体に
対応するビット長のプログラムカウンタを設けて、プロ
グラム用としてはアドレス空間全体、少なくとも大部分
をリニアに利用可能にするとともに、比較的小規模なデ
ータを扱える程度に、データ転送のアドレッシングモー
ドを縮小したり、転送データのデータサイズを限定し
て、データアクセス時に、使用できるアドレス空間を小
さくし、かかるアドレス空間を2つに分割する。
【0108】前記によれば、アドレス空間全体に対応す
るビット長のプログラムカウンタを設けて、プログラム
用としてはアドレス空間全体、少なくとも大部分をリニ
アに利用可能にするとともに、比較的小規模なデータを
扱える程度に、データ転送のアドレッシングモードを縮
小したり、転送データのデータサイズを限定したりし
て、所望の応用分野などでの使い勝手を損なわずに、論
理的規模を縮小できる。
【0109】データアクセス時に、使用できるアドレス
空間を小さくし、かかるアドレス空間を2つに分割する
ことによって、使い勝手を損なわずに、上位CPUとの
アドレス空間上の互換性を維持するとともに、上位CP
Uに実効アドレス計算方法などを切り替える動作モード
を予め用意しておくことにより、ソフトウェア上の互換
性を維持することができる。
【0110】プログラム用のアドレス空間を広げること
により、C言語などの高級言語を使用したプログラミン
グなどに対する適性を向上できる。また、スタックポイ
ンタを切替え可能にすることによって、OSなどのタス
ク管理時のスタックの容量の不所望の増加を抑止でき
る。内蔵のメモリなどのみを用いて動作するシングルチ
ップマイクロコンピュータ乃至マイクロコンピュータシ
ステムでも、高級言語やOSなどを容易に利用可能に
し、使用者のソフトウェアの開発効率を向上することが
できる。
【0111】〔5〕また、開発装置については、前記上
位のCPUの命令セットについてのソフトウェア開発装
置を用意し、更に、一方が他方の命令セットを包含しな
い、複数のCPUに対しても共通に利用可能にし、利用
者がCPUを選択できるようにする。
【0112】ソフトウェア開発装置上で、アセンブリ言
語などの、汎用的な機能を持つ汎用レジスタの記述を、
複数種類許すようにする。
【0113】エミュレータについては、搭載するエミュ
レーション用プロセッサのエミュレーション用インタフ
ェースを共通化する。CPUの解析を行なうために、エ
ミュレータ上で、対象のCPUを選択する手段を設け
る。特に、逆アセンブラの対象CPUを選択可能にす
る。
【0114】前記上位CPUの命令セットについてのソ
フトウェア開発装置を用意し、更に、一方が他方の命令
セットを包含しない、複数のCPUに対しても共通に利
用可能にし、利用者がCPUを選択できるようにするこ
とによって、ソフトウェア開発装置の開発効率を向上す
ることができる。使用者にとっては、前記、複数のCP
Uを使用してもソフトウェア開発装置が共通であるか
ら、不所望な費用を発生させなくてよい。前記、複数の
CPUの内の一つのCPUから、別のCPUへの移行が
容易になり、開発効率を向上することができる。
【0115】また、上位CPUと下位CPUとエミュレ
ーション用インタフェースを共通化することができ、ま
た、上位CPUのエミュレーション用論理回路を開発す
ることによって、これを下位CPUにも利用でき、エミ
ュレーション用プロセッサを含めた開発効率を向上でき
る。また、同じエミュレータのハードウェアを共通で
き、これによって、逸早く開発環境を整えることができ
るとともに、また、エミュレータの開発に必要な資源を
最小限にすることができる。エミュレータに搭載する逆
アセンブラは、上位CPUのものを開発するとともに、
エミュレータ上で対象のCPUを選択する手段を設ける
ことによって、実質的に一つの逆アセンブラでよいこと
になるから、開発効率を更に向上できる。
【0116】〔6〕検討課題Cに関して以上に述べた手
段を、互換性、エミュレーション用プロセッサ、エミュ
レータ、ソフトウェア開発装置、上位CPUのようなデ
ータ処理装置、下位CPUのようなデータ処理装置の観
点より整理することができる。
【0117】〔6−1〕互換性の観点のデータ処理装置
は、命令を所定の手順にしたがって実行するものであっ
て、第1の別のデータ処理装置の命令実行機能を包含す
ることによって当該第1の別のマイクロコンピュータの
命令コードと同一の命令コードを実行可能であり、第2
の別のデータ処理装置の命令実行機能を包含することに
よって当該第2の別のデータ処理装置の命令コードと同
一の命令コードを実行可能である。そして、前記第1の
別のデータ処理装置の命令実行機能に包含されず、前記
第2の別のデータ処理装置の命令実行機能に包含される
ところの、オペランド指定とオペレーション指定との双
方又は何れか一方に関し、複数の前記指定を組み合わせ
た命令と、前記第2の別のデータ処理装置の命令実行機
能に包含されず、前記第1の別のデータ処理装置の命令
実行機能に包含されるところの、オペランド指定とオペ
レーション指定との双方又は何れか一方に関し、複数の
前記指定を組み合わせた命令と、を実行する命令実行手
段を含む。
【0118】前記オペランド指定は、例えば、実効アド
レスの演算、汎用レジスタ、又はアドレス空間に関する
指定である。
【0119】前記データ処理装置が、有効なアドレスの
ビット数とベクタ及びスタックの単位サイズとが相違さ
れる第1動作モードと第2の動作モードとを切替え可能
に有するなら、前記第1の動作モードにおける有効なア
ドレスのビット数と、ベクタ及びスタックの単位サイズ
は、前記第1の別のデータ処理装置と同等である。前記
第2の動作モードにおける有効なアドレスのビット数
と、ベクタ及びスタックの単位サイズは、前記第2の別
のデータ処理装置と同等である。
【0120】互換性に着目した更に別の観点のデータ処
理装置は、命令を所定の手順にしたがって実行するデー
タ処理装置であって、データ情報の保持には全体又は2
分割した領域を利用可能であり、且つ、2分割された下
位側のビット数よりも多いビット数を以ってアドレス情
報の保持にも利用可能な汎用レジスタを複数有する。命
令実行手段は、前記2分割した下位側のビット数に相当
する汎用レジスタを、所定の複数有する第1の別のデー
タ処理装置の命令のコードと同一ビット数の命令のコー
ドを実行可能なように当該第1の別のデータ処理装置の
命令実行機能を包含した上で、前記2分割可能な汎用レ
ジスタの全体を利用する命令を実行し、また、前記2分
割可能な汎用レジスタを前記所定の複数よりも少ない数
だけ有する第2の別のデータ処理装置の命令のコードと
同一ビット数の命令コードを実行可能なように当該第2
の別のデータ処理装置の命令実行機能を包含する。
【0121】互換性に着目したデータ処理装置の開発方
法の観点によると、第1のデータ処理装置における未定
義の命令のコードを前置命令コードとし、前記前置命令
コードは、これに続く、第1のデータ処理装置の命令コ
ードの定義を変更して、第1のデータ処理装置では定義
されていない、オペランド指定とオペレーション指定と
の双方又は何れか一方に関し、複数の前記指定を組合せ
た命令を定義することにより、前記第1のデータ処理装
置の命令を包含する命令を有する第2のデータ処理装置
の命令を実現する。前記第2のデータ処理装置の命令の
一部によって第3のデータ処理装置の命令を実現する。
【0122】前記前置命令コードは、例えば、これに続
く命令コードによって指定される汎用レジスタの指定を
変更可能にするものである。また、別の前置命令コード
は、これに続く転送命令コードと、別の転送命令のコー
ドまたは演算命令のコードの内の2つ以上の命令コード
によって、メモリ上のデータの操作を定義するもであ
る。
【0123】〔6−2〕エミュレーション用プロセッサ
の観点によると、前記互換性の観点で説明したデータ処
理装置と、エミュレーションインタフェースとを含み、
前記データ処理装置の命令実行によって、前記第1、第
2の別のデータ処理装置の命令実行を代行可能なように
エミュレーション用プロセッサを構成する。
【0124】〔6−3〕エミュレータの観点によると、
前記エミュレーション用プロセッサを搭載し、ユーザプ
ログラムを実行するエミュレーション用プロセッサにそ
の内部状態を制御させる為の制御プログラムを格納可能
なエミュレーションプログラム領域と、エミュレーショ
ンプログラム領域に前記制御プログラムを格納するコン
トロールプロセッサとを含んでエミュレータを構成す
る。
【0125】エミュレーション用プロセッサは、前記制
御プログラムに従った内部の設定状態に応じて前記第
1、第2の別のデータ処理装置の命令実行を代行させる
ことが可能である。
【0126】〔6−4〕ソフトウェア開発装置(クロス
ソフトウェア)の観点によると、生成すべきプログラム
の対象となるデータ処理装置を選択する手段を設け、前
記前記互換性の観点で説明したデータ処理装置、第1の
別のデータ処理装置又は第2の別のデータ処理装置のプ
ログラムを生成可能にソフトウェア開発装置を構成す
る。
【0127】〔6−5〕上位CPUの観点によると、デ
ータ処理装置は、データまたはアドレスを格納可能なレ
ジスタを複数個備え、命令コードを読み込んで制御手段
で解読して動作する。前記命令コードは基本単位から構
成され、前記レジスタを指定するレジスタ指定情報は複
数の命令コード基本単位に分割して保持させることが可
能にされる。メモリとレジスタ間のデータ転送を行なう
転送命令コードと、レジスタ上のデータに対して演算を
行なう演算命令コードとを命令セットに含む。前記制御
手段は、前記命令コードが保有する前記レジスタ指定情
報の解読結果に基づいてレジスタを選択し、分割された
一方のレジスタ指定情報を持つ前置命令コードが省略さ
れた場合には、省略されたレジスタ指定情報に代わって
所定のレジスタ指定情報を暗黙的に想定してレジスタを
選択し、また、前置命令コードと、前記転送命令コード
と、前記演算命令コードとを、順次読み込んで、一つの
命令として解釈し、メモリ上のデータに対する直接的な
演算を実行させる。
【0128】前記メモリ上のデータに対する直接的な演
算とは、例えば、前記命令コードには明示されないデー
タラッチ手段へメモリからデータをロードし、当該デー
タラッチ手段にロードしたデータを用いて行なう演算処
理である。
【0129】また、上位CPUの別の観点によるデータ
処理装置は、データまたはアドレスを格納可能なレジス
タを複数個備え、命令コードを読み込んで制御手段で解
読して動作する。前記命令コードは基本単位から構成さ
れ、前記レジスタを指定するレジスタ指定情報は複数の
命令コード基本単位に分割して保持させることが可能に
される。メモリとレジスタ間のデータ転送を行なう転送
命令コードを命令セットに含む。前記制御手段は、前記
命令コードが保有する前記レジスタ指定情報の解読結果
に基づいてレジスタを選択し、分割された一方のレジス
タ指定情報を持つ前置命令コードが省略された場合に
は、省略されたレジスタ指定情報に代わって所定のレジ
スタ指定情報を暗黙的に想定してレジスタを選択し、ま
た、前置命令コードと、前記転送命令コードと、別の転
送命令コードとを、順次読み込んで、一つの命令として
解釈し、メモリとの間の直接的なデータ転送を実行させ
る。
【0130】前記メモリとの間の直接的なデータ転送と
は、例えば、前記命令コードには明示されないデータラ
ッチ手段へメモリからデータをロードし、当該データラ
ッチ手段のデータを前記メモリにストアする処理であ
る。
【0131】〔6−6〕下位CPUの観点によるデータ
処理装置は、アドレス空間のビット数に相応するビット
数のプログラムカウント手段と、データ情報の保持には
全体又は2分割した領域を利用可能であり、且つ、2分
割された前記一方のビット数よりも多いビット数を以っ
てアドレス情報の保持にも利用可能な複数の汎用レジス
タと、命令実行手段とを有する。前記命令実行手段は、
データ情報の保持に前記汎用レジスタの全体を利用する
命令と、前記汎用レジスタと別の記憶装置との間のデー
タ転送命令とを実行可能であって、前記データ転送命令
の転送データのビット数を、前記汎用レジスタの2分割
した前記一方のビット数以下とすることが可能であり、
また、アドレス空間上のデータを指定するためのアドレ
ッシングモードの一部をアドレス空間上で複数に分離さ
れた部分で有効とする。
【0132】前記アドレス空間上で複数に分離された一
方の部分には、命令実行の開始アドレスを指定するベク
タを含め、他方の部分には、リード・ライト可能な別の
記憶装置のアドレスをマッピング可能である。
【0133】《検討課題Dの解決手段》請求項67乃至
76に記載の発明は前記検討課題Dに関する解決手段を
与えるものである。この検討課題Dに関する解決手段と
して、メモリ上のデータのビットの状態に応じた分岐を
行なう命令を、動作を規定するフィールド(オペレーシ
ョンフィールド)を複数に分割し、これを命令コードの
基本単位上の別のワードで実現し、かかるワードを、独
立して使用可能な別の命令の命令コード、乃至、別の命
令の命令コードの一部と共通にする。かかる命令コード
の第1のワードは、テンポラリレジスタの様な、プログ
ラム上解放されていないラッチ手段とメモリの間でデー
タ転送を行なう。第2のワードは、前記ラッチ手段の所
望のビットの状態を判定して分岐を行なう。上記テンポ
ラリレジスタの様なラッチ手段には、指定されたビット
の状態を判定する手段を設け、ALUなどに読み出した
りすることなく、所定のビットの状態を判定できるよう
にする。上記命令コードの第1のワードは、コンディシ
ョンコードなどの変化を禁止し、また、その終了時点で
割込み例外処理を禁止するようにする。
【0134】第1の例は、テンポラリレジスタの様な、
プログラム上解放されていないラッチ手段とメモリの間
でデータ転送を行なう転送命令コード(第1のワード)
と、条件分岐命令コード(第2のワード)を組合せて、
上記転送命令コードに続いて、上記条件分岐命令を実行
する場合には、条件を、コンディションコードに代え
て、ビット番号と当該ビットの状態とするようにし、メ
モリ上のデータのビットの状態に応じた分岐を可能にす
る。更に、上記転送命令コードは、ビットテスト命令な
どの一部と共通化するとよい。
【0135】第1の例の別の観点では、ビットテスト命
令などの命令コードと共通の、テンポラリレジスタの様
な、プログラム上解放されていないラッチ手段とメモリ
の間でデータ転送を行なう転送命令コードと、条件分岐
命令の命令コードを組合せて、アドレス空間上のデータ
の所定のビットの状態を判定して分岐する分岐命令を実
現する。
【0136】第2の例は、既存の、メモリ−レジスタ間
の転送を行なう命令コード、条件分岐命令を組合せ、こ
れを結合させる前置命令コードを持って、メモリ上のデ
ータのビットの状態に応じた分岐を可能にする。即ち、
前記前置命令コードに続いて、メモリ−レジスタ間命令
を実行する場合は、汎用レジスタではなく、CPU内
の、テンポラリレジスタの様な、プログラム上解放され
ていないラッチ手段とメモリの間でデータ転送を行な
う。
【0137】上記第2の例は、未だ公知でない本発明者
の先願に記載されている、ソースをメモリ上のデータと
した命令の実現方法と、共通化し、演算命令コードを、
分岐命令コードに置き換えることによって、実現するこ
とができる。
【0138】詳細には、メモリ上のデータと汎用レジス
タ上のデータの演算を行い、結果を汎用レジスタ上に格
納する命令の場合には、前置命令コード、メモリ−レジ
スタ転送命令コード、演算命令コードを実行し、メモリ
−レジスタ転送命令コードの実行時には、汎用レジスタ
ではなく、転送データをラッチ手段に格納し、演算命令
コードは、前記ラッチ手段に格納したデータと汎用レジ
スタ上のデータとの演算を行い、結果を汎用レジスタに
格納する。
【0139】汎用レジスタ上のデータとメモリ上のデー
タの演算を行い、結果をメモリ上に格納する命令の場合
には、前置命令コード、メモリ−レジスタ転送命令コー
ド、演算命令コード、及び内部で生成したメモリ−レジ
スタ転送命令コードを実行し、メモリ−レジスタ転送命
令コードの実行時には、汎用レジスタではなく、転送デ
ータをラッチ手段に格納する。演算命令コードは、前記
ラッチ手段に格納したデータと汎用レジスタ上のデータ
との演算を行い、演算結果をラッチ手段に格納する。メ
モリ−レジスタ転送命令コードは、前記アドレスを格納
したラッチ手段の内容をアドレスとして、前記演算結果
を格納したラッチ手段の内容をデータとして、メモリへ
の書込みを行なう。インクリメントなどのように、1つ
のメモリ上のデータに対する演算を行なう場合もこれと
同様にする。また、メモリ−レジスタ転送命令コード実
行時には、フラグの変化を抑止し、演算結果のフラグの
変化を保持する。
【0140】2つのメモリ上のデータの演算を行い、結
果をメモリ上に格納する命令の場合には、前置命令コー
ド、第1、第2のメモリ・レジスタ間転送命令コード、
演算命令コード、及び内部で生成したメモリ・レジスタ
間転送命令コードを実行し、第1、第2のメモリ・レジ
スタ間転送命令コードの実行時には、汎用レジスタでは
なく、転送データをラッチ手段に格納する。演算命令コ
ードは、前記ラッチ手段に格納したデータの演算を行
い、結果をラッチ手段に格納する。メモリ・レジスタ間
転送命令コードは、前記アドレスを格納したラッチ手段
の内容をアドレスとして、前記演算結果を格納したラッ
チ手段の内容をデータとして、メモリへの書込みを行な
う。
【0141】一方、メモリ上のデータを、別のメモリに
転送する命令の場合には、前置命令コード、メモリ・レ
ジスタ間転送命令コード、メモリ・レジスタ間転送命令
コードを実行し、メモリ・レジスタ間転送命令コードの
実行時には、汎用レジスタではなく、転送データをラッ
チ手段に格納し、メモリ・レジスタ間転送命令コード
は、前記演算結果を格納したラッチ手段の内容をデータ
として、メモリへの書込みを行なう。
【0142】イミディエイトデータとメモリ上のデータ
との演算の場合は、概略汎用レジスタ上のデータとメモ
リ上のデータの演算を行い、結果をメモリ上に格納する
命令と同様にできる。
【0143】イミディエイトデータを、メモリに転送す
る命令の場合には、前置命令コード、イミディエイト・
レジスタ間転送命令コード、メモリ・レジスタ間転送命
令コードを実行し、イミディエイト・レジスタ間転送命
令コードの実行時には、汎用レジスタではなく、イミデ
ィエイトデータをラッチ手段に格納し、メモリ・レジス
タ間転送命令コードは、前記演算結果を格納したラッチ
手段の内容をデータとして、メモリへの書込みを行な
う。
【0144】上記した手段によれば、第1のワード、第
2のワード(条件分岐命令)などの命令コードは既存の
ものであるから、単独では従来同様に動作し、既存の命
令実行を阻害することがない。また、既存の命令のみを
使用していれば、既存のソフトウェア資産を有効に利用
できる。汎用レジスタやロードストアアーキテクチャな
どの既存のCPUのメリットを損なうことがない。第1
のワード、第2のワード(条件分岐命令)に、それぞ
れ、絶対アドレスのビット長、ディスプレースメントの
ビット長などに複数の種類があれば、同じ方法によっ
て、これらを組合せることができる。これらの組合せを
可能にすることによって、プログラム上の制約をなく
し、使い勝手を向上することができる。また、同じ方法
によって、サブルーチン分岐命令と組合せることが可能
となり、使い勝手を向上することができる。
【0145】テンポラリレジスタの様なラッチ手段に
は、指定されたビットの状態を判定する手段を設け、A
LUなどに読み出したりすることなく、所定のビットの
状態を判定できるようにすることにより、条件分岐命令
の全体的な動作を変更することなく、実現できるから、
変更する部分を小さくし、また論理的規模の増加を最小
限にすることができる。
【0146】前記前置命令コードは、アドレッシングモ
ードや演算の内容によらず共通に使用できるから、追加
する命令コードを最低限にすることができる。また、前
置命令コードに、そのほかのデータサイズなどの情報を
持たせることによって、全体的な命令コード長を短縮で
きる。
【0147】メモリからラッチ手段へのデータ読み込
み、演算、ラッチ手段の内容に基づくメモリへのライト
は既存の命令と、使用するレジスタが相違なるのみであ
るから、既存の命令動作を大きく変更することなく、利
用できる。これによって、メモリ上のデータへの演算を
可能にすることによる論理規模の増加を最小限にするこ
とができる。
【0148】オブジェクトレベルで互換性を保ちつつ、
アドレス空間の広いCPUとアドレス空間の小さいCP
Uが存在する場合には、アドレス空間の広いCPUで、
前記命令を実現することで、下位互換性をもつ、アドレ
ス空間の小さいCPUでもメモリ上のデータを演算を可
能にできる。換言すれば、同一の方法で、オブジェクト
レベルで互換性を保ちつつ、アドレス空間の広いCPU
とアドレス空間の小さいCPUでもメモリ上のデータを
演算を可能にできる。オブジェクトレベルで互換性を保
つことによる利点とメモリ上のデータを演算を可能にす
ることの利点の双方を享受することができる。
【0149】既存の命令を組合せ、新規の命令機能を実
現しているので、命令セットの更なる拡張や、更なる高
速化に当たって、既存のCPUに対して新たなる課題を
生じることが少ない。換言すれば、既存のCPUに対し
て、更なる命令セットの拡張や、更なる高速化を行なう
技術が存在し、若しくは新たに開発された場合には、本
発明を適用して、既存のCPUに対して命令セットを拡
大したCPUに対しても、同様の技術を適用することが
できる。新規の命令機能を実現するために用いている、
既存の命令のそれぞれに、前記技術を適用して、再度組
合せればよい。前置命令コードは動作が単純であり、ま
た、既存の命令に類似した動作とすることによって、変
更は容易である。
【0150】また、既存の命令を組合せ、新規の命令機
能を実現しているので、既存のCPUとエミュレーショ
ン用インタフェースを共通化することができ、ひいて
は、同じエミュレータのハードウェアを共通できる。エ
ミュレータのハードウェアを共通化することによって、
逸早く開発環境を整えることができ、また、エミュレー
タの開発に必要な資源を最小限にすることができる。
【0151】前述の検討課題B及びDを、まとめれば、
前置コードとデータを読み込む転送命令コードと、処理
を指定する命令コード(転送命令コード:メモリ間転送
の場合、演算命令コード:メモリ間演算の場合、分岐命
令コード:ビット条件分岐命令)を組合せて、新規の命
令コードを定義するものである。既に、前置コードとデ
ータを読み込む転送命令コードを組合せた命令コード
(メモリからテンポラリレジスタなどへのリード、と制
御信号の発生)を有する場合は、これと処理を指定する
命令コードを組合せて、新規の命令コードを定義するも
のである。
【0152】《検討課題Eの解決手段》請求項77乃至
92に記載の発明は前記検討課題Eに関する解決手段を
与えるものである。この検討課題Eに関する手段治し
て、〔1〕データ処理装置は、命令を実行する実行手段
を制御する制御手段に対して指定可能な複数の汎用レジ
スタの組み合わせを固定にし、当該組み合わせが固定の
複数の汎用レジスタとアドレス空間上のアドレスとの間
でデータ転送を行う為の転送命令を命令セットに含んで
いる。これによって、汎用レジスタのビット長より大き
いデータであっても、容易に扱うことができ、使い勝手
を向上するとともに、データのリード/ライトに対し
て、命令のリードの頻度を低減して、データ処理の高速
化を図ることができる。
【0153】アドレス演算器による上記転送命令の実効
アドレスの計算は1回だけとし、アドレスバッファにイ
ンクリメントまたはデクリメント機能とインクリメント
結果を保持する機能を持たせることにより、命令動作を
単純にし、既存の転送命令の制御と共通化を図ることが
でき、命令デコーダ等の論理的な規模の増加を最小限に
することができる。また、種々のアドレッシングモード
に共通に、利用することができる。
【0154】〔2〕汎用レジスタが分割可能で、かつ分
割した部分に機能上の相違がある場合などには、汎用レ
ジスタ全体を使用する転送命令と、分割された一部分を
使用する転送命令とを備えるとよい。これにより、デー
タ処理上、使用し易い汎用レジスタとの転送ができるか
ら、その処理を容易にし、高速化することができる。
【0155】〔3〕汎用レジスタに対する演算命令など
の実行ステート数などが、汎用レジスタ毎に相違する場
合などには、所定の組合せの複数の汎用レジスタと、別
の複数の汎用レジスタとの転送命令を備えるとよい。こ
のとき、汎用レジスタを増加し、汎用レジスタを指定す
るレジスタ指定フィールドを、2つの部分に分割し、こ
の2つの部分を命令コードの基本単位上の別のワードに
配置するとともに、一方のワードを省略可能とし、省略
可能なワードを省略すると、暗黙的に所定のレジスタ指
定情報が指定されるようにしてもよい。省略可能なワー
ドには、レジスタ指定フィールドの一部のみを持つよう
にし、演算の種類などは指定しないようにする。省略可
能なワードに含まれるレジスタ指定フィールドを保持す
る手段を設け、前記省略可能なワードが実行されると、
前記省略可能なワードに含まれるレジスタ指定フィール
ドを前記保持手段に格納する。更に、命令の実行終了時
に、前記保持手段を、前記暗黙的な指定に対応する所定
の値に設定する。省略不可能なワードを、既存のCPU
と共通にし、省略可能なワードを既存のCPUの未定義
のワードに割当てるとよい。
【0156】暗黙的に指定可能な汎用レジスタ(例えば
既存の下位CPUの汎用レジスタ)のみを使用していれ
ば、省略可能なワードを省略できるから、命令コードを
増加させることがない(少なくとも従来同等の汎用レジ
スタを使用する場合は、従来同等の命令コードでよ
い)。命令コードを増加させないことよって、処理速度
を低下させることがない。
【0157】前記省略可能なワードを付加することによ
って、命令によって直接汎用レジスタの全てを選択でき
るから、プロラムの容易性を損う部分が少ない。また、
任意の量の汎用レジスタの一部を、所望のタスク毎や所
望の割込み処理などに確保しておく(他のタスクや処理
では使用しない)ことによって、前記タスクや割込み処
理において汎用レジスタを待避したりする必要がなく、
高速化が図れる。また、前記タスクや割込み処理に確保
する汎用レジスタ数は任意にできるから、タスクや処理
の間で、使用する汎用レジスタを相互に融通し合うこと
も容易である。
【0158】前記ワードを付加することによって、指定
できる汎用レジスタのアクセスは、RAMなどのメモリ
のアクセスより、一般に高速にできるから、汎用レジス
タ数を増加するとともに、複数の汎用レジスタとメモリ
との転送を高速に実行可能にすることにより、CPUの
処理速度を向上できる。また、いわゆるロードストア型
の命令セットを持ち、メモリの内容に対して直接演算で
きないようなプロセッサについては、直接処理できるデ
ータ量を増加でき、また、メモリのアクセスを高速化す
ることができ、処理速度を向上することができる。
【0159】〔4〕オブジェクトレベルで互換性を保ち
つつ、アドレス空間の広いCPUとアドレス空間の小さ
いCPUが存在する場合には、アドレス空間の広いCP
Uにおいて、アドレス空間に対応する汎用レジスタに対
する上記転送命令と、アドレス空間の小さいCPUのア
ドレス空間に対応するサイズ(例えば16ビット)の汎
用レジスタに対する上記転送命令とを備える。
【0160】オブジェクトレベルで互換性を保ちつつ、
アドレス空間の広いCPUとアドレス空間の小さいCP
Uが存在する場合には、アドレス空間の広いCPUにお
いて、アドレス空間に対応するサイズ(例えば32ビッ
ト)の汎用レジスタに対する上記転送命令と、アドレス
空間の小さいCPUのアドレス空間に対応するサイズ
(例えば16ビット)の汎用レジスタに対する上記転送
命令とを備えることによって、後者のサイズの上記転送
命令を、下位互換性をもつ、アドレス空間の小さいCP
Uでも容易に実現可能にできる。換言すれば、同一の方
法で、オブジェクトレベルで互換性を保ちつつ、アドレ
ス空間の広いCPUとアドレス空間の小さいCPUでも
複数汎用レジスタの転送命令を実現可能にできる。オブ
ジェクトレベルで互換性を保つことによる利点と前記転
送命令を追加することの利点の双方を享受することがで
きる。
【0161】
【発明の実施の形態】《検討課題A乃至Cの解決手段に
関する実施の形態》先ず、前記検討課題A乃至Cの解決
手段に関する発明の具体例を説明する。図2には、本発
明に係るデータ処理装置の一例であるシングルチップマ
イクロコンピュータが示される。
【0162】同図に示されるシングルチップマイクロコ
ンピュータ1は、全体の制御を司るCPU2、割込コン
トローラ(INT)3、CPU2の処理プログラムなど
を格納するメモリであるROM4、前記CPU2の作業
領域並びにデータの一時記憶に用いられるメモリである
RAM5、タイマ〔A〕6、タイマ〔B〕7、シリアル
コミュニケーションインタフェース(SCI)8、A/
D変換器9、第1乃至第9入出力ポート(IOP〔1〕
〜IOP
〔9〕)11〜19、クロック発振器(CP
G)20、システムコントローラ(SYSC)21及び
DMAC(ダイレクトメモリアクセスコントローラ)3
3の機能ブロック乃至はモジュールから構成され、公知
の半導体製造技術により単結晶シリコンのような1つの
半導体基板上に形成される。CPUCR22はシステム
コントローラ21に配置されたコントロールレジスタで
ある。
【0163】前記CPU2は主にROM4から命令をフ
ェッチし、これを解読して演算動作や制御動作を行う。
前記DMAC33はCPU2とバス30を共有し、CP
U2から設定されたデータ転送制御条件に従って、CP
U2に代わってデータ転送制御を行う事ができる。DR
EQはマイクロコンピュータ1の外部からDMAC33
に与えられるデータ転送要求信号である。DMAC33
はデータ転送要求信号DREQによるデータ転送要求を
受け付けるとき、データ転送要求承認信号DACKを要
求元に返す。
【0164】かかるシングルチップマイクロコンピュー
タ1は、電源端子として、グランドレベル(Vss)、
電源電圧レベル(Vcc)、アナロググランドレベル
(AVss)、アナログ電源電圧レベル(AVcc)、
アナログ基準電圧(Vref)の入力端子を有する。そ
して、専用制御端子として、リセット(RES)、スタ
ンバイ(STBY)、モード制御(MD0、MD1、M
D2)、クロック入力(EXTAL、XTAL)等の各
端子を有する。
【0165】シングルチップマイクロコンピュータ1
は、前記CPG20の端子EXTAL、XTALに接続
される水晶発振子またはEXTAL端子に入力れる外部
クロックに基づいて生成される基準クロック(システム
クロック)に同期して、動作を行う。この基準クロック
の1周期をステートと呼ぶ。
【0166】シングルチップマイクロコンピュータ1の
機能ブロックは、内部バス30によって相互に接続さ
る。シングルチップマイクロコンピュータ1は、バスの
制御を行なう、図示を省略したバスコントローラを内蔵
している。内部バス30は内部アドレスバス・内部デー
タバスの他、リード信号・ライト信号等のコントロール
バスを含み、コントロールバスはさらにバスサイズ信号
を含んだり、これらをコード化したバスコマンドなどと
してもよい。或いはシステムクロックなどを含んでもよ
い。
【0167】特に図示はしないが、内部アドレスバスは
その位相によって、IAB、PABの2種類があり、内
部データバスもその位相によって、IDB、PDBが存
在する。例えば、リードの場合、IABの後、PABは
0.5ステート遅延する。PABとPDBは同期してい
る。PDBの後、IDBは0.5ステート遅延する。I
ABとPAB、IDBとPDBのインタフェースは、前
記バスコントローラが行なう。
【0168】かかる機能ブロックやモジュールは内部バ
ス30を介して、CPU2によってリード/ライトさ
る。内部バス30のデータバス幅は16ビットとする。
CPU2は、内蔵ROM4、RAM5を1ステートでリ
ード/ライトすることができる。
【0169】なお、タイマ〔A〕6、タイマ〔B〕7、
SCI8、A/D変換器9、IOP〔1〕11〜IOP
〔9〕19、CPG20が有す制御レジスタを総称し
て、内部I/Oレジスタと呼ぶ。
【0170】各入出力ポート11〜19は、アドレスバ
ス、データバス、バス制御信号、あるいはタイマ6,
7、SCI8、A/D変換器9の入出力端子と兼用され
ている。すなわち、タイマ6、7、SCI8、A/D変
換器9は、それぞれ入力信号を有し、入出力ポートと兼
用にされた端子を介して、外部と入出力されるものであ
る。例えばIOP〔5〕、IOP〔6〕、IOP〔7〕
は、タイマ6,7の入出力端子と兼用され、IOP
〔8〕はSCI8の入出力端子と兼用にされている。ア
ナログデータの入力端子は、IOP
〔9〕と兼用にされ
ている。
【0171】かかるシングルチップマイクロコンピュー
タ1にリセット信号RESが与えられると、CPU2を
始めとし、シングルチップマイクロコンピュータ1はリ
セット状態になる。このリセットが解除されると、CP
U2は所定のアドレスからスタートアドレスをリードし
て、このスタートアドレスから命令のリードを開始する
リセット例外処理を行う。この後、CPU2は逐次、R
OM4などから命令をリードし、解読して、その解読内
容に基づいてデータの処理或はRAM5、タイマ6,7
等とのデータ転送を行う。即ち、CPU2は、入出力ポ
ート11〜19等から入力されるデータ、或はSCI8
などから入力される指示を参照しつつ、ROM4などに
記憶されている命令に基づいて処理を行い、その結果に
基づいて、入出力ポート11〜19、タイマ6,7等を
使用しつて、外部に信号を出力し、各種外部接続機器の
制御を行う。
【0172】タイマ6,7、SCI8、外部信号などの
状態を割込み信号として、CPU2に伝達することがで
きる。割込信号は、A/D変換器9、タイマ〔A〕6、
タイマ〔B〕7、SCI8、入出力ポート11〜19が
出力し、割込コントローラ3はこれを入力して、所定の
レジスタなどの指定に基づて、CPU2に割込要求信号
31を与える。割込要因が発生すると、CPU割込要求
が発生され、CPU2は実行中の処理を中断して、例外
処理状態を経て、所定の処理ルーチンに分岐し、所望の
処理を行い、割込要因をクリアしたりする。所定の処理
ルーチンの最後には、通常復帰命令が実行され、この命
令を実行することによって前記中断した処理を再開す
る。
【0173】図3には、本発明の適用された前記CPU
2の汎用レジスタ及びコントロールレジスタの構成例
(プログラミングモデル)として上位のCPU2のプロ
グラミングモデルが示される。
【0174】CPU2は、32ビット長の汎用レジスタ
を32本持っている。汎用レジスタER0〜ER31
は、すべて同機能を持っており、アドレスレジスタとし
てもデータレジスタとしても使用することができる。
【0175】データレジスタとしてしては32ビット
(ロングワード)、16ビット(ワード)および8ビッ
ト(バイト)のレジスタとして使用きる。アドレスレジ
スタおよび32ビットレジスタとしては、一括して汎用
レジスタER(ER0〜ER31)として使用する。1
6ビットレジスタとしては、汎用レジスタERを分割し
て汎用レジスタE(E0〜E31)、汎用レジスタR
(R0〜R31)として使用する。これらは同等の機能
を持っており、16ビットジスタを最大64本まで使用
することができる。8ビットレジスタとしては、汎用レ
ジスタRを分割して汎用レジスタRH(R0H〜R31
H)、汎用レジスタRL(R0L〜R31L)として使
用する。これらは同等の機能を持っており、8ビットレ
ジスタを最大64本まで使用することができる。各レジ
スタ独立に使用方法を選択することができる。
【0176】汎用レジスタER7、ER15、ER2
3、ER31には、汎用レジスタとしての機能に加え
て、スタックポインタ(SP)としての機能が割り当て
られており、例外処理やサブルーチン分岐などで暗黙的
に使用される。例外処理は前記割込み処理を含む。図示
されない制御レジスタなどの設定によって、サブルーチ
ン分岐用のスタックポインタと、例外処理用のスタック
ポインタを、独立して選択することができる。
【0177】なお、内部論理構成上はER0〜ER7を
グループ0、ER8〜ER15をグループ1、ER16
〜ER23をグループ2、ER24〜ER31をグルー
プ3としている。グループ0が既存のCPU(下位のC
PU)と同一とされる。
【0178】それらの汎用レジスタは、プログラミング
仕様上は相違なく、すべて同等に使用できる。少なくと
も、アセンブリ言語で書く場合には、グループを意識せ
ず、例えば、R0H、E8、R16、ER31、などと
記述できる。例えば平成7年3月(株)日立製作所発行
『H8S/2600シリーズH8S/2000シリーズ
プログラミングマニュアル』のアセンブラフォーマット
に従って記述すれば、“MOV.L ER0,ER3
1”或いは、“ADD.W E8,R16”などとレジ
スタ番号のみで記述できる。
【0179】図3において、PCで示されるものは24
ビットのカウンタ(プログラムカウンタ)で、CPU2
が次に実行する命令のアドレスを示す。特に制限されな
いが、CPU2の命令は、全て2バイト(ワード)を単
位としているため、最下位ビットは無効であり、命令リ
ード時には最下位ビットは0とみなされる。
【0180】CCRで示されるものは8ビットのレジス
タ(コンディションコードレジスタ)で、CPU2の内
部状態を示している。割込みマスクビット(I)とハー
フキャリ(H)、ネガティブ(N)、ゼロ(Z)、オー
バフロー(V)、キャリ(C)の各フラグを含む8ビッ
トで構成されている。
【0181】EXRで示されるものは8ビットのレジス
タで、割込みなどの例外処理の制御を行なう。割込みマ
スクビット(I2〜I0)とトレース(T)の各ビット
を含んでいる。
【0182】汎用レジスタ上のデータ構成例、メモリ空
間上のデータ構成、アドレッシングモードと実効アドレ
スの計算方法などについては、平成7年3月(株)日立
製作所発行『H8S/2600シリーズH8S/200
0シリーズプログラミングマニュアル』記載のCPUと
同様であり、アドレス空間16MB(乃至データ用4G
B)を利用できる。マキシマムモード/ミニマムモード
(前記平成7年3月(株)日立製作所発行『H8S/2
600シリーズH8S/2000シリーズプログラミン
グマニュアル』の記載ではアドバンスト/ノーマルモー
ド)を持って、それぞれ、アドレス空間64kバイト/
16Mバイト(乃至データ用4Gバイト)を選択でき
る。
【0183】図4にはCPU2に対する第1の下位互換
のCPUのプログラミングモデルが示される。同図に示
されるプログラミングモデルは、平成元年7月(株)日
立製作所発行『H8/300シリーズプログラミングマ
ニュアル』記載のCPUと同様である。
【0184】第1の下位互換のCPUは、16ビット長
の汎用レジスタを8本持っている。汎用レジスタは、全
て同機能を持っており、アドレスレジスタとしてもデー
タレジスタとしても使用することができる。
【0185】データレジスタとしてしては16ビットお
よび8ビットレジスタとして使用できる。アドレスレジ
スタおよび16ビットレジスタとしては、一括して汎用
レジスタR(R0〜R7)として使用する。8ビットレ
ジスタとしては、汎用レジスタRを分割して汎用レジス
タRH(R0H〜R7H)、汎用レジスタRL(R0L
〜R7L)として使用する。これらは同等の機能を持っ
ており、8ビットレジスタを最大16本まで使用するこ
とができる。各レジスタ独立に使用方法を選択すること
ができる。
【0186】汎用レジスタR7には、前記同様に、汎用
レジスタとしての機能に加えて、スタックポインタ(S
P)としての機能が割り当てられており、例外処理やサ
ブルーチン分岐などで暗黙的に使用される。
【0187】アドレス空間として、64kバイトのアド
レス空間を利用でき、ベクタやスタックの構造などが前
記上位CPUのミニマムモードと同等の動作になる。
【0188】前記図3のプログラミングモデルを有する
上位のCPU2は、図4の第1の下位互換のCPUの汎
用レジスタ及び命令セットを包含している。すなわち、
上位CPU2が第1の下位CPUと互換を保つ為に、詳
細を後述するように、汎用レジスタの拡張、命令セット
やアドレシングモードの組み合わせの拡張が行われてい
る。
【0189】図5にはCPU2に対する第2の下位互換
のCPUのプログラミングモデルが示される。
【0190】前記図3のプログラミングモデルを有する
上位のCPU2は、図5の第2の下位互換(下位互換を
単に下位とも称する)のCPUの汎用レジスタ及び命令
セットを包含している。すなわち、上位CPU2が第1
の下位CPUと互換を保つ為に、詳細を後述するよう
に、汎用レジスタの拡張、命令セットやアドレシングモ
ードの組み合わせの拡張が行われている。一方、図4の
第1の下位CPUに対しては、図5の第2の下位CPU
は、汎用レジスタ、命令セットを包含したり、包含され
たりしない関係を有する。例えば、図4の第1の下位C
PUに対して、図5の第2の下位CPUは汎用レジスタ
のビット長が大きいし、図5の第2の下位CPUに対し
て、図4の第1の下位CPUは汎用レジスタの本数が大
きい。
【0191】第2の下位互換のCPUは、32ビット長
の汎用レジスタを4本持っている。汎用レジスタは、全
て同機能を持っており、アドレスレジスタとしてもデー
タレジスタとしても使用することができる。
【0192】データレジスタとしてしては32ビット、
16ビットおよび8ビットレジスタとして使用きる。ア
ドレスレジスタおよび32ビットレジスタとしては、一
括して汎用レジスタER(ER0、ER1、ER7、E
R15)として使用する。16ビットレジスタとして
は、汎用レジスタERを分割して汎用レジスタE(E
0、E1、E7、E15)、汎用レジスタR(R0、R
1、R7、R15)として使用する。これらは同等の機
能を持っており、16ビットレジスタを最大8本まで使
用することができる。8ビットレジスタとしては、汎用
レジスタRを分割して汎用レジスタRH(R0H、R1
H、R7H、R15H)、汎用レジスタRL(R0L、
R1L、R7L、R15L)として使用する。これらは
同等の機能を持っており、8ビットレジスタを最大8本
まで使用することができる。各レジスタ独立に使用方法
を選択することができる。
【0193】汎用レジスタER7、ER15には、汎用
レジスタとしての機能に加えて、スタックポインタ(S
P)としての機能が割り当てられており、例外処理やサ
ブルーチン分岐などで暗黙的に使用される。前記同様
に、図示されない制御レジスタなどの設定によって、サ
ブルーチン分岐用のスタックポインタと、例外処理用の
スタックポインタを、独立して選択することができる。
【0194】汎用レジスタのビット長などは、前記上位
CPU2と同等であり、同等のアドレス空間16Mバイ
ト(乃至データ用4Gバイト)を利用できる。第2の下
位CPUはマキシマムモードに相当するモードのみを持
つ。
【0195】なお、プログラム上、ER0、R0、R0
H、R0L、ER1、R1、R1H、R1Lはそれぞ
れ、EAX、AX、AH、AL、EBX、BX、BH、
BLとしても記述できるようにしている。これらは、汎
用レジスタの機能を示すものではなく、本発明とは関係
のない、更に別のCPUの記述に合わせたものである。
このため、前記更に別のCPUでは単独で使用できない
E0、E1は、そのままの記述のみを用いる。この場
合、例えば、“ADD.W E1,BX”と、“AD
D.W E1,R1”は同一の命令コードに対応する。
【0196】図6にはCPUのアドレス空間が示され
る。なお、シングルチップマイクロコンピュータのアド
レスマップとしては、ROMは0番地から、一方、RA
M及び内部I/OレジスタはH’FFFFまたはH’F
FFFFF番地まで、それぞれアドレス空間の両端にな
るように配置されるようにする。
【0197】上位のCPU2は、前記の通り、16MB
のアドレス空間のマキシマムモードと64kBのアドレ
ス空間のミニマムモードを持つ。マキシマムモード/ミ
ニマムモードの選択はモード選択信号MD0〜MD2の
状態によって決定される。
【0198】マキシマムモードでは、絶対アドレス24
ビット(上位に8ビットの予約ビットを付加して、命令
コード中は32ビット)で全空間を、絶対アドレス16
ビットで0〜 H’7FFF及びH’FF8000〜
H’FFFFFFを指定する。
【0199】また、例外処理時のベクタは24ビット
(メモリ上は32ビットとされ、上位8ビットは無視さ
れる)、サブルーチン分岐などにおいて待避/復帰され
るPCも24ビットとされる。
【0200】ミニマムモードでは、絶対アドレスとレジ
スタ間接のアドッレシングモードのいずれも、下位16
ビットのみを使用し、上位ビットは無視する。例外処理
時のベクタは16ビット、サブルーチン分岐などにおい
て待避/復帰されるPCも16ビットとされる。
【0201】第1の下位CPUは、ミニマムモードに相
当する64kBのアドレス空間を持つ。絶対アドレスは
16ビットのみを持ち、また、レジスタ間接では16ビ
ットレジスタで、それぞれ全空間を指定する。例外処理
時のベクタは16ビット、サブルーチン分岐などにおい
て待避/復帰されるPCも16ビットとされる。
【0202】第2の下位CPUは、マキシマムモードに
相当する16MBのアドレス空間を持つ。絶対アドレス
は16ビットのみを持ち、0〜 H’7FFF及びH’
FF8000〜H’FFFFFFを指定する。一方、レ
ジスタ間接では32ビットレジスタで、全空間を指定す
る。絶対アドレスは16ビットでは、RAMと内部I/
Oレジスタを合わせて32kBまで、及びROMを32
kBまで指定できる。内蔵RAMと内部I/Oレジスタ
を合わせて32kBの容量は、バスを拡張しない応用分
野はこのシングルチップマイクロコンピュータでは十分
な容量といえる。また、内蔵RAMと内部I/Oレジス
タを合わせて32kBを超える場合には、それ自体の論
理的・物理的規模が大きくなるから、敢えて論理的規模
の小さい下位CPUを使用する必要性は少なく、上位C
PUを使うのが適当と言える。少なくとも、第2の下位
CPUを使用して、絶対アドレスで指定できないRAM
乃至内部I/Oレジスタを設けて、論理的・物理的規模
の縮小を追求するか、上位CPUを使用して、全ての空
間を絶対アドレスで指定可能にして、使い勝手を追求す
るかを選択することができる。
【0203】絶対アドレス16ビットで指定できるRO
Mのアドレスが限定されてしまうが、ROMに割り当て
る定数などについては、Cコンパイラなどで記述した場
合も、モジュール間最適化で、再配置することができ
る。なお、モジュール間最適化は、各プログラムモジュ
ールをリンクする際に、メモリ配置や関数の呼び出し関
係に依存した最適化を行なうものであり、平成9年8月
(株)日立製作所発行『H8S,H8/300シリーズ
Cコンパイラユーザーズマニュアル』(第4版)などに
記載されている。
【0204】なお、例外処理時のベクタは24ビット
(メモリ上は32ビットとされ、上位8ビットは無視さ
れる)、サブルーチン分岐などにおいて待避/復帰され
るPCも24ビットとされる。
【0205】図7及び図8には実効アドレスの計算方法
として、上位CPU2のマキシマムモードにおける実効
アドレス計算方法が例示されている。
【0206】図7の(1)に示されるレジスタ間接では
命令コード中にレジスタを指定する部分を含み、この命
令コードで指定された汎用レジスタERの内容の合計3
2ビットをアドレスとしてメモリ上のアドレスを指定す
る。アドレスは24ビットでよいため、上位8ビットは
無視する。
【0207】図7の(2)、(3)に示されるディスプ
レースメント付レジスタ間接は、前記レジスタ間接と同
様に得られた32ビットのアドレスに、命令コード中に
含まれるディスプレースメントを加算した結果をアドレ
スとしてメモリ上のアドレスを指定する。加算結果はア
ドレスの指定のみに使用され、汎用レジスタERの内容
には反映されない。特に制限はされないものの、ディス
プレースメントは32ビットまたは16ビットであり、
16ビットディスプレースメントは加算する場合には上
位16ビットは符号拡張される。すなわち、ディスプレ
ースメントの上位16ビットは16ビットディスプレー
スメントのビット15と同じ値であるとして加算が行わ
れる。この場合、32ビットディスプレースメントの上
位8ビットは、予約領域とされ、無視される。
【0208】図7の(4)に示されるポストインクリメ
ントレジスタ間接は、前記レジスタ間接と同様に得られ
た32ビットのアドレスでメモリ上のアドレスを指定す
る。その後、このアドレスに1または2または4を加算
し、その加算結果が汎用レジスタERに格納される。メ
モリ上のバイトデータを指定する場合1が、ワードデー
タを指定する場合2が、アドレスデータを指定する場合
4が、それぞれ加算される。加算結果の上位8ビットも
拡張レジスタに格納される。
【0209】図7の(5)に示されるプリデクリメント
レジスタ間接は、前記レジスタ間接と同様に得られた3
2ビットのアドレスから1または2または4を減算した
結果の24ビットのアドレスでメモリ上のアドレスを指
定する。その後、その減算結果が汎用レジスタERに格
納される。メモリ上のバイトデータを指定する場合1
が、ワードデータを指定する場合2が、アドレスデータ
を指定する場合4が、それぞれ減算される。前記同様
に、アドレスが24ビットでよい場合には、特に制限は
されないものの、減算結果の上位8ビットも拡張レジス
タに格納される。
【0210】図8の(6)、(7)、(8)に示される
絶対アドレスは命令コード中に含まれる、8ビット、1
6ビットまたは24ビットの絶対アドレスをアドレスと
してメモリ上のアドレスを指定する。8ビット絶対アド
レスは、上位16ビットが1拡張される。すなわちアド
レスのビット23〜8は全ビット1とされる。従って使
用可能なアドレスはH’FFFF00〜H’FFFFF
Fの256バイトである。また、16ビット絶対アドレ
スは、上位8ビットが符号拡張される。すなわち、16
ビット絶対アドレスのビット15が0であればアドレス
のビット23〜16は全ビット0とされ、ビット15が
1であればアドレスのビット23〜16は全ビット1と
される。従って使用可能なアドレスはH’000000
〜H’007FFF及びH’FF8000〜H’FFF
FFFの64kバイトである。
【0211】図8の(9)、(10)に示されるプログ
ラムカウンタ相対は、プログラムカウンタの内容の24
ビットのアドレスに命令コード中に含まれるディスプレ
ースメントを加算した結果をアドレスとしてメモリ上の
アドレスを指定する。加算結果はプログラムカウンタに
格納される。特に制限はされないものの、ディスプレー
スメントは16ビットまたは8ビットであり、これらの
ディスプレースメントは加算する場合には上位8ビット
または16ビットは符号拡張される。すなわち、ディス
プレースメントの上位8ビットは16ビットディスプレ
ースメントのビット15と、または上位16ビットは8
ビットディスプレースメントのビット7と同じ値である
とみなして加算が行われる。プログラムカウンタ相対は
分岐命令のみで使用される。
【0212】尚、ミニマムモードでは、実効アドレスの
上位8ビットが無視される。前記の他にイミディエイ
ト、レジスタ直接、メモリ間接などのアドレッシングモ
ードを実行するが、これらは本発明に直接は関係しない
ので詳細な説明は省略する。
【0213】第1の下位CPUのデータ転送命令では、
レジスタ間接、16ビットディスプレースメント付レジ
スタ間接、ポストインクリメント/プリデクリメントレ
ジスタ間接、8/16ビット絶対アドレス、が使用可能
である。実効アドレスの計算方法は上位CPU2と同様
であるが、上位8ビットが無視され、下位16ビットが
有効である。
【0214】第2の下位CPUのデータ転送命令では、
レジスタ間接、16ビットディスプレースメント付レジ
スタ間接、ポストインクリメント/プリデクリメントレ
ジスタ間接、8/16ビット絶対アドレス、が使用可能
である。なお、絶対アドレス24ビットは分岐命令で使
用可能とされる。
【0215】図9には本発明に係るCPU2の機械語の
命令フォーマットが例示されている。前記第1の下位C
PU、第2の下位CPUの命令セットは上位CPU2の
命令セットのサブセットとされる。
【0216】CPU2の命令は、2バイト(ワード)を
単位にしている。各命令はオペレーションフィード(o
p)、レジスタフィールド(r、gr)、EA拡張部
(EA)、およびコンディションフィールド(cc)を
含む。特に制限はされないものの、前記平成7年3月
(株)日立製作所発行『H8S/2600シリーズH8
S/2000シリーズプログラミングマニュアル』記載
のCPUと同じ命令フォーマットとしている。
【0217】オペレーションフィールド(op)は、命
令の機能を表し、アドレッシングモードの指定オペラン
ドの処理内容を指定する。命令の先頭4ビットを必ず含
む。2つのオペレーションフィールドを持つ場合もあ
る。
【0218】レジスタフィールド(r、gr)は汎用レ
ジスタを指定する。レジスタフィールド(r)はアドレ
スレジスタのとき3ビット、データレジスタのとき3ビ
ット(32ビットレジスタ)または4ビット(8または
16ビットレジスタ)である。2つのレジスタフィール
ドを持つ場合、またはレジスタフィールドを持たい場合
もある。
【0219】レジスタフィールド(gr)はグループ0
〜グループ3の何れのレジスタセットを選択するかを指
定する情報を保持することになる。レジスタフィールド
(gr)は4ビット存在するが、図3のレジスタ構成に
従えば、特に制限はされないものの、下位2ビットを有
効にする。レジスタフィールド(gr)を含むワードは
省略可能とされ、省略された場合は、0が与えられたも
のと想定され、グループ0のレジスタセットが指定され
たものと見做され、レジスタフィールド(r)で指定さ
れるレジスタはレジスタ番号が0〜7とされ、汎用レジ
スタER0〜ER7が選択できる。
【0220】例えば、レジスタ番号n=gr[1:0]
<<3+r[2:0]で求められる(<<3は3ビット
左シフトを示す)。即ち、grを上位とし、rの下位3
ビットr[2:0]を下位とした5ビットで指定される
番号のレジスタを指定する。例えば、gr=0、r=1
の場合はレジスタ番号n=1、となり、gr=2、r=
3の場合はレジスタ番号n=19、となる。このレジス
タ番号nに対応する汎用レジスタERnの、命令コード
のサイズを指定する部分や、r[3]の内容によって、
レジスタE、レジスタR、レジスタRH、レジスタRL
が指定される。例えば、データサイズがロングワード、
ワード、バイトの何れであるかは命令コードのオペレー
ションフィールドの所定のビットで指定される。データ
サイズがワード又はバイトのとき、利用するレジスタ位
置はr[3]で指定される。r[3]は、rの下位から
4ビット目のビットデータを意味する。データサイズが
ワードのときr[3]=1のときはレジスタEを指定
し、r[3]=0のときはレジスタRを意味する。デー
タサイズがバイトのときr[3]=1のときはレジスタ
RLを指定し、r[3]=0のときはレジスタRHを意
味する。
【0221】尚、gr1、r1はソースレジスタまたは
アドレスレジスタのレジスタ指定フィールドを意味し、
gr2、r2はデスティネーションレジスタまたはデー
タレジスタのレジスタ指定フィールドを意味する。gr
1(命令コードの基本ワード中のビット7〜4)はr1
(命令コードの基本ワード中のビット7〜4またはビッ
ト6〜4)に、gr2(命令コードの基本ワード中のビ
ット3〜0)はr2(命令コードの基本ワード中のビッ
ト11〜8またはビット3〜0)に対応する。
【0222】EA拡張部(EA)は、イミディエイトデ
ータ、絶対アドレスまたはディスプレースメントを指定
する。8ビット、16ビット、または32ビットであ
る。
【0223】コンディションフィールド(cc)は条件
分岐命令(Bcc命令)の分岐条件を指定する。
【0224】図9にはCPU2の機械語の命令フォーマ
ットを示している。レジスタフィールド(gr)を持つ
前置命令コード(レジスタ拡張用前置命令コード)を省
略すると、既存の命令コードになるようになっている。
レジスタフィールド(gr)をグループ指定フィールド
(gr)とも記す。例えば、図9の(2)に例示される
命令コード“H'0901”を単独で使用する場合、A
DD.W R0,R1となり、図9の(3)に例示され
るように、それに、グループ指定フィールドを持つ前置
命令コード“H'0012”を付加すると、命令コード
“ H'00120901”は、 ADD.W R8,R1
7となる。
【0225】また、暗黙的に使用されるグループ0のレ
ジスタセットを指定する前置命令レコード“H'000
0”は、特に制限されないが、NOP(無操作)命令と
されている。 命令コード“H'00xx”(xxは01
〜FF)は、レジスタセットのグループを指定し、連続
する次の命令コードを実行する(割込みを禁止する)他
は、NOP命令と同様に、PCのインクリメントを行
い、最小のステート数で実行される。
【0226】グループ指定フィールド(gr)は、4ビ
ットあるので、論理的には汎用レジスタグループを16
に拡張することができる。この場合では32ビット汎用
レジスタ128本(または16ビット汎用レジスタ25
6本)を利用できる。
【0227】グループ指定フィールド(gr)に対応す
るオペレーションフィールドは複数種類あってもよい。
例えば、単純にレジスタ指定のみを行うものと、そのほ
かの機能(データサイズなど)を切り換える機能とを併
せ持つオペレーションコードとを用意しもよい。
【0228】上位CPU2の命令コードのサブセット
を、前記第1の下位CPU、第2の下位CPUは持つ。
具体的には、前記第1の下位CPUは、レジスタ指定フ
ィールド(gr)を持たない。前記第2の下位CPU
は、スタックポインタER15を指定するときのみ、レ
ジスタ指定フィールド(gr)を使用する。
【0229】図10にはCPU2のメモリに対する転送
命令の詳細な命令フォーマットを例示する。
【0230】ここでは、レジスタ間接、ポストインクリ
メント/プリデクリメントレジスタ間接、16ビットデ
ィスプレースメント付きレジスタ間接、16ビット絶対
アドレスについて示す。このほかのアドレッシングモー
ドも持つが、詳細な説明は省略する。
【0231】レジスタ間接(@ERn)は、命令コード
のレジスタフィールド(r)で指定されるアドレスレジ
スタ(ERn)の内容をアドスとしてメモリ上のオペラ
ンドを指定する。
【0232】ディスプレースメント付きレジスタ間接
(@(d:16,ERn))は、命令コードのレジスタ
フィールド(r)で指定されるアドレスレジスタ(ER
n)の内容に命令コード中に含まれる16ビットディス
プレースメント(d)を加算した内容をアドレスとして
メモリ上のオペランドを指定する。加算に際して、16
ビットディスプレースメントは符号拡張される。
【0233】ポストインクリメントレジスタ間接(@E
Rn+)は、命令コードのレジスタフィールドで指定さ
れるアドレスレジスタ(ERn)の内容をアドスとして
メモリ上のオペランドを指定する。その後、アドレスレ
ジスタの内容に1、2または4が加算され、加算結果が
アドレスレジスタに格納される。バイサイズでは1、ワ
ードサイズでは2、ロングワードサイズでは4がそれぞ
れ加算される。
【0234】プリデクリメントレジスタ間接(@−ER
n)は、命令コードのレジスタフィールドで指定される
アドレスレジスタ(ERn)の内容から1,2又は4を
減算した内容をアドレスとしてメモリ上のオペランドを
指定する。その後、減算結果がアドレスレジスタに格納
される。バイトサイズでは1、ワーサイズでは2、ロン
グワードサイズでは4がそれぞれ減算される。
【0235】絶対アドレス(@aa:16)は、命令コ
ード中に含まれる絶対アドレス(aa)で、メモリ上の
オペランドを指定する。特に制限はされないものの、1
6ビット絶対アドレスの場合、上位16ビットは符号拡
張される。この場合ビット8〜10がアドレッシングモ
ードを指定するフィールドになっている。
【0236】図11乃至図14には上位CPU2による
メモリに対する直接的な演算命令の命令フォーマットに
おける命令コードの組合せが例示される。メモリに対す
る直接的な演算命令とは、既存の命令セットに対して拡
張された演算命令である。同図に示される命令フォーマ
ットは、命令拡張用前置命令コードを先頭に、転送命令
のコード、演算命令のコード等が付加された、1命令と
して処理されるべき命令のフォーマットである。尚、図
示はしないが、第1の下位CPU、第2の下位CPUは
上位CPU2の命令セットのサブセットの命令セットを
有する。
【0237】前記メモリに対する直接的な演算命令は、
制御コード(命令拡張用前置命令コード)、EA1コー
ド、EA2コード、及び演算コードの組合せによって構
成される。
【0238】EA1、EA2は、図10に示される各ア
ドレッシングモードの転送命令の命令コードと同一にさ
れる。転送方向はリード方向、使用しないレジスタフィ
ールド(r2)は、特に制限はされないが、0とする。
【0239】演算コードは、汎用レジスタ間の演算命令
の命令コードと同一にされる。EA1コード、EA2コ
ード、演算コードの組合せは意味があるものについては
任意にできる。即ち、所望の処理の内容に従って、EA
1コード、EA2コード、演算コードの必要なものを組
合せる。
【0240】例えば、インクリメント処理などは、デス
ティネーション側データだけしか必要としないから、ソ
ース側データをリードするためのEA1コードは不要で
ある。したがって、インクリメント処理のフォーマット
は、前置命令コード、EA2コード、演算コードを組合
せて構成される。
【0241】加算処理などは、ソース側、デスティネー
ション側の、メモリを使用する方のEA1,EA2を組
合せればよい。ソース側のみをメモリ上のデータとする
場合(例えば、ADD.W @ER1,R0)は、命令
拡張用前置命令コード、EA1コード(MOV.W @
ER1,Rxと同一。Rxは意味を持たないが、前記の
通りR0とする)、演算コード(ADD.W Rx,R
0と同一)を組合せる。デスティネーション側のみをメ
モリ上のデータとする場合は(ADD.W R1,@E
R0)、命令拡張用前置命令コード、EA2コード、演
算コードを組合せる。ソース側、デスティネーション側
の両方をメモリ上のデータとする場合(ADD.W @
ER1,@ER0)は、図11に例示されるように、命
令拡張用前置命令コード、EA1、EA2コード、演算
コードを組合せる。なお、ソース側、デスティネーショ
ン側の両方を汎用レジスタ上のデータとする場合(AD
D.W R1,R0)は、既存の命令であり、演算コー
ドのみでよい。換言すれば、前置命令コードは不要であ
る。
【0242】イミディエイトデータとメモリ上のデータ
との演算(例えば、ADD.W #xx,@ER1)
も、同様であるが、イミディエイトデータはソース側と
されるから、図13に例示されるようにEA1コードは
必要なく、また、演算コードとして、レジスタ間演算の
代わりに、イミディエイト・レジスタ間の演算コード
(ADD.W #xx,Rxと同一)を用いる。
【0243】メモリ間の転送命令(例えば、MOV.W
@ER1,@aa:16)は、前記メモリ間の演算同
様に、命令拡張用前置命令コード、EA1コード、EA
2コード、及びレジスタ間の転送命令コードを組合せて
もよいが、この例では、図12に例示されるように命令
拡張用前置命令コード、EA1コード(MOV.W@E
R1,Rxと同一)、EA2コード(MOV.W R
x,@aa:16と同一)を組合せる。演算コードは不
要とし、EA1コードの転送方向はリード方向、EA2
コードの転送方向はライト方向とする。これによって、
命令コード長を短縮(演算コード分)し、実行ステート
数(演算コードのリード、デスティネーション側データ
のリード)も短縮できる。
【0244】イミディエイトデータのメモリへの転送
(例えば、 MOV.W #xx,@ER1)は、前記イ
ミディエイトデータとメモリ上のデータとの演算同様
に、命令拡張用前置命令コード、EA2コード、演算コ
ードを組合せてもよいが、ここでの例では、図14に例
示されるように命令拡張用前置命令コード、イミディエ
イト・レジスタ間の転送命令コード(MOV.W #x
x,Rxと同一)、EA2コード(MOV.W Rx,
@aa:16と同一)を組合せる。これによって、実行
ステート数(デスティネーション側データのリード)も
短縮できる。
【0245】図15には命令拡張用前置命令コード(制
御コード)のフォーマットが例示される。同図に示され
る命令拡張用前置命令コードはソース側、デスティネー
ション側がメモリであるか否かを夫々示す為のビットを
有している。対応ビットが例えば論理値“1”であれば
メモリ、論理値“0”であれば汎用レジスタを指定する
ものとする。EA1とEA2の転送命令コードは同一と
しているため、ソース側がメモリであれば、デスティネ
ーション側に拘らず、命令拡張用前置命令コードに続く
ものが、EA1コードと判断される。一方、ソース側が
汎用レジスタとされ、デスティネーション側がメモリで
あれば、EA2コードと判断される。そのほか、ロング
ワードサイズを示す情報を持っている。
【0246】また、EA1、EA2の転送命令コードの
動作を変更させる情報を持っている。例えば、ポストイ
ンクリメント/プリデクリメントレジスタ間接が、メモ
リのリード/ライトの方向によって一義的に指定されて
しまう場合、即ち、ポストインクリメントはライト時、
プリデクリメントはリード時などと固定されている命令
セットの場合、前記変更情報によって、リード時にポス
トインクリメント動作を行なったり、ライト時にプリデ
クリメントを行なったりすることを可能にしている。
【0247】図16及び図17にはCPUのアドレッシ
ングモードの組合せについて示される。図16はデータ
転送命令について示し、図17は加算命令について示
す。加算以外の演算命令も、加算命令と同様にされる。
【0248】図16及び図17の“ソース”の各欄にお
ける上段、中段、下段には、それぞれ、上位CPU2、
第1の下位CPU、第2の下位CPUの、それぞれ、実
行可能なデータサイズが示されている。Bはバイト(8
ビット)、Wはワード(16ビット)、Lはロングワード
(32ビット)を意味する。
【0249】アドレッシングモードには図16及び図1
7に示された他に、分岐命令のみに使用する、プログラ
ムカウンタ相対や、メモリ間接のアドレッシングモード
もあるが、ここでは図示を省略している。
【0250】上位のCPU2は、データ転送命令、加算
命令ともに、ソース/デスティネーションとデータサイ
ズのアドレッシングモードの組合せを任意にできる。但
し、8ビット絶対アドレスについては、短縮形としての
特性上、また、16ビット単位の命令コードの特性上、
バイトサイズのみが実行可能である。
【0251】第1の下位CPUは、アドレッシングモー
ドは、アドレス空間64kBであることに対応して限定
され、32ビットディスプレースメント付レジスタ間
接、32ビット絶対アドレスは実行できない。データサ
イズは、バイト及びワードである。データ転送命令は、
ソース側またはデスティネーション側の一方が、レジス
タ直接の場合のみ実行可能である。また、加算命令は、
ソース側はイミディエイトまたは汎用レジスタ、デステ
ィネーション側は汎用レジスタに限定されている。即
ち、メモリのリード/ライトはデータ転送命令で行い、
データの処理は汎用レジスタ上で行なう、いわゆるロー
ドストア型の命令セットを持つ。
【0252】第2の下位CPUは、アドレス空間16M
Bであるものの、プログラムの大容量化に対応すること
を主目的とし、大規模データの高速処理などが必要とさ
れないような応用分野を考え、アドレッシングモードに
ついては、32ビットディスプレースメント付レジスタ
間接、32ビット絶対アドレスは実行できない。データ
サイズは、メモリ上のデータを指定する場合、バイト及
びワードである。ソース側がイミディエイトまたは汎用
レジスタ、デスティネーション側が汎用レジスタの場合
に限り、ロングワードも可能である。
【0253】第2の下位CPUにおいては、汎用レジス
タの本数は少ないものの、データ転送命令、加算命令と
もに、ソース/デスティネーションのアドレッシングモ
ードの組合せを任意にできる。汎用レジスタとメモリ間
の転送命令のデータサイズは、マイクロコンピュータの
機能ブロックのデータサイズが8ビット乃至16ビット
長であったり、内部データバスが16ビットであった
り、またシングルチップマイクロコンピュータの応用さ
れるマイクロコンピュータシステムに必要な分解能など
の特性上、16ビット(ワード)または8ビット(バイ
ト)でよい応用分野を考え、32ビット(ロングワー
ド)は持たない。当然、32ビット(ロングワード)の
データについては、16ビット(ワード)のデータ転送
を2回行なうことによって、実現できる。
【0254】一方、第2の下位CPUでは、汎用レジス
タが32ビット構成であり、CPUの内部構成が32ビ
ットであるため、メモリ上のデータのリード/ライトを
行なう必要のない、イミディエイト及びレジスタ直接に
ついては、32ビット(ロングワード)も実行可能とし
ている。
【0255】以上の、上位CPU、第1の下位CPU
2、第2の下位CPUは、例えば以下の通り、応用分野
やマイクロコンピュータシステムの要求に合わせて選択
できる。
【0256】シングルチップマイクロコンピュータに内
蔵されている機能モジュール、即ち、ROM、RAM、
タイマA、タイマB、SCI、A/D変換器、入出力ポ
ートのみを使用して動作するようなマイクロコンピュー
タシステムについては、プログラム容量が60kB程度
(RAM、内部I/Oレジスタを合わせて64kB)以
下であれば、第1の下位CPUを内蔵するのが都合がよ
い。
【0257】また、プログラム容量がログラム容量が6
0kB程度(RAM、内部I/Oレジスタを合わせて6
4kB)以上であれば、第2の下位CPUを内蔵するの
が都合がよい。データとして扱うのは、RAM、内部I
/Oレジスタ、及び一部のROMであり、アドレス空間
の一部(H’8000〜H’FF7FFF)に、データ
転送/演算命令でのアクセスに制約があっても、この部
分はROM及び未使用の領域とされるから、問題ない。
むしろ、CPUの不必要な機能を削除して、論理的規模
を縮小し、費用を縮小する方が望ましい。
【0258】かかるシングルチップマイクロコンピュー
タに内蔵されている機能モジュールのみを使用して動作
するようなマイクロコンピュータシステムとしては、カ
メラなどがあり、例えば、平成6年11月写真工業社発
行『写真工業』pp58〜71に記載がある。なお、プ
ログラム容量が大きいことは、そのマイクロコンピュー
タシステムの機能が高いことを示すと言える。
【0259】或いは、シングルチップマイクロコンピュ
ータに内蔵されている機能モジュールに加えて、比較的
少ないアドレスを有する専用半導体集積回路などを、シ
ングルチップマイクロコンピュータの外部バスに接続し
て動作するようなマイクロコンピュータシステムも同様
であり、この例としては、光ディスクドライブなどがあ
り、例えば、平成8年2月日立マイコンシステム社発行
『日立マイコン技報』pp38〜39に記載がある。
【0260】一方、シングルチップマイクロコンピュー
タに内蔵されている機能モジュール、即ち、ROM、R
AM、タイマA、タイマB、SCI、A/D変換器、入
出力ポート以外に、プログラム格納用のROMや、デー
タ格納用のDRAM、キャラクタジェネレートROM
(CGROM)や、入出力回路や制御回路などを接続し
て動作するような場合は、大規模なデータを扱うことに
なり、例えば配列の処理なども考えられるので、全アド
レス空間を制限なく使用可能な上位CPU2を内蔵する
のが都合がよい。また、外部のメモリなどを効率的に利
用するための高機能のバスコントローラや、高速のデー
タ転送を行なうためのDMAコントローラなども必要と
されるから、相対的に論理的規模の大きい上位CPU2
を使用しても、全体的な論理的規模に対する影響が小さ
いと考えられる。かかるマイクロコンピュータシステム
としては、プリンタなどがある。
【0261】図1には上位CPU2の詳細な一例が示さ
れる。このCPU2は制御部CONTと実行部EXEC
から構成される。IDB、IABは前記内部バス30に
含まれる内部データバス、内部アドレスバスである。
【0262】制御部CONTは、命令レジスタIR1、
命令レジスタIR2、命令変更部CHG、命令デコーダ
DEC、レジスタセレクタRSEL、割込み制御部IN
TCを有する。特に制御部CONTは、命令拡張用前置
命令コードの有無に応じた第1の制御、レジスタ拡張用
前置命令コードの有無に応じた第2の制御を行なうよう
になっている。第1の制御は、メモリデータの直接的演
算処理制御であり、命令拡張用前置命令コードに後続す
るデータ転送命令等の複数の命令コードを1個の命令と
して処理することにより、メモリ上のデータを直接的に
演算可能とする制御を行なう。第2の制御は、上位互換
を考慮したレジスタ指定制御であり、一方では拡張され
た汎用レジスタをレジスタ拡張用前置命令コードを用い
て指定するようにし、他方では、省略可能なレジスタ指
定フィールドgr(gr1、gr2)が省略されたとき
省略不可能なレジスタ指定フィールドr(r1、r2)
によるレジスタ指定を暗黙的にレジスタグループ0に含
まれるレジスタ指定とみなす制御を行なう。
【0263】前記命令デコーダDECは、例えば、マイ
クロROM或はPLA(Programmable L
ogic Array)または布線論理で構成される。
命令デコーダDECの出力の一部が命令デコーダDEC
にフィードバックされている。そのようなフィードバッ
ク信号は、各命令コード内の遷移に用いるステージコー
ド(TMG)と、命令コード間に用いる制御信号(MO
DS、MODD)を含む。命令デコーダにおける前記第
1の制御の全体的な機能を概説すれば、命令拡張用前置
命令コードは制御信号(MODS、MODD)を発生
し、EA1コード、EA2コードは、前記制御信号を参
照しつつ動作し、更に制御信号を発生したりする。演算
コードも制御信号を参照して、データの入出力元/先を
切替え、演算処理を行なう。制御信号に従って内部で命
令コードも発生する。
【0264】命令デコーダDECのそのような第1の制
御機能を更に詳述する。図1には命令デコーダDECの
一部の機能を概念的に示しており、命令拡張用前記前置
命令コード(pf)の解読論理200は、制御信号(m
od: MODS、MODDを含む)、割込みマスク信
号(mskint)を出力する。そのほかは、NOP
(無操作)命令などと同じでよく、実質的な動作を何も
行なわない。要するに、制御信号modは、後続の命令
コードが命令拡張用前置命令コードに付加された命令コ
ードであることを明示する信号として位置付けられる。
【0265】転送命令コード(mov)の解読論理20
1は、ステートコード信号(nxttmg)、割込みマ
スク信号(mskint)、汎用レジスタライト信号
(Rdwr)、テンポラリレジスタライト信号(TRD
wr)を出力する。これらの信号の状態は、前記制御信
号(mod:MODS、MODD)によって相違され
る。例えば、MODS=1のときはテンポラリレジスタ
ライト信号(TRDwr)が、 MODS=0のときは
汎用レジスタライト信号(Rdwr)が、それぞれ選択
される。そのほかの動作は、メモリ・汎用レジスタ間の
転送命令の場合と同様とされる。
【0266】演算命令コード(exe)の解読論理20
2は、割込みマスク信号(mskint)、ソース汎用
レジスタリード信号(Rsrd)、デスティネーション
汎用レジスタリード信号(Rdrd)、デスティネーシ
ョン汎用レジスタライト信号(Rdwr)、リードデー
タバッファリード信号(RDBrd)、テンポラリレジ
スタリード信号(TRDrd)、テンポラリレジスタラ
イト信号(TRDwr)を出力する。信号Rsrdはソ
ースレジスタとして汎用レジスタをリード、Rdrdは
ディスティネーションレジスタとして汎用レジスタをリ
ード、Rdwrはディスティネーションレジスタとして
汎用レジスタをライト、することを指示する。信号RD
Brdは実行部EXECの後述するリードデータバッフ
ァをリード、信号TRDrdは後述する実行部EXEC
のテンポラリレジスタをリード、信号TRDwrは後述
する実行部EXECの後述するテンポラリレジスタをラ
イト、することを指示する。それらの信号の状態は、前
記制御信号(mod:MODS、MODD)によって相
違される。即ち、ソース汎用レジスタリード信号(Rs
rd)とテンポラリレジスタリード信号(TRDr
d)、デスティネーション汎用レジスタリード信号(R
drd)とリードデータバッファリード信号(RDBr
d)、デスティネーション汎用レジスタライト信号(R
dwr)とテンポラリレジスタライト信号(TRDw
r)、がそれぞれ排他的に選択され、汎用レジスタを使
用するかテンポラリレジスタ等のラッチ手段を使用する
かを選択する。また、デスティネーション側メモリの場
合は、CPU内部でライト型転送命令を実行するのと同
等の動作を行なうための命令コードを発生させる信号
(mkmov)を出力する。そのほかの動作は、汎用レ
ジスタに対する演算命令と同様にされる。
【0267】命令レジスタIR1、IR2は、リードし
た命令を一旦格納する。命令デコーダDECには命令レ
ジスタIR1に格納された命令コードが供給されること
になる。命令変更部CHGは、リードした命令以外の命
令コードを、命令デコーダDECに与える場合に動作
し、そのほかの場合は、命令レジスタIR1の内容を命
令デコーダDECに与える。リードした命令以外の命令
コードは、割込み制御部INTCの指示によって、割込
みなどの例外処理を実行するとき、或いは、命令デコー
ダDECのからの制御信号mkmovによる指示によっ
て前記内部でライト型転送命令と同等の動作を行なう命
令コードを発生させるとき、などに用いる。即ち、デス
ティネーション側をメモリ上のデータとする場合に、E
A2コードで生成したアドレスでメモリライト動作を行
なう為の命令コードをCPU内部で自動生成して、命令
デコーダDECに供給することによって、本発明の命令
の命令コード長を短縮し、実行ステート数も短縮でき
る。
【0268】割込み制御部INTCは、図2の割込みコ
ントローラ(INT)3の出力する割込み要求信号31
を受け付ける。また、命令デコーダDECの出力する割
込みマスク信号mskintを参照して、割込みがマス
クされていなければ、命令変更部CHGに割込みを指示
する。この場合、命令変更部CHGは、割り込み例外処
理の為の所定の命令コードをそのハードウェアに従って
生成する。
【0269】図11乃至図14で説明したように、複数
の命令コードを一連のものとして実行する場合には、そ
れぞれの命令コードが割込みマスクを制御信号mski
ntを介して指示して、所定の組合せの命令コードの実
行が途切れないようにされる。
【0270】レジスタセレクタRSELは、命令デコー
ダDECからの信号Rsrd,Rdrd,Rdwr等に
よる指示、命令コード中に含まれるレジスタフィールド
r1、r2、gr1、gr2の情報に基づいて、汎用レ
ジスタを選択する。
【0271】実行部EXECには、汎用レジスタER0
〜ER7、プログラムカウンタPC、コンディションコ
ードレジスタCCR、テンポラリレジスタTRA、TR
D、算術論理演算器ALU、インクリメンタINC、リ
ードデータバッファRDB、ライトデータバッファWD
B、アドレスバッファABを含む。これらのブロックは
内部バスGB、DB、WBによって相互に接続されてい
る。
【0272】前記実行部EXECに含まれる前記レジス
タの内、図3にも示される汎用レジスタER0〜ER3
1、プログラムカウンタPC、コンディションコードレ
ジスタCCR以外は、プログラミング上は参照できず、
CPU2の内部の動作にのみ用いられる。即ち、リード
データバッファRDB、ライトデータバッファWDB、
アドレスバッファABなどは、内部バスIAB、IDB
とのインタフェースをとるために、一時的にデータをラ
ッチする。テンポラリレジスタTRA、TRDは、マイ
クロコンピュータ内部の動作に適宜用いられ、例えば演
算の途中結果などを一時的に貯える。
【0273】リードデータバッファRDBは、ROM
4、RAM5、内部I/Oレジスタ、或は図示はされな
い外部メモリから、リードした命令コードやデータを一
時的に格納する。ライトデータバッファWDBはROM
4、RAM5、内部I/Oレジスタ、或は外部メモリへ
のライトデータを一時的に格納する。
【0274】アドレスバッファABは、CPU2がリー
ド/ライトするアドレスを一時的に格納する他に、格納
した内容に対するインクリメント機能を有している。イ
ンクリメント機能を有するアドレスバッファは特開平4
−333153号公報などに記載されている。
【0275】前記算術論理演算器ALUは、命令によっ
て指定される各種の演算や実効アドレスの計算などに用
いられる。前記インクリメンタINCは、主にプログラ
ムカウンタPCの加算に用いられる。また、尚、図1で
は実行部EXECは汎用レジスタER0〜ER31を単
位として算術論理演算器ALUやインクリメンタINC
が設けられていように図示されているが、実際は、汎用
レジスタのE(16ビット)、H(8ビット)、L(8
ビット)の各分割部分毎に分割されて設けられている。
【0276】前記命令拡張用前置命令コードに後続する
命令コードを用いてメモリ上のデータを直接的に演算す
る場合には、テンポラリレジスタTRA、TRD及びリ
ードデータバッファRDBなどを用いる。テンポラリレ
ジスタTRAは、デスティネーション側データがメモリ
になる演算命令の場合に、デスティネーションアドレス
のリード時にリードアドレス(実効アドレス)を格納
し、データのデスティネーション側メモリへのライト時
に、デスティネーションアドレス(リードアドレスと同
じアドレス)を出力する。
【0277】テンポラリレジスタTRDは、ソース側デ
ータがメモリになる演算命令の場合などに、ソース側デ
ータを一時格納し、演算命令コードの実行時にソース側
データを出力する。また、デスティネーション側データ
がメモリになる演算命令の場合に、演算結果を一時格納
し、データのデスティネーション側メモリへのライト時
に、ライトデータを出力する。
【0278】リードデータバッファRDBは、更に、デ
スティネーション側データがメモリになる演算命令の場
合に、デスティネーション側データを一時格納し、演算
コードの実行時にソース側データを出力する。
【0279】前記レジスタTRA、TRD、RDB等は
既存の命令実行においても適宜利用されるが、その詳細
な内容は本発明とは直接関係ないので説明を省略する。
【0280】CPU2は前記第2の制御を実現するため
に、前述のように2個の命令レジスタIR1,IR2を
有している。レジスタセレクタRSELには、前記命令
デコーダDECの出力信号、命令レジスタIR1,IR
2の出力信号、そして前記SYSC21に含まれる内部
I/Oレジスタ(CPUCR)22の出力信号が供給さ
れる。
【0281】前記命令レジスタIR1は内部データバス
IDBから命令が供給される。前記命令レジスタIR1
の出力は、もう一つの命令レジスタIR2に、前記命令
変更部CHGを介して命令デコーダDECに、そして、
前記レジスタセレクタRSELに結合される。前記命令
レジスタIR2の出力は前記レジスタセレクタRSEL
に結合される。前記命令デコーダDECの出力はレジス
タセレクタRSEL及び前記命令レジスタIR2に結合
される。命令デコーダDECは命令レジスタIR1にフ
ェッチされた命令のオペレーションフィールドのオペレ
ーションコードを解読する。命令レジスタIR1にフェ
ッチされた命令コードが前記レジスタ拡張用前置命令コ
ードであるとき、命令デコーダDECがこれを解読する
ことによって、当該レジスタ拡張用前置命令のレジスタ
グループ指定フィールド(gr)のレジスタ指定情報を
命令レジスタIR2にラッチさせる。その時のラッチ信
号は命令デコーダDECから出力される。命令レジスタ
IR2にラッチされたレジスタフィールド指定情報、及
び続けて命令レジスタIR1にフェッチされた後続の命
令に含まれるレジスタフィールド(r)のレジスタ指定
情報は、レジスタセレクタRSELで解読され、それら
情報で直接的に指定されたレジスタグループの中のレジ
スタが選択され、選択されたレジスタを利用して当該後
続の命令が実行される。この命令実行後、前記命令デコ
ーダDECは前記命令レジスタIR2のラッチ情報を全
ビット値“0”(レジスタグループ0の指定情報)にク
リアするためのセット信号を命令レジスタIR2に供給
する。したがって、その後に、レジスタ拡張用前置命令
コードを省いた命令が命令レジスタIR1にフェッチさ
れても、命令レジスタIR2の出力はレジスタグループ
0の指定情報を維持する結果、レジスタセレクタRSE
Lは暗黙的にレジスタグループ0が指定されていると見
做して、命令レジスタ31からのレジスタ指定情報に従
ったレジスタをレジスタグループ0から選択する。
【0282】前記第2の下位CPUは、図1の構成か
ら、その命令セットに必要のない機能ブロックや論理回
路を削除して開発することができる。汎用レジスタはE
R0、ER1、ER7、ER15のみとし、レジスタセ
レクタRSELも、これに対応して削除することができ
る。アドレスバッファのインクリメント機能も、メモリ
に対するロングワードサイズのデータ転送命令を削除し
たことに対応して、削除できる。
【0283】命令デコーダDECも、32ビットディス
プレースメント付レジスタ間接、32ビット絶対アドレ
ス、メモリ間接などを削除して、これに必要な論理回路
を削除できる。かかるアドレッシングモードによる命令
は、長い命令コードを持ち、必然的に、実行ステート数
も大きくなるし、また、ロングワードサイズのデータ転
送命令なども、内部データバスが16ビットであること
に対応して、2回のワードサイズデータ転送を行なうこ
とになどして、制御論理も複雑になりやすいから、これ
らのアドレッシングモードやロングワードサイズデータ
転送命令を削除できれば、論理的規模の縮小を図ること
ができる。
【0284】論理回路の削除に当たっては、汎用レジス
タなどの、不必要な機能ブロックを削除し、削除された
機能ブロックが出力している信号は非活性のレベルに固
定し、また、削除されたブロックが入力している信号
は、非接続または解放とすればよい。残りの論理回路
は、前記の通り、非活性レベルへの固定や、非接続また
は解放とした状態で、論理再合成を行なえば、自動的に
論理的規模の縮小を実現できる。どのような方法を採る
にしても、上位CPUのサブセットとすることにより、
新規の開発を行なうより、開発効率を向上できる。
【0285】図18には前記レジスタセレクタRSEL
の一部と命令レジスタIR2の詳細なブロック図が示さ
れる。
【0286】命令レジスタIR2は、保持手段としての
ラッチ回路(LGR1)321及びラッチ回路(LGR
2)322を有する。これらラッチ回路(LGR1、L
GR2)321,322は、前述の通りレジスタグルー
プ指定フィールドgr1、gr2のレジスタグループ指
定情報をラッチする。
【0287】図18に従えば、前記ラッチ回路321,
322は、いわゆるリセット付きD型フリップフロップ
によって構成されている。リセット信号RSLGRとし
て、命令デコーダDECから指定される命令実行終了信
号RSLGRを入力する。ラッチクロックとして、命令
デコーダDECから指定されるLGRCLを入力し、ま
た、データとして、命令レジスタIR1が保持する命令
コードのビット7〜4、3〜0(グループ4個の場合
は、ビット5、4、1、0のみでもよい)を入力する。
ラッチクロックLGRCLは、レジスタグループを指定
する命令コード(省略可能なレジスタ拡張用前置命令コ
ード)を実行したときに活性状態になって、そのときの
レジスタフィールド(gr)である、ビット7〜4、3
〜0をラッチさせる。ラッチ回路321,322は、命
令の実行終了時点で、命令デコーダDECからの制御信
号(リセット信号RSLGR)に基づいて、所定の値に
設定される。本実施例では、全ビット値“0”にクリア
される。
【0288】汎用レジスタグループを指定するレジスタ
拡張用前置命令コードを持たない命令は、ラッチ回路
(LGR1、LGR2)321、322が値“0”にク
リアされたままになっているから、命令実行が行われる
とき、レジスタグループ0の汎用レジスタが指定される
ことになる。
【0289】レジスタセレクタRSELのデスティネー
ションレジスタ指定側には、ラッチ回路(LGR2)3
22から出力されるでレジスタグループ指定フィールド
(gr2)の情報を保持するラッチ回路331と、命令
レジスタIR1から出力されるレジスタ指定フィールド
(r2)の情報をラッチするラッチ回路332が設けら
れている。それらラッチ回路331,332は、システ
ムクロックφの反転クロックφ#でラッチされるように
なっており、ソースレジスタの選択動作より遅くデステ
ィネーションレジスタの選択動作が行なわれる。これに
よって、デスティネーション側のレジスタ指定情報のラ
ッチタイミング即ちデスティネーションレジスタ選択タ
イミングがソースレジスタ選択タイミングよりも0.5
ステート遅くなるようにされる。ソースレジスタはアド
レスレジスタとして先行して選択され、デスティネーシ
ョンレジスタはデータの書込みのために遅れて選択され
ることが可能になっている。
【0290】図19及び図20には汎用レジスタER8
に相当するレジスタセレクタRSELの論理記述の一部
が例示されている。図20の記述は図19の後に続く残
りの論理記述である。
【0291】図19及び図20に示された論理記述は、
RTL(Register Transfer Level)若しくはHDL(H
ardware Description Language)記述と呼ばれ、公知の
論理合成ツールによって、論理回路に論理展開できる。
HDLはIEEE1364として標準化されている。こ
れに示される論理記述の構文は、ケース(case)文
に準拠しており、always@の次の()内で定義さ
れた値若しくは信号に変化が有ったとき、それ以下の記
述行の処理を行う、という記述内容になっている。尚、
記号「!」は論理的な和を示し、「&」は論理的な積を
示す。「3’b001」は3ビット長の001を意味す
る。
【0292】前記論理記述は、always@(gr
1,r1,gr2,r2)beginで始るレジスタ選
択記述部分、always@(rs8 or rsgb
or rsdb or wbrs or rd8 or rd
gb or rddb or wbrd)beginで始る
バス選択記述部分、always@(wbr8 or r
2[3] or byte or word or lon
g)beginで始るレジスタサイズ指定記述部分に大
別される。
【0293】前記レジスタ選択記述部分では、レジスタ
フィールドr[2:0]=0、レジスタフィールドgr
[1:0]=1のとき、汎用レジスタER8を選択する
記述となっている。
【0294】即ち、ソースレジスタのグループフィール
ドがgr1=1(gr1=4'b0001)でソースレ
ジスタのレジスタフィールドがr1=0(r1=3'b
000)のときレジスタER8をソースレジスタとして
選択するための信号rs8が活性化される(rs8=
1)。そうでなければ、信号rs8は非活性状態を維持
する(rs8=0)。
【0295】また、デスティネーションレジスタのグル
ープフィールドがgr2=1(gr2=4'b000
1)でデスティネーションレジスタのレジスタフィール
ドがr2=0(r2=3'b000)のときレジスタE
R8をデスティネーションレジスタとして選択するため
の信号rd8が活性化される(rd8=1)。そうでな
ければ、信号rd8は非活性状態を維持する(rd8=
0)。
【0296】前記バス選択記述部分のalways文に
おけるrsgbはソースレジスタの内容をバスGBに出
力することを指示する信号、rsdbはソースレジスタ
の内容をバスDBに出力することを指示する信号、wb
rsはバスWBの内容をソースレジスタに出力すること
を指示する信号、rdgbはデスティネーションレジス
タの内容をバスGBに出力することを指示する信号、r
ddbはデスティネーションレジスタの内容をバスDB
に出力することを指示する信号、wbrdはバスWBの
内容をデスティネーションレジスタに出力することを指
示する信号である。
【0297】命令デコーダ(DEC)33によって、ソ
ースレジスタを指示するレジスタ指定フィールド(gr
1、r1)のレジスタの内容を内部バスGBへ出力する
ことが指示された(rsgb=1)ときに信号rs8が
活性化されている場合、又は、デスティネーションレジ
スタを指示するレジスタ指定フィールド(gr2、r
2)のレジスタの内容を内部バスGBへ出力することが
指示された(rdgb=1)ときに信号rd8が活性化
されている場合、汎用レジスタER8から内部バスGB
へのデータ出力を指示する信号r8gbが活性化される
(r8gb=1)。
【0298】同様に、命令デコーダDECによって、ソ
ースレジスタを指示するレジスタ指定フィールド(gr
1、r1))のレジスタの内容を内部バスDBへ出力す
ることが指示された(rsdb=1)ときに信号rs8
が活性化されている場合、又は、デスティネーションレ
ジスタを指示するレジスタ指定フィールド(gr2、r
2)のレジスタの内容を内部バスDBへ出力することが
指示された(rddb=1)ときに信号rd8が活性化
されている場合、汎用レジスタER8から内部バスDB
への出力を指示する信号r8dbが活性化される(r8
db=1)。
【0299】更に、命令デコーダDECによって、ソー
スレジスタを指示するレジスタ指定フィールド(gr
1、r1)のレジスタへ内部バスWBからデータを入力
させることが指示された(wbrs=1)ときに信号r
s8が活性化されている場合、又は、デスティネーショ
ンレジスタを指示するレジスタ指定フィールド(gr
2、r2)のレジスタへ内部バスWBからデータを入力
させることが指示された(wbrd=1)ときに信号r
d8が活性化されている場合、汎用レジスタER8へ内
部バスWBからの入力を指示する信号wbr8が活性化
される(wbr8=1)。
【0300】前記レジスタサイズ選択の論理記述部分の
always文において、r2[3]はレジスタフィー
ルドr2の下位から4ビット目の値を意味する。
【0301】汎用レジスタER8へ内部バスWBからデ
ータの入力が指示された場合、データサイズがロングワ
ードサイズ(long=1)であれば、汎用レジスタE
Rとして32ビットで書込まれる(wb8e=wb8h
=wb8l=1)。信号wb8eは図3の16ビット分
のレジスタE部分の入力ゲート信号、信号wb8hは図
3の8ビット分のレジスタRH部分の入力ゲート信号、
信号wb8lは図3の8ビット分のレジスタRL部分の
入力ゲート信号を意味する。
【0302】また、ワードサイズ(word=1)の場
合、r2のビット3の値に対応して、汎用レジスタEと
して16ビットで書込まれる(wb8e=1、wb8h
=wb8l=0)か、汎用レジスタR(RH,RL)と
して16ビットで書込まれる(wb8e=0、wb8h
=wb8l=1)かが指定される。更に、バイトサイズ
の場合、r2のビット3の値に対応して、汎用レジスタ
RHとして8ビットで書込まれる(wb8e=0、wb
8h=1、wb8l=0)か、汎用レジスタRLとして
8ビットで書込まれる(wb8e=wb8h=0、wb
8l=1)かが指定される。
【0303】そのほかのレジスタ番号についても前記論
理記述におけるgr、rの部分が相違するだけで、その
ほかは同様とされる。レジスタセレクタ34は前記既存
の下位CPUのレジスタセレクタに対して、grのデコ
ード論理が追加され、また、新規の汎用レジスタER8
〜ER31に対応する部分のデコード論理が追加された
ことになる。
【0304】レジスタセレクタ34の出力先を、grの
内容に従って、汎用レジスタ8本単位で切り分けるだけ
なので、任意の命令に対して、同様の方法で、指定可能
な汎用レジスタ本数を増やすことが可能になる。
【0305】図21及び図22にはスタックポインタに
も使用可能なレジスタER7に関するレジスタセレクタ
の選択論理の一例を論理記述で示す。図22の記述は図
21の後に続く残りの論理記述である。記述形態は図1
9、図20と同じである。特に制限はされないものの、
sspgrはサブルーチン分岐命令用のスタックポイン
タとして使用するレジスタのグループを指定する情報と
され、ispgrは例外処理用のスタックポインタのと
して使用するレジスタのグループを指定する情報とされ
る。それらの情報sspgr、ispgrはシステムコ
ントローラ(SYSC)21に含まれる制御レジスタ
(CPUCR)22からレジスタセレクタRSELに供
給される。
【0306】前記図19と同様のレジスタ選択のための
論理記述の他、命令デコーダからの制御信号(sspg
b、wbssp、ispgb、wbisp)と、スタッ
クポインタ指定制御ビットsspgr、ispgrによ
って、レジスタ選択信号を生成する。信号sspgbは
サブルーチン用スタックポインタに利用されるレジスタ
の値をバスGBに出力することを指示し、信号wbss
pはバスWBからサブルーチン用スタックポインタに利
用されるレジスタにデータを供給することを指示し、信
号ispgbは例外処理用スタックポインタに利用され
るレジスタの値をバスGBに出力することを指示し、信
号wbispはバスWBから例外処理用スタックポイン
タに利用されるレジスタにデータを供給することを指示
する。従来、サブルーチン分岐と割込み例外処理のスタ
ックポインタとを独立に設けていた場合には、これをサ
ブルーチン分岐用( sspgb、wbssp )、割込
み例外処理用(ispgb、wbisp)とに分離し
て、命令デコーダを構成する必要がある。これは本来別
々の処理に対する機能をまとめていたものを分離するよ
うにしたものであるので、論理的な規模の増大などは少
ない。
【0307】これ以外に例外処理のスタックポインタと
なり得るレジスタER15、ER23,ER31も同様
に構成することができる。即ち、レジスタER15は、
sspgr=1またはispgr=1のとき選択され
る。同様に、レジスタER23は、sspgr=2また
はispgr=2のとき選択され、レジスタER31
は、sspgr=3またはispgr=3のとき選択さ
れる。
【0308】制御レジスタ(CPUCR)22の構成
は、公知の技術であるので詳細な説明は省略する。制御
レジスタ(CPUCR)22はリセット時にレジスタグ
ループ0が選択される(sspgr=ispgr=0)
ようにするとよい。
【0309】また、カレントグループ選択ビットを設け
てるようにしてもよい。即ち、レジスタ拡張用前置命令
コードが付加されない場合、レジスタグループ0とせず
に、スタックポインタグループ選択ビットと同様の制御
レジスタに前記カレントグループ選択ビットを設け、R
SLGR信号によって、前記カレントグループ選択ビッ
トの内容を命令レジスタIR2(LGR1、LGR2)
にロードするようにする。
【0310】カレントグループ選択ビットに0以外が設
定されている場合、NOP命令(H'0000)は、レ
ジスタグループ0の前置命令コードとされる。この命令
コードの実行後は、割込みを受付けたりすることなく、
次の命令コードを実行するようにすればよい。
【0311】レジスタグループ0を指定するために、
H'0000を使用することになり、既存のNOP命令
と同じコードであり、NOP命令は使用しないようにす
ればよい。NOP命令の代りに、BRA $+2などを
使用するようにすればよい(「$+2」はその命令の存
在するアドレスに対して2番地先、即ち次の命令のアド
レスであることを示す)。
【0312】各時点でのプログラムの実行内容によっ
て、主に使用する汎用レジスタの対象は異なるから、主
に使用するグループの処理を高速にし、ひいてはCPU
の処理速度を向上することができる。例えば、レジスタ
グループ3の汎用レジスタを所定の割込み処理に割り当
て、他の処理では使用しない様にしておき、当該割込み
が発生したときに、カレントグループを3に変更して、
レジスタ拡張用前置命令コードなしで、汎用レジスタグ
ループ3に対する処理を高速に実行することができる。
【0313】例えば、割込み優先順位を4レベルとした
場合、通常、割込みのネストは4階層になる。即ち、割
込みの優先順位を3(高位)〜0(低位)とした場合、
同じ優先順位の割込みは同時には受け付けないから、最
初に優先順位0の割込みはマスクされ、メインプログラ
ム実行途中に優先順位1の割込みが発生し、この処理途
中に優先順位2の割込みが発生し、この処理途中に優先
順位3の割込みが発生した場合が、最大のネスト4にな
る。
【0314】例えば、グループ3を優先順位3の割込み
用の処理に確保し、グループ2を優先順位2の割込み用
の処理に確保しておき、そのほかの割込みと一般の処理
ではグループ0と1を使用するようにプログラムを組め
ば、優先順位3の割込み発生時には、汎用レジスタを待
避することなく、汎用レジスタグループ3を使用できる
から、割込み応答速度を向上することができる。優先順
位2の割込み発生時も同様にでき、より優先度の高い割
込み処理を高速に処理することができる。
【0315】オペレーティングシステム(OS)などに
よって、CPUの処理を制御する場合、CPUの処理は
いわゆるタスクに分割され、各タスクは独立に管理され
る。例えば、スタック領域も各タスク毎に独立に管理す
ることになる。
【0316】タスクを切り替える場合、スタック領域も
切り替えることになり、従来は、使用中のスタックポイ
ンタの内容を待避し、スタックポインタの内容を更新し
なければならない。更新する場合には、当該タスクが前
回待避したスタックポインタの内容を復帰する必要があ
る。
【0317】かかるタスク切替えの場合、前記の例で
は、前記レジスタ(CPUCR)22の内容を書き換え
るのみでよい。切り替える前のスタックポインタの内容
は保持することができるから、待避したり、復帰したり
する必要がない。CPUの処理に直接影響のない処理を
省くことによって、実質的な処理性能を向上することが
できる。
【0318】また、割込みはタスクの実行と独立に発生
し、タスクからは予期できない。各タスクで割込みを許
可している場合は、発生し得る多重割込みの数分(一般
には、割込み優先順位の数に相当する)スタック領域を
確保しなければならない。従来は、これを各タスク毎に
行なければならず、スタック使用量を不所望に増加させ
ていた。本実施例においては、例外処理用のスタックポ
インタを用いて、例外処理用のスタックを独立して管理
できるから、各タスクは割込み用のスタック領域を確保
する必要がない。これによって、スタックの使用量を抑
止することができる。スタックはRAMで構成され、ま
た、シングルチップマイクロコンピュータにおいては内
蔵できるRAMの容量はチップサイズなどによって制限
されるから、例外処理用のスタックポインタを使用可能
にすることによって、シングルチップマイクロコンピュ
ータにおいてもOSの適用を容易にする。
【0319】また、制御レジスタ(CPUCR)22の
初期値を、レジスタグループ0に相当するようにし、初
期状態で、既存の下位CPUと同一のスタックポインタ
の使用方法を可能とすることにより、既存のソフトウェ
ア資産も有効に利用できる。
【0320】ER7、ER15、ER23、ER31を
スタックポインタとして使用しない場合は、その他の汎
用レジスタとして使用できるから、利用効率や使い勝手
を向上できる。
【0321】図23乃至図25には前記命令デコーダD
ECに含まれる転送命令コード(mov)の解読論理2
01を論理記述で例示する。図23乃至図25に示され
た論理記述は、図19と同じRTL(Register Transfe
r Level)若しくはHDL(Hardware Description Lang
uage)によって記述されている。尚、記号「!」は論理
的な和を示し、「&」は論理的な積を示す。「3’b0
01」は3ビット長のバイナリデータ001を意味す
る。IR[8]はインストラクションレジスタIRの最
下位から9ビット目の論理値を意味する。
【0322】図23乃至図25の論理記述は、16ビッ
ト絶対アドレスによるワードサイズの転送命令(MO
V.W @aa:16,Rn)のコードを解読するため
の論理記述に相当する。図23乃至図25の論理記述に
おいて、casex(IR)の次行に記述された16’
b0110_101?_??00_????がその転送
命令のコードを意味する。IR[8]=0のときバイト
サイズ、 IR[8]=1のときワードサイズ、IR
[7]=0のときメモリ→汎用レジスタ(リード型)、
IR[7]=1のとき汎用レジスタ→メモリ(ライト
型)、の転送を意味する。その命令を、独立した転送命
令として実行するか、メモリ上のデータに対する直接的
な処理命令の一部として実行するかは、信号MODS、
MODDの値によって指示される。即ち、図23乃至図
25の論理記述では、ステートコードTMGに従って制
御信号を生成するようになっており、現時点でのステー
トコードTMGの値とその時のMODS、MODDの値
等にしたがって、次のステートコードNEXTTMGの
値を決定するようになっている。MODS、MODD信
号によって、独立した転送命令として実行するか、メモ
リ上のデータに対する直接的な処理命令の一部として実
行するかの制御が大別されることになる。具体的には、
MODS=MODD=0の場合は、独立した転送命令と
して実行される。既存の転送命令と同様の動作になる。
特に図示していない部分については、独立した転送命令
と同様にできる。
【0323】MODS=1の場合は、ソース側データの
リード動作として実行される。リードデータは、汎用レ
ジスタに書込まず、テンポラリレジスタTRDに書込
む。
【0324】MODD=1で、MODS=0またはMO
DSE=1の場合は、デスティネーション側データのリ
ード動作として実行される。リードアドレスを、テンポ
ラリレジスタTRAに書込む。リードデータは、リード
データバッファRDBに取り込んだ後、1ステート早く
実行を終了する。なお、MODSEはソース側のリード
型転送命令コードの実行が終了したことを示す信号であ
り、解読論理201で生成される。
【0325】リードデータのテンポラリレジスタTRD
への書込み及びリードアドレスのテンポラリレジスタT
RAへの書込みは、いずれの場合も区別なく、実行して
もよい(利用されることはなくても、動作に影響しな
い。区別しないことによって、論理的な無駄を省くこと
ができる)。
【0326】従って、独立した転送命令(既存の転送命
令)に比較して、MODS=1のとき、汎用レジスタへ
の書込み禁止、MODD=1のとき、1ステート短縮の
相違が存在するのみにできる。論理的な規模の増加を最
小限とすることができる。
【0327】なお、図15に示される通り、命令拡張用
前置命令コードのロングワードサイズの指定によって、
MODS、MODDと同様に、ロングワードサイズがL
NG信号によって指示される。
【0328】また、図において、小文字の信号は、命令
デコーダDECで生成され、出力される信号とし、大文
字の信号は命令デコーダDECに入力された信号とす
る。
【0329】図23に示される論理記述の第1の部分
(1−1)でステートコードTMGが生成される。ステ
ートコードTMGは1→2→3と進行するが、デスティ
ネーション側データのリード動作(MODD=1でMO
DS=0またはMODSE=1)の場合TMGは1→2
で終了するようになっている。
【0330】なお、NEXTTMG[5]=0の場合に
おける次ステートコードは単純に下位ビットの値になっ
ている。NEXTTMG[5]=1の場合における次ス
テートコードは5’b00001とされる様に構成され
ている。
【0331】図23に示される論理記述の第2の部分
(1−2)でバス制御を行なう。nop=0はバスアク
セス開始、 nop=1はバスアクセス禁止を指示す
る。data=0は命令リード、data=1はデータ
アクセスを指示する。long=1はロングワードサイ
ズ、 long=0のとき、byte=0はワードサイ
ズ、byte=1はバイトサイズを指示する。 wri
te=0はリード、 write =1はライトを指示す
る。
【0332】本転送命令の場合、ステートコード1、3
で命令リードを行い、ステートコード2で、データアク
セスを行なうようになっている。データアクセスのリー
ド/ライトはIR[7]によって指示される。命令リー
ドの場合は所定のタイミングで内部データバスIDBの
内容がインストラクションレジスタIRとリードデータ
バッファRDBに格納される。データリードの場合は所
定のタイミングで内部データバスIDBの内容がリード
データバッファRDBに格納される。データライトの場
合は所定のタイミングでライトデータバッファWDBの
内容が内部データバスIDBに出力される。
【0333】図24に示される論理記述の第3の部分
(1−3)で実効アドレスを計算する。本転送命令の場
合、ステートコード2(=5’b00010)で、リー
ドデータバッファRDBに保持している命令コードのE
A拡張部16ビットを、dbrext信号によって32
ビットに符号拡張した上、内部バスGBに出力する。バ
スGBの内容はアドレスバッファABに毎ステート格納
されるようにされており、特に制御は必要ない。
【0334】図24に示される論理記述の第4の部分
(1−4)で、転送データを制御する。リード型(IR
[7]=0)の場合は、ステートコード3で、リードデ
ータをリードデータバッファRDBからバスDBへ出力
し、MODS=0の場合は汎用レジスタへ、MODS=
1の場合はテンポラリレジスタTRDへ格納する。
【0335】ライト型(IR[7]=1)の場合は、ス
テートコード2で、 MODS=0の場合は汎用レジス
タから、MODS=1の場合はテンポラリレジスタTR
Dから内部バスDBへ出力し、いずれの場合もライトデ
ータバッファWDBを経由して、内部データバスIDB
に出力する。
【0336】図25に示される論理記述の第5の部分
(1−5)で、割込みマスク信号を制御する。また、ソ
ース側のデータのリードが終了した場合には、制御信号
MODSEを発生する。
【0337】図23及び図25においてMODS=1ま
たはMODD=1の場合には入力されたオペレーション
レコードの一部が転送命令と異なる様にしてもよい。例
えばオペコードのビット15は別の定義に使用する様に
してもよい。
【0338】論理規模の縮小のためにはアドレッシング
モードなどのメモリの指定方法を決めるビット(オペコ
ードのビット8〜10)は共通にする。
【0339】図26及び図27には前記命令デコーダD
ECに含まれる演算命令コード(exe)の解読論理2
02を論理記述で例示する。図26及び図27の双方に
よって示される論理記述は、レジスタ間加算命令(AD
D.W Rm,Rn)のコードを解読する為の論理記述
に相当する。
【0340】前記同様に、独立した転送命令として実行
するか、メモリ上のデータに対する処理命令の一部とし
て実行するかは、MODS、MODD信号によって指示
される。特に図示していない部分(ALUの制御など)
については、独立した演算命令と同様にできる。
【0341】図26に示される論理記述の第1の部分
(2−1)でステートコードTMGが生成される。ステ
ートコードTMGは1(=5’b00001)で終了す
る。図26に示される論理記述の第2の部分(2−2)
でバス制御を行なう。ステートコード1で命令リードを
終了する。
【0342】図27に示される論理記述の第3の部分
(2−3)で、演算データを制御する。MODS=0の
場合には、ソース側データを汎用レジスタとし、汎用レ
ジスタの内容をDBに読み出す(rsdb)。MODS
=1の場合には、ソース側データをメモリとし、テンポ
ラリレジスタTRDの内容をDBに読み出す(trdd
b)。
【0343】MODD=0の場合には、デスティネーシ
ョン側データを汎用レジスタとし、汎用レジスタの内容
をGBに読み出す(rdgb)とともに、演算結果を汎
用レジスタに書込む(wbrd)。MODD=1の場合
には、デスティネーション側データをメモリとし、リー
ドデータバッファの内容をバスDBに読み出す(rdb
db)とともに、演算結果をテンポラリレジスタTRD
に書込む(wbtrd)。
【0344】図27に示される論理記述の第4の部分
(2−4)で、割込みマスク信号を制御する。また、デ
スティネーション側がメモリの場合には、制御信号mk
movを発生して、ライト型転送命令と同等の動作を行
なう命令コードの発生を、命令変更部CHGに指示す
る。また、ロングワードサイズ信号LNG、バイトサイ
ズ信号BYTEを継続する。
【0345】図28乃至図30には前記命令デコーダD
ECに含まれる演算命令コード(exe)の解読論理2
02のうち、内部で生成されるライト型転送命令と同等
の動作を行なう命令コードを生成する論理の論理記述が
例示されている。
【0346】前記内部で生成されるライト型転送命令と
同等の動作を行なう命令コードは、常に同一の動作を行
なうものとし、MODSやMODDの制御信号は参照し
ていない。
【0347】図28に示される論理記述の第1の部分
(3−1)でステートコードTMGが生成される。ステ
ートコードTMGは1→3と進行する。図28に示され
る論理記述の第2の部分(3−2)でバス制御を行な
う。ステートコード1(=5’b00001)で、デー
タライトを行い、ステートコード3(=5’b0001
1)で命令リードを行なう。データサイズは演算命令コ
ードの発生した、制御信号LNG、BYTEによって指
示される。
【0348】図29に示す論理記述の第3の部分(3−
3)で実効アドレスを再利用する。ステートコード1
で、テンポラリレジスタTRAに保持している実効アド
レスを、内部バスGBに出力する。図29に示す論理記
述の第4の部分(3−4)で、転送データを制御する。
ステートコード3で、テンポラリレジスタTRDから内
部バスDBへ出力し、ライトデータバッファWDBを経
由して、内部データバスIDBに出力する。
【0349】図30に示される論理記述の第5の部分
(3−5)で、制御信号はいずれも初期化する。割込み
も許可し、割込みが要求すれば、引き続き割込み例外処
理を行なうことができる。
【0350】命令拡張用前置命令コード(pf)を解読
する論理回路の論理記述については特に図示しないが、
図15の命令拡張用前置命令コードの解読結果に応じた
modやmskintなどの制御信号を生成し、MOD
S,MODD等によって図23乃至図30に例示される
ような論理動作を制御し、命令デコーダDEC全体とし
て、メモリのデータに対する直接的な演算制御を可能に
する。
【0351】図31にはレジスタ拡張用前置命令コード
を伴わない第1の加算命令(ADD.L ER0,ER
1)の実行タイミングが示される。
【0352】ADD.L ER0,ER1は、グループ
0の汎用レジスタのみを使用するので、汎用レジスグル
ープを指定するレジスタ拡張用前置命令コードを必要と
せず、前記既存の下位CPU、例えば、前記平成7年3
月(株)日立製作所発行『H8S/2600シリーズH
8S/2000シリーズプログラミングマニュアル』に
記載のCPUと同じ1ワードの命令とされる。
【0353】特に制限はされないものの、内部データバ
ス(IDB)は16ビットであって、内蔵ROM4、R
AM5のリード/ライトを1ステートで行うことができ
るものとして説明する。また、CPUは命令フェッチ、
デコード、実行の3段パイプラインで命令を実行するも
のとする。
【0354】サイクルT0のスロットC2(φ#同期:
クロック信号φの反転クロックであるφ#同期)で、C
PU2のアドレスバッファABからアドレスがバスIA
Bに出力される。また、命令デコーダDECから、命令
フェッチ(if)を示す、バスコマンド(BCMD)が
出力される。
【0355】サイクルT1のスロットC1(φ同期)
で、アドレスバスIABの内容が周辺アドレスバス(P
AB)に出力され、バスコマンドに基づき、リードサイ
クルが開始され、周辺データバス(PDB)にデータが
出力される。スロットC2で周辺データバス(PDB)
のリードデータが内部データバスIDBに得られ、これ
をサイクルT2のスロットC1で命令レジスタIR1に
ラッチする。以上の動作は以前の命令の実行の制御によ
って行われる。前記周辺データバス(PDB)及び周辺
アドレスバス(PAB)は内部データバス(IDB)及
び内部アドレスバス(IAB)に接続された周辺回路用
の図示を省略するバスである。内蔵ROM4、RAM5
はそのモジュール内で周辺アドレスバス、周辺データバ
ス相当の動作を行う。
【0356】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、サイクルT2のスロ
ットC1で命令コードが制御部CONTの命令デコーダ
DECに入力されて、命令の内容が解読される。命令デ
コーダDECは、解読結果に従って、制御信号を出力し
て、各部の制御を行う。命令の一部(レジスタ指定フィ
ールドの情報:SEL1)がレジスタセレクタRSEL
に与えられる。図においてソース側レジスタ指定フィー
ルドの情報SEL1=0、デスティネーション側レジス
タ指定フィールドの情報SEL2=1になっている。S
EL1は、図18のRSELのr1[3:0]、SEL2
は、r2[3:0]に相当する。
【0357】レジスタ間演算命令では、サイクルT2の
スロットC2で、プログラムカウンタPCの内容を内部
バスGBに読み出して、アドレスバッファABとインク
リメンタINCに入力する。アドレスバッファABから
アドレスIABにアドレス信号が出力される。レジスタ
セレクタ34に制御信号を与える。このとき、ラッチ回
路(LGR1、LGR2)321,322が何れも0に
クリアされているので、レジスタフィールドSEL1、
SEL2からの信号と制御部CONTの出力する制御信
号A(Rs−DB、Rd−GB)とに基づいて、レジス
タ選択信号B(R0−DB、R1−GB)が生成され
る。
【0358】サイクルT3から、次の次の命令がリード
される。サイクルT3のスロットC1で、インクリメン
タINCでインクリメント(+2)された結果が、内部
バスWBを経由してプログラムカウンタPCにライトさ
れる。入力信号SEL2と制御信号B(WB−Rd)と
に基づいて、レジスタ選択信号C(selectC:W
B−R1)が生成される。前記レジスタ選択信号Bはレ
ジスタを選択して、ソース側、デスティネーション側の
レジスタ(Rs、Rd)のデータを算術論理演算器AL
Uに入力する。算術論理演算器ALUの演算内容は制御
部CONTが制御信号C(controlC)によって
指示する。加算・論理演算・シフトなどは1クロックで
演算を行うことができる。例えば、前記命令では32ビ
ットの加算を行う。次の命令の制御部CONTへのロー
ドを指示する。
【0359】制御信号B(RSLGR)によって、ラッ
チ回路(LGR1、LGR2)321,322のクリア
が指示される。ラッチ回路(LGR1)321はサイク
ルT3のスロットC1で、ラッチ回路(LGR2)32
2はサイクルT3のスロットC2でクリアされた結果が
伝達される。
【0360】サイクルT3のスロットC2で、算術論理
演算器ALUの演算結果が、内部バスWBを経由して、
レジスタ選択信号が選択したデスティネーション側のレ
ジスタ(ER1)にライトされる。図示はされないが、
制御信号Cによって、コンディションコードレジスタC
CRの更新を行う。
【0361】図31の例ではレジスタグループ0同士の
レジスタ間演算は実質的に1ステートで実行されてい
る。
【0362】図32にはレジスタ拡張用前置命令コード
が付加された第2の加算命令(ADD.L ER8,E
R1)の実行タイミングを示す。
【0363】汎用レジスタグループを指定するレジスタ
拡張用前置命令コードを付加して2ワード命令とする。
第2ワードは前記ADD.L R0,R1と同一であ
る。すなわち、gr1=1であるため、同じr1=0に
対して、レジスタ番号n=8と解釈される。
【0364】サイクルT0のスロットC2で、CPU2
のアドレスバッファABかアドレスがアドレスバスIA
Bに出力される。
【0365】サイクルT1のスロットC1(φ同期)
で、アドレスバスIABの内容が周辺アドレスバス(P
AB)に出力され、リードサイクルが開始される。スロ
ットC2でリードデータが内部データバスIDBに得ら
れ、これをサイクルT2のスロットC1で命令レジスタ
IR1にラッチする。これは、レジスタグループフィー
ルドを持つ省略可能なレジスタ拡張用前置命令コードの
ワードである。
【0366】引き続き、サイクルT2のスロットC2で
次のアドレス(+2された内容)がアドレスバスIAB
に出力され、このリードデータがサイクルT3のスロッ
トC1で命令レジスタIRにラッチされる。以上の動作
は以前の命令の実行の制御によって行われ、相対的な関
係が異なる場合もある。
【0367】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、サイクルT2のスロ
ットC1で命令コード(レジスタ拡張用前置命令コー
ド)が制御部CONTに入力されて、命令の内容が解読
される。解読結果に従って、制御信号を出力して、各部
の制御を行う。グループフィールドラッチ信号LGRC
Lが発行されて、レジスタグループ指定フィールド(I
R1のビット7〜0)がラッチ回路(LGR1、LGR
2)321,322にラッチされる。
【0368】サイクルT2のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレス信号がアドレス
バスIABに出力される。
【0369】サイクルT3から、次の次の命令がリード
される。サイクルT3のスロットC1で、インクリメン
タINCでインクリメント(+2)された結果が、内部
バスWBを経由してプログラムカウンタPCにライトさ
れる。第1ワードと第2ワード以降が分割されないため
の制御信号B(controlB)で連続命令信号(割
込み禁止信号:continue=mskint)を割
込み受け付け回路に出力する。本信号によって、割込み
要求などが発生していても、命令の実行を継続すること
ができる。また、ラッチ回路(LGR1、LGR)32
1,322の内容が保持される。
【0370】一方、サイクルT2のスロットC1で命令
コード(加算命令を指示)が命令デコーダ(DEC)3
3に入力されて、命令の内容が解読される。解読結果に
従って、制御信号を出力して、各部の制御を行う。LG
R1=1及びLGR2=0であるため、SEL1(及び
SEL2)と命令デコーダDECの出力する制御信号A
(Rs−DB、Rd−GB)とに基づいて、レジスタ選
択信号B(R8−DB、R1−GB)が生成される。こ
れ以外の第2ワードによる動作は第1の加算命令(AD
D.L ER0,ER1)と同一にできる。第1の加算
命令同様に、制御信号B(RSLGR)によって、ラッ
チ回路(LGR1、LGR2)321,322のクリア
が指示される。ラッチ回路(LGR1)321はサイク
ルT4のスロットC1で、ラッチ回路(LGR2)32
2はサイクルT4のスロットC2でクリアされた結果が
伝達される。
【0371】第1ワード(レジスタ拡張用の前置命令コ
ード)に対応するラッチ回路(LGR1、LGR2)3
21,322のラッチ信号、連続命令信号を出力以外
は、命令デコーダDECの内容を、既存のCPUの命令
デコーダと同等にできる。命令デコーダDECのレジス
タ拡張用前置命令コードに対応する部分は、相対的に小
さいことは言うまでもない。すなわち、論理的な規模の
追加を最小限にできる。また、命令デコーダDECの大
部分を既存のCPUの命令デコーダと同等にできるか
ら、従来の設計資産を有効に利用することができる。
【0372】また、そのほかの命令についても、同様の
レジスタ拡張用前置命令コードを付加することによっ
て、汎用レジスタのいずれも指定できる。前記命令コー
ドはレジスタ指定フィールドを持つ命令コードの命令に
ついて適用できる。
【0373】図33にはメモリ・レジスタ型の加算命令
(ADD.W @aa:16,R9)の実行タイミング
を示す。すなわち、レジスタグループフィールドを持つ
レジスタ拡張用前置命令コード、メモリ・レジスタ型演
算の命令拡張用前置命令コード、MOV.W @aa:
16,R0に相当する命令コード、ADD.W R0,
R1に相当する命令コードを組合せて1命令とみなされ
る命令を実行したときのタイミングが示される。
【0374】レジスタグループフィールドを持つレジス
タ拡張用前置命令コードは、グループ1の汎用レジスタ
を指定するように、H’0001とされる。すなわち、
gr2=1であるため、同じr2=1に対して、レジス
タ番号n=9と解釈される。
【0375】また、メモリ・レジスタ型の命令拡張用前
置命令コードは、図15に従い、H’0108とされ、
MODS信号によって、ソース側がメモリであることを
指示する。本命令では、直接の関係はないが、EA1命
令コードの実行時には、gr1とr1が組み合わされ
て、汎用レジスタが選択される。また、演算命令コード
の実行時には、gr2とr2が組み合わされて、汎用レ
ジスタが選択される。
【0376】転送命令コードは、既存の転送命令と同様
に、メモリのリードを行なうが、前置命令コードによる
ソース側をメモリとする指示に基づき、リードデータを
テンポラリレジスタTRDに格納する。ソース側をメモ
リとする指示を継続する。
【0377】演算命令コードは、ソース側をメモリとす
る指示に従い、ソース側データを汎用レジスタではな
く、テンポラリレジスタ(TRD)から読み出す。その
ほかの動作は、既存の演算命令と同様になる。
【0378】サイクルT0のスロットC2(φ#同期。
#は反転論理を示す)で、CPU2のアドレスバッファ
ABからアドレスがIABに出力される。
【0379】サイクルT1のスロットC1(φ同期)
で、IABの内容がPABに出力され、リードサイクル
が開始される。サイクルT1のスロットC2でリードデ
ータが内部データバスに得られ、これをサイクルT2の
スロットC1でIR(IR1)にラッチする。これは、
レジスタグループフィールドを持つ省略可能な命令ワー
ド(レジスタ拡張用前置命令コード)である。
【0380】引き続き、サイクルT2のスロットC2で
次のアドレス(+2された内容)がIABに出力され、
このリードデータがサイクルT3のスロットC1でIR
(IR1)にラッチされる。以上の動作は以前の命令の
実行の制御によって行われ、相対的な関係が異なる場合
もある。
【0381】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、サイクルT2のスロ
ットC1で命令コード(レジスタ拡張用前置命令コー
ド)が命令デコーダDECに入力されて、命令の内容が
解読される。解読結果に従って、制御信号を出力して、
各部の制御を行う。グループフィールドラッチ信号LG
RCLが発行されて、レジスタグループ指定フィールド
(IR1のビット7〜0)がラッチLGR1、LGR2
にラッチされる。
【0382】サイクルT2のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスバスIABにア
ドレス情報が出力される。
【0383】サイクルT1のスロットC2で、CPU2
のアドレスバッファABかアドレス情報がアドレスバス
IABに出力される。
【0384】サイクルT2のスロットC1(φ同期)
で、アドレスバスIABの内容がPABに出力され、リ
ードサイクルが開始される。サイクルT2のスロットC
2でリードデータが内部データバスに得られ、これをサ
イクルT2のスロットC1でIRにラッチする。これ
は、メモリに対する演算を示す命令拡張用前置命令コー
ド(pf)である。
【0385】サイクルT3のスロットC2で次のアドレ
ス(+2された内容)がアドレスバスIABに出力さ
れ、このリードデータがサイクルT4のスロットC1で
命令レジスタIR(IR1)にラッチされる(MOV命
令の第1ワード(mov−1))。
【0386】サイクルT3のスロットC1で命令コード
(命令拡張用前置命令コードpf)がデコーダDECに
入力されて、命令の内容が解読され、かかる命令拡張用
前置命令コードの場合には、ソース側データがメモリ上
に存在することを指示する。即ち、制御信号CとしてM
ODS信号を1にセットし、デコーダDECにフィード
バックする。
【0387】サイクルT3のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレス情報がアドレス
バスIABに出力される。
【0388】サイクルT4のスロットC1で命令コード
(MOV命令の第1ワード(mov−1))が命令デコ
ーダDECに入力されて、命令の内容が解読される。解
読結果に従って、制御信号を出力して、各部の制御を行
う。絶対アドレスのアドレッシングモードであるので、
引き続き、EA拡張部である絶対アドレスをリードした
後、この絶対アドレスに基づき、ソースデータのリード
を行い、リード結果をテンポラリレジスタTRDに格納
する。
【0389】サイクルT4のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してプログラムカウンタPCにライ
トされる。サイクルT4のスロットC2で、プログラム
カウンタPCの内容を内部バスGBに読み出して、アド
レスバッファABとインクリメンタINCに入力する。
アドレスバッファABからアドレス情報がアドレスバス
IABに出力される。
【0390】サイクルT4から、リードサイクルが開始
され、このリードデータがサイクルT5のスロットC1
でリードデータバッファRDBにラッチされる(MOV
命令の第2ワード(mov−2)、即ち、EA拡張部で
ある絶対アドレス)。
【0391】サイクルT5のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してプログラムカウンタPCにライ
トされる。サイクルT5のスロットC2で、リードデー
タバッファRDBの内容(絶対アドレス)を内部バスG
Bに読み出して、アドレスバッファABに入力する。ア
ドレスバッファABからアドレス情報がアドレスバスI
ABに出力される。
【0392】サイクルT6から、ソースデータがリード
される。また、サイクルT5のスロットC2で、プログ
ラムカウンタPCの内容を内部バスGBに読み出して、
アドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレス情報がアドレス
バスIABに出力される。
【0393】サイクルT7のスロットC1で前記リード
データ(ソースデータ)が、リードデータバッファRD
Bに格納される。更に、リードデータバッファRDBか
ら内部バスDBに出力され、算術論理演算器ALUに入
力する。算術論理演算器ALUの動作は無操作とする。
【0394】サイクルT7のスロットC2で、リードデ
ータが、算術論理演算器ALUから内部バスWBに出力
され、信号MODSが1にセットされているので、汎用
レジスタではなく、テンポラリレジスタTRDに格納さ
れる。
【0395】サイクルT7のスロットC1で、命令コー
ド(ADD命令(add))が命令デコーダDECに入
力されて、命令の内容が解読される。解読結果に従っ
て、制御信号を出力して、各部の制御を行う。信号MO
DSが1にセットされているので、ソース側データを汎
用レジスタではなく、テンポラリレジスタTRDから読
み出す。デスティネーション側は、汎用レジスタから読
み出し、演算結果は汎用レジスタに格納する。
【0396】サイクルT7のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレス情報がアドレス
バスIABに出力される。
【0397】サイクルT8のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してプログラムカウンタPCにライ
トされる。また、デスティネーション側は変更なく、レ
ジスタグループフィールド(gr2=1)と、レジスタ
フィールド(r2=1)に従って、汎用レジスタ(ER
9)から、デスティネーションデータが内部バスGBに
出力され、ソース側データが、信号MODSに従って、
テンポラリレジスタTRDから内部バスDBに出力さ
れ、いずれも算術論理演算器ALUに入力される。算術
論理演算器ALUは加算動作とされる。
【0398】サイクルT8のスロットC2で、演算結果
が、算術論理演算器ALUから内部バスWBに出力さ
れ、汎用レジスタ(ER9)に格納される。
【0399】なお、第1ワードと第2ワード以降が分割
されないための制御信号Bで連続命令信号を出力する。
本信号によって、割込み要求などが発生していても、命
令の実行を継続することができる。
【0400】即ち、命令拡張用前置命令コードに対応す
る信号MODSの出力と連続命令信号の出力、転送命令
コードに対応する信号MODSに従ったデータ格納先の
選択と連続命令信号の出力、加算命令コードに対する信
号MODSに従ったデータ読み出し元の選択以外は、命
令デコーダDECの論理構成を、下位CPUの命令デコ
ーダと同等にできる。これらに対応する部分は、相対的
に小さいことは言うまでもない。すなわち、論理的な規
模の追加と変更を最小限にできる。また、命令デコーダ
DECの大部分を既存下位CPUの命令デコーダと同等
にできるから、従来の設計資産を有効に利用することが
できる。
【0401】また、そのほかの演算命令(加算、減算、
乗算、除算、比較、論理積、論理和、排他的論理和な
ど)についても、同様の命令拡張用前置命令コードと転
送命令コードを付加することによって、メモリと汎用レ
ジスタの演算を実現できる。
【0402】また、ソース側のアドレッシングモードを
レジスタ間接などとする場合、レジスタグループフィー
ルドを持つレジスタ拡張用前置命令コードを、前記命令
の先頭に付加し、gr1=1〜3のいずれかとすること
によって、ソース側の汎用レジスタを、グループ1〜3
とすることができる。即ち、レジスタグループフィール
ドを持つレジスタ拡張用前置命令コードのgr1がソー
ス側、gr2がデスティネーション側に対応する。
【0403】図34にはレジスタ・メモリ型の加算命令
(ADD.W R1,@aa:16)の実行タイミング
を示す。すなわち、命令拡張用前置命令コード、MO
V.W@aa:16,R0に相当する命令コード、及び
ADD.W R1,R0に相当する命令コードを組合せ
て、1命令とみなされる命令を実行したときのタイミン
グが示される。この時の命令拡張用前置命令コードは、
図15に従い、H’0104とされ、信号MODDによ
って、ソース側は汎用レジスタ、デスティネーション側
がメモリであることを指示する。
【0404】転送命令コードは、既存の転送命令と同様
に、サイクルT4のスロットC2から、メモリのリード
を行ない、命令拡張用前置命令コードによるデスティネ
ーション側をメモリとする指示(MODD)に基づき、
生成した実効アドレス(メモリアドレス)をテンポラリ
レジスタTRAに格納する。また、サイクルT6のスロ
ットC1で、リードデータをリードデータバッファDB
Rに格納した時点で、既存の転送命令またはソース側の
データのリードの場合より1ステート早く実行を終了す
る。このため、命令フェッチとPCのインクリメントは
行なわない。デスティネーション側をメモリとする指示
を継続する。演算命令コード(add)を、サイクルT
5のスロットC1から命令デコーダDECに入力する。
【0405】演算命令コードは、デスティネーション側
をメモリとする指示(MODD)に従い、サイクルT6
のスロットC1で、デスティネーション側データを、汎
用レジスタではなく、リードデータバッファRDBか
ら、バスGBに読み出し、算術論理演算器ALUに入力
する。ソース側は汎用レジスタが暗黙的に指示されてい
るので、汎用レジスタR1の内容を、バスDBに読み出
し、算術論理演算器ALUに入力する。サイクルT6の
スロットC2で、演算結果をテンポラリレジスタTRD
に格納する。さらに、制御信号mkmovによって、M
OV.W R0,@ER0に類似する命令コード(mo
v−st:16’b0111_1000_1???_?
???)をCHGで発生し、サイクルT6のスロットC
1から命令デコーダDECに入力する。?のビットは任
意でよい。
【0406】発生された命令コード(mov−st)
は、 テンポラリレジスタTRAをアドレスレジスタと
し、テンポラリレジスタTRDをデータレジスタとする
転送命令同様の動作を行う。即ち、サイクルT6のスロ
ットC2で、テンポラリレジスタTRAに格納されてい
る実効アドレスをバスGBに読み出し、アドレスバッフ
ァABを経由して内部アドレスバスIABに出力すると
ともに、ワードデータライトのバスコマンドを発行す
る。サイクルT7のスロットC2で、テンポラリレジス
タTRDに格納されている演算結果をバスDBに読み出
し、ライトデータバッファWDBを経由して、内部デー
タバスIDBに出力して、デスティネーションのメモリ
アドレスに演算結果を書込む。サイクルT7のスロット
C2から命令フェッチを行なうとともに、プログラムカ
ウンタPCのインクリメントを行なう。これによって、
転送命令コード(mov−1)の実行を短縮し、命令フ
ェッチとプログラムカウンタPCのインクリメントを行
なわなかった分を回復する。
【0407】デスティネーション側メモリにライトする
場合、命令コード(mov−st)をCPU2内部で発
生することにより、命令コードを短縮し、処理時間を短
縮することができる。テンポラリレジスタTRAの内容
を参照することによって、再度実効アドレスの計算を行
なう必要がなく、更に、処理時間を短縮することができ
る。 MOV.W R0,@ER0に類似する命令コード
を使用することにより、設計を容易にし、論理的な規模
の増加を抑止することができる。
【0408】比較命令の場合は、デスティネーション側
メモリにライトする必要がない。この場合も、前記同様
に動作させ、サイクルT6のスロットC2のバスコマン
ドを無操作に変更するのみに止めるとよい。即ち、比較
命令の命令コードを実行した場合に、制御信号を発行
し、デスティネーション側メモリにライトする命令コー
ドにライト動作を禁止させるようにするものである。制
御方式を共通化し、論理的な規模の増加を抑止すること
ができる。或いは、内部で発生する命令コードを無操作
(NOP)命令の命令コードに相当するものにしてもよ
い。この場合は、処理時間を更に短縮することができ
る。
【0409】また、そのほかの2つのデータに対する演
算命令(加算、減算、乗算、除算、比較、論理積、論理
和、排他的論理和など)についても、同様の命令拡張用
前置命令コードと転送命令コードを付加することによっ
て、メモリと汎用レジスタの演算を実現できる。更に、
1つのデータに対する演算命令(符号反転、論理反転、
シフト、ローテートなど)についても、同様の命令拡張
用前置命令コードと転送命令コードを付加することによ
って、メモリ上のデータの演算を実現できる。
【0410】尚、図34で説明した命令の実行において
も、演算命令の実行に至るまでの途中の演算結果による
コンディションコードレジスタCCRの変更抑止と、制
御信号mskintによる割り込み抑止の制御は前記と
同様に行われる。
【0411】図35にはメモリ・メモリ型の加算命令
(ADD.W @ER1,@aa:16)の実行タイミ
ングを示す。即ち、命令拡張用前置命令コード(p
f)、 MOV.W @ER1,R0に相当する命令コー
ド(mov−1)、MOV.W @aa:16,R0に
相当する命令コード(mov2)、及びADD.W R
0,R1に相当する命令コード(add)を組合せて、
1命令とみなされる命令を実行したときのさタイミング
が示される。
【0412】図35の場合、命令拡張用前置命令コード
は、図15に従い、H’010Cとされ、MODS,M
ODD信号によって、ソース側、デスティネーション側
がいずれもメモリであることを指示する。
【0413】転送命令コード(mov−1)は、サイク
ルT3のスロットC2から、メモリのリードを行ない、
命令拡張用前置命令コードによるソース側をメモリとす
る指示(MODS)に基づき、生成した実効アドレス
(メモリアドレス)をテンポラリレジスタTRAに格納
する。また、サイクルT5のスロットC1で、リードデ
ータ(data1)をリードデータバッファRDBを経
由して、バスGBに出力する。算術論理演算器ALUを
経由してバスWBに出力され、サイクルT5のスロット
C2でテンポラリレジスタTRDに格納される。ソース
側及びデスティネーション側をメモリとする指示を継続
すると共に、ソース側データの終了を指示する(MOD
SE)。
【0414】転送命令コード(mov−2)は、図34
の転送命令コードと同様に、サイクルT6のスロットC
2から、メモリのリードを行ない、命令拡張用前置命令
コードによるデスティネーション側をメモリとする指示
(MODD)とソース側データの終了指示(MODS
E)に基づき、生成した実効アドレス(メモリアドレ
ス)をテンポラリレジスタTRAに格納する。また、サ
イクルT8のスロットC1で、リードデータをリードデ
ータバッファRDBに格納した時点で、既存の転送命令
またはソース側のデータのリードの場合より1ステート
早く実行を終了する。ソース側及びデスティネーション
側をメモリとする指示を継続する。
【0415】演算命令コードは、ソース側及びデスティ
ネーション側をメモリとする指示(MODS、MOD
D)に従い、サイクルT8のスロットC1で、デスティ
ネーション側データをリードデータバッファRDBか
ら、バスGBに読み出し、算術論理演算器ALUに入力
する。ソース側データをテンポラリレジスタTRDか
ら、バスDBに読み出し、算術論理演算器ALUに入力
する。サイクルT8のスロットC2で、演算結果をテン
ポラリレジスタTRDに格納する。さらに、MOV.W
R0,@ER0に類似する命令コード(mov−s
t)を発生し、サイクルT6のスロットC1から命令デ
コーダDECに入力する。
【0416】発生された命令コード(mov−st)
は、テンポラリレジスタTRAをアドレスレジスタと
し、テンポラリレジスタTRDをデータレジスタとする
転送命令同様の動作を行う。
【0417】ここで、ソース側及びデスティネーション
側をメモリとする指示(MODS、MODD)がなされ
ている場合、転送命令コードは、1回目はMODSE信
号が0にクリアされており、ソース側のデータのリード
を行ない、2回目はMODSE信号が1にセットされて
おり、デスティネーション側のリードを行なうものとす
る。
【0418】尚、図35で説明した命令の実行において
も、演算命令の実行に至るまでの途中の演算結果による
コンディションコードレジスタCCRの変更抑止と、制
御信号mskintによる割り込み抑止の制御は前記と
同様に行われる。
【0419】図36にはメモリ・メモリ型の転送命令
(MOV.W @ER1,@aa:16)の実行タイミ
ングを示す。即ち、命令拡張用前置命令コード、MO
V.W@ER1,R0に相当する命令コード、MOV.
W R0,@aa:16に相当する命令コードを組合せ
て、1命令とみなされる命令を実行したときのさタイミ
ングが示される。この時の命令拡張用前置命令コード
は、図15に従い、H’0108とされる。
【0420】メモリ・メモリ間の転送命令は前記加算命
令と同様にし、ADD.W R0,R1に相当する命令
コードの代わりに、MOV.W R0,R1に相当する
命令コードを用いて、実現することもできる。この場合
は、デスティネーション側のリードを行なってしまう
が、転送命令の性質上、デスティネーション側のリード
は必要なく、処理時間が無駄になってしまう。
【0421】この例では、命令拡張用前置命令コード
と、リード型の転送命令コードと、ライト型の転送命令
コードを組合せ、命令拡張用前置命令コードは、ソース
側がメモリであることを指示する。
【0422】リード型転送命令コードは、メモリのリー
ドを行なって、命令拡張用前置命令コードの指示に基づ
き、リードデータをテンポラリレジスタTRDに格納す
る。ソース側をメモリとする指示を継続する。
【0423】ライト型転送命令コードは、既存の転送命
令と同様に、メモリのライトを行なうが、ソース側をメ
モリとする指示(MODS)に従い、ライトデータを汎
用レジスタではなく、テンポラリレジスタTRDから取
り出す。
【0424】前記加算命令と同等の実現方法を採用した
場合に比べて、演算命令コードを省略できる。結果的
に、命令コード長を1ワード短縮し、実行ステート数を
3ステート短縮できる。
【0425】図37にはイミディエイト−メモリ型の加
算命令(ADD.W #xx,@aa:16)の実行タ
イミングを示す。同図の内容は、図34と同様に、命令
拡張用前置命令コード、MOV.W @aa:16,R
0に相当する命令コード、及びADD.W #xx,R
0に相当する命令コードを組合せて定義されて、1命令
とみなされる命令を実行したときのタイミングが示され
ている。デスティネーション側がメモリであるが、イミ
ディエイトデータの場合は、リードデータを一旦テンポ
ラリレジスタTRDに格納する。このため、命令拡張用
前置命令コードは、図15に従い、H’0108とさ
れ、ソース側をメモリとする制御信号(MODS)を発
行する。
【0426】命令拡張用前置命令コード、転送命令コー
ドの動作は、サイクルT6のスロットC1で、リードデ
ータがリードデータバッファRDBからバスGBに読み
出される。算術論理演算器ALUを経由して、バスWB
に出力され、サイクルT6のスロットC2でテンポラリ
レジスタTRDに格納される。
【0427】命令拡張用前置命令コードの指示(MOD
S)に対して、イミディエイトデータの演算命令コード
は、サイクルT8のスロットC1で、デスティネーショ
ン側データを、汎用レジスタではなく、テンポラリレジ
スタTRDから、バスGBに読み出し、算術論理演算器
ALUに入力する。ソース側はイミディエイトデータが
リードデータバッファRDBから、内部バスDBに読み
出し、算術論理演算器ALUに入力する。サイクルT8
のスロットC2で、演算結果をテンポラリレジスタTR
Dに格納する。さらに、命令拡張用前置命令コードの指
示(MODS)に基づいて、サイクルT6のスロットC
2からワードサイズライトを開始する。アドレスはテン
ポラリレジスタTRAから、サイクルT6のスロットC
2で読み出し、バスGB及びアドレスバッファABを経
由して内部アドレスバスIABに出力する。データは、
サイクルT8のスロットC1で、演算結果を、テンポラ
リレジスタTRDから読み出して、バスDB及びライト
データバッファWDBを経由して内部データバスIDB
に出力する。命令拡張用前置命令コードの指示(MOD
S)に従って、イミディエイトデータの演算命令にライ
ト動作が加えられることになる。
【0428】ADD.W #xx,@aa:16の場合
は、演算命令コードが2ワードであるため、図34と相
違されているが、バイトサイズのイミディエイトの場
合、演算命令コードが1ワードであれば、図34と同じ
動作タイミングとすればよい。
【0429】尚、図37で説明した命令の実行において
も、演算命令の実行に至るまでの途中の演算結果による
コンディションコードレジスタCCRの変更抑止と、制
御信号mskintによる割り込み抑止の制御は前記と
同様に行われる。
【0430】図38にはイミディエイト・メモリ型の転
送命令(MOV.W #xx,@aa:16)の実行タ
イミングを示す。すなわち、命令拡張用前置命令コー
ド、MOV.W #xx,R0に相当する命令コード、
及びMOV.W R0,@aa:16に相当する命令コ
ード(ライト型転送命令コード)を組合せて1命令とみ
なされる命令を実行したときにタイミングが示される。
このとき、命令拡張用前置命令コードは、図15に従
い、H’0104とされる。
【0431】図38におけるサイクルT4のスロットC
1で、イミディエイトデータをリードデータバッファR
DBからバスDBに読み出し、算術論理演算器ALUを
経由して、サイクルT4のスロットC2で、バスWBに
出力する。このイミディエイトデータを、命令拡張用前
置命令コードの指示(MODD)に基づき、テンポラリ
レジスタTRDに格納する。
【0432】ライト型転送命令コードは、既存の転送命
令と同様に、メモリのライトを行なうが、サイクルT7
のスロットC2で、命令拡張用前置命令コードの指示
(MODD)に従い、ライトデータを汎用レジスタでは
なく、テンポラリレジスタTRDから取り出す。
【0433】イミディエイトデータを、内部I/Oレジ
スタを含むメモリに設定することは、比較的出現頻度が
高いと考えられるので、命令コード長の短縮、及び処理
時間の短縮は望ましい。
【0434】図39乃至図41には、命令デコーダDE
Cに含まれる演算命令コード(exe)の解読論理20
1の一部に関する論理記述の別の例が示される。同図に
示される論理記述は、16ビットイミディエイトデータ
のワードサイズの加算命令(ADD.W #xx:1
6,Rn)に相当する。
【0435】MODS信号に対応して、実行ステートが
延長され、ライト動作が挿入される。図39に示される
論理記述の第1の部分(4−1)でステートコードTM
Gが生成される。単独の命令としては、ステートコード
TMGは1→3と進行する。イミディエイトデータとメ
モリ上のデータとを演算する場合は、MODS=1とさ
れ、ステートコードTMGは1→17→3と進行する。
【0436】図39に示される論理記述の第2の部分
(4−2)でバス制御を行なう。MODS=0の場合
は、2回の命令リードを行なう。MODS=1の場合
は、ステートコード1で、データライトを行い、ステー
トコード17、3で命令リードを行なう。データサイズ
は演算命令コードの発生した、当該命令(ADD.W
#xx:16,Rn)のデータサイズであるワードサイ
ズとされる。
【0437】図40に示される論理記述の第3の部分
(4−3)で実効アドレスを計算する。MODS=1の
場合は、ステートコード1で、テンポラリレジスタTR
Aに保持している実効アドレスを、内部バスGBに出力
する。
【0438】図40に示される論理記述の第4の部分
(4−4)で、転送データを制御する。ステートコード
1で演算を行なう。MODS=0の場合は、汎用レジス
タとリードデータバッファRDBからデータを読み出
し、演算結果を汎用レジスタに格納する。MODS=1
の場合は、テンポラリレジスタTRDとリードデータバ
ッファRDBからデータを読み出し、演算結果をテンポ
ラリレジスタTRDに格納する。
【0439】図41に示される論理記述の第5の部分
(5)で、制御信号はいずれも初期化する。割込みも許
可し、割込みが要求すれば、引き続き割込み例外処理を
行なうことができる。
【0440】ここで、前記命令拡張用前置命令コードを
省略してもそれと同様に命令の拡張を行うことができる
複合命令について説明する。例えば、図38に基づいて
説明したMOV.W #xx,R0の命令コードに余裕
があり、メモリに対する転送か、汎用レジスタに対する
転送かのデスティネーション情報を持つことができれ
ば、命令拡張用前置命令コードを設けなくてもよい。要
するに、命令コードに実質的な空き領域があり、その空
き領域にメモリに対する転送か、汎用レジスタに対する
転送かの情報を組み込んでも、その他の命令コードと区
別が付けばよい。このような前記デスティネーション情
報に基づき、イミディエイトデータをテンポラリレジス
タTRDに格納するとともに、デスティネーション側を
メモリとする制御信号を発生すればよい。そのような前
記デスティネーション情報を付加した転送命令コードと
演算命令コードを結合して1命令として実行可能な複合
命令を採用すれば、命令拡張用前置命令コードを設けた
場合と同様の機能を実現でき、更に当該命令拡張用前置
命令コードを設けない分だけ、命令コード長を短縮で
き、命令実行時間を短縮することができる。
【0441】図52には命令拡張用前置命令コード、M
OV.W #xx,R0に相当する命令コードに前記デ
ィスティネーション情報を付加した命令コードを組合せ
て1命令とみなされる命令を実行したときのタイミング
が示される。図38と比較すれば明らかなように、命令
拡張用前置命令コード(pf=H’0104)に対する
処理はない。
【0442】図42には本発明に係るCPUの開発環境
の概略が示される。開発環境の使用者は、各種エディタ
などを用いて、C言語乃至アセンブリ言語でプログラム
を作成する。これは通常、複数のモジュールに分割して
作成される。
【0443】Cコンパイラ400は、使用者の作成した
それぞれのC言語ソースプログラムを入力し、アセンブ
リ言語ソースプログラム乃至オブジェクトモジュールを
出力する。
【0444】アセンブラ401は、アセンブリ言語ソー
スプログラムを入力し、オブジェクトモジュールを出力
する。
【0445】リンケージエディタ402は、前記Cコン
パイラ400やアセンブラ401の生成した、複数のオ
ブジェクトモジュールを入力して、各モジュールの外部
参照や相対アドレスなどの解決を行い、1つのプログラ
ムに結合して、ロードモジュールを出力する。
【0446】ロードモジュールは、シミュレータデバッ
ガ403に入力され、パーソナルコンピュータなどのシ
ステム開発装置上で、CPU2の動作をシミュレーショ
ンし、実行結果を表示し、プログラムの解析や評価を行
なうことができる。また、ロードモジュールはエミュレ
ータ404に入力され、実際の応用システム上などで動
作する、いわゆるインサーキットエミュレーションを行
ない、CPU2を有するマイクロコンピュータ全体とし
ての、実動作の解析や評価を行なうことができる。
【0447】このほかに、ライブラリアンとして、汎用
的なサブルーチンなどを提供することもできる。
【0448】図43には本発明に係るCPU2のシステ
ム開発装置におけるCPU選択方法を示す。
【0449】ここでは、上位CPU2のマキシマムモー
ドを選択する場合を例示してある。(a)の場合、パー
ソナルコンピュータなどのシステム開発装置上のディス
プレイでプロンプトが表示された状態で、“SET C
PU= CPU−UMAX”と入力すればよいようにす
る。(b)の場合は、プロンプトが表示された状態で、
“SET CPU”とコマンドを入力し、これに対し
て、CPUの種類及び動作モードのメニューを、例えば
“CPU NAME (1.CPU−UMAX、2.CP
U−UMIN、3.CPU−L1、4.CPUL2)”
と表示するとともに、メニュー番号の入力を要求し、使
用者がメニューの番号1〜4のいずれかを入力すればよ
いようにする。ここで、CPU−UMAXは前記上位C
PU2のマキシマムモード、CPU−UMINは前記上
位CPUのミニマムモード、CPU−L1は前記第1の
下位CPU、CPUL2は前記第2の下位CPU、を示
すものとする。
【0450】このほか、ウィンドウのドロップダウンメ
ニューで選択可能にしてもよいし、ワークステーション
などであれば、Cシェルコマンドとして入力することも
できる。
【0451】更に、アセンブラ401やCコンパイラ4
00などの、ソースプログラムの制御命令として、CP
Uの種類及び動作モードを入力するようにしてもよい。
【0452】アセンブラ401は、選択されたCPUの
種類及び動作モードに従って、入力されたアセンブリ言
語ソースプログラム上の記述を解釈し、オブジェクトモ
ジュールを生成したり、エラーがあればそれを表示した
りする。下位CPUを選択し、上位CPUに存在して、
下位CPUに存在しない命令を記述するとエラーにな
る。命令コード自体は上位CPUが包含しているから、
このためのアセンブラを開発し、下位CPUについて
は、上位CPUに存在して、下位CPUに存在しない命
令を検出するような追加を行なうなどして、容易に開発
できる。
【0453】Cコンパイラ400は、選択されたCPU
の種類及び動作モードに従って、使用可能な、オペレー
ション、データサイズ、アドレッシングモードの組合せ
で示される命令や、汎用レジスタ、アドレス空間を判別
して、C言語によるプログラムを、CPUの命令に変換
し、アセンブリ言語プログラムやオブジェクトモジュー
ルとして出力する。
【0454】Cコンパイラ400自体には、C言語によ
るプログラムを、CPUの命令に変換する場合に、その
プログラム自体の解析を最適化するステップとその結果
を当該CPUの命令で実現するステップとを有する。ま
た、C++言語によるプログラムのコンパイルや、モジ
ュール間最適化などといった、CPUの命令セットとは
直接関係のない機能の向上が図られているが、CPU毎
の個別のコンパイラでは、これらのCPUに依存しない
機能向上を全ての個別のコンパイラに適用しなければな
らない。本発明のように、互いに互換性のないCPUを
含めて、共通のCコンパイラとしておけば、前記、CP
Uの命令セットとは直接関係のない機能向上を図ること
が容易になり、また、開発効率などを向上することがで
きる。
【0455】前記シミュレータデバッガ403は、入力
されたロードモジュールのプログラムを解釈して、CP
Uの動作をシミュレーションし、その中で、エラーがあ
ればそれを表示したりする。例えば、下位CPUを選択
し、上位CPUに存在して、下位CPUに存在しない命
令を記述するとエラーになる。命令コード及び命令実行
機能自体は上位CPUが包含しているから、このための
シミュレータデバッガを開発し、下位CPUについて
は、上位CPUに存在して、下位CPUに存在しない命
令を検出するような追加を行なうなどして、容易に開発
できる。
【0456】図44には本発明のCPU2のアセンブラ
が出力するリストを例示する。リストには、行番号、ロ
ケーションカウンタ、オブジェクトコード、ソース行番
号、ソースステートメントが表示される。
【0457】図44の(a)に示されるプログラムで
は、制御命令(.CPU)で、CPU−UMAX、即
ち、前記上位CPUのマキシマムモードを指定してい
る。なお、ソースプログラム上で「.」で始まる命令は
制御命令であり、マイクロコンピュータのプログラムに
は直接の関係はない。
【0458】SPはER7を表す。これはスタックポイ
ンタとしての機能の表記である。更に、本発明では、前
記図5の通り、R0LをALと、ER1をEBXと表記
してもよいとしている。いずれの表記を用いても、エラ
ーとはされず、同一のオブジェクトコードに変換され
る。
【0459】また、STACKなどのラベルは、本プロ
グラムのみでは解決されないので、オブジェクトコード
上の相当するフィールドは0とされている。これらは、
前記の通り、リンケージエディタで解決される。
【0460】図44の(b)に示されるプログラムで
は、同一のプログラムを、第1の下位CPU(CPU−
L1)を指定してアセンブルした例を示す。第1の下位
CPUには、MOV.L命令が存在しないため、エラー
が表示され、オブジェクトコードは生成されない。図4
4のリストに関する更に詳細な内容は本発明と直接の関
係ないので説明を省略する。
【0461】図45には本発明に係るCPU2を有する
マイクロコンピュータのためのエミュレータを示す。
【0462】エミュレーション用プロセッサ410は、
マイクロコンピュータ部分にエミュレーション用インタ
フェースを加えて構成される。前記マイクロコンピュー
タ部分は、例えば図2のマイクロコンピュータ1の構成
に相当される。
【0463】コネクタ部411がシングルチップマイク
ロコンピュータの代わりに応用システム(ターゲットシ
ステム又はユーザシステムとも称する)412のターゲ
ットマイクロコンピュータ搭載領域413に装着され
る。エミュレーション用プロセッサ410は前記コネク
タ部411とインタフェースケーブル414を介し、前
記ターゲットシステムインタフェースを用いて前記応用
システムと信号の入出力を行う。
【0464】特に制限はされないものの、前記応用シス
テム412に、ユーザバス415が存在し、ユーザメモ
リ416を接続することも可能とされる。この場合、エ
ミュレーション用プロセッサ410が出力し、インタフ
ェースケーブル414を介して供給されるユーザストロ
ーブ信号に従って、ユーザメモリ416はリード/ライ
トされる。
【0465】一方、エミュレーション用プロセッサ41
0は前記エミュレーションインタフェースを用いてエミ
ュレーションバス420に接続される。エミュレーショ
ンバス420には図示はされない状態信号・制御信号な
どを含む。前記エミュレーションバス420を用いて、
エミュレーション用プロセッサ410から、応用システ
ム412とエミュレーション用プロセッサ410の内部
状態に応じた情報などが出力され、また、エミュレーシ
ョン用プロセッサ410に対し、エミュレーションのた
めの各種信号が入力される。エミュレーション用プロセ
ッサ410の、図示はされないエミュレートモード端子
が電源レベルに固定され、エミュレーション用プロセッ
サ410内部ではエミュレートモードが設定される。
【0466】さらに、前記エミュレーションバス420
には、エミュレーションメモリ421、ブレーク制御回
路422、リアルタイムトレース回路423などが接続
される。前記エミュレーションメモリ421は、特に制
限はされないものの、RAMなどによって構成され、前
記のユーザプログラムを格納した領域と、エミュレーシ
ョンのためのプログラムを格納した領域とを持つ。前記
ブレーク制御回路422は、エミュレーション用プロセ
ッサ410による制御状態やエミュレーションバス42
0の状態を監視して、その状態が予め設定された状態に
達した時に、前記エミュレータ専用割込みを入力して、
エミュレーション用プロセッサ410のCPU(便宜上
CPU2と記す)によるユーザプログラムの実行を停止
させ、エミュレーション用プログラム実行状態に遷移さ
せる(ブレークする)。前記リアルタイムトレース回路
423は、前記CPU2のリード動作またはライト動作
を示す信号、命令リード動作を示す信号(CPUステー
タス信号)、エミュレーションバスに与えられるアドレ
スやデータさらには制御信号を逐次蓄える。
【0467】前記エミュレーションメモリ421、ブレ
ーク制御回路422、リアルタイムトレース回路423
はコントロールバス424にも接続され、コントロール
バス424を介してコントロールプロセッサ425の制
御を受けるようになっている。前記コントロールバス4
24は、前記コントロールプロセッサ425に接続され
るとともに、ホストインタフェース回路426を介し
て、特に制限はされないものの、前記パーソナルコンピ
ュータなどのシステム開発装置427に接続される。
【0468】例えば、システム開発装置427から入力
されたプログラム(ロードモジュール)をエミュレーシ
ョンメモリ421のユーザプログラム格納領域に転送
し、内蔵ROM上に配置されるべきかかるプログラムを
CPU2がリードすると、エミュレーションメモリ42
1上のプログラムがリードされ、実行される。また、ブ
レーク条件や、リアルタイムトレース条件などもシステ
ム開発装置427から与えることができる。
【0469】コントロールプロセッサ425は、応用シ
ステム412で本来使用するCPUの種類の選択を行う
ためのプログラムを、エミュレーションメモリ421の
エミュレーションプログラム格納領域に格納する。CP
U2は、かかるプログラムを、所定の条件でブレークし
た状態で、実行し、エミュレーションインタフェース4
42内の制御レジスタ449の設定を行なうことで、エ
ミュレーション上の必要な設定を行なう。この場合は、
エミュレーション用プログラムの実行モード、いわゆる
ブレークモードでのみライト可能にすると都合がよい。
開発途上にあるユーザのソフトウェアの誤動作によっ
て、誤った設定を行なってしまうことを抑止できる。ま
た、制御レジスタを用いることによって、応用システム
412で本来使用するCPUの種類の選択対象が増えた
りしても、制御レジスタの構成のみを変更すればよく、
エミュレーション用インタフェースを変更する必要がな
く、エミュレータのハードウェアを変更しなくてよい。
【0470】エミュレーション用プロセッサ410およ
びエミュレータを複数のCPUをサポート可能にするこ
とによって、実際のマイクロコンピュータのみを開発す
ればよく、開発効率を向上することができる。
【0471】エミュレータにおいても、前記同様に、C
PUの種類を選択可能にする。選択方法は、パーソナル
コンピュータなどのシステム開発装置上で、図42と同
様に、行なえばよい。選択された内容は、コントロール
プロセッサ425を介して、所定のプログラムとして、
エミュレーションメモリ421のエミュレーションプロ
グラム格納領域に格納され、CPU2は、かかるプログ
ラムを実行し、エミュレーションインタフェース内の制
御レジスタの設定を行なうことで、前記選択が実行され
る。
【0472】このとき、同時に、シングルチップマイク
ロコンピュータの動作モードなどを同時に指定してもよ
い。シングルチップマイクロコンピュータの動作モード
は、例えば、シングルチップモード、内蔵ROM有効拡
張モード、内蔵ROM無効拡張モードなどがあり、これ
に、CPU2の動作モードを組合せて指定することがで
きる。また、汎用レジスタの表示方法も合わせて選択す
るようにしてもよい。トレースリスト上などの逆アセン
ブル時に、ER0と表示するか、EAXと表示するかな
どを切り替えるようにする。
【0473】応用システム412で本来使用するCPU
の種類を指定可能にすることにより、同一のエミュレー
ション用プロセッサ乃至同一のエミュレータを以って、
内蔵機能モジュールや内蔵メモリの容量の組合せなど
で、多数の種類のシングルチップマイクロコンピュータ
をエミュレーションできる。エミュレーション用プロセ
ッサ乃至エミュレータの開発後でも、内蔵している機能
の組合せで実現できれば、エミュレーション用プロセッ
サ乃至エミュレータの開発を行なうことなく、応用分野
などの動向に合わせた、シングルチップマイクロコンピ
ュータのみを開発していくことができる。開発効率を向
上することができる。
【0474】エミュレータに占めるエミュレーション用
プロセッサの費用は、少ないから、エミュレーション用
プロセッサにはなるべく多くの機能モジュールなどを内
蔵しておけばよい。
【0475】図46には本発明に係るCPUのためのエ
ミュレータによるトレースリストを例示する。
【0476】トレースリストは、行番号(BP)、アド
レスバス(AB)、データバス(DB)、アドレスデコ
ード(MA)、リード/ライト(R/W)、ステータス
(ST)、割込み信号(NMI、IRQ)を表示すると
ともに、実行した命令のアセンブリ言語によるリストを
示す。これは、データバスの状態と、図示はされないC
PU命令実行状態信号を解析して、逆アセンブラが表示
する。なお、行番号は、トレースリストの最後は0にな
る。また、アドレスデコード(MA)のROMは内蔵R
OMへのアクセス、リード/ライト(R/W)のRはリ
ードサイクル、ステータス(ST)のPRGは命令を示
す。
【0477】更に、(a)で示されている、LIR、L
ID信号は、エミュレーション用インタフェースに含ま
れている、命令解析用の信号のトレース結果である。通
常、かかる信号は、トレースリスト上には表示されない
が、トレースメモリには格納され、逆アセンブラなどの
解析に用いられる。また、使用者には、通常公開されな
いコマンドなどによって、表示することができる。
【0478】LIR信号は当該バスサイクルが、命令リ
ードであることを示す。LID信号は命令実行開始を示
す。
【0479】例えば、200行目は、100番地から、
命令リードを行い、命令コードH’7A07を読み出し
たことを示す。199、198行目と合わせて、MO
V.L#FFFFFF0E:32,ER7を実行したこ
とが表示されている。逆アセンブラは、LID信号で命
令の第1ワードを判定して、H’7A07FFFFFF
0Eを、前記MOV.L #FFFFFF0E:32,
ER7と解釈して表示するものである。
【0480】下位CPUのエミュレーション時に、逆ア
センブラは、上位CPUは持つが、下位CPUが持たな
い命令を実行すると、未定義の命令として、表示する。
未定義の命令として表示する場合は、データとして、命
令コードを表示する。
【0481】図46では、上位CPUの“MOV.L
ER0,@ER1”に相当する命令コードを、80、7
9行目で、200番地から、命令リードを行い、第2の
下位CPUで未定義の命令(DATA.L H’010
06990)として表示する例が示されている。
【0482】図47には本発明を適用したマイクロコン
ピュータのエミュレーション用プロセッサのブロック図
を示す。
【0483】エミュレーション用プロセッサ410は、
図2のシングルチップマイクロコンピュータ1の部分
(マイクロコンピュータコア441)と、エミュレーシ
ョンインタフェース442から構成される。なお、図2
のタイマや入出力ポートなどは、I/Oとして代表さ
せ、また、内部バスの詳細とバスコントローラを図示し
ている。なお、図2のタイマ6,7や入出力ポート11
〜19などは、I/O443、ユーザバッファ(ユーザ
BUF)444として代表させ、また、図2ではその詳
細な図示を省略した内部バスIDB,IAB,PDB,
PABの詳細とバスコントローラ(BSC)445を図
示している。ユーザインタフェース446は前記I/O
443、ユーザバッファ444、及び図示を省略する入
出力バッファなどを含む、ユーザシステム(エミュレー
ション対象システムであるターゲットシステム)に接続
されるインタフェース回路を総称する。
【0484】マイクロコンピュータコア441は、図2
のマイクロコンピュータ1に対して未定義命令検出回路
448が追加されている。エミュレーションインタフェ
ース440は、制御レジスタ449を含む。制御レジス
タ449は、ブレークモードでのみライト可能とされ
る。エミュレーションインタフェース440から入出力
される信号は、アドレスバス、データバス、リード信
号、ライト信号、データサイズ信号、命令フェッチ信号
などバスの状態を表示するバスステータス信号、命令の
実行開始を示す信号、割込み処理の実行開始を示す信号
などのCPU2の実行状態を示すCPUステータス信
号、などを含み、エミュレータによる、マイクロコンピ
ュータの動作解析に使用される。
【0485】未定義命令検出回路448は、CPU2に
入力される命令コードを解析し、選択されているCPU
2に存在しない命令が実行を開始したことを検出する
と、CPU2にブレーク割込みを要求する。CPU2に
何れの機能が選択されるかは、制御レジスタ449から
指示される。例えば、第1の下位CPUが選択されてい
る場合には、レジスタグループフィールドを持つ前置命
令コードを実行すると、未定義命令として検出される。
具体的には、命令コードを前記LIR信号でラッチし
て、解析し、未定義と解読された場合、前記LID信号
が発生した時点で、ブレーク割込みを要求するようにす
ればよく、容易である。
【0486】エミュレーション用プロセッサ410は、
前記の通り、上位CPU2(CPU−U)を内蔵して、
これを用いて、サブセットの機能を持つ、第1の下位C
PU、第2の下位CPUの代行をさせる。これによっ
て、下位CPUにエミュレーション用の機能を持たせる
必要がなく、開発効率を向上したり、下位CPUは、エ
ミュレーション用の論理回路を含む必要がなく、論理的
規模を縮小したりできる。上位CPU2についても、未
定義命令検出回路448を独立した機能ブロックとして
持つことにより、CPU2を変更する必要がなく、開発
効率を損なうことはない。
【0487】いずれにせよ、エミュレーション用インタ
フェースを共通化しておけば、CPU乃至そのほかの機
能ブロックが変更になった場合にも、エミュレータ側の
ハードウェアの変更をする必要がなく、エミュレーショ
ン用プロセッサ410のみを変更して、命令の動作を解
析して表示する際の逆アセンブラに、いずれのCPUを
対象にするかを指示すればよい。逆アセンブラに対する
指示は、使用者がシステム開発装置から指定することも
できるし、アセンブラからの入力情報によって、自動的
に選択されるようなものであってもよい。これによって
エミュレータの開発効率を向上し、逸早くエミュレータ
の開発環境を提供することができる。
【0488】図48には第2の下位CPUの別のプログ
ラミングモデルが示される。このプログラミングモデル
においても、汎用レジスタの総ビット数は同等としてい
るが、汎用レジスタのみ4本としている。汎用レジスタ
の機能自体は、前記同様である。前記図5と同様に、R
0、R1、R2、R3をAX、BX、CX、DXなどと
表記できるようにしている。また、PCは24ビットで
同等である。図示はされないものの、レジスタ直接やイ
ミディエイトも含めて、ロングワードサイズのデータは
扱わないようにする。汎用レジスタを16ビット構成に
することにより、算術論理演算器ALUなど、CPUの
実効部の構成を、プログラムカウンタPCとインクリメ
ンタを除いて、16ビット構成にでき、論理的規模を更
に縮小できる。
【0489】図49にはCPUのアドレスマップの別の
例が示される。第2の下位CPUのアドレスマップは、
マキシマムモードに相当する16MBのアドレス空間を
持つ。データアクセス時は実効アドレスを16ビットで
生成し、0〜H’7FFF及びH’FF8000〜H’
FFFFFFを指定する。従って、RAMと内部I/O
レジスタを合わせて32kBまで、及びROMを32k
Bまで指定できる。前記の通り、RAMと内部I/Oレ
ジスタを合わせて32kBの容量は、内蔵された機能モ
ジュールのみで動作する、シングルチップマイクロコン
ピュータ乃至はマイクロコンピュータシステムでは十分
な容量といえる。
【0490】データアクセス時で指定できるROMのア
ドレスが限定されてしまうが、前記の通り、ROMに割
り当てる定数などについては、Cコンパイラなどで記述
した場合も、モジュール間最適化で、再配置することが
できる。
【0491】プログラムカウンタPCは24ビット構成
であり、命令リード時は、24ビットでアドレスを生成
し、16MBのアドレス空間を利用できる。分岐命令に
ついて、プログラムカウンタ相対と、メモリ間接または
絶対アドレス24ビットを実行可能にするとよい。分岐
命令は、レジスタフィールドを持たないから、2ワード
の命令長で、絶対アドレス24ビットを持つことは可能
である。16MBのアドレス空間を連続したものとし
て、ソフトウェアの負荷なく、利用できる。
【0492】また、例外処理時のベクタは24ビット
(メモリ上は32ビットとされ、上位8ビットは無視さ
れる)、サブルーチン分岐などにおいて待避/復帰され
るプログラムカウンタPCも24ビットとされる。
【0493】一方、上位CPUについても、準マキシマ
ムモードを追加し、マキシマムモードに相当するアドレ
スマップを持つ第2の下位CPUと同等の動作を行なう
ことができるようにしている。
【0494】図50及び図51には図49に示される第
2の下位CPUのアドレスマップにおける実効アドレス
の計算方法が例示されている。
【0495】実効アドレスの計算方法は、図7、図8と
ほぼ同様であるが、データアクセス時には、全て、実効
アドレスは16ビットで計算した上で、上位8ビットを
符号拡張して、0〜H’7FFF及びH’FF8000
〜H’FFFFFFを指定する。
【0496】プログラムカウンタ相対は、分岐命令に使
用し、前記同様に24ビットで計算する。また、図示は
されないものの、分岐命令に、メモリ間接または絶対ア
ドレス24ビットが使用可能な場合は、24ビットで実
効アドレスを計算する。
【0497】上位CPUの、前記準マキシマムモードに
おいては、図49に第2の下位CPUのアドレスマップ
と同様にする。実際には、実効アドレスの計算自体は図
7、図8と同様にしておき、ポストインクリメント/プ
リデクリメントレジスタ間接の汎用レジスタEへの書込
みを抑止するとともに、実効アドレスを利用する際に、
上位8ビットを符号拡張すればよい。個別のアドレッシ
ングモードによらず、統一的な制御を可能にして、論理
的規模を縮小できる。一方、実効アドレスの計算には、
仕様上、汎用レジスタRのみを使用することになるか
ら、汎用レジスタEをデータ用に使用でき、実質的に汎
用レジスタを増加させたことになる。
【0498】第2の下位CPUの場合には、上位CPU
に比較して、汎用レジスタ本数が限定されているから、
プログラム用のアドレス空間を縮小せず、実質的に汎用
レジスタを増加させるメリットが相対的に大きい。
【0499】以上説明した第1の下位CPU及び第2の
下位CPUと共に上位CPU2を提供することにより、
以下の作用効果を得る。
【0500】〔1−1〕異なる命令セットを持つ複数の
CPUが、それぞれ論理的規模を縮小しつつ、それぞれ
固有の特徴を以って、応用分野乃至使用者の多様な要求
に応えることを可能にする。
【0501】〔1−2〕下位CPUのレジスタ構成、命
令セット、並びに下位CPUの命令実行機能を包含する
ことにより、下位CPUのために開発されたプログラム
は、少なくとも、ソースプログラムのレベルで上位CP
Uに利用可能になり、少なくとも、ソースプログラムレ
ベルでの上位互換を実現することができる。
【0502】〔1−3〕有効なアドレスのビット数と、
ベクタ及びスタックの単位サイズとを切り替える動作モ
ードを予め用意しておくことにより、オブジェクトプロ
グラムレベルでの上位互換も簡単に実現できるようにな
る。
【0503】〔1−4〕第1、第2の下位CPUの双方
に対して、ソースプログラムレベルまたはオブジェクト
プログラムレベルでの上位互換を実現した、上位CPU
を提供することにより、第1、第2の下位CPUのそれ
ぞれの上位互換のCPUを開発することに比較して、開
発効率を向上できる。更に、機能乃至性能を向上する場
合にも、上位CPUに対する互換性を維持すれば、自ず
から、第1、第2の下位CPUに対しても上位互換を維
持できるから、将来拡張性を維持できるし、また開発効
率も向上することができる。例えば、上位CPUについ
て、内部データバスを32ビット化するなどして高速化
できれば、第1、第2の下位CPUのソフトウェア資産
を有効に利用しつつ、高速化を享受できることになる。
【0504】〔1−5〕内部構成を共通化することによ
って、第1の下位CPUの上位互換で、上位CPUの下
位互換となるようなCPU、或いは、第2の下位CPU
に、更に下位互換のCPUなど、種々の互換性のあるC
PUを提供することが容易にできる。
【0505】〔1−6〕第2の下位CPUの命令セット
を上位CPUのサブセットとし、削除した命令セットに
対応する論理回路などを、上位CPUから削除して、第
2の下位CPUを開発することにより、開発効率を向上
することができる。
【0506】〔1−7〕第1の下位CPUに対して、上
位CPUで追加された命令セットの部分の一部を、第2
の下位CPUで継承することによって、第1、第2の下
位CPUを互いに包含しない命令セットにして、総体的
に、多様な要求に応えることができる。
【0507】〔1−8〕ソースプログラムレベルまたは
オブジェクトプログラムレベルでの上位互換を実現する
ことによって、ソフトウェア資産を有効に利用すること
ができ、使用者のソフトウェア開発効率を向上すること
ができる。
【0508】〔1−9〕異なる命令セットを持つ複数の
CPUを含めて、ソフトウェア開発装置を共通に利用可
能にし、CPUを選択する手段を設けることによって、
ソフトウェア開発費用を減少させることができる。ま
た、アセンブラなどは上位CPUについて開発して、そ
のほかのCPUについては、未定義の命令を検出すれば
よいから、ソフトウェア開発装置の開発効率を向上する
ことができる。開発効率を向上することによって、開発
に必要な資源を削減し、削減した資源を以って、機能向
上の頻度を高めることも可能になる。
【0509】〔1−10〕ソフトウェア開発装置及び、
アセンブリ言語での記述フォーマットを、第1、第2の
下位CPUで共通に利用可能にし、第1、第2の下位C
PU間でのソフトウェア資産の移植を、比較的容易にす
ることができる。いずれかの下位CPUを使用すること
により、上位のCPUに移行するほど費用を増加させな
い。
【0510】〔1−11〕ソフトウェア開発装置上の、
汎用的な機能のみを有する汎用レジスタの記述を複数使
用可能にすることにより、他のCPUからのプログラム
の移植を、比較的容易に行なうことができる。
【0511】〔1−12〕複数のCPUに対応させてエ
ミュレーション用プロセッサのエミュレーション用イン
タフェースを共通化することにより、同じエミュレータ
のハードウェアを共有できる。エミュレーション用イン
タフェースを共通化したり、エミュレータのハードウェ
アを共通化することによって、逸早く開発環境を整える
ことができ、また、エミュレータの開発に必要な資源を
最小限にすることができる。
【0512】〔1−13〕上位CPUに対するエミュレ
ーション用論理を持ち、かかる上位CPUに対するエミ
ュレーション用論理を以って、第1、第2の下位CPU
のエミュレーション用プロセッサを構成することがで
き、エミュレーション用プロセッサの開発効率を向上す
ることができる。
【0513】以上説明した上位CPU2によれば以下の
作用効果を得る。
【0514】〔2−1〕レジスタ拡張用前置命令コード
で、レジスタグループを指定し、このレジスタ拡張用前
置命令コードを省略可能とし、更にはレジスタ拡張用前
置命令コードを付加しない場合の命令コードを既存のC
PUの命令コードと同一とすることにより、互換性を損
なわずに、汎用レジスタを増加させることができる。ソ
フトウェア資産を有効に利用可能とするとともに、使い
勝手を向上し、処理速度を向上することができる。レジ
スタ拡張用前置命令コードを用いることにより、全ての
汎用レジスタは同時に指定可能であるから、汎用レジス
タ上のデータの配置などを考慮する必要がなく、プログ
ラムの作成を容易にすることができる。
【0515】〔2−2〕グループ指定フィールドを既存
の命令コードの前に配置することにより、汎用レジスタ
を使用する全ての命令について、汎用レジスタを増加さ
せることができる。この指定方法を共通化することによ
り、必要な論理的物理的規模の増加を抑止し、ひいては
製造費用の増加も抑止することができる。既存の論理と
大部分を共通にできるから、設計資産を有効に利用し
て、設計品質を向上したり、開発期間を短縮したりでき
る。また、互換性を保った、アドレス空間の広いCPU
と狭いCPUがある場合、双方に、互換性を維持しつつ
汎用レスタを追加することも可能である。
【0516】〔2−3〕下位CPUにおける既存のレジ
スタグループを指定するものに相当するオペレーション
コード(レジスタ拡張用前置命令コード)を、NOP
(ノーオペレーション)命令と同一にすることにより、
オペレーションコードマップを有効に利用するととも
に、論理構成を共通化し、論理的規模の増加を抑止する
ことができる。
【0517】〔2−4〕グループ指定フィールドに余裕
を持たせることにより、半導体製造プロセスの進展など
に対応して、互換性を維持しつつ、汎用レジスタを増加
させることができる。使い勝手を更に向上し、処理速度
を向上することができる。方式的には同一にできるの
で、開発効率を向上することができる。また、アセンブ
ラやCコンパイラ、シミュレータ、逆アセンブラなどの
ソフトウェアツールなどを、前記拡張を考慮して設計し
ておく、乃至、予め、前記拡張に対応させておくことに
より、開発効率を向上することができる。
【0518】〔2−5〕CPUCRのような制御レジス
タを設けて、これによって暗黙的に使用されるスタック
ポインタなどのグループを指定することにより、スタッ
クポインタを変更可能になり、スタックの再配置などを
容易に行ことができる。レジスタ拡張用前置命令コード
を付加できない割込例外処理についても、スタックポイ
ンタを変更することができる。サブルーチン分岐と割込
みなどの例外処理のスタックポインタを分離することが
できる。サブルーチン用のスタック領域と、割込用のス
タック領域とを別に持つことができる。これによって、
サブルーチン分岐などで実現される各タスクが、予期し
得ない割込み例外処理に対応するためにスタックを確保
する必要がなくなり、スタックの使用量を抑止すること
ができる。
【0519】〔2−6〕上位CPUは、第1の下位CP
Uに既存の、転送命令コード、演算命令コードを命令拡
張用前置命令コードと共に組合せて1命令として実行
し、前記各命令コード単独では既存の動作を行なうか
ら、既存の命令実行を阻害することがない。また、第1
の下位CPUで作成した、既存の命令のみを使用した既
存のソフトウェア資産をそのまま利用できる。換言すれ
ば、第1の下位CPUとの互換性を損なわずに、メモリ
上のデータに対する直接的な演算を可能とすることがで
きる。メモリとレジスタ間の演算のみならず、メモリ間
の直接的なデータ転送を可能とすることができる。ソフ
トウェア資産を有効に利用可能とするとともに、不所望
な汎用レジスタの待避/復帰動作などを抑止して、使い
勝手を向上するとともに、プログラム容量を縮小し、処
理速度を向上することができる。プログラム容量を縮小
することによって、ひいては、プログラム格納用のRO
Mなどのメモリ容量を縮小し、費用を節約することがで
きる。
【0520】〔2−7〕第1の下位CPUに既存の、転
送命令の命令コード、演算命令の命令コードを命令拡張
用前置命令コードと共に組合せて、動作するから、命令
デコーダの、従来の設計資産を有効に利用することがで
き、論理的な規模の追加と変更を最小限にし、論理的・
物理的規模の増大を最小限にできる。また、開発に必要
な期間を短縮し、資源を節約することができる。既存の
データアクセスのためのアドレッシングモードを全てサ
ポートできるから、任意のアドレッシングモードの組合
せを可能にして、プログラムの作成を容易にすることが
できる。
【0521】〔2−8〕第1の下位CPUの命令セット
に追加する命令コードをレジスタ拡張用及び命令拡張用
前置命令コードに止めることができるから、命令セット
の変更を最小限にして上位CPU2の命令セットを構成
することができる。
【0522】〔2−9〕デスティネーションがメモリで
ある場合に、デスティネーションデータのリード時の実
効アドレスをテンポラリレジスタに確保し、演算結果の
デスティネーションデータのライト時の実効アドレスの
計算を不要にし、直ちにライト動作を実行可能にして、
実行時間を短縮することができる。また、デスティネー
ションデータのライトを行なう命令コードを、CPU内
部で自動的に生成し、命令長を短縮するとともに、かか
る命令コードに、データサイズを指示することによっ
て、必要な命令コードを節約し、かかる命令コードを転
送命令の動作と類似にすることによって、設計を容易に
し、制御回路の論理規模を縮小することができる。比較
命令のように、デスティネーションデータのライト動作
を必要としない命令においては、ライトサイクルを空き
サイクルとすることによって、他の命令との動作を共通
化し、設計を容易にし、制御回路の論理規模を縮小する
ことができる。設計を容易にすることによって、ひいて
は、開発期間を短縮することができる。
【0523】〔2−10〕命令拡張用前置命令コード
と、メモリをリードする転送命令の命令コードと、メモ
リに対する転送命令の命令コードを組合せることによっ
て、メモリ・メモリ間の転送を実現できる。
【0524】〔2−11〕イミディエイトデータの転送
命令の命令コードと、メモリに対する転送命令の命令コ
ードを組合せることによって、イミディエイト・メモリ
間の転送を実現できる。
【0525】〔2−12〕命令拡張用前置命令コードに
他の情報を含めることによって、命令コード長を短縮
し、実行時間を短縮することができる。例えば、既存の
CPUにおいて、メモリに対する演算以外の指示を行な
う前置命令コードと演算コードとを組合せて実現されて
いる命令が存在する場合、前記メモリに対する演算以外
の指示を、前記メモリに対する演算を指示する命令拡張
用前置命令コードに含めることによって、命令コード長
を短縮し、実行時間を短縮することができる。
【0526】〔2−13〕既存の命令を組合せ、新規の
命令機能を実現しているので、既存のCPUと比較し
て、将来拡張余裕を同等程度に保持することができる。
例えば、既存のCPUに対して、更なる命令セットの拡
張や更なる高速化が可能になった場合には、かかる技術
を、本発明を適用したCPUにも用いることができる。
新規の命令機能を実現している、既存の命令に、前記技
術を用い、これを組合せて、前記新規の命令機能を実現
することができる。
【0527】以上説明した第2の下位CPUによれば以
下の作用効果を得る。
【0528】〔3−1〕第2の下位CPUにおいて、ア
ドレス空間とプログラムカウンタを上位CPUと同等に
し、プログラムの大容量化に応えるとともに、比較的小
規模なデータを扱える程度に、データ転送のアドレッシ
ングモードを縮小したり、転送データのデータサイズを
限定したりして、所望の応用分野などでの使い勝手を損
なわずに、CPUの論理的規模を縮小できる。
【0529】〔3−2〕データアクセス時に使用できる
アドレス空間を小さくすることによって、更に論理的な
規模を縮小できる。また、データアクセス時に使用でき
るアドレス空間を2つに分割することによって、使い勝
手を損なわずに、上位CPUとのアドレス空間上の互換
性を維持するとともに、上位CPUに実効アドレス計算
方法などを切り替える動作モードを予め用意しておくこ
とにより、ソフトウェア上の互換性を維持することがで
きる。
【0530】〔3−3〕プログラム用のアドレス空間
を、上位CPUと同等に、大きくしていることにより、
C言語などの高級言語を使用したプログラミングなどに
対する適性を向上できる。また、スタックポインタを切
替え可能にすることによって、OSなどのタスク管理時
のスタックの容量の不所望な増加を抑止できる。
【0531】〔3−4〕データアクセス用の実効アドレ
スの計算を、アドレス空間に対応するビット長より、短
いビット長(16ビット)で行い、符号拡張して実効ア
ドレスを得ることによって、汎用レジスタの上位側(汎
用レジスタE)をデータレジスタとして使用可能にし、
実質的に汎用レジスタ数を増加させることができる。
【0532】前記検討課題A乃至Cの解決手段に関する
発明の具体例について説明したが、本発明はそれに限定
されるものではなく、その要旨を逸脱しない範囲におい
て種々変更可能であることは言うまでもない。
【0533】例えば、対象になるCPUは、上位CP
U、第1、第2の下位CPUに限定されない。第1の下
位CPUの上位互換で、上位CPUの下位互換となるよ
うなCPUが存在してもよい。或いは、第2の下位CP
Uに、更に下位互換のCPUが存在してもよい。第2の
下位CPUの2つの実施例は、排他的なものではなく、
同時に存在してもよい。そのほか、種々の互換性のある
CPUを提供することができる。
【0534】レジスタ構成(プログラミングモデル)、
即ち、汎用レジスタのビット数あるいはレジスタの本数
などは任意に選択することもできる。アドレッシングモ
ードと実効アドレスの計算方法についても種々変更可能
である。 CPUの具体的な論理回路例などについても
限定されない。EA1コードなどは転送命令コードと全
く同じでなくてもよい。少なくともCPU内部の実行に
おいて同等の動作をすればよい。前置コードに従って転
送命令コードの一部のビットの意味を変更してEA1コ
ードとしたりすることができる。汎用レジスタは、アド
レス及びデータに共通に利用可能なものである必要はな
く、一部または全部がアドレス専用またはデータ専用の
ものであってもよい。
【0535】前置命令コードの種類は特に限定はされな
い。命令拡張用前置命令コードは、転送命令と演算命令
を組合せる情報や、転送命令と転送命令を組み合わせる
情報以外の別の制御情報を含んでもよい。例えば、デー
タサイズを指示する情報を含んでもよい。また、命令コ
ードの基本単位16ビットに限定する必要はなく、8ビ
ット或いは32ビットなど任意のビット幅とできる。命
令コードの組合せについては、命令拡張用前置命令コー
ド、第1のリード型転送命令コード、第2のリード型転
送命令コード、演算命令コード、ライト型転送命令コー
ドを組合せて、メモリ上の相異なる2つのアドレスのデ
ータを入力して、演算し、結果を、ライト型転送命令コ
ードで指定する別のメモリのアドレスに格納するように
することもできる。第1、第2のリード型転送命令コー
ドを省略して、汎用レジスタ上のデータを入力とするこ
ともできる。命令拡張用前置命令コード、第1のリード
型転送命令コード、第2のリード型転送命令コードを組
み合せて、第1のリード型転送命令コードでリードした
データを、第2のリード型転送命令コードのアドレス計
算に用いるようにすることもできる。
【0536】また、グループ0の汎用レジスタのみを、
メモリ上のデータに対する演算命令に使用可能としても
よい。シングルチップマイクロコンピュータのその他の
機能ブロックについても何等制約されない。
【0537】《検討課題Dの解決手段に関する実施の形
態》次に、前記検討課題Dの解決手段に関する発明の具
体例を説明する。ここで説明するマイクロコンピュータ
は、特に制限されないが、図53に例示されるCPU2
Aを有する。マイクロコンピュータのモジュール構成
は、特に制限されないが図2と同様である。CPU2A
は図3のレジスタ構成を有し、CPU2Aのアドレス空
間は図6と同様であり、CPU2Aによる実効アドレス
の演算手法は図7及び図8に示される通りである。CP
U2Aの機械語の命令フォーマットは図9に準拠する。
【0538】図54にはCPU2Aのビットテスト命令
の命令フォーマットが例示される。ビットテスト命令
は、汎用レジスタ上またはアドレス空間上のデータの所
定のビットを検査して、検査結果をCCRのZフラグに
反映するものである。
【0539】ビットテスト命令において、汎用レジスタ
上のデータは、図54の(5)に例示されるように、レ
ジスタ直接で指定される。この時のビットテスト命令
は、オペレーションフィード(op)とレジスタフィー
ルド(r)及び、ビット番号を指定するビットフィール
ド(n)を有する命令コードとなる。
【0540】ビットテスト命令において、汎アドレス空
間上のデータの指定は、図54の(1)、(2)、
(3)、(4)に例示されるように、絶対アドレス8ビ
ット、16ビット、32ビット、及びレジスタ間接を使
用することができる。即ち、絶対アドレスの場合はオペ
レーションフィールド(op)とEA拡張部(EA)を
持つワード、レジスタ間接の場合はオペレーションフィ
ード(op)とレジスタフィールド(r)を持つワード
を有し、これに、前記レジスタ直接のビットテスト命令
に相当するワードが続く、命令フォーマットを有する。
【0541】図55乃至図57にはCPU2Aのアドレ
ス空間上からデータを読み込んで、前記データの所定の
ビットの状態に応じた処理を行う複合命令の命令フォー
マットとして、アドレス空間上のデータの所定ビットに
対する条件分岐命令(ビット条件分岐命令)の命令フォ
ーマットを示す。ここで示す命令フォーマットは命令拡
張用前置命令コードを用いる後述の例とは異なる例であ
る。尚、単独の条件分岐命令ではコンディションコード
フィールド(cc)が分岐条件を指定する。複合命令と
して分岐命令が組み込まれたビット条件分岐命令におい
て分岐条件はビットコンディションフィールド(bc)
で指定されることになる。
【0542】アドレス空間上のデータの指定は、図55
乃至図57に示されるように、絶対アドレス8ビット、
16ビット、32ビット、及びレジスタ間接を使用する
ことができる。これは前記ビットテスト命令の場合のデ
ータ指定のための命令コード(ワード)と完全同一では
ないが共通のコードを有する。即ち、データ指定のため
の命令コードは、例えば“MOVE命令”のようなデー
タ転送命令であり、命令コード中に単数又は複数の余剰
ビットが存在し、その余剰ビットに適当な情報を設定し
ても、命令セット上でその他の命令コードと区別がつく
ようになっている。このようなデータ指定のための命令
コードは、メモリ空間上で参照したデータをプログラム
上解放されていないレジスタ例えばテンポラリデータレ
ジスタTRDにロードする。
【0543】前記データ指定のための命令コードの後ろ
には、前記レジスタ直接のビットテスト命令に相当する
命令ワードに代えて、条件分岐命令、サブルーチン分岐
命令に相当するワードが続くことである。分岐アドレス
の指定は、ディスプレースメント8ビット、16ビット
のプログラムカウンタ相対を使用することができる。こ
れは、既存の条件分岐命令と共通の命令コードであり、
コンディションフィールド(cc)が、ビットコンディ
ションフィールド(bc)となっている。更に、サブル
ーチン分岐は、ディスプレースメント16ビットのプロ
グラムカウンタ相対のみを使用することができるように
している。
【0544】尚、前記アドレス空間の小さい、若しくは
下位のCPUにおいて、ビットテスト命令に絶対アドレ
ス32ビットがなかった場合には可能な範囲の組合せの
みを持つようにすればよい。
【0545】ビットコンディションフィールド(bc)
は、下位3ビットbc[2:0]が前記テンポラリデー
タレジスタTRDのビット番号を、上位1ビットbc
[3]が分岐条件(セット/クリア)を指定する。即
ち、ビット条件分岐命令の最初の命令コードによりアド
レス空間上で参照されて前記テンポラリデータレジスタ
TRDにロードされたデータに対するビット番号が下位
3ビットbc[2:0]で指定され、指定されたビット
番号の値の真値(True)を前記上位1ビットbc
[3]が指定し、参照値が真値であるとき分岐を指示す
るように作用される。
【0546】図55乃至図57の複合命令としてのビッ
ト条件分岐命令によれば、アドレスaaのビットnが1
にセットされている場合に分岐する命令は、BBS #
n,@aa,dと記述すればよく、アドレスaaのビッ
トnが0にクリアされている場合に分岐する命令は、B
BC #n,@aa,dと記述すればよく、アドレスa
aのビットnが1にセットされている場合にサブルーチ
ン分岐する命令は、BSSR #n,@aa,dと記述
すればよく、アドレスaaのビットnが0にクリアされ
ている場合にサブルーチン分岐する命令は、BCSR
#n,@aa,dと記述すればよい。前記の通り、n=
bc[2:0]である。ディスプレースメントdは、ア
センブリ言語においてはラベルを記述すればよく、相対
値の計算はアセンブラが行なう。
【0547】前記ビット条件分岐命令をサポートしない
CPUでは、例えばBBS #n,@aa,dは、 BTST #n,@aa BNE d のように、ビットテスト命令(BTST)とその命令の
実行結果に応じて分岐する命令(BNT)とを記述する
必要があった。また、BSSR #n,@aa,dは、
例えば、 BTST #n,@aa BEQ NEXT BSR d NEXT: のように、ビットテスト命令(BTST)と、その命令
の実行結果に応じて分岐する命令(BEQ)と、PC相
対によるサブルーチン分岐命令(BSR)とを記述する
必要があった。ビットテスト命令に代えてビット転送命
令(BLD)とその命令の実行結果に応じて分岐する命
令(BCSまたはBCC)を用いても同じである。
【0548】図55乃至図57に示されるビット条件分
岐命令では、アドレス空間所で参照されたデータが汎用
レジスタではなくテンポラリデータレジスタTRDにロ
ードされ、その所定ビットの値に応じて分岐の可否を制
御する事ができる。したがって、当該命令コードは1ワ
ード、実行ステート数は1ステートの短縮が可能であ
る。また、ビット条件サブルーチン分岐命令では、命令
コードは2ワード、実行ステート数は3ステートの短縮
が可能である。
【0549】前記の通り、機器制御の場合には、これら
の条件分岐命令が組合せて(ツリー状に構成して)、多
数の分岐条件の中から分岐先を判定することが多いか
ら、上記短縮効果は全体的には、更に大きくなる。
【0550】図58にはCPU2Aにおけるビット条件
分岐命令を考慮したときの別の命令フォーマットにおけ
る命令コードの組み合わせが例示される。ここに示す例
は、図55乃至図57で説明した命令フォーマットの命
令による機能を命令拡張用前置命令コードを用いて実現
する例である。即ち、アドレス空間上のデータ指定に用
いる命令コードを前記ビットテスト命令の場合のデータ
指定のための命令コード(ワード)と同一とし、更にそ
のワードの前に、プリフィックスコードとして前置命令
コードを付加する事により、上記同様に、複合命令をテ
ンポラリデータレジスタTRD等を用いて単一命令とし
て実行可能にするものである。
【0551】図58は前記図12乃至図14と合わせれ
ば、前記図11乃至図14に基づいて説明した命令拡張
用前置命令コード及び転送命令と共に複合された前記直
接的な演算命令の命令フォーマットにおける命令コード
の組合せも含めて表現されることになる。尚、CPU2
Aのメモリに対する転送命令の例の命令フォーマットは
前記図11に基づいて説明した命令フォーマットと同じ
である。
【0552】図58の命令フォーマットにおいて、ビッ
ト条件分岐命令は、命令拡張用前置命令コード、EA1
コード、分岐コードを組合せ手実現される。図ではEA
2コードとの組合せも可能であるが、EA2コードはメ
モリアドレスをディスティネーションアドレスとするコ
ードを意味するから、実際には意味がない。
【0553】図58の命令フォーマットにおいて、複合
命令としてのビットテスト命令は、命令拡張用前置命令
コード、EA1コード、ビットテスト命令コードを組合
せて実現することができる。このときの、ビットテスト
命令コードは、汎用レジスタ上の所望のビットに対する
ビットテスト命令、即ち、図54の(5)の前記レジス
タ直接のアドレッシングモードに相当する命令コードと
する。また、所望のビットとキャリとの演算命令を備え
ているような場合には、ビットテスト命令と同様に実現
できる。図ではEA2コードとの組合せも可能である
が、上記同様に実際には意味がない。
【0554】図58の命令フォーマットにおいてはビッ
トセット命令の機能を拡張できる。単独のビットセット
命令は、指定されたデータの指定されたビットにセット
する命令である。図58の命令フォーマットにおいて、
複合命令としてのビットセット命令は、命令拡張用前置
命令コード、EA2コード、ビットテスト命令コードを
組合せる。このときの、ビットセット命令コードは、前
記同様に、汎用レジスタ上の所望のビットに対するビッ
トセット命令に相当する命令コードとする。図ではEA
1コードとの組合せも可能であるが、EA1コードはメ
モリアドレスをソースアドレスとするコードを意味する
から、実際には意味がない。
【0555】CPU2Aにおける前記命令拡張用前置命
令コード(制御コード)のフォーマットは前記図15に
基づいて説明したフォーマットと同じである。このフォ
ーマットに従えば、ソース側、デスティネーション側が
メモリである情報を示すビットを持っている。ビット条
件分岐命令、ビット操作命令の場合は、ソース側がメモ
リとなるように指定する。EA1とEA2の転送命令コ
ードは同一としているため、ソース側がメモリであれ
ば、デスティネーション側に拘らず、命令拡張用前置命
令コードに続くものが、EA1と判断される。一方、ソ
ース側が汎用レジスタとされ、デスティネーション側が
メモリであれば、EA2と判断される。図58の命令フ
ォーマットを有し1個の命令として実行されるとき、命
令コード間でのデータの受け渡しにはテンポラリデータ
レジスタTRDが利用されることについては図55乃至
図57で説明したのと同様である。
【0556】図58による命令コードの組み合わせによ
り、所望のビットの存在するアドレスを指定するため
に、転送命令と同等のアドレッシングモードを使用する
ことができる。当該命令セットの中で、任意のアドレッ
シングモードを使用できるから、プログラミングを容易
にすることができる。例えば、レジスタ直接、レジスタ
間接と絶対アドレスのみしか持たない既存のCPUに対
し、ディスプレースメント付きレジスタ間接、プリデク
リメント/ポストインクリメントレジスタ間接などを追
加することによって、複数のアドレスに存在するビット
を操作したり、参照したりする場合に、プログラムステ
ップ数を低減したり、処理速度を向上したりできる。こ
のとき、既存の、転送命令の命令コード、ビット操作命
令の命令コードを組合せて、動作するから、命令デコー
ダの、従来の設計資産を有効に利用することができ、論
理的な規模の追加と変更を最小限にし、論理的・物理的
規模の増大を最小限にできる。
【0557】ビット条件分岐命令については、図55乃
至図57のフォーマットのものと図58のフォーマット
のものとを揃えることができる。両方で同等の機能が実
現できる命令(データ及び分岐先のアドレッシングモー
ドの組合せ)については、命令コード長及び実行ステー
ト数の短い方を採用すればよい。
【0558】図53には前記CPU2Aの詳細な一例が
示される。図1のCPU2では特に図示はしなかった
が、コンディションコードレジスタCCRにはコンディ
ションフィールド(cc)の値が入力され、コンディシ
ョンコードレジスタCCRの所定のビットの値がコンデ
ィションフィールド(cc)の値に一致するか否かを判
定する判定回路(CMP)35が設けられ、これによる
判定結果を受けて分岐制御信号36を生成する分岐制御
論理(BRC)37が設けられている。
【0559】図55乃至図58の命令フォーマットで説
明した複合命令としてのビット条件分岐命令において、
テンポラリデータレジスタTRDにはビットコンディシ
ョンフィールド(bc)の値が入力され、これによって
指定されるビット位置の値が分岐条件に一致するか否か
を判定する判定回路(CMP)38が設けられ、これに
よる判定結果は前記分岐制御論理37に供給される。分
岐制御論理37は、制御信号MODSの論理値にしたが
って判定回路35又は判定回路38からの入力を有効と
する。即ち、複合命令としてのビット条件分岐命令を実
行してアドレス空間上からデータを参照するとき、命令
デコーダDECはMODS=1とし、MODS=1のと
きテンポラリレジスタライト信号TRDwrが有効にさ
れ、汎用レジスタに代えてテンポラリデータレジスタT
RDに参照データが書込まれる。命令デコーダDECは
前記複合命令以外のときはMODS=0とし、MODS
=0のとき汎用レジスタライト信号Rdwrが有効にさ
れ、汎用レジスタに書込まれる演算結果に応じてCCR
のフラグが操作される。前記分岐制御論理37はMOD
S=1のときテンポラリデータレジスタTRDの判定回
路38から出力される情報を採用し、其れに応じて分岐
制御を行う。MODS=0のとき、分岐制御回路37は
コンディションコードレジスタCCRの判定回路35か
ら出力される情報を採用して分岐制御を行う。
【0560】割り込み制御部INTCは、図55乃至図
58に示されるように、複数の命令コード(オペレーシ
ョンフィールドを持つワード)を一連のものとして実行
する場合には、それぞれの命令コードが割込みマスクを
指示して、所定の組合せの命令コードの実行が途切れな
いようにする。
【0561】算術演算器AUは、プログラムカウンタ相
対の分岐命令/サブルーチン分岐命令の分岐アドレスの
生成に使用する。具体的には、直前の命令リードに使用
したプログラムカウンタPCの出力を入力すると共に、
リードデータバッファRDBが保持するディスプレース
メントを入力して、それらの加算を行なう。8ビットデ
ィスプレースメントのプログラムカウンタ相対の分岐命
令/サブルーチン分岐命令の実行開始時には、分岐アド
レスが得られているようにする。
【0562】インクリメンタINCは、プログラムカウ
ンタPCのインクリメントに用いられる。前述の如く、
ビット条件分岐命令では、テンポラリデータレジスタT
RDと判定回路38を用いる。
【0563】尚、その他、図1と同一の機能を有する回
路ブロックには同じ符号を付してその詳細な説明は省略
する。
【0564】図59には前記テンポラリデータレジスタ
TRDの判定回路38の論理構成及び分岐制御論理37
を論理記述によって例示する。
【0565】図59の(5−1)の部分において、ビッ
トコンディションフィールド(bc)は、命令コードに
応じて、命令コードのビット11〜8、ビット7〜4の
何れかである。これを、制御信号bcc1で選択した結
果を、内部信号bc1とする。この内部信号bc1の、
最上位ビットbc1[3]はビットの状態(セット/ク
リア)を、下位ビットbc1[2:0]はビット番号を
指定する。
【0566】図59の(5−2)の部分では、bc1
[2:0]によるセレクタによって、TRDの所望のビ
ットが選択される(trdsel)。
【0567】図59の(5−3)の部分では、bc
[3]=0のときは、選択されたビットの反転が、bc
[3]=1のときは、選択されたビットがそのまま、出
力される(bout)。これがビット条件の判定結果で
ある。
【0568】図59の(5−4)の部分では、MODS
信号によって、既存の条件分岐命令のコンディションコ
ードCCRの判定結果(cout)と前記出力(bou
t)とが選択されて、分岐/非分岐の結果を得る(bc
out)。この結果が、1のとき分岐成立、0のとき分
岐不成立である。なお、特に制限はされないものの、分
岐条件判定信号(bcc1とbcc2の論理和)が活性
状態でないときには、1とするようにしている。
【0569】図60乃至図62にはビットテスト命令及
びビット条件分岐命令の一部(第1のワード)に対する
命令デコーダDECの論理構成が論理記述によって示さ
れる。デコーダDECの論理記述において、小文字の信
号は、命令デコーダDECで生成されて出力される信号
とし、大文字の信号は命令デコーダDECに入力された
信号とする。同図の論理記述は、8ビット絶対アドレス
によるデータリードを行ない、リードしたデータをテン
ポラリデータレジスタTRDに格納する場合を例示す
る。
【0570】図60の(6−1)の部分でステートコー
ドTMGが生成される。ステートコードTMGは1→2
と進行する。なお、NEXTTMG[5]=0のとき、
次のTMGはNEXTTMG[4:0]とされる。NE
XTTMG[5]=1のとき、次のTMGは5’b00
001とされる。
【0571】図60の第2の部分(6−2)ではバス制
御を行なう。nop=0はバスアクセス開始、nop=
1はバスアクセス禁止を指示する。data=0は命令
リード、data=1はデータアクセスを指示する。l
ong=1はロングワードサイズ、long=0のと
き、byte=0はワードサイズ、byte=1はバイ
トサイズを指示する。write=0はリード、wri
te =1はライトを指示する。命令リードの場合は所
定のタイミングでバスIDBの内容がIR1とリードデ
ータバッファRDBに格納される。データリードの場合
は所定のタイミングでバスIDBの内容がリードデータ
バッファRDBに格納される。データライトの場合は所
定のタイミングでライトデータバッファWDBの内容が
バスIDBに出力される。本命令の場合、ステートコー
ド1でデータアクセスを行い、データアクセスのリード
且つバイトアクセスと指示される。ステートコード2で
命令リードを行なう。
【0572】図61の(6−3)の部分で実効アドレス
を計算する。本転送命令の場合、ステートコード1で、
dbragb=1として、DBRAに保持している命令
コードのEA拡張部8ビットを、32ビットに1拡張
(上位24ビットをすべて1とする)した上、内部バス
GBに出力する。GBの内容はアドレスバッファABに
毎ステート格納されるようにされており、特に制御は必
要ない。
【0573】図61の(6−4)の部分で、転送データ
を制御する。ステートコード2で、dbrdb=1と
し、リードデータをDBRからDBへ出力すると共に、
算術論理演算器ALUを経由して、wbtrd=1と
し、テンポラリデータレジスタTRDへ格納する。
【0574】図62の(6−5)の部分で、割込みマス
ク信号を制御する。また、制御信号MODSを発生す
る。
【0575】図63乃至図65には条件分岐命令の一部
に対する命令デコーダDECの論理構成が論理記述によ
って示される。本論理記述は、8ビットディスプレース
メントの条件分岐命令(Bcc d:8)に相当する。
【0576】図63の(7−1)の部分ではステートコ
ードTMGが生成される。ステートコードTMGは1→
2と進行する。図63の(7−2)の部分でバス制御を
行なう。本命令の場合、ステートコード1、2で命令リ
ードを行い、ステートコード1では、算術演算器AUで
計算した分岐アドレスに基づいて分岐アドレスの命令リ
ードを行なう。後述するように、リード完了以前に、分
岐するかしないかの判定を行なって、分岐しない場合
は、リードした命令は取り込まない。ステートコード2
では、前記判定結果に従って、分岐アドレスの次のアド
レスまたは、当該分岐命令の次の次のアドレスの命令リ
ードを行なう。
【0577】図64の(7−3)の部分で実効アドレス
を計算する。ステートコード1で、augb=1とし、
算術演算器AUの結果(分岐アドレスの実効アドレス)
を、内部バスGBに出力する。また、bcc1=1と
し、分岐判定を指示する。実際の判定は、MODS=0
のときコンディションコードレジスタCCRの、MOD
S=1のときテンポラリデータレジスタTRDの内容に
従って行われる。なお、bcc1とbcc2は、コンデ
ィションフィールド(cc/bc)として使用される命
令コードのビット位置が相違される。bcc1の場合は
ビット11〜8が、bcc2の場合はビット7〜4が使
用される。
【0578】図64の(7−4)の部分で、転送データ
を制御するが、本命令では動作を行なわない。図64の
(7−5)の部分で、制御信号はいずれも初期化する。
割込みも許可し、割込みが要求すれば、引き続き割込み
例外処理を行なうことができる。
【0579】図66乃至図68にはサブルーチン分岐命
令の一部に対する命令デコーダDECの論理構成が論理
記述によって示される。本論理記述は、16ビットディ
スプレースメントのサブルーチン命令(BSR d:1
6)に相当する。MAX信号は、マキシマムモードを示
す。実際には、スタックポインタ(ER7)のデクリメ
ントや、GBへの出力の制御を行なうが、本発明に直接
の関係はないので、図示は省略する。
【0580】条件成立/不成立に従って、動作が異な
る。また、マキシマム/ミニマムモードで、スタックす
るプログラムカウンタPCのビット長が異なる。
【0581】図66の(8−1)の論理記述部分でステ
ートコードTMGが生成される。ミニマムモードの条件
成立時、ステートコードTMGは1→14→2→3と進
行する。マキシマムモードの条件成立時、ステートコー
ドTMGは1→14→2→11→3と進行する。不成立
の場合は、ステートコードTMGは1→14→3と進行
する。
【0582】図66の(8−2)の論理記述部分でバス
制御を行なう。本命令の場合、ステートコード14、3
で命令リードを行い、ステートコード2、11は、スタ
ックへのライトを行なう。ステートコード1ではバスア
クセスを行なわない。ステートコード14での命令リー
ドは、分岐条件判定結果に基づいて行なう。
【0583】図67の(8−3)の論理記述部分で実効
アドレスを計算する。bcc2=1とし、分岐判定を指
示する。実際の判定は、MODS=1のときテンポラリ
データレジスタTRDの内容に従って行われる。また、
ステートコード1では、リードデータバッファRDBに
保持している命令コードのEA拡張部16ビットを、d
brext信号によって32ビットに符号拡張し、内部
バスDBへ出力する。図示はされないものの、プログラ
ムカウンタPCの内容を内部バスGBへ出力して、算術
論理演算器ALUで加算を行なう。ステートコード2で
は、判定結果(BCOUT)に従って、BCOUT=1
ならばALUから内部バスGBへの出力を行なう。ま
た、図示はされないものの、BCOUT=0ならPCか
ら内部バスGBへの出力を行なう。
【0584】図67の(8−4)の論理記述部分で、転
送データを制御するが、本命令では動作を行なわない。
図68の(8−5)の論理記述部分で、制御信号はいず
れも初期化する。割込みも許可し、割込みが要求すれ
ば、引き続き割込み例外処理を行なうことができる。
【0585】図60乃至図68で説明した論理記述を組
合せることによって命令デコーダDECは前記ビット条
件分岐命令を制御することができる。
【0586】命令デコーダDECにおける転送命令の一
部の論理記述は図23乃至図25の例と同じである。ま
た、命令デコーダDECにおける演算命令の一部の論理
記述は図26及び図27と同じである。
【0587】図69及び図70には他の演算命令に対す
る命令デコーダDECの論理構成の論理記述が例示され
る。本論理記述は、ビットテスト命令(BTST #
n,Rn)に相当する。前記同様に、独立したビットテ
スト命令として実行するか、メモリ上のデータに対する
処理命令の一部として実行するかは、MODS信号によ
って指示される。特に図示していない部分(算術論理演
算器ALUの制御など)については、独立したビットテ
スト命令と同様にできる。
【0588】図69における(9−1)の論理記述部分
でステートコードTMGが生成される。ステートコード
TMGは1で終了する。同図における(9−2)の論理
記述部分ではバス制御を行なう。ステートコード1で命
令リードを終了する。
【0589】図70における(9−3)の論理記述部分
では演算データを制御する。MODS=0の場合には、
データを汎用レジスタとし、汎用レジスタの内容をDB
に読み出す(rsdb)。MODS=1の場合には、デ
ータをメモリとし、テンポラリレジスタTRDの内容を
DBに読み出す(trddb)。同図における(9−
4)の論理記述部分で制御信号が何れも初期化される。
割込みも許可し、割込みが要求すれば、引き続き割込み
例外処理を行なうことができる。
【0590】図71及び図72には更に他の演算命令に
対する命令デコーダDECの論理構成を論理記述で例示
する。本論理記述は、ビットセット命令(BSET #
n,Rn)に相当する。前記同様に、独立したビットセ
ット命令として実行するか、メモリ上のデータに対する
処理命令の一部として実行するかは、MODD信号によ
って指示される。特に図示していない部分(算術論理演
算器ALUの制御など)については、独立したビットセ
ット命令と同様にできる。
【0591】図71における(10−1)の論理記述部
分でステートコードTMGが生成される。ステートコー
ドTMGは1で終了する。同図における(10−2)の
論理記述部分でバス制御を行なう。 ステートコード1
で命令リードを終了する。
【0592】図72における(10−3)の論理記述部
分で、演算データを制御する。MODD=0の場合に
は、データを汎用レジスタとし、汎用レジスタの内容を
GBに読み出す(rdgb)とともに、演算結果を汎用
レジスタに書込む(wbrd)。MODD=1の場合に
は、データをメモリとし、リードデータバッファの内容
をバスDBに読み出す(DBRdb)とともに、演算結
果をテンポラリデータレジスタTRDに書込む(wbt
rd)。
【0593】図72における(10−4)の論理記述部
分では、割込みマスク信号を制御する。また、デスティ
ネーション側がメモリの場合には、制御信号MKMOV
を発生して、ライト型転送命令と同等の動作を行なう命
令コードの発生を、命令変更部CHGに指示する。ま
た、ロングワードサイズ信号LNG、バイトサイズ信号
BYTEを継続する。
【0594】次に上記ビット条件分岐命令などの複合命
令の実行タイミングの例を説明する。特に制限はされな
いものの、内部データバスは16ビットであって、内蔵
ROM、RAMリード/ライトを1ステートでリード/
ライト可能とする。内蔵ROM、RAMは、バスIAB
をアドレスバスとし、バスIDBをデータバスとする。
後述のPAB、PDBは接続されていないが、同様のタ
イミングを内部で生成していると理解されたい。
【0595】図73にはビット条件分岐命令の第1の例
(BBS #0,@FFFFFE,$+20)の実行タ
イミングが例示される。サイクルT0のスロットC2
で、CPU2Aのアドレスバッファ(AB)からアドレ
スがバスIABに出力される。
【0596】サイクルT1のスロットC1で、バスIA
Bの内容がバスPABに出力され、リードサイクルが開
始される。スロットC2でリードデータが内部データバ
スに得られ、これをサイクルT2のスロットC1でレジ
スタIR1にラッチされる。これは、ビットテスト命令
の第1のワードと共通のワードであり(bld)、指定
したアドレスのデータをテンポラリレジスタへ格納す
る。
【0597】引き続き、サイクルT2のスロットC2で
次のアドレス(+2された内容)がバスIABに出力さ
れ、このリードデータがサイクルT3のスロットC1で
レジスタIR1にラッチされる(条件分岐命令の命令コ
ード(bcc))。以上の動作は以前の命令の実行の制
御によって行われ、相対的な関係が異なる場合もある。
【0598】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、サイクルT2のスロ
ットC1で命令コード(bld)が命令デコーダDEC
に入力されて、命令の内容が解読される。解読結果に従
って、図60乃至図62に基づいて説明した通り、制御
信号を出力して、各部の制御を行う。即ち、8ビット絶
対アドレスのアドレッシングモードであるので、この絶
対アドレスに基づき、ソースデータのリードを行い、リ
ード結果をテンポラリレジスタTRDに格納する。ま
た、制御信号MODS=1とする。
【0599】サイクルT2のスロットC2で、リードデ
ータバッファRDBの内容(絶対アドレス)を内部バス
GBに読み出して、アドレスバッファABに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。
【0600】サイクルT3から、データがリードされ
る。また、サイクルT3のスロットC2で、プログラム
カウンタPCの内容を内部バスGBに読み出して、アド
レスバッファABとインクリメンタINCに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。算術演算器AUは、このバスGBの内
容を入力して、サイクルT4のスロットC1から分岐ア
ドレスの計算を行なう。
【0601】サイクルT4のスロットC1で前記リード
データが、リードデータバッファRDBに格納される。
更に、リードデータバッファRDBから内部バスDBに
出力され、算術論理演算器ALUに入力する。算術論理
演算器ALUの動作は無操作とする。
【0602】サイクルT4のスロットC2で、リードデ
ータが、算術論理演算器ALUから内部バスWBに出力
され、テンポラリデータレジスタTRDに格納される。
【0603】サイクルT4のスロットC1で、命令コー
ド(条件分岐命令(bcc))が命令デコーダDECに
入力されて、命令の内容が解読される。解読結果に従っ
て、図63乃至図65に基づいて説明した通り、制御信
号を出力して、各部の制御を行う。MODS信号が1に
セットされているので、コンディションコードレジスタ
CCRではなく、テンポラリデータレジスタTRDの所
定のビットのテストを行なう。
【0604】サイクルT4のスロットC2で、前記の通
り、算術演算器AUで計算した分岐アドレスの内容を内
部バスGBに読み出して、アドレスバッファABとイン
クリメンタINCに入力する。アドレスバッファABか
らアドレスバスIABにアドレスが出力される。
【0605】サイクルT5のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してテンポラリレジスタTRAにラ
イトされる。分岐条件のテストが指示される。
【0606】サイクルT5のスロットC2で、分岐条件
が成立している場合にはテンポラリアドレスレジスタT
RAの内容を、不成立の場合にはプログラムカウンタP
Cの内容を、内部バスGBに読み出して、アドレスバッ
ファABとインクリメンタINCに入力する。アドレス
バッファABからアドレスバスIABにアドレスが出力
される。これによって、次の次の命令コードのアドレス
を切り替える。
【0607】一方、サイクルT6のスロットC1で、分
岐条件が成立している場合には、バスIDBの内容をレ
ジスタIR1にラッチする(分岐先の命令コード)。不
成立の場合には、レジスタIR1の内容が保持され、ビ
ット条件分岐命令の次の命令コードが保存される。これ
によって、次の命令コードを切り替える。
【0608】なお、第1ワードと第2ワード以降が分割
されないための連続命令信号(mskint)を出力す
る。本信号によって、割込み要求などが発生していて
も、命令の実行を継続することができる。
【0609】図74にはビット条件サブルーチン分岐命
令の例(BBSR #5,@FFFE00,$+30
0)の実行タイミングが示される。
【0610】サイクルT2のスロットC1で命令コード
(bld−1)が命令デコーダDECに入力されて、命
令の内容が解読される。解読結果に従って、制御信号を
出力して、各部の制御を行う。即ち、16ビット絶対ア
ドレスのアドレッシングモードであるので、引き続き、
EA拡張部である絶対アドレスをリードした後、この絶
対アドレスに基づき、ソースデータのリードを行い、リ
ード結果をテンポラリデータレジスタTRDに格納す
る。また、制御信号MODS=1とする。
【0611】サイクルT1のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスバスIABにア
ドレスが出力される。サイクルT2から、リードサイク
ルが開始され、このリードデータがサイクルT3のスロ
ットC1でリードデータバッファRDBにラッチされる
(EA拡張部である絶対アドレス(bld−2))。
【0612】サイクルT2のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスバスIABにア
ドレスが出力される。サイクルT3から、リードサイク
ルが開始され、このリードデータがサイクルT4のスロ
ットC1でリードデータバッファRDBにラッチされる
(サブルーチン分岐命令(bsr−1))。
【0613】サイクルT3のスロットC2で、リードデ
ータバッファRDBの内容(絶対アドレス)を内部バス
GBに読み出して、アドレスバッファABに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。サイクルT4から、データがリードさ
れ、サイクルT6のスロットC1で前記リードデータ
が、リードデータバッファRDBに格納される。更に、
リードデータバッファRDBから内部バスDBに出力さ
れ、算術論理演算器ALUに入力する。算術論理演算器
ALUの動作は無操作とする。
【0614】サイクルT6のスロットC2で、リードデ
ータが、算術論理演算器ALUから内部バスWBに出力
され、テンポラリデータレジスタTRDに格納される。
【0615】サイクルT5のスロットC1で、命令コー
ド(サブルーチン分岐命令(bsr−1))が命令デコ
ーダDECに入力されて、命令の内容が解読される。解
読結果に従って、図66乃至図68に8基づいて説明し
た通り、制御信号を出力して、各部の制御を行う。MO
DS信号が1にセットされているので、テンポラリレジ
スタTRDの所定のビットのテストを行なう。
【0616】サイクルT5で分岐条件のテストが指示さ
れる。サイクルT6のステートC1でプログラムカウン
タPCの内容を内部バスGBに、リードデータバッファ
RDBの内容(ディスプレースメント)を内部バスDB
に、それぞれ読み出して、算術論理演算器ALUで加算
を行なう。サイクルT6のスロットC2で、分岐条件が
成立している場合には算術論理演算器ALUの内容を、
不成立の場合にはプログラムカウンタPCの内容を、内
部バスGBに読み出して、アドレスバッファABとイン
クリメンタINCに入力する。アドレスバッファABか
らアドレスバスIABにアドレスが出力される。これに
よって、次の命令コードのアドレスを切り替える。サイ
クルT7のスロットC1で、インクリメンタINCでイ
ンクリメント(+2)された結果が、内部バスWBを経
由してプログラムカウンタPCにライトされる。
【0617】サイクルT7のスロットC1でスタックポ
インタSP(ER7)の内容を内部バスGBに読み出し
て、算術論理演算器ALUでデクリメント(マキシマム
モードのときは4、ミニマムモードのときは2を減算)
を行なう。サイクルT7のスロットC2で、算術論理演
算器ALUの内容を内部バスGBに読み出して、アドレ
スバッファABに入力し、アドレスバッファABからア
ドレスバスIABにアドレスが出力される。ワードサイ
ズライトのバスコマンドを発生する。サイクルT8のス
ロットC2で、プログラムカウンタPCの内容が内部バ
スDB、ライトデータバッファWDBを経由して、内部
バスIDBに出力される。マキシマムモードの場合は、
更に、もう1回のワードサイズライトが行われる。条件
不成立の場合には、このスタック動作は行なわない。
【0618】サイクルT8のスロットC2で、条件不成
立の場合は、サイクルT8のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスバスIABにア
ドレスが出力される。次のステートから、リードサイク
ルが開始される。
【0619】図75にはビットテスト命令の第1の例
(BTST #0,@FFFFFE)の実行タイミング
が示される。これは既存の単独の命令の場合である。
【0620】サイクルT2のスロットC1で命令コード
(bld)が命令デコーダDECに入力されて、命令の
内容が解読される。解読結果に従って、図60乃至図6
2に基づいて説明した通り、制御信号を出力して、各部
の制御を行う。即ち、8ビット絶対アドレスのアドレッ
シングモードであるので、この絶対アドレスに基づき、
ソースデータのリードを行い、リード結果をテンポラリ
データレジスタTRDに格納する。また、制御信号MO
DS=1とする。
【0621】サイクルT2のスロットC2で、リードデ
ータバッファRDBの内容(絶対アドレス)を内部バス
GBに読み出して、アドレスバッファABに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。
【0622】サイクルT3から、データがリードされ
る。また、サイクルT3のスロットC2で、プログラム
カウンタPCの内容を内部バスGBに読み出して、アド
レスバッファABとインクリメンタINCに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。算術演算器AUは、このバスGBの内
容を入力して、サイクルT4のスロットC1から分岐ア
ドレスの計算を行なう。
【0623】サイクルT4のスロットC1で前記リード
データが、リードデータバッファDBRに格納される。
更に、リードデータバッファDBRから内部バスDBに
出力され、算術論理演算器ALUに入力する。算術論理
演算器ALUの動作は無操作とする。
【0624】サイクルT4のスロットC2で、リードデ
ータが、算術論理演算器ALUから内部バスWBに出力
され、テンポラリデータレジスタTRDに格納される。
【0625】サイクルT4のスロットC1で、命令コー
ド(ビットテスト命令(btst))が命令デコーダD
ECに入力されて、命令の内容が解読される。解読結果
に従って、制御信号を出力して、各部の制御を行う。M
ODS信号が1にセットされているので、データを汎用
レジスタではなく、テンポラリデータレジスタTRDか
ら読み出す。
【0626】サイクルT4のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスIABが出力さ
れる。サイクルT5のスロットC1で、インクリメンタ
INCでインクリメント(+2)された結果が、内部バ
スWBを経由してプログラムカウンタPCにライトされ
る。
【0627】サイクルT5のスロットC1で、データ
が、MODS信号に従って、テンポラリレジスタTRD
から内部バスGBに出力され、算術論理演算器ALUに
入力される。指定されたビットの選択を行なう。
【0628】サイクルT7のスロットC2で、ビットテ
スト結果が、コンディションコードレジスタCCRのZ
フラグに格納される。選択されたビットが0のときZ=
1、1のときZ=0とされる。
【0629】図76にはビットテスト命令の第2の例
(BTST #1,@ER0+)の実行タイミングが示
される。これは、アドレッシングモードを拡張した例で
ある。前置命令コード、MOV.B @ER0+,R0
に相当する命令コード、BTST #1,R0Hに相当
する命令コードを組合せて実行される。前置命令コード
は、図15に従い、H’0108とされ、MODS信号
によって、ソース側がメモリであることを指示する。
【0630】転送命令コードは、既存の転送命令と同様
に、メモリのリードを行なうが、前置命令コードによる
ソース側をメモリとする指示に基づき、リードデータを
テンポラリデータレジスタTRDに格納する。ソース側
をメモリとする指示を継続する。演算命令コードは、ソ
ース側をメモリとする指示に従い、ソース側データを汎
用レジスタではなく、テンポラリデータレジスタTRD
から読み出す。そのほかの動作は、既存の演算命令と同
様になる。
【0631】サイクルT2のスロットC1で命令コード
(前置命令コードpf)が命令デコーダDECに入力さ
れて、命令の内容が解読される。解読結果に従って、制
御信号を出力して、各部の制御を行う。かかる前置命令
コードの場合には、ソース側データがメモリ上に存在す
ることを指示する。即ち、制御信号controlCと
してMODS信号を1にセットし、命令デコーダDEC
にフィードバックする。
【0632】サイクルT2のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスバスIABにア
ドレスが出力される。次の命令のリードを行なう。
【0633】サイクルT3のスロットC1で命令コード
(MOV命令(mov))が命令デコーダDECに入力
されて、命令の内容が解読される。解読結果に従って、
制御信号を出力して、各部の制御を行う。ポストインク
リメントレジスタ間接のアドレッシングモードであるの
で、アドレスレジスタER0に基づき、ソースデータの
リードを行い、リード結果をテンポラリデータレジスタ
TRDに格納する。
【0634】サイクルT3のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してプログラムカウンタPCにライ
トされる。サイクルT3のスロットC2で、プログラム
カウンタPCの内容を内部バスGBに読み出して、アド
レスバッファABとインクリメンタINCに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。
【0635】サイクルT3から、リードサイクルが開始
され、このリードデータがサイクルT4のスロットC1
でリードデータバッファRDBにラッチされる(ビット
テスト命令(btst))。また、インクリメンタIN
Cでインクリメント(+2)された結果が、内部バスW
Bを経由してプログラムカウンタPCにライトされる。
【0636】サイクルT4のスロットC2で、アドレス
レジスタER0の内容(EA)を内部バスGBに読み出
して、アドレスバッファABに入力する。アドレスバッ
ファABからアドレスバスIABにアドレスが出力され
る。サイクルT5のスロットC1で、再度、アドレスレ
ジスタER0の内容(EA)を内部バスGBに読み出し
て、算術論理演算器ALUに入力し、インクリメント処
理を行なう。この結果は、サイクルT5のスロットC2
でアドレスレジスタER0に格納される。
【0637】サイクルT5から、データがリードされ
る。サイクルT6のスロットC1で前記リードデータ
が、リードデータバッファRDBに格納される。更に、
リードデータバッファRDBから内部バスDBに出力さ
れ、算術論理演算器ALUに入力する。算術論理演算器
ALUの動作は無操作とする。サイクルT6のスロット
C2で、リードデータが、算術論理演算器ALUから内
部バスWBに出力され、MODS信号が1にセットされ
ているので、汎用レジスタではなく、テンポラリデータ
レジスタTRDに格納される。
【0638】また、サイクルT5のスロットC2で、プ
ログラムカウンタPCの内容を内部バスGBに読み出し
て、アドレスバッファABとインクリメンタINCに入
力する。アドレスバッファABからアドレスバスIAB
にアドレスが出力される。次の命令のリードを行なう。
【0639】サイクルT6のスロットC1で、命令コー
ド(BTST命令(btst))が命令デコーダDEC
に入力されて、命令の内容が解読される。解読結果に従
って、制御信号を出力して、各部の制御を行う。MOD
S信号が1にセットされているので、データを汎用レジ
スタではなく、テンポラリデータレジスタTRDから読
み出す。
【0640】サイクルT6のスロットC2で、プログラ
ムカウンタPCの内容を内部バスGBに読み出して、ア
ドレスバッファABとインクリメンタINCに入力す
る。アドレスバッファABからアドレスバスIABにア
ドレスが出力される。サイクルT7のスロットC1で、
インクリメンタINCでインクリメント(+2)された
結果が、内部バスWBを経由してプログラムカウンタP
Cにライトされる。
【0641】また、サイクルT7のスロットC1で、デ
ータが、MODS信号に従って、テンポラリデータレジ
スタTRDから内部バスGBに出力され、算術論理演算
器ALUに入力される。指定されたビットの選択をが行
なわれる。
【0642】サイクルT7のスロットC2で、ビットテ
スト結果が、コンディションコードレジスタCCRのZ
フラグに格納される。選択されたビットが0のときZ=
1、1のときZ=0とされる。
【0643】図77にはビットセット命令の例(BSE
T #2,@ER0+)の実行タイミングが示される。
これは、アドレッシングモードを拡張した例である。前
置命令コード、MOV.B @ER0+,R0に相当す
る命令コード、BSET#2,R0Hに相当する命令コ
ードを組合せて実行される。前置命令コードは、図15
に従い、H’0104とされ、MODD信号によって、
デスティネーション側がメモリであることを指示する。
【0644】転送命令コードは、既存の転送命令と同様
に、サイクルT4のスロットC2から、メモリのリード
を行ない、前置命令コードによるデスティネーション側
をメモリとする指示(MODD)に基づき、生成した実
効アドレス(メモリアドレス)をテンポラリアドレスレ
ジスタTRAに格納する。また、サイクルT6のスロッ
トC1で、リードデータをリードデータバッファDBR
に格納した時点で、既存の転送命令またはソース側のデ
ータのリードの場合より1ステート早く実行を終了す
る。このため、命令フェッチとプログラムカウンタPC
のインクリメントは行なわない。デスティネーション側
をメモリとする指示を継続する。ビットセット命令コー
ド(bset)を、サイクルT5のスロットC1から命
令デコーダDECに入力する。
【0645】演算命令コードは、デスティネーション側
をメモリとする指示(MODD)に従い、サイクルT6
のスロットC1で、デスティネーション側データを、汎
用レジスタではなく、リードデータバッファDBRか
ら、バスGBに読み出し、算術論理演算器ALUに入力
する。サイクルT6のスロットC2で、ビットセット結
果をテンポラリデータレジスタTRDに格納する。さら
に、MOV.W R0,@ER0に類似する命令コード
(mov−st)を発生し、サイクルT6のC1から命
令デコーダDECに入力する。
【0646】発生された命令コード(mov−st)
は、 テンポラリアドレスレジスタTRAをアドレスレ
ジスタとし、テンポラリデータレジスタTRDをデータ
レジスタとする転送命令同様の動作を行う。即ち、サイ
クルT6のスロットC2で、テンポラリレジスタTRA
に格納されている実効アドレスをバスGBに読み出し、
アドレスバッファABを経由してバス7IABに出力す
るとともに、バイトデータライトのバスコマンドを発行
する。サイクルT7のスロットC2で、テンポラリデー
タレジスタTRDに格納されている演算結果をバスDB
に読み出し、ライトデータバッファを経由して、バスI
DBに出力して、デスティネーションのメモリアドレス
に演算結果を書込む。サイクルT7のスロットC2から
命令フェッチを行なうとともに、プログラムカウンタP
Cのインクリメントを行なう。これによって、転送命令
コード(mov−1)の実行を短縮し、命令フェッチと
プログラムカウンタPCインクリメントを行なわなかっ
た分を回復する。
【0647】デスティネーション側メモリにライトする
場合、命令コード(mov−st)をCPU2A内部で
発生することにより、命令コードを短縮し、処理時間を
短縮することができる。テンポラリレジスタTRAの内
容を参照することによって、再度実効アドレスの計算を
行なう必要がなく、更に、処理時間を短縮することがで
きる。 MOV.W R0,@ER0に類似する命令コー
ドを使用することにより、設計を容易にし、論理的な規
模の増加を抑止することができる。
【0648】図78にはビット条件分岐命令の第2の例
(BBC #0,@ER0+,$+20)の実行タイミ
ングが示される。
【0649】前置命令コード、MOV.B @ER0
+,R0に相当する命令コード、BRA $+20に相
当する命令コードを組合せて実行される。前置命令コー
ドは、図15に従い、H’0108とされ、MODS信
号によって、ソース側がメモリであることを指示する。
転送命令コードは、既存の転送命令と同様に、メモリの
リードを行なうが、前置命令コードによるソース側をメ
モリとする指示に基づき、リードデータをテンポラリデ
ータレジスタTRDに格納する。ソース側をメモリとす
る指示を継続する。
【0650】サイクルT3のスロットC1で命令コード
(条件分岐命令(bcc))が命令デコーダDECに入
力されて、命令の内容が解読される。解読結果に従っ
て、制御信号を出力して、各部の制御を行う。ポストイ
ンクリメントレジスタ間接のアドレッシングモードであ
るので、アドレスレジスタER0に基づき、ソースデー
タのリードを行い、リード結果をテンポラリレジスタT
RDに格納する。
【0651】サイクルT3のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してプログラムカウンタPCにライ
トされる。サイクルT3のスロットC2で、プログラム
カウンタPCの内容を内部バスGBに読み出して、アド
レスバッファABとインクリメンタINCに入力する。
アドレスバッファABからアドレスバスIABにアドレ
スが出力される。
【0652】サイクルT3から、リードサイクルが開始
され、このリードデータがサイクルT4のスロットC1
でリードデータバッファRDBにラッチされる(条件分
岐命令(bcc))。また、インクリメンタINCでイ
ンクリメント(+2)された結果が、内部バスWBを経
由してプログラムカウンタPCにライトされる。
【0653】サイクルT4のスロットC2で、アドレス
レジスタER0の内容(EA)を内部バスGBに読み出
して、アドレスバッファABに入力する。アドレスバッ
ファABからアドレスバスIABにアドレスが出力され
る。サイクルT5のスロットC1で、再度、アドレスレ
ジスタER0の内容(EA)を内部バスGBに読み出し
て、算術論理演算器ALUに入力し、インクリメント処
理を行なう。この結果は、サイクルT5のスロットC2
でアドレスレジスタER0に格納される。
【0654】サイクルT5から、データがリードされ
る。サイクルT6のスロットC1で前記リードデータ
が、リードデータバッファRDBに格納される。更に、
リードデータバッファRDBから内部バスDBに出力さ
れ、算術論理演算器ALUに入力する。算術論理演算器
ALUの動作は無操作とする。サイクルT6のスロット
C2で、リードデータが、算術論理演算器ALUから内
部バスWBに出力され、MODS信号が1にセットされ
ているので、汎用レジスタではなく、テンポラリデータ
レジスタTRDに格納される。
【0655】また、サイクルT5のスロットC2で、プ
ログラムカウンタPCの内容を内部バスGBに読み出し
て、アドレスバッファABとインクリメンタINCに入
力する。アドレスバッファABからアドレスバスIAB
にアドレスが出力される。次の命令のリードを行なう。
【0656】サイクルT6のスロットC1で、命令コー
ド(条件分岐命令(bcc))が命令デコーダDECに
入力されて、図74と同様に、命令の内容を解読し、制
御信号を出力して、各部の制御を行う。MODS信号が
1にセットされているので、コンディションコードレジ
スタCCRではなく、テンポラリデータレジスタTRD
の所定のビットのテストを行なう。
【0657】サイクルT6のスロットC2で、前記の通
り、算術演算器AUで計算した分岐アドレスの内容を内
部バスGBに読み出して、アドレスバッファABとイン
クリメンタINCに入力する。アドレスバッファABか
らアドレスバスIABにアドレスが出力される。
【0658】サイクルT8のスロットC1で、インクリ
メンタINCでインクリメント(+2)された結果が、
内部バスWBを経由してテンポラリアドレスレジスタT
RAにライトされる。分岐条件のテストが指示される。
【0659】サイクルT7のスロットC2で、分岐条件
が成立している場合にはテンポラリアドレスレジスタT
RAの内容を、不成立の場合にはプログラムカウンタP
Cの内容を、内部バスGBに読み出して、アドレスバッ
ファABとインクリメンタINCに入力する。アドレス
バッファABからアドレスバスIABにアドレスが出力
される。これによって、次の次の命令コードのアドレス
を切り替える。
【0660】一方、サイクルT8のスロットC1で、分
岐条件が成立している場合には、バスIDBの内容を命
令レジスタIR1にラッチする(分岐先の命令コー
ド)。不成立の場合には、命令レジスタIR1の内容が
保持され、ビット条件分岐命令の次の命令コードが保存
される。これによって、次の命令コードを切り替える。
【0661】転送命令で使用可能なアドレッシングモー
ドを、ビットテスト命令、ビット条件分岐命令、ビット
条件サブルーチン分岐命令の、テスト対象のビットの存
在するアドレスの指定に用いることができる。
【0662】尚、CPU2Aは加算命令やデータ転送命
令等を実行するとき図1のCPU2と同様に図31乃至
図41の実行タイミングを実現する。更にCPU2Aの
命令デコーダDECは図1のPPU2と同様に図39乃
至図41に例示される論理記述の制御論理を実現してい
る。また、CPU2Aの開発環境は図42のように構成
できる。このときのシステム開発装置におけるCPU選
択手法についても図43で説明した手法をそのまま適用
することができる。また、CPU2Aのアセンブラの出
力するリスト戸して図44を例示することができる。更
にCPU2Aのエミュレータには図45と同じ構成を採
用すればよい。CPU2Aを用いたマイクロコンピュー
タのエミュレーション用マイクロコンピュータは図47
で説明したように構成することができる。
【0663】前記検討課題Dの解決手段に関する発明の
具体的な実施の形態によれば、以下の作用効果を得るも
のである。
【0664】〔1〕第1のワード、第2のワード(条件
分岐命令)などの命令コードは既存のものであるから、
単独では従来同様に動作し、既存の命令実行を阻害する
ことがない。また、既存の命令のみを使用していれば、
既存のソフトウェア資産を有効に利用できる。汎用レジ
スタやロードストアアーキテクチャなどの既存のCPU
のメリットを損なうことがない。第1のワード、第2の
ワード(条件分岐命令)に、それぞれ、絶対アドレスの
ビット長、ディスプレースメントのビット長などに複数
の種類があれば、同じ方法によって、これらを組合せる
ことができる。換言すれば、既存のデータアクセスのた
めのアドレッシングモードや、条件分岐命令のアドレッ
シングモードを全てサポートできるから、任意のアドレ
ッシングモードの組合せを可能にできる。これらの組合
せを可能にすることによって、プログラム上の制約をな
くし、使い勝手を向上することができる。また、同じ方
法によって、サブルーチン分岐命令と組合せることが可
能となり、使い勝手を向上することができる。既存の、
独立したビットテスト命令と条件分岐命令を組合せるよ
り、命令コード長の短縮や処理速度の向上に、寄与する
ことができる。
【0665】ビットテスト命令、ビットセット命令など
のビット操作命令などのアドレッシングモードにも、転
送命令と同等のアドレッシングモードを指定でき、使い
勝手を向上することができる。多様なアドレッシングモ
ードを指定可能にすることによって、複数のビットの状
態に応じて、複数の処理に分岐したり、また、複数のビ
ットを設定したりするような場合などに、最適なアドレ
ッシングモードを使用でき、全体的なプログラム容量の
低減や処理速度の向上に、寄与することができる。
【0666】〔2〕既存の、転送命令の命令コード、演
算命令の命令コードを組合せて、動作するから、命令デ
コーダの、従来の設計資産を有効に利用することがで
き、論理的な規模の追加と変更を最小限にし、論理的・
物理的規模の増大を最小限にできる。また、開発に必要
な期間を短縮し、資源を節約することができる。命令コ
ードの動作内容を変更するための制御信号であるMOD
信号を共通化することができる。即ち、データを転送す
る命令コードを共通にし、続く、命令コードを演算命令
コード或いは分岐命令コードを、組合せればよい。命令
セットを最適化し、論理的規模の増加を抑止できる。
【0667】〔3〕テンポラリレジスタの様なラッチ手
段には、指定されたビットの状態を判定する手段を設
け、ALUなどに読み出したりすることなく、所定のビ
ットの状態を判定できるようにすることにより、条件分
岐命令の全体的な動作を変更することなく、実現できる
から、変更する部分を小さくし、また論理的規模の増加
を最小限にすることができる。
【0668】〔4〕追加する命令コードを前置命令コー
ドに止めることによって、命令セットの変更を最小限に
することができ、一般的なCPU乃至は命令セットに対
して、適用することができる。前記前置命令コードは、
アドレッシングモードや演算の内容によらず共通に使用
できるから、追加する命令コードを最低限にすることが
できる。また、前置命令コードに、そのほかのデータサ
イズなどの情報を持たせることによって、全体的な命令
コード長を短縮できる。前置命令コードに他の情報を含
めることによって、命令コード長を短縮し、実行時間を
短縮することができる。例えば、既存のCPUにおい
て、メモリに対する演算以外の指示を行なう前置命令コ
ードと演算コードとを組合せて実現されている命令が存
在する場合、前記メモリに対する演算以外の指示を、前
記メモリに対する演算を指示する前置命令コードに含め
ることによって、命令コード長を短縮し、実行時間を短
縮することができる。
【0669】メモリからラッチ手段へのデータ読み込
み、演算、ラッチ手段の内容に基づくメモリへのライト
は既存の命令と、使用するレジスタが相違なるのみであ
るから、既存の命令動作を大きく変更することなく、利
用できる。これによって、メモリ上のデータへの演算を
可能にすることによる論理規模の増加を最小限にするこ
とができる。
【0670】〔5〕オブジェクトレベルで互換性を保ち
つつ、アドレス空間の広いCPUとアドレス空間の小さ
いCPUが存在する場合には、アドレス空間の広いCP
Uで、前記命令を実現することで、下位互換性をもつ、
アドレス空間の小さいCPUでもメモリ上のデータを演
算を可能にできる。換言すれば、同一の方法で、オブジ
ェクトレベルで互換性を保ちつつ、アドレス空間の広い
CPUとアドレス空間の小さいCPUでもメモリ上のデ
ータを演算を可能にできる。オブジェクトレベルで互換
性を保つことによる利点とメモリ上のデータを演算を可
能にすることの利点の双方を享受することができる。
【0671】〔6〕既存の命令を組合せ、新規の命令機
能を実現しているので、命令セットの更なる拡張や、更
なる高速化に当たって、既存のCPUに対して新たなる
課題を生じることが少ない。換言すれば、既存のCPU
に対して、更なる命令セットの拡張や、更なる高速化を
行なう技術が存在する(発明された)場合には、本発明
を適用して、既存のCPUに対して命令セットを拡大し
たCPUに対しても、同様の技術を適用することができ
る。新規の命令機能を実現するために用いている、既存
の命令のそれぞれに、前記技術を適用して、再度組合せ
ればよい。前置命令コードは動作が単純であり、また、
既存の命令に類似した動作とすることによって、変更は
容易である。
【0672】〔7〕また、既存の命令を組合せ、新規の
命令機能を実現しているので、既存のCPUとエミュレ
ーション用インタフェースを共通化することができ、ひ
いては、同じエミュレータのハードウェアを共通でき
る。エミュレータのハードウェアを共通化することによ
って、逸早く開発環境を整えることができ、また、エミ
ュレータの開発に必要な資源を最小限にすることができ
る。
【0673】前記検討課題Dの解決手段に関する発明の
実施の形態は一例であり、その要旨を逸しない範囲にお
いて種々変更可能である。
【0674】例えば、組合せる命令コードは、ビットテ
スト命令や条件分岐命令に限定されない。新規の命令セ
ットを考える場合、既存の命令セットの上位互換とする
場合など、適宜、適当な命令コードを組合せるようにし
てよい。少なくとも、1つのオペレーションフィールド
で、乃至1回の命令デコードで、ビット条件分岐命令を
実行するような複雑な動作を行なわず、当該ビットの存
在するアドレスのリード、当該ビットのテスト、分岐判
定、分岐などの個別の動作を、類似の命令と共通化する
ようにすればよい。
【0675】ビット条件分岐命令のアドレッシングモー
ドも、実施例に限定されない。分岐アドレスの指定は、
プログラムカウンタ相対に限定されず、絶対アドレス
や、レジスタ間接などとしてもよい。これは、全体的な
命令セットに適合するようにすればよい。
【0676】CPUのアーキテクチャは、ロードストア
型アーキテクチャでなくてもよい。汎用レジスタは、ア
ドレス及びデータに共通に利用可能なものである必要は
なく、一部または全部がアドレス専用またはデータ専用
のものであってもよい。汎用レジスタのデータサイズに
ついても任意とすることができる。
【0677】前置命令コードの種類は特に限定はされな
い。また、前置命令コードは、転送命令と条件分岐命令
乃至演算命令を組合せる情報のほか、そのほかの制御情
報を含んでもよい。例えば、データサイズを指示する情
報を含んでもよい。
【0678】また、命令コードの基本単位16ビットに
限定する必要はなく、8ビット或いは32ビットなど任
意のビット幅とできる。制御信号は、MODS、MOD
Dを用いるものとしたが、そのほかの制御信号に分割す
ることもできる。
【0679】前置命令コード、第1のリード型転送命令
コード、第2のリード型転送命令コード、演算命令コー
ド、ライト型転送命令コードを組合せて、メモリ上の相
異なる2つのアドレスのデータを入力して、演算し、結
果を、ライト型転送命令コードで指定する別のメモリの
アドレスに格納することができる。第1、第2のリード
型転送命令コードを省略して、汎用レジスタ上のデータ
を入力とすることもできる。
【0680】《検討課題Eの解決手段に関する実施の形
態》次に、前記検討課題Eの解決手段に関する発明の具
体例を説明する。ここで説明するマイクロコンピュータ
は図2に基づいて説明した構成を有するものであり、繰
り返しになるのでその詳細な説明は省略する。従って、
マイクロコンピュータ1に内蔵される前記CPU2は図
3に示されるような汎用レジスタ及び制御レジスタの構
成を有している。当然CPU2は図4のプログラミング
モデルを有する下位CPUの汎用レジスタ及び命令セッ
トを包含することになる。そして上位CPUとしてのC
PU2は図5のアドレス空間を有している。CPU2の
実効アドレスの計算には前述の図7及び図8で説明した
手法が採用されている。
【0681】ここで説明するマイクロコンピュータの一
例は図79に示される。マイクロコンピュータ501
は、命令を実行してマイクロコンピュータ501全体の
制御を司る中央処理装置(CPU)502、シングルチ
ップマイクロコンピュータの動作モードなどを制御する
システムコントローラ(SYSC)514、割込コント
ローラ(INT)503、バスコントローラ510、D
MAコントローラ(DMAC)511、外部バスDMA
C(EXDMAC)512、CPU502の処理プログ
ラムなどを格納するメモリであるリードオンリメモリ
(ROM)504、CPU502の作業領域並びにデー
タの一時記憶用のメモリであるランダムアクセスメモリ
(RAM)505、タイマ506、パルス出力回路50
7、シリアルコミュニケーションインタフェース(SC
I)508、A/D変換器(A/D)509、入出力ポ
ートIOPA〜IOPF、入出力ポートIOP1〜IO
P5、及びクロック発振器(CPG)513の機能ブロ
ック若しくは回路モジュールを有し、公知の半導体集積
回路製造技術により1つの半導体基板(半導体チップ)
に形成されている。
【0682】前記CPU502は主にROM504から
命令をフェッチし、これを解読して演算動作や制御動作
を行う。前記DMAC511はCPU502とバスを共
有し、CPU502に代ってデータ転送制御を行う。前
記EXDMAC512は、外部バス上のデータ転送制御
に特化された転送制御装置であり、CPU502または
DMAC511の内部バス上でのアクセス動作に並行し
て、外部バス上でのデータ転送制御が可能にされる。
【0683】バスコントローラ510は、内部バスコン
トローラ、外部バスコントローラ、及びリフレッシュタ
イマなどを持つ。内部バスコントローラはCPU502
とDMAC511とのバス権調停を行う。外部アドレス
は、例えば、8個のエリアに分割され、外部バスコント
ローラにはエリア毎に、バス幅やアクセスステート数を
設定することができ、DRAMやROMなどの高速ペー
ジモードといった、連続アクセス時に、短縮されたバス
サイクルを実現可能にしている。例えば、外付けのDR
AMに対する場合、ノーマル4ステートアクセスに対
し、高速ページ2ステートなどとされる。外部バスコン
トローラは、CPU502、DMAC511、EXDM
AC512の夫々からのバス権要求と、外部からバス権
要求に対する調停を行う。
【0684】マイクロコンピュータ501の前記各種機
能ブロックは、内部バスによって相互に接続される。内
部バスはアドレスバス、データバスの他、図示はされな
い、バス権要求信号、バスアクノレッジ信号、バスコマ
ンド、外部バスコマンド、レディ信号、外部バスレディ
信号、リード信号・ライト信号、さらにバスサイズ信
号、システムクロック信号等を含む。内部アドレスバス
バスには、IAB、PAB、EXABが存在する。内部
データバスにはIDB、PDBが存在する。
【0685】それらのバスは、バスコントローラ510
によってインタフェースされている。内部バスIAB、
IDBはCPU2、DMAC11、ROM504、RA
M505、バスコントローラ510に接続され、更に、
アドレスバスIABは外部バスのアドレスバスとインタ
フェースするために、入出力ポートIOPA〜IOPC
に接続され、データバスIDBは外部バスのデータバス
とインタフェースするために、入出力ポートIOPD、
IOPEに接続される。
【0686】ペリフェラルバスPAB、PDBはバスコ
ントローラ510、EXDMAC512、タイマ50
6、パルス出力回路507、SC5I8、A/D変換器
509、割込コントローラ503、入出力ポートIOP
A〜IOPF及び入出力ポートIOP1〜IOP5に接
続される。これらの機能ブロックが有する制御レジスタ
を総称して、内部I/Oレジスタと呼ぶ。
【0687】アドレスバスEXABは、EXDMAC5
12とバスコントローラ510、入出力ポートIOPA
〜IOPCを接続する。なお、バスコントローラ510
は、アドレスバスEXABのアドレスを判定し、バス仕
様に従った動作を実行するために参照する。従って、バ
スコントローラ510はエリアを判定したり、DRAM
のロウアドレスを判定する程度の上位ビットを入力する
のみでよい。
【0688】CPU502とDMAC511が、内部バ
スマスタとして、内部バスを使用することができ、それ
ぞれのバス権要求信号に従って、バスコントローラ(内
部バスアービタ)510が調停する。また、外部バスに
ついては、内部バスマスタによる外部バスアクセス、E
XDMAC512、外部バス権解放要求、リフレッシュ
要求のバス権要求信号に従って、バスコントローラ(外
部バスアービタ)510が調停する。
【0689】ROM504、RAM505、及びタイマ
506、パルス出力回路507、SCI508、A/D
変換器509、入出力ポートIOPA〜IOPF及びI
OP1〜IOP5、割込コントローラ503の各機能ブ
ロック及びEXDMAC512は、内部バススレーブと
して、CPU502またはDMAC511によって動作
制御情報等がリード/ライト可能にされる。
【0690】割込コントローラ503は、タイマ50
6、SCI508、A/D変換器509、入出力ポート
IOP5の出力する割込信号を入力し、CPU502に
割込要求信号531を、DMAC511に起動要求信号
(図示せず)を出力する。また、DMAC511の出力
するクリア信号(図示せず)を入力して、割込クリア信
号(図示せず)を出力する。
【0691】入出力ポートは、外部バス信号、入出力回
路の入出力信号と兼用とされている。入出力ポートIO
PA〜IOPCはアドレスバス出力、入出力ポートIO
PD、IOPEはデータバス入出力、入出力ポートIO
PFはバス制御信号入出力信号と兼用されている。外部
アドレス、外部データは、それぞれ、これらの入出力ポ
ートに含まれるバッファ回路を介してバスIAB、ID
Bと接続されている。バスPAB、PDBは入出力ポー
トのレジスタをリード/ライトするために使用し、外部
バスとは直接の関係はない。バス制御信号出力は、アド
レスストローブ、ハイ/ロウデータストローブ、リード
ストローブ、ライトストローブ、バスアクノリッジ信号
などがある。バス制御入力信号にはウェイト信号、バス
リクエスト信号などがある。これらの入出力信号は図示
はされない。外部バス拡張を行うことは、動作モードな
どで選択され、これらの入出力ポートの機能も選択され
る。
【0692】また、入出力ポートIOP1はタイマ入出
力、入出力ポートIOP2はパルス出力、入出力ポート
IOP3はSCI508の入出力、入出力ポートIOP
4はアナログ入力、入出力ポートIOP5はEXDMA
C512、DMAC511入出力と兼用されている。E
XDMAC512、DMAC511、タイマ506、S
CI508、パルス出力507、A/D変換器509と
入出力ポートIOP1〜IOP5との入出力信号や内部
割込み要求信号などは図示を省略してある。
【0693】割込要因が発生すると、割り込みコントロ
ーラ503でCPU502又はDMAC511の何れに
要求を行なうか判定し、また、優先順位などが判定され
る。CPU502に割込要求が発生されると、CPU5
02は実行中の処理を中断して、例外処理状態を経て、
所定の処理ルーチンに分岐し、所望の処理を行い、割込
要因をクリアしたりする。所定の処理ルーチンの最後に
は、通常復帰命令(RTE命令)がおかれ、この命令を
実行することによって前記中断した処理を再開する。
【0694】上記マイクロコンピュータ501は、電源
端子として、グランドレベル(Vss)、電源電圧レベ
ル(Vcc)、アナロググランドレベル(AVss)、
アナログ電源電圧レベル(AVcc)、アナログ基準電
圧(Vref)の入力端子の他に、専用制御端子とし
て、リセット(RES)、スタンバイ(STBY)、モ
ード制御(MD0、MD1、MD2)、クロック入力
(EXTAL、XTAL)の各端子を有する。
【0695】前記端子EXTAL、XTALを介してC
PG513に水晶発振子による発振信号又は外部クロッ
ク信号が入力され、これに基づいて基準クロック信号
(システムクロック)φを生成する。マイクロコンピュ
ータはその基準クロック信号φに同期して動作を行う。
この基準クロック信号φの1周期をステートと呼ぶ。
【0696】RES端子にリセット信号が加えられる
と、SYSC514がモード端子MD0〜MD2で与え
られる動作モードを取り込み、マイクロコンピュータ5
01はリセット状態になる。モード端子で設定する動作
モードは、シングルチップ/拡張、アドレス空間、内蔵
ROMの有効/無効、データバス幅の初期値8ビット/
16ビットなどを選択する。
【0697】このリセットが解除されると、CPU50
2は所定のアドレスからスタートアドレスをリードし
て、このスタートアドレスから命令のリードを開始する
リセット例外処理を行う。この後、CPU502は逐
次、ROM504などから命令をリードし、解読して、
その解読内容に基づいてデータの処理或はRAM50
5、タイマ506、SCI508、入出力ポートなど、
或いは外部バスに接続されるメモリやI/Oなどとのデ
ータ転送を行う。即ち、CPU502は、入出力ポー
ト、A/D変換器509などか入力されるデータ、或は
SCI508などから入力される指示を参照しつつ、R
OM504などに記憶されている命令に基づいて処理を
行い、その結果に基づいて、入出力ポート、タイマ50
6などを使用して、外部に信号を出力し、各種機器の制
御を行う。
【0698】図3は前記CPU502に内蔵されている
汎用レジスタ及び制御レジスタの構成例(プログラミン
グモデル)として上位のCPU502のプログラミング
モデルを示す図面でもある。
【0699】CPU502は、32ビット長の汎用レジ
スタを32本持っている。汎用レジスタER0〜ER3
1は、全て同等の機能を持っており、アドレスレジスタ
としてもデータレジスタとしても使用することができ
る。
【0700】データレジスタとしてしては32ビット、
16ビットおよび8ビットレジスタとして使用きる。ア
ドレスレジスタおよび32ビットレジスタとしては、一
括して汎用レジスタER(ER0〜ER31)として使
用する。16ビットレジスタとしては、汎用レジスタE
Rを分割して汎用レジスタE(E0〜E31)、汎用レ
ジスタR(R0〜R31)として使用する。これらは同
等の機能を持っており、16ビットジスタを最大64本
まで使用することができる。なお、汎用レジスタE(E
0〜E31)を、特に拡張レジスタと呼ぶ場合がある。
8ビットレジスタとしては、汎用レジスタRを分割して
汎用レジスタRH(R0H〜R31H)、汎用レジスタ
RL(R0L〜R31L)として使用する。これらは同
等の機能を持っており、8ビットレジスタを最大64本
まで使用することができる。各レジスタ独立に使用方法
を選択することができる。
【0701】汎用レジスタER7、ER15、ER2
3、ER31には、汎用レジスタとしての機能に加え
て、スタックポインタ(SP)としての機能が割り当て
られており、例外処理やサブルーチン分岐などで暗黙的
に使用される。例外処理は前記割込み例外処理を含む。
【0702】なお、内部論理構成上はER0〜ER7を
グループ0、ER8〜ER15をグループ1、ER16
〜ER23をグループ2、ER24〜ER31をグルー
プ3としている。グループ0が既存のCPU(CPU5
02に対する下位CPU)の汎用レジスタと同一とされ
る。
【0703】それらの汎用レジスタは、プログラミング
仕様上は相違なく、すべて同等に使用できる。少なくと
も、アセンブリ言語で書く場合には、グループを意識せ
ず、例えば、R0H、E8、R16,ER31、などと
記述できる。例えば平成7年3月(株)日立製作所発行
『H8S/2600シリーズH8S/2000シリーズ
プログラミングマニュアル』のアセンブラフォーマット
に従って記述すれば、「MOV.L ER0,ER3
1」或いは、「ADD.W E8,R16」などとレジ
スタ番号のみで記述できる。
【0704】CPU502は更に、コントロールレジス
タとして、図3に例示される24ビットのプログラムカ
ウンタPCと8ビットのエクステンドレジスタEXR及
び8ビットのコンディションコードレジスタCCRを含
んでいる。
【0705】前記プログラムカウンタPCは、CPU5
02が次に実行する命令のアドレスを示す。特に制限さ
れないものの、CPU502の命令は、すべて2バイト
(ワード)を単位としているため、バイトを最小単位と
して指示するアドレス信号の最下位ビットは無効であ
り、命令リード時には命令アドレスの最下位ビットは0
とみなされる。
【0706】前記コンディションコードレジスタCCR
は8ビットのレジスタで、CPU502の内部状態を示
している。割込みマスクビット(I)とハーフキャリ
(H)、ネガティブ(N)、ゼロ(Z)、オーバフロー
(V)、キャリ(C)の各フラグを含む8ビットで構成
されている。
【0707】前記エクステンドレジスタEXRは8ビッ
トのレジスタで、割込みなどの例外処理の制御を行な
う。割込みマスクビット(I2〜I0)とトレース
(T)の各ビットを含んでいる。
【0708】図4はCPU502に対する下位互換のC
PUのプログラミングモデルを示す図面でもある。前記
図3のプログラミングモデルを持つ上位のCPU502
は、図4のプログラミングモデルを有する下位CPUの
汎用レジスタ及び命令セットを包含している。
【0709】下位互換のCPUは、16ビット長の汎用
レジスタを8本持っている。汎用レジスタR0〜R7
は、すべて同等の機能を持っており、アドレスレジスタ
としてもデータレジスタとしても使用することができ
る。
【0710】データレジスタとして16ビット及び8ビ
ットレジスタとして使用きる。アドレスレジスタおよび
16ビットレジスタとしては、一括して汎用レジスタR
(R0〜R7)として使用する。8ビットレジスタとし
ては、汎用レジスタRを分割して汎用レジスタRH(R
0H〜R7H)、汎用レジスタRL(R0L〜R7L)
として使用する。これらは同等の機能を持っており、8
ビットレジスタを最大16本まで使用することができ
る。各レジスタを独立に使用方法を選択することができ
る。
【0711】汎用レジスタR7には、前記同様に、汎用
レジスタとしての機能に加えて、スタックポインタ(S
P)としての機能が割り当てられており、例外処理やサ
ブルーチン分岐などで暗黙的に使用される。
【0712】図80にはCPU502のアドレス空間が
示されている。マイクロコンピュータ501のアドレス
マップとしては、ROM504は0番地から、一方、R
AM505及び内部I/OレジスタはH’FFFFまた
はH’FFFFFF番地まで、それぞれアドレス空間の
両端になるように配置されるようにする。
【0713】上位CPU502は、16MBのアドレス
空間のマキシマムモードと64kBのアドレス空間のミ
ニマムモードを持つ。かかるマキシマムモードとミニマ
ムモードの選択は、マイクロコンピュータ501のモー
ド制御入力端子MD0〜MD2の状態によって行われ
る。
【0714】マキシマムモードでは、絶対アドレス24
ビット(上位8ビットは予約され、命令コード中は32
ビット)で全空間を、絶対アドレス16ビットで0〜
H’7FFF及びH’FF8000〜H’FFFFFF
を指定する。また、例外処理時のベクタは24ビット
(メモリ上は32ビットとされ、上位8ビットは無視さ
れる)、サブルーチン分岐などにおいて待避/復帰され
るプログラムカウンタPCも24ビットとされる。
【0715】ミニマムモードでは、絶対アドレスとレジ
スタ間接のアドッレシングモードのいずれも、下位16
ビットのみを使用し、上位ビットは無視する。例外処理
時のベクタは16ビット、サブルーチン分岐などにおい
て待避/復帰されるプログラムカウンタPCも16ビッ
トとされる。
【0716】下位CPUは、ミニマムモードに相当する
64kBのアドレス空間を持つ。絶対アドレスは16ビ
ットのみを持ち、また、レジスタ間接では16ビットレ
ジスタで、それぞれ全空間を指定する。ベクタやスタッ
クの構造などが前記上位CPU502のミニマムモード
と同等の動作になり、例外処理時のベクタは16ビッ
ト、サブルーチン分岐などにおいて待避/復帰されるプ
ログラムカウンタPCも16ビットとされる。
【0717】前記図7及び図8は上位CPU502のマ
キシマムモードにおける実効アドレス計算方法を例示す
る図面でもある。
【0718】図7の(1)に示されるレジスタ間接では
命令コード中にレジスタを指定する部分(レジスタフィ
ールド)を含み、この命令コードで指定された汎用レジ
スタERの内容の合計32ビットをアドレスとしてメモ
リ上のアドレスを指定する。アドレスは24ビットでよ
いため、上位8ビットは無視する。
【0719】図7の(2)、(3)に示されるディスプ
レースメント付レジスタ間接は、上記レジスタ間接と同
様に得られた32ビットのアドレスに、命令コード中に
含まれるディスプレースメントを加算した結果をアドレ
スとしてメモリ上のアドレスを指定する。加算結果はア
ドレスの指定のみに使用され、汎用レジスタERの内容
には反映されない。特に制限はされないものの、ディス
プレースメントは32ビットまたは16ビットであり、
16ビットディスプレースメントは加算する場合には上
位16ビットは符号拡張される。すなわち、ディスプレ
ースメントの上位16ビットは16ビットディスプレー
スメントのビット15と同じ値であるとして加算が行わ
れる。この場合も上位8ビットは無視される。
【0720】図7の(4)に示されるポストインクリメ
ントレジスタ間接は、前記レジスタ間接と同様に得られ
た32ビットのアドレスでメモリ上のアドレスを指定す
る。その後、このアドレスに1、2又は4を加算し、そ
の加算結果が汎用レジスタERに格納される。メモリ上
のバイトデータを指定する場合には1が、ワードデータ
を指定する場合には2が、アドレスデータを指定する場
合には4が、それぞれ加算される。また、複数レジスタ
の転送命令では、レジスタ本数分を乗算した結果が用い
られる。加算結果の上位8ビットも拡張レジスタに格納
される。後述する複数汎用レジスタ転送命令の場合は、
2(ワードサイズ)または4(ロングワードサイズ)
に、レジスタ本数を乗算した値が用いられる。
【0721】図7の(5)に示されるプリデクリメント
レジスタ間接は、前記レジスタ間接と同様に得られた3
2ビットのアドレスから1、2又は4を減算した結果の
24ビットのアドレスでメモリ上のアドレスを指定す
る。その後、その減算結果が汎用レジスタERに格納さ
れる。メモリ上のバイトデータを指定する場合には1
が、ワードデータを指定する場合には2が、アドレスデ
ータを指定する場合には4が、それぞれ減算される。ま
た、複数レジスタの転送命令では、レジスタ本数分を乗
算した結果が用いられる。前記同様に、アドレスが24
ビットでよい場合には、特に制限はされないものの、減
算結果の上位8ビットも拡張レジスタに格納される。
(4)と同様に、後述の複数汎用レジスタ転送命令の場
合は、2(ワードサイズ)または4(ロングワードサイ
ズ)に、レジスタ本数を乗算した値が用いられる。
【0722】図8の(6)(7)(8)に示される絶対
アドレスは命令コード中に含まれる、8ビット、16ビ
ット又は32ビットの絶対アドレスをアドレスとしてメ
モリ上のアドレスを指定する。8ビット絶対アドレス
は、上位16ビットが論理値1に拡張(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’FF8
000〜H’FFFFFFの64kバイトである。
【0723】図8の(9)、(10)に示されるプログ
ラムカウンタ相対は、プログラムカウンタの内容の24
ビットのアドレスに命令コード中に含まれるディスプレ
ースメントを加算した結果をアドレスとしてメモリ上の
アドレスを指定する。加算結果はプログラムカウンタに
格納される。特に制限はされないものの、ディスプレー
スメントは16ビットまたは8ビットであり、これらの
ディスプレースメントは加算する場合には上位8ビット
または16ビットは符号拡張される。すなわち、ディス
プレースメントの上位8ビットは16ビットディスプレ
ースメントのビット15と、または上位16ビットは8
ビットディスプレースメントのビット7と同じ値である
とみなして加算が行われる。プログラムカウンタ相対は
分岐命令のみで使用される。
【0724】尚、上位CPU502のミニマムモードで
は、実効アドレスの上位8ビットが無視され、下位16
ビットが有効になる。上記の他にイミディエイト、レジ
スタ直接、メモリ間接などのアドレッシングモードを実
行するが、これらは本発明に直接は関係しないので詳細
な説明は省略する。
【0725】図4のプログラミングモデルを持つ下位互
換のCPUの、データ転送命令では、レジスタ間接、1
6ビットディスプレースメント付レジスタ間接、ポスト
インクリメント/プリデクリメントレジスタ間接、8/
16ビット絶対アドレス、が使用可能である。実効アド
レスの計算方法は上記同様である。
【0726】図81には複数レジスタ転送命令(複数レ
ジスタ・メモリ間転送命令、複数レジスタ・レジスタ間
転送命令)としての複数汎用レジスタの転送命令(MO
VM)の機能が示される。データサイズは、ワード
(W)及びロングワード(L)が可能であり、また、汎
用レジスタ間、及び汎用レジスタ・メモリ間のデータ転
送が可能である。また、アドレッシングモードは、イミ
ディエイトを除き、従来の転送命令と同様である。
【0727】汎用レジスタの選択は、2、3、4本の選
択が可能であり、ロングワードサイズの場合、ER0−
ER1、ER2−ER3、ER4−ER5、ER6−E
R7、…、ER30−ER31の2本の組み合わせ、E
R0−ER2、ER4−ER6、…、ER28−ER3
0の3本の組合せ、ER0−ER3、ER4−ER7、
…、ER28−ER31の4本の組合せが可能である。
ワードサイズの場合は、相当する汎用レジスタRのみ、
または汎用レジスタEのみが選択される。
【0728】図81においてRnsはソースになる汎用
レジスタ番号を意味し、Rndはディスティネーション
になる汎用レジスタ番号を意味し、EAsはソースにな
る実効アドレスを意味し、EAdはディスティネーショ
ンになる実効アドレスを意味する。
【0729】図82には複数汎用レジスタの転送命令
(MOVM)によるデータ転送のデータ配置が示され
る。(1)はワードサイズの2個のデータのレジスタ・
メモリ間転送を示し、(2)はワードサイズの2個のデ
ータのレジスタ・レジスタ間転送を示し、(3)はロン
グワードサイズの2個のデータのレジスタ・メモリ間転
送を示し、(4)はロングワードサイズの2個のデータ
のレジスタ・レジスタ間転送を示している。
【0730】例えば図82の(3)において、第1の汎
用レジスタERnの最上位のデータ、例えば、Enの上
位8ビット(aで示される)が、実効アドレスEAで指
定されるメモリ(aで示される)に対応し、汎用レジス
タの次のデータ、例えば、Enの下位8ビット(bで示
される)が、実効アドレスEA+1で指定されるメモリ
(bで示される)に対応する。第1の汎用レジスタの最
下位のデータ、例えば、RLnのデータdの次は、第2
の汎用レジスタ例えばERn+1の最上位のデータ、例
えば、En+1の上位8ビットのデータeになる。ワー
ドサイズの場合は、図示を省略するが、EnとEn+1
の2本と、RmとRm+1の2本との間のデータ転送も
可能である。
【0731】図9はCPU502の機械語の命令フォー
マットと命令コードを例示する図面でもある。CPU5
02の命令は、2バイト(ワード)を単位にしている。
各命令はオペレーションフィード(op)、レジスタフ
ィールド(r、gr)、EA拡張部(EA)、およびコ
ンディションフィールド(cc)を含む。
【0732】オペレーションフィールド(op)は、命
令の機能を表し、アドレッシングモードの指定オペラン
ドの処理内容を指定する。オペレーションフィールド
(op)は、命令の先頭4ビットを必ず含む。2つのオ
ペレーションフィールドを持つ場合もある。
【0733】レジスタフィールド(r、gr)は組合わ
せて汎用レジスタを指定する。レジスタフィールド
(r)はアドレスレジスタのとき3ビット、データレジ
スタのとき3ビット(32ビットレジスタ)または4ビ
ット(8または16ビットレジスタ)である。2つのレ
ジスタフィールドr1,r2を持つ場合、またはレジス
タフィールドr1,r2を持たい場合もある。
【0734】レジスタフィールド(gr)は4ビット存
在するが、特に制限はされないものの下位2ビットを有
効にする。レジスタフィールド(gr)を含むワード
(op,gr1,gr2を含むワード)は省略可能とさ
れ、省略された場合は、0が与えられたものと想定さ
れ、グループ0のレジスタセットが指定されたものと見
なされ、レジスタフィールド(r)で指定されるレジス
タはレジスタ番号は0〜7とされ、汎用レジスタER0
〜ERが選択できる。そのようなワード(op,gr
1,gr2を含む命令コード)をレジスタ拡張用前置命
令コードと称する。
【0735】レジスタ番号n=gr[1:0]<<3+
r[2:0]で求められる(<<3は3ビット左シフト
を示す)。即ち、grを上位とし、rの下位3ビットr
[2:0]を下位とした5ビットで指定される番号のレ
ジスタを指定する。例えば、gr=0、r=1の場合は
レジスタ番号n=1となり、gr=2、r=3の場合は
レジスタ番号n=19となる。このレジスタ番号nに対
応する汎用レジスタERnの、命令コードのサイズを指
定する部分や、r[3]の内容によって、レジスタE
R、レジスタE、レジスタR、レジスタRH、レジスタ
RLが指定される。例えば、データサイズがロングワー
ド、ワード、バイトの何れであるかは命令コードのオペ
レーションフィールドの所定のビットで指定される。デ
ータサイズがワード又はバイトのとき、利用するレジス
タ位置はr[3]で指定される。r[3]は、rの下位
から4ビット目のビットデータを意味する。データサイ
ズがワードのときr[3]=1のときはレジスタEを指
定し、r[3]=0のときはレジスタRを意味する。デ
ータサイズがバイトのときr[3]=1のときはレジス
タRLを指定し、r[3]=0のときはレジスタRHを
意味する。
【0736】尚、gr1、r1はソースレジスタまたは
アドレスレジスタのレジスタ指定フィールドを意味し、
gr2、r2はデスティネーションレジスタまたはデー
タレジスタのレジスタ指定フィールドを意味する。gr
1(命令コードの基本ワード中のビット7〜4)はr1
(命令コードの基本ワード中のビット7〜4またはビッ
ト6〜4)に、gr2(命令コードの基本ワード中のビ
ット3〜0)はr2(命令コードの基本ワード中のビッ
ト11〜8またはビット3〜0)に対応する。
【0737】EA拡張部(EA)は、イミディエイトデ
ータ、絶対アドレスまたはディスプレースメントを指定
し、8ビット、16ビット、または32ビットである。
コンディションフィールド(cc)は条件分岐命令(B
cc命令)の分岐条件を指定する。
【0738】各命令フォーマット毎に例示されている命
令コードは、16進数で表記した機械語を意味する。グ
ループ指定フィールドgr1、gr2を持つ前置命令コ
ード(00)を省略すると、既存の命令コードになるよ
うになっている。
【0739】例えば、図9の(2)に例示されたH'0
901を単独で使用する場合、ADD.W R0,R1
となり、これに、図9の(3)に例示されるグループ指
定フィールドを持つ前置命令コードH'0012を付加
すると、H'00120901は、 ADD.W R8,
R17となる。
【0740】また、暗黙的に使用されるグループ0を指
定するH'0000はNOP(無操作)命令になる。
H'00xx(xxは01〜FF)は、グループフィー
ルドを指定し、連続的に次の命令コードを実行する(割
込みを禁止する)他は、NOP命令と同様に、PCのイ
ンクリメントを行い、最小のステート数で実行される。
【0741】レジスタ指定フィールド(gr)は、4ビ
ットあるので、論理的には汎用レジスタグループを16
に拡張することができる。この場合では32ビット汎用
レジスタ128本(または16ビット汎用レジスタ25
6本)を利用できる。
【0742】レジスタ指定フィールド(gr)に対応す
るオペレーションフィールドは複数種類あってよい。例
えば、単純にレジスタ指定のみを行うものと、そのほか
の機能(データサイズなど)を切り換える機能とを合わ
せ持つオペレーションコードとを用意しもよい。
【0743】図10はCPU502における単一の汎用
レジスタのデータ転送命令の機械語の命令コードを例示
する図面でもある。それぞれのアドレッシングモードの
実効アドレスの計算は図7及び図8に従い、機械語の命
令フォーマットは図9に従っている。
【0744】図83には複数汎用レジスタの転送命令
(MOVM)のような命令を示す前置命令コード(命令
拡張用前置命令コード)が例示される。複数レジスタの
転送命令は、命令拡張用前置命令コードと、既存の転送
命令コードとを組合せて、複合命令化して実現される。
【0745】命令拡張用前置命令コードは以下の通りで
ある。ビット2(最下位から3ビット目)が、レジスタ
のサイズを示し、B’0(B’はバイナリデータである
ことを意味する)がワードサイズ、B’1がロングワー
ドサイズを意味する。ビット5、4が汎用レジスタ本数
を示し、B’01が2本、B’10が3本、B’11が
4本とする。この本命令コードは、下位CPUの命令セ
ットに対して追加された新たな命令コードとされる。
【0746】この命令拡張用前置命令コードを用いたデ
ータ転送命令は、単一の汎用レジスタとメモリのデータ
転送命令(MOV)のようなワードサイズの命令コード
(例えば、絶対アドレス16ビットのとき、2ワード)
に、ロングワードサイズを示す命令コードが付加されて
構成される(例えば、絶対アドレス16ビットのとき、
合計3ワード)のと等価である。
【0747】図83によれば、サイズを切り替える情報
を保持しているため、単一の汎用レジスタとメモリのデ
ータ転送命令のロングワードサイズを示す命令コードに
代えて、前記命令拡張用前置命令コードを付加すればよ
い。命令コード長を長くすることなく、複数汎用レジス
タのデータ転送命令(MOVM)を実現できる。
【0748】なお、既存の、複数汎用レジスタのスタッ
クへの待避命令である「STM ER0−3,@−S
P」と、本発明の命令である「MOVM.L ER0−
3,@−SP」とは概略同様の動作になるが、スタック
上での汎用レジスタの配置順序が異なる。STM命令で
は、スタックの先頭(実効アドレス)からER3、ER
2、ER1、ER0の順序でデータが配置されるのに対
して、MOVM命令では、スタックの先頭からER0、
ER1、ER2、ER3の順序でデータが配置される。
上記双方の命令による処理は、後述するようにアドレス
演算手法において大きく相違されている。
【0749】前記命令拡張用前置命令コードを採用する
場合には前記スタックへの退避命令を持たなくても動作
上支障はないが、ソフトウェア資産を有効に利用する観
点に立つと、両方の命令コードを持つことが望ましい。
【0750】または、複数レジスタの転送命令における
汎用レジスタのリード/ライトの順序を、番号の大きい
方から使用するものとすれば、上記命令を同一の動作に
することもできる。更には、汎用レジスタのリード/ラ
イトの順序を、内部I/Oレジスタなどで指定可能にし
てもよい。
【0751】図84には上位CPU502の詳細な一例
が示される。このCPU502は制御部CONTと実行
部EXECから構成される。
【0752】制御部CONTは、命令レジスタIR1、
命令レジスタIR2、命令デコーダDEC、レジスタセ
レクタRSEL、割込み制御部INTCを有する。下位
CPUに対して、命令レジスタIR2が追加され、レジ
スタセレクタRSELの構成が相違されている。命令デ
コーダDECも命令レジスタIR2の追加や、レジスタ
セレクタRSELの構成の変更に対応して変更されてい
る。特に、制御部CONTは、命令拡張用前置命令コー
ドの有無に応じた第1の制御、レジスタ拡張用前置命令
コードの有無に応じた第2の制御を行なうようになって
いる。
【0753】第1の制御は、命令で指定可能な複数の汎
用レジスタの組み合わせを固定的にして、当該組み合わ
せが固定的な複数の汎用レジスタとアドレス空間上のメ
モリアドレス又は汎用レジスタとの間でデータ転送を可
能にする制御を行う。上記転送命令の実効アドレスの計
算は、演算器ALUで1回のみ行なうようにし、後続の
アドレスについては、アドレスバッファABのインクリ
メントまたはデクリメント機能で対処させる。
【0754】第2の制御は、上位互換を考慮したレジス
タ指定制御であり、一方では拡張された汎用レジスタを
レジスタ拡張用前置命令コードを用いて指定するように
し、他方では、省略可能なレジスタ指定フィールドgr
(gr1、gr2)が省略されたとき省略不可能なレジ
スタ指定フィールドr(r1、r2)によるレジスタ指
定を暗黙的にレジスタグループ0に含まれるレジスタの
指定とみなす制御を行なう。
【0755】前記命令デコーダDECは、例えば、マイ
クロROM或はPLA(Programmable L
ogic Array)または布線論理で構成される。
【0756】レジスタセレクタRSELには、前記命令
デコーダDECの出力信号、命令レジスタIR1,IR
2の出力信号、そして前記SYSC3に含まれる内部I
/OレジスタCPUCRの出力信号ispgr,ssp
grが供給される。
【0757】前記命令レジスタIR1は内部データバス
IDBから命令が供給される。前記命令レジスタIR1
の出力は、もう一つの命令レジスタIR2、前記命令デ
コーダDEC及び前記レジスタセレクタRSELに結合
される。前記命令レジスタIR2の出力は前記レジスタ
セレクタRSELに結合される。
【0758】前記命令デコーダDECの出力はレジスタ
セレクタRSEL及び前記命令レジスタIR2に結合さ
れる。命令デコーダDECは命令レジスタIR1にフェ
ッチされた命令のオペレーションフィールドのオペレー
ションコードを解読する。
【0759】命令レジスタIR1にフェッチされた命令
コードがレジスタ拡張用前記前置命令コードであると
き、命令デコーダDECがこれを解読することによっ
て、当該レジスタ拡張用前置命令コードのレジスタグル
ープ指定フィールド(gr)のレジスタ指定情報を命令
レジスタIR2にラッチさせる。その時のラッチ信号は
命令デコーダDECから出力される。命令レジスタIR
2にラッチされたレジスタフィールド指定情報、及び続
けて命令レジスタIR1にフェッチされた後続の命令に
含まれるレジスタフィールド(r)のレジスタ指定情報
は、レジスタセレクタRSELで解読され、それら情報
で直接的に指定されたレジスタグループの中のレジスタ
が選択され、選択されたレジスタを利用して当該後続の
命令が実行される。この命令実行後、前記命令デコーダ
DECは前記命令レジスタIR2のラッチ情報を全ビッ
ト値“0”(レジスタグループ0の指定情報)にクリア
するためのセット信号を命令レジスタIR2に供給す
る。したがって、その後に、前置命令コードを省いた命
令が命令レジスタIR1にフェッチされても、命令レジ
スタIR2の出力はレジスタグループ0の指定情報を維
持する結果、レジスタセレクタRSELは暗黙的にレジ
スタグループ0が指定されていると見做して、命令レジ
スタIR1からのレジスタ指定情報に従ったレジスタを
レジスタグループ0から選択する。
【0760】実行部EXECには、更に、テンポラリレ
ジスタTRA,TRD、算術論理演算器ALU、インク
リメンタINC、リードデータバッファRDB、ライト
データバッファWDB、アドレスバッファABを含む。
これらの回路ブロックはデータバスGB、DB、WBに
よって相互に接続されている。前記データバスGB、D
BはレジスタER0〜ER31に対するデータリードバ
ス、データバスWBはレジスタER0〜ER31に対す
るデータライトバスとして位置付けられる。尚、詳細な
図示を省いているが、実行部EXECの各部は、汎用レ
ジスタの分割E(16ビット)、H(8ビット)、L
(8ビット)に呼応して分割されている。
【0761】前記算術論理演算器ALUは、命令によっ
て指定される各種の演算や実効アドレスの計算など用い
る。前記インクリメンタINCは、主に、プログラムカ
ウンタPCの加算に用いられる。
【0762】リードデータバッファRDBは、前記RO
M504、RAM505、内部I/Oレジスタ、或は図
示を省略する外部メモリから、リードした命令コードや
データを一時的に格納する。ライトデータバッファWD
BはROM504、RAM505、内部I/Oレジス
タ、或は外部メモリへのライトデータを一時的に格納す
る。リードデータバッファRDB、ライトデータバッフ
ァWDBによってCPU502の内部動作と、CPU5
02の外部のリード/ライト動作のタイミングを調整し
ている。
【0763】アドレスバッファABは、CPU502が
リード/ライトするデータのアドレスを一時的に格納す
るほか、格納した内容に対するインクリメント機能と、
インクリメント結果を保持する機能を有している。GB
バス、DBバス、WBバスが32ビットであるのに対し
て、IDBが16ビットであるため、32ビットのデー
タを、2回の16ビットデータのアクセスとする場合
に、2回めのデータアクセスに先立って、アドレスバッ
ファABの内容をインクリメントする。
【0764】図85には前記レジスタセレクタRSEL
の一部と命令レジスタIR2との詳細なブロック図が示
される。
【0765】前記命令レジスタIR2は、保持手段とし
てのラッチ回路LGR1,LGR2を有する。これらラ
ッチ回路LGR1,LGR2は、前述の通りレジスタグ
ループ指定フィールドgr1、gr2のレジスタグルー
プ指定情報をラッチする。
【0766】図85に従えば、前記ラッチ回路LGR
1,LGR2は、いわゆるリセット付きD型フリップフ
ロップによって構成されている。リセット信号RSLG
Rとして、命令デコーダDECから指定される命令実行
終了信号RSLGRを入力する。ラッチクロックとし
て、命令デコーダDECから指定されるラッチクロック
LGRCLを入力し、また、データとして、命令レジス
タIR1が保持する命令コードのビット7〜4、3〜0
(グループ4の場合は、ビット5、4、1、0のみでも
よい)を入力する。ラッチクロックLGRCLは、レジ
スタグループを指定する命令コード(省略可能なレジス
タ拡張用前置命令コード)を実行したときに活性状態に
なって、そのときのレジスタフィールド(gr)であ
る、ビット7〜4、3〜0をラッチさせる。ラッチ回路
LGR1,LGR2は、命令の実行終了時点で、命令デ
コーダDECからの制御信号であるリセット信号RSL
GRに基づいて、所定の値、例えば全ビット0に設定さ
れ、レジスタブロック0を指定する状態に初期化され
る。汎用レジスタグループを指定するレジスタ拡張用前
置命令コードを持たない命令は、ラッチ回路LGR1,
LGR2が値“0”にクリアされたままになっているか
ら、命令実行が行われるとき、レジスタグループ0の汎
用レジスタが指定されることになる。
【0767】レジスタセレクタRSELのデスティネー
ションレジスタ指定側には、ラッチ回路LGR2から出
力されるレジスタグループ指定フィールド(gr2)の
情報を保持するラッチ回路LAT1と、命令レジスタI
R1から出力されるレジスタ指定フィールド(r2)の
情報をラッチするラッチ回路LAT2が設けられてい
る。それらラッチ回路LAT1,LAT2は、システム
クロックφの反転クロックφ#でラッチ動作を行うよう
になっており、ソースレジスタの選択動作より遅くデス
ティネーションレジスタの選択動作が行なわれる。これ
によって、デスティネーション側のレジスタ指定情報の
ラッチタイミング即ちデスティネーションレジスタ選択
タイミングがソースレジスタ選択タイミングよりも0.
5ステート遅くなるようにされる。ソースレジスタはア
ドレスレジスタとして先行して選択され、デスティネー
ションレジスタはデータの書込みのために遅れて選択さ
れることが可能になっている。
【0768】更に、命令レジスタIR1から出力される
レジスタ指定フィールドr1の情報と、ラッチ回路LA
T2から出力されるレジスタ指定フィールドr2の情報
とは、論理回路LOG1,LOG2に入力され、入力さ
れたレジスタ指定フィールドr1、r2のビット0と1
が、制御信号s1〜s3よって制御されて、論理回路L
OG1,LOG2から出力され、組合せ固定的なレジス
タ選択に用いられる。前記制御信号s1〜s3はデコー
ダDECから出力される。制御信号s1〜s3は複数汎
用レジスタの転送命令の実効時に使用され、それ以外の
ときは全部0にされていて、LOG1,LOG2の入力
r1,r2がそのまま出力とされる。
【0769】前記制御信号s1〜s3の機能は図86に
例示されている。制御信号s1はレジスタ指定フィール
ドr1,r2の情報のビット0を1に固定する。同様
に、制御信号s2はレジスタ指定フィールドr1,r2
の情報のビット1を1に、ビット0を0に固定する。s
3はレジスタ指定フィールドr1,r2の情報のビット
1とビット0を共に1に固定する。汎用レジスタ2本を
指定する場合は、制御信号s1が出力される。3本の場
合は、s1、s2の順に出力され、4本の場合は、s
1、s2、s3の順に出力される。これにより、複数本
の汎用レジスタを対象とする転送命令において最初に一
つのレジスタがレジスタ指定フィールドr1,r2で指
定されれば、その後はそれに続くレジスタが上記制御信
号s1〜s3により規定の順に選択される。これによっ
て、組合せ固定的に順次汎用レジスタが選択される。上
記制御信号s1〜s3の出力論理より明らかなように、
複数の汎用レジスタの転送命令において3ビット又は4
ビットのレジスタ指定領域r1,r2でレジスタを指定
するとき、当該レジスタ指定領域r1,r2に設定可能
な初期値は、その命令が転送対象とする汎用レジスタの
本数によって異なり、2本の場合は***0、3本の場
合は**00、4本の場合は**00でなければならな
い。記号*はどのような値を採ってもよい。これによっ
て、レジスタセレクタSEL自体をそのほかの命令と共
通化して、前記複数汎用レジスタ転送命令に対処できる
ので、論理的規模の増加を極力抑止できる。
【0770】図87には前記アドレスバッファABの一
例が示される。アドレスバッファABは、ラッチ回路5
21、インクリメンタ522、セレクタ・バッファ52
3から構成される。前記ラッチ回路521は、内部バス
GBとインクリメンタ522の出力を入力する。制御信
号mabincが活性状態の場合に、インクリメンタ5
22の出力がラッチされ、非活性状態の場合に、バスG
Bの内容がラッチされる。
【0771】前記インクリメンタ522は、ラッチ回路
521の出力を入力して、+2の加算を行なう。制御信
号mabincが活性状態にされることによって、イン
クリメントされた値がラッチ回路21からインクリメン
タ22に繰り返し帰還されることにより、複数回のイン
クリメント+4、+6、…が可能にされる。
【0772】セレクタ・バッファ523は、ラッチ回路
521とインクリメンタ522の内容を入力する。制御
信号mabincが活性状態の場合に、インクリメンタ
522の出力が選択され、非活性状態の場合に、ラッチ
回路521の出力が選択される。選択された内容は、バ
ス権アクノレッジ信号に従って、内部アドレスバスIA
Bに出力される。バス権アクノレッジが非活性の場合に
は、アドレスバッファABは、内部アドレスバスIAB
への出力は行なわず、出力はハイインピーダンス状態に
される。
【0773】図88及び図89にはレジスタ・レジスタ
間のワードサイズの転送命令(MOV及びMOVM命
令)に対するデコーダDECの制御論理の一部が論理記
述によって示される。図9の記述は図88の後に続く残
りの論理記述である。図93は図88乃至89に記載の
論理記述の制御によるレジスタ・レジスタ間の単一及び
複数汎用レジスタの転送命令(MOV及びMOVM)に
よる制御動作に対応されるフローチャートである。
【0774】図88及び図89に示された論理記述は、
RTL(Register Transfer Level)若しくはHDL(H
ardware Description Language)記述と呼ばれ、公知の
論理合成ツールによって、論理回路に論理展開できる。
HDLはIEEE1364として標準化されている。こ
れに示される論理記述の構文は、ケース(case)文
に準拠しており、always@の次の()内で定義さ
れた値若しくは信号に変化が有ったとき、それ以下の記
述行の処理を行う、という内容になっている。「8’b
00001000」は8ビット長の00001000を
意味する。また、図において、小文字の信号は、命令デ
コーダDECで生成され、出力される信号とし、大文字
の信号は命令デコーダDECに入力された信号とする。
【0775】図88の論理記述において転送命令が単一
汎用レジスタを用いるか、複数汎用レジスタを用いるか
は、信号MOD2〜MOD4によって指示される。信号
MOD2は2本の汎用レジスタの指定を示し、信号MO
D3は3本の汎用レジスタの指定を示し、信号MOD4
信号は4本の汎用レジスタの指定を示す。それら信号M
OD2〜MOD4は命令拡張用前置命令コードの内容に
よってによって生成される。
【0776】図88及び図89の論理記述ではステート
コードTMG(5ビットの情報)にしたがって制御信号
を生成するようになっており、現時点でのステートコー
ドの値とその時のMOD2〜MOD4の値とに従って、
次のステートコードNEXTTMGの値を決定するよう
になっている。
【0777】単一レジスタの転送命令ではステートコー
ドTMGは1(0001)であり、これに対して、複数
レジスタの転送命令固有のデータ転送制御のためにステ
ートコードTMG5(00101)、9(0100
1)、13(01101)が加えられている。
【0778】複数レジスタの転送命令は、MOD2〜M
OD4信号で示される。図88の論理記述の第1の部分
(1)でステートコードTMGが生成される。単一レジ
スタの場合、ステートコードTMGは1である。複数レ
ジスタの場合、例えば、MOD4=1ではTMGは1→
5→9→13と進行する。MOD3=1では、ステート
コード13が、MOD2=1では、ステートコード9及
び13が、省略される。
【0779】なお、NEXTTMG[5]=0のとき、
次のTMGはNEXTTMG[4:0]とされる。NE
XTTMG[5]=1のとき、次のTMGは5’b00
001とされる。
【0780】図89の論理記述の第2の部分(2)でバ
ス制御を行なう。nop=0はバスアクセス開始、no
p=1はバスアクセス禁止を指示する。data=0は
命令リード、data=1はデータアクセスを指示す
る。
【0781】本転送命令の場合、ステートコードTMG
が1で命令リードを行い、ステートコードTMGが5、
9、13ではバスアクセスを行なわない。
【0782】命令リードの場合は所定のタイミングで内
部データバスIDBの内容が命令レジスタIR1とリー
ドデータバッファRDBに格納される。データリードの
場合は所定のタイミングで内部データバスIDBの内容
がリードデータバッファRDBに格納される。データラ
イトの場合は所定のタイミングでライトデータバッファ
WDBの内容がIDBに出力される。
【0783】図89の論理記述の第3の部分(3)で、
転送データを制御する。各ステートで、汎用レジスタか
ら内部バスDBへ出力し、算術論理演算器ALUを経由
して、内部バスWBから汎用レジスタへのライトを指示
する。
【0784】いずれの場合も、汎用レジスタを指定した
後、レジスタ指定フィールドr2の更新を行なう。信号
s1が1のときは、レジスタフィールドr1のビット0
を1に固定する。同様に、信号s2は、ビット1を1
に、ビット0を0に固定する。信号s3はビット1、0
を1に固定する。
【0785】ステートコードTMGの1では、単一レジ
スタの転送命令、即ち、MOD2〜MOD4が何れも0
のとき、ccrset信号が1とされ、コンディション
コードレジスタCCRの所定のビットが転送データを反
映して変化するようにされる。
【0786】図90乃至図92に記載の論理記述は、1
6ビット絶対アドレスによる転送命令(MOV及びMO
VM命令)に対するデコーダDECの制御論理の一部を
示す。図91の記述は図90の後に続く残りの論理記
述、図92の記述は図91の後に続く残りの論理記述で
ある。図94は図90乃至図92に記載の論理記述の制
御による16ビット絶対アドレスによる単一及び複数汎
用レジスタの転送命令(MOV及びMOVM)による制
御動作に対応されるフローチャートである。
【0787】図10の「(4)16ビット絶対アドレ
ス」に示される通り、データサイズはIR[8](イン
ストラクションレジスタIRの最下位から8ビット目)
=0のときバイトサイズ、IR[8]=1のときワード
サイズ、転送方向はIR[7]=0のときメモリ→汎用
レジスタ(リード型)、IR[7]=1のとき汎用レジ
スタ→メモリ(ライト型)、の転送となる。
【0788】ワードサイズ/ロングワードサイズ、単一
レジスタ/複数レジスタの選択は、信号LNG、信号M
OD2〜MOD4によって指示される。信号LNGはロ
ングワードサイズを示す。信号MOD2〜MOD4は、
それぞれ2〜4本のレジスタ選択を示し、命令拡張用前
置命令コードに従って生成される。
【0789】単一レジスタの転送命令のフロー(ステー
トコード1→2→3)に対して、複数レジスタの転送命
令固有のデータ転送のステート(ステートコード6、1
0、14)と、単一/複数レジスタの転送命令のロング
ワードサイズ時のステート(ステートコード18、2
2、26、30)が加えられている。
【0790】図90に示される論理記述の第1の部分
(1)でステートコードTMGが生成される。単一レジ
スタの場合、ステートコードTMGは1→2→3と進行
する。複数レジスタの場合、例えば、MOD4=1では
TMGは1→2→6→10→14→3と進行する。MO
D3=1では、ステートコード14が省略され、MOD
2=1では、ステートコード10及び14が省略され
る。また、ロングワードサイズの場合は、ステートコー
ド18、22、26、30が追加される。
【0791】図91の論理記述の第2の部分(2)では
バス制御を行なう。本転送命令の場合、ステートコード
1、3で命令リードを行い、ステートコード2、18、
6、22、10、26、14、30でデータアクセスを
行なう。データアクセスのリード/ライトはIR[7]
によって指示される。最後のデータアクセス以外では、
long=1とし、バス権移譲禁止を指示する。
【0792】命令リードの場合は所定のタイミングで内
部データバスIDBの内容がインストラクションレジス
タIRとリードデータバッファRDBに格納される。デ
ータリードの場合は所定のタイミングで内部デーバスI
DBの内容がリードデータバッファRDBに格納され
る。データライトの場合は所定のタイミングでライトデ
ータバッファWDBの内容が内部データバスIDBに出
力される。
【0793】図91に示される論理記述の第3の部分
(3)で実効アドレスを計算する。本転送命令の場合、
ステートコード2で、リードデータバッファRDBに保
持している命令コードのEA拡張部16ビットを、信号
dbrextによって32ビットに符号拡張した上、内
部バスGBに出力する。内部バスGBの内容はアドレス
バッファABに毎ステート格納されるようにされてお
り、特に制御は必要ない。ステートコード18、6、2
2、10、26、14、30では、信号mabincに
よって、アドレスバッファABに保持した内容のインク
リメント(+2)を行なう。
【0794】図92に示される論理記述の第4の部分
(4)で、転送データを制御する。リード型(IR
[7]=0)の場合は、ステートコード6、10、1
4、3で、リードデータをリードデータバッファRDB
から内部バスGBへ出力し、算術論理演算器ALUと内
部バスWBを経由して、汎用レジスタへ格納する。ライ
ト型(IR[7]=1)の場合は、ステートコード2、
6、10、14で汎用レジスタから内部バスDBへ出力
し、ライトデータバッファWDBを経由して、内部デー
タバスIDBに出力する。何れの場合も、汎用レジスタ
を指定した後、レジスタ指定フィールドr1の更新を行
なう。信号s1が1のときは、レジスタフィールドr1
のビット0を1に固定する。同様に、信号s2は、ビッ
ト1を1に、ビット0を0に固定する。信号s3はビッ
ト1、0を1に固定する。これらは、図93においてr
2++と示されている。
【0795】ステートコード3では、単一レジスタの転
送命令、即ち、信号MOD2〜MOD4が何れも0のと
き、信号ccrsetが1とされ、コンディションコー
ドレジスタCCRの所定のビットが転送データを反映し
て変化するようにされる。
【0796】そのほかのアドレッシングモードについて
も、上記同様に、所定の命令リードと実効アドレスの計
算に加えて、ステートコード18、6、22、10、2
6、14、30に相当するデータアクセスの動作を加え
ればよい。これらは各種のアドレッシングモードに共通
にすることができる。
【0797】図95にはレジスタ・レジスタ型の、第1
の転送命令(MOV.L ER0,ER1)、第2の転
送命令(MOV.L ER8,ER17)、及び複数レ
ジスタの転送命令の第1の例(MOVM.W R0−R
1,E28−E29)の実行タイミングが例示される。
【0798】レジスタ・レジスタ型の第1の転送命令
(MOV.L ER0,ER1)は、グループ0の汎用
レジスタのみを使用するので、汎用レジスグループを指
定する命令コードを必要とせず、前記CPU2に対する
下位CPUと同じ1ワードの命令とする。
【0799】図95では、特に制限はされないものの、
内蔵ROM504、RAM505のリード/ライトを1
ステートでリード/ライト可能とする場合のタイミング
を示している。以下の説明において、φの立ち上がりに
同期する1ステートをφ同期ステートと称し、φ#(ク
ロック信号φの反転クロック信号であり図示を省略す
る)の立ち上がりに同期する1ステートをφ#同期ステ
ートと称する。
【0800】サイクルT0のφ#同期ステートで、CP
U502のアドレスバッファABからアドレスが内部ア
ドレスバスIABに出力される。また、命令デコーダD
ECから、命令フェッチ(if)を示す、バスコマンド
BCMDが出力される。
【0801】サイクルT1のφ同期ステートで、内部ア
ドレスバスIABの内容が内部アドレスバスPABに出
力され、バスコマンドBCMDに基づき、リードサイク
ルが開始され、内部データバスPDBにデータが出力さ
れる。サイクルT1のφ#同期ステートで内部データバ
スPDBのリードデータが内部データバスIDBに得ら
れ、これをサイクルT2のφ同期ステートでインストラ
クションレジスタIR1にラッチする。以上の動作は以
前の命令の実行の制御によって行われる(プリフェッ
チ)。ここで、内蔵ROM504、RAM505は、内
部アドレスバスPAB及び内部データバスPDBに接続
されていないが、前記内部バスPAB、PDB相当の動
作をモジュール内で行い、本タイミング図には、このモ
ジュール内の動作を示している。
【0802】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、サイクルT2のφ同
期ステートで命令コードが命令デコーダDECに入力さ
れて、命令の内容が解読される。解読結果に従って、制
御信号を出力して、各部の制御を行う。命令の一部であ
るレジスタ指定フィードr1、r2の値や複数レジスタ
のレジスタ本数によって形成される信号s1〜s3を回
路LOG1,LOG2が受けて、レジスタフィールドr
1、r2の値を制御してそれを出力する。回路LOG1
の出力を信号SEL1、回路LOG2の出力を信号SE
L2と称する。
【0803】レジスタ間演算命令では、サイクルT2の
φ#同期ステートで、プログラムカウンタPCの内容を
内部バスGBに読み出して、アドレスバッファABとイ
ンクリメンタINCに入力する。アドレスバッファAB
からアドレスバスIABにアドレス信号が出力される。
このとき、ラッチ回路LGR1及びLGR2が何れも0
にクリアされているので、前記信号SEL1、SEL2
と命令デコーダDECの出力する制御信号B(Rs→D
B)とに基づいて、レジスタセレクタRSELはレジス
タ選択信号B(ER0→DB)を生成する。
【0804】サイクルT3から、次の次の命令(本例で
は、MOV.L ER8,ER17)がリードされる。
サイクルT3のφ同期ステートで、インクリメンタIN
Cでインクリメント(+2)された結果が、内部バスW
Bを経由してプログラムカウンタPCにライトされる。
信号SEL1、SEL2と制御信号C(WB→Rd)と
に基づいて、レジスタセレクタRSELがレジスタ選択
信号C(WB→ER1)を生成する。レジスタ選択信号
Bがレジスタを選択して、ソース側のレジスタ(Rs)
のデータを算術論理演算器ALUに入力する。算術論理
演算器ALUの演算内容は、命令デコーダDECが制御
信号Cによって指示する。加算、論理演算、シフトなど
は1クロックで演算を行うことができる。例えば、上記
命令では32ビットの加算が指示される(バスGB側の
入力は0とされる)。
【0805】次の命令の命令デコーダDECへのロード
が指示される。制御信号B(RSLGR)によって、ラ
ッチ回路LGR1、LGR2のクリアが指示される。ラ
ッチ回路LGR1はサイクルT3のφ同期ステートで、
ラッチ回路LGR2はサイクルT3のφ#同期ステート
でクリアされた結果が伝達される。
【0806】サイクルT3のφ#同期ステートで、算術
論理演算器ALUの演算結果が、内部バスWBを経由し
て、レジスタ選択信号Cが選択したデスティネーション
側のレジスタ(ER1)にライトされる。図示はされな
いが、制御信号Cによって、コンディションコードレジ
スタCCRの更新を行う。更に次の次の命令を命令レジ
スタIR1に取り込む。同時に、次の命の実行が開始さ
れ、例えば、プログラムカウンタPCの内容を読み出し
て、アドレスバッファABとインクリメンタINCに入
力される。
【0807】グループ0同士のレジスタ間演算を実質的
に1ステートで実行できる。
【0808】レジスタ・レジスタ型の第2の転送命令
(MOV.L ER8,ER17)は、汎用レジスタグ
ループを指定する命令コードを付加して2ワード命令と
する。第2ワードは前記MOV.L R0,R1と同一
である。すなわち、gr1=1であるため、同じr1=
0に対して、レジスタ番号n=8、また、gr2=2で
あるため、同じr2=1に対して、レジスタ番号n=1
7と解釈される。
【0809】サイクルT2のφ#同期ステートで、CP
U502のアドレスバッファABからアドレスがアドレ
スバスIABに出力される。
【0810】サイクルT3のφ同期ステートで、アドレ
スバスIABの内容がアドレスバスPABに出力され、
リードサイクルが開始される。サイクルT3のφ#同期
ステートでリードデータが内部データバスに得られ、こ
れをサイクルT4のφ同期ステートで命令レジスタIR
1にラッチする。これは、レジスタグループフィールド
を持つ省略可能な命令ワード(前置命令コード)であ
る。
【0811】引き続き、サイクルT4のφ#同期ステー
トで次のアドレス(+2された内容)がアドレスバスI
ABに出力され、このリードデータがサイクルT5のφ
同期ステートで命令レジスタIR1にラッチされる。以
上の動作は前記レジスタ・レジスタ型の第1の転送命令
及び図示はされない次の命令の実行の制御によって行わ
れている。
【0812】サイクルT4のφ同期ステートで命令コー
ド(前置命令コード)が命令デコーダDECに入力され
て、命令の内容が解読される。解読結果に従って、制御
信号を出力して、各部の制御を行う。グループフィール
ドラッチ信号LGRCLが発行されて、レジスタグルー
プ指定フィールド(IR1のビット7〜0)がラッチ回
路LGR1,LGR2にラッチされる。
【0813】サイクルT4のφ#同期ステートで、プロ
グラムカウンタPCの内容を内部バスGBに読み出し
て、アドレスバッファABとインクリメンタINCに入
力する。アドレスバッファABからアドレスバスIAB
にアドレス信号が出力される。
【0814】サイクルT5から、更に次の命令(本例で
は、MOVM.W R0−R1,E28−E29)がリ
ードされる。
【0815】サイクルT5のφ同期ステートで、インク
リメンタINCでインクリメント(+2)された結果
が、内部バスWBを経由してプログラムカウンタPCに
ライトされる。第1ワードと第2ワード以降が分割され
ないための制御信号B(controlB)に含まれる
連続命令信号continue(割込み禁止信号msk
intと同じ)を割込み制御回路INTCに出力する。
本信号によって、割込み要求などが発生していても、命
令の実行を継続することができる。また、ラッチ回路L
GR1、LGR2の内容が保持される。
【0816】一方、サイクルT4のφ同期ステートで命
令コード(転送命令を指示)が命令デコーダDECに入
力されて、命令の内容が解読される。解読結果に従っ
て、制御信号を出力して、各部の制御を行う。LGR1
=1及びLGR2=2であるため、信号SEL1,SE
L2と命令デコーダDECの出力する制御信号B(Rs
−DB)とに基づいて、レジスタ選択信号B(ER8−
DB)が生成される。信号SEL1、SEL2と制御信
号C(WB−Rd)とに基づいて、レジスタ選択信号C
(WB−ER17)が生成される。これ以外の第2ワー
ドによる動作は第1の転送命令(MOV.L ER0,
ER1)と同一にできる(第1の転送命令同様に、制御
信号B(RSLGR)によって、LGR1、LGR2の
クリアが指示される。ラッチ回路LGR1はサイクルT
6のφ同期ステートで、ラッチ回路LGR2はサイクル
T6のφ#同期ステートでクリアされた結果が伝達され
る)。
【0817】即ち、第1ワード(前置命令コード)に対
応するラッチ回路LGR1,LGR2のラッチ信号、連
続命令信号を出力する以外は、命令デコーダDECの内
容を、既存の下位CPUの命令デコーダと同等にでき
る。命令デコーダDECの前置命令コードに対応する部
分は、相対的に小さいことは言うまでもない。すなわ
ち、論理的な規模の追加を最小限にできる。また、命令
デコーダDECの大部分を既存の下位CPUの命令デコ
ーダと同等にできるから、従来の設計資産を有効に利用
することができる。
【0818】次に、複数レジスタのレジスタ・レジスタ
間転送命令である「MOVM.WR0−R1,E28−
E29」の例を示す。レジスタ指定フィールドr1は
3’b000、r2は3’b100である。
【0819】本転送命令「MOVM.W R0−R1,
E28−E29」は、汎用レジスタグループを指定する
レジスタ拡張用前置命令コードと、MOVMを示す命令
拡張用前置命令コード(プリフィックスコードとも称す
る)を付加して、3ワード命令とする。第3ワード(m
ov)はMOV.W R0,R4と同一である。gr2
=3であるため、同じr1=4に対して、レジスタ番号
n=28と解釈される。ワードサイズで、r2[3]=
1であるため、汎用レジスタEが指定される。
【0820】サイクルT5のφ#同期ステートで、CP
U502のアドレスバッファABからアドレスがアドレ
スバスIABに出力される。
【0821】サイクルT6のφ同期ステートで、アドレ
スバスIABの内容がアドレスバスPABに出力され、
リードサイクルが開始される。サイクルT6のφ#同期
ステートでリードデータが内部データバスに得られ、こ
れをサイクルT7のφ同期ステートで命令レジスタIR
1にラッチする。これは、レジスタグループフィールド
を持つ省略可能な命令ワード(前置命令コード)であ
る。
【0822】引き続き、サイクルT7のφ#同期ステー
トで次のアドレス(+2された内容)がアドレスバスI
ABに出力され、このリードデータがサイクルT8のφ
同期ステートで命令レジスタIR1にラッチされる。以
上の動作は前記レジスタ・レジスタ型の第2の転送命令
及び図示はされない次の命令の実行の制御によって行わ
れている。
【0823】サイクルT7のφ同期ステートで第1の命
令コードが命令デコーダDECに入力されて、命令の内
容が解読される。解読結果に従って、グループフィール
ドラッチ信号LGRCLが発行されて、レジスタグルー
プ指定フィールド(IR1のビット7〜0)がラッチ回
路LGR1、LGR2にラッチされる。
【0824】サイクルT7のφ#同期ステートで、プロ
グラムカウンタPCの内容を内部バスGBに読み出し
て、アドレスバッファABとインクリメンタINCに入
力する。アドレスバッファABからアドレスバスIAB
にアドレス信号が出力される。
【0825】サイクルT8から、次の次の命令がリード
される。サイクルT8のφで、インクリメンタINCで
インクリメント(+2)された結果が、内部バスWBを
経由してプログラムカウンタPCにライトされる。第1
ワードと第2ワード以降が分割されないための制御信号
Bで連続命令信号(割込み禁止信号)を割込み制御回路
INTCに出力する。また、ラッチ回路LGR1,LG
R2の内容が保持される。また、第2の命令コードが命
令デコーダDECに入力されて、命令の内容が解読され
る。解読結果に従って、制御信号MOD2が出力され
る。サイクルT8のφ#同期ステートで、プログラムカ
ウンタPCの内容を内部バスGBに読み出して、アドレ
スバッファABとインクリメンタINCに入力する。ア
ドレスバッファABからアドレスIABにアドレス信号
が出力される。
【0826】一方、サイクルT9のφ同期ステートで命
令コード(転送命令を指示)が命令デコーダDECに入
力されて、命令の内容が解読される。解読結果に従っ
て、制御信号を出力して、各部の制御を行う。LGR1
=0及びLGR2=3であるため、信号SEL1、SE
L2と命令デコーダDECの出力する制御信号B、C
(Rs−DB、WB−Rd)とに基づいて、レジスタセ
レクタRSELでレジスタ選択信号B、C(R0−D
B、WB−E28)が生成される。制御信号s1が生成
されて、SEL1、SEL2の変更(3’b100→1
01)が指示される。
【0827】引き続き、MOD2信号に従って、信号S
EL1、SEL2と命令デコーダDECの出力する制御
信号B、C(Rs−DB、WB−Rd)とに基づいて、
レジスタセレクタRSELがレジスタ選択信号B、C
(R1−DB、WB−E29)を生成する。
【0828】図96には複数レジスタの転送命令の第2
の例(MOVM.L @aa:16,ER0−ER1)
の実行シーケンスが示される。
【0829】上記命令は、2本の汎用レジスタへデータ
をリードする例である。レジスタ指定フィールドは3’
b000である。アドレッシングモードは、絶対アドレ
ス16ビットであり、実効アドレスはaaを符号拡張し
た内容である。この符号拡張は、リードデータバッファ
RDBから読み出す際に行われるようにされる。以下で
は、aaを符号拡張した内容も、単にaaと記す。
【0830】サイクルT2から転送命令の実行が開始さ
れる。特に制限はされないものの、命令コードの第1ワ
ードは、MOVMを示すプリフィックスコードであり、
次の命令コードの動作を指定(MOD2信号出力)し、
プログラムカウンタPCをインクリメントするほかの動
作は行わない。
【0831】第2ワードの命令コード(mov−1)
は、MOV.L @aa:16,ER0命令と共通であ
る。
【0832】サイクルT4のφ#同期ステートでリード
データバッファRDBの内容がバスGBに出力されて、
アドレスバッファABに格納される。アドレスバッファ
ABの内容がアドレスバスIABに出力される。同時
に、バスコマンドBCMDが出力され、ワードデータリ
ードと次のバスサイクルでのバス権移譲禁止が示され
る。
【0833】サイクルT5のφ#同期ステートで、リー
ドデータの上位16ビット(汎用レジスタEの内容)が
内部データバスIDBに出力される。また、アドレスバ
ッファABのインクリメント機能によって、アドレスバ
スIABの出力値をaa+2とする。同時に、バスコマ
ンドBCMDが出力され、ワードデータリードと次のバ
スサイクルでのバス権移譲禁止が示される。
【0834】サイクルT6のφ同期ステートで、リード
データがリードデータバッファRDBに格納される。
【0835】サイクルT6のφ#同期ステートで、リー
ドデータの下位16ビット(汎用レジスタRの内容)が
内部データバスに出力される。また、アドレスバッファ
ABのインクリメント機能によって、アドレスバスIA
Bの出力値をaa+4とする。同時に、バスコマンドB
CMDが出力され、ワードデータリードと次のバスサイ
クルでのバス権移譲禁止が示される。
【0836】サイクルT7のφ同期ステートで、リード
データの内容が、32ビットでバスGBを経由して算術
論理演算器ALUに転送される。
【0837】サイクルT7のφ#同期ステートで、リー
ドデータの上位16ビット(汎用レジスタEの内容)が
内部データバスに出力される。また、アドレスバッファ
ABのインクリメント機能によって、アドレスバスIA
Bの出力値をaa+6とする。同時に、バスコマンドB
CMDが出力され、ワードデータリードと次のバスサイ
クルでのバス権移譲許可が示される。
【0838】サイクルT8のφ#同期ステートで、リー
ドデータの下位16ビット(汎用レジスタRの内容)が
内部データバスに出力される。また、第2の制御信号B
によってレジスタ選択信号のビット0が反転される。第
1の制御信号Aと信号SEL2(=3’b001)とに
よって、転送されるレジスタが選択され、レジスタ制御
信号Bが生成される。
【0839】サイクルT8のφ#同期ステート以降で、
前記同様に、次の次の命令の読み出しと、プログラムカ
ウンタPCのインクリメント(+2)を行う。
【0840】レジスタ3本を指定した場合は、実行ステ
ート数が2ステート長くなり、アドレスバッファABの
インクリメント(+2)が更に2回行われる(合計+
6)。また、信号SEL1、SEL2のビット1が反転
され、レジスタ指定フィールドが000の場合、010
とされ、汎用レジスタER2が選択される。ライト動作
が2回(合計6回)行われる。
【0841】レジスタ4本を指定した場合は、更に、実
行ステート数が2ステート長くなり、アドレスバッファ
ABのインクリメント(+2)が更に2回行われる(合
計+10)。また、信号SEL1、SEL2のビット1
とビット0が反転され、レジスタ指定フィールドが00
0の場合、011とされ、汎用レジスタER2、ER3
が選択される。ライト動作が2回(合計8回)行われ
る。
【0842】レジスタ番号の下位ビットが固定であるの
で、これを命令処理の実行に従って、変更する制御が容
易である。加算器などを不要にして、論理的規模の増加
を抑止できる。例えば、2本のレジスタを待避する場
合、命令コード上のレジスタ指定フィールドの下位ビッ
トは0であるので、1回めのレジスタ指定は、レジスタ
指定フィールドの値に従い、2回のレジスタ指定は、命
令デコーダDECの制御に従って、レジスタ指定フィー
ルドの下位1ビットを1に変更して、行うようにする。
【0843】一方、MOV命令はレジスタ1本のリード
であり、前記の2回目のリード動作を行わないようにさ
れ、実行動作の共通化を図っている。
【0844】図97には複数レジスタの転送命令の第3
の例(MOVM.W R10−R11,@ER6)の実
行シーケンスが示される。上記命令は、2本のワードサ
イズの汎用レジスタをライトする例である。レジスタ指
定フィールドは3’b010である。
【0845】サイクルT2から転送命令の実行が開始さ
れる。特に制限はされないものの、命令コードの第1ワ
ードはレジスタグループフィールドを持つプリフィック
スコードであり、レジスタグループ指定フィールド(I
R1のビット7〜0)がラッチ回路LGR1、LGR2
にラッチされ、プログラムカウンタPCをインクリメン
トする。
【0846】第2ワードの命令コードは、MOVMを示
すプリフィックスコードであり、次の命令コードの動作
を指定する。制御信号MOD2が出力される。第3ワー
ドの命令コードは、MOV.W R2,@ER6命令と
共通にされる。
【0847】サイクルT4のφ#同期ステートでレジス
タER6の内容がバスGBに出力され、アドレスバッフ
ァABに格納される。アドレスバッファABの内容がア
ドレスバスIABに出力される。同時に、バスコマンド
BCMDが出力され、ワードデータライトと次のバスサ
イクルでのバス権移譲禁止が示される。
【0848】また、第1の制御信号Bとラッチ回路LG
R2のラッチ情報(=3’b001)と信号SEL2
(=3’b010)とによって、転送されるレジスタが
選択され、レジスタ制御信号Bが生成される。制御信号
s1が生成されて、信号SEL2の変更(3’b010
→011)が指示される。
【0849】ステートサイクルT5のφ同期ステート
で、選択されたレジスタ(R10の内容)がバスDB経
由で、ライトデータバッファWDBに転送される。
【0850】T5のφ#同期ステートで、転送されたデ
ータ(R10の内容)が内部データバスIDBに出力さ
れる。また、アドレスバッファABのインクリメント機
能によって、アドレスバスIABの出力値をEA+2と
する。また、第1の制御信号Bとラッチ回路LGR2の
ラッチ情報(=3’b001)と信号SEL2(=3’
b011)とによって、転送されるレジスタが選択さ
れ、レジスタ制御信号Bが生成される。
【0851】サイクルT6のφ同期ステートで、選択さ
れたレジスタR11の内容がバスDB経由で、ライトデ
ータバッファWDBに転送される。
【0852】サイクルT6のφ#同期ステートで、転送
されたデータ(R11の内容)が内部データバスIDB
に出力される。
【0853】サイクルT6のφ#同期ステート以降で、
前記同様に、次の次の命令の読み出しと、プログラムカ
ウンタPCのインクリメント(+2)を行う。
【0854】レジスタ3本を指定した場合は、実行ステ
ート数が1ステート長くなり、アドレスバッファABの
インクリメント(+2)が更に1回行われる(合計+
4)。また、信号SEL1、SEL2のビット1が反転
され、レジスタ指定フィールドが000の場合、010
とされる。ライト動作が1回(合計3回)行われる。
【0855】レジスタ4本を指定した場合は、更に、実
行ステート数が1ステート長くなり、アドレスバッファ
ABのインクリメント(+2)が更に1回行われる(合
計+6)。また、SEL1、SEL2のビット1とビッ
ト0が反転され、レジスタ指定フィールドが000の場
合、011とされる。ライト動作が1回(合計4回)行
われる。
【0856】図98には前記CPU502の開発環境の
概略が示される。これは、既存の下位CPUと、これに
対する上位互換の前記CPU502とで、共通の開発環
境を提供できるようにするものである。
【0857】使用者は、各種エディタなどを用いて、C
言語乃至アセンブリ言語でプログラムを作成する。これ
は通常、複数のモジュールに分割して作成される。
【0858】Cコンパイラ540は、使用者の作成した
それぞれのC言語ソースプログラムを入力し、アセンブ
リ言語ソースプログラム乃至オブジェクトモジュールを
出力する。アセンブラ541は、アセンブリ言語ソース
プログラムを入力し、オブジェクトモジュールを出力す
る。リンケージエディタ542は、上記Cコンパイラ5
40やアセンブラ541の生成した、複数のオブジェク
トモジュールを入力して、各モジュールの外部参照や相
対アドレスなどの解決を行い、1つのプログラムに結合
して、ロードモジュールを出力する。
【0859】ロードモジュールは、シミュレータデバッ
ガ543に入力して、パーソナルコンピュータなどのシ
ステム開発装置上で、CPUの動作をシミュレーション
し、実行結果を表示し、プログラムの解析や評価を行な
うことができる。また、ロードモジュールをエミュレー
タ544に入力して、実際の応用システム上などで動作
する、いわゆるインサーキットエミュレーションを行な
い、マイクロコンピュータ全体としての、実動作の解析
や評価を行なうことができる。更には、ロードモジュー
ルをPROMライタ545に入力して、マイクロコンピ
ュータ1のROM504が、フラッシュメモリのような
電気的に書込み可能なメモリである場合に、かかるメモ
リに書込みを行なうことができる。このほかに、ライブ
ラリアンとして、汎用的なサブルーチンなどを提供する
こともできる。
【0860】図43は前記CPU502のシステム開発
装置におけるCPU選択方法を例示する図面でもある。
図43に基づいて説明した内容はCPU502のシステ
ム開発装置のもそのまま当てはまる。CPUの選択方法
としては、ウィンドウのドロップダウンメニューで選択
可能にしてもよいし、ワークステーションなどであれ
ば、Cシェルコマンドとして入力することもできる。更
に、アセンブラやCコンパイラなどの、ソースプログラ
ムの制御命令として、CPUの種類及び動作モードを入
力することができる。
【0861】アセンブラは、選択されたCPUの種類及
び動作モードに従って、入力されたアセンブリ言語ソー
スプログラム上の記述を解釈し、オブジェクトモジュー
ルを生成したり、エラーがあればそれを表示したりす
る。既存の下位CPUを選択し、前記上位CPU502
に存在して、既存CPUに存在しない命令(前記拡張命
令)を記述するとエラーになる。命令コード自体はCP
U502が包含しているから、このためのアセンブラ5
41を開発し、既存の下位CPUについては、上位CP
U502に存在して、既存の下位CPUに存在しない命
令を検出するような追加を行なうなどして、容易に共通
化できる。既存の下位CPUについては、アセンブラが
存在しているはずであるから、これを容易に改造して、
前記上位CPU2に適用できることは言うまでもない。
【0862】Cコンパイラは、選択されたCPUの種類
及び動作モードに従って、使用可能な、オペレーショ
ン、データサイズ、アドレッシングモードの組合せで示
される命令や、汎用レジスタ、アドレス空間を判別し
て、C言語によるプログラムを、CPUの命令に変換
し、アセンブリ言語プログラムやオブジェクトモジュー
ルとして出力する。
【0863】Cコンパイラ自体には、C言語によるプロ
グラムを、CPUの命令に変換する機能の他、C++言
語によるプログラムのコンパイルや、モジュール間最適
化などといった、CPUの命令セットとは直接関係のな
い機能の向上が図られているが、CPU毎の個別のコン
パイラでは、これらの機能向上を全ての個別のコンパイ
ラに適用しなければならない。本発明のように、共通の
Cコンパイラ540としておけば、前記、CPUの命令
セットとは直接関係のない機能向上を図ることが容易に
なり、また、開発効率などを向上することができる。
【0864】シミュレータデバッガは、入力されたロー
ドモジュールのプログラムを解釈して、CPUの動作を
シミュレーションし、その中で、エラーがあればそれを
表示したりする。例えば、既存の下位CPUを選択し、
本発明のCPU502に存在して、既存CPUに存在し
ない命令を実行しようとするとエラーになる。命令コー
ド及び命令実行機能自体は本発明のCPU502が包含
しているから、このためのシミュレータデバッガ543
を開発し、既存の下位CPUについては、本発明のCP
U502に存在して、既存のCPUに存在しない命令を
検出するような追加を行なうなどして、容易に共通化で
きる。既存のCPUについて、シミュレータデバッガが
存在していれば、これを容易に改造して、本発明のCP
U502に適用できることは言うまでもない。
【0865】図45は本発明に係るCPU502を有す
るマイクロコンピュータのためのエミュレータを示す図
面でもある。図45において、エミュレーション用プロ
セッサ410は、マイクロコンピュータ部分にエミュレ
ーション用インタフェースを加えて構成される。前記マ
イクロコンピュータ部分は、例えば図79のマイクロコ
ンピュータ501の構成に相当される。例えば、システ
ム開発装置427から入力されたプログラム(ロードモ
ジュール)をエミュレーションメモリ421のユーザプ
ログラム格納領域に転送し、内蔵ROM504上に配置
されるべきかかるプログラムをCPU502がリードす
ると、エミュレーションメモリ421上のプログラムが
リードされ、実行される。また、ブレーク条件や、リア
ルタイムトレース条件などもシステム開発装置427か
ら与えることができる。
【0866】コントロールプロセッサ425は、応用シ
ステム412で本来使用するCPUの種類の選択を行う
ためのプログラムを、エミュレーションメモリ421の
エミュレーションプログラム格納領域に格納する。CP
U502は、かかるプログラムを、所定の条件でブレー
クした状態で、実行し、エミュレーション用の制御レジ
スタの設定を行なうことで、エミュレーション上の必要
な設定を行なう。この場合は、エミュレーション用プロ
グラムの実行モード、いわゆるブレークモードでのみラ
イト可能にすると都合がよい。開発途上にあるユーザの
ソフトウェアの誤動作によって、誤った設定を行なって
しまうことを抑止できる。また、制御レジスタを用いる
ことによって、応用システム412で本来使用するCP
Uの種類の選択対象が増えたりしても、制御レジスタの
構成のみを変更すればよく、エミュレーション用インタ
フェースを変更する必要がなく、エミュレータのハード
ウェアを変更しなくてよい。
【0867】図99には前記マイクロコンピュータ50
1に対応されるエミュレーション用プロセッサのブロッ
ク図が示される。エミュレーション用プロセッサ50
は、図79のマイクロコンピュータ501の部分(マイ
クロコンピュータコア571)と、エミュレーションイ
ンタフェース572から構成される。なお、図79のタ
イマや入出力ポートなどは、I/Oとして代表させ、ま
た、内部バスの詳細とバスコントローラを図示してい
る。なお、図79のタイマ506、パルス出力回路50
7、及び入出力ポートIOP1〜IOP5,IOPA〜
IOPFなどは、I/O573、ユーザバッファ(ユー
ザBUF)574として代表させている。ユーザインタ
フェース576は前記I/O573、ユーザバッファ5
74、及び図示を省略する入出力バッファなどを含む、
ユーザシステム(エミュレーション対象システムである
ターゲットシステム)に接続されるインタフェース回路
を総称する。
【0868】マイクロコンピュータコア571は、図7
9のマイクロコンピュータ501に対して未定義命令検
出回路578が追加されている。エミュレーションイン
タフェース572は、制御レジスタ579を含む。制御
レジスタ579は、ブレークモードでのみライト可能と
される。エミュレーションインタフェース572から入
出力される信号は、アドレスバス、データバス、リード
信号、ライト信号、データサイズ信号、命令フェッチ信
号などバスの状態を表示するバスステータス信号、命令
の実行開始を示す信号、割込み処理の実行開始を示す信
号などのCPU502の実行状態を示すCPUステータ
ス信号、などを含み、エミュレータによる、マイクロコ
ンピュータの動作解析に使用される。
【0869】未定義命令検出回路578は、CPU50
2に入力される命令コードを解析し、選択されているC
PUの機能に存在しない命令が実行を開始したことを検
出すると、CPU502にブレーク割込みを要求する。
CPU502に何れの機能が選択されるかは、制御レジ
スタ579から指示される。例えば、既存の下位CPU
の機能が選択されている場合には、レジスタグループフ
ィールドを持つ前置命令コードを実行すると、未定義命
令として検出される。具体的には、命令コードを前記L
IR信号でラッチして、解析し、未定義と解読された場
合、前記LID信号が発生した時点で、ブレーク割込み
を要求するようにすればよく、容易である。
【0870】エミュレーション用プロセッサ550は、
前述の通り、上位CPU502を内蔵し、これを用い
て、その他の下位CPUの代行をさせることができる。
どれを選択するかはレジスタ579で指定すればよい。
【0871】いずれにせよ、エミュレーション用インタ
フェースを共通化しておけば、CPU乃至そのほかの機
能ブロックが変更になった場合にも、エミュレータ側の
ハードウェアの変更をする必要がなく、エミュレーショ
ン用プロセッサ550のみを変更して、命令の動作を解
析して表示する際の逆アセンブラに、いずれのCPUを
対象にするかを指示すればよい。逆アセンブラに対する
指示は、使用者がシステム開発装置から指定することも
できるし、アセンブラからの入力情報によって、自動的
に選択されるようなものであってもよい。これによって
エミュレータの開発効率を向上し、エミュレータの開発
環境を早く提供することができる。
【0872】図100には本発明の適用されたマイクロ
コンピュータ501をプリンタ制御に用いたマイクロコ
ンピュータシステムが例示される。
【0873】プリンタ制御システムは、マイクロコンピ
ュータ501と、セントロニクスインタフェース(また
はIEEE1284)やユニバーサルシリアルバス又は
オプションなどの送受信回路(受信回路または送受信回
路)580と、バッファRAM(DRAM)581と、
キャラクタジェネレートROM(CGROM)582
と、プログラムROM583と、印字制御回路584と
を含み、これらがマイクロコンピュータの外部バス58
5を介して接続される。
【0874】外部バス585に接続されるアドレス空間
は所定の大きさのエリアに分割されており、それぞれに
バス仕様(バス幅、アクセスステート数、アドレスマル
チプレクス、バースト動作など)を設定可能になってい
る。エリア毎のそのようなバス制御は、マイクロコンピ
ュータ501に含まれる前記バスコントローラ510の
外部バスコントローラが行なう。
【0875】プログラムROM583はエリア0に、バ
ッファRAM581はエリア2に、CGROM582は
エリア6に、送受信回路580及び印字制御回路584
はエリア7に接続される。バッファRAM581はリー
ド/ライト可能なメモリであり、ダイナミック型メモリ
故にリフレッシュ動作が必要であるが、安価であること
が知られている。バッファRAM581についてはアド
レス配置が記載されている。バッファRAM581は2
MB(16Mビット)の記憶容量を有し、1Mバイトを
CPU502の作業領域に、残りを512kBずつのリ
ングバッファとされる。
【0876】また、本システムは、更に、ラインフィー
ドモータ590、キャリッジリターンモータ591を含
み、これらのモータ590、591は、それぞれタイマ
506の出力、パルス出力装置507の出力がバッファ
回路92を介して与えられることによって制御される。
ラインフィードモータ590、キャリッジリターンモー
タ591は、特に制限はされないものの、ステッピング
モータである。
【0877】マイクロコンピュータ501に内蔵されて
いるDMAC511は、印字データの出力、ラインフィ
ードモータ590、キャリッジリターンモータ591を
駆動するパルス出力を行う。また、DMAC511はS
CI508の送信データ、受信データの転送制御を行な
う。
【0878】図示はされないものの、SCI508はホ
ストなどとの通信に使用し、A/D変換器509は紙枚
数などのセンサ情報を入力する。
【0879】EXDMAC512はセントロニクスイン
タフェースやユニバーサルシリアルバスなどの複数の送
受信回路580によるデータの受信を、CPU502の
動作と並行して行う。EXDREQ入力に転送要求信号
を入力し、転送時には、EXDACK出力によって、シ
ングルアドレス転送を行うことができる。例えば、セン
トロニクスインタフェースのインプットストローブ信号
をEXDREQ0に入力し、チャネル0でデュアルアド
レス転送を行い、オプションインタフェースの受信信号
をEXDREQ1に入力し、EXDACK1出力を、オ
プションインタフェースに与えて、チャネル1でシング
ルアドレス転送を行う。
【0880】EXDAMC512は、デスティネーショ
ンまたはソースの一方を、アドレス空間上のメモリや内
部I/Oレジスタではなく、EXDMAC512のデー
タレジスタとすることができる。この選択は、EXDM
AC512の制御レジスタの所定の制御ビットで行なう
ようにする。
【0881】実質的なデータ転送に先立って、パケット
コマンドなどの転送情報を、EXDMAC512のデー
タレジスタに転送する。CPU502は、この情報を解
析し、例えば、前回のデータ転送と連続して受信すれば
よい場合には、デスティネーションをメモリとするよう
に設定して、転送カウントレジスタを設定して、起動を
かければよい。
【0882】かかる情報の解析に当たっては、例えば、
転送情報が16バイトである場合、「MOVM.L
@EXD0DR0,ER0−3」を実行して、汎用レ
ジスタに転送情報を格納して、解析を行なうことができ
る。なお、EXD0DR0は、EXDMAC512のチ
ャネル0のデータレジスタの先頭アドレスを示すラベル
である。前記MOVM命令では、絶対アドレスのアドレ
ッシングモードを用いて、固有のアドレスを容易にアク
セスできる。また、EXDMAC512のデータレジス
タを使用せず、バッファRAM581上に転送情報が格
納されている場合には、「MOV.L @EXDAR
0,ER4、MOVM.L @−ER4,ER0−3」
とすればよい。EXDAR0は、チャネル0のデスティ
ネーションアドレスレジスタのラベルである。デスティ
ネーションアドレスレジスタは次のデータ転送のデステ
ィネーションとなるアドレスを示している。この内容を
汎用レジスタER4に格納し、プリデクリメントレジス
タ間接のアドレッシングモードを用いている。間接的に
アドレスを扱うことにより、メモリ上の固定されていな
いアドレスも容易にアクセスできる。
【0883】また、バッファRAM581のリードを連
続して行なうから、バッファRAM581の高速ページ
モードなどを有効に利用して、高速化を図ることができ
る。
【0884】転送情報の汎用レジスタへの格納を高速に
行い、汎用レジスタ上で解析を行なうことによって、転
送情報の受信から、転送情報に基づく処理の開始までの
時間を短縮できる。ひいてはシステムの高速化に寄与で
きる。
【0885】上記システムにおいては、ホスト側からプ
リンタのステータスをリードするような場合は、チャネ
ル2のEXD2DRにCPU502がステータスを随時
書込んでおくようにし、EXDREQ2入力に従って、
送受信回路580へ出力し、送受信回路580からホス
トへ転送するようにすることができる。この場合も、設
定すべきデータが多ければ、MOVM命令を用いて、E
XD2DRの設定を行なうことができる。
【0886】例えば、CPU502は、転送情報待ちを
示すステータスをEXD2DR0〜7に設定しておく。
ホストから、パケットコマンドの転送情報を受信する
と、ビジーステータスをEXD2DR0〜7に設定し、
転送情報の解析が終了し、EXDMAC512の設定が
完了すると、データ受信待ちを示すステータスをEXD
2DR0〜7に設定するようにする。ホストは、随時、
ステータスを確認しつつ、転送情報やデータを送信する
ようにすればよい。
【0887】バッファRAM581上の印刷データを操
作することもできる。各種のアドレッシングモードの複
数レジスタ転送命令(MOVM)を用いて、高速化する
ことができる。複数レジスタ転送命令で、バス権移譲を
禁止することによって、そのほかのバスマスタであるD
MAC511やEXDMAC512のデータ転送との競
合による不所望のデータ変化を抑止できる。
【0888】なお、半導体集積回路の集積度の向上によ
って、オプション以外の受信回路の一部や、印字制御回
路584などを1個の半導体集積回路に集積することが
できる。更に、バッファRAM581などの汎用的なメ
モリも1個の半導体集積回路に集積することができる。
プログラムROM583やCGROM582などのよう
に個別のプリンタの機種など、マイクロコンピュータシ
ステム毎に変更になるものは、個別の半導体集積回路に
する方が都合よい。
【0889】以上説明した図79のマイクロコンピュー
タ及びデータ処理システムによれば以下の作用効果を得
ることができる。
【0890】〔1〕単一の命令で、複数の汎用レジスタ
とメモリ間、又は複数の汎用レジスタ相互間で転送を行
なうことによって、相対的に、命令コードのリード回数
を低減して、高速化することができる。また、データの
リード/ライトを連続して行なうことによって、外部メ
モリに対するバースト動作などを有効に利用できる。複
数のバスマスタが、データを処理する場合に、データア
クセス時にバス権を移譲することを禁止して、不所望の
データの競合を回避することができる。
【0891】上記転送命令の実効アドレスの計算は、1
回のみ行なうようにし、アドレスバッファABにインク
リメント(またはデクリメント)機能とインクリメント
(またはデクリメント)結果を保持する機能を備えるこ
とによって、命令動作を単純にし、転送命令の為の多く
の制御を既存の転送命令と共通化を図ることができ、命
令デコーダDECの論理的な規模の増加を最小限にする
ことができる。実効アドレスの計算の回数を低減して、
高速化を図ることができる。また、種々のアドレッシン
グモードを共通に利用することができ、論理的規模の増
加を最小限にすることができる。
【0892】複数レジスタ転送命令においてレジスタの
本数の異なる命令を複数命令サポートすることによっ
て、また、ワードサイズとロングワードサイズなど、デ
ータサイズの異なる命令を複数命令サポートすることに
よって、プログラムの作成を容易にし、マイクロコンピ
ュータの使い勝手を向上することができる。
【0893】汎用レジスタのみをCPUが直接処理可能
なアーキテクチャにあっては、汎用レジスタとメモリと
の転送を高速化して、処理速度を大きく向上することで
きる。
【0894】複数の汎用レジスタの組み合わせを固定的
にした、複数の汎用レジスタと、アドレス空間上のアド
レス(メモリ)との間の転送命令を備えることによっ
て、汎用レジスタのビット長より大きいデータであって
も、容易に扱うことができ、マイクロコンピュータの使
い勝手を向上するとともに、データのリード/ライトに
対して、命令のリードの頻度を低減して、データ処理の
高速化を図ることができる。
【0895】複数レジスタの転送を指示する命令コード
と、既存の単一の汎用レジスタの転送命令の命令コード
を組合せて、複数の汎用レジスタの転送命令を実現する
ことにより、既存のCPUであっても、命令の追加を容
易にすることができる。
【0896】〔2〕汎用レジスタが分割可能で、かつ分
割した部分に機能上の相違がある場合などには、汎用レ
ジスタ全体を使用する転送命令と、分割された一部分を
使用する転送命令とを備えることにより、使用し易い汎
用レジスタとの転送ができるから、その処理を容易に
し、高速化することができる。
【0897】オブジェクトレベルで互換性を保ちつつ、
アドレス空間の広いCPUとアドレス空間の小さいCP
U、または、汎用レジスタのビット長の長いCPUと、
汎用レジスタのビット長の短いCPUが存在する場合に
は、後者のCPUにも無駄なく利用可能な転送命令を提
供できる。
【0898】〔3〕前置命令コードで、レジスタグルー
プを指定し、この前置命令コードを省略可能とし、更に
は前置命令コードを付加しない場合の命令コードを既存
のCPUの命令コードと同一とすることにより、互換性
を損なわずに、汎用レジスタを増加させることができ
る。
【0899】暗黙的に指定可能な汎用レジスタ(既存の
汎用レジスタ)をのみを使用していれば、省略可能のワ
ードを省略できるから、命令コードを増加させることが
ない(少なくとも従来同等の汎用レジスタを使用する場
合は、従来同等の命令コードでよい)。命令コードを増
加させないことよって、処理速度を低下させることがな
い。
【0900】前記省略可能なワードを付加することによ
って、命令によって直接汎用レジスタの全てを選択でき
るから、プログラムの容易性を損う部分が少ない。ま
た、任意の量の汎用レジスタの一部を、所望のタスク毎
や所望の割込み処理などに確保しておく(他のタスクや
処理では使用しない)ことによって、前記タスクや割込
み処理において汎用レジスタを待避したりする必要がな
く、高速化が図られる。また、前記タスクや割込み処理
に確保する汎用レジスタ数は任意にできるから、タスク
や処理の間で、使用する汎用レジスタを相互に融通し合
うことも容易である。
【0901】前記ワードを付加することによって、指定
できる汎用レジスタのアクセスは、RAMなどのメモリ
のアクセスより、一般に高速にできるから、汎用レジス
タ数を増加するとともに、複数の汎用レジスタの転送命
令によって、複数の汎用レジスタとメモリとの転送を高
速に実行可能にすることにより、CPUの処理速度を向
上できる。また、いわゆるロードストア型の命令セット
を持ち、メモリの内容に対して直接演算できないような
プロセッサについては、直接処理できるデータ量を増加
でき、また、メモリのアクセスを高速化することがで
き、処理速度を向上することができる。
【0902】複数レジスタ転送命令で指定できる汎用レ
ジスタを増加する場合には容易に対処できる。
【0903】〔4〕オブジェクトレベルで互換性を保ち
つつ、アドレス空間の広いCPUとアドレス空間の小さ
いCPUが存在する場合には、アドレス空間の広いCP
Uにおいて、アドレス空間に対応するサイズ(例えば3
2ビット、MOVM.L命令)の汎用レジスタに対する
上記転送命令と、アドレス空間の小さいCPUのアドレ
ス空間に対応するサイズ(例えば16ビット、MOV
M.W命令)の汎用レジスタに対する上記転送命令とを
備えることによって、後者のサイズの上記転送命令を、
下位互換性をもつ、アドレス空間の小さいCPUでも容
易に実現可能にできる。換言すれば、同一の方法で、オ
ブジェクトレベルで互換性を保ちつつ、アドレス空間の
広いCPUとアドレス空間の小さいCPUでも複数汎用
レジスタの転送命令を実現可能にできる。
【0904】ソースプログラムレベルまたはオブジェク
トプログラムレベルで、既存のCPUの命令セットを包
含した上で、上記命令を追加することによって、ソフト
ウェア資産を有効に利用することができ、使用者のソフ
トウェア開発効率を向上することができる。ソースプロ
グラムレベルまたはオブジェクトプログラムレベルで互
換性を保つことによる利点と前記転送命令を追加するこ
との利点の双方を享受することができる。
【0905】〔5〕既存のCPUと、ソフトウェア開発
装置を共通に利用可能にし、CPUを選択する手段を設
けることによって、使用者の不所望の費用を抑止でき
る。また、Cコンパイラなどは共通に機能向上などを行
うことが可能であるから、ソフトウェア開発装置の開発
効率を向上することができる。開発効率を向上すること
によって、開発に必要な資源を削減し、削減した資源を
以って、機能向上に振り当てることも可能になる。
【0906】既存のCPUと、エミュレーション用イン
タフェースを共通化し、ひいては、同じエミュレータの
ハードウェアを共有できる。エミュレーション用インタ
フェースを共通化したり、エミュレータのハードウェア
を共通化することによって、開発環境を早く整えること
ができ、また、エミュレータの開発に必要な資源を最小
限にすることができる。
【0907】前記検討課題Eの解決手段に関する発明の
実施の形態は一例であり、その要旨を逸しない範囲にお
いて種々変更可能である。
【0908】例えば、CPUの命令セットやレジスタ構
成、アドレス空間は変更可能である。CPUのアーキテ
クチャもロードストアアーキテクチャに限定されない。
但し、アドレス空間上の大部分より、高速に利用できる
レジスタ手段を持っていることが望ましい。また、複数
レジスタの転送命令の詳細な仕様についても種々変更可
能である。データサイズとしては、バイトサイズを持っ
てもよい。CPUの論理的な構成、複数レジスタの転送
命令の論理的な実現方法についても種々変更可能であ
る。アドレスバッファはインクリメントではなく、デク
リメント機能を持つようにし、アドレスの大きい方から
アクセスするようにしてもよい。さらに、内部バス幅や
内部バス構成なども変更可能である。さらにまた、互換
性を維持すべきCPUは、アドレス空間や汎用レジスタ
の本数が異なるほか、命令の種類とアドレッシングモー
ド及びデータのサイズで定義されるような命令セットが
異なるようなものであってもよい。
【0909】マイクロコンピュータのその他の機能ブロ
ックについても何等制約されない。データ処理システム
である応用分野もプリンタに限定されない。前記EXD
MACなどは好適な例として示されているもので、種々
変更可能であることは言うまでもない。
【0910】以上の説明では主として本発明者によって
なされた発明をその背景となった利用分野であるシング
ルチップマイクロコンピュータに適用した場合について
説明したが、それに限定されるものではなく、CPU及
びDRAM等を搭載したシステムLSI、システム・オ
ン・チップ化されたVLSI等のデータ処理装置に広く
適用可能である。本発明は少なくとも、命令を解読して
処理し、演算処理を行なうデータ処理装置に適用するこ
とができる。
【0911】
【発明の効果】《検討課題Aに関する発明の効果》検討
課題Aに関する発明の効果は以下の通りである。すなわ
ち、汎用レジスタを指定するレジスタ指定フィールド
を、2つの部分に分割し、この2つの部分を命令コード
の基本単位上の別のワードに配置するとともに、一方の
ワードを省略可能とし、省略可能なワードを省略する
と、暗黙的な指定が行われるようにする。また、省略可
能なワードには、レジスタ指定フィールドの一部のみを
持つようにし、演算の種類などは指定しないようにす
る。したがって、暗黙的に指定可能な汎用レジスタのみ
を使用していれば、省略可能のワードを省略できるか
ら、命令コードを増加させることがなく、命令コードを
増加させないことよって、処理速度を低下させることが
ない。
【0912】前記省略可能なワードを付加することによ
って、命令によって直接汎用レジスタの全てを選択でき
るから、プロラムの容易性を損うことがない。また、任
意の量の汎用レジスタの一部を、所望のタスク毎や所望
の割込み処理などに確保しておく(他のタスクや処理で
は使用しない)ことによって、前記タスクや割込み処理
において汎用レジスタを待避したりする必要がなく、高
速化が図れる。更に、前記タスクや割込み処理に確保す
る汎用レジスタ数は任意にできるから、タスクや処理の
間で、使用する汎用レジスタを相互に融通し合うことも
容易になる。
【0913】前記ワードを付加することによって、指定
できる汎用レジスタのアクセスは、RAM等のメモリの
アクセスより、一般に高速にできるから、汎用レジスタ
数を増加することにより、高速に処理できるデータ量を
増加させ、ひいてはCPUの処理速度を向上できる。ま
た、いわゆるロードストア型の命令セットを持ち、メモ
リの内容に対して直接演算できないようなプロセッサに
ついては、汎用レジスタを増加することにより、直接処
理できるデータ量を増加でき、また、メモリのアクセス
頻度を低減することができ、処理速度を向上することが
できる。
【0914】《検討課題Bに関する発明の効果》検討課
題Bに関する発明の効果は以下の通りである。すなわ
ち、既存の、メモリ・レジスタ間の転送命令コードの単
数または複数、そしてレジスタ・レジスタ間の演算命令
コードの内、複数の命令コードを組合せ、これに前置命
令コードを前置結合する。前記前置命令コードに結合さ
れたメモリ・レジスタ間転送命令のコードを実行する場
合は、汎用レジスタではなく、CPU内の、テンポラリ
レジスタの様な、プログラム上解放されていない(換言
すれば命令コードには明示されていない)ラッチ手段と
メモリとの間でデータ転送を行なう。更に、前記前置命
令コードに結合されたレジスタ・レジスタ間の演算命令
のコードを引き続き実行する場合は、演算対象の内の単
数または複数のデータを前記ラッチ手段から読み出すよ
うにする。その演算結果をメモリに格納する場合には、
前記転送命令のコードを実行したときに使用したメモリ
のアドレスを、別のラッチ手段に格納し、上記演算命令
の演算結果を前記ラッチ手段に格納するとともに、メモ
リ・レジスタ間の転送命令のコードを自ら生成し(即
ち、プログラムに明示されていなくても生成し)、前記
アドレスを格納したラッチ手段の内容をアドレスとし
て、前記演算結果を格納したラッチ手段の内容をデータ
として、メモリへの書込みを行なう。
【0915】このとき、データ処理装置にとって、メモ
リ・レジスタ間の転送命令、レジスタ・レジスタ間の演
算命令の命令コードは既存のものであるから、それら命
令コード単独の実行では従来同様に動作し、既存の命令
実行を阻害しない。したがって、既存の命令のみを使用
している既存のソフトウェア資産を有効に利用できる。
データ処理装置は、ソフトウェア資産に関する上位互換
を維持して、機能向上を実現できる。
【0916】また、既存の汎用レジスタ或いはロード・
ストア・アーキテクチャのメリットを保持し、前記前置
命令コードは、アドレッシングモードや演算の内容によ
らず共通に使用できるから、追加する命令コードを最低
限にすることができる。
【0917】メモリからラッチ手段へのデータ読み込
み、演算、ラッチ手段の内容に基づくメモリへのライト
動作の指示は、既存の命令に対して、使用するレジスタ
が相違なるのみであるから、既存の命令動作を大きく変
更することなく、利用できる。
【0918】これによって、設計資産を有効に利用し、
メモリ上のデータへの演算を可能にすることによる論理
規模の増加を最小限にすることができる。
【0919】メモリ上のデータを演算可能とすることに
よって、直接処理できるデータ量を増加でき、また、汎
用レジスタの退避/復帰などを省くことができ、処理速
度を向上することができる。
【0920】オブジェクトレベルで互換性を保ちつつ、
アドレス空間の広いCPUとアドレス空間の小さいCP
Uが存在する場合には、アドレス空間の広いCPUで、
前記ワードを付加し、存在する転送命令、演算命令を組
合せることによって、下位互換性をもつ、アドレス空間
の小さいCPUでもメモリ上のデータを直接的に演算可
能にすることができる。換言すれば、同一の方法で、オ
ブジェクトレベルで互換性を保ちつつ、アドレス空間の
広いCPUとアドレス空間の狭いCPUでもメモリ上の
データを直接的に演算可能にすることができる。
【0921】オブジェクトレベルで互換性を保つことに
よる利点とメモリ上のデータを直接的に演算可能にする
ことの利点の双方を享受することができる。
【0922】既存の命令を組合せ、新規の命令機能を実
現しているので、将来的な機能拡張や高速化に対する余
裕を、既存のCPUと同等程度に保持できる。
【0923】また、既存のCPUとエミュレーション用
インタフェースを共通化することができ、ひいては、同
じエミュレータのハードウェアを共有できる。エミュレ
ータのハードウェアを共通化することによって、早く開
発環境を整えることができ、また、エミュレータの開発
に必要な資源を最小限にすることができる。
【0924】《検討課題Cに関する発明の効果》検討課
題Cに関する発明の効果は以下の通りである。すなわ
ち、レジスタ構成、命令とアドレッシングモードの組合
せ等の点で、一方が他方を包含しないような異なる命令
セットを含む複数のデータ処理装置例えばCPUを提供
することにより、各種適用分野のソフトウェア上の要求
に応えたり、利用者の様々な好みに応えたり、別のCP
Uのアセンブリ言語によるプログラムからも比較的近い
命令セットCPUを選択可能でき、機能を向上したCP
Uへの移行を容易化することができる。
【0925】前記の、一方が他方の命令セットを包含し
ない、複数のCPUに対して、いずれのCPUをも包含
する命令セットを持った上位のCPUを準備することに
よって、ソフトウェア資産の有効利用を可能にしつつ、
性能/機能の向上したCPUを用意することができる。
ソフトウェア資産の有効利用によって、使用者のソフト
ウェア開発の開発効率を向上することができる。
【0926】上位CPUは、有効なアドレスのビット数
と、ベクタ及びスタックの単位サイズ、或いは実効アド
レスの計算方法を、切り替える動作モード、例えばマキ
シマムモード、準マキシマムモードとミニマムモードを
用意しておくことによって、メモリの使用方法も含めて
上位互換とすることができる。
【0927】開発に当たっては、既存のCPU(下位C
PUになるCPU)に対して、汎用レジスタを拡張し、
命令とアドレッシングモードの組合せを拡張した上位の
CPUを開発する。下位CPUは上位CPUの命令セッ
トのサブセットを持つことになる。これにより、上位C
PUの論理的規模の増大を最小限にしつつ、性能・機能
・使い勝手などを向上することができると共に、前記別
の下位CPUの開発を容易にし、開発効率を向上でき
る。前記上位CPUの、更に上位のCPUを開発する場
合には、前記上位のCPUに対する互換性を維持すれ
ば、前記複数のCPUとの互換性を、自動的に維持する
ことができるから、ソフトウェア資産の有効利用を実現
しつつ、将来的な機能や性能の向上を図ったCPUを実
現し易くなる。換言すれば、個別の応用分野やシステム
に適した複数のCPUを提供するとともに、複数のCP
Uの総体的な開発費用を低減したり、開発効率を向上し
たりすることができる。
【0928】汎用レジスタを拡張するために、汎用レジ
スタを指定するレジスタ指定フィールドを、2つの部分
に分割し、この2つの部分を命令コードの基本単位上の
別のワードに配置するとともに、一方のワードを省略可
能とし、省略可能なワードを省略すると、暗黙的な指定
が行われるようにする。省略可能なワードには、レジス
タ指定フィールドの一部のみを持つようにし、演算の種
類などは指定しないようにする。これにより、暗黙的に
指定可能な汎用レジスタのみを使用していれば、省略可
能なワードを省略できる。前記拡張された処理を指定す
る新規な命令コードを個別的に追加しないから、命令コ
ードが増えず(命令コードのビット数が増えず)、命令
の実行処理速度を低下させることがない。前記省略可能
な命令コードを付加することによって、命令によって汎
用レジスタの全てを選択できるから、プロラムの容易性
を損うことがない。また、任意の量の汎用レジスタの一
部を、所望のタスク毎や所望の割込み処理などに確保し
ておく(他のタスクや処理では使用しない)ことによっ
て、前記タスクや割込み処理において汎用レジスタを待
避したりする必要がなく、高速化が図れる。また、前記
タスクや割込み処理に確保する汎用レジスタ数は任意に
できるから、タスクや処理の間で、使用する汎用レジス
タを相互に融通し合うことも容易である。
【0929】一般に、レジスタのアクセスはメモリのア
クセスより高速であるから、汎用レジスタ数を増加する
ことにより、高速に処理できるデータ量を増加させるこ
とができ、ひいてはCPUの処理速度を向上できる。
【0930】命令とアドレッシングモードの組合せを拡
張するために、既存の、メモリ・レジスタ間の転送命令
の単数または複数、レジスタ・レジスタ間の演算命令、
の内、複数の命令コードを組合せ、これを結合させる命
令拡張用前置命令コードを採用する。前記命令拡張用前
置命令コードに続いて、メモリ・レジスタ間命令を実行
する場合は、汎用レジスタではなく、CPU内の、テン
ポラリレジスタの様な、プログラム上解放されていない
ラッチ手段とメモリの間でデータ転送を行なう。更に、
引き続きレジスタ・レジスタ間の演算命令を実行する場
合は、演算対象の内の単数または複数のデータを前記ラ
ッチ手段から読み出すようにする。その演算結果のメモ
リに格納する場合には、前記転送命令で使用したメモリ
のアドレスを、別のラッチ手段に格納し、前記演算命令
の演算結果を前記ラッチ手段に格納するとともに、メモ
リ・レジスタ間の転送命令を自ら生成し(即ち、プログ
ラムに明示されていなくても生成し)、前記アドレスを
格納したラッチ手段の内容をアドレスとして、前記演算
結果を格納したラッチ手段の内容をデータとして、メモ
リへの書込みを行なう。
【0931】このとき、メモリ・レジスタ間の転送命
令、レジスタ・レジスタ間の演算命令の命令コードは既
存のものであるから、単独では従来同様に動作し、既存
の命令実行を阻害しない。従って、既存の命令のみを使
用している既存のソフトウェア資産を有効に利用でき
る。データ処理装置は、ソフトウェア資産に関する上位
互換を維持して、機能向上を実現できる。
【0932】アドレス空間全体に対応するビット長のプ
ログラムカウンタを設けて、プログラム用としてはアド
レス空間全体、少なくとも大部分をリニアに利用可能に
するとともに、比較的小規模なデータを扱える程度に、
データ転送のアドレッシングモードを縮小したり、転送
データのデータサイズを限定したりして、所望の応用分
野などでの使い勝手を損なわずに、論理的規模を縮小で
きる。
【0933】データアクセス時に、使用できるアドレス
空間乃至は効率よく使用できるアドレス空間を小さく
し、かかるアドレス空間を2つに分割することによっ
て、使い勝手を損なわずに、上位CPUとのアドレス空
間上の互換性を維持するとともに、上位CPUに実効ア
ドレス計算方法などを切り替える動作モードを予め用意
しておくことにより、ソフトウェア上の互換性を維持す
ることができる。
【0934】プログラム用のアドレス空間を広げること
により、C言語などの高級言語を使用したプログラミン
グなどに対する適性を向上できる。また、スタックポイ
ンタを切替え可能にすることによって、OSなどのタス
ク管理時のスタックの容量の不所望の増加を抑止でき
る。
【0935】また、開発装置については、前記上位のC
PUの命令セットについてのソフトウェア開発装置を用
意し、更に、一方が他方の命令セットを包含しない、複
数のCPUに対しても共通に利用可能にし、利用者がC
PUを選択できるようにすることによって、ソフトウェ
ア開発装置の開発効率を向上することができる。使用者
にとっては、前記、複数のCPUを使用してもソフトウ
ェア開発装置が共通であるから、不所望な費用を発生さ
せなくてよい。前記、複数のCPUの内での移行が容易
になり、開発効率を向上することができる。
【0936】ソフトウェア開発装置上で、アセンブリ言
語などの、汎用的な機能を持つ汎用レジスタの記述を、
複数種類許すようにすることによって、別のCPUから
の移行を比較的容易にすることができる。
【0937】また、エミュレータについては、上位CP
Uと下位CPUとで、エミュレーション用インタフェー
スを共通化することができ、また、上位CPUのエミュ
レーション用論理回路を開発することによって、これを
下位CPUにも利用でき、エミュレーション用プロセッ
サを含めた開発効率を向上できる。また、同じエミュレ
ータのハードウェアを共通でき、これによって、逸早く
開発環境を整えることができるとともに、また、エミュ
レータの開発に必要な資源を最小限にすることができ
る。エミュレータに搭載する逆アセンブラは、上位CP
Uのものを開発するとともに、エミュレータ上で対象の
CPUを選択する手段を設けることによって、実質的に
一つの逆アセンブラでよいことになるから、開発効率を
更に向上できる。
【0938】《検討課題Dに関する発明の効果》検討課
題Dに関する発明の効果は以下の通りである。すなわ
ち、既存の命令コード乃至命令コードの1部のワードを
組合せて、ビット条件分岐命令/ビット条件サブルーチ
ン命令を実現することによって、既存の命令実行を阻害
することがなく、既存のソフトウェア資産を有効に利用
できるようになる。そして、既存のCPUと互換性を維
持しつつ、また、論理的・物理的規模の増大を最小限に
することができる。更に、メモリ上の任意のアドレスの
データのビットの状態を判定して、分岐及びサブルーチ
ン分岐を可能にできる。その上、CPUの使い勝手の向
上、命令コード長の短縮、及び処理性能の向上に寄与す
る事ができる。特に、複数のビットの状態に応じて、分
岐先ひいては処理内容を変更するような処理の、プログ
ラム容量の短縮と処理速度の向上を実現できる。
【0939】《検討課題Eに関する発明の効果》検討課
題Eに関する発明の効果は以下の通りである。すなわ
ち、複数の汎用レジスタとメモリ間、又は複数の汎用レ
ジスタ間での転送命令を備えることによって、汎用レジ
スタのビット長より大きいデータであっても、容易に扱
うことができ、使い勝手を向上するとともに、データの
リード/ライトに対して、命令のリードの頻度を低減し
て、高速化を図ることができる。
【0940】単一の命令で、複数の汎用レジスタ・メモ
リ間等の転送を行なうことによって、相対的に、命令コ
ードのリード回数を低減して、データ処理を高速化する
ことができる。また、データのリード/ライトを連続し
て行なうことによって、外部メモリに対するバースト動
作などを有効に利用できる。
【0941】複数の汎用レジスタを指定する固定の組合
わせにすることによって、命令コード長を短縮でき、更
に、各命令の実行ステート数を固定にすることにより、
内部の条件分岐を行うことをなくし、内部論理を簡潔に
し、論理規模を縮小できる。
【0942】複数レジスタの転送を指示する命令コード
と、既存の単一の汎用レジスタの転送命令の命令コード
を組合せて、複数の汎用レジスタの転送命令を実現する
とともに、単一の汎用レジスタの転送命令と共通化した
動作を行なうようにすることにより、論理的規模の増加
を最小限にすることができる。既存の単一の汎用レジス
タの転送命令のアドレッシングモードを共通に利用可能
にできる。既存の単一の汎用レジスタの転送命令のアド
レッシングモードを利用可能にすることによって、プロ
グラムの作成を容易にし、使い勝手を向上できる。
【0943】上記転送命令の実効アドレスの計算は、演
算器で1回のみ行なうようにし、アドレスバッファにイ
ンクリメント(またはデクリメント)機能とインクリメ
ント(またはデクリメント)結果を保持する機能を備え
ることによって、命令動作を単純にし、既存の転送命令
と共通化を図ることができ、論理的な規模の増加を最小
限にすることができる。実効アドレスの計算の回数を低
減して、高速化を図ることができる。
【0944】レジスタの本数の異なる複数レジスタ転送
命令を複数命令サポートすることによって、また、ワー
ドサイズとロングワードサイズなど、データサイズの異
なる複数レジスタ転送命令を複数命令サポートすること
によって、プログラムの作成を容易にし、使い勝手を向
上することができる。
【図面の簡単な説明】
【図1】検討課題A,B,Cに関する発明に係るシング
ルチップマイクロコンピュータのCPUを詳細に例示す
るブロック図である。
【図2】検討課題A,B,Cに係るデータ処理装置の一
例であるシングルチップマイクロコンピュータのブロッ
ク図である。
【図3】CPUに内蔵されている汎用レジスタ及び制御
レジスタの構成を示す説明図である。
【図4】第1の下位互換のCPUにおける汎用レジスタ
及び制御レジスタの構成を示す説明図である。
【図5】第2の下位互換のCPUにおける汎用レジスタ
及び制御レジスタの構成を示す説明図である。
【図6】CPUのアドレス空間に関する説明図である。
【図7】上位CPU2のマキシマムモードにおける実効
アドレス計算方法を図8と共に示す説明図である。
【図8】上位CPU2のマキシマムモードにおける実効
アドレス計算方法を図7と共に示す説明図である。
【図9】CPUの機械語の命令フォーマットの一例を示
すフォーマット図である。
【図10】CPUのメモリに対する転送命令の詳細な命
令フォーマットを例示する説明図である。
【図11】メモリデータに対する直接的な演算命令の命
令フォーマットとしてイミディエイトを使用しない前置
命令コード、EA1、EA2、演算の形態を例示する説
明図である。
【図12】メモリデータに対する直接的な転送命令の命
令フォーマットとしてイミディエイトを使用しない前置
命令コード、EA1、EA2の形態を例示する説明図で
ある。
【図13】メモリデータに対する直接的な演算命令の命
令フォーマットとしてイミディエイトを使用する前置命
令コード、EA2、演算(イミディエイト)の形態を例
示する説明図である。
【図14】メモリデータに対する直接的な転送命令の命
令フォーマットとしてイミディエイトを使用する前置命
令コード、EA2、転送(イミディエイト)の形態を例
示する説明図である。
【図15】前置命令コードのフォーマットを例示するフ
ォーマット図である。
【図16】データ転送命令に関するCPUのアドレッシ
ングモードの組合せを示した説明図である。
【図17】加算命令に関するCPUのアドレッシングモ
ードの組合せを示した説明図である。
【図18】レジスタセレクタの一部と命令レジスタの詳
細を示すブロック図である。
【図19】レジスタセレクタの選択論理の一部を論理記
述によって図20と共に示す説明図である。
【図20】レジスタセレクタの選択論理の一部を論理記
述によって図19と共に示す説明図である。
【図21】スタックポインタにも使用可能なレジスタに
関するレジスタセレクタの選択論理の一例を論理記述に
よって図22と共に示す説明図である。
【図22】スタックポインタにも使用可能なレジスタに
関するレジスタセレクタの選択論理の一例を論理記述に
よって図21と共に示す説明図である。
【図23】命令デコーダに含まれる転送命令コード(m
ov)の解読論理を図24及び図25と共に例示する論
理記述の説明図である。
【図24】命令デコーダに含まれる転送命令コード(m
ov)の解読論理を図23、及び図25と共に例示する
論理記述の説明図である。
【図25】命令デコーダに含まれる転送命令コード(m
ov)の解読論理を図23及び図24と共に例示する論
理記述の説明図である。
【図26】命令デコーダに含まれる演算命令コード(e
xe)の解読論理を図27と共に示す説明図である。
【図27】命令デコーダに含まれる演算命令コード(e
xe)の解読論理を図26と共に示す説明図である。
【図28】命令デコーダに含まれ、内部で生成されるラ
イト型転送命令と同等の動作を行なう命令コード(mo
v.st)の解読論理を図29及び図30と共に示す説
明図である。
【図29】命令デコーダに含まれ、内部で生成されるラ
イト型転送命令と同等の動作を行なう命令コード(mo
v.st)の解読論理を図28及び図30と共に示す説
明図である。
【図30】命令デコーダに含まれ、内部で生成されるラ
イト型転送命令と同等の動作を行なう命令コード(mo
v.st)の解読論理を図28及び図29と共に示す説
明図である。
【図31】前置命令コードを伴わない加算命令の実行タ
イミングを例示する動作タイミング図である。
【図32】レジスタ拡張用前置命令コードが付加された
加算命令の実行タイミングを例示する動作タイミング図
である。
【図33】レジスタグループフィールドを持つ前置命令
コード、メモリ・レジスタ型演算の前置命令コード、M
OV.W @aa:16,R0に相当する命令コード、
及びADD.W R0,R1に相当する命令コードを組
合せて1命令とみなされる命令を実行したときの動作タ
イミングを例示するタイミング図である。
【図34】レジスタ・メモリ型の加算命令(ADD.W
R1,@aa:16)の実行タイミングを示すタイミ
ング図である。
【図35】メモリ・メモリ型の加算命令(ADD.W
@ER1,@aa:16)の実行タイミングを示すタイ
ミング図である。
【図36】メモリ・メモリ型の転送命令(MOV.W
@ER1,@aa:16)の実行タイミングを示すタイ
ミング図である。
【図37】イミディエイト・メモリ型の加算命令(AD
D.W #xx ,@aa:16)の実行タイミングを示
すタイミング図である。
【図38】イミディエイト・メモリ型の転送命令(MO
V.W #xx,@aa:16)の実行タイミングを示
すタイミング図である。
【図39】命令デコーダDECに含まれる演算命令コー
ド(exe)の解読論理の一部に関する論理記述の別の
例を図40及び図41と共に示す説明図である。
【図40】命令デコーダDECに含まれる演算命令コー
ド(exe)の解読論理の一部に関する論理記述の別の
例を図39及び図41と共に示す説明図である。
【図41】命令デコーダDECに含まれる演算命令コー
ド(exe)の解読論理の一部に関する論理記述の別の
例を図39及び図40と共に示す説明図である。
【図42】CPUの開発環境の概略を示す説明図であ
る。
【図43】CPUのシステム開発装置におけるCPU選
択方法を例示する説明図である。
【図44】CPUのアセンブラが出力するリストの一例
を示す説明図である。
【図45】マイクロコンピュータのためのエミュレータ
のブロック図である。
【図46】CPUのためのエミュレータによるトレース
リストを例示する説明図である。
【図47】マイクロコンピュータのエミュレーション用
プロセッサの一例を示すブロック図である。
【図48】第2の下位CPUの別のプログラミングモデ
ルを示す説明図である。
【図49】CPUのアドレスマップの別の例を示す説明
図である。
【図50】図49に示される第2の下位CPUのアドレ
スマップにおける実効アドレスの計算方法を図51と共
に例示する説明図である。
【図51】図49に示される第2の下位CPUのアドレ
スマップにおける実効アドレスの計算方法を図50と共
に例示する説明図である。
【図52】命令拡張用前置命令コード、MOV.W #
xx,R0に相当する命令コードに前記ディスティネー
ション情報を付加した命令コードを組合せて1命令とみ
なされる命令を実行したときのタイミング図である。
【図53】検討課題Dに関する発明のマイクロコンピュ
ータが有するCPUの一例を示すブロック図である。
【図54】図53のCPUにおけるビットテスト命令の
命令フォーマットを例示する説明図である。
【図55】図53のCPUにおけるビット条件分岐命令
の命令フォーマットを図56及び図57と共に示す説明
図である。
【図56】図53のCPUにおけるビット条件分岐命令
の命令フォーマットを図55及び図57と共に示す説明
図である。
【図57】図53のCPUにおけるビット条件分岐命令
の命令フォーマットを図55及び図56と共に示す説明
図である。
【図58】図53のCPUにおけるビット条件分岐命令
を考慮したときの別の命令フォーマットにおける命令コ
ードの組み合わせを例示する説明図である。
【図59】テンポラリデータレジスタTRDの判定回路
の論理構成及び分岐制御論理を論理記述で例示する説明
図である。
【図60】ビットテスト命令及びビット条件分岐命令の
一部(第1のワード)に対する命令デコーダDECの論
理構成を図61及び図62と共に論理記述で例示する説
明図である。
【図61】ビットテスト命令及びビット条件分岐命令の
一部(第1のワード)に対する命令デコーダDECの論
理構成を図60及び図62と共に論理記述で例示する説
明図である。
【図62】ビットテスト命令及びビット条件分岐命令の
一部(第1のワード)に対する命令デコーダDECの論
理構成を図60及び図61と共に論理記述で例示する説
明図である。
【図63】条件分岐命令の一部に対する命令デコーダD
ECの論理構成を図64及び図65と共に論理記述によ
って例示する説明図である。
【図64】条件分岐命令の一部に対する命令デコーダD
ECの論理構成を図63及び図65と共に論理記述によ
って例示する説明図である。
【図65】条件分岐命令の一部に対する命令デコーダD
ECの論理構成を図63及び図64と共に論理記述によ
って例示する説明図である。
【図66】サブルーチン分岐命令の一部に対する命令デ
コーダDECの論理構成を図67及び図68と共に論理
記述によって例示する説明図である。
【図67】サブルーチン分岐命令の一部に対する命令デ
コーダDECの論理構成を図66及び図68と共に論理
記述によって例示する説明図である。
【図68】サブルーチン分岐命令の一部に対する命令デ
コーダDECの論理構成を図66及び図67と共に論理
記述によって例示する説明図である。
【図69】他の演算命令に対する命令デコーダDECの
論理構成を図70と共に論理記述によってを例示する説
明図である。
【図70】他の演算命令に対する命令デコーダDECの
論理構成を図69と共に論理記述によってを例示する説
明図である。
【図71】更に他の演算命令に対する命令デコーダDE
Cの論理構成を図72と共に論理記述で例示する説明図
である。
【図72】更に他の演算命令に対する命令デコーダDE
Cの論理構成を図71と共に論理記述で例示する説明図
である。
【図73】ビット条件分岐命令の第1の例(BBS #
0,@FFFFFE,$+20)の実行タイミングを例
示するタイミングチャートである。
【図74】ビット条件サブルーチン分岐命令の例(BB
SR #5,@FFFE00,$+300)の実行タイ
ミングを例示するタイミングチャートである。
【図75】ビットテスト命令の第1の例(BTST #
0,@FFFFFE)の実行タイミングを例示するタイ
ミングチャートである。
【図76】ビットテスト命令の第2の例(BTST #
1,@ER0+)の実行タイミングを例示するタイミン
グチャートである。
【図77】ビットセット命令の例(BSET #2,@
ER0+)の実行タイミングを例示するタイミングチャ
ートである。
【図78】ビット条件分岐命令の第2の例(BBC #
0,@ER0+,$+20)の実行タイミングを例示す
るタイミングチャートである。
【図79】検討課題Eの本発明に係るデータ処理装置の
一例であるマイクロコンピュータのブロック図である。
【図80】CPUのアドレス空間を示す説明図である。
【図81】複数汎用レジスタの転送命令(MOVM)の
機能を例示する説明図である。
【図82】複数汎用レジスタの転送命令(MOVM)に
よるデータ転送のデータ配置を例示する説明図である。
【図83】複数汎用レジスタの転送命令(MOVM)の
ような命令を示す前置命令コード(命令拡張用前置命令
コード)を例示する説明図である。
【図84】検討か課題Eの発明に係るデータ処理装置の
一例であるCPUの詳細な一例を示すブロック図であ
る。
【図85】レジスタセレクタの一部と命令レジスタの詳
細を示すブロック図である。
【図86】レジスタセレクタに入力される制御信号s1
〜s3の機能を例示する説明図である。
【図87】アドレスバッファを例示するブロック図であ
る。
【図88】レジスタ・レジスタ間のワードサイズの転送
命令(MOV及びMOVM命令)に対するデコーダの制
御論理の一部を論理記述によって示す説明図である。
【図89】図88の後に続く残りの論理記述を示す説明
図である。
【図90】16ビット絶対アドレスによる転送命令(M
OV及びMOVM命令)に対するデコーダの制御論理の
一部を論理記述によって示す説明図である。
【図91】図90の後に続く残りの論理記述の説明図で
ある。
【図92】図91の後に続く残りの論理記述の説明図で
ある。
【図93】図88及び図89に記載の論理記述の制御に
よるレジスタ・レジスタ間の転送命令(MOV及びMO
VM命令)による制御動作に対応されるフローチャート
である。
【図94】図90乃至図92に記載の論理記述の制御に
よる16ビット絶対アドレスによる転送命令(MOV及
びMOVM命令)による制御動作に対応されるフローチ
ャートである。
【図95】レジスタ−レジスタ型の第1の転送命令(M
OV.L ER0,ER1)、第2の転送命令(MO
V.L ER8,ER17)、及び複数レジスタの転送
命令の第1の例(MOVM.W R0−R1,E28−
E29)の実行タイミングを例示するタイミングチャー
トである。
【図96】複数レジスタの転送命令の第2の例(MOV
M.L @aa:16,ER0−ER1)の実行シーケ
ンスを例示するタイミングチャートである。
【図97】複数レジスタの転送命令の第3の例(MOV
M.W R10−R11,@ER6)の実行シーケンス
を例示するタイミングチャートである。
【図98】CPUの開発環境の概略を例示する説明図で
ある。
【図99】マイクロコンピュータのエミュレーション用
プロセッサを例示するブロック図である。
【図100】マイクロコンピュータをプリンタ制御に用
いたマイクロコンピュータシステムを例示するブロック
図である。
【符号の説明】
1 シングルチップマイクロコンピュータ 2 CPU 3 割込みコントローラ 30 内部バス 31 割込み要求信号 DEC 命令デコーダ 200 pfのデコード論理 201 movのデコード論理 202 exeのデコード論理 CHG 命令変更部 IR1、IR2 命令レジスタ mskint 割込みマスク信号 mod(MODS,MODD) モディファイ制御信号 mkmov 命令コード発生信号 EXEC 実行部 INTC 割込み制御部 RSEL レジスタセレクタ RDB リードデータバッファ WDB ライトデータバッファ TRA,TRD テンポラリレジスタ PC プログラムカウンタ ER0〜ER7 汎用レジスタ AB アドレスバッファ GB,WB,DB バス IDB 内部データバス IAB 内部アドレスバス ALU 算術論理演算器 2A CPU bc ビットコンディションフィールド 36 分岐制御信号 37 分岐制御論理 38 判定回路 AU 算術論理演算器 501 マイクロコンピュータ 502 CPU 510 バスコントローラ r1、r2 レジスタフィールド gr1、gr2 省略可能な命令コードのレジスタフィ
ールド LGR1,LGR2 命令レジスタ内のgr1、gr2
のラッチ回路 LAT1,LAT2 レジスタセレクタ内のgr2、r
2のラッチ回路 LOG1,LOG2 レジスタセレクタ内のr1、r2
の制御ロジック s1〜s3 レジスタフィールド値の制御信号
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 特願平11−320518 (32)優先日 平成11年11月11日(1999.11.11) (33)優先権主張国 日本(JP)

Claims (92)

    【特許請求の範囲】
  1. 【請求項1】 命令コードを読み込んで動作し、データ
    またはアドレスを格納可能なレジスタを複数個持つデー
    タ処理装置であって、 前記命令コードは基本単位から構成され、 前記命令コードはレジスタを指定する情報を持ち、 前記レジスタを指定する情報が、複数の命令コード基本
    単位に分割されて、分割された一方のレジスタを指定す
    る情報を持つ命令コードが省略可能とされ、 省略された場合に、省略されたレジスタ情報に代わって
    所定のレジスタ情報が暗黙的に想定されることを特徴と
    するデータ処理装置。
  2. 【請求項2】 データまたはアドレスを格納可能なレジ
    スタを複数個備え、命令コードを読み込んで制御手段で
    解読して動作するデータ処理装置であって、 前記命令コードは基本単位から構成され、前記レジスタ
    を指定するレジスタ指定情報は複数の命令コード基本単
    位に分割して保持させることが可能にされ、 前記制御制御手段は、前記命令コードが保有する前記レ
    ジスタ指定情報の解読結果に基づいてレジスタを選択
    し、分割された一方のレジスタ指定情報を持つ前置命令
    コードが省略された場合には、省略されたレジスタ指定
    情報に代わって所定のレジスタ指定情報を暗黙的に想定
    してレジスタを選択するものであることを特徴とするデ
    ータ処理装置。
  3. 【請求項3】 夫々複数個のレジスタを有するレジスタ
    セットを複数個備え、命令コードを読み込んで制御手段
    で解読し、その解読結果に従って前記レジスタを選択し
    て動作可能なデータ処理装置であって、 前記命令コードはオペレーション指定領域とレジスタ指
    定領域とを有し、 前記制御手段は、前記オペレーション指定領域に特定の
    オペレーションコードを保有する前置命令コードに対し
    て当該命令コードのレジスタ指定領域が保有するレジス
    タ指定情報をレジスタセットの指定情報とみなし、これ
    に続いて読み込んだ命令コードのレジスタ指定領域が保
    有するレジスタ指定情報をそのレジスタセット内のレジ
    スタの指定情報と見做してレジスタを選択し、前記前置
    命令コードが前置されずに読み込まれた命令コードのレ
    ジスタ指定領域が保有するレジスタ指定情報を規定のレ
    ジスタセット内のレジスタの指定情報と見做してレジス
    タを選択するものであることを特徴とするデータ処理装
    置。
  4. 【請求項4】 命令コードを読み込んで動作し、データ
    またはアドレスを格納可能なレジスタを複数個持つデー
    タ処理装置であって、 命令コードを保持する第1の命令コード保持手段及び第
    2の命令コード保持手段と、 命令コードをデコードする命令デコード手段と、 前記レジスタを選択する選択手段と、を含み、 前記第1の命令コード保持手段の出力は、前記第2の命
    令コード保持手段、前記命令デコード手段及び前記レジ
    スタ選択手段に結合され、 前記第2の命令コード保持手段の出力は、レジスタ選択
    手段に結合され、 前記命令デコード手段の出力は、レジスタ選択手段及び
    前記第2の命令コード保持手段に結合され、 前記命令デコード手段の前記第2の命令コード保持手段
    への出力は、前記第2の命令コード保持手段に対するラ
    ッチ信号と、所定の値へのセット信号を含み、 前記第2の命令コード保持手段に対するラッチ信号は、
    前記命令デコード手段が所定の命令コードをデコードし
    たとき発生し、 前記第2の命令コード保持手段に対する所定の値へのセ
    ット信号は、前記所定の命令コードによって指定された
    レジスタを用いる処理が終了された後に発生するもので
    あることを特徴とするデータ処理装置。
  5. 【請求項5】 前記命令デコード手段は、命令の実行終
    了に呼応して、前記第2の命令コード保持手段に対する
    前記所定の値へのセット信号を発生させるものであるこ
    とを特徴とする請求項4記載のデータ処理装置。
  6. 【請求項6】 更にデータ保持手段を含み、前記データ
    保持手段の出力が前記第2の命令コード保持手段に結合
    され、 前記所定の値へのセット信号の発生に呼応して、前記第
    2の命令コード保持手段は、前記データ保持手段の値に
    応じた値にセットされるものであることを特徴とする請
    求項5記載のデータ処理装置。
  7. 【請求項7】 サブルーチン分岐又は例外処理時に使用
    するスタックを指し示すスタックポインタを含み、 別のデータ保持手段を含み、前記別のデータ保持手段の
    出力が、前記レジスタ選択手段に結合され、 前記レジスタ選択手段は、前記命令デコード手段の出力
    と、前記別のデータ保持手段の出力とに呼応して、その
    出力がスタックポインタを選択するものであることを特
    徴とする請求項5又は6記載のデータ処理装置。
  8. 【請求項8】 前記前置命令コードを持たない別のデー
    タ処理装置のための命令コードと同一の命令コードをも
    って、当該別のデータ処理装置の命令実行機能を包含し
    た上で、前記前置命令コードを用いることにより、レジ
    スタ全体を利用する命令を実行可能であることを特徴と
    する請求項2又は3記載のデータ処理装置。
  9. 【請求項9】 前記レジスタは、データの保持には全体
    または2分割された領域を使用可能であり、前記分割さ
    れた一方のビット数よりも多いビット数をもってアドレ
    スの保持にも使用され、 分割された前記一方のビット数に相当するレジスタを有
    する別のデータ処理装置のための命令コードと同一の命
    令コードをもって、当該別のデータ処理装置の命令実行
    機能を包含した上で、レジスタ全体を利用する命令を実
    行可能であることを特徴とする請求項2又は3記載のデ
    ータ処理装置。
  10. 【請求項10】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタ間のデータ転送を行なう転送命令と、
    レジスタ上のデータに対して演算を行なう演算命令とを
    命令セットに含み、 前置命令コードと、前記転送命令の命令コードと、前記
    演算命令の命令コードとを、順次読み込んで、一つの命
    令として解釈し、メモリ上のデータに対する直接的な演
    算を実行することを特徴とするデータ処理装置。
  11. 【請求項11】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタ間のデータ転送を行なう転送命令と、
    レジスタ上のデータに対して演算を行なう演算命令とを
    命令セットに含み、 前置命令コードと、前記転送命令の命令コードと少なく
    ともメモリを指定する部分が等しい命令コードと、前記
    演算命令の命令コードと少なくとも演算を指定する部分
    が等しい命令コードとを、順次読み込んで、一つの命令
    として解釈し、メモリ上のデータに対する直接的な演算
    を実行することを特徴とするデータ処理装置。
  12. 【請求項12】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタ間のデータ転送を行なう転送命令と、
    レジスタ上のデータに対して演算を行なう演算命令とを
    命令セットに含み、 制御信号を発生する処理とメモリからラッチ手段への転
    送を行う処理とラッチ手段の内容に対する演算を行う処
    理とを実行する手段を有し、上記3つの処理を順次実行
    することによって、メモリ上のデータに対する直接的な
    演算を実行することを特徴とするデータ処理装置。
  13. 【請求項13】 前記前置命令コードと、前記転送命令
    の命令コードと、前記演算命令の命令コードとを、一つ
    の命令として解釈したときは、当該1つの命令に含まれ
    る夫々の命令コードで規定される処理の実行と実行との
    間に割込み処理の実行を禁止し、 前記転送命令、前記演算命令を独立の命令として実行す
    るときには、当該個々の命令の実行と実行との間に割込
    み処理を実行可能であることを特徴とする請求項10記
    載のデータ処理装置。
  14. 【請求項14】 演算結果を反映するフラグ手段を更に
    有し、 前記前置命令コードと、前記転送命令の命令コードと、
    前記演算命令の命令コードとを、一つの命令として解釈
    したときは、前記転送命令の命令コードの実行時に、前
    記フラグ手段の変化を抑止し、 前記転送命令を独立の命令として実行する場合には、前
    記フラグ手段の変化を可能とするものであることを特徴
    とする請求項10又は13記載のデータ処理装置。
  15. 【請求項15】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタ間のデータ転送を行なう転送命令を命
    令セットに含み、 前置命令コードと、前記転送命令の命令コードと、別の
    転送命令の命令コードとを、順次読み込んで、一つの命
    令として解釈し、メモリとの間の直接的なデータ転送を
    実行するものであることを特徴とするデータ処理装置。
  16. 【請求項16】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタ間のデータ転送を行なう転送命令を命
    令セットに含み、 制御信号を発生する処理とメモリからラッチ手段への転
    送を行う処理とラッチ手段からメモリへの転送を行う処
    理とを実行する手段を有し、上記3つの処理を順次実行
    することによって、メモリとの間の直接的なデータ転送
    を実行するものであることを特徴とするデータ処理装
    置。
  17. 【請求項17】 前記前置命令コードと、前記転送命令
    の命令コードと、別の転送命令の命令コードとを、一つ
    の命令として解釈したときは、当該1つの命令に含まれ
    る夫々の命令コードで規定される処理の実行と実行との
    間に割込み処理の実行を禁止し、 前記転送命令、前記別の転送命令を実行する場合には、
    当該個々の命令の実行と実行との間に割込み処理を実行
    可能であることを特徴とする請求項15記載のデータ処
    理装置。
  18. 【請求項18】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタの間のデータ転送を行なう転送命令
    と、レジスタ上のデータに対する演算命令とを命令セッ
    トに含み、 前記転送命令と演算命令を持つ別のマイクロコンピュー
    タの命令コードを包含した上で、 前記別のマイクロコンピュータが処理対象とはしない前
    置命令コードと、前記転送命令の命令コードと、前記演
    算命令の命令コードとを、順次読み込んで、一つの命令
    として解釈し、前記別のマイクロコンピュータが持たな
    い、メモリ上のデータに対する直接的な演算を実行する
    命令を、命令セットに含むものであることを特徴とする
    データ処理装置。
  19. 【請求項19】 前記前置命令コードと、前記転送命令
    の命令コードと、前記演算命令の命令コードとを、一つ
    の命令として解釈したときは、当該1つの命令に含まれ
    る夫々の命令コードで規定される処理の実行と実行との
    間に割込み処理の実行を禁止し、 前記転送命令、前記演算命令を独立の命令として実行す
    るときには、当該個々の命令の実行と実行との間に割込
    み処理を実行可能であることを特徴とする請求項18記
    載のデータ処理装置。
  20. 【請求項20】 演算結果を反映するフラグ手段を更に
    有し、 前記前置命令コードと、前記転送命令の命令コードと、
    前記演算命令の命令コードとを、一つの命令として解釈
    したときは、前記転送命令の命令コードの実行時に、前
    記フラグ手段の変化を抑止し、 前記転送命令を独立の命令として実行する場合には、前
    記フラグ手段の変化を可能とするものであることを特徴
    とする請求項18又は19記載のデータ処理装置。
  21. 【請求項21】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するデータ処
    理装置であって、 メモリとレジスタの間のデータ転送を行なう第1、第2
    の転送命令を命令セットに含み、 前記第1、第2の転送命令を持つ別のマイクロコンピュ
    ータの命令コードを包含した上で、 前記別のマイクロコンピュータが処理対象とはしない前
    置命令コードと、前記第1の転送命令の命令コードと、
    前記第2の転送命令の命令コードとを、順次読み込ん
    で、一つの命令として解釈し、前記別のマイクロコンピ
    ュータの持たない、メモリとの間の直接的なデータ転送
    を実行する命令を、命令セットに含むものであることを
    特徴とするデータ処理装置。
  22. 【請求項22】 前記前置命令コードと、前記第1の転
    送命令の命令コードと、前記第2の転送命令の命令コー
    ドとを、一つの命令として解釈したときは、当該1つの
    命令に含まれる夫々の命令コードで規定される処理の実
    行と実行との間に割込み処理の実行を禁止し、 前記第1の転送命令と、前記第2の転送命令を独立の命
    令として実行する場合には、当該個々の命令に実行と実
    行との間に割込み処理を実行可能であることを特徴とす
    る請求項21記載のデータ処理装置。
  23. 【請求項23】 前記メモリ上のデータに対する直接的
    な演算とは、前記命令コードには明示されないデータラ
    ッチ手段へメモリからデータをロードし、当該データラ
    ッチ手段にロードしたデータを用いて行なう演算処理で
    あることを特徴とする請求項10又は18記載のデータ
    処理装置。
  24. 【請求項24】 前記メモリとの間の直接的なデータ転
    送とは、前記命令コードには明示されないデータラッチ
    手段へメモリからデータをロードし、当該データラッチ
    手段のデータを前記メモリにストアする処理であること
    を特徴とする請求項15又は21記載のデータ処理装
    置。
  25. 【請求項25】 請求項10乃至24の何れか1項記載
    のデータ処理装置と、前記データ処理装置に接続される
    バスと、前記バスに接続され、前記データ処理装置によ
    る前記転送命令の命令コードの実行によってアクセスさ
    れるメモリと、を1個の半導体チップに含んで成るもの
    であることを特徴とする半導体装置。
  26. 【請求項26】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有し、 メモリとレジスタの間のデータ転送を行なう転送命令を
    命令セットに含み、 前記転送命令の命令コードはデータの転送元又は転送先
    を指示するためのデータレジスタフィールドを有する、
    マイクロコンピュータであって、 前記命令セットには、前記転送命令の命令コードを、命
    令コードの先頭でない位置に含む命令コードを持つ別の
    命令を更に含み、 前記別の命令の命令コード中においては、前記転送命令
    の命令コードにおける前記データの転送元または転送先
    を指示するためのデータレジスタフィールドを使用せ
    ず、前記データの転送元または転送先を指示するための
    情報フィールドを、前記命令コードの別の位置に保持す
    るものであることを特徴とするマイクロコンピュータ。
  27. 【請求項27】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有するマイクロ
    コンピュータであって、 第1の命令コードと第2の命令コードを含んだ命令と、
    前記第2の命令コードのみを持つ命令とを命令セットに
    含み、 前記第1の命令コードは、メモリ上のデータをリード又
    はライトするための情報を保持するレジスタフィールド
    を持たず、 前記第1の命令コードの実行には、メモリ上のデータの
    リード又はライトを行なわず、命令のリード動作のみを
    行い、続く命令コードに対する制御信号を発生し、 前記第2の命令コードは、メモリ上のデータをリード又
    はライトするための情報を保持するレジスタフィールド
    を持ち、 前記第2の命令コードの実行には、命令のリードと、前
    記レジスタフィールドの情報に基づくメモリのリード又
    はライトを行い、前記第1の命令コードの発生した制御
    信号に基づき、前記メモリに対するリード又はライトの
    データ転送先又は転送元の何れかを変更するものである
    ことを特徴とするマイクロコンピュータ。
  28. 【請求項28】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有し、メモリと
    レジスタとの間のデータ転送を行なう転送命令と、レジ
    スタ上のデータに対して演算を行なう演算命令とを命令
    セットに含むマイクロコンピュータであって、 前記命令セットは、前置命令コードと、前記転送命令の
    命令コードと、前記演算命令の命令コードとを、順次読
    み込んで、一つの命令として解釈し、メモリ上のデータ
    に対する演算を実行する命令を更に含み、 前記転送命令、前記演算命令、及び演算結果をメモリに
    ライトするための転送命令の各実行時間の合計より、前
    記メモリ上のデータに対する演算を実行する命令の実行
    時間が短いものであることを特徴とするマイクロコンピ
    ュータ。
  29. 【請求項29】 命令コードを読み込んで動作し、デー
    タ又はアドレスを格納可能なレジスタを有し、メモリと
    レジスタとの間のデータ転送を行なう転送命令と、レジ
    スタ上のデータに対して演算を行なう演算命令とを命令
    セットに含むマイクロコンピュータであって、 前記命令セットは、前置命令コードと、前記転送命令の
    命令コードと少なくともメモリを指定する部分が等しい
    命令コードと、前記演算命令の命令コードと少なくとも
    演算を指定する部分の等しい命令コードとを、順次読み
    込んで、一つの命令として解釈し、メモリ上のデータに
    対する演算を実行する命令を更に含み、 前記転送命令、前記演算命令、及び演算結果をメモリに
    ライトするための転送命令の各実行時間の合計より、前
    記メモリ上のデータに対する演算を実行する命令の実行
    時間が短いものであることを特徴とするマイクロコンピ
    ュータ。
  30. 【請求項30】 前記命令セットは、前置命令コード
    と、前記転送命令の命令コードと、前記演算命令の命令
    コードとを、順次読み込んで、一つの命令として解釈
    し、メモリ上のデータと汎用レジスタ上のデータに対す
    る演算を行い、演算結果を汎用レジスタに格納する別の
    命令を更に含み、 前記転送命令、及び前記演算命令の実行時間の合計よ
    り、前記メモリ上のデータと汎用レジスタ上のデータに
    対する演算を行い、演算結果を汎用レジスタに格納する
    別の命令の実行時間が長いものであることを特徴とする
    請求項28記載のマイクロコンピュータ。
  31. 【請求項31】 命令コードを読み込んで動作するマイ
    クロコンピュータであって、 命令コードをデコードする手段を有し、 前記デコード手段は、所定の命令コードを解読して、次
    の命令コードに対して、第1のデータの出力先または入
    力元を指示する第1の制御信号と、第2のデータの出力
    先または入力元を指示する第2の制御信号とを発生する
    ものであることを特徴とするマイクロコンピュータ。
  32. 【請求項32】 前記デコード手段は、前記所定の命令
    コードを解読して、次の命令コードに対して、更に、演
    算または転送対象とされるデータのサイズを指示する信
    号とを発生するものであることを特徴とする請求項31
    記載のマイクロコンピュータ。
  33. 【請求項33】 命令コードを読み込んで動作するマイ
    クロコンピュータであって、 命令コードをデコードする手段と、 データ又はアドレスを格納可能なレジスタと、 データを演算する演算手段と、 前記命令コードでは明示されずにデータをラッチするラ
    ッチ手段を含み、 前記デコード手段は、第1の制御信号を発生すると共
    に、所定の命令コードと前記第1の制御信号を解読し
    て、前記演算手段の入力データの入力元又は出力データ
    の出力先の少なくとも一方を、前記レジスタ又はラッチ
    手段の何れから選択するかを制御する第2の制御信号を
    生成するものであることを特徴とする請求項32記載の
    マイクロコンピュータ。
  34. 【請求項34】 前記ラッチ手段は、テンポラリレジス
    タ及びデータバッファレジスタの中から選ばれたレジス
    タであることを特徴とする請求項33記載のマイクロコ
    ンピュータ。
  35. 【請求項35】 前記デコード手段は、第1の命令コー
    ドを解読して前記第1の制御信号を出力し、第2の命令
    コードと前記第1の制御信号を解読して前記第2の制御
    信号を出力し、 前記第2の制御信号は、メモリ上のデータをリードする
    アドレス信号とリード動作を指示するリード信号であ
    り、前記第1の制御信号が第1のレベルであるときに
    は、メモリからのリードデータを前記レジスタに格納さ
    せ、前記第1の制御信号が第2のレベルであるときに
    は、メモリからのリードデータを前記ラッチ手段に格納
    させるものであることを特徴とする請求項33記載のマ
    イクロコンピュータ。
  36. 【請求項36】 前記第1の命令コードは前置命令コー
    ドであり、前記第2の命令コードは転送命令コードであ
    ることを特徴とする請求項35記載のマイクロコンピュ
    ータ。
  37. 【請求項37】 前記デコード手段は、第3の命令コー
    ドと前記第1の制御信号を解読し、前記第1の制御信号
    が第1のレベルであるときには前記レジスタのデータを
    前記演算手段の入力に供給させ、制御信号が第2のレベ
    ルであるときには前記ラッチ手段のデータを前記演算手
    段の入力に供給させるものであることを特徴とする請求
    項35記載のマイクロコンピュータ。
  38. 【請求項38】 前記デコード手段は、第3の命令コー
    ドと前記第1の制御信号を解読し、制御信号が第1のレ
    ベルであるときには、前記レジスタに前記演算手段の出
    力データを供給させ、前記第1の制御信号が第2のレベ
    ルであるときには、前記ラッチ手段に前記演算手段の出
    力データを供給させるものであることを特徴とする請求
    項37記載のマイクロコンピュータ。
  39. 【請求項39】 前記デコード手段は、第3の命令コー
    ドと前記第1の制御信号を解読して、第4の命令コード
    を発生させ、発生させた前記第4の命令コードを入力し
    て解読し、この第4の命令コードの結果に従ってメモリ
    へのデータをライトする制御信号信号を発生させるもの
    であることを特徴とする請求項38記載のマイクロコン
    ピュータ。
  40. 【請求項40】 命令コードでは明示されずにデータを
    ラッチする更に別のラッチ手段を持ち、 前記デコード手段は、第2の命令コード(転送命令コー
    ド)を解読しては前記発生したメモリのアドレスの情報
    を前記別のラッチ手段に格納し、前記第4の命令コード
    の解読結果に従って、前記別のラッチ手段に格納したア
    ドレスの情報に基づいて、メモリへのデータをライトさ
    せるものであることを特徴とする請求項39記載のマイ
    クロコンピュータ。
  41. 【請求項41】 前記第3の命令コードは演算命令コー
    ドであることを特徴とする請求項37乃至40の何れか
    1項記載のマイクロコンピュータ。
  42. 【請求項42】 前記デコード手段は、第1の命令コー
    ド、第2の命令コード、及び第3の命令コードで規定さ
    れる処理の実行と実行との間に割込み処理の実行を禁止
    する制御信号を生成するものであることを特徴とする請
    求項37又は38記載のマイクロコンピュータ。
  43. 【請求項43】 前記デコード手段は、第1の命令コー
    ド、第2の命令コード、第3の命令コード、及び第4の
    命令コードで規定される処理の実行と実行との間に割込
    み処理の実行を禁止する制御信号を生成するものである
    ことを特徴とする請求項39又は40記載のマイクロコ
    ンピュータ。
  44. 【請求項44】 命令を所定の手順にしたがって実行す
    るデータ処理装置であって、 第1の別のデータ処理装置の命令実行機能を包含するこ
    とによって当該第1の別のマイクロコンピュータの命令
    コードと同一の命令コードを実行可能であり、 第2の別のデータ処理装置の命令実行機能を包含するこ
    とによって当該第2の別のデータ処理装置の命令コード
    と同一の命令コードを実行可能であって、 前記第1の別のデータ処理装置の命令実行機能に包含さ
    れず、前記第2の別のデータ処理装置の命令実行機能に
    包含されるところの、オペランド指定とオペレーション
    指定との双方又は何れか一方に関し、複数の前記指定を
    組み合わせた命令と、前記第2の別のデータ処理装置の
    命令実行機能に包含されず、前記第1の別のデータ処理
    装置の命令実行機能に包含されるところの、オペランド
    指定とオペレーション指定との双方又は何れか一方に関
    し、複数の前記指定を組み合わせた命令と、を実行する
    命令実行手段を含んで成るものであることを特徴とする
    データ処理装置。
  45. 【請求項45】 前記オペランド指定は、実行アドレス
    の演算、汎用レジスタ、又はアドレス空間に関する指定
    であることを特徴とする請求項44記載のデータ処理装
    置。
  46. 【請求項46】 有効なアドレスのビット数とベクタ及
    びスタックの単位サイズとが相違される第1動作モード
    と第2の動作モードとを切替え可能に有し、 前記第1の動作モードにおける有効なアドレスのビット
    数と、ベクタ及びスタックの単位サイズが、前記第1の
    別のデータ処理装置と同等であり、 前記第2の動作モードにおける有効なアドレスのビット
    数と、ベクタ及びスタックの単位サイズが、前記第2の
    別のデータ処理装置と同等であることを特徴とする請求
    項44又は45記載のデータ処理装置。
  47. 【請求項47】 命令を所定の手順にしたがって実行す
    るデータ処理装置であって、 データ情報の保持には全体又は2分割した領域を利用可
    能であり、且つ、2分割された下位側のビット数よりも
    多いビット数を以ってアドレス情報の保持にも利用可能
    な汎用レジスタを複数有し、 前記2分割した下位側のビット数に相当する汎用レジス
    タを、所定の複数有する第1の別のデータ処理装置の命
    令のコードと同一ビット数の命令のコードを実行可能な
    ように当該第1の別のデータ処理装置の命令実行機能を
    包含した上で、前記2分割可能な汎用レジスタの全体を
    利用する命令を実行し、また、前記2分割可能な汎用レ
    ジスタを前記所定の複数よりも少ない数だけ有する第2
    の別のデータ処理装置の命令のコードと同一ビット数の
    命令コードを実行可能なように当該第2の別のデータ処
    理装置の命令実行機能を包含した命令実行手段を有して
    成るものであることを特徴とするデータ処理装置。
  48. 【請求項48】 第1のデータ処理装置における未定義
    の命令のコードを前置命令コードとし、前記前置命令コ
    ードは、これに続く、第1のデータ処理装置の命令コー
    ドの定義を変更して、第1のデータ処理装置では定義さ
    れていない、オペランド指定とオペレーション指定との
    双方又は何れか一方に関し、複数の前記指定を組合せた
    命令を定義することにより、前記第1のデータ処理装置
    の命令を包含する命令を有する第2のデータ処理装置の
    命令を実現し、 前記第2のデータ処理装置の命令の一部によって第3の
    データ処理装置の命令を実現することを特徴とするデー
    タ処理装置の開発方法。
  49. 【請求項49】 前記前置命令コードはこれに続く命令
    コードによって指定される汎用レジスタの指定を変更可
    能にするものであることをと特徴とする請求項48記載
    のデータ処理装置の開発方法。
  50. 【請求項50】 前記前置命令コードは、これに続く転
    送命令コードと、別の転送命令のコードまたは演算命令
    のコードの内の2つ以上の命令コードによって、メモリ
    上のデータの操作を定義するもであることを特徴とする
    請求項48記載のデータ処理装置の開発方法。
  51. 【請求項51】 前記第1及び第2のデータ処理装置は
    CPUであり、前記第1のデータ処理装置は命令実行機
    能上第2のデータ処理装置に対する下位CPUであり、
    前記第2のデータ処理装置は命令実行機能上第1のデー
    タ処理装置に対する上位CPUであることを特徴とする
    請求項48乃至50の何れか1項記載のデータ処理装置
    の開発方法。
  52. 【請求項52】 請求項44乃至47の何れか1項記載
    のデータ処理装置と、エミュレーションインタフェース
    とを含み、前記データ処理装置の命令実行によって、前
    記第1、第2の別のデータ処理装置の命令実行を代行可
    能なものであることを特徴とするエミュレーション用プ
    ロセッサ。
  53. 【請求項53】 請求項52記載のエミュレーション用
    プロセッサを搭載し、ユーザプログラムを実行するエミ
    ュレーション用プロセッサにその内部状態を制御させる
    為の制御プログラムを格納可能なエミュレーションプロ
    グラム領域と、エミュレーションプログラム領域に前記
    制御プログラムを格納するコントロールプロセッサとを
    含んで成るものであることを特徴とするエミュレータ。
  54. 【請求項54】 エミュレーション用プロセッサは、前
    記制御プログラムに従った内部の設定状態に応じて前記
    第1、第2の別のデータ処理装置の命令実行を代行可能
    とされるものであることを特徴とする請求項53記載の
    エミュレータ。
  55. 【請求項55】 請求項44乃至47の何れか1項記載
    のデータ処理装置、第1の別のデータ処理装置又は第2
    の別のデータ処理装置のプログラムを生成可能なソフト
    ウェア開発装置であって、生成すべきプログラムの対象
    となるデータ処理装置を選択する手段を有するものであ
    ることを特徴とするソフトウェア開発装置。
  56. 【請求項56】 データまたはアドレスを格納可能なレ
    ジスタを複数個備え、命令コードを読み込んで制御手段
    で解読して動作するデータ処理装置であって、 前記命令コードは基本単位から構成され、前記レジスタ
    を指定するレジスタ指定情報は複数の命令コード基本単
    位に分割して保持させることが可能にされ、 メモリとレジスタ間のデータ転送を行なう転送命令コー
    ドと、レジスタ上のデータに対して演算を行なう演算命
    令コードとを命令セットに含み、 前記制御手段は、前記命令コードが保有する前記レジス
    タ指定情報の解読結果に基づいてレジスタを選択し、分
    割された一方のレジスタ指定情報を持つ前置命令コード
    が省略された場合には、省略されたレジスタ指定情報に
    代わって所定のレジスタ指定情報を暗黙的に想定してレ
    ジスタを選択し、また、前置命令コードと、前記転送命
    令コードと、前記演算命令コードとを、順次読み込ん
    で、一つの命令として解釈し、メモリ上のデータに対す
    る直接的な演算を実行させるものであることを特徴とす
    るデータ処理装置。
  57. 【請求項57】 前記前置命令コードと、前記転送命令
    コードと、前記演算命令コードとを、一つの命令として
    解釈したときは、当該1つの命令に含まれる夫々の命令
    コードで規定される処理の実行と実行との間に割込み処
    理の実行を禁止し、 前記転送命令コード、前記演算命令コードを独立の命令
    として実行するときには、当該個々の命令コードの実行
    と実行との間に割込み処理を実行可能であることを特徴
    とする請求項56記載のデータ処理装置。
  58. 【請求項58】 データまたはアドレスを格納可能なレ
    ジスタを複数個備え、命令コードを読み込んで制御手段
    で解読して動作するデータ処理装置であって、 前記命令コードは基本単位から構成され、前記レジスタ
    を指定するレジスタ指定情報は複数の命令コード基本単
    位に分割して保持させることが可能にされ、 メモリとレジスタ間のデータ転送を行なう転送命令コー
    ドを命令セットに含み、 前記制御手段は、前記命令コードが保有する前記レジス
    タ指定情報の解読結果に基づいてレジスタを選択し、分
    割された一方のレジスタ指定情報を持つ前置命令コード
    が省略された場合には、省略されたレジスタ指定情報に
    代わって所定のレジスタ指定情報を暗黙的に想定してレ
    ジスタを選択し、また、前置命令コードと、前記転送命
    令コードと、別の転送命令コードとを、順次読み込ん
    で、一つの命令として解釈し、メモリとの間の直接的な
    データ転送を実行させるものであることを特徴とするデ
    ータ処理装置。
  59. 【請求項59】 前記前置命令コードと、前記転送命令
    コードと、別の転送命令コードとを、一つの命令として
    解釈したときは、当該1つの命令に含まれる夫々の命令
    コードで規定される処理の実行と実行との間に割込み処
    理の実行を禁止し、 前記転送命令コード、前記別の転送命令コードを個々に
    実行する場合には、当該個々の命令コードの実行と実行
    との間に割込み処理を実行可能であることを特徴とする
    請求項58記載のデータ処理装置。
  60. 【請求項60】 命令コードを読み込んで動作し、デー
    タまたはアドレスを格納可能なレジスタを複数個持つデ
    ータ処理装置であって、 命令コードを保持する第1の命令コード保持手段及び第
    2の命令コード保持手段と、 命令コードをデコードする命令デコード手段と、 前記レジスタを選択する選択手段と、を含み、 命令セットにはメモリとレジスタ間のデータ転送を行な
    う転送命令コードと、レジスタ上のデータに対して演算
    を行なう演算命令コードとを含み、 前記デコード手段は、前置命令コードと、前記転送命令
    コードと、前記演算命令コードとを、順次読み込んで、
    一つの命令として解釈し、メモリ上のデータに対する直
    接的な演算を実行させることが可能であり、 前記第1の命令コード保持手段の出力は、前記第2の命
    令コード保持手段、前記命令デコード手段及び前記レジ
    スタ選択手段に結合され、 前記第2の命令コード保持手段の出力は、レジスタ選択
    手段に結合され、 前記命令デコード手段の出力は、レジスタ選択手段及び
    前記第2の命令コード保持手段に結合され、 前記命令デコード手段の前記第2の命令コード保持手段
    への出力は、前記第2の命令コード保持手段に対するラ
    ッチ信号と、所定の値へのセット信号を含み、前記第2
    の命令コード保持手段に対するラッチ信号は、前記命令
    デコード手段が所定の命令コードをデコードしたとき発
    生し、前記第2の命令コード保持手段に対する所定の値
    へのセット信号は、前記所定の命令コードによって指定
    されたレジスタを用いる処理が終了された後に発生され
    るものであることを特徴とするデータ処理装置。
  61. 【請求項61】 命令コードを読み込んで動作し、デー
    タまたはアドレスを格納可能なレジスタを複数個持つデ
    ータ処理装置であって、 命令コードを保持する第1の命令コード保持手段及び第
    2の命令コード保持手段と、 命令コードをデコードする命令デコード手段と、 前記レジスタを選択する選択手段と、を含み、 命令セットにはメモリとレジスタ間のデータ転送を行な
    う転送命令コードを含み、 前記デコード手段は、前置命令コードと、前記転送命令
    コードと、別の転送命令コードとを、順次読み込んで、
    一つの命令として解釈し、メモリとの間の直接的なデー
    タ転送を実行させることが可能とされ、 前記第1の命令コード保持手段の出力は、前記第2の命
    令コード保持手段、前記命令デコード手段及び前記レジ
    スタ選択手段に結合され、 前記第2の命令コード保持手段の出力は、レジスタ選択
    手段に結合され、 前記命令デコード手段の出力は、レジスタ選択手段及び
    前記第2の命令コード保持手段に結合され、 前記命令デコード手段の前記第2の命令コード保持手段
    への出力は、前記第2の命令コード保持手段に対するラ
    ッチ信号と、所定の値へのセット信号を含み、前記第2
    の命令コード保持手段に対するラッチ信号は、前記命令
    デコード手段が所定の命令コードをデコードしたとき発
    生し、前記第2の命令コード保持手段に対する所定の値
    へのセット信号は、前記所定の命令コードによって指定
    されたレジスタを用いる処理が終了された後に発生され
    るものであることを特徴とするデータ処理装置。
  62. 【請求項62】 前記メモリ上のデータに対する直接的
    な演算とは、前記命令コードには明示されないデータラ
    ッチ手段へメモリからデータをロードし、当該データラ
    ッチ手段にロードしたデータを用いて行なう演算処理で
    あることを特徴とする請求項56又は60記載のデータ
    処理装置。
  63. 【請求項63】 前記メモリとの間の直接的なデータ転
    送とは、前記命令コードには明示されないデータラッチ
    手段へメモリからデータをロードし、当該データラッチ
    手段のデータを前記メモリにストアする処理であること
    を特徴とする請求項58又は61記載のデータ処理装
    置。
  64. 【請求項64】 請求項56乃至63の何れか1項記載
    のデータ処理装置と、前記データ処理装置に接続される
    バスと、前記バスに接続され、前記データ処理装置によ
    る前記転送命令の命令コードの実行によってアクセスさ
    れるメモリと、を1個の半導体チップに含んで成るもの
    であることを特徴とする半導体装置。
  65. 【請求項65】 アドレス空間のビット数に相応するビ
    ット数のプログラムカウント手段と、 データ情報の保持には全体又は2分割した領域を利用可
    能であり、且つ、2分割された前記一方のビット数より
    も多いビット数を以ってアドレス情報の保持にも利用可
    能な複数の汎用レジスタと、 命令実行手段とを有し、前記命令実行手段は、データ情
    報の保持に前記汎用レジスタの全体を利用する命令と、
    前記汎用レジスタと別の記憶装置との間のデータ転送命
    令とを実行可能であって、前記データ転送命令の転送デ
    ータのビット数を、前記汎用レジスタの2分割した前記
    一方のビット数以下とすることが可能であり、アドレス
    空間上のデータを指定するためのアドレッシングモード
    の一部をアドレス空間上で複数に分離された部分で有効
    とするものである、ことを特徴とするデータ処理装置。
  66. 【請求項66】 前記アドレス空間上で複数に分離され
    た一方の部分は、命令実行の開始アドレスを指定するベ
    クタを含み、他方の部分は、リード・ライト可能な別の
    記憶装置のアドレスがマッピングされるものであること
    を特徴とする請求項65記載のデータ処理装置。
  67. 【請求項67】 命令セットに含まれる命令コードを読
    み込んで動作するデータ処理装置であって、 アドレス空間上のデータを読み込んで、前記データの所
    定のビットが所定の状態であることに呼応して分岐を行
    なう分岐命令を前記命令セットに含み、 前記分岐命令は、命令コードの基本単位の複数倍の情報
    を含んで構成され、 前記分岐命令の第1の基本単位情報は、アドレス空間上
    の指定されたデータを読み込んで、プログラミング上解
    放されていないラッチ手段に格納する処理を指示し、 前記分岐命令の第2の基本単位情報は、前記ラッチ手段
    に格納したデータの所定のビットを検査して、検査結果
    に従って分岐するかしないかの処理を指示するものであ
    ることを特徴とするデータ処理装置。
  68. 【請求項68】 前記第1の基本単位情報は、アドレス
    空間上のデータの指定方法に応じて複数種類の中から使
    用可能とされ、 前記第2の基本単位情報は、分岐先アドレスの指定方法
    に応じて複数種類の中から使用可能とされ、 前記分岐命令は、前記第1の基本単位情報と第2の基本
    単位情報の種類の組合せに応じた動作を指示するもので
    あることを特徴とする請求項67記載のデータ処理装
    置。
  69. 【請求項69】 演算結果を反映するフラグ手段を更に
    有し、 前記第2の基本単位情報は、独立した条件分岐命令とし
    て機能することが可能であって、前記独立した条件分岐
    命令として機能する時には、前記フラグ手段の所定の単
    数又は複数のビットを検査し、その検査結果に従って分
    岐する指示を与えるものであることを特徴とする請求項
    67又は68記載のデータ処理装置。
  70. 【請求項70】 命令セットに含まれる命令コードを読
    み込んで動作するデータ処理装置であって、 メモリとレジスタ間のデータ転送を行う転送命令と、レ
    ジスタに格納したデータの所定のビットを検査して、検
    査結果に従って分岐するかしないかの動作を行う分岐命
    令とを前記命令セットに含み、 前置命令コード、前記転送命令の命令コード、及び前記
    分岐命令の命令コードを順次読み込んで、1つの命令と
    して解釈し、アドレス空間上の指定されたデータを読み
    込んで、プログラミング上解放されていないラッチ手段
    に格納し、前記ラッチ手段に格納したデータの所定のビ
    ットを検査して、検査結果に従って分岐するかしないか
    の動作をおこなうものであることを特徴とするデータ処
    理装置。
  71. 【請求項71】 演算結果を反映するフラグ手段を更に
    有し、前記前置命令コードと共に一つの命令として解釈
    された前記転送命令は、前記フラグ手段の変化を抑止す
    るものであることを特徴とする請求項70記載のデータ
    処理装置。
  72. 【請求項72】 前記ラッチ手段に結合されたビット検
    査手段を有し、 前記ビット検査手段は、前記前置命令コードと共に一つ
    の命令として解釈される前記分岐命令の所定のビットに
    従って、検査結果の出力を行い、 前記前置命令コードと共に一つの命令として解釈される
    前記分岐命令は、前記検査結果の出力に呼応して、分岐
    するかしないかの判定を行なうものであることを特徴と
    する請求項70又は71項記載のデータ処理装置。
  73. 【請求項73】 命令コードをデコードするデコード手
    段を有し、 前記デコード手段は、前記前置命令コードと共に一つの
    命令として解釈される前記転送命令を解読して、後続の
    分岐命令の命令コードに対して動作の変更を指示する制
    御信号を発生するものであることを特徴とする請求項7
    0乃至72の何れか1項記載のデータ処理装置。
  74. 【請求項74】 前記前置命令コードと共に一つの命令
    として解釈される前記転送命令及び分岐命令を実行する
    とき、前記転送命令の命令コードで規定される処理と前
    記分岐命令の命令コードで規定される処理との間に割込
    み処理の挿入を禁止するものであることを特徴とする請
    求項70乃至73の何れか1項記載のデータ処理装置。
  75. 【請求項75】 命令セットに含まれる命令コードを読
    み込んで動作するデータ処理装置であって、 アドレス空間上のデータを読み込み、読み込んだデータ
    を用いてデータ処理を行う複合命令を前記命令セットに
    含み、 前記複合命令は、命令コードの基本単位の複数倍の情報
    を含んで構成され、 前記複合命令の第1の基本単位情報は、アドレス空間上
    の指定されたデータを読み込んで、プログラミング上解
    放されていないラッチ手段に格納する処理を指示し、 前記複合命令の第2の基本単位情報は、前記ラッチ手段
    に格納したデータを用いた所定のデータ処理を指示する
    ものであることを特徴とするデータ処理装置。
  76. 【請求項76】 前記ラッチ手段はテンポラリデータレ
    ジスタ又はテンポラリアドレスレジスタであることを特
    徴とする請求項75記載のデータ処理装置。
  77. 【請求項77】 複数個の汎用レジスタを有し命令を実
    行する実行手段と、命令を解読して前記実行手段を制御
    する制御手段とを含むデータ処理装置であって、 前記制御手段に対して指定可能な複数個の汎用レジスタ
    の組み合わせを固定的とし、当該組み合わせ固定的な複
    数個の汎用レジスタとアドレス空間上のメモリとの間で
    データ転送を実行させる複数レジスタ・メモリ間転送命
    令を命令セットに含んで成るものであることを特徴とす
    るデータ処理装置。
  78. 【請求項78】 前記制御手段は前記複数レジスタ・メ
    モリ間転送命令が保有する情報に従って前記実行手段の
    演算器に最初にアクセスされるメモリアドレスを計算さ
    せ、続いてアクセスされるメモリアドレスを前記実行手
    段のアドレスバッファに更新させるものであることを特
    徴とする請求項77記載のデータ処理装置。
  79. 【請求項79】 前記複数レジスタ・メモリ間転送命令
    は、複数単位の命令コードで構成され、その一部の命令
    コードは、単一の汎用レジスタとメモリとの間の転送命
    令の命令コードと共通であることを特徴とする請求項7
    7又は78記載のデータ処理装置。
  80. 【請求項80】 前記複数レジスタ・メモリ間転送命令
    は、メモリのアドレスを指定する複数種類のアドレシン
    グモードから選ばれた一つのアドレシングモードが指定
    されているものであることを特徴とする請求項77乃至
    79の何れか1項記載のデータ処理装置。
  81. 【請求項81】 前記制御手段に対して指定可能な複数
    個の汎用レジスタの組み合わせを固定的とし、当該組み
    合わせ固定的な複数個の汎用レジスタと汎用レジスタと
    の間でデータ転送を実行させる複数レジスタ・レジスタ
    間転送命令を命令セットに含んで成るものであることを
    特徴とする請求項77乃至80の何れか1項記載のデー
    タ処理装置。
  82. 【請求項82】 前記複数レジスタ・レジスタ間転送命
    令は、レジスタを指定する情報の下位ビットが、転送元
    レジスタと転送先レジスタとで共通とされていることを
    特徴とする請求項81記載のデータ処理装置。
  83. 【請求項83】 前記レジスタは、データの保持には全
    体または2分割された領域を使用可能であり、前記分割
    された一方のビット数よりも多いビット数をもってアド
    レスの保持にも使用され、 分割された前記一方のビット数に相当するレジスタを有
    する別のデータ処理装置の命令コードと同一の命令コー
    ドをもって、当該別のデータ処理装置の命令実行機能を
    包含した上で、レジスタ全体を利用する命令を実行可能
    であることを特徴とする請求項77乃至82の何れか1
    項記載のデータ処理装置。
  84. 【請求項84】 命令コードはレジスタを指定する情報
    を持ち、前記レジスタを指定する情報が、複数の命令コ
    ード基本単位に分割されて、分割された一方のレジスタ
    を指定する情報を持つ命令コードが省略可能とされ、省
    略された場合に、省略されたレジスタ情報に代わって所
    定のレジスタ情報が暗黙的に想定されることを特徴とす
    る請求項77乃至83の何れか1項記載のデータ処理装
    置。
  85. 【請求項85】 請求項77乃至84の何れか1項記載
    のデータ処理装置と、送信又は受信回路と、送信又は受
    信データを格納する記憶手段とを有し、前記記憶手段
    が、前記データ処理装置のアドレス空間上に配置されて
    成るものであることを特徴とするデータ処理システム。
  86. 【請求項86】 複数個の汎用レジスタを有し命令を実
    行する実行手段と、命令を解読して前記実行手段を制御
    する制御手段とを含むデータ処理装置であって、 前記制御手段に対して指定可能な複数個の汎用レジスタ
    の組み合わせを固定的とし、当該組み合わせ固定的な複
    数個の汎用レジスタと汎用レジスタ又はアドレス空間上
    の所定のアドレスエリアとの間でデータ転送を実行させ
    る複数レジスタ転送命令を命令セットに含んで成るもの
    であることを特徴とするデータ処理装置。
  87. 【請求項87】 前記複数レジスタ転送命令は、命令拡
    張コードとデータ転送命令コードと有し、 前記データ転送命令コードは、ソースデータ又はディス
    ティネーションデータの少なくとも一方の所在をレジス
    タ指定領域で指定するものであり、 前記命令拡張コードは、前記レジスタ指定領域で指定さ
    れるレジスタを先頭に順次選択すべき複数個のレジスタ
    の個数を指定するレジスタ個数指定領域を有し、 前記制御手段は、前記データ転送命令コードのレジスタ
    指定領域で指定されたレジスタを起点にレジスタ個数指
    定領域で指定された範囲を、前記組み合わせ固定的な複
    数個の汎用レジスタとして指定するものであることを特
    徴とする請求項86記載のデータ処理装置。
  88. 【請求項88】 前記複数レジスタ転送命令は、省略可
    能なレジスタ拡張コードを更に有し、前記レジスタ拡張
    コードは、データ転送命令コードのレジスタ指定領域の
    情報と共にレジスタを指定する情報を有し、レジスタ拡
    張コードが省略された場合には、省略されたレジスタ情
    報に代わって所定のレジスタ情報が暗黙的に想定される
    ことを特徴とする請求項87記載のデータ処理装置。
  89. 【請求項89】 前記レジスタ指定領域はソースデータ
    及びディスティネーションデータの双方の所在を指定す
    るものであることを特徴とする請求項86乃至88の何
    れか1項記載のデータ処理装置。
  90. 【請求項90】 前記制御手段は、レジスタ指定領域の
    情報に従って指定可能な組み合せ固定的な複数個の汎用
    レジスタを順次指定するための情報の下位複数ビット
    を、転送元レジスタと転送先レジスタとで共通化して生
    成することを特徴とする請求項89記載のデータ処理装
    置。
  91. 【請求項91】 前記レジスタ指定領域は、ソースデー
    タ又はディスティネーションデータの何れか一方を指定
    し、他方のデータはデータ転送命令コードで指定される
    メモリ上のデータであることを特徴とする請求項86乃
    至88の何れか1項記載のデータ処理装置。
  92. 【請求項92】 前記制御手段は、前記複数レジスタ転
    送命令が保有する情報に従って前記実行手段の演算器に
    最初にアクセスされるメモリアドレスを計算させ、続い
    てアクセスされるメモリアドレスを前記実行手段のアド
    レスバッファに更新させるものであることを特徴とする
    請求項91記載のデータ処理装置。
JP2000056019A 1999-04-30 2000-02-28 データ処理装置 Pending JP2001202243A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000056019A JP2001202243A (ja) 1999-04-30 2000-02-28 データ処理装置
KR1020000022824A KR20010007031A (ko) 1999-04-30 2000-04-28 데이터 처리장치
US09/559,571 US6745320B1 (en) 1999-04-30 2000-04-28 Data processing apparatus

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
JP12345099 1999-04-30
JP15189099 1999-05-31
JP19160899 1999-07-06
JP11-191608 1999-11-11
JP32051899 1999-11-11
JP11-151890 1999-11-11
JP11-123450 1999-11-11
JP11-320518 1999-11-11
JP2000056019A JP2001202243A (ja) 1999-04-30 2000-02-28 データ処理装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005263193A Division JP3839835B2 (ja) 1999-04-30 2005-09-12 データ処理装置及びマイクロコンピュータ

Publications (1)

Publication Number Publication Date
JP2001202243A true JP2001202243A (ja) 2001-07-27

Family

ID=27526991

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000056019A Pending JP2001202243A (ja) 1999-04-30 2000-02-28 データ処理装置

Country Status (3)

Country Link
US (1) US6745320B1 (ja)
JP (1) JP2001202243A (ja)
KR (1) KR20010007031A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2083352A2 (en) 2007-12-28 2009-07-29 Fujitsu Limited Processing unit
JP2011209859A (ja) * 2010-03-29 2011-10-20 Renesas Electronics Corp 情報処理装置
JP2013093051A (ja) * 2013-02-04 2013-05-16 Renesas Electronics Corp データプロセッサ
KR20130062150A (ko) * 2011-12-02 2013-06-12 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
JP2014225285A (ja) * 2014-07-30 2014-12-04 ルネサスエレクトロニクス株式会社 データプロセッサ

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0002440D0 (sv) 2000-06-28 2000-06-28 Virtutech Ab Interpreter
JP4626032B2 (ja) * 2000-08-28 2011-02-02 株式会社デンソー プログラム変換装置,プログラム変換方法及び記録媒体
JP4044756B2 (ja) * 2001-12-11 2008-02-06 松下電器産業株式会社 プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム
JP2004152049A (ja) * 2002-10-31 2004-05-27 Renesas Technology Corp データ処理装置
US7680990B2 (en) * 2003-05-30 2010-03-16 Hewlett-Packard Development Company, L.P. Superword memory-access instructions for data processor
KR20060123632A (ko) * 2004-04-15 2006-12-01 마쯔시다덴기산교 가부시키가이샤 직사각형 영역에 대한 버스트 메모리 액세스 방법
US7774748B1 (en) * 2004-08-03 2010-08-10 Tensilica, Inc. System and method for automatic conversion of a partially-explicit instruction set to an explicit instruction set
US8804212B2 (en) * 2007-05-23 2014-08-12 Kyocera Document Solutions Inc. Stepping motor control device capable of reducing load on CPU
JP5357475B2 (ja) * 2008-09-09 2013-12-04 ルネサスエレクトロニクス株式会社 データプロセッサ
TWI441020B (zh) * 2011-02-15 2014-06-11 Nat Univ Chung Cheng Extend the segmentation method of the RISC processor scratchpad
CN105404496B (zh) * 2015-11-06 2018-11-16 深圳国微技术有限公司 数据传输的控制方法和控制装置及具有其的微处理器
JP6819166B2 (ja) * 2016-09-13 2021-01-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10761822B1 (en) * 2018-12-12 2020-09-01 Amazon Technologies, Inc. Synchronization of computation engines with non-blocking instructions
US11275701B2 (en) * 2020-06-24 2022-03-15 Qualcomm Incorporated Secure timer synchronization between function block and external SOC

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03141434A (ja) * 1989-06-19 1991-06-17 Nec Corp マイクロコンピュータ
JPH0651981A (ja) * 1992-08-03 1994-02-25 Hitachi Ltd データ処理装置
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3839705A (en) * 1972-12-14 1974-10-01 Gen Electric Data processor including microprogram control means
US5083263A (en) * 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
JPH07219769A (ja) * 1994-02-07 1995-08-18 Mitsubishi Electric Corp マイクロプロセッサ
JP3212213B2 (ja) * 1994-03-16 2001-09-25 株式会社日立製作所 データ処理装置
JPH08263290A (ja) 1995-03-20 1996-10-11 Hitachi Ltd データ処理装置
JP3526976B2 (ja) * 1995-08-03 2004-05-17 株式会社日立製作所 プロセッサおよびデータ処理装置
JP2889845B2 (ja) * 1995-09-22 1999-05-10 松下電器産業株式会社 情報処理装置
JPH09198272A (ja) 1996-01-16 1997-07-31 Hitachi Ltd エミュレーション用プロセッサおよびエミュレータ
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
KR19990026795A (ko) * 1997-09-26 1999-04-15 윤종용 마이크로프로세서
JP3292823B2 (ja) 1997-10-24 2002-06-17 ナカジマ鋼管株式会社 丸形鋼管の製造方法および丸形鋼管
JPH11151890A (ja) 1997-11-21 1999-06-08 Kuromikku:Kk 感熱発色・感熱消色式のホワイトボード及び発色・消色方法
JPH11191608A (ja) 1997-12-26 1999-07-13 Hitachi Ltd 半導体装置およびその製造方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03141434A (ja) * 1989-06-19 1991-06-17 Nec Corp マイクロコンピュータ
JPH0651981A (ja) * 1992-08-03 1994-02-25 Hitachi Ltd データ処理装置
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2083352A2 (en) 2007-12-28 2009-07-29 Fujitsu Limited Processing unit
US8281112B2 (en) 2007-12-28 2012-10-02 Fujitsu Limited Processor decoding extension instruction to store plural address extension information in extension register for plural subsequent instructions
JP2011209859A (ja) * 2010-03-29 2011-10-20 Renesas Electronics Corp 情報処理装置
KR20130062150A (ko) * 2011-12-02 2013-06-12 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
KR101949417B1 (ko) 2011-12-02 2019-02-20 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
JP2013093051A (ja) * 2013-02-04 2013-05-16 Renesas Electronics Corp データプロセッサ
JP2014225285A (ja) * 2014-07-30 2014-12-04 ルネサスエレクトロニクス株式会社 データプロセッサ

Also Published As

Publication number Publication date
KR20010007031A (ko) 2001-01-26
US6745320B1 (en) 2004-06-01

Similar Documents

Publication Publication Date Title
JP2001202243A (ja) データ処理装置
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
JPS6339931B2 (ja)
JP2006313561A (ja) データ処理装置
JP4004915B2 (ja) データ処理装置
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
WO1996008769A1 (en) Computer instruction prefetch system
JP4073721B2 (ja) データ処理装置
JP3432532B2 (ja) データ処理装置
JP3839835B2 (ja) データ処理装置及びマイクロコンピュータ
JP3786575B2 (ja) データ処理装置
JP3740321B2 (ja) データ処理装置
JP4545777B2 (ja) データ処理装置
US20020004877A1 (en) Method and system for updating user memory in emulator systems
JP2002132499A (ja) データ処理装置及び記録媒体
JP4498338B2 (ja) データ処理装置
JP3539951B2 (ja) データ処理装置
JP2636821B2 (ja) 並列処理装置
JP2001297002A (ja) データ処理装置
JP4382076B2 (ja) データ処理装置
JP2785820B2 (ja) 並列処理装置
JP2927281B2 (ja) 並列処理装置
JPH08263290A (ja) データ処理装置
JP3759742B2 (ja) データ処理装置
JPH09198272A (ja) エミュレーション用プロセッサおよびエミュレータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050712

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050912

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051004