首页> 中国专利> 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块

允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块

摘要

一个方面的架构之间兼容性设备包括从第一架构代码模块接收计划用于第一架构库模块的第一调用过程操作的控制流程转移接收模块。第一调用过程操作涉及第一多个输入参数。应用二进制接口(ABI)更改模块与控制流程转移接收模块耦合。ABI更改模块作出ABI更改,以将涉及第一多个输入参数的第一调用过程操作转换为涉及第二多个输入参数的对应的第二调用过程操作。第二调用过程操作将与第二架构库模块兼容。控制流程转移输出模块与ABI更改模块耦合。控制流程转移输出模块将向第二架构库模块提供第二调用过程操作。

著录项

  • 公开/公告号CN104951296A

    专利类型发明专利

  • 公开/公告日2015-09-30

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201510091576.8

  • 申请日2015-02-28

  • 分类号

  • 代理机构上海专利商标事务所有限公司;

  • 代理人张东梅

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 11:23:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-02-28

    未缴年费专利权终止 IPC(主分类):G06F 8/76 专利号:ZL2015100915768 申请日:20150228 授权公告日:20190215

    专利权的终止

  • 2019-02-15

    授权

    授权

  • 2015-11-04

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20150228

    实质审查的生效

  • 2015-09-30

    公开

    公开

说明书

背景技术

技术领域

此处所描述的各实施例一般涉及代码在电子设备上的执行。具体而言, 此处所描述的各实施例一般涉及不同架构的代码在电子设备上的执行。

背景信息

直到目前,大多数智能电话、蜂窝电话、平板电脑等等都基于32位架 构。它们具有32位架构处理器和32位操作系统。为这些32位架构编写了 各种32位代码。例如,为这些设备编写了很多移动应用。此外,还为这些 32位架构编写了32位库。

最近,有带有64位架构的智能电话可用。这些64位架构基于64位架 构处理器和64位操作系统。例如,苹果公司最近提供了iPhone 5S。iPhone 5S包括带有64位架构的A7处理器芯片和被称为iOS 7的64位操作系统。 还宣告了其他64位架构智能电话和/或它们处于开发之中。

至少在这些64位架构智能电话的部署的初始阶段,可能希望能够提供 向后兼容性,以便已经开发的32位代码能够在这些智能电话上运行。这将 允许各种现有的32位移动应用及其他32位代码继续被使用。

iPhone 5S和iOS 7提供这样的向后兼容性。它们能够执行32位代码以 及64位代码。此外,32位代码还能够使用32位库。

附图说明

可通过参考以下描述以及用于示出实施例的附图最佳地理解本发明。 在附图中:

图1是其中可以实现本发明的各实施例的计算机系统的第一实施例的 框图。

图2是其中可以实现本发明的各实施例的计算机系统的第二实施例的 框图。

图3是其中可以实现本发明的各实施例的计算机系统的第三实施例的 框图。

图4是其中可以实现本发明的各实施例的计算机系统的第四实施例的 框图。

图5是架构之间的兼容性模块的实施例的框图。

图6是具有包装器库的架构之间的兼容性模块的实施例的框图。

图7是使用功能相互定位来利用架构之间的兼容性模块的包装器库来 截取控制流程转移的方法的实施例的方框流程图。

图8是可操作以使用动态加载器模块的运行时结构来确定何时更改兼 容性模式的架构之间的兼容性模块的框图。

图9A是示出了有序流水线的实施例和寄存器重命名无序发布/执行流 水线的实施例的框图。

图9B是示出了处理器核的实施例的框图,包括耦合到执行引擎单元的 前端单元,两者都耦合到存储器单元。

图10A是单一处理器核的实施例的框图,以及其与管芯上的互连网络 的连接以及其第2级(L2)缓存的本地子集。

图10B是图10A的处理器核的一部分的展开图的实施例的框图。

图11是可以具有一个以上的核、可以具有集成的存储器控制器,并可 以具有集成的图形的处理器的实施例的框图。

图12是计算机架构的第一实施例的框图。

图13是计算机架构的第二实施例的框图。

图14是计算机架构的第三实施例的框图。

图15是片上系统架构的实施例的框图。

图16是根据本发明的各实施例的使用软件指令转换器来将源指令集 中的二进制指令转换为目标指令集中的二进制指令的框图。

具体实施方式

如在背景部分所讨论的,iPhone 5S和iOS 7提供向后兼容性。32位代 码和64位代码两者都能够在iPhone 5S上执行。32位代码使用一组32位 库。同样,64位代码使用一组64位库。然而,这种用于提供向后兼容性的 方法的一个缺点是,iPhone 5S需要包括这些库的32位和64位版本两者。 具体而言,包括了一组32位库,其链接到32位代码,并被32位代码使用。 包括了另一组64位库,其链接到64位代码,并被64位代码使用。存储32 位库和64位库两者消耗比存储单一库所需的更多存储空间。

此处公开了允许给定架构的代码(例如,32位代码、旧式代码等等) 使用不同的架构(例如,64位代码、较新的架构等等)的库的架构之间的 兼容性模块。在下面的描述中,阐述了很多具体细节(例如,特定架构处 理器和操作系统、新的和旧式架构之间的差异、架构之间的兼容性模块、 处理器配置、操作序列等等的示例)。然而,在没有这些具体细节的情况 下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术, 以避免混淆对本描述的理解。

图1是其中可以实现本发明的各实施例的计算机系统100的第一实施 例的框图。在各实施例中,计算机系统可以包括智能电话、蜂窝电话、移 动电话、个人数字助理(PDA)、便携式媒体播放器、手持式设备、平板 电脑、pad计算机、膝上型计算机、台式计算机、工作站、视频游戏控制台、 机顶盒、服务器、网络设备,或其他已知的电子设备。在某些实施例中, 计算机系统可以表示具有有限的存储器资源的小手持式计算机系统,诸如, 例如,智能电话、蜂窝电话、PDA、平板电脑,或手持式设备,虽然本发 明的范围不受限制。

计算机系统包括处理器102的实施例和存储器110的实施例。处理器 和存储器可以通过常规耦合机制108(例如,通过一个或多个总线、中枢、 存储器控制器、芯片组组件等等),耦合在一起,或以别的方式彼此进行 通信。本领域中已知的各种不同的耦合机制都是合适的。存储器可以包括 一个或多个存储器设备和/或一个或多个不同类型的存储器,如通常在这样 的计算机系统中所使用的。

在所示实施例中,处理器是64位架构处理器,但是本发明的范围不仅 限于此。在某些实施例中,处理器可以是通用处理器。替换地,处理器可 以是专用处理器。合适的专用的处理器的示例包括,但不仅限于,通信处 理器、图形处理器、网络处理器、密码处理器、协处理器、嵌入式处理器、 数字信号处理器(DSP)以及控制器(例如,微控制器),仅举几个例子 而已。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令 集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何一种, 其各种混合型,或具有这样的不同的处理器的组合(例如,在不同的核中)。

如图所示,在某些实施例中,64位架构处理器可以具有对32位架构 处理器不可用的64位架构资源104。例如,64位架构资源可以包括在32 位处理器中不存在的高级架构资源和/或性能增强特征。例如,64位处理器 可以具有额外的架构寄存器,增强应用二进制接口(ABI)、用于过程调用 的改善的参数传递逻辑,等等。例如,与IA 32架构相比,64架构 具有较大数量的寄存器、额外的浮点单指令、多数据(SIMD)功能、允许 通过寄存器而并非通过堆栈访问来进行参数传递的64位ABI。这些高级架 构资源和/或性能增强特征可以帮助改善软件的性能。这些资源或特征是向 64位计算的增长的趋势的理由之一。

