我继承了一些PowerPC 750FX代码。少数函数使用
刷新指令和数据缓存icbi 0,3 # instruction cache block invalidate
和
dcbf 0,3 # data cache block flush
分别。该代码确保寄存器3的内容是32字节对齐的,因此它始终指向缓存行的开始。我想知道这是否必要。 PowerPC手册仅讨论使用操作数计算有效地址(EA),但对结果EA的对齐要求没有任何说明。使用任意EA寻址高速缓存行中的任何字节来执行这些指令是否安全?
答案 0 :(得分:2)
这值得进行测试,但从我所读过的内容(各种内核参考手册和PowerISA 2.05中的相同内容)来看,无需对齐数据地址。该操作指向包含地址的块。
如果包含EA寻址的字节的块存储在Memory中 Coherence必需且包含EA寻址的字节的块在 任何处理器的指令高速缓存,该块在那些指令中无效 缓存,以便后续引用导致从main获取块 存储
我不知道你的代码,但是在开始时是否已完成对齐,然后循环将缓存块大小添加到EA?