CPU缓存


关系链:

CPU -> CPU寄存器 -> CPU缓存 -> 内存

如下图:

CPU缓存_第1张图片


维基百科:
在计算机系统中,CPU高速缓存(英语:CPU Cache,在本文中简称缓存)是用于减少处理器访问内存所需平均时间的部件。在金字塔式存储体系中它位于自顶向下的第二层,仅次于CPU寄存器。其容量远小于内存,但速度却可以接近处理器的频率。

当处理器发出内存访问请求时,会先查看缓存内是否有请求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失效),则要先把内存中的相应数据载入缓存,再将其返回处理器。

缓存之所以有效,主要是因为程序运行时对内存的访问呈现局部性(Locality)特征。这种局部性既包括空间局部性(Spatial Locality),也包括时间局部性(Temporal Locality)。有效利用这种局部性,缓存可以达到极高的命中率。

在处理器看来,缓存是一个透明部件。因此,程序员通常无法直接干预对缓存的操作。但是,确实可以根据缓存的特点对程序代码实施特定优化,从而更好地利用缓存。


CPU的多级缓存:

介于处理器和内存二者之间的缓存有两个天然冲突的性能指标:速度和容积。如果只向处理器看齐而追求速度,则必然要靠减少容积来换取访问时间;如果只向内存看齐而追求容积,则必然以增加处理器的访问时间为牺牲。这种矛盾促使人们考虑使用多级缓存。

级别 大小 相联度 命中时间
L1 64KB 双路 3周期
L2 512KB 16路 +9周期
L3 2MB 32路 ~+38周期

在一个两级缓存体系中,一级缓存靠近处理器一侧,二级缓存靠近内存一侧。当一级缓存发生失效时,它向二级缓存发出请求。如果请求在二级缓存上命中,则数据交还给一级缓存;如失效,二级缓存进一步向内存发出请求。对于三级缓存可依此类推。

通常,更接近内存的缓存有着更大容积,但是速度也更慢。以AMD Opteron X4处理器为例,见右表比较。

值得注意的是,无论如何,低级缓存的局部命中率总是低于高级缓存。这是因为数据的时空局部性在一级缓存上基本上已经利用殆尽。


在日常编程的关联点:

1.进程绑定CPU

2.Nginx绑定CPU



原文出自:http://blog.csdn.net/daiyudong2020/article/details/53316994


End;


你可能感兴趣的:(linux)