FPGA 20年最有影響力的25個研究成果 – 應用篇

很多世界頂尖的“建築師”可能是你從未聽說過的人,他們設計並創造出了很多你可能從未見過的神奇結構,比如在芯片內部的複雜體系。製造芯片的基本材料源於沙子,但芯片本身已經成為人們當代生活不可或缺的東西。如果你使用手機、電腦,或者通過互聯網收發信息,那麼你就無時無刻不在受益於這些建築師們的偉大工作。

FPGA是芯片的其中一種,從上世紀八十年代誕生起,FPGA 已經從簡單的可編程門陣列,發展成為了有著大量可編程邏輯的複雜片上系統。除了硬件結構之外,FPGA 的開發工具和應用場景也都取得了長足的進步和擴展,FPGA 在整個半導體行業的重要性也在不斷增強。FPGA 芯片的演進,離不開這些“建築師”的不斷髮明創造。

幾年前,這些 FPGA 的頂級建築師們選出了自上世紀九十年代起的 20 年以來 FPGA 領域最有影響力的 25 個研究成果。通過這些重要的成果,我們會理解 FPGA 是如何發展至今,並且知道 FPGA 技術未來將會發展向何處。

這 25 個研究成果按研究領域分為架構、EDA 工具、電路、應用等大類,每項成果都由一名該領域的頂級學者做推介。我將在幾篇文章裡,分別介紹這這些改變了 FPGA 發展進程的重要研究成果。本文是應用篇,主要介紹了 FPGA 在實際應用領域的重大突破性成就。

FPGA 領域的架構創新和佈局佈線算法創新,請參見這幾篇文章:《系統架構篇》《微架構篇》《佈局佈線算法篇》《其他 FPGA CAD 算法篇》。

(本文介紹的 6 項成果原文,均已上傳至知識星球:老石談芯進階版,請在文末掃碼進入星球查看)

01

DPGA 的使用和應用領域

一句話總結:FPGA 動態重構領域的奠基之作

英文名:DPGA Utilization and Application

推介人:John Wawrzynek(加州大學伯克利分校)

這項成果是最早研究 FPGA 動態重構(runtime reconfiguration)的工作之一,它為大量後續的工作奠定了堅實的基礎。

在這個工作中,作者深入分析了能夠提升 FPGA 運行效率的器件架構和應用設計模式。在這項工作之前,有許多研究人員對於 FPGA 的動態重構功能非常著迷,有些研究已經構建了基於商用 FPGA 的動態重構應用實例。其中,一個典型的工作是 Chris Jones 等人的“在無線視頻編碼中使用 FPGA 動態重構的問題研究”(Issues in Wireless Video Coding using Run-time-reconfigurable FPGAs)。

然而,除了極少的想法之外,人們對於動態重構及其設計模式並沒有一個清晰的理解。此外,對動態重構的成本和優勢也缺乏量化標準和理論分析。

Andre DeHon 很早就開始關注並思考這些問題。在 MIT 做研究生期間,他就在研究中引入了動態可重構器件這一概念。在這個工作中,他闡述了一組有用的設計模式,並嚴謹的展示了這些模式如何與動態可重構器件一道,為系統帶來明顯的面積優勢。

FPGA 20年最有影响力的25个研究成果 – 应用篇

儘管這項工作的學術貢獻巨大,它卻在更廣泛的意義上影響和啟發了其他研究者。這項工作展示瞭如何將定量分析用於可重構器件的架構和系統層面的研究,例如對某項特性的成本與優勢分析等。此外,和商用可編程邏輯陣列相比,作者在系統架構層面有著截然不同而大膽的想法,而這也在微架構研究領域為其他研究者樹立了一個創新思維的榜樣。通常來講,研究者都侷限於商業器件、以及這些 FPGA 針對特定領域的優化,而這也在一定程度上限制了整個領域的創新和發展。

