Java 内存模型之计算机理论基础

318 阅读4分钟

这是我参与8月更文挑战的第 17 天,活动详情查看:8月更文挑战

计算机结构

首先我们来看第一部分计算机结构,咱们目标有两个,第一个学习计算机主要的组成部分,第二个学习缓存的作用。

我们先来对计算机结构进行一个介绍。提到计算机结构,咱们就不得不提一个人,他叫冯诺依曼,我们称它为计算机之父。他在1945 年的时候就提出计算机由五大主材部分,分别是输入设备、输出设备、存储器,还有控制器和运算器。如下图示所示:

image.png

输入设备有我们常用的鼠标、键盘、扫描仪等等。输出设备呢与我们常用的显示器,还有打印等等。存储器就是我们所说的内存条。运算器和控制器组成我们现在所说的 CPU。我们先来对 CPU 进行一个介绍,如下图所示,是一个台式机的CPU。

image.png

CPU 中文叫做中央处理器,它的作用是计算机的控制和运算,核心相当于我们人类的大脑,我们的程序最终都会变成指令,然后让 CPU 去执行,并且 CPU 在执行这个指令的过程中还会处理程序中的数据。

接着我们来看内存,内存它有什么用呢?

image.png 我们的程序都是在内存中运行的,内存会保存程序运行时的数据,这些数据会更 CPU 处理。CPU在运行的时候是不是要来内存中读取数据进行处理。

缓存。 CPU 自从产生以来,在运行速度、运行效率上面得到了巨大的发展,但是内存啊它由于制造工艺还有制造成本的控制,在访问速度上面并没有得到大的提升。因此 CPU 的运算速度和内存的读写速度那么差距越来越大。这样的话就会导致咱们 CPU 在运算的时候都要花很长的时间去等待内存的读取,也就是说内存的读写速度成了我们计算机运行的一个瓶颈。怎么来解决这个两面速度不对等的问题呢?于是人们就在 CPU 和主内存之间增加了缓存的设计。

通过下图,来看一下我们电脑的缓存。

image.png 这里面已经分成了三级缓存,其中 L1 最小、L2 二稍大、L3三更大。那么有了缓存之后,CPU的结构如下图所示。

image.png

CPU 的缓存是内置在 CPU 里面的,首先离 CPU 最近的是 L1 一级缓存,它的空间比较小,但是速度比较快,价格也比较昂贵。L二缓存空间稍大,那么速度会稍慢一些,价格也会更加便宜一些。L3 三级缓存的空间更大,但是速度比前两者要更慢,价格也更便宜一些。

当CPU有了缓存之后,这个数据是如何处理的呢?首先 CPU 运算的时候需要数据,那么它直接去一级缓存里面找,看能不能找到,如果命中了一级缓存,那么直接就从一级缓存里面读数据到 CPU 进行处理,处理完之后 CPU 就会把数据放到缓存中,并且还会换到放到内存中。如果 CPU 要数据的时候,没有命中一级缓存,那么会找二级缓存,如果二级缓存也没有数据也没有命中,那么会找三级缓存,三级缓存再没有命中,那么才会去找内存,从内存中拿过来计算之后,另外也会保存在缓存中。

小结:在计算机中重要的组成部分有这么几个,第一部分 CPU,它是我们计算机的核心,用来控制和处理的。第二部分是内存,用来保存正在运行的这些程序的数据,其他还有两个是输入和输出设备。另外我们还要知道缓存,为什么会有缓存呢?因为我们 CPU 的运算速度比内存的访问速度快很多。那么如果 CPU 直接去内存中读数据来处理,那么内存读取花的时间很多,就会拖累 CPU 的运算速度,所以在 CPU 里面增加了缓存,缓存的读写速度比内存要快很多,因此可以让 CPU 的执行效率高一点。