Microcontroller architectures can be sorted into three basic categories.
First, the single accumulator/register bank is used by the 8051 and PIC architectures (see the figure, a). Operations are centered on a single 8-bit accumulator plus a selectable bank of usually 8 bytes. Typically one of up to 8 banks can be chosen at a time, which works well for interrupts that can be serviced with only 8 bytes.
The next architecture employs a set of dedicated registers like those used with Motorola's microcontrollers (see the figure, b). In this case, the family tree can be traced back to the venerable 6800. Two 8-bit accumulators can be combined into one 16-bit accumulator to simplify multibyte operations.
The third architecture is highlighted by Atmel's AVR, which takes a RISC ap-proach (see the figure, c). It has a large register bank with no dedicated accumulator. Its 16-bit instructions can easily reference multiple registers versus the byte-oriented instruction stream implemented by many other architectures.
No single architecture offers a significant advantage over the others, although it tends to be easier for a C compiler to generate efficient code for Atmel's RISC architecture versus the competition. Still, today's C compilers do an excellent job of generating efficient code for other 8-bit microcontroller architectures.