>> >> >> Reference << << << <<<<<<Ref>>>>>>
Von Neumann Architecture
Modified: 2025-12-31 | Author:ljf12825

冯·诺依曼体系结构

这是计算机科学中最重要的基础概念之一,它被称为“存储程序计算机”的蓝图,至今仍然是几乎所有现代计算机设计的理论基础
它的核心思想是存储程序
在 Von 之前,早期的计算机(如ENIAC)是为特定任务而设计的,通过重新布线或配置开关来改变其功能,这非常繁琐且效率低下
Von 在1945年的一份报告中提出了一个革命性的思想:将程序指令和数据一起存储在计算机内存中
这意味着计算机不需要物理上的重新布线来执行新任务,只需加载不同的程序即可。这使得计算机成为了真正的通用机器

Von Neumann Architecture

组成核心

冯氏架构将计算机划分为五个核心部件,它们通过“数据/指令总线”互相连接:

  1. 运算器
  1. 控制器
  1. 存储器
  1. 输入设备
  1. 输出设备

Von Neumann Architecture Flow Chart

特点

  1. 以运算单元为中心
  1. 采用存储程序原理 这是最根本、最革命性的特点,将指令作为一种特殊的数据来处理让机器能够改变自身的行为

与“哈佛结构”的对比
哈佛结构将程序指令和数据存储在两个物理上独立的存储器中。这在现代处理器中很常见(如很多DSP、ARM芯片的一级缓存),因为它可以同时读取指令和数据,速度更快。但在宏观层面,现代计算机仍然是冯·诺依曼机器,因为它的主内存(RAM)仍然是统一存储程序和数据的

  1. 存储器是按地址访问,按线性编址的空间
  1. 控制流由指令流产生
  1. 指令由操作码和地址码组成
  1. 数据以二进制编码
  1. 顺序执行

瓶颈

核心瓶颈:以存储器为中心的单一通道
问题的本质:在经典冯氏架构中,CPU(运算器 + 控制器)和存储器之间只有一条共享的数据通道(总线)
这意味着:

  1. CPU无法同时做两件事:它不能再同一次操作中既读取指令又写入指令
  2. 指令和数据争夺通道:指令和数据都要通过同一条通道来回运输。当数据量大时,指令就得等待,反之亦然

这个单一的、共享的通道,严重限制了处理器和内存之间的数据传输速率,从而成为整个系统性能的主要制约因素。CPU的速度再快,如果无法及时从内存拿到指令和数据,也只能空转

具体表现与衍生问题

这个核心瓶颈再现代计算中具体表现为以下几个主要方面:

  1. CPU与内存的速度鸿沟 CPU的处理速度(纳秒级)远远超过内存的读写速度(百纳秒级)。CPU执行一条指令可能只需要一个时钟周期,但从内存读取数据可能需要上百个时钟周期。大部分时间CPU都处于等待数据的停滞状态。虽然用高速缓存来缓解这个问题,但缓存本身也是冯·诺依曼瓶颈的一种“补丁”,而非架构上的根本解决

  2. 访存冲突 由于指令和数据存放在同一存储器,当CPU需要同时进行取指令和取操作数时(这在流水线操作中非常常见),就会发生冲突,只能分时进行,降低了效率

  3. 有限的并行性 传统的冯氏架构本质上是串行的。它一次执行一条指令,处理一个数据流。这种“单指令流单数据流”模型难以高效地处理那些可以并行计算的任务(如图形处理、科学计算、大数据分析等)。虽然我们现在有多核处理器,但这本质上是在一个芯片上放了多个独立的“冯·诺依曼机器”,并通过复杂的缓存一致性协议让它们协作,是一种“横向扩展”,而非改变其核心工作模式

  4. 安全性问题 “存储程序”思想意味着指令和数据不加区分。这为某些安全漏洞提供了土壤。例如,如果程序存在缺陷(如缓冲区溢出),攻击者可以精心构造数据,并让程序将这些数据当作指令来执行,从而植入并运行恶意代码

现代计算机的改进

现代架构没有推翻冯·诺依曼体系,而是通过各种技术在其框架内尽力缓解这些瓶颈

  1. 存储器层次结构:引入高速缓存。在CPU和主内存之间增加多级高速、小容量的缓存,存放最常用的指令和数据,极大减少了CPU访问慢速主内存的次数
  2. 流水线技术:将指令执行过程分解为多个阶段(取指、译码、执行、访存、写回),让多条指令的不同阶段重叠执行,就像工厂的装配线,提高了吞吐率
  3. 哈佛架构及其变种:
  1. 多核与并行计算:通过集成多个处理核心,真正同时执行多个指令流,应对并行任务
  2. 预取技术:CPU预测下一步可能需要的数据,提前将其从内存加载到缓存中
  3. 更宽的总线:增加数据通道宽度,一次可以传输更多数据

哈佛架构

核心思想:独立的存储与通路
哈佛架构最根本的特点是:将程序指令和数据存储在两个物理上相互独立的存储器中,并分别为它们提供独立的数据通路和地址总线

特点

优势

  1. 更高的执行效率(解决冯·诺依曼瓶颈)
  1. 可能更小的指令尺寸
  1. 更高的可靠性/安全性

缺陷

  1. 设计更复杂,成本更高
  1. 灵活性降低

现代应用:改良的哈佛架构

纯粹的哈佛架构(两条完全独立的总线)在通用计算机中很少见,但其思想被广泛采纳和发展,形成了“改良的哈佛架构”

其特点是:

工作流程:

  1. CPU从主存(统一存储)中将指令和数据批量加载到内部的高速缓存中
  2. 在缓存级别,CPU核心可以同时、高速地访问I-Cache和D-Cache,享受哈佛架构的并行性带来的高性能
  3. 当缓存未命中时,才去访问统一的慢速主内存

这种设计完美地结合了两种架构的优点:

主要应用领域

  1. 数字信号处理器:是哈佛架构的经典应用领域。DSP处理的数据流非常庞大,需要极高的、可预测的吞吐率,同时读取指令和处理数据至关重要
  2. 微控制器:如ARM9系列、Microchip的PIC系列、Intel的8051等。这些芯片将程序固化在片内Flash(指令存储器)中,而将变量存放在片内RAM(数据存储器)中,结构简单,效率高
  3. 现代CPU的缓存设计

TODO:

DMA(Direct Memory Access)

操作系统开发,嵌入式开发,驱动开发需要学习

直接内存访问技术,能够让外设与内存直接交换数据,绕过CPU,从而提高数据传输效率和处理速度。它广泛应用于高速数据传输、音视频处理、网络设备等需要高效数据交换的场景