Chip123 科技應用創新平台

標題: 克服多核心處理器的設計挑戰 [打印本頁]

作者: masonchung    時間: 2008-11-13 10:06 PM
標題: 克服多核心處理器的設計挑戰
( 01 Nov 2008 )
9 `4 O: V2 v+ f5 }Jon Titus, 特約編輯
1 B9 Z/ G; B8 f: G9 l3 X
1 g9 r- f% y8 w8 G( K: J, G; i
! g; h& g' _1 t  r& j把多核心IC放入設計中,遠比您想像的更容易。
- H6 |6 C: X0 l  J; m! G8 S* Z4 M  R
多處理器電腦已存在一段時間了,但工程師們只是在最近幾年才有機會買到具有多個處理器或核心的現貨晶片。這些元件分為兩類:對稱型和非對稱型。第一類提供了同一核心CPU的多份複製,因此稱作對稱型。第二類包括的元件把不同類型的CPU、DSP、加速器都放在一個單片系統中。筆者將專門介紹前一類多核心技術。" B. \5 B5 G8 K$ H9 j, Z- q

  J9 T$ @* O& C# {& z- p6 F據Extreme Engineering Solutions公司執行長Rob Scidmore表示,單核心處理器與多核心處理器使用的硬體之間僅存在很少幾項區別。“當你必須把軟體從單核心遷移到雙核心時,挑戰出現了。當兩個核心必須通訊時,性能可能會降低很多。系統的等待時間變得更長,但吞吐率依然很高。當工程師為每個核心把應用代碼分解成片段時,就必須應對上述局面,必須平衡等待時間和吞吐率。”3 f% {! P5 v# \( ?. w. ?% r( A7 ~
: U" L' L0 ?' b% t5 ^* P
但是,工程師們經常可以把代碼分解成片段。Scidmore解釋:“工程師可以透過乙太網路埠接收圖像,用演算法處理圖像,然後顯示它們。你可以在一個處理器上運行TCP/IP堆疊,在第二個處理器上運行演算法,並把第三個處理器專門用於顯示。如果你有數千個組合語言檔,那麼你別無選擇,只能回到框圖並從頭開始,並花心思把某個應用劃分成幾個線程。”
" {3 b( X2 k9 c$ f
  P3 N1 \3 s# O- w" b) ]9 r一些為對稱多處理(SMP)提供支援的作業系統(OS)可以提供某種方式來整合舊代碼和新代碼。例如,QNX公司的Neutrino OS提供混合多處理(Bound multiprocessing),它使開發人員能使多個進程始終位於某個核心,或稱“鎖定”。QNX公司產品經理Kerry Johnson表示:“假設你有一些舊軟體,在多核晶片或多處理環境中也許不能恰當運行。代碼可能會假定它擁有對I/O設備等的獨佔控制權,這可能會在多核系統中造成一些問題。這種情況下,你可以把軟體鎖在某個核心�,不必修改代碼。然後你可以添加新應用軟體,它將利用剩餘核心。舊軟體和新軟體並存於某個多核晶片上的相同OS中。”  \' s" B9 P+ A8 Y" f
/ `5 M2 R) i% P
Johnson表示:“要讓開發人員理解多核晶片不要求每個核心都有一個OS,這是一個挑戰。具備SMP能力的單一OS可立即監督許多核心上的操作。隨著更多OS廠商開始支援SMP,開發人員將會更好地理解,他們可以使用一種編程風格,並讓他們的代碼工作在單核、雙核、四核處理器。一套軟體工具可工作在所有這些環境中。”- U3 Q) H: q3 S0 V+ [! I* t1 B
) t) }' [7 y5 e( p1 t  c
這些工具必須包含源代碼級轉換器。Johnson解釋:“需要轉換器處理這些核心,使用者希望在一個視窗�看到一切,而不是每個核心都有一個轉換視窗。在特定時間,無論哪個處理器運行代碼,轉換器都必須在中斷點停止,追蹤程式執行情況,並在所有核心收集資料,就像在單核心晶片上進行。”5 V  e5 d, U" ^5 l& z. i  J; v

