一种基于FDIP的指令缓存预取方法、装置及处理器与流程
本发明涉及处理器微体系结构的,具体涉及一种基于fdip的指令缓存预取方法、装置及处理器,可应用于处理器前端分支预测单元、取指单元、一级指令缓存以及多级缓存系统中的指令访问优化。
背景技术:
1、随着服务器应用、云计算应用以及大规模软件系统的发展,程序指令工作集持续增大,一级指令缓存容量难以长期容纳全部热点代码。当处理器前端访问的指令缓存行不在一级指令缓存中时,会产生指令缓存缺失,导致取指流水线停顿,进而影响译码、发射和执行单元的持续供给。因此,如何降低指令缓存缺失带来的前端停顿,是现代高性能处理器设计中的重要问题。
2、现有技术中,fdip是一种常见的指令预取机制。该机制利用分支预测单元在取指单元之前运行,提前预测未来的取指块地址,并将预测得到的取指块写入fdip queue。取指单元后续根据该队列访问指令缓存,同时fdip机制可基于队列中的未来取指块提前发起指令预取,从而隐藏部分指令缓存缺失延迟。
3、然而,传统fdip方案通常采用固定深度、固定窗口或统一策略对未来取指块进行预取。例如,当fdip queue中存在若干未来取指块时,系统可能按照固定队列深度、固定距离或固定数量发起预取。该类方案存在以下问题:
4、第一,不同指令块的缺失服务延迟不同。有些指令块可能通常从二级缓存返回,所需提前距离较小;有些指令块可能经常从最后一级缓存或主存返回,需要更早发起预取。统一预取深度难以同时满足不同目标指令块的及时性要求。
5、第二,不同预测路径的稳定性不同。对于某些由特定分支历史或路径历史决定的取指块,预取通常有效;而对于路径变化较大的取指块,过早或过深的fdip预取可能落在错误路径上,造成无效预取和指令缓存污染。
6、第三,固定深度fdip难以同时兼顾预取及时性和准确性。预取深度过浅时,需求访问到达时预取尚未返回,形成迟到预取;预取深度过深时,预取行可能在被真实使用前已经被替换,或者压占其他有用指令缓存行,造成过早预取和缓存污染。
7、第四,现有fdip通常重点关注“预测哪些未来取指块”,而缺少针对每个预测取指块动态确定“应提前多远预取”的机制。即使分支预测单元能够预测未来取指路径,若缺少与具体取指块和路径历史相关的动态预取深度控制,仍可能产生大量不及时或无效的预取。
8、因此,亟需一种改进的基于fdip的指令预取机制,使分支预测单元在预测未来取指块时,能够同时提供与该取指块及其路径历史相关的动态预取深度,并通过预取结果反馈持续维护该深度,从而提高fdip预取的及时性、准确性和资源利用效率。
技术实现思路
1、针对上述问题,本发明的目的是提出一种基于fdip的指令缓存预取方法、装置及处理器,通过改进基于fdip的指令预取机制,使分支预测单元在预测未来取指块时,能够同时提供与该取指块及其路径历史相关的动态预取深度,并通过预取结果反馈持续维护该深度,从而提高fdip预取的及时性、准确性和资源利用效率。
2、通过以下技术方案实现的:
3、首先,提出一种基于fdip的指令缓存预取方法,包括如下步骤:
4、s1、分支预测单元根据当前取指块分组pc和路径历史信息,计算pdt索引,并查询动态预取深度预测表pdt,以获得预测取指块的预取深度和置信度;
5、s2、将预测取指块地址、预取深度、置信度及pdt索引作为表项写入fdip队列;
6、s3、预取条件检测单元扫描fdip队列,当目标取指块的预取深度大于或等于其距当前取指指针的队列距离、置信度达预设阈值、尚未发起预取、对应指令缓存行不在一级指令缓存/预取队列/mshr中且资源可用时,判定满足触发条件;
7、s4、将满足条件的目标取指块对应指令缓存行写入预取队列,在mshr空闲时发起预取请求,并标记对应fdip表项为已发起预取;
8、s5、预取返回后将指令缓存行写入一级指令缓存,设置预取标记并保存pdt索引;
9、s6、在后续进行取指时,若目标取指块已在一级指令缓存且预取标记有效,则根据保存的pdt索引定位pdt表项并增加对应的置信度;
10、若目标取指块不在一级指令缓存但mshr或预取队列中已有对应预取请求,则根据其中保存的pdt索引定位pdt表项,增加对应的置信度及预取深度;
11、若已发起预取的目标取指块被判定处于错误预测路径,则根据fdip表项中的pdt索引定位pdt表项并降低对应的置信度。
12、可选地,步骤s1中计算pdt索引时,通过对当前取指块分组pc和路径历史信息进行哈希,得到pdt索引:pdt_index=hash(group_pc,phr/ghr);通过对当前取指块分组pc的部分位和折叠后的路径历史信息进行运算,得到pdt标签:pdt_tag=partial(group_pc,folded phr);其中,group_pc为当前取指块分组pc,phr为路径历史寄存器,ghr为全局历史寄存器。
13、可选地,fdip队列中每个表项至少保存:目标取指块地址、预取深度、置信度、预取发起状态标记、pdt索引和pdt标签。
14、可选地,步骤s3中,判断目标取指块对应的指令缓存行是否已在预取队列或mshr中存在对应预取请求时,通过比对预取队列和mshr中保存的预取来源信息与目标取指块的地址和pdt索引进行确认;预取来源信息至少包括目标取指块地址和pdt索引。
15、可选地,步骤s4中发起预取请求时,在预取队列和mshr中保存该预取请求对应的pdt索引和pdt标签;预取返回后,根据pdt索引和pdt标签定位对应的pdt表项,并在指令缓存行中保存pdt索引,用于后续预取有效性判断时定位对应的pdt表项进行更新维护。
16、可选地,步骤s6中增加pdt对应表项置信度时,预取深度维持不变。
17、可选地,步骤s6中增加pdt对应表项置信度并增加其预取深度时,对置信度执行自增操作,同时对预取深度执行自增操作。
18、可选地,步骤s6中降低pdt对应表项置信度时,对置信度执行自减操作。
19、其次,还提出一种基于fdip的指令缓存预取装置,采用上述的指令缓存预取方法进行运行,包括:
20、路径历史寄存器,用于记录分支方向信息、路径信息或取指路径信息;
21、分支预测单元,连接路径历史寄存器,用于根据当前取指块分组pc和路径历史寄存器提供的路径历史信息预测未来取指块;
22、动态预取深度预测表pdt,连接分支预测单元和路径历史寄存器,用于根据分组pc和路径历史信息进行索引,输出对应预测取指块的预取深度和置信度;
23、fdip队列,连接分支预测单元和pdt,用于存储各预测取指块的地址及其对应的预取深度、置信度和pdt索引;
24、预取条件检测单元,分别连接fdip队列、一级指令缓存、预取队列和mshr,用于扫描fdip队列并根据预取深度、置信度、队列距离及缓存占用状态判断是否触发预取;
25、预取队列,连接预取条件检测单元,用于接收预取请求并暂存待预取的指令缓存行地址及其对应的pdt索引;
26、mshr,连接预取队列,用于跟踪未完成的预取请求及其对应的pdt索引;
27、更新维护单元,分别连接fdip队列、预取队列、mshr和一级指令缓存,用于根据预取返回状态和后续取指命中状态更新pdt中各表项的置信度和预取深度。
28、此外,还提出一种处理器,处理器用于运行计算机程序,计算机程序运行时执行如上述的指令缓存预取方法。
29、本发明与传统fdip机制相比具有的有益效果是:
30、第一,本发明能够为不同预测取指块提供不同的动态预取深度。传统fdip通常采用固定深度或固定窗口进行预取,而本发明通过动态预取深度预测表,使每个取指块在特定group pc和路径历史上下文下具有独立的预取深度,从而更好地适应不同目标块的缺失延迟和路径行为。
31、第二,本发明能够提高预取及时性。对于经常发生迟到预取的取指块,系统通过late_score和反馈更新机制逐步增大其depth,使该取指块在fdip queue中更早触发预取,从而增加其在需求访问前返回一级指令缓存的概率。
32、第三,本发明能够降低过早预取和缓存污染。对于已经预取但在使用前被替换的指令缓存行,系统通过过早预取反馈机制(例如降低该取指块对应的预取深度和置信度),使后续预取更靠近真实使用点,避免过早占用一级指令缓存空间。
33、第四,本发明能够抑制错误路径预取。由于动态预取深度预测表以group pc和phr/ghr共同索引,能够区分不同路径历史上下文下的预取行为;同时,错误路径预取会降低对应表项的useful_conf,从而减少在不稳定路径上的无效fdip预取。
34、第五,本发明的实现开销较低。该方案不要求建立复杂的历史访问回溯关系,也不需要在缺失返回后搜索历史缓冲区寻找触发源。其主要新增结构为动态预取深度预测表、fdip queue entry中的若干附加字段以及预取反馈更新逻辑,适合与现有bpu、ftb、fdipqueue和i-cache前端结构集成。
35、第六,本发明保留了fdip的工程优势。fdip原本能够利用分支预测单元提前产生未来取指流,本发明在此基础上增加动态预取深度预测,使fdip不仅知道“未来要取哪些块”,还能够知道“每个块应该提前多远预取”,从而在覆盖率、及时性、准确性和硬件开销之间取得更好的平衡。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com