---
# System prepended metadata

title: TinyML 核心函式庫 Arm CMSIS 6 DSP & NN 更新比較
tags: [MCU, TinyML]

---

# TinyML 核心函式庫 Arm CMSIS 6 DSP & NN 更新比較
![20240216_CMSIS6_Fig00](https://hackmd.io/_uploads/SJn0T6nsT.jpg)

有在玩單晶片(MCU)的朋友們應該都知道Arm Cortex-M系列吧！近年來AI當道，自然也有很多人想用MCU來玩微型AI應用，於是「TinyML」開始成為大家關注的重點。目前有太多廠商使用Arm Cortex-M IP開發成各式各樣的MCU，所以硬體介面不統一變成開發者的一大麻煩，只要一換廠牌、封裝方式甚至升降階（如M3降成M0,或升成M7）都需重新撰寫韌體(firmware)。

Arm為了讓開發者抽離硬體相依性於是推出硬體抽象層(Hardware Abstraction Layer, HAL)的概念，提供通用微控制器軟體介面標準(Common Microcontroller Software Interface Standard, 簡稱CMSIS)。其中DSP和NN模組又成了MCU AI最重要的核心函式庫，方便如 Google TensorFlow Lite (TFL), TensorFlow Lite for Microcontroller (TFLM) 等上階AI開發框架進行呼叫及執行。

Arm CMSIS在2016年底推出5.0.0版[1]後已有許久未大改版，去(2023)年12月18日推出最新版的CMSIS 6.0.0版[2]，將原有一大包的架構分拆成個別模組，除更輕量化外，同時更方便未來獨立呼叫及更新。此次將DSP[3], NN[4], Driver 等模組獨立出來，廢除RTOS改用RTOS2，更有利AI應用的開發及升級，其它更多變動可參考官方說明。[5]

![20240216_CMSIS6_Fig01](https://hackmd.io/_uploads/HkzYk42ja.jpg)
Fig. 1 Arm CMSIS v5及v6架構比較圖。（OmniXRI整理製作,2024/02/16）

以下為CMSIS v5 和 v6 版本資訊，包含DSP和NN模組目前對應版本。原則上這兩個版本都有支援單指令多資料流(Single Instruction Multiple Data, SIMD)，DSP擴展指令集及v8.1-M Helium M型向量擴展指令(M-Profile Vector Extension, MVE)，方便AI加速計算使用。

|   版本    | CMSIS v5 | CMSIS v6 |
|:---------:|:--------:|:--------:|
| 最後版本  |  5.9.0 |  6.0.0 |
| 發行日期  |  2022/05/02 |  2023/12/08 |
| CMSIS-DSP |  1.10.0 |  1.15.0  |
| CMSIS-NN  |  3.1.0 |  5.0.0  |

為方便大家理解 CMSIS-DSP 和 CMSIS-NN 在此次更新有什麼差別，以下就簡單表列出其差異。綠字部份表示新增功能，紅字部份表示v6版本已不再提供，藍字部份表示移入私有函式中，即只提供給CMSIS函式使用，而不提供給開發者使用。黑字部份則表示兩個版本皆有。

![20240216_CMSIS6_Fig02](https://hackmd.io/_uploads/ry_Dkn3jT.jpg)
Fig. 2 CMSIS v5和v6版 DSP 差異比較表。（OmniXRI整理製作,2024/02/16）[6][7]

![20240216_CMSIS6_Fig03](https://hackmd.io/_uploads/S15P122s6.jpg)
Fig. 3 CMSIS v5和v6版 NN 差異比較表。（OmniXRI整理製作,2024/02/16）[8][9]

在CMSIS-NN v6版對於卷積(Convolution)函式有很大變化，以下就把其差異單獨列表。

![20240216_CMSIS6_Fig04](https://hackmd.io/_uploads/Sy5Pkhhj6.jpg)
Fig. 4 CMSIS v5和v6版 NN Covolution 差異比較表。（OmniXRI整理製作,2024/02/16）[8][9]

## 小結

採用Arm Cortex-M 系列MCU來玩AI，加速矩陣運算是少不了的，透過Arm CMSIS DSP及NN模組來統一開發介面更是不可或缺的。未來再加上像Ethos U55之類的NPU，就能發揮更大的算力，屆時低成本、低功耗的TinyML就能普及到大家的身邊了。以上只是拋磚引玉，歡迎大家多多交流。

## 參考文獻

[1] Github, ARM-software, CMSIS_5
https://github.com/ARM-software/CMSIS_5

[2] Github, ARM-software, CMSIS_6
https://github.com/ARM-software/CMSIS_6

[3] Github, ARM-software, CMSIS-DSP
https://github.com/ARM-software/CMSIS-DSP

[4] Github, ARM-software, CMSIS-NN
https://github.com/ARM-software/CMSIS-NN

[5] Github, ARM-software, CMSIS_6 Releases Note
https://github.com/ARM-software/CMSIS_6/releases/tag/v6.0.0

[6] Github, ARM-software, CMSIS-DSP Software Library Reference (ver 1.10.0) 
https://arm-software.github.io/CMSIS_5/DSP/html/index.html

[7] Github, ARM-software, CMSIS-DSP Software Library Reference (ver 1.15.0) 
https://arm-software.github.io/CMSIS-DSP/latest/index.html

[8] Github, ARM-software, CMSIS-NN Software Library Reference (ver 3.1.0) 
https://arm-software.github.io/CMSIS_5/NN/html/index.html

[9] Github, ARM-software, CMSIS-NN Software Library Reference (ver 5.0.0) 
https://arm-software.github.io/CMSIS-NN/latest/index.html

## 延伸閱讀

[A] 許哲豪，歐尼克斯實境互動工作室【系列發文】- TinyML (MCU AI)系列
https://hackmd.io/@OmniXRI-Jack/series_articles#TinyMLMCU-AI%E7%B3%BB%E5%88%97

---
OmniXRI 整理製作，歡迎點贊、收藏、訂閱、留言、分享

###### tags: `MCU` `TinyML` `CMSIS`