OpenRisc-40-or1200的MMU模块分析

引言MMU(memory management unit),无论对于computer architecture designer还是OS designer,都是至关重要的部分,设计和使用的好坏,对性能影响比较大。MMU,我觉得是硬件和软件配合最密切的部分之一,对于RISC CPU而言,更是这样。前面,我们对or1200的整体memory hierarchy做了简单分析,了解了cache
摘要由CSDN通过智能技术生成

引言

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页。

既然其进程空间是48KB,每页是8K,也就是说OS需要给demo进程生成6个PTE(page table entry,页表项)。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值