CN117389915B - 缓存系统、读命令调度方法、片上系统及电子设备 - Google Patents

缓存系统、读命令调度方法、片上系统及电子设备 Download PDF

Info

Publication number
CN117389915B
CN117389915B CN202311695123.7A CN202311695123A CN117389915B CN 117389915 B CN117389915 B CN 117389915B CN 202311695123 A CN202311695123 A CN 202311695123A CN 117389915 B CN117389915 B CN 117389915B
Authority
CN
China
Prior art keywords
read command
cache
command
read
selection module
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
Application number
CN202311695123.7A
Other languages
English (en)
Other versions
CN117389915A (zh
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.)
Beijing Xiangdixian Computing Technology Co Ltd
Original Assignee
Beijing Xiangdixian Computing Technology 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 Beijing Xiangdixian Computing Technology Co Ltd filed Critical Beijing Xiangdixian Computing Technology Co Ltd
Priority to CN202311695123.7A priority Critical patent/CN117389915B/zh
Publication of CN117389915A publication Critical patent/CN117389915A/zh
Application granted granted Critical
Publication of CN117389915B publication Critical patent/CN117389915B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供一种缓存系统、读命令调度方法、片上系统、电子组件及电子设备,该方法包括:第一选择模块从所述命令队列取出第一读命令;缓存控制器处理所述第一读命令,并在确定所述命令队列中当前存在第二读命令的情况下,向所述第二选择模块发送所述第二读命令的标识信息;所述第二读命令的缓存cache检索结果与所述第一读命令的cache检索结果相反;第二选择模块根据所述标识信息从所述命令队列中取出所述第二读命令交由所述缓存控制器并行处理。通过该方案,可减少读命令被缓存系统处理的等待时长,有利于提高数据访问效率,提升整体性能。

Description

