竞业达赛题分析
赛题任务
在FPGA上设计和实现一款基于RISC-V指令集的CPU,完成若干工业应用程序和操作系统的性能测评。
http://univ.ciciec.com/nd.jsp?id=879#_jcp=1 (赛题链接)
题目解读
关键词: CPU RISC-V FPGA 工业应用程序 操作系统
1、CPU 和 RISC-V架构是什么?
CPU 全称为 "Central Processing Unit" 即 中央处理单元,也就是我们最常泛指的处理器是目前应用最广泛的数字芯片之一。
RISC-V 架构全称为"Reduced Instruction Set Computer V",是第五代精简指令集的简称,是目前最火热的开源精简指令集架构之一。
那么两者是怎么联系起来的呢? 这就不得不提到CPU的工作流程,CPU的工作实际上就是在执行一条一条的指令。需要执行指令,那么就需要有指令规范,也就是指令集。而RISC-V则是诸多指令集的一种。指令集主要分为CISC架构(复杂指令集架构)和RISC架构(精简指令集架构)两种。 复杂指令集的指令功能强大,但实现复杂,电路面积功耗开销大,常用于桌面端或服务器。例如英特尔的酷睿系列,AMD的R系列CPU都是复杂指令集架构(X86/X64)。精简指令集相对简单,电路实现也没有那么复杂,常用于移动端。像是苹果的A系列以及华为的麒麟系列都用的是精简指令集(ARM)。
2、工业应用程序和操作系统的性能测评指什么?
工业应用程序其实就是一些依托简单CPU就能运行起来的小程序,在这里可以充当一个testbench的功能,用来测试你的CPU是否能正常执行功能。
操作系统即我们常说的OS,现代高性能CPU往往不是裸机运行,而是依托操作系统以完成交互。我们所常说的 ios 安卓 windows都是常见的操作系统。而这里的操作系统特指RTthread,一种流行的开源嵌入式操作系统。RTT官网传送门。
3、如何在在FPGA上完成设计?
FPGA全称"Field Progammable Gate Array"即现场可编程门阵列,通过HDL语言就可以在FPGA上模拟出你设计的CPU。
设计指标(基础)
- RISC-V CPU需要在组委会提供的实验箱上进行设计和实现;
简单来说就是要把设计的CPU移植到企业提供的平台上,企业会提供一个实验箱(线上),预计可能包含类似于NVboard的虚拟FPGA,并提供OS移植相关的手册,具体内容要等实验箱资料发放,或者蹲问答群应该会有人问。
- 支持RISC-V RV32I指令集;
RV32I是RISC-V指令集中的一部分。I指的是整数指令。也就是说只需要赛题只需要实现RISC-V的整数指令就行了,大概是30多条吧;32是指32位架构,意味着CPU的架构寄存器是32个,指令长度和寄存器大小也是32位。
- 完成官方提供的若干工业应用程序的性能测评;
该程序由官方提供,且应该在官方的实验箱环境中可以运行起来。大概率只是简单验证RV32I指令的一些程序,实际上ysyx里就有不少这样的测试样例。
- 完成RT-Thread的性能测评;
正常来说仅仅依靠RV32I是无法启动RT-Thead的,因为一个基本的OS需要完成批处理和异常处理两个基本职能。而这两个职能需要用到CSR指令,也就是说除了RV32I,要是想启动RTT还需要完成一部分的CSR工作。并且需要完成RTT官方的一些API,以支持基本的上下文切换等功能。这一工作是为了适配OS和CPU,有一个专有的说法叫BSP,全称是 "Board Support Package"即板级支持包。
设计指标(进阶)
-
通过流水线、Cache、指令并行等多种方式优化CPU性能;
该项主要是对CPU的性能进行优化,包括流水线技术,多级发射技术,乱序执行技术,分支预测技术,Cache技术,数据预取技术等,在此不细展开。 相关书籍推荐:《计算机组成原理》《超标量处理器设计》 速成传送门:流水线,Cache,分支预测,乱序执行
-
添加并支持浮点运算单元;
浮点型即float型,与C语言中的float是类似的概念,完成FPU(浮点运算单元)即可支持RV32F指令。来自东南大学参赛队伍的RV32 FPU设计。
-
添加并支持AXI总线;
AXI是一种总线家族,常用于CPU与主存、缓存之间的交互。其本质上是基于简单握手协议的复杂实现。AXI家族有很多总线类型,如AXI-3,AXI-4,AXI-lite等。
评分机制
具体材料见官网要求,在此只做分析总结
初赛
总结实际上要求很低,不需要跑通应用程序,也不需要启动RTT,更不需要支持除了RV32I以外的其他功能。也就是说,哪怕是做一个简单的单周期,然后去ysyx找测试用例跑通工作量都够了。当然报告和视频要做好。
分区决赛
分区决赛最大的不同是要现场跑测试程序并跑通,但是计时机制不明朗。预计有可能是测试箱内置的测时标准,如果是手机的话电脑影响因素很大,如果是自己在tb里计时计算方式难以统一。在初赛做出流水线会有很大优势。
全国总决赛
比起复赛有两个不同,一是需要现场运行RT-Thread操作系统,二是需要考核进阶的设计指标。也就是说RTT已经是决赛要求了(但是其实单周期都能启动RTT)。而且进阶指标只需要完成两个就是满分了,实际上很简单。
学习路线
只需要三步,就可以拿到一个国奖 ^^_^^
第一步,推荐学习《计算机组成原理》,以及Verilog程序设计。完成学习后,尝试设计一个RV32I单周期CPU,互联网上已经很多相关的教程。 第二步, 在完成单周期设计后,对一些测试用例进行测试,顺利通过之后尝试官方的应用程序,成功通过官方的应用程序后,尝试启动RT-Thread操作系统。 第三步,在完成以上内容后,你已经成功入门CPU设计。继续尝试设计流水线、Cache等更为复杂的结构,拿满决赛的两项附加分。