πŸ“Œ SoC

SoC (System on Chip, систСма Π½Π° кристаллС) β€” ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Π°Ρ микросхСма, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Ρ‡ΠΈΠΏΠ΅ процСссорныС ядра (CPU, GPU), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ памяти ΠΈ шин, ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, интСрфСйсы ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ (PCIe, USB, Ethernet), ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, часто β€” Ρ€Π°Π΄ΠΈΠΎΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Wi-Fi, Bluetooth). SoC ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ замСняСт Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ½ΡΠΊΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ, объСдиняя ΠΏΠΎΡ‡Ρ‚ΠΈ всю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ встраиваСмой систСмы Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ корпусС.


🧠 Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° SoC

SoC Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всС основныС подсистСмы Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ устройства Π½Π° ΠΎΠ΄Π½ΠΎΠΌ кристаллС:

  • CPU Subsystem: Одно ΠΈΠ»ΠΈ нСсколько процСссорных ядСр (ARM, x86, RISC-V), кэш-ΠΏΠ°ΠΌΡΡ‚ΡŒ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ L1, L2), MMU, FPU.
  • GPU/AI accelerator: ВстроСнныС Π±Π»ΠΎΠΊΠΈ для Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ нСйросСтСвых Π·Π°Π΄Π°Ρ‡ (Mobile GPU, DSP, NPU, VPU).
  • Memory Controller: Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ DDR, LPDDR, SRAM, Flash.
  • I/O Subsystem: АппаратныС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ USB, SPI, I2C, UART, PCIe, SDIO, Ethernet.
  • Multimedia: КодСки Π²ΠΈΠ΄Π΅ΠΎ/Π°ΡƒΠ΄ΠΈΠΎ, ISP (Image Signal Processor), MIPI-ΠΊΠ°ΠΌΠ΅Ρ€Π°, дисплСйный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (HDMI, DisplayPort, DSI).
  • Radio: ΠœΠΎΠ΄ΡƒΠ»ΠΈ Wi-Fi, Bluetooth, GPS, NFC, LTE (Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… SoC).
  • Power Management: ВстроСнныС рСгуляторы питания (LDO, DC-DC), PMIC.
  • Security: Secure Boot, TrustZone, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠΌΠΎΠ΄ΡƒΠ»ΠΈ, eFuse, OTP.

Π‘Ρ…Π΅ΠΌΠ° SoC (совмСстима с Mermaid v8/v9/v10)

flowchart TB
    CPU["CPU Cores"]
    GPU["GPU / AI Accel."]
    DDR["DDR/LPDDR Controller"]
    SRAM["SRAM"]
    Flash["Flash/EEPROM"]
    Bus["High-Speed Bus (AXI/AHB)"]
    Periph["I/O Controllers"]
    USB["USB"]
    SPI["SPI"]
    I2C["I2C"]
    UART["UART"]
    ETH["Ethernet"]
    SDIO["SDIO"]
    WiFi["Wi-Fi"]
    BT["Bluetooth"]
    PMU["Power Mgmt"]
    Sec["Security"]
    Video["Video/Audio Codec"]
    ISP["ISP/Camera"]
    HDMI["HDMI/Display"]

    CPU --> Bus
    GPU --> Bus
    DDR --> Bus
    SRAM --> Bus
    Flash --> Bus
    Periph --> Bus
    Bus --> USB
    Bus --> SPI
    Bus --> I2C
    Bus --> UART
    Bus --> ETH
    Bus --> SDIO
    Bus --> Video
    Bus --> HDMI
    Bus --> ISP
    Bus --> WiFi
    Bus --> BT
    Bus --> Sec
    Bus --> PMU

βš™οΈ Π“Π΄Π΅ примСняСтся

  • Π‘ΠΌΠ°Ρ€Ρ‚Ρ„ΠΎΠ½Ρ‹, ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Ρ‹, смарт-часы, IoT: основа ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… устройств (Qualcomm Snapdragon, Apple A/M, Samsung Exynos, MediaTek, Unisoc, HiSilicon Kirin).

  • ВстраиваСмыС систСмы: ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹, Π’Π’-приставки, smart home, носимая элСктроника.

  • ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: ADAS, Π±ΠΎΡ€Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, ΠΌΠ΅Π΄ΠΈΠ°Ρ†Π΅Π½Ρ‚Ρ€Ρ‹ (NVIDIA Drive, NXP, TI Jacinto).

  • ΠŸΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Π΅ ΠΈ Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ°: ΠŸΠ›Πš, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹, edge-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚ΠΈΠ½Π³ (NXP i.MX, ST STM32MP1, TI Sitara).

  • ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹: Apple Silicon (M1/M2/M3), Raspberry Pi, Chromebook, Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ.

  • Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ ΠΈ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Ρ‹: ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ SoC (Ampere Altra, Amazon Graviton, Nvidia Grace, Alibaba Yitian).


βœ… ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ: максимальная интСграция, сниТСниС Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², массы ΠΈ числа ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

  • Π­Π½Π΅Ρ€Π³ΠΎΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: оптимизация энСргопотрСблСния, Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ.

  • Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ: сниТСниС сСбСстоимости BOM, минимизация Ρ€Π°Π·Π²ΠΎΠ΄ΠΊΠΈ ΠΈ числа Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ‡ΠΈΠΏΠΎΠ².

  • Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: минимизация Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π·Π° счёт on-chip шин (AXI, AHB, TCM).

  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ОБ ΠΈ стСков.

  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ security-Π±Π»ΠΎΠΊΠΈ, root-of-trust, secure boot.

  • ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сСмСйства SoC ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (Lite/Pro/Max).


❌ НСдостатки

  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Ρƒ: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ CPU, GPU ΠΈΠ»ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: трСбуСтся ΠΎΠΏΡ‹Ρ‚ Π² Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, PPA, floorplanning, validation, EMI.

  • Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΈ Ρ‚Π΅ΠΏΠ»ΠΎΠ²Ρ‹Π΅ ограничСния: ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ частоту ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

  • Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Π²Π΅Π½Π΄ΠΎΡ€Π°: Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ спСцификации, NDA, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ исходным ΠΊΠΎΠ΄Π°ΠΌ.

  • Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊ слоТным Π±Π°Π³Π°ΠΌ: Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π±Π°Π³ΠΈ слоТно ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ workaround ΠΈΠ»ΠΈ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ Ρ‡ΠΈΠΏΠ°.

  • БлоТности с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ОБ: интСграция Π½ΠΎΠ²Ρ‹Ρ… SoC Π² ядра Linux/Android Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.


πŸ”— БвязанныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

CPU, GPU, FPGA, AXI, AHB, DDR, LPDDR, SRAM, Flash, EEPROM, USB, I2C, SPI, UART, PCIe, Ethernet, Wi-Fi, Bluetooth, HDMI, DisplayPort, DSP, PMIC, ISP, VPU, NPU, Linux, RTOS


РСзюмС

SoC β€” основной ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ соврСмСнной элСктроники: ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ вычислСния, ΠΏΠ°ΠΌΡΡ‚ΡŒ, интСрфСйсы, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°, Ρ€Π°Π΄ΠΈΠΎ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ кристаллС. Π”Π°Ρ‘Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ½Π΅Ρ€Π³ΠΎΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚Π°Ρ…, Π½ΠΎ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния ΠΏΠΎ гибкости ΠΈ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄Ρƒ. ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ для всСго мобильного Ρ€Ρ‹Π½ΠΊΠ°, IoT, встраиваСмых систСм, Π±Ρ‹Ρ‚ΠΎΠ²ΠΎΠΉ элСктроники ΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ ПК.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

C: Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ SoC (MMIO)

#define UART0_BASE 0x3F201000 // адрСс UART для Raspberry Pi 3
#define UART0_DR   (*(volatile unsigned int*)(UART0_BASE + 0x00))
 
void uart_send(char c) {
    while (!(UART0_DR & 0x20)); // Π–Π΄Ρ‘ΠΌ готовности
    UART0_DR = c;               // ПишСм символ в UART
}

Linux: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ SoC Ρ‡Π΅Ρ€Π΅Π· procfs

cat /proc/cpuinfo | grep Hardware
cat /proc/device-tree/model

Device Tree для SoC (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚)

soc {
    compatible = "brcm,bcm2837";
    uart0: serial@3f201000 {
        compatible = "arm,pl011", "arm,primecell";
        reg = <0x3f201000 0x1000>;
        interrupts = <2 25>;
    };
};

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ: ARM System Architectures, Linux kernel documentation, Silicon Vendor datasheets (Qualcomm, MediaTek, Broadcom, Apple, NXP, ST, TI), ВикипСдия, osdev.org, habr.com, chipestimate.com, AnandTech, IEEE Xplore.