冯·诺依曼体系结构
文章目录
- 冯·诺依曼体系结构
- 1. 各部分介绍
- 2. 数据运算处理流程
- 3. 疑问:为什么要存储器?输入输出设备直接与CPU交互不行吗?
- 5. 解释实例:用QQ和朋友聊天时数据的流动过程
冯·诺依曼体系结构
1. 各部分介绍
我们常见的计算机,如笔记本电脑。我们不常见的计算机,如服务器,基本上都遵循冯诺依曼体系。
冯·诺依曼体系结构如图:
可以看到,结构中包含以下部分:
- 输入设备:如键盘、鼠标、摄像头、麦克风、磁盘、网卡……
- 输出设备:如显示器、播放器硬件、磁盘、网卡……
💡:输入输出设备就是我们耳熟能详的“外设”,有些硬件既可以做输入设备又可以做输出设备,如网卡和磁盘。
- 存储器:指的是内存
- 运算器:对我们的数据进行计算任务(算术运算和逻辑运算)
- 控制器:对我们的计算机硬件流程进行一定的控制
💡:运算器+控制器+寄存器统称为中央处理器,也就是CPU
注意:各个部分都是独立的个体
要使得各个硬件单元可以互相配合发挥功能,必须用“线”给它们链接起来,这个线被称作总线。
总线又分为两类:
- 系统总线:CPU与存储器之间的总线
- IO总线:输入输出设备与存储器之间的总线
2. 数据运算处理流程
输入设备得到输入的数据,会将数据缓存给存储器内存中,然后交给CPU进行运算处理,将处理好的数据返还给存储器内存,最后存储器内存将数据交给输出设备,这样我们就可以在输出设备上得到计算机处理后的数据了。
这也就是是为什么我们之前运行的所有程序都必须要先加载到内存中运行的原因。这都是冯诺依曼体系结构所规定的。
3. 疑问:为什么要存储器?输入输出设备直接与CPU交互不行吗?
存储器是冯诺依曼体系结构中必不可少的,它地位甚至高于CPU,是冯诺依曼体系结构的核心。
事实上,硬件的数据传输速率与存储容量是成反比的,容量越大,速度越慢,离CPU越远。另外,硬件离CPU越远,交互的效率也越差。
存储金字塔如图:
以磁盘与CPU直接交互为例:
磁盘是金字塔的底层,而CPU的寄存器是金字塔的顶端。
这时候有朋友会说:CPU的速度是顶级的呀,那效率中和起来应该也还可以吧?
实则不然,根据木头原理,整个体系结构所呈现的速度由最慢的硬件所决定。
因此,冯诺依曼引入了存储器,内存在金字塔的腰部,它的速度比硬盘快,又比CPU慢,速度是人们可以接受的,并且存储容量又恰到好处,能够在该体系结构当中就起到一个缓冲的作用。
这时候又有朋友会说:不是说因为木头原理,整个体系结构所呈现的速度由最慢的硬件所决定吗?那体系结构所呈现的速度不还是应该硬盘的吗?
其实内存的作用是不仅如此的,它有预装数据的能力,而这就是提高该体系结构效率的秘诀。
如此,CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。达到以内存的速度,让CPU直接拿数据的效果。
内存与输出设备的交互与输入设备同理。
【注意】
- 这⾥的存储器指的是内存
- 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
- 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。
⼀句话,所有设备都只能直接和内存打交道。
5. 解释实例:用QQ和朋友聊天时数据的流动过程
对冯诺依曼的理解,不能停留在概念上,要深⼊到对软件数据流理解上,请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。
从你打开窗⼝,开始给他发消息,到他的到消息之后的数据流动过程。如果是在qq上发送⽂件呢?
-
先明确我和我的朋友在完成这个过程计算机的输入输出设备是什么?
-
我:
- 输入设备:键盘、磁盘(由磁盘读取键盘获取的数据)
- 输出设备:网卡、显示器(我可以看到我发出去的数据)
-
朋友:
- 输入设备:网卡
- 输出设备:磁盘(数据存储在磁盘上)、显示器
-
-
数据在我的计算机流动过程
我在键盘上输入数据,被磁盘读取存储,然后被缓存到内存中被CPU进行运算处理并对数据进行封装,完成后写回到内存,此时的网卡就可以从内存获取已经处理好的数据,然后在网络中进行处理(此处忽略网络处理细节) -
数据在朋友的计算机流动过程
朋友的网卡从网络当中获取我的数据后,将数据加载到内存中,朋友的CPU再从内存中获取数据进行运算处理与解包,然后再将处理好的数据写回到内存中,最后磁盘在内存中获取数据再加载到你朋友的显示器上显示。