再次参考图1,存储器110包括各种不同类型的软件模块。在所示实 施例中,软件模块包括64位操作系统模块112。64位操作系统模块可以包 括与处理器的64位ABI兼容的系统级别的软件。64位操作系统模块一般 被设计为能够使用64位处理器的某些或全部64位架构资源104。

存储器还包括一个或多个32位代码模块116,可任选地,以及一个或 多个64位代码模块114。在某些实施例中,这些可以包括编译的和/或二进 制代码。这样的32位和64位代码模块的示例包括,但不仅限于,应用模 块。在智能电话或其他移动设备的特定情况下,应用模块可以表示移动应 用或APP。一方面,32位代码模块可以表示以前为前辈32位架构编写的 旧式或现有的代码模块,虽然本发明的范围不受限制。在另一方面,32位 代码模块可以是新编写的32位代码模块。32位代码模块可能为32位架构 处理器编译。

存储器还包括64位库模块118。在某些实施例中,如虚线所示,存储 器和/或计算机系统可以可任选地包括32位库模块120。可另选地,在其他 实施例中,如32位库模块中的“X”所示,存储器和/或计算机系统可以可 任选地省略这样的32位库模块,甚至在32位代码模块被存储在存储器中 并且能够在64位处理器上运行的情况下。32位和64位库模块的示例包括, 但不仅限于,C标准库、数学库、系统库等等的那些。

在操作过程中,32位代码和64位代码两者都可以在64位处理器上运 行。例如,64位操作系统模块、32位代码模块以及64位库模块的指令或 代码可以在64位处理器上执行或运行。通过允许旧式32位应用在较新的 64位处理器上运行,这可以潜在地用于提供向后兼容性。在某些实施例中, 32位和64位代码两者都可以在同一个线程内运行。在某些实施例中,64 位处理器可以具有可选32位或64位代码执行模式106,以指出64位代码 还是32位代码(在某些实施例中,32位代码以及64位代码)当前正在由 处理器执行。例如,在一个实施例中,模式106可以表示允许64位代码但 不允许32位代码在64位处理器上执行的第一64位模式,以及允许32位 代码在64位处理器上执行的第二32位模式。一方面,32位模式还可以允 许64位代码在64位处理器上执行。在另一方面,32位模式可能不允许64 位代码在64位处理器上执行。64位处理器可以可任选地默认地在64位模 式下操作,直到使模式更改进入32位模式,虽然这不是必需的。其他处理 器不必一定具有用以执行不同类型代码的不同模式(例如,可以具有32位 /64位混合模式)。

如上文所讨论的,iPhone 5S还通过允许32位代码在64位架构上运行, 来允许向后兼容性。这通过具有库的32位和64位版本两者来实现。包括 了第一组32位库,其链接到32位代码(例如,32位旧式移动应用),并 被它使用。包括了第二组64位库,其链接到64位代码,并被64位代码使 用。32位代码只能够使用32位库模块。然而,这种方法一个可能的缺点是 需要继续提供32位库,供32位代码使用。一则,需要另外的存储空间以 存储32位库。特别是对于智能电话、平板电脑及其他小电子设备,存储空 间的量一般倾向于有限。此外,容纳32位库所需的另外的存储空间可能倾 向于增加设备的总制造成本。

这种方法的另一可能的缺点是,32位代码只能够使用32位库,但不 能使用64位库。这可能倾向于限制性能,因为32位库一般不被设计为能 够使用64位架构资源104(例如,高级架构和/或性能增强资源)。这些资 源一般不对32位库计划在其上面运行的对等(例如,前辈)32位架构处理 器可用。32位库未被设计为使用,并且不能使用全部这些64位架构资源。 因此,由于可以通过64位库实现的64位架构资源,32位库一般不能够实 现性能的提高。

再次参考图1,计算机系统包括32位至和/或来自64位(32位/64位) 兼容性模块122的实施例。32位/64位兼容性模块是32位和64位架构的 架构之间的兼容性模块的一个示例,虽然在其他实施例中,可以使用其他 架构。在某些实施例中,32位/64位兼容性模块可以被配置为或可操作以允 许32位模块116连接到并使用64位库模块118(例如,C标准库、数学库、 glibc、系统库等等)。在某些实施例中,兼容性模块可以允许32位代码在 其地址空间(例如,与只是特殊模块的有限的集合相反,诸如WoW64.dll、 WoW64Win.dll、Wow64Cpu.dll,或Ntdll.dll)使用任何任意64位库模块。 32位/64位兼容性模块可以被配置为或可操作,以作出适合于允许32位代 码模块使用64位库模块的各种兼容性更改。例如,这些更改可以包括考虑 32位代码模块和64位库模块的ABI之间的差异的更改。在某些实施例中, 32位/64位兼容性模块可以包括二进制转换模块。在某些实施例中,32位 /64位兼容性模块可以被配置为或可操作以作出代码类型执行模式更改(例 如,在32位和64位代码执行模式之间改变)。在各实施例中,32位/64 位兼容性模块可以以硬件(例如,集成电路、晶体管或其他电路元件,等 等),固件(例如,ROM、EPROM、闪存,或其他持久性或非易失性存储 器和微代码、微指令,或存储在其中的其他较低级别的指令),软件(例 如,存储在存储器中的较高级别的指令),或其组合来实现。

有利地,兼容性模块可以帮助提供向后兼容性并允许32位代码模块在 具有64位操作系统模块的系统中的64位处理器上执行或运行。由于32位 代码模块能够使用64位库模块,并且不是使用32位库模块所必需的,因 此,在某些实施例中,可以可任选地省略32位库模块。即,在某些实施例 中,存储器和/或计算机系统可以没有32位库模块。有利地,省略32位库 模块可以帮助腾出否则存储它们所需的存储空间,和/或可以通过需要提供 较小的总的存储空间量,帮助降低制造系统的成本。特别是对于智能电话、 平板电脑及其他相对较小的电子设备,避免存储32位库模块的必要性可以 提供优点。可另选地,在其他实施例中,如果需要,可以包括32位库模块。 在某些实施例中,至少一个32位代码模块能够借助于兼容性模块,使用至 少一个64位库模块,即使其他32位代码模块使用32位库模块。

有利地,允许32位代码模块使用64位库模块还可以帮助改善性能。 例如,与32位库模块相比,64位库模块可以更好地能够使用64位处理器 的64位架构资源104(例如,高级架构和/或性能增强资源)。例如,64 位库模块能够使用比对32位库模块可用的更多的寄存器,64位库模块能够 通过寄存器而并非堆栈来传递参数,与32位库模块等等的情况相同。结果, 如果32位代码模块能够让64位库模块执行某些所需的处理,而并非32位 库模块,则64位库模块能够更快地执行处理和/或更快地提供所需的结果。 这可以帮助相对于在使用32位库模块来执行此处理的情况下可以实现的性 能,取得更好的性能。

图1示出了64位处理器、64位操作系统以及64位和32位代码,以 及库模块。然而,本发明的范围不受限制。在其他实施例中,可以可任选 地使用其他架构。例如,在某些实施例中,X位架构代码模块可以使用Y 位架构库模块,并可以使用Y位架构操作系统,在Y位架构处理器上运行, 其中,X和Y不同。

为进一步说明,图2-4示出了其中可以实现本发明的各实施例的计算 机系统的多个其他实施例。图2-4的计算机系统以及它们的组件与图1的 计算机系统具有某些相似度。为避免模糊描述,将主要描述这些计算机系 统以及它们的组件的不同的和/或附加特征,而不重复所有类似的特征。然 而,应该理解,这些计算机系统和组件可以具有与图1的对应的组件相同、 类似的,或对应的特征。

图2是具有16位至和/或来自32位(16位/32位)兼容性模块222的 计算机系统200的第二实施例的框图。计算机系统包括32位处理器202和 存储器210。存储器存储32位操作系统模块212、一个或多个16位代码模 块216以及32位库模块218。16位/32位兼容性模块可以允许16位代码模 块使用32位库模块。存储器还可以可任选地存储一个或多个32位代码模 块(未示出),它们还可以可任选地使用32位库模块。在某些实施例中, 存储器和/或计算机系统还可以具有16位库模块。可另选地,可以可任选地 省略16位库模块。

图3是具有16位至和/或来自128位(64位/128位)兼容性模块322 的计算机系统300的第三实施例的框图。计算机系统还包括128位处理器 302和存储器310。存储器存储128位操作系统模块312、一个或多个64 位代码模块316以及128位库模块318。64位/128位兼容性模块可以允许 64位代码模块使用128位库模块。存储器还可以可任选地存储一个或多个 128位代码模块(未示出),它们还可以可任选地使用128位库模块。在某 些实施例中,存储器和/或计算机系统还可以具有64位库模块。可另选地, 可以可任选地省略64位库模块。

图4是具有16位至和/或来自32位(16位/32位)兼容性模块422的 计算机系统400的第四实施例的框图。计算机系统还包括16位处理器402 和存储器410。存储器存储16位操作系统模块412、一个或多个32位代码 模块416以及16位库模块418。16位/32位兼容性模块可以允许32位代码 模块使用16位库模块。存储器还可以可任选地存储一个或多个16位代码 模块(未示出),它们还可以可任选地使用16位库模块。在某些实施例中, 存储器和/或计算机系统还可以具有32位库模块。可另选地,可以可任选地 省略32位库模块。

这些只是几个附加示例。构想另外的其他实施例。例如,在再一个实 施例中,32位至和/或来自64位(32位/64位)兼容性模块可以允许64位 代码模块使用32位库模块,并可以在带有32位操作系统的32位处理器上 运行。为说明某些概念,在图中示出并描述32位代码模块、64位处理器、 64位操作系统以及32位/64位兼容性模块。然而,应该理解,在其他实施 例中,本文的其它部分所描述的其他架构变体也合适的。

图5是第一架构(例如,32位)至和/或来自第二架构(例如,64位) 兼容性模块522的实施例的框图。第一架构/第二架构兼容性模块可操作用 于使一个或多个第一架构(例如,32位)代码模块516与一组第二架构(例 如,64位)库模块518兼容,并能够使用它们。第一架构/第二架构兼容性 模块耦合在第一架构代码模块和第二架构库模块之间,或以别的方式在它 们之间进行通信。在示图中,第一架构代码模块和第二架构库模块以虚线 示出,以表示它们不是本发明的一部分。

兼容性模块包括控制流程转移接收模块530。控制流程转移接收模块 可以被配置为或可操作用于截取或以别的方式接收输入控制流程转移操 作,诸如,例如,来自第一架构代码模块的调用过程操作,或从来自第二 架构库模块的过程操作的返回。控制流程转移接收模块还可以被配置为或 可操作用于接收对应于接收到的输入控制流程转移操作的一个或多个输入 变量或其他参数。例如,可以从堆栈中,从用于传递这些参数的寄存器中 检索这些参数,或以别的方式。

兼容性模块还包括ABI更改模块532。ABI一般表示两个程序模块之 间的接口,其中一个程序模块常常是机器代码级别的库模块或操作系统模 块。ABI通常包括诸如数据大小、布局、以及对齐之类的细节,功能是如 何被调用的,调用协定的细节,以及信息应该如何在程序模块之间传递(例 如,如何传递自变量,以及如何检索返回值),等等。例如,ABI可以指 定是否通过堆栈或寄存器在各模块之间传递参数,使用哪些特定寄存器, 以什么顺序将参数放在堆栈上等等。通常,在第一架构(例如,32位)代 码模块的ABI和第二架构(例如,64位)库模块的ABI之间将有至少某些 差异。ABI更改模块可以被配置为或可操作用于进行更改,以帮助桥接这 些ABI差异之间的间隔。ABI更改模块可以取决于涉及的特定第一和第二 架构和ABI,作出各种不同类型的ABI更改。例如,ABI更改模块可以作 出将输入控制流程转移操作和其相关联的参数映射或中继到对应的输出控 制流程转移操作和其相关联的参数所需的ABI更改。作为一个示例,ABI 更改模块可以作出将从第一架构代码模块接收到的调用过程操作映射或中 继到对应的调用过程操作的不同的调用协定以被输出到第二架构库模块所 需的ABI更改(例如,可能将通过堆栈提供的输入参数映射到在寄存器中 传递的对应的输出参数)。在某些实施例中,取决于特定ABI,输入参数 的数据大小或格式还可以被更改为输出参数的对应的大小或格式。作为另 一个示例,ABI更改模块可以作出将来自从第二架构库模块接收到的过程 操作的返回映射或中继到来自过程操作的对应的返回的不同的调用协定以 便被提供到第一架构代码模块所需的ABI更改(例如,可能将在寄存器中 传递的输入参数映射到通过堆栈提供的对应的输出参数)。

再次参考图5,兼容性模块还包括处理器模式更改模块534。处理器模 式更改模块可以被配置为或可操作用于在适当的情况下改变处理器的代码 类型执行模式,以指出要被执行的特定类型的代码(例如,32位或64位代 码)。如上文所提及的,某些处理器可以具有其中可以执行这些不同类型 的代码的不同的模式,虽然这不是必需的。例如,在某些实施例中,64位 处理器可以具有允许64位代码但不允许32位代码执行的第一64位模式, 以及允许32位代码执行的第二32位模式。在某些情况下,第二32位模式 还可以允许64位代码执行,而在其他情况下,32位模式可以不允许64位 代码执行。其他处理器可以具有不同的模式(对于不同于32位和/或64位 代码之外的代码),附加的模式(例如,对于除32位和64位代码之外的 16位代码)等等。其他处理器不必一定具有对于不同类型的代码的不同的 模式。例如,处理器可以可任选地/潜在地具有其中可以执行不同类型的代 码的单一混合模式(例如,32位/64位混合模式)。在这样的情况下,可 以可任选地省略处理器模式更改模块。

不同类型的处理器可以以不同的方式实现不同的代码类型执行模式。 作为一个说明性示例,位于加利福尼亚州圣克拉拉的英特尔公司所提供的 某些64位处理器通过代码段描述符,指出64位和32位/64位混合兼容性 模式。代码段描述符用于存储器分割。存储器分割一般是指将存储器分割 为多个段或部分。对存储器位置或存储器地址的引用一般包括段标识符和 所标识的段内的偏移。具体而言,在这些64位处理器中,代码段描述符具 有被称为L位的特定位,以指出代码类型执行模式。根据采用的协定,L- 位被清除为二进制零(即,0),以指出其中64位代码被允许执行但32位 代码不被允许执行的64位模式。相反,L位被设置为二进制1(即,1) 以指出其中32位代码和64位代码两者都可以执行的32位/64位混合的兼 容性模式。

