JP3694531B2 - Riscアーキテクチャを有する8ビットマイクロコントローラ - Google Patents

Riscアーキテクチャを有する8ビットマイクロコントローラ Download PDF

Info

Publication number
JP3694531B2
JP3694531B2 JP52153498A JP52153498A JP3694531B2 JP 3694531 B2 JP3694531 B2 JP 3694531B2 JP 52153498 A JP52153498 A JP 52153498A JP 52153498 A JP52153498 A JP 52153498A JP 3694531 B2 JP3694531 B2 JP 3694531B2
Authority
JP
Japan
Prior art keywords
bit
register
microcontroller
alu
program
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 - Fee Related
Application number
JP52153498A
Other languages
English (en)
Other versions
JP2001504959A (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.)
Atmel Corp
Original Assignee
Atmel 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 Atmel Corp filed Critical Atmel Corp
Publication of JP2001504959A publication Critical patent/JP2001504959A/ja
Application granted granted Critical
Publication of JP3694531B2 publication Critical patent/JP3694531B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7814Specially adapted for real time processing, e.g. comprising hardware timers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Communication Control (AREA)
  • Image Processing (AREA)

Description

発明の分野
この発明は、マイクロコントローラ一般に関し、特に、より少数の命令セットを実行するマイクロコントローラに関する。
背景技術
現在のサブミクロンCMOS技術では、複雑なメモリおよび周辺論理の実現のために十分なシリコン面積を残しつつ、複雑なマイクロコントローラアーキテクチャをチップ上に集積することが可能である。32ビットおよび64ビットのハイエンドRISCマシンにおいて最も一般に使用されている設計アーキテクチャおよび方法論は、低コストの8ビットマイクロコントローラシステムにおいても効率的に利用および応用できる。このようなパワフルでありながらも費用対効果のよいマイクロコントローラにより、システムの全体としての集積度は上昇し続けている。ハードウェアアーキテクチャにおいてより効率的なプログラムを実行することができ、より多くのハードウェア機能を集積することができる。
近年、RISCアーキテクチャは人気を増している。最も目立つのは、アップル・コンピュータ、IBMおよびモトローラが共同開発したパワーPC(登録商標)である。RISCプロセッサを定義する特徴についての合意は存在しないものの、さまざまなRISCアーキテクチャ間には共通した特徴がある。すなわち、(1)ほとんどの命令が1サイクル内に実行される。(2)別個の簡単なロード/ストア命令がしばしば2サイクル内に実行される。(3)命令のデコーディングが典型的にはマイクロコーディングされるのではなくハードワイヤードで構成され、実行時間が高速になっている。(4)ほとんどの命令は固定フォーマットを有しそのため命令のデコーディングが簡素になっている。(5)命令セットが小さくアドレス指定モードが少ない。(6)データ経路が高度にパイプライン化されており、処理の平衡性の程度が高い。(7)より低速のシステムRAMへのおよびそこからの過剰なデータ転送を回避するための大きな高速レジスタの組(レジスタファイルとしても知られる)。
半導体製造業者数社がマイクロコントローラを製造している。たとえばテキサス・インスツルメンツ社は8ビットマイクロコントローラであるTMS370Cx1xシリーズを提供する。これらのマイクロコントローラはRISCアーキテクチャを用いていないが、RAMとしてもまたは汎用レジスタの組としても使用できるRAM(128バイトまたは256バイト)を設けている。モトローラ社は、テキサス・インスツルメンツ社の装置に似た2目的RAMを用いる8ビットマイクロコントローラのMC6805ファミリーを提供する。マイクロチップ・テクノロジー社はマイクロコントローラ、PIC16C5Xファミリーを提供する。これらのマイクロコントローラは、データとプログラム命令とが別個のメモリおよびバスを有する、2つのバスのあるハーバードアーキテクチャを使用する。PIC16C5XはシステムRAMと共有されるレジスタファイルを用いる。PIC16C5Xは1レベル命令パイプライン方式を使用する。つまり、1つの命令が実行されている間に、次の命令がプログラムメモリからプリフェッチされる。RAMはレジスタとしては2倍なので、内部レジスタの組は現実にはない。すべてのメモリはスタティックRAMとして存在するため、レジスタ動作に関係する性能が低下する。
上述のように、設計サイクルが速いことは、マイクロコントローラの設計において重要な関心事である。コンピュータベースのシステムにおいてソフトウェアが果たす役割が重要であることは疑いがない。したがって、マイクロコントローラ設計の利便性は、プログラマーとハードウェア設計者との仕様のインターフェイスすなわちマイクロコントローラの命令セットに直接関係する。いかなる計算可能な機能も合理的な量のプログラムスペース内で実現できなければならないという点で、命令セットは完全でなければならない。命令セットは頻繁に使用される機能が比較的少数の命令で実現可能でなければならないという点で効率的でなければならない。
したがって、アプリケーションソフトウェアの開発者に完全かつ効率的な命令セットを提供するマイクロコントローラ設計を提供することが望ましい。
発明の概要
この発明は8ビットRISCアーキテクチャを有するコントローラである。8ビットのデータバスが、RAMメモリストア、レジスタファイル、汎用8ビット算術論理演算装置(ALU)および状態レジスタの間のデータ経路を提供する。マイクロコントローラはハーバードアーキテクチャを実現し、RAMストアとは別個にプログラムメモリストアを、そして、データバスとは別個にプログラムデータバスを備える。
レジスタファイルは複数の8ビットレジスタを含む。レジスタファイル中のレジスタのいくつかは論理16ビットレジスタを提供するよう組合せることができる。論理16ビットレジスタは効率的なアドレス計算を行ない、データメモリおよびプログラムメモリに対する間接的アドレスポインタとして使用される。データメモリ用であるにせよまたはプログラムメモリ用であるにせよ、16ビットのアドレススペースはプログラムアドレススペースおよびデータアドレススペースの両方を増加させることによって、マイクロコントローラの柔軟性および利便性を著しく向上させる。この発明の好ましい実施例においては、レジスタファイルは3つの個別の論理16ビットレジスタとしてアクセスされ得る(すなわち読出/書込され得る)3対の8ビットレジスタを備える。
さらに16ビットアドレス指定の利点を高めるため、レジスタファイル専用の特別な第2の算術論理演算装置が利用される。第2のALUは16ビットの加算器を含み、論理16ビットレジスタに対し16ビット算術演算を行なう。第2のALUは16ビットの結果を16ビットレジスタにストアし直すことができる。さらに、この16ビットの結果はアドレスとして機能し得る。したがって、汎用8ビットALUの負荷を増やしたりそれによって装置の動作速度を減じたりすることなく、第2のALUの存在によって、効率的な16ビットアドレス計算が行なわれる。
レジスタファイル内に設けられる論理16ビットレジスタのさらなる拡張は、8ビットRAMページングレジスタの使用である。RAMページングレジスタの8ビットは、論理16ビットレジスタの16ビットと論理的に連結されており、論理24ビットアドレスを提供する。この特徴によって、基本的には8ビットの設計である基礎アーキテクチャを持つマイクロコントローラにかつてないアドレス指定範囲が与えられる。特に、ページングレジスタはメモリを64K(64*1024)バイトのページ、256ページのRAMとして形成し、64Kページ各々がページングレジスタにより参照される。この発明の好ましい実施例においては、レジスタファイルにより設けられる3つの論理16ビットレジスタ各々に対し1つずつ3つのページングレジスタがある。
レジスタファイルのレジスタ内の任意のビット位置へおよびビット位置からの1ビットのデータの転送をビットストアが可能にする。好ましい実施例においては、ビットストアは状態レジスタ内に位置付けられる。このビット転送特徴により、これ以外の場合は時間のかかる数多くのレジスタシフト動作を行なう必要なくレジスタのビット位置を直接操作することができる。多くのマイクロコントローラ応用例において典型的であるように、1バイトのデータに含まれる個別のビットは他のビットとは独立した意義を有する。従来の技術のマイクロコントローラの命令セットは典型的にはレジスタの左シフトおよび右シフトのためのシフト命令を含む。したがってレジスタの所定のビット位置のビットへのアクセスは、ビットを右または左のいずれかにシフトさせることにより達成される。これは、原データの保存が必要ならばレジスタの内容をセーブすることが必要となる、破壊動作である。加えて、この動作は、時間がかかり、実現するためにはいくつかのプログラム命令が必要である。この発明のビット転送動作は、任意のビット位置にアクセスするための、より時間効率がよく、使うスペースが少ない手段を提供する。
桁上げ比較命令は、レジスタファイルに含まれる8ビットレジスタを16ビットにエンハンスする。命令セットのこの特徴は、8ビット環境において16ビットの量の比較を実現するための効率的な方法を提供し、それによってさらにこの発明の8ビットマイクロコントローラの利便性を高める。
【図面の簡単な説明】
図1はこの発明のマイクロコントローラの概略的なレイアウトを示す図である。
図2Aから図2Cは図1のマイクロコントローラ内で使用されるレジスタファイルの内部概略図である。
図3Aおよび図3Bは図2Aから図2Cに示すレジスタファイル内のレジスタの構成を示す図である。
図4Aおよび図4Bはこの発明のビットストア機構を示す図である。
図5はこの発明によるページングレジスタを使用する24ビット論理アドレスの形成を示す図である。
図6は図5に示すページングレジスタを組入れた図1のマイクロコントローラの図である。
発明を実施するためのベストモード
図1を参照し、この発明のマイクロコントローラ10が8ビットデータバス12構造のまわりに設計される。データバスは、マイクロコントローラに含まれるさまざまな構成要素に対しデータ経路を提供する。オンボードSRAMは汎用データストアとして役立つ。SRAMとは別個の8ビットレジスタファイル(REGISTER FILE)がマイクロコントローラ用の高速8ビットメモリストアの組を提供する。
レジスタ内にストアされるデータに対して算術計算を行なうために、汎用算術論理演算装置ALU−1がレジスタファイルに結合される。ALU−1の出力は8ビットデータバス12および状態レジスタ(STATUS REGISTER)の両方に結合される。状態レジスタに含まれるさまざまな状態ビットは、ALU−1の結果に応じてセットされる。状態レジスタに含まれる典型的なビットは、キャリーフラグ、ゼロフラグ、負フラグ、2つの補数のオーバフローインジケータ、負フラグと2つの補数のオーバフローフラグとの排他的論理和に等しい符号ビットおよび割込許可ビットを含むが、これらに限定されない。状態レジスタは、状態ビットへの読出/書込アクセスを可能にするよう、データバス12に結合される。データバス12に結合される付加的な構成要素は、サブルーチンの呼出/リターンおよび割込処理のために使用されるスタックポインタ(STACK POINTER)、タイマ、割込回路、タイミングおよび制御回路、EEPROM、およびUARTを含む。ポートドライバ(PORT DRIVERS)により駆動されるI/Oデータレジスタ(I/O DATA REGISTERS)は、マイクロコントローラに対するI/O経路18を提供する。
直接アドレスバス16は、プログラムの実行中にSRAMロケーションおよびレジスタファイルへの直接アクセスを提供する。間接アドレスバス14は間接アドレス指定を行なう。間接アドレスバス14はレジスタファイルからアドレスを受取るための手段、すなわち、アドレスをSRAMまたはプログラムカウンタ(PROGRAM COUNTER)に伝送するためレジスタファイルを間接アドレスバス14に結合するバスインターフェイス14′を含む。
マイクロコントローラ10の命令実行構成要素は、プログラムメモリ(PROGRAM MEMORY)に結合されるプログラムカウンタを含む。プログラムカウンタにより指定されたプログラム命令はプログラムメモリからフェッチされ命令レジスタ(INSTRUCTION REGISTER)に与えられる。命令レジスタから、プログラム命令が命令デコーダ(INSTRUCTION DECODER)によりデコードされさまざまな制御信号が発生される。制御信号は、制御ライン(CONTROL LINE)によってマイクロコントローラ10の他の構成要素へ運ばれ、デコードされたプログラム命令によって動作が行なわれる。命令実行構成要素を結合するバスは集合的にプログラムバスと呼ばれる。データストアとは別個のプログラムメモリストアの配置およびデータバス12とは別個のプログラムバスの使用は、一般にハーバードアーキテクチャと呼ばれる。
前述のように、レジスタファイルは複数の8ビットレジスタからなる。この発明の好ましい実施例においては、32個の8ビットレジスタがある。しかし、レジスタファイル内のレジスタがより多くてもまたはより少なくてもマイクロコントローラが同様に良好に動作するであろうということが指摘される。汎用算術論理演算装置ALU−1は8ビットの演算子であり、レジスタファイルから選択されたレジスタの間で8ビットの算術演算を行なう。ALU−1の出力はレジスタファイル内のレジスタへとデータバス12を介して送り返され得る。以下にさらに詳細に説明するように、8ビットレジスタのいくつかは対にして組合されることができ、それによって論理16ビットレジスタが提供される。好ましい実施例においては、図1に示すように、3対の8ビットレジスタが3つの論理16ビットレジスタX、Y、Zを提供する。
図2Aを参照し、この発明のレジスタファイルは、32個の8ビットレジスタR0からR31を備えるレジスタ回路100を含む。以下に説明するように、レジスタ回路100は最後の6つのレジスタR26からR31を3対の論理16ビットレジスタR27/R26(X)、R29/R28(Y)、R31/R30(Z)として準備できる。2つの16ラインデータバス102および104からなる共通バスインターフェイスは、それぞれレジスタに対しデータ入力バスおよびデータ出力バスを提供する。
レジスタファイルの備える16ビットレジスタはSRAMおよびプログラムスペースのアドレス指定のための間接アドレスレジスタポインタとして使用される。この場合、ポストインクリメントおよびプリデクリメントなどの特定の16ビット算術演算が、アドレス計算のために必要とされる。16ビットレジスタに対して16ビットの算術演算を行なうためにALU−1を使用することも可能であるが、このような動作はALU−1が8ビット設計であるためかなり非効率的であろう。
したがって、図2Aに示すレジスタファイルは、論理16ビットレジスタにかかわる16ビット計算を容易にするためレジスタファイルに専用される第2の算術論理演算装置ALU−2を含む。算術論理演算装置ALU−2は16ビット設計であり、間接アドレスポインタに典型的に必要とされる特定の演算を行なうようカストマイズされる。ALU−2は、レジスタファイルのデータ出力バス104により与えられる第1の入力を有する。ALU−2はセレクタ110により与えられる第2の入力を有する。セレクタ110は、3つの選択肢の中から1つの数値を選択する。すなわち、数値−1、数値+1および定数Vである。ALU−2の出力はデータ入力バス102を通じてX、Y、Zレジスタへと送り返され、レジスタの内容の更新が可能にされる。mux114はレジスタファイルのバスインターフェイス14′に結合される。mux114の1入力はALU−2の出力に結合され、一方、muxの第2の入力はデータ出力バス104に結合される。この構成によって、mux114は、ALU−2またはレジスタ回路100のいずれかから選択的にデータを出力することができる。
以下に挙げる制御信号は、上に説明したレジスタファイルの特徴である動作に関係する。これらの信号は、ADD ENABLE、SUB ENABLE、MUX SELECT、V SELECT、V5〜V0、INCR SELECT、およびDECR SELECTを含む。これらの信号は、命令デコーダ(INSTRUCTION DECODER)から発するさまざまな制御ライン(CONTROL LINE)により運ばれる。これらの制御信号に関してのレジスタファイルの動作を、この発明のマイクロコントローラのプログラム命令に関して以下に説明する。
図2Aに示すレジスタ回路100の内部構成を図3Aのブロック図に示す。この発明の一実施例において、32個のレジスタR0〜R31が設けられ、その各々が8ビットの出力ライン121の組と8ビットの入力ライン123の組とを有する。実際に設けられるレジスタの数はこの発明の本質部分ではない。1組のラッチ120〜126が、レジスタへのおよびレジスタからのデータを選択的にラッチするよう結合される。これらのラッチは、図2Aに示す共通バスインターフェイス102、104の入力データビットbi15…bi0および出力データビットbo15…bo0を与える。8ビットレジスタR0〜R31の間でのデータ転送は、それぞれビットbi7−bi0およびbo7−bo0としてデータ入力ラッチ122およびデータ出力ラッチ126を通じて行なわれる。
論理16ビットレジスタX、Y、Zについては、付加的なデータ入力ラッチおよびデータ出力ラッチ120および124が設けられる。Xレジスタはレジスタ対R27:R26からなり、Yレジスタはレジスタ対R29:R28からなり、Zレジスタはレジスタ対R31:R30からなる。データ出力ラッチ120および122は、共通バスインターフェイス102および104の出力ビットbo15〜bo0に16ビットレジスタの1つの内容をラッチし、一方、データ入力ラッチ124および126は入力ビットbi15〜bi0に現われるデータをラッチする。データ出力ラッチ120は、上位バイトレジスタR27、R29およびR31の出力ライン121へ結合される。同様に、データ出力ラッチ122は下位バイトレジスタR26、R28およびR30の出力ライン121に結合される。データ入力ラッチ124および126は同様の態様で結合され、すなわち、データ入力ラッチ124は上位バイトレジスタR27、R29およびR31の入力ライン123に結合され、一方データ入力ラッチ126は下位バイトレジスタR26、R28およびR30の入力ライン123に結合される。
以下の制御信号は、レジスタ回路100の上に説明した特徴を持つ動作に関連する。信号は、DATA16_IN、DATA16_OUT、DATA8_IN、DATA8_OUT、R0 SELECT〜R31 SELECT、X SELECT、Y SELECT、およびZ SELECTを含む。これらの制御信号に関連してのレジスタ回路100の動作を、この発明のマイクロコントローラのプログラム命令に関連して以下に説明する。
次にこの発明の8ビットマイクロコントローラの他の特徴について説明する。レジスタの任意のビット位置にロードまたはストアするための従来技術はレジスタのシフト動作および/またはレジスタのマスキング動作を必要とし、そのためにコードの効率が落ち、コードサイズが大きくなっていったことが、上述の説明から思い出される。さらにこれは破壊動作であって、もし原データを保存したいのであればレジスタの内容をセーブする必要がある。
この発明のレジスタファイルの内部構成の他の図について図4Aを参照し、レジスタR0〜R31からビットへの任意のアクセスを提供するレジスタファイル内の付加的な構成要素について詳細に説明する。論理的には各レジスタは1:8マルチプレクサ130を有し、マルチプレクサの8つの出力は各々レジスタ内のビットに結合される。したがって、ビットをmux130の1ビット入力にラッチし、mux入力をその8個の出力の1つの転送することによって、レジスタ内の任意のビット位置にビットをロードすることができる。各レジスタはさらに、8:1mux132を有し、その8個の入力は各々レジスタ内のビットに結合される。したがって、所望のビットに対応するmuxの入力を選択することで、レジスタの任意のビット位置をコピーできる。
続いて、レジスタファイルは論理的に1:32mux134と32:1mux136とを含む。まず1:32mux134について考える。このmuxは8ビットデータバス12からの1ビット入力を有する。入力は32個の出力のいずれか1つに転送できる。32個の出力の各々は1:8mux130の1つの入力に結合され、それによって、データバス12からレジスタファイル内のレジスタR0からR31のうちいずれかの中のいずれかのビット位置への経路が提供される。次に1:32mux136について考える。8:1mux132の各々の出力はmux136の32個の入力の1つに結合される。mux136の1ビット出力は、データバス12に結合され、これによって、レジスタR0〜R31のいずれかの中のいずれかのビット位置からデータバスへのデータ経路が提供される。
図4Aに示す状態レジスタは、ビットを転送するためのTビットとして知られる1ビットのデータを受取りかつ保持するためのビット位置を含む。状態レジスタは8ビットデータバス12に結合され、そのさまざまなビットへの読出/書込アクセスを提供する。特に、Tビット位置は、データバスを通じて32:1mux136から1ビットのデータを受取るかまたはデータバスを通じて1:32mux134へ1ビットのデータを転送するかのいずれかのために、1:32mux134および32:1mux136に関連して制御される。
以下の制御信号は、図4Aに示すレジスタファイルの特徴を持つ動作に関連する。これらの信号は、BST REGISTER SELECT、BST BIT SELECT、BLD REGISTER SELECT、およびBLD BIT SELECTを含む。これらの制御信号に関連してのレジスタファイルの動作を、以下にこの発明のマイクロコントローラのプログラム命令に関連して説明する。
この発明の8ビットマイクロコントローラの他の特徴は、図5に示すようなエンハンスされたアドレス指定能力である。図示されるのは、レジスタファイルの外部にある3つの付加的なレジスタ、すなわちRAMページングレジスタ、RAMPX、RAMPY、RAMPZである。RAMページングレジスタは、従来の技術の8ビットマイクロコントローラと比較してはるかに広いアドレス指定範囲を提供するよう、対応する論理16ビットレジスタX、Y、Zに関連して動作する。開示される実施例においては、RAMページングレジスタは8ビットレジスタである。しかし、これは重要な点ではなく、この発明が異なったビット長を有するレジスタにおいても容易に作動し得ることは明らかとなるであろう。
図5を参照し、どのようにアドレスが補強されるかの概略図を示す。RAMページングレジスタは各々それと対応する16ビットレジスタに連結される。たとえば、RAMページングレジスタRAMPXの8ビットはXレジスタの16ビットと連結され、24ビットのアドレスを形成する。好ましい実施例においては、RAMPXの8ビットは24ビットの論理アドレスの上位ビットX[23…16]として役立ち、一方Xレジスタの16ビットは24ビットの論理アドレスの下位ビットX[15…0]となる。この構成によって作られるメモリのモデルは、64Kバイト(64*1024)ページの組であり、64Kページは各々8ビットのRAMページングレジスタによりアクセスされ全部で256ページである。
次にこの発明の開示される実施例の環境におけるRAMページングレジスタの実施例の説明について図6を参照する。RAMページングレジスタRAMPX、RAMPY、RAMPZは各々、8ビットデータバス12に結合され、プログラムの実行の間8ビットページ参照を受ける。(たとえば3:1マルチプレクサなどの)セレクタ11は、RAMページングレジスタの各々から8ビットを受取り、RAMページングレジスタの選択された1つの8ビットをセレクタの出力に転送する。レジスタファイルのバスインターフェイス14′の16ビットはセレクタ11からの8ビットと連結され、24ビットのアドレスを形成し、これは間接アドレスバス14によって運ばれる。
この発明の拡張された24ビットアドレス指定により、24ビットアドレスはRAMの16M(16*1024*1024)をアドレス指定することができるので、外部に設けられるRAM(図示せず)を使用することが可能になる。外部24ビットアドレスバス20および8ビットデータバス22はマイクロコントローラと外部RAM(図示せず)との間のデータアクセスのために含まれる。この発明により、レジスタファイル、オンボードSRAMおよび外部RAMは同じデータアドレススペースを占める。レジスタファイルは第1の32アドレスロケーションを占め、オンボードSRAMは次のNアドレスロケーションを占めるが、NはSRAMの大きさである。残りのアドレススペースは外部RAMにより設けられる。したがって、00から(N−1)のアドレス範囲がオンボードメモリ(レジスタファイルおよびSRAM)のメモリロケーションをマップし、一方残りのアドレス範囲Nから(16M−1)が外部RAMのメモリロケーションをマップする。たとえば、もしオンボードメモリが全部で64Kバイトを有するのであれば、オンボードアドレス範囲は$00から$FFFF(「$」は16進表現を意味する)となり、一方外部RAMのアドレス範囲は$10000から$FFFFFFとなる。オンボードメモリの量はこの発明の利便性または動作性に影響することなく変えることができ、実際のメモリの量は利用可能なシリコン面積、素子のジオメトリおよびデザインルールなどの設計上の基準に依存することが注意される。
オンボードメモリおよび外部RAMが所与のアドレスについて正しくアクセスされることを確実にするため、内部アドレスバス14または外部アドレスバス20のいずれかにアドレスを転送するため第2のセレクタ13が使用される。好ましい実施例においては、セレクタ13は1:2muxであり、単一のMUX入力がその2つの出力の一方に転送される。ここで、単一の入力はセレクタ11から出る24ビットのアドレスラインである。セレクタ13の出力の一方はアドレスバス14に結合され、他方の出力は外部アドレスバス20に結合される。オンボードメモリのアドレス範囲内のアドレスを検出すると、セレクタ13はその入力をアドレスバス14へ転送させられる。24ビットアドレスの下位16ビット[15…0]のみがアドレスバス14に転送される。逆に、外部メモリのアドレス範囲内のアドレスを検出すると、セレクタ13はその入力を外部アドレスバス20へ転送するであろう。いくつかの検出機構のうち任意のものが使用できるが、そのいずれも通常の技量を有する設計者の能力内にある。たとえば、24ビットアドレスの上位8ビット(ビット[23…0])をともに論理和し、その結果をセレクタ13を制御するために使用してもよい。もし論理和演算の結果がFALSEであり、そのアドレスがオンボードメモリのアドレス範囲内にあることを意味すれば、セレクタ13はその入力を内部アドレスバス14へ転送しなければならない。もし論理和演算の結果がTRUEでありそのアドレスが完全な24ビットアドレスであることを意味すれば、セレクタ13はその入力を外部アドレスバス20へ転送しなければならない。
この発明の8ビットマイクロコントローラの特徴に関連するハードウェアの詳細について説明してきたが、次にマイクロコントローラの命令セットについて説明する。まず、この発明のマイクロコントローラは、算術論理演算命令、分岐命令、データ転送命令ならびにビットテストおよびビットセット命令を含むすべてのマイクロコントローラに典型的なプログラム命令をサポートする。さらにこの発明のマイクロコントローラはここまでに説明し、図に示す回路によって可能にされる命令を提供する。以下はこれらの命令の概要である。
Figure 0003694531
Figure 0003694531
Figure 0003694531
Figure 0003694531
Figure 0003694531
図1においては、デコードされた命令を行なうために必要とされる動作を行なうため、マイクロコントローラのさまざまな構成要素に制御ラインにより運ばれる制御信号が命令デコーダにより生成されたことを想起されたい。次に上述の命令に関連する制御信号の上述の図に示した回路に対する効果に関連して、これらの制御信号について説明する。
まず、図4Bに示すビット転送命令(BST、BLD)について考える。BSTおよびBLD命令は各々、特定の命令を特定するOP_CODEフィールドおよび2つのオペランドを含む。すなわちレジスタオペランドRdおよびビット位置オペランドbである。これらの命令が命令デコーダ(図1)によりデコードされるとき、レジスタ選択制御信号およびビット選択制御信号が発生されるであろう。これらの制御信号は所望のビットにアクセスするよう、mux132−136を制御する。BST REGISTER SELECT制御信号は、レジスタオペランドRdに基づいてBST命令のために生成される。同様に、BST BIT SELECT制御信号はビット位置オペランドbに基づいて生成される。同様に制御信号がBLD命令についても生成される。
図4Bに示すように、BST BIT SELECT制御信号は、レジスタR0〜R31の各々の8:1mux132を動作させ、各レジスタから32:1mux136へと指定されたビットを転送する。BST REGISTER SELECT制御信号は32ビットのうち指定された1ビットを選択するよう32:1muxを動作させ、それによって選択されたレジスタの選択されたビットを8ビットデータバス12へ転送し、これは次に状態レジスタのTビット位置へとラッチされる。
BLD命令に対応する制御信号は同様の態様でmux130および134を動作させる。Tビットにストアされるビットはデータバス12を介して32:1mux134へ転送される。次にビットはBLD REGISTER SELECT制御信号の制御下で1:8mux132の1つへと転送され、ビットは指定されたレジスタへ送られる。次にBLD BIT SELECTはビットを指定されたレジスタの正しいビット位置へと出力する。
次に、16ビットの算術演算ADIWおよびSBIW、すなわち、それぞれ論理16ビットレジスタX、Y、Zの1つと定数値との加算および減算について考える。図2Bをまず参照し、ADIWおよびSBIW命令の図は、OP_CODEフィールドおよび定数値オペランドKが、命令デコーダ(図1)によるデコーディングに際し制御信号を生成することを示す。OP_CODEフィールドはADD ENABLEまたはSUB ENABLE制御信号のいずれかを生成し、これによってALU−2がその2つの入力において適切な算術演算を行なう。定数値オペランドKは制御信号V5〜V0を生成し、これらはセレクタ110のV入力に与えられる。制御信号V5〜V0はADIWおよびSBIW命令のオペランドにおいて指定される定数Kの2進形を表わす。この発明の開示される実施例においては、定数Kは6ビットのデータである。さらに、定数値オペランドKはVSELECT制御信号を生成し、これはセレクタ110にALU−2の入力へ定数Vを出力させる。ALU−2への他入力は以下に説明するように、データ出力バス104介してレジスタファイル内の16ビットレジスタX、Y、Zの選択された1つからくる。ALU−2の出力はデータ入力バス102を通じてレジスタファイルへと送り返され、選択された16ビットレジスタにストアされ、こうして演算が完了する。
次に、図3Aおよび図3Bを参照し、ADIW命令およびSBIW命令のために命令デコーダにより生成される制御信号について考える。レジスタのオペランドLは適当なレジスタ対が指定される論理16ビットレジスタへの読出/書込アクセスを行なうことを可能にさせるX、YまたはZ SELECT制御信号を生成する。X SELECT信号はレジスタR26およびR27を可能化し、YSELECT信号はレジスタR26およびR27を可能化し、Z SELECT信号はレジスタR30およびR31を可能化する。OP_CODEフィールドは、DATA16_IN ENABLE制御信号およびDATA16_OUT ENABLE制御信号を生成する。DATA16_OUT ENABLE制御信号は、データ出力ラッチ120、122に、選択された論理16ビットレジスタ内に含まれるデータをデータ出力バス104へ出力させ、データ出力バス104は上述のようにこれをALU−2へ送る。これに対して、DATA16_IN ENABLE制御信号は、データ入力ラッチ124、126に、ALU−2の出力で生成された結果としての和または差を入力させる。
次に論理16ビットレジスタX、Y、Zに関連するロードおよびストア命令(LD、ST)について説明する。まず、16ビットレジスタのプリデクリメントまたはポストインクリメントのいずれかがあるLDおよびST動作の形について考える。図2Cを参照し、更新を伴うロード/ストア動作のためのOP_CODEフィールドは、更新がプリデクリメントであるかまたはポストインクリメントであるかに依存して、DECR SELECTまたはINCR SELECT制御信号のいずれかを発生する。DECR SELECT制御信号およびINCR SELECT制御信号は、適当な「−1」または「+1」の値を出力するようにセレクタ110を動作させ、これらの値はALU−2の一入力へ送られる。ALU−2への他入力はレジスタファイル内の16ビットレジスタX、Y、Zの選択される1つからデータ出力バス104を介して送られる。ADD ENABLE信号が、ALU−2が値「−1」または「+1」を選択された16ビットレジスタの内容に付け加えるよう、発生される。MUX SELECT制御信号は、レジスタファイルのバスインタフェース14′へアドレスを出力するようmux114を動作させる。MUX SELECT制御信号のタイミングは、その命令がプリデクリメントであるかまたはポストインクリメントであるかに依存して変化する。もし、プリデクリメントが所望であれば、MUX SELECT制御信号はALU−2がその動作を行なった後に生成され、したがって、mux114はALU−2による動作の前にALU−2の出力をバスインタフェース14′へ転送できる。他方、もしポストインクリメントが所望であれば、MUX SELECTはmux114にデータ出力バス104からバスインタフェース14′へ転送させる。いずれの場合にも、ALU−2の出力はデータ入力バス102を介してレジスタファイルへと送り返され、それによって選択された16ビットレジスタが更新され得る。
次に図3Aおよび図3Bを参照し、更新を伴うLDおよびST命令がX、Y、Z SELECT制御信号ならびにDATA16_IN ENABLEおよびDATA16_OUT ENABLE制御信号を発生させることがわかる。これらの信号は、ADIW命令およびSBIW命令に対するのと同様の態様で機能する。というのは、いずれの場合にも16ビットレジスタの内容が更新されるからである。これらの制御信号に加えて、LDおよびST命令のレジスタオペランドRdをデコードした結果として、R0〜R31 SELECTおよびDATA8_INおよびDATA8_OUT制御信号が生成される。ロード命令については、DATA8_IN制御信号が16ビットレジスタにより参照されるデータをラッチするよう下位バイトデータ入力ラッチ126を動作させ、これは次に、R0〜R31 SELECT制御信号により選択される8ビットレジスタへロードされる。ストア命令については、DATA8_OUT制御信号はR0〜R31 SELECT制御信号により選択される8ビットレジスタの内容を出力するよう下位バイトデータ出力ラッチ122を動作させ、これは次に16ビットレジスタにより指し示されるメモリロケーションへストアされる。
次に更新を伴わないLDおよびST命令の形について、すなわち、プリデクリメントまたはポストインクリメント演算を伴わないLDおよびST命令の形について考える。図2Cを参照し、選択される16ビットレジスタの更新が行なわれないので、16ビットレジスタを(データ出力バス104を介して)間接アドレスバス14へ転送するためにMUX SELECT制御信号のみが必要である。図3Bを参照し、16ビットレジスタの更新が行なわれないためDATA16_IN ENABLE信号が必要とされない点を除いては、更新を伴うLDおよびST命令に対して生成されるものと同じ制御信号が生成される。
ロードおよびストア動作の第3の形は、選択される16ビットレジスタへ加えられる変位qを利用する。これらがLDDおよびSTD命令である。図2Bからわかるように、LDDおよびSTD命令はADIWおよびSBIW命令ときわめて類似した態様で動作する。変位値qは制御信号V5〜V0により表わされる。ADD ENABLE制御信号はALU−2に選択された16ビットレジスタへ変位を加算させる。しかし、ADIWおよびSBIWとは異なり、LDDおよびSTD命令は計算された値をアドレスとして間接アドレスバス14へ出力することを許可するMUX SELECT信号を生成する。次に図3Aおよび図3Bを参照し、LDDおよびSTD命令は2つの例外を除いては本質的にLDおよびST命令と同じ制御信号を生成する。すなわち、16ビットレジスタの更新が行なわれないためDATA16_IN ENABLEは発生されず、LDDおよびSTD命令はYおよびZレジスタに限定される。
図3Bに示すような飛び越し命令IJMP、ICALLは、単純に、Zレジスタの選択およびZレジスタの内容の間接アドレスバス14への出力のためのDATA16_OUT ENABLE制御信号の発生に関係する。図2B中、IJMPおよびICALL命令はmux114を動作させるためMUX_SELECT制御信号を発生し、これによって、レジスタファイルのデータ出力バス104からアドレスバス14へZレジスタの内容を転送することができる。次に、実行制御のフローを変えるためアドレスがPCカウンタへロードされる。
図3Bに示す桁上げ比較CPC命令は、命令のレジスタオペランドRd、Rrの各々に対するR0−R31 SELECT制御信号の1つの発生に単純に関係する。DATA8_OUT制御信号は選択される8ビットレジスタの内容を出力する。
付加的な制御信号(図示せず)が発生され、8ビットALU−1に、Rrレジスタの内容と桁上げビットとの和をRdレジスタの内容から減算させる。演算の結果はセーブされない。しかし、演算の結果によって状態レジスタ内のフラグがセットされる。
CPC命令は、8ビット環境において16ビット能力を与えることによって、マイクロプロセッサの8ビットアーキテクチャをエンハンスする。8ビット演算による桁上げ結果は16ビットの効果をもたらすよう続く8ビットCPC演算において使用され得る。たとえば、以下のように16ビット比較を実現できる。
Figure 0003694531
「cp」命令は桁上げビットに影響し、桁上げビットは次に続く「cpc」命令において使用される。レジスタ対R3/R2およびR1/R0は2つの16ビット値のためのホルダとして有効に働く。
これで、この発明のマイクロコントローラに関して開示される命令および論理回路に関連する制御信号の説明は終わりである。上述の命令の実行に関連する制御信号はこれらの信号のみではないことが理解される。マイクロコントローラの他の素子を制御するために付加的な信号が生成される。たとえば、メモリアクセスに関係する上述の命令のいくつかのためにアドレスおよび読出/書込ストローブが発生される。さらに、制御信号の発行を適切に同期させるため実行タイミング制御が必要とされる。しかし、集積コンピュータ回路分野の当業者は、過度の実験を行なわずとも、この発明を実施するため必要な付加的な制御信号およびこれらの信号の必須タイミングを判断することができる。

