【软考系统架构设计师全链路通关实战】第 03 篇:计算机系统基础:CPU、存储体系与校验码
本系列定位:以软考系统架构设计师(高级)考试为主线,语言无关的架构方法论视角,覆盖官方教程(第二版)全部 20 章考点,按「综合知识 → 案例分析 → 论文」三科组织,每篇含考点精讲 + 真题规律 + 应试技巧 + Mermaid 图解。
本篇你将学到
- 计算机系统的组成结构:运算器、控制器、存储器、输入/输出设备与总线体系
- 多级存储体系的层次逻辑:Cache—主存—辅存的速度/容量/价格三角
- RAID 各级别的原理、可靠性与性能对比及计算题解法
- 海明码与循环冗余校验码(CRC)的手工计算方法——综合知识计算题的稳定得分点
- 性能评价指标(主频、CPI、MIPS、MTBF)的含义与计算
学完本篇,你将拿下综合知识中计算机组成原理部分的全部常规考点的 90% 以上。
考点热力表
| 考点 | 综合知识 | 案例分析 | 论文 |
|---|---|---|---|
| 校验码(海明/CRC)计算 | ★★★ 几乎每次必考 1~2 题 | ☆ | ☆ |
| Cache 命中率与平均访问时间 | ★★ 高频计算 | ☆ | ☆ |
| RAID 级别特性 | ★★ 高频概念题 | ★ 偶现于可靠性计算 | ☆ |
| 指令流水线计算 | ★★ 常考 | ☆ | ☆ |
| 性能指标(CPI/MIPS) | ★★ 常考 | ☆ | ☆ |
一、计算机系统组成:冯·诺依曼结构与五大部件
现代计算机的基础是冯·诺依曼体系结构,其核心思想有两条:存储程序(程序和数据都以二进制形式存放在存储器中)和程序控制(控制器按地址顺序取出指令并执行)。
计算机硬件系统由五大部件组成:
真题角度需要重点区分的两个部件:
- 运算器:完成算术运算和逻辑运算,包含累加寄存器(ACC)、数据缓冲寄存器(DR)、状态条件寄存器(PSW)等。
- 控制器:指挥中心,包含程序计数器(PC,存放下一条指令地址)、指令寄存器(IR,存放当前正在执行的指令)、指令译码器(ID)、地址寄存器(AR)。
选择题惯用的干扰项手法就是「张冠李戴」——把 PC 说成运算器的部件、把 ACC 说成控制器的部件。记住一句口诀:算逻运算归运算器,寻址取指归控制器;PC 存地址、IR 存指令。
指令的执行过程是取指 → 译码 → 执行 → 访存 → 写回,这个串行过程引出了指令流水线技术:把一条指令的执行分成多个阶段,让不同指令的不同阶段在时间上重叠并行。
指令流水线计算公式(必考):
- 流水线周期 = 各阶段中最长的阶段耗时
- n 条指令流水线总时间 = (阶段数 + n − 1)× 流水线周期
- 流水线吞吐率 = n ÷ 总时间;最大吞吐率 = 1 ÷ 流水线周期
例:指令分取指 2ns、译码 1ns、执行 3ns 三阶段,执行 10 条指令。流水线周期 = 3ns,总时间 = (3 + 10 − 1) × 3 = 36ns。若不流水,串行需 10 × 6 = 60ns。
二、多级存储体系:速度、容量与价格的三角权衡
没有任何一种存储器能同时做到速度最快、容量最大、价格最便宜,于是计算机采用层次化存储结构,用「局部性原理」串起两级之间的桥梁:
金字塔从上到下:速度递减、容量递增、单位价格递减。这个金字塔本身是选择题考点,更深层的是它背后的设计哲学——架构设计本质上是在约束条件下做权衡(trade-off),这个思想会在第 30 篇质量属性、第 33 篇 ATAM 评估中反复出现。存储体系是你在进入架构方法论之前遇到的第一个「权衡」案例。
2.1 Cache:局部性原理的产物
Cache 位于 CPU 与主存之间,利用程序的时间局部性(刚被访问的数据很可能再次被访问)和空间局部性(刚被访问的数据附近的数据很可能被访问),把主存中常用的块调入 Cache。
映射方式有三种(概念题考点):
| 映射方式 | 主存块对应 Cache 行 | 特点 |
|---|---|---|
| 直接映射 | 只能对应唯一一行 | 硬件简单、冲突率高 |
| 全相联映射 | 可对应任意一行 | 冲突率低、硬件成本高 |
| 组相联映射 | 可对应某组内任意行 | 折中方案,实际最常用 |
2.2 Cache 命中率计算(高频计算题)
设命中率为 h,Cache 访问时间 tc,主存访问时间 tm:
- 平均访问时间 = h × tc + (1 − h) × tm(不考虑 Cache 并行查找的简化式)
例:Cache 访问 10ns,主存访问 100ns,命中率 95%,平均访问时间 = 0.95 × 10 + 0.05 × 100 = 9.5 + 5 = 14.5ns。
陷阱提示:如果题目给出的是「先访问 Cache,未命中再访问主存」的串行模型,则未命中时间 = tc + tm,公式变为 h × tc + (1 − h) × (tc + tm)。审题时看清题目假设的是哪种模型,这是这题最常见的失分点。
2.3 虚拟存储器与磁盘
虚拟存储器让程序使用比物理内存大得多的地址空间,由 MMU 通过页表完成虚拟地址到物理地址的转换,页面缺失时由操作系统从磁盘调入。这一段的重点在第 04 篇操作系统篇展开(页面置换算法)。
磁盘部分近年考频下降,但基本参数要认识:寻道时间、旋转延迟、传输时间,数据传输率 = 每道字节数 × 转速。存取时间 = 寻道时间 + 旋转延迟 + 传输时间。
三、RAID:用冗余换可靠性的经典设计
独立磁盘冗余阵列(RAID)把多个磁盘组合成逻辑上的一个磁盘,是「用冗余换可靠性」思想的教科书案例。考试主要考各级别的原理与特性对比:
| 级别 | 名称 | 冗余方式 | 最少磁盘数 | 容量利用率 | 可靠性 | 允许故障盘数 |
|---|---|---|---|---|---|---|
| RAID 0 | 条带化 | 无冗余 | 2 | 100% | 低于单盘 | 0 |
| RAID 1 | 镜像 | 完全镜像 | 2 | 50% | 最高 | 1(每组) |
| RAID 5 | 分布式奇偶校验 | 校验信息分布各盘 | 3 | (n−1)/n | 较高 | 1 |
| RAID 6 | 双重分布式校验 | 两个独立校验 | 4 | (n−2)/n | 更高 | 2 |
| RAID 10 | 先镜像后条带 | 镜像+条带组合 | 4 | 50% | 高 | 每镜像组可坏 1 盘 |
三个高频考点:
- RAID 0 无冗余:只提升性能和容量,任何一块盘损坏全阵列数据丢失。选择题常把它和「RAID 0 可靠性最高」这类错误表述混搭。
- RAID 5 的奇偶校验分布在所有盘上:不像 RAID 4 集中在专用校验盘,因此避免了校验盘的写瓶颈。利用率公式 (n−1)/n 是计算题常客。
- RAID 10 与 RAID 01 的区别:RAID 10 是先镜像再条带(1+0),RAID 01 是先条带再镜像(0+1),RAID 10 可靠性高于 RAID 01。这个区分在案例分析的可靠性计算中出现过。
RAID 各级别与第 36 篇的冗余技术、第 35 篇的串并联可靠性计算直接呼应,此处建立概念,后面完成计算闭环。
四、校验码:海明码与 CRC 的手工计算
校验码是综合知识「逢考必有」的计算题,原理是通过增加冗余位让系统具备检错(乃至纠错)能力。三个基本概念先行:
- 码距(海明距离):两个码字之间对应的二进制位不同的个数。检错 d 位需要码距 ≥ d+1;纠错 d 位需要码距 ≥ 2d+1。
- 奇偶校验:增加 1 位使整个码字中 1 的个数为奇/偶数,只能检 1 位错,不能纠错,码距为 2。
- 海明不等式:纠 1 位错时,校验位位数 k 与信息位位数 n 满足2^k ≥ n + k + 1。
4.1 海明码:定位并纠正单比特错误
海明码的本质是把校验位放在 2 的幂次位置(1、2、4、8……),每个校验位负责校验特定的一组位(按位置的二进制编码分组),出错时由各校验位的校验结果组合直接定位错误位。
计算步骤(考试标准流程):
- 信息位 n 位,由 2^k ≥ n+k+1 求校验位 k。如 n=4:2^3=8 ≥ 4+3+1,k=3,码长 7。
- 校验位放第 1、2、4 位,信息位按序填入其余位。
- 每个校验位校验「位置的二进制表示中含该位的所有位」:P1(位置1)校验位置 1,3,5,7;P2(位置2)校验位置 2,3,6,7;P4(位置4)校验位置 4,5,6,7。
- 接收端对每组重新计算校验,错误位位置 = 校验失败的校验位位置之和。
例:信息位 1010 放入 7 位海明码。位置 3,5,6,7 依次是 1,0,1,0。P1 = 位3⊕位5⊕位7 = 1⊕0⊕0 = 1;P2 = 位3⊕位6⊕位7 = 1⊕1⊕0 = 0;P4 = 位5⊕位6⊕位7 = 0⊕1⊕0 = 1。发送码字(按位置 1~7)为 1 0 1 1 0 1 0。若接收端发现 P1、P4 两组校验失败而 P2 正常,错误位置 = 1 + 4 = 5,将第 5 位取反即完成纠错。
整个纠错判定流程可以用一张图固化:
4.2 CRC 循环冗余校验:模 2 除法
CRC 只检错不纠错,广泛用于数据传输。计算流程:
- 信息串后面补 k 个 0(k = 生成多项式最高次数,也就是多项式位数减 1)。
- 用补 0 后的串对生成多项式做模 2 除法(异或代替减法,不借位)。
- 余数替换掉补的 0,得到 CRC 码字。
例:信息位 10110,生成多项式 10011(x⁴+x+1)。补 4 个 0 得 101100000,模 2 除以 10011:
101100000 ÷ 10011 10110 ← 商(不需要,只求余数) 101100000 10011 ----- 00101 ← 前五位异或后继续 ……(逐位下拉继续异或) 最终余数 = 1010发送码字 = 10110 1010。接收端用码字再除以同一多项式,余数为 0 则认为无错。
模 2 除法的操作口诀:上商规则看首位(首位 1 商 1,首位 0 商 0),减法就是异或。手工计算最多 5~8 步,考场上务必在草稿区写清楚每一步,一步异或写错就全盘皆输。
4.3 两者的对比收口
| 维度 | 海明码 | CRC |
|---|---|---|
| 检错/纠错 | 检错 + 纠 1 位错 | 只检错(特定多项式可纠错) |
| 校验位位置 | 固定在 2 的幂次位置 | 附加在信息串尾部 |
| 计算方法 | 分组异或 | 模 2 除法 |
| 典型应用 | 内存 ECC | 网络传输、存储校验 |
五、性能评价指标:把计算机算力变成可计算的数字
选择题常给一组参数要求计算,公式集如下:
| 指标 | 公式 | 说明 |
|---|---|---|
| 主频 | — | CPU 时钟频率,周期 = 1/主频 |
| CPI | 总时钟周期数 ÷ 指令数 | 每条指令平均时钟周期数 |
| 执行时间 | 指令数 × CPI × 时钟周期 | = 指令数 × CPI ÷ 主频 |
| MIPS | 指令数 ÷ (执行时间 × 10⁶) | 每秒百万条指令数 |
| MTBF | 总运行时间 ÷ 故障次数 | 平均无故障时间(第 35 篇展开) |
例:某程序编译后含 10⁹ 条指令,主频 2GHz,CPI = 1.5。执行时间 = 10⁹ × 1.5 ÷ (2×10⁹) = 0.75s;MIPS = 10⁹ ÷ (0.75 × 10⁶) ≈ 1333 MIPS。
这类题没有理解难度,失分全在单位换算(GHz→10⁹、ms→10⁻³)和「CPI 是平均值还是分指令类型加权」的审题上。若题目给出多类指令各自的占比和 CPI,总 CPI = Σ(占比 × CPI) 加权计算。
本篇小结
| 知识点 | 核心内容 |
|---|---|
| 五大部件 | 运算器算逻、控制器取指,PC 存地址、IR 存指令 |
| 指令流水线 | 总时间 =(阶段数+n−1)× 最长阶段时间 |
| 存储体系 | 速度/容量/价格三角,局部性原理支撑层次设计 |
| Cache | 平均访问时间 = h×tc + (1−h)×tm,注意串并行模型 |
| RAID | RAID 0 无冗余、RAID 1 容量减半、RAID 5 利用率 (n−1)/n |
| 海明码 | 2^k ≥ n+k+1,校验位在 2 的幂次位置,纠 1 位错 |
| CRC | 补 0 → 模 2 除 → 余数替换,异或代替减法 |
| 性能指标 | 执行时间 = 指令数×CPI÷主频,MIPS 换算注意单位 |
下篇预告
第 04 篇:操作系统核心考点:进程、PV 操作与存储管理
进程三态转换、信号量与 PV 操作经典例题、死锁与银行家算法、页面置换算法与磁盘调度——综合知识中最考验理解力的模块之一。
如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。