在这样的代码类型执行模式通过代码段描述符指出的实施例中,处理 器模式更改模块可以可操作或被配置成基于L位、代码段描述符,基于要 被执行的代码处于什么段中,等等,作出模式更改判断。例如,在某些实 施例中,不同类型的代码可以被保留在不同的段中,虽然在其他实施例中, 这不是必需的。例如,可以有一个或多个具有32位代码但没有64位代码 的32位代码段,以及一个或多个具有64位代码但没有32位代码的64位 代码段。在一个示例中,有单一32位代码段,用于64位操作系统代码的 一个64位代码段,以及用于64位用户级别的代码以及64位库的一个64 位代码段,虽然本发明的范围不受限制。这些32位和64位代码段可以以 本地描述符表(LDT)来表示。在这样的实施例中,32位代码段和64位段 之间的全部控制流程转移操作都可以使用段之间或所谓的“远”控制流程 转移。换言之,从执行64位代码到执行32位代码,或从执行32位代码到 执行64位代码的过渡只能在来自另一段的远或段之间的控制流程转移之后 发生。在这样的实施例中,可以检查这样的远或段之间控制流程转移操作, 以知道转移何时在用于不同类型的代码的段之间。在这样的情况下,这可 以被用来作出处理器代码类型执行模式更改判断。其他处理器可以指出这 样的代码类型执行模式和/或以不同的方式作出模式更改判断。

如上文所提及的,在某些实施例中,可以有一个或多个32位代码段。 在某些实施例中,32位代码模块(例如,具有旧式代码)可能是基于平面 寻址编译的。在平面寻址中,代码和数据段的基本地址可能被设置为零。 此外,代码和数据段两者还可能被设置为四千兆字节的极限或最大值。在 某些实施例中,具有这些32位代码模块的一个或多个创建的32位代码段 还可以被配置成使用这样的平面寻址方法。这可以帮助避免打破在32位代 码模块的初始编译过程中作出的假设和/或重新编译32位代码模块的要求。

再次参考图5,兼容性模块还包括控制流程转移输出模块536。控制流 程转移输出模块可以被配置为或可操作用于输出或提供对应于以前由控制 流程转移接收模块接收到的输入控制流程转移操作的输出控制流程转移操 作。控制流程转移输出模块还可以被配置为或可操作用于执行使用适合于 目标或目的地模块的调用协定原则,并根据由ABI更改模块作出的ABI更 改,执行输出控制流程转移操作。作为示例,控制流程转移输出模块可以 向第二架构库模块输出对应于由控制流程转移接收模块从第一架构代码模 块接收到的初始调用过程操作的,并且反映由ABI更改模块作出的更改的 调用过程操作。

图6是具有包装器库640的32位/64位兼容性模块622的实施例的框 图。在某些实施例中,包装器库可以对应于并镜像给定架构的一个或多个 对应的实际库620(在示图中,是32位库620)。在某些实施例中,包装 器库在实际库(例如,32位库)中可以具有每一个对应的功能模块的包装 器模块。在所示实施例中,32位库包括第一32位功能模块644-1(例如, 具有名称“余弦”)到第N 32位功能模块644-N,其中,N可以是适合于 特定实现的任何数字。类似地,包装器库包括第一包装器模块642-1(例如, 也具有名称“余弦”)到第N包装器模块642-N。第一32位功能模块对应 于第一包装器模块,第N 32位功能模块对应于第N包装器模块。在某些实 施例中,包装器库可以包括32位C标准库中的每一个功能模块的包装器模 块,一个或一组库(例如,32位线程库、32位数学库、32位系统库等等) 中的每一个功能模块的包装器模块,虽然本发明的范围不受限制。在某些 实施例中,一组64位库模块618(例如,64位库)可以具有32位库620 中的每一个对应的功能模块和/或包装器库640中的每一个包装器模块的64 位库模块,虽然这不是必需的。

在某些实施例中,包装器库可以从计划用于32位库的32位代码模块 截取或以别的方式接收控制流程转移操作。例如,32位代码模块可以向第 一32位功能模块(例如,具有名称“余弦”)发出控制流程转移操作(例 如,调用过程操作),而对应的第一包装器模块(例如,也具有名称“余 弦”)可以截取此控制流程转移操作。包装器模块可以处理如本文其他位 置所描述的接收到的控制流程转移操作。例如,所示出的第一包装器模块 具有控制流程转移接收模块630、ABI更改模块632、处理器模式更改模块 634以及控制流程转移输出模块636。这些中的每一个都可以类似于,本文 其他位置所描述的那些,或与它们相同(例如,结合图5)。

控制流程转移输出模块可以向64位库模块提供对应的或导出的调用 过程功能。在某些实施例中,包装器库还可以从64位库模块截取或以别的 方式接收控制流程转移操作。例如,64位库模块可以从过程操作发出响应 性返回,对应的第一包装器模块可以截取此控制流程转移操作。第一包装 器模块可以处理如前所述的从过程操作接收到的返回(例如,作出ABI更 改,等等),并向32位代码模块提供来自过程操作的对应的或导出的返回。 在某些实施例中,包装器模块可以逻辑地被分区为将控制从调用者32位代 码模块转移到64位库模块(例如,在调用时)的蹦床(trampoline)模块, 以及将控制从64位库模块转移到32位代码模块的反蹦床或返回存根(例 如,在返回时)。

上文所描述的实施例引用了32位代码模块、32位库、64位库,以及 32位/64位兼容性模块,虽然本发明的范围不受限制。在其他实施例中,这 些对32位代码模块、32位库、64位库,以及32位/64位兼容性模块的引 用可以替换为本文中的其它位置所描述的其他架构变体(例如,为图2-4 所示出的并描述的那些)。

图7是使用功能插入来利用架构之间的兼容性模块的包装器库来截取 控制流程转移的方法750的实施例的方框流程图。在某些实施例中,方法 可以利用图6的包装器库640来执行。可另选地,可以可任选地使用类似 的或不同的包装器库。

该方法包括,在框751,配置包装器库在一个或多个其他库被搜索之 前被搜索功能模块。例如,这可以包括配置包装器库在64位库中搜索功能 模块之前和/或在可选32位库(如果存在的话)中搜索功能模块之前,搜索 功能模块。可任选地,包装器库可以被配置成在任何其他库被搜索之前被 搜索。在某些实施例中,配置包装器库在一个或多个其他库之前被搜索可 以通过利用动态链接器模块搜索功能的顺序来进行。通常,动态链接器模 块可以在运行时在库中按照库被加载的顺序搜索功能。如果第一库在第二 库之前被加载,那么,动态链接器模块可以在第二库中搜索所希望的功能 之前在第一库中搜索所希望的功能。相应地,可以在任何其他库之前加载 包装器库,包装器库被计划或希望在这些其它库之前被搜索。在某些实施 例中,这可以通过预先加载包装器库(诸如,例如,通过使用命令 LD_PRELOAD)来进行。可另选地,可以使用加载包装器库的其他方式。 一方面,可以预先加载包装器库或在来自涉及希望被包装器模块截取的库 模块的代码模块的第一控制流程转移操作之前加载。

该方法包括,在框752,从计划用于一组32位库模块的32位功能模 块的32位代码模块接收控制流程转移企图。作为示例,这可以包括接收指 出特定32位库功能模块的调用过程操作(例如,具有特定的功能名称)。

该方法包括,在框753,搜索包装器库(例如,在搜索32位库模块之 前,如果它们存在,和/或在搜索64位库模块之前),以及标识对应于32 位功能模块的包装器模块。在某些实施例中,标识的包装器模块可以与所 希望的实际库模块具有相同功能名称(例如,32位库模块)。例如,可以 搜索包装器库中的名为“余弦”的32位库功能模块,可以标识也名为“余 弦”的包装器模块。可另选地,可以可任选地使用映射表或除基于它们的 名称之外在包装器模块和32位库功能模块之间提供对应关系的其他方式。

在框754,该方法包括将控制流程转移到标识的包装器模块。有利地, 由于包装器库被配置成在一个或多个其他库之前被搜索,因此,控制流程 转移将指向标识的包装器模块,而不是实际库模块。包装器模块基本上逻 辑地被安置或插入在32位代码模块和实际库模块之间。

