單核心的PowerPC 970FX。圖源自Wiki。

話說筆者去年從eBay上敗家買了一台大約在2005年末所推出的PowerMac G5。也是Apple G5系列電腦中,第一款也是最後一款採用G5雙核心IBM PowerPC 970MP的桌上型電腦。同時由於隔年Apple宣布全面改採用Intel處理器作為該公司日後至今生產的電腦核心組件。導致該年的Late 2005 PowerMac G5大概可以被視為最短命的桌上系列PowerPC MAC。


筆者生平接觸的第一台Mac SE30。裡面就是這顆Motorola的68030(CISC架構)。圖源自Wiki。

說起來,筆者接觸Mac電腦不算晚,從最早的Motorola 680X0時代,後來的PowerPC 601/604,還有比較近代一點的PowerPC G3/G4/G5。這個時期CPU的筆戰,總環繞著CISC(複雜指令集)跟RISC(精簡指令集)孰優孰劣的討論。那時候,筆者對於RISC架構的理解(也就是當時Apple所屬PowerPC陣營所採用CPU的架構),因為硬體指令數目少、指令長度對齊、執行時間短等特性,所以有利於電腦程式碼在編譯器編譯上的排程與優化。另一項優勢也是同樣來自於精簡指令集本身的特性,採用RISC架構的CPU能夠透過二級快取容量的加大,相對於CISC而更有效率的受益於快取記憶體增大換得CPU運算能力的提升。


後來的第二台Mac,PowerMac 7100/66AV。就是用上面的這顆PowerPC 601,Apple開始採用RISC架構的CPU。圖源自Wiki。

後來多媒體指令概念的問世。PowerPC跟x86也都各自發展出對應多媒體影音應用的強化架構,分別是PowerPC的AltiVec (Apple稱為Velocity Engine)和Intel x86的MMX。基本上,雖然同樣強調針對多媒體影音世代的來臨所加入CPU的指令集,但是兩者的設計哲學仍然有所不同。AltiVec強調的是浮點"運算"的本身運算加強,因此可視為浮點運算的擴充或延伸。而MMX是針對特定反覆高頻率多媒體的運算應用優化,甚至該稱為特化。因為MMX強調的多媒體運算能力,是在CPU既有的整數/浮點運算能力之外,增設一種不同於前面兩者,但能透過程式撰寫編譯後,直接提高CPU對於多媒體資料的處理能力。

Untitled
PowerMac G4 MDD上的PowerPC 7455。自G4處理器之後,開始加入AltiVec運算單元至CPU中。此時PowerPC處理器的時脈已經過了GHz大關,二級快取配置最大有到2MB之多。

然而,看似兩個CPU陣營為各自的處理器設計哲學無不卯足了全力時。AMD公司對於CPU市場的參與,可以說是讓本來已經精采非常的處理器戰局,產生了更加奇妙的漣漪。AMD的處理器設計,用較簡單的理解方式或許可以這樣來看,極盡可能的採用RISC上的效能強化理論來達到x86指令相容的目的。因此AMD處理器的暫存器使用非常具有彈性。甚至從後來3DNow!的導入,AMD處理器在遊戲上的浮點運算能力能夠超越當時同期Intel時脈相當的CPU。由此可以看出AMD當時在CPU設計上的成功,有效透過處理器架構的優勢來縮短本身與Intel工業製程上時脈的差距。高頻穩定運作的CPU需要優異的工業製程還有材料科技來生產。所以有相當長的一段時期,消費者是以處理器運作的時脈來鑒別處理器運算的能力。即使今日,這樣的印象仍然根深柢固地深植在使用者的心中。


以管線超深著名的Pentium 4 Prescott。Intel這個時期推出的高端Pentium 4隨便一顆都落在3GHz~4GHz之間。圖源自Wiki。