缓存系统、读命令调度方法、片上系统及电子设备
技术领域
本公开涉及缓存技术领域,尤其涉及一种缓存系统、读命令调度方法、片上系统、电子组件及电子设备。
背景技术
芯片内一般设置有上游master(主机端或上游设备)和下游主存。上游master可以是CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,GPU,图形处理器)、DMA(Direct Memory Access,直接存储器访问)等组件。下游主存一般是位于芯片内的共享存储单元,各个具备访问权限的上游master均可发起针对下游主存的读写访问请求。
现有技术中,一般在上游master和下游主存之间设置缓存(cache)系统来提高数据访问效率。如此,上游master如果有访问下游主存的需求,会先在cache中进行检索。如果命中(hit)缓存行(cacheline)缓存则直接从cache中返回数据;如果未命中(miss)cacheline,需要从下游主存中读取数据返回到上游master。
缓存系统一般按照上游master发送读访问请求(读命令)的发送顺序来处理各个读命令,即需要等当前笔读命令读取cache的操作执行完之后再执行下一笔读命令。具体为先判断本笔读命令是hit还是miss,如果是一笔hit的读命令,需要从cache中返回数据给上游master后才能处理下一笔读命令;如果是一笔miss的读命令,需要向下游主存发送访问请求后才能处理下一笔读命令。
然而,由于hit的读命令与miss的读命令所获取的数据的提供源不同,那么对于任一笔读命令,等待与其cache检索结果不同的前一笔读命令被缓存系统处理完后再处理本笔读命令的等待时间是不必要的,浪费了时间资源,影响了整体数据访问性能。尤其对于前一笔读命令是突发长度(burst length)不为零的突发传输且hit,当前笔读命令为miss的情况,对数据访问性能的影响更甚。
发明内容
本公开的目的是提供一种缓存系统、读命令调度方法、片上系统、电子组件及电子设备,可减少读命令被缓存系统处理的等待时长,有利于提高数据访问效率,提升整体性能。
根据本公开的一个方面,提供一种缓存系统,包括缓存控制器、第一选择模块、第二选择模块以及用于缓存上游设备发送的未处理的读命令的命令队列;所述第一选择模块被配置为:从所述命令队列取出第一读命令;所述缓存控制器被配置为:处理所述第一读命令,并在确定所述命令队列中当前存在第二读命令的情况下,向所述第二选择模块发送所述第二读命令的标识信息;所述第二读命令的缓存cache检索结果与所述第一读命令的cache检索结果相反;所述第二选择模块被配置为:根据所述标识信息从所述命令队列中取出所述第二读命令交由所述缓存控制器并行处理。
本公开一种可行的实现方式中,所述缓存系统还包括cache,所述cache包括缓存行cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
在所述第一cache检索结果为未命中miss状态,所述第二cache检索结果为命中hit状态的情况下,所述缓存控制器处理所述第一读命令及所述第二读命令,具体被配置为:将所述第一读命令转发给下游主存,并从所述第二读命令所命中的cacheline中读取数据返回给所述上游设备。
本公开一种可行的实现方式中,所述缓存系统还包括cache,所述cache包括cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
在所述第一cache检索结果为hit状态,所述第二cache检索结果为miss状态的情况下,所述缓存控制器处理所述第一读命令及所述第二读命令,具体被配置为:从所述第一读命令所命中的cacheline中读取数据返回给所述上游设备,并将所述第二读命令转发给下游主存。
本公开一种可行的实现方式中,所述第一选择模块从所述命令队列取出第一读命令,具体被配置为:从所述命令队列的队列末取出第一读命令;
相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,具体被配置为:从所述命令队列的队列末开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。
本公开一种可行的实现方式中,所述第一选择模块还被配置为:在前一个第一读命令已被处理完成的情况下,所述第一选择模块从所述命令队列取出下一个第一读命令。
本公开一种可行的实现方式中,所述前一个第一读命令已被处理完成,包括:前一个第一读命令已被处理完且前一个第二读命令正在处理,或者前一个第一读命令与前一个第二读命令均已被处理完。
本公开一种可行的实现方式中,所述第一读命令和/或所述第二读命令为突发长度不为0的突发传输命令。
本公开一种可行的实现方式中,所述缓存控制器还被配置为:通过所述读命令所携带地址中的tag字段来判断所述读命令的cache检索结果为hit状态或者为miss状态。
根据本公开的另一方面,还提供一种读命令调度方法,应用于缓存系统,所述缓存系统包括缓存控制器、第一选择模块、第二选择模块以及用于缓存上游设备发送的未处理的读命令的命令队列;所述方法包括:所述第一选择模块从所述命令队列取出第一读命令;所述缓存控制器处理所述第一读命令,并在确定所述命令队列中当前存在第二读命令的情况下,向所述第二选择模块发送所述第二读命令的标识信息;所述第二读命令的缓存cache检索结果与所述第一读命令的cache检索结果相反;所述第二选择模块根据所述标识信息从所述命令队列中取出所述第二读命令交由所述缓存控制器并行处理。
本公开一种可行的实现方式中,所述缓存系统还包括cache,所述cache包括缓存行cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
在所述第一cache检索结果为未命中miss状态,所述第二cache检索结果为命中hit状态的情况下,所述缓存控制器处理所述第一读命令及所述第二读命令,包括:将所述第一读命令转发给下游主存,并从所述第二读命令所命中的cacheline中读取数据返回给所述上游设备。
本公开一种可行的实现方式中,所述缓存系统还包括cache,所述cache包括cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
在所述第一cache检索结果为hit状态,所述第二cache检索结果为miss状态的情况下,所述缓存控制器处理所述第一读命令及所述第二读命令,包括:从所述第一读命令所命中的cacheline中读取数据返回给所述上游设备,并将所述第二读命令转发给下游主存。
本公开一种可行的实现方式中,所述第一选择模块从所述命令队列取出第一读命令,包括:从所述命令队列的队列末取出第一读命令;
相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,包括:从所述命令队列的队列末开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。
本公开一种可行的实现方式中,所述方法还包括:第一选择模块在前一个第一读命令已被处理完成的情况下,从所述命令队列取出下一个第一读命令。
本公开一种可行的实现方式中,所述前一个第一读命令已被处理完成,包括:前一个第一读命令已被处理完且前一个第二读命令正在处理,或者前一个第一读命令与前一个第二读命令均已被处理完。
本公开一种可行的实现方式中,所述第一读命令和/或所述第二读命令为突发长度不为0的突发传输命令。
本公开一种可行的实现方式中,所述方法还包括:所述缓存控制器通过所述读命令所携带地址中的tag字段来判断所述读命令的cache检索结果为hit状态或者为miss状态。
根据本公开的另一方面,还提供一种片上系统(System on Chip,SOC),该片上系统包括上述缓存系统。在一些使用场景下,该SOC的产品形式体现为GPU(GraphicsProcessing Unit,图形处理器) SOC;在另一些使用场景下,该SOC的产品形式体现为CPU(Central Processing Unit,中央处理器) SOC。
根据本公开的另一方面,还提供一种电子组件,该电子组件包括上述任一实施例中所述的片上系统SOC。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
根据本公开的另一方面,还提供一种电子设备,包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
附图说明
图1是本公开一个实施例的地址信息分区示意图;
图2是本公开一个实施例的缓存系统的结构示意图;
图3是本公开一个实施例的命令队列的示意图;
图4为本公开一个实施例的读命令调度方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任一和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
现有技术中,缓存系统一般按照上游master发送读命令时的发送顺序来处理各个读命令,即需要等当前笔读命令读取cache的操作执行完之后再执行下一笔读命令。具体为先判断本笔读命令是hit还是miss,如果是一笔hit的读命令,需要从cache中返回数据给上游master后才能处理下一笔读命令;如果是一笔miss的读命令,需要向下游主存发送访问请求后才能处理下一笔读命令。
然而,由于hit的读命令与miss的读命令所获取的数据的提供源不同,那么对于任一笔读命令,等待与其cache检索结果不同的前一笔读命令被缓存系统处理完后再处理本笔读命令的等待时间是不必要的,浪费了时间资源,影响了整体数据访问性能。尤其对于前一笔读命令是突发长度(burst length)不为零的突发传输且hit,当前笔读命令为miss的情况,对数据访问性能的影响更甚。
本公开的目的是提供一种读命令调度方案,可减少读命令被缓存系统处理的等待时长,有利于提高数据访问效率,提升整体性能下面将针对本公开进行介绍。
首先,对本公开所涉及到的部分概念进行简要说明。
缓存系统的上游设备,可以是CPU Core、CPU Core、DMA等Master设备。
缓存系统可通过总线,分别与上游设备以及下游主存连接,相应的,三者交互过程中所产生的地址信息即为符合对应总线协议的地址,例如采用AXI总线进行连接,那么交互过程所产生的地址信息即为AXI地址。当然,可以理解,缓存系统也可以通过其他总线与上下游组件进行连接,相应的,三者交互过程中所产生的地址信息即为符合其他总线协议的地址。
一般采用DRAM作为下游主存,DRAM可以是DDR、GDDR、LPDDR等存储器。地址映射,即是下游主存内部基于符合总线协议的地址映射规则,将上游用于访问下游DRAM的地址信息,映射成DRAM内部的存储颗粒的地址信息。
缓存系统一般包括缓存控制器(Cache Controller)以及缓存(Cache),Cache包括多个缓存行(cacheline)。当然,值得指出的是,本公开实施例中所提及到的Cache,可以是一级缓存,也可以是多级缓存。本公开所涉及的方案,可以适用于Cache的各种映射方式。
在本公开实施例中,当上游设备有针对下游主存发起读数据的需求时,会发起携带地址信息的读命令。
与现有技术类似的,该读命令首先被缓存系统获取到,缓存系统中的CacheController基于读命令所携带的地址信息,检索该笔读命令是否命中cacheline,进而得到该笔读命令的检索结果。
其中,地址信息一般可以分为多个区域,如图1所示,可以分为字节偏移、块偏移、索引index以及标识tag。字节偏移代表了读取一个数据的大小,称为一个cache block的大小,如字节偏移地址为6bits,则代表一个cache block大小为64B;块偏移代表要读取一个cacheline中的哪个cache block;索引可以理解为对应哪条cacheline;其余高位比特代表本cacheline的tag。
在检索过程中,Cache Controller基于index确定出cacheline后,执行针对cacheline的检索。如果自身tag与确定出的cacheline的tag一致则hit缓存行,读命令的cache检索结果为hit状态,否则表示该笔读命令miss缓存行,即读命令的cache检索结果为miss状态。
当然,上述基于地址信息的划分以及对缓存行的寻址举例,仅作示例性说明,其具体寻址过程此处不再赘述。此外,现有技术中对缓存行的其它寻址方式,也适用于本公开。
前文提及,对于hit状态的读命令,Cache Controller直接在命中的缓存行中获取数据返回给上游设备;对于miss状态的读命令,Cache Controller将其转发给下游主存,进而由下游主存返回数据给上游设备。也就是说,hit的读命令与miss的读命令所获取的数据的提供源不同,一个是cache,另一个是下游主存(本公开后续实施例中以DDR为例)。
对于任一笔读命令,为了降低等待与其cache检索结果不同的前一笔读命令被缓存系统处理完后再处理本笔读命令的等待时间,请参照图2,本公开一个实施例提出一种缓存系统,该缓存系统包括缓存控制器(Cache Controller)、Cache、第一选择模块、第二选择模块、命令队列以及其他组件(如果必要,例如寄存器)。
该缓存系统与上游设备连接,且与下游主存连接,例如通过AXI总线连接。
其中,命令队列用于缓存上游设备发来的未处理的读命令,例如CacheController获取到上游设备发送的未处理的读命令后,将其缓存到命令队列中。
其中,先进入命令队列的读命令可以存储在更靠命令队列的队列末的位置(第一个读命令存储在队列末),后进入命令队列的读命令可以存储在更靠近命令队列的队列首的位置。当然,在另一些实施方式中,先进入命令队列的读命令可以存储在更靠命令队列的队列首的位置(第一个读命令存储在队列首),后进入命令队列的读命令可以存储在更靠近命令队列的队列末的位置。
可选的,命令队列可以包括多个条目entry,针对先进入命令队列的读命令可以存储在更靠命令队列的队列末的位置的情况,如图3所示,假设命令队列可以包括16个entry,编号从头到尾分别为entry15~entry0。其中,最先被缓存到命令队列的读命令保存在entry0,下一个被缓存到命令队列的读命令保存在entry1,并以此类推进行存储。若位于entry0的读命令被取出,相应的原来各个读命令所处的entry位置依次后移,例如原处于entry1的读命令从entry1顺移至entry0,原处于entry2的读命令被顺移至entry1,以此类推。
其中,当命令队列内存在有效读命令的情况下,所述第一选择模块被配置为:从命令队列取出第一读命令并交由缓存控制器进行处理。缓存控制器被配置为:处理第一读命令,并在确定命令队列中当前存在第二读命令的情况下,向第二选择模块发送第二读命令的标识信息。第二选择模块被配置为:根据标识信息从命令队列中取出第二读命令交由缓存控制器并行处理。
值得指出的是,第二读命令是命令队列中,其cache检索结果与第一读命令的cache检索结果相反的有效读命令。cache检索结果的确定过程,请参照前述相关描述。
在本公开实施例中,通过两套不同的命令选择逻辑(即第一选择模块和第二选择模块)来相互配合,进而可以在同一时钟周期内选择cache检索结果相反的两个读命令交由缓存控制器进行处理。由于第一读命令的cache检索结果与第二读命令的cache检索结果相反,所以为第一读命令和第二读命令提供数据的数据源不同,分别为cache和下游主存,例如DDR。那么对于缓存控制器来说,当把数据源为下游主存的读命令发送给下游主存后,可以通过自身用于对接cache的硬件资源来接收cache所反馈的数据,还可以通过自身用于对接下游主存的硬件资源来接收下游主存所反馈的数据,进而可以保证两个不同的数据源在同一时钟周期内,并行地为两个读命令提供数据,如此可缩短多个连续读命令之间等待被执行的等待时长,提升了cache的执行效率,有利于提高数据访问效率和整体性能。
此外,在一些实施方式中,上述第一读命令和/或第二读命令可以为突发长度可选的,所述第一读命令和/或所述第二读命令为突发长度不为0的突发传输命令。也就是说,本公开实施例所提供的方案同样适用于突发传输。
一般而言,上游发来的读命令的突发长度(burst length)不为零,即一笔读命令可能从cache中读取多笔缓存块(cache block)的数据,这样执行一笔读命令所消耗的时间也随着待读取block的数目的增多而增加。现假设当前笔读命令的cache检索结果为hit状态,且其burst length不为零,下一笔读命令的cache检索结果为miss状态,由于下一笔读命令与当前笔读命令所获取的数据的提供源不同,那么对于下一笔cache检索结果为miss的读命令来说,其等待前一笔读命令读取多个cache block的时间开销将会明显增加。
而在本公开实施例中,即使第一读命令或第二读命令是时间开销较大的突发长度传输,在执行本公开实施例所对应的方案后,也可保证第一读命令与第二读命令的并行执行,进而提高数据访问效率。
为便于描述,本公开后文中,将第一读命令的cache检索结果简称为第一cache检索结果,将第二读命令的cache检索结果简称为第二cache检索结果。相应的,当第一cache检索结果为miss状态的情况下,第二cache检索结果为hit状态;当第一cache检索结果为hit状态的情况下,第二cache检索结果为miss状态。
在一些实施方式中,在第一cache检索结果为miss状态,第二cache检索结果为hit状态的情况下,与第一读命令对应的数据提供源为下游主存,与第二读命令对应的数据提供源为cache中被命中的cacheline。
相应的,缓存控制器处理第一读命令,即是将第一读命令转发给下游主存;缓存控制器处理第二读命令,即是将从所述第二读命令所命中的cacheline中读取数据返回给上游设备。
当然,缓存控制器将第一读命令转发给下游主存后,后续将由下游主存主动反馈对应数据给缓存控制器,由缓存控制器调用自身用于对接下游主存的硬件资源来接收下游主存所反馈的数据,并反馈给上游设备。
在一些实施方式中,可能第一选择模块所选择的第一读命令,可能是cache检索结果为hit状态的读命令,那么在第一cache检索结果为hit状态,第二cache检索结果为miss状态的情况下,与第一读命令对应的数据提供源为cache中被命中的cacheline,与第二读命令对应的数据提供源为下游主存。
相应的,缓存控制器处理第一读命令及第二读命令,具体被配置为:从第一读命令所述命中的cacheline中读取数据返回给上游设备,并将第二读命令转发给下游主存。
当然,缓存控制器将第二读命令转发给下游主存后,后续将由下游主存主动反馈对应数据给缓存控制器,由缓存控制器调用自身用于对接下游主存的硬件资源来接收下游主存所反馈的数据,并反馈给上游设备。
具体的,在本公开实施例中,针对每个读命令,缓存系统还可获取到对应的处理状态,例如正在被处理,或者已处理完成。
在一些可选的实施方式中,针对每个读命令,在其被处理完,例如将相应的数据反馈到上游设备时,可生成相应的中断信息,以便缓存系统可获知到该读命令的处理状态。
在另一些可选的实施方式中,缓存系统也可在获取到对应读命令所要读取的数据后,认定该读命令已处理完成。
在一些实施方式中,第一选择模块还被配置为:在前一个第一读命令已被处理完成的情况下,第一选择模块从命令队列取出下一个第一读命令,并交由缓存控制器。
其中,前一个第一读命令已被处理完成,包括:前一个第一读命令已被处理完且前一个第二读命令正在处理,或者前一个第一读命令与前一个第二读命令均已被处理完。
也就是说,在本公开实施例中,当其中一个命令选择模块所选取的读命令处理完成后,需要判断另一个命令选择模块当前所选取的读命令是否正在被执行,如果有读命令正在被执行,则选择与其cache检索结果相反的读命令来执行。
此外,在一些实施方式中,第一选择模块与第二选择模块分别选择对应的第一读命令与第二读命令时,可以是从命令队列中按照随机顺序选择符合要求的命令。
在另一些实施方式中,上述第一选择模块从命令队列取出第一读命令时,具体被配置为:从命令队列的队列末取出第一读命令;相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,具体被配置为:从所述命令队列的队列末开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。也就是说,第一选择模块与第二选择模块,均是从队列末开始选择读命令。
当然,对于先进入命令队列的读命令可以存储在更靠命令队列的队列首的位置,后进入命令队列的读命令可以存储在更靠近命令队列的队列末的位置的情况,在一些实施方式下,上述第一选择模块从命令队列取出第一读命令时,具体被配置为:从命令队列的队列首取出第一读命令;相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,具体被配置为:从所述命令队列的队列首开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。
也就是说,在先进入命令队列的读命令可以存储在更靠近命令队列队列首的位置的情况下,第一选择模块与第二选择模块,均是从队列末开始选择读命令。
可选的,本公开实施例中所涉及到的读命令的标识信息,可以是读命令在命令队列中的entry标识,例如entry号,也可以是读命令在被生成时所携带的命令ID,本公开对其不做具体的限定。
此外,基于类似的发明构思,本公开实施例还提供一种读命令调度方法,应用于缓存系统。所述缓存系统包括缓存控制器、第一选择模块、第二选择模块、缓存以及用于缓存上游设备发送的未处理的读命令的命令队列。请参照图4,该读命令调度方法包括以下步骤。
步骤S110:第一选择模块从命令队列取出第一读命令;
步骤S120:缓存控制器处理所述第一读命令,并在确定所述命令队列中当前存在第二读命令的情况下,向所述第二选择模块发送所述第二读命令的标识信息;
步骤S130:第二选择模块根据所述标识信息从所述命令队列中取出所述第二读命令交由所述缓存控制器并行处理。
所述第二读命令的缓存cache检索结果与所述第一读命令的cache检索结果相反。
本公开一种可行的实现方式中,所述缓存系统还包括cache,所述cache包括缓存行cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
在所述第一cache检索结果为未命中miss状态,所述第二cache检索结果为命中hit状态的情况下,所述缓存控制器处理所述第一读命令及所述第二读命令,包括:将所述第一读命令转发给下游主存,并从所述第二读命令所命中的cacheline中读取数据返回给所述上游设备。
本公开一种可行的实现方式中,所述缓存系统还包括cache,所述cache包括cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
在所述第一cache检索结果为hit状态,所述第二cache检索结果为miss状态的情况下,所述缓存控制器处理所述第一读命令及所述第二读命令,包括:从所述第一读命令所命中的cacheline中读取数据返回给所述上游设备,并将所述第二读命令转发给下游主存。
本公开一种可行的实现方式中,所述第一选择模块从所述命令队列取出第一读命令,包括:从所述命令队列的队列末取出第一读命令;
相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,包括:从所述命令队列的队列末开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。
本公开一种可行的实现方式中,所述方法还包括:第一选择模块在前一个第一读命令已被处理完成的情况下,从所述命令队列取出下一个第一读命令。
本公开一种可行的实现方式中,所述前一个第一读命令已被处理完成,包括:前一个第一读命令已被处理完且前一个第二读命令正在处理,或者前一个第一读命令与前一个第二读命令均已被处理完。
本公开一种可行的实现方式中,所述第一读命令和/或所述第二读命令为突发长度不为0的突发传输命令。
本公开一种可行的实现方式中,所述方法还包括:所述缓存控制器通过所述读命令所携带地址中的tag字段来判断所述读命令的cache检索结果为hit状态或者为miss状态。
此外,本公开实施例还提供一种SOC,该SOC包括上述任一实施例中的缓存系统。在一些使用场景下,该SOC的产品形式体现为GPU(Graphics Processing Unit,图形处理器)SOC;在另一些使用场景下,该SOC的产品形式体现为CPU(Central Processing Unit,中央处理器) SOC。
此外,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中所述的SOC。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
此外,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机、工作站、服务器等。
综上所述,本公开实施例所提供的缓存系统、读命令调度方法、片上系统、电子组件及电子设备,通过将未被处理的读命令缓存到命令队列内,且使用两套不同的命令选择逻辑(即第一选择模块和第二选择模块)来相互配合,进而可以在同一时钟周期内选择cache检索结果相反的两个读命令交由缓存控制器进行处理。其中,由于cache检索结果相反的两个读命令的数据提供源不同,因此,可以保证两个读命令可以并行读取到数据,如此可缩短多个连续读命令之间等待被执行的等待时长,提升了cache的执行效率,有利于提高数据访问效率和整体性能。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (14)

