GET - 2024.1 简体中文

MicroBlaze V 处理器参考指南 (UG1629)

Document ID
UG1629
Release Date
2024-05-30
Version
2024.1 简体中文
图 1. 从串流接口获取

描述

MicroBlaze V 从链路 x 接口读取数据,并将结果置于寄存器 rD 内。如果 C_FSL_LINKS 设置的可用链路数小于或等于 x,则使用链路 0。

GET 指令有 32 种变体。

阻塞版本(当 n 位为 0 时)会保持停滞直至确认来自接口的数据有效为止。非阻塞版本不会停滞,如果数据有效,则将 mstream 中的 C 位设为 0,如果数据无效,则将 C 位设为 1。对于无效访问,目标寄存器的内容会保持未定义状态。

所有数据 GET 指令(当 c 位为 0 时)都预判接口的控制位为 0。如果情况有变,则该指令会将 mstream 中的 FSL 位设为 1。所有控制 GET 指令(当 c 位为 1 时)都预判接口的控制位为 1。如果情况有变,则该指令会将 mstream 中的 FSL 位设为 1。

异常版本(当 e 位为 1 时)会在发生控制位不匹配时生成异常。生成异常时,目标寄存器不会更新。

测试版本(当 t 位为 1 时)照常处理,但链路的读取信号不会断言有效。

机器外部中断或外部断点无法中断原子版本(当 a 位为 1 时)。每条原子指令都会防止后续指令被中断。这意味着可以将一连串原子指令组合在一起,不会发生中断而引发程序流程断点。但仍有可能发生异常。

伪代码

if x >= C_FSL_LINKS then
   x ← 0
(rD) ← Sx_AXIS_TDATA
if (n = 1) then
   mstream.C ← Sx_AXIS_TVALID
if Sx_AXIS_TLAST ≠ c and Sx_AXIS_TVALID then
   mstream.FSL ← 1
   if (e = 1) then
      PC ← mtval
      mcause ← 24

更改寄存器

  • xd,除非生成异常,生成异常时寄存器保持不变
  • mstream
  • PC 和 mcause,以防生成串流异常

时延

  • 1 个周期,C_OPTIMIZATION = 0、2 或 3
  • 2 个周期,C_OPTIMIZATION = 1

该指令的阻塞版本会使流水线停滞,直至完成该指令为止。当参数 C_USE_EXTENDED_FSL_INSTR 设为 1 时,将提供中断服务,且指令不是原子指令。

注释

  • 除非 C_FSL_EXCEPTION 设为 1,否则 e 位没有任何作用。
  • 仅当参数 C_FSL_LINKS 大于 0 时,才能使用这些指令。
  • 仅当参数 C_USE_EXTENDED_FSL_INSTR 设为 1 时,才能使用扩展指令(异常、测试和原子版本)。