總體來說,這項成果在幾個方面產生了持久的影響:它設立了可重構計算的定量分析標準,並激勵了一代研究人員探索動態重構的方法和應用。這項成果中包含的架構和設計思想,已經被很多研究團隊和初創公司所採用。

02

使用高性能 FPGA 在 250MHz 頻率下進行信號處理

一句話總結:高性能 FPGA 設計的典範作品,使 FPGA 時鐘頻率大幅超越同期 x86 CPU。

英文名:Signal processing at 250 MHz using high-performance FPGA's

作者:Brian von Herzen

推介人:André DeHon(賓夕法尼亞大學),Steve Trimberger(DARPA – 美國國防先進計劃研究署)

這項成果是 FPGA 設計領域中令人振奮的力作,它展示了 FPGA 所能達到的最大性能,以及如何設計以獲取這樣的性能。

為了理解這項成果,有必要先介紹一下 FPGA 設計在 1997 年左右是什麼樣子的。當時,英特爾的奔騰 CPU,也就是高時鐘頻率設計的典範,也只不過運行在 75-100MHz,並使用 0.5um 和 0.6um 工藝製造。只有到了 0.35um 工藝時,奔騰 CPU 才有可能在 200MHz 的時鐘頻率下運行。此外,當時的大多數 FPGA 設計都運行在 25-40MHz 的區間。業界的基本共識是,FPGA 必然會比 ASIC 或處理器的運行速度要慢很多。

然而,這項成果表明,在 1997 年就可以使用基於 0.6um 工藝的賽靈思 XC2100A FPGA,將設計運行在 250MHz 時鐘頻率下。時至今日,這個性能對於大多數 45nm 器件的使用者來說都是非常可以接受的!

誠然,為了實現這個性能確實需要對 FPGA 設計進行相當的優化,包括仔細的佈局、流水線設計、以及嚴格規劃信號在一個週期內傳輸的距離和位置等等。值得注意的是,這項工作闡述了整體的設計方法論,併為 CAD 工具及 FPGA 架構研究提出了很多前瞻性的指導,以充分發揮 FPGA 的最大性能。之後的很多研究,包括 GARP、HSRA、CHESS、SFRA、Tabula 等,以及互聯 retiming、流計算模型等等,都是基於來自這個成果的願景。

這項工作是 FPGA 應用領域研究的代表性成果之一。它展示了超越傳統認知的 FPGA 性能結果,並詳細說明了如何利用 FPGA 的架構特點來實現這一超越。這些都為 FPGA 相關的研究提供了寶貴經驗。儘管這項成果的有些部分讀起來比較晦澀,甚至像一份實驗報告,但即使在今天,這項成果仍然有著很強的可讀性,而且並不過時。

03

基於 FPGA 的 CORDIC 算法研究綜述

一句話總結:使用 FPGA 進行高效算法實現的經典之作

英文名:A survey of CORDIC algorithms for FPGA based computers

推介人:Paul Chow(多倫多大學)

這項工作詳細闡述瞭如何在 FPGA 上進行高效的算法實現,它可以說是這一類工作的代表性作品。

在 1998 年,可編程 DSP 芯片被普遍用來做信號處理,當時最先進的器件有著大約 128KB 的片上內存,以及 100 MIPS 的性能。對於 FPGA 而言,它能構建 DSP 無法完成的信號處理系統,但比開發一個 ASIC 又簡單很多。1998 年的 FPGA 比現在要小很多,大約有上千個 4 輸入 LUT,正如這項成果中採用的賽靈思 4013E 器件。因此,高效和小面積的 DSP 功能實現是這類 FPGA 設計的關鍵。

自從發表以來,這項著名的成果一直是 FPGA 設計工程師在硬件中構建信號處理算法的重要參考。DSP 算法中包含很多超越函數,如正弦、餘弦等,然而在硬件中計算這些函數並不像軟件中直接調用庫函數那麼簡單。當信號處理工程師開始轉向使用 FPGA 時,他們會通過這項成果意識到,為了實現高效的 DSP 算法,就需要使用不同的硬件架構和設計方案。具體來講,這項成果闡述了 CORDIC 算法的基本理論,這個算法基於移位和加法運算,因此非常適合在 FPGA 上實現。

