ARM IHI0069F GIC architecture specification (5)

news2025/1/19 11:01:51

Ch2 中断分配与路由

2.1 The Distributor and Redistributors

Distributor 为 SPI 提供路由配置,并保存所有关联的路由和优先级信息。
Redistributor 提供 PPI 和 SGI 的配置设置。
Redistributor总是在有限的时间内向 CPU 接口呈现具有最高优先级的待处理中断。
有关中断优先级的详细信息,请参阅第 4-65 页的中断优先级。
最高优先级的挂起中断可能会发生变化,因为:
• 先前的最高优先级中断已被ACK。
• 先前的最高优先级中断已被抢占。
• 先前的最高优先级中断被删除并且不再有效。
• 组中断启用已修改。
• PE 不再是 participating PE。 请参阅第 2-36 页的参与节点。


2.2 中断 ID 号

中断使用 ID 号 (INTID) 来标识。 GICv3 支持的 INTID 范围取决于具体设计,并根据以下规则定义的:
• 对于Distributor和Redistributor中支持的 INTID 位的数量:
     — 如果不支持 LPI,则Distributor中的 ID 空间限制为 10 位。 这与早期版本的 GIC 架构相同。
     — 如果支持 LPI,则 INTID 字段是在 14-24 位范围内实现定义的,如 GICD_TYPER 的寄存器描述中所述。
     注
     可以通过 GICR_PROPBASER 将Redistributor配置为使用比 GICD_TYPER 指定的更少的位。
• 对于ITS 中支持的INTID 位的数量:
     — 如果支持 LPI,则 INTID 字段由实现定义,范围为 14-24 位。
     — INTID 字段的大小由 GITS_TYPER.IDbits 定义。
     必须对 ITS 进行编程,以便转发到Redistributor的中断位于该Redistributor支持的中断范围内,否则行为将无法预测。
• 对于CPU 接口中支持的INTID 位的数量:
     — GICv3 CPU 接口支持 16 位或 24 位 INTID 字段,选择由实现定义。 支持的物理中断标识符位数由 ICC_CTLR_EL1.IDbits 和 ICC_CTLR_EL3.IDbits 指示。
有效的 INTID 空间由 CPU 接口和Distributor中实现的大小控制。 将大于支持大小的 INTID 转发到 CPU 接口是一个编程错误。
未使用的 INTID 位是 RAZ。 这意味着任何受影响的位字段都是零扩展的。
表 2-1 显示了 INTID 空间如何按中断类型进行分区。

Arm 推荐的 PPI INTID 分配由服务器基本系统架构提供,请参阅 Arm® 服务器基本系统架构 (SBSA)。
GICv4 架构通过除了 INTID 空间之外还支持 vPEID,为每个 VM 提供了唯一的 INTID 空间。 有关虚拟化的详细信息,请参阅第 6-154 页的关于虚拟化的 GIC 支持,有关 vPEID 的详细信息,请参阅第 5-85 页的中断转换服务。
Arm 强烈建议对已实现的中断进行分组,以使用最低的 INTID 编号和尽可能小的 INTID 范围。 这减少了内存中必须实现且发现例程必须检查的关联表的大小。
Arm 强烈建议软件保留:
• INTID0 - INTID7 用于非安全中断。
• INTID8 - INTID15 用于安全中断。

2.2.1 特殊 INTID

GIC架构为特殊目的保留的INTID列表如下:

1020
GIC 返回此值以响应 EL3 处的 ICC_IAR0_EL1 或 ICC_HPPIR0_EL1 读取,以指示正在确认的中断是预计在安全 EL1 处处理的中断。 仅当 PE 使用 AArch64 状态在 EL3 执行时,或者当 PE 在 Monitor 模式下以 AArch32 状态执行时,才会返回此 INTID。
当 ICC_CTLR_EL3.RM == 1 时,也可以通过在 EL3 处读取 ICC_IAR1_EL1 或 ICC_HPPIR1_EL1 返回该值,请参阅第 13-818 页上的非对称操作和 ICC_CTLR_EL3.RM 的使用。

1021
GIC 返回此值以响应 EL3 处的 ICC_IAR0_EL1 或 ICC_HPPIR0_EL1 读取,以指示正在确认的中断是预期在非安全 EL1 或 EL2 处处理的中断。 仅当 PE 使用 AArch64 状态在 EL3 执行时,或者当 PE 在 Monitor 模式下以 AArch32 状态执行时,才会返回此 INTID。
当 ICC_CTLR_EL3.RM == 1 时,也可以通过在 EL3 处读取 ICC_IAR1_EL1 或 ICC_HPPIR1_EL1 返回该值,请参阅第 13-818 页上的非对称操作和 ICC_CTLR_EL3.RM 的使用

