Appearance
计算机系统层次结构
考情分析
本章是组成原理的总纲,选择题常考冯·诺依曼机的特点、各类翻译程序的区别、ISA 的概念。2019 年考了冯·诺依曼机特点,2022 年考了源程序到可执行文件的四阶段,2024 年考了编程语言的分类。
冯·诺依曼体系结构
冯·诺依曼在研究 EDVAC 机时提出"存储程序"思想,奠定了现代计算机的基本结构。
冯·诺依曼机的核心特点:
- 存储程序工作方式:程序和数据预先存入主存,计算机启动后自动逐条取指并执行,无须人工干预
- 硬件由运算器、控制器、存储器、输入设备、输出设备五大部件组成
- 指令和数据以相同形式(二进制)存放在存储器中,仅凭内容无法区分
- 指令由操作码(指明操作类型)和地址码(指出操作数地址)组成
计算机硬件的基本组成
现代计算机将运算器、控制器集成为 CPU(中央处理器)。完整硬件系统包括:
| 部件 | 功能 |
|---|---|
| CPU | 数据通路(ALU + 寄存器组)负责运算;控制单元负责取指译码、生成控制信号 |
| 存储器 | 主存(DRAM)存放当前程序和数据;外存(磁盘/SSD)长期保存 |
| I/O 设备 | 输入设备(键盘、鼠标)和输出设备(显示器、打印机) |
| I/O 接口 | 设备控制器,负责外设与主机之间的通信 |
| 总线 | CPU、主存、I/O 接口之间传输信息的公共通路 |
计算机软件
系统软件 vs 应用软件
| 类别 | 定义 | 举例 |
|---|---|---|
| 系统软件 | 管理系统资源、提供基础服务的软件 | 操作系统、编译器、DBMS |
| 应用软件 | 用户为解决特定问题开发的程序 | Office、浏览器、游戏 |
软硬件逻辑功能等价性
同一功能既可用硬件实现,也可用软件实现,从用户视角看逻辑功能等价。例如浮点运算既可由硬件浮点单元完成,也可由软件子程序模拟,但硬件实现效率远高于软件。
如何划分软硬件的功能边界,是计算机体系结构研究的核心问题之一。
计算机系统的层次结构
应用程序(最终用户)
↓
高级语言(应用程序员)
↓
操作系统(系统管理员)
↓
ISA — 指令集体系结构(系统程序员)
↓
微体系结构(微架构)
↓
物理器件(晶体管、电路)每一层向上提供简洁接口,向下依赖更底层的功能。下层的实现细节对上层用户透明。
ISA(指令集体系结构)
ISA 是软硬件之间的关键接口,定义了软件可直接使用的硬件功能:
- 指令格式、操作类型、寻址方式
- 可访问的寄存器等硬件资源
ISA 定义"做什么",微体系结构(微架构)决定"怎么做"。相同的 ISA 可以有多种不同的微架构实现——如 Intel 的 Skylake 和 Alder Lake 都遵循 x86 ISA,但内部组织方式不同。
编程语言与翻译程序
三种编程语言
| 语言层次 | 特点 | 硬件能否直接执行 |
|---|---|---|
| 机器语言 | 0/1 二进制编码,与硬件直接对应 | 能 |
| 汇编语言 | 用助记符(mov, add)代替二进制指令 | 不能,需汇编器翻译 |
| 高级语言 | C/Java 等,接近自然语言 | 不能,需编译器/解释器翻译 |
三种翻译程序
| 翻译程序 | 输入 | 输出 | 特点 |
|---|---|---|---|
| 汇编程序(汇编器) | 汇编语言 | 机器语言 | 一对一翻译 |
| 编译程序(编译器) | 高级语言 | 汇编/机器语言 | 一次性翻译全部,生成目标程序 |
| 解释程序(解释器) | 高级语言 | — | 逐条翻译并立即执行,不生成目标程序 |
存储程序工作方式
程序执行前,将指令和数据预先加载到主存。启动后,CPU 按以下流程自动执行:
PC(程序计数器)的更新规则:
- 顺序指令:
- 跳转指令:
从源程序到可执行文件
以 C 语言为例,GCC 编译器经过四个阶段生成可执行文件:
hello.c → [预处理器cpp] → hello.i → [编译器cc1] → hello.s → [汇编器as] → hello.o → [链接器ld] → hello| 阶段 | 工具 | 输入 → 输出 | 功能 |
|---|---|---|---|
| 预处理 | cpp | .c → .i | 处理 #include、#define 等预处理指令 |
| 编译 | cc1 | .i → .s | 翻译为汇编语言 |
| 汇编 | as | .s → .o | 翻译为机器语言,生成可重定位目标文件 |
| 链接 | ld | .o → 可执行文件 | 解析外部符号引用,链接库函数,生成可执行文件 |
考点清单
- 冯·诺依曼机五大特点:存储程序、五大部件、指令和数据同形式存放、二进制编码、指令 = 操作码 + 地址码
- 硬件能直接执行的只有机器语言
- 编译器一次翻译全部生成目标程序;解释器逐条翻译不生成目标程序
- ISA 是软硬件接口;微架构是 ISA 的硬件实现方式
- 源程序到可执行文件:预处理 → 编译 → 汇编 → 链接
- 下层实现对上层用户"透明"