用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方...的制作方法

文档序号:8501115阅读:172来源:国知局
用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方 ...的制作方法
【专利说明】用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方法和系统
[0001]本申请要求2012年6月15日由Mohammad A.Abdallah提交的题为“A METHOD ANDSYSTEM FOR IMPLEMENTING RECOVERY FROM SPECULATIVE FORWARDING MISS-PREDICT1NS/ERRORS RESULTING FROM LOAD STORE REORDERING AND OPTIMIZAT1N” 的共同待决共同转让的美国临时专利申请序号61/660,538的权益,并且该申请被整体地并入到本文中。
技术领域
[0002]本发明总体涉及数字计算机系统,更具体地涉及用于选择指令(包括指令序列)的系统和方法。
【背景技术】
[0003]要求处理器来处理相关或完全独立的多个任务。此类处理器的内部状态通常由在程序执行的每个特定时刻可能保持不同的值的寄存器组成。在程序执行的每个时刻,将内部状态图像称为处理器的架构状态。
[0004]当架构代码执行切换成运行另一功能(例如,另一线程、进程或程序)时,然后必须保存机器/处理器的状态,使得新功能可以利用内部寄存器以构建其新状态。一旦新功能已终止,则可以丢弃其状态,并且先前情境的状态将被恢复且该执行又继续。此类切换过程称为情境切换,并且通常包括10个或数百个循环,尤其是在采用大量寄存器(例如,64、
128,256)和/或乱序执行的现代架构的情况下。
[0005]在线程感知硬件架构中,硬件支持用于有限数目的硬件支持线程的多个情境状态是正常的。在这种情况下,硬件复制用于每个所支持线程的所有架构状态元素。这消除了在执行新线程时的情境切换的需要。然而,这仍具有多个缺点,即复制用于用硬件中所支持的每个附加线程的所有架构状态元素(即,寄存器)的面积、功率和复杂性。另外,如果软件线程的数目超过明确支持的硬件线程的数目,则仍必须执行情境切换。
[0006]这变得常见,因为在要求大量线程的细粒度基础上需要并行性。具有复制情境状态硬件存储的硬件线程感知架构无助于非线程软件代码,并且仅仅减少了用于被线程化的软件的情境切换的次数。然而,那些线程通常是针对粗粒并行性而构造的,并且导致用于发起和同步、离开细粒并行性的沉重软件开销,诸如函数调用和回路并行执行,而没有高效的线程化发起/自动生成。此类所述开销伴随着针对非明确/容易并行化/线程化软件代码而使用现有技术编译程序或用户并行化技术进行此类代码的自动并行化的困难。

【发明内容】

