3級排程 fpga FPGA的效能特徵及其尷尬處境

2021-10-13 19:32:09 字數 1796 閱讀 8634

1. 史稱「膠合邏輯專業戶」

fpga(field programable gate array)問世於2023年,直到十幾年前,顧名思義,其內部的硬體資源都是一些呈陣列排列的、功能可配置的基本邏輯單元,以及連線方式可配置的硬體連線。其在產品中的應用範圍僅限於訊號的匯集、分發、時序調整,以及脈衝序列的生成。

所以,fpga在長期應用過程中給業界的印象,被固化為「膠合邏輯專業戶」,與複雜演算法功能的實現無關。又兼,早期的fpga應用研發工程師都是由硬體工程師兼職,其主流設計思路都是基於pcb原理圖的硬體連線,從而更加固化了這一印象。

2. 那啥絲逆襲

事實上,最近十幾年,晶元廠商已經在fpg**內新增了大量ram塊、基礎dsp塊(由預加法器、乘法器、加法器、累加器、大量暫存器及複雜的可程式設計邏輯構成的可配置硬體運算單元,通常每片晶元中包含了幾

十、幾百甚至上千個),並且在開發環境中提供了大量基於基礎dsp塊、ram塊的「軟」ip,從而使研發人員基於fpga演算法開發環境能夠在較高抽象層次上運用大量分布式硬體資源並行實現多種複雜演算法

同時,晶元廠商還在fpga上提供了專用的高速序列介面,以及用於高速讀寫ddrx-sdram的介面ip,使其內部的硬體演算法功能可以方便高效地實現與外部晶元、裝置的高速通訊,從而使眾多模組能夠以高耦合度形成更大的演算法、功能系統 -- 這可以算是「膠合邏輯專業戶」屬性的公升級換代。

進而,在fpga晶元中嵌入cpu核(例如arm核)已經成為各晶元廠商的常規做法,這一架構使fpga硬體資源與cpu外圍介面的耦合程度大大提高,為軟硬體協同工作提供了效能更高的平台 -- 「膠合」已經發展到了基於片內硬體連線的程度。

總之,經過三十多年的發展、應用,fpga已經是一種成熟、穩定、高效能的技術,具備高速、並行、運算及引腳資源極其豐富、定時精確(納秒級)、功能極其靈活、硬體直接實現演算法(不需要在作業系統排程下訪問片外儲存器以讀取演算法指令序列)、運算元訪問機制簡單且高效(不需要在作業系統排程下訪問片外儲存器/外部匯流排以讀取運算過程涉及的各種資料來源和狀態資料、發出控制指令)(如果執行基於影象分析等大快取機制的反饋控制演算法則需要訪問直接連線fpga引腳的片外儲存器)、開發除錯手段先進的優點,適合用來實現基於多路高速並行協同取樣、高速並行執行多路大運算量協作演算法、多通道輸出精準協同、強實時性(低延遲量+低延遲抖動量)的高效能複雜反饋控制系統

3. 短板

fpga的主要短板是,其技術思路、實現方式與軟體技術迥異,掌握fpga應用研發技術(尤其是針對特定需求擬定系統架構、設計並高效實現複雜演算法)的工程師與軟體工程師相比在數量上處於絕對劣勢,從而導致任何熟悉軟體技術的研發團隊,或者是已經基於軟體技術實現了n版產品功能的研發團隊在決策引入fpga技術時都必須考慮人才供給問題,以及,改變既有技術架構的成本問題、採用「黑箱技術」的決策風險問題

fpga的另一塊短板是,儘管具備了在較高抽象層次上實現複雜演算法的能力,但這是與「膠合邏輯專業戶」相比而言的,其演算法開發環境提供的抽象程度仍然比主流軟體技術低得多,其設計思路更加偏重於硬體底層,從而導致採用fpga技術實現複雜演算法的專案的研發週期相對較長。也就是說,fpga「跑得快」的代價是「做得慢」,這必定會在研發團隊評估fpga技術時被視為減分項。

4. 尷尬處境

fpga一方面能夠實現非常複雜、效能非常高的產品功能,能夠大幅度提高基於cpu、dsp的產品的效能、價效比,另一方面卻被很多研發團隊視為萬不得已才考慮採用的技術方案,並且其在產品技術架構中的定位還要受到業界歷史觀點的嚴重制約。

對於一項問世三十多年、成熟至少十年的技術來說,這種處境的確是非常尷尬的。

處理機排程中的優先順序排程演算法

優先順序排程演算法,是把處理機分配給就緒佇列中優先順序最高的程序。其中又可進一步把該演算法分為下面兩種。1 非搶占式優先順序排程演算法。該演算法規定,一旦處理機分配給就緒佇列中優先順序最高的程序後,該程序便一直執行下去直至完成,或者因為該程序發生某些事件而放棄處理機時,系統方可將處理機重新分配給另乙...

基於優先順序的搶占式排程

wind核心排程預設使用基於優先順序搶占式排程,核心共有 256 個優先順序 任務的優先順序在其建立時指定,為0 255 優先數 0 對應著最高優先順序,優先數255 對應著最低優先順序。每一時刻,核心保證將資源分給處於就緒狀態的最高優先順序的任務執行。之所以說這種排程演算法是搶占的,是因為如果在某...

關於基於優先順序的搶占式排程

對於有一定作業系統基礎的朋友看到 搶占式 排程一定不會陌生吧。我參考了linux核心 ecos以及windows核心對於搶占式排程的處理,感覺雖然細節上有點差別,但都挺有意思。這裡,我想談談關於搶占式排程的一些看法。在很多作業系統書上基本上都這麼談基於優先順序的搶占式排程 1 每個任務賦予唯一的乙個...