1022
该值仅适用于旧版操作。 有关详细信息,请参阅第 13-815 页上的特殊 INTID 1022 的使用。

1023
如果没有具有足够优先级的挂起中断可以向 PE 发出信号,或者如果最高优先级挂起中断不适合以下情况,则返回该值以响应中断确认:
• 当前安全状态。
• 与系统寄存器关联的中断组。

这些 INTID 不需要中断结束或停用。
有关使用特殊 INTID 的更多信息,请参阅以下寄存器的说明:
• ICC_IAR0_EL1。
• ICC_IAR1_EL1。
• ICC_HPPIR0_EL1。
• ICC_HPPIR1_EL1。

2.2.2 混合 INTD 大小的实现

实现可能会选择为 GIC 的不同部分实现不同的 INTID 大小,但须遵守以下规则:
• PE 可以实现16 位或24 位的INTID。
   注
   系统可能包含支持 16 位 INTID 的 PE 和支持 24 位 INTID 的 PE 的混合。
• Distributor 和 Redistributors必须全部实现相同数量的INTID 位。
• 在支持LPI 的系统中,分发器和所有再分发器必须实现至少14 位的INTID。
Distributor 和 Redistributors中实现的位数不得超过系统中任何 PE 上实现的最小位数。


由于中断可能针对任何 PE,因此每个 PE 必须能够接收再分发器可以发送的最大 INTID。 这意味着再分发器支持的 INTID 大小不能超过系统中每个 PE 支持的最小 INTID 大小。
• 在不支持LPI 的系统中,Distributor 和 Redistributors必须实现至少5 位的INTID,并且不能实现超过10 位的INTID。 对于 GIC 版本 3.1,可以实现不超过 13 位的 INTID。
• 在包含一个或多个 ITS 的系统中,ITS 可以实现任何值,最高可达并包括Distributor 和 Redistributors支持的位数,最低可达 14 位,这是支持 LPI 所需要的最少位数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法 day29 回溯5

491 非递减子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情…

蓝桥杯(4):python动态规划DF[1]

动态规划相当于正着想?dfs主要适用于位置的变化? 子问题!状态,状态转移方程 1 一维DP 1.1 定义 重叠子问题!转换成子问题 ,与记忆化搜索很像 1.2 例子 1.2.1 上楼梯 子问题到最终的问题只能跨一步&…

arm裸机-1、定时器pwm

时钟配置 我们使用s3c2440,主频12M,查看用户手册 通过锁相环抬升到400MHZ,分成三条通路,通过HHDIVN和PDIVN配置频率比,这个频率比配置手册已经给出。 配置MPLL主频400Mhz, 通过这个公式算出MPLL s、p、m都…

LeetCode 1379.找出克隆二叉树中的相同节点:二叉树遍历

【LetMeFly】1379.找出克隆二叉树中的相同节点:二叉树遍历 力扣题目链接:https://leetcode.cn/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/ 给你两棵二叉树,原始树 original 和克隆树 cloned&#xff0…

《QT实用小工具·五》串口助手

1、概述 源码放在文章末尾 该项目实现了串口助手的功能,可在界面上通过串口配置和网络配置进行串口调试。 基本功能 支持16进制数据发送与接收。支持windows下COM9以上的串口通信。实时显示收发数据字节大小以及串口状态。支持任意qt版本,亲测4.7.0 到…

《数字图像处理》-上机 5 图像阈值化处理、霍夫变换及形态学算法

一、上机目的 学习图像阈值化处理、霍夫变换、形态学算法及编程实现方法 二、相关知识及练习 1、图像阈值化处理 图像阈值化(Binarization)旨在剔除掉图像中一些低于或高于一定值的像素,从而提 取图像中的物体,将图像的背景和…

【JavaScript】函数 ⑦ ( 函数定义方法 | 命名函数 | 函数表达式 )

