CN115061972A - 处理器、数据读写方法、装置和存储介质 - Google Patents
处理器、数据读写方法、装置和存储介质 Download PDFInfo
- Publication number
- CN115061972A CN115061972A CN202210794058.2A CN202210794058A CN115061972A CN 115061972 A CN115061972 A CN 115061972A CN 202210794058 A CN202210794058 A CN 202210794058A CN 115061972 A CN115061972 A CN 115061972A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- address information
- request
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000015654 memory Effects 0.000 claims abstract description 136
- 238000012544 monitoring process Methods 0.000 claims description 86
- 230000004044 response Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种处理器、数据读写方法、装置和存储介质。该处理器与主存连接,包括一个或多个缓存模块、一个或多个计算模块,缓存模块和计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块,计算模块用于:生成针对缓存模块的操作请求;缓存模块用于:在操作请求为读数据请求的情况下,响应于读数据请求,从第一缓存子模块、第二缓存子模块、主存、写数据请求的一种中读取读数据请求对应的第一目标数据;在操作请求为写数据请求的情况下,响应于写数据请求,向第二缓存子模块中写入写数据请求对应的第二目标数据。由此,可以降低总线的复杂度,使得处理器访问缓存的时延减小,同时提高了读写请求的吞吐量。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种处理器、数据读写方法、装置和存储介质。
背景技术
现代处理器中为了提高系统性能,一般都会设计有缓存(cache),以使得数据读写的速度适应处理器的处理速度。当前为了适应于多核心(core)的处理器,存在多层级的缓存,对应于处理器的片内总线结构包括环形(ring)结构、Mesh网络结构等。
然而,这些结构下总线的内部结构都比较复杂,使得处理器在进行数据读写时的时延大大增加。
发明内容
有鉴于此,本公开提出了一种处理器、数据读写方法、装置和存储介质。
根据本公开的一方面,提供了一种处理器。该处理器与主存连接,该处理器包括一个或多个缓存模块、一个或多个计算模块,缓存模块和计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块,所述计算模块用于生成针对缓存模块的操作请求;所述缓存模块用于:在所述操作请求为读数据请求的情况下,响应于所述读数据请求,从所述第一缓存子模块、所述第二缓存子模块、所述主存、写数据请求的一种中读取所述读数据请求对应的第一目标数据;在所述操作请求为写数据请求的情况下,响应于所述写数据请求,向所述第二缓存子模块中写入所述写数据请求对应的第二目标数据。
根据本申请实施例,通过将第一缓存子模块和第二缓存子模块集合到缓存模块中,使得缓存模块与计算模块通过总线连接,降低了总线的复杂度,可以使得在读写数据的过程中减少了跨越总线交互的次数,处理器访问缓存时的时延大大减小,同时,处理器在读数据时,可从包括各层级缓存子模块中或从主存中或从写数据请求中读取目标数据,在写数据时,跳过第一缓存子模块向第二缓存子模块中写入目标数据,集合了直写策略和回写策略的优势,提高了读写请求的吞吐量。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块用于:判断待响应的各读数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他读数据请求;在存在所述其他读数据请求的情况下,待其他读数据请求完成后,获取响应于其他读数据请求从所述第一缓存子模块、所述第二缓存子模块、主存的一种中读取的第一目标数据。
根据本申请实施例,可以实现在存在重复的读数据请求的情况下,可以无需重新访问缓存或主存即可读取数据,减少了计算模块对缓存、主存的访问次数,也减少了读取数据的时延。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:判断待响应的各写数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他写数据请求;在存在所述其他写数据请求的情况下,从所述其他写数据请求中读取第一目标数据,或者,待其他写数据请求完成后,根据所述读数据请求,从所述第二缓存子模块中读取第一目标数据。
根据本申请实施例,可以实现在存在需写入重复的内存地址的数据的情况下,可以直接从写数据请求中读取,或者待相应数据修改完后再响应于读数据请求读取,使得读取的数据为更新后的数据。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块用于:根据所述读数据请求中的第一地址信息,判断所述计算模块对应的目标缓存模块中的第一缓存子模块或所述目标缓存模块中的第二缓存子模块中是否存在与所述第一地址信息对应的第一目标数据;在存在所述第一目标数据的情况下,读取所述第一目标数据;否则,在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,所述监听信息包括所述处理器中的各第一缓存子模块中的全部的有效的地址信息和各地址信息对应的标识信息,所述标识信息指示地址信息对应的数据在缓存模块中的存储位置。
根据本申请实施例,可以实现对第一目标数据的读取,通过优先从目标缓存模块中的缓存子模块中读取第一目标数据,可以减少计算模块对主存的访问次数,减少了读取数据的时延。
在一种可能的实现方式中,所述在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,包括:在所述监听信息中存在所述第一地址信息的情况下,根据所述第一地址信息和所述第一地址信息对应的标识信息,从其他缓存模块中的第一缓存子模块中读取所述第一目标数据;否则,根据所述第一地址信息,从所述主存中读取所述第一目标数据。
根据本申请实施例,可以实现对第一目标数据的读取,且在读数据的过程中可以根据监听信息从其他第一缓存子模块中读取第一目标数据,进一步减少了对主存的访问次数,也减少了读取数据的时延。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:在不存在所述第一目标数据的情况下,在所述目标缓存模块中的第一缓存子模块中确定第一替换位置;在所述第一替换位置上存储有数据的情况下,删除所述监听信息中所述第一替换位置存储的数据的地址信息,判断所述目标缓存模块中的第二缓存子模块中是否存在不存储有数据的空位置;在存在所述空位置的情况下,将所述第一替换位置存储的数据写入所述空位置;将从其他缓存模块中的第一缓存子模块或所述主存中读取的所述第一目标数据写入所述第一替换位置。
根据本申请实施例,通过没有在目标缓存模块中的第一缓存子模块或目标缓存模块中的第二缓存子模块中命中的情况下,将从其他缓存模块中的第一缓存子模块或所述主存中读取第一目标数据写入第一缓存子模块而不写入第二缓存子模块,可以减少对第二缓存子模块的使用,且使得在下次读取数据时能够直接从第一缓存子模块中读取到,减少了读取数据的时延,同时,通过将被替换的数据不直接扔掉而写入第二缓存子模块,可以使得第二缓存子模块作为缓冲区,提高缓存的命中率。
在一种可能的实现方式中,在所述第一替换位置上存储有数据的情况下,该缓存模块还用于:根据监听信息中第三地址信息对应的标识信息,判断在其他缓存模块中的第一缓存子模块中是否存储有所述第三地址信息对应的数据,所述第三地址信息为所述第一替换位置存储的数据的地址信息;在其他缓存模块中的第一缓存子模块中未存储有所述第三地址信息对应的数据的情况下,删除所述监听信息中的第三地址信息和所述第三地址信息对应的标识信息;否则,修改所述第三地址信息对应的标识信息中,与目标缓存模块中的第一缓存子模块对应的标识信息。
根据本申请实施例,通过及时的更新监听信息,实现对第一缓存子模块中的数据情况的监听,同时,通过在其他缓存模块中的第一缓存子模块中存储有第三地址信息对应的数据的情况下,不直接删除监听信息中第三地址信息对应的记录,可以使得在后续存在针对于第三地址信息的读数据请求时,可以从对应其他第一缓存子模块中读取,进一步提高了读数据的速度。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:在从所述主存中读取所述第一目标数据的情况下,判断所述监听信息中是否存在空位置;在所述监听信息中存在空位置的情况下,将所述第一替换位置存储的数据的地址信息写入所述监听信息中的空位置;否则,在所述监听信息不存在空位置的情况下,确定所述监听信息中的第二替换位置,设置各缓存模块的各第一缓存子模块中与所述第二替换位置上的地址信息对应的数据无效,将所述第一替换位置存储的数据的地址信息写入所述第二替换位置。
根据本申请实施例,可以实现在第一缓存子模块的数据被替换的情况下,及时的更新监听信息,从而更精准及时地实现对第一缓存子模块中的数据情况的监听。
在一种可能的实现方式中,在所述操作请求为写数据请求的情况下,所述缓存模块还用于:根据所述写数据请求中的第二地址信息,判断所述计算模块对应的所述目标缓存模块中的第二缓存子模块中是否存在目标位置,所述目标位置存储的数据的地址信息为所述第二地址信息;在存在所述目标位置情况下,向所述目标位置中写入所述第二目标数据;否则,在不存在所述目标位置的情况下,在所述目标缓存模块中的第二缓存子模块中确定第三替换位置;在所述第三替换位置存储的数据与主存内对应地址的数据一致的情况下,向所述第三替换位置中写入所述第二目标数据;否则,在所述第三替换位置存储的数据与主存内对应地址的数据不一致的情况下,向所述主存中写入所述第三替换位置存储的数据,向所述第三替换位置中写入第二目标数据。
根据本申请实施例,可以实现第二目标数据的写入,且在写入的过程中跳过第一缓存子模块,可以使得第一缓存子模块中存储的数据与主存中对应的数据一致,通过向第二缓存子模块中写入第二目标数据,也可以减少访问主存的次数,且减少了写数据的延时。
在一种可能的实现方式中,在所述操作请求为写数据请求的情况下,所述缓存模块还用于:判断所述监听信息中是否存在所述第二地址信息;在存在所述第二地址信息的情况下,删除所述监听信息中的所述第二地址信息和所述第二地址信息对应的标识信息;设置各缓存模块的各第一缓存子模块中所述第二地址信息对应的数据无效。
根据本申请实施例,可以实现对监听信息的更新,从而更精准及时地实现对第一缓存子模块中的数据情况的监听。
根据本公开的另一方面,提供了一种数据读写方法。该方法用于处理器,所述处理器与主存连接,所述处理器包括一个或多个缓存模块、一个或多个计算模块,所述缓存模块和所述计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块,该方法包括:生成针对缓存模块的操作请求;在所述操作请求为读数据请求的情况下,响应于所述读数据请求,从所述第一缓存子模块、所述第二缓存子模块、所述主存、写数据请求的一种中读取所述读数据请求对应的第一目标数据;在所述操作请求为写数据请求的情况下,响应于所述写数据请求,向所述第二缓存子模块中写入所述写数据请求对应的第二目标数据。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,该方法还包括:判断待响应的各读数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他读数据请求;在存在所述其他读数据请求的情况下,待其他读数据请求完成后,获取响应于其他读数据请求从所述第一缓存子模块、所述第二缓存子模块、主存的一种中读取的第一目标数据。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,该方法还包括:判断待响应的各写数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他写数据请求;在存在所述其他写数据请求的情况下,从所述其他写数据请求中读取第一目标数据,或者,待其他写数据请求完成后,根据所述读数据请求,从所述第二缓存子模块中读取第一目标数据。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,该方法还包括:根据所述读数据请求中的第一地址信息,判断所述计算模块对应的目标缓存模块中的第一缓存子模块或所述目标缓存模块中的第二缓存子模块中是否存在与所述第一地址信息对应的第一目标数据;在存在所述第一目标数据的情况下,读取所述第一目标数据;否则,在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,所述监听信息包括所述处理器中的各第一缓存子模块中的全部的有效的地址信息和各地址信息对应的标识信息,所述标识信息指示地址信息对应的数据在缓存模块中的存储位置。
在一种可能的实现方式中,所述在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,包括:在所述监听信息中存在所述第一地址信息的情况下,根据所述第一地址信息和所述第一地址信息对应的标识信息,从其他缓存模块中的第一缓存子模块中读取所述第一目标数据;否则,根据所述第一地址信息,从所述主存中读取所述第一目标数据。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,该方法还包括:在不存在所述第一目标数据的情况下,在所述目标缓存模块中的第一缓存子模块中确定第一替换位置;在所述第一替换位置上存储有数据的情况下,删除所述监听信息中所述第一替换位置存储的数据的地址信息,判断所述目标缓存模块中的第二缓存子模块中是否存在不存储有数据的空位置;在存在所述空位置的情况下,将所述第一替换位置存储的数据写入所述空位置;将从其他缓存模块中的第一缓存子模块或所述主存中读取的所述第一目标数据写入所述第一替换位置。
在一种可能的实现方式中,在所述第一替换位置上存储有数据的情况下,该方法还包括:根据监听信息中第三地址信息对应的标识信息,判断在其他缓存模块中的第一缓存子模块中是否存储有所述第三地址信息对应的数据,所述第三地址信息为所述第一替换位置存储的数据的地址信息;在其他缓存模块中的第一缓存子模块中未存储有所述第三地址信息对应的数据的情况下,删除所述监听信息中的第三地址信息和所述第三地址信息对应的标识信息;否则,修改所述第三地址信息对应的标识信息中,与目标缓存模块中的第一缓存子模块对应的标识信息。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,该方法还包括:在从所述主存中读取所述第一目标数据的情况下,判断所述监听信息中是否存在空位置;在所述监听信息中存在空位置的情况下,将所述第一替换位置存储的数据的地址信息写入所述监听信息中的空位置;否则,在所述监听信息不存在空位置的情况下,确定所述监听信息中的第二替换位置,设置各缓存模块的各第一缓存子模块中与所述第二替换位置上的地址信息对应的数据无效,将所述第一替换位置存储的数据的地址信息写入所述第二替换位置。
在一种可能的实现方式中,在所述操作请求为写数据请求的情况下,该方法还包括:根据所述写数据请求中的第二地址信息,判断所述计算模块对应的所述目标缓存模块中的第二缓存子模块中是否存在目标位置,所述目标位置存储的数据的地址信息为所述第二地址信息;在存在所述目标位置情况下,向所述目标位置中写入所述第二目标数据;否则,在不存在所述目标位置的情况下,在所述目标缓存模块中的第二缓存子模块中确定第三替换位置;在所述第三替换位置存储的数据与主存内对应地址的数据一致的情况下,向所述第三替换位置中写入所述第二目标数据;否则,在所述第三替换位置存储的数据与主存内对应地址的数据不一致的情况下,向所述主存中写入所述第三替换位置存储的数据,向所述第三替换位置中写入第二目标数据。
在一种可能的实现方式中,在所述操作请求为写数据请求的情况下,该方法还包括:判断所述监听信息中是否存在所述第二地址信息;在存在所述第二地址信息的情况下,删除所述监听信息中的所述第二地址信息和所述第二地址信息对应的标识信息,设置各缓存模块的各第一缓存子模块中所述第二地址信息对应的数据无效。
根据本公开的另一方面,提供了一种数据读写装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本申请一实施例的处理器的结构图。
图2示出根据本申请一实施例的处理器的结构图。
图3示出根据本申请一实施例的处理器的结构图。
图4示出根据本申请一实施例的数据读写方法的流程图。
图5示出根据本申请一实施例的数据读写方法的流程图。
图6示出根据本申请一实施例的数据读写方法的流程图。
图7是根据一示例性实施例示出的一种数据读写装置1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在现代处理器,例如中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、数据处理器(data processing unit,DPU)等中为了提高系统性能,一般都会设计有缓存(cache),以使得数据读写的速度适应处理器的处理速度。当前为了适应于多核心(core)的处理器,存在多层级的缓存,对应于处理器的片内总线结构包括环形(ring)结构、Mesh网络结构等。然而,这些结构下通常是各层级缓存之间需要多次跨越总线交互,且总线的内部结构都比较复杂,使得处理器在进行数据读写时的时延大大增加。
鉴于此,本申请提供了一种处理器。该处理器与主存(main memory)连接,在该处理器中,通过将各层级的缓存集合到一起,使得缓存与处理器核心(core)通过总线(bus)连接,降低了总线的复杂度,可以使得缓存的监听(snoop)逻辑无需跨越总线即可完成,同时,处理器在读数据时,可从包括私有缓存(private cache)和共享缓存(shared cache)的各层级缓存中或从主存中或从写数据请求中读取目标数据,在写数据时,可以向共享缓存中写入目标数据,在此过程中,减少了跨越总线交互的次数,处理器访问缓存时的时延大大减小,且可以提高读写请求的吞吐量。
图1示出根据本申请一实施例的处理器的结构图。该处理器101与主存连接,所述处理器包括一个或多个缓存模块、一个或多个计算模块,所述缓存模块和所述计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块。
参见图1,该处理器101可与一个或多个主存连接,例如,该一个或多个主存包括主存111~113,该处理器101可以是CPU、GPU、DPU等处理器,可以是单核或多核处理器,本申请对此均不作限制。该一个或多个缓存模块包括缓存模块301~303,该一个或多个计算模块包括计算模块201~203,计算模块201~203可以是处理器核心。一个计算模块可以与任意个缓存模块通过总线(bus)连接。一个缓存模块(可称为mix cache)中包括一个或多个第一缓存子模块(可称为私有缓存(private cache))和一个第二缓存子模块(可称为共享缓存(shared cache)),第一缓存子模块访问第二缓存子模块时需要经过仲裁(arbiter)。例如,缓存模块301中包括第一缓存子模块3011~3013和第二缓存子模块3010,缓存模块302中包括第一缓存子模块3021~3023和第二缓存子模块3020。第一缓存子模块和第二缓存子模块中可以包括各行(line)数据,一行数据中可以包括用于标识该行的标签(tag)和实际存储的内存地址中的数据,tag可以用于指示该数据对应的内存地址,一行数据中还可包括用于指示该行的数据有效(valid)或无效(invalid)的标识,以及指示该行的数据干净(clean,表示该行存储的数据与内存中的数据一致)或脏(dirty,表示该行存储的数据与内存中的数据不一致)的标识。处理器访问第一缓存子模块的速度可大于访问第二缓存子模块的速度,一个第一缓存子模块的存储空间可小于一个第二缓存子模块的存储空间。一个第一缓存子模块可以为某一个或几个计算模块私有,即该第一缓存子模块只能为这一个或几个计算模块访问,例如,第一缓存子模块3011、3021可以为计算模块201私有;一个第二缓存子模块可以为多个计算模块共享,即该第二缓存子模块可以为多个计算模块访问例如,第二缓存子模块3010可以为计算模块201~203共享。缓存模块(包括第一缓存子模块和第二缓存子模块)和主存可以用于存储数据。
所述计算模块用于:生成针对缓存模块的操作请求;
其中,计算模块可以参见图中计算模块201~203,缓存模块可以是预设的与该计算模块连接的缓存模块,操作请求可以包括读数据请求(read request)、写数据请求(write request)。
所述缓存模块用于:
在所述操作请求为读数据请求的情况下,响应于所述读数据请求,从所述第一缓存子模块、所述第二缓存子模块、所述主存、写数据请求的一种中读取所述读数据请求对应的第一目标数据;
其中,读数据请求中可以包括要读取的第一目标数据的内存地址信息,该内存地址信息可以指示第一目标数据在主存中的存储地址。参见图1,在读数据的过程中,例如,计算模块201可以生成针对缓存模块301的读数据请求,缓存模块可以响应于该读数据请求,从各缓存模块中的各第一缓存子模块(例如第一缓存子模块3011~3013、第一缓存子模块3021~3023等)中读取第一目标数据,还可以从第二缓存子模块3010中读取第一目标数据,还可以从主存中或者从写数据请求中读取。缓存模块在读取到第一目标数据后,可以将第一目标数据返回给计算模块,以完成读数据的过程。缓存模块响应于读数据请求,读取第一目标数据的过程将在下述图2中进行详细介绍。
在所述操作请求为写数据请求的情况下,响应于所述写数据请求,向所述第二缓存子模块中写入所述写数据请求对应的第二目标数据。
其中,写数据请求中可以包括要写入的第二目标数据和第二目标数据的内存地址信息。参见图1,在写数据的过程中,例如,计算模块201可以生成针对缓存模块301的写数据请求,缓存模块可以响应于该写读数据请求,向第二缓存子模块3010中写入第二目标数据。缓存模块在写入第二目标数据后,可以向计算模块返回写数据完成的响应信息(writeresponse),以完成写数据的过程。根据写数据请求,写入第二目标数据的过程将在下述图3中进行详细介绍。
根据本申请实施例,通过将各层级的缓存集合到一起,使得缓存模块与计算模块通过总线连接,降低了总线的复杂度,可以使得在读写数据的过程中减少了跨越总线交互的次数,处理器访问缓存时的时延大大减小,同时,处理器在读数据时,可从包括各层级缓存子模块中或从主存中或从写数据请求中读取目标数据,在写数据时,跳过第一缓存子模块向第二缓存子模块中写入目标数据,集合了直写(write through)策略和回写(writeback)策略的优势,提高了读写请求的吞吐量。
以下在图1的基础上对读取第一目标数据的过程进行详细介绍,参见图2,示出根据本申请一实施例的处理器的结构图。
在一种可能的实现方式中,在响应于读数据请求从缓存或主存中读取数据前,可以判断是否存在与该读数据请求的内存地址重复的读数据请求或写数据请求,若存在可以等待相应的读数据请求或写数据请求完成后再行读取,或从写数据请求中读取,以减少工作量。
如图2所示,在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,缓存模块用于:
判断待响应的各读数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他读数据请求;
其中,缓存模块可以参见图中缓存模块301~303,待响应的读数据请求中可包括计算模块201生成的读数据请求,还可包括其他计算模块生成的读数据请求。第一地址信息可以是上述第一目标数据的内存地址信息,其他读数据请求可以被存储在读数据请求队列(read request queue)中,可以在读数据请求队列中的各读数据请求中确定是否存在与第一地址信息一致的地址信息,在存在一致的地址信息的情况下,确定存在与读数据请求中的第一地址信息对应的其他读数据请求。
在存在所述其他读数据请求的情况下,待其他读数据请求完成后,获取响应于其他读数据请求从第一缓存子模块、第二缓存子模块、主存、写数据请求的一种中读取的第一目标数据。
例如,可以将该读数据请求放入(push)转发队列(forward queue)中,转发队列可以用于向其他第一缓存子模块进行转发,待其他读数据请求完成后,从转发队列中取出该读数据请求,以其他读数据请求读取的数据作为该读数据请求读取的第一目标数据。
根据本申请实施例,可以实现在存在重复的读数据请求的情况下,可以无需重新访问缓存或主存即可读取数据,减少了计算模块对缓存、主存的访问次数,也减少了读取数据的时延。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块用于:
判断待响应的各写数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他写数据请求;
其中,其他写数据请求可以被存储在写数据请求队列(write request queue)中,可以在写数据请求队列中的各写数据请求中确定是否存在与第一地址信息一致的地址信息,在存在一致的地址信息的情况下,确定存在与读数据请求中的第一地址信息对应的其他写数据请求。
在存在所述其他写数据请求的情况下,从所述其他写数据请求中读取第一目标数据,或者,待其他写数据请求完成后,根据所述读数据请求,从所述第二缓存子模块中读取第一目标数据。
例如,可以读取对应的写数据请求中包括的数据作为第一目标数据,也可以将该读数据请求放入转发队列中,待其他写数据请求完成后,从转发队列中取出该读数据请求,响应于读数据请求从对应的第二缓存子模块中读取第一目标数据。
根据本申请实施例,可以实现在存在需写入重复的内存地址的数据的情况下,可以直接从写数据请求中读取,或者待相应数据修改完后再响应于读数据请求读取,使得读取的数据为更新后的数据。
响应于读数据请求,还可以从缓存或主存中读取数据,参见下述。在所述操作请求为读数据请求的情况下,所述缓存模块用于:
根据所述读数据请求中的第一地址信息,判断所述计算模块对应的目标缓存模块中的第一缓存子模块或所述目标缓存模块中的第二缓存子模块中是否存在与所述第一地址信息对应的第一目标数据;
其中,目标缓存模块可以是与操作请求针对的缓存模块,例如,若计算模块201生成了针对缓存模块301的操作请求,则目标缓存模块可以是该缓存模块301。
第一目标数据可以是指缓存子模块中对应的行(line)中存储的数据。在一种可能的实现方式中,可以通过比对第一地址信息和目标缓存模块中的各第一缓存子模块(例如参见图中第一缓存子模块3011~3013)的各行的标签,在第一地址信息和某一行的标签匹配(例如与标签中的地址信息匹配)时,可以确定该标签对应的行中存储的数据作为第一目标数据,上述过程也可以称为在第一缓存子模块中命中(hit)的过程。
在未在目标缓存模块中的各第一缓存子模块中命中时,即在各第一缓存子模块中失效(miss)时,还可以通过比对第一地址信息和目标缓存模块中的第二缓存子模块(参见图中第二缓存子模块3010)的各行数据的标签,在第一地址信息和某一行数据的标签匹配时,可以确定该标签对应的行中存储的数据作为第一目标数据,上述过程也可以称为在第二缓存子模块中命中(hit)的过程。
需要说明的是,在目标缓存模块中的各第一缓存子模块和第二缓存子模块中确定是否命中的顺序也可以对调,例如先确定是否在第二缓存子模块中命中,失效则再确定是否在各第一缓存子模块中命中,二者也可以并行实现,即同时进行判断,本申请对此不作限制。
若在第二缓存子模块中也失效(miss)时,可以执行read allocate操作,即,将读取到的第一目标数据写入第一缓存子模块中。
在存在所述第一目标数据的情况下,读取所述第一目标数据;否则,在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据。
其中,读取第一目标数据,可以是从命中的行中,读取行中存储的第一目标数据。
其中,监听信息(可称为snoop table)可以包括处理器中的各第一缓存子模块中的全部的有效(valid)的地址信息,例如,监听信息中可以包括各第一缓存子模块中,全部的有效的行上对应的内存地址和各地址信息对应的标识信息。有效的地址信息可以表示在第一缓存子模块中、对应地址信息的数据是可以被读取的,对应行上缓存的数据为无效(invalid)的,即被废弃的数据,对应的地址信息则不会被存储在监听信息中。标识信息可以指示地址信息对应的数据在缓存模块中的存储位置,例如指示地址信息对应的数据所存储于的第一缓存子模块,即,哪些第一缓存子模块存储有地址信息对应的数据。若有4个第一缓存子模块,则标识信息可以包括4bit的标识位,每个标识位对应一个第一缓存子模块,例如标识位值为1则可以表示对应的数据在对应的第一缓存子模块中有存储,标识位值为0则可以表示对应的数据在对应的第一缓存子模块中没有存储。
根据本申请实施例,可以实现对第一目标数据的读取,通过优先从目标缓存模块中的缓存子模块中读取第一目标数据,可以减少计算模块对主存的访问次数,减少了读取数据的时延。
从其他缓存模块中的第一缓存子模块或主存中读取第一目标数据的方式参见下述。
在一种可能的实现方式中,在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,包括:
在所述监听信息中存在所述第一地址信息的情况下,根据所述第一地址信息和所述第一地址信息对应的标识信息,从其他缓存模块中的第一缓存子模块中读取所述第一目标数据;否则,根据所述第一地址信息,从所述主存中读取所述第一目标数据。
其中,监听信息中存在第一地址信息,可以是在监听信息中检索到该第一地址信息的情况下,可以根据第一地址信息对应的标识信息确定存储有该第一地址信息对应的第一目标数据的第一缓存子模块(例如该第一缓存子模块对应的标识位值为1),即,可以在该第一缓存子模块中读取到第一目标数据。在一种可能的实现方式中,可以将该读数据请求放入转发队列中,从而可以从对应的第一缓存子模块中读取第一目标数据。
其中,主存例如参见图中与缓存模块301相连接的主存111。
根据本申请实施例,可以实现对第一目标数据的读取,且在读数据的过程中可以根据监听信息从其他第一缓存子模块中读取第一目标数据,进一步减少了对主存的访问次数,也减少了读取数据的时延。
由于在未在目标缓存模块中的各第一缓存子模块或第二缓存模块中命中时,要从其他第一缓存子模块或主存中读取第一目标数据,为了使得下一次读取时能直接在目标缓存模块中命中,提高命中率(hit ratio),减少读数据的时延,可以将本次读取的数据写入第一缓存子模块中,参见下述。
在一种可能的实现方式中,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:
在不存在所述第一目标数据的情况下,在所述目标缓存模块中的第一缓存子模块中确定第一替换位置;
其中,在第一缓存子模块中存在空行的情况下,可以随机选择一个空行作为第一替换位置;在不存在空行的情况下,可以通过预定的替换策略选择一行作为第一替换位置,将该行原本的数据移出第一缓存子模块,在一种可能的实现方式中,该行原本的数据可以被直接从第一缓存子模块中扔掉(或删除,evict),也可以被写入第二缓存子模块中,参见下述。预定的替换策略可以是最近最少使用(least recently used,LRU)策略、先进先出(first in first out,FIFO)策略等,本申请对此不作限制。
在所述第一替换位置上存储有数据的情况下,判断所述目标缓存模块中的第二缓存子模块中是否存在不存储有数据的空位置;
在一种可能的实现方式中,若目标缓存模块中的第二缓存子模块中存在不存储有数据的空位置,由于第一缓存子模块中存储的都是干净(clean)的数据,即第一替换位置上存储的数据与主存中存储的是一致的,因此第一替换位置上被替换的数据可以被直接扔掉(evict),而不写入主存中,以减少对主存的访问次数。
在存在所述空位置的情况下,将所述第一替换位置存储的数据写入所述空位置;
在一种可能的实现方式中,还可以将该空位置的对应标识标记为干净(clean),表示该空位置上的数据与主存中存储的数据一致。
将从其他缓存模块中的第一缓存子模块或所述主存中读取的所述第一目标数据写入所述第一替换位置。
根据本申请实施例,通过在没有在目标缓存模块中的第一缓存子模块或目标缓存模块中的第二缓存子模块中命中的情况下,将从其他缓存模块中的第一缓存子模块或所述主存中读取第一目标数据写入第一缓存子模块而不写入第二缓存子模块,可以减少对第二缓存子模块的使用,且使得在下次读取数据时能够直接从第一缓存子模块中读取到,减少了读取数据的时延,同时,通过将被替换的数据不直接扔掉而写入第二缓存子模块,可以使得第二缓存子模块作为缓冲区(evict buffer),提高缓存的命中率。
由于在第一替换位置上存储有数据的情况下,若将第一目标数据写入该第一替换位置,会导致第一替换位置上数据的修改,因此,可以更新监听信息中与第一替换位置上的数据相关的信息,从而使得监听信息中记录的信息与第一缓存子模块中对应数据的实际信息保持一致,参见下述:
在一种可能的实现方式中,在所述第一替换位置上存储有数据的情况下,所述缓存模块还用于:
根据监听信息中第三地址信息对应的标识信息,判断在其他缓存模块中的第一缓存子模块中是否存储有所述第三地址信息对应的数据。
其中,第三地址信息为所述第一替换位置存储的数据的地址信息。
在其他缓存模块中的第一缓存子模块中未存储有所述第三地址信息对应的数据的情况下,删除所述监听信息中的第三地址信息和所述第三地址信息对应的标识信息;否则,修改所述第三地址信息对应的标识信息中,与目标缓存模块中的第一缓存子模块对应的标识信息。
例如,若第三地址信息对应的标识信息中,除目标缓存模块的第一缓存子模块之外,还有其他第一缓存子模块对应的标识位值为1,可以确定在其他缓存模块中的第一缓存子模块中存储有第三地址信息对应的数据,因此,可以修改目标缓存模块的第一缓存子模块对应的标识位值为0,也就是说,在其他第一缓存子模块中存储有第三地址信息对应的数据的情况下,仅仅修改了数据有改变的第一缓存子模块对应的标识信息,而不直接在监听信息中将第三地址信息和对应的标识信息全部删除,从而后续读数据请求中若涉及到第三地址信息,还可以根据监听信息从其他第一缓存子模块中读取对应的数据。
若其他第一缓存子模块对应的标识位值为0,可以确定在其他缓存模块中的第一缓存子模块中未存储有第三地址信息对应的数据,则可以将监听信息的第三地址信息和第三地址信息对应的标识信息删除,即在监听信息中删除第三地址信息对应的记录。
根据本申请实施例,通过及时的更新监听信息,实现对第一缓存子模块中的数据情况的监听,同时,通过在其他缓存模块中的第一缓存子模块中存储有第三地址信息对应的数据的情况下,不直接删除监听信息中第三地址信息对应的记录,可以使得在后续存在针对于第三地址信息的读数据请求时,可以从对应其他第一缓存子模块中读取,进一步提高了读数据的速度。
在向第一缓存子模块中写入第一目标数据的情况下,还可以对监听信息进行及时更新,例如,在从其他缓存模块中的第一缓存子模块中读取第一目标数据写入目标缓存模块的第一缓存子模块,可以更新监听信息中第一目标数据的地址信息对应的标识信息,例如,将该标识信息中目标缓存模块中的第一缓存子模块对应的标识位值置为1。还可以将第一替换位置对应的信息写入监听信息,参见下述。
在一种可能的实现方式中,所述缓存模块还用于:
在从所述主存中读取所述第一目标数据的情况下,判断所述监听信息中是否存在空位置;
在所述监听信息中存在空位置的情况下,将所述第一替换位置存储的数据的地址信息写入所述监听信息中的空位置;否则,
在所述监听信息不存在空位置的情况下,确定所述监听信息中的第二替换位置,设置各缓存模块的各第一缓存子模块中与所述第二替换位置上的地址信息对应的数据无效,将所述第一替换位置存储的数据的地址信息写入所述第二替换位置。
其中,可以根据预定的策略确定第二替换位置,本申请对此不作限制。其中,在向监听信息中写入地址信息时,还可更新地址信息对应的标识信息。
设置各缓存模块的各第一缓存子模块中与所述第二替换位置上的地址信息对应的数据无效,可以是向其他缓存模块中的第一缓存子模块中存在拷贝的第二替换位置上的地址信息对应的行(line)发送无效信号(snoop invalid),使得对应行上存储的数据置为无效,即对应的标识位设为invalid。
根据本申请实施例,可以实现在第一缓存子模块的数据被替换的情况下,及时的更新监听信息,从而更精准及时地实现对第一缓存子模块中的数据情况的监听。
以下对写入第二目标数据的过程进行详细介绍,参见图3,图3示出根据本申请一实施例的处理器的结构图。
响应于写数据请求,可以绕开(bypass)第一缓存子模块,直接向第二缓存子模块中写入数据,参见下述。如图3所示,在所述操作请求为写数据请求的情况下,所述缓存模块用于:
根据所述写数据请求中的第二地址信息,判断所述计算模块对应的所述目标缓存模块中的第二缓存子模块中是否存在目标位置,所述目标位置存储的数据的地址信息为所述第二地址信息;
其中,参见图1,在写数据的过程中,例如,若写数据请求是计算模块201针对目标缓存模块301生成的,缓存模块301可以响应于写数据请求向第二缓存子模块(可以参见图中第二缓存子模块3010)写入第二目标数据。目标位置可以是指第二缓存子模块中第二地址信息对应的行(line)。在一种可能的实现方式中,可以通过比对第二地址信息和缓存模块中的第二缓存子模块的各行的标签,在第二地址信息和某一行的标签匹配时,可以确定该标签对应的行作为目标位置。
在存在所述目标位置情况下,向所述目标位置中写入所述第二目标数据;否则,
在不存在所述目标位置的情况下,在所述目标缓存模块中的第二缓存子模块中确定第三替换位置;
其中,在存在目标位置的情况下,向目标位置中写入第二目标数据时,由于修改了原来的数据,还可以将该目标位置对应的标识标记为脏(dirty),表示目标位置存储的数据经过了修改,与主存中相应地址存储的数据不一致。
其中,在不存在目标位置的情况下,确定第三替换位置的方式可以参照上述预定的替换策略。
在所述第三替换位置存储的数据与主存内对应地址的数据一致的情况下,向所述第三替换位置中写入所述第二目标数据;
否则,在所述第三替换位置存储的数据与主存内对应地址的数据不一致的情况下,向所述主存中写入所述第三替换位置存储的数据,向所述第三替换位置中写入第二目标数据。
其中,第三替换位置存储的数据与主存内对应地址的数据不一致,可以是第三替换位置对应的标识为脏(dirty)。向主存写入第三替换位置存储的数据,可以是根据第三替换位置存储的数据的内存地址,向主存中对应的内存地址写入第三替换位置存储的数据。
根据本申请实施例,可以实现第二目标数据的写入,且在写入的过程中跳过第一缓存子模块,可以使得第一缓存子模块中存储的数据与主存中对应的数据一致,通过向第二缓存子模块中写入第二目标数据,也可以减少访问主存的次数,且减少了写数据的延时。
由于对写入第二目标数据时可能对原数据进行了修改,可以对监听信息进行更新,参见下述。
在一种可能的实现方式中,在所述操作请求为写数据请求的情况下,所述缓存模块还用于:
判断所述监听信息中是否存在所述第二地址信息;
在存在所述第二地址信息的情况下,删除所述监听信息中的所述第二地址信息和所述第二地址信息对应的标识信息;
由于在写入第二目标数据后,会导致缓存模块中第二地址信息对应的数据与主存内存储的数据不一样,因此,可以删除所述监听信息中的第二地址信息和第二地址信息对应的标识信息,从而在监听信息中可使得第一缓存子模块中该第二地址信息对应的行上存储的数据无效。
设置各缓存模块的各第一缓存子模块中所述第二地址信息对应的数据无效。
设置各缓存模块的各第一缓存子模块中与第二地址信息对应的数据无效,可以是向其他缓存模块中的第一缓存子模块中存在拷贝的第二地址信息对应的行(line)发送无效信号(snoop invalid),使得对应行上存储的数据置为无效,即对应的标识位设为invalid。
根据本申请实施例,可以实现对监听信息的更新,从而更精准及时地实现对第一缓存子模块中的数据情况的监听。
图4示出根据本申请一实施例的数据读写方法的流程图。该方法用于处理器,该处理器与主存连接,该处理器包括一个或多个缓存模块、一个或多个计算模块,该缓存模块和计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块,如图4所示,该方法包括:
步骤S401,生成针对缓存模块的操作请求。
步骤S402,在所述操作请求为读数据请求的情况下,响应于所述读数据请求,从所述第一缓存子模块、所述第二缓存子模块、所述主存、写数据请求的一种中读取所述读数据请求对应的第一目标数据。
步骤S403,在所述操作请求为写数据请求的情况下,响应于所述写数据请求,向所述第二缓存子模块中写入所述写数据请求对应的第二目标数据。
根据本申请实施例,通过将第一缓存子模块和第二缓存子模块集合到缓存模块中,使得缓存模块与计算模块通过总线连接,降低了总线的复杂度,可以使得在读写数据的过程中减少了跨越总线交互的次数,处理器访问缓存时的时延大大减小,同时,处理器在读数据时,可从包括各层级缓存子模块中或从主存中或从写数据请求中读取目标数据,在写数据时,跳过第一缓存子模块向第二缓存子模块中或主存中写入目标数据,集合了直写策略和回写策略的优势,提高了读写请求的吞吐量。
图5示出根据本申请一实施例的数据读写方法的流程图。如图5所示,在操作请求为读数据请求的情况下,该方法包括:
步骤S501,判断待响应的各读数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他读数据请求。
步骤S502,在存在所述其他读数据请求的情况下,待其他读数据请求完成后,获取响应于其他读数据请求从所述第一缓存子模块、所述第二缓存子模块、主存的一种中读取的第一目标数据。
根据本申请实施例,可以实现在存在重复的读数据请求的情况下,可以无需重新访问缓存或主存即可读取数据,减少了计算模块对缓存、主存的访问次数,也减少了读取数据的时延。
在一种可能的实现方式中,在操作请求为读数据请求的情况下,该方法还包括:
步骤S503,判断待响应的各写数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他写数据请求。
步骤S504,在存在所述其他写数据请求的情况下,从所述其他写数据请求中读取第一目标数据,或者,待其他写数据请求完成后,根据所述读数据请求,从所述第二缓存子模块中读取第一目标数据。
根据本申请实施例,可以实现在存在需写入重复的内存地址的数据的情况下,可以直接从写数据请求中读取,或者待相应数据修改完后再响应于读数据请求读取,使得读取的数据为更新后的数据。
在一种可能的实现方式中,在操作请求为读数据请求的情况下,该方法还包括:
步骤S505,根据读数据请求中的第一地址信息,判断计算模块对应的目标缓存模块中的第一缓存子模块或目标缓存模块中的第二缓存子模块中是否存在与第一地址信息对应的第一目标数据。
步骤S506,在存在所述第一目标数据的情况下,读取所述第一目标数据;否则,
步骤S507,在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据。
其中,监听信息包括所述处理器中的各第一缓存子模块中的全部的有效的地址信息和各地址信息对应的标识信息,所述标识信息指示地址信息对应的数据在缓存模块中的存储位置。
根据本申请实施例,可以实现对第一目标数据的读取,通过优先从目标缓存模块中的缓存子模块中读取第一目标数据,可以减少计算模块对主存的访问次数,减少了读取数据的时延。
在一种可能的实现方式中,步骤S507,包括:在所述监听信息中存在所述第一地址信息的情况下,根据所述第一地址信息和所述第一地址信息对应的标识信息,从其他缓存模块中的第一缓存子模块中读取所述第一目标数据;否则,根据所述第一地址信息,从所述主存中读取所述第一目标数据。
根据本申请实施例,可以实现对第一目标数据的读取,且在读数据的过程中可以根据监听信息从其他第一缓存子模块中读取第一目标数据,进一步减少了对主存的访问次数,也减少了读取数据的时延。
在一种可能的实现方式中,在操作请求为读数据请求的情况下,该方法还包括:
步骤S508,在不存在所述第一目标数据的情况下,在所述目标缓存模块中的第一缓存子模块中确定第一替换位置。
步骤S509,在第一替换位置上存储有数据的情况下,判断目标缓存模块中的第二缓存子模块中是否存在不存储有数据的空位置。
步骤S510,在存在所述空位置的情况下,将所述第一替换位置存储的数据写入所述空位置。
步骤S511,将从其他缓存模块中的第一缓存子模块或所述主存中读取的所述第一目标数据写入所述第一替换位置。
根据本申请实施例,通过没有在目标缓存模块中的第一缓存子模块或目标缓存模块中的第二缓存子模块中命中的情况下,将从其他缓存模块中的第一缓存子模块或所述主存中读取第一目标数据写入第一缓存子模块而不写入第二缓存子模块,可以减少对第二缓存子模块的使用,且使得在下次读取数据时能够直接从第一缓存子模块中读取到,减少了读取数据的时延,同时,通过将被替换的数据不直接扔掉而写入第二缓存子模块,可以使得第二缓存子模块作为缓冲区,提高缓存的命中率。
在一种可能的实现方式中,在所述第一替换位置上存储有数据的情况下,该方法还包括:
步骤S512,根据监听信息中第三地址信息对应的标识信息,判断在其他缓存模块中的第一缓存子模块中是否存储有第三地址信息对应的数据;
其中,第三地址信息为所述第一替换位置存储的数据的地址信息。
步骤S513,在其他缓存模块中的第一缓存子模块中未存储有所述第三地址信息对应的数据的情况下,删除所述监听信息中的第三地址信息和所述第三地址信息对应的标识信息;否则,
步骤S514,修改所述第三地址信息对应的标识信息中,与目标缓存模块中的第一缓存子模块对应的标识信息。
根据本申请实施例,通过及时的更新监听信息,实现对第一缓存子模块中的数据情况的监听,同时,通过在其他缓存模块中的第一缓存子模块中存储有第三地址信息对应的数据的情况下,不直接删除监听信息中第三地址信息对应的记录,可以使得在后续存在针对于第三地址信息的读数据请求时,可以从对应其他第一缓存子模块中读取,进一步提高了读数据的速度。
在一种可能的实现方式中,在操作请求为读数据请求的情况下,该方法还包括:
步骤S515,在从所述主存中读取所述第一目标数据的情况下,判断所述监听信息中是否存在空位置。
步骤S516,在所述监听信息中存在空位置的情况下,将所述第一替换位置存储的数据的地址信息写入所述监听信息中的空位置;否则,
步骤S517,在所述监听信息不存在空位置的情况下,确定所述监听信息中的第二替换位置,设置各缓存模块的各第一缓存子模块中与所述第二替换位置上的地址信息对应的数据无效,将所述第一替换位置存储的数据的地址信息写入所述第二替换位置。
根据本申请实施例,可以实现在第一缓存子模块的数据被替换的情况下,及时的更新监听信息,从而更精准及时地实现对第一缓存子模块中的数据情况的监听。
需要说明的是,本申请对于图5中步骤S507,以及步骤S508~步骤S510之间的执行顺序不做限制;对于步骤S509~步骤S511,以及步骤S512~步骤S514之间的执行顺序也不作限制;对于步骤S507~步骤S514,以及步骤S515~步骤S517之间的执行顺序也不作限制。
图6示出根据本申请一实施例的数据读写方法的流程图。在操作请求为写数据请求的情况下,该方法包括:
步骤S601,根据写数据请求中的第二地址信息,判断计算模块对应的目标缓存模块中的第二缓存子模块中是否存在目标位置。
其中,所述目标位置存储的数据的地址信息为所述第二地址信息。
步骤S602,在存在所述目标位置情况下,向所述目标位置中写入所述第二目标数据;否则,
步骤S603,在不存在所述目标位置的情况下,在所述目标缓存模块中的第二缓存子模块中确定第三替换位置。
步骤S604,在所述第三替换位置存储的数据与主存内对应地址的数据一致的情况下,向所述第三替换位置中写入所述第二目标数据;否则,在所述第三替换位置存储的数据与主存内对应地址的数据不一致的情况下,向所述主存中写入所述第三替换位置存储的数据,向所述第三替换位置中写入第二目标数据。
根据本申请实施例,可以实现第二目标数据的写入,且在写入的过程中跳过第一缓存子模块,可以使得第一缓存子模块中存储的数据与主存中对应的数据一致,通过向第二缓存子模块中写入第二目标数据,也可以减少访问主存的次数,且减少了写数据的延时。
在一种可能的实现方式中,在所述操作请求为写数据请求的情况下,该方法还包括:
步骤S605,判断所述监听信息中是否存在所述第二地址信息。
步骤S606,在存在所述第二地址信息的情况下,删除所述监听信息中的所述第二地址信息和所述第二地址信息对应的标识信息。
步骤S607,设置各缓存模块的各第一缓存子模块中所述第二地址信息对应的数据无效。
根据本申请实施例,可以实现对监听信息的更新,从而更精准及时地实现对第一缓存子模块中的数据情况的监听。
需要说明的是,本申请对于图6中步骤S604,以及步骤S605~步骤S607之间的执行顺序不做限制。
根据本公开的另一方面,提供了一种数据读写装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图7是根据一示例性实施例示出的一种数据读写装置1900的框图。例如,装置1900可以被提供为一服务器或终端设备。参照图7,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种处理器,其特征在于,所述处理器与主存连接,所述处理器包括一个或多个缓存模块、一个或多个计算模块,所述缓存模块和所述计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块,
所述计算模块用于生成针对缓存模块的操作请求;
所述缓存模块用于:
在所述操作请求为读数据请求的情况下,响应于所述读数据请求,从所述第一缓存子模块、所述第二缓存子模块、所述主存、写数据请求的一种中读取所述读数据请求对应的第一目标数据;
在所述操作请求为写数据请求的情况下,响应于所述写数据请求,向所述第二缓存子模块中写入所述写数据请求对应的第二目标数据。
2.根据权利要求1所述的处理器,其特征在于,在所述操作请求为读数据请求的情况下,所述缓存模块用于:
根据所述读数据请求中的第一地址信息,判断所述计算模块对应的目标缓存模块中的第一缓存子模块或所述目标缓存模块中的第二缓存子模块中是否存在与所述第一地址信息对应的第一目标数据;
在存在所述第一目标数据的情况下,读取所述第一目标数据;否则,
在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,所述监听信息包括所述处理器中的各第一缓存子模块中的全部的有效的地址信息和各地址信息对应的标识信息,所述标识信息指示地址信息对应的数据在缓存模块中的存储位置。
3.根据权利要求2所述的处理器,其特征在于,所述在不存在所述第一目标数据的情况下,根据所述读数据请求中的第一地址信息和监听信息,从其他缓存模块中的第一缓存子模块或所述主存中读取所述第一目标数据,包括:
在所述监听信息中存在所述第一地址信息的情况下,根据所述第一地址信息和所述第一地址信息对应的标识信息,从其他缓存模块中的第一缓存子模块中读取所述第一目标数据;否则,
根据所述第一地址信息,从所述主存中读取所述第一目标数据。
4.根据权利要求2或3所述的处理器,其特征在于,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:
在不存在所述第一目标数据的情况下,在所述目标缓存模块中的第一缓存子模块中确定第一替换位置;
在所述第一替换位置上存储有数据的情况下,判断所述目标缓存模块中的第二缓存子模块中是否存在不存储有数据的空位置;
在存在所述空位置的情况下,将所述第一替换位置存储的数据写入所述空位置;
将从其他缓存模块中的第一缓存子模块或所述主存中读取的所述第一目标数据写入所述第一替换位置。
5.根据权利要求4所述的处理器,其特征在于,所述在所述第一替换位置上存储有数据的情况下,所述缓存模块还用于:
根据监听信息中第三地址信息对应的标识信息,判断在其他缓存模块中的第一缓存子模块中是否存储有所述第三地址信息对应的数据,所述第三地址信息为所述第一替换位置存储的数据的地址信息;
在其他缓存模块中的第一缓存子模块中未存储有所述第三地址信息对应的数据的情况下,删除所述监听信息中的第三地址信息和所述第三地址信息对应的标识信息;否则,
修改所述第三地址信息对应的标识信息中,与目标缓存模块中的第一缓存子模块对应的标识信息。
6.根据权利要求4或5所述的处理器,其特征在于,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:
在从所述主存中读取所述第一目标数据的情况下,判断所述监听信息中是否存在空位置;
在所述监听信息中存在空位置的情况下,将所述第一替换位置存储的数据的地址信息写入所述监听信息中的空位置;否则,
在所述监听信息不存在空位置的情况下,确定所述监听信息中的第二替换位置,设置各缓存模块的各第一缓存子模块中与所述第二替换位置上的地址信息对应的数据无效,将所述第一替换位置存储的数据的地址信息写入所述第二替换位置。
7.根据权利要求1-6任一项所述的处理器,其特征在于,在所述操作请求为读数据请求的情况下,所述缓存模块用于:
判断待响应的各读数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他读数据请求;
在存在所述其他读数据请求的情况下,待其他读数据请求完成后,获取响应于其他读数据请求从所述第一缓存子模块、所述第二缓存子模块、主存的一种中读取的第一目标数据。
8.根据权利要求1-7任一项所述的处理器,其特征在于,在所述操作请求为读数据请求的情况下,所述缓存模块还用于:
判断待响应的各写数据请求中是否存在与所述读数据请求中的第一地址信息对应的其他写数据请求;
在存在所述其他写数据请求的情况下,从所述其他写数据请求中读取第一目标数据,或者,待其他写数据请求完成后,根据所述读数据请求,从所述第二缓存子模块中读取第一目标数据。
9.根据权利要求1-8任一项所述的处理器,其特征在于,在所述操作请求为写数据请求的情况下,所述缓存模块还用于:
根据所述写数据请求中的第二地址信息,判断所述计算模块对应的所述目标缓存模块中的第二缓存子模块中是否存在目标位置,所述目标位置存储的数据的地址信息为所述第二地址信息;
在存在所述目标位置情况下,向所述目标位置中写入所述第二目标数据;否则,
在不存在所述目标位置的情况下,在所述目标缓存模块中的第二缓存子模块中确定第三替换位置;
在所述第三替换位置存储的数据与主存内对应地址的数据一致的情况下,向所述第三替换位置中写入所述第二目标数据;否则,
在所述第三替换位置存储的数据与主存内对应地址的数据不一致的情况下,向所述主存中写入所述第三替换位置存储的数据,向所述第三替换位置中写入第二目标数据。
10.根据权利要求9所述的处理器,其特征在于,在所述操作请求为写数据请求的情况下,所述缓存模块还用于:
判断监听信息中是否存在所述第二地址信息;
在存在所述第二地址信息的情况下,删除所述监听信息中的所述第二地址信息和所述第二地址信息对应的标识信息;
设置各缓存模块的各第一缓存子模块中所述第二地址信息对应的数据无效。
11.一种数据读写方法,其特征在于,所述方法用于处理器,所述处理器与主存连接,所述处理器包括一个或多个缓存模块、一个或多个计算模块,所述缓存模块和所述计算模块通过总线连接,一个缓存模块中包括一个或多个第一缓存子模块和一个第二缓存子模块,所述方法包括:
生成针对缓存模块的操作请求;
在所述操作请求为读数据请求的情况下,响应于所述读数据请求,从所述第一缓存子模块、所述第二缓存子模块、所述主存、写数据请求的一种中读取所述读数据请求对应的第一目标数据;
在所述操作请求为写数据请求的情况下,响应于所述写数据请求,向所述第二缓存子模块中写入所述写数据请求对应的第二目标数据。
12.一种数据读写装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求11所述的方法。
13.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求11所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210794058.2A CN115061972B (zh) | 2022-07-05 | 2022-07-05 | 处理器、数据读写方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210794058.2A CN115061972B (zh) | 2022-07-05 | 2022-07-05 | 处理器、数据读写方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115061972A true CN115061972A (zh) | 2022-09-16 |
CN115061972B CN115061972B (zh) | 2023-10-13 |
Family
ID=83204308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210794058.2A Active CN115061972B (zh) | 2022-07-05 | 2022-07-05 | 处理器、数据读写方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061972B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115826875A (zh) * | 2023-01-05 | 2023-03-21 | 摩尔线程智能科技(北京)有限责任公司 | 缓存数据无效化验证方法、装置及系统 |
CN116010293A (zh) * | 2022-12-30 | 2023-04-25 | 上海芷锐电子科技有限公司 | 数据请求处理电路、方法及其缓存电路和处理器 |
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN117093371A (zh) * | 2023-02-23 | 2023-11-21 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0667578A2 (en) * | 1994-02-14 | 1995-08-16 | Hewlett-Packard Company | Double cache snoop mechanism |
CN109213696A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
CN110209599A (zh) * | 2018-02-28 | 2019-09-06 | 畅想科技有限公司 | 相干性管理器 |
CN111240591A (zh) * | 2020-01-03 | 2020-06-05 | 苏州浪潮智能科技有限公司 | 一种存储设备的操作请求处理方法及相关装置 |
CN111651376A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | 数据读写方法、处理器芯片及计算机设备 |
CN112256604A (zh) * | 2020-10-19 | 2021-01-22 | 海光信息技术股份有限公司 | 直接存储器访问系统和方法 |
CN112540933A (zh) * | 2020-11-26 | 2021-03-23 | 华云数据控股集团有限公司 | 缓存读写方法、装置及电子设备 |
CN113515474A (zh) * | 2021-07-30 | 2021-10-19 | 上海阵量智能科技有限公司 | 数据处理装置、方法、计算机设备和存储介质 |
WO2021208489A1 (zh) * | 2020-04-17 | 2021-10-21 | 北京磐易科技有限公司 | 数据写入方法、装置和电子设备 |
CN113918508A (zh) * | 2021-12-15 | 2022-01-11 | 苏州浪潮智能科技有限公司 | 一种缓存加速方法、装置、设备及可读存储介质 |
-
2022
- 2022-07-05 CN CN202210794058.2A patent/CN115061972B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0667578A2 (en) * | 1994-02-14 | 1995-08-16 | Hewlett-Packard Company | Double cache snoop mechanism |
CN109213696A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
CN110209599A (zh) * | 2018-02-28 | 2019-09-06 | 畅想科技有限公司 | 相干性管理器 |
CN111240591A (zh) * | 2020-01-03 | 2020-06-05 | 苏州浪潮智能科技有限公司 | 一种存储设备的操作请求处理方法及相关装置 |
WO2021208489A1 (zh) * | 2020-04-17 | 2021-10-21 | 北京磐易科技有限公司 | 数据写入方法、装置和电子设备 |
CN111651376A (zh) * | 2020-07-06 | 2020-09-11 | Oppo广东移动通信有限公司 | 数据读写方法、处理器芯片及计算机设备 |
CN112256604A (zh) * | 2020-10-19 | 2021-01-22 | 海光信息技术股份有限公司 | 直接存储器访问系统和方法 |
CN112540933A (zh) * | 2020-11-26 | 2021-03-23 | 华云数据控股集团有限公司 | 缓存读写方法、装置及电子设备 |
CN113515474A (zh) * | 2021-07-30 | 2021-10-19 | 上海阵量智能科技有限公司 | 数据处理装置、方法、计算机设备和存储介质 |
CN113918508A (zh) * | 2021-12-15 | 2022-01-11 | 苏州浪潮智能科技有限公司 | 一种缓存加速方法、装置、设备及可读存储介质 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010293A (zh) * | 2022-12-30 | 2023-04-25 | 上海芷锐电子科技有限公司 | 数据请求处理电路、方法及其缓存电路和处理器 |
CN115826875A (zh) * | 2023-01-05 | 2023-03-21 | 摩尔线程智能科技(北京)有限责任公司 | 缓存数据无效化验证方法、装置及系统 |
CN115826875B (zh) * | 2023-01-05 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 缓存数据无效化验证方法、装置及系统 |
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN116028388B (zh) * | 2023-01-17 | 2023-12-12 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN117093371A (zh) * | 2023-02-23 | 2023-11-21 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
CN117093371B (zh) * | 2023-02-23 | 2024-05-17 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115061972B (zh) | 2023-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891228B2 (en) | Cache line states identifying memory cache | |
CN115061972B (zh) | 处理器、数据读写方法、装置和存储介质 | |
US10585804B2 (en) | Systems and methods for non-blocking implementation of cache flush instructions | |
US11892949B2 (en) | Reducing cache transfer overhead in a system | |
US11113204B2 (en) | Translation invalidation in a translation cache serving an accelerator | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US10331568B2 (en) | Locking a cache line for write operations on a bus | |
US8423736B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US10901908B2 (en) | Storing data into a memory | |
CN104951239A (zh) | 高速缓存驱动器、主机总线适配器及其使用的方法 | |
US20190179754A1 (en) | Memory barriers in a coherence directory | |
US10649902B2 (en) | Reducing translation latency within a memory management unit using external caching structures | |
US20160217076A1 (en) | Speculative cache reading using shared buffer | |
US9842050B2 (en) | Add-on memory coherence directory | |
US11321146B2 (en) | Executing an atomic primitive in a multi-core processor system | |
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 | |
US8938588B2 (en) | Ensuring forward progress of token-required cache operations in a shared cache | |
CN113168400A (zh) | 一种数据读取方法、装置及多核处理器 | |
US20110320737A1 (en) | Main Memory Operations In A Symmetric Multiprocessing Computer | |
CN116244216B (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 |