ARM GIC(四) gicv3架构基础

GICv3架构是GICv2架构的升级版,增加了很多东西。变化在于以下:

使用属性层次(affinity hierarchies),来对core进行标识,使gic支持更多的core

将cpu interface独立出来,用户可以将其设计在core内部

增加redistributor组件,用来连接distributor和cpu interface

增加了LPI,使用ITS来解析

对于cpu interface的寄存器,增加系统寄存器访问方式
一、gicv3结构
包含了以下的组件:

distributor:SPI中断的管理,将中断发送给redistributor

redistributor:PPI,SGI,LPI中断的管理,将中断发送给cpu interface

cpu interface:传输中断给core

ITS:用来解析LPI中断

其中,cpu interface是实现在core内部的,distributor,redistributor,ITS是实现在gic内部的。

cpu interface和gic的redistributor通信,通过AXI-Stream协议,来实现通信。

二、中断分组
gicv3,将中断分成了2个大组,group0和group1。

group0:提供给EL3使用

group1:又分为2组,分别给安全中断和非安全中断使用

如下图所示:
在这里插入图片描述
以下是IRQ,FIQ与组的对应关系。

在这里插入图片描述
中断生命周期,如下图所示:
在这里插入图片描述
generate:外设发起一个中断

distribute:distributor对收到的中断源进行仲裁,然后发送给对应的cpu interface

deliver:cpu interface将中断发送给core

activate:core通过读取 GICC_IAR 寄存器,来对中断进行认可

priority drop: core通过写 GICC_EOIR 寄存器,来实现优先级重置

deactivation:core通过写 GICC_DIR 寄存器,来无效该中断

这个中断生命周期,和gicv2的中断生命周期是一样的。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 11:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 11:18:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 11:18:02       82 阅读
  4. Python语言-面向对象

    2023-12-22 11:18:02       91 阅读

热门阅读

  1. 设计模式_行为型模式_观察者模式

    2023-12-22 11:18:02       62 阅读
  2. 如何看待“前端已死”

    2023-12-22 11:18:02       58 阅读
  3. 谁拿了最多奖学金【NOIP2005提高组】(c++)

    2023-12-22 11:18:02       60 阅读
  4. GO设计模式——18、迭代器模式(行为型)

    2023-12-22 11:18:02       65 阅读
  5. SpringMVC之处理响应

    2023-12-22 11:18:02       50 阅读
  6. 南大通用创建主键,外键,索引方法及常见报错

    2023-12-22 11:18:02       61 阅读
  7. scrapy的crawlspider爬虫

    2023-12-22 11:18:02       54 阅读
  8. [调试]stm32使用过程debug记录,持续更新ing

    2023-12-22 11:18:02       60 阅读
  9. 行政法学-第八章:特殊类型的行政行为

    2023-12-22 11:18:02       65 阅读
  10. 电路中VCC、VDD、VEE、VSS分别指什么?

    2023-12-22 11:18:02       118 阅读