Simd处理器中局部数据的全局共享方法及装置的制作方法

文档序号:6572224阅读:162来源:国知局
专利名称:Simd处理器中局部数据的全局共享方法及装置的制作方法
技术领域
本发明主要涉及到SIMD流体系结构中运算群部件的局部寄存器文件的设计及互连技术,特指一种SIMD处理器中局部数据的全局共享方法及装置。
背景技术
随着高性能体系结构的出现,对计算要求的越来越高。大数据量的运算要求必须有高速的数据存储带宽。如果没有有效的数据存储,那么对于高性能计算的追求将成为一种空谈。目前高性能计算的主流趋向于用多处理器协同处理来达到高速运算的要求,而对于多处理器的存储结构总的来说现有两种集中共享和分布共享。对于处理器数目较少的多处理器,各个处理器可以共享单个集中式存储器,只要通过一根总线来把处理器和存储器互连起来即可。集中共享存储设计可以扩展到几十个处理器,但是该方式会随着处理器数目的增多变得越来越没有吸引力。为了支持大数量的处理器,存储系统不能采用集中共享的组织方式,而必须分布服务于各个处理器,否则存储系统在提供处理器所要求的大量带宽时将无法避免长时间的延迟。这样有两个好处,第一,如果大多数访问是在节点内的本地存储器中进行,这样作是增大存储带宽比较经济的方法;第二,缩短了本地存储器访问的延迟。在处理器变得越来越快并要求存储器带宽更高和延迟更低的情况下,这两个优点使得分布共享方式在通常情况下都优于集中式共享存储器结构。但是,由于处理器不再共享单一集中存储器,处理器之间的数据通信在某种程度上变得更复杂,并且延迟更大,需要高带宽的互连。

