打印

C64x+ DSP 与 C64x DSP Cache 区别

[复制链接]
589|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FCCdsp|  楼主 | 2016-5-17 12:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Write Buffer(WB):

1. C64x+的 write buffe(WB)宽度为128-bit; 而C64x WB宽度为64-bit;

可cache性(Cacheability):

2. 对C64x+,外部内存地址通过MAR-bit配置其可cache性,只对L1D和L2有效,即对指令cache来说,只会cache到L1P级;但对C64x来说,外部内存地址配置其cache性后,对L1P,L1D和L2均有效;

3. 对C64x+,整个外部内存地址均可配置成可cache性;但对C64x,仅部分地址段可以;

Snooping protocol:

4. 对C64x+,其保持cache一致性机制更为有效,因为它直接将数据发送到L1D CACHE和DMA,消除了因invalidates导致的大量cache miss,而C64x通过invalid 和writeback cache line来维持一致性,效率显然低些;(C64x+在修改数据的同时就进行了一致性维护!)

5. C64x+的snoop 一致性协议不能维护L1P cache和L2 SRAM之间的一致性,这个工作需要程序员来完成,而C64x可以做到;

Cache 一致性操作:

6. 对C64x+,即使L2 cache被disable了,L2仍然总是根据L1P 和L1D的变化来对L2 进行cache一致性维护。对C64x则不是这样,它需要明确使用L1一致性操作指令来对对L2进行维护;

7. C64x+支持完全的L1D cache一致性操作,相对应,C64x仅支持L1D范围内的invalidate 和writeback-invalidate;

8. 当cache大小改变时,C64x+在初始化新尺寸cache时会自动writeback-invalidate cache,相反,C64x需要程序员发出明确的writeback-invalidate指令;

9. C64x+,L2 cache不包含(noninclusive)L1D和L1P。这意味从L2牺牲的行不会造成L1P和L1D的对应行也被牺牲。然而,对C64x却是如此。noninclusive的优势是由于取指在L2中分配的行不会牺牲L1D cache中的数据行,由于取数在L2中分配的行不会造成L1P中的指令行被牺牲掉。这有利于减少cache misses。

10. C64x+在L1和L2之间添加了一条高带宽的DMA通道(IDMA),用于有效的将数据从L1 SRAM搬进、搬出。(SPRU871 有IDMA的详细介绍)

11. 由于C64x+上miss会导致大量的延时stall,因此,消除miss和充分利用miss pipelining变得非常重要。对C64x+来说,有了L1 SRAM、比较大的L1 cache容量、low-overhead snooping和L2 cache的noninclusivity, 这点相应变得容易了。

12. 利用L1D的miss pipelining对改善性能非常的重要。对C64x,数据miss pipelining可以减少4个stall;对C64x+,数据miss pipelining可以减少7.5到9个stall circles.

13. 通过C64x+带宽管理,不同请求间的访问冲突和bank冲突得以解决。(带宽管理详见:TMS320C64x+DSPMegamodule Reference Guide)。

14. C64x+ cache控制器支持cache冻结模式,该模式可以阻止新行的分配。对防止L1P cache中经常重复使用的code被牺牲掉,这一点特别有用。

相关帖子

沙发
Sode| | 2016-5-17 13:53 | 只看该作者
C64x+ DSP 与 C64x DSP Cache 区别总结的很全面,值得学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

967

主题

1447

帖子

9

粉丝