缓存行 Format/Layout
Cache Line Format/Layout
我想了解缓存行的布局(不是缓存布局),正在寻找更深入的解释或有关缓存行中包含哪些字段的图,最好是 Intel CPU。
关于计算机系统:来自 Randal E. Bryant 的程序员视角; David R. O'Hallaron 指出:
A cache line is a container in a cache that stores a block, as well as other information such as the valid
bit and the tag bits.
但是,这是非常通用的,没有说明是否还有其他位。
我正在网上搜索上述书籍和英特尔手册,但没有找到其他任何东西。唯一似乎随时可用的是有关缓存布局和页面 table 条目的信息。
这是任何未公开的信息还是太琐碎了,缓存行中唯一可用的字段是数据块、有效位和标记位(如书中所述)?
除了数据本身,每个缓存行通常会有一致性元数据(不仅仅是有效性,使用四态 MESI 是一种流行的一致性跟踪方法)和奇偶校验或 ECC 元数据。
对于每组(或有时每行),也会有替换信息。 Not Recently Used 可以通过每行一个位来实现,该位在使用时设置,并在高速缓存集中设置所有使用位时清除。基于树的伪最近最少使用的每个集合都有一个二叉树,其中每个位表示它的一半是否最近被使用过。
由多个 L1 使用的 L2 或 L3 缓存可能具有关于哪些 L1 缓存保存数据的元数据,以避免必须向所有 L1 发送失效或共享更新请求。
可能存在其他元数据以改进基本方法之外的替换(例如,已提出 EvictMe 位)、指示压缩状态、提供预取提示等。AMD 的 Athlon 窃取了 ECC 位以在 L2 中存储分支信息(仅对指令存储器提供奇偶校验保护)。
指令缓存还可以对缓存行进行预解码,使解码更简单、更快速。这可以改变编码(例如,用分支目标插入(偏移量和偏移量之和)替换分支目标偏移量),重新排列字段以获得更规则的编码,或者用指令类型信息填充指令。
我想了解缓存行的布局(不是缓存布局),正在寻找更深入的解释或有关缓存行中包含哪些字段的图,最好是 Intel CPU。
关于计算机系统:来自 Randal E. Bryant 的程序员视角; David R. O'Hallaron 指出:
A cache line is a container in a cache that stores a block, as well as other information such as the valid bit and the tag bits.
但是,这是非常通用的,没有说明是否还有其他位。 我正在网上搜索上述书籍和英特尔手册,但没有找到其他任何东西。唯一似乎随时可用的是有关缓存布局和页面 table 条目的信息。
这是任何未公开的信息还是太琐碎了,缓存行中唯一可用的字段是数据块、有效位和标记位(如书中所述)?
除了数据本身,每个缓存行通常会有一致性元数据(不仅仅是有效性,使用四态 MESI 是一种流行的一致性跟踪方法)和奇偶校验或 ECC 元数据。
对于每组(或有时每行),也会有替换信息。 Not Recently Used 可以通过每行一个位来实现,该位在使用时设置,并在高速缓存集中设置所有使用位时清除。基于树的伪最近最少使用的每个集合都有一个二叉树,其中每个位表示它的一半是否最近被使用过。
由多个 L1 使用的 L2 或 L3 缓存可能具有关于哪些 L1 缓存保存数据的元数据,以避免必须向所有 L1 发送失效或共享更新请求。
可能存在其他元数据以改进基本方法之外的替换(例如,已提出 EvictMe 位)、指示压缩状态、提供预取提示等。AMD 的 Athlon 窃取了 ECC 位以在 L2 中存储分支信息(仅对指令存储器提供奇偶校验保护)。
指令缓存还可以对缓存行进行预解码,使解码更简单、更快速。这可以改变编码(例如,用分支目标插入(偏移量和偏移量之和)替换分支目标偏移量),重新排列字段以获得更规则的编码,或者用指令类型信息填充指令。