可编程cpu寄存器硬件上下文交换机制的制作方法_2

文档序号:9422700阅读:来源:国知局
28个W上CPU循环。
[0022] 在具有频繁高优先权中断(其含有非常少作用代码)的应用程序中,上下文交换 等待时间支配总执行时间,此限制相应装置吞吐量。根据各种实施例,可提供性能方面的有 效提升而无需较快速装置时钟速度。因此,根据各种实施例,提供手段W在由硬件(基于中 断)上下文切换使用之前初始化上下文,或用于使装置仿真系统在调试期间查看/改变上 下文。此外,将特定上下文指派到优先级允许针对具有不改变上下文或仅影响在主程序中 未使用的寄存器的中断服务例程的特定优先级不选择任何上下文切换。
[0023] 因此,各种实施例允许初始化上下文(通常在用作硬件中断上下文之前),使得调 试器能够读取调试模式内的上下文/写入到调试模式内的上下文,且允许代码使用未指派 供与中断一起使用的上下文来加速进入及退出程序或库调用。如上文所提及,在特定处理 器中,可节省高达28个循环的额外开销且可提供上下文数据持久性。如果上下文为专用 的,那么此特征消除对保存/还原局部变量的需求。
[0024] 根据许多常规处理器,可需要初始化或查看上下文,及/或可需要使用软件交换 上下文。此导致中断返回能够在硬件控制上下文切换与软件控制上下文切换之间进行区别 的能力(W支持任意中断嵌套)。
[00巧]根据一些实施例,举例来说在根据由申请者制造的dsPIC33系列微控制器的数字 信号控制器中,可提供高达4个额外CPU寄存器上下文(WO到W14)。根据一些实施例,此可 通过增加4组阴影寄存器来进行,如下文将更详细地解释。同样,根据其它实施例,可提供 更多或更少上下文。堆叠指针(W15)及所有其它CPU寄存器可保持为所有上下文共有。根 据各种实施例,上下文可通过硬件或软件交换。
[00%] 在硬件上下文交换中,(举例来说)借助于烙丝将上下文指派到中断优先级(I化) 且在异常处理期间透明地交换上下文。此可通过自动交换当前上下文的内容与存储于相关 联阴影寄存器中的上下文的内容来W零额外开销执行。
[0027] 在软件上下文交换中,使用从中断返回(RETFI巧指令透明地交换上下文。此外, 无论何者退出服务例程且返回到主程序,此指令均在需要执行指令时导致W零额外开销 的上下文交换。根据一些实施例,上下文也可使用专用CPU指令(举例来说,使用助忆符 "CTXTSWP(W)"的指令)来手动交换。上下文为持久的,即,其在交换出时被保留。根据一些 实施例,仅当前作用上下文可经存储器映射到数据存储器中的特殊功能寄存器空间中。因 此,可操纵当前作用上下文而无法更改非作用上下文。
[0028] 针对具有简称但通常称为中断服务例程(ISR)的应用程序,例如,切换模式电力 供应器(SMP巧应用程序,中断进入/退出额外开销已变成限制性能因素。保存/还原CPU 寄存器可考虑到高达30%的总ISR执行时间。基于中断优先级(IPL)的透明上下文交换准 许在相同时钟速度下的较高性能(或较低电力来维持相同吞吐量)。
[0029] 根据各种实施例,可提供有成本效益的CPU上下文交换解决方案,所述解决方案:
[0030] -能够通过具有零或低额外开销而显著改进装置性能;
[0031] -通过不引入新数据危险且与嵌套中断一起工作而易于理解及使用;
[0032] -从装置计时角度为可管理的; 阳03引-容易整合到现有Dev工具中;及
[0034] -完全向后兼容。
[0035] 图1展示根据一实施例的微处理器或微控制器的框图。展示与中断控制器120连 接的中央处理单元(CPU) 110,所述中断控制器可经设计W控制/管理多个内部及/或外部 中断源。图1进一步描绘包括寄存器135a到135n的默认上下文130W及通过上下文切换 控制单元160与CPU160禪合的额外寄存器组140。一般来说,中央处理单元被视为由一或 多个寄存器、控制逻辑、算术逻辑单元、指令解码器、程序计数器及各种输入/输出接口组 成。虽然图1将CPU110展示为单独块,但应理解图1中所展示的元件中的一些或所有元 件可视为实际CPU的部分。
[0036] 如上文所提及,上下文可由多个预定义寄存器的内容定义。举例来说,图1展示包 含寄存器135a到135n的上下文130。上下文中包含的寄存器的数目可依据处理器设计而 变化。在特定处理器设计中,仅最小量的寄存器定义实际上下文。因此,仅处理器可用的寄 存器子组定义上下文。如果用户在执行子例程或中断服务例程期间操纵其它寄存器,那么 用户必须确保相应其它寄存器借助于相应负载加W保存且存储指令。然而,其它实施例可 包含所有可用CPU寄存器来定义上下文。图1另外展示用于提供多个额外寄存器组的存储 器块140。每一额外寄存器组能够存储上下文的整个内容。换句话说,每一额外寄存器组具 有与当前上下文一样多的寄存器。举例来说,如图1中所展示,每一额外寄存器组具有n个 寄存器。额外寄存器组140可实施于专用存储器空间中。根据一个实施例,可实施四个额 外上下文寄存器组。因此,块130及140提供五个不同上下文。上下文切换意指从当前寄 存器组(其可处于块130或140中)到其它非作用四个寄存器组中的一者的切换。因此, 相应上下文内容在切换后保持不更改。根据一些实施例,仅作用上下文也经存储器映射到 数据存储器。因此,当前作用上下文也可通过数据存储器存取。
[0037] 图1展示上下文切换控制单元160,其由控制寄存器150控制W选择上下文中的 一者,举例来说,默认上下文130或额外寄存器组块140中的寄存器组中的一者。此外,中 断控制器120处理所有内部及/或外部中断且也可视为实际CPU的部分。中断控制器可为 CPU110提供一或多个中断信号W产生具有不同优先级的中断。根据一实施例,每一优先级 可经指派到特定寄存器组、默认寄存器组130或额外寄存器组140中的一者。因此,每当发 生中断时,切换单元160便经控制W自动选择相关联上下文寄存器组。另外,CPU可具有导 致所谓的手动上下文切换的专用指令或可允许写入到控制寄存器150中W执行手动上下 文切换。
[0038] 图2展示呈上下文状态寄存器形式的控制寄存器150的实例。根据一些实施例, 此寄存器可仅为可读的。寄存器150可提供两个单独位字段CCTX巧:0]及MCTX巧:0]。根 据一实施例的每一位字段具有允许定义高达8个不同上下文的=个位。可取决于所实施 的上下文寄存器组的数目使用更多或更少位。位字段CCTX巧:0]指示当前所选择上下文 而位字段MCTX巧:0]指示已经手动设定的最近上下文。因此,取决于CPU的当前状态,运些 位字段的内容可不同。每当发生上下文切换(无论是自动起始还是手动起始)时,位字段 CCTX[2:0]便更新。位字段MCTX巧:0]仅在当执行用于切换上下文的相应指令时的手动上 下文切换期间更新。
[0039] 图3展示典型16位微控制器的更详细框图。然而,根据各种实施例的概念可实施 于较高或较低微处理器或微控制器中。图3中所展示的CPU的实施例为具有常规微控制器 元件及数字信号控制器能力的混合信号微控制器。因此,CPU的框图展示不被视为上下文 的部分的各种寄存器。此处,上下文由工作寄存器WREGO到WREG14形成。另外,提供四个 上下文块,每一上下文块包含用于形成上下文的15个寄存器。WREG15为堆叠指针且如状 态寄存器一样不被视为上下文的部分。如可见,特定寄存器可用于此装置的两个操作模式, 良P,当作为微控制器操作或作为数字信号控制器操作时。
[0040] 图4展示上下文可(举例来说)使用可编程烙丝与中断优先级相关联。然而,控 制寄存器可用于使各种阴影寄存器组与中断优先级动态相关联。在图4中的时序图的顶部 上,指示顺序循环。在循环1的开始处,通过断言中断请求信号int_request来开始异常处 理。在循环1期间,旧的或当前上下文仍为作用的,使得当前执行指令仍可使用恰当上下 文。在相同时间期间,检查当前中断优先级是否与新上下文相关联。在循环2期间,如果需 要,那么根据中断优先级将上下文切换到新上下文。如在插入无操作指令的循环2及3期 间还可看到,寄存器WREG15的内容经推动到堆叠。在循环4中发生中断服务例程的第一指 令的执行。
[0041] 根据一些实施例,可使用指令来手动交换上下文。此提供用于使用中断(例如,库 调用)外的上下文的手段,其中应仅使用未指派到IPL的上下文。此外,此提供用于在由异 常处理使用之前初始化上下文的手段,其中应停用中断。同样,此为开发工具提供上下文可 观察性及可控制性,例如在电路内仿真器或调试器(及测试,尽管其现在为全扫描)中。根 据各种实施例,指令MCTXI及CCTXI可在CTXTSWP(W)执行期间更新。
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1