一直以來,一個通用處理器加上硬件邏輯是SoC設計的主流結構。
在一些需要大量數據處理的應用中,這樣的結構并不能滿足要求。
實際上,由于不同的任務可在很大的程度上互相獨立運行,如音頻和視頻處理及網絡協議處理等,可以將具有內在執行并行性的復雜任務分解為一系列緊密聯系的子任務,并行實現。
多核SoC(Multicore SoC)或多處理器結構的SoC(MPSoC,Multiprocessor SoC)可以完成這樣一個復雜任務分解到多個內核中去執行的任務。
由于不同的內核可以執行不同的子任務,多核結構在一個周期內可以執行多個指令。同樣的任務使用這種并行處理與使用單個處理資源串行處理的情況相比,整個系統應用的性能有了很大的改進。
另外,多核結構的設計可以復用現有的成熟單核處理器作為處理器核心,從而可縮短設計和驗證周期,節省研發成本,符合SoC設計的基本思路。多核結構是未來SoC發展的一個趨勢。
現在很多產品都是以Arm作為一個主核,以及幾個附加的核,同時使用RISCV來實現很多定制化的小核。
1 可用的并發性
數字電子產品的進步取決于芯片或系統設計師使用許多并行的晶體管來高效地實現系統功能的能力。設計師可以利用許多不同級別的并發性,通常這些級別的并發性可歸納為3種:
?指令級并行性、
?數據級并行性
?任務級并行性。
指令級并行性(ILP,Instruction Level Parallelism)利用指令之間的無關性,使得多條指令可以同時執行,改變傳統串行執行指令造成的較大延時,提高指令和程序的執行效率。
最常見的指令并行是利用指令流水線保證多條相互無關的指令重疊執行不同的指令流水階段,從而提高指令執行的吞吐率。
為了進一步發掘指令級并行性,超長指令字(VLIW,Very Long Instruction Word)和超標量(Superscalar)技術應運而生。這兩類技術都是在處理器的體系結構中加入冗余的計算部件,從而允許無關指令充分利用這些計算部件,達到多操作并行執行的效果。
數據級并行性(DLP,Data Level Parallelism)是指,一組待處理的數據內部存在較為松散的依賴關系,在理論上可以對這些松散數據并行執行。處理器的單指令多數據(SIMD)并行操作結構即利用無關數據的天然并行性,同時完成對多個數據的同一操作,以達到并行處理的目的。
由于系統往往需要完成多種功能,而這些功能可以獨立于系統中的其他功能,這樣就引入了任務級并行(TLP,Task Level Parallelism)的概念。例如,手機系統中的用戶界面、視頻處理、音頻處理、無線信道處理等功能相互獨立,可以成為并行處理的任務。任務級并行性可以從原本的一個串行任務中提取出來。通用的提取方法并不存在,但合適的工具和功能塊能幫助發現隱藏的任務并行性。與前兩類并行性相比,任務級并行性對于結構設計師更為重要。
2 多核SoC設計中的系統結構選擇
對于一個多核SoC的系統結構設計,需要重點考慮對處理器的選型、處理器間的互連結構及存儲器的共享方式等方面,而這些選擇可以通過對以下幾個主要問題的考慮來決定。
1.處理器與存儲器結構
多核結構可以根據處理器核的特性分為同構多核結構和異構多核結構。
在同構多核結構中,一個芯片上集成了多個相同的處理器,這些處理器執行相同或類似的任務。這樣的設計在一些多線程并行度的領域(如服務器市場中)有廣泛應用。
而對于一些特定的任務(如多媒體應用)中,專用硬件在性能和功耗方面會比通用處理器更有優勢。因此,發展出異構多核結構,即處理器中只有一個或數個通用核心承擔任務指派功能,而諸如協處理器、加速器和外設等功能都可以由專門的硬件核心如DSP來完成,由此實現處理器執行效率和最終性能的最大化。
相對于同構多核結構來說,異構多核處理器結構的設計更加困難,而且這種結構是針對某一領域做出優化,設計另一任務需要重新設計。
多核SoC中的存儲層次結構對系統性能影響同樣關鍵,因為大部分嵌入式應用程序是數據密集型的。
存儲器結構的區別主要在于選擇
?何種存儲器組織結構(分布式共享存儲器還是集中式共享存儲器),
?存儲器和處理器的互連網絡類型、
?存儲器參數(緩存大小、存儲器類型、存儲器塊的顆粒數量、存儲器顆粒的大?。?/p>
?以及如何提高存儲器帶寬。
2.核間通信與Cache的結構
多核處理器的各個核心執行的程序之間需要進行數據共享與同步,因此其硬件結構必須支持核間通信。
(后面聊聊核間通信的原理)
高效的通信機制是保證多核處理器高性能的關鍵。
在多核處理器的設計中,核間的通信可以是基于共享Cache的結構。
在這種結構中,每個處理器內核擁有共享的二級或三級Cache。Cache中保存比較常用的數據,并通過連接核心的總線進行通信。
這種系統的優點是結構簡單,而且通信速度比較高。
因此,在Cache的設計中,除了Cache自身的體系結構外,多級Cache的一致性問題也是設計中需要解決的問題。
核間通信也可以通過一種基于片上的互連結構。基于片上互連的結構是指每個處理器核具有獨立的處理單元和Cache,各個處理器核通過總線連接在一起,利用消息傳遞機制進行通信。
目前主要的總線互連方式按結構分有:
?雙向FIFO總線結構(BFBA,Bi-FIFO Bus Architecture)、
?全局總線I結構(GBIA,Global Bus I Architecture)、
?全局總線II結構(GBIIA,Global Bus II Architecture)、
?交叉開關總線結構(CSBA,Crossbar Switch Bus Architecture)等。
這種結構的優點是可擴展性好,數據帶寬有保證;
缺點是硬件結構復雜,且需要對軟件進行較大改動。
總之,一個有效的互連結構對于多核處理器間的通信、處理器與外設的通信,以及存儲器與處理器、存儲器與外設的通信是很重要的。在設計核間通信時需要考慮通信速度、可擴展性及設計的復雜度等。
3.操作系統的設計
首先,操作系統的設計需要考慮多核帶來的變化。
優化操作系統任務調度算法是保證多核SoC效率的關鍵。任務調度要考慮多個任務如何分配到處理器資源上去,以盡量提高資源的利用率,實現多個處理器之間的動態負載平衡。
其次,多核的中斷處理和單核有很大不同。當多核的各處理器之間需要通過中斷方式進行通信時,除處理器的本地中斷控制器外,還需要增加仲裁各處理器核之間中斷分配的全局中斷控制器。另外,多核處理器是一個多任務系統。由于不同任務會對共享資源產生競爭,因此需要系統提供同步與互斥機制,而傳統的用于單核的解決機制并不能滿足多核的要求。
4.提高并行性
多核處理器要發揮多核的性能需要提高程序的并行度,單線程程序無法發揮多核處理器的優勢。
通過編譯優化的方法可以把單線程的代碼編譯成多線程的形式。
編譯技術的好壞對一個程序的執行速度影響巨大。
總之,提高程序的并行性是發揮多核性能的重要一步,而通過編譯技術的支持來發揮單芯片多處理器的高性能是非常重要的途徑。
當處理器的內核數量上升時,一方面如果設計不合理,有可能會出現性能反而下降的問題;
另一方面功能強大的內核其結構必然復雜,功耗也難以控制。
軟件開發環境和集成開發環境也是多核SoC設計的挑戰之一。通常需要花費大量的時間來開發這些工具。
這里不得不感慨Linux的偉大了,感興趣的可以在我主頁搜索一下多核啟動有驚喜哦。
3 多核SoC的性能評價
在設計多核SoC時,開發人員會希望預估他們所使用的核的數量與能夠實現的性能提升量有多少,以此作為優化的依據。加速比(Speedup)是衡量多核SoC性能和并行化效果的一個重要指標。
加速比是指同一計算任務分別在單處理器系統和多核處理器系統中運行消耗的時間的比值。值得注意的是,加速比往往并不與處理器的數目成正比。
加速比的提升主要基于計算機體系結構設計中的一個重要原則:加快經常性事件的速度,即經常性事件的處理速度加快能明顯提高整個系統的性能。對于多核SoC而言,其加速比與可并行任務占總任務的比例有關,基于這一前提,當前主要使用兩種多核SoC加速比計算模型來對其性能進行評估,即阿姆達定律(Amdahl’s Law)和古斯塔夫森定律(Gustafson’s Law)。
?阿姆達定律是在任務一定的前提下的加速比計算模型。
?古斯塔夫森定律是在時間一定的前提下的加速比計算模型。
值得指出的是近幾年來研究人員針對不同的應用領域,在阿姆達定律和古斯塔夫森定律的計算模型上進行了多方面的拓展,如考慮通信、同步和其他線程管理的開銷,以及引入功耗模型等,使其更具有實用意義。
與加速比相關的另一個指標是效率(Efficiency)。正如加速比是衡量并行執行比串行執行快多少的指標,效率表示的是軟件對系統計算資源的利用程度。并行執行的效率的計算公式為加速比除以使用的核的數量,用百分數表示。例如,加速比為53X,使用64個核,那么效率就等于82%(53/64=0.828)。這意味著,在應用執行過程中,平均每個核大約有17%的時間處于閑置狀態。
1.阿姆達定律
阿姆達定律是并行計算領域廣泛使用的加速比計算模型。
假設某計算任務中可并行執行部分的比例為f;
多核SoC的處理器數量為n,即多核SoC對并行計算任務性能提升倍數為n。
串行計算任務將由其中一個核完成,運行時間不發生變化,而并行任務將由多核完成,則該計算任務經過并行部件優化后的整體加速比為:
在這里插入圖片描述
由于假定計算任務的規模在使用多核SoC平臺后并不會產生變化(Fixed-size),當處理器數量趨于無窮大時,加速比將趨于1/(1-f),即多核SoC平臺對計算性能的提升存在理論上界。
而多核SoC平臺往往針對更大的計算問題設計,因此計算規模應該隨著計算能力的提高具有較強的可擴展性(Scalarbility)。下面通過一個例子來說明阿姆達定律的應用。
[例1] 假設在一個單核SoC平臺之上,某一計算任務中可并行化部分的執行時間占據整個任務執行時間的40%,若將此單核SoC平臺擴展為擁有10個處理器的多核SoC,則采用該加速措施后整個系統的性能提高了多少?
由題意可知:f=0.4,n=10。根據阿姆達定律,Speedup=1/(0.6+0.4/10)=1.56
由此可見,多核SoC所帶來的性能的提升,往往在很大程度上取決于可并行部分所占的比例。
2.古斯塔夫森定律
對于大量實際應用尤其是嵌入式實時應用,計算規模的擴展往往會受到計算任務執行時間的嚴格限制。
因此,古斯塔夫森定律討論一種固定時間(Fixed-time)的加速比計算模型。它考慮了數據大小與核的數量成比例的增加,并假設大數據集能夠以并行方式執行。改變前后的系統具有相同的運行時間。這樣就可以計算出應用加速比的上限為:
Speedup=(1-f)+nf
與阿姆達爾定律公式相同,式中,n代表核心數量。為簡化表述,對于指定的數據集大小,f代表并行應用中的可并行執行部分的時間百分數。例如,如果在32個核心上99%的執行時間用于可并行部分執行。對于同一數據集,與基于單個核心和單個線程運行環境相比,多核SoC環境下應用運行的加速比為:
Speedup=(1-0.99)+32(0.99)=31.69
古斯塔夫森定律表明固定執行時間的多核SoC性能加速比是處理器數量的線性函數,也就是說隨著處理器數量的增加,其所能處理的任務量也隨之增加,解決了阿姆達定律中對于假設任務量不變的不合理性。因此,在古斯塔夫森定律中隨著處理器數量的增加,其性能也會隨之提升,從而具有可擴展的特性。同時古斯塔夫森定律也表明構建大規模的多核并行SoC可以使嵌入式應用得到更大的性能收益。
4 幾種典型的多核SoC系統結構
1.片上網絡
隨著同一芯片內部集成的處理器數量不斷增加,利用傳統的基于總線的互連結構已成為多核間通信的主要瓶頸。研究人員普遍認為,片上網絡(Noc,Network on Chip)結構會成為多核SoC核間通信問題的最終結構解決方案。
特別是隨著集成電路工藝水平的不斷提高,芯片面積不斷減小,NoC結構在未來多核SoC中將顯得更為重要。對在基于NoC的SoC中,處理器核之間依靠網絡和數據包交換機制,在一條由其他處理器或IP核構成的連接或路由上完成數據的交互。
NoC大量借鑒了計算機網絡中的理論和概念,因此會著重考慮通信延時和吞吐率等問題。但作為多核SoC的互連結構,NoC在設計過程中還需要考慮路由和鏈路通信對于系統功耗和芯片面積產生的重大影響。
由于較好地解決了傳統的基于總線的SoC多核系統在總線結構設計上所面臨的帶寬和復雜邏輯協議的問題,NoC體系結構可以廣泛應用于多媒體處理和無線通信等計算密集型應用領域。
典型的NoC系統結構的如圖4-10所示。NoC包括計算和通信兩個子系統,計算子系統(PE,Processing Element)構成的子系統,完成廣義的“計算”任務,PE既可以是處理器也可以是各種專用功能的IP核或存儲器陣列等。
通信子系統(S,Switch)組成的子系統,負責連接PE,實現計算資源之間的高速通信。通信節點及其間的互連線所構成的網絡被稱為片上通信網絡(OCN,On-Chip Network),它借鑒了分布式計算系統的通信方式,用路由和分組交換技術替代傳統的片上總線來完成通信任務。
在這里插入圖片描述
2.可重構SoC
可重構SoC是一種兼顧軟件硬件實現特點的SoC系統結構。與基于通用微處理器軟件的SoC實現相比,可重構SoC可以獲得更高的性能。
而與基于ASIC的專用硬件SoC實現方案相比,可重構SoC又可以保證更高的靈活性,以滿足用戶復雜多變的需求。
圖4-11所示為一種可重構SoC的典型系統結構??芍貥婼oC主要由可重構邏輯陣列和通用處理器組成。通用處理器負責處理重構配置、數據流控制和存儲器訪問等串行控制操作;
而可重構邏輯陣列通常是由一系列可重構的處理單元(PE,Processing Element)、可編程的互連網絡及可重構陣列與SoC中其他設備進行互連的接口組成,負責處理計算密集型任務,以提升可重構SoC的計算性能。
這樣,可重構處理單元可根據應用的需求,利用可編程互連網絡進行動態配置,從而對可重構處理單元進行重新組合,構成滿足需求的計算系統。
在可重構SoC中,通用處理器的編譯器是經過特殊優化的,可根據應用的數據流生成由可重構指令組成的配置文件,配置文件將被加載到配置存儲器中,以完成對可重構陣列得的重構。
在這里插入圖片描述
按照重構的方式,可重構SoC可以分為靜態可重構和動態可重構兩類。假如重構的過程必須在中斷程序執行的前提下運行,則稱為“靜態可重構”;假如裝載配置文件的過程可以與程序執行同時進行,即在改變電路功能的同時,仍然保證電路的動態運行,則稱為“動態可重構”。
動態可重構又可進一步分為全局可重構和局部可重構。全局可重構是指在配置過程中,計算的中間結果必須取出存放在額外的存儲區,直到新的配置功能全部下載完為止,重構前后電路相互獨立,沒有關聯。局部可重構是指對可重構陣列的局部重新配置,與此同時,其余局部的工作狀態不受影響。
局部可重構可以減小重構的范圍和單元數目,大大縮短重構時間,將是未來可重構SoC所采取的主要工作模式。
可重構SoC利用可重構計算陣列對計算密集型任務進行處理,保證SoC具有較高的處理性能。同時可重構SoC又可以根據應用需求的變化對算陣列進行運行時動態重構,以保證系統的靈活性。
由于可重構SoC將軟硬件實現的優點進行了有效的結合,近年來已經成為嵌入式領域的新興體系結構。
3.TI的開放式多媒體應用平臺(OMAP)架構
在異構多核處理器方面,RISC通用處理器和DSP的結構受到了業界的廣泛關注,產品以TI的OMAP最具代表性。OMAP結構是TI公司針對移動通信及多媒體嵌入應用系統開發的多核SoC,如圖4-12所示。
它采用一種雙核結構,把TI的高性能低功耗DSP核與控制性能強的ARM微處理器結合起來。此外,芯片中還包括圖像、圖形的加速器及一些輸入輸出接口。在芯片中,利用低功耗的ARM處理器實現接口和控制方面的需要,而DSP用來增加芯片對音視頻應用中的信號處理能力。
在這里插入圖片描述
由于OMAP獨特的結構,其芯片運算處理能力強、功耗低,在移動通信和多媒體信號處理方面獲得較大的應用。此外,OMAP的開放式軟件結構可保持雙內核硬件對用戶的透明度,以便于編程并集成到多功能產品中。
后續整理一下關于OMAP的資料。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19286瀏覽量
229854 -
內核
+關注
關注
3文章
1372瀏覽量
40291 -
soc
+關注
關注
38文章
4165瀏覽量
218273 -
fifo
+關注
關注
3文章
388瀏覽量
43683 -
系統結構
+關注
關注
1文章
8瀏覽量
7732
原文標題:參考資料
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論