作者:Olivier Tremois(AI 引擎工具市場(chǎng)營(yíng)銷部門)和 Florent Werbrouck(賽靈思技術(shù)支持產(chǎn)品應(yīng)用工程師)
Versal ACAP 簡(jiǎn)介
Versal 自適應(yīng)計(jì)算加速平臺(tái) (ACAP) 是基于 TSMC 7nm FinFET 工藝技術(shù)構(gòu)建的最新一代賽靈思器件。它利用高帶寬片上網(wǎng)絡(luò) (NoC) 將代表處理器系統(tǒng) (PS) 的標(biāo)量引擎、代表可編程邏輯 (PL) 的自適應(yīng)引擎與智能引擎有機(jī)結(jié)合在一起。
本文將著重介紹智能引擎中所包含的 AI 引擎。
賽靈思 AI 引擎簡(jiǎn)介
在部分賽靈思 Versal ACAP 中包含了 AI 引擎。這些 AI 引擎可排列組合為一組與內(nèi)存、數(shù)據(jù)流和級(jí)聯(lián)接口相連的二維AI 引擎拼塊陣列。在當(dāng)前 ACAP 器件(例如,VC1902 器件)上,此陣列最多可包含 400 個(gè)拼塊。此陣列中還包含AI 引擎接口(位于最后一行),以便于陣列中的其它器件(PS、PL 和 NoC)進(jìn)行交互。
AI 引擎接口包含PL 和 NoC 接口拼塊以及配置拼塊。從 PL 到 AI 引擎陣列的連接是使用 AXI4-Stream 接口通過(guò) PL 和 NoC 接口拼塊來(lái)實(shí)現(xiàn)的。從 NoC 到 AI 引擎陣列的連接是使用 AXI4 存儲(chǔ)器映射接口通過(guò) NoC 接口拼塊來(lái)實(shí)現(xiàn)的。
有趣的是,從中可以看到,只有在 NoC 到 AI 引擎拼塊之間才存在 AXI4 存儲(chǔ)器映射直接通信通道,在 AI 引擎拼塊到 NoC 之間卻并不存在。
注:PL 和 NoC 接口拼塊的精確數(shù)量因器件而異?!禫ersal 架構(gòu)和產(chǎn)品數(shù)據(jù)手冊(cè):簡(jiǎn)介》(DS950) 中羅列了 AI 引擎陣列的大小。
https://china.xilinx.com/support/documentation/data_sheets/ds950-versal-...
AI 引擎拼塊架構(gòu)
現(xiàn)在,我們來(lái)詳細(xì)了解下此陣列,看看 AI 引擎拼塊的內(nèi)部。
每個(gè) AI 引擎拼塊都包含:
- 1 個(gè)拼塊互連模塊,用于處理 AXI4-Stream 和存儲(chǔ)器映射 AXI4 輸入/輸出
- 1 個(gè)存儲(chǔ)器模塊,其中包含 32 KB 數(shù)據(jù)內(nèi)存,細(xì)分為 8 個(gè)內(nèi)存 bank、1 個(gè)內(nèi)存接口、DMA 和各種鎖定。
- 1 個(gè) AI 引擎
AI 引擎可訪問(wèn)全部 4 個(gè)方向中的多達(dá) 4 個(gè)內(nèi)存模塊(作為 1 個(gè)連續(xù)存儲(chǔ)器塊)。這意味著除了拼塊本地的內(nèi)存,AI 引擎還可以訪問(wèn) 3 個(gè)相鄰拼塊的本地內(nèi)存(除非拼塊位于陣列邊緣)。
- 北側(cè)內(nèi)存模塊
- 南側(cè)內(nèi)存模塊
- 東側(cè)或西側(cè)內(nèi)存模塊(取決于 AI 引擎和內(nèi)存模塊所在的行和相對(duì)布局)。
AI 引擎架構(gòu)
AI 引擎屬于高度優(yōu)化的處理器,包含下列主要特色:
- 32 位標(biāo)量 RISC 處理器(名為 Scalar Unit)
- 1 個(gè) 512b SIMD 矢量單元(可提供矢量定點(diǎn)/整數(shù)單元)和 1 個(gè)單精度浮點(diǎn) (SPFP) 矢量單元
- 3 個(gè)地址生成器單元 (AGU)
- 超長(zhǎng)指令字 (VLIW) 功能
- 3 個(gè)數(shù)據(jù)內(nèi)存端口(2 個(gè)負(fù)載端口,1 個(gè)存儲(chǔ)端口)
- 直接流傳輸接口(2 個(gè)輸入流,2 個(gè)輸出流)
AI 引擎陣列編程
AI 引擎拼塊按 10 或 100 為單位組成陣列。創(chuàng)建嵌入多項(xiàng)指令的單一程序用于指定并行性將是一項(xiàng)冗長(zhǎng)且近乎不可能的任務(wù)。因此 AI 引擎陣列模型編程與 Kahn 處理網(wǎng)絡(luò) (Kahn Process Networks) 之間的共通之處在于自主計(jì)算進(jìn)程通過(guò)通信邊緣實(shí)現(xiàn)彼此互連,從而生成處理網(wǎng)絡(luò)。
(請(qǐng)參閱 https://perso.ensta-paris.fr/~chapoutot/various/kahn_networks.pdf )
在 AI 引擎框架中,Graph 邊緣是緩存和數(shù)據(jù)流,而計(jì)算進(jìn)程則被稱為內(nèi)核。在Graph中,內(nèi)核經(jīng)過(guò)例化,彼此相連并連接到設(shè)計(jì)其余部分(NoC 或 PL)。
編程流程分為 2 個(gè)階段:
單內(nèi)核編程:
內(nèi)核用于描述特定計(jì)算進(jìn)程。每個(gè)內(nèi)核都將在單一 AI 引擎拼塊上運(yùn)行。但請(qǐng)注意,多個(gè)內(nèi)核可在同一個(gè) AI 引擎拼塊上運(yùn)行,并共享處理時(shí)間。任意 C/C++ 代碼均可用于對(duì) AI 引擎進(jìn)行編程。標(biāo)量處理器將處理大部分代碼。如果您的目標(biāo)是設(shè)計(jì)高性能內(nèi)核,那么應(yīng)考慮采用矢量處理器,它使用稱為內(nèi)部函數(shù)的專用函數(shù)。這些函數(shù)專用于 AI 引擎的矢量處理器,支持您從 AI 引擎中發(fā)掘出巨大的處理性能。賽靈思將提供預(yù)構(gòu)建內(nèi)核(包含在庫(kù)內(nèi)),以供用戶在其定制 Graph 中使用。
Graph 編程:
賽靈思將提供 C++ 框架以從內(nèi)核創(chuàng)建Graph。此框架包含 Graph 節(jié)點(diǎn)和連接聲明。這些節(jié)點(diǎn)可包含在 AI 引擎陣列內(nèi)或可編程邏輯(HLS 內(nèi)核)中。為了完全掌握內(nèi)核位置,將有一系列方法可用來(lái)約束布局(內(nèi)核、緩存、系統(tǒng)內(nèi)存等)。Graph 將例化并使用緩存和數(shù)據(jù)流將內(nèi)核連接在一起。它還將描述 AI 引擎陣列與其它ACAP 器件(PL 或 DDR)之間的雙向往來(lái)數(shù)據(jù)傳輸。
賽靈思將提供預(yù)構(gòu)建 Graph(包含在庫(kù)內(nèi)),以供用戶在其應(yīng)用中使用。
在運(yùn)行時(shí)以及仿真期間,AI 引擎應(yīng)用由 PS 進(jìn)行控制。
賽靈思將根據(jù)應(yīng)用的操作系統(tǒng)提供多種 API,如下所述。
編輯:hfy
-
賽靈思
+關(guān)注
關(guān)注
32文章
1794瀏覽量
131271 -
AI
+關(guān)注
關(guān)注
87文章
30895瀏覽量
269086 -
可編程邏輯
+關(guān)注
關(guān)注
7文章
515瀏覽量
44086
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論