CICv3 介绍

关于GICv3

GICv3体系结构设计为ARMv8-A和ARMv8-R设计。
GICv3支持:

  • The ARMv8 architecture.
  • Locality-specific Peripheral Interrupts(LPIs).
  • Private Peripheral Interrupts (PPIs).
  • Software Generated Interrupts (SGIs).
  • Shared Peripheral Interrupts (SPIs).
  • Interrupt masking and prioritization.
  • Uniprocessor and multiprocessor systems.
  • Wakeup events in power management environments.

对于每个PE,GIC架构描述了如何从系统内不同类型的中断生成IRQ和FIQ中断。ARMv8-A异常模型随后描述了PE如何处理这些IRQ和FIQ中断。

  • GICv3体系结构支持与两种安全状态(Secure state和Non-secure state)相关的v3中断的路由和处理。
  • GICv3架构支持用于处理与虚拟机相关联的虚拟中断。

GICv3相对于 GICv2的修改

GIC scalability

GICv2体系结构最多只支持八个PE,因此具有无法扩展到大型系统的功能。GICv3通过改变中断路由的机制(称为关联路由)和在中断分布中引入一个新组件(称为Redistributor)来解决这一问题。

Interrupt grouping

  • Group 0物理中断(physical interrupts)处理在最高的异常等级(Exception level-EL3)处理。
  • Secure Group 1物理中断(physical interrupts)预计将在Secure EL1处理。
  • Non-secure Group 1物理中断physical interrupts,在使用虚拟化的系统中,在Non-secure EL2处处理。或在不使用虚拟化系统的Non-secure EL1处处理。

在GICv3中,中断分组支持:

  • 将每个中断配置为Group 0,、Secure Group 1或Non-secure Group 1。
  • 使用FIQ异常请求向目标PE发送Group 0物理中断信号。
  • 安全模式下,Group 1的物理中断可以使用IRQ。
  • 用于处理Group 0和Group 1中断优先级的统一方案。

Interrupt Translation Service (ITS)

中断翻译服务,
提供功能允许软件控制转发到ITS的中断如何转换为:

  • GICv3和GICv4中的物理中断。
  • 虚拟中断,仅在GICv4中。
    ITS还允许软件确定转换中断的目标Redistributor。软件可以通过命令接口和存储器中相关的基于表的结构来控制ITS。中断翻译服务(ITS)的输出总是LPI,这是一种基于消息的中断形式。

Locality-specific Peripheral Interrupts (LPIs)

LPI是一种新的中断类型,它大大扩展了GIC可以处理的中断ID空间。LPI是可选的,如果实现,则可以由中断翻译服务ITS生成和支持。

Software Generated Interrupts (SGIs)

由于GICv3支持大规模系统,SGI的上下文被修改,不再包含源PE的身份。

Shared Peripheral Interrupts (SPIs)

在Distributor中添加了一组新的寄存器,以支持基于消息的SPI的设置和清除。

System register interface

该接口使用ARMv8-A或ARMv8-R PE中的系统寄存器指令为CPU interface寄存器提供紧密耦合的接口。
该接口用于与中断处理和优先级屏蔽直接相关的寄存器。
对于虚拟化,以这种方式访问的寄存器既包括由VM中断处理程序访问的寄存器,也包括将虚拟中断从管理程序转发到VM的寄存器。
所有其他寄存器都是内存映射的。

对于AArch64状态,通过以下设置启用对系统寄存器接口的访问:

  • ICC_SRE_EL1.SRE == 1.
  • ICC_SRE_EL2.SRE == 1.
  • ICC_SRE_EL3.SRE == 1.

Changes specific to GICv4

GICv4增加了对虚拟中断直接注入VM的支持,而不涉及虚拟机管理程序。只有实现至少一个将中断转换为LPI的ITS的系统才支持直接注入。

Terminology

Interrupt types

Locality-specific Peripheral Interrupt (LPI)
LPI是一个目标外围中断,它被路由到关联层次结构中的特定PE:

  • 在启用了两种安全状态的系统中,LPI始终是非安全group 1中断。
  • LPI具有边缘触发行为。 可使用ITS路由LPI。
  • LPI没有激活状态,因此不需要显式停用。
  • LPI始终是基于消息的中断。

Private Peripheral Interrupt (PPI)
这是一个以单个特定PE为目标的外围中断,不同PE可以使用相同的中断号来指示不同的事件:

  • PPI可以是group 0中断、group 1安全中断或group 1非安全中断。
  • PPI可以支持边缘触发或水平触发。
  • PPI从不使用ITS路由。
  • PPI处于激活状态,因此需要明确停用。

Shared Peripheral Interrupt (SPI)
这是一个外围中断,分发服务器可以将其路由到可以处理该中断的指定PE,或者路由到系统中已配置为接受此类中断的一组PE之一的PE:

  • SPI可以是group 0中断、安全group1中断或非安全group1。
  • SPIs可以支持边缘触发或水平触发。
  • SPIs从不使用ITS路由。
  • SPIs具有活动状态,因此需要显式停用。

