我们常见的计算机,像我们日常使用的笔记本、台式机;我们不常见的计算机,如服务器,大部分都遵循冯诺依曼体系结构。
在讨论冯诺依曼体系结构前,我们先来了解一下该结构涉及的5个部分:输入设备、输出设备、存储器、运算器、控制器。(下面给出了这5个组件的举例)
组件名称 | 举例 |
---|---|
输入设备 | 键盘、摄像头、话筒、磁盘、网卡… |
输出设备 | 显示器、音响、磁盘、网卡… |
存储器 | 内存… |
运算器 | 算术运算单元、逻辑运算单元… |
控制器 | 无举例(负责协调外部就绪事件,如将数据拷贝到内存等) |
下图描述的就是冯诺依曼体系结构,其中外部设备(输入、输出设备)在进行数据交互时,都是直接与存储器直接交互。而CPU从存储器直接获取数据或存储数据。在程序需要访问外部设备时,CPU才会与外部设备有间接交互。
为什么CPU不直接与外部设备直接交互呢?大家可能知道木桶效应,整个木桶的盛水量取决于最低的那块木板。在计算机体系结构中也是这样的。
CPU具有非常快的计算速度,而外部设备的速度太慢了。如果CPU直接与外部设备交互,则CPU在需要获取或输出设备时均要等待外部设备,整机效率取决于外部设备的处理速度。
如果我们让外部设备与存储器直接交互,让CPU与存储器直接交互。在CPU进行计算时,存储器可以与多个输入设备交互,当CPU需要数据时,直接从内存中获取即可;如果CPU需要写入数据,则将数据给存储器,再由存储器与输出设备交互即可。这样一来,整机的效率就取决于存储器的处理速度。大大提高了计算机的处理效率。
- CPU读取数据(数据+代码),都是从内存中读取。站在数据的角度,我们认为CPU不和外设直接交互
- CPU要处理数据,需要将外设中的数据加载到内存。站在数据的角度,外设直接只和内存打交道
【举例说明】如果在厦门,要给远在哈尔滨的朋友发送一条消息。
此时我需要使用使用键盘(外部设备)打字,键盘数据被写入存储器中;CPU从存储器中获取键盘数据,确定要怎么传输之后,将CPU处理后的数据放到存储器中;再由存储器将该数据传给网卡;我的网卡与对方的网卡交互之后,对方网卡将获取的数据写入存储器;对方存储器再将数据传给CPU,CPU对传来的数据进行解码等操作,再将解码后的数据存入存储器;由存储器负责将数据传给显示器进行显示。
★关于冯诺依曼体系结构需要强调以下几点:
- 这里的存储器指的就是内存,不考虑缓存的情况
- 这里的CPU能且只能对内存进行读写,不能访问外设(输入、输出设备)
- 外设(输入、输出设备)要输入或输出数据,只能写入内存或从内存中读取
- 在冯诺依曼体系中,所有设备只能和内存打交道(以存储器为中心)