在框755,包装器模块使试图的向32位功能模块的控制流程转移与向 一个或多个64位功能模块的控制流程转移兼容。这可以如上文所描述的那 样进行。例如,输入参数可以被映射到输出参数,可以作出其他ABI更改, 可以遵循输出调用协定,等等。

在框756,包装器模块导致控制流程转移到一个或多个64位功能模块。 例如,包装器模块可以提供对应于,并一般反映在框752接收到的控制流 程转移企图的控制流程转移操作。

上文所描述的方法引用32位代码模块、32位库功能模块,以及64位 库功能模块,虽然本发明的范围不受限制。在其他实施例中,这些对32位 代码模块、32位库功能模块、64位库功能模块的引用可以替换为本文其它 位置所描述的其他架构变体(例如,为图2-4所示出的并描述的那些)。

图8是具有架构之间的兼容性模块822的计算机系统800的框图,该 模块822被配置为或可操作用于通过访问运行时结构868,确定不同类型的 代码816、818之间的转移。计算机系统具有地址空间860。地址空间包括 不同类型的代码816、818。在所示示例实施例中,这些不同类型的代码包 括32位代码模块816和64位代码模块818,虽然本发明的范围不受限制。 相应地,在某些实施例中,两种或更多种不同类型的代码(例如,32位代 码和64位代码)可以被包括或混合在相同地址空间中。通常,一般不将这 样的不同类型的代码模块包括在相同地址空间中。32位代码模块具有表示 32位代码类型的标头862。类似地,64位代码模块具有表示不同的64位代 码类型的标头864。标头的一种合适的类型的一个可能的示例是可执行的并 且可链接的格式(ELF)标头。

计算机系统还包括运行时或动态加载器模块866。动态加载器模块可 以具有二进制可执行程序的运行时加载的功能。运行时加载器模块允许两 种或更多种不同类型的代码(例如,32位代码和64位代码)被包括或混合 在相同地址空间中。协定运行时库,诸如运行时加载器,一般不允许这样 的不同类型的代码被包括或混合在相同地址空间中。运行时加载器模块具 有运行时结构868(例如,数据结构)。运行时加载器模块可以被配置为或 可操作用于跟踪在将代码或库模块加载到地址空间时该代码或库模块的类 型(例如,它是32位还是64位)。例如,运行时加载器模块可以访问32 位和64位代码模块的标头862、864,并确定指出的代码的类型。运行时加 载器模块可以将代码类型869存储在运行时结构中。运行时加载器模块还 可以可任选地将代码地址870(例如,代码部分的基运行时地址)和/或代 码大小871存储在运行时结构中,虽然这不是必需的。在某些实施例中, 还可以修改构成运行时加载器模块866和/或帮助实现动态加载的各方面的 其他系统二进制模块。例如,可以修改链接器、加载器,以及安装(glibc), 以允许不同类型的代码被包括或混合在相同地址空间中。作为示例,可以 修改这样的模块,以连接并使用运行时结构868和代码类型869。

再次参考图8,计算机系统还包括架构之间的兼容性模块822。在所示 示例中,兼容性模块是32位/64位兼容性模块,虽然本发明的范围不受限 制。32位/64位兼容性模块包括处理器模式更改模块834。处理器模式更改 模块和/或32位/64位兼容性模块与运行时加载器模块和/或运行时结构耦 合,或以别的方式与其进行通信。处理器模式更改模块和/或32位/64位兼 容性模块还与处理器的代码类型执行模式806耦合,或以别的方式与其进 行通信。

在某些实施例中,32位/64位兼容性模块822可以被配置为或可操作 用于通过访问运行时结构868,判断控制流程转移是否在不同类型的代码之 间,例如,在32位和64位代码之间。例如,兼容性模块可以使用运行时 结构来判断正在对其作出控制流程转移的目标代码是32位还是64位代码。 在某些实施例中,每当执行控制流程转移操作时(或在某些实施例中,每 当执行远或段之间的控制流程转移操作时),处理器模式更改模块可以访 问运行时结构中的代码类型869。在某些实施例中,兼容性模块可以接收这 样的控制流程转移操作872的指示。处理器模式更改模块可以可操作用于 使用这些代码类型来判断目标位置处的代码的类型是否与代码的当前类型 相同和/或处理器的当前代码类型执行模式806是否需要更改。

此处所描述的架构之间的兼容性模块可以以不同的方式在不同的实施 例中实现。为进一步示出某些概念,考虑架构之间的兼容性模块可以以安 卓环境的64位版本实现的方式的一种可能的示例的进一步的细节是有帮助 的。安卓是主要用于诸如智能电话和平板电脑之类的触摸屏移动设备的基 于Linux内核的操作系统。预期的64位安卓环境可以包括安卓框架的64 ABI兼容的版本(Dalvik、zygote、诸如libc之类的系统库等等)和在64 位处理器上运行的Linux内核。64位ABI兼容的Dalvik(是安卓的进程虚 拟机),可以包括Dalvik的处理对64位库的JNI调用并生成64位JIT(实 时)代码的能力。

有不同类型的安卓应用。一种类型是纯粹Java应用。纯粹Java应用只 包含Java字节代码,但不包含本机或架构特定的代码。安卓可以通过调用 Dalvik虚拟机,来执行这样的纯粹Java应用。一般而言,纯粹Java应用可 以在没有对安卓环境的进一步的更改的情况下执行。

安卓应用的另一种类型是本机应用。本机应用包含本机或架构特定的 代码。例如,本机应用可以具有Java字节代码和本机代码两者。数学库、 图形库、系统库、C标准库,等等可以属于此类别。本机代码可以通过使 用Java的JNI(Java本机接口)技术来执行。例如,本机应用可以使用JNI 接口来调用本地方法。对本机方法的调用可以使用Dex文件中的 invoke_direct Dalvik字节代码来表示。invoke_direct可以利用参数来调用方 法,和/或指出要调用的方法。在某些实施例中,可以修改实现Dalvik中的 invoke_direct字节代码的方式,以允许架构之间的可操作性和兼容性(例如, 允许32位代码模块使用64位库模块和64位ABI)。

为进一步说明,考虑用于在Dalvik中实现invoke_direct字节代码的代 表性的调用堆栈流程。当应用调用本机库模块时,Dalvik使用 System.loadLibrary调用来将本机库模块加载到地址空间中。然后,Dalvik 的System.loadLibrary调用Runtime.loadLibrary。然后,Runtime.loadLibrary 作出对nativeLoad的JNI调用。然后,nativeLoad调用dvmLoadNativeCode。 此模块,dvmLoadNativeCode实现loadLibrary的核。例如,通常, dvmLoadNativeCode将响应于来自32位代码模块的对32位本机库模块的 调用,加载32位本机库模块。

在某些实施例中,可以修改invoke_direct,以允许如本文其它位置所 描述的架构之间的可操作性和兼容性。例如,可以修改invoke_direct,以允 许32位代码模块使用64位库模块和64位ABI(例如,将对32位本机库 模块的调用映射到对64位本机库模块的调用)。例如,可以修改 invoke_direct,以截取来自32位代码模块(例如,移动应用)的计划用于 32位本机库模块的调用,并作出合适的ABI更改,以将接收到的调用映射 到对应的输出的对64位本机库模块的调用。在某些实施例中,invoke_direct 可以可任选地包括带有如本文的其它位置所描述的特征的包装器模块,虽 然这不是必需的。在某些实施例中,可以控制搜索本机库模块的顺序,以 便首先标识包装器模块(例如,在32位本机库模块和/或64位库模块之前)。 例如,可以相对于到32位和64位本机库模块的路径,给予到包装器模块 的路径更大的优先级。这可以被用来允许包装器模块截取调用(例如,对 32位库模块的调用)。

