梅科尔工作室-揭秘鲲鹏处理器-谢荷
发表于2024-11-02 16:48:09

第一章 鲲鹏处理器背景及基础介绍

介绍处理器的基本架构和指令集,然后讲解服务器的基本构成和华为的泰山套片组合

cke_10392.png

cke_14209.png

x86
    扩展性: 多核,多线程
    指令集: CISC, 通用指令集
    供应商: 只有两家CPU供应商,Intel处于垄断地位
    产业链: 成熟
ARM
    扩展性: 众核,具有更好的并发性能
    指令集: RISC, 根据负载优化,匹配业务特征能耗比更佳
    供应商: 开放的授权策略,众多供应商,更加灵活丰富的选择
    产业链: 完善中,业界热点,快速发展

ARM架构以其众核设计和RISC指令集,提供了更好的并发性能和能耗比,同时拥有开放的授权策略和众多供应商,产业链正在快速发展。而x86架构则以其多核多线程设计和CISC指令集,拥有成熟的产业链,但供应商较为集中,主要由Intel主导。

cke_20086.png

cke_24071.png

cke_28320.png

cke_32516.png

鲲鹏920处理器是华为自主设计的高性能服务处理器片上系统(system on chip, SOC)。每个鲲鹏920处理器集成最多64个自研处理器核,每个处理器核独享L2 cache,最大64MB的L3 cache,8个DDR4控制器。

I/O方面:鲲鹏920处理器集成了PCIe控制器,内置SAS/SATA以及RoCE引擎,同时还集成HPRE/SEC等加速引擎。

240Gbps每端口:CCIX接口
DDR4:64位,Taihao*4,2.6-3.0G,64K.64K,每核512KB L2 Cache
18 64 MB L3 cache:2.6-3.0G,Taihao,64K.64K
互联结构:硬件加速器
网络接口:825GE/810GE/8GE,2100GE/2*40GE/
SAS/SATA 3.0:最多16个lanes
AMBA总线:PCIe4.0
NAND控制器:低速I/O
局部总线:最多40个lanes

Kunpeng920芯片规格介绍

集成最多64*自研核Taishan v110

指令集兼容ARMv8.2,最高主频达3.0GHz
每核集成64KB L1指令cache/数据cache
每核独享512KB L2缓存,单芯片共享48-64MB L3缓存
8DDR4控制器@2933MT/s,最大带宽88*2933MB/s

集成PCIe/SAS接口

支持PCIe 4.0,向下兼容PCIe 3.0/2.0/1.0
支持x16, x8, x4, x2, x1 PCIe 4.0,集成20 PCIe控制器
支持16*SAS/SATA 3.0控制器

支持CCIX接口,片上集成加速器(用于加解密等)

支持2*100G RoCE v2,支持25GE/50GE/100GE标准NIC
支持2个CPU或者4个CPU互联扩展
封装大小: 60mm*75mm

第二章 ARMv8体系结构介绍

介绍当前业界流行的ARMV8体系架构的基础知识,包括ARMv8的架构、演进、四个Exception等级、指令集、流水线和中断控制器

ARMv8架构的特点:

31个64位通用寄存器,原来架构只有15个通用寄存器;
新指令集支持64位运算,指令中的寄存器编码由4位扩充到5位;
新指令集仍然是32位,减少了条件执行指令,条件执行指令的4位编码释放出来用于寄存器编码;
堆栈指针SP和程序指针PC都不再是通用寄存器了,同时推出了零值寄存器(类似PowerPC的r0);
A64与A32的高级SIMD和FP相同;
高级SIMD与VFP共享浮点寄存器,支持128位宽的vector;
新增加解密指令,例如sha1/sha2/crc32等;
新的4级异常等级和新的安全模型。

鲲鹏920只支持A64指令集,不支持A32指令集。

cke_37272.png

cke_41680.png

cke_46120.png

cke_50700.png

指令集:指令分类

指令类型说明
跳转指令条件跳转、无条件跳转(#imm、register)指令
异常产生指令系统调用类指令(SVC、HVC、SMC)
系统寄存器指令读写系统寄存器,如:MRS、MSR指令可操作PSTATE的位段寄存器
数据处理指令包括各种算数运算、逻辑运算、位操作、移位(shift)指令
load/store内存访问指令load/store{批量寄存器、单个寄存器、一对寄存器、非-暂存、非特权、独占}以及load-Acquire、store-Release指令(A64没有LDM/STM指令)
协处理指令A64没有协处理器指令

指令集:指令特点

A64指令编码宽度固定32bit
31个(X0-X30)个64bit通用用途寄存器(用作32bit时是W0-W30),寄存器名使用5bit编码
PC指针不能作为数据处理指或load指令的目的寄存器,X30通常用作LR
移除了批量加载寄存器指令LDM/STM, PUSH/POP,使用STP/LDP一对加载寄存器指令代替
增加支持未对齐的load/store指令立即数偏移寻址,提供非-暂存LDNP/STNP指令,不需要hold数据到cache中
没有提供访问CPSR的单一寄存器,但是提供访问PSTATE的状态域寄存器
相比A32少了很多条件执行指令,只有条件跳转和少数数据处理这类指令才有条件执行
支持48bit虚拟寻址空间
大部分A64指令都有32/64位两种形式

cke_56032.png

cke_60822.png

第三章 鲲鹏处理器技术创新

从四个方面阐述鲲鹏920处理器的技术创新点

cke_65808.png

cke_70786.png

cke_76608.png

cke_81744.png

cke_86990.png

cke_91523.png

cke_96953.png

cke_102473.png

Kunpeng丰富的指令加速及加速引擎方案

类型x86Kunpeng
加解密AES/SHAAES/sha1/sha2/Crc/md5
矢量Avx/sseNEON
加速引擎QAT/10g/40g/100g摘要算法SM3/MD5,支持同步异步模式 ●对称加密算法,包括:SM4,支持同步异步模式,支持 CTR/XTS/CBC/OFB/ECB分组模式(XTS模式仅支持内核态应用) AES,支持同步异步模式,支持ECB/CBC/CTR/XTS分组模式 非对称加密算法RSA,支持同步异步模式,支持Key Sizes 1024/2048/3072/4096 密钥协商算法DH,支持同步异步模式,支持Key Sizes 768/1024/1536/2048/3072/4096 . 压缩解压算法,支持GZIP/ZLIB两种数据格式
其他半精度浮点FP16指令 Javascript conversion指令 FP complex number multiply accumulate指令 Dot product指令

第四章 通过NUMA亲和性实践体验鲲鹏处理器

实践演示,使用Hyper Tuner对NUMA进行亲和性测试

cke_114965.png

cke_120650.png

cke_127064.png

cke_134313.png

cke_138122.png

cke_144160.png

cke_148203.png

cke_155114.png

发表于2024/11/02