一文读懂面向数据中心的高性能通用RISC-V处理器技术(下)

关于我们 > 新闻动态 > 行业动态

摘要

指令集架构(ISA)是算力领域最重要的根技术之一,当算力成为核心生产力,培育并自主掌控指令集架构,事关我国数字经济发展,也是网络强国、数字中国等重大战略落地的重要保障。作为主流三大指令集架构之一,RISC-V以其开源、开放等特点,在全球范围内受到了高度关注,被认为是打破x86和ARM垄断,提高芯片竞争力的关键。然而,RISC-V起步较晚,在高性能通用计算领域的相关技术尚未成熟,产业呈碎片化状态各自独立发展,软件生态上接受度较低,暂时还无法形成对x86和ARM的挑战。本文从技术背景、产业动态、关键技术等方面进行了分析,探讨推动面向数据中心的高性能通用RISC-V处理器技术快速发展的可行方案。

 

一、面向数据中心的RISC-V关键技术

 

(一)黎明之前:高性能RISC-V技术的困难和挑战

 

当前,RISC-V核心指令集已经基本完备,并在工业控制、消费电子等领域获得较为广泛的应用,然而,在向数据中心等要求通用化、高性能领域发展的过程中,还面临一些困难和挑战。一是高性能算力技术尚未取得重大性突破。RISC-V处理器冲击高性能领域需要更完善的指令集、更优化的内核设计和更高效的多核互联能力,目前产业呈碎片化发展,产业各方主要依靠自身资源独立发展,目前尚未出现业界公认的高性能产品。二是RISC-V发展起步较晚,生态情况相比x86和ARM较为薄弱。硬件性能托底下限,软件生态决定上限,RISC-V要拓展到数据中心市场,软件生态非常重要,需要编译器、操作系统、中间件和应用等全栈软件的适配,当前RISC-V International和开源软件社区正在积极推动大量基础软件的适配工作,支持RISC-V获得更加优质、安全、可信赖及经过市场验证的软件体系支撑。三是RISC-V在数据中心等高性能领域缺乏优质的落地场景。要想加速RISC-V指令集架构的引入,需要挖掘规模大、业务聚焦、定制优化目标明确的落地场景,以点带面快速切入。

 

(二)内功心法:RISC-V处理器内核优化关键技术

 

面向数据中心的高性能通用RISC-V处理器走向成熟,需要在指令集及微架构设计方面进行有针对性的优化。

 

指令集:当前RISC-V包含了RV32I(32位整数指令集)、RV64I(64位整数指令集,兼容RV32I)、RV32E(32位嵌入式整数指令集,RV32I的子集)等基本指令集,以及M(乘除法指令集)、A(存储器原子指令集)、F(单精度浮点指令集)、D(双精度浮点指令集)、C(压缩指令集)、B(位操作指令集)、H(虚拟化指令集)、K(加解密指令集)、V(向量指令集)等扩展指令集。通常用G表示IMAFD这个较为“通用”的组合,也即RV32G代表RV32IMAFD的组合、RV64G代表RV64IMAFD的组合,RV32G和RV64G常用于工业控制、消费电子等领域,面向数据中心的高性能处理器还需根据需要扩展为RV64GCHKV。我们可以把上述这些指令集称为高性能处理器所必备的核心指令集,由于开源标准所定义的指令数较少,部分指令还未完全明确定义,进行技术攻关时,需要我们面向业务需求进行相应的指令扩展,对未明确定义的指令进行实例化补充,并推动成为开源标准。

 

超标量处理器:处理器从并行能力上可以划分为矢量处理器和标量处理器,矢量处理器一次可处理多个数据,性能高但设计复杂,通常用于超级计算机,而标量处理器一次仅处理一个数据,性能相对较低但设计简单,通常用于微型计算机。现代微型计算机设计中,为了提高标量处理器的处理性能,引入了流水线技术,部分型号还引入了矢量计算能力,称之为超标量计算机。高性能处理器均基于超标量处理器的模式进行设计和演进。

  3 处理器演进路线

 

多级流水线:现代处理器时钟频率很高,也即每个时钟周期很短,在一个时钟周期内不足完成所有的指令执行过程,为了充分挖掘处理器的潜力和性能,将一个指令执行过程分段完成。在一个标准的流水线参考设计下,通常包含取指、译码、执行、访存、写回五个阶段,在商用处理器具体实现时,对这个五个阶段进行细分或合并,确保每个阶段的执行时间几近相等,且小于一个时钟周期,总体上实现高频高效。然而分段执行又会带来新的问题,由于不同阶段都有相应的电路单元负责处理,这个电路单元在完成其所负责的工作,并把执行过程交付给负责下一阶段的电路单元后,它即进入空闲状态,造成了极大的资源浪费,为了将这部分空闲时间利用起来,高性能处理器引入了多级流水线技术,也即充分利用这个空闲期去执行下一个指令的相应阶段,实现了宏观上的并行能力,从而提高性能。主流处理器的流水线级数为13左右,级数太多时,分支预测错误的代价将会变大,性能反而可能降低。

 

 4 多级流水线技术示意图

 

乱序执行:多级流水线下,一部分指令被提前执行,处理器需解决这些被提前执行的指令的相关性(比如一条指令需引用另外一条指令的执行结果,则它就不能被提前执行),高性能处理器通过乱序执行技术,将译码后的指令发送到指令缓存区,然后对缓存区中的指令按照相关性重排序,将不能立刻执行的指令搁置、并将可以立刻执行的指令提前执行,执行结果送往重排区重排,以使其保持原有执行顺序。乱序执行避免了各种因素导致的指令流水线停滞,从而提高效率。

 

   

 5 乱序执行原理图

 

寄存器重命名:通过寄存器重命名的方式可以解决一部分相关性问题,使得乱序执行的效率更加高效。以读后写(指令A读取寄存器数据,然后指令B改写该寄存器数据,Write After Read,WAR)为例,由于写操作不依赖于现有数据,可以将写指令的相关寄存器进行重命名(使用新的寄存器写数据)、读操作保留原来名称(使用原寄存器),从而断开两条指令的相关性。RISC-V指令定义了32个寄存器(称为逻辑寄存器),而处理器实际设计了更多寄存器(如128个,称为物理寄存器),寄存器重命名可以充分利用这些多出来的寄存器,将空闲的物理寄存器的名称重命名为逻辑寄存器名称(如上述WAR写操作所用的寄存器),确保一批乱序的指令间的相关性将至最低。

 

 

6 WAR寄存器重命名示意图

 

分支预测:基于多级流水线的指令体系下,当遭遇分支指令时(如for语句),需要引入分支预测技术,预测其后续要执行的真正指令,并送往指令缓存区乱序执行,并在预测错误时进行回退。分支预测由分支预测器实现,一个经典的2-bit饱和分支预测器(其它高级分支预测器大多基于其改良实现)下,用2bit代表预测结果,其中1X(11和10)代表预测跳转(取跳转的目标地址的指令乱序执行)、0X(01和00)代表预测不跳转(取后续指令乱序执行),初始状态为00,且当指令实际跳转时当前值加1、当指令实际不跳转时当前值减1(溢出时不改变数值)。2-bit饱和分支预测器实现效果为连续2次遭遇跳转或不跳转后,才将预测结果置为跳转或不跳转,2-bit饱和分支预测器的准确率一般低于95%,仅能满足基本需要,且高准确率时的代价较大,高性能处理器还需引入更为高级的分支预测器(如TAGE等),并基于应用场景优化,才能达到满意效果。

  7 2-bit饱和分支预测器执行流程

 

多发射:多发射指能同时执行多条指令的处理器流水线。‌这种设计将取指和译码实现并行,‌一次性取出多条指令,‌然后分发给多个并行的指令译码器进行译码,‌并交给对应的不同功能的执行单元去处理,可以简单理解为有多条流水线。‌多发射流水线的指令和数据通路相比于单发射流水线来说都变宽了,‌因此对数据和指令的供应能力提出了更高的要求,‌例如,每时钟周期可取4条指令译码、可发射6条指令执行和写回,发射宽度通常用可同时译码的数量表示。多发射流水线的出现,‌极大地提高了处理器的性能,是高性能处理器的一个重要优化方向,主流处理器的译码宽度为6左右。

 

 

 8 两发射的流水线示意图

 

