CPU工作方式、多核心、超線程技術詳解

原文地址:https://www.cnblogs.com/taiyonghai/p/7244878.html

CPU是一臺電腦的靈魂,決定電腦整體性能。現在的主流CPU都是多核的,有的運用了多線程技術(Hyper-threading,簡稱HT)。多核可能還容易理解些,相信不少玩家都能說出個所以然。但超線程是個什麼東西,究竟有什麼實際意義,一個支持超線程的CPU開啓和關閉HT有什麼不同,能解釋清楚的人可能就不太多了。爲此,我特地開此貼給大家介紹一下雙核、超線程技術。此貼結合我平時自己工作中的積累、同廠商(英特爾)的交流經驗、以及私下裏作爲一個DIY玩家的認識,力爭做到最權威、最準確,同時保證通俗易懂,希望能用幾個簡單的例子讓你迅速達到硬件專家的認識水平 。

 

不過事先說一下,

1)這是論壇帖子不是論文發表,有些知識點真的只能是點到爲止。

2)有些只能是儘量準確,爲保證通俗易懂,可能達不到學術級別的精準度。

3)本帖強調知識和理解。而現實中,究竟是花六七百買個i3,還是一千多買個i5,這個要具體情況具體分析,沒有固定答案。

4)如果是土豪,只圖一個‘爽’字。不求划算,只求最貴。這個帖子建議也不用看了,因爲所有的理論都無法解釋爲什麼掛QQ需要用到4核8線程的i7。

  

希望你看完此文後,從此裝機選U不再困擾!!!!!

  

有經驗的玩家應該都知道下面最常見的五種英特爾消費級CPU,說它們是消費級是爲了和企業級處理器Xeon(志強)區分:

 

- 賽揚是雙核,不支持超線程 - 入門玩家

- 奔騰是雙核,不支持超線程 - 中低端玩家

- i3是雙核,支持超線程 - 中端玩家

- i5是4核,不支持超線程 - 中高端玩家

- i7是4核,支持超線程 - 高端玩家

 

而志強的一些低端CPU,普通玩家也可以用,比如

- E3是4核,支持超線程 - 高端玩家

 

當然,變態級i7 Extreme可以達到6核12線程,8核16線程,不過一般都是發燒友買的,普通玩家中並不常見。

一些入門的E3,其實方案基本就是沿用i7,比如備受推崇的E3 1231v3,這個U性價比很高,其實就是去了集顯、不能手動超頻的i7。但價格卻便宜了不少,所謂i5的價格,i7的性能。

 

CPU架構

要談超線程和多核,就不得不談CPU的架構和邏輯。無關的技術細節太多,這裏略去。我們重點談一下CPU中兩個相關的模塊:

1)Processing Unit(運算處理單元),簡稱PU

2)Architectual State(架構狀態單元),簡稱AS

PU一般就是執行運算,比如算數運算加減乘除。AS執行一些邏輯和調度方面的操作,比如控制內存訪問等。

  

單核CPU(先從簡單的談起)

一般一塊傳統意義的CPU上會有一個PU、一個AS。

 

比喻一個小飯館(單核CPU),夫妻老婆店,老闆兼大廚廚房炒菜,老闆娘兼服務員點單。這不,來了一個客人,首先,走到老闆娘的收銀臺前,看菜單準備點單。差不多5分鐘後,客人點完了一份蓋澆飯。老闆娘抄好了單,遞給了在後廚的老公。老公開始炒菜。在這個例子中,老闆娘可以理解成AS,老闆/大廚可以理解稱PU(幹實事的)。

  

多核CPU

這裏說的多核,是多個物理核,比如i3的雙核,i5的4核。這中架構下,每一個物理核都有一個PU和一個AS。所以。對於i3來說,就有總共兩個PU,兩個AS。對於i5來說,就有總過4個PU,4個AS。

 

比喻上面小飯館的列子,對於5、6個客人可能還能忙的過來。但設想一下子來他個16個客人,這隊估計要排到街上了。如果再告訴你,每10分種就有16個新客人過來點單。。。完了。生意估計是做不下去了 - 老闆、老闆娘忙到死。

這時,我們就需要一個更大的單位食堂(多核CPU)。有4個服務生、4個大廚。4個服務生同時點單,4個大廚同時開炒(1號服務生專給一號大廚下單,二號服務神生專給二號大廚下單。。。以此類推)。這樣相比小飯館一個老闆娘、一個客人隊列,這裏成了4個隊列,效率頓時比小飯館提高4倍。16個客人,平均分配成4個隊列,每個隊列就只有4個客人了,情況是不是好了很多?

 

