购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 RISC-V开源项目

相比于其他商业化处理器架构,RISC-V的开放性、灵活性和可扩展性使其在硬件设计、芯片制造、系统集成等方面更加灵活和自由,越来越多的企业、组织和个人通过参与RISC-V开源生态来开发和定制适合自己需求的处理器,从嵌入式系统到高性能计算,从教育到工业应用,产生了许多优秀的开源处理器项目,涵盖了从芯片设计到编译器、操作系统、开发板等完整的软件和硬件解决方案,RISC-V开源生态正在逐渐发展和壮大。

下面将对加州大学伯克利分校、PULP组织、OpenHW组织、lowRISC组织、平头哥、北京开源芯片研究院、印度理工学院马德拉斯分校等机构的开源处理器项目进行简要介绍,包括它们的特点、优势和应用领域等,如表2-13所示。由于RISC-V的开放性和活跃性,很多不同的项目不断涌现,本节的介绍只是其中的一部分,希望读者能够通过本节的介绍对RISC-V开源生态有一个初步的了解。

表2-13 RISC-V开源处理器项目简介

(续)

2.4.1 加州大学伯克利分校

RISC-V指令集最初是由加州大学伯克利分校(University of California Berkeley,UCB)的研究团队在2010年开始开发的用于处理器设计和研究的新一代指令集体系结构。UCB的体系结构研究人员基于RISC-V指令集进行了一系列处理器内核的开发工作,并陆续开源了Rocket Core、BOOM这两款处理器内核生成器以及一款SOC设计生成器Rocket Chip。

Rocket Core是一款使用Chisel语言开发、实现了RV64G指令集的5级顺序执行流水线的标量处理器内核生成器,它具有虚拟内存、非阻塞缓存和分支预测等功能特性,并且支持M、S、U等特权模式。对于分支预测,Rocket Core的分支目标缓存BTB、分支历史表BHT和返回地址栈RAS等均是可配置的。此外,Rocket Core的M、A、F、D指令集标准扩展、浮点运算部件的流水线级数、cache和TLB的大小均是可以配置的。

BOOM(Berkeley Out-of-Order)Core是一款使用Chisel语言开发、实现了RV64G指令集的乱序超标量处理器内核生成器,其设计借鉴和吸收了许多MIPS R10000和Alpha 21264的特点,为深入研究乱序超标量处理器内核的微结构提供了基准参考。BOOM Core利用分支目标缓存BTB、返回地址栈RAS和分支预测器实现了全分支预测,并且其LOAD操作和STORE操作可以实现乱序执行。类似于Rocket Core,BOOM Core的取指、译码、发射和提交的宽度以及功能单元、cache、浮点运算部件等均是可以配置的。

Rocket Chip是UCB的体系结构研究人员以便利技术研究和工业应用为目的开发的一款SOC可综合RTL代码生成器。不同于固定的SOC设计的例化,Rocket Chip充分发挥Chisel硬件描述语言在参数化配置方面的优势,可以集成多种内核、cache和互联总线到同一个SOC上,可以生成一系列不同的SOC设计方案。Rocket Chip可以使用多种通用处理器内核,例如Rocket Core和BOOM等。对于希望探索提升处理器执行效率的SOC设计者来说,Rocket Chip支持使用指令集标准扩展的自定义加速器、协处理器或者其他类型处理器内核的集成。Rocket Chip生成的SOC设计已经通过了多次流片的检验,基于其构建的硬件系统能够稳定运行Linux系统。

2.4.2 PULP组织

PULP(The Parallel Ultra Low Power Platform)是瑞士苏黎世联邦理工学院与意大利博洛尼亚大学的研究人员在2013年为探索面向超低功耗处理的体系结构而成立的全球非营利开源组织,该组织的目标是开发出开放、可扩展的、能够在毫瓦级别运行的软硬件平台,满足需要灵活处理多种传感器数据的IOT应用的计算需求,如加速度计、低分辨率相机、麦克风阵列和生命探测仪等设备。

PULP组织陆续开发了Snitch、RI5CY、Ariane、Zero-riscy等多款基于RISC-V架构的处理器内核。Snitch是一款基于RV32[E|I]指令集并且追求最小面积和高能量效率的32位顺序执行单级流水线的标量处理器,它具有较高的可配置性和广泛的应用范围,覆盖从单核控制应用场景到大型多核的超算领域。随着所开发开源项目的数量逐渐增加,为了聚焦精力在主要研究方向,PULP将其开发的多款开源处理器项目移交给其他硬件开源组织进行维护,例如将RI5CY、Ariane移交给OpenHW组织,Zero-riscy移交给lowRISC组织,这几款开源处理器项目将在后面的内容中介绍。

此外,PULP组织还开发了AXI总线解决方案、DMA驱动、各种外设、微控制器SOC设计等开源项目。

2.4.3 OpenHW组织

