加载中...

本篇要回答的问题:作为信息世界地基的冯·诺依曼体系,为什么如此精简的规格能解决如此庞大的需求

上一讲鸟瞰了大厦全貌,本讲下到最底层,近距离解剖大厦的地基——冯·诺依曼体系结构。开始解剖前,先学一套通用的"解剖学"。

解剖架构的关键点是什么?

分析任何一个零部件,都问两个问题:

问题 含义 真正的难点
需求 它用来做什么?不做什么 “为什么”——为何设计成干这些,而不多干或少干一点?
规格 接口什么样?怎么和别的零件连接? 规格是"连接需求的抽象",约束一旦不满足,连接就失败

符合规格的零部件可以有很多种实现方案,但规格中任一条件不满足,它就无法与其他零件连接、达成预期目标。

为"解决一切的问题"而生

冯·诺依曼体系既是应用程序大厦的地基,也是整个信息科技的地基——它更像一个"无中生有的全新世界"。

它的迷人之处在于:需求大到极致——想解决一切可以用"计算"来解决的问题。计算的边界在哪?今天没人说得清;但人工智能热潮让我们乐观:计算终将逼近甚至超越人类智能。

冯·诺依曼体系的规格

而它的规格简到极致——只有三类零部件:

零部件 职责 要点
存储 存放计算的输入与输出 指 CPU 内置支持的存储(寄存器/内存/ROM);外置存储属于 IO 设备
输入输出设备 通过端口与 CPU 交换数据 数据格式由设备定义,CPU 不理解;驱动程序隐藏交换细节
中央处理器(CPU) 执行存储中的指令序列 加电后从固定地址开始执行

CPU 指令只有三类:计算类、I/O 类、指令跳转类

和"解决一切计算问题"这个伟大目标相比,三类零件的规格设计显得如此精简。为什么这么简洁的规格,能解决这么复杂的需求?

需求是怎么被满足的?

这一讲最精彩的是从零推导。假设我们是"电脑"的主架构师,目标是"解决一切计算问题":

  • 电脑的核心能力是"计算",计算就是 y = F(x)——对输入做变换得到输出。物理上即 func F(x []byte) (y []byte)
  • x、y 放哪? → "存储"概念自然诞生:存放计算要操作的数据。
  • F 怎么表达? 任意复杂计算 = 内置函数 + 循环/条件分支 + 子函数的组合 → 一组指令序列。所以存储不只放数据,也放"计算"本身
  • 谁来执行这些指令? → 中央处理器(CPU)。有了 CPU + 存储,就能支持任意复杂的计算。

中央处理器 + 存储

但只有头脑没有四肢五官,再聪明也无法与现实交互。交互抽象来看就是输入和输出,于是引入 IO 设备——CPU 除了纯计算,还要有"数据交换(IO)"能力。

中央处理器 + 存储 + 输入输出设备

IO 设备的深意:它和电脑完全异构,对电脑只是一个"实现了某项能力的黑盒"。黑盒内部可以是普通元器件,也可以是另一台电脑、GPU、甚至量子计算机。它从根本上解决的,是电脑无限可能的扩展能力

架构思维上我们学习到什么?

架构第一步是需求分析,关键是抓住稳定点和变化点

稳定点(核心价值) 变化点(需开放性设计)
电脑的需求 "计算"能力 ① 计算需求多样性 ② 交互方式多样性
如何落地 体现为 CPU 指令集,相对稳定 ① 通过存储中的指令序列(BIOS→操作系统)
② 通过外设与 CPU 的数据交换协议

加电后 CPU 并不按固有过程走,而是从固定地址加载指令序列(通常指向主板 ROM 上的 BIOS),再把执行权移交给外置存储上的操作系统。

核心洞见:把所有变化点从最核心部件 CPU 中剥离后,CPU 的需求变得极其稳定,可独立作为产品演进其核心价值

总结

本讲近距离解剖了信息世界的地基:冯·诺依曼体系。它的不凡在于用三类极简零件(CPU + 存储 + IO)回答了"解决一切计算问题"的宏大需求。

先把"是什么"回答清楚

概念 一句话说明
冯·诺依曼体系 CPU + 存储 + 输入输出设备
存储 既存数据,也存"计算"本身(指令序列)
IO 设备 异构黑盒,带来无限扩展能力
稳定点 / 变化点 需求分析的核心抓手

一句话速记

把变化点(指令序列、外设协议)从 CPU 剥离,核心才能稳定演进——这就是"无生有,有生万物"的架构之道。

思考题

许式伟用 Go 模拟实现了冯·诺依曼架构(github.com/qiniu/arch/tree/master/von)。如果让你给现在负责的系统找"那个 CPU"——即剥离掉所有变化点后、极其稳定的核心,它会是什么?

公告栏
这是我的个人知识库。
记录技术,也记录生活 —— 读过的、试过的、想明白的,都堆在这儿。
最新文章
网站资讯
文章数目 :
5
已运行时间 :
本站总字数 :
15.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
全局知识图谱
当前页面 已访问 文章 标签
ESC 关闭 · 滚轮缩放 · 拖拽移动 · Ctrl+G 开关