发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种并行向量处理引擎结构,以提高数字处理芯片整体计算性能。
(二)技术方案
为达到上述目的,本发明采用的技术方案如下:
一种并行向量处理引擎结构,该结构包括局部存储器、总线控制器、向量处理单元和通信同步单元,其中,该局部存储器由多个存储块组成,每个存储块独立运行,且每个存储块作为一从设备通过总线与该总线控制器连接,该向量处理单元与该通信同步单元均作为一主设备通过该总线控制器连接。
上述方案中,所述局部存储器用于存放指令和数据,所述向量处理单元通过在该局部存储器中加载或存储指令实现数据的存取。
上述方案中,所述总线控制器用于将接收自某一主设备的请求根据特定规则路由至某一从设备,并且当多个主设备向同一从设备发出请求时,该总线控制根据特定规则对这些请求进行排序,同一时间内只向同一从设备转发一个请求。
上述方案中,所述向量处理单元包括四个并行执行的功能单元:标量计算单元、地址计算单元、程序控制单元和向量计算单元,其中标量计算单元用于执行所有标量计算指令,地址计算单元用于执行所有地址计算指令、加载或存储指令,程序控制单元用于执行所有跳转指令,向量计算单元用于执行所有向量计算指令。
上述方案中,所述向量处理单元采用变长流水级结构,其流水级分别是F1、F2、D、E0、E1、…、EK级,其中K为大于等于1的自然数;F1级为指令预取级,F2级为指令返回级,D级为解码级,E0至EK级为指令执行级,所述标量计算单元、地址计算单元、程序控制单元和向量计算单元这四个功能单元并行运行,共用F1级和F2级,但该四个功能单元在D、E0、E1、…、EK级分离,各个功能单元包括独立的运算部件和流水寄存器。
上述方案中,所述向量处理单元还包括一取指单元;
在F1级,该取指单元向指令总线发出取指请求和取指地址,指令总线返回状态信息,表明该次请求是否被接受,如果该次请求未被接受,该取指单元须在下一时钟周期重新发起请求;
在F2级,该取指单元从指令总线获取指令并将指令分发给标量计算单元、地址计算单元、程序控制单元和向量计算单元,如果当前周期指令总线没有返回指令,该取指单元须在接下来的时钟周期内等待指令返回;
在D级,标量计算单元、地址计算单元、程序控制单元和向量计算单元分别进行指令译码,地址计算单元、标量计算单元和向量计算单元读取源操作数,同时,地址计算单元完成地址计算;
在E0、E1、…、EK级,标量计算单元和向量计算单元进行计算,并将计算结果写回局部存储器。
上述方案中,所述地址计算单元在E0级向数据总线发出加载或存储请求及地址,数据总线返回状态信息,表明该次请求是否被接受,如果该次请求未被接受,流水级停顿,同时地址计算单元须在下一时钟周期重新发起请求;
地址计算单元在E1级读取数据总线操作结果,如果为加载指令,将返回数据写回寄存器,如果当前周期数据总线没有返回操作结果,流水级停顿,同时地址计算单元在接下来的周期内重新读取数据总线操作结果。
上述方案中,所述通信同步单元包括直接内存访问控制器和消息寄存器,用于实现该向量处理引擎结构与外界进行的数据交换,是该向量处理引擎结构与外部功能单元进行数据交换的唯一途径。
上述方案中,所述消息寄存器对向量处理单元和外部功能单元表现出不同的特性,对向量处理单元表现出通道的特性,对该并行向量处理引擎结构的外部功能单元表现为内存地址映射的寄存器。
上述方案中,所述向量处理单元通过通道指令读写以及查询消息寄存器,获得通信同步单元的状态,或者控制通信同步单元的行为;所述向量处理单元通过通道指令读取、写入和查询通道;该通道指令通过专用总线来传输数据和控制信号;
所述通信同步单元中的通道能够实现状态寄存器和控制寄存器的功能,且每个通道是可读通道或可写通道,不是可读写通道;
所述通信同步单元中每个通道均为32位宽,每个通道都有对应的通道号。
上述方案中,所述内存地址映射的寄存器仅针对该并行向量处理引擎结构的外部功能单元,一个通道有一个对应的内存地址映射的寄存器地址,内存地址映射的寄存器读写不会阻塞,且可读可写。
上述方案中,该通信同步单元还通过片上总线接口连接于片上网络。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1)、本发明提供的并行向量处理引擎结构,能够优化向量计算,提高了芯片的数字信号处理能力。
2)、本发明提供的并行向量处理引擎结构,其中的通信同步单元提供了统一的、灵活的数据通信和同步接口,利用该通信同步单元,可灵活连接多个向量处理引擎,在线程级实现多个向量并行计算。向量处理引擎也可作为独立的IP核集成到SoC设计中,加速芯片的向量处理能力。
3)、本发明提供的并行向量处理引擎结构,其中的向量计算单元(VCU)、标量计算单元(SCU)、地址产生单元(AGU)和程序控制单元(SEQ)并行执行,在进行向量计算的同时可进行标量计算。
4)、本发明提供的并行向量处理引擎结构,具有并行存储、并行传送、并行计算的特性,数据计算能力与数据搬运能力相匹配,在单位面积内具有最高的向量计算性能。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明提供的这种并行向量处理引擎结构,利用向量元素之间的并行性进行优化设计;同时,还针对数字信号处理领域中向量之间的并行性进行优化设计。
本发明提供的这种并行向量处理引擎结构,由上到下,在以下三个层次优化向量并行计算:
首先,在线程级优化并行计算。针对向量之间的并行性,将向量处理引擎设计成多核架构中的一个处理核,向量处理引擎中包含专用于多核通信和同步的功能单元,多个向量处理引擎互连构成多核向量处理芯片。
其次是指令级并行。针对向量处理专用指令集,在处理引擎内部定义标量计算单元、向量计算单元、加载/存储单元和程序控制单元,实现标量计算指令、向量计算指令、数据加载指令、程序控制指令的并行执行。
最后是指令内并行。在架构中定义向量运算单元,向量单元中运算部件个数与向量指令中的向量元素个数相同,运算部件并行计算各向量元素;对于向量元素之间存在相关性的横向求和指令,定义专用的横向求和网络,提高该类指令的执行速度。
如图1所示,图1是本发明提供的并行向量处理引擎结构的示意图,该结构优化第一层次并行计算,包括:局部存储器(Local Memory,LM)、总线控制器、向量处理单元(Vector Processing Uint,VPU)和通信同步单元(Communication & Synchronization Unit,CSU)。其中,该局部存储器由多个存储块组成,每个存储块独立运行,且每个存储块作为一从设备通过总线与该总线控制器连接,该向量处理单元与该通信同步单元均作为一主设备通过该总线控制器连接,该通信同步单元还通过片上总线接口连接于片上网络。
在该结构中,局部存储器(Local Memory,LM)用于存放指令和数据,向量处理单元通过在该局部存储器中加载或存储指令实现数据的存取。局部存储器(LM)由多个存储块组成,每个存储块独立运行,因此,局部存储器(LM)可并行处理多存储请求。每个存储块作为一从设备通过总线与总线控制器相连;同时,向量处理单元和通信同步单元各作为一主设备通过总线控制器相连。
总线控制器具有“路由”和“仲裁”功能。路由功能指总线控制器可将任一主设备所发出的请求根据特定规则转发给某一从设备。仲裁功能指当多个主设备向同一从设备发出请求时,总线控制根据特定规则对这些请求进行排序,同一时间内只向同一从设备转发一个请求。
通信同步单元(Communication & Synchronization Unit,CSU),用于向量处理引擎与外界进行数据交换,也是向量处理引擎与外部功能单元进行数据交换的唯一途径。
通信同步单元中包括直接内存访问控制器(DMAC)和消息寄存器,用于实现该向量处理引擎结构与外界进行的数据交换,是该向量处理引擎结构与该并行向量处理引擎结构的外部功能单元进行数据交换的唯一途径。消息寄存器对向量处理单元和外部功能单元表现出不同的特性。消息寄存器对向量处理单元表现出“通道”的特性,对外部功能单元表现为内存地址映射的寄存器(MMR);但两者在物理上为同一实体。向量处理单元通过通道指令读写以及查询消息寄存器,以获得通信同步单元状态或控制通信同步单元行为。因此,向量处理单元必须实现通道相关的三个指令,即:通道读取指令(RDCH)、通道写入指令(WRCH)和通道查询指令(RDCNT)。
通信同步单元中“通道”具有状态寄存器和控制寄存器的功能,但又不仅仅是状态寄存器或控制寄存器。每个通道只能是可读通道或可写通道,不存在读/写通道。通信同步单元中每个通道均为32位宽,并具有如下特性:
1)通道的读/写特性:每个通道只能是可读通道或可写通道,不存在读/写通道。向量处理单元通过专用的读通道指令(RDCH)读取消息,通过写通道指令(WRCH)向通道写入消息。
2)通道容量:每个通道都有预先设定的容量,表明该通道最多可以存放多少个消息。
3)消息个数:该特性表明通道中当前的消息个数,当通道可读时,通道消息个数表明通道中的已经有的消息个数;当通道可写时,通道内容个数表示消息的空位数。向量处理单元通过专用的通道记录个数读取指令(RDCNT)查询消息个数。
4)通道阻塞特性:读取或写入消息个数为0的通道会使指令阻塞。“指令阻塞”即该指令一直处于流水线的执行级,此时流水线停顿,处理器等待该指令完成。当读取通道阻塞时,读取指令一直等待该通道中消息个数大于0,然后读取通道中的消息后返回;当向通道写入记录阻塞时,写入指令一直等待通道有消息空位出现,然后向通道写入消息后返回。
每个通道都有对应的通道号。向量处理单元通过通道指令读取、写入和查询通道,通道指令(RDCH、WRCH、RDCNT)不同于Load/Store指令,并且通过专用的总线传输数据和控制信号。
在通信同步单元中,内存地址映射的寄存器(Memory MappedRegister,MMR)针对外部功能单元而主,其内容与通道基本相同,一个通道一般有一个对应的MMR地址,但通道和MMR有较大的区别。
首先,通道是对向量处理单元而言,而MMR是对向量处理引擎外部分的功能单元而言。其次通道需要专用的通道指令读写,而外部功能单元用Load/Store指令即可对MMR读写。另外,通道读写有可能会阻塞,而MMR读写永远不会阻塞,并且可读可写。最后,通道有内容个数的特性,可通过RDCNT指令查询该通道的消息个数,而MMR虽然也有消息个数属性,但不能直接通过读取该MMR获得MMR的消息个数,需要读取与该MMR对应消息个数寄存器来获得。因此,从外部功能单元看来,向量处理引擎实现上是一个地址映射的协处理器。图3表示了通道和MMR之间的关系。
向量处理引擎结构在第一层次优化了并行计算。芯片中可包括多个向量处理引擎,一个向量处理引擎负责一个或多个互不相关的向量计算,各个向量处理引擎并行运行;同时,利用通信同步单元单元中的DMA控制器和通道寄存器,芯片内多个向量处理引擎之间可以高效进行数据通信和同步,如图2所示,图2是VPE之间互连的示意图。
向量处理单元(Vector Processing Uint,VPU)为该并行向量处理引擎结构的核心功能单元。向量处理单元实现第二层次并行计算,即指令级并行。首先向量处理单元中对寄存器进行分组,程序员可见的寄存资源如图4所示。其中地址寄存器组用J表示,包含7个寄存器;程序控制寄存器组包含4个寄存器;标量寄存器组用R表示,包括15个寄存器;向量寄存器组用VR表示,包括15个寄存器,每个寄存器位宽为16×32比特,其中VR15为特殊寄存器,只能读取,不能写入,读取时其值固定为(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)。二维矢量寄存器组一共包括16×16个元素,每个元素位宽为32比特。二维矢量寄存器组可以按行或按列读写,但一次只能读写一行或一列。Mask寄存器为特殊的寄存器,在执行向量指令时,表示哪些向量元素参与本次操作。
为实现指令级并行,向量处理单元中设置四个可以并行执行的功能单元:标量计算单元,地址计算单元,程序控制单元,向量计算单元,如图5所示。SCU为标量计算单元,执行所有标量计算指令;AGU为地址计算单元,执行所有地址计算指令和加载/存储指令;SEQ为程序控制单元,执行所有跳转指令;VCU为向量计算单元,执行所有向量计算指令。
向量处理单元采用变长流水级结构,其流水级分别是F1、F2、D、E0、E1、…、EK级,其中K为大于等于1的自然数。F1级为指令预取级,F2级为指令返回级,D级为解码级,E0至EK级为指令执行级。SCU、AGU、SEQ、VCU四个功能部件并行运行,共用F1、F2流水级,但四个功能单元在D、E0、E1、…、EK级分离,各个功能单元包括独立的运算部件和流水寄存器,流水线数也不尽相同,如图6所示。
在F1级,取指单元向指令总线发出取指请求和取指地址,同时,总线返回状态信息,表明该次请求是否被接受。如果该次请求末被接受,取指单元必须在下一时钟周期重新发起请求。
在F2级,取指单元从指令总线获取指令并将指令分发给四个功能单元(SCU、AGU、SEQ、VCU)。如果当前周期指令总线没有返回指令,取指单元必须在接下来的时钟周期内等待指令返回。
在D级,四个功能单元分别进行指令译码,地址产生单元(AGU)、标量计算单元(SCU)、向量计算单元(VCU)读取源操作数。同时,AGU单元完成地址计算。
在E0、E1、…、EK级,标量计算单元(SCU)和向量计算单元(VCU)进行计算,并将计算结果写回寄存器。
地址产生单元(AGU)在E0级向数据总线发出加载/存储请求和地址,同时,总线返回状态信息,表明该次请求是否被接受。如果该次请求末被接受,流水线停顿,同时AGU必须在下一时钟周期重新发起请求。
AGU在E1级读取数据总线操作结果,如果为加载指令,把返回数据写回寄存器。如果当前周期数据总线没有返回操作结果,流水线必须停顿,同时AGU在接下来的周期内重新读取总线操作结果。
向量计算单元VCU和地址产生单元AGU在第三层次优化并行计算,即在指令内优化向量并行计算。向量计算单元包括多个并行的高性能运算部件,可对多个向量元素进行并行计算;同时,VCU中设计专用的横向求和网络,优化横向求和以及点积相关指令。地址产生单元与并行总线相连,配合并行存储结构,可实现连续向量或离散向量的并行存储。因此,向量处理引擎具有并行存储、并行传送、并行计算的特性,优化了向量计算,如图7所示。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。