基于C64x+ DSP高速緩存一致性分析與維護(hù)
代碼CACHE一致性
圖 7中描述了其它主機(jī)對(duì)L2中代碼進(jìn)行修改的情況。這種情況下,當(dāng)內(nèi)核第一次執(zhí)行此部分代碼時(shí),這部分代碼會(huì)被加載到L1P中。之后如果被其它主機(jī)修改,內(nèi)核仍會(huì)從L1P中讀取原來的代碼而不是更新后的代碼。因此需要軟件進(jìn)行圖中2指示的操作。軟件不需要進(jìn)行代碼的搬移,只要在內(nèi)核重新執(zhí)行此部分代碼之前將L1P中此部分內(nèi)容失效。當(dāng)內(nèi)核再次執(zhí)行此部分代碼的時(shí)候,會(huì)按照CACHE的正常機(jī)制進(jìn)行此部分代碼的重新加載,從而保證內(nèi)核可以讀取到更新后的代碼。
圖 7 其它主機(jī)修改L2代碼的情況
圖 8描述的是其它主機(jī)對(duì)DDR2中代碼進(jìn)行修改的情況。這種情況下,需要在內(nèi)核重新執(zhí)行此部分代碼前,將L1P和L2 CACHE中的相應(yīng)內(nèi)容進(jìn)行失效以保證內(nèi)核執(zhí)行時(shí)可以將最新的代碼加載到L2和L1P CACHE中。操作順序如下:內(nèi)核對(duì)修改代碼會(huì)轉(zhuǎn)換為對(duì)存儲(chǔ)器的寫操作,由于L1D只對(duì)讀不命中的情況才分配CACHE,所操作的代碼一定不在L1D CACHE中,更新的代碼會(huì)被直接寫到L2中,如果修改的是DDR2中的代碼,數(shù)據(jù)可能會(huì)被更新到L2 CACHE中。之后的所有操作與上述兩種情況的處理相同。
圖 8 其它主機(jī)修改DDR2代碼的情況
評(píng)論