Appearance
单周期CPU数据通路
考情分析
数据通路是理解CPU工作原理的核心,408考研在选择题和综合题中会考"某信号的值""某操作的数据流"。单周期是流水线的基础,理解它才能分析后续的多周期与流水线。
单周期的基本思想
每条指令在一个时钟周期内完成执行,时钟周期长度取决于最慢的指令(通常是 load 指令,需要访问两次存储器:取指 + 访存)。
优点:控制逻辑简单。 缺点:时钟周期被最慢指令拖长,简单指令(如加法)也需等待同样长的时间,效率低。
主要功能部件
| 部件 | 功能 |
|---|---|
| 程序计数器(PC) | 存放当前指令地址 |
| 指令存储器 | 根据 PC 输出指令(只读) |
| 寄存器堆 | 读写通用寄存器,有两个读端口、一个写端口 |
| ALU | 执行算术/逻辑运算,输出结果和零标志 |
| 数据存储器 | 支持读(lw)和写(sw)两种操作 |
| 符号扩展单元 | 将16位立即数符号扩展为32位 |
| 加法器 | PC+4 计算器;分支目标地址计算器 |
| 多路选择器(MUX) | 根据控制信号选择不同的数据来源 |
控制信号
| 信号 | 作用 |
|---|---|
| RegDst | 选择目的寄存器编号来源(R型用rd,I型用rt) |
| ALUSrc | 选择ALU第二操作数(寄存器rt 或 立即数) |
| MemToReg | 选择写入寄存器的数据(ALU结果 或 内存读出值) |
| RegWrite | 允许写寄存器堆 |
| MemRead | 读数据存储器 |
| MemWrite | 写数据存储器 |
| Branch | 分支控制,与ALU零标志 AND 后控制 PC 选择 |
| ALUOp | 告知ALU控制单元执行哪类操作 |
各类指令的数据通路
R型指令(ADD/SUB/AND/OR/SLT)
格式:op | rs | rt | rd | shamt | funct
数据流:
- PC → 指令存储器,取出指令
- 指令中 rs、rt 字段 → 寄存器堆,读两个操作数
- 两个操作数 → ALU,执行 funct 指定的运算
- ALU 结果 → 寄存器堆,写入 rd 号寄存器
控制信号:RegDst=1, ALUSrc=0, MemToReg=0, RegWrite=1, MemRead=0, MemWrite=0, Branch=0
lw 指令(Load Word)
格式:lw rt, imm(rs),功能:
数据流:
- 取指令
- 读寄存器 rs
- 符号扩展 imm(16位 → 32位)
- ALU 计算 rs + 立即数,得到有效地址
- 有效地址 → 数据存储器,读出数据
- 读出数据 → 寄存器堆,写入 rt
控制信号:RegDst=0, ALUSrc=1, MemToReg=1, RegWrite=1, MemRead=1, MemWrite=0, Branch=0
sw 指令(Store Word)
格式:sw rt, imm(rs),功能:
数据流:
- 取指令
- 读寄存器 rs 和 rt
- 符号扩展 imm
- ALU 计算基址 + 偏移 = 有效地址
- rt 的值 → 数据存储器,写入有效地址
控制信号:RegDst=x, ALUSrc=1, MemToReg=x, RegWrite=0, MemRead=0, MemWrite=1, Branch=0
beq 指令(Branch if Equal)
格式:beq rs, rt, label,功能:若 rs == rt,则 PC ← PC+4 + imm×4
数据流:
- 取指令,同时 PC+4 计算完毕
- 读寄存器 rs 和 rt
- ALU 计算 rs - rt,检查零标志 Zero
- 符号扩展后左移2位的偏移量 + (PC+4) = 分支目标地址
- 若 Zero=1 且 Branch=1,则 PC ← 分支目标地址;否则 PC ← PC+4
控制信号:RegDst=x, ALUSrc=0, MemToReg=x, RegWrite=0, MemRead=0, MemWrite=0, Branch=1
控制信号汇总表
| 指令 | RegDst | ALUSrc | MemToReg | RegWrite | MemRead | MemWrite | Branch |
|---|---|---|---|---|---|---|---|
| R型 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
| lw | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
| sw | x | 1 | x | 0 | 0 | 1 | 0 |
| beq | x | 0 | x | 0 | 0 | 0 | 1 |
x 表示无关项(don't care)。
交互可视化
考点清单
- 单周期 CPI = 1,但时钟周期由最慢指令决定(通常是 lw)
- 指令存储器和数据存储器分开(哈佛结构),避免取指和访存冲突
- R型指令不访存,但仍需等待完整的时钟周期
- beq 使用 ALU 做减法来判断相等,而不是专用比较器
- 分支目标地址 = PC+4 + 符号扩展(imm) × 4(立即数单位是字,需左移2位转换为字节偏移)
- RegDst、MemToReg 等信号的 x(无关项)不影响功能但影响电路设计