如何实现Arm处理器ICache的测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现Arm处理器ICache的测试相关的知识,希望对你有一定的参考价值。
参考技术A 官方架构的cpu核心,现在大家比较熟悉的有ARMv7架构的Cortex-A5,A7,A8,A9,A12,A15,
ARMv8架构的Cortex-A53,A57,A72。
目前最新的手机大多采用A53之后的公版架构,A53的性能接近A15,A57的性能是A15的1.5被,A72的性能是A15的3.5倍,性能越来越强。
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闪烁频率要比第二次快很多的现象。
以上是关于如何实现Arm处理器ICache的测试的主要内容,如果未能解决你的问题,请参考以下文章
ARM中的异常中断是如何实现进入中断程序的,比如如何进入...