本公开涉及计算机,尤其涉及一种数据访问方法、装置及设备。
背景技术:
1、在片上系统对数据进行处理时,通常需要先从片外存储器中读取一个数据,对读取到的数据进行处理,然后再从片外存储器中读取下一个数据,对读取到的下一个数据进行处理,以此类推,直至所有数据处理完成。但是,由于每访问一次片外存储器,都需要重新寻址,因此多次访问片外存储器会产生较大的时延,导致数据访问和数据处理的流程的效率较低。
技术实现思路
1、本公开提供了一种数据访问方法、装置及设备,能够提高数据访问和数据处理的流程的效率。
2、根据本公开实施例的一方面,提供一种数据访问方法,所述方法包括:
3、在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
4、基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
5、通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
6、通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
7、可选地,所述在源文件中获取访存语句和非访存语句,包括:
8、在所述源文件的多个参数中,确定目标参数,将所述目标参数所在的语句确定为所述访存语句,所述目标参数是指与数据访问功能有关的参数;
9、确定所述访存语句所在的循环语句,所述循环语句用于指示循环执行读取数据并对所述数据进行处理;
10、将所述循环语句中除了所述访存语句之外的其他语句,确定为所述非访存语句。
11、可选地,所述源文件包括第一预编译语句,所述第一预编译语句用于指示与数据访问功能有关的参数;所述在所述源文件的多个参数中,确定目标参数,包括:
12、在所述多个参数中,将所述第一预编译语句指示的参数确定为所述目标参数。
13、可选地,所述基于所述访存语句,生成数据访问指令,包括:
14、创建第一原始指令;
15、在所述源文件中获取所述访存语句对应的定义语句和所述访存语句对应的初始化语句,所述访存语句对应的定义语句用于对所述访存语句中的变量进行定义,所述访存语句对应的初始化语句用于设置所述访存语句中的变量的初始值;
16、将所述访存语句、所述访存语句对应的定义语句和所述访存语句对应的初始化语句填充至所述第一原始指令,得到所述数据访问指令。
17、可选地,所述基于所述非访存语句,生成数据处理指令,包括:
18、创建第二原始指令;
19、在所述源文件中获取所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句,所述非访存语句对应的定义语句用于对所述非访存语句中的变量进行定义,所述非访存语句对应的初始化语句用于设置所述非访存语句中的变量的初始值;
20、将所述非访存语句、所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句填充至所述第二原始指令,得到所述数据处理指令。
21、可选地,所述通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,包括:
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、填充子单元,被配置为执行将所述访存语句、所述访存语句对应的定义语句和所述访存语句对应的初始化语句填充至所述第一原始指令,得到所述数据访问指令。
57、可选地,所述指令生成单元,包括:
58、创建子单元,被配置为执行创建第二原始指令;
59、获取子单元,被配置为执行在所述源文件中获取所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句,所述非访存语句对应的定义语句用于对所述非访存语句中的变量进行定义,所述非访存语句对应的初始化语句用于设置所述非访存语句中的变量的初始值;
60、填充子单元,被配置为执行将所述非访存语句、所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句填充至所述第二原始指令,得到所述数据处理指令。
61、可选地,所述数据访问单元,被配置为执行通过所述芯片将缓存地址传入所述数据访问指令,调用所述数据访问指令,从所述片外存储器中连续地读取数据,并将读取到的数据存储于所述缓存地址指示的片内缓存空间中;
62、所述数据处理单元,被配置为执行通过所述芯片将所述缓存地址传入所述数据处理指令,从所述缓存地址指示的片内缓存空间中读取数据,并对读取到的数据进行处理。
63、可选地,所述指令生成单元,还被配置为执行生成缓存访问指令;
64、所述数据访问单元,被配置为执行通过所述芯片调用所述数据访问指令,从所述片外存储器中连续地读取数据,并触发所述缓存访问指令,执行所述缓存访问指令将读取到的数据存储于所述片内缓存空间;
65、所述数据处理单元,被配置为执行通过所述芯片调用所述数据处理指令,触发所述缓存访问指令,执行所述缓存访问指令从所述片内缓存空间中读取数据。
66、可选地,所述语句获取单元,还被配置为执行在所述访存语句包括条件子语句的情况下,删除所述访存语句中的所述条件子语句,在所述非访存语句中添加所述条件子语句,所述条件子语句指示待处理的数据所需满足的条件。
67、可选地,所述数据处理单元,包括:
68、筛选子单元,被配置为执行通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取满足所述条件子语句指示的条件的数据;
69、处理子单元,被配置为执行对读取到的满足所述条件的数据进行处理。
70、可选地,所述装置还包括:
71、指令设置单元,被配置为执行在所述源文件中检测到第二预编译语句的情况下,将所述数据访问指令和所述数据处理指令设置为并行调用,以使所述数据访问指令和所述数据处理指令被并行调用,所述第二预编译语句用于指示生成并行调用的指令。
72、根据本公开实施例的再一方面,提供了一种芯片,所述芯片存储有数据访问指令和数据处理指令,所述数据访问指令是基于访存语句生成的,所述访存语句用于实现数据访问功能的指令语句,所述数据处理指令是基于非访存语句生成的,所述非访存语句为与数据访问功能无关的指令语句,所述访存语句和所述非访存语句是从源文件中获取的;
73、所述芯片,用于:
74、调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
75、调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
76、根据本公开实施例的再一方面,提供了一种电子设备,所述电子设备包括:
77、处理器;
78、用于存储所述处理器可执行指令的存储器;
79、其中,所述处理器被配置为执行所述指令,以实现如上述方面所述的数据访问方法。
80、根据本公开实施例的再一方面,提供一种计算机可读存储介质,计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述方面所述的数据访问方法。
81、根据本公开实施例的再一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述方面所述的数据访问方法。
82、本公开实施例提供的方案,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,通过芯片调用数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,通过芯片调用数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
83、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。