【RISC-V设计-04】- RISC-V处理器设计K0A之架构
1. 简介
在前几篇文章中,介绍了RISC-V处理器的结构和指令集,从本篇文章开始,介绍一个最简单的RISC-V内核,仅支持RV32E(和RV32I指令一致,但支持16个通用寄存器),并命名为RISCV-K0A。RISCV-K0A是一个超轻量级的RISCV CPU内核,采用冯诺依曼结构,两级流水线,指令集为RV32E指令集(即整数指令集,16个通用寄存器),支持16个中断源。内核较为精简,面积极小、功耗低。
2. 主要特点
- RV32E+Zicsr指令集;
- 16个通用寄存器;
- 仅支持机器模式;
- 支持特权指令MRET;
- 实现了44条指令的处理;
- 两级流水线,取指、执行两个阶段;
- 冯诺依曼结构,指令总线和数据总线共享;
- 20位地址总线,最大支持1MByte地址空间;
- 支持16个外部中断源,支持晚到中断、咬尾中断;
3. 结构框图

BMU :总线管理单元(Bus Management Unit)
IDU :指令译码单元(Instr Decoder Unit)
ALU :算术逻辑单元(Arithmetic and Logic Unit)
GPR :通用寄存器(General Purpose Register)
CIC :核内中断控制器(Core Interrupt Contoller)
CSR :控制与状态寄存器(Control and Status Register)
4. 指令列表
| 序号 | 类型 | 指令 | 周期 | 功能 | 说明 |
|---|---|---|---|---|---|
| 1 | RV32I | ADDI | 1 | Rd = Rs + imm | 立即数加法 |
| 2 | RV32I | SLTI | 1 | Rd = Rs < imm ? 1’b1 : 1’b0 | 立即数有符号小于 |
| 3 | RV32I | SLTIU | 1 | Rd = Rs < imm ? 1’b1 : 1’b0 | 立即数无符号小于 |
| 4 | RV32I | XORI | 1 | Rd = Rs ^ imm | 立即数异或 |
| 5 | RV32I | ORI | 1 | Rd = Rs | imm | 立即数逻辑或 |
| 6 | RV32I | ANDI | 1 | Rd = Rs & imm | 立即数逻辑与 |
| 7 | RV32I | SLLI | 1 | Rd = Rs << imm[4:0] | 立即数逻辑左移 |
| 8 | RV32I | SRLI | 1 | Rd = Rs >> imm[4:0] | 立即数逻辑右移 |
| 9 | RV32I | SRAI | 1 |
RISC-V K0A 架构解析

最低0.47元/天 解锁文章
2960

被折叠的 条评论
为什么被折叠?



