AMBA低功耗接口(二)P_Channel

本文详细介绍了ARM提出的P_Channel接口,它用于设备与电源管理单元(PMU)之间的低功耗状态切换通信。文中解释了P_Channel的基本概念、接口信号、握手协议、复位与初始化过程以及多个电源状态切换的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了满足复杂的power管理的需求,arm提供了P_Channel的低功耗接口,来满足这样的应用场景。

一、P_Channel

P_Channel,提出了一个概念,叫power state transition,power状态的切换。在P_Channel的应用场景中,power的状态有很多,这个是实现自己定义的。power的各个状态之间,是可以切换的。

2个最基本的状态:

  • lower-power状态:在这个状态下,power消耗比较少,device处于低功耗状态(具有部分功能)
  • higher-power状态:在这个状态,power消耗比较大,device处于正常状态(具有完整功能)

1、接口

以下是P_Channel接口。

分为device端和power控制端(下文简称PMU)。

信号

说明

驱动端

PACTIVE [N-1:0]

提供wakeup功能

device

PSTATE [M-1:0]

需要切换的目的power状态

PMU

PREQ

为高,表示power状态切换请求

PMU

PACCEPT

为高,表示device接受power状态切换请求

device

PDENY

为高,表示device拒绝power状态切换请求

device

PACCEPT和PDENY在握手中,只能有一个为高。PACCEPT表示接受请求,PDENY表示拒绝请求。

PACCEPT,PDENY,PREQ,PSTATE,必须是从寄存器直接输出。

2、P_Channel接口握手状态    

对P_Channel的接口,arm也定义了一些握手状态。不过状态,有加入了RESETn信号的影响。

  • P_RESET: device处于reset状态
  • P_STABLE: device处于非reset状态,并且PMU没有发送power状态切换请求
  • P_REQUEST: PMU向device发送power状态切换请求
  • P_ACCEPT: device接受PMU的power状态切换请求
  • P_DENIED: device拒绝PMU的power状态切换请求
  • P_COMPLETE: device接受PMU的power状态切换请求后,PMU取消power状态切换请求
  • P_CONTINUE: device拒绝PMU的power状态切换请求后,PMU取消power状态切换请求

编码:

以下是状态转移图:

握手协议规则:

  • PREQ只有在PACCEPT和PDENY都为低情况下,才可以从低变为高
  • PREQ要满足以下的任意条件,才可以从高变为低:
    • PACCETP是高,PDENY为低
    • PACCEPT为低,PDENY为高
  • PSTATE满足以下的任意条件,才可以变化:
    • PREQ,PACCEPT,PDENY都为低
    • PREQ和PDENY为高,PACCEPT为低
  • PACCEPT只有在PREQ为高,并且PDENY为低,才可以从低变为高
  • PACCETP只有在PREQ为低,并且PDENY为低,才可以从高变为低
  • PDENY只有在PREQ为高,并且PACCEPT为低,才可以从低变为高
  • PDENY只有在PREQ为低,并且PACCEPT为低,才可以从高变为低

3、P_Channel的握手协议

握手协议,涉及到PREQ,PSTATE,PACCEPT,PENDY这4个信号。

3.1、device接受power状态切换

下图是该时序图:

在T2时刻之前,P_Channel处于P_STATBLE状态。

T2时刻,PMU拉高PREQ,将PSTATE置为STATE B。向device发送power状态切换请求,请求将device切换到STATE B的power状态。P_Channel进入P_REQUEST状态。

T3时刻,device将PACCEPT拉高,表示接受PMU的power状态切换请求。P_Channel进入P_ACCEPT状态。

T4时刻,PMU接收device的PACCEPT响应,拉低PREQ,取消请求。P_Channel进入P_COMPLETE状态。

T5时刻,device将PACCEPT拉低,表示完成power状态切换。P_Channel进入P_STABLE状态。

3.2、device拒绝power状态切换

下图是时序图:

T2时刻以前,P_Channel处于P_STABLE状态。

