Global Sources
電子工程專輯
 
電子工程專輯 > 處理器/DSP
 
 
處理器/DSP  

為運算密集型應用選擇最佳化多核心架構

上網時間: 2014年09月04日     打印版  Bookmark and Share  字型大小:  

關鍵字:多核心處理器  ASP  SMP  多執行緒  GPU 

作者:Stephen Olsen,Wind River公司VxWorks產品經理

從高整合度的小型單晶片系統(SoC)到大型的資料中心,多核心革命已經呈現烽火燎原之勢。那麼,在進行系統設計時,如何才能把多核心技術發揮到極致呢?此外,值得注意的是,要在一款多核心系統中充份利用每一份運算能力,並不是一件容易的事。

目前的多核心處理器絕不僅僅是把多個處理器放進同一個晶片中那麼簡單。主要的處理器供應商在其產品中植入了很多有用的特殊功能。例如散列(hashing)、快取(caching)、處理器間通訊、中斷管理和記憶體管理等。這些功能特性如果能夠善加利用,就能讓AMP架構實現高效率執行,而這有賴於在軟體上進行專門的最佳化。

眾所週知,多核心處理架構基本上可分為對稱多處理(SMP)和非對稱多處理(AMP)。SMP架構的特徵是對等地看待每一個處理器核心,完全由作業系統平均地分配和協調核心之間的工作,而非特別指定哪個核心或者哪些核心去執行某些特定任務。AMP架構的特徵則與SMP相反,它並不採用同等看待每一個處理器核心的方式,而是把特定的任務分配給特定的核心來執行。這樣做的好處是減少重複性工作的相關資料切換,從而獲得較高的執行效率。

基本的多核心軟體配置
圖1:基本的多核心軟體配置

有些多核心處理器硬體可直接加以利用,例如飛思卡爾半導體(Freescale)的T4240具備12個多執行緒核心,每個核心可供2個執行緒調度共用。12個核心被分為3組,每4個核心為一組,共享2MB快取,形成一個複雜的系統。那麼,究竟該讓所有核心執行單一OS Domain,並由它來調度所有的執行緒,還是把全部的運算能力劃分成多個獨立的OS Domain,各自負責不同的任務?哪一種方案較好?實際上,這必須根據應用類型來進行取捨。這個應用在平行處理時是否足夠安全?它屬於資料密集型應用嗎?能否發揮共享Level 2 Cache所具備的優勢,很可能成為進行判斷時應該考慮的因素。

標準CPU結合內建GPU也是常用的硬體方案,例如英特爾(Intel) Core i7。這類系統可在4個核心中實現8個超執行緒,並且利用GPU來實現複雜的通用運算。對於典型的運算密集型應用來說,儘管開發這種CPU-GPU混合異質架構會增加系統的複雜度,但由此所實現的性能提升仍然具有很大的吸引力,這讓我們不厭其煩地持續進行嘗試。

一旦理解如何對應用進行分解,就能選擇利用何種方法和語言來開發應用。如果採用多作業系統架構,不論是SMP還是AMP,通常都必須利用共享記憶體在不同OS Domain之間傳遞資料。雖然這不是唯一的方式,但卻是常用的做法──把具有一些資料的指令傳遞給某個OS Domain,然後由一個中斷程式來做出相應的處理。但是,有什麼API可以使用呢?

在這方面有多種選擇。多核心聯盟(Multicore Association)推出了MCAPI(Multicore Communication API)標準,如圖2所示。這是專為multi-OS環境而設計,可以建構在相關的技術規格和MRAPI (Multicore Resource API)之上。MRAPI作為一種資源,為多OS Domain之間提供了共享記憶體。

MCAPI訊息傳遞應用編程介面
圖2:MCAPI是一個訊息傳遞應用編程介面,具有協議和語義規格,規定其功能特性在任何應用建置中都必須遵循的特性規格。

