基本SIMD及其他的指令流与数据流的处理方式.docx
《基本SIMD及其他的指令流与数据流的处理方式.docx》由会员分享,可在线阅读,更多相关《基本SIMD及其他的指令流与数据流的处理方式.docx(9页珍藏版)》请在第一文库网上搜索。
1、SIMDOperatic基本SIMD及其他的指令流与数据流的处理方式_、SINf1)ARMNEON是适用于ARMCortex-A和Cortex-R系列处理器的一种SIMD(Sing1eInstructionMu1tip1eData)扩展架构。SIMD采用一个控制强来控制多个处理器,同时对一组数据(又称“数据向量”)中的每个数访别执行相同操作,从而实现并行技术。SIMD特别适用于一些常见的任务,如音频图像处理。大部分现代CPU设计都包含了S1MD指令,来提高多媒体使用的性能。SIMD操作示意图如上图所示,标量运算时一次只能对一对数据执行乘法操作,而采用STMD乘法指令,则一次可以对四对数据同时执
2、行乘法操作。A.指令流与数据流费林分类法根据指令流(InStnICtiOn)和数据流(Data)的处理方式进行分类,可分成四种计算机类型:费林分类示意图1. SISD(Sing1eInstructionSing1eData)机器的硬件不支持任何形式的并行计算,所有的指令都是串行执行。单个核心执行单个指令流,操作存储在单个内存中的数据,每次一个操作。早期的计算机都是SISD机器,如冯诺.依曼架构,IBMPC机等。2. MISD(Mu1tip1eInstructionSing1eData)是采用多个指令流来处理单个数据流。由于实际情况中,采用多指令流处理多数据流才是更有效的方法,因此M1SD只是作
3、为理论模型出现,没有投入到实际应用之中。3. MIMD(Mutip1eInstructionMutip1eData)计算机具有多个异步和独立工作的处理器。在任何四周期内,不同的处理器可以在不同的数据片段上执行不同的指令,也即是同时执行多个指令流,而这些指令流分别对不同数据流进行操作。MIMD架构可以用于诸如计算机辅助设计、计算机辅助制造、仿真、建模、通信交换机的多个应用领域。除了以上模型外,由NVIDIA公司生产的GPU引入SIMT体系结构:4. SIMT(Sing1eInstructionMu1tip1eThreads)类似CPU上的多线程,所有的核心各有各的执行单元,数据不同,执行的命令是
4、相同的。多个线程各有各的处理单元,和SIMD共用一个A1U不同。SIMT并行计算好迎SIMT示意图B.SIMD特点及发展趋势1. SIMD优势与不足优势效率高-适合计算密集型Q提供专用指令不足-适用场景有限-功耗高和芯片面积大.开发难度大-数据对齐要求2. S1MD发展趋势以ARM架构下的下一代SIMD指令集SVE(Sca1ab1eVectorExtension,可扩展矢量指令)为例,其是针对高性能计算(HPC)和机器学习痢域开发的一套全新的矢量指令集。SVE指令集中有很多概念与NEON指令集类似,例如矢量、通道、数据元素等。SVE指令集也提出了一个全新的概念:可变矢量长度编程模型。Desev
5、e128bitvec1ennx128-bit财社区SVE可扩展模型传统的SIMD指令集采用固定大小的向量蚩谴,例如NEON指令集采用固定的64/128位长度的矢量寄存器。而支持V1A编程模型的SVE指令集则支持可变长度的矢量寄存器。因此允许芯片设计者根据负载和成本来选择一个合适的矢量长度。SVE指令集的矢量寄存器的长度最小支持128位,最大可以支持2048位,以128位为增量。SVE设计确保同一个应用程序可以在支持不同矢量长度的SVE指令机器上运行,而不需要重新编译代码。ARM在2019年便推出了SVE2,以最新的Armv9为基础,扩充了更多的运算类型以全面替代NEON,同时增加了矩阵相关运算
6、的支持。二、ARM的SIMD指令集1. ARM处理器的SIMD支持-NEONARMNEON单元默认包含在Corte-A7和Corte-A15处理器中,但在其他ARMv7Cortex-A系列处理器中是可选的,某些实现ARMv7-A或ARMv7-R架构配置文件的Cortex-A系列处理器可能不包含NEON单元。符合ARMv7的内核的可能组合有以下四种:NEON因此必须首先确认处理器是否支持NEON和VFPo可以在编译和运行的时候进行检查。Armv6SIMD扩展Armv7-ANEONArmv8-ANEON利用Arm通用寄存器支持8/16位整数同时计算2x16/4x8操作数 32个64位NEON寄存器
7、支持8/16/32/64位整数 支持单精度浮点 最多同时支持16个8位操作数 32个128位NEOI 支持8/16/32/64f 支持单精度浮点 支持双精度浮点,双精度浮点运算2IEEE 最多同时支持7?七NEON发展史2. ARM处理器的SIMD支持检查2.1 编译阶段检查检测NEON单元是否存在的最简单方法。在ARM编译器工具链(armcc)v4.0及更高版本或GCC中,检查预定义宏ARM_NEON或者arm_neon是否开启。armasm等效的预定义宏是TARGET_FEATURE_NEON2 .2运行阶段检查在运行时检测NEON单元需要操作系统的帮助。ARM架构有意不向用户模式应用程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 SIMD 及其 指令 数据流 处理 方式