一,介绍

        在接下来的几节课中,我们将描述如何构建处理器。

    处理器由两部分组成:

  • 实现计算的DataPath
  • 查看指令并告诉数据路径要做什么的Control Logic

DataPath 就像人的四肢,Control Logic 就像人的大脑一样,操控四肢,从而实现创造。

deltamethod的ttest和CUPED deltapath_程序人生

现在,让我们从了解DataPath 开始吧!

首先,我们需要回顾之前学习的指令。我们知道,四肢之所以人够运动,是因为大脑在发出命令,从而实现的。同理, DataPath, 在此我们把命令看成由数字组成的指令。

以下就是我们之前学习的所有指令的格式:

deltamethod的ttest和CUPED deltapath_数据路径_02

One-Instruction-Per-Cycle RISC-V Machine

        在时钟的每个滴答声中,处理器执行一条指令

  1. 当前状态输出驱动组合逻辑的输入, 其输出稳定在值下一个时钟之前的状态边缘
  2. 在时钟的上升沿,所有的状态元素更新为组合逻辑输出,执行移至下一个 时钟周期 
  3. 独立的指令/数据存储器: 为简化起见,内存是 异步读取(无时钟), 但同步写入(有时钟)

状态元素就是0/1,随着Clock发生变化。(包含延迟)

deltamethod的ttest和CUPED deltapath_risc-v_03

五个阶段

deltamethod的ttest和CUPED deltapath_数据路径_04

  1. (IF)获取指令:将地址发送到指令存储器(IMEM),并在该处读取IMEM地址
  2. (ID)译码:从指令位生成控制信号,生成立即数,并从RegFile中读取寄存器。
  3. 执行(ALU):执行ALU操作,并进行分支比较。
  4. (MEM)访存:读取后写入数据存储器(DMEM)
  5. (WB)写回:写回PC+4、ALU操作的结果后来自内存的dataR到RegFile DataD

接下来,我们将从简单的指令(add)开始,一步步的实现完整的DataPath.

deltamethod的ttest和CUPED deltapath_学习方法_05

 

deltamethod的ttest和CUPED deltapath_多路复用_06

deltamethod的ttest和CUPED deltapath_数据路径_07

 SUB

首先,对比一下ADD与SUB的差异——ALUSel

deltamethod的ttest和CUPED deltapath_程序人生_08

求同存异——所有R型指令,就完成啦!

deltamethod的ttest和CUPED deltapath_学习方法_09

Implementing the addi

deltamethod的ttest和CUPED deltapath_risc-v_10

多了一个立即数生成器、多路复用器、ImmSel、BSel

deltamethod的ttest和CUPED deltapath_程序人生_11

实现I型指令——指令格式的改变。(立即数imm[31:0])

 

deltamethod的ttest和CUPED deltapath_多路复用_12

Implementing Load Word

deltamethod的ttest和CUPED deltapath_数据路径_13

deltamethod的ttest和CUPED deltapath_程序人生_14

 

deltamethod的ttest和CUPED deltapath_学习方法_15

Implementing Store Word

 

deltamethod的ttest和CUPED deltapath_risc-v_16

deltamethod的ttest和CUPED deltapath_多路复用_17

I 型指令已实现

deltamethod的ttest和CUPED deltapath_程序人生_18

 集成I&S

deltamethod的ttest和CUPED deltapath_risc-v_19

 Implementing Branches——增加分支比较器,alu(PC+4的竞争对手)——这意味着B型指令,比I型指令跨越的距离更远(地址)

deltamethod的ttest和CUPED deltapath_risc-v_20

 

deltamethod的ttest和CUPED deltapath_risc-v_21

分支比较器

deltamethod的ttest和CUPED deltapath_risc-v_22

 接下来是两个特殊的跳跃指令(Jalr、Jal)

deltamethod的ttest和CUPED deltapath_学习方法_23

deltamethod的ttest和CUPED deltapath_数据路径_24

JAL

deltamethod的ttest和CUPED deltapath_程序人生_25

最后的数据通路

deltamethod的ttest和CUPED deltapath_学习方法_26

补充

deltamethod的ttest和CUPED deltapath_程序人生_27

总结——通用数据路径

• 能够在每个周期内执行所有 RISC-V 指令

• 数据路径是所有使用的所有单位的“联合” 指示。 多路复用器提供了选项。

• 并非所有指令都使用所有单元(硬件)

• 5 个执行阶段

        • IF、ID、EX、MEM、WB

• 并非所有指令在所有阶段都有效

• 控制器指定如何执行指令