首页> 中国专利> 支持SIMD的32位三发射的数字信号处理器

支持SIMD的32位三发射的数字信号处理器

摘要

本发明公开了一种支持SIMD的32位三发射的数字信号处理器。本发明包含3条并行发射的流水线:数据存取流水线、整数运算流水线、向量运算流水线,每条流水线具备独立的译码和执行单元,并支持SIMD操作。本发明主要由程序存储器接口单元、数据存储器接口单元、指令取指单元、流水线控制单元、系统总线、数据存取流水线单元、整数运算流水线单元、向量运算流水线单元、数据寄存器、地址寄存器、向量寄存器、协处理器接口单元、浮点运算单元经电路连接组成。本发明支持3条流水线并行执行,提高了DSP的并行处理能力;支持单周期并行执行4组16位的乘加操作,支持5组数据运算和1组数据存取操作同时执行,提升了DSP的数据处理能力。

著录项

  • 公开/公告号CN102750133A

    专利类型发明专利

  • 公开/公告日2012-10-24

    原文格式PDF

  • 申请/专利号CN201210205812.0

  • 发明设计人 屈凌翔;张庆文;黄嵩人;杨晓刚;

    申请日2012-06-20

  • 分类号G06F9/38(20060101);

  • 代理机构32104 无锡市大为专利商标事务所;

  • 代理人殷红梅

  • 地址 214035 江苏省无锡市滨湖区惠河路5号

  • 入库时间 2023-12-18 07:07:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-07-30

    授权

    授权

  • 2012-12-12

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20120620

    实质审查的生效

  • 2012-10-24

    公开

    公开

说明书

技术领域

本发明涉及数字信号处理器,具体是一种支持SIMD的32位三发射的DSP。

背景技术

DSP能实时处理数字信号,具备远超通用处理器的数据处理能力,在数据通信、多媒体处理等领域发挥着重要的作用。随着通信技术和多媒体技术的高速发展,对DSP数据处理能力的要求也越来越高。提升DSP数据处理能力的方法主要有提升DSP主频、采用多核构架提升整个电路的处理能力、采用多发射结构提升DSP核的并行处理能力等。目前随着DSP主频越来越高,继续提高的成本和难度也越来越高;而多核架构虽然可以降低对DSP核的要求,但会大大增加整个SOC电路的设计难度。因此在提高主频和采取多核架构之外,多发射结构也越来越普及。本发明采用3发射结构,3条流水线能够并行执行;尤其为了提升乘加处理能力,单独设计了向量处理流水线,该流水线和另两条流水线完全独立执行,主要支持并行的数据运算。

发明内容

本发明的目的是克服现有技术中存在的不足,提高处理器的并行运算能力及乘加运算能力,提供一种支持SIMD的32位三发射的数字信号处理器,是面向多媒体处理和数据通信领域的数字信号处理器。

按照本发明提供的技术方案,所述的支持SIMD的32位三发射的数字信号处理器,包括3条并行发射的流水线:数据存取流水线、整数运算流水线、向量运算流水线,每条流水线具备独立的译码和执行单元,并支持SIMD操作;

所述数据存取流水线,包括存取译码单元、存取控制单元、地址运算单元、地址产生单元;存取译码单元和存取控制单元通过控制信号与地址产生单元和地址运算单元相连,控制地址产生单元和地址运算单元的运算,地址产生单元和地址运算单元通过数据总线与地址寄存器和数据寄存器相连,从地址寄存器和数据寄存器中读取数据进行运算,结果写回地址寄存器或者生成访存地址送到数据存储器接口;存取译码单元对指令取指单元发射过来的存取类指令进行译码;存取控制单元根据存取译码结果控制地址运算单元和地址产生单元的操作;地址运算单元对来自地址寄存器、数据寄存器或立即数的地址数据进行计算,得到的结果保存在地址寄存器中;地址产生单元根据寻址模式等生成访存地址;只有数据存取流水线能对外部存储器进行读写操作,其余两条流水线只对寄存器操作;

所述整数运算流水线,包括ALU译码单元、算术控制单元、位处理单元、算术逻辑单元、协处理器接口单元;ALU译码单元和算术控制单元通过控制信号与算术逻辑单元和位处理单元相连,控制算术逻辑单元和位处理单元的运算,算术逻辑单元和位处理单元通过数据总线与数据寄存器相连,从数据寄存器中读取数据进行处理,并把结果写回数据寄存器中;位处理单元用于执行位操作,包括位插入、位提取、位替换和移位操作等;协处理器接口单元负责和协处理器进行数据交流;

