ARM Cortex-R52 通用中断控制器GIC:Generic Interrupt Controller(一)

news2024/10/6 13:25:12

ARM Cortex-R52 GIC:Generic Interrupt Controller

前言:名词解释

英文缩写英文全称(中文释义)
GICgeneral interrupt controller
ITSInterrupt Translation Service:用来解析中断
SPIShared Peripheral Interrupts
PPIPrivate peripheral interrupt
SGISoftware-generated interrupt
IRIinterrupt routing infrastructure
LPILocality-Specific Peripheral Interrupts:用来支持消息中断
PEProcessing element. Abstract machine
HPPIHighest Priority Pending Interrupt

1.关于GIC

1.1 GIC Overview

ARM的中断控制器被称为GIC(Generic Interrupt Controller),GIC是支持和管理系统中断的资源的模块。它支持中断优先级、中断路由到CPU或输出端口、中断抢占和中断虚拟化等功能。
在这里插入图片描述中断控制器是中断源(外设)和CPU之间的桥梁;
下图是使用GIC管理中断的模型图:
在这里插入图片描述

1.2 GIC 架构背景

在多核时代中,中断控制器被分成两个部分可以更好地支持和管理多处理器系统中的中断。其中一部分是连接外设中断源的I/O APIC,由所有CPU共享。I/O APIC可以通过向指定的CPU发送中断消息实现并发中断处理。另一部分是Local APIC,与每个CPU对应,用于控制本地处理器的中断。它可以在单个处理器上快速响应和处理中断请求,在多处理器环境中也可以把中断请求发送到其他处理器或者操作系统内核来协调处理,从而提高中断处理的效率。

总之,随着多处理器技术的不断发展,中断控制器变得越来越复杂,但也使得系统更加灵活和高效。

在这里插入图片描述

1.3 ARM R52 GIC-v3架构

1.3.1 overView

Cortex-R52处理器采用了ARM公司推出的GIC V3架构,这是一种高度灵活和可扩展的中断控制器架构,特别适用于多核处理器系统。GIC V3架构包括一个内部的GIC分配器(Distributer),每个核还包含一个GIC重分配器(Redistributor)。

Distributer接收外设(SPI)和核心(PPI)的有线中断。 GIC分配器仲裁路由到每个核心的中断以确定最高优先级挂起中断(HPPI),然后将其传递给GIC CPU界面。 来自核的激活,去激活和软件生成的中断通过GIC CPU接口传递以更新GIC分配器的状态。 GIC分配器包含内存映射的配置和状态寄存器。 GIC分配器包含每个中断目标一个再分配器。 再分配器主要负责包含PPI和SGI的寄存器。

GIC CPU接口包括处理物理中断的部分和处理虚拟中断的部分。 GIC CPU接口包含可作为系统寄存器访问的配置和状态寄存器。 中断被配置为Group 0中断或Group 1中断。 Group 0中断使用FIQ发出信号,而Group 1中断使用IRQ发出信号。

GIC CPU接口处理物理中断的部分从GIC分配器接收HPPI。 它执行抢占计算并向核心发出FIQ或IRQ信号。 来自核心的激活,去激活和软件生成的中断通过CPU接口传回到分配器。 GIC CPU接口处理虚拟中断的部分最多可以包含四个虚拟中断,其中优先级最高的用于向核心生成虚拟FIQ或虚拟IRQ。

在这里插入图片描述

distributor: SPI中断的管理,将中断发送给redistributor;
redistributor: PPI,SGI,LPI中断的管理,将中断发送给cpu interface;
cpu interface: 传输中断给 core;
cpu interface 是实现在 core 内部的,distributor,redistributor,ITS是实现在gic内部的.

1.3.2 V3功能升级

相对于V2,V3升级的主要功能包含:

  1. 使用属性层次(affinity hierarchies),来对core进行标识,
    使gic支持更多的core
  2. 将cpu interface独立出来,用户可以将其设计在core内部
  3. 增加redistributor组件,用来连接distributor和cpu
    interface
  4. 增加了LPI,使用ITS来解析
  5. 对于cpu interface的寄存器,增加系统寄存器访问方式

1.3.3 功能描述

GIC Distributer类似于传统计算机系统中的I/O APIC,它负责将来自各种中断源的中断请求转发给相应的Redistributor,并根据CPU的配置和优先级设置进行派发。与传统的I/O APIC不同的是,GIC Distributer还支持像处理器间直接消息传递(Inter-Processor Interrupt,IPI)这样的特殊中断类型,可以通过GIC协议灵活地配置和管理各种中断源。

