CN102282538A - 具有特殊分组指令的微控制器 - Google Patents
具有特殊分组指令的微控制器 Download PDFInfo
- Publication number
- CN102282538A CN102282538A CN2010800047309A CN201080004730A CN102282538A CN 102282538 A CN102282538 A CN 102282538A CN 2010800047309 A CN2010800047309 A CN 2010800047309A CN 201080004730 A CN201080004730 A CN 201080004730A CN 102282538 A CN102282538 A CN 102282538A
- Authority
- CN
- China
- Prior art keywords
- memory
- register
- instruction
- mapped
- special function
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 165
- 230000006870 function Effects 0.000 claims abstract description 87
- 238000013507 mapping Methods 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 14
- 238000013500 data storage Methods 0.000 claims description 7
- 238000003860 storage Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Abstract
一种用于微控制器的指令集,所述微控制器具有:数据存储器,其被划分成多个存储器组,其中所述数据存储器具有所述多个存储器组中的一个以上存储器组,所述多个存储器组形成特殊功能寄存器未被映射到的线性数据存储器块;组选择寄存器,其未被映射到所述数据存储器且用于选择存储器组;以及间接存取寄存器,其被映射到至少一个存储器组,其中所述指令集包括:可操作以对选定组内的所有存储器位置直接寻址的多个指令;提供对所述组选择寄存器的存取的至少一个指令;以及使用所述间接存取寄存器执行对所述数据存储器的间接寻址的至少一个指令。
Description
相关申请案的交叉参考
本申请案主张2009年2月11日申请的标题为“分组式RISC微控制器中的线性存储器,以及具有分组式存储器的RISC MCU和特殊化分组指令(LINEAR MEMORY IN ABANKED RISC MICROCONTROLLER,AND RISC MCU WITH BANKED MEMORYAND SPECIALIZED BANKING INSTRUCTIONS)”的第61/151,754号美国临时申请案的权益,所述临时申请案的全文并入本文中。
技术领域
本发明涉及集成式微控制器,且更明确地说涉及微控制器的存储器存取。
背景技术
可线性存取的数据存储器空间需要大量存储器字节(例如,随机存取存储器(RAM)字节)在地址空间中相连地放置且为可寻址的。线性存储器可因此经由长度取决于RAM的大小的地址而完全寻址。具有长指令的微控制器(例如,32位微控制器或具有多个指令字的微控制器)可将此长地址容易地嵌入于指令的运算码(op-code)内。然而,较小架构(例如,具有有效的有限指令长度的8位架构)通常使用(例如)10-15个位的指令大小,所述指令大小不允许存储长地址。即使多个字指令可容纳较长地址,此情形仍反对紧密编码,且因此,此类处理器架构可能不能够对大线性地址空间直接寻址。因此,存储器分组(memory banking)是对较大存储器提供完全存取的有效方法。在存储器分组中,仅有限量(即,单个存储器组)借助于指针而可用。指令可因而含有存取选定存储器组内的所有存储器位置的足够位。为了切换到选定组外的存储器位置,需要修改指针。
举例来说,许多RISC架构微控制器仅可通过其指令直接存取存储器的有限量的字节(例如,32或64个字节)。通过使用32或64个字节的多个组,可存取额外存储器。微控制器一般为单个芯片上的具有外围设备的微处理器或中央处理单元(CPU)与存储器的组合。因此,使用存储器分组概念的微控制器进一步面临以下问题:用于(例如)控制这些外围设备及内部功能的许多特殊功能寄存器需要通过指令集进行存取。因此,这些特殊功能寄存器通过将其映射到数据存储器中而可用。因为对一些特殊功能寄存器的存取在执行程序时是关键的,所以在许多微控制器中,这些特殊功能寄存器中的一些寄存器需要始终是可用的。举例来说,如果特殊功能寄存器仅可通过存储器进行存取,那么用于选择存储器组的特殊功能寄存器需要始终是可存取的,否则,用户将陷于并未使此寄存器可用的存储器组中。为适应此情形,在许多微控制器中,数据存储器映射将最小数目的此类特殊功能寄存器(SFR)置于存储器的每一组中。然而,此情形致使数据存储器不相连,因为未经映射的存储器块由经存储器映射的寄存器分开。
发明内容
因此,需要一种具有分组式存储器的微控制器,所述分组式存储器还提供比存储器组大的线性存储器空间。
根据一实施例,一种用于微控制器的指令集,所述微控制器可包含:数据存储器,其被划分成多个存储器组,其中所述数据存储器包含形成线性数据存储器的块的未被映射特殊功能寄存器的所述多个存储器组中的一个以上存储器组;组选择寄存器,其未映射到所述数据存储器,且用于选择存储器组;以及间接存取寄存器,其映射到至少一个存储器组,所述指令集包含:
可操作以对选定组内的所有存储器位置直接寻址的多个指令;
提供对所述组选择寄存器的存取的至少一个指令;
使用所述间接存取寄存器执行对所述数据存储器的间接寻址的至少一个指令。
根据另一实施例,提供对所述组选择寄存器的存取的所述至少一个指令可将文字写入到所述组选择寄存器。根据另一实施例,提供对所述组选择寄存器的存取的另一指令可读取所述组选择寄存器的内容。根据另一实施例,提供对所述组选择寄存器的存取的另一指令可对所述组选择寄存器的内容执行算术或逻辑函数。根据另一实施例,可使用可操作以对选定组内的所有存储器位置直接寻址的所述多个指令来存取被存储器映射到少于所述多个存储器组的存储器组的特殊功能寄存器。根据另一实施例,所述数据存储器可包含n个存储器组,且特殊功能寄存器可仅映射到所述n个存储器组中的最先m个存储器组,其中m<n。根据另一实施例,n=8且m=4。根据另一实施例,所述m个存储器组中的偶数存储器组各自可含有经存储器映射的特殊功能寄存器的第一集合,且所述m个存储器组中的奇数存储器组各自可含有不同于所述第一集合的经存储器映射的特殊功能寄存器的第二集合。根据另一实施例,使用所述间接存取寄存器执行对所述数据存储器的间接寻址的所述至少一个指令可为可操作以对选定组内的所有存储器位置直接寻址的所述多个指令中的一者,其中所述选定地址指向特殊功能寄存器。根据另一实施例,所述特殊功能寄存器可为虚拟寄存器。根据另一实施例,使用所述间接存取寄存器执行对所述数据存储器的间接寻址的所述至少一个指令可具有用于执行间接寻址的特定运算码。根据另一实施例,所述微控制器可为使用12位指令字的8位微控制器。
根据又一实施例,一种用于在包含数据存储器(其中所述数据存储器被划分成多个存储器组)的微控制器中执行指令的方法可包含以下步骤:
-仅经由存储器映射而提供对特殊功能寄存器的存取,其中间接寻址寄存器映射到至少一个存储器组;
-在无寄存器映射的情况下,在所述存储器内提供多个存储器组,进而形成线性存储器块;
-提供未经存储器映射的组选择寄存器;
对指令进行解码;
如果经解码的指令识别对所述组选择寄存器的写入存取,那么:
-将所述指令中所含有的文字写入到所述组选择寄存器中,其中所述组选择寄存器的内容选择所述多个存储器组中的一者;
如果经解码的指令包括直接地址,那么:
-由所述组选择寄存器选择存储器组,以及
-通过由指令寄存器提供的地址来对所述选定存储器组寻址;
且如果经解码的指令识别间接寻址,那么:
-使用由所述经存储器映射的间接寻址寄存器提供的地址。
根据另一实施例,如果经解码的指令识别对所述组选择寄存器的读取存取,那么所述方法可包含以下步骤:读取所述组选择寄存器中所含有的文字。根据另一实施例,如果经解码的指令识别待对所述组选择寄存器执行的算术或逻辑函数,那么所述方法可包含以下步骤:读取所述组选择寄存器中所含有的文字;对所述文字执行算术或逻辑函数;以及将所述文字写入到所述组选择寄存器。根据另一实施例,可使用可操作以对选定组内的所有存储器位置直接寻址的指令来存取被存储器映射到少于所述多个存储器组的存储器组的特殊功能寄存器。根据另一实施例,所述数据存储器可包含n个存储器组,且特殊功能寄存器可仅映射到所述n个存储器组中的最先m个存储器组,其中m<n。根据另一实施例,n=8且m=4。根据另一实施例,所述m个存储器组中的偶数存储器组各自可含有经存储器映射的特殊功能寄存器的第一集合,且所述m个存储器组中的奇数存储器组各自可含有不同于所述第一集合的经存储器映射的特殊功能寄存器的第二集合。根据另一实施例,可通过执行对特定的特殊功能寄存器执行读取或写入的指令来执行对所述数据存储器的间接寻址。根据另一实施例,所述特殊功能寄存器可为虚拟寄存器。根据另一实施例,可通过执行对特定的特殊功能寄存器执行读取或写入的指令来执行对所述数据存储器的间接寻址。
附图说明
图1展示常规微控制器的框图;
图2展示根据一实施例的示范性微控制器的框图;
图3是展示常规分组式存储器的框图;
图4展示偶数组及奇数组各自含有特殊功能寄存器的不同集合的示范性映射;
图5展示根据一实施例的存储器映射;以及
图6展示根据一实施例的256字节数据存储器的示范性映射。
具体实施方式
根据本发明的教示,提供未经存储器映射的组选择寄存器(BSR)以用于选择用于直接寻址的多个存储器组中的一者。存储器映射寄存器用于独立于选定存储器组的间接寻址。特殊化分组指令(例如,将“文字移动到BSR寄存器(MOVLB)”)的添加允许存储器的组中的所有数据字节用于通用数据,且因此,允许进行跨越不含有任何经映射的特殊功能寄存器的多个存储器组的相连寻址。因此,选择作用中存储器组的BSR寄存器未在数据寄存器中映射,但可能可用特殊化命令进行存取。
因此,其中并不具有或需要特殊寄存器的多个存储器组是可用的。此情形在不必担心或需要每一存储器组中的特殊功能寄存器(SFR)的情况下允许经由间接寻址寄存器(FSR)对存储器的相邻组间接寻址。这允许进行(例如)用作缓冲器、表、暂存区(scratchpad area)等的存储器的较大块的寻址。可因此实施使用大小比分组式存储器大的数据结构的任何功能。
图1展示具有可用分组机制存取的数据存储器的常规微控制器的简化框图。程序存储器110存储形成可执行程序的多个指令。程序计数器115可被设计成具有(例如)用于对2k线性程序存储器寻址的11个位。可提供堆栈120以在执行子例程时存储程序计数器值。所示的示范性微控制器是以存储于程序存储器110中的12位指令字操作的8位哈佛(Harvard)型微控制器。因此,可使用中央8位数据总线105来耦合所述微控制器内的各种功能元件,例如,计时器单元0及外部端口B 130。数据存储器125与此总线105耦合,并从地址多路复用器140接收(例如)8位地址。对于直接寻址,地址多路复用器140组合来自由指令寄存器135供应的地址数据与由特殊功能寄存器145供应的地址数据的地址。在直接寻址模式中,指令寄存器135因此供应下方5个位,且特殊功能寄存器145供应上方3个位。因此,根据一实施例,特殊功能寄存器145作为能够选择8个不同存储器组中的一者的组选择寄存器而操作。在间接寻址中,特殊功能寄存器145提供具有所有位0-7的完整地址。通过存取作为虚拟寄存器且因此并非物理寄存器的特殊功能寄存器INDF来实施间接寻址。对此寄存器INDF的任何读取或写入存取迫使经由特殊功能寄存器145将间接存取应用于数据存储器125。因此,替代于读取或写入寄存器INDF,执行间接数据存储器存取。
根据各种实施例,指令寄存器135从程序存储器110直接接收指令且(例如)经由另一内部8位总线与指令解码及控制单元180耦合。指令解码及控制单元180此外与由单元175提供的某一内部功能耦合。举例来说,此功能单元175可包括装置复位计时器、开机复位元件(power-on reset)、监视计时器、内部RC时钟等。可集成其它功能且/或可省略某些功能。定时产生单元185可提供内部定时信号且还可与单元175耦合。图1中所示的常规8位微控制器核心具有与状态寄存器150耦合的算术逻辑单元160(ALU)。ALU 160进一步与工作寄存器165耦合,且一方面经由多路复用器155从指令寄存器135及8位数据总线接收数据,且另一方面从工作寄存器165接收数据。图1因此仅展示微控制器核心的一些本质结构。如将在下文中更详细地阐释,其它内部结构是可能的且可与图2中所示的特定实施例组合。
图3展示常规微控制器中的数据存储器125的结构及映射。如上文所提及,因为至少某一特殊功能寄存器必须始终可用,所以所有存储器组的地址00h-0Fh中的最先16个数据字节含有16个特殊功能寄存器的值。这些特殊功能寄存器可与存储器物理上分离。然而,映射架构将这16个特殊功能寄存器映射到所有存储器组。在图2中所示的实施例中,每一存储器组在地址00h-0Fh中含有相同特殊功能寄存器。然而,由于一些特殊功能寄存器不太关键,因此其可仅在每隔一个组中存取。因此,可将16个以上的特殊功能寄存器映射到最先16个地址中。举例来说,所有偶数组及所有奇数组分别具有相同映射结构。
图4展示偶数组及奇数组各自含有特殊功能寄存器的不同集合的示范性映射。举例来说,所有偶数组可具有映射到地址00h-06h的以下特殊功能寄存器:
INDF-如果经存取,那么使用FSR来间接对数据存储器寻址。
TMR0-计时器0模块寄存器
PCL-存储程序计数器的低阶位
STATUS-含有CPU的典型状态位
FSR-组选择寄存器,含有3个位以选择八个存储器页中的一者
OSCCAL-振荡器校准寄存器
PORTB-端口B寄存器
可将以下寄存器映射到所有奇数存储器组的地址00h-06h:
00h-INDF-如果经存取,那么使用FSR来间接地对数据存储器寻址。
01h-EECON-快闪存储器的配置位
02h-PCL-存储程序计数器的低阶位
03h-STATUS-含有CPU的典型状态位
04h-FSR-组选择寄存器,含有3个位以选择存储器页
05h-EEDATA-快闪存储器的自写入数据寄存器
06h-EEADR-快闪存储器的自写入地址
剩余地址07h-0Fh对于偶数及奇数存储器组都是相同的。如图3中所展示,每一组的上方地址10h-1Fh包含个别通用寄存器。然而,所述上方地址形成个别小存储器块且不形成一个线性存储器块。因此,如果(例如)表大于一个组中的通用寄存器的最大小大,那么所述表必须被分布到一个以上组,且存取此表必须进行麻烦的编程。
图2展示克服此限制的微控制器的一示范性实施例。一般来说,类似元件具有相同参考符号。图2中所示的数据存储器RAM 225可与如图1中所示的存储器相同。然而,如将在下文中更详细地阐释,使用不同参考符号来指示以不同方式映射此RAM 225。此数据存储器现包含由特殊功能寄存器未被映射到的多个连续存储器组组成的线性存储器块。提供额外组选择寄存器(BSR)210,其中此寄存器可经由专用指令存取且因此未经存储器映射。此寄存器210的内容提供由地址多路复用器220提供的地址的上方3个位,所述地址多路复用器220从指令寄存器135接收下方5个位。特殊功能寄存器FSR145现可为可独立于当前选定存储器组而用于间接寻址整个线性数据存储器的8位寄存器。在其它实施例中,此寄存器可限于通过将位7永久设定成“1”而存取形成所述线性数据存储器的上方4个组。然而,此寄存器自身不再提供组选择功能。仅通过将相应组编号写入到未经存储器映射的组选择寄存器210中来实现组选择。因此,即使当选择线性存储器块内的存储器组时,专用指令仍允许改变为任何其它存储器组。
图5展示可如何将特殊功能寄存器映射到数据存储器225的一实施例。在此实施例中,仅使用下方四个组来提供对特殊功能寄存器的存取,而上方四个组现提供线性相连数据存储器空间。图4还展示如何执行直接及间接寻址。此处,未经存储器映射的寄存器BSR 210提供组选择信息,进而向地址多路复用器220提供上方三个地址位。指令寄存器提供下方5个地址位。多路复用器220组合这两个地址数据部分以形成用以对数据存储器225寻址的8位地址。在其它实施例中,可使用更多或更少位来形成地址。如将在图6中更详细地阐释,如果组选择寄存器210选择下方四个存储器组中的一者,那么可将所有地址00h-0Fh映射回到组0或交替地映射回到组0或组1。如上文所提及,上方四个存储器组不具有映射到其的特殊功能寄存器,且因此形成相连线性数据存储器。此线性存储器块仍可通过使用组选择寄存器210及指令运算码中所提供的地址信息来通过直接寻址来存取。然而,直接寻址限于仅在当前选定组内执行。因此,或者可通过特殊功能寄存器FSR 245来间接存取线性存储器块,所述特殊功能寄存器FSR 245现可存储能够独立于选定存储器组而对数据存储器225完全寻址的8位地址。因此,举例来说,可经由间接寻址简单地存取具有(例如)128个条目的表、暂存器或缓冲器。如上文所阐释,借助于此特殊功能寄存器245对整个数据存储器进行的存取可经由特殊指令来执行,或如果未实施此指令,那么经由对特殊功能寄存器INDF的读取或写入存取来执行。
由于组选择寄存器210未经存储器映射的事实,如上文所提及,保留特殊运算码以执行相对于此寄存器的读取及写入功能。一个或一个以上专用指令提供对未经存储器映射的组选择寄存器210的直接存取。举例来说,可使用单个指令“将文字移动到BSR寄存器”(MOVLB)来将数据传送到组选择寄存器210中。组选择寄存器210的可用位取决于数据存储器划分成的存储器组的数目。在图5及图6中所示的实例中,将数据存储器划分成八个存储器组,每一组具有32个字节。因此,此实施例提供256个数据存储器字节,其中上方四个组提供形成未被经映射的特殊功能寄存器中断的线性存储器块的128个字节。
指令MOVLB在经解码时提供对组选择寄存器的直接存取且(例如)将文字直接写入到寄存器210中,其中(例如)仅传送所述文字的下方3个位。可使用其它编码,且可使用一个以上指令来对组选择寄存器210进行读取及/或写入。在其它实施方案中,可提供更多存储器组,且组选择寄存器210可具有能够对所有组寻址的3个以上位。可提供其它额外专用指令。举例来说,可提供读取指令,或任何类型的算术或逻辑修改指令,例如递增及递减、遮蔽或布尔函数(Boolean function)。为此,可提供特殊功能寄存器210与ALU 160的额外耦合,如由图2中的虚线所指示。
图6展示组0及2各自含有与组1及3不同的特殊功能寄存器集合的256字节数据存储器的示范性映射。举例来说,可将以下特殊功能寄存器映射到组0及2的地址00h-06h:
00h-INDF-如果经存取,那么使用FSR来间接对数据存储器寻址。
01h-TMR0-计时器0模块寄存器
02h-PCL-存储程序计数器的低阶位
03h-STATUS-含有CPU的典型状态位
04h-FSR-组选择寄存器,含有3个位以选择存储器页
05h-OSCCAL-振荡器校准寄存器
06h-PORTB-端口B寄存器
可将以下寄存器映射到组1及3的地址00h-06h:
00h-INDF-如果经存取,那么使用FSR来间接对数据存储器寻址。
01h-EECON-快闪存储器的配置位
02h-PCL-存储程序计数器的低阶位
03h-STATUS-含有CPU的典型状态位
04h-FSR-组选择寄存器,含有3个位以选择存储器页
05h-EEDATA-快闪存储器的自写入数据寄存器
06h-EEADR-快闪存储器的自写入地址
将哪一特殊功能寄存器映射到下方四个组的选择取决于特定实施方案且可变化。而且,存储器组的数目以及用以形成线性存储器块的组的数目可更小或更大。
尽管本发明的实施例已加以描绘、描述且参考本发明的实例实施例得以界定,但此类参考并非暗示对本发明的限制,且不应推断出此类限制。如相关领域的且得到本发明的益处的一般技术人员将想到,所揭示的标的物能够容许形式及功能上的相当大的修改、更改及等效物。本发明的所描绘并描述的实施例仅为实例,而并非对本发明的范围的详尽描述。
Claims (22)
1.一种用于的指令集,所述微控制器包含:数据存储器,其被划分成多个存储器组,其中所述数据存储器包含所述多个存储器组中的一个以上存储器组,所述多个存储器组形成特殊功能寄存器未被映射到的线性数据存储器块;组选择寄存器,其未被映射到所述数据存储器且用于选择存储器组;以及间接存取寄存器,其被映射到至少一个存储器组,所述指令集包含:
可操作以对选定组内的所有存储器位置直接寻址的多个指令;
提供对所述组选择寄存器的存取的至少一个指令;
使用所述间接存取寄存器执行对所述数据存储器的间接寻址的至少一个指令。
2.根据权利要求1所述的指令集,其中提供对所述组选择寄存器的存取的所述至少一个指令将文字写入到所述组选择寄存器。
3.根据权利要求2所述的指令集,其中提供对所述组选择寄存器的存取的另一指令读取所述组选择寄存器的内容。
4.根据权利要求2所述的指令集,其中提供对所述组选择寄存器的存取的另一指令对所述组选择寄存器的内容执行算术或逻辑函数。
5.根据权利要求1所述的指令集,其中所述可操作以对选定组内的所有存储器位置直接寻址的多个指令用以存取被存储器映射到少于所述多个存储器组的存储器组的特殊功能寄存器。
6.根据权利要求5所述的指令集,其中所述数据存储器包含n个存储器组,且特殊功能寄存器仅被映射到所述n个存储器组中的最先m个存储器组,其中m<n。
7.根据权利要求6所述的指令集,其中n=8且m=4。
8.根据权利要求6所述的指令集,其中所述m个存储器组中的偶数存储器组各自含有经存储器映射的特殊功能寄存器的第一集合,且所述m个存储器组中的奇数存储器组各自含有不同于所述第一集合的经存储器映射的特殊功能寄存器的第二集合。
9.根据权利要求1所述的指令集,其中所述使用所述间接存取寄存器执行对所述数据存储器的间接寻址的至少一个指令是所述可操作以对选定组内的所有存储器位置直接寻址的多个指令中的一者,其中所述选定地址指向特殊功能寄存器。
10.根据权利要求9所述的指令集,其中所述特殊功能寄存器是虚拟寄存器。
11.根据权利要求1所述的指令集,其中所述使用所述间接存取寄存器执行对所述数据存储器的间接寻址的至少一个指令具有用于执行间接寻址的特定运算码。
12.根据权利要求1所述的指令集,其中所述微控制器是使用12位指令字的8位微控制器。
13.一种用于在微控制器中执行指令的方法,所述微控制器包含数据存储器,其中所述数据存储器被划分成多个存储器组,所述方法包含以下步骤:
仅经由存储器映射来提供对特殊功能寄存器的存取,其中间接寻址寄存器被映射到至少一个存储器组;
在无寄存器映射的情况下,在所述存储器内提供多个存储器组,进而形成线性存储器块;
提供未经存储器映射的组选择寄存器;
对指令进行解码;
如果经解码的指令识别对所述组选择寄存器的写入存取,那么:
将所述指令中所含有的文字写入到所述组选择寄存器中,其中所述组选择寄存器的内容选择所述多个存储器组中的一者;
如果经解码的指令包括直接地址,那么:
由所述组选择寄存器选择存储器组,以及
通过由指令寄存器提供的地址来对所述选定存储器组寻址;
且如果经解码的指令识别间接寻址,那么:
使用由所述经存储器映射的间接寻址寄存器提供的地址。
14.根据权利要求13所述的方法,其中如果经解码的指令识别对所述组选择寄存器的读取存取,那么读取所述组选择寄存器中所含有的文字。
15.根据权利要求13所述的方法,其中如果经解码的指令识别待对所述组选择寄存器执行的算术或逻辑函数,那么:
读取所述组选择寄存器中所含有的文字,
对所述文字执行算术或逻辑函数,以及
将所述文字写入到所述组选择寄存器。
16.根据权利要求13所述的方法,其中使用可操作以对选定组内的所有存储器位置直接寻址的指令来存取被存储器映射到少于所述多个存储器组的存储器组的特殊功能寄存器。
17.根据权利要求16所述的方法,其中所述数据存储器包含n个存储器组,且特殊功能寄存器仅被映射到所述n个存储器组中的最先m个存储器组,其中m<n。
18.根据权利要求17所述的方法,其中n=8且m=4。
19.根据权利要求17所述的方法,其中所述m个存储器组中的偶数存储器组各自含有经存储器映射的特殊功能寄存器的第一集合,且所述m个存储器组中的奇数存储器组各自含有不同于所述第一集合的经存储器映射的特殊功能寄存器的第二集合。
20.根据权利要求13所述的方法,其中通过执行对特定的特殊功能寄存器执行读取或写入的指令来执行对所述数据存储器的间接寻址。
21.根据权利要求20所述的方法,其中所述特殊功能寄存器是虚拟寄存器。
22.根据权利要求13所述的方法,其中通过执行对特定的特殊功能寄存器执行读取或写入的指令来执行对所述数据存储器的间接寻址。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15175409P | 2009-02-11 | 2009-02-11 | |
US61/151,754 | 2009-02-11 | ||
US12/701,720 US8799552B2 (en) | 2009-02-11 | 2010-02-08 | Microcontroller with special banking instructions |
US12/701,720 | 2010-02-08 | ||
PCT/US2010/023706 WO2010093661A2 (en) | 2009-02-11 | 2010-02-10 | Microcontroller with special banking instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102282538A true CN102282538A (zh) | 2011-12-14 |
CN102282538B CN102282538B (zh) | 2015-04-22 |
Family
ID=42541313
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080004730.9A Active CN102282538B (zh) | 2009-02-11 | 2010-02-10 | 具有特殊分组指令的微控制器 |
CN201080004731.3A Active CN102282539B (zh) | 2009-02-11 | 2010-02-10 | 微控制器以及用于对微控制器的数据存储器寻址的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080004731.3A Active CN102282539B (zh) | 2009-02-11 | 2010-02-10 | 微控制器以及用于对微控制器的数据存储器寻址的方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8793426B2 (zh) |
EP (2) | EP2396723B1 (zh) |
KR (2) | KR101668314B1 (zh) |
CN (2) | CN102282538B (zh) |
ES (1) | ES2619724T3 (zh) |
TW (2) | TWI483179B (zh) |
WO (2) | WO2010093657A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109074257A (zh) * | 2016-05-12 | 2018-12-21 | 密克罗奇普技术公司 | 增强型低成本微控制器 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541745B (zh) * | 2010-12-31 | 2015-10-21 | 上海海尔集成电路有限公司 | 微控制器数据存储器的寻址方法和微控制器 |
US9513912B2 (en) | 2012-07-27 | 2016-12-06 | Micron Technology, Inc. | Memory controllers |
US9304693B1 (en) | 2012-12-17 | 2016-04-05 | Marvell International Ltd. | System and method for writing data to a data storage structure |
TWI474169B (zh) * | 2012-12-22 | 2015-02-21 | Himax Tech Ltd | 記憶體資料存取方法及記憶體資料存取控制器 |
US20160170466A1 (en) * | 2014-12-15 | 2016-06-16 | Jefferson H. HOPKINS | Power saving multi-width processor core |
US9946482B2 (en) * | 2015-07-14 | 2018-04-17 | Microchip Technology Incorporated | Method for enlarging data memory in an existing microprocessor architecture with limited memory addressing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029241A (en) * | 1997-10-28 | 2000-02-22 | Microchip Technology Incorporated | Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor |
CN1898641A (zh) * | 2003-10-23 | 2007-01-17 | 密克罗奇普技术公司 | 微控制器指令集 |
US7203818B2 (en) * | 1999-03-26 | 2007-04-10 | Microchip Technology Inc. | Microcontroller instruction set |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727510A (en) * | 1985-05-24 | 1988-02-23 | Unisys Corporation | System for addressing a multibank memory system |
JPS6298434A (ja) * | 1985-10-25 | 1987-05-07 | Hitachi Ltd | デ−タ処理システム |
US5317706A (en) * | 1989-11-15 | 1994-05-31 | Ncr Corporation | Memory expansion method and apparatus in a virtual memory system |
US5530934A (en) * | 1991-02-02 | 1996-06-25 | Vlsi Technology, Inc. | Dynamic memory address line decoding |
WO1993010501A1 (en) | 1991-11-12 | 1993-05-27 | Microchip Technology Inc. | Microcontroller with fuse-emulating latches |
WO1994003860A1 (en) * | 1992-08-07 | 1994-02-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
US5579277A (en) * | 1995-05-01 | 1996-11-26 | Apple Computer, Inc. | System and method for interleaving memory banks |
DE19718658A1 (de) * | 1997-05-02 | 1998-11-05 | Philips Patentverwaltung | Verfahren zur Kennzeichnung von Video-Daten und Video-Datenspeichern mit Mitteln zur Erzeugung eines Video-Daten-Codes |
SE518099C2 (sv) | 1997-11-21 | 2002-08-27 | Claes Johansson Automotive Ab | Inställbart pedalställ för ett fordon |
US6009019A (en) * | 1998-02-05 | 1999-12-28 | S3 Incorporated | Real time DRAM eliminating a performance penalty for crossing a page boundary |
US6795911B1 (en) | 2000-01-28 | 2004-09-21 | Oki Electric Industry Co., Ltd. | Computing device having instructions which access either a permanently fixed default memory bank or a memory bank specified by an immediately preceding bank selection instruction |
JP2002073330A (ja) * | 2000-08-28 | 2002-03-12 | Mitsubishi Electric Corp | データ処理装置 |
US6603704B2 (en) * | 2001-09-26 | 2003-08-05 | Micron Technology, Inc. | Reduced current address selection circuit and method |
US7437532B1 (en) * | 2003-05-07 | 2008-10-14 | Marvell International Ltd. | Memory mapped register file |
KR100897857B1 (ko) | 2003-10-23 | 2009-05-15 | 마이크로칩 테크놀로지 인코포레이티드 | 마이크로컨트롤러 명령어 셋트 |
US7082075B2 (en) * | 2004-03-18 | 2006-07-25 | Micron Technology, Inc. | Memory device and method having banks of different sizes |
US7359252B2 (en) * | 2006-01-09 | 2008-04-15 | Infineon Technologies Ag | Memory data bus structure and method of transferring information with plural memory banks |
US9208095B2 (en) * | 2006-12-15 | 2015-12-08 | Microchip Technology Incorporated | Configurable cache for a microprocessor |
-
2010
- 2010-02-08 US US12/701,664 patent/US8793426B2/en active Active
- 2010-02-08 US US12/701,720 patent/US8799552B2/en active Active
- 2010-02-10 KR KR1020117012454A patent/KR101668314B1/ko active IP Right Grant
- 2010-02-10 CN CN201080004730.9A patent/CN102282538B/zh active Active
- 2010-02-10 EP EP10705693.9A patent/EP2396723B1/en active Active
- 2010-02-10 WO PCT/US2010/023701 patent/WO2010093657A2/en active Application Filing
- 2010-02-10 KR KR1020117012463A patent/KR101668317B1/ko active IP Right Grant
- 2010-02-10 CN CN201080004731.3A patent/CN102282539B/zh active Active
- 2010-02-10 EP EP10705692.1A patent/EP2396722B1/en active Active
- 2010-02-10 ES ES10705692.1T patent/ES2619724T3/es active Active
- 2010-02-10 WO PCT/US2010/023706 patent/WO2010093661A2/en active Application Filing
- 2010-02-11 TW TW099104422A patent/TWI483179B/zh active
- 2010-02-11 TW TW099104423A patent/TWI516918B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029241A (en) * | 1997-10-28 | 2000-02-22 | Microchip Technology Incorporated | Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor |
US7203818B2 (en) * | 1999-03-26 | 2007-04-10 | Microchip Technology Inc. | Microcontroller instruction set |
CN1898641A (zh) * | 2003-10-23 | 2007-01-17 | 密克罗奇普技术公司 | 微控制器指令集 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109074257A (zh) * | 2016-05-12 | 2018-12-21 | 密克罗奇普技术公司 | 增强型低成本微控制器 |
CN109074257B (zh) * | 2016-05-12 | 2023-09-01 | 密克罗奇普技术公司 | 增强型低成本微控制器 |
Also Published As
Publication number | Publication date |
---|---|
US8793426B2 (en) | 2014-07-29 |
CN102282539B (zh) | 2014-09-10 |
TWI483179B (zh) | 2015-05-01 |
KR101668317B1 (ko) | 2016-10-21 |
TW201035866A (en) | 2010-10-01 |
EP2396723B1 (en) | 2019-07-03 |
US20100205345A1 (en) | 2010-08-12 |
EP2396723A2 (en) | 2011-12-21 |
TW201035756A (en) | 2010-10-01 |
CN102282539A (zh) | 2011-12-14 |
WO2010093657A3 (en) | 2010-11-18 |
TWI516918B (zh) | 2016-01-11 |
US8799552B2 (en) | 2014-08-05 |
EP2396722A2 (en) | 2011-12-21 |
KR101668314B1 (ko) | 2016-10-28 |
ES2619724T3 (es) | 2017-06-26 |
CN102282538B (zh) | 2015-04-22 |
WO2010093657A2 (en) | 2010-08-19 |
KR20110128786A (ko) | 2011-11-30 |
EP2396722B1 (en) | 2016-12-21 |
US20100205346A1 (en) | 2010-08-12 |
WO2010093661A2 (en) | 2010-08-19 |
WO2010093661A3 (en) | 2010-11-25 |
KR20110128787A (ko) | 2011-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102282538B (zh) | 具有特殊分组指令的微控制器 | |
US7996647B2 (en) | Enhanced microprocessor or microcontroller | |
CN103460180B (zh) | 带有断言寄存器的处理器系统、计算机系统和用于管理断言的方法 | |
CN101196808A (zh) | 一种8位微控制器 | |
DE69518781T2 (de) | Stromverwaltungseinheiten für Rechnersysteme | |
JP6143841B2 (ja) | コンテキストスイッチを伴うマイクロコントローラ | |
US6542955B1 (en) | Microcontroller virtual memory system and method | |
CN102541745A (zh) | 微控制器数据存储器的寻址方法和微控制器 | |
CN107851008B (zh) | 在具有有限存储器寻址的现存微处理器架构中用于增大数据存储器的方法 | |
Gu et al. | RAM, DMA, and Interrupt | |
JAKOBSSON et al. | 7. PIC 16F84 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |