RISC-V MCU中文社区

基于RISC-V做定制处理器

分享于 2020-04-19 21:58:13
0
3296

交 付 物

我们先从结果说起,也就是这项任务的最终交付物。这里不妨参考ARM处理器核的deliverables。当然,如果只是一个自己用的专用处理器,不一定要有这么完整的交付物。

硬件:主要是处理器相关的RTL代码,验证环境,EDA工具的脚本,文档等等。

工具:主要包括编译工具(compiler),调试工具(debugger),仿真工具(simulator)和性能分析工具(profiler)。下图是ARM的编译工具的例子,主要包括armclang(C编译器),armasm(汇编器),armlink(链接器)和fromelf(image工具)。

转自arm.com

仿真工具一般至少包括一个指令仿真器 instruction set simulator (ISS),做的好的有cycle-accurate ISS。

模型:此外,现在一般的处理器IP还会提供一些处理器的模型来支持系统级设计,比如用于虚拟平台(virtual platform的处理器model。虚拟平台可以在没有硬件的情况下支持软件开发,它可以模拟一个完整的芯片或者一个硬件板卡,比如ARM的Fixed Virtual Platform (FVP)。而专用的处理器模型(比如ARM的Fast Model)是虚拟平台的重要组成部分,和总线模型以及其它IP模型一起模拟系统的功能。

在上述交付物中,加粗部分为必不可少的内容。即使你做的专用处理器功能简单,没有这几部分它也几乎是无法正常使用的。当然,你可以说,我不需要ISS做指令验证,不需要debugger做调试,不需要C编译器而只用汇编,我也只能“呵呵”了。

看到这一大堆工作,如果你没有胆怯,而是觉得很有意思。那么我也很愿意给你点帮助,看看是不是可以把你的想法变成现实。其实方法也很简单 -- 自己做不了就找“别人”帮忙呗。

具体来说,根据你的预算情况,可以分为“穷”和“富”两种玩法。预算充裕的话,可以参考“自己动手设计专用处理器!”中介绍的方法。

如果你没有足够的资金来购买处理器定制和设计的EDA工具,或者是你的目标收益还不值得做出这样的投资。这种情况下,我建议你从开源的处理器(或者指令集)开始做你自己的专用处理器。其实这也算是废话吧。所以还是得给个具体的例子,假设你想在RSIC-V的基础上做定制处理器。RSIC-V是现在一个相对成熟的开源处理器指令,已经有很多相关实现和非常活跃的社区。相信大家都听说过,就不科普了。这里得说明一下,我并没有对RISC-V进行过深入的研究和尝试,以下的说法基本上是纸上谈兵,不对的地方请大家批评指正。

首先,你要好好学习一下[1] RISC-V指令集手册中的“Chapter 10 Extending RISC-V”,这里明确介绍了给RISC-V指令集扩展指令的规则。包括标准的扩展和非标准扩展两个方面。非标准扩展也就是我们f

第二,在现有的RISC-V的硬件实现基础上,增加新指令对应的硬件。可能需要增加专用的寄存器,运算单元,pipeline寄存器,控制信号等等。或者,你可以按照新的指令集(假设叫“RISC-V++ ISA”)自己做完整的硬件实现。其实我觉得第二种方法还更靠谱一点。很多时候,修改别人的东西,要比自己做困难的多。

第三,在RISC-V原有的工具链(比如GNU或者LLVM的编译器)基础上做出修改,支持新的指令。相对来说,这项工作是有比较完善的规则的,只要按照编译工具的规则就可以把新增的指令加进去。当然,如果你增加的指令比较特殊,比如是向量操作,那么工具链的设计会困难很多。这种情况下的一个选择是在高级程序语言的编译器中不增加对新指令的支持,这些新的指令以汇编或者intrinsic的方法实现。

最后,这套方法是不是也能支持在第二节中所说的快速design space exploration呢?基本的思路也是差不多的。你可以先用基本指令集来仿真你的算法;根据profiling的结果(比如性能指标,指令效率,code size等)考虑对指令集进行的修改;然后更新相应的硬件实现和工具链,再编译和仿真你的算法,并不断迭代。现在你实现这个过程没有自动化工具的帮忙,可能需要更长的时间才能完成,特别是需要对功耗面积等implementation结果进行优化的情况。当然,如果现在RSIC-V的生态中已经有了辅助设计工具,那么可能情况会轻松一些。

这种方法看起来行的通,不过中间的坑非常多,要求你对基础处理器(比如RISC-V)非常熟悉。适合那些已经完整的做过RISC-V实现的玩家尝试。否则,也许有的坑你根本过不去。

最后,我写这篇文章并不是想鼓励大家都自己做专用处理器,而是希望大家清楚做这件事情要付出的代价。在你决定动手之前,不妨看看“当我们设计一个专用处理器的时候我们在干什么?(上)”和“当我们设计一个专用处理器的时候我们在干什么?(风险)”这两篇短文。

如果你还是坚持要跳这个坑的话,非常欢迎和我交流。相信专用处理器在AI,IoT和5G这些领域会有很多机会。

T.S.

题图来自synopsys.com,版权归原作者所有

欢迎关注我的微信公众号:StarryHeavensAbove

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

上一篇:RISC-V学习笔记
你的回应
tikitaka

tikitaka 实名认证

tikitaka

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