X86 僵尸负载的微体系结构根源是什么?

X86 僵尸负载的微体系结构根源是什么?,x86,intel,cpu-architecture,speculative-execution,cpu-mds,X86,Intel,Cpu Architecture,Speculative Execution,Cpu Mds,我的解释是,在TLB未命中时,PMH遍历页面表并将填充加载执行到加载缓冲区;如果它遇到需要设置的访问位或脏位,它将传递一个异常代码,该代码将标记负载为退出(假设它还将负载需要帮助的虚拟地址放置在MSROM例程可以访问的位置) 当它失效时,异常被触发,导致管道被刷新,一个特定的MSROM特殊uop在分配阶段显示出来,这将重新形成整个行走(不知道为什么PMH不能自己执行填充写入,但这是关于发生什么的一般信念)。这看起来确实很奇怪,因为这意味着必须有一个uop来指示存储到一个物理地址,如果PMH执行填

我的解释是,在TLB未命中时,PMH遍历页面表并将填充加载执行到加载缓冲区;如果它遇到需要设置的访问位或脏位,它将传递一个异常代码,该代码将标记负载为退出(假设它还将负载需要帮助的虚拟地址放置在MSROM例程可以访问的位置)

当它失效时,异常被触发,导致管道被刷新,一个特定的MSROM特殊uop在分配阶段显示出来,这将重新形成整个行走(不知道为什么PMH不能自己执行填充写入,但这是关于发生什么的一般信念)。这看起来确实很奇怪,因为这意味着必须有一个uop来指示存储到一个物理地址,如果PMH执行填充存储,则不必有这样的uop。如果遇到无效或受保护位,特殊MSROM uop问题必须跳转到页面错误异常例程。如果不需要设置脏位/访问位,则将由PMH传递页面故障异常代码

本文建议继续加载,L1d缓存控制器只返回行填充缓冲区的内容,而不是虚拟值或0(带有取消加载的异常代码),该缓冲区可能仍然包含由其他逻辑核填充的内容(然后可用于暂时修改缓存以进行缓存定时攻击)


这只是英特尔方面的一个愚蠢错误;一个前所未有的副作用吗?

似乎有两个问题:(1)为什么访问和脏位会这样工作?和(2)僵尸加载的微体系结构根本原因是什么?我建议更改帖子以保留第一个问题,删除第二个问题。关于第二个问题,请参阅僵尸加载论文的第3.2节。我可以发布您第一个问题的答案。@HadiBrais好的,我会做更多的研究,看看我是否能够清除这些问题呃,一起来,感谢更多的指导。但是的,我本质上是在暗示我不知道PMH为什么会这样,即需要辅助,同时问为什么l1d缓存会显示行填充缓冲区内容而不是零值,例如,当其TLB/PMH单元需要微辅助时。