首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

关于cache一致性有关问题

2012-03-24 
关于cache一致性问题当程序进行下载、调试或者中断连接时指令cache和数据cache不同步,这些操作所产生的指令

关于cache一致性问题
当程序进行下载、调试或者中断连接时指令cache和数据cache不同步,这些操作所产生的指令这时候会被加载到数据cache,但不一定是指令cache,在这种情况下,会产生一致性问题。
  问:这是我翻译的一段话,对于数据cache,为什么在程序进行下载、调试、中断时会加载到指令呢?求解释。数据cache不是一直缓存数据么?

[解决办法]

探讨
太烂了,没人懂么?

[解决办法]
具体看一下上下文,究竟说的哪个方面cache flush.
 常见的是防止数据不一至 ram和cache要同步在一些情况,dma不能用cache的ram..... 这些都是程序可以控制的 要注意的,最常见的。

 另一种一般不必关心的,就是cpu本身对命令和数据的处理上,因为是流水作业,命令和数据有时要同步刷新,在作中断,调用时,如果用汇编,要注意跳转的处理, cpu本身会对这些情况进行相应处理,所以要处理好。 一般情况不用注意,除非你想了解cpu内部的设计。

 
[解决办法]
1)数据Cache用来存储使用频繁的变量和数据;如果cache满了,旧的变量/数据就被挤出cache,下次访问则要到RAM中去找了。另外,对数据Cache还有两种主动的操作:
“清空”(clean)--将脏数据回写RAM后,清空Cache。又称为刷回RAM;
“使无效”(Invalidate)--脏数据不回写RAM,弃掉Cache中的现有内容。

2)在loader或debugger指令时,指令仅仅作为是数据传递的结果,暂时出现在数据Cache中,没有指令的属性。因为,待运行的指令一定在指令存储空间或指令cache中。作为CPU来说,也不知道在数据cache中存有指令。所以,说:
The instructions resulting from these operations are loaded into the data cache,
意思不一定是 “指令跑到数据cache中”,而可能是指“指令运行的结果进到数据cache中”。

3)既然切换到完全不同的程序运行,数据cache中保存的变量和数据可能暂时用不上/或无用了,所以就刷回RAM/或者弃掉。 例如,那些脏的变量需要刷回去,临时数据可能会被无效而扔掉。

热点排行