千家信息网

riscv中的plic与eclic的简单介绍

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"riscv中的plic与eclic的简单介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"riscv中的plic与eclic的简单
千家信息网最后更新 2026年11月01日riscv中的plic与eclic的简单介绍

这篇文章主要讲解了"riscv中的plic与eclic的简单介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"riscv中的plic与eclic的简单介绍"吧!

浅析riscv中的plic与eclic


  • 1.PLIC中断处理

  • 2.sifive中断的编程模型

  • 3.关于eclic

  • 4.关于jalmnxti


1.PLIC中断处理

在RISC V体系架构中,对中断有着一些定义,下面来分析一下这种定义的实现策略。


在riscv中一共定义了三种状态中断,对于hart层面,hart包含local中断源和global中断源。而local中断只有Timer和Software中断两种,而global中断则称为external interrupts。只有global中断源可以被PLIC core响应,通常为I/O device。

一般来说,timer和software是通过CLINT(CORE LOCAL INTERRUPT),而外部中断通过PLIC处理。


可以看一下蜂鸟处理器的处理流程,另外sifive的E31的中断也有如下的处理。


2.sifive中断的编程模型

中断处理过程有如下的流程

  • 首先mstatus的MIE域被拷贝到mstatus的MPIE,然后mstatus的MIE域被清除。此时全局中断disable。
  • 程序当前的pc值被拷贝到mepc寄存器中,然后pc值会根据mtvec的值设置其值。如果向量中断被使能,pc值会变成mtvec.BASE+4xexception处的代码。
  • 从mstatus.MPP中取出特权模式的状态

接下来就是处理中断具体的函数实现

  • 将特权模式的状态设置到mstatus.MPP
  • 将mstatus.MPIE的数据拷贝到mstatus.MIE中
  • 从mepc中取值放到pc中

最后执行eret恢复到程序正常运行的状态。

对于CLINT来说,有Software Interrupt和Timer Interrupt,可以直接在寄存器中控制。

而PLIC实际上可以理解为arm的中断控制器,存在其map地址。


由于PLIC的使用是针对外部中断的,所以可以单独设置每个中断。可以设置如下的值:

  • 中断的优先级priotity
  • 中断挂起位pending
  • 中断使能enables
  • 中断阈值priority Thresholds

由于PLIC的实现是独立于hart的IP设计,所以其设计和布局也不一定完全一致。

3.关于eclic

eclic的设计是芯来科技设计的一种中断处理方式。


eclic目前也是众多芯来科技core采用的中断控制器,也包括gd32vf103系列的芯片。

3号中断是内核TIMER单元生成的软件中断。

7号中断是内核TIMER单元生成的计时器中断。

而从19~4095中断号都是外部中断,其中断的编号与中断的优先级其实没有关系。


而对于ECLIC的寄存器布局,可见上图。

  • cliccfg是中断全局配置寄存器,可以结合clicintctl[i]配置
  • clicinfo也是全局寄存器中的数据,对于使用上来说,是只读的
  • mth中断的阈值级别寄存器
  • clicintip[i]是中断等待寄存器,也相当于pending寄存器
  • clicintie[i]为中断使能寄存器
  • clicintattr[i]为中断的属性,可以设置中断的上升沿触发或者下降沿触发,同时也可以设置中断从处理是向量中断还是非向量中断。
  • clicintctl[i] 设置中断优先级级别和优先级,需要配合cliccfg设置阈。

4.关于jalmnxti

这个也是eclic为了减少中断延时,加速中断咬尾的自定义指令。

该指令是配合eclic处理机制设计的,其指令功能比较多

  • 开启中断使能,处理下一个中断
  • 返回下一个中断入口地址
  • 跳转至中断handler
  • 中断处理后返回

由于csrrw ra, CSR_JALMNXTI, ra一条指令可以达到JAL(Jump and Link)的效果,同时硬件上更新Link寄存器作为该指令的PC作为函数调用的返回值,因此从中断服务程序返回后,又会重新回到csrrw ra, CSR_JALMNXTI, ra指令再次执行,可以重新判断是否有中断pending,如果有则跳转到中断处理函数,从而实现中断的咬尾处理,如果没有中断等待,则jalmnxti实际上并不会做任何事情。

感谢各位的阅读,以上就是"riscv中的plic与eclic的简单介绍"的内容了,经过本文的学习后,相信大家对riscv中的plic与eclic的简单介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

处理 寄存器 指令 设计 优先级 状态 全局 函数 向量 拷贝 程序 学习 控制 内容 内核 单元 只有 同时 地址 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州大一互联网络科技有限公司 河南真二互联网科技有限公司 港股互联网科技股 互联网 科技公司 互联网医疗科技 美国互联网科技 互联网 的科技创新 江苏南京365互联网科技 欧洲十大科技互联网公司 南山科技园互联网公司有哪些 成都互联网科技公司工作好不好 天津腾达互联网科技有限公司 怎样加入科技互联网 浙南科技城互联网大厦招聘 神州科技互联网有限公司 互联网时代科技型公司的机会 互联网高科技行业有哪些企业 易租星互联网科技有限公司 河南商务圈互联网科技有限公司 东风日产互联网科技公司叫什么 小米移动互联网科技园 美国互联网保险保险科技 电子科技大学互联网 中国最先进互联网科技公司 哈尔滨屹滨互联网科技有限公司 科技赋能视角下互联网保险发展 滨湖区互联网智能科技产品有哪些 互联网相关科技技术 萌小萌互联网科技河南有限公司 宁波允成互联网科技有限公司
0