基于多输入单输出的FIFO结构的GPU数据处理系统的制作方法

文档序号:30497764发布日期:2022-06-22 07:06阅读:254来源:国知局
基于多输入单输出的FIFO结构的GPU数据处理系统的制作方法
基于多输入单输出的fifo结构的gpu数据处理系统
技术领域
1.本发明涉及gpu数据处理技术领域,尤其涉及一种基于多输入单输出的fifo结构的gpu数据处理系统。


背景技术:

2.基于gpu的数据处理中存在多种并行处理的场景,需要将并行输出的信息存入到fifo(first input first outpu)中供后级使用,但是,由于现有的fifo是先出队列,且每次只能输入一个信息,而不能并行输入多个信息,当遇到并行输出场景时,则只能分别输入多个并行输出的信息,这样势必会造成并行输出信息通道的堵塞,降低gpu的数据处理效率。由此可知,如何实现fifo的并行多输入,提高gpu的数据处理效率成为亟待解决的技术问题。


技术实现要素:

3.本发明目的在于,提供一种基于多输入单输出的fifo结构的gpu数据处理系统,提高了gpu的数据处理效率。
4.本发明提供了一种基于多输入单输出的fifo结构的gpu数据处理系统,包括映射器、fifo和写指针,其中,所述映射器包括p个输入端口和p个输出端口{e1,e2,
…ep
},e
p
表示第p个输出端口,p的取值范围为1到p,所述p个输入端口用于并行输入q个第三获取数据请求,并将q个第三获取数据请求映射至前q个输出端口{e1,e2,
…eq
},q≤p,将{e1,e2,
…eq
}中的q个第三数据存入所述fifo中;所述fifo为多输入单输出的fifo,用于并行输入q个第三获取数据请求,单个输出fifo中的第三获取数据请求;所述写指针始终指向当前fifo下一待存入数据的行,当前写指针所指行数值为wr,当所述映射器向所述fifo并行存入q个第三获取数据请求后,更新wr。
5.本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种基于多输入单输出的fifo结构的gpu数据处理系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:本发明通过设置映射器、多输入单输出端口的fifo和写指针,能够将并行处理的q个第三获取数据请求信息并行输入至fifo中,避免任何一个第三获取数据请求信息获取通路的堵塞,提高了gpu的数据获取效率。
6.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
7.图1为本发明实施例提供的基于冲突检测的gpu的数据获取系统示意图;图2为本发明实施例提供的基于多输入单输出的fifo结构的gpu数据处理系统示意图。
具体实施方式
8.为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于多输入单输出的fifo结构的gpu数据处理系统的具体实施方式及其功效,详细说明如后。
9.实施例一、本发明实施例一提供了一种基于冲突检测的gpu的数据获取系统,如图1所示,包括位于gpu中的冲突检测模块和p个高速缓冲存储器{c1,c2,
…cp
},其中,c
p
表示第p个高速缓冲存储器(cache),p的取值范围为1到p,p为大于等于2的正整数。
10.所述冲突检测模块用于获取m个第一获取数据请求,并通过冲突检测将其中虚拟地址信息相同的第一获取数据请求进行融合,生成n个第二获取数据请求,n≤m,并将每一第二获取数据请求定向输出至对应的高速缓冲存储器中, c
p
对应的第二获取数据请求队列l
p
为{r
1p
,r
2p


, r
psp },ps为c
p
对应的第二获取数据请求数量,r
ip
表示l
p
中第i个第二获取数据请求,0≤ps≤n,i的取值范围为1到ps。如图1所示示例,可以由调度器来下发 m个第一获取数据请求。需要说明的是,高速缓冲存储器在一个周期(cycle)中只能对一个缓存行(cache line)进行处理,而虚拟地址信息相同的第一获取数据请求需要访问的是同一个缓存行,因此将虚拟地址信息相同的第一获取数据请求进行融合,减少第二获取数据请求的数量,减少所需要的周期数量,提高gpu的数据处理效率。
11.所述p个高速缓冲存储器均与存储器(memory)连接,所述p个高速缓冲存储器并行处理对应的第二获取数据请求,c
p
用于分配ps个周期, 为每一r
ip
分配一个周期逐个处理l
p
中的每一个r
ip
。需要说明的是,存储器可以为gpu中的存储器,也可以为gpu外的存储器,例如cpu(central processing unit:中央处理器)中的存储器,根据具体应用场景而定。
12.作为一种实施例,所述第一获取数据请求包括目标字节数量、偏移量信息、高速缓冲存储器标识信息和虚拟地址信息。其中,目标字节数量可以通过设置访问格式信息来设置,例如,格式为byte,则对应一个字节;格式为word,则对应两个字节;格式为dword,则对应四个字节等等。所述偏移量信息、高速缓冲存储器标识信息和虚拟地址信息按照预设的格式存储至u位数据中,其中,第0-a位用于存储偏移量信息,a+1至b位用于存储高速缓冲存储器标识信息,b+1至u-1位用于存储虚拟地址信息,a、b满足2a=w,2
b-a-1
=p,w为高速缓冲存储器的位宽。以一个具体示例来进一步说明:高速缓冲存储器具体可以设置为位宽为128byte,深度为64行,u设置为48,对应0-47位,那么,0-6位具体可设置为偏移量,当定位到对应的缓存行时,基于偏移量即可确定获取数据的起始位置。假设共设置了4个高速缓冲存储器,即p=4,调度器每次下发16个第一获取数据请求,即m=16,那么,可以将7-8位设置为高速缓冲存储器标识信息,9-47位设置为虚拟地址信息,这样即可将高位设置为地址信息,低位设置为偏移量信息,便于数据的获取。
13.作为一种实施例,所述冲突检测模块包括y个比较器、融合单元和分配单元,y为m
个第一获取数据请求两两任意组合的组合数量,需要说明的是,y的数量直接基于排列组合即可直接计算得到,在此不再赘述。每一比较器用于输入一组第一获取数据请求进行冲突检测,具体包括比较该组第一获取数据请求中的虚拟地址信息是否相同,并将判断结果输出至融合单元。需要说明的是,若虚拟地址信息相同,则表示对应的第一获取数据请求不冲突,若虚拟地址信息不相同,则表示对应的第一获取数据请求存在冲突。例如第一个比较器的两个输入端口用于输入第一个第一获取数据请求和第二个第一获取数据请求进行比较,第二个比较器用于输入第一个第一获取数据请求和第三个第一获取数据请求进行比较等等。
14.作为一种实施例,所述融合单元用于将所有虚拟地址信息相同的第一获取数据请求进行融合,生成一个第二获取数据请求,输出至分配单元,所述第二获取数据请求中包括所有被融合的第一获取数据请求中对应的偏移量信息,共用同一高速缓冲存储器标识信息和虚拟地址信息,这样即可将多个第一获取数据请求融合为一个第二获取数据请求,减少获取数据请求的数量,从而减少数据处理所需要的周期数,提高gpu的数据处理效率。需要说明的是,m个第一获取数据请求中有可能存在与其他任何第一获取数据请求中的虚拟地址信息都不同的情况,因此,所述融合单元还用于将虚拟地址信息与其他第一获取数据请求的虚拟地址信息均不相同的第一获取数据请求直接生成为对应的第二获取数据请求,即直接将第一获取数据请求中的信息作为对应的第二获取数据请求中的信息,并输出至分配单元。
15.所述分配单元用于基于每一第二获取数据请求中的高速缓冲存储器标识信息将第二获取数据请求传输至对应的高速缓冲存储器中,通过分配单元后即可将n个第二获取数据请求划分为p路。
16.作为一种实施例,所述p个高速缓冲存储器中,每一高速缓冲存储器对应一个物理地址存储区间,用于从存储器中获取对应物理地址存储区间中的物理地址对应的数据,p个物理地址存储区间不重叠。可以理解的是,基于每一高速缓冲存储器和物理地址存储区间的对应关系,上游设备在下发第一获取数据请求时,即可直接指定对应的高速缓冲存储器。每一所述物理地址存储区间包括多个物理地址,所述高速缓冲存储器中包括多个缓存行,每一缓存行用于存储一个物理地址对应的地址标识和数据,即每一个缓存行存储一个物理地址对应的数据,地址标识即为物理地址信息。
17.作为一种优选示例,所述p个高速缓冲存储器的宽度和深度均相同,例如p个高速缓冲存储器均设置为宽度为128byte,64line的高速缓冲存储器,p个高速缓冲存储器的宽度和深度均相同便于硬件的设计和布局,也能提高gpu数据处理效率,但可以理解的是,如何需要设置不同宽度和深度的高速缓冲存储器,则在此基础上变形即可。
18.作为一种实施例,c
p
具体用于:在c
p
分配的第i个周期中,基于r
ip
中虚拟地址信息对应的物理地址信息,判断当前c
p
中是否已经存储有对应的数据,若存在,则基于偏移量信息定位到对应的缓存行中的起点,并从起点开始获取目标字节数量的数据。需要说明的是,现有技术中将虚拟地址映射为物理地址的技术均落入本技术保护范围之内,在此不再赘述。若不存在,则基于对应的物理地址信息生成第三获取数据请求,基于第三获取数据请求从所述存储器中获取对应的数据存储至对应的c
p
对应的缓存行中,再基于偏移量信息定位到对应的缓存行中的起点,并从
起点开始获取目标字节数量的数据。本领域技术人员可以理解的是,现有的基于第三获取数据请求从所述存储器中获取对应的数据存储至对应的c
p
对应的缓存行中的实现方式全都落入本发明保护范围之内,在此不再赘述。
19.可以理解的是,高速缓冲存储器初始状态未存储数据,但随着系统的运行,高速缓冲存储器中可能不断存入数据,还可能达到存满的状态,作为一种实施例,在c
p
基于第三获取数据请求从所述存储器中获取对应的数据存储至对应的c
p
对应的缓存行的过程中,c
p
还用于:判断当前c
p
的缓存行是否已存满,若存满,则从根据存储时间和/或使用频率选择一个缓存行,将其中的数据清除,再将从所述存储器中获取对应的数据存储至该缓存行中。具体的,可以仅根据存储时间来选择需清除的缓存行,即将存入时间最久的缓存行清除。也可仅根据使用频率来选择需清除的缓存行,即将距离当前预设时间段内使用频率最低的缓存行清除。亦可以将存储时间和使用频率均考虑在内,设置对应的权重来衡量,选择需清除的缓存行,还可以直接采用现有的lru(least recently used)算法来替换缓存行。
20.实施例一通过对m个第一获取数据请求的冲突检测,将其中虚拟地址信息相同的第一获取数据请求进行融合,减少获取数据请求的数量,并设置p个并行的高速缓冲存储器,并行处理n个第二获取数据请求,提高了gpu的数据获取效率。
21.实施例二、在实施例一中,p个高速缓冲存储器在并行处理时,是有可能出现多个高速缓冲存储器都没有命中(miss)的情况,这种情况下,p个高速缓冲存储器在一个周期内是可能并行输出多个第三获取数据请求的,且并行输出多个第三获取数据请求是有需求同时存入一个fifo中的,本领域技术人员可以理解,gpu的数据处理中,除了实施例一的场景之外,还可能存在其他需要并行输入一个fifo中请求信息的场景,基于此,本发明提出了实施例二,为了便于说明,以实施例一为基础对实施例二进行进一步说明,但实施例二不仅限于适用于实施例一,其他类似的需要多输入的fifo的场景也在本发明保护范围之内。
22.本发明实施例二提供了一种基于多输入单输出的fifo结构的gpu数据处理系统,如图2所示,包括映射器、fifo和写指针,可以理解的是,以实施例一为基础,映射器、fifo和写指针位于p个高速缓冲存储器和存储器之间,且均位于gpu中。所述映射器包括p个输入端口和p个输出端口{e1,e2,
…ep
},e
p
表示第p个输出端口,p的取值范围为1到p,所述p个输入端口用于并行输入q个第三获取数据请求,并将q个第三获取数据请求映射至前q个输出端口{e1,e2,
…eq
},q≤p,将{e1,e2,
…eq
}中的q个第三数据存入所述fifo中。
23.以实施例一为基础,作为示例,所述映射器与p个并行处理的高速缓冲存储器相连接,每一高速缓冲存储器的输出端口连接一个对一个的映射器的输入端口,在一个周期中,当存在q个高速缓冲存储器未命中数据时,q个高速缓冲存储器并行向对应的输入端口输入对应的第三获取数据请求。p个并行处理的高速缓冲存储器输出第三获取数据请求的技术细节已在实施例一种描述,在此不再展开。
24.以实施例一为基础,作为示例,所述第三获取数据请求包括物理地址信息,所述fifo用于单个输出fifo中的第三获取数据请求至存储器中,基于物理地址信息从存储器中获取对应的数据存储至对应的高速缓冲存储器中。实施例一中的相关技术细节在此不再展开。
25.所述fifo为多输入单输出的fifo,用于并行输入q个第三获取数据请求,单个输出
fifo中的第三获取数据请求,即并行向fifo的q个行中存储对应的信息,输出是与现有的fifo相同,逐行读取即可,在此不再赘述。
26.所述写指针始终指向当前fifo下一待存入数据的行,可以理解的是,当前fifo下一待存入数据的行指的是距离当前时刻最近的一次存储,结束后,下一可存粗的行。当前写指针所指行数值为wr,当所述映射器向所述fifo并行存入q个第三获取数据请求后,更新wr。作为一种实施例,所述写指针始终设置在e1上。
27.作为一种实施例,所述映射器还用于判断当前fifo中剩余可存储行数是否大于等于当前q值,若当前fifo中剩余可存储行数大于等于当前q值,则直接执行c1,否则,待当前fifo中剩余可存储行数是否大于等于当前q值时,再执行c1:c1、将输出端口ej的第三获取数据请求存储至fifo的第wr+j-1行,j的取值范围为1到q,判断wr+q是否大于t,若wr+q大于t,则则设置wr=wr+q-t,若wr+q小于等于t,则设置wr=wr+q,其中,t为fifo的深度。
28.作为一种实施例,p个输入端口为{f1,f2,
…fp
},f
p
表示第p个输入端口,所述p个输入端口用于并行输入q个第三获取数据请求,并将q个第三获取数据请求映射至前q个输出端口{e1,e2,
…eq
},具体包括:s1、若{f1,f2,
…fp
}中均输入了第三获取数据请求,则p=q,e
p
=f
p
,否则,进入s2;s2、按照f1,f2,
…fp
的顺序遍历每一输入端口,将第y个存在第三获取数据请求的输入端口的第三获取数据请求映射至ey,y的取值范围为1到q,q《p。
29.以一具体示例来说明,假设p=4,f2和f4输入端口输入了对应的第三获取数据请求,则将f2的第三获取数据请求映射至输出端口e1,将f4输入端口的第三获取数据请求映射至输出端口e2,输出端口e1和e2,将输入端口f2和f4的第三获取数据请求并行存入fifo中,其中e1将f2的第三获取数据请求存入fifo的第wr行,e2将f2的第三获取数据请求存入fifo的第wr+1行。
30.本发明实施例二通过设置映射器、多输入单输出端口的fifo和写指针,能够将并行处理的q个第三获取数据请求信息并行输入至fifo中,避免任何一个第三获取数据请求信息获取通路的堵塞,提高了gpu的数据获取效率。
31.以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1