在上一篇中,我们梳理了计算机硬件基础与数据表示,本篇将深入 "计算机体系结构" 模块 ------ 这是软考的难点之一,涵盖体系分类、指令系统、流水线技术,年均考察 4-5 题,且多涉及计算与对比,需重点突破。
目录
[一、体系结构分类:从 "宏观" 到 "微观" 的划分](#一、体系结构分类:从 “宏观” 到 “微观” 的划分)
[1.1 宏观分类:按处理机数量划分](#1.1 宏观分类:按处理机数量划分)
[1.2 微观分类:Flynn 分类法(高频考点)](#1.2 微观分类:Flynn 分类法(高频考点))
[二、指令系统:软硬件交互的 "桥梁"](#二、指令系统:软硬件交互的 “桥梁”)
[2.1 指令格式:操作码 + 地址码](#2.1 指令格式:操作码 + 地址码)
[2.2 寻址方式:速度决定 "优先级"](#2.2 寻址方式:速度决定 “优先级”)
[(2)指令寻址 vs 操作数寻址](#(2)指令寻址 vs 操作数寻址)
[2.3 CISC 与 RISC:对比记忆 "核心差异"](#2.3 CISC 与 RISC:对比记忆 “核心差异”)
[三、流水线技术:提升 CPU 效率的 "关键"](#三、流水线技术:提升 CPU 效率的 “关键”)
[3.1 流水线基本原理](#3.1 流水线基本原理)
[3.2 流水线执行时间计算(高频计算题)](#3.2 流水线执行时间计算(高频计算题))
[3.3 流水线性能指标](#3.3 流水线性能指标)
[四、CPU 如何区分指令和数据?(易混淆点)](#四、CPU 如何区分指令和数据?(易混淆点))
一、体系结构分类:从 "宏观" 到 "微观" 的划分
软考对体系结构的考察,核心是Flynn 分类法(微观)和 "处理机数量分类"(宏观),需明确各类系统的特征及应用场景。
1.1 宏观分类:按处理机数量划分
- 单处理系统:1 个 CPU,所有任务串行执行(比如早期 PC),特点是结构简单,效率低;
- 并行 / 多处理系统:2 个以上 CPU,通过总线互连协同工作(比如服务器),核心优势是 "并行计算",提升复杂任务处理速度;
- 分布式处理系统:CPU 物理上远距离(比如云计算节点),松耦合连接,特点是 "通信时间不可忽略"(相比处理时间),适用于大规模分布式任务(如大数据分析)。
1.2 微观分类:Flynn 分类法(高频考点)
1966 年 Flynn 按 "指令流(IS)" 和 "数据流(DS)" 数量划分,共 4 类,软考常考 "每类的定义 + 实例":
| 分类 | 指令流 | 数据流 | 特点 | 实例 |
|---|---|---|---|---|
| SISD | 单 | 单 | 指令串行、数据串行,传统冯诺依曼机 | 早期 PC、单片机 |
| SIMD | 单 | 多 | 一条指令操作多个数据,并行处理 | GPU(图形渲染)、向量处理器 |
| MISD | 多 | 单 | 多条指令操作一个数据,理论存在,实际极少 | 无商用实例(软考中可理解为 "几乎不用") |
| MIMD | 多 | 多 | 多条指令操作多个数据,完全并行 | 服务器(多 CPU)、超级计算机 |
易错点:MISD 实际无商用产品,考题若问 "以下哪类很少见",答案必是 MISD;SIMD 的核心是 "单指令多数据",比如 GPU 一次处理多个像素点,就是典型 SIMD。
二、指令系统:软硬件交互的 "桥梁"
指令系统是软件(程序)与硬件(CPU)的交互界面,软考核心考 "指令格式、寻址方式、CISC 与 RISC 对比",尤其是 "寻址方式速度排序" 和 "CISC/RISC 区别"。
2.1 指令格式:操作码 + 地址码
- 操作码(OP):指定指令功能(比如加法、取数),长度固定或可变(CISC 常用可变长,RISC 常用固定长);
- 地址码(A):指定操作数的位置(比如内存地址、寄存器编号),可分为零地址、一地址、二地址指令(比如二地址指令 "ADD R1, R2",R1 和 R2 是地址码)。
2.2 寻址方式:速度决定 "优先级"
寻址方式是 "找到操作数的方法",软考常考 "速度排序" 和 "操作数位置",需记住:访问次数越少,速度越快(寄存器比内存快,内存比 "内存的内存" 快)。
(1)核心寻址方式及速度排序
速度从快到慢:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
- 立即寻址:操作数直接在指令中(比如 "ADD R1, #5",#5 是操作数),无需访存,速度最快;
- 寄存器寻址:操作数在寄存器中(比如 "ADD R1, R2"),只需访问寄存器(纳秒级),速度次之;
- 直接寻址:操作数在内存中,地址码是直接地址(比如 "ADD R1, (100H)"),需 1 次访存;
- 寄存器间接寻址:地址码是寄存器编号,寄存器中存的是操作数的内存地址(比如 "ADD R1, (R2)"),需 1 次访存(比直接寻址稍慢,多一步寄存器解析);
- 间接寻址:地址码是 "操作数地址的地址"(比如 "ADD R1, ((100H))"),需 2 次访存(先取地址,再取操作数),速度最慢。
(2)指令寻址 vs 操作数寻址
- 指令寻址:找下一条指令的地址,分 "顺序寻址"(PC 自增)和 "跳跃寻址"(JMP 指令,PC 直接设为目标地址,用于循环 / 分支);
- 操作数寻址:找操作数的地址(即上述立即、寄存器等方式)。
例题:以下寻址方式速度最快的是?(A. 直接寻址 B. 立即寻址 C. 寄存器间接寻址)答案:B(立即寻址无需访存,速度最快)。
2.3 CISC 与 RISC:对比记忆 "核心差异"
CISC(复杂指令集)和 RISC(精简指令集)是两种指令集设计思想,软考常考 "特征对比",需用表格清晰区分:
| 对比维度 | CISC(如 x86 架构) | RISC(如 ARM 架构) |
|---|---|---|
| 指令数量 | 多(几百条) | 少(几十条,只保留高频指令) |
| 指令长度 | 可变长(1-15 字节) | 固定长(如 4 字节) |
| 寻址方式 | 丰富(10 + 种) | 简单(3-5 种) |
| 控制器 | 微程序控制(软件实现) | 硬布线控制(硬件实现,速度快) |
| 通用寄存器 | 少(几个) | 多(32 个以上,减少访存) |
| 运算方式 | 支持复杂运算(如乘法指令) | 复杂运算拆为简单指令(如乘法拆为加法) |
| 流水线 | 难实现(指令长且复杂) | 易实现(指令简单,适合流水线) |
易错点:RISC 不是 "功能弱",而是 "指令精简 + 硬件优化",实际执行效率更高(比如手机 CPU 多是 ARM 架构,即 RISC);CISC 的优势是编程灵活(指令多),但硬件复杂。
三、流水线技术:提升 CPU 效率的 "关键"
流水线技术是 "将指令执行拆分为多阶段,并行处理",类似工厂流水线,是软考的计算重点,需掌握 "执行时间计算" 和 "性能指标"。
3.1 流水线基本原理
- 阶段划分:指令执行通常拆为 "取指(IF)→译码(ID)→执行(EX)→写回(WB)"4 个阶段,每个阶段由专用硬件处理;
- 核心思想:前一条指令进入下阶段时,当前阶段立即处理下一条指令(比如 IF 处理第 2 条指令时,ID 处理第 1 条指令),提升并行度。
3.2 流水线执行时间计算(高频计算题)
软考常考 "非流水线" 与 "流水线" 时间对比,需记住两个公式:
- 非流水线时间:单条指令时间 × 指令数 = T₁ × n(T₁是各阶段时间之和,比如 IF=2ns,ID=2ns,EX=1ns,WB=1ns,T₁=6ns);
- 流水线时间:第一条指令时间 + (n-1)× 最长阶段时间 = T₁ + (n-1)×T_max(T_max 是最慢阶段的时间,即 "瓶颈",比如上述 T_max=2ns)。
例题:3 段流水线(取指 2ns、分析 2ns、执行 1ns),执行 1000 条指令,总时间是多少?计算:T₁=2+2+1=5ns,T_max=2ns → 总时间 = 5 + (1000-1)×2 = 5 + 1998 = 2003ns(2021 年真题,答案为 2003ns)。
3.3 流水线性能指标
- 加速比:非流水线时间 / 流水线时间 = (T₁×n) / [T₁ + (n-1)×T_max](n 越大,加速比越接近 T₁/T_max);
- 吞吐率:单位时间完成的指令数 = 指令数 / 流水线时间(瓶颈阶段越短,吞吐率越高);
- 超标量流水线:通过增加硬件(如双取指部件、双译码部件),实现 "多条流水线并行"(比如一次处理 2 条指令),是 "空间换时间",常见于高端 CPU(如多核 CPU)。
四、CPU 如何区分指令和数据?(易混淆点)
冯诺依曼结构中,指令和数据都存在内存中(二进制 0/1),CPU 靠 "指令周期的阶段" 区分:
- 取指阶段:从内存取的是指令(地址来自 PC),存入 IR;
- 执行阶段:从内存取的是数据(地址来自地址码),存入 DR;
- 对比哈佛结构:指令和数据分开存储,无需区分,但硬件复杂(如 DSP 芯片用哈佛结构)。
小结:核心考点与解题技巧
- 必背考点:Flynn 分类法(SIMD/MIMD 实例)、寻址方式速度排序、CISC 与 RISC 对比、流水线时间计算;
- 解题技巧 :
- 遇到 "体系分类" 题,先看处理机数量(宏观)或指令流 / 数据流(微观);
- 遇到 "寻址速度" 题,记住 "立即最快,间接最慢";
- 遇到 "流水线计算" 题,先找 T_max(瓶颈),再套公式;
- 易错点:MISD 无商用实例、RISC 指令固定长、流水线时间计算需加 "(n-1)×T_max"。
下一篇我们将讲解 "存储系统",包括 Cache、虚拟内存、磁盘结构这些与性能密切相关的考点,帮助大家攻克 "存储速度与容量" 的难题!