MIPS MM arch 1
MIPS 存储管理结构
及Linux代码分析
CurrentVersion: 0.1
Date: 2008-03-23
Author: J ack Tan
Author: J ack Tan
MIPS MM arch 2
版本历史
版本状态 作 者 参与者 起止日期 备注
0.1 Jack Tan 080323 初始化
0.2 Jack Tan 0808 17 完成框架
0.3 Jack Tan 080924 完成草稿
Author: J ack Tan
MIPS MM arch 3
1. MIPS 存储管理概述
1.1 虚拟地址空
与 x86, ARM, PowerPC 以及 SPARC 不同,MIPS 在体系结构的规范里,对虚拟地址
空 进行了划分。MIPS32 和 MIPS64 分别对 32 位和 64 位的情形进行了规定,要留意
的是 MIPS64 的划分兼容于 MIPS32,即当 MIPS64 的处理器运行于 32 位模式时,其
虚拟地址空 的划分“看上去”是和 32 位的一样的。
1.1.1 32 位虚拟地址空
Figure 1.1: 32 bit Virtual Address Space
其中,kuseg 给用户态程序使用,访问这个区域,虚拟地址会经 TLB 转换 (Mappe ) 同
时被访问之数据可被缓存于 cache (Cache )
kseg0, kseg1 给操作系统使用,访问这两个区域,虚拟地址都不会经 TLB 转换,其皆固
定映射到物理地址 0x0000 0000 ~ 0x 1FFF FFFF (低 512MB)处。他们的差别在于:
Author: J ack Tan
MIPS MM arch 4
访问 kseg1 的数据不会缓存到 cache 中 (Uncache ),这个区域往往用于 I/O (如对设
备寄存器的读写)。
kseg2 亦是给操作系统使用,这个区域既经 TLB 映射、数据亦能被缓存于 cache
用户态程序不能访问 kseg0, kseg1, kseg2,否则会引发 A ress Error 异常。
因此,很自然的,用户空 和内核空 的划分不会是由 OS 设计为 3G + 1G 。OS 的设计
需要符合 MIPS 规范的约定,则用户空 为 2G ,而内核空 可以有 2G 。
Author: J ack Tan
MIPS MM arch 5
1.1.2 64 位虚拟地址空
MIPS64 时,虚拟地址空 划分有些复杂。MIPS64 规范将 64 位地址空 划分为 4 段,
分别为 xuseg, xsseg, xkphys, xkseg。其中为了保持与 MIPS32 的兼容,xkseg 最顶
端的 2G 对应于 MIP