作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在研究这个执行一些页表操作的内核模块,我注意到刷新 TLB 条目很慢。你问多慢?每次调用 invlpg 的时间超过 100 ns!即 280 个周期或更多。我愿意接受这一点......但是对于硬件支持的分页和地址转换来说,这似乎违反直觉。有人知道为什么这么糟糕吗?
我正在 4 核 2.8 Ghz Intel core i5 上运行
最佳答案
我的猜测是,像这样的特权指令很少占任何实际工作负载的总 CPU 时间的重要部分,因此不值得花费大量芯片来提高它们的速度。
使它们成为非序列化意味着无序微指令调度逻辑必须跟踪页表修改作为每个内存微指令的依赖项之一。这会对功耗产生负面影响,因为重排序缓冲区已经需要跟踪大量内容,并且每个周期支持 4 个输入和更多输出。
虚拟化的广泛使用导致了最近设计中这些指令的性能改进,因为 virt 开销是某些工作负载中的一个问题。我想 invlpg
的情况并非如此。
关于x86 - TLB invlpg指令延迟较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077883/
序幕 我是一个操作系统爱好者,我的内核运行在 80486+ 上,并且已经支持虚拟内存。 从 80386 开始,Intel 的 x86 处理器家族及其各种克隆支持带分页的虚拟内存。众所周知,当PG位在
我是一名优秀的程序员,十分优秀!