Like this one, which does 1.49 DMIPS/MHz. Even with pipelining there's still only 1 execute stage per cycle isn't it?

  • \$\begingroup\$ The only typical superscalar thing in this microcontroller segment is MADD - multiply & add in single cycle. Although, it doesn't help much in Drystone. \$\endgroup\$ Aug 21 '12 at 7:49
  • \$\begingroup\$ DSPs are microcontrollers, and they can have have hardware implementations of Fourier transformation, array multiplication, etc. Do they also count? Does this measurement apply here? Even very old DPSs could perform 8 multiplications on 16 different registers in one instruction. \$\endgroup\$
    – vsz
    Aug 21 '12 at 11:35
  • 5
    \$\begingroup\$ There are lies, damn lies, and benchmarks... \$\endgroup\$
    – user3624
    Aug 21 '12 at 12:40

DMIPS and MIPS are not the same. DMIPS stands for "Dhrystone MIPS", and it's a standard for comparing different microcontrollers/microprocessors' performances across different instruction sets. The standard is not so new anymore(*), so what the reference processor could do at 1 DMIPS/MHz in 1 second may take a more advanced controller 670 ms at the same clock speed, just because it will do some actions in 1 instruction whereas the other controller may need 2 instructions, or an instruction requiring more machine cycles.

A 16-bit architecture, for instance, will typically have a better Dhrystone performance than an 8-bit architecture, and a 32-bit, like the one you're referring to, even more.

(*) m.Alin refers to the more recent CoreMark benchmark. Note that this is written in C, so actually you're also including the compiler's performance in the result (just like Dhrystone, BTW).

  • \$\begingroup\$ But the Dhrystone results also depend on the compiler (it's also written in C), right? From Wikipedia: Major portions of Dhrystone are susceptible to a compiler’s ability to optimize the work away; thus it is more a compiler benchmark then a hardware benchmark \$\endgroup\$
    – m.Alin
    Aug 21 '12 at 10:16
  • 1
    \$\begingroup\$ @m.Alin - Sure, I didn't want to suggest otherwise. I'll clarify my answer. Thanks for the feedback. \$\endgroup\$
    – stevenvh
    Aug 21 '12 at 10:18

DMIPS is a relative measurement rather than absolute. As opposed to MIPS, it actually measures how quickly the uC can do something useful instead of just how fast it executes instructions.

Like any benchmark it has it's limitations, but a simple way of looking at it is how quickly it can complete the benchmark code compared to a VAX 11/780 (a 1 MIPS machine)
So for example if your uC completes the benchmark 100 times faster than a VAX 11/780, you have a 100DMIPS machine. If it runs at 100MHz, then it's rated at 1 DMIPS/MHz.

Note that the advertised DMIPS is usually unattainable in normal use, especially on large uCs with flash speed, prefetch, wait times/misses, etc. Here is a good discussion of the PIC32 DMIPS performance. This link has some Dhrystone code for microcontrollers.

  • \$\begingroup\$ Your wikipedia link says that the Drystone standard is already 28 years old. Do you know if there are more up-to-date performance measuring tools? Thanks. \$\endgroup\$ Aug 21 '12 at 8:48
  • 3
    \$\begingroup\$ @FedericoRusso CoreMark \$\endgroup\$
    – m.Alin
    Aug 21 '12 at 8:59
  • \$\begingroup\$ @FedericoRusso : The thing about performance measurement is that it is comparative. If you change your comparison method, all existing results are rendered useless. Hence the longevity of Dhrystone. \$\endgroup\$
    – Clifford
    Jun 15 '14 at 8:13

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.