# 計算機組織與結構 L3 了解與評估計算機的效能 ## 效能的定義 - 效能有不同定義 - **Reopnse Time (= Execution Time)** - 對多人共用伺服器 - **Bandwidth (= Throughput)** - 對個人電腦 - **$Performance_{x} = \cfrac{1}{Execution\ Time_x}$** - **$\cfrac{Performance_x}{Performance_y} = n$** </br> → $x$ 比 $y$ 快 $n$ 倍 - **Elapsed Time (執行程式所需時間)** - **程式執行及等待 I/O 時間** - **CPU Execution Time (= CPU Time = 程式使用 CPU 時間)** - **System CPU Time (CPU 執行作業系統時間)** - **User CPU Time (CPU 執行使用者程式時間) :** 作為 execution time 量測 - **量測 CPU Time** - 絕對時間(不太可行) - 相對時間 **Clock Cycles :** 用有固定頻率的 **Clock** 作為協調硬體動作的**同步信號**,這些分離的時間間隔就叫 Clock Cycles ## 影響 CPU 效能的因素 - **$CPU\ Time$**</br>**$= CPU\ Clock\ Cycles\ for\ a\ program * Clock\ Cycle\ Time$** </br> **$= CPU\ Clock\ Cycles\ for\ a\ program \ / \ Clock\ Rate$** </br> **$= IC * CPI * Clock\ Cycle\ Time$** </br> **$= IC * CPI\ /\ Clock\ Rate$** - **$CPU\ Clock\ Cycles\ for\ a\ program$** </br> **$= \sum\ (CPI_i * C_i)$**</br> **$= IC * CPI$** </br> **$= CPU\ Time * Clock\ Rate$** - **$CPI$** </br> **$= CPU\ Clock\ Cycles\ for\ a\ program\ / \ IC$** </br> **$= \sum\ (CPI_i * Frequency_i)$** - **$MIPS$** </br> **$= \cfrac{Instruction\ Count}{Execution\ Time * 10^6}$** </br></br> **$= \cfrac{Instruction\ Count}{\cfrac{IC*CPI}{Clock\ Rate} * 10^6}$**</br></br>**$= \cfrac{Clock\ Rate}{CPI * 10^6}$** - MIPS 有三個問題 - 沒有考慮指令的能力 - 同一台電腦執行不同程式,MIPS 可能不同 - MIPS 可能和 Performance 成反比 - | | Instruction Count | CPI | Clock Rate| | -------- | -------- | -------- |----| | **Algorithm** | √ | √ | | |**Programming Language**|√|√|| | **Compiler** |√ |√ | | |**Instruction Set Architecture**|√|√|√| |**Computer Organization (造計算機方法)**||√|√| |**VLSI Technology (造計算機零件)**|||√| ## Amdahl's Law - 用來計算當某一機器改善了一部分後執行時間變為多少 - **$改善後執行時間 = \cfrac{會受改善影響的執行時間}{改善倍率} + 不受改善影響的執行時間$** - **$Speedup$**</br></br>**$= \cfrac{改善後的效能}{改善前的效能}$**</br></br>**$= \cfrac{改善前的執行時間}{改善後的執行時間}$** ## 效能總評 - **Arithmetic Mean (AM)** - **$AM = \cfrac{1}{n}\ \sum\ Time_i$** - 前提是執行頻率皆相同 - **Weighted Arithmetic Mean (WAM)** - **$WAM = \sum\ Time_i * Weight_i$** - **Geometric Mean (GM)** - 採用 **SPECratio (正規化值)** - **SPECratio 越大,Performance 越好** - $SPECratio = \cfrac{EXTime\ referenced}{EXTime\ measured}$ - $GM = \sqrt[n]{\prod Execution\ Time\ Ratio_i}$ - $\cfrac{Geometric\ Mean(X_i)}{Geometric\ Mean(Y_i)} = Geometric\ Mean(\cfrac{X_i}{Y_i})$ - 只是比值,無法預測執行時間 - 和**執行時間無關**,也和**選哪一台機器當作正規化基準無關** ## 評估效能程式 - **Benchmark (效能評估程式) :** 用來比較兩個計算機系統的 workload - **SPEC (= System Performance Evaluation Coporation = 效能評估程式組) :** 最普及、最豐富的 Benchmark,由多個廠商建立與支援的評效程式