- Ascend C異構并行程序設計:昇騰算子編程指南
- 蘇統華 杜鵬 閆長江編著
- 1400字
- 2025-04-17 18:50:02
1.3.4 指令集設計
任何程序在處理器芯片中執行計算任務時,都需要通過特定的規范轉換成硬件能夠理解并執行的語言,這種語言被稱為指令集架構(Instruction Set Architecture,ISA),簡稱指令集。指令集包含數據類型、基本操作、寄存器、尋址模式、數據讀寫方式、中斷、異常處理及外部I/O等,每條指令都描述處理器的一種特定功能。指令集是計算機程序能夠調用的處理器全部功能的集合,是處理器功能的抽象模型,也是計算機軟件與硬件的接口。
指令集可以分為精簡指令集(Reduced Instruction Set Computer,RISC)和復雜指令集(Complex Instruction Set Computer,CISC)。精簡指令集的特點是單指令功能簡單、執行速度快、編譯效率高,不能直接操作內存,僅能通過指令(LOAD/STORE指令)來訪問內存。常見的精簡指令集有ARM、MIPS、OpenRISC及RSIC-V等。復雜指令集的特點是單指令功能強大且復雜,指令執行周期長,并可以直接操作內存。常見的復雜指令集如x86。
昇騰AI處理器芯片有一套專屬的指令集,其設計介乎于精簡指令集和復雜指令集之間,包括標量指令、向量指令、矩陣指令和存儲轉換指令等。標量指令類似于精簡指令集,而矩陣指令、向量指令和存儲轉換指令類似于復雜指令集。昇騰AI處理器芯片指令集結合精簡指令集和復雜指令集兩者的優勢,在實現單指令功能簡單和速度快的同時,對于內存的操作也比較靈活,搬運較大數據塊時的操作簡單、效率較高。
1.標量指令
標量指令主要由標量計算單元執行,主要目的是為向量指令和矩陣指令配置地址及控制寄存器,并對程序執行流程進行控制。標量指令還負責對L1緩沖區和UB中的數據進行存儲和加載、簡單的數據運算等操作。標量指令完成的功能與CPU的功能類似,包括算術運算(Add、Sub、Max、Min)、比較與選擇(CMP、SEL)、邏輯運算(AND、OR、XOR)、數據搬運(MOV、LOAD、STORE)和流程控制(JUMP、LOOP)5類指令。
2.向量指令
向量指令由向量計算單元執行。每個向量指令可以完成多個操作數的同一類型運算,但參與運算的輸入數據必須已經在 UB 中,否則需要通過向量 DMA 從板外搬運至板上的 UB,如果要將運算后的結果搬出板外,也需要由向量 DMA 完成。向量指令類似于傳統的單指令多數據(Single Instruction Multiple Data,SIMD)指令,在CPU指令中也相繼引入了流SIMD擴展(Streaming SIMD Extensions,SSE)系列、高級向量擴展(Advanced Vector Extensions,AVX)系列指令。2013年發布的AVX-512指令集,其指令寬度擴展到512位。昇騰AI處理器的向量指令支持的數據類型為FP16、FP32和int32,一次可以執行2048位向量計算(等價于128個FP16類型的計算)。
昇騰AI處理器的向量指令包括5種類型:算術運算指令、比較與選擇指令、邏輯運算指令、數據搬運指令及其他專用指令。其中常見的算術運算指令有加法(Vadd)、減法(Vsub)、求最大(Vmax)和求最小(Vmin);比較與選擇指令有向量比較大小(Vcmp)和選擇(Vsel);邏輯運算指令有向量與(Vand)和向量或(Vor)。昇騰 AI 處理器的向量指令支持多次迭代執行,也支持直接運算帶有間隔(Stride)的向量。
3.矩陣指令
矩陣指令由矩陣計算單元執行,實現高效的矩陣乘法計算和累加操作C=A×B+C。在神經網絡計算過程中,矩陣A通常代表輸入特征矩陣,矩陣B通常代表權重矩陣,矩陣C通常代表輸出特征矩陣。矩陣指令支持int8和FP16類型的輸入數據,也支持int32、FP16和FP32類型的輸出數據。在矩陣指令執行前,數據同樣被搬運至板上,隨后根據左、右矩陣的差異被搬運至L0A緩沖區和L0B緩沖區中,并在執行計算時被搬入矩陣計算單元中參與矩陣計算,并將結果返回至L0C緩沖區,最后被搬運回板外。正如前文所介紹,矩陣計算單元支持一次計算兩個大小不超過16×16、數據類型為FP16的矩陣乘法。
- Mastering Articulate Storyline
- Internet of Things with the Arduino Yún
- 深入理解Java7:核心技術與最佳實踐
- 假如C語言是我發明的:講給孩子聽的大師編程課
- 區塊鏈技術與應用
- Odoo 10 Implementation Cookbook
- App Inventor 2 Essentials
- jQuery for Designers Beginner's Guide Second Edition
- JQuery風暴:完美用戶體驗
- 軟技能2:軟件開發者職業生涯指南
- Visual FoxPro數據庫程序設計
- Analytics for the Internet of Things(IoT)
- C語言程序設計實驗指導教程
- Kotlin核心編程
- Mastering Software Testing with JUnit 5