0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GIC中断 redistributor介绍

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-11-07 17:38 次阅读

跟distributor连接的部分就不说了。Cpu_active是指示cluster或core的状态,可以用于idle管理。ppi_id用于多核设计时,区分每个redistributor。PPIs就是PPI中断线

从上面可以看出来,所谓的“私有”是说这些中断信号是core专有的。对于PPI,ARMv8定义了三种规格,8,12和16。所以对于不同的core来说,可能PPI数量不一样。

图片

上面是ARMv8-A的架构spec里,关于timer的图。我们可以看到,core的timer会发PPI,而中断控制器返回FIQ或者IRQ给core。细心的同学可能会问了,在redistributor上面没有FIQ和IRQ的信号啊?其实在第一篇文章里就说了,在现有的GICv3架构下,关于中断FIQ和IRQ,以及系统寄存器等放在cluster/core端,对外留出了一组接口,叫cpu interface(在GICv2中实现在中断控制器这一侧),也就是图1中最下面的接口。其实这是一组简化的AXI4-Stream。

图片

stream协议接口由于是双向,所以是两组信号

图片

redistributor到CPU的信号

图片

CPU到redistributor的信号

既然是简化的总线协议,为了更便于CPU和redistributor通信,ARM又规定了具体的数据包格式。下图是CPU端发出的命令格式,具体的解释请查阅GICv3的文档,此处就不过多的贴图了。

图片

interface命令至此,就剩下最复杂的ITS了,这一部分是为了实现基于消息的中断。前面介绍过,LPI是一种基于消息的中断。也就是中断信息不在通过中断线进行传递。ITS就是要将接收到的LPI中断进行解析。

图片

GIC-600的ITS组件

既然是信息中断,就一定要有区分这些中断的方法,这样才能找到合适的中断处理对策。所以这里有两个概念。

• EventID,用来表示外设发送中断的事件类型

• DeviceID,用来表示哪一个外设发起LPI

而ITS需要将外设发送的DeviceID,eventID,通过一系列查表,得到LPI的中断号,再使用LPI中断号查表得到该中断的目标CPU。为此,ITS需要维护几张表,分别是device table,interrupt translation tableh和collection。

当外设写GITS_TRANSLATER寄存器,产生了LPI。这时ITS首先要拿着DeviceID,从device
table中选择索引为DeviceID的表项。从该表项中,得到interrupt translation table的位置;

然后再根据EventID,从interrupt translation table中选择索引为EventID的表项。

得到中断号,以及中断所属的collection号;

最后,使用collection号,从collection table中,选择索引为collection号的表项。得到redistributor的映射信息,最后根据collection表项的映射信息,将中断信息路由发送给对应的redistributor。

最后,提一句,GICv3中开始支持亲和性路由(affinity routing)。

CPU亲和性是一种调度属性(scheduler property),Linux调度器会根据affinity的设置让指定的进程运行在“绑定”的CPU上,而不会在别的CPU上运行。其中有一个好处是,可以提高cache的命中率。当一个进程在某个CPU上运行时,会在该CPU的缓存中维护许多状态。

下次该进程在相同的CPU上运行时,由于缓存中的数据而执行的更快。因此,多处理器的调度器应该考虑这种亲和性,尽可能的进程保持在同一个CPU上。同理,对于并发程序也是有好处的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211089
  • 中断
    +关注

    关注

    5

    文章

    895

    浏览量

    41384
  • gic
    gic
    +关注

    关注

    0

    文章

    14

    浏览量

    6265
收藏 人收藏

    评论

    相关推荐

    ARM之中断GIC分析

      1.“站的高尿的远”  GIC中断控制器,不要和ARM core的中断搞混了,这些中断都是连接到ARM core的IRQ或者FIQ上的。  要了解arm
    发表于 11-26 13:50

    ARM GIC(一)之ARM soc中断的处理介绍

    ,该中断处理完毕。gic接受到该信息后,就将该中断源取消,避免又重新发送该中断给cpu以及允许中断抢占。之后,会先
    发表于 04-06 10:12

    ARM GIC(二)之中断术语的定义

    ◾active:cpu在响应该中断◾active and pending:cpu在响应该中断,但是该中断源又发送中断过来以下是中断状态的转移
    发表于 04-06 10:15

    ARM GIC(四) 之GICv3架构基础知识介绍

    interface的寄存器,增加系统寄存器访问方式一、gicv3结构下图是gicv3的架构。包含了以下的组件:◾distributor:SPI中断的管理,将中断发送给redistributor
    发表于 04-06 10:33

    ARM GIC(五)关于gicv3架构的gic stream协议解析

    redistributor回activate y响应。5、电源断电gic给CPU发送中断,使CPU断电。这个,就比较复杂了。就不解析了。6、电源上电redistributor,请求将C
    发表于 04-07 10:42

    ARM GIC(六)gicv3架构中的消息中断

    缓存中,所有LPI的缓存给无效掉,使GIC重新从memory中,载入LPI中断的配置。GICR_SYNCR,对redistributor的操作是否完成。寄存器,只有第0bit是有效的。如果为0,表示当前
    发表于 04-07 10:50

    ARM GIC(七)gicv3架构提供的power管理功能

    gic3开始,cpu interface放到了PE中,因此cpu interface和PE是同一个power domain。而属于gic的其他组件,如redistributor
    发表于 04-07 10:53

    ARM体系中对中断的处理资料分享

    1、通用中断处理器的介绍今天来看一下中断及ARM体系中对中断的处理,直接进入正题。中断是指计算机运行过程中,出现某些意外情况需主机干预时,机
    发表于 04-13 18:09

    ARM GIC电源管理使用手册指南

    背景介绍GIC电源管理,ARM官方手册,只有一页描述:1、在符合GICv3体系结构的实现中,CPU接口和PE必须位于同一个位置power domain,但它不必与关联的Redistributor所在
    发表于 05-27 16:41

    ARM GIC对soc中外设中断源的管理介绍

    1、ARM GIC简介与Linux中断处理分析先简单说明一下GICGIC即general interrupt controller。它是一个架构,版本历经了GICv1(已弃用),GICv2
    发表于 05-27 16:53

    关于MPSoC的中断处理介绍

    目录1. MPSoC的中断处理介绍 2. 扩展PL中断 3. 扩展AXI Intc中断 3.1. AXI Intc PL连接 3.2. AXI Intc Device Tree 3.3
    的头像 发表于 05-07 15:34 3979次阅读

    GIC是什么意思 GIC硬件原理

    控制器是 V2 版本,本文将围绕 GIC-V2 来展开介绍; 来一张功能版的框图: GIC-V2 从功能上说,除了常用的中断使能、中断屏蔽、
    的头像 发表于 09-28 14:58 1846次阅读
    <b class='flag-5'>GIC</b>是什么意思 <b class='flag-5'>GIC</b>硬件原理

    GIC-600的组件是如何连接的

    为了适应大规模的SoC设计,GIC-600被设计成分布式IP。 所谓分布式,GIC-600由几种组件构成,每个组件可以跟其它相关模块在物理设计上摆放在一起,并与其拥有共同的电源域;组件之间通过片上网
    的头像 发表于 11-07 17:19 664次阅读
    <b class='flag-5'>GIC</b>-600的组件是如何连接的

    gic和ARM Core的连接

    • ◾nVIRQ: 虚拟普通中断 • ◾nVFIQ: 虚拟快速中断 (2)gicv3和ARM Core的连接 gicv3 AXI-stream协议 • ◾gic stream协议,是基于AXI-stream协议
    的头像 发表于 11-07 18:07 589次阅读
    <b class='flag-5'>gic</b>和ARM Core的连接

    gic的组件介绍

    的,根据配置决定中断发往的core。最后选择最高优先级中断发送给cpu interface。寄存器使用 GICD_ 作为前缀。一个gic中,只有一个GICD。 • cpu interface:将
    的头像 发表于 11-08 15:57 430次阅读
    <b class='flag-5'>gic</b>的组件<b class='flag-5'>介绍</b>