CN115964331A - 一种数据访问方法、装置及设备 - Google Patents
一种数据访问方法、装置及设备 Download PDFInfo
- Publication number
- CN115964331A CN115964331A CN202211520858.1A CN202211520858A CN115964331A CN 115964331 A CN115964331 A CN 115964331A CN 202211520858 A CN202211520858 A CN 202211520858A CN 115964331 A CN115964331 A CN 115964331A
- Authority
- CN
- China
- Prior art keywords
- statement
- data
- access
- chip
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开是关于一种数据访问方法、装置及设备,属于计算机技术领域。方法包括:在源文件中获取访存语句和非访存语句,访存语句为用于实现数据访问功能的指令语句,非访存语句为与数据访问功能无关的指令语句;基于访存语句生成数据访问指令,基于非访存语句生成数据处理指令;通过芯片调用数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中;通过芯片调用数据处理指令,从片内缓存空间中读取数据,并对读取到的数据进行处理。由于将数据访问和数据处理拆分成两个独立的过程,因此数据访问的过程可以连续执行,降低了时延,数据处理函数从片内缓存空间中读取数据的速度较快,能够提高数据访问和数据处理的效率。
Description
本公开基于申请日为2022年09月20日、申请号为63/376,329的美国临时专利申请,并要求该美国临时专利申请的优先权,其全部内容通过引用结合在本公开中作为参考。
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据访问方法、装置及设备。
背景技术
在片上系统对数据进行处理时,通常需要先从片外存储器中读取一个数据,对读取到的数据进行处理,然后再从片外存储器中读取下一个数据,对读取到的下一个数据进行处理,以此类推,直至所有数据处理完成。但是,由于每访问一次片外存储器,都需要重新寻址,因此多次访问片外存储器会产生较大的时延,导致数据访问和数据处理的流程的效率较低。
发明内容
本公开提供了一种数据访问方法、装置及设备,能够提高数据访问和数据处理的流程的效率。
根据本公开实施例的一方面,提供一种数据访问方法,所述方法包括:
在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
可选地,所述在源文件中获取访存语句和非访存语句,包括:
在所述源文件的多个参数中,确定目标参数,将所述目标参数所在的语句确定为所述访存语句,所述目标参数是指与数据访问功能有关的参数;
确定所述访存语句所在的循环语句,所述循环语句用于指示循环执行读取数据并对所述数据进行处理;
将所述循环语句中除了所述访存语句之外的其他语句,确定为所述非访存语句。
可选地,所述源文件包括第一预编译语句,所述第一预编译语句用于指示与数据访问功能有关的参数;所述在所述源文件的多个参数中,确定目标参数,包括:
在所述多个参数中,将所述第一预编译语句指示的参数确定为所述目标参数。
可选地,所述基于所述访存语句,生成数据访问指令,包括:
创建第一原始指令;
在所述源文件中获取所述访存语句对应的定义语句和所述访存语句对应的初始化语句,所述访存语句对应的定义语句用于对所述访存语句中的变量进行定义,所述访存语句对应的初始化语句用于设置所述访存语句中的变量的初始值;
将所述访存语句、所述访存语句对应的定义语句和所述访存语句对应的初始化语句填充至所述第一原始指令,得到所述数据访问指令。
可选地,所述基于所述非访存语句,生成数据处理指令,包括:
创建第二原始指令;
在所述源文件中获取所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句,所述非访存语句对应的定义语句用于对所述非访存语句中的变量进行定义,所述非访存语句对应的初始化语句用于设置所述非访存语句中的变量的初始值;
将所述非访存语句、所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句填充至所述第二原始指令,得到所述数据处理指令。
可选地,所述通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,包括:
通过所述芯片将缓存地址传入所述数据访问指令,调用所述数据访问指令,从所述片外存储器中连续地读取数据,并将读取到的数据存储于所述缓存地址指示的片内缓存空间中;
所述通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理,包括:
通过所述芯片将所述缓存地址传入所述数据处理指令,从所述缓存地址指示的片内缓存空间中读取数据,并对读取到的数据进行处理。
可选地,所述方法还包括:
生成缓存访问指令;
所述通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,包括:
通过所述芯片调用所述数据访问指令,从所述片外存储器中连续地读取数据,并触发所述缓存访问指令,执行所述缓存访问指令将读取到的数据存储于所述片内缓存空间;
所述通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,包括:
通过所述芯片调用所述数据处理指令,触发所述缓存访问指令,执行所述缓存访问指令从所述片内缓存空间中读取数据。
可选地,所述在源文件中获取访存语句和非访存语句之后,所述方法还包括:
在所述访存语句包括条件子语句的情况下,删除所述访存语句中的所述条件子语句,在所述非访存语句中添加所述条件子语句,所述条件子语句指示待处理的数据所需满足的条件。
可选地,所述通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理,包括:
通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取满足所述条件子语句指示的条件的数据,对读取到的满足所述条件的数据进行处理。
可选地,所述方法还包括:
在所述源文件中检测到第二预编译语句的情况下,将所述数据访问指令和所述数据处理指令设置为并行调用,以使所述数据访问指令和所述数据处理指令被并行调用,所述第二预编译语句用于指示生成并行调用的指令。
根据本公开实施例的另一方面,提供一种数据访问方法,由电子设备执行,所述电子设备包括处理器和芯片,所述方法包括:
通过所述处理器,在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
通过所述处理器,基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
通过所述处理器,将所述数据访问指令和所述数据处理指令写入所述芯片;
通过所述芯片,调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
通过所述芯片,调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
根据本公开实施例的再一方面,提供一种数据访问装置,所述装置包括:
语句获取单元,被配置为执行在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
指令生成单元,被配置为执行基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
数据访问单元,被配置为执行通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
数据处理单元,被配置为执行通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
可选地,所述语句获取单元,包括:
第一确定子单元,被配置为执行在所述源文件的多个参数中,确定目标参数,将所述目标参数所在的语句确定为所述访存语句,所述目标参数是指与数据访问功能有关的参数;
第二确定子单元,被配置为执行确定所述访存语句所在的循环语句,所述循环语句用于指示循环执行读取数据并对所述数据进行处理;
第三确定子单元,被配置为执行将所述循环语句中除了所述访存语句之外的其他语句,确定为所述非访存语句。
可选地,所述源文件包括第一预编译语句,所述第一预编译语句用于指示与数据访问功能有关的参数;所述第一确定子单元,被配置为执行在所述多个参数中,将所述第一预编译语句指示的参数确定为所述目标参数。
可选地,所述指令生成单元,包括:
创建子单元,被配置为执行创建第一原始指令;
获取子单元,被配置为执行在所述源文件中获取所述访存语句对应的定义语句和所述访存语句对应的初始化语句,所述访存语句对应的定义语句用于对所述访存语句中的变量进行定义,所述访存语句对应的初始化语句用于设置所述访存语句中的变量的初始值;
填充子单元,被配置为执行将所述访存语句、所述访存语句对应的定义语句和所述访存语句对应的初始化语句填充至所述第一原始指令,得到所述数据访问指令。
可选地,所述指令生成单元,包括:
创建子单元,被配置为执行创建第二原始指令;
获取子单元,被配置为执行在所述源文件中获取所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句,所述非访存语句对应的定义语句用于对所述非访存语句中的变量进行定义,所述非访存语句对应的初始化语句用于设置所述非访存语句中的变量的初始值;
填充子单元,被配置为执行将所述非访存语句、所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句填充至所述第二原始指令,得到所述数据处理指令。
可选地,所述数据访问单元,被配置为执行通过所述芯片将缓存地址传入所述数据访问指令,调用所述数据访问指令,从所述片外存储器中连续地读取数据,并将读取到的数据存储于所述缓存地址指示的片内缓存空间中;
所述数据处理单元,被配置为执行通过所述芯片将所述缓存地址传入所述数据处理指令,从所述缓存地址指示的片内缓存空间中读取数据,并对读取到的数据进行处理。
可选地,所述指令生成单元,还被配置为执行生成缓存访问指令;
所述数据访问单元,被配置为执行通过所述芯片调用所述数据访问指令,从所述片外存储器中连续地读取数据,并触发所述缓存访问指令,执行所述缓存访问指令将读取到的数据存储于所述片内缓存空间;
所述数据处理单元,被配置为执行通过所述芯片调用所述数据处理指令,触发所述缓存访问指令,执行所述缓存访问指令从所述片内缓存空间中读取数据。
可选地,所述语句获取单元,还被配置为执行在所述访存语句包括条件子语句的情况下,删除所述访存语句中的所述条件子语句,在所述非访存语句中添加所述条件子语句,所述条件子语句指示待处理的数据所需满足的条件。
可选地,所述数据处理单元,包括:
筛选子单元,被配置为执行通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取满足所述条件子语句指示的条件的数据;
处理子单元,被配置为执行对读取到的满足所述条件的数据进行处理。
可选地,所述装置还包括:
指令设置单元,被配置为执行在所述源文件中检测到第二预编译语句的情况下,将所述数据访问指令和所述数据处理指令设置为并行调用,以使所述数据访问指令和所述数据处理指令被并行调用,所述第二预编译语句用于指示生成并行调用的指令。
根据本公开实施例的再一方面,提供了一种芯片,所述芯片存储有数据访问指令和数据处理指令,所述数据访问指令是基于访存语句生成的,所述访存语句用于实现数据访问功能的指令语句,所述数据处理指令是基于非访存语句生成的,所述非访存语句为与数据访问功能无关的指令语句,所述访存语句和所述非访存语句是从源文件中获取的;
所述芯片,用于:
调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
根据本公开实施例的再一方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述方面所述的数据访问方法。
根据本公开实施例的再一方面,提供一种计算机可读存储介质,计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述方面所述的数据访问方法。
根据本公开实施例的再一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述方面所述的数据访问方法。
本公开实施例提供的方案,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,通过芯片调用数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,通过芯片调用数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种数据访问方法的流程图。
图2是根据一示例性实施例示出的另一种数据访问方法的流程图。
图3是根据一示例性实施例示出的一种数据访问流程的对比图。
图4是根据一示例性实施例示出的另一种数据访问流程的对比图。
图5是根据一示例性实施例示出的另一种数据访问方法的流程图。
图6是根据一示例性实施例示出的另一种数据访问方法的流程图。
图7是根据一示例性实施例示出的一种数据访问方法的系统架构图。
图8是根据一示例性实施例示出的另一种数据访问方法的系统架构图。
图9是根据一示例性实施例示出的一种数据访问装置的框图。
图10是根据一示例性实施例示出的另一种数据访问装置的框图。
图11是根据一示例性实施例示出的一种终端的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图说明中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的。相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本公开中涉及到的源文件等都是在充分授权的情况下获取的。
本公开实施例提供了一种数据访问方法,执行主体为电子设备。示例性的,该电子设备为终端,终端为电脑、手机、平板电脑或者其他终端。示例性的,该电子设备为服务器,服务器为后台服务器或者为提供云计算以及云存储等服务的云服务器等。其中,电子设备基于源文件中的访存语句和非访存语句分别生成数据访问指令和数据处理指令,使用数据访问指令从片外存储器中连续地读取数据,将读取到的数据存储于片内缓存空间,并使用数据处理指令从片内缓存空间读取数据,对读取到的数据进行处理。
本公开实施例提供的数据访问方法,能够应用于任一需要进行数据访问的场景下。
例如,应用于训练神经网络模型的场景下。例如,神经网络模型包括下采样网络和上采样网络,上采样网络在进行上采样时需要用到下采样网络产生的神经网络特征图,因此可以采用本公开实施例提供的数据访问方法,使用数据访问指令,从片外存储器中连续地读取下采样网络产生的神经网络特征图,并将读取到的神经网络特征图存储于片内缓存空间,并同步使用数据处理指令,从片内缓存空间中读取神经网络特征图,将读取到的神经网络特征图传入上采样网络进行处理。
图1是根据一示例性实施例示出的一种数据访问方法的流程图,参见图1,该方法由电子设备执行,包括以下步骤:
在步骤101中,电子设备在源文件中获取访存语句和非访存语句,该访存语句为用于实现数据访问功能的指令语句,该非访存语句为与数据访问功能无关的指令语句。
源文件是用于进行处理的文件,源文件是指用汇编语言或者高级语言所构成的文件。该源文件可以为任一类型的源文件,例如源文件为神经网络模型的模型文件或者应用程序的程序文件等,本申请实施例对此不做限定。
其中,源文件包括指令语句,指令语句是用于指示执行某种操作的语句,本公开实施例中,将源文件中的指令语句划分为访存语句和非访存语句,访存语句为用于实现数据访问功能的指令语句,例如该访存语句用于指示进行数据访问,非访存语句为与数据访问功能无关的语句,例如该非访存语句为用于指示对数据进行处理。其中,数据访问是指对数据进行读取或写入等。
在步骤102中,电子设备基于访存语句生成数据访问指令,基于非访存语句生成数据处理指令。
电子设备获取到访存语句和非访存语句后,基于该访存语句生成数据访问指令,该数据访问指令中包括该访存语句,由于该访存语句用于实现数据访问功能,因此该数据访问指令具有数据访问功能。电子设备基于该非访存语句生成数据处理指令,该数据处理指令中包括该非访存语句,该非访存语句用于实现与数据访问功能无关的功能,例如用于实现数据处理功能,因此该数据处理指令具有数据处理功能。
需要说明的是,在源文件中包括访存语句和非访存语句,该访存语句和非访存语句位于同一个指令中,该访存语句和非访存语句是相互依赖的指令语句,例如,执行访存语句后再按顺序执行非访存语句,执行完非访存语句后,再循环执行访存语句等。而本公开实施例中,将同一个指令中的访存语句和非访存语句拆分开,分别形成数据访问指令和数据处理指令,数据访问指令仅包括访存语句,数据处理指令仅包括非访存语句,数据访问指令和数据处理指令是两个不同的指令,因此两个指令可以分开调用,该数据访问指令和该数据处理指令相互独立,也即是该数据访问指令的执行过程和数据处理指令的执行过程不会相互影响,且数据访问指令和数据处理指令也不具有特定的执行顺序,可以先执行数据访问指令再执行数据处理指令,或者先执行数据处理指令再执行数据访问指令,或者并行地执行数据访问指令和数据处理指令。通过将同一个指令拆分成数据访问指令和数据处理指令,从而解除了访存语句和非访存语句之间的依赖关系,使得数据访问过程和数据处理过程可以分别执行,从而保证数据访问过程不会被数据处理过程打断。
在步骤103中,电子设备通过芯片调用数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,片外存储器是指芯片之外的存储器,片内缓存空间是指芯片上的缓存空间。
由于数据访问指令不会受到数据处理指令的影响,则不必一次读取一个数据,在将读取的一个数据处理完成后,再读取下一数据。因此电子设备可以通过芯片调用该数据访问指令,从片外存储器中连续地读取数据,例如连续地从连续的存储空间中读取多个数据,然后将读取到的数据存储于片内缓存空间中,以便后续数据处理指令直接从该片内缓存空间中获取待处理的数据。由于在连续地读取数据的情况下,无需多次寻址,因此能够降低访问片外存储器所导致的时延。
其中,片外存储器是指芯片之外的存储器,片外存储器包括片外ROM(Read-OnlyMemory,只读存储器)和片外RAM(Random Access Memory,随机存取存储器)等,片内缓存空间是指芯片上的缓存空间。
其中,本公开实施例中所说的连续地读取数据也即是对数据进行突发读写,突发读写又称为突发传输,突发读写是指在相邻的存储空间连续进行数据读写的方式。在进行突发读写时,仅需指定起始列地址与突发长度,就能够按照起始地址依次地自动对后面的相应数量的存储空间进行读写操作,从而读取多个数据,而不再需要连续地提供多个列地址,因此能够降低寻址的次数。
在步骤104中,电子设备通过芯片调用数据处理指令,从片内缓存空间中读取数据,并对读取到的数据进行处理。
本公开实施例中,数据访问指令是由访存语句构成的指令,而不包括非访存语句,因此数据访问指令是单纯用来访问数据的指令,而不用于执行其他操作,因此调用该数据访问指令,就可以实现连续地读取数据,而不会被其他操作打断。由于数据访问指令已经将从片外存储器中读取的数据存储于片内缓存空间中,因此电子设备调用该数据处理指令,从该片内缓存空间中读取数据即可,由于从片内缓存空间中读取数据的速度较快,因此不会产生额外的时延,保证了数据处理的效率。并且,由于数据访问指令是从片外存储器中连续地读取数据并存储于片内缓存空间,因此数据处理指令在处理完一个数据后,可以直接从片内缓存空间中读取下一个数据,节省了等待数据访问指令从片外存储器中读取数据的时长,有利于提高数据处理的效率。
本公开实施例提供的方法,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,通过芯片调用数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,通过芯片调用数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
在上述图1所示的实施例的基础上,该访存语句和非访存语句是源文件中循环语句中的指令语句,则电子设备获取该访存语句和非访存语句的过程,详见下述图2所示的实施例。
图2是根据一示例性实施例示出的另一种数据访问方法的流程图,该方法由电子设备执行,参见图2,该方法包括以下步骤:
在步骤201中,电子设备在源文件中确定访存语句。
电子设备获取源文件,在该源文件中确定访存语句,该访存语句为用于实现数据访问功能的语句。
在一些实施例中,电子设备在该源文件的多个参数中,确定目标参数,该目标参数是指与数据访问功能有关的参数。电子设备将该目标参数所在的语句确定为访存语句。
源文件中包括传入的多个参数,例如该多个参数为数组参数,数组参数是指将数组作为参数,数组参数属于指针参数,指针参数也即是传址参数。其中,该多个参数分别与不同的功能有关,电子设备在多个参数中,确定与数据访问功能有关的目标参数,则该目标参数所在的语句,即为用于实现数据访问功能的访存语句。本公开实施例中,先在源文件中定位与访存功能有关的目标参数,那么该目标参数所在的语句即为访存语句,提供了一种通过定位目标参数来查找访存语句的方式,操作简便,有利于提高查找访存语句的效率。
可选地,该源文件包括第一预编译语句,该第一预编译语句用于指示与数据访问功能有关的参数。电子设备在该多个参数中,将该第一预编译语句指示的参数确定为该目标参数。其中,该第一预编译语句用于显式地指示与数据访问功能有关的参数,因此电子设备在源文件中检测到该第一预编译语句后,即可根据该第一预编译语句确定与数据访问功能有关的目标参数。
可选地,该源文件为HLS(High-level Synthesis,高层次综合设计电路)工具生成的源文件,该源文件包括顶层函数,HLS工具般将顶层函数中传入的数组参数作为对全局内存的访问,同时该源文件中还包括第一预编译语句。本公开实施例中基于源文件生成数据访问指令和数据处理指令的过程,属于对源文件的编译过程,该第一预编译语句能够在编译过程中起到辅助作用,以协助电子设备确定与数据访问功能有关的目标参数。另外,在对源文件进行编译的过程中,目标参数的位置发生变化,因此电子设备借助定义-调用者链条来追溯该目标参数的位置,从而找到该目标参数所在的语句,将该目标参数所在的语句确定为访存语句。
在步骤202中,电子设备确定访存语句所在的循环语句,将该循环语句中除了该访存语句之外的其他语句,确定为非访存语句。
本公开实施例中,访存语句位于循环语句中,电子设备确定该访存语句所在的循环语句,将该循环语句中除了该访存语句之外的其他语句,确定为与数据访问功能无关的非访存语句。
其中,循环语句用于指示循环执行读取数据并对该数据进行处理,也即是循环语句用于指示执行读取数据并对该数据进行处理之后继续读取下一个数据的步骤。
在循环语句中,首先根据访存语句,基于存储地址读取数据,并根据非访存语句,对读取到的数据进行处理;然后将存储地址加一,根据访存语句,基于新的存储地址读取下一个数据,并根据非访存语句,对读取到的下一个数据进行处理,以此类推,直至所有数据处理完成,或者达到循环结束的条件。因此,如果直接执行该循环语句,则访存语句和非访存语句是交替执行的,因此无法连续地读取数据,而每次读取数据都要重新寻址,因此数据访问过程所造成的时延较大,导致效率较低。
而本公开实施例中,将循环语句中的访存语句和非访存语句拆分出来,分别生成两个相互独立的数据访问指令和数据处理指令,从而将数据访问的过程和数据处理的过程进行解耦,使得数据访问的过程能够连续执行,降低了寻址次数,减少了时延,提高了效率。
在步骤203中,电子设备基于访存语句,生成数据访问指令。
电子设备获取到访存语句后,基于该访存语句生成数据访问指令,该数据访问指令中包括该访存语句,由于该访存语句用于实现数据访问功能,因此该数据访问指令具有数据访问功能。
在一些实施例中,电子设备创建第一原始指令,在源文件中获取该访存语句对应的定义语句和该访存语句对应的初始化语句,将访存语句、该访存语句对应的定义语句和该访存语句对应的初始化语句填充至该第一原始指令,得到数据访问指令。
其中,该访存语句对应的定义语句用于对该访存语句中的变量进行定义,该访存语句对应的初始化语句用于设置该访存语句中的变量的初始值。
可选地,该源文件为HLS工具生成的源文件,本公开实施例中基于源文件生成数据访问指令的过程,属于对源文件的编译过程,在对源文件进行编译的过程中,访存语句对应的定义语句和初始化语句位置发生变化,因此电子设备借助定义-调用者链条来追溯访存语句对应的定义语句和初始化语句,并将定义语句和初始化语句进行记录,并填充到新建的第一原始指令中。
在步骤204中,电子设备基于非访存语句,生成数据处理指令。
电子设备获取到非访存语句后,基于该非访存语句生成数据处理指令,该数据处理指令中包括该非访存语句,该非访存语句用于实现与数据访问功能无关的功能,例如用于实现数据处理功能,因此该数据处理指令具有数据处理功能。
在一些实施例中,电子设备创建第二原始指令,在源文件中获取该非访存语句对应的定义语句和非访存语句对应的初始化语句,将非访存语句、该非访存语句对应的定义语句和该非访存语句对应的初始化语句填充至该第二原始指令,得到数据处理指令。
其中,该非访存语句对应的定义语句用于对该非访存语句中的变量进行定义,该非访存语句对应的初始化语句用于设置该非访存语句中的变量的初始值。
可选地,该源文件为HLS工具生成的源文件,本公开实施例中基于源文件生成数据处理指令的过程,属于对源文件的编译过程,在对源文件进行编译的过程中,非访存语句对应的定义语句和初始化语句位置发生变化,因此电子设备借助定义-调用者链条来追溯非访存语句对应的定义语句和初始化语句,并将定义语句和初始化语句进行记录,并填充到新建的第二原始指令中。
需要说明的是,访存语句和非访存语句本属于源文件中的同一个指令,本公开实施例将同一个指令中的访存语句和非访存语句拆分成两个不同的指令,也即是数据访问指令和数据处理指令,而这两个指令与原先的指令,在局部变量及初始值、指令循环、指令属性等方面均是一致的,指令循环是指循环结构、自增模块及边界条件等。
在步骤205中,电子设备通过芯片调用数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中。
由于数据访问指令不会受到数据处理指令的影响,则不必一次仅读取一个数据,因此电子设备通过芯片调用该数据访问指令,从片外存储器中连续地读取数据,然后将读取到的数据存储于片内缓存空间中,以便后续数据处理指令直接从该片内缓存空间中获取待处理的数据。
在一些实施例中,电子设备通过芯片将缓存地址传入该数据访问指令,调用该数据访问指令,从该片外存储器中连续地读取数据,并将读取到的数据存储于该缓存地址指示的片内缓存空间中。
其中,该缓存地址用于指示片内存储空间。可选地,源文件中包括片内存储空间的缓存地址,电子设备从源文件中获取该缓存地址,并将该缓存地址传入该数据访问指令,以调用该数据访问指令进行处理。
在步骤206中,电子设备通过芯片调用数据处理指令,从片内缓存空间中读取数据,并对读取到的数据进行处理。
数据访问指令将从片外存储器中读取的数据存储于片内缓存空间中,因此电子设备通过芯片调用该数据处理指令,从该片内缓存空间中读取数据即可,由于从片内缓存空间中读取数据的速度较快,因此不会产生额外的时延,保证了数据处理的效率。
在一些实施例中,电子设备通过芯片将该缓存地址传入该数据处理指令,从该缓存地址指示的片内缓存空间中读取数据,并对读取到的数据进行处理。
可选地,源文件中包括片内存储空间的缓存地址,电子设备从源文件中获取该缓存地址,并通过芯片将该缓存地址传入该数据处理指令,以调用该数据处理指令进行处理。
图3是根据一示例性实施例示出的一种数据访问流程的对比图,其中访存语句和非访存语句属于同一个顶层指令。在相关技术中,通过调用顶层指令,从片外存储器中读取数据,并对读取到的数据进行处理,将处理结果发送给下游模块,并且每处理完一个数据,则继续从片外存储器中读取下一个数据,因此数据访问和数据处理的过程是交替执行的。在本公开实施例中,将顶层指令中的访存语句和非访存语句拆分成数据访问指令和数据处理指令,由数据访问指令从片外存储器中连续地读取多个数据,将读取到的数据暂存在片内缓存空间中,由数据处理指令从该片内缓存空间中读取数据并进行处理,将处理结果发送给下游模块。因此,本公开实施例将数据访问过程和数据处理过程解耦,使得数据访问过程不会被数据处理过程打断,以实现数据的连续读取,降低了数据访问所导致的时延。
本公开实施例提供的方法,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,通过芯片调用数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,通过芯片调用数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
在另一实施例中,电子设备在源文件中检测到第二预编译语句的情况下,将数据访问指令和数据处理指令设置为并行调用,以使数据访问指令和数据处理指令被并行调用,该第二预编译语句用于指示生成并行调用的指令。
如果源文件中存在第二预编译语句,则电子设备按照该第二预编译语句的指示,将数据访问指令和数据处理指令的指令属性设置为并行调用,后续即可并行调用该数据访问指令和数据处理指令,以使数据访问过程与数据处理过程并行地执行,从而提高了处理效率。
可选地,该源文件为HLS工具生成的源文件,电子设备利用LLVM(Low LevelVirtual Machin,底层虚拟机)IR(Intermediate Representation,中间表示)编译器对该源文件进行编译,LLVM IR能够为多种不同的指令设置属性(Attribute),例如属性为并行调用。本公开实施例中,为了能够让生成的数据访问指令和数据处理指令同时执行,因此可以利用HLS工具在源文件中添加第二预编译语句,以指示生成能够并行调用的指令。在利用编译器对源文件进行编译时,当检测到该第二预编译语句,则自动生成能够被并行调用的数据访问指令和数据处理指令。
在另一实施例中,电子设备在源文件中获取访存语句和非访存语句之后,在访存语句包括条件子语句的情况下,删除访存语句中的条件子语句,在非访存语句中添加条件子语句,该条件子语句指示待处理的数据所需满足的条件。
可选地,电子设备通过芯片调用数据处理指令,从片内缓存空间中读取数据,并对读取到的数据进行处理的过程,包括:通过芯片调用数据处理指令,从片内缓存空间中读取满足条件子语句指示的条件的数据,对读取到的满足条件的数据进行处理。
其中,访存语句中包括条件子语句,如果不将访存语句和非访存语句进行拆分,则需要根据访存语句,从片外存储器中读取满足条件的数据,将满足条件的数据传入非访存语句进行处理。而本公开实施例中,需要将访存语句和非访存语句进行拆分,为了保证后续可以从片外存储器中连续地读取数据,电子设备将访存语句中的条件子语句删除,并将该条件子语句添加至非访存语句的对应位置,由于访存语句中删除了条件子语句,数据访问的过程不再设置条件,因此通过调用基于访存语句生成的数据访问指令,即可从片外存储器中连续地读取数据。而由于非访存语句中添加了条件子语句,因此通过调用基于非访存语句生成的数据处理指令,可以从片内缓存空间中筛选满足条件的数据,从而仅对满足条件的数据进行处理,相当于将数据访问过程的条件移动到了数据处理过程,因此虽然删除了访存语句中的条件子语句,但是仍然保证了数据处理的逻辑是准确的。
另外,在数据满足全局内存访问条件的情况下,从片外存储器中读取数据再写入片内缓存空间,例如神经网络特征图属于满足全局内存访问条件的数据。在数据不满足全局内存访问条件的情况下,直接从纹理存储器或片上寄存器中读取数据,例如Padding(填充)操作所需的数据属于不满足全局内存访问条件的数据。本公开实施例中,为了保证数据读取的连续性,无论数据是否满足全局内存访问条件,均在外部存储器中读取数据再写入片内缓存空间,具体参见下述图4的说明。
图4是根据一示例性实施例示出的另一种数据访问流程的对比图,如图4所示,数据分为满足全局内存访问条件和不满足全局内存访问条件两个分支。在相关技术中,在进行数据访问时,首先确定数据是否满足全局内存访问条件,如果满足全局内存访问条件,则采用全局内存的方式访问数据,也即是从片外存储器中读取数据再写入片内缓存空间,如果不满足全局内存条件,则采用纹理内存的方式访问数据,也即是直接从片上的纹理存储器中读取数据。由于有的数据从片外存储器中读取,有的数据从片上的纹理存储器中读取,因此无法保证数据访问的连续性。而在本公开实施例中,在进行数据访问时,无论数据是否满足全局内存访问条件,数据访问指令均采用全局内存的方式访问数据,也即是从片外存储器中读取数据再写入片内缓存空间。在数据处理指令需要读取数据并处理时,首先确定数据是否满足全局内存访问条件,如果满足全局内存访问条件,则从片内缓存空间中读取已存储的数据即可,如果不满足全局内存访问条件,则丢弃片内缓存空间中的数据,从片上的纹理存储器中读取数据。由于数据访问指令一直是从片外存储器中读取数据,因此能够保证数据访问的连续性,从而降低了数据访问所导致的时延。
在上述实施例的基础上,电子设备采用生成的缓存访问指令,从片内缓存空间中读写数据,具体过程详见下述图5所示的实施例。
图5是根据一示例性实施例示出的另一种数据访问方法的流程图,该方法由电子设备执行,参见图5,该方法包括以下步骤:
在步骤501中,电子设备在源文件中获取访存语句和非访存语句,该访存语句为用于实现数据访问功能的指令语句,该非访存语句为与数据访问功能无关的指令语句。
该步骤501与上述步骤101和上述步骤201-步骤202同理,在此不再赘述。
在步骤502中,电子设备基于访存语句生成数据访问指令,基于非访存语句生成数据处理指令。
该步骤502与上述步骤102和上述步骤203-步骤204同理,在此不再赘述。
在步骤503中,电子设备生成缓存访问指令。
其中,缓存访问指令用于访问片内缓存空间。在生成数据访问指令和数据处理指令后,要生成缓存访问指令,以便数据访问指令和数据处理指令通过调用该缓存访问指令来访问片内缓存空间。
在一些实施例中,源文件为HLS工具生成的源文件,电子设备利用HLS编译工具对源文件进行解析,生成缓存访问指令。可选地,在编译得到的IR文件中,该缓存访问指令包括Stream(流)指令、StreamWrite(流写入)指令和StreamRead(流读取)指令,该缓存访问指令作为模板类的生成指令调用指令库中的内置指令,当需要对片内缓存空间进行读写操作时,调用该缓存访问指令即可。
在步骤504中,电子设备通过芯片调用数据访问指令,从片外存储器中连续地读取数据,并触发缓存访问指令,执行缓存访问指令将读取到的数据存储于片内缓存空间。
电子设备通过芯片调用数据访问指令,从片外存储器中连续地读取数据,然后由该数据访问指令触发该缓存访问指令,执行该缓存访问指令,从而将读取到的数据存储于片内缓存空间,也即是数据访问指令读取到数据后,将读取到的数据传入缓存访问指令,以调用缓存访问指令执行存储数据的操作。
在步骤505中,电子设备通过芯片调用数据处理指令,触发缓存访问指令,执行缓存访问指令从片内缓存空间中读取数据。
电子设备通过芯片调用数据处理指令,触发缓存访问指令,执行缓存访问指令从片内缓存空间中读取数据,然后由数据处理指令触发该缓存访问指令,执行该缓存访问指令,从而从片内缓存空间中读取数据,缓存访问指令将读取到的数据传入数据处理指令,再由数据处理指令对该数据进行处理。
本公开实施例提供的方法,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,通过芯片调用数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,通过芯片调用数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
本公开实施例提供的数据访问方法,可应用于设计具有数据访问功能的硬件的场景下。在设计硬件时,访存往往是性能瓶颈。高级语言能够时硬件的设计更高效,例如使用HLS工具设计硬件,在设计硬件的过程中,不但要考虑平衡片上资源,还要考虑高效的片外访存机制,以充分利用片外存储器的带宽,同时增大数据的重用率。其中,在使用HLS工具设计硬件时,可以采用预编译语句控制从C语言到硬件逻辑之间的转换。本公开实施例中,可以将上述实施例中的数据访问方法,应用于芯片的设计中,以使芯片具有实现上述数据访问方法的功能,具体过程详见下述涂6所示的实施例。
图6是根据一示例性实施例示出的另一种数据访问方法的流程图,该方法由电子设备执行,电子设备包括处理器和芯片,参见图6,该方法包括以下步骤:
在步骤601中,电子设备通过处理器,在源文件中获取访存语句和非访存语句,该访存语句为用于实现数据访问功能的指令语句,该非访存语句为与数据访问功能无关的指令语句。
本公开实施例中,由电子设备中的处理器执行获取访存语句和非访存语句的步骤,该过程与上述步骤101和上述步骤201-步骤202同理,在此不再赘述。
在步骤602中,电子设备通过处理器,基于访存语句生成数据访问指令,基于非访存语句生成数据处理指令。
本公开实施例中,由电子设备中的处理器执行生成数据访问指令和数据处理指令的步骤,该过程与上述步骤102和上述步骤203-步骤204同理,在此不再赘述。
在步骤603中,电子设备通过处理器,将数据访问指令和数据处理指令写入芯片。
电子设备在通过处理器生成数据访问指令和数据处理指令后,通过处理器将该数据访问指令和数据处理指令写入芯片,以使芯片中生成具有数据访问功能和数据处理功能的硬件电路。其中,该芯片可以为FPGA(Field-Programmable Gate Array,现场可编程门阵列)芯片,或者其他类型的芯片,本公开实施例对此不做限定。
在步骤604中,电子设备通过芯片,调用数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中。
其中,该片外存储器是指芯片外的存储器。本公开实施例中,由电子设备中的芯片执行数据访问的步骤,该过程与上述步骤103、上述步骤205和上述步骤504同理,在此不再赘述。
在步骤605中,电子设备通过芯片,调用数据处理指令,从片内缓存空间中读取数据,并对读取到的数据进行处理。
其中,该片内缓存空间是指芯片上的缓存空间。本公开实施例中,由电子设备中的芯片执行数据处理的步骤,该过程与上述步骤104、上述步骤206和上述步骤505同理,在此不再赘述。
本公开实施例提供的方法,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
图7是根据一示例性实施例示出的一种数据访问方法的系统架构图,如图7所示,在相关技术中,在生成硬件时,会生成对应的AXI(Advanced eXtensible Interface,一种总线协议)总线以供片外访存的读写,根据顶层指令生成处理模块,由处理模块循环执行数据访问和数据处理的逻辑,如图7所示,硬件上生成的处理模块从片外存储器中读取数据,并对读取到的数据进行处理,然后再从片外存储器中读取下一个数据,并对读取到的下一个数据进行处理,处理结果由处理模块传入下游模块中。其中,数据访问逻辑和数据处理逻辑的执行和停止由内嵌的状态机控制。该相关技术中,为了保证数据访问和数据处理的一致性,从外部传来的阻塞信号都会造成整个流程的阻塞。也即是,当数据访问过程被打断时,数据处理过程要被同步中止,当数据处理过程被打断时,数据访问过程要被同步中止。并且,数据访问过程和数据处理过程交替执行,导致数据访问的过程无法连续执行,面临大量间隔或跳跃,导致数据访问过程的时延较大。
图8是根据一示例性实施例示出的另一种数据访问方法的系统架构图,在本公开实施例中,将顶层指令中的数据访问逻辑和数据处理逻辑拆分成两个不相关的数据访问指令和数据处理指令,在生成硬件时,根据数据访问指令生成数据访问模块,根据数据处理指令生成数据处理模块,并设置片内缓存空间连接这两个模块,由数据访问模块从片外存储器中读取数据,并将读取到的数据存储于片内缓存空间中,由数据处理模块从片内缓存空间中读取数据,并对读取到的数据进行处理。其中,状态机分别管理数据访问模块的逻辑和数据处理模块的逻辑,两个逻辑的状态互不共享,从而去除数据访问逻辑对数据处理逻辑的干扰,以及数据处理逻辑对数据访问逻辑的干扰。
图9是根据一示例性实施例示出的一种数据访问装置的框图。参见图9,该装置包括语句获取单元901、指令生成单元902、数据访问单元903和数据处理单元904。
语句获取单元901,被配置为执行在源文件中获取访存语句和非访存语句,访存语句为用于实现数据访问功能的指令语句,非访存语句为与数据访问功能无关的指令语句;
指令生成单元902,被配置为执行基于访存语句生成数据访问指令,基于非访存语句生成数据处理指令;
数据访问单元903,被配置为执行通过芯片调用数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,片外存储器是指芯片之外的存储器,片内缓存空间是指芯片上的缓存空间;
数据处理单元904,被配置为执行通过芯片调用数据处理指令,从片内缓存空间中读取数据,并对读取到的数据进行处理。
本公开实施例提供的装置,将源文件中的指令语句划分为与数据访问功能有关的访存语句以及与数据访问功能无关的非访存语句,并基于访存语句和非访存语句分别生成数据访问指令和数据处理指令,通过芯片调用数据访问指令从片外存储器中读取到的数据放在片内缓存空间中,通过芯片调用数据处理指令从该片内缓存空间中读取数据进行处理,由于将数据访问的逻辑和数据处理的逻辑拆分成两个相互独立的过程,因此数据访问的过程可以连续执行,能够通过访问一次片外存储器获取连续的多个数据,无需多次寻址,降低了访问片外存储器所导致的时延,并且数据处理指令从片内缓存空间中读取数据的速度较快,也不会产生额外的时延,因此本方案能够提高数据访问和数据处理的流程的效率。
在一种可能实现方式中,参见图10,语句获取单元901,包括:
第一确定子单元911,被配置为执行在源文件的多个参数中,确定目标参数,将目标参数所在的语句确定为访存语句,目标参数是指与数据访问功能有关的参数;
第二确定子单元921,被配置为执行确定访存语句所在的循环语句,循环语句用于指示循环执行读取数据并对数据进行处理的步骤;
第三确定子单元931,被配置为执行将循环语句中除了访存语句之外的其他语句,确定为非访存语句。
在一种可能实现方式中,参见图10,源文件包括第一预编译语句,第一预编译语句用于指示与数据访问功能有关的参数;第一确定子单元911,被配置为执行在多个参数中,将第一预编译语句指示的参数确定为目标参数。
在一种可能实现方式中,参见图10,指令生成单元902,包括:
创建子单元912,被配置为执行创建第一原始指令;
获取子单元922,被配置为执行在源文件中获取访存语句对应的定义语句和访存语句对应的初始化语句,访存语句对应的定义语句用于对访存语句中的变量进行定义,访存语句对应的初始化语句用于设置访存语句中的变量的初始值;
填充子单元932,被配置为执行将访存语句、访存语句对应的定义语句和访存语句对应的初始化语句填充至第一原始指令,得到数据访问指令。
在一种可能实现方式中,参见图10,指令生成单元902,包括:
创建子单元912,被配置为执行创建第二原始指令;
获取子单元922,被配置为执行在源文件中获取非访存语句对应的定义语句和非访存语句对应的初始化语句,非访存语句对应的定义语句用于对非访存语句中的变量进行定义,非访存语句对应的初始化语句用于设置非访存语句中的变量的初始值;
填充子单元932,被配置为执行将非访存语句、非访存语句对应的定义语句和非访存语句对应的初始化语句填充至第二原始指令,得到数据处理指令。
在一种可能实现方式中,参见图10,数据访问单元903,被配置为执行通过芯片将缓存地址传入数据访问指令,调用数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于缓存地址指示的片内缓存空间中;
数据处理单元904,被配置为执行通过芯片将缓存地址传入数据处理指令,从缓存地址指示的片内缓存空间中读取数据,并对读取到的数据进行处理。
在一种可能实现方式中,参见图10,指令生成单元902,还被配置为执行生成缓存访问指令;
数据访问单元903,被配置为执行通过芯片调用数据访问指令,从片外存储器中连续地读取数据,并触发缓存访问指令,执行缓存访问指令将读取到的数据存储于片内缓存空间;
数据处理单元904,被配置为执行通过芯片调用数据处理指令,触发缓存访问指令,执行缓存访问指令从片内缓存空间中读取数据。
在一种可能实现方式中,参见图10,语句获取单元901,还被配置为执行在访存语句包括条件子语句的情况下,删除访存语句中的条件子语句,在非访存语句中添加条件子语句,条件子语句指示待处理的数据所需满足的条件。
在一种可能实现方式中,参见图10,数据处理单元904,包括:
筛选子单元914,被配置为执行通过芯片调用数据处理指令,从片内缓存空间中读取满足条件子语句指示的条件的数据;
处理子单元924,被配置为执行对读取到的满足条件的数据进行处理。
在一种可能实现方式中,参见图10,装置还包括:
指令设置单元905,被配置为执行在源文件中检测到第二预编译语句的情况下,将数据访问指令和数据处理指令设置为并行调用,以使数据访问指令和数据处理指令被并行调用,第二预编译语句用于指示生成并行调用的指令。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开实施例提供了一种电子设备,该电子设备包括:处理器,以及用于存储该处理器可执行指令的存储器。其中,该处理器被配置为执行所述指令,以实现如上述数据访问方法。
在一些实施例中,该电子设备包括终端。图11是根据一示例性实施例示出的一种终端1100的结构框图。该终端1100可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
终端1100包括有:处理器1101、存储器1102和芯片1113。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。芯片1103可以为FPGA芯片等。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一条程序代码,该至少一条程序代码用于被处理器1101或芯片1103所执行以实现本公开中方法实施例提供的数据访问方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1104和至少一个外围设备。处理器1101、存储器1102、芯片1103和外围设备接口1104之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1104相连。具体地,外围设备包括:射频电路1105、显示屏1106、摄像头组件1107和电源1108。
外围设备接口1104可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101、存储器1102和芯片1103。
射频电路1105用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1105通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1105将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1105包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1105可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1105还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏1106用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1106是触摸显示屏时,显示屏1106还具有采集在显示屏1106的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1106还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1106可以为一个,设置在电子设备1100的前面板;在另一些实施例中,显示屏1106可以为至少两个,分别设置在电子设备1100的不同表面或呈折叠设计;在另一些实施例中,显示屏1106可以是柔性显示屏,设置在电子设备1100的弯曲表面上或折叠面上。甚至,显示屏1106还可以设置成非矩形的不规则图形,也即异形屏。显示屏1106可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1107用于采集图像或视频。可选地,摄像头组件1107包括前置摄像头和后置摄像头。前置摄像头设置在电子设备的前面板,后置摄像头设置在电子设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1107还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
电源1108用于为电子设备1100中的各个组件进行供电。电源1108可以是交流电、直流电、一次性电池或可充电电池。当电源1108包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述数据访问方法中的步骤。例如,计算机可读存储介质可以是ROM(只读存储器,Read Only Memory)、RAM(随机存取存储器,Random Access Memory)、CD-ROM(只读光盘,Compact Disc Read-Only Memory)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,计算机程序由电子设备的处理器执行时实现上述数据访问方法中的步骤。
本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (15)
1.一种数据访问方法,其特征在于,所述方法包括:
在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
2.根据权利要求1所述的数据访问方法,其特征在于,所述在源文件中获取访存语句和非访存语句,包括:
在所述源文件的多个参数中,确定目标参数,将所述目标参数所在的语句确定为所述访存语句,所述目标参数是指与数据访问功能有关的参数;
确定所述访存语句所在的循环语句,所述循环语句用于指示循环执行读取数据并对所述数据进行处理;
将所述循环语句中除了所述访存语句之外的其他语句,确定为所述非访存语句。
3.根据权利要求2所述的数据访问方法,其特征在于,所述源文件包括第一预编译语句,所述第一预编译语句用于指示与数据访问功能有关的参数;所述在所述源文件的多个参数中,确定目标参数,包括:
在所述多个参数中,将所述第一预编译语句指示的参数确定为所述目标参数。
4.根据权利要求1所述的数据访问方法,其特征在于,所述基于所述访存语句,生成数据访问指令,包括:
创建第一原始指令;
在所述源文件中获取所述访存语句对应的定义语句和所述访存语句对应的初始化语句,所述访存语句对应的定义语句用于对所述访存语句中的变量进行定义,所述访存语句对应的初始化语句用于设置所述访存语句中的变量的初始值;
将所述访存语句、所述访存语句对应的定义语句和所述访存语句对应的初始化语句填充至所述第一原始指令,得到所述数据访问指令。
5.根据权利要求1所述的数据访问方法,其特征在于,所述基于所述非访存语句,生成数据处理指令,包括:
创建第二原始指令;
在所述源文件中获取所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句,所述非访存语句对应的定义语句用于对所述非访存语句中的变量进行定义,所述非访存语句对应的初始化语句用于设置所述非访存语句中的变量的初始值;
将所述非访存语句、所述非访存语句对应的定义语句和所述非访存语句对应的初始化语句填充至所述第二原始指令,得到所述数据处理指令。
6.根据权利要求1所述的数据访问方法,其特征在于,所述通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,包括:
通过所述芯片将缓存地址传入所述数据访问指令,调用所述数据访问指令,从所述片外存储器中连续地读取数据,并将读取到的数据存储于所述缓存地址指示的片内缓存空间中;
所述通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理,包括:
通过所述芯片将所述缓存地址传入所述数据处理指令,从所述缓存地址指示的片内缓存空间中读取数据,并对读取到的数据进行处理。
7.根据权利要求1所述的数据访问方法,其特征在于,所述方法还包括:
生成缓存访问指令;
所述通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,包括:
通过所述芯片调用所述数据访问指令,从所述片外存储器中连续地读取数据,并触发所述缓存访问指令,执行所述缓存访问指令将读取到的数据存储于所述片内缓存空间;
所述通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,包括:
通过所述芯片调用所述数据处理指令,触发所述缓存访问指令,执行所述缓存访问指令从所述片内缓存空间中读取数据。
8.根据权利要求1-7任一项所述的数据访问方法,其特征在于,所述在源文件中获取访存语句和非访存语句之后,所述方法还包括:
在所述访存语句包括条件子语句的情况下,删除所述访存语句中的所述条件子语句,在所述非访存语句中添加所述条件子语句,所述条件子语句指示待处理的数据所需满足的条件。
9.根据权利要求8所述的数据访问方法,其特征在于,所述通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理,包括:
通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取满足所述条件子语句指示的条件的数据,对读取到的满足所述条件的数据进行处理。
10.根据权利要求1-7任一项所述的数据访问方法,其特征在于,所述方法还包括:
在所述源文件中检测到第二预编译语句的情况下,将所述数据访问指令和所述数据处理指令设置为并行调用,以使所述数据访问指令和所述数据处理指令被并行调用,所述第二预编译语句用于指示生成并行调用的指令。
11.一种数据访问方法,其特征在于,由电子设备执行,所述电子设备包括处理器和芯片,所述方法包括:
通过所述处理器,在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
通过所述处理器,基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
通过所述处理器,将所述数据访问指令和所述数据处理指令写入所述芯片;
通过所述芯片,调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
通过所述芯片,调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
12.一种数据访问装置,其特征在于,所述装置包括:
语句获取单元,被配置为执行在源文件中获取访存语句和非访存语句,所述访存语句为用于实现数据访问功能的指令语句,所述非访存语句为与数据访问功能无关的指令语句;
指令生成单元,被配置为执行基于所述访存语句生成数据访问指令,基于所述非访存语句生成数据处理指令;
数据访问单元,被配置为执行通过芯片调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
数据处理单元,被配置为执行通过所述芯片调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
13.一种芯片,其特征在于,所述芯片存储有数据访问指令和数据处理指令,所述数据访问指令是基于访存语句生成的,所述访存语句用于实现数据访问功能的指令语句,所述数据处理指令是基于非访存语句生成的,所述非访存语句为与数据访问功能无关的指令语句,所述访存语句和所述非访存语句是从源文件中获取的;
所述芯片,用于:
调用所述数据访问指令,从片外存储器中连续地读取数据,并将读取到的数据存储于片内缓存空间中,所述片外存储器是指所述芯片之外的存储器,所述片内缓存空间是指所述芯片上的缓存空间;
调用所述数据处理指令,从所述片内缓存空间中读取数据,并对读取到的数据进行处理。
14.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至权利要求10任一项所述的数据访问方法,或者实现如权利要求11所述的数据访问方法。
15.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至权利要求10任一项所述的数据访问方法,或者实现如权利要求11所述的数据访问方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263376329P | 2022-09-20 | 2022-09-20 | |
US63/376,329 | 2022-09-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115964331A true CN115964331A (zh) | 2023-04-14 |
Family
ID=87353916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211520858.1A Pending CN115964331A (zh) | 2022-09-20 | 2022-11-29 | 一种数据访问方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115964331A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971501A (zh) * | 2024-03-28 | 2024-05-03 | 北京壁仞科技开发有限公司 | 一种数据访问方法、设备、存储介质及程序产品 |
-
2022
- 2022-11-29 CN CN202211520858.1A patent/CN115964331A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971501A (zh) * | 2024-03-28 | 2024-05-03 | 北京壁仞科技开发有限公司 | 一种数据访问方法、设备、存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021115194A1 (zh) | 一种应用图标的显示方法及电子设备 | |
CN109101352A (zh) | 算法架构、算法调用方法、装置、存储介质及移动终端 | |
CN110569130B (zh) | 一种跨进程通信方法、装置及设备 | |
CN111147660B (zh) | 一种控件的操作方法及电子设备 | |
CN105227850B (zh) | 使能元数据存储子系统 | |
WO2022100221A1 (zh) | 检索处理方法、装置及存储介质 | |
CN111970401B (zh) | 一种通话内容处理方法、电子设备和存储介质 | |
CN106385446A (zh) | 一种文件传输方法、终端及系统 | |
WO2021104117A1 (zh) | 一种构建应用程序资源包的方法、构建装置及终端设备 | |
CN113553039A (zh) | 算子的可执行代码的生成方法及装置 | |
CN109933381A (zh) | 一种内核的加载方法及装置 | |
CN113822322A (zh) | 图像处理模型训练方法及文本处理模型训练方法 | |
CN111045732B (zh) | 数据处理方法、芯片、设备及存储介质 | |
CN115964331A (zh) | 一种数据访问方法、装置及设备 | |
CN109246467A (zh) | 标记待分享视频的方法、装置、摄像机和智能手机 | |
CN111125602A (zh) | 页面构建方法、装置、设备和存储介质 | |
CN105335200B (zh) | 系统升级方法及装置 | |
CN109726379A (zh) | 内容项编辑方法、装置、电子设备及存储介质 | |
CN110868471B (zh) | 设备构建方法、装置及存储介质 | |
CN114690986A (zh) | 一种快捷方式的创建方法及相关设备 | |
CN116700601B (zh) | 内存优化方法、设备及存储介质 | |
CN113687816A (zh) | 算子的可执行代码的生成方法及装置 | |
KR102188685B1 (ko) | 애플리케이션 패키지를 생성하는 장치 및 방법 | |
CN114070892A (zh) | 数据传输方法和装置 | |
CN113642010A (zh) | 一种获取扩展存储设备数据的方法及移动终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |