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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    快问快答:为什么越来越多制造企业在选型气密仪时,更看重源头实力厂家?

    、密封性能,更直接影响良率、返修率、售后成本以及品牌口碑。汽车车载摄像头四通道气密仪也正因为如此,越来越多企业在选择气密性检测仪时,已经不再只盯着参数表上的几个数字,
    的头像 发表于 04-22 16:16 45次阅读
    快问快答:为什么<b class='flag-5'>越来越多</b>制造<b class='flag-5'>企业</b>在选型气密仪时,更看重源头实力厂家?

    为什么AI数据中心越来越依赖电流监测?

    随着人工智能技术的快速发展,算力需求正在以前所未有的速度增长。从大型语言模型到多模态AI,再到智能体系统,越来越多的应用开始依赖高性能计算平台。 最近一段时间,围绕AI智能体(AI Agent
    的头像 发表于 03-11 14:07 187次阅读

    快问快答:为什么越来越多海外客户选择中国国产气密性检测品牌?

    如果把时间拉回十年前,「中国检测设备」在海外市场常被贴上几个标签:•成本导向•用于辅助或低端环节•难以长期稳定运行而今天,越来越多海外客户正在主动指定或优先评估中国气密性检测品牌。这种转变,并非偶然
    的头像 发表于 02-27 11:54 371次阅读
    快问快答:为什么<b class='flag-5'>越来越多</b>海外客户选择中国国产气密性检测品牌?

    为什么原厂越来越需要一套自己的 Studio

    从工程现实看: 芯片型号会持续增加 工程人员会流动 文档会不断修订 而 Studio: 可以承载长期演进的配置体系 可以降低对个别专家的依赖 可以让新型号的接入成本持续下降 这也是为什么,越来越多
    发表于 02-05 09:37

    智慧水务为什么越来越多项目选择 BL118|水务物联网边缘计算方案解析

    智慧水务,为什么越来越多项目选择 BL118? ——基于钡铼技术 BL118 的水务物联网采集与边缘计算方案 过去,水厂、管网、泵房的运维大多依赖人工巡检。流量、压力、水质、液位是否异常?只能靠现场
    的头像 发表于 01-22 15:00 256次阅读
    智慧水务为什么<b class='flag-5'>越来越多</b>项目选择 BL118|水务物联网边缘计算方案解析

    大数据平台运营的基础是什么

    在数聚股份看来,越来越多企业开始搭建自己的大数据平台体系,并倾注大量资源用于平台的迭代和运营。那么大数据平台作为
    的头像 发表于 12-23 16:07 345次阅读

    无质量损失的数据迁移:Nikon SLM Solutions信赖3Dfindit企业

    Nikon SLM Solutions使用CADENAS解决方案迁移了8600多个零部件并优化了设计工程流程 Nikon SLM Solutions公司依靠3Dfindit企业版实现了高效、高质量
    发表于 11-25 10:06

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

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

    FPGA技术为什么越来越牛,这是有原因的

    最近几年,FPGA这个概念越来越多地出现。例如,比特币挖矿,就有使用基于FPGA的矿机。还有,之前微软表示,将在数据中心里,使用FPGA“代替”CPU,等等。其实,对于专业人士来说,FPGA并不陌生
    的头像 发表于 08-22 11:39 5212次阅读
    FPGA技术为什么<b class='flag-5'>越来越</b>牛,这是有原因的

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

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

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

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

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

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

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

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

    AI时代企业需要怎样的数据存储

    随着 DeepSeek 等新一代开源大模型的发布,AI 变得越来越智能,使用更少的资源就能够创造更高的应用价值,越来越多企业正在由内而外、由浅入深地部署各种 AI 应用。从更大的视
    的头像 发表于 05-07 14:41 1388次阅读
    AI时代<b class='flag-5'>企业</b>需要怎样的数据存储