ARM架构Generic Interrupt Controller(GIC)详解之术语介绍

6 篇文章 2 订阅

在上一篇博文ARM通用中断控制器GIC(generic Interrupt Controller)简介中,笔者对GIC做了一个整体的简介,接下来笔者将对GIC中的一些细节问题进行研究学习,首先要介绍的是GIC中支持的一些技术特性,比如中断模型(1-N/ N-N)以及中断复用(banked)等概念。

GIC的作用

首先回顾上文,GIC的作用可以总结为:

  • 为与GIC相连的处理器处理中断源(handling all interrupt sources)
  • 适用于单核或者多核的一个可编程、通用的中断控制器接口
    下面将介绍中断的一些术语和特性。

中断分组 interrupt grouping

GIC将每个中断分为Group 0 或 Group 1:

  • 对于Group 0 中断,GIC使用 IRQ 或者 FIQ的异常请求将中断转发到目标core中。
  • 对于 Group1 中断,GIC只能使用IRQ异常请求。
  • 对于中断优先级的处理,GIC对Group0 和 Group1使用同样的方案。
  • 对于一些Group 0 的中断,可以将其配置锁定。

interrupt grouping在所有的GICv2中均已实现,对于GICv1,只在其安全扩展(GIC Security Extensions)下实现。

安全性扩展 Security Extensions

在ARMv7中,安全性扩展是可选的配置,ARM安全扩展通过以下方式促进安全应用程序的开发:

  • 将硬件安全特性集成到体系结构中
  • 提供安全的虚拟内存空间,由处于安全状态的内存访问访问
  • 提供非安全的虚拟内存空间,由非安全状态的内存访问访问。
    当实现GIC安全扩展的GIC连接到实现ARM的处理器时:
  • Group 0 中断是安全Secure中断,Group1是Non-Secure非安全的中断。
  • 处理器访问GIC中的寄存器的行为取决于访问是安全的还是非安全的。非安全访问只能读写非安全中断对应的信息。安全访问可以读写与非安全中断和安全中断相对应的信息。
  • 安全系统软件可以分别将每个实现的中断定义为安全的或非安全的。
  • 非安全中断只能向目标处理器发出IRQ中断请求的信号。
  • 安全中断可以向目标处理器发出IRQ或FIQ中断请求的信号。
  • 安全的软件可以安全地管理中断源,而不会受到干扰不安全的软件。

中断处理模型 Models for handling interrupts

在ARM多处理器实现中,有两种中断处理模型:

  • 1-N模型: 只有一个处理器能处理当前中断,当一个中断被编程为转发到多个目标core中时,系统必须实现一种机制来决定让其中一个core处理该中断。
  • N-N模型:所有处理器都能单独接收中断。当某个core确认了中断时,该中断在该CPU interface的pending状态会被清除,但是其他core对应的CPU interface中该中断的pending状态将不受影响。

虚假中断 Spurious interrupts

当GIC已经给目标core发送中断信号,但是该中断已经不再被需要时,当目标core确认中断时,GIC将返回一个特殊的中断ID,比如1023,来表明当前中断是个虚假中断,以下情况可能会导致目标core收到虚假中断:

  • 在处理器确认中断之前:
    • 软件操作改变了中断的优先级
    • 软件disable了该中断
    • 软件改变了该中断的target处理器
  • 对于1-N中断,若该中断指定了多个目标core,其中一个core确认了中断后,其余core将收到虚假中断。

中断复用 Banking

在ARM架构中Banking有特殊的含义,笔者理解为复用

  • 中断复用Interrupt banking:在多处理器系统中,对于PPI和SGI来讲,GIC可以处理多个带有相同中断ID的中断,这样的中断叫做** banked interrupt**,通过将中断ID和目标处理器的CPU ID结合在一起,从而可以被当做是独一无二的中断。
  • 寄存器复用Register banking:在同一个地址上可以存在多个寄存器的备份,这个称为寄存器复用:
    • 在多处理器系统中,同一个寄存器分别为每个处理器对应的 banked interrupts提供一个独立的备份
    • GIC实现了安全扩展,同一个寄存器分别存在安全Secure和非安全Non-Secure的寄存器备份。

参考文档: ARM Generic Interrupt Controller Architecture
Specification

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SOC罗三炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值