FPGA 20年最有影响力的25个研究成果 – 应用篇

傳統的 FPGA 應用研究主要都是探索某種具體應用在 FPGA 的實現方式。這項成果的不同點在於,它主要針對的是廣大的應用設計工程師群體,並對這個群體進行技術傳播和教育。這也使得它在更廣的層面上不斷影響後來的研究者。

04

對流水線可重構 FPGA 的管理

一句話總結:可重構計算與硬件虛擬化的首次結合與探索。

英文名:Managing Pipeline-Reconfigurable FPGAs

作者:Srihari Cadambi, Jeffrey Weener, Seth Copen Goldstein, Herman Schmit, Donald E. Thomas

推介人:Katherine Compton and André DeHon

在 1998 年,即使是最大的 FPGA 也只有不過 5 萬個 LUT,因此在一個 FPGA 上往往很難裝下整個設計。此外,即使設計在當前 FPGA 上可用,當下一代 FPGA 面世後,就不得不重新設計,至少需要對設計重新編譯,以更好的利用新 FPGA 上更多的邏輯單元和容量。時至今日,FPGA 上有著上百萬可編程邏輯資源,因此大多數設計通常不會受制於 FPGA 的容量。然而,目前仍然缺乏對各代 FPGA 兼容性與伸縮性的研究。

這項成果中提出了 PipeRench 架構,它為 FPGA 開發者提供了動態重構的邏輯模型。它將計算看做是一個大型的靜態前向圖,並使用動態重構的方法,來控制和交換電路中不同的部分。如果電路太大而無法由可用資源實現,那就將系統中的不同電路部分換入和換出,從而最終滿足資源要求。

PipeRench 的獨特之處在於,它展示瞭如何通過計算實現流水線重構,從而實現在有限的內存帶寬時完成快速的配置切換。當一個 PipeRench 實例編譯完成並得到 FPGA 映像之後,PipeRench 還允許這個映像被加載到更大或者更小的其他 PipeRench 實例中,並伴隨著相應的性能提升或下降。這就使得 FPGA 的彈性擴展成為可能。

FPGA 20年最有影响力的25个研究成果 – 应用篇

這項成果是一個開創性的大型系統項目,它涵蓋了可重構計算的很多領域。這個工作闡述了配置數據的管理,並介紹了 PipeRench 架構的很多底層設計細節。它還討論了可重構硬件的配置過程與機理,以及如何確保數據通過虛擬流水線達到合適的物理位置。綜上,這項成果是可重構計算領域的標誌性工作,它和它的後續工作為這個領域的研究者指明瞭前進的方向、可能遇到的問題、以及解決這些問題的一些創新方法。

05

FPGA vs CPU:峰值浮點性能的趨勢

一句話總結:FPGA 在浮點數計算領域的開創性工作。

英文名:FPGAs vs. CPUs: Trends in Peak Floating-Point Performance

作者:Keith Underwood

推介人:Paul Chow(多倫多大學)

這項工作表明,FPGA 在未來的超級計算應用中有著很好的應用前景,而這個領域的應用往往需要即密集的高精度浮點運算。

從 FPGA 出現伊始,業界就有一種觀點認為 FPGA 可以被用來加速計算(computing)的過程,儘管這並不是 FPGA 出現的初衷,亦或是 FPGA 的主要應用市場。在這項工作發表之時,FPGA 已經展示出在定點數計算的潛力,特別是在信號處理領域中,使用 FPGA 比可編程 DSP 有著更好的性能優勢。然而,大多數科學計算和應用都基於 IEEE 格式的浮點數,特別是雙精度浮點數,以獲得穩定的計算結果。在這項成果之前,人們普遍認為在 FPGA 上無法得到足夠的浮點數性能來與當時的 CPU 競爭。

