Intel系统编程指南第十一章——11.1 内部Cache、TLB和缓存

来源:互联网 发布:西门子热电偶模块编程 编辑:程序博客网 时间:2024/06/05 06:55

Intel 64和IA-32架构支持Cache、翻译后备缓存(TLB)以及一个用于指令和数据的临时片上(和外部)存储的存储缓存。(图11-1展示了奔腾4和Intel至强处理器的Cache、TLB和存储缓存的安排)。表11-1展示了为奔腾4、Intel至强、P6家族、和奔腾处理器的这些Cache和缓存的特征。这些单元的大小和特征是机器特定的,并且在处理器的未来版本中可能会变。CPUID指令返回Cache和缓存的大小和特征。

 

Intel 64和IA-32处理器可以实现四种类型的Cache:踪迹Cache、一级(L1)Cache、二级(L2)Cache和三级(L3)Cache。见图11-1。以下描述Cache可用性:

1、Intel酷睿i7、i5、i3处理器家族和Intel至强处理器家族,基于Intel®微架构代码名Nehalem以及微架构代码名Westmere——L1 Cache被划分为两个部分:一个部分专用于cache指令(被预译码指令),而另一个用于cache数据。L2 Cache是一个统一的数据和指令Cache。每个处理器核心有其自己的L1和L2。L3 Cache是一个包容的统一的数据和指令Cache,在一个物理包中被所有处理器共享。没有踪迹Cache被实现。

 

2、Intel®酷睿TM 2 处理器家族及Intel®至强®处理器家族,基于Intel®酷睿TM微架构——L1 Cache被划分为两个部分:一个部分专用于cache指令(被预译码的指令),而另一个用于cache数据。L2 Cache是一个统一的数据和指令Cache,位于处理器芯片上;它在一个双核处理器实现中在两个处理器核心之间共享。四核处理器有两个L2,每个L2由两个核心共享。没有踪迹Cache被实现。

 

3、Intel® 凌动TM 处理器——L1 Cache被划分为两个部分:一个部分专用于cache指令(被预译码的指令),而另一个专用于cache数据。L2是一个统一的数据和指令Cache,位于处理器芯片上。没有踪迹Cache被实现。

 

5、Pentium® 4 和 Intel® 至强® 处理器,基于Intel NetBurst® 微架构——踪迹Cache cache来自指令译码器的被译码的指令(微操作(μop)),而L1 Cache包含数据。L2和L3 Cache是位于处理器芯片上的统一的数据和指令Cache。双核处理器有两个L2,每个处理器核心中一个。注意,L3 Cache仅在某些Intel至强处理器中实现。

 

对于上述描述的处理器,L1和L2 Cache(以及L3 Cache,如果支持的话)的Cache行为64字节宽。处理器总是从起始于一个64字节边界的系统存储器读取一个Cache行。(一个64字节对齐的Cache行开始于一个地址,该地址的最低6位有效位被清0。)一个Cache行可以用一次8个块事务从存储器被填充。Cache不支持部分填充的Cache行,因此即使要cache一单个双字(译者注:32位)也需要cache一整个Cache行。

P6家族和奔腾处理器中的L1和L2Cache行是32字节宽,Cache行从32字节边界(一个存储器地址的最低5位有效位被清0)开始的系统存储器读取。一个Cache行可以从一个4次传输块事务的存储器被填充。部分填充的Cache行不被支持。

基于Intel NetBurst微架构的处理器中的踪迹Cache在所有的执行模式下都可用:保护模式、系统管理模式(SMM)、以及实地址模式。L1、L2和L3 Cache也可在所有执行模式下可用;然而对于它们的使用在SMM下必须小心处理(见26.4.2小节,“SMRAM(译者注:System Management RAM) cache”)。

TLB存储最近所使用的页目录和页表条目。它们加速存储器访问当分页被允许时,通过减少要求读取系统存储器中所存放的页表的存储器访问的次数。TLB被划分为四个组:为4KB页的指令TLB,为4KB页的数据TLB;为大页(2MB,4MB,或1GB页)的指令TLB以及为大页的数据TLB。TLB正常情况下仅在保护模式下活动,如果分页被允许。当分页被禁止或处理器在实地址模式,TLB维护它们的内容,直到显式地或隐式地被冲刷(见11.9小节)。

基于Intel酷睿架构的处理器实现一级指令TLB和两级数据TLB。Intel酷睿i7处理器提供了一个二级统一TLB。

存储缓存与处理器指令执行单元相关联。它允许对系统存储器以及/或内部Cache的写被保存,并在某些情况下被联合以优化处理器的总线访问。存储缓存在所有执行模式下被允许。

处理器的Cache是对软件最透明的部分。当被允许时,通过这些Cache的指令和数据流不需要软件显式的控制。然而,对这些Cache的行为的理解对于优化软件性能可能是有帮助的。比如,Cache维度和替换算法给出一个指示,一次可以处理多大的一个数据结构不会导致Cache受重创。

在多处理系统中,Cache一致性的维护,在很少情况下,可能需要系统软件的干预。对于这些极少的情况,处理器提供了特权的Cache控制指令用于冲刷Cache并迫使存储器按次序进行。

奔腾III、奔腾4以及Intel至强处理器引入了若干条指令,软件可以用来提升L1、L2和L3 Cache的性能,包括PREFETCHh以及CLFLUSH指令,以及非临时搬移指令(MOVNTI, MOVNTQ, MOVNTDQ, MOVNTPS, 和 MOVNTPD)。这些指令使用的讨论在11.5.5小节。

 

原创粉丝点击