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

嵌入式DSP访问片外SDRAM的低功耗设计研究

嵌入式DSP访问片外SDRAM的低功耗设计研究

关键字:DSP   SDRAM   Cache   存储器  
  DSP有限的片内存储器容量往往使得设计人员感到捉襟见肘,特别是在数字图像处理、语音处理等应用场合,需要有高速大容量存储空间的强力支持。因此,需要外接存储器来扩展DSP的存储空间。

  在基于DSP的嵌入式应用中,存储器系统逐渐成为功耗的主要来源。例如Micron公司的MT48LC2Mx32B2-5芯片,在读写时功耗最大可以到达924 mW,而大部分DSP的内核功耗远远小于这个数值。如TI的TMS320C55x系列的内核功耗仅仅为0.05 mW/MIPS。所以说,优化存储系统的功耗是嵌入式DSP极其重要的设计目标。本文主要以访问外部SDRAM为例来说明降低外部存储系统功耗的设计方法。

  1 SDRAM功耗来源

  SDRAM内部一般分为多个存储体,通过行、列地址分时复用,系统地址总线对不同存储体内不同页面的具体存储单元进行寻址。SDRAM每个存储体有2个状态,即激活状态和关闭状态。在一次读写访问完毕后,维持存储体激活状态称为开放的页策略(open-page policy),页面寄存器中保存已经打开的行地址,直到它不得不被关闭,比如要执行刷新命令等;访问完毕后关闭存储体称为封闭的页策略(close-page pol-icy)。

  为了更好地决定选择哪种策略,需要熟悉SDRAM功耗的特点。SDRAM的功耗主要有3个来源:激活关闭存储体、读写和刷新。在大部分程序中,激活关闭存储体引起的功耗占到访存操作的总功耗的一半以上。图1给出了对同一SDRAM行进行读写时,采用开放的页策略和封闭的页策略的功耗比较(假设激活关闭存储体一次消耗功耗为1),经计算可知,若连续的几个读写操作在同一行,采用开放的页策略可以节省功耗。


图1 开放的页策略和封闭的页策略的功耗比较


  根据上面对SDRAM功耗的特点的分析可知,尽量减少激活/关闭存储体引起的附加功耗开销,是优化SDRAM存储系统功耗的根本,另外不能忽视一直处于激活状态的存储体带来的功耗。

  2 访问SDRAM的低功耗优化设计方案

  为更好的管理外部SDRAM,大部分嵌入式DSP片上集成和外部存储器的接口EMIF(External Memory Interface),DSP的片内设备通过EMIF访问和管理存储器。由EMIF将对同一行的读写尽量归并到一起进行,减少激活/关闭存储体引起的附加功耗开销。图2为基于总线监测的读写归并设计方案的框图。


图2 基于总线监测的读写归并设计方案的框图


  1)采用块读的方法取指令。加入简化的指令Cache(I-Cache),将对SDRAM的读程序读操作按块进行。只有在Cache错过时,由Cache通过EMIF对SDRAM进行块读,每次读16个字节。

  2)加入写后数据缓冲区(WPB,Write PoST Buffer),将数据总线上的请求发往WPB,由WPB对SDRAM进行块写、读写归并。

  3)动态监测EMIF总线的利用率,块读和读写归并时采用开放的页策略,当总线利用率较低时,采用封闭的页策略,当总线利用率很低时,将SDRAM进入休眠模式。

  3 访问SDRAM的低功耗设计

  3.1 采用块读的I-Cache

  对于程序总线的读操作,根据程序的局部性原理,下一次要取得指令和当前要取指的指令在空间上很可能相邻,因此对于读程序采用块读的方法,每次读一个块,而不是一个字,并采用开放的页策略,因此对同一行的读写操作不需要额外的激活/关闭操作,可以较快的完成。

  当指令放在片外存储器里时,可以将CPU最近使用的指令放在I-Cache中,鉴于改善整个系统的性能和低功耗设计的需求。DSP的I-Cache大小设计为8 KB,包括2块存储器,其结构相同,每一块结构如下:

  1)数据队列,每个队列包含256行,每行16个字节。当I-Cache错过时,会采用最近最少使用算法(LRU)替换掉最长时间没有使用的行。

  2)行有效位队列,每行有一个行有效位,一旦一行装满数据。就置位该行有效位。

  3)标签队列,每一行有一个标签域,表明该行的数据的起始地址。当一行填满,相应的标签将存到该行的标签域中。

  如果要取的指令字在I-Cache中(命中),I-Cache会直接将其送给DSP。如果要取的指令字不在I-Cache中(错过),I-Cache会通过EMIF从外部存储器接口读取4个32 b的代码块。一旦这个指令字被读到I-Cache中,就送给CPU。
返回列表