面向鲲鹏的创新架构
华为的鲲鹏920处理器以及后续的处理器系列,与传统的英特尔 x86处理器相比,存在以下3方面的不同:
- 具有更多计算核心,使得可以并行运行的算力大幅增加。
- 具有更加显著的 NUMA 特性,将导致并行处理线程间同步代价的提高。
- 处理器内部、跨处理器之间的核间通信能力(鲲鹏处理器提供 POE,Packet OrderEnforcement能力,实现核间通信消息包的保序能力),可以提升先前通过内存通信机制的通信效率。
为了提升数据库系统对处理器的有效利用率,保证数据库系统提供的面向客户的 SLA(服务水平协议),针对上述处理器之间的差异,面向鲲鹏处理器的数据库系统遇到很多挑战,特别是在面向事务处理的环境下。
- 事务处理时锁冲突的比例会大幅增加。在事务处理环境下,由于有更多数量 的处理线程同时在运行不同事务处理,对于系统中全局结构的修改将产生更大的冲突,而该冲突将导致处理器资源无法被充分使用,进而限制了数据库系统的可扩展能力和吞吐性能。
- 事务 处 理 的 时 延 将 在 比 较 大 的 范 围 内 波 动,无 法 很 好 地 满 足 面 向 客 户 的 SLA。由于在鲲鹏处理器环境下,NUMA 特性更加显著,导致内存访问的时延波动,特别是对一些原子操作(如 CAS、FAA 等),时延也会有较大的波动。最后导致单个事 务处理的时延有较大波动,这给保证客户的SLA 带来了一定的难度和挑战。
- 处理器内部以及处理器之间的核间通信能力提供了新的线程间同步机制。为 了有效使用核间通信能力(POE),需要重新架构数据库内部的通信机制,包括通信原语(如spinlock、lock等)的实现以及数据库内部线程间的协作机制。 面向鲲鹏处理器的数据库系统的创新架构,如下图所示。
图 面向鲲鹏处理器的数据库系统的创新架构
在openGauss系统的创新架构中包含如下创新内容:
- 基于核间通信能力实现了全新的并发原语机制,特别是自旋锁(spinlock)、读写锁(read/writelock)的实现。全新的并发原语操作与传统的使用原子操作(CAS、 FAA 等)实现的自旋锁[包括票据锁(ticketlock)、MCS锁(JohnM.Mellor-Crummey andMichaelL.Scottlock等]不同。全新的并发原语直接通过核间通信能力,而无须通过内存变量的原子性修改来达成协同一致,从而大幅提升了性能。
- 异步流水线机制。数据库系统在执行事务时,可以根据任务的特点,切分成很多个子任务,这些子任务可以由特定线程执行,并绑定在特定处理核上,另一方面,这些子任务之间的协同处理可以通过核间通信能力来实现。进而实现异步流水线的调 度/执行机制。
但是在鲲鹏芯片中,CPU 访问本地内存的速度将远远高于访问远端内存(系统内 其他节点的内存)的速度。由于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同 CPU 模块之间的信息交互。
为了高效发挥鲲鹏芯片的优势,openGauss在设计时考虑以下特点:
- 类似于多节点并行计算,计算和存储会在特定核上执行,即数据划分到不同的 CPU 模块和对应的内存,并在一个模块内考虑负载均衡的问题。
- 为了支持共享数据结构的全局访问,例如 LSN(LogSequenceNumber,日志序列号),XID(TransactionID,事务唯一标识)等数据类型,openGauss指派单独的核来进行处理,减少数据访问冲突。
- 为了提高 CPU 模块内资源的利用率和多核的并发能力,设计新型的 NUMA 事务处理方法,如基于数据进行事务分发,减少核间冲突等。
面向异构 AI昇腾芯片的创新架构
昇腾 AI芯片介绍
为了原生支持人工智能技术,大量 AI算法(如回归、聚类、深度学习等)和底层算 子(如张量计算)在落地中普遍存在3个问题:
- 存在大量矩阵运算,CPU 计算粒度较低,处理这类运算的效率较差。
- AI算法中存在较复杂的标量运算,需要更高性能的 CPU 来处理。
- 随着计算粒度要求的提升,芯片需要缓存更多的数据,数据宽度增加。传统数据库大多只是基于通用的 CPU 处理操作。
因此对于专门处理各类机器学习算法(如统计学习、深度学习、强化学习等)设计 的昇腾芯片,能够为智能数据处理和计算提供硬件支撑。以华为开发的昇腾芯片310/ 910为例,其核心部件包括 AICore、AICPU(ARM)、SVM(SupportVectorMachine, 支持向量机)大规模缓存,因此需要从5个方面对不同机器学习算子的计算能力进行 优化:
- 卷积、全连接操作:利用3DCube引擎提供矩阵乘法的核心算力。
- 池化(Pooling)、ReLU、BatchNorm、Softmax、RPN 等张量运算:通过 Vector 运算单元覆盖剩下的向量运算操作。
- 标量运算:用 Scalar运算单元完成控制和基础的标量运算,并集成专门的 AICPU,计算更复杂的标量运算。
- 数据宽度:数据宽度增加,丰富片上存储单元,用大数据 通 路 保 证 Cube/ Vector运算单元的数据供应。
- 协同运算:增加协同运算,对算法和软件进行协同优化。
此外,昇腾 AICore统一架构 DavinciCore的核心部件包括:
- Cube运算单元(矩阵乘);
- Vector运算单元(向量运算);
- Scalar运算单元(标量运算);
- MTE(数据传输管理);
- Buffer(高速数据存储);
- 指令和控制系统。
面对全场景中不同的企业和产品,这套架构能够提供丰富的接口,支持灵活扩展 和多种形态下的 AI加速板卡的设计,有效应对多样化客户数据中心侧的算力挑战,加 速 AI算法在数据库系统中的落地。昇腾310芯片架构,如下图所示。
图 昇腾310芯片架构示意图构
openGauss在昇腾 AI芯片下的技术创新
openGauss内核除了具备传统数据库 SQL 能力,同时还能将 AI推理、训练等操 作集成到数据库内完成,通过扩展 SQL语法来实现数据库内 AI的训练和推理,结合 昇腾 AI芯片对训练和推理过程的加速释放昇腾 AI计算能力,降低 AI开发成本,实现 训练、推理和管理数据一体化。DB4AI有如下特点:
- 库内集成 TensorFlow/MindSpore机器学习深度 框 架,在 数 据 库 内 部 实 现 CNN(ConvolutionalNeuralNetwork,卷积神经网络)、DNN(DeepNeuralNetwork, 深度神经网络)等算法,并探索基于昇腾芯片的对接与加速。
- 基于具体行业领域(如电信、智能驾驶业务场景)实现数据库的内置行业 AI 算法包,数据分析由“DB+BI”向“DB+AI”转变。探索数据库与机器学习算法的融合 优化技术,利用数据库优化器索引、剪枝等技术实现机器学习模型训练与推理过程的 加速。
- 数据库充分利用昇腾 AI芯片对 Vector、Cube等计算模型的加速能力,实现 传统数据库内聚集操作(Aggregation)、关联操作(Join)的加速。
openGauss与昇腾结合的 AI加速与计算加速架构如下图所示。
图 openGauss与昇腾结合的 AI加速与计算加速架构
智能芯片群调度模块
通过提供弹性的数据和系统资源访问接口,openGauss同时支持通用 CPU(x86 架构,SMP)、鲲鹏(ARM 架构,NUMA)、昇腾(异构计算)等多类芯片。为了更好地发 挥不同芯片群的优势,openGauss可以根据业务类型智能调度指定的芯片处理不同事 务。比如,对于常规数据库查询,openGauss使用通用 CPU 组处理;对于大规模数据 分析任务,openGauss根据访问的数据分布情况使用指定的鲲鹏 CPU 组处理;对于数 据库运行中使用的 AI模型,昇腾芯片组分别负责逻辑判断(AICPU)、模型训练和大规 模数据计算(Vector计算单元)。
小结
新型硬件的不断发展推动了数据库技术的革新。本章先介绍鲲鹏、昇腾的概念和 发展方向,然后介绍面向鲲鹏和昇腾两类新型硬件的数据库架构:利用 NUMA 架构 的鲲鹏芯片,提高数据库分布式、并行地处理大规模数据的能力;利用异构的昇腾 AI 芯片,加速 AI原生数据库的落地,提高基于 AI的数据库技术和智能数据分析服务的 执行效率。与此同时,可以看到,一方面数据库领域日益增长的需求(如分布式场景、 大规模数据分析等)促进了新型芯片的研究和发展;另一方面数据库的智能调度能力 进一步提高了新型硬件的使用价值和应用潜能。
Gauss松鼠会是汇集数据库爱好者和关注者的大本营, 大家共同学习、探索、分享数据库前沿知识和技术, 互助解决问题,共建数据库技术交流圈。