1.1 高通NPU架构简介
高通的NPU,全称是Neural Processing Unit。它不是凭空冒出来的,而是从Hexagon DSP一步步演化过来的。你想想看,手机芯片里既要跑游戏,又要跑AI,还得省电,通用CPU肯定扛不住。
NPU的核心设计思路就四个字:数据流驱动。什么意思?就是计算单元跟着数据走,而不是像CPU那样指令驱动。这样做的好处是——延迟低、吞吐高、功耗小。
关键架构特点:
- 张量加速器(Tensor Accelerator):专门处理卷积、矩阵乘这类大运算量操作。我在项目中遇到过,同样的MobileNet,用NPU跑比CPU快8-10倍。
- 向量处理单元(HVX):处理向量运算,比如激活函数、池化。说白了就是给张量加速器打辅助的。
- 标量处理单元:负责控制流、分支判断。虽然算力不强,但不可或缺。
- 共享内存(L2/L3):数据搬运的瓶颈往往在这里。我建议你重点关注内存带宽,很多模型推理慢,不是算力不够,是数据喂不进去。
下面这张图是我自己画的NPU内部数据流简图,帮你理解数据是怎么流转的:
个人经验:我刚开始用NPU时,总觉得把模型扔进去就能快。后来发现,数据排布(layout)和内存对齐才是关键。NHWC和NCHW的切换,如果没处理好,性能直接腰斩。建议你一开始就固定用一种格式,别来回切。
1.2 AI Engine软件栈
高通AI Engine