powerpc icbi和dcbf缓存指令的对齐要求

时间:2013-11-19 13:38:25

标签: caching memory-alignment powerpc instructions

我继承了一些PowerPC 750FX代码。少数函数使用

刷新指令和数据缓存
icbi  0,3   # instruction cache block invalidate

dcbf  0,3   # data cache block flush

分别。该代码确保寄存器3的内容是32字节对齐的,因此它始终指向缓存行的开始。我想知道这是否必要。 PowerPC手册仅讨论使用操作数计算有效地址(EA),但对结果EA的对齐要求没有任何说明。使用任意EA寻址高速缓存行中的任何字节来执行这些指令是否安全?

1 个答案:

答案 0 :(得分:2)

这值得进行测试,但从我所读过的内容(各种内核参考手册和PowerISA 2.05中的相同内容)来看,无需对齐数据地址。该操作指向包含地址的块。

  

如果包含EA寻址的字节的块存储在Memory中   Coherence必需且包含EA寻址的字节的块在   任何处理器的指令高速缓存,该块在那些指令中无效   缓存,以便后续引用导致从main获取块   存储

我不知道你的代码,但是在开始时是否已完成对齐,然后循环将缓存块大小添加到EA?