中央处理器和在其中执行隐秘操作、协处理器操作的方法

文档序号:10686816阅读:283来源:国知局
中央处理器和在其中执行隐秘操作、协处理器操作的方法
【专利摘要】提供一种中央处理器及其操作方法。该中央处理器,包括:隐秘指令存储器,用于预先存储与隐秘操作相关的隐秘指令所对应的指令数据,其中禁止从该中央处理器外部存取该隐秘指令存储器;指令控制器,用于根据当前程序中的一隐秘指令,在该隐秘指令存储器中查找该隐秘指令所对应的指令数据,并根据该对应的指令数据将该隐秘指令翻译为至少一个微操作;以及执行单元,用于执行所述微操作。
【专利说明】
中央处理器和在其中执行隐秘操作、协处理器操作的方法
技术领域
[0001] 本发明涉及中央处理器及其操作方法,更具体地,涉及执行隐秘操作或协处理器 操作的中央处理器及其操作方法。
【背景技术】
[0002] 在计算机系统中,用于执行特定功能的软件是通过程序代码实现的。出于商业利 益或安全的考虑,软件开发者有时不希望披露程序中与隐秘操作对应的代码段。例如,该隐 秘操作可以是不希望公开的核心算法的操作步骤,也可以是与安全相关的操作。为此,可以 采用诸如加密等手段对该隐秘操作的代码进行保护,但是这增加了实现的复杂度,而且在 保密性与效率之间往往难以取得理想的折衷。一方面,保密性的提高伴随着额外的计算开 销,另一方面,使用轻量级的加解密算法实现的保密并不可靠。
[0003] 同时,从硬件商的角度来说,有时候希望限制其开发的软件的执行平台,或者对这 种限制进行控制。例如,中央处理器(CPU)生产商可能希望使得某种软件只能在其生产的 CPU上执行,或者只能在特定型号或批次的CPU上执行。类似地,为了实现这种限制,造成复 杂度和开销的增加。
[0004] 此外,协处理器在计算机系统中被广泛用于执行特定功能以减轻CPU的负荷。协处 理器通常以系统设备的身份出现,因而需要在每种操作系统(0S)中编写相应的驱动程序。 这些驱动程序互不相同,增加了开发的工作量,而且缺乏灵活度。另外,通过逆向工程等方 法分析驱动程序,未经授权者有可能获取开发者不愿披露的实现细节。

【发明内容】

