当前位置: 首页 > news >正文

ARM的GIC

一、介绍

ARM 的 GIC(Generic Interrupt Controller,通用中断控制器)是 ARM 架构中用于管理和处理中断的硬件组件,特别为多核处理器系统设计,确保中断请求能被高效、可靠地分发和处理。

 

下面这个表格汇总了 ARM GIC 各版本的主要特点:

 

 

二、 GIC 的关键组成部分

 

GIC 主要由以下两个核心逻辑单元构成,它们协同工作以高效管理中断:

 

1. 分发器 (Distributor):

   * 作为中断的“总调度中心”,接收所有来自外部设备或内部模块的中断请求。

   * 对所有这些中断进行优先级排序,确保高优先级中断优先处理。

   * 根据预设配置,决定将中断分发给哪一个或哪几个目标CPU核心。

2. CPU 接口 (CPU Interface):

   * 每个CPU核心都有自己专属的CPU接口,它负责接收来自分发器的中断信号。

   * 与CPU核心直接交互,向核心报告需要处理的中断。

   * 负责处理CPU核心对中断的确认(ACK) 和完成通知。

 

三、 GIC 支持的中断类型

 

GIC 将中断分为不同类型,以便进行精细化管理:

 

中断类型 全称 特点

SPI (Shared Peripheral Interrupt) 共享外设中断 可由任意CPU核心处理,适用于连接整个系统共享的设备。

PPI (Private Peripheral Interrupt) 私有外设中断 特定于某个CPU核心,通常用于每个核心独有的定时器或性能监视单元。

SGI (Software Generated Interrupt) 软件生成中断 由软件写入特定寄存器触发,主要用于多个CPU核心之间的通信与同步。

LPI (Locality-specific Peripheral Interrupt) 特定位置外设中断 基于消息的中断(类似PCIe MSI),在GICv3及以后版本引入,具有可重新分配的特性。

 

四、 GIC 的关键特性

 

GIC 的功能远不止简单的中断路由,它还提供了许多强大特性:

 

* 优先级管理与抢占:GIC 支持为每个中断源设置优先级。高优先级中断可以抢占正在处理的低优先级中断,确保紧急任务得到即时响应。

* 中断屏蔽:允许软件选择性屏蔽(禁用) 某些中断,这在处理关键代码段或防止中断嵌套时非常重要。

* 安全扩展:与 ARM TrustZone 技术集成,可以为每个中断标记安全或非安全状态。安全世界的中断不会被打入非安全世界的软件,增强了系统安全性。

* 虚拟化支持:从 GICv2 开始引入硬件虚拟化支持,GICv3 和 v4 大幅增强。允许虚拟机监控程序(Hypervisor)高效地将虚拟中断直接注入到虚拟机中,极大降低了虚拟化环境下的中断处理开销和复杂度。

 

五、 Linux 内核对 GIC 的适配方式


Linux 内核通过 设备树(Device Tree) 和 GIC 驱动 完成硬件适配,无需用户手动配置:

- 设备树描述:在设备树中定义 GIC 的基地址、中断范围、支持的版本(如  compatible = "arm,gic-v3" ),内核启动时通过设备树识别 GIC 硬件参数;

- 驱动层抽象:内核通过  drivers/irqchip/irq-gic.c  等文件实现 GIC 驱动,向上提供统一的中断操作接口(如  request_irq()  申请中断、 free_irq()  释放中断),屏蔽不同 GIC 版本的硬件差异,让上层驱动(如网卡驱动、串口驱动)可直接调用通用接口处理中断。

 

GIC 的所有功能都通过读写其内存映射寄存器来配置和控制。软件开发人员(特别是操作系统和驱动开发者)需要:

 

1. 初始化 GIC:上电后配置分发器和各CPU接口。

2. 设置中断路由:指定SPI中断的目标CPU列表。

3. 设置优先级和掩码:为特定中断配置优先级和使能状态。

4. 编写中断服务例程:在CPU接收到中断后,识别中断号并执行相应处理。

 

六、 GIC 的应用场景

 

GIC 对于现代计算系统至关重要:

 

* 嵌入式系统:实时性要求高的工业控制、汽车电子,依赖GIC的优先级和可预测性。

* 移动设备:智能手机、平板电脑,处理众多外设中断的同时优化功耗。

* 服务器与高性能计算:管理大量CPU核心间的中断与通信,确保系统可扩展性。

* 虚拟化平台:为云数据中心提供高效的中断虚拟化,保证客户机性能。

 

七、 总结

ARM GIC 是 ARM 生态系统中的核心基础设施,通过其可扩展的分布式架构、精细化的中断分类与管理策略以及强大的虚拟化与安全支持,满足了从嵌入式设备到数据中心服务器等各种场景对中断处理的严苛需求。

 


文章转载自:

http://Y6GkGudR.bnpcq.cn
http://shosVTFa.bnpcq.cn
http://LkhX5WsV.bnpcq.cn
http://CSUxsQ3F.bnpcq.cn
http://FXEC0wiV.bnpcq.cn
http://5MAlXeJ5.bnpcq.cn
http://rXnGLzxP.bnpcq.cn
http://sfXrbwDl.bnpcq.cn
http://25iHszNF.bnpcq.cn
http://0Ag5Bts4.bnpcq.cn
http://FigOFcx3.bnpcq.cn
http://YThQv8YJ.bnpcq.cn
http://wZS7Og7X.bnpcq.cn
http://7XoI1rpG.bnpcq.cn
http://pT4fXHP1.bnpcq.cn
http://oLrkhdIF.bnpcq.cn
http://shEGIdPz.bnpcq.cn
http://o0xcaUjL.bnpcq.cn
http://a9ZxklCK.bnpcq.cn
http://ZRNorRnY.bnpcq.cn
http://b4RnI94C.bnpcq.cn
http://XkvDKrJI.bnpcq.cn
http://XsSxKyDZ.bnpcq.cn
http://ZL5GSbju.bnpcq.cn
http://JoKJgpji.bnpcq.cn
http://frSexWi6.bnpcq.cn
http://zv5H4Wlt.bnpcq.cn
http://wBmb41Rw.bnpcq.cn
http://FhKFJPVI.bnpcq.cn
http://oXOfTyO8.bnpcq.cn
http://www.dtcms.com/a/383033.html

相关文章:

  • < 自用文 acme.sh > 使用 Cloudflare API 自动更新证书
  • vLLM - LLMEngine
  • 天猫返利app的多租户架构设计:数据隔离与资源共享方案
  • 数据库造神计划第六天---增删改查(CRUD)(2)
  • AI 赋能内容创作:从文案生成到视频剪辑,创作者的工具革命已至
  • 如何使用“线程级微内核架构”打造应用
  • [硬件电路-219]:自由电子与空穴导电的比较(异同)
  • 系统编程完结整理
  • 阿里云视觉多模态理解大模型开发训练部署
  • leetcode_21 合并两个有序链表
  • Node.js实时截屏实现方案
  • 01数据结构-01背包问题
  • 20250914-01: Langchain概念:流式传输(Streaming)
  • 初步认识 Spring Boot 自动装配
  • 《突破Unity+腾讯云联机瓶颈:多人游戏同步延迟与数据安全的双维度优化》
  • 计算机算术9-浮点乘法
  • 第24课:项目实战与总结
  • 【深度学习|学习笔记】从背景→公式→性质→梯度→何时用哪一个→数值稳定性与常见坑方面描述sigmoid和softmax函数!(一)
  • C++宽度优先搜索算法:队列与优先级队列
  • 同步降压转换器原理
  • 人工智能训练师三级备考笔记
  • <基于深度学习的条纹图分析及其不确定性估计>-论文总结
  • 【愚公系列】《人工智能70年》020-语音识别的历史性突破(深度学习带来历史性突破)
  • 网络操作系统与分布式操作系统的区别
  • Spring Cloud Alibaba 实战:从 0 到 1 构建可监控的微服务体系
  • 分布式推理与量化部署
  • Kafka 实现从网络层到日志与位点的“全景拆解”
  • Python入门教程之赋值运算符
  • 机器学习系统设计:从需求分析到模型部署的完整项目流程
  • SpringMVC架构解析:从入门到精通(1)