eFPGA助益先進資料中心與通訊應用

作者 : Geoff Tate,Flex Logix執行長

eFPGA現在可使用180奈米到7奈米製程節點生產,容量從1K查找表(LUT)到100K LUT,並即將邁向1M LUT,亦可供應DSP和Block-RAM選項...

 FPGA已然成為一種策略性技術,它被視為「窮人的ASIC」,且能夠為少量應用提供客製化IC;而當它仍然在許多系統中以這種方式被應用的同時,在以下兩個量很大、高成長的應用中,也變得更具策略上的重要性:

  • 雲端資料中心:連網、儲存與安全性;
  • 通訊系統:基地台和5G等等。

事實上,因為FPGA對資料中心所具備的策略性意義,促使英特爾(Intel)收購Altera (EETT編按:2015年完成收購),還有最近AMD對賽靈思(Xilinx)的併購。這是因為在許多狀況下,處理器的工作負載正被移轉到FPGA上。

大量利用FPGA的資料中心,能提供處理器所無法實現的平行可程式化能力(有一個客戶稱之為「在硬體速度下的可程式化能力」)。這些FPGA與具有特定功能的IC搭配應用,例如網路介面晶片(network interface chip,NIC)和網路交換器晶片。

每個資料中心有不同的工作負載,因此以標準化產品來滿足所有的需要是行不通的,每個資料中心有不同的數量規模和資本,以根據需求進行最佳化。通訊系統則是長期以來使用FPGA處理數百個國家級頻段和通訊協議;在當前5G的環境中,FPGA則被用來管理複雜性,和諸如O-RAN等持續變化中的標準。

儘管FPGA的可程式化能力如前面所述相當有價值,該類元件的功率和尺寸又是另一個故事──今日的資料中心和通訊業者想要將FPGA整合到SoC裡,以縮小尺寸和功耗。

FPGA的整合已經開始

近十年來,包括Achronix、Flex Logix和Menta等業者,已經具備提供嵌入式FPGA (eFPGA)產品的能力。eFPGA現在可使用180奈米到7奈米製程節點生產,容量從1K查找表(LUT)到100K LUT,並即將邁向1M LUT,亦可供應DSP和Block-RAM選項。

以下是eFPGA獲得整個產業採用的一些重要事件:

  • 第一家宣佈成功使用eFPGA的客戶是美國桑迪亞國家實驗室(Sandia National Labs),他們是在新墨西哥州180奈米晶圓廠實現了這個目標。從此之後,他們利用eFPGA製造了眾多ASIC。
  • 接下來,波音(Boeing)、美國空軍研究實驗室(AFRL)、微軟(Microsoft)、BAE和其他許多政府機構與包商,也開始在美國製造的防衛系統中密集使用eFPGA。因此,對美國國防部和能源部來說,eFPGA現在已經是一種成熟技術。
  • 中國業者大唐電信旗下的晶片設計子公司宸芯科技(Morning Core)宣佈將在車對車通訊FinFET ASIC採用eFPGA。
  • Dialog (EETT編按:已被Renesas收購)在2021年11月發表ForgeFPGA系列eFPGA產品開始出貨,以1K LUT起跳、單價低於50美分,功耗僅幾毫瓦(milliwatt)。
  • Flex Logix在自家16奈米AI推論晶片上採用eFPGA,性能超越500MHz,且隨著時間的變化和軟體強化,性能可以提升至667MHz甚至800MHz。
  • Socionext正在與一家系統大廠合作開發7奈米SoC,利用eFPGA和100K LUT的可程式化邏輯電路,使得晶片在最差的情況下還能有超過500 MHz的表現。這是一個5G應用,也是首款整合了大量LUT的量產通訊晶片。

除了以上事件,還有更多正在利用eFPGA的客戶還未公開。隨著人們對該技術的認知提升,客戶採用eFPGA的步伐正在加速;利用eFPGA的領導業者們,也正在所屬的市場領域取得顯著競爭優勢。

整合FPGA能實現更強大的軟體控制

