冯诺依曼体系结构的组成
冯诺依曼体系结构是由
输入设备
,
存储器
,
运算器
,
控制器
,
输出设备
组成的。其中存储器就是我们所说的
内存
(不是磁盘)。运算器和控制器一起被叫做
CPU
。相对于CPU和内存,输入设备和输出设备被称为
外设
。所以冯诺依曼体系结构又可以划分为三个部分,CPU,内存和外设。
关于每个部分的设备进行一个简单的举例。
输入设备:键盘,鼠标,摄像头,麦克风等
输出设备:显示器,扬声器等
同时还有一些设备既是输入设备,又是输出设备。比如:磁盘和网卡。
结构组成的作用和特性
存储器也就是内存,具有掉电易失性。
而磁盘具有永久存储能力。
设备 | 功能 | 速度 |
---|---|---|
CPU(运算器+控制器+其他) | 负责计算(算术运算,逻辑运算) | 最快 |
内存(存储器) | 临时储存 | 较快 |
磁盘(外设) | 永久储存 | 较慢 |
CPU的速度虽然很快,但是CPU并不是一个很聪明的硬件。
CPU只能被动的接受数据和指令,通过别人给他的指令对数据进行处理,达到计算别人数据的目的。
CPU既然要接受指令那么它必须认识指令。所以CPU具有自己的指令集称为内部指令集(精简指令集,复杂指令集)。
为什么我们写的代码编译成可执行程序之后就能被CPU执行呢?
编译的本质就是将代码生成CPU可以通过指令集进行识别的二进制可执行程序,然后CPU通过指令集翻译后执行。
数据层面
数据交互层面
- CPU不会和外设直接打交道,只会和内存交互
- 所有的外设如果有数据需要载入只能载入到内存,内存写出的数据也一定是写到外设中去
这样做的
目的是为了提高整机的效率
**原因:**我们都知道一个木桶原理,就是一个木桶里面能装多少水不是取决于最长的木板而是取决于最短的木板。计算机也是类似的,CPU就像是那个最长的木板,如果在进行数据交互的时候每次CPU都和外设交互,那么CPU那么快的速度就没用了。所以在数据交互的时候要让外设中的数据在CPU需要之前载入内存,CPU需要的时候就直接去内存中拿就可以了。内存的速度是比外设快很多的,所以可以提高征整机的效率。
此时的内存就像是一个大大的缓存,现在的CPU多级缓存技术也是类似的原理。
为什么程序运行之前要先载入内存?
因为CPU要执行我们的代码,访问数据,只能访问内存。这时体系结构所规定的。
数据流动层面
举例现在你在和你的网友进行QQ聊天,你发了一条消息到网友接受到消息中间经历了那些硬件?
首先你将消息通过键盘输入,载入到内存中属于QQ的那块空间,然后通过CPU对消息进行处理(加密之类的)然后再写回内存中,内存将数据写到网卡中,通过网络发送到网友电脑的网卡,然后将接受到的数据写入内存,CPU处理后再写回内存,从内存再写到显示器上。
这就是一个完整的数据流动。
控制层面
当我们通过键盘将数据输入,内存是如何知道外设中有数据需要加载到内存中呢?且当内存中的数据要往磁盘的写的话是什么时候写的(肯定不是随时写的,太慢了)也就是缓冲区是什么时候清空的呢。
再次看文章最前面的图
这里的黑色箭头是控制信号,也就是说CPU的控制器负责了我们上面的操作。控制器又是在执行谁的指令来控制这些外设和内存呢?实际是操作系统(Operator System),操作系统是在幕后一直帮助CPU进行决策的。