LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

GIC v2.0架构规格书阅读笔记

相关文档:《《CoreLink™ GIC-400 Generic Interrupt Controller Revision: r0p1 Technical Reference Manual》阅读笔记》。

Chapter 1Introduction

1.1 About the Generic Interrupt Controller architecture

GIC提供的功能包括:

  • 单核或多核环境中处理中断源、中断行为、中断路由的寄存器。
  • 支持:
    • ARM架构安全扩展。
    • ARM架构虚拟化扩展。
    • 处理硬件中断源的关闭、打开、产生到CPU中断。
    • Software Generateed Interrupts
    • 中断屏蔽和优先级
    • 单核和多核环境
    • 功耗管理唤醒事件

GIC的中断组功能支持:

  • 配置每个中断可为Group 0或Group 1。
  • 产生Group 0中断信号到CPU,可作为IRQ或者FIQ。
  • 产生Group 1中断信号到CPU,仅可作为IRQ。
  • 统一的机制处理不同优先级Group 0和Group 1中断。
  • 可选Group 0中断锁存。

1.2 Security Extensions support

当GIC实现了安全扩展功能:

 

  • Group 0中断即为安全中断,Group 1中断即为非安全中断。
  • 处理器访问寄存器的行为取决于是安全访问还是非安全访问。除非本文件另有明确规定,否则在访问GIC寄存器时:
    • 对安全寄存器的非安全读取返回零
    • GIC忽略对安全寄存器的任何非安全写入
  • 安全软件可以单独配置中断安全或非安全。
  • 非安全中断发送IRQ信号到处理器。
  • 安全中断可以发送IRQ或FIQ信号到处理器。
  • 安全软件可以安全地管理中断源,而不会受到非安全软件的干扰。

1.4 Terminology

1.4.1 Interrupt states

中断状态如下表:

中断状态 说明
Inactive
中断既不是Active,也不是Pending。
Pending 外部硬件产生的中断已经被GIC识别,或者软件已经触发中断,此时中断等待被目标处理器处理。
Active 送达GIC的中断已经被处理器响应,并且已经在处理中但是还没有完成。
Active and pending 处理器正在处理中断,并且还存在一个pending状态的同源中断。

中断各状态转换关系如下图:

1.4.2 Interrupt types

中断类型 触发方式  
Peripheral interrupt
Private Peripheral Interrupt (PPI)

Edge-triggered

Level-sensitive

外设产生,仅可送到指定处理器。
Shared Peripheral Interrupt (SPI)
外设产生,可送达一组处理器中任一个。
Software-generated interrupt (SGI)
Edge-triggered
通过写GICD_SGIR产生,用于处理器核间通信。
Virtual interrupt
  送到一个处理器的虚拟机。
Maintenance interrupt
Level-sensitive 发送key时间信号,比如一组中断使能或关闭。

1.4.3 Models for handling interrupts

SGI使用N-N处理模式,只要SGI送到的CPU都会进行中断能处理。

SPI使用1-N处理模式,只有一个CPU响应中断,其他CPU忽略此中断。

中断处理模式    
1-N

只有一个处理器处理这个中断。系统必须实现一种机制,以确定哪个处理器处理送达多个处理器的中断。

 
N-N 所有处理器都独立接收中断。当处理器确认中断时,中断挂起状态仅为该处理器清除。其他处理器的中断保持挂起状态。  

 

Chapter 2 GIC Partitioning

GIC架构在逻辑上分为一个Distributor和一个或多个CPU interface。GIC虚拟化扩展向GIC添加一个或多个虚拟CPU interface。

Distributor:负责中断优先级排序,将中断分发到系统处理器对应的CPU interface。

CPU interface:负责优先级屏蔽和系统中处理器处理抢占

Virtual CPU interface:GIC虚拟化扩展为系统中每个处理器添加一个Virtual CPU interface:Virtual interface control、Virtual CPU interface。

如下图可知:

  • Distributor的SPI是所有核共享一个,而PPI/SGI是对应每个处理器一个。
  • 从CPU interface出来的中断要么是IRQ、要么是FIQ。
  • SGI对应ID0-15,PPI对应ID16-31。

2.2 The Distributor

 Distributor集中所有中断源,确定每个中断的优先级;对于每个CPU接口,将具有最高优先级的中断转发给interface,以进行优先级屏蔽和抢占处理。

2.2.1 Interrupt IDs

中断通过ID被标识,每个CPU interface支持高达1020个中断。

GIC中断ID序号ID0-ID1019分配如下:

  • ID0-ID31给每个CPU interface私有中断。
    • ID0-ID15给SGI。
      • ID0-ID7给Non-Secure中断。
      • ID8-ID15给Secure中断。
    • ID16-ID31给PPI。
  • ID32-ID1019给SPI。 

2.3 CPU interfaces

启用时,CPU interface为对应处理器选择采用最高优先级的pending中断,并且确定中断是否具有足够的优先级,以便向处理器发送中断请求信号。

为了确定是否向处理器发送中断请求信号,CPU接口考虑中断优先级掩码和处理器的抢占设置。

在任何时候,处理器都可以从它的GICC_HPPIR读取活动中断最高优先级。

 

Chapter 3 Interrupt Handling and Prioritization

3.1 About interrupt handling and prioritization

中断处理包括:

  • GIC如何识别中断。
  • 软件如何对GIC进行编程来配置和控制终端。
  • GIC对每个CPU上中断的状态机维护。
  • 处理的异常模型和GIC如何交互。

中断优先级包括:

  • 中断优先级的配置和控制。
  • pending中断的执行顺序。
  • 中断何时对目标处理器可见:
    • 中断优先级屏蔽。
    • 中断优先级组。
    • 一个活跃中断的抢占。

GIC在单核处理器仅有一个CPU interface,在多核处理器上对每一个核都实现一个CPU interface。

GICv2的安全扩展通过中断组来实现:

  • 默认情况下,所有中断属于Group 0中断,并且发送IRQ中断请求信号到CPU核。
  • 每个中断都可以被配置成Group 1或者Group 0中断。
  • CPU interface可以被配置为将Group 0中断作为FIQ中断请求信号发送到CPU核。

3.2 General handling of interrupts

一个中断的状态可能有:

  • inactive
  • pending
  • active
  • active and pending

GIC中断处理流程:

  1. GIC判断此中断是否使能。
  2. 对每个pending中断,GIC决定目标处理器(一个或多个)。
  3. Distributor将最高优先级的pending中断送达每一个CPU interface。
  4. CPU interface决定是否产生中断信号到对应处理器。
  5. 处理器响应中断;GIC返还中断ID给处理器,并更新中断状态。
  6. 处理器中断后,处理器发送EOT信号个GIC。

 

3.2.1 Priority drop and interrupt deactivation

 

3.2.2 Interrupt controls in the GIC

 

3.2.3 Implications of the 1-N model

3.2.4 Interrupt handling state machine

 

 

 

 

3.3 Interrupt prioritization

3.4 The effect of interrupt grouping on interrupt handling

3.5 Interrupt grouping and interrupt prioritization

3.6 Additional features of the GIC Security Extensions

 

Chapter 4 Programmers’ Model

 

posted on 2023-08-21 09:32  ArnoldLu  阅读(643)  评论(0编辑  收藏  举报

导航