本技术涉及计算机,尤其涉及一种数据处理方法、装置、设备及可读存储介质。
背景技术:
1、数据在存储器件中可以按照stride存储方式(“从左到右、从上到下”存储顺序)进行存储,也可以按照twiddle存储方式(“zigzag”的z字型存储顺序)进行存储。根据不同的应用场景,上述两种存储方式可以互相进行转换。
2、目前,可以在数据从当前存储器件写入到其他存储器件的过程中转换数据的存储方式。将存储器件的内存划分为可以同时执行多个写入操作的多个存储体。数据可以被划分为多个数据块,各数据块分别存储在各存储体的多个存储地址中。为了提高数据的存储方式的转换效率,可通过多个线程同时访问多个存储体,同时执行数据的写入操作。
3、但是,由于在不同的存储方式下,各数据块的存储顺序互不相同,在通过多个线程同时执行数据的写入操作时,可能会出现存储体冲突的情况,进而降低数据存储顺序转换的效率。
技术实现思路
1、本技术提供一种数据处理方法、装置、设备及可读存储介质,以部分的解决现有技术存在的上述问题。
2、本技术采用下述技术方案:
3、本技术提供了一种数据处理方法,多个线程同时访问分别存储在多个存储体的多个存储地址中的数据块,所述方法包括:
4、在接收到存储顺序转换请求的情况下,确定各数据块在各存储地址中的当前存储顺序,以及确定所述各数据块在所述各存储地址中的目标存储顺序;
5、确定目标时钟周期,针对所述目标时钟周期,根据所述目标存储顺序,从所述各数据块中确定所述目标时钟周期内进行存储顺序转换的各待写入数据块;
6、根据所述当前存储顺序,确定所述各待写入数据块对应的存储体编号和存储地址编号;
7、在所述存储体编号对应存在存储体冲突的情况下,更新所述各待写入数据块对应的存储体编号和存储地址编号;
8、根据更新后的存储体编号和存储地址编号,通过各线程将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序。
9、可选地,确定各数据块在各存储地址中的当前存储顺序,具体包括:
10、确定所述存储顺序转换请求的请求类型;
11、根据所述请求类型,以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序。
12、可选地,在所述请求类型为将各数据块的存储顺序由stride存储顺序转换为twiddle存储顺序的情况下,所述根据所述请求类型,以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序,具体包括:
13、以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块按照从左至右、从上到下的顺序排列,依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序。
14、可选地,确定所述各数据块在所述各存储地址中的目标存储顺序,具体包括:
15、以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块按照之字形顺序排列,依次填入所述各存储体内的各存储地址中,确定所述各数据块在所述各存储地址中的目标存储顺序。
16、可选地,所述数据块包含的数据为图形数据;
17、以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块按照之字形顺序排列,依次填入所述各存储体内的各存储地址中,确定所述各数据块在所述各存储地址中的目标存储顺序,具体包括:
18、确定各数据块中包含的图形数据对应的每纹素平均比特数;
19、根据所述图形数据对应的每纹素平均比特数,以及所述各存储地址存储数据的宽度,确定所述各数据块在所述各存储地址中存储的之字形顺序类型;
20、根据确定出的之字形顺序类型,以所述各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块依次填入所述各存储体内的各存储地址中,确定所述各数据块在所述各存储地址中的目标存储顺序。
21、可选地,在所述请求类型为将各数据块的存储顺序由twiddle存储顺序转换为stride存储顺序的情况下,所述根据所述请求类型,以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序,具体包括:
22、以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块按照之字形顺序排列,依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序。
23、可选地,所述数据块包含的数据为图形数据;
24、以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块按照之字形顺序排列,依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序,具体包括:
25、确定各数据块中包含的图形数据对应的每纹素平均比特数;
26、根据所述图形数据对应的每纹素平均比特数,以及所述各存储地址存储数据的宽度,确定所述各数据块在所述各存储地址中存储的之字形顺序类型;
27、根据确定出的之字形顺序类型,以所述各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块依次填入所述各存储体内的各存储地址中,确定所述各数据块在各存储地址中的当前存储顺序。
28、可选地,确定所述各数据块在所述各存储地址中的目标存储顺序,具体包括:
29、以各存储体的存储体编号为列,以所述各存储地址的存储地址编号为行,将所述各数据块按照从左至右、从上到下的顺序排列,依次填入所述各存储体内的各存储地址中,确定所述各数据块在所述各存储地址中的目标存储顺序。
30、可选地,根据所述当前存储顺序,确定所述各待写入数据块对应的存储体编号和存储地址编号,具体包括:
31、针对每个数据块,根据所述当前存储顺序,确定该数据块的顺序编号;
32、根据该数据块的顺序编号和存储体数量相除得到的商,确定该数据块对应的存储地址编号,并根据该数据块的顺序编号和所述存储体数量相除得到的余数,确定该数据块对应的存储体编号。
33、可选地,更新所述各待写入数据块对应的存储体编号和存储地址编号,具体包括:
34、确定所述目标时钟周期内至少被两个线程同时访问的存储体作为目标存储体,并确定所述目标存储体中被访问的各目标数据块;
35、针对每个目标数据块,确定该数据块对应的移位步长,所述移位步长用于表征该目标数据块被移动的存储体个数;
36、按照该目标数据块对应的移位步长,更新该目标数据块对应的存储体编号。
37、可选地,通过各线程将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序之前,所述方法还包括:
38、根据接收到的存储顺序转换请求,确定存储顺序转换任务对应的图形数据的数据量;
39、根据存储体的数量和存储地址的数量,分割所述图形数据的数据量,得到若干存储顺序转换子任务,并按照所述目标存储顺序对各存储顺序转换子任务进行排序;
40、通过各线程将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序,具体包括:
41、根据所述各存储顺序转换子任务的顺序,通过各线程依次执行所述各存储转换子任务,将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序。
42、可选地,所述存储顺序转换请求由第一存储器件发送;
43、根据更新后的存储体编号和存储地址编号,通过所述各线程将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序,具体包括:
44、根据更新后的存储体编号和存储地址编号,确定所述目标时钟周期内各待写入数据块从所述第一存储器件写入中间存储器件的写入顺序;
45、根据所述写入顺序,通过各线程将所述各数据块依次从第一存储器件写入所述中间存储器件的各存储体中;
46、在所有数据块写入所述中间存储器件的各存储体中时,通过所述各线程将所述各数据块从所述中间存储器件按照目标存储顺序中从低地址从高地址读出,并写入第二存储器件的各存储体内。
47、本技术提供了一种数据处理装置,多个线程同时访问分别存储在多个存储体的多个存储地址中的数据块,所述装置包括:
48、存储顺序确定模块,用于在接收到存储顺序转换请求的情况下,确定各数据块在各存储地址中的当前存储顺序,以及确定所述各数据块在所述各存储地址中的目标存储顺序;
49、待写入数据块确定模块,用于确定目标时钟周期,针对所述目标时钟周期,根据所述目标存储顺序,从所述各数据块中确定所述目标时钟周期内进行存储顺序转换的各待写入数据块;
50、编号确定模块,用于根据所述当前存储顺序,确定所述各待写入数据块对应的存储体编号和存储地址编号;
51、更新模块,用于在所述存储体编号对应存在存储体冲突的情况下,更新所述各待写入数据块对应的存储体编号和存储地址编号;
52、转换模块,用于根据更新后的存储体编号和存储地址编号,通过各线程将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序。
53、本技术提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法。
54、本技术提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据处理方法。
55、本技术采用的上述至少一个技术方案能够达到以下有益效果:
56、本技术提供的数据处理方法中,根据目标存储顺序,从各数据块中确定目标时钟周期内进行存储顺序转换的各待写入数据块,并根据当前存储顺序确定各待写入数据块对应的存储体编号和存储地址编号,在存储体编号对应存在存储体冲突的情况下,更新目标时钟周期内各待写入数据块对应的存储体编号和存储地址编号,并以更新后的存储体编号和存储地址编号,通过各线程将所述各数据块依次从所述当前存储顺序转换到所述目标存储顺序。可见,通过对待写入数据块的存储体编号进行更新的方式,将存在存储体冲突的数据块分别移动到不同的存储体中,减少存储体冲突,提高数据存储顺序转换的效率。