The GIC logical components

GICv3体系结构由一组逻辑组件组成:

  • A Distributor.
  • A Redistributor for each PE that is supported.
  • A CPU interface for each PE that is supported.
  • Interrupt Translation Service components (ITS), to support the optional translation of
    events into LPIs.

Distributor、Redistributor和ITS统称为IRI

CPU interface 在所有实现的异常级别处理物理中断如下:

  • 转换为LPI的中断可选择通过ITS路由到Redistributor 和CPU interface.
  • PPI直接从源路由到本地Redistributor。
  • SPIs通过Distributor路由到目标Redistributor和相关的CPU interface。
  • SGI由软件通过CPU interface和Redistributor生成。然后,它们通过 Distributor到一个或多个目标Redistributor和相关联的CPU interfaces。

在GICv3中,ITS是一个可选组件,它将事件转换为物理LPI。

  • 通过访问Redistributors中的寄存器支持直接LPI。
  • LPI支持由ITS提供。

一个实现只能支持其中一种方法。
在GICv4中,必须包含至少一个ITS,以支持虚拟LPI的直接注入。
包含ITS的实现中的GI:

不包含ITS且支持直接LPI的实现中的GIC:

Distributor

Distributor执行中断优先级排序,并将SPI和SGI分发到连接到系统中PE的Redistributors和CPU interfaces。Distributor寄存器由GICD_前缀标识。
GICD_CTLR为以下各项提供全局设置:

  • 启用affinity routing
  • 禁用security
  • 启用Secure and Non-secure Group 1中断.
  • 启用Group 0中断

对于SPIs,Redistributors提供了一个编程接口,用于:

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

Interrupt translation service, ITS

ITS是GICv3体系结构中的一种可选硬件机制,它将LPI路由到适当的Redistributor。软件使用命令队列配置ITS。内存中与ITS关联的表结构将与设备关联的EventID转换为PE的挂起INTID。
ITS在GICv4中不是可选的,所有GICv4的实现必须至少包含一个ITS。

Redistributor

Redistributor是IRI的一部分,连接到PE的CPU interface。Redistributor使用内存中的数据结构保存所有物理LPI的控制、优先级和pending信息。Redistributor中的两个寄存器指向这些数据结构:

  • GICR_PROPBASER.
  • GICR_PENDBASER.

在GICv4中,Redistributor还包括用于处理虚拟LPI的寄存器,这些虚拟LPI由ITS转发到Redistributer并直接转发到VM,而不涉及管理程序。这被称为将虚拟中断直接注入VM。
在GICv4中,Redistributor使用内存中保存的数据结构共同托管所有虚拟LPI的控制、优先级和pending信息。两个寄存器在Redistributor中指向以下数据结构:

  • GICR_VPROPBASER.
  • GICR_VPENDBASER.

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

Redistributor为由GICR_前缀标识。 Redistributor为以下各项提供了编程接口:

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

CPU interface

GIC体系结构支持CPU interface,该接口为系统中的PE提供寄存器接口。每个CPU interface提供一个编程接口,用于:

  • 根据实施的安全状态,实现中断处理的一般控制和配置。
  • Acknowledging 中断。
  • 执行优先级下降。
  • 中断停用。
  • 为PE设置中断优先级掩码。
  • 定义PE的抢占策略。
  • 确定PE的最高优先级pending中断。

CPU interface有几个组件:

  • 允许软件的监督级别控制物理中断的处理的组件。与此相关的寄存器由ICC_前缀标识。
  • 允许软件的监督级别控制虚拟中断的处理的组件。与此相关的寄存器由ICV_前缀标识。
  • 允许hypervisor控制pending中断设置的组件。与此相关的寄存器由ICH_前缀标识。

在EL2处可访问的系统寄存器用于控制PE的活动、挂起、活动和挂起虚拟中断列表,这些寄存器由ICH_前缀标识。

