CN112631956A - 数据处理方法及装置、电子设备及存储介质 - Google Patents
数据处理方法及装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112631956A CN112631956A CN202011545768.9A CN202011545768A CN112631956A CN 112631956 A CN112631956 A CN 112631956A CN 202011545768 A CN202011545768 A CN 202011545768A CN 112631956 A CN112631956 A CN 112631956A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- storage
- unit
- memory
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据处理方法及装置、电子设备及存储介质,该数据处理方法包括:响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将第一数据返回至第二存储单元,第一存储地址请求包括第一存储地址;以及响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内发起第二存储地址请求,基于第一数据和第二存储地址请求确定是否执行链式数据预取操作,第二存储地址请求包括第二存储地址。该数据处理方法可以在上述基于第一数据和第二存储地址请求判断是否执行链式数据预取操作之前,根据处理单元发起第二存储地址请求的时间,先确定是否需要执行上述判断过程,从而减少不必要的操作流程。
Description
技术领域
本公开的实施例涉及一种数据处理方法及装置、电子设备及存储介质。
背景技术
在处理器的运行过程中,处理器需要从主存储器中读取执行数据操作所需要的相应数据。但是,处理器从主存储器中读取数据的时间较长,因此目前在芯片设计中通常都会采用多级缓存(cache)的方式,以用于缓存处理器所需读取的数据。为了进一步降低获取数据的延迟,在运行过程中通常还会采用数据预取的方法将处理器所需要的数据提前加载到缓存中,从而减少处理器在获取数据时的延迟时间。
发明内容
本公开至少一个实施例提供一种数据处理方法,包括:响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将所述第一数据返回至第二存储单元,所述第一存储地址请求包括所述第一存储地址;以及响应于在所述第二存储单元将所述第一数据返回至所述处理单元之后,所述处理单元在预设时间阈值内发起第二存储地址请求,基于所述第一数据和所述第二存储地址请求确定是否执行链式数据预取操作,所述第二存储地址请求包括第二存储地址。
例如,本公开一实施例提供的数据处理方法还包括:响应于在所述第二存储单元将所述第一数据返回至所述处理单元之前,所述处理单元发起所述第二存储地址请求,不执行所述链式数据预取操作。
例如,本公开一实施例提供的数据处理方法还包括:响应于在所述第二存储单元将所述第一数据返回至所述处理单元之后,所述处理单元在超过所述预设时间阈值后发起所述第二存储地址请求,不执行所述链式数据预取操作。
例如,在本公开一实施例提供的数据处理方法中,响应于所述处理单元发起的所述第一存储地址请求,读取存储在所述第一存储单元的第一存储地址中的所述第一数据,并将所述第一数据返回至所述第二存储单元,包括:响应于所述第一存储地址请求,向所述第一存储单元发起第一访问请求,读取存储在所述第一存储单元的第一存储地址中的所述第一数据;以及在所述第二存储单元中存储返回的所述第一数据。
例如,本公开一实施例提供的数据处理方法还包括:将读取的所述第一数据返回至所述处理单元;以及响应于所述处理单元发起的所述第二存储地址请求,读取存储在所述第一存储单元的第二存储地址中的第二数据,并将所述第二数据返回至所述第二存储单元。
例如,在本公开一实施例提供的数据处理方法中,响应于所述处理单元发起的所述第二存储地址请求,读取存储在所述第一存储单元的第二存储地址中的所述第二数据,并将所述第二数据返回至所述第二存储单元,包括:在所述第二存储单元中存储所述第二存储地址;响应于所述第二存储地址请求,向所述第一存储单元发起第二访问请求,读取存储在所述第一存储单元的第二存储地址中的所述第二数据;以及在所述第二存储单元中存储返回的所述第二数据。
例如,在本公开一实施例提供的数据处理方法中,基于所述第一数据和所述第二存储地址请求确定是否执行所述链式数据预取操作,包括:确定所述第一数据中是否包括与所述第二存储地址匹配的第一虚拟地址;响应于所述第一数据中包括与所述第二存储地址匹配的所述第一虚拟地址,执行所述链式数据预取操作;以及响应于所述第一数据中不包括与所述第二存储地址匹配的所述第一虚拟地址,不执行所述链式数据预取操作。
例如,在本公开一实施例提供的数据处理方法中,确定所述第一数据中是否包括与所述第二存储地址匹配的所述第一虚拟地址,包括:判断所述第一虚拟地址的页内偏移量与所述第二存储地址的页内偏移量是否一致,以确定所述第一虚拟地址与所述第二存储地址是否匹配。
例如,本公开一实施例提供的数据处理方法还包括:响应于执行所述链式数据预取操作,建立所述第二存储地址与所述第一虚拟地址之间的映射关系;确定所述第二数据中是否包括第二虚拟地址;以及响应于所述第二数据中包括所述第二虚拟地址,根据所述映射关系得到与所述第二虚拟地址对应的物理地址,并读取存储在所述第一存储单元的物理地址中的预取数据,并将所述预取数据返回至所述第二存储单元。
例如,本公开一实施例提供的数据处理方法还包括:响应于所述处理单元发起的第三存储地址请求,比较所述物理地址与所述第三存储地址请求中包括的第三存储地址是否相同,对应于所述第三存储地址请求的第三数据存储在所述第一存储单元的第三存储地址中;以及响应于所述物理地址与所述第三存储地址相同,将所述第二存储单元中的所述预取数据作为所述第三数据返回至所述处理单元。
例如,本公开一实施例提供的数据处理方法还包括:响应于所述物理地址与所述第三存储地址相同,基于所述第三数据和所述映射关系继续执行所述链式数据预取操作。
例如,本公开一实施例提供的数据处理方法还包括:响应于所述物理地址与所述第三存储地址不相同,读取存储在所述第一存储单元的第三存储地址中的所述第三数据,并将所述第三数据返回至所述第二存储单元。
本公开至少一个实施例还提供一种数据处理装置,该数据处理装置包括数据获取单元和预取控制单元;数据获取单元配置为响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将所述第一数据返回至第二存储单元,所述第一存储地址请求包括所述第一存储地址;预取控制单元配置为响应于在所述第二存储单元将所述第一数据返回至所述处理单元之后,所述处理单元在预设时间阈值内发起第二存储地址请求,基于所述第一数据和所述第二存储地址请求确定是否执行链式数据预取操作,所述第二存储地址请求包括第二存储地址。
例如,本公开一实施例提供的数据处理装置还包括计时单元,所述计时单元配置为获取所述处理单元发起所述第二存储地址请求的时间。
例如,本公开一实施例提供的数据处理装置还包括地址比较单元,所述地址比较单元配置为确定所述第一数据中是否包括与所述第二存储地址匹配的第一虚拟地址。
例如,本公开一实施例提供的数据处理装置还包括地址生成单元,所述地址生成单元配置为建立所述第二存储地址与所述第一虚拟地址之间的映射关系,确定存储在所述第二存储地址中的第二数据中是否包括第二虚拟地址,以及根据所述映射关系得到与所述第二虚拟地址对应的物理地址。
本公开至少一个实施例还提供一种电子设备,该电子设备包括处理器、存储器和一个或多个计算机程序模块;所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行本公开任一实施例所述的数据处理方法的指令。
本公开至少一个实施例还提供一种存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时可以执行根据本公开任一实施例所述的数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开一些实施例提供的一种数据处理方法的流程示意图;
图2为本公开一些实施例提供的一种处理单元、第一存储单元和第二存储单元之间的信号连接关系的示意图;
图3为本公开一些实施例提供的一种数据处理方法中的步骤S10的流程示意图;
图4为本公开一些实施例提供的另一种数据处理方法的流程示意图;
图5为本公开一些实施例提供的一种数据处理方法中的步骤S130的流程示意图;
图6为本公开一些实施例提供的一种数据处理方法中的步骤S20的流程示意图;
图7A和图7B为本公开一些实施例提供的一种链式数据结构的示意图;
图8为本公开一些实施例提供的再一种数据处理方法的流程示意图;
图9A为本公开一些实施例提供的一种数据处理装置的示意框图;
图9B为本公开一些实施例提供的另一种数据处理装置的示意框图;
图10为本公开一些实施例提供的一种电子设备的示意框图;
图11为本公开一些实施例提供的另一种电子设备的示意框图;以及
图12为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
目前,在对处理器所需要的数据进行预取操作时,通常需要识别数据的读取模式。例如,根据识别的数据读取模式,按照数据之间间隔的步长确定预取数据的存储地址以提前读取处理器所需要的数据,或者按照数据流进行连续的预取操作。但是,对于链式数据结构,由于链式数据结构中数据的存储地址相对较为分散,因此难以仅根据链式数据结构的读取模式实现预取操作。此外,由于主存储器中存储的数据可能会随时发生变化,预取操作难以实现对预取数据的实时更新,因此也难以保证得到的预取数据的准确性和可靠性。
本公开至少一个实施例提供一种数据处理方法及装置、电子设备及存储介质。该数据处理方法包括:响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将第一数据返回至第二存储单元,第一存储地址请求包括第一存储地址;以及响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内发起第二存储地址请求,基于第一数据和第二存储地址请求确定是否执行链式数据预取操作,第二存储地址请求包括第二存储地址。
本公开实施例提供的上述数据处理方法可以根据处理单元发起第二存储地址请求的时间,在基于第一数据和第二存储地址请求判断是否执行链式数据预取操作的步骤之前,先确定是否需要执行上述判断过程,从而减少不必要的操作流程,降低数据处理的成本,并且还可以提升针对链式数据结构的处理效率,优化链式数据的预取方法。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
图1为本公开一些实施例提供的一种数据处理方法的流程示意图。如图1所示,该数据处理方法包括如下操作。
步骤S10:响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将第一数据返回至第二存储单元。
步骤S20:响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内发起第二存储地址请求,基于第一数据和第二存储地址请求确定是否执行链式数据预取操作。
对于步骤S10,例如,第一存储地址请求包括第一存储地址。例如,处理单元向第二存储单元发起第一存储地址请求,以使第二存储单元读取存储在第一存储单元的第一存储地址中的第一数据并在后续步骤中将读取的第一数据返回至处理单元,由此实现对处理单元发起的第一存储地址请求的响应。
对于步骤S20,例如,第二存储地址请求包括第二存储地址。例如,根据第二存储单元将读取的第一数据返回至处理单元的时间以及处理单元发起第二存储地址请求的时间之间的先后顺序,确定是否需要执行基于第一数据和第二存储地址请求确定是否执行链式数据预取操作的判断过程,也即,根据处理单元发起第二存储地址请求的时间,就可以实现针对第二存储地址请求中需要读取的第二数据与第一数据是否属于同一链式数据结构的初步判断,以确定是否需要基于第一数据和第二存储地址请求执行链式数据预取操作。
由此,本公开实施例提供的数据处理方法可以根据第二存储单元将读取的第一数据返回至处理单元的时间以及处理单元发起第二存储地址请求的时间,预先判断是否有需要基于第一数据和第二存储地址请求执行链式数据预取操作的判断过程的必要,从而减少不必要的操作流程,降低数据处理的成本,并且还可以提升针对链式数据结构的处理效率,优化链式数据的预取方法。
例如,以图2所示的结构为例,第二存储单元220在收到处理单元210发出的第一存储地址请求后从第一存储单元230中读取第一数据,并在获取第一数据后将第一数据返回至处理单元210以实现对第一存储地址请求的响应。在确定执行链式数据预取操作的情况下,通过链式数据预取操作可以将与第一数据属于同一链式数据结构中的后续节点数据从第一存储单元230中提前获取到第二存储单元220中,由此在后续过程中当处理单元210请求获取上述后续节点数据时,第二存储单元220可以将预先获取的数据返回至处理单元210,减少对处理单元210发出的第一存储地址请求的响应时间,从而提升针对链式数据结构的处理效率。
例如,上述第一存储单元230可以为内存单元,第二存储单元220可以为缓存单元。由于从内存单元中读取数据的时间相对较长,而从缓存单元中读取数据的时间相对较短,因此在确定执行链式数据预取操作的情况下,通过链式数据预取操作可以将与第一数据属于同一链式数据结构中的后续节点数据从内存单元中提前获取到缓存单元中,从而减少后续过程中在处理单元请求获取该后续节点数据时缓存单元的响应时间,提升针对链式数据结构的处理效率。
在本公开的一些实施例中,该数据处理方法还包括:响应于在第二存储单元将第一数据返回至处理单元之前,处理单元发起第二存储地址请求,不执行链式数据预取操作。
例如,根据第二存储单元将读取的第一数据返回至处理单元的时间以及处理单元发起第二存储地址请求的时间之间的先后顺序,如果在第二存储单元将第一数据返回至处理单元之前,处理单元已经发起了第二存储地址请求,则可以确定第二存储地址请求中请求获取的数据与第一数据不属于同一链式数据结构,由此可以确定不需要基于第一数据和第二存储地址请求执行链式数据预取操作,从而可以减少或避免不必要的操作步骤,优化数据处理流程,降低成本。
在本公开的一些实施例中,该数据处理方法还包括:响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在超过预设时间阈值后发起第二存储地址请求,不执行链式数据预取操作。
例如,如果在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内没有发起第二存储地址请求,则可以确定第二存储地址请求中请求获取的数据与第一数据不属于同一链式数据结构,由此可以确定不需要基于第一数据和第二存储地址请求执行链式数据预取操作,从而可以进一步优化判断链式数据预取操作是否执行的流程,减少或避免不必要的操作步骤,降低成本。
图3为本公开一些实施例提供的一种数据处理方法中的步骤S10的流程示意图。
例如,如图3所示,上述步骤S10可以包括步骤S101至步骤S102。
步骤S101:响应于第一存储地址请求,向第一存储单元发起第一访问请求,读取存储在第一存储单元的第一存储地址中的第一数据。
步骤S102:在第二存储单元中存储返回的第一数据。
对于上述步骤S101~S102,第二存储单元在收到处理单元发起的第一存储地址请求后,向第一存储单元发出请求获取存储在第一存储地址中的第一数据的第一访问请求,并在从第一存储单元中读取第一数据后将第一数据存储在第二存储单元中,以便于在需要基于第一数据和第二存储地址请求确定是否执行链式数据预取操作的情况下,可以从第二存储单元中直接获得所需的第一数据,提升针对链式数据预取操作的执行效率。
图4为本公开一些实施例提供的另一种数据处理方法的流程示意图。需要说明的是,图4中所示的步骤S110和S140分别与图1中所示的步骤S10和S20基本相同或相似,重复之处不再赘述。
例如,如图4所示,该数据处理方法可以包括步骤S110至步骤S140。
步骤S110:响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将第一数据返回至第二存储单元。
例如,对于步骤S110,第一存储地址请求包括第一存储地址。
步骤S120:将读取的第一数据返回至处理单元。
步骤S130:响应于处理单元发起的第二存储地址请求,读取存储在第一存储单元的第二存储地址中的第二数据,并将第二数据返回至第二存储单元。
步骤S140:响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内发起第二存储地址请求,基于第一数据和第二存储地址请求确定是否执行链式数据预取操作。
例如,对于步骤S140,第二存储地址请求包括第二存储地址。
例如,上述步骤S130和S140可以同时执行。由此,可以在确定处理单元发起第二存储地址请求的时间是在第二存储单元将第一数据返回至处理单元之后且在预设时间阈值内的情况下,在第二存储单元响应于处理单元发起的第二存储地址请求从第一存储单元读取第二数据时,基于第一数据和第二存储地址请求确定是否执行链式数据预取操作。
图5为本公开一些实施例提供的一种数据处理方法中的步骤S130的流程示意图。
例如,如图5所示,上述步骤S130可以包括如下操作。
步骤S131:在第二存储单元中存储第二存储地址。
步骤S132:响应于第二存储地址请求,向第一存储单元发起第二访问请求,读取存储在第一存储单元的第二存储地址中的第二数据。
步骤S133:在第二存储单元中存储返回的第二数据。
对于上述步骤S131,第二存储单元在收到处理单元发起的第二存储地址请求后,将第二存储地址请求中的第二存储地址存储在第二存储单元中,由此在需要基于第一数据和第二存储地址请求确定是否需要执行链式数据预取操作的情况下,可以基于存储在第二存储单元中的第一数据和第二存储地址,在第二存储单元中进行是否需要执行链式数据预取操作的判断。在确定需要基于第一数据和第二存储地址请求执行链式数据预取操作的情况下,可以在第二存储单元中确定第一数据和第二存储地址之间的对应关系,以确定需要预取的链式数据。
对于上述步骤S132和S133,在第二存储单元向第一存储单元发出请求获取存储在第二存储地址中的第二数据的第二访问请求并读取第二数据后,第二数据被存储在第二存储单元中,由此在后续确定需要基于第一数据和第二存储地址请求执行链式数据预取操作的情况下,可以基于存储在第二存储单元中的第二数据,在第二存储单元中确定需要预取的链式数据的物理地址,从而实现对链式数据的预取操作。
下面本公开的实施例以上述步骤20中响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内发起第二存储地址请求为例,对步骤S20中基于第一数据和第二存储地址请求确定是否执行链式数据预取操作的具体过程进行说明。
图6为本公开一些实施例提供的一种数据处理方法中的步骤S20的流程示意图。
例如,如图6所示,上述步骤S20可以包括如下步骤S210~S230。
步骤S210:确定第一数据中是否包括与第二存储地址匹配的第一虚拟地址。
步骤S220:响应于第一数据中包括与第二存储地址匹配的第一虚拟地址,执行链式数据预取操作。
步骤S230:响应于第一数据中不包括与第二存储地址匹配的第一虚拟地址,不执行链式数据预取操作。
例如,在第一数据和第二数据属于同一链式数据结构的情况下,以图7A和图7B中所示的包括第一数据和第二数据的链式数据结构为例,第一数据中包括指向第二数据的第一虚拟地址,第一虚拟地址包括虚拟页地址和页内偏移量。当包括第一数据和第二数据的该链式数据结构被加载到第一存储单元内时,第一数据被存储在第一存储单元的第一存储地址中,第二数据被存储在第一存储单元的第二存储地址中。例如,第二存储地址中包括物理页地址和页内偏移量,且第二存储地址的页内偏移量与第一虚拟地址的页内偏移量相同。由此可知,第一虚拟地址与第二存储地址之间具有对应关系。因此,在步骤S210中,通过确定第一数据中是否包括与第二存储地址匹配的第一虚拟地址即可确定第一虚拟地址与第二存储地址之间是否彼此对应,从而确定第一数据和第二数据是否属于同一链式数据结构。
例如,上述步骤S210可以包括:判断第一虚拟地址的页内偏移量与第二存储地址的页内偏移量是否一致,以确定第一虚拟地址与第二存储地址是否匹配。由此,通过确定第一虚拟地址和第二存储地址之间具有一致的页内偏移量,可以确定第一虚拟地址与第二存储地址彼此匹配。
图8为本公开一些实施例提供的再一种数据处理方法的流程示意图。需要说明的是,图8中所示的步骤S201~S204分别与图4中所示的步骤S110~S140基本相同或相似,重复之处不再赘述。
如图8所示,该数据处理方法还包括以下操作。
步骤S205:响应于执行链式数据预取操作,建立第二存储地址与第一虚拟地址之间的映射关系。
步骤S206:确定第二数据中是否包括第二虚拟地址。
步骤S207:响应于第二数据中包括第二虚拟地址,根据映射关系得到与第二虚拟地址对应的物理地址,并读取存储在第一存储单元的物理地址中的预取数据,并将预取数据返回至第二存储单元。
例如,以图7A和图7B所示的链式数据结构为例,在确定第一数据和第二数据属于同一链式数据结构的情况下,执行步骤S205,建立第二存储地址的物理页地址与第一虚拟地址的虚拟页地址之间的地址映射关系,以作为第二存储地址与第一虚拟地址之间的映射关系。在执行步骤S206并确定第二数据中包括第二虚拟地址的情况下,可以执行步骤S207,根据建立的地址映射关系,确定与第二虚拟地址对应的物理地址中的物理页地址,并将第二虚拟地址中的页内偏移量作为该对应的物理地址中的页内偏移量,由此得到物理地址。
例如,在确定物理地址后,第二存储单元读取存储在第一存储单元的物理地址中的预取数据,并将该预取数据返回至第二存储单元,从而可以将该预取数据存储在第二存储单元中。例如,该预取数据也即为如图7A所示的链式数据结构中的第二虚拟地址对应指向的节点数据。例如,在第二存储单元包括缓存单元的情况下,存储在缓存单元中的该预取数据可以保持实时更新状态,从而提升获得的预取数据的准确性和可靠性。
在本公开的一些实施例中,如图8所示,该数据处理方法还包括以下操作。
步骤S208:响应于处理单元发起的第三存储地址请求,比较物理地址与第三存储地址请求中包括的第三存储地址是否相同。例如,对应于第三存储地址请求的第三数据存储在第一存储单元的第三存储地址中。
步骤S209:响应于物理地址与第三存储地址相同,将第二存储单元中的预取数据作为第三数据返回至处理单元。
对于上述步骤S208,比较物理地址与第三存储地址之间是否完全一致,例如需要比较二者的物理页地址和页内偏移量均是否全部一致,由此以确定物理地址与第三存储地址是否彼此相同。
对于上述步骤S209,在确定物理地址与第三存储地址之间彼此相同的情况下,可以确定通过物理地址提前读取的预取数据,也即,如图7A所示的链式数据结构中的第二虚拟地址对应指向的节点数据,就是第三存储地址请求需要读取的第三数据。由此,通过第二存储单元将提前读取的预取数据作为第三数据返回至处理单元,可以减少响应于处理单元发起的第三存储地址请求的时间,从而提升针对链式数据结构的处理效率,优化链式数据的处理方法。
在本公开的一些实施例中,如图8所示,该数据处理方法还包括以下操作。
步骤S210:响应于物理地址与第三存储地址相同,基于第三数据和映射关系继续执行链式数据预取操作。
例如,在第二存储单元将提前读取的预取数据作为第三数据返回至处理单元后,可以继续基于第三数据执行上述链式数据预取操作,由此,在后续处理器发出针对图7A所示的链式数据结构中的后续节点数据的请求时,可以减少对该请求的响应时间,从而进一步提升针对链式数据结构的处理效率。
在本公开的一些实施例中,上述数据处理方法还包括:响应于物理地址与第三存储地址不相同,读取存储在第一存储单元的第三存储地址中的第三数据,并将第三数据返回至第二存储单元。
例如,在物理地址与第三存储地址不相同的情况下,可以确定处理器请求读取的第三数据不是上述预取数据时,也即,第三数据与第一数据和第二数据不属于同一链式数据结构。相应地,第二存储单元需要从第一存储单元的第三存储地址中读取所需的第三数据,以完成对处理器发出的第三存储地址请求的响应。
需要说明的是,本公开实施例提供的数据处理方法中的各步骤从第一数据开始执行,相应地,本公开上述实施例中的第二数据、第三数据等同样也可以作为第一数据从而执行本公开实施例提供的数据处理方法中的上述各步骤,也即,在确定第一数据和第二数据不属于同一链式数据结构的情况下,可以继续确定第二数据和第三数据是否属于同一链式数据结构,进而判断是否需要基于第二数据与第三数据执行链式数据预取操作。
需要说明的是,在本公开的实施例中,本公开上述各个实施例提供的数据处理方法的流程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行。虽然上文描述的数据处理方法的流程包括特定顺序出现的多个操作,但是应该清楚地了解,多个操作的顺序并不受限制。上文描述的数据处理方法可以执行一次,也可以按照预定条件执行多次。
本公开至少一个实施例还提供一种数据处理装置。图9A为本公开一些实施例提供的一种数据处理装置的示意框图。例如,如图9A所示,在一些示例中,数据处理装置200包括数据获取单元210和预取控制单元220。
数据获取单元210配置为响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将第一数据返回至第二存储单元。例如,第一存储地址请求包括第一存储地址。例如,数据获取单元210可以执行图1中所示的数据处理方法中的步骤S10。
预取控制单元220配置为响应于在第二存储单元将第一数据返回至处理单元之后,处理单元在预设时间阈值内发起第二存储地址请求,基于第一数据和第二存储地址请求确定是否执行链式数据预取操作。例如,第二存储地址请求包括第二存储地址。例如,预取控制单元220可以执行图1中所示的数据处理方法中的步骤S20。
图9B为本公开一些实施例提供的另一种数据处理装置的示意框图。
例如,如图9B所示,在图9A所示的示例的基础上,数据处理装置200还包括计时单元230。该计时单元230配置为获取处理单元发起第二存储地址请求的时间。由此,根据计时单元230提供的处理单元发起第二存储地址请求的时间执行图1中所示的数据处理方法中的步骤S20。
例如,如图9B所示,在图9A所示的示例的基础上,数据处理装置200还包括地址比较单元240。该地址比较单元240配置为确定第一数据中是否包括与第二存储地址匹配的第一虚拟地址。例如,地址比较单元240可以执行图6中所示的数据处理方法中的步骤S201。
例如,如图9B所示,在图9A所示的示例的基础上,数据处理装置200还包括地址生成单元250。例如,该地址生成单元250配置为建立第二存储地址与第一虚拟地址之间的映射关系,确定存储在第二存储地址中的第二数据中是否包括第二虚拟地址,以及根据映射关系得到与第二虚拟地址对应的物理地址。例如,地址生成单元250可以执行图8中所示的数据处理方法中的步骤S205~S207中的相应操作。
例如,数据获取单元210、预取控制单元220、计时单元230、地址比较单元240和地址生成单元250可以为硬件、软件、固件以及它们的任意可行的组合。例如,数据获取单元210、预取控制单元220、计时单元230、地址比较单元240和地址生成单元250可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,数据处理装置200的各个单元与前述的数据处理方法的各个步骤对应,关于数据处理装置200的具体功能可以参考关于数据处理方法的相关描述,此处不再赘述。图9A和图9B所示的数据处理装置200的组件和结构只是示例性的,而非限制性的,根据需要,该数据处理装置200还可以包括其他组件和结构。
例如,上述数据处理装置可以在第二存储单元中实现。例如,第二存储单元可以为芯片中的缓存单元。
本公开至少一个实施例还提供一种电子设备,该电子设备包括处理器、存储器和一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于执行本公开任一实施例提供的数据处理方法的指令。
图10为本公开一些实施例提供的一种电子设备的示意框图。如图10所示,该电子设备300包括处理器310和存储器320。存储器320用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器310用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器310运行时可以执行上文所述的数据处理方法中的一个或多个步骤。存储器320和处理器310可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器310可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器310可以为通用处理器或专用处理器,可以控制电子设备300中的其它组件以执行期望的功能。
例如,存储器320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器310可以运行一个或多个计算机程序模块,以实现电子设备300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备300的具体功能和技术效果可以参考上文中关于数据处理方法以及数据处理装置的描述,此处不再赘述。
图11为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备400例如适于用来实施本公开实施例提供的数据处理方法。电子设备400可以是终端设备等。需要注意的是,图11示出的电子设备400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图11所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)410,其可以根据存储在只读存储器(ROM)420中的程序或者从存储装置480加载到随机访问存储器(RAM)430中的程序而执行各种适当的动作和处理。在RAM 430中,还存储有电子设备400操作所需的各种程序和数据。处理装置410、ROM 420以及RAM 430通过总线440彼此相连。输入/输出(I/O)接口450也连接至总线440。
通常,以下装置可以连接至I/O接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许电子设备400与其他电子设备进行无线或有线通信以交换数据。虽然图11示出了具有各种装置的电子设备400,但应理解的是,并不要求实施或具备所有示出的装置,电子设备400可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述数据处理方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述数据处理方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从ROM 420安装。在该计算机程序被处理装置410执行时,可以实现本公开实施例提供的数据处理方法中限定的功能。
图12为本公开一些实施例提供的一种存储介质的示意图。例如,如图12所示,存储介质500可以为非瞬时性计算机可读存储介质,在存储介质500上可以非暂时性地存储一个或多个计算机可读指令501。例如,当计算机可读指令501由处理器执行时可以执行根据上文所述的数据处理方法中的一个或多个步骤。
例如,该存储介质500可以应用于上述电子设备中,例如,该存储介质500可以包括电子设备中的存储器。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
例如,关于存储介质500的说明可以参考电子设备的实施例中对于存储器的描述,重复之处不再赘述。存储介质500的具体功能和技术效果可以参考上文中关于数据处理方法以及数据处理装置的描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种数据处理方法,包括:
响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将所述第一数据返回至第二存储单元,其中,所述第一存储地址请求包括所述第一存储地址;以及
响应于在所述第二存储单元将所述第一数据返回至所述处理单元之后,所述处理单元在预设时间阈值内发起第二存储地址请求,基于所述第一数据和所述第二存储地址请求确定是否执行链式数据预取操作,其中,所述第二存储地址请求包括第二存储地址。
2.根据权利要求1所述的数据处理方法,还包括:
响应于在所述第二存储单元将所述第一数据返回至所述处理单元之前,所述处理单元发起所述第二存储地址请求,不执行所述链式数据预取操作。
3.根据权利要求1所述的数据处理方法,还包括:
响应于在所述第二存储单元将所述第一数据返回至所述处理单元之后,所述处理单元在超过所述预设时间阈值后发起所述第二存储地址请求,不执行所述链式数据预取操作。
4.根据权利要求1-3任一项所述的数据处理方法,其中,响应于所述处理单元发起的所述第一存储地址请求,读取存储在所述第一存储单元的第一存储地址中的所述第一数据,并将所述第一数据返回至所述第二存储单元,包括:
响应于所述第一存储地址请求,向所述第一存储单元发起第一访问请求,读取存储在所述第一存储单元的第一存储地址中的所述第一数据;以及
在所述第二存储单元中存储返回的所述第一数据。
5.根据权利要求1-3任一项所述的数据处理方法,还包括:
将读取的所述第一数据返回至所述处理单元;以及
响应于所述处理单元发起的所述第二存储地址请求,读取存储在所述第一存储单元的第二存储地址中的第二数据,并将所述第二数据返回至所述第二存储单元。
6.根据权利要求5所述的数据处理方法,其中,响应于所述处理单元发起的所述第二存储地址请求,读取存储在所述第一存储单元的第二存储地址中的所述第二数据,并将所述第二数据返回至所述第二存储单元,包括:
在所述第二存储单元中存储所述第二存储地址;
响应于所述第二存储地址请求,向所述第一存储单元发起第二访问请求,读取存储在所述第一存储单元的第二存储地址中的所述第二数据;以及
在所述第二存储单元中存储返回的所述第二数据。
7.根据权利要求5所述的数据处理方法,其中,基于所述第一数据和所述第二存储地址请求确定是否执行所述链式数据预取操作,包括:
确定所述第一数据中是否包括与所述第二存储地址匹配的第一虚拟地址;
响应于所述第一数据中包括与所述第二存储地址匹配的所述第一虚拟地址,执行所述链式数据预取操作;以及
响应于所述第一数据中不包括与所述第二存储地址匹配的所述第一虚拟地址,不执行所述链式数据预取操作。
8.根据权利要求7所述的数据处理方法,其中,确定所述第一数据中是否包括与所述第二存储地址匹配的所述第一虚拟地址,包括:
判断所述第一虚拟地址的页内偏移量与所述第二存储地址的页内偏移量是否一致,以确定所述第一虚拟地址与所述第二存储地址是否匹配。
9.根据权利要求7所述的数据处理方法,还包括:
响应于执行所述链式数据预取操作,建立所述第二存储地址与所述第一虚拟地址之间的映射关系;
确定所述第二数据中是否包括第二虚拟地址;以及
响应于所述第二数据中包括所述第二虚拟地址,根据所述映射关系得到与所述第二虚拟地址对应的物理地址,并读取存储在所述第一存储单元的物理地址中的预取数据,并将所述预取数据返回至所述第二存储单元。
10.根据权利要求9所述的数据处理方法,还包括:
响应于所述处理单元发起的第三存储地址请求,比较所述物理地址与所述第三存储地址请求中包括的第三存储地址是否相同,其中,对应于所述第三存储地址请求的第三数据存储在所述第一存储单元的第三存储地址中;以及
响应于所述物理地址与所述第三存储地址相同,将所述第二存储单元中的所述预取数据作为所述第三数据返回至所述处理单元。
11.根据权利要求10所述的数据处理方法,还包括:
响应于所述物理地址与所述第三存储地址相同,基于所述第三数据和所述映射关系继续执行所述链式数据预取操作。
12.根据权利要求10所述的数据处理方法,还包括:
响应于所述物理地址与所述第三存储地址不相同,读取存储在所述第一存储单元的第三存储地址中的所述第三数据,并将所述第三数据返回至所述第二存储单元。
13.一种数据处理装置,包括:
数据获取单元,配置为响应于处理单元发起的第一存储地址请求,读取存储在第一存储单元的第一存储地址中的第一数据,并将所述第一数据返回至第二存储单元,其中,所述第一存储地址请求包括所述第一存储地址;
预取控制单元,配置为响应于在所述第二存储单元将所述第一数据返回至所述处理单元之后,所述处理单元在预设时间阈值内发起第二存储地址请求,基于所述第一数据和所述第二存储地址请求确定是否执行链式数据预取操作,其中,所述第二存储地址请求包括第二存储地址。
14.根据权利要求13所述的数据处理装置,还包括计时单元,
其中,所述计时单元配置为获取所述处理单元发起所述第二存储地址请求的时间。
15.根据权利要求13所述的数据处理装置,还包括地址比较单元,
其中,所述地址比较单元配置为确定所述第一数据中是否包括与所述第二存储地址匹配的第一虚拟地址。
16.根据权利要求15所述的数据处理装置,还包括地址生成单元,
其中,所述地址生成单元配置为建立所述第二存储地址与所述第一虚拟地址之间的映射关系,确定存储在所述第二存储地址中的第二数据中是否包括第二虚拟地址,以及根据所述映射关系得到与所述第二虚拟地址对应的物理地址。
17.一种电子设备,包括:
处理器;
存储器;
一个或多个计算机程序模块,其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行权利要求1-12任一所述的数据处理方法的指令。
18.一种存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时可以执行根据权利要求1-12任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011545768.9A CN112631956B (zh) | 2020-12-24 | 2020-12-24 | 数据处理方法及装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011545768.9A CN112631956B (zh) | 2020-12-24 | 2020-12-24 | 数据处理方法及装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631956A true CN112631956A (zh) | 2021-04-09 |
CN112631956B CN112631956B (zh) | 2023-01-20 |
Family
ID=75324187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011545768.9A Active CN112631956B (zh) | 2020-12-24 | 2020-12-24 | 数据处理方法及装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631956B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3924384A1 (de) * | 1988-07-25 | 1990-02-01 | Allen Bradley Co | Mehrere gestelle aufweisende speicherprogrammierbare steuerung mit relativer gestellschlitzadressierung |
US20030105939A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for next-line prefetching from a predicted memory address |
US20030105937A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for content-aware prefetching |
CN1636194A (zh) * | 2001-11-30 | 2005-07-06 | 英特尔公司 | 在内容感知预取器中识别候选虚拟地址的方法和装置 |
-
2020
- 2020-12-24 CN CN202011545768.9A patent/CN112631956B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3924384A1 (de) * | 1988-07-25 | 1990-02-01 | Allen Bradley Co | Mehrere gestelle aufweisende speicherprogrammierbare steuerung mit relativer gestellschlitzadressierung |
US20030105939A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for next-line prefetching from a predicted memory address |
US20030105937A1 (en) * | 2001-11-30 | 2003-06-05 | Cooksey Robert N. | Method and apparatus for content-aware prefetching |
CN1636194A (zh) * | 2001-11-30 | 2005-07-06 | 英特尔公司 | 在内容感知预取器中识别候选虚拟地址的方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘天义等: "提升处理器指针追逐访存性能的指令标签辅助的数据预取机制", 《高技术通讯》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112631956B (zh) | 2023-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9563562B2 (en) | Page crossing prefetches | |
CN111984189B (zh) | 神经网络计算装置和数据读取、数据存储方法及相关设备 | |
CN111090521A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
KR20200084707A (ko) | 태스크 분산 처리를 관리하는 마스터 장치, 태스크를 처리하는 태스크 처리 장치, 및 그 동작 방법 | |
US20090049232A1 (en) | Execute-in-place implementation for a nand device | |
CN112100088A (zh) | 电子装置以及使用该电子装置的存储部的方法 | |
CN113625973A (zh) | 数据写入方法、装置、电子设备及计算机可读存储介质 | |
US20140258643A1 (en) | Method and system for maintaining release consistency in shared memory programming | |
CN110955390A (zh) | 数据处理方法、装置和电子设备 | |
CN111444117B (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
CN112631956B (zh) | 数据处理方法及装置、电子设备及存储介质 | |
CN110399166B (zh) | ME Nonce值的保存方法、装置、设备及存储介质 | |
CN110321321B (zh) | 网络块设备快照读写方法、装置、设备及存储介质 | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
CN110995817A (zh) | 请求回调方法、装置及客户端设备 | |
CN110866201A (zh) | 缓存处理方法、装置、计算机设备以及存储介质 | |
CN111708715B (zh) | 内存分配方法、内存分配装置及终端设备 | |
US11237741B2 (en) | Electronic device and control method for controlling memory | |
CN111611077A (zh) | 任务参数处理方法、终端和存储介质 | |
CN112835520A (zh) | 基于映射表动态加载的读请求处理方法及装置 | |
CN116541334B (zh) | Pcie设备运行时文件的处理方法、装置和设备 | |
CN111475243A (zh) | 一种页面加载方法及系统 | |
US20120047285A1 (en) | Interrupt-based command processing | |
CN113220604B (zh) | 内存申请方法、装置、电子设备和计算机可读存储介质 | |
CN112650603B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |