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

文档序号:9235274阅读:172来源:国知局
允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块的制作方法
【专利说明】允许一种架构的代码模块使用另一种架构的库模块的架构 间兼容模块 【背景技术】 技术领域
[0001] 此处所描述的各实施例一般设及代码在电子设备上的执行。具体而言,此处所描 述的各实施例一般设及不同架构的代码在电子设备上的执行。
[0002] 背景信息
[0003] 直到目前,大多数智能电话、蜂窝电话、平板电脑等等都基于32位架构。它们具有 32位架构处理器和32位操作系统。为该些32位架构编写了各种32位代码。例如,为该些 设备编写了很多移动应用。此外,还为该些32位架构编写了32位库。
[0004] 最近,有带有64位架构的智能电话可用。该些64位架构基于64位架构处理器和 64位操作系统。例如,苹果公司最近提供了 iPhone 5S。iPhoneSS包括带有64位架构的 A7处理器巧片和被称为iOS 7的64位操作系统。还宣告了其他64位架构智能电话和/或 它们处于开发之中。
[0005] 至少在该些64位架构智能电话的部署的初始阶段,可能希望能够提供向后兼容 性,W便已经开发的32位代码能够在该些智能电话上运行。该将允许各种现有的32位移 动应用及其他32位代码继续被使用。
[0006]iPhone5S和iOS7提供该样的向后兼容性。它们能够执行32位代码W及64位 代码。此外,32位代码还能够使用32位库。 【附图说明】
[0007] 可通过参考W下描述W及用于示出实施例的附图最佳地理解本发明。在附图中: [000引图1是其中可W实现本发明的各实施例的计算机系统的第一实施例的框图。
[0009] 图2是其中可W实现本发明的各实施例的计算机系统的第二实施例的框图。
[0010] 图3是其中可W实现本发明的各实施例的计算机系统的第S实施例的框图。
[0011] 图4是其中可W实现本发明的各实施例的计算机系统的第四实施例的框图。
[0012] 图5是架构之间的兼容性模块的实施例的框图。
[0013] 图6是具有包装器库的架构之间的兼容性模块的实施例的框图。
[0014] 图7是使用功能相互定位来利用架构之间的兼容性模块的包装器库来截取控制 流程转移的方法的实施例的方框流程图。
[0015] 图8是可操作W使用动态加载器模块的运行时结构来确定何时更改兼容性模式 的架构之间的兼容性模块的框图。
[0016] 图9A是示出了有序流水线的实施例和寄存器重命名无序发布/执行流水线的实 施例的框图。
[0017] 图9B是示出了处理器核的实施例的框图,包括禪合到执行引擎单元的前端单元, 两者都禪合到存储器单元。
[001引图lOA是单一处理器核的实施例的框图,化及其与管巧上的互连网络的连接化及 其第2级(L2)缓存的本地子集。
[0019] 图10B是图10A的处理器核的一部分的展开图的实施例的框图。
[0020] 图11是可W具有一个W上的核、可W具有集成的存储器控制器,并可W具有集成 的图形的处理器的实施例的框图。
[0021] 图12是计算机架构的第一实施例的框图。
[0022] 图13是计算机架构的第二实施例的框图。
[0023] 图14是计算机架构的第S实施例的框图。
[0024] 图15是片上系统架构的实施例的框图。
[0025] 图16是根据本发明的各实施例的使用软件指令转换器来将源指令集中的二进制 指令转换为目标指令集中的二进制指令的框图。 【具体实施方式】
[0026] 如在背景部分所讨论的,i化one 5S和iOS 7提供向后兼容性。32位代码和64位 代码两者都能够在iPhone 5S上执行。32位代码使用一组32位库。同样,64位代码使用 一组64位库。然而,该种用于提供向后兼容性的方法的一个缺点是,iPhone 5S需要包括 该些库的32位和64位版本两者。具体而言,包括了一组32位库,其链接到32位代码,并 被32位代码使用。包括了另一组64位库,其链接到64位代码,并被64位代码使用。存储 32位库和64位库两者消耗比存储单一库所需的更多存储空间。
[0027] 此处公开了允许给定架构的代码(例如,32位代码、旧式代码等等)使用不同的架 构(例如,64位代码、较新的架构等等)的库的架构之间的兼容性模块。在下面的描述中, 阐述了很多具体细节(例如,特定架构处理器和操作系统、新的和旧式架构之间的差异、架 构之间的兼容性模块、处理器配置、操作序列等等的示例)。然而,在没有该些具体细节的情 况下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术,W避免混淆对本 描述的理解。
[002引图1是其中可W实现本发明的各实施例的计算机系统100的第一实施例的框图。 在各实施例中,计算机系统可W包括智能电话、蜂窝电话、移动电话、个人数字助理(PDA)、 便携式媒体播放器、手持式设备、平板电脑、pad计算机、膝上型计算机、台式计算机、工作 站、视频游戏控制台、机顶盒、服务器、网络设备,或其他已知的电子设备。在某些实施例中, 计算机系统可W表示具有有限的存储器资源的小手持式计算机系统,诸如,例如,智能电 话、蜂窝电话、PDA、平板电脑,或手持式设备,虽然本发明的范围不受限制。
[0029] 计算机系统包括处理器102的实施例和存储器110的实施例。处理器和存储器可 W通过常规禪合机制108 (例如,通过一个或多个总线、中枢、存储器控制器、巧片组组件等 等),禪合在一起,或W别的方式彼此进行通信。本领域中已知的各种不同的禪合机制都是 合适的。存储器可W包括一个或多个存储器设备和/或一个或多个不同类型的存储器,如 通常在该样的计算机系统中所使用的。
[0030] 在所示实施例中,处理器是64位架构处理器,但是本发明的范围不仅限于此。在 某些实施例中,处理器可W是通用处理器。替换地,处理器可W是专用处理器。合适的专用 的处理器的示例包括,但不仅限于,通信处理器、图形处理器、网络处理器、密码处理器、协 处理器、嵌入式处理器、数字信号处理器值SP) W及控制器(例如,微控制器),仅举几个例 子而已。处理器可W是各种复杂指令集计算(CISC)处理器、各种精简指令集计算化ISC) 处理器、各种超长指令字(VLIW)处理器中的任何一种,其各种混合型,或具有该样的不同 的处理器的组合(例如,在不同的核中)。
[0031] 如图所示,在某些实施例中,64位架构处理器可W具有对32位架构处理器不可用 的64位架构资源104。例如,64位架构资源可W包括在32位处理器中不存在的高级架构 资源和/或性能增强特征。例如,64位处理器可W具有额外的架构寄存器,增强应用二进制 接口(ABU、用于过程调用的改善的参数传递逻辑,等等。例如,与IA 32架构相比,Intel饭 64架构具有较大数量的寄存器、额外的浮点单指令、多数据(SIMD)功能、允许通过寄存器 而并非通过堆找访问来进行参数传递的64位ABI。该些高级架构资源和/或性能增强特征 可W帮助改善软件的性能。该些资源或特征是向64位计算的增长的趋势的理由之一。
[0032] 再次参考图1,存储器110包括各种不同类型的软件模块。在所示实施例中,软件 模块包括64位操作系统模块112。64位操作系统模块可W包括与处理器的64位ABI兼容 的系统级别的软件。64位操作系统模块一般被设计为能够使用64位处理器的某些或全部 64位架构资源104。
[0033] 存储器还包括一个或多个32位代码模块116,可任选地,W及一个或多个64位代 码模块114。在某些实施例中,该些可W包括编译的和/或二进制代码。该样的32位和64 位代码模块的示例包括,但不仅限于,应用模块。在智能电话或其他移动设备的特定情况 下,应用模块可W表示移动应用或APP。一方面,32位代码模块可W表示W前为前辈32位 架构编写的旧式或现有的代码模块,虽然本发明的范围不受限制。在另一方面,32位代码模 块可W是新编写的32位代码模块。32位代码模块可能为32位架构处理器编译。
[0034] 存储器还包括64位库模块118。在某些实施例中,如虚线所示,存储器和/或计算 机系统可W可任选地包括32位库模块120。可另选地,在其他实施例中,如32位库模块中 的"X"所示,存储器和/或计算机系统可W可任选地省略该样的32位库模块,甚至在32位 代码模块被存储在存储器中并且能够在64位处理器上运行的情况下。32位和64位库模块 的示例包括,但不仅限于,C标准库、数学库、系统库等等的那些。
[0035] 在操作过程中,32位代码和64位代码两者都可W在64位处理器上运行。例如,64 位操作系统模块、32位代码模块W及64位库模块的指令或代码可W在64位处理器上执行 或运行。通过允许旧式32位应用在较新的64位处理器上运行,该可W潜在地用于提供向 后兼容性。在某些实施例中,32位和64位代码两者都可W在同一个线程内运行。在某些实 施例中,64位处理器可W具有可选32位或64位代码执行模式106, W指出64位代码还是 32位代码(在某些实施例中,32位代码W及64位代码)当前正在由处理器执行。例如,在 一个实施例中,模式106可W表示允许64位代码但不允许32位代码在64位处理器上执行 的第一 64位模式,W及允许32位代码在64位处理器上执行的第二32位模式。一方面,32 位模式还可W允许64位代码在64位处理器上执行。在另一方面,32位模式可能不允许64 位代码在64位处理器上执行。64位处理器可W可任选地默认地在64位模式下操作,直到 使模式更改进入32位模式,虽然该不是必需的。其他处理器不必一定具有用W执行不同类 型代码的不同模式(例如,可W具有32位/64位混合模式)。
[0036] 如上文所讨论的,i化one5S还通过允许32位代码在64位架构上运行,来允许向 后兼容性。该通过具有库的32位和64位版本两者来实现。包括了第一组32位库,其链接 到32位代码(例如,32位旧式移动应用),并被它使用。包括了第二组64位库,其链接到 64位代码,并被64位代码使用。32位代码只能够使用32位库模块。然而,该种方法一个 可能的缺点是需要继续提供32位库,供32位代码使用。一则,需要另外的存储空间W存储 32位库。特别是对于智能电话、平板电脑及其他小电子设备,存储空间的量一般倾向于有 限。此外,容纳32位库所需的另外的存储空间可能倾向于增加设备的总制造成本。
[0037] 该种方法的另一可能的缺点是,32位代码只能够使用32位库,但不能使用64位 库。该可能倾向于限制性能,因为32位库一般不被设计为能够使用64位架构资源104(例 如,高级架构和/或性能增强资源)。该些资源一般不对32位库计划在其上面运行的对等 (例如,前辈)32位架构处理器可用。32位库未被设计为使用,并且不能使用全部该些64 位架构资源。因此,由于可W通过64位库实现的64位架构资源,32位库一般不能够实现性 貪良白勺f是胃。
[003引再次参考图1,计算机系统包括32位至和/或来自64位(32位/64位)兼容性 模块122的实施例。32位/64位兼容性模块是32位和64位架构的架构之间的兼容性模 块的一个示例,虽然在其他实施例中,可W使用其他架构。在某些实施例中,32位/64位兼 容性模块可W被配置为或可操作W允许32位模块116连接到并使用64位库模块118 (例 如,C标准库、数学库、glibc、系统库等等)。在某些实施例中,兼容性模块可W允许32位 代码在其地址空间(例如,与只是特殊模块的有限的集合相反,诸如WoW64. dl 1、WoW64Win. dll、Wow64Cpu. dll,或化dll. dll)使用任何任意64位库模块。32位/64位兼容性模块可 W被配置为或可操作,W作出适合于允许32位代码模块使用64位库模块的各种兼容性更 改。例如,该些更改可W包括考虑32位代码模块和64位库模块的ABI之间的差异的更改。 在某些实施例中,32位/64位兼容性模块可W包括二进制转换模块。在某些实施例中,32 位/64位兼容性模块可W被配置为或可操作W作出代码类型执行模式更改(例如,在32位 和64位代码执行模式之间改变)。在各实施例中,32位/64位兼容性模块可硬件(例 如,集成电路、晶体管或其他电路元件,等等),固件(例如,R0M、EPROM、闪存,或其他持久性 或非易失性存储器和微代码、微指令,或存储在其中的其他较低级别的指令),软件(例如, 存储在存储器中的较高级别的指令),或其组合来实现。
[0039] 有利地,兼容性模块可W帮助提供向后兼容性并允许32位代码模块在具有64位 操作系统模块的系统中的64位处理器上执行或运行。由于32位代码模块能够使用64位 库模块,并且不是使用32位库模块所必需的,因此,在某些实施例中,可W可任选地省略32 位库模块。目P,在某些实施例中,存储器和/或计算机系统可W没有32位库模块。有利地, 省略32位库模块可W帮助腾出否则存储它们所需的存储空间,和/或可W通过需要提供较 小的总的存储空间量,帮助降低制造系统的成本。特别是对于智能电话、平板电脑及其他相 对较小的电子设备,避免存储32位库模块的必要性可W提供优点。可另选地,在其他实施 例中,如果需要,可W包括32位库模块。在某些实施例中,至少一个32位代码模块能够借 助于兼容性模块,使用至少一个64位库模块,即使其他32位代码模块使用32位库模块。
[0040] 有利地,允许32位代码模块使用64位库模块还可W帮助改善性能。例如,与32位库模块相比,64位库模块可W更好地能够使用64位处理器的64位架构资源104(例如, 高级架构和/或性能增强资源)。例如,64位库模块能够使用比对32位库模块可用的更多 的寄存器,64位库模块能够通过寄存器而并非堆找来传递参数,与32位库模块等等的情况 相同。结果,如果32位代码模块能
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1