CN105144100B - 中央处理单元以及在其中执行上下文切换的方法 - Google Patents

中央处理单元以及在其中执行上下文切换的方法 Download PDF

Info

Publication number
CN105144100B
CN105144100B CN201480011422.7A CN201480011422A CN105144100B CN 105144100 B CN105144100 B CN 105144100B CN 201480011422 A CN201480011422 A CN 201480011422A CN 105144100 B CN105144100 B CN 105144100B
Authority
CN
China
Prior art keywords
context
register
cpu
interrupt
instruction
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
Application number
CN201480011422.7A
Other languages
English (en)
Other versions
CN105144100A (zh
Inventor
迈克尔·I·卡瑟伍德
布赖恩·克里斯
戴维·米基
约瑟夫·卡尼洛普洛斯
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
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 Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN105144100A publication Critical patent/CN105144100A/zh
Application granted granted Critical
Publication of CN105144100B publication Critical patent/CN105144100B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

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)
  • Hardware Redundancy (AREA)

Abstract

本发明涉及一种中央处理单元CPU,其具有:中断单元,其用于中断指令的执行;多个上下文定义寄存器组,其中每一寄存器组具有相同数目个CPU寄存器;切换单元,其用于耦合所述CPU内的选定寄存器组,其中所述切换单元在发生异常后即刻切换到所述多个上下文定义寄存器组中的预定寄存器组;及控制寄存器,其经配置以控制由指令起始的对所述多个上下文定义寄存器中的寄存器组的选择且进一步可操作以指示当前所使用上下文。

Description

