新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 如何实现高性能的DSP处理

如何实现高性能的DSP处理

作者:时间:2010-01-07来源:网络收藏

  DMA也可以与高速缓存联合使用。通常,DMA传输首先将高速外设中的数据读入到器的外部存储器,数据高速缓存则将数据从外部存储器读入到器内部。进行这种操作通常需要使用“乒乓”缓冲器,一个缓冲区用于数据传输,另一个用于数据,图2说明了这种操作方式。DMA控制器将数据传输到 buffer0时,处理器核则访问buffer1,反之亦然。


  图2:DMA和高速缓存联合使用时数据一致性的维护。

  当联合使用DMA和高速缓存时,维持DMA控制器读入的数据与高速缓存中数据的一致性是很重要的,图2说明了完成这一操作。当外设生成新的数据,DMA控制器则将数据放置在一个新的缓冲区,并产生中断,通知处理器核可以处理这些数据。当处理器核处理该缓冲区数据前,与该缓冲区相应的高速缓存行被设为无效,从而强制高速缓存从主存储器中取出数据,这样就可以确保一致性。这种方法主要的缺点是它不能达到单一DMA模型的性能,这里DMA控制器采用将缓冲区的数据直接读入内部存储器的模式。

  指令划分

  指令划分(instruction partitioning)通常比较简单。如果程序代码能容纳在内部存储器中,只需要关闭指令高速缓存,直接把程序代码映射到内部存储器就可以获得最大的效能。然而,多数应用程序代码不能全部容纳在内部存储器中,所以必须打开高速指令缓存。

  高速缓存容量通常小于外部存储器,但这并不是一个问题,因为对于多数嵌入式软件,“通常20%的程序代码的运行时间占整个运行时间的80%”。大多数情况下,最耗时间的程序代码都很小,足够放置到高速缓存中,所以高速缓存器能够充分发挥其作用。

  为了提,还可以使用指令的线锁机制(line-locking mechanism),锁定程序的最关键的部分代码。如需要进一步提,可以关闭指令高速缓存并采用“存储器覆盖”的机制代替,该机制使用DMA将程序代码传输到一个存储器块,而同时在另一个存储器块上执行操作。

  数据划分

  数据划分通常没有指令划分那么简单。和程序代码划分一样,如果数据缓冲区可以被容纳在内部存储器中,你就没有多余的工作。如果不是,首要任务就是要区分静态数据(如用于查找表)和动态数据。数据高速缓存在静态数据方面使用较好,而DMA通常在动态数据方面性能更佳。

  即使使用了数据高速缓存,也通常需要设立一个外设DMA传输通道,将数据从外设传输到外部存储器。如果采用了数据高速缓存,可以将这些数据读入到内部存储器,只要在访问数据前使高速缓存的缓冲区无效即可。如果正在使用DMA,则可以建立DMA传输,将数据从外部存储器读入到内部存储器。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