CN103729142A - 内存数据的推送方法及装置 - Google Patents
内存数据的推送方法及装置 Download PDFInfo
- Publication number
- CN103729142A CN103729142A CN201210381338.7A CN201210381338A CN103729142A CN 103729142 A CN103729142 A CN 103729142A CN 201210381338 A CN201210381338 A CN 201210381338A CN 103729142 A CN103729142 A CN 103729142A
- Authority
- CN
- China
- Prior art keywords
- data
- propelling
- propelling movement
- treat
- access request
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例提供一种内存数据的推送方法和装置,该方法包括:按照推送周期定时生成推送命令,其中,一个推送周期内定时生成一个推送命令;根据该推送命令获取待推送数据的推送参数;根据该推送参数向内存发送至少一个访存请求,该至少一个访存请求用于向该内存请求该待推送数据;接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区;将该待推送数据从数据缓冲区推送到该推送目的存储器。本发明实施例的方法,能够根据待推送数据的推送参数和周期性生成的推送命令将待推送数据推送到推送目的寄存器,减少了因为大量预取指令的插入带来的额外指令开销。
Description
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及内存数据的推送方法及装置。
背景技术
由于CPU(Central Processing Unit,中央处理单元)速度远远高于内存的读取速度,需要把数据预取放到高速缓存Cache或额外缓冲区(如scratchpad memory)等处理器可以更快访问的地方。
一种编译器控制的软件预取器通过编译器插入预取指令,该预取指令可以在处理器使用数据前请求数据,从而提高处理器对数据的访问速度。但是大量预取指令的插入会增加需要运行指令条数,带来额外的指令开销。
发明内容
本发明实施例提供一种内存数据的推送方法及装置,能够根据待推送数据的推送参数和周期性生成的推送命令将待推送数据推送到推送目的寄存器,减少了因为大量预取指令的插入带来的额外指令开销。
第一方面,提出了一种内存数据的推送方法,该方法包括:按照推送周期定时生成推送命令,其中,一个推送周期内定时生成一个推送命令;根据该推送命令获取待推送数据的推送参数,其中,该推送参数包括该待推送数据的推送目的存储器,该推送参数由该待推送数据的数据结构类型确定,该待推送数据的数据类型至少包括非顺序结构数据类型;根据该推送参数向内存发送至少一个访存请求,该至少一个访存请求用于向该内存请求该待推送数据;接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区;将该待推送数据从数据缓冲区推送到该推送目的存储器。
在第一种可能的实现方式中,结合第一方面,该方法还包括:在根据推送周期定时生成推送命令之前,确定该推送周期。
在第二种可能的实现方式中,结合第一方面,具体实现为,该推送参数还包括该待推送数据的存储信息、该待推送数据的访问步长和该待推送数据的推送次数。
在第三种可能的实现方式中,结合第一方面的第二种可能的实现方式,根据推送命令和推送参数向内存发送访存请求具体实现为:根据该待推送数据的存储信息生成该待推送数据的访问地址;根据该推送命令、该待推送数据的推送次数和该待推送数据的访问地址生成至少一个该访存请求并对该至少一个访存请求进行队列排序;按该队列排序的顺序向该内存发送该访存请求。
在第四种可能的实现方式中,结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,推送参数由待推送数据的数据结构类型确定具体实现为:如果该待推送数据为数组,则该待推送数据的存储信息包括该数组的起始地址和该数组的元素大小;或如果该待推送数据为链表,则该待推送数据的存储信息包括该链表的起始地址、该链表的节点大小、该链表的指针域位置和该链表的结束标记;或如果该待推送数据为指针数组,则该待推送数据的存储信息包括该指针数组的起始地址、该指针数组的指针域大小和该指针数组的元素大小。
在第五种可能的实现方式中,结合第一方面的第一种可能的实现方式,确定推送周期具体实现为:确定预先约定的时间周期为该推送周期;或根据接收的定时推送命令确定该推送周期;或根据该待推送数据的使用速率确定该推送周期。
在第六种可能的实现方式中,结合第一方面,将该待推送数据从该数据缓冲区推送到推送目的存储器具体实现为:获取该待推送数据的推送目的存储器存放有效数据的状态信息;如果该状态信息指示该推送目的存储器未存放有效数据,则将该待推送数据从该数据缓冲区推送到该待推送数据的推送目的存储器;将该待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
第二方面,提出了一种内存数据推送装置,该装置包括:生成单元,用于按照推送周期定时生成推送命令,其中,一个该推送周期内定时生成一个该推送命令;获取单元,用于根据该推送命令获取待推送数据的推送参数,其中,该推送参数包括该待推送数据的推送目的存储器,该推送目的存储器为存放CPU预取数据的存储器,该推送参数由该待推送数据的数据结构类型确定,该待推送数据的数据类型至少包括非顺序结构数据类型;该生成单元还用于根据该推送参数生成至少一个访存请求,该至少一个访存请求用于向内存请求该待推送数据;发送单元,用于向该内存发送该至少一个访存请求;接收单元,用于接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区;该发送单元还用于将该待推送数据从该数据缓冲区推送到该推送目的存储器。
在第一种可能的实现方式中,结合第二方面,该装置还包括:确定单元,用于确定该推送周期。
在第二种可能的实现方式中,结合第二方面,具体实现为,该推送参数还包括该待推送数据的存储信息、该待推送数据的访问步长和该待推送数据的推送次数。
在第三种可能的实现方式中,结合第二方面的第二种可能的实现方式,该生成单元具体实现为:根据该待推送数据的存储信息生成该待推送数据的访问地址;根据该推送命令、该待推送数据的推送次数和该待推送数据的访问地址生成至少一个该访存请求。该发送单元可用于对该至少一个访存请求进行队列排序,并按该队列排序的顺序向该内存发送该访存请求。
在第四种可能的实现方式中,结合第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,推送参数由待推送数据的数据结构类型确定具体实现为:如果该待推送数据为数组,则该待推送数据的存储信息包括该数组的起始地址和该数组的元素大小;或如果该待推送数据为链表,则该待推送数据的存储信息包括该链表的起始地址、该链表的节点大小、该链表的指针域位置和该链表的结束标记;或如果该待推送数据为指针数组,则该待推送数据的存储信息包括该指针数组的起始地址、该指针数组的指针域大小和该指针数组的元素大小。
在第五种可能的实现方式中,结合第二方面的第一种可能的实现方式,该确定单元具体实现为:确定预先约定的时间周期为该推送周期;或根据接收的定时推送命令确定该推送周期;或根据该待推送数据的使用速率确定该推送周期。
在第六种可能的实现方式中,结合第二方面,该获取单元具体还用于获取该待推送数据的推送目的存储器存放有效数据的状态信息;该发送单元可用于如果该状态信息指示该推送目的存储器未存放有效数据,则将该待推送数据从该数据缓冲区推送到该待推送数据的推送目的存储器;该发送单元可用于向该CPU发送状态设置信息,该状态设置信息指示将该待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
第三方面,提出了一种内存数据推送装置,该装置包括:接收单元、处理器、发送单元和存储器。处理器可按照推送周期定时生成推送命令,存储器可存储使得处理器按照推送周期定时生成推送命令的指令。其中,一个该推送周期内定时生成一个推送命令。处理器还可根据该推送命令获取待推送数据的推送参数,存储器还可存储使得处理器根据该推送命令获取待推送数据的推送参数的指令。其中,该推送参数可包括该待推送数据的推送目的存储器,该推送目的存储器为存放CPU预取数据的存储器。该推送参数由待推送数据的数据结构类型确定,该待推送数据的数据类型至少包括非顺序结构数据类型。处理器还可根据该推送参数生成至少一个访存请求,存储器还可存储使得处理器根据该推送参数生成至少一个访存请求的指令。其中,该至少一个访存请求用于向内存请求该待推送数据。发送单元,可向该内存发送该至少一个访存请求。接收单元,可接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区。发送单元还可将该待推送数据从该数据缓冲区推送到该推送目的存储器。
在第一种可能的实现方式中,结合第三方面,处理器可确定该推送周期,存储器可存储使得处理器确定该推送周期的指令。
在第二种可能的实现方式中,结合第三方面,具体实现为,该推送参数还包括该待推送数据的存储信息、该待推送数据的访问步长和该待推送数据的推送次数。
在第三种可能的实现方式中,结合第三方面的第二种可能的实现方式,具体实现为:处理器可根据该待推送数据的存储信息生成该待推送数据的访问地址;处理器可根据该推送命令、该待推送数据的推送次数和该待推送数据的访问地址生成至少一个该访存请求。发送单元可对该至少一个访存请求进行队列排序,并按该队列排序的顺序向该内存发送该访存请求。
在第四种可能的实现方式中,结合第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,推送参数由待推送数据的数据结构类型确定具体实现为:如果该待推送数据为数组,则该待推送数据的存储信息包括该数组的起始地址和该数组的元素大小;或如果该待推送数据为链表,则该待推送数据的存储信息包括该链表的起始地址、该链表的节点大小、该链表的指针域位置和该链表的结束标记;或如果该待推送数据为指针数组,则该待推送数据的存储信息包括该指针数组的起始地址、该指针数组的指针域大小和该指针数组的元素大小。
在第五种可能的实现方式中,结合第三方面的第一种可能的实现方式,具体实现为:处理器可确定预先约定的时间周期为该推送周期;或根据接收的定时推送命令确定该推送周期;或根据该待推送数据的使用速率确定该推送周期。
在第六种可能的实现方式中,结合第三方面,处理器可获取该待推送数据的推送目的存储器存放有效数据的状态信息;发送单元可用于如果该状态信息指示该推送目的存储器未存放有效数据,则将该待推送数据从该数据缓冲区推送到该待推送数据的推送目的存储器;该发送单元还可用于向该CPU发送状态设置信息,该状态设置信息指示将该待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
基于以上技术方案,本发明实施例能够根据待推送数据的推送参数和周期性生成的推送命令,将待推送数据推送到推送目的寄存器,避免了因为推送数据而产生的大量预取指令,因此本发明实施例能够减少因为大量预取指令的插入带来的额外指令开销。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例内存数据的推送方法的流程图。
图2是本发明实施例内存链表数据的推送方法流程图。
图3是本发明实施例内存指针数组数据的推送方法流程图。
图4是本发明实施例推送控制器的示意框图。
图5是本发明实施例推送控制器的另一示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例一种内存数据的推送方法的流程图。图1的方法由内存推送控制器执行。
101,按照推送周期定时生成推送命令。其中,一个推送周期内定时生成一个推送命令。
102,根据该推送命令获取待推送数据的推送参数。其中,该推送参数包括待推送数据的推送目的存储器,该推送目的存储器为存放CPU预取数据的存储器。该推送参数由该待推送数据的数据结构类型确定。该待推送数据的数据类型至少包括非顺序结构数据类型。
103,根据该推送参数向内存发送至少一个访存请求。其中,该至少一个访存请求用于向该内存请求该待推送数据。
104,接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区。
105,将该待推送数据从该数据缓冲区推送到该推送目的存储器。
本发明实施例的方法能够根据待推送数据的推送参数和周期性生成的推送命令将待推送数据推送到推送目的寄存器,减少了因为大量预取指令的插入带来的额外指令开销。
可选地,该推送方法支持的待推送数据的数据类型可以是非顺序结构数据类型,如链表、指针数组等。当然,本发明实施例也不排除对顺序结构数据类型的支持,如数组等。
可选地,本发明实施例中,待推送数据的推送参数,还可包括待推送数据的存储信息、待推送数据的访问步长和待推送数据的推送次数。根据待推送数据的存储信息,本发明实施例的推送控制器可以通过地址生成器生成访存请求的请求地址。根据待推送数据的推送次数,推送控制器可确定推送计数器的计数值,以确定当前推送命令中需要生成的访存请求的个数。
进一步的,如果待推送数据为数组,则待推送数据的存储信息包括该数组的起始地址和元素大小和访问步长。本发明实施例中,数组的起始地址,可作为第一个访存请求的请求地址;再根据元素大小,可确定数组中其他元素的地址,例如,数组的第N个元素,其地址为起始地址+元素大小*(N-1)。
或者,如果待推送数据为链表,则待推送数据的存储信息包括该链表的起始地址、节点大小、指针域位置和结束标记。本发明实施例中,链表的起始地址,可作为第一个访存请求的请求地址;链表起始地址指向的节点的指针域指向的地址,可作为第二个访存请求的请求地址,以此类推,直至达到推送次数或者链表结束。
或者,如果待推送数据为指针数组,则待推送数据的存储信息包括该指针数组的起始地址、指针域大小和元素大小。本发明实施例中,指针数组的起始地址,可作为第一个访存请求的请求地址;指针数组起始地址指向的元素的指针域指向的地址,可作为第二个访存请求的请求地址,以此类推,直至达到推送次数或者指针数组结束。
进一步地,根据该推送命令和该推送参数向内存发送访存请求,具体可实现为:根据待推送数据的存储信息生成待推送数据的访问地址;根据该推送命令、待推送数据的推送次数和待推送数据的访问地址生成至少一个该访存请求并对该至少一个访存请求进行队列排序,其中,该带推送数据的访问地址,即为访存请求的请求地址;按该队列排序的顺序向该内存发送该访存请求。通过根据推送参数向内存发送访存请求,可以实现对非顺序结构的数据的推送。当然,本发明实施例的方法也支持对顺序结构数据的推送。
可选地,可以确定预先约定的时间周期为推送周期。例如,启动时,可以默认设置一个时间周期t作为定时推送的周期。
可选地,可以根据接收的定时推送命令确定推送周期。例如,接收操作系统或应用程序发送的定时推送命令,并根据该定时推送命令设置推送周期。根据接收的定时推送命令确定推送周期,可使得推送控制器根据外部调用灵活调整推送周期。
可选地,可以根据待推送数据的使用速率确定推送周期。待推送数据的使用速率,是指推送目的存储器消费数据的速率。显而易见,作为CPU预取数据的存储器,本发明实施例的推送目的存储器应该是存取速度较快的存储器,如寄存器、高速缓存Cache或片上存储器scratchpad memory等。当然,也可以采用其他存取速度类似或者更高速的存储器,本发明在此并不做限制。根据待推送数据的使用速率确定推送周期,可充分利用推送控制器的效率,既不会因为推送控制器推送周期过短导致推送控制器的资源浪费,也不会因为推送控制器周期过长导致CPU预取数据效率变低。
可选地,作为一个实施例,可以通过以下方法将待推送数据从该数据缓冲区推送到推送目的存储器:获取待推送数据的推送目的存储器存放有效数据的状态信息;如果该状态信息指示该推送目的存储器未存放有效数据,则将待推送数据从数据缓冲区推送到待推送数据的推送目的存储器;将待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。例如,在本实施例中,推送目的存储器可以是寄存器,可包括数据data域和有效标识valid域。推送控制器检测该寄存器的valid域,如果检测到valid域为0,且推送控制器处于推送过程中,则将新数据推送到该寄存器的data域,并将valid域置为1。同时,CPU可新增一个指令MOVD,该指令的行为是:首先检查寄存器的valid域,valid域为1表示该寄存器存在有效数据,为0表示该寄存器不存在有效数据。如果valid域为1,则MOVD将数据移至寄存器的data域,并将valid域置为0;如果valid域为0,则该指令停顿,直到valid域为1再执行上述操作。通过对推送目的存储器标识状态的监控,可以减少存取冲突发生的可能,提高数据的推送效率。
图2是本发明一个实施例内存链表数据的推送方法流程图。
201,内存控制器接收链表数据的推送参数,并将该推送参数存储于内存控制器的配置空间。其中,链表数据的推送参数包括链表的起始地址、链表的节点大小、Next指针域位置(用于指示链表的下一个节点数据的地址)、结束标记、推送次数和推送目的存储器。
202,内存控制器的推送控制器接收定时推送命令。
203,推送控制器根据周期性生成的推送命令,获取待推送数据的推送参数并生成第一访存请求。本发明实施例中,待推送数据为链表数据,地址生成器将推送参数中链表的起始地址作为访存请求的请求地址。
204,推送控制器接收返回的链表的节点数据并将节点数据放入数据缓冲区。
205,推送控制器将该节点数据推送到推送目的存储器。
206,推送控制器判断推送计数器是否达到推送次数或者链表是否结束。如果推送计数器达到推送次数或链表结束,则停止生成访存请求;否则,转207。
207,推送控制器生成第二访存请求。其中,地址生成器取出数据缓冲区中刚存入的节点数据的Next指针域(即链表下一节点数据的地址),作为第二访存请求的请求地址。步骤207结束后,跳转至步骤204。
本发明实施例实现了对非顺序结构数据类型中的链表数据的推送。
图3是本发明一个实施例内存指针数组数据的推送方法流程图。
301,内存控制器接收指针数组数据的推送参数,并将该推送参数存储于内存控制器的配置空间。其中,指针数组数据的推送参数包括指针数组的起始地址、指针数组的指针域大小、指针数组的元素大小、访问步长、推送次数和推送目的存储器。
302,内存控制器的推送控制器接收定时推送命令。
303,推送控制器根据周期性生成的推送命令,获取待推送数据的推送参数并生成第一访存请求。本发明实施例中,待推送数据为指针数组数据,地址生成器将推送参数中指针数组的起始地址作为访存请求的请求地址。
304,推送控制器接收返回的指针数组的元素并将该元素放入数据缓冲区。
305,推送控制器将该元素推送到推送目的存储器。
306,推送控制器判断推送计数器是否达到推送次数。如果推送计数器达到推送次数,则停止生成访存请求;否则,转307。
307,推送控制器生成第二访存请求。其中,地址生成器取出数据缓冲区中刚存入的元素的指针域(即指针数组下一元素的地址),作为第二访存请求的请求地址。步骤307结束后,跳转至步骤304。
本发明实施例实现了对非顺序结构数据类型中的指针数组数据的推送。
显而易见,本发明实施例的方法,还可实现对其他非顺序结构数据类型的数据推送,本发明在此不再赘述。
本发明实施例的推送控制器也可实现推顺序结构数据类型的数据的推送,该实现过程属于现有技术的内容,本发明在此不再赘述。
图4是本发明实施例内存数据推送装置推送控制器400的示意框图。推送控制器400可包括生成单元401、获取单元402、发送单元403和接收单元404。
生成单元401,可按照推送周期定时生成推送命令。其中,一个该推送周期内定时生成一个推送命令。
获取单元402,可根据该推送命令获取待推送数据的推送参数。其中,该推送参数可包括该待推送数据的推送目的存储器,该推送目的存储器为存放CPU预取数据的存储器。该推送参数由待推送数据的数据结构类型确定,该待推送数据的数据类型至少包括非顺序结构数据类型。
生成单元402还可根据该推送参数生成至少一个访存请求。其中,该至少一个访存请求用于向内存请求该待推送数据。
发送单元403,可向该内存发送该至少一个访存请求。
接收单元404,可接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区。
发送单元403还可将该待推送数据从该数据缓冲区推送到该推送目的存储器。
本发明实施例中,推送控制器400能够根据待推送数据的推送参数和周期性生成的推送命令将待推送数据推送到推送目的寄存器,减少了因为大量预取指令的插入带来的额外指令开销。
可选地,推送控制器400支持的待推送数据的数据类型可以是非顺序结构数据类型,如链表、指针数组等,也可以是顺序结构数据类型,如数组等。
可选地,本发明实施例中,待推送数据的推送参数,还可包括待推送数据的存储信息、待推送数据的访问步长和待推送数据的推送次数。
进一步的,如果待推送数据为数组,则待推送数据的存储信息包括该数组的起始地址和元素大小和访问步长。或者如果待推送数据为链表,则待推送数据的存储信息包括该链表的起始地址、节点大小、指针域位置和结束标记。或者如果待推送数据为指针数组,则待推送数据的存储信息包括该链表的起始地址、指针域大小和元素大小。
进一步地,生成单元401可根据该待推送数据的存储信息生成该待推送数据的访问地址,并根据该推送命令、该待推送数据的推送次数和该待推送数据的访问地址生成至少一个该访存请求。发送单元403可对该至少一个访存请求进行队列排序,并按该队列排序的顺序向该内存发送该访存请求。
可选地,推送控制器400还可包括确定单元405。确定单元405可用于确定推送周期。
可选地,确定单元405可以确定预先约定的时间周期为推送周期。例如,启动时,可以默认设置一个时间周期t作为定时推送的周期。
可选地,确定单元405可以根据接收的定时推送命令确定推送周期。例如,接收操作系统或应用程序发送的定时推送命令,并根据该定时推送命令设置推送周期。
可选地,确定单元405可以根据待推送数据的使用速率确定推送周期。待推送数据的使用速率,是指推送目的存储器消费数据的速率。显而易见,作为CPU预取数据的存储器,本发明实施例的推送目的存储器应该是存取速度较快的存储器,如寄存器、高速缓存Cache或片上存储器scratchpadmemory等。当然,也可以采用其他存取速度类似或者更高速的存储器,本发明在此并不做限制。
可选地,作为一个实施例,获取单元402可获取该待推送数据的推送目的存储器存放有效数据的状态信息;发送单元403可在该状态信息指示该推送目的存储器未存放有效数据的情况下,将该待推送数据从该数据缓冲区推送到该待推送数据的推送目的存储器;发送单元403还可向该CPU发送状态设置信息,该状态设置信息指示将该待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
本发明实施例中,推送控制器400可实现图1至图3推送控制器执行的方法,本发明在此不再赘述。
图5是本发明实施例内存数据推送装置推送控制器500的示意框图。推送控制器500可包括接收单元501、处理器502、发送单元503和存储器504。
处理器502可按照推送周期定时生成推送命令,存储器504可存储使得处理器502按照推送周期定时生成推送命令的指令。其中,一个该推送周期内定时生成一个推送命令。
处理器502还可根据该推送命令获取待推送数据的推送参数,存储器504还可存储使得处理器502根据该推送命令获取待推送数据的推送参数的指令。其中,该推送参数可包括该待推送数据的推送目的存储器,该推送目的存储器为存放CPU预取数据的存储器。该推送参数由待推送数据的数据结构类型确定,该待推送数据的数据类型至少包括非顺序结构数据类型。
处理器502还可根据该推送参数生成至少一个访存请求,存储器504还可存储使得处理器502根据该推送参数生成至少一个访存请求的指令。其中,该至少一个访存请求用于向内存请求该待推送数据。
发送单元503,可向该内存发送该至少一个访存请求。
接收单元501,可接收该内存根据该访存请求发送的该待推送数据并将该内存根据该访存请求发送的该待推送数据放入数据缓冲区。
发送单元503还可将该待推送数据从该数据缓冲区推送到该推送目的存储器。
本发明实施例中,推送控制器500能够根据待推送数据的推送参数和周期性生成的推送命令将待推送数据推送到推送目的寄存器,减少了因为大量预取指令的插入带来的额外指令开销。
处理器502控制推送控制器500的操作,处理器502还可以称为CPU(Central Processing Unit,中央处理单元)。存储器504可以包括只读存储器和随机存取存储器,并向处理器502提供指令和数据。存储器504的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,推送控制器500的各个组件通过总线系统505耦合在一起,其中总线系统505除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统505。
上述本发明实施例揭示的方法可以应用于处理器502中,或者由处理器502实现。处理器502可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器502中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器502可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器504,处理器502读取存储器504中的信息,结合其硬件完成上述方法的步骤。
可选地,推送控制器500支持的待推送数据的数据类型可以是非顺序结构数据类型,如链表、指针数组等,也可以是顺序结构数据类型,如数组等。
可选地,本发明实施例中,待推送数据的推送参数,还可包括待推送数据的存储信息、待推送数据的访问步长和待推送数据的推送次数。
进一步的,如果待推送数据为数组,则待推送数据的存储信息包括该数组的起始地址和元素大小和访问步长。或者如果待推送数据为链表,则待推送数据的存储信息包括该链表的起始地址、节点大小、指针域位置和结束标记。或者如果待推送数据为指针数组,则待推送数据的存储信息包括该链表的起始地址、指针域大小和元素大小。
进一步地,处理器502可根据该待推送数据的存储信息生成该待推送数据的访问地址,并根据该推送命令、该待推送数据的推送次数和该待推送数据的访问地址生成至少一个该访存请求。发送单元503可对该至少一个访存请求进行队列排序,并按该队列排序的顺序向该内存发送该访存请求。
可选地,处理器502还可确定推送周期,存储器504可存储使得处理器502确定推送周期的指令。
可选地,处理器502可以确定预先约定的时间周期为推送周期。例如,启动时,可以默认设置一个时间周期t作为定时推送的周期。
可选地,处理器502可以根据接收的定时推送命令确定推送周期。例如,接收操作系统或应用程序发送的定时推送命令,并根据该定时推送命令设置推送周期。
可选地,处理器502可以根据待推送数据的使用速率确定推送周期。待推送数据的使用速率,是指推送目的存储器消费数据的速率。显而易见,作为CPU预取数据的存储器,本发明实施例的推送目的存储器应该是存取速度较快的存储器,如寄存器、高速缓存Cache或片上存储器scratchpad memory等。当然,也可以采用其他存取速度类似或者更高速的存储器,本发明在此并不做限制。
可选地,作为一个实施例,处理器502可获取该待推送数据的推送目的存储器存放有效数据的状态信息;发送单元503可在该状态信息指示该推送目的存储器未存放有效数据的情况下,将该待推送数据从该数据缓冲区推送到该待推送数据的推送目的存储器;发送单元503还可向该CPU发送状态设置信息,该状态设置信息指示将该待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
本发明实施例中,推送控制器500可实现图1至图3推送控制器执行的方法,本发明在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种内存数据的推送方法,其特征在于,包括:
按照推送周期定时生成推送命令,其中,一个所述推送周期内定时生成一个所述推送命令;
根据所述推送命令获取待推送数据的推送参数,其中,所述推送参数包括所述待推送数据的推送目的存储器,所述推送参数由所述待推送数据的数据结构类型确定,所述待推送数据的数据类型至少包括非顺序结构数据类型;
根据所述推送参数向内存发送至少一个访存请求,所述至少一个访存请求用于向所述内存请求所述待推送数据;
接收所述内存根据所述访存请求发送的所述待推送数据并将所述内存根据所述访存请求发送的所述待推送数据放入数据缓冲区;
将所述待推送数据从所述数据缓冲区推送到所述推送目的存储器。
2.如权利要求1所述的方法,其特征在于,还包括:在所述根据推送周期定时生成推送命令之前,确定所述推送周期。
3.如权利要求1所述的方法,其特征在于,所述推送参数还包括所述待推送数据的存储信息、所述待推送数据的访问步长和所述待推送数据的推送次数。
4.如权利要求3所述的方法,其特征在于,所述根据所述推送命令和所述推送参数向内存发送访存请求包括:
根据所述待推送数据的存储信息生成所述待推送数据的访问地址;
根据所述推送命令、所述待推送数据的推送次数和所述待推送数据的访问地址生成至少一个所述访存请求并对所述至少一个访存请求进行队列排序;
按所述队列排序的顺序向所述内存发送所述访存请求。
5.如权利要求3或4所述的方法,其特征在于,所述推送参数由所述待推送数据的数据结构类型确定包括:
如果所述待推送数据为数组,则所述待推送数据的存储信息包括所述数组的起始地址和所述数组的元素大小;或
如果所述待推送数据为链表,则所述待推送数据的存储信息包括所述链表的起始地址、所述链表的节点大小、所述链表的指针域位置和所述链表的结束标记;或
如果所述待推送数据为指针数组,则所述待推送数据的存储信息包括所述指针数组的起始地址、所述指针数组的指针域大小和所述指针数组的元素大小。
6.如权利要求2所述的方法,其特征在于,所述确定所述推送周期包括:
确定预先约定的时间周期为所述推送周期;或
根据接收的定时推送命令确定所述推送周期;或
根据所述待推送数据的使用速率确定所述推送周期。
7.如权利要求1所述的方法,其特征在于,所述将所述待推送数据从所述数据缓冲区推送到推送目的存储器包括:
获取所述待推送数据的推送目的存储器存放有效数据的状态信息;
如果所述状态信息指示所述推送目的存储器未存放有效数据,则将所述待推送数据从所述数据缓冲区推送到所述待推送数据的推送目的存储器;
将所述待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
8.一种内存数据推送装置,其特征在于,包括:
生成单元,用于按照推送周期定时生成推送命令,其中,一个所述推送周期内定时生成一个所述推送命令;
获取单元,用于根据所述推送命令获取待推送数据的推送参数,其中,所述推送参数包括所述待推送数据的推送目的存储器,所述推送目的存储器为存放CPU预取数据的存储器,所述推送参数由所述待推送数据的数据结构类型确定,所述待推送数据的数据类型至少包括非顺序结构数据类型;
所述生成单元还用于根据所述推送参数生成至少一个访存请求,所述至少一个访存请求用于向内存请求所述待推送数据;
发送单元,用于向所述内存发送所述至少一个访存请求;
接收单元,用于接收所述内存根据所述访存请求发送的所述待推送数据并将所述内存根据所述访存请求发送的所述待推送数据放入数据缓冲区;
所述发送单元还用于将所述待推送数据从所述数据缓冲区推送到所述推送目的存储器。
9.如权利要求8所述的装置,其特征在于,还包括:
确定单元,用于确定所述推送周期。
10.如权利要求8所述的装置,其特征在于,所述推送参数包括所述待推送数据的存储信息、所述待推送数据的访问步长和所述待推送数据的推送次数。
11.如权利要求10所述的装置,其特征在于,
所述生成单元具体用于根据所述待推送数据的存储信息生成所述待推送数据的访问地址,并根据所述推送命令、所述待推送数据的推送次数和所述待推送数据的访问地址生成至少一个所述访存请求;
所述发送单元具体用于对所述至少一个访存请求进行队列排序,并按所述队列排序的顺序向所述内存发送所述访存请求。
12.如权利要求10或11所述的装置,其特征在于,所述推送参数由所述待推送数据的数据结构类型确定包括:
如果所述待推送数据为数组,则所述待推送数据的存储信息包括所述数组的起始地址和所述数组的元素大小;或
如果所述待推送数据为链表,则所述待推送数据的存储信息包括所述链表的起始地址、所述链表的节点大小、所述链表的指针域位置和所述链表的结束标记;或
如果所述待推送数据为指针数组,则所述待推送数据的存储信息包括所述指针数组的起始地址、所述指针数组的指针域大小和所述指针数组的元素大小。
13.如权利要求9所述的装置,其特征在于,
所述确定单元用于确定预先约定的时间周期为所述推送周期;或
所述确定单元用于根据接收的定时推送命令确定所述推送周期;或
所述确定单元用于根据所述待推送数据的使用速率确定所述推送周期。
14.如权利要求8所述的装置,其特征在于,
所述获取单元具体还用于获取所述待推送数据的推送目的存储器存放有效数据的状态信息;
所述发送单元具体用于如果所述状态信息指示所述推送目的存储器未存放有效数据,则将所述待推送数据从所述数据缓冲区推送到所述待推送数据的推送目的存储器;
所述发送单元具体用于向所述CPU发送状态设置信息,所述状态设置信息指示将所述待推送数据的推送目的存储器的状态信息设置为存放有效数据状态。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210381338.7A CN103729142B (zh) | 2012-10-10 | 2012-10-10 | 内存数据的推送方法及装置 |
EP13845440.0A EP2908248B1 (en) | 2012-10-10 | 2013-06-05 | Memory data pushing method and device |
PCT/CN2013/076792 WO2014056329A1 (zh) | 2012-10-10 | 2013-06-05 | 内存数据的推送方法及装置 |
US14/680,262 US9632938B2 (en) | 2012-10-10 | 2015-04-07 | Method and apparatus for pushing memory data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210381338.7A CN103729142B (zh) | 2012-10-10 | 2012-10-10 | 内存数据的推送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103729142A true CN103729142A (zh) | 2014-04-16 |
CN103729142B CN103729142B (zh) | 2016-12-21 |
Family
ID=50453233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210381338.7A Active CN103729142B (zh) | 2012-10-10 | 2012-10-10 | 内存数据的推送方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9632938B2 (zh) |
EP (1) | EP2908248B1 (zh) |
CN (1) | CN103729142B (zh) |
WO (1) | WO2014056329A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104333803A (zh) * | 2014-10-29 | 2015-02-04 | 华为技术有限公司 | 防止视频编辑时丢帧的方法、设备及系统 |
CN108874691A (zh) * | 2017-05-16 | 2018-11-23 | 龙芯中科技术有限公司 | 数据预取方法和内存控制器 |
CN108874690A (zh) * | 2017-05-16 | 2018-11-23 | 龙芯中科技术有限公司 | 数据预取的实现方法和处理器 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108512876B (zh) * | 2017-02-27 | 2020-11-10 | 腾讯科技(深圳)有限公司 | 数据的推送方法及装置 |
CN108632101B (zh) * | 2018-05-31 | 2020-02-14 | 北京百度网讯科技有限公司 | 用于更新配置对象的方法和装置、边缘计算设备、介质 |
GB2584268B (en) * | 2018-12-31 | 2021-06-30 | Graphcore Ltd | Load-Store Instruction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514369A (zh) * | 2003-04-21 | 2004-07-21 | 智慧第一公司 | 可选择性撤回预取的微处理器装置及方法 |
CN1731374A (zh) * | 2005-08-25 | 2006-02-08 | 北京中星微电子有限公司 | 一种高速缓存预取模块及其方法 |
US20080229072A1 (en) * | 2007-03-14 | 2008-09-18 | Fujitsu Limited | Prefetch processing apparatus, prefetch processing method, storage medium storing prefetch processing program |
CN102184151A (zh) * | 2011-04-29 | 2011-09-14 | 杭州华三通信技术有限公司 | Pci-e转pci桥装置及其主动预取数据的方法 |
CN102207853A (zh) * | 2010-03-29 | 2011-10-05 | 索尼公司 | 指令获取设备和处理器 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5652858A (en) * | 1994-06-06 | 1997-07-29 | Hitachi, Ltd. | Method for prefetching pointer-type data structure and information processing apparatus therefor |
US6151662A (en) * | 1997-12-02 | 2000-11-21 | Advanced Micro Devices, Inc. | Data transaction typing for improved caching and prefetching characteristics |
US6247107B1 (en) * | 1998-04-06 | 2001-06-12 | Advanced Micro Devices, Inc. | Chipset configured to perform data-directed prefetching |
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
US6687807B1 (en) * | 2000-04-18 | 2004-02-03 | Sun Microystems, Inc. | Method for apparatus for prefetching linked data structures |
US6728840B1 (en) * | 2000-10-20 | 2004-04-27 | Emc Corporation | Methods and apparatus for providing host controlled caching of data in a storage system |
US6772179B2 (en) * | 2001-12-28 | 2004-08-03 | Lucent Technologies Inc. | System and method for improving index performance through prefetching |
US6760818B2 (en) * | 2002-05-01 | 2004-07-06 | Koninklijke Philips Electronics N.V. | Memory region based data pre-fetching |
US6990558B2 (en) | 2002-06-18 | 2006-01-24 | Ip-First, Llc | Microprocessor, apparatus and method for selective prefetch retire |
US7277991B2 (en) * | 2004-04-12 | 2007-10-02 | International Business Machines Corporation | Method, system, and program for prefetching data into cache |
US20050246500A1 (en) * | 2004-04-28 | 2005-11-03 | Ravishankar Iyer | Method, apparatus and system for an application-aware cache push agent |
US20060095679A1 (en) * | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
US7865570B2 (en) * | 2005-08-30 | 2011-01-04 | Illinois Institute Of Technology | Memory server |
US9798528B2 (en) * | 2006-09-13 | 2017-10-24 | International Business Machines Corporation | Software solution for cooperative memory-side and processor-side data prefetching |
US9323680B1 (en) * | 2007-09-28 | 2016-04-26 | Veritas Us Ip Holdings Llc | Method and apparatus for prefetching data |
US8412856B2 (en) * | 2009-10-26 | 2013-04-02 | Sony Computer Entertainment America Llc. | File input/output scheduler using immediate data chunking |
US8380680B2 (en) * | 2010-06-23 | 2013-02-19 | International Business Machines Corporation | Piecemeal list prefetch |
US8954490B2 (en) * | 2010-06-24 | 2015-02-10 | International Business Machines Corporation | Speculative and coordinated data access in a hybrid memory server |
-
2012
- 2012-10-10 CN CN201210381338.7A patent/CN103729142B/zh active Active
-
2013
- 2013-06-05 EP EP13845440.0A patent/EP2908248B1/en active Active
- 2013-06-05 WO PCT/CN2013/076792 patent/WO2014056329A1/zh active Application Filing
-
2015
- 2015-04-07 US US14/680,262 patent/US9632938B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514369A (zh) * | 2003-04-21 | 2004-07-21 | 智慧第一公司 | 可选择性撤回预取的微处理器装置及方法 |
CN1731374A (zh) * | 2005-08-25 | 2006-02-08 | 北京中星微电子有限公司 | 一种高速缓存预取模块及其方法 |
US20080229072A1 (en) * | 2007-03-14 | 2008-09-18 | Fujitsu Limited | Prefetch processing apparatus, prefetch processing method, storage medium storing prefetch processing program |
CN102207853A (zh) * | 2010-03-29 | 2011-10-05 | 索尼公司 | 指令获取设备和处理器 |
CN102184151A (zh) * | 2011-04-29 | 2011-09-14 | 杭州华三通信技术有限公司 | Pci-e转pci桥装置及其主动预取数据的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104333803A (zh) * | 2014-10-29 | 2015-02-04 | 华为技术有限公司 | 防止视频编辑时丢帧的方法、设备及系统 |
CN104333803B (zh) * | 2014-10-29 | 2018-08-21 | 华为技术有限公司 | 防止视频编辑时丢帧的方法、设备及系统 |
CN108874691A (zh) * | 2017-05-16 | 2018-11-23 | 龙芯中科技术有限公司 | 数据预取方法和内存控制器 |
CN108874690A (zh) * | 2017-05-16 | 2018-11-23 | 龙芯中科技术有限公司 | 数据预取的实现方法和处理器 |
CN108874691B (zh) * | 2017-05-16 | 2021-04-30 | 龙芯中科技术股份有限公司 | 数据预取方法和内存控制器 |
Also Published As
Publication number | Publication date |
---|---|
EP2908248A1 (en) | 2015-08-19 |
CN103729142B (zh) | 2016-12-21 |
EP2908248B1 (en) | 2017-09-20 |
US9632938B2 (en) | 2017-04-25 |
US20150212944A1 (en) | 2015-07-30 |
WO2014056329A1 (zh) | 2014-04-17 |
EP2908248A4 (en) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103729142A (zh) | 内存数据的推送方法及装置 | |
US10705972B2 (en) | Dynamic adaptation of memory page management policy | |
EP2875427B1 (en) | Allocation of alias registers in a pipelined schedule | |
US9280474B2 (en) | Adaptive data prefetching | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
US20130326113A1 (en) | Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory | |
US9569381B2 (en) | Scheduler for memory | |
CN103914363A (zh) | 一种内存监控方法及相关装置 | |
CN104572026B (zh) | 用于进行预取的数据处理方法和装置 | |
Ouyang et al. | Active SSD design for energy-efficiency improvement of web-scale data analysis | |
US8490071B2 (en) | Shared prefetching to reduce execution skew in multi-threaded systems | |
CN105095138A (zh) | 一种扩展同步内存总线功能的方法和装置 | |
CN113448511B (zh) | 通过链接阵列依序预提取 | |
CN105493024A (zh) | 一种数据阈值预测方法与相关装置 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
US20190042443A1 (en) | Data acquisition with zero copy persistent buffering | |
Jeong et al. | A technique to improve garbage collection performance for NAND flash-based storage systems | |
CN106462506A (zh) | 呼入数据的受控缓存注入 | |
CN110399596A (zh) | 一种文件格式转换方法、系统及相关组件 | |
US9262186B2 (en) | Code rearranger and method for rearranging code for a virtual machine | |
Boubriak et al. | SlimFS: a thin and unobtrusive file system for embedded systems and consumer products | |
CN109032965B (zh) | 一种数据读取方法、主机及存储设备 | |
CN103559154B (zh) | 一种可重构系统中隐藏存储访问延时的方法 | |
Yoo et al. | Low power mobile storage: SSD case study | |
Kim et al. | An effective pre-store/pre-load method exploiting intra-request idle time of NAND flash-based storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |