2. MCU与TinyML基础
在MCU上运行TinyML推理,第一步不是写模型,而是理解“模型要落在什么硬件上”。MCU(微控制器)与手机、服务器最大的不同,是它把CPU、Flash、SRAM、外设和中断系统集成在一颗芯片里,资源以KB计、功耗以mW计、实时性以微秒计。只有把MCU的架构、内存层次和外设接口看清楚,才能判断一个模型能否部署、推理延迟是否可接受、数据从哪里来又往哪里去。
一、常见MCU架构:从内核到总线
当前TinyML主流MCU内核分为三类:ARM Cortex-M系列、RISC-V以及部分厂商自研内核。Cortex-M又按能力分层:M0/M0+面向极低功耗与低成本,通常无FPU、无DSP扩展;M3/M4增加DSP指令与可选FPU,适合定点卷积与MFCC;M7/M55主频更高,带Cache、TCM与更强DSP,可承载稍大的神经网络。RISC-V则以开放指令集和可扩展性见长,部分型号集成向量扩展,适合定制化推理加速。
架构上,MCU通常由内核、总线矩阵、存储控制器和外设四部分组成。内核通过AHB/APB总线访问Flash、SRAM与外设;DMA可在不占用CPU的情况下搬运ADC采样或SPI数据。对TinyML而言,关键不是主频数字,而是“数据搬运路径是否顺畅”:如果每次推理都要CPU逐字节搬运,延迟和功耗都会显著上升。
二、内存层次:模型能不能放下的关键
MCU的内存通常分为Flash与SRAM两级。Flash存放程序与模型权重,容量从64KB到2MB不等;SRAM存放运行时张量、栈和堆,容量常见为20KB到512KB。TinyML模型部署时,权重常驻Flash,激活值在SRAM中反复读写,因此SRAM往往比Flash更早成为瓶颈。
以关键词唤醒为例,一个约30KB的DS-CNN模型,权重可放入Flash,但推理时中间张量可能占用数十KB SRAM。若SRAM不足,就需要采用分块计算、原地复用或降低输入分辨率。部分MCU提供TCM(紧耦合内存)与Cache,把热点数据放在TCM可显著降低访问延迟;但Cache行为不确定,实时推理中需谨慎评估最坏执行时间。
三、外设接口:数据从物理世界进入模型
TinyML的输入来自传感器,外设接口决定了采样质量与数据吞吐。常见接口包括:ADC用于模拟电压采样,I2S用于数字麦克风,SPI/I2C用于IMU、温湿度与气压传感器,UART用于调试与通信,GPIO用于触发与状态指示。DMA则让外设在后台搬运数据,CPU只在缓冲区满时被中断唤醒,从而降低功耗。
实际工程中,采样率、位宽与缓冲区大小需要与模型输入严格对齐。例如语音模型要求16kHz、16bit、单声道,若I2S配置为48kHz,就必须在预处理阶段重采样,否则模型输入分布偏移,准确率会明显下降。
// 典型音频采样与推理循环(伪代码)
i2s_config: 16000 Hz, 16 bit, mono
dma_buffer: 2 x 512 samples
while (1) {
wait_for_dma_half_or_full();
preprocess(dma_buffer, mfcc_out);
interpreter->Invoke(); // TFLite Micro 推理
if (output[1] > 0.8) trigger_action();
}
四、典型应用场景与产业价值
TinyML在MCU上的典型场景包括:关键词唤醒与语音命令、振动异常检测、电机电流故障诊断、可穿戴心率与步态识别、智能家居手势与存在检测、工业预测性维护等。这些场景的共同点是:数据敏感、要求低延迟、现场供电受限、网络不稳定或不允许上云。
| 应用场景 | 典型传感器 | 模型规模 | 核心价值 |
|---|---|---|---|
| 关键词唤醒 | 数字麦克风 / I2S | 20–80KB | 隐私不出设备、毫秒级响应 |
| 振动异常检测 | MEMS 加速度计 / SPI | 5–30KB | 提前发现轴承磨损,减少停机 |
| 电机故障诊断 | 电流采样 / ADC | 10–50KB | 边缘实时保护,降低维护成本 |
| 可穿戴健康监测 | PPG / IMU | 10–40KB | 低功耗连续监测,提升续航 |
产业价值体现在三个层面:第一,把推理放在端侧,减少数据上传,降低带宽与云端算力成本;第二,满足隐私与合规要求,原始数据不出设备;第三,实现低延迟闭环控制,在工业与汽车场景中直接产生安全与效率收益。对开发者而言,掌握MCU架构、内存层次与外设接口,是让TinyML模型真正落地的前提。