嵌入式系统中的cache问题

嵌入式系统中的cache问题

ID:23953089

大小:49.00 KB

页数:5页

时间:2018-11-11

嵌入式系统中的cache问题_第1页
嵌入式系统中的cache问题_第2页
嵌入式系统中的cache问题_第3页
嵌入式系统中的cache问题_第4页
嵌入式系统中的cache问题_第5页
资源描述:

《嵌入式系统中的cache问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式系统中的CACHE问题

2、第1内容加载中...2问题的分析要解释这个问题,首先要了解CACHE的工作模式。CACHE的基本工作模式有两种:write-through模式和copyback模式。在write-through模式下,所有的写操作都写入CACHE和RAM,保证了CACHE和RAM的一致。然而,每次对RAM都有写操作会使处理器的处理能力降低,并且占用总线带宽。在copyback模式下,写操作只写入CACHE,不写入RAM,从而提高了处理器性能和总线带宽。copyback模式下,CACHE中的内容只有在需要的时候才写到RAM中。

3、当CACHE中无可用空间时,一般使用最近最少使用算法(LRU)来决定哪一个CACHE项被替换。copyback模式提供了很高的系统性能,但是需要更多的一致性作保证。为了便于理解,给出一个使用了CACHE的系统的逻辑框图,如图1所示。该系统中两个地方会发生CACHE的不一致性:(1)数据CACHE/RAM数据CACHE与RAM之间的问题源于处理器和其他总线控制器对RAM的异步读写访问。DMA设备和其他总线控制器对RAM的访问是引起CACHE一致性问题的主要原因,这个问题可以通过在程序中加入一些代码来解决。(2)共享CACHELINE当一个C

4、ACHELINE被两个以上的线程共享时,也会产生一致性问题。当某个线程使一个CACHELINE无效时,这个CACHELINE中的一些项可能属于另外一个线程。这个问题也可以通过一定的方法来避免,只要在分配内存时大小是CACHELINE大小的整数倍即可。在哈佛体系结构、copyback模式和无软件干预的前提下,最佳的保持一致性的方法就是使用具有总线监听能力的硬件。将CACHE、RAM、DMA设备和其它所有的总线主控设备都连到一个物理总线上,以使CACHE可以对该总线上的总线交互过程进行监听,CACHE将对总线上的地址周期和控制(读/写)比特监

5、听,数据周期则被延迟到需要时才进行。当CACHE中的一项被一个异步操作修改时,该CACHE项就会被标为无效。如果处理器对一个已经被标为无效的CACHE项进行访问时,CACHE就会从RAM中重新载入有效数据。在copyback模式下,处理器对CACHE进行写操作时,RAM相应地址中的内容就变成过时。如果另外一个设备想访问RAM中的这部分内容,CACHE就会抢占该访问周期,将有效的数据写入RAM。然后被抢占的访问周期重新开始并将读到RAM中的有效数据。但是,目前提供监听能力的板子并不多。3解决的方法根据上面的分析和讨论,可见问题正是由数据CA

6、CHE/RAM的不一致性引起的。虽然关掉CACHE就可以解决一致性的问题,并且能够减小程序开发的复杂度。但是一个高性能的系统是需要CACHE的,关掉CACHE会大大降低系统的性能。因此,本文仅讨论在程序中加入代码来克服一致性问题的方法。可以采用以下几种加入代码的方法来解决一致性的问题本文使用WINDRIVER公司的嵌入式实时多任务操作系统VxWORKS,下面的函数都是VxWORKS提供的:(1)对于时间上不是那么关键的程序段,可以先用下面的代码维护数据CACHE的一致性。cacheInvalidateDATA_CACHEaddre

7、ssbytes/输入缓冲区/...cacheFlushDATA_CACHEaddressbytes/输出缓冲区/(2)对于时间上比较关键的程序段采用如下原则:在每次使用输出缓冲区前将其更新;在每次使用输入缓冲区前使其无效。将缓冲区标示为“non-cacheable”可以防止一致性问题,这需要MMU支持。在分配缓冲区时,将其标示为“non-cacheable”即可。然而,动态缓冲区在释放时要标为“cacheable”,否则内存总会产生大量的缓冲区碎片。下面给出一个高性能的驱动程序例子,它把更新/无效的概念进行了扩展

8、。不是对整个CACHE系统,而是对每一个缓冲区都这样做。即通过分配对CACHE安全的缓冲区,在一个缓冲区的基础上操作,从而防止了不需要的更新/无效操作。在这个例子中使用了CACHE库中的函数cacheDMAMalloc,宏CACHE_DMA_INVALIDATE和CACHE_DMA_FLUSH实现一致性。在第4行调用函数cacheDMAMalloc后,如果指针返回为非空,则说明分配到了一块对于一致性问题来说是安全的缓冲区。第7行驱动程序在缓冲区中写入要传给外部设备的数据,在第9行准备传给外设之前,驱动程序必须更新数据CACHE以保

9、证要传的数据是在内存中,而不是在CACHE中。当驱动程序准备读外设传给内存的数据,在第13行驱动程序处理这些数据之前,必须使数据CACHE中对应于输入缓冲区的那部分无效以消除这些包含过时内容的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。