微处理器和用于一微处理器的检测方法技术

技术编号:10756283 阅读:107 留言:0更新日期:2014-12-11 12:40
本发明专利技术涉及一种微处理器和一种用于一微处理器的检测方法,该微处理器包括:一指令高速缓存;一硬件状态机,用以检测在由该指令高速缓存撷取的一指令字节的数据流中的N个不动作(NOP)指令的一连续序列,其中N大于零;以及其中当检测到N个NOP指令的该连续序列时,该微处理器暂停由该指令高速缓存撷取及执行指令。

【技术实现步骤摘要】
微处理器和用于一微处理器的检测方法
本专利技术涉及一种微处理器,特别涉及一种可动态重设的微处理器及用于微处理器的动态重设方法。
技术介绍
微处理器的设计者会花费许多努力在效能分析上。在依据先前几代微处理器为基础并以利用特征及效能目标的基准集合来架构一微处理器时,设计者会执行软件应用程序中与其顾客最相关的代表性样本,并撷取软件应用程序的指令执行记录。设计者接着使用所撷取的记录以仿真正在设计的微处理器的操作。为了在所有目标软件应用程序中达成最高的聚集效能(aggregateperformance),设计者可设定被仿真微处理器的不同特性。一般而言,某个一目标应用程序的特性对一特别组态设定是需要的,但其它应用程序则不需要。在这些例子中,设计者可决定那个软件应用程序较为重要,或是寻找其它方法来尝试平衡多个软件应用程序的需求。上述选择通常无法达到最佳化目标软件应用程序效能的目的,因为在尝试最佳化其中一个软件应用程序的效能时也会损害另一个软件应用程序的效能。当辨识出组态设定的最佳平均集合时,举例来说,微处理器设计者可将其写为VHDL或Verilog程序代码。其它微处理器可通过包含在微处理器中的一组熔丝来修改其硬编码设定,这些熔丝可在微处理器制造时选择性地熔断,以改变其硬编码值(hardcodedvalues)的组态设定。上述方式可让微处理器在制造时有限度的最佳化,且或许可对在微处理器设计后所发表的新软件应用程序或是操作系统所需的系统组态做响应。然而,该解决方式仍无法达到使目标软件应用程序的效能最佳化的目的,因其需要设计者/制造者选择用于最佳化某些应用程序但且同时牺牲其它应用程序效能的组态设定、或是选择通常不会对任何应用程序进行最佳化的平衡组态设定。为了陈述该问题,于2008年7月10日申请的美国专利申请号12/170,591已揭示一微处理器可基于目前正在操作的应用程序的一装置驱动器以动态设定至多个操作模式,该美国专利已经公告为第8,566,565号,且整份专利提供于此作为参考之用。然而,更佳的效能最佳化效果的需求依然存在。
技术实现思路
本专利技术提供一种微处理器,包括:一指令高速缓存;一硬件状态机,用以检测在由该指令高速缓存所撷取的一指令字节的数据流中的N个不动作(NOP)指令的连续序列,其中N大于零;以及其中当检测到N个NOP指令的该连续序列时,该微处理器暂停由该指令高速缓存撷取及执行指令。本专利技术还提供一种用于一微处理器的检测方法,该微处理器包括一指令高速缓存及一硬件状态机,该方法包括:利用该硬件状态机检测在由该指令高速缓存所撷取的一指令字节的数据流中的N个不动作(NOP)指令的连续序列,其中N大于零;以及其中当检测到N个NOP指令的该连续序列时,暂停由该指令高速缓存撷取及执行指令。本专利技术还提供一种计算机程序产品,编码于至少一计算机可读媒体中以供一运算装置使用,该运算装置包括一微处理器,该计算机程序产品包括:一第一程序代码,用以指出该微处理器的一指令高速缓存;以及一第二程序代码,用以指出该微处理器的一硬件状态机,用以检测在由该指令高速缓存所撷取的一指令字节的数据流中的N个不动作(NOP)指令的连续序列,其中N大于零;以及其中当检测到N个NOP指令的该连续序列时,该微处理器暂停由该指令高速缓存撷取及执行指令。附图说明图1示出了一微处理器100的功能方块图。图2示出了依据本专利技术一实施例中的指纹单元102的详细功能方块图。图3示出了依据本专利技术一实施例中用以产生已知目标程序部分及其有关的静态指纹、组态设定及指纹产生准则的数据库的流程图。图4示出了依据本专利技术一实施例中微处理器100动态自我重新配置的操作的流程图。图5示出了依据本专利技术一实施例中微处理器110动态自我重新配置的更进一步操作流程图。图6示出了依据本专利技术另一实施例中微处理器100动态自我重新配置的操作流程图。图7示出了依据本专利技术另一实施例中微处理器100动态自我重新配置的操作流程图。图8示出了依据本专利技术另一实施例中图1的指纹单元102的方块图。图9示出了依据本专利技术一实施例中的微处理器100动态自我重新配置的操作流程图。图10示出了依据本专利技术一实施例中微处理器100检测NOP滑动的操作流程图。附图符号说明100~微处理器;102~指纹单元;104~重设单元;124~组态寄存器;126~指纹设定准则表;128~动态重设功能单元;132~指纹编程寄存器;142~指令信息;144~控制信号;202~指令索引;204~位移字段;206~运算码字段;208~ModRM字段;212~SIB字段;214~前缀;222~数学运算电路;224~结果(动态指纹);226~比较器;228~相符信号;232~静态指纹;234~控制逻辑;238~指纹产生准则;242~衰减计数器;244~串接信号;822~指令计数器;826~比较器;832~静态指令计数值;302-314、402-412、514-522、602-608、702-708、902-912、1002-1008~方块具体实施方式为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附图式,作详细说明如下。词汇(Glossary)「指纹(fingerprint)」为可辨识一程序的指令序列的一数值,指纹值的产生是依据一数学运算而得到的关于指令序列的信息累积结果。该信息可包括,举例来说,该指令的指令索引值的多个组合(例如指令的地址)、指令的操作码(opcode)、指令的位移(displacement)、指令的前缀(prefix)、及/或指令的部分地址模式,例如是x86架构指令(或是其一部分的)的SIB或modRM位。累积指令信息的数学运算,举例来说,可包括连续地计算与序列中各指令有关的循环冗余检查码(cyclicredundancycode)。此外,该数学运算亦可包括在一多输入位移寄存器(multipleinputshiftregister)中使用最大计数多项式来累计指令信息。再者,该数学运算还可包括依据一哈希函数(hashfunction),例如是一可变长度数据哈希函数以累计指令信息。当然,该数学运算更可包括对一队列,例如固定长度队列(fixed-lengthqueue),的连续指令信息进行累计。依据两个不同的产生时间点,指纹值可分为两种类型:静态及动态。当微处理器执行一程序的指令时,微处理器的指纹单元产生一动态指纹,而静态指纹则由工程师所预先产生。静态指纹会提供至指纹单元,使得指纹单元可对其产生的动态指纹及其所接收的静态指纹进行比较。指纹单元更可接收指纹产生准则(fingerprintgenerationcriteria),例如起始条件、停止条件、及重置条件,其可控制指纹单元累计指令信息以产生动态指纹。指纹产生准则亦可指定为指令信息的部分组合以让指纹单元进行累计以产生动态指纹。当各指令执行后(以撷取者为佳),指纹单元接收指令信息。若指纹单元检测到一起始条件,其会依据数学运算来累计指令信息而产生结果,其即为动态指纹。当各指令执行后,指纹单元会持续接收指令信息,并依据数学运算以累计指令信息而产生结果,直到指纹单元检测到一停止条件或一重置条件为止。在重置条件的一例子中,指纹单元清除累计状态,并依据数学运算再开始累计指令信息本文档来自技高网
...
微处理器和用于一微处理器的检测方法

