發表於2024-12-21
本書結閤ARM架構和Linux工具,關注以性能為導嚮的嵌入式編程,深入講解如何通過對數據、算法和存儲等層麵的優化,終實現性能的顯著提升。本書先講解ARM架構和嵌入式係統的基礎知識,然後結閤圖像變換、分形生成和計算機視覺等應用案例,詳細說明不同的優化方法。讀者可在RaspberryPi等平颱上動手運行並比較不同算法,掌握實踐技巧。本書適閤作為本科或研究生嵌入式係統課程的教材,也適閤從事相關開發工作的程序員參考。
Jason D. Bakos,美國南卡羅來納大學計算機科學與工程係副教授,研究方嚮包括高性能計算、異構網絡和嵌入式計算機係統等。擁有2項專利,發錶瞭30餘篇學術論文。2009年曾獲得美國國傢科學基金(NSF)事業奬,現為ACM會刊《可重構技術與係統》的副主編。
目錄
EmbeddedSystems:ARMProgrammingandOptimization
齣版者的話
譯者序
前言
緻謝
第1章Linux/ARM嵌入式平颱1
1.1以性能為導嚮的編程2
1.2ARM技術3
1.3ARM簡史4
1.4ARM編程4
1.5ARM體係集架構5
1.5.1ARM通用寄存器5
1.5.2狀態寄存器6
1.5.3內存尋址模式7
1.5.4GNUARM匯編8
1.6匯編優化1:排序8
1.6.1參考實現8
1.6.2匯編實現9
1.6.3結果驗證11
1.6.4分析編譯器生成的代碼13
1.7匯編優化2:位操作15
1.8代碼優化目標16
1.8.1減少執行指令數16
1.8.2降低平均CPI16
1.9使用性能計數器的運行時分析18
1.9.1ARM性能監控單元18
1.9.2LinuxPerf_Event18
1.9.3性能計數器的基礎架構19
1.10檢測存儲器帶寬22
1.11性能測試結果25
1.12性能界限25
1.13基本指令集26
1.13.1整型算術指令26
1.13.2按位邏輯指令26
1.13.3移位指令27
1.13.4移動指令27
1.13.5加載和存儲指令28
1.13.6比較指令28
1.13.7分支指令29
1.13.8浮點指令29
1.14小結30
習題31
第2章多核和數據層優化:OpenMP和SIMD33
2.1本書所涉及的優化技術33
2.2阿姆達爾定律34
2.3測試內核:多項式評估35
2.4使用多核:OpenMP37
2.4.1OpenMP指令37
2.4.2範圍39
2.4.3其他OpenMP指令42
2.4.4OpenMP同步42
2.4.5調試OpenMP代碼44
2.4.6OpenMP並行循環編譯指令46
2.4.7OpenMP與性能計數器48
2.4.8OpenMP支持霍納內核48
2.5性能界限48
2.6性能分析49
2.7GCC中的內聯匯編語言50
2.8優化1:降低每f?lop的指令數51
2.9優化2:降低CPI54
2.9.1軟件流水綫54
2.9.2軟件流水綫的霍納方法57
2.10優化3:使用SIMD時的每指令多f?lop63
2.10.1ARM11的VFP短嚮量指令65
2.10.2ARMCortex的NEON指令67
2.10.3NEON內聯函數69
2.11小結70
習題71
第3章算法優化和Linux幀緩衝72
3.1Linux幀緩衝72
3.2仿射圖像變換74
3.3雙綫性插值74
3.4浮點圖像變換75
3.4.1加載圖像76
3.4.2渲染幀78
3.5浮點性能分析82
3.6定點運算82
3.6.1定點與浮點:準確度83
3.6.2定點與浮點:範圍83
3.6.3定點與浮點:精度83
3.6.4使用定點84
3.6.5高效定點加法84
3.6.6高效定點乘法87
3.6.7確定小數點的位置89
3.6.8圖像變換的範圍和準確度要求90
3.6.9將浮點值轉換為定點值的運算90
3.7定點性能92
3.8實時分形生成92
3.8.1像素著色94
3.8.2放大94
3.8.3範圍和準確度要求95
3.9小結96
習題96
第4章存儲優化和視頻處理99
4.1模闆循環99
4.2模闆案例:均值濾波器100
4.3可分離濾波器100
4.3.1高斯模糊101
4.3.2Sobel濾波器103
4.3.3Harris角點檢測器104
4.3.4Lucas-Kanade光流106
4.4二維濾波器的存儲訪問行為108
4.4.1二維數據展示108
4.4.2按行濾波108
4.4.3按列濾波109
4.5循環分塊110
4.6分塊和模闆暈區112
4.7二維濾波實現案例112
4.8視頻幀的捕獲和轉換116
4.8.1YUV和色度抽樣116
4.8.2將分塊導齣到幀緩衝區118
4.9Video4Linux驅動和API119
4.10使用二維分塊濾波器122
4.11應用可分離的二維分塊濾波器123
4.12頂層循環124
4.13性能結果124
4.14小結124
習題125
第5章利用OpenCL進行嵌入式異構編程127
5.1GPU微體係結構128
5.2OpenCL128
5.3OpenCL編程模型、語法及摘要129
5.3.1主機/設備編程模型129
5.3.2錯誤檢查130
5.3.3平颱層:初始化平颱131
5.3.4平颱層:初始化設備133
5.3.5平颱層:初始化上下文135
5.3.6平颱層:內核控製136
5.3.7平颱層:內核編譯137
5.3.8平颱層:設備存儲分配140
5.4內核工作負荷分配141
5.4.1設備存儲區142
5.4.2內核參數143
5.4.3內核嚮量化145
5.4.4霍納內核的參數空間146
5.4.5內核屬性147
5.4.6內核調度147
5.5霍納方法的OpenCL實現:設備碼152
5.6性能結果156
5.6.1參數探索156
5.6.2工作組數156
5.6.3工作組大小157
5.6.4嚮量大小157
5.7小結158
習題158
附錄A為RaspberryPi1的Raspbian係統添加PMU支持160
附錄BNEON內聯函數指令163
附錄COpenCL參考175
前言EmbeddedSystems:ARMProgrammingandOptimization多年來,我一直工作在可重構計算領域。可重構計算領域的目標是開發有效的工具和方法,以促進現場可編程門陣列(FPGA)作為協處理器在高性能計算機係統中的使用。
這個學科的主要挑戰之一是“程序設計問題”,即FPGA的實際應用從根本上受到煩瑣和容易齣錯的程序模型的限製。這個問題值得我們特彆關注,因為它是技術優勢所導緻的結果:FPGA實現瞭細粒度並發操作,這樣程序員可以控製芯片中每個電路的同步行為。然而,這種控製還要求程序員管理細粒度的控製,例如片上存儲使用和路由擁塞。另一方麵,CPU程序隻需要考慮每一行代碼的可能CPU狀態,片上資源在硬件運行時將自動管理。
最近我意識到,現代嵌入式係統可能很快就會麵臨類似的程序設計問題。電池技術仍然相對滯後,並且在用近6年時間實現瞭從65nm到28nm的製造工藝後,摩爾定律的發展速度開始明顯減緩。與此同時,消費者已經開始期待嵌入式係統功能的不斷進步,例如能夠在一副眼鏡上的處理器中運行實時增強現實(AR)軟件。
鑒於這些能源效率和性能的要求,許多嵌入式處理器廠商正在為微體係結構尋求更節能的方法,並經常涉及對並行類型的選擇,而這一類型是不能從軟件中自動提取的。這就需要程序員協助編寫並行代碼。這帶來瞭很多問題:程序員要在資源和能量均有限的平颱上兼顧功能和性能,要知道,在這個平颱上可能包括從多核到GPU著色器單元等各種並行資源。
許多大學已經開展瞭“統一”的並行編程課程,這些課程涵蓋瞭從分布式係統到多核處理器的並行編程係列。然而,教授這類主題的角度通常是高性能計算而非嵌入式計算。
隨著最近RaspberryPi等先進嵌入式平颱的爆發,我意識到需要開發針對嵌入式係統性能的編程課程,這些課程應涵蓋從計算機體係結構到並行編程的相關主題。我也想納入一些有趣的相關項目和課程的案例研究,這樣可以避開枯燥的傳統嵌入式係統課程項目(例如閃爍的LED)和並行編程課程(例如編寫和優化快速傅裏葉變換)。
在自己的嵌入式係統課程中使用這些想法時,我經常發現學生們會爭相實現最快的圖像鏇轉或最快的曼德布羅特集閤生成器。這種競爭也激發瞭學生的學習熱情。
如何使用本書本書麵嚮初級或高級本科計算機科學或計算機工程課程。雖然嵌入式係統課程可能關注控製理論、機器人技術、低功耗設計、實時係統或其他相關的主題,但本書旨在介紹輕量級片上係統嵌入式處理器上的以性能為導嚮的編程。
本書應該結閤RaspberryPi等嵌入式設計平颱一起使用,這樣學生可以評估書中所述的實踐和方法。
在使用本書時,學生應該預先學習C編程語言和Linux操作係統的基本知識,並瞭解諸如任務同步等基本的並發。
教輔支持可訪問網站booksite.elsevier.com/9780128003428查看本書的幻燈片、習題答案和勘誤錶。
緻謝EmbeddedSystems:ARMProgrammingandOptimization感謝幫助我完成本書的幾位學生。
2013年春季和夏季,本科生BenjaminMorgan、JonathanKilby、ShawnWeaver、JustinRobinson以及AmadeoBellotti評估瞭RaspberryPiBroadcomBCM2835和XilinxZynq7020上的DMA控製器和性能監控單元。
2014年夏季,本科生DanielClements幫助我開發瞭在ARM11、ARMCortexA9和ARMCortexA15上使用Linuxperf_event的統一方法。Daniel還評估瞭圖像技術的OpenCL運行時,以及描述瞭在ODROIDXUExynos5平颱上的PowerVR544GPU的性能特點。
2015年夏季,本科生Friel“Scottie”Scott幫助我評估瞭ODROIDXU3平颱上的MaliT628GPU,並且校對瞭第5章的內容。
許多關於計算機視覺算法存儲優化的見解來自我的研究生FanZhang的關於德州儀器關鍵數字信號處理器架構的自動優化模闆循環的論文。
感謝以下評論者,他們在本書的編寫過程中提供瞭反饋、見解以及有用的建議:
MiriamLeeser,美國東北大學LarryD.Pyeatt,美國南達科他礦業理工學院AndrewN.Sloss,美國華盛頓大學,同時在ARM公司做顧問工程師AmrZaky,美國聖塔剋拉拉大學感謝MorganKaufmann齣版公司,感謝NateMcFadden在整個寫作過程中給予我的不斷鼓勵和無限耐心。特彆感謝Nate對於本書內容所持的開放和靈活的態度,這使我在寫作時能夠不斷跟進新發布的基於ARM的嵌入式開發平颱。也要感謝SujathaThirugnanaSambandam的細心編輯,還要感謝MarkRogers為本書設計封麵。
ARM嵌入式係統編程與優化 下載 mobi pdf epub txt 電子書 格式 2024
ARM嵌入式係統編程與優化 下載 mobi epub pdf 電子書。。。。。。。。。。。。。
評分。。。。。。。。。。。。。
評分。。。。。。。。。。。。。
評分。。。。。。。。。。。。。
評分可以的很詳細
評分很好
評分可以的很詳細
評分很好的書,寫的很好,非常棒~
評分。。。。。。。。。。。。。
ARM嵌入式係統編程與優化 mobi epub pdf txt 電子書 格式下載 2024