ARM之cache
一. 什么是cache
1.1. cache简介
a. Cache 即高速缓冲存储器,是位于 CPU 与内存之间的高速存储器,它的容量比内存小但交换速度快。
b. ARM处理器的主频为上百M甚至几G,而一般的SDRAM的存储周期是很慢的,相对于CPU来说,这时,如果我们把程序和数据都存储在SDRAM中,那么CPU在读取指令和数据的时候,就会受到SDRAM速度的限制,大大地制约了整个系统的性能。为了解决上面说的问题,当CPU在一段相邻的时间内反复访问相同的数据(时间局部性)或者CPU有很大概率访问相邻存储空间的数据(空间局部性)时,我们就可以使用Cache来优化CPU性能。
c. s5pv210 的MMU和Cache都集成在CP15协处理器中
d. s5pv210 内部有32KB icache和32kb dcache。icache是用来缓存指令的;dcache是用来缓存数据的。
1.2. cache工作原理
1.2.1. 当CPU 要访问 cache 时, CPU 送来主存地址,放到主存地址寄存器中。然后通过地址变换部件把主存地址中的块号 B 变成 cache 的块号b,并放到 cache 地址寄存器当中。同时将主存地址中的块内地址 W 直接作为 cache 的块内地址 w装入到 cache 地址寄存器中。如果地址变换成功(通常称为 cache 命中),就用得到的 cache 地址去访问 cache,从 cache 中取出数据送到 CPU 中。如果地址变换不成功,则产生 cache 失效信息,并且接着使用主存地址直接去访问主存储器
1.2.2. 工作原理总结:
a. 程序要读取内存中地址A数据,然后程序首先以地址A查找Cache,一开始Cache无数据,导致“cache miss”。
b. 程序以地址A查找内存,读取数据后,把数据填入cache,称为”cache fill“。
c. 程序再次读取内存中A地址数据,这次直接以地址A查找cache,读取数据后直接返回给CPU,不用再去操作内存。
d. 重复步骤1,周而复始,直到把cache填满(cache容量一般很小)。此时CPU再访问,就要发生cache替换,即把一些数据替换出去,填充新数据。
二. cached的使用
2.1. 在汇编启动代码中设置cache
mrc p15,,r0,c1,c0,; // 读出cp15的c1到r0中
bic r0, r0, #(<<) // bit12 置0 关icache
orr r0, r0, #(<<) // bit12 置1 开icache
mcr p15,,r0,c1,c0,;
参考文献《https://blog.csdn.net/toptp2017/article/details/79429974》
ARM之cache的更多相关文章
- ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析
ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析 题记:如果文章有理解不对的地方,欢迎大家批评指正,谢谢大家. 摘要:本文以Cortex-A53为例,首先分析Cach ...
- 操作系统下cache的几个概念
Cache是一种容量比较小,但访问速度比较快存储器.由于处理器的速度远高于主存,处理器直接从内存中存取数据要等待一定周期,而Cache位于处理器与主存之间,保存着最近一段时间处理器涉及到的主存块内容. ...
- 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)
Uboot_Kernerl_Add_Watch_Dog: U-Boot 2010.06 (Nov 01 2013 - 15:28:44) DRAM: 128 MiBCheck spi flash c ...
- u-boot 学习系列 1 - SPL
u-boot这个东西从自我N年前使用到现在,变化好多,今天开始重新研究下,本系列的研究都是基于BeagleBoneBlack(bbb)开发板和 u-boot v201801版本的. SPL介绍 在源代 ...
- u-boot v2018.01 启动流程分析 简单版(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_39655765/artic ...
- u-boot v2018.01 启动流程分析
https://blog.csdn.net/weixin_39655765/article/details/80058644#jump1 make smdkc100_defconfig 以被默 ...
- linux从head.s到start_kernelstart_kernel之---内核解压到重定位分析
一: arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息.符号 ...
- ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播
ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播 Cortex-A9的多喝CPU可以接收和执行一致性广播操作,当其使能并处于SMP模式 ...
- ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联
ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...
随机推荐
- (C#- 多线程) 在线程中创建object,共享问题。
研究如下问题: 1. 在一个进程的主线程中创建一个Object,其他线程都可以访问这个Object,并操作Object的方法. - 多线程同步问题. 2. 在一个进程的多个线程里面,每个线程都创建同一 ...
- (46)LINUX应用编程和网络编程之一Linux应用编程框架
3.1.1.应用编程框架介绍 3.1.1.1.什么是应用编程 (1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机.C高级.uboot和系统移植.linux应用编程和网络编程.驱动. ...
- bash配置文件
bash的配置文件 一.shell的两种登录方式: 1.交互式登录: (1)直接通过终端输入账号密码登录 (2)使用"su - UserName" 切换的用户 执行顺序:/etc/ ...
- Springboot 构建http服务,返回的http行是'HTTP/1.1 200' 无状态码描述 客户端解析错误
————————————————————————————————————————— *** 响应的数据格式 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 A ...
- THU-CCF WC2019两开花记
今年年初,清华大学举办的THUWC2019即将正式开启,我将继续扮演蒟蒻OIER,努力创造一个菜鸡的形象,THU-CCF WC两爆炸,笑掉各位大牙,大家多多关注. Day0 广州好热啊╰(‵□′)╯! ...
- bootstrap editable初始化后表单
function loadData() { var url = "${ctx }/sys/marketing/product/page"; $('#tablepager').boo ...
- 第五周课程总结&试验报告 (三)
课程总结 一,类的继承格式 1.在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 {} class 子类 extends 父类 {} ...
- 微信小程序 API 界面(1)
界面 有关屏幕的api 交互: wx.showToast() 显示消息提示框 参数:object object的属性: title:类型 字符串 提示的内容(文本最多7个汉字) icon:类型 字符串 ...
- 【后台管理系统】—— Ant Design Pro 项目爬坑(一)
1.表单rule中可以分对象处理不同规则 <FormItem label="类型名称" {...formLayout}> { form.getFieldDecorato ...
- 【python3】 抓取异常信息try/except
注意:老版本的Python,except语句写作"except Exception, e",Python 2.6后应写作"except Exception as e&qu ...