【ARMv8/v9 GIC 系列 4 -- GIC 中断分类 SGI | PPI | SPI 及中断检测流程】

文章目录

    • GIC 中断分类
      • SGI(Software Generated Interrupts)
      • PPI(Per-Processor Interrupts)
      • SPI(Shared Peripheral Interrupts)
    • 中断检测流程
      • 物理中断生命周期
      • SPI 中断检测流程
      • PPI 和SGI中断检测流程
      • LPI中断检测流程:
      • 小结

GIC 中断分类

ARMv9架构继续支持ARMv8引入的中断管理机制,包括SPI(共享外设中断)、PPI(每处理器中断)和SGI(软件生成的中断)。这些中断类型为不同的应用场景提供了灵活性和高效的中断处理方式。此外,GIC V3中断控制器的组成部分包括:distributor,Redistributor,cpu interface,ITS。

GIC V3中断控制器和处理器核心之间的关系图如下:

在这里插入图片描述

图 1-1

SGI(Software Generated Interrupts)

  • 定义:SGIs是从015的中断编号,为软件生成的中断,主要用于处理器间的通信(IPC)。ARM架构允许软件触发这些中断,以便一个处理器可以向一个或多个处理器发送信号。
  • 应用举例
    • 操作系统调度:操作系统可以使用SGI来实现任务或线程的调度。例如,当一个处理器上的任务需要迁移到另一个处理器时,OS可以通过SGI来触发目标处理器的调度代码。
    • 同步机制:在多核处理器系统中,SGI可用于实现锁或屏障等同步机制。例如,当所有处理器都必须在继续之前达到某个执行点时,可以使用SGI来通知所有处理器。

在这里插入图片描述在这里插入图片描述

PPI(Per-Processor Interrupts)

  • 定义:PPIs是从1631的中断编号,这类中断是每个处理器专有的。这意味着每个处理器都有自己的一组 PPI,而这组PPI仅对该处理器可见。
  • 应用举例
    • 定时器中断:系统定时器会为每个处理器生成定时器中断,这类中断作为PPI处理,确保每个处理器可以基于自己的定时需求独立触发和处理定时器中断。
    • IPI(Inter-Processor Interrupts):当一个处理器需要与另一个处理器通信时(例如,通知它处理一些任务或数据),可以通过发送IPI来实现,IPI是一种特殊的PPI。

SPI(Shared Peripheral Interrupts)

  • 定义:SPIs是从32开始的中断编号,用于系统中的外设共享中断。这意味着SPI可以被系统中的任何处理器接收。
  • 应用举例
    • 网络控制器中断:当网络控制器接收到一个新的网络包并且需要处理器进行处理时,会触发一个SPI来通知处理器。
    • 磁盘I/O中断:在磁盘操作完成时,磁盘控制器会通过SPI通知处理器数据已经准备好。

中断检测流程

GICv3中断号分配对于每个中断,从产生到处理再到结束,是有一个完整的生命周期的。

在这里插入图片描述

图 1-2

物理中断生命周期

  • generate:外设或软件发起一个中断;
  • distribute:中断经过分组,优先级仲裁等,发送给对应的 CPU interface;
  • deliverCPU interface将中断发送给 core;
  • activate:当CPU core 开始响应中断,GIC将最高激活优先级的中断设置为激活;
  • priority drop: core发信号给GIC,通知最高优先级中断,GIC可以重置优先级;
  • deactivation:清除中断.

SPI 中断检测流程

  • 外设发起SPI中断,GIC检测到这个中断,并标记为 Pending状态
  • Distributor对所有处于Pending状态的中断确定目标CPU
  • 对每个CPU,Distributor会从众多Pending状态的中断中,选择优先级高的发送到对应的Redistributor
  • Redistributor将中断发送到目标CPU的CPU Interface上
  • CPU Interface将满足要求的中断发送给CPU
  • CPU进入中断异常后,内核中断处理程序读取GICC_IAR寄存器来响应该中断,寄存器返回硬件中断号
  • CPU处理完中断服务后,通过写GICC_EOIR寄存器,来给GIC发送一个EOI完成信号

