ARM IHI0069F GIC architecture specification (7)

2024-05-28 00:04

本文主要是介绍ARM IHI0069F GIC architecture specification (7),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3.1 GIC逻辑组件

GICv3体系结构由一组逻辑组件组成:
    •Distributor。
    •每个受支持的PE都有一个Redistributor。
    •支持的每个PE都有一个CPU interface。
    •中断翻译服务组件(ITS),支持将事件翻译为LPI。
Distributor, Redistributor和ITS统称为IRI。
    a.ITS是可选的,IRI中可能有多个ITS。
    b.每个PE有一个Redistributor。
    c.每个PE有一个CPU interface。

CPU interface处理所有实现的异常级别的物理中断:
    •可选择通过ITS将转换为LPI的中断路由至Redistributor和CPU interface
    •PPI直接从源路由到本地Redistributor。
    •SPI从源通过分发服务器路由到目标Redistributor和相关的CPU interface
    •SGI由软件通过CPU interface和Redistributor生成。然后通过Distributor路由到到一个或多个目标Redistributor和相关联的CPU interface。

在GICv3中,ITS是一个可选组件,可将事件转换为物理LPI。该体系结构还支持不需要使用ITS的直接LPI。如果支持LPI,可以通过下面两个方式中的任意一个来实现:
    •通过访问Redistributers中的寄存器来支持直接LPI。
    •LPI支持由ITS提供。
一个实现必须只支持其中一种方法。

在GICv4中,必须包含至少一个ITS,以提供对虚拟LPI直接注入的支持。

ITS和Redistributor之间的通信机制由具体实现定义的。

CPU interface 和 Redistributor 之间的通信机制由具体实现定义的。

以下列表更详细地描述了上面第一张图所示的组件:

Distributor

Distributor执行中断优先级排序,并将SPIs和SGI分配给PE的Redistributor和CPU interface。
GICD_CTLR为以下各项提供全局设置:
    •启用亲和路由。
    •禁用安全性。
    •启用安全和非安全组1中断。
    •启用组0中断。
对于SPI,分发服务器为以下各项提供编程接口:
    •启用或禁用SPI。
    •设置每个SPI的优先级。
    •每个SPI的路由信息。
    •将每个SPI设置为电平敏感型或边缘触发型。
    •生成基于消息的SPI。
    •将每个SPI分配给一个中断组。
    •控制SPI的挂起状态和活动状态。
分发服务器寄存器由GICD_前缀标识。
有关详细信息,请参阅第2章中断的分布和路由。

ITS

ITS是GICv3体系结构中的一种可选硬件机制,用于将LPI路由到适当的Redistributor。软件使用命令队列来配置ITS。存储器中与ITS相关联的表结构将与设备相关联的EventID转换为PE的未决INTID。
ITS在GICv4中不是可选的,并且所有GICv4实现必须至少包括一个ITS。
有关更多信息,请参阅第5-85页的中断翻译服务。
Redistributor Redistributr是IRI中连接到PE的CPU interface的部分
Redistributor使用内存中的数据结构来保存所有物理LPI的控制、优先级和挂起信息。Redistributor中的两个寄存器指向以下数据结构:
    •GICR_PROPBASER。
    •GICR_PENDBASER。
在GICv4中,Redistributor还包括用于处理虚拟LPI的寄存器,这些虚拟LPI由ITS转发到Redistributer并直接转发到VM,而不涉及系统管理程序。这被称为将虚拟中断直接注入到VM中。
在GICv4中,Redistributers使用内存中的数据结构共同托管所有虚拟LPI的控制、优先级和挂起信息。Redistributor中的两个寄存器指向以下数据结构:
    •GICR_VPROPBASER。
    •GICR_VPENDBASER。
在支持LPI但不包括ITS的实现中,GICR_*寄存器包含一个简单的内存映射接口,用于信号和控制物理LPI。
Redistributers提供了一个编程接口,用于:
    •识别、控制和配置支持的功能,以启用实施的中断和中断路由。
    •启用或禁用SGI和PPI。
    •设置SGI和PPI的优先级。
    •将每个PPI设置为水平敏感型或边缘触发型。
    •将每个SGI和PPI分配给一个中断组。
    •控制SGI和PPI的未决状态。
    •控制SGI和PPI的活动状态。
    •为连接的PE提供电源管理支持。
    •在支持LPI的情况下,内存中支持相关中断属性及其挂起状态的数据结构的基地址控制。
    •在支持GICv4的情况下,内存中支持相关虚拟中断属性及其挂起状态的数据结构的基地址控制。
Redistributor寄存器由GICR_前缀标识。
有关Redistributor的更多信息,请参阅第2-35页的Affinity routing和第2-30页的The Distributor and Redistributers。

CPU interface

GIC体系结构支持CPU interface,该接口为系统中的PE提供寄存器接口。每个CPU interface提供一个编程接口,用于:
    •一般控制和配置,以根据实施的安全状态和遗留支持要求实现中断处理。
    •确认中断。
    •执行优先级下降。
    •中断的停用。
    •为PE设置中断优先级掩码。
    •定义PE的抢占策略。
    •确定PE的最高优先级未决中断。
CPU interface有几个组件:
    •一种允许软件监控级别控制物理中断处理的组件。与此相关联的寄存器由ICC_前缀标识。
    •一种允许软件监控级别控制虚拟中断处理的组件。与此相关联的寄存器由ICV_前缀标识。
    •允许系统管理程序控制一组挂起中断的组件。与此相关联的寄存器由ICH_前缀标识。


CPU interface中的系统寄存器与在物理域中处理中断的软件相关联,或者与作为VM一部分的非安全EL1的执行相关联。HCR_EL2的配置确定访问是对物理资源还是对虚拟资源。
在EL2可访问的系统寄存器,用于控制PE的活动、挂起、活动和挂起虚拟中断的列表,由ICH_前缀标识。
有关处理物理中断的更多信息,请参阅第4章物理中断处理和优先级。
有关处理虚拟中断的更多信息,请参阅第6章虚拟中断处理和优先级。

这篇关于ARM IHI0069F GIC architecture specification (7)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1008978

相关文章

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

ARM 虚拟化介绍

0.目录 文章目录 0.目录1.概述 1.1 Before you begin 2.虚拟化介绍 2.1 虚拟化为什么重要2.2 hypervisors的两种类型2.3 全虚拟化和半虚拟化2.4 虚拟机和虚拟CPUs 3.AArch64中的虚拟化4.stage 2 转换 4.1 什么是stage 2 转换4.2 VMIDs4.3 VMID vs ASID4.4 属性整合和覆盖4.5模拟

PC/MCU/SoC使用的计算机架构(Architecture)

1. 冯·诺依曼结构 冯·诺依曼结构(Von Neumann Architecture)是计算机系统的经典架构,由数学家约翰·冯·诺依曼在1945年提出。它的核心思想是程序存储器和数据存储器共享同一存储设备,程序和数据以相同的方式存储和访问。冯·诺依曼架构的主要特点包括: 单一存储器:存储程序指令和数据在同一个存储器中。控制单元:通过程序计数器顺序执行指令。数据路径:通过一个共享的总线,将数据

SylixOS ARM平台下内存对齐访问

1.内存对齐 1.1     内存对齐概要 现代计算机中内存空间都是按照byte划分的,从理论上讲对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 1.2     内存对齐作用和原因 各个硬件平台对存储空间的处理上有很大的不同。一些平

ubuntu22.04 qemu 安装windows on arm虚拟机

ubuntu22.04 qemu 安装windows on arm虚拟机 iso: https://uupdump.net/ https://massgrave.dev/windows_arm_links vivo driver: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

arm linux lua移植

lua: lua home 1.下载lua源码 lua下载 lua-5.3.4.tar.gz 2.解压: tar xvf lua-5.3.4.tar.gz 3.修改makefile and luaconf.h $修改 lua-5.3.4/Makefile #INSTALL_TOP= /usr/local INSTALL_TOP= $(shell pwd)/out #修改安装目录(当前目录/o

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编

文章目录 一、裸机开发(21个)二、嵌入式Linux驱动例程三、汇编3.1 处理器内部数据传输指令3.2 存储器访问指令3.3 压栈和出栈指令3.4 跳转指令3.5 算术运算指令3.6 逻辑运算指令 一、裸机开发(21个) 二、嵌入式Linux驱动例程 三、汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一