[分享] C6000系列的C64x+与C64x CACHE的区别

fish001   2020-12-3 20:22 楼主

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+ DSP Megamodule Reference Guide)。

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

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复