掌桥专利:专业的专利平台
掌桥专利
首页

一种优化缓存延迟的旁路访问方法及系统

文献发布时间:2024-04-29 00:47:01


一种优化缓存延迟的旁路访问方法及系统

技术领域

本发明涉及一种优化缓存延迟的旁路访问方法及系统。

背景技术

共享缓存是一种多核为了减少访问延迟而共享的缓存结构,每个核的读写请求到达共享缓存需要先到达一个保序队列,在创建进保序队列之前,核队列的请求会先发送到创建逻辑,由创建逻辑检测是否有资源可以将请求创建进保序队列,如果请求可以创建进保序队列,则创建逻辑检测新的读写请求与保序队列内已有的请求的地址是否匹配,如果匹配的话,在请求创建进保序队列时,标记和保序队列中相关的条目,在所有条目执行完成后,通过挑选发送逻辑将请求发送至共享缓存;如果没有匹配,则在请求创建进保序队列后,直接由挑选发送逻辑发送请求至共享缓存;现有的访问逻辑如图1所示。

实际运行中更多的是没有匹配的情况,这种情况新的读写请求没有相关性,不需要任何相关性标记,但由于现有的访问逻辑中,保序队列和共享缓存是串行的访问逻辑,因此即便是没有匹配的情况,读写请求仍然需要先创建进保序队列,而后走挑选发送逻辑才能到达共享缓存,这会造成额外的延迟;如果创建逻辑检测请求是否可以创建进保序队列时,发现资源已满迟迟没有将请求创建进保序队列,便会一直延迟请求访问缓存的时间点。

发明内容

本发明目的在于针对现有技术所存在的不足而提供一种优化缓存延迟的旁路访问系统及方法,其通过将核队列发出的请求需要先经过保序队列之后才能够到达共享缓存这个串行的访问逻辑并行起来,从而可以减少核队列请求访问共享缓存的延迟。

为了解决上述技术问题,本发明采用如下技术方案:

一种优化缓存延迟的旁路访问方法,包括以下步骤:

Step1.创建超前通道和保序通道,核队列通过超前通道将请求发送向共享缓存,核队列通过保序通道将请求发送向保序队列;

Step2.核队列通过保序通道发送的请求,在到达保序队列前先到达创建逻辑,创建逻辑检测到有资源,则可以将请求创建进保序队列;

Step3.创建逻辑检测当前核队列发送的请求与保序队列中已有的请求的地址相关性,并将请求创建进保序队列,把相关性记录在新创建的保序队列的条目中;创建逻辑在成功将请求创建进保序队列时,把一组创建信息广播给共享缓存的每一个流水级;

Step4.共享缓存的各个流水级接收到创建逻辑广播给的创建信息后进行匹配,某一流水级匹配上本流水级请求的ID,若发现匹配保序队列有效信号清零,则把创建的项目号转发给流水级,并把该信息由往后的流水级传下去,与此同时流水级向挑选发送逻辑发送一根取消该项目访问请求的信号,共享缓存在最后一级流水时,将超前访问的缓存信息发送给保序队列中对应项目号的条目。

通过采用上述技术方案,核队列发出的请求能够通过超前通道直接到达共享缓存,在收到创建逻辑广播的创建信息后判断有无相关性,若无相关性则请求能够直接在共享缓存中实现超前访问,避免了走原本串行的访问逻辑造成额外的访问延迟。

进一步的,Step2中若创建逻辑始终未检测到空闲的资源将请求创建进保序队列,核队列的请求流到共享缓存的最后一个流水级也不会收到广播信息,则核队列通过超前通道到达共享缓存的请求作废。

进一步的,Step4中若发现匹配保序队列有效信号置位,则将当前流水级的请求清除,本次超前访问被作废,待保序队列中相关性解除后,由保序队列通过挑选发送逻辑向共享缓存发起请求。

一种优化缓存延迟的旁路访问系统,包括

核队列;

共享缓存;

保序队列,核队列通过保序通道将请求发送向保序队列,保序队列将接收到的请求发送至共享缓存;

其特征在于:

还包括超前通道;核队列通过超前通道将请求发送向共享缓存,实现超前访问。

进一步的,核队列与保序队列之间设有创建逻辑;创建逻辑用于检测是否有资源可以将请求创建进保序队列以及新请求与保序队列内已有的请求的地址是否有相关性;创建逻辑与共享缓存数据连接。

进一步的,创建逻辑若未检测到有空闲的资源将请求创建进保序队列,导致核队列的请求流到共享缓存的最后一个流水级也仍然没有收到广播信息,则核队列通过超前通道到达共享缓存的请求作废。

进一步的,创建逻辑若检测到有空闲的资源将请求创建进保序队列,创建逻辑会在将请求创建进保序队列时,把一组创建信息广播给共享缓存的每一个流水级。

