提问人:boltragons 提问时间:3/8/2023 更新时间:3/16/2023 访问量:443
ARMv8(也称为 AArch64 或 ARM64)的默认 FPU 是什么?
What is the default FPU of ARMv8 (also known as AArch64 or ARM64)?
问:
在一些地方,据说 ARMv8 的默认 FPU 是 VFPv3/VFPv4(他们这么说,但没有指定是哪一个),而在其他地方,它是 NEON,而在其他一些地方,它仍然只是“FPU”。还有人说VFP已被弃用,或者只有它的“矢量”模式被弃用。这很令人困惑。因此,我想知道:
ARMv8 的默认 FPU 是什么?我知道我们可以在 VFP 和 NEON 之间进行选择,但我想知道哪一个是默认的。
此外,根据执行的指令,是否由不同的单元执行该指令?例如。。。即使 NEON 是默认 FPU,VFP 是否执行 FADD 指令?如果没有,该语句是否会转换为 ADD。F32?
当我意识到有 NEON 标量指令时,这种怀疑就更糟了!
最后一件事,如果 NEON 和 VFP 不再是 ARMv8 中的协处理器,并且它们的指令被添加到默认指令集中,那么它是如何工作的?
我知道有很多问题,但它们都与同一个问题有关。
欢迎任何和所有帮助,如果您从问题中不明白某些内容,我很乐意详细说明。
答:
该架构定义了指令编码 - 即指令位模式及其必须执行的操作。它还定义了特定功能的分组 - 即,如果您声称支持高级 SIMD,则必须实现这组指令。
该体系结构没有处理指令的硬件单元的概念。这完全是特定微体系结构的实现定义的行为。scalar-fp 和 vector-fp 可以在相同的硬件流水线上运行吗?是的。它们可以在完全不同的硬件管道上运行吗?是的。
忽略原始 VFP 指令的协处理器式编码 - 这是一个可以追溯到 ARM9 和 ARM11 的历史怪癖。今天,它只是一个指令位模式,就像任何其他指令位模式一样,并不意味着任何特定的实现。
鉴于您关心的主要是实施细节 - 您试图解决的实际问题是什么?你为什么关心东西在哪个单元上运行?
评论