微處理器設計/效能指標
| 一位華夏公益教科書使用者建議將此書或章節合併到 微處理器設計/效能 因為 在不談論效能的情況下,很難談論效能指標。 請在討論頁面上討論是否應該進行此合併。 |
效能指標是微處理器的測量值,有助於確定微處理器的效能水平。
多年來,計算機的速度慢得令人難以置信。人們花費了大量的時間和精力來尋找方法,使典型的批處理程式執行得更快——減少執行時間,或者換句話說,提高吞吐量。在此過程中,許多其他東西被犧牲了。
執行時間是指執行程式所需的時間。
我們將在後面的基準測試部分討論準確測量執行時間的一些細微之處。
現在,讓我們注意到,對於在任何計算機上執行的任何程式,
每個程式的時間 = 時鐘週期 * 每條指令的週期數 * 每個程式執行的指令數
你會看到總時間涉及三個不同的因素。如果能夠減少其中任何一個因素,那麼時間就會縮短,讓使用者更開心。
唉,通常情況下,試圖縮短一個因素會導致另一個因素變大。有時,CPU 設計師會專注於一個因素,試圖將其縮小到最小,並希望由此產生的其他因素的增長足夠小,以至於仍然有淨改善。
時鐘頻率(通常稱為“時鐘速度”)是最容易測量的效能指標之一,也是被過度強調的指標之一。
截至 2008 年,大多數 CPU 的時鐘頻率以 MHz 為單位。典型的 FPGA 軟處理器執行速度約為 10 MHz(時鐘週期為 100 ns),但我們將在本書後面的章節中解釋將 FPGA 軟處理器的時鐘頻率提高到 100 MHz 以上(時鐘週期小於 10 ns)的技術。
從歷史上看,所有早期的計算機在執行最簡單的指令時都會使用許多時鐘週期。在 RISC 革命期間,許多設計師專注於將這一因素降低到接近 1 個指令週期。我們將在本書後面的章節中討論一些使用過的技術。從那時起,使用超標量執行和多核計算等技術的 CPU 進一步降低了這一指標。這種 CPU 可以在(平均)每條指令使用不到 1 個週期。
“CPI”是衡量給定時鐘數內完成的指令數(平均)的吞吐量指標。一個 CPU 可以平均每週期完成 2 條指令(CPI 為 0.5),它可能有一個 20 級流水線,這不可避免地會導致指令獲取到該指令完成之間有 20 個週期的延遲。在計算 CPI 時,我們忽略了這 20 個週期。
如果要執行的程式是二進位制可執行檔案,則此數字無法更改。
但是,一些 CPU 設計師有權設計新的指令集(或者至少向舊的指令集新增一些指令)。
早期的 CPU 設計師試圖透過新增新的、更復雜的指令來減少此數字,這些指令執行更多的工作。(後來,這個想法被追溯地稱為“CISC”。)當給定的程式(可能是基準程式)為這個新的指令集重新編譯並執行時,它需要更少的總執行指令才能完成。唉,這些更復雜的指令通常需要更多週期才能執行——或者更糟糕的是,需要更長的時鐘週期,這會減慢每條指令的速度——因此淨效益並不像希望的那樣大。在許多情況下,這種“RICH”指令實際上使執行時間變差(更長)。需要進行基準測試才能確定對指令集的這種更改是否值得。
一些證明它確實值得的例子
執行更多工作的更復雜的指令包括 ARM 處理器的“載入多個”和“儲存多個”指令,其他處理器的“多媒體擴充套件”,大多數 DSP 使用的 MAC 指令等。
有時,可以對 CPU 進行調整,以便在程式中執行更少的指令,而無需增加複雜性——ARM 處理器使用的“每條指令都是條件指令”技術(“條件邏輯”無論如何都需要進行條件分支);“新增更多暫存器”和“暫存器視窗化”思想,它們都試圖減少暫存器溢位/重新載入指令的數量;擴充套件資料匯流排的寬度,以便每條“載入”或“儲存”指令可以傳輸更多資料(還可以啟用更寬的指令);等等。
有一些晶片在單個“指令”的幾個週期內完成的事情,任何馮·諾依曼 CPU 都需要數百個週期才能實現——例如,內容可定址 RAM。
在構建計算機叢集時,任何一個晶片的原始 MIPS 都是無關緊要的。當有人需要 teraflop 的效能時,沒有一個晶片可以做到。這個人被迫不斷新增 CPU,直到他獲得他想要的效能。有很多技巧(我們將在後面討論)可以稍微減少一個程式在一個 CPU 上的執行時間,但會使該 CPU 貴得多。人們通常不會用少數幾個執行時間最短的晶片來構建 teraflop 系統,而是使用執行時間稍長但數量眾多的 CPU 來構建這樣的系統。
在這樣的系統中,如果 CPU 是專門為協調工作和快速同步而設計的,那就很有用。
在硬即時系統中,低延遲至關重要。
大多數移動電子產品中的 CPU——PDA、手機、筆記型電腦、無線鍵盤、MP3 播放器等——都是降頻的。
為什麼人們故意將它們降頻到遠低於其潛在執行時間效能的頻率?因為將它們降頻到更高的頻率會浪費電池壽命。
對特定 CPU 的每一次時鐘週期都會消耗(大約)一定量的能量。如果(假設)該 CPU 需要 900,000 個時鐘週期才能解碼一秒鐘的 MP3,那麼在播放 MP3 時,我們將 CPU 的頻率降頻到 0.9 MHz,就能最大限度地延長電池壽命。
假設我們有另一個 CPU 需要 4,000,000 個時鐘週期才能解碼一秒鐘的 MP3。我們應該使用哪個 CPU?最大速度下的絕對最快 MIPS 等級無關緊要。“解碼一秒鐘的 MP3 所需的時鐘週期”無關緊要。對於 MP3 播放器來說,更好的 CPU 是能提供最長電池壽命的 CPU,假設我們足夠聰明,可以對每個 CPU 降頻以提供其最長電池壽命。換句話說(由於解碼 MP3 的“工作量”是固定的,電池中儲存的能量也是固定的),更好的 CPU 是 MIPS/mW 比例更高的 CPU。
- ↑ "CISC、RISC 和 DSP 微處理器" 作者 Douglas L. Jones 2000 "DSP uP 的大多數引用數字不是 MIPS,而是 MIPS/$$、MIPS/mW" "為什麼 RISC/CISC 趨於融合?"