什麼是雙核技術,相信大部分人都可以理解,但是為什麼要使用雙核? 它能夠給我們帶來哪些好處? 怎麼用才能發揮雙核的真正威力? 這些問題還是缺少比較明確的答覆。 其實國內幾個專業媒體也發表了一些技術文章探討過這方面的話題,不過都有點以DIY的角度去分析雙核這種味道。 我們覺得,雙核處理器在個人電腦上的應用價值和普及速度應該是遠趕不上這種技術用於伺服器領域,因此,今天筆者就完全站在伺服器應用的立場,結合自己的一些觀點,給大家談談雙核技術:
什麼是雙核技術?
&HTTP://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 採用一種比較容易被大家接受的說法,雙核處理器就是基於單個半導體的一個處理器上擁有兩個一樣功能的處理器核心,但是,這種說法很難在本質上解釋雙核心誕生的的原因,如果要追究雙核的起源,還得從一些物理和電子的基礎知識談起:
無法克服的功耗和發熱量
現在的晶片都是在單晶矽大圓片上製成的,大面積的圓片本身也難免存在一些缺陷,生產中的流程有時候也會給矽晶體帶來缺陷。 另外雖然工廠的清潔程度非常之高,但在生產過程中還是免不了帶入一些雜質,互連層在製造中也會引入自己的缺陷形式。 這樣大規模的晶片很難保證全無任何缺陷。 現在半導體進入90納米以下的工藝,缺陷和雜質帶來的影響就更為普遍,電晶體的尺寸已經和某些缺陷或雜質的尺寸在一個量級,甚至電晶體尺寸更小。 一般來說,非致命的缺陷會造成電路性能下降,為彌補缺陷帶來的損失,就需要給電路更高的電壓和更大的電流,許多缺陷在降低電晶體性能的同時還會增加電晶體的功耗,以前CMOS數位電路的主要功耗是工作時的動態功耗, 但到了90nm工藝以後,情況發生了很大變化,許多原來基本可以忽略不計的功耗因素現在都佔據了較大的比重,例如電路互連損耗,洩漏損耗。 其中,洩漏損耗的影響急劇增加。 這就是為什麼採用0.09微米工藝之後,各種處理器的發熱量和功耗還是一路呈攀升趨勢的原因,高頻的Prescott處理器功耗將近100W,要知道,一個可以把焊錫快速融化的電烙鐵也不過50W左右,因此,高功耗和嚇人的發熱量成為CPU繼續向高頻挺進的 一大障礙,當時就有很多人預言,4GHz的處理器誕生之後,大家將可以通過CPU散熱片來煮雞蛋。
高頻之外的解決方案
既然無法通過繼續提升頻率來實現更高的頻率,那麼使用者對產品性能提升的需要應該如何得到滿足?
第一種做法當然是使用64位技術,為什麼64位運算會比32位運算性能強大,這個比較好理解,例如你使用32位的CPU,要向外輸出一個64位的資料,需要消耗兩個時脈,但是如果你使用64位的CPU,只要一個時脈就完成了。
另外一種做法就是使用多路對稱技術,其基本理論當然就是用兩個處理器去完成一個處理器做的事,看上去就跟磁碟陣列技術一樣,RAID 0就是使用兩塊硬碟來同時存取一個檔,各存取一半,因此花費的時間減半,假如使用4塊硬碟, 就是每塊各存取1/4,所需時間自然更短;CPU的多路對稱工作原理也是這樣的,因此,中高端的伺服器很多都使用4路、8路配備,就是為了提高產品性能。
多路對稱的難處
要通過2個甚至4個硬碟實現高性能的陣列存儲並不難,安裝RAID控制器驅動即可,因為RAID控制器會自動控制各塊硬碟的工作方式,程式師或者說CPU只要告訴RAID控制器要讀出或寫入什麼資料,具體怎麼分拆資料, 幾塊硬碟如何分配讀寫等問題根本不需要電腦使用者、程式設計人員考慮,因此原有作業系統和軟體都不需要進行改動;但是CPU的多路對稱工作就不同了,因為電腦的所有指令都是經CPU去執行的, 要是程式設計人員只下令CPU去執行什麼指令而不告訴電腦哪顆CPU去執行這條指令,那麼就會天下大亂,而且如果是兩顆CPU,指令的調度分配還比較好設計,如果是4-8顆,那麼情況就非常複雜,就像兩台電梯的聯合控制程式容易寫, 但是4台電梯的聯合控制程式非常難寫一樣,因為他們之間是2的2次方跟4的2次方這種關係。
另外,由於多內核晶片將兩個或更多的獨立CPU核心集成在一塊矽片上,一些人懷疑它們致命的弱點會是這些CPU核心之間的資料移動,當多內核系統運行爭奪同一條I/O路徑的不同應用程式時,存在一些性能瓶頸。 不過到目前為止,這些瓶頸的影響很小。
如何用好多路對稱
多路對稱工作模式需要程式師設計的軟體本身就能支援多個CPU的指令調度,這樣所有CPU才是以最合理最高效的調度安排去協同工作。 由於應用軟體大多都是採用大量的API函數開發的,所以擔任指令-機器交互角色的作業系統就是多路對稱開發的根本和關鍵所在,一套作業系統能不能很好的協調多個CPU之間的工作關係,是多路模式能否成功發揮其性能的關鍵。
微軟的SERVER級作業系統都支援多路模式,最新的2003 SERVER還改進了多路對稱的指令調度設計,使伺服器在多路模式下性能可以更加出色。 另外,應用程式本身的設計也是多路對稱工作效果的決定性因素,例如,現在的3D遊戲都是基於單線程開發的,也就是說遊戲運行時不會叫用作業系統的多執行緒函數,這樣的話即使是使用支援多路對稱的作業系統,仍然無法提升應用程式的執行效率 ,因此,大家可以注意到,至今為止多路設計還是只出現在伺服器、工作站等高端領域,因為從成本和效果上看,在個人消費領域使用多路設計都是很不明智的。