为什么要做软件迁移
图1左边是计算的技术栈,计算机是由软件和和硬件组成。下面是硬件的最底层,由物理材料、晶体管来实现门电路和寄存器,再组成CPU的微架构。上面是软件,由各种语言开发出来的程序。在中间的是CPU指令集,它是软硬件之间的接口,程序是通过指令集中定义的指令来驱动硬件完成计算。
图1右边是程序执行的过程,程序通常是由C/C++/JAVA/Python等高级语言开发,高级语言经过编译后得到汇编语言,再由汇编器生成二进制的机器码。机器码其实就是由指令和数据组成的。所以,程序要在CPU上执行,必须要使用CPU能够支持的指令。
一行简单的C/C++代码,c=a+b,分别在x86处理器和鲲鹏处理器上编译后生成的指令有很大的不同,如表1所示。
处理器 |
汇编指令 |
CPU指令 |
---|---|---|
x86 |
三条mov指令和一条add指令。 |
指令是变长的,有24位的,也有16位的。 |
鲲鹏 |
两条ldr指令将数据加载到寄存器,一条add指令完成加法运算,最后再使用str指令将结果存储到内存中。 |
指令是定长,32位的。 |
所以CPU处理器所使用的指令集的差异,决定了x86上编译后的程序无法直接在鲲鹏上运行,这就是使用鲲鹏处理器后需要做软件迁移的原因了。
父主题: 鲲鹏软件迁移概述