自学内容网 自学内容网

[GICv3] 2. GIC结构(GIC Partitioning)

GIC结构

  GICv3架构由一组逻辑组件组成。

  • 一个分配器(Distributor)。
  • 每个PE都具有的重新分配器(Redistributors)。
  • 每个PE都具有的CPU接口(CPU interface)。
  • 中断转换服务组件(Interrupt Translation Service, ITS),以支持事件到LPI的转换。

imageimage​​

  CPU接口可以在异常级别处理物理中断:

  • 被转换成LPI的中断可以通过ITS选择路由到Redistributor和CPU接口。
  • PPI直接从源头路由到本地Redistributor。
  • SPI从源头通过分配器路由到目标再分配器和相关的CPU接口。
  • SGI是由软件通过CPU接口和Redistributor生成的。然后,它们通过分配器被路由到一个或多个目标再分配器和相关的CPU接口。

不同组件的功能

Distributor

  执行中断优先级仲裁,分发SPI和SGI到Redistributor和CPU interface。

  GICD_ CTLR寄存器提供全局设置,包括中断路由,禁用安全特性,启用安全和非安全组1的中断和启用第0组的中断。

  对于SPI,Distributor提供了如下编程接口:

  • 启用或禁用SPI。
  • 设置每个SPI的优先级。
  • 每个SPI的路由信息。
  • 将每个SPI设置为电平敏感或边缘触发。
  • 控制SPI的待定和活动状态。
  • 将每个SPI分配给一个中断组。
  • 生成基于消息的SPI。

中断转换服务(ITS)

  ITS是GICv3架构中的一个可选的硬件机制,它将LPI路由到适当的Redistributor。软件使用一个命令队列来配置一个ITS。与ITS相关的内存中的表结构将与设备相关的EventID翻译成PE的待定INTID。
在GICv4中,所有的GICv4实现必须至少包括一个ITS

重分配器(Redistributor)

  重新分配器是IRI中连接到PE的CPU接口的一部分。重新分配器使用保存在内存中的数据结构为所有物理LPI保存控制、优先级和待定信息。Redistributor中的两个寄存器(GICR_PROPBASER, GICR_PENDBASER)指向这些数据结构。

  在一个支持LPI但不包括ITS的实现中,GICR_*寄存器包含一个简单的内存映射接口,用于通知和控制物理LPI。

  Redistributor提供了如下编程接口:

  • 识别、控制和配置支持的功能,以实现实现的中断和中断路由。
  • 启用或禁用SGI和PPI。
  • 设置SGI和PPI的优先级。
  • 将每个PPI设置为电平敏感或边缘触发。
  • 将每个SGI和PPI分配给一个中断组。
  • 控制SGI和PPI的待定状态。
  • 控制SGI和PPI的活动状态。
  • 支持对连接的PE进行电源管理。
  • 在支持LPI的地方,对内存中支持相关中断属性及其待定状态的数据结构进行基址控制。
  • 在支持GICv4的地方,对内存中支持相关虚拟中断属性的数据结构及其待定状态的基础地址控制。

CPU接口(CPU interface)

  GIC架构支持一个CPU接口,为系统中的PE提供一个寄存器接口。每个CPU接口都提供了一个编程接口:

  • 一般控制和配置,以便按照实现的安全状态和兼容性支持要求进行中断处理。
  • 识别(Acknowledging)中断。
  • 执行优先级下降(priority drop)。
  • 清除(Deactivation)一个中断。
  • 为PE设置一个中断优先级掩码。
  • 定义PE的抢占策略。
  • 确定PE的最高优先级待定中断。

中断旁路支持

  CPU接口可选择包括中断信号绕过,因此,当接口禁用中断信号时,传统的中断信号可以被传递给PE上输入的中断请求,绕过GIC功能。

  ‍


原文地址:https://blog.csdn.net/qq_27350133/article/details/140332836

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!