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

データ処理装置

Info

Publication number
JPH08263290A
JPH08263290A JP7060797A JP6079795A JPH08263290A JP H08263290 A JPH08263290 A JP H08263290A JP 7060797 A JP7060797 A JP 7060797A JP 6079795 A JP6079795 A JP 6079795A JP H08263290 A JPH08263290 A JP H08263290A
Authority
JP
Japan
Prior art keywords
instruction
register
data processing
signal
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP7060797A
Other languages
English (en)
Inventor
Eiji Sakakibara
栄二 榊原
Naomiki Mitsuishi
直幹 三ツ石
Hisashi Kajiwara
久志 梶原
Susumu Ue
晋 宇枝
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
Hitachi Industry and Control Solutions Co Ltd
Original Assignee
Hitachi Engineering Co Ltd Ibaraki
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 Engineering Co Ltd Ibaraki, Hitachi Ltd filed Critical Hitachi Engineering Co Ltd Ibaraki
Priority to JP7060797A priority Critical patent/JPH08263290A/ja
Publication of JPH08263290A publication Critical patent/JPH08263290A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 互換性を維持しつつニーズに応じた乗算性能
が得られ、しかも処理性能の向上を図ることが可能な技
術を提供する。 【構成】 命令を実行する実行手段を制御する制御手段
と乗算手段を設け、制御手段と乗算手段とが並列動作す
る第1の命令とともに、前記乗算手段が動作する第2の
命令を有し、乗算手段を前記制御手段に内蔵するように
構成する。第1の命令は積和命令であるとともに、第2
の命令は乗算命令になっている。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理装置に関
し、特に、半導体集積回路装置によって構成される高速
かつ小型のシングルチップマイクロコンピュータに利用
して有効な技術に関するものである。
【0002】
【従来の技術】半導体集積回路装置の製造技術の高度化
に伴って、半導体単結晶からなるシングルチップに、中
央演算処理装置(Central Processin
g Unit;以下、単にCPUと称する)、プログラ
ムを格納するROM(ReadOnly Memor
y)、書き替え可能に各種データを格納するRAM(R
andom Access Memory)等を含む構
成素子を集積して製造した、小型のシングルチップマイ
クロコンピュータ(以下、単にマイクロコンピュータと
称する)が広範囲に普及してきており、種々の目的のデ
ータ処理装置として使用されてきている。このマイクロ
コンピュータは、CPUが同時に処理し得る情報の量に
よって性能が異なり、例えば4ビット、8ビット、16
ビット、32ビット等のマイクロコンピュータとして区
分されている。
【0003】このようなマイクロコンピュータは、アド
レス空間の拡張や、命令セットの拡大、高速化等が図ら
れてきている。また、CPUは、ソフトウエアによって
その性能が定義されているから、前記のようにアドレス
空間の拡張や、命令セットの拡大、高速化等を図ったマ
イクロコンピュータにおいても、既存のマイクロコンピ
ュータのソフトウエア資産を有効に利用できることが望
ましい。
【0004】このため、オブジェクトレベルで互換性を
保ちつつ、アドレス空間の拡張や、命令セットの拡大、
高速化等を実現した例として、例えば本出願人が先に提
案した特開平6−51981号公報、あるいは平成5年
6月(株)日立製作所発行、「H8/300Hシリーズ
プログラミングマニュアル」等がある。
【0005】前記CPUは、システムクロックの2周期
である、いわゆる2ステートで基本命令を実行してい
る。これに対して、1ステートで基本命令を実行するよ
うにし、さらに、CPUとは独立して乗算器を内蔵して
高速化を図った例として、例えば平成4年11月日経B
P社発行、「日経エレクトロニクスNO.568」、P
P99〜PP112、あるいは平成5年3月(株)日立
製作所発行、「SH7032、SH7034 ハードウ
エアマニュアル」等がある。このような乗算器は積和演
算と乗算に利用する。
【0006】このように高速化を図ることによって、マ
イクロコンピュータによって制御される各種機器の高速
化や高性能化、あるいは、従来においては複数の半導体
集積回路装置で構成していたものを、結合したりするこ
とにより小型化を図ることができるようになる。
【0007】また、前記のような各種機器の高速化や高
性能化、あるいは小型化は、アドレス空間が比較的小さ
く、命令セットが比較的小さいCPUあるいはマイクロ
コンピュータにおいても要求されるから、前記特開平6
−51981号公報等に記載されるアドレス空間の広い
CPUと、アドレス空間の小さいCPUが存在する場合
には、その双方の高速化を図ることが望ましい。
【0008】このような観点から、上位CPUを開発
し、これをベースにして下位CPUへ展開できれば都合
が良い。これによって、開発効率を向上することができ
る。さらに、半導体集積回路装置によって構成されるC
PU自体の他に、クロスアセンブラやCコンパイラ、シ
ミュレータ、リアルタイムOS等の開発ツール等の開発
も共通化して、開発効率を向上することが望ましい。
【0009】
【発明が解決しようとする課題】前記のようなマイクロ
コンピュータにおいて、乗算器は専用の資源を必要とす
るから、必ずしも積和演算や乗算の高速化を必要としな
い場合には、費用対効果の点で得策でない。また、例え
ば前記平成5年3月(株)日立製作所発行、「SH70
32、SH7034 ハードウエアマニュアル」におい
ては、乗算結果は専用のレジスタ(MAC)に得られる
から、これを利用する場合には、別の命令によってそれ
をCPUの汎用レジスタに転送しなければならない。乗
算器を内蔵して乗算自体を高速化しても、そのように乗
算結果を使用するまでの時間が長くなっては意味がな
い。
【0010】一方、従来のCPUとの互換性を維持する
ためには、前記のように命令の追加は困難であり、追加
する命令は最小限にしなければならない。また、演算結
果等のフラグも互換性を保持する必要がある。積和演算
についても、演算結果等のフラグを参照できれば使い勝
手が良くなる。フラグの状態を判定して分岐する、いわ
ゆる条件分岐命令などで演算結果を容易に判定し、処理
の内容を変更することができるからである。かかるフラ
グには、オーバフロー(V)、ゼロ(Z)、ネガティブ
(N)などがある。
【0011】本発明の目的は、互換性を維持しつつニー
ズに応じた乗算性能が得られ、しかも処理性能の向上を
図ることが可能な技術を提供することにある。
【0012】本発明の他の目的は、制御手段に乗算手段
を内蔵して互換性を維持しつつ処理の高速化を図ること
が可能な技術を提供することにある。
【0013】本発明のその他の目的は、乗算手段を制御
手段から独立して設け、しかも制御手段に乗算機能を備
えさせることにより、製造費用の低減が可能な技術を提
供することにある。
【0014】本発明の前記ならびにそのほかの目的と新
規な特長は、本発明書の記述および添付図面から明らか
になるであろう。
【0015】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0016】(1)本発明のデータ処理装置は、命令を
実行する実行手段を制御する制御手段と乗算手段を設
け、前記制御手段と乗算手段とが並列動作する第1の命
令とともに、前記乗算手段が動作する第2の命令を有
し、乗算手段は前記制御手段に内蔵されている。また、
第1の命令は積和命令であるとともに、第2の命令は乗
算命令になっている。積和命令のアドレッシングモード
は、いわゆるポストインクリメントレジスタ間接とす
る。乗算手段には結果を判定するフラグ検出手段を設
け、乗算命令時はフラグ検出結果を制御手段に供給し
て、保持させる手段を設ける。
【0017】(2)本発明のデータ処理装置は、命令を
実行する実行手段を制御する制御手段と乗算手段を設
け、前記制御手段と乗算手段とが並列動作する第1の命
令とともに、前記乗算手段が動作する第2の命令を有
し、乗算手段は前記制御手段から独立して設けられてい
る。また、制御手段は乗算機能を備えている。
【0018】(3)本発明のデータ処理装置は、命令を
実行する実行手段を制御する制御手段に指定可能な複数
のレジスタの組み合わせを固定にし、複数のレジスタの
退避/復帰命令を有している。
【0019】(4)本発明のデータ処理装置は、命令を
実行する実行手段を制御する制御手段に搭載されるコン
トロールレジスタの有効/無効を切り換える手段を有
し、コントロールレジスタの有効時には、例外処理の遷
移時、例外処理からの復帰時に、前記コントロールレジ
スタの待避/復帰を行い、前記コントロールレジスタの
無効時には、例外処理の遷移時、例外処理からの復帰時
に、前記コントロールレジスタの待避/復帰を行わな
い。
【0020】(5)本発明のデータ処理装置は、命令を
実行する実行手段を制御する制御手段の搭載される固定
的なスタックレジスタを設け、エミュレーションプログ
ラムへの遷移時、エミュレーションプログラムからの復
帰時に、前記固定的なスタックレジスタ用いて、ユーザ
が使用するスタックポインタを無視あるいは保持するか
を指定する手段を有している。
【0021】
【作用】上記した(1)の手段によれば、乗算器(乗算
手段)を内蔵することによって、アドレッシングモード
の増加を最小限にして、かつ処理性能を低下させずに積
和演算を実行可能にすることができる。また、ポストイ
ンクリメントレジスタ間接により、多数のデータの積和
演算を連続して処理することができる。さらに、乗算の
結果(積、フラグ)を直ちに利用できるから、実質的な
乗算の実行速度を向上することができる。
【0022】乗算器とCPU(制御手段)を一体に構成
して、乗算器・CPU間の配線を短縮して、物理的規模
を縮小する。また、高速化に寄与することができる。
【0023】上記した(2)の手段によれば、乗算器を
取外し可能に(独立して)設けることによって、乗算器
を取外した場合は、積和演算をサポートしないことによ
って、容易に下位CPUを実現し、論理的・物理的規模
を縮小し、製造費用を低減した別のマイクロコンピュー
タを容易に開発することができる。また、乗算器を取外
したCPUにおいても、汎用的な乗算命令をサポートす
ることによって、使い勝手の低下を防止できる。さら
に、乗算器使用するか使用しないかの制御信号(有効/
無効)を与えて制御することによって、テスト性を向上
したり、エミュレータを共通化したりすることができ
る。さらにまた、全体的な開発効率を向上することがで
きる。
【0024】乗算器を削除した場合、乗算は除算と同一
のシーケンスで実行できる。積和演算はサポートせず、
積和演算の特殊なシーケンスをサポートしないことによ
って論理規模の縮小を更に行うことができる。テスト命
令をサポートすることによって、論理規模の増加を最低
限にして、テストの容易性を向上することができる。
【0025】上記した(3)の手段によれば、複数レジ
スタの退避/復帰命令を持ち、この組み合せを固定的に
することによって、論理規模の縮小を図ることができ、
また、高速化を図ることができる。レジスタの本数の異
なる命令を複数命令サポートすることによって、使い勝
手の低下を防ぐことができる。
【0026】さらに、内部動作のパイプラインに対応し
て、入出力タイミングの異なるレジスタ選択回路を複数
持つことにより、レジスタ間演算命令などの基本命令を
実質的に1命令/1ステート実行を行うことができる。
【0027】上記した(4)の手段によれば、コントロ
ールレジスタの有効/無効を切り換えることで、スタッ
クの節約と、割込み応答時間の高速化に寄与することが
できる。また、互換性を維持することができる。
【0028】上記した(5)の手段によれば、エミュレ
ータ専用の固定スタックポインタを持つことにより、エ
ミュレータのサポートを容易にすることができる。ま
た、論理規模の増加を最低限にして、エミュレータの設
計を容易にすることができる。エミュレータ専用スタッ
クポインタの一部のアドレスを、CPU外部から与える
ようにして、スタックレジスタをリロケータブルにし、
マイクロコンピュータのアドレス配置などに容易に対応
することができる。
【0029】以下、本発明について、図面を参照して実
施例とともに詳細に説明する。
【0030】なお、実施例を説明するための全図におい
て、同一機能を有するものは同一符号を付け、その繰り
返しの説明は省略する。
【0031】
【実施例】図1に、本発明の適用されたデータ処理装置
の一例であるシングルチップマイクロコンピュータ(以
下、単にマイクロコンピュータと称する)のブロック図
を示す。マイクロコンピュータは、CPU1、乗算器
2、システムコントローラ(SYSC)3、割込コント
ローラ(INT)4、ROM5、RAM6、タイマA
7、タイマB8、シリアルコミュニケーションインタフ
ェース(SCI)9、A/D変換器10、第1乃至第9
入出力ポート(IOP1〜IOP9)11A〜11I、
クロック発振器(CPG)12の機能ブロック乃至はモ
ジュールから構成され、公知の半導体製造技術により1
つの半導体基板上に半導体集積回路装置として形成され
る。CPU1は、乗算器2を内蔵してなる。システムコ
ントローラ(SYSC)3は、システムコントロールレ
ジスタ(SYSCR)13および制御レジスタ(CPU
CR)14を内蔵している。
【0032】かかるマイクロコンピュータは、電源端子
として、グランドレベル(Vss)、電源電圧レベル
(Vcc)、その他専用制御端子として、リセット(R
ES)、スタンバイ(STBY)、モード制御(MD0
〜2)、クロック入力(EXTAL、XTAL)端子を
有する。クロック入力(EXTAL、XTAL)端子に
接続される、図示はされない水晶振動子に基づいて、ク
ロック発振器が生成するシステムクロック(φ1、φ
2)に同期して、マイクロコンピュータは動作する。或
は外部クロックをEXTAL端子に入力してもよい。シ
ステムクロックの1周期を1ステートと呼ぶ。
【0033】これらの機能ブロックは、内部バスによっ
て相互に接続される。内部バスは内部アドレスバス(P
AB)・内部データバス(PDB)の他、リード信号・
ライト信号を含み、さらにバスサイズ信号或いはシステ
ムクロック(φ1、φ2)などを含む。
【0034】入出力ポートは、外部バス信号、入出力回
路の入出力信号と兼用とされている。これらは、動作モ
ードあるいはソフトウエアの設定により、機能を選択さ
れて、使用される。IOP1〜3はアドレスバス出力、
IOP4、5はデータバス入出力、IOP6はバス制御
信号入出力信号と兼用されている。外部アドレスは、そ
れぞれ、これらの入出力ポートに含まれるバッファ回路
を介して内部アドレスバスと接続されている。
【0035】内部バスおよび外部バス共に16ビットバ
ス幅とし、バイトサイズ(8ビット)およびワードサイ
ズ(16ビット)のリード/ライトを可能にする。な
お、内部バスおよび外部バスのいずれも8ビット幅とす
ることもできる。バス制御信号入出力信号には、アドレ
スストローブ信号AS、リード信号RD、ライト信号H
WR・LWR、ウェイト信号WAIT、エリア0選択信
号CS0などがある。割込信号は、タイマ・SCI・I
OP8から要求され、割込コントローラ(INT)が調
停して、CPUに割込を要求する。このとき、CPUに
対し、割込要求信号とベクタ番号を与える。
【0036】RES端子にリセット信号が加えられる
と、モード端子(MD0〜2)で与えられる動作モード
を取り込み、マイクロコンピュータはリセット状態にな
る。モード端子で設定する動作モードは、シングルチッ
プ/拡張、アドレス空間、内蔵ROMの有効/無効、デ
ータバス幅の初期値を8ビットまたは16ビットから選
択する。
【0037】図2に、システムコントロールレジスタ
(SYSCR)3の構成を示す。各ビットの内容を表1
乃至表4に示す。
【0038】なお、ビット2、1:リザーブビット リードすると常に”0”が読み出される。ライトは無効
である。
【0039】
【表1】
【0040】
【表2】
【0041】
【表3】
【0042】
【表4】
【0043】以下に、表5にCPU1の命令セットを示
す。本実施例に用いられるCPU1の命令は合計で71
種類ある。表6に命令とアドレッシングモードとの組合
せを示す。表7に以下の各表に使用される記号(オペレ
ーションの記号)の意味を示す。表8乃至表15に各命
令の機能別一覧表を示す。
【0044】
【表5】
【0045】
【表6】
【0046】
【表7】
【0047】
【表8】
【0048】
【表9】
【0049】
【表10】
【0050】
【表11】
【0051】
【表12】
【0052】
【表13】
【0053】
【表14】
【0054】
【表15】
【0055】基本的な命令は平成5年6月(株)日立製
作所発行『H8/300Hシリーズプログラミングマニ
ュアル』などに記載のCPUと同様であり、いわゆる、
ロードストアアーキテクチャを採用している。命令とア
ドレッシングモードの組み合わせを削減し、CPUの命
令制御の論理規模・物理的規模を縮小できる。
【0056】本発明のCPUは、上記従来CPUに対し
て命令実行時間の高速化を実現している。
【0057】CPUの命令は、2バイト(ワード)を単
位にしている。各命令は下記のようなオペレーションフ
ィールド(op)、レジスタフィールド(r)、EA拡
張部(EA)、およびコンディションフィールド(c
c)から構成されている。
【0058】(1)オペレーションフィールド 命令の機能を表し、アドレッシングモードの指定、オペ
ランドの処理内容を指定する。命令の先頭4ビットを必
ず含んでいる。2つのオペレーションフィールドを持つ
場合もある。
【0059】(2)レジスタフィールド 汎用レジスタを指定する。アドレスレジスタのとき3ビ
ット、データレジスタのとき3ビットまたは4ビットで
ある。2つのレジスタフィールドを持つ場合、またはレ
ジスタフィールドを持たない場合もある。
【0060】(3)EA拡張部 イミディエイトデータ、絶対アドレスまたはディスプレ
ースメントを指定する。8ビット、16ビット、または
32ビットである。
【0061】(4)コンディションフィールド Bcc命令の分岐条件を示す。
【0062】図3に、命令の基本フォーマットの例を示
す。
【0063】図4に、マイクロコンピュータにおいて、
CPU1に対し乗算器2を取外し可能に設けた概略ブロ
ック図を示す。命令レジスタ(IR)21、命令デコー
ダ・制御回路(CONT)22、レジスタセレクタ(R
SEL)23、ライトデータバッファ(DBW)24、
リードデータバッファ(DBR)25、演算器(AL
U)26、演算器(INC)27、汎用レジスタ(ER
0〜ER7)28A〜28H、エミュレータスタックポ
インタ(EMLSP)29、プログラムカウンタ(P
C)30、コンディションコードレジスタ(CCR)3
1、拡張レジスタ(EXR)32、アドレスバッファ
(MAB)33からなる。乗算器2なしのCPU1はこ
れらによって構成される。各バッファやレジスタ、演算
器の各ブロックの機能は、特開平5−241826号公
報に記載のCPUと概略同様である。また、乗算器2を
含むCPU1は、更に、バススイッチ34、乗算器2が
ある。
【0064】命令デコーダ・制御回路(CONT)22
には、制御信号CPUS、制御信号INTM1、そのほ
かの制御信号(割り込み要求など)が入力されている。
CONT22は各部を制御するための、出力タイミング
の相違する制御信号A、B、Cを出力する。
【0065】なお、図中のC1およびC2は、当該信号
の同期タイミングを示す。例えば、RSEL入力1のC
1はφに同期して入力が行われることを示し、RSEL
入力2のC2はφ#(#は論理反転)に同期して入力が
行われることを示す。また、ALU入力のC1は、φの
期間に入力が行われることを示し、ALU出力のC2
は、φ#の期間に出力が行われることを示す。ALU2
6とINC27は、それぞれ動作タイミングの異なった
演算器であり、それぞれ、オーバラップしつつ演算可能
である。
【0066】そのほかのレジスタなどは、φ、φ#の両
方でデータを入出力可能である。GB、DB、WBの各
バスはφ、φ#の両方で異なったデータを転送可能であ
る。
【0067】φ、φ#は互いにノーオーバラップの関係
の2相クロックとしてもよい。
【0068】レジスタセレクタ(RSEL)23には、
IR21乃至CONT22から命令コードの一部(レジ
スタ指定フィールド)が与えられる。この供給タイミン
グは、レジスタ指定フィールドの位置によって相違され
る。RSEL23は出力タイミングの相違するレジスタ
選択信号A、Bを出力する。
【0069】例えば、平成5年6月(株)日立製作所発
行『H8/300Hシリーズプログラミングマニュア
ル』に記載のCPUにおいては、16ビット単位の命令
コードのビット7−4が、CONT22と同時に与えら
れ(RSEL入力1)、ビット11−8および3−0
(RSEL入力2)が、CONT22の内容と0.5ス
テート遅れて与えられる。RSEL入力2の反転制御信
号をRSELに与える。
【0070】CPU1内部のDBW24、DBR25、
ALU26、INC27、ER0〜ER7(28A〜2
8H)、PC30、CCR31、VAG、ABは、GB
バス、DBバス、WBバスによって相互に接続されてい
る。
【0071】2つの演算器ALU26、INC27に対
し、GB、DBバスからデータを入力し、WBバスにデ
ータを出力する。それぞれの入出力バスの数に対応した
数の内部バスとして、バス即ち配線の増加による物理的
規模の増加を抑止している。
【0072】また、ライトデータバッファ(DBW)2
4は内部データバスへの出力、リードデータバッファ
(DBR)25は内部データバスからの入力、アドレス
バッファ(MAB)33は内部アドレスバスへの出力、
命令レジスタは内部データバスからの入力が可能であ
り、それぞれ内部バスに接続されている。ライトデータ
バッファ(DBW)24およびリードデータバッファ
(DBR)25は32ビット構成とされる。ライトデー
タは32ビット一括してライトデータバッファ(DB
W)24に書き込むことができ、所定のタイミングで、
16ビットの内部データバスに出力される。また、内部
データバスから読み出したデータを、リードデータバッ
ファ(DBR)25に一旦格納して、32ビットのリー
ドデータを一括して出力することができる。MABは+
2のインクリメント機能を有する。
【0073】命令デコーダ・制御回路(CONT)22
が、IR21からの入力、CPUS信号、INTM1信
号やそのほかの入力信号に基づいて、動作制御を行な
う。制御回路の出力は所定のバッファを介して出力され
る。CONT22自身にも、ステート番号などがフィー
ドバックされる。
【0074】アドレスバッファ(MAB)33はインク
リメント機能(+2)を有する。ER0〜ER7(28
A〜28Hは)データレジスタまたはアドレスレジスタ
として使用することができる。
【0075】EMLSP29は、ユーザには公開されて
いないリソースで、エミュレータに搭載されて動作する
とき、ユーザプログラムとエミュレーションプログラム
の間の遷移時のスタックポインタとして使用する。その
内容を指定するために、一部の内容が、CPU外部から
与えられる。
【0076】PC30は32ビットのカウンタであり、
CPU1が次に実行する命令のアドレスを示している。
コンデションコードレジスタ(CCR)31は割り込み
マスクビット(I)、キャリフラグ(C)、ゼロフラグ
(Z)、ネガティブフラグ(N)、オーバフローフラグ
(V)を含んでいる。
【0077】CPU1と乗算器2は、バススイッチ34
を介して接続されている。また、バススイッチ34は内
部データバスとのインタフェースも行う。また、CPU
1から乗算器2への制御信号を与える。乗算器2のステ
ータス信号BUSYと、フラグ検出信号をCPU1に与
える。TESTMODE信号を、例えば、SYSC3か
ら与える。制御信号CPUSは、SYSCR14あるい
はそのほかのレジスタの制御ビットの出力にしてもよい
し、マイクロコンピュータの制御端子のようなもので指
定してもよい。
【0078】図5に、制御信号CPUSを制御レジスタ
(CPUCR)14の制御ビットで構成した具体的な例
を示す。図は1ビットの構成を示している。CPUCR
14は、フリップフロップで構成される。フリップフロ
ップにはリセット信号が与えられる。フリップフロップ
のクロックは内部ライト信号と、アドレスをデコードし
て得られるCPUCR選択信号の論理積信号とされる。
データ入力はデータバスのビット8とされる。出力がC
PUS信号とされる。また、クロックトバッファCBF
6を介して、データバスに出力される。クロックトバッ
ファCBF6のクロックは内部ライト信号とCPUCR
選択信号の論理積信号とされる。
【0079】本レジスタのライトは、テストモードや、
エミュレータに搭載した場合のブレークモードなどでの
みライト可能にするとよい。ブレークモードなどについ
ては、特開平6−150026などに記載されている。
同様に、TESTMODE信号を生成することができ
る。同一のレジスタに配置することができる。
【0080】図6に、制御信号CPUSの設定方法の一
例として、エミュレーション用プロセッサおよびエミュ
レータをブロック図で示す。エミュレーション用プロセ
ッサ38は、マイクロコンピュータ部分にエミュレーシ
ョン用インタフェース39を加えて構成される。エミュ
レーション用インタフェース39には、エミュレーショ
ン用プロセッサ専用の制御レジスタ41を有する。メモ
リ42は、ROM、RAMを含み、I/OはI/Oポー
ト、タイマ、SCIなどを含む。
【0081】コネクタ部がマイクロコンピュータの代わ
りに応用システム(ユーザシステム)43に装着され
る。エミュレーション用プロセッサ38は上記コネクタ
部とインタフェースケーブル44を介し、ターゲットシ
ステムインタフェースを用いて上記応用システム43と
信号の入出力を行う。
【0082】応用システム(ユーザシステム)43に
は、特に制限はされないものの、ユーザバス45が存在
し、ユーザメモリ46が接続される。エミュレーション
用プロセッサ38が出力し、インタフェースケーブル4
4を介して供給されるユーザストローブ信号に従って、
ユーザメモリ46はリード/ライトされる。
【0083】一方、エミュレーション用プロセッサ38
は上記エミュレーションインタフェース39を用いてエ
ミュレーションバス47に接続される。エミュレーショ
ンバス47には図示はされない状態信号・制御信号など
を含む。上記エミュレーションバス47を用いて、エミ
ュレーション用プロセッサ38から、応用システム43
とエミュレーション用プロセッサ38の内部状態に応じ
た情報などが出力され、また、エミュレーション用プロ
セッサ38に対し、エミュレーションのための各種制御
信号が入力される。エミュレーション用プロセッサ38
の、図示はされないエミュレートモード端子が電源レベ
ルに固定され、エミュレーション用プロセッサ38内部
ではエミュレートモードが設定される。
【0084】さらに、上記エミュレーションバス47に
は、特に制限はされないものの、応用システム43また
はターゲットマイクロコンピュータ内蔵のメモリを代行
するためのRAMでなるようなエミュレーションメモリ
48がある。また、エミュレーション用プロセッサ38
の制御状態やエミュレーションバス47の状態を監視し
て、その状態が予め設定された状態に達した時に、上記
エミュレータ専用割込みを入力して、CPUによるユー
ザプログラムの実行を停止させ、エミュレーション用プ
ログラム実行状態に遷移させる(ブレーク)ためのブレ
ーク制御回路49と、上記CPUのリード動作またはラ
イト動作を示す信号、命令リード動作を示す信号などに
基づき、エミュレーションバス47に与えられるアドレ
スデータさらには制御情報を逐次蓄えるリアルタイムト
レース回路50などが接続される。
【0085】上記エミュレーションバス47が、エミュ
レーションメモリ48、ブレーク制御回路49、リアル
タイムトレース回路50などに、それぞれ接続される。
これらでもってマイクロコンピュータ開発装置55が構
成されている。
【0086】上記エミュレーションメモリ48、ブレー
ク制御回路49、リアルタイムトレース回路50はコン
トロールバス51に接続され、コントロールバス51を
介してコントロールプロセッサ52の制御を受けるよう
になっている。上記コントロールバス51は、エミュレ
ーション用プロセッサ制御回路に接続されるとともに、
インタフェース回路を介して、特に制限はされないもの
のパーソナルコンピュータなどのシステム開発装置54
に接続される。例えば、システム開発装置54から入力
されたプログラムをエミュレーションメモリ48に転送
し、内蔵ROM上に配置されるべきかかるプログラムを
CPU1がリードすると、エミュレーションメモリ48
上のプログラムがリードされる。また、ブレーク条件
や、リアルタイムトレース条件などもシステム開発装置
54から与えることができる。
【0087】コントロールプロセッサ52は、CPUS
信号をエミュレーション用プロセッサ38に供給して、
乗算器の使用/不使用の選択を行うことができる。コン
トロールプロセッサ52は、システム開発装置54から
入力された情報などに基づいて、CPUS信号を制御す
る。あるいは、図5のような制御レジスタを、エミュレ
ーション用インタフェース39内に制御レジスタに設け
て、エミュレータ40のソフトウェアをCPUが実行し
て、前記制御レジスタを指定することによって、CPU
S信号を生成するようにすることができる。この場合
は、エミュレーション用ソフトウェアの実行モード、い
わゆるブレークモードでのみライト可能にすると都合が
よい。開発途上にあるユーザのソフトウェアの誤動作に
よって、誤った設定を行うことがない。
【0088】エミュレーション用プロセッサ38および
エミュレータ40を複数のCPUをサポート可能にする
ことによって、実際のマイクロコンピュータのみを開発
すればよく、開発効率を向上することができる。なお、
EMLSP29のアドレス指定情報も、エミュレーショ
ン用インタフェース39内の制御レジスタで指定するこ
とができる。
【0089】エミュレーション用プロセッサ38やエミ
ュレータ40については、特開平3−271834号公
報、あるいは特開平6−150026号公報などに記載
されている。
【0090】図7に、制御信号CPUS設定方法の一例
である、マイクロコンピュータの主要部をブロック図で
示す。CPUS信号をレジスタによらず、CMOSイン
バータ回路58の出力とする。かかるCMOSインバー
タ回路58は、Pチャネル型MOSトランジスタQ1、
Nチャネル型MOSトランジスタQ2で構成される。こ
のCMOSインバータ回路58の入力は、抵抗Rを介し
て電源Vddに接続されると共に、保護回路Q3、Q4
を介して端子Pに結合される。端子Pは、ワイヤWによ
ってグランドレベル電源用リードLに接続されるか、解
放状態とされるかが選択され、CPUSの設定を行な
う。
【0091】端子Pが解放状態とされれば、CMOSイ
ンバータ回路58の入力はハイレベルとなって、CPU
S信号は非活性状態になる。一方、端子Pが、ワイヤW
によって、グランドレベル電源用リードLに接続されれ
ば、CMOSインバータ回路58の入力はロウレベルと
なって、CPUS信号は活性状態になる。乗算器を使用
可能にする。
【0092】端子Pは対応するリードを持たず、例えば
プラスティックパッケージに封止された場合には、対応
する端子を持たない。
【0093】これにより、半導体集積回路装置のパッケ
ージの端子を直接利用することなく、乗算器の制御を設
定できるため、一定のパッケージを用いた場合に、有効
な端子数の減少防ぐことができる。この場合、端子Pを
グランドレベル電源端子に隣接して配置すると都合がよ
い。
【0094】あるいは、端子Pをグランドレベル電源用
リードLにワイヤWによって接続するか、しないかの選
択を、半導体集積回路装置の配線変更として実現しても
よい。CMOSインバータ回路58の入力を、半導体集
積回路装置内部の電源電圧またはグランドのいずれに接
続するかを選択すればよい。このとき、抵抗R及び端子
Pは削除することができる。または、CPUSビットを
PROM素子などで構成してもよい。この場合、製造者
が設定を行なってもよいし、ユーザが設定を行なっても
よい。
【0095】図8および図9に、CPUの内部レジスタ
構成を示す。これらのレジスタは、図8の汎用レジスタ
および図9のコントロールレジスタの2つに分割され
る。以下、各レジスタについて説明する。
【0096】(1)汎用レジスタ CPUはこの汎用レジスタを8本有している。この汎用
レジスタは32ビット長からなり、すべて同じ機能を有
しており、アドレスレジスタとしてもデータレジスタと
しても使用することができる。データレジスタとしては
32ビット、16ビットおよび8ビットレジスタとして
使用できる。
【0097】アドレスレジスタ及び32ビットレジスタ
としては、一括して汎用レジスタER(ER0〜ER
7)として使用する。16ビットレジスタとしては、汎
用レジスタERを分割して汎用レジスタE(E0〜E
7)、汎用レジスタR(R0〜R7)として使用する。
これらは同等の機能を有しており、16ビットレジスタ
を最大16本まで使用することができる。
【0098】8ビットレジスタとしては、汎用レジスタ
Rを分割して汎用レジスタRH(R0H〜R7H)、汎
用レジスタRL(R0L〜R7L)として使用する。こ
れらは同等の機能を有しており、8ビットレジスタを最
大16本まで使用することができる。
【0099】図10に、汎用レジスタの使用方法を示
す。各レジスタは独立して使用方法を選択することがで
きる。
【0100】汎用レジスタER7には、汎用レジスタと
しての機能に加えて、スタックポインタ(SP)として
の機能が割り当てられており、例外処理やサブルーチン
分岐などで暗黙的に使用される。図11にスタックの状
態を示す。
【0101】(2)コントロールレジスタ コントロールレジスタは、24ビットのプログラムカウ
ンタ(PC)と8ビットの拡張レジスタ(エクステンド
レジスタ)(EXR)および8ビットのコンディション
コードレジスタ(CCR)を含んでいる。
【0102】プログラムカウンタ(PC) 24ビットのカウンタで、CPUが次に実行する命令の
アドレスを示している。CPUの命令は、すべて2バイ
ト(ワード)を単位としているため、最下位ビットは無
効である。(命令コードのリード時には最下位ビット
は”0”とみなされる)。
【0103】分岐命令の実行アドレスの上位8ビットは
無視される。プログラム領域として使用できるのは、
H’00000000〜H’00FFFFFFの領域で
ある。
【0104】拡張レジスタ(EXR) 8ビットのレジスタで、トレースビット(T)、割込み
マスクビット(I2〜I0)を含む8ビットで構成され
ている。
【0105】ビット7:トレースビット(T) トレースビットか否かを指定する。本ビットが”0”に
クリアされているときは命令を順次実行する。”1”に
セットされているときは1命令実行する毎にトレース例
外処理を実行する。
【0106】ビット6〜4:リザーブビット リザーブビットである。
【0107】ビット2〜0:割込みマスクビット(I2
〜I0) 割込み要求マスクレベル(0〜7)を指定する。
【0108】EXRは、LDC、STC、ANDC、O
RC、XORC命令で実行することができる。このう
ち、STCを除く命令を実行した場合、実行終了後3ス
テートの間は、NMIを含めてすべての割込みは受け付
けられない。
【0109】コンディションコードレジスタ(CC
R) 8ビットのレジスタで、CPUの内部状態を示す。割込
みマスクビット(I)とハーフキャリ(H)、ネガティ
ブ(N)、ゼロ(Z)、オーバフロー(V)、キャリ
(C)を含む8ビットで構成されている。
【0110】ビット7:割込みマスクビット(I) 本ビットが”1”にセットされると、割込みがマスクさ
れる。ただし、NMIはIビットに関係なく受け付けら
れる。例外処理の実行が開始されたときに”1”にセッ
トされる。
【0111】ビット6:ユーザビット/割込みマスクビ
ット(UI) ソフトウエア(LDC、STC、ANDC、ORC、Z
ORC命令)でリード/ライトできる。割込みマスクビ
ットとしても使用可能である。
【0112】ビット5:ハーフキャリフラグ(H) ADD.B、ADDX.B、SUB.B、SUBX.
B、CMP.B、NEG.B命令の実行により、ビット
3にキャリまたはボローが生じたとき”1”にセットさ
れ、生じなかったとき”0”にクリアされる。また、A
DD.W、SUB.W、CMP.W、NEG.W命令の
実行により、ビット11にキャリまたはボローが生じた
とき、ADD.L、SUB.L、CMP.L、NEG.
L命令の実行により、ビット27にキャリまたはボロー
が生じたとき、”1”にセットされ、生じなかったと
き”0”にクリアされる。
【0113】ビット4:ユーザビット(U) ソフトウエア(LDC、STC、ANDC、ORC、X
ORC命令)でリート/ライトできる。
【0114】ビット3:ネガティブフラグ(N) データの最上位ビットを符号ビットとみなし、最上位ビ
ットの値を格納する。
【0115】ビット2:ゼロフラグ(Z) データがゼロのとき”1”にセットされ、ゼロ以外のと
き”0”にクリアされる。
【0116】ビット1:オーバフローフラグ(V) 算術演算命令により、オーバフローが生じたとき”1”
にセットされる。それ以外のとき”0”にクリアされ
る。
【0117】ビット0:キャリフラグ(C) 演算の実行により、キャリが生じたとき”1”にセット
され、生じなかったとき”0”にクリアされる。キャリ
には次の種類がある。
【0118】(a)加算結果のキャリ (b)減算結果のボロー (c)シフト/ローテートのキャリ また、キャリフラグには、ビットアキュムレータの機能
があり、ビット操作命令で使用される。なお、命令によ
ってはフラグが変化しない場合がある。CCRは、LD
C、STC、ANDC、ORC、XORC命令で操作す
ることができる。また、N、Z、V、Cの各フラグは、
条件分岐命令(Bcc)で使用される。
【0119】積和レジスタ(MAC) 64ビットのレジスタであり、積和演算結果を格納す
る。32ビットのMACH、MACLから構成される。
MACHは下位10ビットが有効であり、上位は符号拡
張されている。
【0120】図12に、CPUの基本動作タイミングを
示す。
【0121】ADD.W R0、R1のようなレジスタ
間演算のタイミングである。特に制限はされないもの
の、内部データバスは16ビットであって、内蔵RO
M、RAMのリード/ライトを1ステートでリード/ラ
イト可能とする。
【0122】T0のC2(φ#同期。#は反転論理を示
す)で、CPU1のアドレスバッファ(MAB)33か
らアドレスがIABに出力される。
【0123】T1のC1(φ同期)で、IABの内容が
PABに出力され、リードサイクルが開始される。C2
でリードデータが内部データバスに得られ、これをIR
21にラッチする。以上の動作は以前の命令の実行の制
御によって行われる。
【0124】直前の命令の実行が終了すると、最も早く
命令の実行が開始される場合には、T2のC1で命令コ
ードがCONT22に入力されて、命令の内容が解読さ
れる。解読結果に従って、制御信号を出力して、各部の
制御を行う。命令の一部(レジスタ指定フィールド:R
SEL入力信号1)がレジスタセレクタ23に与えられ
る。
【0125】レジスタ間演算命令では、T2のC2で、
PCの内容を内部バスGBに読み出して、MAB33と
INC27に入力する。MAB33からアドレスIAB
が出力される。レジスタセレクタ23に制御信号を与え
る。RSEL入力信号1と制御信号A(Rs−DB出
力、Rd−GB出力)とに基づいて、レジスタ選択信号
Bが生成される。RSEL入力信号2がレジスタセレク
タ23に与えられる。
【0126】T3から、次の次の命令がリードされる。
T3のC1で、INC27でインクリメント(+2)さ
れた結果が、内部バスWBを経由して、PC30にライ
トされる。RSEL入力信号2と制御信号B(WB−R
d入力)とに基づいて、レジスタ選択信号Cが生成され
る。レジスタ選択信号Bがレジスタを選択して、ソース
側、デスティネーション側のレジスタ(S、D)のデー
タをALU26に入力する。ALU26の演算内容はC
ONT22が制御信号Cによって指示する。加減算・論
理演算・シフトなどは1クロックで演算を行うことがで
きる。例えば、上記命令では16ビットの加算を行う。
次の命令のCONT22へのロードを指示する。RSE
L入力信号2と制御信号B(WB−Rd入力)とに基づ
いて、レジスタ選択信号Cが生成される。
【0127】T3のC2で、ALU26の演算結果
(R)が、内部バスWBを経由して、レジスタ選択信号
Cが選択したデスティネーション側のレジスタにライト
される。制御信号Cによって、CCR31の更新を行
う。更に次の次の命令をIR21に取り込む。同時に、
次の命令の実行が開始され、例えば、PC30の内容を
読み出して、MAB33とINC27に入力される。レ
ジスタ間演算を実質的に1ステートで実行できる。2つ
の演算器26、27の入出力バスの数に対応した数の内
部バスとして(演算器に対応して、内部バスを増加させ
ることなく)、バス即ち配線の増加による物理的規模の
増加を抑止している。
【0128】図13に、CPUの基本動作タイミングを
示す。
【0129】MOV.W R0、@R1のような、レジ
スタ間接によるデータライトのタイミングである。
【0130】T0のC2で、CPU1のMAB33から
アドレスがIABに出力される。
【0131】T1のC1で、アドレスがPABに出力さ
れ、リードサイクルが開始される。C2でリードデータ
が内部データバスに得られ、これをIR21にラッチす
る。
【0132】直前の命令の実行が終了すると、T2のC
1で命令コードがCONT22に入力されて、命令の内
容が解読され、各部の制御を行う。命令の一部のレジス
タ指定フィールド(RSEL入力信号1)がレジスタセ
レクタ23に与えられる。レジスタ間接によるデータラ
イトでは、制御信号AとRSEL入力信号1とに基づい
て、レジスタ選択信号Aが与えられ、アドレスとして指
定されたレジスタが選択される。
【0133】T2のC2で、選択されたレジスタの内容
(A)を内部バスGBに読み出して、MAB33を経由
してアドレスIABに出力される。RSEL入力信号2
がレジスタセレクタ23に与えられる。RSEL入力信
号2と制御信号B(Rd−DB出力)とに基づいて、レ
ジスタ選択信号Bが生成される。
【0134】T3のC1で、制御信号Cの一部がCON
T22に入力され、状態遷移が行われる(ステートマシ
ンが構成される)。IABの内容に基づいて、ライトサ
イクルが開始される。選択されたレジスタの内容(D)
を内部バスDBに読み出して、データバッファ(DB
W)を経由して内部データバスに出力される。
【0135】T3のC2で、PC30の内容を内部バス
GBに読み出して、MAB33とINC27に入力す
る。MAB33からアドレスIABが出力される。RS
EL入力信号1と制御信号A(Rd−GB出力)とに基
づいて、レジスタ選択信号Bが生成される。
【0136】T4から、次の次の命令がリードされる。
【0137】T4のC1で、INC27でインクリメン
ト(+2)された結果が、内部バスWBを経由して、P
C30にライトされる。レジスタ選択信号Bがレジスタ
を選択して、データレジスタ(D)のデータをALU2
6に入力する。ALU26の演算内容はCONT22が
制御信号Cによって指示する。転送の場合はデータのチ
ェックのみを行う。次の命令のCONT22へのロード
を指示する。
【0138】T4のC2で、制御信号Cによって、チェ
ックした結果によって、CCR31の更新を行う。更に
次の次の命令をIR21に取り込む。同時に、次の命令
の実行が開始され、例えば、PC30の内容を読み出し
て、MAB33とINC27に入力される。
【0139】RSELに入力するタイミングを、RSE
L入力1(アドレスレジスタ、ソースレジスタ)とRS
EL入力2(データレジスタ、ディスティネーションレ
ジスタ)のように、レジスタ指定フィールド毎にことな
ったタイミング(φ同期とφ#同期)とすることによ
り、命令実行の高速化を実現することができる。
【0140】表16乃至表19に、本発明に関係のある
命令の説明を示す。
【0141】表16は命令コードを示し、表18は命令
の実行状態を示し、表19はコンディションコードの変
化を示している。表17はレジスタフィールドと汎用レ
ジスタの対応を示している。
【0142】
【表16】
【0143】
【表17】
【0144】
【表18】
【0145】
【表19】
【0146】積和演算を行うMAC命令、MACレジス
タをクリアするCLRMAC命令、汎用レジスタの内容
をMACレジスタに転送するLDMAC命令、MACレ
ジスタの内容を汎用レジスタに転送するSTMAC命令
がある。
【0147】また、汎用レジスタの待避/復帰命令に
は、1本のレジスタの待避/復帰命令に、PUSH、P
OP命令が、複数レジスタの待避/復帰命令にSTM/
LDM命令がある。STM/LDM命令には、指定する
レジスタ本数に対応して3種類がある。
【0148】図14に、乗算器2の概略ブロック図を示
す。
【0149】乗算器2は、入力ラッチ(X)61、入力
ラッチ(Y)62、部分積生成回路63、マツチプレク
サ64、デコーダ65A、65B、65C、選択回路6
6A、66B、66C、加算器67、フィードバック回
路68、乗算結果レジスタ69などによって構成されて
いる。
【0150】乗算器2は16×16ビットの乗算を行う
ことを基本動作とし、さらに、これを利用して、16×
16ビット+42ビットの積和演算を可能としている。
【0151】乗算器は乗算動作は、2次のブースのデコ
ードを用いて、16ビット×6ビットを3回行うように
される。
【0152】16ビットの乗数Yは、Y=−y[16]
・2^15+Σ(y[i]・2^(i−1))=Σ(y
[2j]+y[2j+1]−2・y[2j+2])・2
^2jと表現される。i=1〜15、j=0〜7、y
[0]=0である。
【0153】被乗数Xとの乗算は、X・Y=Σ(y[2
j]+y[2j+1]−2・y[2j+2])・X・2
^2jとなる。y[2j]+y[2j+1]−2・y
[2j+2]は、y[2j]、y[2j+1]、y[2
j+2]の値の組み合わせにより、0、±1、±2の5
種類があるから、部分積(y[2j]+y[2j+1]
−2・y[2j+2])・Xは、0、±X、±2Xの5
種類である。この内、0、Xは直ちに得られる。2X
は、1ビットの左シフト(最下位ビットは0)、−Xは
2の補数であり、論理反転+1で得られる。−2Xは、
論理反転+1の1ビットの左シフト(最下位ビットは
0)で得る。
【0154】X側は、採りうる0、±X、±2Xの5種
類の部分積(17ビット)を生成しておく。この5種類
を部分積選択回路66A〜66Cに与える。
【0155】一方、Y入力のy[2j]、y[2j+
1]、y[2j+2]をデコードして、0、±1、±2
を判定して、この結果によって、部分積選択回路66A
〜66Cを制御して、前記5種類の部分積を選択する。
1回に2ビット単位3種類の選択を行う。これを加算器
67で加算する。加算は、2ビットずつシフトしたそれ
ぞれ17ビットの部分積を加算して、22ビット分の結
果を得る。不足する上位ビットは符号拡張したデータと
する。
【0156】この内、下位6ビットは、乗算結果レジス
タ69のビット0〜5に格納される。上位16ビットは
フィードバック回路68を介して、2回めの加算に含め
られる。2回目の処理では、前記同様に得られた部分積
選択回路66A〜66Cの出力である、2ビットずつシ
フトしたそれぞれ17ビットの部分積と、1回めの処理
の上位16ビットを加算する。22ビット分の結果を得
る。不足する上位ビットは符号拡張したデータとする。
この内、下位6ビットは、乗算結果レジスタ69のビッ
ト11〜6に格納される。上位16ビットはフィードバ
ック回路68を介して、2回めの加算に含められる。
【0157】同様に3回めの処理が行われる。加算結果
下位20ビットが乗算結果レジスタ69のビット31〜
12に格納される。加算結果の最上位2ビットは無視す
る。
【0158】積和演算の場合は、前回の結果が同時に加
算されるようにする。
【0159】更に、前回の結果の上位ビットとの4回目
の加算を行って、42ビットの結果を得る。16ビット
×16ビットの積和の結果を42ビットで得ることによ
り、約1000回の積和演算を繰り返してもオーバフロ
ーしないことになる。
【0160】内部論理の構成上は、40ビットの結果と
すれば、加算器が22ビット長でよく、論理的規模を最
適化できる。
【0161】図15に、上記のワードサイズ乗算(16
ビット×16ビット)の演算方法を示す。
【0162】8ビット×8ビットのバイトサイズ乗算
は、上位を拡張する。符号無しの場合0拡張、符号付き
の場合符号拡張を行う。いずれの場合も、上位は全ビッ
ト”0”か全ビット”1”かのいずれかであって、ブー
スのデコードは0になる。このため、3回目の処理は行
わずに、2回の処理で済む。
【0163】図4において、CPU1から乗算器2に、
乗算を示す信号として、MUL信号(制御信号B)、符
号付き/無しを示す信号としてUNSINP信号(制御
信号B)、バイト/ワードサイズを示す信号として、B
YTE信号(制御信号B)、積和演算の起動信号とし
て、MAC信号(制御信号B)、MACHからCPUへ
のデータ転送要求信号として、STMACH信号(制御
信号C)、MACLからCPUへのデータ転送要求信号
として、STMACL信号(制御信号C)、CPUから
MACHへのデータ転送要求信号として、LDMACH
信号(制御信号B)、CPUからMACLへのデータ転
送要求信号として、LDMACL信号(制御信号B)、
MACレジスタのクリア信号として、CLRMAC信号
(制御信号B)、乗数の転送信号として、STX信号
(制御信号B)、被乗数の転送信号として、STY信号
(制御信号B)、乗算結果の転送信号として、MULR
D信号(制御信号C)を与える。
【0164】また、乗算器2からCPU1へ、演算実行
中を示す信号として、BUSY信号、フラグに反映すべ
きデータとして、VFLAG、ZFLAG、NFLAG
信号が与えられる。
【0165】CPU−乗算器の相互のデータ転送にXバ
ス、Yバスを使用する。
【0166】また、SYSCR13から飽和演算の選択
を示す信号として、FIXED信号が与えられる。ま
た、テストモード信号として、TESTMODE信号が
与えられる。TESTMODE信号が活性状態になっ
て、テストモードが指示されると、乗算器は1回の処理
のみで動作を終了するようにする。
【0167】処理を短縮することによって、CPUの命
令実行ステートも短縮できる。入力データの組み合わせ
を種々変更してテストする場合に、テスト時間を短縮で
きる。加算を1回しか行わないので、テスト設計を容易
にすることができる。3回の処理を行って、加算結果が
蓄積されて、所望の動作のテストの結果を演算結果とし
て得にくくなることがない。
【0168】TESTMODE信号が非活性状態であっ
ても、CPU乃至乗算器のテストを行うことができるこ
とは言うまでもない。TESTMODE信号は、前記の
CPUSのようにレジスタの出力として供給することが
できる。
【0169】表20に乗算器2の内部のフラグの検出方
式およびCPU1への転送方式を示す。
【0170】
【表20】
【0171】乗算器2のフラグ仕様は次のように、V
フラグおよびNフラグ、Zフラグから構成されてい
る。
【0172】Vフラグ セット条件はMAC命令実行中にオーバフローまたはア
ンダフローが発生したときである。
【0173】クリア条件はLDMACまたはCLRMA
C命令を実行したときである。
【0174】乗算器からCCRへの転送は、STMAC
実行時に行われる。
【0175】従って、一連の連続した積和演算中に1回
でもオーバフローまたはアンダフローが発生すると、乗
算器のVフラグはセットされた状態を保持する。LDM
ACまたはCLRMAC命令を実行して、新しい一連の
積和演算の開始が判断されると、乗算器のVフラグはク
リアされる。
【0176】Nフラグ、Zフラグ MUL命令用N、ZフラグとMAC命令用N、Zフラグ
を別々に設けて出力する。
【0177】乗算器からCCRへの転送は、乗算(MU
L)命令の場合、乗算結果の転送時、MAC命令の場合
STMAC実行時に行われる。
【0178】なお、NフラグとZフラグは、LDMAC
/CLRMACによって変化しない。
【0179】図16にVフラグ仕様の実現の概念図を示
し、図17にNフラグ、Zフラグ仕様の実現の概念図を
示す。
【0180】Vフラグはセットリセット型のフリップフ
ロップ(RS−F/F)で構成され、一旦、オーバフロ
ーまたはアンダフローが発生すると、STMACにより
読み出すまで状態を保持する。
【0181】N、Vフラグはラッチ回路(D−F/F)
とマルチプレクサ(MPX)で構成される。MAC命令
実行時の演算結果はラッチ回路に保持され、マルチプレ
クサに与えられる。また、乗算命令実行時の演算結果
は、直接マルチプレクサに与えられる。マルチプレクサ
はSTMAC命令のときラッチ回路の出力を出力し、そ
れ以外のとき演算結果を直接出力する。
【0182】MAC命令とその他の命令は並列して動作
する。MAC命令のフラグを随時CCRに反映しては、
並列実行中の命令のフラグ動作と矛盾してしまう。MA
C命令のフラグを乗算器内部で保持して、STMAC命
令実行時にCCRに転送するようにして、上記矛盾を回
避することができる。
【0183】図18に、バススイッチ34のブロック図
を示す。
【0184】バススイッチ34は、選択回路71A、7
1B、拡張回路72A、72B、72C、出力バッファ
73A、73B、73C、73Dから構成される。バス
スイッチは、CPU内部バスのGB、DB、WBと、乗
算器のXバス、Yバスと、マイクロコンピュータの内部
バスであるIDBのインタフェースを行う。
【0185】乗算の開始時、及びLDMAC命令の場合
は、GB、DBからXバス、Yバスに入力される。G
B、DBの入力は、選択回路71A、71Bで選択され
る。これは汎用レジスタ及び内部バスが32ビット構成
であるために、乗数、被乗数が8ビットまたは16ビッ
トであるために、CONT22の制御信号A及びレジス
タ制御信号Aに基づいて、所定の部分が選択される。
【0186】選択回路71A、71Bの出力は、拡張回
路72A、72Bに入力される。CONT22の制御信
号Aに基づいて、符号無しバイトサイズ乗算(MULX
U.B)の場合、上位8ビットを0拡張する。また、符
号付きバイトサイズ乗算(MULXS.B)の場合、上
位8ビットを符号拡張する。ワードサイズの場合は、選
択回路71A、71Bの出力をそのまま出力する。
【0187】選択回路71A、71Bの出力は出力バッ
ファ73B、73Cに入力される。CONT22の制御
信号Aに基づいて、所定のタイミングで、拡張回路72
A、72Bの出力をXバスまたはYバスに出力する。
【0188】乗算の終了時、及びSTMAC命令の場合
は、Xバス、YバスからWBへの出力が行われる。Xバ
ス、Yバスの入力は拡張回路72Cに入力される。これ
は、MACHの上位22ビットを符号拡張する。拡張回
路72Cの出力は出力バッファに入力される。CONT
22の制御信号Cに基づいて、所定のタイミングで、拡
張回路72Cの出力をWBに出力する。
【0189】MAC命令のデータリード時、IDBから
Xバス、Yバスへの入力が、それぞれ1回ずつ行われ
る。CONT22の制御信号Aに基づいて、所定のタイ
ミングで、IDBの内容はをXバスまたはYバスに出力
する。また、IDBは、DBWからの出力を入力可能と
され、DBR及びIRへデータを入力可能とされる。
【0190】図19、20に、MAC命令の動作タイミ
ングを示す。
【0191】例えば、MAC @ER1+,@ER2+
命令などの例である。この場合のER1を第1のアドレ
スレジスタ、ER2を第2のアドレスレジスタとする。
前記同様に、T2からMAC命令の実行が開始される。
【0192】まず、プリフィックスコードの実行を行
い、PC30の内容をアドレスとした命令のリードを行
い、また、PC30の内容のインクリメントを行う。
【0193】T3のφ#で、レジスタ制御信号Aに基づ
いて、第1のアドレスの内容をGBに読み出して、MA
B33に転送し、IABに出力する。
【0194】T4のφで、第1のアドレスの内容をGB
に読み出して、ALU26に入力し、インクリメントを
行う。
【0195】T4のφ#で、インクリメント結果を、W
B経由で、第1のアドレスレジスタに格納する。バスス
イッチ34に入力した、第1のリードデータをXバスに
出力すると共に、制御信号Bに含まれるSTX信号を活
性状態にし、乗算器2にこの内容を入力ラッチXにラッ
チさせる。同時に、第2のアドレスの内容をGBに読み
出して、MABに転送し、IABに出力する。
【0196】T5のφで、第2のアドレスの内容をGB
に読み出して、ALU26に入力し、インクリメントを
行う。T5のφ#で、インクリメント結果を、WB経由
で、第2のアドレスレジスタに格納する。バススイッチ
34に入力した、第2のリードデータをYバスに出力す
ると共に、制御信号Bに含まれるSTY信号を活性状態
にし、乗算器2にこの内容を入力ラッチYにラッチさせ
る。MAC信号を活性状態にして、積和演算動作の開始
を指示する。同時に、PC30の内容をアドレスとした
命令のリードを行い、また、PC30の内容のインクリ
メントを行う。
【0197】T6のφで、インクリメント結果をPC3
0に格納する。一方、BUSY信号が活性状態になる。
MAC命令では、CPU1は乗算器2とは並列に動作
し、BUSY信号を無視して、次の命令の実行を開始す
る。
【0198】MAC命令を連続して実行した場合も、次
のMAC命令がアドレス計算を行っている間に、乗算器
の動作が終了するために、MAC命令実行にウェイトを
挿入することはない。
【0199】プリフィックスコードを付した命令コード
とすることにより、特開平−51981号公報に記載さ
れているように、互換性を保持しつつ命令セットを拡張
することができる。また、乗算器動作中に、次の積和演
算を行った場合、命令フェッチとデータのアクセスを行
うことができるから、命令長が長くなっても実行時間を
低下させることがない。積和演算を連続的に高速に実行
することができる。
【0200】乗算器2は、演算終了時点で、SYSCR
13のMACSビットを参照して、オーバフローが発生
していれば、MACレジスタの内容を、上限(H’7F
FFFFFF)または下限(H’80000000)に
固定する。
【0201】図21、22に、STMAC、LDMAC
命令の動作タイミングを示す。
【0202】例えば、STMAC MACH,ER2命
令などの例である。前記同様に、T2からSTMAC命
令の実行が開始される。
【0203】まず、BUSY信号の状態をサンプリング
する。BUSY信号が活性状態であれば、ウェイト状態
になる。
【0204】T2のφ#でPCの内容がGBに読み出さ
れ、MAB33に入力されて、IABに出力される。ま
た、INC27に入力されて、インクリメント動作が開
始される。
【0205】CPU内部のクロックがロウレベルで固定
され、CPUの動作を停止する。直前にMAC命令を実
行した場合、BUSY信号は3ステートの期間活性状態
であり、STMAC命令も3ステートウェイト状態にな
る。
【0206】T5でBUSY信号が非活性状態になる
と、T6からクロックの動作が開始される。
【0207】T6のφで、インクリメント結果がWBに
出力され、PC30に格納される。STMACHまたは
STMACL信号が活性状態になって、MACレジスタ
の読み出しが指示される。MACレジスタの内容がXバ
ス、Yバスに出力される。特に制限はされないものの、
Xバスが上位、Yバスが下位の内容とされる。
【0208】T6のφ#で、Xバス、Yバスの内容がW
Bに出力されて、指定されたレジスタ(STMAC M
ACH,ER2の場合は、ER2)に格納される。同時
に、乗算器のフラグの内容がCCRのN、Z、Vフラグ
に格納される。
【0209】また、LDMAC ER1,MACL命令
などの例である。
【0210】T8からLDMAC命令の実行が開始され
る。
【0211】T9のφで、指定されたレジスタ(LDM
AC ER1,MACLの場合は、ER1)の内容が読
み出される。この内容がXバス、Yバスに出力される。
【0212】T9のφ#で、LDMACHまたはLDM
ACL信号が活性状態になる。PC30の内容がGB経
由で、MAB33とINC27に入力される。
【0213】T10のφで、インクリメントされた結果
がWB経由で、PC30に格納される。また、Xバス、
Yバスの内容がMACレジスタに格納される。
【0214】前記同様に、BUSY信号が活性状態の場
合は、LDMAC命令も活性状態になるようにしてもよ
い。
【0215】CLRMAC命令は、概略LDMAC命令
と同様の動作で、LDMAC命令のLDMACH、L信
号と同じタイミングで、CLRMAC信号を活性状態に
するようにすればよい。
【0216】図23、24に、乗算器を用いた乗算命令
のタイミング図を示す。
【0217】なお、CONT22の部分に、内部のステ
ートマシンのステップの番号を記載した。これは、基本
的には、CONT22の出力のフィードバック信号で形
成される。また、制御信号CPUSを用いて、乗算器を
使用するか使用しないかを選択する。例えば、MULX
U.W R1,ER0などのバイトサイズ・符号無し乗
算の例である。前記同様に、T2から実行を開始する。
【0218】命令が解読されると、まず、T2のφ#
で、レジスタ制御信号Aによって、汎用レジスタの読み
だしを指示する。読出された結果は、GB、DBおよび
バススイッチ34を介して、Xバス、Yバスに出力され
る。
【0219】制御信号Bに含まれるSTX、STY信号
に基づいて、Xバス、Yバスの内容は、T3のφで乗算
器の入力ラッチにラッチされる。また、同時に、制御信
号Bに含まれるMUL信号によって、乗算器に乗算を指
示する。CONT22から、バイト/ワードの選択、符
号付/符号無の選択、乗算/積和の選択を上記制御信号
によって指示する。
【0220】乗算器は、T3のφ#で、BUSY信号を
与える。また、マルチプレクサやデコーダを動作させ
る。T4のφで、1回目の加算を行う。T4のφで部分
積を乗算結果レジスタとフィードバックラッチに格納す
る。これを3回繰り返す。BUSY信号が活性状態にな
ったことに呼応して、CPUはウェイト状態になる。
【0221】T5のφでBUSYが非活性状態になっ
て、CPUは動作を再開し、T6のφで、制御信号Cに
含まれる、MULRD信号を活性状態にして、乗算結果
レジスタのリードを指示する。乗算結果レジスタの内容
は、Xバス、Yバスおよびバススイッチ34を経由し
て、T6のφ#でWBを経由して、レジスタ制御信号C
によって指定されるレジスタに格納される。同時に、乗
算の結果フラグがCCR31に格納される。
【0222】前記の通り、乗算命令はBUSY信号によ
って、クロックが停止し、ウェイト状態となる。バイト
サイズ符号無し乗算命令(MULXU.B R0L,R
1など)は1ウェイトが挿入され、3ステートで実行さ
れる。ワードサイズ符号無し乗算命令(MULXU.W
R0,ER1など)は2ウェイトが挿入され、4ステ
ートで実行される。なお、符号付き乗算の場合は、それ
ぞれ、プリフィックスコードの実行が付加される。
【0223】BUSY信号によって、演算実行の終了を
判定することにより、制御回路(CONT22)の論理
を縮小することができる。
【0224】TESTMODE信号が活性状態になっ
て、テストモードを指示された場合には、乗算器は1ス
テップの動作のみを行い、BUSY信号は非活性状態を
保持する。CPUは1ステートで処理を終了する。
【0225】図25、26に、乗算器を用いない乗算命
令のタイミング図を示す。乗算器を用いない乗算は、特
に制限はされないものの、除算と類似のシーケンスで行
うようにする。
【0226】命令が解読されると、まず、汎用レジスタ
の読みだしを指示する。読出された結果は、符号判定を
行う。符号付/符号無の選択に対応して、符号判定を行
い、除数は符号反転し、負数にする。そのほかは正数に
する。
【0227】被乗数を上位、下位は0にして1ビットず
つシフトし、シフトした結果によって、下位側に乗数を
加算するかを決める。その結果に対して、さらにシフト
を行い、シフトした結果によって、下位側に乗数を加算
を行っていく。これを8または16回繰返して、乗算結
果の絶対値を得る。例えば、MULXU.B R1L,
R0などのバイトサイズ・符号無し乗算の例である。前
記同様に、T2から除算命令の実行が開始される。前記
のような、所定の処理を行った後、T5から部分乗算を
行う。
【0228】部分乗算は、左シフト処理と加算で構成さ
れる。前回の加算と次回のシフト処理を同一のALU処
理で行うようにする。
【0229】T5のφ1に同期して、指定されたレジス
タ(ディスティネーションレジスタRd)から被乗数を
読み込み、シフト処理を行う。シフト処理の結果(部分
積)がφ#に同期してWBを経由して、Rdにライトさ
れる。また、シフトアウトされたキャリが内部で保持さ
れる。
【0230】T6のφ1に同期して、Rdから部分積を
読み込み、部分乗算処理を行う。前回のキャリが”1”
である場合、部分積の下位8ビットに乗数を加算し、1
6ビットでシフト処理を行い、最下位ビットは”0”と
する。前記以外の場合、部分積に16ビットでシフト処
理を行い、最下位ビットは”0”とする。かかる結果が
φ#に同期してWBを経由して、Rdにライトされる。
また、シフトアウトされたキャリが内部で保持される。
この動作を7回繰り返す。
【0231】T13では、上記同様の判定を行い、前回
のキャリが”1”である場合、部分積の下位8ビットに
乗数を加算する。前記以外の場合、部分積を保持する。
16ビットの積が得られる。かかる結果がφ#に同期し
てWBを経由して、Rdにライトされる。符号付きの場
合は、T14で符号処理を行う。また、ワードサイズの
場合は、部分乗算処理が8回追加される。
【0232】先に保持した符号判定結果に基づいて、積
の符号処理を行う。すなわち、乗数・被乗数の一方が正
数、他方が負数のときは、積の符号を反転する(0から
積を引く)。
【0233】図27に、乗算命令の状態遷移図を示す。
例えば、MULXU.B R1L,R0などのバイトサ
イズ・符号無し乗算の例である。命令の実行が開始され
ると、CPUS信号の状態によって分岐する。
【0234】CPUS信号が活性状態であって、乗算器
の使用が許可されると、図6の動作を行う。即ち、ステ
ップ1で、指定されたレジスタの内容を、GB、DBを
経由して、X、Yバスに出力して、乗算器に供給する。
BUSY信号の状態を判定する。テストモードであれ
ば、BUSY信号は非活性状態であって、直ちにステッ
プ2に遷移する。
【0235】BUSY信号が活性状態であると、WAI
T状態に遷移する。BUSY信号は非活性状態になると
ステップ2に遷移する。
【0236】ステップ2では、X、Yバスの内容をWB
を経由して、指定されたレジスタにライトする。例え
ば、乗算器のフラグの内容をCCR31に格納する。次
の命令の実行を開始する。
【0237】CPUS信号が非活性状態であって、乗算
器の使用が禁止されると、図25、26の動作を行う。
即ち、ステップ1、2でデータアライメントなどを行っ
た後、ステップ3から、部分乗算処理を行う。ステップ
3では、GB上位に被乗数を出力し、これをシフトす
る。
【0238】ステップ4では、GBに部分積を、DB下
位に乗数を出力し、ALU26で加算を行う。前のステ
ップでシフトアウトしたビットが”1”であれば、加算
した結果が選択され、シフトアウトしたビットが”0”
であれば、GBの内容が選択され、シフトを行う。これ
をステップ10まで繰り返す。
【0239】ステップ11では、GBに部分積を、DB
下位に乗数を出力し、ALU26で加算を行う。前のス
テップでシフトアウトしたビットが”1”であれば、加
算した結果が選択され、シフトアウトしたビットが”
0”であれば、GBの内容が選択される。シフトは行わ
ない。
【0240】ステップ12で、命令のリードを行う。例
えば、積を検査して、CCRに反映する。次の命令の実
行を開始する。
【0241】図25、26に、除算命令のタイミング図
を示している。例えば、DIVXU.B R1L,R0
などのバイトサイズ・符号無し除算の例である。前記同
様に、T2から除算命令の実行が開始される。除数の符
号反転などの、所定の処理を行った後、T5から部分除
算を行う。部分除算は、左シフト処理と減算で構成され
る。前回の減算と次回のシフト処理を同一のALU処理
で行うようにする。
【0242】T5のφ1に同期して、指定されたレジス
タ(ディスティネーションレジスタRd)から被除数を
読み込み、シフト処理を行う。シフト処理の結果(部分
剰余)がφ#に同期してWBを経由して、Rdにライト
される。また、シフトアウトされたキャリが内部で保持
される。
【0243】T6のφ1に同期して、Rdから部分剰余
を読み込み、部分除算処理を行う。前回のキャリが”
1”である場合、または、部分剰余の上位8ビットが除
数以上である場合、部分剰余の上位8ビットから除数を
減算(除数の符号反転を行っている場合、除数の反転を
加算)し、16ビットでシフト処理を行い、最下位ビッ
トは”1”とする。前記以外の場合、部分剰余に16ビ
ットでシフト処理を行い、最下位ビットは”0”とす
る。かかる結果がφ#に同期してWBを経由して、Rd
にライトされる。また、シフトアウトされたキャリが内
部で保持される。この動作を7回繰り返す。
【0244】T13では、上記同様の判定を行い、前回
のキャリが”1”である場合、または、部分剰余の上位
8ビットが除数以上である場合、部分剰余の上位8ビッ
トから除数を減算し、下位8ビットでシフト処理を行
い、最下位ビットは”1”とする。前記以外の場合、部
分剰余に下位8ビットでシフト処理を行い、最下位ビッ
トは”0”とする。いずれの場合も、ビット7の値は失
われる。上位8ビットに剰余、下位8ビットに商が得ら
れる。かかる結果がφ#に同期してWBを経由して、R
dにライトされる。
【0245】符号付きの場合は、T14で符号処理を行
う。また、ワードサイズの場合は、部分除算処理が8回
追加される。
【0246】図28に、ALU26の概略ブロック図を
示す。ALU26は、算術論理演算回路76と、選択回
路77、シフト回路78、制御回路79から構成され
る。乗除算に直接関係のない部分は省略している。
【0247】算術論理演算回路76は、GBとDBの内
容を入力して、加算、減算、論理積、論理和、排他的論
理和などの演算を行い、結果を出力する。選択回路77
は、算術論理演算回路の出力と、GBの内容を入力し
て、いずれかを選択して出力する。シフト回路78は、
選択回路77の出力を入力して、シフト処理を行う。
【0248】選択回路77、シフト回路78は制御回路
79によって制御される。制御回路79は、CONT2
2の与える制御信号と算術論理演算回路76とシフト回
路78の出力によって、選択回路77の選択とシフト回
路78のシフト入力を制御する。制御回路79が、前記
の部分乗算、部分除算の判定を行う。条件が成立してい
れば、算術論理演算回路76の出力を選択し、除算の場
合、1をシフト回路に入力する。条件が不成立であれ
ば、GBの入力を選択し、除算の場合、0をシフト回路
に入力する。乗算の場合のシフト回路の入力は、0とさ
れる。
【0249】除算の部分除算と乗算の部分乗算の処理の
シーケンス、及びALU26の回路構成を共通化する。
除算と乗算を共通化して、CONT22の論理規模を縮
小できる。
【0250】これにより、乗算器を持たないCPUを容
易に提供することができる。乗算器を持つCPUにおい
て不必要な乗算器を用いない乗算の論理を除算と共通化
して、論理規模の増加を最低限にすることができる。
【0251】また、CPUSによって、乗算器を用いな
い選択を可能にすることによって、テスト性を向上する
ことができる。テスト時に、乗算器を用いるか用いない
かを選択することに両方の論理をテストの対象にするこ
とができる。
【0252】複数命令の待避/復帰命令の命令コードは
表16の通りである。
【0253】最初に使用するレジスタ番号が、命令コー
ド中に指定される。例えば、昭和5年3月(株)日立製
作所発行『H8/500シリーズプログラミングマニュ
アル』に記載の複数命令の待避/復帰命令のように任意
のレジスタの組合わせを指定するのではなく、連続した
レジスタ番号の固定の組合わせとし、2、3、4本の固
定の組合わせとしている。命令コードも、レジスタ本数
に応じて3種類を用意している。
【0254】複数命令の待避命令は、待避するレジスタ
の本数に対応して、 STM(ERl−ERl+1),@−SP STM(ERm−ERm+2),@−SP STM(ERn−ERn+3),@−SP の3種類を有する。l=0、2、4、6であり、m、n
=0、4である。指定した汎用レジスタをスタックに待
避する。例えば、ER0とER1をスタックに待避する
場合は、 STM(ER0−ER1),@−SP を用いる。ER0、ER1の順番でスタックにライトさ
れ、スタックポインタ(ER7)は+8される。命令コ
ード中のレジスタ指定部は、最初に待避されるレジスタ
番号にしてある。
【0255】図29、30に複数レジスタの待避命令の
実行シーケンスを示す。例えば、STM.L ER0−
ER1,@−SPなどの2本の汎用レジスタを待避する
例である。レジスタ指定フィールドはB’000である
(B’は2進数を示す)。
【0256】前記同様に、T2から除算命令の実行が開
始される。特に制限はされないものの、命令コードの第
1ワードはプリフィックスコードであり、次の命令コー
ドの動作を指定し、PCをインクリメントするほかの動
作は行わない。
【0257】第2ワードの命令コードは、PUSH命令
と共通にされる。
【0258】T4のφで、SPの内容をGBに読み出
し、ALU26に入力する。ALU26では−4の演算
を行う。なお、前記の通り、実行前のSPはスタックの
先頭アドレスを示しているとする。
【0259】T4のφ#で演算結果がWBとGBに出力
される。WBからSPに書き込まれ、GBからMAB3
3に格納される。MAB33の内容がIABに出力され
る。また、第1の制御信号BとRSEL2(=B’00
0)とによって、待避されるレジスタが選択され、レジ
スタ制御信号Bが生成される。
【0260】T5のφで、選択されたレジスタ(ER
0)の内容がDB経由で、DBW24に転送される。
【0261】T5のφ#で、転送されたデータ(ER0
の内容)の上位16ビット(Eレジスタの内容)が内部
データバスに出力される。また、MAB33のインクリ
メント機能によって、IABの出力値を+2とする。
【0262】T6のφで、更に、SPの内容をGBに読
み出し、ALU26に入力する。ALU26では−4の
演算を行う。
【0263】T6のφ#で、DBW24に転送されたデ
ータの下位16ビット(Rレジスタの内容)が内部デー
タバスに出力される。ALU26の演算結果がWBとG
Bに出力される。WBからSPに書き込まれ、GBから
MABに格納される。MAB33の内容がIABに出力
される。また、第2の制御信号BによってRSELのビ
ット0が反転される。第1の制御信号とRSEL2(=
B’001)とによって、待避されるレジスタが選択さ
れ、レジスタ制御信号Bが生成される。
【0264】T7のφで、選択されたレジスタ(ER
1)の内容がDB経由で、DBW24に転送される。
【0265】T7のφ#で、転送されたデータ(ER1
の内容)の上位16ビット(Eレジスタの内容)が内部
データバスに出力される。また、MAB33のインクリ
メント機能によって、IABの出力値を+2とする。
【0266】T8のφ#で、DBW24に転送されたデ
ータの下位16ビット(Rレジスタの内容)が内部デー
タバスに出力される。
【0267】T8のφ#以降で、前記同様に、次の次の
命令の読み出しと、PC30のインクリメント(+2)
を行う。
【0268】レジスタ3本を指定した場合は、実行ステ
ート数が2ステート長くなり、SPのデクリメント(−
4)と、RSELのビット1が反転される。RSEL
は、レジスタ指定フィールドが000の場合、010と
され、汎用レジスタER2が選択される。ライト動作が
2回行われる。
【0269】レジスタ4本を指定した場合は、更に、実
行ステート数が2ステート長くなり、SPのデクリメン
ト(−4)と、RSELのビット1とビット0が反転さ
れる。RSELは、レジスタ指定フィールドが000の
場合、011とされ、汎用レジスタER23が選択され
る。ライト動作が2回行われる。
【0270】レジスタ番号の下位ビットが固定であるの
で、これを命令処理の実行に従って、変更させることが
容易である。例えば、2本のレジスタを待避する場合、
命令コード上のレジスタ指定フィールドの下位ビットは
0であるので、1回めのレジスタ指定は、レジスタ指定
フィールドの値に従い、2回のレジスタ指定は、CON
T22の制御に従って、レジスタ指定フィールドの下位
1ビットを1に変更して、行うようにする。
【0271】一方、PUSH命令はレジスタ1本の待避
であり、前記の2回目の待避動作を行わないようにさ
れ、実行動作の共通化を図っている。
【0272】図31、32に複数レジスタの復帰命令の
実行シーケンスを示す。例えば、LDM.L @ER7
+,ER0−ER1などの2本の汎用レジスタを待避す
る例である。レジスタ指定フィールドは001である。
【0273】図33、34に、RSEL2入力制御回路
の具体的な構成、およびその動作説明を示す。この制御
回路は、アンド回路75A、75B、オア回路80A、
80Bから構成される。
【0274】ビット2には、オペコードのレジスタ指定
フィールドのビット2がそのまま入力される。ビット
1、0には、オアゲートとアンドゲートを介して入力さ
れる。オアゲートの他方の入力はSTM制御信号1、0
であり、アンドゲートの他方の入力はLDM制御信号
1、0の反転とされる。STM制御信号1、0およびL
DM制御信号1、0は、CONT22の出力である制御
信号Bに含まれる。
【0275】STM制御信号が活性状態になると、当該
RSELビットは1になる。また、LDM制御信号が活
性状態になると、当該RSELビットは0になる。ST
M、LDM命令と指定したレジスタ本数に従って、ST
M制御信号、LDM制御信号が生成される。
【0276】これにより、レジスタ選択回路をそのほか
の命令と共通化することができる。共通化によって、物
理的規模の増加を抑止できる。
【0277】図35、36に、C言語で書かれた関数
と、これをCPUの命令に変換したリストの概略を示
す。このリストには、オフセット(相対アドレス)、命
令コード、Cラベル、Cソース及びアセンブラ命令の各
項目が示されている。
【0278】C言語からCPUの命令へのコンパイルに
ついては、例えば、平成4年9月(株)日立製作所発行
『H8/300シリーズCコンパイラ』に記載されてい
る。引数を汎用レジスタER0、ER1に設定しておく
ことができる。
【0279】関数Proc1では、引数をレジスタ渡し
とし、これをER0に割り当てている。関数内の処理
で、ER2、3、4、6を使用するため、関数処理の先
頭で、 STM (ER2−ER3),@−SP STM (ER4−ER6),@−SP を実行して、関数の最後で、 LDM @SP+,(ER4−ER6) LDM @SP+,(ER2−ER3) を実行して、サブルーチンからリターン(RTS)して
いる。
【0280】ER0、ER1は引数領域のため、関数内
では使用せず、内容の待避/復帰も行わない。
【0281】また、この関数内で呼び出される関数Pr
oc3は、引数をレジスタ渡しとし、これをER0に割
り当てている。関数内の処理で、ER5を使用するた
め、関数処理の先頭で、1レジスタの待避 PUSH.L ER5 を実行して、関数の最後で、 POP.L ER5 を実行して、サブルーチンからリターン(RTS)して
いる。
【0282】スタックポインタはER7と兼用であるか
ら、ER7を待避/復帰することは意味がない。従っ
て、タスク切替えを行う場合に使用可能なすべてのレジ
スタを待避する場合には、 STM @SP+,(ER0−ER3) STM @SP+,(ER4−ER6) の2命令を用いる。ER0からER6の順番でスタック
に待避される。同様に、復帰する場合には、 LDM @SP+,(ER4−ER6) LDM @SP+,(ER0−ER3) の2命令を用いる。ER6からER0の順番でスタック
から復帰される。
【0283】前記のように任意の組合わせを指定できな
いが、予め、レジスタの割当てを行っておくことによ
り、実質的な制約にはなりにくい。7本のレジスタを待
避/復帰する場合に2命令を用いることになるが、全体
的な実行ステート数やプログラム容量に対しては影響が
小さい。少なくとも、1本のレジスタずつの待避/復帰
命令を用いるより効果がある。後者の場合、4バイト×
7、5ステート×7であるのに対して、前者では、4バ
イト×2、9+11ステートで実行できる。少なくと
も、命令リードのためのリードサイクルや、アドレス計
算のための内部動作の分を短縮して、高速化を図ること
ができる。
【0284】前記C言語で書かれたプログラムのよう
に、関数乃至サブルーチンを多く用いるプログラムの高
速化を実現することができる。
【0285】また、上記のような関数乃至サブルーチン
の場合のほかに、割り込み処理ルーチンにおいても、同
様のレジスタの待避/復帰を行う必要がある。マイクロ
コンピュータが機器制御などを行う場合には、割り込み
処理については、割り込みのイベントが発生してから、
実際の割り込み処理を実行するまでの時間を短縮するこ
とによって、リアルタイム制御性を向上することができ
る。複数レジスタの待避を高速に実行可能にすることに
より、かかるリアルタイム制御性の向上に効果がある。
【0286】また、固定の組合わせにし、各命令の実行
ステート数を固定にすることにより、内部の条件分岐を
行うことをなくし、内部論理を簡潔にし、論理規模を縮
小できる。マイクロプログラムによらず、ワイアードロ
ジックなどでも容易に実現できる。マイクロプログラム
によらず、ワイアードロジックなどとすることにより、
論理回路の高速化に寄与することができる。特に、C言
語など関数乃至サブルーチンを多く用いるプログラムを
高速に実行することができる。
【0287】図37、38に、割込み例外処理のシーケ
ンスを示す。
【0288】図39に、例外処理の状態遷移図を示す。
【0289】前記同様に、T2から割り込み例外処理の
実行が開始される。プリフェッチした命令はキャンセル
され、図示されない割り込み要求信号に呼応して、CO
NT22の入力が切り替えられる。
【0290】ステップ1の動作として、PC30のデク
リメントを行う。T2のφ#で、PC30の内容を読み
出して、GB経由で、INC27でデクリメント(−
4)を行う。これはプリフェッチをキャンセルしたこと
に対応して、待避すべきPC30の値を算出する。
【0291】T3のφで、デクリメントした結果を、W
B経由で一旦PC30に格納する。
【0292】ステップ2で、SPをデクリメントし、こ
の内容をアドレスとして、PC30の内容をデータとし
て、ライト動作を行う。即ち、T3のφで、同時に、S
Pの内容を読み出して、GB経由でALU26でデクリ
メント(−2)を行う。
【0293】T3のφ#で、デクリメントした結果を、
WB経由でSPに格納するとともに、GB経由でMAB
33に転送し、IABに出力させる。
【0294】T4のφで、PC30の内容をDB経由で
DBW24に転送する。DBW24の内容は、T4のφ
#から、内部データバスに出力される。
【0295】ステップ3で、SPをデクリメントし、こ
の内容をアドレスとして、PC30の上位8ビットとC
CR31の内容をデータとして、ライト動作を行う。
【0296】T4のφで、同時に、SPの内容を読み出
して、GB経由でALU26でデクリメント(−2)を
行う。
【0297】T4のφ#で、デクリメントした結果を、
WB経由でSPに格納するとともに、GB経由でMAB
33に転送し、IABに出力させる。DBW24に保持
したPC30の内容下位16ビットを内部データバスに
出力する。
【0298】T5のφで、CCR31の内容をDB経由
でDBW24に転送する。T4で格納したPC30の上
位8ビットは保持される。DBW24の内容は、T5の
φ#から、内部データバスに出力される。
【0299】INTM1信号が非活性状態であれば、ス
テップ4に遷移する。INTM1信号が活性状態であれ
ば、ステップ12に遷移し、SPをデクリメントし、こ
の内容をアドレスとして、EXRの内容をデータとし
て、ライト動作を行う。
【0300】T5のφで、SPの内容を読み出して、G
B経由でALU27でデクリメント(−2)を行う。
【0301】T5のφ#で、デクリメントした結果を、
WB経由でSPに格納する。
【0302】T6のφで、EXRの内容をDB経由でD
BW24に転送する。T6のφ#から、内部データバス
に出力される。
【0303】ステップ4で、ベクタアドレスの内容をリ
ードする。
【0304】T5のφ#で、同時に、VAGの内容をG
B経由でMAB33に転送し、IABに出力させる。V
AGには、図示されない、割り込みコントローラから与
えられるベクタ番号に基づいて、ベクタアドレスを生成
する。
【0305】ステップ5で、ベクタアドレスのリード動
作の終了を待つ。
【0306】ステップ6で、DBR25に格納した、ベ
クタアドレスの内容をアドレスとして、命令のリードを
行う。DBR25の内容をインクリメントし、PC30
に格納する。
【0307】T8のφ#で、DBR25に格納したベク
タアドレスのリード内容(分岐先の先頭アドレス)をG
B経由で、MAB33に転送し、IABに出力させ、A
LU26でインクリメント(+2)する。
【0308】T9のφで、インクリメントした結果を、
WB経由でPC30に格納する。
【0309】ステップ7で、PC30の内容をアドレス
として、命令のリードを行い、PC30のインクリメン
トを行う。
【0310】T9のφ#で、PC30の内容(分岐先の
先頭アドレス)をGB経由で、MAB33に転送し、I
ABに出力させ、ALU26でインクリメント(+2)
する。リードした命令をIR21に格納する。
【0311】T10のφで、インクリメントした結果
を、WB経由でPC30に格納する。
【0312】次の命令の実行を開始させる。
【0313】制御信号INTM1に従って、ステップ1
2を行うか、行わないかが選択され、スタックを2回行
うか、3回行うかが選択される。スタックを2回行う場
合には、PCとCCR31のみが待避される。SPは−
4となる。上記T5の動作に相当する部分(ステップ1
2)が実行されない。3回行う場合には、PC30とC
CR31及びEXRが待避される。SPは−6となる。
【0314】なお、ステップ1単位の動作が複数ステー
トにまたがっているのは、1つのCONT22の入力に
対応して、複数の異なるタイミングの制御信号A、B、
C及びレジスタ選択信号A、B、Cが生成されるのに対
応する。
【0315】図40、41に、例外処理後のスタックの
状態を示す。図41はノーマルモードを示し、図42は
アドバンストモードを示している。
【0316】図42に、RTE命令の実行シーケンスを
示す。
【0317】図43に、例外処理の状態遷移図を示す。
【0318】前記同様に、T2からRTE命令の実行が
開始される。
【0319】ステップ1の動作として、SPの内容をア
ドレスとして、スタックのリードを行う。T2のφ#
で、SPの内容を読み出して、GB経由で、MAB33
に転送し、IABに出力させる。
【0320】T3のφで、SPの内容を読み出して、G
B経由で、ALU27でインクリメント(+2)する。
IABのアドレスでスタックをリードする。T3のφ#
で、リードした内容をDBR25に格納する。
【0321】INTM1信号が非活性状態であれば、ス
テップ2に遷移する。INTM1信号が活性状態であれ
ば、ステップ10に遷移し、リードした結果をEXRに
格納する。SPをインクリメントし、この内容でリード
を行う。
【0322】T3のφ#で、同時に、インクリメントし
た結果を、WB経由でSPに格納する。また、GBを経
由して、MAB33に転送し、IABに出力させる。
【0323】T4のφで、DBR25の内容をGBに読
み出し、これをALU27に入力する。T4のφ#で、
ALU27はGBから入力した内容をそのまま、WBに
出力し、EXRに格納する。
【0324】ステップ2で、リードした結果をCCR3
1に格納する。MAB33に格納した内容を、MAB3
3でインクリメントさせる。この内容でリードを行う。
なお、MAB33のインクリメント機能は、特開平4−
333153号公報などに記載されている。
【0325】T5のφで、DBR25の内容をGBに読
み出し、これをALU27に入力する。T5のφ#で、
ALU27はGBから入力した内容をそのまま、WBに
出力し、CCR31に格納する。
【0326】ステップ3で、SPの内容をインクリメン
ト(+4)する。
【0327】T6のφで、SPの内容を読み出して、G
B経由で、ALU26でインクリメント(+4)する。
【0328】T6のφ#で、インクリメントした結果
を、WB経由でSPに格納する。
【0329】ステップ4で、DBR25に格納した、ス
タックから復帰したPC30の内容をアドレスとして、
命令のリードを行う。DBR25の内容をインクリメン
トし、PC30に格納する。
【0330】T6のφ#で、同時に、DBR25に格納
したベクタアドレスのリード内容(分岐先の先頭アドレ
ス)をGB経由で、MABに転送し、IABに出力さ
せ、ALUでインクリメント(+2)する。
【0331】T7のφで、インクリメントした結果を、
WB経由でPC30に格納する。
【0332】ステップ5で、PC30の内容をアドレス
として、命令のリードを行い、PC30のインクリメン
トを行う。
【0333】T7のφ#で、PC30の内容(分岐先の
先頭アドレス)をGB経由で、MAB33に転送し、I
ABに出力させ、ALU26でインクリメント(+2)
する。リードした命令をIRに格納する。
【0334】T8のφで、インクリメントした結果を、
WB経由でPC30に格納する。次の命令の実行を開始
させる。
【0335】例えば、INTM1信号が0レベルの場合
には、前記従来CPU(例えば、前記平成5年6月
(株)日立製作所発行『H8/300Hシリーズプログ
ラミングマニュアル』に記載のCPU)と同一のスタッ
クの構造とされる。命令コードが共通であることと相俟
って、従来CPUによって書かれたプログラムをそのま
ま実行することができる。
【0336】新たな、コンディションコードや割込みマ
スクビットやトレースビットなどを追加する場合には、
これに対応したプログラムを作成することになるから、
スタックの構造が異なっても実質的な問題はない。割込
みマスクビットを追加するなどして、使い勝手を向上す
ることができる。
【0337】なお、前記の通りINTM1ビットがSY
SCRに存在し、このビットの状態がINTM1信号に
反映されるようになっている。リセット後に、かかるS
YSCRの設定を行うことにより、EXRを使用するか
しないかが選択される。
【0338】図44にCONT22の一部の論理を示
す。このCONT22は、アンド回路86A〜86Dに
よって構成される。
【0339】EXRを使用しない、すなわち、INTM
1ビットを”0”にクリアすると、EXRのビットは全
て”0”とみなされ、設定値は、無視されるようにされ
る。
【0340】次に、図4におけるエミュレーション用イ
ンタフェース39に含まれる制御レジスタ41の構成を
示す。この制御レジスタ41は、以下説明するように、
(1)ASEコントロールレジスタ D (ASECR
D)、(2)ブレークコントロールレジスタ A B
(BRCRA、B)、(3)ブレークアドレスレジスタ
A、B(BARA、B)、(4)ブレークアドレスマス
クレジスタ A、B(BAMRA、B)、および(5)
ASE専用スタックレジスタ(BRKSTKR)から構
成されている。
【0341】図45に、(1)ASEコントロールレジ
スタ D (ASECRD)の構成を示す。このレジス
タは8ビットリード/ライト可能なレジスタで、シング
ルステップの設定、RTB命令実行後の割込制御、多重
ブレークの許可禁止、ウインドウ機能を指定する。各ビ
ットの内容を表21乃至表24に示す。
【0342】
【表21】
【0343】
【表22】
【0344】
【表23】
【0345】
【表24】
【0346】図46に、(2)ブレークコントロールレ
ジスタ A B(BRCRA、B)の構成を示す。この
レジスタは、(a)BRCRA、(b)BRCRBから
なり、各々は8ビットのリード/ライトが可能なレジス
タで、それぞれPCブレークのチャネルA、Bの制御を
行う。各ビットの内容を表25乃至表28に示す。
【0347】
【表25】
【0348】
【表26】
【0349】
【表27】
【0350】
【表28】
【0351】図47に、(3)ブレークアドレスレジス
タ A、B(BARA、B)の構成を示す。このレジス
タは、(a)BARA、(b)BARBからなり、各々
は32ビットのリード/ライトが可能なレジスタで、そ
れぞれPCブレークのチャネルA、Bのアドレスを指定
する。32ビットのレジスタをバイトサイズに分割し
て、BARR、E、H、Lと表記される場合もある。最
上位のBARRはリザーブされている。リードすると不
定値が読み出される。ライトは無効である。
【0352】図48に、(4)ブレークアドレスマスク
レジスタ A、B(BAMRA、B)の構成を示す。こ
のレジスタは、(a)BAMRA、(b)BAMRBか
らなり、各々は32ビットのリード/ライトが可能なレ
ジスタで、それぞれPCブレークのチャネルA、Bのア
ドレス比較のマスクを行うビットを指定する。BAMR
のビットを”1”にセットすると、このビットに対応す
るアドレスのビットは、アドレス比較対象から除外され
る。32ビットのレジスタをバイトサイズに分割して、
BAMRR、E、H、Lと表記される場合もある。最上
位のBARRはリザーブされている。リードすると不定
値が読み出される。ライトは無効である。
【0353】図49に、(5)ASE専用スタックレジ
スタ(BRKSTKR)の構成を示す。このレジスタ
は、6バイト(48ビット)のリード/ライトが可能な
レジスタで、ユーザモード⇔ブレークモードの遷移時
に、スタック領域として使用する。ユーザのSPは使用
せず、保持される。スタックされるリソースおよびスタ
ックの構造は、MCU動作モード(ノーマルモード/ア
ドバンストモード)および、制御レジスタの設定(SY
SCRのINTM1ビット)によって相違される。表2
9にこのレジスタの使用方法を示す。
【0354】
【表29】
【0355】エミュレーション用ソフトウェアの実行状
態への遷移(ブレーク)時には、固定アドレスのブレー
クスタックレジスタを使用するようにする。ブレーク例
外処理や、ブレークからのリターン命令時には、ユーザ
のスタックポインタ(ER7)を使用せず、固定的なス
タックアドレスを生成する。かかるスタックアドレスの
生成はEMLSP29による。
【0356】図50に、EMLSP29の構成を示す。
このEMLSP29は、クロックトバッファで構成され
る。
【0357】かかるクロックトバッファの内、ビット2
3〜10は1固定、ビット5、4、0は0固定、ビット
9〜6は、外部からの指定を入力する。また、ビット
3、2、1はCONT22の制御信号を入力する。CM
OS回路で構成する場合、必要に応じて論理反転を用い
ればよい。クロックトバッファの出力はGBに接続され
ている。また制御信号mは、CONTの制御信号とクロ
ック(φ#)の論理積信号である。
【0358】通常のレジスタ回路が、データを保持する
ためのラッチ回路を持たなければならないが、EMLS
P29は、これを持たず、小型化を図っている。
【0359】従って、ブレークスタックレジスタの先頭
アドレスは、B’000000であって、64kバイト
単位で16通りのアドレスを選択可能とされる。マイク
ロコンピュータの内部I/Oレジスタの配置によって、
アドレスを変更できる。
【0360】ブレーク例外処理の実行シーケンスは、図
37、38と同様であり、そこでのSP(ER7)の読
み出しに代わって、EMLSP29を読み出すようにす
る。
【0361】この場合、最初(T3のφ)は下位アドレ
スをB’000110として、デクリメントした内容の
B’000100がスタックのアドレスとされる。
【0362】2回目(T4のφ)は下位アドレスをB’
000100として、デクリメントした内容のB’00
0010がスタックのアドレスとされる。
【0363】3回目(T5のφ)は下位アドレスをB’
000010として、デクリメントした内容のB’00
0000がスタックのアドレスとされる。3回目は、I
NTM信号が活性状態のときに有効である。読み出され
るビット2、1は、CONT22の制御信号によって選
択する。
【0364】リターン命令の実行シーケンスは、図42
と同様であり、SP(ER7)の読み出しに代わって、
EMLSP29を読み出すようにする。
【0365】最初(T2のφ#)はINTM1信号によ
って異なり、INTM1信号が非活性状態であれば、下
位アドレスをB’000010として、INTM1信号
が活性状態であれば、下位アドレスをB’000000
として、読み出す。これらがスタックのアドレスとな
る。
【0366】2回目(T3のφ)は、INTM1信号が
活性状態である場合に有効であり、下位アドレスをB’
000010として、デクリメントした結果をアドレス
としてリードを行う。
【0367】3回目はMAB33のインクリメントによ
ってアドレスを生成し、EMLSP29は使用しない。
【0368】これにより、固定的な出力回路として論理
規模を縮小できる。ユーザに公開されない資源による論
理規模の増大を最小限にすることができる。
【0369】図51に、ブレーク例外処理の実行タイミ
ングを示す。実行シーケンスは図37、38の例外処理
タイミングと同様である。
【0370】前記同様に、T2から割り込み例外処理の
実行が開始される。プリフェッチした命令はキャンセル
され、図示されないブレーク要求信号に呼応して、CO
NT22の入力が切り替えられる。
【0371】T3のバス動作が行われない期間に、ブレ
ークモードを示す信号BRKAK#が活性状態になる。
【0372】図52に、ブレーク制御論理の回路構成を
示す。この回路は、アンド回路81A乃至81G、オア
回路82A乃至82D、フリップフロップ83から構成
されている。
【0373】CPUに対するブレーク要求は、3要因が
存在する。第1はBRK端子による要求である。第2は
アドレス比較Aによる要求であり、これは、BRKCR
のBIEAビットによって許可される。第3はアドレス
比較Bによる要求であり、これは、BRKCRのBIE
Bビットによって許可される。なお、かかるアドレス比
較は、前記の通り、(CA23・AR23+¬CA23
・¬AR23+AMR23)・…・(CAn・ARn+
¬CAn・¬ARn+AMRn)・…・(CA0・AR
0+¬CA0・¬AR0+AMR0)と表現される。
(¬は論理反転を示す)。
【0374】これらの論理和信号が、ブレーク要求とし
て、CPUに与えられる。
【0375】ブレークモードでは、MBIEビットの状
態によってBRK端子によるブレーク要求の許可禁止が
選択される。即ち、ブレークモードでMBIEビット
が”0”にクリアされている場合は、ブレーク要求が抑
止される。アドレス比較によるブレーク要求は、ブレー
クモードで禁止される。
【0376】また、MBIEビットは、フリップフロッ
プで構成され、BRKAK信号の反転信号で”0”にク
リアされる。かかるフリップフロップの入力は、所定の
データバスのビットであって、クロックは、ブレークモ
ード信号とアドレスデコード信号とライト信号の論理積
信号とされる。かかるアドレスデコード信号は、CPU
の出力するアドレスがBRKCRの存在するアドレスに
なったとき、活性状態とされる。即ち、ブレークモード
でのみライト可能とされる。
【0377】即ち、ブレークモードに遷移した直後は、
ブレーク要求がが禁止状態であって、不所望のブレーク
の多重例外処理(スタックした内容の破壊)が禁止され
る。また、BRKCRのSSTPビットと、BRKAK
信号の反転信号との論理積が、シングルステップブレー
ク要求として、CPUに与えられる。
【0378】シングルステップブレーク要求と、RTB
命令実行信号との論理積信号と、ブレーク要求が、CP
U内部で、CPUブレーク例外処理要求として認識され
る。これらの例外処理の内容は共通とされる。
【0379】CPUはRTB命令実行時には、かかるシ
ングルステップブレーク要求を無視する。
【0380】上記実施例によれば、以下の作用効果を得
るものである。
【0381】(1)既存の命令セットと互換性を維持し
つつ、乗算器を内蔵することに当っては、ポストインク
リメントレジスタ間接のアドレッシングモードのみをサ
ポートすることによって、アドレッシングモードの増加
を最小限にして、かつ処理性能を低下させずに積和演算
を実行可能にすることができる。また、アドレスレジス
タの補正をレジスタ間演算命令で行い、これを1ステー
トで実行することができ、アドレッシングの柔軟性を向
上することができる。さらに、積和演算をCPUの内部
動作(ポストインクリメントのアドレス計算)と並行に
行うことによって、実行ステート数の短縮を行うことが
できる。
【0382】(2)乗算器を利用して乗算命令を実行す
ることにあたっては、乗算の結果(積、フラグ)を直接
汎用レジスタ、CCRに格納するようにして、直ちに結
果を利用できるようにし、実質的な乗算の実行速度を向
上することができる。また、積和演算の結果(MAC)
をリード(STMAC)すると同時に、乗算器内部で保
持したフラグをCCRに格納することによって、積和演
算結果の利用や判定を容易に行うことができ、使い勝手
を向上することができる。
【0383】(3)乗算器を取外し可能にすることによ
って、乗算器を取外した場合は、積和演算をサポートし
ないことによって、容易に下位CPUを実現し、論理的
・物理的規模を縮小し、製造費用を低減した別のマイク
ロコンピュータを容易に開発することができる。また、
汎用的な乗算命令を、乗算器によらずにサポートするこ
とによって、かかる別のマイクロコンピュータにおける
使い勝手の低下を防止できる。さらに、乗算器によらな
い乗算命令を除算と同一のシーケンスで実行するように
して、乗算器を持つマイクロコンピュータにおいても冗
長な論理を最低限にすることができる。
【0384】また、乗算器使用するか使用しないかの制
御信号を与えて制御することによって、テスト性を向上
したり、エミュレータを共通化したりすることができ
る。全体的な開発効率を向上することができる。さらに
また、乗算器を削除し、小型化したCPUを用いて、マ
イクロコンピュータを構成することによって、半導体集
積回路の論理規模・物理的規模を縮小して、製造費用の
縮小を図ることができる。
【0385】(4)乗算器とCPUを一体に構成して、
乗算器・CPU間の配線を短縮して、物理的規模を縮小
する。また、高速化に寄与することができる。
【0386】(5)乗算器のテストモードを設定して、
このときの乗算器の処理を1ステップのみにすることに
よって、論理規模の増加を最低限にして、テストの容易
性を向上することができる。テストステップを短縮する
ことができる。
【0387】(6)内部動作のパイプラインに対応し
て、入出力タイミングの異なるレジスタ選択回路を複数
持つことにより、実質的に1命令/1ステート実行を行
うことができる。
【0388】(7)複数レジスタの退避/復帰命令を持
ち、この組み合せを固定的にすることによって、論理規
模の縮小を図ることができる。レジスタの本数の異なる
命令を複数命令サポートすることによって、使い勝手の
低下を防ぐことができる。また、複数レジスタの退避/
復帰命令を関数(サブルーチン)の入り口/出口で実行
することによって、C言語などで記述された場合のよう
に、関数の使用頻度が高い場合に、処理速度を特に向上
することができる。さらに、割り込み例外処理ルーチン
の先頭で複数レジスタの退避を用いることにより、リア
ルタイム性の向上を図ることができる。
【0389】(8)EXRの有効/無効を切り換えるこ
とで、互換性を維持することと、機能拡張とを両立する
ことができる。EXRを無効とし、例外処理において退
避/復帰を行わないようにすることで、スタックの節約
と、割込み応答時間の高速化に寄与することができる。
また、互換性を維持する。さらに、EXRを有効とする
ことで、割り込みマスクレベルを拡張したり、トレース
機能を追加したりして、使い勝手を向上することができ
る。
【0390】(9)エミュレータ用の固定的なスタック
ポインタを持つことによって、ユーザプログラムとエミ
ュレーションプログラムの遷移時に、ユーザーのスタッ
クポインタとは独立して、固定的なアドレスに対して退
避および復帰が行われるから、エミュレータのソフトウ
ェア、ハードウェアの開発を容易にすることができる。
【0391】また、エミュレータ用のスタックポインタ
を固定的にすることによって、ユーザに公開しない資源
を最小限の論理的・物理的規模にすることができる。ユ
ーザプログラムからエミュレーションプログラムへの遷
移(ブレーク)を多重に行うことを禁止することを可能
にすることによって、不所望のスタックの内容の破壊を
防止することができる。
【0392】以上本発明者等によってなされた発明を実
施例に限定されるものではなく、その要旨を逸脱しない
範囲において種々変更可能である。実施例を相互に組み
合せて使用することもできる。
【0393】例えば、CPUの命令セットやレジスタ構
成は変更可能である。内部バス幅なども変更可能であ
る。但し、命令の大部分の命令コード長より、小さいバ
ス幅でないことが望ましい。
【0394】また、乗算器の内部構成なども種々変更可
能である。16ビット×6ビットを3回繰り返すのでは
なく、16ビット×4ビットを4下位繰り返すようにし
てもよい。命令実行ステートと論理的規模に鑑みて選択
すればよい。
【0395】さらに、飽和演算の指定、乗算器あり/な
しの指定、テストモードの指定方法が種々変更可能であ
ることは言うまでもない。
【0396】さらにまた、乗算器に限らず除算器を内蔵
するものであっても良い。
【0397】また、互換性を維持すべき対象は、前記例
に限定されない。一般的に、CPUの例外処理時に、コ
ントロールレジスタの内容を待避することは行われてお
り、そのほかのCPUについても、本発明を適用して、
互換性を維持しつつ、コントロールレジスタの機能を拡
張することができる。
【0398】さらに、シングルチップマイクロコンピュ
ータのその他の機能ブロックについても何等制約されな
い。
【0399】以上の説明では主として本発明者によって
なされた発明をその背景となった利用分野であるシング
ルチップマイクロコンピュータに適用した場合について
説明したが、それに限定されるものではなく、その他の
データ処理装置にも適用可能であり、本発明は少なくと
も、複数の動作モードを選択して動作するデータ処理装
置に適用することができる。
【0400】
【発明の効果】本題において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
【0401】(1)乗算器をCPUに内蔵することによ
って、アドレッシングモードの増加を最小限にして、か
つ処理性能を低下させずに積和演算を実行可能にするこ
とができる。乗算器による乗算の結果を汎用レジスタC
CRに反映させ、かかる結果を直ちに利用可能にして、
処理速度を高速にすることができる。
【0402】(2)乗算器を取外し可能に(独立して)
設けることによって、乗算器を取外した場合は、積和演
算をサポートしないことによって、容易に下位CPUを
実現し、論理的・物理的規模を縮小し、製造費用の低減
に寄与することができる。
【0403】(3)複数レジスタの退避/復帰命令を持
ち、この組み合せを固定的にすることによって、論理規
模の縮小を図ることができ、また、高速化を図ることが
できる。
【0404】(4)コントロールレジスタの有効/無効
を切り換えることで、スタックの節約と、割込み応答時
間の高速化に寄与することができるとともに、互換性を
維持することができる。
【0405】(5)エミュレータ専用の固定スタックポ
インタを持つことにより、エミュレータをサポートする
ことができ、また、論理規模の増加を最低限にして、エ
ミュレータの設計を容易にすることができ、さらにエミ
ュレータ専用スタックポインタの一部のアドレスを、C
PU外部から与えるようにして、スタックレジスタをリ
ロケータブルにし、マイクロコンピュータのアドレス配
置などに容易に対応することができる。
【図面の簡単な説明】
【図1】本発明の実施例によるマイクロコンピュータの
構成を示すブロック図である。
【図2】本実施例のマイクロコンピュータのシステムコ
ントロールレジスタの構成図である
【図3】本実施例のマイクロコンピュータに用いられる
CPUの命令フォーマットの構成図である。
【図4】本実施例のマイクロコンピュータに用いられる
CPUと乗算器を示すブロック図である。
【図5】本実施例のマイクロコンピュータにおける制御
レジスタの1ビットの構成図である。
【図6】本実施例のマイクロコンピュータにおける制御
信号の設定方法の一例を示すブロックである。
【図7】本実施例のマイクロコンピュータにおける制御
信号の設定方法の一例を示す概略図である。
【図8】本実施例のマイクロコンピュータに用いられる
CPUのレジスタの構成図である。
【図9】本実施例のマイクロコンピュータに用いられる
CPUのレジスタの構成図である。
【図10】本実施例のマイクロコンピュータに用いられ
るCPUのレジスタの使用方法を説明するフロック図で
ある。
【図11】本実施例のマイクロコンピュータに用いられ
るCPUのレジスタのスタックの状態の説明図である。
【図12】本実施例のマイクロコンピュータに用いられ
るCPUの基本動作のタイミング図である。
【図13】本実施例のマイクロコンピュータに用いられ
るCPUの基本動作のタイミング図である。
【図14】本実施例のマイクロコンピュータに用いられ
る乗算器の構成を示すブロック図である。
【図15】本実施例のマイクロコンピュータに用いられ
る乗算器による演算方法の説明図である。
【図16】本実施例のマイクロコンピュータに用いられ
る乗算器のフラグの実現方法の説明図である。
【図17】本実施例のマイクロコンピュータに用いられ
る乗算器のフラグの実現方法の説明図である。
【図18】本実施例のマイクロコンピュータに用いられ
るバススイッチの構成を示すブロック図である。
【図19】本実施例のマイクロコンピュータにおけるM
AC命令の動作のタイミング図である。
【図20】図19に連続する動作のタイミング図であ
る。
【図21】本実施例のマイクロコンピュータにおけるS
TMAC命令およびLDMAC命令の動作のタイミング
図である。
【図22】図21に連続する動作のタイミング図であ
る。
【図23】本実施例のマイクロコンピュータにおいて乗
算器を用いた場合の乗算命令の動作のタイミング図であ
る。
【図24】図19に連続する動作のタイミング図であ
る。
【図25】本実施例のマイクロコンピュータにおいて乗
算器を用いない場合の乗算命令の動作のタイミング図で
ある。
【図26】図25に連続する動作のタイミング図であ
る。
【図27】本実施例のマイクロコンピュータにおける乗
算命令の状態遷移図である。
【図28】本実施例のマイクロコンピュータに用いられ
る演算器の構成を示すブロック図である。
【図29】本実施例のマイクロコンピュータにおける複
数レジスタの退避命令の実行シーケンス図である。
【図30】図29に連続する動作のタイミング図であ
る。
【図31】本実施例のマイクロコンピュータにおける複
数レジスタの復帰命令の実行シーケンス図である。
【図32】図31に連続する動作のタイミング図であ
る。
【図33】本実施例のマイクロコンピュータにおけるR
SEL2入力制御回路の構成を示すブロック図である。
【図34】図33の動作の説明図である。
【図35】本実施例のマイクロコンピュータに適用され
るC言語による変換リストの概略例である。
【図36】本実施例のマイクロコンピュータに適用され
るC言語による変換リストの概略例である。
【図37】本実施例のマイクロコンピュータにおける割
込例外処理の実行シーケンス図である。
【図38】図37に連続する動作のタイミング図であ
る。
【図39】本実施例のマイクロコンピュータにおける例
外処理の状態遷移図である。
【図40】本実施例のマイクロコンピュータにおける例
外処理後のスタックの状態の説明図である。
【図41】本実施例のマイクロコンピュータにおける例
外処理後のスタックの状態の説明図である。
【図42】本実施例のマイクロコンピュータにおけるR
TE命令の実行シーケンス図である。
【図43】本実施例のマイクロコンピュータにおける例
外処理の状態遷移図である。
【図44】本実施例のマイクロコンピュータにおける制
御回路の構成の説明図である。
【図45】本実施例のマイクロコンピュータにおける制
御レジスタの構成図である。
【図46】本実施例のマイクロコンピュータにおける制
御レジスタの構成図である。
【図47】本実施例のマイクロコンピュータにおける制
御レジスタの構成図である。
【図48】本実施例のマイクロコンピュータにおける制
御レジスタの構成図である。
【図49】本実施例のマイクロコンピュータにおける制
御レジスタの構成図である。
【図50】本実施例のマイクロコンピュータにおけるエ
ミュレーションスタックポインタの構成の説明図であ
る。
【図51】本実施例のマイクロコンピュータにおけるブ
レーク割込みシーケンスの実行タイミング図である。
【図52】本実施例のマイクロコンピュータにおけるブ
レーク制御処理の回路構成図である。
【符号の説明】
1…CPU、2…乗算器、3…システムコントローラ
(SYSC)、4…割込コントローラ(INT)、5…
ROM、6…RAM、9…シリアルコミュニケーション
インターフェース(SCI)、13…システムコントロ
ールレジスタ(SYSCR)、14…制御レジスタ(C
PUCR)、21…命令レジスタ(IR)、22…命令
デコーダ・制御回路(CONT)、23…レジスタセレ
クタ(RSEL)、24…ライトデータバッファ(DB
W)、25…リードデータバッファ(DBR)、26、
27…演算器、29…エミュレータスタックポインタ
(EMLSP)、30…プログラムカウンタ(PC)、
31…コンディションレジスタ(CCR)、32…拡張
レジスタ(EXR)、33…アドレスバッファ(MA
B)、34…バススイッチ、38…エミュレーション用
プロセッサ、39…エミュレーション用インタフェー
ス、44…インタフェースケーブル、48…エミュレー
ションメモリ、49…ブレーク制御回路、50…リアル
タイムトレース回路、58…CMOSインバータ回路、
65A〜65C…デコーダ、66A〜66C、71A、
71B、77…選択回路、67…加算器、72A〜72
C…拡張回路、76…算術論理演算回路、78…シフト
回路、79…制御回路、75A、75B、81A〜81
G、86A〜86D…アンド回路、80A、80B、8
2A〜82D…オア回路、83…フリップフロップ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 梶原 久志 茨城県日立市幸町3丁目2番1号 日立エ ンジニアリング株式会社内 (72)発明者 宇枝 晋 茨城県日立市幸町3丁目2番1号 日立エ ンジニアリング株式会社内

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 所定の命令を順次実行するデータ処理装
    置であって、前記命令を実行する実行手段を制御する制
    御手段と乗算手段を設け、前記制御手段と乗算手段とが
    並列動作する第1の命令とともに、前記乗算手段が動作
    する第2の命令を有することを特徴とするデータ処理装
    置。
  2. 【請求項2】 前記第2の命令が第1の命令と同期して
    いることを特徴とする請求項2に記載のデータ処理装
    置。
  3. 【請求項3】 前記第1の命令は積和命令であるととも
    に、前記第2の命令は乗算命令であることを特徴とする
    請求項1または2に記載のデータ処理装置。
  4. 【請求項4】 前記乗算手段は前記制御手段に内蔵され
    ていることを特徴とする請求項1乃至3のいずれか1項
    に記載のデータ処理装置。
  5. 【請求項5】 前記乗算手段は前記制御手段から独立し
    て設けられていることを特徴とする請求項1乃至3のい
    ずれか1項に記載のデータ処理装置。
  6. 【請求項6】 前記制御手段は乗算機能を備えているこ
    とを特徴とする請求項5に記載のデータ処理装置。
  7. 【請求項7】 前記乗算手段の動作の有効/無効を指定
    できる手段を有することを特徴とする請求項1乃至6の
    いずれか1項に記載のデータ処理装置。
  8. 【請求項8】 前記乗算手段の動作の有効/無効を指定
    できる手段をテストモードで設定することを特徴とする
    請求項7に記載のデータ処理装置。
  9. 【請求項9】 前記乗算手段の動作の有効/無効を指定
    できる手段をエミュレーションモードで設定することを
    特徴とする請求項7に記載のデータ処理装置。
  10. 【請求項10】 前記乗算手段の動作の有効/無効を指
    定できる手段がレジスタからなり、このレジスタはエミ
    ュレータに搭載されて、エミュレータの指定に基づいて
    設定することを特徴とする請求項9に記載のデータ処理
    装置。
  11. 【請求項11】 前記乗算手段の1ステップ動作の実行
    を指定する手段を有することを特徴とする請求項を1乃
    至10に記載のデータ処理装置。
  12. 【請求項12】 前記乗算手段の1ステップ動作の実行
    を指定する手段をテストモードで設定することを特徴と
    する請求項11に記載のデータ処理装置。
  13. 【請求項13】 所定の命令を順次実行するデータ処理
    装置であって、前記命令を実行する実行手段を制御する
    制御手段に指定可能な複数のレジスタの組み合わせを固
    定にし、複数のレジスタの退避/復帰命令を有すること
    を特徴とするデータ処理装置。
  14. 【請求項14】 所定の命令を順次実行するデータ処理
    装置であって、前記命令を実行する実行手段を制御する
    制御手段に搭載されるコントロールレジスタの有効/無
    効を切り換える手段を有することを特徴とするデータ処
    理装置。
  15. 【請求項15】前記コントロールレジスタの有効時に
    は、例外処理の遷移時、例外処理からの復帰時に、前記
    コントロールレジスタの待避/復帰を行い、前記コント
    ロールレジスタの無効時には、例外処理の遷移時、例外
    処理からの復帰時に、前記コントロールレジスタの待避
    /復帰を行わないことを特徴とする請求項14に記載の
    データ処理装置。
  16. 【請求項16】 前記コントロールレジスタの有効時に
    は、このコントロールレジスタの設定値が有効であり、
    前記コントロールレジスタの無効時には、このコントロ
    ールレジスタの設定値が無視されることを特徴とする請
    求項15に記載のデータ処理装置。
  17. 【請求項17】 所定の命令を順次実行するデータ処理
    装置であって、前記命令を実行する実行手段を制御する
    制御手段の搭載される固定的なスタックレジスタを設
    け、エミュレーションプログラムへの遷移時、エミュレ
    ーションプログラムからの復帰時に、前記固定的なスタ
    ックレジスタを用いて、ユーザが使用するスタックポイ
    ンタを無視あるいは保持する手段を有することを特徴と
    するデータ処理装置。
  18. 【請求項18】 前記エミュレーションプログラム実行
    状態での、エミュレーション遷移割り込みを禁止する手
    段を有することを特徴とする請求項17に記載のデータ
    処理装置
JP7060797A 1995-03-20 1995-03-20 データ処理装置 Withdrawn JPH08263290A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7060797A JPH08263290A (ja) 1995-03-20 1995-03-20 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7060797A JPH08263290A (ja) 1995-03-20 1995-03-20 データ処理装置

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2004161157A Division JP2004295914A (ja) 2004-05-31 2004-05-31 データ処理装置
JP2004213952A Division JP3759742B2 (ja) 2004-07-22 2004-07-22 データ処理装置

Publications (1)

Publication Number Publication Date
JPH08263290A true JPH08263290A (ja) 1996-10-11

Family

ID=13152672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7060797A Withdrawn JPH08263290A (ja) 1995-03-20 1995-03-20 データ処理装置

Country Status (1)

Country Link
JP (1) JPH08263290A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745320B1 (en) 1999-04-30 2004-06-01 Renesas Technology Corp. Data processing apparatus
US7376819B2 (en) 2002-06-28 2008-05-20 Renesas Technology Corp. Data processor with selectable word length

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745320B1 (en) 1999-04-30 2004-06-01 Renesas Technology Corp. Data processing apparatus
US7376819B2 (en) 2002-06-28 2008-05-20 Renesas Technology Corp. Data processor with selectable word length

Similar Documents

Publication Publication Date Title
US8918627B2 (en) Multithreaded processor with multiple concurrent pipelines per thread
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
EP0901071B1 (en) Methods for interfacing a processor to a coprocessor
JPH09311786A (ja) データ処理装置
JP2001202243A (ja) データ処理装置
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
JP3578883B2 (ja) データ処理装置
JP4073721B2 (ja) データ処理装置
US6078940A (en) Microprocessor with an instruction for multiply and left shift with saturate
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JP3479385B2 (ja) 情報処理装置
JP4800582B2 (ja) 演算処理装置
JPH096614A (ja) データ処理装置
JP2006313561A (ja) データ処理装置
JPH1153186A (ja) プロセッサ
JPH08263290A (ja) データ処理装置
JP3786575B2 (ja) データ処理装置
JP3759742B2 (ja) データ処理装置
US5784634A (en) Pipelined CPU with instruction fetch, execution and write back stages
JP3520372B2 (ja) メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除
JP3740321B2 (ja) データ処理装置
JP2004295914A (ja) データ処理装置
JP3511691B2 (ja) 演算処理装置
JP3839835B2 (ja) データ処理装置及びマイクロコンピュータ
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040330

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040531

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040622

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20040723