认清"二级缓存"
缓存是数据由内存通往CPU之间的桥梁,它的速度比内存要快的多,但容量也比内存小的多.同时缓存依据读写速度和容量进一步分为一级和二级.在CPU需要数据的时候,遵循一级缓存---二级缓存---内存的顺序,从而尽量提高读取速度.这样"缓存+内存"同时具备了速度和容量的优点.
AMD和Intel的二级缓存容量之间往往会有巨大的差异(比如Intel PD 930...二级缓存:2x2MB而AMD Athlon 64x2 4200+...二级缓存:2x512KB),这源于二者的设计不同.其实导致二者二级缓存之间的巨大差异的却是一级缓存,Intel对一级缓存的理解是"数据代码指令追踪缓存".即是说一级缓存中存储的其实是二级缓存中数据的地址,而不是这些数据的复制.也就是说,二级缓存的容量相当大程度上影响了Intel CPU的性能.而AMD对一级缓存的定位是"实数据读写缓存",即二级缓存中的一部分数据都要在一定的规则下搬到一级缓存中.
正是因为二者对一级缓存的理解的不同,才导致了二者二级缓存容量之间的的巨大差异.但这只是主要的原因.CPU对二级缓存容量要求还与
内存控制器,流水线长度,频率,总线架构和指令集等等诸多方面的影响.在多核CPU中还关乎各个物理内核之间的数据交换问题等等!
二级缓存的容量对性能的影响是逐渐减弱的,当二级缓存从没有增长到128KB时,性能是直线提升的,但当容量从2MB增长到4MB时,可能根本就
感觉不到性能的提升,这是因为在当前CPU所处理数据的过程中,几乎无时无刻不需要用到128KB以下的缓存,但需要用到1MB以上的缓存的时候很少(2%左右),因此虽然二级缓存越来越大,实际上对CPU性能的影响却是越来越小.因此,完全不必要盲目追求二级缓存的高容量,够用就好.
所以,不难理解为什么AMD和Intel的CPU在二级缓存之间会有如此大的差异了.正是因为这样,对于不同架构的CPU而言,二级缓存的容量绝对不是判断优劣的标准. |