中央处理单元以及在其中执行上下文切换的方法
相关申请案的交叉参考
本申请案主张于2013年3月12日提出申请的第61/777,887号美国临时申请案的权益,所述美国临时申请案的全文并入本文中。
技术领域
本发明涉及中央处理单元(CPU),特定来说涉及微处理器或微控制器中所使用的CPU。
背景技术
大部分CPU提供中断当前指令执行以执行所谓的中断例程的中断功能。从当前执行切换到此异常或中断例程中通常导致与中断上下文切换相关联的等待时间,所述等待时间在某些CPU中可(举例来说)高达28个CPU循环长。因此,需要对中断的经改进处理。
发明内容
根据一实施例,中央处理单元(CPU)可包括:中断单元,其用于中断指令的执行;多个上下文定义寄存器组,其中每一寄存器组具有相同数目个CPU寄存器;切换单元,其用于耦合所述CPU内的选定寄存器组,其中所述切换单元在发生异常后即刻切换到所述多个上下文定义寄存器组中的预定寄存器组;及控制寄存器,其经配置以控制由指令起始的对所述多个上下文定义寄存器中的寄存器组的选择且进一步可操作以指示当前所使用上下文。
根据又一实施例,所述控制寄存器可包括指示当前上下文的第一位字段及指示由所述指令选择的最近上下文的第二位字段。根据又一实施例,所述CPU可操作以执行用于起始上下文切换的指令。根据又一实施例,所述指令可为专用上下文交换指令。根据又一实施例,所述控制寄存器可为仅可读的。根据又一实施例,所述控制寄存器可为可读的且至少部分可写入的且所述指令为应用于所述控制寄存器以用于改变所述控制寄存器的内容以起始上下文切换的移动数据指令。根据又一实施例,所述中断单元可包括中断控制器,所述中断控制器可操作以指派多个优先级到多个中断源。根据又一实施例,所述多个寄存器组中的每一者可指派到中断级,使得在发生中断后即刻由所述切换单元取决于所述中断级而选择所述多个上下文定义寄存器组中的相应寄存器组。根据又一实施例,未指派中断级可默认到所述多个上下文定义寄存器组中的默认寄存器组。根据又一实施例,在发生具有未指派中断级的中断后,将不起始上下文切换。根据又一实施例,如果寄存器组经指派到已经指派到另一寄存器组的优先级,那么所述CPU可操作以将具有最低编号的所述寄存器组指派到所述选定优先级且解除指派所述相应另一寄存器组。根据又一实施例,所述CPU可进一步包括用于将所述中断级指派到所述多个寄存器组中的一者的熔丝字段。根据又一实施例,所述控制寄存器可在已执行上下文切换之后用新上下文更新。
根据另一实施例,一种用于在包括多个上下文定义寄存器组的中央处理单元(CPU)中执行上下文切换的方法,其中每一寄存器组具有相同数目个CPU寄存器,所述方法可包括:在发生异常后即刻自动切换到所述多个上下文定义寄存器组中的预定寄存器组,其中可进一步通过执行指令来手动起始对所述多个上下文定义寄存器中的寄存器组的选择;及在上下文控制寄存器中指示当前所使用上下文。
根据所述方法的又一实施例,所述上下文控制寄存器可包括指示当前上下文的第一位字段及指示由所述指令选择的最近上下文的第二位字段。根据所述方法的又一实施例,所述方法可进一步包括:执行用于起始上下文切换的指令。根据所述方法的又一实施例,所述指令可为专用上下文交换指令。根据所述方法的又一实施例,所述控制寄存器可为仅可读的。根据所述方法的又一实施例,所述控制寄存器可为可读的且至少部分可写入的,且所述指令为应用于所述上下文控制寄存器以用于改变所述上下文控制寄存器的内容以起始上下文切换的移动数据指令。根据所述方法的又一实施例,所述方法可进一步包括:指派多个优先级到多个中断源。根据所述方法的又一实施例,所述多个寄存器组中的每一者可指派到中断级,使得在发生中断后即刻由所述切换单元取决于所述中断级而选择所述多个上下文定义寄存器组中的相应寄存器组。根据所述方法的又一实施例,未指派中断级可默认到所述多个上下文定义寄存器组中的默认寄存器组。根据所述方法的又一实施例,在发生具有未指派中断级的中断后,可不起始上下文切换。根据所述方法的又一实施例,如果寄存器组经指派到已经指派到另一寄存器组的优先级,那么所述CPU可操作以将具有最低编号的所述寄存器组指派到所述选定优先级且解除指派所述相应另一寄存器组。根据所述方法的又一实施例,所述方法可进一步包括:提供用于将所述中断级指派到所述多个寄存器组中的一者的熔丝字段。根据所述方法的又一实施例,所述方法可进一步包括:在已执行上下文切换之后用新上下文更新所述上下文控制寄存器。
附图说明
图1展示实施例的框图;
图2展示上下文状态寄存器的实施例;
图3展示描绘CPU的实施例的另一框图;
图4展示根据一实施例的时序图;
图5A及5B展示特殊功能指令的实施例;
图6展示熔丝字段的实例;
图7展示描绘示范性异常处理的流程图;且
图8展示描绘示范性异常处理的另一流程图。
具体实施方式
在执行主指令序列(主程序)期间,上下文由预定数目个CPU寄存器定义。CPU寄存器经定义为通常形成与算术逻辑单元及其它处理逻辑耦合且由指令用作用于执行基本数据及地址处理的主要来源或目的地的寄存器文件或寄存器组的CPU内的那些寄存器。因此,控制外围装置的功能的通用存储器及其它特殊功能寄存器通常不被视为当前上下文的部分,除非其配合上文说明。微处理器或微控制器的一些实施例使用由存储体形成的寄存器文件,其中所有特殊功能寄存器经存储器映射到数据存储器。一旦选择存储体,存储体内的所有存储器位置便形成可定义上下文的通用或特殊功能寄存器。然而,通常在此类实施方案中,仅寄存器子组被视为上下文。其它实施例使用专用数目个CPU寄存器,举例来说,16或32个寄存器,所述专用数目个CPU寄存器并非数据存储器的部分且用作CPU指令的主要来源及/或目的地。此类寄存器中的一些或所有寄存器也可经存储器映射到数据存储器。
例如中断的异常非同步发生且因此无法预测其发生。子例程通常同步执行,换句话说,确切地知道将在主程序中的何处执行子例程调用。一般来说,在执行异常期间不应更改上下文定义寄存器的内容以便一旦已执行所述异常便允许不受干扰地执行主程序。否则,可发生CPU的不可预测行为。子例程的执行也可同样如此。因此,上下文需要在执行服务例程之前或在一些情形中在执行子例程之前加以保存且在CPU返回到主指令序列的执行之前还原。
根据各种实施例,可提供可编程CPU寄存器硬件上下文交换机制。本发明在自动上下文切换与手动上下文切换之间加以区分。此处,术语“自动”是指上下文交换经自动起始而无执行任何专用指令的要求的事实。换句话说,中断信号不仅导致异常而且导致上下文切换。相反,“手动上下文切换”通过专用指令或通过控制寄存器中的一或多个特定位的设定起始。因此,“手动”上下文切换通过由CPU执行的一或多个指令起始。然而,实际上下文切换经执行而不需要执行与借助于指令序列的寄存器的传统保存/还原相反的任何指令。因此,在两种方法中,执行零额外开销上下文切换。零额外开销应理解为不需要额外时间来执行上下文切换。因此,举例来说在“自动”上下文切换期间,在分支到中断服务例程所需的转变时间期间执行上下文切换。在“手动”切换中,上下文切换仅需要执行相应指令所需的时间。在一些实施例中,此指令可具有足够长以执行实际切换的执行时间。此可取决于硬件且因此在一些实施例中此指令可不如其它指令执行地快。
根据一些实施例,可提供专用CPU指令,举例来说用助忆符“CTXTSWP(W)”编码的指令,其允许用户使用软件在CPU寄存器上下文之间交换。各种实施例可经设计以便也借助硬件操作,举例来说,基于中断的上下文切换。
根据一些实施例,CPU寄存器上下文依赖于中断优先级且因此为用户可编程的。寄存器上下文在当触发选定中断时的异常处理期间透明地切换且上下文在ISR返回期间透明地恢复。不需要由用户程序提供的额外程序步骤。因此,执行自动保存当前上下文,而无需借助个别指令保存寄存器内容。因此移除与中断上下文切换相关联的所有等待时间,此(举例来说)可节省高达28个CPU循环或在特定实施例(举例来说,特定常规微处理器)中节省28个以上CPU循环。
在具有频繁高优先权中断(其含有非常少作用代码)的应用程序中,上下文交换等待时间支配总执行时间,此限制相应装置吞吐量。根据各种实施例,可提供性能方面的有效提升而无需较快速装置时钟速度。因此,根据各种实施例,提供手段以在由硬件(基于中断)上下文切换使用之前初始化上下文,或用于使装置仿真系统在调试期间查看/改变上下文。此外,将特定上下文指派到优先级允许针对具有不改变上下文或仅影响在主程序中未使用的寄存器的中断服务例程的特定优先级不选择任何上下文切换。
因此,各种实施例允许初始化上下文(通常在用作硬件中断上下文之前),使得调试器能够读取调试模式内的上下文/写入到调试模式内的上下文,且允许代码使用未指派供与中断一起使用的上下文来加速进入及退出程序或库调用。如上文所提及,在特定处理器中,可节省高达28个循环的额外开销且可提供上下文数据持久性。如果上下文为专用的,那么此特征消除对保存/还原局部变量的需求。
根据许多常规处理器,可需要初始化或查看上下文,及/或可需要使用软件交换上下文。此导致中断返回能够在硬件控制上下文切换与软件控制上下文切换之间进行区别的能力(以支持任意中断嵌套)。
根据一些实施例,举例来说在根据由申请者制造的dsPIC33系列微控制器的数字信号控制器中,可提供高达4个额外CPU寄存器上下文(W0到W14)。根据一些实施例,此可通过增加4组阴影寄存器来进行,如下文将更详细地解释。同样,根据其它实施例,可提供更多或更少上下文。堆叠指针(W15)及所有其它CPU寄存器可保持为所有上下文共有。根据各种实施例,上下文可通过硬件或软件交换。
在硬件上下文交换中,(举例来说)借助于熔丝将上下文指派到中断优先级(IPL)且在异常处理期间透明地交换上下文。此可通过自动交换当前上下文的内容与存储于相关联阴影寄存器中的上下文的内容来以零额外开销执行。
在软件上下文交换中,使用从中断返回(RETFIE)指令透明地交换上下文。此外,无论何者退出服务例程且返回到主程序,此指令均在需要执行指令时导致以零额外开销的上下文交换。根据一些实施例,上下文也可使用专用CPU指令(举例来说,使用助忆符“CTXTSWP(W)”的指令)来手动交换。上下文为持久的,即,其在交换出时被保留。根据一些实施例,仅当前作用上下文可经存储器映射到数据存储器中的特殊功能寄存器空间中。因此,可操纵当前作用上下文而无法更改非作用上下文。
针对具有简称但通常称为中断服务例程(ISR)的应用程序,例如,切换模式电力供应器(SMPS)应用程序,中断进入/退出额外开销已变成限制性能因素。保存/还原CPU寄存器可考虑到高达30%的总ISR执行时间。基于中断优先级(IPL)的透明上下文交换准许在相同时钟速度下的较高性能(或较低电力来维持相同吞吐量)。
根据各种实施例,可提供有成本效益的CPU上下文交换解决方案,所述解决方案:
-能够通过具有零或低额外开销而显著改进装置性能;
-通过不引入新数据危险且与嵌套中断一起工作而易于理解及使用;
-从装置计时角度为可管理的;
-容易整合到现有Dev工具中;及
-完全向后兼容。
图1展示根据一实施例的微处理器或微控制器的框图。展示与中断控制器120连接的中央处理单元(CPU)110,所述中断控制器可经设计以控制/管理多个内部及/或外部中断源。图1进一步描绘包括寄存器135a到135n的默认上下文130以及通过上下文切换控制单元160与CPU 110耦合的额外寄存器组140。一般来说,中央处理单元被视为由一或多个寄存器、控制逻辑、算术逻辑单元、指令解码器、程序计数器及各种输入/输出接口组成。虽然图1将CPU 110展示为单独块,但应理解图1中所展示的元件中的一些或所有元件可视为实际CPU的部分。
如上文所提及,上下文可由多个预定义寄存器的内容定义。举例来说,图1展示包含寄存器135a到135n的上下文130。上下文中包含的寄存器的数目可依据处理器设计而变化。在特定处理器设计中,仅最小量的寄存器定义实际上下文。因此,仅处理器可用的寄存器子组定义上下文。如果用户在执行子例程或中断服务例程期间操纵其它寄存器,那么用户必须确保相应其它寄存器借助于相应负载加以保存且存储指令。然而,其它实施例可包含所有可用CPU寄存器来定义上下文。图1另外展示用于提供多个额外寄存器组的存储器块140。每一额外寄存器组能够存储上下文的整个内容。换句话说,每一额外寄存器组具有与当前上下文一样多的寄存器。举例来说,如图1中所展示,每一额外寄存器组具有n个寄存器。额外寄存器组140可实施于专用存储器空间中。根据一个实施例,可实施四个额外上下文寄存器组。因此,块130及140提供五个不同上下文。上下文切换意指从当前寄存器组(其可处于块130或140中)到其它非作用四个寄存器组中的一者的切换。因此,相应上下文内容在切换后保持不更改。根据一些实施例,仅作用上下文也经存储器映射到数据存储器。因此,当前作用上下文也可通过数据存储器存取。
图1展示上下文切换控制单元160,其由控制寄存器150控制以选择上下文中的一者,举例来说,默认上下文130或额外寄存器组块140中的寄存器组中的一者。此外,中断控制器120处理所有内部及/或外部中断且也可视为实际CPU的部分。中断控制器可为CPU 110提供一或多个中断信号以产生具有不同优先级的中断。根据一实施例,每一优先级可经指派到特定寄存器组、默认寄存器组130或额外寄存器组140中的一者。因此,每当发生中断时,切换单元160便经控制以自动选择相关联上下文寄存器组。另外,CPU可具有导致所谓的手动上下文切换的专用指令或可允许写入到控制寄存器150中以执行手动上下文切换。
图2展示呈上下文状态寄存器形式的控制寄存器150的实例。根据一些实施例,此寄存器可仅为可读的。寄存器150可提供两个单独位字段CCTX[2:0]及MCTX[2:0]。根据一实施例的每一位字段具有允许定义高达8个不同上下文的三个位。可取决于所实施的上下文寄存器组的数目使用更多或更少位。位字段CCTX[2:0]指示当前所选择上下文而位字段MCTX[2:0]指示已经手动设定的最近上下文。因此,取决于CPU的当前状态,这些位字段的内容可不同。每当发生上下文切换(无论是自动起始还是手动起始)时,位字段CCTX[2:0]便更新。位字段MCTX[2:0]仅在当执行用于切换上下文的相应指令时的手动上下文切换期间更新。
图3展示典型16位微控制器的更详细框图。然而,根据各种实施例的概念可实施于较高或较低微处理器或微控制器中。图3中所展示的CPU的实施例为具有常规微控制器元件及数字信号控制器能力的混合信号微控制器。因此,CPU的框图展示不被视为上下文的部分的各种寄存器。此处,上下文由工作寄存器WREG0到WREG14形成。另外,提供四个上下文块,每一上下文块包含用于形成上下文的15个寄存器。WREG 15为堆叠指针且如状态寄存器一样不被视为上下文的部分。如可见,特定寄存器可用于此装置的两个操作模式,即,当作为微控制器操作或作为数字信号控制器操作时。
图4展示上下文可(举例来说)使用可编程熔丝与中断优先级相关联。然而,控制寄存器可用于使各种阴影寄存器组与中断优先级动态相关联。在图4中的时序图的顶部上,指示顺序循环。在循环1的开始处,通过断言中断请求信号int_request来开始异常处理。在循环1期间,旧的或当前上下文仍为作用的,使得当前执行指令仍可使用恰当上下文。在相同时间期间,检查当前中断优先级是否与新上下文相关联。在循环2期间,如果需要,那么根据中断优先级将上下文切换到新上下文。如在插入无操作指令的循环2及3期间还可看到,寄存器WREG15的内容经推动到堆叠。在循环4中发生中断服务例程的第一指令的执行。
根据一些实施例,可使用指令来手动交换上下文。此提供用于使用中断(例如,库调用)外的上下文的手段,其中应仅使用未指派到IPL的上下文。此外,此提供用于在由异常处理使用之前初始化上下文的手段,其中应停用中断。同样,此为开发工具提供上下文可观察性及可控制性,例如在电路内仿真器或调试器(及测试,尽管其现在为全扫描)中。根据各种实施例,指令MCTXI及CCTXI可在CTXTSWP(W)执行期间更新。
图5展示使用保持于工作寄存器W中的字面数或值规定目标上下文的可能上下文交换指令的实例。
另外,从中断返回指令RETFIE选择性地返回到适当上下文:
如果
非堆叠的IPL与上下文相关联,那么交换到所述上下文
否则
返回到MCTXI寄存器中所识别的手动交换上下文。
此方法结合异常处理操作确保在其中上下文既自动切换又手动切换的嵌套异常及/或调用时的上下文一致性。根据一些实施例,手动上下文切换需要执行源代码以提供相应功能,举例来说,在上文所揭示实施例中,必须由CPU执行一个指令来驱使上下文切换。自动上下文切换不需要执行任何代码以致使实际切换,这是因为在发生中断时自动执行上下文切换。在任一情形中,一旦已执行切换,控制寄存器便经更新展示分别选定的上下文。
以下使用由申请者制造的dsPIC33系列微控制器的架构来描述根据如图3中所展示的一个实施例的特定实施方案。除默认上下文0以外,基于参数NUM_ALT_CPU_CONTEXTS的值,高达4个CPU寄存器上下文(上下文1到4)可实例化到CPU核心中。如果NUM_ALT_CPU_CONTEXTS=0,那么仅上下文0存在于装置内。每一额外上下文由WREG0到WREG14组成且为持久的。即,每当CPU离开每一上下文时,所述上下文的内容不改变。在复位期间清除所有上下文内的寄存器WREG0到WREG14,且未经初始化寄存器复位也适用于任何作用上下文。在额外上下文内不包含其它CPU寄存器。可在任何上下文中执行PUSH/POP.s指令。可通过硬件(自动)或通过使用软件(手动)切换上下文:
·硬件上下文切换为自动的且对用户透明的。当上下文与特定中断优先级(IPL)相关联时,在对处于所述等级的任何中断的异常处理期间进入上下文。在执行中断ISR的RETFIE指令期间退出上下文。硬件上下文切换不引起额外开销。
·软件上下文切换为在用户控制下使用CTXTSWP(W)指令。根据一实施例,指令的执行为以满足软件互锁为条件。
根据一实施例,上下文状态寄存器(CTXTSTAT)为位于地址0x005A处的只读寄存器,所述地址含有当前上下文识别符(CCTXI[2:0])及手动上下文识别符(MCTXI[2:0])状态字段。CCTXI[2:0]字段向用户指示哪一CPU W寄存器上下文当前在使用中。每当W寄存器上下文改变(通过基于自动中断的硬件切换或由于通过执行CTXTSWP(W)指令引起的上下文改变)时,此字段便更新。MCTXI[2:0]字段向用户指示哪一CPU W-寄存器上下文是由于通过执行CTXTSWP(W)指令引起的上下文改变而最近选定的。MCTXI[2:0]字段由RETFIE指令使用以在不存在任何基于自动中断的上下文切换的情况下跟踪手动(软件)上下文切换。
每一额外上下文与由FALTREF熔丝内的3位熔丝(CTXTn[2:0])字段中的值定义的CPU中断优先级(IPL)相关联。熔丝位字段经分配到如表1及图6中所展示的每一上下文。
表1CTXTn熔丝字段
经指派IPL CTXTn[2:0]
3’b111
7 3’b110
6 3’b101
5 3’b100
4 3’b011
3 3’b010
2 3’b001
1 3’b000
根据一些实施例,可不支持用于陷阱的上下文切换。当CTXTn[2:0]熔丝字段经擦除(CTXTn[2:0]=3’b111)时,无IPL与对应上下文相关联。
注意,编程到CTXTn熔丝字段中的3位值为(IPL-1)以便确保在擦除FALTREG熔丝时不分配替代上下文。举例来说,为使上下文1与IPL 6相关联,用户将使3’b101编程到CTXT1[2:0]中。未指派到额外上下文的所有IPL等级将始终使用当前上下文(即,上下文将不改变)。或者,根据一些实施方案,未指派IPL等级可自动指派到默认上下文,举例来说,第一上下文定义寄存器组。
如果用户无意地将1个以上额外上下文指派到相同IPL,那么CPU中的硬件将使指派优先化,使得使用具有最低编号的上下文(例如,如果CTXT1=CTXT2=3’b110,那么上下文1将经指派到IPL7且上下文2将解除指派)。尽管此情景被视为错误的(且因此不推荐),但未使用(未指派)上下文将保持可用于供软件上下文切换使用。在异常处理期间,CPU将把CTXTn字段与CPU正对其作出响应(即,在移动到其的程序中)的IPL进行比较。如果存在匹配,那么CPU将在异常处理期间透明地切换到选定上下文。如果不存在匹配,那么CPU将继续使用当前上下文。新(或现有)上下文将在相关联ISR开始时立即可用。异常处理堆叠返回IPL(如正常一样)。当前作用上下文在当前上下文识别符字段(CTXTSTAT.CCTXI[2:0])中的CTXTSTAT寄存器中经指示。每当CPU切换到另一上下文,此寄存器便更新。在执行RETFIE指令期间,返回IPL如正常一样为非堆叠的(连同返回PC及剩余SRL位),且与指派到替代上下文的IPL进行比较。如果发现匹配,那么RETFIE将切换回到所指派上下文。如果未发现任何匹配,那么RETFIE将切换到手动上下文识别符状态寄存器(CTXTSTAT.MCTXI[2:0])中所定义的上下文。切换到MCTXI[2:0]中所保持的手动上下文准许基于软件及中断两者的上下文切换与应用代码一起使用。在RETFIE执行期间,CPU将透明地切换到选定上下文(如果需要)。新(或现有)上下文将在下一指令的执行开始时立即可用,且CTXTSTAT.CCTXI[2:0]将对应地更新。
图7中展示支持2个额外CPU上下文的装置的代码流程实例(无软件上下文切换)。上下文1(C1)经指派到IPL6,且上下文2(C2)经指派到IPL3。
当上下文未指派到IPL,或与所述IPL相关联的中断停用时,用户可选择通过执行CTXTSWP(W)指令(其将不影响CPU IPL)中的一者来通过软件切换上下文。根据一个实施例,CTXTSWP(W)指令可为PWRSAV操作码的子解码。CTXTSWP指令使用字面数值来确定目标上下文。CTXTSWPW指令使用寄存器直接寻址,其中目标上下文经定义于W寄存器的LSB中。根据特定实施例,CTXTSWP(W)指令的执行可经受软件互锁。当成功执行时,指令将在两个循环中切换到由指令操作数定义的上下文且用新上下文值更新手动上下文识别符(CTXTSTAT.MCTXI[2:0])及当前上下文识别符(CTXTSTAT.CCTXI[2:0])寄存器字段两者。新上下文将在下一指令的执行开始时立即可用(即,无危险)。如果用户尝试以下操作,那么指令将停用且在不报告错误(即,无效应)的情况下执行为2循环FNOP:
·切换到不支持的上下文
·切换到当前作用上下文
·在不支持额外上下文的装置上执行指令(即,NUM_ALT_CPU_CONTEXTS=0)
图8展示混合硬件及手动软件上下文切换的实例。通过软件(手动切换)切换上下文主要打算用作用于初始化指派到IPL的上下文(在与所述IPL相关联的所有中断停用时)的手段。预期,初始化软件将把作用上下文返回到默认上下文0(尽管不需要此操作,前提为在代码中的别处不使用选定上下文)。然而,可将一些上下文指派到基于IPL的硬件切换,且使其它上下文供与在应用程序运行时间执行期间使用CTXTSWP(W)指令的软件切换一起使用。手动上下文识别符(CTXTSTAT.MCTXI[2:0])用于跟踪任何手动切换上下文,使得如果RETFIE指令未发现所返回(未堆叠)IPL与替代上下文相关联,那么其将返回到CTXTSTAT.MCTXI[2:0]中所保持的最近已知的手动升级上下文编号。在复位时,CTXTSTAT.MCTXI[2:0]=3’b000。如上文所讨论,预期如果软件上下文切换不用于应用程序主代码内,那么用户应在初始化之后确保CTXTSTAT.MCTXI[2:0]=3’b000(默认上下文)。
异常不受CTXTSWP(W)指令抑制。如果异常到达任一CTXTSWP(W)执行循环的CPU(Q1)处,那么指令将在异常处理的第一循环期间完成。如果异常在CTXTSWP(W)指令之前或之后到达,那么异常处理将如正常一样继续进行。
根据另一特定实施例,如果满足软件互锁(即,在CTXTSWP(W)的循环1期间断言nvm_cpu_op_unlock),那么上下文交换及CXTXSTAT寄存器更新将到中断或陷阱处理程序向量提取开始的时候完成。异常处理将如正常一样向量化且处理程序将返回到依循CTXTSWP(W)指令的地址。如果异常为处于经指派到另一上下文的IPL的中断(经指派到CTXTSWP(W)的上下文及基于IPL的使用在同时使用时必须互斥),那么上下文将在异常处理期间再次切换。然而,基于IPL的上下文改变将在任何软件驱动上下文改变之后发生,因此相关联ISRRETFIE指令将返回到正确上下文(即,刚由CTXTSWP(W)指令选择的上下文)。
根据再一实施例,如果不满足软件互锁,那么CTXTSWP(W)将执行为2~FNOP且上下文将不改变。异常处理将如正常一样向量化且处理程序将返回到依循CTXTSWP(W)指令的地址。
根据此特定实施例的CPU可支持介于0与4之间的额外CPU寄存器上下文。如图3中所展示的CPU寄存器上下文经定义为WREG0到WREG14。额外上下文中不包含任何其它CPU寄存器。在异常处理及RETFIE期间或通过CTXTSWP(W)指令的执行实现上下文切换。
CTXTSWP(W)指令将在2个循环中切换到指令操作数中定义的上下文。新上下文将在下一指令的执行开始时立即可用。CTXTSWP(W)指令还将用新选定的上下文值更新CTXTSTAT.MCTXI[2:0]寄存器字段。
根据特定实施例存在关于CTXTSWP(W)指令的一些使用考虑因素:1.应注意SR并非额外上下文的一部分。因此,当使用CTXTSWP(W)来切换CPU寄存器上下文时,用户将需要手动保存/还原SRL寄存器。2.与其中返回上下文由堆叠式CPU IPL值隐含定义的硬件上下文切换不同,CTXTSWP(W)指令不保存任何历史记录。因此,在使用CTXTSWP(W)指令时跟踪CPU上下文为用户的责任。
在非堆叠SR(在第2循环中)之后,RETFIE指令将检查非堆叠的IPL[2:0]值。如果IPL[2:0]与CPU寄存器上下文相关联,那么返回指令将切换到所述上下文。如果IPL[2:0]不与CPU寄存器上下文相关联,那么返回指令将切换到手动上下文识别符(CTXTSTAT.MCTXI[2:0])寄存器字段中保持的上下文编号。此结合异常处理操作确保在其中上下文既自动切换又手动切换的嵌套异常及/或调用时的上下文一致性。在上述两个情形中,当前上下文识别符(CTXTSTAT.CCTXI[2:0])寄存器字段相应地更新。手动上下文识别符(CTXTSTAT.MCTXI[2:0])寄存器字段的状态不受影响。新上下文将在下一指令的执行开始时立即可用(无RAW危险)。旧上下文的内容在任何情况下都不受切换影响。
根据另一实施例,可不需要用于执行上下文切换的任何特定指令,这是因为在根据一些实施例的手动上下文切换中,上下文切换由控制寄存器中的相应位的手动设定执行。在此实施例中,控制寄存器必须为可读的且至少部分可写入的。在两种方法中,不需要执行任何额外开销指令以实际上如(举例来说)在具有额外开销的常规中断服务例程中一般保存上下文寄存器的内容。
所提及的各种实施例可与其它实施例的各种特征组合。除非说明书中提及,否则各种实施例中所描述的任何特征都不一定具有排他性特性。因此,特征的各种组合可实施于如各种实施例中所揭示的处理单元中。

