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

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

Info

Publication number
JP2001504959A
JP2001504959A JP52153498A JP52153498A JP2001504959A JP 2001504959 A JP2001504959 A JP 2001504959A JP 52153498 A JP52153498 A JP 52153498A JP 52153498 A JP52153498 A JP 52153498A JP 2001504959 A JP2001504959 A JP 2001504959A
Authority
JP
Japan
Prior art keywords
bit
register
data
microcontroller
alu
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.)
Granted
Application number
JP52153498A
Other languages
English (en)
Other versions
JP3694531B2 (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

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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

(57)【要約】 8ビットRISCベースのマイクロコントローラ(10)は、汎用8ビット算術論理演算装置ALU(ALU−1)に加えて専用算術演算論理装置ALU(ALU−2)を有する8ビットレジスタファイルを含む。レジスタファイルはさらに、アドレス指定を方向づけるための論理16ビットレジスタを設けるためレジスタ(100)の対を組合せるための手段を含む。専用ALU(ALU−2)はレジスタ対に対し特定の算術機能を与え、それによってこれがなかったならば汎用レジスタ8ビットALU(ALU−1)に課されたであろう計算作業を緩和する16ビットALUである。この発明のさらなる特徴は、ページングレジスタ(RAM X、RAM Y、RAM Z)を含むことで、ページングレジスタは論理16ビットレジスタの内容と組合され、さらにアドレス指定範囲が広くなる。この発明の8ビットマイクロコントローラのまたさらなる特徴は、単一の命令によつてレジスタファイル内の任意のビット位置からおよび任意のビット位置へ直接読出および書込するための手段である。これによって従来のマイクロコントローラにおいて必要であったさまざまなロード、シフトおよび/またはマスキング動作を行なう必要性がなくなる。

Description

【発明の詳細な説明】 RISCアーキテクチャを有する8ビットマイクロコントローラ 発明の分野 この発明は、マイクロコントローラ一般に関し、特に、より少数の命令セット を実行するマイクロコントローラに関する。 背景技術 現在のサブミクロンCMOS技術では、複雑なメモリおよび周辺論理の実現の ために十分なシリコン面積を残しつつ、複雑なマイクロコントローラアーキテク チャをチップ上に集積することが可能である。32ビットおよび64ビットのハ イエンドRISCマシンにおいて最も一般に使用されている設計アーキテクチャ および方法論は、低コストの8ビットマイクロコントローラシステムにおいても 効率的に利用および応用できる。このようなパワフルでありながらも費用対効果 のよいマイクロコントローラにより、システムの全体としての集積度は上昇し続 けている。ハードウェアアーキテクチャにおいてより効率的なプログラムを実行 することができ、より多くのハードウェア機能を集積することができる。 近年、RISCアーキテクチャは人気を増している。最も目立つのは、アップ ル・コンピュータ、IBMおよびモトローラが共同開発したパワ−PC(登録商 標)である。RISCプロセッサを定義する特徴についての合意は存在しないも のの、さまざまなRISCアーキテクチャ間には共通した特徴がある。すなわち 、(1)ほとんどの命令が1サイクル内に実行される。(2)別個の簡単なロー ド/ストア命令がしばしば2サイクル内に実行される。(3)命令のデコーディ ングが典型的にはマイクロコーディングされるのではなくハードワイヤードで構 成され、実行時間が高速になっている。(4)ほとんどの命令は固定フォーマッ トを有しそのため命令のデコーディングが簡素になっている。(5)命令セット が小さくアドレス指定モードが少ない。(6)データ経路が高度にパイプライン 化されており、処理の平衡性の程度が高い。(7)より低速のシステムRAMへ の およびそこからの過剰なデータ転送を回避するための大きな高速レジスタの組( レジスタファイルとしても知られる)。 半導体製造業者数社がマイクロコントローラを製造している。たとえばテキサ ス・インスツルメンツ社は8ビットマイクロコントローラであるTMS370C x1xシリーズを提供する。これらのマイクロコントローラは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ビットデータバス1 2構造のまわりに設計される。データバスは、マイクロコントローラに含まれる さまざまな構成要素に対しデータ経路を提供する。オンボードSRAMは汎用デ ータストアとして役立つ。SRAMとは別個の8ビットレジスタファイル(REGI STER 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の命令実行構成要素は、プログラムメモリ(PROGRA M 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は、レジスタファイルのデータ出力バス10 4により与えられる第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、M UX SELECT、V SELECT、V5〜V0、INCR SELECT、 およびDECR SELECTを含む。これらの信号は、命令デコーダ(INSTRU CTION 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としてデータ入力ラッチ1 22およびデータ出力ラッチ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およびR3 1の出力ライン121へ結合される。同様に、データ出力ラッチ122は下位バ イトレジスタR26、R28およびR30の出力ライン121に結合される。デ ータ入力ラッチ124および126は同様の態様で結合され、すなわち、データ 入力ラッチ124は上位バイトレジスタR27、R29およびR31の入力ライ ン123に結合され、一方データ入力ラッチ126は下位バイトレジスタR26 、R 28およびR30の入力ライン123に結合される。 以下の制御信号は、レジスタ回路100の上に説明した特徴を持つ動作に関連 する。信号は、DATA16_IN、DATA16_OUT、DATA8_IN 、DATA8_OUT、RO SELECT〜R31 SELECT、X SE LECT、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:1mux 136とを含む。まず1:32mux134について考える。このmuxは8ビ ットデータバス12からの1ビット入力を有する。入力は32個の出力のいずれ か1つに転送できる。32個の出力の各々は1:8mux130の1つの入力に 結合され、それによって、データバス12からレジスタファイル内のレジスタR 0からR31のうちいずれかの中のいずれかのビット位置への経路が提供される 。 次に1:32mux136について考える。8:1mux132の各々の出力は mux136の32個の入力の1つに結合される。mux136の1ビット出力 は、データバス12に結合され、これによって、レジスタR0−R31のいずれ かの中のいずれかのビット位置からデータバスへのデータ経路が提供される。 図4Aに示す状態レジスタは、ビットを転送するためのTビットとして知られ る1ビットのデータを受取りかつ保持するためのビット位置を含む。状態レジス タは8ビットデータバス12に結合され、そのさまざまなビットへの読出/書込 アクセスを提供する。特に、Tビット位置は、データバスを通じて32:1mu x136から1ビットのデータを受取るかまたはデータバスを通じて1:32m ux134へ1ビットのデータを転送するかのいずれかのために、1:32mu x134および32:1mux136に関連して制御される。 以下の制御信号は、図4Aに示すレジスタファイルの特徴を持つ動作に関連す る。これらの信号は、BST REGISTER SELECT、BST BI T SELECT、BLD REGISTER SELECT、およびBLDB IT SELECTを含む。これらの制御信号に関連してのレジスタファイルの 動作を、以下にこの発明のマイクロコントローラのプログラム命令に関連して説 明する。 この発明の8ビットマイクロコントローラの他の特徴は、図5に示すようなエ ンハンスされたアドレス指定能力である。図示されるのは、レジスタファイルの 外部にある3つの付加的なレジスタ、すなわちRAMページングレジスタ、RA MPX、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から$FF FFFFとなる。オンボードメモリの量はこの発明の利便性または動作性に影響 することなく変えることができ、実際のメモリの量は利用可能なシリコン面積、 素子のジオメトリおよびデザインルールなどの設計上の基準に依存することが注 意される。 オンボードメモリおよび外部RAMが所与のアドレスについて正しくアクセス されることを確実にするため、内部アドレスバス14または外部アドレスバス2 0のいずれかにアドレスを転送するため第2のセレクタ13が使用される。好ま しい実施例においては、セレクタ13は1:2muxであり、単一のMUX入力 がその2つの出力の一方に転送される。ここで、単一の入力はセレクタ11から 出る24ビットのアドレスラインである。セレクタ13の出力の一方はアドレス バス14に結合され、他方の出力は外部アドレスバス20に結合される。オンボ ードメモリのアドレス範囲内のアドレスを検出すると、セレクタ13はその入力 をアドレスバス14へ転送させられる。24ビットアドレスの下位16ビット[ 15…0]のみがアドレスバス14に転送される。逆に、外部メモリのアドレス 範囲内のアドレスを検出すると、セレクタ13はその入力を外部アドレスバス2 0へ転送するであろう。いくつかの検出機構のうち任意のものが使用できるが、 そのいずれも通常の技量を有する設計者の能力内にある。たとえば、24ビット アドレスの上位8ビット(ビット[23…0])をともに論理和し、その結果を セレクタ13を制御するために使用してもよい。もし論理和演算の結果がFAL SEであり、そのアドレスがオンボードメモリのアドレス範囲内にあることを意 味すれば、セレクタ13はその入力を内部アドレスバス14へ転送しなければな らない。もし論理和演算の結果がTRUEでありそのアドレスが完全な24ビッ トアドレスであることを意味すれば、セレクタ13はその入力を外部アドレスバ ス20へ転送しなければならない。 この発明の8ビットマイクロコントローラの特徴に関連するハードウェアの詳 細について説明してきたが、次にマイクロコントローラの命令セットについて説 明する。まず、この発明のマイクロコントローラは、算術論理演算命令、分岐命 令、データ転送命令ならびにビットテストおよびビットセット命令を含むすべて のマイクロコントローラに典型的なプログラム命令をサポートする。さらにこの 発明のマイクロコントローラはここまでに説明し、図に示す回路によって可能に される命令を提供する。以下はこれらの命令の概要である。 ADIW 記述: 論理16ビットレジスタL(X[R27:R26]、 Y[R29:R28]、またはZ[R31:R30] )に定数を加算する。 メモリアクセスは対応するRAMページングレジスタ RAMPX、RAMPY、およびRAMPZに指定さ れるRAMページへ限定される。 演算: L←L+K 構文法: ADIWL、K ただし: LはX、YおよびZのいずれか1つ:かつ Kは定数、0≦K≦63 例: adiw X,1 ;Xレジスタに1を加算 adiw Z,63 ;Zレジスタに63を加算 BST 記述: レジスタからのビットをT−ビットへストアする。 演算: T−ビット←Rd(b) 構文法: BST Rd,b ただし: Rdはレジスタ、R0…R31;かつ bはビット位置、0≦b≦7 例: ;コピービット bst r4,3; ;r4のビット3をT−ビッ トにストアする bld r21,6; ;r21のビット6をT−ビ ットからロードする BLD 記述: T−ビットからビットをレジスタへロードする 演算: Rd(b)←T−ビット 構文法: BLD Rd,b ただし: Rdはレジスタ、R0…R31;かつ bはビット位置、0≦b≦7 例: ;コピービット bst r4,3; ;r4のビット3をT−ビッ トにストアする bld r21,6; ;r21のビット6をT−ビ ットからロードする CPC 記述: 前の桁上げを考慮しつつ、2つのレジスタの比較を行 なう。 演算: Rd−Rr−C ただし: Rd、Rrはレジスタ、R0…R31; かつCは桁上げビットである; 構文法: CPC Rd,Rr 例: ;r3:r2をr1:r0と 比較する cp r2,r0 ;下位バイトを比較する cpc r3,r1 ;上位バイトを比較する brne noteq ;等しくなければ分岐させる ・ ・ ・ noteq: … ;行先を分岐させる nop ;(何もしない) IJMP 記述: 論理16ビットZレジスタ、Z[R31:R30]に より指し示されるアドレスへ間接的に飛び越しをおこ なう。 演算: PC[15…0]←Z[15…0] 構文法: IJN4P(オペランドなし) 例: ;飛び越しアドレスを初期化 する mov r30,ro ;roをr30へコピーする mov r31,r1 ;r1をr31へコピーする ijmp ;r31:r30によって指 し示される命令へ飛び越しを 行なう ; ICALL 記述: 論理16ビットZレジスタ、Z[R31:R30]に より指し示されるサブルーチンの間接的呼出。 演算: STACK←PC+1 SP←SP−2 PC[15…0]←Z[15…0] 構文法: ICALL(オペランドなし) 例: ;サブルーチンアドレスを初 期化する mov r30,r0 ;r0をr30へコピーする mov r31,r1 ;r1をr31へコピーする icall ;r31:r30によって指 し示される命令へ飛び越しを 行なう ; LD 記述: メモリロケーションからレジスタへ間接的に1バイト をロードする、メモリロケーションは論理16ビット レジスタL(X[R27:R26]、Y[R29:R 28]、またはZ[R31:R30])により指し示 される。論理レジスタはポストインクリメントまたは プリデクリメントされてもよい。メモリアクセスは、 対応するRAMページングレジスタRAMPX、RA MPYおよびRAMPZにおいて指定されるRAMペ ージに限定される。 演算: 1: Rd←(L) L:変化しない、OR 2: Rd←(L) L←L+1 L:ポストインクリメントさ れる、OR 3: L←L−1 Rd←(L) L:プリデクリメントされる 構文法: LD Rd,L L:変化せず LD Rd,L+ L:ポストインクリメントさ れる LD Rd,−L L:プリデクリメントされる ただし: Rdはレジスタ、R0…R3 1;かつ LはX、YおよびZの1つ 例: clr r27 ;Xの上位バイトをクリア する ldi r26,$20 ;Xの下位バイトを$20 にセットする ld r0,X+ ;メモリロケーション$2 0の ;内容をr0にロードする ;(Xはポストインクリメ ントされる) ld r1,X ;メモリロケーション$2 1 ;の内容をr1にロードす る ;(Xは変化せず) ld r2,−X ;メモリロケーション$2 0 ;の内容をr2へロードす る ;(Xはプリデクリメント される) LDD 記述: メモリロケーションからレジスタへ変位とともに1バ イトを間接的にロードする、メモリロケーションは論 理16ビットレジスタL(Y[R29:R28]、ま たはZ[R31:R30])により指し示され、変位 値によりオフセットされる。メモリアクセスは対応す るRAMページングレジスタRAMPYおよびRAM PZにより指定されるRAMページに限定される。 演算: Rd←(L+q) 構文法: LDD Rd,L+q ただし: Rdはレジスタ、R0…R31; LはYおよびZの1つ;かつ qは変位、0≦q≦63 例: clr r29 ;Yの上位バイトをクリア する ldi r28,$20 ;Yの下位バイトを$20 にセットする ldd r4,Y+2 ;メモリロケーション$2 2 ;の内容をr4にロードす る SBIW 記述: 論理16ビットレジスタL(X[R27:R26]、 Y[R29:R28]、またはZ[R31:R30] )から定数を減算する。 メモリアクセスは、対応するRAMページングレジス タRAMPX、RAMPYおよびRAMPZ内に指定 されるRAMページへ限定される。 演算: L←L−K 構文法: SBIW L,K ただし: LはX,YおよびZの1つ;かつ Kは定数、0≦K≦63 例: sbiw X,1 ;Xレジスタ ;から1を減算する sbiw Z,63 ;Zレジスタ ;から63を減算する ST 記述: レジスタからメモリロケーションへ1バイトを間接的 にストアする、メモリロケーションは論理16ビット レジスタL(X[R27:R26]、Y[R29:R 28]、またはZ[R31:R30])により指し示 される。論理レジスタはポストインクリメントまたは プリデクリメントされてもよい。メモリアクセスは、 対応するRAMページングレジスタRAMPX、RA MPYおよびRAMPZ内に指定されるRAMページ に限定される。 演算: 1: (L)←Rd L:変化せず、OR 2: (L)←Rd L←L+1 L:ポストインクリメントさ れる、OR 3: L←L−1 (L)←Rd L:プリデクリメントされる 構文法: ST L,Rd L:変化せず ST L+,Rd L:ポストインクリメントさ れる ST −L,Rd L:プリデクリメントされる ただし: LはX、YおよびZの1つ; かつ Rdはレジスタ、R0…R3 1 例: clr r27 ;Xの上位バイトをクリア する ldi r26,$20 ;Xの下位バイトを$20 にセットする st X+,r0 ;r0の内容を ;メモリロケーション$2 0へストアする ;(Xはポストインクリメ ントされる) st X,r1 ;r1の内容を ;メモリロケーション$2 1へストアする ;(Xは変化せず) ldi r26,$23 ;Xの下位バイトを$23 にセットする st −X,r2 ;r2の内容を ;メモリロケーション$2 2へストアする ;(Xはプリデクリメント される) STD 記述: レジスタからメモリロケーションへ変位とともに間接 的に1バイトをストアする、メモリロケーションは論 理16ビットレジスタL(Y[R29:R28]、ま たはZ[R31:R30])により指し示され、変位 値によりオフセットされる。メモリアクセスは、対応 するRAMページングレジスタRAMPY、RAMP Z内に指定されるRAMページに限定される。 演算: (L+q)←Rd 構文法: LDD L+q,Rd ただし: LはYおよびZの1つ; qは変位、0≦q≦63 かつ Rdはレジスタ、R0…R31 例: clr r29 ;Yの上位バイトをクリア する ldi r28,$20 ;Yの下位バイトを$20 にセットする std Y+2,r4 ;r4の内容を ;メモリロケーション$2 2へストアする 図1においては、デコードされた命令を行なうために必要とされる動作を行な うため、マイクロコントローラのさまざまな構成要素に制御ラインにより運ばれ る制御信号が命令デコーダにより生成されたことを想起されたい。次に上述の命 令に関連する制御信号の上述の図に示した回路に対する効果に関連して、これら の制御信号について説明する。 まず、図4Bに示すビット転送命令(BST、BLD)について考える。BS TおよびBLD命令は各々、特定の命令を特定するOP_CODEフィールドお よび2つのオペランドを含む。すなわちレジスタオペランドRdおよびビット位 置オペランドbである。これらの命令が命令デコーダ(図1)によりデコードさ れるとき、レジスタ選択制御信号およびビット選択制御信号が発生されるであろ う。これらの制御信号は所望のビットにアクセスするよう、mux132−13 6を制御する。BST REGISTER SELECT制御信号は、レジスタ オペランドRdに基づいてBST命令のために生成される。同様に、BST B IT SELECT制御信号はビット位置オペランドbに基づいて生成される。 同様の制御信号がBLD命令についても生成される。 図4Bに示すように、BST BIT SELECT制御信号は、レジスタR 0〜R31の各々の8:1mux132を動作させ、各レジスタから32:1m ux136へと指定されたビットを転送する。BST REGISTER SE LECT制御信号は32ビットのうち指定された1ビットを選択するよう32: 1muxを動作させ、それによって選択されたレジスタの選択されたビットを8 ビットデータバス12へ転送し、これは次に状態レジスタのTビット位置へとラ ッチされる。 BLD命令に対応する制御信号は同様の態様でmux130および134を動 作させる。Tビットにストアされるビットはデータバス12を介して32:1m ux134へ転送される。次にビットはBLD REGISTER SELEC T制御信号の制御下で1:8mux132の1つへと転送され、ビットは指定さ れたレジスタへ送られる。次にBLD BIT SELECTはビットを指定さ れたレジスタの正しいビット位置へと出力する。 次に、16ビットの算術演算ADIWおよびSBIW、すなわち、それぞれ論 理16ビットレジスタX、Y、Zの1つと定数値との加算および減算について考 える。図2Bをまず参照し、ADIWおよびSBIW命令の図は、OP_COD Eフィールドおよび定数値オペランドKが、命令デコーダ(図1)によるデコー ディングに際し制御信号を生成することを示す。OP_CODEフィールドはA DD ENABLEまたはSUB ENABLE制御信号のいずれかを生成し、 これによってALU−2がその2つの入力において適切な算術演算を行なう。定 数値オペランドKは制御信号V5〜V0を生成し、これらはセレクタ110のV入 力に与えられる。制御信号V5〜V0はADIWおよびSBIW命令のオペランド において指定される定数Kの2進形を表わす。この発明の開示される実施例にお いては、定数Kは6ビットのデータである。さらに、定数値オペランドKはV SELECT制御信号を生成し、これはセレクタ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を可能化し、YS ELECT信号はレジスタR26およびR27を可能化し、Z SELECT信 号はレジスタR30およびR31を可能化する。OP_CODEフィールドは、 DATA16_IN ENABLE制御信号およびDATA16_OUT EN ABLE制御信号を生成する。DATA16_OUT ENABLE制御信号は 、データ出力ラッチ120、122に、選択された論理16ビットレジスタ内に 含まれるデータをデータ出力バス104へ出力させ、データ出力バス104は上 述のようにこれをALU−2へ送る。これに対して、DATA16_IN EN ABLE制御信号は、データ入力ラッチ124、126に、ALU−2の出力で 生成された結果としての和または差を入力させる。 次に論理16ビットレジスタX、Y、Zに関連するロードおよびストア命令 (LD、ST)について説明する。まず、16ビットレジスタのプリデクリメン トまたはポストインクリメントのいずれかがあるLDおよびST動作の形につい て考える。図2Cを参照し、更新を伴うロード/ストア動作のためのOP_CO DEフィールドは、更新がプリデクリメントであるかまたはポストインクリメン トであるかに依存して、DECR SELECTまたはINCR SELECT 制御信号のいずれかを発生する。DECR SELECT制御信号およびINC R SELECT制御信号は、適当な「−1」または「+1」の値を出力するよ うにセレクタ110を動作させ、これらの値はALU−2の一入力へ送られる。 ALU−2への他入力はレジスタファイル内の16ビットレジスタX、Y、Zの 選択される1つからデータ出力バス104を介して送られる。ADD ENAB LE信号が、ALU−2が値「−1」または「+1」を選択された16ビットレ ジスタの内容に付け加えるよう、発生される。MUX SELECT制御信号は 、レジスタファイルのバスインタフェース14’へアドレスを出力するようmu x114を動作させる。MUX SELECT制御信号のタイミングは、その命 令がプリデクリメントであるかまたはポストインクリメントであるかに依存して 変化する。もし、プリデクリメントが所望であれば、MUX SELECT制御 信号はALU−2がその動作を行なった後に生成され、したがって、mux11 4はALU−2による動作の前にALU−2の出力をバスインタフェース14’ へ転送できる。他方、もしポストインクリメントが所望であれば、MUX SE LECTはmux114にデータ出力バス104からバスインタフェース14’ へ転送させる。いずれの場合にも、ALU−2の出力はデータ入力バス102を 介してレジスタファイルへと送り返され、それによって選択された16ビットレ ジスタが更新され得る。 次に図3Aおよび図3Bを参照し、更新を伴うLDおよびST命令がX、Y、 Z SELECT制御信号ならびにDATA16_IN ENABLEおよびDA TAI6_OUT ENABLE制御信号を発生させることがわかる。これらの 信号は、ADIW命令およびSBIW命令に対するのと同様の態様で機能する。 というのは、いずれの場合にも16ビットレジスタの内容が更新されるからであ る。これらの制御信号に加えて、LDおよびST命令のレジスタオペランドRd をデコードした結果として、R0〜R31 SELECTおよびDATA8_I NおよびDATA8_OUT制御信号が生成されろ。ロード命令については、D ATA8_IN制御信号が16ビットレジスタにより参照されるデータをラッチ するよう下位バイトデータ入力ラッチ126を動作させ、これは次に、R0〜R 31 SELECT制御信号により選択される8ビットレジスタへロードされる 。ストア命令については、DATA8_OUT制御信号はR0〜R31 SEL ECT制御信号により選択される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により表わされる。A DD ENABLE制御信号はALU−2に選択された16ビットレジスタへ変 位を加算させる。しかし、ADIWおよびSBIWとは異なり、LDDおよびS TD命令は計算された値をアドレスとして間接アドレスバス14へ出力すること を許可するMUX SELECT信号を生成する。次に図3Aおよび図3Bを参 照し、LDDおよびSTD命令は2つの例外を除いては本質的にLDおよびST 命令と同じ制御信号を生成する。すなわち、16ビットレジスタの更新が行なわ れないためDATA16_IN ENABLEは発生されず、LDDおよびST D命令はYおよびZレジスタに限定される。 図3Bに示すような飛び越し命令IJMP、ICALLは、単純に、Zレジス タの選択およびZレジスタの内容の間接アドレスバス14への出力のためのDA TA16 OUT ENABLE制御信号の発生に関係する。図2B中、IJM Pおよび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ビット比較を実現できる。 : : ;レジスタR3およびR2に含まれる16ビット「値」を比較する ;レジスタR1およびR0に含まれる16ビット「値」と ; cp r2,r0 ; 下位バイトと比較 cpc r3,r1 ; 上位バイトと比較 brne LABEL ; 等しくなければ分岐させる : : LABEL: : : 「cp」命令は桁上げビットに影響し、桁上げビットは次に続く「cpc」命 令において使用される。レジスタ対R3/R2およびR1/R0は2つの16ビ ット値のためのホルダとして有効に働く。 これで、この発明のマイクロコントローラに関して開示される命令および論理 回路に関連する制御信号の説明は終わりである。上述の命令の実行に関連する制 御信号はこれらの信号のみではないことが理解される。マイクロコントローラの 他の素子を制御するために付加的な信号が生成される。たとえば、メモリアクセ スに関係する上述の命令のいくつかのためにアドレスおよび読出/書込ストロー ブが発生される。さらに、制御信号の発行を適切に同期させるため実行タイミン グ制御が必要とされる。しかし、集積コンピュータ回路分野の当業者は、過度の 実験を行なわずとも、この発明を実施するため必要な付加的な制御信号およびこ れらの信号の必須タイミングを判断することができる。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ミクレブスト,ガウテ ノルウェー、エヌ―7013 トロンヘイム、 テグルブレンネルベイエン、7・アー (72)発明者 ブライアント,ジョン・ディ アメリカ合衆国、94024 カリフォルニア 州、ロス・アルトス、ミレック・アベニ ュ、1693 【要約の続き】 て必要であったさまざまなロード、シフトおよび/また はマスキング動作を行なう必要性がなくなる。

Claims (1)

  1. 【特許請求の範囲】 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と値セレクタとを有し、前記1 6ビット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の制御信号を発 生することを特徴とし、これによって、前記レジスタ手段は前記レジスタ対へ1 6ビットレジスタとしてアクセスさせられ、前記数値セレクタは「+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 true JP2001504959A (ja) 2001-04-10
JP3694531B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141810A (ja) * 2010-12-29 2012-07-26 Fujitsu Ltd 演算処理装置および演算処理方法

Families Citing this family (17)

* 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
EP1502250A1 (en) * 2002-04-26 2005-02-02 Telefonaktiebolaget L M 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
TWI403954B (zh) * 2007-08-17 2013-08-01 O2Micro Int Ltd 具有指令集之電子系統、微控制器及其指令執行方法
US20090187735A1 (en) * 2008-01-22 2009-07-23 Sonix Technology Co., Ltd. Microcontroller having dual-core architecture
CN101539849B (zh) * 2009-04-21 2013-10-16 北京红旗胜利科技发展有限责任公司 一种处理器以及一种寄存器选通方法
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 日本電気株式会社 マイクロプロセッサ
EP0539782B1 (en) * 1991-10-28 1999-04-21 Eastman Kodak Company Circuit for controlling data transfer from VME bus to SCSI disk drive
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 複数のデータ転送サイズ及びプロトコルをサポートするバス

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141810A (ja) * 2010-12-29 2012-07-26 Fujitsu Ltd 演算処理装置および演算処理方法
US9043581B2 (en) 2010-12-29 2015-05-26 Fujitsu Limited Storing in other queue when reservation station instruction queue reserved for immediate source operand instruction execution unit is full

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5199931B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
EP0138419B1 (en) Central processing unit for a digital computer
JP3592230B2 (ja) データ処理装置
JP3649470B2 (ja) データ処理装置
US20180189066A1 (en) Processor
JP2001504959A (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
US20070124561A1 (en) Active memory command engine and method
JP2002540523A (ja) マイクロコントローラ命令セット
US4347566A (en) Data processor with register file and arithmetic logic circuit on one chip and register means directly connected to the chip
US5680632A (en) Method for providing an extensible register in the first and second data processing systems
JP2004086837A (ja) データ処理装置
US4812971A (en) Central processing unit for a digital computer
US4893235A (en) Central processing unit for a digital computer
JP3705811B2 (ja) 再構成可能なプログラム状態語を有するマイクロコントローラ
EP0226991B1 (en) Data-processing device
JP2551167B2 (ja) マイクロコンピュータ
US5596761A (en) Central processing unit with internal register initializing means
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
US5768554A (en) Central processing unit
CA1250666A (en) Central processing unit for a digital computer
JPH11119995A (ja) データ処理装置および方法
JP2003131873A (ja) マイクロコンピュータ
JPH1185514A (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