菜鸟笔记
提升您的技术认知

cpu多级缓存-ag真人游戏

cpu多级缓存

主内存(ram):也就是所谓的内存条,一般当数据写入电脑磁盘的时候需要先写入主内存,然后再写入磁盘。

系统主线:连接系统cpu和主内存的系统主线,就比如台式电脑连接主板上连接cpu和内存条的主线。

如下图所示最简单的高速缓存的配置,数据的读取和存储都经过高速缓存,cpu核心与高速缓存有一条特殊的快速通道;主存和高速缓存都连在系统总线上,这条总线还用于其他组件的通信。

高速缓存出现不久,系统变得越来越复杂,高速缓存与主存之间的速度差异被拉大,直到加入了另一级缓存,新加入的这级缓存比第一缓存更大,而且更慢,而且经济上不合适,所以有了二级缓存,甚至是三级缓存。

一、为什么需要cpu多级缓存

再计算机最开始的时候,cpu直接于主内存交换数据,不知道读者对摩尔定律有没有印象:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍,由于cpu性能日新月异的增长,远高于主内存读写,而需要等待主内存,这样发挥不了多核cpu高性能的优势,于是便增加了cpu多级缓存,在现在电脑的任务管理器也是看的到的:

二、cpu缓存的意义:

1)时间局部性:如果某个数据被访问,那么在不久的将来它很有可能会被再次访问。

2)空间局部性:如果某个数据被访问,那么与它相邻的数据很快也能被访问。

缓存一致性(mesi)协议

为了保证多核cpu各个缓存的数据的一致性。

cpu中每个缓存行使用四种状态进行标记。

m:modified 修改:指的是该缓存行只被缓存在该cpu缓存中,并且是被修改过的,因此他与主存的数据是不一致的,该缓存行中的数据需要在未来的某个时间点(允许其他cpu读取主存相应的内容之前)写回主存,然后状态变成e(独享)。

e :exclusive 独享:缓存行只被缓存在该cpu的缓存中,是未被修改过的,与主存的数据是一致的,可以在任何时刻当有其他cpu读取该内存时,变成s(共享)状态,当cpu修改缓存行的内容时,变成m(修改)的状态。

s :share 共享:意味着该缓存行可能被多个cpu进行缓存,并且该缓存中的数据与主存数据是一致的,当有一个cpu修改该缓存行时,其他cpu是可以被作废的,变成i(无效的)。

i :invalid 无效的:代表这个缓存是无效的,可能是有其他cpu修改了该缓存行。

对应的四个操作
local read:读本地缓存
local write:写本地缓存
remote read:将内存中的数据读取过来
remote write:将数据写回主存

注意:
对于m和e状态而言总是精确的,他们在和该缓存行的真正状态是一致的,而s状态可能是非一致的。如果一个缓存将处于s状态的缓存行作废了,而另一个缓存实际上可能已经独享了该缓存行,但是该缓存却不会将该缓存行升迁为e状态,这是因为其它缓存不会广播他们作废掉该缓存行的通知,同样由于缓存并没有保存该缓存行的copy的数量,因此(即使有这种通知)也没有办法确定自己是否已经独享了该缓存行。

从上面的意义看来e状态是一种投机性的优化:如果一个cpu想修改一个处于s状态的缓存行,总线事务需要将所有该缓存行的copy变成invalid状态,而修改e状态的缓存不需要使用总线事务。

网站地图