发明内容
本发明要解决的技术问题就在于针对现有技术存在的技术问题,本发明提供一种能够简化分布共享机制、减少分布共享处理器之间的通信延迟、降低其通信复杂度的SIMD处理器中局部数据的全局共享方法及装置。
为解决上述技术问题,本发明提出的解决方案为一种SIMD处理器中局部数据的全局共享方法,其特征在于功能单元局部寄存器文件缓存的局部数据,经过功能单元无操作过路(专门的过路指令实现)之后,输送至运算群内的总线,由群内交叉开关选择写入至运算群内其他局部寄存器文件,实现运算群内部的数据共享;或者经过通信单元输出到群间总线,由群间交叉开关送入其他运算群内部的总线,经其内部交叉写入到远程运算群的局部寄存器,实现运算群间的数据共享。
所述运算群内部的数据共享分为以下几个步骤第一步从源LRF中的相应地址中读出数据,这一步是由编译器向LRF发读地址完成的,从LRF中读出的数据直接送到运算部件的输入端;第二步运算部件将数据直接过路到输出端,该过程由编译器向运算部件发操作码实现,并且由运算部件专门的过路结构保证,编译器向运算部件发过路指令后,运算部件直接将数据送到本部件的输出端;第三步群内总线接收从运算部件输出端送来的数据,群内总线接收相应的数据后,群内选择开关根据编译指令从众多的数据中选出需要的数据准备写入目标LRF;第四步目标LRF将群内总线送来的数据写入相应的项中,这一步也是由编译器控制完成的;编译器向LRF发写地址,数据直接写入LRF中;所述运算群间的数据共享分为以下几个步骤第一步从源LRF0中的相应地址中读出数据,这一步是由编译器向LRF发读地址完成的,从LRF0中读出的数据直接送到运算部件的输入端;第二步运算部件将数据直接过路到输出端,该过程由编译器向运算部件发操作码实现,并且由运算部件专门的过路结构保,编译器向运算部件发过路指令后,运算部件直接将数据送到本部件的输出端;第三步群内总线接收从运算部件输出端送来的数据,群内总线接收相应的数据后,群内选择开关根据编译指令从众多的数据中选出需要的数据准备写入COMM单元的LRF;第四步COMM单元的LRF将群内总线送来的数据写入相应的项中,这一步也是由编译器控制完成的,编译器向LRF发写地址,数据直接写入LRF中;前四步是数据的群内共享过程,即将数据从LRF0中送到COMM单元的LRF中去;第五步COMM单元读出数据并将其送往群间总线,COMM将从LRF中读出的数据送入群间的相应总线上,由群间的交叉开关负责接收;第六步目标COMM选择相应的数据送入目标运算群内总线,编译器向目标COMM单元发送通信指令,由COMM控制群间交叉开关从相应的总线上选取对应数据,并写入群内的总线上;第七步目标LRF3将群内总线送来的数据写入相应的项中,首先编译器控制群内的交叉开关选出数据,然后LRF根据编译器发过来的写地址,将数据直接写入相应项中。
一种SIMD处理器中局部数据的全局共享装置,其特征在于它包括寄存器文件LRF、群内交叉开关、通信单元、群间交叉开关以及控制器,LRF是整个存储结构的核心,每个部件的输入数据均通过一个独立的LRF进行存储后进入LRF,运算部件的输出结果经过群内交叉开关最终输出到LRF中进行存储,控制器负责整个LRF存储结构的调度,每个运算群中的通信单元以及群间交叉开关用来完成运算群间的LRF数据交换,LRF的输入由群内交叉开关根据控制器的要求从各个运算单元和其他功能部件的输出端口选择。
所述寄存器文件LRF的整个LRF地址空间由多个完全独立的地址空间构成,每个运算部件的一个输入对应一个地址空间,它们在逻辑上是独立的,所有的运算群不能对其直接寻址,本地的运算群只有通过统一的控制器对每个地址空间进行间接寻址访问;寄存器的写由控制器从运算群的群内总线选择一个数据后写入控制器指定的地址内;对寄存器的读由控制器直接向寄存器发读地址完成,读出的数据直接送给运算部件;LRF以独立的物理和逻辑空间分布于各个运算部件的输入端口,为运算部件缓存输入数据。
所述群内交叉开关由一个全交叉的多输出选择开关组成,输入是各个功能单元的输出,以总线的方式组织,每个功能单元的输出占一个总线;对于每个LRF的输入,对应于一个群内交叉开关的输出端口;若要对LRF进行写操作,控制器首先发送选择信号给群内交叉开关,群内交叉开关根据选择信号从输入总线上选取一个输入到相应的输出端口,然后根据控制器发给LRF的写地址将数据写入。
与现有技术相比,本发明的优点就在于1、结构简单,实现方便。实际实现的时候每个LRF可以只有几项,这样可以加速数据的存储访问,不至于使得数据的存储访问成为高速数据运算的瓶颈。
2、方式灵活,具有可扩展性。运算群内部可以支持大量的运算单元;同时,运算群的个数也可以进行有效的扩展,该结构都能够有效支持。
3、操作简单,访问延迟低。对寄存器的访问完全由统一的控制器负责,不需要显式的访问操作指令,并且访问寄存器的延迟可以在运算部件工作的时候进行隐藏。
4、可以支持海量数据运算。该存储结构能够为运算部件缓冲足够的数据以满足运算部件快速计算的要求,为了支持海量数据的运算,可以加深寄存器文件的深度,使其能够缓存更多的数据。
5、群间通信机制简单。相对于分布共享以及集中共享机制,其运算群之间的通信机制比较简单。在保证数据可以在运算部件进行旁路的前提下,只要设置一个专用的通信单元负责在各个运算群之间收发数据。


图1是局部缓存数据在运算群内部共享方法的流程示意图;图2是局部缓存数据在运算群间共享方法的流程示意图;图3是本发明中的各个主要模块的连接关系示意图;图4是运算单元与LRF的对应关系示意图;图5是编译器和控制器以及运算群的依赖关系示意图。
具体实施例方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
如图1所示,局部缓存数据在运算群内部方法。对于有n个输入的运算群,有n个LRF与其对应,如图中虚线框所示。LRF的项数由实际运算部件的计算速度决定,对于计算速度快的运算部件LRF的项数要多一些,这样可以缓冲尽可能多的数据,满足计算部件的速度要求。
运算群内部的数据共享分为以下几个步骤第一步从源LRF中的相应地址中读出数据。这一步是由编译器向LRF发读地址完成的,从LRF中读出的数据直接送到运算部件的输入端。
第二步运算部件将数据直接过路到输出端。该过程由编译器向运算部件发操作码实现,并且由运算部件专门的过路结构保证。编译器向运算部件发过路指令后,运算部件直接将数据送到本部件的输出端。
第三步群内总线接收从运算部件输出端送来的数据。群内总线接收相应的数据后,群内选择开关根据编译指令从众多的数据中选出需要的数据准备写入目标LRF。
第四步目标LRF将群内总线送来的数据写入相应的项中。这一步也是由编译器控制完成的。编译器向LRF发写地址,数据直接写入LRF中。
如图2所示,局部缓存数据在运算群间数据共享方法。如图中黑线所示,LRF0中所示地址中的数据经过运算部件的pass通路,然后送至群内交叉开关,经群内总线送到COM的DATARF中存储,由通信单元送到群间总线上,目标LRF3所在的运算群的通信单元根据控制器的要求从群间总线上选取LRF0来的数据送到群内总线上,经群内交叉开关送到LRF3的输入端,然后写入LRF3中。至此,LRF0中的数据写入了LRFn中,完成了一次群间通信操作。
运算群间的数据共享方法分为以下几个步骤第一步从源LRF0中的相应地址中读出数据。这一步是由编译器向LRF发读地址完成的,从LRF0中读出的数据直接送到运算部件的输入端。
第二步运算部件将数据直接过路到输出端。该过程由编译器向运算部件发操作码实现,并且由运算部件专门的过路结构保证。编译器向运算部件发过路指令后,运算部件直接将数据送到本部件的输出端。
第三步群内总线接收从运算部件输出端送来的数据。群内总线接收相应的数据后,群内选择开关根据编译指令从众多的数据中选出需要的数据准备写入COMM单元的LRF。
第四步COMM单元的LRF将群内总线送来的数据写入相应的项中。这一步也是由编译器控制完成的。编译器向LRF发写地址,数据直接写入LRF中。
前四步是数据的群内共享过程,即将数据从LRF0中送到COMM单元的LRF中去。
第五步COMM单元读出数据并将其送往群间总线。COMM将从LRF中读出的数据送入群间的相应总线上,由群间的交叉开关负责接收。
第六步目标COMM选择相应的数据送入目标运算群内总线。编译器向目标COMM单元发送通信指令,由COMM控制群间交叉开关从相应的总线上选取对应数据,并写入群内的总线上。
第七步目标LRF3将群内总线送来的数据写入相应的项中。首先编译器控制群内的交叉开关选出数据,然后LRF根据编译器发过来的写地址,将数据直接写入相应项中。
如图3所示,是本发明中的各个主要模块的连接关系图。本发明将核心级存储结构分为寄存器文件(LRF)、群内交叉开关、通信单元、群间交叉开关以及控制器五大部分。
LRF是整个存储结构的核心,每个部件的输入数据均通过一个独立的LRF进行存储后进入LRF,运算部件的输出结果经过群内交叉开关最终输出到LRF中进行存储。整个LRF地址空间由多个完全独立的地址空间构成,每个运算部件的一个输入对应一个地址空间,它们在逻辑上是独立的,所有的运算群不能对其直接寻址,本地的运算群只有通过统一的控制器对每个地址空间进行间接寻址访问。本地的运算群没有对各个地址空间的访问指令,所有对地址空间的读写访问操作通过控制器统一控制。对寄存器的写由控制器从运算群的群内总线选择一个数据后写入控制器指定的地址内;对寄存器的读由控制器直接向寄存器发读地址完成,读出的数据直接送给运算部件。LRF以独立的物理和逻辑空间分布于各个运算部件的输入端口,为运算部件缓存输入数据,这样可以增加核心级运算的处理带宽,使得更适合大数据量的处理;加快运算部件的处理速度,不至于由于数据的供应不足而浪费运算单元;控制器负责整个LRF存储结构的调度,完成的功能包括按照时序要求向LRF发送读地址或写地址、向群内交叉开关发送总线标号为LRF选择正确的数据来源、向运算群发送适当的过路指令使得从LRF读出来的数据能够正确的传送至其他LRF等。多个运算群以及单个运算群内的所有的LRF均由一个控制器统一控制,运算群间的LRF以SIMD的方式进行相同存储操作。每次进行LRF读写操作时,控制器将相同的信息发往各个运算群的存储结构中,使各个运算群对相同LRF的相同地址进行读写。
运算群间的LRF数据交换通过每个运算群中的一个通信单元完成。源LRF的数据可以通过运算群通信单元显式的通信指令间接传送到其他运算群目标LRF,但是与显式的LRF访问不同的是这种通信所能见到的只是数据本身而不是LRF,也就是说通信操作并不包含直接的LRF访问操作,只有控制器才见到数据来源于哪个LRF,控制器直接将读写地址发往LRF,对LRF进行直接访问操作。各个运算群的通信单元同时执行通信操作,每次通信操作中,根据控制器的要求各个运算群的通信单元将其他运算群需要的数据放到群间通信总线上,并从群间通信总线上取回本运算群需要的数据,完成一次通信操作。如果其他运算群需要多个数据元素,就要由控制器控制所有运算群的通信单元进行多次通信操作。通信单元的输入端也有两个LRF,一个用来保存将要发送到群间总线上的数据(DATARF),另一个用来保存群间总线标号(PERMRF),表示将从哪个总线上选取数据到本地的运算群。通信单元通信需要的数据由群内交叉开关选择某个功能单元的输出获得;群间总线标号由控制器统一发送至各个运算群或者由运算单元计算获得。通信单元支持两类通信指令,一类通信操作的总线标号来自于PERMRF,数据来自于DATARF;另一类通信操作的总线标号来自于DATARF,数据来自于PERMRF。这样做的目的主要是增加指令的灵活性,扩展了通信单元两个输入端可见的寄存器空间。
LRF的输入由群内交叉开关根据控制器的要求从各个运算单元和其他功能部件的输出端口选择。群内交叉开关由一个全交叉的多输出选择开关组成,输入是各个功能单元的输出,以总线的方式组织,每个功能单元的输出占一个总线。对于每个LRF的输入,对应于一个群内交叉开关的输出端口。若要对LRF进行写操作,控制器首先发送选择信号给群内交叉开关,群内交叉开关根据选择信号从输入总线上选取一个输入到相应的输出端口,然后根据控制器发给LRF的写地址将数据写入。
此外,为了对群间通信进行有效的支持,需要运算单元设置旁路机制,使得数据能够从LRF读出后能够直接经过运算单元,而不作其他运算到达群内交叉开关,然后可以通过通信单元的操作传送给其他的运算群。
如图5所示,编译器和控制器以及运算群的依赖关系图。由于本发明将分布的LRF存储结构的控制交由统一的控制器控制,由控制器将LRF访问需要的控制信号按时序要求发往各个LRF及其其他子部件。因此,编译要将LRF的访问操作编译好之后,将LRF的读写信号发至控制器。再由控制器将控制信号发给各个运算群。
权利要求
1.一种SIMD处理器中局部数据的全局共享方法,其特征在于功能单元局部寄存器文件缓存的局部数据,经过功能单元无操作过路(专门的过路指令实现)之后,输送至运算群内的总线,由群内交叉开关选择写入至运算群内其他局部寄存器文件,实现运算群内部的数据共享;或者经过通信单元输出到群间总线,由群间交叉开关送入其他运算群内部的总线,经其内部交叉写入到远程运算群的局部寄存器,实现运算群间的数据共享。
2.根据权利要求1所述的SIMD处理器中局部数据的全局共享方法,其特征在于所述运算群内部的数据共享分为以下几个步骤第一步从源LRF中的相应地址中读出数据,这一步是由编译器向LRF发读地址完成的,从LRF中读出的数据直接送到运算部件的输入端;第二步运算部件将数据直接过路到输出端,该过程由编译器向运算部件发操作码实现,并且由运算部件专门的过路结构保证,编译器向运算部件发过路指令后,运算部件直接将数据送到本部件的输出端;第三步群内总线接收从运算部件输出端送来的数据,群内总线接收相应的数据后,群内选择开关根据编译指令从众多的数据中选出需要的数据准备写入目标LRF;第四步目标LRF将群内总线送来的数据写入相应的项中,这一步也是由编译器控制完成的;编译器向LRF发写地址,数据直接写入LRF中;
3.根据权利要求1或2所述的SIMD处理器中局部数据的全局共享方法,其特征在于所述运算群间的数据共享分为以下几个步骤第一步从源LRF0中的相应地址中读出数据,这一步是由编译器向LRF发读地址完成的,从LRF0中读出的数据直接送到运算部件的输入端;第二步运算部件将数据直接过路到输出端,该过程由编译器向运算部件发操作码实现,并且由运算部件专门的过路结构保,编译器向运算部件发过路指令后,运算部件直接将数据送到本部件的输出端;第三步群内总线接收从运算部件输出端送来的数据,群内总线接收相应的数据后,群内选择开关根据编译指令从众多的数据中选出需要的数据准备写入COMM单元的LRF;第四步COMM单元的LRF将群内总线送来的数据写入相应的项中,这一步也是由编译器控制完成的,编译器向LRF发写地址,数据直接写入LRF中;前四步是数据的群内共享过程,即将数据从LRF0中送到COMM单元的LRF中去;第五步COMM单元读出数据并将其送往群间总线,COMM将从LRF中读出的数据送入群间的相应总线上,由群间的交叉开关负责接收;第六步目标COMM选择相应的数据送入目标运算群内总线,编译器向目标COMM单元发送通信指令,由COMM控制群间交叉开关从相应的总线上选取对应数据,并写入群内的总线上;第七步目标LRF3将群内总线送来的数据写入相应的项中,首先编译器控制群内的交叉开关选出数据,然后LRF根据编译器发过来的写地址,将数据直接写入相应项中。
4.一种SIMD处理器中局部数据的全局共享装置,其特征在于它包括寄存器文件LRF、群内交叉开关、通信单元、群间交叉开关以及控制器,LRF是整个存储结构的核心,每个部件的输入数据均通过一个独立的LRF进行存储后进入LRF,运算部件的输出结果经过群内交叉开关最终输出到LRF中进行存储,控制器负责整个LRF存储结构的调度,每个运算群中的通信单元以及群间交叉开关用来完成运算群间的LRF数据交换,LRF的输入由群内交叉开关根据控制器的要求从各个运算单元和其他功能部件的输出端口选择。
5.根据权利要求4所述的SIMD处理器中局部数据的全局共享装置,其特征在于所述寄存器文件LRF的整个LRF地址空间由多个完全独立的地址空间构成,每个运算部件的一个输入对应一个地址空间,它们在逻辑上是独立的,所有的运算群不能对其直接寻址,本地的运算群只有通过统一的控制器对每个地址空间进行间接寻址访问;寄存器的写由控制器从运算群的群内总线选择一个数据后写入控制器指定的地址内;对寄存器的读由控制器直接向寄存器发读地址完成,读出的数据直接送给运算部件;LRF以独立的物理和逻辑空间分布于各个运算部件的输入端口,为运算部件缓存输入数据。
6.根据权利要求4或5所述的SIMD处理器中局部数据的全局共享装置,其特征在于所述群内交叉开关由一个全交叉的多输出选择开关组成,输入是各个功能单元的输出,以总线的方式组织,每个功能单元的输出占一个总线;对于每个LRF的输入,对应于一个群内交叉开关的输出端口;若要对LRF进行写操作,控制器首先发送选择信号给群内交叉开关,群内交叉开关根据选择信号从输入总线上选取一个输入到相应的输出端口,然后根据控制器发给LRF的写地址将数据写入。
全文摘要
本发明公开了一种SIMD处理器中局部数据的全局共享方法及装置,功能单元局部寄存器文件缓存的局部数据,经过功能单元无操作过路(专门的过路指令实现)之后,输送至运算群内的总线,由群内交叉开关选择写入至运算群内其他局部寄存器文件,实现运算群内部的数据共享;或者经过通信单元输出到群间总线,由群间交叉开关送入其他运算群内部的总线,经其内部交叉写入到远程运算群的局部寄存器,实现运算群间的数据共享。本发明是一种能够简化分布共享机制、减少分布共享处理器之间的通信延迟、降低其通信复杂度的SIMD处理器中局部数据的全局共享方法及装置。
文档编号G06F17/30GK101035055SQ200710034740
公开日2007年9月12日 申请日期2007年4月16日 优先权日2007年4月16日
发明者邢座程, 李勇, 曾献君, 隋兵才, 张明, 穆长富, 阳柳, 马驰远, 陈海燕, 高军, 李晋文, 衣晓飞, 倪晓强, 唐遇星, 张承义, 杨学军, 张民选, 蒋江 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1