MIPS 存储管理结构和代码分析

上传人:野鹰 文档编号:1128144 上传时间:2017-05-29 格式:PDF 页数:54 大小:1.50MB
返回 下载 相关 举报
MIPS 存储管理结构和代码分析_第1页
第1页 / 共54页
MIPS 存储管理结构和代码分析_第2页
第2页 / 共54页
MIPS 存储管理结构和代码分析_第3页
第3页 / 共54页
MIPS 存储管理结构和代码分析_第4页
第4页 / 共54页
MIPS 存储管理结构和代码分析_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《MIPS 存储管理结构和代码分析》由会员分享,可在线阅读,更多相关《MIPS 存储管理结构和代码分析(54页珍藏版)》请在金锄头文库上搜索。

1、MIPS MM arch 1MIPS 存储管理结构及Linux代码分析CurrentVersion: 0.1Date: 2008-03-23Author: Jack Tan Author: Jack Tan MIPS MM arch 2版本历史版本状态 作 者 参与者 起止日期 备注0.1 JackTan 080323 初始化0.2 JackTan 080817 完成框架0.3 JackTan 080924 完成草稿Author: Jack Tan MIPS MM arch 31. MIPS存储管理概述1.1 虚拟地址空间与x86, ARM, PowerPC 以及SPARC 不同,MIPS 在

2、体系结构的规范里,对虚拟地址空间进行了划分。MIPS32 和MIPS64 分别对32 位和64 位的情形进行了规定,要留意的是MIPS64 的划分兼容于MIPS32 ,即当MIPS64 的处理器运行于32 位模式时,其“ ” 虚拟地址空间的划分 看上去 是和32 位的一样的。1.1.1 32 位虚拟地址空间Figure 1.1: 32 bit Virtual Address Space其中,kuseg 给用户态程序使用,访问这个区域,虚拟地址会经TLB 转换(Mapped) 同时被访问之数据可被缓存于cache (Cached)kseg0, kseg1 给操作系统使用,访问这两个区域,虚拟地址

3、都不会经TLB 转换,其皆固定映射到物理地址0x0000 0000 0x1FFF FFFF (低512MB)处。他们的差别在于:Author: Jack Tan MIPS MM arch 4访问kseg1 的数据不会缓存到cache 中(Uncached) ,这个区域往往用于I/O (如对设备寄存器的读写)。kseg2 亦是给操作系统使用,这个区域 经TLB 映射 数据亦 被缓存于cache用户态程序不 访问kseg0, kseg1, kseg2 , 会 Address Error 。, 的,用户空间和 空间的划分不会是 OS 设 3G + 1G 。OS 的设 要 MIPS 规范的 定, 用户

4、空间 2G , 空间可以 2G 。Author: Jack Tan MIPS MM arch 51.1.2 64 位虚拟地址空间MIPS64 时,虚拟地址空间划分 。MIPS64 规范 64 位地址空间划分 4 ,分别 xuseg, xsseg, xkphys, xkseg 。其中 了 与MIPS32 的兼容,xkseg 的2G 对于MIPS32 的kseg2, kseg1 和kseg0,xuseg 的低2G 对于 MIPS32 2G 的kuseg。要意的是MIPS 的体currency1,可以“currency1的虚拟地址的位数,这个可以fi如fl之:1. 写 位 1 到CP0 之Entry

5、Hi2. 读EntryHi 的EntryHi 之VPN2 中, 1 的位 位是被currency1的一MIPS64 的处理器,往往currency140 位的虚拟地址。64 位Linux 设 时, 运行在xkseg 之kseg0 ,对物理 存的”访问 不32 位样使用kseg1 了,其使用xkphys。xkphys 的虚址都是”映射到物理地址的,访问这个区域是不会TLB 的, 于对访问的数据cache 与 , fi位VA61:59 ,如个MIPS64 的currency1,使用36 位的物理地址, :访问0x9000 0000 0000 0000 0x9000 000F FFFF FFFF 时

6、,其数据是不会被缓存的, 虚拟地址的61 59 的 2 ,对于Cache 一的 Uncached。 的,MIPS64 规范对xkphys 作了 的区分:xkphys 0x4000 0000 0000 0000 ,其以0x0800 0000 0000 0000 位划分 8 个 ,分别 :0xB800 0000 0000 0000 0xBFFF FFFF FFFF FFFF0xB000 0000 0000 0000 0xB7FF FFFF FFFF FFFF0xA800 0000 0000 0000 0xAFFF FFFF FFFF FFFF0xA000 0000 0000 0000 0xA7FF

7、 FFFF FFFF FFFF0x9800 0000 0000 0000 0x9FFF FFFF FFFF FFFFAuthor: Jack Tan MIPS MM arch 60x9000 0000 0000 0000 0x97FF FFFF FFFF FFFF0x8800 0000 0000 0000 0x88FF FFFF FFFF FFFF0x8000 0000 0000 0000 0x87FF FFFF FFFF FFFFVA61:59 分别 7, 6, 5, 4, 3, 2, 1, 0 ,对Cache Coherency Attribute 的8 个。对于currency136 位

8、物理地址的处理器,访问xkphys 时,CPU ” VA63:36 0 即虚拟地址对的物理地址。Figure 1.2: 64 bit Virtual Address SpaceAuthor: Jack Tan MIPS MM arch 71.2 物理地址空间MIPS 上,物理地址空间的划分,是 ”MIPS core 与RAM 设之间的( System/Host Interface System Controller System Bridge) 定的。对于MIPS 上的物理地址空间(= 32 位), 形成的 是 0x0000 0000 0x1000 0000 给 存, 0x1000 0000

9、0x1FFF FFFF 留给I/O 。 系统的 存于256MB, 256MB 的 存,其物理地址 0x2000 0000 始。如 NEC EMMA3P (使用36 位物理地址)的物理地址空间划分 :Figure 1.3: EMMA3Ps physical address mapAuthor: Jack Tan MIPS MM arch 8MIPS 上,设的I/O 寄存器是”映射到物理地址空间的。MIPS64 的currency1一都使用 fi32 位的物理地址空间(36 位 40 位)。别地, MIPS32 的currency1( 使用32 位的虚拟地址空间)使用 fi32 位的物理地址空间。

10、如Au1200 使用36 位的物理地址, 其Physical Memory 的映射 :StartAddr EndAddr Size(MB) Function0xF00000000 0xFFFFFFFFF 4096 PCMCIAInterface0xE00000000 0xDFFFFFFFF 4096 Reserved0xD00000000 0xDFFFFFFFF 4096 I/ODevice0x100000000 0xCFFFFFFFF 4096*12 Reserved0x0F0000000 0x0FFFFFFFF 256 DebugProbe0x080000000 0x0EFFFFFFF 1

11、792 Memory(Reserved)0x020000000 0x07FFFFFFF 1536 Memory0x018000000 0x01FFFFFFF 128 FlashorROM0x014000000 0x017FFFFFF 64 I/ODevicesonSystemBus0x012000000 0x013FFFFFF 32 Reserved0x010000000 0x011FFFFFF 32 I/ODevicesonPeripheralBus0x000000000 0x00FFFFFFF 256 MemoryTable 1.1: Au1200s Physical Memory Map

12、对于MIPS32 使用 fi32 位物理地址的情形,Linux 了“ CONFIG_64BIT_PHY_ADDR 之,其要的是 用于存 物理地址的 的 到64 位。要留意的是MIPS32 fl,访问512MB 以上的物理地址空间 fiTLB 访问, 用kseg0/kseg1 的固定映射去访问的。一 ,Bootloader 在0x1FC0 0000 处, 处 Flash ROM。Author: Jack Tan MIPS MM arch 91.3 32位 在地址空间上的 Linux 在管理物理 存时 使用kseg0 的256MB ( 256MB 映射到I/O), 访问设备的I/O 寄存器 要即,

13、不 去缓存,Linux 操作I/O 是使用kseg1 的 256MB 去访问。 的 要,一 用kseg1 去访问 存。当物理 存于256MB 时,kseg0 的空间不够用, 要启用High Memory 机,使用kseg2 的空间,fiTLB 建映射去访问。对64 位情形,不存在这个问题, 64 位Linux 使用xkphys 区域访问物理 存,cached 和uncached 区域与整个物理地址空间一样,足够用矣。Author: Jack Tan MIPS MM arch 102. TLB 结构和 作方式2.1 结构TLB 即Translation Lookaside Buffer ,是 虚

14、拟地址(VA) 到物理地址(PA) 转换的硬件机构,其 虚拟存储的硬件基础。TLB 是一个阵列结构,一 数十 左右,其每 的结构如fl图示:Figure 2.1: TLB Entry StructureVPN2 虚 框号,PFN 物理 框号可以看到,一个TLB 里 两个PFN ,其可以映射以VPN2 始框号的两个相邻的偶奇,其中VPN2 始终 偶数。 第一个PFN 对的虚 框号 VPN2 ;第二个PFN 对的虚 框号 VPN2 + 1。PageMask, 掩码, 可变 设。G,Globle 位,如位 1 , TLB 是全局的,可 任何进程使用,TLB 检索时处理器 忽略ASID 的检查。,针对

15、每个物理 ,还 一 Flags:Author: Jack Tan MIPS MM arch 11V: Valid,1 位,1 是 的。D: Dirty,1 位,1 中的数据被修改fiC: Cache,3 位,指示对 用的缓存算 ,可以设之, 让处理器不 数据缓存于Cache2.2 作方式了追求 ,MIPS 的currency1一使用全相联的TLB, 其 作方式 :处理器虚址的高位作VPN ,” 其与TLB 的 同时比较, 匹配的 且 (V 1) ”输出PFN , 抛出TLB Refill , OS 负责在 处理里 位于 存的 读出,并以随机方式写 TLB,尔 返回,重新执行一次访存指令, 会重一次TLB。证TLB 仅

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号