资源描述
单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第二章,DSP,结构组成原理,1,数字信号处理器分类,数字信号处理器(,Digital Signal Processor,简称,DSP,)是一种专门用来实现各种数字信号处理算法的微处理器,。,DSP,可以分成专用的,DSP,和通用的,DSP,。,专用的,DSP,用来实现某些特定的数字信号处理功能,如数字滤波、,FFT,等,,不需要编程,,处理速度快;通用,DSP,则有完整的指令系统,通过编程来实现各种数字信号处理功能,,相对灵活。,2,数字信号处理器的特点,DSP,除了具备普通微处理器所强调的高速运算和控制功能外,针对实时数字信号处理,在处理器结构、指令系统、指令流程上具有许多新的特征,其特点如下:,(1),算术单元,具有硬件乘法器和多功能运算单元,硬件乘法器可以在单个指令周期内完成乘法操作,这是,DSP,区别于通用的微处理器的一个重要标志。多功能运算单元可以完成加减、逻辑、移位、数据传送等操作。新一代的,DSP,内部还包含多个并行的运算单元,以提高其处理能力。,针对滤波、相关、矩阵运算等需要大量乘和累加运算的特点,,DSP,的算术单元的乘法器和加法器,可以在一个时钟周期内完成相乘、累加两个运算。,DSP,可以同时进行乘、加、减运算,大大加快了,FFT,的蝶形运算速度。,3,(2),总线结构,传统的通用处理器采用统一的程序和数据空间、共享的程序和数据总线结构,即所谓的冯,诺依曼结构。,DSP,普遍采用了数据总线和程序总线分离的哈佛结构或者改进的哈佛结构,极大的提高了指令执行速度。片内的多套总线可以同时进行取指令和多个数据存取操作,许多,DSP,片内嵌有,DMA,控制器,配合片内多总线结构,使数据块传送速度大大提高。,4,(,3,)专用寻址单元,DSP,面向数据密集型应用,伴随着频繁的数据访问,数据地址的计算也需要大量时间。,DSP,内部配置了专用的寻址单元,用于地址的修改和更新,它们可以在寻址访问前或访问后自动修改内容,以指向下一个要访问的地址。地址的修改和更新与算术单元并行工作,不需要额外的时间。,DSP,的地址产生器支持直接寻址、间接寻址操作,大部分,DSP,还支持位反转寻址(用于,FFT,算法)和循环寻址(用于数字滤波算法)。,5,(,4,)片内存储器,针对数字信号处理的数据密集运算的需要,,DSP,对程序和数据访问的时间要求很高,为了减小指令和数据的传送时间,许多,DSP,内部集成了高速程序存储器和数据存储器,以提高程序和数据的访问存储器的速度。,(,5,)流水处理技术,DSP,大多采用流水技术,即将一条指令的执行过程分解成取指、译码、取数、执行等若干个阶段,每个阶段称为一级流水。每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等操作,从而在不提高时钟频率的条件下减少了每条指令的执行时间。,6,(,6,),DSP,与其它处理器的差别,数字信号处理器(,DSP,)、通用微处理器(,MPU,)、微控制器(,MCU,)三者的区别在于:,DSP,面向高性能、重复性、数值运算密集型的实时处理;,MPU,大量应用于计算机;,MCU,则适用于以控制为主的处理过程。,DSP,的运算速度比其它处理器要高得多,以,FFT,、自相关为例,高性能,DSP,不仅处理速度是,MPU,的,4,10,倍,而且可以连续不断地完成数据的实时输入输出。,DSP,结构相对单一,普遍采用汇编语言编程,其任务完成时间的可预测性相对于结构和指令复杂、严重依赖于编译系统的,MPU,强得多。,7,ADSP-TS201S,系统结构,8,9,ADSP-TS201S,系统构成,处理器内核(,Processor Core,),I/O,设备(,I/O peripherals,),10,ADSP-TS201S,内核结构图,11,处理器内核组成,双运算模块(,X,和,Y,),双逻辑运算单元(,J-IALU,和,K-IALU,),内部总线,数据对齐缓冲器,程序控制器(,Programmer Sequencer,),12,ADSP-TS201S I/O,设备结构图,13,ADSP-TS201S I/O,设备构成,外部总线,I/O,处理器,SOC,接口和,SOC,总线,定时器,DMA,控制器,FLAG,链路口控制器,外部端口,JTAG,端口,/Debug,端口(用于调试仿真),14,双运算模块,TS201S,包含两个运算模块,每个模块由下列模块组成:,通用寄存器组,算术逻辑单元(,ALU),通信逻辑处理单元(,CLU,),乘法器(,Mult,),移位器(,SHIFTER,),15,运算块结构,Register,File,32x32,D,A,B,Internal Buses 128 x 4,64,128,128,MUL,MAC,ALU,CLU,SHFT,CTRL&Dependency Checking,16,运算块寄存器,运算块,X&Y,均含有两种类型寄存器:,存储器映射寄存器,可通过相应地址直接进行访问;,非存储器映射寄存器,只能通过相关指令访问,主要服务于一些特殊指令的运行。,Compute Block X,Memory,Mapped,Reg File,ALU,MAC,SHFT,Unmapped,0,31,17,存储器映射寄存器,每个运算块有,32,个,32,位寄存器;,可以实现硬件互锁;,可以被所有传输指令访问,访问单位数据长度可以为,8/16/32/64,位。,XR 31,XR 0,.,.,.,.,32-,bits,X computation block,YR 31,YR 0,Y computation block,.,.,.,.,32-,bits,18,非映射寄存器,非存储器映射寄存器包括:,全局状态寄存器:,XSTAT,和,YSTAT,ALU(PRx),寄存器,乘法器,(MRx),寄存器,移位器,(BFOTMP),寄存器,ALU,Computation block X,Register,File,0,STATUS,ALU,Mult,Shift,PR,MR,BFOTMP,3,1,19,寄存器命名规则,_ _ R _,寄存器名称,寄存器宽度选择,,R#,或,R#:#,。,如:,R1,代表单寄存器(,32,位),,R1:0,代表双寄存器(,64,位),,R3,:,0,代表四寄存器(,128,位),运算数据类型选择,,B,(字节,/8,位),,S,(短字,/16,位),,none,(正常字,/32,位),,L,(长字,/64,位),,F,(浮点型,/32,位或,40,位),运算块选择,,X,,,Y,,,none/XY,注意最小标号的取值,20,算术逻辑单元(,ALU,),ADSP TS201,处理器内核中的,ALU,主要实现算数逻辑操作。,ALU,是从它的寄存器组中得到输入操作数,并将它的输出结果返回到寄存器组中。,ALU,的算术操作包括加法,减法和加,/,减法,其输入操作数可以是定点数也可以是浮点数据;,ALU,也能执行逻辑操作,其操作数只能是定点数据。另外它也可以执行数据转换操作,如对定点数据的扩展,/,压缩等。,21,算术逻辑单元(,ALU,),ALU,操作支持定点算术操作,其操作数宽度可以为,8-/16-/32-/64-,位,对应输出,8-/16-/32-/64-,位的结果;,ALU,支持定点的逻辑操作,其操作数宽度可以为,32-/64-,位,对应输出,32-/64-,位的结果;,ALU,支持浮点的算术操作,其操作数宽度可以位,32-/40-,位宽度,对应输出,32-/40-,的结果;要求在寄存器名前加上,F,。,ALU,支持定点的数据转换操作,其操作数宽度可以为,8-/16-/32-/64-/128-,位,当为,128-,位时智能用于,EXPAND,和,COMPACT,指令。,22,ALU,执行状态,状态标志保存在算术状态寄存器,XSTAT,和,YSTAT,中,程序通过判断这些标志可以控制程序的执行。,标志,定义,影响标志的操作,AZ,定点数为,0,或浮点数下溢出,所有,ALU,操作,AN,负数,所有,ALU,操作,AV,上溢出,所有算术操作,AC,进位,/,借位,所有定点操作;被浮点操作清零,AI,浮点无效操作,所有浮点操作;被定点操作清零,如果出现非法的浮点操作,此标志位将被置位,23,ALU,执行条件,常用判断条件:,标志,定义,标志设置,AEQ,ALU=0,AZ=1,ALT,ALU0,AN=1,和,AZ=0,ALE,ALU,0,AN,或,AZ=1,NAEQ,NOT(ALU=0),AZ=0,NALT,NOT(ALU0),AN=0,或,AZ=1,NALE,NOT(ALU),0,AN,和,AZ,0,24,ALU,静态标志,在程序控制器中有一个静态标志寄存器,SFREG,可以保存状态标志值,目的是供条件指令使用,如果使用了,SFREG,,那么在每个运算块中就有两个专用静态标志,X/YSCF0,和,X/YSCF1,寄存器。以下指令说明了如何将运算块的条件保留到静态标志寄存器中:,XSF0=XAEQ;,IF XSF0,DO XR5=R4+R3;,25,通信逻辑处理单元(,CLU,),内核包含两个,CLU,大多数,CLU,指令对,Trellis,寄存器(,TR,)和,Trellis,历史寄存器(,THR,)操作,CLU,用于完成专门的通信处理:,Viterbi,译码、,Turbo-cod,译码、码分多址(,CDMA,)、压扩运算和复数运算,CLU,运算只应用于定点数,26,乘法器(,Mult,),执行所有定点和浮点数据的乘法操作,包括定点数据的乘累加操作和浮点数据的复数乘法操作,Comp block X,ALU,Mult,Shift,Reg File,不同乘法操作中,Mult,支持的数据类型(不支持,8,位操作),定点小数和整数乘法和乘累加操作:两组,4,个,16,位输入操作数,结果为,4,个,16/32,位数;,2,个,32,位输入操作数,结果为,32/64,位数,浮点乘法操作:,2,个,32,位输入操作数,结果味,32,位浮点数;,2,个,40,位扩展精度输入操作数,结果为,40,位数,定点数据压缩操作:输入操作数,16/32/64,位,输出为,16/32,位,注:复数乘累加定义,复数由一个,32,位寄存器中的一对短字(,16,位),表示,操作数低位(,Rm_L,和,Rn_L,)表示实部,高位部分表示,(,Rm_H,和,Rn_H,),则复数乘累加定义如下,实部结果,=,(实,Rm_L,实,Rn_L,),-,(虚,Rm_H,虚,Rn_H,),虚部结果,=,(实,Rm_L,虚,Rn_H,),+,(虚,Rm_H,实,Rn_L,),27,乘法器指令选项,选项,选项代码,默认,有符号,/,无符号数,U,有符号数,整数,/,小数,I,小数,清零,C,未清零,截断,T,不截断,清零,/,取舍,CR,未清零,未取舍,饱和,S,未饱和,共轭,J,非共轭,28,结果溢出存储器(,MR4,),MR4,寄存器,保留,MAC,操作,的溢出位。寄存器域按照所使用的寄存器和结果的长短变化,:,MR1:0,MR3:2,16,MR4,31,0,MR0,MR3,16,MR4,31,0,8,24,MR2,MR1,MR0,MR3,16,MR4,31,0,8,24,MR2,MR1,4,12,20,28,MR0,MR2,MR1,MR3,H,L,H,L,H,L,H,L,L,=low short field,H,=high short field,结果是长字的,MR4,结果是正常字的,MR4,结果是短字的,MR4,29,乘法器执行状态,执行状态标志保存在算术状态(,XSTAT,和,YSTAT,)寄存器中,程序使用状态标志控制条件指令执行和触发软件意外中断。,标志,定义,影响标志的操作,MZ,定点数为,0,或浮点数下溢出,所有,Mult,操作,MN,负数,所有,Mult,操作,MV,上溢出,所有,Mult,操作,MU,下溢出,所有浮点操作;被定点操作清零,MI,浮点非法操作,所有浮点操作;被定点操作轻零,30,乘法器执行条件,标志,定义,标志设置,MEQ,Mult=0,MZ=1,MLT,Mult0,MN=1,和,MZ=0,MLE,Mult,0,MN,或,MZ=1,NMEQ,NOT(,Mult,不等于,0),MZ=0,NMLT,NOT(,Mult,0),MN=0,或,MZ=1,NMLE,NOT (,Mult,0),MN,和,MZ,0,31,移位器(,Shifter,),移位器操作包括:,移位,/,循环移位,位处理,位段处理,位流处理,数据转换,对定点数据操作时,输入操作数可以为,64,位长字,,1,个或,2,个,32,位正常字,,2,个或,4,个,16,位短字,,4,个或,8,个字节。,移位器有,4,个输入和,4,个输出端口,,ALU,和乘法器有,2,个输入输出端口,所以:,对于有,3,个输入操作数的移位器指令,不能与其他计算块操作并行执行,对,FDSP,,,MASK,和,PUTBIT,指令能够,允许,3,个寄存器操作数进入移位器,使用,3,个计算块端口,输出结果放在相同的端口内。,Comp block X,ALU,Mult,Shift,Reg File,32,移位器操作,移位器操作在运算块寄存器组和移位寄存器,BFOTMP,(移位器的内部寄存器),但,BFOTMP,仅用于,PUTBITS,指令。,移位器操作的输入操作数可以是寄存器,Rm,输入数据,也可以为指令中的立即数;移位位数为正数时表示左移,移位位数为负数时表示右移。,当操作包含,3,个输入操作数时,前两个操作数为寄存器组,Rm,和,Rn,,第三个操作数为可读,/,修改,/,写(,RMW,)寄存器,移位操作的移位值若来自寄存器,Rn,,则,Rn,最右边的位段就是移位值,移位位数由输出操作数宽度决定:(,Rn,移位值以外的位被屏蔽,),长字输出取,Rn,右,8,位,正常字输出取,Rn,右,7,位,短字和字节输出取,Rn,右,6,位,移位操作的格式:,XR5=ASHIFT R4 BY R3;,33,移位器执行状态,执行状态标志保存在算术状态(,XSTAT,和,YSTAT,)寄存器中,程序使用状态标志控制条件指令执行。标志在每个操作结束时更新以便下一个指令段应用,标志,定义,描述,SZ,移位器定点结果为,0,所有移位操作,SN,移位器结果为负,所有移位操作,BF1-0,移位器块浮点,只有,BKFPT,指令,34,移位器执行条件,常用判断条件:,条件,描述,标志设置,SEQ,等于零,SZ=1,SLT,小于零,SN,和,SZ=1,NSEQ,不等于零,SZ=0,NSLT,不小于零,SN,和,SZ=0,35,ADSP-TS201S DSP,寻址,超级哈佛总线结构,提供四套总线对程序,/,数据存储空间进行管理,J/K,总线传输数据,32/128,I,总线传输指令,32/128,S,总线实现外部主机或外部处理器对本处理器内部存储器的访问,21/128,寻址均由,IALU,完成,由,IALU,产生访问地址,内核包含两个,IALU,,每个,IALU,包含一个寄存器组和一个专用于循环缓冲寻址的寄存器,IALU,可以控制未排队的存储器访问操作的数据排队缓冲(,DAB,),36,总线、,IALU,和,DAB,示意图,J,-,B,U,S,D,A,T,A,I,A,B,P,C,B,T,B,A,D,D,R,F,E,T,C,H,Y,C,O,M,P,U,T,E,B,L,O,C,K,S,J,-,B,U,S,A,D,D,R,K,-,B,U,S,D,A,T,A,K,-,B,U,S,A,D,D,R,I,-,B,U,S,D,A,T,A,I,-,B,U,S,A,D,D,R,I,N,T,E,G,E,R,K,A,L,U,I,N,T,E,G,E,R,J,A,L,U,3,2,3,2,3,2,X,3,2,3,2,X,3,2,D,A,B,1,2,8,1,2,8,3,2,1,2,8,3,2,1,2,8,3,2,1,2,8,D,A,T,A,A,D,D,R,E,S,S,G,E,N,E,R,A,T,I,O,N,P,R,O,G,R,A,M,S,E,Q,U,E,N,C,E,R,X,C,O,M,P,U,T,E,B,L,O,C,K,D,A,B,1,2,8,1,2,8,37,IALU,寄存器,每个,IALU,包含,32,个数据寄存器和,8,个专用的循环缓冲寻址寄存器,均为,32,位的存储器寄存器映射寄存器,J-IALU,寄存器组:,J31J0,,,K-IALU,寄存器组:,K31K0,。除,J31,和,K31,外都是通用的,且只用于保存整型数据。,J31,和,K31,为,32,位状态寄存器,也可以写成,JSTAT,和,KSTAT,当,IALU,用于算术、逻辑和函数运算时这两个寄存器内容认为是零。,当,IALU,用于数据载入、存储或移位操作时,这两个寄存器作为状态寄存器,里面的内容将不被清除。,专用循环缓冲寄存器(用于设置循环缓冲区的基地址和长度)与每个,IALU,寄存器组的前,4,个通用寄存器共同管理,8,个循环缓冲区,Register,File,J/KR30:0,0,31,J/KB3:0,J/KL3:0,J/KStat,30,J and K IALUs,ALU,38,IALU,执行状态,IALU,运算会更新,IALU,状态寄存器,JSTAT,和,KSTAT,标志位,程序根据这些标志位控制条件指令执行。,标志,定义,影响标志位的操作,JZ,J-IALU,零,所有,J-IALU,算术,/,逻辑,/,函数运算,JN,J-IALU,负,所有,J-IALU,算术,/,逻辑,/,函数运算,JV,J-IALU,溢出,所有算术运算,JC,J-IALU,进位,所有算术运算,KZ,K-IALU,零,所有,K-IALU,算术,/,逻辑,/,函数运算,KN,K-IALU,负,所有,K-IALU,算术,/,逻辑,/,函数运算,KV,K-IALU,溢出,所有算术运算,KC,K-IALU,进位,所有算术运算,39,IALU,执行条件,常用判断条件:,条件,描述,标志位设置,条件,描述,标志位设置,JEQ,J-IALU,等于零,JZ=1,KEQ,J-IALU,等于零,KZ=1,JLT,J-IALU,小于零,JN=1,和,JZ=0,KLT,J-IALU,小于零,KN=1,和,KZ=0,NJE,J-IALU,小于或等于零,JN,或,JZ=1,NKE,J-IALU,小于或等于零,KN,或,KZ=1,NJEQ,NOT(J-IALU,不等于零,),JZ=0,NKEQ,NOT(J-IALU,不等于零,),KZ=0,NJLT,NOT(J-IALU,不小于零,),JN=0,或,JZ=1,NKLT,NOT(J-IALU,不小于零,),KN=0,或,KZ=1,NJLE,NOT(J-IALU,不小于或不等于零,),JN,和,JZ=0,NKLE,NOT(J-IALU,不小于或不等于零,),KN,和,KZ=0,40,IALU,数据寻址和传输操作,IALU,数据寻址指令用于寄存器载入(读取)和存储数据,也可对存储器进行读和写访问,两种寻址方式:直接和间接,41,直接和间接寻址,直接寻址:,使用,J31,,立即数作为修正值,指针为预修正的,修正后的地址作为访问地址,YR1=J31+0 x00015F00;/J31,的算术用法,间接寻址,用寄存器或立即数作为修正值,两种间接寻址方式,预修正,使用,+,,访问后指针寄存器内容不变,XR0=J0+J1;/*,从存储位置,J0+J1,处读一个,32,位的字放入,XR0*/,后修正,使用,+=,,访问后指针寄存器被修正值更新,XR0=J0+=J1;/*,从,J0,处读一个,32,位的字放到,XR0,中*,/,42,正常,/,广播式存储器访问,正常的读,/,写访问,指令中需要指定目的寄存器,/,源寄存器,目的,/,源存储器的大小与,IALU,访问的操作数大小匹配时,正常访问发生,如:,单寄存器(,Rs,),32,位操作数,双寄存器(,Rsd,),64,位操作数,广播式存储器访问,对载入运算块数据寄存器中的数据进行访问,将指令中指出的相同数据载入,2,个运算块中多个不同的目的寄存器,43,合并式存储器访问,合并式存储器访问,对载入或存储在运算块数据寄存器中的数据进行访问,将指令中所指出的不同数据载入到两个运算块中相同的目的寄存器,44,数据排队缓冲(,DAB,)访问,用于访问未排队的数据缓冲(,X-DAB,)和(,Y-DAB,),可以执行四字(,128,位)数据的存储器访问,DAB,是一个四字,FIFO,,使用单个四字缓冲区保存超过,4,字宽度的数据,DAB,访问用于循环缓冲区寻址或线形寻址重复访问某个存储区。只能使用,J/K0,J/K3,,使用前要设置好循环寻址的寄存器,线性寻址设置长度为零。,45,循环缓冲寻址,循环缓冲区是一个地址范围,包含了,IALU,依次重复访问的数据,以循环模式使指针回转,从而实现重复访问该地址范围。,为实现对一个循环缓冲区的寻址,,IALU,令指针指向整个缓冲区,每次访问后用一个正,/,负修正值修改和更新指针,若指针落到缓冲区外,,IALU,从此值加,/,减缓冲区地址长度,使指针回转指到缓冲区起始部分。,IALU,用寄存器堆和专用循环缓冲寻址寄存器完成对循环缓冲区的寻址:,指针寄存器包含,IALU,在地址总线的输出值,用,Jm/Km,表示,可以为,J-IALU,中的,J30,或,K-IALU,中的,K30,。,修正值可以为立即数,也可以为,IALU,中寄存器内的值,但都要小于循环缓冲区的长度。,长度寄存器用于设置循环缓冲区的大小以及指针寄存器经过的地址范围,长度与指针寄存器相对应,,J0,对,JL0,,,K0,对,KL0,。,基址寄存器存储缓冲区的基地址,与指针寄存器相对应,,J0,对,JB0,。,46,位反序寻址,通过位反序进位操作符(,BR,)支持位反序寻址:,R10=BR J0+=J10;,运算时向右进位,两点注意:,位反序寻址不会溢出,因此不会影响,JV,和,KV,标志位,位反序寻址只能通过,J30,或,K30,完成,47,立即数扩展操作,IALU,指令允许立即数作为操作数,对于数据寻址指令,如果立即数大于,8,位,或者对于通用寄存器载入指令立即数大于,15,位:则,DSP,使用两个指令段,一个段用于指令,一个段用于扩展数据,DSP,自动支持立即数扩展,一个单指令行中只能由一个立即数扩展,48,程序控制器,指令排队缓冲(,IAB,),程序指针(,PC,),地址跳转缓冲(,BTB,),中断管理器,取地址机制,49,程序控制器概述,程序控制器功能,管理程序结构和程序流:,提供下一条要执行的指令的地址,维护一个指令对齐缓冲区,(IAB),用于高速获取等待执行的指令。,减少分支目标缓冲区,(BTB),分支延迟,以保证条件和非条件指令的有效执行。,减少循环数。,估计条件。,处理中断。,50,程序控制器详细结构,存储地址获取单元,分支目标,缓冲,(,BTB,),中断响,应单元,程序计数,器(,PC,),32,bit fetch address,指令对齐缓冲(,IAB,),128-,bit,指令,ALU,MAC,Shifter,IALU,Memory,Interrupts,增量,中断,51,多程序流(结构)支持,线性流,循环,跳转,子程序,中断,IDLE,(空操作),I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,L,o,o,p,N,T,i,m,e,s,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,R,T,I,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,R,E,T,S,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,C,A,L,L,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,A,d,d,r,e,s,s,:,n,n,+,1,n,+,5,n,+,4,n,+,3,n,+,2,L,i,n,e,a,r,F,l,o,w,J,U,M,P,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,J,u,m,p,S,u,b,r,o,u,t,i,n,e,I,n,t,e,r,r,u,p,t,I,d,l,e,I,D,L,E,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,s,t,r,u,c,t,i,o,n,I,n,t,e,r,r,u,p,t,CJMP,RTI/RETI,LC0,=N,52,程序控制器各模块说明,程序计数器(,PC,):对线性流增加取指地址,对非线性流在需要时修改取指地址。,跳转地址缓冲(,BTB,):高速缓存分支地址以减少在预测分支上的流水线开销。,取址单元:把地址放到总线上,以便从存储器中去下一个地址数据。,指令排队缓冲(,IAB,):从存储器接受四字指令缓存在,IAB,中,并把这些指令分配到计算块、,IALU,和程序控制器中。,53,程序控制器操作,程序控制器操作分线性执行(顺序执行地址指令)和非线性操作(转移到一个非顺序地址执行),程序控制器的控制寄存器(,SQCTL,)和程序控制器的状态寄存器(,SQSTAT,)用于对程序控制器进行设置。,54,循环执行,程序控制器支持零开销或者接近零开销的循环执行。循环使程序重复不断地执行一组指令,直到满足一个特殊的条件才停止,然后程序继续执行循环之外的下一个顺序指令。,为了建立一个循环,程序使用一个循环计数寄存器,一个循环计数减指令,一个条件跳转指令:,LC0=N;/*N=10,建立循环数*,/,_,start_loop,:,NOP;/*,任何指令*,/,IF NCLOE,,,jump _,start_loop,;/*,在循环末尾处的条件测试*,/,为了使循环条件测试和计数递减部花费指令周期,有两个专用的循环计数及存取器(,LC0,和,LC1,),还有特殊的循环计数条件:,以计数器没有减为零为条件:,IF NLC0E,和,IF NLC1E,以计数器减为零为条件:,IF LC0E,和,IF LC1E,55,指令流水操作,TS201S,有,10,级深度的指令流水,每级流水允许一个周期内运行最多,4,个指令的指令行。,指令流水的前,4,级(,F1/2/3/4,)称为取指单元流水,只要,IAB,中少于,3,个四字,取指单元就会向,IAB,中填指令。,PD/D/I/A,四个流水线级被称为整型,ALU,级。,EX1/2,称为计算块流水。,56,指令流水操作,57,指令列队缓冲(,IAB,),Instruction Alignment Buffer,是六级,4,字宽的,FIFO,,当程序控制器从存储器中取一个四指令字时,这四字写到,IAB,下一个入口中,如果在,IAB,中至少有一个完整的指令行,程序控制器就可以执行它。,主要功能:,缓存取指单元流水的输入(被取的指令),保持取指单元与流水中其它执行单元的独立性。,排队输入,为完整的指令行执行做准备。,将指令分发到执行单元,IALU,、计算块和程序控制器。,58,分支目标缓冲(,BTB,),Branch Target Buffer,用于减少或消除指令流水线中执行分支所消耗的时间,有,32,个,4,路共,128,个入口的高速缓存来存储分支目标地址,设置,SQCTL,寄存器中的,BTBEN,位可以激活,BTB,。,对于需要永久缓存的程序部分,程序必须使用,SQCTL,的,BTBLK,位锁定,BTB,,设置,BTBLK,位后,,BTB,把每个新的入口放入处于锁定状态的,BTB,中。,59,存储器组织,寻址空间,内部存储器组织,寄存器,60,寻址空间,4GB,寻址空间,对共享总线的所有单元均适用,统一存储器映射空间,片内和片外存储器都有唯一的地址空间,整个寻址空间构成:,主机寻址空间:用于片外主机接口的地址映射空间,外部存储块空间:用于与处理器外围设备存储器接口的地址映射空间,包括通用的外部存储器设备和,SDRAM,存储器,多处理器空间:用于多处理器构成的系统中的各个处理器之间相互共享处理器的内部存储空间映射,片内存储空间:定义了处理器内部存储空间的地址映射,61,寻址空间映射,62,主机寻址空间,主机寻址空间是当前处理器被当做从机访问时使用的地址空间,对主机寻址空间访问由系统控制寄存器(,SYSCON,)中的主机位定义,可以使用流水协议或慢速传输协议进行访问和数据传输,地址映射范围:,0 x800000000 xFFFFFFFF,寻址空间大小为,2GB,主机寻址空间地址定义:,位,名称,说明,ADDR300,地址线,访问寻址空间的地址,ADDR31,主机寻址空间选择,ADDR31=0,,非主机寻址空间,ADDR31=1,,主机寻址空间,63,外部存储器寻址空间,分为两个部分:,SDRAM,寻址空间和外部通用存储空间,SDRAM,寻址空间:分为四个子区,每个子区寻址范围,64M,字,由外部引脚 选择决定,外部通用存储空间用于访问通用的外围设备和存储器,分为两个子区,每个子区寻址范围,128M,字,有外部引脚 决定。,64,外部存储器寻址空间定义,位,名称,说明,ADDR250,地址线,访问寻址空间的地址,ADDR3026,外部存储器寻址空间选择,01100,外部通用存储空间子区,0,01110,外部通用存储空间子区,1,10000SDRAM,空间子区,0,10001,保留,10100SDRAM,空间子区,1,10101,保留,11000SDRAM,空间子区,2,11001,保留,11100SDRAM,空间子区,3,11101,保留,ADDR31,主机寻址空间选择,ADDR31=0,,非主机寻址空间,65,多处理器寻址空间,将内部存储空间通过处理器器,ID,号(,07,)映射到多处理器空间不同的地址空间,如果某个处理器对多处理器寻址空间中的某个地址进行访问,则该处理器就是访问了相应处理器的内部存储单元。,多处理器系统中方便各个处理器实现存储器共享和相互访问,66,多处理器寻址空间的地址划分,位,名称,说明,ADDR250,地址线,访问寻址空间的地址,ADDR3026,多处理器寻址空间选择,00011,多处理器广播空间,00100,多处理器,0,空间,00101,多处理器,1,空间,00110,多处理器,2,空间,00111,多处理器,3,空间,01000,多处理器,4,空间,01001,多处理器,5,空间,01010,多处理器,6,空间,01011,多处理器,7,空间,ADDR31,主机寻址空间选择,ADDR31=0,,非主机寻址空间,67,处理器内部存储空间,用于内部数据存储、传输和运算,对内部存储空间访问不通过外部总线,内部存储空间由内部存储模块和通用寄存器组成,68,内部存储空间地址定义,位,名称,说明,ADDR160,地址线,访问寻址空间的地址,ADDR2017,内部存储器块选择,0000,存储块,0,0001,保留,0010,存储块,2,0011,保留,0100,存储块,4,0101,保留,0110,存储块,6,0111,保留,1000,存储块,8,1001,保留,1010,存储块,10,1011,保留,ADDR3121,寻址空间选择,00000,,内部寻址空间,69,存储器块物理结构,内部嵌入了,24M,的,DRAM,(,eDRAM,),分为,6,个存储块,每块,4Mbit,,配置成,128K32bit,,可用来存储程序和数据,每个存储块分为两个半区,每个半区包含两个子列,每个子列(,1Mbit,),且每个子列带有一个,2Kbit,的页面缓冲器,六个存储块都通过交叉连接器连接,4,对,128,位宽的内部总线,因此处理器可以在一个时钟周期内实现对,4,个存储块的访问,注:,DRAM,的英文全称是,“Dynamic RAM”,,即,动态随机存储器,。,DRAM,只能将数据保持很短的时间。为了保持数据,,DRAM,必须隔一段时间刷新(,refresh,)一次。如果存储单元没有被刷新,数据就会丢失。,DRAM,用于通常的数据存取。,70,存储块的物理结构,71,存储器块逻辑组织,存储块(,Memory Block,),每块大小,4Mbit,,每个块带有缓冲器、高速缓存和控制器,包含两个半区。,半区(,Half-Block,),根据地址将每个存储块分为两个半区:存储块前,/,后半区,每个半区,2Mbit,,包含两个子列,带有一个缓冲器组(预取熟缓冲、读缓冲和回存缓冲)。,子列(,Sub-Array,),容量,1M,(,32K32bit,),前半区包含子列,0,和,1,,后半区包含子列,2,和,3,,每个子列分割成,512,个页面,含有一个页面缓冲器,不同子列交错排列。,页面(,Page,),容量,2K,(,6432bit,),72,存储器块逻辑组织关系图,Half-Segment 0,of,Segment 0,Half-Segment 1,of,Segment 0,Page 0 Sub-Array 0,Page 0 Sub-Array 1,Page 1 Sub-Array 0,Page 1 Sub-Array 1,Page 511 Sub-Array 0,Page 511 Sub-Array 1,Page 0 Sub-Array 2,Page 0 Sub-Array 3,Page 1 Sub-Array 2,Page 1 Sub-Array 3,Page 511 Sub-Array 2,Page 511 Sub-Array 3,0,x00000,0 x,1,0000,0 x1FFFF,0,x00000,0 x00040,0 x00080,0 x000C0,0 x0FF80,0 x0FFC0,0,x10000,0 x10040,0 x10080,0 x100C0,0 x1FF80,0 x1FFC0,73,ADSP TS201S,的,I/O,资源,中断,DMA,差分链路口,定时器,外部端口,EPROM/Flash,接口,SDRAM,接口,多处理器接口,74,中断,TS201,支持多种类型中断,可有内部产生,也可由外部产生,中断可以使,DSP,与外部事件同步工作,用于故障检测,系统调试,外部同步控制等。,大多数中断为专用的,但有,4,个外部中断引脚(,IRQ03,)和一个中断寄存器来支持通用中断。,每个中断在中断向量表(,IVT,)中都有一个向量寄存器与之对应,75,中断,76,中断源,中断源从结构上分为硬件中断和软件中断,硬件中断:,仿真器中断,复位中断,外部输入中断,定时器中断,链路服务请求中断,,DMA,控制中断,向量中断,硬件错误中断,总线锁定中断,软件中断:,特别指令和软件引起的中断,具有较高的优先级,77,中断向量,每个中断都对应一个中断向量寄存器,这个寄存器存储了中断服务程序的入口地址,所有中断向量寄存器文件一般就是指中断向量表,(,IVT Interr
展开阅读全文