文章目录 一、函数定义方法1、命名函数2、函数表达式3、函数表达式示例 一、函数定义方法 1、命名函数 定义函数的标准方式 就是 命名函数 , 也就是之前讲过的 声明函数 ; 函数 声明后 , 才能被调用 ; 声明函数的语法如下 : function functionName(parameters) { // 函数体 …

探索前端架构:MVC、MVVM和MVP模式

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

qt通过setProperty设置样式表笔记

在一个pushbutton里面嵌套两个label即可,左侧放置图片label,右侧放置文字label,就如上图所示; 但是这时的hover,press的伪状态是没有办法“传递”给里面的控件的,对btn的伪状态样式表的设置,是不…

提升工作效率:B端工作台设计基础详解

随着互联网和信息技术的快速发展,越来越多的企业开始以数字化、智能化的方式管理和运营自己的业务。B端工作台设计作为企业应用的重要组成部分,越来越受到重视。本文将从三个方面对B端工作台设计进行全面分析。让我们看看。 1. B端工作台设计原则 B端工…

16.springboot项目下使用事务(springboot-016-transaction)

事务是一个完整的功能&#xff0c;也叫作是一个完整的业务 事务只跟什么SQL语句有关&#xff1f;事务只跟DML语句有关系&#xff1a;增删改 DML,DQL,DDL,TCL,DCL 首先添加两个依赖以及MyBatis代码自动生成插件 <!--MySql驱动--><dependency><groupId>mysql…

Spring-IoC 基于注解

基于xml方法见&#xff1a;http://t.csdnimg.cn/dir8j 注解是代码中的一种特殊标记&#xff0c;可以在编译、类加载和运行时被读取&#xff0c;执行相应的处理&#xff0c;简化 Spring的 XML配置。 格式&#xff1a;注解(属性1"属性值1",...) 可以加在类上…

全球主机监控

全球主机监控 - 国内外VPS、云服务器的库存监控和优惠信息全球主机VPS库存监控补货通知 Stock Monitor 绿云GreenCloudVPS库存监控 搬瓦工BandwagonHost库存监控 斯巴达SpartanHost库存监控 CloudCone库存监控 AlphaVps库存监控 BuyVm 库存监控 Dmit库存监控 xTom/V.PS库存监控…

【上海大学计算机组成原理实验报告】二、数据传送实验

一、实验目的 了解在模型机中算术、逻辑运算单元的控制方法。学习机器语言程序的运行过程。通过人工译码&#xff0c;加深对译码器基本工作原理的理解。 二、实验原理 根据实验指导书的相关内容&#xff0c;本次实验所要用的CP226实验仪在手动方式下&#xff0c;运算功能通过…

前视声呐目标识别定位(三)-部署至机器人

前视声呐目标识别定位&#xff08;一&#xff09;-基础知识 前视声呐目标识别定位&#xff08;二&#xff09;-目标识别定位模块 前视声呐目标识别定位&#xff08;三&#xff09;-部署至机器人 前视声呐目标识别定位&#xff08;四&#xff09;-代码解析之启动识别模块 …

攻防世界 xff_referer 题目解析

xff_referer 一&#xff1a;了解xxf和Referer X-Forwarded-For:简称XFF头&#xff0c;它代表客户端&#xff0c;也就是HTTP的请求端真实的IP&#xff0c;只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 一般的客户端发送HTTP请求没有X-Forwarded-For头的&#xff0…

js表达式

js 数据&#xff1a; 字面量 1 123 变量 a 表达式 12 2*2 a&&b 表达式都会有一个返回结果。表达式仍然是数据&#xff0c;所有可以写字面量&#xff0c;变量的地方都可以写表达式 在JavaScript中&#xff0c;表达式中的运算符具有不同的优先级&#xff0c;这决定…

【OJ】动规练习六

个人主页 &#xff1a; zxctscl 如有转载请先通知 题目 1. 413. 等差数列划分1.1 分析1.2 代码 2. 978. 最长湍流子数组2.1 分析2.2 代码 3. 139. 单词拆分3.1 分析3.2 代码 1. 413. 等差数列划分 1.1 分析 一、题目解析&#xff1a; 至少有三个元素才能构成等差数列&#xff…

JWT--study

JWT 1、简介 2、结构 头部 载荷 签证 应用 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>Token 生成 解析token package com.wang.utils;import io.…

用anaconda创建新的虚拟环境

1.打开Anaconda Prompt&#xff0c;进入base环境 2.确定新的虚拟环境的名字及python版本 conda create -n test python3.9选y并回车 3.创建成功 4.激活test环境 conda activate test然后就可以开始你的操作了~