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

TMS320C6678 存储器访问性能 (上)

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

大块连续数据拷贝测得的吞吐量。

在这些测试中,L1 上的测试数据块的大小是8KB;IDMA LL2->LL2 拷贝的数据块的大小是32KB;其它DSP 核拷贝测试的数据块的大小是64KB,其它EDMA 拷贝测试的数据块大小是128KB。

吞吐量由拷贝的数据量除以消耗的时间得到。

表3 DSP 核,EDMA 和IDMA 数据拷贝的吞吐量比较

ti

总的来说,DSP 核可以高效地访问内部存储器,而用DSP 核访问外部存储器则不是有效利用资源的方式;IDMA 非常适用于DSP 核本地存储器 (L1D,L1P,LL2) 内连续数据块的传输,但它不能访问共享存储器 (SL2, DDR) ;而外部存储器的访问则应尽量使用EDMA。

Cache 配置显著地影响DSP 核的访问性能,Prefetch buffer 也能提高读访问的效率,但它们不影响EDMA 和IDMA。这里所有DSP 核的测试都是基于cold cache(cache 和Prefetch buffer 在测试前被清空)。

对DSP 核,SL2 可以通过从0x0C000000 开始的缺省地址空间被访问,通常这个地址空间被设置为cacheable 而且prefetchable。SL2 可以通过XMC (eXtended Memory Controller) 被重映射到其它存储器空间,通常重映射空间被用作non-cacheable, nonprefetchable 访问(当然它也可以被设置为cacheable 而且prefetchable)。通过缺省地址空间访问比通过重映射空间访问稍微快一点。

前面列出的EDMA 吞吐量数据是在EDMA CC0 (Channel Controller 0) TC0 (Transfer Controller 0)上测得的,EDMA CC1 和EDMA CC2 的吞吐量比EDMA CC0 低一些,后面有专门的章节来比较10 个EDMA 传输控制器的差别。

3. DSP 核访问存储器的时延

L1 和 DSP 核的速度相同,所以DSP 核每个时钟周期可以访问L1 存储器一次。对一些特殊应用,需要非常快的访问小块数据,可以把L1 的一部分配置成普通RAM(而不是cache)来存放数据。

通常,L1 被全部配置成cache,如果cache 访问命中(hit),DSP 核可在一个周期完成访问;如果cache 访问没有命中(miss),DSP 核需要等待数据从下一级存储器中被读到cache 中。

本节讨论DSP 核访问内部存储器和外部DDR 存储器的时延。下面是时延测试的伪代码:

3.1 DSP 核访问LL2 的时延

图2 是在1GHz C6678 EVM 上测得的DSP 核访问LL2 的时延。DSP 核执行512 个连续的LDDW (LoaD Double Word) 或STDW (STore Double Word) 指令所花的时间被测量,平均下来每个操作所花的时间被画在图中。这个测试使用了32KB L1D cache。

图2 DSP 核访问LL2

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

由于L1D cache 只有在读操作时才会被分配,DSP 核读LL2 总是通过L1D cache。所以,DSP核访问LL2 的性能高度依赖cache。多个访问之间的地址偏移(stride)显著地影响访问效率,地址连续的访问可以充分地利用cache;大于或等于64 字节的地址偏移导致每次访问都miss L1 cache 因为L1D cache 行大小是64 bytes。

由于L1D cache 不会在写操作时被分配,并且这里的测试之前cache 都被清空了,所以任何对LL2 的写操作都通过L1D write buffer (4x16bytes)。对多个写操作,如果地址偏移小于16 bytes,这些操作可能在write buffer 中被合并成一个对LL2 的写操作,从而获得接近平均每个写操作用1 个时钟周期的效率。

当多个写操作之间的偏移是128 bytes 整数倍时,每个写操作都访问LL2 的相同sub-bank (LL2包含两个banks,每个bank 包含4 个总线宽度为16-byte 的sub-bank),对相同sub-bank 的连续访问的时延是4 个时钟周期。对其它的访问偏移量,连续的写操作会访问LL2 不同的bank,这样的多个访问的在流水线上可以被重叠起来,从而使平均的访问时延比较小。

C66x 核在C64x+核的基础上有很多改进,C66x 核的L2 存储器控制器和DSP 核速度相同,而 C64x+的L2 存储器控制器的运行速度是DSP 核速度的1/2。图3 比较了C66x 和C64x+ Load/Store LL2 存储器的性能。

图3 C66x 和C64x+核在LL2 上Load/Store 的时延比较

3.2 DSP 核访问SL2 的时延

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

图4 DSP 核访问SL2

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

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

XMC 中还有一个prefetch buffer (8x128bytes) ,它可以被看作是一个额外的只对读操作可用的cache。DSP

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

网站地图

Top