掌桥专利:专业的专利平台
掌桥专利
首页

用于加载/存储推测的基于地址的筛选

文献发布时间:2023-06-19 13:48:08


用于加载/存储推测的基于地址的筛选

关于联邦政府赞助的研究或开发的声明

本公开是在政府支持下在DOE授予的与劳伦斯·利弗莫尔国家安全局的PathForward项目(基本合同编号DE-AC52-07NA27344,分包合同编号B620717)下进行的。政府享有本公开中的某些权利。

背景技术

采用数据推测的计算机处理器通常允许加载和存储指令于加载存储单元内以不以程序顺序来完成。该数据推测需要针对违反排序来检查存储器依赖关系,以防止违反排序错误。这些检查可能需要在加载或存储与进行中的存储或加载的子集之间进行完整的物理地址比较。对于某些存储器一致性模型,检查还需要将外部探测的完整物理地址与进行中加载的物理地址进行比较。防止违反排序通常涉及使用内容可寻址存储器(CAM)结构。

附图说明

图1阐述了根据本公开的实施方案的用于针对加载/存储推测进行基于地址的筛选的示例性系统的框图。

图2阐述了根据本公开的实施方案的用于针对加载/存储推测进行基于地址的筛选的示例性系统的框图。

图3阐述了根据本公开的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。

图4阐述了根据本公开的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。

图5阐述了根据本公开的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。

图6阐述了根据本公开的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。

图7阐述了根据本公开的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。

图8阐述了根据本公开的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。

具体实施方式

使用内容可寻址存储器(CAM)结构和查找操作来防止违反排序错误在功率使用方面是昂贵的。因此,通过减少加载存储单元(LSU)中CAM查找的次数,减少了LSU的总功率使用。本公开的实施方案使用筛选机制来为一些传入指令绕过诸如CAM查找等存储器操作。该筛选机制通过维护与先前接收到的存储或加载指令的地址或地址范围相对应的条目表来进行操作。如果传入的存储指令、加载指令或高速缓存探测包括的目标地址在先前接收到的指令未针对的范围中,则该传入的存储指令、加载指令或高速缓存探测不需要CAM查找并且朝向完成来转发。在一些实施方案中,在LSU流水线中的许多不同阶段中利用该筛选机制。

图1是根据一些实施方案的用于针对加载/存储推测进行基于地址的筛选的非限制性的示例性计算系统(152)的框图。图1的计算系统(152)包括至少一个计算机处理器(156)或‘CPU’以及随机存取存储器(168)(‘RAM’),所述随机存取存储器通过高速存储器总线(166)和总线适配器(158)连接到处理器(156)和计算系统(152)的其他部件。

操作系统(154)存储在RAM(168)中。在计算机中用于针对加载/存储推测进行基于地址的筛选的操作系统包括UNIX

图1的计算系统(152)包括磁盘驱动器适配器(172),其通过扩展总线(160)和总线适配器(158)耦合到处理器(156)和计算系统(152)的其他部件。磁盘驱动器适配器(172)将呈数据存储装置(170)的形式的非易失性数据存储装置连接到计算系统(152)。在一些实施方案中,磁盘驱动器适配器包括集成驱动电子器件(‘IDE’)适配器、小型计算机系统接口(‘SCSI’)适配器和本领域技术人员将想到的其他磁盘驱动器适配器。在一些实施方案中,非易失性计算机存储器被实现为光盘驱动器、电可擦除可编程只读存储器(所谓的‘EEPROM’或‘闪速’存储器)、RAM驱动器等,如本领域技术人员将想到的。

图1的示例性计算系统(152)包括一个或多个输入/输出(‘I/O’)适配器(178)。I/O适配器通过例如用于控制到诸如计算机显示屏等显示装置的输出以及来自诸如键盘和鼠标等用户输入装置(181)的用户输入的软件驱动器和计算机硬件来实现面向用户的输入/输出。图1的示例性计算系统(152)包括视频适配器(209),所述视频适配器是专门为到显示装置(180)(诸如显示屏或计算机监视器)的图形输出而设计的I/O适配器的示例。视频适配器(209)通过高速视频总线(164)、总线适配器(158)和也是高速总线的前侧总线(162)连接到处理器(156)。

