微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > TMS320C6678 存储器访问性能 (上)

TMS320C6678 存储器访问性能 (上)

时间:10-15 来源:互联网 点击:

核之外的每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)。对多个写操作,如果地址偏移小于16 bytes,这些操作可能在write buffer 中被合并成一个对SL2 的写操作,从而获得比较高的效率。XMC也有类似的写合并buffer,它可以合并两个在32 bytes 内的写操作,所以,对偏移小于32 bytes 的写操作,XMC 的写buffer 改善了写操作的性能。

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

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

360截图20150618183244515.jpg

图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 相同。

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

360截图20150618183258015.jpg

360截图20150618183310625.jpg

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

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

L2 cache 会在写操作时被分配,对任何写操作,cache 控制器总是先把被访问的数据所在的cache 行(128 bytes)读进L2

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top