所述向量运算流水线,包括乘加译码单元、乘加控制单元、向量运算单元;乘加译码单元和乘加控制单元通过控制信号与向量运算单元相连,控制向量运算单元的运算,向量运算单元通过数据总线与数据寄存器和向量寄存器相连,从数据寄存器或向量寄存器中读取数据进行处理,并把结果写回数据寄存器或向量寄存器中;向量运算单元中包含操作数提取单元、4个16*32的乘法单元、2个64位累加器,主要用于执行并行的乘、乘加、乘加减操作,支持SIMD;

还包括:

指令取指单元,为3条流水线共用的取指单元,用于控制该单元中的程序计数器实现程序的顺序执行和跳转,并对数据冲突做出预测;通过程序存储器接口读入程序数据到指令取指单元的指令缓冲器中,并对指令缓冲器中的指令码进行判断,根据判断结果把32位或16位指令码分别发送到相应的流水线中;

浮点运算单元,作为协处理器,通过协处理器接口单元连接到整数运算流水线;拥有独立的浮点指令集,通过整数运算流水线执行浮点运算,并把处理结果通过整数运算流水线送回数据寄存器;

寄存器文件:包含16个32位地址寄存器、16个32位数据寄存器、16个32位向量寄存器以及特殊功能寄存器;地址寄存器用于地址运算和访存地址生成,数据寄存器用于整数运算和向量运算,向量寄存器用于支持向量运算中的SIMD操作,都支持不同的流水线同时从不同端口并行的读写数据;

程序存储器接口通过地址总线和程序总线与指令取指单元相连,接收指令取指单元发送过来的取指地址,并把指令数据通过程序总线发送给指令取指单元;指令取指单元通过指令总线与存取译码单元、ALU译码单元、乘加译码单元相连,并能够并行发送3条指令到这3个译码单元中;所述数据寄存器、向量寄存器、地址寄存器通过数据总线和数据存储器接口单元相连,通过数据存储器接口和外部数据存储器进行数据交换;流水线控制单元通过流水线控制信号和各执行部件相连,控制各执行部件的执行,并接受各执行部件的反馈。

所述支持SIMD的32位三发射的数字信号处理器具备多媒体处理专用指令和Viterbi解码专用指令,支持16位指令和浮点运算指令,支持定点和浮点运算,其中16位指令为32位指令的子集;具有独立的数据高速缓存和程序高速缓存。

每条流水线具备其专有的指令,在指令的操作码中专门设计两位用于区分这三类指令;在指令取指阶段,指令取指单元对这两位进行预译码来确定指令类别,然后分类发送到相应的流水线。

本发明采用层次化的存储器组织方式,第一级最靠近执行部件的为内部寄存器文件,包括16个32位的地址寄存器、16个32位的数据寄存器、16个32位的向量寄存器;第二级为高速缓存;第三级为数据存储器;两个32位地址寄存器能够组成64位地址寄存器对,两个32位向量寄存器能够组成64位向量寄存器对,两个32位数据寄存器能够组成64位数据寄存器对,4个向量寄存器或数据寄存器能够组成128位数据寄存器组,用于支持SIMD操作。

本发明采用5级流水线结构,分别是取指、译码、执行1、执行2、写回,其中译码和执行部分分别拥有3组独立的部件。

3条流水线共用指令取指单元在译码、执行1、执行2、写回阶段独立并行执行;其中数据存取流水线负责地址运算、存储器存取、无条件跳转,整数运算流水线负责加减操作、逻辑操作、比较操作、移位操作、浮点运算、位操作、条件跳转,向量运算流水线主要负责执行单个或多个并行的乘、乘加、乘加减、乘减加操作。

所述指令取指单元具有指令预译码功能,根据指令预译码结果决定指令发射到数据存取流水线、整数运算流水线或向量运算流水线中;指令取指单元中包含一个16*16位的指令缓冲器,指令取指单元判断指令缓冲器出口处的指令,决定指令发射的位数和条数,最多能同时发射3条32位指令;当指令缓冲器中的数据小于等于128bit时,指令取指单元会通过程序存储器接口读入128位程序数据。

