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的多核开发技术难点较多,由于作者水平有限,书中难免有疏漏之处,欢迎读者指正。