PPI 和SGI中断检测流程

  • GIC检测到PPI或者SGI中断,并标记为Pending状态
  • Redistributor选择优先级高的中断发送到对应的CPU Interface
  • CPU Interface将满足要求的中断发送给CPU
  • CPU进入中断异常后,内核中断处理程序读取 GICC_IAR 寄存器来响应该中断,寄存器返回硬件中断号
  • CPU处理完中断服务后,通过写 GICC_EOIR 寄存器,来给GIC发送一个EOI完成信号

LPI中断检测流程:

forwarding方式,由以下寄存器实现

  • GICR_SERLPIR:将指定的LPI中断,设置为Pending状态
  • GICR_INVLPIR:将指定的LPI中断,清除Pending状态。寄存器内容和 GICR_SERLPIR一致
  • GICR_INVLPIR:将缓存中,指定LPI的缓存给无效掉,使GIC重新从memory中载入LPI的配置
  • GICR_INVALLR:将缓存中,所有LPI的缓存给无效掉,使GIC重新从memory中,载入LPI中断的配
  • GICR_SYNCR:对Redistributor的操作是否完成

小结

  • SPI 主要用于外设与处理器间的通信,是共享的,意呅着任何处理器都可以接收和处理SPI中断。
  • PPI 是处理器专用的中断,用于处理每个处理器独有的事件,如定时器中断。
  • SGI 用于处理器间直接的通信,支持软件触发,适合于实现快速的任务调度或同步机制。
    这些不同类型的中断为ARMv9架构提供了灵活而强大的中断管理能力,支持复杂的多核处理器系统和高效的硬件资源利用。

推荐阅读
https://blog.csdn.net/wyy4045/article/details/104827111
https://www.sohu.com/a/771753252_121124377

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

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

相关文章

Centos SFTP搭建

SFTP配置、连接及挂载教程_sftp连接-CSDN博客1、确认是否安装yum list installed | grep openssh-server 2、创建用户和组 sudo groupadd tksftpgroup sudo useradd -g tksftpgroup -d /home/www/tk_data -s /sbin/nologin tksftp01 sudo passwd tksftp013. 配置SFTP注意&a…

Unet已死,Transformer当立!详细解读基于DiT的开源视频生成大模型EasyAnimate

Diffusion Models视频生成-博客汇总 前言:最近阿里云PIA团队开源了基于Diffusion Transformer结构的视频生成模型EasyAnimate,并且提出了专门针对视频的slice VAE,对于目前基于Unet结构的视频生成最好如SVD形成了降维打击,不论是生…

Apifox 快速入门教程

访问示例项目​ 可访问Apifox官网,下载并打开 Apifox 后,你将会看到由系统自动创建的“示例团队”,其中内含一个“示例项目”。 项目中自动生成了与宠物商店有关的数条接口。 手动新建接口​ 新建接口是开发者们最常用的功能之一。Apifox 能…

提升运营设计水平的8个关键技巧

运营设计是建立更强大的设计团队,支持个人、流程和工具的协调,大规模扩大创造力和影响力的一种以人为本的方法。设计和操作通过敏捷和迭代的方法完全改变了开发过程,允许组织跨团队快速扩展和迭代设计过程。一个庞大的运营设计团队应该如何协…

嵌入式虚拟仿真创新教学方案,解决芯片原理讲解抽象、依赖大量硬件平台、系统化教学难三大难题

嵌入式技术起源早,市场需求旺盛,被广泛应用于各个领域,从智能家居到智慧城市,从工业自动化到医疗健康,嵌入式系统深度落地于各类智能设备与系统之中,支撑起物联网的发展。随着物联网与人工智能的迅速发展&a…

NGINX_十八 nginx 访问控制

十八 nginx 访问控制 1 nginx 访问控制模块 (1)基于IP的访问控制:http_access_module (2)基于用户的信任登录:http_auth_basic_module 2 基于IP的访问控制 2.1 配置语法 Syntax:allow addr…

《Windows API每日一练》5.2 按键消息

上一节中我们得知,Windows系统的按键消息有很多类型,大部分按键消息都是由Windows系统的默认窗口过程处理的,我们自己只需要处理少数几个按键消息。这一节我们将详细讲述Windows系统的所有按键消息及其处理方式。 本节必须掌握的知识点&…

解决IDEA使用卡顿的问题,设置JVM内存大小和清理缓存