[0007]在一个实施例中,将本发明实现为一种用于在乱序处理器中从存储指令向对应的加载指令转发数据的方法。该方法包括:访问输入指令序列;根据处理器资源将指令重新排序以用于分派和执行;通过确定以下各项来确保按机器顺序的最近的较早存储用于去往对应的加载:如果所述存储具有实际年龄(age)但所述对应的加载不具有实际年龄,则所述存储早于所述对应的加载;如果所述对应的加载具有实际年龄但所述存储不具有实际年龄,则所述对应的加载早于所述存储;如果所述对应的加载或所述存储两者都不具有实际年龄,则使用虚拟标识符表来确定哪个较早;以及如果所述对应的加载和所述存储两者都具有实际年龄,则使用该实际年龄来确定哪个较早。
[0008]前述是概要且因此必要地包含细节的简化、一般化以及省略;因此,本领域的技术人员将认识到的是该概要仅仅是说明性的且并不意图以任何方式是限制性的。单独地由权利要求定义的本发明的其他方面、发明特征以及优点在下面阐述的非限制性详细描述中将变得显而易见。
【附图说明】
[0009]在附图中以示例的方式而不是以限制的方式举例说明本发明,并且在附图中相同的附图标记指示类似元件。
[0010]图1示出了根据本发明的一个实施例的加载队列和存储队列。
[0011]图2示出了根据本发明的一个实施例的加载和存储指令分离的第一图。
[0012]图3示出了根据本发明的一个实施例的加载和存储指令分离的第二图。
[0013]图4示出了根据本发明的一个实施例的过程的步骤的流程图,其中图示出用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的规则。
[0014]图5示出了图示出根据本发明的一个实施例的用处理器的加载队列和存储队列资源来实现过程300的规则的方式的图。
[0015]图6示出了图示出根据本发明的一个实施例的用处理器的加载队列和存储队列资源来实现过程300的规则的方式的另一图。
[0016]图7示出了图示出根据本发明的一个实施例的用处理器的加载队列和存储队列资源来实现过程300的规则的方式的另一图。
[0017]图8示出了根据本发明的一个实施例的其中在加载之后分派存储的分派功能的概述的过程的流程图。
[0018]图9示出了根据本发明的一个实施例的其中在存储之后分派存储的分派功能的概述的过程的流程图。
[0019]图10示出了根据本发明的一个实施例的统一加载队列的图。
[0020]图11示出了示出根据本发明的一个实施例的滑动加载分派窗口的统一加载队列。
[0021]图12示出了根据本发明的一个实施例的分布式加载队列。
[0022]图13示出了根据本发明的一个实施例的具有按序连续性的分布式加载队列。
[0023]图14示出了根据本发明的一个实施例的用于多核处理器的分段存储器子系统的图。
[0024]图15示出了如何通过本发明的实施例来处理加载和存储的图。
[0025]图16示出了根据本发明的一个实施例的存储过滤算法的图。
[0026]图17示出了根据本发明的一个实施例的在组成按序从存储器进行读取的加载的存储器一致性模型中具有乱序加载的信号量实现方式。
[0027]图18示出了根据本发明的一个实施例的到通过使用基于锁的模型和基于事务的模型两者而组成按序的用于存储器的加载读取的存储器一致性模型中的乱序加载。
[0028]图19示出了根据本发明的一个实施例的多核分段存储器子系统的多个核心。
[0029]图20示出了根据本发明的一个实施例的访问统一存储队列的异步核心的图,其中存储可以基于存储资历而从任一线程获得。
[0030]图21示出了描绘根据本发明的一个实施例的其中存储相比于其他线程中的对应存储而言具有资历的功能的图。
[0031]图22示出了根据本发明的一个实施例的非消歧乱序加载存储队列退出实现方式。
[0032]图23示出了根据本发明的一个实施例的非消歧乱序加载存储队列重新排序实现方式的重新排序实现方式。
[0033]图24示出了根据本发明的一个实施例的指令序列(例如,踪迹)重新排序的推测性执行实现方式。
[0034]图25示出了根据本发明的一个实施例的示例性微处理器管线的图。
【具体实施方式】
[0035]虽然已结合一个实施例描述了本发明,但本发明并不意图局限于本文中所阐述的特定形式。相反地,其意图涵盖可以适当地包括在由所附权利要求定义的本发明的范围内的此类替换、修改以及等同物。
[0036]在以下详细描述中,已阐述了许多特定细节,诸如特定方法顺序、结构、元件以及连接。然而应理解的是不需要利用这些及其他特定细节来实施本发明的实施例。在其他情况下,已省略众所周知的结构、元件或连接或未特别详细地描述以避免不必要地使本描述含糊。
[0037]在本说明书内对“一个实施例”或“实施例”的引用意图指示在本发明的至少一个实施例中包括结合该实施例所述的特定特征、结构或特性。短语“在一个实施例中”在本说明书内的各种位置上的出现并不一定全部参考同一实施例,也不是其他实施例的互斥的单独或替换实施例。此外,描述了某些实施例可展示出而其他的没有的各种特征。同样地,描述了对于某些实施例而言可能是要求但其他实施例并非如此的各种要求。
[0038]随后的详细描述的某些部分是在对计算机存储器内的数据位的操作的程序、步骤、逻辑块、处理及其他符号表示方面提出的。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域的其他人传达其工作的实质的手段。程序、计算机执行步骤、逻辑块、过程等在这里且一般地被设想为是导致期望结果的步骤或指令的自相一致序列。该步骤是要求物理量的物理操作的那些。通常但不一定,这些量采取计算机可读存储介质的电或磁信号的形式,并且能够在计算机系统中被存储、传输、组合、比较以及操纵。主要由于一般使用的原因,已证明将这些信号称为位、值、元素、符号、字符、项、数字等有时是方便的。
[0039]然而,应记住的是所有这些和类似术语将与适当的物理量相关联且仅仅是应用于这些量的方便标记。如从以下讨论显而易见的那样,除非另外具体地说,应认识到的是遍及本发明,利用诸如“处理”或“访问”或“写”或“存储”或“复制”等等术语的讨论指的是计算机系统或类似电子计算设备的动作或过程,其对在计算机系统的寄存器和存储器及其他计算机可读介质内表示为物理(例如,电子)量的数据进行操纵并变换成在计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内同样地表示为物理量的其他数据。
[0040]本发明的实施例实现了乱序指令调度过程,其中允许输入指令序列内的指令在处理器资源可用于执行它们时就立即乱序发出。本发明的实施例能够确保外部代理见到指令按序执行(例如,存储器一致性规则/模型)。确保指令对外部代理可见地按序执行,从而确保无错误程序执行。本发明的实施例确保处理器的存储器分级结构(例如,LI高速缓存、L2高速缓存、系统存储器等)见到指令的一致按序执行。
[0041]图1示出了根据本发明的一个实施例的加载队列和存储队列。图1还示出了输入指令序列。如上所述,处理器的存储器分级结构(例如,LI高速缓存、L2高速缓存、系统存储器等)见到指令的一致性按序执行。其后常常称为加载/存储队列的加载队列和存储队列可以用来保持按序执行的语义。
[0042]另外,加载和存储的乱序执行引发推测性执行。当执行推测性执行时,机器需要识别推测性错误。在图1的实施例中,加载/存储队列提供了一种用于实现从由加载存储重新排序和优化引发的推测性转发或缺失预测/错误中恢复的系统。加载/存储队列包括允许从作为转发、分支和错误的结果而由加载存储重新排序/优化引发的推测性错误中恢复的硬件支持。为了允许机器从推测性错误中恢复,将推测性执行的结果保持在加载队列和存储队列中。加载队列和存储队列保持推测性执行的结果直至可以修正错误且可以使存储结果退出(retire)至存储器为止。加载队列和存储队列的推测性执行内容对于外部代理而言是不可见的。相对于可见性,存储需要按序退出至存储器。
[0043]图2示出了根据本发明的一个实施例的加载和存储指令分离的第一图。本发明的一个特征是这样的事实,即加载被分离成两个宏指令,第一个进行地址计算并取读到临时位置(加载存储队列),并且第二个是存储器地址内容(数据)到寄存器或ALU目的地的加载。应注意的是虽然在将加载和存储指令分离成两个相应宏指令并将其重新排序的情境内描述了本发明的实施例,但可以通过在微代码情境内将加载和存储指令分离成两个相应微指令并将其重新排序来实现该方法和系统。
[0044]该功能对于存储而言是相同的。存储也被分离成两个宏指令。第一指令是存储地址和取读,第二指令是该地址处的数据的存储。存储和两个指令的分离遵循与下面针对加载所述的相同规则。
[0045]加载到两个指令的分离允许运行时间优化器在给定指令序列内早得多地调度地址计算和取读指令。这允许通过将数据预取读到与高速缓存分级结构分离的临时缓冲器中而更容易地从存储器缺失恢复。使用临时缓
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1