1. 程式人生 > >FPGA資源平民化的新晉-F3 技術解析

FPGA資源平民化的新晉-F3 技術解析

FPGA (現場可程式設計門陣列)由於其硬體並行加速能力和可程式設計特性,在傳統通訊領域和IC設計領域大放異彩。一路走來,FPGA並非一個新興的硬體器件,由於其開發門檻過高,硬體加速演算法的釋出和部署保護要求非常高,FPGA的使用一直是高冷的美人,沒有走入平常百姓家。也就導致FPGA的計算潛力還沒有得到深入的挖掘。

阿里雲虛擬化團隊異構計算和高效能運算團隊一直致力於將計算資源"平民化";高效能運算團隊在做的E-HPC就是要讓所有云上使用者都能夠瞬間擁有一個小型的超算叢集,使得使用超算不再僅僅是一些超算中心和高校的特權;而異構計算團隊則致力於將目前最快,最新的計算裝置在雲上提供給使用者,使得曾經高冷的計算資源不再拒人千里之外:推出了FPGA雲伺服器FaaS 服務,其中的F1和F2例項已經對外提供服務,可以通過一鍵部署的方式把Intel和Xilinx的小規格的器件計算能力賦予客戶。

2018年5月,新晉的大規格FPGA例項,基於Xilinx 16nm Virtex UltraScale+ 器件VU9P的例項F3正式釋出。下面將對阿里雲FPGA計算(下面簡稱FaaS)服務本身,以及這次釋出的F3例項的底層硬體架構和平臺架構進行技術解讀。

FaaS

阿里FPGA雲伺服器平臺FaaS(FPGA as a Service)在雲端提供統一硬體平臺與中介軟體,可大大降低加速器的開發與部署成本。加速器開發商的加速器可以形成服務提供給加速器使用者,消除加速技術與終端使用者的硬體壁壘。使用者則能夠在無需瞭解底層硬體的情況下,直接按需使用加速服務。

為了給加速器提供方和使用方提供更加高效、統一的開發及部署平臺,FaaS提供兩大套件:HDK和SDK。

HDK

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

SDK包括兩個部分:

1. HDK(Shell+Role)對應的主機端驅動(Drivers)和軟體庫(Libraries)

2. FPGA管理工具 faascmd套件

驅動和軟體庫和HDK的Shell以及Role相對應,和HDK一起,為使用者提供統一及靈活的軟體支援,比如DMA驅動、暫存器訪問驅動等等。

faascmd工具套件為使用者提供雲上FPGA管理服務,包括安全校驗、FPGA映象生成、下載及管理、FPGA加速卡狀態查詢反饋等功能。公有環境使用FPGA,需要考慮使用者FPGA檔案的安全,faascmd提供的祕鑰及OSS bucket指定機制,有效保證了使用者的FPGA下載檔案的私密性。線上下的開發及應用中,開發者直接對FPGA進行下載操作,但在雲上環境,使用者對公有的FPGA資源直接操作對安全造成較大影響。Faascmd工具會對使用者操作申請和物理FPGA資源進行隔離,但保證了使用者下載安全的同時,提供給使用者類似線下操作的體驗;同時會對使用者提交的網表進行校驗,提高安全、降低風險。faascmd同時也提供呼叫介面,使用者能很容易的在自己的App中呼叫管理工具,結合自身加速器特性實現各種管理功能。

FaaS 的IP市場

FaaS幫助降低了FPGA邏輯開發者開發的准入門檻:雲上即開即用的FPGA資源,靈活的付費模式使得硬體資源觸手可及;FPGA的邏輯開發上,簡化了開發流程,統一了開發介面,把核心加速邏輯從周邊硬體裝置的介面除錯中隔離出來,使得FPGA的新興應用可以只關注業務加速的核心邏輯,快速迭代;在這兩點上,阿里雲的FaaS 邁出了FPGA資源平民化的第一步。

但是即便是大大簡化的開發流程,觸手可及的硬體資源,FPGA依然有一定的開發門檻。如何把已有的FPGA 邏輯IP價值最大化,聯通FPGA加速的需求方和提供方呢?重要的一點就是如何解決在公共雲資料中心層面保證FPGA加速IP的安全性,特別是對不可信的第三方進行輸出和部署這個難題, FaaS是如何解決這個問題的呢?

答案是通過阿里雲的FaaS的IP市場。技術上,通過與Xilinx聯合開發的定製虛擬化技術達到IP加速與部署環境的強隔離,IP的使用者對原始IP的網表文件完全隔離,網表文件的傳輸,部署,加速流程全程對使用者都不可見,同時加速計算能力又可以透明的向IP使用方第三方使用者開放,這是阿里雲在FPGA雲上加速服務另外一個技術創新。這個創新,完全杜絕了FPGA IP在雲上輸出的時候被盜版的可能,提供了非常高的安全保護機制。

