码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-10-02 15:02:14      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

  这里只是简单的介绍下 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的开启和关闭

标签:

原文地址:http://www.cnblogs.com/frank-yxs/p/5927460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!