微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 零翻转编码地址总线SoC的低功耗设计

零翻转编码地址总线SoC的低功耗设计

时间:04-13 来源:互联网 点击:
引言

面向便携式设备的SoC设计,不仅仅要求性能高、体积小,更要求功耗低。一般而言,SoC的静态功耗很小,而对负载电容充放电的动态功耗很大。

SoC内部,总线上挂着很多功能设备,导致总线的电容负载很大。如果总线与片外设备联系,那么,它还要驱动很长的片外连线以及片外设备,负载高达50pF,比SoC内部各个节点的电容负载0.05pF高出三个量级。一般而言,总线的功耗占SoC总功耗的10%~80%;一个已经对内部电路优化过的SoC,总线功耗约占50%[1]。随着宽度的增加,总线消耗的功率占 SoC总功率的比重越来越大,因此,总线的低功耗设计很重要。

很多通过减少总线动态翻转来降低总线功耗的算法已经被提出来。数据总线的数据随机性较大,地址总线的地址向量连续性较大。它们传送的数值各有特点,所以,针对不同类型总线的算法也不一样。针对数据总线有bus- invert算法,针对地址总线有PBE (Page-Based Encoding)算法、WZE(Working Zone Encoding)算法等。本文利用地址总线零翻转编码方法,通过设计编码器和解码器的结构,有效地降低SoC地址总线的功耗。

1  集成电路功耗分析

数字集成电路的静态功耗非常小,往往只有nW(纳瓦)级,因此,它的功耗近似等于动态功耗 [2],如式(1)所示:



其中,P表示数字集成电路的总功耗;Ci表示电路第i个节点的负载电容;Vdd表示电源电压;f表示工作频率;表示t时刻节点i的活动因子,正比于节点i的电平翻转频率。

设参数Cint表示内部节点的平均负载,Cbus表示总线各位的平均负载,Nint表示单位时间所有内部节点的平均翻转次数,Nbus表示单位时间总线的平均翻转次数。那么,式(1)可以简化为式(2):



因为内部节点的个数远远大于总线的位数,所以平均翻转次数Nint远远大于Nbus;而负载Cint却远远小于Cbus。前者大约只有后者的千分之一,所以,式(2)中Nbus具有很大的权重。减小Nbus,能够显著地降低P。

2  低功耗设计

2.1  地址总线零翻转编解码原理

总线宽度为N,t时刻,总线需发送的数据为Bt。如果Bt与Bt-1相等,则时刻总线状态完全不变;如果Bt与Bt-1不相等,则t时刻,总线就会发生电平翻转。Bt与 Bt-1不同的比特位数目(0≤≤N)越大,总线电平翻转的位数就越多,功耗就越大。当Bt与Bt-1互为反码,则总线每一位都要翻转,此时总线翻转的功耗最大。

零翻转编码法利用降低总线的电平翻转次数,来降低总线功耗。定义bt为内核MCU计算出来的t时刻总线数据(即编码前的数据),Bt是t时刻已放到总线上的数据(即编码后的数据),Jt是解码器解码后的数据。

总线连续取址时,相邻两次地址的差是相等的,定义为Stride。一般的ROM寻址Stride=1;对Cache寻址时,Stride根据Cache的寻址特性而定。如果Cache寻址步长是一个word,则Stride=2。
编码需要一个额外的状态信号INC。
零翻转编码的算法步骤如下:
①  计算bt-1+Stride,比较bt与bt-1+ Stride;
②  如果bt=bt-1+Stride,表明是连续寻址,那么Bt= Bt-1,置INC=1;
③  如果bt≠bt-1+Stride,表明是不连续寻址,那么Bt=bt,置INC=0;
④  接收端解码器根据INC来处理收到的总线数据。

零翻转解码的算法步骤如下:
①  计算Jt-1+Stride;
②  如果INC=1,表明是连续寻址,那么Jt=Jt-1+stride;
③  如果INC=0,表明是不连续寻址,那么Jt=Bt。

中断和跳转子程序的多少,会影响功耗的降低。中断和跳转越少,地址向量连续性越高,零翻转编码后总线电平翻转越少,节省的功耗就越大。当地址总线一直连续寻址时,零翻转法理论上可以达到地址总线的零翻转,并且,Stride变量可以根据寻址对象的不同而设置成对应的数值。

2.2  零翻转编解码器电路结构

编码器组成如图1左半部分。D1寄存bt-1,加法器将bt-1与Stride相加。比较器EQ比较 bt和bt-1+Stride,输出INC。选择器MUX的两组输入是bt和Bt-1。


图1  零翻转编码器和解码器

编码器是组合逻辑,不可避免的有毛刺。毛刺虽然时间很短,但依然会增加总线功耗,因此,利用D2、D3触发器来同步,过滤掉所有的毛刺。

解码器结构如图1右半部分,在接收设备Memory控制逻辑中实现。寄存器D存储Jt-1,MUX的两组输入是(bt-1+Stride)和Bt。它的结构比编码器简单得多。

相对整个SoC而言,编码器和解码器的电路规模很小,带来的额外硬件面积和功耗也很小[3,4]。

3  验证结果分析

将零翻转法应用于SoC中,改变SoC设计的地址总线宽度,分别是8、16、32、64位。对内部地址总线和外部地址总线分别计算出优化前后的功耗,并分析结果。使用的EDA工具是Synopsys公司的功耗分析软件Power Compiler。

3.1  零翻转编码对内部地址总线功耗的影响

本测试方案中,地址总线上悬挂了15个功能模块,完全在SoC电路内部,总线每一位的负载最大为2.1pF。以10 000个完全连续的地址向量运行SoC,计算地址总线功耗。计算结果如表1所列。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top