FPGA具備顯著的優勢,但是它們並不容易編程;而且比起處理器的程式設計師,合格的FPGA程式設計師人數更少。為何FPGA編程如此困難?主要原因如下:

  • Verilog是比C++更像組合語言(assembler)的一種低階程式語言。
  • 對傳統的程式設計師來說,平行編程很難理解和學習。
  • FPGA是以一個巨大程式碼「區塊」(blob)的形式被編程,而處理器則是包含子程式(subroutine)、主程式(main program)、連結程式(linker)和載入程式(loader)、分頁(paging)等等;程式設計師將這些視為理所當然,但並不適用於FPGA。
  • FPGA可以在幾秒內進行編程,永遠存在於硬體,而且通常整個FPGA必須被重新編程;有一些可以部分編程,但是執行速度很慢,且所有運作會因此暫停。在處理器程式碼中,當主執行續運作時,分頁則會一直被換進/換出快取。

eFPGA提供了重新思考這種編程策略的機會──利用稀有的Verilog編碼器並且讓C++編碼器能對FPGA進行軟體控制。以下是其中一種方法的基本概念。

首先,將程式碼容器化(containerize)/模組化(modularize)為子程式。

把一個FPGA區分成更小的模組或容器,並讓它們直接存取到DRAM記憶體和處理器。eFPGA是以模組化方式建構,能根據需要以區塊RAM (block RAM,BRAM)將行與行之間的磚(tile)式結構「扣」在一起。如此一來很容易增加一個系統的互連/晶片上網路(NoC)/AXI匯流排,並讓每個FPGA模組/容器都能存取記憶體/處理器。

現在,將FPGA程式碼編寫成能夠像包含在一個容器裡的子程式那樣地運作,可以提供輸入資料或指向系統記憶體的資料;然後讓FPGA執行,接著傳遞結果視為輸出資料,或是指向系統記憶體中的資料。利用稀有的Verilog編碼器寫入那些需要密集運算的「子程式」,然後讓C++編碼器在處理器上寫入程式碼,在需要的時候呼叫那些子程式。

 

容器化的FPGA程式碼陣列。

 

第二,讓容器/模組的尺寸可變

將FPGA切割成更小的模組或容器,能讓它們直接存取DRAM記憶體和處理器。有些演算法較簡單且使用較少的LUT,有些則會用到更多的LUT。舉例來說,利用Flex Logix的彈性互連結構,能讓容器變成任何尺寸的長方形,直到整個陣列的大小。

 

容器的尺寸大小可以改變。

 

第三,容器可以在微秒內進行分頁。

FPGA總能從快閃記憶體在幾秒內進行可程式化的動作──非常緩慢,且一般而言,並不是常常這麼做:在開機時或需要升級動作時才需要如此,像是升級iPhone。

然而,eFPGA已經可以領先的AI推論處理器上,以一秒好幾百萬次速度被重新編程;這是必須的,因為推論加速器處理一個類神經網路層需要好幾十億次的運算,在小於 10 微秒(microsecond)的時間內重新配置,然後重新開始運算。

這個微秒級的重新配置能夠運用在上述陣列裡的容器和模組。當一個容器被重新配置,剩餘的容器會繼續以全速運作。這使得eFPGA可以像處理器一樣進行分頁。

掌控你的FPGA

我們已經看著這個產業從簡單的算術邏輯單元(ALU)開始、經歷了處理器、微處理器、平行處理器,再到 SoC (包括處理器核心與加速器)的轉變。而今天,我們擁有可重新配置的SoC,它們可以更充分地利用一個系統中具有大量核心的優勢。

eFPGA將讓資料中心和通訊領域的客戶能繼續受益於FPGA的平行可編程特性,同時降低功耗、縮小尺寸並得以透過軟體控制FPGA,以提高生產力、縮短上市時程。基於所有這些理由, eFPGA實現了運算架構的新典範轉移,既透過整合來提高每個機架的運算密度,又能讓更多的C++程式設計人員能夠享受eFPGA的好處。

由於以上種種原因,eFPGA整合將加速並讓更多LUT被整合在SoC裡,超越近十年來已售出FPGA裡的LUT數量。

 

本文同步刊登於《電子工程專輯》雜誌2022年4月號

責編:Judith Cheng

(參考原文:eFPGA LUTs Will Outship FPGA LUTs Later This Decade,By Geoff Tate)

 

 

 

 

加入我們官方帳號LINE@,最新消息一手掌握!

發表評論