ARM芯片开发学习(S5PV210)——icachedcache介绍和如何开关icache
Posted 代二毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM芯片开发学习(S5PV210)——icachedcache介绍和如何开关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。
以上是关于ARM芯片开发学习(S5PV210)——icachedcache介绍和如何开关icache的主要内容,如果未能解决你的问题,请参考以下文章