System on a chip
A system on a chip, or system on chip, is an integrated circuit that combines most or all key components of a computer or electronic system onto a single microchip. Typically, an SoC includes a central processing unit with memory, input/output, and data storage control functions, along with optional features like a graphics processing unit, Wi-Fi connectivity, and radio frequency processing. This high level of integration minimizes the need for separate, discrete components, thereby enhancing power efficiency and simplifying device design.
High-performance SoCs are often paired with dedicated memory, such as LPDDR, and flash storage chips, such as eUFS or eMMC, which may be stacked directly on top of the SoC in a package-on-package configuration or placed nearby on the motherboard. Some SoCs also operate alongside specialized chips, such as cellular modems.
Fundamentally, SoCs integrate one or more processor cores with critical peripherals. This comprehensive integration is conceptually similar to how a microcontroller is designed, but providing far greater computational power. This unified design delivers lower power consumption and a reduced semiconductor die area compared to traditional multi-chip architectures, though at the cost of reduced modularity and component replaceability.
SoCs are ubiquitous in mobile computing, where compact, energy-efficient designs are critical. They power smartphones, tablets, and smartwatches, and are increasingly important in edge computing, where real-time data processing occurs close to the data source. By driving the trend toward tighter integration, SoCs have reshaped modern hardware design, reshaping the design landscape for modern computing devices.
Types
In general, there are three distinguishable types of SoCs:- SoCs built around a microcontroller,
- SoCs built around a microprocessor, often found in mobile phones;
- Specialized application-specific integrated circuit SoCs designed for specific applications that do not fit into the above two categories.
Applications
Embedded systems
Where previously only microcontrollers could be used, SoCs are rising to prominence in the embedded systems market. Tighter system integration offers better reliability and mean time between failure, and SoCs offer more advanced functionality and computing power than microcontrollers. Applications include AI acceleration, embedded machine vision, data collection, telemetry, vector processing and ambient intelligence. Often embedded SoCs target the internet of things, multimedia, networking, telecommunications and edge computing markets. Some examples of SoCs for embedded applications include the STMicroelectronics STM32, the Raspberry Pi Ltd RP2040, and the AMD Zynq 7000.Mobile computing
based SoCs always bundle processors, memories, on-chip caches, wireless networking capabilities and often digital camera hardware and firmware. With increasing memory sizes, high end SoCs will often have no memory and flash storage and instead, the memory and flash memory will be placed right next to, or above, the SoC. Some examples of mobile computing SoCs include:- Samsung Electronics: list, typically based on ARM
- * Exynos, used mainly by Samsung's Galaxy series of smartphones
- Qualcomm:
- * Snapdragon, used in many smartphones. In 2018, Snapdragon SoCs were being used as the backbone of laptop computers running Windows 10, marketed as "Always Connected PCs".
- MediaTek, typically based on ARM
- * Dimensity & Kompanio Series. Standalone application & tablet processors that power devices such as Amazon Echo Show
Personal computers
Tablet and laptop manufacturers have learned lessons from embedded systems and smartphone markets about reduced power consumption, better performance and reliability from tighter integration of hardware and firmware modules, and LTE and other wireless network communications integrated on chip.
On modern laptops and mini PCs, the low-power variants of AMD Ryzen and Intel Core processors use SoC design integrating CPU, IGPU, chipset and other processors in a single package. However, such x86 processors still require external memory and storage chips.
Structure
An SoC consists of hardware functional units, including microprocessors that run software code, as well as a communications subsystem to connect, control, direct and interface between these functional modules.Functional components
Processor cores
An SoC must have at least one processor core, but typically an SoC has more than one core. Processor cores can be a microcontroller, microprocessor, digital signal processor or application-specific instruction set processor core. ASIPs have instruction sets that are customized for an application domain and designed to be more efficient than general-purpose instructions for a specific type of workload. Multiprocessor SoCs have more than one processor core by definition. The ARM architecture is a common choice for SoC processor cores because some ARM-architecture cores are soft processors specified as IP cores.Memory
SoCs must have semiconductor memory blocks to perform their computation, as do microcontrollers and other embedded systems. Depending on the application, SoC memory may form a memory hierarchy and cache hierarchy. In the mobile computing market, this is common, but in many low-power embedded microcontrollers, this is not necessary. Memory technologies for SoCs include read-only memory, random-access memory, Electrically Erasable Programmable ROM and flash memory. As in other computer systems, RAM can be subdivided into relatively faster but more expensive static RAM and the slower but cheaper dynamic RAM. When an SoC has a cache hierarchy, SRAM will usually be used to implement processor registers and cores' built-in caches whereas DRAM will be used for main memory. "Main memory" may be specific to a single processor when the SoC has multiple processors, in this case it is distributed memory and must be sent via on-chip to be accessed by a different processor. For further discussion of multi-processing memory issues, see cache coherence and memory latency.Interfaces
SoCs include external interfaces, typically for communication protocols. These are often based upon industry standards such as USB, Ethernet, USART, SPI, HDMI, I²C, CSI, etc. These interfaces will differ according to the intended application. Wireless networking protocols such as Wi-Fi, Bluetooth, 6LoWPAN and near-field communication may also be supported.When needed, SoCs include analog interfaces including analog-to-digital and digital-to-analog converters, often for signal processing. These may be able to interface with different types of sensors or actuators, including smart transducers. They may interface with application-specific modules or shields. Or they may be internal to the SoC, such as if an analog sensor is built in to the SoC and its readings must be converted to digital signals for mathematical processing.
Digital signal processors
cores are often included on SoCs. They perform signal processing operations in SoCs for sensors, actuators, data collection, data analysis and multimedia processing. DSP cores typically feature very long instruction word and single instruction, multiple data instruction set architectures, and are therefore highly amenable to exploiting instruction-level parallelism through parallel processing and superscalar execution. SP cores most often feature application-specific instructions, and as such are typically application-specific instruction set processors. Such application-specific instructions correspond to dedicated hardware functional units that compute those instructions.Typical DSP instructions include multiply-accumulate, Fast Fourier transform, fused multiply-add, and convolutions.
Other
As with other computer systems, SoCs require timing sources to generate clock signals, control execution of SoC functions and provide time context to signal processing applications of the SoC, if needed. Popular time sources are crystal oscillators and phase-locked loops.SoC peripherals including counter-timers, real-time timers and power-on reset generators. SoCs also include voltage regulators and power management circuits.
Intermodule communication
SoCs comprise many execution units. These units must often send data and instructions back and forth. Because of this, all but the most trivial SoCs require communications subsystems. Originally, as with other microcomputer technologies, data bus architectures were used, but recently designs based on sparse intercommunication networks known as networks-on-chip have risen to prominence and are forecast to overtake bus architectures for SoC design in the near future.Bus-based communication
Historically, a shared global computer bus typically connected the different components, also called "blocks" of the SoC. A very common bus for SoC communications is ARM's royalty-free Advanced Microcontroller Bus Architecture standard.Direct memory access controllers route data directly between external interfaces and SoC memory, bypassing the CPU or control unit, thereby increasing the data throughput of the SoC. This is similar to some device drivers of peripherals on component-based multi-chip module PC architectures.
Wire delay is not scalable due to continued miniaturization, system performance does not scale with the number of cores attached, the SoC's operating frequency must decrease with each additional core attached for power to be sustainable, and long wires consume large amounts of electrical power. These challenges are prohibitive to supporting manycore systems on chip.