【技术保护点】
一种微处理器,包括:一指令高速缓存;一硬件状态机,用以检测在由该指令高速缓存撷取的一指令字节的数据流中的N个不动作(NOP)指令的一连续序列,其中N大于零;以及其中当检测到N个NOP指令的该连续序列时,该微处理器用以暂停由该指令高速缓存撷取及执行指令。

【技术特征摘要】
2013.09.20 US 61/880,620;2013.10.10 US 14/050,7571.一种微处理器,包括:一指令高速缓存;一硬件状态机,用以通过计数在由该指令高速缓存撷取的一指令的未改变的数据流中的不动作NOP指令的一连续序列检测不动作NOP滑动,其中指令的未改变的数据流是这样的一个:其中从指令被撷取的时间到硬件状态机计数NOP指令的序列的时间期间没有另外的指令被插入到数据流中;以及其中该微处理器用以通过暂停执行包括紧接NOP滑动的任何非NOP指令的指令的数据流来响应检测NOP滑动;其中当NOP滑动导致壳码shellcode时,暂停执行指令的数据流防止壳码shellcode的执行。2.如权利要求1所述微处理器,其中所述微处理器通过计数N个指令的一连续序列检测NOP滑动,其中N的数值通过在该微处理器所执行的一软件而可编程。3.如权利要求1所述的微处理器,其中该硬件状态机响应检测到一子程序回传指令而开始计数多个NOP指令。4.如权利要求1所述的微处理器,其中该硬件状态机响应检测到一非不动作non-NOP指令以开始计数多个NOP指令。5.如权利要求1所述微处理器,其中当检测到NOP滑动时,该微处理器经由陷阱而进入该微处理器的一微程序代码。6.如权利要求1所述的微处理器,其中当未检测到NOP滑动时,该微处理器用以继续由该指令高速缓存撷取并执行指令。7.如权利要求1所述的微处理器,更包括:一条件标记寄存器;一堆栈索引寄存器;其中多个NOP指令包括除了该条件标记寄存器及该堆栈索引寄存器的一个或两个之外,不改变该微处理器的一架构状态的指令。8.如权利要求1所述的微处理器,其中多个NOP指令包括下列x86架构指令中的一个或多个:PUSHES、PUSHCS、PUSHSS、PUSHDS、PUSHregister、PUSHSP、PUSHA、WAIT、SAHF、REPNEprefix、CLD、STD、CLC、STC、CMC。9.如权利要求1所述的微处理器,其中多个NOP指令包括一个或多个x86架构的多个多字节指令,其中该多个多字节指令的一直接字节为一单字节NOP指令。10....

【专利技术属性】
技术研发人员:泰瑞派克斯
申请(专利权)人:威盛电子股份有限公司
类型:发明
国别省市:中国台湾;71

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1