所述向量运算流水线具有独立的指令译码和指令控制单元、独立向量运算单元、专用的指令集;向量运算单元中包括操作数提取单元、4个16*32的乘法单元,两个64位的ACC,专用的指令集中包含SIMD指令,支持并行的乘法、乘加、乘减、乘加减等操作;最多支持并行执行4组16位或2组32位的乘法或乘加、乘减、乘加减操作。

本发明拥有专门用于向量处理流水线的向量处理类指令,向量处理类指令支持对128位数据寄存器组Xn、XVn的操作,用于支持单指令执行4组并行的16位乘加操作;其中Xn是由4个32位数据寄存器组成的数据寄存器组,XVn是由4个32位向量寄存器组成的数据寄存器组。

本发明是一颗面向嵌入式系统应用的低功耗、高速度、高性能数字信号处理器,主要应用于无线通信、图像处理、实时控制等嵌入式应用系统。本发明采用超标量RSIC指令构架,支持单时钟周期3条指令的并行发射,支持16/32位指令译码,支持单周期4MAC操作,支持丰富的DSP寻址模式,支持SIMD操作,支持浮点运算。

本发明的优点是:本发明是一种支持单指令多数据流(SIMD)和三发射的32位定点/浮点数字信号处理器,它将不同的指令并行发射到相应的执行单元,支持3条流水线并行操作,同时还支持SIMD类的指令。本发明支持3条流水线并行执行,提高了DSP的并行处理能力;增加了独立的向量运算单元,支持单周期并行执行4组16位的乘加操作,加上和向量流水线并行执行的整数运算单元和数据存取单元,本发明能够支持5组数据运算和1组数据存取操作同时执行,提升了DSP的数据处理能力。

附图说明

图1为本发明DSP的基本结构框图。

图2为本发明DSP的多级存储器层次结构图。

图3为本发明DSP的指令取指单元结构图。

图4为本发明DSP的向量运算单元基本框图。

图5为本发明DSP的多端口寄存器文件数据流向图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

本发明数字信号处理器采用3发射、5级流水线结构,具备3条并行执行的流水线,每条流水线具备取指、译码、执行1、执行2、写回5级流水。其中取指单元为3条流水线共用,译码和执行部分具备3组独立的部件。

本发明数字信号处理器的指令集中包含16位指令和32位指令,其中16位指令是32位指令的子集。本发明的指令集中除了具备DSP通用指令外,还设计有多媒体处理专用指令、Viterbi解码专用指令、向量处理指令和浮点运算指令。多媒体处理专用指令包括求向量平均值、矩阵运算、字节提取等指令,用于加速多媒体处理;Viterbi解码专用指令包括位交错、位分离、Viterbi追踪返回等指令,用于加速Viterbi解码;向量处理类指令主要用于SIMD操作,支持对128位数据的操作,支持单周期4MAC操作;浮点运算指令用于支持浮点运算。

如图1所示,本发明包含3条并行发射的流水线:数据存取流水线、整数运算流水线、向量运算流水线,每条流水线具备独立的译码和执行单元,并支持SIMD操作。

本发明主要由程序存储器接口单元、数据存储器接口单元、指令取指单元、流水线控制单元、系统总线、数据存取流水线单元、整数运算流水线单元、向量运算流水线单元、数据寄存器、地址寄存器、向量寄存器、协处理器接口单元、浮点运算单元经电路连接组成。其中,数据存取流水线单元包含存取译码单元、存取控制单元、地址运算单元、地址产生单元;整数运算流水线单元包含ALU译码单元、算术控制单元、算术逻辑单元、位处理单元;向量运算流水线单元包含乘加译码单元、乘加控制单元、向量运算单元。浮点运算单元作为协处理器经协处理器接口单元连接到整数运算流水线。程序存储器接口单元、数据存储器接口单元是与外部数据交流的接口,其中程序存储器接口中包含可配置的程序高速缓存,数据存储器接口中包含可配置的数据高速缓存。流水线控制单元用于流水线状态管理和异常处理。通用寄存器文件由16个32位地址寄存器、16个32位数据寄存器和16个32位向量寄存器组成,构成了最靠近处理器的第一级存储器,第二级为高速缓存,第三级为数据存储器。

