分类: 嵌入式
2013-12-02 17:48:09
原文地址:基于AMBA AXI总线的低功耗扩展设计 作者:超级忍者龟
AXI(Advanced eXtensible Interface) 总线协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分。它面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传 输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。
AXI 有读地址和控制、读数据、写地址和控制、写数据、写响应5个通道。图1是读通道的结构。
图1 AXI 读通道结构
可以看到,控制和数据通道分离,可以带来很多好处。地址和控制信息相对数据的相位独立,可以先发地址,然后再是数据,这样自然而然的支持显著操作,也就 是outstanding 操作。Master访问slave的时候,可以不等需要的操作完成,就发出下一个操作。这样,可以让slave在控制流的处理上流水起来,达到提速的作 用。同时对于master,也许需要对不同的地址和slave就行访问,所以可以对不同的slave 连续操作。而这样的操作,由于slave 返回数据的先后可能不按照master 发出控制的先后进行,导致出现了乱序操作(out of order )。
同时相对AHB 接口的单向hready 信号,AXI的5个通道由双向的valid和ready信号进行握手。同时在读写操作中,有last 信号表明当前传输的是最后一个数据。
2 AXI的低功耗特性
AXI的低功耗接口本身也是数据传输协议的扩展。它针对自身具有低功耗处理的设备和自身不具有低功耗处理的设备都是通用的。
AXI低功耗控制接口包括两类信号:
设备给出表示当前时钟是否可以被gated的信号。外设使用CACTIVE信号表明它希望时钟,时钟控制模块必须马上给设置时钟。
对于系统时钟控制模块,提供可以进入或退出低功耗状态的握手信号。CSYSREQ表明了系统请求设备进入低功耗状态,而设备使用CSYSACK信号来握手低功耗状态请求和退出。
图2 AXI低功耗握手时序(1)
在CSYSREQ和CSYSACK信号为高的时候,也就是T1时刻之前,设备处于正常状态。在T1时刻,系统拉低了CSYSREQ信号,在T2时刻,外 设拉低CSYSACK信号。在T3时刻系统拉高CSYSREQ表示系统要求设备从低功耗状态退出。T4时刻设备握手拉高CSYSACK表明已经退出。在握 手中,CACTIVE可以作为拒绝或者同意的标志。下图中CATIVE一直拉高,来表示当前不接受这种低功耗的请求,而不是依靠ACK信号。可以看 出,ACK 信号只是表示状态迁移的完整性,而对于是否进入低功耗状态,需要CACTIVE信号表示。同时该信号也表示了设备在低功耗状态需要退出。
在系统层面的操作:
有两种方法进行设备的低功耗控制。第一种是系统不断的轮询设备,一旦某个设备可以进入低功耗状态,就把相应的CATIVE 拉低,然后把CSYSACK信号拉低。这样做的效率不是很高,系统并不知道哪个设备已经可以提前进入低功耗状态,而是简单的按照时间进行查询,并不能精确 的控制。这一种方案主要强调系统与设备的强耦合性。只有系统需要的时候才开始轮询,系统不需要,就不能进入低功耗模式。
图3 AXI低功耗握手时序(2)
图4 基于AXI的低功耗控制示意
第二种方法是系统被动接受设备发出来的CATIVE,然后开始低功耗处理流程。这样可以提高效率。但是可能系统由于预测到马上需要使用该device,不发起低功耗请求。值得注意的是,两种低功耗管理是可以混合使用的。
3 基于AXI总线的低功耗扩展
由于AXI总线的高带宽,高频率,同时在SOC上标准化IP越来越多,AXI本身提供的低功耗控制手段过于单一。由于AXI本身具有很好的可扩展性,可以对AXI总线进行一定的扩展,达到节省功耗的效果。
3.1 极性反转的多bit传输
对于AXI的总线,可以最高到128bytes的数据位宽。地址位宽有32bits位宽。如果地址从0xA5A5A5A5变化到0x5A5A5A5A, 所有的地址线都翻转,带来32根线的变化。AXI总线使用interconnect进行点对点的连接,可以允许附加信号在AXI通道上。我们可以使用一根 极性指示线进行冗余信号传递。例如:
Master数据从DataT1 0xA5A5A5A5变成DataT2 0xA55A5A5A,需要翻转的信号24bits,而有8bits信号不变化。Master可以同时拉高极性指示型号,同时也把数据变为`DataT2 0x5AA5A5A5,这样,只需要翻转9根数据线。由于数据线走线比较长,负载比较多,所以可以在密集传输过程中减少翻转,减低功耗。
图5 极性反转bit示例
构造如图6所示的实验,使用ESL(电子系统级别)平台搭建ARM内核和AXI总线的,跑Drystone程序,在带极性反转和不带极性反转两种情况下 的AXI总线的翻转率比较如下:带极性反转指示的数据传输比不带极性反转的数据传输在10ms内的平均翻转率下降37%(见图7) 。
图6 用于对比的ESL 环境
图7 2种环境下Drystone程序运行的总线翻转率对比
可见在相同的数据传输情况下,可以降低30%左右的总线翻转。
3.2 低功耗profile指示
对于设备,CATIVE只能标志设备是否可以进入低功耗状态,但是对于设备,不只有两种干净的状态,所以1bit是不够的。所以可以对CATIVE进行扩展。
CATIVE[3:0] | 电压 | 频率 | 带宽 |
0000 | V1 | F1 | B1 |
0001 | V2 | F2 | B2 |
...... | ...... | ...... | ...... |
1111 | V15 | F15 | B15 |
对于每个设备,我们都默认可以进行DVFS(动态电压频率调整),同时在不同频率下,可以对应不同的总线带宽需求。这样,可以在设计的时候,定义好设备所处的profile,便于低功耗设计。
这样系统可以更好地得到设备当前所处的状态,更好地进行功耗控制。构造如下实验,使用ESL(电子系统级别)平台搭建CPU内核(基于反转率的功耗建 模)和AXI总线的,使用CPU pipeline的空转周期作为系统状态指示。使用CATIVE[3:0]信号作为指示,运行Drystone程序,系统按照CATIVE[3:0]指示 握手进行profile的调节,调节包括电压频率,得到归一化的功耗,与不使用多位CATIVE的ESL 平台对比功耗数据如图8所示。
图8 2种环境下Drystone程序运行的CPU功耗对比
由于系统对CATIVE的响应对IP的功耗有很大的影响,这里并不讨论系统响应策略。仿真环境中的响应策略是以总时间为基准,每隔1/10的时间,系统对CACTIVE信号进行观察,然后与对应表做比较,如果查找表中指示的电压、频率数值与当前不一样,进行调节。
可以看出在归一化的运行时间下,建模得到的动态功耗减少了7%。
3.3 基于传输和地址的时钟gated
对于AXI的时钟,在设备处于低功耗状态的时候,才会gated相关的时钟,而总线的时钟却是常开的。而实际上,只有发生了传输,而且传输是对特定设备有效,该通路的时钟才需要打开。所以基于此,可以对AXI总线的传输进行优化。图9是一次基本的AXI操作。
对于设备来说,只需要从T1看到VALID信号,所以我们可以考虑每个通道在访问前T0才使能时钟,而对于通道来说,在地址有效的路径上的使用也是很容 易实现的,直接使用地址decoder得到的译码信号即可。在整个操作完成以后,即可重新disable时钟。需要注意的是,由于读写通道是并行的,所以 需要记录读写两种传输,只要开始一种,就有时钟,两类传输全部完成,时钟才允许关闭。对于时钟开启,是基于路由的,所以一定要与master与slave 的访问路径匹配。
图9 一次读操作的传输与时钟的时序
图10 实现基于传输的时钟管理后的时序
由于clock gated的方案比较成熟,而且效果也是很明确的,基于IP的逻辑门大小与时钟树策略,可以直接使用EDA工具计算具体IP的动态功耗降低。此方案不再进行仿真验证。
4 结束语
AXI总线是高带宽,高传输速率的总线,在嵌入式芯片中应用广泛。尤其需要考虑功耗的设计。文中列举了一些方法对AXI总线传输进行了一些扩展。这样的 扩展可以比较好的节省功耗,同时,文中所列举的方法不会带来过多逻辑的增加和其它复杂开销,也不恶化AXI的传输效率,却可以带来很好的功耗降低。文中所 说的方案可以给低功耗设计带来很好的借鉴意义。