找回密码
 注册
搜索
查看: 957|回复: 2

[综合资料] DSP性能调整-高速缓存、DMA及软件架构

[复制链接]
发表于 2009-3-3 14:08:12 | 显示全部楼层 |阅读模式
应用开发通常开始于在个人电脑或工作站编写的C原型代码,然后将代码移植到嵌入式处理器中,并加以优化。这种层面的优化在系统级扩展到包括以下三方面的技术:内存管理,DMA管理,系统中断管理。这些优化措施与程序代码优化同样重要。在大多数系统中,有很多的数据需要传输,并需要很高的数据传输速率。因此,你最终会混合使用处理器中的所有存储器,如内部存储器和外部存储器。

Blackfin 的存储器体系

Blackfin的存储系统也提供一些“按钮”,以便开发者可以将其打开从而提高系统性能。我们将要讨论怎样才能最充分地利用这些“按钮”。Blackfin有三级存储结构。第1级(L1)存储器离内核最近,其工作速率为处理器的内核时钟频率(Blackfin典型频率为600MHz),并为指令和数据提供单周期存取操作。典型的L1存储器可存储几十KB,还可根据SRAM 或 cache进行调配。
芯片內部的第2级(L2)存储器位于芯片内部但离处理器内核较远。对该存储器中指令和数据的访问可能要用几个周期。芯片內部L2级存储器容量一般为几百KB,典型的有128KB和256KB芯片外部L2级存储器位于芯片外部,因此所提供的存取操作也最为耗时。它工作频率为系统时钟,该时钟频率通常为133MHz。但是芯片外部L2级存储器容量往往很大,典型的有几百兆字节。

中断处理

大多数嵌入式系统都含有中断,因此适当地处理中断非常重要。一般需要了解两个问题:每个中断服务程序耗费多少时间,以及一个中断服务程序是否正在阻止其他关键代码的执行。如果系统支持中断嵌套,例如能够中断一个正在执行的低优先权的中断,就还有必要知道如何实现最好的嵌套中断。
在Blackfin中,如果一个中断正在执行,其他中断默认是关闭的。然而,开发者可以通过将正在运行的中断服务子程序(ISR)的返回地址存入堆栈中来激活一个更高优先权的中断(即嵌套中断)。中断嵌套保证了优先权高的中断不会被优先权低的中断阻止。为了使这一过程更加简单,ADI公司提供了一个“回调管理器”,它能保证中断被的及时响应,且不会被阻止优先权高的中断。 与DMA优先权类似,Blackfin开发者也可以为中断指定优先权以满足开发需求。

存储器注意事项

首先讨论指令放置,也就是应该把写好的指令放在存储器的哪个地方?要尽可能地将程序代码放置在最快速运行的存储区中,当整个应用程序都能放置于内部存储器时,所有工作就变得十分简单。但遗憾的是,情况通常并非如此,很有可能要将程序代码配置在内部存储器和外部可通过缓存访问的存储器。
这一过程应如何入手处理呢?首先就是应该确定关键程序代码段的长度(以字节为单位),所谓“关键”,是指执行最频繁的程序代码子集。而利用软件仿真或程序代码评测工具是一个很好的办法,它可以确定哪部分程序代码执行最为频繁,这一部分程序代码应放入最快速的内部SRAM存储器(即L1存储器)。
ADI公司提供了一款名为PGO 链接器的配置工具,可以实现该功能。该工具在VisualDSP++开发环境下运行,实现了链接时间配置导引优化(PGO)。它能将应用程序的运行配置与程序优化技术结合起来,从而得到最有效的代码布局。程序代码被划分为越小的函数,该工具就越能灵活地将执行最频繁的程序放在最快的存储器。一种极端情况是,如果你的程序代码只包含一个函数,且大小超出了内部存储器容量,该工具只能将整个模块都放在外部存储器。
发表于 2009-4-11 15:54:10 | 显示全部楼层
不错吖
谢谢
点评回复

使用道具 举报

发表于 2009-5-7 09:39:21 | 显示全部楼层
[em02][em02][em02]
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-25 04:23 , Processed in 0.047950 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表