您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 营销创新 > 第三章Blackfin的寻址方式及指令系统(电子科技大学).
BlackfinDSP的寻址方式及指令系统本章参考书:Blackfin®ProcessorProgrammingReference,内核结构(知识回顾)DSP技术3two16-bitmultiplierstwo40-bitaccumulatorstwo40-bitarithmeticlogicunits(ALUs)four8-bitvideoALUsone40-bitshiftereight32-bitregistersor16independent16-bitregisters存储器结构(知识回顾)所有资源,如内部存储器、外部存储器、I/O控制寄存器都统一用32位地址映射到4GB空间L1存储器由内核直接访问,性能最高外部存储器通过ExternalBusInterfaceUnit(EBIU)访问DMA可以提供高带宽的数据搬移。它可在内部存储器和外部存储器之间提供代码及数据的块传输DSP技术4内部存储器:每个Blackfin处理器包含3个块的片内存储器,内核对这些存储器可以进行高速访问L1指令存储器,由SRAM和cache组成。该存储器可以被处理器全速访问。L1数据存储器,由SRAM和(或)cache组成。该存储器可以被处理器全速访问。L1高速暂存RAM,该存储器可与L1存储器以相同的速度访问,但它只能用作数据SRAM,而不能配置成cache。L2存储器,容量比L1大,访问性能比L1稍低,作为多核之间的共享内存,可以存放数据和指令,但不能用作cacheDSP技术5外部存储器:通过外部总线扩展器ExternalBusInterfaceUnit(EBIU)进行访问。它是一个16位总线接口,可以与多种类型的存储器进行无缝连接,如SDRAM、flashmemory、EPROM、ROM、SRAM、memory-mappedI/O设备。I/O内存空间:Blackfin没有定义独立的I/O空间,所有I/O设备的控制寄存器都通过32位地址映射到统一的4GB地址空间。DSP技术6RegisterFiles(知识回顾)处理器的运算单元定义有3个寄存器组——DataRegisterFile,PointerRegisterFile,TheDAGregisters数据寄存器:用于接收从数据总线输入的操作数以及保存运算单元的运算结果指针寄存器:存放地址指针地址发生寄存器:这是一组专门的寄存器,用于管理在数字信号处理运算过程中的循环缓冲器,实现地址产生的零开销DSP技术7地址算术单元寄存器组DSP技术8数据运算单元寄存器组:R0~R7操作举例32位访问:R2=R1+R2;16位访问:R2.L=R1.H*R0.L在寄存器组与L1数据存储器之间连接有3组32位的独立数据总线,包括2个Load,和1个StoreDSP技术9累加器寄存器:A0~A1结构16位:An.L,An.H8位扩展位:An.X32位:An.W40位:AnDSP技术10操作举例A0=A1;/*40-bitmove*/A1.W=R7;/*32-bitmove*/A0.H=R5.H;/*16-bitmove*/R6.H=A0.X;/*read8-bitvalueandsignextendto16bits*/DSP技术11算术逻辑单元ALU2个ALUs实现定点数据的算术及逻辑运算。ALU定点指令对16-,32-,and40-bit的操作数进行运算,得到16-,32-,or40-bit的定点输出。ALU指令包括:寄存器加减立即数加减乘法器结果加减逻辑运算:AND,OR,NOT,XOR,bitwiseXOR,Negate函数运算:ABS,MAX,MIN,四舍五入,除法DSP技术12乘累加单元(MAC)2个乘法器(MAC0和MAC1)实现定点乘法和乘累加运算。乘法器实现两个16位数相乘,得到32位结果,乘法结果可用于累加器进行40位的加减运算。乘法运算乘加运算(结果可舍入)乘减运算(结果可舍入)DSP技术13桶形移位寄存器BarrelShifter桶形移位寄存器实现16-,32-,or40-bit的移位运算。包括:算术移位,逻辑移位,旋转,以及比特的测试、置位、封装、解封装、指数位检测等。DSP技术14程序控制器PROGRAMSEQUENCER程序控制器控制程序流并提供处理器要执行的下条指令的地址。程序流大部分是线性的,此时处理器顺序地执行程序指令。当程序采用非顺序结构时,线性程序流会发生改变,非顺序结构包括:循环子程序跳转中断和异常空闲DSP技术15地址算术单元ADDRESSARITHMETICUNITAAU负责保证在内存和内核寄存器之间进行可靠的数据传输。它可以独立地进行地址运算,以免去数据运算单元负担地址运算。DSP技术16AAU使用数据地址产生器计算数据的存取地址DSP技术17AAU实现多种功能以减小数据访问的开销产生地址:在数据访问期间提供数据地址产生地址后自动修改:提供数据搬移时的地址,并为下一次搬移自动增减地址产生偏移地址:提供相对于某个基地址的偏移量,不改变原始地址指针修改地址:增减地址,不进行数据搬移位逆序地址:在数据搬移时提供位逆序地址DSP技术18DAG的寄存器索引寄存器I[3:0]:无符号32位,保存一个指向存储器的地址,如R3=[I0]变址寄存器M[3:0]:有符号32位,在寄存器数据搬移时,提供I寄存器的增量,如R0=[I0++M1]基址和长度寄存器B[3:0]和L[3:0]:无符号32位,Bn和Ln设置一个循环缓冲器的起始地址和寻址范围,Bn、Ln及In相同下标为相关联的一组,公共完成循环寻址指针寄存器P[5:0],FP,USP,SP:无符号32位指针寄存器,在不同的指令中操作和使用。堆栈指针SP仅在监控模式下可以访问,用户堆栈指针USP在用户模式下是可以访问的DSP技术19BLANKFIN指令集简介DSP技术20DSP技术21Blackfin指令集特点(1)Blackfin处理器系列汇编语言指令集使用易于编程和可读性强的代数语法。采用专门调整的灵活的高密度编码的指令,这些指令被编译后只占用非常小的存储空间。指令集还提供了多功能指令,以使在一个指令中能够使用多个处理器内核资源。除许多微控制器上常见的功能外,指令集编译C和C++源代码时效率非常高。指令集还支持用户(算法/应用代码)和管理员(O/S内核,设备驱动,调试器,ISRs)两种运行模式,允许对处理器内核资源的多级访问。DSP技术22Blackfin指令集特点(2)汇编语言采用了处理器独特的体系结构,具有以下优点:无缝集成DSP/CPU特征,对8位和16位操作进行了优化。并发加载/存储的改进哈佛体系结构,每个周期支持2个16位MAC或4个8位ALU+2个加载/存储+2个指针更新。所有的寄存器、I/O、和存储器被映射成为统一4GB存储空间,提供了一个简化编程模式。微控制器特征,如任意位和位域操作,插入和提取,对8位、16位和32位数据类型上的整数操作,独立的用户和管理员堆栈指针。代码密度增强,包括混合的16和32位指令(无模式转换和代码分离)。常用指令以16位编码。DAG的寻址DSP技术23DAG寻址方式汇总帧和堆栈指针循环缓冲寻址位逆序寻址索引和指针寄存器的索引寻址自动增减寻址预修改堆栈指针寻址立即数偏移地址的索引寻址后修改寻址24DSP技术不同位宽的寻址Blackfin是按字节编址的,但32-,16-,8-bit的访问必须是32-,16-,8-bit对齐的,对应的DAG寄存器的增量为4,2,1。32比特访问:R0=[P3++],访问后P3的增量为416比特访问:R0.L=W[I3++],访问后I3的增量为28比特访问:R0=B[P3++](Z),访问后P3的增量为1,字节值可以零扩展/符号扩展到32位DSP技术25帧和堆栈指针很多时候,FP和SP可以像普通的P寄存器一样来操作,在Load和Store指令中它们与通用指针类似:R1=B[SP](Z)FP和SP还有其特殊的功能,FP作为帧指针可以扩展16位编码的Load/Store操作的寻址范围;SP作为堆栈指针在堆栈操作的指令中发挥作用。DSP技术26SP堆栈指针分为用户堆栈指针和监控堆栈指针。用户模式下:只能访问用户堆栈指针USP,但汇编程序中的访问别名仍为SP监控模式下:可以访问用户堆栈指针USP,和监控堆栈指针SP27DSP技术一些Load/Store指令专用FP和SP来操作FP-索引Load/Store,扩展了16位编码的加载/保存操作的寻址范围堆栈的Push/Pop指令链接/解除链接(Link/Unlink)指令,他们控制堆栈帧空间并为该空间管理FP28DSP技术索引和指针寄存器的索引寻址索引寻址使用I寄存器或者指针寄存器中的值作为有效地址R0=[I2];/*加载32位值*/R0.H=W[I2];/*加载16位值*/R0=B[I2];/*加载8位值*/[P1]=R0;/*保存32位值*/W[P1]=R0;/*保存16位值*/B[P1]=R0;/*保存8位值*/DSP技术29在进行8和16位Load操作时可以进行符号位扩展或者零扩展。例如,假设P1指向的地址中的16位值为0x8080,则R0=W[P1](Z);/*R0=0x00008080*/R1=W[P1](X);/*R1=0xFFFF8080*/R2=B[P1](Z);/*R2=0x00000080*/R3=B[P1](X);/*R3=0xFFFFFF80*/DSP技术30索引寻址可以支持立即数偏移量,这种寻址方式允许程序可以利用一个数据表的基地址,来获取数据表中的数据。而这个寻址过程中基地址指针的值不会被修改。例如,假设P1=0x64008000,则[P1+n]访问的是0x64008000+n这个地址上的值。其中,根据访问的位宽,P1+n应该是位对齐的,否则会触发一个异常事件。DSP技术31自动增减寻址自动增减寻址会在访问后自动更新指针寄存器或者I寄存器。增量大小根据访问的位宽决定,32、16和8比特访问时指针的增量分别为4、2、1。8和16比特的读操作可以指定目标寄存器为符号扩展或零扩展指针寄存器可以用于8、16和32比特访问,而I寄存器只能用于16和32比特访问DSP技术32举例R0=W[P1++](Z);从P1指向的地址加载一个16位的值到R0,高位零扩展。访问后P1加2R0=[I2--];从I2指向的地址加载一个32位的值到R0。访问后I2减4DSP技术33预修改堆栈指针寻址预修改寻址只用于堆栈指针SP它是在使用SP之前先对SP进行修改仅支持32位操作举例:[--SP]=R0;将R0压入堆栈DSP技术34后修改寻址后修改寻址使用I寄存器或者P寄存器的值作为有效地址,然后通过另一个寄存器的值来修改它。P寄存器可以通过其它的P寄存器来修改I寄存器可通过M寄存器来修改这类指令不支持P寄存器作为目的寄存器,也不支持字节寻址DSP技术35后修改寻址举例R5=[P1++P2];从P1指向的地址Load一个32位数到R5,然后P1=P1+P2R2=W[P4++P5](Z);从P4指向的地址Load一个16位值到R2,高位零扩展,然后P4=P4+P5R2=[I2++M1];从I2指向的地址Load一个32位数到R2,然后I2=I2+M1DSP技术36循环寻址索引寄存器Ix:是输出到地址总线上的值变址寄存器Mx:是Ix的增量(步长)基址寄存器Bx:缓冲区起始地址长度寄存器Lx:缓冲区长度缓冲区的边界判断和地址的计算方法如下:
本文标题:第三章Blackfin的寻址方式及指令系统(电子科技大学).
链接地址:https://www.777doc.com/doc-2120084 .html