在mips体系结构中,地址空间可以分为kuseg,k0seg,k1eg,k2seg.其地址范围我也就不说了,相信大家都知道的。关于虚拟地址和物理地址的映射,我有一个问题。在k1seg中,需要把0xa000_0000-0xbfff_ffff映射为0x0000_0000-0x1fff_ffff,那么这个地址映射是通过硬件来完成的,还是通过软件来完成的阿?因为这个地址范围包含了0xbfc0_0000,它需要映射到物理地址为0x1fc0_0000.而这个地址是mips cpu的入口地址,cpu启动的时候,没有任何的软件而言,所有,我想应该是直接通过硬件把高位清零?对么?那么,kuseg,k0seg,k2seg当中的地址映射是不是通过软件来完成的?
还有,好像k0seg也是要把地址映射为0x0000_0000-0x1fff_ffff.这不是跟k1seg映射的物理地址冲突么?我看资料说,访问这段地址是通过cache来完成的。
![](http://uphotos.eepw.com.cn/3efji9/thumb/avatar.jpg)
1楼
所有,我想应该是直接通过硬件把高位清零?对么? Re:是通过硬件直接映射的。 那么,kuseg,k0seg,k2seg当中的地址映射是不是通过软件来完成的? Re:不确切记得这几个段中每一个段的映射方法;但如果是unmapped空间,则通过硬件直接映射;如果是mapped空间,则通过tlb进行虚实地址转换,应该是软硬件结合的吧。另外,有一个段的地址空间是否mapped可通过config寄存器进行控制,不记得是哪个段的,好像是k0seg。 还有,好像k0seg也是要把地址映射为0x0000_0000-0x1fff_ffff.这不是跟k1seg映射的物理地址冲突么?我看资料说,访问这段地址是通过cache来完成的。 Re:允许不同段的逻辑地址映射到相同的物理地址。
![](http://uphotos.eepw.com.cn/transformer/thumb/avatar.jpg)
2楼
这个问题还是真挺难得
最新人才