CN111213124A - 在乱序处理器中完成合并的全局完成表条目 - Google Patents
在乱序处理器中完成合并的全局完成表条目 Download PDFInfo
- Publication number
- CN111213124A CN111213124A CN201880066937.5A CN201880066937A CN111213124A CN 111213124 A CN111213124 A CN 111213124A CN 201880066937 A CN201880066937 A CN 201880066937A CN 111213124 A CN111213124 A CN 111213124A
- Authority
- CN
- China
- Prior art keywords
- instructions
- entry
- flight instructions
- gct
- flight
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000011010 flushing procedure Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000203 mixture Substances 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
- 238000007667 floating Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100161473 Arabidopsis thaliana ABCB25 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101100096893 Mus musculus Sult2a1 gene Proteins 0.000 description 1
- 101150081243 STA1 gene Proteins 0.000 description 1
- 101100427545 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ULP2 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 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/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
-
- 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/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本发明的方面包括在乱序(OoO)处理器中检测第一组运行中指令中的所有指令具有完成状态。第一组运行中指令是全局完成表(GCT)条目中最早的一组。确定GCT中的条目与第一组运行中指令和紧接在第一组运行中指令之后调度的第二组运行中指令都相关联的合并条目。第一组运行中指令和第二组运行中指令在单个处理器周期中完成。完成至少部分基于检测到第一组运行中指令中的所有指令具有完成状态。完成包括请求释放第一组和第二组运行中指令使用的资源。
Description
技术领域
本发明的实施例总体上涉及乱序(OoO)处理器,并且更具体地涉及在乱序处理器中完成合并的全局完成表(GCT)条目。
背景技术
在乱序处理器中,指令排序单元(ISU)将组中的指令调度到各种发布队列,重命名寄存器以支持乱序执行,将来自各种发布队列的指令发布到执行流水线,完成已执行的指令并处理异常条件。寄存器重命名通常是在将指令放入各自的发布队列之前,由ISU中的映射器逻辑执行的。使用位于ISU的发布队列中的依赖性矩阵来跟踪指令之间的依赖性,并且ISU中的GCT会跟踪从调度到完成的所有运行中(in-flight)指令。
发明内容
本发明的实施例包括用于在乱序处理器中完成合并的全局完成表(GCT)条目的方法、系统和计算机程序产品。计算机实现的方法的非限制性示例包括在乱序处理器的指令排序单元(ISU)中检测第一组运行中指令中的所有指令的状态为已完成。第一组与GCT中的条目相关,该表跟踪运行中指令组的调度顺序和状态。调度顺序指示第一组运行中指令是与GCT相关联的最早指令组。确定GCT中的条目与第一组运行中指令以及紧接在第一组运行中指令之前调度的第二组运行中指令都相关联的合并条目。第一组运行中指令和第二组运行中指令在单个处理器周期中完成。完成至少部分基于检测到第一组运行中指令中的所有指令具有完成状态。完成包括请求释放第一组和第二组运行中指令使用的资源。
通过本发明的技术实现了附加的特征和优点。在此详细描述本发明的其他实施例和方面,并且将其视为所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,请参考说明书和附图。
附图说明
在说明书所附权利要求书中特别指出并明确要求保护本文所述的专有权的细节。通过以下结合附图的详细描述,本发明的实施例的前述以及其他特征和优点将变得显而易见,其中:
图1描绘了根据本发明一个或多个实施例的系统的框图,该系统包括乱序处理器的指令排序单元(ISU),用于在乱序处理器中提供合并的全局完成表(GCT)条目;
图2描绘了根据本发明一个或多个实施例的GCT,GCT中的链接以及用于GCT条目的组标签(GTAG)用于在乱序处理器中提供合并的全局完成表(GCT)条目;
图3描绘了根据本发明一个或多个实施例的在乱序处理器中合并GCT条目的流程图;
图4描绘了根据本发明的一个或多个实施例的在乱序处理器中合并GCT条目的框图;
图5描绘了根据本发明一个或多个实施例的由乱序处理器中的指令组利用的资源的框图;
图6描绘了根据本发明一个或多个实施例的用于在乱序处理器中完成合并的GCT条目的流程图;
图7描绘了根据本发明一个或多个实施例的用于在乱序处理器中实现合并的GCT条目的一些或所有方面的计算机系统的框图。
本文所描绘的图是说明性的。在不脱离本发明的精神的情况下,图或其中描述的操作可以有许多变型。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。同样,术语“耦合”及其变型描述了在两个元件之间具有通信路径,并且并不意味着元件之间没有中间元件/连接。它们之间所有这些变体都被视为说明书的一部分。
在附图和以下对所描述的实施例的详细描述中,在附图中示出的各个元件设有两个或三个数字的附图标记。除少数例外,每个参考数字的最左边的数字与该元素的第一个图相对应。
具体实施方式
本文所述的本发明的一个或多个实施例在乱序处理器的全局完成表(GCT)中提供合并的条目。通过将GCT中的多个条目合并或合并到单个GCT条目中来创建合并的条目。当与合并的GCT条目相对应的组中的所有指令都完成时(例如,下一个完成),则合并的条目中的所有组都作为一个单元同时完成。将组合并到GCT中的单个条目中可以释放GCT中的空间以供其他指令组使用,并且可以缓解由GCT的大小和运行时间长的指令组引起的瓶颈。
乱序处理器的指令排序单元(ISU)中的GCT跟踪从调度到完成的所有进行中的指令。在调度时,将一组指令中的完成位设置为反映该组中的有效指令。一条指令成功执行后(例如,没有拒绝),可以通过复位相应的完成位将其标记为完成。当一个组中的所有指令都标记为已完成并且该组是给定线程中最早的指令时,该组可以“完成”。当一个组完成,将所有指令的结果在架构上可见,并释放指令所占用的资源。
根据本发明的一个或多个实施例,刷新产生也由ISU处理,其中GCT将要丢弃的所有组的刷新合并到掩码中,每个组用掩码的一位来指示应刷新哪些组。GCT还可以通过使用掩码来执行部分组刷新,其中组中的每个指令用掩码的一位指示应刷新组中的哪些指令。
如本文所述,本发明的一个或多个实施例组合GCT条目以释放GCT中用于其他指令组的空间或条目。根据本发明的一个或多个实施例,当较早组还没有准备好要完成但较新组已经准备好要完成时(例如,该组中的所有指令都已经完成而没有麻烦/中断位),可以合并两个条目。在这种情况下,可以将GCT中(对应于较新指令组的)较新条目中的信息合并到GCT中(对应于较早指令组的)较早条目中,而GCT中较新条目可被释放供另一组新调度的指令使用。当较早条目卡住时,其他较新条目可以继续与较早条目(可能是或者可能不是GCT中最早的条目)合并。当由较早条目表示或相关联的组中的一个或多个指令尚未完成并且该组无法完成时,较早组将被卡住一段时间。例如,较早组可能一段时间无法完成(即卡住一段时间),因为它具有加载指令,数据必须来自主内存或远程缓存,这可能需要很长时间。
当较早组最终完成时,它释放负载重新排序队列(LRQ)条目、存储重新排序队列(SRQ)条目、有效地址表(EAT)条目以及组合或合并到较早GCT条目的所有组的资源。这使得与较新指令组相关联的GCT条目可以被释放并被重新使用(重新分配),而不必等待与较早组相关联的长时间运行的指令完成。通过更快地释放资源可以减少由于缺少可用的GCT条目使GCT成为瓶颈而导致调度暂缓的发生。
如本文中所使用的,术语“较新组”是指在“较早组”中的一组指令的最近或之后调度的一组指令。如本文所使用的,术语“紧随其后的组”或“下一个较早组”指的是在特定的指令组被调度之后被调度的第一组指令。如本文所使用的术语“紧随之前的组”或“下一个较早组”是指紧接在特定的指令组被调度之前被调度的指令组。如本文中所使用的,术语“最早的组”是指ISU中具有最早的调度时间的指令组,即,在GCT中已经存在了最长时间的指令组。
现在转到图1,总体上描绘了根据本发明一个或多个实施例的一种系统100的框图,该系统100包括乱序处理器的指令排序单元(ISU),用于在乱序处理器中提供合并的GCT。图1所示的系统100包括指令获取单元/指令解码单元(IFU/IDU)106,获取并解码一组指令以输入到设置块108,该设置块108准备解码后的指令以输入到ISU的映射器110。根据本发明的一个或多个实施例,IFU/IDU 106可一次获取和解码来自线程的六个指令。根据本发明的一个或多个实施例,发送给设置块108的六个指令可以包括六个非分支指令,五个非分支指令和一个分支指令,或四个非分支指令和两个分支指令。根据本发明的一个或多个实施例,设置块108在将获取的指令发送到ISU中的这些块之前,检查例如发布队列、完成表、映射器和其他资源中的条目中否存在足够的资源。
图1所示的映射器110将编程器指令(例如,逻辑寄存器名称)映射到处理器的物理资源(例如,物理寄存器地址)。图1中示出的各种映射器110包括条件寄存器(CR)映射器、链接/计数(LNK/CNT)寄存器映射器、整数异常寄存器(XER)映射器、用于映射通用寄存器(GPR)和矢量标量寄存器(VSR)的统一映射器(UMapper)、用于映射GPR和VSR的架构化映射器(ARCH Mapper)以及浮点状态和控制寄存器(FPSCR)映射器。
来自设置块108的输出也被输入到全局完成表(GCT)112,用于跟踪ISU中当前的所有指令。设置块108的输出也输入到调度单元114,用于将指令调度到发布队列。图1所示的ISU的实施例包括CR发布队列-CR ISQ116,接收并跟踪来自CR映射器的CR逻辑和移动指令以及相关CR寄存器的物理寄存器位置并将指令发布120给指令提取单元(IFU)124以执行CR逻辑指令和移动指令。图1中还显示了分支发布队列-分支ISQ 118,从LNK/CNT映射器接收并跟踪分支指令和LNK/CNT物理地址,并执行这些指令。如果预测的分支地址和/或方向不正确,则分支ISQ 118可以向IFU 124发出122指令以重定向指令获取。
来自调度逻辑的指令输出和来自LNK/CNT映射器,XER映射器,UMapper(GPR/VSR),ARCH映射器(GPR/VSR)和FPSCR映射器的重命名寄存器被输入到发布队列102。图1,发布队列102跟踪调度的定点指令(FX),加载指令(L),存储指令(S)和矢量和缩放器单元(VSU)指令。如图1的实施例所示,发布队列102被分成两部分,ISQ01020和ISQ11021,每个部分保存N/2条指令。当处理器以ST模式执行时,发布队列102可用作包含ISQ01020和ISQ11021的单个逻辑发布队列,以处理单个线程的所有指令(在此示例中为所有N条指令)。
当处理器以SMT(同时多线程)模式执行时,ISQ01020可用于处理来自第一线程的N/2条指令,ISQ11021用于处理来自第二线程ISQ11021的N/2条指令。
如图1所示,发布队列102向执行单元104发出指令,该执行单元被分成两组执行单元1040和1041。图1所示的两组执行单元1040和1041包括完整定点执行单元(完整FX0,完整FX1),加载执行单元(LU0,LU1),简单定点、存储数据和存储地址执行单元(简单FX0/STD0/STA0,简单FX1/STD1/STA1),浮点、矢量多媒体扩展、十进制浮点和存储数据执行单元(FP/VMX/DFP/STD0,FP/VMX/DFP/STD1)。
如图1所示,当处理器以ST模式执行时,第一组执行单元1040执行ISQ01020发布的指令,第二组执行单元1041执行ISQ11021发布的指令。在本发明的一个替代实施例中,当处理器以ST模式执行时,可以将发布队列102中的ISQ01020和ISQ11021两者发布的指令发布给第一组执行单元1040和第二组执行单元中1041的任何执行单元1040。
根据本发明的一个或多个实施例,当处理器以SMT模式执行时,第一组执行单元1040执行ISQ01020发布的第一线程的指令,第二组执行单元1041执行ISQ11021发布的第二线程的指令。
图1中所示的发布队列102中的条目的数目以及其他元素的大小(例如,总线宽度、队列大小)在本质上是示例性的,因为可以以各种不同大小的发布队列和其他元素实现本发明的实施例。根据本发明的一个或多个实施例,大小是可选择或可编程的。
现在转到图2,总体上示出了根据本发明一个或多个实施例的GCT、到GCT中的较早条目的链接以及用于标识GCT条目的组标签(GTAG)的框图200。框202描绘了在将(与较新指令组相关联的)条目“17”合并到(与较早指令组相关联的)条目“4”之前的GCT 2022、链接表2024和GTAG表2026。图2的框204描绘了在GCT的条目“17”的内容被合并到条目“4”之后的GCT 2042、链接表2044和GTAG表2046。
如先前所述,GCT 204在调度之后跟踪运行中指令直到完成。当调度一组指令时,向该组分配GTAG,GTAG对应于GCT 204中的条目并标识该组指令。GTAG被顺序地分配并且被本文描述的一个或多个实施例用以跟踪运行中指令组的调度顺序。与运行中指令相关联的资源可以使用GTAG来识别每个资源分配给哪组指令。当一组指令完成时,可以广播完成GTAG,以便可以释放与完成组相关联的资源并由新指令重新使用。
在乱序处理器中,指令可以在完成之前/而不是完成之后被刷新。从指令流水线中清除推测性指令的原因包括但不限于:分支错误预测、加载/存储乱序执行危险检测、上下文同步指令的执行以及异常条件。根据本发明的一个或多个实施例,GCT广播用于全部和部分组刷新的刷新组GTAG,使得与刷新的指令相关联的资源可以被释放并由新指令重新使用。对于部分组刷新,GTAG可以附带一个掩码,以指示正在刷新哪些指令。
如先前所描述,框202描绘在将(与条目“4”相比的下一个较新指令组相关联的)条目“17”合并到(与条目“17”相比的下一个较早指令组相关联的)条目“4”之前的GCT 2022、链接表2024和GTAG表2026。对于GCT 2022中的每个条目,链接表2024存储运行中指令紧随其后的组(较新组)的前向链接和运行中指令的紧随之前的组(较早组)的后向链接。在图2的框202中还示出了GTAG表2026,包括对于GCT 2022中的每个条目,当组完成时要广播的GTAG(标记为“Cmpl”的列)以及当组的全部或子集被刷新时要使用的GTAG(标为“F1”的列)。
如图2的框202所示,GCT 2022中条目“4”处的运行中指令组是最早运行中指令组(它没有反向链接),并且GCT 2022中条目“31”处的运行中指令组是GCT 2022中最新运行中指令组(它没有前向链接)。从GCT 2022中最早条目开始,图2的框202中所示的运行中指令组的调度顺序是GCT条目“4”处的GTAG为“3”的运行中指令组,在GCT条目“17”处的GTAG为“4”的运行中指令组,在GCT条目“11”处的GTAG为“5”的运行中指令组和在GCT条目“31”处的GTAG为“6”的运行中指令组。
图2中的框204描绘了在将(与条目“4”的下一个较新指令组相关联的)条目“17”合并到(与条目“17”的下一个较早指令组相关联的)条目“4”之后的GCT 2042、链接表2044和GTAG表2046。当合并完成时,GCT 2042中的合并条目“4”包括合并之前的条目“17”处的(GTAG为“4”的)组的完成信息和条目“4”处的(GTAG为“3”的)组的完成信息。一旦合并之前与条目“4”相关联的运行中组中的所有指令都已完成,则可以使用完成信息来完成两组指令。完成信息可以包括但不限于两组指令中存储操作的总数,两组指令中加载操作的总数,两组指令中的指令总数以及合并组的GTAG。如图2的框204所示,在条目“17”和“4”合并之后,GCT 2042中的条目“17”空闲或被释放。从GCT 2024中最早条目开始的图2的框204所示的运行中指令组的调度顺序(如链接表2044所示)是用于刷新的GTAG为“3”和用于完成的GTAG为“4”的GCT条目“4”处的运行中指令组、GTAG为“5”的GCT条目“11”处的运行中指令组,以及GTAG为“6”的GCT条目“31”处的运行中指令组的合并组。
如果较早组刷新而不是完成,则在GCT条目“4”处的运行中指令的合并组使用不同的GTAG。根据一个或多个实施例,当合并的组完成时,与合并的较新指令组或较低(即,较早指令)的GTAG相关联的任何资源被释放。这就是为什么合并的GCT条目的完成被更改为指示较新指令的原因。这与合并组刷新时的情况形成对比,合并组刷新导致导致与刷新指令组或较高(即,较新指令)的GTAG相关联的任何资源被释放。由于在合并组中,来自较新组的所有指令均已完成,只有来自较早组的指令可能尚未完成因而可能导致刷新。这就是为什么合并GCT条目的刷新GTAG保持不变并指示较早指令组的GTAG的原因。
图2的方框202中示出的GCT 2022包括可以由所有活动线程动态共享的32个条目。在单线程(ST)模式下,每个GCT条目对应于一组指令。在多线程(MT)模式下(例如,同时MT或“SMT”),每个GCT条目最多可以包含来自同一线程的两个调度组。GCT 2022中的每个条目都包含条目中所含组中每个指令的完成位。可以在GCT 2022中存储任意数量的条目(例如16、64、100、128和256),出于讨论目的,32个条目是非限制性示例条目。
现在转到图3,总体上示出了根据本发明一个或多个实施例的在乱序处理器中合并GCT条目的流程图300。在框302,按顺序将GTAG分配给每组已调度指令,以帮助跟踪运行中的已调度指令组的调度顺序。在框304,识别运行中指令的较新组(例如,在时间T+1调度)以与运行中指令的较早组(例如,在时间T发送)合并。识别可以包括检测较新组中的所有指令都具有完成状态。较新组可以与GCT中的第一分配条目相关联,而紧随较新组(它们是连续的)之前调度的较早组可以与GCT中的第二分配条目相关联。
在框306,将与较新组相关联的GCT中的条目的内容合并到与较早未完成的指令组相关联的GCT中的条目的内容,以创建包括完成信息的合并的分配条目用于两组运行中指令。在框308,更新GCT条目之间的后向和前向链接以移除到较新组的链接。在框310,将较新组的GTAG替换为合并组的完成GTAG以用于合并的较早组的完成,而不改变合并组的刷新GTAG。在框312,与较新组相关联的GCT条目被重新分配并且可供新的一组指令使用。
现在转到图4,总体上示出了根据本发明一个或多个实施例的在乱序处理器中合并GCT条目的框图400。块402示出了链表,该链表是用于逻辑上表示图2所示的GCT 2022、链接表2024和GTAG表2026的一个选项。块404示出了代表GCT条目“17”和“4”合并为单个合并的条目“4”之后如图2所示的GCT 2042、链接表2044和GTAG表2046的链表,如图4的框406中所示,至少部分地基于检测到与GCT条目“11”相关联的指令组中的所有指令具有完成状态,较新组条目到较早组的合并可以继续将GCT条目“11”合并到合并条目“4”中。合并完成后,可以重新使用GCT条目“11”并将其与新的一组指令相关联。为了说明的目的,图4示出了较新GCT条目与GCT中的最早条目合并。但是,当合并的两个条目中较早条目不是GCT中最早条目时,该机制也起作用。
现在转到图5,总体上示出了根据本发明一个或多个实施例的由乱序处理器中的指令组利用的示例资源的框图500。图5包括基于指令的调度顺序而顺序访问的先进先出(FIFO)顺序资源502以及以随机顺序分配给指令组的随机顺序资源504。加载重排序队列(LRQ)和存储重排序队列(SRQ)是FIFO顺序资源502的示例。根据本发明的一个或多个实施例,LRQ的特征在于按顺序(调度顺序)分配和释放。分配时,当一组指令完成时,更改(指向最早条目的)尾指针,并且每个线程对LRQ进行分区。例如,如果一组指令具有两个加载指令并且该组指令完成,则在队列中将LRQ的尾指针前移两个条目。根据本发明的一个或多个实施例,当较新指令组被合并到下一较早指令组中,较新指令组中的负载数量被添加到较早指令组中的负载数量。当合并组完成,调整LRQ尾指针以考虑两个指令组中的负载。SRQ与LRQ相似,但是在从SRQ到高速缓存和内存子系统的存储耗尽后可能会发生释放。可以是FIFO顺序资源502的另一个资源是有效地址表(EAT),该地址表的特征在于按顺序分配和释放,以及更改尾指针完成线程。
图5所示的寄存器映射器表是随机顺序资源504的示例。寄存器映射器表可以由图1所示的映射器110生成,以将(由GTAG标识的)指令组与物理寄存器相关联(每个物理寄存器一个条目)。如图5的寄存器映射器表所示,有“R”个寄存器,与“GTAG X”的GTAG相关联的指令组使用物理寄存器“1”和“4”,与“GTAG Y”的GTAG相关联的指令组使用物理寄存器“2”,“3”和“7”。当一组指令完成并且广播了完成GTAG,与广播GTAG相同或小于广播GTAG(即,较早指令组)的GTAG相关联的所有物理寄存器都被被释放以由新指令组使用。当刷新一组指令并广播刷新GTAG,可以释放与广播GTAG相同或与大于广播GTAG的GTAG(即较新指令组)相关联的物理寄存器以由新指令组使用。因此,寄存器映射器表可以至少部分地基于例如从GCT与刷新GTAG或完成GTAG一同接收到的刷新或完成指示符来释放条目以由新调度指令使用。
现在转向图6,总体上示出了根据本发明一个或多个实施例的用于在乱序处理器中完成合并的GCT条目的流程图600。本发明的一个或多个实施例允许单个完成来扫描/完成两组或更多组指令。当反映两个或更多个合并GCT条目的组合的GCT条目完成时,本发明的一个或多个实施例处理资源的释放。当合并的GCT条目完成后,大量资源可以释放出来并可以用于调度新指令。通过将尾指针移动要释放的资源量,可以很容易地释放由先进先出(FIFO)分配/释放机制管理的资源(如先前针对LRQ资源释放机制的描述)。对于以随机顺序分配/释放的资源(例如,寄存器映射器表),可以使用状态机比较广播的GTAG号与每个映射器条目中的GTAG值以确定要释放的映射器条目。例如,当发生完成时,可以将正在广播的完成GTAG与寄存器映射器表中每个条目中的GTAG值进行比较,以确定映射器表条目的GTAG值是否等于或小于该完成GTAG并释放条目。同样,当发生刷新时,可以将正在广播的刷新GTAG与寄存器映射器表中的每个条目进行比较,以确定映射器表条目的GTAG值是否等于或大于刷新GTAG并释放条目。
在图6所示的处理流程的框602监视运行中指令组中指令的状态。如果在框604确定与GCT中的合并条目相关联的组中的所有指令都完成,则流程继续到框606,其中对合并条目中的所有组执行完成处理。根据本发明的一个或多个实施例,完成处理可以包括请求释放并释放由合并条目中的所有指令组使用的资源。如前所述,资源可以包括先进先出(FIFO)资源,请求释放可以包括将指针移动到FIFO资源中指定位置的请求。同样如前所述,资源可以包括随机顺序资源,并且请求释放可以包括移除与特定标签(例如,小于指定值的GTAG)相关联的条目的请求。
如果在框604确定与GCT中的合并条目相关联的组中的所有指令尚未完成,则流程继续到框608处,其中确定是否应该刷新与合并条目相关联的组中指令的全部或子集(例如,该组中的一条未完成的分支指令已执行并发现预测有误,因此需要在错误预测的分支指令之后立即刷新线程中的所有指令)。如果在框608确定应当刷新与GCT中的合并条目相关联的组中的指令,则流程继续到框610,其中对合并条目中的所有组执行刷新处理。如果在框608确定不应刷新与GCT中的合并条目相关联的组中的指令,则流程继续到框602,监视运行中指令的状态。
图6所示的处理通过允许分配给与合并的GCT条目相关联的多个GTAG的资源在一个周期中释放。例如,如果每个处理器周期每个线程允许一个组完成,并且准备从SMT4内核的四个线程中完成四个合并组,并且如果这四个合并组代表8个GTAG,则与所有8个GTAG相关联的资源可以在一个周期内释放(并解除指令调度)。
现在转向图7,总体上示出了根据本发明一个或多个实施例的用于实现在乱序处理器中提供合并的GCT条目的一些或所有方面的计算机系统的框图。本文描述的处理可以以硬件、软件(例如,固件)或其组合来实现。在示例性实施例中,所描述的方法可以至少部分地以硬件来实现,并且可以是专用或通用计算机系统700(例如移动设备、个人计算机、工作站、小型计算机、或大型机。
在示例性实施例中,如图7所示,计算机系统700包括处理器705、耦合到存储器控制器715的存储器712以及一个或多个输入设备745和/或输出设备747,例如外围设备,这些设备747和745通过本地I/O控制器735通信地耦合。这些设备747和745可以包括例如打印机、扫描仪、麦克风等。常规键盘750和鼠标755可以耦合到I/O控制器735。I/O控制器735可以是例如本领域中已知的一条或多条总线或其他有线或无线连接。I/O控制器735可以具有为了简化而被省略的附加元件,诸如控制器、缓冲器(高速缓存)、驱动器、转发器和接收器,以实现通信。
I/O设备747、745可以进一步包括输入和输出两者的设备,例如磁盘和磁带存储、网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统、或网络)、射频(RF)或其他收发器、电话接口、网桥、路由器等。
处理器705是用于执行硬件指令或软件(特别是存储在存储器712中的硬件指令或软件)的硬件设备。处理器705可以是定制或商用处理器,中央处理器(CPU)、辅助处理器、与计算机系统700相关联的处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、微处理器或其他用于执行指令的设备。处理器705可以包括高速缓存,例如但不限于用于加速可执行指令取回的指令高速缓存,用于加速数据取回和存储的数据高速缓存以及用于加速的转换后备缓冲器(TLB)。可执行指令和数据的虚拟到物理地址转换。可以将高速缓存组织为更多高速缓存级别(L1,L2等)的层次结构。
存储器712可以包括易失性存储元件(例如,随机存取存储器、RAM,例如DRAM、SRAM、SDRAM等)和非易失性存储元件(例如,ROM、可擦除可编程只读存储器(EPROM),可电子擦除的可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软盘、盒带、盒式磁带等)。此外,存储器712可以结合电子、磁性、光学或其他类型的存储介质。注意,存储器712可以具有分布式架构,其中各种组件彼此远离放置,但是可以由处理器705访问。
存储器712中的指令可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令的有序列表。在图7的示例中,存储器712中的指令包括合适的操作系统(OS)711。操作系统711本质上可以控制其他计算机程序的执行,并提供调度、输入输出控制、文件和数据管理、内存管理、通讯控制和相关服务。
附加数据,例如包括用于处理器705的指令或其他可检索信息,可以存储在存储器727中,该存储器可以是诸如硬盘驱动器或固态驱动器的存储设备。存储器712或存储器727中存储的指令可以包括那些使处理器705能够执行本公开的调度系统和方法的一个或多个方面的指令。
计算机系统700可以进一步包括耦合至显示器730的显示控制器725。在示例性实施例中,计算机系统700可以进一步包括用于耦合至网络765的网络接口760。网络765可以是基于IP的网络,用于经由宽带连接在计算机系统700与外部服务器、客户端等之间进行通信。网络765在计算机系统700和外部系统之间发送和接收数据。在示例性实施例中,网络765可以是由服务提供商管理的被管理IP网络。可以以无线方式(例如,使用诸如WiFi,WiMax等的无线协议和技术)来实现网络765。网络765也可以是诸如局域网、广域网、城域网、区域网络、Internet或其他类似类型的网络环境之类的分组交换网络。网络765可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人局域网(PAN)、虚拟专用网(VPN)、内联网或其他合适的网络系统,并且可能包括用于接收和发送信号的设备。
用于在乱序处理器中提供合并的GCT条目的系统和方法可以全部或部分地体现在计算机程序产品或计算机系统700中,如图7所示。
在此参考相关附图描述了本发明的各种实施例。在不脱离本发明范围的情况下,可以设计出替代实施例。尽管在以下描述和附图中在元件之间阐述了各种连接和位置关系(例如,在上方、下方、相邻等),但是本领域技术人员将认识到,本文所述的许多位置关系是取向-即使更改了方向,在保持所描述的功能时也可以独立使用。除非另有说明,否则这些连接和/或位置关系可以是直接的或间接的,并且本发明并不意图在这方面进行限制。因此,实体的耦合可以指直接或间接耦合,并且实体之间的位置关系可以是直接或间接的位置关系。此外,本文描述的各种任务和过程步骤可以被合并到具有本文未详细描述的附加步骤或功能的更全面的过程或过程中。
以下定义和缩写将用于权利要求书和说明书的解释。如本文所使用的,术语“包括”、“包含”、“具有”或其任何其他变型旨在涵盖非排他包容。例如,包括一系列元素的组合物、混合物、过程、方法、物品或设备不一定仅限于那些元素,而是可以包括未明确列出或此类组合物、混合物、过程、方法、物品或设备所固有的其他元素。
另外,术语“示例性”在本文中用来表示“用作示例、实例或说明”。本文中被描述为“示例性”的任何实施例或设计不必被解释为比其他实施例或设计更优选或有利。术语“至少一个”和“一个或多个”应理解为包括大于或等于一的任何整数,即一个、两个、三个、四个等。术语“多个”应理解为包括。大于或等于2任何整数,即两个,三个,四个,五个等。术语“连接”可以包括间接“连接”和直接“连接”。
术语“约”、大约”、“基本上”及其变体意在包括与基于可用在提交申请时的设备的特定数量的测量相关的误差程度。例如,“约”可以包括给定值的±8%或5%,或2%的范围。
为了简洁起见,在此可以或可以不详细描述与制造和使用本发明的方面有关的常规技术。特别地,众所周知,实现本文所述的各种技术特征的计算系统和特定计算机程序的各个方面。因此,为了简洁起见,在不提供公知的系统和/或处理细节的情况下,本文仅简要提及或完全省略了许多常规的实施细节。
本发明可以是系统,方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及传统的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种计算机实现的方法,包括:
在乱序(OoO)处理器的指令排序单元(ISU)中检测第一组运行中指令中的所有指令的状态为已完成,该第一组与跟踪运行中指令组的调度顺序和状态的全局完成表(GCT)中的条目相关联,其中,其中调度顺序指示该第一组运行中指令是与GCT相关联的最早指令组;
确定GCT中的条目与第一组运行中指令以及紧接在第一组运行中指令之后调度的第二组运行中指令都相关联的合并条目;
在单个处理器周期中完成第一组运行中指令和第二组运行中指令,完成至少部分基于检测到第一组运行中指令中的所有指令均具有完成状态,完成包括请求释放第一组和第二组运行中指令使用的资源。
2.根据权利要求1所述的计算机实现的方法,其中完成还包括释放由所述第一组和第二组运行中指令使用的资源。
3.根据权利要求1所述的计算机实现的方法,其中合并条目还与紧接在第二组运行中指令之前调度的至少另一组运行中指令相关联。
4.如权利要求1所述的计算机实现的方法,其中资源包括按顺序分配的先进先出(FIFO)资源,并且请求释放包括将指针移动到所述FIFO资源中的指定位置的请求。
5.如权利要求4所述的计算机实现的方法,其中所述FIFO资源选自由加载重排序队列(LRQ)中的条目、存储重排序队列(SRQ)中的条目和有效地址表(EAT)的中的条目组成的组。
6.根据权利要求1所述的计算机实现的方法,其中资源包括以随机顺序分配的随机顺序资源。
7.根据权利要求3所述的计算机实现的方法,其中随机顺序资源是由寄存器映射器表指定的寄存器。
8.一种系统,包括:
具有计算机可读指令的存储器;和
用于执行计算机可读指令的一个或多个处理器,该计算机可读指令控制一个或多个处理器以执行以下操作:
在乱序(OoO)处理器的指令排序单元(ISU)中检测第一组运行中指令中的所有指令的状态为已完成,该第一组与跟踪运行中指令组的调度顺序和状态的全局完成表(GCT)中的条目相关联,其中,其中调度顺序指示该第一组运行中指令是与GCT相关联的最早指令组;
确定GCT中的条目与第一组运行中指令以及紧接在第一组运行中指令之后调度的第二组运行中指令都相关联的合并条目;
在单个处理器周期中完成第一组运行中指令和第二组运行中指令,完成至少部分基于检测到第一组运行中指令中的所有指令均具有完成状态,完成包括请求释放第一组和第二组运行中指令使用的资源。
9.根据权利要求8所述的系统,其中完成还包括释放由所述第一组和第二组运行中指令使用的资源。
10.根据权利要求8所述的系统,其中合并条目还与紧接在第二组运行中指令之前调度的至少另一组运行中指令相关联。
11.根据权利要求8所述的系统,其中资源包括按顺序分配的先进先出(FIFO)资源,并且请求释放包括将指针移动到所述FIFO资源中的指定位置的请求。
12.根据权利要求11所述的系统,其中所述FIFO资源选自由加载重排序队列(LRQ)中的条目、存储重排序队列(SRQ)中的条目和有效地址表(EAT)的中的条目组成的组。
13.根据权利要求8所述的系统,其中资源包括以随机顺序分配的随机顺序资源。
14.根据权利要求8所述的系统,其中随机顺序资源是由寄存器映射器表指定的寄存器。
15.一种计算机程序产品,包括计算机可读存储介质,该计算机可读存储介质具有体现在其上的程序指令,所述程序指令可由处理器执行以使所述处理器执行以下操作:
在乱序(OoO)处理器的指令排序单元(ISU)中检测第一组运行中指令中的所有指令的状态为已完成,该第一组与跟踪运行中指令组的调度顺序和状态的全局完成表(GCT)中的条目相关联,其中,其中调度顺序指示该第一组运行中指令是与GCT相关联的最早指令组;
确定GCT中的条目与第一组运行中指令以及紧接在第一组运行中指令之后调度的第二组运行中指令都相关联的合并条目;
在单个处理器周期中完成第一组运行中指令和第二组运行中指令,完成至少部分基于检测到第一组运行中指令中的所有指令均具有完成状态,完成包括请求释放第一组和第二组运行中指令使用的资源。
16.根据权利要求15所述的计算机程序产品,其中完成还包括释放由所述第一组和第二组运行中指令使用的资源。
17.根据权利要求15所述的计算机程序产品,其中合并条目还与紧接在第二组运行中指令之前调度的至少另一组运行中指令相关联。
18.根据权利要求15所述的计算机程序产品,其中资源包括按顺序分配的先进先出(FIFO)资源,并且请求释放包括将指针移动到所述FIFO资源中的指定位置的请求。
19.根据权利要求18所述的计算机程序产品其中所述FIFO资源选自由加载重排序队列(LRQ)中的条目、存储重排序队列(SRQ)中的条目和有效地址表(EAT)的中的条目组成的组。
20.根据权利要求15所述的计算机程序产品,其中资源包括以随机顺序分配的随机顺序资源。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/826,754 US10572264B2 (en) | 2017-11-30 | 2017-11-30 | Completing coalesced global completion table entries in an out-of-order processor |
US15/826,754 | 2017-11-30 | ||
PCT/IB2018/058800 WO2019106461A1 (en) | 2017-11-30 | 2018-11-09 | Completing coalesced global completion table entries in an out-of-order processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111213124A true CN111213124A (zh) | 2020-05-29 |
CN111213124B CN111213124B (zh) | 2023-09-29 |
Family
ID=66633141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880066937.5A Active CN111213124B (zh) | 2017-11-30 | 2018-11-09 | 在乱序处理器中完成合并的全局完成表条目 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10572264B2 (zh) |
JP (1) | JP7203440B2 (zh) |
CN (1) | CN111213124B (zh) |
DE (1) | DE112018006127B4 (zh) |
GB (1) | GB2581759B (zh) |
WO (1) | WO2019106461A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270971A (zh) * | 2023-09-15 | 2023-12-22 | 上海合芯数字科技有限公司 | 加载队列控制方法、装置及处理器 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10802829B2 (en) | 2017-11-30 | 2020-10-13 | International Business Machines Corporation | Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor |
US10942747B2 (en) | 2017-11-30 | 2021-03-09 | International Business Machines Corporation | Head and tail pointer manipulation in a first-in-first-out issue queue |
US10564979B2 (en) | 2017-11-30 | 2020-02-18 | International Business Machines Corporation | Coalescing global completion table entries in an out-of-order processor |
US10922087B2 (en) | 2017-11-30 | 2021-02-16 | International Business Machines Corporation | Block based allocation and deallocation of issue queue entries |
US10929140B2 (en) | 2017-11-30 | 2021-02-23 | International Business Machines Corporation | Scalable dependency matrix with a single summary bit in an out-of-order processor |
US10713057B2 (en) * | 2018-08-23 | 2020-07-14 | International Business Machines Corporation | Mechanism to stop completions using stop codes in an instruction completion table |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336183B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for executing store instructions |
US6553480B1 (en) * | 1999-11-05 | 2003-04-22 | International Business Machines Corporation | System and method for managing the execution of instruction groups having multiple executable instructions |
US6721874B1 (en) * | 2000-10-12 | 2004-04-13 | International Business Machines Corporation | Method and system for dynamically shared completion table supporting multiple threads in a processing system |
CN1542607A (zh) * | 2003-04-21 | 2004-11-03 | �Ҵ���˾ | 同时多线程处理器及提高其性能的方法 |
US20110302392A1 (en) * | 2010-06-04 | 2011-12-08 | International Business Machines Corporation | Instruction tracking system for processors |
US20170132010A1 (en) * | 2015-11-11 | 2017-05-11 | Arm Limited | Apparatus and method for supporting out-of-order program execution of instructions |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655096A (en) | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
US5710902A (en) | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
USRE38599E1 (en) | 1996-06-11 | 2004-09-21 | Sun Microsystems, Inc. | Pipelined instruction dispatch unit in a superscalar processor |
US6065105A (en) | 1997-01-08 | 2000-05-16 | Intel Corporation | Dependency matrix |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6463523B1 (en) | 1999-02-01 | 2002-10-08 | Compaq Information Technologies Group, L.P. | Method and apparatus for delaying the execution of dependent loads |
US6425074B1 (en) | 1999-09-10 | 2002-07-23 | Advanced Micro Devices, Inc. | Method and apparatus for rapid execution of FCOM and FSTSW |
US6557095B1 (en) | 1999-12-27 | 2003-04-29 | Intel Corporation | Scheduling operations using a dependency matrix |
US6633970B1 (en) | 1999-12-28 | 2003-10-14 | Intel Corporation | Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer |
JP3629551B2 (ja) | 2000-01-06 | 2005-03-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 基本キャッシュ・ブロックを利用したマイクロプロセッサ |
US6931639B1 (en) | 2000-08-24 | 2005-08-16 | International Business Machines Corporation | Method for implementing a variable-partitioned queue for simultaneous multithreaded processors |
US7865747B2 (en) | 2000-10-31 | 2011-01-04 | International Business Machines Corporation | Adaptive issue queue for reduced power at high performance |
US6988186B2 (en) | 2001-06-28 | 2006-01-17 | International Business Machines Corporation | Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry |
IL161107A0 (en) | 2001-09-28 | 2004-08-31 | Tidal Networks Inc | Multi-threaded packet processing engine for stateful packet processing |
US7133925B2 (en) | 2002-07-15 | 2006-11-07 | Hewlett-Packard Development Company, L.P. | System, method, and format thereof for scalable encoded media delivery |
US7219249B1 (en) | 2002-12-03 | 2007-05-15 | The Research Foundation Of State University Of New York | System and method for reducing power requirements of microprocessors through dynamic allocation of datapath resources |
US7194603B2 (en) * | 2003-04-23 | 2007-03-20 | International Business Machines Corporation | SMT flush arbitration |
US20060095732A1 (en) | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
US7464253B2 (en) | 2006-10-02 | 2008-12-09 | The Regents Of The University Of California | Tracking multiple dependent instructions with instruction queue pointer mapping table linked to a multiple wakeup table by a pointer |
US7689812B2 (en) | 2007-02-14 | 2010-03-30 | International Business Machines Corporation | Method and system for restoring register mapper states for an out-of-order microprocessor |
CN101034345A (zh) | 2007-04-16 | 2007-09-12 | 中国人民解放军国防科学技术大学 | 流处理器中数据流、指令流的控制方法 |
US20080320274A1 (en) | 2007-06-19 | 2008-12-25 | Raza Microelectronics, Inc. | Age matrix for queue dispatch order |
US20090100249A1 (en) | 2007-10-10 | 2009-04-16 | Eichenberger Alexandre E | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core |
JP2009181163A (ja) | 2008-01-29 | 2009-08-13 | Kyoto Univ | マイクロプロセッサならびにビット・ベクタのエンコーディング方法およびビット・ベクタの生成方法 |
US9652231B2 (en) | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
US8103852B2 (en) | 2008-12-22 | 2012-01-24 | International Business Machines Corporation | Information handling system including a processor with a bifurcated issue queue |
US8127116B2 (en) | 2009-04-03 | 2012-02-28 | International Business Machines Corporation | Dependency matrix with reduced area and power consumption |
US8131976B2 (en) | 2009-04-13 | 2012-03-06 | International Business Machines Corporation | Tracking effective addresses in an out-of-order processor |
US9489207B2 (en) | 2009-04-14 | 2016-11-08 | International Business Machines Corporation | Processor and method for partially flushing a dispatched instruction group including a mispredicted branch |
US9058180B2 (en) | 2009-06-29 | 2015-06-16 | Oracle America, Inc. | Unified high-frequency out-of-order pick queue with support for triggering early issue of speculative instructions |
US8521992B2 (en) | 2009-12-22 | 2013-08-27 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
US9047079B2 (en) | 2010-02-19 | 2015-06-02 | International Business Machines Corporation | Indicating disabled thread to other threads when contending instructions complete execution to ensure safe shared resource condition |
US8667260B2 (en) | 2010-03-05 | 2014-03-04 | International Business Machines Corporation | Building approximate data dependences with a moving window |
US8392672B1 (en) | 2010-10-25 | 2013-03-05 | Juniper Networks, Inc. | Identifying unallocated memory segments |
US10346173B2 (en) | 2011-03-07 | 2019-07-09 | Oracle International Corporation | Multi-threaded instruction buffer design |
CN102360309B (zh) | 2011-09-29 | 2013-12-18 | 中国科学技术大学苏州研究院 | 片上多核异构系统的调度系统与调度执行方法 |
US9182991B2 (en) | 2012-02-06 | 2015-11-10 | International Business Machines Corporation | Multi-threaded processor instruction balancing through instruction uncertainty |
US9817667B2 (en) | 2013-05-23 | 2017-11-14 | Advanced Micro Devices, Inc. | Techniques for scheduling operations at an instruction pipeline |
US9513924B2 (en) | 2013-06-28 | 2016-12-06 | Globalfoundries Inc. | Predictor data structure for use in pipelined processing |
GB2510655B (en) | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
US9158573B2 (en) | 2013-12-12 | 2015-10-13 | International Business Machines Corporation | Dynamic predictor for coalescing memory transactions |
US9146774B2 (en) | 2013-12-12 | 2015-09-29 | International Business Machines Corporation | Coalescing memory transactions |
US9766894B2 (en) | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Method and apparatus for enabling a processor to generate pipeline control signals |
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 |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US20170344374A1 (en) * | 2016-05-26 | 2017-11-30 | Centipede Semi Ltd. | Processor with efficient reorder buffer (rob) management |
US11175923B2 (en) | 2017-02-13 | 2021-11-16 | International Business Machines Corporation | Comparing load instruction address fields to store instruction address fields in a table to delay issuing dependent load instructions |
-
2017
- 2017-11-30 US US15/826,754 patent/US10572264B2/en active Active
-
2018
- 2018-11-09 WO PCT/IB2018/058800 patent/WO2019106461A1/en active Application Filing
- 2018-11-09 DE DE112018006127.2T patent/DE112018006127B4/de active Active
- 2018-11-09 JP JP2020528219A patent/JP7203440B2/ja active Active
- 2018-11-09 CN CN201880066937.5A patent/CN111213124B/zh active Active
- 2018-11-09 GB GB2009231.8A patent/GB2581759B/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336183B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for executing store instructions |
US6553480B1 (en) * | 1999-11-05 | 2003-04-22 | International Business Machines Corporation | System and method for managing the execution of instruction groups having multiple executable instructions |
US6721874B1 (en) * | 2000-10-12 | 2004-04-13 | International Business Machines Corporation | Method and system for dynamically shared completion table supporting multiple threads in a processing system |
CN1542607A (zh) * | 2003-04-21 | 2004-11-03 | �Ҵ���˾ | 同时多线程处理器及提高其性能的方法 |
US20110302392A1 (en) * | 2010-06-04 | 2011-12-08 | International Business Machines Corporation | Instruction tracking system for processors |
US20170132010A1 (en) * | 2015-11-11 | 2017-05-11 | Arm Limited | Apparatus and method for supporting out-of-order program execution of instructions |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270971A (zh) * | 2023-09-15 | 2023-12-22 | 上海合芯数字科技有限公司 | 加载队列控制方法、装置及处理器 |
CN117270971B (zh) * | 2023-09-15 | 2024-03-19 | 上海合芯数字科技有限公司 | 加载队列控制方法、装置及处理器 |
Also Published As
Publication number | Publication date |
---|---|
DE112018006127B4 (de) | 2022-09-29 |
US20190163491A1 (en) | 2019-05-30 |
GB2581759A (en) | 2020-08-26 |
GB2581759B (en) | 2021-01-20 |
CN111213124B (zh) | 2023-09-29 |
US10572264B2 (en) | 2020-02-25 |
JP7203440B2 (ja) | 2023-01-13 |
DE112018006127T5 (de) | 2020-08-13 |
GB202009231D0 (en) | 2020-07-29 |
WO2019106461A1 (en) | 2019-06-06 |
JP2021504807A (ja) | 2021-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111201511B (zh) | 在乱序处理器中合并全局完成表条目 | |
CN111213124B (zh) | 在乱序处理器中完成合并的全局完成表条目 | |
US10922087B2 (en) | Block based allocation and deallocation of issue queue entries | |
US10942747B2 (en) | Head and tail pointer manipulation in a first-in-first-out issue queue | |
US10884753B2 (en) | Issue queue with dynamic shifting between ports | |
US10901744B2 (en) | Buffered instruction dispatching to an issue queue | |
US10802829B2 (en) | Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor | |
US10564976B2 (en) | Scalable dependency matrix with multiple summary bits in an out-of-order processor | |
US10929140B2 (en) | Scalable dependency matrix with a single summary bit in an out-of-order processor | |
US10628166B2 (en) | Allocating and deallocating reorder queue entries for an out-of-order processor | |
US11157280B2 (en) | Dynamic fusion based on operand size | |
US11269647B2 (en) | Finish status reporting for a simultaneous multithreading processor using an instruction completion table | |
US10387162B2 (en) | Effective address table with multiple taken branch handling for out-of-order processors | |
US10481915B2 (en) | Split store data queue design for an out-of-order processor | |
CN111226196B (zh) | 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 | |
US11256509B2 (en) | Instruction fusion after register rename | |
US20170277535A1 (en) | Techniques for restoring previous values to registers of a processor register file | |
US10705847B2 (en) | Wide vector execution in single thread mode for an out-of-order processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |