2. RK3588硬件架构

RK3588 是瑞芯微面向边缘计算与高端 AIoT 场景的旗舰级 SoC,其核心设计思想是异构计算:把不同类型的计算任务交给最擅长的处理单元,从而在功耗、延迟和吞吐之间取得平衡。理解这套硬件架构,是后续 RKNN 模型部署、算子适配和性能调优的物理基础。

一、异构计算单元的分工

RK3588 内部集成了 CPU、GPU、NPU、VPU、DSP 等多类处理单元,它们各司其职:

  • CPU:4×Cortex-A76(大核,最高约 2.4GHz)+ 4×Cortex-A55(小核,最高约 1.8GHz),组成 big.LITTLE 架构,负责操作系统调度、控制逻辑、前后处理和通用计算。
  • GPU:Mali-G610 MP4,支持 OpenGL ES、OpenCL、Vulkan,常用于图像预处理、后处理、渲染和部分并行计算。
  • NPU:6 TOPS 算力(INT8),三核架构,是 RKNN 模型推理的主力,支持 INT4/INT8/INT16/FP16 等精度。
  • VPU:视频编解码单元,支持 8K 解码与 8K 编码,负责摄像头视频流的硬解与硬编,避免占用 CPU。
  • DSP:用于音频、信号处理等实时性要求高的任务,减轻 CPU 负担。
关键认知:NPU 只负责“推理计算”,图像缩放、色彩转换、视频解码通常由 VPU/GPU/RGA 完成。部署时若把预处理也压给 CPU,往往成为性能瓶颈。
RK3588 异构计算架构与数据流 摄像头 / 传感器 MIPI CSI / USB VPU 视频编解码 8K Decode / Encode GPU / RGA 缩放 / 色彩转换 NPU 三核 6 TOPS RKNN 推理 INT8/FP16 CPU 4×A76 + 4×A55 调度 / 控制 / 前后处理 DSP 音频 / 信号处理 实时低延迟任务 LPDDR4/LPDDR5 内存控制器(共享内存带宽) CPU / GPU / NPU / VPU 共享访问,带宽是异构协同的关键资源 eMMC / UFS 存储 系统 / 模型 / 数据 PCIe / SATA / SD 扩展存储与高速外设

二、内存与存储:共享带宽是隐形瓶颈

RK3588 采用统一内存架构,CPU、GPU、NPU、VPU 共享 LPDDR 内存带宽。这意味着当视频解码、GPU 渲染和 NPU 推理同时进行时,带宽竞争会直接拉低整体性能。典型开发板通常配置 4GB/8GB/16GB LPDDR4 或 LPDDR5,存储则使用 eMMC 或 UFS。

在 RKNN 部署中,模型权重、输入输出张量都驻留在内存中。若模型较大或输入分辨率较高,需关注内存占用与带宽消耗。例如 1080p RGB 输入单帧约 6MB,多路视频叠加时内存压力显著上升。

资源类型典型规格对 RKNN 部署的影响
CPU4×A76 + 4×A55控制流、前后处理、多线程调度
NPU6 TOPS INT8,三核模型推理主算力,支持多核并行
GPUMali-G610 MP4图像预处理、OpenCL 加速
VPU8K 编解码视频流硬解,释放 CPU
内存LPDDR4/5 4~16GB共享带宽,影响多任务并发
存储eMMC / UFS模型加载速度、系统启动

三、典型开发板与接口资源

常见 RK3588 开发板包括官方 EVB、Firefly、Orange Pi 5、Radxa Rock 5 等。它们通常提供以下接口:

  • 显示:HDMI 2.1、DP、MIPI DSI、eDP,支持多屏异显。
  • 摄像头:MIPI CSI 多路输入,可接多目摄像头。
  • 网络:千兆以太网、Wi-Fi 6、蓝牙 5.0。
  • 扩展:PCIe 3.0、USB 3.0/2.0、SATA、GPIO、I2C、SPI、UART。
  • 存储:eMMC、TF 卡、M.2 NVMe(通过 PCIe)。
做边缘 AI 盒子时,优先使用 MIPI CSI 接摄像头、VPU 硬解视频、NPU 推理、GPU 做缩放,形成完整硬件流水线,避免 CPU 成为瓶颈。

四、案例与误区复盘

案例:某项目在 RK3588 上部署 YOLOv5s,输入 1080p。初期直接用 CPU 做 resize 和归一化,NPU 利用率仅 40%,帧率约 18fps。改为 RGA 做缩放、NPU 推理、CPU 只做后处理后,NPU 利用率提升到 85%,帧率稳定在 32fps。

常见误区:

  1. 认为“NPU 算力大就万事大吉”,忽视预处理和后处理的开销。
  2. 忽略内存带宽竞争,多路视频时性能骤降。
  3. 把模型放在 TF 卡运行,加载慢且不稳定,应放入 eMMC 或 NVMe。
  4. 未使用 VPU 硬解,用 CPU 软解视频,导致 CPU 满载。
# 查看 NPU 利用率与频率(示例)
cat /sys/kernel/debug/rknpu/load
cat /sys/class/devfreq/fdab0000.npu/cur_freq

# 查看内存与带宽占用
free -h
cat /proc/meminfo | grep -i ddr
部署前务必确认开发板的 NPU 驱动版本与 RKNN Toolkit2 版本匹配,否则会出现模型加载失败或推理结果异常。