晶片效能影響的三大因素?
一、“指令”複雜度,類似於單位時間加工的零件數量,指的是單個指令中計算的密度。
指令是軟體和硬體的媒介,指令的複雜度(單位計算密度)決定系統的軟硬體解耦程度。按照指令的複雜度,典型的處理器平臺大致分為CPU、協處理器、GPU、FPGA、DSA、ASIC。任務在CPU執行,則定義為軟體執行;任務在協處理器、GPU、FPGA、DSA或ASIC執行,則定義為硬體加速執行。
魚和熊掌不可兼得,指令複雜度和程式設計靈活性是兩個互反的特徵:指令越簡單,程式設計靈活性越高,因此才說軟體有更高的靈活性;指令越複雜,效能越高,因此而受到的限制越多,只能用於特定場景的應用,其軟體靈活性越差。
二、執行速度,即執行頻率,類似於一個小時的單位時間數量,指的是1秒鐘時鐘週期變化的數量。
頻率越高,計算速度越快。不考慮其他因素制約,計算速度和頻率是正比關係。而頻率受電路中的關鍵路徑(延遲最大路徑)約束,兩者呈反比關係:關鍵路徑越短,頻率則越高。頻率受關鍵路徑制約,而關鍵路徑與兩個因素有關:
關鍵路徑所包含門的數量,即從前一級暫存器到後一級暫存器之間的最長路徑所包含的邏輯閘數量
單個邏輯閘延遲時間,邏輯閘延遲時間跟半導體生產工藝相關,一般情況下,工藝尺寸越小,單個邏輯閘延遲越小
因此,想要最佳化頻率,就要最佳化關鍵路徑:一個是最佳化關鍵路徑的邏輯閘數量,另一個則是最佳化單個邏輯閘延遲。當邏輯閘延遲越小,或兩級暫存器之間的邏輯閘數量越少,則頻率越高,計算速度也越快。
三、並行度,類似於團隊的成員數量,指的是多個並行的處理。
並行設計在硬體邏輯設計裡非常常見。如:
指令流水線:指令流水線是一種時間並行,在同時有多條指令處理流水線的不同階段,相當於有多條指令在並行處理
指令多發射(Multiple Issue):一條流水線,從指令緩衝區一次傳送到譯碼階段就有多條指令,然後在執行階段也是多條指令並行
超執行緒(Hyper-Thread):在一個處理器核內部,多組不同的指令流處理,分時共享處理器核內部的各種硬體資源,達到更佳的資源利用率,提升整體效能
多匯流排:如,指令、資料匯流排分開,多資料匯流排等設計,進一步增加處理器的資料處理頻寬
多核技術:透過一些內部互聯匯流排,把多個處理器核整合到一塊晶片內,以此來提升綜合性能
多處理器晶片:受限於晶片工藝、功耗水平、設計架構,單晶片內的多核互聯不能無限制增加下去,也可以透過一些晶片間互聯技術,把多個 CPU Socket 連成一個NUMA系統,當前比較常見的是2-8個 Socket 互聯架構
匯流排:對並行匯流排來說,增加資料線的寬度,對增加匯流排的頻寬是顯而易見的,並行匯流排一般用於晶片內部邏輯通訊;序列匯流排,例如 PCIe,相比 PCI 並行匯流排,一方面可以快速提升頻率,還可以透過很多組序列線組合通訊來提升傳輸效能,序列匯流排一般用於晶片間資料通訊。
異構計算單元:CPU 和 GPU、xPU 以及各種硬體加速器組成異構多處理單元共同協作完成工作任務,CPU 更多的是承擔控制和資料互動的角色。
多伺服器叢集:現在大型的網際網路系統需要成百上千的伺服器,分為業務處理、網路處理、儲存和資料庫處理等不同功能分工的伺服器,共同組成一個性能強大並且執行穩定的系統對外提供服務。
透過不同方向、不同層次的並行技術,都可以提升硬體系統的效能。把不同複雜度的單位處理都當作“指令”。那麼,我們就可以透過 IPC(Instruction per Cycle)來評價並行度。對一個 CPU 核來說,IPC 代表每個週期執行的指令數;對一個硬體加速模組來說,IPC 則代表一個週期所能進行的單位處理的數量。
通常有三個因素:
一、“指令”複雜度,類似於單位時間加工的零件數量,指的是單個指令中計算的密度。
二、執行速度,即執行頻率,類似於一個小時的單位時間數量,指的是1秒鐘時鐘週期變化的數量。
三、並行度,類似於團隊的成員數量,指的是多個並行的處理。