![DSP原理及应用(TMS320DM6437架构指令功能模块程序设计及案例分析嵌入式与工业控制技术](https://file.mhuoba.com/shop/3/100021/picture/book/20200817/23/20200817234321365.jpg)
出版社: 清华大学
原售价: 49.00
折扣价: 36.80
折扣购买: DSP原理及应用(TMS320DM6437架构指令功能模块程序设计及案例分析嵌入式与工业控制技术
ISBN: 9787302510437
张雪英 博士,教授,博士生导师,IEEE会员,中国电子学会高级会员,2006—2010年 电子科学与技术教学指导分委员会委员,2013—2017年 电子信息类教学指导委员会委员,山西省教学名师,山西省学术技术带头人。任教于太原理工大学信息工程学院,从事语音信号处理、DSP应用、模式识别等领域的教学和科研工作。近年来,在有关刊物和国际会议上发表论文100余篇,其中SCI、EI收录50余篇次;出版专著1部、教材5部,翻译图书2部,主编“十二五”国家级规划教材1部;主持完成国家及省部级项目20余项,授权国家发明专利6项;先后获“山西省教学成果二等奖”1项,获“山西省科技进步二等奖”2项,主持山西省精品资源共享课1门,多次被评为山西省优秀硕士学位论文指导教师、山西省研究生教育优秀导师。
第5章TMS320DM6437流水线与中断 5.1流水线 5.1.1流水线概述 在冯·诺依曼结构中,程序中各条机器指令都是按照顺序执行的,只有在前一条指令的各过程段都全部完成后,才从存储器取出下一条指令,即机器各部件在某些周期内进行操作,而在某些周期内是空闲的,导致机器各部分的利用率不高。如果用控制器进行适当调度,可以让机器的各个部件在每个周期内都在工作,这样可以提高计算机各功能部件的工作效率和计算机的运行速度,这就需要流水线(Pipeline)技术。 流水线技术是指在程序执行时多条指令重叠进行操作的一种准并行处理技术。它是将一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。对微处理器的每个部件来说,每隔1个时钟周期即可进入一条新指令,这样在同一时间内,就有多条指令交叠在不同部件内处理,使CPU运算速度提高。但这种流水线工作方式控制较为复杂,很难全速运行。 TMS320DM6437的DSP具有独特的特点,它可以通过消除流水线交错,简化流水线的控制,并通过增加流水线消除程序提取、数据访问和乘法运算等传统结构的瓶颈,提高单周期的吞吐量。并且,利用流水线提供的灵活性可以简化编程,提高性能。 5.1.2流水线操作 流水线操作以CPU周期为单位,一个CPU周期是指特定的执行包在流水线特定阶段的时间。CPU周期的边界总是发生在时钟周期的边界,随着节拍代码流流经各个部件,各个部件根据指令代码进行不同处理。一个指令的取出和执行过程可以分为多个阶段。TMS320DM6437的DSP指令集流中所有的指令都通过取指(Fetch)、译码(Decode)和执行(Execute)3个阶段。各阶段的任务如下。 (1) 取指: 取出一条指令送到指令寄存器。所有指令的取指阶段都有4个节拍,即PG、PS、PW、PR节拍,每个节拍的具体功能如下。 ① PG程序地址产生(Program Address Generate): CPU上取指包的地址确定。 ② PS程序地址发送(Program Address Send): 取指包的地址送至内存。 ③ PW程序访问等待(Program Access Ready Wait): 访问程序存储空间。 ④ PR程序取指包接收(Program Fetch Packet Receive): 取指包送至CPU边界。 图51流水线取指级的四个节拍功能图 TMS320DM6437的DSP取指阶段的每个节拍采用8个字的取指包。四个节拍从左到右依次进行,所有的这8个字同时通过PG、PS、PW和PR进行取指。PR取指包有四个执行包,PW和PS各包括两个执行包,PG包含八个指令的一个执行包。流水线取指级的四个节拍功能如图51所示。 (2) 译码: 对指令操作码进行译码,读取操作数。所有指令译码阶段都包括2个节拍,即DP和DC节拍。每个节拍的具体功能如下。 ① DP指令分配(Instruction Dispatch): 确定取指包的下一个执行包,并将其送至适当的功能单元准备译码。 ② DC指令译码(Instruction Decode): 指令在功能单元进行译码。 在流水线的DP阶段,取指包被分为执行包。执行包包括一个指令或两到八个平行指令。且在此阶段,执行包的指令被分配合适的功能单元。在DC阶段,源寄存器、目标寄存器和相关路径被解码,以执行功能单元的指令。 (3) 执行: 根据操作码的要求,完成指令规定的操作,并把运算结果写到指定的存储或缓冲单元中。流水线的执行阶段节拍的数量不同,这取决于指令的类型。 流水线的执行部分被分为5个节拍。大多数DSP指令是单周期的,所以它们只有一个执行节拍(E1)。只有少数指令需要多个执行节拍。不同类型的指令需要不同数量的这些节拍来完成执行。这些流水线的阶段对理解CPU周期边界设备状态具有重要作用。流水线执行级的5个节拍如下。 ① 执行节拍E1: 测试指定执行条件及读取操作数,对所有的指令适用。对于读取和存储指令,假定指令的条件被评估为真时,地址产生,其修正值写入寄存器; 若指令的条件为假,则指令在E1后不写入任何结果或进行任何流水线操作; 对于转移指令,程序转移目的地址取指包处于PG节拍; 对于单周期指令,结果写入寄存器; 对于双精度(DP)比较指令、ADDDP和MPYDP等指令,读取源操作数的低32位; 对于其他指令,读取操作数; 对于双周期双精度(DP)指令,结果的低32位写入寄存器。 ② 执行节拍E2: 读取指令的地址送至内存。存储指令的地址和数据送至内存。对结果进行饱和处理的单周期指令,若结果饱和,置SRC的SAT位; 对于单个16×16乘法指令、乘法单元和非乘法操作指令,结果将写入寄存器文件。TMS320C64x的M单元的非乘法操作指令,对于DP比较指令和ADDDP/SUBDP指令,读取源操作数的高32位; 对于MPYDP指令,读取源操作数1的低32位和源操作数2的高32位; 对于MPYI和MPYID指令,读取源操作数。 ③ 执行节拍E3: 进行数据存储空间访问。对结果进行饱和处理的乘法指令在结果饱和时置SAT位; 对于MPYDP指令读取源操作数1的高32位和源操作数2的低32位; 对于MPYI和MPYID指令,读取源操作数。 ④ 执行节拍E4: 对于读取指令,把所读的数据送至CPU边界; 对于乘法扩展,结果将被写入寄存器; 对于MPYI和MPYID指令,读取源操作数; 对于MPYDP指令,读取源操作数的高32位; 对于4周期指令,结果写入寄存器; 对于INTDP指令,结果的低32位写入寄存器。 ⑤ 执行节拍E5: 对于读取指令,把所读的数据写入寄存器; 对于INTDP指令,结果写入寄存器。 TMS320DM6437中所有指令均按照以上3级流水线运行,具体流水线结构如图52所示。3级流水线各节拍的功能描述如表51所示。 图52TMS320DM6437 3级流水线 表513级流水线各节拍功能描述 流水线阶段描述 Fetch PGProgram Address Generate,程序地址产生 PSProgram Address Send,程序地址发送 PWProgram Access Ready Wait,程序访问等待 PRProgram Fetch Packet Receive,程序取指包接收 Decode DPInstruction Dispatch,指令分派 DCInstruction Decode,指令译码 Execute E1执行阶段的第一个节拍 ...… 流水线流程图如图53所示,连续的各个取值包都包含8条并行指令,各个指令包以每个时钟一个节拍的方式通过流水线。 图53TMS320DM6437流水线流程图 "教学资源 ? 教学课件 配书教案(PPT)可到清华大学出版社网站本书页面下载。 ?本书从应用的角度出发,注重激发学生的兴趣,循序渐进地从基础理论和应用两个方面介绍了TMS320DM6437的体系结构、原理、软硬件开发与程序设计,并结合作者在教学、科研实践中的丰富经验,系统、全面地论述了基于TMS320DM6437 DSP系统的开发过程,精选的每个案例都给出了原理介绍及C语言源程序。通过这些案例的学习,读者可较为容易地掌握TMS320DM6437嵌入式系统综合设计与开发技巧。"