并行simd结构中条件数据路由方法

文档序号:7645539阅读:203来源:国知局
专利名称:并行simd结构中条件数据路由方法
技术领域
本发明主要涉及到并行处理器中路由方法的设计领域,特指一种并行SIMD结构中条件数据路由方法。
背景技术
随着多媒体技术中数据并行程序的出现,涌现出了很多针对数据并行的并行微处理器。这些并行处理器能够捕获程序中大量的数据并行性和局部性,具有很高的性能,但对于带有控制相关的程序,其性能会大打折扣。条件执行,能够将控制相关转化成为数据路由,极大扩展了数据并行应用程序的范围。相对于传统的数据并行处理器,带条件流处理机制的流处理器能够获得极高的性能加速比。将条件流技术应用于流体系结构,能够以较少的代价获得很高的性能,是处理控制相关的非常有效技术。

发明内容
本发明要解决的技术问题就在于针对现有技术存在的技术问题,本发明提供一种扩展了数据并行应用程序的范围,使得并行微处理器能够更有效的执行带控制相关应用程序的并行SIMD结构中条件数据路由方法。
为解决上述技术问题,本发明提出的解决方案为一种并行SIMD结构中条件数据路由方法,其特征在于条件处理时将每个运算群根据自身条件值的不同对流记录进行重组和筛选,使重组后的流满足执行某一相同的执行条件,条件操作可以发生在进行流数据计算之前,这叫条件输入流,或发生在流数据计算之后,为条件输出流;(1)、对于条件输入流第一步,首先要进行条件流状态的初始化,初始化的过程由控制部件JB完成;第二步,每次循环处理时,要根据当前循环的条件码进行条件状态的更新;JB更新状态时,要读取上一次循环的条件状态以及当前循环的条件码;JB部件更新完状态位之后要将ready位发给控制器,由控制器根据ready位是否有效,如果ready位有效,控制输入输出单元进行一次条件输入操作,输入的数据写入数据缓冲SP中,向SP写入数据的时候,SP根据JB发来的write_wrap位控制数据写入到双缓冲的哪一半;若ready为0,输入输出单元不进行条件输入操作,相应SP的写操作也不发生;第三步,数据缓冲部件SP根据JB发过来的read_wrap位对相应的项进行一次条件读操作,并将读出来的数据由通信部件COMM发送到群间总线上,同时COMM从群间总线上选取本地需要的数据,并传到群内总线上;每一次条件输入循环从更新状态开始,至此一次条件循环完毕;(2)、对于条件输出流第一步,首先要进行条件流状态的初始化,初始化的过程由控制部件JB完成,其次每次循环处理时,要根据当前循环的条件码进行条件状态的更新;第二步,每次循环处理时,要根据当前循环的条件码进行条件状态的更新;JB更新状态时,要读取上一次循环的条件状态以及当前循环的条件码;第三步,数据缓冲部件SP将数据缓存,向SP写入数据的时候,SP根据JB发来的write_wrap位控制数据写入到双缓冲的哪一半;之后,由控制器根据ready位是否有效,如果ready位有效,控制输入输出单元进行一次条件输出操作,数据首先从缓冲SP中读出,并写入流buffer中;若ready为0,输入输出单元不进行条件输入操作,相应SP的写操作也不发生。
所述JB部件用来保存和更新条件流状态,包括ready_bit、start_cs、read_wrap_bit、write_wrap_bit、stream_id、my_cc和new_data,在每次流记录的传输之前都要从JBRF读入条件流的状态位,对其进行更新并进行存储,这7个状态要同时供UC、SP、VAL和JB四个部件同时使用,以满足三部件协同处理条件流的要求;所述JB部件除了保存和更新条件流的状态,还根据所有运算群的条件码以及条件流状态,计算COMM单元通信所需要的PERM值。
所述JB部件中7个状态位的表示为(1)、ready_bit1位状态位,供微控使用,用于标志处理单元是否进行有效的数据传输,将数据写入外部存储或者从外部存储读入数据;(2)、start_cslog2n(n为处理单元的个数)位指针,供SP使用,表示每次条件处理时从数据缓冲的那一项开始读或者写操作;(3)、read_wrap_bit1位标志位,供SP使用,表示每次条件处理时从数据缓冲的哪个半缓冲读取数据;(4)、write_wrap_bit1位标志位,供SP使用,表示每次条件处理时向数据缓冲的哪个半缓冲写入数据;(5)、stream_idlog2k(k为能处理的最大流的个数)位标志位,供JB和VAL部件使用,标识本次条件处理的数据流的id号;
(6)、my_cc1位标志位,供VAL部件使用,表示本次条件处理中本处理单元的条件码值;(7)、new_data1位标志位,供VAL使用,表示运算群需要处理的数据是否已经在SP中存储。new_data为1,表示运算群需要的数据在SB中;否则,表示运算群需要的数据在SP中。
所述VAL部件用来追踪流何时结束;SP部件作为一个可动态寻址的存储器使用,从JB获得输入以处理条件读写;每个运算群中的通信部件与群间总线相连,负责不同运算群之间的数据通信,每个运算群的JB部件和条件码总线相连,每个运算群的JB部件为条件码总线提供一位条件码,供其它运算群使用;条件执行机制的各功能部件都具有各自的本地寄存器文件,在运算群内部,LRF的输入数据与功能部件的输出通过交叉开关与运算群内部互联总线连接,功能部件的运算结果送到内部互联总线,然后通过该总线送到指定的内部寄存器文件中。
与现有技术相比,本发明的优点就在于1、本发明能够解决并行微处理器,尤其是SIMD结构的数据并行处理器,执行带控制相关的数据并行程序时,性能严重下降问题;2、条件数据路由方法能够将控制相关转化为数据路由,这样就扩展了数据并行应用程序的范围,使得并行微处理器能够更有效的执行带控制相关的应用程序。
3、条件处理时,每个运算群可以根据自身条件值的不同对流记录进行重组和筛选,使重组后的流满足执行某一相同的执行条件,从而避免了计算过程中根据数据选择执行不同的操作而产生分支。条件执行机制实际上是将控制相关转变成了数据路由操作。
4、条件处理时各个运算群不必为了等待其他运算群的处理完成而进行不必要的空转,每个运算群可以连续的进行条件处理,减少了由于条件的引入而导致的运算群空转,节省了功耗。
5、条件处理可以在各个运算群之间进行负载平衡控制,减少了由于SIMD结构的处理器之间任务分配不均而导致的资源浪费。


