「BAT」为什么必须将代码从 x86 迁移到 ARM?


「BAT」为什么必须将代码从 x86 迁移到 ARM?
文章图片
「BAT」为什么必须将代码从 x86 迁移到 ARM?
文章图片
「BAT」为什么必须将代码从 x86 迁移到 ARM?
“我们非常希望 ARM 和鲲鹏的生态能成为下一个计算产业迭代的方向 。 ”在 6 月 8 日于成都举办的华为 DevRun 开发者沙龙——四川鲲鹏开发者嘉年华上 , 华为鲲鹏计算产业开源与生态营销总监梁冰对计算产业未来展望道 。
新基建风口下 , 算力一跃成为了新的生产力 , 云、AI 与 5G 则是新的生产工具 , 技术聚变将引发商业裂变 , 带动各行各业的数字化快速发展 。 基于 5G 等新兴技术的创新应用催生多样化算力的需求 , 市场既需要通用计算算力也需要异构计算算力 。 此外 , 摩尔定律的逐渐放缓 , 让算力和性能陷入一系列发展瓶颈 , 市场对创新架构的需求日益加深 , 计算平台的创新之战一触即发 。
在此背景下 , x86 架构的不足越发明显 , 功耗大、通用寄存器数量少、计算机硬件利用率低、寻址范围小等问题凸显 , 难以跟上算力发展的速度 。 与此同时 , ARM 架构在移动互联网盛行的当下却开始焕发出别样的生命力 。
“基于 ARM 架构来设计的鲲鹏 , 其成功的前提是早早地便看到了未来计算机算力架构的迭代之路 。 对华为来说 , 不光要在中国携手合作伙伴共建鲲鹏生态 , 为更多企业带来价值 , 更为重要的是要融入全球 ARM 的生态 , 共同推进 ARM 进阶为下一代计算机平台的实施标准 。 ”梁冰对鲲鹏生态的意义阐述道 。
从 x86 迁移到 ARM 架构的过程并不简单 , 本次活动中 , 华为鲲鹏计算专家对于鲲鹏软件迁移路径也进行了非常全面细致的讲解 , 同时针对软件迁移过程中可能遇到的问题及解决方案也进行了相关讲解 , 还为现场开发者设置了实操演练环节 , 一对一指导下进行鲲鹏软件迁移线上实验 。
从 x86 向鲲鹏迁移的必要性
众所周知 , 计算机是由软件和硬件组成的 , 上层的软件是通过指令集驱动下层的硬件 , 软件想要跑在 CPU 上的话 , 那它必须要有对应的指令集 。
如上图所示 , 整个计算机的计算基础架构 , 从底层的晶体管、物理原材料 , 二极管也就是逻辑门电路 , 到往上走的微架构、自评级架构 , 再往上面走就到了操作系统所完成的二进制机器译码汇编高级语言、JavaC 等等 , 整个技术站从复杂到抽象 , 技术语言也从经历一个简单的交换指令发展为汇编进行访存和锁存 , 再到形成机器码 , 这个过程中最核心的变化在指令集上 。
想要成功运行 , 底层计算平台就必须能够支持该 CPU 的指令才可以 , 这也是在 x86 和鲲鹏编译的不同之处 。
如上图所示 , x86 和鲲鹏使用的指令是不一样的 , 简单来讲 , 在鲲鹏上使用的是精简指令集 , 而在 x86 上使用的是一个复杂的指令集 。 综合来讲 , 它有三点主要的差异:

  • 架构差异:x86 和鲲鹏处理器 (aarch64) 属于不同的架构 。
  • 指令集差异:x86-- 复杂指令集 , 鲲鹏处理器 – 精简指令集 。
  • 向量寄存器差异:x86 和鲲鹏处理器使用向量寄存器不同 , 向量指令集也存在差异 。
从这三点出发 , 一个在 x86 上运行的程序根本不可能毫无阻碍地就可以在鲲鹏上使用 , 必须经过编译 , 同时也证明了迁移的必要性 。
迁移的五个步骤