Memory Address Space 内存地址空间
PSP 1000 的物理内存为 32MB. PSP 2000/3000 的物理内存为 64MB。
32MB 即 2^25B,物理内存地址范围为 0x00000000~0x02000000.
虚拟地址空间
虚拟地址 | 用途 |
---|---|
0x00000000~0x40000000(2^30B=1024MB) | 用户态可访问内存(缓存) |
0x40000000~0x80000000 | 用户态可访问内存(未缓存) |
0x80000000~0xA0000000(2^29B=512MB) | 内核态可访问内存(缓存) |
0xA0000000~0xC0000000 | 内核态可访问内存(未缓存) |
虚拟内存如何映射到物理内存?
通过下面的地址访问物理内存时会经过缓存
VM Start | VM End | Size | Segement | PM Start | PM End |
---|---|---|---|---|---|
0x88000000 | 0x887fffff | 8MB | 内核态(缓存) | 0x00000000 | 0x007fffff |
0x08800000 | 0x09ffffff | 24MB | 用户态(缓存) | 0x00800000 | 0x01ffffff |
0x0a00000 | 0x0bffffff | 32MB | 用户态(缓存)(PSP2000/PSP3000) | 0x02000000 | 0x04000000 |
通过下面的地址访问物理内存时不经过缓存
虚拟内存如何映射到其他物理设备?
VM Start | VM End | Size | Segement | Description |
---|---|---|---|---|
0x00010000 | 0x00013fff | 用户态(缓存) | 操作按钮 | |
0x04000000 | 0x041fffff | 2MB | 用户态(缓存) | 显存/帧缓冲区 |
0xbfc00000 | 0xbfcfffff | 1MB | 内核态(未缓存) | 内存中的硬件异常表(Exception Vector Table) |
游戏的默认加载地址
0x08804000,属于用户态缓存区域。