Cortex-A57 优化指南指出,大多数对 128 位向量数据进行操作的整数指令都可以双发出(第 24 页,整数基本 F0/F1,逻辑 F0/F1,执行吞吐量 2)。
然而,根据我们的内部(综合)基准测试,即使有大量可用的指令并行性,吞吐量似乎也仅限于 1 128 位 neon 整数指令(编写基准测试的目的是测试 128 位 neon 指令是否可以是双重发行的,所以这是我们关心的事情)。当将 50% 128 位指令与 50% 64 位指令混合时,我们能够实现每个时钟 1.25 条指令(仅霓虹灯整数算术,无加载/存储)。
使用 128 位 ASIMD/Neon 指令时是否需要采取特殊措施才能获得双发出吞吐量?
谢谢,克莱门斯
根据 ARM 支持,原因似乎是 NEON 寄存器文件仅支持 3x 64 位写入端口。
因此,尽管 NEON ALU 能够处理 2x128 位向量,但寄存器文件无法消耗结果……这是一个(非常)奇怪的设计决策。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)