1. PLIC Features
1.支持中断优先级
2.PLIC最多支持1023个中断(保留0)
3.支持15872个hart上下文。
3.Interrupt Targets and Hart Contexts
- 中断目标通常是hart上下文,其中hart上下文是给定hart上的被赋予的特权模式(尽管还有其他可能的中断目标,例如DMA引擎)。
- 并非所有hart上下文都是中断目标,如果处理器核心不支持将外部中断委托给低特权模式,那么低特权hart上下文将不会是中断目标。
- 由PLIC产生的中断通知分别出现在M/S模式的mip/sip寄存器的meip/seip位中。
- 只有当外部中断被委托给低权限模式时,通知才会出现在低权限的xip寄存器中。
- 每个处理器核心都必须定义一个策略,说明该core上的多个hart上下文如何接受同时发生的active中断。
- 对于单个 hart 上下文栈的简单情况,每种支持的特权模式都有一个上下文。较高特权级别上下文的中断可能会抢占较低特权级别上下文的中断处理程序执行。多线程处理器核心可以同时在不同 hart 上下文上运行多个独立的中断处理程序。处理器核心还可以提供专门用于中断处理的 hart 上下文,以减少中断服务延迟,并且这些上下文可能会抢占同一core上其他 hart 的中断处理程序。
- PLIC 会对每个中断目标进行独立处理,而不考虑包含多个中断目标的组件中使用的任何中断优先级方案。因此,PLIC 不提供中断抢占或嵌套的概念,这些必须由托管多个中断目标上下文的内核来处理。
5.interrupt Gateways
- 中断gateway负责将全局中断信号转换为通用的中断请求格式,并管理中断请求流向PLIC Core。
- 在PLIC Core内,每个中断源最多只能有一个未处理的中断请求,通过设置相应的IP位来指示。仅当接收到来自同一中断源的前一个中断请求已经得到处理程序处理完成的通知后,gateway才会将新的中断请求转发给PLIC Core。
- 如果全局中断源使用电平敏感中断,gateway将把中断电平的首次断言转换为中断请求,但此后除非收到中断完成消息,否则gateway不会发送额外的中断请求。收到中断完成消息后,如果中断是电平触发的且中断仍然被asserted,则gateway将向PLIC核心发送新的中断请求。gateway没有撤销已发送到PLIC核心的中断请求的功能。如果在PLIC Core接受请求并处理该中断之前,电平敏感的 中 断 源 取消了该 中 断,则 该 中 断 请求 将保留 在 PLIC Core 的 IP bit,并由一个处理程序处理。然后,处理程序必须确定该中断设备不再需要服务。
- 如果全局中断源是边沿触发的,gateway将会将第一个匹配的信号边沿转换为中断请求。根据设备设计和中断处理程序的不同,在发送中断请求和接收到处理程序完成通知之间,gateway可能会忽略额外的匹配边沿或者增加待处理中断计数器。在任何情况下,在前一个完成通知被接收之前,下一个中断请求都不会被转发到PLIC核心。如果gateway有一个待处理中断计数器,在该计数器减少时表示PLIC核心已经接受了该中断请求。与专用线路上的中断信号不同,消息传递式中断(MSI)通过系统互连以消息包形式发送,并描述了哪个中断正在被激活。这个消息需要解码以选择相应的中断gateway,然后相关gateway类似于对边缘触发型中断进行MSI处理。
6.Interrupt Notifications
- 每个中断目标有一个EIP,EIP中的数值被作为中断通知传送到目标设备。
- PLIC硬件仅支持中断的广播,这意味着对于给定的active的中断,所有已启用的目标都会接收到中断通知。
7.Interrupt Identifiers (IDs)
全局中断源会被赋予无符号的整数ID,ID从1 开始;
interrupt ID 0是保留的,表示没有中断
中断ID也可以用来表示优先级,用于两个及以上中断拥有相同的优先级时,
中断ID也被用于在两个或多个具有相同分配优先级的中断源之间进行选择。较小的中断ID优先级高于较大的中断ID。
2. PLIC Architecture
3. Interrupt Flow
- 全局中断从其源被发送到一个中断gateway,该gateway处理来自每个源的中断信号。
- 中断gateway向PLIC Core发送一个的中断请求,PLIC Core将这些请求锁定在Core中断等待位(IP)上。
- 如果目标有任何enabled了的pending interrupts,并且这些待处理的中断优先级超过了特定目标阈值,则PLIC Core会向一个或多个目标转发一个中断通知。
- 当目标接收到外部中断时,它会向PLIC核心发送中断声明请求,以获取该目标上等待的最高优先级全局中断源的标识符。
- PLIC核心清除相应的interrupt source pending bit.。
- 在目标处理完成该次中断后,它会向相关联的中断gateway发送一个完成消息
- 中断gateway将同一来源的另一个中断请求转发给 PLIC。
4. 配置信息
• Interrupt Priorities registers:The interrupt priority for each interrupt source.
• Interrupt Pending Bits registers:The interrupt pending status of each interrupt source.
• Interrupt Enables registers:The enablement of interrupt source of each context.
• Priority Thresholds registers:The interrupt priority threshold of each context.
• Interrupt Claim registers:The register to acquire interrupt source ID of each context.
• Interrupt Completion registers:The register to send interrupt completion message to the associated gateway.