MMU、Icache、Dcache
http://blog.csdn.net/iodoo/article/details/8954014
i-cache(instruction cache)是指令高速缓冲存储器。 Cache存储体:存放由主存调入的指令与数据块.
dcache(data cache):数据高速缓冲存储器
CACHE:Cache是一种特殊的存储器,它由Cache 存储部件和Cache控制部件组成。Cache 存储部件一般采用与CPU同类型的半导体存储器件,存取速度比内存快几倍甚至十几倍。而Cache 控制器部件包括主存地址寄存器、Cache 地址寄存器,主存—Cache地址变换部件及替换控制部件等。
MMU 负责地址映射,将CPU中虚拟地址VA映射到物理地址PA,CPU 启动时,默认是不开启MMU的,因此,需要有一段代码来开启MMU。
这段代码有个条件是,所处的地址,虚拟地址必须等于物理地址。否则,映射之后,PC 中的地址会当做虚拟地址处理,寻址就会读取到其他不确定地方的数据。
与在汇编的层面来看,地址就是存储地址,不会当做数据;而C语言中的变量地址,则会当做数据;这一点编译器会自动处理而不用关心。
单核处理器,使用Dcache 只存在一个问题,即与 DMA 会数据不一致的问题。
CPU 读取 RAM 数据,如果 Dcache 命中,则读取 Dcache 中的值,未命中则读取 RAM 中的值。写数据时,有两种方式: write through 和 write back。
write through 方式:CPU 将数据同时写回到 Dcache 和 RAM 中,这个过程与不开 Dcache 消耗的时间一样。
write back 方式: CPU 将数据写到 Dcache 中,并将该数值标志为 dirty, 当 Dcache 释放该数据时,将值写回到 RAM 中。这个过程是比较快捷的。
DMA 通常负责外设与 RAM 的通信,是不经过 CPU 的。
当 DMA 修改 RAM 中的数据时,CPU 是不知道的。
MMU、Icache、Dcache的更多相关文章
- GNU 关闭 MMU 和 Icache 和 Dcache
1. cp15 寄存器 disable Icache 和 Dcache . disable_MMU: MCR p15,0,r0,c7,c7,0 MRC p15,0,r0,c1,c0,0 bic r ...
- 为什么CPU缓存会分为一级缓存L1、L2、L3?有什么意义?
https://baijiahao.baidu.com/s?id=1598811284058671259&wfr=spider&for=pc 简介:CPU缓存是CPU一个重要的组成部分 ...
- Ext FileSystem Family、Ext2、Ext3
catalog . 简介 . Ext2文件系统 . Ext3文件系统 . 小结 1. 简介 VFS虚拟文件系统接口和数据结构构成了一个框架,各个文件系统的实现都必须在框架内运转,但这并不要求每个文件系 ...
- 进程、线程、轻量级进程、协程与 go 的 goroutine【转载+整理】
本文内容 进程 线程 协程 Go 中的 goroutine 参考资料 最近,看一些文章,提到"协程"的概念,心想,进程,线程,协程,前两个很容易,任何一本关于操作系统的书都有说,开 ...
- 转:内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages
在内核模块中申请分配内存需要使用内核中的专用API:kmalloc.vmalloc.kzalloc.kcalloc.get_free_pages;当然,设备驱动程序也不例外;对于提供了MMU功能的处理 ...
- 进程、线程、轻量级进程、协程和go中的Goroutine
进程.线程.轻量级进程.协程和go中的Goroutine 那些事儿电话面试被问到go的协程,曾经的军伟也问到过我协程.虽然用python时候在Eurasia和eventlet里了解过协程,但自己对协程 ...
- 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
有不少人问到:flash连接CPU时,根据不同的数据宽度,比如16位的NOR FLASH (A0-A19),处理器的地址线要(A1-A20)左移偏1位.为什么要偏1位? (全文有点晦涩,建议收藏本文对 ...
- cpu_ops、suspend_ops、arm_idle_driver以及machine_restart/machine_power_off到底层PSCI Firmware分析
在内核中针对的cpu的操作,比如arm_cpuidle_init.arm_cpuidle_suspend.boot_secondary.secondary_start_kernel.op_cpu_di ...
- Linux 文件系统(一)---虚拟文件系统VFS----超级块、inode、dentry、file
转自:http://blog.csdn.net/shanshanpt/article/details/38943731 http://elixir.free-electrons.com/linux/v ...
随机推荐
- GlusterFS集群文件系统概述
http://blog.csdn.net/zonelan/article/details/8468383 1. GlusterFS概述 GlusterFS是Scale-Out存储解决方案Gl ...
- ajax调用服务的基本格式
<个人积累,转载请注明出处> 格式如下: $.ajax({ type: "post", //访问WebService使用Post方式请求 url: "http ...
- CBQW ---分组表单展示
工作流审核表单后,将表单信息展示页面中. Rest读取展示 展示方式有2 一. CBQW内容查询, 通过CBQW内容查询.分别通过设置itemstyle和header xsl ...
- android 权限总结
1.拨打电话要权限 2.sd目录存东西要权限
- 14_CXF发布REST服务
[rest服务] REST服务是一种软件架构模式,只是一种风格.REST服务采用HTTP做传输协议. REST对于HTTP的利用分为以下两种: 一.资源定位 REST要求对方资源定位更加准确,如下: ...
- bzoj1016:[JSOI2008]最小生成树计数
思路:模拟kruskal的过程,可以发现对于所有权值相同的边,有很多种选择的方案,而且权值不同的边并不会相互影响,因为先考虑权值较小的边,权值比当前权值大的边显然不在考虑范围之内,而权值比当前权值小的 ...
- OpenJudge 2739 计算对数
1.链接地址: http://bailian.openjudge.cn/practice/2739/ 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 给定两个正整数a和b.可 ...
- Linux中的简单命令
history:打印你输过的命令 1.用户在shell中输入的命令会自动保存到内存缓冲区 2.在退出shell的时候,内存中的数据会刷新到磁盘文件:~/.bash_history ...
- js中的in-for循环
<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...
- bootstrap table 行号 显示行号 添加行号 bootstrap-table 行号
思想:借助bootstrap-table 本身的index属性, 巧妙的的通过formatter 实现 { field: 'Number', title: 'Number', formatter: f ...