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

出处:维库电子市场网 发布于:2023-07-21 14:54:03


摘要:分析系统芯片(SoC)设计中大电容负载的地址总线低功耗设计方法;利用地址总线零翻转编码和解码技术,有效地减少SoC地址总线活动,降低SoC芯片和系统的功耗;同时,应用于实际的SoC设计中,验证它的功能和适用范围。


引 言

面向便携式设备的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):

P∝Cint·Nint+Cbus·Nbus。 (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 零翻转编解码器电路结构

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

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

解码器结构,在接收设备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所列。

当总线宽度N增大时,编码器的MUX宽度随之增大,它的控制信号sel的负载增加,导致sel时延增大。当N = 32时的RTL代码,基于TSMC-0.25μm工艺库,经Design Compiler综合,得出的关键路径从D1触发器时钟端到MUX的输出,延时为4.7ns。时钟频率是50MHz,编码器的延迟只占时钟周期的23.5%。这个百分比很小。解码器的结构比编码器更简单。可见,编码器和解码器都能够满足时序要求。

优化后的总线功耗降低了。其中8位总线降低幅度,达到了88.3%;而随着N的增加,功耗降低的幅度变小。由于验证的10 000组地址向量没有变,所以优化后总线活动减少而节省的功耗几乎不随N的变化而变化;而当N增大时,编码器的规模成倍增大(见表1),编码器硬件所消耗的功率上升很快。因此,编码器的功耗不断增大,总线活动节省的功耗几乎不变,导致总功耗降低的幅度越来越小。

表1 内部总线功耗测试

总线宽度N

8163264
未优化地址总线功耗/mW1.7571.8241.8772.021
优化后地址总线功耗/mW0.2060.370.8351.296
编码器硬件规模比例1.002.344.899.99
功耗降低比例(%)88.379.755.535.9

如果地址不完全连续,那么功耗降低的幅度更小。所以,当内部地址总线宽度过大,超过32位时,不适宜应用零翻转算法。

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

本测试方案中,地址总线经过PAD连接到片外存储器,总线每一位的负载为50pF。运行一个带有循环和跳转的程序对片外存储器写值,总线功耗结果如表2所列。

表2 外部总线功耗测试

总线宽度N8163264
未优化地址总线功耗/mW15.94416.03516.50517.33
优化后地址总线功耗/mW8.3438.829.41610.21
功耗降低比例(%)47.745.043.041.1

总线负载为50pF,优化后节省的功耗远大于编码器硬件产生的功耗,后者对功耗降低比例的影响减小。所以,随着N的增大,功耗节省比例降低的幅度变小。SoC总线宽度一般在64位以内,因此,零翻转编码法几乎适用于所有的SoC外部地址总线。

由表1与表2的功耗量级的差别知道,总线负载越大,零翻转法优化的功耗就越大,编码器硬件的负面影响越小。

结 语

本文介绍了零翻转编码地址总线低功耗设计方法。当地址总线一直连续取址时,通过零翻转编码,理论上可以达到地址总线电平的零翻转,限度地降低地址总线功耗。这种设计方法,既适用于片外地址总线,也适用于宽度在32位以内的SoC内部地址总线。

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!