据维基百科称,N64只有4 MB的RDRAM(扩展包为8 MB),其他数量同样很小(L1缓存为4 KB左右).但是,我在Google上发现的技术文档表明其内存地址范围从$ 0000:0000到$ FFFF:FFFF - 这是4 GB!由于像Project64这样的现有N64仿真器不会耗尽4 GB的RAM,因此模拟内存映射的工作原理如何?我试过翻阅各种各样的文件等等,所有这些文件似乎都有些不同.有没有人对这个问题有一些建议?
具体来说,这是我发现的内存映射:
0x0000 0000 to 0x03EF FFFF RDRAM Memory
0x03F0 0000 to 0x03FF FFFF RDRAM Registers
0x0400 0000 to 0x040F FFFF SP Registers
0x0410 0000 to 0x041F FFFF DP Command Registers
0x0420 0000 to 0x042F FFFF DP Span Registers
0x0430 0000 to 0x043F FFFF MIPS Interface (MI) Registers
0x0440 0000 to 0x044F FFFF Video Interface (VI) Registers
0x0450 0000 to 0x045F FFFF Audio Interface (AI) Registers
0x0460 0000 to 0x046F FFFF Peripheral Interface (PI) Registers
0x0470 0000 to 0x047F FFFF RDRAM Interface (RI) Registers
0x0480 0000 to 0x048F FFFF Serial Interface (SI) Registers
0x0490 0000 to 0x04FF FFFF Unused
0x0500 0000 to 0x05FF FFFF Cartridge Domain 2 Address 1
0x0600 0000 to 0x07FF FFFF Cartridge Domain 1 Address 1
0x0800 0000 to 0x0FFF FFFF Cartridge Domain 2 Address 2
0x1000 0000 to 0x1FBF FFFF Cartridge Domain 1 Address 2
0x1FC0 0000 to 0x1FC0 07BF PIF Boot ROM
0x1FC0 07C0 to 0x1FC0 07FF PIF RAM
0x1FC0 0800 to 0x1FCF FFFF Reserved
0x1FD0 0000 to 0x7FFF FFFF Cartridge Domain 1 Address 3
0x8000 0000 to 0xFFFF FFFF External SysAD Device
Run Code Online (Sandbox Code Playgroud)
无论您模拟多少内存,主机上都不需要那么多可用内存(不需要 4 GB,甚至不需要 4 MB)。相反,请使用可以通过地址值访问模拟内存的数据结构。仅当您需要在模拟内存中存储某些内容时,才在真实内存中分配空间。
然而,实际分配上述内部存储器的量可能是微不足道的。
像西蒙一样,我也会首先假设段:偏移理论,但上面列出的地址范围似乎完全与该理论相矛盾。另外,整个“64”位地址空间的事情。
请注意,大部分地址空间分配给外部接口(盒式磁带等),而不是内部硬件资源。