AVR C Code Benchmarks
Enclosed is a 15 page presentation on C Code Benchmarks which depicts the
AVR microcontroller against other popular 8-bit and 16-bit processors. The
code is drawn from a varied selection of customer supplied applications, and
was compiled using the native compiler for that processor.
Discussion of the Benchmarking Process
Making a C Code benchmark is not an objective issue and presenting these
figures may result in comments which may have experience which differs
from what we present here. The following general comments should be noted
on C Code benchmarking:
• Which microcontroller is the most code-efficient is application dependent,
and there is no single best microcontroller for all applications.
• Benchmarks, like statistics, can be constructed to show anything. Every
microcontroller has its strengths, and by constructing applications which
utilizes these specific strengths, any microcontroller can be claimed to be
the most code-efficient.
• Our goal with this presentation is not to claim that we are the single most
code-efficient microcontroller, but to support our claim that we have a very
High-Level Language suitable architecture.
The AVR is not the most code-efficient of the group, but can be found among
the top three in seven of the nine benchmarks and, as shown in the summary,
it comes out favorably compared to the other controllers. No applications
have been omitted from the benchmark due to bad performance of the AVR.
Comments on the Summaries
Accumulated
Since not all code could be compiled for all compilers, all the indexes are
relative to AVR. Only the applications that could be compiled for both
applications are summed and the ratio between the code sizes is displayed.
Normalized
Since not all code could be compiled for all compilers, all the indexes are
relative to AVR. Only the applications that could be compiled for both
applications are used and the ratio between every two applications is
computed. The averaged ratio is displayed in the figure.
2325 Orchard Parkway • San Jose, CA • U.S.A.
These results are coherent with the Accumulated results on the previous
slide, but there is some variation in the factors due to different methods of
computing the factor.
Comments on the Summaries
Most of the compilers used are from IAR Systems Ltd. The advantage of
using the same compiler company for most of the processors is that the
difference in the code size does not depend on the global optimization which
all compilers will benefit from, but largely due to architectural differences.
IAR does not have any Compiler for ARM7/ARM Thumb.
Some of the compilers exist in later versions, so the results might be better for
some of the microcontrollers.
The AVR C Compiler is, compared to many of our competitors, a relatively
young compiler. The AVR C Compiler still gains significant code size
decrease in every new release of the compiler.
2325 Orchard Parkway • San Jose, CA • U.S.A.
ENHANCED RISC MICROCONTROLLERS
C Code Benchmark Presentation
NOV98
ENHANCED RISC MICROCONTROLLERS
C Code Benchmarks
Nine applications, all based on actual customer
code
Varied application areas
Byte usage in individual applications
Summarized results reported as
– Normalized Accumulated Results
– Averaged Normalized Results
NOV98
ENHANCED RISC MICROCONTROLLERS
Pager protocol
Three layer protocol
Includes simple driver
8000
6000
#Bytes
4000
2000
0
68HC11 AVR Thumb H8/500 Z80 80196 H8/300H Arm7 80C51 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
Analog Telephone I
SIM Interface
Parts of display driver
6000
5000
4000
#Bytes
3000
2000
1000
0
AVR Thum b 68HC11 Z80 H8/500 80196 80C51 H8/300H ARM7 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
Analog Telephone II
Automatically generated code
State Machine based
30000
25000
20000
#Bytes
15000
10000
5000
0
AVR Thumb 68HC11 H8/500 ARM7 H8/300H H8/300 80C51
NOV98
ENHANCED RISC MICROCONTROLLERS
Reed-Solomon
Reed-Solomon Encoder/Decoder
8000
6000
#Bytes
4000
2000
0
Thumb H8/500 ARM7 AVR 68HC11 H8/300H Z80 80C51 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
Car Radio Control
Skeleton application
Control Flow and Bitfields
1200
1000
800
#Bytes
600
400
200
0
Z80 AVR 80C51 H8/500 68HC11 Thumb H8/300H ARM7 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
C Bitfields
Benchmark code from customer
8-bit and 16-bit bitfield variables
2500
2000
1500
#Bytes
1000
500
0
AVR Thumb Z80 68HC11 80C51 H8/500 ARM7 H8/300H H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
Analog Telephone III
Representative collection of routines from an analog
telephone application
1200
1000
800
#Bytes
600
400
200
0
H8/500 68HC11 AVR Z80 H8/300H 80C51 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
DES Algorithm
Encryption/Decryption algorithm
3000
2500
2000
#Bytes
1500
1000
500
0
Thumb H8/500 AVR 68HC11 Z80 ARM7 H8/300H 80C51 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
Navigation Application
Complete application
Communication, measurement and computations
15000
10000
#Bytes
5000
0
H8/500 Thumb 68HC11 AVR Z80 80C51 ARM7
NOV98
ENHANCED RISC MICROCONTROLLERS
Accumulated Over All Benchmarks
Indexes based on accumulated sizes
Large applications count more than small applications
2,5
2
Normalized
1,5
1
0,5
0
AVR Thumb H8/500 68HC11 Z80 80196 ARM7 H8/300H 80C51 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
Normalized over all Benchmarks
Averaged indexes from all applications
All applications count evenly
1,5
Normalized
0,5
0
AVR Thumb H8/500 68HC11 Z80 80196 ARM7 H8/300H 80C51 H8/300
NOV98
ENHANCED RISC MICROCONTROLLERS
In Summary
Nine C Code Benchmarks from various
application areas
No single microcontroller best for all applications
AVR in the top range for all the applications
NOV98
ENHANCED RISC MICROCONTROLLERS
C Compilers Used
AVR: IAR ICCA90 version 1.40
80C51: IAR ICC8051 version 5.20
Thumb: ARM tcc version 1.02b
ARM: ARM armcc version 4.66b
80196: IAR icc196 version 5.20a
Z80: IAR iccz80 version 4.03a
H8/300(H): IAR icch83 version 3.22
H8/500: IAR icch8500 version 2.92g
68HC11: IAR icc6811 version 4.20B
NOV98