版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 DSPDSP技术技术及应用及应用 igital ignal rocessor 数字信号处理器数字信号处理器 2 第三章第三章 DSP指令系统与特点指令系统与特点 第一节第一节 寻址方式寻址方式 第二节第二节 程序地址的生成程序地址的生成 第三节第三节 流水线操作技流水线操作技 术术 第四节第四节 指令系统概述指令系统概述 3 SmemSmem:1616位单寻址操作数。位单寻址操作数。 XmemXmem:1616位双寻址操作数,从位双寻址操作数,从DBDB数据总线上读出。数据总线上读出。 YmemYmem:1616位双寻址操作数,从位双寻址操作数,从CBCB数据总线上读出。数据总线上读出。
2、dmaddmad:1616位立即数,数据存储器地址。位立即数,数据存储器地址。 pmadpmad:1616位立即数,程序存储器地址。位立即数,程序存储器地址。 PAPA: 16 16位立即数,位立即数,I/OI/O口地址。口地址。 srcsrc: 源累加器源累加器A A或或B B。 dstdst: 目的累加器目的累加器A A或或B B。 lklk: 16 16位长立即数。位长立即数。 第一节第一节 TMS320C54xTMS320C54x的寻址方式的寻址方式 4 1 1立即数寻址立即数寻址 2 2绝对地址寻址绝对地址寻址 3 3累加器寻址累加器寻址 4 4直接寻址直接寻址 5 5间接寻址间接寻
3、址 6 6存储器映象存放器寻址存储器映象存放器寻址 7 7堆栈寻址堆栈寻址 寻址分类寻址分类 5 1 1立即数寻址立即数寻址 在操作数前面需要加字号来说明该操作数在操作数前面需要加字号来说明该操作数 为立即数。否那么会把该操作数误认为是一个为立即数。否那么会把该操作数误认为是一个 地址,从而把立即数寻址变成绝对地址寻址。地址,从而把立即数寻址变成绝对地址寻址。 特特 点点 指令中包含有执行指令所需要的操作数。指令中包含有执行指令所需要的操作数。 立即数分为立即数分为3 3、5 5、8 8或或9 9位的短立即数和位的短立即数和1616位位 的长立即数两种。的长立即数两种。 短立即数可包含在单字或
4、双字指令中,长立短立即数可包含在单字或双字指令中,长立 即数在双字指令中。即数在双字指令中。 注注 意意 LD #93hLD #93h,A A LD 93hLD 93h,A A 举例举例 6 2绝对地址寻址绝对地址寻址 特特 点点 在指令中包含有所要寻址的存储单元的在指令中包含有所要寻址的存储单元的1616位位 地址。这个地址。这个1616位的地址可以用其所在单元的地位的地址可以用其所在单元的地 址标号或者址标号或者1616位符号常数来表示。位符号常数来表示。 1 1数据存储器地址数据存储器地址damddamd寻寻 址址 用一个符号或一个用一个符号或一个 数来确定数据空间数来确定数据空间 的一
5、个地址。的一个地址。 方法方法 MVKD SAMPLEMVKD SAMPLE,* *AR3AR3 举例举例 7 用一个符号或一用一个符号或一 个具体的数来确个具体的数来确 定程序存储器中定程序存储器中 的一个地址的一个地址 2绝对地址寻址绝对地址寻址 2 2程序存储器地址程序存储器地址pmadpmad寻寻 址址 方法方法 MVPD TABLEMVPD TABLE,* *AR4AR4 举例举例 8 用一个符用一个符 号或一个号或一个 常数来确常数来确 定外部定外部 I/OI/O口地口地 址址 2绝对地址寻址绝对地址寻址 3 3PAPA寻址寻址 端口端口PAPA 方法方法 PORTR FIFOPO
6、RTR FIFO,* *AR5 AR5 举例举例 9 用一个符号用一个符号 或一个常数或一个常数 来确定数据来确定数据 存储器中的存储器中的 一个地址一个地址 2绝对地址寻址绝对地址寻址 4 4* *lklk寻址寻址 方法方法 LD LD * *BUFFERBUFFER,A A 举例举例特点特点 允许所有使用允许所有使用 SmemSmem寻址的指寻址的指 令去访问数据令去访问数据 空间的任意单空间的任意单 元而不改变数元而不改变数 据页指针据页指针DPDP 的值,也不用的值,也不用 对对ARxARx进行初进行初 始化始化 10 用累加器用累加器 中的数值中的数值 作为地址作为地址 来读写程来读
7、写程 序存储器。序存储器。 方法方法 READA Smem READA Smem WRITA Smem WRITA Smem 举例举例 特点特点 可用来可用来完成完成 程序存储器程序存储器 单元的数据单元的数据 与与数据存储数据存储 器单元的数器单元的数 据据进行交换进行交换 3累加器寻址累加器寻址 11 可以在不改可以在不改 变变DPDP或或SPSP的的 情况下,随情况下,随 机地寻址机地寻址128128 个存储单元个存储单元 中的任何一中的任何一 个单元。个单元。 用一个符号或用一个符号或 一个常数来确一个常数来确 定定7 7位偏移值位偏移值, 与与DPDP或或SPSP共同共同 形成形成1
8、616位的数位的数 据存储器实际据存储器实际 地址。地址。 4直接寻址直接寻址 方法方法 LD #xLD #x,DPDP LD uLD u,A A ADD vADD v,A A = SSBX CPLSSBX CPL LD X1 LD X1,A A ADD Y2 ADD Y2,A A 举例举例特点特点 12 CPL=0 7CPL=0 7位位dmadma域与域与9bit9bit的的DPDP相结合相结合 形成形成1616位的数据存储器地址。位的数据存储器地址。 CPL=1 7CPL=1 7位位dmadma域加上正偏移域加上正偏移SPSP 的值形成的值形成1616位的数据存储器地址。位的数据存储器地址
9、。 DPDP值是从值是从0511051129-129-1,以,以DPDP为基准的直接寻址把存储器分为基准的直接寻址把存储器分 成成512512页,页,7 7位的位的dmadma范围从范围从01270127,每页有,每页有128128个可访问的单元。个可访问的单元。 13 5间接寻址间接寻址 方法方法特点特点 AR0AR7AR0AR7 ARAU0/ARAU1 ARAU0/ARAU1 1616位无符号算术运位无符号算术运 算算 寻址范围为寻址范围为64K 64K 能在一个指令中访问能在一个指令中访问 两个数据存储器单元两个数据存储器单元 两个独立的存储器单元读数据两个独立的存储器单元读数据 读一个
10、读一个、写另一个存储器单元写另一个存储器单元 读写两个连续的存储器单元读写两个连续的存储器单元 14 5间接寻址间接寻址 1 1单操作数寻址单操作数寻址 定义间接寻定义间接寻 址的类型址的类型 定义寻址所使用定义寻址所使用 的辅助存放器的辅助存放器 ST1ST1 CMPT=0 CMPT=0 标准方式标准方式ARFARF确定辅助存放器,确定辅助存放器,ST0ST0中中ARPARP0 0 CMPT=1 CMPT=1 兼容方式如兼容方式如ARF=0ARF=0,用,用ARPARP选择辅助存放器,选择辅助存放器, 否那么,用否那么,用ARFARF来确定辅助存放器。来确定辅助存放器。ARFARF的值装入的
11、值装入 ARPARP。 LD LD * *AR1,BAR1,B 15单操作数间接寻址的硬件框图 16 MOD域域操作码语法操作码语法功功 能能说说 明明 0000*ARxaddr=ARxARx包含了数据存储器地址包含了数据存储器地址 0001*ARx- addr=ARx ARx=ARx-1 访问后,访问后,ARx中的地址减中的地址减1 0010*ARx+ addr=ARx ARx=ARx+1 访问后,访问后,ARx中的地址加中的地址加1 0011*+ARx addr=ARx+1 ARx=ARx+1 在寻址前,在寻址前,ARx中的地址加中的地址加1,然后再寻址,然后再寻址 0100*ARx-0B
12、 addr=ARx ARx=B(ARx-AR0) 访问后,从访问后,从ARx中以位倒序进位的方式减去中以位倒序进位的方式减去AR0 0101*ARx-0 addr=ARx ARx=ARx-AR0 访问后,从访问后,从ARx中减去中减去AR0 0110*ARx+0 addr=ARx ARx=ARx+AR0 访问后,把访问后,把AR0加到加到ARx中去中去 0111*ARx+0B addr=ARx ARx=B(ARx+AR0) 访问后,把访问后,把AR0以位倒序进位的方式加到以位倒序进位的方式加到ARx中中 1000*ARx-% addr=ARx ARx=circ(ARx-1) 访问后,访问后,A
13、Rx中的地址以循环寻址的方式减中的地址以循环寻址的方式减1 1001*ARx-0% addr=ARx ARx=circ(ARx-AR0) 访问后,从访问后,从ARx中以循环寻址的方式减去中以循环寻址的方式减去AR0 1010*ARx+% addr=ARx ARx=circ(ARx+1) 访问后,访问后,ARx中的地址以循环寻址的方式加中的地址以循环寻址的方式加1 1011*ARx+0% addr=ARx ARx=circ(ARx+AR0) 访问后,把访问后,把AR0以循环寻址的方式加到以循环寻址的方式加到ARx中中 1100*ARx(lk) addr=ARx+lk ARx=ARx ARx和和1
14、6位的长偏移(位的长偏移(lk)的和用来作为数据存储器地)的和用来作为数据存储器地 址。址。ARx本身不被修改本身不被修改 1101*+ARx(lk) addr=ARx+lk ARx=ARx+lk 在寻址前,把一个带符号的在寻址前,把一个带符号的16位的长偏移(位的长偏移(lk)加到)加到 ARx中,然后用新的中,然后用新的ARx的值作为数据存储器的地址的值作为数据存储器的地址 1110*+ARx(lk)% addr=circ(ARx+lk) ARx=circ(ARx+lk) 在寻址前,把一个带符号的在寻址前,把一个带符号的16位的长偏移以循环寻址位的长偏移以循环寻址 的方式加到的方式加到AR
15、x中,然后再用新的中,然后再用新的ARx的值作为数据的值作为数据 存储器的地址存储器的地址 1111*(lk)addr=lk 一个无符号的一个无符号的16位的长偏移(位的长偏移(lk)用来作为数据存储)用来作为数据存储 器的绝对地址。(也属绝对寻址)器的绝对地址。(也属绝对寻址) 单数据存储器操作数间接寻址类型单数据存储器操作数间接寻址类型 17 1) 1) 循环寻址循环寻址 循环缓冲区的长度值存放在循环缓冲循环缓冲区的长度值存放在循环缓冲 区长度存放器区长度存放器BKBK中,中,BKBK中的数值由指令设定。长度为中的数值由指令设定。长度为R R 的循环缓冲器必须从一个的循环缓冲器必须从一个N
16、 N位地址的边界开始,即循环位地址的边界开始,即循环 缓冲器基地址的最低缓冲器基地址的最低N N位必须为位必须为0 0。N N是满足是满足2N2NR R的最的最 小整数。小整数。R R的值必须装入的值必须装入BKBK。 例如,含有例如,含有3131个字的循环缓冲器必须从最低个字的循环缓冲器必须从最低5 5位为位为0 0的的 地址开始,即地址开始,即xxxx xxxx xxx0 00002xxxx xxxx xxx0 00002,N=5N=5,2N=252N=25 R=31R=31,且,且3131必须装入必须装入BKBK。如:。如: STM #1kSTM #1k,BKBK 如果如果R=32R=3
17、2,那么最小的,那么最小的N N值为值为6 6,循环缓冲区的起始地,循环缓冲区的起始地 址必须有址必须有6 6个最低有效位为个最低有效位为0 0,即,即 00 0000200 00002。 18 2) 2) 位倒序寻址位倒序寻址 在这种寻址方式中,用在这种寻址方式中,用AR0AR0存放存放 FFTFFT点数的一半整数点数的一半整数N N,用另一辅助存放器指向一数据,用另一辅助存放器指向一数据 存放的物理单元。当使用位倒序寻址把存放的物理单元。当使用位倒序寻址把AR0AR0加到辅助存加到辅助存 放器中时,地址以位倒序的方式产生,即进位是从左放器中时,地址以位倒序的方式产生,即进位是从左 向右,而
18、不是从右向左进位。向右,而不是从右向左进位。 例如:例如: 0110 1000 0110 1000 + 0000 1000 + 0000 1000 0110 01000110 0100 以以8 8位辅助存放器为例,位辅助存放器为例,AR1AR1表示了在存储器中数表示了在存储器中数 据的基地址据的基地址0110 00000110 00002 2,AR0AR0的值为的值为0000 10000000 1000 2 2。利用以下两条语句可以向外设口口地址为。利用以下两条语句可以向外设口口地址为PAPA 输出整序后的输出整序后的FFTFFT变换结果:变换结果: RPT #15 RPT #15 重复执行下
19、条指令重复执行下条指令15+115+1次次 PORTW PORTW * *AR1+0BAR1+0B,PA PA 向外设口向外设口PAPA输出整结果输出整结果 19 AR1修改修改 循环值循环值 存储单存储单 元地址元地址 整序前整序前FFT 变换结果变换结果 位倒序位倒序 AR1更新的地址值更新的地址值 AR0=0000 10002 整序后整序后PA输出的输出的 FFT变换结果变换结果 00000X(0)00000110 0000X(0) 10001X(8)10000110 1000X(1) 20010X(4)01000110 0100X(2) 30011X(12)11000110 1100X
20、(3) 40100X(2)00100110 0010X(4) 50101X(10)10100110 1010X(5) 60110X(6)01100110 0110X(6) 70111X(14)11100110 1110X(7) 81000X(1)00010110 0001X(8) 91001X(9)10010110 1001X(9) 101010X(5)01010110 0101X(10) 111011X(13)11010110 1101X(11) 121100X(3)00110110 0011X(12) 131101X(11)10110110 1011X(13) 141110X(7)0111
21、0110 0111X(14) 151111X(15)11110110 1111X(15) 位倒序对位倒序对FFTFFT变换结果的序号调整变换结果的序号调整 20 5间接寻址间接寻址 2 2双操作数寻址方式双操作数寻址方式 确定确定 包含包含 XmemXmem 地址地址 的辅的辅 助存助存 放器放器 确定确定 包含包含 YmemYmem 地址地址 的辅的辅 助存助存 放器放器 定义用于定义用于 访问访问YmemYmem 操作数的操作数的 间接寻址间接寻址 方式的类方式的类 型型 定义用于定义用于 访问访问 XmemXmem操操 作数的间作数的间 接寻址方接寻址方 式的类型式的类型 MPY MPY
22、 * *AR2,AR2,* *AR3,AAR3,A 21 Xar或或Yar 辅助存放器辅助存放器 00 AR2 01 AR3 10 AR4 11 AR5 辅助辅助 存放器存放器 选择选择 Xmod或或 Ymod 操作码语操作码语 法法 功功 能能说说 明明 00*ARxaddr=ARxARx是数据存储器地址是数据存储器地址 01*ARx- addr=ARx ARx=ARx-1 访问后,访问后,ARx中的地址减中的地址减1 10*ARx+ addr=ARx ARx=ARx+1 访问后,访问后,ARx中的地址加中的地址加1 11*ARx+0% addr=ARx ARx=circ( ARx+AR0)
23、 访问后,访问后,AR0以循环寻址的以循环寻址的 方式加到方式加到ARx中中 22 0 0页寻址。页寻址。 不影响不影响 当前当前DPDP 或或SPSP值值 。 用于直用于直 接寻址接寻址 和间接和间接 寻址寻址 用来修用来修 改存储改存储 器映象器映象 存放器存放器 6 6存储器映象存放器寻址存储器映象存放器寻址 功能功能 LDM PRD,ALDM PRD,A 举例举例特点特点方法方法 高高9 9位数据位数据 存储器地址存储器地址 被置被置0 0,利,利 用指令中的用指令中的 低位地址低位地址 访问访问MMRMMR。 23 7堆栈寻址堆栈寻址 从高地址向低地址方向生长,从高地址向低地址方向生
24、长, SPSP来管理堆栈,来管理堆栈,SPSP始终指始终指 向堆栈中所存放的最后一个向堆栈中所存放的最后一个 数据,即数据,即SPSP指针始终指向栈指针始终指向栈 顶。在压入操作时,先减小顶。在压入操作时,先减小 SPSP的值,再将数据压入堆栈;的值,再将数据压入堆栈; 在弹出操作时,先从堆栈弹在弹出操作时,先从堆栈弹 出数据,再增加出数据,再增加SPSP的值。的值。 用来在中断用来在中断 和子程序调和子程序调 用时自动保用时自动保 存程序计数存程序计数 器器PCPC中中 的数值,也的数值,也 能用来保护能用来保护 现场或传送现场或传送 参数参数 功能功能特点特点 PSHD PSHD * *A
25、R2AR2 POPD POPD * *AR3AR3 24 第二节第二节 程序地址的生成程序地址的生成 程序地址程序地址 生成器生成器 PAGENPAGEN 构成构成 程序计数器程序计数器PCPC 重复计数器重复计数器RCRC 块重复计数器块重复计数器BRCBRC 块重复起始地址存放器块重复起始地址存放器RSARSA 块重复结束地址存放器块重复结束地址存放器REAREA 核心核心 1616位程序计数器位程序计数器PCPC 内中保存某个内部或外内中保存某个内部或外 部程序存储器的地址。部程序存储器的地址。 地址地址内容为:内容为: 即将取指的某条指令即将取指的某条指令; 某个某个1616位立即操作
26、数位立即操作数; 系数表系数表。 在程序存储器中的地址在程序存储器中的地址 25 操作操作加载到加载到PC的地址的地址 复位复位PC=FF80h。 顺序执行指令顺序执行指令PC=PC+1。 分支转移分支转移用紧跟在分支转移指令后面的用紧跟在分支转移指令后面的16位立即数加载位立即数加载PC。 由累加器分支转移由累加器分支转移用累加器用累加器A或或B的低的低16位立即数加载位立即数加载PC。 块重复循环块重复循环 假如假如ST1中的块重复有效位中的块重复有效位BRAF=1,当,当PC+1等于块重复结束地等于块重复结束地 址(址(REA)+1,将块重复起始地址(,将块重复起始地址(RSA)加载)加
27、载PC。 子程序调用子程序调用 将将PC+2压入堆栈,并用紧跟在调用指令后面的压入堆栈,并用紧跟在调用指令后面的16位立即数加载位立即数加载 PC。返回指令将栈顶弹出至。返回指令将栈顶弹出至PC,回到原先的程序处继续执行。,回到原先的程序处继续执行。 从累加器调用子程从累加器调用子程 序序 将将PC+1压入椎栈,用累加器压入椎栈,用累加器A或或B的低的低16位加载位加载PC。返回。返回 指令将栈顶弹出至指令将栈顶弹出至PC,回到原先的程序处继续执行。,回到原先的程序处继续执行。 硬件中断或软件中硬件中断或软件中 断断 将将PC压入堆栈,用适当的中断向量地址加载压入堆栈,用适当的中断向量地址加载
28、PC。中断返。中断返 回时,将栈顶弹出至回时,将栈顶弹出至PC,继续执行被中断了的子程序。,继续执行被中断了的子程序。 将程序存储器地址加载到程序计数器的途径将程序存储器地址加载到程序计数器的途径 26 1分支转移操作分支转移操作 通过分支转移指令改写通过分支转移指令改写PCPC,可,可 以改变程序的流向。而子程序以改变程序的流向。而子程序 调用指令那么通过将一个返回调用指令那么通过将一个返回 地址压入堆栈,执行返回时恢地址压入堆栈,执行返回时恢 复原地址。复原地址。 可执行可执行: : 分支转移分支转移 循环控制循环控制 子程序操子程序操 作作 功能功能方法方法 27 条件条件分支转移分支转
29、移 无条件分支转移无条件分支转移 BDBD用指令用指令 中所给出的中所给出的 地址加载地址加载PCPC BACCDBACCD用用 所指定的累所指定的累 加器的低加器的低1616 位作为地址位作为地址 加载加载PCPC。 带延迟带延迟 不带延迟不带延迟 操作操作 转移种类转移种类 BCDBCD如果指令如果指令 中所规定的条中所规定的条 件得到满足,件得到满足, 就用指令中所就用指令中所 给出的地址加给出的地址加 载载PCPC; BANZDBANZD如果当如果当 前辅助存放器前辅助存放器 不等于不等于0 0,就用,就用 指令中所规定指令中所规定 的地址加载的地址加载PCPC。 BC newBC n
30、ew,AOVAOV BANZ loop,BANZ loop,* *AR2-AR2- B nextB next BACC ABACC A 28 2调用和返回调用和返回 转移前,原程序的转移前,原程序的 下条指令的地址被下条指令的地址被 压入堆栈,而在返压入堆栈,而在返 回时那么将这个地回时那么将这个地 址弹出至址弹出至PCPC,使被,使被 中断了的原程序能中断了的原程序能 继续执行。继续执行。 当采用调用指令进当采用调用指令进 行子程序或函数调行子程序或函数调 用时,用时,DSPDSP中断当前中断当前 运行的程序,转移运行的程序,转移 到程序存储器的其到程序存储器的其 它地它地址址继续运行。继续
31、运行。 功能功能 方法方法 无条件调用与返回无条件调用与返回 有条件调用与返回有条件调用与返回 带延迟带延迟 不带延迟不带延迟 CALLd lopCALLd lop RET mainRET main 29 3条件指令中的条件判断条件指令中的条件判断 30 多重条件判断多重条件判断 BC pmadBC pmad,condcond,condcond,condcond相与关系相与关系 相或关系相或关系 BC pmadBC pmad,condcond BC pmadBC pmad,condcond 第第1组组第第2组组 A 类类B 类类A 类类B 类类C 类类 EQOVTCCBIO NEQNOVNTC
32、NCNBIO LT LEQ GT GEQ 31 第第1 1组组 例如例如 可以从可以从A A类中选一个条件,同类中选一个条件,同 时可以从时可以从B B类中选择一个条件。类中选择一个条件。 但是不能从同一类中选择两但是不能从同一类中选择两 个条件。个条件。 另外,两种条件测试的累加另外,两种条件测试的累加 器必须是同一个。器必须是同一个。 可以同时测试可以同时测试AGTAGT和和AOVAOV,但,但 不能同时测试不能同时测试AGTAGT和和BGTBGT。 32 第第2 2组组 例如例如 可以在可以在A A、B B、C C三类中各三类中各 选择一个条件,但不能从选择一个条件,但不能从 同一类中选
33、择两个条件同一类中选择两个条件 可以在可以在A A、B B、C C三类中各选三类中各选 择一个条件,但不能从同择一个条件,但不能从同 一类中选择两个条件一类中选择两个条件 33 特特 例例 如果条件分支转移出去的地方只有如果条件分支转移出去的地方只有1 12 2字的字的 程序段,那么可以用一条单周期条件执行指程序段,那么可以用一条单周期条件执行指 令令XCXC来代替分支转移指令:来代替分支转移指令: XC nXC n,condcond,condcond,condcond 当当n=1n=1,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此 条件指令后的个字指令。条件指令后的个字指令。
34、当当n=2n=2,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此 指 令 后 的指 令 后 的 1 1 个 双 字 指 令 或 者个 双 字 指 令 或 者 2 2 条 单条 单 字指令。字指令。 当条件不满足,就依当条件不满足,就依n n的值执行的值执行1 1 条或条或2 2条条NOPNOP指令。指令。 34 例例3-3 编写计算编写计算 的主要程序局部。的主要程序局部。 .bss x,4 ;为;为X建立建立4个单元,个单元, ;放置;放置X1、X2、X3、X4 .bss y,1 ;为;为Y建立建立1个单元,放置个单元,放置Y STM #x,AR1 ;将;将X1的地址传给的地址传
35、给AR1 STM #3,AR2 ;将循环次数;将循环次数3传给传给AR2 LD #0,A ;对;对A清零清零 loop:ADD *AR1+,A ;对;对X1、X2、X3、X4循环循环 累累 ;加,结果放;加,结果放A中中 BANZ loop,*AR2- ;检查循环是否应结束;检查循环是否应结束 STL A,y ;将累加结果存入;将累加结果存入Y中中 4 1i i xy 35 特点特点2 2 特点特点1 1 4单条指令的重复操作单条指令的重复操作 重复执行重复执行RCRC+1+1次。次。 RCRC内容不能编程设置,内容不能编程设置, 只能由重复指令只能由重复指令RPTRPT和和 RPTZRPTZ
36、中的操作数加载。中的操作数加载。 操作数操作数n n的最大值为的最大值为65 65 535535,最大重复执行次数,最大重复执行次数 为为65 535+165 535+1。 一旦重复指令被取一旦重复指令被取 指、译码,直到重指、译码,直到重 复循环完成以前,复循环完成以前, 对所有的中断包对所有的中断包 括括 ,但不包,但不包 括括 均不响应。均不响应。 功能功能 重复执行下一条指令重复执行下一条指令 NMI RS 36 重复过程重复过程 当当RPTRPT指令执行时:指令执行时: 首先把循环的次数装入循环计数器首先把循环的次数装入循环计数器RCRC, 其循环次数其循环次数n n由一个由一个16
37、16位单数据存储器操作数位单数据存储器操作数 Smem Smem或一个或一个8 8位或位或1616位常数位常数k k或或lklk给定。这样,给定。这样, 紧接着的下一条指令会循环执行紧接着的下一条指令会循环执行n+1n+1次。次。 循环,循环,RCRC在执行减在执行减1 1操作时不能被访问。操作时不能被访问。 注意:该循环内不能套用循环。注意:该循环内不能套用循环。 当当RPTZRPTZ指令执行时:对目的累加器指令执行时:对目的累加器dstdst清清0 0, 循环执行下一条指令循环执行下一条指令n+1n+1次。次。 37 例例3-5 利用单条指令的重复操作对数组利用单条指令的重复操作对数组x5
38、=0 x5=0,0 0, 0 0,0 0,00进行初始化。进行初始化。 .bss x,5 .bss x,5 ;为数组;为数组x x分配分配5 5个存储单元个存储单元 STM #x,AR1 STM #x,AR1 ;将;将x x的首地址赋给的首地址赋给AR1AR1 LD #0,A LD #0,A ;对;对A A清零清零 RPT #4 RPT #4 ;设置重复执行下条指令;设置重复执行下条指令5 5次次 STL A,STL A,* *AR1+AR1+;对;对x5x5各单元清零各单元清零 或者或者 .bss x,5.bss x,5 STM #x,AR1STM #x,AR1 RPTZ A,#4RPTZ
39、A,#4;对;对A A清零并设置重复执行下条指令清零并设置重复执行下条指令5 5次次 STL A,STL A,* *AR1+AR1+ 38 特点特点 5块重复操作块重复操作 利用利用C54xC54x内部的块重复计数器内部的块重复计数器BRCBRC,加载值,加载值 可为可为0 065 53565 535、块重复起始地址存放器、块重复起始地址存放器 RSARSA、块重复结束地址存放器、块重复结束地址存放器REAREA与程与程 序块重复指令序块重复指令RPTBRPTB,可对紧随,可对紧随RPTBRPTB、由假设干、由假设干 条指令构成的程序块进行重复操作。条指令构成的程序块进行重复操作。 功能功能将
40、重复操作的范围扩大到任意长度的循环回路将重复操作的范围扩大到任意长度的循环回路 注意注意 1.1.RPTRPT指令一旦执行,不会停止指令一旦执行,不会停止 操作,即使有中断请求也不响应;操作,即使有中断请求也不响应; 指令可以响应中断;指令可以响应中断; 39 例例3-6 对数据组对数据组x5中的每个元素加中的每个元素加1。 .bss x,5 ;为数组;为数组x分配分配5个存储单元个存储单元 begin: LD #1,16,B ;将;将1左移左移16位放入位放入B的的 ;高端字的最低位;高端字的最低位 STM #4,BRC ; 4BRC,PC+2 RSA STM #x,AR4;将;将x的首地址
41、赋给的首地址赋给AR4 RPTB next-1;将;将NEXT-1 REA ADD *AR4,16,B,A ;x地址的内容左移地址的内容左移16位加位加 ; B的高端字,结果放的高端字,结果放A STH A,*AR4+ ;将;将A的高端字存入的高端字存入x单元,单元, ;完成加;完成加1操作操作 next: LD #0,B ;对;对B清零清零 ;必需;必需next-1作为结束地址作为结束地址 40 对存放器的占用对存放器的占用 6循环的嵌套循环的嵌套 执行执行RPTRPT指令时占用指令时占用RPTCRPTC存放器重复计数器;存放器重复计数器; 执行执行RPTBRPTB指令时要用到指令时要用到B
42、RCBRC、RSARSA和和RSERSE存放器。只有存放器。只有 一套块重复存放器,故块重复操作不能嵌套。一套块重复存放器,故块重复操作不能嵌套。 由于由于RPTRPT与与RPTBRPTB两者用了不同的存放器,因此两者用了不同的存放器,因此RPTRPT指指 令可以嵌套在令可以嵌套在RPTBRPTB指令中,实现循环的嵌套。指令中,实现循环的嵌套。 执行执行BANZBANZ指令只占用辅助存放器指令只占用辅助存放器ARxARx。不会与。不会与RPT RPT RPTBRPTB指令相冲突。指令相冲突。 嵌套原那嵌套原那 么么 参与嵌套循环的存放器不能重复使用参与嵌套循环的存放器不能重复使用 41 图3-
43、3 一个三重循环嵌套结构 42 第三节第三节 流水线操作技术流水线操作技术 流水线流水线 操作操作 在执行多条指令时,将每条指令的在执行多条指令时,将每条指令的 预取指、取指、译码、寻址、读取预取指、取指、译码、寻址、读取 操作数、执行等阶段,操作数、执行等阶段,相差一个阶相差一个阶 段段地地重叠重叠地执行。地执行。 流水流水 线操线操 作作的的 优点优点 一条一条k k段流水能在段流水能在k+k+n-1n-1个周期内处理个周期内处理n n 条指令。其前条指令。其前k k个周期用于完成第一条指令个周期用于完成第一条指令 ,其余,其余n-1n-1条指令的执行需要条指令的执行需要n-1n-1个周期
44、。而个周期。而 非流水处理器上执行非流水处理器上执行n n条指令那么需要条指令那么需要nk nk 个个 周期。当指令条数周期。当指令条数n n较大时,可认为每个周较大时,可认为每个周 期内执行的最大指令个数为期内执行的最大指令个数为k k。 43 预取指预取指P 取指取指F 译码译码D 寻址寻址A 读取操作数读取操作数R 执行执行X 流水线操作流水线操作 在第一个机在第一个机 器周期用器周期用PCPC 中的内容加中的内容加 载载PABPAB 在第二个机器周在第二个机器周 期用读取到的指期用读取到的指 令字加载令字加载PBPB。 第三个周期用第三个周期用PBPB的内容加载指令存放器的内容加载指令
45、存放器 IRIR,对,对IRIR内的指令进行译码,产生执行内的指令进行译码,产生执行 指令所需要的一系列控制信号。指令所需要的一系列控制信号。 44 预取指预取指P 取指取指F 译码译码D 寻址寻址A 读取操作数读取操作数R 执行执行X 流水线操作流水线操作 用数据用数据1 1读地址加载读地址加载 DABDAB,或用数据读地,或用数据读地 址加载址加载CABCAB,修正辅助,修正辅助 存放器和堆栈指针。存放器和堆栈指针。 读数据读数据1 1加载加载DBDB,或读数,或读数 据据2 2加载加载CBCB;用数据;用数据3 3写写 地址加载到地址加载到EABEAB,以便在,以便在 流水线的最后一级将
46、数流水线的最后一级将数 据送到数据存储空间。据送到数据存储空间。 执行指令,或用执行指令,或用 写数据加载写数据加载EBEB。 45 空转浪费周期空转浪费周期 1延迟分支转移的流水线图延迟分支转移的流水线图 无延迟流水线分支转移的问题无延迟流水线分支转移的问题 地址地址 指令指令 a1a1,a2 a2 B b1 B b1 这是一个四周期、二字分支指令这是一个四周期、二字分支指令 a3 a3 i3 i3 这是任意的一周期、一字指令这是任意的一周期、一字指令 a4 a4 i4 i4 这是任意的一周期、一字指令这是任意的一周期、一字指令 . . . b1 j1b1 j1 例例3-73-7 46 分支
47、转移指令流水线图分支转移指令流水线图 用分支转移用分支转移 指令的地址指令的地址 a1a1加载加载PABPAB。 取得双字分取得双字分 支转移指令支转移指令 取得双字分取得双字分 支转移指令支转移指令 47 分支转移指令流水线图分支转移指令流水线图 i3i3和和i4i4指令取指令取 指。由于这两指。由于这两 条指令处在分条指令处在分 支转移指令的支转移指令的 后面,虽然已后面,虽然已 经取指,但不经取指,但不 能进入译码级,能进入译码级, 且最终被丢弃。且最终被丢弃。 分支转移指令分支转移指令 进入译码级进入译码级 用新的值用新的值b1b1加载加载PABPAB 48 分支转移指令流水线图分支转
48、移指令流水线图 j1j1指令取指指令取指 双字分支转移双字分支转移 指令进入流水指令进入流水 线的执行级线的执行级 执行执行j1j1指令指令 双字分支转移双字分支转移 指令进入流水指令进入流水 线的执行级线的执行级 由于由于i3i3和和i4i4指指 令是不允许执令是不允许执 行的,所以这行的,所以这 两个周期均花两个周期均花 在分支转移指在分支转移指 令的执行上。令的执行上。 49 允许跟在延迟分支允许跟在延迟分支 转移指令之后的两转移指令之后的两 条单字条单字或一条双字或一条双字 指令可以被执行指令可以被执行 延迟分支转移延迟分支转移 注意注意 1.1.延迟操作指令后面只有两个字的空延迟操作
49、指令后面只有两个字的空 隙,因此不能在此空隙中安排任何隙,因此不能在此空隙中安排任何 一类分支转移指令或重复指令;一类分支转移指令或重复指令; 2.2.在在CALLDCALLD或或RETDRETD的空隙中还不能安的空隙中还不能安 排排PUSHPUSH和和POPPOP指令。指令。 3 3. .延迟操作指令比它们的非延迟型延迟操作指令比它们的非延迟型 指令要快,在调试延迟型指令时,指令要快,在调试延迟型指令时, 直观性稍差一些,因此希望在大多直观性稍差一些,因此希望在大多 数情况下还是采用非延迟型指令。数情况下还是采用非延迟型指令。 50 例例3-8 在完成在完成R=x+y*z操作后转至操作后转至
50、next。 可以分别编出如下两段程序:可以分别编出如下两段程序: 利用普通分支转移指令利用普通分支转移指令B 利用延迟分支转移指令利用延迟分支转移指令BD LD x,A LD x,A ADD y,A ADD y,A STL A, s STL A, s LD s,T LD s,T MPY z,A BD next STL A, r MPY z,A B next STL A, r 共共8个字,个字,10个个T 共共8个字,个字,8个个T 在空闲的随后两周期中执行下两条指令在空闲的随后两周期中执行下两条指令 51 XC nXC n,cndcnd,cndcnd,cndcnd 如果条件满足,那么如果条件满
51、足,那么 执行下面执行下面n nn=1n=1或或2 2条指条指 令,否那么下面令,否那么下面n n条指令改条指令改 为执行为执行n n条条NOPNOP指令。指令。 2条件执行指令的流水线图条件执行指令的流水线图 条件执行指令条件执行指令XC 有以下程序:有以下程序: 地址地址 指令指令 a1 i1a1 i1 a2 i2a2 i2 a3 i3a3 i3 a4 XC 2a4 XC 2, cond cond a5 i5a5 i5 a6 i6 a6 i6 52 条件执行指令流水线图条件执行指令流水线图 XCXC指令的地址指令的地址 a4a4加载到加载到PAB PAB 取取 X CX C 指 令指 令
52、的操作码的操作码 求解求解XCXC指令所规定的条件。如果条件满指令所规定的条件。如果条件满 足,那么后面指令足,那么后面指令i5i5和和i6i6进入译码级并进入译码级并 执行;否那么不对执行;否那么不对i5i5和和i6i6指令译码。指令译码。 53 1. XC1. XC是一条单字单周期指令,与条件跳是一条单字单周期指令,与条件跳 转指令相比,具有快速选择其后转指令相比,具有快速选择其后1 1或或2 2 条指令是否执行的优点条指令是否执行的优点 ; 2. XC2. XC指令在执行前指令在执行前2 2个周期就已经求出个周期就已经求出 条件,如果在这之后到执行前改变条条件,如果在这之后到执行前改变条
53、 件如发生中断,将会造成无期望件如发生中断,将会造成无期望 的结果的结果 。 3. 3. 要尽力防止在要尽力防止在XCXC指令执行前指令执行前2 2个周期个周期 改变所规定的条件改变所规定的条件 。 4. 4. 并没有规定并没有规定XCXC指令后的一条或两条指指令后的一条或两条指 令必须是单周期指令。令必须是单周期指令。 注注 意意 54 CPUCPU在单个周期内两次在单个周期内两次 访问双寻址存储器访问双寻址存储器 3双寻址存储器的流水线冲突双寻址存储器的流水线冲突 流水线冲突原因流水线冲突原因 不会产生流水线冲突的情况不会产生流水线冲突的情况 1 1在单周期内允许同时访问在单周期内允许同时
54、访问DARAMDARAM的不同块。的不同块。 2 2当流水线中的一条指令访问某一存储器块时,当流水线中的一条指令访问某一存储器块时, 允许流水线中处于同一级的另一条指令访问允许流水线中处于同一级的另一条指令访问 另一个存储器块。另一个存储器块。 3 3允许处于流水线不同级上的两条指令同时访允许处于流水线不同级上的两条指令同时访 问同一个存储器块。问同一个存储器块。 55 是利用一次访问中对是利用一次访问中对 前、后半个周期分时前、后半个周期分时 进行访问的缘故。进行访问的缘故。 CPU能够在单周期能够在单周期 内对内对DARAM进行进行 两次访问两次访问而不冲突而不冲突 对对PAB/PBPAB
55、/PB取指取指 利用前半周期利用前半周期 对对DAB/DBDAB/DB读取第一个数据读取第一个数据 利用前半周期利用前半周期 对对CAB/CBCAB/CB读取第二个数据读取第二个数据 利用后半周期利用后半周期 对对EAB/EBEAB/EB将数据写存储器将数据写存储器 利用后半周期利用后半周期 56 (1) (1) 同时从同一存储器块中取指和同时从同一存储器块中取指和 取操作数都在前半个周期;取操作数都在前半个周期;2.2.同时对同时对 同一存储器块进行写操作和读第二个数同一存储器块进行写操作和读第二个数 操作都在后半周期。操作都在后半周期。 解决解决 冲突冲突 方法方法 人为合理安排指令,人为
56、合理安排指令, 错开访问时序错开访问时序 CPUCPU通过写操作延迟一个周通过写操作延迟一个周 期,或者通过插入一个空周期,或者通过插入一个空周 期的方法,自动地解决期的方法,自动地解决 CPUCPU同时访问同时访问DARAMDARAM的同一存储器块就会的同一存储器块就会 发生时序上的冲突发生时序上的冲突。 57 从从DARAMDARAM块中同时取指和取操作数块中同时取指和取操作数 冲突冲突延迟一个周期延迟一个周期 58 4解决流水线冲突的方法解决流水线冲突的方法 1可能发生流水线冲突的情况可能发生流水线冲突的情况 1) 1) 辅助存放器辅助存放器AR0AR0AR7AR7。 2) 2) 重复块
57、长度存放器重复块长度存放器BKBK。 3) 3) 堆栈指针。堆栈指针。 4) 4) 暂存器暂存器T T。 5) 5) 处理器工作方式状态存放器处理器工作方式状态存放器PMSTPMST。 6) 6) 状态存放器状态存放器ST0ST0和和ST1ST1。 7 7块重复计数器块重复计数器BRCBRC。 8 8存储器映象累加器存储器映象累加器AGAG、AHAH、ALAL、BGBG、BHBH、BLBL。 59 流水线冲突情况分析流水线冲突情况分析 60 发生流水线冲突的发生流水线冲突的例子例子 在流水线的执行在流水线的执行 阶段进行写操作阶段进行写操作 在流水线的寻址在流水线的寻址 阶段生成地址阶段生成地
58、址 冲突冲突 无等待周期问题无等待周期问题 数据未准备好数据未准备好 61 发生流水线冲突的发生流水线冲突的例子例子 在 流 水 线 的在 流 水 线 的 执 行 阶 段 进执 行 阶 段 进 行写操作行写操作 读 数 阶 段读 数 阶 段 将 常 数将 常 数 1 01 0 写到写到AR1AR1 冲突冲突 同时利用同时利用E E总线总线 CPUCPU自动地自动地 将将STMSTM的写的写 操作延迟操作延迟 一个周期一个周期 在流水线的寻址在流水线的寻址 阶段生成地址阶段生成地址 新冲突新冲突 数据未准备好数据未准备好 62 发生流水线冲突的发生流水线冲突的例子例子 STLMSTLM指令后指令
59、后 面 插 入 一 条面 插 入 一 条 NOPNOP指令指令 在流水线的在流水线的 执行阶段进执行阶段进 行写操作行写操作 读 数 阶 段读 数 阶 段 将常数将常数1010 写到写到AR1AR1 在流水线的寻址在流水线的寻址 阶段生成地址阶段生成地址 E E总线总线错开错开 解决解决 数据准备好数据准备好 解决解决 63 4解决流水线冲突的方法解决流水线冲突的方法 2用等待周期表解决流水线冲突用等待周期表解决流水线冲突 等待周期表给出了对存储器映象存放器以及等待周期表给出了对存储器映象存放器以及ST0ST0、ST1ST1、 PMSTPMST的控制字段进行写操作的各种指令所需插入的等的控制字
60、段进行写操作的各种指令所需插入的等 待周期。待周期。 对双字或三字指令,都会提供隐含的保护周期。利用对双字或三字指令,都会提供隐含的保护周期。利用 这些指令提供的隐含的保护周期,有时可以不插这些指令提供的隐含的保护周期,有时可以不插NOPNOP指指 令。令。 64 控制字段控制字段不插入不插入插入插入1 1个个插入插入2 2个个 T T STM #1kSTM #1k, T T MVDK SmemMVDK Smem,T T LD SmemLD Smem,T T LD SmemLD Smem,TSTTST 所有其它存储指令所有其它存储指令 包括包括EXPEXP ASMASM LD #k5LD #k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场竞争公平秩序守护承诺书3篇范文
- 护理服务沟通与协调
- 紧急订单交货期限变更函(8篇)范文
- 企业团队协作训练互动方案
- 护理安全实践中的沟通失误案例研究
- 审查流程标准化高效执行手册
- 护理安全的原则
- 护理专业护理案例分析
- 房颤患者的生活管理及护理措施
- 护理伦理困境:挑战与应对策略
- 不合格品控制程序的培训
- 华师大版八年级下册数学期中考试试题含答案
- 通站(2017)8012 铁路站场排水构筑物
- 钻机租赁协议
- 2024装配式等效钢骨混凝土结构技术规程
- 秋梨膏做法完整版本
- 解聘合同范本简单版
- 吉利工厂过程质量对标标准手册V4
- 2024年4月贵州省高三年级适应性考试历史试卷
- 《电子皮带秤》课件
- 德国发展低碳经济的经验
评论
0/150
提交评论