+ j3 |8 }* F# I0 Q5 v9 \9 J作為Neutrino作業系統的一部分,QNX公司在其中包含了一個配備了儀器的內核,它使開發人員能用日誌記錄低級的狀態變化、中斷等事件。因此人們能看到所有核心的互動。Johnson說:“當核心共用記憶體和I/O設備時,你可能會遇到你必須詳細檢查的問題。這個配備了儀器的內核把資料記錄在日誌�,並且我們的Momentics系統剖析器可以讓你分析日誌記錄的資訊。”QNX公司提供配備了儀器的內核以及未配備儀器的內核。前者提供一種方式來檢查和測試現場的操作,而後者則略微減少了核心開銷,並略微增加了內核的代碼空間。; P8 t+ m% O8 ?7 P# i
' N: H( Z( b# ?/ q
在把應用軟體放到多核系統中以前,人們要測試這些軟體,次數經常比希望的多。但是,如果原型硬體在人們把代碼準備就緒時就已存在的話,則測試會佔用這些昂貴並且難以建置的原型硬體。並且如果把代碼鎖定到多核硬體,就會很快減少在硬體和軟體之間折衷的機會。作為替代辦法,可以考慮在虛擬系統上運行軟體,該系統模仿處理器核心和其他硬體設備。Virtutech公司行銷副總裁Michel Genard表示:“硬體虛擬化使你能做許多探索。你可以看到應用代碼在一個或幾個核心內如何工作。並且你可以觀察為每個核心改變時脈頻率後造成的影響,但不必改變硬體。 你不會佔用硬體,並且可以運行自己的應用代碼,想運行多少都可以。”
0 p& y3 D9 ?0 L
& s9 {+ W% v2 N* }! \由於虛擬系統控制了時間,因此人們可以立即停止所有核心和設備,並且可以向後或向前運行代碼。人們還可以用檢查點在特定時間接取來自“內部”核心和所有其他設備的資訊。Genard指出:“開發人員告訴我們一些噩夢,比如多核心系統中的SMP競態條件。他們發現幾乎無法在硬體上轉換多核應用代碼。另一方面,虛擬環境使他們能再現系統行為。他們可以根據需要備份、檢驗、改變資料,或觀察和改變行為。”
  h  _# y& }# j+ H! U/ Z5 ]. q9 m1 f) `0 x
虛擬化還有一個好處:開發人員可以確定自己的軟體將如何利用多個核心以及系統的其他硬體。因此他們可以做出設計決定。他們也許會發現,兩個核心將提供與四個核心相同的性能。. c( a  x/ {; s# b0 y0 s! `7 Q" d
  T9 [# {) ~( X4 ~
工程師們經常把飛思卡爾、英特爾、Broadcom等公司看作多核心晶片廠商,而XMOS Semiconductor和Parallax等其他公司也提供多核心元件,但鎖定不同市場。
4 ^( r" l9 E$ N
2 r9 h7 D) V- L# Z4 x1 T據XMOS公司執行長及創始人之一David May表示,該公司把它的XS1-G多核IC家族看作“軟體定義晶片”。他說:“XCores也許有些非比尋常,這是因為看起來像通用處理器以及與I/O介面緊密整合的可程式狀態。它們能進行許多分配給專用硬體做的事情。”每個XCore均位於一個XCore Tile中,後者有自己的寄存器、記憶體、I/O埠以及XLink,XLink與相同或不同IC上的其他Xcore通訊。一個XCore能同時執行8個線程。5 i6 \, C* i& n: M  [* y; g

. N0 f! t) g7 u# @4 I( n開發人員使用XC語言,它是C的衍生品,包括輸入與輸出命令以及多種功能,用於將在不同核心上運行的軟體元件。May說:“在盡可能的情況下,程式師擁有與ANSI C相同的操作符和資料類型。軟體發展人員熟悉順序型C程式,他們很快就可領會新的I/O操作。”! l6 _& n: P  n

& Q# j( G. m: h% ~- d& g2 ]XC 語言的I/O命令控制著I/O埠,並經由XLink通道在XCore之間發送消息。May表示:“XLink連接相同晶片上的各個核心,並且我們提供外部鏈路,因此你可以連接兩塊XMOS晶片。各產品多半將使用我們的多個IC。這種情況下,你可簡單地創建IC之間的訊號連接。PCB上無需複雜的高速匯流排或介面。你不必擔心同步操作和作業系統。我們的OS在硬體�面。在我們的處理器上,對多數系統的OS調用就是一兩條指令。”& H1 r$ L0 _6 m  V  c% n$ P9 z9 @" v7 ^

9 e! r$ U+ X  a& {3 x% {雖然多核心設計乍看也許困難重重,但有許多工具可以幫助開發人員,本文提及的公司提供了具有代表性的方式,來幫助人們在產品中輕鬆使用多核心晶片。- M" k- z* k$ G5 A% \
6 V: [+ T* {0 k' L2 E; z: X/ |' G

7 K" [. t8 A* [) J& [2 TCAPTIONS
7 }: T# ?$ g) T" O[attach]5712[/attach]4 _" S$ B- W2 i# t
圖1:Extreme Engineering Solutions公司的XPedite7040高級夾層卡(AMC)為用戶提供了Intel Core Duo 或Core2 Duo處理器。AMC上的電腦可用於許多高階電腦系統和軍用設備中。9 r- Q0 e% G6 W% a/ d% Z
[attach]5713[/attach]
" E6 U$ j! f4 R- L% w圖2:透過類比硬體設計,多核心處理器的虛擬化使開發人員無須為實施細節操心。 他們可以向後或向前運行代碼,以便在讀設備上建置代碼之前,對行為做詳細檢查。蒙Virtutech公司許可。
$ |0 y' @8 k5 T! z5 y5 S4 L% Z[attach]5714[/attach]
* ~" v  n5 E  _# Q0 x3 L圖3:XMOS公司的多核心XS1-G4IC提供四個XCore Tile,每個均能運行八個線程。內部XLink開關提供片上XCore Tile和外部XCore Tile之間的通訊路徑。




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2