如何实现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汇编指令的调试?

ARM中的异常中断是如何实现进入中断程序的,比如如何进入...

Verilog基础计算机体系架构ITCM和ICACHE对比(面试常问)

OR1200指令Cache使用举例

OR1200中指令Cache的结构

ARM中断深入分析几点