分类: 嵌入式
2012-04-13 21:30:37
比如2440,一个晶体震荡电路产生12M的时钟, 经过内部的PLL, 频率升到400M, 然后按照分频设置, 分出一个总线频率和外设频率。 总线频率最主要的是访问sdram总线接口的频率, 我们知道, 目前sdram最快的频率就是133M,所以为了正常访问sdram,总线频率不应该高于这个值, 那么400M的主频,可以3分频或者4分频。 新的芯片往往声称支持532M主频,或者其他频率,其实是基于133M的倍数来设计的。对于400M的2440, 可以使得总线频率工作中133M或者100M, 明显的,133M比较快, 正常使用可能感受不到这个差距, 如果拿tcpmp的benchmark之类的工具就会比较明显的看出性能差别。 如果所有的指令都是安置在内存的, 那么每执行一条指令都要从sdram取指, 这样的话主频再高也是没有意义了, 因为总线频率成为了瓶颈。 一种改善办法是使用DDR,使用更快的总线频率,266M以上。 还一种就是我们熟知的cache机制了。 上面这些, 你可能已经透彻了解了,但是,arm920t Technical Reference Manual手册第5章提到了另外的情况,我认为, 系统的工作时钟就是400M了, 总线就是133M了, 在arm920t,还有一个重要的因素决定。 就是协处理器p15的nF,iA。系统真正使用的是什么时钟,并不是理所当然的是FCLK 400M, 它有可能是133M哦。我就不贴图了,打开这个手册的108页看看那张图。 错误的配置会使得系统工作在频率133M,这平白损失了3/4的性能。 使用tcpmp之类的测试系统时钟的工具可以明确观察系统现在的频率,如果你的测试结果不是400M附近,而是是总线频率133M或者100M,那么就是这个问题造成的了。 |