Claims (20)

  1. マイクロコントローラであって、
    プログラムバスと、
    プログラムをストアするためのプログラムストアと、
    前記プログラムバスを介して前記プログラムストアに結合されるプログラム実行ユニットと、
    前記プログラムバスとは別個の8ビットデータバスと、
    前記8ビットデータバスに結合され、前記プログラムストアとは別個のデータストアと、
    前記8ビットデータバスに結合されるレジスタファイルとを含み、前記レジスタファイルは複数の8ビットレジスタを有し、前記レジスタファイルはさらに前記8ビットレジスタのうち2つを単一の論理16ビットレジスタとしてアクセスされるように組合せるための手段を有し、前記マイクロコントローラはさらに、
    前記8ビットレジスタのうちの2つの内容を受取るよう結合される汎用ALUを含み、前記汎用ALUは前記8ビットデータバスに結合される1出力を有し、前記マイクロコントローラはさらに、
    前記プログラム実行ユニットを、プログラムの実行の間に前記データストアおよび前記レジスタファイルに直接アクセスするよう結合する直接アドレスバスと、
    プログラムの実行の間に前記レジスタファイルに前記データストアへの間接データアクセスを提供する間接アドレスバスとを含み、
    前記レジスタファイルはさらに前記組合せるための手段を通じてアクセスされる論理16ビットレジスタに対し算術演算機能を行なうため、前記組合せるための手段に結合される専用ALUを含み、
    前記間接アドレスバスは前記組合せるための手段からの16ビット値を受取るためのアドレス受信手段を有し、それによって16ビットの間接アドレス指定が行なわれる、マイクロコントローラ。
  2. 前記レジスタファイルはさらに定数値−1、定数値+1またはプログラムにより発生される値を出力するためのセレクタ手段を含み、前記専用ALUは、前記組合せるための手段を通じてアクセスされる論理16ビットレジスタで算術演算を行なうため前記セレクタ手段からの出力を受取るよう結合される、請求項1に記載のマイクロコントローラ。
  3. 前記2つの8ビットレジスタのうち一方は前記論理16ビットレジスタの下位バイトであり、前記2つの8ビットレジスタの他方は前記論理16ビットレジスタの上位バイトである、請求項2に記載のマイクロコントローラ。
  4. ページングレジスタと、前記ページングレジスタの内容および前記組合せるための手段により与えられる16ビットアドレスからアドレスを形成するための、前記アドレス受信手段に結合されるアドレス形成手段とをさらに含む、請求項1に記載のマイクロコントローラ。
  5. 前記ページングレジスタは8ビットレジスタであり、前記ページングレジスタは前記8ビットデータバスに結合され、前記ページングレジスタへの値のロードで各々64Kバイトの256のページの1つが指定される、請求項4に記載のマイクロコントローラ。
  6. 単一のビットを保持するためのビットストアと、前記ビットストアと前記レジスタファイルから選択されたレジスタ内のビットロケーションとの間でビットを転送するための手段とをさらに含む、請求項1に記載のマイクロコントローラ。
  7. 前記8ビットデータバスに結合される状態レジスタをさらに含み、前記状態レジスタは複数のビット位置を有し、複数のビット位置の1つは前記ビットストアとして役立つ、請求項6に記載のマイクロコントローラ。
  8. プログラムバスと、プログラムストアと、前記プログラムバスを介して前記プログラムストアに結合されるプログラム実行ユニットと、8ビットデータバスと、前記データバスに結合され、前記プログラムストアとは別個のデータストアと、前記データバスに結合される一出力を有する汎用8ビットALUと、前記プログラム実行ユニットを前記データストアに結合する第1のアドレスバスとを有する8ビットマイクロコントローラであって、
    複数の8ビットレジスタのうち2つに対して8ビットの算術演算を行なうよう、前記汎用8ビットALUによりアクセス可能な前記複数の8ビットレジスタを有するレジスタファイルを含み、前記レジスタファイルはさらに、前記レジスタの2つを16ビットレジスタとしてアクセスを行なうためのレジスタ手段を有し、前記レジスタファイルはさらに16ビットALUと値セレクタとを有し、前記16ビットALUは前記レジスタ手段から16ビットのデータを受取り、前記値セレクタから数値を受取り、それらによって計算を行なうよう結合され、前記マイクロコントローラはさらに、
    前記16ビットALUから計算の結果を受取るための第2のアドレスバスを含み、前記第2のアドレスバスは前記レジスタファイルと前記データストアとの間に結合され、前記計算の結果は前記データストア内のメモリロケーションのアドレスとして使用される、8ビットマイクロコントローラ。
  9. 前記値セレクタは、定数値−1、定数値+1またはプログラムにより発生された数値を与える、請求項8に記載の8ビットマイクロコントローラ。
  10. 前記レジスタファイルは、前記16ビットALUの前記計算の結果または前記レジスタ手段からの16ビットのデータのいずれかを前記第2のアドレスバスへ転送するための手段を含む、請求項9に記載の8ビットマイクロコントローラ。
  11. ページングレジスタと、前記ページングレジスタの内容および前記レジスタ手段から与えられる16ビットアドレスに基づいて、拡張されたアドレスを形成するための手段とをさらに含む、請求項10に記載の8ビットマイクロコントローラ。
  12. 外部アドレスバスと、前記拡張されたアドレスを前記外部アドレスバスおよび前記第2のアドレスバスへ選択的に結合するための手段とをさらに含む、請求項11に記載の8ビットマイクロコントローラ。
  13. 前記ページングレジスタは8ビットレジスタである、請求項12に記載の8ビットマイクロコントローラ。
  14. ビットストアと、前記ビットストアと前記レジスタファイルのレジスタ内のビットロケーションとの間で1ビットのデータを転送するための手段とをさらに含む、請求項12に記載の8ビットマイクロコントローラ。
  15. 前記8ビットデータバスに結合される状態レジスタをさらに含み、前記ビットストアは前記状態レジスタ内のビットロケーションである、請求項14に記載の8ビットマイクロコントローラ。
  16. ハーバードベースのアーキテクチャを有する8ビットマイクロコントローラであって、
    プログラム命令をデコードし、それによって制御信号を発生するためのプログラム命令デコーダと、
    データストアと、
    複数の8ビットレジスタと、前記8ビットレジスタのうち2つに論理単一16ビットレジスタとしてアクセスするためのレジスタ手段と、「+1」値または「−1」値のいずれかを出力するための数値セレクタと、前記数値セレクタの出力を前記論理単一16ビットレジスタに加算するための16ビット加算器とを有するレジスタファイルと、
    前記8ビットレジスタのうち2つの内容を受取りそれらに対して算術演算を行なうよう結合される8ビットALUと、
    前記8ビットレジスタの1つからビットを受取り、ビットを前記8ビットレジスタの1つにコピーするための、転送ビットを有する状態レジスタと、
    前記8ビットレジスタの1つと前記状態レジスタの前記転送ビットとの間でビットを転送するためのビット転送手段と、
    前記データストア、前記レジスタファイル、前記8ビットALU、前記状態レジスタおよび前記ビット転送手段をともに結合させる8ビットデータバスと、
    前記データストア内のメモリロケーションにアクセスするよう、前記レジスタファイルを前記データストアに結合するアドレスバスと、
    前記制御信号を前記レジスタファイル、前記8ビットALU、前記状態レジスタおよび前記ビット転送手段へ送るための制御ラインとを含む、8ビットマイクロコントローラ。
  17. 各々インクリメントコードまたはデクリメントコードを指定する数値演算コードおよび前記8ビットレジスタの対の1つを指定するレジスタ対演算コードを有するプログラム命令の第1のサブセットを含み、前記命令デコーダは、前記レジスタ対演算コードおよび前記数値演算コードに応答して第1の制御信号を発生することを特徴とし、これによって、前記レジスタ手段は前記レジスタ対へ16ビットレジスタとしてアクセスさせられ、前記数値セレクタは「+1」または「−1」を出力させられ、前記16ビット加算器は前記セレクタの前記出力を前記16ビットレジスタへ加算させられる。請求項16に記載のマイクロコントローラ。
  18. 前記数値セレクタは、定数値を受取り前記定数値を出力するための手段を含み、プログラム命令の前記第1のサブセットのいくつかは数値を指定する数値演算コードを有し、前記命令デコーダはさらに、数値を指定するこれらの前記数値演算コードに応答して第2の制御信号を発生することを特徴とし、前記第2の制御信号は前記数値セレクタにより受取られる前記数値の2進表現である、請求項17に記載のマイクロコントローラ。
  19. 各々前記レジスタファイル内のレジスタを特定するレジスタ演算コードと前記レジスタ演算コードにより特定されたレジスタのビット位置を指定するビット演算コードとを有するプログラム命令の第2のサブセットをさらに含み、前記命令デコーダはさらに、前記レジスタ演算コードおよび前記ビット演算コードに応答して第3の制御信号を発生することを特徴とし、これによって、前記ビット転送手段は前記状態レジスタの前記転送ビットと、前記レジスタ演算コードおよび前記ビット演算コードによって指定されたビット位置との間でビットを転送させられる、請求項18に記載のマイクロコントローラ。
  20. 各々前記8ビットレジスタの1つを指定する、行き先レジスタ演算コードと発信元レジスタ演算コードとを有するプログラム命令をさらに含み、前記状態レジスタはさらに、桁上げビットを含み、前記8ビットALUは前記桁上げビットを受取るよう結合され、前記命令デコーダはさらに、前記行き先レジスタ演算コードおよび前記発信元レジスタ演算コードに応答して制御信号の第4のセットを発生することを特徴とし、これによって前記8ビットALUは算術計算を行なわされ、前記算術計算は、
    Rd−Rr−C
    であり、ただし、RdおよびRrはそれぞれ前記行き先レジスタ演算コードおよび前記発信元レジスタ演算コードにより特定されるレジスタの内容であり、Cは前記桁上げビットの内容である、請求項19に記載のマイクロコントローラ。
