Domain-Specific Architectures & Accelerators

heterogeneous computing

A well-run kitchen does not give every cook the same generic tool; it has a pastry chef, a grill cook, a saucier, each with their own station, and the head chef routes each dish to whoever does it best. Heterogeneous computing is a system built the same way: instead of relying on many copies of one identical processor, it combines several different kinds of processing units — a general CPU, a throughput-oriented GPU, and various domain-specific accelerators — and sends each piece of work to the unit best suited for it.

Concretely, 'heterogeneous' is the opposite of 'homogeneous,' where every core is the same. A heterogeneous system mixes processor types with complementary strengths: a CPU for serial, branchy, latency-sensitive control logic; a GPU for massively data-parallel work; a TPU or NPU for neural networks; a DSP for signal streams; fixed-function blocks for video and crypto. Even a phone's CPU is often internally heterogeneous (big-performance cores plus small-efficient cores). A program runs across this mix: the CPU acts as the conductor, executing the main logic and dispatching specialized kernels to the accelerator that handles each best, then gathering the results. The system-on-chip is where these pieces physically live together.

Why this is the dominant model now, and the honest difficulty: heterogeneity exists because the free lunch ended. When single cores stopped getting automatically faster and Dennard scaling died, you could no longer just wait for a faster general CPU — the way to keep gaining efficiency was to match each workload to specialized hardware. But programming a heterogeneous system is genuinely hard. The programmer (or a clever compiler and runtime) must decide what runs where, manage moving data between units that may have separate memories, and hide the cost of those transfers. Get the partitioning wrong and the overhead of shuffling data between units can erase the speedup — heterogeneity buys efficiency at the price of much greater software complexity.

A video call uses the whole heterogeneous system at once: the GPU or a fixed codec decodes incoming video, the NPU runs background-blur and noise-suppression AI, the DSP cleans the audio, and the CPU orchestrates the call and runs the app logic. No single processor type could do all of this well or efficiently alone.

Different processors for different jobs, the CPU conducting — the post-Moore answer to a stalled general core.

Heterogeneity is not automatically faster — it shifts the burden to software, which must partition work and manage data movement between units. Mismanage the transfers and the communication overhead can wipe out the gain.

Also called
heterogeneous systemheterogeneous architecture異質系統異質架構