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

マイクロコンピュータ Download PDF

Info

Publication number
JP3760093B2
JP3760093B2 JP2000363257A JP2000363257A JP3760093B2 JP 3760093 B2 JP3760093 B2 JP 3760093B2 JP 2000363257 A JP2000363257 A JP 2000363257A JP 2000363257 A JP2000363257 A JP 2000363257A JP 3760093 B2 JP3760093 B2 JP 3760093B2
Authority
JP
Japan
Prior art keywords
instruction
code
data
register
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2000363257A
Other languages
English (en)
Other versions
JP2002163104A (ja
Inventor
直幹 三ッ石
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.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2000363257A priority Critical patent/JP3760093B2/ja
Publication of JP2002163104A publication Critical patent/JP2002163104A/ja
Application granted granted Critical
Publication of JP3760093B2 publication Critical patent/JP3760093B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Description

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

Claims (4)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

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

Family

ID=18834390

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP3760093B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3856737B2 (ja) 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
WO2020199094A1 (zh) * 2019-04-01 2020-10-08 华为技术有限公司 一种指令集的执行方法和计算装置

Also Published As

Publication number Publication date
JP2002163104A (ja) 2002-06-07

Similar Documents

Publication Publication Date Title
US7363466B2 (en) Microcomputer
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
JP4004915B2 (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
JP2006313561A (ja) データ処理装置
US6253305B1 (en) Microprocessor for supporting reduction of program codes in size
JP4073721B2 (ja) データ処理装置
JP3760093B2 (ja) マイクロコンピュータ
JP3786575B2 (ja) データ処理装置
JP3727395B2 (ja) マイクロコンピュータ
JP3841820B2 (ja) マイクロコンピュータ
JP3740321B2 (ja) データ処理装置
JP3839835B2 (ja) データ処理装置及びマイクロコンピュータ
JP4545777B2 (ja) データ処理装置
JP4498338B2 (ja) データ処理装置
JP3539951B2 (ja) データ処理装置
JP3765782B2 (ja) マイクロコンピュータ
JP2002132499A (ja) データ処理装置及び記録媒体
JP3733137B2 (ja) マイクロコンピュータ
JP2001337821A (ja) データ処理装置
JP4382076B2 (ja) データ処理装置
JP2004295914A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050920

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051121

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20051121

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3760093

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090113

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100113

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20210113

Year of fee payment: 15

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

Free format text: PAYMENT UNTIL: 20210113

Year of fee payment: 15

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20210113

Year of fee payment: 15

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term