您当前的位置:首页 > 电子设计与嵌入式开发实践丛书 TI C66X多核DSP高级软件开发技术 夏际金,赵洪立,李川 编著 2017年版 > 下载地址1
电子设计与嵌入式开发实践丛书 TI C66X多核DSP高级软件开发技术 夏际金,赵洪立,李川 编著 2017年版
- 名 称:电子设计与嵌入式开发实践丛书 TI C66X多核DSP高级软件开发技术 夏际金,赵洪立,李川 编著 2017年版 - 下载地址1
- 类 别:电子信息
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
新闻评论(共有 0 条评论) |
资料介绍
电子设计与嵌入式开发实践丛书 TI C66X多核DSP高级软件开发技术
作者:夏际金,赵洪立,李川 编著
出版时间: 2017年版
内容简介
本书系统介绍了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.2芯片中断控制器 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.13硬件抽象层 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.7forkjoin 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.5forkjoin的设计 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参考文献
作者:夏际金,赵洪立,李川 编著
出版时间: 2017年版
内容简介
本书系统介绍了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.2芯片中断控制器 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.13硬件抽象层 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.7forkjoin 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.5forkjoin的设计 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参考文献