CN105677580B - 访问缓存的方法和装置 - Google Patents
访问缓存的方法和装置 Download PDFInfo
- Publication number
- CN105677580B CN105677580B CN201511024173.8A CN201511024173A CN105677580B CN 105677580 B CN105677580 B CN 105677580B CN 201511024173 A CN201511024173 A CN 201511024173A CN 105677580 B CN105677580 B CN 105677580B
- Authority
- CN
- China
- Prior art keywords
- data
- address space
- caching
- target
- exclusive
- 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.)
- Active
Links
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
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
一种访问缓存的方法,包括:接收应用程序的数据访问请求,应用程序运行于CPU的目标核中,CPU为包括多核的CPU,目标核为多核之一,数据访问请求包含待访问的目标数据的内存地址;根据数据访问请求,查询多核共享的缓存中是否存在目标数据,其中,缓存包括目标核对应的独占地址空间,独占地址空间用于存储目标核从内存中读取的数据,且多核中的除目标核之外的其它核读取的数据不能替换目标核存入独占地址空间中的数据;当缓存中存储有目标数据时,从缓存中读取目标数据;当缓存中未存储目标数据时,根据内存地址,从内存中读取目标数据,并将目标数据存入独占地址空间之中。以减少多核CPU访问缓存时的使用竞争。
Description
技术领域
本发明涉及计算机领域,尤其涉及计算机领域中访问缓存的方法和装置。
背景技术
在现代计算机***中,中央处理单元(CPU,Central Processing Unit)通过总线与内存连接,CPU访问内存数据时受到总线速率的限制,存在性能瓶颈。所以CPU通过缓存(cache)提高获取数据的效率。缓存用于保存CPU频繁使用的数据。当CPU要访问内存中的数据时,首先查询缓存中是否有数据以及数据是否过期,如果数据未过期则从缓存中读出数据。否则CPU从内存中读出数据并刷新到缓存中;由于程序运行时对内存的访问会程序局部性特征,即一段时间内对相同数据可能有多次读写,所以使用缓存后可以大大加快处理器访问数据的速度。
对于多核计算机***,目前已存在一级缓存、二级缓存以及三级缓存。其中三级缓存由一个物理CPU上的所有核共享,所以当多个核同时访问三级缓存时可能存在使用竞争的情况。例如,在64核***中,每个核访问存储在三级缓存中的数据时都要和其他63个核进行竞争。当应用程序在某个核上运行时,其访问的数据会被CPU放入三级缓存中。如果此数据的访问频率平均在64个核上并不高,有可能被其它核访问的数据替换掉。程序再次访问此数据需要CPU重新从内存中读取,造成数据反复被读取的情况。随着CPU核数的不断增加,各个核之间的缓存冲突或竞争几率也不断增加。
发明内容
本发明提供了一种访问缓存的方法和装置,以减少多核CPU访问缓存时的使用竞争。
第一方面,本发明提供了一种访问缓存的方法,该方法包括:接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;根据该数据访问请求,查询该多核共享的缓存中是否存在该目标数据,其中,该缓存包括该目标核对应的独占地址空间,该独占地址空间用于存储该目标核从内存中读取的数据,且该多核中的除该目标核之外的其它核读取的数据不能替换该目标核存入该独占地址空间中的数据;当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将该目标数据存入该独占地址空间之中。
在本发明中,CPU中的目标核处理应用程序的数据访问请求时,在多核共享的缓存中存在独占地址空间,独占地址空间用于存储目标核从内存中读取的数据,且多核中的除目标核之外的其它核读取的数据不能替换目标核存储在独占地址空间中的数据,从而支持在目标核在缓存中的独占地址空间的独占使用,减少了多核CPU访问缓存时的使用竞争。
结合第一方面,在第一方面的第一种可能的实现方式中,该方法还包括:接收该应用程序的指示信息,该指示信息用于指示在该缓存中设置该独占地址空间,该指示信息包含该独占地址空间在该缓存中的地址和大小;根据该指示信息,在该缓存中设置该独占地址空间。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该多核与多个寄存器一一对应,该根据该指示信息,设置该独占地址空间,包括:根据该指示信息,通过该目标核对应的寄存器设置该独占地址空间对应的缓存地址和缓存长度。
结合第一方面,第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该独占地址空间包括驻留地址空间,该驻留地址空间用于存储该目标数据中的第一数据,且位于该驻留地址空间中的该第一数据不能被任何数据替换。
通过设置在独占地址空间中设置驻留地址空间,并设置位于驻留地址空间的第一数据不能被任何数据替换,从而在缓存中锁定了第一数据,进而提高了读取第一数据时缓存的命中率。
结合第一方面,第一方面的第一种至第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中中,该缓存为三级缓存。
第二方面,本发明提供了一种访问缓存的装置,包括:接收模块,用于接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;查询模块,用于根据该数据访问请求,查询该多核共享的缓存中是否存在该目标数据,其中,该缓存包括该目标核对应的独占地址空间,该独占地址空间用于存储该目标核从内存中读取的数据,且该多核中的除该目标核之外的其它核读取的数据不能替换该目标核存入该独占地址空间中的数据;执行模块,用于当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;该执行模块还用于当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将该目标数据存入该独占地址空间之中。
结合第二方面,在第二方面的第一种可能的实现方式中,该接收模块还用于接收应用程序的指示信息,该指示信息用于指示在该缓存中设置该独占地址空间,该指示信息包含该独占地址空间在该缓存中的地址和大小;其中该执行模块还用于根据该指示信息,在该缓存中设置该独占地址空间。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该多核与多个寄存器一一对应,该执行模块具体用于根据该指示信息,通过该目标核对应的寄存器设置该独占地址空间对应的缓存地址和缓存长度。
结合第二方面,第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该独占地址空间包括驻留地址空间,该驻留地址空间用于存储该目标数据中的第一数据,且位于该驻留地址空间中的该第一数据不能被任何数据替换。
结合第二方面,第二方面的第一种至第三种可能的实现方式中的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,该缓存为三级缓存。
第三方面,本发明提供了一种访问缓存的方法,接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;根据该数据访问请求,查询该多核共享的缓存中是否存在该目标数据,其中,该缓存包括该目标核对应的驻留地址空间,该驻留地址空间用于存储该目标核从内存中读取的数据,且位于该驻留地址空间中的该目标数据不能被任何数据替换;当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将该目标数据存入该缓存之中。
在本发明中,CPU中的目标核处理该应用程序的数据访问请求时,在多核共享的缓存中存在驻留地址空间,驻留地址空间用于存储目标核从内存中读取的数据,且存储在驻留地址空间中的目标数据不能被任何数据替换,从而支持在目标核在缓存中的驻留地址空间的独占使用,减少了多核CPU访问缓存时的使用竞争。
结合第三方面,在第三方面的第一种可能的实现方式中,该方法包括:接收应用程序的指示信息,该指示信息用于指示在该缓存中设置该驻留地址空间,该指示信息包含该驻留地址空间在该缓存中的地址和大小;根据该指示信息,在该缓存中设置该驻留地址空间。
第四方面,本发明提供了一种访问缓存的装置,该装置包括处理器和存储器;该存储器用于存储代码;该处理器通过读取该存储器存储的该代码,以用于执行第一方面提供的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的访问缓存的方法的流程示意图。
图2是根据本发明又一实施例的多核计算机***架构图。
图3是根据本发明再一实施例的访问缓存的方法的架构图。
图4是根据本发明另一实施例的访问缓存的装置的示意图。
图5是根据本发明另一实施例的访问缓存的装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
应理解,本发明实施例中的访问缓存的方法可以应用于多核计算机***,该多核计算机***可以为通用的多核计算机***。该多核计算机***中的CPU可以包括多个核,多个核之间可以通过***总线或者交叉开关矩阵通信,该多核计算机***中可以包括CPU中的多核共享的缓存。
图1示出了本发明实施例中的一种访问缓存的方法100的示意图。如图1所示,该方法100包括:
S110,接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;
S120,根据所述数据访问请求,查询所述多核共享的缓存中是否存在所述目标数据,其中,所述缓存包括所述目标核对应的独占地址空间,所述独占地址空间用于存储所述目标核从内存中读取的数据,且所述多核中的除所述目标核之外的其它核读取的数据不能替换所述目标核存入所述独占地址空间中的数据;
S130,当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;
S140,当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将所述目标数据存入所述独占地址空间之中。
在本发明实施例中,CPU中的目标核处理应用程序的数据访问请求时,在多核共享的缓存中存在独占地址空间,独占地址空间用于存储目标核从内存中读取的数据,且多核中的除目标核之外的其它核读取的数据不能替换目标核存储在独占地址空间中的数据,从而支持在目标核在缓存中的独占地址空间的独占使用,减少了多核CPU访问缓存时的使用竞争。
应理解,本发明实施中,由于在多核共享的缓存中设置了与目标核对应的独占地址空间,使得目标核读取的目标数据不会被除目标核之外的其它数据替代,所以提高了缓存的命中率。
应理解,本发明实施例中的目标数据的内存地址,可以指目标数据的虚拟地址,也可以指目标数据的物理地址,本发明对此并不限定。
应理解,本发明实施例中的多核共享的缓存,可以是三级缓存(即L3 cache),或者是其它可以由多核共享的缓存,本发明并不限于此。例如,同一个物理CPU上的所有核可以共享一个三级缓存、每个核可以单独使用相应的一级缓存或二级缓存。
可选地,可以通过软件***设置该独占地址空间的地址和大小,例如,可以通过操作***设置,或者也可以通过应用程序设置该独占地址空间。例如,可以接收软件***(操作***或应用程序)发出的指示信息,该指示信息用于指示独占地址空间的地址和大小,可以根据该指示信息,在缓存中设置该独占地址空间。
可选地,在独占地址空间中可以存入除目标核之外其它核读取的数据,但是其它核读取的数据不能替换目标核读取的数据,只能使用独占地址空间中未被目标核读取的数据占用的空间。
可选地,作为一个实施例,该访问缓存的方法100还包括:接收应用程序的指示信息,该指示信息用于指示在该缓存中设置该独占地址空间,该指示信息包含该独占地址空间在该缓存中的地址和大小;根据该指示信息,在该缓存中设置该独占地址空间。
应理解,在本发明实施例中,根据指示信息,在缓存中设置该独占地址空间,可以是根据在该独占地址空间对应的寄存器中设置该独占地址空间的地址和大小。
可选地,作为一个实施例,该多核与多个寄存器一一对应,在该访问缓存的方法100中,该根据该指示信息,设置该独占地址空间,包括:根据该指示信息,通过该目标核对应的寄存器设置该独占地址空间对应的缓存地址和缓存长度。
为了便于理解,图2示出了本发明实施例的多核计算机***的内部架构图,如图2所示,CPU内部可以包括多个核,多个核可以共享一个缓存。例如,该共享的缓存可以位于CPU所在的硬件芯片之上。CPU中的多个核可以与多个寄存器一一对应,每个寄存器可以存储对应的核的指令。CPU中的核可以通过寄存器设置独占地址空间的相关信息。
例如,可以在寄存器中设置该多核共享的缓存中的独占地址空间的配置信息。例如,寄存器可以包括独占地址空间的缓存地址标志位,独占地址空间的缓存长度标志位以及独占地址空间的使能标志位。其中缓存地址标志位可以用于设置独占地址空间的地址,缓存长度标志位可以用于设置独占地址空间的长度,使能标志位可以用于设置独占地址空间有效或者无效。例如,该使能标志位可以命名为排外(exclusive)标志位。例如,所述多核共享的缓存可以是三级缓存,当程序启动时,可以将程序绑定在CPU中的第0个核上(简称“CPU0核”),同时可以在CPU0核对应的寄存器上设置三级缓存中的独占地址空间,将exclusive位赋值为1,代表独占地址空间当前有效;将缓存地址标志位赋值为0x10000,缓存长度标志位赋值为0x10000,表示CPU0核独占地址段为0x10000至0x1ffff的缓存空间。在该独占地址空间对应的使能标志位有效的时间段内,地址为0x10000至0x1ffff之间的三级缓存空间存储的数据被设置为不能被除目标核外的其它核从内存中读取的数据替换。
为了便于理解,图3示出了本发明实施例的访问缓存的方法的架构图,如图3所示,软件***(例如,操作***或者应用程序)可以通过缓存配置接口对寄存器进行和独占地址空间相关的设置。其中缓存配置接口可以是软件***访问寄存器的接口。
可选地,在通过寄存器设置独占地址空间的使能标志位有效后,可以通知除所述目标核之外的其它核该独占地址空间的地址,通知独占地址空间对应的地址范围在当前被目标核独占。在进行缓存数据更新时,目标核可以优先使用独占地址空间。例如,可以通过***总线监听协议将独占地址空间的地址广播给除目标核之外的其它核。
可选地,作为一个实施例,该访问缓存的方法100还包括:该独占地址空间包括驻留地址空间,该驻留地址空间用于存储该目标数据中的第一数据,且位于该驻留地址空间中的数据不能被任何数据替换。
本发明实施例中,通过设置在独占地址空间中设置驻留地址空间,并设置位于驻留地址空间的第一数据不能被任何数据替换,从而在缓存中锁定了第一数据,进而提高了读取第一数据时缓存的命中率。
应理解,本发明实施例中的第一数据,可以指目标数据中的部分数据或全部数据。例如,该第一数据可以是目标数据中的关键数据,可以将该关键数据存入驻留地址空间之中,在驻留地址空间有效期间,该关键数据在应用程序运行期间不会被任何数据替换,或者,可以理解为,该关键数据被锁定,不会被后续换出。
可选地,该第一数据可以由应用程序确定,也可以由操作***确定,例如,可以接收应用程序或者操作***发送的第一信息,该第一信息可以用于指示第一数据和驻留地址空间在缓存中的地址和大小,可以根据该第一信息,在独占地址空间中设置驻留地址空间,并使用该驻留地址空间存入第一数据。
应理解,该驻留地址空间可以存入除目标核之外其它核读取的数据,也可以存入目标数据中除所述第一数据之外的数据,但是,在所述驻留地址空间中的任何数据不能替换所述第一数据,换句话说,所述第一数据在存入所述驻留地址空间之后,不会被替换。
应理解,本发明实施例中的驻留地址空间,可以在访问第一数据之前设置,也可以在访问第一数据时设置,本发明对此不作限定。
例如,可以在寄存器中设置驻留地址空间的地址标志位、驻留地址空间的长度标志位以及驻留地址空间的使能标志位。通过设置以上各标志位来设置驻留地址空间的地址、大小以及是否有效。例如,可以命名该驻留地址空间的使能标志位为非替换(noswap)位,在目标核对应的寄存器中设置驻留地址空间时,可以设置该驻留地址空间的缓存地址和缓存长度,并将noswap位置为有效(例如,置1为有效,置0为无效)。
可选地,当应用程序不再使用该第一数据时,可以取消该驻留地址空间,以供目标核读取的其它数据使用。例如,在确定不再使用第一数据之后,可以在目标核对应的寄存器中,将存储该第一数据的驻留地址空间的使能标志位设置为无效,则在无效之后存储在驻留地址空间的数据可以被目标核读取的其它数据替换。
本发明实施例中,当应用程序不需要驻留地址空间存储第一数据时,通过取消驻留地址空间,将驻留地址空间占用的空间恢复为由目标核读取的数据使用,提高了独占地址空间以及缓存的利用率。
应理解,本发明实施例中,可以设置一个驻留地址空间,也可以设置多个驻留地址空间。
可选地,作为一个实施例,该访问缓存的方法100还包括:确定该目标核不需要使用该独占地址空间;取消该独占地址空间,以便于除该目标核之外的其它核使用该独占地址空间。
本发明实施例中,通过取消目标核不再使用的独占地址空间,将独占地址空间占用的空间恢复为多核共享,提高了缓存的利用率。
例如,在本发明实施例中,该目标核不需要使用该独占地址空间的情况包括:使用该独占地址空间的应用程序运行完毕,该目标核不再需要使用该多核共享的缓存。
例如,取消该独占地址空间的具体操作,可以是在目标核对应的寄存器中设置独占地址空间的在缓存中的地址和长度,并将该独占地址空间的使能标志位设置为无效。例如,在应用程序使用独占地址空间时,设置了独占地址空间的地址为0x10000,并设置了独占地址空间的长度为0x10000,且独占地址空间的使能标志位赋值有效。表示缓存中地址段0x10000至0x1ffff之间的空间被目标核独占。当目标核不需要使用独占地址空间时(例如,在目标核中运行的应用程序结束),可以在寄存器中设置独占地址空间的地址为0x10000,设置独占地址空间的长度为0x10000,并将地址空间的使能标志位设置为无效。表示缓存中地址段0x10000至0x1ffff的空间不再被目标核独占,可以恢复为多核共享的状态,或者说,将缓存的更新策略恢复为默认的更新策略。从而在确定不需要独占地址空间时,取消独占地址空间,将独占地址空间占用的空间恢复为多核共享,提高缓存的利用率。
上文结合图1至图3详细阐述了一种访问缓存的方法100,下文将详细描述一种访问缓存的方法200,该方法200包括:
S210,接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;
S220,根据该数据访问请求,查询该多核共享的缓存中是否存在该目标数据,其中,该缓存包括该目标核对应的驻留地址空间,该驻留地址空间用于存储该目标核从内存中读取的数据,且位于所述驻留地址空间中的所述目标数据不能被任何数据替换;
S230,当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;
S240,当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将该目标数据存入该缓存之中。
在本发明中,CPU中的目标核处理该应用程序的数据访问请求时,在多核共享的缓存中存在驻留地址空间,驻留地址空间用于存储目标核从内存中读取的数据,且存储在驻留地址空间中的目标数据不能被任何数据替换,从而支持在目标核在缓存中的驻留地址空间的独占使用,减少了多核CPU访问缓存时的使用竞争。
可选地,作为一个实施例,该方法200包括:接收应用程序的指示信息,该指示信息用于指示在该缓存中设置该驻留地址空间,该指示信息包含该驻留地址空间在该缓存中的地址和大小;根据该指示信息,在该缓存中设置该驻留地址空间。
上文结合图1至图3详细阐述了访问缓存的方法,下文将结合图4至图5详细描述访问缓存的装置。
图4示出了根据本发明实施例的访问缓存的装置400的示意图。应理解,本发明实施例的装置400中的各个模块的下述和其他操作和/或功能分别为了实现图1至图3中的各个方法的相应流程,为了简洁,在此不再赘述,如图4所示,该装置400包括:
接收模块410,用于接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;
查询模块420,用于根据该数据访问请求,查询该多核共享的缓存中是否存在该目标数据,其中,该缓存包括该目标核对应的独占地址空间,该独占地址空间用于存储该目标核从内存中读取的数据,且该多核中的除该目标核之外的其它核读取的数据不能替换该目标核存入该独占地址空间中的数据;
执行模块430,用于当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;
该执行模块430还用于当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将该目标数据存入该独占地址空间之中。
可选地,作为一个实施例,该接收模块410还用于接收该应用程序的指示信息,该指示信息用于指示在该缓存中设置该独占地址空间,该指示信息包含该独占地址空间在该缓存中的地址和大小;其中该执行模块430还用于根据该指示信息,在该缓存中设置该独占地址空间。
可选地,作为一个实施例,该多核与多个寄存器一一对应,该执行模块430具体用于根据该指示信息,通过该目标核对应的寄存器设置该独占地址空间对应的缓存地址和缓存长度。
可选地,作为一个实施例,该独占地址空间包括驻留地址空间,该驻留地址空间用于存储该目标数据中的第一数据,且位于该驻留地址空间中的该第一数据不能被任何数据替换。
可选地,作为一个实施例,该缓存为三级缓存。
在本发明实施例中,CPU中的目标核处理应用程序的数据访问请求时,在多核共享的缓存中存在独占地址空间,独占地址空间用于存储目标核从内存中读取的数据,且多核中的除目标核之外的其它核读取的数据不能替换目标核存储在独占地址空间中的数据,从而支持在目标核在缓存中的独占地址空间的独占使用,减少了多核CPU访问缓存时的使用竞争。
图5示出了根据本发明实施例的访问缓存的装置的示意图。如图5所示,该装置500包括:处理器510,存储器520,总线***530,其中该处理器500和该存储器520通过该总线***530相连,该存储器520用于存储指令,该处理器510用于执行该存储器520存储的指令。
其中,该处理器510用于:接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;根据该数据访问请求,查询该多核共享的缓存中是否存在该目标数据,其中,该缓存包括该目标核对应的独占地址空间,该独占地址空间用于存储该目标核从内存中读取的数据,且该多核中的除该目标核之外的其它核读取的数据不能替换该目标核存入该独占地址空间中的数据;当该缓存中存储有该目标数据时,从该缓存中读取该目标数据;当该缓存中未存储该目标数据时,根据该内存地址,从该内存中读取该目标数据,并将该目标数据存入该独占地址空间之中。
在本发明实施例中,CPU中的目标核处理应用程序的数据访问请求时,在多核共享的缓存中存在独占地址空间,独占地址空间用于存储目标核从内存中读取的数据,且多核中的除目标核之外的其它核读取的数据不能替换目标核存储在独占地址空间中的数据,从而支持在目标核在缓存中的独占地址空间的独占使用,减少了多核CPU访问缓存时的使用竞争。
可选地,作为一个实施例,该处理器520还用于接收该应用程序的指示信息,该指示信息用于指示在该缓存中设置该独占地址空间,该指示信息包含该独占地址空间在该缓存中的地址和大小;根据该指示信息,在该缓存中设置该独占地址空间。
可选地,作为一个实施例,该多核与多个寄存器一一对应,该处理器520具体用于根据该指示信息,通过该目标核对应的寄存器设置该独占地址空间对应的缓存地址和缓存长度。
可选地,作为一个实施例,该独占地址空间包括驻留地址空间,该驻留地址空间用于存储该目标数据中的第一数据,且位于该驻留地址空间中的该第一数据不能被任何数据替换。
可选地,作为一个实施例,该缓存为三级缓存。
另外,本文中术语“***”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上某一实施例中的技术特征和描述,为了使申请文件简洁清楚,可以理解适用于其他实施例,在其他实施例不再一一赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种访问缓存的方法,其特征在于,包括:
接收应用程序的数据访问请求,该应用程序运行于中央处理单元CPU的目标核中,该CPU为包括多核的CPU,该目标核为该多核之一,该数据访问请求包含待访问的目标数据的内存地址;
根据所述数据访问请求,查询所述多核共享的缓存中是否存在所述目标数据,其中,所述缓存包括所述目标核对应的独占地址空间,所述独占地址空间用于存储所述目标核从内存中读取的数据,且所述多核中的除所述目标核之外的其它核读取的数据不能替换所述目标核存入所述独占地址空间中的数据,所述独占地址空间还用于存储除所述目标核之外的其他核读取的数据;
当所述缓存中存储有所述目标数据时,从所述缓存中读取所述目标数据;
当所述缓存中未存储所述目标数据时,根据所述内存地址,从所述内存中读取所述目标数据,并将所述目标数据存入所述独占地址空间之中。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述应用程序的指示信息,所述指示信息用于指示在所述缓存中设置所述独占地址空间,所述指示信息包含所述独占地址空间在所述缓存中的地址和大小;
根据所述指示信息,在所述缓存中设置所述独占地址空间。
3.如权利要求2所述的方法,其特征在于,所述多核与多个寄存器一一对应,
所述根据所述指示信息,设置所述独占地址空间,包括:
根据所述指示信息,通过所述目标核对应的寄存器设置所述独占地址空间对应的缓存地址和缓存长度。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述独占地址空间包括驻留地址空间,所述驻留地址空间用于存储所述目标数据中的第一数据,且位于所述驻留地址空间中的所述第一数据不能被任何数据替换。
5.如权利要求1至3中任一项所述的方法,其特征在于,所述缓存为三级缓存。
6.一种访问缓存的装置,其特征在于,包括:
接收模块,用于接收应用程序的数据访问请求,所述应用程序运行于中央处理单元CPU的目标核中,所述CPU为包括多核的CPU,所述目标核为所述多核之一,所述数据访问请求包含待访问的目标数据的内存地址;
查询模块,用于根据所述数据访问请求,查询所述多核共享的缓存中是否存在所述目标数据,其中,所述缓存包括所述目标核对应的独占地址空间,所述独占地址空间用于存储所述目标核从内存中读取的数据,且所述多核中的除所述目标核之外的其它核读取的数据不能替换所述目标核存入所述独占地址空间中的数据,所述独占地址空间还用于存储除所述目标核之外的其他核读取的数据;
执行模块,用于当所述缓存中存储有所述目标数据时,从所述缓存中读取所述目标数据;
所述执行模块还用于当所述缓存中未存储所述目标数据时,根据所述内存地址,从所述内存中读取所述目标数据,并将所述目标数据存入所述独占地址空间之中。
7.如权利要求6所述的装置,其特征在于,所述接收模块还用于接收所述应用程序的指示信息,所述指示信息用于指示在所述缓存中设置所述独占地址空间,所述指示信息包含所述独占地址空间在所述缓存中的地址和大小;其中所述执行模块还用于根据所述指示信息,在所述缓存中设置所述独占地址空间。
8.如权利要求7所述的装置,其特征在于,所述多核与多个寄存器一一对应,所述执行模块具体用于根据所述指示信息,通过所述目标核对应的寄存器设置所述独占地址空间对应的缓存地址和缓存长度。
9.如权利要求6至8中任一项所述的装置,其特征在于,所述独占地址空间包括驻留地址空间,所述驻留地址空间用于存储所述目标数据中的第一数据,且位于所述驻留地址空间中的所述第一数据不能被任何数据替换。
10.如权利要求6至8中任一项所述的装置,其特征在于,所述缓存为三级缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511024173.8A CN105677580B (zh) | 2015-12-30 | 2015-12-30 | 访问缓存的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511024173.8A CN105677580B (zh) | 2015-12-30 | 2015-12-30 | 访问缓存的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677580A CN105677580A (zh) | 2016-06-15 |
CN105677580B true CN105677580B (zh) | 2019-04-12 |
Family
ID=56189852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511024173.8A Active CN105677580B (zh) | 2015-12-30 | 2015-12-30 | 访问缓存的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677580B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268384A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 读取数据的方法及装置 |
CN109597776B (zh) * | 2017-09-30 | 2020-12-08 | 华为技术有限公司 | 一种数据操作方法、内存控制器以及多处理器*** |
CN109783403A (zh) * | 2017-11-10 | 2019-05-21 | 深圳超级数据链技术有限公司 | 读取数据的方法、装置和数据处理器 |
CN108614782B (zh) * | 2018-04-28 | 2020-05-01 | 深圳市华阳国际工程造价咨询有限公司 | 一种用于数据处理***的高速缓存访问方法 |
CN110765034B (zh) | 2018-07-27 | 2022-06-14 | 华为技术有限公司 | 一种数据预取方法及终端设备 |
CN109617832B (zh) * | 2019-01-31 | 2022-07-08 | 新华三技术有限公司合肥分公司 | 报文缓存方法及装置 |
CN110096455B (zh) * | 2019-04-26 | 2021-09-14 | 海光信息技术股份有限公司 | 缓存空间的独占初始化方法及相关装置 |
CN112241320B (zh) * | 2019-07-17 | 2023-11-10 | 华为技术有限公司 | 资源分配方法、存储设备和存储*** |
CN112559433B (zh) * | 2019-09-25 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 一种多核互联总线、核间通信方法及多核处理器 |
CN111159062B (zh) * | 2019-12-20 | 2023-07-07 | 海光信息技术股份有限公司 | 一种缓存数据的调度方法、装置、cpu芯片及服务器 |
CN111679728B (zh) * | 2019-12-31 | 2021-12-24 | 泰斗微电子科技有限公司 | 数据读取方法及装置 |
CN112307067B (zh) * | 2020-11-06 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法及装置 |
CN112527205A (zh) * | 2020-12-16 | 2021-03-19 | 江苏国科微电子有限公司 | 一种数据安全防护方法、装置、设备及介质 |
CN115114192B (zh) * | 2021-03-23 | 2024-06-14 | 北京灵汐科技有限公司 | 存储器接口、功能核、众核***和存储数据访问方法 |
CN114036084B (zh) * | 2021-11-17 | 2022-12-06 | 海光信息技术股份有限公司 | 一种数据访问方法、共享缓存、芯片***和电子设备 |
CN114721726B (zh) * | 2022-06-10 | 2022-08-12 | 成都登临科技有限公司 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
CN115328820B (zh) * | 2022-09-28 | 2022-12-20 | 北京微核芯科技有限公司 | 多级缓存***的访问方法、数据存储方法及装置 |
CN115827504B (zh) * | 2023-01-31 | 2023-07-11 | 南京砺算科技有限公司 | 多核心图形处理器的数据存取方法、图形处理器及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009199384A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | データ処理装置 |
CN101673244A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 多核或集群***的存储器控制方法 |
CN101739299A (zh) * | 2009-12-18 | 2010-06-16 | 北京工业大学 | 一种基于片上多核处理器共享cache的动态公平划分方法 |
CN102483840A (zh) * | 2009-08-21 | 2012-05-30 | 英派尔科技开发有限公司 | 向处理器核分配高速缓冲存储器关联性 |
-
2015
- 2015-12-30 CN CN201511024173.8A patent/CN105677580B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009199384A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | データ処理装置 |
CN101673244A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 多核或集群***的存储器控制方法 |
CN102483840A (zh) * | 2009-08-21 | 2012-05-30 | 英派尔科技开发有限公司 | 向处理器核分配高速缓冲存储器关联性 |
CN101739299A (zh) * | 2009-12-18 | 2010-06-16 | 北京工业大学 | 一种基于片上多核处理器共享cache的动态公平划分方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105677580A (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677580B (zh) | 访问缓存的方法和装置 | |
US10929174B2 (en) | Atomic object reads for in-memory rack-scale computing | |
KR102319809B1 (ko) | 데이터 처리 시스템 및 다중 트랜잭션들을 처리하는 방법 | |
CN109154911B (zh) | 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 | |
CN101617298B (zh) | 用于dma、任务终止和同步操作的缓存一致保持 | |
JP5229968B2 (ja) | 複数クラスデータキャッシュポリシー | |
CN110209601A (zh) | 存储器接口 | |
US20110066830A1 (en) | Cache prefill on thread migration | |
CN108369507A (zh) | 用于使用存储器中处理来处理指令的方法和设备 | |
CN107038123A (zh) | 用于数据处理***中的缓存一致性的探听过滤器 | |
CN110209610A (zh) | 存储器接口 | |
CN109977129A (zh) | 多级数据缓存方法及设备 | |
US9864709B2 (en) | Data transfer in a multi-core processor | |
CN107025289B (zh) | 一种数据处理的方法及相关设备 | |
TW200933524A (en) | Memory systems, memory accessing methods and graphic processing systems | |
US20140075121A1 (en) | Selective Delaying of Write Requests in Hardware Transactional Memory Systems | |
US6973547B2 (en) | Coherence message prediction mechanism and multiprocessing computer system employing the same | |
WO2010117528A2 (en) | Opportunistic improvement of mmio request handling based on target reporting of space requirements | |
CN113448913A (zh) | 用于经由接口执行远程原子操作的***、装置和方法 | |
CN104731722B (zh) | 一种针对缓存页面的页面管理方法及装置 | |
CN109426623A (zh) | 一种读取数据的方法及装置 | |
CN116755635B (zh) | 一种硬盘控制器缓存***、方法、硬盘设备及电子设备 | |
GB2502858A (en) | A method of copying data from a first memory location and storing it in a cache line associated with a different memory location | |
CN105659216B (zh) | 多核处理器***的缓存目录处理方法和目录控制器 | |
CN111858665A (zh) | 一种提升软拷贝读性能的方法、***、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200417 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 301, A building, room 3, building 301, foreshore Road, No. 310052, Binjiang District, Zhejiang, Hangzhou Patentee before: Huawei Technologies Co.,Ltd. |