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

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

3天内不再提示

介绍redistributor的相关知识

安芯教育科技 来源:老秦谈芯 2023-02-08 09:25 次阅读

接下来该看redistributor了。

26a18cae-a74d-11ed-bfe3-dac502259ad0.png

图1 GIC-600 redistributor

跟distributor连接的部分就不说了。Cpu\_active是指示cluster或core的状态,可以用于idle管理。ppi\_id用于多核设计时,区分每个redistributor。PPIs就是PPI中断线,在GIC-600是这么描述PPI的:

26b70142-a74d-11ed-bfe3-dac502259ad0.png

图2 PPI描述

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

26dc3b10-a74d-11ed-bfe3-dac502259ad0.png

图3Generic timer

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

26eab53c-a74d-11ed-bfe3-dac502259ad0.png

图4 GIC stream协议接口

由于是双向,所以是两组信号

27034e3a-a74d-11ed-bfe3-dac502259ad0.png

图5redistributor到CPU的信号

27245e40-a74d-11ed-bfe3-dac502259ad0.png

图6 CPU到redistributor的信号

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

275078fe-a74d-11ed-bfe3-dac502259ad0.png

图7 CPU interface命令

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

276b357c-a74d-11ed-bfe3-dac502259ad0.png

图8 GIC-600的ITS组件

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

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

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

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

2781fce4-a74d-11ed-bfe3-dac502259ad0.png

图9 ITS表

当外设写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)。请原谅我偷点懒,直接把文档中的部分贴出来:

27920210-a74d-11ed-bfe3-dac502259ad0.png

这里要解释一下什么是亲和性,我最初接触这个概念的时候简直是一头雾水,直到有一天看操作系统相关的书才明白是咋回事(忽略我的无知吧~~)。CPU亲和性是一种调度属性(scheduler property),Linux调度器会根据affinity的设置让指定的进程运行在"绑定"的CPU上,而不会在别的CPU上运行。其中有一个好处是,可以提高cache的命中率。当一个进程在某个CPU上运行时,会在该CPU的缓存中维护许多状态。下次该进程在相同的CPU上运行时,由于缓存中的数据而执行的更快。

因此,多处理器的调度器应该考虑这种亲和性,尽可能的进程保持在同一个CPU上。同理,对于并发程序也是有好处的。感慨一下,做CPU设计,到了最后肯定要与操作系统相爱相杀,哈哈哈~~~





审核编辑:刘清

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

    关注

    134

    文章

    8963

    浏览量

    364919
  • 寄存器
    +关注

    关注

    31

    文章

    5249

    浏览量

    119155
  • 中断
    +关注

    关注

    5

    文章

    889

    浏览量

    41217
  • gic
    gic
    +关注

    关注

    0

    文章

    14

    浏览量

    6253
  • FIQ
    FIQ
    +关注

    关注

    0

    文章

    9

    浏览量

    2281

原文标题:技术分享 | ARM系列 -- 中断(三)

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电阻式传感器原理及相关知识详细介绍

    电阻式传感器原理及相关知识详细介绍 电阻式传感器种类繁多,应用广泛,其基本原理就是将被测物理量的变化转换成电阻值的变化
    发表于 12-01 13:51 2369次阅读

    STM***F3的USART部分相关知识介绍

    本文介绍STM***F3的USART(串口)部分相关知识
    发表于 01-05 06:18

    介绍UG编程的基本操作及相关加工工艺知识

    UG编程基本操作及工艺介绍分析本章主要介绍UG编程的基本操作及相关加工工艺知识,读者学习完本章后将会对UG编程知识有一个总体的认识,懂得如何
    发表于 09-01 06:36

    介绍PMIC硬件电路相关的一些知识

    PMIC 电源管理集成电路(Power Management IC)在之前项目中,驱动最小系统,对于PMIC这块儿很懵懂,故抽时间查看一些优秀博文及资料,加强对电源管理的理解。本文介绍 PMIC 硬件电路相关的一些知识,在此作一
    发表于 11-17 07:24

    介绍一下EMC相关知识

    部分更新从EMC概念、EMC标准、EMC测试的意义、EMC测试项目以及具体测试方法来介绍一下EMC相关知识(未更新完),对有源医疗器械研发、测试、注册、法规、生产、体系等相关人员应该有
    发表于 12-29 07:23

    手机电池相关知识介绍

    手机电池相关知识介绍 一、手机电池的几个重要概念 1、容量: 对一个手机电池来说最重要的参数就是它所能储存的电量大小,该词用专业术语
    发表于 10-26 16:59 1826次阅读

    导线连接器相关知识介绍

    导线连接器相关知识介绍      现代汽车由于电控器件的不断增多,其连接导线的数量也不可避免地呈增大趋势,为保证导线连接的正确性
    发表于 11-27 10:08 1195次阅读

    消毒柜相关知识

    消毒柜相关知识 为使大家进一步了解消毒柜基本知识,现简单介绍一些消毒柜相关知识。  
    发表于 01-14 16:40 1301次阅读

    现代雷达技术的相关知识

    介绍现代雷达技术的相关知识 有兴趣的朋友可以下来参考下
    发表于 12-24 10:53 0次下载

    RRC和RB等LTE接口与承载相关基础知识介绍

    本文介绍了LTE接口与承载相关基础知识介绍了E-RAB在LTE系统中的位置和组成以及RB的功能和管理等知识
    发表于 10-13 13:05 7次下载
    RRC和RB等LTE接口与承载<b class='flag-5'>相关</b>基础<b class='flag-5'>知识</b><b class='flag-5'>介绍</b>

    复合管的相关知识介绍

    本文介绍了复合管的相关知识
    发表于 11-23 14:58 12次下载
    复合管的<b class='flag-5'>相关</b><b class='flag-5'>知识</b>的<b class='flag-5'>介绍</b>

    043-ACMICPC相关知识

    043-ACMICPC相关知识(开关电源中高压电容怎么选择)-ACMICPC相关知识;ACMICPC相关
    发表于 07-26 11:56 12次下载
    043-ACMICPC<b class='flag-5'>相关</b><b class='flag-5'>知识</b>

    时钟的相关知识

    几乎稍微复杂的数字设计都离不开时钟。时钟也是所有时序逻辑建立的基础。前面介绍建立时间和保持时间时也涉及过时钟偏移的概念。下面将总结下时钟的相关知识,以便更好的进行数字设计。
    的头像 发表于 03-28 13:56 1621次阅读
    时钟的<b class='flag-5'>相关</b><b class='flag-5'>知识</b>

    GIC中断 redistributor介绍

    跟distributor连接的部分就不说了。Cpu_active是指示cluster或core的状态,可以用于idle管理。ppi_id用于多核设计时,区分每个redistributor。PPIs
    的头像 发表于 11-07 17:38 504次阅读
    GIC中断 <b class='flag-5'>redistributor</b><b class='flag-5'>介绍</b>

    Spring事务传播性的相关知识

    本文主要介绍了Spring事务传播性的相关知识
    的头像 发表于 01-10 09:29 300次阅读
    Spring事务传播性的<b class='flag-5'>相关</b><b class='flag-5'>知识</b>