這個應該還是比較容易理解的。

  

超線程技術(HT)

重頭戲來了,超線程是個啥玩意。他是我們平時說的多線程嗎?

超線程(HT)並不是我們一般說的多線程。我們一般說的多線程(multi-threading)是指程序方面的,簡單的說就是‘軟’的,代碼級別的。而超線程一般指的是硬件架構方面的,是‘硬’的:通過調整AS而模擬出來的‘邏輯核’

簡單的說吧,超線程就是一個物理核裏面,有兩個AS,一個PU。兩個AS共享一個PU。爲什麼這麼做,看下面的例子:

 

比喻:剛剛那個單位食堂,4個服務生,4個大廚,4個隊列。會不會效率問題?

有!

設想每個客人都有看單選單的時候,你能保證每個客人都看兩眼就下單?有的客人難免會磨磨蹭蹭,問東問西,一個菜點它個15分鐘。而設想大廚平均炒一個菜只要10分種。那剩下的那5分鐘呢?大廚在廚房閒着沒事幹,喝茶看報紙。時間全被客人-服務生點菜這個環節給浪費掉了。

 

那有沒有解決方法?我想大家應該都能猜出來了 

--- 增加服務生

 

這時候,我們給每個大廚多增加一個服務生,從一個服務生變成了兩個服務生(AS),服務生1A和服務生1B開兩個隊列,同時給一個大廚(PU)下單。這樣,當出現服務生1A的客人15分鐘單子都沒有下完的情況下,1B的客人單子很有可能3分鐘下好送給大廚開炒了(PU),這樣大廚就不會站在廚房傻等1A客人的訂單。這樣,最大限度地榨乾大廚的勞動力 (大廚估計要罵娘了),而對於CPU來說,最大限度的提高了CPU的使用率,減少了CPU的(IDLE)空閒時間。有的時候,真不能怪大廚(PU)不賣力,而是你服務生(AS)叫單太墨跡。


  

在下圖中,橙色和藍色表明大廚(PU/CPU)是在工作的,白色格子表明大廚(PU)是空閒的。A圖是單核沒有沒有用超線程,B圖雙核沒有超線程,圖C是單核啓用了超線程。可以清晰地看到,從單核增加到雙核(在沒有超線程的情況下),CPU使用率並沒有增加。而用了超線程後,整體CPU使用率提高了,雖然只是一個核。

 

  

左邊的圖是單核超線程,右邊的圖是雙核,不帶超線程。看出區別了吧?


  

現在來看實際中多核和超線程的相關問題:

1)i3 雙核4線程,和i5 4核4線程,是一回事嗎?

首先先說一下i3,i3是雙核,開了HT以後,變成4個邏輯核(4線程)。最新的Win10我不知道,但在Win7裏面邏輯核是被顯示成物理核的,和i5一樣。那i3和i5一回事嗎?如果你覺得是一回事,那我上面的東東全都是白寫了。

i3是4個服務生兩個廚子,i5是4個服務生4個廚子,你覺得一樣嗎????

 

2)那i5 4核4線程,相比較開了HT的i7(4核8線程)一樣嗎?

i5是4個服務生4個廚子。i7如果開了HT,是8個服務生4個廚子。當然從CPU利用率尤其是運行多進程/線程程序上面來看,是開了HT的i7好。

 

3)那i5 4核4線程,相比較關了HT的i7(4核4線程)一樣嗎?

i5是4個服務生4個廚子。i7如果關了HT,也是4個服務生4個廚子。乍一看差不多,至少在大廚(PU)、服務生(AS)的數量上打成平手。但是i7的單核處理能力要稍強於i5,也就是說i7的廚子是特級廚子,i5的廚子的一級廚子。所以其實i5和i7還是有差距,但是從理論上來說,差距並不是特別大。

 

總結:理論上來說,i3和i5的差距是相當的大。而i5和i7差距主要是廚子(PU)質量的好壞和多出的那4個服務生。其實差距並不是像i5-i3之間的差距那麼大。

 

4)那對與同一個CPU,比如i7,開了HT有什麼優點:

並行能力增強處理多進程/線程的能力加強,對於支持多線程的遊戲提供比較明顯。

CPU利用率增高一般理論上,總體性能提高差不多20%-30%。從這個角度上看,i3開啓了超線程,提高了20%-30%整體水平。但是,這就意味着能和i5打成平手了??? 如果這是真的話,i5也不要賣了。兩個大廚(i3),不是我等拿個鞭子抽抽就能頂的上4個大廚(i5)的。。。。

  

