一个拥有496个核心的RISC-V芯片

作者:yupvip  阅读量:31  时间:2个月前

对于那些不熟悉Celerity的人,我可以告诉你,这是在多家大学共同努力下,而创造的一个开源多核RISC-V分层(tiered)加速器芯片。该项目是DARPA快速电路实现(Circuit Realization At Faster Timescales:CRAFT)计划的一部分,该计划希望将定制集成电路的设计周期从几年缩短到几个月甚至几周。Celerity团队首先在Hot Chips 29上展示了该芯片。

去年,在VLSI 2019上,Celerity又回来谈论其第二代芯片的PLL和NoC。演示文稿由密歇根大学的Austin Rovinski进行。

下面我们先对整个Celerity SoC进行快速概述:它是一个多核多层(many-core multi-tier)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.3 GHz。

与许多学术项目一样,硅面积也非常重要的。我们看到,整个芯片为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利用分区的全局地址空间进行单芯片数据包(single-flit packets)和远程存储编程模型。

该阵列利用了全局分区地址空间(global partitioning address space:GPAS)。换句话说,这个芯片不是使用高速缓存,而是使用32位地址方案将整个内存地址空间映射到网络中的所有节点上。这种方法也意味着无需虚拟化或翻译,从而大大简化了设计。他们声称,与等效的一致性缓存系统相比,该设计可将区域开销降低20倍。

值得指出的是,由于该多核阵列的目标工作负载是AI加速(相对于更通用的计算),因此它们可以采用显式分区(explicitly partitione)的暂存器存储方案,因为这些工作负载表现出高度并行的定义明确的独立流模式。而且,对于这种类型的代码,控制存储器局部性的能力可能证明是非常有利的。阵列中的每个核都可以自由执行加载并存储到任何本地地址,但是,它只能执行存储到远程地址。没有远程负载意味着它们将路由面积( router area)减少了10%,并且由于可以对远程存储进行流水线处理,因此可以防止流水线停顿。这种远程存储编程模型方案允许他们使用两个网络来实现此目的:数据网络和用于管理优秀存储的可心计数器网络(credit counter network )。

如前所述,第32行用于外部主机。实际上,这意味着内存映射扩展到阵列底部的十六个路由停靠点,这使消息可以从多核阵列传入和传出多核阵列,到达芯片上的大核和其他外设。

Celerity并没有使用这种类型应用程序非常常见的wormhole routing(也由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 counter,每次将远程存储包注入网络时,该计数器都会递减。credit 通过credit counter网络返回,该计数器使用与上述数据相同的体系结构,但只有9位,因为它只包含节点地址。

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

令人遗憾的是,Celerity团队没有报告任何与AI相关的常见基准测试结果。相反,他们选择使用CoreMark,它们达到580.25 CoreMarks / MHz,总得分为812,350。在过去的几年中,CoreMark一直是RISC-V社区的首选比较基准。但CoreMark的问题在于,它通常会为简单的有序设计产生令人难以置信的乐观分数,这些分数似乎可以与经过良好调整的现代无序设计很好地竞争,而实际工作负载却表现出截然不同的结果。鉴于此芯片的前提是生产高度灵活的AI加速器,我们希望鼓励Celerity团队提供更有意义的结果,例如正式提交MLPerf。

我们现在可在Celerity网站上访问Celerity的开源RTL 。

逗乐宝宝

相关文章

关注我们

有福网

有福网:YouFu.Org最简洁实用的上网主页