页式寻址 (Paged Addressing) 是现代计算机管理存储空间的一种重要方式,通过将主存划分为若干大小相等的“页”或“区”来管理。
基本概念
- 页 (Page):主存被分成等大小的块,每块称为一页。常见的页大小为 4KB ( 字节) 或 8KB。
- 页号 (Page Number):对页面的编号。
- 页内地址 (Page Offset):页面内部的单元编号,从 0 到页大小 -1。
- 逻辑 vs 物理:页式寻址是虚拟存储管理的基础,用于实现逻辑地址到物理地址的映射。
地址构成与计算
有效地址由页号和页内地址拼接而成:
计算实例
假设地址总长度为 16 位 ( 寻址空间):
-
方案 A (8位页号 + 8位页内地址):
- 页面大小: 字节。
- 页数: 页 (编号 0~255)。
- 应用:地址高8位为页号,低8位为页内偏移。
-
方案 B (9位页号 + 7位页内地址):
- 页面大小: 字节。
- 页数: 页 (编号 0~511)。
注:现代系统常用 4KB () 或 8KB 页面。对于 32 位系统,若页大小 4KB,则页内地址 12 位,页号 20 位。
常见寻址方式
在指令中通常有专门的标记位来区分具体的页式寻址模式:
- 零页寻址 (Zero-page Addressing):
- 对应主存中编号为 0 的页面。
- 当前页寻址 (Current-page Addressing):
- 使用 的高位部分作为页号,指令中的形式地址 作为页内偏移。 重点
- 适用于程序内部的短距离跳转。
- 页寄存器寻址 (Page Register Addressing):
- 使用专门的页寄存器提供页号。
优点
- 便于管理:由于页大小相等,主存与辅存(或 Cache 与主存)之间的信息交换非常方便。
- 局部性原理:利用时间局部性和空间局部性(详见 存储器层次结构与局部性原理),动态加载程序的部分代码和数据。