• 沒有找到結果。

4.7.1 虚拟存储器的基本概念

虚拟存储器只是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器,它 由主存储器和联机工作的辅助存储器(通常为磁盘存储器)共同组成,这两个存储器在硬件和 系统软件的共同管理下工作,对于应用程序员,可以把它们看作是一个单一的存储器来使用。

虚拟存储器不仅是解决存储容量和存取速度矛盾的一种方法,而且也是管理存储设备的 于虚拟存储器中,后来才发展到 Cache—主存层次中去的。不过 Cache—主存的控制完全由硬 件实现,所以对各类程序员是透明的,而虚拟存储器的控制是软硬件相结合的,对于设计存储

虚拟地址由段号和段内地址组成,如图 4-41 所示。

图 4-41 段式虚拟存储器管理

为了把虚拟地址变换成实主存地址,需要一个段表,段表实际上是程序的逻辑结构段与 其在主存中的实际存放位置之间的关系对应表。段表中装入位为“1”表示该段已调入主存,

为“0”则表示该段不在主存中;段的长度可大可小,所以段表中需要有长度指示。在访问某 段时,如果段内地址值超过段的长度,则发生地址越界中断。段表本身也是一个表,可以存在 辅存中,需要时再调入主存。但一般是驻留在主存中。

段式虚拟存储器的地址变换过程如下:CPU 根据虚地址访存时,首先将段号与段表的起 始基地址相拼接,形成访问段表对应行的地址,然后根据段表内装入位判断该段是否已调入主 存。若已调入主存,从段表读出该段在主存中的起始地址,与段内地址(偏移量)相加,得到 对应的主存实地址。

4.7.3 页式虚拟存储器

在页式虚拟存储系统中,把虚拟空间分成页,称为逻辑页;主存空间也分成同样大小的 页,称为物理页。各类计算机页面大小不等,一般为 512B 到几 KB,由于页的大小都取 2 的 整数幂个字,所以,页的起点都落在低位字段为 0 的地址上。

程序虚地址分为两个字段:高位字段为虚页号,低位字段为页内地址。虚地址到实地址 之间的变换是由页表来实现的。页表是一张存放在主存中的虚页号和实页号的对照表,记录着 程序的虚页调入主存时被安排在主存中的位置。若计算机采用多道程序工作方式,则可为每个 用户作业建立一个页表,硬件中设置一个页表基址寄存器,存放当前所运行程序的页表的起始 地址。

在页表中,对应每一个虚存页号有一个表目,表目内容至少要包含该虚页所在的主存页 面地址(页面号),用它作为实(主)存地址的高字段;与虚拟地址的页内字地址字段相拼接,

就产生完整的实主存地址,然后按此地址访问主存。页式管理的地址变换如图 4-42 所示。

通常,在页表的表项中还包括由装入位(有效位)、修改位、替换控制位及其他保护位等

组成的一个控制字。如装入位为“1”,表示该虚页已从辅存调入主存;如装入位为“0”,则表 示对应的虚页尚未调入主存。如访问该页就要产生页面失效中断,启动输入输出子系统,根据 外页表项目中查得的辅存地址,由磁盘等辅存中读出新的页到主存中来。修改位指出主存页面 中的内容是否被修改过,替换时是否要写回辅存。替换控制位指出需替换的页等。

图 4-42 页式虚拟存储器结构

4.7.4 段页式虚拟存储器

在段页式虚拟存储器中,把程序按逻辑结构分段后,再把每段分成固定大小的页。程序 对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护。因此,它可以兼取页式 和段式系统的优点。其地址变换过程如图 4-43 所示。

图 4-43 段页式虚拟存储器结构

CPU 访问时,虚地址包含段号、段内页号、页内地址 3 部分。首先将段表起始地址与段 号合成,得到段表项地址;然后从段表中取出该段的页表起始地址,与段内页号合成,得到页 表项地址;最后从页表中取出实页号,与页内地址拼接形成主存实地址。

可以看出,段页式虚拟存储系统由虚拟地址向实主存地址的变换过程中至少要查两次表

(段表和页表),为了加快地址变换过程的速度,一般会在其中设置快表。另外,对段进行划 分时,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

4.7.5 快表 TLB

假设页表是保存在主存储器中,那么在访问存储器时,首先要查页表,即使页面命中,

也得先访问一次主存去查页表,再按查得的实主存地址访问才能取得数据,这就相当于主存速 度降低了一倍。如果页面失效,要进行页面替换、页面修改,访问主存次数就更多了。

要想提高虚存系统访问的速度,必须加快查表的速度。由于程序在执行过程中具有局部 性的特点,因此,对页表的访问并不完全是随机的。在一段时间内,对页表的访问只是局限在 少数几个页表项内。为了将访问页表的时间降低到最低,许多计算机将页表分为快表和慢表两 种。将当前最常用的页表信息存放在一个小容量的高速存储器中,称为“快表”,也叫转换旁 路缓冲器(translation lookaside buffer,简称 TLB);把主存中的页表称为慢表。一种经快表与 慢表实现内部地址变换的方式如图 4-44 所示。

图 4-44 使用快表和慢表实现地址变换

查表时,由虚页号同时去查快表和慢表,当在快表中有此虚页号时,就能很快地找到对 应的实页号送入实主存地址寄存器。并使慢表的查找作废。如果在快表中查不到,那就要费一 个访主存时间查找慢表,从中查到实页号送入实主存地址寄存器,并将此虚页号和对应的实页 号送入快表,替换快表中某一行内容。

快表比页表小得多,一般在 16~64 行之间,只是慢表的小小的副本。用按内容查找的相 联存储器并行查找,是可供选择的一种技术途径(相联存储器内容参见附录 3)。

相關文件