引言
MMU(memory management unit),无论对于computer architecture designer还是OS designer,都是至关重要的部分,设计和使用的好坏,对性能影响比较大。
MMU,我觉得是硬件和软件配合最密切的部分之一,对于RISC CPU而言,更是这样。
前面,我们对or1200的整体memory hierarchy做了简单分析,了解了cache的映射方式,替换策略,写策略,以及cache的优化等等背景知识,并对or1200的具体实现做了分析。在现实中,cache往往和MMU紧密合作,完成CPU的访存操作。本小节就来分析一下or1200的MMU模块。
1,MMU产生原因
研究一个东西,首先要了解其来龙去脉,MMU也不例外,我们在分析MMU的工作机制之前先介绍一下MMU的产生原因。
当时,主要由两方面的因素导致了MMU的产生:
a,to allow efficient and safe sharing of memory among multiple programs,
b,and to remove the programming burdens of a small, limited amount of main memory.
说明
a,从安全角度出发,确保多进程程序在执行时相互不影响。
b,从程序员的角度出发,采用MMU可以让程序员在编程时少受内容容量的限制。
现在而言,第一个原因占主要。
2,MMU的工作机制
在分析or1200的MMU实现之前,我们有必要先了解MMU的工作机制。
为了更清晰的了解MMU的工作过程,我假设了一个具体的例子,通过这个例子来说明其详细的工作步骤。
1>实例的环境假设
比如,我们编写了一个简单的应用层程序:
/*demo process, base on OS*/
int main()
{
int test;
test = 0x12345678;
}
1》假设其进程名称为demo。
2》假设片外SDRAM(内存)大小为32MB。其中内核空间16MB,用户空间16MB。
3》假设OS的内存管理方式是单级页式管理(还可能是段式,或页段式),虚拟地址和物理地址均为32-bit。
既然ps是8KB,也就是说最多需要的PTE的数量是:pte_num=32MB/8KB=4K。假设每个PTE是4Bytes,那么存放这些PTE一共需要的内存大小是:4Bytes X 4K=16KB。
4》假设OS在执行进程demo之前,给她分配的地址空间大小为6页(page size = 8KB),也就是48K。这48KB是连续的,其起始物理地址第0x801页,也就是{19'h801,13'h08}。所以其地址空间是0x801页,0x802页,0x803页,0x804页,0x805页,0x806页,共6页

本文详细介绍了MMU的产生原因及其工作机制,以OpenRISC-400系列中的or1200处理器为例,深入探讨了其MMU的特点、工作原理以及异常处理。or1200的MMU支持多种页大小,最多可支持三级页表,并具有强大的页保护机制。文章还分析了DMMU的寄存器配置,包括匹配寄存器和转换寄存器,并简要概述了DMMU的硬件模块dmmu_top和dmmu_tlb的功能。

944

被折叠的 条评论
为什么被折叠?



