Iphone 的 MMX 指令
Posted
技术标签:
【中文标题】Iphone 的 MMX 指令【英文标题】:MMX instructions for Iphone 【发布时间】:2009-04-26 14:51:51 【问题描述】:iphone处理器ARMV6是否支持MMX指令?
【问题讨论】:
【参考方案1】:简短的回答是否定的 - MMX 是一种英特尔技术。更长的答案是 ARM 支持Neon SIMD instruction set。它与 MMX 指令的架构相似(即它计算向量),但显然不一样。 ARM 提供库来帮助您生成 SIMD 代码(使用 OpenMAX 和 GCC 编译器内部函数)。
iPhone 包括不支持 NEON 的 ARMv6KZ 后续型号包括基于 ARM Cortex-A8 内核并支持 Neon 的三星 S5PC100。同样,为 iPad 供电的 Apple A4 是基于 Cortex-A8 的 SoC。
【讨论】:
当然,时间在流逝,现在 iPhone 3Gs 和非 8GB 第三代 iPod Touch 都有 Neon(很可能 iPad 也有)。【参考方案2】:MMX 是 x86 的 SIMD 指令集。 iPhone 使用 ARM 处理器,因此您无法使用 MMX。
【讨论】:
英特尔的 ARM 处理器支持 MMX。更准确地说:它们支持一种名为 MMX 的技术:英特尔在其 ARM 处理器中添加了 SIMD 指令,并称它们为“MMX”,尽管它们与 x86 MMX 无关并且绝不兼容。 (就像他们在 Pentium4 中实现了 SMT,在 Itanium 中实现了 CMT,并称它们为超线程,尽管 SMT 和 CMT 是两个完全不同的东西。) 英特尔不生产 ARM 处理器。他们制造了 StrongARM 处理器。【参考方案3】:正如其他人在此处发布的那样,MMX 是适用于 x86 架构的英特尔 SIMD 技术。所以不,iPhone 本身不支持 MMX。
iPhone 配备 ARM Coretex A8 CPU,特别是 Samsung SoC S5PC100,它提供称为 NEON(ARM 等效于 MMX)的 SIMD 扩展。
虽然 Apple 尚未明确记录这一点,但工具链似乎支持它。 gcc 中有 NEON 的内在函数,因此您应该能够使用 NEON 编写 SIMD 代码。
NEON example for iPhone SIMD GCC intrinsics for NEON Reference请注意,此功能是 3GS 特有的,因此不向后兼容。您需要确保您的应用被标记以表明它需要 3GS(我认为您不能访问状态寄存器以进行运行时检测)。
【讨论】:
【参考方案4】:可能有用的链接:ARM Processor Instruction Set Architecture。
看起来 ARMV6 有 一个某种 SIMD 单元...
【讨论】:
【参考方案5】:ARM 有点可配置,因此,iPhone 中的 ARM 可能无法配置 拥有这个。真正注册该计划的人可能能够回答, 如果 NDA 允许。
如果你有一些必须工作的东西,我猜你可以构建 bochs。我的猜测是您想使用 mmx 指令来提高速度,而且,显然,这不会有很大帮助。如果你有一些运行缓慢的算法,但是你不能对其进行逆向工程 在没有 mmx 指令的情况下运行 bochs 可能会解决问题。
【讨论】:
以上是关于Iphone 的 MMX 指令的主要内容,如果未能解决你的问题,请参考以下文章