Software Generated Interrupt (SGI)
SGI通常用于处理器间通信,并通过写入GIC中的SGI寄存器生成:

  • SGI可以是group 0中断、group 1安全中断或group 1非安全中断。
  • SGI具有边缘触发行为。
  • SGI从不使用ITS路由。
  • SGI处于激活状态,因此需要显式停用。

Interrupt states

Inactive : not active 或者pending的中断。
Pending: 由于硬件或者软件生成,并等待由目标PE处理的中断状态。
Active: 一种已被PE确认并正在处理的中断,且该时间段没有同样的中断给PE。
LPI没有活动状态,并在PE确认后转换到非活动状态。
Active and pending:同一个中断,从中断的一个断言开始处于活动状态,从后续断言开始处于挂起状态。
LPI不具有活动和挂起状态,并且在PE确认后转换到非活动状态。

Models for handling interrupts

在多处理器实现中,存在以下用于处理中断的模型:
Targeted distribution model
该模型适用于所有PPI和所有LPI。软件指定的目标PE接收中断。

Targeted list model
此模型仅适用于SGI。多个PE独立地接收中断。当PE确认中断时,仅为该PE清除中断挂起状态。在PE确认中断之前,每个PE的中断保持独立挂起。

1 of N model
此模型仅适用于SPIs。中断以指定的PE集合为目标,并且仅在该集合中的一个PE上执行。该体系结构对可选择PE施加限制。

其他项

Idle priority
在GICv3中,空闲优先级是在CPU interface 上没有中断活动时从ICC_RPR_EL1读取的运行优先级。

Interrupt Identifier (INTID)
唯一标识具有关联事件及其源的中断的数字空间。然后将中断路由到一个或多个PE进行处理。PPI和SGI中断号对每个PE都是本地的。SPI和LPI具有物理域的全局中断号

Interrupt Routing Infrastructure (IRI)
Distributor, Redistributors 以及 ITSs

Message-based interrupt
基于消息的中断是由于对指定地址的内存写入访问而被断言的中断。物理中断可以转换为基于消息的中断。
GICv3支持两种基于消息的中断机制:

  • 一种SPI通信机制,其中分配的地址保存在Distributor中。
  • 一种传送LPI的机制,其中分配的地址保存在ITS中(如果实施了ITS),或保存在Redistributor中。

Physical interrupt
以物理PE为目标的中断是物理中断。它由PE所连接的物理CPU interface向PE发出信号。

Running priority
在任何给定时间,CPU interface的运行优先级为:

  • 活动中断的组优先级,该接口上没有优先级下降。
  • 如果接口上没有优先级下降的活动中断,则运行优先级为空闲优先级

Sufficient priority
GIC CPU interface将启用的未决中断的优先级与以下所有值进行比较,以确定中断是否具有足够的优先级:

  • 优先级掩码寄存器ICC_PMR_EL1。
  • 接口的抢占设置,如ICC_BPR0_EL1和ICC_BPR1_EL1所示。
  • CPU接口的当前运行优先级,如ICC_RPR_EL1所示。

如果中断具有足够的优先级,则向连接的PE发出信号。

Virtual interrupt
以VM为目标的中断是虚拟中断。它由关联的virtual CPU interface发出信号。

Maintenance interrupt
一种物理中断,用信号通知与VM上的中断处理相关的关键事件,以允许管理程序跟踪这些事件。这些事件由管理程序处理,包括启用和禁用一组特定的中断。

Supported configurations and compatibility

在ARMv8-A中,EL2和EL3是可选的,PE可以支持其中一个、两个或两个异常级别。

  • PE要求EL3同时支持安全和非安全状态。
  • PE需要EL2来支持虚拟化。
  • 如果未实现EL3,则只有一个安全状态。此安全状态为安全状态或 非安全状态。

Affinity routing configuration

  • 非对称配置,其中非安全状态启用关联路由,安全状态禁用关联路由。这为安全的传统环境提供了支持。
  • 在legacy-only环境中,安全状态和非安全状态都禁用了关联路由。

System register configuration

当在两种安全状态下都启用了关联路由以执行时,GIC必须配置为使用系统寄存器访问以处理物理中断。

GIC control and configuration

许多GIC寄存器提供不同的形式,以允许有效的中断处理:

  • For two Security states.
  • For different interrupt groups.
  • Using System register access for GICv3 or memory-mapped access for legacy
    operation.
    加粗样式在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ARMv8对虚拟化的支持和PE运行的异常级别决定了physical CPU interface 寄存器还是virtual CPU interface 寄存器被访问。
    下表显示了与GIC一起使用或影响GIC运行的ARMv8体系结构状态。在这里插入图片描述

    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值