T2时刻,PMU将PREQ拉高,将PSTATE置为STATE B。向device发送power状态切换请求,请求将device切换到STATE B的power状态。P_Channel进入P_REQUEST状态。

T3时刻,device将PDENY拉高,表示拒绝PMU的power切换请求。P_Channel进入P_DENIED状态。

T4时刻,PMU接收到device的PDENY响应,将PREQ拉低,取消请求,并且把PSTATE置为STATE A。P_Channel进入P_CONTINUE状态。

T5时刻,device将PDENY拉低,P_Channel进入P_STABLE状态。

4、device的复位和初始化

device在复位时,必须将PACCEPT和PDENY置为低,但对PACTIVE没有要求。

P_Channel的状态为P_STABLE时,device的复位信号,才可以设置为有效。

当device的复位无效时,device要进入初始化,此时PMU要设置PSTATE信号值,device会在复位之后,采样该信号值,从而采用合适的初始化流程。PSTATE要在复位信号无效后要保持稳定。

device,要提供一个初始化周期时间,tinit。用来表示,复位之后,PSTATE需要保持多久时间,供device初始化使用。PSTATE在tinit时间之内,必须要保持稳定。

以下是时序图:

T1时刻之前,RESETn为低,复位有效,P_Channel处于P_RESET状态。

T1时刻,RESETn为高,PMU将PSTATE置为STATE A。P_Channel进入P_STABLE状态。

T2时刻,由于tinit的限制,PMU要将PSTATE一直保持在STATE A,以便device正确的初始化。device必须要在tinit时间内,采样PSTATE。此后,PMU就可以发送power切换请求了。

T3时刻,PMU将PREQ置高,并且将PSTATE置为STATE B,发送power切换请求。P_Channel进入P_REQUEST状态。

T4时刻,device将PACCEPT拉高,表示接受PMU的power状态切换请求。P_Channel进入P_ACCEPT状态。

T5时刻,PMU接收device的PACCEPT响应,拉低PREQ,取消请求。P_Channel进入P_COMPLETE状态。

T6时刻,device将PACCEPT拉低,表示完成power状态切换。P_Channel进入P_STABLE状态。

T7时刻,P_Channel在P_STATBLE状态,可以进行复位,外部拉低RESETn,P_Channel进入P_RESET状态。

下图,展示了,当复位时,PMU发送power切换情况的时序图。

T1时刻,PMU将PREQ拉高,并置PSTATE为STATE A,但是复位信号有效,device不接收PMU请求。P_Channel保持为P_RESET状态。

T2时刻,复位信号释放,因为PREQ为高,P_Channel进入P_REQUEST状态。device接收PMU的power切换请求。

之后的就和上面的分析原理是一样的了。

下图,展示了,复位后,PMU发送使device进入STATE A的power状态请求,当该转换完成后,PMU又继续发送使device进入STATE B的power状态请求。

PMU在发送下一个power切换请求前,必须保证上一个power切换请求,传输完毕。

5、多个power状态切换

利用P_Channel,PMU可以使device,来回切换不同的power状态。

在T0,device处于STATE A状态。

在T1到T4,通过P_Channel,使device进入STATE B状态。在T4,P_Channel进入P_STABLE状态。

在T5-T8,通过P_Channel,使device进入STATE C状态。在T8,P_Channel进入P_STABLE状态。

6、PACTIVE

PACTIVE,提供给device给PMU发送请求。PACTIVE的每一个bit,表示一种请求。bit为高,表示device发送请求给PMU,让PMU处理,bit为低,表示device没有发送请求给PMU处理。

PACTIVE和握手协议,是独立开的。PACTIVE是设计自定义的,请求完全自己定义。当然,也可以不使用PACTIVE,如果不是用PACTIVE,需要将PACTIVE置为0。

以下是PACTIVE的例子:

PACTIVE有3个bit,每个bit,映射到一个power状态,MSB具有高优先级。

  • PACTIVE[2]: STATE C
  • PACTIVE[1]:     STATE B
  • PACTIVE[0]: STATE A

