版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1dspdsp技术及应用技术及应用igital ignal rocessor数字信号处理器数字信号处理器http:/ dsp指令系统与特点指令系统与特点 第一节第一节 寻址方式寻址方式第二节第二节 程序地址的生成程序地址的生成第三节第三节 流水线操作技流水线操作技术术第四节第四节 指令系统概述指令系统概述http:/ 1616位立即数,位立即数,i/oi/o口地址。口地址。srcsrc: 源累加器(源累加器(a a或或b b)。)。dstdst: 目的累加器(目的累加器(a a或或b b)。)。lklk: 1616位长立即数。位长立即数。第一节第一节 tms320c54xtms320c54x的
2、寻址方式的寻址方式 http:/ 1立即数寻址立即数寻址2绝对地址寻址绝对地址寻址3累加器寻址累加器寻址4直接寻址直接寻址5间接寻址间接寻址6存储器映象寄存器寻址存储器映象寄存器寻址7堆栈寻址堆栈寻址寻址分类寻址分类http:/ 1 1立即数寻址立即数寻址 在操作数前面需要加字号来说明该操作数在操作数前面需要加字号来说明该操作数为立即数。否则会把该操作数误认为是一个地为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。址,从而把立即数寻址变成绝对地址寻址。 特特点点指令中包含有执行指令所需要的操作数。指令中包含有执行指令所需要的操作数。立即数分为立即数分为3 3、5
3、5、8 8或或9 9位的短立即数和位的短立即数和1616位位的长立即数两种。的长立即数两种。短立即数可包含在单字或双字指令中,长立短立即数可包含在单字或双字指令中,长立即数在双字指令中。即数在双字指令中。 注注意意ld #93hld #93h,a a ld 93hld 93h,a a 举例举例http:/ 2绝对地址寻址绝对地址寻址特特点点在指令中包含有所要寻址的存储单元的在指令中包含有所要寻址的存储单元的1616位位地址。这个地址。这个1616位的地址可以用其所在单元的地位的地址可以用其所在单元的地址标号或者址标号或者1616位符号常数来表示。位符号常数来表示。 (1 1)数据存储器地址()
4、数据存储器地址(damddamd)寻)寻址址 用一个符号或一个用一个符号或一个数来确定数据空间数来确定数据空间的一个地址。的一个地址。 方法方法mvkd samplemvkd sample,* *ar3ar3 举例举例http:/ 2绝对地址寻址绝对地址寻址(2 2)程序存储器地址()程序存储器地址(pmadpmad)寻)寻址址 方法方法mvpd tablemvpd table,* *ar4ar4 举例举例http:/ 2绝对地址寻址绝对地址寻址(3 3)papa寻址寻址 端口(端口(papa) 方法方法portr fifoportr fifo,* *ar5 ar5 举例举例http:/ 2绝
5、对地址寻址绝对地址寻址(4 4)* *(lklk)寻址)寻址 方法方法ld ld * *(bufferbuffer),),a a 举例举例特点特点允许所有使用允许所有使用smemsmem寻址的指寻址的指令去访问数据令去访问数据空间的任意单空间的任意单元而不改变数元而不改变数据页指针(据页指针(dpdp)的值,也不用的值,也不用对对arxarx进行初进行初始化始化 http:/ 方法方法reada smem reada smem writa smem writa smem 举例举例特点特点可用来可用来完成完成程序存储器程序存储器单元的数据单元的数据与与数据存储数据存储器单元的数器单元的数据据进行
6、交换进行交换 3累加器寻址累加器寻址http:/ 用一个符号或用一个符号或一个常数来确一个常数来确定定7 7位偏移值位偏移值,与与dpdp或或spsp共同共同形成形成1616位的数位的数据存储器实际据存储器实际地址。地址。4直接寻址直接寻址 方法方法ld #xld #x,dpdpld uld u,a a add vadd v,a a =ssbx cplssbx cpl ld x1 ld x1,a a add y2 add y2,a a 举例举例特点特点http:/ 7cpl=0 7位位dmadma域与域与9bit9bit的的dpdp相结合相结合形成形成1616位的数据存储器地址。位的数据存储器
7、地址。cpl=1 7cpl=1 7位位dmadma域加上(正偏移)域加上(正偏移)spsp的值形成的值形成1616位的数据存储器地址。位的数据存储器地址。 dpdp值是从值是从0511(2 29 9-1-1),以),以dpdp为基准的直接寻址把存储器分为基准的直接寻址把存储器分成成512512页,页,7 7位的位的dmadma范围从范围从0127,每页有,每页有128128个可访问的单元。个可访问的单元。 http:/ 方法方法特点特点(ar0ar0ar7ar7)arau0/arau1 arau0/arau1 1616位无符号算术运位无符号算术运算算寻址范围为寻址范围为64k 64k 能在一个
8、指令中访问能在一个指令中访问两个数据存储器单元两个数据存储器单元两个独立的存储器单元读数据两个独立的存储器单元读数据读一个读一个、写另一个存储器单元写另一个存储器单元读写两个连续的存储器单元读写两个连续的存储器单元 http:/ (1 1)单操作数寻址)单操作数寻址 定义间接寻定义间接寻址的类型址的类型定义寻址所使用定义寻址所使用的辅助寄存器的辅助寄存器 st1st1cmpt=0 cmpt=0 标准方式标准方式arfarf确定辅助寄存器确定辅助寄存器,st0st0中中arparp0 0 cmpt=1 cmpt=1 兼容方式兼容方式如如arf=0arf=0,用,用arparp选择辅助寄存器,选择
9、辅助寄存器,否则,用否则,用arfarf来确定辅助寄存器。来确定辅助寄存器。arfarf的值装入的值装入arparp。ld ld * *ar1,bar1,bhttp:/ 能能说说 明明0000*arxaddr=arxarx包含了数据存储器地址包含了数据存储器地址0001*arx-addr=arxarx=arx-1访问后,访问后,arx中的地址减中的地址减10010*arx+addr=arxarx=arx+1访问后,访问后,arx中的地址加中的地址加10011*+arxaddr=arx+1arx=arx+1在寻址前,在寻址前,arx中的地址加中的地址加1,然后再寻址,然后再寻址0100*arx-
10、0baddr=arxarx=b(arx-ar0)访问后,从访问后,从arx中以位倒序进位的方式减去中以位倒序进位的方式减去ar00101*arx-0addr=arxarx=arx-ar0访问后,从访问后,从arx中减去中减去ar00110*arx+0addr=arxarx=arx+ar0访问后,把访问后,把ar0加到加到arx中去中去0111*arx+0baddr=arxarx=b(arx+ar0)访问后,把访问后,把ar0以位倒序进位的方式加到以位倒序进位的方式加到arx中中1000*arx-%addr=arxarx=circ(arx-1)访问后,访问后,arx中的地址以循环寻址的方式减中的
11、地址以循环寻址的方式减11001*arx-0%addr=arxarx=circ(arx-ar0)访问后,从访问后,从arx中以循环寻址的方式减去中以循环寻址的方式减去ar01010*arx+%addr=arxarx=circ(arx+1)访问后,访问后,arx中的地址以循环寻址的方式加中的地址以循环寻址的方式加11011*arx+0%addr=arxarx=circ(arx+ar0)访问后,把访问后,把ar0以循环寻址的方式加到以循环寻址的方式加到arx中中1100*arx(lk)addr=arx+lkarx=arxarx和和16位的长偏移(位的长偏移(lk)的和用来作为数据存储器地)的和用来
12、作为数据存储器地址。址。arx本身不被修改本身不被修改1101*+arx(lk)addr=arx+lkarx=arx+lk在寻址前,把一个带符号的在寻址前,把一个带符号的16位的长偏移(位的长偏移(lk)加到)加到arx中,然后用新的中,然后用新的arx的值作为数据存储器的地址的值作为数据存储器的地址1110*+arx(lk)%addr=circ(arx+lk)arx=circ(arx+lk)在寻址前,把一个带符号的在寻址前,把一个带符号的16位的长偏移以循环寻址位的长偏移以循环寻址的方式加到的方式加到arx中,然后再用新的中,然后再用新的arx的值作为数据的值作为数据存储器的地址存储器的地址
13、1111*(lk)addr=lk一个无符号的一个无符号的16位的长偏移(位的长偏移(lk)用来作为数据存储)用来作为数据存储器的绝对地址。(也属绝对寻址)器的绝对地址。(也属绝对寻址)单数据存储器操作数间接寻址类型单数据存储器操作数间接寻址类型 http:/ 1) 循环寻址循环寻址 循环缓冲区的长度值存放在循环缓冲循环缓冲区的长度值存放在循环缓冲区长度寄存器区长度寄存器bkbk中,中,bkbk中的数值由指令设定。长度为中的数值由指令设定。长度为r r的循环缓冲器必须从一个的循环缓冲器必须从一个n n位地址的边界开始,即循环位地址的边界开始,即循环缓冲器基地址的最低缓冲器基地址的最低n n位必须
14、为位必须为0 0。n n是满足是满足2 2n nr r的最的最小整数。小整数。r r的值必须装入的值必须装入bkbk。例如,含有例如,含有3131个字的循环缓冲器必须从最低个字的循环缓冲器必须从最低5 5位为位为0 0的的地址开始,即地址开始,即xxxx xxxx xxx0 0000 xxxx xxxx xxx0 00002 2,n=5n=5,2 2n n=2=25 5r=31r=31,且,且3131必须装入必须装入bkbk。如:。如:stm #1kstm #1k,bkbk如果如果r=32r=32,则最小的,则最小的n n值为值为6 6,循环缓冲区的起始地址,循环缓冲区的起始地址必须有必须有6
15、 6个最低有效位为个最低有效位为0 0,即,即 00 000000 00002 2。http:/ 2) 位倒序寻址位倒序寻址 在这种寻址方式中,用在这种寻址方式中,用ar0ar0存放存放fftfft点数的一半整数点数的一半整数n n,用另一辅助寄存器指向一数据,用另一辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把存放的物理单元。当使用位倒序寻址把ar0ar0加到辅助寄加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左进位。向右,而不是从右向左进位。 例如:例如: 0110 10000110 1000 + 0000
16、1000 + 0000 1000 0110 01000110 0100以以8 8位辅助寄存器为例,位辅助寄存器为例,ar1ar1表示了在存储器中数表示了在存储器中数据的基地址(据的基地址(0110 00000110 0000)2 2,ar0ar0的值为(的值为(0000 10000000 1000)2 2。利用以下两条语句可以向外设口(口地址为。利用以下两条语句可以向外设口(口地址为papa)输出整序后的输出整序后的fftfft变换结果:变换结果:rpt #15 rpt #15 重复执行下条指令重复执行下条指令15+115+1次次portw portw * *ar1+0bar1+0b,pa p
17、a 向外设口向外设口papa输出整结果输出整结果http:/ 变换结果变换结果位倒序位倒序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(3)40100x(2)00100110 0010x(4)50101x(10)10100110 1010x(5)60110x(6)01100110 0110x(6)70111x(14)1110011
18、0 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)01110110 0111x(14)151111x(15)11110110 1111x(15)位倒序对位倒序对fftfft变换结果的序号调整变换结果的序号调整 http:/ (2 2)双操作数寻址方式)双操作数寻址方式 确定确定
19、包含包含xmemxmem地址地址的辅的辅助寄助寄存器存器 确定确定包含包含ymemymem地址地址的辅的辅助寄助寄存存器器定义用于定义用于访问访问ymemymem操作数的操作数的间接寻址间接寻址方式的类方式的类型型 定义用于定义用于访问访问xmemxmem操操作数的间作数的间接寻址方接寻址方式的类型式的类型 mpy mpy * *ar2,ar2,* *ar3,aar3,ahttp:/ 辅助寄存器辅助寄存器00 ar201 ar310 ar411 ar5辅助辅助寄存器寄存器选择选择xmod或或ymod操作码语操作码语法法功功 能能说说 明明00*arxaddr=arxarx是数据存储器地址是数据
20、存储器地址01*arx-addr=arxarx=arx-1访问后,访问后,arx中的地址减中的地址减110*arx+addr=arxarx=arx+1访问后,访问后,arx中的地址加中的地址加111*arx+0%addr=arxarx=circ(arx+ar0)访问后,访问后,ar0以循环寻址的以循环寻址的方式加到方式加到arx中中http:/ 0页寻址。页寻址。不影响不影响当前当前dpdp或或spsp值值 。用于直用于直接寻址接寻址和间接和间接寻址寻址用来修用来修改存储改存储器映象器映象寄存器寄存器 6存储器映象寄存器寻址存储器映象寄存器寻址功能功能ldm prd,aldm prd,a举例举
21、例特点特点方法方法高高9 9位数据位数据存储器地址存储器地址被置被置0 0,利,利用指令中的用指令中的低位地址低位地址访问访问mmrmmr。http:/ 从高地址向低地址方向生长,从高地址向低地址方向生长,spsp)来管理堆栈,)来管理堆栈,spsp始终指始终指向堆栈中所存放的最后一个向堆栈中所存放的最后一个数据,即数据,即spsp指针始终指向栈指针始终指向栈顶。在压入操作时,先减小顶。在压入操作时,先减小spsp的值,再将数据压入堆栈;的值,再将数据压入堆栈;在弹出操作时,先从堆栈弹在弹出操作时,先从堆栈弹出数据,再增加出数据,再增加spsp的值。的值。用来在中断用来在中断和子程序调和子程序
22、调用时自动保用时自动保存程序计数存程序计数器(器(pcpc)中)中的数值的数值,也也能用来保护能用来保护现场或传送现场或传送参数参数 功能功能特点特点pshd pshd * *ar2ar2 popd popd * *ar3ar3http:/ 程序地址的生成程序地址的生成程序地址程序地址生成器生成器(pagenpagen)构成构成程序计数器(程序计数器(pcpc)重复计数器(重复计数器(rcrc)块重复计数器(块重复计数器(brcbrc)块重复起始地址寄存器(块重复起始地址寄存器(rsarsa)块重复结束地址寄存器(块重复结束地址寄存器(rearea)核心核心1616位程序计数器(位程序计数器(
23、pcpc)内中保存某个内部或外内中保存某个内部或外部程序存储器的地址部程序存储器的地址。地址地址内容为:内容为:即将取指的某条指令即将取指的某条指令;某个某个1616位立即操作数位立即操作数;系数表系数表。在程序存储器中的地址在程序存储器中的地址http:/ 通过分支转移指令改写通过分支转移指令改写pcpc,可,可以改变程序的流向。而子程序以改变程序的流向。而子程序调用指令则通过将一个返回地调用指令则通过将一个返回地址压入堆栈,执行返回时恢复址压入堆栈,执行返回时恢复原地址。原地址。可执行可执行: :分支转移分支转移循环控制循环控制子程序操子程序操作作 功能功能方法方法http:/ bdbd用
24、指令用指令中所给出的中所给出的地址加载地址加载pcpcbaccdbaccd用用所指定的累所指定的累加器的低加器的低1616位作为地址位作为地址加载加载pcpc。 带延迟带延迟不带延迟不带延迟操作操作转移种类转移种类bcdbcd如果指令如果指令中所规定的条中所规定的条件得到满足,件得到满足,就用指令中所就用指令中所给出的地址加给出的地址加载载pcpc;banzdbanzd如果当如果当前辅助寄存器前辅助寄存器不等于不等于0 0,就用,就用指令中所规定指令中所规定的地址加载的地址加载pcpc。 bc newbc new,aovaov banz loop,banz loop,* *ar2-ar2-b
25、nextb nextbacc abacc ahttp:/ 转移前,原程序的转移前,原程序的下条指令的地址被下条指令的地址被压入堆栈,而在返压入堆栈,而在返回时则将这个地址回时则将这个地址弹出至弹出至pcpc,使被中,使被中断了的原程序能继断了的原程序能继续执行。续执行。 当采用调用指令进当采用调用指令进行子程序或函数调行子程序或函数调用时,用时,dspdsp中断当前中断当前运行的程序,转移运行的程序,转移到程序存储器的其到程序存储器的其它地它地址址继续运行。继续运行。功能功能方法方法无条件调用与返回无条件调用与返回有条件调用与返回有条件调用与返回带延迟带延迟不带延迟不带延迟calld lopc
26、alld lopret mainret mainhttp:/ bc pmadbc pmad,condcond,condcond,condcond相与关系相与关系相或关系相或关系bc pmadbc pmad,condcondbc pmadbc pmad,condcond第第1组组第第2组组a 类类b 类类a 类类b 类类c 类类eqovtccbioneqnovntcncnbiolt leq gt geq http:/ 1组组 例如例如 可以从可以从a a类中选一个条件,同类中选一个条件,同时可以从时可以从b b类中选择一个条件。类中选择一个条件。但是不能从同一类中选择两但是不能从同一类中选择两个
27、条件。个条件。另外,两种条件测试的累加另外,两种条件测试的累加器必须是同一个。器必须是同一个。可以同时测试可以同时测试agtagt和和aovaov,但,但不能同时测试不能同时测试agtagt和和bgtbgt。 http:/ 2组组 例如例如 可以在可以在a a、b b、c c三类中各三类中各选择一个条件,但不能从选择一个条件,但不能从同一类中选择两个条件同一类中选择两个条件 可以在可以在a a、b b、c c三类中各选三类中各选择一个条件,但不能从同择一个条件,但不能从同一类中选择两个条件一类中选择两个条件 http:/ 12 2字的字的程序段,则可以用一条单周期条件执行指令程序段,则可以用一
28、条单周期条件执行指令(xcxc)来代替分支转移指令:)来代替分支转移指令:xc nxc n,condcond,condcond,condcond当当n=1n=1,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此条件指令后的个字指令。条件指令后的个字指令。当当n=2n=2,且条件得到满足,就执行紧随此,且条件得到满足,就执行紧随此指 令 后 的指 令 后 的 1 1 个 双 字 指 令 或 者个 双 字 指 令 或 者 2 2 条 单条 单字指令。字指令。 当条件不满足,就依当条件不满足,就依n n的值执行的值执行1 1条或条或2 2条条nopnop指令。指令。http:/ 编写计算编
29、写计算 的主要程序部分。的主要程序部分。 .bss x,4 .bss x,4 ;为;为x x建立建立4 4个单元,个单元, ;放置;放置x1x1、x2x2、x3x3、x4x4 .bss y,1 .bss y,1 ;为;为y y建立建立1 1个单元,放置个单元,放置y y stm #xstm #x,ar1 ar1 ;将;将x1x1的地址传给的地址传给ar1ar1 stm #3stm #3,ar2 ar2 ;将循环次数;将循环次数3 3传给传给ar2ar2 ld #0ld #0,a a ;对;对a a清零清零loop:add loop:add * *ar1+ar1+,a a ;对;对x1x1、x2
30、x2、x3x3、x4x4循环循环累累 ;加,结果放;加,结果放a a中中 banz loop,banz loop,* *ar2- ar2- ;检查循环是否应结束;检查循环是否应结束 stl astl a,y y ;将累加结果存入;将累加结果存入y y中中41iixyhttp:/ 2特点特点1 14单条指令的重复操作单条指令的重复操作 重复执行(重复执行(rcrc)+1+1次。次。rcrc内容不能编程设置,内容不能编程设置,只能由重复指令(只能由重复指令(rptrpt和和rptzrptz)中的操作数加载。)中的操作数加载。操作数操作数n n的最大值为的最大值为65 65 535535,最大重复执
31、行次数,最大重复执行次数为为65 535+165 535+1。 一旦重复指令被取一旦重复指令被取指、译码,直到重指、译码,直到重复循环完成以前,复循环完成以前,对所有的中断(包对所有的中断(包括括 ,但不包,但不包括括 )均不响应。)均不响应。 功能功能重复执行下一条指令重复执行下一条指令 nmirshttp:/ n由一个由一个1616位单数据存储器操作数位单数据存储器操作数 smemsmem或一个或一个8 8位或位或1616位常数位常数k k或或lklk给定。这样,给定。这样, 紧接着的下一条指令会循环执行紧接着的下一条指令会循环执行n+1n+1次。次。循环,循环,rcrc在执行减在执行减1
32、 1操作时不能被访问。操作时不能被访问。注意:注意:该循环内不能套用循环。该循环内不能套用循环。 当当rptzrptz指令执行时指令执行时:对目的累加器对目的累加器dstdst清清0 0, 循环执行下一条指令循环执行下一条指令n+1n+1次。次。 http:/ 利用单条指令的重复操作对数组利用单条指令的重复操作对数组x5=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的首地址赋给的首地址赋给ar1ar1ld #0,a ld #
33、0,a ;对;对a a清零清零rpt #4 rpt #4 ;设置重复执行下条指令;设置重复执行下条指令5 5次次stl a,stl a,* *ar1+ar1+;对;对x5x5各单元清零各单元清零或者或者.bss x,5.bss x,5stm #x,ar1stm #x,ar1rptz a,#4rptz a,#4;对;对a a清零并设置重复执行下条指令清零并设置重复执行下条指令5 5次次stl a,stl a,* *ar1+ar1+http:/ 利用利用c54xc54x内部的块重复计数器(内部的块重复计数器(brcbrc,加载值,加载值可为可为0 065 53565 535)、块重复起始地址寄存器
34、)、块重复起始地址寄存器(rsarsa)、块重复结束地址寄存器()、块重复结束地址寄存器(rearea)与程)与程序块重复指令序块重复指令rptbrptb,可对紧随,可对紧随rptbrptb、由若干条、由若干条指令构成的程序块进行重复操作。指令构成的程序块进行重复操作。功能功能将重复操作的范围扩大到任意长度的循环回路将重复操作的范围扩大到任意长度的循环回路 注意注意1.1.rptrpt指令一旦执行,不会停止指令一旦执行,不会停止操作,即使有中断请求也不响应;操作,即使有中断请求也不响应;2.rptb2.rptb指令可以响应中断;指令可以响应中断;http:/ 对数据组对数据组x5x5中的每个元
35、素加中的每个元素加1 1。.bss x,5 .bss x,5 ;为数组;为数组x x分配分配5 5个存储单元个存储单元begin: ld #1,16,b begin: ld #1,16,b ;将;将1 1左移左移1616位放入位放入b b的的 ;高端字的最低位;高端字的最低位stm #4,brc stm #4,brc ; 4brc4brc,(pcpc)+2 +2 rsarsa stm #x,ar4stm #x,ar4;将;将x x的首地址赋给的首地址赋给ar4 ar4 rptb next-1rptb next-1;将将next-1 next-1 rearea add add * *ar4,16
36、,b,a ar4,16,b,a ;x x地址的内容左移地址的内容左移1616位加位加 ; b b的高端字,结果放的高端字,结果放a asth a,sth a,* *ar4+ ar4+ ;将;将a a的高端字存入的高端字存入x x单元,单元, ;完成加;完成加1 1操作操作next: ld #0,b next: ld #0,b ;对;对b b清零清零 ;必必需需next-1next-1作为结束地址作为结束地址http:/ 执行执行rptrpt指令时指令时占用占用rptcrptc寄存器(重复计数器);寄存器(重复计数器);执行执行rptbrptb指令时要用到指令时要用到brcbrc、rsarsa和
37、和rserse寄存器。寄存器。只有只有一套块重复寄存器,一套块重复寄存器,故故块重复操作不能嵌套。块重复操作不能嵌套。 由于由于rptrpt与与rptbrptb两者用了不同的寄存器,因此两者用了不同的寄存器,因此rptrpt指指令可以嵌套在令可以嵌套在rptbrptb指令中,实现循环的嵌套。指令中,实现循环的嵌套。执行执行banzbanz指令指令只占用辅助寄存器只占用辅助寄存器arxarx。不会与不会与rpt rpt rptbrptb指令指令相冲突。相冲突。嵌套原则嵌套原则参与嵌套循环的寄存器不能重复使用参与嵌套循环的寄存器不能重复使用 http:/ 一个三重循环嵌套结构http:/ 流水线操
38、作技术流水线操作技术 流水线流水线操作操作在执行多条指令时,将每条指令的在执行多条指令时,将每条指令的预取指、取指、译码、寻址、读取预取指、取指、译码、寻址、读取操作数、执行等阶段,操作数、执行等阶段,相差一个阶相差一个阶段段地地重叠重叠地执行。地执行。流水流水线操线操作作的的优点优点一条一条k k段流水能在段流水能在k k+ +(n n-1-1)个周期内处理)个周期内处理n n条指令。其前条指令。其前k k个周期用于完成第一条指令个周期用于完成第一条指令,其余,其余n n-1-1条指令的执行需要条指令的执行需要n n-1-1个周期。而个周期。而非流水处理器上执行非流水处理器上执行n n条指令
39、则需要条指令则需要nknk 个周个周期。当指令条数期。当指令条数n n较大时,可认为每个周期较大时,可认为每个周期内执行的最大指令个数为内执行的最大指令个数为k k。 http:/ 在第一个机在第一个机器周期用器周期用pcpc中的内容加中的内容加载载pabpab 在第二个机器周在第二个机器周期用读取到的指期用读取到的指令字加载令字加载pbpb。 第三个周期用第三个周期用pbpb的内容加载指令寄存器的内容加载指令寄存器irir,对,对irir内的指令进行译码,产生执行内的指令进行译码,产生执行指令所需要的一系列控制信号。指令所需要的一系列控制信号。 http:/ 用数据用数据1 1读地址加载读地
40、址加载dabdab,或用数据读地,或用数据读地址加载址加载cabcab,修正辅助,修正辅助寄存器和堆栈指针。寄存器和堆栈指针。读数据读数据1 1加载加载dbdb,或读数,或读数据据2 2加载加载cbcb;用数据;用数据3 3写写地址加载到地址加载到eabeab,以便在,以便在流水线的最后一级将数流水线的最后一级将数据送到数据存储空间。据送到数据存储空间。 执行指令,或用执行指令,或用写数据加载写数据加载ebeb。 http:/ 无延迟流水线分支转移的问题无延迟流水线分支转移的问题地址地址 指令指令a1a1,a2 a2 b b1 b b1 这是一个四周期、二字分支指令这是一个四周期、二字分支指令
41、a3 a3 i3 i3 这是任意的一周期、一字指令这是任意的一周期、一字指令a4 a4 i4 i4 这是任意的一周期、一字指令这是任意的一周期、一字指令. . .b1 j1b1 j1例例3-73-7http:/ 取得双字分取得双字分支转移指令支转移指令取得双字分取得双字分支转移指令支转移指令http:/ 分支转移指令分支转移指令进入译码级进入译码级用新的值用新的值b1b1加载加载pabpabhttp:/ 双字分支转移双字分支转移指令进入流水指令进入流水线的执行级线的执行级 执行执行j1j1指令指令 双字分支转移双字分支转移指令进入流水指令进入流水线的执行级线的执行级 由于由于i3i3和和i4i
42、4指指令是不允许执令是不允许执行的,所以这行的,所以这两个周期均花两个周期均花在分支转移指在分支转移指令的执行上。令的执行上。http:/ 延迟分支转移延迟分支转移注意注意1.1.延迟操作指令后面只有两个字的空延迟操作指令后面只有两个字的空 隙,因此不能在此空隙中安排任何隙,因此不能在此空隙中安排任何 一类分支转移指令或重复指令;一类分支转移指令或重复指令;2.2.在在calldcalld或或retdretd的空隙中还不能安的空隙中还不能安 排排pushpush和和poppop指令。指令。3 3. .延迟操作指令比它们的非延迟型延迟操作指令比它们的非延迟型 指令要快,在调试延迟型指令时,指令要
43、快,在调试延迟型指令时, 直观性稍差一些,因此希望在大多直观性稍差一些,因此希望在大多 数情况下还是采用非延迟型指令。数情况下还是采用非延迟型指令。 http:/ 在完成在完成r=r=(x+yx+y)* *z z操作后转至操作后转至nextnext。可以分别编出如下两段程序:可以分别编出如下两段程序:利用普通分支转移指令利用普通分支转移指令b b 利用延迟分支转移指令利用延迟分支转移指令bdbdld xld x,a ld xa ld x,a aadd yadd y,a add ya add y,a astl astl a, s stl as stl a, ssld sld s,t ld st
44、ld s,t tmpy zmpy z,a bd next a bd next stl astl a, r mpy zr mpy z,a a b next stl ab next stl a, rr(共(共8 8个字,个字,1010个个t t) (共(共8 8个字,个字,8 8个个t t)在空闲的随后两周期中执行下两条指令在空闲的随后两周期中执行下两条指令 http:/ nxc n,cndcnd,cndcnd,cndcnd如果条件满足,则执如果条件满足,则执行下面行下面n n(n=1n=1或或2 2)条指令,)条指令,否则下面否则下面n n条指令改为执行条指令改为执行n n条条nopnop指令。
45、指令。 2条件执行指令的流水线图条件执行指令的流水线图 条件执行指令条件执行指令xc 有下列程序:有下列程序:地址地址 指令指令a1 i1a1 i1a2 i2a2 i2a3 i3a3 i3a4 xc 2a4 xc 2, condconda5 i5a5 i5a6 i6 a6 i6 http:/ pab 取取 x cx c 指 令指 令的操作码的操作码 求解求解xcxc指令所规定的条件。如果条件满指令所规定的条件。如果条件满足,则后面指令足,则后面指令i5i5和和i6i6进入译码级并执进入译码级并执行;否则不对行;否则不对i5i5和和i6i6指令译码。指令译码。http:/ 1. xcxc是一条单
46、字单周期指令,与条件跳是一条单字单周期指令,与条件跳 转指令相比,具有快速选择其后转指令相比,具有快速选择其后1 1或或2 2 条指令是否执行的优点条指令是否执行的优点 ;2. xc2. xc指令在执行前指令在执行前2 2个周期就已经求出个周期就已经求出 条件,如果在这之后到执行前改变条条件,如果在这之后到执行前改变条 件(如发生中断),将会造成无期望件(如发生中断),将会造成无期望 的结果的结果 。3 3. . 要尽力避免在要尽力避免在xcxc指令执行前指令执行前2 2个周期个周期 改变所规定的条件改变所规定的条件 。 4 4. . 并没有规定并没有规定xcxc指令指令后的一条或两条指后的一
47、条或两条指 令必须是单周期指令。令必须是单周期指令。注注意意http:/ 流水线冲突原因流水线冲突原因不会产生流水线冲突的情况不会产生流水线冲突的情况(1 1)在单周期内允许同时访问)在单周期内允许同时访问daramdaram的不同块。的不同块。(2 2)当流水线中的一条指令访问某一存储器块时,)当流水线中的一条指令访问某一存储器块时, 允许流水线中处于同一级的另一条指令访问允许流水线中处于同一级的另一条指令访问 另一个存储器块。另一个存储器块。(3 3)允许处于流水线不同级上的两条指令同时访)允许处于流水线不同级上的两条指令同时访 问同一个存储器块。问同一个存储器块。 http:/ 对对pa
48、b/pbpab/pb取指取指 利用前半周期利用前半周期对对dab/dbdab/db读取第一个数据读取第一个数据 利用前半周期利用前半周期对对cab/cbcab/cb读取第二个数据读取第二个数据 利用后半周期利用后半周期对对eab/ebeab/eb将数据写存储器将数据写存储器 利用后半周期利用后半周期http:/ (1) 同时从同一存储器块中取指和同时从同一存储器块中取指和取操作数(都在前半个周期);取操作数(都在前半个周期);2.2.同时对同时对同一存储器块进行写操作和读(第二个数)同一存储器块进行写操作和读(第二个数)操作(都在后半周期)。操作(都在后半周期)。解决解决冲突冲突办法办法人为合
49、理安排指令,人为合理安排指令,错开访问时序错开访问时序 cpucpu通过写操作延迟一个周通过写操作延迟一个周期,或者通过插入一个空周期,或者通过插入一个空周期的办法,自动地解决期的办法,自动地解决 cpucpu同时访问同时访问daramdaram的同一存储器块就会的同一存储器块就会发生时序上的冲突发生时序上的冲突。http:/ http:/ (1)可能发生流水线冲突的情况)可能发生流水线冲突的情况 1) 1) 辅助寄存器(辅助寄存器(ar0ar0ar7ar7)。)。2) 2) 重复块长度寄存器(重复块长度寄存器(bkbk)。)。3) 3) 堆栈指针。堆栈指针。4) 4) 暂存器(暂存器(t t
50、)。)。5) 5) 处理器工作方式状态寄存器(处理器工作方式状态寄存器(pmstpmst)。)。6) 6) 状态寄存器(状态寄存器(st0st0和和st1st1)。)。7 7)块重复计数器()块重复计数器(brcbrc)。)。8 8)存储器映象累加器()存储器映象累加器(agag、ahah、alal、bgbg、bhbh、blbl)。)。http:/ 在流水线的执行在流水线的执行阶段进行写操作阶段进行写操作 在流水线的寻址在流水线的寻址阶段生成地址阶段生成地址 冲突冲突无等待周期问题无等待周期问题 解决解决数据未准备好数据未准备好http:/ 在 流 水 线 的在 流 水 线 的执 行 阶 段
51、进执 行 阶 段 进行写操作行写操作 读 数 阶 段读 数 阶 段将 常 数将 常 数 1 01 0写到写到ar1ar1 冲突冲突同时利用同时利用e e总线总线cpucpu自动地自动地将将stmstm的写的写操作延迟操作延迟一个周期一个周期 在流水线的寻址在流水线的寻址阶段生成地址阶段生成地址 新冲突新冲突数据未准备好数据未准备好解决解决http:/ stlmstlm指令后指令后面 插 入 一 条面 插 入 一 条nopnop指令指令 在流水线的在流水线的执行阶段进执行阶段进行写操作行写操作读 数 阶 段读 数 阶 段将常数将常数1010写到写到ar1ar1在流水线的寻址在流水线的寻址阶段生成
52、地址阶段生成地址 e e总线总线错开错开解决解决数据准备好数据准备好解决解决http:/ (2)用等待周期表解决流水线冲突)用等待周期表解决流水线冲突 等待周期表给出了对存储器映象寄存器以及等待周期表给出了对存储器映象寄存器以及st0st0、st1st1、pmstpmst的的控制字段进行写操作的各种指令所需插入的等控制字段进行写操作的各种指令所需插入的等待周期。待周期。对双字或三字指令,都会提供隐含的保护周期。利用对双字或三字指令,都会提供隐含的保护周期。利用这些指令提供的隐含的保护周期,有时可以不插这些指令提供的隐含的保护周期,有时可以不插nopnop指指令。令。http:/ 1个个插入插入
53、2 2个个t tstm #1kstm #1k, t tmvdk smemmvdk smem,t tld smemld smem,t tld smemld smem,tsttst所有其它存储指令所有其它存储指令包括包括expexp asmasmld #k5ld #k5, asmasmld smemld smem,asmasm所有其它存储指令所有其它存储指令 dpdpcpl=0cpl=0ld #k9ld #k9, dpdpld smemld smem,dpdp stm # lkstm # lk,st0st0st # lkst # lk,st0st0所有其它存储指令插入所有其它存储指令插入3 3个个sxm c16sxm c16frct ovmfrct ovm 所有存储指令所有存储指令包括包括ssxmssxm和和rsxmrsxm a a 或或b b 修改累加器然后读修改累加器然后读mmrmmr 在在rptbdrptb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 61252:2025 EN-FR Electroacoustics - Personal sound exposure meters
- 蔬菜营养均衡教育
- 2025版帕金森病常见症状及护理手册
- 体温的评估及护理
- 医药上架协议书
- 2025-2026学年安徽省滁州市六级语文上册期中考试试卷及答案
- 医院协议书供货
- 委托签协议书
- 2025版疱疹常见症状及护理方案
- 眼球净化护理方法图解
- 企业廉政防腐培训课件
- 电缆接头施工方案
- 非洲鼓课件介绍
- 患者沟通与心理护理
- 胃肠穿孔护理常规
- 夯实数字基础全面推进数字化转型升级-中核集团数字化转型实践 2025
- 颅骨缺损护理查房
- 胎膜早破的护理查房胎膜早破护理查房课件
- 电气平行检验计划表格部分模板
- JG/T 421-2013土木工程用光纤光栅温度传感器
- (高清版)DG∕TJ 08-2302-2019 埋地钢质燃气管道杂散电流干扰评定与防护标准
评论
0/150
提交评论