本发明中各模块的连接关系如图1所示。程序存储器接口通过地址总线和程序总线与指令取指单元相连,接收指令取指单元发送过来的取指地址,并把指令数据通过程序总线发送给指令取指单元。指令取指单元通过指令总线与存取译码单元、ALU译码单元、乘加译码单元及其相关指令控制单元相连,并可并行发送3条指令到这3个译码单元中。存取译码单元和存取控制单元通过控制信号与地址产生单元和地址运算单元相连,控制地址产生单元和地址运算单元的运算。地址产生单元和地址运算单元通过数据总线与地址寄存器和数据寄存器相连,从地址寄存器和数据寄存器中读取数据进行运算,结果写回地址寄存器或者生成访存地址送到数据存储器接口。ALU译码单元和算术控制单元通过控制信号与算术逻辑单元和位处理单元相连,控制算术逻辑单元和位处理单元的运算。算术逻辑单元和位处理单元通过数据总线与数据寄存器相连,从数据寄存器中读取数据进行处理,并把结果写回数据寄存器中。乘加译码单元和乘加控制单元通过控制信号与向量运算单元相连,控制向量运算单元的运算。向量运算单元通过数据总线与数据寄存器和向量寄存器相连,从数据寄存器或向量寄存器中读取数据进行处理,并把结果写回数据寄存器或向量寄存器中。数据寄存器、向量寄存器、地址寄存器通过数据总线和数据存储器接口单元相连,通过数据存储器接口和外部数据存储器进行数据交换。流水线控制单元通过流水线控制信号和各执行部件相连,控制各执行部件的执行,并接受各执行部件的反馈。浮点运算单元通过协处理器接口连接到整数运算流水线,通过整数运算流水线读取指令和数据,执行相关操作,并把处理结果通过整数运算流水线送回数据寄存器。

本DSP核通过程序存储器接口从外部存储器中读入指令到指令取指单元的指令缓冲器中,并通过对指令缓冲器出口处指令的预译码确定指令的类型并发送到相应的流水线中,最多可并行发送3条指令。流水线中的译码单元和指令控制单元在接收到取指单元发送过来的指令后,对指令进行译码,产生相关的控制信号,确定操作数的类型和来源,并把操作数送入执行单元。整数运算流水线和向量运算流水线中的执行单元在译码单元产生的控制信号的控制下,对操作数进行计算,生成的结果在写回阶段送入相应的寄存器中。数据存取流水线的执行单元执行地址运算或生成数据存取操作的访存地址,并在写回阶段把地址运算的结果保存到相应的地址寄存器,或者根据生成的访存地址对外部存储器进行数据读写操作。

程序存储器接口是连接外部程序总线和内部指令取指单元的接口,其内部包含一个可配置的程序高速缓存,可以使能或关闭该高速缓存。数据存储器接口是连接内部通用寄存器和外部数据总线的接口,提供数据交流的接口,其内部包含一个可配置的数据高速缓存。

指令取指单元是3条流水线共用的部件,其通过程序存储器接口读入指令,并对指令进行预译码后发送到相应流水线。

数据存取流水线包括存取译码单元、存取控制单元、地址运算单元、地址产生单元;存取译码单元对指令取指单元发射过来的存取类指令进行译码;存取控制单元根据存取译码结果控制地址运算单元和地址产生单元的操作;地址运算单元对来自地址寄存器、数据寄存器或立即数的地址数据进行计算,得到的结果保存在地址寄存器中;地址产生单元根据寻址模式等生成访存地址。数据存取流水线负责地址计算和数据存取工作,执行内部通用寄存器和外部存储器之间的数据交流,同时也负责数据寄存器和地址寄存器之间的数据交流。

整数运算流水线包括ALU译码单元、算术控制单元、位处理单元、算术逻辑单元(ALU)、协处理器接口单元;位处理单元用于执行位操作指令,包括位插入、位提取、位替换和移位操作等;协处理器接口单元负责和协处理器进行数据交流。整数运算流水线接收从取指单元发送过来的指令并执行,执行结果写回到数据寄存器中,主要负责加减等算术运算、与或非等逻辑运算、移位等位操作。