进一步的,创建信息包括:

创建成功有效信号;

创建的项目号;

创建请求的ID;

匹配保序队列有效信号。

进一步的,共享缓存的各个流水级接收到创建逻辑广播给的创建信息后进行匹配,某一流水级匹配上本流水级请求的ID,若发现匹配保序队列有效信号清零,则把创建的项目号转发给流水级,并把该信息由往后的流水级传下去,与此同时流水级向挑选发送逻辑发送一根取消该项目访问请求的信号,共享缓存在最后一级流水时,将超前访问的缓存信息发送给保序队列中对应项目号的条目。

进一步的,保序队列与共享缓存之间设有挑选发送逻辑,挑选发送逻辑用于将挑选保序队列中确认无相关性的请求并将之发送至共享缓存;实现共享缓存与保序队列之间的数据传输。

进一步的,共享缓存的各个流水级接收到创建逻辑广播给的创建信息后进行匹配,某一流水级匹配上本流水级请求的ID,若发现匹配保序队列有效信号置位,则将当前流水级的请求清除,本次超前访问被作废,待保序队列中相关性解除后,由保序队列通过挑选发送逻辑向共享缓存发起请求。

进一步的,超前通道和保序通道两路需要做仲裁,保序通道的优先级高于超前通道。

本发明由于采用了上述技术方案,具有以下有益效果:

1、本发明能够将核队列发出的请求需要先经过保序队列之后才能够到达共享缓存这个串行的逻辑并行起来,让无相关性的请求能够直接实现超前访问,达到减少共享缓存访问延迟的效果;

2、本发明中核队列通过超前通道发送的请求,不管保序队列是否有资源可以创建,都会将请求发送给共享缓存,如此只要保序队列成功创建时核队列的请求仍然在共享缓存的流水级中,请求就能够直接在共享缓存中确定是否超前访问,如此重合一部分等待资源的时间,进一步增加了并行性;

3、本发明中如果走超前通道的核队列请求匹配发现无相关性,则能够实现超前访问共享缓存,同时,流水级向挑选发送逻辑发送一根取消该项目访问请求的信号,共享缓存在最后一级流水时,将超前访问的缓存信息发送给对应项目号的保序队列,达到防止发送重复请求、返回错误结果的效果。

附图说明:

下面结合附图对本发明作进一步说明:

图1为现有的访问逻辑的流程示意图;

图2为本发明核队列请求包含所有情形的流程示意图;

图3为本发明核队列请求能够超前访问共享缓存的流程示意图;

图4为本发明核队列请求有相关性走保序通道的流程示意图;

图5为本发明保序队列始终未创建成功的流程示意图;

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。

实施例1

一种优化缓存延迟的旁路访问系统,包括核队列、共享缓存以及保序队列;

核队列与保序队列之间设有创建逻辑;

保序队列与共享缓存之间设有挑选发送逻辑;

核队列通过保序通道将请求发送向保序队列,保序队列将接收到的请求发送至共享缓存;

核队列能够在通过保序通道向保序队列发送请求,通过超前通道将请求发送向共享缓存;

核队列大多数情形会向超前通道和保序通道两路同时发送请求;

部分情形是某一条请求先被共享缓存接受,此时保序队列中资源一直忙,则会记录已通过超前通道发送给共享缓存,避免请求重复发送;

因此,本质上超前通道和保序通道的发送时间是能够不相同且为解耦开的;

核队列发送的请求不存在先走保序通道,后发送超前通道的情形;因为一旦被保序通道中的请求能够在保序队列中置位,共享缓存中的该请求就会被弹出,超前通道中的队头就变成下一条请求;

通过加入超前通道,原本如图1所示的保序队列与共享缓存串行的访问逻辑改变为包含超前访问的并行逻辑,能够达到减少访问共享缓存延迟的效果。

创建逻辑用于检测保序队列是否有资源可以将请求创建进保序队列;

创建逻辑也用于检测新的请求与保序队列内已有的请求的地址是否有相关性;

保序队列内已有的请求是指:多个核分别向保序队列发送请求,核队列的第一个请求已经创建进保序队列,其便是保序队列中已有的请求;创建逻辑需要检测往后的请求与已经创建进保序队列的请求的地址是否有相关性。

核队列通过保序通道发送向保序队列的请求会先到达创建逻辑;

创建逻辑若检测到有空闲的资源将请求创建进保序队列,创建逻辑会在将请求创建进保序队列时,把一组创建信息广播给共享缓存的每一个流水级;

创建信息包括:

创建成功有效信号;

创建的项目号;

创建请求的ID;

匹配保序队列有效信号。

挑选发送逻辑用于将保序队列中所有准备访问共享缓存的条目中挑选一个请求发送给共享缓存。