Claims (26)

1.一种中央处理单元CPU,其包括:
中断单元,其用于中断指令的执行;
多个上下文定义寄存器组,其中每一寄存器组具有相同数目个CPU寄存器;
切换单元,其用于耦合所述CPU内的选定寄存器组,其中所述切换单元在发生异常后或在上下文切换指令执行后即刻切换到所述多个上下文定义寄存器组中的预定寄存器组;及
上下文状态寄存器,其与所述切换单元耦合,所述上下文状态寄存器包括指示当前上下文的第一位字段及指示由所述上下文切换指令选择的最近上下文的第二位字段。
2.根据权利要求1所述的CPU,其中所述上下文状态寄存器为仅可读的。
3.根据权利要求1所述的CPU,其中所述上下文状态寄存器为可读的且至少部分可写入的,且所述上下文切换指令为应用于所述上下文状态寄存器以用于改变所述上下文状态寄存器的内容以起始上下文切换的移动数据指令。
4.根据权利要求1所述的CPU,其中所述中断单元包括中断控制器,所述中断控制器可操作以指派多个优先级到多个中断源。
5.根据权利要求4所述的CPU,其中所述多个上下文定义寄存器组中的每一者可指派到中断级,使得在发生中断后即刻由所述切换单元取决于所述中断级而选择所述多个上下文定义寄存器组中的相应寄存器组。
6.根据权利要求5所述的CPU,其中未指派中断级默认到所述多个上下文定义寄存器组中的默认寄存器组。
7.根据权利要求5所述的CPU,其中在发生具有未指派中断级的中断后,将不起始上下文切换。
8.根据权利要求5所述的CPU,其中如果所述多个上下文定义寄存器组中的一者经指派到已经指派到所述多个上下文定义寄存器组中的另一者的优先级,那么所述CPU可操作以将具有最低编号的所述多个上下文定义寄存器组中的所述一者指派到所选定的优先级且解除指派所述多个上下文定义寄存器组中相应的所述另一者。
9.根据权利要求5所述的CPU,其进一步包括用于将所述中断级指派到所述多个上下文定义寄存器组中的一者的熔丝字段。
10.根据权利要求1所述的CPU,其中所述上下文状态寄存器在已执行上下文切换之后用新上下文更新。
11.根据权利要求1所述的CPU,其中所述上下文切换指令包括字面数,所述字面数识别经选择的上下文。
12.根据权利要求1所述的CPU,其中所述上下文切换指令识别存储信息的上下文状态寄存器,所述信息为识别经选择的上下文的信息。
13.一种用于在包括多个上下文定义寄存器组的中央处理单元CPU中执行上下文切换的方法,其中每一寄存器组具有相同数目个CPU寄存器,所述方法包括:
在发生异常后即刻自动切换到所述多个上下文定义寄存器组中的预定寄存器组,
其中可进一步通过执行上下文切换指令来手动起始对所述多个上下文定义寄存器中的寄存器组的选择;及
在上下文状态寄存器的第一位字段中指示当前所使用上下文且在所述上下文状态寄存器的第二位字段中指示由所述上下文切换指令选择的最近上下文。
14.根据权利要求13所述的方法,其进一步包括:执行所述上下文切换指令,借此初始化上下文切换。
15.根据权利要求14所述的方法,其中所述上下文切换指令为专用上下文交换指令。
16.根据权利要求15所述的方法,其中所述上下文状态寄存器为仅可读的。
17.根据权利要求13所述的方法,其中所述上下文切换指令包括字面数,所述字面数识别经选择的上下文。
18.根据权利要求13所述的方法,其中所述上下文切换指令识别存储信息的上下文状态寄存器,所述信息为识别经选择的上下文的信息。
19.根据权利要求14所述的方法,其中所述上下文状态寄存器为可读的且所述第二位字段为至少可写入的,且所述上下文切换指令为应用于所述上下文状态寄存器的所述第二位字段以用于改变所述上下文状态寄存器的内容以起始上下文切换的移动数据指令。
20.根据权利要求13所述的方法,其进一步包括:指派多个优先级到多个中断源。
21.根据权利要求20所述的方法,其中所述多个上下文定义寄存器组中的每一者可指派到中断级,使得在发生中断后即刻由切换单元取决于所述中断级而选择所述多个上下文定义寄存器组中的相应寄存器组。
22.根据权利要求21所述的方法,其中未指派中断级默认到所述多个上下文定义寄存器组中的默认寄存器组。
23.根据权利要求21所述的方法,其中在发生具有未指派中断级的中断后,当前上下文定义寄存器组定义所述当前上下文。
24.根据权利要求21所述的方法,其中如果所述多个上下文定义寄存器组中的一者经指派到已经指派到所述多个上下文定义寄存器组中的另一者的优先级,那么所述CPU可操作以将具有较低编号的所述多个上下文定义寄存器组中的所述一者指派到所选定的优先级且解除指派所述多个上下文定义寄存器组中相应的所述另一者。
25.根据权利要求21所述的方法,其进一步包括:提供用于将所述中断级指派到所述多个上下文定义寄存器组中的一者的熔丝字段。
26.根据权利要求13所述的方法,其中在已执行上下文切换之后,用所述第一位字段中的新上下文更新所述上下文状态寄存器。
CN201480011422.7A 2013-03-12 2014-03-07 中央处理单元以及在其中执行上下文切换的方法 Active CN105144100B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361777887P 2013-03-12 2013-03-12
US61/777,887 2013-03-12
PCT/US2014/022056 WO2014159123A1 (en) 2013-03-12 2014-03-07 Programmable cpu register hardware context swap mechanism