事實上,PowerPC G5 970FX/970MP還有Intel Pentium 4 Northwood/Prescott都在高時脈高熱的問題上嘗到了苦頭。為了因應G5的高熱,Apple在每一代PowerMac G5的頂級款配置上,皆採用了LCS(Liquid Cooling System)作為冷卻CPU的手段。沒想到卻因此為日後冷卻液外滲,導致電源供應器/主機板短路燒毀而種下設計不良的惡名。即使最末代的四核心(兩顆雙核心配置的G5 970MP)冷卻液外滲的情形已經大為減少(跟前代June 2004 Dual G5相比可以說是了了無幾),但使用者已經對於花大錢購置配有液冷系統的Mac信心大失。至於Pentium 4也由於時脈的提昇與SSE/SSE2/SSE3指令集的導入,卻無法比起前代自家處理器有明顯的效能提昇,而空放江山讓AMD有著大鳴大放的機會。


AMD Althon 64採用HyperTransport解決前端匯流排的傳輸瓶頸。圖源自Wiki。

而隨著CPU運算能力的長足發展,另一項效能瓶頸的問題逐漸浮現-前端匯流排。前端匯流排扮演的作用,相當於餵資料給CPU運算的入口。因此可以想見提供資料給CPU運算的能力必須要能跟上CPU消化資料的速度。以PowerPC 970MP來說,PowerMac G5的設計是以雙向高時脈的前端匯流排在運作。Apple在自己的技術資料上註明這是一個採用雙向、相對於CPU時脈二比一64位元的前端匯流排。以筆者2.3GHz PowerMac G5而言,前端匯流排是以1.15GHz的時脈來運作。而在相當於同期的Pentium 4 Prescott,其前端匯流排則是較低的800MHz或533MHz。類似於處理器時脈並非效能的一切,AMD也在同樣傳輸瓶頸的問題上攻下一城,提出了HyperTransport架構作為解決方案。這是一種可序列可並列、高頻率、雙向、低延遲的匯流排技術。相對於原先並列傳輸的匯流排技術,HyperTransport以序列傳輸簡化前端匯流排的複雜性,輕易地提供比之前的技術高上許多的頻寬。而之後更直接地把記憶體控制器內建到CPU中,將記憶體與處理器間的延遲盡可能的降到最低。


Turbo Mode(CPU動態超頻技術),PowerGate(閒置核心關閉的節能技術),內建DDR3記憶體控制器,捲土重來的Hyperthreading技術,序列傳輸的Quick Path Interconnect,可以說是集Intel近年技術大成的i7 CPU。圖源自Wiki。

當然好的概念與技術很快的就會被競爭的對手採用到自家的產品內。AMD 3DNow!獲得成功後的不久,Intel很快的也發表了自家的SIMD(Single Instruction Multiple Data)指令架構SSE(Streaming SIMD Extensions)。在概念上,SSE算是有點向AltiVec和3DNow!的設計哲學靠攏。表面上SSE一開始似乎沒有如3DNow!獲得如雷貫耳的掌聲。但是由於先天x86 CISC的包袱加開外掛導入RISC架構的作法,Intel自始自終其實深知編譯器針對處理器最佳化對於軟體表現效能上的重要,所以從SSE一代接著一代到如今最新的SSE4.2,Intel花了相當長的時間耕耘編譯器的領域,讓程式開發者熟悉接受甚至深黯SSE指令的運作。強者如Maxxuse甚至直接以SSE2指令,以組合語言直接實作出SSE3指令集的模擬器(可以想見有為數眾多高手在這上面鑽研至深)。另外在影音轉檔上也有為數眾多的高手極盡所能地將程式碼針對SSE改寫,因此在影音轉檔的應用上,筆者自己的經驗還是覺得Intel架構的CPU仍然是目前市場上相關應用的首選。以編譯器釜底深耕的策略延伸至應用軟體在單機桌上電腦的表現,事實上相當地有效解決CISC所承襲的包袱和效能瓶頸。而在前端匯流排的部份,Intel也在先前剛發表沒多久的i7 CPU家族上,使用了與HyperTransport類似的傳輸技術-Quick Path Interconnect。而同樣的也在i7 CPU家族內整合了支援三通道DDR3的記憶體控制器。


雙核心PowerPC 970MP的內部Die shot,左右上方是各自1MB的二級快取記憶體。圖源自InfoMars論壇。

