现代缓存中的道路预测 其他方式的预测示例延迟和功耗注意事项

问题描述

我们知道就高速缓存命中时间而言,直接映射高速缓存比集合关联高速缓存更好,因为不涉及特定标签的搜索。另一方面,集合关联缓存通常比直接映射缓存显示出更高的命中率。

我读到现代处理器试图通过使用一种称为“路途预测”的技术来结合两者的优势。他们在哪个位置预测了最有可能发生匹配的给定组的直线,并且仅在该直线中进行搜索。如果尝试导致未命中,请在集合的所有缓存行中使用常规的集合关联搜索。

我想了解这种方式预测的工作方式。预测硬件/逻辑的等待时间比完整搜索的等待时间小吗?

解决方法

AMD的Bulldozer和Ryzen系列的方式预测机制基于µtag,并在“采用方式:探索AMD缓存方式预测器的安全隐患”中进行了记录(Moritz Lipp等人,2020,PDF

基于µtag的方式预测与虚拟地址的哈希而不是完整的虚拟地址匹配,因此,它不仅避免了像虚拟标记的缓存一样的地址转换开销,而且通过使用较少的存储空间,可以以较低的访问量访问预测数组延迟,并且检查标签时的延迟稍低。 “ Take A Way”经过反向工程,AMD的Bulldozer系列和Ryzen系列都使用第12到27位作为哈希功能,并且使用单个xor(⊕)层,从而减少了延迟。推土机家族使用12月21日,13月22日:,14月23日,15月24日,16月25日,17月26日,18月27日; Ryzen家族使用了12⊕27、13⊕26、14⊕25、15⊕20、16⊕21、17⊕22、18⊕23、19⊕24。

这些µtag哈希函数的两个方面值得注意。首先,通过使用较低有效位而不是全部48个有效虚拟地址位,由于减少了进位传播延迟,哈希函数中使用的所有位都较早可用(地址生成涉及加法,尽管高性能加法器具有log(n )延迟,有效位较低的位将更早可用)。 (此效果还意味着,用于确定高速缓存集的十二个最低有效位甚至更早可用,因此可以在计算µtag之前对预测器表进行索引。)其次,在Ryzen系列中,通常是最小变量(最大有效位)与散列的三位通常具有最高可变性(最低有效)位进行异或;这样可以减少错误匹配的可能性。错误匹配是通过替换匹配而不是使用普通的(面向LRU的)替换策略来处理的;通常会导致较高的未命中率。

(众所周知,最近的Intel x86处理器也使用基于µtag的方式。)

其他方式的预测示例

道路预测不是一项新技术。 Pentium4还使用了µtag预测器。因为对于Willamette(第一个Pentium4)而言,最低位16 地址的位在半个周期之前可用 (它使用了交错的AGU,计算了添加项的下半部分, 快速执行逻辑运算并将结果转发给从属 操作)和6 + 5位用于高速缓存行偏移和设置索引 (64B高速缓存行,4路8KiB),标签只有5位可用。 如果使用随机访问,这意味着发生错误的几率只有八分之一 比赛;虽然典型的访问模式遇到的此类匹配较少, 这被认为是一个问题。


¹只有五个µtag位,因此四种方式中的每一种都有32分之1的匹配机会,因此总体而言有8分之1的匹配机会。在具有32位地址空间的情况下,μtag之外还有16位,因此,在65536中只有一个匹配的机会代表命中。隐含的命中率0.0001907%(8 KiB高速缓存覆盖的4 GiB的分数)使统一随机访问的不现实性质变得显而易见。


MIPS R10000为其片外双向双向L2缓存使用了一个基于MRU的简单预测器。提供了8Ki个单比特预测条目,以指示集合中最近使用的缓存块。如果提供了超过8个Ki集(具有64个B块的16 MiB L2高速缓存最多支持128 Ki集),则不同的集将使用相同的预测位(预测器混叠)。这种预测方法用于减少引脚数。一次只能读取一个标签,并且只能通过一种方式读取部分数据块。替代方案是直接映射缓存(HP PA-RISC使用大型片外,直接映射L1缓存)或专用(更昂贵)的芯片来处理标签比较(MIPS R8000使用特殊的标签SRAM,其中包括标签比较逻辑和使用比较结果来寻址保存数据的普通SRAM。

Alpha 21264指令高速缓存使用了集合和路径预测器,可以将其视为分支目标缓冲区的变体。对于四个4字节指令的每个对齐块,都包括对下一行(索引)和方式的预测。如果一大堆指令包括上次执行该指令的分支,则该分支的目标行和方式将是该行的预测。具有可变目标(包括回电)和分支的控制流指令(无论是否采用它们)会导致错误预测,但是此预测器的准确性通常很高。

延迟和功耗注意事项

现代高性能处理器主要使用方式预测来减少访问能量,同时保持快速访问。由于支持32字节缓存访问(例如,用于AVX)和快速未对齐的负载(这实际上使访问大小增加了一倍),因此并行读取八种数据方式和(通常)仅读取一种数据方式之间的能量差是巨大的。标签读取和比较能量的节省由于需要读取和比较µtags而有所减少。 (请注意,放宽TLB的等待时间限制-使用物理标签和权限标签进行命中确认可以在执行单元已经使用数据的预测方式之后进行-也可以用来减少访问能量或增加TLB容量。)>

直接映射的缓存由于无需在将数据转发到执行单元之前选择正确的方式而获得了延迟优势。选择正确的方法包括标签比较和多路复用器选择本身。但是,如果方式确定(或预测)延迟小于数据访问延迟,则设置关联性唯一增加的延迟就是“预热”多路复用器的直通延迟。由于标签阵列比数据阵列要小得多,因此它们的访问延迟要小得多,因此(在使用虚拟地址标签时)更容易确定在数据本身可用之前的方式。 (在较早的处理器中,较小的缓存块(标签阵列的大小更接近数据阵列的大小),并且与逻辑延迟相比,布线延迟相对较低,这使得在数据可用性变得更困难之前完成路段确定,并适度增加选择延迟的影响。)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...