图1的示例性计算系统(152)包括用于与其他计算机进行数据通信以及用于与数据通信网络进行数据通信的通信适配器(167)。在一些实施方案中,这样的数据通信通过RS-232连接、通过诸如通用串行总线(‘USB’)等外部总线、通过诸如IP数据通信网络等数据通信网络以及以如本领域技术人员将想到的其他方式来连续地执行。通信适配器实现数据通信的硬件级别,一台计算机通过其直接或通过数据通信网络向另一台计算机发送数据通信。在一些实施方案中,通信适配器的示例包括用于有线拨号通信的调制解调器、用于有线数据通信的以太网(IEEE 802.3)适配器和用于无线数据通信的802.11适配器。

图2是根据一些实施方案的用于针对加载/存储推测进行基于地址的筛选的非限制性的示例性处理器(156)的框图。如图2所示,示例性处理器(156)包括加载存储单元(LSU)(200)、地址生成单元(202)、控制逻辑(204)、筛选表移位触发器(206)、违反排序存储器结构筛选表(208)和违反排序存储器结构(210)。图2中的LSU(200)的描绘包括表示LSU(200)中的不同特定结构的元件。具体地,在一些实施方案中,筛选表移位触发器(206)和违反排序存储器结构(210)应用于沿LSU(200)流水线的许多不同元件,如下所述。

LSU(200)是执行加载和存储指令的处理器(156)的一部分。当允许加载和存储不以程序顺序来完成时,LSU(200)负责检查存储器依赖关系和违反排序。LSU(200)的控制逻辑(204)执行LSU(200)的功能,包括执行加载指令和存储指令以完成。为了说明的目的,图2中的控制逻辑(204)被描绘为LSU(200)内的单独的元件。实际上,控制逻辑(204)是在LSU(200)上的其他元件之内和之间的行为的集合。地址生成单元(202)计算用于加载指令和存储指令的物理地址,并将所述物理地址提供给LSU(200),作为执行加载指令或存储指令的初始步骤。

筛选表移位触发器(206)是由控制逻辑(204)用来触发筛选表(208)中的移位的数据结构。控制逻辑(204)针对特定条件监视筛选表移位触发器(206),在所述特定条件下,控制逻辑(204)发起筛选表(208)中的移位。执行筛选表中的移位以保持与加载指令和存储指令所针对的存储位置相等。在一些实施方案中,筛选表移位触发器(206)是按程序顺序分配和解除分配的队列,诸如LSU(200)的存储队列(STQ)或加载跟踪队列(LTQ)。在一些实施方案中,所述移位由队列中特定的预编程时隙的再使用触发。在一些实施方案中,特定时隙使用基本输入/输出系统(BIOS)设置来预编程。

违反排序存储器结构(210)是诸如CAM结构之类的存储器结构,其操作作为控制逻辑的存储器依赖关系和违反排序检查的一部分。违反排序存储器结构(210)的示例包括存储到加载转发(STLF)CAM、无序缓冲区(OOB)CAM和加载顺序队列(LOQ)CAM。因为这些违反排序存储器结构中的查找操作在功率使用方面是昂贵的,所以本公开的实施方案包括筛选表(208),以通过跟踪在筛选表(208)内的预定义的物理地址范围中进行中的加载和存储的驻留而没有任何完整或部分地址比较来减少查找操作的数量。

STLF CAM是由LSU(200)用来验证将要执行的加载与尚未执行的较旧存储具有相同目标地址的存储器结构。当由加载存储队列(LSQ)调度加载的执行时,控制逻辑(204)将STLF CAM中的所有条目与加载的目标地址进行比较,以确定是否存在到与加载的目标地址相同的目标地址的任何先前的较旧存储。OOB CAM执行与STLF CAM类似的功能,但会检测LSQ首次将加载调度到存储器时错过的在存储指令与加载指令之间的存储器违反排序。这是可能的,因为在加载的执行时,并非所有先前的较旧存储都可能已生成其物理地址。只要认为所有较旧的存储生成其物理地址并检查依赖关系,完成的加载就会保留在OOB中。类似地,LOQ CAM通过监视高速缓存事件来检测(相同或不同线程的)加载指令之间的存储器违反排序。高速缓存事件包括高速缓存探测(诸如1级数据高速缓存探测)和高速缓存逐出(诸如1级数据高速缓存逐出)。

违反排序存储器结构筛选表(208)是从违反排序存储器结构(210)中筛选出某些排序检查触发事务(例如,加载指令、存储指令和高速缓存事件)的机制,对于这些事务,存在包括依赖关系违反的违反排序。筛选表(208)包括表示排序检查触发事务的目标地址(即,物理地址或逻辑地址)或目标地址范围的条目。例如,在一些实施方案中,筛选表包括2