解决IntelliJ IDEA中卡顿问题,可以尝试以下几个常见且有效的步骤: 1 增加IDEA的JVM内存分配: 位于IDEA安装目录的bin文件夹下,找到对应的操作系统配置文件(idea64.exe.vmoptions(Windows)或id…

BFS:FloodFill算法

文章目录 FloodFill算法简介1.图像渲染2.岛屿数量3.岛屿的最大面积4.被围绕的区域总结 FloodFill算法简介 Flood Fill算法是一种用于确定与某个给定节点相连的区域的算法,常用于计算机图形学和图像处理。该算法可以用于诸如填充多边形、检测连通区域等任务。Flood …

做电池研究如何发表Nature Communications,案例分析

✨【元素魔方学术俱乐部】✨ 👩‍🏫👨‍🏫我们创建了一个学术交流群 给全国各地以及各种研究方向的硕博 和老师们提供一个交流的平台📚🧪 感兴趣的话欢迎加入 📲本公众号中回复“社群” 会自动发…

Lynred在欧洲防务展上将展出新品——“HOT”红外传感器Seegnus。

Lynred在即将举办的巴黎欧洲防务展上将展出其令人瞩目的新品——“HOT”红外传感器Seegnus。这款专为战术视觉设计的大型阵列传感器,以其紧凑的封装和高分辨率的中波红外成像能力,无疑将为航空航天、国防和商业市场带来革命性的突破。 Seegnus传感器拥有…

RX数据集成:信创生态下的平滑过渡方案

过去,众多中国企业倾向于采用国际供应商的数据集成产品与方案。其中Informatica作为行业翘楚,以其卓越性能和技术领先地位赢得了全球500强中95%企业的青睐。在中国市场上,众多企业同样信赖并采纳其解决方案。然而,随着国际环境的演…

威泰视信嵌入式软件工程师笔试题

威泰视信嵌入式软件工程师笔试题答题时间 45分钟 选择题 1、以下不需要编译内核的情况是 A、删除系统不用的设备驱动程序时 B、升级内核时 C、添加新硬件时 D、激活网卡 只要你代码或配置有改动,都要重新编译的,只是如果代码写成块模式的&#xff…

【LLM之RAG】RAT论文阅读笔记

研究背景 近年来,大型语言模型(LLMs)在各种自然语言推理任务上取得了显著进展,尤其是在结合大规模模型和复杂提示策略(如链式思维提示(CoT))时。然而,LLMs 在推理的事实…

.net8 blazor auto模式很爽(三)用.net8的Blazor自动模式测试,到底在运行server还是WebAssembly

Blazor自动模式到底什么时侯在运行server,什么时侯在运行WebAssembly。这个对我们来说非常重要,官方并没有很清楚地告诉我们。并且存在一些误导,让我们觉得自动模式就是不管我怎么弄,blazor都会自动识别该使用server还是WebAssemb…

Ubuntu 安装 CloudCompare

步骤: sudo apt install flatpakflatpak install flathub org.cloudcompare.CloudCompare此时会有报错: error: No remote refs found similar to ‘flathub’执行 flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.fla…

【IDEA】Spring项目build失败

通常因为环境不匹配需要在file->projectstructure里面调整一下。

详解DAC数模转换+DAC输出模拟电压的测量比对实验程序

前言:详解DAC数模转换原理DAC输出模拟电压的测量比对实验程序(使用 DAC 通道 1 输出模拟电压,然后通过 ADC1 的通道 1 对该输出电压进行读取,并显示在 LCD 模块上面,DAC 的输出电压可以通过按键(或 USMART&…

了解CDN:提升网络性能和安全性的利器

在当今的数字时代,网站性能和安全性是每一个网站管理员必须关注的核心问题。内容分发网络(CDN,Content Delivery Network)作为解决这一问题的重要工具,逐渐成为主流。本文将详细介绍CDN的定义、作用及其工作原理&#…

小白学react之Next.js 14(一)不配置路由的玩法

Next.js 14是目前最新版本,我们用就用最新的玩一下。 建一个示例之后,我在找配置,我应该在那建一个新的页面。找半天硬是没找着,答案是现在不需要配置。 我们来看一下Next.js 14的项目结构: 很明显,在src/…