冯诺依曼体系结构的概念
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
截至目前,我们所认识的计算机,都是由一个个的硬件组件组成
• 输入单元:包括键盘, 鼠标,扫描仪, 写板等
• 中央处理器(CPU):含有运算器和控制器等
• 输出单元:显示器,打印机等
关于冯诺依曼,必须强调几点:
• 这里的存储器指的是内存
• 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
• 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
• 一句话,所有设备都只能直接和内存打交道。
那么,冯诺依曼体系结构为什么要规定所有设备都只能直接和内存打交道呢?
我们来看下面这张图:
通过这张图我们可以了解到越快的存储的存储器就越贵,容量也越小 反之,越慢的存储器就越便宜,容量也越大
那么如何在容量和速度之间取得平衡,且价格合适呢?
在现实世界中我们都知道水桶定理:
一只水桶的盛水量取决于最短的那块木板,而非最长的木板。
因此,引入内存就显得相当重要了
内存的核心作用:桥梁与工作台:
- 向上(对CPU):接收来自Cache的数据请求,提供比外存快得多的访问速度。
- 向下(对外存):缓存从硬盘加载的程序和数据,避免CPU直接访问低速外存。
- 关键平衡点:在速度(接近CPU)和容量(足够运行大型程序)之间取得最佳权衡。
通过以上描述,我们可以得出两个结论
结论1:CPU在数据层面不和外设打交道,只会和内存打交道
外设不和CPU直接打交道,只会和内存直接打交道
结论2:内存的本质是外设和CPU的缓存——计算机的效率以内存为主
如何理解 内存的本质是外设和CPU的缓存?
一、内存的“双重缓存”身份
1. 对CPU而言:缓存外存数据
- 问题:CPU运算速度(纳秒级)远快于硬盘(毫秒级),若CPU直接读写硬盘,99%时间将空闲待。
- 解决方案:
- 内存作为外存的缓存层,预先加载CPU可能需要的程序和数据。
- CPU只与内存交互(纳秒级),由内存隐藏外存的低速(如游戏加载时数据从硬盘读入内存)。
✅ 本质:内存是外存(硬盘/SSD)面向CPU的代理缓存(Proxy Cache)。
2. 对外设而言:缓存CPU输出
- 问题:外设(如打印机、网卡)速度远慢于CPU。若CPU直接控制外设,每次发送数据都需等待外设响应。
- 解决方案:
- CPU将需输出的数据批量写入内存(如视频渲染帧存入内存缓冲区)。
- 外设通过 DMA(直接内存访问) 或 I/O控制器 从内存异步读取数据(如显卡从内存帧缓冲区取帧显示)。
✅ 本质:内存是CPU面向外设的缓冲队列(Buffer Queue)。
二 从速度金字塔看内存的缓存本质
- 内存的定位:
- 对上层(CPU/缓存):内存是低速数据源(需缓存加速访问)。
- 对下层(外设):内存是高速数据池(外设可批量读写)。
💡 关键洞察:内存是速度鸿沟(Speed Gap)之间的唯一缓冲层,承上启下平衡全系统效率。
三 总结:内存的终极意义
- 对CPU:
- 缓存外存数据 → 解决CPU与硬盘的速度鸿沟
- 对外设:
- 缓存CPU输出 → 解决CPU与外设的速度鸿沟
- 对操作系统:
- 通过内存实现数据调度中心 → 统一管理缓存策略、进程隔离、虚拟内存。
🌟 本质归纳:\ 内存是冯诺依曼架构的“交通调度枢纽”——
- CPU作为“生产商”将货物(数据)送入枢纽仓库(内存)
- 外设作为“消费者”从枢纽按需取货
- 仓库缓存货物避免生产商停工,也避免消费者堵塞生产线。\ 没有这个枢纽,计算机将退化为效率低下的手工作坊。
有了上面的结论,我们就可以解释一个问题了
可执行程序为什么必须要加载到内存?
这是冯诺依曼体系结构决定的!
- 冯诺依曼架构规定:程序指令必须存储在内存中,CPU只能从内存读取指令执行。
引入内存,使用冯诺依曼体系结构可以让用户以不怎么高的价格获得一台效率还不错的计算机,内存让计算机变得更有性价比,从而实现一个人人都能买得起计算机,人人都能使用计算机的互联网时代
冯诺依曼体系结构的数据流动
要想理解数据的流动,我们就要明白以下概念:
数据流动的本质其实就是拷贝
计算机的整体效率其实就是设备间的拷贝效率
接下来,我们从纯硬件角度来理解一下从网络中获取数据的过程
我们想要看视频,就要在计算机上打开视频软件,此时,视频软件已经加载到内存,然后网络上的图像声音等数据进入到网卡,网卡将数据交给视频软件,实际上是交给内存,内存将数据交给CPU处理,CPU处理后将数据交给内存,内存在将处理好的数据交给显示器、音箱等输出设备,此时,我们就可以看视频了
那么,你与朋友在QQ上聊天又该怎么解释呢?
首先,你和朋友都会先打开QQ,让QQ程序加载到内存中,然后你在键盘中输入“你好”,输入设备将数据传给内存,内存将数据传给CPU,CPU经过加密处理好将数据传给内存,内存再将数据传给网卡,你的计算机中网卡中的数据通过网络传给了你朋友,你朋友计算机中的网卡接收到了数据,然后将数据传给内存,内存将数据传给CPU做解密处理,处理后的数据再次传回内存,内存将数据传给显示器,由此,你的朋友就看到了你发的“你好”
通过上述叙述,我们可以得出结论
你和你朋友之间的聊天,实际上是两台冯诺依曼体系计算机之间的交互,也是两台计算机之间的数据流动
到此,冯诺依曼体系结构就讲完了,怎么样,是不是感觉大脑里面多了很多新知识。
如果觉得博主讲的还可以的话,就请大家多多支持博主,收藏加关注,追更不迷路
如果觉得博主哪里讲的不到位或是有疏漏,还请大家多多指出,博主一定会加以改正
博语小屋将持续为您推出文章