Andy,希望继续向你请教一些问题,还望多多指教;
在6678的多核访问中,
- core1要对core0的L2中的内容进行更新操作时,core0的L2控制器会根据被更新数据的地址判断相应的地址 是否在core0的L1D CACHE中,如果在L1D CACHE中,硬件会自动将更新的数据拷贝一份到L1D CACHE中。当Core0重新对L2中的这部分数据进行处理的时候,如果要读取的数据已经在L1D CACHE中,Core0可以直接从L1D CACHE中得到更新过的数据。如果要读取的数据不在L1D CACHE中,L1D控制器会自动从L2加载数据,Core0也可以得到更新后的数据。
- 当core1要对core0 L2中的内容进行读操作的时候,L2控制器会判断要读取的数据地址是否在L1D CACHE中,对于在L1D CACHE中的数据,硬件会自动从L1D CACHE中读取最新的数据送给core1。对于不在L1D CACHE中的数据,说明core0 L2中的数据已经是最新的数据,可以直接从L2中读取。
- 这样的分析对吧?core1对core0的L2是直接进行内存写操作的么,不经过cache的写操作;而对L2进行读操作时,则考虑cache的存在???