網路城邦
上一篇 回創作列表 下一篇  字體:
多核心?你用得到嗎?
2014/02/14 05:35:30瀏覽38669|回應2|推薦16

你知道電腦多核心的意義嗎?我也是最近才比較懂的。多核心電腦是個幾年前才較常出現的名詞,現在多數的電腦都會以雙核心甚至四核心做宣傳,好像越多核心(也就是越多CPU)就越厲害!現在我工作上有接觸到高達24核心的伺服器電腦,看起來應該比一般的雙核心桌機好上12倍!真的是這樣的嗎?

事實上,如果軟體配合不上,即使是24核心電腦,同一個程式可能跑得比你的電腦還慢!因為每一個「電腦工作」,術語叫做一個ProcessThread或「執行緒」,只能由一個CPU來執行。多數簡單的軟體整個程式就是一個執行緒,所以即使你有24核心的電腦,單一執行緒也還是只能用其中一個核心來跑,譬如你要用PhotoShop做一個大圖的影像處理,速度快慢就與你有幾個核心無關,只是看處理這個案例的那顆CPU有多好!

對於一般電腦來說,總是有很多的程式會同時進行,如果只有單核心時,各個程式就必須輪流使用唯一的一顆CPU,如果有雙核心,等於一個理髮快剪店有兩個座位,就可以同時進行兩個電腦工作,對於複雜且需要高速的程式,像資料處理或電玩,作業系統就可以用一個不受干擾的核心專心跑這個程式,另一個CPU當然就是隨時切換著執行其他比較簡單的所有小程式了!

我的車牌辨識系統如果只用一般的程式技巧,就是將很多照片用程式迴圈一張一張處理,然後一張一張入庫,就會像有一整排想理髮的顧客排隊進到一間有24個位置的豪華理髮廳,但是所有人都乖乖排隊等其中的一個座位!也就是其他23個核心都是閒置沒用的,這樣給你再多核心都沒用,回家用一般電腦跑或許都快一點。

所以技術關鍵是你能不能將你的程式工作變成一個一個的獨立執行緒,譬如個別車牌的辨識是可以獨立運算的,如果可以拆成很多獨立的小工作,直接交給作業系統,說這是一個「獨立的程序」給他一個工作編號,這樣就可以將它直接分配到另一個閒置的CPU去處理。主程式如果可以一直這樣切割工作,丟出為獨立的執行緒(工作),那麼整體來說它就是有很多員工同時開工,速度當然會快很多。

這個概念也可以稱之為平行處理,我的車牌辨識系統在辨識部分當然已經用到這個技術,不然速度會比現在慢很多倍。目前比較困難的問題是資料搜尋的速度還是無法應付很多警察同時要用的狀況,因為對於一般等級的資料庫,搜尋動作無法直接拆成多個小工作,也就是一個資料庫同一時間只能給一個工作程序使用,沒辦法讓多個CPU同時搜索資料庫的不同部分。

當然啦!像Google那類的搜尋引擎可以那麼快,一定也是用大量平行運算(搜尋資料)達成的!問題只是如何將搜尋工作分割而已。為了可以模擬一個小Google,我昨天開始打掉重蓋我的資料庫架構,目標就是將我的資料庫變成方便平行處理的狀態,預計寫好之後,只要硬體的CPU足夠應付,任何系統搜尋的時間都是在幾秒鐘以內。甚至不會因為搜尋範圍的大小而讓時間變長,因為工作被切割到多個CPU去處理,每個工作的量與時間都一樣,同步完成後不會因為是使用三個或十個CPU而有時間的差異。

當然這個工作剛剛開始,也不保證結果一定這麼理想,正如之前寫辨識車牌的多執行緒,24核心的電腦並沒有真的快24倍,事實上連十倍都不到!但總是會快很多倍啦。其實我現在想玩的東西已經是具體而微的「巨量資料」(Big Data)處理了!這個名詞最近挺夯的。希望成功之後業主與老闆可以了解這已經是另一個層級的軟體技術,可以給予正確的評價。

所以啦!下次您採購電腦時,不要盲目的追求很多個核心,如果不是執行特殊設計的多執行緒程式,一個好的CPU比四個或八個次等的CPU速度效能都更好!之前我這個部落格大半在談大學生教學的問題,辭去教職後,有時會想在部落格繼續自稱鄉下老師好不好?這些日子其實都在忙很專業的電腦工作,但是忍不住會嘗試深入淺出地分享這些資訊技術,或許也可以繼續當個另類的鄉下老師,專門擔任資訊技術領域的記者或導覽解說員,不改稱號還是說得過去的!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=11124823

 回應文章

李牧師
等級:4
留言加入好友
2014/02/14 10:07
「巨量資料」(Big Data)處理了>>>其目的應該是從裡面找出有價值的Trend,,如果搞車牌辨識嗯!!您可以對人類做更大的貢獻喔!!用您的辨識系統,辨識癌細胞,在單一癌細胞還沒群聚前就用您的辨識系統將它消滅。。。。。啊!!老頭子胡說八道,,當作笑話聽就好!!Fox冏

李牧師
等級:4
留言加入好友
2014/02/14 09:59
這個概念也可以稱之為平行處理,我的車牌辨識系統在辨識部分當然已經用到這個技術,不然速度會比現在慢很多倍。目前比較困難的問題是資料搜尋的速度還是無法應付很多警察同時要用的狀況,因為對於一般等級的資料庫,搜尋動作無法直接拆成多個小工作,也就是一個資料庫同一時間只能給一個工作程序使用,沒辦法讓多個CPU同時搜索資料庫的不同部分。>>>你教書時,如果office hour同時有數十個學生來問問題,你也只能一個一個回答問題!花錢請助教囉!!也就是將資料庫自動複製成多個資料庫。。。Money Talks!花錢請助教吧!!