ARM IHI0069F GIC architecture specification (2)

2024-03-23 10:12

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

1.1.1 GICv2 以来 GIC 架构的变化

GIC 可扩展性
GICv2架构仅支持最多8个PE,因此具有无法扩展到大型系统的功能。 GICv3 通过更改中断路由机制(称为关联路由)以及在中断分配中引入一个新组件(称为重新分配器)来解决此问题。 有关详细信息,请参阅第 3 章 GIC 分区。
通过将 GICD_CTLR.ARE_S 或 GICD_CTLR.ARE_NS 设置为 1 来启用安全状态的关联路由。

中断分组
中断分组是 GICv3 用于使中断处理与 Armv8 异常模型保持一致的机制:
• 第 0 组物理中断预计在最高实施的异常级别进行处理。
• 安全组1 物理中断预计在安全EL1 或EL2 处处理。
• 非安全组1 物理中断除外,可以在使用虚拟化的系统中的非安全EL2 上处理,或者在不使用虚拟化的系统中的非安全EL1 上处理。
这些中断组可以使用 Armv8 架构中的配置位和 GICv3 架构中的配置位映射到 Armv8 FIQ 和 IRQ 信号,如第 4-58 页的中断分组中所述。
在 GICv3 中,中断分组支持:
• 将每个中断配置为组 0、安全组 1 或非安全组 1。
• 使用FIQ 异常请求向目标PE 发送第0 组物理中断信号。
• 向目标PE 发送第1 组物理中断信号,其方式允许使用IRQ 处理程序在其自己的安全状态下进行处理。 第 1 组中断的确切处理取决于当前异常级别和安全状态,如第 4 章物理中断处理和优先级中所述。
• 用于处理第0 组和第1 组中断优先级的统一方案。

中断转换服务 (ITS)
中断转换服务 (ITS) 提供的功能允许软件控制转发到 ITS 的中断如何转换为:
• GICv3 和GICv4 中的物理中断。
• 虚拟中断,仅限GICv4。
ITS 还允许软件确定转换中断的目标重新分配器。
软件可以通过命令接口和内存中相关的基于表的结构来控制 ITS。 中断翻译服务 (ITS) 的输出始终是 LPI,它是一种形式
基于消息的中断。 请参阅第 5-85 页的中断转换服务。

特定于区域的外设中断 (LPI)
LPI 是一类新的中断,它显着扩展了 GIC 可以处理的中断 ID 空间。 LPI 是可选的,如果实现,可以由中断转换服务 (ITS) 生成和支持。 请参阅第 5-78 页的 LPI。

软件生成的中断 (SGI)
随着GICv3支持大规模系统的能力,SGI的上下文被修改,不再包含源PE的身份。 请参见第 4-55 页的软件生成的中断。

共享外设中断 (SPI)
分配器中添加了一组新的寄存器,以支持基于消息的 SPI 的设置和清除。 请参见第 4-56 页的共享外设中断。

系统寄存器接口
     该接口使用 Armv8-A 或 Armv8-R PE 中的系统寄存器指令为 CPU 接口寄存器提供紧密耦合的接口。 该接口用于与中断处理和优先级屏蔽直接关联的寄存器,以最大限度地减少访问延迟。 对于虚拟化,以这种方式访问的寄存器包括由VM中断处理程序访问的寄存器以及将虚拟中断从管理程序转发到VM的寄存器。 所有其他寄存器都是内存映射的。
     对于 AArch64 状态,通过以下设置启用对系统寄存器接口的访问:
     • ICC_SRE_EL1.SRE == 1。
     • ICC_SRE_EL2.SRE == 1。
     • ICC_SRE_EL3.SRE == 1。
     对于 AArch32 状态,通过以下设置启用对系统寄存器接口的访问:
     • ICC_SRE.SRE == 1。
     • ICC_HSRE.SRE == 1。
     • ICC_MSRE.SRE == 1。
     其他与 GICv2 向后兼容的行为在第 13 章传统操作和非对称配置中进行了描述。
     注:
     在支持传统操作的 GIC 中,内存映射访问可用于所有架构的 GIC 寄存器。
除非另有说明,本手册描述了启用关联路由、系统寄存器访问和两种安全状态的系统中的 GICv3 架构。 这意味着:
• GICD_CTLR.ARE_NS == 1。
• GICD_CTLR.ARE_S == 1。
• GICD_CTLR.DS == 0。
对于AArch64状态下的操作:
• ICC_SRE_EL1.SRE == 1,对于该寄存器的安全和非安全副本。
• ICC_SRE_EL2.SRE == 1。
• ICC_SRE_EL3.SRE == 1。
对于AArch32状态下的操作:
• ICC_SRE.SRE == 1。
• ICC_HSRE.SRE == 1。
• ICC_MSRE.SRE == 1。
从 GICv3 开始,ARE 和 SRE 控制位设置为 0 的传统操作已被弃用,并且如果 PE 实现安全 EL2,则将被删除。 有关旧操作的更多信息,请参阅第 13 章旧操作和非对称配置。

GICv3.1 特有的更改
GICv3.1 增加了对内存分区和监控、扩展的 SPI 范围、扩展的 PPI 范围的支持以及对 Secure EL2 的支持。

特定于 GICv4 的更改
GICv4 添加了对直接向 VM 注入虚拟中断的支持,无需涉及虚拟机管理程序。 仅实现至少一个将中断转换为 LPI 的 ITS 的系统才支持直接注入。

GICv4.1 特有的更改
GICv4.1 扩展了直接注入支持以处理虚拟 SGI。 GICv4.1 改变了一些 GICv4 数据结构的处理方式。

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



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

相关文章

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 芯片一