跳转至

数据通路

1. 数据通路概述

数据通路是 CPU 中执行数据处理的部分,包括寄存器文件、ALU、缓存接口等。

2. 主要组件

2.1 寄存器文件

  • 32 个 32 位通用寄存器 (x0-x31)
  • 双读端口,单写端口
  • x0 固定为 0

2.2 ALU

  • 支持 RISC-V 基本算术逻辑运算
  • 32 位加法器
  • 比较器
  • 移位器

2.3 乘法器

  • 32×32 位乘法
  • MUL/MULH/MULHSU/MULHU 指令支持

3. 数据通路图

graph TB
    subgraph IF["IF 级"]
        PC[PC 寄存器]
        I_CACHE[I-Cache]
    end

    subgraph ID["ID 级"]
        REGFILE[寄存器文件]
        IMM[立即数生成]
    end

    subgraph EX["EX 级"]
        ALU[ALU]
        MUL[乘法器]
    end

    subgraph MEM["MEM 级"]
        D_CACHE[D-Cache]
    end

    subgraph WB["WB 级"]
        WB_MUX[写回选择器]
    end

    PC --> I_CACHE
    I_CACHE --> REGFILE
    REGFILE --> ALU
    REGFILE --> MUL
    IMM --> ALU
    ALU --> D_CACHE
    MUL --> WB_MUX
    D_CACHE --> WB_MUX
    WB_MUX --> REGFILE

4. 数据流向

4.1 R-type 指令

REGFILE[A] → ALU ← REGFILE[B] → ALU 结果 → WB_MUX → REGFILE[WD]

4.2 Load 指令

REGFILE[Base] → ALU → 地址 → D_CACHE → 读回数据 → WB_MUX → REGFILE[WD]

4.3 Store 指令

REGFILE[Base] → ALU → 地址 → D_CACHE
REGFILE[Data] → D_CACHE 写数据

4.4 Branch 指令

REGFILE[A] → ALU 比较 ← REGFILE[B] → 分支决策 → PC 选择

5. 前递通路

前递源 前递目标 条件
EX/MEM.EXE_result EX.ALU operand EX 级写寄存器
MEM/WB.WB_result EX.ALU operand MEM 级写寄存器
MEM/WB.WB_result ID.REGFILE read Load 后使用

6. 控制信号

信号 描述
RegWrite 寄存器写使能
ALUSrc ALU 第二操作数选择 (0:寄存器, 1:立即数)
MemToReg 写回数据选择 (0:ALU, 1:内存)
MemRead 内存读使能
MemWrite 内存写使能
Branch 分支使能
Jump 跳转使能