|
对错误298的描述如下:"处理器操作可能不是原子性的,在二级缓存中改变页面转换表项目中从0b到1b地址的被访问过的或脏字节。在一个细小的时间间隔 内,在修改过的复制数据返回二级缓存之前,其他缓存操作可能引起失效的页面转换表项目被安装在三级缓存中。另外,如果在该时间间隔期间检测到该缓存行,处 理器不会对该被访问过的或脏字节,以及可能发生错误的数据进行无关的缓存操作。系统可能会通过一次机器检测事件,报告发生了一次三级缓存协议错误。在这种 情况下,MC4状态寄存器(MSR 0000_0410)的内容将会是B2000000_000B0C0F或BA000000_000B0C0F。MC4地址寄存器(MSR 0000_0412)的内容将会是26h。"
Wahlig对Linux补丁程序的工作过程作了描述,该补丁程序也绕过了BIOS工作区并仿真"被访问过的和脏字节",以阻止错误数据建立文件头:
内核补丁解决方案取决于二级缓存迁出问题的根本原因。只有当TLB需要在一个页表项目中设置一个A或D位时,问题才暴露。如果TLB永远不需要设置一个A 或D位,错误则不会出现。通过使用当前的可写位对A和D位进行仿真,补丁程序将确保经常对实际的A和D位进行预设。当首次访问一个未对仿真A位进行设置的 页面时,并且当首次写访问一个未对仿真D位进行设置的可写页面时,通过对一个错误页面进行强制而完成该处理。仿真A和D位存储在位寄存器中,操作系统通常 可以在页表项目中取得它。
AMD以比最初预期更为委婉的说法,停止发行该补丁程序,但公司并没有给所有Linux用户发放"通行证",用来避免BIOS修复程序带来的性能损失。
话说K10最引人注目的也就是这多层次的cache了吧,好不容易能有点技术上的突破,结果还是经验不足没打响这一炮,让一个bug给闷回去了。这即不像IMC时能恰好解决当时内存带宽不足的软肋,又不像64位时光靠市场推广就能说动消费者。恰恰犹如当年Pentium的浮点bug的情形时那样大家都知道你有问题,虽理论上不致命但就算小白也认定你的U不可靠,这下难受了吧。技术积累底蕴不足,危机公关能力不强,这一关真可谓难过了。当年只要态度好,只要回收,就当交点学费都能挺过去,但现在内忧外患,墙倒众人推,就看AMD怎么挺吧。 |
|