Home Knowledge Base CPU

CPU is a general-purpose processor optimized for low-latency execution, strong single-thread performance, and efficient control flow. CPUs host operating systems and applications, orchestrate accelerators, preprocess data, run databases, and execute serial or irregular work in every computing system.

Architecture and principles. Modern cores fetch and predict several instructions, decode them into micro-operations, rename registers to remove false dependencies, dispatch to out-of-order queues, execute on integer, vector, branch, load/store, and floating units, and retire results in program order. Speculation and precise exceptions reconcile performance with the architectural ISA. Private L1/L2 caches, shared last-level cache, coherence, memory controllers, and interconnect join many cores.

Execution and system behavior. Branch prediction, instruction windows, execution width, cache latency, prefetching, TLBs, SIMD, frequency, and memory bandwidth shape performance. Simultaneous multithreading fills unused resources, while NUMA placement becomes important across sockets and chiplets. Power management adjusts voltage, frequency, cores, and boost under electrical and thermal limits. Performance counters reveal stalls rather than relying on clock rate.

Applications and semiconductor impact. For AI, CPUs ingest and transform data, tokenize inputs, schedule kernels, run control-heavy operators, serve feature stores, manage networks and storage, and execute fallbacks. Apple M4-class SoCs integrate CPU, GPU, NPU, and unified memory; AMD Zen 5 and Intel Core Ultra pursue x86 performance and heterogeneous acceleration; Arm Neoverse targets cloud efficiency; RISC-V enables customizable open ISAs.

Trade-offs and current engineering. x86 offers mature server and PC ecosystems, Arm combines licensed IP with energy-efficient integration, and RISC-V offers extensibility without a proprietary ISA license. ISA alone does not determine IPC or efficiency; microarchitecture, process, cache, compiler, memory, and workload do. Security mitigations, reliability, virtualization, platform I/O, lifecycle, and total system cost influence selection.

Verification and lifecycle. A production implementation begins with explicit terminal conditions, operating ranges, loading, accuracy, noise, latency, efficiency, area, cost, lifetime, and fault behavior. Schematic or architectural models establish feasibility; extracted, package, board, thermal, and control-loop models then reveal interactions hidden by ideal sources and loads. Verification spans process, voltage, temperature, mismatch, aging, startup, shutdown, overload, brownout, and recovery. Teams should define measurement bandwidth, observation point, stimulus, pass limit, guard band, and statistical confidence before simulation. Layout review covers current return, thermal gradients, matching, parasitic coupling, electromigration, voltage stress, latch-up, ESD paths, and test access. Correlation retains netlists, models, scripts, tool versions, raw results, lab conditions, calibration status, and explanations for outliers. This evidence turns a nominal design into a reproducible component that can be signed off across device, circuit, package, firmware, and system teams. Corner selection should follow sensitivity rather than blindly combining labels. Deterministic sweeps expose monotonic trends, targeted Monte Carlo analysis estimates distribution tails, and importance sampling can explore rare failures. Reviewers should distinguish model uncertainty from manufacturing variation and avoid claiming yield from too few samples. The interface contract must state what happens outside normal operation. Open and short terminals, reverse polarity, hot plug, disabled bias, floating control pins, clock loss, thermal shutdown, current limiting, and repeated fault cycling often determine field reliability even though they are absent from the nominal transfer function. Dynamic behavior deserves the same attention as steady state. Settling, overshoot, ringing, slew, recovery from saturation, mode transitions, and interaction with external poles can violate a system limit long before a DC endpoint does. Time-domain tests should include realistic edge rates and source impedance. Noise should be referred to the signal or supply point that matters to the application and integrated only over a stated bandwidth. Thermal, flicker, quantization, switching, reference, substrate, and electromagnetic contributions may combine differently across modes, so a single spot-noise number rarely completes the specification. Power and thermal claims should include quiescent, active, transient, and fault states. Average efficiency can hide localized current density or hot spots; electrothermal simulation and temperature-aware device models connect electrical stress to lifetime, drift, and protection thresholds. Physical design must preserve the assumptions behind the schematic. Symmetry, common-centroid placement, dummies, shielding, guard rings, Kelvin sensing, wide current paths, via arrays, controlled coupling, and quiet reference routing are selected according to the dominant error rather than applied as decoration. Production test strategy is part of design. Trim range, observability, loopback modes, built-in self-test, boundary conditions, test time, and instrument uncertainty determine which specifications can be guaranteed economically. Characterization across wafers and lots should feed model and guard-band updates. System telemetry can extend laboratory correlation into deployed products. Error counters, calibration codes, temperatures, supply monitors, fault flags, margin measurements, and performance events help distinguish random failures from systematic drift without exposing sensitive implementation details. A useful comparison normalizes alternatives at equal output requirement and environment. Peak headline values can be misleading when bandwidth, drive, voltage, area, cooling, external components, calibration, or reliability differs; the decision record should name the workload and weighting used. Cross-functional review should trace each requirement from physical mechanism through circuit behavior to application impact. That trace prevents duplicated margin, exposes assumptions that span ownership boundaries, and makes later process or package substitutions safer. Corner selection should follow sensitivity rather than blindly combining labels. Deterministic sweeps expose monotonic trends, targeted Monte Carlo analysis estimates distribution tails, and importance sampling can explore rare failures. Reviewers should distinguish model uncertainty from manufacturing variation and avoid claiming yield from too few samples. The interface contract must state what happens outside normal operation. Open and short terminals, reverse polarity, hot plug, disabled bias, floating control pins, clock loss, thermal shutdown, current limiting, and repeated fault cycling often determine field reliability even though they are absent from the nominal transfer function.

ISA familyCommon core rangePerformance emphasisPower rangeMarket
x86-64Mobile through very high core-count serverHigh single-thread and server throughputSingle-digit W through hundreds of WPC, workstation, server
ArmTiny embedded through many-core serverEfficiency and SoC integrationmW through hundreds of WMobile, embedded, cloud
RISC-VMicrocontroller through emerging application coresCustomization and opennessmW through expanding high-performance rangeEmbedded, accelerators, emerging compute
DSP CPUFew specialized coresDeterministic MAC and signal flowLow to moderateAudio, communications, control
<svg viewBox="0 0 760 470" xmlns="http://www.w3.org/2000/svg" font-family="-apple-system,Segoe UI,Roboto,sans-serif">
  <rect x="0" y="0" width="760" height="470" fill="#0d1117"/>
  <text x="380" y="28" fill="#e6edf3" font-size="21" font-weight="700" text-anchor="middle">Inside a CPU Core — The Out-of-Order Pipeline</text>
  <text x="380" y="48" fill="#8b98a5" font-size="12" text-anchor="middle">fetch → decode → rename → schedule → execute → retire — all while looking ahead for parallelism</text>

  <!-- Pipeline stages flowing left to right -->
  <!-- FETCH -->
  <rect x="30" y="72" width="95" height="100" rx="5" fill="#0f1a2a" stroke="#60a5fa" stroke-width="1.3"/>
  <text x="77" y="90" fill="#93c5fd" font-size="10" text-anchor="middle" font-weight="600">Fetch</text>
  <!-- Instruction bytes visualization -->
  <g fill="#1e3a5f" stroke="#3b82f6" stroke-width="0.4">
    <rect x="40" y="96" width="70" height="8" rx="1"/><rect x="40" y="107" width="70" height="8" rx="1"/>
    <rect x="40" y="118" width="70" height="8" rx="1"/><rect x="40" y="129" width="70" height="8" rx="1"/>
    <rect x="40" y="140" width="50" height="8" rx="1"/>
  </g>
  <text x="77" y="160" fill="#6b7684" font-size="8" text-anchor="middle">I-cache → 32B/cyc</text>
  <!-- Branch predictor -->
  <rect x="38" y="86" width="30" height="8" rx="2" fill="#34d399" opacity="0.3"/>
  <text x="100" y="86" fill="#6ee7b7" font-size="7.5">BPU</text>

  <!-- Arrow -->
  <path d="M127,122 L142,122" fill="none" stroke="#3a5a7a" stroke-width="1.2"/>
  <polygon points="140,119 146,122 140,125" fill="#3a5a7a"/>

  <!-- DECODE -->
  <rect x="148" y="72" width="95" height="100" rx="5" fill="#0f1a2a" stroke="#a78bfa" stroke-width="1.3"/>
  <text x="195" y="90" fill="#c4b5fd" font-size="10" text-anchor="middle" font-weight="600">Decode</text>
  <!-- x86 → µops -->
  <rect x="158" y="98" width="35" height="14" rx="2" fill="#1c1633" stroke="#a78bfa" stroke-width="0.6"/>
  <text x="175" y="108" fill="#8b98a5" font-size="7" text-anchor="middle">x86</text>
  <path d="M195,105 L205,105" fill="none" stroke="#a78bfa" stroke-width="0.8"/>
  <rect x="207" y="96" width="8" height="6" rx="1" fill="#c4b5fd" opacity="0.5"/>
  <rect x="207" y="104" width="8" height="6" rx="1" fill="#c4b5fd" opacity="0.5"/>
  <rect x="207" y="112" width="8" height="6" rx="1" fill="#c4b5fd" opacity="0.5"/>
  <text x="228" y="108" fill="#6b7684" font-size="7">µops</text>
  <text x="195" y="135" fill="#8b98a5" font-size="8" text-anchor="middle">crack complex</text>
  <text x="195" y="146" fill="#8b98a5" font-size="8" text-anchor="middle">instrs into µops</text>
  <text x="195" y="160" fill="#6b7684" font-size="8" text-anchor="middle">6-wide decode</text>

  <!-- Arrow -->
  <path d="M245,122 L260,122" fill="none" stroke="#3a5a7a" stroke-width="1.2"/>
  <polygon points="258,119 264,122 258,125" fill="#3a5a7a"/>

  <!-- RENAME / ALLOCATE -->
  <rect x="266" y="72" width="95" height="100" rx="5" fill="#0f1a2a" stroke="#34d399" stroke-width="1.3"/>
  <text x="313" y="90" fill="#6ee7b7" font-size="10" text-anchor="middle" font-weight="600">Rename</text>
  <!-- RAT table -->
  <g fill="#0f2a1f" stroke="#2f6d55" stroke-width="0.5">
    <rect x="276" y="98" width="30" height="10" rx="1"/><text x="291" y="106" fill="#8b98a5" font-size="6.5" text-anchor="middle">RAX→P47</text>
    <rect x="276" y="110" width="30" height="10" rx="1"/><text x="291" y="118" fill="#8b98a5" font-size="6.5" text-anchor="middle">RBX→P12</text>
    <rect x="276" y="122" width="30" height="10" rx="1"/><text x="291" y="130" fill="#8b98a5" font-size="6.5" text-anchor="middle">RCX→P83</text>
  </g>
  <text x="340" y="110" fill="#6b7684" font-size="7.5">phys regs:</text>
  <text x="340" y="120" fill="#6b7684" font-size="7.5">280+ (P-regs)</text>
  <text x="313" y="146" fill="#8b98a5" font-size="8" text-anchor="middle">eliminate WAR/WAW</text>
  <text x="313" y="158" fill="#8b98a5" font-size="8" text-anchor="middle">hazards</text>

  <!-- Arrow -->
  <path d="M363,122 L378,122" fill="none" stroke="#3a5a7a" stroke-width="1.2"/>
  <polygon points="376,119 382,122 376,125" fill="#3a5a7a"/>

  <!-- SCHEDULER (Reservation Stations) -->
  <rect x="384" y="72" width="115" height="100" rx="5" fill="#0f1a2a" stroke="#f59e0b" stroke-width="1.3"/>
  <text x="441" y="90" fill="#fbbf24" font-size="10" text-anchor="middle" font-weight="600">Schedule</text>
  <!-- RS entries as small slots -->
  <g fill="#2a1a0a" stroke="#8a5a2a" stroke-width="0.4">
    <rect x="392" y="97" width="46" height="9" rx="1"/><rect x="392" y="108" width="46" height="9" rx="1"/>
    <rect x="392" y="119" width="46" height="9" rx="1"/><rect x="392" y="130" width="46" height="9" rx="1"/>
    <rect x="444" y="97" width="46" height="9" rx="1"/><rect x="444" y="108" width="46" height="9" rx="1"/>
    <rect x="444" y="119" width="46" height="9" rx="1"/><rect x="444" y="130" width="46" height="9" rx="1"/>
  </g>
  <!-- Some entries "ready" (highlighted) -->
  <rect x="392" y="97" width="46" height="9" rx="1" fill="#f59e0b" opacity="0.3"/>
  <rect x="444" y="119" width="46" height="9" rx="1" fill="#f59e0b" opacity="0.3"/>
  <rect x="392" y="130" width="46" height="9" rx="1" fill="#f59e0b" opacity="0.3"/>
  <text x="441" y="155" fill="#8b98a5" font-size="8" text-anchor="middle">issue when operands</text>
  <text x="441" y="165" fill="#8b98a5" font-size="8" text-anchor="middle">ready (out-of-order)</text>

  <!-- Arrow -->
  <path d="M501,122 L516,122" fill="none" stroke="#3a5a7a" stroke-width="1.2"/>
  <polygon points="514,119 520,122 514,125" fill="#3a5a7a"/>

  <!-- EXECUTE (multiple ports) -->
  <rect x="522" y="68" width="105" height="110" rx="5" fill="#0f1a2a" stroke="#f87171" stroke-width="1.3"/>
  <text x="574" y="86" fill="#fca5a5" font-size="10" text-anchor="middle" font-weight="600">Execute</text>
  <!-- Execution units -->
  <rect x="532" y="93" width="40" height="16" rx="2" fill="#2a1a1a" stroke="#6a3a3a" stroke-width="0.6"/>
  <text x="552" y="104" fill="#f87171" font-size="7" text-anchor="middle">ALU</text>
  <rect x="576" y="93" width="40" height="16" rx="2" fill="#2a1a1a" stroke="#6a3a3a" stroke-width="0.6"/>
  <text x="596" y="104" fill="#f87171" font-size="7" text-anchor="middle">ALU</text>
  <rect x="532" y="113" width="40" height="16" rx="2" fill="#2a1a1a" stroke="#6a3a3a" stroke-width="0.6"/>
  <text x="552" y="124" fill="#f87171" font-size="7" text-anchor="middle">AGU</text>
  <rect x="576" y="113" width="40" height="16" rx="2" fill="#2a1a1a" stroke="#6a3a3a" stroke-width="0.6"/>
  <text x="596" y="124" fill="#f87171" font-size="7" text-anchor="middle">AGU</text>
  <rect x="532" y="133" width="40" height="16" rx="2" fill="#2a1a0a" stroke="#8a5a2a" stroke-width="0.6"/>
  <text x="552" y="144" fill="#fbbf24" font-size="7" text-anchor="middle">FPU</text>
  <rect x="576" y="133" width="40" height="16" rx="2" fill="#2a1a0a" stroke="#8a5a2a" stroke-width="0.6"/>
  <text x="596" y="144" fill="#fbbf24" font-size="7" text-anchor="middle">VEC</text>
  <rect x="532" y="153" width="84" height="16" rx="2" fill="#1a2a1a" stroke="#2f6d55" stroke-width="0.6"/>
  <text x="574" y="164" fill="#6ee7b7" font-size="7" text-anchor="middle">Load/Store Unit</text>

  <!-- Arrow -->
  <path d="M629,122 L644,122" fill="none" stroke="#3a5a7a" stroke-width="1.2"/>
  <polygon points="642,119 648,122 642,125" fill="#3a5a7a"/>

  <!-- RETIRE (ROB) -->
  <rect x="650" y="72" width="85" height="100" rx="5" fill="#0f1a2a" stroke="#8b98a5" stroke-width="1.3"/>
  <text x="692" y="90" fill="#e6edf3" font-size="10" text-anchor="middle" font-weight="600">Retire</text>
  <!-- ROB entries -->
  <g fill="#14202c" stroke="#3a4453" stroke-width="0.4">
    <rect x="660" y="97" width="60" height="8" rx="1"/><rect x="660" y="107" width="60" height="8" rx="1"/>
    <rect x="660" y="117" width="60" height="8" rx="1"/><rect x="660" y="127" width="60" height="8" rx="1"/>
    <rect x="660" y="137" width="60" height="8" rx="1"/>
  </g>
  <!-- Checkmark on top entries -->
  <text x="656" y="104" fill="#34d399" font-size="7">✓</text>
  <text x="656" y="114" fill="#34d399" font-size="7">✓</text>
  <text x="692" y="160" fill="#8b98a5" font-size="8" text-anchor="middle">commit in-order</text>
  <text x="692" y="170" fill="#6b7684" font-size="7.5" text-anchor="middle">ROB: 512 entries</text>

  <!-- MEMORY HIERARCHY (bottom) -->
  <rect x="30" y="195" width="700" height="95" rx="6" fill="#0b1220" stroke="#233043" stroke-width="1"/>
  <text x="380" y="215" fill="#e6edf3" font-size="11" text-anchor="middle" font-weight="600">Memory Hierarchy (per core)</text>

  <!-- L1 I-cache -->
  <rect x="50" y="225" width="80" height="30" rx="3" fill="#122040" stroke="#3b82f6" stroke-width="0.8"/>
  <text x="90" y="239" fill="#93c5fd" font-size="9" text-anchor="middle">L1-I 32 KB</text>
  <text x="90" y="251" fill="#6b7684" font-size="7.5" text-anchor="middle">4-cycle</text>

  <!-- L1 D-cache -->
  <rect x="145" y="225" width="80" height="30" rx="3" fill="#122040" stroke="#3b82f6" stroke-width="0.8"/>
  <text x="185" y="239" fill="#93c5fd" font-size="9" text-anchor="middle">L1-D 48 KB</text>
  <text x="185" y="251" fill="#6b7684" font-size="7.5" text-anchor="middle">4-cycle</text>

  <!-- L2 -->
  <rect x="245" y="225" width="100" height="30" rx="3" fill="#14261f" stroke="#2f6d55" stroke-width="0.8"/>
  <text x="295" y="239" fill="#6ee7b7" font-size="9" text-anchor="middle">L2 1.25 MB</text>
  <text x="295" y="251" fill="#6b7684" font-size="7.5" text-anchor="middle">12-cycle</text>

  <!-- L3 (shared) -->
  <rect x="365" y="225" width="140" height="30" rx="3" fill="#1a1520" stroke="#a78bfa" stroke-width="0.8"/>
  <text x="435" y="239" fill="#c4b5fd" font-size="9" text-anchor="middle">L3 36 MB (shared)</text>
  <text x="435" y="251" fill="#6b7684" font-size="7.5" text-anchor="middle">~40 cycles</text>

  <!-- DRAM -->
  <rect x="525" y="225" width="100" height="30" rx="3" fill="#2a1a0a" stroke="#f59e0b" stroke-width="0.8"/>
  <text x="575" y="239" fill="#fbbf24" font-size="9" text-anchor="middle">DDR5 DRAM</text>
  <text x="575" y="251" fill="#6b7684" font-size="7.5" text-anchor="middle">~80 ns</text>

  <!-- Arrows between cache levels -->
  <path d="M130,240 L143,240" fill="none" stroke="#3a5a7a" stroke-width="0.8"/>
  <path d="M225,240 L243,240" fill="none" stroke="#3a5a7a" stroke-width="0.8"/>
  <path d="M345,240 L363,240" fill="none" stroke="#3a5a7a" stroke-width="0.8"/>
  <path d="M505,240 L523,240" fill="none" stroke="#3a5a7a" stroke-width="0.8"/>

  <!-- Bandwidth labels -->
  <text x="380" y="275" fill="#6b7684" font-size="9" text-anchor="middle">each level: ~10x slower, ~10x larger — the core sees only the fastest level that has the data</text>

  <!-- ISA comparison (bottom) -->
  <rect x="30" y="302" width="700" height="65" rx="5" fill="#0b1220" stroke="#233043" stroke-width="1"/>
  <text x="380" y="320" fill="#e6edf3" font-size="11" text-anchor="middle" font-weight="600">Instruction Set Architectures</text>
  <text x="130" y="340" fill="#60a5fa" font-size="10" text-anchor="middle" font-weight="600">x86-64 (CISC)</text>
  <text x="130" y="354" fill="#8b98a5" font-size="9" text-anchor="middle">Intel, AMD</text>
  <text x="130" y="366" fill="#6b7684" font-size="8.5" text-anchor="middle">complex decode, legacy</text>

  <text x="340" y="340" fill="#34d399" font-size="10" text-anchor="middle" font-weight="600">ARM (RISC)</text>
  <text x="340" y="354" fill="#8b98a5" font-size="9" text-anchor="middle">Apple, Qualcomm, AWS</text>
  <text x="340" y="366" fill="#6b7684" font-size="8.5" text-anchor="middle">fixed-width, power-efficient</text>

  <text x="540" y="340" fill="#fbbf24" font-size="10" text-anchor="middle" font-weight="600">RISC-V (open)</text>
  <text x="540" y="354" fill="#8b98a5" font-size="9" text-anchor="middle">SiFive, Ventana, Tenstorrent</text>
  <text x="540" y="366" fill="#6b7684" font-size="8.5" text-anchor="middle">modular, extensible ISA</text>

  <!-- Key numbers -->
  <text x="380" y="395" fill="#e6edf3" font-size="10" text-anchor="middle" font-weight="600">Modern high-perf core (2024): 6-wide decode, 12-wide dispatch, 512-entry ROB, 5+ GHz, 200+ mm²/core</text>
  <text x="380" y="412" fill="#8b98a5" font-size="9.5" text-anchor="middle">Apple M4: 16 cores, ARM; Intel Arrow Lake: 24 cores, x86; AMD Zen 5: 16 cores, x86</text>

  <!-- GPU vs CPU note -->
  <text x="380" y="436" fill="#6b7684" font-size="10" text-anchor="middle">CPU: optimize for single-thread latency (branch prediction, OoO). GPU: optimize for throughput (many simple threads).</text>

  <text x="380" y="460" fill="#6b7684" font-size="11" text-anchor="middle">The CPU core is a speculation machine — it bets on branches, executes ahead, and retires in order.</text>
</svg>

Connection to CFS platform. Use CFS architecture, accelerator, memory, cloud, edge, security, networking, power, and system simulators with linked glossary topics to connect foundational concepts to measurable semiconductor and deployment choices.

cpucentral processing unitcpu architecturex86armrisc-vhost processor

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.