LM32/Milkymist vs. Microblaze/EDK


I have run most of the MiBench benchmarks on Milkymist 0.2 and Microblaze from EDK 10.1 in order to compare the performances of the two systems. Only two benchmarks are missing: tiff2rgba (it tried to use too much contiguous memory for the nommu Milkymist/Linux allocator to handle) and lame (it crashed on Microblaze).

The comparison seems clearly in favor of Milkymist, with a rough 15%-35% (depending on the benchmark) reduction in execution time. See the graph below for a detailed view of the results:

Milkymist versus Microblaze

Test conditions
All tests were run on a Xilinx ML401 development board, with a system frequency of 100MHz.

For Milkymist, this is the default configuration of the port to the ML401 board:

  • Processor with hardware multiplier, divider and barrel shifter
  • 16KB L1 instruction and data (write-through) cache (2-way set-associative)
  • No memory management unit (not supported yet)
  • 16KB FML bridge write-back L2 cache (direct mapped)
  • HPDMC DDR SDRAM controller
  • 100MHz DDR SDRAM clock
  • Video output running at standard VGA resolution, using ~280MBps of memory bandwidth

The software used was GCC 4.2.1 and Linux 2.6.23 and the benchmarks were compiled with these scripts.

For Microblaze:

  • Processor with hardware multiplier, divider and barrel shifter
  • 16KB L1 instruction and data (write-through) cache (direct mapped, multi-way caches are not supported)
  • Full memory management unit
  • No L2 cache (not supported)
  • MPMC DDR SDRAM controller
  • 100MHz DDR SDRAM clock
  • No video output

The software used was GCC 4.1.2 and Linux 2.6.32.4 and the benchmarks were compiled with these scripts.

To go further…
I now encourage you to reproduce these results, and benchmark other soft system-on-chips. And let the open source architecture contest begin, for the greater good of high quality and open digital design!

  1. #1 by Andreas Ehliar on April 12, 2010 - 8:45 am

    An interesting comparison, but it is not that relevant unless you have tried to synthesize both systems to the highest possible clock frequency. (For example, Microblaze should run at over 150 MHz in a Virtex-4. (Up to around 200 MHz in speedgrade 12.)

    Also, it would be interesting to see area figures as well.

  2. #2 by lekernel on April 12, 2010 - 11:55 am

    150MHz, but with what synthesizer, what peripherals in the SoC (quite often, the bus is in the critical path) and what processor options (caches, multipliers, etc.)?
    Personally, with Xst, I have not really been able to reach such high frequencies with Microblaze. 100MHz seemed to be a reasonable frequency for both systems.

  3. #3 by lekernel on May 10, 2010 - 11:58 pm

    Btw XPS limits the speed of Microblaze systems to 100MHz when Virtex-4 is selected.

Comments are closed.