5) 開HT有什麼缺點

單核性能下降

一般在5%-15%之間,主要表現在運行單線程程序。兩個AS的額外開銷比一個AS的開銷要大

比喻:只有一個客人來點餐,指定一號大廚,但你兩個服務生站在那兒,而這個客人可能就會過一下腦子,想想,我是找服務生1A呢,還是服務生1B呢?? 這麼一想,半分鐘過去了。。。是不是還不如只有一個服務生來的簡單。

所以現實中我們超算系統測試跑分的時候一般都是要HT關掉的,因爲追求極限性能。現在最新的CPU可以做到5%-15%的性能損耗,而老的超線程CPU,比如10幾年前的老奔騰4/志強,我見過單核性能超過50%的性能損耗的,啓動HT的額外開銷極大。

 

電費增加,一般功耗平均上升30%。你多請的4個服務生,不用給工錢???

 

- 在核特別多的情況下,比如雙槽服務器的情況下,容易發生擁塞

比喻:試想一個超大的食堂,有56個服務員(雙CPU,28核,56線程至強E5系列CPU),來了幾百個人過來,是不是會亂了套?大家剛進食堂一開始都不知道該排哪個隊了(一般決定排哪個隊,是操作系統定下的)。(在操作系統的安排下)一個客人,把56個隊列一條一條地查一遍,看看哪條隊客人最少就排哪條。。。。

我想問的是,現實中你去食堂打飯,假設有56個隊,你會一條一條的檢查,找出人最少的隊,然後再做決定嗎?估計你56條隊查完,15分鐘過去了,你的小夥伴飯都吃完了。這時候,是不是我將隊伍減少到28個隊,對你來說會相對容易一些?(當然28隊也還還是夠累的)

 

老系統支持的差

比如老的Win2008,Win2000,對超線程支持比較差。

比喻:如果食堂比較空,沒人。這時候來了兩個客人A和B來訂餐,結果兩個人分別跑到同一個大廚的兩個服務生1A和1B上排隊(一般這都是操作系統乾的好事),你能發現哪兒不對勁嗎?

正確的做法應該是A去一號大廚(1號物理核),B去二號大廚(2號物理核)。你讓A,B都擠到一號大廚那裏,二號、三號、四號大廚啥事沒有,閒到死,有意義嗎?

其實問題就在於,操作系統不能分辨物理核和邏輯核。看那裏有兩個服務生,兩個隊列,就以爲有兩個大廚,所以把客人A和B分別打發到1A和1B去排隊,完全不知道後廚的實際情況 - 究竟有幾個大廚。

  

回到現實,我究竟需要什麼樣的CPU?

這裏,我分情況討論。

 

1)上網,聊QQ,簡單的辦公用(比如Office文檔處理),老人機

賽揚其實就可以了。賽揚是2核2線程,其實和2核4線程的i3相比,在對付這類應用時候,拋去主頻,緩存的區別,i3的優勢完全發揮不出來。注意i3的價格差不多是賽揚的3倍。

還有一個就是奔騰,奔騰其實就是主頻稍高,緩存稍大的賽揚。同樣是2核2線程,性能比賽揚只高一點點,但價格差不多可以買1.5個賽揚。個人覺得沒什麼意思,多出這錢,真不如買個高級點的鍵盤、鼠標、顯示器。至少,使用方面的體驗是實實在在的。

  

2)輕量級遊戲,平面圖形工作者(比如PS)

i3其實挺適合。小遊戲,還有一些網頁遊戲,PS什麼的,雖然是多線程程序(比如PS),但其實對CPU的負擔不會特別重。反而瓶頸有可能是磁盤I/O速度等。所以開了超線程的i3對付這類情況,其實問題不大。

  

3)重量級大型3D遊戲

現在的3D遊戲,會將很多比如3D加速的任務交由GPU去做,GPU工作的時候,一般CPU都會處於blocking(中斷等待)狀態,直到GPU指令執行完畢,CPU再繼續。所以這裏就會出現兩個瓶頸,一個來自CPU,一個來自GPU。

 

對於3D遊戲來說,一般來看i5完全可以勝任,你說要不要上i7?當然,你腰包鼓上i7沒問題,跑分肯定會提高。但如果預算有限的話,可能將錢投入到升級顯卡上面來的更簡單直接。比如,i5配中高端顯卡比如970這種比較均衡,相對於i7+950。

  

