具有自描述依从性信息的固件组件的制作方法

文档序号:20499387发布日期:2020-04-21 22:38阅读:164来源:国知局
实施例概括而言涉及数据处理系统。更具体而言,实施例涉及具有自描述依从性信息的固件组件。
背景技术
::电子处理系统可包括基本输入/输出系统(basicinput/outputsystem,bios)和操作系统(operatingsystem,os)。固件可以是包括在电子处理系统的各种组件或者附着到电子处理系统的设备中的控制代码。附图说明通过阅读以下说明书和所附权利要求,并且通过参考以下附图,实施例的各种优点将对本领域技术人员变得清楚,附图中:图1是根据一实施例的电子处理系统的示例的框图;图2是根据一实施例的半导体封装装置的示例的框图;图3a至3c是根据一实施例的固件依从性检查的方法的示例的流程图;图4是根据一实施例的固件更新器装置的示例的框图;图5是根据一实施例的电子处理系统的另一示例的框图;图6是根据一实施例的自描述固件更新和依从性检查的方法的示例的流程图;图7a和7b是根据实施例的固件更新器装置的示例的框图;图8是根据一实施例的处理器的示例的框图;并且图9是根据一实施例的系统的示例的框图。具体实施方式现在转到图1,电子处理系统10的实施例可包括处理器11、通信地耦合到处理器11的存储器12以及通信地耦合到处理器11的逻辑13,该逻辑13为新固件组件确定版本信息,读取与固件组件相对应的依从性信息,并且基于新固件组件的版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。在一些实施例中,逻辑13可被配置为存储与新固件组件相对应的自描述依从性信息。例如,自描述依从性信息可包括新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。在一些实施例中,逻辑13可被配置为基于新固件组件的版本信息和依从性信息确定在新固件组件和所有其他相关固件组件之间是否满足依从性。例如,逻辑13也可被配置为如果在新固件组件和所有其他相关固件组件之间满足依从性则利用新固件组件来更新固件,和/或将依从性信息提供给操作系统(例如,电子处理系统10的操作系统)。上述处理器11、存储器12、逻辑13和其他系统组件的每一者的实施例可以用硬件、软件或者其任何适当组合来实现。例如,硬件实现方式可包括可配置逻辑,例如可编程逻辑阵列(programmablelogicarray,pla)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)或者使用诸如专用集成电路(applicationspecificintegratedcircuit,asic)、互补金属氧化物半导体(complementarymetaloxidesemiconductor,cmos)或晶体管-晶体管逻辑(transistor-transistorlogic,ttl)技术之类的电路技术的固定功能逻辑硬件,或者这些的任何组合。替换地或者额外地,这些组件的全部或一些部分可作为存储在机器或计算机可读存储介质中的一组逻辑指令被实现在一个或多个模块中以被处理器或计算设备执行,所述机器或计算机可读存储介质例如是随机访问存储器(randomaccessmemory,ram)、只读存储器(readonlymemory,rom)、可编程rom(programmablerom,prom)、固件、闪存等等。例如,可以用一种或多种操作系统(operatingsystem,os)适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如python、perl、java、smalltalk、c++、c#等,还包括传统的过程式编程语言,比如“c”编程语言或类似的编程语言。例如,存储器12、持续性存储介质或者其他系统存储器可存储一组指令,该组指令当被处理器11执行时使得系统10实现系统10的一个或多个组件、特征或方面(例如,逻辑13,基于固件的新固件组件的相应自描述依从性信息为新固件组件确定版本信息,读取与固件组件相对应的依从性信息,基于版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性,等等)。现在转到图2,半导体封装装置20的实施例可包括衬底21,以及耦合到衬底21的逻辑22,其中逻辑22至少部分实现在可配置逻辑和固定功能硬件逻辑的一个或多个中。耦合到衬底21的逻辑22可被配置为基于固件的新固件组件的相应自描述依从性信息为新固件组件确定版本信息,读取与固件组件相对应的依从性信息,并且基于新固件组件的版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。在一些实施例中,逻辑22可被配置为存储与新固件组件相对应的自描述依从性信息。例如,自描述依从性信息可包括新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。在一些实施例中,逻辑22可被配置为基于新固件组件的版本信息和依从性信息确定在新固件组件和所有其他相关固件组件之间是否满足依从性。例如,逻辑22也可被配置为如果在新固件组件和所有其他相关固件组件之间满足依从性则利用新固件组件来更新固件,和/或将依从性信息提供给操作系统。逻辑22的实施例以及装置20的其他组件可实现在硬件、软件或者其任何组合中,包括硬件中的至少部分实现。例如,硬件实现方式可包括可配置逻辑,例如pla、fpga、cpld,或者利用诸如asic、cmos或ttl技术之类的电路技术的固定功能逻辑硬件,或者这些的任何组合。此外,这些组件的一些部分可作为存储在机器或计算机可读存储介质中的一组逻辑指令被实现在一个或多个模块中以被处理器或计算设备执行,所述机器或计算机可读存储介质例如是ram、rom、prom、固件、闪存,等等。例如,可以用一种或多种os适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如python、perl、java、smalltalk、c++、c#等,还包括传统的过程式编程语言,比如“c”编程语言或类似的编程语言。现在转到图3,固件依从性检查的方法30的实施例可包括下述操作:在块31为新固件组件确定版本信息,在块32读取与固件组件相对应的依从性信息,并且在块33基于版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。方法30的一些实施例可包括下述操作:在块34存储与新固件组件相对应的自描述依从性信息。例如,在块35,自描述依从性信息可包括新固件组件所依从于的固件组件的一个或多个类别,以及固件的该一个或多个类别的每一者的兼容版本的范围。方法30的一些实施例可包括下述操作:在块36基于版本信息和依从性信息确定在新固件组件和所有其他相关固件组件之间是否满足依从性,并且在块37如果在新固件组件和所有其他相关固件组件之间满足依从性则利用新固件组件来更新固件。例如,方法30也可包括在块38将依从性信息提供给操作系统。方法30的实施例可实现在系统、装置、计算机、设备等等中,例如本文描述的那些。更具体而言,方法30的硬件实现方式可包括可配置逻辑,例如pla、fpga、cpld,或者利用诸如asic、cmos或ttl技术之类的电路技术的固定功能逻辑硬件,或者这些的任何组合。替换地或者额外地,方法30可作为存储在机器或计算机可读存储介质中的一组逻辑指令被实现在一个或多个模块中以被处理器或计算设备执行,所述机器或计算机可读存储介质例如是ram、rom、prom、固件、闪存,等等。例如,可以用一种或多种os适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如python、perl、java、smalltalk、c++、c#等,还包括传统的过程式编程语言,比如“c”编程语言或类似的编程语言。例如,方法30可实现在计算机可读介质上,如下文联系示例19至24所述。方法30的实施例或一些部分可实现在固件、应用(例如,通过应用编程接口(applicationprogramminginterface,api))或者在bios或os上运行的驱动器软件中。一些实施例可在物理上或逻辑上实现为一个或多个模块或组件。现在转到图4,固件更新器装置40的实施例可包括固件扫描器41、依从性检查器42和更新器43。固件扫描器41可被配置为基于固件的新固件组件的相应自描述依从性信息为该新固件组件确定版本信息,并且读取与固件组件相对应的依从性信息。依从性检查器42可被配置为基于新固件组件的版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。在一些实施例中,装置40和/或新固件组件可存储与新固件组件相对应的自描述依从性信息。例如,自描述依从性信息可包括新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。在一些实施例中,依从性检查器42可被配置为基于新固件组件的版本信息和依从性信息确定在新固件组件和所有其他相关固件组件之间是否满足依从性。例如,更新器43可被配置为如果在新固件组件和所有其他相关固件组件之间满足依从性则利用新固件组件来更新固件。在一些实施例中,固件扫描器41也可被配置为向操作系统提供依从性信息。固件扫描器41、依从性检查器42、更新器43和固件更新器装置40的其他组件的实施例可实现在硬件、软件或者其任何组合中,包括硬件中的至少部分实现。例如,硬件实现方式可包括可配置逻辑,例如pla、fpga、cpld,或者利用诸如asic、cmos或ttl技术之类的电路技术的固定功能逻辑硬件,或者这些的任何组合。此外,这些组件的一些部分可作为存储在机器或计算机可读存储介质中的一组逻辑指令被实现在一个或多个模块中以被处理器或计算设备执行,所述机器或计算机可读存储介质例如是ram、rom、prom、固件、闪存,等等。例如,可以用一种或多种os适用/适当的编程语言的任何组合来编写用于执行组件的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如python、perl、java、smalltalk、c++、c#等,还包括传统的过程式编程语言,比如“c”编程语言或类似的编程语言。一些实施例可有利地提供一种系统和/或方法来支持利用自描述依从性表述的多固件组件更新。可扩展固件接口(extensiblefirmwareinterface,efi)可提供固件和os之间的接口。固件可在硬件组件/设备和efi之间提供控制/通信代码。统一可扩展固件接口(unifiedextensiblefirmwareinterface,uefi)规范可定义操作系统和平台固件之间的软件接口(例如,uefi规范版本2.7,2017年5月发布于www.uefi.org/sites/default/files/resources/uefi_spec_2_7.pdf)。在一些系统中,uefi可替代bios固件接口(例如,大多数uefi固件实现方式提供对bios服务的遗留支持)。uefi的一些实现方式可支持远程诊断和修复,即使没有安装操作系统。在一些系统中,uefiefi系统资源表格(efisystemresourcetable,esrt)可包括每个可更新组件的全局唯一识别符(globallyuniqueidentifier,guid)。平台上的一些固件元件可对其他固件元件具有依从性。一些实施例可提供一种手段,用来表述这些依从性并且构建在现有的标准上来为具有许多可更新元件的平台提供解决方案。这种可更新元件可包括例如管理引擎(me)固件、聚合安全可管理性引擎(convergedsecuritymanageabilityengine,csme)固件、核心微代码、intel固件支持包以及模块化主机uefi固件(例如,其可具有大量的单独二进制模块)。现在转到图5,电子处理系统的实施例可包括os(例如,比如windows、redhat等等)。固件资源表51可为连接到os的若干个设备/组件(例如,相机52、g传感器/加速度计53、具有其自己的固件的其他系统组件54等等)提供guid、版本信息和依从性信息。例如,固件资源表51可类似于uefiesrt(例如,或者uefi标准可被扩展来容适版本依从性信息)。固件管理协议(firmwaremanagementprotocol,fmp)胶囊55可提供路由信息、更新后数据和/或更新后驱动器(例如,提供更新后uefi驱动器的uefifmp胶囊)作为固件更新的一部分。例如,os可基于固件的新固件组件的相应自描述依从性信息读取与新固件组件相对应的依从性信息,并且基于新固件组件的版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。安全性或其他问题可提示固件更新(例如,甚至在me或csme固件中)。然而,最终用户或原始设备制造商(originalequipmentmanufacturer,oem)可能不希望组件提供商单方面地更新二进制模块,而不通过oem或最终用户的完全bios更新来验证和交付这个更新。在没有关联的bios参考代码更新的情况下更新me或其他固件例如可对其他系统组件引起问题。相同的问题可对核心微代码发生,因为一些微代码补丁可使得像型号特定寄存器(modelspecificregister,msr)这样的新硬件出现,并且关联的主机固件/bios可能需要被一致地更新。一些系统可具有许多可更新的固件元件。一些组件提供商可发布必须被一起更新的固件元件的集合(例如,作为已知最佳配置(bestknownconfiguration,bkc))。一些实施例可支持元件之间的依从性被更新器以软件可见的方式表述。这种依从性甚至可被暴露给os更新器,例如胶囊更新器。例如,windows可为固件更新提供基于型号的服务(modelbasedservice,mbs)。linux可推进固件更新项目(firmwareupdateproject,fwupd),并且可提供linux厂商固件服务(linuxvendorfirmwareservice,lvfs)。这种项目和/或服务可受益于如本文根据一些实施例所述的让依从性暴露给os。一些实施例可通过提供一种用来支持平台上的依从模块的安全更新的手段来帮助减轻关于具有基于组件的更新的oem担心,并且帮助去除响应于产品响应团队(productresponseteam,prt)动作而推送更新的摩擦,无论是功能上的还是基于安全性的。一些实施例可提供鲁棒的现场可更新硬件来避免召回,但也支持快速修补以避免让客户暴露于安全风险。固件更新可以是一些电子系统/平台中的重要特征。一些产业标准可描述固件更新过程和/或安全性要求。例如,uefi规范可定义efi_system_resource_table来向操作系统识别系统固件和设备固件。数据结构可被表示如下:typedefstruct{uint32fwresourcecount;uint32fwresourcecountmax;uint64fwresourceversion;//efi_system_resource_entryentries[];}efi_system_resource_table;typedefstruct{efi_guidfwclass;uint32fwtype;uint32fwversion;uint32lowestsupportedfwversion;uint32capsuleflags;uint32lastattemptversion;uint32lastattemptstatus;}efi_system_resource_entry;os可利用efi_system_resource_table来管理(一个或多个)系统的固件并且允许提供商和/或用户执行固件更新。如果efi_system_resource_table的利用假设所识别的固件可被独立更新,则在一些系统中可发生问题。然而,在一些系统中,在一个平台上可以有多个固件组件,它们彼此之间可具有一些依从性。例如,系统bios可能需要与特定版本的微代码一起工作。客户端系统bios可能需要与特定版本的me固件和特定版本的嵌入式控制器(embeddedcontroller,ec)固件一起工作。服务器系统bios可能需要与特定版本的基板管理控制器(baseboardmanagementcontroller,bmc)固件一起工作。系统bios可能需要与特定版本的无线网络接口卡(networkinterfacecard,nic)微代码或者低能耗蓝牙(bluetoothlowenergy,ble)固件一起工作。如果发生错误,或者以其他方式打破了依从性,则系统可引导失败,或者经历其他问题,并且可能难以检测到该问题。出于安全性考虑,可能存在最终用户可能需要或者偏好只更新固件组件之一的情形。但是最终用户可能不知道只更新固件组件之一是否恰当,或者是否需要一起更新不同的固件组件。一些提供商可推荐最终用户始终更新其系统上的所有固件,或者可在固件代码中硬编码一些依从性检查。更新所有固件可避免新固件之间的依从性问题,但如果旧平台不能与所有新固件一起工作则可引起问题。硬编码一些依从性检查可避免一些依从性问题,但依从性信息保持隐藏并且硬编码对于进一步扩展/更新是不灵活的。硬编码的依从性检查可一直到更新之后才发生,从而要求最终用户在接收到差错之后回滚固件。一些实施例可有利地提供一种方式来清楚地描述固件版本依从性并且将这种信息暴露给os。商业os可向最终用户呈现这种信息。当用户希望更新os环境中的固件时可执行预检查,有利地确保了在更新固件之前满足依从性。一些实施例可提供一种体系结构方式来除了固件版本以外还报告固件依从性。一些实施例可将依从性信息传递到os并且将该信息显示给最终用户。一些实施例可有利地在非常早期的阶段禁止或防止用户/提供者错误以将系统/平台维持在健康状态中。一些实施例可将自描述固件依从性定义作为对数据结构的扩展来提供。版本依从性信息可被每个固件组件报告。在一些实施例中,数据结构可被表示如下:typedefstruct{uint32fwversionbegin;uint32fwversionend;}efi_system_firmware_version_range;typedefstruct{efi_guidfwclass;uint32versionrangecount;efi_system_firmware_version_rangeversionrange[versionrangecount];}efi_system_firmware_dependency;typedefstruct{efi_guidfwclass;uint32fwversion;uint32dependencycount;efi_system_firmware_dependencydependency[dependencycount];}efi_system_resource_dependency;例如,如果当前bios固件(fwclassbios,版本21)依从于me固件(fwclassme,版本32及以上)和ec固件(fwclassec,版本56和版本59之间,或者版本61和版本68之间),则在一些实施例中依从性结构可被表示如下:efi_system_resource_dependencybiosentry={.fwclass=fwclassbios;.fwversion=21;.dependencycount=2;.dependency[0].fwclass=fwclassme;.dependency[0].versionrangecount=1;.dependency[0].versionrange[0].fwversionbegin=34;.dependency[0].versionrange[0].fwversionend=0xffffffff;.dependency[1].fwclass=fwclassec;.dependency[1].versionrangecount=2;.dependency[1].versionrange[0].fwversionbegin=56;.dependency[1].versionrange[0].fwversionend=59;.dependency[1].versionrange[1].fwversionbegin=61;.dependency[1].versionrange[1].fwversionend=68;}如果当前me固件(fwclassme,版本34)依从于bios(fwclassbios,版本>=19),则在一些实施例中依从性结构可被表示如下:efi_system_resource_dependencymeentry={.fwclass=fwclassme;.fwversion=34;.dependencycount=2;.dependency[0].fwclass=fwclassbios;.dependency[0].versionrangecount=1;.dependency[0].versionrange[0].fwversionbegin=19;.dependency[0].versionrange[0].fwversionend=0xffffffff;}现在转到图6,自描述固件更新和依从性检查的方法60的实施例可包括在块61扫描新的bios胶囊包中的每个固件,在块62获得新固件版本,在块63扫描当前引导环境中的每个固件组件,在块64获得当前固件版本,在块65比较相同固件类别中的每个新的和当前的固件组件,并且在块66获得同一类别中的最高版本固件。方法60随后可在块67审查每个固件资源中描述的依从性,并且在块68确定是否满足依从性,直到在块69已经检查了所有固件组件为止。如果在块68没有满足任何依从性,则在块70检查可失败。可报告该失败并且可中止固件更新。如果在块69所有固件依从性都通过了依从性检查,则方法60随后可在块71报告通过了依从性检查,并且在块72继续进行固件更新。例如,如果新的固件胶囊更新镜像具有以下代表性结构:efi_system_resource_dependencybiosentry={.fwclass=fwclassbios;.fwversion=24;.dependencycount=2;.dependency[0].fwclass=fwclassme;.dependency[0].versionrangecount=1;.dependency[0].versionrange[0].fwversionbegin=34;.dependency[0].versionrange[0].fwversionend=0xffffffff;.dependency[1].fwclass=fwclassec;.dependency[1].versionrangecount=2;.dependency[1].versionrange[0].fwversionbegin=56;.dependency[1].versionrange[0].fwversionend=59;.dependency[1].versionrange[1].fwversionbegin=61;.dependency[1].versionrange[1].fwversionend=68;}efi_system_resource_dependencymeentry={.fwclass=fwclassme;.fwversion=49;.dependencycount=2;.dependency[0].fwclass=fwclassbios;.dependency[0].versionrangecount=1;.dependency[0].versionrange[0].fwversionbegin=26;.dependency[0].versionrange[0].fwversionend=0xffffffff;}则新的me固件将不会被更新,因为其bios依从性(版本26)不能得到满足。如果新固件胶囊更新镜像具有以下代表性结构:efi_system_resource_dependencybiosentry={.fwclass=fwclassbios;.fwversion=27;.dependencycount=2;.dependency[0].fwclass=fwclassme;.dependency[0].versionrangecount=1;.dependency[0].versionrange[0].fwversionbegin=40;.dependency[0].versionrange[0].fwversionend=0xffffffff;.dependency[1].fwclass=fwclassec;.dependency[1].versionrangecount=2;.dependency[1].versionrange[0].fwversionbegin=56;.dependency[1].versionrange[0].fwversionend=59;.dependency[1].versionrange[1].fwversionbegin=61;.dependency[1].versionrange[1].fwversionend=68;}efi_system_resource_dependencymeentry={.fwclass=fwclassme;.fwversion=49;.dependencycount=2;.dependency[0].fwclass=fwclassbios;.dependency[0].versionrangecount=1;.dependency[0].versionrange[0].fwversionbegin=26;.dependency[0].versionrange[0].fwversionend=0xffffffff;}则bios和me两者都将被更新,因为满足了依从性。图7a示出了可实现方法30(图3a至3c)和/或方法60(图6)的一个或多个方面的固件更新器装置132(132a-132c)。可包括逻辑指令、可配置逻辑、固定功能硬件逻辑的固件更新器装置132可容易替代已经论述的逻辑13(图1)、逻辑22(图2)或者固件更新器装置40(图4)。固件扫描器132a可被配置为基于固件的新固件组件的相应自描述依从性信息为新固件组件确定版本信息,并且读取与固件组件相对应的依从性信息。依从性检查器132b可被配置为基于新固件组件的版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。在一些实施例中,装置132和/或新固件组件可存储与新固件组件相对应的自描述依从性信息。例如,自描述依从性信息可包括新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。在一些实施例中,依从性检查器132b可被配置为基于新固件组件的版本信息和依从性信息确定在新固件组件和所有其他相关固件组件之间是否满足依从性。例如,更新器132c可被配置为如果在新固件组件和所有其他相关固件组件之间满足依从性则利用新固件组件来更新固件。在一些实施例中,固件扫描器132a也可被配置为向操作系统提供依从性信息。现在转到图7b,示出了固件更新器装置134(134a、134b),其中逻辑134b(例如,晶体管阵列和其他集成电路/ic组件)耦合到衬底134a(例如,硅、蓝宝石、砷化镓)。逻辑134b一般可实现方法30(图3a至3c)和/或方法60(图6)的一个或多个方面。从而,逻辑134b可基于固件的新固件组件的相应自描述依从性信息为新固件组件确定版本信息,读取与固件组件相对应的依从性信息,并且基于新固件组件的版本信息和依从性信息确定在新固件组件和一个或多个其他固件组件之间是否满足依从性。在一些实施例中,逻辑134b可存储与新固件组件相对应的自描述依从性信息。例如,自描述依从性信息可包括新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。在一些实施例中,逻辑134b可基于新固件组件的版本信息和依从性信息确定在新固件组件和所有其他相关固件组件之间是否满足依从性。例如,逻辑134b也可如果在新固件组件和所有其他相关固件组件之间满足依从性则利用新固件组件来更新固件,和/或将依从性信息提供给操作系统。在一个示例中,装置134是半导体晶粒、芯片和/或封装。图8根据一个实施例图示了处理器核心200。处理器核心200可以是用于任何类型的处理器(例如微处理器、嵌入式处理器、数字信号处理器(digitalsignalprocessor,dsp)、网络处理器或者其他执行代码的设备)的核心。虽然在图8中只图示了一个处理器核心200,但处理元件可改为包括多于一个图8中所示的处理器核心200。处理器核心200可以是单线程核心,或者对于至少一个实施例,处理器核心200可以是多线程的,因为其对于每个核心可包括多于一个硬件线程情境(或者说“逻辑处理器”)。图8还图示了耦合到处理器核心200的存储器270。存储器270可以是本领域技术人员已知的或者以其他方式可获得的各种存储器(包括存储器层次体系的各种层)中的任何一者。存储器270可包括要被处理器核心200执行的一个或多个代码213指令,其中代码213可实现已经论述过的方法30(图3a至3c)和/或方法60(图6)的一个或多个方面。处理器核心200遵循由代码213指示的指令的程序序列。每个指令可进入前端部分210并且被一个或多个解码器220处理。解码器220可生成诸如预定格式的固定宽度微操作之类的微操作作为其输出,或者可生成其他指令、微指令或者反映原始代码指令的控制信号。图示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们一般分配资源并且对与转换指令相对应的操作排队以便执行。处理器核心200被示为包括具有一组执行单元250-1至255-n的执行逻辑250。一些实施例可包括专用于特定功能或功能集合的若干个执行单元。其他实施例可只包括一个执行单元或者可执行特定功能的一个执行单元。图示的执行逻辑250执行由代码指令指定的操作。在代码指令指定的操作执行完成之后,后端逻辑260让代码213的指令引退。在一个实施例中,处理器核心200允许指令的乱序执行,但要求指令的按序引退。引退逻辑265可采取本领域技术人员已知的多种形式(例如,重排序缓冲器之类的)。这样,处理器核心200在代码213的执行期间被变换,至少就由解码器生成的输出、被寄存器重命名逻辑225利用的硬件寄存器和表格和被执行逻辑250修改的任何寄存器(未示出)而言。虽然在图8中没有图示,但处理元件可包括具有处理器核心200的芯片上的其他元件。例如,处理元件可包括与处理器核心200一起的存储器控制逻辑。处理元件可包括i/o控制逻辑和/或可包括与存储器控制逻辑集成的i/o控制逻辑。处理元件也可包括一个或多个缓存。现在参考图9,示出了根据一实施例的系统1000的框图。图9中所示的是多处理器系统1000,其包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,但要理解系统1000的实施例也可包括仅一个这种处理元件。系统1000被示为点到点互连系统,其中第一处理元件1070和第二处理元件1080经由点到点互连1050耦合。应当理解,图9中所示的任何或所有互连可实现为多点分支总线,而不是点到点互连。如图9中所示,处理元件1070和1080的每一者可以是多核处理器,包括第一和第二处理器核心(即,处理器核心1074a和1074b和处理器核心1084a和1084b)。这种核心1074a、1074b、1084a、1084b可被配置为以与上文联系图8所述类似的方式来执行指令代码。每个处理元件1070、1080可包括至少一个共享缓存1896a、1896b(例如,静态随机访问存储器/sram)。共享缓存1896a、1896b可存储被处理器的一个或多个组件(例如分别是核心1074a、1074b和1084a、1084b)利用的数据(例如,对象、指令)。例如,共享缓存1896a、1896b可在本地缓存存储器1032、1034中存储的数据,供处理器的组件更快速访问。在一个或多个实施例中,共享缓存1896a、1896b可包括一个或多个中间级别缓存,例如第2级(l2)、第3级(l3)、第4级(4)或其他级别的缓存,最后一级缓存(lastlevelcache,llc),和/或这些的组合。虽然示为只具有两个处理元件1070、1080,但要理解实施例的范围不限于此。在其他实施例中,一个或多个额外的处理元件可存在于给定的处理器中。或者,处理元件1070、1080中的一个或多个可以是除了处理器以外的元件,例如加速器或者现场可编程门阵列。例如,(一个或多个)额外的处理元件可包括与第一处理器1070相同的(一个或多个)额外处理器,与第一处理器1070异质或非对称的(一个或多个)额外处理器,加速器(例如,图形加速器或者数字信号处理(dsp)单元),现场可编程门阵列,或者任何其他处理元件。在处理元件1070、1080之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言可以有多种差异。这些差异可实际上将其自身展现为处理元件1070、1080之间的非对称性和异质性。对于至少一个实施例,各种处理元件1070、1080可存在于相同的晶粒封装中。第一处理元件1070还可包括存储器控制器逻辑(mc)1072和点到点(p-p)接口1076和1078。类似地,第二处理元件1080可包括mc1082和p-p接口1086和1088。如图9中所示,mc1072和1082将处理器耦合到各自的存储器,即存储器1032和存储器1034,存储器1032和存储器1034可以是在本地附接到各个处理器的主存储器的一部分。虽然mc1072和1082被示为集成到处理元件1070、1080中,但对于替换实施例,mc逻辑可以是在处理元件1070、1080之外的分立逻辑,而不是集成在其中。第一处理元件1070和第二处理元件1080可分别经由p-p互连1076、1086耦合到i/o子系统1090。如图9中所示,i/o子系统1090包括tee1097(例如,安全性控制器)和p-p接口1094和1098。此外,i/o子系统1090包括接口1092来将i/o子系统1090与高性能图形引擎1038耦合。在一个实施例中,总线1049可用于将图形引擎1038耦合到i/o子系统1090。或者,点到点互连可耦合这些组件。进而,i/o子系统1090可经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(peripheralcomponentinterconnect,pci)总线,或者诸如快速pci总线或另一种第三代i/o互连总线之类的总线,虽然实施例的范围不限于此。如图9中所示,各种i/o设备1014(例如,相机、传感器)可耦合到第一总线1016,以及可将第一总线1016耦合到第二总线1020的总线桥1018。在一个实施例中,第二总线1020可以是低引脚数(lowpincount,lpc)总线。各种设备可耦合到第二总线1020,例如包括键盘/鼠标1012、(一个或多个)网络控制器/通信设备1026(其进而可与计算机网络通信)、以及数据存储单元1019,例如盘驱动器或者其他大容量存储设备,它们在一个实施例中可包括代码1030。代码1030可包括用于执行上文描述的一个或多个方法的实施例的指令。从而,图示的代码1030可实现已经论述过的方法30(图3a至3c)和/或方法60(图6)的一个或多个方面,并且可与已经论述过的代码213(图8)类似。另外,音频i/o1024可耦合到第二总线1020。注意设想了其他实施例。例如,取代图9的点到点体系结构,系统可实现多点分支总线或者另外的这种通信拓扑。附加注释和示例:示例1可包括一种电子处理系统,包括处理器,通信地耦合到所述处理器的存储器,以及通信地耦合到所述处理器的逻辑,该逻辑用于:基于固件的新固件组件的相应自描述依从性信息为所述新固件组件确定版本信息,读取与所述固件组件相对应的依从性信息,并且基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和一个或多个其他固件组件之间是否满足依从性。示例2可包括如示例1所述的系统,其中所述逻辑还用于:存储与所述新固件组件相对应的自描述依从性信息。示例3可包括如示例2所述的系统,其中所述自描述依从性信息包括所述新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。示例4可包括如示例1所述的系统,其中所述逻辑还用于:基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和所有其他相关固件组件之间是否满足依从性。示例5可包括如示例4所述的系统,其中所述逻辑还用于:如果在所述新固件组件和所有其他相关固件组件之间满足依从性,则利用所述新固件组件来更新所述固件。示例6可包括如示例1至5的任何一项所述的系统,其中所述逻辑还用于:将所述依从性信息提供给操作系统。示例7可包括一种半导体封装装置,包括衬底,以及耦合到所述衬底的逻辑,其中所述逻辑至少部分实现在可配置逻辑和固定功能硬件逻辑的一个或多个中,耦合到所述衬底的所述逻辑用于:基于固件的新固件组件的相应自描述依从性信息为所述新固件组件确定版本信息,读取与所述固件组件相对应的依从性信息,并且基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和一个或多个其他固件组件之间是否满足依从性。示例8可包括如示例7所述的装置,其中所述逻辑还用于:存储与所述新固件组件相对应的自描述依从性信息。示例9可包括如示例8所述的装置,其中所述自描述依从性信息包括所述新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。示例10可包括如示例7所述的装置,其中所述逻辑还用于:基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和所有其他相关固件组件之间是否满足依从性。示例11可包括如示例10所述的装置,其中所述逻辑还用于:如果在所述新固件组件和所有其他相关固件组件之间满足依从性,则利用所述新固件组件来更新所述固件。示例12可包括如示例7至11的任何一项所述的装置,其中所述逻辑还用于:将所述依从性信息提供给操作系统。示例13可包括一种固件依从性检查的方法,包括:基于固件的新固件组件的相应自描述依从性信息为所述新固件组件确定版本信息,读取与所述固件组件相对应的依从性信息,并且基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和一个或多个其他固件组件之间是否满足依从性。示例14可包括如示例13所述的方法,还包括:存储与所述新固件组件相对应的自描述依从性信息。示例15可包括如示例14所述的方法,其中所述自描述依从性信息包括所述新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。示例16可包括如示例13所述的方法,还包括:基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和所有其他相关固件组件之间是否满足依从性。示例17可包括如示例16所述的方法,还包括:如果在所述新固件组件和所有其他相关固件组件之间满足依从性,则利用所述新固件组件来更新所述固件。示例18可包括如示例13至17的任何一项所述的方法,还包括:将所述依从性信息提供给操作系统。示例19可包括至少一个计算机可读介质,包括一组指令,所述一组指令当被计算设备执行时使得所述计算设备:基于固件的新固件组件的相应自描述依从性信息为所述新固件组件确定版本信息,读取与所述固件组件相对应的依从性信息,并且基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和一个或多个其他固件组件之间是否满足依从性。示例20可包括如示例19所述的至少一个计算机可读介质,包括另一组指令,所述另一组指令当被所述计算设备执行时,使得所述计算设备:存储与所述新固件组件相对应的自描述依从性信息。示例21可包括如示例20所述的至少一个计算机可读介质,其中所述自描述依从性信息包括所述新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。示例22可包括如示例19所述的至少一个计算机可读介质,包括另一组指令,所述另一组指令当被所述计算设备执行时,使得所述计算设备:基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和所有其他相关固件组件之间是否满足依从性。示例23可包括如示例22所述的至少一个计算机可读介质,包括另一组指令,所述另一组指令当被所述计算设备执行时,使得所述计算设备:如果在所述新固件组件和所有其他相关固件组件之间满足依从性则利用所述新固件组件来更新所述固件。示例24可包括如示例19至23的任何一项所述的至少一个计算机可读介质,包括另一组指令,所述另一组指令当被所述计算设备执行时,使得所述计算设备:将所述依从性信息提供给操作系统。示例25可包括一种固件依从性检查器装置,包括:用于基于固件的新固件组件的相应自描述依从性信息为所述新固件组件确定版本信息的装置,用于读取与所述固件组件相对应的依从性信息的装置,以及用于基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和一个或多个其他固件组件之间是否满足依从性的装置。示例26可包括如示例25所述的装置,还包括:用于存储与所述新固件组件相对应的自描述依从性信息的装置。示例27可包括如示例26所述的装置,其中所述自描述依从性信息包括所述新固件组件所依从于的固件组件的一个或多个类别,以及固件组件的该一个或多个类别的每一者的兼容版本的范围。示例28可包括如示例25所述的装置,还包括:用于基于所述新固件组件的所述版本信息和所述依从性信息确定在所述新固件组件和所有其他相关固件组件之间是否满足依从性的装置。示例29可包括如示例28所述的装置,还包括:用于如果在所述新固件组件和所有其他相关固件组件之间满足依从性则利用所述新固件组件来更新所述固件的装置。示例30可包括如示例25至29的任何一项所述的装置,还包括:用于将所述依从性信息提供给操作系统的装置。实施例适用于与所有类型的半导体集成电路(“ic”)芯片一起使用。这些ic芯片的示例包括但不限于处理器、控制器、芯片集组件、可编程逻辑阵列(programmablelogicarray,pla)、存储器芯片、网络芯片,片上系统(systemsonchip,soc)、ssd/nand控制器asic,等等。此外,在一些附图中,用线条来表示信号导线。某些可能是不同的,以指示更多的构成信号路径,某些具有数字标注,以指示构成信号路径的数目,和/或某些在一端或多端具有箭头,以指示主要信息流方向。然而,这不应当以限制方式来解释。更确切地说,这种添加的细节可联系一个或多个示范性实施例使用来促进对电路的更容易理解。任何表示的信号线,无论是否具有附加信息,都可实际上包括一个或多个信号,这一个或多个信号可在多个方向上行进并且可利用任何适当类型的信号方案来实现,例如利用差动对实现的数字或模拟线路、光纤线路和/或单端线路。可能给出了示例大小/型号/值/范围,虽然实施例不限于此。随着制造技术(例如,光刻术)随着时间流逝而成熟,预期能够制造具有更小大小的器件。此外,为了图示和论述的简单,并且为了不模糊实施例的某些方面,在附图内可能示出或不示出到ic芯片和其他组件的公知电源/地连接。另外,可能以框图形式示出布置以避免模糊实施例,并且同时也考虑到了如下事实:关于这种框图布置的实现的具体细节是高度取决于在其内实现实施例的平台的,即,这种具体细节应当完全在本领域技术人员的视野内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,本领域技术人员应当清楚,没有这些具体细节,或者利用这些具体细节的变体,也可实现实施例。从而说明书应当被认为是例示性的,而不是限制性的。术语“耦合”在本文中可用于指所涉组件之间的任何类型的关系,无论是直接的还是间接的,并且可应用到电的、机械的、液体的、光的、电磁的、机电的或其他连接。此外,除非另外指出,否则术语“第一”、“第二”等等在本文中可只用于促进论述,而不带有特定的时间或先后意义。就在本申请中和权利要求中使用的而言,由术语“…中的一个或多个”联接的项目的列表可意指列出的术语的任何组合。例如,短语“a、b和c中的一个或多个”和短语“a、b或c中的一个或多个”两者都可意指a;b;c;a和b;a和c;b和c;或者a、b和c。本领域技术人员从前述描述将会明白,实施例的宽广技术可按多种形式实现。因此,虽然已联系其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为本领域技术人员在研习了附图、说明书和所附权利要求后将清楚其他修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1