3
$\begingroup$

Does anyone know where there are any benchhmark timings for the DSP functionality in the ARM CMSIS V2 running on a Cortex-M4 processor. I am trying to work out whether this processor is powerful enough to meet my requirements, and to compare it to other microcontroller devices with DSP extensions.

edited to add

I will add a little background. I have an existing product that uses an old and relatively expensive DSP. I have been looking at alternative processors including the Renesas MX and ARM M4 both of which have MACC type instructions. There are benchmark figures for the supplied Renesas libraries that are of the form the x-point FFT at Y MHz takes Z ms, The FIR filter with W coefficients takes Vms etc. I was hoping that there were figures somewhere for the ARM library.

Attempting to evaluate the performance of a number of target platforms myself will be extremely expensive in tools (different compiler for each target), development boards and implementation time.

$\endgroup$
  • $\begingroup$ Can you link to a datasheet or description of the DSP functionality this part has? Maybe one of us could hazard some comparisons with other architectures. $\endgroup$ – Martin Thompson Sep 12 '11 at 15:15
  • $\begingroup$ I'm pretty sure there are Linpak benchmarks for all Cortex processors. $\endgroup$ – Phonon Sep 13 '11 at 18:05
  • $\begingroup$ @Phonon - Do you mean 'all Cortex-A processors'? Neither Cortex-M0 nor -M3 have hardware floating point, so a Linpak benchmark would be pretty meaningless for those processors. $\endgroup$ – Kevin Vermeer Sep 22 '11 at 14:10
  • $\begingroup$ Relevant meta discussion $\endgroup$ – Lorem Ipsum Sep 22 '11 at 22:46
2
$\begingroup$

You're best off looking one level up, at datasheets or published benchmarks for actual devices that are available. One notable manufacturer of Cortex-M4 parts is Freescale. The Cortex-M4 is just a processor core design that is licensed by silicon manufacturers as the basis for their microprocessors. Each manufacturer designs their own peripherals and memory architecture and stitches them together with the core design. Therefore, what you might get from a core-level benchmark is the number of cycles required to execute your algorithm implemented in assembly.

What this doesn't capture are implementation-specific issues that can affect performance, such as memory latency, interrupt response latency, etc. These quantities will vary from manufacturer to manufacturer (and in some cases, across devices in a single family). Therefore, you really need to take the entire microprocessor into account if you're looking to do something that is pushing the envelope of what the chip might be capable of.

Even better: you can often find low-cost development kits for ARM processors (examples for Freescale's Cortex-M4 family). With that in hand, you can get a very good feel for how performant your algorithm will be once implemented in-system.

$\endgroup$
  • $\begingroup$ I have been through the Freescale website at length, including their presentations, and have not found anything. NXP also have M4 parts in the pipeline (Nothing there either) and I have heard that ST are also doing an M4 but no data yet. $\endgroup$ – uɐɪ Sep 20 '11 at 7:04
  • 2
    $\begingroup$ Yeah, I'm surprised how long it's taken the M4 to come to market. It has impressive-sounding specifications, but the parts have been slow to actually appear. If it's really important, you might try inquiring with the various manufacturers' sales departments. They will provide varying levels of help as a function of your stated annual volume. $\endgroup$ – Jason R Sep 20 '11 at 13:13
2
$\begingroup$

I have made a benchmark on a Freescale K70 (Arm Cortex M4 120MHz) at https://community.freescale.com/thread/327833

Poul-Erik.

$\endgroup$
  • $\begingroup$ Link now broken. $\endgroup$ – Burt_Harris Jul 12 '17 at 3:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.