官术网_书友最值得收藏!

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的矩陣乘法。

主站蜘蛛池模板: 黑河市| 积石山| 秭归县| 博白县| 和硕县| 淳安县| 长寿区| 巴青县| 平乡县| 遵化市| 常山县| 邓州市| 河东区| 册亨县| 图木舒克市| 西乡县| 武穴市| 鲁甸县| 田阳县| 抚州市| 寿光市| 固镇县| 河西区| 建昌县| 潼南县| 武宁县| 获嘉县| 宝山区| 额济纳旗| 长白| 柘城县| 达州市| 东乌珠穆沁旗| 建瓯市| 家居| 淳化县| 登封市| 如东县| 称多县| 铅山县| 屯留县|