擁有i7性能的E3值不值得入手?當然值得入手。但如果E3 1231v3價格被JS價格炒過了頭,還不如用i5算了。

  

4) 3D圖形工作者

 

如果工作中出現很多3D建模,渲染啥的。CPU很重要,GPU也重要。CPU(邏輯)核越多越好,因爲各種渲染的方法,從算法上來說,都是可以高度並行的。每個邏輯核,都可以給你任務隊列塞得滿滿的,最大程度的榨乾CPU的性能。絕對不會出現偌大一個食堂,只有一兩個顧客這種情況。而這時候,E3/i7,和i5的區別就有可能非常大。

 

GPU負擔也重,而且普通的遊戲顯卡比如GTX980這種有可能不能勝任,而需要Quadro圖形卡。不是說980不夠強悍,而是因爲一些圖形相關的驅動/庫是沒有被加入GTX980這種遊戲卡的,沒驅動就沒法在GPU上面跑,跑不了就只能依靠CPU來模擬運行。結果就是,CPU本身的邏輯要跑,而GPU跑不了的,最後也是通通讓你CPU跑。你說CPU不足夠強悍,還能活命嗎?

所以這類應用,一定要挑一個強悍的CPU,比如i7, E3這種,甚至是中檔志強E3系列 - 6核12線程,8核16線程的CPU。

   

進階篇 - 爲什麼系統跑分測試的時候,我們是關閉超線程的

 

這時候你可能會問,既然HT能提高系統的性能,尤其是處理多線程程序的能力,爲什麼你們系統測試時要關掉。比如一個4核8線程的E3 1231v3關掉HT後,只剩4核4線程,也就是4個服務員,4個大廚,4個隊列。性能不是會變差嗎?CPU空閒時間不是會高嗎?

 

這其實是個很實際、很有趣的問題,按道理來說我們應該開超線程。

 

例子:

比如來了64個客人,每個人都要一個蓋澆飯,兩種情況

1)到了一個8個服務生、8個隊列的、4個大廚的食堂,每個隊列有幾個客人? - 8個。

2)到了一個4個服務生、4個隊列的、4個大廚的食堂,每個隊列有幾個客人? - 16個。

哪個快?應該是第一個,因爲同時8個服務生,交錯開接單,當然能減少某個客人猶豫、磨磨嘰嘰帶來的延遲。讓4個大廚忙個不停。

 

別忘了,我們之前已經探討了,開啓超線程以後,因爲增加了4個服務員,會帶來額外的開銷 - 每個客人入隊前都會猶豫,都要花時間思考 - “兩個隊我究竟應該怎麼排?哪個隊人少?哪個服務生看的養眼?。。。。”。這種額外的開銷(處理延遲,性能損耗)是硬件級別的,是英特爾設計CPU的時候就規定死了的。我們任何事都無法解決硬件方面的問題。而唯一的辦法就只能是 ---->  關掉HT。但關掉HT,每個隊列變成16個客人,而每個服務生,從接待8個客人,增加到16個客人(AS延遲從8份,增加到了16份),怎麼破????

 

重頭戲來了,硬件我們當然無法改動,但是軟件程序上我們可以進行優化,我們可以重寫程序的並行調度算法,使得程序最大程度上針對CPU天生的硬件架構進行優化。具體的算法上細節太專業不容易懂,我舉下面這個例子一說,你可能明白了:

 

例子:

比如來了64個客人,每個人都想吃一個蓋澆飯。來到一個4個服務生、4個隊列的、4個大廚的食堂。每個隊列會有幾個客人? - 16個。

 

好,對於每一個隊,現在我不讓這16個人都去排隊,而是從隊裏面推選出1名代表,讓這個代表代替16個人去向服務生點單。一個單子上16份蓋澆飯,其餘15人退後。這樣一來,總共只有4個客人(代表)點單,其餘的60個人在下面歇息。而點單速度方面,每個隊最多也就(一個代表)磨嘰一次。後堂大廚接到16份蓋澆飯的訂單,也只有拼命做的份。你總不能炒一個蓋澆飯歇5分鐘吧。。。

 

瞧, 是不是問題解決了?

1)既避免了8個服務員、開8個隊列所帶來的AS額外開銷

2)也最大程度的利用了大廚(減少了PU的閒置時間)

 

作爲一個超算系統,大家都在追求極限性能。世界上每年都會進行500強超級計算機性能排名,一點點的性能差異都有可能會讓你的排名退後不少,所以大家都需要儘可能地壓榨系統的最後一點性能。

 

