Koen Vervloesem
1 January 1970

Uit tests van het Embedded Microprocessor Benchmark Consortium (EEMBC) blijkt dat NXP‘s LPC2129-microcontroller tot de helft sneller is dan andere Arm7-microcontrollers van verschillende fabrikanten. De belangrijkste oorzaak hiervan is volgens EEMBC het geoptimaliseerde ontwerp van het flashgeheugen van de NXP-microcontroller. De LPC2129 is een representatief model van LPC2000-familie, waarvan de leden allemaal hetzelfde embedded flashsubsysteem gebruiken.

Heel wat bedrijven beconcurreren elkaar met 32 bit Arm7-gebaseerde microcontrollers zoals Atmel, Oki, NXP, Samsung, STMicroelectronics en Texas Instruments. De verschillen zitten vooral in de peripherals (de randfuncties), het geïntegreerde flash- en SRam-geheugen, de kloksnelheid en de prijs. Minder duidelijk maar zeker zo belangrijk zijn de verschillen in efficiëntie van de processoren en dan vooral die van de randfuncties.

De efficiëntie van een microcontroller hangt van verschillende factoren af. De eerste factor is de efficiency van de processorkern. Daarnaast heb je het geheugen, de systeembus en de peripherals. Ten slotte heb je de responsiviteit van de processor voor de bediening van de peripherals en de responsiviteit tegenover interrupts. ’In de praktijk wordt de efficiëntie van een processor uitgedrukt in Dhrystone Mips‘, legt EEMBC-voorzitter Markus Levy uit. ’Dat is een grove aanduiding die bijna net zo weinig zegt als de kloksnelheid.‘

Voor Arm7-processoren wordt vaak beweerd dat de efficiëntie 0,9 Mips/MHz bedraagt. Om de echte efficiëntie te meten die van de verschillende meespelende factoren afhangt, moeten we echter de werking van de microcontroller in realistische omstandigheden meten, waarbij we zowel de processorkern als het geheugensubsysteem realistisch belasten.

Efficiente micro’s op basis van Dhrystone Mips

Efficiente_micros_op_basis_van_dhrystrone_mips
Efficiëntie micro‘s op basis Dhrystone Mips. De gegevens zijn genormaliseerd. Bron: EEMBC

Een traag flashgeheugen vormt vaak een bottleneck voor microcontrollers. De processorklok moet dan worden vertraagd om zich op de snelheid van het flashgeheugen af te stemmen. Levy: ’Flashgeheugens hebben typisch toegangstijden die drie of vier keer trager zijn dan de processorcycli. Als je een manier vindt om de gegevens sneller van het geheugen naar de processor door te sluizen zonder ze in duur on-chip SRam-geheugen te dupliceren, kun je de efficiëntie van de processor significant verhogen. Dat is wat de ontwerpers van de NXP LPC212x-serie hebben gedaan.‘

EEMBC testte de 32 bit LPC2129 samen met andere Arm7-microcontrollers tegen kernels van zijn Autobench-suite van automotive- en industriële benchmarks. Het consortium compileerde de tests met de IAR Embedded Workbench en C/C++-compiler en draaide ze op gelijkaardige versies van de Kickstart-ontwikkelbordjes.

De LPC2129 is gebaseerd op een 16/32 bit ARM7TDMI-S-processor met realtime emulatie en embedded traceondersteuning. De microcontroller beschikt over 16 kbyte on-chip statisch Ram en 256 kbyte embedded flashgeheugen. De LPC2129 zit in een compacte 64 pin LQFP-behuizing, heeft een laag stroomverbruik, verschillende 32 bit timers, een vierkanaals 10 bit ADC, twee Can-kanalen, PWM-kanalen en 46 GPIO-lijnen met tot negen externe interruptpinnen. Er zijn verschillende seriële interfaces aanwezig, waaronder twee Uarts (16C550), een I2C-bus (400 kbit/s) en twee SPI‘s. De microcontroller vindt zijn toepassing vooral in automotive- en industriële regeltoepassingen.

In alle zeven tests van EEMBC toonde de NXP LPC2129 een snelheidsvoorsprong van 37 tot 51 procent vergeleken met zijn tegenstanders. De resultaten tonen volgens het consortium de impact van de geoptimaliseerde flashinterface van NXP‘s microcontrollers. ’Onze benchmarkscores voor NXP‘s LPC2129 zijn een duidelijke illustratie van het belang om niet alleen naar de kern te kijken bij het evalueren van een processor‘, aldus Levy. Elke Arm7-gebaseerde processor krijgt een Dhrystone Mips-score van 0,9 Mips/MHz, maar in de realiteit is elke Arm7-implementatie verschillend. Levy: ’De snelheid van de kern wordt beïnvloed door factoren zoals het geheugensubsysteem en onze benchmarks die realistische omgevingen simuleren tonen deze impact duidelijk aan.‘

Als we een efficiëntiemaat nemen op basis van de Dhrystone Mips-score, scoort de NXP LPC2129 ongeveer even goed als de andere Arm7-processoren. De EEMBC-tests die realistische automotive-toepassingen uitvoeren, tonen een significant groter verschil tussen NXP‘s processor en de concurrentie. De microcontrollers draaien allemaal dezelfde code, gecompileerd met dezelfde IAR-compiler. Alle microcontrollers voeren de geteste code uit vanaf hun flashgeheugen. De verschillen zijn dus het resultaat van de geoptimaliseerde flashinterface.

De ontwerpers van de NXP LPC2129 hebben het efficiëntieprobleem opgelost door de geheugenbus te verbreden naar 128 bit, waardoor vier 32 bit woorden in een cyclus kunnen worden doorgestuurd. De totale bandbreedte van de toegang tot de twee geheugenbanken bedraagt 480 Mbyte/s. Een ’memory acceleration module‘ (Mam) verwerkt de gegevens en slaat ze op in een gegevensslot en daarna in een prefetchbuffer om de overhead van de geheugentoegang te verminderen. Als de processor het vierde woord van de buffer gebruikt, kan het volgende 128 bit woord naar de MAM. Zodra de processor het vierde woord heeft uitgelezen, komt het nieuwe woord in de buffer. Hierdoor hoeft de processor in normale omstandigheden, dus als de code niet de hele tijd heen en weer springt, niet onnodig lang te wachten op het flashgeheugen. ’De efficiëntie van dit 128 bit flashgeheugen met Mam verschilt nog maar enkele procenten van de efficiëntie van SRam‘, concludeert Levy.

Efficiëntie micro‘s in realistische automotive-toepassingen.

Efficiente_micros_op_realistische_automotive_toepassingen
De getallen voor de verschillende microcontrollereigenschappen zijn genormaliseerd. Bron: EEMBC