• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dzw9
博客园    首页    新随笔    联系   管理    订阅  订阅
从零开始的CPU-存储和指针

image

1. memory

input clock,pcload,reset,IRload,Jmux
output IR
image


2. ALU (Arithmetic logic unit) 算术逻辑单元

image

  • calpart计算单元

3. control unit

image

RISV-C

1.数据通路单元 datapath

存取指令 (两个状态单元,一个加法器)

指令存储器(Instruction memory)
程序计数器 PC 保存当前指令地址
加法器 增加PC值获取下一条指令,通过ALU实现
寄存器堆 处理器的32个通用寄存器

  • 指令格式
  1. R型 funct7(7)-rs2(5)-rs1(5)-funct3(3)-rd(5)-opcode(7)
  2. I型 immediate(12)-rs1(5)-funct3(3)-rd(5)-opcode(7)
  3. S型 immediate [11:5]-rs2(5)-rs1(5)-funct3(3)-immediate [4:0]-opcode(7)

指令集 RV32I RV32M RV32A RV32D RV32F F和D共有 RV32G
指令数 47 8 11 32 32 8 112

寄存器

寄存器 ABI名称 说明
x0 zero 硬编码为0,写入数据忽略,读取数据为0
x1 ra 返回地址
x2 sp 栈指针
x3 gp 通用指针 global pointer
x4 tp 线程指针
x5 t0 存放临时数据或者备用链接
x6-x7 t1-t2 存放临时数据
x8 s0/fp 需要保存的寄存器或者帧指针寄存器
x9 s1 需要保存寄存器
x10-x11 a0-a1 函数参数或者返回值
x12-x17 a2-a7 函数传递参数
x18-x27 s2-s11 需要保存的寄存器
x28-x31 t3-t6 存放临时数据

特权架构

level Encoding Name Abbreviation
0 00 User/Appliation 用户模式 U
1 01 Supervisor 监管者模式 S
2 10 Reserved 虚拟化 H
3 11 Machine 机器模式最高权限 M

CSR寄存器

M模式CSR寄存器,需要使用csrr、csrw、csrrw等特定指令进行访问。

  • mstatus
    状态寄存器 保存全局中断使能状态和其他状态例如切换模式前保存当前模式。
  • mtvec
    异常入口基地址寄存器,保存发生异常时需要跳转的地址
  • medeleg和mideleg
    异常委托和中断委托。如在M模式下发生异常或中断时,可以通过这两个寄存器交给其他模式处理。
  • mip和mie
    中断使能和中断等待
  • hpm Hardware Performance Monitor
    硬件性能单元,用于性能计数u,包括 mphmcounter性能计数器 和 mphmevent用于配置性能事件
  • mcounteren 计数器使能 和 mcountinhibit禁止计数
  • mscratch 保存M模式指向hart上下文的指针并在进入M模式的处理程序时和用户寄存器交换。
  • mepc 发生中断时当前PC值保存在mepc中,中断返回时会读取pc值
  • mcause 保存发生中断或异常的情况 1中断0异常
  • mvtal 发生异常时保存出错的地址
posted on 2023-07-14 21:50  dzw9  阅读(104)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3