T1时刻,device将PACTIVE设置为3'b011,表示device向PMU发送power切换请求,将自己切换为STATE B。

PMU接收到device的请求后,从T2到T5,向device发送power切换请求,并且切换到STATE B状态。最后P_Channel进入P_STABLE状态。

T6时刻,device将PACTIVE设置为3'b111,表示device向PMU发送power切换请求,将自己切换为STATE C。

PMU接收到device的请求后,从T7到T10,向device发送power切换请求,并且切换到STATE C状态。最后P_Channel进入P_STABLE状态。

7、对于device,需要提供的信息

为了PMU的设计的正确性,device需要向PMU提供以下的一些信息:

  • device支持的power状态,包括以下:
    • PSTATE定义和编码
    • PACTIVE每个bit代表的请求
    • 用于初始化power状态,推荐的PACTIVE输出
    • PACTIVE需要被忽略,或者一直置0的bit信息
  • power状态的切换,包括以下:
    • power状态切换之后的device行为
    • device拒绝power状态切换的条件
  • 复位释放后,用于初始化device的PSTATE的合理值
  • tinit

8、实现

对于device和PMU来说,有各自的时钟,因此他们的时钟,是当成异步来进行处理的,所以需要同步化的操作。

下图展示了,P_Channel的实现框图:

对于PSTATE,PREQ,PACCETP,PDENY,需要从寄存器直接输出,在接收端,需要使用同步器,对异步输入信号进行同步化输出。

对于PACTIVE,如果是多个来源的组合,ARM建议使用或门来实现。并且每个对PACTIVE贡献的来源,必须是寄存器直接输出。

 

9、P_Channel使用例子

以下是P_Channel使用的2个例子。

9.1、独立的power domain使用P_Channel

device0处于power domain0,PMU使用PD0来控制。

device1处于power domain1和power domain2,PMU使用PD1和PD2来分别控制。

9.2、父子关系的power domain使用P_Channel

device1内部有3个power domain,分别为power domain0,power domain1,power domain2,但是domain0是domain1和domain2的父domain,也就是domain0控制domain1和domain2。

PMU和device1有3个P_Channel接口,但是都是在power domain0中。

资源下载链接为: https://pan.quark.cn/s/140386800631 通用大模型文本分类实践的基本原理是,借助大模型自身较强的理解和推理能力,在使用时需在prompt中明确分类任务目标,并详细解释每个类目概念,尤其要突出类目间的差别。 结合in-context learning思想,有效的prompt应包含分类任务介绍及细节、类目概念解释、每个类目对应的例子和待分类文本。但实际应用中,类目和样本较多易导致prompt过长,影响大模型推理效果,因此可先通过向量检索缩小范围,再由大模型做最终决策。 具体方案为:离线时提前配置好每个类目的概念及对应样本;在线时先对给定query进行向量召回,再将召回结果交给大模型决策。 该方法不更新任何模型参数,直接使用开源模型参数。其架构参考GPT-RE并结合相关实践改写,加入上下文学习以提高准确度,还使用BGE作为向量模型,K-BERT提取文本关键词,拼接召回的相似例子作为上下文输入大模型。 代码实现上,大模型用Qwen2-7B-Instruct,Embedding采用bge-base-zh-v1.5,向量库选择milvus。分类主函数的作用是在向量库中召回相似案例,拼接prompt后输入大模型。 结果方面,使用ICL时accuracy达0.94,比bert文本分类的0.98低0.04,错误类别6个,处理时添加“家居”类别,影响不大;不使用ICL时accuracy为0.88,错误58项,可能与未修改prompt有关。 优点是无需训练即可有较好结果,例子优质、类目界限清晰时效果更佳,适合围绕通用大模型api打造工具;缺点是上限不高,仅针对一个分类任务部署大模型不划算,推理速度慢,icl的token使用多,用收费api会有额外开销。 后续可优化的点是利用key-bert提取的关键词,因为核心词语有时比语意更重要。 参考资料包括
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值