跳到主要内容

常见错误

错误 1:混淆 RISC 和 CISC 特征

错误表现

  • 认为 RISC 有复杂指令集而 CISC 有简单指令集
  • 认为 RISC 有多周期执行而 CISC 是单周期

纠正

特征RISCCISC
指令集精简(少)复杂(多)
CPI通常 1通常 > 1
寻址模式
寄存器大量通用寄存器少量专用寄存器

错误 2:流水线阶段顺序错误

错误表现

  • 将 ID 放在 OF 之后
  • 遗漏 WB(Write Back)阶段
  • 混淆 IF(Instruction Fetch)和 OF(Operand Fetch)

纠正: 正确顺序:IF → ID → OF → IE → WB

  • IF: 从内存取指令
  • ID: 指令译码
  • OF: 取操作数
  • IE: 执行指令
  • WB: 结果写回寄存器

错误 3:流水线 hazard 概念混淆

错误表现

  • 无法区分三种 hazard
  • 认为流水线一定提高单条指令速度

纠正

  • Structural hazard:硬件资源冲突(如 ALU 被两条指令同时需要)
  • Data hazard:数据依赖性(下一条指令需要上一条指令的结果)
  • Control hazard:分支跳转(pipeline 需要 flush)
  • Pipelining 提高的是吞吐量(throughput),不是单条指令延迟

错误 4:混淆 Flynn's 分类

错误表现

  • 认为 SIMD 是多指令流
  • 混淆 SIMD 和 MIMD 的例子

纠正

分类指令流数据流例子
SISD11传统单核 CPU
SIMD1GPU, vector processors
MISD1容错系统
MIMD多核 CPU, 集群

错误 5:混淆 host OS 和 guest OS 的角色

错误表现

  • 认为 guest OS 直接管理物理硬件
  • 认为 host OS 运行在虚拟机内部

纠正

  • Host OS: 直接运行在物理硬件上的操作系统
  • Guest OS: 运行在虚拟机内部的操作系统,通过 hypervisor 访问硬件
  • Hypervisor (VMM): 管理多个 guest OS 的资源分配

错误 6:认为虚拟机没有性能开销

错误表现:忽略 hypervisor 层带来的性能损失。

纠正:虚拟机增加了 hypervisor 层的开销,guest OS 无法直接访问物理硬件,性能通常低于物理机。涉及 I/O 密集型任务时开销更明显。