根据存储排出合并唤醒存储相关加载的面积和功率高效机制的制作方法

文档序号:30434664发布日期:2022-06-15 19:01阅读:69来源:国知局
根据存储排出合并唤醒存储相关加载的面积和功率高效机制的制作方法

1.本发明的实施例总体上涉及计算机处理系统,并且更具体地涉及乱序处理器(out-of-order processor)中的指令排序(instruction sequencing)。


背景技术:

2.在现代计算机处理系统中实现的微处理器经常无序地执行加载和存储,以避免在等待完成先前的指令时空闲。同时,处理器可处理能够立即且独立地运行的下一条或多条指令。当数据加载和数据存储无序执行时,实现专用缓冲器以跟踪加载和存储之间的数据相关性以确保加载和存储以正确的程序次序观察数据。在某些架构中,数据存储将不会写入高速缓存,直到存储已经在其乱序处理中完成,并且因此在程序序列中较新的不同数据加载可能需要较旧存储的数据的结果。然而,由于数据尚未写入到高速缓存,因此必须实施精确的数据加载处理以确保加载不从高速缓存读取数据。


技术实现要素:

3.根据非限制性实施例,提供了一种用于执行存储排空合并操作(store drain merge operation)以唤醒在相关存储条目上休眠的加载条目的计算机实现的方法。该方法包括由处理器检测对执行存储排空合并操作的调用,并且生成存储标签对,该存储标签对包括对应于要排空的第一存储条目的第一存储标签和对应于要排空的第二存储条目的第二存储标签。该方法进一步包括确定存储标签对是偶数类型存储标签和奇数类型存储标签中的一个。偶数类型存储标签对包括作为偶数存储标签的第一存储标签和作为奇数存储标签的第二存储标签,而奇数类型存储标签包括作为奇数存储标签的第一存储标签和作为偶数存储标签的第二存储标签。该方法还包括响应于确定偶数类型存储标签对,禁用偶数类型存储标签对中包括的奇数存储标签,以及在奇数存储标签被禁用的同时,基于偶数类型存储标签对中包括的偶数存储标签,唤醒依赖于偶数存储标签的第一加载条目和依赖于奇数存储标签的第二加载条目。
4.根据另一非限制性实施例,一种计算机系统被配置成执行存储排空合并操作以唤醒在相关存储条目上休眠的加载条目。所述计算机系统包括存储队列单元和加载队列单元,所述存储队列单元被配置成保持待完成的至少一个存储条目,所述加载队列单元被配置成保持在所述存储队列单元中包括的存储条目上休眠的至少一个加载条目。处理器被配置成检测对执行存储排空合并操作的调用并且生成存储标签对,该存储标签对包括对应于要从存储队列单元排空的第一存储条目的第一存储标签和对应于要从存储队列单元排空的第二存储条目的第二存储标签。处理器确定存储标签对是偶数类型存储标签和奇数类型存储标签中的一个。偶数类型存储标签对包括作为偶数存储标签的第一存储标签和作为奇数存储标签的第二存储标签,而奇数类型存储标签包括作为奇数存储标签的第一存储标签和作为偶数存储标签的第二存储标签。处理器响应于确定偶数类型存储标签对而禁用偶数类型存储标签对中包括的奇数存储标签,并且处理器在奇数存储标签被禁用的同时,基于
偶数类型存储标签对中包括的偶数存储标签来唤醒依赖于偶数存储标签的第一加载条目和依赖于奇数存储标签的第二加载条目。
5.根据又一非限制性实施例,提供一种计算机程序产品,用于控制计算机系统执行存储排空合并操作以唤醒在相关存储条目上休眠的加载条目。该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令。所述程序指令可由电子计算机处理器执行以控制所述处理器执行包括以下的操作:由所述处理器检测对执行存储排空合并操作的调用;以及生成存储标签对,所述存储标签对包括对应于要排空的第一存储条目的第一存储标签和对应于要排空的第二存储条目的第二存储标签。该方法进一步包括确定存储标签对是偶数类型存储标签和奇数类型存储标签中的一个。偶数类型存储标签对包括作为偶数存储标签的第一存储标签和作为奇数存储标签的第二存储标签,而奇数类型存储标签包括作为奇数存储标签的第一存储标签和作为偶数存储标签的第二存储标签。该方法还包括响应于确定偶数类型存储标签对,禁用偶数类型存储标签对中包括的奇数存储标签,以及在奇数存储标签被禁用的同时,基于偶数类型存储标签对中包括的偶数存储标签,唤醒依赖于偶数存储标签的第一加载条目和依赖于奇数存储标签的第二加载条目。
6.通过本发明的技术实现了附加的技术特征和益处。在此详细描述了本发明的实施例和各方面,并且这些实施例和各方面被认为是所要求保护的主题的一部分。为了更好地理解,参考具体实施方式和附图。
附图说明
7.在说明书结论的权利要求书中特别指出并清楚地要求保护本文描述的独占权利的细节。从以下结合附图的详细描述中,本发明的实施例的前述和其他特征和优点是显而易见的,其中:
8.图1是结合一个或多个非限制性实施例使用的示例计算机系统的框图;
9.图2描绘了根据非限制性实施例的包括在计算机处理系统中的加载-存储单元的框图;
10.图3描绘了根据非限制性实施例的包括在加载-存储单元中的存储队列单元;
11.图4描绘了根据非限制性实施例的以第一模式操作以读出单个16字节存储队列条目的存储队列单元;以及
12.图5描绘了根据非限制性实施例的以第二模式操作以读出一对16字节存储队列条目的存储队列单元;
13.图6a、图6b和图6c描绘了根据非限制性实施例的说明唤醒在相关存储条目上休眠的加载的方法的流程图;
14.图7描绘了根据非限制性实施例的说明执行存储排空合并操作的方法的流程图;以及
15.图8描绘了用于实现一个或多个非限制性实施例的一些方面或所有方面的计算机系统的框图。
16.本文所描绘的图是说明性的。在不脱离本发明的精神的情况下,这里描述的图或操作可以有许多变化。例如,这些动作可按不同次序执行,或动作可被添加、删除或修改。同
样,术语“耦合”及其变体描述了在两个元件之间具有通信路径并且不暗示这些元件之间在它们之间没有中间元件/连接的直接连接。所有这些变化被视为说明书的一部分。
17.在附图和所披露实施例的以下详细说明中,附图中展示的这些不同元件配备有两个或三个数字的附图标记。在次要例外的情况下,每个附图标记的最左边的数字对应于首先示出其元件的图。
具体实施方式
18.如上所述,无序执行使用精确的数据加载处理以确保在数据实际上被写入高速缓存之前加载不从高速缓存读取数据。为了优化性能,可以采用“休止(hibernation)”过程,其中,加载将从保持待决的存储数据的缓冲器(有时被称为“存储队列”)读取数据。如果在加载和存储之间存在地址重叠,则存储可以将其数据转发到加载。然而,存在存储不能总是将其数据转发到加载的某些场景。当这发生时,加载必须在加载队列中“休止”或暂时被设置为“休眠(sleep)”,直到存储已经完成并被写入高速缓存,从而使得加载可以从高速缓存读取存储的数据。这通常通过将处理器中的每个加载分配给存储的“标签”(即,“stag”)来实现。给定的stag由多个位(例如,7个位)定义并且用作对于处理器中的每个存储是唯一的标识符。
19.存储将总是以程序次序写入高速缓存。当存储写入高速缓存时,其将向包含在其相关联的存储上“休眠”的一个或多个加载的加载队列结构广播其存储标签。加载队列结构执行内容可寻址存储器比较以搜索在其相关联的存储上等待的所有加载。当存在比较匹配时,加载队列命令相应的加载“唤醒”并且访问高速缓存以返回数据。
20.通常,上述休止过程在硬件中实现起来昂贵,并且还可能消耗过量的功率。作为替代方案,一些计算系统已经通过将在存储器中相邻的存储分组以在同一处理器周期中写入到高速缓存来在“合并”数据存储写入到高速缓存时对“合并”数据存储进行管理。如果在单个给定处理器周期中可实现这些分组,则总是以两个一对完成这些分组。这允许数据存储实现向高速缓存的写入带宽的两倍,从而提高计算机处理性能。然而,当两个存储同时写入高速缓存时,每个存储具有其自己的唯一标识存储标签(“stag”),并且此外多个加载可以在每个存储上单独地休眠。为了管理与该对中所包括的第二存储相关联的第二存储标签,可以将第二专用比较端口添加到大加载队列结构,该大加载队列结构可以一次发送要比较的两个存储标签。然而,从硬件领域和功率角度来看,这种解决方案给计算机处理系统增加了显著的成本。
21.根据一个或多个非限制性实施例,提供了一种实现存储排空合并操作的计算机处理系统,该存储排空合并操作能够基于它们的相关存储来唤醒加载,而不添加第二比较端口。更确切地,有限数量的存储标签以与存储的程序次序匹配的周期次序(有时被称为“轮询次序”)被顺序地分配。例如,存储标签0将被分配给程序观察到的第一存储,存储标签1将被下一存储观察到,等等。当存储标签用尽时(即,所分配的存储标签的数量已达到设置限制),处理器将停止直到更多的存储标签变得可用。当存储达到其“标签空间”的极限时,程序序列中的较新的存储将简单地再次回绕(wrap)以存储标签0(如果其可用的话)。处理器通过保持知道此回绕情况是否已经发生的“最老存储标签”指针来消歧存储的年龄。考虑到这一点,根据本发明的一个或多个非限制性实施例的计算机处理系统通过将排空数据存储
分组为偶数对和奇数对的配对以便确定从休止中唤醒哪些加载来避免在加载队列结构中实现第二比较端口的需要。偶数存储将与偶数存储标签相关联,而奇数存储将与奇数存储标签相关联。由于所有存储按次序排空,所以当与标签(n)相关联的存储排空时,则保证与存储标签(n+1)相关联的存储接下来将排空。当计算机处理系统启动存储排空合并时,禁用最低有效位(lsb)的比较,这实质上指示在存储标签(n)和存储标签(n+1)上等待的所有加载将同时唤醒。
22.在一些实例中,可在与第一存储是奇数存储并且第二存储是偶数存储的情形相关联的给定周期期间发起存储排空合并。因此,在本发明的一个或多个非限制性实施例中,本文描述的存储排空合并基于是否第一存储是偶数存储并且第二存储是奇数存储或者是否第一存储是奇数存储并且第二存储是偶数存储来执行不同的操作。
23.例如,当在给定周期(n)期间在奇数存储上发生用于写入到高速缓存的存储排空合并时,那么将通过针对下一处理器周期(n+1)禁用lsb比较来对双排空标签比较进行分组,但仅在所述嵌套周期(n+1)中存在额外排空的情况下才进行分组。如果在该下一个周期(n+1)中没有排空,则在前一个周期(n-1)中排空的存储标签将被添加单个存储标签,并且将在下一个紧接的周期(n+1)中被唤醒,从而单独地唤醒偶数存储标签。如果在与奇数存储标签相关联的背对背边界上连续地发生双写,则处理器将继续下一个单周期的延迟,直到其在存储写序列中发现基本上“追上”的“空洞”或“追上”事件。即,可以连续地执行延迟的唤醒(即,将唤醒延迟到下一个周期),直到序列中的给定周期没有观察到双存储写入(即,存储排空合并操作)。
24.现在转到图1,根据本发明的一个或多个实施例,总体上示出了处理系统100的框图,处理系统100包括在单线程模式下的乱序(ooo)处理器范围向量执行的指令排序单元(isu)。图1中所示的系统100包括指令获取单元/指令解码单元(ifu/idu)106,其获取和解码用于输入到设置块108的指令,设置块108准备用于输入到isu的映射器110的解码指令。根据一个或多个实施例,ifu/idu 106可以一次从线程获取并解码六个指令。根据本发明的一个或多个实施例,发送到设置块108的六个指令可包括六个非分支指令、五个非分支指令和一个分支指令、或者四个非分支指令和两个分支指令。根据一个或多个实施例,设置块108在将所获取的指令发送到isu中的这些块之前检查存在足够的资源,诸如发布队列、完成表、映射器和寄存器文件中的条目。
25.图1中所示的映射器110将编程器指令(例如,逻辑寄存器名称)映射到处理器的物理资源(例如,物理寄存器地址)。图1中示出了各种映射器110,包括条件寄存器(cr)映射器;链路/计数(lnk/cnt)寄存器映射器;整数异常寄存器(xer)映射器;用于映射通用寄存器(gpr)和矢量-标量寄存器(vsr)的统一映射器(umapper);用于映射gpr和vsr的架构映射器(arch映射器);以及浮点状态和控制寄存器(fpscr)映射器。
26.来自设置块108的输出也被输入到全局完成表(gct)112,用于跟踪当前在isu中的指令。来自设置块108的输出也被输入到用于将指令分派到发布队列的分派单元114。图1中所示的isu的实施例包括cr发布队列cr isq 116,其从cr映射器接收并跟踪指令,并且将指令发布120到指令获取单元(ifu)124以执行cr逻辑指令和移动指令。图1中还示出了分支发布队列,分支isq118,其从lnk/cnt映射器接收并跟踪分支指令和lnk/cnt物理地址。如果预测的分支地址和/或方向不正确,则分支isq 118可以向ifu 124发布122指令以重定向指令
获取。
27.从分派逻辑输出的指令和来自lnk/cnt映射器、xer映射器、umaper gpr/vsr、arch映射器gpr/vsr和fpscr映射器的重命名寄存器被输入到发布队列102。如图1所示,发布队列102跟踪发布的浮点指令(fx)、加载指令(l)、存储指令(s)以及向量和标量单元(vsu)指令。如图1的实施例中所示,发布队列102被分解成两个部分,isq0 1020和isq1 1021,每个部分保持48个指令。
28.当处理器以st模式执行时,发布队列102可以被用作包含isq0 1020和isq1 1021两者的单个逻辑发布队列以处理单个线程的所有指令(在该示例中,所有九十六个指令)。当处理器以mt模式执行时,isq0 1020可用于处理来自第一线程的四十八个指令,且isq1 1021用于处理来自第二线程isq1 1021的四十八个指令。
29.如图1中所示,发布队列102向被划分为两组执行单元1040、1041的执行单元104发布指令。图1中所示的两组执行单元1040、1041包括完全定点执行单元(full fx0,full fx1);加载执行单元(lu0、lu1);简单定点、存储数据和存储地址执行单元(simple fx0/std0/sta0,simple fx1/std1/sta1);以及浮点、向量多媒体扩展、十进制浮点和存储数据执行单元(fp/vmx/dfp/std0,fp/vmx/dfp/std1)。lu0、simple fx0/std0/sta0和fp/vmx/dfp/std0共同形成加载存储单元(lsu)1042。类似地,lu1、simple fx1/std1/sta1和fp/vmx/dfp/std1形成lsu 1043。尽管isq 104被示为具有分割执行单元1040和1041,但应当理解可以实现单个执行单元而不背离本发明的范围。
30.如图1所示,当处理器以st模式执行时,第一组执行单元1040执行从isq0 1020发布的指令,并且第二组执行单元1041执行从isq1 1021发布的指令。在备选实施例中,当处理器以st模式执行时,从发布队列102中的isq0 1020和isq1 1021两者发布的指令可以被发布到第一组执行单元1040和第二组执行单元1041中的任何执行单元1040中的执行单元。
31.根据一个或多个实施例,当处理器以mt模式执行时,第一组执行单元1040执行从isq0 1020发布的第一线程的指令,并且第二组执行单元1041执行从isq1 1021发布的第二线程的指令。
32.图1中所示的发布队列102中的条目的数量和其他元素的大小(例如,总线宽度、队列大小)在本质上旨在是示范性的,因为可以针对各种不同大小的发布队列和其他元素来实现本发明的实施例。根据本发明的一个或多个实施例,大小是可选择的或可编程的。
33.转向图2,根据非限制性实施方式示出了包含在计算机处理系统100中的lsu 1042。所描绘的lsu 1042促进存储排空合并操作的执行,所述存储排空合并操作能够基于它们的相关存储来唤醒加载,而不添加第二比较端口。然而,应注意,本文中描述的实施方式不限于这种lsu。lsu 1042包括保持存储条目的一个或多个存储队列单元(stq)220和保持加载条目的一个或多个加载队列单元(ldq)225。在图2的示例性实施方式中,lsu 1042包括两个stq 220(stq0和stq1)和两个ldq 225(ldq0和ldq1)。可在lsu 1042中实现更多或更少的stq 200和/或ldq 225。stq 200和ldq 225也可被设计和配置成具有不同量的条目。在一个或多个非限制性实施例中,例如,ldq 225可具有六十四(64)个条目,而stq 200可具有四十(40)个条目。然而,应当理解,可以实施更多或更少的加载条目和/或存储条目。
34.如果队列中的条目可用,则stq条目和ldq条目通常在分派时(例如,由分派单元)按程序次序指派(分配)。当存储指令已经执行并且存储已经排入处理器高速缓存250(例
如,l1处理器高速缓存)中时,stq条目通常被释放(解除分配)。当加载已经完成(引退)并且已经在处理器核内完全执行时,ldq条目通常被释放(解除分配)。
35.现在转向图3,示出了根据非限制性实施例的包括在lsu 1042中的stq 300的示例。stq 300可以包括存储数据队列(sdq)301和存储重排序队列(srq)302。在一些实施例中可以被集成为srq302自身的一部分以进一步保存芯片区域的sdq 301被配置成存储与给定存储队列条目相关联的转换后的地址指令或数据。
36.srq 302可以将用于存储条目的控制位存储在sdq 301中。srq 302还可以跟踪已经执行的存储指令,确定接下来要完成的存储指令,以及确定数据何时在sdq 301中可用。在一个或多个非限制性实施例中,srq 302是按照条目分配次序循环、按照条目排空次序循环和按照条目解除分配次序循环。
37.srq条目在分派时被分配,其中所分派的存储标签(stag)被填充到正确的行中。每个stag由设定数量的位来定义并且是srq条目的索引。在一个或多个非限制性实施例中,每个stag由七(7)位定义。然而,应当理解,在不脱离本发明的范围的情况下,该stag可以包括更多或更少的位。进一步,在存储排空上解除分配srq条目。在一个或多个示例中,stag阵列保持“溢出”分派。例如,如果所期望的srq中的行指示srq条目“x”仍然在使用中,则在分派时将信息写入stag阵列中。当srq条目“x”被解除分配时,其在srq溢出stag结构中的对应行被读出并被复制到主srq stag阵列结构中(即,取决于在溢出stag阵列中是否存在针对给定线程/区域的任何有效条目,对溢出stag结构的读取进行门控)。当存储排空和解除分配时,srq 302将stag发送到发布队列isq0/1。
38.继续参见图3,连同图4和图5,stq 300包括存储排空合并控制输入303、stag输出310和排空完成输出312。存储排空合并控制输入303被配置成接收存储排空合并控制信号304,其调用stq300的第一模式或第二模式。第一模式读出单个16字节存储队列条目,而第二模式读出一对16字节存储队列条目。stag输出310响应于调用第一模式将与从stq 300读出的单个存储条目相对应的单个stag或者响应于调用第二模式将指示一对相邻存储条目的stag对输出到ldq 225。stag对可以被定义为偶数类型存储标签对(其中第一存储标签是偶数存储标签并且第二存储标签是奇数存储标签)或奇数类型存储标签(其中第一存储标签是奇数存储标签并且第二存储标签是偶数存储标签)。排空完成输出312向ldq 225输出排空完成信号(d),排空完成信号(d)指示当以第一模式操作时单个排空的完成或当以第二模式操作时排空对的完成。
39.例如,图4描绘了根据非限制性实施例的以第一模式操作以读出单个16字节存储队列条目的stq 300。响应于系统100确定没有要排空的存储条目具有相邻地址,计算系统100生成被应用到存储排空合并控制输入303的逻辑0控制信号304(例如,0位)。逻辑0调用第一模式,这使得stq 300在单个时钟周期期间读出单个16字节存储队列条目306a并且输出被递送至ldq 225的单个stag 307a。一旦存储排空条目306a完成,srq 300就将排空完成信号(d)输出到ldq 225,ldq 225唤醒ldq 225中的休眠加载。ldq 225将完成的存储条目306a的stag 307a与先前等待该存储条目完成的一个或多个加载相匹配,并且执行每个匹配的加载条目以从高速缓存250(例如,l1 250)读出对应的数据。
40.转到图5,根据非限制性实施例,stq 300被描绘为以第二模式操作以读出一对1字节存储队列条目。响应于系统100确定要排空的一个或多个存储条目具有相邻地址,计算系
统100生成被应用于存储排空合并控制输入303的逻辑1控制信号304(例如,1位)。逻辑1调用第二模式或“存储排空合并”操作,所述操作使stq 300在单个时钟周期期间读出一对16字节存储队列条目306a和306b。在此模式中,stq 300还将对应于两个相邻存储条目排空306a和306b的一对stag 307a和307b输出到ldq 225。一旦两个存储排空条目306a和306b完成,srq 300就将排空完成信号(d)输出到ldq 225,ldq 225唤醒ldq 225中的休眠加载。因而,ldq 225将完成的存储条目的stag与先前等待该存储条目完成的一个或多个唤醒加载相匹配,并且将每个匹配的加载条目写入高速缓存250(例如,l1 250)。
41.如上所述,ldq接收对应于存储排空条目对的stag对。在stag对对应于具有直接相邻地址的存储排空条目对(即,其中第一存储条目是地址并且第二存储条目是奇数地址)的情况下,stag的最低有效位(lsb)具有差1。例如,偶数stag可以与第一存储条目相关联,并且lsb差为“1”的奇数stag可以与具有直接相邻地址的第二存储条目相关联。因此,ldq禁用奇数stag的lsb并使用单个偶数stag对所唤醒的加载条目执行单个比较,而不是使用两个stag在ldq 225中执行两个单独的比较。
42.在一些实例中,写入高速缓存的存储合并可发生在奇数边界上。例如,第一存储条目可以是奇数地址,使得直接相邻的条目是偶数地址。在这种情况下,如果在下一个处理器周期中存在附加排空,则系统采用通过将lsb比较禁用所述下一个处理器周期来允许对奇数stag和偶数stag进行分组的比较逻辑。如果在该周期中不存在排空,则在前一周期中被排空的stag将加一,并且在下一周期中将唤醒单个stag,这将唤醒偶数stag。如果在与奇数存储标签对准的背对背边界上连续地发生双写入,则处理器将继续延迟序列,直到在存储写入序列中发生基本上赶上和平衡的机会为止。
43.转到图6a、图6b和图6c,其示出根据非限制性实施例的用于唤醒正在休眠的相关加载直到对应的存储排空条目写入高速缓存的比较逻辑的流程图。该方法在操作600开始,并且在操作602做出关于在当前周期中是否发起存储排空合并的确定。在这个示例中,当前周期最初是多个顺序周期(例如,0-9)当中的第一周期(例如,周期“0”)。图6a-图6c中所引用的术语“存储排空合并”是指通过在同一处理器周期中将具有直接相邻地址(例如,偶数和奇数、或奇数和偶数)的一对存储写入高速缓存中来“合并”数据存储。当确定在存储数据写入命令之后不存在直接相邻的存储时,在操作602处将不调用存储排空合并操作并且该方法行进至操作604(参见图6b)。
44.在操作604处,做出关于先前周期是否执行存储排空合并操作的确定。如上所述,处理流程中的此阶段的当前周期是第一周期(即,周期“0”)。因此,在先前周期中不执行存储排空合并操作,并且该方法行进至操作606以生成与单个存储排空条目相对应的单个stag。在操作608,将ldq 225中的休眠加载与单个stag进行比较。在操作610,ldq 225中对应于单个stag的加载条目被唤醒并且该方法在操作612结束。
45.返回参考操作602并且在初始周期中发起存储排空合并(即,在周期0处存在具有相邻地址的一对存储条目),该方法行进至操作614并且生成与第一存储条目相对应的第一stag以及与第二存储条目相对应的第二stag。在操作616处,做出关于第一stag是偶数stag(即,对应于具有偶数地址的存储条目)还是奇数stag(即,对应于具有奇数地址的存储条目)的确定。当第一stag是偶数stag时,在操作618,系统确定第二stag是奇数stag并且禁用奇数stag上的lsb。在操作620,将ldq 225中的休眠加载与唯一的偶数stag进行比较。在操
作622处,仅基于偶数stag比较来唤醒在偶数stag和奇数stag两者上休眠的加载,并且该方法在操作624处结束。
46.返回参考操作616,存储排空合并可以发生在奇数边界处,即,第一stag可以对应于具有奇数地址的存储条目,并且第二stag可以对应于具有偶数地址的存储条目。因此,第一stag被确定为奇数stag,并且该方法行进至操作626并且禁用偶数stag的lsb以延迟唤醒在偶数stag上休眠的加载(参见图6c)。在操作628处,将ldq 225中的休眠加载与仅奇数stag进行比较,并且在操作630处,仅基于奇数stag比较来唤醒在奇数stag上休眠的加载。在操作632处,当前周期被递增并且该方法返回到操作602。
47.再次参考操作602,做出关于在当前周期中是否发起存储排空合并的确定。在过程流程的这个阶段,当前周期是序列中的下一个周期(例如,周期“1”)。当在当前周期中发起存储排空合并时,该方法行进至操作614并且重复上述操作。
48.然而,当没有发起存储排空合并(即,没有直接相邻的存储条目可用)时,在操作602处将不调用存储排空合并操作并且该方法行进至操作604(参见图6b)。
49.在操作604处,做出关于先前周期是否执行存储排空合并操作的确定。不同于先前场景,在过程流当前周期的此阶段,当前周期已从初始周期递增。当在先前周期中未执行存储排空合并操作时,该方法重复上述操作606-612。
50.然而,当在先前周期中执行排空合并操作时,方法前进到操作634以确定在当前周期中是否调用存储排空。当在当前周期中没有调用存储排空时,检测到“追赶(catch up)”事件,这提供了根据偶数存储标签结束延迟唤醒加载的机会。因此,来自前一周期的奇数stag在操作648处增加“1”,从而计算新的偶数stag。在操作650,基于新计算的单个偶数stag来唤醒ldq 225中的一个或多个加载,并且该方法在操作652结束。
51.返回到操作634,可以在当前周期中调用存储排空。因而,方法前进到操作636以确定要排空的存储条目是奇数存储条目(即,是具有奇数地址的存储条目)还是偶数存储条目(即,具有偶数地址的存储条目)。当存储条目不是奇数条目而是偶数条目时,检测到“追赶”事件,这提供了根据偶数存储标签结束延迟唤醒加载的机会。因此,该方法重复如上所述的操作606-612,其最终在操作612处唤醒ldq 225中对应于单个stag的加载条目,并且根据偶数存储标签结束延迟加载的唤醒。
52.然而,当存储条目是奇数条目时,在操作638,系统禁用对应的偶数stag的lsb,以延迟唤醒ldq 225中在偶数stag上休眠的加载。在操作640处,生成与要排空的奇数存储条目相对应的单个奇数stag,并且在操作642处,将ldq 225中的休眠加载与单个奇数stag进行比较。在操作644处,唤醒ldq 225中与单个奇数stag相对应的加载条目。在操作646处,当前周期被递增并且该方法返回到操作602。
53.因此,与图6a、图6b和图6c中示出的流程图相关联的操作提供了当在奇数边界上发生对执行存储排空合并操作的调用时将根据偶数存储标签将加载的唤醒延迟到下一处理器周期的机制。是否禁用lsb比较或者甚至单独唤醒stag取决于在随后的周期中有多少存储写入高速缓存。可以连续地执行到下一周期的这种延迟唤醒,直到该序列没有观察到两次写入。
54.现在参见图7,示出了根据非限制性实施例的在计算系统中执行存储排空合并操作的方法。该方法在操作700开始,并且在操作702接收存储写入指令。在操作704处,确定要
从stq排空的存储的地址。在操作706,做出关于要排空的存储条目是否具有相邻地址的确定。当不存在相邻地址时,计算系统在操作708处发起非存储排空合并操作。因此,在操作710,在单个时钟周期期间从存储队列读出单个条目。在操作712,单个被排空的条目被写入高速缓存并且该方法在操作714结束。
55.然而,当在操作706处检测到一个或多个相邻地址时,计算系统在操作716处发起存储排空合并操作。因此,在操作718,在单个时钟周期期间从存储队列读出一对相邻的存储条目。在操作720处,将一对排空的条目写入到相邻存储器位置中的高速缓存,并且所述方法在操作714处结束。
56.还可以包括附加的过程,并且应当理解,图7中所描绘的过程表示例示,并且在不脱离本公开的范围和精神的情况下,可以添加其他过程或可以移除、修改或重新布置现有过程。
57.现在转到图8,图8是用于实现本发明的一个或多个实施例的一些或所有方面的计算机系统800的框图。计算机系统800可以是电子计算机框架,其包括和/或采用任意数量和组合的计算设备和利用不同通信技术的网络,如本文所述。计算机系统800可以容易地可升级、可扩展和模块化,具有改变到不同服务或独立于其他而重新配置一些特征的能力。计算机系统800可以是例如服务器、台式计算机、膝上型计算机、平板计算机或智能电话。在一些示例中,计算机系统800可以是云计算节点。计算机系统800可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统800可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机系统存储媒质两者中。
58.如图8所示,计算机系统800具有一个或多个中央处理单元(cpu)801a、801b、801c等(统称为或一般称为处理器801)。处理器801可为单核处理器、多核处理器、计算群集或任何数目的其他配置。处理器801(也称为处理电路)经由系统总线802耦合到系统存储器803和不同其他组件。系统存储器803可以包括只读存储器(rom)804和随机存取存储器(ram)805。rom 804耦合到系统总线802且可包含基本输入/输出系统(bios),其控制计算机系统800的某些基本功能。ram 805是耦接到系统总线802以供处理器801使用的读写存储器。系统存储器803在操作期间为所述指令的操作提供临时存储器空间。系统存储器803可包括随机存取存储器(ram)、只读存储器、闪存或任何其他合适的存储器系统。
59.计算机系统800包括输入/输出(i/o)适配器806和耦合到系统总线802的通信适配器807。i/o适配器806可以是与硬盘808和/或任何其他类似组件通信的小型计算机系统接口(scsi)适配器。i/o适配器806和硬盘808在本文中统称为大容量存储装置810。
60.用于在计算机系统800上执行的软件811可存储在大容量存储装置810中。大容量存储装置810是可由处理器801读取的有形存储媒质的示例,其中,软件811被存储为用于由处理器801执行以使计算机系统800操作的指令,诸如下文相对于各个附图所描述的。计算机程序产品的示例和这样的指令的执行在本文中更详细地讨论。通信适配器807将系统总线802与网络812互连,该网络812可以是外部网络,使得计算机系统800能够与其他这样的系统通信。在一个实施例中,系统存储器803和大容量存储装置810的一部分共同存储操作
系统,该操作系统可以是用于协调图8中所示的各个组件的功能的任何适当的操作系统。
61.附加的输入/输出设备被示出为经由显示适配器815和接口适配器816连接到系统总线802。在一个实施例中,适配器806、807、815和816可以连接到经由中间总线桥(未示出)连接到系统总线802的一个或多个i/o总线。显示器819(例如,屏幕或显示监视器)通过显示适配器815连接到系统总线802,显示适配器815可包括用于改进图形密集型应用的性能的图形控制器和视频控制器。键盘821、鼠标822、扬声器823等可以经由接口适配器816互连到系统总线802,接口适配器816可以包括例如将多个设备适配器集成到单个集成电路中的超级i/o芯片。用于连接诸如硬盘控制器、网络适配器和图形适配器之类的外围设备的合适的i/o总线通常包括诸如外围组件互连(pci)之类的公共协议。因此,如图8中构造的,计算机系统800包括处理器801形式的处理能力,以及包括系统存储器803和大容量存储装置810的存储能力,诸如键盘821和鼠标822的输入装置,以及包括扬声器823和显示器819的输出能力。
62.在一些实施例中,通信适配器807可以使用任何合适的接口或协议(如互联网小型计算机系统接口等)传输数据。网络812可以是蜂窝网络、无线电网络、广域网(wan)、局域网(lan)或互联网等。外部计算设备可以通过网络812连接到计算机系统800。在一些示例中,外部计算设备可以是外部web服务器或云计算节点。
63.应当理解,图8的框图不旨在指示计算机系统800将包括图8中所示的所有部件。而是,计算机系统800可包含图8中未说明的任何适当较少或附加组件(例如,附加存储器组件、嵌入式控制器、模块、附加网络接口等)。进一步,本文相对于计算机系统800描述的实施例可以用任何适当的逻辑来实现,其中在不同实施例中,如本文提到的逻辑可以包括任何适当的硬件(例如,处理器、嵌入式控制器、或专用集成电路等)、软件(例如,应用等)、固件、或者硬件、软件和固件的任何适当的组合。
64.在此参考相关附图描述本发明的不同实施例。在不脱离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中阐述了元件之间的各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明在这方面并不意图进行限制。因而,实体的耦合可以指直接或间接耦合,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和工艺步骤可并入到具有本文未详细描述的附加步骤或功能的更全面的程序或工艺中。
65.以下定义和缩写用于解释权利要求书和说明书。如在此使用的,术语“包括”、“包含”、“具有”、或“含有”或其任何其他变体旨在覆盖非排他性的包括。例如,包含一系列元素的组合物、混合物、工艺、方法、制品或设备不一定仅限于那些元素,而是可包括未明确列出的或此类组合物、混合物、工艺、方法、制品或设备固有的其他元素。
66.此外,术语“示例性”在此用于指“用作示例、实例或说明”。本文中描述为“示例性”的任何实施例或设计不一定被解释为比其他实施例或设计优选或有利。术语“至少一个”和“一个或多个”可以被理解为包括大于或等于一的任何整数,即一个、两个、三个、四个等。术语“多个”可以理解为包括大于或等于2的任何整数,即两个、三个、四个、五个等。术语“连接”可包括间接“连接”和直接“连接”两者。”67.术语“约”、“基本上”、“大约”及其变体旨在包括与基于在提交本技术时可用的设备的具体量的测量相关联的误差程度。例如,“约”可以包括给定值的
±
8%或5%、或2%的
范围。
68.为了简洁起见,与制作和使用本发明的多个方面相关的常规技术可以或可以不在此详细描述。具体地,用于实现本文描述的不同技术特征的计算系统和特定计算机程序的不同方面是公知的。因而,为了简洁起见,许多常规实现细节在此仅简要地提及,或者完全省略,而不提供公知的系统和/或过程细节。
69.本发明可以是任何可能的集成技术细节水平的系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的各方面。
70.计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式紧凑盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡或具有记录在其上的指令的凹槽中的凸起结构的机械编码设备、以及前述的任意合适组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
71.本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
72.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种编程语言的任何组合编写的源代码或目标代码,这些编程语言包括面向对象的编程语言(如smalltalk、c++等)和过程式编程语言(如“c”编程语言或类似的编程语言)。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。
73.本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
74.这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数
据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,所述计算机可读存储介质可以指引计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得具有存储在其中的指令的计算机可读存储介质包括制品,所述制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
75.计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得一系列操作步骤在计算机、其他可编程装置或其他设备上执行以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个方框中指定的功能/动作。
76.附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的次序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或者执行专用硬件与计算机指令的组合。
77.已经出于说明的目的呈现了本发明的不同实施例的描述,但并不旨在是穷尽性的或局限于所披露的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域的普通技术人员而言将是显而易见的。选择本文中所使用的术语以最佳地解释实施例的原理、实际应用或对市场中所发现的技术的技术改进,或使得所属领域的其他普通技术人员能够理解本文中所描述的实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1