【Perf-V评测】(总结) 一次RISC-V之旅
[复制链接]
通过这两月的Perf-V开发板测评活动,我从零开始学习RISC-V,以开源的蜂鸟E203 CPU及SOC为基础进行实验,也翻阅了作者的书籍,对RV32IMC指令集有个了大概的理解,初步理解了RISC-V系统的各组成部分之间的关系。经过这次RISC-V之旅,对RISC-V架构的MCU进行应用开发就不会难了。
关于RISC-V,再说说我个人的理解(有误的话请指正):
RISC-V是一个开放的架构(architecture),“开放”的第一重意义是可以免费使用,但是这并不是开放源代码的意思——RISC-V只是一套规范(spec)文档,无从谈论源代码的事情。因为它是“开放”的,根据这套规范设计CPU就是自由的,不需要授权,无知识产权方面问题。可以与之对比的是,一个芯片开发厂商需要从ARM公司获得了对某ARM架构的授权,才可以设计并生产这一ARM架构的CPU来销售,就算是根据其指令集完全自己设计。
RISC-V架构下的CPU可以是开源的,也可以是不开源的。开源的RISC-V项目已经有一些了,就是可以获得源代码,通过软件工具翻译成硬件逻辑实现。有的公司将自行设计的RISC-V CPU作为IP来销售(ARM的Cortex-M0, M3等等也是IP方式授权的),其它比如芯片厂商买来IP后做成MCU,就成为了商用RISC-V器件。比如我们可以买到GD32VFxxx型号的RISC-V产品就是这样,其中RISC-V核(CPU)可以看成一个黑盒子:用户并不知道它的详细逻辑设计,只要知道它能执行RISC-V的一个指令集就行了。
RISC-V规定了一族列指令集,不是一个单一指令集,这样即便是在软件角度,RISC-V CPU也存在很多个不同的变种。RISC-V指令编码有格式简单的特点,编码空间还有很大的富余,可以容纳大量的自定义指令,因此自行设计RISC-V的CPU存在很大的发挥空间,但是自定指令集需要编译器支持才能自动生成。
即使是支持相同的指令集,不同的RISC-V CPU设计在执行速度、功耗控制等方面也是不尽相同的,毕竟设计的硬件逻辑不一样,指令执行结果一样(周期数可以有差别),指令执行过程的细节可以不同。具体怎么设计,就是各家的本事了。硬件爱好者也可以亲自下手设计。
开源的RISC-V项目是学习计算机理论、处理器设计的好资料。有一套完整的RISC-V CPU实现代码之后,可以通过软件仿真工具来玩(这是仿真硬件逻辑,与QEMU这类CPU指令模拟器不同),查看任意时刻内部所有逻辑的状态。更好的玩法当然是使用FPGA,将逻辑映射到硬件上,便可以像MCU开发板那样来玩这个包含RISC-V CPU逻辑的板子了。澎峰科技的Perf-V开发板就是这样一块FPGA板。其它FPGA开发板,只要FPGA资源够也是可以拿来用的。
用FPGA板来玩开源RISC-V项目,比用软件仿真的优点当然是速度快,比用现成的RISC-V MCU呢?可以把想察看的CPU内部、总线上等等系统里的任何信号引出到FPGA管脚上,然后用示波器、逻辑分析仪等工具来采集:除了学习计算机原理之外,对软件代码调试也增加了更多的参考信息。
|