在一些实施方案中,违反排序存储器结构筛选表(208)被实现为两个或更多个单独的筛选表。在一些实施方案中,筛选表中的每个专用于目标地址范围的不同集合。在一些实施方案中,由控制逻辑(204)基于目标地址的一部分关于要查询筛选表中的哪一个做出初始确定。

图3阐述了根据一些实施方案的示出用于针对加载/存储推测进行基于地址的筛选的非限制性的示例性方法的流程图,其包括维护(302)包括与地址范围相关联的表条目的筛选表。在一些实施方案中,维护(302)包括与地址范围相关联的表条目的筛选表通过控制逻辑(204)将指示置于筛选表中以用于潜在违反排序来执行。在一些实施方案中,维护(302)包括与地址范围相关联的表条目的筛选表通过控制逻辑(204)基于筛选表移位触发器的条件将表条目移位来执行。

图3的方法还包括:响应于接收到排序检查触发事务(320),使用排序检查触发事务(320)的目标地址来查询(304)筛选表(208),以确定依赖于排序检查触发事务(320)的指令先前是否已经生成物理地址。在一些实施方案中,接收排序检查触发事务(320)通过控制逻辑(204)检测出地址生成单元已经提供了排序检查触发事务(320)(例如,加载指令、存储指令、高速缓存事件)的物理地址来执行。在一些实施方案中,控制逻辑(204)接收来自地址生成单元的物理地址,并提取物理地址的子集以用作进入筛选表(208)的关键字。替代地,在一些实施方案中,控制逻辑(204)使用逻辑地址的一部分作为进入筛选表(208)的关键字。

在一些实施方案中,使用排序检查触发事务(320)的目标地址来查询(304)筛选表(208)以确定依赖于排序检查触发事务(320)的指令先前是否已经生成了物理地址通过以下操作来执行:控制逻辑(204)使用目标地址(即,物理地址或逻辑地址)的一部分生成查询条目标识符,并访问由条目标识符标识的条目。例如,在一些实施方案中,条目标识符是使用[M:M+N-1]从物理地址生成的,其中M是存储器窗口的起始地址,并且N是用于筛选表(208)的物理地址位的子集。

图3的方法还包括:响应于确定筛选表(208)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作。“进行中”是指已经完成但尚未退役的指令。在一些实施方案中,通过控制逻辑(204)访问筛选表中的条目并确定条目的内容为零来执行确定筛选表(208)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示。因为没有对依赖于排序检查触发事务(320)的先前指令的指示,所以控制逻辑(204)保证当前没有先前依赖指令在进行中(即,流水线中的任何进行中指令尚未从目标物理地址加载数据或将数据存储到目标物理地址)。

在一些实施方案中,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)操作为好像违反排序存储器结构中的查找操作已经执行,并且响应已经返回,所述响应指示当前没有依赖于排序检查触发事务(320)的指令在进行中(即,流水线中的任何进行中指令尚未从目标物理地址加载数据或将数据存储到目标物理地址)。

上述功能通过为传入的排序检查触发事务(例如加载指令、存储指令、高速缓存事件)维护筛选表来避免存储器结构中的昂贵的查找操作,改善了计算机系统的操作,其中在一些情况下,可以使用较便宜的筛选表访问来标识缺少依赖指令。此外,通过在没有性能劣化的情况下降低动态功耗,使在处理器核心中执行大量加载/存储微操作的应用的执行的功率更加高效。

为了进一步解释,图4阐述了根据实施方案的示出用于针对加载/存储推测进行基于地址的筛选的另一示例性方法的流程图,其包括:维护(302)包括与地址范围相关联的表条目的筛选表;响应于接收到排序检查触发事务(320),使用排序检查触发事务(320)的目标地址查询(304)筛选表(208)以确定依赖于排序检查触发事务(320)的指令先前是否已经生成物理地址;以及响应于确定筛选表(208)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作。

然而,图4的方法与图3的方法的不同之处在于图4的方法还包括:响应于确定筛选表(208)包括指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,执行(402)违反排序存储器结构(210)中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作。

在一些实施方案中,确定筛选表(208)包括指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)访问筛选表中的条目并确定条目不为零(即,已经将条目标记为指示先前依赖指令潜在地在进行中(即,任何进行中指令尚未从目标物理地址加载数据或将数据存储到目标物理地址))来执行。如果每个条目表示一个地址范围,则条目的标记不一定指示存在违反排序。相反,所述标记指示依赖指令已经生成了针对相同范围的物理地址。因为存在对潜在地依赖于排序检查触发事务(320)的先前指令的指示,所以控制逻辑(204)不保证当前没有先前依赖指令在进行中(即,任何进行中指令尚未从目标物理地址加载数据或将数据存储到目标物理地址)。在这种情况下,在违反排序存储器结构(210)中执行相当地更加昂贵的查找操作以确定依赖于排序检查触发事务(320)的指令当前是否在进行中。

