精選文章

CS Note / 記算機組織,Performance的計算方式

前言:

以現在最常見到的個人電腦為例,不同廠商的電腦,同廠商不同型號的電腦,裡面所使用的處理器通常不會一樣。而當有需求要新購入一台個人電腦時,就會依照自己的需求,將可能符合需求的電腦互相比較一番。科學上要比較兩物一定是要將各種變因都考慮進去,因此,當我們提到電腦效能時,會希望將各種型號、廠牌的電腦的不同之處都納入考量。


目標:

將這些電腦硬體性質考慮進去後,以秒為單位標示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



留言

這個網誌中的熱門文章

COCO Dataset: 介紹、下載、取得方式、標註資料格式(key points)