2009-08-24 108 views
3

我正在编写一个例程,以在使用回写模式关闭PowerPC750数据缓存之前将其关闭。试图刷新PowerPC 750数据缓存

我发现IBM application note编程缓存,其中包括一个刷新例程,但我很困惑的示例代码。我认为这可能是一个错误的例子,但认为我会检查。在清单2中有两个循环,其中包括和指示“移动到下一个块”。移动到下一个块是通过将0x10添加到当前地址来实现的。 我会期望这是一个0x20(32)的加法,因为我认为缓存行是32字节宽。任何人都可以确认或否认我的想法?

+1

我预料它也会是0x20 ......你可以给IBM发邮件并询问是否有错误? – Goz 2009-08-24 15:22:38

+2

Linkrot 20120826:https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/0DD2C54EDDF7EB9287256F3F00592C64/$file/PPC750GXFX_cache.pdf – 2012-08-26 20:12:01

回答

4

经过其他SO用户的确认,我通过电子邮件发送了应用笔记的作者。他同意0x10应该是0x20,并且可以在将来更新该笔记。

4

你看起来是对的。随着他们的数学在上市前表示:

! CTR - the number of data blocks needed to fill the cache - save it in r3 
!  32K (size of cache)/32 (bytes per block) = 0x400 

他们总是设置计数寄存器0x400的,它指出,每块有32字节该文件中的几个地方。所以在数学之后,你需要增加0x20而不是0x10。和任何装配一样,如果出现一些奇怪的硅误差,你肯定应该用两种方法进行测试。