分配连续物理内存的原因

来源:互联网 发布:淘宝卖旧丝袜的暗语 编辑:程序博客网 时间:2024/05/12 20:17

在分配内存时,系统会尽量给我们分配连续的物理内存,这样有什么好处呢?我知道的有如下2条:

1、DMA不使用页表机制,因此必须分配连续的物理内存。
2、使用连续物理内存可以提高系统整体性能。

上面第1条很容易理解,我主要说明下第2条:
    在分页机制打开的情况下,系统访问内存的典型流程为:  

1、根据提供的线性地址访问系统TLB,看是否能够命中(hit)。
2、若访问TLB命中(hit),则可以直接得到线性地址对应的物理地址,执行步骤4;否则执行步骤3。
3、访问TLB未命中,则系统会读取内存中的页目录、页表,通过页目录、页表来把线性地址转换为对应的物理地址,同时利用淘汰算法把页目录、也表信息写入TLB以便以后快速进行地址转换。
4、系统用这个物理地址到系统cache(L1、 L2)中查找物理页。
5、如果在系统cache中找到物理页则直接读取或写入该物理页,如果没有则从物理内存中读取或写入同时利用淘汰算法将物理内存放入系统cache。

注意:以上的步骤可能会有一些并行性。

如果系统分配连续的物理内存,则对应的线性地址一般也是连续的,这样在多数情况下,连续的线性地址可以通过相同的页目录项、页表来转换成物理地址,这就提高了访问TLB的命中率,同时,连续的物理地址也可以提高系统cache的命中率。

补充:
以上讨论的系统访问物理内存流程是一种典型情况,在真实系统中,系统可能先访问系统cache(L1、L2)再访问TLB,这主要决定于系统cache(L1、L2)使用的地址是物理地址还是线性(虚拟)地址。若cache采用的是线性地址,则系统先访问cache再访问TLB;若cache采用的物理地址,则系统先访问TLB再访问cache。  


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gxfan/archive/2008/10/22/3122501.aspx