FPGA (現(xiàn)場(chǎng)可編程門陣列)由于其硬件并行加速能力和可編程特性,在傳統(tǒng)通信領(lǐng)域和IC設(shè)計(jì)領(lǐng)域大放異彩。一路走來,F(xiàn)PGA并非一個(gè)新興的硬件器件,由于其開發(fā)門檻過高,硬件加速算法的發(fā)布和部署保護(hù)要求非常高,F(xiàn)PGA的使用一直是高冷的美人,沒有走入尋常百姓家,導(dǎo)致FPGA的計(jì)算潛力還沒有得到深入的挖掘。
接下來,我們來看看阿里云對(duì)它進(jìn)行了怎樣的改造。
阿里云ECS的異構(gòu)計(jì)算團(tuán)隊(duì)和高性能計(jì)算團(tuán)隊(duì)一直致力于將計(jì)算資源“平民化”;高性能計(jì)算團(tuán)隊(duì)在做的E-HPC就是要讓所有云上用戶都能夠瞬間擁有一個(gè)小型的超算集群,使得超算不再僅僅是一些超算中心和高校的特權(quán);而我們異構(gòu)計(jì)算團(tuán)隊(duì)則致力于將目前最快、最新的計(jì)算設(shè)備在云上提供給用戶,使得曾經(jīng)高冷的計(jì)算資源不再拒人千里之外:我們推出了FPGA云服務(wù)器FaaS 服務(wù), 其中的F1和F2實(shí)例已經(jīng)對(duì)外提供服務(wù),可以通過一鍵部署的方式把Intel和Xilinx的小規(guī)格的器件計(jì)算能力賦予客戶。
今天我們很高興地宣布:新晉的大規(guī)格FPGA實(shí)例,基于Xilinx 16nm Virtex UltraScale+ 器件VU9P的異構(gòu)計(jì)算實(shí)例F3在阿里云上線了!
我們借此機(jī)會(huì),對(duì)阿里云FPGA計(jì)算服務(wù)(下面簡(jiǎn)稱FaaS)本身,以及這次發(fā)布的F3實(shí)例的底層硬件架構(gòu)和平臺(tái)架構(gòu)做一個(gè)技術(shù)解讀。
FaaS
阿里FPGA云服務(wù)器平臺(tái)FaaS(FPGA as a Service)在云端提供統(tǒng)一硬件平臺(tái)與中間件,可大大降低加速器的開發(fā)與部署成本。加速器開發(fā)商的加速器可以形成服務(wù)提供給加速器用戶,消除加速技術(shù)與最終用戶的硬件壁壘。用戶則能夠在無需了解底層硬件的情況下,直接按需使用加速服務(wù)。
為了給加速器提供方和使用方提供更加高效、統(tǒng)一的開發(fā)及部署平臺(tái),F(xiàn)aaS提供兩大套件:HDK和SDK。
HDK
HDK給所有的加速器開發(fā)者提供統(tǒng)一的FPGA硬件接口,提前幫用戶解決了FPGA開發(fā)中難度最大的高速接口開發(fā)及調(diào)試,例如PCIe、SERDES接口、DDR控制器等等;使得用戶能夠直接得到硬件平臺(tái)和FPGA接口的最大性能,不會(huì)因?yàn)閳F(tuán)隊(duì)開發(fā)能力和經(jīng)驗(yàn)的欠缺,造成硬件平臺(tái)性能浪費(fèi);高效、可靠、統(tǒng)一的接口套件也為云上平臺(tái)的安全隔離、設(shè)備穩(wěn)定提供了保障,不會(huì)因?yàn)橛脩舻慕涌谠O(shè)計(jì)問題,造成服務(wù)器宕機(jī);同時(shí)可以杜絕用戶在FPGA端對(duì)主機(jī)的非法操作,為整個(gè)云上安全提供保障。
HDK包括兩個(gè)部分,Shell和 Role;Shell部署在靜態(tài)區(qū)域,提供上述統(tǒng)一接口部分。
在提供統(tǒng)一接口、安全性和便捷性的前提下,阿里云FaaS HDK 也盡最大的努力保證用戶設(shè)計(jì)的靈活性,Role的概念應(yīng)運(yùn)而生。Role部署在動(dòng)態(tài)區(qū)域,是在Shell之外,預(yù)先開發(fā)并提供的,用戶可以配合用戶邏輯(Customer Logic)使用。不同于Shell,用戶可以根據(jù)需要,隨時(shí)更換Role部分;這種Shell + Role的組合方式,保證了Shell的最輕量化和穩(wěn)定性,又兼顧了統(tǒng)一性、便捷性和靈活性。
SDK
SDK包括兩個(gè)部分:
和HDK(Shell+Role)對(duì)應(yīng)的主機(jī)端驅(qū)動(dòng)(Drivers)和軟件庫(kù)(Libraries)
FPGA管理工具 faascmd套件
驅(qū)動(dòng)和軟件庫(kù)和HDK的Shell以及Role相對(duì)應(yīng),和HDK一起,為用戶提供統(tǒng)一及靈活的軟件支持,比如DMA驅(qū)動(dòng)、寄存器訪問驅(qū)動(dòng)等等。
faascmd工具套件為用戶提供云上FPGA管理服務(wù),包括安全校驗(yàn)、FPGA鏡像生成、下載及管理、FPGA加速卡狀態(tài)查詢反饋等功能。公有環(huán)境使用FPGA,需要考慮用戶FPGA文件的安全,faascmd提供的秘鑰及OSS bucket指定機(jī)制,有效保證了用戶的FPGA下載文件的私密性。在線下的開發(fā)及應(yīng)用中,開發(fā)者直接對(duì)FPGA進(jìn)行下載操作,但在云上環(huán)境,用戶對(duì)公有的FPGA資源直接操作對(duì)安全造成較大影響。Faascmd工具會(huì)對(duì)用戶操作申請(qǐng)和物理FPGA資源進(jìn)行隔離,保證了用戶下載安全的同時(shí),提供給用戶類似線下操作的體驗(yàn);同時(shí)會(huì)對(duì)用戶提交的網(wǎng)表進(jìn)行校驗(yàn),提高安全、降低風(fēng)險(xiǎn)。faascmd同時(shí)也提供調(diào)用接口,用戶能很容易地在自己的App中調(diào)用管理工具,結(jié)合自身加速器特性實(shí)現(xiàn)各種管理功能。
FaaS 的IP市場(chǎng)
FaaS降低了FPGA開發(fā)者的開發(fā)準(zhǔn)入門檻:云上即開即用的FPGA資源、靈活的付費(fèi)模式使得硬件資源觸手可及;同時(shí)簡(jiǎn)化了開發(fā)流程,統(tǒng)一了開發(fā)接口,把核心加速邏輯從周邊硬件設(shè)備的接口調(diào)試中隔離出來,使得FPGA的新興應(yīng)用可以只關(guān)注業(yè)務(wù)加速的核心邏輯,快速迭代;在這兩點(diǎn)上,阿里云的FaaS 邁出了FPGA計(jì)算資源平民化的第一步。
但即便是大大簡(jiǎn)化了開發(fā)流程、提供了觸手可及的硬件資源,F(xiàn)PGA依然有一定的開發(fā)門檻。如何把已有的FPGA 邏輯IP價(jià)值最大化,聯(lián)通FPGA加速的需求方和提供方來擴(kuò)大生態(tài)呢?重要的一點(diǎn)就是如何解決在公共云數(shù)據(jù)中心層面保證FPGA加速IP的安全性,特別是對(duì)不可信的第三方進(jìn)行輸出和部署這個(gè)難題, FaaS是如何解決這個(gè)問題的呢?
答案是通過阿里云FaaS的IP市場(chǎng)。技術(shù)上,通過與Xilinx聯(lián)合開發(fā)的定制虛擬化技術(shù)達(dá)到IP加速與部署環(huán)境的強(qiáng)隔離,IP的用戶與IP的網(wǎng)表文件完全隔離,網(wǎng)表文件的傳輸、部署、加速流程全程對(duì)用戶都不可見;同時(shí)加速計(jì)算能力又可以透明地向使用該IP的第三方用戶開放,這是阿里云在FPGA云上加速服務(wù)的另外一個(gè)技術(shù)創(chuàng)新。這個(gè)創(chuàng)新,完全杜絕了FPGA IP在云上輸出的時(shí)候被盜版的可能,提供了非常高的安全保護(hù)機(jī)制。
更加嚴(yán)格的保密機(jī)制也在規(guī)劃中:很快可以通過阿里云的KMS加密服務(wù)對(duì)IP進(jìn)行加密保護(hù),每次對(duì)IP加載前都需要向KMS服務(wù)獲取秘鑰解密,這樣一來針對(duì)IP的使用下載有據(jù)可查;并且使得IP發(fā)布方的IP在數(shù)據(jù)中心內(nèi)部都是安全的,因?yàn)闆]有了IP提供方的KMS秘鑰,即便是阿里云也無法對(duì)加密的網(wǎng)表進(jìn)行解密操作。
在阿里云FaaS IP 市場(chǎng)的幫助下,即便是從來沒有任何FPGA開發(fā)經(jīng)驗(yàn)的用戶,也可以一鍵從IP市場(chǎng)中獲取相應(yīng)的加速邏輯,并快速部署到對(duì)應(yīng)的FPGA器件上面去。我們相信,通過即開即用的硬件資源、統(tǒng)一的軟硬件邏輯開發(fā)接口和IP市場(chǎng),阿里云能夠真正兌現(xiàn)FPGA計(jì)算資源平民化的承諾。
F3硬件架構(gòu)
阿里云FaaS的F3實(shí)例在底層硬件上,是使用阿里云自主研發(fā)的高性能單卡雙芯片的VU9P的板卡。這里要?jiǎng)澲攸c(diǎn)啦:?jiǎn)慰p芯片。一定有用戶要問為什么要這么設(shè)計(jì)呢?單卡雙芯片的硬件設(shè)計(jì)有什么好處呢?
首先,對(duì)于用戶來說,通過單卡雙芯片這樣的規(guī)格設(shè)計(jì),與阿里云配套自研的服務(wù)器一起,最高可以提供單實(shí)例16 塊 VU9P的計(jì)算實(shí)例。16塊 VU9P是非常高的計(jì)算密度了,這是設(shè)計(jì)單卡雙芯片的第一個(gè)目的:通過提高計(jì)算密度,在同等計(jì)算單元下集成了更多的加速芯片,能夠有效降低單位計(jì)算力的成本,從成本大幅降低和單位實(shí)例的垂直計(jì)算力提升上,客戶可以雙重受益。
單卡雙芯片的兩個(gè)VU9P芯片通過PCIe 橋接入系統(tǒng),那么雙芯片之間的互相通信呢?是不是只能通過PCIe的總線來進(jìn)行呢,答案是否定的,除了FPGA Direct這種通過PCIe互相通信的能力之外,在阿里云的自研的板卡上也是有特殊考慮的。在兩個(gè)芯片之間,我們?cè)O(shè)計(jì)了一個(gè)高速互聯(lián)通道,使得兩個(gè)FPGA之間可以通過這個(gè)特殊的通道以高達(dá)600Gb/s的速率進(jìn)行通信,這個(gè)通信技術(shù)我們稱之為FPGA Link。要知道,現(xiàn)在的數(shù)據(jù)中心主流部署的接入交換機(jī)光口通信也只能達(dá)到100Gb/s的通信速率,更高的200Gb/s的交換機(jī)還在試部署中。
試想一下,無需額外的交換機(jī)和光口硬件,兩個(gè)FPGA芯片可以通過FPGA Link技術(shù)以超短時(shí)延通過6倍于主流光口通信的速率進(jìn)行通信,這個(gè)將會(huì)以極低的成本幫助用戶開啟大量新的FPGA加速應(yīng)用模式。比如,小規(guī)模的芯片仿真,需要兩個(gè)器件才能部署得下的情況,可以將整體仿真模塊拆解之后部署到兩個(gè)芯片上,兩個(gè)芯片之間的數(shù)據(jù)通路和同步信號(hào)通過高速通道互聯(lián);還有其他的應(yīng)用場(chǎng)景,需要把功能模塊部署到兩個(gè)FPGA芯片之上,而兩者之間需要大量的數(shù)據(jù)交換,比如視頻轉(zhuǎn)碼場(chǎng)景:把小規(guī)模但是模塊數(shù)目比較多的解碼單元、視頻處理單元部署到一個(gè)FPGA之上,把面積占用比較多的編碼單元放到另外一個(gè)FPGA上,編解碼模組之間通過高速互聯(lián)交換裸視頻流。這將大大改善部署的難度,以及極大的解耦兩個(gè)模塊之間的相互依賴和設(shè)計(jì)難度。以上舉了兩個(gè)例子,讀者一定能夠舉一反三地想到,其他需要流水線處理并需要大量數(shù)據(jù)交換的場(chǎng)景,阿里云的F3實(shí)例的雙芯片實(shí)例能夠?yàn)榭蛻籼峁┳畲蟮膬r(jià)值。
不少應(yīng)用場(chǎng)景對(duì)板載的DDR存儲(chǔ)還是有要求的。阿里云的F3實(shí)例,為每個(gè)FPGA搭配了客戶可見的64GB的DDR內(nèi)存,這64GB的DDR分成4個(gè)通道,分別連接到VU9P的3個(gè)硅單元上面,其中一個(gè)通道對(duì)應(yīng)的16GB DDR保留常駐,其余3個(gè)通道對(duì)應(yīng)的48GB存儲(chǔ)以可選的方式可被客戶邏輯加載使用。
目前,我們看到了雙芯片實(shí)例除了FPGA Direct技術(shù)和高達(dá)600Gb/s的FPGA Link高速互聯(lián)能力之外,另外值得一提的是:雙芯片的實(shí)例與其他的雙芯片實(shí)例板卡之間也可以通過400Gb/s的光口進(jìn)行互聯(lián),而且400Gb/s的以太協(xié)議驅(qū)動(dòng)是通過Xilinx預(yù)置的MAC硬核來加速,不占用邏輯面積;通過以太或者自定義的輕量級(jí)通信協(xié)議,能夠在16芯片之間,以及更多的芯片之間搭建2維Mesh或者環(huán)形互聯(lián),進(jìn)一步擴(kuò)展多片互聯(lián)的使用模式和應(yīng)用場(chǎng)景。
最后,上一張圖,讓大家對(duì)上面做的硬件的技術(shù)解析有一個(gè)更具體的認(rèn)識(shí):
F3邏輯結(jié)構(gòu)
F3邏輯結(jié)構(gòu),技術(shù)分析之前,先給大家上一幅邏輯架構(gòu)圖:
SHELL和ROLE概念
★SHELL:
Shell是FPGA的靜態(tài)區(qū)域,內(nèi)部包含用戶PCIe、管理PCIEe、板卡管理系統(tǒng)和一個(gè)DDR訪問通道。為了提高板卡的安全和穩(wěn)定性,用戶無權(quán)修改SHELL區(qū)域。
★ROLE:
我們?cè)谠O(shè)計(jì)中提出了Role的概念,Role和Shell是類似的封裝。而Role跟Custom Logic一起在動(dòng)態(tài)區(qū)域。Role的提出使我們可以更加輕量化Shell。我們通過Role實(shí)現(xiàn)了同一個(gè)Shell既可以支持OpenCL開發(fā),也可以支持RTL開發(fā);最后就是Role的再次抽象降低了用戶對(duì)于FPGA的開發(fā)門檻。我們提供基礎(chǔ)的Role,也允許用戶自行設(shè)計(jì)Role。我們希望更多第三方的設(shè)計(jì)者通過分享自己Role,使得FaaS平臺(tái)更加精彩。
ROLE內(nèi)部結(jié)構(gòu)簡(jiǎn)介
Interconnect:該部分主要是提供給用戶四路DDR通道的訪問和USER_PCIe對(duì)四路DDR通路的訪問。 該模塊幫助用戶隔離了時(shí)鐘域,使用戶邏輯在同一個(gè)時(shí)鐘域上對(duì)4路DDR通道進(jìn)行訪問。
Inter chip interconnect: FPGA 單卡雙芯片間互聯(lián)通路;
Card interconnect: FPGA 卡間互聯(lián)通路;
Custom Logic:用戶自定義邏輯部分;
Custom Logic介紹
用戶邏輯是屬于Role的一部分,屬于動(dòng)態(tài)加載區(qū)域。 為了方便用戶標(biāo)準(zhǔn)化使用,我們?cè)赗TL設(shè)計(jì)中使用了標(biāo)準(zhǔn)的AXI-4和AXI-LITE接口。
1.我們將詳細(xì)介紹用戶接口,其列表如下:
注:板間互聯(lián),卡卡互聯(lián)接口邀測(cè)階段缺省不提供,需要特殊申請(qǐng)對(duì)外開放。
2.AXI-4 and AXI-Lite 限制
3. 正如我們?cè)诮榻BRole中所述,用戶可以定制化Role操作。我們阿里云FaaS團(tuán)隊(duì)為了方便用戶更有效的使用平臺(tái),多個(gè)Role版本正在發(fā)布中,敬請(qǐng)關(guān)注。降低用戶使用門檻,縮短開發(fā)時(shí)間,健全FPGA使用生態(tài)始終是我們的使命。
評(píng)論
查看更多