0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GIC中斷 redistributor介紹

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:TrustZone ? 2023-11-07 17:38 ? 次閱讀

跟distributor連接的部分就不說(shuō)了。Cpu_active是指示cluster或core的狀態(tài),可以用于idle管理。ppi_id用于多核設(shè)計(jì)時(shí),區(qū)分每個(gè)redistributor。PPIs就是PPI中斷線

從上面可以看出來(lái),所謂的“私有”是說(shuō)這些中斷信號(hào)是core專有的。對(duì)于PPI,ARMv8定義了三種規(guī)格,8,12和16。所以對(duì)于不同的core來(lái)說(shuō),可能PPI數(shù)量不一樣。

圖片

上面是ARMv8-A的架構(gòu)spec里,關(guān)于timer的圖。我們可以看到,core的timer會(huì)發(fā)PPI,而中斷控制器返回FIQ或者IRQ給core。細(xì)心的同學(xué)可能會(huì)問(wèn)了,在redistributor上面沒(méi)有FIQ和IRQ的信號(hào)???其實(shí)在第一篇文章里就說(shuō)了,在現(xiàn)有的GICv3架構(gòu)下,關(guān)于中斷FIQ和IRQ,以及系統(tǒng)寄存器等放在cluster/core端,對(duì)外留出了一組接口,叫cpu interface(在GICv2中實(shí)現(xiàn)在中斷控制器這一側(cè)),也就是圖1中最下面的接口。其實(shí)這是一組簡(jiǎn)化的AXI4-Stream。

圖片

stream協(xié)議接口由于是雙向,所以是兩組信號(hào)

圖片

redistributor到CPU的信號(hào)

圖片

CPU到redistributor的信號(hào)

既然是簡(jiǎn)化的總線協(xié)議,為了更便于CPU和redistributor通信,ARM又規(guī)定了具體的數(shù)據(jù)包格式。下圖是CPU端發(fā)出的命令格式,具體的解釋請(qǐng)查閱GICv3的文檔,此處就不過(guò)多的貼圖了。

圖片

interface命令至此,就剩下最復(fù)雜的ITS了,這一部分是為了實(shí)現(xiàn)基于消息的中斷。前面介紹過(guò),LPI是一種基于消息的中斷。也就是中斷信息不在通過(guò)中斷線進(jìn)行傳遞。ITS就是要將接收到的LPI中斷進(jìn)行解析。

圖片

GIC-600的ITS組件

既然是信息中斷,就一定要有區(qū)分這些中斷的方法,這樣才能找到合適的中斷處理對(duì)策。所以這里有兩個(gè)概念。

? EventID,用來(lái)表示外設(shè)發(fā)送中斷的事件類型

? DeviceID,用來(lái)表示哪一個(gè)外設(shè)發(fā)起LPI

而ITS需要將外設(shè)發(fā)送的DeviceID,eventID,通過(guò)一系列查表,得到LPI的中斷號(hào),再使用LPI中斷號(hào)查表得到該中斷的目標(biāo)CPU。為此,ITS需要維護(hù)幾張表,分別是device table,interrupt translation tableh和collection。

當(dāng)外設(shè)寫(xiě)GITS_TRANSLATER寄存器,產(chǎn)生了LPI。這時(shí)ITS首先要拿著DeviceID,從device
table中選擇索引為DeviceID的表項(xiàng)。從該表項(xiàng)中,得到interrupt translation table的位置;

然后再根據(jù)EventID,從interrupt translation table中選擇索引為EventID的表項(xiàng)。

得到中斷號(hào),以及中斷所屬的collection號(hào);

最后,使用collection號(hào),從collection table中,選擇索引為collection號(hào)的表項(xiàng)。得到redistributor的映射信息,最后根據(jù)collection表項(xiàng)的映射信息,將中斷信息路由發(fā)送給對(duì)應(yīng)的redistributor。

最后,提一句,GICv3中開(kāi)始支持親和性路由(affinity routing)。

CPU親和性是一種調(diào)度屬性(scheduler property),Linux調(diào)度器會(huì)根據(jù)affinity的設(shè)置讓指定的進(jìn)程運(yùn)行在“綁定”的CPU上,而不會(huì)在別的CPU上運(yùn)行。其中有一個(gè)好處是,可以提高cache的命中率。當(dāng)一個(gè)進(jìn)程在某個(gè)CPU上運(yùn)行時(shí),會(huì)在該CPU的緩存中維護(hù)許多狀態(tài)。

