I pulled this right from Wikipedia to compare, staring with an SoC:

A system on a chip or system on chip (SoC or SOC) is an integrated circuit (IC) that integrates all components of a computer or other electronic system into a single chip.

And to compare, here's the microcontroller:

A microcontroller (sometimes abbreviated µC, uC or MCU) is a small computer on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals.

What is the difference? If they are both small computers that integrate all components on a single integrated circuit, and are limited, why are they regarded as different concepts or terms? A microcontroller has everything an SoC has, so why are they claimed to be different?

To elaborate further, what draws any tangible line here on any noteworthy differences?

They both are in the area of embedded systems, but aside from minimal differences, they are both seemingly exact in almost every way.


The microcontroller definition is, at best, poorly worded. The distinction between an SoC and a microcontoller may be a bit fuzzy, but not that fuzzy. A microcontroller might be included as one element of an SoC, but it is not an SoC.

SoC means (approximately) "single chip solution." The SoC in a cell phone might have a 32-bit ARM processor running Linux (Android) and any apps that the user has installed. In addition it would have a GPU, the wireless transceiver and modem, the video and audio decoders for streaming video, GPS, controllers for the accelerometer, controllers for battery management, and who knows what else. There might be many microcontrollers in a SoC.

The "peripherals" included on the microcontroller itself are going to be a lot less specific. They are really registers for communicating with the off-chip devices (or at least off-module, if the microcontroller is embedded in an SoC) that you are controlling with the microcontroller. The peripherals might include some analog-to-digital or digital-to-analog converters, and/or a USB controller and/or I2C bus controller.

More often than not the microcontroller will be running a single program (no operating system, no apps), and that program will be stored in a read-only-memory (Flash). (Usually the flash memory is included in the same chip as the microprocessor.)

As an example. Here's the specs for the Microchip PIC16F77:

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip's powerful PIC® architecture into an 40- or 44-pin package and is upwards compatible with the PIC16C5X, PIC12CXXX and PIC16C7X devices. The PIC16F77 features 8 channels of 8-bit Analog-to-Digital (A/D) converter with 2 additional timers, 2 capture/compare/PWM functions and the synchronous serial port can be configured as either 3-wire Serial Peripheral Interface (SPI™) or the 2-wire Inter-Integrated Circuit (I²C™) bus and a Universal Asynchronous Receiver Transmitter (USART). All of these features make it ideal for more advanced level A/D applications in automotive, industrial, appliances and consumer applications.

It also has 14KB of flash to store the program and 368 bytes of RAM. (Yes you read that right, bytes.)

  • $\begingroup$ Are you sure? As an outsider who reads a little, I received the impression that "microcontroller" was used to describe a chip (so an SoC could not contain a microcontroller in this sense, but a microcontroller-type processor--e.g., Cortex-M3 cores in an OMAP4 SoC). Also SoCs generally seem not to have all system memory on chip, while microcontrollers often do. Price and performance segmentation seems to be a primary distinguishing factor (which is probably related to on-chip memory). Again, not my field, but clarification might be helpful. $\endgroup$ – Paul A. Clayton Jun 20 '13 at 23:48
  • $\begingroup$ I would say this answer refers to microprocessor instead of microcontroller. $\endgroup$ – gustavovelascoh Jan 5 at 16:05

The differences are essentially non-technical. Microcontrolers date back to the 70's and the term is used for what provide more or less the same feature set as what was possible then, just higher end; you could consider SoC as the current incarnation of the same idea if there wasn't at least another difference. Microcontrolers are from CPU vendors who added commonly used pieces to their CPU, SoC comes from the ASIC world and were first designed for a specific product, then a specific line of products of the designer before being sold outside the designing organization. Both points make SoC more application specific than microcontrolers.


I will try to make it short. Let me put it this way: if you ask for the difference between a car, a truck and a bulldozer you will have the same kind of answers as for this question. They all have wheels, motor, pedals, you can drive them, etc... actually they follow the same concept. With terms like microcontroller, SoC, CPU, DSP and the like you are facing the same problem when looking for a definition, they are essentially the same but they are focused on different use cases.

A microcontroller is focused on control systems: they have (in general and relatively) a wide range of interfaces (SPI,I2C, a lot of GPIOs...), less computational power, no MMU... A CPU is a bit different: less interfaces, more raw power... A SoC is an encapsulation of one or more of these (CPUs, microcontrollers, DSPs, other accelerators) intended for applications with more requirements and have more complex and diverse hardware available on the same chip.

Needless to say that there exist bulldozers that are faster than some cars...


A microcontroller is simply a CPU with built-in RAM (not cache RAM) and ROM. It can execute code on startup without external RAM or ROM. The Intel 8042, which was the keyboard controller in the original IBM PC, is an example. It's a CPU but has an EEPROM as well. SD cards and USB devices often have microcontrollers (with programmable flash ROM).

A System-On-Chip is a chip that has a CPU plus supporting hardware that would typically fall in a "chipset" or "peripheral" category. RAM is not necessarily part of this but can be. Home routers are a good example where a MIPS CPU core is combined with switch hardware, or things like the Qualcomm Snapdragon which has multiple CPU cores along a lot of other hardware. One could argue that modern x86 CPUs are becoming more like SoCs with the integration of memory controllers, PCIe interfaces, and integrated graphics.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.