ARM IHI0069F GIC architecture specification (5)

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.mzph.cn/news/792500.shtml

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

相关文章

957: 逆置单链表

学习版 【C语言】 #include<iostream> using namespace std; typedef struct LNode {char data;struct LNode* next;LNode(char x) :data(x), next(nullptr) {} }LNode; void creatlist(LNode *&L) {int n;char e;cin >> n;LNode* p1, * p2;p1 L;for (int i…

帝国CMS模板源码整站安装说明(图文)

安装步骤 第一步&#xff1a;先把得到的文件解压缩&#xff0c;把文件通过FTP传到空间里。&#xff08;请不要把类似www.lengleng.net这个文件夹传到FTP&#xff0c;请传这个大文件夹下面的所有文件夹和文件到空间根目录&#xff0c;请不要上传到2级目录&#xff0c;除非你自己…

Windows下用CMake编译PugiXML及配置测试

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 PugiXML是什么&#xff1f; PugiXML 是一个用于解析和操作 XML 文档的 C 库。它提供了简单易用的接口&#xff0c;能够高效地加载…

网络基础二——TCP可靠性实现机制补充

11.3.4确认应答机制 ​ 1.双方通信时要返回确认应答报文&#xff0c;保证对方发送的报文是有效的&#xff1b;尽管整个通信过程中无法保证数据全部可靠&#xff0c;但是可以保证单个方向发送的数据是可靠的&#xff1b; ​ 发送的报文要设置序号&#xff0c;如果是应答报文要…

为移动云数据实现基于可撤销属性组的加密:多代理辅助方法

参考文献为2023年发表的Achieving Revocable Attribute Group-Based Encryption for Mobile Cloud Data: A Multi-Proxy Assisted Approach 动机 对于目前的代理辅助的可撤销基于属性加密来说&#xff0c;外包解密存一些缺点。当多个具有相同属性的用户请求外包转换时&#x…

日期专题:做题笔记 (时间显示/星期计算/星系炸弹/第几天/纪念日)

目录 时间显示 代码 星期计算 代码 星系炸弹 代码 第几天 纪念日 代码 时间显示 时间显示 这道题主要是单位换算。 ①单位换算 ②输出格式&#xff1a; a. 不足两位补前导零。利用printf输出 b. 注意 long long 输出格式应该是 %lld 长整型 代码 #include <…

Python 之 Fastapi 框架学习

依赖安装 Fastapi 有版本要求&#xff0c;需要的 Python 版本至少是 Python 3.8&#xff08;不要犟&#xff0c;按照版本要求来&#xff0c;我最先也是在我 Python3.6 上装的&#xff0c;果不其然跑不起来&#xff09;&#xff0c;幸好我 Win7 老古董能支持的 Python 最高版本…

《C++程序设计》阅读笔记【1-函数】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;《C程序设计》阅读笔记 本文对应的PDF源文件请关注微信公众号程序员刘同学&#xff0c;回复C程序设计获取下载链接。 1 函数1.1 概述1.2 函数定义、声明、原型1.3 变量1.3.1 全局变量1.3.…

内部类(来自类和对象的补充)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

HTMLCSSJS

HTML基本结构 <html><head><title>标题</title></head><body>页面内容</body> </html> html是一棵DOM树, html是根标签, head和body是兄弟标签, body包括内容相关, head包含对内容的编写相关, title 与标题有关.类似html这种…

非写代码无以致远

标题党一下&#xff0c;本篇文章主要汇总了一些代码题&#xff0c;让大家写一些代码练习一下吧&#xff01; 变种水仙花_牛客题霸_牛客网 (nowcoder.com) #include<stdio.h> int main() {for (int i 10000; i < 99999; i) {int sum 0;for (int j 10; j < 1000…

Linux操作系统之防火墙

目录 一、防火墙 1、防火墙的类别 2、安装iptables(四表五链&#xff09; ​​​​​​​一、防火墙 1、防火墙的类别 安全产品 杀毒 针对病毒&#xff0c;特征篡改系统中文件杀毒软件针对处理病毒程序 防火墙 针对木马&#xff0c;特征系统窃密 防火墙针对处理木马 防火墙…

Python 一步一步教你用pyglet制作“彩色方块连连看”游戏(续)

“彩色方块连连看”游戏(续) 上期讲到相同的色块连接&#xff0c;链接见&#xff1a; Python 一步一步教你用pyglet制作“彩色方块连连看”游戏-CSDN博客 第八步 续上期&#xff0c;接下来要实现相邻方块的连线&#xff1a; 首先来进一步扩展 行列的类&#xff1a; class R…

VC++建立空文档失败的一种情形

假设现在要在单文档程序的客户区创建控件; 把控件作为视类的成员变量; 先把成员变量定义加到视类头文件; 然后在视类的, BOOL CMyttView::PreCreateWindow(CREATESTRUCT& cs) {....... } 在此成员函数中创建控件; 运行程序,就会出现如下错误, 这就需要在类向导…

gpt4.0中文版

我愿把这个网站成为全球最强AI网站&#xff01;弄100多个AI伺候你&#xff1f;&#xff1f; 家人们&#xff0c;你们猜我发现了什么牛逼的AI网站&#xff1f;&#xff1f; 直接上图&#xff1a; 编辑 这个网站&#xff0c;聚合了国内外100多个顶尖的AI&#xff0c;包括了Op…

Spring Security 实现后台切换用户

Spring Security version 后端代码&#xff1a; /*** author Jerry* date 2024-03-28 17:47* spring security 切换账号*/RestController RequiredArgsConstructor RequestMapping("api/admin") public class AccountSwitchController {private final UserDetailsSe…

【JAVA】JAVA快速入门(长期维护)

下面是java的一些入门基础知识&#xff0c;有需要借鉴即可。 课程&#xff1a;B站黑马程序员&#xff0c;JAVA入门LINK 一、初识JAVA 1.java概述 概念&#xff1a;java是由sun公司研发&#xff0c;在2009年被oracle收购&#xff0c;祖师爷詹姆斯高斯林&#xff0c;是一种高级…

C++核心编程——4.2(2)对象的初始化和清理

4.2.5 深拷贝与浅拷贝 浅拷贝&#xff1a;编译器提供的简单的赋值拷贝操作 深拷贝&#xff1a;在堆区重新申请空间&#xff0c;进行拷贝操作 示例&#xff1a; class Person { public://无参&#xff08;默认&#xff09;构造函数Person() {cout << "无参构造函数…

力扣热题100_链表_2_两数相加

文章目录 题目链接解题思路解题代码 题目链接 2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 …

黑马鸿蒙笔记

目录 25-Stage模型-页面及组件生命周期 26-Stage模型-UIAbility的启动模式 25-Stage模型-页面及组件生命周期 26-Stage模型-UIAbility的启动模式 singleton 只会有一个实例 multiton 会有多个&#xff0c;但是会销毁旧的 standard 会有多个&#xff0c;但是不会销毁