異構多處理系統

2021-10-11 14:24:31 字數 4416 閱讀 8851

早期嵌入式處理系統通常由乙個微控制器和一系列外設構成。這些系統通常用來完成獲取少量資料、處理資料、做出決策、基於決策結果輸出資訊等工作。在某些情況下會實現簡單的人機互動介面如讀取鍵盤並顯示結果。處理需求、同時產生需求,以現在的標準來看似乎微不足道。

現代嵌入式系統通常需要處理和分析十億位元組級的海量資料,而且常常在確定性和低延時運算上還有一些額外要求。許多應用還要求系統在滿足相關行業標準的同時可靠符合可靠性和安全性要求。

目前,似乎還不可能在單一處理器上同時滿足處理高頻寬資料、執行系統應用程式、響應實時請求並滿足行業安全標準。然而,多核異構晶元卻可以實現這些功能。這樣的裝置具有多個處理單元,每乙個單元都有能力負責處理乙個或多個前述需求,我們稱這樣的裝置為異構處理系統。

使用fpga邏輯實現多核處理器的優勢是:它可以建立自定義特殊應用處理器,通過並行pipes和多pipeline stages來實現二維並行資料處理,使得在乙個時鐘週期裡可以完成大量的計算。

多核處理器可以設計用來執行通用計算或者是專用計算。和通用處理器執行相同功能相比較,專用計算在減小矽片封裝、提高單時鐘週期吞吐率、低功耗的同時能實現資料優化處理。

異構計算系統有兩種實現方式:

一是將多個不同型別處理器晶元通過片間整合的方式實現節點級異構計算(稱之為片間異構);

二是基於單(矽)片內整合多個不同處理器核心的異構計算晶元實現,即異構計算在晶元級實現(稱之為片內異構)。第二種異構計算晶元技術是當前最新技術。

異構計算晶元是將不同架構的**處理器cpu(central processing unit)、圖形處理器gpu (graphics processing unit)、數字訊號處理器dsp(digital signal processor)和fpga(field programmable gate array)等特定硬體加速單元依據相關技術標準和規範有機內在融合在一顆晶元上,任務由最合適的工作單元來承擔,不同異構核心之間實現協同計算。隨著同構多核達到一定程度,通過核的堆疊提公升計算效能遇到嚴重挑戰,晶元級異構計算能夠消除同構計算時cpu、gpu、dsp之間資料傳輸時間,大大提公升計算效率,並且以良好的效能協同支援圖形處理、資訊通訊、人工智慧、大資料等多領域應用,基於統一程式設計規範和標準,能大幅減小軟體開發程式設計難度、降低產品研製和維護成本。晶元級異構計算已經成為解決計算與效能瓶頸的主流技術之一。

同構計算:使用相同型別指令集和體系架構的計算單元組成系統的計算方式。

異構計算:使用不同型別指令集和體系架構的計算單元組成系統的計算方式。常見的計算單元類別包括cpu、gpu、asic、fpga等。

有乙個大廚(cpu),能做各種菜(相容性好),但是某些大量重複的動作(例如切菜)明顯減慢了他做菜的速度。原來客人都點炒青菜,拌黃瓜之類的,大廚自己還算能勝任,但是最近(大資料時代到來),客人要求高了很多,開始點各種大菜(大量資料複雜處理)。

大廚力不從心,於是老闆需要找個幫手(協處理器)來幫助他,比如在切菜方面,這個幫手可以同時處理很多菜品(並行處理),而且速度很快(低延時)。希望在合理的分工協作下,廚房能滿足新的需求。

在之前餐廳的例子裡,大廚cpu能靈活控制整個做菜流程,更偏向乙個控制者,但很多場景下並不是最好的執行者。cpu作為通用處理器,也是更偏重支援控制流資料。cpu每個物理核中大部分的硬體資源被做成了控制電路和快取,用來提高指令相容性和效率。只有小部分是真正用來計算的邏輯運算單元(alu)。在這樣的架構下,cpu能相容大量指令,但是實際的計算效率並不高。

而且,cpu這個大廚很健忘,每做完一步都要去看看菜譜,甚至健忘到切菜每切一刀,都要去看看下一刀怎麼切。實際執行中,cpu的**都存在memory這個「菜譜」中,需要經過取指令,解碼,然後才能執行指令。在這個流程中,取指令,解碼會開銷額外的時間,降低了資料處理速度。

同構廚房系統:

有人會說,為啥不再雇個大廚(雙核),這樣組成乙個同構廚房系統不好嗎?當然可以,因為之前的晶元結構貌似就是這樣迭代的。但是或許有以下缺陷無法避免:

大廚貴 – **

大廚在某些方面其實不一定擅長,比如你切菜切得過料理機嗎?-- 效能

廚房就這麼大,再來個人可能沒空間 – 晶元面積

大廚吃的比較多,老闆想省點 – 功耗

老闆對這個幫手也是精心挑選的,主要體現在:

最好能提供多樣的菜品加工能力,比如洗菜,切菜一體化。(演算法效能)。異構系統中,high performance compute要求全面實現加速演算法,而不是僅僅是幾個步驟。所以協處理器需要能全面支援需要用到的場景關鍵演算法。

支援同時、快速加工(資料並行處理能力,低延時處理能力)。協處理器需要有大量的資料並行通道,每個通道需要支援低延遲的資料管線處理。

便於操作和菜品訪問(介面效能)。要提供合適的介面頻寬,快速,安全地和主處理器進行資料互動。

安裝方便,能更新處理流程(配置靈活)。使用者能方便地安裝,配置,最好能更新協處理器的功能,方便日後計算需求的公升級迭代。

節能(功耗)。更低的功耗意味著更低的執行成本,更小的空間占用和更簡單的熱處理方案。

