如何实现高性能的DSP处理(上)
时间:05-13
来源:互联网
点击:
指令划分
指令划分(instructionpartitioning)通常比较简单。如果程序代码能容纳在内部存储器中,只需要关闭指令高速缓存,直接把程序代码映射到内部存储器就可以获得最大的效能。然而,多数应用程序代码不能全部容纳在内部存储器中,所以必须打开高速指令缓存。
高速缓存容量通常小于外部存储器,但这并不是一个问题,因为对于多数嵌入式软件,“通常20%的程序代码的运行时间占整个运行时间的80%”。大多数情况下,最耗时间的程序代码都很小,足够放置到高速缓存中,所以高速缓存器能够充分发挥其作用。
为了提高性能,还可以使用指令的线锁机制(line-lockingmechanism),锁定程序的最关键的部分代码。如需要进一步提高性能,可以关闭指令高速缓存并采用“存储器覆盖”的机制代替,该机制使用DMA将程序代码传输到一个存储器块,而同时在另一个存储器块上执行操作。
数据划分
数据划分通常没有指令划分那么简单。和程序代码划分一样,如果数据缓冲区可以被容纳在内部存储器中,你就没有多余的工作。如果不是,首要任务就是要区分静态数据(如用于查找表)和动态数据。数据高速缓存在静态数据方面使用较好,而DMA通常在动态数据方面性能更佳。
即使使用了数据高速缓存,也通常需要设立一个外设DMA传输通道,将数据从外设传输到外部存储器。如果采用了数据高速缓存,可以将这些数据读入到内部存储器,只要在访问数据前使高速缓存的缓冲区无效即可。如果正在使用DMA,则可以建立DMA传输,将数据从外部存储器读入到内部存储器。
相关阅读:如何实现高性能的DSP处理(下)
供稿:ADI公司
指令划分(instructionpartitioning)通常比较简单。如果程序代码能容纳在内部存储器中,只需要关闭指令高速缓存,直接把程序代码映射到内部存储器就可以获得最大的效能。然而,多数应用程序代码不能全部容纳在内部存储器中,所以必须打开高速指令缓存。
高速缓存容量通常小于外部存储器,但这并不是一个问题,因为对于多数嵌入式软件,“通常20%的程序代码的运行时间占整个运行时间的80%”。大多数情况下,最耗时间的程序代码都很小,足够放置到高速缓存中,所以高速缓存器能够充分发挥其作用。
为了提高性能,还可以使用指令的线锁机制(line-lockingmechanism),锁定程序的最关键的部分代码。如需要进一步提高性能,可以关闭指令高速缓存并采用“存储器覆盖”的机制代替,该机制使用DMA将程序代码传输到一个存储器块,而同时在另一个存储器块上执行操作。
数据划分
数据划分通常没有指令划分那么简单。和程序代码划分一样,如果数据缓冲区可以被容纳在内部存储器中,你就没有多余的工作。如果不是,首要任务就是要区分静态数据(如用于查找表)和动态数据。数据高速缓存在静态数据方面使用较好,而DMA通常在动态数据方面性能更佳。
即使使用了数据高速缓存,也通常需要设立一个外设DMA传输通道,将数据从外设传输到外部存储器。如果采用了数据高速缓存,可以将这些数据读入到内部存储器,只要在访问数据前使高速缓存的缓冲区无效即可。如果正在使用DMA,则可以建立DMA传输,将数据从外部存储器读入到内部存储器。
相关阅读:如何实现高性能的DSP处理(下)
供稿:ADI公司
- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 嵌入式线控驾驶系统开发过程中设计和测试考虑(02-02)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)