OpenHW是由其成员和个人贡献者组成的非营利性的全球开源硬件组织,硬件工程师和软件工程师参与该组织协作开发开源处理器内核及相关的IP、工具和软件等,OpenHW组织提供了行业最佳的高质量开源硬件开发的基础设施。CORE-V系列RISC-V开源处理器内核是OpenHW组织开发和维护的主要开源处理器项目,包括应用级和嵌入式级两类,CORE-V系列的目标是提供符合行业标准的内核IP,以促进设计的快速创新和推动SOC设计开发,CORE-V系列处理器内核的开发路线图如图2-3所示。

图2-3 CORE-V系列处理器内核开发路线图

CORE-V系列应用级处理器主要有CVA5、CVA6和CVW等三款。CVA5是基于RV32IMA指令集的面向FPGA设计的处理器内核,其用SystemVerilog语言开发,拥有高度的可扩展性和可配置性,CVA5的流水线支持并行、流水线长度可变的执行单元和其他新开发执行单元的集成。CVA6最初源于PULP组织的Ariane处理器项目,是基于RV32GC或RV64GC指令集的顺序执行、6级流水线的标量处理器内核,支持M、S、U等特权模式,能够满足类UNIX操作系统的运行,CVA6的PTW、TLB以及分支预测器各部件均是可以配置的。CVW(CORE-V Wally)是基于RV32I、RV32E或RV64I基础指令集和A、C、D、F、M指令集标准扩展的顺序执行、5级流水线的标量处理器内核,支持可配置的cache、分支预测器、虚拟存储、AHB总线和外设等,CVW主要面向教学使用,并且配备了计算机体系结构的教材和课程。

CORE-V系列嵌入式级处理器主要有CVE20等2级流水线内核和CV32E40P、CV32E40S、CV32E40X、CV32E41P等4级流水线内核。CVE20源于lowRISC组织的lbex项目,与lbex项目的最初源头PULP组织的Zero-riscy项目目标一致,同样追求低功耗的设计目标,是一款基于RV32[E|I][M]C指令集的低复杂度、低功耗的顺序执行2级流水线的处理器内核,在控制、低计算密度的应用领域具有较高的能量效率,其设计已经经过了工业级别的验证和多次流片的检验。CV32E40P、CV32E40S、CV32E40X、CV32E41P这四款处理器内核均源于PULP组织的RI5CY开源处理器项目,RI5CY内核最初是基于OpenRISC指令集开发、由PULP组织维护的,后来改用RISC-V指令集实现并移交OpenHW组织维护,RI5CY内核拥有32位顺序执行4级流水线结构,这四款处理器内核的流水线结构相似,仅有些许不同,它们针对不同的应用领域进行了针对性的设计,实现了不同指令集标准扩展。CV32E40P基于RV32IM[F|Zfinx]C指令集和硬件循环、SIMD、位操作、后增等自定义DSP扩展指令,实现了较高的代码密度、性能和能量效率;CV32E40X主要面向计算密集型应用,并且提供了支持自定义指令的通用扩展接口;CV32E40S主要面向安全应用领域,其提供了M、U等特权模式、增强型PMP机制和其他多种防篡改安全特性;CV32E41P基于CV32E40P开发,在CV32E40P基础上增加了Zfinx、Zce指令集标准扩展的实现。

2.4.4 lowRISC组织

lowRISC组织最初源于英国剑桥大学的计算机实验室,是一家聚集了软件工程师、硬件工程师和全栈技术专家的全球非营利组织,其致力于开发和维护处理器内核和SOC设计、硬件安全、芯片验证、RISC-V工具和LLVM编译器等软硬件开源项目,并提供下一代处理器产品开发所必要的验证、高质量IP和工具等基础设施。

lbex最初源于PULP组织的Zero-riscy项目,是基于RV32[I|E]MCB指令集的2级流水线处理器内核,它使用SystemVerilog语言开发,具有很强的可扩展性,很适合应用在嵌入式控制场景中。lbex是一个高质量的处理器内核开源项目,开源了RTL代码、基于UVM的全套验证环境、文档资料和开发工具等,并且已经经过了充分的验证和多次流片的检验。

OpenTitan项目是lowRISC组织与谷歌、苏黎世联邦理工学院、西部数据等商业和学术机构协作开发机制的成功范例,是第一个为硅信任根芯片构建透明、高质量参考设计和集成指针的开源项目。为了加强服务器底层的硬件安全防护,谷歌最初开发出Titan硅信任根芯片来保障云基础设施的启动安全,后来开源成OpenTitan项目,由lowRISC组织协同谷歌及其他商业和学术伙伴共同管理和维护,OpenTitan中有lbex内核和非对称加密算法协处理器内核OTBN这两个处理器内核。

此外,lowRISC组织的64位SOC设计原型项目目前基于Rocket内核,基于Ariane内核的开发也正在进行中,该项目提供了面向FPGA开发的SOC发行版本、开源外设以及相关的文档等,lowRISC组织致力于提供与闭源IP相同质量的开源IP的完整设计。lowRISC组织还领导着RISC-V LLVM的上游工作,提供一个高质量的软件栈是对开源硬件、新型安全机制和设计后灵活性等工作的重要补充,lowRISC组织正帮助RISC-V开源标准被采用并持续推动RISC-V开源社区向着高质量开源方向发展。

