执行级 EXU

指令在送入执行级后将开始在相应的运算单元内进行计算。
EXU 级的各个运算器的流水级长度不同,但均要提供两个端口: 指令接收端口和指令提交端口。指令接收端口将被连接至 EXU 的指令接收端口上,该端口对外提供该运算器是否可以接收指令的信号并设置指令槽,供进入该运算器的新指令写入。指令提交端口将被连接至 EXU 的指令提交端口上,该端口对外提供是否有指令申请提交、该指令的运算结果、该指令是否触发流水线重置、该指令的指令编号和 Flag 标记等信息供后端母模块处理。
EXU 的结构简图如下所示:

image.png

EXU 级的各个运算器是独立工作的,但是存在一些特殊情况:

  1. 当 LSU 的指令前存在预测出错需要重置流水线的跳转指令时,LSU 将不被允许向内存发送访存请求(为了维护内存的正确性)
  2. LSU 触发异常时(地址不对齐、虚实地址转换异常等)CSR 部件的控制 将从 CSR 的接收端口转移至 LSU 的接收端口,LSU 的提交端口将被禁用,指令 在 CSR 内完成指令异常的处理后,将从 CSR 的提交端口进行提交。
  3. 独立 BRU 是可选的,当独立 BRU 启用时,跳转类指令将被发送至 BRU 内进行处理;当独立 BRU 不被实现时,一个 ALU 将被启用其跳转处理的逻辑, 复用 ALU 的通路进行跳转指令的处理。

在一条指令成功提交后,运算器会从发送端口收到成功提交的信号,运算器流水向前流动,对于单周期的组合逻辑运算器(如标量 ALU),则该运算器会直 接从接收端口发送出闲置信号。

results matching ""

    No results matching ""