JP52153498A 1996-11-07 1997-10-30 Riscアーキテクチャを有する8ビットマイクロコントローラ Expired - Fee Related JP3694531B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/745,098 US5854939A (en) 1996-11-07 1996-11-07 Eight-bit microcontroller having a risc architecture
US08/745,098 1996-11-07
PCT/US1997/019626 WO1998020422A1 (en) 1996-11-07 1997-10-30 Eight-bit microcontroller having a risc architecture

Publications (2)

Publication Number Publication Date
JP2001504959A JP2001504959A (ja) 2001-04-10
JP3694531B2 true JP3694531B2 (ja) 2005-09-14

Family

ID=24995260

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52153498A Expired - Fee Related JP3694531B2 (ja) 1996-11-07 1997-10-30 Riscアーキテクチャを有する8ビットマイクロコントローラ

Country Status (10)

Country Link
US (1) US5854939A (ja)
EP (2) EP0954791B1 (ja)
JP (1) JP3694531B2 (ja)
KR (1) KR100465388B1 (ja)
CN (1) CN1115631C (ja)
AT (1) ATE291256T1 (ja)
DE (1) DE69732793T2 (ja)
HK (1) HK1022358A1 (ja)
TW (1) TW355772B (ja)
WO (1) WO1998020422A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2766937B1 (fr) * 1997-07-31 2001-04-27 Sqware T Protocole et systeme de liaison par bus entre elements d'un microcontroleur
JPH1165840A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
US6577316B2 (en) * 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd Wide instruction word graphics processor
US6367000B1 (en) * 1998-09-30 2002-04-02 Intel Corporation Fast conversion of encoded tag bits
US6850990B1 (en) * 1999-07-14 2005-02-01 Landesk Software Limited Transfer of synchronized data from 16-bit code to a 32-bit process
WO2003091972A1 (en) * 2002-04-26 2003-11-06 Telefonaktiebolaget Lm Ericsson Memory access register file
US7600161B2 (en) 2004-08-13 2009-10-06 Gm Global Technology Operations, Inc. Method of verifying integrity of control module arithmetic logic unit (ALU)
CN100430890C (zh) * 2005-08-31 2008-11-05 上海海尔集成电路有限公司 一种8位risc微控制器
US8533439B2 (en) * 2005-11-07 2013-09-10 Atmel Corporation Elastic shared RAM array including contiguous instruction and data portions distinct from each other
US8417922B2 (en) * 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
CN101436120B (zh) * 2007-08-17 2011-05-04 凹凸电子(武汉)有限公司 微控制器、执行指令的方法及电子系统
TW200933385A (en) * 2008-01-22 2009-08-01 Sonix Technology Co Ltd Microcontroller having dual-core architecture
CN101539849B (zh) * 2009-04-21 2013-10-16 北京红旗胜利科技发展有限责任公司 一种处理器以及一种寄存器选通方法
JP5625903B2 (ja) 2010-12-29 2014-11-19 富士通株式会社 演算処理装置および演算処理方法
CN102033733B (zh) * 2011-01-14 2012-12-19 北方工业大学 新型mcu结构
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
CN107621949A (zh) * 2016-07-15 2018-01-23 龙芯中科技术有限公司 内存拷贝方法及装置
US20230098724A1 (en) * 2021-09-25 2023-03-30 Intel Corporation Copy a subset of status flags from a control and status register to a flags register

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US566651A (en) * 1896-08-25 Combined saw stretcher and shears
JPS5779551A (en) * 1980-11-06 1982-05-18 Nec Corp Information transfer device
JPS58142464A (ja) * 1982-02-19 1983-08-24 Hitachi Ltd マイクロプロセツサ
US4649511A (en) * 1983-07-25 1987-03-10 General Electric Company Dynamic memory controller for single-chip microprocessor
JPS623333A (ja) * 1985-06-28 1987-01-09 Yokogawa Hewlett Packard Ltd ビツト群置数方式
JPS6226561A (ja) * 1985-07-26 1987-02-04 Toshiba Corp パ−ソナルコンピユ−タ
US4831514A (en) * 1986-02-14 1989-05-16 Dso "Izot" Method and device for connecting a 16-bit microprocessor to 8-bit modules
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
KR0163179B1 (ko) * 1989-03-31 1999-01-15 미다 가쓰시게 데이타 프로세서
JP2995752B2 (ja) * 1989-07-21 1999-12-27 日本電気株式会社 バスアーキテクチャ変換回路
US5333284A (en) * 1990-09-10 1994-07-26 Honeywell, Inc. Repeated ALU in pipelined processor design
EP0483967A3 (en) * 1990-10-29 1993-07-21 Sun Microsystems, Inc. Apparatus for increasing the number of registers available in a computer processor
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JP3486630B2 (ja) * 1991-05-08 2004-01-13 株式会社ルネサステクノロジ データ処理装置
KR100272622B1 (ko) * 1991-05-08 2000-11-15 가나이 쓰도무 데이타 처리장치
JP2718292B2 (ja) * 1991-07-24 1998-02-25 日本電気株式会社 マイクロプロセッサ
DE69228975T2 (de) * 1991-10-28 1999-11-18 Eastman Kodak Co Steuerungsschaltung zur Datenübertragung von einem VME-Bus zu einer SCSI-Platteneinheit
US5465332A (en) * 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
CA2093451C (en) * 1993-04-06 2000-03-14 David M. Mooney Method and mechanism for calling 32-bit functions from 16-bit functions
JP2932963B2 (ja) * 1994-01-21 1999-08-09 モトローラ・インコーポレイテッド 効率的なビット移動能力を有するデータ・プロセッサとその方法
JPH0844665A (ja) * 1994-07-14 1996-02-16 Fujitsu Ltd 複数のデータ転送サイズ及びプロトコルをサポートするバス

