Unity Burst详解

【简介】

Burst是Unity的编译优化技术,优化了从C#代码编译成Native代码的过程,经过编译优化后代码有更高的运行效率。

在Unity中使用Burst很简单,在方法或类前加上[BurstCompile]特性即可。在构建时编译代码的步骤,Burst编译器会识别该特性对方法或类做编译优化。其适用于高性能计算的场景,逻辑复杂的场景不适用。

Burst编译的实现得益于已有的SIMD和LLVM技术。

SIMD

在现代 CPU 中,并行性操作大致分为三种类型:

  • 指令级并行,主要由 cpu 流水线技术,乱序执行技术等技术完成
  • 线程级并行,主要依靠多核多线程技术实现
  • 数据级并行,主要依靠 SIMD (单指令多数据) 来实现

SIMD是CPU硬件设计的一部分,是的CPU可以同时对多个数据执行相同的操作。

指令执行时(指令由操作码和操作数构成)CPU先访问缓存,缓存分为指令缓存和数据缓存,如果缓存中有指令就读取,没有指令从内存中读取;读取数据的过程也类似。

以加法为例,对于5+2这个加法计算,最少需要四条指令:

  1. 将数值 5 加载到寄存器中(LOAD操作码)
  2. 将数值 2 加载到寄存器中(LOAD操作码)
  3. 将两个寄存器中的数值相加(ADD操作码)
  4. 将相加后的结果存储到指定的寄存器或内存中(STORE操作码)

在SISD(单指令单数据)中,每个指令只会取一次数据,而在SIMD(单指令多数据)中,一次指令会取多个数据,节省了CPU获取数据的时间。

一次性取出来的数放在向量寄存器中,但向量寄存器大小有限,在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值