CPU 内存管理

Computer System Basis

Posted by 汤汤 on November 23, 2023

=====================

系统相关

进制转换

1B = 8 bits、 1字节 = 8 比特

16进制(0x00–0xFF)对应10进制(0–$2^4^ * 2^4^ -1$ 即255) 对应二进制(2^8^ ,即1字节)

$\Rightarrow$ 在地址转换中(如,0x002400D0),位16进制对应1字节,位16进制对应4字节。4字节 = $2^2 * 2^3bits = 2^5bits$ = 32位

定义:32位 v.s. 64位

计算机的最小存储单元是1Byte,即内存单元。 32位和64位区别是CPU内存单元地址的个数,即CPU的寻址能力。CPU的寻址能力由地址总线的宽度(总线的位数)决定。

32位:地址空间由8个16进制数(0x0000 1111)表示,即对应4字节,4*2^3^= 2^5^ = 32位。32位寻址的CPU支持 2^32^大小的地址。

64位:地址空间由16个16进制数(0x0000 1111 2222 3333)表示,即对应8字节,8*2^3^ = 2^6^ = 64位。64位寻址的CPU支持2^64^大小的地址。

汇总如表所示 :
32位 64位
1 2 3

ISA架构

表列出了厂商设计的处理器架构。:)

厂商 复杂or精简 CPU架构 备注
Intel CISC x86 可变指令长度
AMD CISC x86
IBM RISC PowerPC 基于POWER(Performance Optimized With Enhanced RISC)
ARM RISC ARM 多数32位嵌入式处理器

表 :) 汇总了一些主流CPU支持的位数及其特点。

位数 x86(IA86;i386) IA64 x86-64(x64) AMD64
32位        
64位        
备注   不兼容32位,遇冷 intel提出 AMD提出
区别 8个32位通用寄存器(EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI) 拓展为64位通用寄存器(RAX,RBX,RCX,RDX,RBP,RSP,RSI,RDI),并新增了r8 $\sim$ r15这6个寄存器 拓展为64位通用寄存器(RAX,RBX,RCX,RDX,RBP,RSP,RSI,RDI),并新增了r8 $\sim$ r15这6个寄存器 拓展为64位通用寄存器(RAX,RBX,RCX,RDX,RBP,RSP,RSI,RDI),并新增了r8 $\sim$ r15这6个寄存器
MIPS Microprocessor without interlocked piped stages
这里需要补充

无内部互锁的管道(流水)级微处理器

分页机制

内存分页技术1,由页表2负责将虚拟空间映射到物理空间。

paging避免了分段产生的大量内存碎片。配合技术提高交换的效率。

多级页表与局部性原理

多级页表3,以二级页表为例,一级页表覆盖到全部的虚拟空间,但只需占用一个page的空间大小,一级页表的页表项存储于二级页表,而二级页表只有在进行有需要时才创建(若某个页表项没用到,就不需要创建其对应的二级页表了)。

多级页表内部的地址转换带来了一定的时间开销,根据程序的局部性原理,计算机在CPU中封装了一个程序最常访问页表项的硬件,转址旁路缓存(translation lookside cache)4

内存交换

段页式内存管理

地址结构 = 段号 :段内页号 :页内偏移

  1. paging的存在合理性:内存分段导致存在内存碎片,进而提出内存交换技术。然而,交换一个占用内存空间较大的程序到硬盘,效率极低。paging将虚拟空间和物理空间划分为固定尺寸的内存,即page。 

  2. 页表存储在CPU的内存管理单元MMU。若进程访问的虚拟地址不在页表中,产生”缺页”异常,进入内核空间,分配物理内存,更新进程页表。 

  3. 多级页表的存在合理性:简单的paging导致页表项很多,而每个进程都需要自己的虚拟空间,即每个进程都需要一个大大的页表。故单级页表空间浪费严重。 

  4. TLB,也称页表缓存、快表。MMU对TLB的访问交互实现虚拟地址到物理地址的转换。