【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 |