cached地址和uncached地址的区别
来源:互联网 发布:喵喵机 知乎 编辑:程序博客网 时间:2024/06/02 02:24
原文地址::http://blog.csdn.net/linuxandroidwince/article/details/7638318
相关文章
1、WinCE OAL中的Memory函数介绍----http://blog.csdn.net/nanjianhui/article/details/4038734
2、关于WinCE驱动编写时的IO地址映射----http://blog.csdn.net/backstrokefish/article/details/376201
3、wince内存管理----http://wenku.baidu.com/link?url=QNMt18KvpLpqE-oRQjgqThAMcDnQwff3gY2B23aefLR4UphhXvMFuR3iXcWUW71vvEqiMDpi_sAO9K5dITjIRsaAnjzp7OtTnBnjlMKS9v7
4、2008年最后一帖——了结MMU和cache(顺便纠正以前的错误)----http://bbs.csdn.net/topics/290087801
cached地址和uncached地址的区别是,对cached地址的访问是委托给CPU进行的,也就是说你的操作到底是提交给真正的外设或内存,还是转到CPU缓存,是由CPU决定的。CPU有一套缓存策略来决定什么时候从缓存中读取数据,什么时候同步缓存。对unchached地址的访问是告诉CPU忽略缓存,访问操作直接反映到外设或内存上。 对于IO设备一定要用uncached地址访问,是因为你的IO输出操作肯定是希望立即反映到IO设备上,不希望让CPU缓存你的操作;另一方面,IO设备的状态是独立于CPU的,也就是说IO口状态的改变CPU是不知道,这样就导致缓存和外设的内容不一致,你从IO设备读取数据时,肯定是希望直接读取IO设备的当前状态,而不是CPU缓存的过期值。 一般只有对主内存的访问才用cached地址,因为内存里的数据一般是通过CPU来改的,它不会自己变,所以CPU知道什么时候可以用缓存代替内存,什么时候应该同步。当然一个重要的例外是DMA,DMA显然也会不通过CPU而改变内存数据。也就是说,DMA在内存和内存之间,或者内存和外设之间搬运数据时,也会导致缓存和内存数据的不一致。这个不一致可以由硬件方法或软件方法解决,硬件方法是说DMA搬运数据时自动通知CPU把相关缓存设为无效,软件方法是程序员要在启动DMA前自己清缓存。
- cached地址和uncached地址的区别
- cached地址和uncached地址的区别
- cached地址和uncached地址的区别
- 关于 Cached Physical Memory 和 Uncached Physical Memory
- MAC地址和IP地址的区别
- MAC地址和IP地址的区别
- 逻辑地址、线性地址、物理地址和虚拟地址的区别
- 逻辑地址、线性地址、物理地址和虚拟地址的区别
- 指针和地址的区别
- Linux Buffers和Cached的区别
- Linux Buffers和Cached的区别
- Linux Kernel: buffers和cached的区别
- Win CE/Mobile Physical/Virtual cached/uncached
- IP地址和MAC地址的区别与联系
- 内核逻辑地址和内核虚拟地址的区别
- MAC地址和IP地址的区别与联系
- 网关IP地址和IP地址的区别
- 物理地址、虚拟地址和逻辑地址之间的区别
- 联想MIDH部门多高管调整 部门将改名
- 第四周作业——图的表示
- Java Socket编程 标准范例(多线程)
- 核雕易裂五个原因
- 用GDB调试程序(二)
- cached地址和uncached地址的区别
- 一个号的web前端工程师要懂什么
- android手机获取手机号
- Bootstrap-Modal
- there is no action mapped for namespace / and action
- 如何用一个makefile编译多个目标
- C# 实现保留两位小数的方法
- C++类型转换关键字(*_cast)
- matplot 多图、LaTeX 格式