跳轉到內容

微處理器設計/效能

來自Wikibooks,開放世界中的開放書籍

時鐘週期

[編輯 | 編輯原始碼]

時鐘訊號是一個1位訊號,在“1”和“0”之間以一定的頻率振盪。當時鍾從“0”轉換到“1”時,稱為**正沿**,當時鍾從“1”轉換到“0”時,稱為**負沿**。

從一個正沿到下一個正沿所花費的時間稱為**時鐘週期**,表示一個**時鐘週期**。

1秒內可以容納的時鐘週期數稱為**時鐘頻率**。要獲得時鐘頻率,我們可以使用以下公式

時鐘頻率以每秒週期數為單位測量。

每指令週期數

[編輯 | 編輯原始碼]

在許多微處理器設計中,執行單個指令時,通常會經歷多個時鐘週期。因此,經常需要統計執行單個指令所需的週期數。這個數字稱為處理器的**每指令週期數**或CPI。

由於所有處理器都可能使用不同的CPI,因此僅透過比較時鐘頻率無法準確地比較多個處理器。比較**每秒指令數**更有用,它可以這樣計算

現代處理器中最常見的計量單位之一是“MIPS”,代表每秒百萬條指令。一個具有5 MIPS的處理器每秒可以執行500萬條指令。另一個常見的指標是“FLOPS”,代表每秒浮點運算次數。MFLOPS是百萬FLOPS,GFLOPS是十億FLOPS,TFLOPS是萬億FLOPS。

指令計數

[編輯 | 編輯原始碼]

在微處理器效能測量中,“指令計數”是在程式執行期間執行的指令數。典型的基準程式的指令計數以百萬或十億計——即使程式本身可能非常短,但這些基準程式都有重複數百萬次的內部迴圈。

一些微處理器設計人員可以自由地向指令集中新增或刪除指令。通常,減少指令計數的唯一方法是新增指令,以便可以以使用更少指令的方式重寫這些內部迴圈——這些指令每條指令執行“更多工作”。

有時,與直覺相反,我們可以透過使用在內部迴圈中可能每條指令執行“更少工作”的指令來提高整體CPU效能(即減少CPU時間),但這些指令可以在更短的時間內完成。

CPU時間

[編輯 | 編輯原始碼]

**CPU時間**是CPU完成特定程式所需的時間。CPU時間是完成指令所需時間和程式中指令數量的函式

有時我們可以單獨改進3個元件中的一個,從而減少CPU時間。但很多時候我們會發現權衡——例如,一種增加指令計數但減少時鐘週期的技術——我們必須測量總CPU時間才能確定該技術是否使整體效能更好或更差。

Amdahl定律

[編輯 | 編輯原始碼]

**Amdahl定律**是關於計算機效能和最佳化的定律。Amdahl定律指出,單個處理器元件速度的提高對整個處理器單元效能的影響相對較小。

從最一般的意義上講,Amdahl定律可以用數學方式表述如下

其中

  • Δ是程式加速或減速的倍數,
  • Pk是可以改進(或減慢)的指令的百分比,
  • Sk是加速倍數(其中1表示沒有加速也沒有減速),
  • k表示每個不同百分比和加速的標籤,以及
  • n是系統更改導致的不同加速/減速的數量。

例如,如果我們在記憶體模組中進行速度改進,只有直接處理記憶體模組的指令才會體驗到加速。在這種情況下,程式中載入和儲存指令的百分比將是P0,這些指令加速的倍數將是S0。所有其他不受記憶體單元影響的指令將是P1,加速將是S1,其中

我們將S1設定為1,因為這些指令不會因記憶體單元的更改而加速或減速。

基準測試

[編輯 | 編輯原始碼]
華夏公益教科書