理論與現(xiàn)實的差異,多核心芯片軟開發(fā)瓶頸何在?
隨著手機市場競爭的白熱化,手機芯片設計商為了創(chuàng)造出差異性,發(fā)布了8核心以上的CPU。讓手機芯片的核心數(shù)量一舉超越主流筆電的2或4核心。然而,我們是否真的需要如此多的核心?是什么原因讓我們無法徹底地發(fā)揮CPU的真本事?
中央處理器,CPU(CentralProcessing Unit),做為電腦的大腦,掌管著電腦所有運行的程序。為了讓程序可以運行的更快更穩(wěn),電腦架構師們不斷的思考著該如何設計出更好的CPU架構,讓使用者得以享受更加快速、便利的電腦。
為了設計出更為出色的CPU,工程師便想借由不斷提高CPU的時脈,讓CPU得以在一秒內(nèi)執(zhí)行更多的指令。隨著科技的發(fā)展,時脈的確如工程師所愿,逐步的提高。從1990年代開始,CPU的時脈從60MHz,一舉提升到2000年的2000MHz。進步幅度之大,令人贊嘆。
發(fā)展遇到瓶頸,多核心的時代來臨?
到了千禧年,時脈的進展,卻不再如此順利。當CPU時脈發(fā)展到4GHz左右時,工程師發(fā)現(xiàn),CPU每秒所制造出的熱,已經(jīng)突破一般家用散熱器可以負擔的量。為了解決工程上的瓶頸,工程師開始將目光放在多核心架構上。因此,Intel以及AMD皆于2005年發(fā)布了雙核心CPU,欲借由雙核心的技術,突破單芯片效能的瓶頸。
但是,多核心架構卻沒有如原先預期的向超多核心發(fā)展。intel從2005年至2015年。將近10年間,在一般消費者市場(不含電競玩家)所發(fā)售的CPU也頂多從雙核心進展到四核心。至于AMD,即使發(fā)布了8核心的CPU于市場上,其效能也頂多和該時期的同級4核intel CPU相當。
究竟是什么樣的因素,讓CPU的核心無法如同時脈的進展般,一飛沖天?
應用程序的極限,多核心無用武之地?
在不考慮在單一CPU中加入過多核心,會大幅增加CPU的耗電量時。最主要的因素便是多核心的應用程序不容易開發(fā),讓電腦架構師決定持續(xù)研究如何改善一個核心的效能,而非多核心架構的開發(fā)。但是,為何多核心的應用程序會難以開發(fā)呢,這必須從使用者常用的應用程序來看。
在日常的使用環(huán)境中,使用者大多是使用網(wǎng)頁瀏覽器、看影片、以及玩游戲。而這3種,恰好是3種不同的應用類型。
在使用網(wǎng)頁瀏覽器時,電腦大多在等待用戶下新的指令,像是打字以及使用鼠標點擊鏈接,接著便是從遠端讀取網(wǎng)頁資料并繪成使用者界面。軟件在CPU端可以平行運作的部分相當稀少,也因此,多核心在單純的瀏覽網(wǎng)頁上,并無法帶來太多的增益。
上網(wǎng)看影片則是電腦會不斷的從服務器接收影片的資料以及向服務器送請求,接收資料后,交由繪圖處理器(GPU)進行繪圖運算,將壓縮過的編碼影像檔轉換成顯示器的畫面。在這一類應用中,工作負擔主要是在GPU端,CPU可平行的程度也不高。
最后的應用,則是游玩游戲。在玩游戲時,電腦會不斷的接收用戶所下的指令,接著是在電腦所建構出的虛擬世界中,標記玩家周遭的景色以及移動。之后,便是將整個虛擬世界交由GPU,轉換成顯示器的畫面。繪圖處理器詳細的運行流程在此。
在這一類應用中,因為電腦需不斷地記錄玩家的移動以及將虛擬世界中物體位置記錄在CPU中,因此,CPU的負擔較其他應用沉重,畢竟它需要從硬盤中讀取地圖的地形座標以及玩家的位置和動作。此外,CPU也需將大量的游戲資料送進GPU中。所以,游戲和前述的應用相比,可平行的程度較高。但是,4核心也足以負荷所有需求。因為負荷最沉重負擔的,依舊是GPU。
根本問題,人的思緒是線性的
由上所述的數(shù)個原因,可以得知最根本的問題,便是人類一次只能思考一件事情。而電腦程序是由人類撰寫,導致在撰寫程序時會將人類的思考方式帶進電腦中,讓程序在早期的發(fā)展,僅需由單核心處理器便可以完成。
此外,如果要將現(xiàn)行的程序修改成平行程序,也因為人的思考流程是線性的,工程師需要花費相當大的力氣才能找出可以平行的部分,并將程序的邏輯做大幅的修改,讓平行程序難以推廣。
或許會有人反駁,人一次是可以做兩件事情,像是一邊做事一邊聽音樂,但那也只能稱為可以迅速的在兩件事情間做切換而非同時思考。除非,有人可以將眼睛同時對焦在兩點以上,這樣才有可能一次處理兩件事情。
此外,有部分的使用者會宣稱,他們一次會開啟多個網(wǎng)頁分頁,這樣也算是需要多核心的CPU,但是,如前所述,除非有人可以將眼睛對焦在兩點上,同時看兩個網(wǎng)頁。不然,開啟多個分頁只是占用大量的內(nèi)存,多核心在這類應用上沒有多大的幫助。
移動時代來臨,應用產(chǎn)生劇變
然而,在智能手機發(fā)布之后,情況開始有所轉變。隨著手機的迅速發(fā)展以及應用的多變,多核心的應用逐漸增加。舉例來說,在2013年,Apple推出的iPhone 5s內(nèi),便在原本的雙核心CPU外,添加一個小處理器做感測器的資料收集。在其他手機內(nèi)部,則使用一般的CPU核心負責。讓原本的應用,新增了一份可平行的工作。
此外,近期的應用程序也開始提升和現(xiàn)實世界的互動性。以現(xiàn)行熱門的Pokémon GO為例。在開啟AR和現(xiàn)實世界互動時,要執(zhí)行此類應用程序,便需要大量的運算資源。在尋找寶可夢時,手機需要收集GPS信號,下載地圖資訊以及寶可夢出現(xiàn)的位置。
當寶可夢出現(xiàn)后,則需要將相機拍攝的圖片和寶可夢做結合。同時,運動感測器也需要開啟,計算玩家鏡頭的移動軌跡,訂出寶可夢應該出現(xiàn)在畫面的何處;拋球時,則需計算拋球的方向還有滑動的速度以計算拋球的距離。這些應用都可以平行,為多核心CPU開啟一片新天地。
另外,隨著自動駕駛以及人工智能的題材興起,原本用在手機內(nèi)部的芯片,開始攻城略地,往其他領域拓展。在其他領域中,因為需要大量的感測器,讓超多核心的應用化為可能。畢竟,光是接收大量的感測器資料,現(xiàn)行的4核心CPU已招架不住。
那么,我們是否需要多核心的CPU呢?對一般的筆電以及桌機使用者而言,近期的答案為否,畢竟4核心已經(jīng)能滿足使用者的需求;但在移動應用市場中,答案則為是,因為移動設備的應用越來越多元,感測器也越來越多,在CPU中塞入更多的核心,將可迅速的應付與日俱增的硬件需求,而不需花費大量的人力以及財力從單一核心壓榨出更多效能。
編輯:admin 最后修改時間:2018-01-05