what really are: Microcontroller (uC), System on Chip (SoC), and Digital Signal Processor (DSP)?

uC = a stand-alone processing chip: CPU, RAM, ROM, some peripherals.

DSP = processor chip (can be a separate CPU, nowadays mostly a uC) that is optimized for signal processing. Often has fast MAC (multiply-accumulate), saturating math, and multiple memory interfaces. To get the most out of it, you often need to be deeply aware of its peculiarities, like what kind of memory access can be done at the same time. (Hence often used with fine-tuned assembly libraries provided by the manufacturer.) Often not indetended to be used with large memories (16 bit address bus is often enough).

SOC = processor chip (mostly a CPU, maybe with some RAM for caching) that incorporates peripherals that used to be outside the main processor chip. This is by definition a moving target: the functions in todays specialized SOCs can be found in tomorrows mainstream chips. The current SOCs are mostly meant for running a Linux-level OS, and contain most things you would need on such a system, except for the RAM and ROM (although some ROM is often included, often to read an external FLASH).

Examples of peripherals that are common in todays SOCs (but are finding their way into uC's!): Ethernet ports, Ethernet switching fabric, USB incl. host & OTG, graphic engine(s), mpeg decoding, crypto engine, RAM & FLASH interfaces.

An Arduino is a board-level product, so it is by definition not a uC, DSP or SOC, although it can contain one. The basic Uno contains a uC.

A uC is not a SOC (although there could be bordeline cases): a uC is standalone, and (at the current level of technology) not meant to run Linux-level OSes. A SOC is not standalone (needs RAM and ROM).

The boundaries are not 100% thight and are shifting over time. De CPU's and memory interfaces of most current CPUs easily surpass yesterdays DSPs, even on their turf. But todays DSPs are faster, and/or cheaper or less power-hungry than more general-purpsoe CPUs when doing signal processing. It is a race between the manufacturers to make the most attractive chip using the latest state of technology and demand. At the moment this had lead to the above 3 sweet-spots (plus general-purpose micro-processors), but this will shift over time (DSPs are less popular than 10y ago, IMO because audio-level throughput is now easily achieved by a general-purpose CPU).

A specific type of chip that is becomming more common these days is the uC (or SOC) with some wireless interface. Check the ESP8266 and ESP32 for WiFi examples, and the RN2483 for LoraWan.


uC and DSPs have pretty straight forward definition.

A uC is a processing core that has the memory (volatile and non volatile) integrated internally. This compared to a microprocessor that will generally have some volatile memory inside but no non volatile.

A DSP is an off shoot of a uC. DSPs generally have really good analog sampling capabilities than a typical uC. DSPs also have better math capabilities than uC and come with lots of libraries such as FFT or autocorrelation to utilize those math capabilities.

SoC is more of a marketing wank term. SoC is a term that they try to use when a uC has pulled in enough functionality to make a single or near single chip solution. The term SoC tends to be found when the uC has integrated graphics processing and graphics drivers on board. Think of the ARM chips in cell phones. They incorporate the graphics.