ARM芯片开发学习(S5PV210)——icache、dcache介绍和如何开关icache

什么是icache、dcache

cache是高速缓冲存储器,icache(instructions cache)是指令高速缓冲存储器,dcache(data cache)是数据高速缓冲存储器。存储介质的基本规律是读写速度越快单位存储容量的价格就越高,为了平衡存储速度和价格,计算机的采用分级的存储系统,按照读写速度由快到慢:CPU->寄存器->cache->内存->外存。其中寄存器是在集成到Soc内部的,直接和CPU交互数据,数量有限;在性能高一些的计算机中,cache是可以采用多级的;内存一般是RAM,外存可以是磁盘、flash等。其中icache和dcache就是属于cache,icache用于缓存指令,dcache用于缓存数据。icache和dcache的作用是提高系统性能。比如:CPU一次只能处理一条指令,如果执行完一条指令去内存取一条指令,那CPU会频繁读取内存,但是内存的速度远远小于CPU的执行速度,这样会限制CPU的运行速度。有了icache后,可以一次性将要执行的指令和该指令邻近的指令都读取到icache缓存起来,要执行指令时先去icache中查找,没有找到再去内存中读取,只要保证命中率比较高,就可以有效减少CPU读取内存的次数;dcache也是同样的原理,把最近用到的数据缓存起来。这其中涉及到程序的空间局部性原理和时间局部性原理。

什么是协处理器

ARM有多达16个协处理器,主要的作用:ARM处理器初始化,ARM与协处理器的数据处理操作,ARM的寄存器与协处理器的寄存器之间传送数据,以及ARM协处理器的寄存器和存储器之间传送数据。其中CP15 —系统控制协处理器 (the system control coprocessor)通过协处理器指令MCR和MRC提供具体的寄存器来配置和控制caches、MMU、保护系统、配置时钟模式(在bootloader时钟初始化用到)。对于协处理器数量多,功能复杂,我们用到什么功能就去查询相关协处理即可。

怎么开关icache

示例代码:

 mrc p15,0,r0,c1,c0,0;   // 读出cp15的c1到r0中
 bic r0, r0, #(1<<12)   // bit12 置0  关icache
 orr r0, r0, #(1<<12)   // bit12 置1  开icache
 mcr p15,0,r0,c1,c0,0;

代码解析:

ARM处理器的icache是由cp15协处理的c1寄存器的bit 12控制,想要开关icache就是去操作cp15协处理的c1寄存器,采用经典的“读改写”三部曲
1.用mrc命令将cp15的c1寄存的值读取到ARM处理的r0寄存器(这里的r0是代表ARM处理器的可用寄存器,用其他的寄存器也可以);
2.修改r0寄存器的bit 12的值,0是关,1是开;
3.用mcr将r0的值写回c1。这样就完成了对c1寄存器bit 12的改写,从而实现开关icache。

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值