缓存结构:现代处理器通常采用多级缓存的技术,也即存储器按快到慢(记为从高到低)依次为L1 Cache-L2 Cache-L3 Cache-内存-硬盘。根据动态算法,变热的数据将会缓存到高一级的存储器,并替换掉变冷的数据(高一级的存储器已写满时)。高性能处理器下,多级缓存的结构及相关技术是一个优化重点,主要包括多个方向:缓存容量、总线位宽、TLB快表、组相连结构、缓存一致性算法等。缓存容量、总线位宽的扩充能显著改变性能,但会消耗更多的面积;TLB快表比L1更高位,它拥有接近寄存器的速度,缓存了最可能被访问的指令或数据的位置,以备命中时的快速访问,因此优化TLB快表也是提高性能的手段之一;组相连结构描述了内存数据如何缓存的方法(缓存的基本单元为Line,内存的基本单元为Page,N路组相连时,每个内存页可以被缓存到N个缓存线,如果缓存线已满则按一定规则替换掉其中一个缓存线),四路或八路组相连较为常见,性能也接近其能优化的上限;缓存一致性算法的优劣决定了当缓存到多个位置的数据被更改时,通过失效、更新等手段维护数据访问的一致性的效率。

 

 

 9 两路组相连原理图

 

(三)外功招术:RISC-V软件生态

 

RISC-V拥有较为完备的工具链支持,它可以帮助用户可以快速移植业务系统。同时,在RISC-V International、开源软件社区的共同努力下,目前常用基础软件大多都已发布了支持RISC-V的版本,如Fedora、RHEL、SuSE、Ubuntu、OpenEuler、OpenKylin等Linux操作系统发行版,gcc、gdb、llvm、glibc、binutils等编译器工具,OpenJDK、Python、Go、C/C++等语言运行时,JeMalloc、OpenSSL、OpenBLAS、Numpy等系统库,OpenStack、K8S、Docker等云计算软件。

 

然而,构建成熟的RISC-V软件生态仍是一段长期而又艰难的征程。一方面,基础开源软件不能直接用于商用系统,还需经过大量的商用加固和调测;另一方面,海量上层应用软件向RISC-V移植需消耗巨大的人力、物力,除了个别领域(如信创),尚未有足够的技术或成本上的因素支撑用户向RISC-V切入。

 

推动RISC-V软件生态可考虑选取一个有代表性的、有自主可控需求、软件来源相对简单的应用场景(如电信云系统、大型企业私有云等,承载5G等业务的NFV系统是最佳选择),定向优化、快速突破,从而形成示范效应,以点带面、迅速推广。

 

二、中国移动研究院的RISC-V技术探索

 

近两年来,中国移动研究院致力于探索数据中心高性能RISC-V处理器技术,以网络云5G、6G及无线基站等业务为突破点,与中科院计算所及奕斯伟、算能等主流国产化芯片企业合作,通过提取业务的计算特性及在业务功能、硬件规格、基础软件、节能减排等多方面的需求,促进RISC-V指令集定制扩展和内核微架构优化,推进RISC-V处理器原型及服务器芯片、整机研发。

 

当前,通过联合技术攻关,已形成了《面向数据中心通用业务的RISC-V指令扩展草案》,提出14条扩展指令及86项指令实例化方案,拟推向开源标准。此外,还基于开源玄铁C910探索RISC-V处理器核微架构优化方案,形成37万行RTL代码,通过仿真测试,可提升了18.4%分支预测准确率、5.9%流水线性能和8.2%缓存命中率,正积极推动FPGA硬件原型研发。同时,形成了包含120余项业务需求的《面向虚拟化5G、6G及无线基站业务的RISC-V处理器设计书》,成为RISC-V处理器芯片及整机开发的重要依据。

 

未来,中国移动研究院还将致力于协同产业链共同推动技术进步,打造RISC-V行业标准,构建RISC-V应用示范区,促进RISC-V产品研发、技术测试和商用成熟。

 

审稿:网络与IT技术研究所 | 张昊、陈佳媛

 

本文作者


吴平松  网络与IT技术研究所就职于中国移动研究院,主要从事网络云、处理器芯片等领域的方案设计、标准制定和项目管理工作。

  兵  网络与IT技术研究所就职于中国移动研究院,主要从事硬件、CPU、指令集等方向的研发工作。

邹博韬  网络与IT技术研究所就职于中国移动研究院,主要从事硬件、CPU、指令集等方向的研发工作以及网络云试点测试工作。

姚晓霞  网络与IT技术研究所就职于中国移动研究院,主要从事硬件、CPU、指令集等方向的研发工作。

 

本文源自:中移智库

2024-09-16 13:00