製造流程和編譯器品質如何影響 CPU 效能

製造流程和編譯器品質如何影響 CPU 效能

我正在閱讀我的講座,其中一張幻燈片列出了影響 CPU 效能的因素,我無法理解如何製造工藝編譯器質量影響CPU效能

答案1

編譯器品質是比較容易的...

優秀的編譯器知道如何有效地將程式碼轉換為 CPU 指令。

想像一下,您有一個軟體可以執行一個簡單的數學方程式 - 例如 1+1。智慧編譯的應用程式將告訴 CPU 將數字相加,儲存答案,然後工作就完成了。這可以表示為:

  • 將內存0設定為1
  • 將內存1設定為1
  • 將記憶體0添加到1
  • 儲存在存儲體 0 中..簡單!

糟糕的編譯器(我見過一些!)會做同樣的事情,但會發出大量額外的指令來做同樣的事情,這會降低效能並減慢應用程式的速度。同樣的例子:

  • 設定內存0
  • 設定內存1
  • 將記憶體 0 設定為 0
  • 將內存1設定為0
  • 將內存0設定為1
  • 將內存1設定為1
  • 從記憶體 0 和 1 呼叫值
  • 將它們加在一起
  • 將結果儲存在記憶體0中

現在請記住,像視訊編輯器、圖形應用程式、遊戲甚至文字處理器這樣的複雜應用程式可能需要執行數十萬(如果不是數千萬)次操作才能啟動!這就是一個好的編譯器的作用!

製造過程是其擴展,因為製造是透過共享功能將多個應用程式「黏合」在一起。如果這些做得好,則需要更少的運算能力來實現相同的最終結果。

答案2

編譯器的品質(最佳化能力)決定了機器程式碼映射到硬體資源的程度。編譯器最佳化可以減少執行的工作量(例如,展開循環可以減少分支數量,暫存器分配可以減少記憶體存取次數,內聯可以刪除呼叫開銷並刪除特定呼叫者未使用的程式碼),調度避免等待的工作(例如,儘早調度加載,以便相關指令不必等待),利用更有效地完成工作的專用指令(例如,向量化可以使用SIMD 指令),組織記憶體存取以利用快取行為(例如,當內部循環僅觸及結構的幾個成員時,將結構數組轉換為數組結構)。

(一些編譯器最佳化適用於所有或大多數硬體;其他編譯器最佳化則更具體地針對特定硬體實現。此外,即使對亂序執行的硬體支援改善了調度較差的程式碼的執行,良好的指令調度仍然可以提供可測量的性能。

製造流程決定了電晶體的能量使用、開關速度和麵積(以及其他組件的類似特性)。顯然,開關速度更快的電晶體可以提供更高的性能。減少每個電晶體的面積允許在經濟可製造的晶片中使用更多的電晶體(這可以轉化為更多的性能)並且可以減少組件之間的通訊時間(例如,快取存取的延遲受到距離的限制,而不僅僅是電晶體開關速度的限制)。能源使用限制了性能(在某種程度上,必須提供的功率越大,必須使用越多的「引腳」[焊球]來提供該功率,從而減少了晶片外與記憶體、I/O 或內存、I/O 通訊的潛在可用數量。較低的開關能量意味著在給定的功率預算內可以完成更多的工作;較低的空閒(「洩漏」)功耗意味著更多的電晶體可以保持通電並準備好工作(這對於必須始終通電以保持狀態的 SRAM 來說可能特別重要)。

相關內容