当我们要写入一个数据项时,首先将包含数据的块带入缓存,然后将数据项写入缓存。这可能会导致缓存污染。为了避免这种情况,英特尔没有引入临时指令。
如果我要使用 mmap() 将数据写入文件并且永远不会再次读取,是否可以避免为此创建 TLB 条目?是否有任何类似于非临时指令的指令可用?
最佳答案
CPU 需要 TLB 条目来从虚拟地址映射到物理地址,因此无法通过 mmap()
避免它们。或任何类似的 API。
即使可以避免将映射存储在 TLB 中,但每次访问映射内存都需要从页表中重新加载相应的条目,因此性能会差很多。
非临时访问仅对存储有意义,但读取页表条目。
关于linux-kernel - 当 mmap() 时避免转换后备缓冲区 (TLB) 污染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689075/