CN102750130B - 分配计数器以追踪寄存器映射的方法和系统 - Google Patents
分配计数器以追踪寄存器映射的方法和系统 Download PDFInfo
- Publication number
- CN102750130B CN102750130B CN201210103724.XA CN201210103724A CN102750130B CN 102750130 B CN102750130 B CN 102750130B CN 201210103724 A CN201210103724 A CN 201210103724A CN 102750130 B CN102750130 B CN 102750130B
- Authority
- CN
- China
- Prior art keywords
- register
- counter
- instruction
- physical register
- specific physical
- 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
- 238000013507 mapping Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims description 61
- 230000004044 response Effects 0.000 claims description 45
- 230000000694 effects Effects 0.000 claims description 39
- 230000003760 hair shine Effects 0.000 claims description 5
- 230000007423 decrease Effects 0.000 claims description 4
- 208000036335 preeclampsia/eclampsia 1 Diseases 0.000 description 55
- 238000010586 diagram Methods 0.000 description 42
- 230000008569 process Effects 0.000 description 41
- 238000012545 processing Methods 0.000 description 24
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000015654 memory Effects 0.000 description 7
- 230000010076 replication Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 230000013011 mating Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000036755 cellular response Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/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/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
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)
- Executing Machine-Instructions (AREA)
Abstract
本发明提出一种分配计数器以追踪逻辑寄存器到物理寄存器的映射的方法和系统。一种乱序处理器的映射器单元分配当前在计数器空闲池中的特定计数器,以计数逻辑寄存器到来自多个物理寄存器之中的特定物理寄存器的映射的数目,所述分配响应于映射器单元将至少一个逻辑寄存器映射到特定物理寄存器而对指令的执行。计数器的数目小于物理寄存器的数目。映射器单元响应于所计数的逻辑寄存器到特定物理寄存器的映射的数目减小到小于最小值,而将该特定计数器返回到计数器空闲池。
Description
技术领域
本发明总体涉及微处理器性能,更具体地涉及从计数器池中向物理寄存器动态地分配计数器,以追踪逻辑寄存器到物理寄存器的映射,用于基于映射器的指令执行。
背景技术
处理器可以执行一种或多种类型的指令。一种类型的指令可能需要将一个寄存器的内容复制到另一个寄存器。例如,移动寄存器类型指令是一种涉及将一个寄存器中的值复制到另一个寄存器的指令的类型。在一个示例中,需要将一个寄存器的内容复制到另一寄存器的指令可以用于保留响应于一个指令可能会改变、但仍可能被后续指令需要的数据。因为诸如移动寄存器指令的指令需要频繁地将一个寄存器的内容复制到另一个寄存器,所以处理器的映射器单元可以通过将多个逻辑寄存器映射到单个物理寄存器来执行移动寄存器指令,以有效地将一个逻辑寄存器的内容复制到另一逻辑寄存器,而不必将内容从一个物理寄存器物理地移动到另一物理寄存器。
发明内容
当乱序(out-of-order)处理器的映射器通过将多个逻辑寄存器映射到单个物理寄存器而执行移动寄存器指令时,本发明高效地追踪当前映射到物理寄存器的逻辑寄存器的数量的计数,使得被映射的物理寄存器将不被释放,直到不存在逻辑寄存器到该物理寄存器的剩余映射为止。具体地,对于基于映射器单元的移动寄存器指令的执行,映射器单元高效地计数当前映射到单个物理寄存器的逻辑寄存器的数目,对于每一个物理寄存器不需要额外的硬件开销。
根据本发明的一个实施例,乱序处理器的映射器单元执行需要复制一个寄存器到另一个寄存器的指令,诸如移动寄存器指令,而绕开发出队列(issuequeue)和执行单元。映射器单元仅当需要时保持可用于动态分配到特定物理寄存器的追踪计数器的池,以追踪为了映射器单元的指令执行而被映射到特定物理寄存器的逻辑寄存器映射的数量。
在一个实施例中,响应于映射器单元将至少一个逻辑寄存器映射到多个物理计数器中的特定物理计数器的指令的执行,映射器单元分配当前在计数器空闲池中的特定计数器,以计数逻辑计数器到该特定物理计数器的映射的数量。计数器的数目少于物理寄存器的数量。映射器单元响应于逻辑寄存器到特定物理寄存器的映射的所计数的数量递减(decrement)到小于最小值,而将特定计数器返回到计数器空闲池。
附图说明
所附权利要求中陈述了本发明的一个或多个实施例的被认为是新颖的特征。但通过与附图一起阅读时参照示例实施例的以下详细说明,将最好地理解本发明的一个或多个实施例本身,其中
图1是示出乱序微处理器的框图,该乱序微处理器为了基于映射器的移动寄存器指令的执行而将来自计数器空闲池的计数器动态地分配到物理计数器,以计数到物理寄存器的逻辑寄存器映射;
图2是示出用于追踪逻辑寄存器到物理寄存器的活动映射的计数器的元素的一个示例的框图;
图3是示出由用于控制在需要时动态地分配给PREG的活动追踪计数器的计数的映射器单元实施的单元的一个示例的框图;
图4是示出映射器单元为了移动寄存器指令的执行而进行的处理计数器到PREG的动态分配的步骤的一个示例的框图;
图5是示出由实施随机访问存储器(RAM)映射器和内容可寻址存储器(CAM)映射器以执行移动寄存器指令的映射器单元进行的寄存器映射中的物理寄存器的原始分配的示例的框图;
图6是示出由实施RAM映射器和CAM映射器以执行移动寄存器指令、并且为了移动寄存器指令的执行而将计数器动态地分配到物理寄存器的映射器单元进行的移动寄存器指令的执行的示例的框图;
图7是示出跟随移动寄存器指令的指令的示例的框图,所述移动寄存器指令分配到该移动寄存器指令中命名的LREG;
图8是示出跟随移动寄存器指令的附加指令的示例的框图,所述移动寄存器指令分配到该移动寄存器指令中命名的LREG;
图9是示出其中可以实施和监视微处理器的计算机系统的一个示例的框图;
图10是示出用于映射器单元确定是为分派的移动寄存器指令动态地分配计数器还是在所分派的移动寄存器指令中递增(increment)追踪映射的PREG的现有计数器的计数的处理和程序的高层逻辑流程图;
图11是示出用于映射器单元在分派移动寄存器指令时预留计数器的处理和程序的高层逻辑流程图;
图12是示出用于映射器单元管理PREG解除分配(deallocation)请求的处理和程序的高层逻辑流程图;以及
图13是示出用于监视处理器性能并调整硬件设置以提高基于映射器的移动寄存器指令的执行的性能的处理和程序的高层逻辑流程图。
具体实施方式
在以下描述中,为了说明的目的,陈述了大量具体细节,以便提供对本发明的全面理解。然而,对本领域的技术人员而言显然的是,可以在没有这些具体细节的情况下实践本发明。在其它实例中,以框图的形式示出了公知的结构和设备,以避免不必要地模糊本发明。
此外,在以下描述中,为了说明的目的,描述了大量系统。重要的是,并且对本领域的技术人员而言显然的是,本发明可以在各种系统中执行,包括运行任何数量的不同类型的操作系统的各种计算机系统和电子设备。
现在参照附图,图1示出了乱序微处理器的框图,该乱序微处理器为了基于映射器的移动寄存器指令的执行,动态地将来自计数器空闲池的计数器分配到物理寄存器,以计数到物理寄存器的逻辑寄存器映射。在该示例中,微处理器100包括读取(fetch)单元104和解码单元106,读取单元104从指令高速缓存(cache)102中读取指令,解码单元106解码锁读取的指令。解码单元106执行的解码的类型和层级可以取决于所实施的架构的类型。在一个示例中,对于复杂指令集计算机(CISC)架构,解码单元106将复杂指令解码为一个或多个微指令,然而,对于精简指令集计算机(RISC)架构或VLIW(超长指令字)架构,指令不被解码为微指令。对于本领域的技术人员而言显然的是,可以在微处理器100内实施附加的或替代的单元、寄存器、高速缓存和其他元素,用于保存、读取和解码指令。如这里所描述的,微处理器100也可以被称为处理器。
在该示例中,微处理器100包括分派(dispatch)单元108,用于从解码单元106接收经解码的指令或经解码的指令的组,并分派所述指令。在该示例中,分派单元108将指令分派到完成追踪单元(CTU)120(诸如全局完成表)和映射器单元122。分派单元108在将指令分派到映射器单元122之前,可以验证映射器122准备好接收指令。此外,虽然未描述,但分派单元108可以将指令分派到微处理器100内的附加或替代的单元和寄存器。
完成追踪单元120追踪从分派单元108接收的指令,直到每个指令都完成为止。在一个示例中,一般地,映射器单元122将逻辑寄存器映射到物理寄存器,可以重命名指令的操作数以引用逻辑寄存器,并将指令的重命名的操作数发送到发出队列128。寄存器映射118表示逻辑寄存器到物理寄存器的当前映射。物理寄存器(PREG)空闲池114表示用于映射器单元122映射到逻辑寄存器的可用物理寄存器的池。在一个示例中,发出队列128包括调度器,用于调度执行单元126对指令的执行,并且可以包括或访问一个或多个功能单元中的一个或多个缓冲器,其中该一个或多个缓冲器保存从映射器单元122接收的重新命名的指令,用于执行单元126的执行。执行单元126可以包括一个或多个物理执行单元。为了完成从发出队列128接收的指令的执行,一旦执行单元126向物理寄存器文件124中的物理寄存器写入或从其读取,则发出队列128可以从任何缓冲器失效(retire)该指令,并且在完成追踪单元120中标记该指令为完成。
在该示例中,当映射器单元122接收到需要将一个寄存器的内容复制到另一寄存器的指令(诸如移动寄存器指令)时,映射器单元122包括执行该移动寄存器指令的单元,而不是将该移动指令发送到发出队列128用于执行单元126的调度和执行。在一个示例中,映射器单元122对移动寄存器指令的执行也被称为移动寄存器指令短路(short circuiting)。映射器单元122通过将多个逻辑寄存器映射到单个物理寄存器来进行移动寄存器指令的执行,以有效地将一个寄存器的内容复制到另一寄存器,执行移动寄存器指令不需要将内容从一个物理寄存器移动到另一物理寄存器、并且不需要发出队列128中的任何指令入口或不需要执行单元126的执行。此外,通过映射器单元122执行移动寄存器指令,移动指令的处理可以从执行单元126中卸载,使得执行单元126空闲,以更高效地处理其它类型的执行,并促使微处理器100的指令处理脱离指令的原始川顺序。
完成追踪单元120检测来自映射器122的移动寄存器指令的完成并检测来自发出队列128的其它类型的指令的完成。完成追踪单元120确定什么时候向映射器单元122发送完成指示符,以便映射器单元122用于确定是否将物理寄存器从寄存器映射118释放回PREG空闲池114。特别地,因为映射器单元122为移动寄存器指令实施移动寄存器短路,所以映射器单元122在移动寄存器短路期间可以将多个逻辑寄存器映射到单个物理寄存器,并且即使触发初始物理寄存器分配的指令被失效,也可能存在一个或多个基于移动寄存器的逻辑寄存器指向该物理寄存器。因此,为了映射器单元122在接收到指令完成指示符时确定是否将PREG释放到PREG空闲池114,映射器单元122在将PREG释放回PREG空闲池114之前追踪是否存在到该物理寄存器的任何剩余的逻辑寄存器映射。
为了最小化在将PREG释放回PREG空闲池114之前追踪是否存在到该PREG的任何基于移动寄存器的逻辑寄存器所需要的开销,分派单元108响应于移动寄存器指令的执行在寄存器映射118内保持可用于激活和向PREG分配的计数器池,以追踪到PREG的逻辑寄存器映射的数目。在该示例中,在硬件中分配多个计数器130,其中多个计数器130中的计数器的数目少于所分配的物理寄存器的数目。计数器空闲池116表示计数器130之中的当前可用于激活和向PREG分配的空闲计数器的选集。在该示例中,活动追踪计数器112表示计数器130之中的被激活且与特定PREG关联的计数器的选集,用于计数逻辑寄存器向每个特定PREG的映射的数目。
现在参照图2,图2示出了用于追踪逻辑寄存器向物理寄存器映射的计数器的元素的一个示例。在该示例中,用于追踪到物理寄存器的逻辑寄存器映射的计数器200包括PREG ID 204、有效比特206、和计数208。在一个示例中,当映射器单元122激活计数器200并设置用于该计数器的计数时,映射器单元122通过将有效比特206设置为“1”而激活计数器200,并通过向PREG ID 204中插入用于物理寄存器的指针以及通过将计数208设置为“2”而设置计数,来分配计数器200。在一个示例中,当映射器单元122释放计数器200时,映射器单元122将有效比特206设置为“0”。在一个示例中,有效比特206被设置为“0”的计数器被表示在计数器空闲池116内,并且有效比特206被设置为“1”的计数器被表示在活动追踪计数器112内。在该示例中,有效比特206表示用于追踪计数器的有效状态的比特,其中“有效”或“1”的有效状态表示当前计数是有效的,“无效”或“0”的有效状态表示当前计数是无效的。对于本领域的普通技术人员而言显然的是,用于追踪逻辑计数器到物理寄存器的有效映射的计数器(诸如计数器200)可以包括附加的或替代的元素。
在另一示例中,仍参照图2,计数器210包括PREG ID 212、有效比特214和计数216,如参照计数器200所描述的,但是计数器210还包括分配比特218。在一个示例中,映射器单元122可以被设置为:当接收到移动寄存器指令时,在确定在活动追踪计数器112中是否已经存在其PREG ID与用于该移动寄存器指令的PREG匹配的计数器之前,自动预留计数器。在此示例中,在映射器单元122预留计数器用于移动寄存器指令并接着确定在活动追踪计数器112中是否已经存在其PREG ID与用于该移动寄存器指令的PREG匹配的计数器的情况下,映射器单元122设置分配比特218来指示预留,然而,在确定是否已经分配了其PREG ID与用于该移动寄存器指令的PREG匹配的计数器或者是否需要计数器之前,不设置有效比特214。
返回图1,映射器单元122通过将所映射的用于移动寄存器指令的PREG与分配到活动追踪计数器112的PREG ID进行比较而管理计数器130向PREG的动态分配。如果映射器单元122检测到指示所映射的用于移动寄存器指令的PREG与分配到活动追踪计数器112中的计数器的PREG ID匹配的命中(hit),则映射器单元122递增匹配的计数器的计数。如果映射器单元122没有识别到与活动追踪计数器112中的计数器的PREG ID的匹配,则映射器单元122通过将计数器的PREG ID设置为该PREG、将计数设置为“2”、并将计数器的有效比特设置为“1”,而从计数器空闲池116分配计数器。通过在向PREG分配计数器时将计数设置为“2”,映射器单元122解释映射到PREG的原始逻辑寄存器以及映射到该PREG的基于移动寄存器的逻辑寄存器。映射到PREG的基于移动寄存器的逻辑寄存器也可以成为移动寄存器小应用程序(alias)。
当映射器单元122向计数器130发送对PREG的解除分配请求时,映射器单元122通过将所映射的用于指令完成指示符的PREG与分配到活动追踪计数器112的PREG ID进行比较而管理计数器130向计数器空闲池116的动态释放。映射器单元122可以检测指示是释放到PREG的LREG映射的时间的条件,并且响应于一个或多个条件生成对PREG的解除分配请求,所述条件包括但不限于从完成追踪单元120接收用于指令或指令组的完成指示符、映射器单元122向检查点状态发送完成的指令、映射器单元122清除经检查点的指令、或者检测到从寄存器映射118清除的PREG。映射器单元122将解除分配请求中的PREG与分配到活动追踪计数器112的PREG进行比较。如果映射器单元122检测到活动追踪计数器112中的命中,则映射器单元122递减当前分配到PREG的计数器。当用于PREG的计数器递减到“0”或“1”时,映射器单元122通过将用于追踪计数器的有效比特设置为“0”而将追踪计数器释放到计数器空闲池116(如果不是已经在计数器空闲池116中)。如果用于PREG的计数器递减到“1”而不是“0”,则PREG必须保持活动,但该PREG不再需要用于追踪到该PREG的映射的数目的计数器。如果用于PREG的计数器递减到“0”或者映射器单元122没有检测到用于解除分配请求中的PREG的计数器130中的命中,则映射器单元122触发PREG从计数器映射118到PREG空闲池114的释放。
在所示的示例中,通过在计数器空闲池116中提供可用于激活和分配的计数器以及仅在需要时动态地分配用于PREG的计数器,当在寄存器映射118中向PREG映射用于基于映射器单元的移动寄存器指令的执行时,映射器单元122实施移动寄存器短路,而不需要所有可用PREG中的每个都有独立的计数器,并且不需要与已分配的PREG关联的计数,除非指令执行将逻辑寄存器映射到已经具有一个或多个映射到该物理寄存器的逻辑寄存器的物理寄存器。减少对用于基于映射器单元的移动寄存器指令的逻辑寄存器映射进行计数所需要的计数器的数量允许在最小化计数器所使用的开销的情况下有更多数量的PREG可用。此外,虽然当指令执行将第二个逻辑寄存器映射到已经具有一个或多个映射到该物理寄存器的逻辑寄存器的物理寄存器时,参照映射器单元122激活和分配来自计数器空闲池116的计数器的情况说明了本发明,但是,在另一示例中,当第一个逻辑存储器映射到物理寄存器时,映射器单元122可以激活和分配来自计数器空闲池116的计数器到物理寄存器,其中,所分配的计数器被设置为“1”,并且对于附加逻辑寄存器到该物理寄存器的每个附加映射递增该计数器。
虽然参照执行移动寄存器指令的映射器单元122说明了本发明,但是映射器单元122也可以通过将多个逻辑寄存器映射到同一物理寄存器执行其它类型的指令,并且可以动态地从计数器空闲池122分配计数器,以追踪用于基于映射器执行其它类型的指令的、逻辑寄存器到同一物理寄存器的映射的数目。
在该示例中,映射器单元122、分派单元108以及微处理器100的其它单元可以访问和更新映射数据110,其可以包括PREG状态表114、计数器空闲池116、寄存器映射118、以及活动追踪计数器112。在一个示例中,映射数据110内所示的一个或多个单元可以位于分配单元108和映射器单元122内,可以位于寄存器内而独立于特定功能单元,或者可以在多个处理器核之间共享。
本领域的一般技术人员将认识到:微处理器100的功能单元、高速缓存、和寄存器相对于图1中所示的那些可以包括附加的或替代的功能单元、高速缓存和寄存器;并且可以利用与图1中描述的互连不同的附加或替代结构,互连所述功能单元、高速缓存和寄存器。
现在参照图3,框图示出了映射器单元122实施的用于控制在需要时动态分配到PREG的活动追踪计数器的计数的单元的一个示例。
在该示例中,在移动寄存器指令的分派时(在图中表示为“新分派PREG”),比较单元304将每个有效计数器PREG ID 302与为该移动寄存器指令所查找的PREG进行比较。如果比较单元304检测到命中,则递增与匹配的计数器关联的计数306。如果比较单元304检测到未命中(miss),则分配用于PREG的新计数器、在该计数器中设置有效比特、并且该计数器的计数设置为“2”。
在该示例中,在释放时,当发送用于PREG的解除分配请求时(在图中表示为“PREG解除分配请求”),比较单元308将解除分配请求中的PREG与每个有效计数器PREG ID 302进行比较。如果比较单元308检测到命中,则递减与匹配的计数器关联的计数306。如果比较单元308检测到未命中,则触发PREG的释放。
本领域的普通技术人员将理解的是,映射器单元122可以实施用于控制在分配到PREG的活动追踪计数器的计数中当前设置的数目的附加或替代单元和寄存器,并且可以实施附加或替代的单元来执行到PREG的计数器的分配以及执行PREG的释放。
现在参照图4,框图示出了映射器单元为了移动寄存器指令的执行而进行的处理计数器到PREG的动态分配所执行的步骤的一个示例。在该示例中,第一列402包括映射器单元122接收的指令的类型的多个示例,包括移动寄存器指令422和非移动寄存器指令412、432和442。第二列404包括映射器单元122的映射器逻辑所执行的步骤,用于管理物理寄存器的分配以及逻辑寄存器到物理寄存器的映射。第三列406包括映射器单元122的计数器逻辑406所执行的步骤,用于管理动态分配的计数器,所述动态分配的计数器可用于在需要时响应于移动寄存器指令的执行而动态分配到PREG。
在该示例中,第一指令412需要向LREGA加载存储器位置。如附图标记414处所示,映射器单元122从PREG空闲池分配空闲PREG1到该指令,映射LREGA到PREG1,并且向发出队列128发送用于该指令的操作数。
在该示例中,第二指令422需要向LREGB移动LREGA。如附图标记424处所示,映射器单元122检测移动寄存器指令并针对所映射的PREG搜索LREGA,根据指令412将该PREG被设置为PREG1。接着,映射器单元122通过将LREGB映射到PREG1而执行移动寄存器指令,同时LREGA也映射到PREG1,并且映射器单元122向用于该指令的完成追踪单元120提交完成指示符,而绕过了发出队列128和执行单元。此外,映射器单元122的计数器逻辑利用PREG1执行计数器查找,以确定是否已经存在分配到PREG1的计数器。在该示例中,查找返回未命中,因此将计数器从计数器空闲池分配到PREG1,将用于该计数器的有效比特设置为“1”,并且将用于该计数器的计数设置为“2”。虽然在该示例中未描述,但尽管完成追踪单元120已经接收到用于指令422的完成指示符,不过在完成追踪单元120从发出队列128中接收到用于指令412的指示加载了数据的完成指示符之前,完成追踪单元120不指示指令422的完成。当指令422完成时,PREG1将进入作为LREGA的架构状态,并且LREGA的下一分配将触发映射器单元122发出用于PREG1的解除分配请求。当指令422完成时,PREG1将进入作为LREGB的架构状态。
在该示例中,第三指令432需要将值加入到LREGB,并将结果存储在LREGB中。如附图标记434处所示,映射器单元122将空闲PREG2从PREG空闲池分配到该指令,将LREGB映射到PREG2,并将用于该指令的操作数发送到发出队列128。当指令432完成时,PREG2将进入作为LREGB的架构状态,将PREG1从用于LREGB的架构状态移除,并且映射器单元122将发送用于PREG1的解除分配请求,因为所计数的到PREG1的逻辑映射之一被释放。计数器逻辑接收用于PREG1的解除分配请求,并在活动追踪计数器中执行PREG1的查找。在该示例中,查找返回命中,并且用于PREG1的计数器的计数递减到“1”,以反映仅剩余一个到PREG1的逻辑寄存器映射。PREG1保持忙碌,但分配到PREG1的计数器被释放到空闲计数器池。虽然该示例中未描述,但指令432可以在发出队列128中等待,直到指令412完成和返回执行指令432所需要的数据。
在该示例中,第四指令442需要将值加载到LREGA。如附图标记444处所示,映射器单元122将空闲PREG3从PREG空闲池中分配到该指令,将LREGA映射到PREG3,并将用于该指令的操作数发送到发出队列128。当指令442完成时,指令442的完成表示LREGA的下一分配,PREG3将进入作为LREGA的架构状态,PREG1被从用于LREGA的架构状态中移除,并且映射器将发出用于PREG1的解除分配请求,因为所计数的到PREG1的逻辑映射之一被移除。计数器逻辑接收用于PREG1的解除分配请求,并在活动追踪计数器中执行PREG1的查找。在该示例中,查找返回未命中,因为之前分配到PREG1的计数器已被释放到空闲计数器池,并且映射器单元122触发PREG1到空闲PREG池的释放。
虽然在该示例中,指令432被说明为在指令442之前完成,但在另一示例中,指令442可以在指令432之前完成,指令442的完成将触发附图标记436处所示的步骤,并且指令432的完成将触发附图标记446处所示的步骤。此外,虽然在该示例中响应于替换所计数的到物理寄存器的映射之一的指令的完成而触发指令436和446,但在其它示例中,可以响应于清除映射以及指示逻辑寄存器到物理寄存器的特定映射完成的其它事件而触发指令436和446。
现在参照图5,框图示出了映射器单元进行的寄存器映射中的物理寄存器的原始分配的示例,该映射器单元实施随机访问存储器(RAM)映射器和内容可寻址存储器(CAM)映射器,以执行移动寄存器指令。在该示例中,映射器单元122实施LREG到PREG的CAM映射器506以及LREG到PREG的RAM映射器502两者,以实施操作数映射,包括移动寄存器指令的执行。在该示例中,映射器单元122接收指令412,以向LREGA加载存储器位置,其中LREGA是目标LREG。在该示例中,如果所接收的指令是移动寄存器指令,则复用器(MUX)508选择来自RAM映射器502的输入,否则选择来自PREG空闲池504的输入。在该示例中,所接收的指令不是移动寄存器指令,所以MUX 508选择来自空闲池504的PREG1,并向RAM映射器502和CAM映射器506广播PREG1。利用PREG1写入RAM映射器502内的RAM入口LREGA,并且CAM映射器506中创建的新CAM入口将LREGA映射到PREG1。映射器单元122将用于指令412的操作数传递到发出队列128用于执行调度。
在该示例中,计数器空闲池518包括可用计数器512,但活动追踪计数器520是空的。映射器单元122不需要向PREG1分配计数器来追踪LREGA到PREG1的映射,因为还尚进行移动寄存器指令的执行。
现在参照图6,框图示出了映射器单元进行的移动寄存器指令的执行的示例,该映射器单元实施RAM映射器和CAM映射器,以执行移动寄存器指令并动态地将计数器分配到用于移动寄存器指令的执行的物理寄存器。在该示例中,映射器单元122接收将LREGA移动到LREGB的指令422。指令422是移动寄存器指令。在该示例中,LREGA是RAM映射器502中要读取的源LREG,并且LREGB是RAM映射器502中要被写入的目标LREG。当前,在RAM映射器502中,LREGA被分配了PREG1。MUX 508向RAM映射器502和CAM映射器506的写入数据输入广播来自分配到LREGA的PREG1的RAM映射器502的输入。RAM映射器502接收LREGB作为要写入的目标LREG,并在RAM映射器502中将PREG1映射到LREGB。此外,CAM映射器506添加入口并将LREGB映射到PREG1,从而有效地将LREGA和LREGB两者都映射到PREG1,以将LREGA的内容复制到LREGB而不必将PREG1的内容移动到新寄存器。
映射器单元122不向发出队列传递用于指令422的操作数,因为映射器单元122已经通过将LREGB与LREGA映射到同一物理寄存器而执行了指令422的移动寄存器指令。映射器单元122向用于指令422的GCT 120广播完成指示符,而不将指令422分派到发出队列128或执行单元126。
映射器单元122还在活动追踪计数器520中执行对已经分配到PREG1的计数器的查找,用于指令422中所分派的移动指令。映射器单元122检测到未命中,并通过将计数器512的PREG ID设置为PREG1、将有效比特设置为“1”以及将计数设置为“2”(表示针对指令412和422中的每个的、逻辑寄存器到物理寄存器的映射的计数),而将计数器512分配到PREG1。重要的是注意到:计数器空闲池518中的计数器可以在需要时用于分配到任何物理寄存器,从而如示例中所示,在活动追踪计数器520中,之前已经分配到PREG2的计数器512现在被分配到PREG1。
现在参照图7,框图示出了跟随移动寄存器指令的指令的示例,该指令分配到在移动寄存器指令中命名的LREG。在该示例中,映射器单元122接收将值加入到LREGB的指令432,并将结果存储在LREGB中。根据由映射器单元122为指令422进行的移动寄存器指令的执行,LREGB当前与LREGA映射到同一物理寄存器PREG1。在该示例中,对于指令432,MUX 508广播来自PREG空闲池304的空闲寄存器PREG2,因为指令432不是移动寄存器指令。CAM映射器306创建将LREGB映射到PREG2的新入口,并在RAM映射器302中将PREG2分配到LREGB,其中LREGB是用于指令432的目标LREG。
在该示例中,用于指令432的操作数传递到发出队列128,并被执行单元126执行。完成追踪单元120从发出队列128接收指令432已经完成的指示符,并且完成追踪单元120向映射器单元122发送用于指令432的完成指示符,独立地发送或者针对一组完成的指令一起发送。在一个示例中,一旦映射器单元122接收到用于指令432的完成指示符,PREG2将进入作为LREGB的架构状态,并且映射器单元122从CAM映射器506中移除将LREGB映射到PREG1的入口。在一个示例中,当映射器单元122接收到用于一个指令或一组指令的完成指示符时,映射器单元122将完成的指令发送到经检查点的状态,并接着释放与经检查点的指令相关联的映射,诸如LREGB到PREG1的映射。当映射器单元122移除将LREGB映射到PREG1的入口时,映射器单元122触发对PREG1的解除分配请求。在该示例中,解除分配请求触发在活动追踪计数器520中查找PREG1。映射器单元122检测对活动追踪计数器520中的计数器512的命中,并递减计数。因为计数被递减到“1”,所以映射器单元将用于计数器512的有效比特设置为“0”,从而有效地将计数器512移动到计数器空闲池518。
现在参照图8,框图示出了跟随移动寄存器指令的附加指令的示例,该指令分配到该移动寄存器指令中命名的LREG。在该示例中,映射器单元122接收将值加载到LREGA的指令442。LREGA当前被映射到PREG1。在该示例中,对于指令442,MUX 508广播来自PREG空闲池304的空闲寄存器PREG3,因为指令442不是移动寄存器指令。CAM映射器306创建将LREGB映射到PREG3的新入口,并在RAM映射器302中将PREG3分配到LREGA,其中LREGA是用于指令442的目标LREG。
在该示例中,用于指令442的操作数传递到发出队列128,并被执行单元126执行。一旦完成追踪单元120从发出队列128接收到指令442已经完成的指示符,完成追踪单元120向映射器单元122发送用于指令432的完成指示符。在一个示例中,一旦映射器单元122接收到用于指令432的完成指示符,PREG3将进入作为LREGA的架构状态,并且映射器单元122从CAM映射器506中移除将LREGA映射到PREG1的入口。当映射器单元122移除将LREGA映射到PREG1的入口时,映射器单元122触发对PREG1的解除分配请求。在该示例中,解除分配请求触发在活动追踪计数器520中查找PREG1。映射器单元122在活动追踪计数器520中检测到未命中,并且将PREG1释放回PREG空闲池504。
图9示出了可以实施和监视微处理器的计算机系统的一个示例。本发明可以在各种系统或系统的组合中执行,可以由诸如参照计算机系统900所描述的功能组件的功能组件所构成,并且可以通信地连接到网络,诸如互联网936。
计算机系统900包括总线922或者用于在计算机系统900内传递信息的其它通信装置、以及诸如处理器912的至少一个硬件处理装置,其连接到总线922用于处理信息。处理器912可以包括参照图1所描述的元素的一个或多个实例。总线922优选地包括低时延和高时延路径,其通过桥或适配器连接,并且在计算机系统900内由多个总线控制器控制。当被实施为服务器或节点时,计算机系统900可以包括设计为提高网络服务能力的多个处理器。在多个处理器共享总线922的情况下,可以实施用于管理总线访问和锁定的附加的控制器(未示出)。
处理器912可以是至少一个通用处理器,诸如(IBM和PowerPC是国际商业机器公司的注册商标)处理器,在常规操作期间,所述处理器在软件950的控制下处理数据,软件950可以包括应用软件、操作系统、中间件、以及其它代码和计算机可执行程序中的至少一个,所述计算机可执行程序可以从动态存储装置(诸如随机访问存储器(RAM)914)、静态存储设备(诸如只读存储器(ROM)916)、数据存储设备(诸如大容量存储设备918)、或其它数据存储介质中存取。软件950可以包括但不限于代码、应用、协议、接口以及进程,其用于在网络中控制一个或多个系统,所述网络包括但不限于适配器、交换机、群集系统以及网格环境。此外,软件950可以包括监视控制器,用于监视处理器912内的元素的性能,并动态地调整处理器912内的硬件元素的设置,以改善性能。此外,软件950可以执行参照图1中的处理器100的功能单元所描述的一个或多个操作。
在一个实施例中,处理器912执行的操作可以控制图10-13的流程图的操作以及这里所描述的其它操作。处理器912执行的操作可以由软件950或其它代码请求,或者本发明的一个实施例的步骤可以由特定的软件组件执行,该特定的软件组件包含用于执行这些步骤的硬连线逻辑,或者本发明的一个实施例的步骤可以由编程的计算机组件和定制的硬件组件的任何组合执行。
本领域的普通技术人员将认识到,本发明的一个实施例的方面可以被实施为系统、方法或计算机程序产品。因此,本发明的一个实施例的方面可以采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者包含软件和硬件方面的实施例的形式,这里他们可以全部一般地称为“电路”、“模块”或“系统”。此外,本发明的一个实施例的方面可以采用在一个或多个有形计算机可读介质中实施的计算机程序产品的形式,所述介质中包含计算机可读程序代码。
可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于电子、磁、光、电磁、红外、或半导体系统、装置、设备、或前述的任何合适的组合。计算机可读存储介质的更具体的示例(非详尽列表)将包括以下:具有一个或多个线的电连接、便携式计算机盘、硬盘(诸如大容量存储设备918)、随机访问存储器(RAM)(诸如RAM 914)、只读存储器(ROM)916、可擦除可编程只读存储器(EPROM或闪存存储器)、光纤、便携式压缩磁盘只读存储器(CDROM)、光存储设备、磁存储设备、或者前述的任何合适的组合。在此文件的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储用于与指令执行系统、装置或设备一起使用的程序。
计算机可读信号介质可以包括其中包含了计算机可读程序代码的传播数据信号,例如在基带中或者作为载波的部分。这样的传播信号可以采用多种形式中的任一种,包括但不限于电磁、光、或其任意合适的组合。计算机可读信号介质可以是除计算机可读存储介质之外的可以通信、传播和传输程序的任何计算机可读介质,所述程序由指令可执行系统、装置或设备使用或与其一起使用。
可以使用任何合适的介质传送实施在计算机可读介质上的程序代码,包括但不限于无线、有线、光纤缆线、射频(RF)等,或者前述的任意合适的组合。
可以用一个或多个编程语言的任意组合编写用于执行本发明的一个实施例的操作的计算机程序代码,所述编程语言包括面向对象的编程语言(诸如Java、Smalltalk、C++等)以及传统的过程编程语言(诸如“C”编程语言或类似的编程语言)。程序代码可以全部在用户的计算机(诸如计算机系统900)上执行,部分在用户的计算机上执行,作为独立软件包执行,部分在用户的计算机上部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一情形中,远程计算机可以通过任何类型的网络(诸如互联网936)、通过通信接口(诸如网络接口932)、或者在可以例如连接到互联网936的网络链路上连接到用户的计算机。
在该示例中,网络接口932包括适配器934用于将计算机系统900通过链路连接到互联网936。虽然未描述,但网络接口932可以包括使得能够通信的附加的软件(诸如设备驱动器)、附加的硬件和其它控制器。当被实施为服务器时,计算机系统900可以包括多个通信接口,其可以经由例如连接到输入/输出控制器的多个外围组件互连(PCI)总线桥访问。在此方式中,计算机系统900允许经由多个分离的端口连接到多个客户端,并且各个端口也可以支持到多个客户端的多个连接。
下面参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图说明本发明的一个实施例。本领域的普通技术人员将理解到,可以通过计算机程序指令实施流程图和/或框图的每个块以及流程图和/或框图中的块的组合。这些计算机程序指令可以被提供给通用计算机、专用计算机、或者其它可编程数据处理装置的处理器,以产生机器,从而经由计算机或其它可编程数据处理装置的处理器执行的指令创建用于实施流程图和/或框图的块中指定的功能/动作的装置。
这些计算机程序指令也可以存储在计算机可读介质中,其指引计算机(诸如计算机系统900)或其它可编程数据处理装置以特定的方式工作,使得存储在计算机可读介质中的指令产生制品,其包括实施流程图和/或框图的块中指定的功能/动作的指令方法。
计算机程序指令也可以被加载到计算机(诸如计算机系统900)或者其它可编程数据处理装置中,以使得在计算机或其它可编程装置中执行一系列操作步骤,以产生计算机执行的进程,使得在计算机或其它可编程装置上执行的指令提供用于实施流程图和/或框图的块中指定的功能/动作的进程。
网络接口932、至互联网936的网络链路以及互联网936可以使用携带数字数据流的电、电磁或光信号。通过各种网络的信号以及互联网936、到互联网936的网络链路以及网络接口932上的信号(所述信号向和从计算机系统900携带数字数据)可以是输送信息的载波形式。
此外,计算机系统900可以包括辅助输入和输出的多个外围组件。这些外围组件连接到多个控制器、适配器和连接到多层总线922之一的扩展槽,诸如输入/输出(I/O)接口926。例如,输入设备924可以包括例如麦克风、视频捕获设备、图像扫描系统、键盘、鼠标或其他输入外围设备,经由I/O接口926使得它们能够在总线922上通信,从而控制输入。此外,例如,经由I/O接口926使得能够在总线922上通信用于控制输入的输出设备920可以包括例如一个或多个图形显示设备、音频扬声器以及触觉检测输出接口,但也可以包括其它输出接口。在本发明的替代实施例中,可以添加附加或替代的输入和输出外围组件。
本领域的普通技术人员将理解,图9中所述的硬件可以变化。此外,本领域的普通技术人员将理解,所描述的示例并不意欲隐含对本发明的结构限制。
图10示出了用于映射器单元确定是为分派的移动寄存器指令动态地分配计数器,还是递增追踪在分派的移动寄存器指令中映射的PREG的现有计数器的计数的处理和程序的高层逻辑流程图。在该示例中,处理从块1000开始,此时将移动寄存器指令分派到映射器,然后移动到块1002。块1002示出了映射器单元通过移动寄存器指令中的源LREG查找映射的PREG。
接着,块1004描述将返回的PREG与活动追踪计数器中的计数器的PREG ID进行比较,所述活动追踪计数器包括有效比特被设置为“1”的计数器的选集。接着,块1006示出确定是否存在来自源PREG与有效比特被设置为“1”的计数器的PREG ID之间的匹配的“命中”。在块1006,如果存在命中,则处理进入块1008。块1008示出递增分配到该PREG的计数器的计数,并且处理结束。
返回块1006,如果不存在命中,则处理进入块1010。块1010描述确定在有效比特被设置为“0”的计数器空闲池中是否存在可用的计数器。在块1010中,如果在计数器空闲池中不存在可用的计数器,则处理进入块1012。块1012示出了停顿该指令的分派或者在功能单元中强制执行该指令,这取决于映射器单元所实施的策略,并且处理结束。
返回块1010,如果在计数器空闲池中存在可用的计数器,则处理进入块1014。块1014描述通过将从计数器空闲池中选择的计数器的有效比特设置为“1”来激活计数器。接着,块1016示出将PREG分配到所选择的计数器的PREG ID,并且块1018描述将所选择的计数器的计数设置为“2”,其反映PREG与关于该PREG的移动寄存器指令一起的原始分配,并且处理结束。
图11描述用于映射器单元在移动寄存器指令的分派时预留计数器的处理和程序的高层逻辑流程图。在该示例中,处理从块1100开始,此时将移动寄存器指令分派到该映射器,然后进入块1102。块1102示出了对计数器空闲池中是否存在可用计数器的确定,在该计数器空闲池中,有效比特被设置为“0”,表示计数器的分配状态的分配比特被设置为“0”。在块1102中,如果在计数器空闲池中不存在可用的计数器,则处理进入到块1116。块1116描述阻止移动指令的分派,或者在功能单元中强制执行,这取决于映射器单元所实施例的策略,并且处理结束。
返回到块1102,如果在计数器空闲池中存在可用的计数器,则处理进入块1104。块1104描述通过将从计数器空闲池中选择的计数器的分配比特设置为“1”来预留可用计数器。通过在处理开始时预留计数器,映射器单元确保如果PREG尚未具有遵循基于映射器执行移动寄存器指令的计数器分配,则将存在分配到该PREG的可用计数器。接着,块1106示出映射器单元针对移动寄存器指令中的源LREG查找PREG。然后,块1108描述将查找到的PREG与有效比特被设置为“1”的活动追踪计数器中的计数器的PREG ID进行比较,并且处理进入块1110。
块1110示出确定是否存在来自该PREG与活动追踪计数器中的有效比特被设置为“1”的计数器的PREG ID之间的匹配的“命中”。在块1110,如果存在命中,则处理进入块1112。块1112示出递增分配到该PREG的计数器的计数。接着,块1114描述通过将所选择的计数器的分配比特设置为“0”而释放所预留的计数器,并且处理结束。
返回块1110,如果不存在来自该PREG与有效比特被设置为“1”的计数器的PREG ID之间的匹配的“命中”,则处理进入块1118。块1118示出将从计数器空闲池所选择的计数器的有效比特设置为“1”,块1120描述将该PREG分配到所选择的计数器的PREG ID,并且块1120描述将所选择的计数器的计数设置为“2”,并且处理结束。
根据映射器单元所实施的策略,当映射器单元接收到移动寄存器指令时,映射器单元确定执行图10中所示的步骤还是图11中所示的步骤。在一个示例中,如果映射器单元执行图10所示的步骤,并且处理进入块1012(其导致移动寄存器指令的停顿),则映射器单元可以接着实施执行图11中所示的步骤的策略,以确保在处理中执行附加步骤之前预留计数器。在另一示例中,映射器单元可以实施仅当计数器空闲池中可用的计数器的数目降到下限时(此时计数器预留将提高效率)才执行图11中所示的步骤、或者仅当计数器空闲池中可用的计数器的数目超过上限时(此时计数器预留不必要)才执行图10中所示的步骤的策略。
图12示出了用于映射器单元管理PREG解除分配请求的处理和程序的高层逻辑流程图。在该示例中,处理从块1200开始,然后进入块1202。块1202示出将解除分配请求中的PREG与活动追踪计数器的PREG ID进行比较。接着,块1204示出对是否存在来自释放的PREG与活动追踪计数器的PREG ID之间的匹配的“命中”的确定。在块1204,如果不存在命中,则处理进入到块1216。块1216示出触发映射器单元将该PREG释放到PREG空闲池,并且处理结束。
返回块1204,如果存在“命中”,则处理进入块1206。块1206示出递减分配到该PREG的计数器的计数。接着,块1208描述确定分配到解除分配请求中的PREG的计数器的计数是否被递减到“0”或“1”,其将表示所计数的活动映射的数目少于最小值。在块1208中,如果计数不递减到“0”或“1”,则处理进入块1212。块1212描述PREG的状态保持忙碌,并且处理结束。
返回块1208,如果计数器递减到“0”或“1”,则处理进入块1210。块1210示出将计数器的有效比特设置为“0”,并且处理进入块1214。块1214示出确定计数是否被递减到“0”。在块1214中,如果计数被递减到“0”,则处理进入块1216,并且触发映射器单元将该PREG释放到PREG空闲池。在块1214中,如果计数未递减到“0”,则处理进入块1212,并且PREG状态保持忙碌。
图13示出用于监视处理器性能和调整硬件设置以改善基于映射器的移动寄存器执行的性能的处理和程序的高层逻辑流程图。在该示例中,由诸如软件550的软件执行的处理从块1300开始,然后进入块1302。块1302示出读取可用的处理器性能数据。在一个示例中,可用的处理器性能数据指示分派单元进行的每次移动寄存器指令的停顿,并指示计数器空闲池中可用的计数器的计数。对于本领域的技术人员而言显然的是,可以读取附加或替代的处理器性能数据,并且为了检测处理器性能,可以不断地读取处理器数据。
块1304描述确定所检测到的一段时间上的移动寄存器指令的停顿是否超过停顿限值。如果一段时间上的移动寄存器指令的停顿超过停顿限值,则处理进入块1306。块1306示出指示处理器分配附加的计数器。接着,块1308描述指示处理器在将移动寄存器指令分派到映射器单元时预先预留计数器。
块1310示出确定计数器空闲池中的计数器在一段时间上的平均数目是否超过计数器限值。如果计数器空闲池中的计数器在一段时间上的平均数目超过计数器限值,则处理进入块1312。块1312描述指示处理器减少计数器数目。接着,块1314示出指示处理器在将移动寄存器指令分派到映射器单元时不预留计数器。
附图中所示的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的结构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现特定逻辑功能的可执行指令。也应当注意,在某些作为替换的实施方式中,块中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连示出的块实际上可以基本同时执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个块、以及框图和/或流程图中的块的组合,可以用执行特定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
这里所使用的措词仅是为了描述具体实施例的目的,而不意欲限制本发明。如这里所使用的,单数形式也意在包括复数形式,除非上下文清晰地表明不是如此。还将理解,术语“包括”和/或“包含”在本说明书中使用时表示所述的特征、数字、步骤、操作、元素和/或组件的存在,但不排除一个或多个其它特征、数字、步骤、元素和/或组件、和/或它们的组合的存在或增加。
权利要求中的所有装置或步骤以及功能元素的对应结构、材料、动作和等同物意在包括用于与其它要求权利的元素组合地执行功能的任何结构、材料或动作,正如具体要求权利的。已经为了示例和说明的目的呈现了本发明的一个或多个实施例的描述,但该描述不意在是穷尽的,也不意在将本发明限制到所公开的形式。在不偏离本发明的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和改变都是显而易见的。为了最好地说明本发明的原理和实际应用,以及为了使本领域的其它技术人员能够理解本发明的带有适合于所构思的特定应用的各种修改的各种实施例,而选择和描述了实施例。
虽然参照一个或多个实施例具体地显示和描述了本发明,但本领域的技术人员将理解,在不偏移本发明的精神和范围的情况下可以对其形式和细节进行各种改变。
Claims (16)
1.一种在用于指令执行的处理器中计数所述处理器的映射器单元进行的逻辑寄存器到物理寄存器的映射的方法,包括:
从当前在计数器空闲池中的多个计数器之中分配特定的计数器,以计数来自多个逻辑寄存器之中的逻辑寄存器到来自多个物理寄存器之中的特定物理寄存器的映射的数目,其中,来自所述多个逻辑寄存器之中的第一逻辑寄存器当前正映射到所述特定物理寄存器,所述分配响应于映射器单元将来自所述多个逻辑寄存器之中的第二逻辑寄存器映射到所述特定物理寄存器而对移动寄存器指令的执行,其中所述多个计数器的数目少于所述多个物理寄存器的数目;
响应于逻辑寄存器到所述特定物理寄存器的映射的所计数的数目递减到小于最小值,将所述特定计数器返回到所述计数器空闲池。
2.如权利要求1所述的方法,还包括:
响应于接收到要求将所述第一逻辑寄存器复制到所述第二逻辑寄存器的移动寄存器指令,访问所述第一逻辑寄存器所映射的特定物理寄存器;
由所述映射器单元通过将所述第二逻辑寄存器映射到所述特定物理寄存器而执行所述移动寄存器指令;以及
由所述映射器单元将用于所述移动寄存器指令的完成指示符广播到用于追踪哪些指令已经完成的完成追踪单元,对于所述移动寄存器指令,不将所述移动寄存器指令传递到发出队列。
3.如权利要求2所述的方法,还包括:
响应于接收到非移动寄存器指令,访问来自物理寄存器空闲池的下一空闲物理寄存器;以及
将所述第一逻辑寄存器映射到所述下一空闲物理寄存器,其中所映射的所述下一空闲物理寄存器是所述特定物理寄存器。
4.如权利要求1所述的方法,还包括:
响应于接收到所述移动寄存器指令,识别所映射的所述特定物理寄存器,用于所述移动寄存器指令的执行;
将所述特定物理寄存器与来自所述多个计数器之中的当前分配到所述多个物理寄存器的选集的活动追踪计数器进行比较;
响应于在多个活动追踪计数器之中未检测到任何分配到所述特定物理寄存器的计数器,通过将用于所述特定物理寄存器的标识符分配到所述特定计数器、将所述特定计数器的有效状态设置为有效、并且将所述特定计数器的计数设置为映射到所述物理寄存器的所述多个逻辑寄存器的选集的数目,而从所述计数器空闲池中将所述特定计数器分配到所述特定物理寄存器;以及
响应于在所述多个活动追踪计数器之中检测到所述特定计数器已经分配到所述特定物理寄存器,递增所述特定计数器的计数。
5.如权利要求4所述的方法,还包括:
响应于在所述多个活动追踪计数器之中未检测到任何计数器分配到所述特定物理寄存器,确定所述计数器空闲池是否包括可用计数器;
响应于所述计数器空闲池包括可用计数器,将所述可用计数器分配到所述特定物理寄存器;以及
响应于所述计数器空闲池不包括可用计数器,选择是在所述计数器空闲池包括可用计数器之前停顿所述移动寄存器指令的分派,还是在执行单元中强制执行所述移动寄存器指令。
6.如权利要求1所述的方法,还包括:
响应于所述映射器单元释放特定逻辑寄存器到所述特定物理寄存器的特定映射,递减所述特定计数器的计数,以减小逻辑寄存器到所述特定物理寄存器的映射的数目的计数。
7.如权利要求1所述的方法,还包括:
响应于逻辑寄存器到所述特定物理寄存器的映射的所计数的数目递减到零,将所述特定物理寄存器释放到物理寄存器空闲池。
8.如权利要求1所述的方法,还包括:
响应于所述映射器单元接收到所述移动寄存器指令,查找所述移动寄存器指令中的源逻辑寄存器所映射的所述特定物理寄存器,并在所述计数器空闲池中搜索可用计数器;
响应于从所述计数器空闲池中检测到所述特定计数器可用,通过将所述特定计数器的有效状态设置为有效而激活所述计数器,并且通过将用于所述特定计数器的物理寄存器标识符设置为所述特定物理寄存器的指针,而将所述特定计数器分配到所述特定物理寄存器;以及
响应于从所述计数器空闲池中未检测到可用计数器,停顿所述移动寄存器指令直到所述计数器空闲池包括可用计数器。
9.如权利要求1所述的方法,还包括:
响应于所述映射器单元接收到所述移动寄存器指令,在所述计数器空闲池中搜索可用计数器;
响应于从所述计数器空闲池中未检测到任何可用计数器,停顿所述移动寄存器指令;
响应于从所述计数器空闲池中检测到可用计数器,通过设置所述特定计数器的分配状态而预留所述可用计数器,以预留所述可用计数器;以及
响应于所述映射器单元执行所述移动寄存器指令,将所述特定物理寄存器与活动追踪计数器进行比较;
响应于所述映射器单元识别出已经分配到所述特定物理寄存器的所述特定计数器,通过清除所述分配状态而释放预留的可用计数器;
响应于所述映射器单元未识别出已经分配到所述特定物理寄存器的所述特定计数器,将所预留的可用计数器分配到所述特定物理寄存器。
10.一种在用于指令执行的处理器中计数所述处理器的映射器单元进行的逻辑寄存器到物理寄存器的映射的系统,包括:
被配置为从当前在计数器空闲池中的多个计数器之中分配特定计数器、以计数来自多个逻辑寄存器之中的逻辑寄存器到多个物理寄存器之中的特定物理寄存器的映射的数目的装置,其中,来自所述多个逻辑寄存器之中的第一逻辑寄存器当前正映射到所述特定物理寄存器,所述分配响应于所述映射器单元将来自所述多个逻辑寄存器之中的第二逻辑寄存器映射到所述特定物理寄存器而对移动寄存器指令的执行,其中所述多个计数器的数目少于所述多个物理寄存器的数目;
被配置为响应于逻辑寄存器到所述特定物理寄存器的映射的所计数的数目递减到小于最小值、将所述特定计数器返回到所述计数器空闲池的装置。
11.如权利要求10所述的系统,还包括:
被配置为响应于接收到要求将所述第一逻辑寄存器复制到所述第二逻辑寄存器的移动寄存器指令、而访问所述第一逻辑寄存器所映射的特定物理寄存器的装置;
被配置为通过将所述第二逻辑寄存器映射到所述特定物理寄存器、而由所述映射器单元执行所述移动寄存器指令的装置;以及
被配置为由所述映射器单元将用于所述移动寄存器指令的完成指示符广播到用于追踪哪些指令已经完成的完成追踪单元的装置,对于所述移动寄存器指令,不将所述移动寄存器指令传递到发出队列。
12.如权利要求10所述的系统,还包括:
被配置为响应于接收到所述移动寄存器指令、识别所映射的所述特定物理寄存器、用于所述移动寄存器指令的执行的装置;
被配置为将所述特定物理寄存器与来自所述多个计数器之中的当前分配到所述多个物理寄存器的选集的多个活动追踪计数器进行比较;
被配置为响应于在所述多个活动追踪计数器之中未检测到任何分配到所述特定物理寄存器的计数器、通过将用于所述特定物理寄存器的标识符分配到所述特定计数器、将所述特定计数器的有效状态设置为有效、并且将所述特定计数器的计数设置为所述多个逻辑寄存器映射到所述物理寄存器的选集的数目、而从所述计数器空闲池中将所述特定计数器分配到所述特定物理寄存器的装置;以及
被配置为响应于检测到来自所述多个活动追踪计数器之中的所述特定计数器已经分配到所述特定物理寄存器、递增所述特定计数器的计数的装置。
13.如权利要求10所述的系统,还包括:
被配置为响应于所述映射器单元释放特定逻辑寄存器到所述特定物理寄存器的特定映射、递减所述特定计数器的计数、以减小逻辑寄存器到所述特定物理寄存器的映射的数目的计数的装置。
14.如权利要求10所述的系统,还包括:
被配置为响应于逻辑寄存器到所述特定物理寄存器的映射的所计数的数目递减到零、将所述特定物理寄存器释放到物理寄存器空闲池的装置。
15.如权利要求10所述的系统,还包括:
被配置为响应于所述映射器单元接收到所述移动寄存器指令、查找所述移动寄存器指令中的源逻辑寄存器所映射的所述特定物理寄存器、并在所述计数器空闲池中搜索可用计数器的装置;
被配置为响应于从所述计数器空闲池中检测到所述特定计数器可用、通过将所述特定计数器的有效状态设置为有效而激活所述计数器、并且通过将用于所述特定计数器的物理寄存器标识符设置为所述特定物理寄存器的指针而将所述特定计数器分配到所述特定物理寄存器的装置;以及
被配置为响应于从所述计数器空闲池中未检测到可用计数器、停顿所述移动寄存器指令直到所述计数器空闲池包括可用计数器的装置。
16.如权利要求10所述的系统,还包括:
被配置为响应于所述映射器单元接收到所述移动寄存器指令、在所述计数器空闲池中搜索可用计数器的装置;
被配置为响应于从所述计数器空闲池中未检测到任何可用计数器、停顿所述移动寄存器指令的装置;
被配置为响应于从所述计数器空闲池中检测到可用计数器、通过设置所述特定计数器的分配状态而预留所述可用计数器、以预留所述可用计数器的装置;以及
被配置为响应于所述映射器单元执行所述移动寄存器指令、将所述特定物理寄存器与活动追踪计数器进行比较的装置;
被配置为响应于所述映射器单元识别出已经分配到所述特定物理寄存器的所述特定计数器、通过清除所述分配状态而释放所预留的可用计数器的装置;
被配置为响应于所述映射器单元未识别出已经分配到所述特定物理寄存器的所述特定计数器、将所预留的可用计数器分配到所述特定物理寄存器的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/088,298 | 2011-04-15 | ||
US13/088,298 US8661230B2 (en) | 2011-04-15 | 2011-04-15 | Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750130A CN102750130A (zh) | 2012-10-24 |
CN102750130B true CN102750130B (zh) | 2014-12-10 |
Family
ID=46208955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210103724.XA Active CN102750130B (zh) | 2011-04-15 | 2012-04-10 | 分配计数器以追踪寄存器映射的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US8661230B2 (zh) |
CN (1) | CN102750130B (zh) |
DE (1) | DE102012206019A1 (zh) |
GB (1) | GB2490033B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8661230B2 (en) | 2011-04-15 | 2014-02-25 | International Business Machines Corporation | Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions |
US9170818B2 (en) * | 2011-04-26 | 2015-10-27 | Freescale Semiconductor, Inc. | Register renaming scheme with checkpoint repair in a processing device |
US9606800B1 (en) * | 2012-03-15 | 2017-03-28 | Marvell International Ltd. | Method and apparatus for sharing instruction scheduling resources among a plurality of execution threads in a multi-threaded processor architecture |
US9015428B2 (en) * | 2012-09-28 | 2015-04-21 | Hewlett-Packard Development Company, L.P. | Physical and logical counters |
US9733939B2 (en) * | 2012-09-28 | 2017-08-15 | Intel Corporation | Physical reference list for tracking physical register sharing |
US10417001B2 (en) * | 2012-12-27 | 2019-09-17 | Intel Corporation | Physical register table for eliminating move instructions |
US9256433B2 (en) * | 2013-03-15 | 2016-02-09 | Intel Corporation | Systems and methods for move elimination with bypass multiple instantiation table |
US9292288B2 (en) * | 2013-04-11 | 2016-03-22 | Intel Corporation | Systems and methods for flag tracking in move elimination operations |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9471325B2 (en) | 2013-07-12 | 2016-10-18 | Qualcomm Incorporated | Method and apparatus for selective renaming in a microprocessor |
US9424161B2 (en) * | 2014-06-08 | 2016-08-23 | Mediatek Inc. | Trace capture device with common structure and related trace capture method |
US10007525B2 (en) | 2014-10-24 | 2018-06-26 | International Business Machines Corporation | Freelist based global completion table having both thread-specific and global completion table identifiers |
US9430244B1 (en) * | 2015-10-28 | 2016-08-30 | Centipede Semi Ltd. | Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers |
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 |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
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 |
CN107451038B (zh) * | 2016-05-30 | 2020-05-19 | 龙芯中科技术有限公司 | 硬件事件采集方法、处理器和计算系统 |
CN108632403A (zh) * | 2018-03-30 | 2018-10-09 | 天津麒麟信息技术有限公司 | 一种基于飞腾处理器的mac和ip地址传递方法 |
US11417160B2 (en) | 2018-04-30 | 2022-08-16 | Hewlett-Packard Development Company, L.P. | Service kiosk access |
GB2576572B (en) * | 2018-08-24 | 2020-12-30 | Advanced Risc Mach Ltd | Processing of temporary-register-using instruction |
US11853798B2 (en) * | 2020-09-03 | 2023-12-26 | Microsoft Technology Licensing, Llc | Disaggregated memory pool assignment |
CN114356420B (zh) * | 2021-12-28 | 2023-02-17 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
GB2617082A (en) * | 2022-03-28 | 2023-10-04 | Advanced Risc Mach Ltd | Data processing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6519696B1 (en) * | 2000-03-30 | 2003-02-11 | I.P. First, Llc | Paired register exchange using renaming register map |
US6560671B1 (en) * | 2000-09-11 | 2003-05-06 | Intel Corporation | Method and apparatus for accelerating exchange or swap instructions using a register alias table (RAT) and content addressable memory (CAM) with logical register numbers as input addresses |
CN101566942A (zh) * | 2009-06-03 | 2009-10-28 | 上海高性能集成电路设计中心 | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
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 |
US6505293B1 (en) | 1999-07-07 | 2003-01-07 | Intel Corporation | Register renaming to optimize identical register values |
US6625723B1 (en) | 1999-07-07 | 2003-09-23 | Intel Corporation | Unified renaming scheme for load and store instructions |
US6553483B1 (en) * | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
US6772317B2 (en) * | 2001-05-17 | 2004-08-03 | Intel Corporation | Method and apparatus for optimizing load memory accesses |
US20050120191A1 (en) | 2003-12-02 | 2005-06-02 | Intel Corporation (A Delaware Corporation) | Checkpoint-based register reclamation |
US8230433B2 (en) * | 2007-06-26 | 2012-07-24 | International Business Machines Corporation | Shared performance monitor in a multiprocessor system |
US7711936B2 (en) * | 2007-08-28 | 2010-05-04 | Sun Microsystems, Inc. | Branch predictor for branches with asymmetric penalties |
US7904697B2 (en) | 2008-03-07 | 2011-03-08 | International Business Machines Corporation | Load register instruction short circuiting method |
US8661230B2 (en) | 2011-04-15 | 2014-02-25 | International Business Machines Corporation | Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions |
-
2011
- 2011-04-15 US US13/088,298 patent/US8661230B2/en active Active
-
2012
- 2012-04-10 CN CN201210103724.XA patent/CN102750130B/zh active Active
- 2012-04-12 DE DE102012206019A patent/DE102012206019A1/de not_active Ceased
- 2012-04-12 GB GB1206448.1A patent/GB2490033B/en active Active
- 2012-04-18 US US13/450,429 patent/US9069546B2/en active Active
-
2013
- 2013-10-29 US US14/065,795 patent/US9342307B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6519696B1 (en) * | 2000-03-30 | 2003-02-11 | I.P. First, Llc | Paired register exchange using renaming register map |
US6560671B1 (en) * | 2000-09-11 | 2003-05-06 | Intel Corporation | Method and apparatus for accelerating exchange or swap instructions using a register alias table (RAT) and content addressable memory (CAM) with logical register numbers as input addresses |
CN101566942A (zh) * | 2009-06-03 | 2009-10-28 | 上海高性能集成电路设计中心 | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2490033B (en) | 2013-04-24 |
US20120265971A1 (en) | 2012-10-18 |
DE102012206019A1 (de) | 2012-10-18 |
US9342307B2 (en) | 2016-05-17 |
CN102750130A (zh) | 2012-10-24 |
GB201206448D0 (en) | 2012-05-30 |
US8661230B2 (en) | 2014-02-25 |
US20140059329A1 (en) | 2014-02-27 |
US9069546B2 (en) | 2015-06-30 |
US20120265969A1 (en) | 2012-10-18 |
GB2490033A (en) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750130B (zh) | 分配计数器以追踪寄存器映射的方法和系统 | |
US11256507B2 (en) | Thread transition management | |
CN101165655A (zh) | 多处理器计算系统及其任务分配方法 | |
US20070226696A1 (en) | System and method for the execution of multithreaded software applications | |
US10223126B2 (en) | Out-of-order processor and method for back to back instruction issue | |
TW200405201A (en) | Scheduler for use in a microprocessor that supports data-speculative execution | |
EP2151752A1 (en) | Thread ordering techniques | |
CN101154202B (zh) | 管理多处理器计算机系统中的系统管理中断的系统和方法 | |
CN103218329A (zh) | 数字信号处理数据传输 | |
CN110297662B (zh) | 指令乱序执行的方法、处理器及电子设备 | |
US8296552B2 (en) | Dynamically migrating channels | |
US8230117B2 (en) | Techniques for write-after-write ordering in a coherency managed processor system that employs a command pipeline | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
US8930680B2 (en) | Sync-ID for multiple concurrent sync dependencies in an out-of-order store queue | |
US7386647B2 (en) | System and method for processing an interrupt in a processor supporting multithread execution | |
US8276151B2 (en) | Determination of running status of logical processor | |
CN117687701A (zh) | 一种基于多对多控制的kvm切换器及其控制方法 | |
US9189380B2 (en) | Systems and methods to save and restore a write gather pipe | |
CN117667223A (zh) | 一种数据冒险解决方法、计算引擎、处理器及电子设备 | |
TW536685B (en) | Group rename allocation for multiple register instructions | |
JPS602694B2 (ja) | マルチプログラム・コンピユ−タ・システム | |
JPS5897759A (ja) | メモリアクセス方式 | |
JPS6036618B2 (ja) | 情報処理システム |
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 |