冯.诺伊曼体系
目录
冯.诺伊曼体系结构
为什么要有存储器(内存)
运算器和控制器
实例解剖
冯.诺伊曼体系结构
我们常见的计算机,如笔记本。以及我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系结构。
冯诺依曼把计算机分为如下几个部分:
- 输入设备:键盘、话筒、摄像头、磁盘、网卡......
- 输出设备:显示器、音响、磁盘、网卡、显卡.....
- 存储器:指的就是内存
- 运算器+控制器(CPU、中央处理器)
为什么要有存储器(内存)
按照常规思路,计算机只要把数据通过输入设备交给CPU进行处理,处理完后再通过输出设备显示结果,整个过程中似乎并不牵涉内存,那为什么计算机中还要存在内存呢??
下面我们将要从两个角度分析这个问题:
一、技术角度
- 在我们的CPU中存在寄存器,寄存器就是一些存储单元,并且其运算速度是非常快的,在我们计算机中:CPU运算速度>寄存器速度>L1~L3cache>内存>外设(磁盘)>光盘磁带。因此我们知道输入输出设备的速度相较于CPU来说是非常慢的,如果我们将数据通过输入设备交给CPU处理,并且处理后通过输出设备显示结果,那么就产生了木桶效应,大大降低了计算机的性能。
- 由此我们得知决定计算机性能效率的并非是CPU,而是由输入输出这两个外设决定的,这就导致了计算机的性能效率非常的差,所以我们不能只把外设和CPU进行对接起来,为了提高计算机性能效率,我们就在输入输出设备和CPU之间添加存储器来改变这一现状:
- 从数据角度看,外设不和CPU进行直接交互,而是和内存进行交互,CPU也是如此。添加完存储器这个媒介后解决效率低下的原因如下:1、从硬件角度,存储器的存在更好的适配了外设和CPU速度不均衡的弊端。2、因为存储器的存在,让软件的存在有了更好的生存空间和价值。
⭐:内存在我们看来,就是体系结构的一个大的缓存,用于适配外设和CPU速度不均衡的问题。
二、成本角度
- CPU中含有寄存器,寄存器和内存一样具有存储数据的能力,并且寄存器的运算速度还快,那我们为什么不用CPU的寄存器来充当内存呢??这样我们就不需要存储器了。从技术层面来讲这样确实可以,但是我们并没有考虑成本,成本大小:寄存器>>内存>>磁盘(外设)。如果我们用寄存器充当内存作用,那么一台电脑的成本可能就是几十个W。而计算机要想成为大众产品,就必须满足便宜和有效的特点。因此我们使用内存是最优选,既适配了速度不均的问题,又达到了经济实惠。
⭐:使用内存可以达到用较低的成本来获取较高的性能的特点。
如何理解软件程序在运行时必须加载到内存
我们知道代码编译好后要运行,运行就必须要先加载到内存,但是为什么要先加载到内存呢?
- CPU和存储器进行交互的过程中需要不断读取数据,而这些数据必须是在内存里面,因为CPU只和内存进行打交道,对于我们编译好的.exe程序文件,文件编译好后是在磁盘这个外设上面,所以CPU会要求你把程序加载到内存,从而实现交互。而这个操作是操作系统帮你完成的,会自动加载到内存上面。
⭐:体系结构稳定,cpu只和存储器(内存)打交道,要先把数据加载到内存。
运算器和控制器
运算器:
- 计算机的计算方式有两种:算术运算(+、-、*/....)+逻辑运算(&&逻辑与、||逻辑或.....)
控制器:
- 控制器也是一个硬件,虽然外设和中央处理器在数据上并没有交互,但在其他方面还是有交互的。我们在前面得知输入设备会将数据预装到内存里面,从而和cpu进行交互,但是我们怎么知道所有数据都被预装载了呢?针对没有预装载的数据,中央处理器就会和外界进行交互协商,而这个操作就是由控制器来进行完成,从而将数据尽可能加载到内存或者把数据从内存加载到外设。
⭐:几乎所有的硬件,只有被动的完成某种功能,不能主动的完成某种功能,一般都需要配合软件进行完成。(OS+CPU)
实例解剖
当我们用QQ和我们的朋友聊天时,聊天数据是怎么流动的呢??
我们的电脑用的都是冯诺依曼体系,所以通信的本质就是从一个体系结构到另外一个体系结构,你从键盘上输入数据,随后数据预装载到内存中,CPU从内存中获取到消息后对其进行封装打包, 然后再将其写回内存,在内存中把数据刷新到外设(显示器),同样也刷新到网卡上,网卡在经过网络,此时数据就传到了你朋友的网卡上,对于你朋友来说网卡就充当输入设备,再把数据加载到内存,此时CPU进行数据的解包并交给存储器,此时再把存储器中的数据刷新到你朋友的外设即显示器上。