2.4.5 平头哥

平头哥半导体有限公司是阿里巴巴集团旗下的半导体芯片企业,它积极参与RISC-V生态的构建。在国际标准建设中,平头哥领导了其中的11个主要技术小组,推动了29个技术方向的标准制定,是公认推动RISC-V国际标准建设的最大的中国机构。为了推动RISC-V生态的构建和体系结构研究,平头哥开源了其旗下四款覆盖低、中、高端应用场景的玄铁系列E902、E906、C906和C910等处理器。

E902基于RV32E[M]C指令集,采用顺序执行的2级极简流水线并对执行效率等方面进行了增强,可进一步选配安全执行环境以增强系统安全性,适用于对功耗和成本极其敏感的IOT、MCU等领域。E906基于RV32IMA[F][D]C[P]指令集,采用单发射顺序执行的5级整型流水线,并可选性能优异的单精度或单双精度浮点单元以及32位标量DSP计算单元,适用于无线接入、音频、TWS、中高端MCU、导航等应用领域。C906基于RV64IMA[F][D]C[V]指令集,采用单发射顺序执行的5级整型流水线,并可选性能优异的单双精度浮点和128位矢量运算单元,标配内存管理单元,可运行Linux等操作系统,适用于消费类IPC、多媒体、消费类电子等应用领域。C910基于RV64GC指令集,采用3发射、8执行深度乱序执行的12级流水线,并针对算术运算、内存访问以及多核同步等方面进行了增强,配有单/双精度浮点单元,可进一步选配面向矢量运算引擎,同时标配内存管理单元,可运行Linux等操作系统,适用于人工智能、5G、边缘服务器等对性能要求很高的应用领域。

2.4.6 北京开源芯片研究院

“香山”高性能开源RISC-V处理器项目由中国科学院计算技术研究所在2019年发起,致力于打造面向世界的体系结构创新开源平台,服务于工业界、学术界、个人爱好者等的体系结构研究需求,同时探索高性能处理器的敏捷开发流程,建立一套基于开源工具的高性能处理器设计、实现、验证流程,大幅提高处理器开发效率、降低处理器开发门槛。“香山”是64位6发射乱序执行的处理器,性能对标ARM Cortex-A76。目前,“香山”处理器已经过雁栖湖架构、南湖架构的两版迭代,目前香山第3版昆明湖架构正在开发中,“香山”处理器是目前国际上性能最高的开源高性能RISC-V处理器核,是国际上最受关注的开源硬件项目之一。2021年12月,在中科院和北京市的大力支持下,组织国内一批行业龙头企业和科研院所成立北京开源芯片研究院,围绕“香山”进行联合开发,形成示范应用,加速RISC-V生态建设。

2.4.7 印度理工学院马德拉斯分校

SHAKTI处理器最初是印度理工学院马德拉斯分校(IIT-Madras)在2014年发起的学术研究项目,目标是提供产品级别的处理器、完整的SOC设计、开发板以及基于SHAKTI的软件平台,这是印度的第一款国产微处理器,它完全开源,致力于消除学术界和工业界的鸿沟以及提供创新和免费的个性化解决方案。

SHAKTI处理器项目是满足不同市场和性能需求的处理器家族,包含单核处理器系列、多核处理器系列、试验性处理器系列等处理器。在单核处理器系列中,E-Class处理器是顺序执行的3级流水线结构,瞄准低功耗、低计算需求的应用,能够运行RTOS操作系统,面向物联网、电机控制以及机器人平台等嵌入式应用领域;C-Class处理器是高度优化的顺序执行的5级流水线结构,支持MMU,能够运行Linux和Sel4操作系统,能够以0.5GHz到1.5GHz的频率运行中等的计算或控制应用负载;I-Class处理器拥有乱序执行、多线程、分支预测、非阻塞缓存以及深度流水线等高性能技术特性,面向移动计算、存储和网络应用,目标频率是1.5GHz到2.5GHz。在多核处理器系列中,M-Class处理器面向桌面端主流消费级市场,最多支持八核心,可以是I-Class或C-Class内核的组合,其设计目标是提供高性能、低功耗和高可靠性的解决方案,适合运行操作系统、图形界面和应用程序;S-Class处理器面向工作站和企业级服务器应用负载,最大支持32核,其基本内核是支持双核多线程的增强型I-Class处理器内核;H-Class处理器面向高度并行企业级、高性能计算和分析应用负载,具有高单线程性能,可选四级缓存,支持Gen-Z Fabric互连总线和存储级内存,其设计目标是提供高吞吐量、低延迟和高可扩展性的解决方案,适合运行大规模并行计算、机器学习和人工智能等任务。在试验性处理器系列中,T-Class处理器是增加了轻量级安全扩展的处理器,可以防范缓冲区溢出等存储攻击;F-Class处理器是探索提高可靠性和容错性技术的处理器,可以包容软件或硬件等错误,特别适合在辐射环境(如太空和核应用)中使用。 qg9S5tG+yNLBehiViwaY05MLL8kw1wPR/pnJjrR7Yhoxt1642hDD37VOf/Y4/zGd

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开