- Arm Helium技術指南:Cortex-M系列處理器的矢量運算擴展
- (英)喬恩·馬什
- 1872字
- 2024-04-25 19:59:11
序
因為個人興趣所在,我在Arm工作了大約20年。也正是在這段時間里,電子行業以及Arm發生了令人難以置信的變化。
在我加入Arm之前,Jon Marsh就已經加入了這家公司(大約是在1997年)。我很高興能夠認識Jon并和他一起工作。我通常負責組織Arm的客戶培訓活動,而Jon是團隊中非常出色的培訓師。Jon對授課內容有深刻的理解,也能夠用易懂的方式清晰地解釋復雜的主題。更難能可貴的是,他將這兩種能力結合在了一起。
當Jon加入Arm時,Arm的處理器在手機行業已經非常流行,并開始在其他市場生根發芽。應用工程團隊為全球快速增長的芯片及軟件開發人員提供支持和培訓,而Jon則是該團隊的關鍵成員之一。
自1999年加入Arm以來,我有幸見證了Arm一次又一次地“提高標準”。1994年推出的Thumb指令集可以說是Arm處理器系列中第一個也是最重要的創新。它改變了游戲規則,針對資源有限的處理器,在減少內存開銷的同時極大地提升了處理器性能。Arm7TDMI在手機行業被廣泛采用,并成為Arm的第一個全球成功案例。在接下來的幾年里,Arm以驚人的速度不斷創新變革:Arm920T轉變為哈佛總線架構;Arm926EJ-S具有硬件Java加速功能的完全可綜合IP內核;Arm11系列首先實現Thumb-2指令集、TrustZone安全架構,以及涉足多處理器擴展;2004年轉向Cortex品牌,它的三個不同系列的處理器內核A、R和M分別針對高性能、硬實時和大眾市場的微控制器。
正是這種進入微控制器領域的舉措推動了15年來Arm處理器出貨量的驚人增長。我最近向一名嵌入式行業資深從業人員提問:你認為過去50年嵌入式計算中最主要的游戲規則改變者是誰?他毫不猶豫地回答道:“Cortex-M3。它將32位計算能力以不到1美元的價格交到了嵌入式開發人員手中。這改變了一切。”這可能存在個人偏好的因素,但我認同他的觀點。當你參加嵌入式行業活動,查找組件經銷商的產品展示卡時,你會發現Cortex-M3及其派生產品無處不在。
Cortex-M微控制器的發展并沒有止步于Cortex-M3。Cortex-M0和Cortex-M0+的面積變得更小;Cortex-M1可以應用于FPGA市場;Cortex-M4擁有了浮點計算和數字信號處理(Digital Signal Processing,DSP)能力;Cortex-M23和Cortex-M33則首次將硬件的TrustZone安全特性引入微控制器。
現在,借助Cortex-M55,Arm不僅又一次改變了游戲規則,還將微控制器引入了另一個全新的領域。Cortex-M55處理器是第一個實現Helium技術(即M系列矢量擴展)的Arm內核。Cortex-M55增加了一個矢量處理指令集擴展,該擴展能夠極大地提高內核進行數字信號處理和機器學習(Machine Learning,ML)運算的性能。
你可能會問,為什么要進行這樣的改變?為什么Arm現在進行這樣的改變如此重要?原因是我們看到分布式系統的構建方式發生了變化。一直以來,微控制器并不具備單獨處理涉及DSP和ML應用的能力,因此設計人員經常需要在設備中添加單獨的DSP來處理它們。這樣的設計使得硬件設計更加復雜,同時,由于需要多個工具鏈來處理在具有不同架構的設備上運行的單獨應用程序,軟件開發也會變得更加困難。高速網絡的出現使得將數據定期發送到服務器進行處理成為可能,但是這個方法本身也存在問題。它不僅會給系統帶來潛在的不可接受的延遲,還會增加安全風險和能耗。而最根本的問題是方法本身固有的,它缺乏可擴展性——帶寬和服務器容量都不是無限的。
因此,人們正在將高性能數據處理盡可能地放在網絡邊緣位置,最好是放在終端設備的處理器上進行。簡而言之,Cortex-M55讓這一切成為可能。
早期的Cortex-M微控制器內核基于Armv7-M架構,主要依靠整型指令集進行計算。Cortex-M4和Cortex-M7包括提供浮點計算和加速某些DSP操作的擴展,使其適用于更廣泛的工作負載。基于Armv8.1-M架構的Cortex-M55則更進一步,實現了Helium MVE。
這些擴展為Cortex-M系列處理器增加了新的功能——并行地處理矢量數據。對于某些類別的工作負載,主要是DSP,這樣的能力可以顯著提高吞吐量,使微控制器級別的設備能夠在沒有其他幫助的情況下處理更廣泛的用例。
這些擴展可以用于應對嵌入式設備日益復雜的挑戰,滿足更豐富和更復雜的用戶界面需求、觸屏和語音控制的使用需求,以及融合和處理來自越來越廣泛的傳感器陣列的數據的需求。
這本書很好地介紹了這種新功能。在本書的前幾章中,Jon介紹了非常基礎且易于理解的基本概念,包括單指令多數據(Single Instruction, Multiple Data,SIMD)、矢量處理、浮點和定點數據表示以及飽和運算。在對MVE架構進行概述之后,后續章節將指令集拆分成幾個部分來進行討論,涵蓋了流水線結構、預測和分支處理、數據處理及內存訪問等主題。
本書中最實用的部分介紹了具有Helium功能的內核(例如Cortex-M55)的編碼機制,包括編譯、調試和優化。
最后,本書總結了如何實現DSP和ML,這也是最重要的部分。同樣,在這一部分中,先對基本原理進行詳細介紹,接著介紹關于編碼及優化關鍵算法和技術(例如傅里葉變換、濾波和神經網絡)的實用建議。
我很開心能夠向所有希望將知識擴展到新領域的軟件開發人員推薦這本書。
Chris Shore
Arm汽車與物聯網業務產品管理總監
2020年9月