1、features of MMU (S3C2410 / S3C2440)
MMU(Memory Management Unit)负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。地址映射功能使得各进程拥有“看起来”一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。S3C2410 / S3C2440的特性有:
A、与ARM V4兼容的映射长度、域、访问权限检查机制。
B、4种映射长度:段(1MB)、大页(64KB)、小页(4KB)、权小页(1KB)。
C、对每段都可以设置访问权限。
D、大页、小页的每个子页(sub-page,即被映射页的1 / 4)都可以单独设置访问权限。
E、硬件实现的16个域。
F、指令TLB(含64个条目)、数据TLB(含64个条目)。
G、硬件访问页表(地址映射、权限检查由硬件自动进行)。
H、TLB中条目的替换采用round-robin算法(也称cyclic算法)。
I、可以使无效整个TLB。
J、可以单独使无效某个TLB条目。
K、可以在TLB中锁定某个条目,指令TLB,数据TLB互相独立。
2、地址分类
随着技术的发展,出现了以下两种情况:
A、有的程序很大,它所要求的内存空间超过了内存总容量,不能一次性装入内存;
B、多道系统中有很多程序需要同时执行,它们要求的内存空间超过了内存总容量,不能把所有程序全部装入内存。
实际上,一个程序在运行之前,仅需要将当前要运行的部分先装入内存,其余部分在用到时再从磁盘调入,而当内存耗光时再将暂时不用的部分调出到磁盘。这使得一个大程序可以在较小的内存空间中运行,也使得内存中可以同时装入更多的程序并发执行。
虚拟存储器从逻辑上对内存容量进行了“虚”的扩充。在32位的CPU系统中,这个虚拟内存地址范围为0~0xFFFFFFFF,我们把这个地址范围称为虚拟地址空间,其中的某个地址称为虚拟地址。与虚拟地址空间、虚拟地址对应的是物理地址空间、物理地址,它们对应实际的内存。
虚拟地址最终需要转换为物理地址才能读写实际的数据,通过将虚拟地址空间、物理地址空间划分为同样大小的一块块小空间(段或页),然后这两类小空间建立映射关系。则于虚拟地址空间远大于物理空间,有可能多块虚拟地址空间映射到同一块物理地址空间,或者有些虚拟地址空间没有映射到具体的物理地址空间。
ARM CPU上的地址转换过程涉及3个概念:虚拟地址(VA),变换后的虚拟地址(MVA),物理地址(PA)。
没有启动MMU时,CPU核、CACHE、MMU、外设等所有部件使用的都是物理地址。
启动MMU后,CPU核对外发出虚拟地址VA:VA被转换为MVA供CHCAE、MMU使用,在这里MVA被转换为PA:最后使用PA读写实际设备(S3C2410 / S3C2440内部寄存器或外接的设备):
A、CPU核看到的、用到的只是虚拟地址VA
B、CACHE和MMU看不见VA,它们利用由MVA转换得到PA
C、实际设备看不到VA、MVA,读写它们使用的是物理地址PA
MVA是除CPU核外的其他部分看见的虚拟地址,如果VA<32M,需要使用进程标识号PID(通过读CP15的C13获得)来转换为MVA。VA与MVA的转换方法为(这是硬件自动完成的):
if( VA < 32m ) then
MVA = VA | (PID << 25)
else
MVA = VA
利用PID生成MVA的目的是为了减少切换进程时的代价:不使用MVA而直接使用VA的话,当两个进程所用的虚拟地址空间(VA)有重叠时,在切换进程时为了把重叠的VA映射到不同的PA上去,需要重建页表、使无效CACHES和TLBS等,代价非常大。使用MVA后,进程切换就不必进行重建页表等工作了。
3、MVA到PA的转换过程
将一个MVA转换为PA,一般有两个方法:用一个确定的数学公式进行转换或用表格存储MVA对应的PA。这类表格称为页表,页表由一个个条目(ENTRY)组成:每个条目存储了一段MVA对应的物理地址及其访问权限,或者下一级页表的地址。
ARM CPU使用第二种方法。S3C2410 / S3C2440最多会用到两级页表:以段(SECTION,1MB)的方式进行转换时只用到一级页表,以页(PAGE)的方式进行转换时用到两级页表。页的大小有3种:大页(64KB)、小页(4KB)、极小页(1KB)。条目也称为“描述符”(DESCRIPTOR),有段描述符、大页描述符、小页描述符、极小页描述符——它们保存段、大页、小页、极小页的起始物理地址;粗页表描述符、细页描述符——它们保存二级页表的物理地址。
MMU 内存管理
最新推荐文章于 2024-03-17 00:41:01 发布