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小节。
- Intel系统编程指南第十一章——11.1 内部Cache、TLB和缓存
- Intel系统编程指南第十一章——存储器Cache控制
- Intel系统编程指南第十一章——11.3 可用的cache方法
- Intel系统编程指南第十一章——11.5 Cache控制
- Intel系统编程指南第十一章——11.11 存储器类型范围寄存器(MTRR)
- Intel系统编程指南第八章——8.7 Intel超线程技术架构
- 缓冲区(buffer)和缓存(cache)
- Intel系统编程指南第八章——多处理器管理
- Intel系统编程指南第八章——8.1 加锁的原子操作
- Intel系统编程指南第八章——8.2 存储器次序
- Intel系统编程指南第八章——8.3 串行化指令
- Intel系统编程指南第八章——8.4 多处理器(MP)初始化
- Intel系统编程指南第八章——8.6 探测硬件多线程支持和拓扑
- Intel系统编程指南第八章——8.8 多核架构
- Intel系统编程指南第八章——8.10 空闲和阻塞情况的管理
- Intel系统编程指南第八章——8.9 对硬件多线程性能处理器的编程考虑
- Linux——前端总线和缓存
- 【并发编程】CPU cache结构和缓存一致性(MESI协议)
- 全局变量
- 详尽分析:AV终结者采用重定向劫持技术(转)
- 解决mysql“Access denied for user 'root'@'localhost'”
- iterator与const_iterator
- 常用sql自定义函数以及存储过程
- Intel系统编程指南第十一章——11.1 内部Cache、TLB和缓存
- UVa OJ 458-The Decoder
- rtems 开关中断 函数(上)
- 程序员的十层楼
- 11 01 12 很晚
- 11 01 13 勇敢做决定
- [亲测,多图]关于电池寿命,不要用到电量0%再充电,且充电充到95%电量即可!
- java基础2--数组与方法
- JSConf 2010 (三):Raphaël、优化前端性能