RISC-V学习整理

目前网上关于risc-v架构概念介绍的文章比较多,本文从开发角度把学习中的记录整理出来。
以下为作者为自学记录内容,文章仅抛砖引玉,有学习需要的同学还需以官网及risc-v专家的书籍为准。
有错误欢迎指出,共同学习进步。

RISC-V:

  1. RV32I RV32E
    RV32G表示RV32IMAFD
    I – 32位地址空间,32个通用寄存器
    M – 整数乘,整数除
    A – 原子操作指令
    F – 单精度浮点
    D – 双精度浮点
    C – 压缩指令,长度16
  2. RISC-V仅支持小端
    RISC-V不支持地址自增自减
    RISC-V有2条无条件跳转指令,6条条件跳转指令

汇编部分:

1.伪操作,汇编结束伪操作就结束
2. .option rvc 表示接下来的汇编程序可以被汇编生成16位宽的压缩指令
  .option norvc 表示接下来的汇编程序不可以被汇编生成16位宽的压缩指令
3. li 赋值
  la 标签地址赋值

中断和异常:

  1. 广义中断和异常都称为异常
    同步:非法地址空间,访问地址属性,取指非对齐,非法指令,断点
    异步:外部中断(精确),读写存储器(非精确)
  2. 异常发生 --> 硬件更改寄存器 --> 软件读取寄存器判断 --> 异常处理
    系统会读取mcause寄存器判断何种异常从而跳转异常处理
    RISC-V硬件不会保存上下文,需要软件保存和恢复
  3. 相关寄存器
    mtvec
    异常入口地址寄存器,指定异常处理的pc地址,软件可以更改其值
    高30为是BASE
    低2位是mode模式 —| mode=0 所有异常响应 BASE 为 PC
    | mode =1 —| 狭义异常响应 BASE 为 PC
    | 狭义中断响应 BASE+4×casue(中断异常编号) 为 PC
    mcause
    软件可读取寄存器,查看异常原因
    高1位 interropt域
    低31位 异常编号域 --> 定义了12种中断类型和10种异常类型
    mepc
    保存原PC,用于异常返回,可读写,软件可以更改
    中断时,mepc为下一条指令
    异常时,mepc为发生异常时当前的PC
    mtral
    异常值
    如果存储器访问,mtral为存储器地址
    如果非法指令,mtral为非法指令编码
    mstatus
    机器模式状态
    MIE=1,该模式下中断全局打开,为0关闭
    进入异常和退出时都会更改此寄存器
  4. RISC-V狭义的异常不可以被屏蔽
    狭义的中断可以被屏蔽,通过中断使能寄存器mie控制
  5. RISC-V不支持硬件中断嵌套
    进入异常后,mstatus中mie会被硬件该为0,则中断全局关闭,不支持硬件中断嵌套
    中断嵌套需要有软件实现:
    a.读取mcause确认是中断
    b.软件强写mie为1
      打开mie前需要注意 —| 屏蔽优先级低的中断可以修改mie中几个域
                          | 也可以通过修改PLIC屏蔽低优先级中断
                          | 软件注意保存中断上下文
                          | 软件注意修改mepc值,恢复使用

PLIC 平台级别中断控制器:

  1. 支持0~7共8个中断目标
    中断编号0 做为保留,实际中断源为(支持个数-1)个
    优先级为0~7,数字越大,优先级越高。优先级0可以认为屏蔽中断
    另一种屏蔽中断方法是设置中断使能寄存器 IE为0

  2. 中断处理流程
    a 中断使能IE为1,中断源优先级大于0
    b 外部中断经过gateway 寄存器IP(只读)被置1。
    c 仲裁,优先选择高优先级中断,优先级一样则选编号小的中断,仲裁结果必须大于中断目标优先级阈值
    d 产生中断。
    e 中断目标读取存储器地址映射的中断响应寄存器(可读)进行响应,且返回id ,通过此id进行中断处理
    f 将id写入中断完成寄存器(可写)表示中断结束,硬件自动将IP置0, 解除gateway屏蔽,以便其他中断产生