下次該進(jìn)程在相同的CPU上運(yùn)行時(shí),由于緩存中的數(shù)據(jù)而執(zhí)行的更快。因此,多處理器的調(diào)度器應(yīng)該考慮這種親和性,盡可能的進(jìn)程保持在同一個(gè)CPU上。同理,對(duì)于并發(fā)程序也是有好處的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10775

    瀏覽量

    210456
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    894

    瀏覽量

    41322
  • gic
    gic
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    6260
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM之中斷GIC分析

      1.“站的高尿的遠(yuǎn)”  GIC中斷控制器,不要和ARM core的中斷搞混了,這些中斷都是連接到ARM core的IRQ或者FIQ上的?! ∫私鈇rm
    發(fā)表于 11-26 13:50

    ARM GIC(一)之ARM soc中斷的處理介紹

    ,該中斷處理完畢。gic接受到該信息后,就將該中斷源取消,避免又重新發(fā)送該中斷給cpu以及允許中斷搶占。之后,會(huì)先
    發(fā)表于 04-06 10:12

    ARM GIC(二)之中斷術(shù)語(yǔ)的定義

    ?active:cpu在響應(yīng)該中斷?active and pending:cpu在響應(yīng)該中斷,但是該中斷源又發(fā)送中斷過(guò)來(lái)以下是中斷狀態(tài)的轉(zhuǎn)移
    發(fā)表于 04-06 10:15

    ARM GIC(四) 之GICv3架構(gòu)基礎(chǔ)知識(shí)介紹

    interface的寄存器,增加系統(tǒng)寄存器訪問(wèn)方式一、gicv3結(jié)構(gòu)下圖是gicv3的架構(gòu)。包含了以下的組件:?distributor:SPI中斷的管理,將中斷發(fā)送給redistributor
    發(fā)表于 04-06 10:33

    ARM GIC(五)關(guān)于gicv3架構(gòu)的gic stream協(xié)議解析

    redistributor回activate y響應(yīng)。5、電源斷電gic給CPU發(fā)送中斷,使CPU斷電。這個(gè),就比較復(fù)雜了。就不解析了。6、電源上電redistributor,請(qǐng)求將C
    發(fā)表于 04-07 10:42

    ARM GIC(六)gicv3架構(gòu)中的消息中斷

    緩存中,所有LPI的緩存給無(wú)效掉,使GIC重新從memory中,載入LPI中斷的配置。GICR_SYNCR,對(duì)redistributor的操作是否完成。寄存器,只有第0bit是有效的。如果為0,表示當(dāng)前
    發(fā)表于 04-07 10:50

    ARM GIC(七)gicv3架構(gòu)提供的power管理功能

    gic3開(kāi)始,cpu interface放到了PE中,因此cpu interface和PE是同一個(gè)power domain。而屬于gic的其他組件,如redistributor
    發(fā)表于 04-07 10:53

    ARM體系中對(duì)中斷的處理資料分享

    1、通用中斷處理器的介紹今天來(lái)看一下中斷及ARM體系中對(duì)中斷的處理,直接進(jìn)入正題。中斷是指計(jì)算機(jī)運(yùn)行過(guò)程中,出現(xiàn)某些意外情況需主機(jī)干預(yù)時(shí),機(jī)
    發(fā)表于 04-13 18:09

    ARM GIC電源管理使用手冊(cè)指南

    背景介紹GIC電源管理,ARM官方手冊(cè),只有一頁(yè)描述:1、在符合GICv3體系結(jié)構(gòu)的實(shí)現(xiàn)中,CPU接口和PE必須位于同一個(gè)位置power domain,但它不必與關(guān)聯(lián)的Redistributor所在
    發(fā)表于 05-27 16:41

    ARM GIC對(duì)soc中外設(shè)中斷源的管理介紹

    1、ARM GIC簡(jiǎn)介與Linux中斷處理分析先簡(jiǎn)單說(shuō)明一下GICGIC即general interrupt controller。它是一個(gè)架構(gòu),版本歷經(jīng)了GICv1(已棄用),GICv2
    發(fā)表于 05-27 16:53

    關(guān)于MPSoC的中斷處理介紹

    目錄1. MPSoC的中斷處理介紹 2. 擴(kuò)展PL中斷 3. 擴(kuò)展AXI Intc中斷 3.1. AXI Intc PL連接 3.2. AXI Intc Device Tree 3.3
    的頭像 發(fā)表于 05-07 15:34 ?3945次閱讀

    GIC是什么意思 GIC硬件原理

    控制器是 V2 版本,本文將圍繞 GIC-V2 來(lái)展開(kāi)介紹; 來(lái)一張功能版的框圖: GIC-V2 從功能上說(shuō),除了常用的中斷使能、中斷屏蔽、
    的頭像 發(fā)表于 09-28 14:58 ?1748次閱讀
    <b class='flag-5'>GIC</b>是什么意思 <b class='flag-5'>GIC</b>硬件原理

    GIC-600的組件是如何連接的

    為了適應(yīng)大規(guī)模的SoC設(shè)計(jì),GIC-600被設(shè)計(jì)成分布式IP。 所謂分布式,GIC-600由幾種組件構(gòu)成,每個(gè)組件可以跟其它相關(guān)模塊在物理設(shè)計(jì)上擺放在一起,并與其擁有共同的電源域;組件之間通過(guò)片上網(wǎng)
    的頭像 發(fā)表于 11-07 17:19 ?629次閱讀
    <b class='flag-5'>GIC</b>-600的組件是如何連接的

    gic和ARM Core的連接

    ? ?nVIRQ: 虛擬普通中斷 ? ?nVFIQ: 虛擬快速中斷 (2)gicv3和ARM Core的連接 gicv3 AXI-stream協(xié)議 ? ?gic stream協(xié)議,是基于AXI-stream協(xié)議
    的頭像 發(fā)表于 11-07 18:07 ?538次閱讀
    <b class='flag-5'>gic</b>和ARM Core的連接

    gic的組件介紹

    的,根據(jù)配置決定中斷發(fā)往的core。最后選擇最高優(yōu)先級(jí)中斷發(fā)送給cpu interface。寄存器使用 GICD_ 作為前綴。一個(gè)gic中,只有一個(gè)GICD。 ? cpu interface:將
    的頭像 發(fā)表于 11-08 15:57 ?404次閱讀
    <b class='flag-5'>gic</b>的組件<b class='flag-5'>介紹</b>