divedb

虚拟地址转换[五] - paging structure caches

回顾上文TLB entry和PTE entry的组成,你有没有意识到,在多级页表系统中,TLB其实只是最后一级PTE的缓存(对于large pages的TLB则最后一级是PDE或者PDPTE,本文以下的讨论都是针对非large page的情况),这和在单级页表中是一样的。 多级页表的查找是一个串行的,链式的过程。试想一下,访问在虚拟地址空间里连续的两个pages(比如虚拟地址分别为0x00...

RTC小议

RTC(Real Time Clock)作为一个常用的外设,可以记录实时时钟数据,即便是在其连接的系统电源关闭的情况下。那要实现上述功能,需要哪些组件呢? 要在电源关闭的情况下还可以正常工作,那就需要一个备用的电池,因为电池提供的能量的很有限的,所以需要尽可能低的功耗。要能保存时钟数据,就需要一段小的RAM。 一个RTC能用多久呢?RTC只有在系统主电源关闭的情况下才会切换到备用电池...

虚拟地址转换[四] - large page/hugepage

上文提到,使用large page(在Linux中对应的概念叫hugepage)可以优化对多级页表的访问时间,那处理器硬件层面是如何实现large page的呢? 在页表的任何级别,指向下一级的指针可以为空,表示该范围内没有有效的虚拟地址。中间级别也可以有特殊条目(设置了page size flag),表明它们直接指向large page。 例如,在32位的x86系统中,支持4MB的hu...

虚拟地址转换[二] - 具体实现

转载:虚拟地址转换[二] - 具体实现 关于上文提到的“关于在TLB中具体是怎么找的,在page table中又是怎么”walk”的问题,下面通过一个简单的例子说明一下。 假设当前CPU支持的虚拟地址是14位,物理地址是12位,page size为64字节(这里要说明一下,通常情况下呢,虚拟地址和物理地址的位数是一样的,但其实并不一定需要一样,因为本来就可以多个虚拟地址指向同一个物理...