專用處理器 (或?qū)S眉铀倨鳎?顧名思義, 就是用于處理 “特定應(yīng)用” 的處理器, 相對(duì)于通用處理器而言, 這類處理器性能更高、功耗更低、通常價(jià)格也更便宜, 但是使用范圍也相對(duì)有限。 計(jì)算芯片產(chǎn)業(yè)在過(guò)去 50 年的發(fā)展歷程中, 比較成功的專用處理器門類只有數(shù)字信號(hào)處理器 (DSP)、圖形處理器(GPU) 和網(wǎng)絡(luò)處理器 (NPU), 這是 20 世紀(jì) 90 年代就已經(jīng)基本定型的格局。
AI芯片專利技術(shù)研發(fā)態(tài)勢(shì)
在過(guò)去 5 年中, 用于處理深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)處理器 (AI 芯片) 也開始快速發(fā)展, 比較成功的案例包括 Google 公司的張量處理器 TPU、寒武紀(jì)公司的 DianNao 系列深度學(xué)習(xí)處理器 [5] 等。 專用處理器的最終目標(biāo)不是替代通用 CPU, 而是與現(xiàn)有的通用 CPU 技術(shù)協(xié)作, 即將部分 CPU 運(yùn)行效率低下的應(yīng)用卸載 (offloading) 到用加速器上運(yùn)行, 通過(guò)構(gòu)建異構(gòu)計(jì)算平臺(tái)來(lái)高效地處理計(jì)算任務(wù)。 從產(chǎn)業(yè)生態(tài)的視角來(lái)看, 相比于通用處理器的硬件與軟件分離的 “水平” 模式, 專用加速器更注重軟硬協(xié)同的 “垂直” 發(fā)展模式。
從芯片的效能和適應(yīng)性兩個(gè)維度來(lái)刻畫芯片的特征。 這里效能指的是單位功耗下提供的計(jì)算能力, 適應(yīng)性就是通常意義下的通用性。 業(yè)界通常將數(shù)據(jù)處理芯片大體分為三大類: 處理器芯片、ASIC(application specifific integrated circuit) 芯片和 FPGA (fifield programmable gate array) 芯片。
處理器芯片包括 CPU, GPU, DSP 等, 是用戶可編程的芯片; ASIC 是面向特定應(yīng)用 (application-specifific) 的專用集成電路 [8], 通常也稱之為全定制芯片, 不可編程; FPGA 器件屬于專用集成電路中的一種半定制電路, 是可 “編程” 的邏輯列陣, 利用查找表來(lái)實(shí)現(xiàn)組合邏輯, 但 FPGA 的 “編程” 與處理器芯片的軟件編程不同, 主要是配置邏輯, 可以理解為硬件編程。
從相對(duì)性能來(lái)看, ASIC 芯片最好, 處理器芯片最差, FPGA 介于二者之間; 但是從應(yīng)用的適應(yīng)性來(lái)看, 處理器芯片最好, FPGA 次之, ASIC 芯片最差。
值得注意的是這種分類標(biāo)準(zhǔn)并不是按照電路制造工藝, 例如處理器芯片和 ASIC 芯片本質(zhì)上都是全定制的集成電路, 處理器芯片本質(zhì)也是一種 ASIC, 但與通常意義上 ASIC 的最大差別還在于是否具有指令集, 有指令集的就更類似傳統(tǒng)的處理器, 反之就歸類為 ASIC. 此外, 處理器芯片由于其使用廣泛、出貨量大, 與軟件生態(tài)聯(lián)系尤其緊密, 所以將其獨(dú)立為一個(gè)大的類別。
無(wú)論是 DSP、GPU、AI 芯片、NPU, 還是現(xiàn)在更新的各種 “XPU”, 都是處理數(shù)據(jù)的芯片, 最終都需要執(zhí)行二進(jìn)制代碼的程序來(lái)完成計(jì)算。 因此專用處理器設(shè)計(jì)也大都需要涉及如下 6 方面內(nèi)容:
(1) 約定二進(jìn)制代碼的格式, 即指令;
(2) 需要將指令變換為機(jī)器碼, 即匯編;
(3) 為了提高編程方便程度, 需要將高層程序語(yǔ)言轉(zhuǎn)換為匯編語(yǔ)言, 即編譯;
(4) 為了提高編程的效率, 提供了各種編程環(huán)境, 即集成開發(fā)環(huán)境 (integrated development environment, IDE);
(5) 充分復(fù)用高度優(yōu)化的代碼, 即應(yīng)用程序庫(kù);
(6) 為了方便程序調(diào)試, 還需要提供各種仿真工具, 即仿真器 (emulator)。
所以, 從系統(tǒng)抽象層次來(lái)看, 與通用處理器幾乎沒(méi)有區(qū)別。 但是不同的 DSIC 側(cè)重點(diǎn)不同, 有些 DSIC 只提供 API (application programming interface) 方式的調(diào)用, 例如早期的 GPU, 將編譯、匯編等過(guò)程全都凝結(jié)在運(yùn)行時(shí)庫(kù)中,從用戶角度看, 調(diào)用過(guò)程與使用 OpenCL [9] 中的 “內(nèi)建核函數(shù) (built-in kernels)” 類似,與調(diào)用普通的庫(kù)函數(shù)過(guò)程相同; 雖弱化的可編程性, 但是強(qiáng)化了用戶使用的便利性。 但也有些 DSIC, 如 DSP, 使用了大量底層編程, 雖編程難度高, 但方便精確地性能調(diào)優(yōu)。
DSP: 靈活的數(shù)據(jù)格式
DSP 也許是最早出現(xiàn)的專用集成電路。 DSP 的使用范圍非常廣, 從簡(jiǎn)單的 MP3 播放器到最新一代的 5G 通信都有使用場(chǎng)景。 常見(jiàn)的 DSP 大多帶有豐富的外設(shè)接口, 例如 PCIe、以太網(wǎng)、UART、I2C等, 尤其在很多嵌入式設(shè)備中, 豐富的外設(shè)接口對(duì)于提高系統(tǒng)的集成度、降低成本和功耗都有很大幫助, 所以很多 DSP 產(chǎn)品也演變成帶有豐富外設(shè)接口的 SoC (system on chip) 芯片, 如圖 2(a) 所示。
但是 DSP 最大的特點(diǎn)還是進(jìn)行數(shù)字信號(hào)處理的核。 大多數(shù) DSP 由于使用場(chǎng)景多為移動(dòng)設(shè)備, 或者只是作為 CPU 系統(tǒng)的數(shù)據(jù)輸入前端, 在系統(tǒng)中的地位并不高, 通常在功耗、散熱等方面都不可能給予太高容限, 所以功耗敏感、計(jì)算位寬對(duì) DSP 很重要, 定點(diǎn)、浮點(diǎn), 半精度、單精度、雙精度, 16 位、24 位、32 位、40 位等各種數(shù)據(jù)格式規(guī)范 “五花八門”。 在尋址上, DSP 對(duì)于數(shù)據(jù)對(duì)齊方式也最靈活, 設(shè)置了大量專門的指令對(duì)數(shù)據(jù)進(jìn)行對(duì)齊操作。
TI 公司是 DSP 芯片的龍頭, 被媒體評(píng)為是半導(dǎo)體行業(yè)利潤(rùn)率最高的公司。 2019 財(cái)年?duì)I業(yè)總收入144 億美金, 稅后凈利潤(rùn)高達(dá) 50 億美金, 利潤(rùn)率高達(dá) 35%. 作為比較, 同期 Intel 收入 720 億美金, 利潤(rùn)率 29%; 英偉達(dá)總營(yíng)收 110 億美金, 利潤(rùn)率 25%. TI 公司的 DSP 主要分為 3 大系列: C2000 系列,集成了 AD 轉(zhuǎn)換、Flash 存儲(chǔ)等, 主要用于控制馬達(dá)、變頻器等工控產(chǎn)品; C5000 系列, 16 位定點(diǎn), 主要用于便攜聲音、視頻、機(jī)頂盒等設(shè)備; C6000 系列, 采用了 VLIW (very long instruction word) 架構(gòu), 每秒執(zhí)行指令峰值可達(dá)百億條, 主要用于數(shù)字通信、圖像增強(qiáng)、傳輸、加密解密等對(duì)性能要求更高的場(chǎng)景。 下面就以比較復(fù)雜的 C6678 為例做簡(jiǎn)要介紹, 其頂層架構(gòu)如圖 2 所示。
1、通過(guò) VLIW 架構(gòu)提高性能
在 C6000 系列的 DSP 中, 采用了超長(zhǎng)指令字 (VLIW) 技術(shù), 性能的提升主要是通過(guò)引入 SIMD(single instruction multiple data) 來(lái)實(shí)現(xiàn)。 從 2 路 16 位、4 路 8 位 SIMD 操作, 到 8 路 16 位、4 路 32 位向量操作。 為了支持較寬的向量化操作, C66x 系列 DSP 設(shè)置了 8 個(gè)功能單元、兩組寄存器堆文件、兩條獨(dú)立數(shù)據(jù)通路; 每組寄存器文件包含 32 個(gè) 32 位通用寄存器, 而且可以支持 8, 16, 32, 40, 64 位等非常靈活的數(shù)據(jù)位寬打包存儲(chǔ)。 例如一個(gè)完整 32 位寄存器連同相鄰寄存器的低 8 位存儲(chǔ)一個(gè) 40 位的浮點(diǎn)數(shù), 同時(shí)相鄰寄存器的高 24 位還可以用于存其他的數(shù)。 乘法器支持 128, 40, 64 位數(shù)據(jù)。 顯然支持那么多 “非標(biāo)” 的定點(diǎn)和浮點(diǎn)數(shù), 如何來(lái)安排寄存器的分配成為一個(gè)很有挑戰(zhàn)的問(wèn)題。
2、指令緩存和程序緩存分離
將指令與數(shù)據(jù)分離也就是著名的 “哈佛結(jié)構(gòu)”, 一級(jí)程序緩存 (L1P) 采用直接映射, 一級(jí)數(shù)據(jù)緩存(L1D) 采用多路組相連。 這樣導(dǎo)致了緩存替換策略的不同, L1P 采用新緩存行替換同一位置的舊緩存行, 采用讀 – 分配 (read-allocate) 策略。 相較而言, L1D 復(fù)雜的多, 采用了最近最少使用 (least recently used, LRU) 替換策略和回寫 (writeback) 機(jī)制: 當(dāng)數(shù)據(jù)被更新時(shí), 并不立即更新相應(yīng)的緩存位置和存儲(chǔ)器地址, 而只做 “dirty” 標(biāo)記, 只有數(shù)據(jù)被替換出緩存, 或者手動(dòng)啟動(dòng)一致性操作指令, 或出現(xiàn)長(zhǎng)距離訪問(wèn) (此時(shí)所有高速緩存的局部性都極有可能被破壞), 才會(huì)寫回到存儲(chǔ)器。 這也說(shuō)明指令的局部性是比數(shù)據(jù)的局部性顯著得多, 而且對(duì)于核而言, 指令緩存是只讀的, 而數(shù)據(jù)緩存可讀可寫, 從這個(gè)意義上看, 將二者分開也是有好處的。 此外, DSP 的緩存還支持很多先進(jìn)的管理功能, 例如強(qiáng)制凍結(jié)模式(freeze mode), 可以防止中斷程序破壞已經(jīng)建立在緩存中的數(shù)據(jù)局部性, 降低中斷恢復(fù)后 “冷啟動(dòng)” 性能開銷。 這些操作也全都由程序員來(lái)完成。
3、硬件指令支持一致性管理
多核并不是 CPU 的 “專利”, C6000 系列也提供多核的 DSP, 由于多核引入會(huì)導(dǎo)致數(shù)據(jù)一致性的問(wèn)題, C66x 系列 DSP 也提供了柵欄指令 (MFENCE) 來(lái)處理緩存回寫, 強(qiáng)制或阻止一致性操作的執(zhí)行等, 方便程序員管理數(shù)據(jù)一致性。
4、硬件化的帶寬管理防止運(yùn)行阻塞
DSP 核中還設(shè)置了硬件化帶寬管理, 負(fù)責(zé)管理一級(jí)數(shù)據(jù)緩存 (L1D)、一級(jí)程序緩存 (L1P)、二級(jí)緩存 (L2)、寄存器配置總線等 4 類資源的訪問(wèn)優(yōu)先級(jí)。 訪問(wèn)發(fā)起方包括 DSP、外部 DMA (enhanced direct memory access, EDMA)、內(nèi)部 DMA (internal direct memory access, IDMA)、數(shù)據(jù)一致性操作。
管理按照每次訪問(wèn)授予優(yōu)先級(jí), 而不是按照訪問(wèn)類型固定優(yōu)先級(jí), 通過(guò)設(shè)置競(jìng)爭(zhēng)強(qiáng)度計(jì)數(shù)器來(lái)反映對(duì)資源的 “饑渴” 程度, 即便是最低優(yōu)先級(jí)的訪問(wèn), 隨著等待時(shí)間增加, 優(yōu)先級(jí)就會(huì)逐漸升高, 當(dāng)達(dá)到最長(zhǎng)等待周期數(shù), 就會(huì)強(qiáng)制授予一次訪問(wèn)。 而這些都是硬件管理的, 程序員只能設(shè)置最長(zhǎng)等待時(shí)間, 不能設(shè)置競(jìng)爭(zhēng)計(jì)數(shù)器。 這樣的硬件化維護(hù)資源公平性的設(shè)置在 CPU 中并不常見(jiàn)。
由以上分析可以看出, DSP 作為一類典型的專用處理器, 其結(jié)構(gòu)與數(shù)字信號(hào)處理需要豐富的 IO接口便于集成, 強(qiáng)大的浮點(diǎn)處理能力支持高帶寬的信號(hào)處理, 還提供了豐富的底層數(shù)據(jù)通路的控制手段方便專業(yè)用戶的性能調(diào)優(yōu)。
審核編輯 :李倩
-
處理器
+關(guān)注
關(guān)注
68文章
19115瀏覽量
228861 -
asic
+關(guān)注
關(guān)注
34文章
1183瀏覽量
120240 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4749瀏覽量
100434 -
數(shù)據(jù)處理
+關(guān)注
關(guān)注
0文章
576瀏覽量
28509
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論