- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?
?
上云实践:从X86到ARM,跨越CPU架构鸿沟
?
?
1、概述
随着IT技术的不断演进,公有云、专属云、混合云、云原生等相关技术概念层出不穷,云计算已经有了广泛应用,成为数字经济、政企数字化转型的新型基础设施。在云计算时代,由于功耗低、高性能以及指令集的优势,越来越多的云厂商开始选择基于ARM体系来构建云服务。从AWS发布的Graviton2,到Apple的M1芯片,到中国电子云十年磨一剑的“PK架构”,再到华为鲲鹏体系,ARM体系成为了未来的趋势方向。对于企业数字化转型来说,应用上云是必经之路。从狭义来说,上云是将运行在物理机上的应用系统搬迁到云上。从广义上看,上云会涉及到跨架构适配、虚拟化、容器化、云原生等一系列的技术升级和重构。上云的不同阶段,所依赖的技术并不同。从左至右,应用对云的依存度也越来越高。? ? ? ? ? ? ? ? ? ? ? ? ? ??下文对几个阶段涉及到的技术做简单阐述。
阶段1:跨架构适配
传统应用大部分是基于X86架构来开发和运行。面对ARM架构越来越流行的今天,越来越多的云计算厂商开始围绕ARM架构构建云应用生态。并据此引发了大量的适配测试需求。X86和ARM体系架构的差异对于应用有哪些影响?X86应用向ARM体系迁移会碰到哪些技术难题?对于不同编程语言实现的应用来说,迁移的难度是否有区别?本文将针对以上问题开展分析。
阶段2:虚拟化
计算虚拟化能力是云计算提供的核心能力。截至到今天,很多行业用户的上云还是停留在这个阶段。虚拟化的最大用途是使得应用与物理机器解耦,将资源池化,按需分配资源,并因此获得弹性伸缩和迁移能力。这个阶段的上云,往往会涉及到P2V和V2V这两种主要场景。前者是从物理机向虚拟机迁移(Physical to Virtual Migration)),后者是虚拟化的跨云迁移(Virtual Machine to Virtual Machine)。
阶段3:容器化
容器化是将应用程序及其所需的库、框架和配置文件打包在一起的过程,以便可以在各种计算环境中高效运行它。得益于Docker等技术的流行,应用容器化更进一步促进了应用的配置、依赖以及镜像的标准化,使得应用交付、运维等领域有极大的提升。这个阶段的上云,对于软件开发过程有一定的要求,需遵循相应的容器化规范。
阶段4:云原生
云原生时代的到来,是容器化后的必然阶段。通过Kubernetes、devops、微服务等技术的不断发展,尤其是对有状态应用支撑能力的不断增强,云原生已然成为新一代应用开发的事实标准。技术的发展有天才工程师的灵光一现,其背后同样也需要遵循客观自然规律。下文将从阶段1入手,尝试从底层技术进行解构,或许能帮助我们更清晰的看到本质。
2、跨越CPU架构
纵观计算机技术的发展史,软件系统是一个不断抽象,不断叠加的过程。操作系统的出现,解决的是单机硬件多样性的难题,为上层应用软件提供一致的底层运行环境。云计算的出现,解决的是分布式架构引入的多样性问题,为应用提供跨机器、跨地域的一致运行环境。我们先从CPU指令集的差异对比开始。
2.1 CPU指令集对比
在计算机体系结构的发展过程中,诞生了CISC(复杂指令集)和RISC(精简指令集)这两大流派,它们采用了不同的设计理念和方法,CISC采用单条复杂指令完成特定复杂功能,提高了存储器访问效率;RISC则采用多条精简短指令完成特定复杂功能,提高了处理器运行速度。基于这两类指令集,产生了两种主流的CPU架构:X86架构,采用的是CISC复杂指令集,而ARM架构则采用了RISC精简指令集。CISC指令集指令系统庞大,指令数目、指令格式和寻址方式复杂,指令字长不固定,各种指令执行周期和访问频率相差很大,采用微指令码控制单元的设计。RISC指令集选取使用频率最高的精简指令,避免复杂指令,将指令数目、指令格式和寻址方式种类减少,指令长度固定,大多数的指令都可以在一个机器周期里完成。以控制逻辑为主,不用或者少用微指令码控制。
2.2对应用迁移的影响
应用本质上是一种程序,程序在运行态是由一系列进程组成,而进程可以说是计算机科学最重要和最成功的概念之一。进程的运行依赖操作系统对CPU、内存的调度和管理,操作系统保持跟踪进程运行所需的所有状态信息。比如寄存器、PC计数器、逻辑单元ALU等。综合来说,X86 和ARM属于不同的架构。X86属于复杂指令集,而ARM属于精简指令集, X86 上的程序根本不可能毫无阻碍地就可以在ARM上使用,必须经过适配迁移。从另外的角度来看,应用选择不同的编程语言,会有不同的跨架构能力。下面分析下主流的C++和Java应用在不同架构下的差异表现。
2.3.1 C/C++语言
众所周知,C/C++程序是计算机系
您可能关注的文档
最近下载
- 古代汉语讲义(下).doc VIP
- 六三制新青岛版五年级科学上册全一册全部课件(一共25课时).pptx
- NB∕T 32035-2016 光伏发电工程概算定额.docx
- 精神科医疗pdca案例.pdf VIP
- 第二单元第2课《心灵的色彩》课件2024人美版初中美术七年级上册.ppt
- 2022年中小学心理健康课程标准.pdf
- 人教版(2024)七年级生物上册课件 2.1.1 藻类、苔藓和蕨类植物.pptx VIP
- 人教版五年级数学上册期中质量监测卷(无答案)(7).docx VIP
- 暨南大学硕士研究生入学考试《353卫生综合》近5年(2017-2021)真题.pdf
- 郭锡良古代汉语详细知识点总结.pdf VIP
文档评论(0)