冯·诺依曼结构
核心定义与设计理念
冯诺依曼结构的主要特点是:
- 计算机由存储器、运算器、控制器、输入设备、输出设备五部分组成,其中运算器和控制器合称为中央处理器(CPU)。
- 存储器是按地址访问的线性编址的一维结构,每个单元的位数固定。指令和数据不加区别混合存储在同一个存储器中。
- 控制器从存储器中取出指令并根据指令要求发出控制信号控制计算机的操作。控制器中的程序计数器指明要执行的指令所在的存储单元地址。程序计数器一般按顺序递增,但可按指令要求而改变。
- 以运算器为中心,输入输出(I/O)设备与存储器之间的数据传送都经过运算器。
各组成部分功能
- 运算器(ALU):负责执行所有的算术运算和逻辑运算。
- 控制器(CU):从存储器中取出指令,分析指令,并向系统各部件发出控制信号。它通过**程序计数器(PC)**指明下一条指令的地址。
- 存储器:按地址访问、线性编址的一维空间,用于存放指令和数据。
- 输入设备:如键盘,用于向系统输入信息。
- 输出设备:如显示器,用于输出处理结果。
随着技术的进步,冯诺依曼结构得到了持续改进,主要包括:
- 以运算器为中心改进为以存储器为中心,数据流向更加合理,从而使运算器、存储器和I/O设备能够并行工作。
- 由单一的集中控制改进为分散控制。早期的计算机工作速度低,运算器、存储器、控制器和I/O设备可以在同一个时钟信号的控制下同步工作。现在运算器、存储器与I/O设备的速度差异很大,需要异步分散控制。
- 从基于串行算法改进为适应并行算法,出现了流水线处理器、超标量处理器、向量处理器、多核处理器、对称多处理机(SMP)、大规模并行处理机(MPP)和机群系统等。
- 出现了为适应特殊需要的专用计算机,如图形处理器(GPU)、数字信号处理器(DSP)等。
计算机组成原理的逻辑演进与冯·诺依曼架构的理论基石
存储程序原理
这是该结构最核心的创新。它打破了指令与数据的物理界限,将程序指令和运算数据不加区别地混合存储在同一个物理存储器中。
指令即数据
由于指令以二进制形式存储,这种'存储程序'的概念具有深远的工程意义。通过将程序指令数字化并存入内存,计算机可以在程序控制下自动改变运算内容,无需像早期的继电器式计算机那样由用户手动调整接线或修改纸带。这一机制不仅实现了计算过程的自动化,还为后续高级语言编译器的出现奠定了硬件基础,因为程序可以像处理普通数据一样对自身的指令流进行读取、修改和跳转。
冯·诺依曼瓶颈与存储层次结构的必然性
尽管冯·诺依曼架构因其简单性和通用性统治了计算领域数十年,但其设计缺陷也随着半导体工艺的发展而日益凸显。**核心矛盾在于 CPU 的运算速度与主存储器的访问速度之间存在数量级上的差距。**由于指令获取与数据访问共享同一套总线,CPU 在执行指令的过程中,往往需要花费大量时间等待内存返回数据。这种因串行访存导致的效率损失,在学术界被定义为'冯·诺依曼瓶颈'。
简单来说,冯·诺依曼瓶颈就是指 CPU 运算太快,而内存(存储器)供货太慢,导致 CPU 经常处于'等米下锅'的闲置状态。
性能鸿沟
随着技术发展,处理器速度呈指数级增长,但内存速度提高缓慢,两者之间形成了巨大的'剪刀差'。
结果
CPU 在执行指令时,大部分时间都花在等待内存返回数据上,导致系统整体效率大幅下降。
高速缓存(Cache)
为了缓解这一矛盾,现代计算机并未从根本上抛弃冯·诺依曼架构,而是引入了复杂的存储层次结构。通过在 CPU 内部集成高速缓存(Cache),利用程序访问的局部性原理(Locality of Reference),将最常用的指令和数据预先存储在靠近核心的 SRAM 中,从而在宏观上维持了冯·诺依曼架构的编程模型,而在微观执行层面实现了准并行的效率。
这段话的核心意思其实就是:CPU 这个'大厨'做菜太快,内存这个'搬运工'送菜太慢,为了不让大厨闲着,我们在大厨手边放了个'快速小推车'(Cache)。
什么是'存储层次结构'与 Cache?
我们并没有拆掉这套旧房子,而是在大厨(CPU)和仓库(内存)之间加了几个不同档次的'临时存放点'。