同時,這個實例也告訴DIY玩家們,硬件重要,軟件也重要。硬件強悍的同時,軟件(驅動)也要進行相關的優化。如果軟件沒有針對性的優化,再強的硬件也發揮不出100%的威力。這個也從側面解釋了爲什麼有些硬件,屬於跑分王類型。比如測試3Dmark這種,得分暴高,而一到實際遊戲中,表現一塌糊塗。

 

買硬件,要買用的人多的,不要搞太小衆的東西。

 

軟硬兼施,不僅硬件性能要強,軟件優化也要做到位 

 

1)相對於4核8線程(開超線程),4核4線程(關超線程)後在處理(調度)多線程方面的劣勢,我們完全可以通過修改源代碼,把這個劣勢給抵消掉。而8線程(多了4個硬件AS)所帶來的硬件架構方面的額外開銷,這個可以理解成集成電路級別的,我們無能爲力。

 

所以就像華山的劍宗和氣宗。

劍宗就是:簡單的增加程序線程的數量,同時打開CPU超線程功能。

氣宗就是:修改程序,做算法上面的改變,手動的計算運算週期,調整並行策略,將延遲隱藏掉。

劍宗速成,氣宗慢成。同樣練1年,劍宗練到6級威力,而氣宗只能是3級。但是如果給足夠時間,劍宗的極限只能練成9級,就無法突破了。而氣宗最終可以練到10級。

 

2)還有就是優化。這裏面牽涉到一個平衡的問題。性能 vs 通用性。

 

舉個簡單例子,如果給你一個加法運算:

1+1+1+1+1+1+1+1 (8個1相加,當然現實中,這麼小顆粒度的運算根本沒有必要進行並行,不值得。這裏是爲了舉例需要。)

 

第一種方案 (性能低下+通用性最高):

什麼優化都不做,程序員只要小學一年級畢業就行了。程序太簡單明瞭了,一行搞定,扔給CPU,做了7次運算,算一次1秒鐘,這樣就是7秒鐘。多核一點用都沒有,完全是拼單核性能。強調一句:一個單序程序(serial program)比如8個1相加,你不在代碼級別做並行化,它不會自己變成一個多核程序。也就是說:它只會用一個核!!!這裏,沒有奇蹟,沒有魔術!怎麼做並行化?改你的程序,用上pthread, fork, MPI, openMP。。。等很多種方法,具體細節不多說了。感興趣的話求助一下度娘。

 

總時間:7秒鐘

  

第二種方案 (良好性能+高通用性)

做並行優化:

1)首先,數一下你的機器有幾個核,這裏假設只有物理核。好,數好了,有4個核,花費0.5秒鐘 (時間值只是舉例)。

2)這時,我可以根據核的數量(=4),把運算劈成4份,產生4個(程序上的)線程,變成下面形式,從而和硬件核心個數(=4)進行1:1匹配。這樣的調度開銷0.5秒鐘,

3)然後,開始下面的計算

(1+1) (1+1) (1+1) (1+1)第一輪每個核都是一次運算,共1秒鐘

(2+2) (2+2)                             第二輪1號2號核都是一次運算,共1秒鐘

(4+4)                                           第三輪只有1號核工作   共1秒鐘

 花了1+1+1=3秒。而且這個也是有數學證明的(Divide and Conquer問題,具體細節不多說了。感興趣的話求助一下度娘), 相信大家都學過對數,Log28 = 3 。                      

        

總時間:0.5+0.5+3=4秒鐘

   

第三種方案,比較極端 (極限性能+低通用性)

如果,我知道我的系統裏面有4個核,是不是:1)數多少個核 2)調度開銷 全都可以省了?好,這些費時間的步驟全部去掉。直接奔步驟3)。

---->  這樣,最終只要3秒鐘。

但是,這種方法只適合4核的機器,如果你給他雙核或者8核的機器,整體速度會大打折扣,還不如第二種方案,因爲第二種方案帶有一定的通用性和自適應性。而第三種方案是“死”的,無腦的。也就是編程時候的hard coding (翻譯過來叫死碼或硬碼),這種編程習慣不推薦,因爲寫出來的程序實用性會很差。

 

現在不知道你看出點端倪來了沒有?

 

其實,我們系統測試追求的是第三種方案,因爲我們非常清楚自己系統的架構。完全不用考慮什麼比如雙核和4核CPU的情況(我們一般多用8核的U)。CPU中二級三級緩存的大小都是固定的。也就是說我們的代碼優化可以是非常極端的,完全面向特定型號硬件的優化。這樣的優化換來的就是低通用性,也就是說我們所達到的指標性能,只有在我們的系統上才行。

  

