Caching 现代缓存中的路径预测

Caching 现代缓存中的路径预测,caching,cpu-architecture,processor,cpu-cache,micro-architecture,Caching,Cpu Architecture,Processor,Cpu Cache,Micro Architecture,我们知道,直接映射缓存在缓存命中时间方面优于设置关联缓存,因为不涉及对特定标记的搜索。另一方面,集合关联缓存通常比直接映射缓存显示更好的命中率 我读到,现代处理器试图通过使用一种称为路径预测的技术,将两者的优点结合起来。他们预测给定集合中最有可能发生攻击的行,并只在该行中搜索。如果尝试导致未命中,请在集合的所有缓存线中使用“正常集合关联搜索” 我想了解这种预测方法是如何工作的。预测硬件/逻辑的延迟如何小于整套的搜索延迟?AMD推土机和Ryzen系列的路径预测机制是基于µ标记的,并记录在“采取一种

我们知道,直接映射缓存在缓存命中时间方面优于设置关联缓存,因为不涉及对特定标记的搜索。另一方面,集合关联缓存通常比直接映射缓存显示更好的命中率

我读到,现代处理器试图通过使用一种称为路径预测的技术,将两者的优点结合起来。他们预测给定集合中最有可能发生攻击的行,并只在该行中搜索。如果尝试导致未命中,请在集合的所有缓存线中使用“正常集合关联搜索”


我想了解这种预测方法是如何工作的。预测硬件/逻辑的延迟如何小于整套的搜索延迟?

AMD推土机和Ryzen系列的路径预测机制是基于µ标记的,并记录在“采取一种方式:探索AMD缓存路径预测器的安全含义”(Moritz Lipp et al.,2020,)中

µ基于标记的方式预测匹配虚拟地址的散列,而不是完整的虚拟地址,因此它不仅避免了地址转换开销(如虚拟标记的缓存),而且通过使用较少的存储空间,可以以较低的延迟访问预测阵列,并以稍低的延迟检查标记。“Take A Way”反向设计,AMD的推土机系列和Ryzen系列都使用第12位到第27位作为散列函数,并且使用单个xor(⊕) 使用层,这减少了延迟⊕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⊕二十四,

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

(最近的Intel x86处理器也使用基于µ标记的方式预处理。)

其他方式预测示例 路径预测不是一项新技术。POWER6使用µ标记预测器,11位标记为[14:17]。([16:23]⊕[24:31]),用于具有128 B缓存线的64 KiB 8路缓存。(“IBM POWER6微体系结构”,H.Q.Le等人,2007)。还包括每个硬件线程的一个有效位,以避免同音词的抖动(不同地址空间的有效地址匹配)与Ryzen一样,人们清楚地认识到最低有效位的变化频率更高,因此两个最低有效位与任何其他位进行异或运算

奔腾4还使用了一个µ标记预测器。根据“基于90nm技术的英特尔奔腾4处理器的微体系结构”(Darrell Boggs等人,2004),90nm实现“与以前的实现相比,显著增加了部分地址匹配的大小,从而减少了假别名情况的数量”。详细信息似乎尚未公布

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

Alpha 21264指令缓存使用了一个集合和路径预测器,可以将其视为分支目标缓冲区的变体。对于四条4字节指令的每个对齐块,下一行(索引)的预测包括和路径。如果指令块包含上次执行的分支,则该分支的目标行和路径将是该行的预测。具有可变目标的控制流指令(包括调用返回)而改变是否使用的分支会导致预测失误,但这种预测的准确性通常很高

延迟和电源方面的考虑 现代高性能处理器主要使用路径预测来减少访问能量,同时保持快速访问。由于支持32字节缓存访问(例如AVX)和快速未对齐负载(这有效地将访问大小增加了一倍),并行读取八条数据路径与(通常)读取八条数据路径之间的能量差仅读取一种方式的数据是非常重要的。由于需要读取和比较µ标签,标签读取和比较能耗的节省有所减少。(注意,放松TLB上的延迟约束-使用物理标记和权限标记进行命中确认可以在执行单元已经使用预测的方式数据之后发生-也可以用来减少访问时间。)