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被牺牲掉,这一点特别有用。 |