ECS在游戏里的运用,最初是用来解决预测和回放的问题。但是由于面向数据的编程结构,天然符合了现代CPU的编程思想,所以目前UnityECS主要还是推动展现性能方面的优势。那么ECS是如何提升程序性能的呢?最重要的其实就是CPU的缓存命中。讲CPU命中之前,我们先说说CPU的一些基础知识。
CPU架构
我们现在经常听到的关于CPU的描述里会有高通骁龙,华为麒麟,英特尔奔腾,酷睿I3、I5、I7或者X86,ARM,PowerPC,又或者32位64位等等。那么它们之间的关系是什么?
首先我们说区别CPU最核心的叫做指令集,指令集决定CPU的工作方式,所以指令集就决定了一个CPU的架构。CPU发展到现在,衍生了很多不同的架构方式,到目前为止最接触最多的就是X86和ARM架构。
X86的复杂指令集(CISC)的代表,ARM是精简指令集(RISC)的代表,这二者之间最核心的区别就在于指令的复杂程度,指令的复杂程度又决定了硬件的设计工艺和工作时的调度方式。
比如,我们把大象放进冰箱,一共需要三步:第一步把冰箱门打开,第二步把大象放进去,第三步把冰箱门关上。X86(复杂指令集)推崇的就是分成三步执行,这样以后我想把长颈鹿也放进去的时候,我只要替换第二步就可以了。但是ARM推崇的就是,我要训练一个机器人(硬件加速),告诉它怎么把大象放进去,然后我以后就只要对它说:“把大象放冰箱”,就能完成工作。这两种方式有什么优劣呢?
首先复杂指令集在面对多种相似或者相近的需求时,只要更换部分的执行顺序就能完成工作,但