开发者学堂课程【高校精品课-大连理工大学-计算机组织与结构:E906的中断系统】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/3/detail/16055
E906的中断系统
内容介绍
一、E906的中断系统
二、E906实现的 Click 单元基本功能
三、E906的中断架构
一、E906的中断系统
E906的中断系统包括两个主要的部分,处理器局部中断和核内局部中断。
在这张图中最外侧的大方框是 SoC,即处理器芯片。内部的白色方框是E906核,在里面画出处理器局部中断叫做Clint,还有核内局部中断的控制器叫做 Click。E906支持多种不同类型的中断,比如软件中断是由 E906内部发出的由Clint 处理,还有外部计时器中断也由 Clint 来处理。注意虽然他称作外部计时器,但是这个外部指的是对 E906而言是外部,这个计时器中断的中断源其实还是在 SoC 的内部。Click 主要是用来处理外部中断,这个外部中断包括整个处理器芯片外部发起的中断以及soc内部E906外部发起的中断,是在最右侧的外部中断。
E906处理器局部中断实现了处理器的局部中断,简称做 Clint,包括软件中断和计时器中断,这个模块式设计在紧耦合 IP 部分。E906实现了核内局部中断控制器称作 Click,支持最多240个外部中断,用于对中断源进行采样优先级仲裁和分发,这就是 Click 的功能。
第一种中断软件中断 Clint 可用于软件配置产生软件中断,机器模式软件中断是由机器模式软件中断配置寄存器来进行控制。
在这个字当中,右侧是低位左侧是高位,右侧的第零位这个写作 MSIP 就是当前这个寄存器的最低位,当他置1的时候表示当前存在有效的机器模式软件中断请求,他置0的时候表示当前不存在有效的机器模式的软件中断。
计时器中断
ロ CLINT 可用于生成机器模式计时器中断,该计时器中断需要搭配 E906外部由系统设计实现的64位计数器使用,其值可被读取到 E906内部的系统计数器当前值寄存器中。
-E906内部设计实现了一个64位的机器模式计时器比较值寄存器。
--CLINT 通过比较以上两个寄存器值,确定是否产生中断
系统计数器当前值寄存器≥机器模式计时器比较值寄存器
Clint 也可以产生计时器的中断,这个计时器中断需要搭配 E906外部由系统设计实现的64位的计数器来使用,它的值可以被读取到E906内部的叫做系统计数器当前值寄存器,这是一个当前计数器的值,同时在 E906内部还设计实现了一个同样64位的叫做机器模式,计时器比较值寄存器,当前这个中断是否产生是由这两个寄存器的值做对比来产生,所以Clint 通过比较以上两个寄存器的值确定是否产生中断,当前值大于等于比较值,这个时候就会产生计时器中断。
二、E906实现的 Click 单元的基本功能
支持 RISC-V 标准的clic spec-0.8,最多支持240个外部中断源可配,支持电瓶和脉冲中断,兼容 Clint 的最多16个中断,一共支持256个中断处理。
下面就是 Click 用到的典型的一些控制寄存器的定义。
前三行是所有外部中断共用的寄存器,后面四行每一个外部中断都有下面四个寄存器。CLICCFG 是一个八位的全局配置寄存器,定义了支持的中断响应特权态以及是否支持硬件矢量中断。中断信息寄存器是一个只读存储器里面提供了Click 的部分信息,包括 Click 的架构版本信息、修改版本信息以及该 Click 控制器硬件支持的中断源个数最多可以达到256个。
中断阈值寄存器定义了当前处于等待状态的中断请求,能够像 CPU 流水线核心发起中断请求的优先级临界值,处于等待状态的中断请求的优先级必须高于该寄存器定义的阈值才能像处理器发起中断,中断等待寄存器,该寄存器的最低位备置位表示对应的中断源有中断请求等待被处理。中断使能寄存器的最低位备置位表示对应的中断源被使能在满足条件的情况下,CPU 可响应该中断。中断属性计算器用于配置不同的中断源的属性包括了可响应中断的 CPU 特权探中断的触发模式以及中断是否有硬件矢量模式。中断控制寄存器用于表示每一个中断源参与仲裁的优先级。
三、E906的中断架构
最外侧是 SoC,白色部是 E906处理器内核,它里面有处理器局部中断 Clint 还有核内局部终端控制器 Click,上面这个Clint 会处理软件中断和外部计数器的中断,下面这个 Click 负责处理外部中断,包括芯片外部的中断和 E906和外部的中断。
它内部包含有三个共用的寄存器以及每一个外部中断单独配有的四个控制寄存器。