Menu
首页 / Index
留言 / Comments
归档 / Archive
标签 / Tags
打赏 / Sponsor
简历 / Resume
GitHub
Bilibili
Zhihu
Google Scholar
Vjudge
jekyll-theme-WuK
计算机组成原理实验:RISC-V CPU
教师:陈志广
助教:吴坎
wukan3[at]mail2.sysu.edu.cn
PPT Version
国内计组实验现状
清华:奋战三星期,造台计算机
国科大:一生一芯
中大:30 多年前的 MIPS CPU
国产 CPU:百花齐放
ARM:飞腾、华为海思、展讯、华芯通
x86:北大众志、兆芯、海光
MIPS:龙芯、君正
Alpha:申威众核
Power:中晟宏芯
Why RISC-V
特性
x86 or ARM
RISC-V
架构篇幅
数千页
少于三百页
模块化
不支持
支持模块化可扩展的指令子集
可扩展性
不支持
支持可扩展定制指令
指令数目
繁多,不同架构分支彼此不兼容
基本指令集仅 40+ 条
易实现性
复杂度高
硬件设计与编译器实现非常简单
Less is more,把更多工作交给编译器!
仅支持小端模式
规整的指令编码
存储访问指令一次只访问一个元素
去除存储器访问指令的地址自增自减模式
简化的分支跳转指令与静态预测机制
Less is more,把更多工作交给编译器!
不使用分支延迟槽
不使用指令条件码
运算指令不产生异常
不使用零开销硬件循环
……
你能获得
有情怀、有含金量的项目经历
可自豪地写在简历上
与操作系统实验课的梦幻联动
「
逸仙 OS
」 RISC-V 移植化锐意进行中!
在自己的 CPU 上运行自己的操作系统!
成果优秀的同学可推荐进入中大超算队
参与下一年实验
YatCPU
设计!
组队参加
逐梦杯
等比赛!
实验要求与时间节点
必做:单周期 CPU(60 分),二周~三周
实现 RV32I Base Integer Instructions
除 ebreak 之外的指令集,共 38 条
ecall 作为停机指令
参考
RISC-V card
必做:多(五)周期 CPU(30 分),一周~二周
在单周期 CPU 的基础上修改
在 CU 中增加状态机
各个部件用时钟同步
选做:Do what U want to do(10 分,视完成情况)
指令集扩展
RV32M 指令集(整数乘除法)
需要使用自己实现的除法器!
RV32C 指令集(压缩指令长度)
RV64I 指令集(扩展地址空间)
……
选做:Do what U want to do(10 分,视完成情况)
架构优化
流水线
乱序多发射
分支预测
……
选做:Do what U want to do(10 分,视完成情况)
功能增强
实现中断
挂载外设
屏幕输出
运行 C 语言程序
启动操作系统
……
实验指南
实验具体流程
根据线路图实现 CPU 的每个模块,如 CU、ALU
将每个模块组合
将提供的指令转为二进制码并仿真测试
烧板
地址(十六进制)
汇编程序
汇编指令(二进制)
0x00000000
addi x1,x0,8
0x00000004
ori x2,x0,2
0x00000008
add x3,x2,x1
0x0000000C
sub x5,x3,x2
地址(十六进制)
汇编程序
汇编指令(二进制)
0x00000010
and x4,x5,x2
0x00000014
or x8,x4,x2
0x00000018
slli x8,x8,1
0x0000001C
bne x8,x1,-2
地址(十六进制)
汇编程序
汇编指令(二进制)
0x00000020
slti x6,x2,4
0x00000024
slti x7,x6,0
0x00000028
addi x7,x7,8
0x0000002C
beq x7,x1,-2
地址(十六进制)
汇编程序
汇编指令(二进制)
0x00000030
sw x2,4(x1)
0x00000034
lw x9,4(x1)
0x00000038
addi x10,x0,-2
0x0000003C
addi x10,x10,1
地址(十六进制)
汇编程序
汇编指令(二进制)
0x00000040
blt x10,x0,-2
0x00000044
andi x11,x2,2
0x00000048
jal x8,4
0x0000004C
or x8,x4,x2
0x00000050
ecall
大部分实现与细节都可参照往年 MIPS CPU
仅调整指令集,需修改指令译码部分
注意实现细节,如
PC 的改变是在时钟上升沿进行的
指令执行的结果总是在时钟下降沿保存到寄存器和存储器中
这样稳定性较好
实验原则
原则:必须原创
第一届冯班,并不要求过高完成度
往届挂科率 20%+,难以一步吃成胖子
如果难以完成 RISC-V,可完成往年 MIPS 实验
遇到困难及时在群内反馈!
不得抄袭开源设计
不要放卫星
原则:反对无意义内卷
实验报告请控制在一万字以内,超过扣分
对每条指令需要有指令执行的波形(截图)
需要对关键信号以文字说明
原则:鼓励创新
十分附加分,奖励给探索精神
有难有易的扩展方向可选
参考链接
Specifications - RISC-V International
RISC-V 架构文档
手把手教你设计 CPU——RISC-V 处理器篇
经典入门书籍
RISC-V card
一张纸就能写下的 RISC-V 指令表
万丈高楼平地起
加油 💪!