首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种降低DSP芯片总线功耗的设计方案

一种降低DSP芯片总线功耗的设计方案

本帖最后由 yuyang911220 于 2016-12-29 15:18 编辑

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处理器的低功耗总线设计提供了条件SP处理器执行的程序中需要执行大量的乘加运算来实现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)可以明显地发现, 如果想降低总线上的功耗,主要的方法就是使总线上传递数据时,在两次传输的数据过程中,尽量减少总线的翻转次数。因此,在降低总线功耗的编码方法中,就是通过编码的方式进行优化,使得当传输相同的数据时,经过优化的总线上的翻转次数减少,从而降低总线上的功耗。
3 最小海明距离编码的设计思路
      现代的高性能DSP芯片中也或多或少采取了一些与通用处理器相同的低功耗设计,如对于DSP芯片的片内存储器就有通过设计低功耗的存储单元, 采用Divided-Word-L ine(DWL)译码设计等方法来降低DSP芯片的存储器部分的功耗,而由于DSP芯片的特殊性,我们可以采用一些特有的低功耗设计SP芯片支持的常用算法有FFT, F IR等,都需要大量乘加运算,因此DSP芯片中有一个独特的部件地址生成器来提高数据的地址生成速度,而生成的地址通常为具有固定步长的地址。
      在总线上传输的数据也经常出现具有固定步长地址序列,那么可以利用这一特点对其加以优化。而乘加运算中的数据是一个随机的序列,需要用特殊的译码器来解决。对于超哈佛总线结构的DSP芯片的低功耗总线设计,则要综合考虑这两方面的需求。
      现在已经提出的一些译码器和编码算法都只是从一方面进行优化,如Bus-Invert Code对于降低随机序列的功耗比较有效,但是对于顺序序列的效果并不明显; T0 Code由于需要增加一个信号参加译码器的译码,因此使译码器的硬件设计更为复杂,而且对于时序的控制比较困难。如果能找到一种合适的方法兼顾到各种不同的需要,就可以应用在DSP芯片的总线设计中并达到降低总线功耗的作用。
      首先,我们需要从编码的角度看,设计出一种新的编码算法,从而在不增加任何硬件开销的情况下,通过采用改进的编码器来降低总线上的功耗;然后,再选取一种低功耗译码器,使它能弥补编码算法的不足,从而进一步降低功耗。
      需要注意的是,两种译码器不能是基于同一原理,否则两者的结合无法互相弥补彼此的不足,其效果与单独使用一种方法无本质区别。我们不采用T0编码器的原因在于,它只针对间隔固定的序列有效,由于这个间隔是一个确定的值,所以不是很灵活,而最小海明距离编码算法则比它灵活一些。
继承事业,薪火相传
返回列表