CN103377037B - 优化寄存器初始化操作 - Google Patents
优化寄存器初始化操作 Download PDFInfo
- Publication number
- CN103377037B CN103377037B CN201310233474.6A CN201310233474A CN103377037B CN 103377037 B CN103377037 B CN 103377037B CN 201310233474 A CN201310233474 A CN 201310233474A CN 103377037 B CN103377037 B CN 103377037B
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- renaming
- numerical value
- physical register
- 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 claims abstract description 17
- 230000004044 response Effects 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000002372 labelling Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000012360 testing method 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明的系统和方法有效地减少了初始化寄存器的等待时间。处理器内的寄存器重命名单元判定:在执行流水线级之前,解码的给定指令将特定数值写入目标操作数中是否已知。示例是移动立即指令,其在目标操作数中写入0值。其他示例也合适。如果作出判定,给定的物理寄存器标识符被分配给目标操作数,其中给定的物理寄存器标识符关联于所述特定数值、但不关联于物理寄存器文件中的实际物理寄存器。给定指令被标记以防止继续到执行流水线级。当所述给定的物理寄存器标识符被用于读取物理寄存器文件时,不访问实际的物理寄存器。
Description
技术领域
本发明涉及微处理器,更具体地涉及有效减少初始化寄存器的等待时间。
背景技术
微处理器通常包括重叠流水线(pipeline)级和乱序的指令执行。此外,微处理器可以支持同步多线程以提高吞吐量。这些技术利用源代码中的指令级并行(ILP)。在每个时钟周期中,微处理器理想地为每个流水线级别产出每线程最大数目的N个指令的有用执行,其中N是大于一的整数。然而,控制依赖(controldependency)和数据依赖(data dependency)将微处理器的最大吞吐量减少到每级N条指令以下。
条件控制流指令所引起的控制依赖串行化条件分叉处的指令,并沿着源代码的控制流图接合。指令的推测执行被用于执行指令的并行执行,而不管源代码中的控制依赖。
当指令操作数依赖于在程序顺序中更年轻的指令结果时,数据依赖就出现。数据依赖可出现在直线代码段中后续指令的操作数之间、或属于随后循环迭代的指令操作数之间。在直线代码中可遇到写后读(RAW)、读后写(WAR)或写后写(WAW)依赖。寄存器重命名被用于允许并行执行指令,而不管WAR和WAW依赖。然而,真正的依赖、或RAW依赖依然存在(intact)。因此,被用作目标寄存器以及随后用作源寄存器的结构寄存器引起了相关源代码段的指令执行的串行化。
具有结构寄存器的公共RAW依赖的一个示例是将寄存器初始化到特定值,随后在以后代码中使用和/或测试该寄存器。例如,特定初始值可以被分配给旗标、计数器和软件应用中的设置。初始化寄存器的一种方式是利用移动立即指令(move immediate instruction)。因此,寄存器初始化可在执行程序期间频繁出现并包括RAW依赖。
鉴于以上,需要高效的方法和机制用于有效减少初始化寄存器的等待时间。
发明内容
本发明的系统和方法有效减少初始化寄存器的等待时间。在一个实施例中,处理器包括寄存器重命名单元,被配置为接收解码指令并判定解码的给定指令是否有资格成为零周期操作。进行判定:在执行流水线级之前,解码的给定指令是否写特定数值到目标操作数是已知的。示例是移动立即指令,其将0值写入目标操作数。至少其他布尔逻辑运算和算术运算也有资格。如果作出判定,重命名寄存器单元可将物理寄存器编号分配给目标操作数,其中物理寄存器编号与该特定数值相关联。此外,物理寄存器编号可不与物理寄存器文件中的实际物理寄存器相关联。
寄存器重命名单元中的控制逻辑可标记所述给定指令,以防止它继续在处理器流水线中进行。例如,控制逻辑可标记所述给定移动指令,以指示在调度(dispatch)流水线级完成。另外,当它接收重命名寄存器编号作为待读取的源操作数时,物理寄存器文件可传送所述特定数值,而无需访问实际的物理寄存器。
参考下面的描述和附图,将进一步理解这些和其它实施例。
附图说明
图1是处理器的一个实施例的归纳框图,该处理器用零周期寄存器初始化操作来执行超标量、乱序的执行。
图2是物理寄存器文件编码的一个实施例的归纳框图。
图3是例示物理寄存器文件的一个实施例的归纳框图。
图4是例示用转换的零周期操作重命名的寄存器的一个实施例的归纳框图。
图5是例示用于创建零周期寄存器初始化操作方法的一个实施例的归纳流程图。
虽然本发明可以进行各种修改和替换形式,其具体的实施例通过附图中示例示出并在此处详细描述。然而,应该理解:附图和其详细描述并不意在将本发明限制于公开的特定形式,相反,目的在于覆盖落入由所附权利要求限定的本发明精神和范围内的所有修改、等同和替代。整个本申请中所用的词语“可”用于许可意义(即,意思是有可能),而不是强制意义(即,意思是必须)。类以地,词语“包括”、“包含”和“含有”表示包含、但不限于此。
各种单元、电路或其他组件可被描述为“被配置”执行一项或多项任务。在这样的背景下,“被配置”是结构性的归纳表示,通常是指“具有”在操作过程中执行任务或多项任务的“电路”。这样,单元/电路/组件可以被配置来执行任务,即使当单元/电路/组件目前不开启时。通常,构成对应于“被配置”的结构的电路可包括硬件电路。类似,为了便于描述,各单元/电路/组件可被描述为执行任务或多项任务。这样的描述应被解释为包括短语“被配置”。引用被配置为执行一个或多个任务的单元/电路/组件明确地希望不会导致35U.S.C§112第六段而解释为单元/电路/组件。
具体实施方式
在下面的描述中,提出许多具体细节以提供本发明的透彻理解。然而,本领域普通技术人员应该认识到:没有这些具体细节也可以实施本发明。在某些情况下,公知的电路、结构和技术没有详细示出以避免模糊本发明。
参照图1,示出了归纳框图,其例示了处理器100的一个实施例,它用零周期寄存器初始化操作执行超标量、乱序执行。处理器核心100可利用用于指令执行的多级流水线。虽然以特定顺序和特定流水线级显示功能和控制模块,但其他组合是可能的以及可设想的。此外,功能和控制模块可以占用一个以上的流水线级。大多数情况下,为每个功能模块显示单个流水线级以便于说明。
软件应用的指令可以被加载到处理器100内的i-高速缓存104。软件应用可被存储在外部磁盘存储器中、外部DRAM和/或多个外围设备中。一般来说,当软件程序员写应用程序以根据算法或方法执行工作时,程序员利用变量引用临时和结果数据。该数据利用计算机存储器中分配的空间数据。操作系统为软件应用分配存储空间。
在应用程序处理中,可将数据从存储器的分配区域加载到数据高速缓存162中。随后,物理寄存器文件164中的一个或多个结构寄存器被用于加载和存储临时和结果数据。结构寄存器在结构上可见。因此,软件程序员和/或编译器可识别软件应用中的结构寄存器。结构寄存器与给定的指令集架构(ISA)关联。处理器100的硬件包括根据给定ISA处理指令的电路。在各种实施例中,可以为给定ISA选择ARM指令集架构。另外,可选择Alpha、PowerPC,SPARC,MIPS,x86或任何其他ISA。
各种实施例中,给定ISA可被用于选择声明方式和分配存储区域的方式。给定ISA可进一步判定处理器复位的步骤和在操作模式(如,监管模式、用户模式)之间切换的步骤。这些步骤和用户应用可使用给定ISA内一个或多个指令来复位或初始化结构寄存器到特定数值。此外,这些步骤和用户应用可复位寄存器文件的任何部分,其可包括比结构可见寄存器更大数量的寄存器。复位操作完成后,这种寄存器文件的复位可引起处理器以可预测的方式运转。通常情况下,状态机用于插入操作,将特定数值写入寄存器文件中的每个寄存器。在一些实施例中,该状态机可被移除并使用如下所述的不同逻辑来替换。关于将特定值写入寄存器的操作,在一些实施例中,移动立即指令被用于将特定数值移动到寄存器文件内的给定寄存器。特定数值的一个示例是零值。其他算术指令也可用于执行复位或初始化。“r1”所指示的复位给定寄存器的一些例子如下所示:
mov r1,0 //r1←0
and r1,r1,0 //r1=r1AND0
xor r1,r1,r1 //r1=r1XOR r1
sub r1,r1,r1 //r1=r1-r1
mul r1,r1,0 //r1=r1x0
在上述示例中,首先列出跟随有源操作数的目标操作数。然而,相反的习惯是可能和可设想的。另外,对于大多数指令,列出两个源操作数。然而,如果特定结构寄存器既是目标操作数又是源操作数,一个源操作数可以列出,目标结构寄存器编号可用暗示作为第二源操作数。在上述实例中,中间值被显示为不带符号的数字。其他情况下,符号可伴随标号。例如,在ARMISA中,中间值可使用前缀“#”,诸如“#0”,而不是“0”。以上指令表示伪代码示例并和语言无关。
从上面示例代码语句可以看出,多种指令类型可用于使用特定数值(例如零值)初始化寄存器r1。上面某些指令类型可比其他指令类型具有更低的等待时间。在一个示例中,逻辑XOR和AND操作可在其他指令类型前完成。算术MUL或乘法指令可具有上述指令类型的最长延迟时间,因此不被选择用于寄存器初始化。不管指令类型,用于实现软件程序员的应用的大比例的汇编语言指令可包括寄存器初始化语句。此外,可能存在不用于初始化的软件应用语句,但结果可在实际执行语句之前知道。如上所示的算术乘法指令是一个示例。减少这些类型的语句的延迟时间可提高性能。
处理器100可包括零周期初始化逻辑124,其在和特定解码指令关联的流水线级执行之前,判定所述特定指令写给定数值到目标操作数中。例如,当指令“mov r1,0 //r1←0”被解码时,已知该指令是移动立即型,以及该指令使用数值零写入目标操作数r1。数值零是移动立即指令的立即字段。响应于该判定,零周期初始化逻辑124可以指示重命名控制逻辑122以把给定的重命名寄存器编号分配给目标操作数,其中给定的重命名寄存器编号关联于所述给定数值。
继续实施作为零周期操作的寄存器初始化指令,物理寄存器文件164可包含多个物理寄存器,每个由相关重命名寄存器编号来识别。然而,分配给上述移动立即指令的目标操作数的所述给定重命名寄存器编号可能与多个物理寄存器的任何一个都不相关。相反,所述给定的重命名寄存器编号可关联于立即字段中的数值。这种情况下,该数值是零。
在一个实施例中,物理寄存器文件164可能具有8位索引,其可用于唯一标识256个物理寄存器之一。其它实施例中,可使用不同的索引宽度和不同数量的物理寄存器。这样的其它值是可能并可设想的。在利用8位索引的实施例中,物理寄存器文件可包含少于256个实际物理寄存器。例如,物理寄存器文件164可包括120个物理寄存器,而不是256个物理寄存器。可使用8位索引识别这些120个物理寄存器,具有十进制或某些其他格式的0和119之间的值。在十六进制格式中,120个物理寄存器可由具有从h00-h77的值的8位索引识别。在各种实施方式中,8位索引255可不关联于物理寄存器文件164内的任意一个物理寄存器。相反,8位索引255或HFF可用于指示数值0。其它实施例中,可以选择除了HFF的索引来用以表示给定数值,还可以表示0以外的数值。
各种实施例中,上述移动立即指令中的目标操作数(是r1)可被重命名为P255。已知使用零值写入到目标操作数,或以其他方式对应于零值。另外,零周期初始化逻辑124可标记所述第一指令,以防止它继续在处理器流水线进行。例如,零周期初始化逻辑124可标记所述移动立即指令,以指示在调度流水线级的完成。在这样的实施例中,处理器100内功率消耗可降低,因为移动即时指令不会进行到超过调度流水线级。此外,其它指令吞吐量可增加,因为所述移动即时指令在调度流水线级之后不利用资源(队列,执行单元,分级跳动(staging flops)等等),不然会使用这些资源。类似,在其他实施例中,其他值可用于索引宽度和由索引标识的许多物理寄存器。此外,用于识别物理寄存器的索引值范围可不包括最小的值集合或连续的值范围。
在一些实施例中,重命名控制逻辑122可绕过重命名寄存器编号P255到一个或多个指令,所述一个或多个指令都比所述给定的移动立即指令在编程顺序上更年轻、并对移动立即指令具有数据依赖。另外,响应于接收重命名寄存器编号P255作为待读取的源操作数,物理寄存器文件164可输出数值零,而不读取多个物理寄存器中的任何一个。物理寄存器文件164内的读旁路逻辑166可检测到所述重命名寄存器编号P255被提供作为源操作数,它由比移动立即指令在程序顺序上更年轻的指令读取,其中更年轻的指令依赖于移动立即指令。作为响应,没有访问实际的物理寄存器。相反,读旁路逻辑166可解码重命名寄存器编号P255,并判定数值零被输送到读出数据端口。值得注意:虽然寄存器文件中逻辑被描述为响应于接收寄存器编号P255返回给定值(诸如零),在其它实施例中,不在寄存器文件内或另外部分寄存器文件的逻辑可检测所述寄存器编号并提供给定值。例如,在一些实施例中,被包含作为部分流水线数据通路的逻辑(诸如旁路多工器)可检测寄存器编号,并强制给定值(例如零)作为响应。这样的实施例中,寄存器文件本身可能不知道与特定寄存器编号关联的特殊特征。许多这样的实施例是可能的并且可设想的。
移动立即指令“mov r1,0//r1←0”的上述步骤也可被用于其他指令,在执行流水线级之前在目标操作数中写入已知的特定数值。复位结构寄存器的之前示例和其他示例如下所示:
mov r1,0 //r1←0
and r1,r1,0 //r1=r1AND 0
xor r1,r1,r1 //r1=r1XOR r1
零周期初始化逻辑124可在和特定解码指令相关的执行流水线级之前,判定:所述特定指令在其目标操作数中写入给定数值。在一个实施例中,逻辑124判定:所述指令具有用于移动立即指令的操作码,以及所述立即值是之前所述的特定数值。在其它实施例中,零周期初始化逻辑124判定该指令具有用于布尔逻辑运算的操作码,诸如AND或XOR。另外,逻辑124从源操作数判定结果0在以后的执行流水线级期间将被写入到目标操作数。例如,源操作数为0的布尔逻辑“与”操作产生的结果为0。
在另一个示例中,两个相同源操作数的布尔逻辑XOR操作产生的结果为0。因此,可使用关于寄存器的上述相似步骤,该寄存器用与实际物理寄存器不相关的特定重命名寄存器编号(诸如P255)来重命名。类似,当它接收重命名寄存器编号P255作为待读取的源操作数时,物理寄存器文件164可输送值0,而无需访问物理寄存器。类似于上述,除了P255,也可以使用不与实际物理寄存器相关的其他可用物理寄存器编号。
在进一步的实施例中,零周期初始化逻辑124判定:解码后的指令具有算术运算的操作码,并从源操作数判定结果0将在以后的执行流水线级期间被写入到目标操作数。例如,两个相同的源操作数的算术减法运算得到结果0。类似,源操作数为0的算术乘法运算产生的结果为0。因此,可使用上述关于寄存器的类似步骤,该寄存器用不和实际物理寄存器相关的特定重命名寄存器编号(诸如P255)重命名。类似,当它接收重命名寄存器编号P255作为待读取的源操作数时,物理寄存器文件164可输送值0,而无需访问物理寄存器。这些算术运算的示例再次如下所示:
sub r1,r1,r1 //r1=r1-r1
mul r1,r1,0 //r1=r1 x 0
mov r2,1 //r2←1
在又一实施例中,零周期初始化逻辑124可判定所述特定数值可能是其他值,例如1。例如,以上显示的最后指令是移动立即指令,其将数值1写入目标操作数“r2”。在一个实施例中,重命名寄存器编号P255可保留用于数值0。另一个可用的重命名寄存器编号(诸如P254)可被保留用于数值1。因此,可使用关于寄存器的上述类似步骤,该寄存器用不和实际物理寄存器相关的特定重命名寄存器编号重命名。
在上述示例中,目标操作数r2可被重新命名为重命名寄存器编号P254,其指示数值1。类似,当它接收重命名寄存器编号P254作为待读取的源操作数时,物理寄存器文件164可传送值1,而无需访问物理寄存器。在继续说明关于将寄存器初始化指令和其他特定指令转换到零周期操作的进一步细节之前,提供计算机系统100中组件的进一步描述。
软件应用的一个或多个指令可从i-高速缓存104中取出。可由地址选择逻辑102传达的地址指示所述一个或多个指令。每时钟周期可从i-高速缓存104中取出多个指令,如果没有i-高速缓存未命中。地址可由下个提取预测器106递增。分支方向预测器108可在后面的流水线级中耦合到下个提取预测器106和控制流评估逻辑112的每个。预测器108可预测指令信息,其从执行下一条顺序指令中改变指令流的流动。
解码单元110解码多个取指令的操作码。另外,所述指令可被分成微指令或微操作。如本文所用,术语“指令”和“微操作”是可以互换的,因为本发明可随使用任一实施例的结构而被使用。在一个实施例中,控制流评估块112可改变地址选择器102中的指令提取。例如,无条件分支操作码相关的绝对地址值可被发送到地址选择器102。
重命名组内依赖检测逻辑114可发现由解码单元110解码的指令之间的依赖。组内指令可包括来自一个或多个时钟周期或流水线级的解码指令。可检测诸如读后写(WAR)、写后写(WAW)和写后读(RAW)的依赖。可产生指示指令之间依赖的依赖向量。映射器116可以使用诸如可用并发性、依赖链关键性以及通信处罚的各个因素,划分分布式硬件资源之间的指令。
除了超标量微体系结构内的乱序发布指令到执行单元之外,该处理器100还可进行寄存器重命名以提高吞吐量。处理器100可包括大于一组整数和浮点结构可见寄存器的一组物理寄存器,诸如物理寄存器文件164。使用硬件,处理器100动态重命名用于目标操作数的结构寄存器标识符。响应于判定源操作数具有和重命名目标操作数相同的结构寄存器标识符,处理器100可向源操作数分配相同物理寄存器标识符,用于重命名目标操作数。重命名后可出现在指令解码之后。
当目标操作数被重新命名时,可使用空闲列表分配器130的新的物理寄存器编号。另外,可以使用未定义的物理寄存器编号,其不关联于物理寄存器文件164内的多个物理寄存器中的任意一个。相反,此物理寄存器编号关联特定数值。当指令提交时,存储该指令目标值的物理寄存器成为候选,以返回到在空闲列表分配器130中的重命名寄存器编号的空闲列表。但是,如果未定义的物理寄存器编号被用于目标操作数,在该指令的重命名流水线阶段期间,之前没有从空闲列表中移除重命名寄存器编号。类似,也没有重命名寄存器编号在该指令提交和收回期间被添加到空闲列表。
当硬件使用物理寄存器标识符来重命名了结构寄存器标识符时,硬件在数据结构中存储映射,诸如映射表。如本文所用,用于结构寄存器或物理寄存器的识别符也可称为编号。因此,结构寄存器标识符也被称为结构寄存器编号。类似,物理寄存器标识符可以被称为物理寄存器编号。用于重命名结构寄存器编号的物理寄存器编号也被称为重命名寄存器编号。
寄存器重命名单元120可包括重命名控制逻辑和阵列122以及零周期初始化逻辑124。寄存器重命名单元120可判定使用哪个物理寄存器编号来重命名指令内的目标和源操作数中都使用的结构寄存器编号。寄存器重命名单元可从空闲列表分配器130、重命名控制逻辑122内的重命名映射表、或零周期初始化逻辑124中选择候选的物理寄存器编号。
寄存器重命名单元可判定给定指令有资格被转换到如前所述的零周期操作。寄存器重命名单元120可向目标操作数分配与特定数值相关联、但不与物理寄存器文件164内实际物理寄存器相关联的重命名寄存器编号。此外,寄存器重命名单元120可以一种方式标记所述给定的指令,以防止它继续指令执行。例如,寄存器重命名单元120可标记所述移动指令在调度管线阶段完成。
在已解码并重命名指令后,相关条目可被分配在调度队列140中。指令和相关重命名标识符、程序计数器(PC)的值、依赖向量、完成标记等等可被发送到调度队列140,之后发送到调度器150。例如可通过执行核心160检测各种异常。示例包括存储器访问的保护异常,无地址转换,等等。异常可导致处理待执行程序的相应异常(例如由微码142执行)。
调度器150可调度指令以在核心160中执行。当操作数可用并且硬件资源也可用时,可将指令从调度器150乱序发出到执行核心160内的功能单元。调度器150可以在使用映射表转换重命名标识符之后,从物理寄存器文件164或从操作数旁路逻辑读取其源操作数。当使用与特定数值关联、但不与实际物理寄存器关联的特定重命名寄存器编号时,然后读旁路逻辑166可提供所述特定数值。这种情况下,没有实际的物理寄存器可以被访问。源操作数可以被提供给执行核心160。
执行核心160可包括加载/存储单元。加载/存储单元可直接或通过重排序缓冲区(rob)170连接到数据高速缓存(未示出)和存储缓冲器172。处理器100可包括用于i-高速缓存104和数据高速缓存中每一个的转换后援缓冲器(TLB),以避免当执行高速缓存访问时执行完整的存储器转换的成本。存储缓冲区172可以存储对应于存储指令的地址。rob170可从执行核心160接收结果。此外,结果可旁路到以前流水线级,用于把数据转发到已经在管线中的依赖指令。Rob170可确保按顺序提交和收回指令。
参见图2,示出包括寄存器文件标识符或编号200的表格的实施例的归纳框图。在一个实施例中,寄存器编号200是顺序编号列表,其识别可用重命名寄存器编号以用于寄存器重命名。在替代实施例中,寄存器编号不必是连续的。在一个实施例中,寄存器编号200包括用于实际物理寄存器202a-202m的标识符,以及不识别实际物理寄存器的保留标识符202n-202v。例如,寄存器编号202a可具有标识符“0”,物理寄存器号202b可具有标识符“1”,等等。
寄存器编号202a-202m可用于包括结构物理寄存器和非结构(推测)物理寄存器的寄存器文件。结构寄存器可具有结构上可见的标识符。非结构(推测)寄存器的标识符可能结构上不可见。在一些实施例中,结构物理寄存器和非结构(推测)物理寄存器的物理寄存器在寄存器文件内彼此之间混合。然后,映射机制可用于判定寄存器文件内给定结构寄存器的位置。例如,具有标识符r7的给定结构寄存器可被映射到具有标识符P23的非结构(推测)寄存器上。在稍后时间,寄存器r7可以被映射到不同的非结构(推测)寄存器,例如P12。
在一个实施例中,给定的物理寄存器文件可包括120个物理寄存器,以及关联于物理寄存器文件的给定指令集架构(ISA)可具有35个结构上可见的寄存器。这种情况下,除了35个结构上可见的寄存器,寄存器文件包括85个物理寄存器。这个示例中,与85个物理寄存器相关的寄存器编号被包括在非结构寄存器编号212中。在一个示例中,结构和非结构(推测)物理寄存器编号202a-202m可表示连续的重命名寄存器编号0到119,或h0-h77。此外,结构寄存器编号210和非结构寄存器号码212关联于实际物理寄存器。
在一个实施例中,8位索引可用来访问物理寄存器文件。在这种情况下,索引可支持最多256个物理寄存器访问。然而,由于功耗、片上情况(on-die realestate)的限制、微结构模拟和/或其他因素,物理寄存器文件可调整尺寸以小于最大索引支持的尺寸。在一个实施例中,即使物理寄存器文件小于所支持的索引大小,仍然可以使用不与实际物理寄存器关联的一个或多个索引。如前所述,不与实际物理寄存器关联的给定重命名寄存器编号可关联于特定数值。在上述示例中,索引120至255(例如,对应寄存器编号202n-202v)不识别实际物理寄存器。因此,这些可用的重命名寄存器编号可用于重命名目标操作数,已知在执行流水线级之前使用特定数值写所述目标操作数。例如,物理寄存器编号255或hFF可能与数值0有关。物理寄存器编号254或hFE可能与数值1有关。虽然物理寄存器编号被表示为范围在0和多位索引表示的最大值之间的连续值,但保留寄存器编号214内物理寄存器编号和数值的其他组合是可能以及可设想的。
现在转向图3,示出物理寄存器文件300的实施例的归纳框图。如图所示,物理寄存器文件300包括阵列320,多个解码器310,读出逻辑和数据驱动器370以及读旁路逻辑380。该阵列320包括多个单元,其中每个单元330可存储相关寄存器的一位信息。该信息可以包括状态信息和对应于操作数的数据。关于处理器的微架构,物理寄存器文件300是一大片寄存器。如前所述,这些寄存器的一部分是对软件编程器和编译器可见的结构寄存器。其余寄存器可以在寄存器重命名过程中使用的非结构寄存器。
在图3可以看出,物理寄存器文件300包含许多电路,物理寄存器文件300的访问可消耗可观的功率。此外,在接收相关输出或响应之前,所述访问可包括可观的延迟。然而,对于特定读操作,读旁路逻辑380可提供读出数据384,而无需解码器310、字线驱动器318、阵列320和正被使用的读出逻辑370内的电路。例如,响应于读旁路逻辑380接收读寄存器标识符382,其识别不与实际物理寄存器关联、但与特定数值关联的保留物理寄存器编号,读出旁路逻辑在读出数据372指示的输出线上提供所述特定数值。不使用解码器310、字线驱动器318、阵列320和读出逻辑370内的电路。因此,对于这种类型的访问减少了功耗和等待时间。
在操作过程中,物理寄存器文件300可接收读寄存器标识符382。读寄存器标识符382可以是用于读操作的源操作数或者写操作的目标操作数的重命名寄存器编号(物理寄存器编号)。解码器310和字线区动器318可以接收控制信号(未示出),其指示访问是用于读操作或写操作。比外,解码器310和字线驱动器318可通过读旁路逻辑380接收线382上的读寄存器标识符。可替换地,解码器310和字线驱动器318可直接收线382上的读寄存器标识符。然而,读旁路逻辑380可将控制信号发送到解码器310和字线驱动器318,判定该电路是否产生发送到阵列320的有效输出。例如,如果读旁路逻辑380判定线382上的读寄存器标识符对应于零周期寄存器初始化操作,则逻辑380可防止元件310-370内的电路被用于所述访问。相反,逻辑380可在线384上提供相关的读出数据。
阵列320通常被实现为具有专用读写端口的片上静态随机存取存储器(RAM)。单元330的一个实施方式示于图3。通常情况下,每个解码器312-316包括一系列的布尔符合逻辑“与”门,其驱动字线区动器318内的相应字线逻辑。在所示实施例中,解码器310包括两个读解码器312和314以及一个写译码器316。因此,阵列320内的给定单元330包括两个读字线,这两个读字线是线358上的字线0和线360上的字线1。此外,单元330包括两个读端口,是线350上的读端口0和线352上的读端口1。同样地,单元330包括线356上的单个写入字线。其它实施例中,可以使用不同数目的读解码器、读端口、写解码器和写入字线。
如图所示,每个单元330具有用于在单元330内存储信息的背靠背反相器332和334。每个反相器332和334的输出可提供单元相关位值或该位值的反相版本。逻辑高值可相当于电源参考值。逻辑低值可相当于接地参考值。
在写操作期间,写字线被宣布到特定行的线356上的逻辑高值。字线驱动器318宣布所述写字线。块370中的数据驱动电路将适当的数据值放置在线348上写入位0和线354上写入位1中的每一个。这些值使得连接到反相器对332和334的两个节点之一被放电到低逻辑值,或者通过包括nmos晶体管340和342的晶体管堆叠、或者通过包括nmos晶体管344和346的晶体管堆叠。
当读旁路逻辑380不处理读操作时,使用元件310-370内的电路。在该读操作中,线358和360上的一个或两个读字线被宣布为高逻辑值。nmos晶体管336和338中的一个或两个被打开。因此,由一对反相器332和334存储的状态被提供给线350和352上的一个或两个读端口。线350和352上的值被提供到电路块370中的读出逻辑。该读出逻辑可包括锁存器、触发器和读出放大器中的一个或多个。从方框图和物理寄存器文件300的电路描述可以看出,当读旁路逻辑380能提供零周期寄存器初始化操作的读出数据时,可避免与电路元件310-370相关的功率消耗。此外,读操作的等待时间可减少。
现在转向图4,示出具有零周期寄存器初始化操作的寄存器重命名400的实施例的归纳框图。展开的循环的简单示例包括指令410a。在这个示例中,首先在指令助记符后列出目标操作数,接着一个或多个源操作数。寄存器使用一般称谓“r”,跟随有寄存器标识符。例如,寄存器1由“r1”表示。如下示出用于使用指令410a得到展开代码的原始循环:
mov r1,0
mov r2,1
mov r3,10
xor r4,r4,r4
mov r5,0
loop:
add r1,r1,r2
add r4,r4,r3
add r5,r1,r5
add r2,r2,1
sub r3,r3,1
jnz loop
虽然这里使用循环,但循环对于判定寄存器初始化操作可能是零周期寄存器初始化操作是不必要的。该判定和随后创建零周期操作可被用于不同类型的代码。指令410a利用标记为r1-r5的五个结构寄存器。这些物理寄存器编号关联于实际物理寄存器。指令410a表示伪代码示例并和语言无关。映射表420a一般显示数据结构,用于存储结构寄存器编号和物理寄存器编号之间的映射。
空闲列表430a显示数据结构,用于指示可用于重命名目的的非结构物理寄存器编号。这些物理寄存器编号也关联于实际物理寄存器。在这个示例中有14个物理寄存器名称,该名称使用跟随有寄存器标识符的一般称谓“p”。空闲列表430a显表示每个物理寄存器p1-p14可用于寄存器重命名。
保留列表432示出用于重命名的至少一个物理寄存器编号的组。在这个示例中,有4个物理寄存器名称,该名称使用一般称谓“p”,跟随有寄存器标识符。在这个示例中,这些寄存器标识符的编号高于空闲列表430a中的物理寄存器名称。和空闲列表430a中的物理寄存器名称不同,保留列表432中的每个物理寄存器名称与实际物理寄存器不相关联。相反,保留列表432中的物理寄存器名称与具体数值相关联。例如,在物理寄存器名称p15可与数值0关联。类似,物理寄存器名称p16可与数值1关联。
在一个示例中,4位索引可用于标识物理寄存器编号。因此,诸如物理寄存器名称p1-p16的16个不同物理寄存器编号可由4位索引识别。但是,在物理寄存器文件中只有14个实际物理寄存器。现代的处理器使用比这个示例中所提供的更大的量。这个简单示例用于说明的目的。用5个结构寄存器,例如r1-r5,可用前5个物理寄存器名称p1-p5发生一对一的重命名。有多达9个物理寄存器。因此,物理寄存器名称p6-p14是非结构物理寄存器名称,但每个仍与实际物理寄存器相关。其余2个物理寄存器名称15和p16也可用于表示特定数值。在这个示例中,数值分别是0和1。
参照指令410b中,这些指令和指令410a相同,但是,寄存器重命名为每个指令发生。重命名过程可重命名给定流水线级中的一个或多个指令。每个流水线级的任意数量的指令可被选择同时处理。映射表420b存储每个指令的映射。映射表420b显示每个指令的结构寄存器编号和物理寄存器编号和保留寄存器编号之间的存储映射。空闲列表430b显示:在重命名每条指令410b之后,每个物理寄存器p7-p14仍然是可用的。每个物理寄存器p1-p6已用于重命名指令410b中的结构寄存器r1-r5。
保留列表432显示在重命名每条指令410b之后每个保留的物理编号p15-p16仍然可用。然而,映射表420b显示每个保留物理编号p15和p16已用于重命名一个或多个结构寄存器r1-r5。每个保留物理编号p15-p16与数值而非实际物理寄存器相关联。因此,为了重命名的目的,每个保留物理编号p15-p16没有从可用改变为不可用。保留物理编号p15-p16中任意给定的一个可用于重命名第一指令中的第一结构寄存器,之后用来重命名更年轻的第二指令中的第二结构寄存器,虽然第一指令还未被提交。
看指令410b,第一指令有资格被转换为零周期寄存器初始化操作。该mov指令是移动立即操作并将数值0写入到目标操作数,即,寄存器r1。保留的物理寄存器编号p15与数值0相关联。因此,寄存器r1被重新命名为p15。此映射示于映射表420b中。该mov指令可被标记以防止它在处理器中进行到流水线级。例如,mov指令可被标记为在调度流水线级完成。在该实施例中,可减少处理器内的功率消耗,因为mov指令不会进行到超过调度流水线级。此外,其它指令的吞吐量可增加,因为mov指令在调度流水线级之后不利用多个资源(否则会使用)。另外,空闲列表430b的大小增加,因为每个物理寄存器p1-p14仍可用于寄存器重命名。增加的空闲列表大小也可能有助于改善性能。
重命名逻辑可在比该第一mov指令程序顺序更年轻的指令中,用和寄存器r1相同的识别符向源操作数分配所述保留的物理寄存器编号p15。这种绕过物理寄存器编号p15可发生,直到更年轻的指令使用寄存器r1作为目标操作数,其不知道将被写入数值0。当这些更年轻指令访问所述物理寄存器文件以为了重命名到p15的源操作数时,物理寄存器文件中的读旁路逻辑可在数据输出线上传送数值0。在对应于被重命名到p15的源操作数的读操作期间,不可访问实际物理寄存器。
类似地,第二指令有资格被转换为零周期寄存器初始化操作。该mov指令是移动立即操作并将数值1写入到目标操作数,其是寄存器r2。保留物理寄存器编号p16和数值一关联。因此,寄存器r2被重命名为p16。此映射显示在映射表420b中。此第二mov指令可被标记以防止它继续进行到处理器中的执行流水线级。类似于上面讨论的寄存器r1重命名,可以得到诸如降低功耗和提高指令吞吐量的各种好处,因为第二mov指令不会前进通过执行流水线级。
重命名逻辑可在比该第二mov指令程序顺序更年轻的指令中,用和寄存器r2相同的识别符向源操作数分配所述保留物理寄存器编号p16。这种绕过物理寄存器编号P16可发生,直到更年轻的指令使用寄存器r2作为目标操作数,其不知道将被写入数值1。当这些更年轻指令访问所述物理寄存器文件以为了被重命名到p16的源操作数时,物理寄存器文件中的读旁路逻辑可在数据输出线上传送数值1。在对应于被重命名到p16的源操作数的读操作期间,不可访问实际物理寄存器。
第三指令是移动立即操作,但在本例中,它没有资格被转换为零周期寄存器初始化操作。第三指令将数值10写入到寄存器r3。在这个示例中,保留的物理寄存器编号p15-p93没有被关联于数值10。因此,寄存器r3被重命名为物理寄存器号p1。此映射显示在映射表420b中。
第四指令是布尔逻辑XOR操作。每个源操作数具有相同的结构寄存器名称,即r4。因此,已知结果是0,用数值0写入到目标操作数。有时,软件程序员可能有意使用布尔逻辑XOR操作以复位给定寄存器,而不是用移动即时操作。在某些硬件实现中,已知布尔逻辑XOR操作与移动立即操作相比,具有较小等待时间。对于第四指令,目标操作数具有和源操作数相同的结构寄存器名称,但所述指令有资格成为此特征之外的零周期操作。保留物理寄存器编号p15被关联于数值0。因此,寄存器r4被重命名为p15。此映射显示在映射表420b中。此外,布尔逻辑XOR指令也可被标记,以防止它进行到处理器中的执行流水线级。访问物理寄存器文件期间,旁路重命名寄存器编号并使用读旁路逻辑也可发生,正如之前所述的关于第一mov指令的保留物理寄存器p15。
第五指令有资格转换为零周期寄存器初始化操作。该mov指令是移动立即操作并将数值0写入到目标操作数,即,寄存器r5。之前对于第一mov指令所述的重命名、标记、旁路和物理寄存器文件存取步骤适用于该第五指令。
第六指令是算术ADD操作。该指令没有资格转换为零周期操作。由于访问映射表420和旁路所述重命名值,每个源操作数r1和r2被重命名为p15和p16。目标操作数被重命名为p2。对于第七至第十指令中的每个来说,采取第六指令的类似步骤。第七至第十指令中任一个都没资格转换为零周期操作。
现在参看图5,显示创建零周期操作的方法500的一个实施例的归纳流程图。在块502,选择不关联于实际物理寄存器的给定寄存器识别符,以对应于特定数值(例如,被分配以表示特定数值)。如果已达到最后特定数值(条件块504),则在块506中可处理程序指令。该指令可以被编译、从存储器取出、解码和执行。为了讨论目的,本实施例中的步骤以特定顺序示出。然而,在其它实施例中,某些步骤可以不同于所示的顺序发生,某些步骤可以同时执行,某些步骤可以与其它步骤相结合,以及某些步骤可以不存在。
在解码之后,给定指令可以被判定为用于合格数值的寄存器初始化操作。检查操作码和源操作数,以作出此判定。控制逻辑可以在关联特定解码指令的执行流水线级之前判定:该特定指令将合格数值写入其目标操作数。在一个实施例中,该逻辑判定该指令具有移动立即指令的操作码,以及该立即值是合格数值。
在一些实施例中,一个或多个合格数值之一是值0。在这种情况下,控制逻辑可判定指令具有布尔逻辑运算的操作码,诸如AND或XOR。此外,逻辑从源操作数判定:结果0在以后执行流水线级期间将被写入到目标操作数。例如,源操作数0的布尔逻辑AND运算产生结果0。类似,两个相等的源操作数的布尔逻辑XOR运算产生结果0。此外,控制逻辑可判定:解码指令具有特定算术运算的操作码,以及源操作数的特定值可导致结果0在以后执行流水线级期间被写入到目标操作数。例如,两个相同源操作数的算术减法运算产生结果0。类似,源操作数为0的算术乘法运算产生结果0。
对于判定在之后执行流水线级中结果0被写入目标操作数的上述情况的至少每一个中,可使用之前所述类似步骤,其关于使用不与实际物理寄存器关联的特定重命名寄存器识别符的寄存器重命名。如果给定指令不被判定为合格数值的寄存器初始化操作(条件块508),方法500的控制流可以返回到块506。例如,给定指令的源操作数和目标操作数可以用与物理寄存器文件中的实际物理寄存器关联的重命名寄存器识别符来重命名。程序指令的处理继续进行。
如果给定指令被判定为合格数值的寄存器的初始化操作(条件块508),则在块510,目标结构寄存器标识符可以用被分配到合格数值的寄存器标识符来重命名。该寄存器标识符不与物理寄存器文件中的实际物理寄存器相关联。在后面的流水线级中,物理寄存器文件可传送合格数值的值,而无需访问实际物理寄存器,当它接收该特定重命名寄存器标识符作为要读取的源操作数时。在一个实施例中,合格数值是零。然而,其他数值是可能的并且拟作为合格数值。在块512,寄存器初始化操作可被标记以防止它在处理器流水线中进行。例如,操作可被标记为在调度流水线级处完成。如上所述,因为寄存器初始化操作不进行通过流水线,可降低处理器内功率消耗。此外,其它指令吞吐量可增加,因为寄存器初始化操作在以后流水线阶段不利用多种资源(队列,执行单元,分级跳动,等等)。此外,这种情况下,空闲列表的大小增加,因为没有物理寄存器用于寄存器重命名。增加空闲列表的大小也可有助于改善性能。
虽然已相当详细地描述了上面的实施例,一旦完全理解上述公开,许多变化和修改对于本领域技术人员将变得显而易见。目的在于:下列权利要求被解释为包含所有这些变化和修改。
Claims (16)
1.一种处理器,包括:
解码器,被配置为解码被取出的指令;
物理寄存器文件,其包含多个物理寄存器;以及
寄存器重命名单元,被配置为接收所解码的指令;
其中,响应于检测到指令被配置为向该指令的目标操作数所识别的目标写入给定数值,寄存器重命名单元被配置为向所述目标操作数分配与所述给定数值关联的给定的重命名寄存器标识符;
其中响应于检测到所述给定的重命名寄存器标识符,所述处理器被配置为输送所述给定数值而不读取所述多个物理寄存器中的任何一个。
2.如权利要求1所述的处理器,其中响应于所述检测,存储指示了指令完成的指示。
3.如权利要求1所述的处理器,其中所述寄存器重命名单元被配置为分配所述给定的重命名寄存器标识符,以由多个指令并发使用。
4.如权利要求1所述的处理器,其中响应于所述检测,避免在执行流水线级中执行所述指令。
5.一种优化寄存器初始化操作的方法,包括:
解码被取出的指令;以及
维护包含多个物理寄存器的物理寄存器文件;
响应于检测到指令被配置为向由目标操作数识别的位置写入数值,向所述目标操作数分配给定的重命名寄存器标识符,其中所述给定的重命名寄存器标识符和所述数值相关联;
响应于检测到所述给定的重命名寄存器标识符,输送所述数值而不读取所述多个物理寄存器中的任何一个。
6.如权利要求5所述的方法,其中响应于所述检测,避免在执行流水线级中执行所述指令。
7.如权利要求5所述的方法,其中所述检测包括:检测(i)移动指令的操作码及(ii)所述移动指令的立即源操作数具有和所述数值相同的值。
8.如权利要求5所述的方法,其中所述给定的重命名寄存器标识符不与物理寄存器关联。
9.如权利要求5所述的方法,其中检测所述指令被配置为在所述目标操作数中写入所述数值包括:检测(i)每个源操作数标识符是相同的值,及(ii)操作码对应于预定操作。
10.一种如权利要求1所述的处理器,其中所述寄存器重命名单元包括:
第一接口,被配置为接收被解码的指令;
第二接口,耦合到调度单元,该调度单元被配置为将指令调度到调度器;以及
零周期初始化逻辑;
其中检测所述指令被配置为在所述目标操作数中写入所述数值包括:所述寄存器重命名单元检测(i)立即源操作数具有和所述数值相同的值,及(ii)操作码表示以下操作中的至少一个:算术相乘、移动、和布尔逻辑AND。
11.如权利要求10所述的处理器,其中所述给定的重命名寄存器标识符与物理寄存器不相关联。
12.如权利要求10所述的处理器,其中检测所述指令被配置为写入所述数值包括:检测(i)移动指令的操作码及(ii)该移动指令的立即源操作数具有和所述数值相同的值。
13.如权利要求10所述的处理器,其中检测所述指令被配置为在所述目标操作数中写入所述数值包括:检测(i)每个源操作数标识符是相同值及(ii)操作码指示预定操作。
14.一种优化寄存器初始化操作的装置,包括:
控制逻辑;以及
物理寄存器文件,包括多个物理寄存器,每个物理寄存器由关联的重命名寄存器标识符所识别;
其中,响应于检测指令被配置为在目标操作数中写入数值,所述控制逻辑被配置为向所述目标操作数分配给定的重命名寄存器标识符,其中所述给定的重命名寄存器标识符被映射到所述数值;
其中响应于接收所述给定的重命名寄存器标识符,所述物理寄存器文件被配置为提供所述数值而不读取所述多个物理寄存器中的任何一个。
15.如权利要求14所述的装置,其中响应于所述检测,所述控制逻辑被进一步配置为防止在执行流水线级中执行所述指令。
16.如权利要求15所述的装置,进一步包括旁路逻辑,其被配置为检测所述指令并提供所述数值、而不访问所述寄存器文件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/460,268 US9430243B2 (en) | 2012-04-30 | 2012-04-30 | Optimizing register initialization operations |
US13/460,268 | 2012-04-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103377037A CN103377037A (zh) | 2013-10-30 |
CN103377037B true CN103377037B (zh) | 2016-08-10 |
Family
ID=48190184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310233474.6A Active CN103377037B (zh) | 2012-04-30 | 2013-04-28 | 优化寄存器初始化操作 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9430243B2 (zh) |
EP (1) | EP2660715B1 (zh) |
JP (1) | JP5853303B2 (zh) |
KR (1) | KR101502682B1 (zh) |
CN (1) | CN103377037B (zh) |
BR (1) | BR102013010540B1 (zh) |
TW (1) | TWI507980B (zh) |
WO (1) | WO2013165752A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112012007058T5 (de) * | 2012-12-19 | 2015-08-06 | Intel Corporation | Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors |
US9251300B2 (en) * | 2013-10-25 | 2016-02-02 | Altera Corporation | Methods and tools for designing integrated circuits with auto-pipelining capabilities |
US20170083313A1 (en) * | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
US10528355B2 (en) * | 2015-12-24 | 2020-01-07 | Arm Limited | Handling move instructions via register renaming or writing to a different physical register using control flags |
US10949202B2 (en) | 2016-04-14 | 2021-03-16 | International Business Machines Corporation | Identifying and tracking frequently accessed registers in a processor |
US10007590B2 (en) | 2016-04-14 | 2018-06-26 | International Business Machines Corporation | Identifying and tracking frequently accessed registers in a processor |
US10255072B2 (en) * | 2016-07-01 | 2019-04-09 | Intel Corporation | Architectural register replacement for instructions that use multiple architectural registers |
GB2563582B (en) * | 2017-06-16 | 2020-01-01 | Imagination Tech Ltd | Methods and systems for inter-pipeline data hazard avoidance |
US10915317B2 (en) * | 2017-12-22 | 2021-02-09 | Alibaba Group Holding Limited | Multiple-pipeline architecture with special number detection |
JP7131236B2 (ja) * | 2018-09-20 | 2022-09-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
CN111638911A (zh) * | 2019-03-01 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种处理器、指令执行设备及方法 |
US10896041B1 (en) * | 2019-09-25 | 2021-01-19 | Microsoft Technology Licensing, Llc | Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices |
US11119772B2 (en) * | 2019-12-06 | 2021-09-14 | International Business Machines Corporation | Check pointing of accumulator register results in a microprocessor |
CN111414196B (zh) * | 2020-04-03 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种零值寄存器的实现方法及装置 |
US11113067B1 (en) * | 2020-11-17 | 2021-09-07 | Centaur Technology, Inc. | Speculative branch pattern update |
CN112416434B (zh) * | 2020-12-03 | 2023-02-17 | 海光信息技术股份有限公司 | 物理寄存器分配方法、物理寄存器分配装置和电子设备 |
US11531546B2 (en) | 2021-03-08 | 2022-12-20 | International Business Machines Corporation | Hexadecimal floating point multiply and add instruction |
CN113703832B (zh) * | 2021-09-10 | 2024-06-11 | 中国人民解放军国防科技大学 | 一种立即数转移指令的执行方法、装置及介质 |
CN114116229B (zh) * | 2021-12-01 | 2023-03-31 | 北京奕斯伟计算技术股份有限公司 | 调节指令流水线的方法及装置、存储器和存储介质 |
CN115640047B (zh) * | 2022-09-08 | 2024-01-19 | 海光信息技术股份有限公司 | 指令操作方法及装置、电子装置及存储介质 |
CN116339830B (zh) * | 2023-05-26 | 2023-08-15 | 北京开源芯片研究院 | 一种寄存器管理方法、装置、电子设备及可读存储介质 |
CN117289995B (zh) * | 2023-10-11 | 2024-05-10 | 海光信息技术股份有限公司 | 指令处理方法以及处理器 |
CN117555600B (zh) * | 2023-10-20 | 2024-08-23 | 海光信息技术(成都)有限公司 | 用于数据通路的操作方法、计算装置及存储介质 |
CN117931294B (zh) * | 2024-03-22 | 2024-07-16 | 芯来智融半导体科技(上海)有限公司 | 指令处理设备和处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696957A (en) * | 1991-05-17 | 1997-12-09 | Ricoh Company, Ltd | Integrated circuit comprising a central processing unit for executing a plurality of programs |
WO2000004444A1 (en) * | 1998-07-14 | 2000-01-27 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
US6505293B1 (en) * | 1999-07-07 | 2003-01-07 | Intel Corporation | Register renaming to optimize identical register values |
US6553483B1 (en) * | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435753A (en) | 1980-10-31 | 1984-03-06 | International Business Machines Corporation | Register allocation system using recursive queuing during source code compilation |
DE69130588T2 (de) | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
JP3206960B2 (ja) | 1991-05-17 | 2001-09-10 | 株式会社リコー | 拡張中央演算処理装置 |
US5452426A (en) | 1994-01-04 | 1995-09-19 | Intel Corporation | Coordinating speculative and committed state register source data and immediate source data in a processor |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
GB2317464A (en) | 1996-09-23 | 1998-03-25 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6122656A (en) | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
US6594754B1 (en) * | 1999-07-07 | 2003-07-15 | Intel Corporation | Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters |
US7631207B1 (en) * | 2006-04-21 | 2009-12-08 | Sun Microsystems, Inc. | Reducing power consumption for processing of common values in microprocessor registers and execution units |
US20100274961A1 (en) | 2009-04-22 | 2010-10-28 | Golla Robert T | Physically-indexed logical map table |
GB2478726B (en) | 2010-03-15 | 2013-12-25 | Advanced Risc Mach Ltd | Mapping between registers used by multiple instruction sets |
-
2012
- 2012-04-30 US US13/460,268 patent/US9430243B2/en active Active
-
2013
- 2013-04-23 WO PCT/US2013/037793 patent/WO2013165752A1/en active Application Filing
- 2013-04-24 EP EP13165090.5A patent/EP2660715B1/en active Active
- 2013-04-28 CN CN201310233474.6A patent/CN103377037B/zh active Active
- 2013-04-29 BR BR102013010540-6A patent/BR102013010540B1/pt active IP Right Grant
- 2013-04-29 TW TW102115293A patent/TWI507980B/zh active
- 2013-04-30 KR KR1020130048660A patent/KR101502682B1/ko active IP Right Grant
- 2013-04-30 JP JP2013095092A patent/JP5853303B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696957A (en) * | 1991-05-17 | 1997-12-09 | Ricoh Company, Ltd | Integrated circuit comprising a central processing unit for executing a plurality of programs |
WO2000004444A1 (en) * | 1998-07-14 | 2000-01-27 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
US6505293B1 (en) * | 1999-07-07 | 2003-01-07 | Intel Corporation | Register renaming to optimize identical register values |
US6553483B1 (en) * | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
Also Published As
Publication number | Publication date |
---|---|
EP2660715A3 (en) | 2014-05-21 |
EP2660715B1 (en) | 2015-10-07 |
KR20130122587A (ko) | 2013-11-07 |
KR101502682B1 (ko) | 2015-03-13 |
TWI507980B (zh) | 2015-11-11 |
JP2013232196A (ja) | 2013-11-14 |
US20130290680A1 (en) | 2013-10-31 |
BR102013010540A2 (pt) | 2015-10-13 |
WO2013165752A1 (en) | 2013-11-07 |
BR102013010540B1 (pt) | 2021-07-06 |
JP5853303B2 (ja) | 2016-02-09 |
TW201403472A (zh) | 2014-01-16 |
US9430243B2 (en) | 2016-08-30 |
CN103377037A (zh) | 2013-10-30 |
EP2660715A2 (en) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103377037B (zh) | 优化寄存器初始化操作 | |
Akkary et al. | A dynamic multithreading processor | |
US5918005A (en) | Apparatus region-based detection of interference among reordered memory operations in a processor | |
US20170097891A1 (en) | System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions | |
CN105808208B (zh) | 具有条件指令的微处理器及其处理方法 | |
US7237094B2 (en) | Instruction group formation and mechanism for SMT dispatch | |
JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
US6393555B1 (en) | Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
US7526583B2 (en) | Method and apparatus to launch write queue read data in a microprocessor recovery unit | |
WO2000033183A1 (en) | Method and structure for local stall control in a microprocessor | |
WO2000033183A9 (en) | Method and structure for local stall control in a microprocessor | |
CN101147125A (zh) | 用于直接累积未调准数据的可写入分段字的架构型寄存器 | |
US11188341B2 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
US20160011876A1 (en) | Managing instruction order in a processor pipeline | |
CN107832083A (zh) | 具有条件指令的微处理器及其处理方法 | |
CN101169710A (zh) | 对状态寄存器进行重命名的方法和使用该方法的处理器 | |
US20160011877A1 (en) | Managing instruction order in a processor pipeline | |
US20220413860A1 (en) | System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction | |
US5812812A (en) | Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue | |
US20020056034A1 (en) | Mechanism and method for pipeline control in a processor | |
US5841999A (en) | Information handling system having a register remap structure using a content addressable table | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
US6490653B1 (en) | Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system | |
Jaleel et al. | Improving the precise interrupt mechanism of software-managed TLB miss handlers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |