- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在本文档中: 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/
编辑:澄清一下,我明白为什么这段代码不起作用,我并不是要修复它,而是想了解如果这段代码可以在没有语义错误的情况下编译会有什么危险。 我发现下面的代码会导致静态语义错误。我知道这是因为 std::lis
我想知道 C# 枚举以及重复值会发生什么。我创建了以下小程序来测试: namespace ConsoleTest { enum TestEnum { FirstElem
正如我在另一个 SO 问题中指出的那样,我遇到了 this article .当我通过 MSVC7.1 编译 boost 1.40 时出现了这个问题,并且弹出了几个 C4251 警告。 现在,在阅读上
我有以下弹出窗口代码(客户端请求)。它使用 eval ,我知道这是危险的。有没有办法重写下面的脚本,使其不使用 (eval)? /* exported popup_default , popup_he
NTFS 文件可以有对象 ID。可以使用 FSCTL_SET_OBJECT_ID 设置这些 ID .然而,msdn article说: Modifying an object identifier c
我一直在学习命令行参数解析。关于这个已经有很长的线索了,我不想在这里挑起一个: Using getopts in bash shell script to get long and short com
这个问题在这里已经有了答案: How to configure ContextMenu buttons for delete and disabled in SwiftUI? (4 个回答) 4 个月
为什么在 linux 的中断处理程序中禁止 printk 或 (I/O)。?在什么情况下中断处理程序中的 I/O 会导致 linux 系统中的死锁? 最佳答案 关于 printk(),它是侵入性的。例
不是 Invoking virtual function and pure-virtual function from a constructor 的重复项: 以前的问题与 C++ 03 相关,而不是
我正在使用 lateinit 属性以避免使用 ?运算符(operator)。我有很多 View 属性是第一次在 getViews() 函数中分配的。如果该功能不存在,我的应用程序将与来自 Kotlin
我最近在使用 fputs 时遇到了问题:当使用 fputs 在文本文件中打印一些字符串时,我碰巧得到了除 A-Z、a-z、0-9 之外的其他字符(不属于字符串的字符) .我绝对确保所有字符串都以空字符
在仅包含字节数组的结构上使用 #pragma pack(1) 是否危险/有风险?例如。这个: #pragma pack(1) struct RpcMessage { uint8_t proto
我是一名优秀的程序员,十分优秀!