2.4.5.Intel® Advanced Smart Cache
Intel Core微架构为一块芯片上的两个处理器核优化了若干特性。这两个核共享一个第二级缓存以及一个总线接口单元,统称为IntelAdvanced Smart Cache。本节描述Intel Advanced Smart Cache的组件。图2-9显示了IntelAdvanced Smart Cache架构。
图2-9. Intel Advanced Smart Cache架构
表2-27细述了IntelCore微架构中缓存的参数。关于使用确定性的CPUID指令的缓存参数页枚举缓存层次结构识别的信息,参考《Intel®64 and IA-32 Architectures Software Developer’s Manual, Volume 2A》。
表2-27. 基于Intel Core微架构的处理器缓存参数
层级 | 容量 | 关联性(路) | 行大小 (字节) | 访问时延(时钟) | 吞吐率(时钟) | 更新策略 |
L1数据 | 32KB | 8 | 64 | 3 | 1 | 回写 |
指令 | 32KB | 8 | N/A | N/A | N/A | N/A |
第二级 (共享L2)[1] | 2, 4MB | 8或16 | 64 | 14[2] | 2 | 回写 |
第二级 (共享L2)[3] | 3, 6MB | 12或24 | 64 | 1517 | 2 | 回写 |
第三级[4] | 8, 12, 16MB | 16 | 64 | ~110 | 12 | 回写 |
2.4.5.1. 读
当一条指令从一个具有回写(WB)类型的内存位置读数据时,处理器以下列次序在缓存以及内存中查找包含该数据的缓存行:
1. 发起核的DCU。
2. 其他核的DCU以及第二级缓存。
3. 系统内存。
仅当该缓存行被修改,忽略L2缓存中其可用性或状态时,从其他核的DCU获取该缓存行。
表2-28显示了从内存簇不同位置获取前4个字节的特征。时延行提供了访问时延的一个估计。不过,实际的时延依赖于缓存的负载,内存组件及它们的参数而变。
表2-28. Intel Core微架构中读写操作的特征
数据局部性 | 读 | 写 | ||
时延 | 吞吐率 | 时延 | 吞吐率 | |
DCU | 3 | 1 | 2 | 1 |
在其他核中修改状态的DCU | 14+5.5总线周期 | 14+5.5总线周期 | 14+5.5总线周期 |
|
第二级缓存 | 14 | 3 | 14 | 3 |
内存 | 14+5.5总线周期+内存 | 依赖于总线读协议 | 14+5.5总线周期+内存 | 依赖于总线写协议 |
有时,必须逐出一个被修改缓存行来为新缓存腾出空间。这个被修改缓存行的逐出与新数据的引入并行,不需要额外的时延。不过,当数据回写到内存时,逐出使用缓存带宽,还可能使用总线带宽。因此,当多个缓存不命中要求在短时间内逐出被修改行时,缓存响应时间有一个总体上的下降。
2.4.5.2. 写
当一条指令向一个具有WB内存类型的内存位置写数据时,处理器首先确保该行在它自己的DCU中,处在Exclusive或Modified状态。处理器在下列位置,以指定次序查找这个缓存行:
1. 发起核的DCU。
2. 其他核的DCU以及第二级缓存。
3. 系统内存。
仅当该缓存行被修改,忽略L2缓存中其可用性或状态时,从其他核的DCU获取这个缓存行。在完成为所有权读入(readingforownership)后,该数据被写入第一级数据缓存,并且该行被标记为已修改。
为所有权读入与写数据发生在指令回收之后,并遵循回收次序。因此,写时延不影响写指令本身。不过,几个连续写可能具有累积的,会影响性能的时延。表2-28展示了依赖于发起缓存行位置的写时延。
[1] Intel Core微架构(CPUID签名DisplayFamily= 06H,DisplayModel= 0FH)。
[2] 软件可见时延将依赖访问模式与其他因素而变化。
[3] 增强Intel Core微架构(CPUID签名DisplayFamily = 06H,DisplayModel = 17H或1DH)。
[4] 增强Intel Core微架构(CPUID签名DisplayFamily = 06H,DisplayModel = 1DH)。