【博文连载】ARM GIC(十四)gicv3架构-power控制详解

在带有gicv3的soc架构中,其框图如下所示:

gicv3中的redistributor与core中的cpu interface通过AXI-Stream进行通信。

一、connection

当core上电之后,需要将core中cpu interface与gic中的redistributor进行connect,这样将来gic才可以将中断发送给core。

connection的流程如下所示:

描述如下:

  • 执行在core的程序,将GICR_WAKER.ProcessorSleep位给置低,表示要connect redistributor

  • redistributor在完成connect之后,将GICR_WAKER.ChildrenAsleep位给置低,表示connect完成

  • 执行在core的程序,查询GICR_WAKER.ChildAsleep位是否为0,如果不是,表示redistributor还没有完成connect操作,就继续查询

  • 如果查询到0,表示connect完成,接着做之后的初始化工作

其汇编代码如下:

波形如下:

首先写GICR_WAKER寄存器,将ProcessorSleep位给置低。

然后读取GICR_WAKER寄存器,判断ChildAsleep位是否为0。在波形中,有读取到0,表示connect成功。

connect成功后,gic600会给cpu interface发送downstream包,设置vINTID,pINTID,RSS,DS这几个域。

downstream包,对于identifier为0,length为1的解释如下:

二、disconnection

当core下电之后,需要将core中cpu interface与gic中的redistributor进行disconnect,这样将来gic才不会将中断发送给core。

disconnection的流程如下所示:

描述如下:

  • 执行在core的程序,先将cpu interface的中断组使能给disable

  • 执行在core的程序,将GICR_WAKER.ProcessorSleep位给置高,表示要disconnect redistributor

  • redistributor给cpu interface发送 Quiesce包

  • cpu interface清掉内部所有pending的中断

  • 清除完毕后,cpu interface回发Quiesce Acknowledge包给redistibutor

  • redistributor收到cpu interface回发的响应之后,将GICR_WAKER.ChildrenAsleep位给置高,表示disconnect完成

  • 执行在core的程序,查询GICR_WAKER.ChildAsleep位是否为1,如果不是,表示redistributor还没有完成connect操作,就继续查询

  • 如果查询到1,表示disconnect完成

    其汇编代码如下:

其波形如下:

首先写GICR_WAKER寄存器,将ProcessorSleep位给置高,表示要disconect。

然后读取GICR_WAKER寄存器,判断ChildAsleep位是否为0。在波形中,有读取到0,表示disconnect不成功,需要再次读取判断。

gic600给cpu interface发送Quiesce包。

cpu interface收到该命令包,完成内部的操作后,回发quiesce acknowledge响应包。

至此,完成了disconnect操作,此时再读取GICR_WAKER寄存器,ChildAsleep位就为1了。

三、中断唤醒core

当core下电之后,gic就不再会给core发送中断。如果此时有一个中断是唤醒core的,那么其处理流程应该如何了?

在gicv3,为每一个redistributor,提供了WakeRequest输出信号。当GICR_WAKER的ProcessorSleep为1,此时外部有唤醒该core的中断请求,那么WakeRequest信号会被置高。

WakeRequest信号,会被连接到SCP或者PMU,也就是下图中的红色连线。当SCP或者PMU接收到WakeReqeust请求,就会将对应core给上电,然后core再connect redistributor,gic在将中断发送给该core,core再响应中断。

 

(0)

相关推荐

  • Core i5-10600现身3DMark:相比i5-9600,开放了超线程,频率小幅提升

    两天前Reddit上面有人分享了一个来自于3DMark 11的测试结果,虽然软件老,但是用的CPU却是尚未正式公布的第10代酷睿桌面版处理器,硬件检测结果显示该型号为Core i5-10600的CPU ...

  • 在液氮加持下,Core i7-8700K已经能超频到7405.1MHz

    在Core i7-8700K正式开售后,各路玩家对新CPU进行超频测试也是必不可少的一个节目,包括der8auer等超频玩家都在试探Core i7-8700K的极限频率,前几天der8auer曾创造了 ...

  • 有人已经买到Core i9-9900KS:1.36V全核5.2GHz过R20

    Intel这个月内即将要正式发售Core i9-9900KS这颗官超5GHz的CPU,不过其实前几天在国外一些地方已经可以买到了,这位ID为FR33_L35T3R的用户就是其中之一. 这位来自捷克的用 ...

  • 【博文连载】ARM GIC(七)gicv3架构-power控制

    从gic3开始,cpu interface放到了PE中,因此cpu interface和PE是同一个power domain.而属于gic的其他组件,如redistributor,distributo ...

  • 高新十四区小学及初中详解

    高新十四区目前包括2所小学: 益州小学,建校于2011年8月,口碑非常不错,是高新区重点发展的新锐学校. 成都市教科院附小西区,创办于2014年9月,原名成都高新区临江小学,2017年9月加入成都教科 ...

  • 二十四座山劫煞详解

    二十四座山劫煞详解

  • 地理风水二十四山消砂纳水法详解 

    5风水轮催财.6雾化盆景催财.7金龙.8珍珠宝合.9龟.10马.11象.12五帝钱. 二十四山向 (一)论水 一白方坎卦:后天方位壬子癸 壬水没儿郎,先绝是二房.形如一箭去,小口命难长. 形如葫...

  • 风水知识:二十四山辅星水法详解

    水在风水学中有着重要的寓意,二十四山辅星水法就是讲述水在风水中的应用,那么二十四山辅星水法是什么呢?本期风水知识大全就带你一起去了解一下二十四山辅星水法详解,一起来看看吧. 水从天,其性动,为乾,为阳 ...

  • 二十四山辅星水法详解

    水在风水学中有着重要的寓意,二十四山辅星水法就是讲述水在风水中的应用,那么二十四山辅星水法是什么呢?本期风水知识大全就带你一起去了解一下二十四山辅星水法详解,一起来看看吧. 水从天,其性动,为乾,为阳 ...

  • 【博文连载】PCIe扫盲——DLLP(数据链路层包)详解

    首先说明一下,在本次连载的博文中,DLLP一般指的是由发送端的数据链路层发送,接收端的数据链路层接收的数据包,其和事务层(Transaction Layer)一般没有什么关系.本文将要介绍的DLLP指 ...

  • 【博文连载】PCIe扫盲——基地址寄存器(BAR)详解

    基地址寄存器(BAR)在配置空间(Configuration Space)中的位置如下图所示: 其中Type0 Header最多有6个BAR,而Type1 Header最多有两个BAR.这就意味着,对 ...

  • 风水篇:赖公二十四山阳宅消砂峰详解表

    二十四山阳宅消砂峰详解(赖公五行) 口诀: 子午卯酉是火乡.甲庚丙壬同一样. 乾巽坤艮木头良.辰戌丑未金生处,寅申巳亥水源长. 以24山分房法.主应子女 : 1.天元气-----子午卯酉.乾巽坤艮,主 ...