GIC Redistributor类似于传统计算机系统中的Local APIC,它负责为每个CPU接收并处理来自Distributer派发的中断请求,以及发送处理器间直接消息传递(IPI)的请求。GIC Redistributor可以访问Distributer的寄存器和内存映射区域,以获取有关中断状态和优先级的信息,并根据这些信息向处理器发送中断或IPI请求。此外,GIC Redistributor还支持处理器仲裁,以确保同一时间只有一个CPU处理具有相同优先级的中断。

![在这里插入图片描述](https://img-blog.csdnimg.cn/86d5d94b412c4ab4912d77f0020f677e.png

1.3.3.1 Distributor 功能概述

Distributor 的主要的作用是检测各个 interrupt source 的状态,控制各个interrupt source 的行为,分发各 个 interrupt source 产生的中断事件分发到指定的一个或者多个 CPU interface上。虽然 Distributor 可以管理多个 interrupt source,但是它总是把优先级最高的那个 interrupt 请求送往 CPU interface。寄存器使用 GICD_ 作为前缀。一个gic中,只有一个GICD

1.3.3.2 Redistributor详述

Redistributor详述

对于每个连接的 PE,都有一个 Redistributor.
该 block 的主要功能包括:
(1)启用和禁用 SGI 和 PPI;
(2)设置 SGI 和 PPI 的优先级;
(3)将每个 PPI 设置为电平触发或边缘触发;
(4)将每个 SGI 和 PPI 分配给中断组;
(5)控制 SGI 和 PPI 的状态;
(6)内存中数据结构的基址控制,支持 LPI 的相关中断属性和挂起状态;
(7)电源管理支持。

1.3.3.3 CPU interface详述

CPU interface详述

CPU interface 这个 block 主要用于和 process 进行接口。
该block的主要功能包括:
(1)enable 或者 disable CPU interface 向连接的 CPU assert 中断事件。对于ARM,CPU interface block 和 CPU 之间的中断信号线是 nIRQCPU 和 nFIQCPU。如果disable了中断,那么即便是 Distributor 分发了一个中断事件到CPU interface,但是也不会 assert 指定的 nIRQ 或者 nFIQ 通知 processor。

(2)ackowledging中断。processor 会向 CPU interface block 应答中断(应答当前优先级最高的那个中断),中断一旦被应答,Distributor 就会把该中断的状态从 pending 状态 修改成 active 或者 pending and active(这是和该 interrupt source 的信号有关,例如如果是电平中断并且保持了该 asserted 电平,那么就是pending and active)。processor ack了中断之后,CPU interface就会deassert nIRQCPU和nFIQCPU信号线。

(3)中断处理完毕的通知。当 interrupt handler 处理完了一个中断的时候,会向写 CPU interface 的寄存器从而通知 GIC CPU 已经处理完该中断。做这个动作一方面是通知 Distributor 将中断状态修改为 deactive,另外一方面,CPU interface 会priority drop,从而允许其他的 pending 的 interrupt 向 CPU 提交;

(4)设定priority mask。通过priority mask,可以 mask 掉一些优先级比较低的中断,这些中断不会通知到CPU;

(5)设定preemption的策略;

(6)在多个中断事件同时到来的时候,选择一个优先级最高的通知 processor

注意:GICv3架构的cpu interface从gic内部剥离,实现在PE的内部。并且将cpu interface的寄存器,提供了系统寄存器访问方式,从而实现中断的快速响应。

1.4 GIC-V3和ARM核的连接

在这里插入图片描述

1.5对于core的标识

GICv3中,对于core的标识,使用了属性层次的方式,来进行标识,从而可以支持更多的core。
在这里插入图片描述

2.GIC 一些概念

2.1中断编号

GIC中断源的编号从0开始,0到15是SGI(Software Generated Interrupt),所谓"software generated"。
编号16到31是PPI(Private Peripheral Interrupt),所谓"private",是指这个中断为CPU私有/专用。
与专有的PPI相对应的就是所有CPU全局共享的SPI(Shared Peripheral Interrupt),编号从32到1020。
在这里插入图片描述

2.2 中断分类

2.2.1 Private Peripheral Interrupts (PPIs)

PPI(Private Peripheral Interrupts,私有外设中断)是由特定于单个核心的外设产生的有线中断。每个核心具有16个PPI,INTID16-INTID31。输出接口不支持PPI。没有被分配使用的PPI将作为Cortex-R52处理器顶层的额外中断输入提供。配置未分配的PPI可以选择上升沿触发或低电平触发。
那什么中断会有这种特性呢?
比如通用定时器中断啊,温度传感器中断之类的。

2.2.2 Shared Peripheral Interrupts (SPIs)

SPI是一种由特定于单个核心的外设产生的有线中断,可以被通过软件配置路由到一个特定的核。每个Cortex-R52处理器都具有960个可配置的SPI,这些SPI作为处理器的顶层输入信号提供给其他组件使用。

那么如何确定哪些SPI被分配给哪个核心?
在每个核心中,通过低延迟硬件将32个唯一的SPI路由到该核心,而其他所有核心则使用常规延迟硬件将同样的SPI路由到它们。对于每个核心而言,INTID(32x+32)到INTID(32x+63)的SPI被视为低延迟(其中x = 0、1、2或3),即它们具有更快的响应时间和更高的优先级,可以更快地从硬件设备接收并处理SPI中断请求。

最后,每个SPI都可以配置为上升沿触发或高电平触发,并且通过编程相应的SPI路由信息来实现。SPI[0]对应于INTID32,而SPI[30]对应于INTID991。

2.2.3 Software Generated Interrupts (SGIs)

指由 CPU 直接写对应的寄存器触发中断,因而这种中断不是由硬件产生的,而是由软件主动产生的。这种特殊的中断主要用于核间通信。当处理器需要中断应用程序执行时,可以使用SGI生成中断信号。SGI的数量有限,每个CPU核只能生成16个SGI,每个SGI都有一个独特的编号(INTID0-INTID15)。SGI是边沿触发中断,在生成SGI时,SGI信号会从低电平跳变到高电平,然后维持高电平状态,直到中断服务程序将其清除为止。这些属性使SGI非常适合进行异步通信和同步协议的实现,并可用于更好地支持多处理器系统。

SGI (Software Generated Interrupt) 和 PPI (Private Peripheral Interrupt) 都是 ARM 处理器中的中断信号。每个 CPU 核都有自己的 SGI 或 PPI 中断,不同核的同种类型中断共享相同的编号。因此,它们都采用了 “banked” 形式的中断源,即每个 CPU 核都可以接收到来自同一种类型中断的信号,但是在处理中断时会根据中断编号进行区分和处理。其中,SGI 是由软件触发的中断,用于处理特定的事件或情况。PPI 则是专门为外围设备设计的中断,用于处理与外设相关的事件或情况。这些中断信号都有各自的优先级,并按照优先级高低被处理。这种中断机制可以使系统在出现多个异步事件时能够快速响应并作出正确的处理。

2.2.4 LPI: Locality-Specific Peripheral Interrupts

在gicv3中,引入了一种新的中断类型。message based interrupts,消息中断
外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断
这样的一个好处是,可以减少中断线的个数;为了支持消息中断;gicv3,增加了LPl;来支持消息中断。并且为他分配了特别多的中断号,从8192开始到16777216
在这里插入图片描述

注意:R52虽使用的是V3架构,但是不支持LPI

2.3 中断分组

在 GICv3 中断控制器中,对中断进行了分组:Group0、Secure Group1、Non-secure Group1。
在这里插入图片描述

2.4 中断标记

当一个中断进来的时候,cpu interface 会根据中断的 分组类型 和当前 PE 的 security 状态 来决定是标记为 IRQ 还是 FIQ。
在这里插入图片描述

2.5 中断触发方式

◾edge-triggered: 边沿触发,当中断源产生一个边沿,中断有效
◾level-sensitive:电平触发,当中断源为指定电平,中断有效

R52可以通过寄存器配置
在这里插入图片描述例如:在这里插入图片描述

3.CPU核访问GIC寄存器的方式

ARM CORE访问GIC的方式包括以下两种:

  1. Memory-mapped寄存器方式:GIC Distributor和CPU接口中的控制和状态寄存器都映射到物理地址空间。当CORE需要读写相关的GIC寄存器时,直接通过对应的物理地址进行读写操作即可。
  2. CPU指令方式(系统寄存器方式):针对部分功能,GIC支持使用专门的体系结构扩展指令来进行访问。在ARMv7-A架构中,提供了MRC(Move from register to coprocessor)和MCR(Move register to coprocessor)两个指令,用于向GIC写入或读取相应的控制和状态信息;而在ARMv8-A架构中,引入了MSR(Move to system register)和MRS(Move from system register)两个指令,这些指令不仅能够访问GIC,还可以对其他系统级寄存器进行访问。

GIC-V3的distribbutor/redistributor使用的memory-mapped方式;
ITS、CPU interface 既可以使用memory-mapped方式,也可以使用系统寄存器方式;

4.中断的状态转换

在这里插入图片描述中断的优先级和可以被转发到的core列表都在Distributor中配置,Distributor确定可以传递到core的处于pending状态的最高优先级的中断, 然后转发到与该core相连的CPU interface。在CPU interface中,中断被依次发送给core,然后在core中会发生FIQ或者IRQ异常。

Core会执行异常处理器(exception handler),handler必须从CPU interface 寄存器中获取到该中断的ID号,然后开始处理中断源。当处理完成后,handler必须对CPU interface的寄存器(EOI)进行写入,以说明中断处理完成。

一个中断状态变化过程:

Inactive -> Pending:当中断被外设断言时
Pending -> Active:当中断处理器(handler)获知了当前中断
Active -> Inactive:handler处理完成了中断

在Distributor中有相关寄存器能显示不同中断ID的当前中断状态,GIC提供寄存器来控制SPI中断转发到哪些core。这种机制使操作系统能够在core之间进行共享和分发中断。

参考阅读:
https://blog.csdn.net/sinat_32960911/article/details/128083997
https://blog.csdn.net/weixin_42135087/article/details/107039588
https://zhuanlan.zhihu.com/p/85313527
https://zhuanlan.zhihu.com/p/90074320
https://zhuanlan.zhihu.com/p/85313527
https://blog.csdn.net/weixin_42135087/article/details/111713444
https://blog.csdn.net/yhb1047818384/article/details/86708769
https://blog.csdn.net/qijiuliushisan/article/details/112384636
https://zhuanlan.zhihu.com/p/443815543
https://blog.csdn.net/luolaihua2018/article/details/126859967
https://blog.csdn.net/weixin_42135087/article/details/107202458
https://zhuanlan.zhihu.com/p/90074320
Arm® Cortex®-R52 Processor Technical Reference Manual

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

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

相关文章

BM40-重建二叉树

题目 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和 vin 均无重复…

超算云服务深度学习环境配置及使用方法

目录 一、环境配置 1. 通过SSH连接服务器 2. 查看服务器已安装模块 3. 调用Anaconda模块 4. 创建Python3.7的虚拟环境(不是必须。不需要的话可以使用默认安装的环境) 5. 虚拟环境下安装CUDA11.6Pytorch1.12.1 二、使用方法 1、提交作业 2、其他…

CKA证书模拟考试24道题

CKA证书模拟24道题-题解 快捷别名 alias kkubectl # will already be pre-configured export do"--dry-runclient -o yaml" # k create deploy nginx --imagenginx $do export now"--force --grace-period 0" # k delete p…

FPGA学习_01_基础知识(有点劝退,心灵弱小者勿入)

有些人喜欢直接拿开发板看教程开干,我认为了解点历史发展没什么坏处,一些FPGA的基础知识也是同样重要的。 1.1. FPGA的主要厂商 XILINX 占据FPGA绝大部分的市场份额 ALTERA 被 INTEL 167亿美元收购 改名为INTEL LATTICE 被神秘的中国公…

成就客户 | 企业如何培养“数据文化”?Smartbi教你3个步骤

随着数字化浪潮的发展,越来越多企业在实际工作中通过采用BI等各种数据处理工具提升工作效率。诚然,BI 工具可以帮助员工更好地理解和分析数据,从而发现业务中的机遇和挑战,然而如果仅仅只是提供工具和技术,而不重视培养…

浅谈“孔乙己的长衫“是脱不下来还是难脱下?

名人说:往者不可谏,来者犹可追。——《论语微子篇》 创作者:Code_流苏(CSDN) ★温馨提示:以下仅代表个人观点,不代表其它任何人看法。 目录 〇、缘由一、社会对于学历和职业之间的关系认知是怎样的?二、学…

密歇根大学Python系列之二:Python 编程进阶

Python如今无疑是全球最受欢迎的编程语言。它最大的好处,就是让越来越多的人通过它加入了编程的世界。学习Python是个好主意。无论你是一个初学者还是C或Java专家,都无需担心其派不上用场。 Paul Resnick 教授是密歇根大学迈克尔科恩学院的信息学教授&a…

解决软件项目冲突的5个重点

1、针对人员冲突管理 信任和沟通是解决人员冲突的关键。常见的人员冲突多表现为不信任和沟通不畅。 企业高层需要对项目经理充分信任和授权,以充分发挥项目经理的能力。项目经理对项目至关重要,如果项目经理频繁换人,高层领导变动&#xff0c…

云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

Gitee-k8s学习 云原生实战-kubernetes核心实战 namespace Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离 Pod Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。 De…

C#开发的OpenRA的游戏用户的添加

C#开发的OpenRA的游戏用户的添加 OpenRA游戏前面在游戏开始的按钮的界面, 可以看到可以添加游戏用户,小规模战斗的界在,就是默认两个用户, 一个是玩家,一个是电脑的AI, 如果感觉少了,可以添加多几个电脑AI,这样做也是可以的。 不过在代码里是怎么样实现添加用户的呢…

word表格

新建(修改)“表格”样式 新建和修改样式的设置差不多,这里放在一起介绍 设置样式时,注意按图中的步骤设置,以免导致格式的应用出错,这里分四步: 格式应用于 “整个表格”:“字体”…

启英泰伦智能语音芯片在语音控制吸顶灯上的应用解决方案

随着智能控制技术的不断发展,人们对于家用电器的功能需求越来越多,智能吸顶灯是一种常见的照明设备,通常被安装在室内房顶上面,除了具有传统吸顶灯的照明功能外,还添加了智能控制和自动化功能,如远程控制、…

python Import Error: cannot import name SystemRandom

目录 一、前言二、解决方法三、改名之后带来的问题解决四、总结 一、前言 今天运行项目里面的文件,发现我简单的调试都不行,导入包就是不行,但是我新建一个窗口,把运行文件复制到另一个目录下就可以,就很奇怪。 报错信…

速卖通正式推出全托管,卖家竞争进入新阶段

全托管来了,卖家就能安心做甩手掌柜吗? 正式推出全托管 显而易见,越来越多的平台正在转向全托管模式。 近日,速卖通在2023年度商家峰会上,正式推出了全托管服务模式。官方表示,托管是对速卖通平台商家服…

市级大数据中心大数据资源平台概要设计方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 大数据管理中心发展背景 为建设卓越全球城市,实现政府治理能力现代化目标,由市大数据中心牵头,在政务公共数据管理和互联网政务服务方面…

一场没有英伟达/高通的上海车展

两年一度的上海国际车展,在2023年迎来「质」的变化。一方面,电动化浪潮已成定局,无论是传统自主品牌,还是合资品牌,新能源车型成为展区的主角。另一方面,零部件供应商的合纵连横,中外合作&#…

dubbogo如何实现远程配置管理 -- 阅读官方文档

dubbo-go 中如何实现远程配置管理? 之前在 Apache/dubbo-go(以下简称 dubbo-go )社区中,有同学希望配置文件不仅可以放于本地,还可以放于配置管理中心里。那么,放在本地和配置管理中心究竟有哪些不一样呢&…

Android 各大厂面试题汇总与详解(持续更新)

介绍 目前网络中出现了好多各种面试题的汇总,有真实的也有虚假的,所以今年我将会汇总各大公司面试比较常见的问题,逐一进行解答。会一直集成,也会收集大家提供的面试题,如有错误,请大家指出,经过…

原生小程序如何使用pdf.js实现查看pdf,以及关键词检索高亮

1.下载pdf.js库文件 前往 pdf.js 的 官网 下载库文件,下哪个版本都可以,后者适用于旧版浏览器,所以我下载的是后者 下载完成后,因为微信小程序打包的限制,我将库文件放到项目的后台系统了,在h5端处理会比在…

2023年淮阴工学院五年一贯制专转本数字电子技术考试大纲

2023年淮阴工学院五年一贯制专转本数字电子技术考试大纲 一、考核对象 本课程的考核对象是五年一贯制高职专转本电子科学与技术专业普通在校生考生。 二、考试目的及总体要求 通过本课程的考试,检查学生对掌握数字电路的基础理论知识的掌握程度,是否…