关于cpu多级缓存模型及存在问题
[TOC]
1、cpu的结构
我们来看看cpu的构造:
cpu包括:寄存器、控制单元、算数逻辑单元
其中:
- 控制单元:负责控制cpu工作
- 逻辑运算单元:负责计算
- 寄存器:存储要被计算的数字,包括通用寄存器、特殊寄存器、指令寄存器
总结:cpu就是用来计算和执行指令的,cpu从内存中读取数据和指令,然后进行对应的计算。
(我们屏蔽其他细节,知道cpu的职能即可)
2、cpu多级缓存模型
我们所知道的存储材料就包括:内存、硬盘
但是事实上,为了加快计算速度,每个cpu都有对应的cpu缓存(包括L1缓存、L2缓存和L3缓存)
分级为:寄存器、L1、L2、L3、内存、硬盘 (就放在离cpu越远的位置,使用的制造材料也越便宜)
这些L1、L2、L3缓存价格相对更加昂贵,但是其执行速度要比内存快很多
3、cpu多级缓存和计算的关系
我们现在的电脑上,基本都是多核的(说人话也就是有多个cpu)
那么在进行计算时,每个cpu都会从主内存中读取数据到自己的缓存中
我们不能忘了cpu的核心就是计算和执行指令:cpu从内存中读取数据到对应的cpu缓存中,这样就能加快自己的运算速度
4、上面的cpu缓存模型有什么问题?
可以看到,当cpu1从内存中读取值,并且进行了计算,但是此时结果还在自己的缓存中,没有刷回主内存
此时,cpu2读到修改前的值,并进行修改,这样数据就不一致了
总结
通过上面的学习,我们知道:
1、cpu是用来计算和执行指令的;
2、这些指令和对应的数据存放在内存中,为了加快计算速度,cpu从内存中读取这些数据到自己的缓存中
3、因为每个cpu都有对应的缓存,当一个cpu计算后、没来得及将计算的结果刷回内存中,就很容易导致数据不一致性问题。
那么对于cpu存在的这个问题要怎么解决呢?可以想想思路,下篇文章进行揭秘 : )
最后,欢迎大家关注我的个人公众号(白话编程),一起学习、一起进步!