检测瞬态执行攻击的仿真状态的制作方法

文档序号:30512020发布日期:2022-06-25 02:10阅读:58来源:国知局
1.本公开总体上涉及处理器技术,以及仿真技术。
背景技术
::2.现代处理器无序地执行指令以提高性能。这些无序处理器可以在处理器确认推测值是正确的之前“推测”分支或加载可使用某个值,并且执行可暂时使用该推测值来进行。当分支/加载解决并且知道推测性使用的值是否正确时,有两种可能的情况:1)如果推测性使用的值是正确的,那么取决于该值的指令是有效的并且可以引退,这意味着它们的结果对于程序而言在架构上变得可见;2)否则,取决于该推测值的指令是无效的并且必须被压制,这意味着它们的结果不会被提交到架构程序状态。在这种情境中,这些指令可以被称为瞬态的(意味着是非永久的)。在抑制(squash)之后,处理器可以用正确的值继续执行。3.虽然瞬态指令的结果没有被提交到架构程序状态,但微架构处理器状态仍然可能受到瞬态指令的影响。例如,如果瞬态指令尝试从一个地址加载数据,而该地址的内容在任何处理器缓存中都是不可用的,那么相应的数据就可被加载到处理器缓存中。该缓存的状态构成了偶发通道(incidentalchannel)。可以经由诸如flush+reload或prime+probe之类的测量缓存访问的时延的分析技术来从这个通道观察数据。瞬态执行攻击利用了瞬态指令的微架构副作用,从而允许了恶意对手访问通常会被架构访问控制机制所禁止的信息。技术实现要素:4.根据本公开的第一方面,提供了一种方法,包括:运行逻辑设计的仿真;识别经仿真的逻辑设计中的一个或多个信号,所述一个或多个信号包含不应当通过任何偶发通道可见的数据;以及在所述仿真运行的同时选择性地将所识别的一个或多个信号转换为偶发数据状态。5.根据本公开的第二方面,提供了一种装置,包括:存储器,用于存储仿真模型;处理器,与所述存储器通信耦合;以及逻辑单元,与所述处理器和所述存储器通信耦合,所述逻辑单元用于:在所述仿真模型上运行仿真,识别所述仿真模型中的一个或多个信号,所述一个或多个信号包含不应当通过任何偶发通道可见的数据,并且在所述仿真运行的同时选择性地将所识别的一个或多个信号转换为偶发数据状态。6.根据本公开的第三方面,提供了一种装置,包括:用于运行逻辑设计的仿真的装置;用于识别经仿真的逻辑设计中的一个或多个信号的装置,所述一个或多个信号包含不应当通过任何偶发通道可见的数据;以及用于在所述仿真运行的同时选择性地将所识别的一个或多个信号转换为偶发数据状态的装置。附图说明7.在附图中以示例方式而不是限制方式图示了本发明的各种实施例,在附图中:8.图1a至1c是根据一个实施例的方法的示例的流程图;9.图2是根据一个实施例的装置的示例的框图;10.图3是根据一个实施例的方法的另一示例的流程图;11.图4是根据一个实施例的仿真环境的示例的框图;12.图5a是根据本发明的实施例图示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。13.图5b是根据本发明的实施例图示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图;14.图6a-6b图示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一;15.图7是根据本发明的实施例的处理器的框图,该处理器可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形;16.图8-11是示例性计算机架构的框图;并且17.图12是根据本发明的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。具体实施方式18.本文论述的实施例以各种方式提供了用于仿真复杂逻辑设计的技术和机制。本文描述的技术可被实现在一个或多个电子设备中。可以利用本文描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,例如相机、蜂窝电话、计算机终端、桌面型计算机、电子阅读器、传真机、一体机(kiosk)、膝上型计算机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片式服务器、机架安装式服务器、其组合,等等)、机顶盒、智能电话、平板个人计算机、超便携个人计算机、有线电话、其组合,等等。更一般而言,本文描述的技术可用于包括可操作来仿真逻辑设计的集成电路的各种电子设备的任何一种中。19.在接下来的描述中,论述了许多细节以提供对本公开的实施例的更透彻说明。然而,本领域技术人员将会清楚,可以在没有这些具体细节的情况下实践本公开的实施例。在其他实例中,以框图形式而不是详细示出公知的结构和设备,以避免模糊本公开的实施例。20.注意,在实施例的相应附图中,以线条来表示信号。一些线条可能更粗,以指示出更大数目的构成信号路径,和/或在一端或多端具有箭头,以指示出信息流的方向。这种指示并不旨在是限制性的。更确切地说,这些线条与一个或多个示例性实施例结合使用来帮助更容易理解电路或逻辑单元。由设计需要或偏好决定的任何所表示的信号可实际上包括可在任一方向上行进并且可利用任何适当类型的信号方案来实现的一个或多个信号。21.在整个说明书中,以及在权利要求中,术语“连接”意指直接连接,例如连接的事物之间的电连接、机械连接或磁连接,而没有任何中间设备。术语“耦合”意指直接或间接连接,例如连接的事物之间的直接电连接、机械连接或磁连接,或者通过一个或多个无源或有源中间设备的间接连接。术语“电路”或“模块”可以指被布置为彼此协作以提供期望的功能的一个或多个无源和/或有源组件。术语“信号”可以指至少一个电流信号、电压信号、磁信号、或者数据/时钟信号。“一”、“一个”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。22.术语“设备”通常可以指的是根据该术语的使用的上下文的装置。例如,设备可以指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接,等等。一般而言,设备是三维结构,该三维结构具有x-y-z笛卡儿坐标系中沿着x-y方向的平面和沿着z方向的高度。设备的平面也可以是包括该设备的装置的平面。23.术语“缩放”一般是指将某个设计(图解和布局)从一个工艺技术转换到另一个工艺技术并随后减小布局面积。术语“缩放”一般也指在同一技术节点内减小布局和器件的大小。术语“缩放”还可以指相对于另一参数(例如,电力供应水平)调整信号频率(例如,减慢或加速——即分别是缩小或放大)。24.术语“基本上”、“接近”、“大致”、“近似”和“大约”一般指在目标值的+/-10%内。例如,除非在其使用的明确上下文中另有指明,否则术语“基本上等于”、“大约等于”和“大致等于”意指在这样描述的事物之间没有超过偶然的差异。在本领域中,这种差异通常不超过预定目标值的+/-10%。25.要理解,这样使用的术语在适当的情况下是可互换的,使得本文描述的发明的实施例例如能够按与本文所示或以其他方式描述的那些不同的其他朝向来操作。26.除非另有指明,否则使用序数形容词“第一”、“第二”和“第三”等等来描述共同对象只是表明相似对象的不同实例被引用,而并不是要暗示这样描述的对象必须在时间上、空间上、排名上或者以任何其他方式处于给定的序列中。27.说明书中和权利要求中的术语“左”、“右”、“前”、“后”、“顶部”、“底部”、“之上”、“之下”等等(如果有的话)是用于描述性目的的,而并不一定用于描述永久的相对位置。例如,本文使用的术语“之上”、“之下”、“前侧”、“后侧”、“顶部”、“底部”、“上方”、“下方”和“在……上”指的是一个组件、结构或材料相对于设备内的其他引用的组件、结构或材料的相对位置,其中这种物理关系是值得注意的。这些术语在本文中仅用于描述性目的,并且主要是在设备z轴的上下文中使用的,因此可相对于设备的朝向。因此,如果该设备相对于提供的附图的上下文被上下颠倒的话,在本文提供的附图的上下文中在第二材料“之方”的第一材料也可以在第二材料的“之下”。在材料的上下文中,将一种材料设置在另一材料之上或之下可以是直接接触或者可以具有一种或多种居间的材料。另外,将一种材料设置在两种材料之间可以与这两个层直接接触或者可以具有一个或多个居间的层。相比之下,在第二材料“上”的第一材料是与该第二材料直接接触的。在组件装配的上下文中要做出类似的区分。28.术语“在……之间”可以用于设备的z轴、x轴或y轴的上下文中。在两种其他材料之间的材料可以与这些材料的一者或两者接触,或者该材料可以通过一种或多种居间的材料与其他两种材料间隔开。在两种其他材料“之间”的材料因此可以与其他两种材料的任一者接触,或者该材料可以通过居间的材料耦合到其他两种材料。在两个其他设备之间的设备可以与这些设备的一者或两者直接连接,或者该设备可以通过一个或多个居间的设备与其他两个设备间隔开。29.如在整个本说明书中和权利要求中所使用的,由术语“……中的至少一个”或者“……中的一个或多个”联接的项目的列表可以意指列出的术语的任何组合。例如,短语“a、b或c中的至少一个”可以意指a;b;c;a和b;a和c;b和c;或者a、b和c。要指出,附图的具有与任何其他图中的元素相同的标号(或名称)的那些元素可以按与所描述的方式相似的任何方式来操作或工作,但不限于此。30.此外,本公开中论述的组合逻辑和时序逻辑的各种元素既可涉及物理结构(例如,与门、或门或者异或门),也可涉及实现逻辑结构(是所论述的逻辑的布尔等同物)的设备的合成的或者以其他方式优化的集合。31.本文描述的各种实施例可以包括存储器组件和/或到存储器组件的接口。这种存储器组件可以包括易失性和/或非易失性(nv)存储器。易失性存储器可以是要求电力来维持该介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的随机访问存储器(randomaccessmemory,ram),例如动态ram(dram)或静态ram(sram)。可用于存储器模块中的一种特定类型的dram是同步动态ram(sdram)。在特定实施例中,存储器组件的dram可以遵守由联合电子设备工程委员会(jointelectrondeviceengineeringcouncil,jedec)颁布的标准,例如用于双数据速率(doubledatarate,ddr)sdram的jesd79f,用于ddr2sdram的jesd79-2f,用于ddr3sdram的jesd79-3f,用于ddr4sdram的jesd79-4a,用于低功率ddr(lowpowerddr,lpddr)的jesd209,用于lpddr2的jesd209-2,用于lpddr3的jesd209-3,以及用于lpddr4的jesd209-4(这些标准可在jedec.org获得)。这种标准(以及类似的标准)可以被称为基于ddr的标准,并且实现这种标准的存储设备的通信接口可以被称为基于ddr的接口。32.nv存储器(nvm)是不要求电力来维持该介质存储的数据的状态的存储介质。在一个实施例中,存储器设备是块可寻址存储器设备,例如基于nand或nor技术的那些设备。存储器设备也可以包括未来世代的非易失性设备,例如三维(3d)交叉点存储器设备,或者其他字节可寻址就地写入(write-in-place)非易失性存储器设备。在一个实施例中,存储器设备可以是或者可以包括使用硫属化合物玻璃的存储器设备、多阈值级别nand闪存存储器、nor闪存存储器、单级别或多级别相变存储器(phasechangememory,pcm)、电阻性存储器、纳米线存储器、铁电晶体管ram(ferroelectrictransistorram,fetram)、反铁电存储器,包含忆阻器技术的磁阻式ram(magnetoresistiveram,mram)存储器、包括金属氧化物基底、氧空位基底的电阻性存储器、以及导电桥ram(conductivebridgeram,cb-ram)、或者自旋转移矩(spintransfertorque,stt)-mram、基于自旋电子磁结存储器的设备,基于磁隧道结(magnetictunnelingjunction,mtj)的设备、基于dw(domainwall,畴壁)和sot(spinorbittransfer,自旋轨道转移)的设备、基于半导体闸流管的存储器设备、或者上述项中的任何项的组合、或者其他存储器。存储器设备可以指管芯本身和/或指封装的存储器产品。在特定的实施例中,具有非易失性存储器的存储器组件可以符合jedec颁布的一个或多个标准,例如jesd218、jesd219、jesd220-1、jesd223b、jesd223-1、或者其他适当的标准(本文引用的jedec标准可在jedec.org获得)。33.通道可以指的是计算系统中的可以传输或发信号通知信息的任何介质。在计算系统的情境中,合法通道可以指系统设计者旨在用于信息传输的通道,而所有其他通道可被称为偶发通道。合法通道的示例包括以太网、共享存储器和ipc插座。资源争夺、cpu缓存的状态和功率消耗的变化都是偶发通道的示例。34.在安全性威胁模型的情境中,区分恶意对手可用来利用偶发通道的两种方法往往是有用的。如果对手控制了偶发通道的输入和输出两者,那么偶发通道就会作为隐秘通道发挥作用。如果对手不能对输入施加控制,而只能读取输出,那么偶发通道就充当边通道。例如,加密算法的实现可能无意中把敏感数据泄漏到边通道中,而对手正在监视边通道的输出。注意,合法通道和偶发通道是计算系统的属性,而边通道和隐秘通道是威胁模型的描述对手如何使用偶发通道的方面。35.为了发动瞬态执行攻击,对手尝试访问受害者的秘密,通过秘密通道传输该秘密,并且从秘密通道接收该秘密。在这种情境中,访问受害者的秘密和通过隐秘通道传输该秘密可被统称为披露工具(disclosuregadget)。注意,底层的偶发通道是作为隐秘通道运作的,因为对手同时控制着其输入和其输出。36.瞬态执行攻击可根据其对基于硬件的保护特征的影响而被进行分类。硬件保护域(在此上下文中简称为域)由保护边界内的代码和数据组成,该边界由硬件施行的访问控制机制(例如权限级别(环)、页表或保护密钥)来定义。域的示例包括进程、intelsoftwareguardextensions(intelsgx)飞地、虚拟机(virtualmachine,vm)、以及第0环操作系统(operatingsystem,os)代码。域也可以是通过网络、总线或其他硬件接口连接的不同机器或设备,其中网络/总线流量的内容构成合法通道,而传输的其他可测量属性(例如时延)可能会产生偶发通道。37.瞬态执行攻击可由披露工具和受害者/对手域之间的关系来表征。例如,如果披露工具在对手的域中,则瞬态执行攻击可被称为域绕过。如果披露工具在受害者的域中,则瞬态执行攻击可被称为跨域。如果披露工具在受害者的域内的被对手控制的沙盒中,那么瞬态执行攻击可被称为域内。38.用传统方法很难发现瞬态执行攻击(例如,有时也被称为推测性执行边通道),例如spectre和meltdown。可能有一些微妙的方式,通过这些方式低权限模式的行为控制着高权限模式的瞬态行为(例如,类似spectre),或者有一些微妙的方式,低权限模式的瞬态行为可揭示低权限软件不应当被允许读取的特权信息(例如,类似meltdown,或者其他域绕过瞬态执行攻击)。可基于特定的情况创建特定的检查器(例如,故障数据不应当更新分支预测器),但这种方案不具有可缩放性,要求验证器来识别所有要检查的情况,而且容易受到检查器中的错误的影响,这些错误导致其无法检测到问题。形式化检查器难以设置,可能要求开发新的工具,要求高度专业化的专业知识,而且往往不能缩放到复杂的芯片。39.一些实施例提供了仿真技术来测试处理器,以发现和缓解瞬态执行攻击。具体地,一些实施例提供了使用仿真状态(例如,新的偶发数据状态(标称为“z”),或者不关心状态(“x”))来发现瞬态执行攻击的技术。在仿真期间,当信号包含不应当对瞬态执行攻击可见的数据时,一些实施例将信号转换为偶发数据状态(例如,z或x)。然后,一些实施例可确定偶发数据状态(z/x)是否在整个核心/块/芯片中扩散,并且如果是,则为验证器提供工具,以进行调查来确定z/x的扩散是否指示出瞬态执行攻击。40.许多仿真工具支持的数据状态包括逻辑零状态(“0”),逻辑一状态(“1”),以及不关心状态(x)。仿真器的一些实施例为偶发数据状态(z)提供了第四数据状态。替代地,如果仿真工具不支持新的z状态,则一些实施例可利用不关心状态来有效地表示偶发数据,并且识别瞬态执行攻击,其中注入的x状态通过偶发通道扩散。有利的是,一些实施例可被应用于复杂逻辑设计,以少得多的人工努力来发现潜在的问题(例如,与利用特定检查器或形式检查器相比)。41.参考图1a至1c,方法100的一个实施例可包括在方框111运行逻辑设计的仿真,在方框113识别仿真逻辑设计中的一个或多个信号,这些信号包含不应当通过任何偶发通道可见的数据,并且在方框115在仿真运行的同时选择性地将识别的一个或多个信号转换为偶发数据状态。例如,在方框117,偶发通道可包括定时偶发通道、记录通道、性能监视通道和调试跟踪通道中的一个或多个。例如,定时偶发通道包括隐秘通道和边通道两者。本领域的技术人员将会明白,定时的细微变化可能是对定时偶发通道的指示。定时偶发通道的非限制性示例包括:如果不应当可见的数据是奇数,则与该数据是偶数相比,后来的加载会晚一个周期执行,特定的条目出现在分支预测器中,特定的条目出现在第一级(l1)缓存中,特定的最近最少使用(leastrecentlyused,lru)条目被标记为已使用,等等。42.在一些实施例中,在方框119,偶发数据状态可对应于不关心状态。替代地,在方框121,偶发数据状态可对应于与逻辑零状态、逻辑一状态和不关心状态不同的状态。方法100的一些实施例还可包括在方框123处提供一个或多个注入器以与仿真的逻辑设计一起运行,并且在方框125处对该一个或多个注入器进行编程以便在仿真运行的同时将所识别的一个或多个信号选择性地转换为偶发数据状态。方法100还可包括在方框127处确定与所识别的一个或多个信号相关联的偶发数据状态是否已在仿真逻辑设计内扩散,然后如果在方框127处确定偶发数据状态已在仿真逻辑设计内扩散,则在方框129处确定仿真逻辑设计是否易受瞬态执行攻击。43.方法100的一些实施例还可包括在方框131处将与故障加载相关联的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,在方框133处将缓冲器中的具有无效信息的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,和/或在方框135处将具有无效信息的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号。例如,与故障加载相关联的信号可包括由故障加载返回的数据(例如,返回到从属操作),和/或返回到故障加载的数据(例如,由存储器集群返回到故障加载微操作的目的地的数据)。方法100还可包括在方框137处将在比当前模式权限低的模式(例如,第3环相对于第0环)中创建的预测器条目识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,和/或在方框139处将源自于当前权限下不允许的读取的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号。44.方法100的实施例可被实现在系统、装置、计算机、设备等等中,例如本文描述的那些。更具体而言,方法100的硬件实现方式可包括可配置逻辑,例如可编程逻辑阵列(programmablelogicarray,pla)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、或者使用诸如专用集成电路(applicationspecificintegratedcircuit,asic)、互补金属氧化物半导体(complementarymetaloxidesemiconductor,cmos)或者晶体管-晶体管逻辑(transistor-transistorlogic,ttl)技术之类的电路技术的固定功能逻辑硬件,或者这些的任何组合。混合硬件实现方式包括静态动态片上系统(soc)可重配置设备,从而控制流和数据路径实现用于功能的逻辑。45.替代地或者附加地,方法100可作为存储在机器可读或计算机可读存储介质中的一组逻辑指令被实现在一个或多个模块中以被处理器或计算设备执行,所述介质例如是ram、rom、prom、固件、闪存,等等。例如,可以用一种或多种os适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如python、perl、java、smalltalk、c++、c#、vhdl、verilog、systemc等等,还包括传统的过程式编程语言,比如“c”编程语言或类似的编程语言。46.例如,方法100可被实现在计算机可读介质上。方法100的实施例或一些部分可被实现在固件、应用(例如,通过应用编程接口(applicationprogramminginterface,api))或者在操作系统(operatingsystem,os)上运行的驱动器软件中。此外,逻辑指令可包括汇编指令、指令集架构(instructionsetarchitecture,isa)指令、数据集架构(datasetarchitecture,dsa)命令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、个性化电子电路和/或硬件原生的其他结构组件(例如,主机处理器、中央处理单元/cpu、微控制器,摩尔机、米利机,等等)的状态信息。47.机器可读介质(例如,其可包括一个或多个非暂时性机器可读介质)的一个实施例可包括多个指令,这些指令响应于在计算设备上被执行,使得计算设备运行逻辑设计的仿真,识别仿真逻辑设计中的一个或多个信号,这些信号包含不应当通过任何偶发通道可见的数据,并且在仿真运行的同时选择性地将所识别的一个或多个信号转换为偶发数据状态。例如,偶发通道包括定时偶发通道、记录通道、性能监视通道和调试跟踪通道中的一个或多个。在机器可读介质的一些实施例中,偶发数据状态可对应于不关心状态。替代地,偶发数据状态可对应于与逻辑零状态、逻辑一状态和不关心状态不同的状态。48.机器可读介质的一些实施例可包括多个另外指令,这些另外指令响应于在计算设备上被执行,使得计算设备提供一个或多个注入器来与仿真逻辑设计一起运行,并且对该一个或多个注入器进行编程以便在仿真运行的同时将所识别的一个或多个信号选择性地转换为偶发数据状态。机器可读介质的实施例还可包括多个另外指令,这些另外指令响应于在计算设备上被执行,使得计算设备确定与所识别的一个或多个信号相关联的偶发数据状态是否已在仿真逻辑设计内扩散,并且如果确定偶发数据状态已在仿真逻辑设计内扩散,则确定仿真逻辑设计是否易受瞬态执行攻击。49.机器可读介质的一些实施例可包括多个另外指令,这些另外指令响应于在计算设备上被执行,使得计算设备将数据返回到故障加载的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,将缓冲器中的具有无效信息的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,和/或将具有无效信息的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号。机器可读介质的实施例还可包括多个另外指令,这些另外指令响应于在计算设备上被执行,使得计算设备将在比当前模式权限低的模式中创建的预测器条目识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,和/或将源自于当前权限下不允许的读取的信号识别为仿真逻辑设计中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号。50.参考图2,装置200的实施例可包括存储仿真模型的存储器223、与存储器223通信耦合的处理器221、以及与处理器221和存储器223通信耦合的逻辑225。逻辑225可被配置为在仿真模型上运行仿真,识别仿真模型中的一个或多个信号,这些信号包含不应当通过任何偶发通道可见的数据,并且在仿真运行的同时选择性地将所识别的一个或多个信号转换为偶发数据状态。例如,偶发通道可包括定时偶发通道、记录通道、性能监视通道和调试跟踪通道中的一个或多个。在一些实施例中,偶发数据状态可对应于不关心状态。替代地,偶发数据状态可对应于与逻辑零状态、逻辑一状态和不关心状态不同的状态。51.在一些实施例中,逻辑225还可被配置为提供一个或多个注入器来与仿真模型一起运行,并且对该一个或多个注入器进行编程以便在仿真运行的同时将所识别的一个或多个信号选择性地转换为偶发数据状态。逻辑225还可被配置为确定与所识别的一个或多个信号相关联的偶发数据状态是否已在仿真模型内扩散,并且如果确定偶发数据状态已在仿真模型内扩散,则确定仿真逻辑设计是否易受瞬态执行攻击。52.在一些实施例中,逻辑225还可被配置为将数据返回到故障加载的信号识别为仿真模型中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,将缓冲器中的具有无效信息的信号识别为仿真模型中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,和/或将具有无效信息的信号识别为仿真模型中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号。逻辑225还可被配置为将在比当前模式权限低的模式中创建的预测器条目识别为仿真模型中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号,和/或将源自于当前权限下不允许的读取的信号识别为仿真模型中的一个或多个信号中的包含不应当通过任何偶发通道可见的数据的一个信号。53.逻辑225的实施例可被实现在系统、装置、计算机、设备等等中,例如本文描述的那些。更具体而言,逻辑225的硬件实现方式可包括可配置逻辑,例如pla、fpga、cpld,或者利用诸如asic、cmos或ttl技术之类的电路技术实现在固定功能逻辑硬件中,或者这些的任何组合。替代地或者附加地,逻辑225可作为存储在机器可读或计算机可读存储介质中的一组逻辑指令被实现在一个或多个模块中以被处理器或计算设备执行,所述介质例如是ram、rom、prom、固件、闪存,等等。例如,可以用一种或多种os适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如python、perl、java、smalltalk、c++、c#、vhdl、verilog、systemc等,还包括传统的过程式编程语言,比如“c”编程语言或类似的编程语言。处理器221的实施例可包括通用处理器、专用处理器、中央处理器单元(centralprocessorunit,cpu)、执行单元、控制器、微控制器,等等。在一些实施例中,存储器223、逻辑225和/或其他系统存储器的全部或一些部分可位于包括处理器221在内的各种组件中或者与各种组件位于相同位置(例如,在同一管芯上、在同一封装中、在同一机壳中,等等)。54.例如,逻辑225可被实现为可包括一个或多个衬底的半导体装置上的电路,其中该电路耦合到该一个或多个衬底。在一些实施例中,电路可至少部分被实现在(一个或多个)半导体衬底(例如,硅、蓝宝石、砷化镓,等等)上的可配置逻辑和固定功能硬件逻辑的一个或多个中。例如,电路可包括与(一个或多个)衬底耦合的晶体管阵列和/或其他集成电路组件,其中晶体管沟道区域位于(一个或多个)衬底内。电路和(一个或多个)衬底之间的界面可能不是突变结。电路也可被认为包括在(一个或多个)衬底的初始晶圆上生长的外延层。55.处理器221的实施例可包括例如核心990(图5b)、核心1102a-n(图7、图11)、处理器1210(图8)、协处理器1245(图8)、处理器1370(图9-图10)、处理器/协处理器1380(图9-图10)、协处理器1338(图9-图10)、协处理器1520(图11)、和/或处理器1614、1616(图12)。56.为了对在启动时发生的未知状态正确地建模,许多寄存器传送级(registertransferlevel,rtl)仿真器通常不仅支持状态0和1,而且还支持x状态(通常称为不关心状态)。x状态可以是0或者1,并且对于x状态如何与其他值相结合,应用了规则。当处理器在仿真期间第一次加电时,大多数元件都处于x状态中。处理器模型一般包括逻辑或机制,来将系统移动到定义的0和1的状态(例如,以去除x)。在一些实施例中,相应地,x状态可被重新利用为偶发数据状态。57.参考图3,方法300的一个实施例可包括在方框311处首先对仿真模型执行安全性审查以识别不应当通过瞬态执行攻击而可见的内部信号。这种信号的一个示例包括返回到故障加载的数据(例如,与meltdown/l1tf攻击有关)。这种信号的另一个示例包括在缓冲器或信号中的无效字节(例如,与mds攻击有关)。这种信号的另一个示例包括在较低权限模式中创建的预测器条目(例如,与spectre变体2攻击有关)。本领域的技术人员将想到这种信号的其他示例。然后,方法300可包括在方框313处添加与仿真模型一起运行的注入器(例如,注入数据的工具),并且在方框315处用x替换所识别的信号。例如,注入器可被实现为构建到仿真模型中的插桩。附加地或者替代地,注入器可被实现为仿真控制过程或文件的一部分,以便在仿真的某个时间或者在某个事件之后转换所识别的信号。58.如果仿真模型的缓解是有效的,那么在仿真继续运行的同时,x就不会扩散,这表明仿真模型具有完全相同的定时行为,而不管值如何。换句话说,原始信号值应当是不关心,并且将信号转换为不关心状态验证了事实上信号仍然是不关心,而没有扩散。即使是仿真模型的缓解中的非常微小的缺陷也可能导致x在整个仿真模型中的扩散。因为仿真模型一般包含许多检查器,这些检查器在x扩散时会使得测试失败(例如,如果什么操作被安排为x或者x扩散到总线上的有效数据),因此x的扩展很快就会被这种检查器检测到。然后可手动审查仿真结果,以发现x的扩散,并且可以改变硬件行为以避免失败(例如,如果该行为是一个问题的话),或者可以改变检查器以避免在这种情况下失败(例如,如果该行为不是一个问题的话)。59.参考图4,仿真环境400的一个实施例可包括由交叉编译器412编译的基准软件410,以及由仿真编译器414编译的硬件设计模型416。编译器412、414的输出被提供给与存储器420耦合的处理器418,以便在被仿真的硬件设计模型416上执行仿真器422。例如,硬件设计模型416可利用硬件设计语言(hardwaredesignlanguage,hdl)来实现寄存器传送级(rtl)仿真和分析。注入器424可向rtl逻辑中注入偶发数据状态,以产生一个或多个日志文件426来用于仿真。日志文件426可被分析器428处理,以便对仿真进行评估。60.在一些实施例中,当仿真器422确定信号包含不应当通过任何偶发通道可见的数据时,仿真器422可将该信号转换为偶发数据状态。例如,偶发通道包括定时偶发通道,例如所有边通道和隐秘通道。偶发通道还包括事件记录,例如性能监视事件或调试跟踪。也可通过读取偶发通道并随后将数据读取分支来覆盖这种偶发数据。相应地,一些类型的记录通道也可以是定时偶发通道。在一些实施例中,仿真器422可将不关心状态用于偶发数据状态。61.仿真器422可识别域绕过瞬态执行攻击,其中信号的转换是因为该信号是对于当前权限不允许的读取的结果。仿真器422还可转换一信号,因为该信号受到可能是对手的较低权限软件的影响(例如,由应用填充的分支预测器条目可在切换到安全模式时被注入偶发数据状态,并且在返回到较低权限并且可能是恶意的应用时从偶发数据状态恢复到其先前的值)。仿真器422也可转换一信号,因为该信号不应当被使用,因为处理器418没有确保其中没有敏感数据。例如,仿真器422可将所有无效寄存器(例如,没有重命名分配表(renameallocationtable,rat)条目指向该寄存器)转换为偶发数据状态,以确保这些寄存器不创建偶发通道(例如,无效寄存器可能不经常包含秘密,但有时它们可能包含)。62.处理器418的实施例可包括例如核心990(图5b)、核心1102a-n(图7、图11)、处理器1210(图8)、协处理器1245(图8)、处理器1370(图9-图10)、处理器/协处理器1380(图9-图10)、协处理器1338(图9-图10)、协处理器1520(图11)、和/或处理器1614、1616(图12)。63.许多硬件设计模型416包括围绕模型的许多(例如,数百个)断言,以测试各种事情。例如,mux可能没有同时选择多个选项(例如,输入是一个热的),并且如果发生这种情形,则可能会报告异常。在逻辑设计和/或仿真模型中会检测到各种各样的非法或意外情况。一般来说,如果仿真遇到0或1以外的数据状态(例如,x或z),则非法/意外情况将失败。此外,仿真模型可被构造成使得模型的输入和输出包括断言,该断言被添加来确保所有有效的事务和字节不是x或z。当仿真由于断言看到不可接受的x或z而失败时,那么验证器可分析该失败并且回溯偶发数据状态以找到来源。64.如果验证器断定这些信号处于偶发数据状态中是可接受的,则一些断言可被修改以允许偶发数据状态。例如,如果逻辑设计能够保证对于无效的寄存器不会发生读取,即使是从当前非有效(例如,没有rat条目指向该寄存器)的寄存器条目暂时发生,那么如果寄存器不是有效的(例如,没有重命名寄存器指向它们),则寄存器文件中的寄存器被标记为偶发数据状态可能是可接受的。在这种情况下,围绕寄存器文件的断言可能需要被改变,以允许寄存器中的偶发数据状态,只要它们不是有效的。65.虽然前面的示例集中在瞬态执行攻击,但实施例也可用于检测可能暴露敏感数据的其他用途的偶发通道。例如,密码学使用可检测到基于被处理的数据值而具有不同性能的解密和/或加密指令。例如,如果解密指令对偶数和奇数值表现出不同的时延,那么该解密指令作为密码密钥可能更容易受到攻击,因为不同的时延可能会揭示出密钥的最低有效位。鉴于本技术的好处,本领域的技术人员将想到其他用途。66.本领域的技术人员将会明白,各种各样的设备都可从上述实施例中受益。以下示例性核心架构、处理器和计算机架构是可以有益地纳入本文描述的技术的实施例的设备的非限制性示例。67.示例性核心架构、处理器和计算机架构68.可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实现方式可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用无序核心;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可以包括:1)包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用无序核心的cpu;以及2)包括主要旨在用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,这些架构可以包括:1)协处理器在与cpu分开的芯片上;2)协处理器在与cpu相同的封装中、分开的管芯上;3)协处理器与cpu在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可以在同一管芯上包括所描述的cpu(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及附加的功能。接下来描述示例性核心架构,然后是对示例性处理器和计算机架构的描述。69.示例性核心架构70.有序和无序核心框图71.图5a是根据本发明的实施例图示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。图5b是根据本发明的实施例图示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图。图5a-5b中的实线框图示了有序管线和有序核心,而虚线框的可选添加图示了寄存器重命名、无序发出/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。72.在图5a中,处理器管线900包括提取级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为调遣或发出)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922、以及提交级924。73.图5b示出了处理器核心990包括与执行引擎单元950耦合的前端单元930,并且执行引擎单元950和前端单元930两者都耦合到存储器单元970。核心990可以是精简指令集计算(reducedinstructionsetcomputing,risc)核心、复杂指令集计算(complexinstructionsetcomputing,cisc)核心、超长指令字(verylonginstructionword,vliw)核心、或者混合或替代核心类型。作为另外一个选项,核心990可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(generalpurposecomputinggraphicsprocessingunit,gpgpu)核心、图形核心,等等。74.前端单元930包括分支预测单元932,分支预测单元932耦合到指令缓存单元934,指令缓存单元934耦合到指令转化后备缓冲器(translationlookasidebuffer,tlb)936,指令tlb936耦合到指令提取单元938,指令提取单元938耦合到解码单元940。解码单元940(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可利用各种不同的机制来实现解码单元940。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmablelogicarray,pla)、微代码只读存储器(readonlymemory,rom),等等。在一个实施例中,核心990包括微代码rom或其他介质,其为某些宏指令存储微代码(例如,在解码单元940中或者以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。75.执行引擎单元950包括重命名/分配器单元952,重命名/分配器单元952耦合到引退单元954和一组一个或多个调度器单元956。(一个或多个)调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元956耦合到(一个或多个)物理寄存器文件单元958。(一个或多个)物理寄存器文件单元958中的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,(一个或多个)物理寄存器文件单元958包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元958与引退单元954交叠以说明可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器图谱和寄存器的池;等等)。引退单元954和(一个或多个)物理寄存器文件单元958耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可以在各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器文件单元958和(一个或多个)执行集群960被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点管线、和/或存储器访问管线,它们各自具有其自身的调度器单元、物理寄存器文件单元和/或执行集群——并且在单独的存储器访问管线的情况下,实现了某些实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分开管线的情况下,这些管线中的一个或多个可以是无序发出/执行,并且其余的是有序的。76.存储器访问单元964的集合耦合到存储器单元970,存储器单元970包括数据tlb单元972,数据tlb单元972耦合到数据缓存单元974,数据缓存单元974耦合到第2级(l2)缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元970中的数据tlb单元972。指令缓存单元934进一步耦合到存储器单元970中的第2级(l2)缓存单元976。l2缓存单元976耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。77.作为示例,示例性寄存器重命名、无序发出/执行核心架构可以实现管线900如下:1)指令提取938执行提取和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(一个或多个)调度器单元956执行调度级912;5)(一个或多个)物理寄存器文件单元958和存储器单元970执行寄存器读取/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(一个或多个)物理寄存器文件单元958执行写回/存储器写入级918;7)在异常处理级922中可涉及各种单元;并且8)引退单元954和(一个或多个)物理寄存器文件单元958执行提交级924。78.核心990可以支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的mips技术公司的mips指令集;加州森尼维尔市的arm控股公司的arm指令集(带有可选的附加扩展,例如neon)),包括本文描述的(一个或多个)指令。在一个实施例中,核心990包括逻辑来支持压缩数据指令集扩展(例如,avx1、avx2),从而允许了被许多多媒体应用使用的操作被利用压缩数据来执行。79.应当理解,核心可以支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可以按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式提取和解码,然后是同时多线程处理,例如像hyperthreading技术中那样)。80.虽然是在无序执行的情境中描述寄存器重命名的,但应当理解,寄存器重命名可被用在有序架构中。虽然处理器的图示实施例还包括分开的指令和数据缓存单元934/974和共享的l2缓存单元976,但替代实施例可以针对指令和数据两者具有单个内部缓存,例如,第1级(l1)内部缓存或者多级别的内部缓存。在一些实施例中,系统可包括内部缓存与在核心和/或处理器外部的外部缓存的组合。替代地,所有缓存可在核心和/或处理器外部。81.具体示例性有序核心架构82.图6a-6b图示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器i/o接口和其他必要i/o逻辑进行通信,这取决于应用。83.图6a是根据本发明的实施例的单个处理器核心及其与片上互连网络1002的连接以及其第2级(l2)缓存本地子集1004的框图。在一个实施例中,指令解码器1000支持具有压缩数据指令集扩展的x86指令集。l1缓存1006允许低时延访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别是标量寄存器1012和向量寄存器1014)并且在它们之间传送的数据被写入到存储器,然后被从第1级(l1)缓存1006读回,但本发明的替代实施例可以使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。84.l2缓存的本地子集1004是全局l2缓存的一部分,全局l2缓存被划分成单独的本地子集,每个处理器核心有一个本地子集。每个处理器核心具有到其自身的l2缓存本地子集1004的直接访问路径。处理器核心所读取的数据被存储在其l2缓存子集1004中并且可被快速访问,这与其他处理器核心访问其自身的本地l2缓存子集并行进行。处理器核心所写入的数据被存储在其自身的l2缓存子集1004中并且在必要时被从其他子集冲刷出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、l2缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个环状数据路径在每方向上是1012位宽的。85.图6b是根据本发明的实施例的图6a中的处理器核心的一部分的扩展视图。图6b包括l1缓存1006的l1数据缓存1006a部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽的向量处理单元(vectorprocessingunit,vpu)(参见16宽alu1028),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。vpu支持利用调配单元1020调配寄存器输入,利用数值转换单元1022a-b进行的数值转换,以及利用复制单元1024对存储器输入进行的复制。写入掩码寄存器1026允许断言结果向量(predicatingresultingvector)写入。86.图7是根据本发明的实施例的处理器1100的框图,处理器1100可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形。图7中的实线框图示了具有单个核心1102a、系统代理1110和一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加图示了具有多个核心1102a-n、系统代理单元1110中的一组一个或多个集成存储器控制单元1114以及专用逻辑1108的替代处理器1100。87.因此,处理器1100的不同实现方式可以包括:1)其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心)并且核心1102a-n是一个或多个通用核心(例如,通用有序核心、通用无序核心或者两者的组合)的cpu;2)其中核心1102a-n是大量的主要旨在用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心1102a-n是大量的通用有序核心的协处理器。因此,处理器1100可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量集成众核(manyintegratedcore,mic)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分和/或可以利用若干个工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是bicmos、cmos或nmos。88.存储器层次体系可以包括核心1102a-n内的各自的一个或多个级别的缓存1104a-n、一组或者一个或多个共享缓存单元1106/以及耦合到该组集成存储器控制器单元1114的外部存储器(未示出)。该组共享缓存单元1106可包括一个或多个中间级别缓存(例如第2级(l2)、第3级(l3)、第4级(4)或者其他级别的缓存),最后一级缓存(lastlevelcache,llc),和/或这些的组合。虽然在一个实施例中基于环的互连单元1112互连集成图形逻辑1108、该组共享缓存单元1106以及系统代理单元1110/(一个或多个)集成存储器控制器单元1114,但替代实施例也可以使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元1106和核心1102a-n之间维持一致性。89.在一些实施例中,核心1102a-n中的一个或多个能够进行多线程处理。系统代理1110包括协调和操作核心1102a-n的那些组件。系统代理单元1110可包括例如功率控制单元(powercontrolunit,pcu)和显示单元。pcu可以是或者可以包括对核心1102a-n和集成图形逻辑1108的功率状态进行调节所需要的逻辑和组件。显示单元用于驱动一个或多个在外部连接的显示器。90.核心1102a-n就架构指令集而言可以是同构的或者异构的;也就是说,核心1102a-n中的两个或更多个可能够执行同一指令集,而其他的核心可能够只执行该指令集的子集或者不同的指令集。91.示例性计算机架构92.图8-图11是示例性计算机架构的框图。本领域中已知的用于膝上型电脑、桌面型电脑、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digitalsignalprocessor,dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置,也是合适的。一般而言,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是合适的。93.现在参考图8,示出了根据本发明的一个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,它们耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(graphicsmemorycontrollerhub,gmch)1290和输入/输出中枢(input/outputhub,ioh)1250(它们可在分开的芯片上);gmch1290包括与存储器1240和协处理器1245耦合的存储器和图形控制器;ioh1250将输入/输出(i/o)设备1260耦合到gmch1290。替代地,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与ioh1250在单个芯片中。94.附加的处理器1215的可选性在图8中用虚线表示。每个处理器1210、1215可包括本文描述的处理核心中的一个或多个并且可以是处理器1100的某个版本。95.存储器1240可例如是动态随机访问存储器(dynamicrandomaccessmemory,dram)、相变存储器(phasechangememory,pcm)、或者两者的组合。对于至少一个实施例,控制器中枢1220经由多点分支总线(例如前端总线(frontsidebus,fsb))、点到点接口(例如quickpathinterconnect(qpi))或者类似的连接1295与(一个或多个)处理器1210、1215进行通信。96.在一个实施例中,协处理器1245是专用处理器,例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可包括集成的图形加速器。97.在物理资源1210、1215之间,就包括架构特性、微架构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。98.在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为应当由附接的协处理器1245执行的类型。因此,处理器1210在协处理器总线或其他互连上向协处理器1245发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1245接受并且执行接收到的协处理器指令。99.现在参考图9,其中示出了根据本发明的实施例的第一更具体示例性系统1300的框图。如图9中所示,多处理器系统1300是点到点互连系统,并且包括经由点到点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一者可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一个实施例中,处理器1370和1380分别是处理器1210和协处理器1245。100.处理器1370和1380被示为分别包括集成存储器控制器(integratedmemorycontroller,imc)单元1372和1382。处理器1370还包括点到点(p-p)接口1376和1378作为其总线控制器单元的一部分;类似地,第二处理器1380包括p-p接口1386和1388。处理器1370、1380可以利用p-p接口电路1378、1388经由点到点(p-p)接口1350交换信息。如图9中所示,imc1372和1382将处理器耦合到各自的存储器,即存储器1332和存储器1334,存储器1332和存储器1334可以是在本地附接到各自处理器的主存储器的一部分。101.处理器1370、1380可以各自利用点到点接口电路1376、1394、1386、1398经由个体p-p接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339和互连1392与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器,等等。102.共享缓存(未示出)可以被包括在任一处理器中,或者在两个处理器之外,但经由p-p互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。103.芯片组1390可以经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(peripheralcomponentinterconnect,pci)总线,或者诸如快速pci总线或另一种第三代i/o互连总线之类的总线,虽然本发明的范围不限于此。104.如图9中所示,各种i/o设备1314可耦合到第一总线1316以及总线桥1318,总线桥1318将第一总线1316耦合到第二总线1320的。在一个实施例中,一个或多个附加的处理器1315,例如协处理器、高吞吐量mic处理器、gpgpu、加速器(例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或者任何其他处理器,耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(lowpincount,lpc)总线。各种设备可以耦合到第二总线1320,包括例如键盘和/或鼠标1322、通信设备1327和存储单元1328,例如硬盘驱动器或者其他大容量存储设备,其中该存储单元1328在一个实施例中可包括指令/代码和数据1330。另外,音频i/o1324可耦合到第二总线1320。注意,其他架构是可能的。例如,取代图9的点到点架构,系统可以实现多点分支总线或者其他这种架构。105.现在参考图10,其中示出了根据本发明的实施例的第二更具体示例性系统1400的框图。图9和图10中的相似元素带有相似的标号,并且图9的某些方面被从图10中省略以避免模糊图10的其他方面。106.图10图示出处理器1370、1380可以分别包括集成存储器和i/o控制逻辑(“cl”)1472和1482。因此,cl1472、1482包括集成存储器控制器单元并且包括i/o控制逻辑。图10图示出不仅存储器1332、1334耦合到cl1472、1482,而且i/o设备1414也耦合到控制逻辑1472、1482。传统i/o设备1415耦合到芯片组1390。107.现在参考图11,其中示出了根据本发明的实施例的soc1500的框图。图7中的相似元素带有相似的标号。另外,虚线框是更先进soc上的可选特征。在图11中,(一个或多个)互连单元1502耦合到:应用处理器1510,其包括一组一个或多个核心1102a-n和(一个或多个)共享缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机访问存储器(staticrandomaccessmemory,sram)单元1530;直接存储器访问(directmemoryaccess,dma)单元1532;以及显示单元1540,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1520包括专用处理器,例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器,等等。108.可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的机制的实施例。本发明的实施例可以被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备的可编程系统上执行的计算机程序或程序代码。109.程序代码,例如图9中所示的代码1330,可以被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可以按已知的方式被应用到一个或多个输出设备。对于本技术的目的,处理系统包括任何具有处理器的系统,例如;数字信号处理器(digitalsignalprocessor,dsp)、微控制器、专用集成电路(applicationspecificintegratedcircuit,asic)、或者微处理器。110.可以用高级别程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者经解译的语言。111.至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“ip核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。112.这种机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compactdiskread-onlymemory,cd-rom)、可改写致密盘(compactdiskrewritable,cd-rw)、以及磁光盘),半导体设备(诸如,只读存储器(read-onlymemory,rom),诸如动态随机访问存储器(dynamicrandomaccessmemory,dram)、静态随机访问存储器(staticrandomaccessmemory,sram)之类的随机访问存储器(randomaccessmemory,ram),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom),闪速存储器,电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom),相变存储器(phasechangememory,pcm)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。113.因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(hardwaredescriptionlanguage,hdl)。这种实施例也可被称为程序产品。114.仿真(包括二进制转化、代码变形等等)115.在一些情况下,指令转换器可以用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上一部分在处理器外。116.图12是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然可替代地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图12示出了高级别语言1602的程序可被利用x86编译器1604来编译以生成x86二进制代码1606,x86二进制代码1606可以由具有至少一个x86指令集核心的处理器1616原生执行。具有至少一个x86指令集核心的处理器1616表示任何这样的处理器:这种处理器可以通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器1604表示可操作来生成x86二进制代码1606(例如,目标代码)的编译器,x86二进制代码1606在带有或不带有附加的链接处理的情况下可以在具有至少一个x86指令集核心的处理器1616上被执行。类似地,图12示出了高级别语言的程序1602可被利用替代指令集编译器1608来编译以生成替代指令集二进制代码1610,替代指令集二进制代码1610可以由没有至少一个x86指令集核心的处理器1614(例如,具有执行加州森尼维尔市的mips技术公司的mips指令集和/或执行加州森尼维尔市的arm控股公司的arm指令集的核心的处理器)原生执行。指令转换器1612用于将x86二进制代码1606转换成可由没有x86指令集核心的处理器1614原生执行的代码。这个转换后的代码不太可能与替代指令集二进制代码1610相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替代指令集的指令构成。因此,指令转换器1612表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或者其组合。117.本文描述了用于以偶发数据状态进行仿真的技术和架构。在以上描述中,出于说明目的,记载了许多具体细节以便提供对某些实施例的透彻理解。然而,本领域技术人员将会清楚,可以在没有这些具体细节的情况下实践某些实施例。在其他实例中,以框图形式示出了结构和设备以避免模糊描述。118.本说明书中提及“一个实施例”或“一个实施例”意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中各种地方出现短语“在一个实施例中”不一定都指的是同一个实施例。119.这里的详细描述的一些部分是按计算机存储器内的数据位上的操作的算法和符号表示来呈现的。这些算法描述和表示是被计算领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的手段。算法在这里并且一般而言被设想为是通向期望结果的步骤的自洽序列。这些步骤是要求对物理量的物理操纵的那些步骤。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时,主要是出于习惯用法的原因,将这些信号称为位、值、元素、符号、字符、项、数字等等,是方便的。120.然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联,并且只是应用到这些量的方便标签。除非从这里的论述清楚看出另有具体声明,否则要明白在整个说明书各处,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”之类的术语的论述指的是计算机系统或类似的电子计算设备的动作和过程,这些动作和过程将计算机系统的寄存器和存储器内的被表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其他这种信息存储、传输或显示设备内的被类似地表示为物理量的其他数据。121.某些实施例还涉及用于执行这里的操作的装置。此装置可以是为要求的目的而专门构造的,或者其可包括由存储在计算机中的计算机程序选择性地激活或重配置的通用计算机。这种计算机程序可被存储在计算机可读存储介质中,例如但不限于任何类型的盘(包括软盘、光盘、cd-rom和磁光盘)、只读存储器(read-onlymemory,rom)、随机访问存储器(randomaccessmemory,ram)(例如动态ram(dynamicram,dram))、eprom、eeprom、磁卡或光卡、或者适合用于存储电子指令并且耦合到计算机系统总线的任何类型的介质。122.本文给出的算法和显示并不内在地与任何特定的计算机或其他装置相关。各种通用系统可与根据本文的教导的程序一起使用,或者可证明,构造更专门的装置来执行所要求的方法步骤,是方便的。各种这些系统的必需结构将从本文的描述中显现。此外,某些实施例不是参考任何特定的编程语言来描述的。将会明白,可以使用各种编程语言来实现如本文所述的这种实施例的教导。123.除了本文描述的以外,还可对所公开的实施例及其实现方式做出各种修改,而不脱离其范围。因此,应当从说明意义而不是限制意义上来解释本文的说明和示例。应当仅通过参考所附权利要求来衡量本发明的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1