性能簡介
在設計一個計算機系統時,除了要搞清楚硬體界面外,還要從設計者角度,按所希望達到的最佳性能與價格比最合理地實現硬體功能。那么計算機系統的性能與價格比指的是什麼呢?以及如何來衡量它們呢?
衡量計算機系統性能可採用各種尺度,但最為可靠的衡量尺度是時間。時間可根據計算方法給以不同的定義,如回響時間、CPU 時間等。回響時間是指用戶向計算機系統送入一個任務後,直到獲得他所需要的結果所需的等待時間。其中包括了訪問磁碟和訪問主存器時間、CPU 運算時間、I/O動作時間以及作業系統工作的時間開銷等。雖然這種定義比較直觀,但對於多道程式,由於 CPU 可在某一程式等待 I/O操作時轉去執行其他程式,回響時間並不能區別這種情況。另一種情況是只考慮 CPU 時間,此時便可加以區別,它將不包括等待 I/O操作的時間以及 CPU 轉去運行其他程式所花的時間。當然 CPU 時間本身還可分為用戶CPU 時間和系統 CPU 時間。系統 CPU 時間的統計很難做到精確,因為這實際是要求作業系統進行自測量。此外,當比較具有不同系統代碼的機器時,由於系統 CPU 時間是不一樣的,因而誤差較大,故採用用戶 CPU 時間作為性能衡量時間較為妥當。當然,在衡量未載入系統的性能時,採用回響時間較為合適,而衡量 CPU性能則宜採用用戶 CPU 時間,下面主要討論以用戶 CPU 時間來衡量的 CPU 性能。
CPU 性能
絕大多數計算機都使用以固定速率運行的時鐘,它的運行周期稱為時鐘周期 (clocks),它常以時間長短或運行速率來表示。一個程式在 CPU 上運行所需的時間 Tcpu可用以下的公式表示:
式中,
表示要執行程式中的指令總數,CPI表示執行每條指令所需的平均時鐘周期數,而 Tc則表示時鐘周期的時間長度。由以上公式可見,用戶 CPU 時間取決於三個特徵:時鐘周期 (或速率),每條指令所需時間周期數以及程式中的指令數。其中主要取決於機器指令系統和編譯技術,CPI主要與計算機組成和指令系統有關,而 Tc 則主要由硬體工藝和計算機組成決定。每條指令平均所需時鐘周期數CPI,可由下式表示:
其中,Ii表示第 i 類指令在程式中執行條數,CPIi 表示執行一條第 i 類指令所需要的平均周期數,n 為程式中所有指令類數。上述公式還可以改寫成:
MIPS
MIPS(Million Instruction Per Second)它表示每秒百萬條指令數。這是一個用來描述計算機性能的尺度。對於一個給定的程式,MIPS可定義為:
顯然,機器愈快其 MIPS愈高,愈小。但是 MIPS有三個方面的缺陷:
MIPS依賴於指令集,所以用MIPS 來比較指令集不同的機器的性能好壞是很不準確的。
在同一台機器上,MIPS 因程式不同而變化,有時是很大的。
MIPS 可能與性能相反!
典型例子就是具有可選硬體浮點運算部件的機器。因為浮點運算遠慢於整數運算,所以很多機器提供了可選的硬體浮點運算部件,但是軟體實現浮點運算的MIPS 高,然而硬體實現浮點運算的時間少,這時 MIPS 與機器性能恰好相反。類似的情況在具有最佳化功能的編譯器中也有發生。
另外,在使用 MIPS 時應注意它的套用範圍,它只適宜於評估標量機,因為在標量機中執行一條指令,一般可得到一個運算結果,而向量機中,執行一條向量指令通常可得到好多個運算結果,因此,用 MIPS 來衡量向量機是不合適的。在 MIPS 中,不光是運算指令,所有的服務性指令,如取數、存數、轉移等都計算在內,而在浮點運算中服務性指令均不予計入。
MELOPS
另一個替代標準是MFLOPS(Million Floating Point Operation Per Second) ,它表示每秒百萬次浮點操作次數。MFLOPS 可用如下式子表示:
顯然,MFLOPS 取決於機器和程式兩個方面。所以 MFLOPS只能用來衡量機器浮點操作的性能,而不能體現機器的整個性能。例如編譯程式,不管機器性能有多好,它的 MFLOPS 不會太高。
然而,因為 MFLOPS 是基於操作而非指令,所以它可以用來比較兩種不同的機器。因為同一程式在不同的機器上執行的指令可能不同,但是執行的浮點運算卻是完全相同的。然而 MFLOPS也並非可靠,因為不同機器上浮點運算集不同,例如 CRAY-2沒有除法指令,而 Motorala68882卻有。另外 MFLOPS 還依賴於操作類型。例如 100%的浮點加要遠快於100%的浮點除。單個程式的MFLOPS 值並不能反映機器的性能。所以 MFLOPS 也不是一個十分有用的替代標準。
基準測試程式
在進行計算機系統的評價時,除了與被評價的機器的結構、功能等特性參數有關以外,還與輸入,即該計算機系統的工作負荷有密切關係。被評價的一個計算機系統往往對某一種工作負荷表現出較高性能,而對另一種工作負荷則可能呈現較低性能。為了對計算機系統的性能進行客觀的評價,就需要選取具有真實代表性的工作負荷。通常採用不同層次的基準測試程式來評價系統性能。
採用實際應用程式。如C語言或C++ 開發的各種編譯程式;Photoshop圖形處理軟體、Premiere以及 CAD 工具軟體。
採用核心程式。這是從實際程式中抽取少量關鍵循環程式段,並以此來評估性能,但這些核心程式,只具有評價性能的價值。
玩具基準測試程式。玩具基準測試程式通常只有10~100行而且運行結果是可以預知的。因為小而且容易鍵入並且適用於任何機器而受到青睞。
合成測試程式。它類似於核心程式方法,但這種合成測試是 人 為 編 制 的 , 流 行 的 合 成 測 試 程 序 有WinBench 99、3DMMARK2001、WhatCPUIs等等。尤其是WinBench 99,它提供的測試結果都非常令人信服,都是非常權威的。因此,大部分報刊在對新硬體進行介紹時,提供的數據都是來自 WinBench 99 的測試結果。
有關專家對上述方法分析,總結出以下不足:
上述方法都試圖使用一個測試數據來表征計算機的處理能力。
以上方法只進行性能測試,而沒有性能分析工作。
通過上述分析並提出一種比較完善和全面的性能評價方法,包括兩部分:
計算機性能測試。
對測試數據的分析。