TI C66x多核DSP高級軟體開發技術

TI C66x多核DSP高級軟體開發技術

《TI C66x多核DSP高級軟體開發技術》是2017年5月清華大學出版社出版的圖書,作者是夏際金、趙洪立、李川。

基本介紹

  • 中文名:TI C66x多核DSP高級軟體開發技術
  • 作者:夏際金、趙洪立、李川
  • 出版社:清華大學出版社
  • 出版時間:2017年5月
  • 定價:49 元
  • ISBN:9787302461869
內容簡介,圖書目錄,

內容簡介

本書系統介紹了C66x多核軟體開發的知識,並基於C6678的設計實例介紹了相關設計經驗。系統介紹了C66x DSP器件的基礎概念和多核軟體設計的基礎知識,引領讀者循序漸進地掌握多核軟體設計技術。對於傳統DSP開發人員比較陌生的一些概念,如Cache、預取、數據一致性、數據依賴、死鎖等,進行了重點描述。系統介紹了C66x多核器件的存儲器、DMA傳輸、中斷等內容,並結合工作實際,介紹了多核軟體最佳化、多核並行設計及任務級最佳化經驗。最後,以都卜勒成像的設計實例描述了如何實現並行設計。
全書共11章,內容包括C66x DSP的基本組成,如存儲器組織、DMA傳輸、中斷和異常、Cache快取和數據一致性等,並包含CCS軟體開發環境、SYS/BIOS實時作業系統、多核並行設計、軟體設計最佳化等相關知識。
本書的特點是由淺入深、概念齊全、實踐性強、指導性強。本書結合了多年多核軟體開發的實際經驗,對多核設計中常見的問題進行了詳細的描述; 從基本概念出發,層層推進,介紹了多核並行、數據傳輸與處理並行和多層次並行設計的經驗。
對於從事C66x多核軟體開發的設計師,本書具有很強的指導意義,本書還適合作為高校計算機、數據處理、信號處理、通信等相關專業的本科和研究生教材。

圖書目錄

