掌桥专利:专业的专利平台
掌桥专利
首页

数据预取方法、装置、电子设备及储存介质

文献发布时间:2024-04-18 19:57:31


数据预取方法、装置、电子设备及储存介质

技术领域

本发明涉及计算机存储技术领域,特别是涉及一种数据预取方法、一种数据预取装置、一种电子设备以及一种存储介质。

背景技术

数据预取是通过分析处理器在过去一段时间内对内存的访存行为,来预测后续可能要访问的数据,进而将预测的数据提前从内存中加载到处理器的高速缓存中。当后续的访存请求命中了已经预取的数据,就可以快速获取数据,从而防止内存访问时间过长造成的处理器性能下降的情况。

目前,为了进一步提升内存访存的响应速度,直接执行预取操作,使得预取不够准确。

发明内容

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据预取方法,以减少内存访问时长。

第一方面,本发明提供一种数据预取方法,应用于内存控制器,所述方法包括:

接收针对内存行的访存请求;其中,所述内存行包括若干区域;每个区域包括若干个数据块;

获取所述访存请求对应的访问区域的访问频率;任一区域的访问频率用于表征所述任一区域内被访问过的数据块的数量;

在所述访问区域的访问频率大于或等于第一预设访问频率的情况下,在所述访问区域的地址上增加预设预取距离,以第一预取度,执行预取操作。

第二方面,本发明提供一种数据预取装置,应用于内存控制器,所述装置包括:

访存请求接收模块,用于接收针对内存行的访存请求;其中,所述内存行包括若干区域;每个区域包括若干个数据块;

访问区域的访问频率获取模块,用于获取所述访存请求对应的访问区域的访问频率;任一区域的访问频率用于表征所述任一区域内被访问过的数据块的数量;

预取模块,用于在所述访问区域的访问频率大于或等于第一预设访问频率的情况下,在所述访问区域的地址上增加预设预取距离,以第一预取度,执行预取操作。

第三方面,本发明提供一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述数据预取方法。

第四方面,本发明提供一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述数据预取方法。

本发明包括以下优点:

区域的访问频率用于表征该区域内被访问过的数据块的数量,访问区域的访问频率越高,说明该区域内被访问过的数据块越多,说明目前对于该访问区域的访存更类似于流。因此,访存请求对应的访问区域的访问频率,大于或等于第一预设访问频率的情况下,就是进行了流式访问区域的准确识别,该访问区域较大概率为流式访问区域,然后才执行预取操作,提升了预取准确性,可以减少没有进行流的识别,就执行预取操作造成的内存带宽浪费等。而且,在访问区域的地址上增加预设预取距离,执行预取操作,预设预取距离为该预取充分考虑了预取延迟,能够尽可能的保证针对该预取数据的访存请求到达之前,该预取数据就已经预取完成,尽可能的减少了内存访问时长。同时,此处该访存请求和大多数的预取均是针对同一内存行,内存行的相关度较高,可以适当减少数据预取在访问内存行过程中的时序控制步骤等,提升了预取速率。

附图说明

图1示出了本发明的一种数据预取方法实施例的步骤流程图;

图2示出了本发明的一种数据块的状态转换的示意图;

图3示出了本发明的一种数据预取装置实施例的结构框图;

图4示出了本发明的一种内存行的每个区域所包括的所有数据块的数量种类的示意图;

图5示出了本发明的一种内存行位图的示意图;

图6示出了本发明的一种预取的示意图;

图7示出了本发明的另一种预取的示意图;

图8示出了本发明的一种处理器、内存控制器、内存分布和交互的示意图;

图9示出了本发明预取资源的示意图;

图10示出了本发明预取命令重发的示意图;

图11示出了本发明组相联的结构组织的示意图;

图12示出了本发明Stream测试性结果对比图;

图13示出了本发明Spec测试性结果对比图;

图14是本发明实施例提供的一种电子设备的结构图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

本发明实施例的核心构思之一在于,先对流进行识别,在访存请求对应的访问区域的访问频率,大于或等于第一预设访问频率的情况下,该访问区域较大概率为流式访问区域,进行了流式访问区域的准确识别,在识别到流式访问区域的情况下,才执行预取操作,提升了预取准确性,可以减少没有进行流的识别,就执行预取操作造成的内存带宽浪费等。而且,在访问区域的地址上增加预设预取距离,执行预取操作,预设预取距离为该预取充分考虑了预取延迟,能够尽可能的保证针对该预取数据的访存请求到达之前,该预取数据就已经预取完成,尽可能的减少了内存访问时长。

图1示出了本发明的一种数据预取方法实施例的步骤流程图,该数据预取方法应用于内存控制器,该内存控制器与处理器可以位于同一芯片上,内存控制器主要用于将处理器,针对内存的访问请求转换为操作内存颗粒读写的接口命令,其决定了处理器的访存性能。该内存控制器通常包括命令调度器、时序控制器等。

参照图1,该数据预取方法具体可以包括如下步骤:

步骤101、接收针对内存行的访存请求;其中,所述内存行包括若干区域;每个区域包括若干个数据块。

此处的内存可以是动态随机访问存储器(Dynamic Random Access Memory,DRAM)等,主要用于计算机内存颗粒,其具有容量大、同等数据空间占用物理面积小等优势。例如,此处的内存可以是双倍数据速率同步动态随机访问存储器(Double Data RateSynchronous Dynamic Random Access Memory,DDR SDRAM)。DDR SDRAM芯片一般包括多个bank,每个bank对应一个存储阵列和一组感应放大器。当DDR SDRAM芯片的一行数据从bank的存储阵列中读出后,会保存在感应放大器中。本发明中,对于内存的具体种类等不作具体限定。

该访存请求可以是由处理器发出的,针对内存的访存请求。该访存请求可以包括待访存的数据块的地址等,该待访存的数据块就是该访存请求需要访存的数据块。内存行设置在前述的bank上,任一bank上可以设置有多个内存行,该内存行可以包括若干区域,每个区域可以包括若干个数据块。对于内存行包括的区域的数量不作具体限定,区域所包括的数据块的数量也不作具体限定。

该内存控制器在收到上述访存请求后,会将该访存请求对应的数据块返回给处理器。

步骤102、获取所述访存请求对应的访问区域的访问频率;任一区域的访问频率用于表征所述任一区域内被访问过的数据块的数量。

该访存请求对应的访问区域是指:该访存请求中待访存的数据块所在的区域。

一区域的访问频率可以表征该区域内被访问过的数据块的数量,即该区域内被访问过的数据块的数量越多,该区域的访问频率越高。该访问区域的访问频率表征该访问区域内被访问过的数据块的数量。

示例性的,此步骤可以是通过软件或硬件方式统计该内存行中该访问区域的访问频率,具体可以是用该内存行中该访问区域内被访问过的数据块的数量,除以该访问区域内的数据块的总数量,得到该访问区域的访问频率。对该访问区域的访问频率的具体获取方式不作限定。

步骤103、在所述访问区域的访问频率大于或等于第一预设访问频率的情况下,在所述访问区域的地址上增加预设预取距离,以第一预取度,执行预取操作。

此处的第一预设访问频率根据实际需要设定,对于第一预设访问频率的具体值不作限定。访问区域的访问频率用于表征该访问区域内被访问过的数据块的数量,访问区域的访问频率越高,说明该区域内被访问过的数据块越多,说明目前对于该访问区域的访存更类似于流。因此,在访存请求对应的访问区域的访问频率,大于或等于第一预设访问频率的情况下,该访问区域很大概率为流式访问区域,相当于对流式访问区域进行了准确识别。

该预设预取距离的设定主要是充分考虑该预取延迟,尽量保证针对该预取数据的访存请求到达之前,该预取数据就已经预取完成,进而可以避免虽然预取命中,但是针对该预取数据的访存请求到达,该预取数据可能还没有预取完成,即,可以避免即便预取命中,依然不能减少内存访问时长的问题。因此,该预设预取距离主要以针对该预取数据的访存请求可能到达的时刻,以及该预取延迟两者确定,对于该预设预取距离的大小,不作限定。预取距离是指要预取的数据块或区域,与该访存请求对应的数据块或区域之间,具有的数据块或区域的数量。

此处的第一预取度是说该预取一次性预取多少数据块,或者多区域等。该第一预取度主要以该访问区域的访问频率等确定;此处第一预取度和该访问区域的访问频率的比例关系等,可以人为设定等,对此不作具体限定。例如,该访问区域的访问频率更高,说明,访问区域内被访问过的数据块的数量更高,则,该第一预取度可以更高。对于第一预取度的具体数值也不作限定。

此处大多数的预取和该访存请求均是针对同一内存行,内存行的相关度较高,可以适当减少数据预取在访问内存行过程中的时序控制的步骤等,提升预取速率。例如,若该内存控制器从内存行中,获取该访存请求中待访存的数据块,若该预取的数据块也在该内存行内,则该待访存数据和该预取在同一内存行内,针对该预取无需关掉该访存请求对应的内存行,再打开该预取所在的内存行,减少了步骤,可以提升了预取速率。

综上所述,本发明中,访问区域的访问频率用于表征该访问区域内被访问过的数据块的数量,访问区域的访问频率越高,说明该区域内被访问过的数据块越多,说明目前对于该访问区域的访存更类似于流。因此,访存请求对应的访问区域的访问频率,大于或等于第一预设访问频率,就是进行了流式访问区域的准确识别,该访问区域较大概率为流式访问区域,然后才执行预取操作,提升了预取准确性,可以减少没有进行流的识别,就执行预取操作造成的内存带宽浪费等。而且,在访问区域的地址上增加预设预取距离,执行预取操作,预设预取距离为该预取充分考虑了预取延迟,能够尽可能的保证针对该预取数据的访存请求到达之前,该预取数据就已经预取完成,尽可能的减少了内存访问时长。同时,此处的预取和该访存请求均是针对同一内存行,内存行的相关度较高,可以适当减少数据预取在访问内存行过程中的时序控制的步骤等,提升了预取速率。

需要说明的是,前述步骤103中,可以是内存控制器根据内存行、访问区域的地址、预设预取距离、第一预取度等中的至少一种,生成预取请求或预取命令,将该预取请求或预取命令发送至内存的该内存行,由该内存行返回该预取请求或预取命令对应的预取数据,此处就是用访存请求触发预取请求,实现数据预取。

可选的,本发明实施例还可以执行下述步骤:

步骤S21、将所述预取操作获得的第一预取数据,存储在所述内存控制器的片上缓冲器中。

内存控制器与处理器位于同一芯片上,且内存控制器的片上缓冲器具有一定的存储容量,因此,前述预取操作获得的第一预取数据,存储在该存储控制器的片上缓冲器中,一方面,存储控制器的片上缓冲器比内存距离处理器近,而且,从片上缓冲器获取数据,不需要复杂的时序控制,访问速度快,可以减少内存访问时长,另一方面,内存控制器的片上集成缓冲器实现简单,且对芯片新增的开销可控。

可选的,本发明实施例还可以执行下述步骤:

步骤S22、基于所述片上缓冲器的存储容量,确定所述内存行中每个区域所包括的所有数据块的数量种类;任一区域所包括的所有数据块对应的总存储空间,小于或等于所述存储容量。

内存控制器的片上缓冲器的存储空间的大小即为该内存控制器的片上缓冲器的存储容量。基于该片上缓冲器的存储容量,确定该内存行中,每个区域所包括的所有数据块的数量种类。需要注意的是,每个区域所包括的所有数据块对应的总存储空间,要小于或等于该片上缓冲器的存储容量,进而在后续的预取中,可以保证一次性至少能够预取一个区域中的所有的数据块。

