JP3694531B2 - Riscアーキテクチャを有する8ビットマイクロコントローラ - Google Patents
Riscアーキテクチャを有する8ビットマイクロコントローラ Download PDFInfo
- 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
Links
- 230000006870 function Effects 0.000 claims abstract description 6
- 230000015654 memory Effects 0.000 claims description 30
- 238000012546 transfer Methods 0.000 claims description 24
- 230000008878 coupling Effects 0.000 claims 4
- 238000010168 coupling process Methods 0.000 claims 4
- 238000005859 coupling reaction Methods 0.000 claims 4
- 230000004044 response Effects 0.000 claims 4
- 230000000873 masking effect Effects 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 240000007320 Pinus strobus Species 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7814—Specially adapted for real time processing, e.g. comprising hardware timers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent 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ビットマイクロコントローラの特徴に関連するハードウェアの詳細について説明してきたが、次にマイクロコントローラの命令セットについて説明する。まず、この発明のマイクロコントローラは、算術論理演算命令、分岐命令、データ転送命令ならびにビットテストおよびビットセット命令を含むすべてのマイクロコントローラに典型的なプログラム命令をサポートする。さらにこの発明のマイクロコントローラはここまでに説明し、図に示す回路によって可能にされる命令を提供する。以下はこれらの命令の概要である。
図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ビット比較を実現できる。
「cp」命令は桁上げビットに影響し、桁上げビットは次に続く「cpc」命令において使用される。レジスタ対R3/R2およびR1/R0は2つの16ビット値のためのホルダとして有効に働く。
これで、この発明のマイクロコントローラに関して開示される命令および論理回路に関連する制御信号の説明は終わりである。上述の命令の実行に関連する制御信号はこれらの信号のみではないことが理解される。マイクロコントローラの他の素子を制御するために付加的な信号が生成される。たとえば、メモリアクセスに関係する上述の命令のいくつかのためにアドレスおよび読出/書込ストローブが発生される。さらに、制御信号の発行を適切に同期させるため実行タイミング制御が必要とされる。しかし、集積コンピュータ回路分野の当業者は、過度の実験を行なわずとも、この発明を実施するため必要な付加的な制御信号およびこれらの信号の必須タイミングを判断することができる。
Claims (20)
- マイクロコントローラであって、
プログラムバスと、
プログラムをストアするためのプログラムストアと、
前記プログラムバスを介して前記プログラムストアに結合されるプログラム実行ユニットと、
前記プログラムバスとは別個の8ビットデータバスと、
前記8ビットデータバスに結合され、前記プログラムストアとは別個のデータストアと、
前記8ビットデータバスに結合されるレジスタファイルとを含み、前記レジスタファイルは複数の8ビットレジスタを有し、前記レジスタファイルはさらに前記8ビットレジスタのうち2つを単一の論理16ビットレジスタとしてアクセスされるように組合せるための手段を有し、前記マイクロコントローラはさらに、
前記8ビットレジスタのうちの2つの内容を受取るよう結合される汎用ALUを含み、前記汎用ALUは前記8ビットデータバスに結合される1出力を有し、前記マイクロコントローラはさらに、
前記プログラム実行ユニットを、プログラムの実行の間に前記データストアおよび前記レジスタファイルに直接アクセスするよう結合する直接アドレスバスと、
プログラムの実行の間に前記レジスタファイルに前記データストアへの間接データアクセスを提供する間接アドレスバスとを含み、
前記レジスタファイルはさらに前記組合せるための手段を通じてアクセスされる論理16ビットレジスタに対し算術演算機能を行なうため、前記組合せるための手段に結合される専用ALUを含み、
前記間接アドレスバスは前記組合せるための手段からの16ビット値を受取るためのアドレス受信手段を有し、それによって16ビットの間接アドレス指定が行なわれる、マイクロコントローラ。 - 前記レジスタファイルはさらに定数値−1、定数値+1またはプログラムにより発生される値を出力するためのセレクタ手段を含み、前記専用ALUは、前記組合せるための手段を通じてアクセスされる論理16ビットレジスタで算術演算を行なうため前記セレクタ手段からの出力を受取るよう結合される、請求項1に記載のマイクロコントローラ。
- 前記2つの8ビットレジスタのうち一方は前記論理16ビットレジスタの下位バイトであり、前記2つの8ビットレジスタの他方は前記論理16ビットレジスタの上位バイトである、請求項2に記載のマイクロコントローラ。
- ページングレジスタと、前記ページングレジスタの内容および前記組合せるための手段により与えられる16ビットアドレスからアドレスを形成するための、前記アドレス受信手段に結合されるアドレス形成手段とをさらに含む、請求項1に記載のマイクロコントローラ。
- 前記ページングレジスタは8ビットレジスタであり、前記ページングレジスタは前記8ビットデータバスに結合され、前記ページングレジスタへの値のロードで各々64Kバイトの256のページの1つが指定される、請求項4に記載のマイクロコントローラ。
- 単一のビットを保持するためのビットストアと、前記ビットストアと前記レジスタファイルから選択されたレジスタ内のビットロケーションとの間でビットを転送するための手段とをさらに含む、請求項1に記載のマイクロコントローラ。
- 前記8ビットデータバスに結合される状態レジスタをさらに含み、前記状態レジスタは複数のビット位置を有し、複数のビット位置の1つは前記ビットストアとして役立つ、請求項6に記載のマイクロコントローラ。
- プログラムバスと、プログラムストアと、前記プログラムバスを介して前記プログラムストアに結合されるプログラム実行ユニットと、8ビットデータバスと、前記データバスに結合され、前記プログラムストアとは別個のデータストアと、前記データバスに結合される一出力を有する汎用8ビットALUと、前記プログラム実行ユニットを前記データストアに結合する第1のアドレスバスとを有する8ビットマイクロコントローラであって、
複数の8ビットレジスタのうち2つに対して8ビットの算術演算を行なうよう、前記汎用8ビットALUによりアクセス可能な前記複数の8ビットレジスタを有するレジスタファイルを含み、前記レジスタファイルはさらに、前記レジスタの2つを16ビットレジスタとしてアクセスを行なうためのレジスタ手段を有し、前記レジスタファイルはさらに16ビットALUと値セレクタとを有し、前記16ビットALUは前記レジスタ手段から16ビットのデータを受取り、前記値セレクタから数値を受取り、それらによって計算を行なうよう結合され、前記マイクロコントローラはさらに、
前記16ビットALUから計算の結果を受取るための第2のアドレスバスを含み、前記第2のアドレスバスは前記レジスタファイルと前記データストアとの間に結合され、前記計算の結果は前記データストア内のメモリロケーションのアドレスとして使用される、8ビットマイクロコントローラ。 - 前記値セレクタは、定数値−1、定数値+1またはプログラムにより発生された数値を与える、請求項8に記載の8ビットマイクロコントローラ。
- 前記レジスタファイルは、前記16ビットALUの前記計算の結果または前記レジスタ手段からの16ビットのデータのいずれかを前記第2のアドレスバスへ転送するための手段を含む、請求項9に記載の8ビットマイクロコントローラ。
- ページングレジスタと、前記ページングレジスタの内容および前記レジスタ手段から与えられる16ビットアドレスに基づいて、拡張されたアドレスを形成するための手段とをさらに含む、請求項10に記載の8ビットマイクロコントローラ。
- 外部アドレスバスと、前記拡張されたアドレスを前記外部アドレスバスおよび前記第2のアドレスバスへ選択的に結合するための手段とをさらに含む、請求項11に記載の8ビットマイクロコントローラ。
- 前記ページングレジスタは8ビットレジスタである、請求項12に記載の8ビットマイクロコントローラ。
- ビットストアと、前記ビットストアと前記レジスタファイルのレジスタ内のビットロケーションとの間で1ビットのデータを転送するための手段とをさらに含む、請求項12に記載の8ビットマイクロコントローラ。
- 前記8ビットデータバスに結合される状態レジスタをさらに含み、前記ビットストアは前記状態レジスタ内のビットロケーションである、請求項14に記載の8ビットマイクロコントローラ。
- ハーバードベースのアーキテクチャを有する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ビットマイクロコントローラ。 - 各々インクリメントコードまたはデクリメントコードを指定する数値演算コードおよび前記8ビットレジスタの対の1つを指定するレジスタ対演算コードを有するプログラム命令の第1のサブセットを含み、前記命令デコーダは、前記レジスタ対演算コードおよび前記数値演算コードに応答して第1の制御信号を発生することを特徴とし、これによって、前記レジスタ手段は前記レジスタ対へ16ビットレジスタとしてアクセスさせられ、前記数値セレクタは「+1」または「−1」を出力させられ、前記16ビット加算器は前記セレクタの前記出力を前記16ビットレジスタへ加算させられる。請求項16に記載のマイクロコントローラ。
- 前記数値セレクタは、定数値を受取り前記定数値を出力するための手段を含み、プログラム命令の前記第1のサブセットのいくつかは数値を指定する数値演算コードを有し、前記命令デコーダはさらに、数値を指定するこれらの前記数値演算コードに応答して第2の制御信号を発生することを特徴とし、前記第2の制御信号は前記数値セレクタにより受取られる前記数値の2進表現である、請求項17に記載のマイクロコントローラ。
- 各々前記レジスタファイル内のレジスタを特定するレジスタ演算コードと前記レジスタ演算コードにより特定されたレジスタのビット位置を指定するビット演算コードとを有するプログラム命令の第2のサブセットをさらに含み、前記命令デコーダはさらに、前記レジスタ演算コードおよび前記ビット演算コードに応答して第3の制御信号を発生することを特徴とし、これによって、前記ビット転送手段は前記状態レジスタの前記転送ビットと、前記レジスタ演算コードおよび前記ビット演算コードによって指定されたビット位置との間でビットを転送させられる、請求項18に記載のマイクロコントローラ。
- 各々前記8ビットレジスタの1つを指定する、行き先レジスタ演算コードと発信元レジスタ演算コードとを有するプログラム命令をさらに含み、前記状態レジスタはさらに、桁上げビットを含み、前記8ビットALUは前記桁上げビットを受取るよう結合され、前記命令デコーダはさらに、前記行き先レジスタ演算コードおよび前記発信元レジスタ演算コードに応答して制御信号の第4のセットを発生することを特徴とし、これによって前記8ビットALUは算術計算を行なわされ、前記算術計算は、
Rd−Rr−C
であり、ただし、RdおよびRrはそれぞれ前記行き先レジスタ演算コードおよび前記発信元レジスタ演算コードにより特定されるレジスタの内容であり、Cは前記桁上げビットの内容である、請求項19に記載のマイクロコントローラ。
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)
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)
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 | 複数のデータ転送サイズ及びプロトコルをサポートするバス |
-
1996
- 1996-11-07 US US08/745,098 patent/US5854939A/en not_active Expired - Lifetime
-
1997
- 1997-10-30 EP EP97913860A patent/EP0954791B1/en not_active Expired - Lifetime
- 1997-10-30 CN CN97199485A patent/CN1115631C/zh not_active Expired - Lifetime
- 1997-10-30 AT AT97913860T patent/ATE291256T1/de not_active IP Right Cessation
- 1997-10-30 KR KR10-1999-7003950A patent/KR100465388B1/ko not_active IP Right Cessation
- 1997-10-30 DE DE69732793T patent/DE69732793T2/de not_active Expired - Lifetime
- 1997-10-30 JP JP52153498A patent/JP3694531B2/ja not_active Expired - Fee Related
- 1997-10-30 EP EP04029045A patent/EP1596279A3/en not_active Withdrawn
- 1997-10-30 WO PCT/US1997/019626 patent/WO1998020422A1/en active IP Right Grant
- 1997-11-07 TW TW086116599A patent/TW355772B/zh not_active IP Right Cessation
-
2000
- 2000-02-21 HK HK00101020A patent/HK1022358A1/xx not_active IP Right Cessation
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 |