2013-05-09 128 views
0

我们公司是STM32f4评估板(cortex M4F)的自豪拥有者, 我们收到另一块评估板(ARM7TDMI板)。评估板之间的性能差异

在开始迁移到ARM7评估板之前,我们想知道硬件是否足够强大,因此我们不会浪费任何时间来发现它。

我们的项目利用了许多DSP算法(利用FPU),大量使用SDIO和大约1 MB的内存。

所以,我在想这样做两个评估板下面的测试,看看它们之间的性能差异:

数学:加法,减法,除法,乘法,ABS和Sqrtf。它会运行我一个循环(只会使用浮点数)。 SDIO:在一个循环中读取/写入一个2千字节的缓冲区 内存:在循环中读取/写入外部和内部RAM。

在你看来,这个结果会给出性能差异的任何迹象,以及对“真实”项目期待什么?

感谢 迈克尔

+1

你应该尝试制作类似于真正的节目将要做的事情。如果可能的话。 – 2013-05-09 14:34:18

+0

或者用假数据运行真正的程序(以避免需要移植I/O)。但首先阅读这个不明身份替代部分的规格 - 并且船上是否有足够的内存? – 2013-05-09 15:26:12

+0

为什么*“当然大约1兆内存”*? – Clifford 2013-05-09 21:57:51

回答

3

我会建议对基于ARM7的任何新的设计 - 这是一个传统的ARM架构。您应该检查供应商的零件状态,并计划您计划设计的任何零件的过时。没有供应商正在发布基于ARM7的新设计。

我还建议,对于DSP算法,Cortex-M4的DSP特性比其浮点更重要。 ARM Cortex-M CMSIS包含一个利用此功能的DSP库。无论哪种方式,定点DSP算法都比使用浮点的效率高得多。

Cortex-M是一种效率更高的设计,ARM7实现了1.2 MHz DMIPS每MHz,而不到1.0 DMIPS每MHz。结合DSP指令,浮点和用于片上标志,RAM和外设的独立总线,使Cortex-M上的大部分代码显着加快。

Cortex-M架构定义了SYSCLK和中断控制器,在ARM7上这些是由芯片供应商定义的,各供应商之间的代码移植更加困难。

STM32F4xx器件运行频率高达180MHz;大多数ARM7器件都是60MHz或更低。

使用浮点执行比较几乎是毫无意义的。至少,浮点硬件将轻松胜过ARM7所需的软件浮点,其系数为5到10。除非您的应用程序能够应对性能下降,否则不适用于ARM7。但是,大多数应用程序不需要浮点。整数或定点算法的运行速度可能比软件浮点快5倍左右,因此与硬件浮点竞争。还请记住,Cortex-M4 FPU仅为单精度。

将Cortex-M3与Cortex-M4进行比较以测试应用程序对缺乏硬件FP和DSP支持的敏​​感性会更合理。

SDIO性能将受到SDIO接口和SD卡本身的限制(即使在相同的“速度等级”下,其性能差别很大) - 处理器本身的负载将非常低,如果您的应用程序正忙着等待而不是在等待SD卡时做一些有用的事情,那么大部分时间都在等待数据。 DMA传输的使用可能会使CPU负载或多或少可以忽略不计。

下图说明了与Cortex-M4相比,ARM7的定位方式。后者是更高的性能和更强的能力。在相同的时钟频率下,ARM9和ARM11之间的Cortex-M4站点在性能规模上。

ARM Processor Comparison

我不认为你需要执行,因为广泛的性能数据比较ARM7和Cortex M4任何基准测试已经上市。你可能做的是测量你现有应用程序在其当前平台上的CPU负载。如果它很低(可能是< 20%),并且它大部分时间都处于闲置状态,那么ARM7可能是可行的。当然,如果您的应用程序没有在RTOS或调度程序上运行并且有空闲任务,那么测量真正的CPU负载可能会很困难。

0

我会认为M4F将是一个更加能部分比古老的7TDMI处理器。我没有使用带有浮点协处理器的ARM7,并期望当你想要做浮点DSP时,M4F会更适合你的应用。

在硬件中具有浮点会加快处理速度,并可能通过减慢处理器时钟节省功耗。

我就不愿基于一个版本至少为10岁的ARM,开始了全新的设计

+0

那么,我列出的操作是最常用的操作,没有办法让我可以运行在皮层M4上运行的原始代码,而不需要大量修改,所以这是另一种选择。 是的,我意识到两个处理器之间的巨大差异,但它不是我的决定,我只提供信息,并且想知道这个测试是否足够 – Fluffy 2013-05-09 15:36:09