再舉個有趣的例子:

Fermi一代的NVIDIA顯卡,也就是GTX460這種,基本上是在300個左右的CUDA Core(可以理解成流處理器)。而Fermi下一代是開普勒(Kepler),也就是GTX660這種,相比460,性能差不多翻倍。但是怎麼翻倍的,你知道嗎?GTX660的流處理器增加到了1000個左右。但是單個流處理器的性能,660只有460差不多1/2。所以660全靠數量打贏的。

 

結果,問題來了。我們的一個用戶,同樣一個GPU程序(Gromacs)分別放在Fermi卡上和Kepler卡上跑(Tesla計算卡,差不多就等同於460和660),結果Kepler反而比Fermi慢了不少,運行時間多了一倍。按道理來說不應該啊,用戶求助我們。我們檢查後確定不是硬件故障,兩個卡都工作正常,NV驅動也正常。然後,我就開始看程序的源代碼,花了一番功夫後找到了原因!!! 那個程序裏面調用的線程數是死的!設置成了最大產生256的線程(至於爲什麼是256而不是257,因爲CUDA裏面有個thread wrap(線程包)的概念,一個包是32個,所以一般總線程數習慣都是32的倍數。具體不多說了,感興趣的可以看一下《GPU高性能編程CUDA實戰》)。這樣的話,在300個核的Fermi上,基本整個卡的流處理器(幾乎)全部跑滿了。但是對於1000個流處理器的Kepler,256等於只用了差不多1/4,有700多個流處理器從頭到尾就是空閒的。別忘了,Kepler單核性能=50%Fermi單核性能。所以,這樣一來,爲什麼Kepler卡跑得慢,就可以解釋了。

 

我們不知道Gromacs這個軟件的邏輯,其實也沒有必要知道,因爲我們並不是計算分子動力學專家。所以後來,我們把我們的發現,彙報給Gromacs程序的開發者,讓他們對程序進行了優化和改進,重新改進了並行算法,增加了線程數,下個版本更新時終於把這個問題解決掉了,使得Kepler這代的顯卡可以完美地得到支持。

 

可見,有針對性的程序優化是多麼的重要!

  

(下面是我作爲玩家的理解,不一定專業和準確)

 

實際消費市場中,一個消費級產品,尤其是它的硬件驅動,採取第三種思路,就很有可能會出現‘跑分王’現象。這裏,我舉顯卡的例子,可能大家更容易理解些。像很多年前的ATI顯卡,硬件驅動針對那些跑分軟件比如3Dmark,很有可能做了極度的優化。爲什麼會這樣?有大程度上是因爲ATI(第二種方案)拼不過NVIDIA (第二種方案),而這些廠商深知道消費者買顯卡之前都是看評測跑分的,那好,我就給你來這套 田忌賽馬:ATI(第三種方案)去和NVIDIA拼 。結果跑分上面不落下峯了,但通用性可能大大下降。實際運用中,遇到各種各樣的遊戲,如果遊戲沒有進一步對顯卡驅動進行匹配優化,就會導致性能大減。所以這裏是一個: 遊戲程序 <--> 硬件驅動 <--> 硬件架構 三者相互匹配、相互優化調度的問題。(當然,現實中可能還會多出遊戲引擎這個環節,也就是4者)。

  

Crysis(孤島危機)這類的遊戲開發者 (包括Cryengine這種3D引擎開發者),和開發硬件驅動的廠家,思路一般是不太一樣的。也就是說孤島的開發者肯定要考慮平臺的通用性,一般不會採取特別極端的開發思路(比如第三種方案)。實際中,遊戲速度慢,卡頓,一般怪的多的是廠商(ATI,NV),怪產品不給力,但你會怪遊戲開發者寫的代碼垃圾嗎?就算孤島一向被稱爲是硬件殺手,那又能怎麼樣呢?作爲消費者,你只能不斷的掏錢升級顯卡。。。。

 

如果孤島採取的第二種方案思路,那就說的通了。2核4線程、4核4線程、4核8線程當然是不一樣的。因爲你從來都不會有絕對性能上的標杆 - 孤島究竟應該多快多流暢,究竟有沒有把GTX980這個硬件的絕對性能榨乾到極致。而你只可能有相對的感受 - 用核少的i3打孤島,肯定沒有核多的i7打孤島那麼爽。

 

這,就說的通了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章