鲲鹏应用开发——代码归一

网友投稿 698 2022-05-30

鲲鹏920系列芯片概览

鲲鹏920提供强大的计算能力,基于华为自研的具有完全知识产权的ARMv8架构,最多支持64 Core。

通过片间Cache一致性接口Hydra可扩展系统核数,最多支持到256 Core,形成性能超强的板级计算节点。

支持CPU Core虚拟化、内存虚拟化、中断虚拟化、IO虚拟化等多项虚拟化等技术,使得系统的资源共享更加灵活、系统的迁移过程变得相对简单。

鲲鹏920具有丰富且强大的I/O能力。集成以太网控制器;提供SAS控制器;集成PCle控制器。

芯片集成安全算法引擎、压缩/解压缩引擎、存储算法引擎等加速引擎进行业务加速。

高性能、高集成、异构加速

高集成,高能效

最强算力的产品必须要有最强劲的处理器。

鲲鹏处理器采用了多合一的SoC芯片架构,它不仅仅是一颗CPU,还集成了RoCE网卡、SAS控制器、桥片等,单颗处理器实现了4颗芯片的功能,以一当四!可有效提升主板的集成度,使服务器的体积更小,算力密度更高、功耗更低。

华为研发的Cache一致性总线HCCS,可以实现CPU和CPU之间的高速互联,通信速率高达每秒30GT,是业界主流CPU互联速率的2倍多。通过多CPU互联,我们率先实现256个物理核的NUMA架构,从而推出业界首款兼容ARM的最强算力4路服务器

当前处理器一般通过与外置网卡配合为服务器提供10GE、25GE的接口,在分布构下,要完成一个高算力的集群组网尔f奥R100GE成为服务器的标准配置。从个推出内置直出100GE网络能力的通用处理器,让100GE成为服务器的标准配置。从处理器到服务器,扩展到整机柜和计算集群,实现全100GE的高速网络互联,引领服务器迈入100GE时代,构建最强算力的集群。

更安全:鲲鹏加速引擎,数据安全加解密

鲲鹏应用开发代码归一问题

鲲鹏服务器底层芯片架构和传统x86芯片有差异,业务软件迁移过程中要对代码进行适配修改。修改后的代码可能会维护2个代码分支,增加了后期代码维护成本,这种方法是不可取的。将2个分支的代码合一到一套代码的过程称为代码归一。

代码归一有三种方式实现:

代码段编译宏控制

编译文件Makefile控制

鲲鹏应用开发——代码归一

运行态自动适配

解释型语言编译后生成平台无关的中间代码文件(例如,Java代码编译后会生成.class

文件,python代码编译后会生成.pyc文件),由虚拟机解释执行,虚拟机完成平台差异的屏蔽,所以基于解释型语言开发的应用程序,与底层芯片架构无关的,无须迁移可以将同一套代码放在鲲鹏和x86服务器上运行。

基于编译型语言开发的应用程序,其编译后得到可执行程序,可执行程序执行时依赖的指令是芯片架构相关的。因此,软件迁移后鲲鹏架构上的代码和x86架构的代码会不一致,代码归一需要使用合适的措施隔离不同架构代码,后面我们以编译型语言代表C/C++语言为例,分别从代码片段和文件两个方面说明归一方法。

代码段编译宏控制

通过编译宏控制是C/C++中较为通用的代码片段隔离方法,同样适用于不同芯片架构中的代码归一。一般方法是,在代码中用不同的宏将对应芯片的代码包含起来,在编译时选择或者自动识别选用的宏类型,如果不是被启用的宏,其代码就不会被编译。

方法一:使用GCC预定义好的通用宏。C/C++语言中通过条件编译#ifdef,#endif 等关键词实现将代码块编译区分,示例代码中采用了_x86_64_宏控制x86环境下运行的代码,采用了_aarch64_宏控制ARM环境下运行的代码,这两个宏是GCC预定义好的通用宏,GCC根据编译所在服务器的架构自行激活对应的宏,用户无需定义,使用比较方便。

方法二:自定义宏,通过编译命令行带入传递到代码编译中。如,gcc通过添加–DDEFINES或 -DDEFINES=CONDITION参数来定义用户的宏。

编译文件Makefile控制

如果业务代码中涉及不同架构的代码较多,使用代码片段隔离方式操作繁琐,易读性差,推荐将统一架构相关的代码放到同一个文件中,使用文件隔离的方式并采用makefile分文件编译方式实现代码归一。

如果使用make x86执行的为x86平台编译,如果执行make kunpeng,执行的为kunpeng平台编译

可以使用shell脚本配合makefile的方式来实现自动识别芯片架构类型并执行不同的编译命令,高效且不易出错

运行态自动适配

上层业务代码如果要根据不同的芯片类型设置不同的参数,或者走不同的代码逻辑路径,可以通过实时查询芯片类型来判断,这样代码实现了自动适配芯片类型。与编译宏控制方法的区别是,这类代码和编译无关,不同芯片架构都可以编译。

ARM 鲲鹏

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从零开始学习python | 通过示例学习如何制作Python模式程序
下一篇:实现持续、快速迭代 华为“扫除”云帆科技互联网政务软件开发痛点
相关文章