SDRAM和重定位---icache的开启和关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDRAM和重定位---icache的开启和关闭相关的知识,希望对你有一定的参考价值。

  这里只是简单的介绍下 icache,对于 icache和 dcache 以后有时间再去深入研究下。dcache 主要和虚拟内存管理(MMU)相关。
  之所以会出现 cache,主要是为了解决 cpu 和 RAM之间的速度差异。通常来说 cpu 的主频很高速度非常快,但是内存ram的速度相对于cpu来说就慢了很多,这就导致系统整体的速度将会被拖慢。
  为了解决这个问题,就在 cpu 和 ram 之间加入一层cache。cache的特点就是容量小,速度比ram快,价格高。这样先将 ram 中的内容放到 cache 中(程序的局部性原理),然后cpu直接去读取 cache 的内容,这样就提高了系统的整体速度。
=======================================================
  根据s5pv210的数据手册,s5pv210中有32KB的 icache 和 dcache,而 icache 的开和关是由协处理器 cp15 的 c1 寄存器中 bit12 来决定的,当该位为 0 时,icache被关闭;当该位为 1 时,icache被打开。
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #2
mcr p15, 0, r1, c1, c0, 0
通过 led 闪烁的实验来验证 icache 的作用:
  • 做了两次实验,一次程序中将 icache 开启,另一次程序中将 icache 关闭,其他部分和第一次的程序完全一样。(并没有利用定时器,如果是利用定时器,应该不会有这种情况发生,学了定时器中断的时候去验证下
  • 两次的实验结果对比发现:第一次实验 led 闪烁的明显要快很多,而第二次实验 led 闪烁的要慢很多。
  • 分析原因:由于第一次开启了 icache,cpu会直接从 icache 中取指令执行,而第二次实验中关闭了 icache ,所以cpu是从SRAM中取指令执行,显然第一次的取指令速度要比第二次快,也就造成了 代码完全一样,但是第一次led闪烁频率要比第二次快很多的现象。
技术分享
 

以上是关于SDRAM和重定位---icache的开启和关闭的主要内容,如果未能解决你的问题,请参考以下文章

SDRAM和重定位---链接地址和运行地址

SDRAM和重定位---看门狗详解

最简单的bootloader的编写步骤

如何自动开启定位? [关闭]

Android 6.0 默认关闭定位和GPS,开启后默认选省电

tableView、视图层次结构和重绘的绝对定位