向量运算流水线包括乘加译码单元、乘加控制单元、向量运算单元。乘加译码单元对取指单元发送过来的指令进行译码,生成相关控制信号;乘加控制单元根据译码结果控制向量运算单元的运算;向量运算单元中包含操作数提取单元、4个16*32的乘法单元、2个64位累加器(ACC),主要用于执行并行的乘、乘加、乘加减等操作,支持SIMD。向量运算流水线主要负责单指令执行多路并行的运算,最多可支持4组16位的乘加运算并行执行。

流水线控制单元负责生成相应的控制信号,控制各流水线的运行。流水线控制单元接收现阶段各流水线的状态,并对中断、陷阱等作出判断,生成下一阶段各流水线状态,控制各流水线下一阶段的运行。

如图2所示,本发明采用层次化的存储器组织方式,最靠近执行部件的为内部寄存器文件,包括16个32位的地址寄存器、16个32位的数据寄存器、16个32位的向量寄存器;第二级为高速缓存;第三级为数据存储器。本发明的程序存储器接口中包括程序高速缓存,数据存储器接口中包括数据高速缓存,存储器接口可以通过相应配置来决定是否使用高速缓存(CACHE)。本发明的通用寄存器可以组合使用,两个32位地址寄存器能够组成64位地址寄存器对,两个32位向量寄存器能够组成64位向量寄存器对,两个32位数据寄存器能够组成64位数据寄存器对,4个向量寄存器或数据寄存器能够组成128位数据寄存器组,用于支持SIMD操作。

如图3所示,本发明的指令取指单元负责从外部读取指令到指令BUF(缓冲器),并对指令进行预译码后发送到相应流水线中。指令取指单元包括一个256位的指令BUF、预译码单元、取指请求生成单元、取指取消信号生成单元、取指地址生成单元、循环指令处理单元、分支跳转指令处理单元。指令BUF用于保存读入的指令,当指令BUF中的数据低于128位时,取指单元会生成取指请求信号,并读取128位指令数据到指令BUF中。取指请求生成单元根据流水线状态和指令BUF中的数据位数来产生取指请求信号。取指取消信号生成单元根据流水线状态来判断取指活动是否取消,若要取消则生成取指取消信号。循环指令处理单元、分支跳转指令处理单元分别对循环指令、分支跳转指令进行处理,计算出新的PC值。取指地址生成单元根据原PC值和循环指令、分支跳转指令的处理结果,生成下一周期指令取指地址。指令预译码单元包括整数运算指令生成逻辑、向量运算指令生成逻辑、数据存取指令生成逻辑等,主要负责对指令BUF中的低几位进行判断,确定从中读出的指令条数和位数,最多可同时读出3条32位指令,并发送到相应流水线中。

如图4所示,本发明的向量运算单元主要包括数据前推逻辑、操作数提取单元、4个16*32的乘法单元、4级CSA、2个64位ACC。乘加译码单元和乘加控制单元对指令进行译码后生成向量运算单元的控制信号。经过数据前推处理后的操作数送入操作数提取单元中,操作数主要来自数据寄存器、立即数或前一周期的运算结果,指令操作数最多为128bit,来自数据寄存器组Xn或XVn。操作数提取单元根据指令译码的结果对操作数进行提取,并把提取后的操作数送到各个乘法单元和ACC中。如执行一条支持4组16位乘加并行执行的SIMD指令时,操作数提取单元就把输入的64位操作数以16位半字为单位分别送到4个乘法单元中,执行4组并行的16位乘法操作;把输入的128位操作数以32位字为单位分别后送到两个ACC中,执行4组并行的32位加法操作;两个ACC的执行结果经过结果生成逻辑处理后组合生成128位的向量运算结果,写回到128位的数据寄存器组Xn或XVn中。因此向量运算单元能同时支持4组16位乘加并行执行:32+16*16;并把生成的4个32位结果组合成128位数据写回到数据寄存器组。

如图5所示,本发明的通用寄存器文件为多端口的存储体。通用寄存器包括地址寄存器、数据寄存器、向量寄存器,这三组寄存器文件都是多端口的存储体,支持并行的读写操作。三组寄存器都支持和外部存储器的进行数据交流,同时还支持不同的流水线从其中读取数据进行运算。地址寄存器支持数据存取流水线从中读取数据进行地址运算;数据寄存器支持整数运算、向量运算、数据存取三条流水线从中读取数据进行运算;向量寄存器支持向量运算流水线从中读取数据进行运算。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号