基于C64x+ DSP高速缓存一致性分析与维护
的数据也能够被其它主机直接从L1D内存中读到。所以不会存在一致性的问题。
对于5),数据在L2存储器,按照上面的分析,会存在CACHE读和写一致性的问题。在C64x+平台上这种情况下的一致性问题会由硬件自动维护。
对于6),也会存在CACHE读和写一致性的问题,这种情况需要软件进行CACHE一致性的维护。
C64x+ 高速缓存一致性维护操作
出现CACHE一致性问题时,为了保证内核或者其它主机在进行数据操作的时候能够得到最新的数据,需要进行CACHE的一致性维护操作。下面具体分析以上几种情况在C64x+平台上如何进行CACHE一致性问题处理:
硬件维护的CACHE一致性
在C64x+平台上,硬件会对5)的情况自动进行数据一致性维护。分析需要分为读写两类操作进行,图 5和图 6分别描述了内核对L2上的数据进行读和写的情况。
图 5 内核读L2数据的情况
图 6 内核写L2数据的情况
其它主机要对L2中的内容进行更新操作时,L2控制器会根据被更新数据的地址判断相应的地址是否在L1D CACHE中,如果在L1D CACHE中,硬件会自动将更新的数据拷贝一份到L1D CACHE中。如果要读取的数据不在L1D CACHE中,L1D控制器会自动从L2加载数据,内核也可以得到更新后的数据。过程如图 5中的1和2所示,这样就可以解决一致性的问题。
其它主机要对L2中的内容进行读操作的时候,L2控制器会判断要读取的数据地址是否在L1D CACHE中,对于在L1D CACHE中的数据,硬件会自动从L1D CACHE中读取最新的数据。对于不在L1D CACHE中的数据,说明L2中的数据已经是最新的数据,可以直接从L2中读取。通过这样的处理,可以保证其它主机读到内核更新后的数据,从而可以解决一致性的问题。过程如图 6中的1和2所示。
软件维护的CACHE一致性
在C64x+平台上,2)、3) 和6)的情况需要软件进行的一致性维护操作以保证内核或者其它主机可以得到最新的数据。
C64x+ 软件一致性维护实现
C64x+平台上由软件控制的一致性维护操作包含三种:CACHE数据失效、CACHE数据回写和CACHE数据回写并失效。启动维护操作需要配置相应的基地址和计数寄存器,当计数寄存器中的值变为0时表示操作完成。TI提供的芯片支持库中也提供了相应的API来完成相应的功能。各种操作涉及的各级CACHE的一致性操作控制寄存器列在表2中。
表 2 C64x+ CACHE一致性维护寄存器
代码CACHE一致性
图 7中描述了其它主机对L2中代码进行修改的情况。这种情况下,当内核第一次执行此部分代码时,这部分代码会被加载到L1P中。之后如果被其它主机修改,内核仍会从L1P中读取原来的代码而不是更新后的代码。因此需要软件进行图中2指示的操作。软件不需要进行代码的搬移,只要在内核重新执行此部分代码之前将L1P中此部分内容失效。当内核再次执行此部分代码的时候,会按照CACHE的正常机制进行此部分代码的重新加载,从而保证内核可以读取到更新后的代码。
图 7 其它主机修改L2代码的情况
图 8描述的是其它主机对DDR2中代码进行修改的情况。这种情况下,需要在内核重新执行此部分代码前,将L1P和L2 CACHE中的相应内容进行失效以保证内核执行时可以将最新的代码加载到L2和L1P CACHE中。操作顺序如下:内核对修改代码会转换为对存储器的写操作,由于L1D只对读不命中的情况才分配CACHE,所操作的代码一定不在L1D CACHE中,更新的代码会被直接写到L2中,如果修改的是DDR2中的代码,数据可能会被更新到L2 CACHE中。之后的所有操作与上述两种情况的处理相同。
图 8 其它主机修改DDR2代码的情况
数据CACHE一致性
对于数据部分的一致性维护,需要由软件维护的情况是6),包括内核对DDR2的读取和写两种情况。图 9和图 10分别描述了这两种情况。
图 9 内核对DDR2上的数据读的情况
图 10 内核对DDR2上的数据写的情况
本文小结
高速缓存一致性问题是DSP应用中常见的问题,TI C64x+ DSP是业界高性能信号处理平台,具有优良的高速缓存性能。C64x+平台上高速缓存一致性问题维护可以归纳为以下两点:1) 代码部分的一致性问题需要由软件来维护;2) 只有当内核和其它主机共同需要访问的数据缓冲区在外部存储器中的时候,数据高速缓存一致性问题才需要由软件来进行维护。其它情况下,数据高速缓存一致性都会由硬件自动完成。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)