计算机组成原理 RV$5.7虚拟存储器 llxx@ustc.edu.cn
计算机组成原理 RV $5.7 虚拟存储器 llxx@ustc.edu.cn
本章内容 √COD5:第5.7节 Virtual Memory Mapping Cache Mapping √实地址Vs虚地址 Secondary Storage √虚存技术动机 Registers Words Blocks Pages Cache √页式虚存管理原理 Processor Main Memory PWR √页式虚存管理设计:实例 √TLB √MMU √层次化:Cache-TLB-Memory-Disk √缺页异常处理
本章内容 ✓COD5:第5.7节 ✓实地址 vs 虚地址 ✓虚存技术动机 ✓页式虚存管理原理 ✓PWR ✓页式虚存管理设计:实例 ✓TLB ✓MMU ✓层次化:Cache-TLB-Memory-Disk ✓缺页异常处理
层次化存储系统:访存时间? USTC CPU Virtual Memory Mapping Cache Mapping 高速缓存 Cache Secondary 辅助硬件 Storage Registers Words Blocks Pages g 主存 Cache 辅助硬件和软件 Processor Main Memory 辅存 CPU a Nemory bus Obu色 c Memory VO devicee Registera e Disk memory Register Cache Memory reference reference referenoe reference Size: 500 bytee 64KB 1 GB 1TB Speed: 250pg 1na 100n8 10m3
层次化存储系统:访存时间?
实地址访存:存储器物理地址 USTC Physical Memory Au Stack s SP MREQ Au A A Heap .. 2Kx8位 1Kx4位 IKx4位 Data Segment ROM RAM RAM . D D. D2 D D D PC Text Segment D D WR Operating System 不利于多任务(须预先划分每个程序占用的内存范围) 段式
实地址访存:存储器物理地址 不利于多任务(须预先划分每个程序占用的内存范围) 段式
虚拟存储器(Virtual memory) 早期:1961年曼彻斯特大学提出 一内存容量:程序要求的存储器空间越来越大 ·模式一:虚存=主存+辅存 ·Overlay技术:程序分段,段长<内存大小;程序员负责换入换出 多道程序:代码和数据保护与共享存储 ·模式二:主存作为辅存(虚存)的Cache CPU 现代虚拟存储系统: 主存 -性能:一种将主存作为辅存的缓存的技术 辅助硬件和软件 ·模式二,虚存驻留于辅存,局部性原理 辅存 一 多用户多进程 由MMU和OS存储管理器共同管理:对普通程序员透明 ·虚方式访存:重定位(relocation) 技术,将虚地址映射到物理地址 ·页式(定长),段式(可变长),段页式
虚拟存储器(Virtual memory) • 早期:1961年曼彻斯特大学提出 – 内存容量:程序要求的存储器空间越来越大 • 模式一:虚存= 主存 + 辅存 • Overlay技术:程序分段,段长 < 内存大小;程序员负责换入换出 – 多道程序:代码和数据保护与共享存储 • 模式二:主存作为辅存(虚存)的Cache • 现代虚拟存储系统: – 性能:一种将主存作为辅存的缓存的技术 • 模式二,虚存驻留于辅存,局部性原理 – 多用户多进程 – 由MMU和OS存储管理器共同管理:对普通程序员透明 • 虚方式访存:重定位(relocation)技术,将虚地址映射到物理地址 • 页式(定长),段式(可变长),段页式
程序的地址空间:虚地址空间 USTC Virtual address space Physical address space 0x00000000 swap out 0☐1☐ 2☐3☐ 0x00010000 4白5白6白7白 text 0x00000000 program A 8☐9☐10☐11☐ 0x10000000 12☐13☐14☐15☐ data swap in 16☐17日1819日 program 20☐21☐22☐23■ B 虚存:磁盘交换区(swap space) MainMemory 换入/换出时机? Oxooffffff Demand Paging策略 stack Bring a page into memory only page belonging to process when it is needed 0x游 page not belonging to process 1.Less I/O needed 2.Less memory needed 3.Faster response 4.More users
程序的地址空间:虚地址空间 虚存:磁盘交换区(swap space) 换入/换出时机? Demand Paging策略 Bring a page into memory only when it is needed 1. Less I/O needed 2. Less memory needed 3. Faster response 4. More users
主存作为虚存的Cache:PWR USTC 0 1 磁盘交换区 虚存:在辅存中 2 swap space valid-invalie3 A frame bit 分页:虚实页大小相等。 4 A B 全相联:虚页可在内存任意位置 0 4 5 虚实映射:按页表查找 1 6 C 页表:在内存中。大小? D 2 6 7 写操作:写回 3 E 8 4 When?一致性? D F 5 8 9 替换 G 6 10 7 11 OS在创建进程时,为每个进程建 H 12 立其页表和磁盘上的VA空间。 logical memory 13 由OS+MMU管理,对程序员和编译 器透明! 14 15 PhysicalMemory *Valid--Invalid(PRESENT,pagefault),reference(替换),dirty
主存作为虚存的Cache:PWR 虚存:在辅存中 分页:虚实页大小相等。 全相联:虚页可在内存任意位置 虚实映射:按页表查找 页表:在内存中。大小? 写操作:写回 When?一致性? 替换 OS在创建进程时,为每个进程建 立其页表和磁盘上的VA空间。 由OS+MMU管理,对程序员和编译 器透明! *Valid-Invalid(PRESENT,pagefault),reference(替换),dirty 磁盘交换区 swap space
虚实地址转换:虚实映射,页表 STC Virtual address 3130292827 15141312111098…3210 Virtual page number Page offset ·VPN(虚页号)is the index of PT 虚页大小=内存页=磁盘块(n扇段》 Frame Valid Count Dirty Block/frame/page/sector 0 0 0 0 0 0 0 Translation 0 00 0 0 0 0 292827 15141312111098·3210 Physical page number Page offset Physical address COD图5-26
虚实地址转换:虚实映射,页表 虚页大小= 内存页= 磁盘块(n 扇段) Block/frame/page/sector COD图5-26 • VPN(虚页号)is the index of PT
页表:虚实映射,权限控制 VIrtual page 由OS为进程创建和维护 number RV FIGURE 5.28 Page table -存储于内存中OS地址空间 Physical page or Physlcal memory ·普通用户无法访问 Valid disk address -页表基址寄存器PTBR PTE格式:page table entry -控制位VCD: ● ● ·Valid:装入,缺页异常 DIsk storage -未装入页:disk地址 Ref/used/Count:$5.7.2 ·Dirty -Access Rights:非法异常$5.7.8 M盘机号 柱面号 头号扇区号 read/write/modify/exe ·页共享保护(限制其他进程权限) 物理页号(地址) page frame number(PFN) ·Disk address 外页表(disk map) ·VPN(虚页号)is the index of PT M:装入位(mount),指示是否已从第二级辅 存(离线)中装入
页表:虚实映射,权限控制 • 由OS为进程创建和维护 – 存储于内存中OS地址空间 • 普通用户无法访问 – 页表基址寄存器PTBR • PTE格式:page table entry – 控制位VCD: • Valid:装入,缺页异常 – 未装入页:disk地址 • Ref/used/Count: $5.7.2 • Dirty – Access Rights:非法异常$5.7.8 • read/write/modify/exe • 页共享保护(限制其他进程权限) – 物理页号(地址) • page frame number (PFN) • Disk address • VPN(虚页号)is the index of PT 外页表(disk map) M:装入位(mount),指示是否已从第二级辅 存(离线)中装入 RV FIGURE 5.28
Frame Valid Count Dirty 1 0 0 0 ● 每页size=4K。 (a)为页表 0 虚空间16页(64k) 3 0 0 0 (b)为对应的物理内存 系统物理内存4页(16K) A 5 0 0 0 0 页表 6 0 0 0 每项对应逻辑 地班罗間的每贸 7 0 0 0 Frame:域:物理页框号 8 0 0 A 0 0 0 0 装入的虚存页号 B 0 0 0 0 物理页框 3FFFH 0 0 0 3000H Page 4 0 0 本例,虚存的第0页: D •2 2FFFH 逻辑地址0000H~0FFFH 0 0 0 0 0 0 2000H Unused 雍谫森的翦群中, 物理地 1FFFH E 0 0 0 0 0 0 1 000H Page 0 0 0 OFFFH 0000H Page F 例:虚拟地址=0xxxH (a) (b) 个个 页内偏移 如果访问虚存page“A”? 执行一条访存指令需访问几次存储器? 虚页号
(a)为页表 (b)为对应的物理内存 ⚫ 每页size=4K。 ⚫ 虚空间16页(64k) ⚫ 系统物理内存4页(16K) ⚫ 页表 ⚫ 16个entry,每项对应逻辑 地址空间的一个页 ⚫ Frame域:物理页框号 虚页号 页内偏移 例:虚拟地址=0xxxH 装入的虚存页号 物理页框 •如果访问虚存page “A”? •执行一条访存指令需访问几次存储器? •0 •1 •2 •3 本例,虚存的第0页: 逻辑地址0000H~0FFFH 存储在内存的1号页框中,物理地 址为1000H~1FFFH