IARMAdvancedSIMD.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IARMAdvancedSIMD

“ARM Advanced SIMD”,“NEON” , it provides:(1)、A set of interesting scalar/vectorinstructions and registers(the latter are mapped to the same chip area as theFPU ones), comparable to MMX/SSE/3DNow! in the 86 world;(2)、VFPv3-D32 as a requirement(i.e 32 hardware FPU 64-bit registers,instead of the minimum of 16). NEON technology as it is used on ARM Cortex-A seriesprocessors that implement the ARMv7-A or ARMv7-R architectures profiles. The ARMv8 architectural architecture extends theNEON support, and provides backwards compatibility with ARMv7 implementations. ARM ENON技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D图形、游戏、音频和语音处理、图像处理技术、电话和声音合成),其性能至少为 ARMv5性能的3倍,为ARMv6 SIMD性能的2倍。NEON技术是ARM Cortex-A系列处理器的128位SIMD架构扩展,旨在为消费性多媒体应用程序提供灵活、强大的加速功能。 从ARMv7开始ARM提供高级单指令多数据(SIMD)扩展亦称NEON技术,它是一种由ARM开发的64/128位混合SIMD体系结构,可以提升多媒体和信号处理应用程序的性能。 NEON的寄存器:有 16 个128 位四字寄存器Q0-Q15,32个64位双字寄存器D0-D31,两个寄存器是重叠的,在使用的时候需要特别注意,不小心就会被覆盖掉。 NEON的数据类型:无符号整数、有符号整数、未指定类型的整数、浮点数、{0,1}上的多项式。数据类型针对的是操作数,而不是目标数。NEON中的数据类型说明符由一个指示数据类型的字母构成,该字母通常后跟一个指示宽度的数字。 NEON指令可处理:(1)、由以下内容构成的双字向量:八个8位元素、四个16位元素、两个32位元素、一个64位元素;(2)、由以下内容构成的四字向量:十六个8位元素、八个16位元素、四个32位元素、两个64位元素。 NEON中的正常指令、宽指令、窄指令、饱和指令、长指令:(1)、正常指令:生成大小相同且类型通常与操作数向量相同的结果向量;(2)、长 指令:对双字向量操作数执行运算,生成四字向量的结果。所生成的元素一般是操作数元素宽度的两倍,并属于同一类型;(3)、宽指令:一个双字向量操作数和 一个四字向量操作数执行运算,生成四字向量结果。所生成的元素和第一个操作数的元素是第二个操作数元素宽度的两倍;(4)、窄指令:四字向量操作数执行运 算,并生成双字向量结果,所生成的元素一般是操作数元素宽度的一半;(5)、饱和指令:当超过数据类型指定的范围则自动限制在该范围内。 NEON标量:有些NEON指令可处理与向量组合使用的标量。NEON标量可以为8位、16位、32位或64位。除乘法指令之外,访问标量的指 令也可访问寄存器组中的任何元素。指令语法通过在双字向量中使用索引来引用标量,从而使Dm[x]表示Dm中的第x个元素。乘法指令仅允许使用16位或 32位标量,并且只能访问寄存器组中的前32个标量。这在乘法指令中意味着:(1)、16位标量限定为寄存器D0-D7,其中x位于范围0-3内; (2)、32位标量限定为寄存器D0-D15,其中x为0或1。 {0,1}上的多项式算法:使用布尔算法规则处理系数0和1:(1)、0+0=1+1+0;(2)、0+1=1+0=1;(3)、 0*0=0*1=1*0=0;(4)、1*1=1. 也就是说,将两个{0,1}上的多项式相加与按位异或的运算相同,而将两个{0,1}上的多项式相乘则与整乘的运算相同,但部分积执行的是异或运算,而不 是相加运算。 NEON注意事项:(1)、load数据的时候,第一次load会把数据放在cache里面,只要不超过cache的大小,下一次load同样 数据的时候,则会比第一次load要快很多,会直接从cache中load数据;(2)、在做NEON乘法指令的时候会有大约2个clock的阻塞时间, 如果你要立即使用乘法的结果,则就会阻塞在这里。乘法的结果不能立即使用,可以将一些其它的操作插入到

文档评论(0)

wangz118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档