免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 南海一钓叟
打印 上一主题 下一主题

那为大侠给俺讲讲cache和volatie变量的关系 [复制链接]

论坛徽章:
0
91 [报告]
发表于 2012-03-27 14:28 |只看该作者
sirouni 发表于 2008-03-02 18:29
Do you volatile? should you?

by Dr. Kevin P. Dankwardt


  写的很好,拜读了。。

论坛徽章:
0
92 [报告]
发表于 2013-11-08 11:03 |只看该作者
回复 3# zx_wing
您好,那能举例说明一下什么时候该用volatie修饰变量吗???


   

论坛徽章:
0
93 [报告]
发表于 2013-11-08 11:36 |只看该作者
回复 74# RobinsonNie
你好,我有一个问题请教一下,
在一个单进程,单线程的程序中,
如果一个变量A,没有被volatie修饰,
在变量A被该程序修改后,
后面的程序时如何保证,看到A的值是被修改后的值。编译器是怎么做到的??


   

论坛徽章:
0
94 [报告]
发表于 2013-12-03 15:18 |只看该作者
mark,学习了

论坛徽章:
0
95 [报告]
发表于 2014-01-03 16:41 |只看该作者
cache同步主要是用于DMA之类的,是CPU与外设都存在读写内存单元的问题
而volatile声明的变量,都是CPU在操作,cpu读写总是经过cache这一层(开或没开cache都将cache看成一层),数据不需要与外设同步

论坛徽章:
0
96 [报告]
发表于 2014-01-09 22:43 |只看该作者
感觉自己现在掌握的东西弱爆了,向前辈们看齐。。。

Mark!

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
97 [报告]
发表于 2014-01-10 09:15 |只看该作者
CU已经不是以前那个CU了,CSDN还是CSDN。

论坛徽章:
0
98 [报告]
发表于 2015-01-29 16:14 |只看该作者
哎。。如果写过嵌入式driver的话。根本不会被这个问题所困扰,如果你不用volatile的话,你的driver根本不可能正常工作。
就以简单的NAND flash的驱动为例。打个比方某个操作(写,读,擦除),需要往CMD 寄存器连续写入两个命令,这儿简化为0X1,0X2。
0X1->CMD
0X2->CMD

如果你不用volatile的话,就像上面所提到的。就会直接被优化为
0X2->CMD

连最基本的功能都不会ok的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP