我的解释是,在TLB遗漏的情况下,PMH遍历页表并向填充缓冲区执行填充填充;如果遇到需要设置的访问位或脏位,它会传达一个异常代码,该代码将标记要退出的负载(假定它还将需要负载帮助的虚拟地址放置在MSROM例程可以访问的位置)。
当退休时,将触发异常,这会导致管道被刷新,并且特定的MSROM特殊uop在分配阶段表现出来,这将重新执行整个遍历(不知道为什么PMH无法执行填充写操作本身,但这是对所发生情况的普遍看法)。这确实很奇怪,因为这意味着必须有一个uop来指示商店要到达一个物理地址,并且如果PMH执行填充商店,就不必有这样的uop。如果MSROM uop遇到无效或受保护的位,则该特殊MSROM uop问题将不得不跳至页面错误异常例程。如果不需要设置任何脏/访问位,则将由PMH传达页面错误异常代码。
该文件建议加载继续进行,并且L1d缓存控制器仅返回行填充缓冲区的内容,而不是伪值或0(已取消加载的异常代码),而行填充缓冲区的内容可能仍包含由另一个逻辑核心(然后可用于暂时修改缓存以进行缓存定时攻击)。
这只是英特尔的愚蠢错误吗?前所未有的副作用?