高通 Hexagon V65 HVX 编程参考手册(6)

高通 Hexagon V65 HVX 编程参考手册(6)


4.6 指令延迟

延迟是定义的实现,可以随着未来的版本而改变。

HVX数据包在多个时钟周期中执行,但通常以管道的方式执行,以便可以在每个上下文周期上发布和完成一个数据包。上下文通过时间交错来共享硬件,这样可能需要使用所有上下文才能达到峰值计算带宽。

除了少数例外(即直方图和提取),所有数据包的所有结果都将在执行开始后的固定时间内生成。但是,当需要这些来源时,情况是不同的。需要更多管道化的指令需要早期的来源。只有HVX寄存器是早期源寄存器。早期源操作数包括:

  • 输入到倍增器。例如“V3.h=vmpyh(V2.h,V4.h)”。V2和V4是乘数输入。对于带有累积的乘法指令,累加器不被认为是一个早期的源乘法器输入。
  • 输入到移位/位计数指令。只有正在移位或计数的寄存器才被认为是早期源。积累器并不是早期的资料来源。用
  • 的输入来排列指令。只有正在排列的寄存器才被认为是早期源(而不是累积器)。
  • 未对齐的存储数据是一个早期的来源。

如果在前一个向量包中产生了早期源寄存器,则可能会产生联锁停滞。软件应该努力在生产者和早期源消费者之间安排一个干预数据包。

下面的示例显示了各种联锁情况:

V8 = VADD(V0,V0)
V0 = VADD(V8,V9) // NO STALL
V1 = VMPY(V0,R0) // STALL due to V0
V2 = VSUB(V2,V1) // NO STALL on V1
V5:4 = VUNPACK(V2) // STALL due to V2
V2 = VADD(V0,V4) // NO STALL on V4

4.7 插槽、资源、延迟汇总

表4-6总结了所有HVX指令类型的六边形插槽、HVX资源和延迟要求。
表4-6 HVX插槽/资源/延迟汇总
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/129579973