例如,该内存控制器的片上缓冲器的存储容量为1KB,该内存行中所有数据块的大小为8KB,该内存行中每个数据块的大小为64字节,则该内存行中数据块的总数量为:1024×8/64=128个。每个区域所包括的所有数据块的对应的存储空间,小于等于1KB,则1024×1/64=16个,进而,由该存储容量,确定的内存行中,每个区域所包括的所有数据块的最大数量为16个,由该存储容量,确定的内存行中,每个区域所包括的所有数据块的数量种类可以为:16个、8个、4个、2个。在该内存行中,每个区域所包括的所有数据块的数量为16的情况下,该内存行可以被划分为:128/16=8个区域。在该内存行中,每个区域所包括的所有数据块的数量为8的情况下,该内存行可以被划分为:128/8=16个区域。在该内存行中,每个区域所包括的所有数据块的数量为4的情况下,该内存行可以被划分为:128/4=32个区域。在该内存行中,每个区域所包括的所有数据块的数量为2的情况下,该内存行可以被划分为:128/2=64个区域。

步骤S23、针对每个数量种类,分别获取所述内存行中所述数量种类对应的所有区域的访问频率。

针对前述每个数量种类,获取该内存行中,该数量种类对应的所有区域的访问频率。例如,针对前述例子,所有的数量种类为:16个、8个、4个、2个。则,针对16这一数量种类,获取该内存行中,该数量种类对应的8个区域的访问频率。针对8这一数量种类,分别获取该内存行中,该数量种类对应的16个区域的访问频率。针对4这一数量种类,分别获取该内存行中,该数量种类对应的32个区域的访问频率。针对2这一数量种类,分别获取该内存行中,该数量种类对应的64个区域的访问频率。

步骤S24、基于每个数量种类,以及所述内存行中所述数量种类对应的所有区域的访问频率,确定所述内存行的当前访存的局部性参数;其中,所述内存行的当前访存的局部性参数为:所述内存行中任一区域所包括的所有数据块的数量种类中的一种数量。

基于每个数量种类,以及该内存行中,该数量种类对应的所有区域的访问频率,确定该内存行的当前访存的局部性参数。该内存行的当前访存的局部性参数为:该内存行中,每个区域所包括的所有数据块的数量种类中的一种数量。该内存行的当前访存的局部性参数可以表征:同一内存行中,被访存过的数据块附近的数据块,在该被访存过的数据块的访存时刻之后,被多次访存的概率情况。该内存行的当前访存的局部性参数越高,同一内存行中,被访存过的数据块附近的数据块,在该被访存过的数据块的访存时刻之后,被多次访存的概率越大。本发明中,该内存行的当前访存的局部性参数为:该内存行中,每个区域所包括的所有数据块的数量种类中的一种数量,也就是说,将内存行的当前访存的局部性参数进行了量化,该量化后的内存行的当前访存的局部性参数清楚明了,由此进行的后续的预取操作更为准确,可以提升预取准确性。

步骤S25、基于所述局部性参数,确定预取策略。

此处就是根据该内存行的当前访存的局部性参数的具体数值,适应性确定对应的预取策略,一方面,将内存行的当前访存的局部性参数进行了量化,该量化后的内存行的当前访存的局部性参数清楚明了,由此确定的预取策略更为准确,可以提升预取准确性。另一方面,不同的局部性参数的数值,对应不同的预取策略,灵活性好,且根据针对性,预取更为准确。

可选的,前述步骤S23之前,本发明实施例还可以执行下述步骤:步骤S230、统计所述内存行中每个数据块的状态;其中,所述数据块的状态包括:无效状态、访问状态和预取状态中的一种;所述无效状态为:未被访问且未被预取的状态。

具体的,针对该内存行中的所有数据块,统计每个数据块的状态。图2示出了本发明的一种数据块的状态转换的示意图。参照图2,Init为无效状态,Access为访问状态,Prefetch为预取状态,Initial State为最初状态或原始状态,Actual Access是指访存请求,Prefetch Request是指预取请求。数据块的最初状态为无效状态。在接收到针对该数据块的访存请求的情况下,将该数据块的状态调整为访问状态。在接收到针对该数据块的预取请求的情况下,将该数据块的状态调整为预取状态。针对预取状态的数据块,在接收到针对该数据块的访存请求的情况下,说明预取命中,将该数据块的状态调整为访问状态。

可选的,前述步骤S23,可以包括:

步骤S231、针对每个数量种类,分别统计所述内存行中所述数量种类对应的各个区域的状态;所述区域的状态包括:第一状态、第二状态、第三状态和第四状态中的一种,所述第一状态、所述第二状态、所述第三状态、所述第四状态对应的访问的数据块的数量依次增多。

步骤S232、针对每个数量种类,获取所述内存行中所述数量种类对应的所有区域中,处于所述第三状态的区域的第二总数量,以及获取所述数量种类对应的所有区域的第三总数量。

步骤S233、基于所述第二数量和所述第三总数量的比值,得到所述内存行中所述数量种类对应的所有区域的访问频率。

具体的,可以用SizeN代表该内存行中,一种数量种类对应的,包含N个数据块的区域,根据该内存行的规格,对于一个共包含S个数据块的内存行,可以根据N选取的情况,预测性的划分出S/N个区域。例如,针对前述例子,该内存行共包含128个数据块,针对16这一数量种类,预测性的划分出128/16=8个区域,针对8这一数量种类,预测性的划分出128/8=16个区域,针对4这一数量种类,预测性的划分出128/4=64个区域,针对2这一数量种类,预测性的划分出128/2=64个区域。

针对每个数量种类,该内存行预测得到的所有区域的状态都需要被统计。每个区域的状态可以包括:第一状态、第二状态、第三状态和第四状态中的一种,该第一状态、第二状态、第三状态、第四状态对应的访问数据块的数量依次增多,第二状态具体比第一状态对应的访问数据块的数量多多少不作限定,第三状态具体比第二状态对应的访问数据块的数量多多少,也不作限定,第四状态具体比第三状态对应的访问数据块的数量多多少,也不作限定。

