前言:
以現在最常見到的個人電腦為例,不同廠商的電腦,同廠商不同型號的電腦,裡面所使用的處理器通常不會一樣。而當有需求要新購入一台個人電腦時,就會依照自己的需求,將可能符合需求的電腦互相比較一番。科學上要比較兩物一定是要將各種變因都考慮進去,因此,當我們提到電腦效能時,會希望將各種型號、廠牌的電腦的不同之處都納入考量。
目標:
將這些電腦硬體性質考慮進去後,以秒為單位標示CPU效能高低,即根據公式算出的CPU Time越小,效能越高。
讀者需求:
知道電腦有CPU這個零件,並且有電腦是由電路組成的概念。單位換算的能力。
第一層考慮:
將CPU Time視為一個程式從開始執行到結束所花的時間
第二層考慮:
接著將CPU的運作方式考慮進去。
首先要知道電腦本身是由
sequential circuit(循序電路)組成的,而一個sequential circuit能夠運作正常的關鍵就在於:有一個clock控制資料的同步與更新。每經過一段時間,資料就會進行同步與更新,這段時間就成為Clock cycle time,單位為一次幾秒。
CPU,全名Central Processor Unit(中央處理器),是電腦核心的部分,即也是由sequential circuit組成的,因此CPU Time再進一步被拆成程式從開始執行到結束總共經過幾次Clock Cycle Time,並且每一個Clock cycle time實際是幾秒。
CPU Time
= 一個程式開始執行到結束所花的時間(sec)
= 一個程式經過Clock cycle time的次數(次)*Clock cycle time(sec/次)
= CPU clock cycle for a program*Clock Cycle Time
第三層考慮:
第二層考慮是很直觀的想法,就好像把一個程式依照週期切成等分直到切完,每一個Clock cycle time所執行的指令數是相同的(不看多出來的指令的話),但是實際上每一個Clock cycle time所執行的指令數是相同的嗎?答案是否定的。
原因之一是,前面就有提到電腦是sequential circuit,當電腦在執行加法和乘法這兩種不同的指令時,因為指令不同,所以執行電路不同,複雜度不一樣,自然這兩種指令執行所花費的時間並不相等。另一個原因則是各廠商各型號的CPU設計技術不同,致使每一個指令在不同CPU中執行所花時間不盡相同,例如加法這個指令在不同的指令集就有可能執行時間不同。
因此本來
CPU Time
= 一個程式經過Clock cycle time的次數(次)*Clock cycle time(sec/次)
現在可以再進一步分解
= 指令數量(個)*平均每一個指令花了幾次Clock Cycle Time(次/個)執行*Clock cycle time(sec/次)
= Instruction count *CPI*Clock cycle time
留言
張貼留言