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.mfbz.cn/a/509094.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT】setContextMenuPolicy()函数用法

在Qt中,setContextMenuPolicy() 是一个相当通用的方法,几乎所有的继承自 QWidget 或其派生类的图形用户界面控件都可以使用该方法来设置它们的上下文菜单策略。这意味着,包括但不限于以下常见的Qt GUI控件都能使用 setContextMenuPolicy() 来…

软考高级架构师:进程和线程概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

picGo图床搭建gitee和smms(建议使用)

picGoGitee 这个需要下载gitee插件, 因为官方频繁的检索文件类型, 有时候也会失效 如果没有特殊要求平时存个学习的要看图中文字的重要的图片建议就是smms, 免费也够用! 图片存本地不方便, 各种APP中来回传还会失帧损失画质, 所以你值得往下看 picGosmms 建议使用这个, sm…

idea2023+jdk1.8+Maven3.6.3+Testng6.10+junit4.13搭建测试

idea2023jdk1.8Maven3.6.3Testng6.10junit4.13搭建测试 首先创建maven工程 导入依赖 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/…

HTTP和HTTPS谁传输数据更安全?

1.HTTP HTTP在传输数据时&#xff0c;通常都是明文传输&#xff0c;也就是传输的数据没有进行加密。在这种情况下&#xff0c;如果传输的是一些敏感数据&#xff0c;比如某银行卡密码&#xff0c;就很容易被别人截获到&#xff0c;这就对我们的个人利益产生了威胁。 HTTP传输数…

Linux中JMeter的使用

Linux中JMeter的使用 Linux版本JMeter安装 # 1、下载、安装JMeter 如果有安装包直接上传即可 wget -c https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.4.1.tgz # 解压 tar -zxvf apache-jmeter-5.4.1.tgz -C /usr/local/sjdwz_test cd /usr/local/sjdwz_t…

【教学类-09-05】20240402细线迷宫图03+箭头图片(A4横版一页-4份横版)

作品展示 背景需求&#xff1a; 在word模板上添加“形状-箭头”&#xff0c;结果生成的图片上&#xff0c;箭头位置挪移。 思考&#xff0c;如何直接在迷宫图上添加箭头&#xff0c;以图片形式将迷宫图箭头插入docx word模板 重点说明 代码展示 批量制作细线条的迷宫图(A4横板…

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在图像处理中&#xff0c;解决了分割的问题之后&#xff0c;下面就是属性信息的提取。在这其中&#xff0c;有一种属性是非常重要的 &#xff0c;那…

Redis(一) redis配置 | 如何连接redis服务器 | 基本数据类型 | 基本全局命令 | 数据结构和内部编码方式

文章目录 前言Redis 配置文件连接 redis 服务器Redis 常见数据类型Redis 基本全局命令set 和 get 命令KEYS 命令EXISTS 命令DEL 命令EXPIRE 和 TTL 命令Redis 过期策略定时器和时间轮的方式实现过期key的及时删除 TYPE 命令 数据结构和编码方式 前言 本篇文章将介绍我们在 Lin…

Flume进阶学习!

本文图片来自于8.flume实时监控文件hdfs sink使用演示_哔哩哔哩_bilibili Apache Flume 的启动过程及其配置文件和脚本 在官网下载的Flume的压缩包中&#xff0c;.lib文件有大量的jar包&#xff0c;按道理说只有.lib文件就可以运行Flume程序了。只不过需要java -jar命令还要加…

android APP monkey 测试

monkey 测试 一、电脑ADB安装及使用详解1、什么是 Monkey 测试2、什么是ADB3、ADB的作用4、安装前提条件5、ADB下载6、ADB安装与配置 二、连接安卓手机检查是否连接上安卓手机windows端安装ADB驱动 三、 monkey测试操作指令演示指令APP包名查看方式测试效果 一、电脑ADB安装及使…

Golang 内存管理和垃圾回收底层原理(二)

一、这篇文章我们来聊聊Golang内存管理和垃圾回收&#xff0c;主要注重基本底层原理讲解&#xff0c;进一步实战待后续文章 垃圾回收&#xff0c;无论是Java 还是 Golang&#xff0c;基本的逻辑都是基于 标记-清理 的&#xff0c; 标记是指标记可能需要回收的对象&#xff0c…

日记本(源码+文档)

日记本&#xff08;小程序、ios、安卓都可部署&#xff09; 文件包含内容程序简要说明功能项目截图客户端首页日记列表 书写日记个人中心设置密码锁拨打客服热线修改信息退出登录登录页输入密码锁注册页 后端管理登录页首页管理员列表管理用户管理日记列表管理日记数据 文件包含…

Spring Boot项目启动速度优化

1、配置自动配置排除列表&#xff0c;减少启动自动配置扫描&#xff0c;配置项spring.autoconfigure.exclude 2、启动类添加索引注解Indexed&#xff0c;去除启动过程中 Components 的扫描步骤&#xff0c;直接从索引文件读取。 import org.springframework.stereotype.lndexe…

基于springboot的房屋租赁系统平台

功能描述 流程&#xff1a;房主登陆系统录入房屋信息》发布租赁信息&#xff08;选择房屋&#xff09;》租客登陆系统浏览租赁信息》和房主联系、看房&#xff08;根据租赁信息单的电话线下沟通&#xff09;》房主发起签约&#xff08;生成邀请码&#xff09;》租客登陆系统根…

Qt加载.css/.qss文件设置控件的QSS样式(支持程序运行时修改且立即生效类似换肤效果)

初学Qt时要想通过QSS修改控件QWidget&#xff0c;QPushButton等原生基础控件的样式&#xff0c;一般都是直接在.ui文件中直接添加qss&#xff0c;或者在代码中通过setStyleSheet(QString qss)来设置。当程序很大时&#xff0c;很多地方需要复用样式时会非常麻烦&#xff0c;qss…

QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题

在 Python 中&#xff0c;深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象&#xff0c;该对象与原始对象的内容相同&#xff08;包括内部嵌套对象的引用&#xff09;&…

SBCFormer:能够在单板计算机上以每秒1帧的速度进行全尺寸ImageNet分类的轻量级网络

摘要 https://arxiv.org/ftp/arxiv/papers/2311/2311.03747.pdf 计算机视觉在解决包括智能农业、渔业和畜牧业管理等不同领域的实际问题中变得越来越普遍。这些应用可能不需要每秒处理许多图像帧&#xff0c;因此从业者倾向于使用单板计算机&#xff08;SBCs&#xff09;。尽管…

Pytorch数据结构:Tensor

文章目录 Tensor基础1.1、Tensor的维度&#xff08;Dimensions&#xff09;1.1.1、举例说明1.1.2、高维Tensor 1.2、.dim()和.size()方法1.2.1、.dim()方法1.2.2、.size()方法1.2.3、.shape属性1.2.3、示例代码1.2.3.1、一维Tensor1.2.3.2、二维Tensor1.2.3.3、三维Tensor 1.3、…

【Go】十五、接口、多态、断言

文章目录 1、接口的引入2、接口3、接口的注意点4、多态5、断言6、Type Switch 1、接口的引入 以日常生活中打招呼为例&#xff0c;定义接口规范&#xff0c;各国人为打招呼为具体的实现 package main import "fmt"//接口的定义&#xff1a;定义规则、定义规范&…