您可以添加到网摘 让更多人关注此文章:
摘 要: 介绍了一种低功耗总线设计方案,在设计方案中提出了一种新的编码算法,并将其与一种低功耗译码器结合来降低总线的功耗。试验中选取了一些常用的DSP算法,结果证明这种方法可以有效降低DSP处理器中数据总线和地址总线的功耗,平均可达到对数据总线降低21. 56 %和对地址总线降低40. 29%。
关键词: SoC; 总线; 低功耗
1 引言 近年来,功能强大和密集型的数字信号处理器(DSP)已广应用于当前许多小型移动产品中,并成为必不可少的部分。 这些使用广泛的小型移动产品包括蜂窝电话、手持PDA 和GPS导航器等。对于此类微型产品的设计,要求DSP芯片必须具有极低功耗从而最大程度延长电池寿命和减小产品尺寸。
现代的高性能DSP芯片中或多或少采取了一些与通用处理器相同的低功耗设计,如对于DSP芯片的片内存储器,就有通过设计低功耗的存储单元,采用Divided-Word-L ine (DWL)译码设计等方法来降低DSP芯片的存储器部分的功耗。但是对于SoC而言,由于其总线上挂有很多设备,导致总线的电容负载很大。如果总线与片外设备联系,那么,它还要驱动很长的片外连线以及片外设备,负载高达50pF,比SoC内部各个节点的电容负载0. 05pF高出三个量级。一般而言, SoC总线的功耗占SoC总功耗的10% ~80%;一个已经对内部电路优化过的SoC,总线功耗约占50%。随着宽度的增加,总线消耗的功率占SoC总功率的比重越来越大,因此,总线的低功耗设计很重要。
然而现代的许多高性能DSP芯片在设计过程中,并没有考虑到这一问题,随着集成电路工艺的不断提升,如何降低总线功耗的问题已经越来越重要。在文献[ 1 ]中由Paul P. Sotiriadis和Anantha P. Chandrakasan提出的一个DSM总线的线间电容的模型下,人们已经对于降低总线功耗提出了一些编码算法和译码器,并且通过在采用RISC体系结构处理器的芯片上试验取得了较好的效果,其中比较有代表性的有Bus2Invert Code译码器、T0 Code译码器等。
(1)Bus2Invert Code译码器
定义总线的宽度是N, b ( t)为内核MCU计算出来的t时刻总线数据(即编码前的数据) , B ( t)是t时刻已放到总线上的数据(即编码后的数据) , J ( t)是解码器解码后的数据, H ( t)是指b ( t)和b ( t-1)的Hamming Distance。总线传输数据时,相邻两次读取的数据都是确定的,因此可以确定两次数据b ( t)和b ( t-1)的Hamming Distance,如果2 ×H ( t) >N ,这说明总线上有超过一半的信号需要翻转,这时如果将第二次传输的数据逐位取反再传输,就可以减少信号翻转的次数。这种译码器适用于数据总线,可以在数据总线上传输随机数据时大幅降低的功耗,但是对于随机性不强的地址总线的优化并不明显。
(2) T0 Code译码器
T0 译码器的原理在于尽可能地减少总线的翻转次数,由于指令总线上的地址在多数情况下都是以相同的增量增加(在没有跳转等情况下PC = PC +N。这里N 是一个定值) ,因此规定当两个相邻的数据的差为N 时,总线上的数据不变化,只有当不为N 时才传输新的数据。如果在设计中采用T0编码的译码器和解码器,那么则在下面这种情况下可以达到最低的功耗:如果数据流中的数据都是以同样的间隔的无限序列,T0 编码可以使得在总线上传输这些数据时,总线上没有出现翻转。译码器则对于有规律性变化的地址总线的优化非常显著,而对随机性较大的数据总线的功耗降低没有什么帮助。
由于DSP处理器与通用处理器的体系结构的差异,决定了一些适用于通用处理器的方法并不一定适用于DSP处理器,以上的方法还未应用在DSP处理器中。
然而DSP处理器的独特构造也为DSP处理器的低功耗总线设计提供了条件:DSP处理器执行的程序中需要执行大量的乘加运算来实现DSP算法,需要独立的地址生成器生成大量有相同间隔的连续地址,从而极其利于类似T0的编码算法对其优化;而DSP处理器处理的数据大多为随机性非常强的随机数列,可以发挥Bus-Invert Code译码器的作用。
2 总线模型
在芯片的制造技术到达了深亚微米级(DSM)时,总线功耗已经成为一个重要的问题,总线功耗的降低对于芯片整体的功耗降低已经越来越重要,因此在DSM下建立一个合理的总线模型是首先要解决的问题。
图1是在文献[ 1 ] 中由Paul P. Sotiriadis和Anantha P. Chandrakasan提出的一个DSM总线的线间电容的模型。从图1可以看出,当工艺水平达到深亚微米级时,总线模型已经与以往的模型发生了较大的变化,我们必须细致的考虑线间的电感效应,因此,图1模型具有较好的说明性。实际中,用到的是如图2所示经过简化的模型。

用式(1)和式(2)表示在不同时刻第i根总线上的电压:
 其中T表示总线上的时钟周期,Vinew表示第i根总线上的电压(0或者是Vdd ) ,Vi ( x, t)表示t时刻上第i根总线上的电压值,而当一根总线的电压发生变化时,其消耗的能量可以计算出为 Ei=∫T 0VddIi( x)dx, 而全部n根总线上的消耗的功耗为E = ∑Ei ,由此可以用矩阵的写法式(3)和式(4)来表示
从式(6)可以明显地发现, 如果想降低总线上的功耗,主要的方法就是使总线上传递数据时,在两次传输的数据过程中,尽量减少总线的翻转次数。因此,在降低总线功耗的编码方法中,就是通过编码的方式进行优化,使得当传输相同的数据时,经过优化的总线上的翻转次数减少,从而降低总线上的功耗。
[1] [2] 下一页
|