第21课.cache和MMU

Posted huangdengtao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第21课.cache和MMU相关的知识,希望对你有一定的参考价值。

1.Cache概述

Cache实际上也是一块存储空间,最大的优点就是速度快.CPU和SDRAM通信速度慢,取指令,读写数据都需要等待,所以中间出现了一个Cache用来解决这个问题.

程序具有局部性的特性,cache就是利用这种局部多次访问的特性,将指令或者数据暂存一份到Cache中,下次访问速度上就会提高很多.
    时间局部性:在同一段时间里,有极大的概率访问同一地址的指令或数据
    空间局部性: 有极大概率访问到相邻空间的指令/数据
当使用Cache的时候,CPU假设需要读取A的内容,实际上回缓存大于A地址的内容,会缓存A到Cache Line大小的内容到Cache中.Cache Line可以简单的理解为CPU Cache中的最小缓存单位。2440中这个单位是32字节.

2.DCache和Write buffer

技术图片

技术图片

技术图片

3.协处理器指令

技术图片

这里C7中不同的寄存器,对应的是不同的功能

CP15协处理器指令
技术图片

CP15的R1寄存器是控制寄存器

技术图片

Register 7
技术图片

4.MCR和MRC

技术图片

技术图片

技术图片

5.ICache代码分析

enable_icache:
    /* 设置协处理器使能icache */
    mrc p15, 0, r0, c1, c0, 0
    orr r0, r0, #(1<<12)  /* r0 = r0 or (1<<12) */
    mcr p15, 0, r0, c1, c0, 0   //吧修改好的r0写给cp15的c1寄存器
    mov pc, lr    /* 修改完后,返回

*/

注意:只有当MMU启动时才能使用DCache,ICache的使用不需要开MMU

6.MMU简介

内存管理单元简称MMU。它负责虚拟地址(VA)到物理地址(PA)的映射,并提供硬件机制的内存访问权限检查
没启动MMU时,CPU,Cache,MMU外设等所有部件使用的都是物理地址
启动MMU后,CPU对外发出虚拟地址VA,VA被转换为MVA供Cache,MMU使用,在这里MVA被转换为PA,最后使用PA读写实际设备
注:
    启动MMU后,CPU看到的,用到的都是VA。![](https://img2018.cnblogs.com/blog/1557439/202002/1557439-20200207111514198-1875007790.jpg)

7.一级页表的描述符格式

技术图片

MMU访问权限控制
    CP15    C2[14:31]    页基址
    CP15    C3[0:31]     域控制
    CP15    C1           ICache、DCache、MMU控制开关
注:
    "域"决定是否对某块内存进行权限检查。S3C2440有16个域CP15寄存器C3中每两位对应一个域
    "AP"决定如何对某块内存进行权限检查

8.内存的访问检查权限

技术图片

技术图片

其中S、R是有CP15的C1进行控制的

以上是关于第21课.cache和MMU的主要内容,如果未能解决你的问题,请参考以下文章

26.核心初始化之关闭MMU和cache

JZ2440 裸机驱动 第7章 内存管理单元MMU

cache mmu

"arch/arm/kernel/head.S"里面一点片段的理解

PowerPC E500 MMU详解

MMU