2)每当写后缓冲区接受到一个新的写请求后,首先判断写后寄存器中是否存在和该写操作在SDRAM同一行的写操作,若有,将这两个写操作归并后同时向SDRAM进行写。
3)当CPU读数据时,首先检查写后缓冲区,若存在要读的数据,直接从写后缓冲区读数据;若不存在,则从写后缓冲区中挑选和当前读操作在同一行的写操作归并后,对SDRAM进行读、写操作。
设计写后缓冲区不仅可以提高程序的执行效率,还可以节省功耗。综合考虑系统的性能与功耗要求,这里DSP写后缓冲区设计为8 KB,采用和I-Cache类似的结构。
3.3 动态监测总线利用率
SDRAM在所有的行都打开,等待读写操作时的功耗是所有行都关闭时的2倍多,因此SDRAM为了低功耗的需要,设计时都加入了休眠模式。当对同一行有大量的读写时,又需要采用开放的页策略,维持这些行打开。考虑到SDRAM的这些特点,单独采用开放的页策略或封闭的页策略是不合适的,需要结合运用。动态监测EMIF总线的利用率,块读、块写和读写归并时采用开放的页策略,当总线利用率较低时,采用封闭的页策略,当总线利用率很低时,将 SDRAM进入休眠模式,需要时再澈活。
以MT48LC2M32P2为例进行功耗估算,假设前后两次访问命中同一行的概率是90%,当总线利用率(每个周期内总线被平均利用的次数)高于 25%时。采用开放的页策略比采用封闭的页策略节省功耗,当总线利用率在25%~20%之间时,采用两种策略差别不大,维持当前采用的策略,当总线利用率低于20%时,采用封闭的页策略比采用开放的页策略节省功耗,当总线利用率低于10%时,在采用封闭的页策略的同时,每次访问结束后都将SDRAM进入休眠模式,比单纯采用封闭的页策略更节约功耗。
文献统计了通用处理器中不同程序的总线的利用率,如表1所示。可见,对于不同的程序,总线利用率差别较大。根据当前总线的利用率来决定采用何种策略访问SDRAM是比较合适的。