测试 cache hit ratio 的时候可以用while(1);函数来代替 100% hit ratio 吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
测试 cache hit ratio 的时候可以用while(1);函数来代替 100% hit ratio 吗?
那么0% cache hit ratio 应该如何测量呢? 这个芯片的cache 是无关闭的
我覺得以下順序機器代碼將有0%的命中率。
3C04 m0: jmp m1
4303 nop
4303 nop
4303 nop
4303 nop
3C04 m1: jmp m2
4303 nop
4303 nop
4303 nop
4303 nop
3C04 m2: jmp m3
4303 nop
4303 nop
4303 nop
4303 nop
3C04 m3: jmp m4
4303 nop
4303 nop
4303 nop
4303 nop
3C04 m4: jmp m5
4303 nop
4303 nop
4303 nop
4303 nop
3FE6 m5: jmp m0
4303 nop
4303 nop
4303 nop
4303 nop
那就是这段代码全部都是跳转指令的话就完全不会进入cache里面进行运行了?
MCU这个预读取机制非常简单直接,是否能够hit和编译器生成的代码和cache的大小有关,所以如果你的跳转超出了范围,那就是完全无法hit。如果你的下一条指令总是在接下来的cache大小范围内,那就总是能hit.
楼上给出的程序是否能够进行 0% cache hit ratio 的测量呢?
楼上的代码,你看到的是汇编的结果。你自己的话可以用汇编语言做这样的函数比较方便,因为用label直接指定地址比较方便,用c语言和link script也可以指定函数的地址。只要保证这些跳转(函数的调用)之间的地址(距离),超出了cache的大小,就能做到0%的hit ratio.