我对 CPU 缓存和物理地址之间的“别名”的含义有点困惑。首先,我发现它在上的定义:
但是,VIVT 会遇到混叠问题,其中几个不同的虚拟地址可能引用相同的物理地址。另一个问题是同音异义词,其中相同的虚拟地址映射到几个不同的物理地址。
但是过了一会儿,我在 DAC '05 的演示文稿(ppt)上看到了不同的定义:“具有虚拟内存的嵌入式处理器的节能物理标记缓存”
缓存别名和同义词:
别名:来自不同上下文的相同虚拟地址映射到不同的物理地址同义词:不同的虚拟地址映射到相同的物理地址(数据共享)
因为我不是一个母语人士,我不知道哪个是正确的,虽然我觉得维基的定义是正确的。
Edit:CPU 缓存中“别名”的概念通常表示“同义词”,相反是“同音异义”。在更通用的级别中,“别名”是“令人困惑”或“混乱”或类似的东西。因此,在我看来,“别名”确切地意味着(X-& gt;Y)的映射是“不是双射的”,其中
“X”= 已缓存的物理地址单元的子集。(每个元素是一行字节)
“Y”= 有效高速缓存行的集合。(元素 a 也是“行”)
你需要先了解虚拟内存,但基本上是这样的:
您的程序使用的内存地址不是 RAM 使用的物理地址;它们是 CPU 将虚拟地址映射到物理地址。
多个虚拟地址可以指向相同的物理地址。
这意味着你可以在缓存的不同部分有相同数据的两个副本,而不知道它......他们不会被正确更新,所以你会得到错误的结果。
编辑:
reference的练习:
当内存的物理页的多个映射具有冲突的缓存状态(如缓存和未缓存)时,会发生缓存别名。由于这些冲突状态,当刷新处理器的缓存时,该物理页中的数据可能会损坏。如果驱动程序将该页用于 DMA,则可能会导致硬件稳定性问题和系统锁定。
For those who are still unconvinced:在 ARMv4 和 ARMv5 处理器上,缓存被组织为虚拟索引、虚拟标记 (VIVT) 缓存,其中索引和标记都基于虚拟地址。此方法的主要优点是缓存查找速度更快,因为转换后备缓冲区 (TLB) 不参与匹配虚拟地址的缓存行。但是,此缓存方法确实需要更频繁的缓存刷新物理地址,由于缓存别名,
@ Wu 是的你确实需要了解虚拟内存很少了解别名。让我先给你几行解释:
假设我有 1GB 的 RAM(物理内存)。我想向我的程序员展示一个视图,即我有 4GB 内存,然后使用虚拟内存。在虚拟内存中,程序员认为他 / 她有 4GB,并从这个角度编写他们的程序。他们不需要知道存在多少物理内存。优点是程序将在具有不同 RAM 的计算机上运行。此外,该程序可以与其他物理程序一起运行。
我将给出一个简单的 1 级虚拟内存系统(英特尔有一个 2 / 3 级系统,这使得解释变得复杂。
我们的问题是程序员有 40 亿个地址,而我们只有 10 亿个位置来放置这 40 亿个地址。因此,地址来自虚拟地址空间,需要映射到物理地址空间。这是使用称为页表的简单索引表来完成的。您访问具有虚拟地址的页表,它为您提供该内存位置的物理地址。
一些细节:请记住,物理空间只有 1GB,因此系统仅将最近访问的 1GB 存储在物理内存中,其余存储在系统磁盘中。当程序请求特定地址时,我们首先检查它是否已经在物理内存中。如果是,则将其返回给程序。如果不是,则将其从磁盘中取出并放入物理内存中,然后返回给程序。后者称为页面错误。
回到虚拟内存上下文中的别名:由于 virtual-& gt;物理地址之间存在映射,所以可以使两个虚拟地址映射到相同的物理地址,这与说如果我在我的页表中查看虚拟地址 X 和 Y,在两种情况下都会得到相同的物理地址是一样的。
我在下面显示了一个 8 条目页表的简单示例。假设有 8 个 vitual 地址,只有 3 个物理地址。页表如下所示:
0: 1 1: On disk 2: 2 3: 1 4: On disk 5: On disk 6: On disk 7: 0 This mean that if virtual address 4 is accessed, you will get a page fault. If virtual addresses 3 is accessed, you will get the physical address 1 In this case, virtual addresses 0 and 3 are aliasing to the same physical address 1 for both of them
注意:我到处使用物理和虚拟地址来简化概念。在实际系统中,虚拟到物理的映射不是基于每个地址。相反,我们将虚拟空间的块映射到物理空间。每个块称为 Page(这就是为什么映射表称为页表的原因),块的大小是 ISA 的属性,例如 Intel x86 具有 4Kbyte 页面。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(63条)