在ARM Cortex-A8处理器中,我了解NEON是什么,它是一个SIMD协处理器.
但VFP(矢量浮点)单元也是一个协处理器,可以作为SIMD处理器使用吗?如果是这样哪个更好用?
我读了几个链接,如 -
但不是很清楚他们的意思.他们说VFP从未打算用于SIMD,但在Wiki上我读了以下内容 - " VFP架构还支持短向量指令的执行,但这些指令依次对每个向量元素进行操作,因此不提供真正的SIMD性能(单指令多数据并行. "
它不是很清楚要相信什么,任何人都可以详细说明这个话题吗?
我正在尝试使用NEON向量指令集在iOS上优化图像格式转换.我认为这将很好地映射到它,因为它处理一堆类似的数据.
尽管如此,我的尝试并没有那么好,与天真的c实现相比,只能实现边际加速:
for(int i = 0; i < pixelCount; ++i, ++inPixel32) {
const unsigned int r = ((*inPixel32 >> 0 ) & 0xFF);
const unsigned int g = ((*inPixel32 >> 8 ) & 0xFF);
const unsigned int b = ((*inPixel32 >> 16) & 0xFF);
*outPixel16++ = ((r >> 3) << 11) | ((g >> 2) << 5) | ((b >> 3) << 0);
}
Run Code Online (Sandbox Code Playgroud)
iPad 2上的100万像素图像阵列:
格式为[min avg max n =计时器样本数],以毫秒为单位
C:[14.446 14.632 18.405 n = 1000] ms
NEON:[11.920 12.032 …