CN109947479A - 指令执行方法及其处理器、介质和系统 - Google Patents
指令执行方法及其处理器、介质和系统 Download PDFInfo
- Publication number
- CN109947479A CN109947479A CN201910085634.4A CN201910085634A CN109947479A CN 109947479 A CN109947479 A CN 109947479A CN 201910085634 A CN201910085634 A CN 201910085634A CN 109947479 A CN109947479 A CN 109947479A
- Authority
- CN
- China
- Prior art keywords
- instruction
- module
- operand
- processor
- dummy order
- 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
Abstract
本申请涉及信息处理的安全领域,公开了一种防止侧信道攻击的指令执行方法及其处理器和系统。本申请中的指令执行方法包括:确定第一指令的运算操作,并对第一指令和第一指令的操作数进行与第一指令的运算操作对应的第一运算预处理和第一运算;确定第二指令的运算操作,并对第二指令和第二指令的操作数进行与第二指令的运算操作对应的第二运算预处理和第二运算;其中,第一运算和第二运算为不同的运算,并且第一运算预处理和第一运算与第二运算预处理和第二运算并行进行。
Description
技术领域
本申请涉及信息处理的安全领域,特别涉及一种指令执行方法及其处理器、介质和系统。
背景技术
在普通的大数运算协处理装置中,一般是单一的协处理器,根据指令先后完成各种大数运算操作,从而完成RSA(Rivest Shamir Adleman,一种非对称加密算法)或ECC(Elliptic Curve Cryptography,椭圆曲线加密)的编解码、数字签名和密钥产生和交换。但是在侧信道攻击中,特别在基于能量的侧信道攻击中,对RSA或ECC的过程容易探测到,例如模幂和模逆过程就有显著的能量分布的特点:相对于其他的操作过程,一般这2个过程时间上比较长,能量上能清楚的探测到比特处理的痕迹。安全的算法过程的RSA、ECC本身的算法部分都是公开的,具体实现模幂、模逆或点乘的过程的算法基本也是通用的。
发明内容
本申请的目的在于提供一种指令执行方法及其处理器、介质和系统,可对运算装置执行不同类型运算时的功率谱产生混淆,从而加强运算装置防侧信道攻击的能力。
为解决上述技术问题,本申请的实施例公开了一种指令执行方法,方法包括:
确定第一指令的运算操作,并对所述第一指令和第一指令的操作数进行与所述第一指令的运算操作对应的第一运算预处理和第一运算;
确定第二指令的运算操作,并对所述第二指令和第二指令的操作数进行与所述第二指令的运算操作对应的第二运算预处理和第二运算;
其中,所述第一运算和第二运算为不同的运算,并且所述第一运算预处理和所述第一运算与所述第二运算预处理和所述第二运算并行进行。
本申请的实施例还公开了一种处理器,该处理器包括:
分类模块,用于确定第一指令和第二指令的运算操作;
第一运算预处理模块,用于对分类模块确定的所述第一指令和该第一指令的操作数进行第一运算预处理;
第一运算模块,用于对分类模块确定的所述第一指令和该第一指令的操作数进行第一运算;
第二运算预处理模块,用于对分类模块确定的所述第二指令和该第二指令的操作数进行第二运算预处理;
第二运算模块,用于对对分类模块确定的所述第二指令和该第二指令的操作数进行第二运算;
其中,所述第一运算模块和第二运算模块进行不同的运算,并且所述第一运算预处理模块和第一运算模块与第二运算预处理模块和第二运算模块并行运行。
本申请的实施例还公开了一种机器可读介质,其中,所述机器可读介质上存储有指令,该指令在机器上执行时使机器执行上述实施例所述的指令执行方法。
本申请的实施例还公开了一种系统,包括:
存储器,用于存储由系统的一个或多个处理器执行的指令,以及
处理器,是系统的处理器之一,用于执行上述实施例所述的指令执行方法。
本申请实施例包括,但不限于,如下效果:
通过将不同运算类型的指令运算预处理和运算并行进行,能够对运算装置执行不同类型运算时的功率谱产生混淆,从而加强运算装置防侧信道攻击的能力。
进一步地,在对运算装置执行不同类型运算时的功率谱产生混淆的同时,在时间上分别对不同的运算进行混淆,进一步提高运算装置防止侧信道攻击的能力。
进一步地,在对运算装置执行不同类型运算时的功率谱产生混淆的同时,在时间上对指令的执行进行混淆,进一步提高运算装置防侧信道攻击的能力。
进一步地,在大数运算装置中,乘法和非乘运算的运算逻辑相差较大,将两者并行执行,能够有效对两种运算产生的功率谱产生混淆,有效地防止对运算装置的侧信道攻击。
附图说明
在附图各图中通过示例而不是限制说明了本申请,其中相同标记指示相同元件,且其中:
图1是根据本申请的一些实施例的执行指令执行方法的处理器的结构示意图。
图2是根据本申请的一些实施例,图1中所示的处理器中的分类模块的结构示意图。
图3是根据本申请的一些实施例,图1中所示的处理器执行指令的方法的流程示意图。
图4是根据本申请的一些实施例执行指令执行方法的处理器的结构示意图。
图5A是根据本申请的一些实施例的一种有序流水线的框图。
图5B是根据本申请的一些实施例的将包括在处理器中的一种有序架构核的框图。
图6是根据本申请一些实施例的可具有超过多核的处理器的框图。
图7是根据本申请一些实施例的一种系统的框图。
图8是根据本申请一些实施例的一种片上系统(SoC)的框图。
具体实施例
本申请的说明性实施例包括但不限于指令的执行方法、处理器、介质和系统。
将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员显而易见的是,可以使用所描述方面的部分来实践一些可替代实施例。出于解释的目的,为提供对说明性实施例的透彻理解,对具体的数字、材料和配置进行阐述。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实现替代的实施例。在其他情况下,为了不对说明性实施例造成混淆,省略或简化了一些公知的特征。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施例作进一步地详细描述。
图1示出了执行本申请的指令执行方法的一示例处理器100的结构示意图,图2示出了图1所示的示例处理器中分类模块的结构示意图。
具体地,如图1所示,处理器100为协处理器,其接收Host 1发送的指令。该处理器100包括控制寄存器110、分类模块120、非乘预处理模块140和乘法预处理模块150、非乘模块160和乘法模块170、访问控制模块180和SRAM(Static Random-Access Memory,静态随机存取存储器)190。其中Host为主处理器、任务或者应用程序。
控制寄存器110由Host 1通过总线进行控制,控制寄存器对Host 1发送给协处理器 100的操作码进行分配。Host 1通过控制寄存器110间接访问SRAM 190。
数据选择器Mux 130用于选择操作码指定的控制寄存器。
分类模块120对接收自Host 1的指令根据指令的运算操作类型进行分类。图2示出了分类模块120的具体结构示意图。
如图2所示,分类模块120中的指令池1201存储有从Host 1接收的指令和与指令对应的操作数。此外,指令池1201中也可以存储伪指令和与伪指令对应的操作数(可选地)。
指令/操作数分类单元1202通过确定指令的运算操作对指令池中的指令(包括伪指令) 进行分类,如果指令(即第一指令)的运算操作属于非乘模块160执行的运算,则将该指令及其操作数分类到非乘指令/操作数FIFO(First Input First Output,先进先出)1203,如果指令(即第二指令)的运算操作属于乘法模块170执行的运算,则将该指令及其操作数分类到乘法指令/操作数FIFO 1204。
此外,分类模块120还可以包括非乘和乘法伪指令池1205、1206。非乘伪指令池1205 存储有可以由非乘模块160执行的伪指令(即第一伪指令)和与伪指令对应的操作数,乘法伪指令池1206存储有可以由乘法模块170执行的伪指令(即第二伪指令)和与伪指令对应的操作数。在具有非乘伪指令池1205和乘法伪指令池1206的情况下,分类模块120 还包括非乘数据选择器MUX 1207和乘法数据选择器MUX 1208。非乘数据选择器MUX 1207从非乘指令/操作数FIFO 1203和非乘伪指令池1205选择指令或者伪指令发送到非乘预处理模块140进行非乘运算前的预处理,乘法数据选择器MUX 1208从乘法指令/操作数 FIFO 1204和乘法伪指令池1206选择指令或者伪指令发送到乘法预处理模块150进行乘法运算前的预处理。
可以理解,假如指令池1201中存在伪指令,则对伪指令的各种处理与对指令池1201 中的其他非伪指令的指令的处理相同。通过随机或者定时向指令池1201中加入伪指令,能在对运算装置执行不同类型运算时的功率谱产生混淆的同时,在时间上对指令的执行进行混淆,进一步提高运算装置防侧信道攻击的能力。
此外,可以理解,在分类模块120中加入分别与非乘指令/操作数FIFO和乘法指令/操作数FIFO对应的非乘伪指令池和乘法伪指令池,能在对运算装置执行不同类型运算时的功率谱产生混淆的同时,在时间上分别对非乘和乘法运算进行混淆,进一步提高运算装置防止侧信道攻击的能力。
此外,可以理解,指令/操作数分类单元1202可以用硬件实现也可以用软件实现。指令/操作数分类单元1202在对指令进行分类前,会判断执行是否满足分类条件,具体地,判断指令执行所需的数据是否是另一指令执行完毕后的结果数据,如果是另一指令执行完毕后的结果数据且另一指令已执行完毕,则确定该指令的运算操作以对指令进行分类,如果是另一指令执行完毕后的结果数据但另一指令未执行完毕,则将该指令放回指令池中,如果不是另一指令执行完毕后的结果数据,则确定该指令的运算操作以对该指令进行分类。如果指令/操作数分类单元1202用硬件实现,则硬件维护一个执行结果列表,当软件配置一个指令和其操作数时,如果指令的执行是另一指令执行完毕后的结果数据,则在执行结果列表中查找另一指令的结果表示状态,如果状态为已执行完毕,则对该指令进行分类,如果状态表示未执行完毕,则将暂时不对该指令进行分类,将其放回指令池。
此外,可以理解,非乘伪指令池1205和乘法伪指令池1206中伪指令的执行具有较低的优先级,并且其执行可以随时被中断。在多任务执行时,不需要现场保护。
此外,可以理解,在本申请中,伪指令与指令均是可以由处理器执行的指令,区别在于伪指令的执行结果不会被保存。
非乘预处理模块140和乘法预处理模块150用于分别对进行非乘运算和乘法运算的指令及其对应的操作数进行预处理,并且,非乘预处理模块140和乘法预处理模块150的预处理是并行进行的,例如,非乘预处理模块140在对非乘指令及其操作数进行预处理时,乘法预处理模块150也在对乘法指令及其操作数进行预处理。非乘预处理模块140在对非乘伪指令及其操作数进行预处理时,乘法预处理模块150也在对乘法指令或者乘法伪指令及其操作数进行预处理。即非乘处理模块140和乘法处理模块150的处理是并行进行的。非乘预处理模块140可以包括非乘状态机OP FSMs 1401、非乘指令选择器OP_MUX 1402 和非乘指令解析器OP ANA 1403,乘法预处理模块150可以包括乘法状态机OP FSMs 1501、乘法指令选择器OP_MUX 1502和乘法指令解析器OP ANA 1503。其中,非乘状态机OP FSMs 1401和乘法状态机OP FSMs 1501用于设计高层次的运算,如模逆、模幂和点乘、除法;非乘指令选择器OP_MUX 1402和乘法指令选择器OP_MUX 1502用于对来自分类模块120和非乘状态机以及乘法状态机的指令进行选择;非乘指令解析器OP ANA 1403和乘法指令解析器OP ANA1503用于对指令做分析,例如,获取通用寄存器GP的长度、读取GP(可以是多个GP)和写回GP(可以是多个GP)的地址。可以理解,各运算预处理模块也可以包括其他单元或器件,在此不做限制。
非乘模块160和乘法模块170分别用于对非乘和乘法预处理模块进行预处理的指令 (包括非乘指令、非乘伪指令、乘法指令、乘法伪指令)及其操作数并行进行非乘运算和乘法运算。可以理解,乘法运算可以包括乘法和模乘的状态及过程、乘法器的实现,非乘运算可以包括加减法、模加减、逻辑运算(与、或、异或等)、以及移位运算(可选择补0 或补1的左移或右移)。例如,在一示范例中,处理器100为大数计算装置中的协处理器,在大部分运算装置中,乘法和非乘运算的运算逻辑相差较大,将两者并行执行,能够有效对两种运算产生的功率谱产生混淆,有效地防止对运算装置的侧信道攻击。
此外,可以理解,在本申请的其他实施例中,对运算的分类也可以是其他分类,不限于分成两类,或者不限于分成乘法和非乘。例如,可以分成三类或者更多类,即包括三个或者更多个运算模块,执行(例如,并行执行)三个或者更多个不同分支的运算,例如,分为乘法、逻辑运算、加减法三个模块。或者例如,第一运算包括乘法和加法,第二运算包括加法和乘法外的其他运算。优选地,在对运算进行分类时,可以根据单个运算执行时整个运算装置的功率谱来分类,将功率谱较相似的分为一个运算分支。
此外,可以理解,根据本申请的一些实施例,伪指令指的是与处理器执行的任务无关且执行结果不必必须存储的指令。
根据本申请的一些实施例,处理器100执行指令的方法过程如图3所示,具体地,包括,但不限定于:
由分类模块120或者其他模块确定指令池1201中满足分类条件的指令的运算操作(框 301),以判断与指令的运算操作对应的是乘法运算还是非乘运算。
具体地,在一些示范例中可以通过以下方式确定指令是否满足分类条件:
判断指令执行所需的数据是否是另一指令执行完毕后的结果数据,如果是另一指令执行完毕后的结果数据且另一指令已执行完毕,则确定该指令的运算操作以对指令进行分类,如果是另一指令执行完毕后的结果数据但另一指令未执行完毕,则将该指令放回指令池中,如果不是另一指令执行完毕后的结果数据,则确定该指令的运算操作以对该指令进行分类。
此外,可以理解,也可以通过其他方式判断指令是否满足分类条件,在此不做限制。
此外,可以对指令解析后,分析指令所要进行的运算操作类型,从而确定该指令的运算操作类型是属于乘法还是非乘法。
如果与指令的运算操作对应的是非乘运算,则分类模块120或者其他模块将该指令和与指令对应的操作数发送到非乘指令/操作数FIFO 1203(框302),非乘数据选择器MUX1207或其他模块选择从非乘指令/操作数FIFO 1203或者非乘伪指令池1205中获取指令和对应指令的操作数,并将选择出的指令发送给非乘预处理模块140(框303),非乘预处理模块140的非乘状态机OP FSMs 1401、非乘指令选择器OP_MUX 1402和非乘指令解析器 OPANA 1403或其他模块对指令和对应的操作数进行预处理(框304)。然后,由非乘模块 160或其他模块对非乘预处理模块进行预处理的指令和操作数进行非乘运算(框305)。
如果与指令的运算操作对应的是乘法运算,则将该指令和与指令对应的操作数发送到乘法指令/操作数FIFO 1204(框306)。乘法数据选择器MUX 1208或其他模块选择从乘法指令/操作数FIFO 1204或乘法伪指令池1206获取该指令和对应的操作数,将其发送给乘法预处理模块150(框307),乘法预处理模块150的乘法状态机OP FSMs 1501、乘法指令选择器OP_MUX 1502和乘法指令解析器OP ANA 1503或其他模块对指令和对应的操作数进行预处理(框308)。然后,由乘法模块160或其他模块对乘法预处理模块进行预处理的指令和操作数进行乘法运算(框309)。
可以理解,伪指令进入相应的运算预处理模块和运算模块的时间可以是随机的,或者按时进入的,在此不做限制。即非乘数据选择器MUX 1027和乘法数据选择器MUX 1208对指令和伪指令的选择可以是随机的,也可以是按预定规则进行选择,在此不做限制。
此外,除了图1所示的处理器,本申请的发明思想也适用于多Host指令的执行。如图 4所示,在执行多Host的指令时,对多个任务分片执行,其中分类模块120包括多个指令池1201,并且在图1所示的处理器结构基础上,需要增加仲裁器410、非乘参数保留模块 420和乘法参数保留模块430、Arbit_SRAM 440。其中,仲裁器410完成对不同指令池1201 的仲裁选取;非乘参数保留模块420对非乘运算模块的某个任务的中间状态和值做保留,以便多任务场景中,任务的切换和恢复;乘法参数保留模块430对乘法运算模块的某个任务的中间状态和值做保留,以便多任务场景中,任务的切换和恢复;Arbit SRAM 440是对 SRAM的资源访问做仲裁。
本申请通过将不同运算类型的指令运算预处理和运算并行进行,能够对运算装置执行不同类型运算时的功率谱产生混淆,从而加强运算装置防侧信道攻击的能力。
图5A是示出根据本申请的实施例的一种处理器流水线。图5B是示出根据本申请的实施例的将包括在处理器中的一种架构核。
在图5A中,处理器流水线500包括,但不局限于,指令取出级501、指令解码级502、指令执行和存储器访问级503、写回/写入级504、指令引退级505,和/或其他流水线级,等等。虽然图5A示例地示出了一种有序流水线,本技术领域的人员应理解其他技术可以对图5A所示的处理器流水线实现其他实施方案。例如,处理器流水线500可以包含其他或者不同的处理级,诸如寄存器重命名、无序发布/执行流水线等。具体而言,处理器流水线1000还可以包括,但是不局限于,对取出指令进行长度解码的长度解码级(未示出);对已解码的指令进行分配级(未示出)、寄存器重命名级(未示出)、调度级(也称为分派或发布级)(未示出);异常处理级和提交级(未示出),等等的无序发布/执行流水线。
在图5B中,处理器核510包括,但不局限于,L1指令高速缓存单元510、指令取出和解码单元512、寄存器513、执行单元514、载入/存出单元515、L1数据高速缓存单元 516,和/或其他单元。处理器核510可以是精简指令集计算(RISC)核、复杂指令集计算 (CISC)核、超长指令字(VLIW)核或混合或期待核类型。作为另一选项,处理器核510 可以是专用核,诸如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元 (GPGPU)核、或图形核等等。
根据本申请的一些实施例,指令取出和解码单元512从L1指令高速缓存器511中获取指令并实现指令解码功能,从而生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。指令取出及解码单元512可使用各种不同的机制来实现。合适的机制的示例包括,但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器 (ROM)等。在一个实施例中,核510包括用于存储某些宏指令的微代码的微代码ROM或其他介质。指令取出及解码单元512可以通过寄存器513耦合到执行单元514和/或载入/ 存出单元515。寄存器513包括一个或多个寄存器,其中不同的寄存器存储一种或多种不同的数据类型,术语标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(作为要执行的下一个指令的地址的指令指针)等。
本申请领域的技术人员应该可以理解,其他技术可以实施本申请的其他方面。例如,指令取出及解码单元512还可以不通过寄存器513耦合到执行单元514和/或载入/存出单元515(未示出)。
执行单元514和载入/存出单元515实施处理器流水线中的执行功能。根据本申请的一些实施例,一个或多个执行单元514的集合和一个或多个载入/存出单元515的集合可以构成处理器的执行引擎。执行单元514可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。相应的,执行单元514可以包括,但不局限于,标量算术逻辑运算单元、矢量算术逻辑运算单元、固定功能单元(fix function unit)、和/或类似单元等。尽管一些实施例可以包括,但不局限于,专用于特定功能或功能集合的多个执行单元,但其他实施例可包括,但不局限于,全部执行所有功能的仅一个执行单元或多个执行单元。寄存器513和L1数据高速存储器器516实现了流水线中的写回/写入以及指令引退功能。
应当理解,其他技术可以对图5B的处理器核构架实现其他的实施方案。例如,处理器核510还可包括,但不局限于,执行长度解码级的指令取出及解码单元512;耦合在指令取出及解码单元512和寄存器513之间的寄存器重命名/分配单元(未示出)和调度单元 (未示出),其中,寄存器重命名/分配单元执行寄存器重命名级/分配级以及调度单元执行调度级;各单元可涉及到异常处理级,等等的无序发布/执行核构架。
在本申请的一些实施例中,处理器核510耦合到L2存储器517,该存储器单元包括,但不局限于,二级(L2)高速缓存单元(未示出),该L2高速缓存单元还可进一步被耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器(未示出)。
应当理解,核510可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括,但不局限于,时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括,但不局限于,分开的指令和数据高速缓存器511/516以及共享L2存储器517,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括,但不局限于,内部高速缓存和外部高速缓存的组合,其中外部高速缓存是在核外和/或处理器外部。或者,所有高速缓存都可以在核内和/或处理器的外部。
图6是根据本申请实施例的可具有超过一个核的处理器的框图。在一个实施例中,处理器600可包括,但不局限于,一个或多个处理器核602A-602N。其中,每个处理器核602A-602N可包括,但不局限于,高速缓存单元604A-604N以及寄存器单元606A-606N。应理解,根据另一实施例,处理器核602A-602N还可包括如图5B所示的其他处理器核单元,但是为了简化描述,这里就不一一重复了。
应理解,其他技术可以对图6所示的处理器核构架实现其他的实施方案。例如,处理器600还可包括系统代理单元(未示出)、一个或多个总线控制器单元(未示出)、专用逻辑(未示出),等等。其中,上述专用逻辑(未示出)可包括/或科学(吞吐量)的一个或多个专用核(未示出)。根据一个实施例,处理器核602A-602N可以是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);也可以是,主要用于图形和/或科学 (吞吐量)的一个或多个专用核。因此,处理器600可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器600可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将处理器600实现在一个或多个衬底上。
处理器的存储器层次结构包括在各核内的一个或多个级别的高速缓存,以及一个或多个共享高速缓存单元的集合(未示出)。该共享高速缓存单元的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。在一个实施例中,处理器600还可包括基于环的互连单元(未示出)将专用逻辑(未示出)、共享高速缓存单元的集合(未示出)以及上述系统代理单元(未示出)互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。
在一些实施例中,核602A-N中的一个或多个核能够多线程化。上述系统代理单元(未示出)包括,但不局限于,协调和操作核602A-N的组件,例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核602A-N和/或上述专用逻辑(未示出)的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核602A-N在架构指令集方面可以是同构的或异构的;即,这些核602A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图7是根据本申请实施例的系统的框图。该系统包括,但不局限于,膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统。一般地,能够包含本申请中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参考图7,所示为根据本申请的一个实施例的系统700的框图。系统700可以包括耦合到控制器中枢703的一个或多个处理器701。在一个实施例中,控制器中枢703包括,但不局限于,图形存储器控制器中枢(GMCH)(未示出)和输入/输出中枢(IOH)(其可以在分开的芯片上)(未示出),其中GMCH包括存储器和图形控制器并与IOH耦合。系统700还可包括耦合到控制器中枢703的协处理器702和存储器704。或者,存储器和 GMCH中的一个或两者可以被集成在处理器内(如本申请中所描述的),存储器704和协处理器702直接耦合到处理器701以及控制器中枢703,控制器中枢703与IOH处于单个芯片中。
附加处理器702的任选性质用虚线表示在图7中。处理器701可包括本申请中描述的处理核中的一个或多个,并且可以是处理器600的某一版本。
存储器704可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢703经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接706与处理器701进行通信。
在一个实施例中,协处理器702是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢703可以包括集成图形加速器。本申请所提出的指令执行方法可以由协处理器702执行。并且该协处理器的架构也可以是处理器600的某一版本。
在一个实施例中,处理器701执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器701将这些协处理器指令识别为应当由附连的协处理器702 执行的类型。因此,处理器701在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器702。协处理器702接受并执行所接收的协处理器指令。
现在参考图8,所示为根据本申请的一实施例的SoC(System on Chip,片上系统)800 的框图。在图8中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图8中,互连单元850被耦合至应用处理器810,该应用处理器包括,但不局限于,一个或多个核602A-N的集合以及共享高速缓存单元604A-704N和寄存器606A-606N;系统代理单元880;总线控制器单元890;集成存储器控制器单元840;一组或一个或多个协处理器820,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元830;直接存储器存取(DMA)单元860。在一个实施例中,协处理器820包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在以下实施例中总结了进一步的本申请的技术方案:
实施例1:一种指令执行方法,包括:
确定第一指令的运算操作,并对所述第一指令和第一指令的操作数进行与所述第一指令的运算操作对应的第一运算预处理和第一运算;
确定第二指令的运算操作,并对所述第二指令和第二指令的操作数进行与所述第二指令的运算操作对应的第二运算预处理和第二运算;
其中,所述第一运算和第二运算为不同的运算,并且所述第一运算预处理和所述第一运算与所述第二运算预处理和所述第二运算并行进行。
实施例2:根据实施例1所述的方法,还包括:
从第一伪指令池获取第一伪指令,并对所述第一伪指令和第一伪指令的操作数进行第一运算预处理和第一运算,其中所述第一伪指令的运算操作与所述第一指令的运算操作相同;和/或
从第二伪指令池获取第二伪指令,并对所述第二伪指令和第二伪指令的操作数进行第二运算预处理和第二运算,其中所述第二伪指令的运算操作与所述第二指令的运算操作相同。
实施例3:根据实施例1或2所述的指令执行方法,其中,在确定第一指令或第二指令的运算操作之前,所述方法还包括:
判断第一指令或第二指令的执行所需的数据是否为另一指令执行完毕后的结果数据;
如果所述判断的结果为是所述另一指令执行完毕后的结果数据且所述另一指令已执行完毕,则确定第一指令或第二指令的运算操作;
如果所述判断的结果为不是所述另一指令执行完毕后的结果数据,则确定第一指令或第二指令的运算操作。
实施例4:根据实施例1至3中任一项所述的指令执行方法,所述第一指令和/或第二指令为伪指令。
实施例5:根据实施例1至4中任一项所述的指令执行方法,其中,所述第一运算为非乘运算,所述第二运算为乘法运算。
实施例6:根据实施例5所述的指令执行方法,所述预处理包括状态机、指令选择器和指令解析器对指令的处理。
实施例7:一种处理器,包括:
分类模块,用于确定第一指令和第二指令的运算操作;
第一运算预处理模块,用于对分类模块确定的所述第一指令和该第一指令的操作数进行第一运算预处理;
第一运算模块,用于对分类模块确定的所述第一指令和该第一指令的操作数进行第一运算;
第二运算预处理模块,用于对分类模块确定的所述第二指令和该第二指令的操作数进行第二运算预处理;
第二运算模块,用于对对分类模块确定的所述第二指令和该第二指令的操作数进行第二运算;
其中,所述第一运算模块和第二运算模块进行不同的运算,并且所述第一运算预处理模块和第一运算模块与第二运算预处理模块和第二运算模块并行运行。
实施例8:根据实施例7所述的处理器,所述分类模块还用于从第一伪指令池获取第一伪指令和/或从第二伪指令池获取第二伪指令:并且,
所述第一运算预处理模块还用于对所述分类模块获取的所述第一伪指令和第一伪指令的操作数进行第一运算预处理,所述第一运算模块还用于对所述分类模块确定的所述第一伪指令和第一伪指令的操作数进行第一运算;
所述第二运算预处理模块还用于对所述分类模块获取的所述第二伪指令和第二伪指令的操作数进行第二运算预处理,所述第二运算模块还用于对所述分类模块确定的所述第二伪指令和第二伪指令的操作数进行第二运算。
实施例9:根据实施例7或8所述的处理器,所述分类模块还执行:
判断第一指令或第二指令的执行所需的数据是否为另一指令执行完毕后的结果数据;
如果所述判断的结果为是所述另一指令执行完毕后的结果数据且所述另一指令已执行完毕,则确定第一指令或第二指令的运算操作;
如果所述判断的结果为不是所述另一指令执行完毕后的结果数据,则确定第一指令或第二指令的运算操作。
实施例10:根据实施例7至9中任一项所述的处理器,所述第一指令和/或第二指令为伪指令。
实施例11:根据实施例7至10中任一项所述的处理器,其中,所述第一运算模块为乘法模块,所述第二运算模块为非乘模块;所述预处理模块包括状态机、指令选择器和指令解析器。
实施例12:一种机器可读介质,其中,所述机器可读介质上存储有指令,该指令在机器上执行时使机器执行实施例1至6中任一项所述的指令执行方法。
实施例13:一种系统,包括:
存储器,用于存储由系统的一个或多个处理器执行的指令,以及
处理器,是系统的处理器之一,用于执行实施例1至6中任一项所述的指令执行方法。
如本文所使用的,术语“模块或单元”可以指或者包括专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组)、组合逻辑电路、和/或提供所描述的功能的其他合适的组件,或者可以是专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组)、组合逻辑电路、和/或提供所描述的功能的其他合适的组件的一部分。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (13)
1.一种指令执行方法,其特征在于,包括:
确定第一指令的运算操作,并对所述第一指令和第一指令的操作数进行与所述第一指令的运算操作对应的第一运算预处理和第一运算;
确定第二指令的运算操作,并对所述第二指令和第二指令的操作数进行与所述第二指令的运算操作对应的第二运算预处理和第二运算;
其中,所述第一运算和第二运算为不同的运算,并且所述第一运算预处理和所述第一运算与所述第二运算预处理和所述第二运算并行进行。
2.根据权利要求1所述的指令执行方法,其特征在于,还包括:
从第一伪指令池获取第一伪指令,并对所述第一伪指令和第一伪指令的操作数进行第一运算预处理和第一运算,其中所述第一伪指令的运算操作与所述第一指令的运算操作相同;和/或
从第二伪指令池获取第二伪指令,并对所述第二伪指令和第二伪指令的操作数进行第二运算预处理和第二运算,其中所述第二伪指令的运算操作与所述第二指令的运算操作相同。
3.根据权利要求1所述的指令执行方法,其特征在于,在确定第一指令或第二指令的运算操作之前,所述方法还包括:
判断第一指令或第二指令的执行所需的数据是否为另一指令执行完毕后的结果数据;
如果所述判断的结果为是所述另一指令执行完毕后的结果数据且所述另一指令已执行完毕,则确定第一指令或第二指令的运算操作;
如果所述判断的结果为不是所述另一指令执行完毕后的结果数据,则确定第一指令或第二指令的运算操作。
4.根据权利要求3所述的指令执行方法,其特征在于,所述第一指令和/或第二指令为伪指令。
5.根据权利要求1至4中任一项所述的指令执行方法,其特征在于,所述第一运算为非乘运算,所述第二运算为乘法运算。
6.根据权利要求5所述的指令执行方法,其特征在于,所述预处理包括状态机、指令选择器和指令解析器对指令的处理。
7.一种处理器,其特征在于,包括:
分类模块,用于确定第一指令和第二指令的运算操作;
第一运算预处理模块,用于对分类模块确定的所述第一指令和该第一指令的操作数进行第一运算预处理;
第一运算模块,用于对分类模块确定的所述第一指令和该第一指令的操作数进行第一运算;
第二运算预处理模块,用于对分类模块确定的所述第二指令和该第二指令的操作数进行第二运算预处理;
第二运算模块,用于对对分类模块确定的所述第二指令和该第二指令的操作数进行第二运算;
其中,所述第一运算模块和第二运算模块进行不同的运算,并且所述第一运算预处理模块和第一运算模块与第二运算预处理模块和第二运算模块并行运行。
8.根据权利要求7所述的处理器,其特征在于,所述分类模块还用于从第一伪指令池获取第一伪指令和/或从第二伪指令池获取第二伪指令:并且,
所述第一运算预处理模块还用于对所述分类模块获取的所述第一伪指令和第一伪指令的操作数进行第一运算预处理,所述第一运算模块还用于对所述分类模块确定的所述第一伪指令和第一伪指令的操作数进行第一运算;
所述第二运算预处理模块还用于对所述分类模块获取的所述第二伪指令和第二伪指令的操作数进行第二运算预处理,所述第二运算模块还用于对所述分类模块确定的所述第二伪指令和第二伪指令的操作数进行第二运算。
9.根据权利要求7所述的处理器,其特征在于,所述分类模块还执行:
判断第一指令或第二指令的执行所需的数据是否为另一指令执行完毕后的结果数据;
如果所述判断的结果为是所述另一指令执行完毕后的结果数据且所述另一指令已执行完毕,则确定第一指令或第二指令的运算操作;
如果所述判断的结果为不是所述另一指令执行完毕后的结果数据,则确定第一指令或第二指令的运算操作。
10.根据权利要求9所述的处理器,其特征在于,所述第一指令和/或第二指令为伪指令。
11.根据权利要求7至10中任一项所述的处理器,其特征在于,所述第一运算模块为乘法模块,所述第二运算模块为非乘模块;所述预处理模块包括状态机、指令选择器和指令解析器。
12.一种机器可读介质,其特征在于,所述机器可读介质上存储有指令,该指令在机器上执行时使机器执行权利要求1至6中任一项所述的指令执行方法。
13.一种系统,包括:
存储器,用于存储由系统的一个或多个处理器执行的指令,以及
处理器,是系统的处理器之一,用于执行权利要求1至6中任一项所述的指令执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910085634.4A CN109947479A (zh) | 2019-01-29 | 2019-01-29 | 指令执行方法及其处理器、介质和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910085634.4A CN109947479A (zh) | 2019-01-29 | 2019-01-29 | 指令执行方法及其处理器、介质和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947479A true CN109947479A (zh) | 2019-06-28 |
Family
ID=67007901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910085634.4A Pending CN109947479A (zh) | 2019-01-29 | 2019-01-29 | 指令执行方法及其处理器、介质和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947479A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201219A (zh) * | 2021-12-21 | 2022-03-18 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1074771A (zh) * | 1992-01-23 | 1993-07-28 | 英特尔公司 | 带有并行执行指令的装置的微处理机 |
CN1310818A (zh) * | 1998-05-29 | 2001-08-29 | 艾利森电话股份有限公司 | 为多个电路模块分配指令的方法和装置 |
CN1629799A (zh) * | 2003-12-17 | 2005-06-22 | 英特尔公司 | 用于超前执行下的结果推测的方法和装置 |
CN1957331A (zh) * | 2004-05-26 | 2007-05-02 | 英特尔公司 | 网络应用内的自动高速缓存生成 |
US20070180541A1 (en) * | 2004-06-08 | 2007-08-02 | Nikon Corporation | Cryptographic architecture with instruction masking and other techniques for thwarting differential power analysis |
CN101256613A (zh) * | 2007-02-27 | 2008-09-03 | 富士通株式会社 | 无需制造者和用户知道彼此的加密信息的安全处理器系统 |
US7987344B2 (en) * | 1995-08-16 | 2011-07-26 | Microunity Systems Engineering, Inc. | Multithreaded programmable processor and system with partitioned operations |
CN102473104A (zh) * | 2009-08-19 | 2012-05-23 | 国际商业机器公司 | 插入用于优化的simd代码的操作-和-指示指令 |
CN103959238A (zh) * | 2011-11-30 | 2014-07-30 | 英特尔公司 | 使用gpu/cpu体系结构的rsa的高效实现 |
CN106796505A (zh) * | 2014-08-29 | 2017-05-31 | 华为技术有限公司 | 指令执行的方法及处理器 |
-
2019
- 2019-01-29 CN CN201910085634.4A patent/CN109947479A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1074771A (zh) * | 1992-01-23 | 1993-07-28 | 英特尔公司 | 带有并行执行指令的装置的微处理机 |
US7987344B2 (en) * | 1995-08-16 | 2011-07-26 | Microunity Systems Engineering, Inc. | Multithreaded programmable processor and system with partitioned operations |
CN1310818A (zh) * | 1998-05-29 | 2001-08-29 | 艾利森电话股份有限公司 | 为多个电路模块分配指令的方法和装置 |
CN1629799A (zh) * | 2003-12-17 | 2005-06-22 | 英特尔公司 | 用于超前执行下的结果推测的方法和装置 |
CN1957331A (zh) * | 2004-05-26 | 2007-05-02 | 英特尔公司 | 网络应用内的自动高速缓存生成 |
US20070180541A1 (en) * | 2004-06-08 | 2007-08-02 | Nikon Corporation | Cryptographic architecture with instruction masking and other techniques for thwarting differential power analysis |
CN101256613A (zh) * | 2007-02-27 | 2008-09-03 | 富士通株式会社 | 无需制造者和用户知道彼此的加密信息的安全处理器系统 |
CN102473104A (zh) * | 2009-08-19 | 2012-05-23 | 国际商业机器公司 | 插入用于优化的simd代码的操作-和-指示指令 |
CN103959238A (zh) * | 2011-11-30 | 2014-07-30 | 英特尔公司 | 使用gpu/cpu体系结构的rsa的高效实现 |
CN106796505A (zh) * | 2014-08-29 | 2017-05-31 | 华为技术有限公司 | 指令执行的方法及处理器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201219A (zh) * | 2021-12-21 | 2022-03-18 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
CN114201219B (zh) * | 2021-12-21 | 2023-03-17 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951281B (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
CN106648553B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN109597646A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
CN110018850A (zh) | 用于可配置空间加速器中的多播的设备、方法和系统 | |
CN104823129B (zh) | 用于智能地对异构处理器组件供电的装置和方法 | |
CN104040492B (zh) | 微处理器加速的代码优化器和依赖性重排序方法 | |
CN104137060B (zh) | 高速缓存协处理单元 | |
CN109791488A (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
CN105103122B (zh) | 异构处理器装置和方法 | |
CN109313556A (zh) | 可中断和可重启矩阵乘法指令、处理器、方法和系统 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN104335166B (zh) | 用于执行混洗和操作的装置和方法 | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104903867B (zh) | 用于将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置和方法 | |
CN108369509A (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN107003837A (zh) | 用于推测性编译器优化的轻量级受限事务存储器 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN104919432B (zh) | 用于将多个位向左移并将多个1拉入较低有效位的指令 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN107810477A (zh) | 解码的指令的重复使用 | |
CN105190538B (zh) | 用于移动消除操作中的标志跟踪的系统和方法 | |
CN104969199B (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
CN110249302A (zh) | 在处理器核上同时执行多个程序 | |
CN108292232A (zh) | 用于加载索引和分散操作的指令和逻辑 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190628 |