3

所以我正在研究这个内核模块,它进行一些页表操作,我注意到刷新 TLB 条目很慢。你问有多慢?每次调用 invlpg 超过 100 ns!那是280个周期或更多。我愿意接受这一点……但对于硬件支持的分页和地址转换,这似乎违反直觉。有谁知道为什么这么糟糕?

我在 4 核 2.8 Ghz Intel core i5 上运行

4

1 回答 1

2

我的猜测是,像这样的特权指令很少占任何实际工作负载的总 CPU 时间的重要部分,因此不值得花费大量的硅来使它们更快。

使它们非序列化意味着无序的微指令调度逻辑将必须跟踪页表修改作为每个内存微指令的依赖项之一。这将对功耗产生负面影响,因为重新排序缓冲区已经需要跟踪很多东西,并且每个周期支持 4 个输入和更多的输出。

由于 virt 开销在某些工作负载中是一个问题,因此虚拟化的广泛使用在最近的设计中导致了这些指令的性能改进。我想情况并非如此invlpg

于 2015-06-26T03:39:14.607 回答