CN104303143B - 具有上下文切换的微控制器 - Google Patents
具有上下文切换的微控制器 Download PDFInfo
- Publication number
- CN104303143B CN104303143B CN201380025205.9A CN201380025205A CN104303143B CN 104303143 B CN104303143 B CN 104303143B CN 201380025205 A CN201380025205 A CN 201380025205A CN 104303143 B CN104303143 B CN 104303143B
- Authority
- CN
- China
- Prior art keywords
- register
- context
- memory
- group
- data storage
- 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.)
- Active
Links
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明揭示一种微处理器或微控制器装置,其可具有中央处理单元CPU、与所述CPU耦合的数据存储器,其中所述数据存储器被分为多个存储体,其中存储体选择寄存器确定哪一存储体当前与所述CPU耦合。此外,提供第一组及第二组特殊功能寄存器,其中在发生上下文切换时,选择所述第一组或所述第二组特殊功能寄存器作为所述CPU的作用中上下文寄存器,且选择相应的另一组特殊功能寄存器作为非作用中上下文寄存器,其中所述作用中上下文寄存器中的至少一些寄存器被存储器映射到所述数据存储器的两个以上存储体,且其中所述非作用中上下文寄存器的全部寄存器被存储器映射到所述数据存储器内的至少一个存储器位置。
Description
相关申请案的交叉参考
本申请案主张2012年3月21日申请的第61/613,802号美国临时申请案的权益,所述申请案的全文并入本文中。
技术领域
本发明涉及一种微控制器,特定来说,本发明涉及一种具有自动上下文切换能力的微控制器。
背景技术
微控制器一般为单芯片上的系统且包括微控制器核心或中央处理单元及多个外围组件。存在具有8位、16位及32位架构的多种此类微控制器。现有微控制器(例如由申请人微芯片技术公司(Applicant Microchip Technology Inc.)制造的8位微控制器)提供灵活架构,其中有多个系列,每一系列具有不同复杂性。此类微控制器可例如包括哈佛(Harvard)架构,其中使程序存储器及数据存储器分离。此类型的微控制器可进一步包括允许存取数据存储器且无需复杂解码电路的特定存储体分组(banking)系统。一般来说,数据存储器被分为多个存储体且存储体选择寄存器定义存储体中的何者当前被选择且可存取。为存取其它存储体,必须对所述存储体选择寄存器进行重新编程。尽管此存储体分组方案仅允许存取单一经定义存储体,但这些控制器仍可包含强制切换到预定义存储体的指令。这提供了改进且强大的性能,纵使具有一般存取限制。
根据产品调色板(product palette),可如上文所提及提供8位系列中的不同系列的微控制器。例如,基线系列可能仅提供允许以非常低的成本制造此类装置的基本功能。例如,此基线产品可不支持中断,其中更高级的系列可具有这些功能。中断功能可增加不允许以非常低的成本制造此类装置的大量电路。
如上文所提及,许多微控制器设计(特定来说,8位微控制器)具有减少的功能且因此具有简化架构以节省宝贵的硅片空间,且允许减小的芯片大小并因此允许每晶片的更高数目个芯片。例如,根据申请人微芯片技术公司的产品种类,许多所谓的基线8位微控制器的代码执行因缺乏中断功能而受限制。
图1展示具有可用存储体分组机制存取的数据存储器的此常规微控制器的简化框图。程序存储器110存储形成可执行程序的多个指令。程序计数器115可经设计以具有例如用于寻址2k线性程序存储器的11个位。可在执行子例程时提供堆栈120以存储程序计数器值。所展示的示范性微控制器为对存储于程序存储器110中的12位指令字操作的8位哈佛型微控制器。因此,中央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可包含装置复位计时器、通电复位、监视计时器、内部RC时钟等等。可集成其它功能及/或可省略某些功能。计时产生单元185可提供内部计时信号且还可与单元175耦合。图1中所展示的常规8位微控制器核心具有与状态寄存器150耦合的算术逻辑单元160(ALU)。ALU 160进一步与工作寄存器165耦合,且一方面通过多路复用器155而从指令寄存器135及8位数据总线接收数据且另一方面从工作寄存器165接收数据。因此,图1仅展示所谓的基线微控制器核心的一些基本结构。
图2展示提供更多功能的微控制器核心的另一框图的实例。一般来说,类似元件具有相同参考符号。图2中所展示的数据存储器RAM 225可与如图1中所展示的存储器相同。然而,不同参考符号用于指示此RAM 225被以不同方式映射,如下文更详细解释。此数据存储器现包括线性存储器块,其由未被映射特殊功能寄存器的多个顺序存储体组成。提供额外存储体选择寄存器(BSR)210,其中可通过专用指令而存取此寄存器且因此此寄存器可不被存储器映射。此寄存器210的内容提供由地址多路复用器220提供的地址的3个高位位,所述地址多路复用器从指令寄存器135接收5个低位位。特殊功能寄存器FSR 145现可为8位寄存器,不论当前选定的存储体如何,所述8位寄存器均可用于间接寻址整个线性数据存储器。在其它实施例中,此寄存器可受限制以通过将位7永久设定为“1”而存取形成线性数据存储器的4个高位存储体。然而,此寄存器自身不再提供存储体选择功能。仅通过将相应存储体编号写入到未经存储器映射的存储体选择寄存器210而实现存储体选择。因此,即使选择了线性存储器块内的存储体,所述专用指令也允许对任何其它存储体的改变。低成本微控制器核心的其它内部结构为可能的且可与各种实施例中所揭示的特定实施例组合,如下文更详细解释。
如上文所提及,归因于核心逻辑的增大,许多低成本微控制器核心不提供中断功能。可将简单中断逻辑250添加到上文所提及的架构(如图2中所展示),例如,可提供可从各种源起始中断的单一中断输入INT,其中软件必须处理中断相关任务的识别及管理。如果实施此简单中断逻辑250,那么中断服务例程代码必须与主线代码共享共同特殊功能寄存器。因此,需要在进入中断例程时手动保存例如寄存器245、165及150的某些寄存器。某些微控制器(例如申请人(Applicant)的微控制器系列PIC16F1xxx)提供使用所谓的影子寄存器的上下文寄存器的自动保存和恢复功能。影子寄存器是仅用于保存当前上下文的特殊功能寄存器。影子寄存器在每次起始中断时被覆写,且在从中断例程返回时,影子寄存器的内容被写回到相应上下文寄存器。然而,虽然此为改进,但当添加中断能力时,需要经更进一步改进的自动上下文切换以防止需要手动地存储且恢复那些寄存器且允许进一步使用所保存的上下文。
发明内容
根据实施例,一种微处理器或微控制器装置可包括中央处理单元(CPU);数据存储器,其与CPU耦合,其中所述数据存储器被分为多个存储体,其中存储体选择寄存器确定哪一存储体当前与CPU耦合;及第一组的特殊功能寄存器及第二组的特殊功能寄存器,其中在发生上下文切换时,选择所述第一组或所述第二组特殊功能寄存器作为所述CPU的作用中上下文寄存器且选择相应的另一组特殊功能寄存器作为非作用中上下文寄存器,其中所述作用中上下文寄存器的至少一些寄存器被存储器映射到所述数据存储器的两个以上存储体,且其中所述非作用中上下文寄存器的全部寄存器被存储器映射到所述数据存储器内的至少一个存储器位置。
根据另一实施例,非作用中上下文寄存器的全部寄存器可被存储器映射到多个存储体中的仅一个存储体。根据另一实施例,作用中上下文寄存器的至少一些寄存器可被存储器映射到数据存储器的全部存储体。根据另一实施例,上下文寄存器可包括工作寄存器、状态寄存器、用于定义间接地址的文件选择寄存器及存储体选择寄存器。根据另一实施例,仅作用中上下文寄存器中的所述状态寄存器及所述文件选择寄存器可被存储器映射到数据存储器的全部存储体,而所述工作寄存器及所述存储体选择寄存器是非存储器映射的寄存器。根据另一实施例,非作用中上下文寄存器可被存储器映射到数据存储器的最后存储体。根据另一实施例,所述装置可进一步包括与CPU耦合的中断单元,其中由中断诱发上下文切换。根据另一实施例,可软件诱发上下文切换。根据另一实施例,装置可包括四个存储体。根据另一实施例,非作用中上下文寄存器可仅被存储器映射到第四存储体。
根据另一实施例,一种操作微处理器或微控制器装置(其包括:中央处理单元(CPU);数据存储器,其与CPU耦合,其中所述数据存储器被分为多个存储体;第一组及第二组的特殊功能寄存器,其中所述第一组或所述第二组特殊功能寄存器形成作用中上下文且相应的另一组形成非作用中上下文)的方法可包括以下步骤:选择所述第一组或所述第二组寄存器作为作用中上下文且选择相应的另一组寄存器作为非作用中上下文,其中所述作用中上下文寄存器的至少一些寄存器被存储器映射到所述数据存储器的两个以上存储体,且其中所述非作用中上下文寄存器的全部寄存器被存储器映射到所述数据存储器内的至少一个存储器位置;在发生上下文切换时,在分别作为作用中上下文及非作用中上下文的所述第一组与所述第二组寄存器之间进行切换。
根据方法的另一实施例,非作用中上下文寄存器的全部寄存器可被存储器映射到多个存储体的仅一个存储体。根据方法的另一实施例,所述方法可进一步包括通过中断诱发上下文切换。根据方法的另一实施例,可软件诱发上下文切换。根据方法的另一实施例,所述装置可包括四个存储体。根据方法的另一实施例,非作用中上下文寄存器可仅被存储器映射到第四存储体。根据方法的另一实施例,作用中上下文的至少一些寄存器可被存储器映射到数据存储器的全部存储体。根据方法的另一实施例,上下文寄存器可包括工作寄存器、状态寄存器、用于定义间接地址的文件选择寄存器及存储体选择寄存器。根据方法的另一实施例,仅作用中上下文寄存器中的所述状态寄存器及所述文件选择寄存器被存储器映射到数据存储器的全部存储体,而所述工作寄存器及所述存储体选择寄存器是非存储器映射的寄存器。根据方法的另一实施例,非作用中上下文寄存器被存储器映射到数据存储器的最后存储体。根据方法的另一实施例,方法可进一步包括通过经由作用中上下文选择相应存储体且存取非作用中上下文寄存器而存取非作用中上下文的寄存器。根据方法的另一实施例,所述方法可包括产生多个中断,其中在发生中断时,发生上下文切换,其中执行中断例程,且其中所述中断例程使用在所述中断例程的前一执行期间存储于选定寄存器组中的值。
附图说明
图1展示常规微控制器的框图;
图2展示另一常规微控制器的框图;
图3展示可调换影子寄存器组的实施例;
图4展示用于提供双重寄存器组的循环缓冲器的另一实施例;
图5展示根据各种实施例的存储器映射;
图6及图7展示详细的特殊功能摘要表;及
图8展示根据各种实施例的中断优先级。
具体实施方式
上文所提及的微控制器中的基线CPU通常不具有中断能力。将中断添加到基线CPU造成特定缺点及限制。根据各种实施例的上下文切换克服了那些缺点中的许多者。
当具有中断能力的装置引导到其中断服务例程(ISR)时,必须保存及恢复各种寄存器的值或上下文以允许程序在返回到主线代码时从其停止的位置继续执行。其它寄存器必须在装置每次引导到ISR时被重新初始化。根据各种实施例的上下文切换允许对于每一主线及ISR执行代码维持这些关键寄存器的复本且被调换使用。根据各种实施例,提供将循环缓冲器添加到上下文寄存器以允许在进入及退出ISR时调换所含有的值。
根据各种实施例,例如图3或图4中所展示,可将上下文切换机制添加到基本处理器逻辑以提供中断能力及相关联的上下文切换。因此,可通过提供额外组的寄存器(其中添加调换功能)而改进如图1或图2中所展示的架构。因此,并非将当前上下文保存到影子寄存器组中,而是提供整个第二组的寄存器,且在中断的执行期间使用此第二组。因此,提供中断上下文且中断上下文的内容保持存储于相关联的中断上下文寄存器中,同时由常规上下文寄存器以相同方式维持“正常”上下文。特定来说,可通过使用循环缓冲器而实施此类型的双寄存器组,所述循环缓冲器使用在数据块中回绕的相应指针以提供循环缓冲器功能。如下文更详细解释。
图3展示可用于提供上下文切换功能的循环缓冲器的示范性实施例。循环缓冲器300可经设计以为用于存储作用中及非作用中上下文的两个寄存器组提供存储容量。例如,上下文可包括4个、8个或16个寄存器,因此,循环缓冲器300将提供8个、16个或32个存储器位置或寄存器。循环缓冲器300可至少部分地被存储器映射到主数据存储器225中。例如,循环缓冲器300的前半部分可用作为主上下文,且后半部分可用作为中断上下文。无论何时,所述两个上下文中的仅一者为“作用中的”,而相应的另一上下文为“非作用中的”。因此,循环缓冲器的前半部分的某些寄存器可被存储器映射到全部存储体,其中后半部分的全部寄存器可仅被存储器映射到单一存储体,优选为最后存储体。因此,作用中寄存器组到存储体的存储器映射无需与非作用中寄存器组的存储器映射相同。当作用中上下文可被部分映射到全部存储体或选定数目个存储体时,“非作用中”上下文的全部寄存器被存储器映射到单一存储体,优选为最后存储体。作用中上下文的某些寄存器可根本不被存储器映射,而是被硬连线或映射到特定寄存器以执行特定功能。因此,在微控制器的操作期间,作用中上下文的经存储器映射的寄存器将在全部存储体中可存取,而其它非存储器映射的寄存器仅可通过专用指令而使用。例如,仅可通过特定指令而使用存储体选择寄存器。根据各种实施例,工作寄存器可被存储器映射或不被存储器映射。某些上下文寄存器(例如状态寄存器STATUS及/或文件选择寄存器FSR)可被存储器映射到全部存储体。然而,非作用中上下文的全部寄存器被存储器映射到至少一个单一“存储器位置”。所述寄存器无需被存储器映射到作用中上下文的相应寄存器的相同位置(这将使那些作用中寄存器在所述存储体中不可用)。此外,根据其它实施例,不要求将这些寄存器全部置于相同存储体中或定位于最后存储体中。
可通过如图3中所展示的指针310、320而提供根据此实施例的存储器映射。因此,指针310指向当前作用中上下文的第一寄存器,而指针330指向非作用中上下文的第一寄存器。可根据预定义关系而存储器映射其它寄存器。因此,存储器映射不必为连续的。可定义表来存储器映射每一寄存器。此表还可用于定义作用中上下文的非存储器映射的寄存器。类似地,非作用中上下文的全部寄存器可通过表而存储器映射到单一存储体。如图3中所展示,从A到B的上下文切换导致:指针310'现指向下半部分,而指针330'现指向循环缓冲器300的上半部分。可简单地通过将常数值添加到相应地址指针而提供此功能。通过在缓冲器300的最大可能地址范围内回绕,实现循环缓冲器功能,因此,在正常操作期间,将选择由缓冲器300的上半部分定义的上下文作为作用中上下文(如用图3的左侧的参考符号A所展示),而缓冲器300的下半部分的上下文仅被存储器映射到最后存储体。在进入中断例程时,根据如图3的右侧所展示的参考符号B而定位上下文指针。指针310'现指向缓冲器300的下半部分。因此,现将选择缓冲器300的下半部分寄存器作为作用中上下文。因此,中断例程的重新进入现在提供与由中断例程的前一次执行时留下的上下文相同的上下文,其中可通过最后存储体完全获得非作用中上下文。
图4展示提供类似功能的另一实施例。此处,分别为正常上下文及中断上下文提供两个寄存器410及420。提供双向多路复用器430及440以将某些寄存器存储器映射到数据存储器450的各种存储体450i。例如,多路复用器430的第一I/O可将寄存器组410的某些寄存器存储器映射到全部存储体4501…450n,而第二I/O将全部寄存器仅映射到存储体450n。第二多路复用器440执行逆向功能,如图4中所展示。因此,选择寄存器组410或寄存器组420作为主寄存器组。可提供额外电路以提供到非存储器映射的寄存器的连接或对非存储器映射的寄存器的选择。
图5展示根据实施例的基线微控制器中的存储器映射的实施方案。此处,例如,数据存储器仅为四个存储体提供存储器空间,其中每一存储体包括32个寄存器。因此,可通过仅5个位来完全寻址每一存储体。此允许减小指令大小,例如仅使用12个位。如图5中所展示,上下文可仅由有限数目个选定特殊功能寄存器组成。根据图5,上下文具有四个寄存器:工作寄存器W、状态寄存器STATUS、间接地址寄存器FSR及存储体选择寄存器BSR。如图中可见,根据此实施例,所述四个作用中上下文寄存器中的两者(即,工作寄存器W及存储体选择寄存器BSR)根本未被存储器映射。另外两者(状态寄存器STATUS及文件选择寄存器FSR)被分别存储器映射到地址03h及04h处的全部存储体。最后的存储体“011”含有非作用中上下文。如图所展示,非作用中工作寄存器I_W存储于地址01h处,非作用中状态寄存器I_STATUS存储于地址06h处,非作用中文件选择寄存器存储于地址07h处,及非作用中存储体选择寄存器I_BSR存储于地址08h处。在图5的实施例中,地址0Ch到地址0Fh处的寄存器被存储器映射到全部存储体,而每一存储体在存储器位置10h到1Fh处具有分离的通用寄存器。此外,地址00h到0Bh处的特殊功能寄存器的存储器映射对于全部存储体不尽相同。对于那些地址,仅存储体“000”及“010”具有相同存储器映射。根据其它实施例,可选择其它寄存器或更多寄存器用于上下文。
图6及7仅展示前12个经存储器映射的特殊功能寄存器的较详细列表。再一次,上下文由四个寄存器(工作寄存器W、存储体选择寄存器BSR、状态寄存器STATUS及文件选择寄存器FSR)组成。根据此实施例,再一次,作用中上下文的仅两个寄存器(STATUS及FSR)被存储器映射到相应地址03h、04h处的全部存储体(如图6及7中所展示),而四个未经存储器映射的寄存器W、TRIS、OPTION及BSR仍被提供到“全部存储体”(如图6及7的表中所展示)。非作用中上下文仅被存储器映射到线性化地址61h、66h、67h及68h处的最后存储体。
根据各种实施例,可给具有如上文所解释的增强中断功能的基线微控制器提供额外指令。例如,可将返回、从中断返回及移动字面值到BSR(Move Literal to BSR)指令添加到此微控制器核心以进一步支持中断及其它上下文切换功能。根据各种实施例,可因此不仅为了中断服务例程进入及退出而且为了由软件控制的其它事件而添加重要特殊功能寄存器的上下文切换。
根据各种实施例,可将三个新指令添加到基线微控制器:
MOVLB——移动字面值到BSR寄存器:此指令通过将常数值写入到存储体选择寄存器而直接控制所述存储体选择寄存器,借此迫使存储体切换。12位操作码可使用12'h010到12'h017。
RETURN——从CALL(调用)返回:此指令从子例程调用返回,其中基线仅提供使字节从最后程序位置返回到工作寄存器中的RETLW。12位操作码可使用12'h01E。
RETFIE——从中断返回:此指令从中断返回,其中如上文所提及,常规基线装置不具有中断。12位操作码可使用12'h01F。
根据各种实施例,如下实施中断上下文切换:当从中断服务例程执行时,使用选定SFR的第二复本(上下文)。例如,根据各种实施例,可在改进的微控制器装置上调换FSR寄存器、STATUS寄存器、BSR寄存器及W寄存器。虽然已从现有技术装置(例如PIC16F1xxx产品种类)获知使用所谓的影子寄存器来在进入服务例程时保存当前上下文且在退出服务例程时恢复所述上下文,但各种实施例允许调换可在各种存储体中的一者中实施的第二寄存器组。因此,在相应触发时发生真实的上下文切换,其中使用所述第二上下文寄存器组的内容,而非使用主上下文寄存器组。因此,中断例程可使用这些寄存器的一组完全不同的值且无需首先初始化这些寄存器。类似地,通过调换机制而处理主程序的值。
可存在两个寄存器调换触发源:
-中断时的引导
-从中断返回指令
每一上下文可由其相应源触发。此实施例使用两个上下文。根据另一实施例,可存在四个上下文:Interrupt0、Interrupt1、Interrupt2及Main。
根据各种实施例,经由如图7中所展示的I_W寄存器、I_STATUS寄存器、I_FSR寄存器及I_BSR寄存器,在特殊功能寄存器的存储体3中总能看见非作用中上下文。
可默认地启用根据各种实施例的中断功能。在常规基线装置上,任何中断源均会导致装置复位。设定GIE位会导致装置改为引导到地址0x004,以允许执行中断服务例程(ISR)。
从中断返回(RETFIE)指令用于从ISR返回且设定GIE位,从而启用后续中断。当装置正从ISR执行时,由CPU使用第二组W寄存器、STATUS寄存器、FSR寄存器及BSR寄存器。这些寄存器仍寻址于相同位置处,但保有用于在ISR内部使用的持久独立值。此允许这些寄存器的内容不受主线执行中的中断影响。经由I_W寄存器、I_STATUS寄存器、I_FSR寄存器及I_BSR寄存器,可在SFR映射的存储体3中看见其它上下文的寄存器的内容。当从ISR执行时,所述寄存器将展示主线上下文,且反之亦然。
根据实施例,可存在四个中断源:计时器TMR0、模/数转换器ADC、比较器及引脚改变(Pin Change)时的中断。使用INTEI_REG寄存器中的xxIE位来启用中断。可使用选项寄存器OPTION的RAWU位来启用引脚改变时的中断,以允许RAIF位起作用。如果在如图6中所展示的CM1CON0寄存器及CM2CON0寄存器中启用中断产生,那么可使用比较器中断旗标。
INTCON的GIE位启用到中断服务例程的引导。当设定WUR位时,任何经启用的睡眠中的中断源将导致装置唤醒且复位。此功能类似于传统基线操作。
图8为根据内部编程的不同优先级的可能实施方案。此处,提供三个控制位:指示低电力模式的“In Sleep”、启用中断的“GIE”及用于指示唤醒复位的“WUR”。图8中的表展示根据这些位的不同设定值的相关联功能。因此,可根据相应设定值而导致装置复位、引导或继续操作。
Claims (20)
1.一种微处理器或微控制器装置,其包括:
中央处理单元;
数据存储器,其与所述中央处理单元耦合,其中所述数据存储器被分为多个存储体,其中存储体选择寄存器确定哪一存储体当前与所述中央处理单元耦合;及
第一组的特殊功能寄存器及第二组的特殊功能寄存器,其中在发生上下文切换时,选择所述第一组或所述第二组特殊功能寄存器作为所述中央处理单元的作用中上下文寄存器且选择相应的另一组特殊功能寄存器作为非作用中上下文寄存器,其中所述作用中上下文寄存器中的至少一些所述寄存器中的每一者被存储器映射到所述数据存储器的两个以上存储体的相应相同地址,且其中所述非作用中上下文寄存器的全部寄存器中的每一者被存储器映射到所述数据存储器内与用于所述作用中上下文寄存器的所述地址不同的至少一个存储器位置;其中所述非作用中上下文寄存器的全部寄存器被存储器映射到所述多个存储体的仅一个存储体。
2.根据权利要求1所述的装置,其中所述作用中上下文寄存器中的所述至少一些所述寄存器被存储器映射到所述数据存储器的全部存储体。
3.根据权利要求1所述的装置,其中所述作用中上下文寄存器和所述非作用中上下文寄存器包括工作寄存器、状态寄存器、用于定义间接地址的文件选择寄存器及存储体选择寄存器。
4.根据权利要求3所述的装置,其中仅所述作用中上下文寄存器中的所述状态寄存器及所述文件选择寄存器被存储器映射到所述数据存储器的全部存储体,而所述工作寄存器及所述存储体选择寄存器是非存储器映射的寄存器。
5.根据权利要求1所述的装置,其中所述非作用中上下文寄存器被存储器映射到所述数据存储器的最后存储体。
6.根据权利要求1所述的装置,其进一步包括与所述中央处理单元耦合的中断单元,其中所述上下文切换由中断诱发。
7.根据权利要求1所述的装置,其中所述上下文切换是软件诱发的。
8.根据权利要求1所述的装置,其中所述装置包括四个存储体。
9.根据权利要求8所述的装置,其中所述非作用中上下文寄存器仅被存储器映射到第四存储体中。
10.一种操作微处理器或微控制器装置的方法,所述微处理器或微控制器装置包括:中央处理单元;数据存储器,其与所述中央处理单元耦合,其中所述数据存储器被分为多个存储体;第一组及第二组的特殊功能寄存器,其中所述第一组或所述第二组特殊功能寄存器形成作用中上下文且相应的另一组形成非作用中上下文,
所述方法包括以下步骤:
选择所述第一组或所述第二组寄存器作为作用中上下文寄存器且选择所述相应的另一组寄存器作为非作用中上下文寄存器,其中所述作用中上下文寄存器中的至少一些所述寄存器中的每一者被存储器映射到所述数据存储器的两个以上存储体的相应相同地址,且其中所述非作用中上下文寄存器的全部寄存器中的每一者被存储器映射到所述数据存储器内与用于所述作用中上下文寄存器的所述地址不同的至少一个存储器位置;其中所述非作用中上下文寄存器的全部寄存器被存储器映射到所述多个存储体中的仅一个存储体;
在发生上下文切换时,在分别作为作用中上下文及非作用中上下文的所述第一组与所述第二组寄存器之间进行切换。
11.根据权利要求10所述的方法,其进一步包括由中断诱发所述上下文切换的步骤。
12.根据权利要求10所述的方法,其进一步包括由软件诱发所述上下文切换的步骤。
13.根据权利要求10所述的方法,其中所述装置包括四个存储体。
14.根据权利要求13所述的方法,其中所述非作用中上下文寄存器仅被存储器映射到第四存储体中。
15.根据权利要求10所述的方法,其包括将所述作用中上下文中的所述至少一些所述寄存器存储器映射到所述数据存储器的全部存储体。
16.根据权利要求10所述的方法,其中所述作用中上下文寄存器和所述非作用中上下文寄存器中的每一者包括工作寄存器、状态寄存器、用于定义间接地址的文件选择寄存器及存储体选择寄存器。
17.根据权利要求16所述的方法,其中仅所述作用中上下文寄存器中的所述状态寄存器及所述文件选择寄存器被存储器映射到所述数据存储器的全部存储体,而所述工作寄存器及所述存储体选择寄存器是非存储器映射的寄存器。
18.根据权利要求10所述的方法,其中所述非作用中上下文寄存器被存储器映射到所述数据存储器的最后存储体。
19.根据权利要求10所述的方法,其进一步包括:通过经由所述作用中上下文选择相应存储体且存取所述非作用中上下文寄存器,而存取所述非作用中上下文的所述寄存器。
20.根据权利要求10所述的方法,其产生多个中断,其中在发生中断时,发生上下文切换,其中执行中断例程,且其中所述中断例程使用在所述中断例程的执行期间存储于选定寄存器组中的值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261613802P | 2012-03-21 | 2012-03-21 | |
US61/613,802 | 2012-03-21 | ||
US13/830,377 US9195497B2 (en) | 2012-03-21 | 2013-03-14 | Microcontroller with context switch |
US13/830,377 | 2013-03-14 | ||
PCT/US2013/032876 WO2013142450A1 (en) | 2012-03-21 | 2013-03-19 | Microcontroller with context switch |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104303143A CN104303143A (zh) | 2015-01-21 |
CN104303143B true CN104303143B (zh) | 2018-07-24 |
Family
ID=49213440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380025205.9A Active CN104303143B (zh) | 2012-03-21 | 2013-03-19 | 具有上下文切换的微控制器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9195497B2 (zh) |
EP (1) | EP2828740B1 (zh) |
JP (1) | JP6143841B2 (zh) |
KR (1) | KR20140135796A (zh) |
CN (1) | CN104303143B (zh) |
TW (1) | TWI574152B (zh) |
WO (1) | WO2013142450A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
CN105868003B (zh) * | 2016-03-25 | 2019-08-13 | 浙江大学 | 一种基于tms320c6747的任务上下文切换优化方法 |
CN117555599B (zh) * | 2024-01-10 | 2024-04-05 | 睿思芯科(成都)科技有限公司 | 加快关键数据访问速度的芯片设计方法、系统及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306642A (zh) * | 1998-04-22 | 2001-08-01 | 美商传威股份有限公司 | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 |
CN101251792A (zh) * | 2006-12-19 | 2008-08-27 | 英特尔公司 | 用于受应用管理的线程单元的结构化异常处理 |
CN101868783A (zh) * | 2007-11-30 | 2010-10-20 | 密克罗奇普技术公司 | 增强的微处理器或微控制器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5115506A (en) | 1990-01-05 | 1992-05-19 | Motorola, Inc. | Method and apparatus for preventing recursion jeopardy |
US6553487B1 (en) * | 2000-01-07 | 2003-04-22 | Motorola, Inc. | Device and method for performing high-speed low overhead context switch |
GB2402785B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Processor switching between secure and non-secure modes |
AU2003278342A1 (en) * | 2002-11-18 | 2004-06-15 | Arm Limited | Security mode switching via an exception vector |
US7996651B2 (en) | 2007-11-30 | 2011-08-09 | Microchip Technology Incorporated | Enhanced microprocessor or microcontroller |
TWI493351B (zh) * | 2009-11-16 | 2015-07-21 | Via Tech Inc | 通用串列匯流排主機控制方法和通用串列匯流排主機控制器 |
-
2013
- 2013-03-14 US US13/830,377 patent/US9195497B2/en active Active
- 2013-03-19 WO PCT/US2013/032876 patent/WO2013142450A1/en active Application Filing
- 2013-03-19 KR KR1020147027368A patent/KR20140135796A/ko active IP Right Grant
- 2013-03-19 EP EP13713695.8A patent/EP2828740B1/en active Active
- 2013-03-19 CN CN201380025205.9A patent/CN104303143B/zh active Active
- 2013-03-19 JP JP2015501841A patent/JP6143841B2/ja active Active
- 2013-03-20 TW TW102109903A patent/TWI574152B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306642A (zh) * | 1998-04-22 | 2001-08-01 | 美商传威股份有限公司 | 带外部协处理器可访问的上下文切换寄存器组的risc处理器 |
CN101251792A (zh) * | 2006-12-19 | 2008-08-27 | 英特尔公司 | 用于受应用管理的线程单元的结构化异常处理 |
CN101868783A (zh) * | 2007-11-30 | 2010-10-20 | 密克罗奇普技术公司 | 增强的微处理器或微控制器 |
Also Published As
Publication number | Publication date |
---|---|
JP2015511049A (ja) | 2015-04-13 |
JP6143841B2 (ja) | 2017-06-07 |
US9195497B2 (en) | 2015-11-24 |
KR20140135796A (ko) | 2014-11-26 |
TWI574152B (zh) | 2017-03-11 |
EP2828740A1 (en) | 2015-01-28 |
TW201351139A (zh) | 2013-12-16 |
US20130254476A1 (en) | 2013-09-26 |
EP2828740B1 (en) | 2024-04-24 |
WO2013142450A1 (en) | 2013-09-26 |
CN104303143A (zh) | 2015-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0315275A2 (en) | Flexible asic microcomputer | |
CN104303143B (zh) | 具有上下文切换的微控制器 | |
CN102282538B (zh) | 具有特殊分组指令的微控制器 | |
CN107548488A (zh) | 具有dsp引擎及增强上下文切换能力的中央处理单元 | |
US20060168374A1 (en) | Configurable input/output interface | |
CN109815172A (zh) | 设备控制器以及包括其的储存设备 | |
CN104866357B (zh) | 数字信号处理器的boot启动方法及其启动装置 | |
CN107133066A (zh) | 一种mcu芯片中的存储复用控制系统 | |
US7680967B2 (en) | Configurable application specific standard product with configurable I/O | |
EP3323039B1 (en) | A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing | |
CN102929591A (zh) | 并行操作逻辑运算及其控制器 | |
TWI339354B (en) | Microcontroller instruction set | |
WO2006081092A2 (en) | Deterministic microcontroller with configurable input/output interface | |
GB2410815A (en) | Access to bit values within data words stored in a memory | |
JP6739689B1 (ja) | プログラマブルコントローラ | |
Cates et al. | An ASIC RISC-based I/O processor for computer applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |