---
title: 概述
description: "本文面向鲲鹏应用开发者，基于鲲鹏920处理器的特性，从多个维度介绍基于鲲鹏进行应用开发时优化代码性能的方法。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/progtuneg/kunpengprogramming_05_0001.html
sourcePath: /source/zh/perftuning/progtuneg/kunpengprogramming_05_0001.html
indexId: 57e9099c81db0993e8509811b4788efaa068ea82e08d141e94eeb4b91ce49bbe63
---
# 概述

本文面向鲲鹏应用开发者，基于鲲鹏920处理器的特性，从多个维度介绍基于鲲鹏进行应用开发时优化代码性能的方法。

首先简单介绍一下鲲鹏处理器。鲲鹏处理器是基于ARM架构的企业级处理器产品。在通用计算处理器领域，华为公司于2014年发布了第一颗基于ARM的64位CPU鲲鹏912处理器；2016年发布的鲲鹏916处理器是业界第一颗支持多路互连的ARM处理器；2019年1月发布的第三代鲲鹏920处理器则是业界第一颗采用7nm工艺的数据中心级ARM架构处理器。

图1给出了华为鲲鹏处理器家族的演化路线图。

图1 鲲鹏处理器演化路线

本文主要从硬件和软件两个方面介绍鲲鹏编程优化方法，编程优化框架如图2所示。

图2 编程优化框架

在硬件层面，优化与调优的方法的陈述主要基于鲲鹏处理器的特性展开。

鲲鹏920处理器采用NUMA架构，NUMA架构很好地解决了SMP技术对CPU核数的制约，因此拥有更多的核心是鲲鹏处理器的一大优势。但在程序并发运行时，跨NUMA节点的内存访问降低了程序的性能，本文在多核与NUMA中将介绍一些提升程序NUMA亲和性的编程方法。

鲲鹏920处理器片上系统由华为海思全自研，就单个处理器核心而言，在性能提升过程中起着主导作用的是指令的时间并行技术，即指令流水线，鲲鹏920处理器支持多级流水线。在流水线中将介绍流水线编排优化方法，以提高流水线的吞吐量、效率，充分发挥处理器性能。而在Cache和预取，结合鲲鹏920处理器的三级缓存，本文会介绍一些良好的程序数据结构排布和访问的方法，可以较显著地提升Cache命中率。

在软件层面，则主要介绍指令集、编译器和加速库。

鲲鹏920处理器全面兼容ARMv8-A指令集，在SIMD编程将介绍ARM平台SIMD指令——NEON指令的使用。代码开发完成后，还需要编译器翻译成适应不同平台的机器的可执行文件，本文将在编译器介绍如何利用编译器的特性充分优化代码。

除了上述较为通用的方法，华为公司发布了针对鲲鹏硬件、基础软件和应用软件的全栈优化解决方案——鲲鹏BoostKit应用使能套件，提供高性能开源组件、基础加速软件包和应用加速软件包，使能应用极致性能。本文将在鲲鹏加速库主要对鲲鹏基础加速库的使用做一个介绍。