Also Published As

Publication number Publication date
JP2001504959A (ja) 2001-04-10
KR20000053047A (ko) 2000-08-25
WO1998020422A1 (en) 1998-05-14
CN1236455A (zh) 1999-11-24
US5854939A (en) 1998-12-29
EP1596279A2 (en) 2005-11-16
EP0954791A1 (en) 1999-11-10
EP1596279A3 (en) 2010-03-10
EP0954791B1 (en) 2005-03-16
CN1115631C (zh) 2003-07-23
DE69732793D1 (de) 2005-04-21
DE69732793T2 (de) 2006-04-06
TW355772B (en) 1999-04-11
HK1022358A1 (en) 2000-08-04
KR100465388B1 (ko) 2005-01-13
EP0954791A4 (en) 2003-06-11
ATE291256T1 (de) 2005-04-15

Similar Documents

Publication Publication Date Title
JP5199931B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JP3694531B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
US10514922B1 (en) Transfer triggered microcontroller with orthogonal instruction set
US6405302B1 (en) Microcomputer
EP0138419B1 (en) Central processing unit for a digital computer
US7568083B1 (en) Memory mapped register file and method for accessing the same
US5481734A (en) Data processor having 2n bits width data bus for context switching function
US7228401B2 (en) Interfacing a processor to a coprocessor in which the processor selectively broadcasts to or selectively alters an execution mode of the coprocessor
US5752273A (en) Apparatus and method for efficiently determining addresses for misaligned data stored in memory
JP4004915B2 (ja) データ処理装置
US5680632A (en) Method for providing an extensible register in the first and second data processing systems
US6098160A (en) Data pointer for outputting indirect addressing mode addresses within a single cycle and method therefor
US4893235A (en) Central processing unit for a digital computer
JP2551167B2 (ja) マイクロコンピュータ
JP3164915B2 (ja) データ処理装置及びそのデータ処理方法
EP0915416B1 (en) System for allowing a two word instruction to be executed in a single cycle and method therefor
JP4545777B2 (ja) データ処理装置
US20040098568A1 (en) Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method
CA1250666A (en) Central processing unit for a digital computer
JP4498338B2 (ja) データ処理装置
JP2696578B2 (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040915

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050627

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090701

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090701

Year of fee payment: 4

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

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

Free format text: PAYMENT UNTIL: 20100701

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110701

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120701

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120701

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130701

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees