π 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.