CPU如何访问内存?
MMU(Memory Managemant Unit)
很容易想象,CPU可以用物理地址对内存访问,但是实际上这只发生在刚开机的阶段,在那之后CPU就不再直接与内存打交道了,而是用虚拟地址通过使用MMU访问内存。既然虚拟地址与物理地址不一样,那么MMU是怎么在它们之间是怎么转换的呢?
页表
我理解MMU是一个查表的装置,什么表?
页表。
两个地址的转换关系就记录在页表中,页表在哪?
也在内存中,MMU知道它在主存什么地方。
地址转换
常见的32位机虚拟地址是32位的,在三级页表结构下,它们分别有如下含义
- [31:20]是一级索引
指向一级页表中的一项,共4096项,每一项都指向一个二级页表 - [19:12]二级索引
指向一级索引指定的一个二级页表中的一项,共256项,每一项都是一个物理地址的[31:12] - [11:0]页索引
顾名思义,就是页内的索引,可以定位到字节
二级页表项是[31:12],与页索引[11:0]拼接,就成了物理地址。