針對這種架構,其他可供選擇的架構還包括利用類似的專用API。無論你做出何種選擇,都希望它是便於配置和維護的,這樣才是最有利於長遠發展的最佳方案。其中一個重要的影響因素是所選介面自身的資源消耗情況。系統中眾多的核心通常都是共享記憶體的,其資料傳輸速度遠遠高於乙太網路。如果分割應用至多個OS Domain中執行的原因之一在於防止快取來往移動(多個執行緒在執行中讀寫同一快取線而進入競爭狀態),那麼降低介面對資源的消耗佔用,從而實現高效的系統建置就顯得更加重要。

對於SMP架構的編程設計來說,同樣有多種選擇。在這種情況下,同一個OS Domain中包含多個相同架構的CPU。選擇之一是採用作業系統內部可用的執行緒模式。在標準執行緒的OS環境中,通常有多種語言可供選擇,例如OpenMP、OpenCL和Cilk/Cilk++等。每種編程設計環境都有不同的語法,有些較簡單,但提供的控制水準有所差異。相對於典型的C語言語法,有些需要擴展性的改變。有些則不支援所有的架構,因而必須仔細檢查所選擇的語言、編譯器與作業系統是否能有效地相互匹配與支援。

如果你有興趣和能力將編程設計技術發揮到極致,以便充分調度系統中的每一個‘閘’,就可以考慮採用通用GPU編程設計(GPGPU)。所需注意的因素包括語言、驅動程式和頻寬。GPU專門設計用於在畫素級對圖形進行操作、計算資料向量以及複雜的3D視圖高訊框率處理。因此,它們具備針對小型資料集快速進行複雜運算的能力。

對於GPGPU來說,驅動程式也有其重要性,必須在作業系統中提供支援。許多GPU供應商並不提供原始程式碼,因為這屬於其智慧財產權的一部份。同時,他們通常也只針對比較普遍的作業系統才提供驅動程式,因而並不支援部份作業系統。

接下來要考慮GPGPU的語言選擇。OpenCL出自Khronos標準。CUDA專用於Nvidia GPU。它們都採用了類似的方法來建置平行編程設計,而性能基準測試指標則有所不同,在不同硬體環境中的表現有些差異。由於OpenCL是一個開放標準,所以在大多數平台中都可以使用,它具有編譯器,而且不需要修改程式碼就可以應用於CPU與GPU混合的系統。

最後,遠端GPU需要處理的資料量有多大,需要經過何種類型的匯流排,也會影響設計決定。越是資料密集型的應用,GPU應該越靠近CPU。如果二者之間必須經過PCIe匯流排,那就必須與週邊設備共享頻寬,這很可能會使性能受到較大的影響。如果GPU與CPU比較接近,由此造成的影響會相對降低。

特別是對於可穿戴式裝置、行動手持裝置、數位成像裝置、家用閘道器以及寬頻接取等消費電子產品來說,所面臨的一個重要挑戰就是以小體積、低功耗的執行環境來處理越來越大量的影像、聲音,甚至是人體生理特徵資料。為了針對這類執行環境在較短的時間內開發出優異的多核心系統,如何選擇開發平台就顯得更為關鍵。

Wind River公司最近針對最新版的VxWorks 7即時作業系統(RTOS)推出了因應各個產業領域的解決方案。這些方案針對VxWorks 7擴充一系列非常有價值的功能,以滿足不斷演變的市場和技術要求,並把握物聯網所帶來的新市場發展商機,包括消費電子領域,專門針對可穿戴式裝置、行動手持裝置、數位成像裝置、家庭閘道器以及寬頻接取裝置等小型連網設備,提供快速啟動、小體積、低功耗的執行環境,還特別強調對於GPU和2D/3D圖形化使用者介面(GUI)的支援能力,因而可有效地發揮多核心處理器的優勢。

總之,在這裡並不存在點石成金的魔法棒。設計者必須深入研究每一種多核心架構的選擇,包括硬體、軟體、語言以及編譯器,才能準確地評估每一部份對整體性能的影響,從而針對特定的演算法實現最佳化。

(參考原文:Picking the right multicore architecture for your compute-intensive application,by Stephen Olsen, Wind River Systems)





投票數:   加入我的最愛
我來評論 - 為運算密集型應用選擇最佳化多核心架構
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首