WebAssembly中simd使用调研

本文探讨了WebAssembly在计算密集型任务中的应用,尤其是SIMD(单指令多数据流)技术,以提高程序效率。SIMD允许一次性处理多个数据,尤其适合图像和音视频处理。文章详细介绍了SIMD的概念、编程方法,并讨论了WASM对SIMD的支持情况,包括Emscripten的编译限制。最后,通过示例展示了如何利用SIMD进行数组运算优化,并指出WASM SIMD在现代浏览器中的兼容性。

背景

目前对WebAssembly的使用主要是做计算密集型的工作,比如软解播放通过WebAssembly计算提供解码能力,WebAssembly执行完全依赖CPU计算,不能借助GPU硬件加速,所以需要尽量挖掘CPU执行提升程序效率的手段。目前两个主要优化手段为多线程和SIMD。

对于多线程能力的使用,从WebAssembly指令支持层面、编译工具链、线程间内存共享方式、浏览器对WASM标准的实现方面都有相应的支持

而SIMD是另一种能显著提升程序执行效率的方式,需要调研下使用到SIMD特性的源代码编译成WASM的可行性

技术原理

SIMD概念
  • SIMD(单指令多数据流)即一条指令可以一次处理多个数据,属于数据级并行优化手段。非常适用于对大量数据进行相同操作的计算任务,例如图片、音视频编解码处理场景。SIMD在X86、ARM CPU架构下都有相应的指令集实现。

  • 如图所示,从宏观的角度看SISD(单指令单数据流)和SIMD(单指令多数据流),对数组A、B中对应下标位置的数据进行相加,结果存到数组C中。对于SISD,N次循环操作,每次对一对数据进行处理。对于SIMD,一次操作可以同时处理四对数据,只需要 N/4次循环。两者的主要区别是单次指令执行处理的数据容量不同

    • 组成原理基础
    • 在继续介绍之前需要先补充一些计算机组成原理的知识。
      
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sU393gDG-1656511217139)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5497bab8bd084a6d8e3c83bd894df0e6~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image)]

    •  CPU的基本任务就是执行指令,有三个主要部件,CU(控制单元) 、 ALU(算术逻辑单元)、寄存器(存储单元)
      
    •   **控制单元**
      
    •   由指令寄存器(Instruction Register)、指令计数器(Program Counter)、指令译码器(Instruction Decoder)和 操作控制器(Operation Controller) 等组成。对指令进行读取解析,控制执行。指令计数器中存放下一条指令在内存中的地址,控制单元根据地址读取指令,放入指令寄存器中,通过指令译码器对指令分析,确定应该进行什么操作,然后通过操作控制器生成控制信号,告诉运算逻辑单元(ALU)和寄存器如何运算、对什么数据进行运算以及对结果进行怎样的处理。
      
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wz3pkgVm-1656511217140)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/029c4fdb42eb4386a894c96035abb889~tplv-k3u1fbpfcp-zoom-in-crop-mark:1956:0:0:0.image)]

    •   **算术逻辑单元**
      
      1.  执行+ - \* / 等算术运算,位移等逻辑运算。由控制单元发出的控制电信号控制运算
        
    •   **寄存器**
      
      1.  CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息。主要包括通用寄存器、专用寄存器。每个寄存器都有一个特定编号
        
      1.  通用寄存器: 最基础的寄存器,程序执行过程中,绝大部分时间都是在操作这些寄存器来实现指令功能,从内存中读数据至寄存器,ALU运算临时结果存至寄存器等
        
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值