保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式系统中的CACHE问题


到RAM中。当CACHE中无可用空间时,一般使用最近最少使用算法(LRU)来决定哪一个CACHE项被替换。copyback模式提供了很高的系统性能,但是需要更多的一致性作保证。为了便于理解,给出一个使用了CACHE的系统的逻辑框图,如图1所示。
  
  该系统中两个地方会发生CACHE的不一致性:
  
  (1)数据CACHE/RAM
  
  数据CACHE与RAM之间的问题源于处理器和其他总线控制器对RAM的异步读写访问。DMA设备和其他总线控制器对RAM的访问是引起CACHE一致性问题的主要原因,这个问题可以通过在程序中加入一些代码来解决。
  
  (2)共享CACHELINE
  
  当一个CACHELINE被两个以上的线程共享时,也会产生一致性问题。当某个线程使一个CACHELINE无效时,这个CACHELINE中的一些项可能属于另外一个线程。这个问题也可以通过一定的方法来避免,只要在分配内存时大小是CACHELINE大小的整数倍即可。
  
  在哈佛体系结构、copyback模式和无软件干预的前提下,最佳的保持一致性的方法就是使用具有总线监听能力的硬件。将CACHE、RAM、DMA设备和其它所有的总线主控设备都连到一个物理总线上,以使CACHE可以对该总线上的总线交互过程进行监听,CACHE将对总线上的地址周期和控制(读/写)比特监听,数据周期则被延迟到需要时才进行。当CACHE中的一项被一个异步操作修改时,该CACHE项就会被标为无效。如果处理器对一个已经被标为无效的CACHE项进行访问时,CACHE就会从RA
  
  
  
  M中重新载入有效数据。在copyback模式下,处理器对CACHE进行写操作时,RAM相应地址中的内容就变成过时。如果另外一个设备想访问RAM中的这部分内容,CACHE就会抢占该访问周期,将有效的数据写入RAM。然后被抢占的访问周期重新开始并将读到RAM中的有效数据。但是,目前提供监听能力的板子并不多。
  
  3解决的方法
  
  根据上面的分析和讨论,可见问题正是由数据CACHE/RAM的不一致性引起的。虽然关掉CACHE就可以解决一致性的问题,并且能够减小程序开发的复杂度。但是一个高性能的系统是需要CACHE的,关掉CACHE会大大降低系统的性能。因此,本文仅讨论在程序中加入代码来克服一致性问题的方法。
  
  可以采用以下几种加入代码的方法来解决一致性的问题?本文使用WINDRIVER公司的嵌入式实时多任务操作系统VxWORKS,下面的函数都是VxWORKS提供的?:
  
  (1)对于时间上不是那么关键的程序段,可以先用下面的代码维护数据CACHE的一致性。
  
  cacheInvalidate?DATA_CACHE?address?bytes??
  
  /?输入缓冲区?/
  
  ...
  
  cacheFlush?DATA_CACHE?address?bytes??
  
  /?输出缓冲区?/
  
  (2)对于时间上比较关键的程序段?采用如下原则:在每次使用输出缓冲区前将其更新;在每次使用输入缓冲区前使其无效。
  
  将缓冲区标示为“non-cacheable”可以防止一致性问题,这需要MMU支持。在分配缓冲区时,将其标示为

《嵌入式系统中的CACHE问题(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/168813.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。