图1是条件输入流和输出流的处理流程图;图2是运算群中条件执行机制各个部件的详细连接关系;图3是条件执行机制的关键指令的形式化描述;图4是包含四个运算群的流处理器中的条件路由实例。
具体实施例方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
本发明已应用在国防科技大学自行研制的YHFT64-2流处理器中。
本发明在条件处理时将每个运算群根据自身条件值的不同对流记录进行重组和筛选,使重组后的流满足执行某一相同的执行条件,条件操作可以发生在进行流数据计算之前,为条件输入流,或发生在流数据计算之后,为条件输出流。
如图1所示,对于条件输入流第一步,首先要进行条件流状态的初始化,初始化的过程由控制部件JB完成,初始化的指令为INIT_CISTATE,初始化的内容包括将ready位置0,将start_cs设为0,将read_wrap置为0,将write_wrap置为1,并将stream_id初始化。
第二步,每次循环处理时,要根据当前循环的条件码进行条件状态的更新。JB更新状态时,要读取上一次循环的条件状态以及当前循环的条件码,更新状态的指令是GEN_CISTATE,更新的具体内容如图3中指令伪码所示。JB部件更新完状态位之后要将ready位发给控制器,由控制器根据ready位是否有效,如果ready位有效,控制输入输出单元进行一次条件输入操作,输入的数据写入数据缓冲SP中,向SP写入数据的时候,SP根据JB发来的write_wrap位控制数据写入到双缓冲的哪一半。若ready为0,输入输出单元不进行条件输入操作,相应SP的写操作也不发生。
第三步,数据缓冲部件SP根据JB发过来的read_wrap位对相应的项进行一次条件读操作,并将读出来的数据由通信部件COMM发送到群间总线上,同时COMM从群间总线上选取本地需要的数据,并传到群内总线上。每一次条件输入循环从更新状态开始,至此一次条件循环完毕。
对于条件输出流第一步,首先要进行条件流状态的初始化,初始化的过程由控制部件JB完成,初始化的指令为INIT_COSTATE,初始化的内容包括将ready位置0,将start_cs设为0,将read_wrap置为1,将write_wrap置为0,并将stream_id初始化。其次每次循环处理时,要根据当前循环的条件码进行条件状态的更新。
第二步,每次循环处理时,要根据当前循环的条件码进行条件状态的更新。JB更新状态时,要读取上一次循环的条件状态以及当前循环的条件码,更新状态的指令是GEN_COSTATE,更新的具体内容如图3中指令伪码所示。与条件输入流不同的是,条件输入流在JB部件更新完状态位之后,通信部件COMM首先根据JB发来的perm从群间总线上选取一路数据送到群内的总线上。
第三步,数据缓冲部件SP将数据缓存,向SP写入数据的时候,SP根据JB发来的write_wrap位控制数据写入到双缓冲的哪一半。之后,由控制器根据ready位是否有效,如果ready位有效,控制输入输出单元进行一次条件输出操作,数据首先从缓冲SP中读出,并写入流buffer中。若ready为0,输入输出单元不进行条件输入操作,相应SP的写操作也不发生。
图2是运算群中条件执行机制各个部件的详细连接关系。完成图2所述的整个条件流的处理过程需要以下几个功能块状态控制模块(JB)、有效数据控制模块(VAL)、数据缓冲模块(SP)和通信模块(COMM),在条件流的处理过程中,各个模块完成的功能是1.JB模块JB部件用来保存和更新条件流状态,包括ready_bit、start_cs、read_wrap_bit、write_wrap_bit、stream_id、my_cc和new_data,在每次流记录的传输之前都要从JBRF读入条件流的状态位,对其进行更新并进行存储。这7个状态要同时供UC、SP、VAL和JB四个部件同时使用,以满足三部件协同处理条件流的要求。
这7个状态的含义是√ready_bit1位状态位,供微控使用,用于标志处理单元是否进行有效的数据传输,将数据写入外部存储或者从外部存储读入数据。
√start_cslog2n(n为处理单元的个数)位指针,供SP使用,表示每次条件处理时从数据缓冲的那一项开始读或者写操作。
√read_wrap_bit1位标志位,供SP使用,表示每次条件处理时从数据缓冲的哪个半缓冲读取数据。
√write_wrap_bit1位标志位,供SP使用,表示每次条件处理时向数据缓冲的哪个半缓冲写入数据。
√stream_idlog2k(k为能处理的最大流的个数)位标志位,供JB和VAL部件使用,标识本次条件处理的数据流的id号。
√my_cc1位标志位,供VAL部件使用,表示本次条件处理中本处理单元的条件码值。
√new_data1位标志位,供VAL使用,表示运算群需要处理的数据是否已经在SP中存储。new_data为1,表示运算群需要的数据在SB中;否则,表示运算群需要的数据在SP中。
JB部件除了保存和更新条件流的状态,还根据所有运算群的条件码以及条件流状态,计算COMM单元通信所需要的PERM值。
2.VAL模块VAL追踪流何时结束。这在条件流中当输出的有效数据总数不是运算群个数的倍数要填充流的时候非常必要。
VAL更新的条件流的状态标志包括valid、ccend和ccflush。valid和ccend用于条件输入流,来处理流结束后仍然有数据请求的情况;ccflush用于条件输出流,来处理输出流末尾记录个数不够运算群个数的整数倍的清空问题。这三个状态标志的具体含义是√valid1位标示位,当运算群的SP的双buffer中还有有效数据(条件流中的有效数据)的时候,valid置true。一旦所有运算群的SP中所有有效数据都被读出,则valid被置为false。这个valid标志位在所有运算群中的值是一致的。
√ccend1位标示位,只有在条件输入流的时候有效。每个运算群都有一位,用于给每个运算群指示它们从条件输入流中读入的数据是否是有效的。由于条件输入流的长度不一定是运算群数目的整数倍,因此当接近条件输入流末尾时,运算群接受到的数据可能是无效的。接受无效数据的运算群的ccend被置为false。举例那么当输入流已经到了末尾(EOS)时,现在所有的运算群的SP的双buffer中还剩下3个有效数据,而却有5个运算群请求数据,那么就有两个运算群中的ccend被置为false。
√ccflush1位标示位,只有在条件输出流的时候有效。在清空输出流时,对末尾不满n(运算群数目)的情况,用于控制当前运算群填充有效数据还是NULL值。如果ccflush为true则填充的是有效数据,如果是false则填充的是NULL值。
ccflush在条件输出流的末尾,由程序员指定更新或者固定更新,更新的过程是首先读取条件流状态,根据条件流状态更新ccflush,在更新ccflush的同时还要更新ready_bit状态位,供最后一次输出使用。
3.数据缓冲模块(SP)运算群内部,SP作为一个可动态寻址的存储器使用。它可以从JB获得输入以处理条件读写。SP为一读一写双端口寄存器文件。可以支持写穿透。SP支持基变址寻址方式,其中偏移地址由指令指定,基地址由LRF给出。
条件流在输入输出的时候都经过SP缓存,条件输入指令从SP获得数据,条件输出指令将数据输出到SP。条件操作将从SP获得的有效数据广播到由条件选择码指定的运算群。条件输出操作将由条件码指定的运算群的有效输出数据输出到SP。条件输入好比是一个解包过程,条件输出好比是一个打包过程。
条件执行部件从外部存储器送到SP的数据或者SP要发送到外部存储器的数据都要通过输入输出单元进行锁存。输入输出单元负责从流缓冲(SB)中获得流数据以及将运算群的结果送回SB。
4.通信模块每个运算群中的通信部件(COMM)与群间总线相连,负责不同运算群之间的数据通信。每个运算群的JB部件和条件码总线相连,每个运算群的JB部件为条件码总线提供一位条件码,供其它运算群使用。n个运算群合起来使条件码总线共有n位条件码。
COMM单元控制运算群处理条件流的接口。输入来自permutation寄存器、数据寄存器和运算群间总线。
在kernel不能完全数据并行的时候,COMM单元用来在运算群之间进行数据交换。COMM用多个数据bus实现,接收来自运算群和微控制器的数据并进行广播。每个COMM包含一个多选一开关,选择一路bus输入。
5.局部寄存器文件(LRF)条件执行机制的各功能部件都具有各自的本地寄存器文件(LRF)。在运算群内部,LRF的输入数据与功能部件的输出通过交叉开关与运算群内部互联总线连接。功能部件的运算结果送到内部互联总线,然后通过该总线送到指定的内部寄存器文件中。
JB部件是整个条件执行机制的核心,每次条件处理时负责更新条件状态,并将条件状态存储到JBRF。从JBRF读出的条件状态同时供SP、VAL和JB三个部件使用,SP从JBRF读取的状态包括read_wrap_bit和write_wrap_bit。VAL从JBRF读取的状态包括new_data、my_cc、ready_bit和start_cs。JB从JBRF读取所有的条件状态信息,同时,JB部件也负责为COM部件产生通信序列,每次条件流状态更新时,JB读取各个运算群的条件码,并根据条件码计算本运算群的置换序列。CCRF部件存储本运算群的条件码值,每次条件处理时将本运算群的条件码送到条件码总线上,并在条件处理结束时存储VAL的更新结果。SP缓冲数据除了要读取read_wrap_bit和write_wrap_bit,还要从运算群内总线接收微控的读写偏移地址、运算单元计算出来的读写基地址以及要缓冲的数据。VAL部件除了从JBRF读取的数据,还要从VALRF读取valid值,并查询正在处理的条件流的结束信号。COM部件从群内总线选取数据送到群间总线供其他运算群使用,并根据PERM值从群间总线上选取相应的数据送到群内总线上。
图3是条件流关键指令的形式化描述伪码。条件流传输指令COND_IN和COND_OUT需要一个就绪标志位(ready_bit),此位保存在UC的ready_bit FIFO中,对于每一个流都有一个FIFO,因此实际有8个宽度为1的ready_bit FIFO。由于流数据可以按记录组织,即一个记录可以包含多个数据,因此条件流数据的输入输出分为两种对记录末尾数据的输入输出和对非末尾数据的输入输出。因此COND_IN指令包含COND_IN_R和COND_IN_D两条指令,COND_OUT指令包含COND_OUT_R和COND_OUT_D两条指令,COND_IN_R和COND_OUT_R指令只是从ready_bit FIFO中读取ready_bit,不会改变ready_bit FIFO的状态,而COND_IN D和COND_OUT_D指令会在读出ready_bit的值后将其从FIFO队列的头移出,并且COND_IN_D还负责判断流结束信号。COMM单元执行的通信操作还包括其他类型的通信,功能类似。
运算群中的JB需要用到ready_bit,运算群将它存储到JBRF中,便于以后的操作访问。当SP中的双缓冲中的数据没有准备好时,为了指示是否撤销(squash)流缓冲的访问,微码控制器也需要用到ready_bit。为了实现这种功能,还要将ready_bit存储到与JBRF相似的ready_bit FIFO中,ready_bit FIFO位于微码控制器中。为了简化代码维护,将运算群结构控制的完全一样,8个运算群同时输出ready_bit到ready_bit FIFO,由于8个运算群的ready_bit值是一样的,所以微码控制器将接收到的8个ready_bit简单的进行位或操作之后存入ready_bit FIFO。
运算群的CC条件码在运算群中产生,并保存在专门的CCRF中,供运算群和微控(实现CHECK_NAY和CHECK_ALL指令)使用,因此CC码必须对所有的运算群和微控可见,用一组群间CC码总线实现。JB执行GEN_CISTATE和GEN_COSTATE指令时从运算群的CCRF中将其读出并将其送到群间的CC码总线上。
GEN_CISTATE指令将产生的my_cc状态存储在JBRF,是存储在JBRF中的条件流状态的一部分,供稍后的GEN_CCEND指令使用。
start_cs由GEN_CISTATE和GEN_COSTATE指令产生,它由INIT_CISTATE和INIT_COSTATE指令初始化,是存储在JBRF中的条件流状态的一部分。
一个叫做PERMRF的专用寄存器文件用来驱动通信单元的输入,该寄存器文件保存着JB产生的PERM,这个值通过GEN_CISTATE和GEN_COSTATE指令产生,在COMMCLPERM指令中当作输入参数用到。
GEN_CISTATE和GEN_COSTATE指令还将产生的read_wrap和write_wrap,它们也保存在JBRF中,供JB和SP使用。实际实现的时候是为SP单独做了一个端口,JB在更新read_wrap和write_wrap后,写入JBRF,SP使用的时候直接从专有端口读取。
valid位保存在VALIDRF中,用来判断运算群的条件输入流是否含有有效数据。当到达流的最后一个数据时,该位将在SP的双buffer中最后一批有效数据被传输后重新置位。
eos位标志了微码控制器的内部状态,会被JB用到,因此,在传输条件码的运算群CC总线旁边还有另外一组eos信号总线,用于将eos从微码控制器传到JB,其数据宽度为8bit,每位可以指示一个流。
ccend位由GEN_CCEND指令产生,保存在CCRF中。
为了实现输出流的清空(flush),必须在每个运算群中产生一个用于清空的条件码,每个运算群使用它在NULL输出值和实际有效数据之间作操作。这个1位的条件值就是ccflush,它由GEN_CCFLUSH指令产生,保存在CCRF中。
图4是包含四个运算群的条件执行部件的处理实例。如图(a)所示的kernel程序,对一个输入流的每个元素首先进行Compter_1()计算,然后只对对流中的circle元素进行computer_circle()计算。图(b)是该程序在没有任何条件处理机制的只含有四个运算群的流处理器上的执行过程。在没有任何条件处理机制的情况下,四个运算群进行computer_circle()计算时,四个运算群的工作量产生了不平衡的状况,运算群1要处理四个数据元素,而运算群0和运算群3只要处理1个数据元素,因此,由于SIMD的特性运算群0和运算群3在处理完自己的数据之后必须等待运算群1,直到运算群1计算完成,四个运算群才能同时进行下一步的运算。在SIMD的控制机制下,由于相关控制引起的这种负载不平衡的问题在X流处理器中会导致资源的极大浪费,最先完成计算任务的运算群必须进行空转等待其他的运算群,所有的运算群都完成一个计算任务之后,才能进行下一个计算任务,并且进入后续运算的数据在各个运算群之间仍旧存在不平衡的问题,因此负载不平衡的问题在整个kernel的运算过程中都是存在的,kernel的运算过程越多,这种负载不平衡导致的资源浪费的情况就越严重。
图(c)是图(a)程序在YHFT64-2条件执行的过程。条件机制首先将引起负载不平衡的数据流中的数据进行筛选,形成一个只包含相同数据类型的流,然后将这个数据流平均分给各个运算群进行运算,使得各个运算群同时处理同种类型的数据元素,就不会产生有的运算群必须空闲以等待其它运算群完成计算,避免了负载不平衡的问题。
权利要求
1.一种并行SIMD结构中条件数据路由方法,其特征在于条件处理时将每个运算群根据自身条件值的不同对流记录进行重组和筛选,使重组后的流满足执行某一相同的执行条件,条件操作可以发生在进行流数据计算之前,为条件输入流,或发生在流数据计算之后,为条件输出流;(1)、对于条件输入流第一步,首先要进行条件流状态的初始化,初始化的过程由控制部件JB完成;第二步,每次循环处理时,要根据当前循环的条件码进行条件状态的更新;JB更新状态时,要读取上一次循环的条件状态以及当前循环的条件码;JB部件更新完状态位之后要将ready位发给控制器,由控制器根据ready位是否有效,如果ready位有效,控制输入输出单元进行一次条件输入操作,输入的数据写入数据缓冲SP中,向SP写入数据的时候,SP根据JB发来的write_wrap位控制数据写入到双缓冲的哪一半;若ready为0,输入输出单元不进行条件输入操作,相应SP的写操作也不发生;第三步,数据缓冲部件SP根据JB发过来的read_wrap位对相应的项进行一次条件读操作,并将读出来的数据由通信部件COMM发送到群间总线上,同时COMM从群间总线上选取本地需要的数据,并传到群内总线上;每一次条件输入循环从更新状态开始,至此一次条件循环完毕;(2)、对于条件输出流第一步,首先要进行条件流状态的初始化,初始化的过程由控制部件JB完成,其次每次循环处理时,要根据当前循环的条件码进行条件状态的更新;第二步,每次循环处理时,要根据当前循环的条件码进行条件状态的更新;JB更新状态时,要读取上一次循环的条件状态以及当前循环的条件码;第三步,数据缓冲部件SP将数据缓存,向SP写入数据的时候,SP根据JB发来的write_wrap位控制数据写入到双缓冲的哪一半;之后,由控制器根据ready位是否有效,如果ready位有效,控制输入输出单元进行一次条件输出操作,数据首先从缓冲SP中读出,并写入流buffer中;若ready为0,输入输出单元不进行条件输入操作,相应SP的写操作也不发生。
2.根据权利要求1所述的并行SIMD结构中条件数据路由方法,其特征在于所述JB部件用来保存和更新条件流状态,包括ready_bit、start_cs、read_wrap_bit、write_wrap _bit、stream_id、my_cc和new_data,在每次流记录的传输之前都要从JBRF读入条件流的状态位,对其进行更新并进行存储,这7个状态要同时供UC、SP、VAL和JB四个部件同时使用,以满足三部件协同处理条件流的要求;所述JB部件除了保存和更新条件流的状态,还根据所有运算群的条件码以及条件流状态,计算COMM单元通信所需要的PERM值。
3.根据权利要求2所述的并行SIMD结构中条件数据路由方法,其特征在于所述JB部件中7个状态位的表示为(1)、ready_bit1位状态位,供微控使用,用于标志处理单元是否进行有效的数据传输,将数据写入外部存储或者从外部存储读入数据;(2)、start_cslog2n(n为处理单元的个数)位指针,供SP使用,表示每次条件处理时从数据缓冲的那一项开始读或者写操作;(3)、read_wrap_bit1位标志位,供SP使用,表示每次条件处理时从数据缓冲的哪个半缓冲读取数据;(4)、write_wrap_bit1位标志位,供SP使用,表示每次条件处理时向数据缓冲的哪个半缓冲写入数据;(5)、stream_idlog2k(k为能处理的最大流的个数)位标志位,供JB和VAL部件使用,标识本次条件处理的数据流的id号;(6)、my_cc1位标志位,供VAL部件使用,表示本次条件处理中本处理单元的条件码值;(7)、new_data1位标志位,供VAL使用,表示运算群需要处理的数据是否已经在SP中存储,new_data为1,表示运算群需要的数据在SB中;否则,表示运算群需要的数据在SP中。
4.根据权利要求2或3所述的并行SIMD结构中条件数据路由方法,其特征在于所述VAL部件用来追踪流何时结束;SP部件作为一个可动态寻址的存储器使用,从JB获得输入以处理条件读写;每个运算群中的通信部件与群间总线相连,负责不同运算群之间的数据通信,每个运算群的JB部件和条件码总线相连,每个运算群的JB部件为条件码总线提供一位条件码,供其它运算群使用;条件执行机制的各功能部件都具有各自的本地寄存器文件,在运算群内部,LRF的输入数据与功能部件的输出通过交叉开关与运算群内部互联总线连接,功能部件的运算结果送到内部互联总线,然后通过该总线送到指定的内部寄存器文件中。
全文摘要
本发明公开了一种并行SIMD结构中条件数据路由方法,条件处理时将每个运算群根据自身条件值的不同对流记录进行重组和筛选,使重组后的流满足执行某一相同的执行条件,条件操作可以发生在进行流数据计算之前,为条件输入流,或发生在流数据计算之后,为条件输出流,对条件输入流和条件输出流分别控制。本发明是一种扩展了数据并行应用程序的范围,使得并行微处理器能够更有效的执行带控制相关应用程序的并行SIMD结构中条件数据路由方法。
文档编号H04L29/02GK101035071SQ20071003474
公开日2007年9月12日 申请日期2007年4月16日 优先权日2007年4月16日
发明者李勇, 曾献君, 邢座程, 隋兵才, 张明, 穆长富, 阳柳, 马驰远, 陈海燕, 高军, 李晋文, 衣晓飞, 倪晓强, 唐遇星, 张承义, 杨学军, 张民选, 蒋江 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1