CN115048142A - 缓存访问命令处理系统、方法、装置、设备和存储介质 - Google Patents

缓存访问命令处理系统、方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN115048142A
CN115048142A CN202210283222.3A CN202210283222A CN115048142A CN 115048142 A CN115048142 A CN 115048142A CN 202210283222 A CN202210283222 A CN 202210283222A CN 115048142 A CN115048142 A CN 115048142A
Authority
CN
China
Prior art keywords
cache access
cache
command
access command
current
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.)
Pending
Application number
CN202210283222.3A
Other languages
English (en)
Inventor
王连忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Yunbao Intelligent Co ltd
Original Assignee
Shenzhen Yunbao Intelligent Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Yunbao Intelligent Co ltd filed Critical Shenzhen Yunbao Intelligent Co ltd
Priority to CN202210283222.3A priority Critical patent/CN115048142A/zh
Publication of CN115048142A publication Critical patent/CN115048142A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及一种缓存访问命令处理系统、方法、装置、设备和介质。所述系统包括:缓存队列管理模块,以及缓存流水线;其中,缓存队列管理模块,用于获取待处理的缓存访问命令,以及对应的缓存访问地址;将缓存访问地址相同的缓存访问命令输入同一队列中,并在一时钟周期内,从多个非空闲的队列中调度一个当前缓存访问命令进入缓存流水线中;缓存流水线,用于处理进入缓存流水线中的当前缓存访问命令,并将当前缓存访问命令对应的响应数据返回;缓存队列管理模块,用于获取当前缓存访问队列中的待调度缓存访问命令;根据待调度缓存访问命令的命令类型,确定调度进入缓存流水线的下一个缓存访问命令。采用本方法能够提高访问命令的处理效率。

Description

