WARP-V:支持MIPS ISA的RISC-V CPU内核生成器

原文链接:WARP-V: A RISC-V CPU Core Generator Supporting MIPS ISA 由Abhishek Jadhav撰写。

如果你一直致力于开放标准的RISC-V ISA CPU内核,那么你很有可能遇到WARP-V。对于新手来说,WARP-V 是用TL-Verilog(事务级 Verilog)编写的 RISC-V CPU 内核生成器。它不仅支持 RISC-V,还支持 MIPS ISA。其实,关于WARP-V的讨论已经持续有一段时间了,因为它在少量代码中具有无与伦比的架构可伸缩性。

著名的谚语“需求是发明之母”同样也适用于 TL-Verilog 的发明以及 WARP-V CPU 内核生成器的产生。几十年来,数百名工程师一直致力于设计一个更复杂的单核 CPU,为了实现更高的单核性能。但随着半导体行业的不断发展,拥有数十年 CPU 内核设计经验的工程师 Steve Hoover 提出了一个创新的想法。这个想法就是:在不使用高级 CPU 微架构技术的情况下,可以在1.5周内开发出一个WARP-V内核。

WARP-V CPU内核生成器
WARP-V CPU内核生成器

由此,我们想到了一个重要问题。当我们拥有 Verilog 和 VHDL 时,为什么还需要另一种 HDL、TL-Verilog呢?(注意:在这里,TL-Verilog指的不是硬件描述语言)。

这样做其实是有一些原因的,例如CPU的设计需要简洁、灵活和明确。与SystemVerilog中的单周期设计相比,使用TL-Verilog几乎可以让1到7周期流水线深度的代码大小减少一半。之所以会出现这种情况,是因为TL-Verilog模型的大小是其Verilog等效模型的一半。当我们查看其他的HDL时,会发现它们更多地是用于静态设计的描述,但这并不是TL-Verilog背后的概念,因为它是为设计过程而构建的,而TL-Verilog则是一种硬件设计语言。

 什么是WARP-V CPU内核生成器?

回到WARP-V内核这边。我们知道,在内核的灵活性方面,WARP-V是可以实现单级CPU的,像像微控制器、甚至是七级通用处理器那样。作为一个开源项目,你现在可以使用少量的源代码使它能够适合你的应用程序。WARP-V CPU内核仅具有CPU内核实现,没有虚拟内存、缓存和 I/O。不过,可以借助可定制的ISA,这样你就能添加可选的 RISC-V 扩展。例如基本整数指令集 (E)、整数乘法和除法的标准扩展 (M)、单精度浮点 (F) 和位操作 ( B)。

当我们查看WARP-V的CPU设计微架构时,我们可以注意到每条垂直的绿线会将虚拟流水线阶段分开。所有这些虚拟流水线阶段都可以映射到单个物理阶段或不同的物理阶段。由于它是一个RISC-V实现,所以解码、分支目标计算和寄存器都会映射到同一个物理阶段。其代码是通过使用宏预处理器 M4 开发的,你可以将生成的代码作为源代码并调整微架构。

WARP-V CPU内核生成器微架构
WARP-V CPU内核生成器微架构

但是当我们谈论内核的灵活性时,记得要满足这一点,还必须要有灵活的验证建模。作为一个开源项目,它为许多贡献者提供了一个工作和了解设计核心集成水平的机会。在 GSoC (Google Summer of Code) 2018 上,TU Delft大学的硕士生Ákos Hadnagy与Steve Hoover就一起展示了TL-Verilog在验证建模方面的使用场景和灵活性优势。

WARP-V下一步是什么?

在我们谈论WARP-V的未来发展之前,让我们先了解一下如何开始使用这个 CPU内核生成器。首先,要配置WARP-V的话,你可以在Makerchip中使用IDE进行编译和调试时,通过命令行修改参数。假设你已经学习了TL-Verilog和 Makerchip的教程,你可以在“NAV-TLV”窗口中选择、编译和处理模型。有关更多入门的详细信息可以在官方GitHub存储库中找到。

Makerchip IDE
Makerchip IDE

其实,即使WARP-V不是最好的选择,它肯定也是一种使CPU大众化的方法。围绕WARP-V可以做的可能并不多,但你肯定可以处理其他相关的工作负载。例如使其成为多核以显示事务流,甚至可以在TL-Chisel上工作。设计师Steve Hoover就说:“RISC-V解放了ISA,现在也是时候解放CPU和其他组件了。也为更大的事情保留专利。”

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论