版权声明:转载必须保留原出处,没有书面许可不可用于商用目的, https://blog.csdn.net/qq_43401808/article/details/85706358
Intel® Advanced Memory Access
Intel Core微架构中的每个处理器核都包含一个指令缓存和一个一级数据缓存。两个处理器核共享一个2M或4M字节大小的二级混合式缓存(既存放数据也存储指令)。两级缓存都是回写式更新策略且是非包含式缓存(即一级缓存中的缓存行未必一定包含在二级缓存中)。每个处理器核包括:
- 一级数据缓存,也叫数据缓存单元DCU – DCU可以同时处理多个未完成缓存未命中事件,持续为读存操作和写存操作提供服务,而且维护缓存一致性。DCU的规格如下:
- 32K字节大小
- 8路组相联
- 64字节长度的缓存行
- 数据(地址)转换旁查缓存区DTLB – Intel Core微架构的DTLB分为两级:内级DTLB0和外级DTLB1。每级DTLB都有多个条目,可以支持4K字节大小的存储器页,或更大的页。内级DTLB0的条目用于读存操作。外级DTLB1的条目支持写存操作以及在DTLB0中未命中的读存操作。所有的条目都是4路相联。下面是每级DTLB的条目特征:
- DTLB0的大页条目:16个
- DTLB0的4K页面条目:16个
- DTLB1的4K页面条目:256个
- DTLB1的大页条目:32个
DTLB0未命中但是DTLB1命中会导致到2个周期的损失。只有当DTLB0被用于分发情况时,软件才会感受到这种损失。由于Intel智能存储器访问机制,与DTLB1未命中以及缺页处理程序相关的延迟大部分都是非阻塞的。
- 缺页处理程序(page miss handler - PMH)
- 访存排序缓存区MOB –
- 允许投机式且乱序地发射读存和访存操作
- 确保读存与访存操作在退役时有正确的数据
- 确保读存和访存操作遵守Intel 64和IA32架构的访存排序规则
Intel Core微架构的存储器簇具有下列特性来加速访存操作:
- 128位(16字节)的读存和访存操作
- 数据预取到一级缓存
- 数据预取逻辑,预取数据到二级缓存
- 存储转发
- 访存消歧(memory disambiguation)
- 8个行填充缓冲区(fill buffer)条目
- 20存储缓冲区条目
- 访存操作的乱序执行
- 流水线化的属主读请求(read-for-ownership)操作