Publications (2)

Publication Number Publication Date
CN105144100A CN105144100A (zh) 2015-12-09
CN105144100B true CN105144100B (zh) 2019-12-31

Family

ID=50442635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480011422.7A Active CN105144100B (zh) 2013-03-12 2014-03-07 中央处理单元以及在其中执行上下文切换的方法

Country Status (6)

Country Link
US (1) US9619231B2 (zh)
EP (1) EP2972842B1 (zh)
KR (1) KR20150128680A (zh)
CN (1) CN105144100B (zh)
TW (1) TWI619076B (zh)
WO (1) WO2014159123A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014108747A1 (en) * 2013-01-10 2014-07-17 Freescale Semiconductor, Inc. Integrated circuit processor and method of operating a integrated circuit processor
US9858083B2 (en) * 2013-03-14 2018-01-02 Microchip Technology Incorporated Dual boot panel SWAP mechanism
US9928094B2 (en) * 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
US20160170466A1 (en) * 2014-12-15 2016-06-16 Jefferson H. HOPKINS Power saving multi-width processor core
US10802866B2 (en) 2015-04-30 2020-10-13 Microchip Technology Incorporated Central processing unit with DSP engine and enhanced context switch capabilities
JP2017037370A (ja) * 2015-08-06 2017-02-16 富士通株式会社 計算機、プロセス制御方法およびプロセス制御プログラム
GB2547912B (en) 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
US10496573B2 (en) * 2017-03-31 2019-12-03 Intel Corporation Context-sensitive interrupts
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US10489382B2 (en) * 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
CN109117253B (zh) 2017-06-26 2022-05-24 阿里巴巴集团控股有限公司 一种微内核调度的方法和装置
JP2019219984A (ja) * 2018-06-21 2019-12-26 ルネサスエレクトロニクス株式会社 メモリモジュール
TWI703500B (zh) * 2019-02-01 2020-09-01 睿寬智能科技有限公司 可縮短內文交換時間之方法及其半導體裝置
CN110928574A (zh) * 2019-11-20 2020-03-27 深圳市汇顶科技股份有限公司 微控制器、中断处理芯片、设备及中断处理方法
CN117795476A (zh) * 2021-09-08 2024-03-29 哲库科技(上海)有限公司 用于触发零周期上下文切换的系统和方法
KR102698638B1 (ko) * 2022-05-20 2024-08-26 고려대학교 산학협력단 하드웨어 기반 격리 실행을 제공하는 마이크로 아키텍쳐

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3825902A (en) * 1973-04-30 1974-07-23 Ibm Interlevel communication in multilevel priority interrupt system
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
CN1829971A (zh) * 2003-07-30 2006-09-06 皇家飞利浦电子股份有限公司 具有可编程优先级的中断结构且每个优先级与不同的寄存器组相关联的微控制器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006092042A (ja) * 2004-09-21 2006-04-06 Sanyo Electric Co Ltd 情報処理装置及びコンテキスト切り替え方法
US8327379B2 (en) * 2006-08-24 2012-12-04 Kernelon Silicon Inc. Method for switching a selected task to be executed according with an output from task selecting circuit
US20080307208A1 (en) 2007-06-07 2008-12-11 Fujitsu Limited Application specific processor having multiple contexts
US7996651B2 (en) * 2007-11-30 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
US20100110089A1 (en) * 2008-11-06 2010-05-06 Via Technologies, Inc. Multiple GPU Context Synchronization Using Barrier Type Primitives
US8825926B2 (en) 2009-04-13 2014-09-02 Microchip Technology Incorporated Processor with assignable general purpose register set

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3825902A (en) * 1973-04-30 1974-07-23 Ibm Interlevel communication in multilevel priority interrupt system
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
CN1829971A (zh) * 2003-07-30 2006-09-06 皇家飞利浦电子股份有限公司 具有可编程优先级的中断结构且每个优先级与不同的寄存器组相关联的微控制器

