Typically an MCU uses on-chip embedded Flash memory in which to store and execute its program. Storing the program this way means the MCU having a shorter start-up period and executing code quickly. The only practical limitation to using embedded memory is that the total available memory space is finite. Most Flash MCU devices available on the market have a maximum of 2 Mbytes of Program memory. This may prove to be a limiting factor, depending on the application.
MPUs
do not have memory constraints in the same way. They use external memory
to provide program and data storage. The program is typically stored in
non-volatile memory, such as NAND or serial Flash. At start-up, this is
loaded into an external DRAM and execution commences. This means the MPU
will not be up and running as quickly as an MCU but the amount of DRAM and
NVM you can connect to the processor is in the range of hundreds of Mbytes and
even Gbytes for NAND.
Another
difference is power. By embedding its own power supply, an MCU needs just
one single voltage power rail. By comparison, an MPU requires several
difference voltage rails for core, DDR etc. The developer needs to cater
for this with additional power ICs / converters on- board.
From the application perspective, some aspects
of the design specification might drive device selection in particular
ways. For example, is the number of peripheral interface channels required more
than can be catered for by an MCU? Or, does the marketing specification
stipulate a user interface capability that will not be possible with an
MCU because it does not contain enough memory on-chip or has the
required performance? When embarking on the first design and
knowing that, it is highly likely there will be many product variations.
In that case, it is very possible a platform-based design approach will be
preferred. This would stipulate more “headroom” in terms of processing
power and interface capabilities in order to accommodate future feature
upgrades.