DS指令系统及特点PPT课件.ppt_第1页
DS指令系统及特点PPT课件.ppt_第2页
DS指令系统及特点PPT课件.ppt_第3页
DS指令系统及特点PPT课件.ppt_第4页
DS指令系统及特点PPT课件.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 DSP技术及应用 DigitalSignalProcessor数字信号处理器 第三章DSP指令系统与特点 第一节寻址方式 第二节程序地址的生成 第三节流水线操作技术 了解 第四节指令系统概述 2 Smem 16位单寻址操作数 Xmem 16位双寻址操作数 从DB数据总线上读出 Ymem 16位双寻址操作数 从CB数据总线上读出 dmad 16位立即数 数据存储器地址 pmad 16位立即数 程序存储器地址 PA 16位立即数 I O口地址 src 源累加器 A或B dst 目的累加器 A或B lk 16位长立即数 第一节TMS320C54x的寻址方式 3 1 立即数寻址2 绝对地址寻址3 累加器寻址4 直接寻址5 间接寻址6 存储器映象寄存器寻址7 堆栈寻址 寻址分类 4 1 立即数寻址 在操作数前面需要加 字号来说明该操作数为立即数 否则会把该操作数误认为是一个地址 从而把立即数寻址变成绝对地址寻址 特点 指令中包含有执行指令所需要的操作数 立即数分为3 5 8或9位的短立即数和16位的长立即数两种 短立即数可包含在单字或双字指令中 长立即数在双字指令中 注意 LD 93h ALD93h A 举例 5 2 绝对地址寻址 特点 在指令中包含有所要寻址的存储单元的16位地址 这个16位的地址可以用其所在单元的地址标号或者16位符号常数来表示 1 数据存储器地址 damd 寻址 用一个符号或一个数来确定数据空间的一个地址 方法 MVKDSAMPLE AR3 举例 6 用一个符号或一个具体的数来确定程序存储器中的一个地址 2 程序存储器地址 pmad 寻址 方法 MVPDTABLE AR4 举例 7 用一个符号或一个常数来确定外部I O口地址 3 PA寻址端口 PA 方法 PORTRFIFO AR5 举例 8 用一个符号或一个常数来确定数据存储器中的一个地址 4 lk 寻址 方法 LD BUFFER A 举例 特点 允许所有使用Smem寻址的指令去访问数据空间的任意单元而不改变数据页指针 DP 的值 也不用对ARx进行初始化 9 用累加器中的数值作为地址来读写程序存储器 方法 READASmemWRITASmem 举例 特点 可用来完成程序存储器单元的数据与数据存储器单元的数据进行交换 3 累加器寻址 10 可以在不改变DP或SP的情况下 随机地寻址128个存储单元中的任何一个单元 用一个符号或一个常数来确定7位偏移值 与DP或SP共同形成16位的数据存储器实际地址 4 直接寻址 方法 LD x DPLD u AADD v A SSBXCPLLD X1 AADD Y2 A 举例 特点 11 CPL 07位dma域与9bit的DP相结合形成16位的数据存储器地址 CPL 17位dma域加上 正偏移 SP的值形成16位的数据存储器地址 DP值是从0 511 29 1 以DP为基准的直接寻址把存储器分成512页 7位的dma范围从0 127 每页有128个可访问的单元 12 5 间接寻址 方法 特点 AR0 AR7 ARAU0 ARAU1 16位无符号算术运算 寻址范围为64K 能在一个指令中访问两个数据存储器单元 两个独立的存储器单元读数据读一个 写另一个存储器单元读写两个连续的存储器单元 13 5 间接寻址 1 单操作数寻址 定义间接寻址的类型 定义寻址所使用的辅助寄存器 ST1 CMPT 0标准方式ARF确定辅助寄存器 ST0中ARP 0CMPT 1兼容方式如ARF 0 用ARP选择辅助寄存器 否则 用ARF来确定辅助寄存器 ARF的值装入ARP LD AR1 B 14 单操作数间接寻址的硬件框图 15 单数据存储器操作数间接寻址类型 16 1 循环寻址循环缓冲区的长度值存放在循环缓冲区长度寄存器BK中 BK中的数值由指令设定 长度为R的循环缓冲器必须从一个N位地址的边界开始 即循环缓冲器基地址的最低N位必须为0 N是满足2N R的最小整数 R的值必须装入BK 例如 含有31个字的循环缓冲器必须从最低5位为0的地址开始 即xxxxxxxxxxx000002 N 5 2N 25 R 31 且31必须装入BK 如 STM 1k BK如果R 32 则最小的N值为6 循环缓冲区的起始地址必须有6个最低有效位为0 即 0000002 17 2 位倒序寻址在这种寻址方式中 用AR0存放FFT点数的一半整数N 用另一辅助寄存器指向一数据存放的物理单元 当使用位倒序寻址把AR0加到辅助寄存器中时 地址以位倒序的方式产生 即进位是从左向右 而不是从右向左进位 例如 01101000 0000100001100100 以8位辅助寄存器为例 AR1表示了在存储器中数据的基地址 01100000 2 AR0的值为 00001000 2 利用以下两条语句可以向外设口 口地址为PA 输出整序后的FFT变换结果 RPT 15重复执行下条指令15 1次PORTW AR1 0B PA向外设口PA输出整结果 18 位倒序对FFT变换结果的序号调整 19 5 间接寻址 2 双操作数寻址方式 确定包含Xmem地址的辅助寄存器 确定包含Ymem地址的辅助寄存器 定义用于访问Ymem操作数的间接寻址方式的类型 定义用于访问Xmem操作数的间接寻址方式的类型 MPY AR2 AR3 A 20 Xar或Yar辅助寄存器00AR201AR310AR411AR5 辅助寄存器选择 双数据存储器操作数寻址的类型 21 0页寻址 不影响当前DP或SP值 用于直接寻址和间接寻址 用来修改存储器映象寄存器 6 存储器映象寄存器寻址 功能 LDMPRD A 举例 特点 方法 高9位数据存储器地址被置0 利用指令中的低 位地址访问MMR 22 7 堆栈寻址 从高地址向低地址方向生长 SP 来管理堆栈 SP始终指向堆栈中所存放的最后一个数据 即SP指针始终指向栈顶 在压入操作时 先减小SP的值 再将数据压入堆栈 在弹出操作时 先从堆栈弹出数据 再增加SP的值 用来在中断和子程序调用时自动保存程序计数器 PC 中的数值 也能用来保护现场或传送参数 功能 特点 PSHD AR2POPD AR3 23 第二节程序地址的生成 程序地址生成器 PAGEN 构成 程序计数器 PC 重复计数器 RC 块重复计数器 BRC 块重复起始地址寄存器 RSA 块重复结束地址寄存器 REA 核心 16位程序计数器 PC 内中保存某个内部或外部程序存储器的地址 地址内容为 即将取指的某条指令 某个16位立即操作数 系数表 在程序存储器中的地址 24 将程序存储器地址加载到程序计数器的途径 25 1 分支转移操作 通过分支转移指令改写PC 可以改变程序的流向 而子程序调用指令则通过将一个返回地址压入堆栈 执行返回时恢复原地址 可执行 分支转移循环控制子程序操作 功能 方法 26 条件分支转移无条件分支转移 B D 用指令中所给出的地址加载PCBACC D 用所指定的累加器的低16位作为地址加载PC 带延迟不带延迟操作 转移种类 BC D 如果指令中所规定的条件得到满足 就用指令中所给出的地址加载PC BANZ D 如果当前辅助寄存器不等于0 就用指令中所规定的地址加载PC BCnew AOVBANZloop AR2 BnextBACCA 27 2 调用和返回 转移前 原程序的下条指令的地址被压入堆栈 而在返回时则将这个地址弹出至PC 使被中断了的原程序能继续执行 当采用调用指令进行子程序或函数调用时 DSP中断当前运行的程序 转移到程序存储器的其它地址继续运行 功能 方法 无条件调用与返回有条件调用与返回 带延迟不带延迟 CALL d lopRETmain 28 3 条件指令中的条件判断 29 多重条件判断 30 第1组 例如 可以从A类中选一个条件 同时可以从B类中选择一个条件 但是不能从同一类中选择两个条件 另外 两种条件测试的累加器必须是同一个 可以同时测试AGT和AOV 但不能同时测试AGT和BGT 31 第2组 例如 可以在A B C三类中各选择一个条件 但不能从同一类中选择两个条件 可以在A B C三类中各选择一个条件 但不能从同一类中选择两个条件 32 2020 1 3 33 特例 如果条件分支转移出去的地方只有1 2字的程序段 则可以用一条单周期条件执行指令 XC 来代替分支转移指令 XCn cond cond cond 当n 1 且条件得到满足 就执行紧随此条件指令后的 个字指令 当n 2 且条件得到满足 就执行紧随此指令后的1个双字指令或者2条单字指令 当条件不满足 就依n的值执行1条或2条NOP指令 34 例3 3编写计算的主要程序部分 bssx 4 为X建立4个单元 放置X1 X2 X3 X4 bssy 1 为Y建立1个单元 放置YSTM x AR1 将X1的地址传给AR1STM 3 AR2 将循环次数3传给AR2LD 0 A 对A清零loop ADD AR1 A 对X1 X2 X3 X4循环累 加 结果放A中BANZloop AR2 检查循环是否应结束STLA y 将累加结果存入Y中 35 特点2 特点1 4 单条指令的重复操作 重复执行 RC 1次 RC内容不能编程设置 只能由重复指令 RPT和RPTZ 中的操作数加载 操作数n的最大值为65535 最大重复执行次数为65535 1 一旦重复指令被取指 译码 直到重复循环完成以前 对所有的中断 包括 但不包括 均不响应 功能 重复执行下一条指令 36 重复过程 当RPT指令执行时 首先把循环的次数装入循环计数器 RC 其循环次数n由一个16位单数据存储器操作数Smem或一个8位或16位常数k或lk给定 这样 紧接着的下一条指令会循环执行n 1次 循环 RC在执行减1操作时不能被访问 注意 该循环内不能套用循环 当RPTZ指令执行时 对目的累加器dst清0 循环执行下一条指令n 1次 37 例3 5利用单条指令的重复操作对数组x 5 0 0 0 0 0 进行初始化 bssx 5 为数组x分配5个存储单元STM x AR1 将x的首地址赋给AR1LD 0 A 对A清零RPT 4 设置重复执行下条指令5次STLA AR1 对x 5 各单元清零或者 bssx 5STM x AR1RPTZA 4 对A清零并设置重复执行下条指令5次STLA AR1 38 特点 5 块重复操作 利用C54x内部的块重复计数器 BRC 加载值可为0 65535 块重复起始地址寄存器 RSA 块重复结束地址寄存器 REA 与程序块重复指令RPTB 可对紧随RPTB 由若干条指令构成的程序块进行重复操作 功能 将重复操作的范围扩大到任意长度的循环回路 注意 1 RPT指令一旦执行 不会停止操作 即使有中断请求也不响应 2 RPTB指令可以响应中断 39 例3 6对数据组x 5 中的每个元素加1 bssx 5 为数组x分配5个存储单元begin LD 1 16 B 将1左移16位放入B的 高端字的最低位STM 4 BRC 4 BRC PC 2 RSASTM x AR4 将x的首地址赋给AR4RPTBnext 1 将NEXT 1 REAADD AR4 16 B A x地址的内容左移16位加 B的高端字 结果放ASTHA AR4 将A的高端字存入x单元 完成加1操作next LD 0 B 对B清零 必需next 1作为结束地址 40 对寄存器的占用 6 循环的嵌套 执行RPT指令时占用RPTC寄存器 重复计数器 执行RPTB指令时要用到BRC RSA和RSE寄存器 只有一套块重复寄存器 故块重复操作不能嵌套 由于RPT与RPTB两者用了不同的寄存器 因此RPT指令可以嵌套在RPTB指令中 实现循环的嵌套 执行BANZ指令只占用辅助寄存器ARx 不会与RPTRPTB指令相冲突 嵌套原则 参与嵌套循环的寄存器不能重复使用 41 图3 3一个三重循环嵌套结构 42 第三节流水线操作技术 流水线操作 在执行多条指令时 将每条指令的预取指 取指 译码 寻址 读取操作数 执行等阶段 相差一个阶段地重叠地执行 流水线操作的优点 一条k段流水能在k n 1 个周期内处理n条指令 其前k个周期用于完成第一条指令 其余n 1条指令的执行需要n 1个周期 而非流水处理器上执行n条指令则需要nk个周期 当指令条数n较大时 可认为每个周期内执行的最大指令个数为k 43 预取指P取指F译码D寻址A读取操作数R执行X 流水线操作 在第一个机器周期用PC中的内容加载PAB 在第二个机器周期用读取到的指令字加载PB 第三个周期用PB的内容加载指令寄存器IR 对IR内的指令进行译码 产生执行指令所需要的一系列控制信号 44 预取指P取指F译码D寻址A读取操作数R执行X 流水线操作 用数据1读地址加载DAB 或用数据 读地址加载CAB 修正辅助寄存器和堆栈指针 读数据1加载DB 或读数据2加载CB 用数据3写地址加载到EAB 以便在流水线的最后一级将数据送到数据存储空间 执行指令 或用写数据加载EB 45 空转浪费周期 1 延迟分支转移的流水线图 无延迟流水线分支转移的问题 地址指令a1 a2Bb1这是一个四周期 二字分支指令a3i3这是任意的一周期 一字指令a4i4这是任意的一周期 一字指令 b1j1 例3 7 46 分支转移指令流水线图 用分支转移指令的地址a1加载PAB 取得双字分支转移指令 取得双字分支转移指令 47 分支转移指令流水线图 i3和i4指令取指 由于这两条指令处在分支转移指令的后面 虽然已经取指 但不能进入译码级 且最终被丢弃 分支转移指令进入译码级 用新的值b1加载PAB 48 分支转移指令流水线图 j1指令取指 双字分支转移指令进入流水线的执行级 执行j1指令 双字分支转移指令进入流水线的执行级 由于i3和i4指令是不允许执行的 所以这两个周期均花在分支转移指令的执行上 49 允许跟在延迟分支转移指令之后的两条单字或一条双字指令可以被执行 延迟分支转移 注意 1 延迟操作指令后面只有两个字的空隙 因此不能在此空隙中安排任何一类分支转移指令或重复指令 2 在CALLD或RETD的空隙中还不能安排PUSH和POP指令 3 延迟操作指令比它们的非延迟型指令要快 在调试延迟型指令时 直观性稍差一些 因此希望在大多数情况下还是采用非延迟型指令 50 例3 8在完成R x y z操作后转至next 可以分别编出如下两段程序 利用普通分支转移指令B利用延迟分支转移指令BDLD x ALD x AADD y AADD y ASTLA sSTLA sLD s TLD s TMPY z ABDnextSTLA rMPY z ABnextSTLA r 共8个字 10个T 共8个字 8个T 在空闲的随后两周期中执行下两条指令 51 XCn cnd cnd cnd 如果条件满足 则执行下面n n 1或2 条指令 否则下面n条指令改为执行n条NOP指令 2 条件执行指令的流水线图 条件执行指令XC 有下列程序 地址指令a1i1a2i2a3i3a4XC2 conda5i5a6i6 52 条件执行指令流水线图 XC指令的地址a4加载到PAB 取XC指令的操作码 求解XC指令所规定的条件 如果条件满足 则后面指令i5和i6进入译码级并执行 否则不对i5和i6指令译码 53 1 XC是一条单字单周期指令 与条件跳转指令相比 具有快速选择其后1或2条指令是否执行的优点 2 XC指令在执行前2个周期就已经求出条件 如果在这之后到执行前改变条件 如发生中断 将会造成无期望的结果 3 要尽力避免在XC指令执行前2个周期改变所规定的条件 4 并没有规定XC指令后的一条或两条指令必须是单周期指令 注意 54 CPU在单个周期内两次访问双寻址存储器 3 双寻址存储器的流水线冲突 流水线冲突原因 不会产生流水线冲突的情况 1 在单周期内允许同时访问DARAM的不同块 2 当流水线中的一条指令访问某一存储器块时 允许流水线中处于同一级的另一条指令访问另一个存储器块 3 允许处于流水线不同级上的两条指令同时访问同一个存储器块 55 是利用一次访问中对前 后半个周期分时进行访问的缘故 CPU能够在单周期内对DARAM进行两次访问而不冲突 对PAB PB取指利用前半周期对DAB DB读取第一个数据利用前半周期对CAB CB读取第二个数据利用后半周期对EAB EB将数据写存储器利用后半周期 56 1 同时从同一存储器块中取指和取操作数 都在前半个周期 2 同时对同一存储

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论