1.2.Memory
通常所说的内存指的是计算机的主存储器(main memory),简称主存。主存通过控制芯片等与 CPU 相连, 主要负责存储指令和数据。主存由可读写的元素构成,每个字节(1 Byte = 8 bit )都带有一个地址编号。CPU 可以通过该地址读取主存中的指令和数据,以及写入数据。
如何通过内存索引数据?
内存的构成单位是一个字节(8位),每一个字节都有一个地址编号,这个地址编号是它的逻辑地址。
CPU中的寄存器(基址寄存器、变址寄存器)会储存中被运算的数据的编号地址。CPU寄存器的空间大小决定了CPU能识别多大的内存。
比如说,一个32位的寄存器,它能表示的最大数为$2{32}-1=4294967295$(十进制数,从0开始;换成16进制数就是FFFFFFFF)。也就是说它能表示$2=4294967296$种状态。而4g的内存一共有$4\times1024\times1024\times1024=4294967296$个byte,也就是说一个具有32位的寄存器的CPU最多能识别4g的内存。
通过基址寄存器和变址寄存器,我们可以对主内存上特定的内存区域进行划分。首先,我们用十六进制数 将计算机内存上 00000000~FFFFFFFF的地址划分出来。那么,凡是该范围的内存区域,只要有一个 32 位的 寄存器,即可查看全部的内存地址。
CPU所生成的地址通常称为逻辑地址(logical address),而内存单元所看到的地址(即加载到内存地址寄存器(memory-address register)中的地址)通常称为物理地址(physical address)。
逻辑地址与物理地址的对应关系并不是固定不变的,这取决于执行的地址绑定方案。因此,逻辑地址又称为虚拟地址。虚拟地址通过映射与物理地址对应起来。完成这种映射的硬件设备是内存管理单元(memory-management unit, MMU),完成映射的方法有多种,也就是地址绑定方案有多种。程序无法访问物理地址,只能基于虚拟地址进行操作。