GIC Partitioning相关推荐

  1. imx6ull中断体系之GICV2

    本文不研究中断虚拟化相关内容,部分内容来自于百问网手册 一.中断类型 Peripheral interrupt :其包含以下两种类型的外围中断,它们可以边缘触发或者高低电平触发 ​ Private P ...

  2. GICv2知识点总结

    安全扩展: ARM处理器安全扩展是ARMv7-A架构配置文件的可选扩展.这意味着ARMv7-A实现是否包括安全扩展是实现定义的.ARM安全扩展通过以下方式促进安全应用程序的开发: 将硬件安全功能集成到 ...

  3. 【LeetCode】Palindrome Partitioning 解题报告

    [题目] Given a string s, partition s such that every substring of the partition is a palindrome. Retur ...

  4. 【C++】C++11 STL算法(三):分隔操作(Partitioning operations)、排序操作(Sorting operations)

    目录 分隔操作(Partitioning operations) 一.is_partitioned 1.原型: 2.说明: 3.官网demo 二.partition 1.原型: 2.说明: 3.官方d ...

  5. Lintcode108 Palindrome Partitioning || solution 题解

    [题目描述] Given a strings, cutsinto some substrings such that every substring is a palindrome. Return t ...

  6. 在线作图丨高级的微生物分析——在线做Variance Partitioning Analysis(VPA分析)

    今天小编给大家分享点厉害的干货~ Question 1:什么是VPA? 群落分析中常见的环境因子分析包括CCA典范对应分析(canonical correspondence analysis)和RDA ...

  7. 【leetcode】132. Palindrome Partitioning II

    题目如下: 解题思路:本题是[leetcode]131. Palindrome Partitioning的升级版,要求的是求出最小cuts,如果用[leetcode]131. Palindrome P ...

  8. 1503 - A PRIMARY KEY must include all columns in the table's partitioning function

    1503 - A PRIMARY KEY must include all columns in the table's partitioning function 错误的原因:表的主键字段必须包含分 ...

  9. Palindrome Partitioning

    题目:Given a string s, partition s such that every substring of the partition is a palindrome. Return ...

最新文章

  1. YARN-2.7.3-源码分析系列2:启动脚本原理的分析
  2. 情感分析——深入snownlp原理和实践
  3. xnio java_java基础篇---新I/O技术(NIO)
  4. ui设计卡片阴影_UI设计形状和对象基础知识:阴影和模糊
  5. 【SSH网上商城项目实战11】查询和删除商品功能的实现
  6. 判断当前浏览器是不是微信浏览器
  7. sqlalchemy学习
  8. 高速计算机的应用领域概括,[其它课程]计算机基础教案第一篇第一、二章.doc
  9. EXTASP.Net几天使用总结
  10. Struts2基本的执行过程
  11. html div区域划分、居中各种前端技巧笔记
  12. js对象数组中的某属性值,拼接成字符串形式
  13. 滤波器相关知识(更新中)
  14. 外部无法连接部署在linux上的MongoDB
  15. xlinx芯片JTAG烧录
  16. Missing parentheses in call to 'print'
  17. kubelet源码分析(一)之 NewKubeletCommand
  18. Android项目实战——菜鸟商城
  19. 域名注册需要云服务器吗,说明申请域名的方法步骤有哪些?域名注册需要云服务器吗?...
  20. 什么是repo文件?

热门文章

  1. 一年200多天不上网 看远望7号船员怎么玩抖音
  2. 求一元二次方程的根 OpenJ_Bailian - 2707
  3. chrome 本地文件 翻译工具
  4. VSCode按ctrl与鼠标左键无法实现跳转的解决办法
  5. 1.19(Cake Baking)
  6. AppOps 命令大全
  7. ssh连接报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED“问题原因及解决方法
  8. math.h里的数学计算公式
  9. Java导出超大Excel文件,防止内存溢出
  10. 微信昵称乱码 mysql_微信昵称乱码及mysql编码格式设立(utf8mb4)_mysql