TMS320C6678存储器访问性能(上)

时间:2015-06-27来源:网络

  DSP核读SL2通常会通过L1D cache,所以,和访问LL2一样,DSP核访问SL2的性能高度依赖cache。

  XMC中还有一个prefetch buffer(8x128bytes),它可以被看作是一个额外的只对读操作可用的cache。DSP核之外的每16-MB存储器块都可以通过MAR(Memory Attribute Register)的PFX(PreFetchable eXternally)bit 被配置为是否通过prefetch buffer读,使能它会对多个主模块共享存储器的效率有很大帮助;它也能显著地改善对SL2连续读的性能。不过,prefetch buffer对写操作没有任何作用。

  SL2可以通过从0x0C000000开始的缺省的地址空间访问,这个空间总是cacheable,通常它也被配置为prefetchable。SL2可以通过XMC的配置被重映射到其它地址空间,通常重映射空间被用作non-cacheable, nonprefetchable 访问(当然它也可以被设置为cacheable而且prefetchable)。通过缺省地址空间访问比通过重映射空间访问稍微快一点,因为地址重映射需要一个额外的时钟周期。

  由于L1D cache不会在写操作时被分配,并且这里的测试之前cache都被清空了,所以任何对SL2的写操作都通过L1D write buffer(4x16bytes)。对多个写操作,如果地址偏移小于16bytes,这些操作可能在write buffer中被合并成一个对SL2的写操作,从而获得比较高的效率。XMC也有类似的写合并buffer,它可以合并两个在32 bytes内的写操作,所以,对偏移小于32bytes的写操作,XMC的写buffer改善了写操作的性能。

  当写偏移是N*256 bytes时,每个写操作总是访问SL2相同的bank(SL2存储器组织结构是4 bankx2sub-bankx 32 bytes),对相同bank的连续访问间隔是4个时钟周期。对其它的访问偏移量,连续的写操作会访问SL2不同的bank,这样的多个访问的在流水线上可以被重叠起来,从而使平均的访问时延比较小。

  图5 比较了DSP核访问SL2和LL2的访问时延。对地址偏移小于16bytes的连续访问,访问SL2的性能和LL2几乎相同。而对地址偏移比较大的连续访问,访问SL2的性能比LL2差。因此,SL2最适合于存放代码。

  

 

  图5 DSP核访问SL2和LL2的性能比较

  3.3 DSP核访问外部DDR存储器的时延

  DSP核访问外部DDR存储器高度依赖cache。当DSP核访问外部存储器时,一个传输请求会被发给XMC。根据cacheable和prefetchable的设置,传输请求可能是下列情况中的一种:

  一个数据单元–如果存储器空间是non-cacheable,nonprefetchable

  一个L1 cache line-如果存储器空间是cacheable而没有L2 cache,

  一个L2 cache line-如果存储器空间是cacheable并且设置了L2 cache。

  如果要访问的数据在L1/L2 cache或prefetch buffer中,则不会有传输请求发出。

  如果被访问的空间是prefetchable的,可能还会产生额外的prefetch请求。

  外部存储器的内容可以被缓存在L1 cache或/和L2 cache,或者都不用。DSP核之外的每16-MB存储器块都可以通过MAR(Memory Attribute Register)的PC(Permit Copy)bit被配置为是否通过cache访问。如果PC比特为0,这段空间就不是cacheable的。如果PC比特是1而L2 cache大小为0(所有LL2都被用作普通SRAM),那外部存储器的内容只会被L1 cache缓存。如果PC比特是1并且L2 cache大于0,则外部存储器的内容可以被L1和L2 cache同时缓存。

  像访问SL2一样,对外部存储器的读操作也可以利用XMC里的prefetch buffer。它可以通过MAR(Memory Attribute Register)的PFX(PreFetchable eXternally)bit来配置。

  多个访问之间的地址偏移(stride)显著地影响访问效率,地址连续的访问可以充分地利用cache和prefetch buffer;大于或等于64字节的地址偏移导致每次访问都miss L1 cache因为L1D cache行大小是64 bytes;大于或等于128字节的地址偏移导致每次访问都miss L2 cache因为L2 cache行大小是128 bytes。

  如果发生cache miss,DSP需要等待外部数据传输完成。等待的时间是请求发出时间,数据传输时间或数据返回时间的总和。

  图6是在1GHz C6678 EVM(64-bit 1333MTS DDR)上测得的DSP核访问DDR的时延。DSP核执行512个连续的LDDW(LoaD Double Word)或STDW(STore Double Word)指令所花的时间被测量,平均下来每个操作所花的时间被画在图中。测试中,L1D被配置成32KB cache,LL2的256KB被设置为cache。

  对LDB/STB和LDW/STW的测试表明,它们的时延与LDDW/STDW相同。

  注意,下面第二和第三个图实际上是第一个图左边的放大。

  

 

  

 

  图6 DSP核对DDR Load/Store的时延

  对地址偏移小于128 bytes的访问,性能主要受cache的影响。

  L2 cache会在写操作时被分配,对任何写操作,cache控制器总是先把被访问的数据所在的cache行(128 bytes)读进L2 cache,然后在cache中改写数据。被改写是数据会在发生cache冲突或手工cache回写操作时被最终写到外部存储里。当写操作的地址偏移是1024 bytes的整数倍时,多个访问在L2 cache中发生冲突的概率很大,所以L2 cacheable写操作的时延会显著地增加。最坏的情况下,每个写操作都会导致一个cache行的回写 (之前的数据因为冲突而被替换/回写)和一个cache行的读入(新的数据被分配到cache中)。

  当地址偏移大于512bytes时,DDR页(行)切换开销成为性能下降的主要因素。C6678 EVM上的DDR页(行)大小或bank宽度是8KB,而DDR3存储器包含8个banks。最坏的情况是,当访问地址偏移量是64KB时,每个读或写操作都会访问相同bank中一个新的行,而这种行切换会增加大约40个时钟周期的时延。请注意,不同的DDR存储器的时延可能会不一样。

1 2 3

关键词: TMS320C6678 存储器

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版