第二章 计算机系统概述:发展历程、层次结构与性能指标
计算机系统概述是计算机组成原理课程的第一块基石。本章内容看似基础,却决定了后续学习CPU、存储系统、I/O接口时的整体视野。我们需要回答三个核心问题:计算机从哪里来(发展历程)、计算机由什么构成(层次结构与软硬件关系)、计算机有多快(性能指标)。只有把这三个问题理解透彻,后续学习指令系统、流水线、Cache替换策略时,才能建立“性能导向”的思维方式,而不是孤立地记忆硬件细节。
2.1 计算机的发展历程:从电子管到智能计算
核心原理:器件迭代驱动体系结构变革
计算机的发展史本质上就是电子器件从“笨重耗电”走向“微小高效”的历史。每一代计算机的更新,不仅改变了体积和速度,更深刻影响了指令系统设计、存储层次组织、并行度开发方式。理解发展历程,不是为了背年份,而是为了建立“技术约束决定设计取舍”的思维模式。
| 代际 | 时间范围 | 主要器件 | 典型特征 | 代表机型 |
|---|---|---|---|---|
| 第一代 | 1946-1957 | 电子管 | 体积大、功耗高、速度慢(毫秒级)、使用机器语言 | ENIAC、EDVAC |
| 第二代 | 1958-1964 | 晶体管 | 体积缩小、功耗降低、速度提升(微秒级)、出现高级语言和操作系统雏形 | IBM 7090、CDC 6600 |
| 第三代 | 1965-1971 | 中小规模集成电路 | 集成度提高、价格下降、出现微程序控制、多道程序技术 | IBM System/360 |
| 第四代 | 1972-至今 | 大规模/超大规模集成电路 | 微处理器诞生、PC普及、并行处理、多核架构、移动计算 | Intel 4004→Core系列、ARM |
判断方法:如何区分不同代际计算机
判断一台计算机属于哪一代,最直接的依据是核心逻辑器件,而不是外观或品牌。例如,一台使用Intel Core i7处理器的笔记本,无论外观多轻薄,都属于第四代计算机。此外,还可以从软件生态判断:第一代无操作系统,第二代开始出现批处理系统,第三代引入多道程序设计和分时系统,第四代则伴随图形界面和网络操作系统。
案例拆解:从ENIAC到智能手机的演变逻辑
ENIAC重达30吨,占地170平方米,功耗150千瓦,每秒仅能执行5000次加法。而今天的智能手机芯片(如Apple A17 Pro)包含近200亿个晶体管,功耗仅几瓦,性能却是ENIAC的数百万倍。这一变化的根本驱动力是晶体管尺寸的持续缩小(摩尔定律)。但摩尔定律正在放缓,因此近年来计算机体系结构转向多核、异构计算(CPU+GPU+NPU)、领域专用架构(DSA),这是当前考研论述题的热点方向。
2.2 计算机的层次结构:软硬件交界面与抽象机制
核心原理:六层结构中的关键分界
计算机系统可以划分为六个层次,从下至上依次为:微程序/硬布线控制层、指令系统层(ISA)、操作系统层、汇编语言层、高级语言层、应用层。其中指令系统层(ISA)是软硬件交界面——硬件设计者负责实现ISA规定的每条指令的功能,软件设计者(编译器、操作系统)则基于ISA编写程序。ISA一旦确定,软硬件都必须遵守,因此ISA的稳定性至关重要。
操作流程:一条C语言语句的“下凡”之路
- 应用层:用户编写
int sum = a + b; - 高级语言层:编译器将C代码翻译为汇编代码(如
ADD R1, R2, R3) - 汇编语言层:汇编器将汇编代码翻译为机器指令(二进制)
- 操作系统层:操作系统分配寄存器、内存地址,管理进程上下文
- 指令系统层:CPU取指、译码、执行
ADD指令 - 微程序/硬布线层:控制单元产生微操作控制信号,驱动ALU完成加法
案例拆解:ARM与x86的生态差异
ARM和x86是当前两大主流ISA。x86采用CISC(复杂指令集),指令数量多、长度可变,硬件实现复杂;ARM采用RISC(精简指令集),指令规整、长度固定,硬件实现简单、功耗低。这正是手机芯片普遍采用ARM架构的原因——低功耗是移动设备的刚需。而PC和服务器市场,x86凭借历史生态和软件兼容性仍然占据主导。考研中常考“RISC与CISC的对比”,核心维度包括:指令格式、寻址方式、寄存器数量、控制单元设计(硬布线vs微程序)、流水线效率等。
| 对比维度 | CISC(x86) | RISC(ARM) |
|---|---|---|
| 指令格式 | 长度可变,格式复杂 | 长度固定,格式规整 |
| 寻址方式 | 种类多(10种以上) | 种类少(通常2-3种) |
| 寄存器数量 | 较少(通用寄存器约8-16个) | 较多(通常32个以上) |
| 控制单元 | 微程序控制为主 | 硬布线控制为主 |
| 指令执行 | 复杂指令需多个时钟周期 | 大多数指令单周期执行 |
| 典型应用 | PC、服务器 | 手机、嵌入式、物联网 |
2.3 硬件与软件的关系:相互依存、协同设计
核心原理:功能定势与逻辑等价
硬件和软件在逻辑功能上是等价的——任何由软件实现的功能,理论上都可以由硬件直接实现,反之亦然。例如,浮点运算既可以用硬件FPU(浮点单元)执行,也可以用软件子程序模拟。但实际设计中,需要考虑性能、成本、灵活性、功耗等多方面因素。硬件实现速度快但灵活性差、开发周期长;软件实现灵活但性能较低。这就是“软硬件协同设计”的核心思想。
判断方法:何时用硬件、何时用软件
- 性能优先:频繁执行、性能敏感的功能(如整数乘法、Cache替换)→ 硬件实现
- 灵活性优先:需求变化快、算法不稳定的功能(如协议解析、图像处理算法)→ 软件实现
- 成本约束:硬件实现需要芯片面积和功耗,软件实现只需存储空间
- 演进速度:硬件一旦流片无法修改,软件可以随时更新
案例拆解:从“硬件乘法器”到“软件乘法”
早期8位微处理器(如Intel 8080)没有硬件乘法指令,程序员只能用移位和加法循环实现乘法,速度很慢。后来硬件乘法器被集成到CPU中,一条 MUL 指令即可完成乘法。但硬件乘法器占用芯片面积和功耗,因此在低功耗嵌入式芯片中,有时仍采用软件乘法。这个案例说明:软硬件功能分配没有标准,取决于目标场景的约束条件。考研中可能以“某功能用硬件还是软件实现”为论述题,答题思路应从性能、成本、功耗、灵活性四个维度展开。
2.4 性能指标:如何科学评价计算机快慢
核心原理:CPU时间的分解公式
计算机性能最科学的度量指标是CPU执行时间,其计算公式为:
CPU时间 = 指令数 × CPI × 时钟周期时间
= 指令数 × CPI / 时钟频率
其中:指令数由ISA和编译器共同决定;CPI(Cycles Per Instruction,每条指令平均时钟周期数)由微架构和指令混合比例决定;时钟频率由硬件工艺和流水线深度决定。这三个因素相互制约,不能孤立优化。例如,提高时钟频率可能增加流水线深度,导致分支预测失败代价增大,CPI反而上升。
操作流程:性能测试的标准步骤
- 选择基准程序:使用真实负载(如SPEC CPU 2017)或核心算法(如快速排序、矩阵乘法)
- 统计指令数:使用性能计数器(Performance Counter)读取实际执行的指令总数
- 测量执行时间:使用
time命令或硬件计时器,多次运行取平均值 - 计算CPI:CPI = 时钟周期数 / 指令数 = (执行时间 × 时钟频率) / 指令数
- 对比分析:与基线系统对比,定位性能瓶颈(是指令数过多、CPI过高还是频率不足)
案例拆解:MIPS的“陷阱”
假设有两台计算机A和B,运行同一程序:
- A:时钟频率2GHz,CPI=1.5,指令数10⁹
- B:时钟频率3GHz,CPI=2.0,指令数8×10⁸
计算CPU时间:
A: CPU时间 = 10⁹ × 1.5 / (2×10⁹) = 0.75秒
B: CPU时间 = 8×10⁸ × 2.0 / (3×10⁹) = 0.533秒
B虽然CPI更高,但指令数更少且频率更高,实际更快。如果只看MIPS:
A: MIPS = 10⁹ / (0.75 × 10⁶) = 1333
B: MIPS = 8×10⁸ / (0.533 × 10⁶) = 1501
MIPS指标B更高,结论与CPU时间一致。但假设另一程序在A上指令数为5×10⁸,CPI=2.0;在B上指令数为10⁹,CPI=1.0:
A: CPU时间 = 5×10⁸ × 2.0 / (2×10⁹) = 0.5秒, MIPS = 1000
B: CPU时间 = 10⁹ × 1.0 / (3×10⁹) = 0.333秒, MIPS = 3000
MIPS仍然一致。但MIPS的真正问题在于:不同ISA的指令功能不同。RISC的一条指令可能只做一次加法,而CISC的一条指令可能完成内存读取+加法+存储。因此,MIPS不能跨ISA比较。此外,MIPS还与指令混合比例相关——浮点密集程序的MIPS通常低于整数程序,但实际性能可能更高。
加速比 = 1 / [(1 - 可优化比例) + 可优化比例 / 优化倍数],用于判断系统优化的上限。
总结复盘:性能指标的选择策略
| 场景 | 推荐指标 | 原因 |
|---|---|---|
| 单任务延迟敏感(如游戏) | 响应时间 | 用户感知直接 |
| 服务器吞吐量(如Web服务) | 吞吐率(TPS/QPS) | 关注单位时间处理请求数 |
| 嵌入式低功耗设备 | 性能功耗比(FLOPS/W) | 电池续航是硬约束 |
| 科学计算 | FLOPS(浮点运算次数/秒) | 浮点运算密集 |
| 体系结构研究 | CPU时间 + CPI分解 | 定位瓶颈、指导优化 |