避免翻译当mmap()时忽略缓冲区(TLB)污染

时间:2016-07-31 22:59:46

标签: linux-kernel x86 intel micro-optimization tlb

当我们想要写一个数据项时,包含数据的块首先被带入缓存,数据项被写入缓存。这可能会导致缓存污染。为避免这种情况,英特尔没有引入时间指令。

如果我要使用mmap()将数据写入文件并且永远不会再次读取,是否可以避免为此创建TLB条目?有没有类似于非时间指令的指令?

1 个答案:

答案 0 :(得分:1)

CPU需要TLB条目才能从虚拟地址映射到物理地址,因此无法使用mmap()或任何类似的API来避免它们。

即使可以避免在TLB中存储映射,对映射内存的每次访问都需要从页表中重新加载相应的条目,因此性能会更差。 非临时访问仅对商店有意义,但页表条目 read