CN105765522B - 用于立即数处置和旗标处置的处理器和方法 - Google Patents
用于立即数处置和旗标处置的处理器和方法 Download PDFInfo
- Publication number
- CN105765522B CN105765522B CN201480064146.0A CN201480064146A CN105765522B CN 105765522 B CN105765522 B CN 105765522B CN 201480064146 A CN201480064146 A CN 201480064146A CN 105765522 B CN105765522 B CN 105765522B
- Authority
- CN
- China
- Prior art keywords
- flag
- bit
- mapping table
- instructions
- order
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000013507 mapping Methods 0.000 claims description 65
- 238000003860 storage Methods 0.000 claims description 20
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 210000003813 thumb Anatomy 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 238000009738 saturating Methods 0.000 description 3
- 230000003416 augmentation Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002574 poison Substances 0.000 description 2
- 231100000614 poison Toxicity 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
Images
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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本文描述了用于按组旗标重命名以消除指令的相依性的方法和处理器。所述处理器中的解码器和执行单元可被配置来将旗标重命名到组中,这允许酌情单独处理每个组。这样的旗标重命名消除了对指令的旗标相依性。这允许指令确切地写入所述指令所希望的且无需创建合并相依性的旗标。本文提供了用于处置嵌入在指令中的立即数值的方法和处理器。16位立即数总线和4位编码/控制总线被添加在解码单元与执行单元之间的接口处。对于8位或12位立即数,所述立即数总线的前4位包括编码位。对于16位立即数,所述编码/控制总线包括所述编码位。所述编码/控制总线指示何时查看所述立即数总线的最前面四位。
Description
相关申请的交叉引用
本申请要求2013年10月25日提交的美国临时申请号61/895,715的权益,所述申请号的内容据此通过引用的方式并入本文。
技术领域
所公开实施方案通常涉及电子电路。
背景技术
处理器(例如,中央处理单元(CPU)、图形处理单元(GPU)等)使用多个核心和管线架构来实现更快的处理速度。为了促进更快的执行吞吐量,使用处理器核心的解码器和执行单元内的运算的“管线”执行。然而,处理器仍然需要更快又高效的吞吐量。
发明内容
本文描述了用于按组旗标重命名以消除指令的相依性的方法和处理器的一些实施方案。所述处理器中的解码器和执行单元可被配置来将旗标重命名到组中,这允许酌情单独处理每个组。这样的旗标重命名消除了对指令的旗标相依性。这允许指令确切地写入所述指令所希望的且无需创建合并相依性的旗标。
本文描述了用于处置嵌入在指令中的立即数值的方法和处理器的一些实施方案。在实施方案中,嵌入在指令中的立即数值的处置可通过在所述处理器中的解码单元与执行单元之间的接口处添加16位立即数总线和4位编码/控制总线而实现。编码空间是通过将编码信息过载到所述16位立即数总线上而最小化,因此有效地使用存储和路由资源并同时传送来自所述解码和执行单元的信息。在8位或12位立即数的情况中,所述立即数总线的前4位可包括编码位且编码/控制总线可指示ISA类型。在16位立即数的事件中,所述编码/控制总线包括所述编码位。所述编码/控制总线将具有何时查看所述立即数总线的最前面四位和所述数据应何时完全使用的信息。因此,增强总的编码空间且所述接口处不需要额外位。
附图说明
可从通过实例的方式结合附图给出的以下描述获得更详细理解,其中:
图1是在其中可实施一个或多个所公开的实施方案的实例设备的框图;
图2是根据某些实施方案的处理器的实例指令管线;
图3是用于根据某些实施方案的旗标处置的实例框图;
图4是数据和旗标相依性的实例说明;
图5是用于图5中的实例的实例执行模式;
图6是当使用单个实体旗标组合时的旗标相依性的实例说明;
图7是用于图7中的实例的实例执行模式;
图8是根据某些实施方案的真实数据旗标相依性的实例说明;
图9是根据某些实施方案的使用真实数据旗标相依性的规则运算的实例;
图10是根据某些实施方案的使用真实数据旗标相依性的清除运算的实例;
图11是根据某些实施方案的使用真实数据旗标相依性的损坏产生的实例;
图12是根据某些实施方案的使用真实数据旗标相依性的损坏运算的实例;
图13A和13B是根据某些实施方案的具有立即数和常数的指令的实例;
图14A和14B是根据某些实施方案的具有立即数和常数的另一指令的实例;
图15是根据某些实施方案的具有立即数和常数的指令的实例;以及
图16是根据某些实施方案的立即数处置的实例框图。
具体实施方式
为了简明起见,本文并未详细描述关于集成电路设计、缓存、存储器操作、存储器控制器和系统的其它功能方面(以及系统的个别操作组件)的常规技术。此外,本文所包括的各个图式中所示的连接线旨在表示各个元件之间的示例性功能关系和/或物理耦合。应注意,许多替代或额外的功能关系或物理连接可存在于本主题的实施方案中。此外,某些技术也可在只出于参考目的而在以下描述中使用,且因此不旨在限制,且术语“第一”、“第二”和涉及结构的其它这样的数值术语并未暗指顺序或次序,除非上下文有明确指示。
以下描述是指“连接”或“耦合”在一起的元件或节点或特征。如本文所使用,除非另有明确说明,否则“连接”意指一个元件/节点/特征直接接合到另一元件/节点/特征(或直接与另一元件/节点/特征通信),且不一定是机械接合。同样地,除非另有明确说明,否则“耦合”意指一个元件/节点/特征直接或间接接合到另一元件/节点/特征(或直接或间接与另一元件/节点/特征通信),且不一定是机械接合。因此,虽然图式可描绘特征的一种示例性布置,但是额外的介入元件、设备、特征或组件可存在于所描绘的本主题的实施方案中。
虽然以下描述中呈现了至少一个示例性实施方案,但是应明白,存在大量变动。还应明白,本文描述的(若干)示例性实施方案不旨在以任何方式限制所述主题的范围、可应用性或配置。相反地,以上详述将给所属领域技术人员提供用于实施(若干)所描述的实施方案的指导。应理解,在不脱离由权利要求书界定的范围的情况下,可对元件的功能和布置作出各种改变。
图1是在其中可实施一个或多个所公开的实施方案的实例设备100的框图。设备100可包括(例如)计算机、游戏设备、手持设备、机顶盒、电视机、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108和一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应理解,设备100可包括未在图1中示出的额外组件。
处理器102可包括中央处理单元(CPU)、图形处理单元(GPU)、位于相同晶粒上的CPU和GPU或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。存储器104可位于与处理器102相同的晶粒上,或可独立于处理器102放置。存储器104可包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或缓存。
存储装置106可包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘、或闪盘驱动器。输入设备108可包括键盘、按键、触摸屏、触摸板、检测器、麦克风、加速计、陀螺仪、生物识别扫描仪或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110可包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并且允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并且允许处理器102将输出发送到输出设备110。应注意,输入驱动器112和输出驱动器114是任选组件,并且如果输入驱动器112和输出驱动器114不存在,那么设备100将以相同方式进行操作。
指令集架构(ISA)界定可由处理器解码并执行的至少指令集。存在多个ISA,其包括(但不限于)Intel’s x86 ISA和ARM的标准ARM ISA以及Thumb ISA。虽然本文描述的实施方案是指作为说明性实例的ARM或Thumb ISA,但是所述方法和装置同样可适用于其它ISA以及相关系统和处理器架构。
处理器常规地被设计来处理通常由运算(Op)代码(OpCode)或指令代码识别的运算或指令。指令表示待执行的实际工作且表示运算元到隐式(诸如加法)或显式(诸如除法)功能单元的发布。指令可通过调度器队列四处移动。运算元是指令的自变量且可包括表达式、寄存器或常数。
图2示出了用于包括至少提取单元205、解码器单元210和执行单元215的处理器的实例指令管线200。提取单元205从存储器(未示出)中提取指令并将指令发送到解码器单元210。指令可为(例如)固定长度的ARM指令,其为32字节或16字节。解码器单元210将已提取指令的寄存器、内容和上下文解码且可将固定长度的内部指令(微运算或微指令(uop))发送到一个或多个执行单元或执行/调度单元215。执行单元215执行已解码指令。指令通常具有识别与uop相关的输入数据的位置的来源和使用数据寄存器指定符识别与uop相关的输出/结果数据的位置的目标。每个指令通常可被转译(即,解码)为一个、两个或更多个uop。处理器的解码单元210和执行单元215可包括(例如)用于旗标处置和立即数处置的方法和装置。
诸如(例如)ARM ISA的大部分ISA利用多个旗标用于条件指令执行。ARM ISA旗标可包括N用于符号条件,Z用于零条件,C用于进位条件,V用于溢出条件,Q用于饱和条件,和GE位3:0(是字节特有的进位条件)。
通常,某些类型的ARM指令产生或写入旗标的具体组合。例如,NZ(符号和零)旗标组合可由大部分AArch32指令写入(其中AArch32是ARMv8 32位执行状态,使用32位通用寄存器和32位程序计数器(PC)、堆栈指针(SP)和链接寄存器(LR),且提供两个指令集A32和T32的选项)。这些指令可包括(例如)乘法(MUL)和乘法+加法(MLA),其只写入这样的2个旗标。此外,移动(MOV)指令和逻辑指令的某些变型只写入这样的2个旗标。NZC(符号、零和进位)旗标组合是由某些风格的MOV和逻辑指令(诸如AArch32 AND、逻辑左移(LSL)、右旋寄存器(ROR)、MOV等)写入。NZCV(符号、零、进位和溢出)旗标组合全部是由算术指令(诸如AArch32 ADD、SUB等)且由写入旗标的所有AArch64 op写入。Q旗标仅仅是通过饱和算术指令(诸如信号饱和(SSAT)、饱和加法(QADD)、饱和减法(QSUB)等)写入。GE旗标(4个旗标为一组)是由对执行单元通用寄存器执行的单指令多数据(SIMD)指令写入且包括诸如ADD16、SUB16等的指令。在64位ARM指令(AArch64)中,旗标Q和GE无法写入并且总是0。
应注意,大部分ARM指令读取一组或两组中的旗标。所有条件码只需要2组。两个例外是断定和旗标复制。关于断定,用于断定的条件码可只由2组创建。对于写入旗标的断定指令,当断定错误时必须复制旧旗标值。在条件代码中使用的旗标与需要复制的旗标之间,这些指令可需要多至3个旗标源。关于旗标复制,某些指令能够复制所有旗标。
应注意,AArch64 ISA指令同时可只写入所有条件代码(NZCV),且写入旗标的不同指令之间不会创建额外的相依性,因此可提供单个旗标组。
本文描述了进行分组旗标重命名以消除指令的相依性的方法和处理器的实施方案。相依性的消除改善了性能和无序调度。一般来说,处理器中的解码器和执行单元可被配置来将旗标重命名到组中,这允许酌情单独处理每个组。这样的旗标重命名消除对指令的旗标相依性。例如,ARM ISA旗标可被重命名为5组,即,NZ、C、V、Q和GE。这允许任何32位ARM指令(AArch32)确切地写入指令希望不会创建合并相依性的旗标。
通常,为了旗标处置目的,N、Z、C、V、Q和GE旗标被处置为单个实体或组合。这在部分写入旗标的指令之间产生许多合并相依性。例如,如果只存在写入旗标Z的指令,那么旗标N将需要被进位为相依性(获得并将未变化的复制到结果中)。对于ARM和Thumb32 ISA,效果稍微受到限制,因为编译器可决定哪些指令需要产生旗标(且因此得到额外的源相依性)。对于Thumb16 ISA,旗标目标是隐式的使得决不限制惩罚。
图3是根据实施方案的用于旗标处置的处理器300的实施方案。处理器300包括整数解码单元305和执行单元310。解码器单元305从提取单元(未示出)接收指令INSTR 1、INSTR 2、INSTR 3和INSTR 4。每个指令可包括旗标目标(旗标目标1、旗标目标2、旗标目标3和旗标目标4)、运算元A、运算元B、运算元C、旗标源A和旗标源B(注意大部分ARM指令读取一组或两组中的旗标且所有条件代码只需要2组)。这些指令在发送循环350期间被适当地发送到执行单元310。
执行单元310在重命名循环360期间使用重命名电路315以通过将无旗标寄存器编号(FRN)分配到目标旗标中的每一个来重命名旗标目标1、旗标目标2、旗标目标3和旗标目标4中的旗标,且将最新重命名的旗标写入无序旗标映射表320,从而只影响当前写入其它旗标组的旗标组并使其它旗标组保持完整。为了说明目的,旗标重命名可使用4个旗标组,即,NZ、C、V和GE。可使用其它旗标组。类似地,来自INSTR1、INSTR2、INSTR3和INSTR4的旗标源A和B中的每一个是基于旗标组而重命名为其对应的FRN。与指令或运算相关的旗标跟踪为旗标寄存器文件325的条目,其中相应条目被分配FRN。执行单元310在旗标读取循环370期间从旗标寄存器文件325读取旗标值,且(在执行循环380期间)基于真实数据相依性执行无序指令(330),因为旗标是如本文中所述般在分离组中处置。执行单元310在引退循环390期间将所得旗标返回写入旗标寄存器文件325且还写入有序旗标映射表335。图3的运算方面在本文中是关于图9到12来描述。
在参考图3到8的说明性实例中,考虑图1中所示的代码片段。
表1
图4说明源寄存器与目标寄存器之间的真实数据相依性。例如,ADC指令使用寄存器r1作为源寄存器,但是r1中的值取决于OR指令的执行。图4还说明了旗标相依性。例如,ADC指令具有C旗标作为源旗标。然而,C旗标取决于产生NZC旗标组合的LSL指令所发生的事物。因此,ADC指令取决于LSL指令的执行。因此,ADC指令最终取决于OR和LSL指令。因此,ADC指令必须等待直到执行OR和LSL指令为止。这导致仅仅基于真实数据相依性的最佳可能执行次序,如图5中所示。应注意,最佳情况案例是在一个循环中使用最大数量的执行单元完成所有指令,所述最大数量的执行单元可为例如12个执行单元。最差情况案例是其由于数据和旗标相依性而采用12个循环来完成代码片段。
图6说明其中旗标被重命名为单个实体旗标组合(诸如例如,NZCV)的实例。寄存器相依性与图4中相同。在这个情形中,当指令或运算执行只产生或写入NZCV实体的2个旗标,执行单元必须从旗标寄存器中读取其它两个旗标的先前值并将其合并到NZCV结果中,例如,逻辑指令OR(#5,#7,#11)和AND(#9)只产生NZ旗标组合。因此,这些指令必须等待ADC指令(#4)执行以获得CV旗标条件而完成NZCV单个实体。这些相依性导致图7中所示的执行次序。图5和图7的比较示出了单个实体旗标组合需要的循环比最优解决方案多2次或多50%的时间。
图8说明其中重命名旗标惯例遵循真实数据相依性的实施方案。在这个实例中,旗标NZ、C和V可被分别单独写入为组0、1和2。通过将旗标重命名为例如3个旗标组(NZ、C、V),指令中的每一个将写入整个旗标组(或其中的多个旗标组),从而使其它映射保持不变。以此方式,无须创建任何不必要的相依性。这有效地消除了任何假的相依性。
本文描述了用于处置零移位(SBZ)的方法和设备。通常,规则的移位/旋转指令写入NZC旗标,从而使V旗标保持不被修改。N旗标复制符号位(结果的位31),当结果是全零时设置Z旗标,且C旗标复制通过运算移位的最后一位。如果移位量是0,C旗标保持不被修改。这样的相同行为转移到允许移位的第二运算元的许多指令,且C旗标是从移位产生。典型的实例是逻辑指令,诸如AND、ORR、BIC等。这些指令基于逻辑运算的结果设置N和Z旗标,但是其基于可选第二源移位的结果设置C旗标。如果移位量是非零,那么指令创建新的C旗标。如果移位量是零,那么这些指令必须保留旧的C旗标。反典型实例是算术指令,诸如ADD、SUB等。这些指令允许移位的第二运算元,但是其不会基于移位的结果来设置C旗标。C旗标是基于ALU结果(计算的位33)来设置。
AArch32 ISA为这些指令中的每一个提供多次编码。在一些情况中,移位量来源于嵌入在指令编码中的立即数。在其它情况中,移位量源自于寄存器。
当移位量显式地编码在指令中时,解码器单元可决定指令需要在重命名之前做什么。例如,如果移位量是零,那么指令无须利用显式移位运算来解码,且指令只写入NZ。如果移位量是1、2或3,那么指令在无显式移位op的情况下解码,但是指令将写入NZC。执行单元将具有将运算元移位多达3个位置且还为这些情况选择C旗标的能力。如果移位量大于3,那么指令利用显式移位运算来解码。移位运算获得C旗标作为目标,而逻辑运算(使用移位数据)只写入NZ。
当移位量是获自通用寄存器(GPR)时,解码器单元无法提前决定所述量是否为零。例如,指令AND r0、r1、r2可被解码为单个uop,从而只写入NZ。在另一实例中,指令AND r0、r1、r2 LSL#1可被解码为单个uop,从而写入NZ和C。在另一实例中,指令AND r0、r1、r2 LSL#5可以被解码为双重uop(LSL之后接着进行AND)。LSL指令写入C旗标,而AND指令写入NZ旗标组合。在另一实例中,指令AND r0、r1、r2 LSL r3可被解码为双重uop(LSL之后接着进行AND)。LSL指令写入C旗标且可具有SBZ行为,而AND指令写入NZ旗标组合。
对于当移位量无法在解码期间确定的情况,旗标损坏解决方案可如下文关于图3和9-12描述般实施。在图中,无序表中的阴影框是指当前指令或运算正在更新的旗标组。所有其它旗标组保持不被接触,且保留先前值。有序表中的阴影框是指当前架构状态的有效旗标组。所有旗标N、Z、C、V和GE的最新值是只从这些有效组推导。有序表中的非阴影框的内容是不相关的。组是否有效的状态是使用有序表中的有效位维持。
图9是旗标的标准或规则的运算的实例说明。在这个实例中,在执行时间处,目标旗标被重命名为自由FRN中的一个。这是无序地进行,因为指令或运算并非以编程次序执行。无序表是由源旗标组加索引。这使得便于将源分配到更早期的运算。下一个指令在获得先前由更旧运算写入的旗标中的一者时获得更旧运算的目标寄存器作为其源寄存器。例如,ADC指令获得C旗标。到C旗标的最后写入是由LSL指令进行,且LSL指令的C旗标被映射到寄存器F8。因此,ADC指令获得寄存器F8以获得C旗标的值。运算按次序(例如,寿命次序)引退。有序表跟踪旗标到FRN到引退运算的映射。这个表是由目标旗标组加索引。例如,ADC指令写入NZCV旗标。有序表将寄存器F7标记为唯一有效组,因为F7具有用于所有旗标的值。一旦下一个OR指令引退,NZ旗标被映射到寄存器F11。因此,寄存器F7和F11均是有效的。寄存器F11具有用于NZ旗标的值,且寄存器F7具有用于CV旗标的值。BSL指令获得ZC旗标。因为ADC指令是写入C旗标的最后运算,所以BSL指令获得寄存器F7(ADC的目标FRN)用于C旗标。类似地,Z旗标是源自于寄存器F11,寄存器F11是OR指令的目标FRN。
现在参考图10,在清除之后,无序表从有序表中恢复。清除运算出于多种原因而发生,且在所有这样的情况中,机器的推测状态被反转,即,这个情况中的无序表。这是类似于如上文解释的运算引退而实施。在清除运算实例中,寄存器F6和F8在LSL指令引退之后是有效的。因为NZC旗标组映射是有效的,所以用于NZ和C旗标的无序表的映射被更新到寄存器F8。NZC旗标连同NZCV旗标是有效的意指寄存器F6(映射到NZCV)具有仅仅用于V旗标的值。
图11是旗标运算和用于损坏旗标运算的清除的实例说明。在这个实例中,如果第一LSL指令是SBZ产生器(即,执行零移位)、LSL指令目标FRN,那么F1被标记为已损坏。无序表是在执行完成之前更新,且因此C旗标被映射到寄存器F1(现在被损坏)。在这种情况中,架构预期是C旗标应仍然被映射到其先前的FRN,在这种情况中,所述FRN是F6。当LSL指令引退而已知C旗标被损坏时,LSL指令的目标旗标是从NZC变为NZ。因此,有序表只更新NZ的列且将其标记为有效。暂存器F1总是被映射到有序表中的损坏旗标。因为寄存器F6(针对NZCV)和寄存器F1(针对NZ)均是有效的,所以C旗标的有序表映射是寄存器F6,其在架构上是正确的映射。
如所提及,在大部分SBZ情况中,有效C旗标在有机会获得已损坏C旗标之前被覆写。这是有利的结果。在这个实例中,恰好下一个指令(又称为LSL指令)写入有效C旗标。因为第二LSL指令并非零移位情况,所以C旗标不再被损坏。因此,当第二LSL指令引退时,LSL指令更新有序表中的NZC映射且还使来自有序表的损坏旗标无效。因此,当ADC指令获得C旗标时,ADC指令获得寄存器F8作为C旗标的源寄存器且正常引退。
现在参考图12,如果第二LSL指令是SBZ,那么ADC指令将结束于获得C旗标的寄存器F8,寄存器F8已被损坏(如上文描述)。这在架构上是不正确的。ADC指令应获得寄存器F1,其包括SBZ LSL指令之前的C旗标的映射。因此,ADC指令需要重新同步并采取清除,即,ADC指令需要被重新发送和重新执行。因此,ADC指令被再次发送,且无序表需要被修正。这可通过使用清除恢复机制完成以由有序表构建无序表。一旦完成清除,C旗标然后被正确地映射到寄存器F1(第一LSL指令的目标)且NZ被正确地映射到寄存器F8(第二LSL指令的目标)。
已损坏的旗标指示符只针对由具有等于零的移位量的移位/旋转指令/运算产生的旗标而被设置为1。所有其它运算将已损坏的旗标指示符写入为0。有序表还负责将所保留的先前FRN返回到自由FRN列表。即,FRN被重新循环以供重命名电路315使用。例如,当产生旗标NZCV的运算引退时,由NZCV旗标保留的FRN返回到自由FRN列表且引退运算的FRN被更新到新的FRN用于引退运算。清除恢复依赖于有序表以将无序表恢复为导致重新同步的运算之前的运算(340)。
这个机制依赖于零移位是不频繁且通常未获得由移位产生的旗标的事实。因此,重新同步的需要极不频繁地发生,从而导致对性能的最小影响。此外,使用“移位寄存器”第二运算元的任何逻辑指令可解码为移位运算接着进行规则的逻辑运算。移位运算将具有与源自于移位/旋转指令的移位/旋转运算相同的SBZ行为。
在另一实施方案中,损坏旗标的替代方案是获得写入旗标的所有移位运算中的C旗标(当移位量源自于寄存器时)且当移位量被证明为零时将其多路复用到输出旗标。这引入新的数据相依性且当这些情况是常见的时候显著地降低性能。
本文描述了根据一些实施方案的用于处置嵌入在指令中的立即数值的方法和装置。在一些ISA(诸如ARM和Thumb ISA)中,存在需要基于来自指令本身的一些栏进行立即数修改的一些指令。立即数常数和编码两者具是源自于指令的位栏。例如,对于指令ADD Rd、Ra、Imm32,用于Imm32的值是由指令和编码位的8位栏推导。图13A说明ARM指令1300中的已修改的立即数常数的编码的实例,其中位0-7是立即数常数值1305的六进制表示,且位8-11是编码位1310。图13B说明二进制形式的立即数常数值1305,因为其使abcdefgh与编码位1310相关。
图14A说明Thumb指令1400中的已修改的立即数常数的编码,其中位0-7是立即数常数值1405的六进制表示,且下字中的位7和12-14和上字中的位10是编码位1410。图14B说明二进制形式的立即数常数值1405,因为其使abcdefgh与编码位1410相关。在汇编语法中,立即数值是以常见方式指定(默认的二进制数)。
图13A、13B、14A和14B说明ARM ISA中支持的某些修改。此外,存在嵌入在诸如“解码位掩码”、“左移”、“符号扩展”和“零扩展”的指令中的其它编码,其需要在执行诸如ADD或SUB的指令之前进行修改。
存在需要被传递到执行单元的许多编码。将其编码在opcode空间中且然后在执行时间进行这样的修改将是困难的。此外,将需要额外循环来进行立即数修改。如果在解码单元中进行扩展,那么跨执行和解码单元的线的数量将显著增加。这将增加功率和面积需求且还导致定时问题,因为存在的路由资源有限。
在实施方案中,嵌入在指令中的立即数值的处置可通过在解码单元与执行单元之间的接口处添加16位立即数总线和4位编码/控制总线(示为图15中的SrcBCtl)而实现。指令通常需要然后转换为32或64位的立即数数据的8-16位。编码空间是通过将编码信息过载到16位立即数总线上而最小化,因此有效地使用存储和路由资源并同时传送来自解码和执行单元的信息。
图15提供使用16位立即数总线和4位编码/控制总线的立即数情况的取样。第一列详述所需要修改的本质,第二列是4个编码位(是SrcBCtl<3:0>),且第三和第四列是16位立即数总线。在图15中,缩写是:LSL-逻辑左移(数据,<shiftamount>);ZeroExtend-基于数据大小将最前面的48/16位归零;和SignExtend-基于数据大小将第15位复制到最前面的48/16位上。如图15中说明,立即数可需要8、12或16位。在8或12位立即数的事件中,立即数总线的前面4位可包括编码位,且编码/控制总线可指示ISA类型。在16位立即数的事件中,编码/控制总线包括编码位。SrcBCtl<3:0>将具有何时查看立即数总线的最前面的四位和数据应何时完全使用的信息。因此,增加总的编码空间且接口处不需要另外的位。
一般来说,处理器包括至少解码单元和执行单元。解码单元从提取单元接收指令。每个指令包括至少运算元A、运算元B、运算元C和其它位。16位立即数总线和4位编码/控制总线从解码单元添加到执行单元以处置嵌入在指令中的某些立即数值。实际上,立即数总线和编码/控制总线告知如何扩展数据位以产生被消耗的最终立即数数据。立即数数据在移位和对齐之后(例如,在修改和/或扩展之后)直接存储到阵列中。例如,电路(包括至少16位立即数总线和4位编码/控制总线)可被配置使得已扩展的立即数(例如,扩展到64位的已修改立即数)可只进入具体源,而uop参考多个源。
图16是用于处置嵌入在指令中的立即数值的实施方案的实例方框图。处理器1600包括至少整数解码单元1605和执行单元1610。解码单元1605可例如接收ARM ISA指令1615和/或Thumb ISA指令1617。指令1615和1617是在解码循环1690期间解码,且如上文所述的控制位1618是针对乘法器1620。控制位1618是在传输循环1694期间使用立即数控制总线1630而处理和传递到执行单元1610。数据位1619在数据处理循环1692期间发送和处理且在传输循环1894期间使用立即数数据总线1632传递到执行单元1610。
如上所述,取决于立即数的本质(即,其是8、12还是16位立即数),适当控制或编码位(即,立即数Ctrl[3:0]和/或立即数数据[15:12])将确定扩展循环期间的处理的本质。例如,控制或编码位可需要Thumb扩展1650、移位器1652、零扩展1654、符号扩展1656、解码位掩码1658、旋转器1660和/或字节复制1662。这些运算1650-1662的输出和适当的控制或编码位是针对乘法器1670,这继而又在选择循环1698期间存储在立即数存储装置1680中。扩展循环并非额外的执行循环,但是近似与实际指令或运算的处理同时和/或并行执行。因此,立即数常数值在立即数存储装置1680中可由实际指令使用和执行。
本文描述了用于处置来自已修改立即数的进位旗标的方法和装置。存在基于立即数的旋转写出进位旗标,这是在发送时间处从解码单元进行。其中的大部分是逻辑指令。对于ARM ISAv7,存在以这个类别存在的大概8个指令,例如AND、EOR、TST、TEQ、ORR、MOV、BIC、MVN。由于大部分规则的逻辑指令不更新进位旗标,由立即数旋转产生的进位旗标可仅仅被转发到执行单元且可在执行时间处被写入FRF(旗标寄存器文件)中。用于存储由已修改的立即数产生的这个进位旗标的立即数存储装置中的额外存储位不一定是需要的,其中电路被配置来总是进行右旋且数据大小是32,因为保证立即数存储读取数据的位31将是需要针对所述特定uop更新的最终进位旗标。
这可能并不适用的唯一情况是如上文讨论的零移位情况。由于旋转量源自于运算代码,可早期检测到零移位且可执行禁用C旗标的destflag启用使得FRF中写入何物并不重要且将利用先前产生的正确进位获得下一个运算。然而,在ARM v8的情况中,存在将进位旗标更新为“0”的AND和BIC指令。对于这些情况,可提供两个运算AND v8和BICV8以区分写入C旗标的运算和ARM v7中写入由立即数的实际旋转产生的进位旗标的运算。
一般来说,用于旗标处置的方法包括确定来自已发送指令的至少一个目标旗标;和通过分配与对应于所述至少一个目标旗标的至少一个旗标组相关的自由旗标寄存器编号来重命名所述至少一个目标旗标,其中旗标组对应于独立旗标。所述方法可包括将每个已重命名旗标写入无序旗标映射表,其中不对应于所述至少一个目标旗标的旗标组不受影响。所述方法可包括基于数据相依性无序地执行所述已发送指令。所述方法可包括在引退循环期间将由所述无序执行产生的旗标写入有序旗标映射表,其中所述有序表跟踪旗标到已引退发送指令的映射。所述有序旗标映射表可维持具体旗标组是否有效。所述无序旗标映射表可由源旗标组加索引。所述有序旗标映射表可恢复已清除无序表。所述有序旗标映射表可维持损坏位(poison bit)为零移位条件。所述方法可包括以发生零移位的条件设置损坏位;以发生第二零移位的条件消耗所述损坏位;以消耗所述损坏位的条件清除所述无序旗标映射表;和重新发送并重新执行导致消耗所述损坏位的指令。
一般来说,处理器包括执行单元,其被配置来确定来自已发送指令的至少一个目标旗标;和重命名单元,其被配置来通过分配与对应于所述至少一个目标旗标的至少一个旗标组相关的自由旗标寄存器编号来重命名所述至少一个目标旗标,其中旗标组对应于独立旗标。所述处理器可包括无序旗标映射表,其中所述执行单元被进一步配置来将每个已重命名旗标写入无序旗标映射表,其中不对应于所述至少一个目标旗标的旗标组不受影响。所述执行单元可被进一步配置来基于数据相依性无序地执行所述已发送指令。所述处理器可进一步包括有序旗标映射表,其中所述执行单元被进一步配置来在引退循环期间将由所述无序执行产生的旗标写入所述有序旗标映射表,其中所述有序表跟踪旗标到已引退发送指令的映射。所述有序旗标映射表可维持具体旗标组是否有效。所述无序旗标映射表可由源旗标组加索引。所述有序旗标映射表可恢复已清除无序表。所述有序旗标映射表可维持损坏位(poison bit)为零移位条件。所述执行单元可被配置来以发生零移位的条件设置损坏位、以发生第二零移位的条件消耗所述损坏位、以消耗所述损坏位的条件清除所述无序旗标映射表和重新执行被重新发送的导致消耗所述损坏位的指令。所述处理器可包括解码单元;16位立即数总线,其被配置来在所述解码单元与所述执行单元之间进行接合;和4位控制总线,其被配置来在所述解码单元与所述执行单元之间进行接合,其中所述16位立即数总线和所述4位控制总线的组合被配置来携带用于具有立即数常数的指令的编码信息,且其中所述16位立即数总线被配置为携带立即数常数。
一种存储由通用计算机执行以在处理器中执行旗标处置的指令集的非暂时性计算机可读存储介质包括确定代码段,其用于确定来自已发送指令的至少一个目标旗标;和重命名代码段,其用于通过分配与对应于所述至少一个目标旗标的至少一个旗标组相关的自由旗标寄存器编号来重命名所述至少一个目标旗标,其中旗标组对应于独立旗标。所述指令是用于设备制造的硬件描述语言(HDL)指令。
一般来说,处理器包括解码单元;16位立即数总线,其被配置来在所述解码单元与所述执行单元之间进行接合;和4位控制总线,其被配置来在所述解码单元与所述执行单元之间进行接合,其中所述16位立即数总线和所述4位控制总线的组合被配置来携带用于具有立即数常数的指令的编码信息,且其中所述16位立即数总线被配置为携带立即数常数。用于具有立即数常数的指令的编码信息是使用乘法器而压缩到所述16位立即数总线和所述4位控制总线的组合中。所述16位立即数总线的前面4位可用于携带用于某些指令的编码信息。所述编码信息确定执行Thumb扩展、移位、零扩展、符号扩展、解码单元掩码、旋转和字节复制运算/扩充中的至少一个。所述运算/扩充的输出和所述编码信息被多路复用且存储在立即数存储装置中以供指令使用。运算/扩充期间产生的进位旗标被转发到旗标寄存器文件。
实施方案
1.一种用于旗标处置的方法,所述方法包括确定来自已发送指令的至少一个目标旗标。
2.根据实施方案1所述的方法,其进一步包括通过分配与对应于所述至少一个目标旗标的至少一个旗标组相关的自由旗标寄存器编号来重命名所述至少一个目标旗标,其中旗标组对应于独立旗标。
3.根据前述实施方案中的任一项所述的方法,其进一步包括将每个已重命名旗标写入无序旗标映射表,其中不对应于所述至少一个目标旗标的旗标组不受影响。
4.根据前述实施方案中的任一项所述的方法,其进一步包括基于数据相依性无序地执行所述已发送指令。
5.根据前述实施方案中的任一项所述的方法,其进一步包括在引退循环期间将由所述无序执行产生的旗标写入有序旗标映射表,其中所述有序表跟踪旗标到已引退发送指令的映射。
6.根据前述实施方案中的任一项所述的方法,其中所述有序旗标映射表维持具体旗标组是否有效。
7.根据前述实施方案中的任一项所述的方法,其中所述无序旗标映射表是由源旗标组加索引。
8.根据前述实施方案中的任一项所述的方法,其中所述有序旗标映射表恢复已清除无序表。
9.根据前述实施方案中的任一项所述的方法,其中所述有序旗标映射表维持损坏位为零移位条件。
10.根据前述实施方案中的任一项所述的方法,其进一步包括以发生零移位的条件设置损坏位。
11.根据前述实施方案中的任一项所述的方法,其进一步包括以发生第二零移位的条件消耗所述损坏位。
12.根据前述实施方案中的任一项所述的方法,其进一步包括以消耗所述损坏位的条件清除所述无序旗标映射表。
13.根据前述实施方案中的任一项所述的方法,其进一步包括重新发送并重新执行导致消耗所述损坏位的指令。
14.一种处理器,其包括执行单元,所述执行单元被配置来确定来自已发送指令的至少一个目标旗标。
15.根据实施方案14所述的处理器,其进一步包括重命名单元,所述重命名单元被配置来通过分配与对应于所述至少一个目标旗标的至少一个旗标组相关的自由旗标寄存器编号来重命名所述至少一个目标旗标,其中旗标组对应于独立旗标。
16.根据实施方案14-15中任一项所述的处理器,其进一步包括无序旗标映射表,其中所述执行单元被进一步配置来将每个已重命名旗标写入无序旗标映射表,其中不对应于所述至少一个目标旗标的旗标组不受影响。
17.根据实施方案14-16中任一项所述的处理器,其中所述执行单元被进一步配置来基于数据相依性无序地执行所述已发送指令。
18.根据实施方案14-17中任一项所述的处理器,其进一步包括有序旗标映射表,其中所述执行单元被进一步配置来在引退循环期间将由所述无序执行产生的旗标写入所述有序旗标映射表,其中所述有序表跟踪旗标到已引退发送指令的映射。
19.根据实施方案14-18中任一项所述的处理器,其中所述有序旗标映射表维持具体旗标组是否有效。
20.根据实施方案14-19中任一项所述的处理器,其中所述无序旗标映射表是由源旗标组加索引。
21.根据实施方案14-20中任一项所述的处理器,其中所述有序旗标映射表恢复已清除无序表。
22.根据实施方案14-21中任一项所述的处理器,其中所述有序旗标映射表维持损坏位为零移位条件。
23.根据实施方案14-22中任一项所述的处理器,其中所述执行单元被配置来以发生零移位的条件设置损坏位。
24.根据实施方案14-23中任一项所述的处理器,其中所述执行单元被配置来以发生第二零移位的条件消耗所述损坏位。
25.根据实施方案14-24中任一项所述的处理器,其中所述执行单元被配置来以消耗所述损坏位的条件清除所述无序旗标映射表。
26.根据实施方案14-25中任一项所述的处理器,其中所述执行单元被配置来重新执行被重新发送的导致消耗所述损坏位的指令。
27.根据实施方案14-26中任一项所述的处理器,其进一步包括解码单元。
28.根据实施方案14-27中任一项所述的处理器,其进一步包括16位立即数总线,其被配置来在所述解码单元与所述执行单元之间进行接合。
29.根据实施方案14-28中任一项所述的处理器,其进一步包括4位控制总线,其被配置来在所述解码单元与所述执行单元之间进行接合。
30.根据实施方案14-29中任一项所述的处理器,其中所述16位立即数总线被配置来携带所述立即数常数,且所述16位立即数总线和所述4位控制总线的组合被配置来携带用于具有立即数常数的指令的编码信息,其中所述16位立即数总线携带非16位立即数常数的事件中的某些所述编码信息的过载。
31.一种存储由通用计算机执行以在处理器中执行旗标处置的指令集的非暂时性计算机可读存储介质,其包括确定代码段,其用于确定来自已发送指令的至少一个目标旗标。
32.根据实施方案31所述的非暂时性计算机可读存储介质,其进一步包括重命名代码段,所述重命名代码段用于通过分配与对应于所述至少一个目标旗标的至少一个旗标组相关的自由旗标寄存器编号来重命名所述至少一个目标旗标,其中旗标组对应于独立旗标。
33.根据权利要求20所述的非暂时性计算机可读存储介质,其中所述指令是用于设备制造的硬件描述语言(HDL)指令。
34.一种处理器,其包括解码单元。
35.根据实施方案34所述的处理器,其进一步包括16位立即数总线,所述16位立即数总线被配置来在所述解码单元与所述执行单元之间进行接合。
36.根据实施方案34-35中任一项所述的处理器,其进一步包括4位控制总线,所述4位控制总线被配置来在所述解码单元与所述执行单元之间进行接合。
37.根据实施方案34-36中任一项所述的处理器,其中所述16位立即数总线和所述4位控制总线的组合被配置来携带用于具有立即数常数的指令的编码信息,且其中所述16位立即数总线被配置为携带立即数常数。
38.根据实施方案34-37中任一项所述的处理器,其中用于具有立即数常数的指令的编码信息是使用乘法器而压缩到所述16位立即数总线和所述4位控制总线的组合中。
39.根据实施方案34-38中任一项所述的处理器,其中所述16位立即数总线的前面4位可用于携带用于某些指令的编码信息。
40.根据实施方案34-39中任一项所述的处理器,其中所述编码信息确定执行Thumb扩展、移位、零扩展、符号扩展、解码单元掩码、旋转和字节复制运算/扩充中的至少一个。
41.根据实施方案34-40中任一项所述的处理器,其中所述运算/扩充的输出和所述编码信息被多路复用且存储在立即数存储装置中以供指令使用。
42.根据实施方案34-41中任一项所述的处理器,其中运算/扩充期间产生的进位旗标被转发到旗标寄存器文件。
应理解,基于本文公开的许多变动是可行的。虽然上文在特定组合中描述了特征和元件,但是每个特征或元件可单独使用,且没有其它特征和元件或具有或不具有其它特征和元件的各种组合。
所提供的方法可在通用计算机、处理器或处理器核心中实施。合适处理器包括(例如)通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、结合DSP核心的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。这样的处理器可通过使用经处理硬件描述语言(HDL)指令的结果和包括网表的其它中间数据(这样的指令能够存储在计算机可读介质上)配置制造程序而制成。这样的处理的结果可为掩码作品,其然后在半导体制程中用来制造实施所述实施方案的方面的处理器。
本文提供的方法或流程图可在结合于用于由通用计算机或处理器执行的非暂时性可读存储介质中的计算机程序、软件或固件中实施。非暂时性可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、缓存存储器、半导体存储器设备、诸如内置硬盘和可移动磁盘的磁性介质、磁光介质和诸如CD-ROM磁盘的光学介质以及数字通用光盘(DVD)。
Claims (15)
1.一种用于旗标处置的方法,所述方法包括:
确定来自已发送指令的至少一个目标旗标;和
通过分配自由旗标寄存器编号来基于已发送指令的数据相依性而重命名所述至少一个目标旗标;
将每个已重命名的旗标写入无序旗标映射表;
将写旗标写入有序旗标映射表,其中所述写旗标由无序地执行所述已发送指令来产生;和
基于所述写旗标来执行清除运算,其中所述清除运算基于所述有序旗标映射表来恢复所述无序旗标映射表。
2.根据权利要求1所述的方法,其中不对应于所述至少一个目标旗标的旗标组在写入每个已重命名的旗标中不受影响。
3.根据权利要求2所述的方法,其中所述无序地执行所述已发送指令是基于所述已发送指令的数据相依性的。
4.根据权利要求3所述的方法,其中所述写旗标在引退循环期间被写入所述有序旗标映射表。
5.根据权利要求1所述的方法,其中所述无序旗标映射表是由源旗标组加索引。
6.根据权利要求4所述的方法,其进一步包括:
以发生零移位的条件设置损坏位;
以发生第二零移位的条件消耗所述损坏位;和
重新发送并重新执行导致消耗所述损坏位的指令;
其中在消耗所述损坏位时执行所述清除运算。
7.一种处理器,其包括:
无序旗标映射表;
有序旗标映射表;
执行单元,其被通信连接至所述无序旗标映射表和所述有序旗标映射表;和
其中所述执行单元:
确定来自已发送指令的至少一个目标旗标;
基于已发送指令的数据相依性而重命名所述至少一个目标旗标;
将每个已重命名的旗标写入所述无序旗标映射表;
将写旗标写入所述有序旗标映射表,其中所述写旗标由无序地执行所述已发送指令来产生;和
基于所述写旗标来执行清除运算,其中所述清除运算基于所述有序旗标映射表来恢复所述无序旗标映射表。
8.根据权利要求7所述的处理器,其中不对应于所述至少一个目标旗标的旗标组在所述执行单元写入每个已重命名的旗标时不受影响。
9.根据权利要求7所述的处理器,其中所述无序地执行所述已发送指令是基于所述数据相依性的。
10.根据权利要求8所述的处理器,其中所述执行单元在引退循环期间将所述写旗标写入所述有序旗标映射表。
11.根据权利要求7所述的处理器,其中所述无序旗标映射表是由源旗标组加索引。
12.根据权利要求10所述的处理器,其中:
所述执行单元进一步:
以发生零移位的条件设置损坏位;
以发生第二零移位的条件消耗所述损坏位;和
重新执行被重新发送的导致消耗所述损坏位的指令;
其中在消耗所述损坏位时执行所述清除运算。
13.根据权利要求7所述的处理器,其进一步包括:
解码单元;
16位立即数总线,其被配置来在所述解码单元与所述执行单元之间进行接合;和
4位控制总线,其被配置来在所述解码单元与所述执行单元之间进行接合,
其中所述16位立即数总线被配置来携带立即数常数,且所述16位立即数总线和所述4位控制总线的组合被配置来携带用于具有所述立即数常数的指令的编码信息,其中所述16位立即数总线携带非16位立即数常数的事件中的至少部分所述编码信息的过载。
14.一种存储由通用计算机执行以在处理器中执行旗标处置的指令集的非暂时性计算机可读存储介质,其包括:
确定代码段,其用于确定来自已发送指令的至少一个目标旗标;
重命名代码段,其用于通过分配自由旗标寄存器编号来基于已发送指令的数据相依性而重命名所述至少一个目标旗标;
写入代码段,其用于将每个已重命名的旗标写入无序旗标映射表并且用于将写旗标写入有序旗标映射表,其中所述写旗标由无序地执行所述已发送指令来产生;和
清除代码段,其用于当确定基于写旗标要求进行清除运算时,基于所述有序旗标映射表来恢复所述无序旗标映射表。
15.根据权利要求14所述的非暂时性计算机可读存储介质,其中所述指令集是能够实现设备制造的硬件描述语言指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361895715P | 2013-10-25 | 2013-10-25 | |
US61/895,715 | 2013-10-25 | ||
PCT/US2014/062180 WO2015061687A1 (en) | 2013-10-25 | 2014-10-24 | Processor and methods for immediate handling and flag handling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105765522A CN105765522A (zh) | 2016-07-13 |
CN105765522B true CN105765522B (zh) | 2020-05-19 |
Family
ID=52993620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480064146.0A Active CN105765522B (zh) | 2013-10-25 | 2014-10-24 | 用于立即数处置和旗标处置的处理器和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150121041A1 (zh) |
EP (1) | EP3060979B1 (zh) |
JP (1) | JP6491655B2 (zh) |
KR (1) | KR102161682B1 (zh) |
CN (1) | CN105765522B (zh) |
WO (1) | WO2015061687A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9798593B1 (en) | 2016-07-06 | 2017-10-24 | Workday, Inc. | Synchronization of code execution |
US10761849B2 (en) * | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
US10713213B2 (en) * | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
US11275709B2 (en) | 2017-05-02 | 2022-03-15 | Intel Corporation | Systems and methods for multi-architecture computing |
US10481910B2 (en) * | 2017-09-29 | 2019-11-19 | Intel Corporation | Apparatus and method for shifting quadwords and extracting packed words |
CN112114874B (zh) * | 2020-08-20 | 2021-10-15 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
US5764938A (en) * | 1994-06-01 | 1998-06-09 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US7114057B2 (en) * | 1998-12-30 | 2006-09-26 | Intel Corporation | System and method for storing immediate data |
CN102707927A (zh) * | 2011-04-07 | 2012-10-03 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047369A (en) * | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
US5933618A (en) * | 1995-10-30 | 1999-08-03 | Advanced Micro Devices, Inc. | Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction |
US20050071518A1 (en) * | 2003-09-30 | 2005-03-31 | Intel Corporation | Flag value renaming |
US7568089B1 (en) * | 2005-10-26 | 2009-07-28 | Sun Microsystems, Inc. | Flag management in processors enabled for speculative execution of micro-operation traces |
US7421529B2 (en) * | 2005-10-20 | 2008-09-02 | Qualcomm Incorporated | Method and apparatus to clear semaphore reservation for exclusive access to shared memory |
US7822948B2 (en) * | 2008-01-03 | 2010-10-26 | International Business Machines Corporation | Apparatus, system, and method for discontiguous multiple issue of instructions |
US8250346B2 (en) * | 2009-06-04 | 2012-08-21 | Arm Limited | Register renaming of a partially updated data granule |
US9088594B2 (en) * | 2011-02-07 | 2015-07-21 | International Business Machines Corporation | Providing to a parser and processors in a network processor access to an external coprocessor |
US8924695B2 (en) * | 2011-04-07 | 2014-12-30 | Via Technologies, Inc. | Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor |
US8972701B2 (en) * | 2011-12-06 | 2015-03-03 | Arm Limited | Setting zero bits in architectural register for storing destination operand of smaller size based on corresponding zero flag attached to renamed physical register |
US9189236B2 (en) * | 2012-12-21 | 2015-11-17 | Intel Corporation | Speculative non-faulting loads and gathers |
-
2014
- 2014-10-24 CN CN201480064146.0A patent/CN105765522B/zh active Active
- 2014-10-24 KR KR1020167013469A patent/KR102161682B1/ko active IP Right Grant
- 2014-10-24 US US14/523,718 patent/US20150121041A1/en not_active Abandoned
- 2014-10-24 WO PCT/US2014/062180 patent/WO2015061687A1/en active Application Filing
- 2014-10-24 EP EP14855674.9A patent/EP3060979B1/en active Active
- 2014-10-24 JP JP2016525922A patent/JP6491655B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5632023A (en) * | 1994-06-01 | 1997-05-20 | Advanced Micro Devices, Inc. | Superscalar microprocessor including flag operand renaming and forwarding apparatus |
US5764938A (en) * | 1994-06-01 | 1998-06-09 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US7114057B2 (en) * | 1998-12-30 | 2006-09-26 | Intel Corporation | System and method for storing immediate data |
CN102707927A (zh) * | 2011-04-07 | 2012-10-03 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3060979B1 (en) | 2020-08-05 |
EP3060979A4 (en) | 2017-07-05 |
US20150121041A1 (en) | 2015-04-30 |
JP6491655B2 (ja) | 2019-03-27 |
KR20160075639A (ko) | 2016-06-29 |
KR102161682B1 (ko) | 2020-10-05 |
EP3060979A1 (en) | 2016-08-31 |
WO2015061687A1 (en) | 2015-04-30 |
JP2016534430A (ja) | 2016-11-04 |
CN105765522A (zh) | 2016-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105765522B (zh) | 用于立即数处置和旗标处置的处理器和方法 | |
JP6351682B2 (ja) | 装置および方法 | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
US9268572B2 (en) | Modify and execute next sequential instruction facility and instructions therefor | |
JP6761565B2 (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
US9459872B2 (en) | High-word facility for extending the number of general purpose registers available to instructions | |
US20110314263A1 (en) | Instructions for performing an operation on two operands and subsequently storing an original value of operand | |
US20130305019A1 (en) | Instruction and Logic to Control Transfer in a Partial Binary Translation System | |
KR20150091462A (ko) | 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들 | |
KR20140113307A (ko) | 벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성 | |
US9817642B2 (en) | Apparatus and method for efficient call/return emulation using a dual return stack buffer | |
US10853080B2 (en) | System and method of merging partial write results for resolving renaming size issues | |
US20140365751A1 (en) | Operand generation in at least one processing pipeline | |
EP4300293A1 (en) | Add with rotation instruction and support | |
CN117591176A (zh) | 处理装置、处理方法以及计算机可读存储介质 | |
CN116339683A (zh) | 零周期存储器初始化 | |
CN116339615A (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 |