例如,针对前述例子,就是针对16这一数量种类,统计该内存行的8个区域的状态,针对8这一数量种类,统计该内存行的16个区域的状态,针对4这一数量种类,统计该内存行的32个区域的状态,针对4这一数量种类,统计该内存行的64个区域的状态。

针对每个数量种类,用该内存行中,该数量种类对应的所有区域中,处于该第三状态的区域的第二总数量,以及该数量种类对应的所有区域的第三总数量,可以基于第二数量和所述第三总数量的比值,得到该内存行中,该数量种类对应的所有区域的访问频率。可以直接将上述比值确定为该数量种类对应的所有区域的访问频率,或者是,可以在该比值的基础上增加参数,例如可以是预设系数等,得到该数量种类对应的所有区域的访问频率,对此不作具体限定。例如,针对前述例子,针对16这一数量种类,用该内存行数量种类16对应的8个区域中,处于第三状态的区域的第二总数量2,除以该内存行数量种类16对应的8个区域,即2/8=1/4,即为该内存行中,16这一数量种类对应的所有区域的访问频率。依次类推,针对每个数量种类,获得该内存行中,每个数量种类对应的所有区域的访问频率。

可选的,前述步骤S24可以包括步骤S241、按照所述数量种类从大到小的顺序,针对每个数量种类,在所述内存行中所述数量种类对应的所有区域中,所述第三状态的区域的第二总数量大于或等于第一预设数量的情况下,将所述数量种类确定为所述内存行的当前访存的局部性参数。

就是先查看数量种类中最大的数量种类,针对最大的数量种类,在该内存行中,该最大数量种类对应的所有区域中,该第三状态的区域的第二总数量大于或等于第一预设数量的情况下,将该最大数量种类,确定为该内存行的当前访存的局部性参数。依次类推,在最大数量种类对应的所有区域中,该第三状态的区域的第二总数量小于该第一预设数量的情况下,再查看该次大的数量种类,进而能够将一个区域中划分尽可能多的数据块,该内存行的当前访存的局部性参数,与后续的预取度有关联,进而在满足内存控制器的片上缓冲器的存储容量的情况下,一次性可能能够预取更多的数据块,可以适当提升预取效率。

可选的,前述步骤S231中,第一状态为该区域内没有数据块被访问,该第二状态为该区域内有任意一个数据块被访问,该第三状态为该区域的访问频率大于或等于第二预设访问频率,该第四状态为该区域的访问频率大于或等于前述第一预设访问频率。此处的第二预设访问频率小于,前述的第一预设访问频率,两者的具体差值不作限定。

可选的,步骤S241可以包括:步骤S2411、按照该数量种类从大到小的顺序,针对每一数量种类,在该内存行中,该数量种类对应的所有区域中,该第三状态的区域的第二总数量大于或等于预设比例的第一状态的区域第四总数量的情况下,将该数量种类,确定为该内存行的当前访存的局部性参数。就是说,前述的第一预设数量以该第一状态的区域的第四总数量为参考,由此得到的该内存行的当前访存的局部性参数准确性更高。此处的预设比例可以为根据实际情况进行选取等,例如,该预设比例可以为1/2等。

可选的,前述步骤S25可以包括下述步骤:

步骤S251、对所述内存行的区域,进行重新划分,确定所述内存行中每个划分后的区域包括的数据块的总数量为第一总数量;其中,每个所述第一总数量均等于所述内存行的当前访存的局部性参数。

步骤S252、将所述访问区域内的剩余数据块,均预取至所述片上缓冲器内;其中,所述剩余数据块为:截至所述访存请求的接收时刻,所述访问区域内未被访问的数据块和未被预取的数据块。

具体的,对该内存行的区域进行重新划分后,直接使得该内存行中划分后的每个区域包括的数据块总数量为第一总数量,每个该第一总数量均等于该内存行的当前访存的局部性参数。该重新划分的区域会作为后续预取位置的参照参数、和/或,预取度的参照参数,利于预取。然后将该访问区域内的剩余数据块,均预取到该内存控制器的片上缓冲器中。该剩余数据块为:截至步骤101中该访存请求的接收时刻,该访问区域内,未被访问的数据块和未被预取的数据块。此处的未被访问的数据块是指:截至步骤101中该访存请求的接收时刻,未接收到访存请求的数据块。未被预取的数据块是指:截至步骤101中该访存请求的接收时刻,未接收到预取请求的数据块。接收到访存请求的数据块,要不马上就从内存行中获取到,要不已经被预取到了片上缓冲器中,要不已经被预取到处理器的缓存行中,因此没有再被预取的必要了。接收到预取请求的数据块,要不正在预取,要不已经预取成功,也没有再预取的必要了,在接收到访存请求的情况下,该内存行中和该访存请求对应的数据块位于同一访问区域中的其他数据块,由于局部性参数的存在,可能也即将被访存,因此,提前将该访问区域中的剩余数据块也预取到,而且,该访存请求对应的数据块和需要预取的数据块,均位于同一内存行上,可以利用“行命中”的特性,几乎不会给内存调度带来额外的开销,进而进一步降低内存访存时长。而且,仅是将该访问区域中的剩余数据块预取到,预取度合适,基本不会浪费内存资源等。

例如,针对前述例子,若该内存行的当前访存的局部性参数为8,则,对该内存行的区域,进行重新划分,使得该内存行划分后的每个区域包括的所有数据块的第一总数量为8,则128个数据块可以划分128/8=16个区域。若该访存请求对应的访问区域为区域1的数据块1,区域1的剩余数据块为:数据块0、数据块2、数据块5、数据块6共4个数据块,则将该4个数据块预取。

可选的,前述步骤S25之前,本发明实施例还可以执行下述步骤:

步骤S26、从所述内存行中,获取一个区域所包括的所有数据块的数量种类中的最大数量。前述步骤S25可以包括:步骤S253、在所述内存行的当前访存的局部性参数与所述最大数量相等,且所述预取操作对应的预取数据块超出所述内存行的情况下,进行所述内存行的行切换。

具体的,该内存行的当前访存的局部性参数等于,该内存行中,一个区域所包括的所有数据块的数量种类中的最大数量,说明:同一内存行中,被访存过的数据块附近的数据块,在该被访存过的数据块的访存时刻之后,被多次访存的概率最大,该程序更倾向于流式。该预取操作对应的数据块超出该内存行,说明该流继续向下一内存行继续延伸的概率极大,进行行切换,自动触发下一内存行的预取等。

更为具体的,该步骤S253对于每个已经识别出来的流具有跟随功能,即不只局限于该内存行内的预取,而是随着流的行进方向自动将当前内存行切换,以保证可以一直跟随已经识别出来的流。当该内存行的局部性参数等于,该内存行中,一个区域所包括的所有数据块的数量种类中的最大数量,且所触发的预取已经超过该内存行的范围的时候,内存行将自动触发上下文切换,以统计下一个内存行的访问情况等。

可选的,前述步骤S25之前,本发明实施例还可以执行下述步骤:

步骤S27、从所述内存行中,获取一个区域所包括的所有数据块的数量种类中的最大数量。前述步骤S25可以包括:步骤S254、在所述内存行的当前访存的局部性参数与所述最大数量相等,且所述内存控制器对应的内存总线即将空闲或空闲的情况下,根据所述内存行的当前访存的局部性参数,确定第二预取度;所述第二预取度大于所述第一预取度。前述步骤S25可以包括:步骤S255、以所述第二预取度,执行预取操作,并将所述预取操作获得的第二预取数据,存储在所述内存控制器的片上缓冲器中。

具体的,该内存行的当前访存的局部性参数等于,该内存行中,一个区域所包括的所有数据块的数量种类中的最大数量,说明:同一内存行中,被访存过的数据块附近的数据块,在该被访存过的数据块的访存时刻之后,被多次访存的概率最大,该程序更倾向于流式。在该内存控制器对应的内存总线即将空闲或空闲的情况下,可以根据该内存行的当前访存的局部性参数,确定第二预取度,该第二预取度,大于前述的第一预取度,此处的该内存行的当前访存的局部性参数体现的是对于片上缓冲器的存储空间的利用,以该第二预取度,执行预取操作,并将该预取操作获得的第二预取数据,存储在该内存控制器的片上缓冲器中,进而充分利用了该内存控制器对应的内存总线即将空闲或空闲的带宽和片上缓冲器的存储空间。需要说明的是,该第二预取度,具体比第一预取度大多少不作限定。

内存控制器内部通常会有一个队列来存放还没有访问内存颗粒的访存请求,队列中访存请求的数量较少就是内存总线即将空闲或空闲,有很多项就说明比较繁忙。此处的内存总线即将空闲可以是该队列中访存请求的数量小于或等于第二预设数量。该第二预设数量根据实际需要设定,该第二预设数量的具体数值,不作限定。此处,内存控制器可以向内存发送预取请求或预取指令等,该预取请求或预取指令中包含有该第二预取度。

可选的,该访存请求可以包括:待访存的数据块的地址,本发明实施例还可以执行下述步骤:

步骤S28、在所述内存控制器的片上缓冲器中,查找到所述访存请求对应的待访存的数据块的情况下,从所述内存控制器的片上缓冲器获取所述待访存的数据块,并释放所述待访存的数据块在所述片上缓冲器中所占的空间。

在该访存请求到来之前,该待访存的数据块已经预取到了该内存控制器的片上缓冲器中,说明预取命中了,则,可以在该内存控制器的片上缓冲器中,查找到该待访存的数据块。此种情况下,就从该内存控制器的片上缓冲器,返回该待访存的数据块,无需再去内存中获取待访存的数据块,减少了内存访问时长。在从该内存控制器的片上缓冲器,返回该待访存的数据块之后,该待访存的数据块会在处理器的最近的高速缓存行(Last LevelCache)中存在,能够保证一段时间内,处理器大概率不会再有相同地址的读访问,因此,可以释放该待访存的数据块在该片上缓冲器中所占的空间,为新预取的数据腾出空间,提升内存控制器的片上缓冲器的利用效率。

需要说明的是,在该内存控制器的片上缓冲器中,查找到该待访存的数据块的情况下,该内存控制器可以拦截该访存请求,不向内存转发该访存请求。

步骤S29、在所述内存控制器的片上缓冲器中,未查找到所述访存请求对应的待访存的数据块的情况下,从所述内存行的所述待访存的数据块的地址中,获取所述待访存的数据块,并返回所述待访存的数据块。

在该内存控制器的片上缓冲器中,未查找到该访存请求对应的待访存的数据块的情况下,就是没有预取命中,就需要从该内存行的该待访存的数据块的地址中,获取该待访存的数据块,并返回该待访存的数据块,没有预取命中的情况下,保证正常的访存。

需要说明的是,在该内存控制器的片上缓冲器中,未查找到该访存请求对应的待访存的数据块的情况下,该内存控制器可以将该访存请求,转发给内存,由该内存行返回该待访存的数据块。

可选的,前述步骤103之前,本发明实施例还可以执行下述步骤:

步骤S30、为所述内存行分配预取资源。

前述步骤103可以包括:步骤S31、在所述访问区域的访问频率大于或等于第一预设访问频率的情况下,基于所述预取资源,在所述访问区域的地址上增加所述预设预取距离,以所述第一预取度,执行预取操作。

前述步骤103之后,本发明实施例还可以执行下述步骤:

步骤S32、在连续预设次数的访存请求,均没有针对所述内存行的访存请求的情况下,释放为所述内存行分配的预取资源。

