CN108369508A - 使用处理器指令前缀的二进制转换支持 - Google Patents
使用处理器指令前缀的二进制转换支持 Download PDFInfo
- Publication number
- CN108369508A CN108369508A CN201680072070.5A CN201680072070A CN108369508A CN 108369508 A CN108369508 A CN 108369508A CN 201680072070 A CN201680072070 A CN 201680072070A CN 108369508 A CN108369508 A CN 108369508A
- Authority
- CN
- China
- Prior art keywords
- register
- instruction
- processor
- binary translator
- executed
- 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.)
- Pending
Links
- 238000006243 chemical reaction Methods 0.000 title abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 112
- 230000015654 memory Effects 0.000 claims description 100
- 238000000034 method Methods 0.000 claims description 80
- 238000003860 storage Methods 0.000 claims description 67
- 230000001052 transient effect Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 8
- 230000006399 behavior Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 abstract description 23
- 230000008569 process Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 20
- 230000008707 rearrangement Effects 0.000 description 16
- 238000013461 design Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000007667 floating Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000000712 assembly Effects 0.000 description 6
- 238000000429 assembly Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000001066 destructive effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- JAWMENYCRQKKJY-UHFFFAOYSA-N [3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-ylmethyl)-1-oxa-2,8-diazaspiro[4.5]dec-2-en-8-yl]-[2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidin-5-yl]methanone Chemical compound N1N=NC=2CN(CCC=21)CC1=NOC2(C1)CCN(CC2)C(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F JAWMENYCRQKKJY-UHFFFAOYSA-N 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- MKYBYDHXWVHEJW-UHFFFAOYSA-N N-[1-oxo-1-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)propan-2-yl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(C(C)NC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 MKYBYDHXWVHEJW-UHFFFAOYSA-N 0.000 description 1
- NIPNSKYNPDTRPC-UHFFFAOYSA-N N-[2-oxo-2-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)ethyl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(CNC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 NIPNSKYNPDTRPC-UHFFFAOYSA-N 0.000 description 1
- AFCARXCZXQIEQB-UHFFFAOYSA-N N-[3-oxo-3-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)propyl]-2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carboxamide Chemical compound O=C(CCNC(=O)C=1C=NC(=NC=1)NCC1=CC(=CC=C1)OC(F)(F)F)N1CC2=C(CC1)NN=N2 AFCARXCZXQIEQB-UHFFFAOYSA-N 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 235000012377 Salvia columbariae var. columbariae Nutrition 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 240000001735 chia Species 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 210000003205 muscle Anatomy 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
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
Abstract
提供实现用于使用处理器指令前缀的二进制转换支持的技术的处理***。在一个实施例中,处理***包括:寄存器区块,具有用于存储在执行指令中使用的数据的多个寄存器;以及处理器核,可操作地耦合至寄存器区块。接收会由处理器核执行的指令。指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联。在指令内标识包括第一部分和第二部分的操作码前缀。操作码前缀的第一部分引用会由处理器核执行的二进制转换器操作。操作码前缀的第二部分标识会在二进制转换器操作期间使用的多个寄存器中的扩展寄存器。扩展寄存器保留多个寄存器的源寄存器值。
Description
技术领域
本公开的实施例一般涉及微处理器,并且更具体地但非限制地涉及使用处理器指令前缀的二进制转换支持。
背景技术
二进制转换是将为一个指令集架构(诸如传统架构)编译的可执行的指令转换为新的指令集架构或相同传统架构的目标代码的过程。支持二进制转换的一些***在处理器核中引入附加的硬件结构以支持代码优化。这些结构以及处理器核的其他新架构或硬件特征不得不暴露给应用级(例如,外部环境)或暴露给由供应商的CPU控制的隐藏的(内含的)环境以便在运行时由优化的代码管理。
附图说明
通过下文给出的具体实施方式并通过本公开各种实施例的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实施例,而是这些附图仅用于说明和理解。
图1示出根据一个实施例的用于使用处理器指令前缀支持二进制转换的处理设备的框图。
图2示出根据一个实施例的包括用于使用处理器指令前缀支持二进制转换的存储器的***。
图3示出根据一个实施例的用于使用处理器指令前缀的二进制转换支持的方法的流程图。
图4示出根据一个实施例的用于使用处理器指令前缀扩展通用寄存器的方法的流程图。
图5A是示出根据一个实施例的处理器的微架构的框图。
图5B是示出根据一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图6是示出根据一种实现方式的计算机***的框图。
图7是示出***的框图,在该***中可以使用本公开的实施例。
图8是示出***的框图,在该***中可以使用本公开的实施例。
图9是示出***的框图,在该***中可以使用本公开的实施例。
图10是示出芯片上***(SoC)的框图,在该芯片上***中可以使用本公开的实施例。
图11是示出SoC设计的框图,在该SoC设计中可以使用本公开的实施例。
图12示出了示出计算机***的框图,在该计算机***中可以使用本公开的实施例。
具体实施方式
本文公开了用于使用处理器指令前缀的二进制转换支持的技术。二进制转换允许为第一架构(例如,传统架构)编译的二进制代码的执行在第二架构(例如,下一代架构)或相同的第一架构上运行。通常使用特定的指令集将计算机程序编译为二进制代码以用于特定的处理器架构。在许多情形下,处理器可以使用特定指令来访问以某些指令集架构(ISA)(诸如x86架构)实现的硬件(例如,通用寄存器(GPR))。在某些情形下,这在引入可能包括新的内部硬件结构(诸如扩展寄存器集合)的下一代处理器时产生问题。例如,实现二进制转换以帮助支持以传统处理器架构编译的计算机程序利用下一代处理器架构中的硬件的***可能需要大量的工程设计资源以及金钱资源。
存在利用在新的处理器中实现或与新的处理器相关联的新的硬件特征的若干方法。在一个方法中,控制寄存器(CREG)接口可以用于当处理器正在执行使用传统架构编译的计算机程序时改变处理器的一般行为。然而,利用该方法,处理器可能不按照原始设计来操作。在另一方法中,处理器可以包括与传统(x86)指令集共存的替代指令集。在该方法中,尽管替代指令集能够访问所有必要的硬件,但是该方法可能是昂贵的并且涉及大量的工程设计努力,因为其要求对处理器的某些关键部分的复制,诸如处理器核的前端逻辑。
本公开的实施例提供用于访问新的处理器功能以支持一组输入指令序列到输出指令序列的二进制转换的处理器指令前缀。在一个实施例中,在处理器处接收的指令包括操作码前缀。操作码前缀包括可以用于将新的硬件功能暴露给二进制转换应用的多个位。该新的硬件功能可以包括但不限于:访问处理器资源的扩展集合,诸如GPR的扩展集合;非破坏性操作(例如其中在某个类型的优化操作中使用的源寄存器会被保留);重排序硬件,用于跟踪指令序列的乱序执行,指令序列可能已经被重新排序,使得它们在运行时可以被更高效地执行;以及预测硬件,用于控制由二进制转换应用使用的优化的代码的一些指令的有条件执行。在替代实施例中,指令前缀可以用于暴露用于支持二进制转换的其他新功能以及用于传统二进制代码的其他类型的优化。
图1示出用于使用处理器指令前缀支持二进制转换的处理设备的框图。处理设备100一般可以称为“处理器”或“CPU”。此处的“处理器”或“CPU”将指能够执行对算术、逻辑或I/O操作进行编码的指令的设备。在一个说明性示例中,处理器可以包括算术逻辑单元(ALU)、控制单元以及多个寄存器。在另一方面中,处理器可以包括一个或多个处理核,因此,处理器可以是通常能够处理单个指令流水线的单核处理器,或可以是可以同时处理多个指令流水线的多核处理器。在另一方面中,处理器可以实现为单个集成电路、两个或更多个集成电路,或可以是多芯片模块(例如,其中,各个微处理器管芯被包括在单个集成电路封装中,因此,这些微处理器管芯共享单个插槽)的组件。
如图1所示,处理设备100可以包括各种组件。在一个实施例中,处理设备100可以包括一个或多个处理器核110和存储器控制器单元120以及其他组件,如所示地相互耦合。处理设备100还可以包括通信组件(未示出),其可以用于处理设备100的各种组件之间的点对点通信。处理设备100可用在包括但不限于台式计算机、平板计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、智能电话、因特网设备或任何其他类型的计算设备的计算***(未示出)中。在另一实施例中,处理设备100可用在芯片上***(SoC)***中。在一个实施例中,SoC可以包括处理设备100和存储器。一个这样的***的存储器是DRAM存储器。DRAM存储器可以位于与处理器和其他***组件相同的芯片上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于芯片上。
处理器核110可以执行用于处理设备100的指令。指令可以包括但不限于:用于取出指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。计算***可以代表基于可从美国加利福尼亚州圣克拉拉市的公司获得的族处理器和/或微处理器的处理***,不过也可使用其他***(包括具有其他微处理器的计算设备、工程工作站、机顶盒等)。在一个实施例中,样本计算***可以执行操作***、嵌入式软件和/或图形用户界面的版本。因此,本公开的各实施例不限于硬件电路和软件的任何特定组合。
在说明性示例中,处理核110可以具有包括处理器逻辑和电路的微架构。具有不同微架构的多个处理器核可共享公共指令集的至少一部分。例如,类似寄存器架构在不同的微架构中可使用各种技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)、以及引退寄存器堆)的一个或多个动态分配物理寄存器。
存储器控制器120可以执行使得处理设备100能访问包括易失性存储器和/或非易失性存储器的存储器(未示出)并与之进行通信的功能。在一些实施例中,存储器控制器120可以位于与处理设备100相关联的处理器管芯上,而存储器位于处理器管芯外。在一些实施例中,处理设备100包括用于高速缓存指令和/或数据的高速缓存单元130。高速缓存单元130包括但不限于一级(L1)132、二级(L2)134和末级高速缓存(LLC)136,或处理设备100中的高速缓存存储器的任何其他配置。在一些实施例中,L1高速缓存132和L2高速缓存134可以在其与LLC 136之间传输数据。在一个实施例中,存储器控制器120可以连接至LLC 136以在高速缓存单元130与存储器之间传输数据。如所示,高速缓存单元130可以集成在处理核110中。高速缓存单元130可以存储被处理设备100的一个或多个组件利用的数据(例如,包括指令)。
在一些实施例中,处理设备100可以包括二进制转换器140。在一些实施例中,二进制转换器140可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设备上运行的指令)或其组合。在一个实施例中,二进制转换器140将输入指令143(例如,传统指令)转换或变换为本机代码输出指令145。这可以包括但不限于由处理设备100对输入指令143的执行进行“重新排序”和“优化”。将指令序列重新排序通常涉及改变存储器操作的顺序,例如,用于加载、执行和/或存储指令。而优化输入指令143可以包括基于特定条件被满足而有条件地执行某些指令。
在操作中,二进制转换器140从高速缓存单元130检取输入指令143,并且然后将这些指令转换为在新的处理器架构中使用的输出指令145。在一些实施例中,二进制转换器140将指令中的每一个转换/解码为对应的指令序列,指令序列指导处理设备100执行某些操作。如上所述,本公开的实施例提供用于访问处理设备100的附加硬件资源的技术以支持指令的二进制转换。在一些实施例中,这些附加硬件资源可以包括寄存器区块150,寄存器区块150包括多个传统寄存器152和扩展寄存器154。
处理核110的扩展寄存器逻辑505可以检测输出指令145是否包括前缀部分147。在一个实施例中,x86兼容的操作码可以可选地包括前缀147。前缀147用于指定与处理核110相关联的一个或多个寄存器。例如,可以采用前缀147来指定寄存器区块150的扩展寄存器154中的一个或多个以用于访问由输出指令145规定的新的处理器功能。
在一些实施例中,每个指令可以指示一个或多个源操作数以供处理设备100在指定的指令的执行期间使用。在一个实施例中,处理设备100可以例如从二进制转换器140接收指令,其调用某个操作。在一个实施例中,二进制转换器140接收源输入指令143并且通过***前缀147来生成输出指令145,前缀147稍后由处理设备100的执行逻辑解释。在一些实施例中,根据本公开的指令145中的每一个的前缀147可以用于标识x86指令集架构中的扩展寄存器。目前,x86指令集架构提供在根据某些编码格式的现有的x86指令中指定的默认的八个通用寄存器(例如,传统寄存器152)。在x86实施例中,寄存器R0-R7包括八个现有的传统寄存器152,并且扩展寄存器154可以包括确定数量的附加寄存器R8-Rn(例如,64个寄存器)。扩展寄存器逻辑160可以根据前缀147控制对这些附加寄存器的访问。各种类型的结构可以用作寄存器区块150的寄存器,只要它们能够如本文所描述的存储并提供数据。
如上所述,寄存器区块150包括现有的架构寄存器(例如,传统寄存器152)和附加寄存器的扩展部分(例如,扩展寄存器154)。在一些实施例中,寄存器区块150的寄存器可以暴露给处理设备100的二进制转换器140。例如,二进制转换器140使用的指令前缀用于指定存储在寄存器中的操作数以帮助将指令从传统平台转换至本机平台。
图2示出根据一个实施例的包括用于使用处理器指令前缀支持二进制转换的存储器201的***200。在该示例中,存储器201包括指令210(诸如输出指令145中的一个),诸如与处理设备100相关联的指令145中的一个。指令210指导处理设备100执行由操作码240规定的特定操作,诸如将两个操作数加在一起,或者将数据移动至处理核110内的寄存器或从寄存器移出。在一些实施例中,指令210可以包括操作码前缀217以及指令210中的其他信息240,操作码前缀217包括代码字段220和标识符字段230,其他信息240可以包括例如关于对指令的操作(诸如将会如何执行操作)的附加信息、地址信息等。
在一个实施例中,操作码前缀217的代码字段220是关于应当如何解释前缀217的剩余部分的指示符。例如,代码字段220可以包括用于指示会由处理设备100执行的使用一个或多个寄存器的操作的类型的一个或多个位。在该方面中,操作码前缀217的标识符字段230可以包括标识在由代码字段220规定的操作中使用的寄存器(例如,扩展寄存器154)的多个位。在一些实施例中,处理设备100的扩展寄存器逻辑160在由指令210的操作码前缀217指示的操作的执行期间访问扩展寄存器。
指令210的操作码前缀217基于由指令210规定的操作来控制对处理设备100的新的硬件特征(例如,扩展寄存器154)的访问。在一些实施例中,当例如从二进制转换器140接收指令210时,处理设备100配置为提取和检查操作码前缀217的位以用于寻址处理设备100的扩展寄存器154。例如,在前缀217的标识符字段230的某些位的组合中设置的值可以用于标识与处理设备100相关联的一个或多个扩展寄存器154。在一些实施例中,处理设备100的扩展寄存器逻辑160考虑处理设备100的能力而检查操作码前缀217以确定操作码前缀217对于与处理设备100一起使用是否有效。例如,扩展寄存器逻辑160可以将编码在指令210中的处理器类型标识符与同处理设备100相关联的处理器标识符进行比较。如果基于比较确定操作码前缀217不是有效的,则可以生成警告或者可以简单地忽略无效的前缀。如果标识符匹配,则扩展寄存器逻辑160可以确定处理设备100是包括由操作码前缀217的标识符字段230寻址的扩展寄存器154的类型的新处理器。
在一些实施例中,标识符字段230可以包括某个数量的位,诸如八位,以用于寻址处理设备100中的附加寄存器。在一个实施例中,标识符字段230可以标识源地址扩展字段(S1)232和目的地地址扩展字段(D1)234。S1字段234包括标识符字段230的某些位,并且由处理设备100的扩展寄存器逻辑160采用以标识当二进制转换器140决定保留源寄存器值和/或出于其他原因需要访问非默认GPR区块时可以使用的源扩展寄存器250。D1字段234也包括标识符字段230的某些位,并且由处理设备100的扩展寄存器逻辑160采用以标识寄存器区块150的目的地扩展寄存器260。
在一个说明性实施例中,二进制转换器140可以决定将某个指令转换为非破坏性操作,以将值保留在源寄存器中,这些值然后将由后续指令使用。例如,原始代码可以重复地将值从存储器加载到寄存器中、进行计算、并且然后重新加载同一个值以进行进一步的计算。对该值的重新加载是冗余的,并且具有非破坏性操作会使计算完成而不必重复地从存储器重新加载该值。
为了在操作期间在源寄存器中保留信息而免于被改变,前缀217的标识符字段230可以如上所述的标识源扩展寄存器250和目的地寄存器260。在该示例中,源扩展寄存器250和目的地寄存器260表示寄存器区块150中的不同寄存器。指令210可以指导处理设备100将指定的值加到源扩展寄存器250的内容。在该示例中,处理设备100可以使用来自源扩展寄存器250的内容执行指定的操作(例如,算术操作)并且将结果存储在目的地寄存器地址260中。因此,源扩展寄存器250的内容被保留。
在另一说明性实施例中,指令210的前缀217的前缀代码220可以规定用于确定指令210会被执行的条件的有条件操作。例如,有条件操作可以包括使用扩展寄存器来指示与由二进制转换器140转换的指令相关联的两个不同操作之间的分支。在一些实施例中,处理设备100可以基于前缀217有条件地执行与指令210相关联的操作。在一个实施例中,前缀217的代码字段220的位的某个组合可以表示不同条件。在一些实施例中,处理设备100在映射表275中执行查找操作,映射表275将某些前缀映射到某些条件。映射表275可以用硬件、固件、软件、或其组合来实现。
基于条件与映射表275中的条目匹配,处理设备100配置为有条件地执行与指令210相关联的一个或多个操作。例如,由操作引用的存储器地址可以存储在由前缀230的某些位236标识的扩展寄存器270中。在一个示例中,扩展寄存器逻辑160可以对存储在不同扩展寄存器270中的两个值进行比较。然后,基于由前缀代码220指定的条件,处理设备100可以跳过/绕过或执行与指令210相关联的特定操作。
在又一说明性实施例中,前缀代码220可以规定用于跟踪对与指令序列相关联的存储器加载和存储器存储的重新排序的扩展操作。与二进制转换器140相关联的优化过程可以在存储在存储器中和处理设备100的后续访问之前对将原始指令序列执行为重排序指令序列进行优化。在一些实施例中,由重排序指令中的每一个访问的存储器地址可以存储在由前缀217的标识符字段230规定的一个或多个扩展寄存器280中。在一些实施例中,存储器地址被推入用于对加载和存储执行检查的“别名”硬件285(例如,表)。在运行时,处理设备100可以通过将扩展寄存器280中的值与硬件285中的地址进行比较以确定指令是否已经被正确地重新排序(诸如对指令的加载和存储何时会访问相同存储器位置(称为“存储器别名”))来执行检查。响应于确定指令210已经基于前缀217被重新排序,处理设备100针对别名硬件285执行检查。
为了验证对指令210的重新排序,处理设备100可以使用前缀217的标识符230标识一个或多个扩展寄存器。在一些实施例中,由指令访问的存储器地址可以存储在寄存器中的至少一个中、在该指令与指令序列的原始执行顺序中的位置对应的位置中。处理设备100然后可以将存储在寄存器中的存储器地址与由指令210访问的存储器地址进行比较。基于该比较,处理设备100可以确定指令210不应当被重新排序或已经被正确地重新排序。例如,处理设备100可以确定两个存储器地址使用相同存储器位置,这指示由于存储器别名,重新排序是无效的。在某个实施例中,如果重新排序是无效的,则可以对软件进程生成错误以用于解析,例如,通过回滚与指令210相关联的操作。例如,当存储器别名发生并且操作已经被重新排序时,这将引发要求对指令的回滚的重新排序错误。否则,处理设备100可以如前缀217所规定的继续处理经重新排序的指令。
此外,指令210的前缀217可以用于控制如前缀的代码220和标识符230所规定的与处理设备100相关联的其他类型的新的硬件特征。
图3示出根据一个实施例的用于使用处理器指令前缀的二进制转换支持的方法的流程图。方法300可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,由扩展寄存器逻辑160指导的图1中的处理设备100可以执行方法300。尽管以特定顺序或次序示出,但是这些过程的次序可被修改,除非另行指定。因此,所示实现方式应被理解成仅作为示例,并且所示过程可按不同次序来执行,且一些过程可被并行地执行。此外,在各实施例中可以省略一个或多个过程。因此,在每一实现方式中不要求所有过程。其它过程流程是可能的。
方法300在框310处开始,其中接收与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联的指令。在框320中,在指令内标识包括第一部分和第二部分的前缀。在框330中,考虑前缀的第一部分而确定会由处理器执行的二进制转换器操作。在框340中标识在二进制转换器操作期间会被使用的多个寄存器中的扩展寄存器。
图4示出根据一个实施例的用于使用处理器指令前缀来扩展通用寄存器的方法的流程图。方法400可由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如,在处理设备上运行的指令)、固件或其组合的处理逻辑来执行。在一个实施例中,由扩展寄存器逻辑160指导的图1中的处理设备100可以执行方法400。尽管以特定顺序或次序示出,但是这些过程的次序可被修改,除非另行指出。因此,所示实现方式应被理解成仅作为示例,并且所示过程可按不同次序来执行,且一些过程可被并行地执行。此外,在各实施例中可以省略一个或多个过程。因此,在每一实现方式中不要求所有过程。其它过程流程是可能的。
方法400在框410处开始,其中标识与二进制转换器相关联的指令的前缀。框420取决于前缀是否因为可以由与二进制转换器相关联的处理器执行而有效而分叉。如果确定前缀是无效的,则方法400可以前进到框430,其中可以忽略前缀或者生成指示前缀对访问扩展寄存器是无效的警告。否则,方法400可以前进到框440。在框440中,可以由处理器通过使用由前缀标识的用于支持二进制转换器的一个或多个扩展寄存器和/或附加硬件来执行与指令相关联的操作。
图5A是示出根据本公开的一个实施例的用于实现用于使用处理器指令前缀的二进制转换支持的技术的处理器500的微架构的框图。具体地,处理器500描绘根据本公开的至少一个实施例的要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑。
处理器500包括前端单元530,该前端单元530耦合到执行引擎单元550,前端单元530和执行引擎单元550两者都耦合到存储器单元570。处理器500可包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为另一个选项,处理器500可包括专用核,诸如例如,网络或通信核、压缩引擎、图形核,等等。在一个实施例中,处理器500可以是多核处理器或者可以是多处理器***的一部分。
前端单元530包括耦合到指令高速缓存单元534的分支预测单元532,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)536,该指令转换后备缓冲器耦合到指令取出单元538,指令取出单元耦合到解码单元540。解码单元540(也称为解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码器540可使用各种不同的机制来实现。合适的机制的示例包括但不限于:查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元534进一步耦合至存储器单元570。解码单元540耦合至执行引擎单元550中的重命名/分配器单元552。
执行引擎单元550包括重命名/分配器单元552,该重命名/分配器单元552耦合到引退单元554和一个或多个调度器单元的集合556。调度器单元556表示任何数目的不同调度器,包括预留站(RS)、中央指令窗等。调度器单元556耦合至物理寄存器堆单元558。物理寄存器堆单元558中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如:标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,等等)、状态(诸如,指令指针是将要执行的下一个指令的地址)等等。物理寄存器堆单元558与引退单元554重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器堆;使用未来文件、历史缓冲器和引退寄存器堆;使用寄存器映射和寄存器池等等)。执行引擎单元550可以包括例如管理功能单元的功率功能的功率管理单元(PMU)590。
通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元554和物理寄存器堆单元558耦合至执行集群560。执行集群560包括一个或多个执行单元的集合562以及一个或多个存储器访问单元的集合564。执行单元562可执行多种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。
尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。调度器单元556、物理寄存器堆单元558和执行集群560示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元564的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元564的集合耦合到存储器单元570,该存储器单元570可包括数据预取器580、数据TLB单元572、数据高速缓存单元(DCU)574、第二级(L2)高速缓存单元576,仅举数例。在一些实施例中,DCU574也称为第一级数据高速缓存(L1高速缓存)。DCU 574可处置多个未决的高速缓存未命中,并继续服务传入的存储和加载。它也支持维护高速缓存一致性。数据TLB单元572是用于通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元564可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个均耦合至存储器单元570中的数据TLB单元572。L2高速缓存单元576可耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
在一个实施例中,数据预取器580通过自动地预测程序将消耗哪些数据来推测性地将数据加载/预取到DCU 574。预取可以指示在存储在存储器层级结构(例如,较低等级的高速缓存或存储器)的一个存储器位置的数据被处理器实际要求之前,将数据传送至更靠近(例如,产生更少访问等待时间)处理器的较高等级的存储器位置。更具体地,预取可以指在处理器发布对正在被返回的特定数据的需求之前数据从较低级别高速缓存/存储器之一至数据高速缓存和/或预取缓冲器的早期检取。
在一个实现方式中,处理器500可以与参考图1描述的处理设备100相同。具体而言,数据TLB单元572可以与TLB 155相同并参考图1描述,以在处理设备中实现参考本公开的实现方式描述的用于使用处理器指令前缀的二进制转换支持的技术。
处理器500可以支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元以及共享的L2高速缓存单元,但替代的实施例也可具有用于指令和数据的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个级别的内部高速缓存。在一些实施例中,该***可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5B是示出根据本公开的一些实施例的由图5A的处理器500实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图5B中的实线框示出了有序流水线,而虚线框示出了寄存器重命名、乱序发布/执行流水线。在图5B中,处理器流水线501包括取出级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也被称为分派或发布)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处置级522和提交级524。在一些实施例中,各个级502-524的排序可以与所示的不同,并且不限于图5B中所示的特定排序。
图6示出根据本公开的一个实施例的包括用于实现用于使用处理器指令前缀的二进制转换支持的技术的逻辑电路的处理器600的微架构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端601是处理器600的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。
前端601可包括若干单元。在一个实施例中,指令预取器626从存储器取出指令,并将指令馈送至指令解码器628,指令解码器628随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存630接受经解码的微操作,并将它们组装为微操作队列634中的程序有序序列或踪迹,以用于执行。当追踪高速缓存630遇到复杂指令时,微代码ROM 632提供完成操作所需的uop。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器628访问微代码ROM 632以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器628处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代码ROM 632中。追踪高速缓存630参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 632读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 632完成对于指令的微操作序列化之后,机器的前端601恢复从追踪高速缓存630提取微操作。
乱序执行引擎603是将指令准备好用于执行的地方。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器602、慢速/通用浮点调度器604、简单浮点调度器606)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器602、604、606基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器602可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器堆608和610位于调度器602、604和606以及执行块611中的执行单元612、614、616、618、620、622和624之间。存在分别用于整数和浮点操作的分开的寄存器堆608、610。一个实施例的每个寄存器堆608、610也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆608和浮点寄存器堆610也能够彼此传递数据。对于一个实施例,整数寄存器堆608被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆610具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块611包括执行单元612、614、616、618、620、622、624,在执行单元612、614、616、618、620、622、624中实际执行指令。该区块包括寄存器堆608、610,寄存器堆608、610存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器600包括有多个执行单元:地址生成单元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、慢速ALU 620、浮点ALU622、浮点移动单元624。对于一个实施例,浮点执行块622、624执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 622包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本公开的诸个实施例,涉及浮点值的指令可使用浮点硬件来处置。
在一个实施例中,ALU操作进入高速ALU执行单元616、618。一个实施例的快速ALU616、618可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 620,因为慢速ALU 620包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 612、614来执行。对于一个实施例,整数ALU 616、618、620被描述为对64位数据操作数执行整数操作。在替代实施例中,ALU 616、618、620可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元622、624可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元622、624可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器602、604、606就分派依赖性操作。因为在处理器600中微操作被推测地调度和执行,所以处理器600也包括处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也设计成用于捕捉用于文本串比较操作的指令序列。
根据本公开的各实施例,处理器600还包括用于实现用于存储器消歧的存储地址预测的逻辑。在一个实施例中,处理器600的执行块611可以包括用于实现用于使用处理器指令前缀的二进制转换支持的技术的存储地址预测器(未示出)。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于表示特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。
对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为‘mm’寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步地,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
实施例可在许多不同的***类型中实现。现在参考图7,所示的是示出了***700的框图,在***700中可以使用本公开的实施例。如图7所示,多处理器***700是点对点互连***,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。虽然仅以两个处理器770和780示出,但是应当理解,本公开的实施例的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。在一个实施例中,多处理器***700可以实现本文中描述的用于使用处理器指令前缀的二进制转换支持的技术。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组790可以经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是***组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7中所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,该总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,***可以实现多分支总线或其他此类架构。
现在参考图8,所示的是***800的框图,在***800中本公开的一个实施例可以操作。***800可以包括耦合至图形存储器控制器中枢(GMCH)820的一个或多个处理器810、815。附加的处理器815的任选性在图8中通过虚线来表示。在一个实施例中,处理器810、815实现根据本公开的实施例的用于使用处理器指令前缀的二进制转换支持的技术。
每个处理器810、815可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器810、815中。图8示出了GMCH 820可以耦合至存储器840,该存储器840可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 820可以是芯片组或芯片组的部分。GMCH 820可以与处理器810、815进行通信,并控制处理器810、815与存储器840之间的交互。GMCH 820还可担当处理器810、815和***800的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 820经由诸如前端总线(FSB)895之类的多点总线与处理器810、815进行通信。
此外,GMCH 820耦合至显示器845(诸如平板或触摸屏显示器)。GMCH 820可包括集成图形加速器。GMCH 820进一步耦合至输入/输出(I/O)控制器中枢(ICH)850,该输入/输出(I/O)控制器中枢(ICH)850可用于将各种***设备耦合至***800。在图8的实施例中作为示例示出了外部图形设备860以及另一***设备870,外部图形设备860可以是耦合至ICH850的分立图形设备。
替代地,附加的或不同的处理器也可存在于***800中。例如,附加的处理器815可以包括与处理器810相同的附加的处理器、与处理器810异构的或不对称的附加的处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在包括架构、微架构、热、功耗特征等一系列品质度量的方面,处理器810、815之间存在各种差异。这些差异可以有效显示为处理器810和815之间的不对称性和异构性。对于至少一个实施例,各种处理器810和815可驻留在同一管芯封装中。
现在参考图9,所示的是***900的框图,在***900中本公开的实施例可以操作。图9示出了处理器970和980。在一个实施例中,处理器970、980可以实现上文描述的用于使用处理器指令前缀的二进制转换支持的技术。处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和982,并且分别经由点对点(P-P)接口978和988之间的点对点互连950彼此相互通信。处理器970、980各自通过相应P-P接口976到994以及986到998经由点对点互连952和954与芯片组990通信,如图所示。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元。CL 972、982可以包括I/O控制逻辑。如图所示,存储器932、934耦合至CL 972、982,并且I/O设备914也耦合至CL 972、982。传统I/O设备915经由接口996耦合至芯片组990。
实施例可在许多不同的***类型中实现。图10是根据本公开的实施例的SoC 1000的框图。虚线框是更先进的SoC的可选特征。在图10中,互连单元1012耦合至:应用处理器1020,包括一组一个或多个核1002A-N以及共享高速缓存单元1006;***代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个媒体处理器1018,可包括集成图形逻辑1008、用于提供静态和/或视频照相功能的图像处理器1024、提供硬件音频加速的音频处理器1026、提供视频编码/解码加速的视频处理器1028、静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,用于耦合至一个或多个外部显示器。在一个实施例中,存储器模块可以被包括在集成存储器控制器单元1014中。在另一个实施例中,存储器模块可以被包括在可以被用来访问和/或控制存储器的SoC1000的一个或多个其他组件中。应用处理器1020可以包括用于实现静默存储器指令和未命中率跟踪的PMU以优化如本文的实施例所述的对线程的切换策略。
存储器层级结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合1006、以及耦合到集成存储器控制器单元的集合1014的外部存储器(未示出)。共享高速缓存单元的集合1006可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。
在一些实施例中,一个或多个核1002A-N能够实现多线程化。***代理1010包括协调并操作核1002A-N的那些组件。***代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1002A-N以及集成图形逻辑1008的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构和/或指令集方面可以是同构或异构的。例如,核1002A-N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核1002A-N中的两个或更多能够执行相同的指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
应用处理器1020可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、凌动(AtomTM)或QuarkTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔TM公司获得。或者,应用处理器1020可以来自另一个公司,诸如ARM控股TM公司、MIPSTM等。应用处理器1020可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。应用处理器1020可以被实现在一个或多个芯片上。应用处理器1020可以是一个或多个衬底的部分,并且/或者可以使用诸如例如BiCMOS、CMOS或NMOS之类的多种工艺技术中的任何技术将应用处理器1020实现在一个或多个衬底上。
图11是根据本公开的芯片上***(SoC)设计的实施例的框图。作为特定的说明性示例,SoC 1100被包括在用户装备(UE)中。在一个实施例中,UE是指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE常常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
在此,SoC 1100包括2个核——1106和1107。核1106和1107可符合指令集架构,诸如,基于架构酷睿(CoreTM)的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核1106和1107耦合到高速缓存控件1108,该高速缓存控件1108与总线接口单元1109和L2高速缓存1110相关联以与***1100的其他部分通信。互连1110包括可能实现所述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或上文讨论的其他互连。在一个实施例中,核1106、1107可以实现本文实施例描述的用于使用处理器指令前缀的二进制转换支持的技术。
互连1110提供到其他组件的通信信道,其他组件诸如用于与用户身份模块(SIM)卡对接的SIM 1130、用于保存供核1106和1107执行以初始化和引导SoC 1100的引导代码的引导ROM 1140、用于与外部存储器(例如,DRAM 1160)对接的SDRAM控制器1140、用于与非易失性存储器(例如,闪存1165)对接的闪存控制器1145、用于与***设备对接的***控制装置1150(例如,串行***接口)、用于显示和接收输入(例如,允许触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形相关的计算的GPU 1115等等。这些接口中的任何一种可以包括本文中所述公开的多个方面。另外,***1100示出了用于通信的***设备,诸如蓝牙模块1170、3G调制解调器1175、GPS 1180以及Wi-Fi 1185。
图12示出了计算机***1200的示例形式中的机器的示意图,在该计算机***1200内,可以执行用于使机器执行本文所讨论的方法中的任何一个或多个的一组指令。在替代实施例中,可以在LAN、内联网、外联网或因特网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(连续的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当包括单独或共同执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任意集合。
计算机***1200包括处理设备1202、主存储器1204(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1206(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1218,它们经由总线1230彼此进行通信。
处理设备1202表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1202也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。在一个实施例中,处理设备1202可以包括一个或多个处理核。处理设备1202被配置成执行用于执行本文中所讨论的操作和步骤的处理逻辑1226。在一个实施例中,处理设备1202与参考图1描述的实现如本公开的实施例所述的用于使用处理器指令前缀的二进制转换支持的技术的处理器架构100相同。
计算机***1200可以进一步包括通信地耦合至网络1220的网络接口设备1208。计算机***1200还可以包括视频显示单元1210(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1212(例如,键盘)、光标控制设备1214(例如,鼠标)、以及信号生成设备1216(例如,扬声器)。此外,计算机***1200可以包括图形处理单元1222、视频处理单元1228以及音频处理单元1232。
数据存储设备1218可以包括机器可访问存储介质1224,在其上存储软件1226,软件1226实现本文所述的功能的方法中的任何一个或多个,诸如实现静默存储器指令和未命中率跟踪以优化上文所述的对处理设备中的线程的切换策略。在由计算机***1200对软件1226的执行期间,软件1226也可完全或至少部分地作为指令1226驻留在主存储器1204之内和/或作为处理逻辑1226驻留在处理设备1202之内;该主存储器1204和处理设备1202也构成机器可访问存储介质。
机器可读存储介质1224也可以被用来存储实现静默存储器指令和未命中率跟踪以优化对诸如参考图1中的处理设备100所述的处理设备中的线程的切换策略的指令1226,和/或包含调用上面的应用的方法的软件库。虽然机器可访问存储介质1128在示例实施例中被示出为单个介质,但术语“机器可访问存储介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“机器可访问存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行本公开的任何一个或多个方法的一组指令的任何介质。应当相应地认为术语“机器可访问存储介质”包括但不限于:固态存储器以及光和磁介质。
以下示例涉及进一步的实施例。
示例1是一种处理***,包括:1)寄存器区块,具有用于存储在执行指令中使用的数据的多个寄存器;以及2)处理器核,可操作地耦合至寄存器区块,用于:a)接收会由处理器核执行的指令,其中指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及b)在指令内标识引用会在二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器保留多个寄存器的源寄存器值。
在示例2中,示例1的主题,其中处理器核进一步用于:考虑处理***的能力而确定与二进制转换器操作相关联的操作码前缀是否是有效的。
在示例3中,示例1-2的主题,其中处理器核进一步用于:响应于确定操作码前缀是无效的,生成指示二进制转换器操作不能由处理***执行的警告。
在示例4中,示例1-3的主题,其中处理器核进一步用于:a)考虑操作码前缀而标识多个寄存器中的第一寄存器;以及b)使用存储在第一寄存器中的数据执行二进制转换器操作。
在示例5中,示例1-4的主题,其中第一寄存器包括与指令的执行相关联的地址。
在示例6中,示例1-5的主题,其中二进制转换器操作包括使用存储在第一寄存器中的值的算术操作。
在示例7中,示例1-6的主题,其中算术操作的结果存储在扩展寄存器中。
在示例8中,示例1-7的主题,其中第一寄存器和扩展寄存器标识位于多个寄存器中的不同寄存器。
各实施例可具有以上所述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现上文中描述的处理器的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
示例9是一种方法,包括:a)由处理器接收会由处理器执行的指令,指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及b)在指令内标识引用会在二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器保留多个寄存器的源寄存器值。
在示例10中,示例9的主题,进一步包括:考虑处理器的能力而确定与二进制转换器操作相关联的操作码前缀是否是有效的。
在示例11中,示例9-10的主题,进一步包括:响应于确定操作码前缀是无效的,生成指示二进制转换器操作不能由处理器执行的警告。
在示例12中,示例9-11的主题,其中进一步包括:a)考虑操作码前缀而标识多个寄存器中的第一寄存器;以及b)使用存储在第一寄存器中的数据执行二进制转换器操作。
在示例13中,示例9-12的主题,其中第一寄存器包括与指令的执行相关联的地址。
在示例14中,示例9-13的主题,二进制转换器操作包括使用存储在第一寄存器中的值的算术操作。
在示例15中,示例9-14的主题,其中算术操作的结果存储在扩展寄存器中。
在示例16中,示例9-15的主题,其中第一寄存器和扩展寄存器标识位于多个寄存器中的不同寄存器。
各实施例可具有以上所述的结构特征的不同组合。例如,也可参照本文中描述的***来实现上文中描述的处理器和方法的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
示例17是一种芯片上***(SoC),包括:1)存储器控制器单元(MCU);以及2)处理器,可操作地耦合至MCU,用于:a)接收会由处理器执行的指令,其中指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及b)在指令内标识引用会在二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器保留多个寄存器的源寄存器值。
在示例18中,示例17的主题,其中处理器进一步用于:考虑处理***的能力而确定与二进制转换器操作相关联的操作码前缀是否是有效的。
在示例19中,示例17-18的主题,其中处理器进一步用于:响应于确定操作码前缀是无效的,生成指示二进制转换器操作不能由处理***执行的警告。
在示例20中,示例17-19的主题,其中处理器进一步用于:a)考虑操作码前缀而标识多个寄存器中的第一寄存器;以及b)使用存储在第一寄存器中的数据执行二进制转换器操作。
在示例21中,示例17-20的主题,其中第一寄存器包括与指令的执行相关联的地址。
在示例22中,示例17-21的主题,其中二进制转换器操作包括使用存储在第一寄存器中的值的算术操作。
在示例23中,示例17-22的主题,其中算术操作的结果存储在扩展寄存器中。
在示例24中,示例17-23的主题,其中第一寄存器和扩展寄存器标识位于多个寄存器中的不同寄存器。
各实施例可以具有上文所描述的操作特征的不同的组合。例如,上文所描述的方法的所有可选的特征也可以相对于非暂态计算机可读存储介质来实现。这些示例中的细节可用于一个或多个实施例中的任何地方。
示例25是一种非暂态计算机可读存储介质,存储可执行指令,可执行指令在被执行时使处理设备用于:a)由处理设备接收会由处理器设备执行的指令,其中指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及b)在指令内标识引用会在二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器保留多个寄存器的源寄存器值。
在示例26中,示例25的主题,其中可执行指令进一步使处理器设备用于:考虑处理***的能力而确定与二进制转换器操作相关联的操作码前缀是否是有效的。
在示例27中,示例25-26的主题,其中可执行指令进一步使处理器设备用于:响应于确定操作码前缀是无效的,生成指示二进制转换器操作不能由处理***执行的警告。
在示例28中,示例25-27的主题,其中可执行指令进一步使处理器设备用于:a)考虑操作码前缀而标识多个寄存器中的第一寄存器;以及b)使用存储在第一寄存器中的数据执行二进制转换器操作。
在示例29中,示例25-28的主题,其中第一寄存器包括与指令的执行相关联的地址。
在示例30中,示例25-29的主题,其中二进制转换器操作包括使用存储在第一寄存器中的值的算术操作。
在示例31中,示例25-30的主题,其中算术操作的结果存储在扩展寄存器中。
在示例32中,示例25-31的主题,其中第一寄存器和扩展寄存器标识位于多个寄存器中的不同寄存器。
示例33是一种包括指令的非暂态计算机可读存储介质,指令在被处理器执行时使处理器执行示例9-16的方法。
各实施例可以具有上文所描述的操作特征的不同的组合。例如,上文所描述的方法、***和非暂态计算机可读存储介质的所有可选的特征也可以相对于其他类型的结构来实现。这些示例中的细节可用于一个或多个实施例中的任何地方。
示例34是一种设备,包括:1)处理器的多个功能单元;2)用于由处理器接收会由处理器执行的指令的装置,指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及3)用于在指令内标识引用会在二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀的装置,其中扩展寄存器保留多个寄存器的源寄存器值。
在示例35中,示例34的主题,进一步包括示例1-8和17-24中的任一项的主题。
示例36是一种***,包括:1)存储器设备和2)包括存储器控制器单元的处理器,其中处理器配置为执行示例9-16中的任一项的方法。
在示例37中,示例36的主题,进一步包括示例1-8和17-24中的任一项的主题。
示例38是一种处理***,包括:1)寄存器区块,具有用于存储在执行指令中使用的数据的多个寄存器;以及2)处理器核,可操作地耦合至寄存器区块,用于:a)接收会由处理器核执行的指令,其中指令用于与二进制转换器相关联的条件分支操作;以及b)在指令内标识引用会在条件分支操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储标识用于条件分支操作的条件的条件输入值。
在示例39中,示例38的主题,其中处理器核进一步用于:考虑条件输入值而确定绕开还是执行指令。
示例40是一种方法,包括:1)由处理器接收会由处理器执行的指令,其中指令用于与二进制转换器相关联的条件分支操作;以及2)在指令内标识引用会在条件分支操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储标识用于条件分支操作的条件的条件输入值。
在示例41中,示例40的主题,进一步包括:考虑条件输入值而确定绕开还是执行指令。
示例42是一种芯片上***(SoC),包括:1)存储器控制器单元(MCU);以及2)处理器,可操作地耦合至MCU,用于:a)接收会由处理器执行的指令,其中指令用于与二进制转换器相关联的条件分支操作;以及b)在指令内标识引用会在条件分支操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储标识用于条件分支操作的条件的条件输入值。
在示例43中,示例42的主题,其中处理器进一步用于:考虑条件输入值而确定绕开还是执行指令。
示例44是一种非暂态计算机可读存储介质,存储可执行指令,可执行指令在被执行时使处理设备用于:a)由处理设备接收会由处理设备执行的指令,其中指令用于与二进制转换器相关联的条件分支操作;以及b)在指令内标识引用会在条件分支操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储标识用于条件分支操作的条件的条件输入值。
在示例45中,示例44的主题,其中可执行指令进一步使处理设备用于:考虑条件输入值而确定绕开还是执行指令。
示例46是一种包括指令的非暂态计算机可读存储介质,指令在被处理器执行时使处理器执行示例40-41的方法。
示例47是一种设备,包括:1)处理器的多个功能单元;2)用于接收会由处理器执行的指令的装置,其中指令用于与二进制转换器相关联的条件分支操作;以及3)用于在指令内标识引用会在条件分支操作期间使用的多个寄存器中的扩展寄存器的操作码前缀的装置,其中扩展寄存器存储标识用于条件分支操作的条件的条件输入值。
在示例48中,示例47的主题,进一步包括示例38-39和42-43中的任一项的主题。
示例49是一种***,包括:存储器设备和包括存储器控制器单元的处理器,其中处理器配置为执行示例40-41中的任一项的方法。
在示例50中,示例49的主题,进一步包括示例38-39和42-43中的任一项的主题。
示例51是一种处理***,包括:1)寄存器区块,具有用于存储在执行指令中使用的数据的多个寄存器;以及2)处理器核,可操作地耦合至寄存器区块,用于:a)接收会由处理器核执行的指令,其中指令用于与二进制转换器相关联的重排序操作;以及b)在指令内标识引用会在重排序操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储指示相对于不同指令对该指令的执行的重新排序的该不同指令的地址。
在示例52中,示例51的主题,其中处理器核进一步用于:考虑与该指令相关联的第一地址和存储在扩展寄存器中的该不同指令的地址而确定重新排序是否是有效的。
示例53是一种方法,包括:1)由处理器接收会由处理器执行的指令,其中指令用于与二进制转换器相关联的重排序操作;以及2)在指令内标识引用会在重排序操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储指示相对于不同指令对该指令的执行的重新排序的该不同指令的地址。
在示例54中,示例53的主题,其中进一步包括:考虑与该指令相关联的第一地址和存储在扩展寄存器中的该不同指令的地址而确定重新排序是否是有效的。
示例55是一种芯片上***(SoC),包括:1)存储器控制器单元(MCU);以及2)处理器,可操作地耦合至MCU,用于:a)接收会由处理器执行的指令,其中指令用于与二进制转换器相关联的重排序操作;以及b)在指令内标识引用会在重排序操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储指示相对于不同指令对该指令的执行的重新排序的该不同指令的地址。
在示例56中,示例55的主题,其中处理器进一步用于:考虑与该指令相关联的第一地址和存储在扩展寄存器中的该不同指令的地址而确定重新排序是否是有效的。
示例57是一种非暂态计算机可读存储介质,存储可执行指令,可执行指令在被执行时使处理设备用于:1)由处理设备接收会由处理设备执行的指令,其中指令用于与二进制转换器相关联的重排序操作;以及2)在指令内标识引用会在重排序操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中扩展寄存器存储指示相对于不同指令对该指令的执行的重新排序的该不同指令的地址。
在示例58中,示例57的主题,其中可执行指令进一步使处理器设备用于:考虑与该指令相关联的第一地址和存储在扩展寄存器中的该不同指令的地址而确定重新排序是否是有效的。
示例59是一种包括指令的非暂态计算机可读存储介质,指令在被处理器执行时使处理器执行示例53-54的方法。
示例60是一种设备,包括:1)处理器的多个功能单元;2)用于接收会由处理器执行的指令的装置,其中指令用于与二进制转换器相关联的重排序操作;以及3)用于在指令内标识引用会在重排序操作期间使用的多个寄存器中的扩展寄存器的操作码前缀的装置,其中扩展寄存器存储指示相对于不同指令对该指令的执行的重新排序的该不同指令的地址。
在示例61中,示例60的主题,进一步包括示例51-52和55-56中的任一项的主题。
示例62是一种***,包括:1)存储器设备和包括存储器控制器单元的处理器,其中处理器配置为执行示例53-54中的任一项的方法。
在示例63中,示例62的主题,进一步包括示例51-52和55-56中的任一项的主题。
尽管是参考有限数量的实施例来描述本公开的,但是本领域技术人员将从其中理解到很多的修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有这些修改和变型。
设计会经历多个阶段,从创造到仿真到制造。表示设计的数据可用多种方式来表示该设计。首先,如仿真中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬件。此外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。此外,大多数设计在某些阶段都达到表示硬件模型中多种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
如本文中所使用的模块指的是硬件、软件、和/或固件的任何组合。作为示例,模块包括与非暂态介质相关联的诸如微控制器之类的硬件,该非暂态介质用于存储适于由该微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。另外,在另一实施例中,模块的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定操作。并且可推断,在又一实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。通常,被示为分开的模块边界一般不同,并且潜在地重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其他硬件。
在一个实施例中,使用短语“被配置成”指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可以提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用术语‘用于’、‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、逻辑、硬件、和/或元件:以指定方式启用对该装置、逻辑、硬件、和/或元件的使用。如上文所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、逻辑、硬件、和/或元件的潜在状态,其中该装置、逻辑、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如在本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机***中的值的其他表示。例如,十进制数十还可以被表示为二进制值910和十六进制字母A。因此,值包括能够被保存在计算机***中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可以使用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子***之类的机器可读形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些与可从其接收信息的非暂态介质相区别。
被用于对逻辑进行编程以执行本公开的诸个实施例的指令可被存储在***中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。进一步的,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。相应地,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施例,也有可能是同一实施例。
Claims (27)
1.一种处理***,包括:
寄存器区块,具有用于存储在执行指令中使用的数据的多个寄存器;以及
处理器核,可操作地耦合至所述寄存器区块,用于:
接收会由所述处理器核执行的指令,其中所述指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及
在所述指令内标识引用会在所述二进制转换器操作期间使用的所述多个寄存器中的扩展寄存器的操作码前缀,其中所述扩展寄存器保留所述多个寄存器的源寄存器值。
2.如权利要求1所述的处理***,其特征在于,所述处理器核进一步用于:考虑所述处理***的能力而确定与所述二进制转换器操作相关联的所述操作码前缀是否是有效的。
3.如权利要求1所述的处理***,其特征在于,所述处理器核进一步用于:响应于确定所述操作码前缀是无效的,生成指示所述二进制转换器操作不能由所述处理***执行的警告。
4.如权利要求1所述的处理***,其特征在于,所述处理器核进一步用于:
考虑所述操作码前缀而标识所述多个寄存器中的第一寄存器;以及
使用存储在所述第一寄存器中的数据执行所述二进制转换器操作。
5.如权利要求4所述的处理***,其特征在于,所述第一寄存器包括与所述指令的执行相关联的地址。
6.如权利要求4所述的处理***,其特征在于,所述二进制转换器操作包括使用存储在所述第一寄存器中的值的算术操作。
7.如权利要求6所述的处理***,其特征在于,所述算术操作的结果存储在所述扩展寄存器中。
8.如权利要求7所述的处理***,其特征在于,所述第一寄存器和所述扩展寄存器标识位于所述多个寄存器中的不同寄存器。
9.一种方法,包括:
由处理器接收会由所述处理器执行的指令,所述指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及
在所述指令内标识引用会在所述二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中所述扩展寄存器保留所述多个寄存器的源寄存器值。
10.如权利要求9所述的方法,其特征在于,进一步包括:考虑所述处理器的能力而确定与所述二进制转换器操作相关联的所述操作码前缀是否是有效的。
11.如权利要求10所述的方法,其特征在于,进一步包括:响应于确定所述操作码前缀是无效的,生成指示所述二进制转换器操作不能由所述处理器执行的警告。
12.如权利要求9所述的方法,其特征在于,进一步包括:
考虑所述操作码前缀而标识所述多个寄存器中的第一寄存器;以及
使用存储在所述第一寄存器中的数据执行所述二进制转换器操作。
13.如权利要求12所述的方法,其特征在于,所述第一寄存器包括与所述指令的执行相关联的地址。
14.如权利要求12所述的方法,其特征在于,所述二进制转换器操作包括使用存储在所述第一寄存器中的值的算术操作。
15.如权利要求14所述的方法,其特征在于,所述算术操作的结果存储在所述扩展寄存器中。
16.如权利要求15所述的方法,其特征在于,所述第一寄存器和所述扩展寄存器标识位于所述多个寄存器中的不同寄存器。
17.一种芯片上***(SoC),包括:
存储器控制器单元(MCU);以及
处理器,可操作地耦合至所述MCU,用于:
接收会由所述处理器执行的指令,其中所述指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及
在所述指令内标识引用会在所述二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀,其中所述扩展寄存器保留所述多个寄存器的源寄存器值。
18.如权利要求17所述的SoC,其特征在于,所述处理器进一步用于:考虑所述处理***的能力而确定与所述二进制转换器操作相关联的所述操作码前缀是否是有效的。
19.如权利要求17所述的SoC,其特征在于,所述处理器进一步用于:响应于确定所述操作码前缀是无效的,生成指示所述二进制转换器操作不能由所述处理***执行的警告。
20.如权利要求17所述的SoC,其特征在于,所述处理器进一步用于:
考虑所述操作码前缀而标识所述多个寄存器中的第一寄存器;以及
使用存储在所述第一寄存器中的数据执行所述二进制转换器操作。
21.如权利要求20所述的SoC,其特征在于,所述第一寄存器包括与所述指令的执行相关联的地址。
22.如权利要求21所述的SoC,其特征在于,所述二进制转换器操作包括使用存储在所述第一寄存器中的值的算术操作。
23.如权利要求22所述的SoC,其特征在于,所述算术操作的结果存储在所述扩展寄存器中。
24.如权利要求23所述的SoC,其特征在于,所述第一寄存器和所述扩展寄存器标识位于所述多个寄存器中的不同寄存器。
25.一种非暂态计算机可读存储介质,包括指令,所述指令在被处理器执行时使所述处理器执行权利要求9-16所述的方法。
26.一种设备,包括:
处理器的多个功能单元;
用于由处理器接收会由所述处理器执行的指令的装置,所述指令与用于将输入指令序列转换为输出指令序列的二进制转换器操作相关联;以及
用于在所述指令内标识引用会在所述二进制转换器操作期间使用的多个寄存器中的扩展寄存器的操作码前缀的装置,其中所述扩展寄存器保留所述多个寄存器的源寄存器值。
27.如权利要求34所述的设备,其特征在于,进一步包括权利要求1-8和17-24中的任一项所述的主题。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/988,298 US20170192788A1 (en) | 2016-01-05 | 2016-01-05 | Binary translation support using processor instruction prefixes |
US14/988,298 | 2016-01-05 | ||
PCT/US2016/065011 WO2017119973A1 (en) | 2016-01-05 | 2016-12-05 | Binary translation support using processor instruction prefixes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108369508A true CN108369508A (zh) | 2018-08-03 |
Family
ID=59227116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680072070.5A Pending CN108369508A (zh) | 2016-01-05 | 2016-12-05 | 使用处理器指令前缀的二进制转换支持 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20170192788A1 (zh) |
EP (1) | EP3400525A4 (zh) |
CN (1) | CN108369508A (zh) |
TW (1) | TW201734766A (zh) |
WO (1) | WO2017119973A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9417855B2 (en) * | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US20240220260A1 (en) * | 2022-12-30 | 2024-07-04 | Jason Agron | Prefix extensions for extended general purpose registers with optimization features for non-destructive destinations and flags suppression |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1336918A2 (en) * | 2002-02-19 | 2003-08-20 | IP-First LLC | Apparatus and method for selective memory attribute control |
WO2009114961A1 (zh) * | 2008-03-17 | 2009-09-24 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN101593097A (zh) * | 2009-05-22 | 2009-12-02 | 西安交通大学 | 嵌入式同构对称双核risc微处理器的设计方法 |
US20130262838A1 (en) * | 2012-03-30 | 2013-10-03 | Muawya M. Al-Otoom | Memory Disambiguation Hardware To Support Software Binary Translation |
US20130297915A1 (en) * | 2011-11-14 | 2013-11-07 | Jonathan D. Combs | Flag non-modification extension for isa instructions using prefixes |
CN103959239A (zh) * | 2011-11-30 | 2014-07-30 | 英特尔公司 | 对使用前缀的isa指令的条件执行支持 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903760A (en) * | 1996-06-27 | 1999-05-11 | Intel Corporation | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA |
US6704925B1 (en) * | 1998-09-10 | 2004-03-09 | Vmware, Inc. | Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache |
US6418527B1 (en) * | 1998-10-13 | 2002-07-09 | Motorola, Inc. | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods |
US6981132B2 (en) * | 2000-08-09 | 2005-12-27 | Advanced Micro Devices, Inc. | Uniform register addressing using prefix byte |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US7373483B2 (en) * | 2002-04-02 | 2008-05-13 | Ip-First, Llc | Mechanism for extending the number of registers in a microprocessor |
US7155598B2 (en) * | 2002-04-02 | 2006-12-26 | Ip-First, Llc | Apparatus and method for conditional instruction execution |
US8918623B2 (en) * | 2009-08-04 | 2014-12-23 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
JP5871503B2 (ja) * | 2011-07-27 | 2016-03-01 | キヤノン株式会社 | 搬送装置 |
US9417855B2 (en) * | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
FR3021432B1 (fr) * | 2014-05-20 | 2017-11-10 | Bull Sas | Processeur a instructions conditionnelles |
-
2016
- 2016-01-05 US US14/988,298 patent/US20170192788A1/en not_active Abandoned
- 2016-12-02 TW TW105139952A patent/TW201734766A/zh unknown
- 2016-12-05 WO PCT/US2016/065011 patent/WO2017119973A1/en unknown
- 2016-12-05 CN CN201680072070.5A patent/CN108369508A/zh active Pending
- 2016-12-05 EP EP16884152.6A patent/EP3400525A4/en not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1336918A2 (en) * | 2002-02-19 | 2003-08-20 | IP-First LLC | Apparatus and method for selective memory attribute control |
WO2009114961A1 (zh) * | 2008-03-17 | 2009-09-24 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN101593097A (zh) * | 2009-05-22 | 2009-12-02 | 西安交通大学 | 嵌入式同构对称双核risc微处理器的设计方法 |
US20130297915A1 (en) * | 2011-11-14 | 2013-11-07 | Jonathan D. Combs | Flag non-modification extension for isa instructions using prefixes |
CN103959239A (zh) * | 2011-11-30 | 2014-07-30 | 英特尔公司 | 对使用前缀的isa指令的条件执行支持 |
US20130262838A1 (en) * | 2012-03-30 | 2013-10-03 | Muawya M. Al-Otoom | Memory Disambiguation Hardware To Support Software Binary Translation |
Also Published As
Publication number | Publication date |
---|---|
EP3400525A1 (en) | 2018-11-14 |
EP3400525A4 (en) | 2019-08-21 |
WO2017119973A1 (en) | 2017-07-13 |
US20170192788A1 (en) | 2017-07-06 |
TW201734766A (zh) | 2017-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和*** | |
US10534613B2 (en) | Supporting learned branch predictors | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
CN108388528A (zh) | 基于硬件的虚拟机通信 | |
CN106843810B (zh) | 跟踪指令的控制流程的设备、方法以及机器可读介质 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN107851170A (zh) | 支持用于存储器地址范围的可配置安全级别 | |
US10216516B2 (en) | Fused adjacent memory stores | |
CN108351779A (zh) | 用于安全指令执行流水线的指令和逻辑 | |
US10635447B2 (en) | Scatter reduction instruction | |
CN108446763A (zh) | 可变字长神经网络加速器电路 | |
CN108475199B (zh) | 用于执行密钥值查找指令的处理设备 | |
CN109643283A (zh) | 管理飞地存储器页 | |
CN108369517A (zh) | 聚合分散指令 | |
US10019262B2 (en) | Vector store/load instructions for array of structures | |
CN108369508A (zh) | 使用处理器指令前缀的二进制转换支持 | |
US10691454B2 (en) | Conflict mask generation | |
CN109690546A (zh) | 支持对客户机飞地存储器页的超额订阅 | |
CN105320494B (zh) | 用于操作处理的方法、***和设备 | |
CN108475253A (zh) | 用于执行共轭置换指令的处理设备 | |
TWI724066B (zh) | 分散縮減指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180803 |
|
RJ01 | Rejection of invention patent application after publication |