第1章TI多核C66x DSP介紹
1.1C6678處理器
1.1.1C6678概覽
1.1.2外圍設備
1.266AK處理器
1.366AK2H14/12/06和C6678各項功能對比
1.4C66x處理器核心
1.5電源休眠控制器
1.5.1C66x核心電源休眠管理介紹
1.5.2電源休眠管理特徵
1.6鎖相環及其設定
1.6.1主PLL和PLL控制器
1.6.2DDR3 PLL
1.6.3PASS PLL
1.7C6678處理器接口通信相關外圍設備
1.7.1I2C外圍設備
1.7.2SPI 外圍設備
1.7.3HyperLink 外圍設備
1.7.4UART 外圍設備
1.7.5PCIE 外圍設備
1.7.6TSIP 外圍設備
1.7.7包加速器
1.7.8EMIF16外圍設備
1.7.9安全加速器
1.7.10Gigabit Ethernet開關子系統
1.7.11管理數據輸入輸出
1.7.12串列RapidIO連線埠
1.7.13通用目的輸入輸出
1.8定時器
1.9信號量
1.10多核導航器
1.11設計建議
1.11.1初始化
1.11.2接口驅動程式
1.11.3時間戳的獲取
1.11.4EVM板的使用
第2章C66x存儲器組織
2.1C66x存儲控制器
2.1.1L1P存儲控制器
2.1.2L1D存儲控制器
2.1.3L2存儲控制器
2.1.4外部存儲控制器
2.1.5擴展存儲控制器
2.2多核共享存儲控制器
2.2.1概覽
2.2.2C66x核心從接口
2.2.3系統從接口
2.2.4系統主接口
2.2.5外部存儲器主接口
2.2.6MSMC存儲器
2.3擴展存儲控制器XMC
2.3.1存儲器映射暫存器概要
2.3.2XMC 存儲器保護和地址擴展
2.3.3存儲器保護和地址擴展過程
2.3.4地址擴展
2.3.5XMC存儲器保護結構支持
2.3.6預取緩衝
2.4存儲器保護架構
2.4.1存儲器保護的目的
2.4.2特權級別
2.4.3存儲器保護架構
2.5頻寬管理
2.5.1介紹
2.5.2頻寬管理架構
2.5.3頻寬管理暫存器
2.6設計建議
2.6.1合理規劃使用存儲器
2.6.2存儲器設定成不被Cache快取和預取
第3章Cache快取和數據一致性
3.1為什麼使用Cache
3.2C64x和C66x DSP之間的Cache區別
3.3Cache 存儲器結構概覽
3.4Cache基礎知識
3.4.1直接映射Cache——L1P Cache
3.4.2Cache缺失的類型
3.4.3組相聯 Cache
3.4.4二級Cache
3.5L1P Cache
3.5.1L1P存儲器和Cache
3.5.2L1P Cache結構
3.5.3L1P凍結模式
3.5.4程式啟動的一致性操作
3.6L1D Cache
3.6.1L1D存儲器和Cache
3.6.2L1D Cache結構
3.6.3L1D 凍結模式
3.6.4程式發起的Cache一致性操作
3.7L2 Cache
3.7.1L2存儲器和Cache
3.7.2L2 Cache結構
3.7.3L2 凍結模式
3.7.4程式發起的Cache一致性操作
3.7.5Cache能力控制
3.8使用Cache
3.8.1配置L1 Cache
3.8.2配置L2 Cache
3.9數據一致性
3.9.1Snoop 一致性協定
3.9.2在外部存儲器和Cache之間維持一致性
3.9.3對L2 Cache一致性操作使用指導
3.9.4對L1 Cache一致性操作使用指導
3.10片上Debug支持
3.11在運行中改變Cache配置
3.11.1禁用外部存儲器Cache功能
3.11.2在運行中改變 Cache尺寸
3.12最佳化Cache性能
3.12.1Cache 性能特徵
3.12.2阻塞情況
3.12.3最佳化技術概覽
3.12.4套用級最佳化
3.12.5過程級最佳化
3.12.6C66x DSP Cache一致性操作小結
3.13設計建議
3.13.1消除虛假地址
3.13.2數據一致性問題
第4章DMA傳輸
4.1IDMA
4.1.1IDMA 結構
4.1.2IDMA通道 0
4.1.3IDMA 通道1
4.2EDMA3 控制器
4.2.1EDMA3 控制器介紹
4.2.2EDMA3 器件特定的信息
4.2.3EDMA3 通道控制器配置
4.2.4EDMA3 傳輸控制器配置
4.2.5EDMA3 通道同步事件
4.2.6EDMA3 通道控制器
4.2.7EDMA3 傳輸控制器
4.3EDMA3傳輸類型
4.3.1A同步傳輸
4.3.2AB同步傳輸
4.4參數RAM
4.4.1PaRAM參數集
4.4.2Dummy 與Null傳輸比較
4.4.3參數集更新
4.4.4連線傳輸
4.4.5常數地址模式傳輸/對齊問題
4.4.6單元大小
4.5發起一個 DMA傳輸
4.5.1DMA 通道
4.5.2QDMA 通道
4.5.3完成一個DMA傳輸
4.6提升DMA性能的幾點建議
4.6.1儘量用較大的ACNT
4.6.2線性傳輸
4.6.3地址對齊
4.6.4恰當使用多個CC和TC傳輸
第5章中斷和異常
5.1C6678處理器中斷簡介
5.3C66x 核心中斷控制器概述
5.3.1特徵
5.3.2功能塊圖
5.4中斷控制器結構
5.4.1事件暫存器
5.4.2事件合併器
5.4.3中斷選擇器
5.4.4異常合併器
5.5C66x 核心事件
5.6中斷控制器與DSP互動
5.6.1DSP 中斷控制器接口
5.6.2DSP 服務中斷事件
5.7中斷設計建議
5.7.1不要過多使用中斷或中斷嵌套
5.7.2中斷服務程式中代碼不宜過長
5.7.3中斷服務程式改變的全局變數要加上volatile標誌
第6章如何使用CCS
6.1常用界面
6.1.1Project Explorer
6.1.2程式視窗
6.1.3目標配置視窗
6.1.4Debug 視窗
6.1.5Memory 視窗
6.1.6Expressions視窗
6.1.7Breakpoints視窗
6.1.8Problems視窗
6.1.9Console視窗
6.2新建工程
6.3新建一個目標配置檔案
6.3.1新建ccxml檔案
6.3.2設定仿真器
6.3.3添加器件
6.4常用操作
6.4.1Launch
6.4.2Group
6.4.3Connect
6.4.4載入程式
6.4.5設定斷點調試程式
6.4.6復位
6.5常見問題
6.5.1頭檔案找不到
6.5.2EVM板未初始化,調試找不到DDR3
6.5.3選中不了仿真器
6.5.4加斷點調試錯誤
6.5.5域選擇不正確
6.5.6仿真器連線中斷電
6.6設定字型和代碼風格
6.6.1修改字型
6.6.2代碼風格設定
6.7MCSDK
6.7.1MCSDK架構
6.7.2MCSDK 特點
6.8TI函式館調用
6.8.1格式選擇
6.8.2庫的調用
6.8.3庫的使用
6.9理解CMD檔案
6.9.1CMD檔案簡介
6.9.2MEMORY命令
6.9.3SECTIONS命令
第7章SYS/BIOS實時作業系統
7.1什麼是SYS/BIOS
7.1.1SYS/BIOS的優勢
7.1.2SYS/BIOS和XDC TOOL的關係
7.2SYS/BIOS包
7.3SYS/BIOS中使用C++
7.3.1存儲器管理
7.3.2Name Mangling
7.3.3從配置調用對象方法
7.3.4類構造器和析構器
7.4SYS/BIOS配置和編譯
7.4.1在工程中添加SYS/BIOS支持
7.4.2創建一個獨立的配置工程
7.4.3配置SYS/BIOS 套用
7.4.4用XGCONF打開一個配置檔案
7.4.5用XGCONF執行任務
7.4.6保存配置
7.4.7關於XCONFG視圖
7.4.8使用可用產品視圖
7.4.9使用概要視圖
7.4.10使用屬性視圖
7.4.11使用問題視圖
7.4.12找到並修正錯誤
7.5編譯一個SYS/BIOS套用
7.5.1了解編譯流程
7.5.2編譯和連線最佳化
7.6執行緒模組
7.6.1SYS/BIOS 啟動順序
7.6.2執行緒模組的概覽
7.6.3執行緒類型
7.6.4執行緒優先權
7.6.5讓步和搶占
7.6.6鉤子
7.7硬體中斷
7.7.1創建中斷
7.7.2硬體中斷嵌套和系統堆疊大小
7.7.3硬體鉤子
7.8軟體中斷
7.8.1創建軟體中斷對象
7.8.2設定軟體中斷優先權
7.8.3軟體中斷優先權和系統堆疊大小
7.8.4軟體中斷執行
7.8.5優點和折中
7.8.6軟體中斷函式同步
7.8.7軟體鉤子
7.9任務
7.9.1創建任務
7.9.2任務執行狀態和調度
7.9.3任務堆疊
7.9.4測試堆疊溢出
7.9.5任務鉤子
7.9.6空閒循環
7.10SYS/BIOS同步模組
7.10.1信號量
7.10.2事件模組
7.10.3門模組
7.10.4信箱
7.10.5佇列
7.11定時服務
7.12Memory
7.12.1新建一個Platform
7.12.2棧
7.12.3Cache配置
7.12.4Cache Runtime API
7.12.5動態存儲器分配
7.12.6Heap的實施
7.14典型設計實例和建議
7.14.1典型設計
7.14.2設計建議
第8章多核並行設計
8.1並行粒度和並行級別
8.2並行方式
8.3任務類型
8.3.1相同任務的多個副本
8.3.2多個獨立任務
8.3.3單個任務拆分成多個子任務
8.3.4多個鬆散耦合任務
8.3.5耦合度高的任務
8.4依賴關係
8.4.1數據依賴
8.4.2存儲器依賴
8.5死鎖和活鎖
8.5.1死鎖
8.5.2活鎖
8.6同步
8.6.1SYS/BIOS同步模組
8.6.2採用控制信號實現多核對等同步
8.7forkjoin
8.8OpenMP並行設計
8.9任務級最佳化設計
8.9.1一種典型的任務處理流程
8.9.2最佳化設計實例
第9章軟體最佳化設計
9.1for循環最佳化
9.1.1移出能在循環外完成的計算
9.1.2循環體內的大運算換成小運算
9.1.3多重循環
9.1.4for循環中有判斷
9.2多核for循環並行任務最佳化
9.2.1資源占用小的for循環
9.2.2資源占用大的for循環
9.3if聲明最佳化
9.3.1if轉換
9.3.2消除if聲明
9.3.3相同代碼合併減少if聲明
9.3.4減少嵌套的if
9.3.5最佳化條件表達式
9.3.6最佳化稀疏矩陣
9.4軟體流水
9.5正確使用編譯指示和關鍵字
9.5.1restrict關鍵字
9.5.2nassert關鍵字
9.5.3interrupt中斷關鍵字
9.5.4near和far關鍵字
9.5.5const關鍵字
9.5.6UNROLL編譯指示
9.5.7MUST_ITERATE編譯指示
9.5.8CODE_SECTION 編譯指示
9.5.9DATA_SECTION編譯指示
9.5.10SET_CODE_SECTION和SET_DATA_SECTION編譯指示
9.5.11DATA_ALIGN 編譯指示
9.5.12STRUCT_ALIGN
9.6採用內建函式
9.6.1數據移動和打包函式
9.6.2使用除法指令
9.6.3使用C66x定點指令實現複數矩陣操作和向量操作
9.6.4浮點和矢量運算
9.7選定正確的最佳化級別
9.8軟體最佳化小結
第10章距離都卜勒成像設計實例
10.1背景介紹
10.2距離都卜勒成像算法
10.3數據組織形式
10.4算法的並行化設計
10.5forkjoin的設計
10.6脈衝壓縮的設計
10.6.1IFFT轉為FFT
10.6.2無快取的大點數FFT、IFFT設計
10.6.3有數據緩衝多核大點數FFT、IFFT設計
10.6.4資源使用情況
10.6.5複數相乘
10.6.6脈衝壓縮的偽碼實現
10.7其他階段任務分解
10.8實驗結果分析
第11章展望
11.1異構多核SOC處理器
11.1.1異構多核DSP
11.1.2異構多核FPGA
11.2嵌入式軟體設計思考
11.2.1掌握系統架構
11.2.2做好軟體模組化設計
11.2.3片上系統架構設計的挑戰
11.2.4自動化並行設計
附錄A
附錄B
附錄C
參考文獻

相關詞條

熱門詞條

聯絡我們