CPU最核心的評鑑基準就是single thread與指令集(ISA)

CPU與軟體必須互相配合才能得到最佳效能,資深的硬體使用者都很了解這一點。

以目前的大環境來說,指令集(ISA)長期受INTEL引導,CPU市佔率也有著壓倒性的優勢,
雖然軟體業者大多不會特別依照指令集來撰寫程式碼,
但是當必須要提升運算效率時,不太會有傻子去選市佔率低的指令集來應用。

因此,軟體最常用到的是CPU single thread的效能,也就是IPC的高低,
指令集的部分是能被用到是最好,不能被用到也不能強求,
畢竟這十分考驗軟體工程師對指令集的了解程度。

在選購CPU核心數量多寡方面,我認為應該優先考慮 single thread的能耐 與 指令集(ISA)的多寡,
因為遇到運算量大的軟體時,太容易遇到效能被某一核心卡住的情況了。
只要IPC夠強,照現今軟體對運算量的分配,多數軟體只要有4 CORES以上便不會差太多,
若該軟體特別針對多核心去設計,當然是能支援幾核就買幾核以上。

===============
single thread的評鑑方面,
我目前找不出該以甚麼為基準,原因是各軟體偏重的區塊各不相同,
這就直接導致以不同軟體測single thread 會有不同"強弱比例"出現。
例如: A架構的可能在某方面很強,但是在其他方面卻遠遠落後B架構。

最準確的方式就是拿自己最常用到的軟體去實測比較,
但是這樣的方式卻必須先擁有硬體才能得到數據。

以下都是可以比較single thread的網站,可以發現"強弱比例"的差異頗大,
故只能當作粗略的參考,不能當作絕對基準。
http://www.cpu-world.com/benchmarks/desktop_CPUs_single.html

http://www.cpubenchmark.net/singleThread.html

https://us.rebusfarm.net/en/tempbench?view=benchmark

各位如果有甚麼其他不錯的網站,歡迎拿出來分享。
2016-04-12 0:02 發佈
我比較想知到軟體在做所謂多核心優化的時候,是怎麼實作的
可用公司中的各類大型專案,或是學校中的各種小組專題報告的工作分配去比喻,通常都是不管怎麼分配工作,也很難讓每個小組成員的工作都平均,一般都是某些成員的工作量會比其他的成員來得多。不同的組長/專案領導人分配的風格也會不同,若工作要分配到盡可能平均,花在專案管理跟計畫上的時間也會變多。

除非是類似裝訂100份資料這種簡單工作,才有機會讓每個人工作盡量平均,拉20個人來做就會有10個人的兩倍效率(先假設每個人產出相同、且資源如釘書機是足夠的)。但是拉20個人來的前置招兵買馬作業,也比拉10個人來要多些。

程式設計師在進行系統分析/撰寫程式/把要計算的工作切分成大大小小執行緒時,進行的就是工作分配,因為在Windows/Linux這類作業系統,可以分配給處理器每個核心平行去執行的基本單位就是執行緒。程式設計師若把程式寫成僅有單一個執行緒,例如很多基本入門的簡單程式設計作業,作業系統就不可能把這個程式同時放到多個核心上去平行執行。

如果涉獵過程式語言的應該了解,任何程式語言,都會有IF...ELSE、DO...WHILE、SWITCH...CASE等等這些條件式跳躍,而且通常是三行就一個IF...ELSE,五行就一個DO...WHILE迴圈,必須決定某些條件是否成立,甚至還要等使用者輸入,再決定接下來執行哪一段程式碼的程式天性,都是讓高度平行化只能在少數應用中達成的原因,例如x264這種多媒體應用,但如果觀察過x264 1-pass跟2-pass的處理器負荷,也會發現平行化的程度不同,畢竟視訊壓縮過程中還是有難以平行化的Sequential循序部分,例如Entropy coding。

如果是直接用C/C++寫程式,通常執行緒的切分跟規劃由程式設計師自行進行,如果是寫需要高度最佳化以榨出處理器效能的程式例如多媒體應用,或是系統程式,對於下層微處理器架構相關的最佳化技巧還得有一定了解(Intel/AMD都有提供跟架構相關的程式設計指南),還可能得偵測核心數量以作到scalable。台灣的程式設計師,接觸這個領域的相對比較少。

如果是寫C#或是Java程式,跟作業系統/處理器中間還隔了.Net Framework或是Java VM,通常.Net Framework或是Java VM會幫忙處理掉很多跟作業系統溝通的事情(像是樓下網友所說的),程式設計師對於下層作業系統或是處理器架構的了解就不那麼需要。但相對也不適合用來寫speed critical的程式,例如用它們來寫視訊壓縮過程中的Motion Estimation模組,效能就會....



h7878220 wrote:
我比較想知到軟體在做所謂多核心優化的時候,是怎麼實作的


我來講講高中成度的多核心優化

基本上商用軟體沒有特別去管幾個核心 能夠產幾個thread就幾個thread 反正CPU的任何核心使用率絕對是100% 直到工作做完

舉例:Java 有兩種extends thread 跟implements runnable interface
產生玩一堆threads後 剩下的工作看是虛擬機還是OS要怎麼搞就怎麼搞 不關碼農的事. 基本上所有熱門程式語言都有multi thread library.

這種方式的優點是碼農的程度不用太高 反正都是用其他人寫好的東西 有高中的水準就可以了 單一程式不會霸占所有CPU資源
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?