下冰雹 · 2021年06月08日

SoC设计之功耗 -- Q channel

简约是一切真正优雅的要义。

-- CocoChanel

Q-channel是ARM公司定义的一个低功耗接口,是从AXI的低功耗接口演变过来的,其用处是控制设备静止(quiescent)状态时的时钟和电源。

Q-channel的接口信号很简单,只有四根,如下图所示(n代表低电平有效):

WeChat Image_20210608100721.png
图1  Q-channel信号

设备端可以通过QACTIVE信号告诉控制器端自己的工作状态,QACTIVE为0时表示设备处于静止状态。但是,控制器端既可以根据QACTIVE发出请求QREQn,也可以根据其它的条件发出请求。也就是说控制器并不完全依赖于QACTIVE。所以我们可以看到Q-channel的握手协议其实不依赖QACTIVE。

对于QACTIVE信号,ARM的spec里面有下图这么一句话。解释一下就是,设备端需要有拉高QACTIVE信号的能力。再通俗一点,当设备处于时钟关断或者电源关断的状态下,需要有能力告诉控制器,自己需要启动了。如果设备没有这种能力,那就需要在系统级来做一些工作保证设备可以再运转。总之一句话,做设计的时候一定要避免设备睡下就再也起不来这种情况。

WeChat Image_20210608100733.jpg

图2  QACTIVE信号说明

接下来看看Q-channel的握手协议,其实挺简单的。先看接受请求的时序,参考下图。

WeChat Image_20210608100743.png

图 3 Q-channel接受静止请求的时序

  • 在T1时刻,QREQn和QACCEPTn为高,状态机处入Q\_RUN状态,设备处于工作(operational)状态,QDENY为低。
  • 在T2时刻,控制器拉低QREQn,请求设备进入静止状态。此时进入Q\_REQUEST状态,设备处于工作(operational)状态,QDENY为低。
  • 在T3时刻,设备响应请求,拉低QACCEPTn,表示自己进入了静止状态。此时状态机进入Q\_STOPPED状态。
  • 在T4时刻,控制器拉高QREQn,请求设备进入工作状态。此时进入Q\_EXIT状态,设备处于静止状态。
  • 在T5时刻,设备再次响应请求,拉高QACCEPTn,进入工作状态。此时状态机进入Q\_RUN状态。

根据协议,设备也可以是有脾气的,不是控制器让干啥就干啥的。正运行的热火朝天的时候,控制器发来静止请求,必须拒绝\~\~

WeChat Image_20210608100752.jpg

图4  Q-channel拒绝静止请求的时序

  • 在T1时刻,QREQn和QACCEPTn为高,进入Q\_RUN状态。
  • 在T2时刻,控制器拉低QREQn,请求设备进入静止状态。此时进入Q\_REQUEST状态,设备处于工作(operational)状态,QDENY为低。
  • 在T3时刻,设备拒绝请求,拉高QDENY,仍处于工作状态。此时状态机进入Q\_DENIED状态。
  • 在T4时刻,控制器接收到设备的拒绝响应,将QREQn拉高,请求设备进入工作状态。此时进入Q\_CONTINUE状态。
  • 在T5时刻,设备响应请求,拉低QDENY,保持工作状态。此时Q\_Channel进入Q\_RUN状态。

上面提到的Q\_RUN,Q\_REQUEST等状态间的转换可以参考下图

WeChat Image_20210608100810.png
图5  Q-channel状态

依据QREQn,QACCEPTn和QDENY这三条握手信号线,ARM列举出所有的握手状态,并定义了以下规则:

WeChat Image_20210608100822.png
图6  Q-channel握手状态

  • 只有当QACCEPTn为高且QDENY为低时,QREQn才能从高变低。
  • QREQn只能在以下任一情况下从低变高:

QACCEPTn和QDENY都为低。

QACCEPTn和QDENY都为高。

  • QACCEPTn只能在QREQn为低且QDENY为低时从高变低。
  • QACCEPTn只能在QREQn为高且QDENY为低时从低变高。
  • QDENY只能在QREQn为高且QACCEPTn为高时从高变低。
  • QDENY只能在QREQn为低且QACCEPTn为高时从低变高。

有了以上两张状态图,相信大家很快就能设计出Q-channel的状态机了。

另外,在做设计的时候要考虑QREQn和reset信号的关系。在reset信号释放的时候,QREQn可以为低,也可以为高,对应下面两张图。

WeChat Image_20210608100835.png
图7  reset撤销时QREQn为低

WeChat Image_20210608100847.jpg
图8  reset撤销时QREQn为高

考虑到控制器和设备很可能不在同一个时钟域,所以Q-channel协议建议这些信号在各自的输入端做两级同步,在输出端尽量保证寄存器直接输出。

WeChat Image_20210608100857.jpg
图9  推荐的Q-channel跨时钟域(clock domain crossing)同步方法

综上,我们可以看出,Q-channel是一个比较简单灵活的接口。控制器可以根据设备的工作状态或系统状态,发出低功耗请求;设备可以根据自己的工作状态,从而决定是否接受请求。这就好比,老板可以根据员工和公司的情况发出休假请求,打工人可以接受,也可以由于过于热爱工作而坚持加班\~\~\~

需要注意的是,Q-channel只是一个接口,用于处理控制器和设备的握手,至于怎么控制clock gating和power gating还需要其它的逻辑设计。

Q-channel有一个缺点,就是过于简单了。对于时钟控制来说,只有打开和关闭两种状态就可以了。但是对于电源控制来说,只有ON和OFF两种状态,对于某些复杂的power控制场景来说就不够用了。比如,一些带L3 cache的大规模设计,为了达到更好的功耗控制,要对L3实现全上电,半上电,1/4上电等操作。这时,Q-channel就力不从心了,所以ARM又定义了另外一个接口P-channel来解决这个问题。

相比Q-channel,P-channel把PACTIVE信号加宽了,不再是一根信号,设备可以传递更多的工作状态给控制器;控制器会额外多发出一组PSTATE信号,描述切换power状态的请求。想了解具体的细节同学,可以去ARM官网下载文档《Low Power Interface Specification》。

PS:今天图有点多,并不是为了划水,协议这东西还是多看图,毕竟一图胜千言。

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/BESFFymOugQIo-X3OgIr9g
作者微信公众号
qrcode_LaoQinTanXin_1.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
11957
内容数
701
专注于汽车电子工程领域,紧跟技术创新,助力行业发展
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息