gpt4 book ai didi

iPhone ARMv6 VFP asm 延迟、吞吐量和危险

转载 作者:行者123 更新时间:2023-12-03 19:20:46 25 4
gpt4 key购买 nike

在本文档中: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301g/DDI0301G_arm1176jzfs_r0p7_trm.pdf

第 21-25 页(pdf 第 875 页)给出了 VFP 单元的汇编指令的吞吐量和延迟时间。

这些数字与向量大小无关吗?

1:让我们以 FMULS 为例,它的吞吐量为 1,延迟为 8。这是否意味着如果我不使用当前未由先前函数计算的寄存器,我可以在每个周期中启动新的 FMULS 操作?例如:

FMULS s8, s16, s20
FMULS s12, s21, s25

它们会紧接着执行吗?

2:如果我有两个 FMULS 函数,其中一个参数取决于前一个计算,会发生什么

FMULS s8, s16, s20
FMULS s12, s21, s8

VFP 会等待 8 个周期才开始处理第二条指令吗?

3:如果我们处于具有 4 个元素的向量模式,并且在第二条 FMULS 指令上,除了一个以外的所有输入寄存器都可用,该怎么办?会发生什么?

4:开方和除法:sqrt 或除法运算会阻止任何后续运算在 19 个周期内启动吗?

谢谢!

最佳答案

您的问题均已在您链接的文档中得到解答。您应该仔细阅读。

Are those numbers independent of vectorsize?

没有。例如,请参阅您链接的文档中的表 21-15。请注意短向量 FADDS 的延迟。

does it mean that I can start a new FMULS operation every cycle if it doesn't depend on an earlier result that isn't available yet?

是的,这就是吞吐量的定义。

what happens if I have two FMULS functions after each other where one argument depends upon the previous computation

执行将停止,直到第一个 FMULS 的结果可用。详细信息请参见第 21.6 节“记分板的操作”。

what if we are in vectormode with 4 elements and on the second FMULS instruction all inputregisters but one are available. what will happen?

它会停止。相同的引用。

sqrt and division: will a sqrt or division operation prevent any subsequent operation from being started for 19 cycles?

没有。请参见第 21.10 节“并行执行”。表 21-15 给出了一个示例,其中非依赖的 FADDS 紧随 FDIVS 执行。

请注意,对于许多类型的计算,编写比标量代码执行速度快得多的短向量 VFP 代码可能有点挑战(尽管并非不可能)。即使您学会了如何做到这一点,它的值(value)也值得怀疑,因为 NEON 单元似乎是 ARM 上矢量计算的新模型。从长远来看,暂时忽略短向量操作并在未来专注于学习 NEON 可能会更好。

关于iPhone ARMv6 VFP asm 延迟、吞吐量和危险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2097684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com