TLB invlpg指令具有长延迟

时间:2012-10-25 21:53:21

标签: x86 virtual-memory tlb

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

我正在运行4核2.8 Ghz Intel核心i5

1 个答案:

答案 0 :(得分:2)

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

使它们成为非序列化将意味着无序的uop调度逻辑必须跟踪页表修改作为每个内存uop的依赖性之一。这会对功耗产生负面影响,因为重新排序缓冲区已经需要跟踪大量内容,并且每个周期支持4个输入和超过该输出。

虚拟化的广泛使用已导致最近设计中这些指令的性能改进,因为在某些工作负载中,纯粹的开销是一个问题。我想这不是invlpg的情况。