[0005] 因此,为了解决上述问题,本发明提供能够高效率地执行隐秘操作的中央处理器 及其操作方法。此外,本发明还提供能够高效率地执行协处理器操作的中央处理器及其操 作方法。
[0006] 根据本发明实施例的一个方面,提供一种中央处理器,包括:隐秘指令存储器,用 于预先存储与隐秘操作相关的隐秘指令所对应的指令数据,其中禁止从该中央处理器外部 存取该隐秘指令存储器;指令控制器,用于根据当前程序中的一隐秘指令,在该隐秘指令存 储器中查找该隐秘指令所对应的指令数据,并根据该对应的指令数据将该隐秘指令翻译为 至少一个微操作;以及执行单元,用于执行所述微操作。
[0007] 根据本发明的实施例,该隐秘指令可以为该中央处理器的自定义微码指令。
[0008] 根据本发明的实施例,该隐秘指令存储器可以为该中央处理器的微码补丁存储器 的至少一部分,而且可以利用微码补丁来预先存储或更新所述指令数据。
[0009] 根据本发明的实施例,当该指令控制器未找到该隐秘指令所对应的指令数据时, 该中央处理器可以终止执行该当前程序。
[0010] 根据本发明的实施例,该当前程序中的该隐秘指令对该当前程序的开发者及该中 央处理器的制造商以外的第三方是保密的。
[0011] 根据本发明实施例的另一方面,提供一种在中央处理器中执行隐秘操作的方法包 括:在该中央处理器中预先存储与该隐秘操作相关的隐秘指令所对应的指令数据,其中禁 止从该中央处理器外部存取所述指令数据;读取当前程序中的一隐秘指令;在已存储的指 令数据中查找该隐秘指令所对应的指令数据;根据该对应的指令数据将该隐秘指令翻译为 至少一个微操作;以及执行所述微操作。
[0012] 根据本发明的实施例,该隐秘指令可以为该中央处理器的自定义微码指令。
[0013] 根据本发明的实施例,可以利用微码补丁来预先存储或更新所述指令数据。
[0014] 根据本发明的实施例,该方法可以进一步包括:当未找到该隐秘指令所对应的指 令数据时,终止执行该当前程序。
[0015] 根据本发明的实施例,该当前程序中的该隐秘指令对该当前程序的开发者及该中 央处理器的制造商以外的第三方是保密的。
[0016] 根据本发明实施例的另一方面,提供一种中央处理器,包括:协处理器指令存储 器,用于预先存储与控制协处理器的操作相关的协处理器指令所对应的指令数据;协处理 器接口,用于与该协处理器通信;指令控制器,用于根据当前程序中的一协处理器指令,在 该协处理器指令存储器中查找该协处理器指令所对应的指令数据,并根据该对应的指令数 据将该协处理器指令翻译为与该协处理器接口相关的至少一个微操作;以及执行单元,用 于执行所述微操作以通过该协处理器接口控制该协处理器的操作。
[0017] 根据本发明的实施例,该协处理器指令可以为该中央处理器的自定义微码指令。
[0018] 根据本发明的实施例,该协处理器指令存储器可以为该中央处理器的微码补丁存 储器的至少一部分,而且可以利用微码补丁来预先存储或更新所述指令数据。
[0019] 根据本发明的实施例,该协处理器的操作可以包括初始化、读、写、控制、读状态中 的至少一个。
[0020] 根据本发明的实施例,可以禁止从该中央处理器外部存取该协处理器指令存储 器。
[0021] 根据本发明实施例的另一方面,提供一种在中央处理器中执行协处理器操作的方 法,包括:在该中央处理器中预先存储与控制协处理器的操作相关的协处理器指令所对应 的指令数据;读取当前程序中的一协处理器指令;在已存储的指令数据中查找该协处理器 指令所对应的指令数据;根据该对应的指令数据将该协处理器指令翻译为与协处理器接口 相关的至少一个微操作;以及执行所述微操作以通过该协处理器接口控制该协处理器的操 作。
[0022] 根据本发明的实施例,该协处理器指令可以为该中央处理器的自定义微码指令。
[0023] 根据本发明的实施例,可以利用微码补丁来预先存储或更新所述指令数据。
[0024]根据本发明的实施例,该协处理器的操作可以包括初始化、读、写、控制、读状态中 的至少一个。
[0025] 根据本发明的实施例,可以禁止从该中央处理器外部存取所述指令数据。
[0026] 通过使用根据本发明的执行隐秘操作的中央处理器及其操作方法,可以有效地隐 藏隐秘操作的细节,防止应用程序被逆向工程等方法分析造成技术秘密的泄露,同时可以 便捷地执行隐秘操作。此外,可以利用自定义隐秘操作来限制软件的执行平台。
[0027]通过使用根据本发明的执行协处理器操作的中央处理器及其操作方法,可以高效 率地执行协处理器操作而无需考虑操作系统的环境,从而减少了驱动程序的开发成本。进 一步,还可以隐藏协处理器的操作的具体实现细节,以防止因协处理器驱动程序被逆向工 程等方法分析造成技术秘密的泄露。
【附图说明】
[0028]图1A示出根据实施例的执行隐秘操作的中央处理器的框图;
[0029]图1B示出根据将隐秘指令定义为新的自定义微码指令的实施例的执行隐秘操作 的中央处理器的框图;
[0030] 图2示出根据实施例的在中央处理器中执行隐秘操作的方法的流程图;
[0031] 图3示出根据实施例的执行协处理器操作的中央处理器的框图;以及 [0032]图4示出根据实施例的在中央处理器中执行协处理器操作的方法的流程图。
【具体实施方式】
[0033]下面参照附图详细描述根据本发明的示范性实施例。附图中,将相同或类似的附 图标记赋予结构以及功能基本相同的组成部分,并且为了使说明书更加简明,省略了关于 基本上相同的组成部分的冗余描述。
[0034]图1A示出根据实施例的执行隐秘操作的中央处理器(CPU) 100的框图。
[0035] 参照图1A,CPU 100包括隐秘指令存储器101、指令控制器102、和执行单元103。
[0036]在隐秘指令存储器101中预先存储与隐秘操作相关的隐秘指令所对应的指令数 据。为了防止指令数据泄露,禁止从CPU 100外部存取隐秘指令存储器101。
[0037] 根据实施例,该隐秘指令可以是CPU 1 00的自定义微码指令(mi crocode instruction)。需要指出的是,本说明书中的微码(microcode)是指固化在CPU内部的硬件 编码,用于将指令集中的复杂长指令翻译为CPU能够执行的微指令(或微操作或hops"),因 而有别于部分厂商(如,IBM)用于作为固件(firmware)的别称的术语"微码"。
[0038] 在CPU生产阶段,将微码作为硬件编码固化在电路中。在CPU出厂之后,微码就不能 被直接修改或替换;为了保证微码执行的灵活性,可以在出厂之后升级CPU微码的功能。微 码功能升级可以通过软件方法写入,写入的代码会被存储到CPU的微码补丁存储器中。由 此,微码在执行过程中会查询微码补丁存储器,如果执行的代码有被补丁更新过,则执行微 码补丁存储器中的代码,从而实现微码功能升级的目标。现有技术的CPU微码补丁仅限于对 已经固化的微码的修复和纠错,而本发明一实施例系利用微码补丁来扩展CPU的新功能。
[0039] 根据实施例,隐秘指令存储器101可以是CPU 100的微码补丁存储器或其中的一部 分,并利用微码补丁来预先存储或更新其中存储的指令数据。即是说,当一个应用程序中有 一段操作需要隐秘时,则将该应用程序中的该段隐秘操作所对应的代码用至少一个隐秘指 令代替,在将隐秘指令定义为新的自定义微码指令的实施例中,通过微码补丁的方式将该 隐秘指令所对应的指令数据预先存储或更新至隐秘指令存储器101中。
[0040] 在执行程序的过程中,指令控制器102根据当前执行的程序代码中的隐秘指令,在 隐秘指令存储器101中查找该隐秘指令所对应的指令数据,并根据找到的对应的指令数据 将该隐秘指令翻译为至少一个微操作,将所述微操作交给执行单元103执行。
[0041] 图1B为根据将隐秘指令定义为新的自定义微码指令的实施例的执行隐秘操作的 中央处理器(CPU)IOO'的框图。参照图1B,CPU 100'除了包括隐秘指令存储器101'、指令控 制器102'和执行单元103'之外,还包括指令高速缓存(instruction cache) 104、指令译码 器(instruction decoder)105、寄存器别名表(Register Alias Table,RAT)106、保留站 (Reservation Station,RS) 107、和重排序缓冲器(Reorder Buffer,ROB) 108。这里,指令高 速缓存104高速缓存诸如x86指令集架构等的指令集架构的宏指令;指令译码器105从指令 高速缓存104中读取宏指令,其中如果宏指令是简单指令,则直接由指令译码器105翻译为 微操作后送至CPU 100'的后端(包括寄存器别名表106、保留站107、重排序缓冲器108及执 行单元103'等)执行,如果宏指令是本发明的隐秘指令,则指令译码器105无法直接译码,于 是该隐秘指令被送至指令控制器102';指令控制器102'根据隐秘指令存储器101'中预先以 微码补丁形式存储的该隐秘指令所对应的指令数据将该隐秘指令翻译为CHJ能够执行的至 少一个微操作,具体而言,根据该隐秘指令所包含的操作码(例如"OF 3B")为索引在微码补 丁中查找对应的包括多个微操作的指令数据,这些指令数据与原本在以软件程序中以软件 程序代码实现的隐秘操作相关,在本发明中,这些指令数据是在微码补丁中以微码语言实 现,微码的编写语言不同于常规编程语言,本身破译难度就高;然后,这些微操作被提供到 CPU 100'后端的寄存器别名表106,寄存器别名表106产生微操作的依赖性(dependency)并 按照程序次序向保留站107发送微操作,并向重排序缓冲器108发送微操作。重排序缓冲器 108为从寄存器别名表106发射的每个微操作分配条目(entry)以存储对应微操作的相关信 息。保留站107将微操作分派到多个执行单元103'中合适的一个执行。执行单元103'将它们 的执行结果提供到重排序缓冲器108,以确保微操作的按照程序中的次序退出(retire)。图 1B是根据CPU 100'是乱序执行的超标量流水线CPU为例来说明,但本发明不限于此。
[0042]值得注意的是,当一个应用程序中有一段操作需要隐秘时,本发明的本实施例将 该应用程序中的该段隐秘操作所对应的代码用至少一个隐秘指令代替,并通过微码补丁的 方式将该隐秘指令所对应的指令数据预先存储或更新至隐秘指令存储器101中。以X86架构 体系为例,自定义指令的通用格式可以包括指令前缀、操作码(Opcode)、操作数地址(ModR/ M)等字段,其中只有操作码是必需的,其他字段都是可选的。本发明中的自定义微码指令在 符合该格式的基础上使用保密的操作码以达到隐秘的目的,为了便于描述,本说明书中使 用的隐秘指令仅包括操作码(Opcode),然而本发明不限于此。由于隐秘指令存储器101禁止 从CPU外部存取,保证了隐秘操作的安全性,另外,由于应用程序开发者在程序中需要执行 该隐秘操作的地方添加该隐秘指令即可,而该隐秘指令只有当前程序的开发者及CPU的制 造商知道其含义,而对于第三方而言是保密的,例如对于第三方而言,仅可见一未知的操作 码,因此无法通过逆向工程的方式对应用程序中的此指令进行破译,进一步提高了安全性。 [0043]下面以一个变型国密算法SM3为例来说明如何实现隐秘指令的功能。
[0044]国密算法SM3的计算过程分成三步:填充、迭代压缩、生成杂凑值。在迭代压缩过程 中的压缩函数如下面所示:
[0045] 令A,B,C,D,E,F,G,H为字寄存器,SS1,SS2,TT1,TT2为中间变量,压缩函数V i+1 = CF (V⑴,Bw),0<i彡n-1。计算过程描述如下:
[0046] ABCDEFGH-V ⑴
[0047] F0Rj = 0T063
[0048] SSI -((A<<<12)+E+(Tj<<<j))<<<7
[0049] 狡沒汝幻 # (.4. H j}
[0050] TTl^FFj(A,B,C)+D+SS2+ff/ j
[0051] TT2-GGj(E,F,G)+H+SSl+Wj
[0052] D-C
[0053] C-B<<<9
[0054] B-A
[0055] A-TT1
[0056] H<-G
[0057] G-F<<<19
[0058] F^E
[0059] E-Po(TT2)
[0060] ENDFOR
[0061 ] aB€^£F€M B Vix>
[0062]在某些应用场景(如军事上)中,加密算法往往要限定使用范围,所以设计算法时 既想借鉴公开算法的技术特点,又想达到"隐藏式安全(security through obscurity)"的 目的。对于SM3算法来说,达到这一目的的方法之一就是将上述的压缩算法进行修改。以一 个简单的修改方法为例:可以将该压缩算法的计算过程中的第一行ABCDEFGH-V (i)修改为 HGFEDCBA-V⑴;将最后一行V(i+1)-ABCDEFGH ? V⑴修改为V(i+1)-HGFEDCBA ? V⑴,其他计 算过程不变。
[0063]为了隐藏上述变型SM3算法,可以设计一个二字节长度的隐秘指令:"OF 3B"。该指 令的操作码(Opcode)为"OF 3B",其他字段全部不存在。在将隐秘指令定义为CPU 100的新 的自定义微码指令的实施例中,通过微码补丁将与上述变型SM3算法的操作对应的指令数 据,包括实现上述计算过程的微操作代码,以微码编程语言的形式写入隐秘指令存储器101 中。
[0064] 此外,可以定义该指令的参数:例如CPU100的通用寄存器ECX(RCX)表示要做SM3计 算的数据长度,ESI (RSI)表示数据的起始地址,EDI (RDI)表示计算结果的存储地址。当要使 用该变型SM3算法时,程序开发者先定义好这些通用寄存器的值,再将"OF 3B"添加到程序 中合适的位置,即可使用上述的变型SM3算法。
[0065] 如果有人试图通过逆向工程(如,反汇编技术)来推测该变型SM3算法的执行过程, 贝1J当看到指令"OF 3B"时,无法猜出其行为,这就达到了隐藏"秘密算法/操作"的细节的目 的,实现了一种"隐藏式安全"。
[0066] 作为可选的实施例,当指令控制器102未找到该隐秘指令所对应的指令数据时,中 央处理器100可以终止当前程序的执行。该特性可以用于限制程序的执行平台。例如,可以 在程序中加入用于限定执行平台的隐秘指令,并仅在相应的平台(即,CPU)的隐秘指令存储 器中存储该隐秘指令的指令数据。从而,当该程序在未存储相应的指令数据的平台中执行 时,当执行到该隐秘指令时,程序执行将被终止,从而达到限制执行平台的效果。
[0067] 图2示出根据实施例的在CPU中执行隐秘操作的方法的流程图。
[0068] 在步骤S200,与隐秘操作相关的隐秘指令所对应的指令数据被预先存储在CPU中, 而且禁止从CPU外部存取指令数据以免泄露关于隐秘操作的细节。例如,所述指令数据可以 是与上述国密算法SM3的操作相关的指令数据。
[0069] 如之前所述,该隐秘指令可以是CPU的自定义微码指令。此外,可以利用微码补丁 来预先存储或更新指令数据。例如,在将隐秘指令定义为新的自定义微码指令时,可以通过 微码补丁将该隐秘指令所对应的指令数据写入CHJ中。
[0070] 在步骤S201,读取当前执行的程序代码中的一隐秘指令。例如,从图1B中的指令高 速缓存104中读取该隐秘指令。
[0071] 在步骤S202,在已存储的指令数据中查找该隐秘指令所对应的指令数据。
[0072]在步骤S203,确定是否找到对应的指令数据。当找到指令数据时,在步骤S204,根 据找到的对应的指令数据将该隐秘指令翻译为至少一个微操作。之后,在步骤S205,执行所 述微操作。
[0073]可选地,当未找到该隐秘指令所对应的指令数据时,在步骤S206,CPU终止当前程 序的执行。如之前所述,该可选步骤可以达到限制程序执行平台的效果。
[0074]图3示出根据实施例的执行协处理器操作的CPU 300的框图。
[0075] 参照图3,CPU 300包括协处理器指令存储器301、指令控制器302、执行单元303和 协处理器接口 304。
[0076]协处理器指令存储器301中预先存储有与控制协处理器的操作相关的协处理器指 令所对应的指令数据。
[0077]根据实施例,该协处理器指令可以是CPU 300的自定义微码指令。
[0078]根据实施例,协处理器指令存储器301可以是CPU 300的微码补丁存储器或其中的 一部分,并利用微码补丁来预先存储或更新其中存储的指令数据。例如,在将协处理器指令 定义为新的自定义微码指令的实施例中,可以通过微码补丁的方式将该协处理器指令所对 应的指令数据预先存储协处理器指令存储器301中。
[0079] 协处理器接口304是用于与协处理器(图中未绘示)通信的接口。协处理器是独立 于CPU 300之外的处理器,协助CPU 300执行特定功能以减轻CPU 300的负荷。
[0080] 在执行程序的过程中,指令控制器302如果接收到当前执行的程序代码中的协处 理器指令,在协处理器指令存储器301中查找该协处理器指令所对应的指令数据,并根据找 到的对应指令数据将该协处理器指令翻译为与协处理器接口 304相关的至少一个微操作, 将所述微操作交给执行单元303执行,以通过协处理器接口 304控制该协处理器的操作。
[0081] 根据实施例,该协处理器操作可以包括协处理器的初始化、读、写、控制、读状态中 的至少一个。在通过自定义微码指令实现协处理器操作的实施例中,一种方法是为每一个 操作分别定义一个"自定义微码指令",另一种方法是仅为协处理器操作定义一条"自定义 微码指令",并使用不同的参数来区别不同的操作。
[0082] 下面举例说明如何实现协处理器指令的功能。
[0083] 首先,可以采用上述第一种自定义微码指令的方法,设计一个二字节长度的协处 理器指令:"OF 3C"。该指令的操作码(Opcode)为"OF 3C",其他字段全部不存在。同时,当 CPU 300的通用寄存器(如,EAX或RAX)的值为0xl,0x2,0x3,0x4,0x5时分别对应于协处理器 的"初始化"、"读"、"写"、"控制"、"读状态"操作。此外,还可以利用其他通用寄存器来传递 一些参数,例如"读"、"写"操作中使用的缓冲区地址等。如上所述,可以通过微码补丁将与 上述协处理器的操作相关的指令数据写入协处理器指令存储器301中。
[0084] 作为示例,协处理器接口 304可以连接到协处理器的四个寄存器接口:控制寄存 器、状态寄存器、命令描述符地址寄存器。以及响应描述符地址寄存器。从而,对这个协处理 器进行的"初始化"、"读"、"写"、"控制"、"读状态"等操作都是通过按一定的顺序读写这四 个寄存器来完成的。然而,上述仅仅是示例,本发明不限于此。
[0085] 当CPU 300所在的计算机系统启动中需要初始化协处理器时,可以在需调用协处 理器的应用程序代码中添加例如下面的以汇编语言序列(也可以是其他语言,本发明不限 于此)编写的协处理器指令:
[0086] Movl$0xl, %eax
[0087] .byte 0x0f,0x3c
[0088] 上述协处理器指令将被指令控制器302翻译为协处理器操作,从而执行协处理器 的"初始化"(0x1)操作,返回状态被保存在通用寄存器EAX中。当然这里的通用寄存器EAX仅 为举例,本发明不限于此。
[0089]当应用程序要传输数据给协处理器进行处理时,可以在需调用协处理器的应用程 序代码中添加例如下面的以汇编语言序列编写的协处理器指令:
[0090] Movl address,%edi//以指针寄存器EDI保存写缓冲区地址为例
[0091] Movl$0x3, %eax
[0092] .byte 0x0f,0x3c
[0093] 上述协处理器指令将被指令控制器302翻译为协处理器操作,从而执行协处理器 的"写"(0x3)操作,返回状态被保存在通用寄存器EAX中,返回的处理结果(假如有的话)被 保存在指针寄存器(如EDI)指向的缓冲区中。当然这里的通用寄存器EAX和指针寄存器EDI 仅为举例,本发明不限于此。
[0094]当应用程序要从协处理器读取数据时,可以在需调用协处理器的应用程序代码中 添加例如下面的以汇编语言序列编写的协处理器指令:
[0095] Movl address,%esi//以指针寄存器ESI保存读缓冲区地址为例
[0096] Movl$0x2, %eax
[0097] .byte 0x0f,0x3c
[0098] 上述协处理器指令将被指令控制器302翻译为协处理器操作,从而执行协处理器 的"读"(0x2)操作,读取的数据被保存在指针寄存器ESI指向的缓冲区中,返回状态被保存 在通用寄存器EAX中。当然这里的通用寄存器EAX和指针寄存器ESI仅为举例,本发明不限于 此。
[0099] 根据实施例,可以禁止从CPU 300外部存取协处理器指令存储器301,以防止协处 理器指令的指令数据被泄露。在一实施例中,该协处理器指令存储器301可以是CPU 300的 微码指令存储器,也可以是独立的另一指令存储器。此外,通过协处理器接口 304在中央处 理器300与协处理器之间传输的数据可以被禁止存取。如果CPU 300与协处理器之间有物理 通道暴露在主板上,可以根据实际需要在物理通道上增加安全防护手段(如加密和散列值 验证(HMAC)等)来保证物理通道的安全可靠。
[0100]本发明使用一条或几条自定义的协处理器指令即能代替协处理器的驱动程序,凡 是使用这个协处理器的应用程序直接调用协处理器指令就可以实现控制协处理器的操作。 此外,在协处理器指令以微码指令实现的实施例中,由于微码指令对应用程序开发者及处 理器的制造商之外的第三方是保密的,且微码指令所对应的指令数据的编写语言是非公开 的,因此这条协处理器指令的行为是很难被"猜测"到的,进而也就提高了协处理器操作的 安全性。
[0101] 图4示出根据实施例的在CPU中执行协处理器操作的方法的流程图。
[0102] 在步骤S400,与控制协处理器的操作相关的协处理器指令所对应的指令数据被预 先存储在CHJ中。例如,所述指令数据可以是与上面示例中的协处理器的"初始化"、"读"、 "写"、"控制"、"读状态"等操作中的每一个分别对应的指令数据(第一种方法),或者可以是 与统一的协处理器操作(第二种方法)对应的指令数据,并通过寄存器值来区分具体的协处 理器操作。
[0103] 如之前所述,该协处理器指令可以是CPU的自定义微码指令。此外,可以利用微码 补丁来预先存储或更新指令数据。例如,在将协处理器指令定义为新的自定义微码指令的 实施例中,可以通过微码补丁将该协处理器指令的指令数据写入CPU中。
[0104] 在步骤S401,读取当前执行的程序代码中的一协处理器指令。
[0105] 在步骤S402,在已存储的指令数据中查找该协处理器指令所对应的指令数据。 [0106]在步骤S403,根据找到的对应的指令数据将该协处理器指令翻译为与协处理器接 口相关的至少一个微操作。之后,在步骤S404,执行所述微操作以通过该协处理器接口控制 该协处理器的操作。
[0107] 根据实施例,如之前所述,可以禁止从CPU外部存取其中存储的指令数据以免泄露 关于协处理器操作的细节。
[0108] 如上所述,已经在上面具体地描述了本发明的各个实施例,但是本发明不限于此。 本领域的技术人员应该理解,可以根据设计要求或其他因素进行各种修改、组合、子组合或 者替换,而它们在所附权利要求书及其等效物的范围内。
【主权项】
1. 一种中央处理器,包括: 隐秘指令存储器,用于预先存储与隐秘操作相关的隐秘指令所对应的指令数据,其中 禁止从该中央处理器外部存取该隐秘指令存储器; 指令控制器,用于根据当前程序中的一隐秘指令,在该隐秘指令存储器中查找该隐秘 指令所对应的指令数据,并根据该对应的指令数据将该隐秘指令翻译为至少一个微操作; 以及 执行单元,用于执行所述微操作。2. 如权利要求1所述的中央处理器,其中该隐秘指令为该中央处理器的自定义微码指 令。3. 如权利要求1所述的中央处理器,其中该隐秘指令存储器为该中央处理器的微码补 丁存储器的至少一部分,而且 其中利用微码补丁来预先存储或更新所述指令数据。4. 如权利要求1所述的中央处理器,其中当该指令控制器未找到该隐秘指令所对应的 指令数据时,该中央处理器终止执行该当前程序。5. 如权利要求1所述的中央处理器,其中该当前程序中的该隐秘指令对该当前程序的 开发者及该中央处理器的制造商以外的第三方是保密的。6. -种在中央处理器中执行隐秘操作的方法,包括: 在该中央处理器中预先存储与该隐秘操作相关的隐秘指令所对应的指令数据,其中禁 止从该中央处理器外部存取所述指令数据; 读取当前程序中的一隐秘指令; 在已存储的指令数据中查找该隐秘指令所对应的指令数据; 根据该对应的指令数据将该隐秘指令翻译为至少一个微操作;以及 执行所述微操作。7. 如权利要求6所述的方法,其中该隐秘指令为该中央处理器的自定义微码指令。8. 如权利要求6所述的方法,其中利用微码补丁来预先存储或更新所述指令数据。9. 如权利要求6所述的方法,进一步包括: 当未找到该隐秘指令所对应的指令数据时,终止执行该当前程序。10. 如权利要求6所述的方法,其中该当前程序中的该隐秘指令对该当前程序的开发者 及该中央处理器的制造商以外的第三方是保密的。11. 一种中央处理器,包括: 协处理器指令存储器,用于预先存储与控制协处理器的操作相关的协处理器指令所对 应的指令数据; 协处理器接口,用于与该协处理器通信; 指令控制器,用于根据当前程序中的一协处理器指令,在该协处理器指令存储器中查 找该协处理器指令所对应的指令数据,并根据该对应的指令数据将该协处理器指令翻译为 与该协处理器接口相关的至少一个微操作;以及 执行单元,用于执行所述微操作以通过该协处理器接口控制该协处理器的操作。12. 如权利要求11所述的中央处理器,其中该协处理器指令为该中央处理器的自定义 微码指令。13. 如权利要求11所述的中央处理器,其中该协处理器指令存储器为该中央处理器的 微码补丁存储器的至少一部分,而且 其中利用微码补丁来预先存储或更新所述指令数据。14. 如权利要求11所述的中央处理器,其中该协处理器的操作包括初始化、读、写、控 制、读状态中的至少一个。15. 如权利要求11所述的中央处理器,其中禁止从该中央处理器外部存取该协处理器 指令存储器。16. -种在中央处理器中执行协处理器操作的方法,包括: 在该中央处理器中预先存储与控制协处理器的操作相关的协处理器指令所对应的指 令数据; 读取当前程序中的一协处理器指令; 在已存储的指令数据中查找该协处理器指令所对应的指令数据; 根据该对应的指令数据将该协处理器指令翻译为与协处理器接口相关的至少一个微 操作;以及 执行所述微操作以通过该协处理器接口控制该协处理器的操作。17. 如权利要求16所述的方法,其中该协处理器指令为该中央处理器的自定义微码指 令。18. 如权利要求16所述的方法,其中利用微码补丁来预先存储或更新所述指令数据。19. 如权利要求16所述的方法,其中该协处理器的操作包括初始化、读、写、控制、读状 态中的至少一个。20. 如权利要求16所述的方法,其中禁止从该中央处理器外部存取所述指令数据。
【文档编号】G06F9/30GK106055309SQ201610378308
【公开日】2016年10月26日
【申请日】2016年5月27日
【发明人】李凯, 沈昀, 黄振华
【申请人】上海兆芯集成电路有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1