软考中级软件设计师备考指南(二):计算机体系结构与指令系统

在上一篇中,我们梳理了计算机硬件基础与数据表示,本篇将深入 "计算机体系结构" 模块 ------ 这是软考的难点之一,涵盖体系分类、指令系统、流水线技术,年均考察 4-5 题,且多涉及计算与对比,需重点突破。

目录

[一、体系结构分类:从 "宏观" 到 "微观" 的划分](#一、体系结构分类:从 “宏观” 到 “微观” 的划分)

[1.1 宏观分类:按处理机数量划分](#1.1 宏观分类:按处理机数量划分)

[1.2 微观分类:Flynn 分类法(高频考点)](#1.2 微观分类:Flynn 分类法(高频考点))

[二、指令系统:软硬件交互的 "桥梁"](#二、指令系统:软硬件交互的 “桥梁”)

[2.1 指令格式:操作码 + 地址码](#2.1 指令格式:操作码 + 地址码)

[2.2 寻址方式:速度决定 "优先级"](#2.2 寻址方式:速度决定 “优先级”)

(1)核心寻址方式及速度排序

[(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 芯片用哈佛结构)。

小结:核心考点与解题技巧

  1. 必背考点:Flynn 分类法(SIMD/MIMD 实例)、寻址方式速度排序、CISC 与 RISC 对比、流水线时间计算;
  2. 解题技巧
    • 遇到 "体系分类" 题,先看处理机数量(宏观)或指令流 / 数据流(微观);
    • 遇到 "寻址速度" 题,记住 "立即最快,间接最慢";
    • 遇到 "流水线计算" 题,先找 T_max(瓶颈),再套公式;
  3. 易错点:MISD 无商用实例、RISC 指令固定长、流水线时间计算需加 "(n-1)×T_max"。

下一篇我们将讲解 "存储系统",包括 Cache、虚拟内存、磁盘结构这些与性能密切相关的考点,帮助大家攻克 "存储速度与容量" 的难题!

相关推荐
love530love19 小时前
【笔记】Intel oneAPI 开发环境配置
人工智能·windows·笔记·oneapi·onednn·deep neural
HansenPole82519 小时前
元编程笔记
笔记·网络协议·rpc
charlie11451419119 小时前
Git团队协作完全入门指南(上)
笔记·git·学习·教程·工程
迷茫的启明星19 小时前
Git命令学习
git·学习
全栈陈序员20 小时前
说说你对 Vue 的理解
前端·javascript·vue.js·学习·前端框架
im_AMBER21 小时前
Leetcode 85 【滑动窗口(不定长)】最多 K 个重复元素的最长子数组
c++·笔记·学习·算法·leetcode·哈希算法
-suiyuan-21 小时前
sqli-labs靶场3~4笔记
笔记
nwsuaf_huasir21 小时前
overleaf在线编译latex怎办编译中文
学习
wdfk_prog21 小时前
[Linux]学习笔记系列 -- [fs]filesystems
linux·笔记·学习