文档
注册
评分
提单
论坛
小智

SIMD指令集

SIMD(Single Instruction Multiple Data)指令集是一种单条指令可以处理多条数据流的指令的集合。而一般我们使用的指令集是只能够单条指令处理单条数据流,这种指令集又称SISD(Single Instruction Single Data)指令集。

从概念上来看,我们就可以知道,SIMD指令集在数据密集运算的场景下,性能会明显优于SISD指令集。如图1所示,以加法指令为例,SISD指令,CPU先执行一条指令,进行A1 + B1 = C1计算,再执行下一条指令,进行A2 + B2 = C2计算,按此顺序依次完成后续计算。四个加法计算操作需要串行执行。而对于SIMD指令来说,CPU只需执行一条指令,即可完成四个加法计算操作,四个加法计算操作并行执行。显然在这样的场景下,SIMD指令性能优于传统的SISD指令。

图1 SISD指令与SIMD指令

而这种并行化执行实现的原因是因为CPU在物理设计时候,增加了一些专用的向量寄存器,这些寄存器的长度往往大于通用寄存器,比如鲲鹏处理器的向量寄存器长度就是128bit,而通用寄存器最大长度是64bit。因此,这些寄存器可以同时放入多个数据。但需要注意,这里放入的多个数据需要保证数据类型是一致的。

因为涉及专用的向量寄存器,不同架构有不同的向量寄存器,因此不同架构支持的SIMD指令集是不一样的,基于鲲鹏平台进行开发,使用SIMD指令集需要注意该SIMD指令集是否是鲲鹏架构支持的。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词