共享缓存收到创建逻辑广播的创建信息后进行匹配,某一流水级匹配上本流水级的请求的ID,若发现匹配保序队列有效信号清零,则说明请求无相关性,把创建的项目号转发给流水级,并把该信息由往后的流水级传下去,与此同时流水级向挑选发送逻辑发送一根取消该项目访问请求的信号,共享缓存在最后一级流水时,将超前访问的缓存信息发送给保序队列中对应项目号的条目。

若发现匹配保序队列有效信号置位,则说明请求有相关性,共享缓存需要将当前流水级的请求清除,本次超前访问被作废,本条请求需要走传统的访问逻辑,待保序队列中该请求的相关性解除后,走挑选发送逻辑向共享缓存发起请求。

若核队列的请求在共享缓存中走完了最后一个流水级,创建逻辑都未检测到保序队列中有资源可以让请求创建进保序队列,则请求在共享缓存中到最后一个流水级也收不到广播信息,因此无法获得项目号,则核队列通过超前通道进入共享缓存的该条请求作废。

超前通道与保序通道两路需要做仲裁,保序通道的优先级高于超前通道,原因是核队列发送的请求不存在先走保序通道,后发送超前通道的情形,保序通道发送成功后,超前通道的队头会变成下一条请求,因此基于性能考虑,需要先服务于在前的保序通道中的请求,如此能够保证更早的请求优先被响应,符合程序预期的返回顺序;。

一种优化缓存延迟的旁路访问方法,包括以下步骤:

Step1.创建超前通道和保序通道,核队列通过超前通道将请求发送向共享缓存,核队列通过保序通道将请求发送向保序队列;

Step2.核队列通过保序通道发送的请求,在到达保序队列前先到达创建逻辑,创建逻辑检测到有资源可以将请求创建进保序队列;

Step3.创建逻辑检测当前核队列发送的请求与保序队列中已有的请求的地址相关性,并将请求创建进保序队列,把相关性记录在新创建的保序队列的条目中;创建逻辑在成功将请求创建进保序队列时,把一组创建信息广播给共享缓存的每一个流水级;

Step4.共享缓存的各个流水级接收到创建逻辑广播给的创建信息后进行匹配,某一流水级匹配上本流水级请求的ID,若发现匹配保序队列有效信号清零,则把创建的项目号转发给流水级,并把该信息由往后的流水级传下去,与此同时流水级向挑选发送逻辑发送一根取消该项目访问请求的信号,共享缓存在最后一级流水时,将超前访问的缓存信息发送给保序队列中对应项目号的条目。

通过以上步骤无相关性的核队列请求能够实现超前访问,达到优化访问延迟的目的,以上步骤如图3所示。

核队列请求通过超前通道到达共享缓存后,还包括以下情形:

(1)若创建逻辑始终未检测到保序队列有空闲的资源可以将请求创建进保序队列,核队列的请求流到共享缓存的最后一个流水级也不会收到广播信息,则核队列通过超前通道到达共享缓存的请求作废,如图5所示。

(2)Step4中共享缓存的各个流水级接收到创建逻辑广播给的创建信息后进行匹配,某一流水级匹配上本流水级请求的ID,如果发现匹配保序队列有效信号置位,即请求有相关性,则将当前流水级的请求清除,本次超前访问被作废,待保序队列中相关性解除后,由保序队列通过挑选发送逻辑向共享缓存发起请求,如图4所示。

本旁路访问方法通过在核队列与共享缓存之间建立了超前通道,将原本串行的访问逻辑改变为并行的访问逻辑,使得无相关性的请求能够直接走超前通道实现超前访问,减少了保序队列创建、挑选发送逻辑发送的等待时间,达到优化共享缓存访问延迟的目的;同时,核队列的请求在共享缓存中实现超前访问,因为超前访问已经代替了传统的访问逻辑,共享缓存会发送一根取消的信号给挑选发送逻辑,并在最后一级流水时,将超前访问的缓存信息发送给保序队列中对应项目号的条目,避免发送重复的请求;

在长时间无资源可以创建保序队列时,共享缓存中的请求流到最后一级都未等到创建逻辑广播的创建信息,便无法获取项目号,超前访问会作废,原因是如果请求一直占用共享缓存的流水级不释放,后续的请求也会被堵住,如果正好此请求依赖于后续从保序队列中跳出来的请求做完,便会出现死锁,通过将作废能够避免出现死锁的情形;

而创建逻辑成功将请求创建进保序队列后会将创建信息广播给共享缓存的每一个流水级,共享缓存通过匹配上请求的ID进行同步,若有相关性则共享缓存中的超前访问会作废,转为等待保序队列中的请求进行访问,通过配对相关性能够避免返回结果错误的情况发生。

以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发明为基础,为实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。

相关技术
技术分类

06120116593666