在這個工作中,作者在多代 FPGA 中實現了浮點數加法、乘法、除法、乘加等基本運算單元,並對它們進行了時鐘頻率和硬件面積的定量分析。通過結合對應 FPGA 器件的容量,這項工作整理得到了對這些基本單元的最優性能的趨勢曲線。對於 CPU 來說,根據摩爾定律,這些運算單元的性能趨勢曲線都會每 18 個月翻一番。然而,對於 FPGA,這項成果表明 FPGA 的浮點數峰值性能已經或即將超過 CPU,並將繼續增長,見下圖。

FPGA 20年最有影响力的25个研究成果 – 应用篇

這項成果是第一個嘗試定量分析並證明 FPGA 可以作為浮點運算加速器的工作。通過對模型的建立和分析,可以看出這個趨勢在某種程度上有利於 FPGA 與 CPU 的相互競爭。這也證明了,可重構計算研究依然前途光明。然而,客觀的說,這項工作的結果在很大程度上依賴於計算的峰值性能,究竟如何在實際應用中獲取這樣的性能、以及峰值性能與實際性能的相關性,依然是研究者不斷探討的問題。

06

FPGA 高效多端口存儲器的設計

一句話總結:在根本上改變了現代 FPGA 的內存設計和容量

英文名:Efficient Multi-Ported Memories for FPGAs

作者:Charles Eric LaForest, J. Gregory Steffan

推介人:Scott Hauck

FPGA 的一個重要特性就是能構建大量簡單的邏輯模塊,然後可以將這些邏輯塊組合起來,並形成更大、功能更復雜的設計。雖然 FPGA 中的每個可編程單元只有 4 到 6 個輸入,但一組 LUT 就可以支持任意數量的輸入,並完成任意功能的計算。雖然一個觸發器只能存儲 1 位數據,但這些觸發器可以組合起來以支持 32 位數據,並再進行組合形成多級的 FIFO,諸如此類。

隨著 FPGA 技術的不斷演進,人們開始在 FPGA 里加入為了特定任務而優化的硬核單元,如乘法器、存儲器,甚至處理器內核等等。這些模塊從根本上提升了 FPGA 進行通用計算的性能,但它們的相對不靈活性使得這些模塊很難相互級聯並組成更大的邏輯單元。另外,對於一個特定應用,如果這些硬核單元沒有相對應的邏輯功能,那麼設計者就很難繼續使用它們,只能轉而使用傳統的方法,也就是使用 LUT 和寄存器等進行邏輯設計。這個問題的一個典型例子就是存儲器。如果內存單元的容量太小,或者尋址空間不夠大,我們或許還可以組合多個存儲單元以滿足設計需求。然而,如果存儲器的端口數量是固定的,比如某個內存單元只能允許每週期兩次寫入,而應用要求每週期三次寫入,那麼這就很尷尬了。事實上,額外的讀端口可以通過複製內存來實現,但對於 RAM 來說,獨立的寫端口數量才是影響性能的重點。

這項工作從根本上解決了這個問題。一個重要的事實是,通常情況下底層硬件的運行速度會比用戶設計的實際速度要快很多,因此就可以對內存端口進行時間複用以增加獨立訪存的數量。此外,通過巧妙的設計,多個內存可以被組合在一起,以支持讀寫帶寬的增長,同時保持對整個機制的控制。如果將二者相結合,就可以得到一個提供更多內存端口的有效方案。

FPGA 20年最有影响力的25个研究成果 – 应用篇

結語

這 6 個 FPGA 應用領域的重要工作,有的為 FPGA 動態重構研究奠定了堅實的理論和實踐基礎,有的首次探索了 FPGA 與虛擬化技術的結合與實現,有的則向世人展示了高效、高性能的 FPGA 應用設計應該是什麼樣的。更重要的是,這些工作所採用的方法論、思維方式、前瞻性與實用性的統一、以及嚴謹的治學態度,都為之後的學術和工業研究樹立了最高的典範。


分享到:


相關文章: