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

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

3天内不再提示

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

科讯视点 2020-04-22 14:13 次阅读

作者简介:知乎大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

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

    评论

    相关推荐

    越来越多的领域都用到了USB频谱仪

    科技是不断进步的,越来越多的领域都用到了USB频谱仪。一款值得信赖的产品。
    的头像 发表于 05-07 15:28 216次阅读
    <b class='flag-5'>越来越多</b>的领域都用到了USB频谱仪

    越来越多的领域都用到了USB频谱仪

    usb频谱仪
    puxincy
    发布于 :2024年05月06日 10:07:54

    随着非车规器件在汽车上泛滥FPGA会不会越来越多的出现在汽车上?

    随着非车规器件在汽车上泛滥FPGA会不会越来越多的出现在汽车上?
    发表于 04-23 14:50

    分布式运维管理平台在跨地域企业中的部署与运维案例

    一、案例背景 随着全球化进程的加速和市场竞争的加剧,越来越多企业开始拓展跨地域业务,形成多分支机构、多数据中心的运营模式。然而,这种跨地域运营模式也给企业的运维管理带来了极大的挑战。为了解决这些
    的头像 发表于 03-26 16:11 211次阅读

    为什么越来越多企业会用到 NTP网络时间服务器

          越来越多企业使用 NTP网络时间服务器 是为了确保其计算机网络中的所有设备都具有精确的时间。网络 时间服务器 是一种网络设备,它通过从原子钟等准确时间源获取时间信号并向网络中的设备广播
    的头像 发表于 01-23 14:17 210次阅读
    为什么<b class='flag-5'>越来越多</b>的<b class='flag-5'>企业</b>会用到 NTP网络时间服务器

    国产网卡为什么受到越来越多企业青睐了?

    国产网卡同样取得了优异成绩,并已成为众多企业的重要选择。相比于使用进口芯片开发的网卡,国产网卡对本土企业来说可谓独具优势
    的头像 发表于 01-07 10:27 279次阅读

    32位单片机越来越多人用?简单跟上科技趋势

    32位单片机在电子产品中的应用越来越广泛。那么,为什么这么多人使用32位单片机呢?本文将对此进行分析,并对8位、32位和合封单片机进行优先级排序。
    的头像 发表于 09-21 15:14 660次阅读

    从电源架构迁移ARM的应用说明

    本文档的目的是强调那些参与将软件应用程序从Power架构迁移ARM平台的人员感兴趣的领域。 本文并不试图将一种体系结构提升到另一种体系结构之上,只是为了清楚地解释将现有软件应用程序从一种体系结构
    发表于 08-22 06:09

    自研域控制器的路线,正在越来越多车企选择

    一个功能、一个电子部件,ECU就要增加一个,而每个ECU都需要通过CAN总线和LIN总线连接在一起,系统越来越复杂。于是为了解决这个问题,行业内开始将汽车的各个部分ECU,分成几个域,用几个域控制器分别代替这几个域的多个ECU,来降低系统复杂度
    的头像 发表于 08-21 01:44 1663次阅读

    ARM基础系统架构1.0C平台设计文档

    相互竞争的业务压力。它提供了广泛的功能,例如高级SIMD和浮点支持,以及TrustZone系统安全技术,以解决越来越多的问题。它还提供了灵活性,通过去除成本敏感实现中的硬件功能。 Arm处理器内置
    发表于 08-09 06:39

    为什么越来越多的大厂选择柔性制造?

    的自适应和自动化,提高生产效率和产品质量。在当今增量市场往存量市场发展的大背景下,受到了越来越多企业尤其是行业头部企业的青睐。
    的头像 发表于 08-02 16:19 573次阅读
    为什么<b class='flag-5'>越来越多</b>的大厂选择柔性制造?

    如何将项目从Arm Compiler 5迁移Arm Compiler 6

    按照本教程中的步骤,将现有的Arm Compiler 5裸机项目迁移Arm Compiler 6裸机项目。完成迁移后,就可以重新构建您的可执行并在DS-5提供的固定虚拟
    发表于 08-02 14:42

    为什么越来越多的开发选择单芯片解决方案呢?单芯片的优势你了解吗?

    芯片嵌入式物联网STM32
    学习电子知识
    发布于 :2023年08月02日 12:39:50

    为什么越来越多企业选择使用光学对位BGA返修台?

    在当今的电子制造业中,光学对位BGA返修台已经成为必不可少的工具。这种设备不仅能提高生产效率,还能在返修过程中确保产品质量。这就是为什么越来越多企业选择使用光学对位BGA返修台。 光学对位BGA
    的头像 发表于 07-20 15:15 365次阅读
    为什么<b class='flag-5'>越来越多</b>的<b class='flag-5'>企业</b>选择使用光学对位BGA返修台?

    相较投影、拼接屏,为什么越来越多人选择LED一体机开会?

    ,带动了会议类相关产品的增长。其中,投影、拼接屏、LED一体机三大品类受到市场关注,LED一体机更是成为越来越多企业的选择。 那么,LED一体机、投影、拼接屏这三者到底有何区别?为什么当下越来越多
    的头像 发表于 07-03 15:59 488次阅读
    相较投影、拼接屏,为什么<b class='flag-5'>越来越多</b>人选择LED一体机开会?