《AI處理器硬件架構設計》基于當前工業(yè)界主流的設計規(guī)格,詳細介紹了AI處理器硬件架構及微架構的設計原理,并配有對應的工程經(jīng)驗總結與產品實例分析。本書主要內容包括:業(yè)界主流AI處理器架構及基礎背景知識(第1章);AI處理器指令集設計與硬件架構總體設計(第2、3章);核心計算單元,即向量處理單元、矩陣處理單元、標量處理單元的微架構設計實現(xiàn)(第4~6章);數(shù)據(jù)搬運單元與存儲系統(tǒng)設計(第7、8章);AI處理器設計實例剖析(第9章)。
《AI處理器硬件架構設計》可作為從事AI處理器相關研發(fā)工作的專業(yè)人員的參考書,也可用作高等院校計算機、集成電路相關專業(yè)研究生、高年級本科生的教材和參考書,還可供對AI處理器設計感興趣的讀者自學。
《AI處理器硬件架構設計》融合了一線自研高性能處理器資深工程師多年工作經(jīng)驗,從人工智能處理器的架構設計出發(fā),對比各種不同架構的人工智能處理器的優(yōu)缺點,詳細介紹各個組件的架構和微架構設計,循序漸進、由淺入深,圖文結合。用戶可根據(jù)本書的介紹,從0到1完成人工智能處理器的設計、驗證工作。
人工智能技術正在深刻改變著我們的學習、工作和生活。從計算機視覺到自然語言處理,從自動駕駛到智能機器人,AI應用的蓬勃發(fā)展對計算平臺提出了新的挑戰(zhàn)。這些挑戰(zhàn)主要表現(xiàn)在以下兩個方面:1)計算需求的爆炸性增長,深度學習模型規(guī)模持續(xù)擴大,訓練數(shù)據(jù)量急劇增加,實時推理應用對延遲提出更高要求,邊緣計算場景對能效比的要求提升;2)新興應用帶來的特殊需求,包括大規(guī)模矩陣運算加速、靈活的數(shù)據(jù)精度支持、復雜的數(shù)據(jù)重用模式,以及特定算子的硬件映射優(yōu)化。
隨著人工智能技術的快速發(fā)展和廣泛應用,傳統(tǒng)通用處理器架構在處理AI工作負載時的局限性日益凸顯,其瓶頸主要表現(xiàn)在:存儲墻問題日益嚴重、對AI特征計算支持不足、控制邏輯開銷過大,以及數(shù)據(jù)搬運效率低下。為了更好地支持大規(guī)模參數(shù)和復雜計算結構的機器學習模型的高效執(zhí)行,專門面向人工智能領域的處理器架構設計成為近幾年計算機體系結構領域最活躍的研究方向之一。面對傳統(tǒng)處理器在AI領域應用的瓶頸,設計專用的AI處理器架構已是大勢所趨。由此,作者團隊撰寫了本書,對AI處理器硬件架構設計進行了全方位的系統(tǒng)闡述。
本書所呈現(xiàn)的內容基于工業(yè)界當下實際的產品和應用技術,在不侵犯商用知識產權的前提下,盡力為讀者呈現(xiàn)是什么(What)為什么這樣設計(Why),以及如何設計,如何分析(How)。在本書的寫作過程中,作者相對弱化了對計算機體系結構基礎知識的闡述,將更多的篇幅有針對性地聚焦于處理器架構/微架構設計的內容,最大限度地為讀者呈現(xiàn)硬件架構/微架構的全貌,以及如何設計一款AI處理器。
無論是產品還是工程經(jīng)驗,都會存在自身的局限性。每個成熟的商業(yè)公司都有其特有研發(fā)體系,工程師也往往在體系之內選擇自己認為適宜的方式去做設計以及思考,這本身就帶有一定的慣性和片面性。因此,作者通過一家之言拋磚引玉,希望能夠引發(fā)讀者對設計的思考;或者,根據(jù)作者的視角和工程經(jīng)驗,啟發(fā)讀者的思路。如果本書能夠幫助讀者解決實際的工程問題,或者幫助讀者彌合了課堂與工業(yè)界的差距,那么作者將甚感榮幸。
《AI處理器硬件架構設計》分為9章,各章內容如下。
第1章為基礎知識概述,簡要介紹了神經(jīng)網(wǎng)絡和硬件加速平臺的相關基礎知識,便于讀者理解后續(xù)內容。
第2章和第3章從宏觀角度分別介紹了AI處理器指令集與硬件架構的設計。其中第2章為讀者介紹了一套通用的AI處理器指令集的詳細規(guī)格,包括標量指令、向量指令、矩陣運算指令等。第3章為架構設計總述,介紹了當前典型的AI處理器架構實現(xiàn)(包括VLIW/超標量 SIMD和SIMT),計算核心向量運算單元、矩陣處理單元,以及標量處理單元三者的架構設計、流水線分配,以及運算融合。
AI處理器硬件架構設計第4章介紹了向量處理單元的詳細微架構設計,涉及從整體微架構到各個功能單元的設計,包括浮點運算單元、各種向量類指令和超越函數(shù)類指令的硬件實現(xiàn)。
第5章介紹了矩陣處理單元的詳細微架構設計,重點闡述了數(shù)據(jù)流設計、脈動陣列的設計和優(yōu)化,以及乘累加單元的硬件實現(xiàn)。
第6章介紹了標量處理單元的詳細微架構設計,對應于標量指令的生命周期,基于AI處理器與通用CPU在應用場景與設計考量上的差異,根據(jù)流水線設計的次序,依次講解了指令提取單元、分支預測單元、指令譯碼單元與指令發(fā)射單元、執(zhí)行單元,以及訪存單元的微架構設計。
第7章介紹了數(shù)據(jù)搬運單元的設計,包括數(shù)據(jù)傳輸和在線處理,以及總線接口單元設計。
第8章介紹了AI處理器中存儲系統(tǒng)的設計,包括存儲器中Bank的劃分、Gather/Scatter引擎的設計,以及進行相應的物理實現(xiàn)時需要關注的問題。
第9章對西安交通大學人工智能與機器人研究所研發(fā)的HiPU微架構進行了深度剖析,包括從指令集設計到硬件架構的實現(xiàn)。通過對流水線和各功能單元微架構的介紹,讀者可對第2~8章中介紹的內容進行相互印證并將所學知識融會貫通。
感謝西安交通大學趙文哲副教授和大洋彼岸的同學Howard Wong在本書策劃與編寫過程中提供的指導及幫助;感謝機械工業(yè)出版社編輯李培培一如既往的關照和支持。
天下事,在局外吶喊議論,總是無益。必須躬身入局,挺膺負責,方有成事之可冀。最后以此句話與各位業(yè)界同仁共勉。
李東聲
任子木
處理器架構高級工程師
主導多款高性能推理/訓練處理器和數(shù)字信號處理器架構與核心模塊設計。諳熟業(yè)界主流高性能處理器指令集架構,帶領團隊設計的芯片廣泛應用于相機、無人機和服務器中。在計算機體系結構、圖像處理等方向有豐富的實踐經(jīng)驗。申請國內外發(fā)明專利五十余項。
李東聲
處理器架構師
專注于ARM/RISC-V架構高性能處理器設計、性能分析優(yōu)化、架構演進探索與關鍵技術研究。參與和主導多項高性能CPU與AI處理器IP架構/微架構以及SoC設計,商用產品涉及服務器、移動終端、邊緣計算等多個領域。授權國內外發(fā)明專利十余項。
推薦語
前言
第1章 AI處理器概述
1.1神經(jīng)網(wǎng)絡基礎
1.1.1卷積神經(jīng)網(wǎng)絡簡介
1.1.2殘差神經(jīng)網(wǎng)絡簡介
1.1.3Transformer網(wǎng)絡簡介
1.2應用場景及其硬件需求介紹
1.2.1圖像識別場景簡介
1.2.2自動駕駛場景簡介
1.2.3自然語言生成場景簡介
1.3硬件加速平臺介紹
1.3.1GPU簡介
1.3.2DSA簡介
第2章 AI處理器指令集設計
2.1標量指令集設計
2.2向量指令集設計
2.2.1寄存器設計
2.2.2算術邏輯類指令設計
2.2.3規(guī)約類指令設計
2.2.4重排列類指令設計
2.2.5數(shù)制轉換類指令設計
2.2.6訪存類指令設計
2.3矩陣運算指令設計
2.4DMA描述符設計
第3章AI處理器架構設計
3.1AI處理器架構概述
3.1.1VLIW SIMD架構設計
3.1.2超標量 SIMD架構設計
3.1.3SIMT架構設計
3.2向量運算和矩陣運算的融合層級
3.2.1寄存器級融合
3.2.2存儲器級融合
3.3向量處理單元架構選型
3.3.1Memory直連型向量處理單元設計
3.3.2基于VRF的向量處理單元設計
3.4標量流水線和向量矩陣流水線的位置關系
3.4.1并行流水線結構設計
3.4.2串行流水線結構設計
3.5AI處理器整體架構設計
第4章 向量處理單元設計
4.1向量處理單元整體架構設計
4.2向量指令發(fā)射設計
4.2.1順序發(fā)射設計
4.2.2亂序發(fā)射設計
4.3浮點運算單元設計
4.3.1IEEE 754協(xié)議介紹
4.3.2浮點加法器設計
4.3.3浮點乘法器設計
4.3.4浮點除法器設計
4.3.5浮點運算的融合
4.4跨通道跨切片處理單元設計
4.4.1規(guī)約類指令的硬件實現(xiàn)
4.4.2壓縮類指令的硬件實現(xiàn)
4.4.3排序類指令的硬件實現(xiàn)
4.5超越函數(shù)類指令的硬件實現(xiàn)
4.5.1CORDIC算法介紹
4.5.2分段線性逼近實現(xiàn)
4.5.3分段查表結合多項式運算實現(xiàn)
第5章 矩陣處理單元設計
5.1矩陣乘法的硬件映射
5.2數(shù)據(jù)流設計
5.2.1輸出固定數(shù)據(jù)流設計
5.2.2權重固定數(shù)據(jù)流設計
5.2.3輸入固定數(shù)據(jù)流設計
5.3脈動陣列的結構及計算流程
5.4脈動陣列的優(yōu)化
5.4.1列間廣播設計
5.4.2行間累加融合設計
5.5定點MAC單元設計
5.5.1定點乘法器設計
5.5.2定點MAC單元微架構設計
5.6浮點MAC單元設計
第6章 標量處理單元設計
6.1前端設計
6.1.1指令提取單元設計
6.1.2分支預測單元設計
6.1.3指令譯碼單元與指令發(fā)射單元設計
6.2執(zhí)行單元設計
6.2.1執(zhí)行單元流水線設計
6.2.2典型功能單元的微架構實現(xiàn)
6.3訪存單元設計
6.3.1數(shù)據(jù)緩存子系統(tǒng)概述
6.3.2訪存單元微架構設計
第7章 數(shù)據(jù)搬運單元設計
7.1數(shù)據(jù)搬運單元整體架構設計
7.2多維傳輸任務的解析
7.2.1多維傳輸介紹
7.2.2不同維度傳輸?shù)臍w一化設計
7.3A線接口設計
7.4在線填充引擎設計
7.5在線排序引擎設計
7.6在線轉置引擎設計
第8章 存儲系統(tǒng)設計
8.1AI處理器中的存儲器設計
8.2存儲器中Bank的劃分方式
8.2.1Bank間地址交織方式
8.2.2Bank劃分粒度介紹
8.3向量存儲器設計
8.4GatherScatter引擎設計
8.5存儲系統(tǒng)的物理實現(xiàn)
第9章 AI處理器設計實例
9.1HiPU硬件架構和指令集綜述
9.1.1核心組件設計
9.1.2存儲層次結構設計
9.1.3指令集設計
9.2HiPU微架構與流水線設計
9.3HiPU數(shù)據(jù)平面與計算陣列設計
參考文獻