MIPS地址空间

来源:互联网 发布:网络购物系统开题报告 编辑:程序博客网 时间:2024/06/06 00:39

原文来自:http://www.johnloomis.org/microchip/pic32/memory/memory.html

使用MIPS CPU时,你程序放入的地址永远不会和物理地址一致(有时他们是简单映射),我们可以称以上2个地址分别为程序地址、物理地址。

一个MIPS CPU可以在以下2种权限下运行:用户态和内核态。但是从一种模式转换到另外一种模式时并不使任何工作不一样;只是有时候造成非法。在用户态下,任何程序地址的最高有效位被置位是非法的,并会导致一个陷阱。同时,一些指令也会在用户态导致陷阱。

以下是MIPS地址图,程序地址被划分为4个大区域,

0xF000.0000Mapped (kseg2)0xE000.00000xD000.00000xC000.00000xB000.0000Unmapped uncached (kseg1)0xA000.00000x9000.0000Unmapped cached (kseg0)0x8000.00000x7000.000032-bit user space
kuseg0x6000.00000x5000.00000x4000.00000x3000.00000x2000.00000x1000.0000

kseg20xC000.0000-0xFFFF.FFFF1 GB这块区域只能在内核态访问,但是需要通过MMU进行转换。除非你在写一个操作系统,否则你可能永远不会访问kseg2
kseg10xA0000.0000-0xBFF.FFFF512 MB通过清空最高3位将这些地址转换成物理地址,和kesg0同样被映射最低512MB地址映射出同样的物理地址。访问这些地址不使用MMU或者CACHE。这块区域经常被I/O地址和boot ROM使用。kseg00x8000.0000-0x9FFF.FFFF512 MB通过清空最高位将这些地址转换成物理地址。这块区域地址经常通过cache被访问,所以这块区域不应该使用直至缓存被正确初始化。kuseg0x0000.00000-0x7FFF.FFFF2 GB这些地址允许在用户态访问,通过MMU映射。