微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 问个CPU的data cache问题

问个CPU的data cache问题

时间:12-12 整理:3721RD 点击:

  不知道,我以前用的MCU不带MMU,我的问题就是在cache往memory回写的过程中,
  比如会不会被别的中断打断导致cache的副本和memory一致性破坏了。然后volatile
  是否会避免这种情况出现。
     貌似你的说法是no.那么volatile只能防止一种,就是寄存器副本和memory的非
  一致性,而这种非一致性都是因为中断导致。
    实际上多线程本质也是中断切换。
    所以volatile用于中断服务程序和其他程序直接共享变量标记,或者多线程(其实
  也是多中断服务程序系统)。
    我这样理解对否?
    
    那么CACHE和MEMORY之间的一致性是没有可能被中断破坏的了?是属于元操作?

  今天又仔细想了一下你这段解释比较贴切。volatile只是给编译器看的。
  embedded的拿来干这干那,就是怕编译器优化程度高换机器代码的时候
  搞破坏。但是也不是绝对保险的。
    volatile本意是给编译器工程师们看的,被EMBEDDED工程师拿来当存储
  保护用。难不成按照你这么说,其实用C去写EMBEDDED实际上不是很保险。
   尤其是优化级别高的时候。这样很危险啊。擦擦擦

http://en.wikipedia.org/wiki/Volatile_(computer_programming)
https://software.intel.com/en-us/blogs/2007/11/30/volatile-almost-useless-fo
r-multi-threaded-programming
随手搜了两个,好像说得还挺清楚
cache对用户是透明的,只是为了提高performance的一种存在
片上片下一级二级若干级种种材质皆可以
cache一致性是由cpu本身来保证的,不是用户操心的
没有一样用啊,就是慢
现成的cpu, 你研究cache作甚?
利用cache的三大法宝,locality , locality, locality!

.56

怎么成不保险了,你得写对了...
.56

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top