鲲鹏处理器(架构与编程)下篇_第1页
鲲鹏处理器(架构与编程)下篇_第2页
鲲鹏处理器(架构与编程)下篇_第3页
鲲鹏处理器(架构与编程)下篇_第4页
鲲鹏处理器(架构与编程)下篇_第5页
已阅读5页,还剩164页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

鲲鹏处理器架构与编程(下篇)目录\h3.3.4鲲鹏920处理器片上系统的附加设备\h3.4基于鲲鹏920处理器片上系统的TaiShan服务器\h3.4.1TaiShan200服务器的组成与逻辑结构\h3.4.2TaiShan200服务器的RAS技术\h3.4.3TaiShan200服务器的鲲鹏加速引擎\h第4章鲲鹏软件生态和构架\h4.1鲲鹏软件生态与云服务\h4.1.1ARM授权机制\h4.1.2ARM服务器生态\h4.1.3鲲鹏服务器软件生态\h4.1.4鲲鹏云服务及解决方案\h4.2鲲鹏软件构成\h4.2.1硬件特定软件\h4.2.2操作系统内核\h4.2.3基础库\h4.2.4开发工具、中间件和应用程序\h4.2.5云基础软件\h4.3鲲鹏软件开发模式\h4.3.1原生开发模式\h4.3.2交叉开发模式\h4.3.3云端开发模式\h4.4鲲鹏软件移植\h4.4.1鲲鹏软件移植流程\h4.4.2编译工具的选择\h4.4.3编译参数移植类案例\h4.4.4源码修改类案例\h4.4.5鲲鹏分析扫描工具DependencyAdvisor\h4.4.6鲲鹏代码迁移工具PortingAdvisor\h4.5鲲鹏软件性能调优\h4.5.1鲲鹏软件性能调优流程\h4.5.2CPU与内存子系统性能调优\h4.5.3网络子系统性能调优\h4.5.4磁盘I/O子系统性能调优\h4.5.5应用程序性能调优\h4.5.6基础软件性能调优\h4.5.7鲲鹏性能优化工具TuningKit\h第5章鲲鹏软件实战案例\h5.1云服务器源码移植和编译\h5.1.1配置云服务器\h5.1.2PortingAdvisor代码移植\h5.1.3搭建交叉编译环境\h5.1.4x86云服务器交叉编译OpenSSL\h5.1.5鲲鹏云服务器上编译OpenSSL\h5.2Docker的安装与应用\h5.2.1安装Docker\h5.2.2运行和验证\h5.2.3Docker常用命令\h5.2.4卸载Docker\h5.2.5制作适配鲲鹏架构的Docker镜像\h5.3KVM的安装与应用\h5.3.1安装KVM\h5.3.2创建虚拟机\h5.3.3配置虚拟机\h5.3.4克隆与修改虚拟机\h5.3.5启动与关闭虚拟机具体操作步骤如下:\h5.3.6常用命令\h5.4QEMU的安装与应用\h5.5Android模拟器的安装与使用\h5.6鲲鹏加速引擎的安装与使用\h5.6.1鲲鹏加速引擎的安装与测试\h5.6.2鲲鹏加速引擎的应用案例3.3.4鲲鹏920处理器片上系统的附加设备1.鲲鹏920处理器片上系统的附加设备拓扑鲲鹏920处理器片上系统的附加设备包括片上附加设备和片外附加设备,片外附加设备通过PCIExpress总线接口与鲲鹏920处理器片上系统连接。与片上附加设备相同,片外附加设备也采用PCI拓扑方式组织,并遵循PCIExpress框架规范。图3.39(a)、(b)给出了华为鲲鹏920处理器片上系统启动时的默认附加设备拓扑架构,BIOS也可以改变默认拓扑配置。图3.39(a)、(b)可以拼接为一张完整的拓扑图。其中,图3.39(a)给出了芯片编号为0和1的两个子系统的拓扑,而图3.39(b)显示的是芯片编号为2和3的两个子系统的拓扑,这四个子系统通过鲲鹏920的系统总线译码器相互关联,共同构成了鲲鹏920系统附加设备的完整拓扑。鲲鹏920系统中的所有设备都处于PCI总线编号0~256。鲲鹏的片上总线通过芯片ID和SCLID调整默认的地址译码逻辑。图3.39同时给出了默认的总线编号和地址范围分配关系。无论系统中实际配置了多少芯片,默认的总线编号和地址范围的分配关系都保持不变。也就是说,在单芯片系统和四芯片系统中,分配给芯片0的默认总线编号和地址范围都相同。但是如果有特殊的要求,固件可以改变这种默认配置。受芯片物理设计和系统译码机制的限制,鲲鹏920系统的每个超级集群中都包含多个主桥。这些主桥可以被ACPI(高级配置与电源接口)表描述,但是只有真正在PCB上被物理使用的设备才能被ACPI表描述。例如,如果PCB只用到了芯片1的网络I/O集群上的网络接口控制器,则芯片0的网络I/O集群就不能在ACPI表中描述,芯片0的网络功能对软件而言也是不可见的。如果片上附加设备不支持虚拟化,则这类设备作为集成端点连接至主桥,例如图3.39中IO_MGMT_ICL上的USB主机控制器。而支持虚拟化的附加设备则通过虚拟PCI至PCI桥连接至主桥,以便获取更多的PCI功能。某些片上设备可能在特定的PCB上并未使用,此时固件可以将这些设备的PCI头中的厂商ID配置为0xffff,从而对高层软件隐藏这些冗余的设备。图3.39华为鲲鹏920处理器片上系统的附加设备拓扑架构图3.39(续)2.鲲鹏920处理器片上系统的网络子系统华为鲲鹏920处理器片上系统通过附加网络设备提供高带宽的以太网通信能力。鲲鹏920处理器片上系统的网络子系统即网络I/O集群,负责控制以太网帧的发送和接收,除了支持常规的以太网通信外,还支持基于融合以太网(ConvergedEthernet)架构的远程直接存储器访问(RemoteDirectMemoryAccess,RDMA)协议RoCE(RDMAoverConvergedEthernet)V1和RoCEV2。华为鲲鹏920处理器片上系统的网络子系统由网络接口控制器(NetworkInterfaceController,NIC)和附加的RoCEE两部分构成。网络接口控制器实现常规以太网通信功能;RoCEE即RoCE引擎(RDMAoverConvergedEthernetEngine),支持远程DMA操作。华为鲲鹏920处理器片上系统的网络接口控制器支持的最大线速为100Gb/s,可以通过Linux操作系统下强大的网络管理工具ethtool实现性能调优,也支持微软的网络协议栈。华为鲲鹏920处理器的网络接口控制器包括多个1Gb/s至100Gb/s速率的以太网控制器,是完整的以太网控制器引擎,可以在RoCE引擎关闭的情况下单独工作。网络I/O集群支持二层DCB(DataCenterBridging,数据中心桥接)、MAC(介质访问控制器)地址表、多播表、VLAN(VirtualLocalAreaNetwork,虚拟局域网)过滤表、流表、中断及PCIExpress化等功能。从程序员角度看,网络I/O集群兼容PCIExpress系统架构。网络I/O集群包含标准PCIExpress配置空间,可以通过PCIECAM机制访问,并支持BIOS枚举功能。网络I/O集群支持虚拟化功能时遵从SR-IOV规范。鲲鹏网络I/O集群支持256个PCI功能单元,这些功能单元可以是虚拟功能单元(VirtualFunction,VF),也可以是物理功能单元(PhysicalFunction,PF)。每个PCI功能都有独立的任务和配置空间,用于处理服务数据并配置硬件。所有这些功能都按照PCIExpress框架下的附加设备组织,并且与PCIExpress总线外接的扩展网络接口卡置于同一框架下管理。鲲鹏的通用网络接口卡功能与RDMA逻辑集成在同一个PCIExpress功能中,不占用额外的PCI功能编号。华为鲲鹏920处理器片上系统的网络I/O集群有四种对外可见的接口:(1)PCIExpress接口:网络I/O集群内部嵌入了PCIExpress化(将设备虚拟为PCIExpress设备)的接口功能模块,网络I/O集群通过内部PCIExpress端点接入处理器片上总线,对软件以PCIExpress设备的形式呈现,最多支持8个物理功能单元。(2)ARM总线/DJTAG接口:用于加载初始化信息和调试使用。(3)RMII:鲲鹏920提供一个独立于MAC的精简介质独立接口(ReducedMedia-IndependentInterface,RMII),将网络I/O集群与管理控制器(ManagementController,MC)连接。网络I/O集群的网络控制器边带接口(NetworkControllerSidebandInterface,NC-SI)通过RMII与华为的主板管理控制器(BMC)芯片Hi1710相连,管理控制器则可通过RMII收发控制分组,从而实现对网卡的管理。(4)10条SERDES信号线:网卡内集成的多速率以太网介质访问控制器(MediaAccessController,MAC)通过SERDES接口与其他芯片互连。若SERDES连接物理层PHY芯片,则接口类型为电口;若SERDES连接光模块,则接口类型为光口;SERDES也可以通过背板互连。图3.40给出了鲲鹏920处理器片上系统的网络I/O集群外部接口描述。图3.40鲲鹏920处理器片上系统的网络I/O集群外部接口①G表示Gb/s。华为鲲鹏920网络子系统基于共享内存架构,其内部架构如图3.41所示。图3.41的左边显示了网络接口控制器的结构。网络接口控制器的核心是NIC引擎,向软件提供收发接口,完成收发处理流程。在发送方向,软件通过设置发送队列指针分配发送任务,NIC引擎根据发送描述符给出的信息从主机内存中取出发送分组数据处理,并传输分组。在接收方向,NIC引擎负责接收分组,并将分组写入主机内存。NIC引擎也负责向软件提出中断请求并上报队列指针状态。发送调度器根据流量分类(TrafficClass,TC)的带宽限制或PCI物理功能单元/虚拟功能单元的带宽限制对发送报文进行调度,协调实现主机、虚拟功能单元、流量分类和队列之间的发送安排。NIC引擎根据调度结果从调度队列中读取发送任务。图3.41华为鲲鹏920网络子系统内部架构带收发分组缓冲区的内部交换逻辑(InternalSwitchwithTX/RXPacketBuffers)集成了存储交换单元(StorageSwitchUnit,SSU),实现分组的缓冲、存储和交换。发送DMA部件TxDMA用于将分组送入分组队列,而接收DMA部件RxDMA则负责从处理器主存中加载分组至分组队列。集成管理处理器(IntegratedManagementProcessor,IMP)是一种内嵌的管理处理器,负责命令通道的管理和网络控制器边带接口NC-SI功能。集成管理处理器负责解析读写命令,配置硬件或读取硬件配置。集成管理处理器还负责响应主板管理控制器(BMC)的配置请求。网络接口控制器的MAC支持以太网帧的发送和接收,实现CRC计算和校验、流量控制、参数自动协商、训练等功能。MAC模块还定义了一系列“MACCMD”命令,用于指定工作模式。图3.41的左下部即为通过SERDES接口与外部链路连接的MAC模块,鲲鹏920的网络接口卡配置了8个MAC,连接外部10条SERDES通道。华为鲲鹏920的所有MAC都支持三种端口速率模式:CGE、LGE和GE。CGE模式支持100Gb/s速率;LGE模式支持50Gb/s、40Gb/s、25Gb/s和10Gb/s速率;GE模式支持1000Mb/s、100Mb/s和10Mb/s速率。这些MAC可以灵活配置组合。由于每个50GE/40GE的MAC可以被配置为1个XLGEMAC或者4个XGEMAC,因此,每个网络I/O集群可以支持下列配置组合:(1)配置1:2个100G/50G/40G/25G/10G/1G\h\h(2)MAC+2个1GMAC;(2)配置2:4个50G/25G/10G/1GMAC+2个1GMAC;(3)配置3:8个25G/10G/1GMAC。图3.42给出了鲲鹏网络接口卡的网络接口速率配置组合。图3.42鲲鹏网络接口卡的网络接口速率配置基于RoCE协议的RoCEE通过硬件实现传输层和网络层的RDMA功能,用于卸载鲲鹏920处理器片上系统的负荷。华为鲲鹏920片上系统的RDMA的目标延迟低于600ns。RoCEE需要与网络I/O集群协同工作:RoCEE的二层处理,包括融合以太功能,由网络I/O集群完成;在软件层,也需要先初始化网络I/O集群后再初始化RoCEE,才能正常调用RoCEE的功能。3.鲲鹏920处理器片上系统的外存储子系统鲲鹏920处理器片上系统的外存储子系统借助鲲鹏920系统内置的SAS(串行连接SCSI,SerialAttachedSCSI)控制器和SATA控制器连接外部存储设备。鲲鹏920系统的SAS控制器是主机和外存设备之间交互的接口控制器。SAS控制器在系统内部通过片内总线与处理器交互,接收SAS发起者(SASInitiator)和SATA主机应用层发出的SAS/SATA命令;在对外接口侧,SAS控制器通过片内SERDES驱动的模拟差分信号线对与远端SAS/SATA设备交换数据。SAS控制器遵循SAS3.0和SATA3.0协议,实现SAS协议定义的传输层、链路层、端口层(PortLayer)和物理层(PHYLayer)功能,以及SATA协议定义的传输层、链路层和物理层功能。图3.43显示了鲲鹏920片内SAS控制器的配置与连接关系。华为鲲鹏920处理器片上系统在HAC_ICL中配置了两个SAS控制器,每个SAS控制器支持8个SAS物理层(PHY),对外提供8个SERDES差分线对的模拟接口。图3.43鲲鹏920片内SAS控制器的配置与连接关系SAS控制器支持宽端口(WidePort)模式,每个端口的物理层个数可配置为2~8个。一个SAS控制器可以配置多个宽端口,例如4个×2宽端口、2个×4宽端口或1个×8宽端口。SAS控制器可支持最多8个窄端口(NarrowPort),与每个物理层相关联的SAS通道(SASChannel)都可以被配置为窄端口模式。实际使用的端口个数通过配置每个SAS通道内部的物理层SAS地址确定。图3.44显示了鲲鹏920的片内SAS控制器结构。SAS控制器内部包含如下模块。图3.44鲲鹏920的片内SAS控制器结构1)硬件全局控制器模块硬件全局控制器(HardwareGlobalController,HGC)模块是软硬件之间的交互接口,负责接收并解析软件下发的I/O命令,并集中管理和调度多重I/O请求,控制各SAS通道与目标设备之间的I/O交互操作。2)SAS通道SAS通道是实现SAS和SATA协议的传输层、链路层和物理层功能的模块,负责完成SSP/SMP/STP/SATA帧的收发。一个SAS通道与一个SERDES通道互连。SAS通道内部包含三个子模块:端口配置模块负责接收软件对寄存器的配置和查询请求;协议层实现SAS和SATA协议中定义的端口层、链路层和物理层功能;传输模块实现传输层部分功能并管理SAS控制器和存储器之间的数据读、写和传输操作。SAS物理层功能由SAS控制器片内的协议层和片外的SERDES模块共同实现,协议层实现物理层的数字处理功能。片外SERDES模块实现模拟处理,即在发送方向实现并/串转换及差分数据输出,在接收方向实现串/并转换及时钟与数据恢复。3)总线接口总线接口在系统侧实现SAS控制器与片内总线交互,包括控制通道接口和数据通道接口。软件通过控制通道接口配置SAS控制器的初始化参数,配置或查询内部寄存器。数据通道接口用于传输与I/O相关的命令和数据。除了SAS控制器外,鲲鹏920片上系统还配置了SATA主机(SATAHost,SATAH)控制器。SATA主机控制器遵循串行ATA国际组织的《串行ATA版本3.0(SerialATARevision3.0)》规范和《串行ATA高级主机控制器接口(AHCI)版本1.3[SerialATAAdvancedHostControllerInterface(AHCI)1.3]》规范。鲲鹏920片上系统的SATA控制器是一个配置两个SATA端口的SATA主机总线适配器(HostBusAdapter,HBA),实现AHCI规范下系统存储器和串行ATA设备之间的通信。图3.45显示了鲲鹏920的SATA主机控制器结构。图3.45鲲鹏920的SATA主机控制器结构3.4基于鲲鹏920处理器片上系统的TaiShan服务器TaiShan服务器是华为公司的新一代数据中心服务器,基于海思鲲鹏系列服务器处理器,适合为大数据、分布式存储、原生应用、高性能计算和数据库等应用高效加速,旨在满足数据中心多样性计算与绿色计算的需求。目前,TaiShan服务器家族有两个产品系列:TaiShan100系列服务器是基于鲲鹏916处理器的产品;TaiShan200系列服务器是基于最新的鲲鹏920处理器片上系统,包含2280E边缘型、1280高密型、2280均衡型、2480高性能型、5280存储型和X6000节点高密型等多个产品型号。3.4.1TaiShan200服务器的组成与逻辑结构表3.9列出了TaiShan200系列部分服务器产品的核心参数。从表3.9中可以看出,TaiShan系列很好地利用了鲲鹏920处理器片上系统优良的可扩展性,系统架构组织灵活。1U机架服务器最多可以配置128个2.6GHz主频的处理器内核,节点型服务器可以组合成更高密度的计算系统。表3.9TaiShan200系列部分服务器产品的核心参数1.单片鲲鹏920处理器片上系统构成的服务器系统图3.46描述了TaiShan200系列中的2180均衡型服务器的逻辑结构。2180均衡型服务器是2U单路均衡型机架服务器。该服务器面向互联网、分布式存储、云计算、大数据、企业业务等领域,具有高性能、大容量存储、低能耗、易管理、易部署等优点。2180单台服务器支持1个鲲鹏920处理器片上系统,最多64个处理器内核;最大支持16条DDR4ECC内存储器,最大内存容量可达2048GB;最多可支持3个PCIExpress4.0×8的标准扩展槽位。图3.46TaiShan200系列2180均衡型服务器的逻辑结构图从逻辑结构图中可以看出,整个TaiShan服务器系统主要由三片集成电路及扩展卡、外部通信通道构成。其中,1颗鲲鹏920处理器片上系统芯片支持连接16个DDR4DIMM内存条,并可通过PCIExpress4.0×8总线连接RAID(RedundantArraysofIndependentDisks,独立磁盘冗余阵列)控制扣卡(Xcede连接器),再引出SAS(SerialAttachedSCSI,串行连接SCSI)信号线缆与硬盘背板连接,支持最多14个3.5″(英寸)SAS/SATAHDD硬盘或SAS/SATASSD硬盘。TaiShan2180服务器的鲲鹏920处理器片上系统最多支持4个PCIExpress4.0接口,除了1个RAID扣卡专用的PCIExpress扩展槽位外,另外3个标准PCIExpress扩展槽位通过Riser卡引出。鲲鹏920处理器片上系统本身自带的高速SERDES接口扩展出灵活I/O卡(FlexIO)接口,支持扩展4个GE电口、4个10GE光口或者4个25GE光口以太网接口。TaiShan2180支持服务器智能管理系统,主板上集成了华为自研的主板管理控制器芯片Hi1710,通过PCIExpress、I2C和USB等通信端口与处理器互连,可以支持VGA、10/100/1000Mb/sRJ45管理网口、调试串口等管理接口。处理器内置的USB3.0接口通过USBHUB可以扩展出4个USB端口。一片CPLD(ComplexProgrammableLogicDevice,复杂可编程逻辑器件)用于实现简单逻辑功能。2.两片鲲鹏920处理器片上系统构成的多芯片服务器系统对于需要更大计算能力的服务器系统,可以通过多片鲲鹏处理器片上系统组合成更多处理器内核的系统。图3.47给出了另一款TaiShan200系列2280均衡型服务器配置鲲鹏9207260、5250或5230处理器时的逻辑结构图,从图中可以看出鲲鹏处理器架构灵活的扩展能力。2280服务器是2U双路均衡型机架服务器,在保持低功耗特性的同时提供更高的计算性能,适合为大数据分析、软件定义存储、Web等应用场景的工作负载进行高效加速。TaiShan2280服务器支持最多128个处理器内核和最多27个SAS/SATAHDD或SSD硬盘。对比图3.46和图3.47的两种服务器逻辑结构可以看出,TaiShan2280服务器比TaiShan2180服务器增加了一颗鲲鹏920处理器片上系统CPU2,与处理器CPU1通过两组Hydra总线互连(配置鲲鹏9205220或3210处理器时只需一组Hydra总线),传输速率最高可达30Gb/s,二者构成多芯片鲲鹏920处理器片上系统。RAID控制扣卡仍通过PCIExpress总线与CPU1连接,并通过SAS信号线缆连接至硬盘背板,通过不同的硬盘背板可支持最多16个3.5″或27个2.5″SAS/SATAHDD硬盘、SAS/SATASSD硬盘或16个2.5″NVMeSSD硬盘等多种本地存储规格。新增的第二颗鲲鹏920处理器片上系统CPU2同样支持16个DDR4DIMM内存条。两颗鲲鹏920处理器片上系统本身自带的高速SERDES接口可扩展出两块灵活I/O卡(FlexIO)接口,每块灵活I/O卡均支持扩展4个GE电口、4个10GE光口或者4个25GE光口以太网接口。由于处理器片上系统可以连接三块Riser卡,故系统支持最多8个PCIExpress4.0×8或3个PCIExpress4.0×16+2个PCIExpress4.0×8标准插槽。图3.47TaiShan200系列2280均衡型服务器的逻辑结构图图3.48给出了TaiShan200系列2280均衡型服务器配置鲲鹏9207260、5250或5230处理器时的物理结构示意图。图3.48TaiShan200系列2280均衡型服务器的物理结构示意图表3.10总结了TaiShan200系列2280均衡型服务器的规格与特色。表3.10TaiShan200系列2280均衡型服务器的规格与特色图3.49描述了TaiShan200系列2280均衡型服务器的内部结构。3.节点型多芯片服务器系统对于需要聚合更大算力的应用场景,可以把多个服务器节点通过管理板整合成服务器系统。TaiShan200系列X6000高密型服务器是2U4节点的高密服务器系统,集灵活扩展、高密度、高可靠、易维护管理和高效节能等特点于一身。图3.50为TaiShan200系列X6000高密型服务器风冷整机系统结构图。TaiShan200系列X6000服务器在2U高度的机架上能够容纳4个XA320或XA320C高密型2路计算节点。每个XA320/XA320C计算节点配置两个鲲鹏920处理器片上系统,每个处理器支持48核或64核,每个节点的逻辑结构与TaiShan200系列2280均衡型服务器类似。表3.11总结了TaiShan200系列服务器使用的XA320及XA320C计算节点的规格。TaiShanX6000提供HMM+iBMC的管理架构,通过管理板(HMM)实现X6000的机框管理,提供环境温度监控、风扇管理、电源管理和节点管理、整框的资产信息等功能。管理板通过一个汇聚模块在机框后面板提供一个汇聚网口,客户端连接到此汇聚网口后,不需要另外连接节点的iBMC管理网口,通过一根管理网线即可分别登录4个节点的iBMC,实现整框系统带外管理对外呈现一个接口。iBMC智能管理系统软件是华为自主开发的具有完全自主知识产权的服务器远程管理系统,兼容服务器业界管理标准IPMI2.0规范,具有高可靠的硬件监控和管理功能。iBMC实现节点的管理和用户界面的呈现,既支持服务器节点单独管理,也可通过新一代的HMM整机管理系统实现对整框共用部件的散热、电源、机框资产信息的管理。用户可通过节点的管理网口或机箱的汇聚网口登录到节点的iBMCWeb用户界面。图3.49TaiShan200系列2280均衡型服务器的内部结构图3.50TaiShan200系列X6000高密型服务器风冷整机系统结构图表3.11TaiShan200系列服务器XA320及XA320C计算节点规格TaiShan200系列X6000高密型服务器可以针对互联网业务应用提供低能耗、易维护、快速部署、定制化的服务器解决方案,也可针对HPC业务应用,提供高可靠、高性能的硬件基础平台。3.4.2TaiShan200服务器的RAS技术1.TaiShan服务器的RAS框架TaiShan服务器通常工作在对计算能力要求高、实时性要求高、业务不可中断的应用场景中,这类场景对服务器基础设施的RAS特性有较高的要求。TaiShan服务器在设计过程中对每个关键部件和每条关键链路都提供足够的RAS特性进行保护。为了保证TaiShan服务器的高可用性,除了采用严格的降额设计及可靠性筛选测试和信号级测试等生产制造过程中的质量保证手段外,RAS技术在设计层面还需满足三个核心目标:(1)硬件部件具有高可靠性。部件可靠性高,具备一定容错机制,极少出现故障。(2)出现故障时能通过一系列手段保证故障不会影响系统主要功能和业务。可以对故障实现检测、纠错、预测和隔离。(3)对于影响系统功能的错误,能第一时间定位到具体部件并且易于维护更换,能快速恢复业务。这要求对严重错误能尽快定位,故障易于修复。TaiShan服务器需要实现对系统异常的检测,对检测到的故障进行搜集、分析,并在固件、操作系统和应用程序等各个层面对检测到的故障进行有针对性的处理,确保将故障的影响降到最低,以提升系统连续服务时间。图3.51描述了TaiShan服务器系统的RAS框架。图3.51TaiShan服务器系统的RAS框架华为的TaiShan服务器具备全面的故障检测能力,能检测系统内几乎所有的基础类硬件故障及业务类硬件故障,并配置了软硬件一体的故障诊断、预测、恢复和隔离机制。基于华为最新的自研管理芯片及管理软件,TaiShan服务器通过完全自主的带外管理系统支持远程管理,可实现设备配置、软件和固件升级、故障管理等操作的一站式服务。2.鲲鹏920处理器片上系统的RAS设计作为为服务器设计的处理器,鲲鹏920处理器片上系统在保持高性能、低功耗优势的同时,着重强化了服务器级RAS设计,利用故障检测、故障纠错、故障记录、故障上报和故障修复等技术实现了全流程的RAS架构设计,具备了与最高端服务器处理器相当的RAS能力。鲲鹏920处理器片上系统的处理器和主存系统与ARMRAS扩展规范完全兼容,并实现了该规范的全部要求。鲲鹏920处理器片上系统只支持固件优先模式的差错处理机制。图3.52列出了鲲鹏920处理器片上系统的RAS设计要点。可以看出,鲲鹏920处理器片上系统在其设计的过程中,对每个关键部件和每条关键路径都提供了足够强大的RAS特性保护机制。处理器系统的故障检测能力是系统RAS的基础。硬件确保高可靠性的核心技术即差错检测和差错纠正(ErrorDetectionandCorrection)技术,鲲鹏920处理器片上系统具备覆盖全模块的差错检测及纠错能力。表3.12列出了鲲鹏920处理器片上系统中主要的数据模块和总线模块采用的检错和纠错方法。处理器系统涉及的故障可以分为三类:数据错误、总线错误和逻辑功能错误。与这三种故障相对应,鲲鹏920处理器片上系统的故障检测手段也分为三类:对数据模块主要使用错误修正码(ErrorCorrectionCode,ECC)和奇偶校验码(Parity)进行数据错误检错;对总线接口模块使用循环冗余校验(CyclicRedundancyCheck,CRC)方法检错;而逻辑功能模块则使用存储器内置自检(MemoryBuilt-InSelfTests,MBIST)和超时检测等方法检错。纠错一般通过ECC和重试(Retry)机制来实现。鲲鹏920系统的硬件提供已修复差错计数功能。处理器和存储系统的差错记录功能与ARMRAS扩展规范完全兼容。3.内存储系统的RAS设计存储系统的可靠性是系统运行的保障。在鲲鹏920处理器片上系统中,无论是片内的各级Cache还是作为主存使用的DDRSDRAM,都设计了差错检查和纠正等高可靠性的容错机制,对最容易发生错误的数据存储模块提供全面的保护。图3.52鲲鹏920处理器片上系统的RAS设计表3.12鲲鹏920处理器片上系统数据模块和总线模块采用的检错和纠错方法续表1)Cache容错与保护机制从表3.12可以看出,鲲鹏920处理器片上系统对各级Cache配备了完整的纠错和检错逻辑。对于L1ICache,容错设计通过奇偶校验进行错误检测,在检测到错误时可以采用重试的方式进行纠错。对于L2Cache和L3Cache,则通过ECC(错误修正码)检测多二进制位错误并纠正单二进制位错误。检测到出现概率最大的单二进制位错误后会首先对数据进行纠正,然后再将修正后的正确数据传送到处理器,并将结果写回到L2Cache和L3Cache中,避免ECC错误的累积。L1ICache读操作造成的不可修正错误会使相应的L1ICache行失效。除了在正常读写操作过程中通过完善的错误检测及纠正机制提升Cache的RAS特性外,鲲鹏920处理器片上系统还设计了初始化自检和Cache巡检等多层次的RAS功能。例如,鲲鹏920处理器片上系统采用了故障弹性引导(FaultResilientBoot,FRB)处理器内核停用(CoreDisable)技术,在启动过程中对发生故障的处理器内核进行隔离,提高系统的可靠性和可用性。在对CPU进行初始化时,鲲鹏920处理器片上系统会首先对L1Cache、L2Cache和L3Cache进行全面的检查,并将检查结果记录到相关寄存器中,必要时可以由BIOS根据自检结果对出错的处理器内核进行隔离。鲲鹏920处理器片上系统还可以定期对Cache进行巡检,及时纠正其中出现的错误,从而消除绝大多数暂态错误造成的不良影响。对于数据Cache读操作或数据Cache读分配操作造成的不可修正错误,将作为同步外部中止(SynchronousExternalAbort,SEA)上报。对于指令Cache再填充(Refill)操作造成的不可修正错误,也将报告为同步外部中止,即预取中止(PrefetchAbort)异常。2)主存系统的错误检测与错误纠正鲲鹏920系统在存储器件内部以及命令和地址传输路径上都设计了检错与纠错机制。鲲鹏920系统强化了DDR存储器的RAS机制。对于存储器件本身,常用的主存系统通常使用ECC纠错算法,但只能检测并纠正单二进制位错误。鲲鹏920处理器片上系统的DDR控制器支持纠错能力更为强大的单一器件纠错(SingleDeviceErrorCorrection,SDEC)机制,通过对主存数据采用特殊的重排和分组机制,可以实现单个×4DRAM颗粒上的任意二进制位错误的检错和纠错,比传统主存使用的ECC纠错机制可靠性提升4倍以上。鲲鹏920系统的DDR控制器支持的单通道数据接口位宽为72位,其中有效数据位占64位,可选的校验数据位占8位,校验算法可以选择使用SECDEDECC算法或者RAS算法(×4/×8SDDC\h\h(3)算法、×4FADC\h\h(4)算法或×4MADC\h\h(5)算法)。在存储器工作过程中,还会出现一些软错误或者偶发性的错误,这些错误主要是由环境影响造成的,或者是高能粒子作用的结果,一般并不会持续发生。因此,在检测到此类错误后,将错误数据纠正后回写,就可以消除此类错误。基于此种理论,为了更好地保护主存内的数据,鲲鹏的存储系统引入了被动清洗(PassiveScrubbing)技术,在进行主存数据读取操作时如果检测到数据错误,会将出错数据纠正并将纠正后的正确数据回写到主存中覆盖出错误的数据。更进一步,鲲鹏920的存储器控制器中还集成了一个巡检引擎,通过一种主动清洗(ActiveScrubbing)机制对系统内所有的主存单元进行不间断的周期性巡检。主存巡检引擎可以按照BIOS配置的频率对系统主存进行周期性巡查,在发现主存数据中的可纠正错误时,将错误纠正并把正确数据写回主存。被动清洗和主动清洗技术都可以有效预防在同一地址段上因可纠正错误无法被及时处理导致错误累积而产生不可纠正错误的现象。这两种技术完全是基于硬件实现的,对操作系统透明。对于主存命令和地址传输路径上可能引起的错误,则可采用奇偶校验与重试机制。鲲鹏920系统的存储器控制器会对系统命令或地址生成奇偶校验码,并将校验码传输到DDRDIMM内存条,同时监控DIMM内存条的错误引脚。当在DIMM内存条上检测到命令或地址奇偶校验错误时,存储器控制器会进行重试以尝试恢复操作的功能。这种校验及重传机制能很好地避免链路上偶发性的错误对系统造成的不良影响。3)主存系统的错误预防机制正常情况下,由于访存数据的随机性,主存数据线上的数据流分布是不均匀的,也即可能集中出现较多的1或较多的0。这种集中出现的连续的1或连续的0会在数据线上形成持续的高电平或者低电平,造成能量集中,从而提高了错误出现的概率。为此,鲲鹏920系统采用数据加扰(DataScrambling)技术将真实数据通过哈希编码机制转化为0和1分布更平滑的码流,杜绝了传输链路上持续性的能量集中现象,降低了错误发生的概率。由于存储机制的原因,当前使用的DRAM内存条在高温下其存储单元的漏电流会增大,这会导致存储于其中的数据较正常温度下出错的概率成倍增大。为了保证系统在高温环境下依然具有稳定的表现,TaiShan服务器采用特别的主存热保护(MemoryThermalThrottling)机制,通过分布在每根DIMM内存条上的温度及功率传感器对主存的温度及功率数据进行实时监控。当检测到温度过高或者功耗过大时,会采取主动降低内存运行速度的方式降低内存的负载及功耗,从而将内存条温度控制在合理的范围内。此外,短时间内主存温度过高还会触发X2刷新机制,通过加快主存数据刷新频率来保证主存数据不出错。通过主存热保护与X2刷新这两种技术的结合,可以有效防止因为高温问题引发的主存数据错误或主存物理损坏,使鲲鹏920系统能够适应更为严格的机房环境。4)主存系统的故障隔离机制对于频繁出现可纠正错误的不可靠主存部件,鲲鹏920系统可以根据不同情况执行故障页隔离(PageOffline)、故障存储体隔离或故障内存颗粒隔离等不同粒度、不同层次的故障隔离替换操作。TaiShan服务器在发生主存可纠正错误后会将详细的故障信息上报到主板管理控制器。主板管理控制器收到故障消息后会根据收集到的主存历史故障信息分析故障模型。如果主存的故障模型符合故障页判定条件,则会通过高级配置和电源管理接口(ACPI)通知操作系统将故障页中的数据进行迁移,并对故障页进行标记隔离,停止使用。当DIMM内存条由于器件老化等原因造成某个DRAM存储颗粒失效时,系统可能会持续不断地产生可纠正错误。由于此种情况是硬件故障,因此无法通过纠错写回来恢复。虽然此时由于纠错算法的存在,系统仍能正常工作,但此时系统将面临两方面的问题:一是频繁的纠错会导致系统增加额外的开销;二是会导致系统发生不可纠正错误的概率大大提高,因为在这种情况下如果同一个存储体内的其他颗粒上由于软失效也出现个别单二进制位错误,就会导致可纠正错误演变为不可纠正错误,从而导致系统挂死。因此,在出现这种由于硬件故障导致的持续性错误时,最好的措施是将出现故障的器件进行隔离,避免宕机风险。TaiShan服务器使用自适应双器件纠错(AdaptiveDoubleDeviceErrorCorrection,ADDEC)技术来解决此问题,实现故障存储体隔离或故障颗粒隔离。自适应双器件纠错技术可以使用内存条上的奇偶校验颗粒替换故障存储体(Bank)甚至故障颗粒,从而彻底隔离故障源。此外,如果是使用×4颗粒的内存条,则可在虚拟锁步(VirtualLockStep)技术的支持下,最多可以进行两次故障存储体或故障颗粒的替换操作。这种多区域的故障隔离能力在不损失系统主存容量的情况下极大提升了主存的可靠性。相对于单次故障替换,自适应双器件纠错技术支持的多颗粒或多存储体替换机制对主存可靠性的提升达到17倍之多。4.互连总线与I/O系统的RAS设计1)HCCS链路保护作为晶片之间和插槽之间的互连通道,HCCS通道可靠性的重要性不言而喻。华为Cache一致性系统(HCCS)链路层具备16位CRC校验和出错重传能力。CRC机制通过检测错误确保HCCS传输链路上的数据的正确性:在HCCS链路发送端,通过特定的算法对欲传输的数据生成特定的CRC校验码随数据一起发送,接收端在接收到数据后会采用同样的算法计算出CRC校验码并与发送过来的CRC值进行对比。如对比CRC值有差异,就证明数据在传输过程中出现了错误,接收端会要求发送端重传出错的数据。这种CRC校验及重传机制能完全避免偶发性的错误对系统造成的影响。2)I/O系统故障检测与报告鲲鹏920系统的I/O系统包括SAS控制器/SATA控制器、网络接口控制器及RoCE引擎、海思加速控制器(HAC)、智能管理单元(IMU)和PCIExpress根端口等多种设备与模块。鲲鹏920系统的网络I/O集群、HAC_ICL和IO_MGMT_ICL等I/O集群都支持ECC校验、CRC校验、污染数据隔离、超时检测和差错注入等RAS功能。鲲鹏920处理器片上系统具备完备的I/O错误检测及上报机制,能实现对I/O各个功能子模块的错误检测并上报。鲲鹏920系统的集成设备及加速控制器的故障记录功能兼容PCIExpress总线规范4.0基线(Baseline)的相关标准。而PCIExpress设备的差错记录则兼容PCIExpress总线规范4.0的高级差错上报(AdvancedErrorReporting,AER)机制,内部的非PCIExpress端口还支持基于ARMRAS扩展规范的SERR错误检测及报告能力。在设备访问过程中出现的不可修正错误将被报告为系统错误中断(SErrorInterrupt,SEI)。各个模块的错误汇总之后,可以上报到全局的错误状态寄存器,并可配置成触发故障处理中断(Fault-HandlingInterrupt,FHI)或同步外部中止(SEA)异常,也可以通过差错引脚通知故障管理模块。鲲鹏920系统的系统存储管理单元实现了系统存储管理单元v3协议定义的RAS功能。当系统存储管理单元内部存储器发生1位ECC差错时会触发修正差错机制,并可以上报故障处理中断。当系统存储管理单元内部存储器发生2位及以上的ECC差错时会出现不可恢复的未修正差错(UnrecoverableUncorrectedError),可以上报故障处理中断及差错恢复中断。对DDR存储器读写操作时产生的可恢复未修正差错(RecoverableUncorrectedError),同样可以上报故障处理中断及差错恢复中断。3)PCIExpress子系统的RAS机制鲲鹏920处理器片上系统中的PCIExpress设备同样具备多种容错功能:(1)PCIExpress链路重新训练与恢复:当PCIExpress的某条链路出现故障导致降级时,PCIExpress控制器能在不影响数据传输的情况下通过重新训练(Retraining)的方式进行故障恢复。(2)链路层CRC错误检测与重试:所有PCIExpress接口都支持链路层CRC校验及错误重传机制,链路上偶发性的数据错误通过CRC校验机制可以被检测到,并能通过重传进行恢复。(3)PCIExpress污染数据隔离(PoisonDataContainment):对于PCIExpress链路内部产生的错误数据,或者通过重传无法恢复的数据,会被打上Poison(污染)标签并继续传输。接收端在接收到这些标记为Poison的数据后或者会忽略这些错误数据,或者是带上Poison标签继续传输,当有软件消费这些数据时可以根据具体情况进行差异化处理。(4)PCIExpressDPC技术:当检测到某个PCIExpress根端口有不可纠正错误发生时,PCIExpress端口可以通过DPC(DownstreamPortContainment,下游端口隔离)技术断开与错误端口相关的PCIExpress链路,并通过重连的方式尝试进行恢复。为了保证此过程不影响操作系统下设备的正常运行,PCIExpress根端口在断开与PCIExpress端点设备之间的链路之前会保存好PCIExpress端点设备的上下文,并在链路恢复后恢复其上下文信息,保证系统运行不受影响。5.软硬件多层次协同的RAS机制除了在硬件层次通过检错、纠错、重传等多种方法保证系统可靠性外,还需要固件、操作系统内核、主板管理控制器、虚拟机管理器等不同层次的软硬件部件协同配合,才能在尽量少占用系统资源的同时最大限度提升RAS特性。1)故障约束机制对于不能通过校验和纠错或重传方法消除的故障,需要通过一定机制抑制故障造成的不良影响。TaiShan服务器设计了一系列的故障约束(FaultRestrain)机制。TaiShan服务器支持固件优先处理模式,允许所有的错误都能够优先触发中断并由智能管理单元/可信固件(TF)先进行错误处理,从而提高处理的灵活性及实时性。智能管理单元/可信固件可以在故障发生的第一时间将错误现场信息搜集并上报给主板管理控制器,并对不同的错误进行差异化的处理,例如触发故障隔离操作或复位故障模块等。处理完成后再视情况决定是否将错误上报给操作系统,以及以何种错误级别上报操作系统。TaiShan服务器的这一特性可以极大提升系统错误处理的能力。在传统的错误处理机制中,一旦在产生错误的模块或传输数据的模块中检测到不可纠正错误,将直接触发系统复位。而在TaiShan服务器的设备与接口控制器中引入的污染数据隔离与差错恢复(PoisonDataContainment&ErrorRecovery)机制下,可基于数据的实际使用情况对不可纠正错误执行错误处理:在错误源头和传输过程中检测到不可纠正错误的模块并不会被简单复位,而是将被污染数据打上“污染(Poison)”标记并继续传输,并且在对应的故障记录寄存器中对此不可纠正的错误类型进行精细化的分类标记。例如,鲲鹏920处理器片上系统的DDR控制器即支持符合ARMRAS扩展规范的Poison标记功能。对于在Cache写回操作过程中出现的不可修正错误,DDR控制器支持将写数据标记为Poison,并把该标记和数据一起写入DDRSDRAM。DDR控制器遇到携带Poison标记的读出数据时,会将标记和读数据一起返回给总线。当通过读数据校验发现不可纠正错误时,DDR控制器也会将该读数据标记为Poison,返回给总线。当DDR控制器内部的SRAM校验出现不可纠正错误时,同样会将对应的数据标记为Poison返回给总线。只有当被污染数据即将被使用时才会将故障信息上报给操作系统。操作系统会根据详细的错误类型标记及具体使用数据的模块执行多样化的处理。操作系统首先会判断错误数据是否在使用,是否被某个应用程序或某个特定的线程使用,或者是否用于操作系统内核等,然后再根据不同的错误类型进行差异化处理。差异化处理方式包括忽略错误(例如显示器上某个像素点的错误)、丢弃数据、发起重传、重启出错应用程序或去掉相关的进程、触发系统复位等多种手段,从而可以有效降低因不可纠正错误导致的整个系统的崩溃,并将不可纠正错误导致的系统宕机概率降低60%以上。故障风暴是指非重大(Fatal)故障以非常高的频率连续发生的现象。此类非重大故障会对故障监控系统带来很大冲击,从而间接影响系统的正常运行。为了保证故障监控的实时性,故障监控系统通常是以中断响应方式及时进行故障检测并搜集相关的故障信息。当故障风暴产生时,一方面处理器会花费大量时间尝试纠错,造成系统性能下降,甚至内部定时器策略超时导致系统异常;另一方面故障风暴引起的频繁中断处理也会耗费除CPU时间之外的大量系统资源,导致某些程序被长时间挂起,进而影响业务的正常运行。为了解决此问题,TaiShan服务器针对故障中断处理设计了中断风暴抑制机制,在故障监控系统中引入了风暴判定机制,当故障被判定为故障风暴时,会屏蔽对应故障的中断触发,并通过轮询方式查询硬件的故障状态,并在判定中断风暴消除后重新打开中断,保证在及时全面搜集系统故障信息的同时使系统业务不受影响。2)故障诊断管理系统为应对各种不同硬件产生的类型各异的问题,TaiShan系列服务器除了遵循ARMRAS扩展规范和PCIExpress规范实现ARMRAS差错上报(ARMRASErrorReporting,ARER)机制和PCIExpress高级差错上报(AER)机制外,还整合了硬件、BIOS、iBMC带外管理系统以及现有操作系统的故障处理机制,构建了一套完整的故障诊断管理(FaultDiagnosisManagement,FDM)系统。故障诊断管理系统可以在出现故障时提供完备的故障信息搜集、故障诊断、故障定位、故障上报、故障预警和故障恢复等一系列功能,实现服务器的高可用性。在发现电源模块、风扇模块、单板电源或时钟部件等基础类硬件的故障时,可以由服务器的带外管理系统单独处理,故障检测和处理流程一般不需要经过上层业务资源。对于处理器、主存、PCIExpress设备以及硬盘等核心模块发生的业务硬件类故障,由于这些模块与客户的业务强相关,故这类硬件故障大部分是由BIOS和iBMC共同完成故障定位分析,有些故障还需要操作系统参与故障定位。故障诊断管理系统的功能主要包括故障信息搜集、故障诊断及故障部件精确定位和故障预警。(1)故障信息搜集。故障诊断管理系统中的故障信息搜集模块通过跟踪系统的重要信号,再结合BIOS提供的支持,能检测系统几乎所有基础类硬件故障及业务类硬件故障。当检测到硬件问题时,会通过带内、带外相结合的故障数据收集机制实现全方位自动化的故障数据搜集并汇总到故障管理系统。(2)故障诊断及故障部件精确定位。故障诊断管理系统内部集成的故障诊断模块会对当前搜集到的故障信息及历史故障数据进行分析,精确定位出真正的故障部件并上报用户。(3)故障预警。服务器长时间运行后,虽然系统还未发生崩溃,但其内部有些部件可能已经在间歇或持续性地产生可恢复的故障/可纠正的错误(如ECC差错等)了。虽然这些故障暂时不影响业务,但对系统的持续运行带来了极大的风险,随时可能发生灾难性故障,导致系统宕机和业务中断。因此,如果能在部件真正失效前及早发现并采取计划内维护或热插拔等手段,则可有效避免系统计划外宕机。为此,故障诊断管理系统中集成了专家诊断系统,能根据大量的历史监控数据对系统各个关键模块的健康状态进行评估,对系统面临的风险进行预判。故障管理系统会在数据丢失或系统发生不可纠正或灾难性错误之前进行干预,配合各种故障隔离机制提前隔离风险部件,或者以事件或告警的方式提示用户。这类事件或者告警一般包含对问题的全面描述,包括具体的风险或者故障部件、严重性分类(信息、警告、严重、危急等)、可能的故障原因和建议措施等。用户可以在获知此类消息后进行计划内系统维护,实现防患于未然,确保业务的长期稳定运行。图3.53给出了TaiShan服务器的多层次协同RAS机制涉及的主要部件示意图。图3.53TaiShan服务器的多层次协同RAS机制涉及的主要部件示意图3.4.3TaiShan200服务器的鲲鹏加速引擎为了提升服务器系统的性能,TaiShan200系列服务器基于鲲鹏920处理器片上系统的硬件加速技术提供了软硬件融合的鲲鹏加速引擎(KunpengAcceleratorEngine,KAE)解决方案。TaiShan服务器的鲲鹏加速引擎支持对称加密、非对称加密和数字签名、压缩/解压缩等算法,用于加速SSL/TLS\h\h(6)应用和数据压缩,可以显著降低处理器的计算压力,提高处理器效率。借助加速引擎的软硬件整合解决方案,加速引擎对应用层屏蔽了其内部实现细节,用户通过OpenSSL或zlib标准接口即可以实现现有业务的快速迁移。目前,TaiShan200系列服务器的加速引擎可以支持的算法和模式包括:摘要算法SM3;对称加密算法SM4,支持CTR\h\h(7)/XTS\h\h(8)/CBC\h\h(9)模式,其中SM4-XTS模式仅支持内核态使用;对称加密算法AES,支持ECB\h\h(10)/CTR/XTS/CBC模式;非对称算法RSA,支持异步模型,支持密钥大小1024b、2048b、3072b或4096b;压缩/解压缩算法,支持zlib/gzip。1.加速引擎的功能结构随着异构计算架构的兴起,在通用CPU处理器之外增加额外的协处理器成为提升系统并行计算能力的一种有效选择。从一般意义上说,GPU、神经网络处理器(NPU)以及人工智能(AI)处理器等都可以算作是加速器的一种特殊形态。图3.54描述了一种基于PCIExpress总线的硬件加速器的功能结构示例。通常加速设备需通过系统存储管理单元(SMMU)与系统相连。根据加速设备的类型,可以将加速设备分为分离加速设备(例如PCIExpress扩展卡附加设备)、片上集成加速设备(例如鲲鹏920处理器片上系统的片上平台设备以虚拟PCIExpress设备的形式运作)和不支持共享虚拟地址(SVA)的老旧加速设备等。图3.54硬件加速器的功能结构硬件加速器以硬件复杂度的提高换取系统性能的大幅度提升,因而在服务器应用场景中扩展硬件加速器成为越来越普遍的选择。2.鲲鹏920处理器片上系统的硬件加速器抽象模型图3.55描述了鲲鹏920处理器片上系统的硬件加速器抽象模型。鲲鹏920系列处理器片上系统上的硬件加速器通过QM(QueueManager,队列管理器)模块与软件进行交互。QM模块提供了对虚拟PCIExpress接口的管理,可以实现基于SR-IOV的虚拟设备管理。QM模块管理着主存储器中的长度为1024的队列,软件把硬件加速任务写入主存队列中,QM模块获取队列元素的地址后交给硬件加速器,加速器根据该地址读出具体的加速任务并处理。硬件加速器处理完任务后从QM模块申请写回地址并更新队列元素,然后根据硬件配置上报中断。图3.55鲲鹏920处理器片上系统的硬件加速器抽象模型无论加速器使用多少个实际的加速单元,进程的请求状态都存储在队列中。因而无论处理器上运行的进程和线程如何切换,都不需要保留请求状态,这和协处理单元的操作方式不同。需要注意的是,队列中保存的进程请求上下文受QM模块的最大资源限制,软件设计师要充分利用这种能力,尽早释放不再使用的QM队列。3.TaiShan200服务器的鲲鹏加速引擎逻辑架构图3.56描述了TaiShan200服务器鲲鹏加速引擎的组成和逻辑架构。图3.56TaiShan200服务器鲲鹏加速引擎的组成和逻辑架构芯片加速器子系统是TaiShan200服务器鲲鹏加速引擎的核心,即集成在鲲鹏920处理器片上系统内部的硬件加速器。该子系统是加速器的硬件实现,对上层提供寄存器接口,不直接开放给客户访问。BIOS子系统是指TaiShan硬件产品自带的单板BIOS软件系统,主要负责根据许可证(License)权限确定应对加速器中的哪些模块进行初始化,并上报加速器ACPI表到加速器驱动子系统处理。BMC子系统即服务器BMC软件系统,也是TaiShan硬件产品自带的子系统。BMC子系统主要负责对加速器许可证的管理。对应用软件而言,加速器驱动子系统是系统功能实现的核心。加速器驱动子系统向上层软件提供各加速器模块统一的驱动接口,屏蔽底层硬件细节。应用库子系统包括OpenSSL加速器引擎、zlib替代库等,用于向上层软件提供标准接口。应用系统(APPs)是TaiShan200服务器鲲鹏加速引擎的用户系统,通过调用应用库子系统或驱动子系统实现加速器的功能。借助鲲鹏加速引擎,上层应用系统可以实现大数据应用、Web应用以及数据加密、智能安防和分布式存储等应用场景。为了方便应用程序使用鲲鹏硬件加速引擎,可以借助WD\h\h(11)加速器用户态库和WD加速器用户态框架(UsermodeACCElerator,UACCE)。UACCE是鲲鹏的软件工程师在Linux内核中加入的框架模块,公开的项目名称为WarpDrive。UACCE框架主要解决CPU、加速器和用户态之间地址共享的问题。WD加速器用户态库是配合UACCE使用的,两者结合起来可以让注册到UACCE框架的加速器硬件以用户态软件的方式访问内存,使得CPU和加速器两者之间可以建立基于FIFO的通信渠道。在用户打开一个加速器时,UACCE框架将给该加速器分配一个队列,同时把存储管理单元(MMU)和系统存储管理单元(SMMU)的页表合并。因此,对进程而言,CPU和加速器看到的地址空间将完全相同,进程可以根据需要把计算负载分配给加速器或者CPU执行。本书5.6节将给出鲲鹏加速引擎安装与使用的具体流程。\h(1)SATA即SerialAdvancedTechnologyAttachment,串行高级技术附件。\h(2)G表示Gb/s。\h(3)SDDC(SingleDeviceDataCorrection,单设备数据修正)。\h(4)FADC(FirstAreaDataCorrection,首区域数据修正)。\h(5)MADC(MultiAreaDataCorrection,多区域数据修正)。\h(6)SSL(SecureSocketsLayer,安全套接层)及TLS(TransportLayerSecurity,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。\h(7)CTR(Counter,计数器);\h(8)XTS(XEX-basedTweaked-codebookwithciphertextStealing,基于XEX密文窃取的可调整的密码本);\h(9)CBC(CipherBlockChaining,加密块链接);\h(10)ECB(ElectronicCodebookBook,电子密码本)。\h(11)WD即WarpDrive,曲率驱动。第4章鲲鹏软件生态和构架华为鲲鹏产品不仅仅局限于鲲鹏系列服务器芯片,更包含了兼容的服务器软件,以及建立在新计算架构上的完整软硬件生态和云服务生态。鲲鹏处理器作为全面兼容ARMv8-A64位体系结构的通用服务器芯片,支持通用的软件解决方案,华为集成ARM+Linux技术与生态,为鲲鹏应用开发提供了丰富的软件资源、应用迁移实践环境及开发套件。本章首先介绍鲲鹏软件生态,然后分析鲲鹏软件的构成,介绍鲲鹏服务器平台上开发软件的3类模式,最后详细介绍与鲲鹏平台密切相关的软件移植与性能调优问题,其中也包括了华为提供的工具套件的说明。4.1鲲鹏软件生态与云服务依靠开放的商业模式和授权机制,ARM公司与其合作伙伴构建了一个以ARM为核心的庞大的生态圈。鲲鹏作为通用的ARMv8处理器,是全球ARM生态中的重要一员,和ARM共享优势生态,目前已经构筑了相对完整的鲲鹏软件生态。当前鲲鹏不再仅仅局限于鲲鹏系列服务器芯片,更是包含了完整的服务器软硬件生态和全栈的云服务生态。该生态汇聚了芯片、服务器、操作系统、虚拟化容器、应用软件、云服务和多个通用水平解决方案及垂直行业解决方案等。4.1.1ARM授权机制在传统PC领域,半导体厂商的业务模式主要有两种。一种是像英特尔那样,作为一家垂直的集成芯片设计和制造公司。英特尔拥有从芯片的设计到芯片的生产和销售完整的产业链。在PC领域,英特尔推动着PC平台的定义和发展,其处理器成本也最终成为设备总成本的很大一部分。另一种是无晶圆厂(Fabless)模式。像NVIDIA、AMD那样,自己只设计芯片,物理制造则交给代工厂,如台积电、三星电子、UMC联电、GlobalFoundries等。无晶圆厂的半成品方式可以极大地降低成本,但设计最终还是要由代工伙伴来决定,产能、质量和时间进度或多或少不受控制。这有时会极大地影响企业将产品推向市场的能力。移动领域与PC/服务器领域不同,主应用处理器的成本很容易低于设备总成本的10%。ARM公司据此形成了独特的业务模型:它不向市场出售任何芯片,相反,ARM公司设计IP(包括指令集架构、微处理器、图形核心、互连架构等)并将其许可给任何想使用它的客户。然后,由ARM的授权持有人/合作伙伴/客户决定是否可以实际制造和销售该芯片。ARM公司提供三种不同类型的许可证授权:POP(ProcessorOptimizationPack,处理器优化包/物理IP包)授权、处理器授权和架构/指令集授权。POP授权是三种授权方式中等级最低的,客户可以直接购买使用ARM优化过的处理器方案,适用于需要ARM处理器却没有能力自己实现的客户。通过POP授权,客户可以快速开发出产品,授权费用也较低,但是处理器类型、代工厂、工艺等都是ARM规定好的,自由发挥的空间很小。处理器授权是使用ARM设计的微处理器或GPU的授权。客户不能更改设计,但是可以根据需要和购买的内核进行芯片设计和实现。ARM提供有关如何在硅片上实现设计的准则,但如何将设计变成芯片,如配置哪些模块、哪些外设、多少个核心、多少缓存、多高频率、什么工艺、谁来代工等问题,则由客户自行决定。架构/指令集授权是等级最高的授权。ARM向客户授权某种架构(例如ARMv7,ARMv8),客户可以随意采用该架构并按自己的意愿设计SoC(片上系统),如对ARM架构进行改造,甚至可以对指令集进行扩展和缩减。ARM会提供设计支持和一系列测试,以验证对实现的ARM指令集是否符合。这种授权费用很高,从某种程度上讲,在这种模式下设计出来的处理器在市场上和ARM公司自己设计的公版处理器会构成一定的竞争关系。在全球拥有这种授权方式的公司为数不多,都是研发实力比较强的公司,例如这些公司设计的处理器有苹果的Swift、Cyclone、Bionic,高通的Scorpion、Krait、Kyro,华为的麒麟、鲲鹏等。ARM指令集的发展是开放的。获得ARM指令集授权的企业不单是在内核与SoC芯片设计上拥有最大的自由度,而且可以根据市场需求对ARM指令集的升级换代提出修改意见,市场上成功的企业对ARM指令集发展的话语权将逐步增强,并实现对上层IP的影响,共建ARM的指令集发展。正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,以更加民主的合作伙伴为中心的芯片供应方法,与众多授权合作伙伴一道,形成了一个以ARM为核心的庞大的生态圈。4.1.2ARM服务器生态依靠开放的商业模式,ARM公司已垄断移动芯片市场,并携此进入了PC和服务器市场。目前,ARM服务器的生态已经相对成熟。在现今以云架构为主的信息技术体系中,通用服务器处理器的市场成功与否取决于指令集的统一性、芯片产品高性能和高稳定性、软硬件生态环境的开放和培育、开放的商业模式和产业合作等因素。在PC和服务器端,x86平台生态系统完善,有着统一的硬件、硬件开发环境和基础设施,许多应用的开发都是在x86机器上进行。在移动终端,ARM一骑绝尘,但它在终端的差异化和碎片化也导致了一些支持和设备方面的问题,服务器芯片市场需要长期的技术投资与软硬件生态系统的广泛支持。在服务器领域,客户往往希望能够实现新系统的“开箱即用”,并直接集成所选择的操作系统与应用程序。与移动应用不同,在服务器和基础设施领域为每个平台修改操作系统是不可接受的,因此一个基本的标准集对于服务器和基础设施市场尤其重要。标准允许不同产品之间在保持兼容性的同时,使各个合作伙伴能够在其中进行创新和差异化。为实现这一目标,建设稳定的ARM服务器生态系统,避免碎片化,ARM公司与合作伙伴一直在推动ARM服务器架构的规范化和标准化。ARM公司已经与整条基础设施供应链的各方实现了合作,包括芯片供应商、独立固件供应商、操作系统和虚拟机管理程序供应商、OEM厂商、ODM厂商、独立硬件供应商和云基础设施供应商等。基于开放的ARM芯片IP授权,众多厂商共同参与了ARM服务器架构规范标准的制定。在硬件架构和固件方面,ARM与合作伙伴共同定义了SBSA规范中的最低硬件要求,以及SBBR规范中的最低固件要求,从而尽可能利用行业标准创建新的ARM规范,以实现互操作性。规范要能验证才有意义,规范的验证是通过各种ARM合规性程序实现的,这些程序能够帮助开发人员确保其硬件完全符合ARM架构规范。ARM为SBSA规范和SBBR规范验证创建了架构合规性测试包(ACS)。ACS测试涵盖SBSA规范规定的硬件要求(CPU、中断、IOMMU、PCIe等)和SBBR规范定义的固件要求(UEFI、ACPI和SMBIOS测试)等。2018年,ARM公司推出基于ARM架构的服务器合规认证计划———ARMServerReady项目,旨在帮助用户安全、合规地部署ARM服务器系统。ARMServerReady项目确保基于ARM的服务器可以直接使用,并提供与标准操作系统、虚拟机管理程序和软件的无缝互操作。合作伙伴可以运行ACS测试套件,以检查其系统是否为ServerReady。符合ARMServerReady条款和条件的兼容系统将获授ARMServerReady证书。目前,ARMServerReady1.0版使用ACS1.6版,测试对象要符合SBSA3.1版和SBBR1.0版的规定。基础软件,如操作系统、工具链(编程语言和开发工具)和云基础软件(虚拟化和容器)等在Linaro等开源生态社区及各ARM服务器厂商的努力下达到了对ARM服务器的完全支持。主流的操作系统软件发行版(CentOS、OpenSuse、Ubuntu等)都依赖统一、开放的硬件架构标准。随着ARM64服务器对SBSA规范的不断支持和完善,这些主流的商用和开源操作系统都宣布了对ARM64服务器的支持。工具链也是基础软件生态的关键环节。目前主流的编译器(GCC、LLVM等)以及编程语言(C、C++、Java、Python、Go等)都提供了对ARM64位处理器架构的支持,并且在性能和稳定性方面都具备了商用能力。除此之外,ARM公司也一直致力于拓展、开发商用工具链产品,并针对具体应用场景进行深度优化,使这些产品在性能方面具备很强的竞争力。云基础软件主要包括虚拟化软件和容器。目前主流的开源虚拟化软件KVM(基于内核的虚拟机)和Xen(一款开源的Hypervisor)都提供了对ARM64位处理器架构的商用支持。在容器方面,Docker也提供了支持ARM64位处理器架构的商用版本,云基础软件生态已经构建。在开源软件领域,开源的应用软件及中间件阵容庞大,覆盖目前几乎所有的主流数据中心业务场景,例如云计算服务(OpenStack、Ceph、Kubernetes等),大数据业务(Hadoop、Spark等),高性能计算业务(OpenHPC),数据库(MySQL等)等。以Linaro为首的ARM64开源生态社区通过构建ERP(EnterpriseReferencePlatform),建立了与这些开源应用软件和中间件的协同。通过持续迭代和演进,使得ARM64服务器完全支持这些开源软件的运行,基本使能开源软件生态。以目前使用最广泛的云计算服务软件OpenStack为例,OpenStack社区在2016年10月正式宣布了对ARM64服务器的支持。在商用软件领域,ARM64服务器厂商一直积极和各个商用软件厂商展开合作,并获得了相关领域商用软件的支持。例如亚马逊和微软已经在各自的云(即AWS和Azure)中投资了ARM平台。随着合作的不断开展和深入,相信会有更多的商用软件支持ARM64服务器。随着ARM64服务器软件生态的不断完善以及硬件能力的不断提升,越来越多的开源软件社区及商用软件厂商会对ARM64服务器提供支持,为用户带来无差别的应用体验。在整机方面,随着AR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论