浅谈MMU(一)

来源:互联网 发布:网络114推广 编辑:程序博客网 时间:2024/05/18 21:09

浅谈MMU(一)

        分类:            PowerPC体系结构427人阅读评论(1)收藏举报

    MMU为Memory Management Unit,主要是负责EA(Effective Address)和PA(Physics Address)之间的转换。在现在的32位系统中,CPU的寻址空间为4GB,但是物理内存的大小却远远小于4GB,CPU生成的地址为EA,通过MMU可以找到Data或Instruction在物理内存中的位置,也就是PA。

    EA和PA之间的转换有三种:页表转换;块转换(BAT);平坦转换(EA和PA一一对应)。至于BAT和TLB hit的详细过程,会在以后的文章中介绍。这篇文章主要说的是TLB的reloader过程。

    在MMU中有TLB(快表)的存在,为了加快转换的速度。它将近期所使用到的转换规则存于其中,以便查找。

  (以下全部以Data为例,Instruction可以参考)

    CPU产生32位的EA后,将EA的0-19位入MD_EPN的0-19位,然后查找TLB的Entry,如果找到匹配的EA就发生TLB hit,那么就使用该TLB中缓存的规则找到PA。

如果找不到匹配的,就会发生TLB reloader去查找存储在内存的某个特定区域的转换表(Tablewalk)。具体的过程如下:

    MD_EPN的第0-9位写入M_TWB的第20-29位,MD_EPN的第10-19位写入MD_TWC的第20-29位。M_TWB的0-19位为第一级表的基地址,是固定的,第30,31位为0.所以M_TWB的内容为:

                  level-1

    它是一个指针,指向的内存区间里存储的是第一级Descriptor。取这个Descriptor的0-19位放入MD_TWC的0-19.MD_TWC的20-29为EA的10-19,30 31位为0.所以MD_TWC的内容为:

                    level-2

    它也是一个指针,指向的内存区间里是第二级Descriptor。取这个Descriptor的某些位数(具体见下图)和EA相应的最后几位合成最后的PA,并将第二级Descriptor写入MD_RPN(TLB entry)。这样整个TLB reloader的过程就结束了,再次查找TLB会发生TLB hit。整个TLB reloader的过程如下所示:

        whole

    还有一个小的问题:为什么M_TWB和MD_TWC的最后两位都是0,因为内存当中的Descriptor都是32位的,所以从倒数第3位开始递增,正好是4字节4字节的变化。

原创粉丝点击