完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、什么是Cache Cache是一种容量比较小,但访问速度比较快存储器。由于处理器的速度远高于主存,处理器直接从内存中存取数据要等待一定周期,而Cache位于处理器与主存之间,保存着最近一段时间处理器涉及到的主存块内容。在需要读取数据是,处理器可能就会从Cache中读取需要的数据,而不是从主存中获取数据,这样就提高了系统的运行效率。 二、ARM处理器的Cache ARM处理器支持Cache机制,并将Cache分开为I-Cache(指令缓存)和D-Cache(数据缓存)。系统刚上电时,I-Cacche中的内容是无效的,并且I-Cacche的功能也是关闭的,CP15协处理器的SCTLR寄存器(系统控制寄存器)的bit[12]控制I-Cache的打开和关闭。I-Cache关闭时,CPU每次取指令都要读主存,所以性能比较低。因此应该尽快打开I-Cache。同样,系统刚上电时, D-Cache中的内容是无效的,并且D-Cache的功能也是关闭的,SCTLR寄存器的bit[2]控制D-Cache的打开和关闭。因为D-Cache必须在开启MMU(内存管理单元)后才能使能,而本程序并不打算开启MMU,所以这里我们不是能D-Cache,只研究I-Cache。 三、Cache测试 我们使用Exynos4412处理器开发板,该处理器采用32nm制程,拥有四枚主频可达1.4 GHz的Cortex-A9通用处理核心,拥有32 KB I- Cache和32 KB D- Cache,1 MB L2 Cache。以下是I-Cache的测试代码,如下: .section .text .globl _start _start: ldr r0, =WTCON mov r1, #0 str r1, [r0] mrc p15, 0, r0, c1, c0, 0 /* orr r0, r0, #0x1000 @enable ICache */ bic r0, r0, #0x1000 @Disable ICache mcr p15, 0, r0, c1, c0, 0 ldr r0, =GPF3CON ldr r1, =0x10000 str r1, [r0] led_flash: ldr r0, =GPF3DAT mov r1, #0x10 str r1, [r0] bl delay mov r1, #0x0 str r1, [r0] bl delay bled_flash delay: cmp r0, #0 subne r0, r0, #1 bne delay .end 将该程序放到Exynos4412开发板上测试,先使能I-Cache,再关闭I-Cache,观察LED灯闪烁的频率变化。我们能够发现,使能I-Cache灯的闪烁频率比较高,关闭I-Cache闪烁频率低,这说明处理器执行过的指令被I-Cache缓存,当处理器再一次执行该指令时,处理器只需要从Cache中取出需要的指令,而不再需要访问主存储器,不必等待一段时间,从而提高了系统的效率。 |
|
相关推荐
|
|
|
|
|
|
|
|
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
649 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2232 浏览 1 评论
768 浏览 0 评论
1525 浏览 1 评论
2271 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 23:31 , Processed in 0.522800 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号