gpu和cpu都屬於通用處理器,但是卻有不同的架構。如果把cpu大廚形容為「頭腦發達(控制電路多),四肢簡單(計算電路少)」,那麼gpu幫廚正好相反。在gpu中,硬體資源被大量用作邏輯運算單元(alu),小部分用作控制電路。這為大規模的資料並行處理提供了基礎。其實,這個幫手在特定工作中遠遠超過了師傅(切菜洗菜超級快),大廚可以放心地把演算法簡單、重複性高、需要大量並行操作的工作交給它。

但是cpu支援的控制複雜度較低。當你要求笨笨的gpu把所有菜都切絲,它一定完成得又快又好,但是你告訴它:「土豆切絲,洋蔥切片,南瓜雕花……」它就沒有那麼高效了。這是因為,複雜的控制流程會產生大量的分支(如程式語言中的case和if else),而gpu中乙個控制單元要負責好幾個計算單元。所以,如果要最大程度地使用gpu,勢必要求控制分支越少越好。

另外,gpu有cpu大廚的共同毛病:健忘(需要從memory讀取指令),這帶來了一系列問題(如功耗大,基於指令系統,要解碼)。

如果給asic牌料理機制定一句廣告語,我覺得是:最快速度,最低能效,您廚房的最強幫手。

我們先來看看為什麼asic像「料理機」。因為它擺脫了指令系統,沒有了「健忘」問題,所有功能都固化了交付給客戶,更像一台廚房機器。asic的中文全稱是「特殊訂製積體電路」。它是訂製的,也意味著不需要去糾結cpu和gpu怎樣分配控制資源和計算資源的問題了,想怎麼分配就怎麼分配。

程式語言越接近底層硬體,執行速度越快。asic的設計是直接用軟體思維搭建硬體電路,所有的設計是直接建築在物理硬體(閘電路)上的。所以,asic不需要取指令和解碼,每個時間單位都能專注於資料處理或者傳輸,大大提高了效能。直接設計的硬體結構也讓資料處理管線真正實現,每一級的處理結果能直接用於下一級的輸入,無縫連線。在一定規則下(比如一定晶元面積和佈線規則下),並行通道可以最大化疊加(這句沒理解是啥意思)。在功耗方面,因為硬體利用的最大化,是所有協處理器裡最小的。

那麼厲害的asic,看來我們的最佳方案一定是它了吧,問題來了:asic料理機**能買到呢?對不起,**都買不到,剛剛說了只能訂製。這個過程很漫長,帶來的風險自然很大。更重要的是,cpu大廚在拿到專屬料理機後,如果突然有一天想把功能更新一下,比如原來土豆切絲,現在想切土豆片了。很抱歉,只能再訂製一次。

fpga也是料理機,也沒有指令系統。和asic一樣:它的設計也是直接建築在物理硬體上。這樣的結構就已經注定了fpga在大量資料處理時的優勢。事實上,它幾乎具有asic的所有優點,速度功耗也遠遠優於通用處理器,但是和asic對比,還稍微差一點,例如:功耗大一點,速度慢一點,同樣晶元面積下能實現的功能弱一點。不過,fpga卻有乙個巨大優勢。

fpga,中文全稱「現場可程式設計門級列陣」。對比asic,有三個字無比耀眼:可程式設計。可程式設計意味著可改變。今天切土豆絲,明天切土豆片,都沒有問題了,不需要進行晶元重新訂製,靈活性堪比通用處理器。對比asic的研發流程,fpga開發可以快速試錯迭代,縮短了開發時間。其實,在半導體界,fpga有「萬能晶元」的美譽,它以可程式設計和靈活的直接基於硬體訂製兩**寶,在眾多應用場景中有著重要地位。

fpga的主要問題在開發。fpga料理機交付客戶時其實是乙個空機器,裡面什麼功能都沒有,需要客戶根據自己的需求一點點搭建。這個難度不低,主要原因是:異構演算法的開發人員大部分是軟體人員,缺乏對fpga結構和數位電路的了解,程式語言也不統一(cpu端是c、c++等等,fpga端是vhdl、verilog)。目前解決這個問題的方法是opencl和hls(high level synthesis)技術,支援直接把c、c++**編譯成verilog,雖然目前轉化效果仍然有待提高,但是隨著這些技術的成熟,相信fpga會站上異構計算的舞台**。

參考鏈結

參考鏈結2

語言處理系統

人和計算機交流資訊使用的語言稱為計算機語言或稱程式語言。計算機語言通常分為機器語言 組合語言和高階語言三類。如果要在計算機上執行高階語言程式就必須配備程式語言翻譯程式 下簡稱翻譯程式 翻譯程式本身是一組程式,不同的高階語言都有相應的翻譯程式。翻譯的方法有兩種 一種稱為 解釋 早期的basic源程式的...

批處理系統

將一批作業時間裝入磁帶,然後由監督程式道磁帶上調入記憶體,每次只能調入乙個程式並執行的是單道批處理系統 每次可調入多個程式並分時執行的是多道批處理系統。批處理系統的主要缺點 無互動能力 因為作業事先裝入磁帶即外存了 多道批處理系統採用的技術是中斷技術和多道程式技術。單道程式系統 記憶體中只能存放一道...

流處理系統

上面提到了批處理系統其實並不適合流式資料處理,所以我們需要一些工具來處理流式資料,當然資料庫也可以完成這個任務,生產者傳送任務到資料庫中,消費者輪詢查詢,但是當資料多了以後顯然效率上是有問題的,所以這其實是需要某些通知機制或者更為高效的模型,如下 發布訂閱系統 生產者消費者直接通訊 訊息佇列 這裡其...