Skip to content

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,属于用户态缓存区域。