SIMD 学习
1.认识CPU架构
CPU的全称是“中央处理单元”,它是计算机的核心,计算都由它完成。不同的CPU架构有不同的指令集(汇编),彼此不通用这就导致运行在上面的软件不兼容,必须重新编译。如果没有做适配,一个架构下的软件就无法移植到另一个架构。
目前市面上的CPU架构主要分为X86架构和arm架构。
intel 与 amd 厂商使用的是基于X86架构的CPU,X86架构使用的是复杂指令集即指令一步到位,而arm使用的是精简指令集即指令由几个指令完成。
X86架构性能好,但是耗电多、电压高,主要用于桌面合服务器。
然而ARM架构耗电少、电压低,但是单核性能不如X86,主要用于移动设备。
近几年来,X86架构发展迟缓,ARM架构进步显著,已经从移动设备向桌面电脑和服务器进军了。
2. 另外就是平时所说的amd64 、X86_64 与X64啥区别?
首先这些一般指的是 CPU架构,不同公司的CPU采用的架构一般不同。不同CPU采用的指令集也一般不同。
不同的公司称呼不一样,其实是一个东西,如amd64 与 X86_64 和 X64。
这个标准是amd公司制定的标准可以兼容32位,intel采用了这个标准,有时又称为intel64。
这几个名词只能叫相关。
1.Intel是个芯片公司,说白了,主业是设计并制造CPU的(当然还有别的产品,这里不表),架构是x86架构,x86_64架构,和IA64安腾架构。
2.AMD也是个芯片公司,主业除了设计CPU(AMD不流片,所以没有制造)还有设计显卡(收购的ATI),AMD设计的CPU和intel x86/x86_64系列兼容。
3.x86是Intel的概念,从8086到奔腾4,都是x86架构。AMD的K5到阿斯龙也是一样。不过x86_64其实是AMD提出来的,所以也叫amd64,目前应用广泛。Intel对应的64位是IA64,没有民用。
4.ARM可以指一家嵌入式芯片设计公司,也可以指该公司的架构,指令集和Intel/amd不兼容。另外arm还有嵌入式的GPU Mali。
5.MIPS是个指令集,应该是由英国的Imagination持有,和ARM架构还有x86架构均不兼容。
更详细的请参考
3.指令集
上面我们已经提到多种架构的CPU,常用的两类可以分为
1)Intel , amd
2)Arm
其中Intel , amd的simd指令集包括sse系列和avx系列,一般电脑使用的是intel的cpu
Arm的指令集是NEON,主要用于手机移动端
关于 sse,avx指令集的发展历史可以参考 文章
4.如何判断自己的设备cpu支持哪种指令集呢?
通过cpuz软件查看
通过下图克制,cpu是intel i7系列
支持的指令集如红框所示
5.Simd学习资源
simd指令集使用入门 https://blog.51cto.com/u_15343792/5017261
SSE指令集简介 https://blog.csdn.net/jgj123321/article/details/95633431
Practical SIMD Programming http://www.cs.uu.nl/docs/vakken/magr/2017-2018/files/SIMD%20Tutorial.pdf
SIMD的编写 https://www.jianshu.com/p/ac1cc4ebc79c SIMD指令编程demo
https://zzqcn.github.io/perf/simd_demo.html16.3 SIMD 指令集 https://cch123.gitbooks.io/duplicate/content/part3/performance/simd-instruction-class.html
一文读懂SIMD指令集 目前最全SSE/AVX介绍 https://blog.csdn.net/qq_32916805/article/details/117637192
cpu-z, simd_tutorial pdf , simd lib https://download.csdn.net/download/tywwwww/86565978
https://www.zhihu.com/question/63627218
https://juejin.cn/post/6952764346648756237