在某些实施例中,,还可以修改dvmLoadNativeCode,以跟踪正在被 执行的代码的类型(例如,32位代码或64位代码),(例如,以实现处理 器代码类型执行模式切换)。例如,可以修改dvmLoadNativeCode,以包 括并使用运行时结构和/或代码类型信息(例如,类似于图8的代码类型 869)。示例性核架构、处理器和计算机架构

处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样 的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的 高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同 处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在 用于通用计算的一个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/ 或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计 算机系统架构,其可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相 同的封装中但分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该 情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用 逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用 处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描 述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和无序核框图

图9A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重 命名的无序发布/执行流水线的框图。图9B是示出根据本发明的各实施例的要包括在 处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架 构核的框图。图9A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示 出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情 况下,将描述无序方面。

在图9A中,处理器流水线900包括获取级902、长度解码级904、解码级906、 分配级908、重命名级910、调度(也被称为指派或发布)级912、寄存器读取/存储 器读取级914、执行级916、写回/存储器写入级918、异常处理级922、提交级924。

图9B示出了包括耦合到执行引擎单元950的前端单元930的处理器核990,且 执行引擎单元和前端单元两者都耦合到存储器单元970。核990可以是精简指令集计 算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代 核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、 协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。

前端单元930包括耦合到指令缓存单元934的分支预测单元932,该指令缓存单 元耦合到指令转换后备缓冲器(TLB)936,该指令转换后备缓冲器耦合到指令获取 单元938,指令获取单元耦合到解码单元940。解码单元940(或解码器)可解码指 令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出 的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。 解码单元940可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找 表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个 实施例中,核990包括(例如,在解码单元940中或否则在前端单元930内的)用于 存储某些宏指令的微代码的微代码ROM或其他介质。解码单元940耦合到执行引擎 单元950中的重命名/分配单元952。

执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元耦合至引 退单元954和一个或多个调度器单元956的集合。调度器单元956表示任何数目的不 同调度器,包括预留站、中央指令窗等。调度器单元956耦合到物理寄存器组单元 958。每个物理寄存器组单元958表示一个或多个物理寄存器组,其中不同的物理寄 存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩 浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针) 等。在一个实施例中,物理寄存器组单元958包括向量寄存器单元、写掩码寄存器单 元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、 和通用寄存器。物理寄存器组单元958与引退单元954重叠以示出可以用来实现寄存 器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用 将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退 单元954和物理寄存器组单元958耦合到执行群集960。执行群集960包括一个或多 个执行单元962的集合和一个或多个存储器访问单元964的集合。执行单元962可以 对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点) 执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于 特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一 个执行单元或多个执行单元。调度器单元956、物理寄存器组单元958和执行群集960 被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例 如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和/ 或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流 水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集 具有存储器访问单元964的某些实施例)。还应当理解,在使用分开的流水线的情况 下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序 发布/执行。

存储器访问单元964的集合耦合到存储器单元970,该存储器单元包括耦合到数 据缓存单元974的数据TLB单元972,其中数据缓存单元耦合到二级(L2)缓存单 元976。在一个示例性实施例中,存储器访问单元964可包括加载单元、存储地址单 元和存储数据单元,其中的每一个均耦合至存储器单元970中的数据TLB单元972。 指令缓存单元934还耦合到存储器单元970中的二级(L2)缓存单元976。L2缓存 单元976耦合到一个或多个其他级的缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线 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。

核990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加 的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福 尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)), 其中包括本文中描述的各指令。在一个实施例中,核990包括支持打包数据指令集合 扩展(例如,AVX1、AVX2)的逻辑,由此允许被许多多媒体应用使用的操作将使 用打包数据来执行。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合), 并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程 化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑 核)、或其组合(例如,时分获取和解码以及此后诸如用超线程化技术来同步 多线程化)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架 构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据缓存 单元934/974以及共享L2缓存单元976,但替代实施例可以具有用于指令和数据两 者的单个内部缓存,诸如例如一级(L1)内部缓存或多个级别的内部缓存。在一些实 施例中,该系统可包括内部缓存和在核和/或处理器外部的外部缓存的组合。或者, 所有缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图10A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻 辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高 带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它 必要的I/O逻辑通信。

图10A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1002 的连接及其二级(L2)缓存的本地子集1004的框图。在一个实施例中,指令解码器1000 支持具有紧缩数据指令集扩展的x86指令集。L1缓存1006允许对进入标量和向量单 元中的缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单 元1008和向量单元1010使用分开的寄存器集合(分别为标量寄存器1012和向量寄存 器1014),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)缓存 1006读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合 或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。

L2缓存的本地子集1004是全局L2缓存的一部分,该全局L2缓存被划分成多 个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的 L2缓存1004的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2缓 存子集1004中,并且可以与其他处理器核访问其自己的本地L2缓存子集并行地被快 速访问。被处理器核写入的数据被存储在其自己的L2缓存子集1004中,并在必要的 情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允 许诸如处理器核、L2缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数 据路径为每个方向1012位宽。

图10B是根据本发明的实施例的图10A中的处理器核的一部分的展开图。图10B 包括L1缓存1004的L1数据缓存1006A部分,以及关于向量单元1010和向量寄存 器1014的更多细节。具体地说,向量单元1010是16宽向量处理单元(VPU)(见16 宽ALU 1028),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。 该VPU通过混合单元1020支持对寄存器输入的混合、通过数值转换单元1022A-B 支持数值转换、并通过复制单元1024支持对存储器输入的复制。写掩码寄存器1026 允许断言所得的向量写入。

具有集成存储器控制器和图形器件的处理器

图11是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制 器、以及可能具有集成图形器件的处理器1100的框图。图11的实线框示出了处理器 1100,处理器1100具有单个核心1102A、系统代理1110、一组一个或多个总线控制 器单元1116,而可选附加的虚线框示出了替代的处理器1100,具有多个核心1102A-N、 系统代理单元1110中的一组一个或多个集成存储器控制器单元1114以及专用逻辑 1108。

因此,处理器1100的不同实现可包括:1)CPU,其中专用逻辑1108是集成图 形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1102A-N是一个或 多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器, 其中核1102A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协 处理器,其中核1102A-N是多个通用有序核。因此,处理器1100可以是通用处理器、 协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU (通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多 核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100 可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS 等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。

存储器层次结构包括在各核内的一个或多个级别的缓存、一个或多个共享缓存 单元1106的集合、以及耦合至集成存储器控制器单元1114的集合的外部存储器(未 示出)。该共享缓存单元1106的集合可以包括一个或多个中间级缓存,诸如二级(L2)、 三级(L3)、四级(L4)或其他级别的缓存、末级缓存(LLC)、和/或其组合。尽 管在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享缓存单元1106 的集合以及系统代理单元1110/集成存储器控制器单元1114互连,但替代实施例可使 用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个缓 存单元1106和核1102-A-N之间的一致性(coherency)。

在一些实施例中,核1102A-N中的一个或多个核能够多线程化。系统代理1110 包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单 元(PCU)和显示单元。PCU可以是或包括用于调整核1102A-N和集成图形逻辑1108 的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核1102A-N在架构指令集方面可以是同构的或异构的;即,这些核1102A-N中 的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅 仅子集或不同的指令集。

示例性计算机架构

图12-15是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、 手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、 嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控 制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设 计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑 的多个系统和电子设备一般都是合适的。

现在参见图12,所示为根据本发明的一个实施例的系统1200的框图。系统1200 可以包括一个或多个处理器1210、1215,这些处理器耦合到控制器中枢1220。在一 个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/ 输出中枢(IOH)1250(其可以在分开的芯片上);GMCH 1290包括存储器和图形 控制器,存储器1240和协处理器1245耦合到该存储器和图形控制器;IOH 1250将 输入/输出(I/O)设备1260耦合到GMCH 1290。或者,存储器和图形控制器中的一 个或两者可以被集成在处理器内(如本文中所描述的),存储器1240和协处理器1245 直接耦合到处理器1210以及控制器中枢1220,控制器中枢1220与IOH 1250处于单 个芯片中。

附加处理器1215的任选性质用虚线表示在图12中。每一处理器1210、1215可 包括本文中描述的处理核中的一个或多个,并且可以是处理器1100的某一版本。

存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM) 或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前端总线(FSB) 之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、 或者类似的连接1295与处理器1210、1215进行通信。

