Caching 基于缓存的虚拟地址到物理地址的转换

Caching 基于缓存的虚拟地址到物理地址的转换,caching,memory-management,operating-system,virtual-memory,tlb,Caching,Memory Management,Operating System,Virtual Memory,Tlb,我确实理解如何将虚拟地址转换为物理地址以访问主内存。我也了解缓存的工作原理 但我的问题是把这两个概念放在一起,理解进程如何访问内存的大局,以及如果缓存丢失会发生什么。因此,我有这张图纸,它将帮助我提出以下问题: 1-进程是否使用表示主内存中字节位置的完全相同的物理地址访问缓存 2-TLB实际上是在第一级缓存中,还是在CPU芯片内专门用于翻译的独立内存 3-当缓存未命中时,我需要获取整个块并在缓存中分配,但主内存以帧(页)而不是块的形式组织。那么,一个进程页是否会被划分为缓存块,以便在未命中时将

我确实理解如何将虚拟地址转换为物理地址以访问主内存。我也了解缓存的工作原理

但我的问题是把这两个概念放在一起,理解进程如何访问内存的大局,以及如果缓存丢失会发生什么。因此,我有这张图纸,它将帮助我提出以下问题:

1-进程是否使用表示主内存中字节位置的完全相同的物理地址访问缓存

2-TLB实际上是在第一级缓存中,还是在CPU芯片内专门用于翻译的独立内存

3-当缓存未命中时,我需要获取整个块并在缓存中分配,但主内存以帧(页)而不是块的形式组织。那么,一个进程页是否会被划分为缓存块,以便在未命中时将其带到缓存中

4-假设有TLB未命中,这是否意味着我需要一直到主内存并在那里执行页面漫游,还是页面漫游发生在缓存中

5-TLB未命中是否保证缓存未命中

6-如果你有任何能解释我试图理解的大局的阅读材料,我将非常感谢与我分享

谢谢,请随时回答我提出的任何问题

  • 对。缓存不是可以单独寻址的内存。缓存映射将物理地址转换为缓存地址,但此映射不是进程通常控制的。对于某些CPU架构,它完全由硬件控制(例如Intel x86)。对于其他人,操作系统将被期望对映射进行编程

  • 您给出的图中的TLB用于虚拟到物理地址映射。它可能不是用于缓存的。同样,在某些体系结构上,TLB是编程的,而在其他体系结构上,TLB是由硬件控制的

  • 页面大小和缓存线大小不必相同,一个与虚拟内存相关,另一个与物理内存相关。当进程访问虚拟地址时,考虑到页面大小,该地址将使用TLB转换为物理地址。一旦这样做了,页面的大小就不重要了。对物理地址的字节/字进行访问。如果这导致发生缓存未命中,则将读取的缓存块的大小将与覆盖正在访问的物理内存地址的缓存块的大小相同

  • TLB未命中将需要通过读取其他内存进行页面转换。此过程可能发生在某些CPU(如Intel x86/x64)上的硬件中,也可能需要在软件中处理。页面翻译完成后,TLB将重新加载页面翻译

  • TLB未命中并不意味着缓存未命中。TLB未命中只是意味着虚拟到物理地址映射未知,需要进行页面地址转换。缓存未命中意味着无法快速提供物理内存内容

  • 重述:

    • TLB用于将虚拟地址快速转换为物理地址。它可以快速缓存虚拟到物理内存的映射。它与物理内存内容没有任何关系
    • 缓存允许更快地访问内存。它只是为了更快地提供物理内存的内容

    请记住,术语“缓存”可用于多种用途(例如,在描述TLB时请注意缓存的用法)。TLB更具体一点,通常意味着虚拟内存转换,尽管这不是通用的。例如,一些DMA控制器也有TLB,但TLB不一定用于将虚拟地址转换为物理地址,而是用于将块地址转换为物理地址。

    感谢@Robin提供了详细的回答1。是或否。取决于缓存类型。物理索引、物理标记(PIPT)缓存将仅使用PA。虚拟索引、虚拟标记(VIVT)仅使用VA。其他VIPT、PIVT使用PA和VA从缓存中获取值。2。TLB是一个单独的缓存。我不知道TLB缓存与其他L1、L2等缓存相交的CPU体系结构4。不是真的。翻译需要访问翻译表。CPU通过PA访问转换表,因此在PIPT情况下,转换表可以作为任何其他类型的数据显示在缓存中。TLB未命中可能通过不访问主内存来解决。