說了這麼多編譯器針對CPU指令集最佳化所帶來的效能提昇。那在沒有最佳化的情況呢?或是換個角度來想,雖然多媒體指令的強化可以大幅改善相關應用的效能,但是並非每個使用者都高度依賴這類的程式,甚至我們每天使用電腦的情形,可能有泰半也都非多媒體方面的應用。在處理器時脈尚未進入GHz大關之前,直接CPU工作時脈的提昇所換來的效能增長是非常直接而且容易理解。然而當時脈進展到2GHz之後,一方面是工業技術製造上的困難,還有處理器本身材質的物理條件限制(像是高頻同時帶來的高熱與耗電),時脈增加所換來的性能增益逐漸平緩,甚至造成冷卻系統設計上的困難(如PowerMac G5液冷系統血淋淋的例子)。因此既然火力無法繼續增強,改採人海戰術就是可行的另一項作法。也就是在時脈沒有增加的情形下,在同一顆CPU內放入多個處理器核心。雖然說起來很容易,但是在實行上有很大的問題需要克服。最直接面臨的問題就是指令的排程和快取資料的一致才能確保運算結果的正確性。說起來似乎又回到了處理器指令管線化(Instruction Pipeline),超純量執行(Superscalar),分支預測(Brach Prediction)的老路。確實透過實質上應用程式撰寫手法的改變,還有搭配編譯器針對多核心CPU最佳化才能真正百分百發揮多核心處理器的好處。然而實際上即使拿既有針對單核心單CPU撰寫的軟體在雙核單CPU上運作,也多少能獲得20-30%不等的效能增進。就如G5 970MP的問世時,Apple同樣也聲稱單CPU雙核的2.3GHz G5比上一代單核雙CPU的2.5GHz G5有著更好的效能。或許,這裡面有一部分要歸功於作業系統運作方式不約而同地契合於單CPU多核心的處理器架構。如今作業系統本身緒(Thread)的執行,就在某種程度上可以視作一種軟體的即時排程,一個應用程式對應一個緒在執行,應用程式彼此透過作業系統記憶體保護的規範來確保彼此運作互不干擾。換個角度來看,作業系統扮演一個將硬體抽象化的角色,前端應用程式對硬體的要求由作業系統接單,而後端的處理器只要負責應付由作業系統丟過來的執行緒,在硬體上盡可能的將所有的快取,暫存器和運算核心派上用場,然後把作業系統送過來的執行緒一一消化掉。簡單來說儘管處理器變成多核心,但整體實質來看仍然是單一的一顆CPU,因此在作業系統核心沒有全面改寫的情況下,僅僅只是作業系統層級排程的優化,也可以因為多核心的處理器帶來立即效能上的好處。雖然不如編譯器針對個別如整數或浮點運算一一排程優化所帶來的效能提昇明顯,但相對於原先單核心多處理器的硬體架構來說,單CPU多核心已經是很大的一個突破。不像更早前如PowerMac G4 MDD,雖然具備配置雙處理器的架構,但第二顆CPU泰半的時候往往是英英美代子地閒置中。所以說筆者自己喜歡這樣去理解(其實不確定正不正確),多核心的實質進步就是從處理器內部的指令管線化,擴大進展到作業系統執行緒的類管線化。

談到這裡或許有些朋友會想到Intel多核心的前身,Pentium 4上出現過如今又在i7 CPU Family上捲土重來的超執行緒(Hyperthreading)到底與雙核心有什麼不同。簡單來講Hypethreading是一種邏輯上的雙核心,其目的是在既有的處理器管線中盡可能的把CPU指令給塞滿,而且超執行緒的運作至少需要作業系統核心的配合。然而因為實體核心並沒有實質增加,因此當發生資源互搶的情形時,超執行緒反而有可能造成效能低落。以筆者自己的經驗,超執行緒對於影音轉檔這種大量重複且固定的演算式運算帶來的效能好處最為直接明顯。


早期Pentium 4開始在高階使用的CPU加入Hyperthreading的功能。雖然邏輯上屬雙核心,實體依然是單核心單CPU。圖源自Wiki。