在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理 器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。 在一个实施例中,控制器中枢1220可以包括集成图形加速器。

在物理资源1210、1215之间可以存在包括架构、微架构、热、和功耗特征等的 一系列品质度量方面的各种差异。

在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。协处 理器指令可嵌入在这些指令中。处理器1210将这些协处理器指令识别为应当由附连 的协处理器1245执行的类型。因此,处理器1210在协处理器总线或者其他互连上将 这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协 处理器1245接受并执行所接收的协处理器指令。

现在参考图13,所示为根据本发明的一实施例的更具体的第一示例性系统1300 的框图。如图13所示,多处理器系统1300是点对点互连系统,且包括经由点对点互 连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每一 个都可以是处理器1100的某一版本。在本发明的一个实施例中,处理器1370和1380 分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中, 处理器1370和1380分别是处理器1210和协处理器1245。

处理器1370和1380被示为分别包括集成存储器控制器(IMC)单元1372和 1382。处理器1370还包括作为其总线控制器单元的一部分的点对点(P-P)接口1376 和1378;类似地,第二处理器1380包括点对点接口1386和1388。处理器1370、1380 可以使用点对点(P-P)接口电路1378、1388经由P-P接口1350来交换信息。如图 13所示,IMC 1372和1382将各处理器耦合至相应的存储器,即存储器1332和存储 器1334,这些存储器可以是本地附连至相应的处理器的主存储器的部分。

处理器1370、1380可各自经由使用点对点接口电路1376、1394、1386、1398 的各个P-P接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由 高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专 用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处 理器、GPGPU、或嵌入式处理器等等。

共享缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外 部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可 将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。

芯片组1390可经由接口1396耦合至第一总线1316。在一个实施例中,第一总 线1316可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互 连总线之类的总线,但本发明的范围并不受此限制。

如图13所示,各种I/O设备1314可以连同总线桥1318耦合到第一总线1316, 总线桥将第一总线1316耦合至第二总线1320。在一个实施例中,诸如协处理器、高 吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理 器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1315 被耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚计数(LPC) 总线。各种设备可以被耦合至第二总线1320,在一个实施例中这些设备包括例如键 盘/鼠标1322、通信设备1327以及诸如可包括指令/代码和数据1330的盘驱动器或其 它大容量存储设备的存储单元1328。此外,音频I/O 1324可以被耦合至第二总线1320。 注意,其它架构是可能的。例如,代替图13的点对点架构,系统可实现多分支总线 或者其他此类架构。

现在参考图14,所示为根据本发明的实施例的更具体的第二示例性系统1400 的框图。图13和14中的类似元件使用类似附图标记,且在图13中省略了图13的某 些方面以避免混淆图14的其它方面。

图14示出处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”) 1372和1382。因此,CL 1372、1382包括集成存储器控制器单元并包括I/O控制逻辑。 图14示出:不仅存储器1332、1334耦合至CL 1372、1382,I/O设备1414也耦合至 控制逻辑1372、1382。传统I/O设备1415被耦合至芯片组1390。

现在参考图15,所示为根据本发明的一实施例的SoC 1500的框图。图11中的 类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图15 中,互连单元1502耦合至:应用处理器1510,该应用处理器包括一个或多个核202A-N 的集合以及共享缓存单元1106;系统代理单元1110;总线控制器单元1116;集成存 储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、 图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直 接存储器存取(DMA)单元1532;以及用于耦合至一个或多个外部显示器的显示单元 1540。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理 器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的 组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该 可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储 元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码(诸如图13中示出的代码1330)应用于输入指令,以执行本文描 述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设 备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制 器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系 统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描 述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或 解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令 来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执 行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介 质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器 中。

这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品 的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、 光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器 件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储 器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、 电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于 存储电子指令的任何其它类型的介质。

因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令 或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、 处理器和/或系统特征。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如, 指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、 变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转 换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理 器外、或者部分在处理器上且部分在处理器外。

图16是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进 制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是 软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合 来实现。图16示出可以使用x86编译器1604来编译利用高级语言1602的程序,以 生成可以由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码 1606。具有至少一个x86指令集核的处理器1616表示任何处理器,这些处理器能通 过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英 特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标 为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代 码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86 编译器1604表示用于生成x86二进制代码1606(例如,目标代码)的编译器,该二 进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器 1616上执行。类似地,图16示出可以使用替代的指令集编译器1608来编译利用高 级语言1602的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例 如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加 利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的 替代指令集二进制代码1610。指令转换器1612被用来将x86二进制代码1606转换 成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大 可能与替代性指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造; 然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转 换器1612通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核 的处理器或其它电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。

针对图6-8中的任一图所描述的组件、特征、以及细节还可任选地用 于图1-5中的任一图中。此外,本文中针对本文所述的任一装置所描述的 组件、特征、以及细节还可任选地用于本文中所描述的在实施例中可由这 种装置和/或使用这种装置执行的任一方法中。此处所描述的处理器中的任 何一个都可以被包括在此处所公开的计算机系统或其他系统中的任何一个 中。

在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派 生词。这些术语不旨在互为同义词。相反,在各实施例中,“连接的”可以 用于指示两个或更多元件彼此直接物理和/或电接触。“耦合的”可表示两 个或更多个元件彼此直接物理和/或电接触。然而,“耦合的”也可表示两 个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此作用。在附 图中,箭头用于示出连接和耦合。

术语“和/或”可能已被使用。如本文中所使用的,术语“和/或”意指一 个或其他或两者(例如,A和/或B意指A或B或者A和B两者)。

在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然 而,在没有这些具体细节中的部分的情况下,可实践其他实施例。本发明 的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在其 它实例中,以方框图形式而非以细节地示出了公知的电路、结构、设备和 操作以避免使说明书的理解变得晦涩。在认为适宜之处,附图标记或附图 标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特 征的对应或类似的要素,除非以其他方式来指定或显而易见。在示出和描 述了多个组件的一些情况下,只要适当,它们可被一起集成到单一组件中。 在示出并描述单一组件的其他情况下,只要适当,它可以可任选地被分离 成两个或更多组件。

已描述了各种操作和方法。已经以流程图方式以相对基础的方式对一 些方法进行了描述,但这些操作可选择地被添加至这些方法和/或从这些方 法中移去。另外,尽管流程图示出根据各实施例的操作的特定顺序,但该 特定顺序是示例性的。替换实施例可以不同的顺序执行这些操作、组合某 些操作、交错某些操作等。

某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读 介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。 机器可读介质可提供或者已存储有一个或多个指令,这些指令如果被机器 执行和/或在被机器执行时用于引起该机器执行和/或导致该机器执行本文 中公开的一个或多个操作、方法或技术。