为了进一步解释,图5阐述了根据实施方案的示出用于针对加载/存储推测进行基于地址的筛选的另一示例性方法的流程图,其包括:维护(302)包括与地址范围相关联的表条目的筛选表;响应于接收到排序检查触发事务(320),使用排序检查触发事务(320)的目标地址查询(304)筛选表(208)以确定依赖于排序检查触发事务(320)的指令先前是否已经生成物理地址;以及响应于确定筛选表(208)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作。

然而,图5的方法与图3的方法的不同之处在于:维护(302)包括与地址范围相关联的表条目的筛选表包括检测(502)依赖指令已经生成物理地址;在与依赖指令的目标地址相关联的筛选表(208)的条目中指示(504)所述依赖指令生成了物理地址;以及响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用,将筛选表(208)中的表条目移位(506)。

在一些实施方案中,检测(502)依赖指令已经生成物理地址通过由地址生成单元(202)向控制逻辑(204)通知已经生成用于特定类型的依赖指令(例如,加载指令或存储指令)的物理地址来执行。在一些实施方案中,控制逻辑(204)接收用于指令的物理地址、用于指令的逻辑地址或任一者的一部分。

在一些实施方案中,在与依赖指令的目标地址相关联的筛选表(208)的条目中指示(504)所述依赖指令生成了物理地址通过控制逻辑(204)标记目标地址在筛选表(208)中的条目来执行。在一些实施方案中,控制逻辑(204)以使用最小量的功率的方式标记所述条目。例如,在一些实施方案中,控制逻辑(204)写入值“0x03”以指示非零条目。

在一些实施方案中,检测到特定时隙已经在以程序顺序解除分配的队列中被再使用通过控制逻辑(204)监视筛选表移位触发器(206)的要将筛选表(208)移位的条件来执行。在一些实施方案中,所述条件是队列中指定时隙的再使用。在一些实施方案中,响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用而将筛选表(208)中的表条目移位(506)通过以下项来执行:控制逻辑(204)将每个表条目提前一个单元,以确保当条目为零时,则没有进行中的加载/存储具有与地址索引相同的物理地址位。在一些实施方案中,以程序顺序解除分配的队列是存储队列还是加载跟踪队列,这取决于筛选被执行用于的违反排序存储器结构。替代地,在一些实施方案中,筛选表移位触发器(206)是在指令窗口中检测对预选择的重排序缓冲区ID的再使用。

为了进一步解释,图6、图7和图8阐述了示出图3、图4和图5中描述的方法的上下文示例的流程图。具体地,图6、图7和图8分别阐述了示出存储到加载转发(STLF)CAM、无序缓冲区(OOB)CAM和加载顺序队列(LOQ)CAM的背景中的示例的流程图。图6阐述了根据STLFCAM的背景内的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。如在图3、图4和图5的组合中,图6包括维护(302)包括与地址范围相关联的表条目的筛选表,这包括检测(502)依赖(存储)指令已经生成物理地址,在与依赖(存储)指令的目标地址相关联的筛选表(208A)的条目中指示(504)依赖(存储)指令生成了物理地址,以及响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用,将筛选表(208A)中的表条目移位(506)。图6还包括响应于接收到排序检查触发事务(加载指令)(320),使用排序检查触发事务(加载指令)(320)的目标地址查询(304)筛选表(208A)以确定依赖于排序检查触发事务(加载指令)(320)的(存储)指令先前是否已经生成物理地址;响应于确定筛选表(208A)缺少指示,即依赖于排序检查触发事务(加载指令)(320)的(存储)指令先前已经生成物理地址的指示,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(加载指令)(320)的(存储)指令当前是否在进行中的查找操作;以及响应于确定筛选表(208A)包括指示,即依赖于排序检查触发事务(加载指令)(320)的(存储)指令先前已经生成物理地址的指示,执行(402)违反排序存储器结构(210A)中的用于确定依赖于排序检查触发事务(加载指令)(320)的(存储)指令当前是否在进行中的查找操作。

在图6的示例性方法中,检测(502)依赖指令已经生成物理地址通过控制逻辑(204)检测到存储指令已经由地址生成单元(202A)生成物理地址来执行。每次向控制逻辑(204)通知地址生成单元(202A)已经生成用于存储指令的物理地址,都会更新STLF CAM(210A)的筛选表(208A)。具体地,在图6的示例性方法中,在与依赖指令的目标地址相关联的筛选表(208A)的条目中指示(504)依赖指令生成了物理地址通过以下项来执行:控制逻辑(204)使用存储指令的目标地址的位的子集(即,物理地址或逻辑地址的一部分)作为STLF CAM(210A)的筛选表(208A)中的条目的标识。表示目标地址范围的该条目用0x03来标记。该动作指示存在针对所指示的条目范围内的地址的进行中存储指令。

在图6的示例性方法中,响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用而将筛选表(208A)中的表条目移位(506)是通过控制逻辑(204)检测到存储队列(206A)中的预编程时隙已经被再使用来执行。如果发生流水线部分或全部清空,则不修改所述表。因为存储队列是按程序顺序分配和解除分配的,所以存储队列以与先进先出队列类似的方式进行操作,因此不需要清空表。

在图6的示例性方法中,接收排序检查触发事务(320)通过控制逻辑(204)检测到加载指令已经由地址生成单元(202A)生成物理地址来执行。每次向控制逻辑(204)通知地址生成单元(202A)已经生成用于加载指令的物理地址,都会查询STLF CAM(210A)的筛选表(208A)。在图6的示例性方法中,使用排序检查触发事务(320)的目标地址查询(304)筛选表(208A)以确定依赖于排序检查触发事务(320)的指令先前是否已经生成物理地址通过以下项来执行:控制逻辑(204)使用加载指令的目标地址来查询筛选表(208A)以确定进行中的存储指令先前是否已经生成在加载指令的目标地址的相同范围中的物理地址。

在图6的示例性方法中,确定筛选表(208A)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)使用加载指令的目标地址的一部分访问STLF CAM筛选表(208A)并读出零条目(例如“0x0”)来执行。因此,控制逻辑(204)确定筛选表(208A)中的相关联条目缺少指示,即针对相同目标地址范围的进行中存储指令先前已经由地址生成单元(202A)生成物理地址的指示。

在图6的示例性方法中,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)绕过STLF CAM(210A)中的用于确定存储指令当前是否在进行中(即,数据是否由进行中存储指令存储在目标物理地址中)的查找操作。

在图6的示例性方法中,确定筛选表(208A)包括指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)使用加载指令的目标地址的一部分访问STLF CAM筛选表(208A)并读出非零条目来执行。因此,控制逻辑(204)确定筛选表(208A)中的相关联条目包括指示,即针对相同目标地址范围的进行中存储指令先前已经由地址生成单元(202A)生成物理地址的指示。

在图6的示例性方法中,执行(402)违反排序存储器结构(210A)中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)执行STLF CAM(210A)上的用于确定加载指令是否遭受与进行中存储指令的依赖关系的CAM查找操作。

图7阐述了根据OOB CAM的背景内的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。如在图3、图4和图5的组合中,图7包括维护(302)包括与地址范围相关联的表条目的筛选表,这包括检测(502)依赖(加载)指令已经生成物理地址,在与依赖(加载)指令的目标地址相关联的筛选表(208B)的条目中指示(504)依赖(加载)指令生成了物理地址,以及响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用,将筛选表(208B)中的表条目移位(506)。图7还包括响应于接收到排序检查触发事务(存储指令)(320),使用排序检查触发事务(存储指令)(320)的目标地址查询(304)筛选表(208B)以确定依赖于排序检查触发事务(存储指令)(320)的(加载)指令先前是否已经生成物理地址;响应于确定筛选表(208B)缺少指示,即依赖于排序检查触发事务(存储指令)(320)的(加载)指令先前已经生成物理地址的指示,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(存储指令)(320)的(加载)指令当前是否在进行中的查找操作;以及响应于确定筛选表(208B)包括指示,即依赖于排序检查触发事务(存储指令)(320)的(加载)指令先前已经生成物理地址的指示,执行(402)违反排序存储器结构(210B)中的用于确定依赖于排序检查触发事务(存储指令)(320)的(加载)指令当前是否在进行中的查找操作。

在图7的示例性方法中,检测(502)依赖指令已经生成物理地址通过控制逻辑(204)检测到加载指令已经由地址生成单元(202B)生成物理地址来执行。每次向控制逻辑(204)通知地址生成单元(202B)已经生成用于加载指令的物理地址,都会更新OOB CAM(210B)的筛选表(208B)。具体地,在图7的示例性方法中,在与依赖指令的目标地址相关联的筛选表(208B)的条目中指示(504)依赖指令生成了物理地址通过以下项来执行:控制逻辑(204)使用加载指令的目标地址的位的子集(即,物理地址或逻辑地址的一部分)作为OOBCAM(210B)的筛选表(208B)中的条目的标识。表示目标地址范围的该条目用0x03来标记。该动作指示存在针对所指示的条目范围内的地址的进行中加载指令。

在图7的示例性方法中,响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用而将筛选表(208B)中的表条目移位(506)是通过控制逻辑(204)检测到加载跟踪队列(206B)中的预编程时隙已经被再使用来执行。加载跟踪队列(206B)是由加载ID索引的位向量,并且在分派时(以程序顺序)分配并且在退役时(再次以程序顺序)解除分配。当对应的加载ID已经由进行中的加载保留时,加载跟踪队列(206B)设置一个位。加载跟踪队列(206B)作为先进先出队列来管理,并且在流水线清空时,加载跟踪队列(206B)被清除出错加载的加载ID或与出错指令或触发流水线清空的微操作最靠近的最旧加载的加载ID。

在图7的示例性方法中,接收排序检查触发事务(320)通过控制逻辑(204)检测到存储指令已经由地址生成单元(202B)生成物理地址来执行。每次向控制逻辑(204)通知地址生成单元(202B)已经生成用于存储指令的物理地址,都会查询OOB CAM(210B)的筛选表(208B)。在图7的示例性方法中,使用排序检查触发事务(320)的目标地址查询(304)筛选表(208B)以确定依赖于排序检查触发事务(320)的指令先前是否已经生成物理地址通过以下项来执行:控制逻辑(204)使用存储指令的目标地址来查询筛选表(208B)以确定加载指令先前是否已经生成在存储指令的目标地址的相同范围中的物理地址。

在图7的示例性方法中,确定筛选表(208B)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)使用存储指令的目标地址的一部分访问OOB CAM筛选表(208B)并读出零条目来执行。因此,控制逻辑(204)确定筛选表(208B)中的相关联条目缺少指示,即针对相同目标地址范围的加载指令先前已经由地址生成单元(202B)生成物理地址的指示。

在图7的示例性方法中,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)绕过OOB CAM(210B)中的用于确定加载指令当前是否在进行中(即,数据是否由进行中的加载从所针对的物理地址加载)的查找操作。

在图7的示例性方法中,确定筛选表(208B)包括指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)使用存储指令的目标地址的一部分访问OOB CAM筛选表(208B)并读出非零条目来执行。因此,控制逻辑(204)确定筛选表(208B)中的相关联条目包括指示,即针对相同目标地址范围的加载指令先前已经由地址生成单元(202B)生成物理地址的指示。

在图7的示例性方法中,执行(402)违反排序存储器结构(210B)中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)执行OOB CAM(210B)上的用于确定存储指令是否遭受违反排序的CAM查找操作。

图8阐述了根据LOQ CAM的背景内的实施方案的示出用于针对加载/存储推测进行基于地址的筛选的示例性方法的流程图。如在图3、图4和图5的组合中,图8包括维护(302)包括与地址范围相关联的表条目的筛选表,这包括检测(502)依赖(第一加载)指令已经生成物理地址,在与依赖(第一加载)指令的目标地址相关联的筛选表(208C)的条目中指示(504)依赖(第一加载)指令生成了物理地址,以及响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用,将筛选表(208C)中的表条目移位(506)。图8还包括响应于接收到排序检查触发事务(第二加载指令)(320),使用排序检查触发事务(第二加载指令)(320)的目标地址查询(304)筛选表(208C)以确定依赖于排序检查触发事务(第二加载指令)(320)的(第一加载)指令先前是否已经生成物理地址;响应于确定筛选表(208C)缺少指示,即依赖于排序检查触发事务(第二加载指令)(320)的(第一加载)指令先前已经生成物理地址的指示,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(第二加载指令)(320)的(第一加载)指令当前是否在进行中的查找操作;以及响应于确定筛选表(208C)包括指示,即依赖于排序检查触发事务(第二加载指令)(320)的(第一加载)指令先前已经生成物理地址的指示,执行(402)违反排序存储器结构(210C)中的用于确定依赖于排序检查触发事务(第二加载指令)(320)的(第一加载)指令当前是否在进行中的查找操作。

在图8的示例性方法中,检测(502)依赖指令已经生成物理地址通过控制逻辑(204)检测到加载指令已经由地址生成单元(202C)生成物理地址来执行。每次向控制逻辑(204)通知地址生成单元(202C)已经生成用于加载指令的物理地址,都会更新LOQ CAM(210C)的筛选表(208C)。具体地,在图8的示例性方法中,在与依赖指令的目标地址相关联的筛选表(208C)的条目中指示(504)依赖指令生成了物理地址通过以下项来执行:控制逻辑(204)使用加载指令的目标地址的位的子集(即,物理地址或逻辑地址的一部分)作为LOQCAM(210C)的筛选表(208C)中的条目的标识。表示目标地址范围的该条目用0x03来标记。该动作指示存在针对所指示的条目范围内的地址的进行中加载指令。

在图8的示例性方法中,响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用而将筛选表(208C)中的表条目移位(506)是通过控制逻辑(204)检测到加载跟踪队列(206C)中的预编程时隙已经被再使用来执行。在一些实施方案中,加载跟踪队列(206C)在OOB CAM背景和LOQ CAM背景两者中均用作筛选表移位触发器。

在图8的示例性方法中,接收排序检查触发事务(320)通过控制逻辑(204)检测到高速缓存探测或高速缓存逐出已经发生来执行。每次向控制逻辑(204)通知高速缓存探测或高速缓存逐出已经发生,都会查询LOQ CAM(210B)的筛选表(208C)。在图8的示例性方法中,使用排序检查触发事务(320)的目标地址查询(304)筛选表(208C)以确定依赖于排序检查触发事务(320)的指令先前是否已经生成物理地址通过以下项来执行:控制逻辑(204)使用高速缓存探测或高速缓存逐出牺牲者的目标地址来查询筛选表(208C)以确定加载指令先前是否已经生成在高速缓存探测或高速缓存逐出牺牲者的目标地址的相同范围中的物理地址。

在图8的示例性方法中,确定筛选表(208C)缺少指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)使用高速缓存探测的目标地址的一部分访问LOQ CAM筛选表(208C)并读出零条目来执行。因此,控制逻辑(204)确定筛选表(208B)中的相关联条目缺少指示,即针对相同目标地址范围的加载指令先前已经由地址生成单元(202C)生成物理地址的指示。

在图8的示例性方法中,绕过(306)违反排序存储器结构中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)绕过LOQ CAM(210C)中的用于确定加载指令当前是否在进行中(即,数据是否由进行中的加载从所针对的物理地址加载)的查找操作。

在图8的示例性方法中,确定筛选表(208C)包括指示,即依赖于排序检查触发事务(320)的指令先前已经生成物理地址的指示,通过控制逻辑(204)使用高速缓存探测的目标地址的一部分访问LOQ CAM筛选表(208C)并读出非零条目来执行。因此,控制逻辑(204)确定筛选表(208C)中的相关联条目包括指示,即针对相同目标地址范围的加载指令先前已经由地址生成单元(202C)生成物理地址的指示。

在图8的示例性方法中,执行(402)违反排序存储器结构(210C)中的用于确定依赖于排序检查触发事务(320)的指令当前是否在进行中的查找操作通过以下项来执行:控制逻辑(204)执行LOQ CAM(210C)上的用于确定高速缓存探测或高速缓存逐出牺牲者是否遭受存储器违反排序的CAM查找操作。

根据上述说明,读者将认识到根据实施方案的针对加载/存储推测进行基于地址的筛选的好处包括:

●通过为传入的排序检查触发事务(例如加载指令、存储指令、高速缓存探测、高速缓存逐出)维护筛选表改善了计算系统的操作,其中在一些情况下,可以使用较便宜的筛选表访问来标识缺少依赖指令,从而提高了计算系统的功率效率。

●通过在没有性能劣化的情况下降低动态功耗改善了计算系统的操作,从而提高了处理器核心中加载/存储微操作的功率效率。

示例性实施方案主要在用于针对加载/存储推测进行基于地址的筛选的全功能计算机系统的背景中进行描述。本文参考根据本公开的实施方案的方法、设备(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可由计算机可读程序指令来实现。

附图中的流程图和框图示出了根据各种实施方案的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这个方面,流程图或框图中的每个框可以表示指令的模块、区段或部分,所述指令包括用于实现所指定的一个或多个逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中指出的功能可以不按图中指出的顺序发生。例如,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行所述框,这取决于所涉及的功能。还应注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或者执行专用硬件和计算机指令的组合。

上面描述了针对加载/存储推测进行基于地址的筛选的方法,其包括:维护包括与地址范围相关联的表条目的筛选表;响应于接收到排序检查触发事务,使用所述排序检查触发事务的目标地址查询所述筛选表以确定依赖于所述排序检查触发事务的指令先前是否已经生成物理地址;以及响应于确定所述筛选表缺少指示,即依赖于所述排序检查触发事务的所述指令先前已经生成物理地址的指示,绕过违反排序存储器结构中的用于确定依赖于所述排序检查触发事务的所述指令当前是否在进行中的查找操作。

所述方法可以包括:响应于确定所述筛选表包括指示,即依赖于所述排序检查触发事务的所述指令先前已经生成物理地址的指示,执行违反排序存储器结构中的用于确定依赖于所述排序检查触发事务的所述指令当前是否在进行中的查找操作。

上面还描述了处理器的加载存储单元、处理器和具有针对加载/存储推测进行基于地址的筛选的设备。所述加载存储单元包括筛选表,所述筛选表包括与地址范围相关联的表条目,并且用于所述加载存储单元的控制逻辑维护所述筛选表;响应于接收到排序检查触发事务,使用所述排序检查触发事务的目标地址查询所述筛选表以确定依赖于所述排序检查触发事务的指令先前是否已经生成物理地址;以及响应于确定所述筛选表缺少指示,即依赖于所述排序检查触发事务的所述指令先前已经生成物理地址的指示,绕过违反排序存储器结构中的用于确定依赖于所述排序检查触发事务的所述指令当前是否在进行中的查找操作。

所述控制逻辑:响应于确定所述筛选表包括指示,即依赖于所述排序检查触发事务的所述指令先前已经生成物理地址的指示,执行违反排序存储器结构中的用于确定依赖于所述排序检查触发事务的所述指令当前是否在进行中的查找操作。

维护包括用于地址范围的表条目的所述筛选表可以包括:检测依赖指令已经生成物理地址;以及在与所述依赖指令的目标地址相关联的筛选表的条目中,指示所述依赖指令生成了所述物理地址。维护包括与地址范围相关联的表条目的所述筛选表还可以包括:响应于检测到特定时隙已经在以程序顺序解除分配的队列中被再使用,将所述筛选表中的所述表条目移位。以程序顺序解除分配的所述队列可以是存储队列或加载跟踪队列。维护包括与地址范围相关联的表条目的所述筛选表还可以包括:响应于检测到预选择的重排序缓冲区ID的再使用,将所述筛选表中的所述表条目移位。所述筛选表可以包括多个单独的表。

所述排序检查触发事务可以是加载指令。因此,接收所述排序检查触发事务可以包括检测到所述加载指令已经生成物理地址;使用所述排序检查触发事务的目标地址查询所述筛选表以确定依赖于所述排序检查触发事务的指令先前是否已经生成物理地址可以包括使用所述加载指令的所述目标地址查询所述筛选表以确定存储指令先前是否已经生成物理地址;确定所述筛选表缺少指示,即依赖于所述排序检查触发事务的所述指令先前已经生成物理地址的指示,可以包括确定所述筛选表缺少所述存储指令先前已经生成物理地址的指示;并且绕过违反排序存储器结构中的用于确定依赖于所述排序检查触发事务的所述指令当前是否在进行中的查找操作可以包括绕过存储到加载转发存储器结构中的用于确定所述存储当前是否在进行中的查找操作。

所述排序检查触发事务可以是存储指令。因此,接收所述排序检查触发事务可以包括检测到所述存储指令已经生成物理地址;使用所述排序检查触发事务的目标地址查询所述筛选表以确定依赖于所述排序检查触发事务的指令先前是否已经生成物理地址可以包括使用所述存储指令的所述目标地址查询所述筛选表以确定加载指令先前是否已经生成物理地址;确定所述筛选表缺少指示,即依赖于所述排序检查触发事务的所述指令先前已经生成物理地址的指示,可以包括确定所述筛选表缺少所述加载指令先前已经生成物理地址的指示;并且绕过违反排序存储器结构中的用于确定依赖于所述排序检查触发事务的所述指令当前是否在进行中的查找操作可以包括绕过无序缓冲区存储器结构中的用于确定所述加载当前是否在进行中的查找操作。

读者将理解,本文描述的步骤可以以各种方式来执行,并且不需要特定的顺序。从前面的描述中将进一步理解,可以在本公开的各种实施方案中做出修改和改变。本说明书中的描述仅出于说明的目的,而不应被理解为限制性的。本公开的范围仅由所附权利要求的语言限制。

相关技术
  • 用于加载/存储推测的基于地址的筛选
  • 用于实现从由加载存储重新排序和优化所引发的推测性转发缺失预测/错误中恢复的方法和系统
技术分类

06120113817562