拉拉雜雜的扯了這麼多,大家可能會有個疑問。到底那一系列的CPU才是效能的王道,Apple捨PowerPC家族改採Intel x86是正確的抉擇嘛?尤其Pentium 4的NetBurst架構曾經得來Engineering Failure的評價。事實上筆者想說的是,若談到效能時筆者從未覺得有過那顆處理器終極地主宰著過去數十年桌上"個人"電腦CPU效能霸主的地位。套句蕪園樓主香讀秀的名言:『虛名~虛名~浮雲而已』。由於桌上個人電腦本身使用者特性使然,對於非高端動畫或科學運算依賴的使用者而言,CPU帶來的效能長進往往使用者無法輕易的察覺。甚至對於多數使用者來說,換上SSD固態硬碟,或是遊戲玩家直接更換3D顯示卡所帶來的效能體驗可能還比較直接直覺。因為繁複多元的數位應用,使得並非單單處理器的效能就能片面決定個人電腦的性能價值。另外處理器、應用程式還有作業系統彼此契合無間的合作,也是同樣缺一不可。雖然Apple捨PowerPC家族改採Intel x86傷了一些老玩家的心,而在之後問世的Snow Leopard Mac OS X 10.6支援上,捨棄PowerPC支援再一次傷了許多G5 Users的情感(這也讓筆者有低價入手PowerMac G5的機會>_<)。但是效能極有可能不是Steve Job腦袋裡面所轉的最大考量。Apple賣的是科技產品的新奇體驗,而非高科技硬體本身。Mac OS X已經證明了可以輕易的移植到不同的CPU家族,像是iPhone/iPod/iPad所採用Arm架構的CPU。透過作業系統核心的替換,AMD家族的CPU也同樣可以順暢地執行Mac OS X,甚至目前Snow Leopard的微核心,大家也可以透過lipo -info指令,來看出10.6的核心mach_kernel仍然是與PowerPC以Fat Binary的形式相容的。

所以最大的考量在哪裡?筆者自己的揣測是多元而價格充滿彈性的處理器供應鏈。原先PowerPC家族是由IBM所獨家提供,加上IBM本身針對的是企業用戶市場,因此處理器生產上的配合度到了2004~2005時,似乎漸漸的無法快速回應滿足Apple的期待與要求。而在x86家族相容的處理器市場則有很大的不同,AMD處理器如芒在刺地牽制著Intel,因此讓處理器供應價格與量的需求上,在在地讓Apple有更多的談判空間。從另外一方面來看,Apple對於零組件的供應在態度上有相當程度的自主強烈意識。像是入主LG面板的投資,或是跨足半導體IC設計,如iPad的A4晶片。甚至之前市場謠傳Apple想以八十億美元買下ARM公司。因此IBM遲遲無法推出G5 CPU的行動版本,很可能真的是壓垮導致Apple與PowerPC家族分道揚標的最後一根稻草。

我們若直接來看2005年應用在Apple桌上電腦的PowerPC 970MP處理器。雙核心,虛擬化技術,LPAR Micro-Partitioning(一種源自於Power5家族,屬於處理器層級的硬體資源邏輯分割技術)。可說與今日的處理器設計相比並無到遙遙落後的地步,而實際上IBM處理器的Power家族也持續就Power6、Power7一代跟著一代進一步地往伺服器領域的高效能平行運算發展中。在筆者自己而言,筆者很喜歡970MP在於個人桌上電腦曾經所扮演的獨特性,也同時欣喜Mac OS X轉進x86 CPU家族的市場策略成功。Intel和AMD的較勁讓使用者對於未來的電腦科技有更多的想像。而撰寫此文僅以回首電腦處理器發展史上,曾經有過一個採用PowerPC家族的桌上電腦世代。(剛起床自己再看了一遍!這一篇真是宅味十足啊~握拳>_<)

回應與討論請按此。

創作者介紹

Frontier Exploration of Exiliar

exiliar 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 珊卓拉
  • hihi您好,我想請問一下,我家也有一台G5,現在動也動不了,又捨不得丟掉,請問您知道有那裡可以修好他嗎? 或是會有人想要收購???
    再請回覆唷 感謝您~~
  • 你好,可以跟麥克愛愛的陳龍垠先生聯絡。公司的網頁:http://www.maclove.com.tw/

    exiliar 於 2014/06/10 21:55 回覆

找更多相關文章與討論