RISC-V MCU中文社区

RISC-V 加速芯片,496核!RTL开源!

分享于 2020-04-14 13:24:04
0
3098

来源:wikichip

Celerity是在多家大学共同努力下,而创造的一个开源多核RISC-V分层(tiered)加速器芯片。该项目是DARPA快速电路实现(Circuit Realization At Faster Timescales:CRAFT)计划的一部分,该计划希望将定制集成电路的设计周期从几年缩短到几个月甚至几周。Celerity团队首先在Hot Chips 29上展示了该芯片。在去年的VLSI 2019上,Celerity团队谈论了其第二代芯片的PLL和NoC。此外,Celerity的RTL设计已在其官网开源提供下载!接下来先对整个CeleritySoC做一个快速概述,Celerity是一个多核多层的AI加速器。总体而言,该芯片包括三个主要层:通用层,大规模并行层和专用层。为什么要使用分层SoC?主要原因是为了在典型的CPU设计上实现高灵活性和更高的电源效率(尽管效率不及ASIC NPU)。通用层几乎可以执行任何操作:通用计算、内存管理以及控制芯片的其余部分。因此,他们集成了Free Chip Project的五个高性能乱序RISC-V Rocket内核。下一层是大规模并行层,它将496个低功耗定制设计的RISC-V内核集成到一个网格中。这些称为Vanilla-5的自定义内核是有序标量内核,其占用的空间比Rocket内核少40倍。最后一层是集成二值神经网络(BNN)加速器的专业化层。这三层都是紧密链接的,并与以400 MHz的DDR存储器接口。


Celerity上的多核网络(Manycore Mesh)时钟由一个定制的锁相环(PLL)提供。这是一个相当简单的一阶ΔΣ频率数字转换器(FDC)PLL。该实现单元采用16个DCO组成一个组,每个实现单元为环形振荡器,其中反相元件加载有如下幻灯片上的电路图所示的NAND门fce,如以下幻灯片中的电路图所示。这样做是为了仅使用标准单元来实现整个设计。为此,整个数字PPL是一个完全综合和自动放置和路由设计。该PLL在其16纳米芯片上的频率范围为10 MHz至3.3GHz。


与许多学术项目一样,硅面积也非常重要的,整个芯片为25平方毫米(5×5)。对于Celerity而言,许多关键的架构设计决策都以限制硅面积的需求为主导,这意味着降低了复杂性。Manycore本身是16乘31的Vanilla-5 RISC-V小型内核阵列。该阵列的第32行用于外部主机,该主机用于与芯片上的其他组件连接(例如,将消息/数据发送到Rocket核心进行最终处理)。整个网格为3.38毫米乘4.51毫米(15.24毫米²),约占整个芯片的61%。Vanilla-5核心是5级有序流水线RV32IM核心,因此它们支持整数和乘法扩展。硅芯片实现,这些内核能够达到1.4 GHz,比他们在Hot Chips 29上展示的第一个硅芯片高350 MHz。
为了降低多核阵列的复杂性,Celerity利用分区的全局地址空间进行单芯片数据包和远程存储编程模型。


该阵列利用了全局分区地址空间(GPAS)。换句话说,不是使用高速缓存,而是使用32位地址方案将整个内存地址空间映射到网络中的所有节点上。这种方法也意味着无需虚拟化或转换,从而大大简化了设计。他们声称,与等效的一致性缓存系统相比,该设计可将区域开销降低20倍。值得指出的是,由于该多核阵列的目标工作负载是AI加速(相对于更通用的计算),因此它们可以采用显式分区(explicitly partitione)的暂存器存储方案,因为这些工作负载表现出高度并行的定义良好的独立流模式。而且,对于这种类型的代码,控制存储器局部性的能力可能证明是非常有利的。阵列中的每个核都可以自由执行加载并存储到任何本地地址,但是,它只能执行对远程地址的存储。没有远程负载意味着它们将路由器面积减少了10%,并且由于可以对远程存储进行流水线处理,因此可以防止流水线停顿。
这种远程存储编程模型方案允许他们使用两个网络,实现这一个数据网络和credit网络用于管理未完成的存储。


如前所述,第32行用于外部主机。实际上,这意味着内存映射扩展到位于阵列底部的16个路由停靠点,允许消息进出多核阵列,到达芯片上的大核和其他外围设备。
Celerity并没有使用非常常见的wormholerouting(被Kilocore,Piton,Tile64等使用),而是将地址和数据合并到单个flit数据包中。该设计摆脱了发送数据和元数据都需要的头/尾部信息。另外,由于没有保留的路由,它摆脱了HOL阻塞。每个flit均为80b宽-控制位16位,数据位32位,节点地址位10位,存储器地址位22位。flit节点地址保留了将数据发送到任何目的地的能力。该设计的主要好处是,由于仅将单个flit注入网络,因此可以使用一个有序管道在每个周期中执行一个存储。


在多核阵列中的496个节点中,每个节点都有一个路由。路由本身在每个基本方向(N,S,E,W)的输入处都包含两个元素的FIFO,以及在网络拥塞情况下用作临时存储的控制处理器。他们使用循环仲裁(round-robin arbitration)来确定数据包的优先级,从而可以在每个周期对每个方向进行仲裁(arbitrate )。他们使用尺寸顺序的布线(在一个方向上减小偏移,然后再移动到另一方向)。通过简单的设计,他们可以将整个路由实现为单级设计,而节点之间没有管道寄存器。换句话说,每跳只需要一个周期。例如,任何相邻的核心存储区的延迟只有3个周期-转到本地路由,跳到相邻路由,最后去邻居的记忆空间,路由器与内核位于相同的时钟域,这意味着它们还可以在高达1.4 GHz的频率下运行。有两个网络-一个数据网络和一个credit计数器网络。该路由器使用一个受源代码控制的credit计数器,每当一个远程存储包被注入网络时,该计数器就会递减。通过credit计数器网络返回,该网络使用与上面描述的数据相同的架构,但只有9位,因为它只包含节点地址。


那么,这些意味着什么呢?Celerity团队报告了在600 mV至980 mV工作频率从500 MH一直到1.4GHz。我们相信Celerity现在是时钟频率第二高的大学芯片,仅次于Kilocore(尽管值得指出的是,由于封装方面的限制,Kiloecore只能支持其1000个内核中的160个)。在1.4 GHz时,整个网格的最大计算能力为694.4 INT 32 GOPS。他们以每秒Giga-RISC-V指令(GRVIS)而不是GOPS报告其数字,以便强调一个事实,即这些指令是完整的RISC-V指令,而不仅仅是整数运算。请注意,由于Vanilla-5内核是RV32IM,它们支持RISC-V整数和乘法扩展,但不支持浮点运算,因此所有AI工作负载都必须进行量化。由于将节点互连的路由器与核心位于相同的时钟域,每个路由器每个周期支持5个flit,因此每个节点的总聚合带宽为748Gbps,总聚合网络带宽为371Tb/s。


不幸的是,Celerity团队没有报告任何与人工智能相关的常见基准测试结果。相反,他们选择使用CoreMark,当他们达到580.25 CoreMark /MHz时,总得分为812350。CoreMark在过去几年中一直是RISC-V社区的比较基准。CoreMark的问题在于,它通常会为简单的有序设计生成令人难以置信的乐观分数,这些设计似乎能够很好地与调优的现代无序设计竞争,而真实世界的工作负载则显示出非常不同的结果。鉴于该芯片的前提是产生一个高度灵活的人工智能加速器,我们希望鼓励Celerity团队产生更有意义的结果,如正式的MLPerf提交。
Celerity的开源RTL设计已在Celerity网站公开(开源链接:opencelerity.org/),部分截屏如下:

*免责声明:以上内容仅供交和流学习之用。如有任何疑问或异议,请留言与我们联系。
3098 0

你的回应
oomdy

oomdy 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板