作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
英特尔文档中的 clflush 描述称“刷新包含 m8 的缓存行。”。此外,在 Intel 文档中,m8 表示“内存中的一个字节”。
我很困惑为什么它只是m8,它只有一个字节。因为对于32位或64位系统,我们应该有32位或64位地址,即4或8字节。我一定是误会了什么。谁能帮我吗?
非常感谢!
最佳答案
如果它采用更宽的操作数,那么它可以跨越两个缓存行。
如果它可以选择刷新两个缓存行,则微编码实现会更加复杂,因此他们选择仅影响给定地址,而不是地址范围。
clflush
始终只刷新一个缓存行:包含您使用的有效地址引用的字节的缓存行。 m8
只是描述这一点的最简单方法。
如果它仍然只刷新一个缓存行,那将是愚蠢的,并且将其称为 m64 操作数是没有意义的。他们本可以让它需要 8B 对齐的地址,但对于硬件来说,屏蔽掉地址的低 n 位来找出哪个缓存行是微不足道的。
关于x86 - clflush 实现 : Why's m8 in "Flushes cache line containing m8"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775889/
我是一名优秀的程序员,十分优秀!