0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么越来越多企业正在往ARM平台迁移?

科讯视点 2020-04-22 14:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者简介:知乎大V OwlLite,中科院自动化所 模式识别与智能系统学博士,现任图像算法工程师

1.架构变迁

说到CPU架构,我们可能必然会提到CISC(复杂指令集,比如桌面端采用的X86系列)和RISC(精简指令集,比如移动端广泛采用的ARM系列)。理论上,RISC 相比于 CISC(IntelAMD) 处理器,指令译码和流水线的实现精简化,可以在芯片上使用更少的三极管,换取更多的寄存器和流水线性能 ( 多线程 / 并发能力,高吞吐 ) 。过去,由于应用主要是跑在对功耗不敏感的X86架构CPU上,人们对该架构下的应用进行了大量的优化,ARM平台的性能优势并没有充分的发挥出来。最近数年,转机出现了,ARM平台在移动端(比如手机)和物联网终端(比如家用智能设备)的大规模使用,使得对该平台算法和软件的性能优化变得越来越充分(近年来,开源社区对ARM平台的支持已经足够用户将X86应用在合理的投入下迁移到ARM平台,LLVM等基础工具大部分可以找到支持ARM平台的版本)。结合既有的并发能力优势,使得ARM 平台的服务器在一些应用场景下显得颇有吸引力。另外,对于移动应用,在云端采用ARM平台服务器,还可以做到端云同构,节省开发调试成本。

在这样的背景下,业界大厂纷纷推出ARM平台服务器CPU. ARM平台服务器CPU在云端服务器啃下一块市场也是必然。2019年,华为推出了第二代ARM平台数据中心处理器鲲鹏920芯片(预期今年推出其升级版鲲鹏930),采用7nm制程,最高支持64个内核,工作频率高达2.6 GHz,支持8通道DDR4,以及一对100G RoCE端口。并且推出就自产自销上华为云。从配置来看,其设计特别强调高吞吐能力,目前性能仍处于ARM平台服务器CPU的第一梯队。

2.为什么需要做服务迁移

越来越多的服务转向ARM云平台是一个趋势。ARM架构芯片核的面积仅为X86核的1/7,这也意味着在单位面积下,ARM可以集成更多的核心——实际数据是四倍以上。这意味着ARM架构CPU 的众核架构横向扩展的方式会更符合分布式业务的需求。如果是新的应用,可以直接选择鲲鹏云平台进行开发,充分利益ARM云平台的优势。但是当前,绝大部分云平台应用都跑在于X86架构CPU上,需要将服务进行某种形式的“重构”才能运行在ARM云平台上。其主要原因在于,用户在往ARM平台迁移时需要处理指令集上的差异,才能使得原来运行在x86架构下的程序能够平稳运行于ARM平台,完成迁移。

<指令集差异>

这些指令集的差异,使得像C/C++, Go 等编译型语言写的应用程序,需要采用ARM64(aarch64)编译器重新编译后才能运行。这是因为编译型语言先要被“翻译”成汇编,然后转换成二进制指令。而ARM平台的鲲鹏处理器和X86架构的处理器,其汇编和二进制指令不一样,导致一方的可执行程序不能直接移植到另一个平台运行。像Java, Python 等本身支持跨平台的解释型语言,如果原应用不依赖C/C++语言编译的公共组件(大部分情况下),则可以直接运行在ARM平台上。对于剩下的极少部分的汇编语言,则需使用ARM指令集改写一遍。比如在X86架构下,128位按位做and运算:

PAND xmm1 , xmm2/m128

对于ARM架构处理器,可以替换为NEON指令:

AND Vd., Vn., Vm.

<三类语言的服务迁移路径>

以上这些迁移路径说明,传统X86架构服务的迁移虽然会带来潜在的优势,但迁移也是有成本的,需要投入时间对软件/服务进行对应的更改和测试。

3.鲲鹏社区助力服务迁移

ARM平台的性能优势和特点是帮助其从巨大的云计算市场中吃下一块的基础。至于能以多快的速度吃下多大的市场,其决定性因素的可能并不是这些架构和制程决定技术优势,而是用户的选择,具体地,也就是用户的迁移成本相对于可能带来的优势的比较——如果只需要修改少量的代码就可以将服务转换到支持更高并发的ARM云平台上,这对于那些对吞吐量尤其敏感的后端服务来说,何乐而不为呢。

为了降低用户的迁移成本,华为花费了相当的力量建设了华为云学院和鲲鹏社区,指导和帮助用户进行应用迁移方面的工作。并且推出了鲲鹏开发套件(包括扫描评估工具Dependency Advisor, 迁移工具Porting Advisor, 和性能优化工具Tuning Kit https://support.huaweicloud.com/ug-pa-kunpengdevps/kunpengpt_06_0004.html)帮助用户评估工程的可移植性,检查用户软件 C/C++ 源码,识别需要修改的部分并提供修改建议和性能调优。而且这些内容中的绝大部分对用户来说是免费获取的。在注册华为云之后,用户可以在华为云端实验室(https://lab.huaweicloud.com/)免费使用华为云资源(ECS等)进行应用往ARM云平台迁移的实验。

以相对更耗时更复杂的C/C++应用迁移为例,可选择云端实验室中的“通过鲲鹏工具链将X86 C/C++代码迁移到鲲鹏平台”实验进行体验。用户在该实验中首先预置实验环境,免费获取实验所需的鲲鹏ECS、EIP, VPC, 安全组等资源(可以通过开发者免费试用区https://activity.huaweicloud.com/free_test/index.html?#individual 获取更多更长时间的资源试用)。

然后可以依照提示,在网页端中通过公网EIP登录分配的ECS之后,修改教程中提供的C/C++应用包的编译脚本和相关代码段,重新编译即可完成安装、验证和测试。

<实验体验环境>

4.服务迁移实战

在上文的体验例子中,可以完整的经历如下典型的C/C++工程迁移过程的关键部分:

包括修改编译脚本;修改宏定义,增加aarch64 架构的宏定义;修改编译宏分支,确保 aarch64 架构下使能 SIMD 的 NEON 特性;修改aarch64 架构下的内联汇编指令;重新编译源码并安装测试。

对于C/C++工程迁移的鲲鹏ARM平台移植,可能会碰到如下的典型问题:

1.编译时gcc参数设置需要调整,这方面的问题可以参考gcc官方文档(https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html)

2.编译时找不到函数、缺少库文件等。可以通过安装鲲鹏ARM平台兼容的依赖库来解决。目前来看,随着ARM平台的发展,这种情况下的问题解决不了的可能性越来越小。如果你的C/C++工程本身是在Linux平台编写/编译的,那这种情况还会相比于从windows平台迁移少很多

3.开源项目库不支持 ARM 架构,这种情况较就更少了,一般发生在较旧的项目代码。面对这种情况可能不得不寻找替代组建或者修改自己的代码以消除依赖。

4. 编译时提示代码错误,比如在上面的体验例子中如果不修改相关类型的宏定义就会出现,解决方法于上面体验例子中类似。

5. 需要重写内联汇编语句,如上文所述,这是由于ARM与X86架构指令集不同导致的。可能需要使用ARM指令修改每一条相关代码才能解决。

至于云端常见但由于Java的跨平台性,迁移更为容易的Java Web应用,可以通过云学院提供的“基于华为云鲲鹏弹性云服务器部署Web应用”教程体验,其过程中不涉及对代码的修改,这类应用的迁移相比于C/C++类应用要容易得多。

对于将软件迁移到ARM平台来说,大部分情况下只要建立软件开发编译环境-编译软件-出现错误-修复bug的流程就可以解决问题,这跟很多人碰到过的将Windows平台软件迁移到Linux平台运行差不多。对于更复杂的应用软件,比如数据库、翻译程序,可能需要修改汇编语言。当然现在很多数据库采用的是开源软件的或者本身支持多平台的软件,这类问题也变得越来越容易解决。

当然,实际的业务迁移到鲲鹏ARM云平台,涉及的程序语言和软件依赖会相当复杂。比如某大叔据搜索系统的业务软件栈:

这里的mysql, redis, Apache和Hadoop都可以通过鲲鹏代码迁移工具找到鲲鹏ARM平台兼容的版本,其迁移自然不是问题。对于其他暂不兼容的,比如kudu, Impala和Ceph,其官方发布已经提供了完整的或者大部分功能的aarch64平台支持(https://issues.apache.org/jira/browse/KUDU-3007, https://issues.apache.org/jira/browse/IMPALA-9376), 如果升级到支持aarch64的新版后调试通过,那移植到aarch64平台也不会有问题。对于剩下的不兼容的,则需要找替代或者修改代码了。

从上面的实例可以看出,如果你的业务软件栈大量采用开源软件并且保持了版本的更新(大家都意识到aarch64平台变得越来越流行,需求越来越多,顺势推出了该平台的版本),那么迁移的成本就会比较低。相反,如果采用了较老的软件或者不支持aarch64的商业软件,那就需要花费比较多的精力,甚至不得不采取绕过依赖的方案。这也就意味着,仅从实际业务软件栈的情况来看,就有部分业务并不适合迁移,企业需要根据自己的实际情况量力而行。因此,企业业务迁往ARM云平台虽然是一个趋势,但X86云平台在未来相当长一段时间并不会消失,而是会继续占有相当的市场,与ARM云平台并驾齐驱。

鲲鹏开发者系列课程传送门在此,良心知识不付费,参与回帖互动还有奖品拿,吐槽建议都阔以:http://suo.im/5X8M85

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么越来越多企业选择虚拟调试?一文看懂 fe.screen-sim 的价值!

    前言随着自动化产线系统复杂性的不断提升,传统的线性开发与现场调试模式正面临效率瓶颈。如何在项目早期就完成控制逻辑验证、流程协同与风险识别,已成为制造企业提升交付质量并加快交付节奏的关键挑战。虚拟
    的头像 发表于 11-07 10:28 189次阅读
    为什么<b class='flag-5'>越来越多</b><b class='flag-5'>企业</b>选择虚拟调试?一文看懂 fe.screen-sim 的价值!

    为什么越来越多的场所选择智能闸口控制系统?它有哪些优势?

    在物流行业快速发展的今天,传统人工闸口已难以满足高效通行的需求。智能闸口控制系统凭借AI、物联网等先进技术,正逐渐成为港口、物流园区、海关等场所的首选方案。那么,智能闸口究竟有哪些优势,让越来越多
    的头像 发表于 08-14 10:56 311次阅读

    为什么越来越多政府单位用上了国产云终端?它比你想的更能打

    国产化进程不断加速,越来越多政府单位在信息化升级中将目光投向更轻巧、安全的国产云终端。在配合云桌面系统后,它的安全性、运维效率上更胜一筹。国产电脑vs非国产化电脑:安全性与政策导向过去,我国电脑长期
    的头像 发表于 06-13 11:34 828次阅读
    为什么<b class='flag-5'>越来越多</b>政府单位用上了国产云终端?它比你想的更能打

    国产地物光谱仪为什么越来越多被科研团队选择?

    地物光谱仪为什么越来越多地被科研团队选择?原因并不复杂,但值得细讲。 一、性能接近国际主流,满足科研需求 国产地物光谱仪在核心技术上,近年来取得了质的进步: 1. 波段范围齐全 常规科研所需的 350–2500nm全波段 (覆盖可见光、近红外、短
    的头像 发表于 06-10 15:44 424次阅读
    国产地物光谱仪为什么<b class='flag-5'>越来越多</b>被科研团队选择?

    从Keil MDK到IAR EWARM:通过工程迁移实现项目资产的更好管理

    对于需要统一开发环境或涉及多核架构(如Cortex-A/R)的项目,越来越多的用户选择从Keil MDK迁移到IAR EWARM。这就会面临着需要将之前的Keil MDK工程迁移到IAR EWARM的问题。本文将介绍如何高效完成
    的头像 发表于 05-08 09:03 998次阅读
    从Keil MDK到IAR EWARM:通过工程<b class='flag-5'>迁移</b>实现项目资产的更好管理

    Arm助力开发者加速迁移Arm架构云平台 Arm迁移资源分享

    随着基于 Arm 架构的云实例日益扩展,越来越多的用户正从传统平台迁移Arm 平台上。
    的头像 发表于 04-09 18:23 1020次阅读

    使用智能工具简化向Arm平台迁移过程

    今年二月,Arm 推出了 GitHub Copilot 新扩展程序,助力快速迁移Arm 架构服务器。本文将带你了解开发者该如何利用 GitHub Copilot 和 Arm Run
    的头像 发表于 03-10 09:22 649次阅读
    使用智能工具简化向<b class='flag-5'>Arm</b><b class='flag-5'>平台</b>的<b class='flag-5'>迁移</b>过程

    为什么聊自动驾驶的越来越多,聊无人驾驶的越来越少?

    和自动驾驶有什么区别?为什么现在一直都在聊自动驾驶,却鲜少有企业提无人驾驶?今天智驾最前沿就围绕这个话题和大家简单聊聊。 自动驾驶和无人驾驶有什么关联? 人们对于自动驾驶汽车的梦想其实已经有近一个世纪了,普遍被人认可
    的头像 发表于 02-23 10:52 1006次阅读
    为什么聊自动驾驶的<b class='flag-5'>越来越多</b>,聊无人驾驶的<b class='flag-5'>越来越</b>少?

    芯盾时代助力企业应对远程办公安全挑战

    近年来,远程办公从企业的应急方案逐步转变为常态化选择,越来越多企业借助远程办公提高业务效率、拓展业务场景、丰富业务形态,越来越多的打工人选择在各种地点,用各种设备、网络接入
    的头像 发表于 02-12 11:37 893次阅读
    芯盾时代助力<b class='flag-5'>企业</b>应对远程办公安全挑战

    Arm与RISC-V架构的优劣势比较

    ,RISC-V的缺点在于它的“新”。虽然越来越多的供应商开始接纳RISC-V的生态系统,但能够为此提供全方位支援的供应商却为数不多。因此,在未来相当长一段时间内,供应商依赖问题可能会是不容忽视的挑战。
    发表于 02-01 22:30

    企业AI模型托管怎么做的

    当下,越来越多企业选择将AI模型托管给专业的第三方平台,以实现高效、灵活和安全的模型运行。下面,AI部落小编为您介绍企业AI模型托管是怎么做的。
    的头像 发表于 01-15 10:10 725次阅读

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    本帖最后由 HarmonyOS开发者社区 于 2025-1-3 15:41 编辑 随着HarmonyOS NEXT的发布,越来越多的应用加速推进鸿蒙化。在这一过程中,如何高效迁移原有资产、简化
    发表于 01-02 17:08

    AI Agent智能体平台:如何助力实现从制造到“智造”的飞跃?

    智能体平台技术作为制造业转型升级的重要推动力量,正在越来越多企业带来显著的效益和价值。通过引入智能体平台技术,
    的头像 发表于 12-26 14:21 1545次阅读

    为什么开发者都Arm平台迁移

    开发者深知,构建既能高效扩展又能控制成本的应用至关重要。云技术日新月异,其背后的技术也在不断发展。近年来,越来越多的公司意识到,将其应用从 x86 架构迁移Arm 架构能够带来诸多优势。A
    的头像 发表于 12-17 10:19 821次阅读