计算机系统
- 计算机**本质上在做什么**?
- 软件与硬件**如何通过稳定契约协作**?
- 性能、结构与复杂度**为何必然如此演进**?
一、第一性原理:计算机系统的本质
1.1 计算机是什么?
计算机是一台可被程序控制的状态机。
- **状态**:存储器中全部可寻址的二进制信息
- **转移规则**:指令所描述的确定性操作
- **控制方式**:程序按顺序或条件改变状态
从第一性原理看,所有复杂系统行为,最终都可还原为:状态读取 → 状态计算 → 状态写回。
1.2 程序的本质
程序不是“软件文件”,而是:
对系统状态转移规则的编码描述
因此:
- 程序 = 指令(控制) + 数据(操作对象)
- 执行 = 按地址取指 → 译码 → 执行 → 写回
这一定义在 70 年内从未改变。
二、冯诺依曼模型:稳定不变的系统原型
2.1 冯诺依曼模型解决了什么问题?
核心思想:存储程序(Stored Program)
- 程序与数据统一存储
- 指令可以被当作数据处理
- 控制逻辑不再“写死在硬件中”
这是软件能够存在的根本原因。
2.2 冯诺依曼模型的抽象结构
从抽象而非器件角度,可归纳为五个功能单元:
| 功能 | 本质角色 |
|---|---|
| 运算器 | 状态变换 |
| 控制器 | 状态转移调度 |
| 存储器 | 状态载体 |
| 输入 | 状态注入 |
| 输出 | 状态外显 |
所有现代计算机,无一例外仍然服从该模型。
三、哈佛结构与冯诺依曼结构:冲突与权衡
3.1 冯诺依曼瓶颈的本质
指令流与数据流争用同一存储与总线资源
这是一个物理资源冲突问题,而非思想缺陷。
3.2 哈佛结构的解法
- 指令存储与数据存储物理分离
- 提高并行访问能力
但代价是:
- 系统复杂度上升
- 灵活性下降
3.3 现代系统的真实形态
现代 CPU 是“逻辑冯诺依曼 + 物理哈佛”的折中体
- ISA 视角:统一地址空间
- 微架构视角:多级 Cache 分离
这是工程理性而非理论变更。
四、抽象边界:计算机系统的三层稳定契约
4.1 软件与硬件的契约:ISA
指令集架构(ISA)是最重要的稳定边界。
- 上层:编译器、操作系统、程序
- 下层:任意实现方式的硬件
ISA 定义了“能做什么”,而非“如何做”。
4.2 体系结构 vs 组成原理
| 层次 | 回答的问题 |
|---|---|
| 体系结构 | 系统对外暴露什么能力? |
| 组成原理 | 这些能力如何被实现? |
这是 What / How 的根本分离。
4.3 系统软件的真实角色
系统软件不是“工具集合”,而是:
对硬件能力的抽象、隔离与调度系统
- 操作系统:资源虚拟化与仲裁
- 编译器:语义到指令的映射
- 网络系统:状态的跨节点扩展
五、性能的第一性原理模型
5.1 唯一重要的性能公式
CPU 时间 = 指令数 × CPI × 时钟周期这是所有性能分析的起点。
5.2 性能因素的责任归属
| 因素 | 决定层 |
|---|---|
| 指令数 | 算法 + 编译器 |
| CPI | 微架构 |
| 时钟周期 | 工艺 + 架构 |
没有跨层"银弹"。
5.3 为什么主频不等于性能?
- 主频只影响"时钟周期"
- CPI 与指令数可能急剧上升
这正是复杂架构存在的原因。
六、从静态模型到系统演进
6.1 多核的本质
- 多个状态机并行执行
- 一致性问题不可避免
并行不是免费午餐。
6.2 存储层级的必然性
- 物理速度差异 → 层级结构
- Cache 是时间换空间的工程解法
存储墙是物理现实,而非设计失败。
6.3 操作系统的系统意义
操作系统不是"软件",而是系统秩序的实现者。
- 控制权分配
- 资源抽象
- 故障隔离
关联内容(自动生成)
- [/计算机系统/程序结构和执行/处理器体系架构.html](/计算机系统/程序结构和执行/处理器体系架构.html) 深入讲解了CPU的内部结构、指令执行过程、流水线技术、超标量设计等,与本文档中冯诺依曼模型、性能分析等内容密切相关
- [/计算机系统/程序结构和执行/存储器层次结构.html](/计算机系统/程序结构和执行/存储器层次结构.html) 详细介绍了存储器层次结构的设计原理,包括缓存、主存、磁盘等,与本文档中存储层级的必然性、性能分析等内容相关
- [/计算机系统/数字逻辑电路.html](/计算机系统/数字逻辑电路.html) 介绍了数字逻辑电路的基本概念,包括逻辑门、组合逻辑、时序逻辑等,是理解计算机硬件实现的基础,与本文档中计算机本质、冯诺依曼模型等内容相关
- [/操作系统/操作系统.html](/操作系统/操作系统.html) 介绍了操作系统的基本概念、核心模型、能力体系等,与本文档中操作系统作为系统秩序实现者的观点相关
- [/计算机系统/程序结构和执行/优化程序性能.html](/计算机系统/程序结构和执行/优化程序性能.html) 从计算模型、编译器模型、处理器模型三个角度分析程序性能优化,与本文档中性能的第一性原理模型相关
- [/计算机系统/程序结构和执行/指令系统.html](/计算机系统/程序结构和执行/指令系统.html) 介绍指令系统的基本概念,包括指令格式、寻址方式、指令类型等,与本文档中ISA作为软硬件契约的内容相关
- [/计算机系统/程序结构和执行/总线.html](/计算机系统/程序结构和执行/总线.html) 介绍总线的基本概念、分类、控制方式等,是连接计算机各部件的重要组成部分,与冯诺依曼模型中的连接部分相关
- [/计算机系统/程序结构和执行/运算方法与运算器.html](/计算机系统/程序结构和执行/运算方法与运算器.html) 介绍运算方法和运算器的设计原理,与本文档中运算器作为状态变换功能单元的内容相关
- [/计算机系统/在系统上运行程序/异常控制流.html](/计算机系统/在系统上运行程序/异常控制流.html) 介绍异常控制流的概念和实现机制,与本文档中程序执行和状态转移相关
- [/计算机系统/在系统上运行程序/链接.html](/计算机系统/在系统上运行程序/链接.html) 介绍链接的基本概念和实现机制,是程序从源码到可执行文件的重要环节,与本文档中程序的本质相关