1.一种缓存系统,包括缓存控制器、第一选择模块、第二选择模块以及用于缓存上游设备发送的未处理的读命令的命令队列;
所述第一选择模块被配置为:从所述命令队列取出第一读命令;
所述缓存控制器被配置为:处理所述第一读命令,并在确定所述命令队列中当前存在第二读命令的情况下,向所述第二选择模块发送所述第二读命令的标识信息;所述第二读命令的缓存cache检索结果与所述第一读命令的cache检索结果相反;
所述第二选择模块被配置为:根据所述标识信息从所述命令队列中取出所述第二读命令交由所述缓存控制器并行处理;
所述缓存系统还包括cache,所述cache包括缓存行cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;所述缓存控制器处理所述第一读命令及所述第二读命令,具体被配置为:在所述第一cache检索结果为未命中miss状态,所述第二cache检索结果为命中hit状态的情况下,将所述第一读命令转发给下游主存,并从所述第二读命令所命中的cacheline中读取数据返回给所述上游设备;在所述第一cache检索结果为hit状态,所述第二cache检索结果为miss状态的情况下,从所述第一读命令所命中的cacheline中读取数据返回给所述上游设备,并将所述第二读命令转发给下游主存。
2.根据权利要求1所述的缓存系统,所述第一选择模块从所述命令队列取出第一读命令,具体被配置为:从所述命令队列的队列末取出第一读命令;
相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,具体被配置为:从所述命令队列的队列末开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。
3.根据权利要求1所述的缓存系统,所述第一选择模块还被配置为:在前一个第一读命令已被处理完成的情况下,所述第一选择模块从所述命令队列取出下一个第一读命令。
4.根据权利要求3所述的缓存系统,所述前一个第一读命令已被处理完成,包括:前一个第一读命令已被处理完且前一个第二读命令正在处理,或者前一个第一读命令与前一个第二读命令均已被处理完。
5.根据权利要求1所述的缓存系统,所述第一读命令和/或所述第二读命令为突发长度不为0的突发传输命令。
6.根据权利要求1-5任一项所述的缓存系统,所述缓存控制器还被配置为:通过所述读命令所携带地址中的tag字段来判断所述读命令的cache检索结果为hit状态或者为miss状态。
7.一种读命令调度方法,应用于缓存系统,所述缓存系统包括缓存控制器、第一选择模块、第二选择模块以及用于缓存上游设备发送的未处理的读命令的命令队列;所述方法包括:
所述第一选择模块从所述命令队列取出第一读命令;
所述缓存控制器处理所述第一读命令,并在确定所述命令队列中当前存在第二读命令的情况下,向所述第二选择模块发送所述第二读命令的标识信息;所述第二读命令的缓存cache检索结果与所述第一读命令的cache检索结果相反;
所述第二选择模块根据所述标识信息从所述命令队列中取出所述第二读命令交由所述缓存控制器并行处理;
所述缓存系统还包括cache,所述cache包括缓存行cacheline;所述第一读命令与所述第二读命令的cache检索结果分别为第一cache检索结果与第二cache检索结果;
所述缓存控制器处理所述第一读命令及所述第二读命令,包括:在所述第一cache检索结果为未命中miss状态,所述第二cache检索结果为命中hit状态的情况下,将所述第一读命令转发给下游主存,并从所述第二读命令所命中的cacheline中读取数据返回给所述上游设备;在所述第一cache检索结果为hit状态,所述第二cache检索结果为miss状态的情况下,从所述第一读命令所命中的cacheline中读取数据返回给所述上游设备,并将所述第二读命令转发给下游主存。
8.根据权利要求7所述的方法,所述第一选择模块从所述命令队列取出第一读命令,包括:从所述命令队列的队列末取出第一读命令;
相应的,所述缓存控制器向所述第二选择模块发送所述第二读命令的标识信息,包括:从所述命令队列的队列末开始,选择第一个所述第二读命令的标识信息发送给所述第二选择模块。
9.根据权利要求7所述的方法,所述方法还包括:第一选择模块在前一个第一读命令已被处理完成的情况下,从所述命令队列取出下一个第一读命令。
10.根据权利要求9所述的方法,所述前一个第一读命令已被处理完成,包括:前一个第一读命令已被处理完且前一个第二读命令正在处理,或者前一个第一读命令与前一个第二读命令均已被处理完。
11.根据权利要求7所述的方法,所述第一读命令和/或所述第二读命令为突发长度不为0的突发传输命令。
12.一种片上系统,包括权利要求1-6任一所述的缓存系统。
13.一种电子组件,包括权利要求12所述的片上系统。
14.一种电子设备,包括权利要求13所述的电子组件。
CN202311695123.7A 2023-12-12 2023-12-12 缓存系统、读命令调度方法、片上系统及电子设备 Active CN117389915B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311695123.7A CN117389915B (zh) 2023-12-12 2023-12-12 缓存系统、读命令调度方法、片上系统及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311695123.7A CN117389915B (zh) 2023-12-12 2023-12-12 缓存系统、读命令调度方法、片上系统及电子设备

Publications (2)

Publication Number Publication Date
CN117389915A CN117389915A (zh) 2024-01-12
CN117389915B true CN117389915B (zh) 2024-04-16

Family

ID=89441391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311695123.7A Active CN117389915B (zh) 2023-12-12 2023-12-12 缓存系统、读命令调度方法、片上系统及电子设备

Country Status (1)

Country Link
CN (1) CN117389915B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077132A (zh) * 2013-01-07 2013-05-01 浪潮(北京)电子信息产业有限公司 一种高速缓存处理方法及协议处理器高速缓存控制单元
WO2017133439A1 (zh) * 2016-02-01 2017-08-10 深圳市中兴微电子技术有限公司 一种数据管理方法及装置、计算机存储介质
CN111352865A (zh) * 2018-12-24 2020-06-30 北京忆芯科技有限公司 存储控制器的写缓存
CN116627857A (zh) * 2023-05-25 2023-08-22 合芯科技有限公司 一种处理器核外缓存模型及模拟方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103077132A (zh) * 2013-01-07 2013-05-01 浪潮(北京)电子信息产业有限公司 一种高速缓存处理方法及协议处理器高速缓存控制单元
WO2017133439A1 (zh) * 2016-02-01 2017-08-10 深圳市中兴微电子技术有限公司 一种数据管理方法及装置、计算机存储介质
CN111352865A (zh) * 2018-12-24 2020-06-30 北京忆芯科技有限公司 存储控制器的写缓存
CN116627857A (zh) * 2023-05-25 2023-08-22 合芯科技有限公司 一种处理器核外缓存模型及模拟方法

Also Published As

Publication number Publication date
CN117389915A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
CN105900076B (zh) 用于处理多个交易的数据处理系统及方法
US6918012B2 (en) Streamlined cache coherency protocol system and method for a multiple processor single chip device
US20190188164A1 (en) A method and device for improved advanced microcontroller bus architecture (amba) and advanced extensible interface (axi) operations
US7185127B2 (en) Method and an apparatus to efficiently handle read completions that satisfy a read request
US20120331187A1 (en) Bandwidth control for a direct memory access unit within a data processing system
CN106326148B (zh) 数据处理系统及其操作方法
US7469309B1 (en) Peer-to-peer data transfer method and apparatus with request limits
KR20070048797A (ko) 프로세서 내의 dma 컨트롤러를 사용하여 프로세서캐시로 데이터를 전송하는 방법
CN112540938B (zh) 处理器核、处理器、装置和方法
CN114546896A (zh) 系统内存管理单元、读写请求处理方法、电子设备和片上系统
CN115964319A (zh) 远程直接内存访问的数据处理方法及相关产品
CN117389914B (zh) 缓存系统、缓存写回方法、片上系统及电子设备
US11275707B2 (en) Multi-core processor and inter-core data forwarding method
US6633927B1 (en) Device and method to minimize data latency and maximize data throughput using multiple data valid signals
CN116257479B (zh) 重排序缓冲器、系统、装置、设备及传输方法
CN117389915B (zh) 缓存系统、读命令调度方法、片上系统及电子设备
US6836823B2 (en) Bandwidth enhancement for uncached devices
US8850159B2 (en) Method and system for latency optimized ATS usage
US20030065844A1 (en) Method for improving processor performance
JP3873589B2 (ja) プロセッサシステム
US6898684B2 (en) Control chip with multiple-layer defer queue
US7120758B2 (en) Technique for improving processor performance
USRE38514E1 (en) System for and method of efficiently controlling memory accesses in a multiprocessor computer system
US20170364591A1 (en) Data processing circuit and data processing method
CN118034638B (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