前言 在企业级的桌面和服务器软件开发中,基于x86架构的硬件平台占有绝对的统治地位,而这个架构被Intel和AMD公司事实上垄断了,要想抛开x86架构找到一条新的出路非常困难。但是,移动计算的兴起使开放的ARM架构得到了飞速发展,并且延伸到了服务器领域,近年来,世界上有不少公司推出了兼容ARM架构的服务器处理器,而华为公司的鲲鹏处理器无疑是其中的佼佼者。 鲲鹏处理器是鲲鹏架构中的关键一环,除此之外,还有鲲鹏主板、鲲鹏服务器、操作系统、兼容的软硬件、鲲鹏社区、鲲鹏合作伙伴及各地的鲲鹏创新中心,这些元素共同构成了完整的鲲鹏生态链,使得我们在x86架构以外,有了可以选择的余地。 但是,应该理性地看到,鲲鹏架构还是一个很新的架构,从业的人员和企业也比较少,在软件生态上与x86架构相比还有较大的提升空间。同样的原因,鲲鹏架构的学习资料也比较欠缺,特别是系统性介绍鲲鹏架构、适合初学者入门、实战的书籍很难找到。笔者因为工作原因有比较丰富的鲲鹏架构实战经验,负责开发的几款软件产品先后通过了鲲鹏云服务兼容性认证及泰山服务器的兼容性认证,同时主持了华为公司合作伙伴的申请,成为认证的华为云鲲鹏凌云伙伴、华为云解决方案伙伴、华为鲲鹏展翅伙伴计划的ISV伙伴,在此期间,个人也通过了华为的HCIAKunpeng Application Developer认证。在收到了清华大学出版社的鲲鹏书籍编写邀请后,很荣幸地承担了本书的编写工作,把自己在鲲鹏学习、开发、实战中的一点点经验写在书里,希望能帮助更多的人了解鲲鹏、支持鲲鹏、使用鲲鹏,也希望有更多的公司加入鲲鹏生态,一起把鲲鹏产业做大做强。 本书内容偏重实战,大部分章节都有实际操作的脚本或者代码,这些代码一般比较简单,很容易看懂,只有在最后一章的兼容性认证实战部分,代码才稍微复杂一些。需要说明的是,鲲鹏架构本身也在快速进化中,书中介绍的一些内容,例如鲲鹏开发套件,可能会随时有所变化,读者在阅读本书时需注意对应的版本。 2020年注定是不平凡的一年,疫情改变了很多人的生活习惯,也改变了人们看待事物的方式。同样,在科技领域发生的种种事件,也让我们明白了科技自立自强的重要性,代表了中国ICT领域最高成就的华为公司,在承受着极大压力的时候,依然坚强屹立,点亮了满天星光,希望华为公司能克服困难,化鲲为鹏,扶摇直上九万里,依然引领相关科技领域的发展。 本书主要内容 第1章介绍什么是指令集架构及鲲鹏芯片的历史。 第2章讲解基于鲲鹏架构的硬件生态,包括基础的CPU、主板及最终的服务器和PC。 第3章系统讲解鲲鹏架构的软件生态,包括兼容鲲鹏架构的软件栈、线上鲲鹏架构交流的鲲鹏论坛、提供鲲鹏资源的鲲鹏云服务及各地的鲲鹏创新中心。 第4章介绍获取鲲鹏硬件资源的方式及安装鲲鹏软件环境的方法,编写第一个鲲鹏程序。 第5章详细论述应用从x86架构迁移到鲲鹏架构的原因和方法,并给出具体的迁移实例。 第6章介绍鲲鹏分析扫描工具的用法,演示如何对需要迁移的对象进行分析扫描。 第7章主要讲解鲲鹏代码迁移工具的用法,该工具可以针对需要迁移的代码给出迁移建议,从而大大加快迁移进程。 第8章介绍鲲鹏性能分析工具的用法,该工具可以采集鲲鹏架构下应用的性能数据,并对此进行分析,最终给出优化的思路和建议。 第9章讲解如何利用鲲鹏架构自身的特点,对基础软件进行深度性能优化。 第10章介绍针对鲲鹏架构做了定制和优化的各种编译器。 第11章主要介绍无须重新编译就可以在鲲鹏架构运行x86应用的动态二级制指令翻译工具ExGear。 第12章介绍交叉编译的方法及如何发布RPM包。 第13章讲解如何在华为云沙箱实验室做鲲鹏实验,针对其中的典型实验给出了实验解析,帮助实验者完成实验。 第14章介绍QEMU模拟器的使用,在没有鲲鹏架构服务器的时候,可以使用该模拟器进行模拟。 第15章介绍个人、公司、产品获取鲲鹏认证的方法,并提出认证建议。 第16章演示实际的鲲鹏云服务兼容性认证过程,对其中遇到的重点、难点给出具体的建议,从而帮助申请的产品通过鲲鹏云服务兼容性认证。 致谢 首先非常感谢清华大学出版社工作人员专业、细致的工作,特别是赵佳霓编辑,从书籍的选题、章节安排到后期的出版细节都付出了艰辛的努力,在此特别感谢。 其次要感谢我的妻子,在写书的这几个月里,承担了所有的家务,使我可以有充足的时间用来写作,还要对我们的孩子婉婉小朋友说声抱歉,这几个月的节假日都没有时间陪你出去玩。 最后感谢华为开发者生态运营部门的同事,为本书的出版做了大量沟通工作。 因笔者能力有限,书中难免有疏漏之处,恳请读者批评指正。 教学课件下载 本书源代码下载 作者2021年4月于青岛