阿里雲ecs的異構計算團隊和高效能計算團隊一直致力於將計算資源"平民化";高效能計算團隊在做的e-hpc就是要讓所有雲上使用者都能夠瞬間擁有乙個小型的超算集群,使得超算不再僅僅是一些超算中心和高校的特權;而我們異構計算團隊則致力於將目前最快、最新的計算裝置在雲上提供給使用者,使得曾經高冷的計算資源不再拒人千里之外:我們推出了fpga雲伺服器faas 服務, 其中的f1和f2例項已經對外提供服務,可以通過一鍵部署的方式把intel和xilinx的小規格的器件計算能力賦予客戶。
今天我們很高興地宣布:新晉的大規格fpga例項,基於xilinx 16nm virtex ultrascale+ 器件vu9p的異構計算例項f3在阿里雲上線了!
我們藉此機會,對阿里雲fpga計算服務(下面簡稱faas)本身,以及這次發布的f3例項的底層硬體架構和平台架構做乙個技術解讀。
阿里fpga雲伺服器平台faas(fpga as a service)在雲端提供統一硬體平台與中介軟體,可大大降低加速器的開發與部署成本。加速器開發商的加速器可以形成服務提供給加速器使用者,消除加速技術與終端使用者的硬體壁壘。使用者則能夠在無需了解底層硬體的情況下,直接按需使用加速服務。
為了給加速器提供方和使用方提供更加高效、統一的開發及部署平台,faas提供兩大套件:hdk和sdk。
hdk給所有的加速器開發者提供統一的fpga硬體介面,提前幫使用者解決了fpga開發中難度最大的高速介面開發及除錯,例如pcie、serdes介面、ddr控制器等等;使得使用者能夠直接得到硬體平台和fpga介面的最大效能,不會因為團隊開發能力和經驗的欠缺,造成硬體平台效能浪費;高效、可靠、統一的介面套件也為雲上平台的安全隔離、裝置穩定提供了保障,不會因為使用者的介面設計問題,造成伺服器宕機;同時可以杜絕使用者在fpga端對主機的非法操作,為整個雲上安全提供保障。
hdk包括兩個部分,shell和 role;shell部署在靜態區域,提供上述統一介面部分。
在提供統一介面、安全性和便捷性的前提下,阿里雲faas hdk 也盡最大的努力保證使用者設計的靈活性,role的概念應運而生。role部署在動態區域,是在shell之外,預先開發並提供的,使用者可以配合使用者邏輯(customer logic)使用。不同於shell,使用者可以根據需要,隨時更換role部分;這種shell + role的組合方式,保證了shell的最輕量化和穩定性,又兼顧了統一性、便捷性和靈活性。
sdk包括兩個部分:
1、和hdk(shell+role)對應的主機端驅動(drivers)和軟體庫(libraries)
2、fpga管理工具 faascmd套件
驅動和軟體庫和hdk的shell以及role相對應,和hdk一起,為使用者提供統一及靈活的軟體支援,比如dma驅動、暫存器訪問驅動等等。
faas降低了fpga開發者的開發准入門檻:雲上即開即用的fpga資源、靈活的付費模式使得硬體資源觸手可及;同時簡化了開發流程,統一了開發介面,把核心加速邏輯從周邊硬體裝置的介面除錯中隔離出來,使得fpga的新興應用可以只關注業務加速的核心邏輯,快速迭代;在這兩點上,阿里雲的faas 邁出了fpga計算資源平民化的第一步。
但即便是大大簡化了開發流程、提供了觸手可及的硬體資源,fpga依然有一定的開發門檻。如何把已有的fpga 邏輯ip價值最大化,聯通fpga加速的需求方和提供方來擴大生態呢?重要的一點就是如何解決在公共雲資料中心層面保證fpga加速ip的安全性,特別是對不可信的第三方進行輸出和部署這個難題, faas是如何解決這個問題的呢?
答案是通過阿里雲faas的ip市場。技術上,通過與xilinx聯合開發的定製虛擬化技術達到ip加速與部署環境的強隔離,ip的使用者與ip的網表檔案完全隔離,網表檔案的傳輸、部署、加速流程全程對使用者都不可見;同時加速計算能力又可以透明地向使用該ip的第三方使用者開放,這是阿里雲在fpga雲上加速服務的另外乙個技術創新。這個創新,完全杜絕了fpga ip在雲上輸出的時候被盜版的可能,提供了非常高的安全保護機制。
在阿里雲faas ip 市場的幫助下,即便是從來沒有任何fpga開發經驗的使用者,也可以一鍵從ip市場中獲取相應的加速邏輯,並快速部署到對應的fpga器件上面去。我們相信,通過即開即用的硬體資源、統一的軟硬體邏輯開發介面和ip市場,阿里雲能夠真正兌現fpga計算資源平民化的承諾。
阿里雲faas的f3例項在底層硬體上,是使用阿里雲自主研發的高效能單卡雙晶元的vu9p的板卡。這裡要划重點啦:單卡雙晶元。一定有使用者要問為什麼要這麼設計呢?單卡雙晶元的硬體設計有什麼好處呢?
首先,對於使用者來說,通過單卡雙晶元這樣的規格設計,與阿里雲配套自研的伺服器一起,最高可以提供單例項16 塊 vu9p的計算例項。16塊 vu9p是非常高的計算密度了,這是設計單卡雙晶元的第乙個目的:通過提高計算密度,在同等計算單元下整合了更多的加速晶元,能夠有效降低單位計算力的成本,從成本大幅降低和單位例項的垂直計算力提公升上,客戶可以雙重受益。
單卡雙晶元的兩個vu9p晶元通過pcie 橋接入系統,那麼雙晶元之間的互相通訊呢?是不是只能通過pcie的匯流排來進行呢,答案是否定的,除了fpga direct這種通過pcie互相通訊的能力之外,在阿里雲的自研的板卡上也是有特殊考慮的。在兩個晶元之間,我們設計了乙個高速互聯通道,使得兩個fpga之間可以通過這個特殊的通道以高達600gb/s的速率進行通訊,這個通訊技術我們稱之為fpga link。要知道,現在的資料中心主流部署的接入交換機光口通訊也只能達到100gb/s的通訊速率,更高的200gb/s的交換機還在試部署中。
不少應用場景對板載的ddr儲存還是有要求的。阿里雲的f3例項,為每個fpga搭配了客戶可見的64gb的ddr記憶體,這64gb的ddr分成4個通道,分別連線到vu9p的3個矽單元上面,其中乙個通道對應的16gb ddr保留常駐,其餘3個通道對應的48gb儲存以可選的方式可被客戶邏輯載入使用。
目前,我們看到了雙晶元例項除了fpga direct技術和高達600gb/s的fpga link高速互聯能力之外,另外值得一提的是:雙晶元的例項與其他的雙晶元例項板卡之間也可以通過400gb/s的光口進行互聯,而且400gb/s的以太協議驅動是通過xilinx預置的mac硬核來加速,不占用邏輯面積;通過以太或者自定義的輕量級通訊協議,能夠在16晶元之間,以及更多的晶元之間搭建2維mesh或者環形互聯,進一步擴充套件多片互聯的使用模式和應用場景。
shell是fpga的靜態區域,內部包含使用者pcie、管理pciee、板卡管理系統和乙個ddr訪問通道。為了提高板卡的安全和穩定性,使用者無權修改shell區域。
role:
我們在設計中提出了role的概念,role和shell是類似的封裝。而role跟custom logic一起在動態區域。role的提出使我們可以更加輕量化shell。我們通過role實現了同乙個shell既可以支援opencl開發,也可以支援rtl開發;最後就是role的再次抽象降低了使用者對於fpga的開發門檻。我們提供基礎的role,也允許使用者自行設計role。我們希望更多第三方的設計者通過分享自己role,使得faas平台更加精彩。
interconnect:該部分主要是提供給使用者四路ddr通道的訪問和user_pcie對四路ddr通路的訪問。 該模組幫助使用者隔離了時鐘域,使使用者邏輯在同乙個時鐘域上對4路ddr通道進行訪問。
inter chip interconnect: fpga 單卡雙晶元間互聯通路;
card interconnect: fpga 卡間互聯通路;
custom logic:使用者自定義邏輯部分;
使用者邏輯是屬於role的一部分,屬於動態載入區域。 為了方便使用者標準化使用,我們在rtl設計中使用了標準的axi-4和axi-lite介面。
1、我們將詳細介紹使用者介面,其列表如下:
注:板間互聯,卡卡互聯介面邀測階段預設不提供,需要特殊申請對外開放。
2、axi-4 and axi-lite 限制
閱讀原文
FPGA資源平民化的新晉 F3 技術解析
摘要 fpga 現場可程式設計門陣列 由於其硬體並行加速能力和可程式設計特性,在傳統通訊領域和ic設計領域大放異彩。一路走來,fpga並非乙個新興的硬體器件,由於其開發門檻過高,硬體加速演算法的發布和部署保護要求非常高,fpga的使用一直是高冷的美人,沒有走入平常百姓家。fpga 現場可程式設計門陣...
FPGA資源平民化的新晉 F3 技術解析
摘要 fpga 現場可程式設計門陣列 由於其硬體並行加速能力和可程式設計特性,在傳統通訊領域和ic設計領域大放異彩。一路走來,fpga並非乙個新興的硬體器件,由於其開發門檻過高,硬體加速演算法的發布和部署保護要求非常高,fpga的使用一直是高冷的美人,沒有走入平常百姓家。fpga 現場可程式設計門陣...
nextjs 如何將靜態資源發布到 CDN
nextjs 是基於 react 的服務端同構指出框架,在使用的過程中也多多少少遇到過幾個問題,其中最大的問題就是靜態資源的發布了。按照官網上的說法,每次發布都會生成新的 hash 路徑,即使當前沒有任何的變動。例如某次發布的路徑是 next static tzonugey gpceexgbfapl...