在某些实施例中,机器可读介质可包括有形的和/或无形的机器可读存 储介质。例如,有形的和/或无形的机器可读存储介质可包括软盘、光存储 介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器 (ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电 可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM(DRAM)、闪存、相变化存储器、相变化数据存 储材料、非易失性存储器、非易失性数据存储设备、非瞬时存储器、或非 瞬时数据存储设备等。非瞬态机器可读存储介质不由瞬态传播的信号组成。

合适的机器的示例包括,但不仅限于,包括一个或多个处理器的计算 设备或其他电子设备。这样的计算设备和电子设备的示例包括,但不限于, 蜂窝电话、智能电话、平板计算机、上网本、移动网络设备(MID)、媒 体播放器、膝上型计算机、笔记本电脑、台式机、智能电视、迷你桌上型 设备、机顶盒和视频游戏控制器,仅举几个例子。

例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个 实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践 中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和 辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实 施例、附图、及其描述中。然而,该公开方法不应被解释成反映本发明需 要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要 求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,所 附权利要求因此被明确纳入该说明书中,每一项权利要求独自作为本发明 单独的实施例。

示例实施例

以下示例关于进一步的实施例。这些示例中的细节可以在一个或多个 实施例的任何地方被使用。

示例1包括架构之间兼容性设备,包括从第一架构代码模块接收计划 用于第一架构库模块的第一调用过程操作的控制流程转移接收模块。第一 调用过程操作涉及第一多个输入参数。应用二进制接口(ABI)更改模块与 控制流程转移接收模块耦合。ABI更改模块将作出ABI更改,以将涉及第 一多个输入参数的第一调用过程操作转换为涉及第二多个输入参数的对应 的第二调用过程操作。第二调用过程操作将与第二架构库模块兼容。控制 流程转移输出模块与ABI更改模块耦合。控制流程转移输出模块将向第二 架构库模块提供第二调用过程操作。

示例2包括示例1的设备,其中,ABI更改模块将从堆栈接收第一多 个输入参数中的第一参数,并将对应于第一参数的第二多个输入参数的第 二参数存储在预期被第二架构库模块用于第二参数的寄存器中。

示例3包括示例1的设备,其中,控制流程转移接收模块、ABI更改 模块,以及控制流程转移输出模块是对应于第一架构库模块的第一包装器 模块的一部分。

示例4包括示例3的设备,进一步包括多个包装器模块,每一包装器 模块都对应于不同的第一架构库模块,其中,多个包装器模块中的每一个 都具有控制流程转移接收模块、ABI更改模块以及控制流程转移输出模块。

示例5包括示例4的设备,其中,第一包装器模块与第一架构库模块 具有相同名称,其中,多个包装器模块中的每一个都具有与对应的不同的 第一架构库模块相同的名称。

示例6包括示例1的设备,进一步包括确定从要被执行的第一架构代 码和第二架构代码中选择的代码的类型的处理器模式更改模块,处理器模 式更改模块更改处理器的代码类型执行模式以与要被执行的确定的类型的 代码兼容。

示例7包括示例6的设备,其中,处理器模式更改模块将基于具有全 部第一架构代码的第一段和具有全部第二架构代码的第二段之间的段之间 的控制流程转移,确定要被执行的代码的类型。

示例8包括示例1到7中的任何一个的设备,其中,控制流程转移接 收模块将从32位代码模块接收计划用于32位库模块的第一调用过程操作, 其中,ABI更改模块将第一调用过程操作转换为与64位库模块兼容的对应 的第二调用过程操作,其中,控制流程转移输出模块将向64位库模块提供 第二调用过程操作。

示例9包括示例1到7中的任何一个的设备,其中,能够被第一架构 代码模块使用的架构整数寄存器的最大位宽度不同于能够被第二架构代码 模块使用的架构整数寄存器的最大位宽度。

示例10是包括从第一架构代码模块接收计划用于第一架构库模块的 第一调用过程操作的架构之间的兼容性方法。第一调用过程操作涉及第一 多个输入参数。该方法还包括向第二架构库模块提供涉及第二多个输入参 数的对应的第二调用过程操作。

示例11包括示例10的方法,其中,接收包括从32位代码模块接收计 划用于32位库模块的第一调用过程操作,其中,提供包括向64位库模块 提供第二调用过程操作。

示例12包括示例10的方法,进一步包括从堆栈接收第一多个输入参 数中的第一参数,并将第二多个输入参数的第二参数存储在第二架构库模 块用于接收第二参数的寄存器中,第二参数对应于第一参数。

示例13包括示例10的方法,其中,接收包括接收第一调用过程操作, 包装器模块与第一架构库模块具有相同名称。

示例14包括示例13的方法,进一步包括配置包装器模块以在第一架 构库模块和第二架构库模块之前被动态链接器搜索。

示例15包括在没有第一架构库模块的电子设备中执行的示例10的方 法。

示例16是包括存储32位代码模块和64位库模块的存储器的计算机系 统。64位处理器与存储器耦合。系统还包括架构之间的兼容性模块,该架 构之间的兼容性模块从32位库模块的32位代码模块截取调用过程操作, 以及向64位库模块提供对应的调用过程操作。

示例17包括示例16的计算机系统,其中,架构之间的兼容性模块将 作出应用二进制接口(ABI)更改,以将32位库模块的调用过程操作转换 为64位库模块的对应的调用过程操作。

示例18包括示例16的计算机系统,其中,32位代码模块和64位库 模块将被存储在存储器中的不同的段中,其中,将存储32位代码模块的段 将使用平面寻址。

示例19包括示例16的计算机系统,其中,架构之间的兼容性模块包 括带有与32位库模块相同名称的包装器模块,32位库模块将从32位代码 模块截取调用过程操作。

示例20包括示例16到19中的任何一个的计算机系统,其中,计算机 系统没有32位库模块。

示例21包括示例20的计算机系统,其中,计算机系统没有任何32位 库模块。

示例22包括示例16到19中的任何一个的计算机系统,其中,计算机 系统包括智能电话。

示例23是包括存储了指令的非瞬时的机器可读的存储介质的制品,所 述指令,如果由机器执行,将导致机器执行包括下列各项的操作:从第一 架构代码模块接收计划用于第一架构库模块的第一调用过程操作,第一调 用过程操作涉及第一多个输入参数。操作还包括作出应用二进制接口(ABI) 更改,以将涉及第一多个输入参数的第一调用过程操作转换为涉及第二多 个输入参数的对应的第二调用过程操作。操作还包括向第二架构库模块提 供第二调用过程操作。

示例24包括示例23的制品,其中,指令在由机器执行时,将导致机 器执行包括下列各项的操作:从32位代码模块接收计划用于32位库模块 的第一调用过程操作,以及,向64位库模块提供第二调用过程操作。

示例25包括示例23到24中的任何一个的制品,进一步存储指令,所 述指令,在由机器执行时,将导致机器执行包括下列各项的操作:从堆栈 接收第一多个输入参数的第一参数,并将第二多个输入参数的第二参数存 储在第二架构库模块用于接收第二参数的寄存器中,第二参数对应于第一 参数。

示例26包括可操作以执行示例10-15中的任何一个的方法的设备。

示例27包括一种包括用于执行示例10-15中的任一个的方法的装置的 设备。

示例28包括一种设备,包括执行示例10-15中的一个的方法的模块、 单元、装置,或其任何组合。

示例29包括一种制品,包括可任选地存储或以别的方式提供指令的可 任选地非瞬时的机器可读取的介质,所述指令在由处理器执行时,计算机 系统,或其他机器可操作,以导致计算机系统或其他机器执行示例10-15 中的任何一个的方法。

示例30包括计算机系统或其他电子设备,包括总线或其他互连,与互 连耦合的处理器,与互连耦合的闪存,以及与互连耦合的可选天线,计算 机系统或其他电子设备可操作,以执行示例10-15中的任何一个的方法。

示例31包括可操作以执行如此处所描述的一个或多个操作或任何方 法的设备。

示例32包括如此处所描述的架构之间的兼容性模块。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号