The boys in Dallas may hate to hear it, but Texas Instruments has a 20-bit microcontroller. Actually, TI's 16-bit MSP430X architecture incorporates a bank of registers that can be manipulated as 20-bit pointers or 16-bit data registers (see the figure).
The pointers provide direct access to 1 Mbyte of program or data memory. The 20-bit registers have limited arithmetic capability designed for memory addressing. Meanwhile, the 16-bit portion retains the MSP430's extensive data manipulation capability. The additional 20-bit operations are incorporated into the instruction set without major modifications.
For example, loading a 20-bit register the same instruction format as loading 16-bit value because 4 bits of the opcode word were previously unused. Storing 20-bit address takes 32 bits, so it might have been handy to make registers 32 bits. But the MSP430 targets very low-power applications. Reducing overhead, then, is key to a good design.
TI's designers added a couple of new instructions, including a novel push/pop instruction that takes a register and constant parameter. The parameter is the number of registers to push or pop off the stack. It's very handy for interrupt routines and routine entry and exit. A multibit shift instruction also was added.
The architecture will show up in the company's forthcoming MSP430FG46xx line. It will start with 128 kbytes of memory, enabling applications to take advantage of the 20-bit registers.