領域專用架構與加速器

現場可程式化閘陣列(FPGA)

/ F-P-G-A /

想像一塊巨大的洞洞板,上面有上千個小邏輯區塊,以及它們之間一張線網,而你能決定哪些區塊接到哪些。你不是在為固定的處理器寫軟體——你是在接一個電路。神奇之處在於你能隨時重新接線。FPGA(現場可程式化閘陣列)正是如此:一顆滿是通用邏輯與可程式化連線的晶片,你能在晶片製造完成之後,把它配置成你需要的任何數位電路——日後再重新配置成另一個。

具體來說,FPGA 內含一片小型查找表的海洋(微小的可配置真值表,能模仿任何邏輯閘)、用來保存狀態的正反器、片上記憶體區塊、以及專用乘法單元,全由一張可程式化的繞線結構縫合起來。你用 Verilog 或 VHDL 這類語言描述你想要的硬體;工具把它編譯成一段「位元流(bitstream)」,去設定每一個查找表與繞線中的每一個開關。載入位元流,FPGA 就變成那個電路——一個自訂影片濾鏡、一個網路封包處理器、一顆原型 CPU。換一段位元流,它又變成別的東西。它是真正的平行硬體,而不是在處理器上跑的指令。

誠實的取捨:FPGA 位於靈活光譜的中段。對對口的任務,它比 CPU 有效率得多,因為它是貨真價實的專用電路;但它又比 ASIC 靈活得多,因為你能重新編程。然而這份可重組性不是免費的——那些通用區塊與開關使 FPGA 比同功能的 ASIC 更慢、更大、更耗電。所以 FPGA 在這種情況發光:你需要自訂硬體,卻無法(或還無法承諾)負擔製造固定晶片的龐大成本——原型開發、中小量產,以及不斷變動的工作負載。

一家設計新網路晶片的新創公司,先把設計載入 FPGA,以 ASIC 一小部分的成本在真實硬體上測試。他們發現一個錯誤,改 Verilog、重新編譯出新的位元流,幾分鐘內重新載入——用軟體就修好了,若是製造好的 ASIC 則意味著報廢一顆數百萬美元的晶片。

FPGA 是你能重新接線的硬體:比 CPU 有效率,比 ASIC 靈活(但效率較低)。

FPGA 不是像 CPU 跑程式那樣被「編程」——你是在配置電路,而非執行指令。對同一功能,它比 ASIC 更慢、更耗電;它的價值在於可重組性,而非絕對的峰值速度。

又称
field-programmable gate arrayreconfigurable hardware可重組硬體