# 電腦性能(Performance)介紹 ## Below Your Program * Application software * 以high-level language(高階語言 以下簡稱HHL)編寫 * System software * Compiler:將HLL code轉換為machine code * OS:service code * 處理input/output * 管理memory 和 storage * Scheduling tasks & sharing resources * Hardware * Processor、memory、I/O controllers ## Levels of Program Code(不同層次的程式碼) * HLL: * abstraction 使開發者在使用HLL時,可以更關注解決問題本身,而無需深入了解底層Hardware 或系統細節。 * 使得程式碼更容易理解和維護,同時提高了生產力。 * 組合語言: * 組合語言提供了對 machine code 的文本表示形式,是一種相對較低階的語言。 * 組合語言的 abstraction 程度介於 HLL 和 Hardware 之間,提供了更多控制的同時仍然隱藏了底層 Hardware 的細節。 * Hardware representation: * Hardware representation 直接使用二進制數位(位元)和機器碼,這是電腦 Hardware 能直接執行的語言。 * 計算機的指令和數據以特定的編碼形式存在。指令是用來告訴計算機進行何種操作的二進制碼,而數據則是操作的對象。 ## abstraction(抽象化) 不同層次的程式碼和語言與抽象化有著密切的關係。 * 抽象化的目的: * 是一種將複雜的內部實現細節隱藏起來,僅暴露必要的、高層次的操作接口或表示形式的概念。 * Instruction set architecture(ISA): * ISA 是一種抽象層次,它定義了hardware/software interface。 * Application binary interface(ABI): * ABI 是建立在 ISA 之上的抽象層次,它包括 ISA 和系統軟體之間的界面。ABI 定義了二進制程式碼在特定平台上的運行細節,確保不同軟體元件之間的互通性。 * Implementation: * Implementation 是最底層的細節,包括計算機的實際 Hardware 結構和 OS 的實現細節。 ## Response Time and Throughput 在計算機性能評估中,Response Time 和 Throughput 是兩個重要的概念,用來評估系統的效能和效率。 * Response Time: * Response Time是指完成一項任務所需的time。較短的 Response Time 通常被視為系統性能優越的指標。 * Throughput: * Throughput 表示在一個特定的時間內完成的總工作量。它可以用來衡量系統處理能力的高低 * 通常以每小時、每分鐘或每秒完成的任務或交易數量為單位。 * 在考慮如何影響 Response Time 和 Throughput 的因素時,一些關鍵問題包括: * 替換處理器為更快版本: * 更快的處理器通常可以縮短每個任務的處理時間,進而降低 Response Time 。然而,對於 Throughput 而言,這可能也受限於其他系統組件的效能。 * 增加更多處理器: * 添加更多處理器有助於同時處理多個任務,提高 Throughput 。然而,對於單個任務的 Response Time 可能不會有明顯改善,甚至可能因為調度和同步的開銷而增加。 在系統優化和設計中,需要在 Response Time 和 Throughput 之間找到平衡,以滿足特定應用和用例的需求。 ## Measuring Execution Time(測量執行時間) 在評估計算機系統性能時,有不同的指標可以用來測量執行時間,其中兩個主要的概念是「Elapsed time」和「CPU time」。 * Elapsed time * 完成一個任務或程序所需的總時間,包括處理時間、I/O 操作、操作系統的開銷、閒置時間等。 * CPU time * CPU time 是指 CPU 用於執行特定工作的所花費的時間 * 不計入 I/O 操作的時間,也不考慮其他工作可能佔用的份額。 * 包括「user CPU time」(在用戶程序中花費的時間)和「system CPU time」(在OS kernel 中花費的時間)。 不同的程序對 CPU 和系統性能的影響可能會有所不同。因此,在性能分析中,這兩個指標都提供了不同層次和角度的信息,有助於全面了解系統的執行效能。 ## Relative Performance 在比較計算機系統的性能時,Relative Performance 是一種常見的度量方式。其基本思想是,性能可以定義為執行時間的倒數 * Performance 定義: 1 / Execution Time * "X 比 Y 快 n 倍" * Performance<sub>x</sub>/Performance<sub>y</sub> * = Execution time<sub>y</sub>/Execution time<sub>x</sub> * = n `` * 例子:運行一個程序的時間 * A 上花了 10 秒,B 上花了 15 秒 * Execution Time<sub>B</sub> / Execution Time<sub>A</sub> = 15 秒 / 10 秒 = 1.5 * 所以 A 比 B 快 1.5 倍 ## CPU Clocking 在數位硬體中,Clock 的概念非常重要,它像是一個恆定的心跳,掌管著整個系統的運行。  * Clock period (Clock Cycle Time): * 指一個 clock cycle 的持續時間。 * 例:250ps 就等於 0.25ns,也等於 250×10^(-12)s。 * Clock frequency (rate): * 表示每秒內的 cycles 數。 * 例:4.0GHz 就等於 4000MHz,也等於 4.0×10^9Hz。 * Clock period 與 Clock frequency 互為倒數關係 ## CPU Time CPU Time = CPU Clock Cycles × Clock Cycle Time = CPU Clock Cycles / Clock Rate 其中,CPU Clock Cycles 是執行任務所需的 Clock 週期數。 * 性能的提升通常可以通過兩種方式實現: * 降低 Clock Cycles。 * 增加 Clock Rate。 硬體設計師通常需要在 Clock Rate 和 Clock Cycles 之間進行權衡。 ## Instruction Count and CPI Clock Cycles = Instruct Count × Cycles per Instruct CPU time = CPI × Instruction Count × Clock Cycle Time = CPI × Instruction Count / Clock Rate * CPI:Clock Per Instruction * CPI 是表示執行一條 Instruction 所需的平均 CPU Clock Cycles 。CPI 越低,表示每條 Instruction 的執行速度越快。 * Instruction Count: * Instruction Count 表示一個程序執行時所包含的指令數量。這個值取決於程序本身、所使用的指令集架構(ISA)以及 compiler 的優化等因素。 ## Multicore microprocessors
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up