MIPS地址空间

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

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

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

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

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

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



你可能感兴趣的:(MIPS地址空间)