A lot of interesting approaches, and promising low-power, low-price, high-reliability (in various amount) in the 8-bit world.
I did not find a place that was comparing the architecture of these MCU, so I am collecting wisdom and trying to dive down this littlebig world and report what I found.
Note: I am not curious about which is better, just trying to understand what makes an 8-bit instruction set modern, and what is the way followed by 8-bit MCUs.
AVR is said to be a newer architecture, has a maintained GCC port (it was about to be dropped but survived!).
It has an interrupt system requiring the push all registers used by the ISR, which I think GCC can minimize as an optimization.
8051 have multiple register banks which dodge that problem by switching to a new set of registers while entering an interrupt and going back to the usual register set when leaving.
12T instructions (12 clocks ticks per CPU instruction) for everything... only for very old 8051, and 1T for most instructions for the modern 8051.
PIC uses paging for accessing RAM, instead of concatenating two registers (the "X", "Y", "Z" registers on AVR, or DPTR on 8051).
Mostly used with assembly, or a proprietary C toolchain or an endangered(?) SDCC compiler port.
MSP430, I do not know much about it, except it is a 16-bit arch which avoids some of the problems of 8-bit registers. I suppose 16-bit address space.
STM8 has interesting features such as having a single address space ("modified Harvard"?) for everything, I do not know much more.
PicoBlaze which is FPGA-Only is taking an interesting approach to use fewer LUT.
https://en.wikipedia.org/wiki/PicoBlaze#Architectural_notesBut noone producing any of these on a foundry AFAIK.
Now in all of this, something I wonder: Why is AVR said to be a modern architecture than, say, 8051?
*
The fact that it has 3 memory pointers? X, Y, Z vs just DPTR
*
No limitation to just an accumulator register? Although does it much change anything in practice outside compiler optimization?
*
The fact that it is 1T for most things? Which is also true for modren 8051
*
A simpler instruction set encoding scheme? Like how RISC-V is said to be modern for having a easy to implement instruction decoding
Although looking at AVR and 8051, I find the AVR a bit more complex and irregular
https://en.wikipedia.org/wiki/Atmel_AVR_instruction_set#Instruction_encoding https://en.wikipedia.org/wiki/Intel_8051#Instruction_set*
The limited set of instructions (RISC)? Recent 8051 are hardwired rather than microcoded (C8051 from these same EFM8BB), and 128 of the 256 instructions are for specifying the register to work on.
Last but not least, any hint in what makes an 8-bit power-efficient (how to get the core smaller, spend less time doing more things to go back to sleep quicker using less power, etc...) and simple to implement (say, on an FPGA) is welcome!
Thank you!