具体的,预取资源可以为能够影响预取的各项资源等。例如,该预取资源可以包括:内存控制器中片上缓冲器的存储容量等,对于具体的预取资源不作限定。在预取之前,为该内存行分配预取资源,能够保证针对该内存行的预取顺利进行。在前述的预取之后,可以统计针对该内存行的访存请求的数量,在连续预设次数的访存请求均没有针对该内存行的访存请求的情况下,说明该处理器针对该内存行的局部性参数较小,则可以释放为该内存行分配的预取资源,为其余的内存行的预取让步,进而提升预取资源的利用效率。此处的预设次数根据实际设定,在本发明中,对此不作具体限定。

可选的,前述步骤102中的区域的访问频率可以包括:在该内存行具有预取资源的情况下,该内存行中该区域的访问频率,进而在充分考虑资源的有限性的情况下,执行预取操作设置,与实际情况更相符。

可选的,前述步骤S230,可以包括:在前述内存行具有预取资源的情况下,统计该内存行中每个数据块的状态,进而在充分考虑资源的有限性的情况下,进行数据块的状态的获取,以设计后续的预取设置,与实际情况更相符。

可选的,前述步骤S231,可以包括:在所述内存行具有预取资源的情况下,针对每个数量种类,分别统计所述内存行中所述数量种类对应的各个区域的状态,进而在充分考虑资源的有限性的情况下,进行区域的状态的获取,以设计后续的预取设置,与实际情况更相符。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图3,图3示出了本发明的一种数据预取装置实施例的结构框图,具体可以包括如下模块:

访存请求接收模块301,用于接收针对内存行的访存请求;其中,所述内存行包括若干区域;每个区域包括若干个数据块;

访问区域的访问频率获取模块302,用于获取所述访存请求对应的访问区域的访问频率;任一区域的访问频率用于表征所述任一区域内被访问过的数据块的数量;

预取模块303,用于在所述访问区域的访问频率大于或等于第一预设访问频率的情况下,在所述访问区域的地址上增加预设预取距离,以第一预取度,执行预取操作。

可选的,所述装置还包括:

存储模块,用于将所述预取操作获得的第一预取数据,存储在所述内存控制器的片上缓冲器中。

可选的,所述装置还包括:

数量种类确定模块,用于基于所述片上缓冲器的存储容量,确定所述内存行中每个区域所包括的所有数据块的数量种类;任一区域所包括的所有数据块对应的总存储空间,小于或等于所述存储容量;

所有区域的访问频率获取模块,用于针对每个数量种类,分别获取所述内存行中所述数量种类对应的所有区域的访问频率;

局部性参数确定模块,用于基于每个数量种类,以及所述内存行中所述数量种类对应的所有区域的访问频率,确定所述内存行的当前访存的局部性参数;其中,所述内存行的当前访存的局部性参数为:所述内存行中任一区域所包括的所有数据块的数量种类中的一种数量;

预取策略确定模块,用于基于所述局部性参数,确定预取策略。

可选的,所述预取策略确定模块包括:

区域重新划分子模块,用于对所述内存行的区域,进行重新划分,确定所述内存行中每个划分后的区域包括的数据块的总数量为第一总数量;其中,每个所述第一总数量均等于所述内存行的当前访存的局部性参数;

第一预取子模块,用于将所述访问区域内的剩余数据块,均预取至所述片上缓冲器内;其中,所述剩余数据块为:截至所述访存请求的接收时刻,所述访问区域内未被访问的数据块和未被预取的数据块。

可选的,所述装置还包括:

最大数量获取模块,用于从所述内存行中,获取一个区域所包括的所有数据块的数量种类中的最大数量;

所述预取策略确定模块,包括:

行切换子模块,用于在所述内存行的当前访存的局部性参数与所述最大数量相等,且所述预取操作对应的预取数据块超出所述内存行的情况下,进行所述内存行的行切换。

可选的,所述装置还包括:

最大数量获取模块,用于从所述内存行中,获取一个区域所包括的所有数据块的数量种类中的最大数量;

所述预取策略确定模块,包括:

预取度确定子模块,用于在所述内存行的当前访存的局部性参数与所述最大数量相等,且所述内存控制器对应的内存总线即将空闲或空闲的情况下,根据所述内存行的当前访存的局部性参数,确定第二预取度;所述第二预取度大于所述第一预取度;

第二预取子模块,用于以所述第二预取度,执行预取操作,并将所述预取操作获得的第二预取数据,存储在所述内存控制器的片上缓冲器中。

可选的,所述访存请求包括:待访存的数据块的地址,所述装置还包括:

第一返回模块,用于在所述内存控制器的片上缓冲器中,查找到所述访存请求对应的待访存的数据块的情况下,从所述内存控制器的片上缓冲器获取所述待访存的数据块,并释放所述待访存的数据块在所述片上缓冲器中所占的空间;

第二返回模块,用于在所述内存控制器的片上缓冲器中,未查找到所述访存请求对应的待访存的数据块的情况下,从所述内存行的所述待访存的数据块的地址中,获取所述待访存的数据块,并返回所述待访存的数据块。

可选的,所述装置还包括:

统计模块,用于统计所述内存行中每个数据块的状态;其中,所述数据块的状态包括:无效状态、访问状态和预取状态中的一种;所述无效状态为:未被访问且未被预取的状态;

所述所有区域的访问频率获取模块,包括:

区域状态统计子模块,用于针对每个数量种类,分别统计所述内存行中所述数量种类对应的各个区域的状态;所述区域的状态包括:第一状态、第二状态、第三状态和第四状态中的一种,所述第一状态、所述第二状态、所述第三状态、所述第四状态对应的访问的数据块的数量依次增多;

总数量获取子模块,用于针对每个数量种类,获取所述内存行中所述数量种类对应的所有区域中,处于所述第三状态的区域的第二总数量,以及获取所述数量种类对应的所有区域的第三总数量;

