開啟主選單

求真百科

現代CPU性能分析與優化

現代CPU性能分析與優化》,丹尼斯·巴赫瓦洛夫 著,出版社: 機械工業出版社,出版日期: 22-11-01,ISBN: 9787111719489。

截至2022年,機械工業出版社年出版新書近2700種,年引進和輸出版權總量近800種,產品橫跨科技出版、教育出版、大眾出版三大板塊,覆蓋機械、電工電子、汽車、建築、計算機、經管、心理[1]、生活、科普、藝術設計、文創等十多個專業領域,以及高等教育[2]職業教育、技能教育等不同教育層次。

目錄

內容簡介

本書旨在指導大家優化運行在現代CPU上的應用程序的性能。具體來說,主要分為兩部分內容:? 部分介紹性能分析括對CPU微架構、術語和指標的簡要概述,還探討了分析性能的不同方法和現代平台上可用的硬件能。 ? 第二部分展示如何發現優化機會,以及可以做哪些轉換來提高程序的性能。此外,還提供了一份可應用於用戶應用程序的優化清單括循環優化、向量化、函數內聯等,並討論了有助於消除CPU微架構層面的問題(如緩存未命中、分支預測錯誤等)的代碼轉換。本書對於從事性能關鍵型應用程序開發行系統底層優化的技術人員來說是不可或缺的。對於任何想更好地了解應用程序性能並探索其診斷和方法的來說,這本書也很有用。

目錄

Preface?目 錄譯者序前言致謝作者簡介第1章?導讀11.1?為什麼需要性能調優21.2?誰需要做性能調優51.3?什麼是性能分析71.4?本書的主要內容81.5?本書含什麼內容91.6?本結10部分?現代CPU性能分析第2章?性能測量122.1?現代系統中的噪聲132.2?生產環境中的性能測量152.3?自動檢測性能退化問題162.4?手動性能測試182.5?軟件計時器和硬件計時器222.6?微基準測試242.7?本結25第3章?CPU微架構273.1?指令集架構273.2?流水線283.3?利用指令級並行303.3.1?亂序執行303.3.2?超標量引擎和超長指令字313.3.3?投機執行333.4?利用線程級並行343.5?存儲器層次353.5.1?高速緩存層次353.5.2?主存393.6?虛擬內存393.7?單指令多數據多處理器403.8?現代CPU設計423.8.1?CPU前端423.8.2?CPU後端443.9?性能監控單元44第4章?性能分析中的術語和指標474.1?退休指令與執行指令474.2?CPU利用率484.3?CPI和IPC484.4?微操作494.5?流水線槽位514.6?核時鐘周期和參考時鐘周期514.7?緩存未命中524.8?分支預測錯誤53第5章?性能分析方法555.1?代碼插樁565.2?跟蹤585.3?負載表徵595.3.1?統計性能事件595.3.2?手動收集性能605.3.3?事件多路復用和縮放625.4?採樣635.4.1?用戶模式採樣和基於硬件 事件的採樣645.4.2?尋找熱點645.4.3?採集調用棧665.4.4?火焰圖695.5?屋頂線性能模型695.6?靜態性能分析735.7?編譯器優化報告755.8?本結78第6章?性能分析相關的CPU特性806.1?自頂向下微架構分析技術816.1.1?Intel VTune Prof iler中的 TMA846.1.2?Linux perf中的TMA856.1.3?步:確定瓶頸866.1.4?第二步:定位具體的代碼 位置886.1.5?第三步:解決問題906.1.6?小結916.2?後分支記錄926.2.1?採集LBR棧946.2.2?獲取調用圖956.2.3?識別熱點分支966.2.4?分析分支預測錯誤率976.2.5?機器碼的計時986.2.6?評估分支輸出的概率1006.2.7?其他應用場景1016.3?基於處理器事件的採樣1016.3.1?精準事件1026.3.2?降低採樣開銷1036.3.3?分析內存訪問1046.4?Intel處理器跟蹤技術1056.4.1?工作流1056.4.2?時間報文1066.4.3?採集和解析跟蹤文件1076.4.4?用法1086.4.5?磁盤空間和解析時間1096.5?本結110第二部分?基於源代碼的CPU調優第7章?CPU前端優化1177.1 機器碼布局1187.2 基本塊1187.3 基本塊布局1197.4 基本塊對齊1217.5 函數拆分1237.6 函數分組1257.7 基於剖析文件的編譯優化1267.8 對ITLB的優化1287.9 本結128第8章?CPU後端優化1308.1 內存綁定1308.1.1 緩存友好的數據結構1318.1.2 顯式內存預取1368.1.3 針對DTLB優化1388.2 核心綁定1418.2.1 函數內聯1418.2.2 循環優化1438.2.3 向量化1498.3 本結158第9章?優化錯誤投機1609.1 用查表替換分支1619.2 用斷言替換分支1629.3 本結164第10章?其他調優16510.1 編譯時計算16510.2 編譯器內建函數16610.3 緩存預熱16710.4 減少慢速浮點運算16810.5 系69第11章?優化多線程應用程序17111.1 性能擴展和開銷17111.2 並行效率指標17411.2.1 有效CPU利用率17411.2.2 線程數量17411.2.3 等待時間17511.2.4 自旋時間17511.3 使用Intel VTune Profile行 分析17511.3.1 尋找耗時鎖17511.3.2 平台視圖17811.4 使用Linux per行分析17811.5 使用Co行分析18111.6 使用eBPF和GAP行分析18111.7 檢測一致性問題18211.7.1 緩存一致性協議18211.7.2 真共享18411.7.3 偽共享18411.8 本結186附錄A?減少測量噪聲188附錄B?LLVM向量化程序193跋198術語0參考文獻

參考文獻