C66x是TI(Texas Instruments)公司推出的新一代處理器內核,包含定點和浮點計算能力,C66x包含90個新指令用于提升浮點和矢量運算。TMS320C6678是基于C66x內核的8核處理器,66AK2Hx是基于ARMCortex-A15和C66x內核的異構多核處理器。基于C66x內核的DSP處理器已經成為主流的高性能DSP。
多核DSP的軟件開發技術對DSP嵌入式軟件開發人員具有一定的挑戰性。多核任務劃分、并行處理設計、同步設計以及Cache-致性等問題是多核并行設計的關鍵,良好的并行設計才能發揮C66x處理器的優勢。
通過多年的研究并結合工程設計實踐,總結了C66x多核DSP并行開發技術經驗和設計中一些經常遇到的問題。本書以C6678為例系統介紹了C66x多核DSP、數據一致性、CCS使用、SYS/BIOS實時操作系統、多核并行設計和優化等設計方法,用一個設計實例完整地描述了從任務并行設計到具體實現的過程。
在C66x多核軟件設計中,程序員的軟件設計思想、設計方法需要調整和提高。本書從程序員的工作需要和高校學生的學習需要出發,結合工作實際,詳細敘述了多核軟件開發技術。初學者可以循序漸進地建立基于C66x多核并行開發的概念,并積累優化設計的經驗提高設計水平,一開始就設計出高性能的并行代碼。
每章內容要點如下:
(1)第1章主要介紹了C66x處理器,并以C6678為例介紹了處理器概況、處理器內核、外圍設備、多核導航器等模塊。
(2)第2章主要介紹了C6678存儲控制器、多核共享存儲控制器、外部存儲控制器EMC、擴展存儲控制器XMC、存儲器保護架構、帶寬管理等存儲器相關內容。
(3)第3章主要介紹了Cache基礎知識,C66x的各級Cache、Cache的使用、數據一致性等內容。
(4)第4章主要介紹了IDMA、EDMA使用的一些知識。
(5)第5章介紹了C66x中斷控制器、內核事件以及中斷控制器與DSP交互的相關知識。
(6)第6章介紹了如何使用CCS進行相關的操作和配置。
(7)第7章介紹了SYS/BIOS實時操作系統,并給出了相關設計例程。
(8)第8章介紹了多核并行設計的相關問題,如并行粒度、并行方式、依賴關系、死鎖活鎖、同步等問題,并介紹了任務級優化設計的例子。
(9)第9章介紹了軟件優化技術,如for循環優化、軟件流水、編譯指示和關鍵字的使用、內建函數的使用等。
(10)第10章介紹了一個多核軟件設計的實例。
(11)第11章介紹了多核發展的趨勢及一些思考。
(12)附錄中列出了常用的存儲器地址映射、MAR寄存器地址對照表和C6678EDMACC事件列表。
本書中關于TIC66x多核DSP的相關資料來源于TI相關網站,如TI官網(www.ti.com)、德州儀器在線技術支持社區(www.deyisupport.com)等,相關資料的最新版本可以從中查詢。
參與本書審校的有牛蕾、習建博、鄧慶勇、郭琦、白曉慧、張玉營、潘勇先、朱鵬等,方志紅、梁之勇、宋皓、顧慶遠等在多核開發技術方面做出了很大貢獻。為本書的形成及多核C66xDSP開發技術做出貢獻的人還有很多,在這里一并致謝!
多核開發技術發展迅速,基于C66x的多核開發技術難點較多,由于作者水平有限,書中難免有疏漏之處,歡迎讀者指正。