在计算机操作系统中,地址转换就是将用户的逻辑地址转换成内存的物理地址,完成地址重定位。地址变换表是指用于地址变换的表,其中逻辑地址与物理地址是一一对应的。主要用于加速地址变换过程,提高计算机系统的读取数据的速度与效率。
简介为了能将用户地址空间中的逻辑地址变换为内存空间中的物理地址,在系统中必须设置地址变换机构。该机构的基本任务是实现从逻辑地址到物理地址的转换。由于页内地址和物理地址是一一对应的(例如,对于页面大小是 1 KB 的页内地址是 0~1023,其相应的物理块内的地址也是 0~1023,无须再进行转换),因此,地址变换机构的任务实际上只是将逻辑地址中的页号,转换为内存中的物理块号。在地址变换机构中,一般通过查询和对比地址变换表中地址,来实现虚地址到实地址的转换。在地址变换机构中,地址变换表引入,加快了地址映射速度和减少有效访问时间。在操作系统中地址变换表可以分为页表(慢表)和快表。
地址转换通常,中央处理器给出的访存地址是逻辑地址(或虚地址),它必须由地址转换机构转换成物理地址后才能访问主存。为了减少高速缓存访问的命中时间(它决定中央处理器的时钟周期 ),许多系统采用了虚地址高速缓存这类高速缓存中的地址标志是虚地址,中央处理器给出的地址不经转换就可用于高速缓存访问,而同时该地址可由地址转换机构转换成物理地址从而一旦高速缓存不命中,可立即用实地址访问主存。虚地址高速缓存带来的一个问题是,当进程切换时必须清除高速缓存因为不同进程的虚地址空间都是一样的。这对系统 (尤其是需要对上下文频繁切换的事务处理系统)性能有一定的影响。另外,考虑到程序访问指令和数据的不同特点,可以设置专门存放指令和专门存放数据的高速缓存它们可采用不同的容量和策略。指令和数据分开存放有利于指令流水线的实现。
快慢表页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。基本思想:大大缩小目录表的存储容量,从而大大加快查表速度。在这种基本思想中,考虑到程序在执行过程中具有局限性,因此,对页表中各存储字的访问并不是完全随机的。也就是说在一段时间内,对页表访问只是局限在少数几个存储字内。把经常访问的页表放在一个小容量高速存储器中,称为快表TLB(Translation Lookaside Buffer),小容量(几十个字),高速硬件实现,采用相联方式访问1。不经常访问的页表放在主存储器中,称为慢表,按地址访问,用软件实现。快表地址变换过程:多用户虚页号同时查快表和慢表。由于快表的查表速度要比慢表快得多,因此:
如果在快表中查到与用户虚地址相等的存储字,就立即终止慢表的查表过程,并读出存储字中的实页号p送人到主存储器的地址寄存器中。
如在快表中没有查到,就到慢表中去查找。如果在慢表中查到了,则把查到的实页号p送人主存储器的地址寄存器,同时也把这个实页号连同多用户虚地址等信息送人快表中。这时,若快表已满,则要采用某种替换算法。替换掉其中一个不常用的存储字。
主要优点:由于快表的查表速度非常快,与主存储器的一个存储周期相比几乎可以忽略不计。因此,只要快表的命中率很高,那么,虚拟存储器的访问速度就能主存储器的工作速度很接近。
主要缺点:要提高快表的命中率,最直接的办法是增加快表的容量。但是,由于快表是相联方式访问的当快表容量增加时,他的查表速度就会降低2。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学