所有区域的访问频率获取子模块,用于基于所述第二数量和所述第三总数量的比值,得到所述内存行中所述数量种类对应的所有区域的访问频率;

所述局部性参数确定模块,包括:

局部性参数确定子模块,用于按照所述数量种类从大到小的顺序,针对每个数量种类,在所述内存行中所述数量种类对应的所有区域中,所述第三状态的区域的第二总数量大于或等于第一预设数量的情况下,将所述数量种类确定为所述内存行的当前访存的局部性参数。

可选的,所述装置还包括:

资源分配模块,用于为所述内存行分配预取资源;

所述预取模块303,包括:

第三预取子模块,用于在所述访问区域的访问频率大于或等于第一预设访问频率的情况下,基于所述预取资源,在所述访问区域的地址上增加所述预设预取距离,以所述第一预取度,执行预取操作;

所述装置还包括:

资源释放模块,用于在连续预设次数的访存请求,均没有针对所述内存行的访存请求的情况下,释放为所述内存行分配的预取资源。

可选的,所述区域的访问频率包括:在所述内存行具有预取资源的情况下,所述内存行中所述区域的访问频率。

可选的,所述装置还包括:

资源分配模块,用于为所述内存行分配预取资源;

所述统计模块,包括:

数据块状态统计子模块,用于在所述内存行具有预取资源的情况下,统计所述内存行中每个数据块的状态;

所述区域状态统计子模块,包括:

区域状态统计单元,用于在所述内存行具有预取资源的情况下,针对每个数量种类,分别统计所述内存行中所述数量种类对应的各个区域的状态。

可选的,所述第一状态为所述区域内没有数据块被访问,所述第二状态为所述区域内有任意一个数据块被访问,所述第三状态为所述区域的访问频率大于或等于第二预设访问频率,所述第四状态为所述区域的访问频率大于或等于所述第一预设访问频率;所述第二预设访问频率小于,所述第一预设访问频率;

所述局部性参数确定子模块,包括:

局部性参数确定单元,用于按照所述数量种类从大到小的顺序,针对每一数量种类,在所述内存行中所述数量种类对应的所有区域中,所述第三状态的区域的第二总数量,大于或等于预设比例的所述第一状态的区域的第四总数量的情况下,将所述数量种类确定为所述内存行的当前访存的局部性参数。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

下面结合具体的示例,进一步解释说明本申请。

该内存控制器的片上缓冲器的存储容量为1KB,该内存为一个64位、列(column)大小为1024的DDR SDRAM颗粒。该内存行中所有数据块的大小为8KB,该内存行中每个数据块的大小为64字节,则该内存行中数据块的总数量为:1024×8/64=128个。图4示出了本发明的一种内存行的每个区域所包括的所有数据块的数量种类的示意图。结合图4,由该存储容量,确定的内存行中,每个区域所包括的所有数据块的数量种类可以为:16个、8个、4个、2个。即在该内存行中,每个区域所包括的所有数据块的数量为16的情况下,该内存行可以被划分为:128/16=8个区域。在该内存行中,每个区域所包括的所有数据块的数量为8的情况下,该内存行可以被划分为:128/8=16个区域。在该内存行中,每个区域所包括的所有数据块的数量为4的情况下,该内存行可以被划分为:128/4=32个区域。在该内存行中,每个区域所包括的所有数据块的数量为2的情况下,该内存行可以被划分为:128/2=64个区域。

例如,确定的该内存行的当前访存的局部性参数为4,且接收到针对该内存行的访存请求的情况下,将该访存请求对应的访问区域内的剩余数据块,均预取至该片上缓冲器内。图5示出了本发明的一种内存行位图的示意图。结合图5,Locality为该内存行的当前访存的局部性参数,Access(A)表征截至该访存请求的接收时刻,该访问区域内,该当前数据块被访问,Prefetch(P)表征截至该访存请求的接收时刻,该访问区域内,该当前数据块被预取。未标注字母的表征截至该访存请求的接收时刻,该访问区域内的剩余数据块,则将未标注字母的数据块预取到内存控制器的片上缓冲器中,该种预取方式可以为相邻预取。

图6示出了本发明的一种预取的示意图。再例如,参照图6,确定的该内存行的当前访存的局部性参数为4,接收到针对该内存行的访存请求,该访存请求对应的访问区域的访问频率大于或等于第一预设访问频率的情况下,该访问区域较大概率为流式访问区域,此处的Hot用于表征流式访问区域,在该访问区域的地址[0x00-0x03]上增加预设预取距离16个数据块,以第一预取度4个数据块,执行预取操作,预取得到的第一预取数据为地址[0x10-0x13]的数据块。

图7示出了本发明的另一种预取的示意图。再例如,参照图7,确定的该内存行的当前访存的局部性参数为16,接收到针对该内存行的访存请求,该访存请求对应的访问区域的访问频率大于或等于第一预设访问频率的情况下,该访问区域较大概率为流式访问区域,此处的Hot用于表征流式访问区域,在该访问区域的地址[0x10-0x1f]上增加预设预取距离32个数据块,以第一预取度16个数据块,执行预取操作,预取得到的第一预取数据为地址[0x30-0x3f]的数据块。

图8示出了本发明的一种处理器、内存控制器、内存分布和交互的示意图。参照图8,Process Core为处理器,DDR SDRAM为内存,Memory Controller为内存控制器,Hit为命中,Prefetcher为预取器。内存控制器可以包括预取器,该预取器一方面记录统计当前访存情况,产生预取请求后和未在内存控制器的片上缓冲器(buffer)内命中的正常访存请求,一同向DDR调度模块和时序控制模块发送,同时在DRAM返回数据后将预取数据保存在buffer内,将正常命令透传向处理器返回。对于在buffer的预取数据中命中的访存请求,预取器将其拦截不再向下转发,而是直接从buffer中获取并返回数据。命中数据返回后,所占用的buffer空间被立即释放,因为Last Level Cache的存在,能够保证一段时间内不会再有相同地址的读访问。图8的内存控制器中加了一个仲裁(Arbiter),资源有限,该仲裁主要用于确定预取请求或预取命令,啥时候发送,或者说,仲裁主要是为了确定预取命令或预取请求、以及处理器的访存请求两者谁先发。