更加嚴格的保密機制也在規劃中:很快可以通過阿里雲的KMS加密服務對IP進行加密保護,每次對IP載入前都需要向KMS服務獲取祕鑰解密,這樣一來針對IP的使用下載有據可查;並且使得IP釋出方的IP在資料中心內部都是安全的,因為沒有了IP使用方的KMS祕鑰,即便是阿里雲也無法對原始的網表進行解密操作。

在阿里雲FaaS IP 市場的幫助下,即便是從來沒有任何FPGA開發經驗的使用者,也可以一鍵從IP市場中獲取相應的加速邏輯,並部署到對應的FPGA器件上面去。相信通過即開即用的硬體資源,統一的軟硬體邏輯開發介面和IP市場,阿里雲能夠真正實現FPGA計算資源平民化的承諾。

F3硬體架構

阿里雲FaaS的F3例項在底層硬體上,是使用阿里雲自主研發的高效能單卡雙晶片的VU9P的板卡。這裡要劃重點啦:單卡雙晶片。一定有使用者要問為什麼要這麼設計呢?單卡雙晶片的硬體設計有什麼好處呢?

首先,對於使用者來說,通過單卡雙晶片的這樣的規格設計,與阿里雲配套自研的伺服器一起,最高可以提供單例項16 塊 VU9P的計算例項。16塊 VU9P這是非常高的計算密度了,這是設計單卡雙晶片的第一個目的:通過提高計算密度,在同等計算單元下集成了更多的加速晶片,能夠有效降低單位計算力的成本,從成本和單位例項的垂直計算力提升上客戶可以雙重受益。

單卡雙晶片的兩個VU9P晶片通過PCIe 橋接入系統,那麼雙晶片之間的互相通訊呢?是不是隻能通過PCIe的匯流排來進行呢,答案是否定的,除了FPGA Direct這種通過PCIe互相通訊的能力之外,在阿里雲的自研的板卡上也是有特殊考慮的。在兩個晶片之間,設計了一個高速互聯通道,使得兩個FPGA之間可以通過這個特殊的通道以高達600Gb/s的速率進行通訊,這個通訊技術稱之為FPGA Link。要知道,現在的資料中心主流部署的接入交換機光口通訊也只能達到100Gb/s的通訊速率,更高的200Gb/s的交換機還在試部署中。

試想一下,無需額外的交換機和光口硬體,兩個FPGA晶片可以通過FPGA Link技術以超短時延通過6倍於主流光口通訊的速率進行通訊,這個將會以極低的成本幫助使用者開啟大量新的FPGA加速應用模式。比如,小規模的晶片模擬,需要兩個器件才能部署的下的情況,可以將整體模擬模組拆解之後部署到兩個晶片上,兩個晶片之間的資料通路和同步訊號通過高速通道互聯;還有其他的應用場景,需要把功能模組部署到兩個FPGA晶片之上,而兩者之間需要大量的資料交換,比如視訊轉碼場景:把小規模但是模組數目比較多的解碼單元、視訊處理單元部署到一個FPGA之上,把面積佔用比較多的編碼單元放到另外一個FPGA上,編解碼模組之間通過高速互聯交換裸視訊流。這將大大改善部署的難度,以及極大的解耦兩個模組之間的相互依賴和設計難度。以上舉了兩個例子,讀者一定能夠舉一反三的想到,其他需要流水線處理並需要大量資料交換的場景,阿里雲的F3例項的雙晶片例項能夠為客戶提供最大的價值。

不少應用場景對板載的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或者環形互聯,進一步擴充套件多片互聯的使用模式和應用場景。

最後,上一張圖,讓大家對上面做的硬體的技術解析有一個相對更具體的認識。

F3邏輯結構

F3邏輯結構,先給大家上一幅圖:

SHELL和ROLE概念

SHELL:

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平臺更加精彩.

ROLE內部結構簡介

Interconnect:該部分主要是提供給使用者四路DDR通道的訪問和USER_PCIe對四路DDR通路的訪問。 該模組幫助使用者隔離了時鐘域,使使用者邏輯在同一個時鐘域上對4路DDR通道進行訪問。Inter chip interconnect: FPGA 單卡雙晶片間互聯通路;

Card interconnect: FPGA 卡間互聯通路;

Custom Logic:使用者自定義邏輯部分;

Custom Logic介紹

使用者邏輯是屬於Role的一部分,屬於動態載入區域。 為了方便使用者標準化使用,我們在RTL設計中使用了標準的AXI-4和AXI-LITE介面。

本文作者:孟蓁蓁

本文為雲棲社群原創內容,未經允許不得轉載。