Memory management 交换空间和cpu缓存之间有什么区别?

Memory management 交换空间和cpu缓存之间有什么区别?,memory-management,cpu,cpu-architecture,Memory Management,Cpu,Cpu Architecture,当我在谷歌上搜索TLB和CPU缓存时,我发现了这个图。 根据虚拟内存机制,如果我们在物理内存或磁盘缓存中找不到东西,CPU将在磁盘(交换位置)中查找东西。也就是说,如果我们扩展这幅图,应该在主内存中绘制一个磁盘缓存,在主内存之后绘制一个磁盘。我理解正确吗 参考资料:有关CPU缓存的所有内容都与交换空间不同/相反。硬件管理vs.软件管理,芯片上vs.甚至比DRAM“更远” 如果您考虑了一种旧的虚拟内存方式(在推荐的时候有交换空间= 2xDRAM),并且您有一个OS,它将交换空间真正分配为所有虚拟

当我在谷歌上搜索TLB和CPU缓存时,我发现了这个图。

根据虚拟内存机制,如果我们在物理内存或磁盘缓存中找不到东西,CPU将在磁盘(交换位置)中查找东西。也就是说,如果我们扩展这幅图,应该在主内存中绘制一个磁盘缓存,在主内存之后绘制一个磁盘。我理解正确吗

参考资料:

有关CPU缓存的所有内容都与交换空间不同/相反。硬件管理vs.软件管理,芯片上vs.甚至比DRAM“更远”

如果您考虑了一种旧的虚拟内存方式(在推荐的时候有交换空间= 2xDRAM),并且您有一个OS,它将交换空间真正分配为所有虚拟内存分配的支持:

我想你可以把主存看作CPU缓存的后备存储,就像交换空间是匿名内存页的后备存储一样。(即,它不是映射到磁盘上文件的内存。)

不过,页面错误的手动软件管理和软件可见性质确实意味着存在重大差异

最重要的一点是,CPU缓存(通常)基于物理地址进行缓存,而交换空间纯粹是虚拟地址空间。物理地址空间中永远不能有交换空间(除了内存映射的非易失性存储,如NV-DIMM…)

CPU缓存的所有内容都与交换空间不同/相反。硬件管理vs.软件管理,芯片上vs.甚至比DRAM“更远”

如果您考虑了一种旧的虚拟内存方式(在推荐的时候有交换空间= 2xDRAM),并且您有一个OS,它将交换空间真正分配为所有虚拟内存分配的支持:

我想你可以把主存看作CPU缓存的后备存储,就像交换空间是匿名内存页的后备存储一样。(即,它不是映射到磁盘上文件的内存。)

不过,页面错误的手动软件管理和软件可见性质确实意味着存在重大差异


最重要的一点是,CPU缓存(通常)基于物理地址进行缓存,而交换空间纯粹是虚拟地址空间。您永远不能在物理地址空间中使用交换空间(除非使用内存映射的非易失性存储,如NV-DIMM…)

嗨,Peter,谢谢您的回复。这就是我感到困惑的地方。您可以看到,在图中,虚拟地址已经在TLB/MMU之后转换为物理地址。但交换空间位于磁盘中,这是在主存中的页面错误之后。CPU如何继续使用虚拟地址在磁盘上查找内容?@MichaelPeng:CPU在磁盘上找不到内容。交换空间由100%软件管理。当CPU无法在页表中找到到物理的转换,或者映射没有写入权限,或者没有代码获取的exec等时,它只会生成一个页错误。由软件来确定该页是否实际有效,并且需要从磁盘中分页(硬页错误)或在写入时复制页(软页面错误的一个示例),或者确实需要映射(传递SIGSEGV信号:SEGFULT)你的意思是说页面错误实际上发生在TLB/MMU之前?这对CPU在这个过程中使用虚拟地址是有意义的。你提到CPU在磁盘上找不到东西,如果是的话,谁负责将正确的东西从磁盘中交换出来并放在RAM中?然后CPU再次读取RAM中的数据?@MichaelPeng:不,这发生在TLB查找之后up失败,导致的页面漫游仍然找不到条目。MMU现在并不是一个单独的硬件(它都集成到核心中),而是“MMU”如果存在页面错误异常,则会引发页面错误异常。正如我在回答和评论中所说,软件管理交换。很明显,在页面错误处理程序中,内核用于触发页面进入,或者在页面分配器中用于退出页面。一旦页面出现在RAM中并连接到页面表中,内核可以重新启动进程ess页面出错。太棒了!谢谢。你对这些太熟悉了。嗨,彼得,谢谢你的友好回复。这是我感到困惑的地方。你看,在图中,虚拟地址已经在TLB/MMU之后转换为物理地址。但是交换空间位于磁盘中,这是在主存页面出错之后。CPU如何继续使用虚拟地址在磁盘上查找内容?@MichaelPeng:CPU在磁盘上找不到内容。交换空间是100%由软件管理的。当CPU在页表中找不到到到物理的转换,或者映射没有写入权限,或者没有获取代码的exec权限等时,CPU只会生成一个页面错误。这取决于软件对fI确定该页面是否实际有效,是否需要从磁盘分页(硬页面错误)或写时复制(软页面错误的一个示例),或者是否确实需要映射(传递SIGSEGV信号:SEGFULT)你的意思是说页面错误实际上发生在TLB/MMU之前?这对CPU在这个过程中使用虚拟地址是有意义的。你提到CPU在磁盘上找不到东西,如果是的话,谁负责将正确的东西从磁盘中交换出来并放在RAM中?然后CPU再次读取RAM中的数据?@MichaelPeng:不,这发生在TLB查找之后up失败,导致的页面漫游仍然找不到条目。MMU现在并不是一个单独的硬件(它都集成到核心中),而是“MMU”如果存在页面错误异常,则会引发页面错误异常。正如我在回答和评论中所说,软件管理交换。显然,在页面错误处理程序(用于触发页面插入)或页面分配器(用于退出页面)中,特别是内核。一旦页面出现在RAM中并连接到页面表中,则