DSP原理与应用-第2章CPU结构与指令集.ppt
第二章第二章 CPU结构与指令集结构与指令集第二章第二章 CPU结构与指令集结构与指令集2.1 CPU结构结构 2.2 C67x指令集指令集 2.3 流水线流水线 2.4 中中 断断 DSP的一般结构的一般结构2.1 CPU结构结构外外外外设设设设CPUCPU内部存储器内部存储器内部存储器内部存储器内部总线内部总线内部总线内部总线外外外外 部部部部存储器存储器存储器存储器数据寄存器数据寄存器处理处理单元单元片内存储器片内存储器片外存储器片外存储器存储器的层次存储器的层次2.1.1 CPU结构框图结构框图程序取指程序取指程序取指程序取指指令分配指令分配指令分配指令分配指令译码指令译码指令译码指令译码程序执行机构程序执行机构程序执行机构程序执行机构程序总线程序总线程序总线程序总线数据总线数据总线数据总线数据总线存储器映射存储器映射(统一编址统一编址)描述描述起始地址起始地址终终止地址止地址单单字字节节或四字或四字节寻节寻址址内部ROM页0(256K Bytes)0 x0000 0000 0 x0003 FFFF 单字节或四字节内部ROM页1(128K Bytes)0 x0004 0000 0 x0005 FFFF 单字节或四字节内部RAM页0(256K Bytes)0 x1000 0000 0 x1003 FFFF 单字节或四字节存储器和缓存控制寄存器0 x2000 0000 0 x2000 001F 单字节器件配置寄存器0 x4000 0000 0 x4000 0083 单字节PLL控制寄存器0 x4100 0000 0 x4100 015F 单字节定时器(RTI)控制寄存器0 x4200 0000 0 x4200 00A3 单字节通用主机接口(UHPI)寄存器0 x4300 0000 0 x4300 0043 单字节McASP0控制寄存器0 x4400 0000 0 x4400 02BF 单字节SPI0控制寄存器0 x4700 0000 0 x4700 007F 单字节I2C0控制寄存器0 x4900 0000 0 x4900 007F 单字节I2C1控制寄存器0 x4A00 0000 0 x4A00 007F 单字节McASP0 DMA端口(此范围内的任何地址)0 x5400 0000 0 x54FF FFFF 单字节dMAX控制寄存器 0 x6000 0000 0 x6000 008F 单字节dMAX0(HiMAX)事件入口表0 x6100 8000 0 x6100 807F 单字节或四字节dMAX0(HiMAX)传输入口表0 x6100 80A0 0 x6100 81FF 单字节或四字节通过EMIF访问的外部SDRAM空间0 x8000 0000 0 x8FFF FFFF 单字节或四字节通过EMIF访问的外部异步器件/Flash空间0 x9000 0000 0 x9FFF FFFF 单字节或四字节EMIF控制寄存器0 xF000 0000 0 xF000 00BF 单字节2.1.2 CPU数据通道数据通道2个通用寄存器组个通用寄存器组(A和和B),包括,包括32个个寄存器寄存器8个功能单元个功能单元(.L1、.L2、.S1、.S2、.M1、.M2、.D1、.D2)2个数据读取通路个数据读取通路(LD1和和LD2),每侧,每侧有有2个个32位读取总线位读取总线2个数据存储通路个数据存储通路(ST1和和ST2),每侧,每侧有有1个个32位存储总线位存储总线2个寄存器组交叉通路个寄存器组交叉通路(1x和和2x)2个数据寻址通路个数据寻址通路(DA1和和DA2)1.通用寄存器组功能通用寄存器组功能(1)存放数据,作为指令的存放数据,作为指令的源操作数源操作数和和目的操目的操作数作数。注意传送方向和数据字长。注意传送方向和数据字长(2)作为作为间接寻址间接寻址的地址指针,寄存器的地址指针,寄存器A4A7和和B4B7还能够以循环寻址方式工作还能够以循环寻址方式工作(3)A1、A2、B0、B1和和B2可用做可用做条件寄存器条件寄存器A1:A0A1:A0A3:A2A3:A2 A29:A28A29:A28A31:A30A31:A30odd odd eveneven:32328 8 40-bit Reg 40-bit RegB1:B0B1:B0B3:B2B3:B2 B29:B28B29:B28B31:B30B31:B30odd odd eveneven:32328 8 40-bit Reg 40-bit Reg40位位/64位寄存器对位寄存器对 All combinations of 40-bit registers are shown below:lThe registers must be from the same side.lThe first register must be even and the second odd.lThe registers must be consecutive.2.功能单元功能单元 功能功能单单元元 定点操作定点操作 浮点操作浮点操作.L单单元元3240位算位算术术和比和比较较操作操作32-位最左位最左边边1或或0的位数的位数计计数数32位和位和40位位归归一化操作一化操作32位位逻辑逻辑操作操作算算术术操作操作数据数据类类型型转换转换操作操作DP SPINT DP,INT SP.S单单元元 32位算位算术术操作操作3240位移位和位移位和32位位域操作位位域操作32位位逻辑逻辑操作操作转转移移常数常数产产生生寄存器与控制器数据寄存器与控制器数据传递传递(仅仅.S2)比比较较倒数和倒数平方根操作倒数和倒数平方根操作绝对值绝对值操作操作SPDP数据数据类类型型转换转换.M单单元元 16 16位乘法操作位乘法操作 3232乘法操作乘法操作浮点乘法操作浮点乘法操作.D单单元元 32-位加,减,位加,减,线线性及循性及循环寻环寻址址计计算算带带5位常数偏移量的字位常数偏移量的字读读取与存取与存储储带带15位常数偏移量的字位常数偏移量的字读读取与存取与存储储(仅仅.D2)带带5位常数偏移量的双字位常数偏移量的双字读读取取3.寄存器组交叉通路寄存器组交叉通路.L1、.S1、.D1和和.M1可以直接读写寄存器组可以直接读写寄存器组A.L2、.S2、.D2和和.M2可以直接读写寄存器组可以直接读写寄存器组B 1x交叉通路允许数据通道交叉通路允许数据通道A的功能单元从寄存器的功能单元从寄存器组组B读它的源操作数读它的源操作数2x交叉通路允许数据通道交叉通路允许数据通道B的功能单元从寄存器的功能单元从寄存器组组A读它的源操作数读它的源操作数4.数据存储器及读取存储通路数据存储器及读取存储通路(Load指令指令)寄存器组寄存器组A的读入通路为的读入通路为LD1(2个个32位位)寄存器组寄存器组B的读入通路为的读入通路为LD2(2个个32位位)LDDW指令一次可读取指令一次可读取64位数据到位数据到A或或B寄存器寄存器(Store指令指令)寄存器组寄存器组A的写数据通路为的写数据通路为ST1寄存器组寄存器组B的写数据通路为的写数据通路为ST25.数据地址通路数据地址通路数据地址通路数据地址通路DA1和和DA2来自来自.D功能单元功能单元 数据通道以数据通道以T1、T2表示表示 LDW .D1T2 *A03,B1D1产生地址,用产生地址,用LD2数据通道读入数据到数据通道读入数据到B1寄存器寄存器6.控制寄存器组控制寄存器组缩缩写写 寄存器名寄存器名 描述描述AMR寻寻址模式寄存器址模式寄存器指定是否使用指定是否使用线线性或循性或循环寻环寻址。如果是循址。如果是循环寻环寻址,址,还还包括循包括循环寻环寻址的尺址的尺寸寸CSR控制状控制状态态寄存器寄存器包括全局中断使能位,高速包括全局中断使能位,高速缓缓冲存冲存储储器控制位和其他各种控制和状器控制位和其他各种控制和状态态位位FADCR浮点加法配置寄存器浮点加法配置寄存器指定指定.L单单元的溢出方式,舍入方式,元的溢出方式,舍入方式,记录记录NaN及其他异常及其他异常FAUCR浮点浮点辅辅助配置寄存器助配置寄存器记录记录.S单单元元NaN及其他异常及其他异常FMCR浮点乘法配置寄存器浮点乘法配置寄存器指定指定.M单单元的溢出方式,舍入方式,元的溢出方式,舍入方式,记录记录NaN及其他异常及其他异常ICR中断清除寄存器中断清除寄存器允允许软许软件清除挂起的中断件清除挂起的中断IER中断使能寄存器中断使能寄存器允允许许使能禁止个使能禁止个别别中断中断IFR中断中断标标志寄存器志寄存器显显示中断状示中断状态态IRP中断返回指中断返回指针针 保存从可屏蔽中断返回保存从可屏蔽中断返回时时的地址的地址ISR中断中断设设置寄存器置寄存器允允许软许软件控制件控制设设置中断置中断ISTP中断服中断服务务表指表指针针指向中断服指向中断服务务表的起始地址表的起始地址NRP不可能屏蔽中断返回指不可能屏蔽中断返回指针针保存从不可屏蔽中断返回保存从不可屏蔽中断返回时时的地址的地址PCE1程序程序计计数器数器保存保存处处于流水于流水线线E1节节拍的取指包地址拍的取指包地址6.控制寄存器组控制寄存器组模式模式描述描述00线线性性寻寻址址(复位后默复位后默认值认值)01循循环寻环寻址使用址使用BK0字段字段10循循环寻环寻址使用址使用BK1字段字段11保留保留寻址模式寄存器寻址模式寄存器(AMR)控制状态寄存器控制状态寄存器(CSR)位位字段名字段名功能功能1510 PWRD 控制低功耗模式,控制低功耗模式,该值读时总为该值读时总为零零9 SAT 饱饱和位。任一功能和位。任一功能单单元元执执行一个行一个饱饱和操作和操作时时被置被置1,饱饱和位只能有和位只能有MVC指令清零,指令清零,被功能被功能单单元元饱饱和和操作置位。当清除和置位在同一周期内操作置位。当清除和置位在同一周期内发发生生时时,功能,功能单单元元对对它的置位它的置位优优先。先。饱饱和位在和位在饱饱和和发发生后一个生后一个周期被置位周期被置位8 EN 端端结结方式:方式:1=小端小端终结终结,0=大端大端终结终结75 PCC PCC程序高速程序高速缓缓冲存冲存储储器控制模式器控制模式42 DCC 数据高速数据高速缓缓冲存冲存储储器控制模式器控制模式1 PGIE 当一个中断当一个中断发发生生时时,保存以前的全局中断使能位,保存以前的全局中断使能位GIE0 GIE 全局中断使能位,它控制除复位和不可屏蔽中断之外的所有可屏蔽中断使能:全局中断使能位,它控制除复位和不可屏蔽中断之外的所有可屏蔽中断使能:GIE=1时时,可屏蔽中断,可屏蔽中断使能:使能:GIE=0时时,可屏蔽中断禁止,可屏蔽中断禁止6.控制寄存器组控制寄存器组指令集概述指令集概述1.指令和功能单元之间的映射指令和功能单元之间的映射 指令指令 功能单元功能单元乘法相关的指令都是在乘法相关的指令都是在.M单元执行单元执行产生数据存储器地址的指令在产生数据存储器地址的指令在.D功能单元功能单元算术逻辑运算大多在算术逻辑运算大多在.L与与.S单元执行单元执行 2.延迟间隙延迟间隙延迟间隙在数量上等于从指令的源操作数被读取直到延迟间隙在数量上等于从指令的源操作数被读取直到执行的结果可以被访问所需要的指令周期数。执行的结果可以被访问所需要的指令周期数。指令指令类类型型延延迟间迟间隙隙功能功能单单元等待元等待时间时间读读周期周期写周期写周期单单周期周期 0 1 i i 2周期周期 DP 1 1 i i,i+1 DP 比比较较1 2 i,i+1 1+1 4周期周期3 1 i i+3 INT到到DP转换转换4 1 i i+3,i+4 Load 4 1 i i,i+4MPYSP2DP 4 2 i i+3,i+4 ADDDP/SUBDP 6 2 i,i+1 i+5,i+6 MPYSPDP 6 3 i,i+1 i+5,i+6 MPYI 8 4 i,i+1,1+2,i+3 i+8 MPYID 9 4 i,i+1,1+2,i+3 i+8,i+9 MPYDP 9 4 i,i+1,1+2,i+3 i+8,i+9 3.指令操作码映射图指令操作码映射图代码段代码段说明说明creg指定条件寄存器的代码指定条件寄存器的代码z指定条件指定条件src,dst分别指定源及目的操作数代码分别指定源及目的操作数代码x指定源操作数指定源操作数2是否使用交叉通道是否使用交叉通道op指令操作代码指令操作代码s选择寄存器组选择寄存器组A或或B作为目的操作数作为目的操作数p指定是否并行执行指定是否并行执行CPU运行时,总是一次取运行时,总是一次取 8条指令,组成一个条指令,组成一个取指包取指包 所有并行执行的指令组成一个所有并行执行的指令组成一个执行包执行包 周期/执行包指令1A2B3C D E4F G H4.并行操作并行操作3位操作码字段位操作码字段creg指定条件寄存器指定条件寄存器1位字段位字段z指定是零测试还是非零测试指定是零测试还是非零测试z=1,进行零测试,即条件寄存器的内容为,进行零测试,即条件寄存器的内容为0是真是真z=0,进行非零测试,即条件寄存器的内容非,进行非零测试,即条件寄存器的内容非0是真是真creg=0,z=0,则指令将无条件地执行,则指令将无条件地执行 条件寄存器:条件寄存器:A1、A2、B0、B1和和B2 B0 ADD .L1 A1,A2,A3|!B0 ADD .L2 B1,B2,B3 以上2条指令是相互排斥 5.条件操作条件操作6.寻址方式寻址方式全部采用全部采用间接寻址间接寻址所有寄存器都可以做所有寄存器都可以做线性寻址线性寻址的地址指针的地址指针循环寻址的地址指针:循环寻址的地址指针:A4-A7,B4-B7由由AMR控制地址修改方式:线件方式或循环方式控制地址修改方式:线件方式或循环方式循环寻址循环块的尺寸与循环寻址循环块的尺寸与BK0BK1内内5位数值位数值N的关系为的关系为块尺寸块尺寸2(N+1)字节字节例如例如N的二进制数为的二进制数为10000,等于十进制,等于十进制16,则,则块尺寸块尺寸2(16+1)131072字节字节寻寻址方式址方式不修改地址寄存器不修改地址寄存器先修改地址寄存器先修改地址寄存器后修改地址寄存器后修改地址寄存器寄存器寄存器间间接接寻寻址址*R*R *R*R *R 寄存器相寄存器相对寻对寻址址*Rucst5*Rucst5*Rucst5*Rucst5*R ucst5*R ucst5基地址基地址+变变址址*RoffseR*RoffseR*RoffseR*RoffseR*R offseR*R offseR带带15位常数偏移量位常数偏移量的寄存器相的寄存器相对寻对寻址址*+B14B15ucst156.寻址方式寻址方式读取存储类指令访问数据存储器地址的汇编语法格式读取存储类指令访问数据存储器地址的汇编语法格式 ucst5-无符号二进制无符号二进制5位常数偏移量位常数偏移量ucst15-无符号二进制无符号二进制15位常数偏移量位常数偏移量uLittle-endian ordering,in which bytes are ordered from right to left,the most significant byte having the highest addressuBig-endian ordering,in which bytes are ordered from left to right,the most significant byte having the lowest addressu大小端位由大小端位由DSP的的LENDIAN管脚设置管脚设置终结方式终结方式(大小端位大小端位)BA 98 76 54h11,10,01,00BA 98 76 54h00,01,10,11终结方式终结方式(大小端位大小端位)C6000DSP 汇编指令分类汇编指令分类u读取读取/存储类指令存储类指令u算术运算类指令算术运算类指令u逻辑与位操作类指令逻辑与位操作类指令u搬移搬移类指令类指令u程序转移程序转移类指令类指令u空操作类指令空操作类指令u浮点操作浮点操作类指令类指令2.2.2 读取读取/存储类指令存储类指令读取指令:读取指令:LDBLDBULDHLDHULDWLDDW存储指令:存储指令:STBSTHSTW单字节单字节(Byte)、双字节、双字节(半字半字Half Word)和四字节和四字节(字字Word)位数不同位数不同有符号有符号/无符号无符号(U),符号位的扩展不同,符号位的扩展不同地址偏移修正因子:地址偏移修正因子:LDB(U)LDH(U)LDW指令分别读指令分别读入字节半字字,要乘以相应的比例因子入字节半字字,要乘以相应的比例因子1、2、42.2.2 读取读取/存储类指令存储类指令例例2-1 线性寻址下的变址计算线性寻址下的变址计算 LDW.D1 *+A41,A6此例为先修改地址,地址偏移量按此例为先修改地址,地址偏移量按14计算,计算结果计算,计算结果如下所示:如下所示:示例示例02012.2.2 读取读取/存储类指令存储类指令例例2-2 循环寻址方式下的地址计算循环寻址方式下的地址计算 LDW.D1 *+A49,A1此处假设寻址模式寄存器此处假设寻址模式寄存器AMR=0 x00030001,A4已被设定为已被设定为循环寻址方式,块字节尺寸为循环寻址方式,块字节尺寸为24=16=10h(N=3)。因为是以字。因为是以字为单位读取,变址偏移量为为单位读取,变址偏移量为94=36=24h。线件寻址时地址应。线件寻址时地址应为为00000124h;循外寻址时,;循外寻址时,24h对低对低4位位(第第0-3位位)地址地址10h取模,余数为取模,余数为4,故实际寻址地址为,故实际寻址地址为00000104h。示例示例02022.2.3 算术运算类指令算术运算类指令1.加减运算指令加减运算指令(1)ADD/ADDU/SUB/SUBU 操作数为整型操作数为整型(32位位)或长整型或长整型(40位位)的指令的指令(2)ADD2/SUB2操作数为半字操作数为半字(16位位)的指令,的指令,ADD2SUB2指令的特点是同时进行指令的特点是同时进行2个个16位补码数的加减运算,高半字与低半字之间没有进借位,各自位补码数的加减运算,高半字与低半字之间没有进借位,各自独立进行独立进行(3)SADD/SSUB带饱和的有符号数加减运算指令,操作数为带饱和的有符号数加减运算指令,操作数为32位或位或40位有符号数位有符号数(4)ADDK与与16位常数进行加法操作的指令位常数进行加法操作的指令(5)ADDABADDAHADDAWADDAD,SUBABSUBAHSUBAW按寻址方式的加减运算类指令按寻址方式的加减运算类指令溢出问题溢出问题如果运算结果超出目的操作数字长所能表示的范围,造如果运算结果超出目的操作数字长所能表示的范围,造成运算结果的高位丢失,使保存的运算结果不正确,称成运算结果的高位丢失,使保存的运算结果不正确,称为为溢出溢出。通常有。通常有3种办法解决溢出问题种办法解决溢出问题(1)用较长的字长来存放运算结果:用较长的字长来存放运算结果:1632可行,可行,3240耗时耗时(2)用带饱和的加减运算指令做补码数加减运算:保证符用带饱和的加减运算指令做补码数加减运算:保证符号不变,并且给出提示位号不变,并且给出提示位(3)对整个系统乘一个小于对整个系统乘一个小于1的比例因子:实际中最常用的比例因子:实际中最常用2.2.3 算术运算类指令算术运算类指令2.2.3 算术运算类指令算术运算类指令例例2-3 减法运算举例减法运算举例SSUB.L2 B1,B2,B3 SUB.L2 B1,B2,B3SUB.L2 B1,B2,B5:B4示例示例0203溢出了溢出了!符号位在这里无溢出!2.2.3 算术运算类指令算术运算类指令例例2-4 计算累加和的程序,用长型数存放和数,有计算累加和的程序,用长型数存放和数,有8位位保护位,保护位,示例示例0204Loop:LDW .D1 *A4+,A0 NOP 4 ADD .L1 A3:A2,A0,A3:A2 SUB .L2 B1,1,B1 B1 B.S1 Loop NOP 5 2.2.3 算术运算类指令算术运算类指令例例2-5 按寻址方式的加法运算指令按寻址方式的加法运算指令 ADDAH.D1 A4,A2,A4B2=16h 对对8取余得取余得6示例示例02052.2.3 算术运算类指令算术运算类指令例例2-6 按寻址方式的减法运算指令按寻址方式的减法运算指令 SUBAB.D1 A5,A0,A5-41=-4h 对对10h取余得取余得C示例示例02052.2.3 算术运算类指令算术运算类指令2.乘法运算指令乘法运算指令(1)适宜于整数乘法的指令适宜于整数乘法的指令 以以MPY为首字母的为首字母的22条指令条指令(2)适宜于适宜于Q格式数相乘的格式数相乘的3条指令条指令 SMPYSMPYLHSMPYHL以以1616位的硬件乘法器为基础,整数乘法的位的硬件乘法器为基础,整数乘法的2个源操作数都是个源操作数都是16位字长,目的操作数为位字长,目的操作数为32的的寄存器,不存在溢出问题。寄存器,不存在溢出问题。所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。在所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。定点整数。Q格式:小数点位于第格式:小数点位于第 n 位之右侧,称为位之右侧,称为Qn 格式格式 定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。若数据高位之前。若数据x的形式为的形式为x=x0.x1x2xn(其中其中x0为符号位,为符号位,x1xn是数值的有效部分,也称为尾数,是数值的有效部分,也称为尾数,x1为最高有效位为最高有效位),则在计算,则在计算机中的表示形式为:机中的表示形式为:Q格式定点数格式定点数2-n|x|1-2-nQ0格式数格式数定点整数是纯整数,约定的小数点位置在有效数值部分最定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。若数据低位之后。若数据x的形式为的形式为x=x0 x1x2xn(其中其中x0为符号位,为符号位,x1xn 是尾数,是尾数,xn 为最低有效位为最低有效位),则在计,则在计算机中的表示形式为:算机中的表示形式为:Q格式定点数格式定点数1|x|2n -1 Q15 格式数格式数2.2.3 算术运算类指令算术运算类指令例例2-7 整数乘法运算整数乘法运算 (1)MPYH .M1 A1,A2,A3 (2)MPYHU .M1 A1,A2,A3示例示例0207符号位扩展符号位扩展无符号数无符号数1.逻辑运算指令:逻辑运算指令:AND、OR、XOR、NEG(求补码求补码)2.移位指令移位指令:算术左移指令算术左移指令SHL、算术右移指令、算术右移指令SHR、逻辑右移、逻辑右移(无符号扩展右无符号扩展右移移)指令指令SHRU、带饱和的算术左移指令、带饱和的算术左移指令SSHL。SHR src2,src1,dst (src1的低的低6位指定右移位数位指定右移位数)3.位操作指令位操作指令:寄存器控制中常用:寄存器控制中常用位域清零位域清零/置位指令置位指令CLR/SET;带符号扩展与无符号扩展的位域提取指令带符号扩展与无符号扩展的位域提取指令EXT/EXTULMBD指令,寻找指令,寻找src2中与中与src1最低位最低位(LSB)相同的最高位位置相同的最高位位置 NORM指令,检测有多少个冗余的符号位指令,检测有多少个冗余的符号位 4.比较及判别类指令:循环条件判断时用比较及判别类指令:循环条件判断时用CMPEQ/CMPGT(U)/CMPLT(U)指令用于比较两个有指令用于比较两个有/无符号数的无符号数的相等、大于、小于,若为真,则目的寄存器置相等、大于、小于,若为真,则目的寄存器置1;反之,目的寄存;反之,目的寄存器置器置0。2.2.4 逻辑及位域操作指令逻辑及位域操作指令uMV:通用寄存器之间传送数据通用寄存器之间传送数据uMVC:用于在通用寄存器与控制寄存器之间传送数用于在通用寄存器与控制寄存器之间传送数据,此条指令只能使用据,此条指令只能使用.S2功能单元功能单元 uMVK:用于把用于把16位常数送入通用寄存器位常数送入通用寄存器uMVKH/MVKLH MVKL 结合生成结合生成32位常量位常量2.2.5 搬移类指令搬移类指令u用标号用标号label表示目标地址的转移指令表示目标地址的转移指令B(.S)labelu用寄存器表示目标地址的转移指令用寄存器表示目标地址的转移指令B.S2 src2u从可屏蔽中断寄存器取目标地址的转移指令从可屏蔽中断寄存器取目标地址的转移指令B.S2 IRPu从不可屏蔽中断寄存器取目标地址的转移指令从不可屏蔽中断寄存器取目标地址的转移指令B.S2 NRP转移指令有转移指令有5个指令周期的延迟间隙。转移指令后的个指令周期的延迟间隙。转移指令后的 5个指令执行包全部进入个指令执行包全部进入CPU流水线,并相继执行。流水线,并相继执行。程序转移类指令程序转移类指令2.2.7 浮点运算指令浮点运算指令(1)浮点加减法指令浮点加减法指令ADDSP/ADDDP/SUBSP/SUBDP(2)数据类型转换指令数据类型转换指令10条条INTSP(U)/INTDP(U)/SPINT/DPINT/SPDP/SPTRUNC/DPSP/DPTRUNC(3)浮点乘法及浮点乘法及32位整数乘法指令位整数乘法指令6条条MPYSP MPYSPDPMPYSP2DPMPYDPMPYIMPYID (4)特殊的浮点运算指令特殊的浮点运算指令6条条 ABSSPABSDPRCPSPRCPDP(倒数倒数)RSQRSPRSQRDP(平方平方根倒数根倒数)(5)单双精度浮点数的比较判决指令单双精度浮点数的比较判决指令6条条 CMPLTSPCMPLTDPCMPGTSPCMPGTDPCMPEQSPCMPEQDP(6)双精度数据的读取存储指令双精度数据的读取存储指令LDDWSTDW 1.IEEE标准的浮点数表示法标准的浮点数表示法s代表数的符号,代表数的符号,0为正,为正,1为负为负e是指数阶码,视做无符号数是指数阶码,视做无符号数(0e255)f是尾数的分数部分是尾数的分数部分floatdouble32位单精度浮点数格式位单精度浮点数格式数的格式数的格式符号位符号位(s)指数指数阶码阶码(e)尾数的分数尾数的分数(f)代表的数代表的数值值规规格化数格化数x 0e255x(-1)s2(e-127)1.f非非规规格化数格化数x0非零非零(-1)s2(-126)0.f无无穷穷大数大数0 255 0+无无穷穷大大1 255 0 无无穷穷大大无效数无效数x 255 非零非零NaN(Not-a-Number)x 255 1xx.x QnaN(Quiet NaN)x 255 0 xx.x 和非零和非零SnaN(Signal NaN)符号符号十六十六进进制制值值十十进进制制值值备备注注NaN_out0 x7FFFFFFFQnaN(Quiet NaN)00 x000000000.0-00 x80000000-0.010 x3F8000001.020 x400000002.0LFPN0 x7F7FFFFF3.40282347e+38单单精度精度规规格化浮点数格化浮点数最大最大值值SFPN0 x008000001.17549435e-38单单精度精度规规格化浮点数正最小格化浮点数正最小值值LDFPN0 x0007FFFF1.17549421e-38单单精度非精度非规规格化浮点数最大格化浮点数最大值值SDFPN0 x000000011.40129846e-45单单精度非精度非规规格化浮点数正最小格化浮点数正最小值值一些特殊数的单精度浮点数的符号一些特殊数的单精度浮点数的符号 1+2-1+2-2+2-23=1+=1+1-2-23=1.99999988079071044921875 2127=3.40282346638528860e+3864位双精度浮点数格式位双精度浮点数格式数的格式数的格式符号位符号位(s)指数指数阶码阶码(e)尾数的分数尾数的分数(f)代表的数代表的数值值规规格化数格化数x 0e2047x(-1)s2(e-1023)1.f非非规规格化数格化数x0非零非零(-1)s2(-1022)0.f无无穷穷大数大数0 2047 0+无无穷穷大大1 2047 0 无无穷穷大大无效数无效数x 2047 非零非零NaN(Not-a-Number)x 2047 1xx.x QnaN(Quiet NaN)x 2047 0 xx.x 和非零和非零SnaN(Signal NaN)一些特殊数的单精度浮点数的符号一些特殊数的单精度浮点数的符号 符号符号十六十六进进制制值值十十进进制制值值备备注注NaN_out0 x7FFFFFFF FFFFFFFFQnaN(Quiet NaN)00 x00000000 000000000.0-00 x80000000 00000000-0.010 x3F800000 000000001.020 x40000000 000000002.0LFPN0 x7F7FFFFF FFFFFFFF1.7976931348623157e+308单单精度精度规规格化浮点数最大格化浮点数最大值值SFPN0 x00800000 000000002.2250738585072014e308单单精度精度规规格化浮点数正最小格化浮点数正最小值值LDFPN0 x0007FFFF FFFFFFFF2.2250738585072009e308单单精度非精度非规规格化浮点数最大格化浮点数最大值值SDFPN0 x00000000 000000014.9406564584124654e324单单精度非精度非规规格化浮点数正最小格化浮点数正最小值值2.C672x的浮点运算控制寄存器的浮点运算控制寄存器作用作用:(1)为为.L、.S和和.M单元的运算设置单元的运算设置浮点舍入方式浮点舍入方式;(2)包括一些字段用来记录指令执行中遇到的问题,包括一些字段用来记录指令执行中遇到的问题,以便检查,包括:以便检查,包括:源操作数源操作数src1和和src2是否是无效数是否是无效数NaN或非规格化数;或非规格化数;结果是否上溢、下溢、不准确、无穷大或者无效;结果是否上溢、下溢、不准确、无穷大或者无效;是否执行了除以零的操作;是否执行了除以零的操作;是否用了是否用了NaN源操作数作比较等。源操作数作比较等。FADCR2.C672x的浮点运算控制寄存器的浮点运算控制寄存器Implementation of Sum of Products(SOP)Implementation of Sum of Products(SOP)SOP is the key element for SOP is the key element for most DSP algorithms.most DSP algorithms.So lets write the code for So lets write the code for this algorithm and at the this algorithm and at the same time learn the C6000 same time learn the C6000 architecture.architecture.Two basicTwo basicoperations are requiredoperations are requiredfor this algorithm.for this algorithm.(1)(1)MultiplicationMultiplication(2)(2)Addition Addition Therefore two basicTherefore two basicinstructions are requiredinstructions are requiredY =Y =N N a an n x xn nn =1n =1*=a=a1 1 *x x1 1+a a2 2*x x2 2 +.+a aN N*x xNNMultiply(MPY)The multiplication of a1 by x1 is done in assembly by the following instruction:MPY a1,x1,YThis instruction is performed by a multiplier unit that is called“.M”Y =Y =N N a an n x xn nn =1n =1*=a=a1 1 *x x1 1+a a2 2*x x2 2 +.+a aN N*x xNNThe implementation in this The implementation in this module will be done in module will be done in assembly.assembly.Multiply(.M unit).M.MY =Y =4040 a an n x xn nn =1n =1*The.M unit performs multiplications in hardware MPY.Ma1,x1,Y Note:16-bit by 16-bit multiplier provides a 32-bit result.Note:16-bit by 16-bit multiplier provides a 32-bit result.32-bit by 32-bit multiplier provides a 64-bit result.32-bit by 32-bit multiplier provides a 64-bit result.Addition(.?).M.M.?.?Y =Y =4040 a an n x xn nn =1n =1*MPYMPY.M.Ma1,x1,proda1,x1,prodADDADD.?.?Y,prod,YY,prod,Y Add(.L unit).M.M.L.LY =Y =4040 a an n x xn nn =1n =1*MPYMPY.M.Ma1,x1,proda1,x1,prodADDADD.L.LY,prod,YY,prod,Y RISC processors such as the C6000 use registers to RISC processors such as the C6000 use registers to hold the operands,so lets change this code.hold the operands,so lets change this code.Register File-AY =Y =4040 a an n x xn nn =1n =1*MPYMPY.M.Ma1,x1,proda1,x1,prodADDADD.L.LY,prod,YY,prod,Y .M.M.L.LA0A0A1A1A2A2A3A3A4A4A15A15Register File ARegister File A.a1a1x1x1prodprod32-bits32-bitsY YLet us correct this by replacing a,x,prod and Y by the Let us correct this by replacing a,x,