关于cpu多级缓存模型及存在问题

[TOC]

1、cpu的结构

我们来看看cpu的构造:

cpu包括:寄存器、控制单元、算数逻辑单元

cpu结构及对应功能

其中:

  • 控制单元:负责控制cpu工作
  • 逻辑运算单元:负责计算
  • 寄存器:存储要被计算的数字,包括通用寄存器、特殊寄存器、指令寄存器

总结:cpu就是用来计算和执行指令的,cpu从内存中读取数据和指令,然后进行对应的计算。

(我们屏蔽其他细节,知道cpu的职能即可)

2、cpu多级缓存模型

我们所知道的存储材料就包括:内存、硬盘

但是事实上,为了加快计算速度,每个cpu都有对应的cpu缓存(包括L1缓存、L2缓存和L3缓存)

cpu缓存结构

分级为:寄存器、L1、L2、L3、内存、硬盘 (就放在离cpu越远的位置,使用的制造材料也越便宜)

这些L1、L2、L3缓存价格相对更加昂贵,但是其执行速度要比内存快很多

3、cpu多级缓存和计算的关系

我们现在的电脑上,基本都是多核的(说人话也就是有多个cpu)

那么在进行计算时,每个cpu都会从主内存中读取数据到自己的缓存中

我们不能忘了cpu的核心就是计算和执行指令:cpu从内存中读取数据到对应的cpu缓存中,这样就能加快自己的运算速度

4、上面的cpu缓存模型有什么问题?

cpu缓存模型的问题可以看到,当cpu1从内存中读取值,并且进行了计算,但是此时结果还在自己的缓存中,没有刷回主内存

此时,cpu2读到修改前的值,并进行修改,这样数据就不一致了

总结

通过上面的学习,我们知道:

1、cpu是用来计算和执行指令的;

2、这些指令和对应的数据存放在内存中,为了加快计算速度,cpu从内存中读取这些数据到自己的缓存中

3、因为每个cpu都有对应的缓存,当一个cpu计算后、没来得及将计算的结果刷回内存中,就很容易导致数据不一致性问题。

那么对于cpu存在的这个问题要怎么解决呢?可以想想思路,下篇文章进行揭秘 : )

最后,欢迎大家关注我的个人公众号(白话编程),一起学习、一起进步!