引言
隨著人工智能和5G的興起,數(shù)據(jù)處理對芯片的算力和帶寬要求更高。為了布局未來,助力人工智能和5G,賽靈思也推出了自己的FPGA加速芯片-ACAP。ACAP是一款基于7nm工藝,集成了通用處理器(PS),F(xiàn)PGA(PL),math engine以及network-on-chip的革命性芯片。特別是新增的ME結(jié)構(gòu),是一個(gè)類似于GPU的多核并發(fā)計(jì)算單元,可以大大提高數(shù)據(jù)處理能力。同時(shí)ME支持軟件語言C,C++,這有利于擴(kuò)大FPGA的使用用戶,同時(shí)方便了設(shè)計(jì)開發(fā)。
ME結(jié)構(gòu)簡介
ME結(jié)構(gòu)由很多ME核組成的二維陣列結(jié)構(gòu),核之間可以實(shí)現(xiàn)數(shù)據(jù)通信。ME陣列通過NoC可以和PL以及PS端進(jìn)行通信,NoC是一種互聯(lián)總線,其提供了ME陣列到PL側(cè)的高帶寬通路。ME核包含了BRAM,DSP以及控制邏輯。ME具有以下特點(diǎn):
1) 有一個(gè)RISC處理器,能夠支持32bit標(biāo)量數(shù)據(jù)運(yùn)算,包括sin/cos,開方,乘法等操作;
2) 向量乘法計(jì)算單元。這是一個(gè)由DSP組成的陣列,能夠支持32個(gè)16bitx8bit,64個(gè)16x8bit,128個(gè)8x8bit計(jì)算。還支持8個(gè)單精度乘法計(jì)算;
3) 指令控制結(jié)構(gòu)支持load和save,向量乘法等操作,這些操作統(tǒng)一用一個(gè)指令字段描述;
4) 含有多路AXI stream,可以實(shí)現(xiàn)高速數(shù)據(jù)通信;
5) 含有一個(gè)128bit寬1K深的程序存儲器,支持指令壓縮,可通過AXI-MM進(jìn)行配置;
6) 含有多個(gè)數(shù)據(jù)存儲器,分成多個(gè)bank,共有32KB容量;
7) 含有配置接口,用于ME核的配置和調(diào)試;
8) 含有debug/trace/profile功能,用于程序追蹤和調(diào)試;
ME核的工作頻率達(dá)到1GHz,電壓0.7V,具有較低功耗。ME支持多種形式的數(shù)據(jù)傳送,包括AXI-MM,AXI-stream,以及ME之間共享的bank進(jìn)行數(shù)據(jù)直接交互。
為了保證性能的可預(yù)測性,ME之間數(shù)據(jù)通信不存在緩存一致性。但是ME和PS之間通信是需要緩存一致性功能的,ME和PS端共享DDR中一段內(nèi)存。當(dāng)PS處理完數(shù)據(jù)發(fā)送給ME時(shí),是要保證處理的數(shù)據(jù)都已經(jīng)存儲到DDR中了。而ME處理完數(shù)據(jù)寫到DDR中后,也要讓PS知道數(shù)據(jù)已經(jīng)寫完。ME可以使用虛擬地址去訪問PS的存儲或者DDR,ME地址會經(jīng)過PS端的MMU進(jìn)行解析。
為了保證某些過程的安全性(比如對TrustZone的保護(hù),或者防止ME陣列的重要信息被讀?。?,ME提供了一些保護(hù)措施。主要包括對ME訪問的保護(hù),AXI-MM傳輸?shù)陌踩员Wo(hù),AXI-stream數(shù)據(jù)訪問的保護(hù)等。
ME陣列可以在功能上被分割成多個(gè)子陣列使用,這可以用于一些需要ME陣列完成多種功能的任務(wù)。其中ME核,AXI-stream,數(shù)據(jù)存儲訪問等模塊都可以被分割。只有AXI-MM不能被分割。NoC中可以支持對控制信息的修改,從而可以給不同子陣列發(fā)送不同的控制信息。每個(gè)ME核含有256Kb的數(shù)據(jù)存儲器和128Kb的程序存儲器,對于一個(gè)300個(gè)ME核的芯片就含有77Mb數(shù)據(jù)存儲和38Mb程序存儲,這么大的空間,保證數(shù)據(jù)準(zhǔn)確性是很關(guān)鍵的。因此不論是數(shù)據(jù)存儲器還是程序存儲器都提供了ECC校驗(yàn),以防止軟件錯誤產(chǎn)生的數(shù)據(jù)錯誤問題。程序存儲器每144bit包含128bit有效數(shù)據(jù)和8bitECC校驗(yàn)位。8bit校驗(yàn)位可以在每64bit數(shù)據(jù)中糾正1bit數(shù)據(jù)和檢測出2bit數(shù)據(jù)錯誤。存儲數(shù)據(jù)出錯會生成錯誤事件,反饋給debug或者profile模塊報(bào)告這些錯誤。
ME陣列被分配了4個(gè)1GB的地址映射區(qū)域,目前芯片只有一個(gè)ME陣列,所以只使用了1GB地址映射空間。ME的地址含有整體陣列的offset,陣列的行列編號,以及ME核中存儲地址。這些信息可以確定往哪個(gè)ME中的存儲位置讀寫數(shù)據(jù)。
ME中有4個(gè)時(shí)鐘:ME核時(shí)鐘,高頻,可到1GHz,用于ME中的數(shù)據(jù)傳輸和運(yùn)算。NoC時(shí)鐘,數(shù)據(jù)時(shí)鐘,用于從PL到ME的數(shù)據(jù)輸送。PL側(cè)時(shí)鐘以及NPI時(shí)鐘,NPI時(shí)鐘用于調(diào)試追蹤等。
數(shù)據(jù)傳輸結(jié)構(gòu)
為了保證不同設(shè)備之間的數(shù)據(jù)交換,我們需要滿足兩個(gè)條件:一個(gè)是數(shù)據(jù)實(shí)際的流通,這個(gè)包含數(shù)據(jù)傳輸通路和數(shù)據(jù)存儲;當(dāng)然也不必包含有存儲,流水線處理的數(shù)據(jù)只有數(shù)據(jù)流通;另外一個(gè)是發(fā)送者和收發(fā)者之間的同步。接受者接收數(shù)據(jù)只有在發(fā)送者發(fā)出數(shù)據(jù)之后,同時(shí)發(fā)送者發(fā)送數(shù)據(jù)必須等接受者準(zhǔn)備好接收數(shù)據(jù)。因此一些同步信號是必須的。
ME陣列中能夠?qū)崿F(xiàn)數(shù)據(jù)交互的設(shè)備有:
1) 本地存儲bank。每個(gè)ME包含8個(gè)bank,這些bank可以用于和周圍4個(gè)ME進(jìn)行數(shù)據(jù)通信。ME通過load和save指令來讀寫本地存儲器。如果ME的寫和另外一個(gè)ME的讀同時(shí)發(fā)生,可以通過ping/pong操作同步。
2) Stream-network可用于所有ME之間數(shù)據(jù)交互。而且stream本身是具有同步信號的,所以無需增加額外同步信號。
3) AXI-MM接口能夠用于ME和PL端甚至是外部存儲器進(jìn)行通信。
保證數(shù)據(jù)同步的裝置有:
1) ME本地原子鎖。這個(gè)鎖可以保證生產(chǎn)者和消費(fèi)者的數(shù)據(jù)訪問沖突解決。如果鎖被置為1,表示可以被讀,如果為0表示可以寫。
2) Shim-DMA鎖。用于同步不同DMA通道,或者DMA通道和AXI-MM通道;
3) 信號量機(jī)制。對于ME和PS端的數(shù)據(jù)通信,還可以通過軟件層次的信號量機(jī)制來進(jìn)行同步,因?yàn)镻S端可以通過AXI-MM接口實(shí)現(xiàn)和ME之間的數(shù)據(jù)同步;
4) Stream網(wǎng)絡(luò)自身附帶的同步特性,用于不同ME之間交換數(shù)據(jù)。
PL和ME由于處于不同時(shí)鐘區(qū)域,ME是高頻時(shí)鐘,而PL側(cè)時(shí)鐘頻率較低。為了實(shí)現(xiàn)數(shù)據(jù)跨時(shí)鐘域傳輸,芯片提供了shim接口,shim中含有異步FIFO。FPGA可以以64bit或者32bit將數(shù)據(jù)寫入FIFO,而ME將FIFO中數(shù)據(jù)讀出進(jìn)行運(yùn)算。ME獲得數(shù)據(jù)有兩種方式,一種是通過DMA將數(shù)據(jù)讀出寫入到ping/pong buffer,這樣可以實(shí)現(xiàn)ME核中兩個(gè)函數(shù)的計(jì)算任務(wù)。如果ME中不需要ping/pong操作,可以不同各國DMA將數(shù)據(jù)存儲到buffer??梢詮膕tream直接獲得數(shù)據(jù)進(jìn)行計(jì)算。
接下來我們看看ME內(nèi)部數(shù)據(jù)如何通信:
1) ME內(nèi)部不同操作之間可以使用shared memory來進(jìn)行數(shù)據(jù)交互,但是每次只允許一個(gè)操作來訪問shared memory,即讀寫無法同時(shí)進(jìn)行;
2) 兩個(gè)相鄰ME可以通過shared memory來進(jìn)行數(shù)據(jù)交互,通過ping/pong buffer可以實(shí)現(xiàn)一個(gè)寫一個(gè)讀;
3) 對于不相鄰的ME,也可以使用ping/pong buffer。但是這個(gè)時(shí)候ME無法直接去訪問另外一個(gè)ME的存儲,但是每個(gè)ME都可以建立自己的ping/pong buffer,這兩組buffer可以通過DMA進(jìn)行數(shù)據(jù)交互;
4) 不同的ME之間還可以通過AXI-stream接口進(jìn)行數(shù)據(jù)交互;
5) 有時(shí)候一個(gè)大型計(jì)算要在幾個(gè)ME之間完成,這就需要不同ME之間進(jìn)行高速數(shù)據(jù)通信,相鄰的ME之間還有級聯(lián)總線,可以實(shí)現(xiàn)兩個(gè)ME之間的累加運(yùn)算,這個(gè)總線位寬達(dá)到384bit;
6) ME還可以直接從外部存儲器中獲得數(shù)據(jù),它將數(shù)據(jù)請求包發(fā)送給ME-shim,這個(gè)請求包含有包頭和數(shù)據(jù)請求信息,包頭中有原和目的地址,數(shù)據(jù)請求中含有數(shù)據(jù)長度信息。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618590 -
gpu
+關(guān)注
關(guān)注
28文章
4948瀏覽量
131256 -
人工智能
+關(guān)注
關(guān)注
1807文章
49029瀏覽量
249586 -
數(shù)據(jù)存儲器
+關(guān)注
關(guān)注
1文章
69瀏覽量
17992 -
ACAP
+關(guān)注
關(guān)注
1文章
54瀏覽量
8422
發(fā)布評論請先 登錄
主流汽車電子SoC芯片對比分析
雷軍:小米自研芯片采用二代3nm工藝 雷軍分享小米芯片之路感慨
Xilinx Ultrascale系列FPGA的時(shí)鐘資源與架構(gòu)解析

北京市最值得去的十家半導(dǎo)體芯片公司
聯(lián)發(fā)科采用AI驅(qū)動Cadence工具加速2nm芯片設(shè)計(jì)
芯片封裝中的FOPLP工藝介紹

芯片制造的7個(gè)前道工藝

7納米工藝面臨的各種挑戰(zhàn)與解決方案
助力AIoT應(yīng)用:在米爾FPGA開發(fā)板上實(shí)現(xiàn)Tiny YOLO V4
比亞迪發(fā)布采用4nm工藝的自研汽車芯片,跑分高達(dá)115萬

臺積電產(chǎn)能爆棚:3nm與5nm工藝供不應(yīng)求
S7t-VG6 VectorPath加速卡的特性和功能
今日看點(diǎn)丨 傳蘋果2025年采用自研Wi-Fi芯片 臺積電7nm制造;富士膠片開始銷售用于半導(dǎo)體EUV光刻的材料
FPGA加速深度學(xué)習(xí)模型的案例
所謂的7nm芯片上沒有一個(gè)圖形是7nm的

評論