
误区2: 处理器缓存是一个整体

[图]生产技术对缓存大小的影响


[图片]奔腾III处理器在PCB上具有缓存
实际上,最早的CPU缓存确实是一个整体,其容量也非常低. 自奔腾时始以来,英特尔就对缓存进行了分类. 那时,集成在CPU内核中的缓存不足以满足CPU的需求,并且制造工艺上的限制不能大大增加缓存容量. 因此,在与CPU或主板相同的电路板上集成了一个缓存. 此时,与CPU内核集成的高速缓存称为第一级高速缓存,而外部的高速缓存称为第二级高速缓存;后来随着生产技术的不断改进,最终将二级缓存移到了处理器中. 通常,第一级缓存分为数据缓存(数据缓存,D缓存)和指令缓存(指令缓存,I缓存). 两者分别用于存储数据和执行这些数据的指令,并且两者都可以由CPU同时访问,从而减少了由争用缓存引起的冲突,并提高了处理器性能. 英特尔推出奔腾4处理器时,还添加了一个12KB的一级跟踪缓存.

误区三: L1缓存和L2缓存的容量不同
用于存储数据的缓存部分通常称为RAM,其中的信息在断电后会消失. RAM有两种类型,一种是静态RAM(SRAM);另一种是RAM. 另一个是动态RAM(DRAM). 前者的存储速度比后者快得多. 我们现在使用的内存通常是动态RAM. 处理器的L1级缓存通常是静态RAM,速度非常快,但是静态RAM的集成度很低(存储相同的数据,静态RAM的容量是动态RAM的6倍),价格相对较高价格昂贵(相同容量的静态RAM是动态RAM的四倍). 扩展静态RAM作为缓存不是很划算,但是为了提高系统的性能和速度,必须扩展缓存. 这是一种折衷方法: 在不扩展原始静态RAM缓存容量的情况下,只需添加一些高速动态RAM作为L2缓存即可. 高速动态RAM比常规动态RAM快,但比原始静态RAM缓存慢,并且成本适中. 一级缓存和二级缓存的内容是内存中频繁访问的数据的副本(映射),它们的存在是为了减少高速CPU对慢速存储器的访问.
二级缓存是CPU性能的关键之一. 当CPU内核不变时,增加二级缓存容量可以大大提高性能. 同一核心CPU的高端和低端之间的差异通常也在二级缓存中,这表明了二级缓存对CPU的重要性. CPU在缓存中找到有用的数据称为命中. 当高速缓存中CPU不需要数据时(此时称为未命中),CPU将访问内存. 理论上,在具有二级缓存的CPU中,读取一级缓存的命中率为80%. 也就是说,在CPU一级缓存中找到的有用数据占总数据的80%,其余20%从二级缓存中读取. 由于无法准确预测要执行的数据,因此读取二级缓存的命中率也大约为80%(从二级缓存读取有用数据占总数据的16%). 然后必须从内存中调用剩余的数据,但这已经是很小的百分比. 当前的高端CPU也将具有第三级缓存. 它设计用于读取二级缓存(缓存)之后丢失的数据. 在具有三级高速缓存的CPU中,仅需要大约5%的数据从内存中调用,这进一步提高了CPU的效率. 从某种意义上说,预取效率的提高大大降低了生产成本,但性能却非常接近理想状态. 除非有一天生产技术变得非常强大,否则内存将仍然存在,并且缓存的增量性能特征将保持不变.

误解四: 缓存只是随意获取数据,别无选择
即使处理器内部集成的高速缓存数据交换功能非常强大,仍然有必要筛选检索到的数据. 这是因为随着时间的变化,最常访问的数据不是静态的. 换句话说,刚刚不经常访问的数据需要经常访问. 刚才最常访问的数据不是静态的. 因此,经常应根据某种算法替换缓存中的数据,以确保经常最频繁地访问缓存中的数据. 命中率算法中最常用的“最近最少使用的算法”(LRU算法)是消除在最近一段时间内访问最少的行. 因此,有必要为每一行设置一个计数器. LRU算法清除命中行的计数器,并将1添加到其他行的计数器. 需要更换时,将消除具有最大行计数器计数的数据行. 这是一种高效而科学的算法. 它的计数器清除过程可以消除频繁访问缓存后不再需要的一些数据,并提高缓存的利用率.


[图片]具有144MB高速缓存的八路IBM POWER5处理器
摘要:
作为处理器不可或缺的一部分的缓存已被纳入性能改进的考虑之中. 随着生产技术的进一步发展,缓存级别的数量将增加,容量将进一步提高. 作为处理器性能的提高,高速缓存在成本和功耗控制方面仍将发挥巨大优势,并且性能将有很大的提高. 毫不夸张地说: 缓存技术使处理器变成了一个丰富多彩的天堂.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-303353-1.html
严重警告