预取资源的分配过程可以为首先对到达预取器的请求按其地址所在的内存行执行预取操作资源的分配,图9示出了本发明预取资源的示意图。参照图9,预取资源可以包括:记录数据块状态的内存行位图(Row Bitmap)、预取生成器(Prefetch Generator)和数据状态控制(Block Control)三个部分。对于没有分配过预取资源的访存请求,当内存行内的第一个访存请求到达预取器时,如果当前存在空闲预取资源,为它分配一份,记录当前内存行的基地址,并跟踪记录这一内存行后续访存请求的访问局部性参数,相同的内存行不再分配新的预取资源。预取资源的内部计数器统计当前内存控制器所有到达的读访存命令的数量,如果连续多次访存均没有该内存页的访问,则释放该资源。

内存行位图(Row Bitmap):记录当前内存行的访问和预取情况,产生预取,对于识别出来的流进行追踪,并进行内存行的上下文切换。

预取产生器(Prefetch Generator):根据内存行位图的区域统计情况,发送预取命令或预取请求,接受预取命令响应或预取请求响应。

数据状态控制(Block Control):预取数据块的状态和控制逻辑,识别在预取buffer内命中的命令,并当预取数据准备好后回复命中数据。

内存行位图(Row Bitmap)中,通过两个比特位对上文中提到的一个内存行内所有数据块的访问状态进行记录。根据整个内存行的位图,按照上文中预取方法内提到的区域统计方法计算行内的统计数据,并提供给预取产生器产生预取命令。

同时,位图追踪计算当前内存行上流行进的位置,方法如下:以大小为N个数据块的区域为一个统计单元,统计最近四次内存行内的访问的地址落在哪一个区域的最多,来决定当前流的位置处于哪一个单元。流的位置用于判断是否需要进行内存行的上下文切换。

当一个流触发的预取的地址已经超过当前内存行的范围的时候,内存行将自动触发上下文切换。如当前流已经行进到该行的末尾,则将该位图的前半部分清空,并开始维护切换后的下一内存行上半部分;进一步地,当流继续行进到触发的预取超过当前位图上半部分的范围时,将位图的下半部分清空,并开始维护位图上半部分所对应内存行的下半部分。行切换保证了对每个识别的流不需要重新在位图中“预热”,可提高预取效率。

预取产生器(Prefetch Generator)中,接收行位图产生的区域信息,将有效的、需要发送预取的数据块产生预取命令。针对流式的预取命令的高度集中性,当触发的预取命令过多时,通过nack响应取消对应的预取命令。图10示出了本发明预取命令重发的示意图。参照图10,预取产生器同时会对处于当前流的位置与预取位置中间的数据块进行重发,以防止这些在某些时机被取消的命令成为关键命令造成性能下降。

数据状态控制(Block Control)中,每个预取资源都有独立的一段buffer空间,采用组相联的结构组织,根据行内地址位划分tag和index。访存命令或访存请求在buffer中,通过index进行索引,当与buffer内记录的tag位相同时可被视为命中,因此,index相同的数据块是共享buffer中的同一块空间的,这可以减小预取对资源的浪费。

对于预取资源buffer中每个数据块,需要对其状态进行维护,用于区分是否数据块处于有效状态,或是已经发出预取命令但仍未收到数据等情况。在后者的状态时,数据块仍然可以被命中,这保证了相同地址不会被发送两次访存请求。当命中的访存数据恢复后,数据块所占的空间则被立即释放。

图11示出了本发明组相联的结构组织的示意图。参照图11,对于组相联的结构组织,以一个8KB的内存行、64字节数据块为例,行内一共有7位地址作为数据块偏移(addr[12:6]为数据块偏移,[5:0]为数据块内部字节地址),分为1位tag和6位index,通过tag可以将内存行分为上下两个部分。在这种组合下,每个预取资源能够在片上buffer中分配到4KB的数据空间,相同的index的数据块共享buffer中的同一块空间,如果相同index的数据块为有效状态,则无法发送相同index的新预取命令。

Stream测试是内存测试中业界公认的内存带宽性能测试基准工具。针对本发明,图12示出了本发明Stream测试性结果对比图。使用双通道8GB UDIMM DDR4-3200内存颗粒,在一处理器运用本预取方法及数据预取装置,Stream测试性能有明显提高,带宽数据以及带宽与DDR理论带宽,如图12所示。与不开预取相比,整体Stream性能平均提升18%左右。

Spec 2006benchmark是新一代的行业标准化的CPU测试基准套件。重点测试系统的处理器,内存子系统和编译器。图13示出了本发明Spec测试性结果对比图。在单核单线程下运行spec程序,对于内存敏感的程序性能有明显提升,对于非内存敏感的程序性能没有明显的负面影响。

图14是本发明实施例提供的一种电子设备的结构图。参照图14,本发明还提供了一种电子设备,参见图14,包括:处理器501、存储器502以及存储在所述存储器上并可在所述处理器上运行的计算机程序5021,所述处理器执行所述程序时实现上述数据处理预取各实施例的步骤。

本发明还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述数据预取方法各实施例的步骤。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种数据预取方法和装置、一种电子设备以及一种储存介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 商品的管理方法、装置、电子设备及储存介质
  • 音频播放方法、装置、电子设备及储存介质
  • 一种数据获取方法、电子设备和计算机可读储存介质
  • 用以优化数据储存装置的数据储存方法及其数据储存装置
  • 用以检测数据储存装置的数据储存方法及其数据储存装置
  • 数据预取的方法、装置、电子设备及存储介质
  • 一种数据预取方法、装置、电子设备及存储介质
技术分类

06120116458550