缓存访问命令处理系统、方法、装置、设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种缓存访问命令处理系统、方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,出现了一种利用非阻塞缓存来处理针对缓存的访问命令的方法,在非阻塞缓存中,如果针对缓存的访问命令未命中,即缓存中未存储有该访问命令对应的数据时,则可以利用MSHR(Miss States Handing Register)将未命中的缓存访问命令记录在回避状态保存寄存器中,来保证后续的访问命令的接收。
然而,上述访问命令的处理方式中,对于访问缓存的多笔访问,如果存在同地址的访问,如果出现访问命令未命中,并且再次接收到该地址的访问命令时,往往需要暂缓后续所有访问命令的执行,以实现同地址命令的保序,因此,上述缓存访问命令处理方式中,访问命令的处理效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高访问命令处理效率的缓存访问命令处理系统、方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种缓存访问命令处理系统,包括:缓存队列管理模块,以及缓存流水线;其中,
所述缓存队列管理模块,用于获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;将缓存访问地址相同的缓存访问命令输入同一队列中,并在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入所述缓存流水线中;
所述缓存流水线,用于处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回至所述缓存队列管理模块;
所述缓存队列管理模块,用于在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
在其中一个实施例中,所述缓存队列管理模块,进一步用于在所述命令类型为读命令的情况下,不将所述待调度缓存访问命令发送至所述缓存流水线,并将所述当前缓存访问命令对应的响应数据,作为所述待调度缓存访问命令对应的响应数据。
在其中一个实施例中,所述缓存队列管理模块,进一步用于在所述命令类型为写命令的情况下,将所述待调度缓存访问命令发送至所述缓存流水线;所述缓存流水线,进一步用于获取所述待调度缓存访问命令对应的响应数据,并将所述待调度缓存访问命令对应的响应数据返回至所述缓存队列管理模块。
在其中一个实施例中,所述缓存队列管理模块,还用于在未接收到所述响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入所述缓存流水线中。
在其中一个实施例中,所述系统还包括:MSHR模块以及写缓冲区;其中,所述缓存流水线,进一步用于若所述当前缓存访问命令为未命中命令,则将所述当前缓存访问命令发送至所述MSHR模块;所述MSHR模块,用于基于所述当前缓存访问命令对应的当前缓存访问地址,查询所述写缓冲区;若所述写缓冲区中存储有与所述当前缓存访问地址相适应的数据,则从所述写缓冲区中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
在其中一个实施例中,所述MSHR模块,还用于若所述写缓冲区中未存储有与所述当前缓存访问地址相适应的数据,则从内存中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
第二方面,本申请还提供了一种缓存访问命令处理方法,所述方法包括:
获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
将缓存访问地址相同的缓存访问命令输入同一队列中;
在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
在其中一个实施例中,所述根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令,包括:在所述命令类型为读命令的情况下,不将所述待调度缓存访问命令发送至所述缓存流水线,并将所述当前缓存访问命令对应的响应数据,作为所述待调度缓存访问命令对应的响应数据。
在其中一个实施例中,所述根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令,包括:在所述命令类型为写命令的情况下,将所述待调度缓存访问命令发送至所述缓存流水线,并通过所述缓存流水线获取所述待调度缓存访问命令对应的响应数据,并将所述待调度缓存访问命令对应的响应数据返回。
在其中一个实施例中,所述方法还包括:在未接收到所述响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入所述缓存流水线中。
在其中一个实施例中,所述方法还包括:若所述当前缓存访问命令为未命中命令,则通过所述缓存流水线将所述当前缓存访问命令发送至MSHR模块;通过所述MSHR模块基于所述当前缓存访问命令对应的当前缓存访问地址,查询写缓冲区;若所述写缓冲区中存储有与所述当前缓存访问地址相适应的数据,则从所述写缓冲区中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
在其中一个实施例中,所述查询写缓冲区之后,还包括:若所述写缓冲区中未存储有与所述当前缓存访问地址相适应的数据,则从内存中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
第三方面,本申请还提供了一种缓存访问命令处理装置,所述装置包括:
访问命令获取模块,用于获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
命令队列输入模块,用于将缓存访问地址相同的缓存访问命令输入同一队列中;
当前命令处理模块,用于在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
调度命令确定模块,用于在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
调度命令处理模块,用于根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
第四方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
将缓存访问地址相同的缓存访问命令输入同一队列中;
在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
第五方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
将缓存访问地址相同的缓存访问命令输入同一队列中;
在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
第六方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
将缓存访问地址相同的缓存访问命令输入同一队列中;
在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
上述缓存访问命令处理系统、方法、装置、计算机设备、存储介质和计算机程序产品,该系统包括:缓存队列管理模块,以及缓存流水线;其中,缓存队列管理模块,用于获取待处理的缓存访问命令,以及缓存访问命令对应的缓存访问地址;将缓存访问地址相同的缓存访问命令输入同一队列中,并在一时钟周期内,从多个非空闲的队列中调度一个当前缓存访问命令进入缓存流水线中;缓存流水线,用于处理进入缓存流水线中的当前缓存访问命令,并将当前缓存访问命令对应的响应数据返回至缓存队列管理模块;缓存队列管理模块,用于在当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到响应数据的情况下,获取当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;根据待调度缓存访问命令的命令类型,确定调度进入缓存流水线的下一个缓存访问命令。本申请通过缓存访问命令处理系统中包含的缓存队列管理模块,将缓存访问地址相同的缓存访问命令输入同一队列,并且在缓存流水线处理进入到缓存流水线中的缓存访问命令时,如果缓存队列管理模块接收到某个缓存访问命令对应的响应数据,则可以确定该队列中处理顺序在该缓存访问命令之后的访问命令,并且基于该命令的命令类型,确定调度进入缓存流水线的下一个访问命令,从而通过缓存队列管理模块实现了同地址命令的保序,该方式在出现访问命令未命中时,不需要暂缓后续所有访问命令的执行,从而可以提高访问命令的处理效率。
附图说明
图1为一个实施例中缓存访问命令处理系统的结构示意图;
图2为另一个实施例中缓存访问命令处理系统的结构示意图;
图3为一个实施例中缓存访问命令处理方法的流程示意图;
图4为一个实施例中通过缓存流水线处理未命中命令的流程示意图;
图5为一个应用实例中缓存的结构框图;
图6为一个应用实例中缓存请求命令队列管理示意图;
图7a为一个应用实例中加速处理方式的缓存处理时序示意图;
图7b为一个应用实例中非加速处理方式的缓存处理时序示意图;
图8a为一个应用实例中队列调度方式的处理时序示意图;
图8b为一个应用实例中暂缓同地址命令方式的处理时序示意图;
图9为一个应用实例中写缓冲区与回避状态保存寄存器的交互示意图;
图10为一个实施例中缓存访问命令处理装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种缓存访问命令处理系统,该系统可以包括:缓存队列管理模块101以及缓存流水线102;其中,
缓存队列管理模块101可以是缓存中通过队列进行缓存访问命令管理的模块,该模块可以通过链表的形式进行队列管理,并且每条链表可以对应有一个缓存访问队列。而缓存访问命令则指的是用于对缓存中存储的缓存数据进行访问的命令,该命令中可以缓存有需要访问的缓存数据的地址,即缓存访问地址。具体来说,当缓存队列管理模块101接收到输入至缓存中需要进行处理的缓存访问命令后,则可以通过缓存队列管理模块101确定出每一个缓存访问命令对应的缓存访问地址,并且将缓存访问地址相同的缓存访问命令,输入至同一个缓存访问队列中。
例如,需要进行处理的缓存访问命令可以包括命令0、命令1、命令2以及命令3,其中,命令0和命令2是针对于缓存访问地址0的访问命令,而命令1是针对缓存访问地址1的访问命令,而命令3则是缓存访问地址2的访问命令,那么终端则可以将上述缓存访问命令划分为3个队列,其中队列0中可以缓存有命令0和命令2,队列1则可以缓存有命令1,而队列2则可以缓存有命令3。
之后,在得到上述多个缓存访问队列后,则可以进一步地在一个时钟周期内,从上述多个非空闲的队列中,即缓存有命令的队列中,调度出其中一个访问命令,作为当前缓存访问命令,进入至缓存流水线102中。
缓存流水线102则可以用于对进入其中的缓存访问命令进行处理,得到相应的响应数据后,将其返回至缓存队列管理模块101。在缓存队列管理模块101将当前缓存访问命令调度进入缓存流水线102后,缓存流水线102则可以对进入其中的当前缓存访问命令进行处理,并获取该当前缓存访问命令相应的响应数据,将其返回至缓存队列管理模块101中。
最后,缓存队列管理模块101在接收到缓存流水线102返回的,针对于当前缓存访问命令相应的响应数据后,如果该当前缓存访问命令所对应的缓存访问队列,即当前缓存访问队列中如果包含多个缓存访问命令,缓存队列管理模块101则可以获取当前缓存访问队列的多个缓存访问命令中,处理顺序在当前缓存访问命令之后的缓存访问命令,作为待调度缓存访问命令,并且可以根据待调度缓存访问命令所对应的命令类型,来确定调度进入缓存流水线102的下一个缓存访问命令。
例如,当前缓存访问命令可以是命令0,其对应的队列中缓存有命令0和命令2,并且命令2的处理顺序在命令0之后,如果缓存队列管理模块101在将命令0输入至缓存流水线102,并接收到缓存流水线102返回的针对于命令0的响应数据后,则可以停止对其他队列中的命令进行调度处理,并且将命令2作为待调度缓存访问命令进行调度处理,即通过获取命令2对应的命令类型,来判断是否需要将命令2输入至缓存流水线102。
上述缓存访问命令处理系统中,包括:缓存队列管理模块101,以及缓存流水线102;其中,缓存队列管理模块101,用于获取待处理的缓存访问命令,以及缓存访问命令对应的缓存访问地址;将缓存访问地址相同的缓存访问命令输入同一队列中,并在一时钟周期内,从多个非空闲的队列中调度一个当前缓存访问命令进入缓存流水线102中;缓存流水线102,用于处理进入缓存流水线中的当前缓存访问命令,并将当前缓存访问命令对应的响应数据返回至缓存队列管理模块;缓存队列管理模块101,进一步用于在当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到响应数据的情况下,获取当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;根据待调度缓存访问命令的命令类型,确定调度进入缓存流水线102的下一个缓存访问命令。本申请通过缓存访问命令处理系统中包含的缓存队列管理模块101,将缓存访问地址相同的缓存访问命令输入同一队列,并且在缓存流水线102处理进入到缓存流水线中的缓存访问命令时,如果缓存队列管理模块101接收到某个缓存访问命令对应的响应数据,则可以确定该队列中处理顺序在该缓存访问命令之后的访问命令,并且基于该命令的命令类型,确定调度进入缓存流水线的下一个访问命令,从而通过缓存队列管理模块101实现了同地址命令的保序,该方式在出现访问命令未命中时,不需要暂缓后续所有访问命令的执行,从而可以提高访问命令的处理效率。
在一个实施例中,缓存队列管理模块101,进一步用于在命令类型为读命令的情况下,不将待调度缓存访问命令发送至缓存流水线102,并将当前缓存访问命令对应的响应数据,作为待调度缓存访问命令对应的响应数据。
如果缓存队列管理模块101得到的待调度缓存访问命令为读命令,由于读命令并不会改变在缓存中存储的数据,因此读命令对应的响应数据,则可以与该命令的上一个命令的响应数据相同,因此缓存队列管理模块101则可以将待调度缓存访问命令的上一个命令,即当前缓存访问命令对应的响应数据,作为该待调度缓存访问命令的响应数据,此时缓存队列管理模块101则不需要将该待调度缓存访问命令发送至缓存流水线102,由缓存流水线102处理得到上述响应数据。
例如,当前缓存访问命令为命令0,而待调度缓存访问命令为命令2时,在缓存队列管理模块101得到命令0的响应数据后,如果命令2为读命令,缓存队列管理模块101则可以将命令0对应的响应数据,直接作为命令2的响应数据,从而不将命令2调度进入缓存流水线102中。
在本实施例中,如果待调度缓存访问命令为读命令,则可以直接将当前缓存访问命令对应的响应数据,作为待调度缓存访问命令的响应数据,从而可以不需要将待调度缓存访问命令送入缓存流水线102进行处理,进一步提高缓存访问命令处理的效率。
在一个实施例中,缓存队列管理模块101,进一步用于在命令类型为写命令的情况下,将待调度缓存访问命令发送至缓存流水线102;缓存流水线102,进一步用于获取待调度缓存访问命令对应的响应数据,并将待调度缓存访问命令对应的响应数据返回至缓存队列管理模块101。
而如果待调度缓存访问命令为写命令,其对应的响应数据则可能和上一个缓存访问命令,即当前缓存访问命令的响应数据有所不同,那么为了保证该写命令对应的响应数据的准确性,缓存队列管理模块101则可以将待调度缓存访问命令输入至缓存流水线102中,由缓存流水线102执行对上述写命令的处理,并获取相应的响应数据,返回至缓存队列管理模块101中。
本实施例中,如果待调度缓存访问命令为写命令,缓存队列管理模块101则可以将待调度缓存访问命令送入缓存流水线102,由缓存流水线102返回相应的响应数据,来保证该命令对应的响应数据的准确性。
在一个实施例中,缓存队列管理模块101,还用于在未接收到响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入缓存流水线102中。
其他非空闲的队列指的是缓存队列管理模块101管理的多个非空闲队列中,除了当前缓存访问队列以外的任意一个。例如,当前缓存访问队列为队列0,那么其他非空闲的队列则可以是队列1或者队列2,如果缓存队列管理模块101未接收到当前缓存访问命令对应的响应数据,则可以进一步地将其余非空闲队列中的一个缓存访问命令,即其他缓存访问命令调度进入缓存流水线102,则可以避免在当前缓存访问命令未命中时,需要暂缓后续所有访问命令进入缓存流水线102,从而可以进一步提高缓存访问命令的处理效率。
本实施例中,如果缓存队列管理模块101未接收到响应数据,则可以从除当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入缓存流水线102,由于其他缓存访问命令与当前缓存访问队列具备不同的缓存访问地址,可以保证缓存流水线中不存在相同地址的命令的前提下,在当前缓存访问命令未命中时,不需要暂缓后续所有访问命令进入缓存流水线102,从而进一步提高缓存访问命令的处理效率。
在一个实施例中,如图2所示,缓存访问命令处理系统除了包括:缓存队列管理模块201和缓存流水线202,还可以包括:MSHR模块203以及写缓冲区204,其中,
缓存流水线202,进一步用于若当前缓存访问命令为未命中命令,则将当前缓存访问命令发送至MSHR模块203;MSHR模块203,用于基于当前缓存访问命令对应的当前缓存访问地址,查询写缓冲区204;若写缓冲区204中存储有与当前缓存访问地址相适应的数据,则从写缓冲区204中获取当前缓存访问地址相适应的数据,并将该数据返回缓存流水线202。
本实施例中,缓存访问命令处理系统除了包括缓存队列管理模块201和缓存流水线202,还可以包括:MSHR模块203以及写缓冲区204,并且缓存流水线202可以和MSHR模块203进行通信,而MSHR模块203则可以和写缓冲区204进行通信。
如果缓存流水线202在对当前缓存访问命令进行处理时,如果检测到缓存中未存储有与该访问命令对应的数据时,该当前缓存访问命令则可以作为未命中命令,此时缓存流水线202还可以进一步地将当前缓存访问命令发送至MSHR模块203返回相应的数据至缓存流水线202。
MSHR模块203接收到当前缓存访问命令后,则可以基于当前缓存访问命令所对应的访问地址,即当前缓存访问地址,对写缓冲区204进行查询,来检测写缓冲区204中是否存储有与当前缓存访问地址相适应的数据,例如可以是通过将当前缓存访问地址发送至写缓冲区204中存储有地址信息的寄存器,该寄存器中可以存储有写缓冲区204中存储的各个数据对应的地址信息,通过判断该寄存器中是否存储有当前缓存访问地址相匹配的地址信息,来确定写缓冲区204是否存储有与当前缓存访问地址相适应的数据,如果存在该数据,MSHR模块203则可以从写缓冲区204中得到上述数据,并将其返回至缓存流水线202中。
本实施例中,在缓存流水线202中出现未命中的缓存访问命令时,MSHR模块203则可以基于该缓存访问命令的缓存访问地址,从写缓冲区204中检测是否存储有与当前缓存访问地址相适应的数据,如果是,则可以直接从写缓冲区204中得到上述数据,返回至缓存流水线202。相比于需要MSHR模块203直接从内存中读取数据,通过写缓冲区204读取数据可以提高数据获取的效率,从而进一步提高缓存访问命令的处理效率。
另外,MSHR模块203,还用于若写缓冲区204中未存储有与当前缓存访问地址相适应的数据,则从内存中获取当前缓存访问地址相适应的数据,并将该数据返回缓存流水线202。
而如果写缓冲区204中未存储有与当前缓存访问地址相适应的数据,那么为了使未命中的缓存访问命令可以被处理,本实施例中,MSHR模块203还可以进一步从内存中得到与该缓存访问地址相匹配的内存数据,并将该数据返回至缓存流水线202,来对缓存访问命令进行处理。
而如果写缓冲区204中未存储有与当前缓存访问地址相适应的数据,本实施例MSHR模块203还可以进一步从内存中得到与当前缓存访问地址相适应的数据,返回至缓存流水线202,从而可以保证处理未命中的缓存访问命令的可实现性。
在一个实施例中,如图3所示,提供了一种缓存访问命令处理方法,该方法可以应用于缓存中,包括以下步骤:
步骤S301,获取待处理的缓存访问命令,以及缓存访问命令对应的缓存访问地址;
步骤S302,将缓存访问地址相同的缓存访问命令输入同一队列中。
其中,缓存访问命令则指的是用于对缓存中存储的缓存数据进行访问的命令,该命令中可以缓存有需要访问的缓存数据的地址,即缓存访问地址。本实施例中,缓存中可以缓存有通过队列进行缓存访问命令管理的缓存队列管理模块,并且在缓存队列管理模块得到需要进行处理的缓存访问命令后,则可以进一步确定出每一个缓存访问命令对应的缓存访问地址,并且将缓存访问地址相同的缓存访问命令,输入至同一个缓存访问队列中。
步骤S303,在一时钟周期内,从多个非空闲的队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入缓存流水线中的当前缓存访问命令,并将当前缓存访问命令对应的响应数据返回。
缓存流水线则可以用于对进入其中的缓存访问命令进行处理,步骤S302得到多个缓存访问队列后,则可以进一步地在一个时钟周期内,从上述多个非空闲的队列中,即缓存有命令的队列中,调度出其中一个访问命令,作为当前缓存访问命令,进入至缓存流水线中,而缓存流水线则可以对进入其中的当前缓存访问命令进行处理,并获取该当前缓存访问命令相应的响应数据,将其返回至缓存队列管理模块中
步骤S304,在当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到响应数据的情况下,获取当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
步骤S305,根据待调度缓存访问命令的命令类型,确定调度进入缓存流水线的下一个缓存访问命令。
最后,在接收到缓存流水线返回的,针对于当前缓存访问命令相应的响应数据后,如果该当前缓存访问命令所对应的缓存访问队列,即当前缓存访问队列中如果包含多个缓存访问命令,则可以进一步获取当前缓存访问队列的多个缓存访问命令中,处理顺序在当前缓存访问命令之后的下一个缓存访问命令,作为待调度缓存访问命令,并且可以根据待调度缓存访问命令所对应的命令类型,来确定调度进入缓存流水线的下一个缓存访问命令。
上述缓存访问命令处理方法中,通过获取待处理的缓存访问命令,以及缓存访问命令对应的缓存访问地址;将缓存访问地址相同的缓存访问命令输入同一队列中;在一时钟周期内,从多个非空闲的队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入缓存流水线中的当前缓存访问命令,并将当前缓存访问命令对应的响应数据返回;在当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到响应数据的情况下,获取当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;根据待调度缓存访问命令的命令类型,确定调度进入缓存流水线的下一个缓存访问命令。本申请通过将缓存访问地址相同的缓存访问命令输入同一队列,并且在缓存流水线处理进入到缓存流水线中的缓存访问命令时,如果接收到某个缓存访问命令对应的响应数据,则可以确定该队列中处理顺序在该缓存访问命令之后的访问命令,并且基于该命令的命令类型,确定调度进入缓存流水线的下一个访问命令,从而实现了同地址命令的保序,该方式在出现访问命令未命中时,不需要暂缓后续所有访问命令的执行,从而可以提高访问命令的处理效率。
在一个实施例中,步骤S305可以进一步包括:在命令类型为读命令的情况下,不将待调度缓存访问命令发送至缓存流水线,并将当前缓存访问命令对应的响应数据,作为待调度缓存访问命令对应的响应数据。
如果得到的待调度缓存访问命令为读命令,由于读命令并不会改变在缓存中存储的数据,因此读命令对应的响应数据,则可以与该命令的上一个命令的响应数据相同,因此则可以将待调度缓存访问命令的上一个命令,即当前缓存访问命令对应的响应数据,作为该待调度缓存访问命令的响应数据,并且不需要将该待调度缓存访问命令发送至缓存流水线,由缓存流水线处理得到上述响应数据。
在本实施例中,如果待调度缓存访问命令为读命令,则可以直接将当前缓存访问命令对应的响应数据,作为待调度缓存访问命令的响应数据,从而可以不需要将待调度缓存访问命令送入缓存流水线进行处理,进一步提高缓存访问命令处理的效率。
在一个实施例中,步骤S305可以进一步包括:在命令类型为写命令的情况下,将待调度缓存访问命令发送至缓存流水线,并通过缓存流水线获取待调度缓存访问命令对应的响应数据,并将待调度缓存访问命令对应的响应数据返回。
而如果待调度缓存访问命令为写命令,其对应的响应数据则可能和上一个缓存访问命令,即当前缓存访问命令的响应数据有所不同,那么为了保证该写命令对应的响应数据的准确性,则可以将待调度缓存访问命令输入至缓存流水线中,由缓存流水线执行对上述写命令的处理,并获取相应的响应数据后返回。
本实施例中,如果待调度缓存访问命令为写命令,则可以将待调度缓存访问命令送入缓存流水线,由缓存流水线返回相应的响应数据,来保证该命令对应的响应数据的准确性。
在一个实施例中,缓存访问命令处理方法,还可以包括:在未接收到响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入缓存流水线中。
其他非空闲的队列指的是得到的多个非空闲队列中,除了当前缓存访问队列以外的任意一个。如果未接收到缓存流水先返回的当前缓存访问命令对应的响应数据,则可以进一步地将其余非空闲队列中的一个缓存访问命令,即其他缓存访问命令调度进入缓存流水线,则可以避免在当前缓存访问命令未命中时,需要暂缓后续所有访问命令进入缓存流水线,从而可以进一步提高缓存访问命令的处理效率。
本实施例中,如果未接收到响应数据,则可以从除当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入缓存流水线,由于其他缓存访问命令与当前缓存访问队列具备不同的缓存访问地址,可以保证缓存流水线中不存在相同地址的命令的前提下,在当前缓存访问命令未命中时,不需要暂缓后续所有访问命令进入缓存流水线,从而进一步提高缓存访问命令的处理效率。
在一个实施例中,如图4所示,缓存访问命令处理方法,还可以包括:
步骤S401,若当前缓存访问命令为未命中命令,则通过缓存流水线将当前缓存访问命令发送至MSHR模块。
MSHR模块可以是缓存中用于处理未命中的缓存访问命令的模块,如果缓存流水线在对当前缓存访问命令进行处理时,如果检测到缓存中未存储有与该访问命令对应的数据时,该当前缓存访问命令则可以作为未命中命令,此时缓存流水线还可以进一步地将当前缓存访问命令发送至MSHR模块,由MSHR模块返回相应的数据至缓存流水线。
步骤S402,通过MSHR模块基于当前缓存访问命令对应的当前缓存访问地址,查询写缓冲区;
步骤S403,若写缓冲区中存储有与当前缓存访问地址相适应的数据,则从写缓冲区中获取当前缓存访问地址相适应的数据,并将该数据返回缓存流水线。
写缓冲区则是缓存中用于存储写通数据以及回写数据的缓冲区域,在MSHR模块接收到当前缓存访问命令后,则可以基于当前缓存访问命令所对应的访问地址,即当前缓存访问地址,对写缓冲区进行查询,来检测写缓冲区中是否存储有与当前缓存访问地址相适应的数据,例如可以是通过将当前缓存访问地址发送至写缓冲区中存储有地址信息的寄存器,该寄存器中可以存储有写缓冲区中存储的各个数据对应的地址信息,通过判断该寄存器中是否存储有当前缓存访问地址相匹配的地址信息,来确定写缓冲区是否存储有与当前缓存访问地址相适应的数据,如果存在该数据,MSHR模块则可以从写缓冲区中得到上述数据,并将其返回至缓存流水线中。
本实施例中,在缓存流水线中出现未命中的缓存访问命令时,MSHR模块则可以基于该缓存访问命令的缓存访问地址,从写缓冲区中检测是否存储有与当前缓存访问地址相适应的数据,如果是,则可以直接从写缓冲区中得到上述数据,返回至缓存流水线。相比于需要MSHR模块直接从内存中读取数据,通过写缓冲区读取数据可以提高数据获取的效率,从而进一步提高缓存访问命令的处理效率。
另外,步骤S402之后,还可以包括:若写缓冲区中未存储有与当前缓存访问地址相适应的数据,则从内存中获取当前缓存访问地址相适应的数据,并将该数据返回缓存流水线。
而如果写缓冲区中未存储有与当前缓存访问地址相适应的数据,那么为了使未命中的缓存访问命令可以被处理,本实施例中,MSHR模块还可以进一步从内存中得到与该缓存访问地址相匹配的内存数据,并将该数据返回至缓存流水线,来对缓存访问命令进行处理。
而如果写缓冲区中未存储有与当前缓存访问地址相适应的数据,本实施例MSHR模块还可以进一步从内存中得到与当前缓存访问地址相适应的数据,返回至缓存流水线,从而可以保证处理未命中的缓存访问命令的可实现性。
在一个应用实例中,还提供了一种用于缓存的同地址访问命令保序的方法,该缓存的结构框图可如图5所示,通过对输入的缓存的请求命令进行队列管理,以及对写缓冲区进行类似于内容可寻址存储器CAM的查找,在不损失缓存访问性能的前提下,解决了同地址命令保序的问题。具体实现过程如下:
其中,缓存请求命令队列管理示意图如图6所示。假设支持的未命中缓存访问命令的数量为64,输入的同地址访问命令进相同的队列,不同地址的访问命令进不同的队列。当输入的64个访问命令均为不同地址时,需要64个队列。同时为节省资源,64个队列共享一个深度为64的命令缓冲区,并且采用链表进行管理,每个队列对应一条链表。每个循环从64条链表中的非空闲链中调度出一个命令出队,送入缓存流水线进行处理。同一条链表在上一个进入流水线的命令处理完成前,不再调度该条链表的命令,因此可以确保流水线中不存在同地址的命令,从而避免了同地址命令在流水线上查找回避状态保存寄存器MSHR引入的时序问题。
同时,为了提高缓存访问的效率,同一条链表中的命令可以进行加速处理,如图7a所示。链表0中有5个同地址的访问命令,命令0~2为读命令,命令3为写命令,命令4为读命令,采用加速处理方式,命令0从流水线中读回数据后,链表中后续的读命令(命令1~命令2)不再送入流水线,直接使用第一个命令读回的数据,写命令3需要送入流水线继续进行处理,命令4直接使用命令3的写数据作为读回的数据,不再送入流水线处理。采用如图7a所示的加速处理方式,相对于未使用加速处理,即如图7b所示的处理方式,节省了3次读访问的延迟。
当64个未命中缓存访问命令分散在不同的队列中时,本方案的整体调度结果如图8a所示。当非同地址的命令数量可以覆盖未命中的读访问的延迟时,该方式与处理64个非同地址的访问命令性能相当。与直接暂缓同地址命令的处理方式,即图8b所示的方式相比,本应用实例访问效率可以获得极大提升。
引入写缓冲区可以提高直写操作的写性能,也可以提升回写操作时,驱逐脏行的性能。然而引入写缓冲区后,当发生内存访问未命中时,若采用回写策略且替换行是脏行的,把脏行驱逐到写缓冲区后,后续的读未命中命令有可能与写缓冲区中的数据是同地址的,此时回避状态保存寄存器通过高级微控制器总线发送读请求,写缓冲区通过高级微控制器总线发送写请求,两者在总线上的处理是完全并行的,总线无法保证两者到达下游内存的顺序,该场景是入口队列调度方式不能解决的同地址保序问题。如图9所示,为解决该场景的保序问题,在写缓冲区中引入了类似于内容可寻址存储器CAM存储机制来存储所有写完成命令(假设缓存输出的总线写完成命令为16,则需要记录16条写命令。当从回避状态保存寄存器中调度出一条读未命中命令后,首先查找写缓冲区,如果写缓冲区中存在同地址的数据,则直接读取写缓冲区中的数据,返回给缓存请求接口,不再通过向下游内存发送读请求。若写缓冲区中不存在同地址的数据,需要继续通过总线向下游内存发起读请求。该方式不但解决了同地址保序问题,也减小了对下游内存的访问频率,提高了访问效率。
上述应用实例中,通过增加缓存入口的队列调度机制,以及在写缓冲区中引入类似于内容可寻址存储器CAM的查找机制,可以在不影响缓存访问性能的前提下,高效的解决非阻塞缓存中同地址未命中命令的保序问题,同时避免了在缓存流水线中引入过于复杂的逻辑导致的时序问题。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的缓存访问命令处理方法的缓存访问命令处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个缓存访问命令处理装置实施例中的具体限定可以参见上文中对于缓存访问命令处理方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种缓存访问命令处理装置,包括:访问命令获取模块1001、命令队列输入模块1002、和当前命令处理模块1003、调度命令确定模块1004和调度命令处理模块1005,其中:
访问命令获取模块1001,用于获取待处理的缓存访问命令,以及缓存访问命令对应的缓存访问地址;
命令队列输入模块1002,用于将缓存访问地址相同的缓存访问命令输入同一队列中;
当前命令处理模块1003,用于在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入缓存流水线中的当前缓存访问命令,并将当前缓存访问命令对应的响应数据返回;
调度命令确定模块1004,用于在当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到响应数据的情况下,获取当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
调度命令处理模块1005,用于根据待调度缓存访问命令的命令类型,确定调度进入缓存流水线的下一个缓存访问命令。
在一个实施例中,调度命令处理模块1005,进一步用于在命令类型为读命令的情况下,不将待调度缓存访问命令发送至缓存流水线,并将当前缓存访问命令对应的响应数据,作为待调度缓存访问命令对应的响应数据。
在一个实施例中,调度命令处理模块1005,进一步用于在命令类型为写命令的情况下,将待调度缓存访问命令发送至缓存流水线,并通过缓存流水线获取待调度缓存访问命令对应的响应数据,并将待调度缓存访问命令对应的响应数据返回。
在一个实施例中,当前命令处理模块1003,还用于在未接收到响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入缓存流水线中。
在一个实施例中,缓存访问命令处理装置,还包括:未命中命令处理模块,用于若当前缓存访问命令为未命中命令,则通过缓存流水线将当前缓存访问命令发送至MSHR模块;通过MSHR模块基于当前缓存访问命令对应的当前缓存访问地址,查询写缓冲区;若写缓冲区中存储有与当前缓存访问地址相适应的数据,则从写缓冲区中获取当前缓存访问地址相适应的数据,并将该数据返回缓存流水线。
在一个实施例中,未命中命令处理模块,还用于若写缓冲区中未存储有与当前缓存访问地址相适应的数据,则从内存中获取当前缓存访问地址相适应的数据,并将该数据返回缓存流水线。
上述缓存访问命令处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器和通信接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种缓存访问命令处理方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (16)

1.一种缓存访问命令处理系统,其特征在于,包括:缓存队列管理模块,以及缓存流水线;其中,
所述缓存队列管理模块,用于获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;将缓存访问地址相同的缓存访问命令输入同一队列中,并在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入所述缓存流水线中;
所述缓存流水线,用于处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回至所述缓存队列管理模块;
所述缓存队列管理模块,用于在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
2.根据权利要求1所述的系统,其特征在于,
所述缓存队列管理模块,进一步用于在所述命令类型为读命令的情况下,不将所述待调度缓存访问命令发送至所述缓存流水线,并将所述当前缓存访问命令对应的响应数据,作为所述待调度缓存访问命令对应的响应数据。
3.根据权利要求1所述的系统,其特征在于,
所述缓存队列管理模块,进一步用于在所述命令类型为写命令的情况下,将所述待调度缓存访问命令发送至所述缓存流水线;
所述缓存流水线,进一步用于获取所述待调度缓存访问命令对应的响应数据,并将所述待调度缓存访问命令对应的响应数据返回至所述缓存队列管理模块。
4.根据权利要求1至3任一项所述的系统,其特征在于,
所述缓存队列管理模块,还用于在未接收到所述响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入所述缓存流水线中。
5.根据权利要求1所述的系统,其特征在于,所述系统还包括:MSHR模块以及写缓冲区;其中,
所述缓存流水线,进一步用于若所述当前缓存访问命令为未命中命令,则将所述当前缓存访问命令发送至所述MSHR模块;
所述MSHR模块,用于基于所述当前缓存访问命令对应的当前缓存访问地址,查询所述写缓冲区;若所述写缓冲区中存储有与所述当前缓存访问地址相适应的数据,则从所述写缓冲区中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
6.根据权利要求5所述的系统,其特征在于,所述MSHR模块,还用于若所述写缓冲区中未存储有与所述当前缓存访问地址相适应的数据,则从内存中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
7.一种缓存访问命令处理方法,其特征在于,所述方法包括:
获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
将缓存访问地址相同的缓存访问命令输入同一队列中;
在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
8.根据权利要求7所述的方法,其特征在于,所述根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令,包括:
在所述命令类型为读命令的情况下,不将所述待调度缓存访问命令发送至所述缓存流水线,并将所述当前缓存访问命令对应的响应数据,作为所述待调度缓存访问命令对应的响应数据。
9.根据权利要求7所述的方法,其特征在于,所述根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令,包括:
在所述命令类型为写命令的情况下,将所述待调度缓存访问命令发送至所述缓存流水线,并通过所述缓存流水线获取所述待调度缓存访问命令对应的响应数据,并将所述待调度缓存访问命令对应的响应数据返回。
10.根据权利要求7至9任一项所述的方法,其特征在于,所述方法还包括:
在未接收到所述响应数据的情况下,从除当前缓存访问命令对应的当前缓存访问队列以外的其他非空闲的队列中,调度一个其他缓存访问命令进入所述缓存流水线中。
11.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若所述当前缓存访问命令为未命中命令,则通过所述缓存流水线将所述当前缓存访问命令发送至MSHR模块;
通过所述MSHR模块基于所述当前缓存访问命令对应的当前缓存访问地址,查询写缓冲区;
若所述写缓冲区中存储有与所述当前缓存访问地址相适应的数据,则从所述写缓冲区中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
12.根据权利要求11所述的方法,其特征在于,所述查询写缓冲区之后,还包括:
若所述写缓冲区中未存储有与所述当前缓存访问地址相适应的数据,则从内存中获取所述当前缓存访问地址相适应的数据,并将该数据返回所述缓存流水线。
13.一种缓存访问命令处理装置,其特征在于,所述装置包括:
访问命令获取模块,用于获取待处理的缓存访问命令,以及所述缓存访问命令对应的缓存访问地址;
命令队列输入模块,用于将缓存访问地址相同的缓存访问命令输入同一队列中;
当前命令处理模块,用于在一时钟周期内,从多个非空闲的所述队列中调度一个当前缓存访问命令进入缓存流水线中,通过缓存流水线处理进入所述缓存流水线中的当前缓存访问命令,并将所述当前缓存访问命令对应的响应数据返回;
调度命令确定模块,用于在所述当前缓存访问命令对应的当前缓存访问队列包含多个缓存访问命令,并且接收到所述响应数据的情况下,获取所述当前缓存访问队列中包含的缓存访问命令中,处理顺序在当前缓存访问命令之后的待调度缓存访问命令;
调度命令处理模块,用于根据所述待调度缓存访问命令的命令类型,确定调度进入所述缓存流水线的下一个缓存访问命令。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求7至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求7至12中任一项所述的方法的步骤。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求7至12中任一项所述的方法的步骤。
CN202210283222.3A 2022-03-22 2022-03-22 缓存访问命令处理系统、方法、装置、设备和存储介质 Pending CN115048142A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210283222.3A CN115048142A (zh) 2022-03-22 2022-03-22 缓存访问命令处理系统、方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210283222.3A CN115048142A (zh) 2022-03-22 2022-03-22 缓存访问命令处理系统、方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN115048142A true CN115048142A (zh) 2022-09-13

Family

ID=83157278

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210283222.3A Pending CN115048142A (zh) 2022-03-22 2022-03-22 缓存访问命令处理系统、方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN115048142A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257191A (zh) * 2023-05-16 2023-06-13 北京象帝先计算技术有限公司 存储器的控制器、组件、电子设备及命令调度方法
CN117573573A (zh) * 2024-01-15 2024-02-20 北京开源芯片研究院 缓存请求的处理方法、装置、设备及存储介质
CN117609110A (zh) * 2023-12-19 2024-02-27 北京开源芯片研究院 一种缓存方法、高速缓存、电子设备及可读存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257191A (zh) * 2023-05-16 2023-06-13 北京象帝先计算技术有限公司 存储器的控制器、组件、电子设备及命令调度方法
CN116257191B (zh) * 2023-05-16 2023-10-20 北京象帝先计算技术有限公司 存储器的控制器、组件、电子设备及命令调度方法
CN117609110A (zh) * 2023-12-19 2024-02-27 北京开源芯片研究院 一种缓存方法、高速缓存、电子设备及可读存储介质
CN117573573A (zh) * 2024-01-15 2024-02-20 北京开源芯片研究院 缓存请求的处理方法、装置、设备及存储介质
CN117573573B (zh) * 2024-01-15 2024-04-23 北京开源芯片研究院 缓存请求的处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN115048142A (zh) 缓存访问命令处理系统、方法、装置、设备和存储介质
US9720839B2 (en) Systems and methods for supporting a plurality of load and store accesses of a cache
CN110275841B (zh) 访问请求处理方法、装置、计算机设备和存储介质
US9535842B2 (en) System and method for performing message driven prefetching at the network interface
US9405691B2 (en) Locating cached data in a multi-core processor
US20110066830A1 (en) Cache prefill on thread migration
RU2438165C2 (ru) Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша
US10956328B2 (en) Selective downstream cache processing for data access
CN105302840B (zh) 一种缓存管理方法与设备
CN111309805B (zh) 数据库的数据读写方法及装置
WO2016015583A1 (zh) 一种内存管理方法、装置以及内存控制器
CN109842621A (zh) 一种减少token存储数量的方法及终端
US20190163394A1 (en) Expandable buffer for memory transactions
US8661169B2 (en) Copying data to a cache using direct memory access
CN116996449A (zh) 数据报文处理系统、方法、计算机设备、存储介质
CN114840445A (zh) 内存访问方法和装置
US20040019764A1 (en) System and method for processing data in an integrated circuit environment
CN114924794B (zh) 一种存储部件的发射队列的地址存储、调度方法和装置
CN110727405A (zh) 数据处理方法、装置、电子设备及计算机可读介质
CN116701246A (zh) 一种提升缓存带宽的方法、装置、设备及存储介质
CN109697037A (zh) 节省本地dram的方法、装置、计算机设备及存储介质
WO2014169874A1 (zh) 表项管理装置、表项管理方法及计算机存储介质
CN117631955A (zh) 数据缩减方法、装置及系统
JP6059360B2 (ja) バッファ処理方法及び装置
US11874767B2 (en) Memory partitions for processing entities

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