CN101957743B - 并行数字信号处理器 - Google Patents
并行数字信号处理器 Download PDFInfo
- Publication number
- CN101957743B CN101957743B CN201010507954A CN201010507954A CN101957743B CN 101957743 B CN101957743 B CN 101957743B CN 201010507954 A CN201010507954 A CN 201010507954A CN 201010507954 A CN201010507954 A CN 201010507954A CN 101957743 B CN101957743 B CN 101957743B
- Authority
- CN
- China
- Prior art keywords
- control signal
- instruction
- nuclear
- type
- carrying
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明公开了一种并行数字信号处理器,包括程序存储器,用于向程序存储器提供地址、缓存来自程序存储器指令并将指令拼接成并行执行行发射到译码单元的取指缓冲单元,用于对执行行中的每条指令进行译码的译码单元,用于接受译码单元产生的第一、二类控制信号组并根据控制信号组的状态进行指令执行处理的执行核,用于接受译码单元产生的第三类控制信号组并根据控制信号组的状态进行存储器访问处理的地址产生单元,用于接受译码单元产生的第四类控制信号组并根据控制信号组的状态进行控制/标志寄存器访问指令处理的控制/标志寄存器访问单元,用于接受来自执行核读、写请求的数据存储器及用于连接数据存储器和执行核的数据总线。
Description
技术领域
本发明涉及一种并行数字信号处理器,属数字信号处理器技术领域。
背景技术
20世纪60年代以来,随着计算技术和信息技术的迅速发展,数字信号处理作为一个独立学科迅速发展并在诸多领域得到广泛应用。随着大规模集成电路技术和半导体技术的快速发展以及各种实时处理需求的不断提高,数字信号处理能力也以指数级的速度飞速提升,并在科研、军事以及民用等领域发挥着越来越重要的作用,数字信号处理器件已成为支撑这些领域高速发展的重要条件。目前用于数字信号实时处理的器件有三种:通用数字信号处理器、现场可编程门阵列(FPGA)/大规模可编程逻辑器件(CPLD)和专用集成电路(ASIC)三种。一方面,三种器件各有局限,通用数字信号处理器的优势在于编程的灵活性和普适性,但其运算能力有限。大容量的FPGA/CPLD内部硬件资源较多,但需要针对具体应用单独开发固件逻辑,人力成本高,且大容量FPGA/CPLD价格昂贵。传统的专用集成电路架构与硬线连接固定,功能较单一,其应用范围大受局限。另一方面,数字信号处理的技术要求却在不断提高,随着宽带运用场合不断扩大、阵列处理的数目不断增大、合作及非合作数目目标处理涉及的运算量不断加大,对信号处理的速度要求在不断加码。如复数1024点FFT运算数据率要求在1Gbps以上,有些场合需要为5Gbps以上。上述三种器件在功能、价格、适应性、易用性上越来越难满足数字信号实时处理的要求。
发明内容
本发明的目的在于克服现有通用数字信号处理器运算能力有限,并行度不足的缺陷,提供一种运算量大、运算能力强、应用范围大,且价格较低的并行数字信号处理器。
其技术方案是:一种并行数字信号处理器,包括:
-程序存储器,宽度为16个字,用于存储应用程序;
-取指缓冲单元,用于维护程序计数器并向所述程序存储器提供地址,缓存来自程序存储器的指令,将指令拼接成一个并行执行(xīng)行(hāng)发射到译码单元;
-译码单元,用于对所述执行行中的每条指令进行译码,按照机器码编排形式,指令分为九类,即,三操作数运算指令、两操作数运算指令、访存指令、控制/标志寄存器读指令、控制/标志寄存器写指令、程序流控制指令、核间传输指令、地址寄存器访问指令以及立即数赋值指令,译码单元将这九类指令翻译为第一类、第二类、第三类和第四类控制信号组;
-执行核,共有4个,每个执行核包括15个运算单元、以及1个寄存器文件(registerfile),用于执行核接受所述译码单元产生的第一类、第二类控制信号组,并根据控制信号组的状态进行指令的执行处理;
-地址产生单元,共3个,用于接受所述译码单元产生的第三类控制信号组,并根据控制信号组的状态进行存储器访问的处理;
-控制/标志寄存器访问单元,用于接受所述译码单元产生的第四类控制信号组,并根据控制信号组的状态进行控制/标志寄存器访问指令的执行处理;
-数据存储器,共3块,每块宽度为8个字,用于接受来自所述执行核的16个字的读请求和8个字的写请求;
-数据总线为数据读总线和数据写总线,用于连接数据存储器和执行核。
其技术效果是:本发明的并行数字信号处理器,采用单指令流多数据流(SIMD)结构,具有4个执行核总共60个运算单元,能够并行执行60个运算操作,实现了专用大规模集成电路的运算能力和运算的高度并行化,且采用软件方式进行应用开发,具有一般通用数字信号处理器的灵活性和普适性,与传统数字信号处理器相比,峰值运算性能提高了8倍;同时,为了配合执行单元的高度并行而提供的多端口寄存器文件,具有31个写端口、37个读端口,支持31个写操作和37个读操作并行执行,保障了运算单元的数据吞吐需求;另外,为了配合4个执行核的数据吞吐需求而提供的大带宽、并行数据读写总线,保障了在同一时刻,执行核能够从数据存储器读取16个字,同时向数据存储器写入8个字,满足了执行核的数据吞吐需求。
附图说明
图1是本发明的硬件架构图;
图2是指令格式;
图3是本发明指令实例图;
图4是取指缓冲单元原理示意图;
图5是取指缓冲单元中的执行行拼接实例图表;
图6是译码单元原理示意图;
图7是第一类控制信号组的产生原理示意图;
图8是第二类控制信号组的产生原理示意图;
图9是第三类控制信号组的产生原理示意图;
图10是第四类控制信号组的产生原理示意图;
图11是第一类控制信号组功能图表;
图12是第二类控制信号组功能图表;
图13是第三类控制信号组功能图表;
图14是第四类控制信号组功能图表;
图15是执行核硬件架构图;
图16是寄存器文件输入输出端口示意图;
图17是寄存器文件内部结构示意图;
图18是寄存器文件端口的互连关系图表;
图19是执行核之间的互连架构图;
图20是数据存储器与数据读总线架构图;
图21是数据存储器与数据写总线架构图;
图22是地址产生单元原理示意图;
图23是本发明指令执行流程图;
图24是运行于并行数字信号处理器的汇编程序实例图表。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1所示,一种并行数字信号处理器,采用单指令流多数据流(SIMD)结构,包括:
-程序存储器,为单端口存储器,宽度为16个字,每个字的宽度为32位,深度为8192,用于存储应用程序;
-取指缓冲单元,用于维护程序计数器并向所述程序存储器提供地址,缓存来自程序存储器的指令,将指令拼接成一个并行执行(xīng)行(hāng)发射到译码单元;
-译码单元,用于对所述执行行中的每条指令进行译码,按照机器码编排形式,指令分为九类,即,三操作数运算指令、两操作数运算指令、访存指令、控制/标志寄存器读指令、控制/标志寄存器写指令、程序流控制指令、核间传输指令、地址寄存器访问指令以及立即数赋值指令,译码单元将这九类指令翻译为第一类、第二类、第三类和第四类控制信号组;
-执行核,共有4个,每个执行核包括15个运算单元、以及1个寄存器文件(registerfile),用于执行核接受所述译码单元产生的第一类、第二类控制信号组,并根据控制信号组的状态进行指令的执行处理;
-地址产生单元,共3个,用于接受所述译码单元产生的第三类控制信号组,并根据控制信号组的状态进行存储器访问的处理;
-控制/标志寄存器访问单元,用于接受所述译码单元产生的第四类控制信号组,并根据控制信号组的状态进行控制/标志寄存器访问指令的执行处理;
-数据存储器,为双端口存储器,共3块,每块宽度为8个字,每个字宽度为32位,深度为32768,用于接受来自所述执行核的16个字的读请求和8个字的写请求;
-数据总线为数据读总线和数据写总线,用于连接数据存储器和执行核。
如图2所示,并行数字信号处理器的指令分为九类,即,三操作数运算指令、两操作数运算指令、访存指令、控制/标志寄存器写指令、控制标志寄存器读指令、程序流控制指令、核间传输指令、地址寄存器访问指令、立即数赋值指令。除程序流控制指令之外,每条指令之前带有执行核前缀,带有x前缀时,表明该指令需要X执行核配合执行;带有y前缀时,表明该指令需要Y执行核配合执行;带有z前缀时,表明该指令需要Z执行核配合执行;带有t前缀时,表明该指令需要T执行核配合执行。
执行核前缀在指令机器码中表现为指令的第[30:27]位的执行核标志,第[27]位代表x核,第[28]位代表y核,第[29]位代表z核,第[30]位代表t核,在指令助记符中出现哪个执行核前缀,则对应指令机器码的执行核标志位就为1,否则为0。例如某条指令带有前缀xy,则对应指令机器码的第[30:27]位的值就是二进制“0011”。
如图3所示,在指令的助记符中,用R表示寄存器文件中的通用寄存器,用下标m、n、s表示通用寄存器的序号,例如Rm、Rn、Rs(表示通用寄存器序号的m、n、s为整数,范围在0至63之间);用两个序号之间加冒号(:)的方式表示一个寄存器对,如Rm+1:m、Rn+1:n、Rs+1:s;用寄存器对之前加前缀C表示一个复数,如CRm+1:m;在寄存器或寄存器对之前F表示该寄存器或寄存器对之内寄存的是浮点格式数据,例如FRs。寄存器前缀C和F可以同时出现,例如CFRs+1:s表示一个浮点格式的复数Rs+1+jRs。
三操作数运算指令
在操作数为实数的情况下,三操作数运算指令有Rm、Rn两个源操作数、Rs一个目的操作数;在操作数为复数的情况下,三操作数运算指令有Rm+1+jRm和Rn+1+jRn两个复数的源操作数,一个Rs+1+jRs的复数目的操作数,其中Rm+1、Rn+1、Rs+1代表复数的实部,Rm、Rn、Rs代表复数的虚部,并且在指令助记符中,上述三个复数分别用CRm+1:m、CRn+1:n、CRs+1:s表示,并行数字信号处理器指令集中的所有其他操作数为复数的指令,都采用这种复数表示方式。如指令xyztCRs+1:s=CRm+1:m+CRn+1:n,表示在XYZT执行核中全部执行一条复数加法指令,这个复数加法的被加数和加数分别为Rm+1+jRm和Rn+1+jRn,其和为Rs+1+jRs。
两操作数运算指令
在操作数为实数的情况下,两操作数运算指令有Rm一个源操作数、Rs一个目的操作数;在操作数为复数的情况下,两操作数运算指令有Rm+1+jRm一个复数的源操作数和Rs+1:Rs一个目的操作数。例如xyztRs=Rm binv,表示在XYZT执行核中全部执行一条按位取反指令,将源操作数Rm的每一位取反,结果放入目的操作数Rs。
访存指令
访存指令分为读访存和写访存两种,读访存指令将数据存储器中的数据通过读总线读入执行核中的寄存器文件;写访存指令将执行核中的寄存器文件内容写入数据存储器。每条读(写)访存指令可以读(写)2个、4个、6个或8个字的数据,具体读(写)字的个数根据指令的xyzt前缀来决定,当指令只带有1个执行核前缀时,访存指令可读(写)2个字,当指令只带有2个个执行核前缀时,访存指令可读(写)4个字,当指令带有3个执行核前缀时,访存指令可读(写)6个字,当指令带有4个执行核前缀时,访存指令可读(写)8个字。例如指令xyztRs+1:s=[Um+=Un,Uk]就是同时将Um、Um+1地址的两个字读入执行核X的Rs和Rs+1寄存器、Um+Uk、Um+Uk+1地址的两个字读入执行核Y的Rs和Rs+1寄存器、Um+2Uk、Um+2Uk+1地址的两个字读入执行核Z的Rs和Rs+1寄存器、Um+3Uk、Um+3Uk+1地址的两个字读入执行核T的Rs和Rs+1寄存器,同时基地址寄存器Um自增Un。
控制/标志寄存器读指令
控制/标志寄存器读指令用于将控制/标志寄存器的内容读入各个执行核的寄存器文件。控制/标志寄存器的位宽都是32位,包括:中断类控制/标志寄存器、全局控制/标志寄存器、执行核的控制标/志寄存器。这些控制/标志寄存器每一个都对应一个唯一的编号,控制/标志寄存器读指令的指令形式中引用的就是这个编号。例如xRs=[0x800]就是将编号为0x800的全局控制/标志寄存器的内容读入执行核X中的寄存器文件的Rs寄存器。
控制/标志寄存器写指令
控制/标志寄存器写指令用于将各个执行核的寄存器文件的内容写入控制/标志寄存器。与控制/标志寄存器读指令类似,控制/标志寄存器写指令也是通过引用对应控制/标志寄存器的编号来对其进行写操作。例如[0x800]=yRm指令就是将执行核Y中的寄存器文件的Rm寄存器的内容写入编号为0x800的全局控制/标志寄存器。
程序流控制指令
程序流控制指令包括跳转、子程序调用、子程序返回、中断返回指令。跳转指令使程序流跳转到标号所指定的位置继续执行,例如B label指令,使得程序流在执行到这条指令时,直接跳转到标号label所指示的位置。子程序调用指令通过引用子程序入口标号来调用子程序,例如call label指令,就是调用了标号label所指示的入口地址的子程序。子程序返回指令的指令形式为ret,在应用程序中处于一个子程序的最后,作用是在子程序执行完毕之后返回调用该子程序的那一级程序。中断返回指令与子程序返回指令类似,指令形式为reti,作用是在中断服务子程序执行完毕之后返回被中断的那一级程序。
核间传输指令
核间传输指令,将一个执行核中的通用寄存器对Rm+1:m的2个32位字,传输到另一个或多个执行核中的通用寄存器对Rs+1:s。Rm+1:m为源寄存器对,Rs+1:s为目的寄存器对。源寄存器对之前的执行核前缀只能有1个,目的寄存器对之前的执行核前缀能够有最少1个,最多3个,且目的寄存器对的执行核前缀不得与源寄存器之前的执行核前缀相同。例如指令xyzRs+1:s=tRm+1:m表示将执行核T中的Rm+1和Rm两个寄存器的内容分别传入执行核X、Y、Z的Rs+1和Rs两个寄存器。
地址寄存器访问指令
地址寄存器访问指令有两种,第一种是向地址寄存器赋值,第二种是将地址寄存器的值读入执行核的寄存器文件。例如Us=xRm指令就是将执行核X中的寄存器文件中的Rm的值赋给U地址产生单元中的Us地址寄存器。再如指令xRs=Um就是将U地址产生单元中的Um地址寄存器的内容读入到执行核X中的Rs寄存器。
立即数赋值指令
立即数赋值指令是指通过指令,直接给执行核的寄存器文件中的寄存器赋以32位立即数。在机器码表示中,因为立即数本身是32位,再加上操作码、执行核标志、执行行结束标志,必须以超过32位的位宽才能表达立即数赋值指令,因此一个立即数赋值指令被定义为64位。指令形式直接就是对一个通用寄存器的赋值。例如,xyRs=0xff指令,就是将立即数0xff赋给执行核X和执行核Y的Rs寄存器。
如图4所示,取指缓冲单元包含4级指令缓冲,即,第一级指令缓冲、第二级指令缓冲、第三级指令缓冲、第四级指令缓冲,每一级指令缓冲的宽度为16个字。执行行拼接逻辑从第三级指令缓冲和第四级指令缓冲中按顺序选择指令拼接成执行行,指令被选择拼接为执行行之后,该指令在指令缓冲中对应的位置被填充为气泡(气泡,即全零的数值)。
取指缓冲单元每次从程序存储器获得16个字的指令,并对来自程序存储器的指令进行分析,当来自程序存储器的指令中包含分支类型指令时,用分支目标地址更新程序计数器(PC)以用于下一次的取指;反之,当来自程序存储器的指令中没有分支类型指令时,程序计数器自增16个字以用于下一次取指。
取指缓冲单元包含一个宽度为16个字、深度为4的指令缓冲,指令缓冲对来自程序存储器的指令进行并行规则分析,将能够并行执行的指令拼接成执行行,并将执行行发射到译码单元,根据应用程序的不同,一个执行行能够包含最少1条、最多16条指令。指令之间是否能够并行执行,由指令中的行结束位指定,行结束位总是位于32位指令的最高位,即第31位(定义32位字的最高位为第31位,最低位为第0位,下同)。执行行的最后一条指令,其行结束位为1;不是执行行最后一条指令,其行结束位为0。基于此,执行行拼接的规则是,检查指令中的行结束位,将行结束位为1的指令及其之前的所有行结束位为0的连续指令拼接为一个执行行。
根据指令的动态分布情况,执行行拼接分为三种情况,第一种情况下,在第四级指令缓冲中存在完整的执行行,并且该执行行的最后一条指令不是处在第四级指令缓冲的第16位置,此时直接从第四级指令缓冲中取出该执行行,并把指令取出后的位置填充为气泡。第二种情况下,在第四级指令缓冲中存在完整的执行行,并且该执行行的最后一条指令处在第四级指令缓冲的第16位置,此时直接从第四级指令缓冲中取出该执行行,并用第三级指令缓冲的内容更新第四级指令缓冲,同时用第二级指令缓冲的内容更新第三级指令缓冲、用第一级指令缓冲的内容更新第二级指令缓冲、用来自程序存储器的内容更新第一级指令缓冲。第三种情况下,执行行的一部分处于第四级指令缓冲,另一部分处于第三级指令缓冲,此时分别从第四级指令缓冲和第三级指令缓冲中取出这两部分,拼接成一个执行行,并用第三级指令缓冲中余下的指令与气泡并置,组成16个字的内容来更新第四级指令缓冲,同时用第二级指令缓冲的内容更新第三级指令缓冲、用第一级指令缓冲的内容更新第二级指令缓冲、用来自程序存储器的内容更新第一级指令缓冲。图5所示为执行行拼接的第三种情况下,一个执行行在取指缓冲单元中拼接的例子。
每一级指令缓冲是否更新由缓冲更新逻辑来决定,缓冲更新逻辑检测每一级指令缓冲的状态,根据各级指令缓冲的状态来决定每一级指令缓冲是否更新。指令缓冲的更新原则是:当第四级指令缓冲中的所有指令都被用于执行行拼接,则用第三级指令缓冲的内容更新第四级指令缓冲、用第二级指令缓冲的内容更新第三级指令缓冲、用第一级指令缓冲的内容更新第二级指令缓冲、用来自程序存储器的内容更新第一级指令缓冲。
如图6所示,译码单元的功能分为两级,第一级将执行行中的指令进行分类译码,第二级将第一级译码出的控制信号形成控制信号组。
译码单元把来自取指缓冲单元的执行行翻译为控制信号组,分发给所述的4个执行核和控制/标志寄存器访问单元。控制信号组中的不同位域,是对不同执行单元的控制命令。所述第一类控制信号组,用于控制执行核中的15个运算单元,进行运算操作;所述第二类控制信号组,用于控制所述执行核中的寄存器文件的输入/输出选择,执行对寄存器文件的访问;所述第三类控制信号组,用于控制3个地址产生单元,进行存储器访问操作;所述第四类控制信号组,送给控制/标志寄存器访问单元,用于控制/标志寄存器访问。
程序流控制类指令已经在取指缓冲单元中被翻译、并用于程序流控制,故在译码单元中就只剩下8类指令需要翻译。译码单元第一级用6种译码器对这8类指令进行译码,即,运算类指令译码(对三操作数运算指令和两操作数运算指令进行译码)、访存类指令译码、控制/标志寄存器访问类指令译码(对控制/标志寄存器读指令和控制/标志寄存器写指令进行译码)、核间传输类指令译码、地址寄存器访问类指令译码、立即数赋值类指令译码。运算类指令译码,由16个运算类译码器并行完成;控制/标志寄存器访问类指令译码,由4个控制/标志寄存器访问类指令译码器并行完成;核间传输类指令译码,由4个核间传输类指令译码器并行完成;地址寄存器访问类指令译码,由4个地址寄存器访问类指令译码器并行完成;立即数赋值类指令译码,由4个立即数赋值类指令译码器并行完成;访存类指令译码,由3个访存类指令译码器并行完成。
上述6类译码分别产生的控制信号有运算类指令译码产生第一类控制信号和第二类控制信号;访存类指令译码产生第二类控制信号和第三类控制信号;控制/标志寄存器访问类指令译码产生第二类和四类控制信号;核间传输类指令译码产生第二类控制信号;地址寄存器访问类指令译码产生第二类和第三类控制信号;立即数赋值类指令译码产生第二类控制信号。上述控制信号中,第一类控制信号和第二类控制信号分别用于控制四个执行核中的运算单元和寄存器文件,因此第一类控制信号和第二类控制信号中带有执行核信息,即将指令中的执行核标志随着第一类和第二类控制信号一起输入到译码单元的第二级。
译码单元的第二级,将上述六类指令译码产生的控制信号按照一定规则提取、组合起来,就形成了四类控制信号组。
如图7所示,第一类控制信号组形成的过程是,提取运算类指令译码产生的第一类控制信号,将伴随第一类控制信号的执行核标志的最低位,即执行核X标志,和第一类控制信号逐位进行与运算,就形成了送给执行核X的第一类控制信号组。类似地,将执行核标志的次低位,即执行核Y标志,和第一类控制信号逐位进行与运算,形成送给执行核Y的第一类控制信号组;将执行核标志的次高位,即执行核Z标志,和第一类控制信号逐位进行与运算,形成送给执行核Z的第一类控制信号组;将执行核标志的最高位,即执行核T标志,和第一类控制信号逐位进行与运算,形成送给执行核T的第一类控制信号组。第一类控制信号组中各个信号的具体定义如图11所示。
如图8所示,第二类控制信号组形成的过程是,分别提取运算类指令译码、访存类指令译码、控制/标志寄存器访问类指令译码、核间传输类指令译码、地址寄存器访问类指令译码、立即数赋值类指令译码产生的第二类控制信号,将伴随第二类控制信号的执行核标志的最低位,即执行核X标志,和第二类控制信号逐位进行与运算,形成针对执行核X的第二类控制信号,将所有针对执行核X的控制信号逐位进行或运算,就形成了送给执行核X的第二类控制信号组。类似地,将执行核标志的次低位,即执行核Y标志,和第二类控制信号逐位进行与运算,形成针对执行核Y的第二类控制信号,将所有针对执行核Y的控制信号逐位进行或运算,就形成了送给执行核Y的第二类控制信号组;将执行核标志的次高位,即执行核Z标志,和第二类控制信号逐位进行与运算,形成针对执行核Z的第二类控制信号,将所有针对执行核Z的控制信号逐位进行或运算,就形成了送给执行核Z的第二类控制信号组;将执行核标志的最高位,即执行核T标志,和第二类控制信号逐位进行与运算,形成针对执行核T的第二类控制信号,将所有针对执行核T的控制信号逐位进行或运算,就形成了送给执行核T的第二类控制信号组。第二类控制信号组中各个信号的具体定义如图12所示。
如图9所示,第三类控制信号组的形成过程是,将3个访存类指令译码器输出的控制信号逐位进行或运算,将4个地址寄存器访问类指令译码器的输出信号逐位进行或运算,然后将上述两个或运算的结果并置,就得到了第三类控制信号组。第三类控制信号组中各个信号的具体定义如图13所示。
如图10所示,第四类控制信号组的形成过程是,将4个控制/标志寄存器访问类指令译码器的输出控制信号逐位进行或运算,就得到了第四类控制信号组。第四类控制信号组中各个信号的具体定义如图14所示。
如图15所示,4个执行核分别为:执行核X、执行核Y、执行核Z和执行核,每个执行核包括15个运算单元,其中8个算术逻辑单元(ALU),用于执行实数和复数的加法、减法、累加、累减操作;4个乘法器,用于执行实数和复数的乘法、乘法累加操作;2个移位器,用于执行移位、位域操作;1个特定运算单元,用于执行超越函数运算、定点数浮点数相互转换操作。根据译码单元送来的第一类控制信号组,决定15个运算单元是否执行运算操作,以及具体执行哪些运算操作。
每个执行核内还包括一个寄存器文件,寄存器文件受第二类控制信号组控制。寄存器文件的输入输出端口如图16所示,共包括31个并行的写端口和37个并行的读端口,支持31个写操作和37个读操作并行执行。寄存器文件内包含64个32位的寄存器,即R0~R63,寄存器和读、写端口之间的互联关系如图17所示,每个寄存器的输入端有一个31选1的选择器,能够将31个写端口的任意一个选择为寄存器的输入;37个输出端口,每个输出端口之前连接一个64选1的选择器,能够将任意一个寄存器的内容选择输出到对应的寄存器文件输出端。寄存器文件在第二类控制信号组的控制之下工作,第二类控制信号组指定了寄存器文件的每个写端口是否需要写操作,以及在需要写操作时,被写入寄存器的索引;同时,第二类控制信号组指定了寄存器文件每个读端口是否需要读操作,以及在需要读操作时,被读出寄存器的索引。
执行核中的各个运算单元的数据输入端连接到寄存器文件的对应读端口,从寄存器文件取得源操作数;各个运算单元的数据输出端连接到寄存器文件的对应写端口,其运算结果写入到寄存器文件。寄存器文件各个读写端口具体的互联关系如图18所示。
如图19所示,四个执行核中的每一个,都能够向其他三个执行核独立地广播两个字。即,每一个执行核能够同时接受来自其他三个执行核各两个32位数据;同时能够广播出两个32位数据,供给其他三个执行核。
数据总线
采用读写分开的数据总线来连接数据存储器和执行核。其中数据读总线512位,能够并行由数据存储器向执行核提供16个字;数据写总线256位,能够并行将8个字由执行核写入数据存储器。读总线与写总线的一端连接执行核,一端连接数据存储器,数据存储器共有3块,每一块都能够与读总线和写总线连接,在总线与数据存储器的连接处,采用交叉开关结构进行切换。
如图20所示,数据读总线的一端是三个数据存储器,另一端是四个执行核。每一块数据存储器的输出位宽是256位,因此将数据读总线分为高256位和低256位,数据读总线的高、低256位能够分别与三块数据存储器中的任意一个连接,满足并行的两条访存指令读数据存储器的带宽需求。数据读总线与4个执行核之间的具体连接关系是,数据读总线的[63:0]连执行核X的寄存器文件的读通道0;数据读总线的[127:64]连执行核Y的寄存器文件的读通道0;数据读总线的[191:128]连执行核Z的寄存器文件的读通道0;数据读总线的[255:192]连执行核T的寄存器文件的读通道0;数据读总线的[319:256]连执行核X的寄存器文件的读通道1;数据读总线的[383:320]连执行核Y的寄存器文件的读通道1;数据读总线的[447:384]连执行核Z的寄存器文件的读通道1;数据读总线的[511:448]连执行核T的寄存器文件的读通道1。
数据写总线结构如图21所示。数据写总线与4个执行核的连接关系是,写总线的[63:0]连执行核X的寄存器文件的写通道;写总线的[127:64]连执行核Y的寄存器文件的写通道;写总线的[191:128]连执行核Z的寄存器文件的写通道;写总线的[255:192]连执行核T的寄存器文件的写通道。在另一端,数据写总线通过选择,能够与3个数据存储器中的任意一个相连。
地址产生单元
如图22所示,3个地址产生单元分别名为地址产生单元U、地址产生单元V、地址产生单元W,用于产生数据存储器访问所需要的地址。每个地址产生单元包括16个32位的地址寄存器,用于寄存基地址和偏移量。即,地址产生单元U内包含U0~U15共16个地址寄存器;地址产生单元V内包含V0~V15共16个地址寄存器;地址产生单元W内包含W0~W15共16个地址寄存器。地址产生单元完成地址产生、地址寄存器更新、地址寄存器输出操作。地址寄存器的更新有两个个途径:地址产生单元内部运算更新;来自执行核中寄存器文件的更新。地址寄存器之前有一个选择阵列,该阵列就是用于选择更新地址寄存器的来源。
地址产生单元接受来自译码器的第三类控制信号组,第三类控制信号组的说明如图13所示。在第三类控制信号组的控制下,每个地址产生单元能够独立产生8个地址,这8个地址的数值以基地址开始,数值依次为:基地址、基地址+1、基地址+字间偏移量、基地址+字间偏移量+1、基地址+2倍字间偏移量、基地址+2倍字间偏移量+1、基地址+3倍字间偏移量、基地址+3倍字间偏移量+1。根据第三类控制信号组中的地址产生单元的地址类型信息,将这8个地址提交到对应的数据存储器读写端口。
程序执行
如图23所示,并行数字信号处理器执行应用程序的过程是,只要取指缓冲单元中的第一级指令缓冲向第二级指令缓冲移动,取指缓冲单元就从程序存储器取出16条指令进入指令缓冲,在第三级、第四级指令缓冲,将能够并行执行的指令拼接为一个执行行,发射到译码单元,译码单元将执行行的指令翻译为四大类控制信号组,分别送到执行核、控制/标志寄存器访问单元、地址产生单元进行指令的具体执行操作。
图24所示,为一段运行于并行数字信号处理器的汇编程序实例。这段程序实例实现了将16个浮点格式的复数求和并存储的功能。程序中,指令之间的“||”符号代表并行,用该符号连接的指令能够并行执行。该程序分六步实现了16个浮点复数的求和存储功能,并在6步求和的过程中用指令并行初始化地址寄存器,在求和完成之后,将结果写入以0x600000地址开始的8个存储单元。第一步,用4条并行的加指令对存储于R0~R15的8个复数求和;第二步,用4条并行加指令对存储于R16~R31的8个复数求和,同时用立即数赋值指令初始化执行核X中的R0,用于后续的地址寄存器赋值;第三步,将前两步的求和结果进行第二重求和,同时用立即数赋值指令初始化执行核X中的R1和R2,用于后续的地址寄存器赋值;第四步,将第三步的求和结果进行第三重求和,同时初始化地址寄存器U0和U1;第五步,将第四步的求和结果相加,得到最终的求和结果,同时初始化地址寄存器U2;第六步,将第五步的求和结果写入以0x600000地址开始的8个存储单元。
Claims (9)
1.一种并行数字信号处理器,其特征在于包括:
—程序存储器,宽度为16个字,用于存储应用程序;
—取指缓冲单元,用于维护程序计数器并向所述程序存储器提供地址,缓存来自程序存储器的指令,将指令拼接成一个并行执行行发射到译码单元;
—译码单元,用于对所述执行行中的每条指令进行译码,按照机器码编排形式,指令分为九类,即,三操作数运算指令、两操作数运算指令、访存指令、控制/标志寄存器读指令、控制/标志寄存器写指令、程序流控制指令、核间传输指令、地址寄存器访问指令以及立即数赋值指令,译码单元将这九类指令翻译为第一类、第二类、第三类和第四类控制信号组,分发给X、Y、Z、T四个执行核和控制/标志寄存器访问单元,每个执行核包括15个运算单元以及1个寄存器文件;
—执行核,用于接受所述译码单元产生的第一类、第二类控制信号组,并根据所述第一类、第二类控制信号组的状态进行指令的执行处理;
—地址产生单元,共3个,用于接受所述译码单元产生的第三类控制信号组,并根据所述第三类控制信号组的状态进行存储器访问的处理;
—控制/标志寄存器访问单元,用于接受所述译码单元产生的第四类控制信号组,并根据所述第四类控制信号组的状态进行控制/标志寄存器访问指令的执行处理;
—数据存储器,共3块,每块宽度为8个字,用于接受来自所述执行核的16个字的读请求和8个字的写请求;数据存储器为双端口,每个字宽度为32位,深度为32768;
—数据总线为数据读总线和数据写总线,用于连接数据存储器和执行核;数据读总线宽度为16个字,数据写总线宽度为8个字;
所述第一类控制信号组,用于控制每个执行核中的15个运算单元,进行运算操作;所述第二类控制信号组,用于控制所述每个执行核中的寄存器文件的输入/输出选择,执行对寄存器文件的访问;所述第三类控制信号组,用于控制地址产生单元,进行存储器访问操作;所述第四类控制信号组,送给控制/标志寄存器访问单元,用于控制/标志寄存器访问;
所述第一类控制信号组形成的过程是,提取运算类指令译码产生的第一类控制信号,将伴随第一类控制信号的执行核标志的最低位,即执行核X标志,和第一类控制信号逐位进行与运算,形成送给执行核X的第一类控制信号组;类似地,将执行核标志的次低位,即执行核Y标志,和第一类控制信号逐位进行与运算,形成送给执行核Y的第一类控制信号组;将执行核标志的次高位,即执行核Z标志,和第一类控制信号逐位进行与运算,形成送给执行核Z的第一类控制信号组;将执行核标志的最高位,即执行核T标志,和第一类控制信号逐位进行与运算,形成送给执行核T的第一类控制信号组;
所述第二类控制信号组形成的过程是,分别提取运算类指令译码、访存类指令译码、控制/标志寄存器访问类指令译码、核间传输类指令译码、地址寄存器访问类指令译码、立即数赋值类指令译码产生的第二类控制信号,将伴随第二类控制信号的执行核标志的最低位,即执行核X标志,和第二类控制信号逐位进行与运算,形成针对执行核X的第二类控制信号,将所有针对执行核X的控制信号逐位进行或运算,形成送给执行核X的第二类控制信号组;类似地,将执行核标志的次低位,即执行核Y标志,和第二类控制信号逐位进行与运算,形成针对执行核Y的第二类控制信号,将所有针对执行核Y的控制信号逐位进行或运算,形成送给执行核Y的第二类控制信号组;将执行核标志的次高位,即执行核Z标志,和第二类控制信号逐位进行与运算,形成针对执行核Z的第二类控制信号,将所有针对执行核Z的控制信号逐位进行或运算,形成送给执行核Z的第二类控制信号组;将执行核标志的最高位,即执行核T标志,和第二类控制信号逐位进行与运算,形成针对执行核T的第二类控制信号,将所有针对执行核T的控制信号逐位进行或运算,形成送给执行核T的第二类控制信号组;所述运算类指令包括三操作数运算指令以及两操作数运算指令,所述访存类指令包括访存指令,所述控制/标志寄存器访问类指令包括控制/标志寄存器读指令以及控制/标志寄存器写指令,所述核间传输类指令包括核间传输指令,所述地址寄存器访问类指令包括地址寄存器访问指令,所述立即数赋值类指令包括立即数赋值指令;所述访存类指令译码由3个访存类指令译码器并行完成,所述地址寄存器访问类指令译码由4个地址寄存器访问类指令译码器并行完成,所述控制/标志寄存器访问类指令译码由4个控制/标志寄存器访问类指令译码器并行完成;
所述第三类控制信号组的形成过程是,将3个访存类指令译码器输出的控制信号逐位进行或运算,将4个地址寄存器访问类指令译码器的输出信号逐位进行或运算,然后将上述两个或运算的结果并置,即得到第三类控制信号组;
所述第四类控制信号组的形成过程是,将4个控制/标志寄存器访问类指令译码器的输出控制信号逐位进行或运算,即得到第四类控制信号组。
2.根据权利要求1所述的并行数字信号处理器,其特征在于:所述程序存储器为单端口,每个字的宽度为32位,深度为8192。
3.根据权利要求1所述的并行数字信号处理器,其特征在于:取指缓冲单元包含4级指令缓冲,即,第一级指令缓冲、第二级指令缓冲、第三级指令缓冲、第四级指令缓冲,每一级指令缓冲的宽度为16个字。
4.根据权利要求1所述的并行数字信号处理器,其特征在于:所述取指缓冲单元每次从程序存储器获得16个字的指令,并对来自程序存储器的指令进行分析,当来自程序存储器的指令中包含分支类型指令时,用分支目标地址更新程序计数器以用于下一次的取指,反之,当来自程序存储器的指令中没有分支类型指令时,程序计数器自增16以用于下一次取指。
5.根据权利要求1所述的并行数字信号处理器,其特征在于:所述译码单元的功能为两级,第一级将执行行中的指令进行分类译码,第二级将第一级译码出的控制信号形成控制信号组。
6.根据权利要求1所述的并行数字信号处理器,其特征在于:所述取指缓冲单元包含一个宽度为16个字、深度为4的指令缓冲,所述指令缓冲对来自程序存储器的指令进行并行规则分析,将能够并行执行的指令拼接成执行行,并将执行行发射到译码单元,根据应用程序的不同,一个执行行能够包含最少1条、最多16条指令。
7.根据权利要求1所述的并行数字信号处理器,其特征在于:所述每个执行核包括的15个运算单元,其中8个算术逻辑单元,用于执行实数和复数的加法、减法、累加、累减操作;4个乘法器,用于执行实数和复数的乘法、乘法累加操作;2个移位器,用于执行移位、位域操作;1个特定运算单元,用于执行超越函数运算、定点数浮点数相互转换操作。
8.根据权利要求1所述的并行数字信号处理器,其特征在于:所述每个执行核包括1个寄存器文件,该寄存器文件由64个32位的通用寄存器组成,共有31个写端口、37个读端口,支持31个写操作和37个读操作并行执行。
9.根据权利要求1所述的并行数字信号处理器,其特征在于:所述3个地址产生单元,分别名为地址产生单元U、地址产生单元V、地址产生单元W,用于产生数据存储器访问所需要的地址;每个地址产生单元包括16个32位的地址寄存器,用于寄存基地址和偏移量;地址产生单元完成地址产生、地址寄存器更新、地址寄存器输出操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010507954A CN101957743B (zh) | 2010-10-12 | 2010-10-12 | 并行数字信号处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010507954A CN101957743B (zh) | 2010-10-12 | 2010-10-12 | 并行数字信号处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101957743A CN101957743A (zh) | 2011-01-26 |
CN101957743B true CN101957743B (zh) | 2012-08-29 |
Family
ID=43485088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010507954A Active CN101957743B (zh) | 2010-10-12 | 2010-10-12 | 并行数字信号处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101957743B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981807A (zh) * | 2012-11-08 | 2013-03-20 | 北京大学 | 一种基于cuda并行环境的gpu程序优化方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102201818B (zh) * | 2011-05-12 | 2015-12-16 | 中兴通讯股份有限公司 | 一种Turbo译码结果的输出方法及装置 |
CN102508802A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 基于并行随机存储器的数据写入、读取方法、装置及系统 |
US9355068B2 (en) * | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
CN103577155B (zh) * | 2012-07-26 | 2015-09-30 | 中国航空工业集团公司第六三一研究所 | 基于arinc659协议的指令译码电路的实现方法 |
CN103577154B (zh) * | 2012-07-26 | 2015-09-30 | 中国航空工业集团公司第六三一研究所 | 基于arinc659协议的指令的译码方法 |
CN106406820B (zh) * | 2015-07-29 | 2019-01-15 | 深圳市中兴微电子技术有限公司 | 一种网络处理器微引擎的多发射指令并行处理方法及装置 |
GB2543304B (en) * | 2015-10-14 | 2020-10-28 | Advanced Risc Mach Ltd | Move prefix instruction |
CN111651200B (zh) * | 2016-04-26 | 2023-09-26 | 中科寒武纪科技股份有限公司 | 一种用于执行向量超越函数运算的装置和方法 |
CN107315715B (zh) * | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN107229506B (zh) * | 2017-05-27 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种虚拟机迁移方法及装置 |
WO2019126797A2 (en) * | 2017-12-22 | 2019-06-27 | Alibaba Group Holding Limited | System and method for executing instructions |
CN111736779B (zh) * | 2018-04-25 | 2022-01-11 | 上海忆芯实业有限公司 | Nvm接口命令的优化执行方法与装置 |
CN111625280B (zh) * | 2019-02-27 | 2023-08-04 | 上海复旦微电子集团股份有限公司 | 指令控制方法及装置、可读存储介质 |
CN111813447B (zh) * | 2019-04-12 | 2022-11-08 | 杭州中天微系统有限公司 | 一种数据拼接指令的处理方法和处理装置 |
CN110377339B (zh) * | 2019-08-17 | 2024-03-01 | 中昊芯英(杭州)科技有限公司 | 长延时指令处理装置、方法以及设备、可读存储介质 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN112752194B (zh) * | 2020-12-22 | 2022-06-28 | 江西创成微电子有限公司 | 音频数据处理方法、dsp音频架构、设备及介质 |
WO2022141321A1 (zh) * | 2020-12-30 | 2022-07-07 | 深圳市大疆创新科技有限公司 | Dsp处理器及其并行计算方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560731A (zh) * | 2004-03-03 | 2005-01-05 | 浙江大学 | 32位媒体数字信号处理器 |
CN101847093A (zh) * | 2010-04-28 | 2010-09-29 | 中国科学院自动化研究所 | 具有可重构低功耗数据交织网络的数字信号处理器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001350627A (ja) * | 2000-06-09 | 2001-12-21 | Canon Inc | ディジタル信号プロセッサ、並列処理方法および記録媒体 |
US8024551B2 (en) * | 2005-10-26 | 2011-09-20 | Analog Devices, Inc. | Pipelined digital signal processor |
-
2010
- 2010-10-12 CN CN201010507954A patent/CN101957743B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560731A (zh) * | 2004-03-03 | 2005-01-05 | 浙江大学 | 32位媒体数字信号处理器 |
CN101847093A (zh) * | 2010-04-28 | 2010-09-29 | 中国科学院自动化研究所 | 具有可重构低功耗数据交织网络的数字信号处理器 |
Non-Patent Citations (1)
Title |
---|
JP特开2001-350627A 2001.12.21 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981807A (zh) * | 2012-11-08 | 2013-03-20 | 北京大学 | 一种基于cuda并行环境的gpu程序优化方法 |
CN102981807B (zh) * | 2012-11-08 | 2015-06-24 | 北京大学 | 一种基于cuda并行环境的gpu程序优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101957743A (zh) | 2011-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101957743B (zh) | 并行数字信号处理器 | |
Abd-El-Barr et al. | Fundamentals of computer organization and architecture | |
CN101652746A (zh) | 浮点操作的改善以及相关的改善 | |
CN101145109A (zh) | 利用中间指令集的二进制翻译方法 | |
CN103109261B (zh) | 用于通用逻辑操作的方法和设备 | |
Carpenter et al. | The other Turing machine | |
CN101021832A (zh) | 支持局部寄存和条件执行的64位浮点整数融合运算群 | |
CN104011661A (zh) | 用于大整数运算的向量指令的装置和方法 | |
CN109582364B (zh) | 基于忆阻器的精简指令集处理器 | |
CN101387951B (zh) | 具有用于各种不同类型指令的公共子电路的处理器 | |
Yıldız et al. | CPU design simplified | |
Reichenbach et al. | RISC-V3: A RISC-V compatible CPU with a data path based on redundant number systems | |
CN101246435A (zh) | 一种支持高级语言部分语句功能的处理器指令集 | |
Yen et al. | Development and implementation of an educational simulator software package for a specific microprogramming architecture | |
Page | Parameterised processor generation | |
Gibson | ARM assembly language-an introduction | |
Rossmann et al. | A course of study in computer hardware architecture | |
Laguna-Sanchez et al. | A small architecture for CPU implementation based on the Post’s Machine | |
Yuanyuan et al. | Design and Implementation of Single-cycle MIPS Processor. | |
CN100440193C (zh) | 数据处理系统的引擎装置以及相应的数据处理系统和方法 | |
Morita | Making and Using a Rotary Element in Reversible Cellular Automata | |
Kurin | RISC-V. State of the union | |
Burston et al. | A design language for asynchronous logic | |
Pereira | Educational package based on the MIPS architecture for FPGA platforms | |
Maurer et al. | The FHDL Rom Tools |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191125 Address after: 5 / F, airborne center, 38 new area, No. 199, Xiangzhang Avenue, hi tech Zone, Hefei City, Anhui Province 230000 Patentee after: Anhui core Century Technology Co., Ltd. Address before: 230088, 199 camphor Road, Shushan District, Anhui, Hefei Patentee before: No.38 Inst., China Electronic Sci. & Tech. Group Co. |
|
TR01 | Transfer of patent right |