RISC-V学习整理相关推荐

  1. 计组学习笔记2(RISC v版)

    指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...

  2. ACM竞赛学习整理开篇之01背包问题

    ACM竞赛学习整理开篇之01背包问题. 最近,偶然的一次机会让我关注信息奥赛的一些内容.发现其中的内容很有趣,是学习编程的一条很好的路径,又能很好地将数学和编程联系到一起.在csdn里看到了不少同好也 ...

  3. Vue-Cli 学习整理【转载】

    Vue-Cli 学习整理 坚果 程序猿/艺术 ​关注他 21 人赞同了该文章 1. vue-cli(vue脚手架)全集 1.1. vue-cli2脚手架 1.1.1. nodejs/npm环境安装 1 ...

  4. red had第二次学习整理

    #red hat 第二次学习整理 今天上午我们学习了Linux高级语法的使用,令我印象最深的是awk和sed,他们是两个不太好懂的语法,但是学起来尤为有意思,特别是结合管道符之后,下面让我们来看看. ...

  5. docker学习整理

    Docker学习整理 概述 Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器 ...

  6. Java设计模式(学习整理)---命令模式

    设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...

  7. 2019.07.30 学习整理

    2019.07.30 学习整理 数据类型 1. 什么是数据类型 数据类型指的就是变量值的不同类型 2. 为何对数据分类? 变量的是用来反映状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数 ...

  8. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  9. Elastic Nodes Example 翻译及学习整理

    文章目录 Elastic Nodes Example 翻译及学习整理 题记: 简介: Node Class Definition Edge Class Definition GraphWidget C ...

  10. ACM竞赛学习整理--矩阵运算

    ACM竞赛学习整理–矩阵运算 了解矩阵类 [任务] 实现矩阵的基本变换 [接口] 结构体:Matrix 成员变量: int n,m 矩阵大小 int a[][] 矩阵内容 重载运算符: +.-.x 成 ...

最新文章

  1. 肝了3版才满意:分布式系统之CAP理论,我们对它的理解和误解
  2. Dockerfile实践优化建议
  3. 蓝桥杯-2的次幂表示(java)
  4. Express新建工程以及新建路由规则、匹配路由规则、控制权转移
  5. vue xxx was assigned to but it has no setter.
  6. Linux基础命令(常用的)
  7. Air Data System
  8. 大数据力推产业转型升级
  9. 2019交大计算机考研分数线,上海交大2019考研计算机软件与理论的复式分数..._考研_帮考网...
  10. android 监听通知栏点击事件,android使用NotificationListenerService监听通知栏消息
  11. Android 10 LED 驱动开发
  12. python 多行注释 unicode error 问题
  13. 2017云计算与IT风向标—— 移动、转型、整合
  14. 计算机表格复制粘贴,Excel复制表格保留原格式不会操作?超全技巧教给你!
  15. 求循环小数的循环节C/C++
  16. 吴军的《见识》书的核心内容
  17. 计算机专业,真的这么赚钱吗?
  18. zipfile的压缩和解压缩
  19. 用python实现模拟登录人人网
  20. 设计问卷调查有哪些技巧?

热门文章

  1. 一款在线视频 App,基于 Material Design + MVP + RxJava + Retrofit + Realm + Glide
  2. 如何下载网页中的json文件
  3. 无言以队事后诸葛亮分析
  4. 傲游浏览器如何显示收藏夹栏 傲游浏览器显示收藏夹栏的方法
  5. 悖论在计算机中的应用,“索洛悖论”悖论 计算机影响随处可见
  6. android培训感想
  7. GS1011无线模块的使用简介。
  8. Python递归获取指定文件夹下的所有文件夹、文件
  9. 云文档服务器开小差,回首初中作文
  10. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统