InfoQ|这篇文章给你答案,为什么必须将代码从x86迁移到ARM

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