程序員都應該知曉的一些硬件知識 之 硬件評測

數碼評測 CPU 程序員 固態硬盤 機器學習的世界 2017-06-08

CPU


CPU是計算系統的核心,大腦,負責所有簡單或者複雜的運算。

瞭解CPU需要從如下幾個方面去著手:指令集、微架構、具體型號。其中指令集是從指令的角度來描述該CPU支持哪些指令,以及指令的格式是什麼樣子,怎樣去使用這些指令等等抽象層面的東西。微架構則是設計具體的內核來實現上面的功能。具體型號則是以微架構為核心物理實現,我們能實際見到的CPU。

按照指令集劃分,CPU分為如下幾大陣營:X86,ARM,Power,MIPS,DSP;其中原始X86是複雜指令集,其他的均是精簡指令集;由於流水線與亂序執行等策略的引入,定長的指令執行效率要比變長的指令執行效率高,因此新型指令集均採用了RISC的思想,並且傳統CISC的代表X86也引入了uops的概念將CISC指令轉換成RISC指令來執行。

程序員都應該知曉的一些硬件知識 之 硬件評測

一般從性能和功耗兩個方面來評判CPU的優劣。CPU的性能表示執行任務的快慢,CPU主頻越高,單元時間內完成的操作越多,性能自然越好;但是現在的程序多為多線程或者多進程的程序,如果用到CPU的多核技術,將不同的多線程或者多進程部署或者調度到不同的核上,可以成倍提高系統性能。影響CPU性能的第二個因素即為核數。往往通過對比CPU的“主頻X核數”就可以大致預測CPU性能的差異。

此外CPU性能相關的指標還有cache的大小,製程,是否超線程,AVX指令支持等技術。

功耗則和製程、平臺等CPU具體實現有關係,同時性能越高的CPU往往功耗也最大。

內存


內存是和CPU最近的部件,負責CPU最重要數據的存儲,是CPU看到的第一級存儲介質。

內存的關鍵指標包括:RANK數、頻率、內存技術(DDR3等)、內存類型(RDIMM、UDIMM等);通過這些指標可以唯一確定某一類型的內存。

內存的性能主要是帶寬和延遲。一般很少考慮單條內存的帶寬,而是考慮整個系統的內存帶寬。通過如下公式: 內存帶寬=內存頻率64/8倍增係數。其中內存頻率為系統設置的內存工作頻率,一般為1333MHz、1600MHz等;倍增係數為並行的channel數,這和系統CPU以及內存插法相關。另外由於系統的綜合影響,內存的實際帶寬往往遠遠低於理論帶寬。

而內存的系統延遲,一是由內存本身延遲的影響,另一方面也受內存最大帶寬的影響。

機械硬盤


硬盤是計算機系統上主要的存儲介質。由於內存是易損介質,在斷電後,內存中的數據會全部消失,而一些數據需要存儲在不易損的介質上,以便多次使用。

比較常見的硬盤為機械硬盤,數據是有磁性介質的機型來維持,並且通過電機以及其他機械裝置來完成數據的讀寫(也就是相應區域磁性介質的此話)。磁盤中一般使用圓形盤片,並通過磁頭完成數據讀寫,而盤片上數據區域的尋址是通過轉動電機和步進電機來完成。

要了解磁盤上數據的讀寫需要理解如下概念。磁道,是圓形盤片上用來存儲數據的一個個同心圓。磁道之間的區域是不能沒有經過磁化的不能存儲數據的區域。柱面,是不同盤片的相同磁道組成的圓柱面。扇區,是磁盤上數據讀寫的最小單元。磁頭扭斜,是不同磁道間扇區編碼的偏移,為了消除磁盤旋轉慣性的影響。

程序員都應該知曉的一些硬件知識 之 硬件評測

機械硬盤的性能主要受如下幾個方面影響。轉速,轉速越高,在磁道內定位到扇區延遲越低。尋道時間,尋道時間越快,在不同磁道間切換的速度越快。單碟容量,單碟容量越高,數據密度越高,讀取數據越快。接口速度,接口速度越高,從磁盤到CPU的延遲越低,但現在的硬盤速度一般不會達到接口的極限。

一個SCSI卡有多少個SCSI控制器,就有多少根SCSI總線,一條SCSI總線上能連接8和16個設備;

小塊看IOPS,大塊看BW;IOPS=(QUENE DEPTH)/(LATENCY);

SSD


由於機械硬盤有較大延遲,因此以電信號來表徵數據的SSD開始出現。SSD主要採用“浮動門場效應”的技術,通過充放電來完成數據的讀寫。SSD採用陣列的形式來存儲數據,訪問方式和內存較為相似,通過選取對應的word line和bit line來完成數據的尋址。和機械硬盤不同,沒有了機械上的操作,SSD尋址異常的快,從而使得數據的讀寫異常的快。因此在一些對IO有強需求的場合,開始越來越多的使用SSD。

程序員都應該知曉的一些硬件知識 之 硬件評測

測試工具


CPU

speccpu

由SPEC組織發佈,從現實生活中抽取出各種例子,用於評測CPU、內存子系統、編譯器等方面的性能。主要包含12個INT case和19個FLOAT case,從各個方面反映CPU的綜合性能。

speccpu會針對每個case進行打分,然後再將每個case得分進行算數平均,最後得到CPU的綜合得分。

他的優點是:1. case豐富,能儘可能的模擬實際情況; 2. 使用MPI運行case,能最大測試CPU相關係統性能; 3. 運行時間長,能儘可能發現測試中的相關問題。總之speccpu能更好的反映CPU間的差異。

geekbench

geekbench是另外一個簡單易用的CPU性能測試工具;其包含Integer、Floating、Memory、Stream四種模式,每種模式下有若干個case。和speccpu一樣,每個case會有一個得分,最紅得分通過各case得分綜合得出。

他的優點是:1. 依賴環境簡單,不需要其他相關工具; 2. 運行時間短,適合短時間評估CPU性能; 3. 採用多線程模式,更好的反映了實際程序的性能。

總結

根據不同測試工具的不通特點,speccpu更多的用於CPU選型的測試中;而geekbench更適合做自動化測試集成或者分析性能問題的工作中。

內存

stream

stream抽取出內存操作的三種模式:copy、scale、triad;通過記錄完成的內存操作量以及時間,從而來計算出內存的實際帶寬。並且stream採用MPI運行,併發性能更好,內存帶寬能接近實際物理情況。

stressapptest

stressapptest是google開源的測試工具,其完成的操作僅僅為copy,並且採用多線程的模式,能更好的反映程序能達到的內存帶寬。

IO

fio

fio是由內核IO協議棧的maintainer完成的IO性能測試工具,其配置靈活,能針對所有存儲介質進行測試,因此得到廣泛的應用。通過設置同步/異步,隨機/順序,讀寫,iodepth,測試時間,測試文件等參數,來完成不同case的設計。

總結

一個機器的基本組成部分就是CPU、內存、硬盤、網卡,要評判一個機器的性能,需要從整機以及各部件的性能來綜合考慮。不論是整機還是各部件,一般需要從性能、容量和功耗三個方面去考慮。容量判斷標準比較簡單,即是各部件標稱數據;性能測試則需要依靠上述的一些工具;而功耗測試要麼使用物理上的功耗儀,要麼使用intel開放的PTU來獲取。

相關推薦

推薦中...