CN104951296A - 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 - Google Patents
允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 Download PDFInfo
- Publication number
- CN104951296A CN104951296A CN201510091576.8A CN201510091576A CN104951296A CN 104951296 A CN104951296 A CN 104951296A CN 201510091576 A CN201510091576 A CN 201510091576A CN 104951296 A CN104951296 A CN 104951296A
- Authority
- CN
- China
- Prior art keywords
- module
- framework
- library
- code
- modules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 136
- 238000012546 transfer Methods 0.000 claims abstract description 52
- 230000008859 change Effects 0.000 claims abstract description 49
- 230000015654 memory Effects 0.000 claims description 79
- 230000009466 transformation Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 32
- 238000003860 storage Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 23
- 210000004027 cell Anatomy 0.000 description 17
- 230000008520 organization Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 210000004940 nucleus Anatomy 0.000 description 7
- 238000011112 process operation Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- PQVHMOLNSYFXIJ-UHFFFAOYSA-N 4-[2-(2,3-dihydro-1H-inden-2-ylamino)pyrimidin-5-yl]-1-[2-oxo-2-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)ethyl]pyrazole-3-carboxylic acid Chemical compound C1C(CC2=CC=CC=C12)NC1=NC=C(C=N1)C=1C(=NN(C=1)CC(N1CC2=C(CC1)NN=N2)=O)C(=O)O PQVHMOLNSYFXIJ-UHFFFAOYSA-N 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012856 packing Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 244000045947 parasite Species 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000012010 growth Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一个方面的架构之间兼容性设备包括从第一架构代码模块接收计划用于第一架构库模块的第一调用过程操作的控制流程转移接收模块。第一调用过程操作涉及第一多个输入参数。应用二进制接口(ABI)更改模块与控制流程转移接收模块耦合。ABI更改模块作出ABI更改,以将涉及第一多个输入参数的第一调用过程操作转换为涉及第二多个输入参数的对应的第二调用过程操作。第二调用过程操作将与第二架构库模块兼容。控制流程转移输出模块与ABI更改模块耦合。控制流程转移输出模块将向第二架构库模块提供第二调用过程操作。
Description
背景技术
技术领域
此处所描述的各实施例一般涉及代码在电子设备上的执行。具体而言,此处所描述的各实施例一般涉及不同架构的代码在电子设备上的执行。
背景信息
直到目前,大多数智能电话、蜂窝电话、平板电脑等等都基于32位架构。它们具有32位架构处理器和32位操作系统。为这些32位架构编写了各种32位代码。例如,为这些设备编写了很多移动应用。此外,还为这些32位架构编写了32位库。
最近,有带有64位架构的智能电话可用。这些64位架构基于64位架构处理器和64位操作系统。例如,苹果公司最近提供了iPhone 5S。iPhone5S包括带有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位安卓环境可以包括安卓框架的64ABI兼容的版本(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包括如此处所描述的架构之间的兼容性模块。
Claims (24)
1.一种架构之间的兼容性设备,包括:
控制流程转移接收模块,用于从第一架构代码模块接收计划用于第一架构库模块的第一调用过程操作,所述第一调用过程操作涉及第一多个输入参数;
应用二进制接口(ABI)更改模块,与所述控制流程转移接收模块耦合,所述ABI更改模块作出ABI更改,以将涉及所述第一多个输入参数的所述第一调用过程操作转换为涉及第二多个输入参数的并且将与第二架构库模块兼容的对应的第二调用过程操作;以及
控制流程转移输出模块,与所述ABI更改模块耦合,所述控制流程转移输出模块向所述第二架构库模块提供所述第二调用过程操作。
2.如权利要求1所述的设备,其特征在于,所述ABI更改模块将:
从堆栈接收所述第一多个输入参数的第一参数;以及
将对应于所述第一参数的所述第二多个输入参数的第二参数存储在预期被所述第二架构库模块用于所述第二参数的寄存器中。
3.如权利要求1所述的设备,其特征在于,所述控制流程转移接收模块、所述ABI更改模块以及所述控制流程转移输出模块是对应于所述第一架构库模块的第一包装器模块的一部分。
4.如权利要求3所述的设备,进一步包括多个包装器模块,每一包装器模块都对应于不同的第一架构库模块,其中所述多个包装器模块中的每一个都具有控制流程转移接收模块、ABI更改模块以及控制流程转移输出模块。
5.如权利要求4所述的设备,其特征在于,所述第一包装器模块与所述第一架构库模块具有相同名称,其中所述多个包装器模块中的每一个都具有与对应的不同的第一架构库模块相同的名称。
6.如权利要求1所述的设备,进一步包括确定从要被执行的第一架构代码和第二架构代码中选择的代码的类型的处理器模式更改模块,所述处理器模式更改模块更改处理器的代码类型执行模式以与要被执行的确定的类型的代码兼容。
7.如权利要求6所述的设备,其特征在于,所述处理器模式更改模块将基于具有全部第一架构代码的第一段和具有全部第二架构代码的第二段之间的段之间的控制流程转移,确定要被执行的代码的类型。
8.如权利要求1所述的设备,其特征在于,所述控制流程转移接收模块将从32位代码模块接收计划用于32位库模块的所述第一调用过程操作,其中所述ABI更改模块将所述第一调用过程操作转换为与64位库模块兼容的所述对应的第二调用过程操作,其中所述控制流程转移输出模块将向所述64位库模块提供所述第二调用过程操作。
9.如权利要求1所述的设备,其特征在于,能够被所述第一架构代码模块使用的架构整数寄存器的最大位宽度不同于能够被所述第二架构代码模块使用的架构整数寄存器的最大位宽度,以及,其中所述第二架构库模块是从数学库模块和C标准库模块中选择的。
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所述的计算机系统,其特征在于,所述计算机系统没有所述32位库模块。
21.一种架构之间的兼容性设备,包括:
用于从第一架构代码模块接收计划用于第一架构库模块的第一调用过程操作的装置,所述第一调用过程操作涉及第一多个输入参数;以及
用于向第二架构库模块提供涉及第二多个输入参数的对应的第二调用过程操作的装置。
22.如权利要求21所述的设备,其特征在于,所述用于接收的装置包括用于从32位代码模块接收计划用于32位库模块的所述第一调用过程操作的装置,其中所述用于提供的装置包括用于向64位库模块提供第二调用过程操作的装置。
23.如要求21所述的装置,其特征在于,进一步包括:
用于从堆栈接收所述第一多个输入参数的第一参数的装置;以及
用于将所述第二多个输入参数的第二参数存储在所述第二架构库模块用于接收所述第二参数的寄存器中的装置,所述第二参数对应于所述第一参数。
24.一种包括存储了指令的非瞬时的机器可读取的介质的制品,所述指令,在由机器执行时,可操作以导致所述机器执行如权利要求10到15中任一权利要求所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/229,795 US10120663B2 (en) | 2014-03-28 | 2014-03-28 | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
US14/229,795 | 2014-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951296A true CN104951296A (zh) | 2015-09-30 |
CN104951296B CN104951296B (zh) | 2019-02-15 |
Family
ID=52630760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510091576.8A Expired - Fee Related CN104951296B (zh) | 2014-03-28 | 2015-02-28 | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10120663B2 (zh) |
JP (1) | JP6124463B2 (zh) |
KR (1) | KR101817397B1 (zh) |
CN (1) | CN104951296B (zh) |
DE (1) | DE102015002582A1 (zh) |
GB (1) | GB2524616B (zh) |
TW (1) | TWI567646B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423084A (zh) * | 2017-04-24 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
CN109416637A (zh) * | 2016-03-30 | 2019-03-01 | 索尼互动娱乐股份有限公司 | 为了向后兼容性而导出应用程序特定的操作参数 |
CN110442536A (zh) * | 2018-05-02 | 2019-11-12 | 美光科技公司 | 基于对象的存储器访问中的静态标识 |
CN110520842A (zh) * | 2017-03-31 | 2019-11-29 | 微软技术许可有限责任公司 | 针对传统应用兼容性的地址空间拆分 |
CN111026452A (zh) * | 2019-11-20 | 2020-04-17 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
CN111142969A (zh) * | 2019-12-27 | 2020-05-12 | 贵阳动视云科技有限公司 | 64位程序调用32位程序模块的方法、装置、介质及设备 |
CN112486570A (zh) * | 2020-11-06 | 2021-03-12 | 麒麟软件有限公司 | 一种不同类型CPU的Glibc兼容方法 |
CN113076263A (zh) * | 2021-05-06 | 2021-07-06 | 北京字节跳动网络技术有限公司 | 一种进程运行的方法、装置、计算机设备及存储介质 |
CN113760338A (zh) * | 2020-06-05 | 2021-12-07 | 北京字跳网络技术有限公司 | 切换应用程序二进制接口abi的方法、装置及电子设备 |
CN114510267A (zh) * | 2022-04-20 | 2022-05-17 | 麒麟软件有限公司 | 基于Linux系统的程序ABI接口兼容性计算方法 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5976917B2 (ja) * | 2012-03-22 | 2016-08-24 | インテル コーポレイション | ネスト構造化されたエミュレーションおよび動的リンキング環境 |
US9958932B2 (en) | 2014-11-20 | 2018-05-01 | Apple Inc. | Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture |
US9477490B2 (en) * | 2015-01-05 | 2016-10-25 | Dell Software Inc. | Milestone based dynamic multiple watchdog timeouts and early failure detection |
US9778945B2 (en) * | 2015-02-10 | 2017-10-03 | Red Hat Israel, Ltd. | Providing mode-dependent virtual machine function code |
US11403099B2 (en) * | 2015-07-27 | 2022-08-02 | Sony Interactive Entertainment LLC | Backward compatibility by restriction of hardware resources |
US9928115B2 (en) | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
US11334368B2 (en) * | 2015-09-24 | 2022-05-17 | Hewlett Packard Enterprise Development Lp | Process and thread launch features |
US10452409B2 (en) * | 2015-10-23 | 2019-10-22 | Oracle International Corporation | Universal adapter for native calling |
US9753776B2 (en) * | 2015-12-01 | 2017-09-05 | International Business Machines Corporation | Simultaneous multithreading resource sharing |
US10007498B2 (en) | 2015-12-17 | 2018-06-26 | Architecture Technology Corporation | Application randomization mechanism |
US10200401B1 (en) * | 2015-12-17 | 2019-02-05 | Architecture Technology Corporation | Evaluating results of multiple virtual machines that use application randomization mechanism |
US10412114B1 (en) | 2015-12-17 | 2019-09-10 | Architecture Technology Corporation | Application randomization mechanism |
US10412116B1 (en) | 2015-12-17 | 2019-09-10 | Architecture Technology Corporation | Mechanism for concealing application and operation system identity |
US10284592B1 (en) | 2015-12-17 | 2019-05-07 | Architecture Technology Corporation | Application randomization mechanism |
US10853118B2 (en) * | 2015-12-21 | 2020-12-01 | Intel Corporation | Apparatus and method for pattern-driven page table shadowing for graphics virtualization |
US10261921B2 (en) * | 2016-02-19 | 2019-04-16 | Rajnarine Brigmohan | Universal secure platform virtualization system and method thereof |
US10554685B1 (en) | 2017-05-25 | 2020-02-04 | Architecture Technology Corporation | Self-healing architecture for resilient computing services |
US10761855B2 (en) | 2018-05-02 | 2020-09-01 | Micron Technology, Inc. | Securing conditional speculative instruction execution |
US10977101B2 (en) | 2018-12-12 | 2021-04-13 | International Business Machines Corporation | Interoperability between programs associated with different addressing modes |
US11249760B2 (en) | 2019-04-10 | 2022-02-15 | International Business Machines Corporation | Parameter management between programs |
EP3748440B1 (en) * | 2019-06-03 | 2023-11-08 | ABB Schweiz AG | Workflow of an apparatus |
CN112083934A (zh) * | 2019-06-13 | 2020-12-15 | 青岛海信移动通信技术股份有限公司 | 一种终端和处理方法 |
US11294695B2 (en) * | 2020-05-28 | 2022-04-05 | International Business Machines Corporation | Termination of programs associated with different addressing modes |
US11403100B2 (en) * | 2020-08-31 | 2022-08-02 | Microsoft Technology Licensing, Llc | Dual architecture function pointers having consistent reference addresses |
US11231918B1 (en) | 2020-08-31 | 2022-01-25 | Microsoft Technologly Licensing, LLC | Native emulation compatible application binary interface for supporting emulation of foreign code |
EP4053722B1 (en) | 2021-03-01 | 2023-11-29 | Irdeto B.V. | Secured computer code and systems, methods, and storage media for creating the secured computer code from original computer code |
US12014198B2 (en) | 2021-03-25 | 2024-06-18 | International Business Machines Corporation | Running smaller memory-address width program code in a larger memory-address width address space |
US11947993B2 (en) | 2021-06-22 | 2024-04-02 | International Business Machines Corporation | Cooperative input/output of address modes for interoperating programs |
US11556356B1 (en) * | 2021-09-23 | 2023-01-17 | International Business Machines Corporation | Dynamic link objects across different addressing modes |
US12028224B1 (en) | 2023-02-17 | 2024-07-02 | International Business Machines Corporation | Converting an architecture document to infrastructure as code |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015889A1 (en) * | 2001-03-26 | 2004-01-22 | Todd Stephen J. | Translator-compiler for converting legacy management software |
US20060184919A1 (en) * | 2005-02-17 | 2006-08-17 | Miaobo Chen | Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine |
US20120284792A1 (en) * | 2009-10-08 | 2012-11-08 | Irdeto Canada Corporation | System and Method for Aggressive Self-Modification in Dynamic Function Call Systems |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604885A (en) | 1991-02-01 | 1997-02-18 | Texas Instruments Incorporated | Apparatus and method enabling a computer to transfer control between two program segments that call one another but operate in different modes |
US5473777A (en) * | 1993-07-19 | 1995-12-05 | Moeller; Christopher P. | Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls |
US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US6438621B1 (en) | 1994-11-14 | 2002-08-20 | Microsoft Corporation | In-memory modification of computer programs |
US5870587A (en) | 1996-03-20 | 1999-02-09 | International Business Machines Corporation | Information-handling system, method, and article of manufacture including a mechanism for providing an improved application binary interface |
US5845107A (en) | 1996-07-03 | 1998-12-01 | Intel Corporation | Signaling protocol conversion between a processor and a high-performance system bus |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
WO2000045260A1 (fr) * | 1999-01-29 | 2000-08-03 | Fujitsu Limited | Compilateur, procede de compilation et support de stockage sur lequel est stocke un programme pour la mise en oeuvre dudit procede |
US6715063B1 (en) | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
US6662361B1 (en) | 2000-01-14 | 2003-12-09 | International Business Machines Corporation | Method, system, program, and data structures for transforming an instruction in a first bit architecture to an instruction in a second bit architecture |
US6725366B1 (en) * | 2000-09-07 | 2004-04-20 | International Business Machines, Corporation | System and method for 32 bit code branching to 64 bit targets |
US7406681B1 (en) * | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
GB0026363D0 (en) * | 2000-10-27 | 2000-12-13 | Sgs Thomson Microelectronics | Bi-endian libraries |
AT411044B (de) | 2001-10-16 | 2003-09-25 | Burg Design Gmbh | Dekorelement |
US7020729B2 (en) | 2002-05-16 | 2006-03-28 | Intel Corporation | Protocol independent data transmission interface |
US7124445B2 (en) * | 2002-06-21 | 2006-10-17 | Pace Anti-Piracy, Inc. | Protecting software from unauthorized use by converting source code modules to byte codes |
US7353502B2 (en) * | 2002-07-03 | 2008-04-01 | The Mathworks, Inc. | System and method for creation of software components |
US8423976B2 (en) | 2003-03-13 | 2013-04-16 | Northrop Grumman Corporation | Extreme pipeline and optimized reordering technology |
GB0316531D0 (en) | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for performing native binding |
US7519951B2 (en) * | 2003-09-30 | 2009-04-14 | International Business Machines Corporation | Multi-attribute dynamic link library packaging |
US20050221813A1 (en) | 2004-04-05 | 2005-10-06 | Jarno Rajahalme | System and method for initiating auxiliary communication interfaces via a primary communication interface |
US7966624B2 (en) * | 2007-08-22 | 2011-06-21 | Intel Corporation | Using message passing interface (MPI) profiling interface for emulating different MPI implementations |
US8832679B2 (en) * | 2007-08-28 | 2014-09-09 | Red Hat, Inc. | Registration process for determining compatibility with 32-bit or 64-bit software |
US20090144046A1 (en) | 2007-09-28 | 2009-06-04 | Rothman Michael A | Method to encapsulate an option rom for operation in multiple firmware and platform architectures |
US7831813B2 (en) | 2007-12-17 | 2010-11-09 | Globalfoundries Inc. | Uses of known good code for implementing processor architectural modifications |
JP4352086B2 (ja) * | 2007-12-21 | 2009-10-28 | 株式会社東芝 | 情報処理装置およびオペレーティングシステム判別方法 |
US20100077378A1 (en) * | 2008-09-25 | 2010-03-25 | International Business Machines Corporation | Virtualised Application Libraries |
US9189620B2 (en) * | 2009-06-30 | 2015-11-17 | Intel Corporation | Protecting a software component using a transition point wrapper |
US8561183B2 (en) * | 2009-07-31 | 2013-10-15 | Google Inc. | Native code module security for arm instruction set architectures |
US8832676B2 (en) * | 2009-09-30 | 2014-09-09 | Zynga Inc. | Apparatuses, methods and systems for a social networking application updater |
US9075688B2 (en) * | 2010-02-09 | 2015-07-07 | Accenture Global Services Limited | Enhanced upgrade path |
KR101211673B1 (ko) | 2010-12-08 | 2012-12-12 | 한국과학기술연구원 | 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법 |
US20120222024A1 (en) * | 2011-02-24 | 2012-08-30 | Kushal Das | Mechanism for Managing Support Criteria-Based Application Binary Interface/Application Programming Interface Differences |
US9891939B2 (en) | 2011-03-03 | 2018-02-13 | Microsoft Technology Licensing, Llc | Application compatibility with library operating systems |
CN103092599A (zh) | 2011-11-05 | 2013-05-08 | 京瓷办公信息系统株式会社 | 软件开发套件 |
US20140195783A1 (en) * | 2011-12-29 | 2014-07-10 | Krishnan Karthikeyan | Dot product processors, methods, systems, and instructions |
WO2013104107A1 (en) * | 2012-01-10 | 2013-07-18 | Intel Corporation | Isa bridging with callback |
US9063759B2 (en) * | 2012-03-28 | 2015-06-23 | International Business Machines Corporation | Optimizing subroutine calls based on architecture level of called subroutine |
RU2012127581A (ru) * | 2012-07-02 | 2014-01-10 | ЭлЭсАй Корпорейшн | Генератор исходного кода для разработки и тестирования программного обеспечения для многопроцессорных сред |
CN103443763B (zh) | 2012-08-08 | 2016-10-05 | 英特尔公司 | 包含对重写虚拟函数的调用的支持的isa桥接 |
US20140282371A1 (en) * | 2013-03-14 | 2014-09-18 | Media Direct, Inc. | Systems and methods for creating or updating an application using a pre-existing application |
US20160077850A1 (en) | 2013-04-19 | 2016-03-17 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for binary compatibility |
US9424420B2 (en) * | 2013-08-02 | 2016-08-23 | Red Hat, Inc. | Restricting application binary interfaces |
-
2014
- 2014-03-28 US US14/229,795 patent/US10120663B2/en not_active Expired - Fee Related
-
2015
- 2015-01-15 JP JP2015005697A patent/JP6124463B2/ja not_active Expired - Fee Related
- 2015-01-19 GB GB1500818.8A patent/GB2524616B/en active Active
- 2015-02-13 TW TW104105063A patent/TWI567646B/zh not_active IP Right Cessation
- 2015-02-26 KR KR1020150027602A patent/KR101817397B1/ko active IP Right Grant
- 2015-02-27 DE DE102015002582.1A patent/DE102015002582A1/de active Pending
- 2015-02-28 CN CN201510091576.8A patent/CN104951296B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015889A1 (en) * | 2001-03-26 | 2004-01-22 | Todd Stephen J. | Translator-compiler for converting legacy management software |
US20060184919A1 (en) * | 2005-02-17 | 2006-08-17 | Miaobo Chen | Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine |
US20120284792A1 (en) * | 2009-10-08 | 2012-11-08 | Irdeto Canada Corporation | System and Method for Aggressive Self-Modification in Dynamic Function Call Systems |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416637B (zh) * | 2016-03-30 | 2021-12-14 | 索尼互动娱乐股份有限公司 | 导出应用程序特定的操作参数的方法、系统和介质 |
CN109416637A (zh) * | 2016-03-30 | 2019-03-01 | 索尼互动娱乐股份有限公司 | 为了向后兼容性而导出应用程序特定的操作参数 |
CN110520842A (zh) * | 2017-03-31 | 2019-11-29 | 微软技术许可有限责任公司 | 针对传统应用兼容性的地址空间拆分 |
CN110520842B (zh) * | 2017-03-31 | 2022-09-13 | 微软技术许可有限责任公司 | 针对传统应用兼容性的地址空间拆分系统及方法 |
CN107423084A (zh) * | 2017-04-24 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 程序修改方法及装置 |
CN110442536A (zh) * | 2018-05-02 | 2019-11-12 | 美光科技公司 | 基于对象的存储器访问中的静态标识 |
CN110442536B (zh) * | 2018-05-02 | 2023-09-19 | 美光科技公司 | 基于对象的存储器访问中的静态标识 |
CN111026452A (zh) * | 2019-11-20 | 2020-04-17 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
CN111026452B (zh) * | 2019-11-20 | 2023-10-20 | 北京明朝万达科技股份有限公司 | 一种远程32位进程注入64位进程的方法及系统 |
CN111142969A (zh) * | 2019-12-27 | 2020-05-12 | 贵阳动视云科技有限公司 | 64位程序调用32位程序模块的方法、装置、介质及设备 |
CN113760338A (zh) * | 2020-06-05 | 2021-12-07 | 北京字跳网络技术有限公司 | 切换应用程序二进制接口abi的方法、装置及电子设备 |
CN112486570A (zh) * | 2020-11-06 | 2021-03-12 | 麒麟软件有限公司 | 一种不同类型CPU的Glibc兼容方法 |
CN112486570B (zh) * | 2020-11-06 | 2023-06-02 | 麒麟软件有限公司 | 一种不同类型CPU的Glibc兼容方法 |
CN113076263A (zh) * | 2021-05-06 | 2021-07-06 | 北京字节跳动网络技术有限公司 | 一种进程运行的方法、装置、计算机设备及存储介质 |
CN114510267A (zh) * | 2022-04-20 | 2022-05-17 | 麒麟软件有限公司 | 基于Linux系统的程序ABI接口兼容性计算方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2524616A (en) | 2015-09-30 |
JP6124463B2 (ja) | 2017-05-10 |
GB2524616B (en) | 2018-05-09 |
CN104951296B (zh) | 2019-02-15 |
GB201500818D0 (en) | 2015-03-04 |
DE102015002582A1 (de) | 2015-10-01 |
TW201545058A (zh) | 2015-12-01 |
US10120663B2 (en) | 2018-11-06 |
TWI567646B (zh) | 2017-01-21 |
US20150277867A1 (en) | 2015-10-01 |
KR101817397B1 (ko) | 2018-01-11 |
JP2015191657A (ja) | 2015-11-02 |
KR20150112778A (ko) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951296A (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
CN106716434B (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
ES2903001T3 (es) | Aparatos y métodos de hardware para detección de corrupción de memoria | |
CN104951697B (zh) | 来自过程指令的返回-目标限制性返回、处理器、方法及系统 | |
RU2662394C2 (ru) | Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения | |
CN104954356A (zh) | 保护共享的互连以用于虚拟机 | |
CN104951274A (zh) | 用于控制流安全性的二进制转换机制的指令和逻辑 | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104603745A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN105247477A (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
TW201730755A (zh) | 用於以傳巷為基礎之跨步分散運算的指令與邏輯 | |
CN104077107A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN104205088A (zh) | 用于实现页级自动二进制转换的硬件剖析机制 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 | |
CN104603746A (zh) | 由读和写掩码控制的向量移动指令 | |
CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
CN105453030A (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN104969199A (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
TW201732550A (zh) | 用於載入索引和散佈運算之指令和邏輯 | |
CN104813278A (zh) | 对二进制转换的自修改代码以及交叉修改代码的处理 | |
CN104969178A (zh) | 用于实现便笺式存储器的装置和方法 | |
CN105264489A (zh) | 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 | |
CN109791486A (zh) | 用于具有紧凑指令编码的指令的处理器、方法、系统和指令转换模块 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190215 |
|
CF01 | Termination of patent right due to non-payment of annual fee |