用于知识产权块的标准化接口的制作方法

文档序号:23469570发布日期:2020-12-29 13:09阅读:88来源:国知局
用于知识产权块的标准化接口的制作方法
本公开一般涉及半导体装置领域,并且更特别地但非排它地,涉及用于提供针对知识产权块的标准化接口的系统和方法。
背景技术
:多处理器系统正变得越来越普遍。在现代世界中,计算资源对人类生活扮演着比以往更集成的作用。随着计算机变得日益增长得普遍存在,控制从电网到大型工业机器以及个人计算机到灯泡的一切,对比以往更强能力的处理器的需求增加了。附图说明当与附图一起阅读时,从以下详述的描述中最好地理解本公开。强调的是,根据工业中的标准实践,各种特征不一定按比例绘制,并且仅用于说明目的。在明确或隐含地示出了比例的情况下,它仅提供一个说明性示例。在其他实施例中,为了讨论的清楚性,各种特征的尺寸可以任意地增加或减少。图1是片上系统(soc)的框图。图2示出了具有多个固件加载接口的soc,其也称为固件仪表板。图3示出了提供知识产权(ip)固件的单阶段和多阶段加载两者的soc。图4示出了提供固件加载器的方面的soc。图5示出了提供固件验证器的方面的soc。图6是示出固件仪表板的使用的soc的选择的方面的框图。图7a-7b示出了示例信号流。图8a示出了具有拉模型的装置。图8b示出了具有推模型的装置。图9是示出固件仪表板的特定方面的soc的选择的方面的框图。图10示出了仪表板基底和加载器基底。图11a-11b是示出根据本说明书的一个或多个示例的通用向量友好指令格式及其指令模板的框图。图12a-12d是示出根据本说明书的一个或多个示例的示例特定矢量友好指令格式的框图。图13是根据本说明书的一个或多个示例的寄存器架构的框图。图14a是示出根据本说明书的一个或多个示例的示例有序流水线和对无序发布/执行流水线重命名的示例寄存器两者的框图。图14b是示出根据本说明书的一个或多个示例的要包括在处理器中的有序架构核的示例和对无序发布/执行架构核重命名的示例寄存器两者的框图。图15a-15b示出了根据本发明的一个或多个示例的更特定的有序核架构的框图,所述核将会是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个。图16是根据本说明书的一个或多个示例的可以具有多于一个核、可以具有集成存储器控制器以及可以具有集成图形的处理器的框图。图17-20是根据本说明书的一个或多个示例的计算机架构的框图。图21是根据本说明书的一个或多个示例的对照使用软件指令转化器来将源指令集中的二进制指令转化成目标指令集中的二进制指令的框图。具体实施方式以下公开提供了用于实现本公开的不同特征的许多不同实施例或示例。下面描述部件和布置的特定示例以简化本公开。当然,这些仅仅是示例,而不意图是限制性的。此外,本公开可能在各种示例中重复参考数字和/或字母。这种重复是为了简单性和清楚性的目的,并且其本身不表示所讨论的各种实施例和/或配置之间的关系。不同的实施例可以具有不同的优点,并且不一定要求任何实施例的特定的优点。集成电路(例如,片上系统(soc)、微处理器、微控制器和其他系统)的设计者可使用知识产权(ip)块来简化系统设计。ip块是模块化的、自包含的硬件块,其可以容易地集成到设计中。因为ip块是模块化的和自包含的,所以集成电路(ic)设计者只需要“插入”ip块以使用ip块的功能性。系统设计者然后可以进行到输入和输出的适当连接。ip块经常是“黑盒子”。换句话说,使用ip块的系统集成商可能不知道,并且不需要知道ip块的特定实现细节。实际上,ip块可以作为专有第三方单元来提供,而系统集成商不深入了解ip块的设计。例如,设计用于智能电话的soc的系统集成商可以使用除处理器核之外的ip块,诸如存储器控制器、非易失性存储器(nvm)控制器、wi-fi、蓝牙、gps、第四或第五代网络(4g或5g)、音频处理器、视频处理器、图像处理器、图形引擎、图形处理单元(gpu)引擎、安全性控制器和许多其他ip块。在许多情况下,这些ip块中的每个具有其自己的嵌入式微控制器,并且所述微控制器具有其自己的架构、指令集和固件加载要求。因为不存在标准化的微控制器架构或固件加载要求的集合,所以可以针对每个ip块设计定制的固件加载过程。在说明性示例中,soc集成商将ip块与跨大范围的供应方、架构、总线接口和引导时间特性内部和外部设计的控制器一起集成。这些都可以特别是相对于在ip块的微控制器上运行的固件的加载彼此独立地设计。目前没有相对于ip块固件加载机制存在的硬件标准。这可使与soc的ip集成困难且昂贵。对ip固件加载的定制流程的要求具有缺点。例如,它阻止了具有不同ip块的设计的重用。在一些实例中,可能发生供应方锁定,因为soc已经围绕特定供应方的ip块而设计。通过来自不同供应方的功能性等同的ip块替换ip块可能是昂贵的,因为固件加载机制需要被完全重新设计。这增加了soc和软件集成的成本。它还增加了对安全性验证所要求的努力,并且总体上增加了安全性开发生命周期(sdl)的所有阶段的成本。本说明书描述了固件加载接口(也称为“仪表板”),其提供用于将固件加载到ip块的标准机制。硬件仪表板可以在ip块内内部提供,或者为了与缺少固件仪表板的传统ip块兼容,固件仪表板本身可以作为单独的ip块提供。硬件仪表板具有提供对ip特定的定制指令和过程的面向ip的接口,并且还包括提供对所有ip块或ip块的类公共的标准化接口的面向系统的接口。这提供了供应方不可知的固件加载接口,所述接口确保如果ip块通过来自另一供应方的功能上类似或等同的ip块替换,系统不需要重新设计。这可以提供直接的、插入替换(即,在固件仪表板内部地提供到ip块的情况下),或者在最坏的情况下,固件仪表板ip通过新ip块的供应方的对应固件仪表板ip替换。系统的其他方面,包括bios、固件和软件,不需要与新的ip块兼容,因为它们能够通过标准化的固件仪表板操作。固件仪表板提供不仅供应方不可知而且架构不可知的接口。arm、amd、intel®和其他架构可以与提供对应固件仪表板的任何ip集成。在可信执行环境(tee)用于安全性的情况下,固件仪表板也可以与例如trusty、vbs、安全性控制器、早期bios或任何其他tee机制兼容。这允许tee不可知地加载用于设备的安全固件。例如,固件仪表板可以在arm、amd或intel®soc上使用,并且可以用于集成来自任何数量的供应方的ip块。这不仅提供了安全的输入/输出(i/o),而且还提供了到加速器的计算功能性的安全卸载,这在数据中心中是有用的。本说明书的固件仪表板克服了由于多个架构和多个tee在当今的公共使用中存在而出现的困难。ip提供方一般具有其自己的、独立设计的硬件和针对其ip固件的软件的定制预期。在缺少公共机制的情况下,soc集成商将ip与多个供应方混合并匹配可能是非常困难的。此外,一些供应方将一个ip的固件加载与其他ip耦合,从而创建难处理的依赖性。例如,如果ipa依赖于ipb来加载安全固件,并且ipb为了其存在而依赖于ipc和组构d,则soc设计变得具有挑战性并且是次优的。本说明书实现了称为固件“仪表板”的固件加载接口的硬件窗口小部件,其提取对ip固件加载所要求的信息,并且暴露ip外部的一般标准接口。即使ip通过定制流程设计,它也具有对外部代理和固件验证和加载的架构的一些通用预期。本文所公开的固件仪表板使用这些概括来创建通用可插的标准硬件窗口小部件,并且提供用于固件加载和验证的标准外部流程。ip侧上的内部实现从ip到ip仍然可以是不同的。固件仪表板支持多种类型的访问控制,包括例如基于范围的、基于tlp位的以及基于引导阶段的访问控制。此外,它封装ip和soc以及ip和soc内的其他ip之间的所有交互,以用于ip固件管理。有利地,ip可以彼此独立地设计(它们集成到哪些soc中,以及在那些soc上使用哪些os或软件)。因此,通过固件仪表板,可以跨许多不同的架构重用ip。此外,诸如bios或os驱动程序的软件部件可以从一个ip到另一个ip重用ip固件加载模块,并且还从一个平台到另一个平台转移(port),或者从一个生态系统到另一个生态系统转移。这使能在用于第三方ip的软件方面具有减少的验证成本的快速soc集成。由于标准化,它还提供了相对于ip固件完整性的改进的安全性保证。本说明书在三种风格的ip块方面示出了固件加载接口或仪表板的使用。应该注意,这些风格仅是为了说明性目的而呈现,并且可以提供具有其他固件加载特性的其他类型的ip块。风格1是具有只读存储器(rom)和内置硬件密码的ip。此ip块能够建立其自己的信任根,但是取决于像操作系统或另一控制器的外部代理将固件复制到soc可寻址存储器以用于其加载。然后,ip可以使用直接存储器访问(dma)来访问和验证固件,并开始执行固件。风格2是不具有rom或密码的ip。它完全取决于外部实体来验证固件的完整性,并将其下载到内部随机存取存储器(ram),例如静态ram(sram)或寄存器堆。风格3是不具有内部rom或密码的ip。它预期外部代理加载以及验证固件。然后,外部代理必须将固件指向ip。ip直接从该外部存储器执行。例如,图1示出了包括这里讨论的所有三种风格的ip的soc。现在将通过更特定地参考附图来描述用于提供针对知识产权块的标准化接口的系统和方法。应该注意,在整个附图中,可以重复某些参考数字以指示特定装置或块跨附图完全或基本一致。然而,这不意图暗示所公开的各种实施例之间的任何特定关系。在某些示例中,一种元件可以通过特定的参考数字(“窗口小部件10”)来指代,而所述种的独立种类或示例可以通过带连字符的数字(“第一特定窗口小部件10-1”和“第二特定窗口小部件10-2”)来指代。下面某些附图详述了实现上面实施例的示例架构和系统。在一些实施例中,上面描述一个或者多个硬件部件和/或指令如下面详述地仿真或者作为软件模块实现。图1是片上系统(soc)100的框图。soc100作为可以使用本说明书的教导的平台的说明提供。但是应该理解,soc100只是非限制性和说明性示例。其他系统并且特别是其他集成电路,可以成功地应用本发明的教导。在此示例中,soc100包括上面讨论的所有三种风格的ip块。soc100包括中央处理单元(cpu)102,其包括两个核,核0104-1和核1104-2。这里作为说明性和非限制性示例来提供多核cpu。在其他实施例中,可以提供其他数量的核,包括单个核或多个核,诸如4个核、8个核、12个核、16个核、24个核、32个核、64个核、128个核或任何其他适合数量的核。cpu102和/或核104可以包括多个寄存器(如下面关于图2进一步讨论的)。cpu102可以由bios112自举(bootstrapped),所述bios可以从引导rom116加载固件。cpu102通信地耦合到动态ram108,所述动态ram可以具有在其中运行的软件110,并且还可以具有gpsram111的副本。gpsram111可以用于ip块中的一个,特别在这种情况下是gpsip132。动态随机存取存储器(dram)108可以具有其他信息、数据和/或指令的副本。在一些情况下,数据和指令可以从不同的源(例如存储装置或非易失性存储器150)加载。soc100包括用于将soc100的不同部分彼此通信地耦合的组构170。作为非限制性示例,组构170可以包括北桥、南桥、intel®片上系统组构(iosf)、intel®uncore、intel®omni-path互连,或者可以用于互连soc100的各种件的任何其他组构、通信过程或总线。应该特别注意,尽管soc100示出了分立装置和组构170之间的某些互连,但这并不暗示这些互连之间的必要关系。在各种实施例中,这里示出的任何装置可以用任何适合的方式互连。soc100包括安全性引擎140,其在各种实施例中可以是ip块、软件、固件或上面的任何组合。安全性引擎140可以包括例如tee,并且可以包括指令、微代码、软件、固件或提供安全性的其他过程。安全性引擎140可以特别负责验证加载到各种ip块的固件,所述ip块包括音频ip120、成像ip126和gpsip132。soc100被示出具有三种风格的ip块,以示出在本发明的教导内的不同类型的ip的操作。根据本发明的教导,ip块120、126和132可以或可以不被配置具有固件仪表板。如果这些ip块中的一个或多个不包括固件仪表板,则设计具有针对不包括固件仪表板的每个ip块的专用固件加载流程的soc100将是必要的。另一方面,包括适当固件仪表板的任何ip块可以经由标准化固件加载流程来加载。本文公开的ip块,例如音频ip120、成像ip126和gpsip132,是通常可以在用于移动电话、平板电脑或类似装置的soc中使用的ip。然而,应该理解,这些仅作为非限制性示例公开。soc100可以容易地是用于数据中心中的服务器刀片的soc,或者是用于任何其他目的的soc。在一个示例中,ip块120、126和132可以是“自给自足”ip。这些是完全自给自足的并且不具有外部部件依赖性的ip。换句话说,只要它们在设计中使用并且被给予适当的输入和输出,它们可以完全起作用。可以在各种不同的模型中提供用于各种ip块的固件加载流程。例如,可以在推模型中提供固件加载流程。在推模型中,ip预期外部控制器将固件推到其ram中。例如,成像ip126可以预期cpu102将固件图像推到sram128中。在拉模型中,ip预期将其自己的固件图像拉到内部ram中。例如,音频ip120可以采用拉模型以用于加载ip固件。在这种情况下,cpu102向音频ip120提供地址,音频ip120可以访问所述地址以将固件图像拉到sram123或rom122中。拉模型的变型是当ip不内部地拉固件而是从外部存储器执行固件时。例如,在此说明中的gpsip132不具有内部sram。gpsip132可以从cpu102接收地址,并且gpsip132可以从dram108访问该地址,并且可以从dram108执行其固件。在此说明中,为了说明的目的公开了三个ip块。音频ip120包括微控制器121。音频ip120还包括rom122、sram123和内部密码模块124。音频ip120作为“风格1”ip的示例公开。此ip具有rom和内置硬件密码能力以建立其自己的信任根。然而,音频ip120仍然依赖于外部代理(例如在dram108内运行的操作系统),或者控制器(例如cpu102),来将固件复制到soc可寻址的存储器以用于其加载。音频ip120然后可以经由dma访问该存储器,并且经由密码模块124验证固件图像。音频ip120然后可以开始执行所加载的固件。成像ip126包括微控制器127和sram128。微控制器127可以不同于微控制器121,并且可以具有不同的指令集和架构。成像ip126可以具有与音频ip120完全不同的固件加载过程。成像ip126作为“风格2”ip的示例提供。成像ip126不具有rom或硬件密码模块。相反,成像ip126完全取决于诸如cpu102和安全性引擎140的外部实体来验证其固件的完整性。成像ip126还依赖于诸如cpu102的外部实体来将固件图像下载到sram128或寄存器堆中。一旦固件图像被验证并加载到sram128中,成像ip126可以开始执行固件图像。gpsip132具有微控制器133。微控制器133可以不同于微控制器127和微控制器121,包括具有完全不同的指令集和架构。gpsip132可以具有与成像ip126和音频ip120两者不同的固件加载过程。gpsip132作为“风格3”ip的示例提供。gpsip132不具有内部rom或密码模块。相反,它预期诸如cpu102和/或安全性引擎140的外部代理验证固件图像。然后,它预期诸如cpu102的外部代理将其指向ip固件图像。例如,cpu102可以向gpsip132提供到dram108内的gpsram111的指针。gpsip132然后可以直接从dram108执行gpsram111。ip块120、126和132作为不同风格的ip模块的三个示例提供。实际上,基于多种因素,可以有在工业中存在的任何数量的组合。作为说明性和非限制性示例,这些因素可以包括:1.ip内部和外部的密码能力。2.ip被设计具有或不具有用于建立信任根(rot)的rom。3.ip的控制器是从(ip)内部ram还是从外部ram(例如soc内的ram)执行。4.ip是可以自己拉入固件,还是要求某一外部代理来将固件推到其中。5.集成ip的soc是否具有安全性控制器,所述安全性控制器相对于对于soc的使用情况的安全性要求可以被信任。6.针对每个ip的固件的阶段的数量。一些ip仅加载固件一次。其他ip在引导和操作的不同阶段中多次加载固件。在缺少用于ip120、126和132的固件仪表板的情况下,在cpu102上运行的软件110将会必须实现针对三个ip块中的每个的三个单独的流程。在这三个不同的ip之间不存在可重用的流程。在soc100还包括信任要求的情况下,如果安全性引擎140需要扮演用于成像ip126和gpsip132的验证器的作用,则它将不具有它可以从软件110继承的流程。在这个实施例中,soc100的软件架构必须在ip设计时间定义,并且在soc集成时间是不灵活的。图2是soc200的框图。soc200作为可以使用本说明书的教导的平台的说明提供。但是应该理解,soc200只是一个非限制性和说明性示例。其他系统,并且特别是其他集成电路,可以成功地应用本说明书的教导。在此示例中,soc200包括上面讨论的所有三种风格的ip块。soc200包括cpu202,其包括两个核,核0204-1和核1204-2。这里作为说明性和非限制性示例来提供多核cpu。在其他实施例中,可以提供其他数量的核,包括单个核或多个核,诸如4个核、8个核、12个核、16个核、24个核、32个核、64个核、128个核或任何其他适合数量的核。cpu202和/或核204可以包括多个寄存器(如下面关于图2进一步讨论的)。cpu202可以由bios212自举,所述bios可以从引导rom216加载固件。cpu202通信地耦合到动态ram208,所述ram可以具有在其中运行的软件210,并且还可以具有gpsram211的副本。gpsram211可以用于ip块中的一个,特别在这种情况下是gpsip232。dram208可以具有其他信息、数据和/或指令的副本。在一些情况下,数据和指令可以从不同的源(例如存储装置或非易失性存储器250)加载。soc200包括用于将soc200的不同部分彼此通信地耦合的组构270。作为非限制性示例,组构270可以包括北桥、南桥、intel®片上系统组构(iosf)、intel®uncore、intel®omni-path互连,或者可以用于互连soc200的各种件的任何其他组构、通信过程或总线。应该特别注意,尽管soc200示出了分立装置和组构270之间的某些互连,但这并不暗示这些互连之间的必要关系。在各种实施例中,这里示出的任何装置可以用任何适合的方式互连。soc200包括安全性引擎240,其在各种实施例中可以是ip块、软件、固件或上面的任何组合。安全性引擎240可以包括例如tee,并且可以包括指令、微代码、软件、固件或提供安全性的其他过程。安全性引擎240可以特别负责验证加载到各种ip块的固件,所述ip块包括音频ip220、成像ip226和gpsip232。本文公开的ip块,例如音频ip220、成像ip226和gpsip232,是通常可以在用于移动电话、平板电脑或类似装置的soc中使用的ip。然而,应该理解,这些仅作为非限制性示例公开。soc200可以容易地是用于数据中心中的服务器刀片的soc,或者是用于任何其他目的的soc。在一个示例中,ip块220、226和232可以是“自给自足”ip。这些是完全自给自足的并且不具有外部部件依赖性的ip。换句话说,只要它们在设计中使用并且被给予适当的输入和输出,它们可以完全起作用。可以在各种不同的模型中提供用于各种ip块的固件加载流程。例如,可以在推模型中提供固件加载流程。在推模型中,ip预期外部控制器将固件推到其ram中。例如,成像ip226可以预期cpu202将固件图像推到sram228中。在拉模型中,ip预期将其自己的固件图像拉到内部ram中。例如,音频ip220可以采用拉模型以用于加载ip固件。在这种情况下,cpu202向音频ip220提供地址,音频ip220可以访问所述地址以将固件图像拉到sram223或rom222中。拉模型的变型是当ip不内部地拉固件而是从外部存储器执行固件时。例如,在此说明中的gpsip232不具有内部sram。gpsip232可以从cpu202接收地址,并且gpsip232可以从dram208访问该地址,并且可以从dram208执行其固件。在此说明中,为了说明的目的公开了三个ip块。音频ip220包括微控制器221。音频ip220还包括rom222、sram223和内部密码模块224。音频ip220作为“风格1”ip的示例公开。此ip具有rom和内置硬件密码能力以建立其自己的信任根。然而,音频ip220仍然依赖于外部代理(例如在dram208内运行的操作系统),或者控制器(例如cpu202),来将固件复制到soc可寻址的存储器以用于其加载。音频ip220然后可以经由dma访问该存储器,并且经由密码模块224验证固件图像。音频ip220然后可以开始执行所加载的固件。成像ip226包括微控制器227和sram228。微控制器227可以不同于微控制器221,并且可以具有不同的指令集和架构。成像ip226可以具有与音频ip220完全不同的固件加载过程。成像ip226作为“风格2”ip的示例提供。成像ip226不具有rom或硬件密码模块。相反,成像ip226完全取决于诸如cpu202和安全性引擎240的外部实体来验证其固件的完整性。成像ip226还依赖于诸如cpu202的外部实体来将固件图像下载到sram228或寄存器堆中。一旦固件图像被验证并加载到sram228中,成像ip226可以开始执行固件图像。gpsip232具有微控制器233。微控制器233可以不同于微控制器227和微控制器221,包括具有完全不同的指令集和架构。gpsip232可以具有与成像ip226和音频ip220两者不同的固件加载过程。gpsip232作为“风格3”ip的示例提供。gpsip232不具有内部rom或密码模块。相反,它预期诸如cpu202和/或安全性引擎240的外部代理验证固件图像。然后,它预期诸如cpu202的外部代理将其指向ip固件图像。例如,cpu202可以向gpsip232提供到dram208内的gpsram211的指针。gpsip232然后可以直接从dram208执行gpsram211。ip块220、226和232作为不同风格的ip模块的三个示例提供。实际上,基于多种因素,可以有在工业中存在的任何数量的组合。作为说明性和非限制性示例,这些因素可以包括:1.ip内部和外部的密码能力。2.ip被设计具有或不具有用于建立信任根(rot)的rom。3.ip的控制器是从(ip)内部ram还是从外部ram(例如soc内的ram)执行。4.ip是可以自己拉入固件,还是要求某一外部代理来将固件推到其中。5.集成ip的soc是否具有安全性控制器,所述安全性控制器相对于对于soc的使用情况的安全性要求可以被信任。6.针对每个ip的固件的阶段的数量。一些ip仅加载固件一次。其他ip在引导和操作的不同阶段中多次加载固件。在soc200还包括信任要求的情况下,如果安全性引擎240需要扮演用于成像ip226和gpsip232的验证器的作用,则它将不具有它可以从软件210继承的流程。在这个实施例中,soc200的软件架构必须在ip设计时间定义,并且在soc集成时间是不灵活的。soc200与soc100的不同之处在于,soc200特别提供多个固件加载接口(也称为固件仪表板)。特别地,音频ip220在本身内部包括固件加载接口280。成像ip226是不包括集成固件仪表板的传统ip。但是,成像ip226的供应方确实提供了单独的ip块,即固件加载接口282。固件加载接口282提供在成像ip226外部的固件仪表板。因此,通过使用固件加载接口282连同成像ip226,结果等效于使用具有内部固件仪表板的成像ip。gpsip232包括内部固件加载接口284。在图1的soc100中,如果没有提供针对ip的固件仪表板,则在主cpu102上运行的软件可能需要实现针对三个所公开的ip块中的每个的三个单独的流程。在这三个ip之间不存在可重用的流程。然而,在soc200的情况下,可以提供标准化的固件加载流程。soc200可以具有指定的信任要求。如果安全性引擎240需要扮演用于成像ip226和gpsip232的验证器的作用,则它可以从在主机cpu上运行的软件继承流程。在不使用本文示出的固件仪表板的情况下,这种继承可能是不可能的。由固件加载接口280、282和284提供的固件仪表板的实施例提取加载用于可能组合的每个组合的固件的公共元素,并且创建用于软件的标准接口以将固件加载到这些ip中。公共元素可以包括以下。枚举能力:这涉及在外部代理中运行的软件可以用于枚举ip并理解其能力是什么的信息。这可以描述例如ip是否具有密码能力、ip是否预期拉模型(ip本身是否拉固件)、ip是否具有多阶段加载、以及有助于识别ip装置的固件和修订标识符的其他信息。加载器相关的信息:这涉及在ip和外部代理之间交换的信息(相对于ip的固件图像在系统存储器中的位置)。例如,固件图像可以从闪存存储装置中加载,并且因此,加载器可被要求从闪存存储装置中拉出图像。ip自己可以用此来拉固件(如果其具有rom和密码来建立图像完整性的话)。否则,其他代理可以扮演固件验证器(例如,安全性引擎240)的作用。在该情况下,安全性引擎可以使用加载器相关信息来验证固件图像的完整性。验证器相关信息:这涉及与将执行ip块的固件图像的完整性验证相关的信息。可以由ip硬件使用此信息来拒绝或接受正加载的固件图像。中断和错误状态:此信息集合涉及通用门铃-类事件或状态改变事件。当ip加载流程中的某些事件发生时,这些可以用于中断在ip或主机上运行的软件部件。本文描述的固件加载过程采用上面公共元素,并且相对于固件加载,从ip向外部世界提供统一且一致的标准接口。它还抽象ip块本身内的实现细节或差异。有利地,外部软件部件和控制器可以实现用于所有ip的固件加载的单个统一流程。可以使能未原本设计成满足硬件标准的ip经由假的或类支撑的接口来使用所述标准,或者还可以提供独立的硬件窗口小部件(例如,固件仪表板282)。在图2中示出的实现中,soc中的每一个ip可以具有用于固件加载的标准接口和标准统一流程,即使从固件加载寄存器到ip的实际固件加载机制的内部接口可不同。注意,支持固件仪表板的每一个ip在许多情况下是期望的目标,但不是绝对的要求。通过支持的ip替换不支持的ip可以逐渐地简化soc设计,因为对特殊加载流程的需要被逐渐地消除。因此,本说明书明确地预计了实施例,其中具有固件仪表板的ip块与不具有固件仪表板的ip块混合。在本说明书中描述了在构建示例固件仪表板中有用的寄存器定义的子集。这些寄存器定义应该被理解成非限制性示例,并且其他寄存器定义可以用于执行本说明书的教导。从固件加载接口寄存器到实际ip的内部实现可以不同,只要用于到达固件加载接口寄存器的寻址模式是标准的。例如,可以使用外围部件互连(pci)可枚举的或固定的存储器映射偏移。到达这些地址的安全性机制也可以经由基于硬件的属性而一致,像arm的trustzone中的安全和非安全位或用于唯一地识别用于基于目标的访问控制的源代理的发起者的安全性属性(sai)位。表1:控制寄存器总结(最小要求列表)注意,本说明书的仪表板基底和加载器基底之间的关系下面在图10的描述中进一步讨论。表2:控制策略表3:加载器写访问策略表4:验证器写访问策略表5:ip加载器和验证器能力(ip信息寄存器1)位访问类型默认描述63:36ro1`h0保留47:44ro参数ip预期推模型43:36ro8’h0保留35:32ro参数/熔断/绑定(strap)经由另一socip(示例安全性ip)预期的验证器能力31:28ro参数/熔断/绑定经由另一socip(示例安全性ip)预期的加载器能力27:24ro参数/熔断/绑定经由iasw/tee预期的验证器能力23:20ro参数/熔断/绑定经由iasw/tee预期的加载器能力19:16ro参数/熔断/绑定经由bios预期的验证器能力15:12ro参数/熔断/绑定经由bios预期的加载器能力11:8ro参数/熔断/绑定ip本身内构建验证器能力7:4ro参数/熔断/绑定ip本身内构建加载器能力3:3ro参数/熔断/绑定由ip支持的内联散列。仪表板1.0中不存在针对此特征的当前使用2:0ro3’b0保留表6:ip加载器和验证器能力2(ip信息寄存器2)表7:加载器基底地址寄存器表8:加载地址寄存器1表9:加载大小和状态寄存器1表10:验证地址寄存器1(在ip本身扮演验证器的作用或者不需要与用于验证的外部代理通信的情况下,这些寄存器将会变得可选。)表11:验证大小和状态寄存器1表12:加载错误状态寄存器位访问类型默认描述31:20ro11’h0保留15:12ro1’h0保留11:8ro3’h0保留7:4rw4’h0加载错误代码:4位,其可用于交换通用错误代码。此错误必须对应于在位3:0设置的故障位3:0rw4’h0加载失败:加载器被预期在任何故障时设置此位。存在针对可以被加载的4个图像中的每个分配的4个位。ip还可以通过将其连接到朝向主机或ip控制器的中断来优化此位的使用。表13:验证错误状态寄存器位访问类型默认描述31:20ro11’h0保留15:12ro1’h0保留11:8ro3’h0保留7:4rw4’h0验证错误代码:4位,其可以用于交换通用错误代码。此错误必须对应于以位3:0设置的故障位3:0rw4’h0验证失败:预期验证器在任何故障时设置此位。存在针对可以被加载的4个图像中的每个分配的4个位。ip还可以通过将其连接到朝向主机或ip控制器的中断来优化此位的使用。表14:中断掩蔽寄存器表15:中断状态清除寄存器(到此寄存器位的写将清除对应的中断。)位访问类型默认描述31:28ro3’h0保留27:24rwc4’h0用于ip数据区域更新请求的中断状态位。针对每个fw实例分配一个位。23:20rwc4’h0用于ip数据区域更新完成的中断状态位。针对每个fw实例分配一个位。19:16rwc4’h0用于ip推或拉完成的中断状态位。针对每个fw实例分配一个位。15:12rwc4’h0用于验证完成的中断状态位。针对每个fw实例分配一个位。11:8rwc4’h0用于验证器加载完成位的中断状态位。针对每个fw实例分配一个位。7:4rwc4’h0用于fw加载完成的中断状态位。针对每个fw实例分配一个位。3:0rwc4’h0用于ip准备好用于fw加载的中断状态位。针对每个fw实例分配一个位。图3是soc300的框图,示出了潜在ip的附加方面。图3特别示出了ip固件的单阶段加载和多阶段加载两者。soc300作为可以使用本发明的教导的平台的说明来提供。但是应该理解,soc300只是非限制性和说明性示例。其他系统,并且特别是其他集成电路,可以成功地应用本发明的教导。在此示例中,soc300包括上面讨论的所有三种风格的ip块。soc300包括cpu302,其包括两个核,核0304-1和核1304-2。这里作为说明性和非限制性示例来提供多核cpu。在其他实施例中,可以提供其他数量的核,包括单个核或多个核,诸如4个核、8个核、12个核、16个核、24个核、32个核、64个核、128个核或任何其他适合数量的核。cpu302和/或核304可以包括多个寄存器(如下面关于图3进一步讨论的)。cpu302可以由bios312自举,所述bios可以从引导rom316加载固件。cpu302通信地耦合到动态ram308,所述ram可以具有在其中运行的软件310,并且还可以具有gpsram311的副本。gpsram311可以用于ip块中的一个,特别在这种情况下是gpsip332。gpsip332包括微控制器333、固件加载接口384、应用386和内核388。dram308可以具有其他信息、数据和/或指令的副本。在一些情况下,数据和指令可以从不同的源(例如存储装置或非易失性存储器350)加载。soc300包括用于将soc300的不同部分彼此通信地耦合的组构370。作为非限制性示例,组构370可以包括北桥、南桥、intel®片上系统组构(iosf)、intel®uncore、intel®omni-path互连,或者可以用于互连soc300的各种件的任何其他组构、通信过程或总线。应该特别注意,尽管soc300示出了分立装置和组构370之间的某些互连,但这并不暗示这些互连之间的必要关系。在各种实施例中,这里示出的任何装置可以用任何适合的方式互连。soc300包括安全性引擎340,其在各种实施例中可以是ip块、软件、固件或上面的任何组合。安全性引擎340可以包括例如tee,并且可以包括指令、微代码、软件、固件或提供安全性的其他过程。安全性引擎340可以特别负责验证加载到各种ip块的固件,所述ip块包括音频ip320、成像ip326和gpsip332。本文公开的ip块(例如音频ip320、成像ip326和gpsip332)是通常可以在用于移动电话、平板电脑或类似装置的soc中使用的ip。然而,应该理解,这些仅作为非限制性示例公开。soc300可以容易地是用于数据中心中的服务器刀片的soc,或者是用于任何其他目的的soc。在一个示例中,ip块320、326和332可以是“自给自足”ip。这些是完全自给自足的并且不具有外部部件依赖性的ip。换句话说,只要它们在设计中使用并且被给予适当的输入和输出,它们可以完全起作用。可以在各种不同的模型中提供用于各种ip块的固件加载流程。例如,可以在推模型中提供固件加载流程。在推模型中,ip预期外部控制器将固件推到其ram中。例如,成像ip326可以预期cpu302将固件图像推到sram328中。在拉模型中,ip预期将其自己的固件图像拉到内部ram中。例如,音频ip320可以采用拉模型以用于加载ip固件。在这种情况下,cpu302向音频ip320提供地址,音频ip320可以访问所述地址以将固件图像拉到sram323或rom322中。拉模型的变型是当ip不内部地拉固件而是从外部存储器执行固件时。例如,在此说明中的gpsip332不具有内部sram。gpsip332可以从cpu302接收地址,并且gpsip332可以从dram308访问该地址,并且可以从dram308执行其固件。在此说明中,为了说明的目的公开了三个ip块。音频ip320包括微控制器321。音频ip320还包括rom322、sram323和内部密码模块324。音频ip320作为“风格1”ip的示例公开。此ip具有rom和内置硬件密码能力以建立其自己的信任根。然而,音频ip320仍然依赖于外部代理(例如在dram308内运行的操作系统),或者控制器(例如cpu302),来将固件复制到soc可寻址的存储器以用于其加载。音频ip320然后可以经由dma访问该存储器,并且经由密码模块324验证固件图像。音频ip320然后可以开始执行所加载的固件。成像ip326包括微控制器327和sram328。微控制器327可以不同于微控制器321,并且可以具有不同的指令集和架构。成像ip326可以具有与音频ip320完全不同的固件加载过程。成像ip326作为“风格2”ip的示例提供。成像ip326不具有rom或硬件密码模块。相反,成像ip326完全取决于诸如cpu302和安全性引擎340的外部实体来验证其固件的完整性。成像ip326还依赖于诸如cpu302的外部实体来将固件图像下载到sram328或寄存器堆中。一旦固件图像被验证并加载到sram328中,成像ip326可以开始执行固件图像。gpsip332具有微控制器333。微控制器333可以不同于微控制器327和微控制器321,包括具有完全不同的指令集和架构。gpsip332可以具有与成像ip326和音频ip320两者不同的固件加载过程。gpsip332作为“风格3”ip的示例提供。gpsip332不具有内部rom或密码模块。相反,它预期诸如cpu302和/或安全性引擎340的外部代理验证固件图像。然后,它预期诸如cpu302的外部代理将其指向ip固件图像。例如,cpu302可以向gpsip332提供到dram308内的gpsram311的指针。gpsip332然后可以直接从dram308执行gpsram311。ip块320、326和332作为不同风格的ip模块的三个示例提供。实际上,基于多种因素,可以有在工业中存在的任何数量的组合。作为说明性和非限制性示例,这些因素可以包括:1.ip内部和外部的密码能力。2.ip被设计具有或不具有用于建立信任根(rot)的rom。3.ip的控制器是从(ip)内部ram还是从外部ram(例如soc内的ram)执行。4.ip是可以自己拉入固件,还是要求某一外部代理来将固件推到其中。5.集成ip的soc是否具有安全性控制器,所述安全性控制器相对于对于soc的使用情况的安全性要求可以被信任。6.针对每个ip的固件的阶段的数量。一些ip仅加载固件一次。其他ip在引导和操作的不同阶段中多次加载固件。在soc300还包括信任要求的情况下,如果安全性引擎340需要扮演用于成像ip326和gpsip332的验证器的作用,则它将不具有它可以从软件310继承的流程。在此实施例中,soc300的软件架构必须在ip设计时间定义,并且在soc集成时间是不灵活的。soc300与soc200的不同之处在于,soc300特别提供多个固件加载接口(也称为固件仪表板)。特别地,音频ip320在本身内部包括固件加载接口380。成像ip326是不包括集成固件仪表板的传统ip。但是,成像ip326的供应方确实提供了单独的ip块,即固件加载接口382。固件加载接口382提供在成像ip326外部的固件仪表板。因此,通过使用固件加载接口382连同成像ip326,结果等效于使用具有内部固件仪表板的成像ip。gpsip332包括内部固件加载接口384。在图1的soc100中,如果没有提供针对ip的固件仪表板,则在主cpu102上运行的软件可能需要实现针对三个所公开的ip块中的每个的三个单独的流程。在这三个ip之间不存在可重用的流程。然而,在soc300的情况下,可以提供标准化的固件加载流程。soc300可以具有指定的信任要求。如果安全性引擎340需要扮演用于成像ip326和gpsip332的验证器的作用,则它可以从在主机cpu上运行的软件继承流程。在不使用本文示出的固件仪表板的情况下,这种继承可能是不可能的。由固件加载接口380、382和384提供的固件仪表板的实施例提取加载用于可能组合的每个组合的固件的公共元素,并且创建用于软件的标准接口以将固件加载到这些ip中。在此示例中,音频ip320可以具有单阶段加载,而gpsip332具有多阶段加载。更具体地,音频ip320包括固件325。在此示例中,音频ip320具有单个固件图像。在示出的实施例中,固件325在单个实例中在引导时加载一次。一旦固件325已经被加载到音频ip320,则附加的加载不是必要的。相反,gpsip332具有多阶段加载特征。在此示例中,gpsip332需要加载内核388和应用386两者。因此,gpsip332要求多阶段加载。应用386和内核388可以在不同的引导阶段或甚至在引导之后由不同的代理加载。例如,内核388可以在引导时间加载,而应用386可以在引导之后加载。此外,安全性引擎340可以向内核388和应用386指配不同的信任级别。内核388可以是更可信的,而应用386可以是没那么可信的。图4是soc400的框图。soc400示出固件加载器的方面。soc400作为可以使用本说明书的教导的平台的说明提供。但是应该理解,soc400只是非限制性和说明性示例。其他系统,并且特别是其他集成电路,可以成功地应用本说明书的教导。在此示例中,soc400包括上面讨论的所有三种风格的ip块。soc400包括cpu402,其包括两个核,核0404-1和核1404-2。这里作为说明性和非限制性示例来提供多核cpu。在其他实施例中,可以提供其他数量的核,包括单个核或多个核,诸如4个核、8个核、12个核、16个核、24个核、32个核、64个核、128个核或任何其他适合数量的核。cpu402和/或核404可以包括多个寄存器(如下面关于图4进一步讨论的)。cpu402可以由bios412自举,所述bios可以从引导rom416加载固件。cpu402通信地耦合到动态ram408,所述ram可以具有在其中运行的软件410,并且还可以具有gpsram411的副本。gpsram411可以用于ip块中的一个,特别在这种情况下是gpsip432。dram408可以具有其他信息、数据和/或指令的副本。在一些情况下,数据和指令可以从不同的源(例如存储装置或非易失性存储器450)加载。soc400包括用于将soc400的不同部分彼此通信地耦合的组构470。作为非限制性示例,组构470可以包括北桥、南桥、intel®片上系统组构(iosf)、intel®uncore、intel®omni-path互连,或者可以用于互连soc400的各种件的任何其他组构、通信过程或总线。应该特别注意,尽管soc400示出了分立装置和组构470之间的某些互连,但这并不暗示这些互连之间的必要关系。在各种实施例中,这里示出的任何装置可以用任何适合的方式互连。soc400包括安全性引擎440,其在各种实施例中可以是ip块、软件、固件或上面的任何组合。安全性引擎440可以包括例如tee,并且可以包括指令、微代码、软件、固件或提供安全性的其他过程。安全性引擎440可以特别负责验证加载到各种ip块的固件,所述ip块包括音频ip420、存储ip426和gpsip432。本文公开的ip块,例如音频ip420、存储ip426和gpsip432,是通常可以在用于移动电话、平板电脑或类似装置的soc中使用的ip。然而,应该理解,这些仅作为非限制性示例公开。soc400可以容易地是用于数据中心中的服务器刀片的soc,或者是用于任何其他目的的soc。在一个示例中,ip块420、426和432可以是“自给自足”ip。这些是完全自给自足的并且不具有外部部件依赖性的ip。换句话说,只要它们在设计中使用并且被给予适当的输入和输出,它们可以完全起作用。可以在各种不同的模型中提供用于各种ip块的固件加载流程。例如,可以在推模型中提供固件加载流程。在推模型中,ip预期外部控制器将固件推到其ram中。例如,存储ip426可以预期cpu402将固件图像推到sram428中。在拉模型中,ip预期将其自己的固件图像拉到内部ram中。例如,音频ip420可以采用拉模型以用于加载ip固件。在这种情况下,cpu402向音频ip420提供地址,音频ip420可以访问所述地址以将固件图像拉到sram423或rom422中。拉模型的变型是当ip不内部地拉固件而是从外部存储器执行固件时。例如,在此说明中的gpsip432不具有内部sram。gpsip432可以从cpu402接收地址,并且gpsip432可以从dram408访问该地址,并且可以从dram408执行其固件。在此说明中,为了说明的目的公开了三个ip块。音频ip420包括微控制器421。音频ip420还包括rom422、sram423和内部密码模块424。音频ip420作为“风格1”ip的示例公开。此ip具有rom和内置硬件密码能力以建立其自己的信任根。然而,音频ip420仍然依赖于外部代理(例如在dram408内运行的操作系统),或者控制器(例如cpu402),来将固件复制到soc可寻址的存储器以用于其加载。音频ip420然后可以经由dma访问该存储器,并且经由密码模块424验证固件图像。音频ip420然后可以开始执行所加载的固件。存储ip426执行到nvm450的存储管理功能并包括微控制器427和sram428。微控制器427可以不同于微控制器421,并且可以具有不同的指令集和架构。存储ip426可以具有与音频ip420完全不同的固件加载过程。存储ip426作为“风格2”ip的示例提供。存储ip426不具有rom或硬件密码模块。相反,存储ip426完全取决于诸如cpu402和安全性引擎440的外部实体来验证其固件的完整性。存储ip426还依赖于诸如cpu402的外部实体来将固件图像下载到sram428或寄存器堆中。一旦固件图像被验证并加载到sram428中,存储ip426可以开始执行固件图像。gpsip432具有微控制器433。微控制器433可以不同于微控制器427和微控制器421,包括具有完全不同的指令集和架构。gpsip432可以具有与存储ip426和音频ip420两者不同的固件加载过程。gpsip432作为“风格3”ip的示例提供。gpsip432不具有内部rom或密码模块。相反,它预期诸如cpu402和/或安全性引擎440的外部代理验证固件图像。然后,它预期诸如cpu402的外部代理将其指向ip固件图像。例如,cpu402可以向gpsip432提供到dram408内的gpsram411的指针。gpsip432然后可以直接从dram408执行gpsram411。ip块420、426和432作为不同风格的ip模块的三个示例提供。实际上,基于多种因素,可以有在工业中存在的任何数量的组合。作为说明性和非限制性示例,这些因素可以包括:1.ip内部和外部的密码能力。2.ip被设计具有或不具有用于建立信任根(rot)的rom。3.ip的控制器是从(ip)内部ram还是从外部ram(例如soc内的ram)执行。4.ip是可以自己拉入固件,还是要求某一外部代理来将固件推到其中。5.集成ip的soc是否具有安全性控制器,所述安全性控制器相对于对于soc的使用情况的安全性要求可以被信任。6.针对每个ip的固件的阶段的数量。一些ip仅加载固件一次。其他ip在引导和操作的不同阶段中多次加载固件。在soc400还包括信任要求的情况下,如果安全性引擎440需要扮演用于存储ip426和gpsip432的验证器的作用,则它将不具有它可以从软件410继承的流程。在此实施例中,soc400的软件架构必须在ip设计时间定义,并且在soc集成时间是不灵活的。soc400与soc100的不同之处在于,soc400特别提供多个固件加载接口(也称为固件仪表板)。特别地,音频ip420在本身内部包括固件加载接口480。存储ip426是不包括集成固件仪表板的传统ip。但是,存储ip426的供应方确实提供了单独的ip块,即固件加载接口482。固件加载接口482提供在存储ip426外部的固件仪表板。因此,通过使用固件加载接口482连同存储ip426,结果等效于使用具有内部固件仪表板的成像ip。gpsip432包括内部固件加载接口484。在图1的soc100中,如果没有提供针对ip的固件仪表板,则在主cpu102上运行的软件可能需要实现针对三个所公开的ip块中的每个的三个单独的流程。在这三个ip之间不存在可重用的流程。然而,在soc400的情况下,可以提供标准化的固件加载流程。soc400可以具有指定的信任要求。如果安全性引擎440需要扮演用于存储ip426和gpsip432的验证器的作用,则它可以从在主机cpu上运行的软件继承流程。在不使用本文示出的固件仪表板的情况下,这种继承可能是不可能的。由固件加载接口480、482和484提供的固件仪表板的实施例提取加载用于可能组合的每个组合的固件的公共元素,并且创建用于软件的标准接口以将固件加载到这些ip中。ip加载器是负责从外部存储、闪存、盘、nvm或某一其他位置加载ip固件图像的代理。注意,固件加载器可以不一定认证固件,而是简单地负责加载它。认证可以例如由安全性引擎440单独执行。固件图像415可以位于dram408中。在此示例中,固件415可不具有由dram408或cpu402指配的任何安全性属性。存储ip426可以dma到dram408中。存储ip426可以使用其微控制器427和其内部存储sram428来从dram408复制固件图像415。存储ip426然后可以从固件图像引导。在gpsip432的情况下,提供存储控制器486。固件415可以类似地在dram408中提供以用于gpsip432。固件415从dram408检索gpsram411。因为gpsip432不具有sram或rom,所以它直接从dram408执行gpsram411。在引导时,gpsip432的微控制器433操作存储控制器486以从dram408检索固件图像415。在此示例中,gpsip432不具有内部rom或固件rom或sram,因此固件415直接从dram408执行。在一些示例中,环0操作系统存储驱动程序或bios复制工具(facility)可以用于将固件图像从非易失性存储器或某一其他位置复制到ddr中。图5是soc500的框图。图5示出了固件验证器的方面。soc500作为可以使用本发明的教导的平台的说明提供。但是应该理解,soc500只是非限制性和说明性示例。其他系统,并且特别是其他集成电路,可以成功地应用本说明书的教导。在此示例中,soc500包括上面讨论的所有三种风格的ip块。soc500包括cpu502,其包括两个核,核0504-1和核1504-2。这里作为说明性和非限制性示例来提供多核cpu。在其他实施例中,可以提供其他数量的核,包括单个核或多个核,诸如4个核、8个核、12个核、16个核、24个核、32个核、64个核、128个核或任何其他适合数量的核。cpu502和/或核504可以包括多个寄存器(如下面关于图5进一步讨论的)。cpu502可以由bios512自举,所述bios可以从引导rom516加载固件。cpu502通信地耦合到动态ram508,所述ram可以具有在其中运行的软件510,并且还可以具有gpsram511的副本。gpsram511可以用于ip块中的一个,特别在这种情况下是gpsip532。dram508可以具有其他信息、数据和/或指令的副本。在一些情况下,数据和指令可以从不同的源(例如存储装置或非易失性存储器550)加载。soc500包括用于将soc500的不同部分彼此通信地耦合的组构570。作为非限制性示例,组构570可以包括北桥、南桥、intel®片上系统组构(iosf)、intel®uncore、intel®omni-path互连,或者可以用于互连soc500的各种件的任何其他组构、通信过程或总线。应该特别注意,尽管soc500示出了分立装置和组构570之间的某些互连,但这并不暗示这些互连之间的必要关系。在各种实施例中,这里示出的任何装置可以用任何适合的方式互连。soc500包括安全性引擎540,其在各种实施例中可以是ip块、软件、固件或上面的任何组合。安全性引擎540可以包括例如tee,并且可以包括指令、微代码、软件、固件或提供安全性的其他过程。安全性引擎540可以特别负责验证加载到各种ip块的固件,所述ip块包括音频ip520、存储ip526和gpsip532。本文公开的ip块,例如音频ip520、存储ip526和gpsip532是通常可以在用于移动电话、平板电脑或类似装置的soc中使用的ip。然而,应该理解,这些仅作为非限制性示例公开。soc500可以容易地是用于数据中心中的服务器刀片的soc,或者是用于任何其他目的的soc。在一个示例中,ip块520、526和532可以是“自给自足”ip。这些是完全自给自足的并且不具有外部部件依赖性的ip。换句话说,只要它们在设计中使用并且被给予适当的输入和输出,它们可以完全起作用。可以在各种不同的模型中提供用于各种ip块的固件加载流程。例如,可以在推模型中提供固件加载流程。在推模型中,ip预期外部控制器将固件推到其ram中。例如,存储ip526可以预期cpu502将固件图像推到sram528中。在拉模型中,ip预期将其自己的固件图像拉到内部ram中。例如,音频ip520可以采用拉模型以用于加载ip固件。在这种情况下,cpu502向音频ip520提供地址,音频ip520可以访问所述地址以将固件图像拉到sram523或rom522中。拉模型的变型是当ip不内部地拉固件而是从外部存储器执行固件时。例如,在此说明中的gpsip532不具有内部sram。gpsip532可以从cpu502接收地址,并且gpsip532可以从dram508访问该地址,并且可以从dram508执行其固件。在此说明中,为了说明的目的公开了三个ip块。音频ip520包括微控制器521。音频ip520还包括rom522、sram523和内部密码模块524。音频ip520作为“风格1”ip的示例公开。此ip具有rom和内置硬件密码能力以建立其自己的信任根。然而,音频ip520仍然依赖于外部代理(例如在dram508内运行的操作系统),或者控制器(例如cpu502),来将固件复制到soc可寻址的存储器以用于其加载。音频ip520然后可以经由dma访问该存储器,并且经由密码模块524验证固件图像。音频ip520然后可以开始执行所加载的固件。存储ip526执行到nvm450的存储管理功能并包括微控制器527和sram528。微控制器527可以不同于微控制器521,并且可以具有不同的指令集和架构。存储ip526可以具有与音频ip520完全不同的固件加载过程。存储ip526作为“风格2”ip的示例提供。存储ip526不具有rom或硬件密码模块。相反,存储ip526完全取决于诸如cpu502和安全性引擎540的外部实体来验证其固件的完整性。存储ip526还依赖于诸如cpu502的外部实体来将固件图像下载到sram528或寄存器堆中。一旦固件图像被验证并加载到sram528中,存储ip526可以开始执行固件图像。gpsip532具有微控制器533。微控制器533可以不同于微控制器527和微控制器521,包括具有完全不同的指令集和架构。gpsip532可以具有与存储ip526和音频ip520两者不同的固件加载过程。gpsip532作为“风格3”ip的示例提供。gpsip532不具有内部rom或密码模块。相反,它预期诸如cpu502和/或安全性引擎540的外部代理验证固件图像。然后,它预期诸如cpu502的外部代理将其指向ip固件图像。例如,cpu502可以向gpsip532提供到dram508内的gpsram511的指针。gpsip532然后可以直接从dram508执行gpsram511。ip块520、526和532作为不同风格的ip模块的三个示例提供。实际上,基于多种因素,可以有在工业中存在的任何数量的组合。作为说明性和非限制性示例,这些因素可以包括:1.ip内部和外部的密码能力。2.ip被设计具有或不具有用于建立信任根(rot)的rom。3.ip的控制器是从(ip)内部ram还是从外部ram(例如soc内的ram)执行。4.ip是可以自己拉入固件,还是要求某一外部代理来将固件推到其中。5.集成ip的soc是否具有安全性控制器,所述安全性控制器相对于对于soc的使用情况的安全性要求可以被信任。6.针对每个ip的固件的阶段的数量。一些ip仅加载固件一次。其他ip在引导和操作的不同阶段中多次加载固件。在soc500还包括信任要求的情况下,如果安全性引擎540需要扮演用于存储ip526和gpsip532的验证器的作用,则它将不具有它可以从软件510继承的流程。在这个实施例中,soc500的软件架构必须在ip设计时间定义,并且在soc集成时间是不灵活的。soc500与soc100的不同之处在于,soc500特别提供多个固件加载接口(也称为固件仪表板)。特别地,音频ip520在本身内部包括固件加载接口580。存储ip526是不包括集成固件仪表板的传统ip。但是,存储ip526的供应方确实提供了单独的ip块,即固件加载接口582。固件加载接口582提供在存储ip526外部的固件仪表板。因此,通过使用固件加载接口582连同存储ip526,结果等效于使用具有内部固件仪表板的成像ip。gpsip532包括内部固件加载接口584。在图1的soc100中,如果没有提供针对ip的固件仪表板,则在主cpu102上运行的软件可能需要实现针对三个所公开的ip块中的每个的三个单独的流程。在这三个ip之间不存在可重用的流程。然而,在soc500的情况下,可以提供标准化的固件加载流程。soc500可以具有指定的信任要求。如果安全性引擎540需要扮演用于存储ip526和gpsip532的验证器的作用,则它可以从在主机cpu上运行的软件继承流程。在不使用本文示出的固件仪表板的情况下,这种继承可能是不可能的。固件图像515可以位于dram508中。在此示例中,固件515可以不具有由dram508或cpu502指配的任何安全性属性。存储ip526可以dma到dram508中。存储ip526可以使用其微控制器527和其内部存储sram528来从dram508复制固件图像515。存储ip526然后可以从固件图像引导。在gpsip532的情况下,提供存储控制器586。固件515可以类似地在dram508中提供以用于gpsip532。固件515从dram508检索gpsram511。因为gpsip532不具有sram或rom,所以它直接从dram508执行gpsram511。在引导时,gpsip532的微控制器533操作存储控制器586以从dram508检索固件图像515。在此示例中,gpsip532不具有内部rom或固件rom或sram,因此固件515直接从dram508执行。在一些示例中,环0操作系统存储驱动程序或bios复制工具可以用于将固件图像从非易失性存储器或某一其他位置复制到ddr中。ip验证器是负责认证ip块的ip固件图像的代理。ip验证器可能已经被建立为soc中具有信任链的安全代理。在一些实施例中,ip验证器能够在验证之后确保固件的完整性。作为说明性而非限制性示例,验证器的示例包括:1.基于intel®架构虚拟化技术(vt)的tee或bios。2.os驱动程序。3.安全性控制器ip。4.用于自给自足ip的微控制器。在此说明中,例如,音频ip520的安全性引擎540和密码模块524两者都能够充当固件验证器。注意,因为成像ip526和gpsip532两者缺少内部密码能力,所以将要求安全性引擎540来执行针对那两个ip块的该功能。图6是soc600的选择方面的框图,其示出了固件仪表板(也称为固件加载接口)的使用。在此示例中,cpu604和存储器控制器608通信地耦合到一个或多个soc组构670。还提供了其他ip块612。ip640以附加细节示出以说明固件仪表板的方面。在此实施例中,固件仪表板提供针对加载器、验证器和ip间通信的标准化的寄存器接口。固件仪表板636描述soc600的ip能力和ip配置。固件仪表板636还允许枚举ip640,包括诸如用于ip固件的流程的信息。固件仪表板636通知诸如安全性引擎的验证器要验证的固件位置。一旦从cpu604接收到信息,它还通知ip它可以将固件复制或执行到哪里以及从哪里复制或执行固件。在一些实施例中,它还提供标准化的错误定义。在此实施例中,固件仪表板636包括桥接cpu604、存储器控制器608和一方面其他ip612以及另一方面ip640之间的功能性的桥接器和包装器620。固件仪表板636通信地耦合到ip组构624,其可以是用于互连ip640的不同部分的组构、互连、总线或其他电路或逻辑。ip组构624通信地耦合到其他ip主装置(诸如μ控制器)628、其他ip目标632和仪表板636。ip仪表板636支持针对ip640的多个固件图像。此外,仪表板636可以支持任何工业标准组构,例如axi、iosf和其他(如必要的)。它还可以提供安全性保护。在一个示例中,仪表板636在其自己的4k范围中存储器对齐,以用于基于页表的保护。仪表板可以在mmio上可访问,并且可以经由soc组构670可访问。为了维持标准符合,仪表板636不应该使用任何专有接口来实现。相反,工业标准接口应该用于确保仪表板636执行其对接功能。在实施例中,仪表板636在ip块640的最深复位时复位。下面表16示出了用于在说明性实施例中执行某些功能的候选。表16:提出的候选功能图7a、7b、8a和8b示出了在本说明书的实施例中可以由在soc上执行的固件仪表板执行的两个说明性流程过程。图7a和7b示出了示例,其中诸如soc上的安全性引擎之类的外部验证器ip执行固件的验证。在图8a和8b的示例中,示出有在两个不同装置上的拉模型和推模型的方面。图7a示出了ip硬件710、仪表板720、加载器ip软件730和验证器ip或安全性引擎740之间的信号流。最初,ip硬件710接收复位或上电事件。当ip硬件710准备好用于固件时,它发送信号以将仪表板720上电。当仪表板720被供电时,它向加载器软件730发送信号“ip_ready_for_firmware”消息或中断。作为响应,加载器软件730从仪表板720读并枚举仪表板能力。一旦加载器软件730已经枚举了仪表板720的能力,它将固件从存储装置或nvm复制到本地或共享存储器中。然后,加载器软件730通过固件的正确地址和大小更新仪表板加载寄存器。接下来,加载器730向仪表板720发送更新加载完成位。仪表板720向验证器ip740发送“load_done”消息或中断。验证器ip740从仪表板720读仪表板加载器寄存器。然后,验证器ip740复制并验证ip硬件710的固件。验证器ip740通过正确的地址和大小来更新仪表板验证器寄存器。然后,验证器ip740设置摄取验证完成位。仪表板720向ip硬件710发送“verify_done”中断。由于已经识别了固件位置并且已经验证了固件,转到图7b,ip硬件710从所提供的验证器地址拉固件。ip硬件710设置针对仪表板720的固件推/拉完成位。仪表板720向验证器ip740发送指示固件推或拉完成的固件“fw_push_pull”完成中断。ip硬件710然后向仪表板720发送数据区域更新请求。仪表板720向验证器ip740转发“data_region_update_req”消息或中断。验证器ip740读仪表板验证器寄存器。验证器ip740然后将数据从验证的地址复制到闪存中。验证器ip740向仪表板720发送通过数据区域更新完成位更新仪表板验证器寄存器。仪表板720向ip硬件710发送“update_done”中断。ip硬件710然后可以从所提供的固件引导。图8a和8b示出了两个装置,即具有拉模型的装置1830和具有推模型的装置2840,其中bios810配置成向装置提供操作固件。在复位或冷引导时,bios810分配更多的存储器。对于具有拉模型的装置1830,bios810枚举ip中的仪表板以检测拉要求。对于具有推模型的装置2840,bios810枚举ip中的仪表板以检测推要求。bios810然后将固件从硬盘或nvm加载到系统存储器,例如dram。对于装置1830,bios810通过所分配的固件的地址更新ip中的加载器仪表板。对于装置2840,bios810通过固件的适当地址更新ip中的加载器仪表板。对于装置2840,bios810然后从ip中的加载器仪表板读地址。对于装置1830,bios810从ip中的加载器仪表板读地址。bios810现在可以验证图像完整性,并且一旦图像被验证,它可以针对一个或两个图像锁定固件存储器。转到图8b,对于装置1830,bios810通过验证的固件的位置来更新ip中的验证器仪表板。装置1830然后从固件存储器中拉固件并引导。对于要求推的装置2840,bios810知道装置2要求推。因此,bios810将固件从固件存储器推到装置2840。然后装置2840可以引导。图9是soc900的选择方面的框图。soc900示出了固件仪表板的具体方面。在此示例中,cpu902包括保护环0904、tee908和ept912。还提供了其他代理916。在此示例中,提供了iosf组构970。ip920通信地耦合到iosf。ip920包括固件920。ip920还包括具有4k对齐地址的仪表板924。仪表板924提供sai保护的加载器策略和寄存器930。仪表板924还提供sai保护的验证器策略和寄存器934。注意,仪表板924可以不具有读保护。然而,寄存器可以被分类为两个不同的群组,即加载器群组和验证器群组,以用于写保护。进一步注意,仪表板寄存器与4k地址边界对齐以用于基于页表的保护。图10示出了仪表板基底1000和加载器基底1010。在图10的实施例中,仪表板基底1000的加载器基底1010被提供到加载器基底1010的加载器错误状态。在某些示例中,(一个或多个)指令可以用在下面详述的“通用向量友好指令格式”来体现。在其他实施例中,使用另一指令格式。写掩码寄存器、各种数据变换(混合(swizzle)、广播等)、寻址等的下面的描述一般可适用于上面(一个或多个)指令的实施例的描述。另外,下面详述示例系统、架构和流水线。上面(一个或多个)指令的实施例可以在那些系统、架构和流水线上执行,但不限于那些详述的系统、架构和流水线。指令集可以包括一个或多个指令格式。给定指令格式可以定义各种字段(例如位的数量、位的位置),以指定(除了其他之外)要执行的操作(例如操作码)和(一个或多个)操作数(要在其上执行该操作)和/或(一个或多个)其他数据字段(例如,掩码)。通过指令模板(或子格式)的定义进一步分解一些指令格式。例如,给定指令格式的指令模板可定义成具有指令格式的字段的不同子集(包括的字段通常按相同顺序,但是至少一些字段具有不同的位位置,因为包括有较少字段)和/或定义成具有不同地解释的给定字段。因此,isa的每个指令使用给定指令格式(并且如果定义,以该指令格式的指令模板中的给定一个)来表达,并且isa的每个指令包括用于指定操作和操作数的字段。在一个实施例中,示例add指令具有特定操作码和指令格式,其包括用于指定该操作码的操作码字段和用于选择操作数的操作数字段(源1/目的地和源2);并且此add指令在指令流中出现将在选择特定操作数的操作数字段中具有特定内容。称为高级向量扩展(avx)(avx1和avx2)并使用向量扩展(vex)编码方案的simd扩展集合已经发行和/或出版(例如,参见2014年9月的intel®64andia-32architecturessoftwaredeveloper’smanual;以及参见2014年10月的intel®advancedvectorextensionsprogrammingreference)。示例指令格式本文描述的(一个或多个)指令的实施例可以用不同的格式来体现。另外,下面详述示例系统、架构和流水线。(一个或多个)指令的实施例可以在此类系统、架构和流水线(但是不限于详述的那些系统、架构和流水线)上执行。通用向量友好指令格式向量友好指令格式是适合于向量指令的指令格式(例如,存在向量操作特定的某些字段)。虽然描述向量和标量操作均经过向量友好指令格式来支持的实施例,但是备选实施例只使用通过向量友好指令格式的向量操作。图11a-11b是示出通用向量友好指令格式及其指令模板的框图,其可以配置成在用于本说明书中公开的ip块的标准化接口内操作。图11a是示出按照本说明书的实施例的通用向量友好指令格式及其a类指令模板的框图;以及图11b是示出按照本说明书的实施例的通用向量友好指令格式及其b类指令模板的框图。特别地,通用向量友好指令格式1100被定义a类和b类指令模板,其均包括无存储器存取1105指令模板和存储器存取1120指令模板。向量友好指令格式的上下文中的术语“通用”表示指令格式没有绑定到任何特定指令集。将描述本说明书的实施例,其中向量友好指令格式支持如下方面:具有32位(4字节)或64位(8字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小)(并且因此64字节向量由16双字大小元素或者备选地8四字大小元素来组成);具有16位(2字节)或8位(1字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小);具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的32字节向量操作数长度(或大小);以及具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的16字节向量操作数长度(或大小);备选实施例可支持更多、更少和/或具有更多、更少或不同数据元素宽度(例如128位(16字节)数据元素宽度)的不同向量操作数大小(例如256字节向量操作数)。图11a中的a类指令模板包括:1)在无存储器存取1105指令模板中,示出无存储器存取、全舍入控制类型操作1110指令模板和无存储器存取、数据变换类型操作1115指令模板;以及2)在存储器存取1120指令模板中,示出存储器存取,临时1125指令模板和存储器存取,非临时1130指令模板。图11b中的b类指令模板包括:1)在无存储器存取1105指令模板中,示出无存储器存取、写掩码控制、部分舍入控制类型操作1112指令模板和无存储器存取、写掩码控制、vsize类型操作1117指令模板;以及2)在存储器存取1120指令模板中,示出存储器存取、写掩码控制1127指令模板。通用向量友好指令格式1100包括下面以图11a-11b中示出的顺序列出的以下字段。格式化字段1140-这个字段中的特定值(指令格式标识符值)唯一地标识向量友好指令格式,并且因而识别指令流中按照向量友好指令格式的指令的出现。因此,在不是仅具有通用向量友好指令格式的指令集所需的意义上,这个字段是可选的。基本操作字段1142—其内容区分不同的基本操作。寄存器索引字段1144—其内容直接地或者经过地址生成来指定源和目的地操作数的位置(如果它们在寄存器中或者在存储器中)。这些包括充分位数,以便从p×q(例如32×512、16×128、32×1024、64×1024)寄存器堆中选择n个寄存器。虽然在一个实施例中,n可总共为三个源和一个目的地寄存器,但是备选实施例可支持更多或更少的源和目的地寄存器(例如,可支持总共两个源(其中这些源之一还充当目的地),可支持总共三个源(其中这些源之一还充当目的地),或可支持总共两个源和一个目的地)。修改符字段1146—其内容区分按照通用向量指令格式的指令的出现,其指定来自不是存储器存取的指令模板的存储器存取;即,在无存储器存取1105指令模板与存储器存取1120指令模板之间。存储器存取操作对存储器分级结构进行读和/或写(在一些情况下,使用寄存器中的值来指定源和/或目的地地址),而非存储器存取操作则不是这样(例如源和目的地是寄存器)。虽然在一个实施例中,这个字段也在执行存储器地址计算的三种不同方式之间进行选择,但是备选实施例可支持执行存储器地址计算的更多、更少或不同的方式。扩大操作字段1150—其内容区分除了基本操作之外、多种不同操作的哪一个还要被执行。这个字段是上下文特定的。在本说明书的一个实施例中,这个字段分为类字段1168、α字段1152和β字段1154。扩大操作字段1150允许操作的共同编组在单个指令、而不是2、3或4个指令中执行。定标字段1160—其内容允许用于存储器地址生成(例如,用于使用2定标*索引+基的地址生成)的索引字段的内容的定标。位移字段1162a—其内容用作存储器地址生成的部分(例如用于使用2定标*索引+基+位移的地址生成)。位移因数字段1162b(注意,直接在位移因数字段1162b之上的位移字段1162a的并置指示使用一个或另一个)—其内容用作地址生成的部分;它指定通过存储器存取的大小(n)来定标的位移因数—其中n是存储器存取中的字节数(例如,用于使用2定标*索引+基+定标的位移的地址生成)。忽略冗余低阶位,并且因此位移因数字段的内容与存储器操作数总大小(n)相乘,以便生成计算有效地址中使用的最终位移。n的值由处理器硬件在运行时基于全操作码字段1174(本文稍后所述)和数据操纵字段1154c来确定。在它们没有用于无存储器存取1105指令模板和/或不同实施例可以仅实现两个中的一个或没有的意义上,位移字段1162a和位移因数字段1162b是可选的。数据元素宽度字段1164—其内容区分要使用多个数据元素宽度的哪一个(在一些实施例中对于全部指令;在其他实施例中仅对于指令的一部分)。在仅支持一个数据元素宽度和/或数据元素宽度使用操作码的某个方面来支持时不需要这个字段的意义上,这个字段是可选的。写掩码字段1170—其内容基于每数据元素位置来控制目的地向量操作数中的那个数据元素位置是否反映基本操作和扩大操作的结果。a类指令模板支持合并–写掩码,而b类指令模板支持合并-和调零-写掩码。当合并时,向量掩码允许目的地中的元素的任何集合在任何操作的执行期间被保护以免更新(通过基本操作和扩大操作所指定);在一个实施例中,保存目的地的各元素的旧值,其中对应掩码位具有0。相比之下,当调零时,向量掩码允许目的地中的元素的任何集合在任何操作的执行期间被调零(通过基本操作和扩大操作所指定);在一个实施例中,当对应掩码位具有0值时,目的地的元素设置为0。这个功能性的子集是控制被执行操作的向量长度的能力(也就是说,元素的跨度从第一个修改成最后一个);但是,修改的元素是连续的不是必需的。因此,写掩码字段1170允许部分向量操作,包括加载、存储、算术、逻辑等。虽然描述写掩码字段1170的内容选择包含待使用写掩码的多个写掩码寄存器其中之一(并且因而写掩码字段1170的内容间接地识别待执行掩码)的本说明书的实施例,但是作为替代或补充,备选实施例允许掩码写字段1170的内容直接指定待执行掩码。立即数(immediate)字段1172—其内容允许立即数的指定。在它存在于不支持立即数的通用向量友好格式的实现中而不存在于没有使用立即数的指令中的意义上,这个字段是可选的。类字段1168—其内容区分指令的不同类。参照图11a-11b,这个字段的内容在a类与b类指令之间进行选择。图11a-11b中,圆角正方形用来指示特定值存在于字段中(例如,分别在图11a-11b中的类字段1168的a类1168a和b类1168b)。a类的指令模板在a类的无存储器存取1105指令模板的情况下,α字段1152被解释为rs字段1152a,其内容区分不同扩大操作类型的哪一个要被执行(例如,对无存储器存取、舍入类型操作1110和无存储器存取、数据变换类型操作1115指令模板分别指定舍入1152a.1和数据变换1152a.2),而β字段1154区分要执行所指定类型的操作的哪一个。在无存储器存取1105指令模板中,不存在定标字段1160、位移字段1162a和位移定标字段1162b。无存储器存取指令模板—全舍入控制类型操作在无存储器存取全舍入控制类型操作1110指令模板中,β字段1154被解释为舍入控制字段1154a,其内容提供静态舍入。虽然在本说明书的所述实施例中,舍入控制字段1154a包括抑制所有浮点异常(sae)字段1156和舍入操作控制字段1158,但是备选实施例可将这些概念均编码到同一字段中,或者仅具有这些概念/字段的一个或另一个(例如可以仅具有舍入操作控制字段1158)。sae字段1156—其内容区分是否禁用异常事件报告;当sae字段1156的内容指示启用抑制时,给定指令不报告任何种类的浮点异常标志,并且不引起任何浮点异常处理程序。舍入操作控制字段1158—其内容区分要执行一组舍入操作的哪一个(例如上舍入、下舍入、向零方向舍入和舍入到最近)。因此,舍入操作控制字段1158允许基于每指令来改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本说明书的一个实施例中,舍入操作控制字段1150的内容忽略那个寄存器值。无存储器存取指令模板—数据变换类型操作在无存储器存取数据变换类型操作1115指令模板中,β字段1154被解释为数据变换字段1154b,其内容区分要执行多个数据变换的哪一个(例如无数据变换、混合、广播)。在a类的存储器存取1120指令模板的情况下,α字段1152被解释为释放提示字段1152b,其内容区分要使用释放提示的哪一个(图11a中,对存储器存取,临时1125指令模板和存储器存取,非临时1130指令模板分别指定临时1152b.1和非临时1152b.2),而β字段1154被解释为数据操纵字段1154c,其内容区分要执行多个数据操纵操作(又称作原语)的哪一个(例如,无操纵、广播、源的上变换和目的地的下变换)。存储器存取1120指令模板包括定标字段1160以及可选的位移字段1162a或位移定标字段1162b。向量存储器指令采用转换支持来执行从存储器的向量加载以及对存储器的向量存储。如同正则向量指令一样,向量存储器指令逐个数据元素地从/向存储器传递数据,其中实际传递的元素通过选择作为写掩码的向量掩码的内容来规定。存储器存取指令模板—临时临时数据是可能足够快重用以从缓存获益的数据。然而,这是提示,并且不同处理器可以用不同方式实现它,包括完全忽略所述提示。存储器存取指令模板—非临时非临时数据是不可能足够快重用以从1级高速缓存中的缓存获益的数据,并且应该给予其驱逐优先级。然而,这是提示,并且不同处理器可以用不同方式实现它,包括完全忽略所述提示。b类的指令模板在b类的指令模板的情况下,α字段1152被解释为写掩码控制(z)字段1152c,其内容区分写掩码字段1170所控制的写掩码应当是合并或调零。在b类的非存储器存取1105指令模板的情况下,β字段1154的部分被解释为rl字段1157a,其内容区分不同扩大操作类型的哪一个要被执行(例如,对无存储器存取、写掩码控制、部分舍入控制操作1112指令模板和无存储器存取、写掩码控制、vsize类型操作1117指令模板分别指定舍入1157a.1和向量长度(vsize)1157a.2),而β字段1154的其余部分区分要执行所指定类型的操作的哪一个。在无存储器存取1105指令模板中,定标字段1160、位移字段1162a和位移定标字段1162b不存在。在无存储器存取、写掩码控制、部分舍入控制类型操作1110指令模板中,β字段1154的其余部分被解释为舍入操作字段1159a,并且禁用异常事件报告(给定指令不报告任何种类的浮点异常标志,并且不提出任何浮点异常处理程序)。舍入操作控制字段1159a—正如舍入操作控制字段1158,其内容区分要执行一组舍入操作的哪一个(例如上舍入、下舍入、向零方向舍入和舍入到最近)。因此,舍入操作控制字段1159a允许基于每指令来改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本说明书的一个实施例中,舍入操作控制字段1150的内容忽略那个寄存器值。在无存储器存取、写掩码控制、vsize类型操作1117指令模板中,β字段1154的其余部分被解释为向量长度字段1159b,其内容区分多个数据向量长度的哪一个要被执行(例如128、256或512字节)。在b类的存储器存取1120指令模板的情况下,β字段1154的部分被解释为广播字段1157b,其内容区分广播广播类型数据操纵操作是否要被执行,而β字段1154的其余部分由向量长度字段1159b解释。存储器存取1120指令模板包括定标字段1160以及可选的位移字段1162a或位移定标字段1162b。关于通用向量友好指令格式1100,示出全操作码字段1174,其包括格式字段1140、基本操作字段1142和数据元素宽度字段1164。虽然示出全操作码字段1174包括全部这些字段的一个实施例,但是在不支持它们全部的实施例中,全操作码字段1174包括少于全部这些字段。全操作码字段1174提供操作代码(操作码)。扩大操作字段1150、数据元素宽度字段1164和写掩码字段1170允许这些特征基于每指令在通用向量友好指令格式中指定。写掩码字段和数据元素宽度字段的组合创建有类型指令,因为它们允许掩码基于不同数据元素宽度来应用。存在于a类和b类中的各种指令模板在不同状况中是有益的。在本说明书的一些实施例中,不同处理器或者处理器中的不同核可支持a类、仅b类或者两类。例如,预计用于通用计算的高性能通用无序核可以仅支持b类,主要预计用于图形和/或科学(吞吐量)计算的核可以仅支持a类,以及预计用于两者的核可支持两者(当然,具有来自两类的模板和指令的某种混合但是没有来自两类的所有模板和指令的核处于本说明书的范围之内)。另外,单个处理器可包括多个核,其全部支持相同类,或者其中不同核支持不同类。例如,在具有独立图形和通用核的处理器中,主要预计用于图形和/或科学计算的图形核之一可以仅支持a类,而通用核的一个或多个可以是具有预计用于通用计算的无序执行和寄存器重命名的高性能通用核,其仅支持b类。没有独立图形核的另一个处理器可包括一个或多个通用有序或无序核,其支持a类以及b类。当然,在本说明书的不同实施例中,来自一类的特征也可在另一类中实现。通过高级语言所编写的程序输入(例如就在编译或静态编译时)到多种不同的可执行形式中,包括:1)仅具有目标处理器所支持的一个或多个类的指令供执行的形式;或者2)具有使用所有类的指令的不同组合所编写的备选例程并且具有控制流程代码(其基于当前运行代码的处理器所支持的指令来选择要运行的例程)的形式。示例特定向量友好指令格式图12a-12d是示出示例特定向量友好指令格式的框图,所述示例特定向量友好指令格式可以配置成在用于本说明书中公开的ip块的标准化接口内操作。图12a示出特定向量友好指令格式1200,其在指定字段的位置、大小、解释和顺序以及那些字段的一部分的值的意义上是特定的。特定向量友好指令格式1200可用来扩展x86指令集,并且因而字段的一部分与现有x86指令集及其扩展(例如avx)中使用的字段相似或相同。这个格式保持为与具有扩展的现有x86指令集的前缀编码字段、真正操作码字节字段、modr/m字段、定标/索引/基(sib)字段、位移字段和立即数字段一致。示出来自图12a的字段映射到其中的来自图11a和11b的字段。应当理解,虽然为了便于说明而在通用向量友好指令格式1100的上下文中参照特定向量友好指令格式1200来描述本说明书的实施例,但是本说明书并不局限于特定向量友好指令格式1200,除了要求保护的情况之外。例如,通用向量友好指令格式1100考虑各种字段的多种可能大小,而特定向量友好指令格式1200示为具有特定大小的字段。通过特定示例,虽然数据元素宽度字段1164示为特定向量友好指令格式1200中的一位字段,但是本说明书并不局限于此(也就是说,通用向量友好指令格式1100考虑数据元素宽度字段1164的其他大小)。通用向量友好指令格式1100包括下面以图12a中示出的顺序列出的以下字段。evex前缀(字节0-3)1202—以四字节形式编码。格式字段1140(evex字节0,位[7:0])—第一字节(evex字节0)是格式字段1140,并且它包含0×62(在一个实施例中,用于区分向量友好指令格式的唯一值)。第二至第四字节(evex字节1-3)包括提供特定能力的多个位字段。rex字段1205(evex字节1,位[7-5])—由evex.r位字段(evex字节1,位[7]–r)、evex.x位字段(evex字节1,位[6]–x)和1157bex字节1、位[5]–b)来组成。evex.r、evex.x和evex.b位字段提供与对应vex位字段相同的功能性,并且使用1补数形式来编码,即,zmm0编码为1111b,zmm15编码为0000b。指令的其他字段如本领域已知对寄存器索引的下三位进行编码(rrr、xxx和bbb),使得rrrr、xxxx和bbbb可通过相加evex.r、evex.x和evex.b来形成。rex’字段1110—这是rex’字段1110,并且是evex.r’位字段(evex字节1,位[4]–r’),其用来对扩展32寄存器组的上方16或下方16进行编码。在一个实施例中,这个位连同如以下所示的其他位按照位反转格式来存储,以与bound指令进行区分(在众所周知的x8632位模式),其真正操作码字节为62,但是在modr/m字段(以下所述)中不接受mod字段中的值11;其他实施例不按照反转格式来存储这个和下面的其他所指示位。值1用来对下方16个寄存器进行编码。换言之,r’rrrr通过组合evex.r’、evex.r和来自其他字段的其他rrr来形成。操作码映射字段1215(evex字节1,位[3:0]-mmmm)—其内容对暗示超前操作码字节(0f、0f38或0f3)进行编码。数据元素宽度字段1164(evex字节2,位[7]-w)—通过记号evex.w来表示。evex.w用来定义数据类型的粒度(大小)(32位数据元素或者64位数据元素)。evex.vvvv1220(evex字节2,位[6:3]-vvvv)—evex.vvvv的作用可包括如下所示:1)evex.vvv对于按照反转(1补码)形式所指定的第一源寄存器操作数进行编码,并且对具有2或以上源操作数的指令是有效的;2)evex.vvvv对于某些向量移位对于按照1补码所指定的目的地寄存器操作数进行编码;或者3)evex.vvvv没有对任何操作数进行编码,该字段被保留并且应当包含1111b。因此,evex.vvvv字段1220对于按照反转(1补码)形式所存储的第一源寄存器指定符的4个低阶位进行编码。取决于指令,额外的不同evex位字段用来将特定大小扩展到32个寄存器。evex.u1168类字段(evex字节2,位[2]-u)—如果evex.u=0,则它指示a类或evex.u0;如果evex.u=1,则它指示b类或evex.u1。前缀编码字段1225(evex字节2,位[1:0]-pp)—提供基本操作字段的附加位。除了提供对evex前缀格式的传统sse指令的支持之外,这还具有压缩simd前缀(而不是要求一字节来表达simd前缀,evex前缀仅要求2位)的有益效果。在一个实施例中,为了支持使用按照传统格式和按照evex前缀格式的simd前缀(66h、f2h、f3h)的传统sse指令,这些传统simd前缀编码为simd前缀编码字段;以及在被提供给解码器的可编程逻辑阵列(pla)(因此pla能够未经修改地运行这些传统指令的传统和evex格式)之前在运行时扩大为传统simd前缀。虽然较新指令可将evex前缀编码字段的内容直接用作操作码扩展,但是某些实施例按照类似方式扩大以获得一致性,但是允许不同含意由这些传统simd前缀来指定。备选实施例可重新设计pla,以支持2位simd前缀编码,并且因而不要求扩大。α字段1152(evex字节3,位[7]-eh;又称为evex.eh、evex.rs、evex.rl、evex.写掩码控制和evex.n;还通过α示出)—如先前所描述的,此字段是上下文特定的。β字段1154(evex字节3、位[6:4]-sss,又称为evex.s2-0、evex.r2-0、evex.rr1、evex.ll0、evex.llb;还通过βββ示出)—如先前所描述的,此字段是上下文特定的。rex’字段1110—这是rex’字段的剩余部分,并且是可用于编码扩展的32个寄存器集合的较上16个或较低16个寄存器的evex.v’位字段(evex字节3,位[3]-v’)。以位倒转格式存储此位。值1用于编码较低的16个寄存器。换句话说,通过组合evex.v’和evex.vvvv而形成v’vvvv。写掩码字段1170(evex字节3,位[2:0]-kkk)—其内容指定写掩码寄存器中的寄存器的索引,如先前所述。在一个实施例中,特定值evex.kkk=000具有暗示没有写掩码用于特定指令的特殊行为(这可按照多种方式来实现,包括使用硬连线到全部一的写掩码或者绕过掩码硬件的硬件)。真正操作码字段1230(字节4)又称作操作码字节。操作码的部分在这个字段中指定。modr/m字段1240(字节5)包括mod字节1242、reg字段1244和/或r/m字段1246。如先前所述,mod字段1242的内容区分存储器存取和非存储器存取操作。reg字段1244的作用能够概括成两种状况:对目的地寄存器操作数或者源寄存器操作数进行编码,或者被看作是操作码扩展而不用来对任何指令操作数进行编码。r/m字段1246的作用可包括如下所示:对于引用存储器地址的指令操作数进行编码,或者对目的地寄存器操作数或源寄存器操作数进行编码。sib字节(字节6)—如先前所述,定标字段1150的内容用于存储器地址生成。sib.ss1252、sib.xxx1254和sib.bbb1256—先前针对寄存器索引xxxx和bbbb已经提到这些字段的内容。位移字段1162a(字节7-10)—当mod字段6642包含10时,字节7-10是位移字段1162a,并且它与传统32位位移(disp32)相同地进行工作,并且以字节粒度进行工作。位移因数字段1162b(字节7)—当mod字段1242包含01时,字节7是位移因数字段1162b。这个字段的位置是与传统x86指令集8位位移(disp8)相同的字段,其以字节粒度进行工作。由于disp8是符号扩展,所以它能够仅在-128与127字节偏移之间进行寻址;根据64字节高速缓存线,disp8使用8位,其能够设置成仅四个实际有用值-128、-64、0和64;由于常常需要较大范围,所以使用disp32;但是disp32要求4个字节。与disp8和disp32形成对照,位移因数字段1162b是disp8的重新解释;当使用位移因数字段1162b时,实际位移通过位移因数字段的内容乘以存储器操作数存取的大小(n)来确定。这种类型的位移称作disp8*n。这减少平均指令长度(用于位移但是具有大许多的范围的单个字节)。这种压缩位移基于如下假设:有效位移是存储器存取的粒度的倍数,并且因此地址偏移的冗余低阶位无需被编码。换言之,位移因数字段1162b代替传统x86指令集8位位移。因此,位移因数字段1162b按照与x86指令集8位位移相同的方式来编码(因此没有modrm/sib编码规则的变化),其中唯一的例外是disp8过度加载到disp8*n。换言之,不存在编码规则或编码长度的变化,而是仅存在硬件(其需要将位移缩放存储器操作数的大小,以得到逐字节的地址偏移)对位移值的解释的变化。立即数字段1172如先前所述进行操作。全操作码字段图12b是示出按照一个实施例、组成全操作码字段1174的特定向量友好指令格式1200的字段的框图。特别地,全操作码字段1174包括格式字段1140、基本操作字段1142和数据元素宽度(w)字段1164。基本操作字段1142包括前缀编码字段1225、操作码映射字段1215和真正操作码字段1230。寄存器索引字段图12c是示出按照一个实施例、组成寄存器索引字段1144的特定向量友好指令格式1200的字段的框图。特别地,寄存器索引字段1144包括rex字段1205、rex’字段1210、modr/m.reg字段1244、modr/m.r/m字段1246、vvvv字段1220、xxx字段1254和bbb字段1256。扩大操作字段图12d是示出按照一个实施例、组成扩大操作字段1150的特定向量友好指令格式1200的字段的框图。当类(u)字段1168包含0时,它表示evex.u0(a类1168a);当它包含1时,它表示evex.u1(b类1168b)。当u=0并且mod字段1242包含11(表示无存储器存取操作)时,α字段1152(evex字节3,位[7]–eh)被解释为rs字段1152a。当rs字段1152a包含1(舍入1152a.1)时,β字段1154(evex字节3,位[6:4]–sss)被解释为舍入控制字段1154a。舍入控制字段1154a包括一位sae字段1156和二位舍入操作字段1158。当rs字段1152a包含0(数据变换1152a.2)时,β字段1154(evex字节3,位[6:4]–sss)被解释为三位数据变换字段1154b。当u=0并且mod字段1242包含00、01或10(表示存储器存取操作)时,α字段1152(evex字节3,位[7]–eh)被解释为释放提示(eh)字段1152b,以及β字段1154(evex字节3,位[6:4]–sss)被解释为三位数据操纵字段1154c。当u=1时,α字段1152(evex字节3,位[7]–eh)被解释为写掩码控制(z)字段1152c。当u=1并且mod字段1242包含11(表示无存储器存取操作)时,β字段1154(evex字节3,位[4]–s0)被解释为rl字段1157a;当它包含1(舍入1157a.1)时,β字段1154(evex字节3,位[6-5]–s2-1)的其余部分被触解释为舍入操作字段1159a,而当rl字段1157a包含0(vsize1157.a2)时,β字段1154(evex字节3,位[6-5]–s2-1)的其余部分被解释为向量长度字段1159b(evex字节3,位[6-5]–l1-0)。当u=1并且mod字段1242包含00、01或10(表示存储器存取操作)时,β字段1154(evex字节3,位[6:4]–sss)被解释为向量长度字段1159b(evex字节3,位[6-5]–l1-0)和广播字段1157b(evex字节3,位[4]–b)。示例寄存器架构图13是寄存器架构1300的框图,其可以配置成在用于在本说明书中公开的ip块的标准化接口内操作。在示出的实施例中,存在32个512位宽的向量寄存器1310;这些寄存器称为zmm0至zmm31。较低16个zmm寄存器的低阶256位覆盖在寄存器ymm0-16上。较低16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。特定向量友好指令格式1200在这些覆盖的寄存器堆上操作,如下面在表中示出的。换言之,向量长度字段1159b在最大长度与一个或多个其他较短长度之间进行选择,其中每个这种较短长度是超前长度的一半长度;以及没有向量长度字段1159b的指令模板对最大向量长度进行操作。此外,在一个实施例中,特定向量友好指令格式1200的b类指令模板对封装或标量单/双精度浮点数据和封装或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置所执行的操作;高阶数据元素位置保持为与它们在指令之前原本的情况相同或者根据本实施例调零。写掩码寄存器1315—在所示实施例中,存在8个写掩码寄存器(k0至k7),每个的大小为64位。在备选实施例中,写掩码寄存器1315的大小为16位。如先前所述,在一个实施例中,向量掩码寄存器k0不能用作写掩码;当正常指示k0的编码用于写掩码时,它选择0xffff的硬连线写掩码,从而有效地禁用那个指令的写掩码。通用寄存器1325—在所示实施例中,存在16个64位通用寄存器,其连同现有x86寻址模式一齐用来对存储器操作数进行寻址。这些寄存器通过名称rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp和r8至r15。标量浮点栈寄存器堆(x87栈)1345(其上被混叠mmx封装整数平面寄存器堆1350)—在所示实施例中,x87栈是八元素栈,其用来使用x87指令集扩展对32/64/80位浮点数据执行标量浮点运算;而mmx寄存器用来对64位封装整数数据执行操作,以及保存在mmx与xmm寄存器之间执行的一些操作的操作数。其他实施例可使用更宽或更窄的寄存器。另外,其他实施例可使用更多、更少或不同的寄存器堆和寄存器。示例核架构、处理器和计算机架构处理器核可按照不同方式为了不同目的并且在不同的处理器中实现。例如,这类核的实现可包括:1)预计用于通用计算的通用有序核;2)预计用于通用计算的高性能通用无序核;3)主要预计用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)cpu,包括预计用于通用计算的一个或多个通用有序核和/或预计用于通用计算的一个或多个通用无序核;以及2)协处理器,包括主要预计用于图形和/或科学吞吐量的一个或多个专用核。这类不同的处理器引起不同的计算机系统架构,其可包括:1)与cpu分开的芯片上的协处理器;2)与cpu相同的封装中的独立管芯上的协处理器;3)与cpu相同的管芯上的协处理器(在这种情况下,这种协处理器有时称作专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者称作专用核);以及4)可在相同管芯上包括所述cpu(有时称作(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器和附加功能性的soc。接下来描述示例核架构,之后跟着示例处理器和计算机架构的描述。示例核架构有序和无序核框图图14a是示出示例有序流水线和示例寄存器重命名、无序发布/执行流水线的框图。图14b是示出要包括在处理器中的有序架构核的实施例和示例寄存器重命名、无序发布/执行架构核两者的框图。图14a-14b的示例可以配置成在用于在本说明书中公开的ip块的标准化接口内操作。图14a-14b中的实线框示出有序流水线和有序核,而虚线框的可选添加示出寄存器重命名、无序发布/执行流水线和核。在给定有序方面是无序方面的子集的情况下,将描述无序方面。图14a中,处理器流水线1400包括取级1402、长度解码级1404、解码级1406、分配级1408、重命名级1410、调度(又称作分发或发布)级1412、寄存器读/存储器读级1414、运行级1416、回写/存储器写级1418、异常处理级1422和提交级1424。图14b示出包括耦合到执行引擎单元1450的前端单元1430(并且它们两者均耦合到存储器单元1470)的处理器核1490。核1490可以是简化指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或者混合或备选核类型。作为又一个选项,核1490可以是专用核(例如网络或通信核)、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核等。前端单元1430包括耦合到指令高速缓存单元1434的分支预测单元1432,指令高速缓存单元1634耦合到指令转换后备缓冲器(tlb)1436,指令转换后备缓冲器(tlb)1636耦合到指令取单元1438,指令取单元1638耦合到解码单元1440。解码单元1440(或者解码器)可对指令进行解码,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,其从原始指令来解码或得出或者以其他方式反映原始指令。解码单元1440可使用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、pla、微码只读存储器(rom)等。在一个实施例中,核1490包括微代码rom或另一介质,其存储某些宏指令的微代码(例如在解码单元1440中或者在前端单元1430中)。解码单元1440耦合到执行引擎单元1450中的重命名/分配器单元1452。执行引擎单元1450包括重命名/分配器单元1452,其耦合到引退单元1454和一组一个或多个调度器单元1456。(一个或多个)调度器单元1456表示任何数量的不同调度器,包括保留站、中心指令窗口等。(一个或多个)调度器单元1456耦合到(一个或多个)物理寄存器堆单元1458。(一个或多个)物理寄存器堆单元1458的每个表示一个或多个物理寄存器堆,其中不同的寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、封装整数、封装浮点、向量整数、向量浮点、状态(例如,作为要运行的下一个指令的地址的指令指针)等。在一个实施例中,物理寄存器堆单元1458包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元1458被引退单元1454重叠,以示出可实现寄存器重命名和无序执行的各种方式(例如使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)将来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元1454和(一个或多个)物理寄存器堆单元1458耦合到(一个或多个)执行集群1460。(一个或多个)执行集群1460包括一组一个或多个执行单元1462和一组一个或多个存储器存取单元1464。执行单元1462可执行各种操作(例如移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、封装整数、封装浮点、向量整数、向量浮点)来执行。虽然一些实施例可包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可以仅包括一个执行单元或多个执行单元,其全部执行全部功能。(一个或多个)调度器单元1456、(一个或多个)物理寄存器堆单元1458和(一个或多个)执行聚类1460示为可能是多个的,因为某些实施例创建某些类型的数据/操作的独立流水线(例如标量整数流水线、标量浮点/封装整数/封装浮点/向量整数/向量浮点流水线和/或存储器存取流水线,其各具有其自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行聚类—以及在独立存储器存取流水线的情况下,实现只有这个流水线的执行聚类具有(一个或多个)存储器存取单元1464的某些实施例)。还应当理解,在使用独立流水线的情况下,这些流水线的一个或多个可以是无序发布/执行,而其余的是有序的。存储器存取单元1464的集合耦合到存储器单元1470,其包括耦合到数据高速缓存单元1474(其耦合到2级(l2)高速缓存单元1476)的数据tlb单元1472。在一个实施例中,存储器存取单元1464可包括加载单元、存储地址单元和存储数据单元,其各耦合到存储器单元1470中的数据tlb单元1472。指令高速缓存单元1434还耦合到存储器单元1470中的2级(l2)高速缓存单元1476。l2高速缓存单元1476耦合到一个或多个其他等级的高速缓存,并且最终耦合到主存储器。作为举例,寄存器重命名、无序发布/执行核架构可按如下所述实现流水线1400:1)指令取1438执行取和长度解码级1402和1404;2)解码单元1440执行解码级1406;3)重命名/分配器单元1452执行分配级1408和重命名级1410;4)(一个或多个)调度器单元1456执行调度级1412;5)(一个或多个)物理寄存器堆单元1458和存储器单元1470执行寄存器读/存储器读级1414;执行集群1460执行运行级1416;6)存储器单元1470和(一个或多个)物理寄存器堆单元1458执行回写/存储器写级1418;7)各种单元可包含在异常处理级1422中;以及8)引退单元1454和(一个或多个)物理寄存器堆单元1458执行提交级1424。核1490可支持一个或多个指令集(例如x86指令集(其中具有随较新版本已经添加的一些扩展);sunnyvale,ca的mipstechnologies的mips指令集;sunnyvale,ca的armholdings的arm指令集(其中具有可选附加扩展、例如neon)),包括本文所述的(一个或多个)指令。在一个实施例中,核1490包括支持封装数据指令集扩展的逻辑(例如avx1、avx2),由此允许许多多媒体应用所使用的操作使用封装数据来执行。应当理解,核可支持多线程运行(运行操作或线程的两个或更多并行集合),并且可按照多种方式这样做,包括时间切片多线程运行、同时多线程运行(其中单个物理核为物理核同时多线程运行的线程的每个提供逻辑核)或者其组合(例如,例如在intel®超线程技术中的时间切片取和解码以及此后的同时多线程运行)。虽然在无序执行的上下文中描述寄存器重命名,但是应当理解,寄存器重命名可用于有序架构中。虽然处理器的所示实施例还包括独立指令和数据高速缓存单元1434/1474和共享l2高速缓存单元1476,但是备选实施例可具有用于指令和数据的单个内部高速缓存,例如1级(l1)内部高速缓存或者多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存以及核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存全部可以是核和/或处理器外部的。示例有序核架构图15a-15b示出更特定的示例有序核架构的框图,该核将会是芯片中的若干逻辑块中的一个(包括相同类型和/或不同类型的其他核)。图15a-15b的示例可以配置成在用于在本发明中公开的ip块的标准化接口内操作。逻辑块通过具有某一固定功能逻辑、存储器i/o接口和其他必要i/o逻辑(取决于应用)的高带宽互连网络(例如环形网络)进行通信。图15a是按照一个或多个实施例、单个处理器核连同其到管芯上互连网络1502的连接并且与其2级(l2)高速缓存1504的本地子集的连接的框图。在一个实施例中,指令解码器1500支持具有封装数据指令集扩展的x86指令集。l1高速缓存1506允许对标量和向量单元中的高速缓冲存储器的低等待时间访问。虽然在一个实施例中(为了简化设计),标量单元1508和向量单元1510使用独立寄存器组(分别为标量寄存器1512和向量寄存器1514),以及在它们之间所传递的数据被写到存储器并且然后从1级(l1)高速缓存1506读回,但是其他实施例可使用不同方式(例如使用单个寄存器组,或者包括允许数据在两个寄存器堆之间来传递的通信,而无需被写入和读回)。l2高速缓存1504的本地子集是全局l2高速缓存(其划分为独立本地子集,每处理器核一个)的部分。各处理器核具有到l2高速缓存1504的其自己的本地子集的直接访问通路。由处理器核所读取的数据存储在其l2高速缓存子集1504中,并且能够与访问其自己的本地l2高速缓存子集的其他处理器核并行地快速访问。由处理器核所写入的数据存储在其自己的l2高速缓存子集1504中,并且在需要时从其他子集来刷新。环形网络确保共享数据的一致性。环形网络是双向的,以便允许诸如处理器核、l2高速缓存和其他逻辑块之类的代理能够在芯片中相互通信。各环形数据通路每方向为1012位宽。图15b是按照本说明书的实施例、图15a中的处理器核的部分的展开图。图15b包括l1高速缓存1504的l1数据高速缓存1506a部分以及与向量单元1510和向量寄存器1514有关的更多细节。特别地,向量单元1510是16宽向量处理单元(vpu)(参见16宽alu1528),其运行整数、单精度浮点和双精度浮点指令中的一个或多个。vpu支持采用混合单元1520来混合寄存器输入、采用数字转换单元1522a-b的数字转换以及采用复制单元1524对存储器输入的复制。写掩码寄存器1526允许断言所产生向量写。图16是根据本发明的实施例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器1600的框图。图16的示例可以配置成在用于在本说明书中公开的ip块的标准化接口内操作。图16中的实线框示出具有单个核1602a、(一个或多个)高速缓存单元1604a、系统代理1610、一个或多个总线控制器单元1616的集合的处理器1600,而虚线框的可选添加示出具有多个核1602a-n、高速缓存单元1604a-n、系统代理单元1610中的一个或多个集成存储器控制器单元1614的集合和专用逻辑1608的备选处理器1600。因此,处理器1600的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1608和作为一个或多个通用核(例如通用有序核、通用无序核、两者的组合)的核1602a-n的cpu;2)具有作为主要预计用于图形和/或科学(吞吐量)的大量专用核的核1602a-n的处理器;以及3)具有作为大量通用有序核的核1602a-n的协处理器。因此,处理器1600可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、gpgpu、高吞吐量多集成核(mic)协处理器(包括30个或以上核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器1600可以是一个或多个衬底的一部分和/或可使用多种工艺技术的任一种(诸如例如bicmos、cmos或nmos)在一个或多个衬底上实现。存储器分级结构包括核中的一级或多级高速缓存、一组一个或多个共享高速缓存单元1606以及耦合到集成存储器控制器单元1614的集合的外部存储器(未示出)。共享高速缓存单元1606的集合可包括一个或多个中间级高速缓存,例如2级(l2)、3级(l3)、4级(l4)或者其他高速缓存级、最后一级高速缓存(llc)和/或它们的组合。虽然在一个实施例中,基于环形的互连单元1612互连集成图形逻辑1608、共享高速缓存单元1606的集合和系统代理单元1610/(一个或多个)集成存储器控制器单元1614,但是备选实施例可将任何数量的众所周知技术用于互连这类单元。在一个实施例中,在一个或多个高速缓存单元1606与核1602a-n之间保持一致性。在一些实施例中,核1602a-n的一个或多个能够进行多线程运行。系统代理1610包括协调和操作核1602a-n的那些组件。系统代理单元1610可包括例如功率控制单元(pcu)和显示单元。pcu可以是或者包括用于调节核1602a-n和集成图形逻辑1608的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。核1602a-n在架构指令集方面可以是同构或异构的;也就是说,核1602a-n中的两个或更多可以能够运行相同指令集,而其他核可以能够仅运行那个指令集的子集或者不同的指令集。示例计算机架构图17-20是示例计算机架构的框图,其可以配置成在用于在本说明书中公开的ip块的标准化接口内操作。用于膝上型、台式、手持pc、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器,数字信号处理器(dsp)、图形装置、视频游戏装置、机顶盒、微控制器,蜂窝电话、便携媒体播放机、手持装置和各种其他电子装置的本领域已知的其他系统设计和配置也是适合的。一般来说,能够结合本文所公开的处理器和/或其他执行逻辑的大量系统或电子装置一般是适合的。现在参照图17,所示的是按照一个实施例的系统1700的框图。系统1700可包括一个或多个处理器1710、1715,其耦合到控制器中枢1720。在一个实施例中,控制器中枢1720包括图形存储控制器中枢(gmch)1790和输入/输出中枢(ioh)1750(其可在独立芯片上);gmch1790包括存储器和图形控制器,存储器1740和协处理器1745与其耦合;ioh1750将输入/输出(i/o)装置1760耦合到gmch1790。备选地,存储器和图形控制器的一个或两者集成在处理器中(如本文所述),存储器1740和协处理器1745直接耦合到处理器1710以及具有ioh1750的单个芯片中的控制器中枢1720。附加处理器1715的可选性质在图17中采用虚线表示。各处理器1710、1715可包括本文所述处理核的一个或多个,并且可以是处理器1600的某个版本。存储器1740可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或者两者的组合。对于至少一个实施例,控制器中枢1720经由多点总线(例如前侧总线(fsb))、点对点接口(例如超路径互连(upi))或者类似连接1795与(一个或多个)处理器1710、1715进行通信。在一个实施例中,协处理器1745是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等。在一个实施例中,控制器中枢1720可包括集成图形加速器。在包括架构、微架构、热、功率消耗特性等的质量量度的范围方面,在物理资源1710、1715之间存在各种差异。在一个实施例中,处理器1710运行控制通用类型的数据处理操作的指令。嵌入在指令中的可以是协处理器指令。处理器1710将这些协处理器指令识别为应当由所附连的协处理器1745来运行的类型。相应地,处理器1710在协处理器总线或另一互连上向协处理器1745发布这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1745接受和运行所接收的协处理器指令。现在参考图18,示出的是第一更特定示例系统1800的框图。如图18所示,多处理器系统1800是点对点互连系统,并且包括经由点对点互连1850所耦合的第一处理器1870和第二处理器1880。处理器1870和1880的每个可以是处理器1600的某个版本。在一个实施例中,处理器1870和1880分别是处理器1710和1715,而协处理器1838是协处理器1745。在另一个实施例中,处理器1870和1880分别是处理器1710、协处理器1745。示出处理器1870和1880,其分别包括集成存储器控制器(imc)单元1872和1882。处理器1870还包括作为其总线控制器单元的部分的点对点(p-p)接口1876和1878;类似地,第二处理器1880包括p-p接口1886和1888。处理器1870、1880可使用点对点(p-p)接口电路1878、1888经由p-p接口1850来交换信息。如图18所示,imc1872和1882将处理器耦合到相应存储器、即存储器1832和存储器1834,其可以是本地附连到相应处理器的主存储器的部分。处理器1870、1880各自可使用点对点接口电路1876、1894、1886、1898经由单独p-p接口1852、1854与芯片组1890交换信息。芯片组1890可选地可经由高性能接口1839与协处理器1838交换信息。在一个实施例中,协处理器1838是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等。共享高速缓存(未示出)可包含处理器中或者两个处理器外部,但是仍然经由p-p互连与处理器连接,使得如果使处理器进入低功耗模式,则任一个或两个处理器的本地高速缓存信息可存储在共享高速缓存中。芯片集1890可经由接口1892和1896耦合到第一总线1816。在一个实施例中,作为非限制性示例,第一总线1816可以是pci总线或者例如pciexpress总线的总线或另一种第三代io互连总线。如图18所示,各种i/o装置1814可连同总线桥1818(其将第一总线1816耦合到第二总线1820)一起耦合到第一总线1816。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或dsp单元)、现场可编程门阵列或者任何其他处理器之类的一个或多个附加处理器1815耦合到第一总线1816。在一个实施例中,第二总线1820可以是低引脚数(lpc)总线。在一个实施例中,各种装置可耦合到第二总线1820,包括例如键盘和/或鼠标1822、通信装置1827以及可包括指令或代码和数据1830的诸如磁盘驱动器或其他大容量存储装置之类的存储单元1828。此外,音频io1824可耦合到第二总线1820。注意,其他架构是可能的。例如,代替图18的点对点架构,系统可实现多点总线或其他这种架构。现在参考图19,示出的是第二更特定示例系统1900的框图。图18和图19带有相同参考数字,并且已经从图19中省略图18的某些方面,以避免模糊图19的其他方面。图19示出处理器1870、1880可分别包括集成存储器和i/o控制逻辑(“cl”)1872和1882。因此,cl1872、1882包括imc单元,并且包括io控制逻辑。图19不仅示出存储器1832、1834耦合到cl1872、1882,而且还示出io装置1914也耦合到控制逻辑1872、1882。传统io装置1915耦合到芯片组1890。现在参考图20,示出的是根据实施例的片上系统(soc)2000的框图。图16中的类似元件带有相同参考数字。而且,虚线框是更高级soc上的可选特征。图20中,(一个或多个)互连单元2002耦合到应用处理器2010,其包括一组一个或多个核202a-n和(一个或多个)共享高速缓存单元1606;系统代理单元1610;(一个或多个)总线控制器单元1616;(一个或多个)imc单元1614;一组一个或多个协处理器2020,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元2030;直接存储器存取(dma)单元2032;以及显示单元2040,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器2020包括专用处理器,例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器等。本文所公开的机制的实施例可通过硬件、软件、固件或者这类实现方式的组合来实现。一些实施例可实现为在可编程系统上运行的计算机程序或程序代码,其中可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。例如图18所示的代码1830等程序代码可应用于输入指令,以执行本文所述的功能并且生成输出信息。输出信息可按照已知方式应用于一个或多个输出装置。为了便于本申请,处理系统包括具有诸如例如dsp、微控制器、专用集成电路(asic)或者微处理器等微处理器的任何系统。程序代码可通过高级过程或面向对象的编程语言来实现,以便与处理系统进行通信。根据需要,程序代码也可通过汇编或机器语言来实现。实际上,本文所述的机制的范围并不局限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。至少一个实施例的一个或多个方面可通过机器可读介质上存储的、表示处理器中的各种逻辑的代表指令来实现,其在由机器读取时使机器制作执行本文所述技术的逻辑。称作“知识产权(ip)核”的这类表示可存储在有形机器可读介质上,并且提供给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。这种机器可读存储介质可以非限制性地包括通过机器或装置所制造或形成的产品的非暂时有形布置,其中包括:例如硬盘等存储介质;任何其他类型的磁盘,包括软盘、光盘、致密光盘只读存储器(cd-rom)、可重写致密光盘(cd-rw)和磁光盘;半导体器件,例如(rom)、例如dram、saram之类的随机存取存储器(ram)、可擦可编程只读存储器(eprom)、闪速存储器、电可擦可编程只读存储器(eeprom)、(pcm);磁卡或光卡;或者适合于存储电子指令的任何其他类型的介质。相应地,一些实施例还包括非暂时有形机器可读介质,其包含指令或者包含定义本文所述结构、电路、设备、处理器和/或系统特征的设计数据、例如硬件描述语言(hdl)。这类实施例又可称作程序产品。模拟(包括二进制转换,代码变形等)在一些情况下,指令转换器可用来将指令从源指令集转换成目标指令集。例如,指令转换器可将指令转化(例如使用静态二进制转化或包括动态编译的动态二进制转化)、变形、模拟或者以其他方式变换成将要由核来处理的一个或多个其他指令。指令转换器可通过软件、硬件、固件或其何组合来实现。指令转换器可以在处理器上、处理器外或者部分处理器上和部分处理器外。图21是与使用软件指令转化器来将源指令集中的二进制指令转化成目标指令集中的二进制指令相对照的框图。图21的示例可以配置成在用于在本说明书中公开的ip块的标准化接口内操作。在所示实施例中,指令转换器是软件指令转换器,但是备选地,指令转换器可通过软件、固件、硬件或者它们的各种组合来实现。图21示出高级语言2102的程序可使用x86编译器2104来编译,以生成x86二进制代码2106,其可由具有至少一个x86指令集核的处理器2116原生运行。具有至少一个x86指令集核的处理器2116表示任何处理器,其能够通过兼容地运行或者以其他方式处理下列方面来执行与具有至少一个x86指令集核的intel®处理器基本上相同的功能:(1)intel®x86指令集核的指令集的大部分;或者(2)针对运行于具有至少一个x86指令集核的intel®处理器的应用或其他软件的对象代码版本,以便取得与具有至少一个x86指令集核的intel®处理器基本上相同的结果。x86编译器2104表示可操作以生成x86二进制代码2106(例如对象代码)(其能够在具有或没有附加链接处理的情况下运行于具有至少一个x86指令集核的处理器2116)的编译器。类似地,图21示出高级语言2102的程序可使用备选指令集编译器2108来编译,以便生成备选指令集二进制代码2110,其可由没有至少一个x86指令集核的处理器2114(例如具有运行mipstechnologies(sunnyvale,ca)的mips指令集和/或运行armholdings(sunnyvale,ca)的arm指令集的核的处理器)原生运行。指令转换器2112用来将x86二进制代码2106转换为可由没有x86指令集核的处理器2114原生运行的代码。这个转换代码不可能与备选指令集二进制代码2110是相同的,因为能够进行这个操作的指令转换器难以制作;但是,转换代码将实现一般操作,并且由来自备选指令集的指令来组成。因此,指令转换器2112表示软件、固件、硬件或者其组合,其经过模拟、仿真或者任何其他过程允许处理器或者没有x86指令集处理器或核的另一电子装置运行x86二进制代码2106。本申请还公开了一组技术方案,如下:1.一种片上系统(soc),包括:处理器核;组构;经由所述组构通信地耦合到所述处理器核的第一知识产权(ip)块,所述第一ip块具有配置成提供第一微控制器架构的第一微控制器;配置成向所述第一微控制器架构提供标准化硬件接口的第一固件加载接口,其中所述标准化硬件接口提供架构不可知的机制,以将第一固件安全地加载到所述第一知识产权块;以及用于提供加载器以经由所述第一固件加载接口将固件加载到所述第一ip块的逻辑。2.如技术方案1所述的soc,其中所述第一固件加载接口集成到所述第一ip块中。3.如技术方案1所述的soc,其中所述第一固件加载接口在所述第一ip块外部。4.如技术方案1所述的soc,其中所述第一固件加载接口是与所述第一ip块分立的ip块。5.如技术方案1所述的soc,还包括:具有第二微控制器的第二ip块,所述第二微控制器具有不同于所述第一微控制器架构的第二微控制器架构;以及用于提供所述标准化硬件接口以将第二固件安全地加载到所述第二ip块的第二固件加载接口。6.如技术方案1所述的soc,其中安全地加载所述第一固件包括单阶段加载。7.如技术方案1所述的soc,其中安全地加载所述第一固件包括多阶段加载。8.如技术方案7所述的soc,其中所述多阶段加载包括在操作的不同阶段由多个代理加载。9.如技术方案1所述的soc,其中所述处理器核包括用于控制所述安全地加载所述固件的寄存器集合。10.如技术方案1所述的soc,还包括用于将所述第一固件安全地加载到所述第一ip块的安全性引擎。11.一种知识产权(ip)块,包括:微控制器;以及固件仪表板,所述固件仪表板包括:包括用于与所述ip块内部地对接的电路的面向ip的接口;以及包括用于提供针对所述ip块的固件的标准化加载接口的电路的面向系统的接口。12.如技术方案11所述的ip块,还包括配置成加密地验证所述固件的内部加密模块。13.如技术方案11所述的ip块,还包括只读存储器(rom),其中所述面向ip的接口包括用于通过所述固件填充所述rom的指令。14.如技术方案11所述的ip块,其中所述ip块配置成接收所述系统的ip块可寻址存储器位置的所述地址和大小,所述存储器位置包含所述固件。15.如技术方案11所述的ip块,其中所述ip块缺少用于保持所述固件的内部存储器,并且其中所述ip块配置成直接从用于所述系统的主存储器中的可寻址位置执行所述固件。16.一种集成电路,包括:配置成通信地耦合到知识产权(ip)块的第一接口;配置成通信地耦合到片上系统(soc)的第二接口;以及用于在所述ip块和所述soc之间提供桥接器和包装器功能性的电路,其中所述桥接器和包装器功能性要提供标准化的且架构不可知的加载流程,以将固件加载到所述ip块,并且以对所述ip块的架构特定的方式来执行所述加载流程。17.如技术方案16所述的集成电路,其中所述加载流程支持用于所述ip块的固件推模型。18.如技术方案16所述的集成电路,其中所述加载流程支持用于所述ip块的固件拉模型。19.如技术方案16所述的集成电路,其中所述加载流程支持ip上固件验证安全性模型。20.如技术方案16所述的集成电路,其中所述加载流程支持ip外固件验证安全性模型。前述内容概述了本文所公开的主题的一个或多个实施例的特征。提供这些实施例以使能本领域普通技术人员(phosita)更好地理解本公开的各种方面。可以参考某些公知的术语以及基础技术和/或标准,而不进行详细描述。预计的是phosita将拥有或可以使用足以实践本发明的教导的那些技术和标准中的背景知识或信息。phosita将意识到,它们可以容易地使用本公开作为用于设计或修改其他过程、结构或变型,以用于执行与本文介绍的实施例相同的目的和/或实现与本文介绍的实施例相同的优点的基础。phosita还将认识到,此类等效构造并不脱离本公开的精神和范围,并且它们可以在不脱离本公开的精神和范围的情况下进行各种改变、替换和变更。在前述内容描述中,比用于实践所附权利要求严格必要的更详细地描述一些或所有实施例的某些方面。这些细节仅作为非限制性示例提供,以用于提供所公开的实施例的上下文和说明的目的。此类细节不应被理解为是要求的,并且不应被作为限制“读入”权利要求。短语可能提到“一实施例”或“实施例”。这些短语以及对实施例的任何其他参考“应该被广泛地理解成指一个或多个实施例的任何组合。此外,在特定“实施例”中公开的若干特征也可以仅跨多个实施例扩展。例如,如果特征1和2在“一实施例”中公开,则实施例a可以具有特征1但缺少特征2,而实施例b可以具有特征2但缺少特征1。本说明书可以用框图的格式提供说明,其中某些特征在单独的块中公开。这些应该被广泛地理解成公开了各种特征如何互操作,但是不意图暗示那些特征必须一定在单独的硬件或软件中体现。此外,在单个块在相同块中公开多于一个特征的情况下,那些特征不一定需要体现在相同硬件和/或软件中。例如,在一些情况下,计算机“存储器”可以在多级高速缓存或本地存储器、主存储器、电池后备的易失性存储器和各种形式的持久性存储器(例如硬盘、存储服务器、光盘、磁带驱动器等等)之间分布或映射。在某些实施例中,一些部件可被省略或合并。在一般意义上,附图中所描绘的布置在其表示方面可以是更逻辑的,而物理架构可以包括这些元件的各种排列、组合和/或混合。无数可能的设计配置可以用于实现本文概述的操作目标。相应地,关联的基础设施具有无数的替代布置、设计选择、装置可能性、硬件配置、软件实现和装备选项。本文可以对计算机可读介质进行参考,其可以是有形的和非暂时性计算机可读介质。如在本说明书和整个权利要求中所使用的,“计算机可读介质”应该被理解成包括相同或不同类型的一个或多个计算机可读介质。作为非限制性示例,计算机可读介质可以包括光驱动器(例如,cd/dvd/蓝光)、硬盘驱动器、固态驱动器、闪存存储器或其他非易失性介质。计算机可读介质还可以包括介质(诸如rom)、配置成执行期望的指令的fpga或asic、用于对fpga或asic进行编程以执行期望的指令的存储的指令、可以被集成在硬件中的到其他电路中的ip块、或者在适当的情况下并且基于特定需要被直接编码到诸如微处理器、dsp、微控制器的处理器上的硬件或微代码中的或者在任何其他适合的部件、装置、元件或对象中的指令。本文中的非暂时性存储介质明确地意图包括配置成提供所公开的操作或使处理器执行所公开的操作的任何非暂时性专用或可编程硬件。在整个本发明和权利要求中,各种元件可以是彼此“通信地”、“电地”、“机械地”或以其他方式“耦合”。此类耦合可以是直接的点对点耦合,或者可以包括中间装置。例如,两个装置可以经由促进通信的控制器彼此通信地耦合。装置可以经由诸如信号升压器、电压分压器或缓冲器的中间装置彼此电耦合。机械耦合的装置可以间接机械耦合。本文公开的任何“模块”或“引擎”可以指或包括软件,软件栈,硬件、固件和/或软件的组合,配置成执行引擎或模块的功能的电路、或如上面公开的任何计算机可读介质。在适当的情况下,此类模块或引擎可以在硬件平台上提供或与硬件平台相结合地提供,硬件平台可以包括硬件计算资源,诸如处理器、存储器、存储装置、互连、网络和网络接口、加速器或其他适合的硬件。此类硬件平台可以作为单个单片装置(例如,以pc形状因子)提供,或者通过分布的功能的一些或部分(例如,高端数据中心中的“复合节点”,其中计算、存储器、存储装置和其他资源可以动态地分配并且不需要对于彼此是本地的)提供。‎本文可以公开流程图、信号流程图或示出以特定顺序执行的操作的其他说明。除非以其他方式明确说明,或者除非在特定上下文中要求,所述顺序应该被理解成仅是非限制性示例。此外,在一个操作被示出成跟着另一个的情况下,也可能发生可能相关或不相关的其他居间操作。一些操作也可以同时或并行执行。在操作被说成“基于”或“根据”另一项目或操作的情况下,这应该被理解为暗示所述操作至少部分地基于或至少部分地根据该另一项目或操作。这不应被解释成暗示操作仅或排它地基于所述项或操作,或仅或排它地根据所述项或操作。本文公开的任何硬件元件的所有或部分可以容易地在soc(包括cpu封装)中提供。soc表示将计算机或其他电子系统的部件集成到单个芯片中的集成电路(ic)。因此,例如,客户端装置或服务器装置可以全部或部分地在soc中提供。soc可以包含数字、模拟、混合信号和射频功能,所有这些功能都可以在单个芯片衬底上提供。其他实施例可以包括多芯片模块(mcm),其中多个芯片位于单个电子封装内并且配置成通过电子封装彼此紧密地交互。在一般意义上,任何适合配置的电路或处理器可以执行与数据关联的任何类型的指令以实现本文详述的操作。本文所公开的任何处理器都可以将元素或物品(例如,数据)从一个状态或事物变换到另一个状态或事物。此外,基于特定的需要和实现,在处理器中被跟踪、发送、接收或存储的信息可以在任何数据库、寄存器、表、高速缓存、队列、控制列表或存储结构中提供,所有这些可以在任何适合的时间帧内参考。本文公开的任何存储器或存储元件应该被解释为适当地涵盖在宽泛的术语“存储器”和“存储装置”内。实现本文所描述的所有或部分功能性的计算机程序逻辑以各种形式体现,包括但绝不限于源代码形式、计算机可执行形式、机器指令或微代码、可编程硬件和各种中间形式(例如,由汇编器、编译器、链接器或定位器生成的形式)。在示例中,源代码包括以用于供各种操作系统或操作环境使用的各种编程语言(诸如对象代码、汇编语言或高级语言,诸如opencl、fortran、c、c++、java或html)或以硬件描述语言(诸如spice、verilog和vhdl)实现的一系列计算机程序指令。源代码可以定义和使用各种数据结构和通信消息。源代码可以采用计算机可执行形式(例如,经由解释器),或者源代码可以被转化(例如,经由翻译器、汇编器或编译器)成计算机可执行形式,或者被转化成中间形式,诸如字节代码。在适当的情况下,任何前述内容可以用于构建或描述适当的分立或集成电路,无论是顺序的、组合的、状态机或以其他方式。在一个示例实施例中,可以在关联的电子装置的板上实现附图中的任何数量的电路。板可以是一般电路板,其可以保持电子装置的内部电子系统的各种部件,并且还提供用于其他外围装置的连接器。任何适合的处理器和存储器可以基于特定的配置需要、处理需求和计算设计而被适合地耦合到板。注意,通过本文提供的多个示例,可以在两个、三个、四个或更多个电气部件方面来描述交互。然而,这样做仅仅是为了清楚性和示例的目的。应该意识到,可以用任何适合的方式合并或重新配置系统。沿类似的设计备选,附图中的任何示出的部件、模块和元件可以用各种可能的配置来组合,所有这些都在本发明的宽泛范围内。本领域技术人员可以确定许多其他改变、替换、变化、变更和修改,并且意图是本公开涵盖如落入所附权利要求的范围内的所有此类改变、替换、变化、变更和修改。为了帮助美国专利商标局(uspto)以及另外,在本申请上发布的任何专利的任何读者解释所附到此的权利要求,申请人希望注意,申请人:(a)不意图任何所附权利要求调用35u.s.c.第112章(前aia)的第六(6)段或相同章(后aia)的段(f),因为它在本申请提交的日期存在,除非在特定权利要求中具体使用了词语“用于…的组件”或“用于…的步骤”;以及(b)不意图通过说明书中的任何陈述以未在所附权利要求中以其他方式明确反映的任何方式来限制本公开。示例实现在一个示例中公开有一种片上系统(soc),所述soc包括:处理器核;组构;经由所述组构通信地耦合到所述处理器核的第一知识产权(ip)块,所述第一ip块具有配置成提供第一微控制器架构的第一微控制器;配置成向所述第一微控制器架构提供标准化硬件接口的第一固件加载接口,其中所述标准化硬件接口提供架构不可知的机制,以将第一固件安全地加载到所述第一知识产权块;以及用于提供加载器以经由所述第一固件加载接口将固件加载到所述第一ip块的逻辑。还公开有示例soc,其中所述第一固件加载接口集成到所述第一ip块中。还公开有示例soc,其中所述第一固件加载接口在所述第一ip块外部。还公开有示例soc,其中所述第一固件加载接口是与所述第一ip块分立的ip块。还公开有示例soc,所述soc还包括:具有第二微控制器的第二ip块,所述第二微控制器具有不同于所述第一微控制器架构的第二微控制器架构;以及用于提供所述标准化硬件接口以将第二固件安全地加载到所述第二ip块的第二固件加载接口。还公开有示例soc,其中安全地加载所述第一固件包括单阶段加载。还公开有示例soc,其中安全地加载所述第一固件包括多阶段加载。还公开有示例soc,其中所述多阶段加载包括在操作的不同阶段由多个代理加载。还公开有示例soc,其中安全地加载所述第一固件包括经由固件推模型加载。还公开有示例soc,其中安全地加载所述第一固件包括经由固件拉模型加载。还公开有示例soc,还包括基本输入输出系统(bios),其中用于提供加载器的逻辑包括用于bios的固件指令。还公开有示例soc,其中用于提供所述加载器的逻辑包括微代码指令。]还公开有示例soc,其中所述处理器核包括用于控制所述安全地加载所述固件的寄存器集合。还公开有示例soc,还包括用于将所述第一固件安全地加载到所述第一ip块的安全性引擎。还公开有示例soc,其中至少部分地以微代码实现所述安全性引擎。还公开有示例soc,其中所述安全引擎是ip块。还公开有一种示例知识产权(ip)块,所述ip块包括:微控制器;以及固件仪表板,所述固件仪表板包括:包括用于与所述ip块内部地对接的电路的面向ip的接口;以及包括用于提供针对所述ip块的固件的标准化加载接口的电路的面向系统的接口。还公开有示例ip块,还包括配置成加密地验证所述固件的内部加密模块。还公开有示例ip块,其中所述ip块配置成从所述系统接收指示所述固件已经在所述ip块外部被验证的中断、信号或消息。还公开有示例ip块,所述ip块还包括只读存储器(rom),其中所述面向ip的接口包括用于通过所述固件填充所述rom的指令。还公开有示例ip块,还包括静态随机存取存储器(sram)或寄存器堆,其中所述面向ip的接口包括用于通过所述固件填充所述sram或寄存器堆的指令。还公开有示例ip块,其中所述ip块配置成接收所述系统的ip块可寻址存储器位置的所述地址和大小,所述存储器位置包含所述固件。还公开有示例ip块,其中所述ip块缺少用于保持所述固件的内部存储器,并且其中所述ip块配置成直接从用于所述系统的主存储器中的可寻址位置执行所述固件。还公开有一种示例集成电路,所述集成电路包括:配置成通信地耦合到知识产权(ip)块的第一接口;配置成通信地耦合到片上系统(soc)的第二接口;以及用于在所述ip块和所述soc之间提供桥接器和包装器功能性的电路,其中所述桥接器和包装器功能性要提供标准化的且架构不可知的加载流程,以将固件加载到所述ip块,并且以对所述ip块的架构特定的方式来执行所述加载流程。还公开有示例集成电路,其中所述加载流程支持用于所述ip块的固件推模型。还公开有示例集成电路,其中所述加载流程支持用于所述ip块的固件拉模型。还公开有示例集成电路,其中所述加载流程支持ip上固件验证安全性模型。还公开有示例集成电路,其中所述加载流程支持ip外固件验证安全性模型。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1