CN112231072A - 一种处理器及内核切换处理方法 - Google Patents
一种处理器及内核切换处理方法 Download PDFInfo
- Publication number
- CN112231072A CN112231072A CN201910636745.XA CN201910636745A CN112231072A CN 112231072 A CN112231072 A CN 112231072A CN 201910636745 A CN201910636745 A CN 201910636745A CN 112231072 A CN112231072 A CN 112231072A
- Authority
- CN
- China
- Prior art keywords
- kernel
- switching
- trusted
- untrusted
- core
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 3
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000000977 initiatory effect Effects 0.000 claims description 102
- 238000000034 method Methods 0.000 claims description 50
- 238000012423 maintenance Methods 0.000 claims description 27
- 230000001960 triggered effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 101000996785 Homo sapiens Probable G-protein coupled receptor 132 Proteins 0.000 description 2
- 102100033838 Probable G-protein coupled receptor 132 Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 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/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种处理器,具有可信内核和非可信内核。该处理器包括程序状态寄存器、切换状态寄存器和切换控制单元。程序状态寄存器适于存储当前内核标识位和起始内核标识位。当前内核标识位指示处理器的当前内核为可信内核还是非可信内核,以及起始内核标识位指示处理器在切换到当前内核之前的内核为可信内核还是非可信内核。切换状态寄存器适于存储切换状态标识位。切换状态标识位指示内核切换方式。切换控制单元适于接收内核切换请求,并根据当前内核标识位、起始内核标识位和切换状态标识位来处理内核切换请求以进行内核切换。本发明还公开了一种在该处理器中执行的内核切换请求处理方法和包含该处理器的片上系统。
Description
技术领域
本发明涉及处理器领域,尤其涉及具有可信内核和非可信内核的处理器领域。
背景技术
在移动互联网和物联网领域,为了安全考虑,在处理器的运行模式中新增一种可信世界状态,将处于可信世界的处理器、可信属性的系统IP以及其他系统中敏感、重要的软硬件资源划分到可信世界中,并通过硬件机制保证可信世界中的资源只能被可信世界中的成员所访问,从而实现可信世界与非可信世界的隔离,确保安全资源的机密性以及完整性。
为此,可以在处理器中增加可信内核,并且增加可信内核运行模式,让一些有安全需求的程序在可信内核中执行。处理器因此需要在运行期间进行内核切换,即进行世界切换。如何快速且安全地进行内核切换是本领域所需要解决的问题。
特别是诸如IoT设备之类的智能设备。这些设备的数量巨大且分布广泛。和现有的PC或者移动终端等不同,这些设备由于应用于各种不同的场景中而面临更多的安全问题,因此,对于这些设备而言,如果更安全且快速地完成内核切换是亟需解决的问题之一。
发明内容
为此,本发明提供了一种新的内核切换方案,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种处理器,具有可信内核和非可信内核。该处理器包括程序状态寄存器、切换状态寄存器和切换控制单元。程序状态寄存器适于存储当前内核标识位和起始内核标识位。当前内核标识位指示处理器的当前内核为可信内核还是非可信内核,以及起始内核标识位指示处理器在切换到当前内核之前的内核为可信内核还是非可信内核。切换状态寄存器适于存储切换状态标识位。切换状态标识位指示内核切换方式。切换控制单元适于接收内核切换请求,并根据当前内核标识位、起始内核标识位和切换状态标识位来处理内核切换请求以进行内核切换。
可选地,在根据本发明的处理器中,内核切换请求包括切换发起请求和与切换发起请求相对应的切换返回请求,且切换发起请求具有对应的内核切换方式,以及切换控制单元适于在接收到切换发起请求时,根据处理器的当前内核来设置起始内核标识位,根据与切换发起请求相对应的内核切换方式来设置切换状态标识位,以及根据切换发起请求的目标内核来设置当前内核标识位以进行内核切换;以及切换控制单元还适于在接收到切换返回请求时,根据起始内核标识位的值来确定切换返回请求的目标内核,根据切换状态标识位确定与切换返回请求相对应的切换发起请求,以及根据所确定的目标内核来设置当前内核标识位以进行内核切换。
可选地,在根据本发明的处理器中,内核切换方式包括对应于切换指令的方式和对应于中断的方式,以及处理器还包括指令执行单元和中断发起单元。指令执行单元耦接到切换控制单元,并适于执行切换指令以向切换控制单元发出对应于切换指令的切换发起请求,以及执行返回指令以向切换控制单元发出切换返回请求。中断发起单元耦接到切换控制单元,并适于产生中断以向切换控制单元发出对应于该中断的切换发起请求。
可选地,根据本发明的处理器还包括:现场维护单元,耦接到切换控制单元,适于将处理器的当前内核的现场状态信息存储到堆栈中,以及适于从堆栈中恢复内核的现场状态信息;以及切换控制单元还适于在处理内核切换请求时,指示现场维护单元存储和/或恢复内核现场状态信息。
可选地,在根据本发明的处理器中,程序状态寄存器包括可信内核程序状态寄存器和非可信内核程序状态寄存器,当处理器处于可信内核中时,使用可信内核程序状态寄存器做为程序状态寄存器,以及当处理器处于非可信内核中时,使用非可信内核程序状态寄存器做为程序状态寄存器;以及切换状态标识位包括可信内核切换状态标识位和非可信内核切换状态标识位,可信内核切换状态标识位指示从非可信内核切换到可信内核的内核切换方式,非可信内核切换状态标识位指示从可信内核切换到非可信内核的内核切换方式。
可选地,根据本发明的处理器还包括:可信调用程序基址寄存器,适于在可信内核中存储跨内核调用程序的地址信息;非可信调用程序基址寄存器,适于在非可信内核中存储跨内核调用程序的地址信息;以及切换控制单元适于在处理由切换指令触发的内核切换请求时,从可信调用程序基址寄存器或者非可信调用程序基址寄存器中获取与切换指令相对应的跨内核调用程序的地址,以便指示指令执行单元从所获取的地址处开始执行指令。
可选地,根据本发明的处理器还包括可信异常程序基址寄存器,适于在可信内核中存储异常处理程序的地址信息;非可信异常程序基址处理器,适于在非可信内核中存储异常处理程序的地址信息;以及切换控制单元适于在处理由中断触发的内核切换请求时,从可信异常程序基址寄存器或者非可信异常程序基址寄存器中获取与中断相对应的异常处理程序的地址,以便指示指令执行单元从所获取的地址处开始执行指令。
可选地,在根据本发明的处理器中,程序状态寄存器还适于存储超级用户状态位,超级用户状态位指示处理器当前处于普通用户模式还是超级用户模式;现场维护单元适于将处理器当前所处内核的现场状态信息存储到超级用户堆栈中;以及切换控制单元适于在处理所述切换发起请求时,在进行内核切换之后,将超级用户状态位设置为指示超级用户模式。
根据本发明的另一个方面,提供了一种对内核切换请求进行处理的方法,适于在具有可信内核和非可信内核的处理器中执行,处理器包括程序状态寄存器和切换状态寄存器,内核切换请求包括切换发起请求和与切换发起请求相对应的切换返回请求,且切换发起请求具有对应的内核切换方式,所述方法包括步骤:接收切换发起请求并进行处理,以便根据处理器当前所处的内核来设置程序状态寄存器中的起始内核标识位,根据与切换发起请求相对应的内核切换方式来设置切换状态寄存器中的切换状态标识位,以及根据切换发起请求的目标内核来设置程序状态寄存器中的当前内核标识位以进行内核切换。
根据本发明的还有一个方面,提供了一种片上系统,包括根据本发明的处理器。
根据本发明的还有一个方面,提供了一种智能设备,包括根据本发明的片上系统。
根据本发明的方案,通过在处理器的程序状态寄存器中引入当前内核标识位和起始内核标识位,引入存储了切换状态的切换状态寄存器,可以在内核切换之前进行先前内核状态的记录,以便可以正确地在内核切换之后返回到内核切换之前的状态,从而可以方便地进行内核切换。因此,根据本发明的方案,利用程序状态寄存器和切换状态寄存器,可以通过指令来引导处理器进行内核切换,从而显著简化了内核切换的处理过程。
对于诸如IoT设备之类的智能设备而言,当这些设备部署在复杂的外部环境中时,需要快速地完成内核切换,以便提供安全的操作方式。因此,根据本发明的方案特别适于在各种IoT设备中使用。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的处理器100的示意图;
图2示出了根据本发明另一个实施例的处理器200的示意图;
图3示出了根据本发明一个实施例的内核切换方法300的示意图;以及
图4示出了根据本发明一个实施例的片上系统(SoC)400的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的处理器100的示意图。如图1所示,处理器100划分为可信内核110和非可信内核120。可信内核110和非可信内核120以及相关的资源分别构成可信世界和非可信世界。为了保证安全,二者在逻辑上是独立的。
处理器100可以在可信内核110即可信世界中执行指令,此时,处理器100处于可信执行环境中,并可以访问可信内核110中专有的可信资源112。处理器100也可以在非可信内核120即非可信世界中执行指令,此时处理器100处于非可信执行环境中,并可以访问非可信内核120中专有的非可信资源122。根据本发明的一种实施方式,当处理器100中只有一个物理内核时,该物理内核可以可信内核110的方式运行,并且可以进行内核切换以切换为非可信内核120的方式来运行。当处理器100中具有多个物理内核时,每个物理内核也可以可信内核110或者非可信内核120的方式来运行,并且可以进行内核切换以切换为不同的内核来运行。
处理器100在处理指令期间,如果遇到要在另一内核中执行特定程序的情况,则进行内核切换,以便进入另一内核中执行特定程序,并在特定程序执行完成之后返回到原先内核继续后续指令的处理。为此,处理器100具有三种可以在内核之间进行切换的方式,其中的两种是发起内核切换的方式,即触发处理器100发起内核切换的方式;另外一种是在进行内核切换并完成特定程序处理之后返回到原先内核的内核切换方式。
根据本发明的一个实施例,发起内核切换的方式包括执行切换指令和中断。
处理器100中提供了专门的指令,例如wsc指令。当处理器100执行wsc指令时,触发内核切换请求,以便处理器100对该内核切换请求进行处理而进行内核切换,并在新的内核中执行与wsc指令所指定的任务相对应的程序。
另外,当处理器100在执行指令期间接收到来自中断源的中断时,如果中断属性和当前处理器100所处的内核不一致,则也会触发产生内核切换请求,以便处理器100对该内核切换请求进行处理而进行内核切换,并在新的内核中执行相应的中断处理程序。例如,当处理器100在可信内核110中执行指令时,如果接收到非可信中断,则处理器100中会产生从可信内核到非可信内核的内核切换请求,以便处理器100进行内核切换,进入非可信内核来执行与该非可信中断相对应的中断处理程序。
无论是通过执行切换指令的方式还是中断的方式,处理器100都会处理相应的内核切换请求而进入到新的内核中来执行相应程序,当相应程序的执行完成时,处理器100执行专门的返回指令以便触发内核切换请求,处理器100随后处理该内核切换请求而返回到先前的内核。根据本发明的一个实施例,处理器100中提供了专门的指令ret。这样,当处理器100在与wsc指令所指定的任务或者中断处理程序执行结束时,执行ret指令,以便发出内核切换请求,并进行内核切换而返回到之前的内核中。
如上所述,处理器100能够处理的内核切换请求包括切换发起请求和与切换发起请求相对应的切换返回请求。切换发起请求具有对应的内核切换方式,即对应于切换指令(wsc)的方式和对应于中断的方式。而切换返回请求是由于执行返回指令(ret)而产生的。
处理器100还包括在可信世界和非可信世界中都可以访问的公共资源130。根据本发明的一个实施例,公共资源130根据处理器100处于可信内核还是非可信内核中而加载不同的内容。
根据一个实施例,公共资源130包括通用寄存器GPR 132,GPR132一般用于传送和暂存数据,也可以参与算数逻辑运算,并保存运算结果。由于寄存器的存取速度比内存快,所以在现代处理器架构中,均会设计多个通用寄存器来加快处理器的执行速度。
另外,公共资源130还包括矢量通用寄存器VGPR 134。与GPR132的功能类似,VGPR134也是用来传送和暂存数据,以及参与算数逻辑运算的寄存器。VGPR 134可以具有比GPR134更多的位数,并且可以更高效地用于矢量运算单元VDSP、浮点运算单元FPU中的浮点运算。
另外,可选地,公共资源130中还包括控制寄存器CR 136。CR 136可以控制和确定处理器的操作模式以及设置系统操作功能,I/O控制等。在公共资源130中的CR 136一般为不包含安全信息的寄存器。而包含安全信息的控制寄存器CR则可以为可信内核110和非可信内核120来分别设置,如包含在可信内核110中的可信控制寄存器112和在非可信内核120中的非可信控制寄存器122。
根据本发明的一个实施例,为了支持在可信内核和非可信之间的切换,处理器100还包括分别位于可信内核110和非可信内核120中的可信程序状态寄存器T_PSR 114和非可信程序状态寄存器NT_PSR 124。这两个寄存器具有基本相同的结果,并且可以相同的逻辑方式,即程序状态寄存器PSR的名义提供访问。即当处理器100处于可信内核110中时,当处理器100执行指令来访问程序状态寄存器PSR时,指令访问的是可信程序状态寄存器T_PSR114。当处理器100处于非可信内核120中时,当处理器100执行指令来访问程序状态控制器PSR时,此时指令访问的是NT_PSR 124。
T_PSR 114和NT_PSR 124中具有当前内核标识位T。当前内核标识位T指示处理器100当前处于可信内核还是非可信内核中执行指令。根据本发明的一个实施方式,T为寄存器PSR中的一位。当T的值为1时,指示处理器100当前处于可信内核中。当T的值为0时,指示处理器100当前处于非可信内核中。因此,T_PSR 114的T位值固定为1,而NT_PSR 124的T位值固定为0。可选地,还可以通过修改PSR的T位值,来指示处理器100进行内核切换。应当注意的是,上面对于T值的描述是示意性的,例如,根据另一个实施例,可以T值为0来指示处理器100处于可信内核中,以及T值为1来指示非可信内核,并相应的T_PSR 114和NT_PSR 124的T位值可以分别固定为0和1。本发明不受限于T值的具体取值方式,所有可以不同的T值来指示不同内核的方式都在本发明的保护范围之内。同样的,对于其它寄存器中的各个状态位的取值也是示意性的,并且可以根据实际设计需要而采用不同的取值方式,而没有脱离本发明的保护范围。
T_PSR 114和NT_PSR 124中还具有起始内核标识位SP。起始内核标识位SP指示处理器100在进行内核切换之前是处于可信内核中还是处于非可信内核中,即指示内核切换的起始内核。根据本发明的一个实施例,起始内核标识位SP为程序状态寄存器PSR中的一位。当PSR.SP的值为1时,指示内核切换时的起始内核为可信内核;当PSR.SP的值为0时,指示内核切换时的起始内核为非可信内核。当处理器100进行内核切换时,根据处理器100当前所处的内核,设置PSR.SP位的值,以便在进行内核切换之后,可以返回到原先的内核中。
根据本发明的一个实施例,处理器100还包括切换状态寄存器T_WSSR 116,切换状态寄存器T_WSSR中存储有切换状态标识位。切换状态标识位指示内核切换方式,即指示当处理器处理内核切换请求中的切换发起请求时、该请求是由于执行切换指令而发起的还是由于响应中断而发起的。考虑到切换状态寄存器在进行内核切换处理时使用,因此,根据一个实施例,切换状态寄存器T_WSSR 116处于可信内核110中。
可选地,根据本发明的实施例,切换状态标识位包括可信内核切换状态标识位TSC和非可信内核切换状态标识位NTSC。T_WSSR.TSC指示切换到可信内核的内核切换方式,而T_WSSR.NTSC指示切换到非可信内核的内核切换方式。根据一个实施例,当TSC的值为0时,指示通过可信中断的方式切换到可信内核;而当TSC的值为1时,指示通过执行切换指令wsc切换到可信内核。类似地,当NTSC的值为0时,指示通过非可信中断的方式切换到非可信内核,而当NTSC的值为1时,指示通过执行切换指令wsc而切换到非可信内核。根据一种实施例,TSC和NTSC都为切换状态寄存器中的一位。本发明不受限于上述规定,任何可以在切换状态寄存器T_WSSR中为各种切换方式进行定义的方式都在本发明的保护范围之内。
另外,处理器100还包括在可信内核110中的可信跨内核调用程序基址寄存器T_EBR 118和非可信内核120中的非可信跨内核调用程序基址寄存器NT_EBR 128。T_EBR 118中存储了跨内核调用的可信程序的地址信息,类似地,NT_EBR 128中存储了跨内核调用的非可信程序的地址信息。根据一种实施方式,T_EBR和NT_EBR寄存器存放跨内核任务调用程序的入口向量表。与wsc所指定的可信任务或者非可信任务相对应的跨内核调用程序可以分别在T_EBR 118和NT_EBR 128中找到相应的入口地址,从而便于处理器100跳转到该入口地址来执行夸内核调用程序中的指令。
另外,处理器100还包括在可信内核110中的可信异常程序基址寄存器T_VBR 117和非可信内核120中的非可信异常程序基址寄存器NT_VBR 127。
T_VBR 117为可信内核110中的异常入口基址寄存器。可信内核110中的所有异常或者中断服务程序的入口地址均存储于以T_VBR 117为基址的异常向量表中。当处理器100响应可信中断时,处理器以T_VBR 117作为基址,从异常向量表中获取对应中断服务程序入口地址,从而便于处理器100跳转到该入口地址来执行中断服务程序中的指令。
类似地,NT_VBR 127为非可信内核120中的异常入口基址寄存器。非可信内核120中的所有中断服务程序的入口地址均存储于以NT_VBR 127为基址的异常向量表中。当处理器100响应非可信中断时,处理器以NT_VBR 127作为基址,从异常向量表中获取对应中断服务程序入口地址,从而便于处理器100跳转到该入口地址来执行中断服务程序中的指令。
当处理器100处理中断时,无论是在可信内核110中还是在非可信内核120中,都需要在进行中断处理之前保存内核的当前状态,例如内核的程序状态和计数器信息等,以便在中断处理完成之后,恢复内核状态。为此,处理器110包括在可信内核110中的异常保留状态寄存器T_EPSR 119a和异常保留程序计数器T_EPC 119b,以及在非可信内核120中的异常保留状态寄存器NT_EPSR 129a和异常保留程序计数器NT_EPC 129b。
T_EPSR 119a可以在可信内核中处理中断或者异常中保留T_PSR 114中的数据,而T_EPC 119b可以保留程序计数器的值。这样,当处理器100在完成中断处理时,可以从T_EPSR 119a中恢复T_PSR 114的值,并且从异常保留程序计数器T_EPC 119b中恢复程序计数器来继续后续程序的执行。
类似地,NT_EPSR 129a可以在非可信内核中处理中断或者异常中保留NT_PSR 124中的数据,而NT_EPC 129b可以保留程序计数器的值。这样,当处理器100在完成中断处理时,可以从NT_EPSR 129a中恢复NT_PSR 114的值,并且从异常保留程序计数器NT_EPC 129b中恢复程序计数器来继续后续程序的执行。
另外,处理器100还可以包括在可信内核110中的可信用户堆栈115以及在非可信内核120中的非可信用户堆栈125。可信用户堆栈115用于存储可信内核的现场状态信息,如各个寄存器和程序计数器的值等。类似地,非可信用户堆栈125用于存储非可信内核的现场状态信息。当进行内核切换时,可以在切换之前将内核的现场状态信息存储到用户堆栈中,这样就可以在内核切换回来之后,从用户堆栈中恢复现场状态信息以便继续后续指令的执行。
可选地,根据本发明的一种实施方式,处理器100还可以包括超级用户模式和普通用户模式。在可信内核110和非可信内核120中都具有超级用户和普通用户模式,即处理器100包括可信内核超级用户模式、可信内核普通用户模式、非可信内核超级用户模式和非可信内核普通用户模式。
程序状态寄存器PSR中还包括用户状态位S,以指示处理器100当前处于超级用户模式还是普通用户模式。根据一种实施方式,当S位的值为0时,指示处理器100当前处于普通用户模式,而当S的值为1时,指示处理器100当前处于超级用户模式。因此,可以根据程序状态寄存器PSR中的T和S位的值,来确定处理器100处于那种模式下。
可选地,在存在超级用户模式和普通用户模式的情况下,在内核切换期间,采用超级用户模式下的用户堆栈来保存内核现场状态,并且在进行内核切换之后,将切换到超级用户模式下进行操作。因此,程序状态寄存器(T_PSR 114和NT_PSR 124)、切换状态寄存器T_WSSR 116、跨内核调用程序基址寄存器(T_EBR 118和NT_EBR 128)、异常程序基址寄存器(T_VBR 117和NT_VBR 127)都在超级用户模式下可用。
应当注意的是,本发明不受限于处理器100是否具有超级用户模式和普通用户模式,只要处理器100能够在可信内核和非可信内核之间进行切换,则该处理器就在本发明的保护范围之内。
另外,应当注意的是,本发明以程序状态寄存器(PSR)和切换状态寄存器(WSSR)中所包含的T、SP、TSC和NTSC位等为例对内核切换期间的状态和控制信息进行了描述,但是本发明不受限于此,根据实际需要,可以将PSR和/或WSSR等寄存器用其它寄存器来替代或者合并,或者将各个状态位(T、SP、TSC和NTSC)部署在其它寄存器中,只要在处理器中包含有实现上述功能的状态位或者寄存器,则该处理器的设计就在本发明的保护范围之内。
图2示出了根据本发明另一个实施例的处理器200的示意图。图1示出了处理器100在可信内核110和非可信内核120中的各个寄存器等部件。图2示出了处理器200用于指令执行的各个部件。处理器100和200示出了本发明所要求保护的处理器的不同方面,但是二者都在本发明的保护范围之内。
如图2所示,处理器200包括切换控制单元210。切换控制单元210接收内核切换请求,并根据程序状态寄存器PSR和切换状态寄存器T_WSSR中存储的值来处理内核切换请求以进行内核切换。
如上所述,内核切换请求包括切换发起请求和相对应的切换返回请求,其中切换发起请求具有相对应的内核切换方式。内核切换方式包括由处理器200执行切换指令以及处理器200中产生中断而触发。而切换返回请求由处理器200执行返回指令而触发。
切换控制单元210在接收到切换发起请求时,根据处理器200当前所处的内核来设置起始内核标识位PSR.SP。根据一种实施例,当处理器200当前内核为可信内核110时,此时可以将PSR.SP位的值设置为1,而当处理器200当前内核为非可信内核120时,可以将PSR.SP的值设置为0。
随后,切换控制单元210根据内核切换方式来设置切换状态寄存器T_WSSR中的切换状态标识位。根据本发明的一个实施例,切换状态寄存器T_WSSR包括可信内核切换状态标识位TSC和非可信内核切换状态标识位NTSC。当处理器200当前处于可信内核110中并要切换到非可信内核120时,可以对NTSC的值进行设置来指示相应的切换方式;类似地,当处理器200当前处于非可信内核120中并要切换到可信内核110时,可以对TSC的值进行设置来指示相应的切换方式。
接着,切换控制单元210将程序状态寄存器PSR中的T位设置为指示内核切换的目标内核,以便处理器200进行内核切换。
切换控制单元210在接收到切换返回请求时,根据起始内核标识位PSR.SP的值来确定该切换返回请求的目标内核,根据切换状态寄存器T_WSSR中的切换状态标识位确定与切换返回请求相对应的切换发起请求,并将当前内核标识位PSR.T的值设置为指示所确定的目标内核以进行内核切换,以返回到发出切换发起请求时的内核状态。
根据本发明的一种实施方式,切换控制单元210根据下面的表格1中给出的值来对切换返回请求进行处理:
表格1:切换返回请求判断
如图2所示,处理器200还包括耦接到切换控制单元210的指令执行单元220和中断发起单元230。指令执行单元220在可信内核110和非可信内核120中执行指令,并且在执行到切换指令wsc时,向切换控制单元210发出对应于切换指令wsc的切换发起请求,以便切换控制单元210处理该切换发起请求来进行内核切换。
指令执行单元220还可以在进行了内核切换之后执行相应的程序,例如与在wsc指令中指定的跨内核任务相对应的程序中的指令,以及中断处理程序中的指令。当执行这些程序完成时,指令执行单元220执行返回指令ret以向切换控制单元210发出切换返回请求,以便切换控制单元210执行内核切换而返回到发出切换发起请求之前的内核状态。
中断发起单元230产生中断,以向切换控制单元210发出对应于该中断的切换发起请求。中断发起单元230可以产生的中断包括可信中断和非可信中断。可信中断要在可信内核下进行处理,而非可信中断要在非可信内核中进行处理。当处理器200处于非可信内核120中而中断发起单元230产生了可信中断时,或者当处理器200处于可信内核中而中断发起单元230产生了非可信中断时,此时需要进行内核切换以便进行中断处理,因此,中断发起单元2340向切换控制单元210发出对应于该中断的切换发起请求,以便切换控制单元210进行内核切换,以便切换到恰当的内核中进行中断处理。
如图2所示,处理器200还包括耦接到切换控制单元210的现场维护单元240。现场维护单元240可以将处理器200的当前内核的现场状态信息存储到用户堆栈中,或者从用户堆栈中恢复内核的现场状态信息。根据一种实施例,当处理器200处于可信内核中时,现场维护单元240可以将可信内核的现场状态信息存储到可信内核的用户堆栈中(特别是可信内核的超级用户堆栈中),或者从可信内核的用户堆栈中恢复可信内核的现场状态信息。类似地,当处理器200处于非可信内核中时,现场维护单元240可以将非可信内核的现场状态信息存储到非可信内核的用户堆栈中(特别是非可信内核的超级用户堆栈中),或者从中恢复非可信内核的现场状态信息。
当切换控制单元210对内核切换请求进行处理时,会指示现场维护单元240存储和/或恢复内核现场状态信息。当切换控制单元240对切换发起请求进行处理时,在内核切换之前,将当前内核的现场状态信息存储到该内核的用户堆栈中。相应地,当切换控制单元240对切换返回请求进行处理时,可以在进行内核切换之后,从目标内核的用户堆栈中恢复先前存储的现场状态信息,以便继续后续指令的执行。
下面分别对图2所示的处理器200中的各个部件进行内核切换的具体过程进行描述。
实施方式1:
当处理器200处于非可信内核120中时,指令执行单元220执行切换指令wsc而发出内核切换请求(到可信内核的切换发起请求)。切换控制单元210接收该请求,指示现场维护单元240将非可信内核120的现场状态信息存储到非可信内核的用户堆栈中(特别是非可信内核的超级用户堆栈中),将切换状态寄存器中的可信内核切换状态标识位T_WSSR.TSC设置为1,以指示通过执行wsc指令的方式切换到可信内核,并将程序状态寄存器PSR中的起始内核标识位PSR.SP设置为0以指示起始内核为非可信内核。随后将程序状态寄存器PSR中的当前内核标识位PSR.T设置为1,以指示目标内核为可信内核以便切换到可信内核110。随后切换控制单元210指示指令执行单元220执行与切换指令wsc所指示的跨内核任务相对应的程序中的指令。根据一种实施例,切换控制单元210从可信调用程序基址寄存器T_EBR 118中获取与跨内核调用任务相对应的程序的入口地址,并将该地址发送给指令执行单元220,以便指令执行单元220从该地址开始执行指令,即执行与跨内核调用任务相对应的程序指令。
实施方式2:
当处理器200处于可信内核110中时,指令执行单元220执行切换指令wsc而发出内核切换请求(到非可信内核的切换发起请求)。切换控制单元210接收该请求,指示现场维护单元240将可信内核110的现场状态信息存储到可信内核的用户堆栈中(特别是可信内核的超级用户堆栈中),将切换状态寄存器中的非可信内核切换状态标识位T_WSSR.NTSC设置为1,以指示通过执行wsc指令的方式切换到非可信内核,并将程序状态寄存器PSR中的起始内核标识位NTPSR.SP设置为1以指示起始内核为可信内核。随后将程序状态寄存器PSR中的当前内核标识位PSR.T设置为0,以指示目标内核为非可信内核以便切换到非可信内核120。随后切换控制单元210指示指令执行单元220执行与切换指令wsc所指示的跨内核任务相对应的程序中的指令。根据一种实施例,切换控制单元210从非可信调用程序基址寄存器NT_EBR128中获取与跨内核调用任务相对应的程序的入口地址,并将该地址发送给指令执行单元220,以便指令执行单元220从该地址开始执行指令,即执行与跨内核调用任务相对应的程序指令。
实施方式3:
当处理器200处于非可信内核120中时,中断发起单元230产生可信中断,并据此向切换控制单元210发出内核切换请求(到可信内核的切换发起请求)。切换控制单元210接收该请求,指示现场维护单元240将非可信内核120的现场状态信息存储到非可信内核的用户堆栈中(特别是非可信内核的超级用户堆栈中)。切换控制单元210将程序状态寄存器PSR中的当前内核标识位PSR.T设置为1,以指示目标内核为可信内核以便切换到可信内核110。随后,在可信内核110中,对可信内核程序状态寄存器T_PSR的值进行备份,将程序状态寄存器PSR中的起始内核标识位PSR.SP设置为0以指示起始内核为非可信内核120,并且将切换状态寄存器中的可信内核切换状态标识位T_WSSR.TSC设置为0,以指示通过可信中断触发的方式切换到可信内核。随后切换控制单元210指示指令执行单元220执行与该可信中断相对应的中断处理程序中的指令。根据一种实施例,切换控制单元210从可信异常程序基址寄存器T_VBR 117中获取与可信中断相对应的中断处理程序的入口地址,并将该地址发送给指令执行单元220,以便指令执行单元220从该地址开始执行指令,即执行相应中断处理程序中的指令。
实施方式4:
当处理器200处于可信内核110中时,中断发起单元230产生非可信中断,并据此向切换控制单元210发出内核切换请求(到非可信内核的切换发起请求)。切换控制单元210接收该请求,指示现场维护单元240将可信内核110的现场状态信息存储到可信内核的用户堆栈中(特别是可信内核的超级用户堆栈中)。切换控制单元210还可以将可信内核中各个通用寄存器的内容存储到可信内核的用户堆栈中,并清除这些通用寄存器的内容。随后,切换控制单元210将切换状态寄存器中的非可信内核切换状态标识位T_WSSR.NTSC设置为0,以指示在可信内核下已经完成了现场信息压栈,并要通过非可信中断触发的方式切换到非可信内核。切换控制单元210接着将程序状态寄存器PSR中的当前内核标识位PSR.T设置为0,以指示目标内核为非可信内核以便切换到非可信内核120。随后,在非可信内核120中,对非可信内核程序状态寄存器NT_PSR的值进行备份,将程序状态寄存器PSR中的起始内核标识位NTPSR.SP设置为1以指示起始内核为可信内核110,并且随后切换控制单元210指示指令执行单元220执行与该非可信中断相对应的中断处理程序中的指令。根据一种实施例,切换控制单元210从非可信异常程序基址寄存器NT_VBR 127中获取与非可信中断相对应的中断处理程序的入口地址,并将该地址发送给指令执行单元220,以便指令执行单元220从该地址开始执行指令,即执行相应中断处理程序中的指令。
实施方式5:
处理器200处于可信内核110中,指令执行单元220执行返回指令ret,此时如果PSR中的T位和SP位的值不一致,即T位的值为1而SP位的值为0时,则指令执行单元220发出内核切换请求(即到非可信内核的切换返回请求)。
切换控制单元210接收该请求,并根据T_WSSR.TSC的值进行下一步处理。
如果此时T_WSSR.TSC的值为1,则说明处理器200是由于执行wsc指令而进入当前的可信内核110中。因此,切换控制单元将PSR.T的值设置为0,来指示非可信内核以便切换到非可信内核。在切换到非可信内核120之后,指示现场维护单元240从非可信内核的用户堆栈(特别是非可信内核的超级用户堆栈)中恢复非可信内核120的现场状态信息,以便指令执行单元220继续执行指令。
如果此时T_WSSR.TSC的值为0,则说明处理器200是因为处理可信中断而进入当前的可信内核110中。因此,切换控制单元210首先恢复先前保存的可信内核程序状态寄存器T_PSR中的值,将PSR.T的值设置为0,来指示非可信内核以便切换到非可信内核120。在切换到非可信内核120之后,切换控制单元210指示现场维护单元240从非可信内核的用户堆栈(特别是非可信内核的超级用户堆栈)中恢复非可信内核120的现场状态信息,以便指令执行单元220继续执行指令。
实施方式6:
处理器200处于非可信内核120中,指令执行单元220执行返回指令ret,此时如果PSR中的T位和SP位的值不一致,即T位的值为0而SP位的值为1时,则指令执行单元220发出内核切换请求(即到可信内核的切换返回请求)。
切换控制单元210接收该请求,并根据T_WSSR.NTSC的值进行下一步处理。
如果此时T_WSSR.NTSC的值为1,则说明处理器200是由于执行wsc指令而进入当前的非可信内核120中。因此,切换控制单元将PSR.T的值设置为1,来指示可信内核以便切换到可信内核。在切换到可信内核110之后,指示现场维护单元240从可信内核的用户堆栈(特别是可信内核的超级用户堆栈)中恢复可信内核110的现场状态信息,以便指令执行单元220继续执行指令。
如果此时T_WSSR.NTSC的值为0,则说明处理器200是因为处理非可信中断而进入当前的非可信内核120中。因此,切换控制单元210首先恢复先前保存的非可信内核程序状态寄存器NT_PSR中的值,将PSR.T的值设置为1,来指示可信内核以便切换到可信内核110。在切换到可信内核110之后,切换控制单元210指示现场维护单元240从可信内核的用户堆栈(特别是可信内核的超级用户堆栈)中恢复可信内核110的现场状态信息,以便指令执行单元220继续执行指令。
在上面结合图2的描述中,以逻辑功能方式将处理器100或者200中的部件进行了划分,并描述了处理器200中各个部件为了进行内核切换而进行的处理。应当主要的是,上面对各个部分的划分是示意性的,这些部件可以根据需要进行合并或者拆分而没有脱离本发明的保护范围。
图3示出了根据本发明一个实施例的内核切换方法300的示意图。方法300适于在参考图1或者2所描述的处理器100或者200中执行,以便让处理器进行内核切换。
方法300适于步骤S310。在步骤S310中,接收切换发起请求并进行处理。如上所述,内核切换请求包括切换发起请求和与所述切换发起请求相对应的切换返回请求。由处理器200执行切换指令以及处理器200中产生中断而触发。而切换返回请求由处理器200执行返回指令而触发。
在步骤S310中,在接收到切换发起请求时,根据处理器当前所处的内核来设置程序状态寄存器PSR中的起始内核标识位PSR.SP。当处理器200当前内核为可信内核110时,可以将PSR.SP位的值设置为1,而当处理器200当前内核为非可信内核120时,可以将PSR.SP的值设置为0。随后,在步骤S310中,根据与所接收的切换发起请求相对应的内核切换方式来设置切换状态寄存器T_WSSR中的切换状态标识位。根据本发明的一个实施例,切换状态寄存器T_WSSR包括可信内核切换状态标识位TSC和非可信内核切换状态标识位NTSC。当处理器当前处于可信内核110中,并接收到要切换到非可信内核120的切换发起请求时,可以对T_WSSR.NTSC的值进行设置来指示相应的切换方式;类似地,当处理器当前处于非可信内核120中并接收到要切换到可信内核110的切换发起请求时,可以对T_WSSR.TSC的值进行设置来指示相应的切换方式。
随后,在步骤S310中,将程序状态寄存器PSR中的T位设置为指示内核切换的目标内核以进行内核切换。
可选地,在步骤S310中,在进行内核切换之后,可以在新内核中执行与切换发起请求相对应的处理程序,以便完成相应任务。
根据本发明的一种实施方式,方法300还包括步骤S320。在步骤S320中,接收切换返回请求并进行处理。如上所述,切换返回请求与切换发起请求相对应,并且在与切换发起请求相对应的处理程序执行完成而让处理器执行返回指令ret时,如果此时程序状态寄存器PSR中的T位和SP位的值不一致,则发出切换返回请求,以便让内核切换回到之前的内核状态。
在步骤S320中,根据起始内核标识位PSR.SP的值来确定该切换返回请求的目标内核,根据切换状态寄存器T_WSSR中的切换状态标识位确定与切换返回请求相对应的切换发起请求,并将当前内核标识位PSR.T的值设置为指示所确定的目标内核以进行内核切换,以返回到发出切换发起请求时的内核状态。步骤S320中对切换返回请求的判断逻辑如上参考表格1所述,这里不再进行赘述。
根据本发明的一个实施例,内核切换方式包括执行切换指令wsc而触发内核切换。在步骤S310中,当切换发起请求是由于执行切换指令wsc而发起时,在内核切换之后,执行与在wsc指令中指定的跨内核任务相对应的程序中的指令。
类似地,内核切换方式包括对对中断进行处理而触发,则在步骤S310中,在内核切换之后,执行执行与该中断相对应的中断处理程序中的指令。并且当执行这些程序完成时,执行返回指令ret以发出切换返回请求,以便执行内核切换而返回到发出切换发起请求之前的内核状态。
下面参考图1的处理器100的结构对步骤S310中对切换发起请求的具体处理进行描述。
实施方式7:
当处理器200处于非可信内核120中时,由于执行切换指令wsc而发出内核切换请求(到可信内核的切换发起请求)。此时,在步骤S310中,接收该请求,将非可信内核120的现场状态信息存储到非可信内核的用户堆栈中(特别是非可信内核的超级用户堆栈中),将切换状态寄存器中的可信内核切换状态标识位T_WSSR.TSC设置为1,以指示通过执行wsc指令的方式切换到可信内核,并将程序状态寄存器PSR中的起始内核标识位PSR.SP设置为0以指示起始内核为非可信内核。随后将程序状态寄存器PSR中的当前内核标识位PSR.T设置为1,以指示目标内核为可信内核以便切换到可信内核110。随后执行与切换指令wsc所指示的跨内核任务相对应的程序中的指令。根据一种实施例,从可信调用程序基址寄存器T_EBR 118中获取与跨内核调用任务相对应的程序的入口地址,以便从该地址开始执行指令,即执行与跨内核调用任务相对应的程序指令。
实施方式8:
当处理器200处于可信内核110中时,由于执行切换指令wsc而发出内核切换请求(到非可信内核的切换发起请求)。此时,在步骤S310中,接收该请求,将可信内核110的现场状态信息存储到可信内核的用户堆栈中(特别是可信内核的超级用户堆栈中),将切换状态寄存器中的非可信内核切换状态标识位T_WSSR.NTSC设置为1,以指示通过执行wsc指令的方式切换到非可信内核,并将程序状态寄存器PSR中的起始内核标识位PSR.SP设置为1以指示起始内核为可信内核。随后将程序状态寄存器PSR中的当前内核标识位PSR.T设置为0,以指示目标内核为非可信内核以便切换到非可信内核120。随后执行与切换指令wsc所指示的跨内核任务相对应的程序中的指令。根据一种实施例,可以从非可信调用程序基址寄存器NT_EBR 128中获取与跨内核调用任务相对应的程序的入口地址,以便从该地址开始执行指令,即执行与跨内核调用任务相对应的程序指令。
实施方式9:
当处理器200处于非可信内核120中时,由于产生可信中断而发出内核切换请求(到可信内核的切换发起请求)。此时,在步骤S310中,接收该请求,将非可信内核120的现场状态信息存储到非可信内核的用户堆栈中(特别是非可信内核的超级用户堆栈中)。将程序状态寄存器PSR中的当前内核标识位PSR.T设置为1,以指示目标内核为可信内核以便切换到可信内核110。随后,在可信内核110中,对可信内核程序状态寄存器T_PSR的值进行备份,将程序状态寄存器PSR中的起始内核标识位PSR.SP设置为0以指示起始内核为非可信内核120,并且将切换状态寄存器中的可信内核切换状态标识位T_WSSR.TSC设置为0,以指示通过可信中断触发的方式切换到可信内核。随后执行与该可信中断相对应的中断处理程序中的指令。根据一种实施例,从可信异常程序基址寄存器T_VBR117中获取与可信中断相对应的中断处理程序的入口地址,并从该地址开始执行指令,即执行相应中断处理程序中的指令。
实施方式10:
当处理器200处于可信内核110中时,由于产生非可信中断而发出内核切换请求(到非可信内核的切换发起请求)。此时,在步骤S310中,接收该请求,将可信内核110的现场状态信息存储到可信内核的用户堆栈中(特别是可信内核的超级用户堆栈中)。切换控制单元210还可以将可信内核中各个通用寄存器的内容存储到可信内核的用户堆栈中,并清除这些通用寄存器的内容。随后,在步骤S310中,将切换状态寄存器中的非可信内核切换状态标识位T_WSSR.NTSC设置为0,以指示在可信内核下已经完成了现场信息压栈,并要通过非可信中断触发的方式切换到非可信内核。接着,在步骤S310中,将程序状态寄存器PSR中的当前内核标识位PSR.T设置为0,以指示目标内核为非可信内核以便切换到非可信内核120。随后,在非可信内核120中,对非可信内核程序状态寄存器NT_PSR的值进行备份,将程序状态寄存器PSR中的起始内核标识位PSR.SP设置为1以指示起始内核为可信内核110。随后执行与该非可信中断相对应的中断处理程序中的指令。根据一种实施例,从非可信异常程序基址寄存器NT_VBR 127中获取与非可信中断相对应的中断处理程序的入口地址,以便指从该地址开始执行指令,即执行相应中断处理程序中的指令。
下面参考图1的处理器100的结构对步骤S320中对切换返回请求的具体处理进行描述。
实施方式11:
处理器200处于可信内核110中,在执行返回指令ret时,如果PSR中的T位和SP位的值不一致,即T位的值为1而SP位的值为0时,则会发出内核切换请求(即到非可信内核的切换返回请求)。此时,在步骤S320中,接收该请求,并根据T_WSSR.TSC的值进行下一步处理。
如果此时T_WSSR.TSC的值为1,则说明处理器200是由于执行wsc指令而进入当前的可信内核110中。因此,将PSR.T的值设置为0,来指示非可信内核以便切换到非可信内核。在切换到非可信内核120之后,从非可信内核的用户堆栈(特别是非可信内核的超级用户堆栈)中恢复非可信内核120的现场状态信息,以便继续执行指令。
如果此时T_WSSR.TSC的值为0,则说明处理器200是因为处理可信中断而进入当前的可信内核110中。因此,首先恢复先前保存的可信内核程序状态寄存器T_PSR中的值,将PSR.T的值设置为0,来指示非可信内核以便切换到非可信内核120。在切换到非可信内核120之后,从非可信内核的用户堆栈(特别是非可信内核的超级用户堆栈)中恢复非可信内核120的现场状态信息,以便继续执行指令。
实施方式12:
处理器200处于非可信内核120中,在执行返回指令ret时,如果PSR中的T位和SP位的值不一致,即T位的值为0而SP位的值为1,则会发出内核切换请求(即到可信内核的切换返回请求)。
在步骤S310中,接收该请求,并根据T_WSSR.NTSC的值进行下一步处理。
如果此时T_WSSR.NTSC的值为1,则说明处理器200是由于执行wsc指令而进入当前的非可信内核120中。因此,将PSR.T的值设置为1,来指示可信内核以便切换到可信内核。在切换到可信内核110之后,从可信内核的用户堆栈(特别是可信内核的超级用户堆栈)中恢复可信内核110的现场状态信息,以便继续执行指令。
如果此时T_WSSR.NTSC的值为0,则说明处理器200是因为处理非可信中断而进入当前的非可信内核120中。因此,首先恢复先前保存的非可信内核程序状态寄存器NT_PSR中的值,将PSR.T的值设置为1,来指示可信内核以便切换到可信内核110。在切换到可信内核110之后,从可信内核的用户堆栈(特别是可信内核的超级用户堆栈)中恢复可信内核110的现场状态信息,以便继续执行指令。
图4示出了根据本发明一个实施例的片上系统(SoC)400的示意图。片上系统400包括参考图1所述的处理器100、各种中断源420、存储空间430和协处理器440等。片上系统可以集成在一块电路板上,并构成了一个相对完整的处理系统,中断源420例如为各种外设接口,接收外部输入并且输出处理器100经过处理之后的输出。存储空间430可以为处理器100提供外部存储空间,用于存储处理器100要执行的代码和产生的各种输出数据。协处理器440为一种专门的处理器,用于执行专门的处理任务,例如图像运算等。
根据本发明的片上系统(SoC)可以在各种智能设备中使用,以在智能设备中用于实现相应的功能。这样的智能设备包括但不限于车载设备、智能音箱、智能显示设备、IoT设备、移动终端和个人数字终端等,所有可以纳入本说明中所公开的加速计算系统和/或其它执行逻辑的系统均在本发明的保护范围之内。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (31)
1.一种处理器,具有可信内核和非可信内核,所述处理器包括:
程序状态寄存器,适于存储当前内核标识位和起始内核标识位,所述当前内核标识位指示所述处理器的当前内核为可信内核还是非可信内核,以及所述起始内核标识位指示所述处理器在切换到所述当前内核之前的内核为可信内核还是非可信内核;
切换状态寄存器,适于存储切换状态标识位,所述切换状态标识位指示内核切换方式;以及
切换控制单元,适于接收内核切换请求,并根据所述当前内核标识位、起始内核标识位和所述切换状态标识位来处理所述内核切换请求以进行内核切换。
2.如权利要求1所述的处理器,其中所述内核切换请求包括切换发起请求和与所述切换发起请求相对应的切换返回请求,且所述切换发起请求具有对应的内核切换方式,以及
所述切换控制单元适于在接收到所述切换发起请求时,根据所述处理器的当前内核来设置所述起始内核标识位,根据与所述切换发起请求相对应的内核切换方式来设置所述切换状态标识位,以及根据所述切换发起请求的目标内核来设置所述当前内核标识位以进行内核切换;以及
所述切换控制单元还适于在接收到所述切换返回请求时,根据所述起始内核标识位的值来确定所述切换返回请求的目标内核,根据所述切换状态标识位确定与所述切换返回请求相对应的切换发起请求,以及根据所确定的目标内核来设置所述当前内核标识位以进行内核切换。
3.如权利要求2所述的处理器,其中所述内核切换方式包括对应于切换指令的方式和对应于中断的方式,以及所述处理器还包括:
指令执行单元,耦接到所述切换控制单元,适于执行所述切换指令以向所述切换控制单元发出对应于所述切换指令的切换发起请求,以及执行返回指令以向所述切换控制单元发出切换返回请求;以及
中断发起单元,耦接到所述切换控制单元,适于产生中断,以向所述切换控制单元发出对应于所述中断的切换发起请求。
4.如权利要求3所述的处理器,还包括:
现场维护单元,耦接到所述切换控制单元,适于将处理器的当前内核的现场状态信息存储到堆栈中,以及适于从所述堆栈中恢复所述内核的现场状态信息;以及
所述切换控制单元还适于在处理所述内核切换请求时,指示所述现场维护单元存储和/或恢复内核现场状态信息。
5.如权利要求1-4中任一个所述的处理器,其中所述程序状态寄存器包括可信内核程序状态寄存器和非可信内核程序状态寄存器,当所述处理器处于可信内核中时,使用所述可信内核程序状态寄存器做为所述程序状态寄存器,以及当所述处理器处于非可信内核中时,使用所述非可信内核程序状态寄存器做为所述程序状态寄存器;以及
所述切换状态标识位包括可信内核切换状态标识位和非可信内核切换状态标识位,所述可信内核切换状态标识位指示从非可信内核切换到可信内核的内核切换方式,所述非可信内核切换状态标识位指示从可信内核切换到非可信内核的内核切换方式。
6.如权利要求5所述的处理器,其中所述切换控制单元适于在所述处理器处于非可信内核中、并接收到所述指令执行单元执行所述切换指令而发出的切换发起请求时:
指示所述现场维护单元将所述非可信内核的现场状态信息存储到所述非可信内核的堆栈中;
将所述可信内核切换状态标识位设置为指示与所述切换指令相对应的内核切换方式,将所述起始内核标识位设置为指示非可信内核,以及将所述当前内核标识位设置为指示可信内核以便切换到可信内核;以及
指示所述指令执行单元执行与所述切换指令相对应的程序中的指令。
7.如权利要求5或者6所述的处理器,其中所述切换控制单元适于在所述处理器处于可信内核中、并接收到所述指令执行单元执行所述切换指令而发出的切换发起请求时:
指示所述现场维护单元将所述可信内核的现场状态信息存储到所述可信内核的堆栈中;
将所述非可信内核切换状态标识位设置为指示与所述切换指令相对应的内核切换方式,将所述起始内核标识位设置为指示可信内核,以及将所述当前内核标识位设置为指示非可信内核以便切换到非可信内核;以及
指示所述指令执行单元执行与所述切换指令相对应的程序中的指令。
8.如权利要求5-7中任一个所述的处理器,其中所述切换控制单元适于在所述处理器处于非可信内核中、并接收到所述中断发起单元产生可信中断而发出的切换发起请求时:
指示所述现场维护单元将所述非可信内核的现场状态信息存储到所述非可信内核的堆栈中;
将所述当前内核标识位设置为指示可信内核以便切换到可信内核;
备份所述可信内核程序状态寄存器中的值;
将所述起始内核标识位设置为指示非可信内核;
将所述可信内核切换状态标识位设置为指示与所述可信中断相对应的内核切换方式;以及
指示所述指令执行单元来执行适于处理所述可信中断的程序中的指令。
9.如权利要求5-8中任一个所述的处理器,其中所述切换控制单元适于在所述处理器处于可信内核中、并接收到所述中断发起单元产生非可信中断而发出的切换发起请求时:
指示所述现场维护单元将所述可信内核的现场状态信息存储到所述可信内核的堆栈中;
将所述非可信内核切换状态标识位设置为指示与所述非可信中断相对应的内核切换方式;
将所述当前内核标识位设置为指示非可信内核以便切换到非可信内核;
备份所述非可信内核程序状态寄存器中的值,并将所述起始内核标识位设置为指示可信内核;以及
指示所述指令执行单元来执行适于处理所述非可信中断的程序中的指令。
10.如权利要求5-9中任一个所述的处理器,其中所述指令执行单元执行所述返回指令时,当所述当前内核标识位和所述起始内核标识位的值不一致时发出切换返回请求。
11.如权利要求10所述的处理器,其中所述切换控制单元适于在所述处理器处于可信内核中、并接收到所述指令执行单元执行返回指令而发出的切换返回请求时:
如果所述可信内核切换标识位的值指示与所述切换指令相对应的内核切换方式,则将所述内核标识位设置为指示非可信内核以便切换到非可信内核,并指示所述现场维护单元从所述非可信内核的堆栈中恢复所述非可信内核的现场状态信息,以便所述指令执行单元继续执行指令;以及
如果所述可信内核切换标识位的值指示与所述可信中断相对应的内核切换方式,则恢复所保存的可信内核程序状态寄存器中的值,将所述内核标识位设置为指示非可信内核以便切换到非可信内核,并指示所述现场维护单元从所述非可信内核的堆栈中恢复所述非可信内核的现场状态信息,以便所述指令执行单元继续执行指令。
12.如权利要求10所述的处理器,其中所述切换控制单元适于在所述处理器处于非可信内核中、并接收到所述指令执行单元执行返回指令而发出的切换返回请求时:
如果所述非可信内核切换标识位的值指示与所述切换指令相对应的内核切换方式,则将所述内核标识位设置为指示可信内核以便切换到可信内核,并指示所述现场维护单元从所述可信内核的堆栈中恢复所述可信内核的现场状态信息,以便所述指令执行单元继续执行指令;以及
如果所述非可信内核切换标识位的值指示与所述非可信中断相对应的内核切换方式,则恢复所保存的非可信内核程序状态寄存器中的值,将所述内核标识位设置为指示可信内核以便切换到可信内核,并指示所述现场维护单元从所述可信内核的堆栈中恢复所述可信内核的现场状态信息,以便所述指令执行单元继续执行指令。
13.如权利要求5-12中任一个所述的处理器,还包括:
可信调用程序基址寄存器,适于在可信内核中存储跨内核调用程序的地址信息;
非可信调用程序基址寄存器,适于在非可信内核中存储跨内核调用程序的地址信息;以及
所述切换控制单元适于在处理由切换指令触发的内核切换请求时,从所述可信调用程序基址寄存器或者非可信调用程序基址寄存器中获取与所述切换指令相对应的跨内核调用程序的地址,以便指示所述指令执行单元从所获取的地址处开始执行指令。
14.如权利要求5-13中任一个所述的处理器,还包括
可信异常程序基址寄存器,适于在可信内核中存储异常处理程序的地址信息;
非可信异常程序基址处理器,适于在非可信内核中存储异常处理程序的地址信息;以及
所述切换控制单元适于在处理由中断触发的内核切换请求时,从所述可信异常程序基址寄存器或者非可信异常程序基址寄存器中获取与所述中断相对应的异常处理程序的地址,以便指示所述指令执行单元从所获取的地址处开始执行指令。
15.如权利要求5-14中任一个所述的处理器,其中所述程序状态寄存器还适于存储超级用户状态位,所述超级用户状态位指示所述处理器当前处于普通用户模式还是超级用户模式;
所述现场维护单元适于将所述处理器当前所处内核的现场状态信息存储到超级用户堆栈中;以及
所述切换控制单元适于在处理所述切换发起请求时,在进行内核切换之后,将所述超级用户状态位设置为指示超级用户模式。
16.一种对内核切换请求进行处理的方法,适于在具有可信内核和非可信内核的处理器中执行,所述处理器包括程序状态寄存器和切换状态寄存器,所述内核切换请求包括切换发起请求和与所述切换发起请求相对应的切换返回请求,且所述切换发起请求具有对应的内核切换方式,所述方法包括步骤:
接收切换发起请求并进行处理,以便根据所述处理器当前所处的内核来设置程序状态寄存器中的起始内核标识位,根据与所述切换发起请求相对应的内核切换方式来设置切换状态寄存器中的切换状态标识位,以及根据所述切换发起请求的目标内核来设置所述程序状态寄存器中的当前内核标识位以进行内核切换。
17.如权利要求16所述的方法,还包括步骤:
接收切换返回请求并进行处理,以便根据所述起始内核标识位的值来确定所述切换返回请求的目标内核,根据所述切换状态标识位确定与所述切换返回请求相对应的切换发起请求,以及根据所确定的目标内核来设置所述当前内核标识位以进行内核切换。
18.如权利要求16或者17所述的方法,其中所述内核切换方式包括对应于切换指令的方式和对应于中断的方式;
所述切换发起请求包括所述处理器执行所述切换指令而发出的切换发起请求以及所述处理器产生中断而发出的切换发起请求;以及
所述切换返回请求包括所述处理器执行返回指令而发出的切换返回请求。
19.如权利要求16-19中任一个所述的方法,其中所述程序状态寄存器包括可信内核程序状态寄存器和非可信内核程序状态寄存器,当所述处理器处于可信内核中时,使用所述可信内核程序状态寄存器做为所述程序状态寄存器,以及当所述处理器处于非可信内核中时,使用所述非可信内核程序状态寄存器做为所述程序状态寄存器;以及
所述切换状态标识位包括可信内核切换状态标识位和非可信内核切换状态标识位,所述可信内核切换状态标识位指示从非可信内核切换到可信内核的内核切换方式,所述非可信内核切换状态标识位指示从可信内核切换到非可信内核的内核切换方式。
20.如权利要求19所述的方法,其中当所述处理器处于非可信内核中,且所述切换发起请求为执行所述切换指令而发出时,所述处理切换发起请求的步骤包括:
在进行内核切换之前,将所述非可信内核的现场状态信息存储到所述非可信内核的堆栈中;
将所述可信内核切换状态标识位设置为指示与所述切换指令相对应的内核切换方式,将所述起始内核标识位设置为指示非可信内核,以及将所述当前内核标识位设置为指示可信内核以便切换到可信内核;以及
在切换到可信内核之后,执行与所述切换指令相对应的程序中的指令。
21.如权利要求19所述的方法,其中当所述处理器处于可信内核中,且所述切换发起请求为执行所述切换指令而发出时,所述处理切换发起请求的步骤包括:
在进行内核切换之前,将所述可信内核的现场状态信息存储到所述可信内核的堆栈中;
将所述非可信内核切换状态标识位设置为指示与所述切换指令相对应的内核切换方式,将所述起始内核标识位设置为指示可信内核,以及将所述当前内核标识位设置为指示非可信内核以便切换到非可信内核;以及
在切换到非可信内核之后,执行与所述切换指令相对应的程序中的指令。
22.如权利要求19所述的方法,其中当所述处理器处于非可信内核中,且所述切换发起请求为产生可信中断而发出时,所述处理切换发起请求的步骤包括:
在进行内核切换之前,将所述非可信内核的现场状态信息存储到所述非可信内核的堆栈中;
将所述当前内核标识位设置为指示可信内核以便切换到可信内核;
备份所述可信内核程序状态寄存器中的值;
将所述起始内核标识位设置为指示非可信内核;
将所述可信内核切换状态标识位设置为指示与所述可信中断相对应的内核切换方式;以及
执行处理所述可信中断的程序中的指令。
23.如权利要求19所述的方法,其中当所述处理器处于可信内核中,且所述切换发起请求为产生非可信中断而发出时,所述处理切换发起请求的步骤包括:
在进行内核切换之前,将所述可信内核的现场状态信息存储到所述可信内核的堆栈中;
将所述非可信内核切换状态标识位设置为指示与所述非可信中断相对应的内核切换方式;
将所述当前内核标识位设置为指示非可信内核以便切换到非可信内核;
备份所述非可信内核程序状态寄存器中的值,并将所述起始内核标识位设置为指示可信内核;以及
执行处理所述非可信中断的程序中的指令。
24.如权利要求19-23中任一个所述的方法,其中所述切换返回请求适于在所述处理器执行所述返回指令时,如果所述当前内核标识位和所述起始内核标识位的值不一致而发出。
25.如权利要求24所述的方法,其中当所述处理器处于可信内核中时,所述处理切换返回请求的步骤包括:
如果所述可信内核切换标识位的值指示与所述切换指令相对应的内核切换方式,则将所述内核标识位设置为指示非可信内核以便切换到非可信内核,并从所述非可信内核的堆栈中恢复所述非可信内核的现场状态信息,以便继续执行指令;以及
如果所述可信内核切换标识位的值指示与所述可信中断相对应的内核切换方式,则恢复所保存的可信内核程序状态寄存器中的值,将所述内核标识位设置为指示非可信内核以便切换到非可信内核,并从所述非可信内核的堆栈中恢复所述非可信内核的现场状态信息,以便继续执行指令。
26.如权利要求24所述的方法,其中当所述处理器处于非可信内核中时,所述处理切换返回请求的步骤包括:
如果所述非可信内核切换标识位的值指示与所述切换指令相对应的内核切换方式,则将所述内核标识位设置为指示可信内核以便切换到可信内核,并从所述可信内核的堆栈中恢复所述可信内核的现场状态信息,以便继续执行指令;以及
如果所述非可信内核切换标识位的值指示与所述非可信中断相对应的内核切换方式,则恢复所保存的非可信内核程序状态寄存器中的值,将所述内核标识位设置为指示可信内核以便切换到可信内核,并从所述可信内核的堆栈中恢复所述可信内核的现场状态信息,以便继续执行指令。
27.如权利要求20-25中任一个所述的方法,其中所述处理器还包括:
可信调用程序基址寄存器,适于在可信内核中存储跨内核调用程序的地址信息;
非可信调用程序基址寄存器,适于在非可信内核中存储跨内核调用程序的地址信息;以及
所述执行与所述切换指令相对应的程序中的指令的步骤包括:从所述可信调用程序基址寄存器或者非可信调用程序基址寄存器中获取与所述切换指令相对应的跨内核调用程序的地址,以便从所获取的地址处开始执行指令。
28.如权利要求20-27中任一个所述的方法,其中所述处理器还包括
可信异常程序基址寄存器,适于在可信内核中存储异常处理程序的地址信息;
非可信异常程序基址处理器,适于在非可信内核中存储异常处理程序的地址信息;以及
所述执行处理所述中断的程序中的指令的步骤包括:从所述可信异常程序基址寄存器或者非可信异常程序基址寄存器中获取与所述中断相对应的异常处理程序的地址,以便从所获取的地址处开始执行指令。
29.如权利要求16-28中任一个所述的方法,其中所述程序状态寄存器还适于存储超级用户状态位,所述超级用户状态位指示所述处理器当前处于普通用户模式还是超级用户模式;
所述将处理器当前所处内核的现场状态信息存储到用户堆栈中包括将处理器当前所处内核的现场状态信息存储到用户堆栈中;以及
所述处理所述切换发起请求的步骤包括:
在进行内核切换之后,将所述超级用户状态位设置为指示超级用户模式。
30.一种片上系统,包括:
如权利要求1-15中任一个所述的处理器。
31.一种智能设备,包括如权利要求30所述的片上系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910636745.XA CN112231072A (zh) | 2019-07-15 | 2019-07-15 | 一种处理器及内核切换处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910636745.XA CN112231072A (zh) | 2019-07-15 | 2019-07-15 | 一种处理器及内核切换处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231072A true CN112231072A (zh) | 2021-01-15 |
Family
ID=74111150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910636745.XA Pending CN112231072A (zh) | 2019-07-15 | 2019-07-15 | 一种处理器及内核切换处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231072A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024027472A1 (zh) * | 2022-08-03 | 2024-02-08 | 华为技术有限公司 | 一种确定内核状态的方法和相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599717A (zh) * | 2016-12-01 | 2017-04-26 | 杭州中天微系统有限公司 | 数据处理器 |
CN107229882A (zh) * | 2017-05-27 | 2017-10-03 | 杭州中天微系统有限公司 | 在可信模式与非可信模式之间互相切换的处理器 |
-
2019
- 2019-07-15 CN CN201910636745.XA patent/CN112231072A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599717A (zh) * | 2016-12-01 | 2017-04-26 | 杭州中天微系统有限公司 | 数据处理器 |
CN107229882A (zh) * | 2017-05-27 | 2017-10-03 | 杭州中天微系统有限公司 | 在可信模式与非可信模式之间互相切换的处理器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024027472A1 (zh) * | 2022-08-03 | 2024-02-08 | 华为技术有限公司 | 一种确定内核状态的方法和相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9727343B2 (en) | Apparatus and method for handling exception events | |
RU2263343C2 (ru) | Механизм для управления внешними прерываниями в системе виртуальных машин | |
US9207968B2 (en) | Computing system using single operating system to provide normal security services and high security services, and methods thereof | |
US20120331464A1 (en) | Virtual machine system and virtual machine system control method | |
US10754991B2 (en) | Method to isolate real-time or safety-critical software and operating system from non-critical software and operating system | |
JP5673672B2 (ja) | マルチコアプロセッサシステム、制御プログラム、および制御方法 | |
JP2006024207A (ja) | ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援 | |
EP4336359A1 (en) | Method for processing page faults and corresponding apparatus | |
US7913255B2 (en) | Background thread processing in a multithread digital signal processor | |
US9582339B2 (en) | Operation of software modules in parallel | |
CN105224403B (zh) | 一种中断处理方法及装置 | |
CN113535245A (zh) | 用于更快的启动过程的多处理器启动流程的方法、系统和设备 | |
CN107066331B (zh) | 一种基于TrustZone的资源分配方法及设备 | |
JPH02153434A (ja) | データ処理システム | |
CN112231072A (zh) | 一种处理器及内核切换处理方法 | |
KR920003044B1 (ko) | 가상 머신 시스템용의 게스트 머신 실행 제어 시스템 | |
US11409531B2 (en) | Processor having multiple operating modes | |
CN108985098B (zh) | 数据处理器 | |
EP1523710A2 (en) | Method and apparatus for context switching in computer operating systems | |
CN117744067B (zh) | 访问空间切换方法、装置、处理器、设备及存储介质 | |
EP0307448A1 (en) | DEVICE AND METHOD FOR SYNCHRONIZING ARITHMETIC EXCEPTIONS IN PARALLEL PIPELINE VERSION UNITS. | |
JPH04288625A (ja) | マイクロコンピュータ | |
EP4187387A1 (en) | Inter-process communication method and apparatus, and computer storage medium | |
CN111552514A (zh) | 一种处理器以及指令执行方法 | |
US8051235B1 (en) | Conditional back-to-back interrupt vectoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |