一种基于人工神经网络的乱序处理器Cache访存性能评估方法

文档序号:9887886阅读:1055来源:国知局
一种基于人工神经网络的乱序处理器Cache访存性能评估方法
【技术领域】
[0001] 本发明涉及一种基于人工神经网络的乱序处理器Cache访存性能评估方法,属于 软硬件协同设计领域。
【背景技术】
[0002] 基于硬件行为建模的硅前架构评估及设计空间探索可提供芯片设计指导意见,降 低芯片设计迭代周期。Cache作为片上高速缓存对处理器访存性能影响较大,访问缺失会使 处理器流水线产生气泡或引起流水线阻塞,降低处理器计算性能。另外,Cache占据大量芯 片面积,消耗大量功耗,所以处理器设计需要更合理地设计Cache的组织结构。
[0003] 近几年关于Cache访存性能的研究可以分成两个方向维度,一是减少目标应用程 序在当前Cache结构中的访存缺失次数,二是减少访问命中时SRAM体响应时间以及访问缺 失后的数据取回时间。统计Cache访存缺失次数的方法主要包含两种,一是基于重用距离分 布的概率推算,二是基于堆栈距离分布的统计计数。重用距离指,针对同一 Cacheline的两 次连续访存请求之间存在的访存请求个数。堆栈距离指,针对同一 Cacheline的两次连续访 存请求之间的访存地址种类个数。重用距离与堆栈距离均需要从访存Trace流中提取。获取 Trace流多以在二进制执行工具中软件插粧的方式来统计访存顺序流,或者也可以将重用 距离、堆栈距离提取算法直接嵌入到二进制执行工具中。采用二进制执行工具的好处是可 较为快速地提取出重用距离与堆栈距离分布,但缺点是获取的重用距离、堆栈距离分布均 是按照访存指令顺序执行的结果统计。该方法不能直接应用于乱序处理器的Cache访存行 为建模。
[0004] 访存行为在乱序处理器中的乱序调度受四个因素影响。首先,访存地址运算会乱 序执行。访存指令在转换成访存操作前需要计算访存地址。若计算所依赖的源操作数(寄存 器)处于就绪状态,在无读写一致性问题且无 Memory Barrier指令嵌入时,地址计算操作可 被调度。乱序调度的原因是由于优先进入流水线的指令,其计算资源未就绪。为了提升处理 器指令吞吐率,故将计算资源已经就绪的指令优先调度。其次,TLB访问缺失引起会访存乱 序发射。在地址计算完成后,访存地址会传输至TLB进行地址翻译,将虚拟地址转换成物理 地址。因为TLB采取CAM或类Cache的访问结构,容量相对较小,无法将页表中所有的表项缓 存在TLB中,所以地址转换过程中会产生TLB访问缺失现象。假如存在地址计算完成且TLB访 问命中的访存请求,则乱序至前排发射。第三,地址转换过后,访存请求会通过Cache端口进 入到Cache存储体中。由于端口数量有限,非阻塞发射访存请求会使Cache端口存在被填充 满的情况。此时,所有就绪访存停止发射,待Cache端口处于非堵塞状态时重新恢复发射。在 等待过程中,由于计算资源未就绪或TLB访问缺失等原因,被乱序至后排发射的访存请求此 时已处于发射就绪状态。基于乱序调度机制遵循最老指令优先调度的原则,原本被打乱的 访存序列存在恢复顺序执行逻辑的可能。
[0005] 最后值得注意的是,即使得到访存乱序执行流,也不能将其直接应用于乱序处理 器的Cache访存行为建模。这是因为处理器非阻塞发射访存请求,使得后续访问在前次访存 还未完成的情况下被扔出。而顺序处理器必须等待前次访问完成后才能发出后续访问请 求。
[0006] 上述四种乱序影响,使得基于二进制执行工具提取的堆栈距离分布同乱序执行后 的结果相比差异巨大,导致Cache访存行为预测精度不高。现有预测乱序处理器Cache访问 缺失次数的方法采用全功能仿真模型,由于全仿真时间开销过大,该方法不利于快速评估 Cache访存行为。所以本发明针对上述问题提出了一种基于神经网络的Cache性能评估方 法,用于快速预测乱序处理器中Cache访存行为。

【发明内容】

[0007] 发明目的:为了克服现有技术中存在的不足,本发明提供一种基于人工神经网络 的乱序处理器Cache访存性能评估方法,该方法解决了利用二进制执行工具提取的堆栈距 离分布在预测Cache访存行为上精度不高的问题。
[0008] 技术方案:为实现上述目的,本发明采用的技术方案为:
[0009] -种基于人工神经网络的乱序处理器Cache访存性能评估方法,包括以下步骤:
[0010] 步骤1,仿真获取目标程序执行时间前30%的访存乱序执行流;依据Gem5指令取指 序号对乱序执行流进行重排序,获取访存顺序执行流;设计堆栈距离算法,分别对顺序执行 流与乱序执行流提取堆栈距离分布,并作数据归一化;
[0011] 步骤2,根据步骤1得到的乱序访存堆栈距离分布在Gem5中加入Cache访问缺失事 件的判定逻辑,统计各项缺失事件次数;
[0012] 步骤3,选取BP人工神经网络,依照经验公式调试获取合适的训练方法、网络层级 数目以及各层级内的神经元个数;通过选定的BP人工神经网络对步骤1得到的归一化后的 顺序访存堆栈距离分布与步骤2判断得到的不同的访问缺失事件间的映射关系进行拟合;
[0013] 步骤4,利用Qemu运行目标程序得到目标程序顺序执行流,将目标程序顺序执行流 导入步骤1设计的堆栈距离算法提取目标程序堆栈距离分布;
[0014] 步骤5,将第4步获取的目标程序堆栈距离分布归一化后导入步骤3选取的BP人工 神经网络,同时根据堆栈距离分布与不同的访问缺失事件间的映射关系预测目标程序在乱 序处理器中的Cache访问缺失次数。
[0015] 所述步骤1中堆栈距离算法的设计方法如下:堆栈距离指针对同一 Cacheline的两 次连续访存请求间的访存地址个数,通过红黑树与哈希表的组合计算堆栈距离;访存Trace 包括2个模块,一是当前访存请求地址,二是当前访存请求序号SN;哈希表的个数为两个,分 别为第一哈希表、第二哈希表,第一哈希表采用地址中Tag与Set位域作为索引,获取内容无 效化标志以及前次同地址访存的序号;第二哈希表通过地址Set位域索引,获取指向红黑树 的指针;红黑树中存储访存序号SN,并按照升序排列;通过在第一哈希表中索引到的SN号, 在红黑树中找到存储位置,计算该位置与红黑树尾端的距离即为当前访存请求在Cache Set内的堆栈距离;通过在第一哈希表中索引到的SN号,在红黑树中找到存储位置,计算该 位置与红黑树尾端的距离即为当前访存请求在Cache Set内的堆栈距离;完成堆栈距离计 算后,将当前访存序号更新到在哈希表和红黑树中索引的SN处;当检测到写操作时,依据写 地址找到第一个哈希表中对应的内容失效位置1。
[0016]优选的:对访存堆栈距离分布采取归一化的数据处理的方法;将堆栈距离超过100 的所有分布合成一维。
[00?7]所述步骤2中Gem5中Cache访问缺失事件的判定的方法:
[0018]访存缺失计数可通过在gem5中嵌入访存堆栈距离计算来判定。
[0019] 冷缺失:若在第一哈希表中找不到当前访存请求地址,则判定为冷缺失。
[0020] 竞争缺失:若在第一哈希表中找到当前访存请求地址且堆栈距离大于等于Cache 组关联数目,则判定为竞争缺失。
[0021] -致性缺失:若在第一哈希表中找到当前访存请求地址且堆栈距离小于Cache组 关联数,同时内容无效化标志为
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1