From e8827bbe6a7afb777c515112e2eeba47c800995d Mon Sep 17 00:00:00 2001 From: scPointer Date: Tue, 9 Jul 2024 14:11:29 +0000 Subject: [PATCH] deploy: 97b5dc7db927c1f7d33e1dd491d6439d5d6d74e9 --- _sources/chapter4/3sv39-implementation-1.rst.txt | 2 +- chapter4/3sv39-implementation-1.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_sources/chapter4/3sv39-implementation-1.rst.txt b/_sources/chapter4/3sv39-implementation-1.rst.txt index 8275f627..b8c980c8 100644 --- a/_sources/chapter4/3sv39-implementation-1.rst.txt +++ b/_sources/chapter4/3sv39-implementation-1.rst.txt @@ -374,7 +374,7 @@ SV39 地址转换过程 - 把 :math:`\text{VPN}_2` 作为偏移在三级页表的物理页中找到要访问位置的物理页号; - 物理页号对应的物理页基址(即物理页号左移12位)加上 :math:`\text{offset}` 就是虚拟地址对应的物理地址。 -这样处理器通过这种多次转换,终于从虚拟页号找到了一级页表项,从而得出了物理页号和虚拟地址所对应的物理地址。刚才我们提到若页表项满足 `R,W,X` 都为 0,表明这个页表项指向下一级页表。在这里三级和二级页表项的 `R,W,X` 为 0 应该成立,因为它们指向了下一级页表。 +这样处理器通过这种多次转换,终于从虚拟页号找到了一级页表项,从而得出了物理页号和虚拟地址所对应的物理地址。刚才我们提到若页表项满足 `R,W,X` 都为 0,表明这个页表项指向下一级页表。在这里一级和二级页表项的 `R,W,X` 为 0 应该成立,因为它们指向了下一级页表。 快表(TLB) diff --git a/chapter4/3sv39-implementation-1.html b/chapter4/3sv39-implementation-1.html index 03ccc01d..f343e3f9 100644 --- a/chapter4/3sv39-implementation-1.html +++ b/chapter4/3sv39-implementation-1.html @@ -660,7 +660,7 @@

SV39 地址转换过程\(\text{VPN}_2\) 作为偏移在三级页表的物理页中找到要访问位置的物理页号;

  • 物理页号对应的物理页基址(即物理页号左移12位)加上 \(\text{offset}\) 就是虚拟地址对应的物理地址。

  • -

    这样处理器通过这种多次转换,终于从虚拟页号找到了一级页表项,从而得出了物理页号和虚拟地址所对应的物理地址。刚才我们提到若页表项满足 R,W,X 都为 0,表明这个页表项指向下一级页表。在这里三级和二级页表项的 R,W,X 为 0 应该成立,因为它们指向了下一级页表。

    +

    这样处理器通过这种多次转换,终于从虚拟页号找到了一级页表项,从而得出了物理页号和虚拟地址所对应的物理地址。刚才我们提到若页表项满足 R,W,X 都为 0,表明这个页表项指向下一级页表。在这里一级和二级页表项的 R,W,X 为 0 应该成立,因为它们指向了下一级页表。

    快表(TLB)#

    我们知道,物理内存的访问速度要比 CPU 的运行速度慢很多。如果我们按照页表机制循规蹈矩的一步步走,将一个虚拟地址转化为物理地址需要访问 3 次物理内存,得到物理地址后还需要再访问一次物理内存,才能完成访存。这无疑很大程度上降低了系统执行效率。