Also Published As

Publication number Publication date
WO2014159123A1 (en) 2014-10-02
EP2972842B1 (en) 2020-05-20
US20150019847A1 (en) 2015-01-15
KR20150128680A (ko) 2015-11-18
US9619231B2 (en) 2017-04-11
TWI619076B (zh) 2018-03-21
TW201502993A (zh) 2015-01-16
EP2972842A1 (en) 2016-01-20
CN105144100A (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN105144100B (zh) 中央处理单元以及在其中执行上下文切换的方法
US10318407B2 (en) Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
CN100555225C (zh) 一种支持x86虚拟机的risc处理器装置及方法
KR100731371B1 (ko) 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체
RU2271565C2 (ru) Запоминание операндов стека в регистре
US20020069402A1 (en) Scheduling control within a system having mixed hardware and software based instruction execution
WO2003025721A2 (en) Microcontroller with configurable onboard boot-ram
CN108780395B (zh) 矢量预测指令
US11307855B2 (en) Register-provided-opcode instruction
CA3021447A1 (en) Scheduling tasks in a multi-threaded processor
KR20110044465A (ko) 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법
US7143271B2 (en) Automatic register backup/restore system and method
KR20150019349A (ko) 다중 쓰레드 실행 프로세서 및 이의 동작 방법
KR102647266B1 (ko) 벡터 인덱스 레지스터들을 이용한 벡터 요소들을 어드레싱하기 위한 멀티-레인
US20190155648A1 (en) Scheduling tasks in a multi-threaded processor
CN104346132A (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
IL285926B2 (en) Abandoning a data structure
GB2461848A (en) Processor with a privileged stack pointer and a stack pointer used in privileged and non-privileged modes
JP4444305B2 (ja) 半導体装置
KR20140135796A (ko) 컨텍스트 스위치를 구비한 마이크로컨트롤러
CN106990939B (zh) 修改数据处理单元的行为
Hanna et al. An embedded Forth core with floating point and branch prediction
EP3323039A1 (en) A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing
TW200417926A (en) Selective interrupt suppression
US20120159134A1 (en) Exception control method, system, and program

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant