首页> 中国专利> 在客户端之间共享对存储器的访问

在客户端之间共享对存储器的访问

摘要

在具有存储内容数据的一组存储器条的存储器设备中,至少两个对在一组存储器条中的第一存储器条中执行相应的存储器操作的请求在单个时钟周期期间被接收。确定至少两个请求中的一个或多个请求被阻止访问第一存储器条。作为对确定了至少两个请求中的一个或多个请求被阻止的响应:访问冗余数据,冗余数据与第一存储器条相关联,并且不同于被存储在第一存储器条中的内容数据,并且无需访问第一存储器条的情况下,被存储在第一存储器条中的内容数据的至少一部分基于与第一存储器条相关联的冗余数据被重新构建。第一个被请求的存储器操作利用存储在第一存储器条中的内容数据被执行,并且第二个被请求的存储器操作利用i)无需访问第一存储器条的,并且ii)基于与第一存储器条相关联的冗余数据重新构建的内容数据被执行。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-31

    专利权的转移 IPC(主分类):G06F13/16 登记生效日:20200714 变更前: 变更后: 变更前: 变更后: 申请日:20111122

    专利申请权、专利权的转移

  • 2016-08-24

    授权

    授权

  • 2014-02-26

    实质审查的生效 IPC(主分类):G06F13/16 申请日:20111122

    实质审查的生效

  • 2014-01-22

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2010年11月22日提交的名称为“Table SharingAmong Clients”的美国临时申请No.61/416,247的权益,并且还要求2011年1月6日提交的名称为“Table Sharing Among Clients”的美国临时申请No.61/430,400的权益,其全部内容通过引用被结合于此。

技术领域

本公开一般地涉及在存储器中同时执行操作,并且更具体地,涉及被用在通信网络中的交换设备的同时存储器访问。

背景技术

这里所提供的背景技术描述是出于一般地呈现本公开的上下文的目的。当前所标明的发明人的工作,就其在该背景技术部分中被描述的以及说明书中的那些不能作为提交申请时的现有技术的方面而言,既不明示也不暗示地被承认是针对本公开的现有技术。

传统的存储器设备通常被配置以使得在任意给定的时钟周期中只有一个存储器操作(例如读操作)可以在存储器的特定区块处被执行。在一些联网或交换应用的上下文中,被用于分组处理的各种数据(例如控制表、转发表等)在各种交换设备或单一设备的交换核之间被共享。这些多个设备和核一起提供在大量端口之间进行交换的能力。然而,多个设备和核快速访问存储在共享存储器中的数据的能力的限制可能会导致交换能力的减弱。或者,为每个设备提供其自己的存储器设备就附加存储器的直接花费和不同存储器同步所需要的资源而言可能都是很昂贵的。

发明内容

在一个实施例中,一种在存储器设备中执行存储器操作的方法,该存储器设备具有存储内容数据的一组存储器条,该方法包括在单个时钟周期期间,接收至少两个对在一组存储器条中的第一存储器条中执行相应的存储器操作的请求。该方法还包括确定至少两个请求中的一个或多个请求被阻止访问第一存储器条。此外,该方法包括作为对确定至少两个请求中的一个或多个请求被阻止访问第一存储器条的响应:访问冗余数据,该冗余数据与第一存储器条相关联,并且不同于被存储在第一存储器条中的内容数据,并且基于与第一存储器条相关联的冗余数据来重新构建被存储在第一存储器条中的内容数据的至少一部分,而不访问第一存储器条。该方法还包括利用被存储在第一存储器条中的内容数据来执行第一个被请求的存储器操作;以及利用i)不访问第一存储器条的,并且ii)基于与第一存储器条相关联的冗余数据重新构建的内容数据来执行第二个被请求的存储器操作。

在另一实施例中,一种存储器设备包括存储内容数据的一组存储器条,一组存储器条包括第一存储器条。该存储器设备还包括存储器控制器,该存储器控制器被配置为:当至少两个对在第一存储器条中执行相应的存储器操作的请求在单个时钟周期期间被接收到时,确定至少两个请求中的一个或多个请求被阻止访问第一存储器条;作为对确定至少两个请求中的一个或多个请求被阻止访问第一存储器条的响应:访问与第一存储器条相关联的冗余数据,与第一存储器条相关联的冗余数据不同于被存储在第一存储器条中的内容数据,并且基于与第一存储器条相关联的冗余数据来重新构建被存储在第一存储器条中的内容数据的至少一部分,而不访问第一存储器条;基于被存储在第一存储器条中的内容数据来执行第一个被请求的存储器操作;以及基于i)不访问第一存储器条的,并且ii)基于与第一存储器条相关联的冗余数据重新构建的内容数据来执行第二个被请求的存储器操作。

在另一实施例中,一种网络设备包括存储内容数据的一组存储器条以及交换核,该交换核被配置为访问一组存储器条并且基于被存储在一组存储器条中的内容数据来执行分组处理操作。网络设备还包括存储器控制器,该存储器控制器被配置为:从交换核接收对在第一存储器条中执行存储器操作的请求,第一存储器条被包括在一组存储器条中;确定交换核中的至少一部分被阻止访问第一存储器条;作为对确定交换核的至少一部分被阻止访问第一存储器条的响应:访问与第一存储器条相关联的冗余数据,冗余数据不同于被存储在第一存储器条中的内容数据,并且基于与第一存储器条相关联的冗余数据重新构建被存储在第一存储器条中的内容数据的至少一部分,而不访问第一存储器条;以及利用i)在不访问第一存储器条的情况下ii)基于与第一存储器条相关联的冗余数据重新构建的内容数据来执行被请求的存储器操作。

附图说明

图1是根据实施例的包括共享访问存储器的示例性网络设备的框图;

图2是根据实施例的示例性共享访问存储器设备的框图;

图3是根据实施例的另一示例性共享访问存储器设备的框图;

图4A-4D是根据实施例的具有多个层级的存储器体系架构的框图;

图5是根据实施例的、在具有存储内容数据的一组存储器条的共享访问存储器设备中执行存储器操作的示例性方法的流程图;以及

图6是在具有存储内容数据的一组存储器条的共享访问存储器设备中执行存储器操作的另一示例性方法的实施例流程图。

具体实施方式

用于在若干个客户端设备之间共享存储器空间的示例性共享存储器设备和方法在这里被描述。出于说明的目的,示例性共享存储器设备在用于处理在通信网络上被传送的分组的多核交换机的上下文中被描述。注意,在本公开和这里的教导的启发下,无论在何处诸如处理器、处理器核、电路、流水线级等之类的若干个客户端设备需要同时在共享存储器上执行存储器操作(例如(但不只是)读操作),用于存储器共享的类似方法和装置都是合适的。所描述的共享存储器装置方法论不局限于在通信网络设备中使用,而是也可以被用在其它合适的上下文中。

图1是根据实施例的诸如第2层和/或第3层交换机之类的示例性多核网络设备100的框图。网络设备100包括存储器设备104,该存储器设备104被耦接到多个分组处理核108并且被这些分组处理核使用,分组处理核在这里也被称为交换核,下面将进行更详细的描述。网络设备100还包括多个端口112,并且每个端口112被耦接到与通信网络相关联的相应的通信链路。在实施例中,分组处理核108被配置为处理经由端口112接收的分组,并且确定分组接下来应该经由其被传送的相应的端口112。

在实施例中,分组处理核108利用被存储在存储器设备104中的一个或多个控制表,例如转发数据库表格。因为分组处理核108并行操作,所以核108中的两个或更多个核可能需要同时在存储器设备104的相同部分执行存储器操作,例如执行同时的读操作来得到针对来自或去往相同地址的分组的转发信息。

下面将更详细地描述,在实施例中,存储器设备104包括存储内容数据的第一组存储器条,内容数据例如一个或多个控制表。存储器设备104还包括存储与被存储在第一组存储器条120中的内容数据相关联的冗余信息的第二组一个或多个存储器条。在实施例中,当存储器设备104(例如在存储器设备104的同一时钟周期中)同时接收到对在存储器条120中的一个存储器条中执行存储器操作的请求时,存储器设备104被配置为确定多个请求中的一个或多个请求被阻止访问一个存储器条120。作为对确定多个请求中的一个或多个请求被阻止访问一个存储器条120的响应,存储器设备104被配置为访问来自存储器条124的冗余数据,并且利用冗余数据而不利用存储在一个存储器条120中的数据来重新构建存储在一个存储器条120中的数据。被请求的存储器操作中的一个操作利用存储在一个存储器条120中的数据被执行。另一方面,在实施例中,被请求的存储器操作中的另一个操作被执行,而无需访问一个存储器条120,并且该执行是基于利用来自存储器条124的冗余数据重新构建的数据的。

在网络设备100中,每个分组处理核108一般用作生成对在存储器设备104的一个或多个存储器条120中执行存储器操作的请求的客户端。这里所使用的术语“客户端”指被配置为生成对在存储器设备的一个或多个存储器条中执行存储器操作的请求的设备。在其中分组处理核108包括分别被配置为生成对在存储器设备104的一个或多个存储器条120中执行存储器操作的请求的多个设备的实施例中,分组处理核108包括或用作多个客户端。例如,在其中分组处理器包括具有多个流水线级的流水线并且多个流水线级被配置为生成对在存储器设备的一个或多个存储器条中执行存储器操作的请求的实施例中,分组处理器包括或用作多个客户端。又例如,单个处理器或单个流水线级被配置为同时生成多个存储器访问请求,并且因此这单个处理器或单个流水线级包括或用作多个客户端。

在实施例中,网络设备100利用在2010年2月16日提交的名称为“SWITCH DEVICE HAVING A PLURALITY OF PROCESSINGCORES”的美国专利申请No.12/706,704中所描述的方法和装置,该专利申请的全部内容通过引用被合并于此。

在实施例中,存储器设备104是固态设备。例如,存储器设备104被包括在集成电路(IC)或其它固态设备上。在实施例中,存储器设备104和分组处理核108被包括在单一IC上。

虽然存储器设备104在上面被描述为被包括在网络设备100中,但是类似的存储器设备可以被用在其它类型的计算系统中,例如个人计算机、服务器、主机、智能电话、游戏系统、机顶盒、通信设备等。例如,计算系统可以包括分别作为针对诸如存储器设备104之类的存储器设备的客户端的多个设备(例如处理器(例如中央处理单元、协同处理器、专用处理单元等)、电路、流水线级等)。

图2是根据实施例的被配置用于共享访问的存储器设备200(例如共享存储器设备200)的框图。在实施例中,存储器设备200被用作图1的存储器设备104。在另一实施例中,另一合适的存储器设备被用作图1的存储器设备104。类似地,存储器设备200被用在不同于图1的网络设备100的网络设备中,或者在其它实施例中,存储器设备200被用在用于除网络交换以外的上下文中的计算设备中。

存储器设备200包括存储内容数据的第一组n个(一个或多个)存储器条202(MB1,MB2,...,MBn)。在实施例中,当被用在网络设备的上下文中时,这一组一个或多个存储器条202存储一个或多个控制表或者适合用于网络设备中的其它数据。存储器设备200包括第二组一个或多个存储器条205(冗余MB)以存储与被存储在一个或多个存储器条202中的内容数据相对应的冗余数据。在实施例中,存储器设备200还包括存储器控制器208以对存储在一个或多个存储器条202中的内容数据执行存储器操作。例如,存储器控制器108被配置为接收来自两个或更多个客户端210,212的对存储器操作的请求,并且作为对请求的响应,执行针对被存储在存储器条202中的一个或多个存储器条中的内容数据的存储器操作(例如读存储器操作)。

在一些实施例中,存储器设备200是对物理资源的逻辑布置,并且在一些实施例中,存储器设备200至少部分地是对物理资源的物理布置。在实施例中,每个存储器条(例如MB1-MBn,冗余MB)具有相同的尺寸并且包括相同的一组一个或多个独特地址。例如,在实施例中,每个存储器202和每个存储器205对应于相同的地址空间(例如001到g)。在其它实施例中,存储器条(例如MB1-MBn,冗余MB)可以具有两个或更多个不同的尺寸,并且/或者对应于两个或多个不同的地址空间。

在实施例中,n个存储器条202存储被客户端210,212使用的内容数据。在实施例中,存储器条205对应于存储器设备200的第(n+1)个存储器条,并且存储基于被存储在存储器条202(MB1-MBn)中的内容数据的冗余数据。冗余数据可以基于诸如奇偶校验计算之类的纠错码操作、循环冗余校验(CRC)码等被生成或计算。在实施例中,存储器条205存储被应用于存储在存储器条202中的内容数据的逐位异或(XOR)运算的结果。在特定实施例中,逐位XOR运算基于每个地址被应用,以使得如果a是来自001到g的范围内的特定地址,则存储器条205的特定地址a的内容用以下表达式表示:

>B(n+1)(a)=Σi=1i=nBi(a),---(1)>

其中Bi(a)表示第i个存储器条的第a个地址的内容并且求和表示逐位XOR运算。在该示例中,虽然纠错码操作被用于确定或生成存储在存储器条205(冗余MB)中的冗余数据,但是冗余数据不一定被用于纠正内容数据错误。相反,冗余数据用于重新构建存储在针对请求客户端被阻止访问的存储器条(例如存储器条MB1-MBn中的一个存储器条)中的内容数据,从而实现对针对请求客户端被阻止访问的存储器条的内容的共享访问,如下面更详细地描述的。

在实施例中,存储器设备200被配置为实现对存储在一组存储器条202中的内容数据的共享访问。就是说,当特定存储器条被第一客户端直接访问并且因而其它客户端的直接访问被阻止时,存储器设备200被配置为实现对用于第二客户端的特定存储器条的内容数据的重新构建,而不直接访问特定存储器条。在图2中所示的示例性场景中,在特定的单个时钟周期期间(例如存储器设备200的时钟周期、包括存储器设备200的固态设备的时钟周期等),客户端A(标号210)和客户端B(标号212)二者向存储器控制器208提交对存储器条MB1执行存储器操作的请求,请求用相应的标号215a和215b表示。存储器控制器208确定客户端A的请求215a被授权或允许,并且对存储在存储器条MB1中的内容数据执行客户端A所请求的存储器操作(如图2中用去往/来自MB1的实线箭头218a结合客户端A的请求215a表示的)。在实施例中,存储器控制器208基于与客户端相关联的优先级信息、基于所接收的请求的顺序和/或基于另一所希望的或合适的标准来确定客户端A的请求215a被许可或允许。

但是在该示例性场景中,存储器控制器208阻止或拒绝客户端B对在存储器条MB1上执行相应的被请求的存储器操作的请求。阻止或拒绝在图2中用标号220表示,其中X表示对客户端B的请求的阻止或拒绝并且短虚线表示客户端B未实现的对访问存储器条MB1的请求。然而,在实施例中,为了向客户端B提供对存储在存储器条MB1中的内容数据的共享访问(例如与客户端A的访问相呼应的对存储在存储器条MB1中的内容数据的访问),存储器控制器208反过来访问存储器条MB2至MBn以及存储器条205来读取存储在这些存储器条中的相应的数据。存储器控制器208对存储在存储器条MB2至MBn中的内容数据以及存储在存储器条205中的冗余数据执行纠错码计算(例如奇偶校验计算或者逐位XOR运算或其它合适的运算)。在实施例中,纠错码计算被存储器控制器208用来在不直接访问存储器条MB1的情况下重新构建存储在存储器条MB1中的内容数据。该重新构建在图2中用实线箭头218b结合客户端B的请求215b来表示。因而,存储器控制器208被配置为基于存储在存储器条205中的冗余数据重新构建存储器条MB1的内容,而不直接访问存储器条MB1。这样,对存储在存储器条MB1中的内容数据的访问在客户端A与客户端B之间被共享。

在实施例中,为了实现共享访问,存储器控制器208在单个时钟周期中访问存储器设备200的其它存储器条(例如MB2至MBn以及存储器条205)。在一些实施例中,为了实现共享访问,存储器控制器208在多于一个时钟周期上访问存储器设备200的其它多个存储器条(例如MB2至MBn以及存储器条205)。

因此,对于存储器设备200,1/n个存储器条的开销导致包括存储器设备200的系统或设备的存储器访问带宽的加倍(例如x2带宽),这与两个不同的客户端分别访问存储内容数据的相应的本地备份的专用存储器时所需要的n个开销存储器条相比是显著的节省。就是说,在实施例中,仅仅利用1/n的存储器开销,两个客户端210和212就分别能够请求存储器操作在同一时钟周期中(例如按基本同时、交迭或同时发生的方式)针对存储器设备200的相同存储器条(例如MB1)被执行。

虽然以上所讨论的示例性场景描述了两个客户端210和212试图在单个时钟期间访问相同的存储器条,但是示例性场景所说明的原理很容易被适配用于其它场景,以用于对一组存储器条202的共享访问。例如,在另一场景中,客户端A请求存储器控制器208访问存储器条MB1并且该请求被许可,但是与客户端A的请求相对应的访问操作在多个时钟周期上被执行。在多个时钟周期中的其间存储器控制器208正在执行客户端A的请求的一个时钟周期期间,客户端B请求存储器控制器208访问相同的存储器条MB1。因为存储器条MB1鉴于客户端A的请求而被阻止直接访问,所以存储器控制器208反过来直接访问存储器设备200的存储器条MB2至MBn以及存储器条205以执行客户端B所执行的存储器操作。又例如,多于两个客户端可能向存储器控制器208提交请求。在实施例中,如果第三客户端试图与客户端A和客户端B同时访问存储器条MB1,则存储器控制器208可以只阻止第三客户端的请求。第三客户端因而可以在稍后重新提交其请求。

此外,虽然存储器设备200的共享访问在上面是利用读存储器操作来描述的,但是这些技术和原理也适用于其它存储器操作,例如写存储器操作。在示例中,对存储在存储器条MB2中的内容数据的改变被确定,并且改变被写入存储器条MB2中,以使得存储在存储器条MB2中的内容数据被更新。存储在存储器条205中的冗余数据(例如奇偶校验计算或纠错码计算结果)也基于对存储在MB2中的内容数据的改变而被更新,例如通过将存储器条205的当前内容与对存储在MB2中的内容数据的改变进行逐位XOR。在实施例中,在对存储器条205的内容的更新之前,如果需要,与一个或多个读访问相对应的存储器条205的当前内容被存在另一存储器中,例如被存在存储在中央处理单元(CPU)的存储器中的影像表格中。

图3是共享存储器设备250的框图,在实施例中,该存储器设备250被配置以使得多达四个客户端能够在相同的时钟周期中(例如按实质上同时、交迭或同时发生的方式)在给定的存储器区块中执行相应的存储器操作。在实施例中,存储器设备250被用作图1的存储器设备104。在另一实施例中,另一合适的存储器设备被用作图1的存储器设备104。类似地,存储器设备250被用在不同于图1的网络设备100的网络设备中,或者在其它实施例中,存储器设备250被用在用于除网络交换以外的上下文中的计算设备中。

注意在一些实施例中,通过使得四个客户端能够对存储器设备250的任意位置进行同时访问,包括存储器设备250的系统的存储器访问带宽被增大四倍。在实施例中,存储器设备250被配置为允许多达四个客户端以实质上同时、交迭或同时发生的方式确定被存储在相同存储器条中的内容数据。在一些实施例中,存储器设备250是对物理资源的逻辑布置,并且在一些实施例中,存储器设备250至少部分地是对物理资源的物理布置。

在图3中所示的实施例中,共享存储器设备250包括存储内容数据的一组存储器条252、存储冗余数据的一组冗余存储器条255,以及对存储在一组存储器条252中的内容数据执行存储器操作的存储器控制器258。对于其中存储器设备250被包括在诸如图1的网络设备100之类的分组处理系统中的实施例,分组处理系统的共享的控制表的内容可以被存储在初始存储器条252中。

存储器控制器258被配置为接收来自两个或更多个客户端260,262,265,268的对存储器操作的请求,并且作为对请求的响应,执行针对被存储在存储器条252中的一个或多个存储器条中的内容数据的存储器操作(例如读存储器操作)。例如,存储器控制器258可以访问一个或多个存储器条252,以读取存储在这些存储器条中的数据。

在实施例中,在存储器设备250中,n×m个存储器条252被布置在尺寸为n×m的逻辑阵列中。例如,在存储器设备250中,一组全部的存储器条252被布置在n行和m列中。每个初始存储器条在图4中用符号MB(r,t)指示,其中r表示从1到n范围内的行,并且t表示从1到m范围内的列。

在实施例中,冗余存储器条255被布置在作为第n+1行并且在第m+1列的逻辑阵列中。当然,对冗余存储器条255的其它布置也是可能的,例如将冗余存储器条包括在逻辑阵列的第一行和第一列中,或者其它合适的布置。然而,在图3的实施例中,每一行r包括相应的冗余存储器条RMB(r,m+1),在实施例中,冗余存储器条RMB(r,m+1)的内容与基于第r行的相应的存储器条252的内容的纠错码计算(例如奇偶校验计算)相对应。在实施例中,存储器条RMB1存储被应用于存储在第r行的存储器条252中的内容数据的逐位异或(XOR)运算的结果。例如,被存储在与第r行相对应的特定存储器条中的内容用以下表达式表示:

>B(m+1,r)(a)=Σi=1i=mB(i,r)(a),---(2)>

其中B(t,r)(a)表示第t,r个冗余存储器条255的第a个地址的内容,并且求和表示逐位XOR运算。

类似地,在存储器设备250中,每一列包括相应的附加存储器条AMB(n+1,t),在实施例中,附加存储器条AMB(n+1,t)的内容与基于第t列的相应的初始存储器条的内容的奇偶校验计算相对应。例如,被存储在与第t列相对应的特定附加存储器条中的内容用以下表达式表示:

>B(t,n+1)(a)=Σi=1i=nB(t,i)(a),---(3)>

因此,对于该示例,存储器设备250的开销用以下表达式表示:

(n+m+1)/(n*m)    (4)

这样,在与图3相对应的实施例中,当n=m时,针对一组n×m个全部存储器条252的最小开销被实现,例如最小开销=(2n+1)/n2,这个值近似为2/n(当n=m时,n对应于存储器条252的数目的平方根)。因此,在与图3相对应的实施例中,当n=m时,最小开销2/n可以导致包括存储器设备252的系统的存储器访问带宽增大四倍,而其中四个不同的存储器被用于分别存储内容数据的相应的本地备份的网络设备需要3*n2的开销。

图3示出了存储器设备250的实施例,该存储器设备200被配置为实现多达四个客户端对存储在相同存储器区块(例如存储器条MB(1,1))中的内容数据的共享访问。在示例性场景中,全部四个客户端A、B、C和D在相同的时钟周期期间(例如存储器设备250的时钟周期、包括存储器设备250的固态设备的时钟周期等)请求存储器控制器258对存储器条MB(1,1)执行存储器操作,请求用标号265a-265b表示。在所示出的场景中,存储器控制器258确定客户端A的请求265a被许可,并且对存储在存储器条MB(1,1)中的内容数据执行客户端A所请求的存储器操作(如图3中用去往/来自MB(1,1)的实线箭头268a结合客户端A的请求265a表示的)。在实施例中,存储器控制器208基于与客户端相关联的优先级信息、基于所接收的请求的顺序和/或基于另一所希望的或合适的标准来确定客户端A的请求265a被允许。

但是在该场景中,存储器控制器208阻止或拒绝客户端B对在存储器条MB(1,1)上执行其所请求的存储器操作的请求。阻止或拒绝在图3中用标号270b表示,其中X表示对客户端B的请求的阻止或拒绝,并且短虚线表示客户端B未实现的对访问存储器条MB(1,1)的请求。然而,在实施例中,为了向客户端B提供对存储在存储器条MB(1,1)中的内容数据的共享访问(例如与客户端A的请求相呼应的为了客户端B确定存储在存储器条MB(1,1)中的内容数据),存储器控制器258反过来执行对存储在存储器条MB(1,1)中的内容数据的基于列的重新构建。具体而言,存储器控制器258直接访问在与目标存储器条MB(1,1)相对应的列中的其它未被访问的存储器条252(例如存储器条MB(2,1)至MB(n,1)以及冗余存储器条RMB(n+1,1))以读取存储在这些存储器条中的相应数据。存储器控制器208对存储在第1列中的其它未被访问的存储器条252(例如存储器条MB(2,1)至MB(n,1)以及冗余存储器条RMB(n+1,1))中的内容数据执行纠错码计算(例如奇偶校验计算或者逐位XOR运算或函数)。在实施例中,纠错码计算被存储器控制器208用来重新构建存储在存储器条MB(1,1)中的内容数据,而不直接访问存储器条MB(1,1)。重新构建的内容数据在图2中用去往/来自第1列中的未被访问的存储器条252的实线箭头268b结合客户端B的请求265b来表示。这样,存储器控制器208基于利用阵列的第一维度存储在冗余存储器条RMB(n+1,1)中的冗余数据来重新构建目标存储器条MB(1,1)的内容,而不直接访问存储器条MB(1,1)。

再转回图2片刻,注意对存储在存储器条MB1中的数据内容的重新构建是其中被用于重新构建的逻辑阵列的维度为n×1的情况下基于列的重新构建的示例。

再进而针对于图3的示例性场景,存储器控制器208还阻止或拒绝客户端C对在存储器条MB(1,1)上执行其所请求的存储器操作的同时发生的请求。对客户端C的阻止或拒绝在图3中用标号270c表示,其中X表示对客户端C的请求的阻止或拒绝,并且短虚线表示客户端C未实现的对访问存储器条MB(1,1)的请求。在该场景中,客户端C的请求不能利用基于列的重新构建被实现,因为存储器控制器258当前正在为客户端B执行基于列的重新构建并且与基于列的重新构建相对应的存储器条(例如存储器条MB(2,1)至MB(n,1)以及冗余存储器条RMB(n+1,1))被阻止进行直接访问。然而,为了为客户端C提供对存储在存储器条MB(1,1)中的内容数据的共享访问(例如与客户端A的请求以及客户端B的请求相呼应),在实施例中,存储器控制器258反过来执行对存储在目标存储器条MB(1,1)中的内容数据的基于行的重新构建。具体而言,在实施例中,存储器控制器258访问在与目标存储器条MB(1,1)相对应的行中的所有其它未被访问的存储器条252(例如存储器条MB(1,2)至MB(1,m)以及冗余存储器条RMB(1,(m+1)))以读取存储在这些存储器条中的相应数据。在实施例中,存储器控制器208对存储在相应的列中除被阻止访问的初始存储器条MB(1,1)以外的未被访问的存储器条252中的内容数据执行纠错码计算(例如奇偶校验计算或者逐位XOR运算或函数)。例如,存储器控制器258对存储器条MB(1,2)至MB(1,m)以及冗余存储器条RMB(1,(m+1))的内容执行逐位XOR运算或函数。在实施例中,纠错码计算被存储器控制器208用来在不直接访问存储器条MB(1,1)的情况下重新构建存储在存储器条MB(1,1)中的内容数据。目标存储器条MB(1,1)的重新构建的内容数据在图3中用去往/来自存储器条MB(1,1)的实线箭头268c结合客户端C的请求265c来表示。这样,存储器控制器208被配置为基于利用阵列的第二维度存储在附加存储器条RMB(1,(m+1))中的冗余数据重新构建目标存储器条MB(1,1)的内容,而不直接访问存储器条MB(1,1)。

注意虽然示例性场景首先提供对被发起的基于列的重新构建的描述,并且然后了提供对被发起的基于行的重新构建的描述,但是在其它场景中,基于列的重新构建和基于行的重新构建的发起顺序可以反过来。在一些实施例中,重新构建的顺序可能是无关紧要的。例如,当三个实质上同时发生的请求在单个时钟周期中竞争对存储在相同存储器条中的内容数据的访问时,存储器控制器208被配置为发起直接访问、基于列的重新构建和基于行的重新构建,而不特别考虑不同类型的访问的发起顺序。

再进而针对于图3的示例性场景,存储器控制器208还阻止或拒绝客户端D对在存储器条MB(1,1)上执行其所请求的存储器操作的同时发生的请求。对客户端D的阻止或拒绝在图3中用标号270d表示,其中X表示对客户端D的请求的阻止或拒绝,并且短虚线表示客户端D未实现的对访问存储器条MB(1,1)的请求。对于客户端D,基于列的重新构建和基于行的重新构建都不是有效的,因为基于列的重新构建和基于行的重新构建二者正在针对其它客户端被执行,并且因而第1列和第1行的所有存储器条都被阻止直接访问。

因此,在实施例中,存储器控制器258反过来访问存储器设备250中的所有其它未被访问的存储器条252和冗余存储器条255(例如存储器条(r,t),其中2≤r≤(n+1)且2≤t≤(m+1)),并且对存储在(n+1)×(m+1)阵列的所有其它未被访问的初始存储器条和附加存储器条中的内容执行纠错码运算(例如奇偶校验计算或逐位XOR运算或函数),以重新构建存储在目标存储器条MB(1,1)中的内容数据。例如,逐位XOR运算针对存储在(n+1)×(m+1)阵列的其它未被访问的存储器条252和冗余存储器条255中的数据被执行,以重新构建存储在初始存储器条MB(1,1)中的内容数据。这样,在该示例中,存储在初始存储器条MB(1,1)中的内容数据存储在冗余存储器条RMB(n+1,2)到RMB(n+1,m+1)和RMB(2,m+1)到RMB(n+1,m+1)中的冗余数据被重新构建,而不直接访问存储器条MB(1,1)。因此,存储器控制器258利用未被访问的存储器条来重新构建存储在目标存储器条MB(1,1)中的内容数据(这用连接到客户端D的请求265d的长虚线箭头268d被暗示性地示出)。

因此,随着同时发生的访问请求的数目的增加,存储在目标存储器条中的内容可以利用更多维度的存储器条阵列和相应的冗余存储器条255被重新构建。实际上,虽然图3示出了存储器条252的二维布置(例如n×m),但是在其它实施例中,对存储器条的布置可以直观地被扩展到多于两维(例如n×m×p、n×m×p×q等等)以按照类似的方式来支持所需要的附加存储器访问带宽和同时发生的客户端请求。

与图2类似,虽然以上针对图3的存储器设备250讨论的示例性场景描述了多达四个客户端260-268在单个时钟周期中试图访问相同的存储器条,但是示例性场景所示出的原理很容易被适配用于其它场景,以用于对一组存储器条252的共同发生的共享访问,例如当在若干个时钟周期上第一客户端的请求阻止对目标存储器条的访问时,或者当存在多于四个客户端时。还是类似于图2,图3的示例性场景所示出的原理不仅仅局限于读存储器操作,而是可以被应用于其它存储器操作,例如写存储器操作。

图4A-4D示出了可扩展的体系架构300,该体系架构300允许更多数目的可能实质上同时、同时发生或交迭的存储器操作在存储器设备中被执行。可扩展的体系架构300可以被包括在例如图1的存储器设备104、图2的存储器设备200和/或图3的存储器设备250的实施例中。在一些实施例中,体系架构300是对物理资源的逻辑布置,并且在一些实施例中,体系架构300至少部分地是对物理资源的物理布置。

在实施例中,如果需要,可扩展的体系架构300支持递归方法,以提供对共享存储器的更多访问,体系架构可扩展到4倍的存储器访问带宽以上。具体而言,在实施例中,可扩展体系架构300是可以被配置用于不同层级的存储器访问带宽的存储器条的布置,层级例如两个层级、三个层级或一些其它合适的或所需要数目的层级。在实施例中,可扩展体系架构300的每个更高的层级对应于更大的存储器访问带宽,并且对特定层级的布置基于紧挨着的较低层级的布置,如下面所详细描述的。在实施例中,共享存储器设备(例如存储器设备104,200或250)被配置有所需要数目的层级以支持所需要的存储器访问带宽。

如这里所使用的,符号“xb”指共享存储器访问或存储器访问带宽的大小,其中b为整数。例如,“x1”指其中只有一个客户端能够在时钟周期中访问存储在特定存储器条中的内容数据的存储器体系架构。“x2”指允许两个客户端同时确定存储在特定存储器条中的内容数据的存储器体系架构(例如相对于x1设备,带宽加倍),“x4”指允许四个客户端同时确定存储在特定存储器条中的内容数据的存储器体系架构(例如相对于x1设备,带宽变为四倍),依此类推。

在实施例中,可扩展体系架构300被配置在支持单一带宽访问(例如x1)的初始层级301处,如图4A中所示。具体而言,对于每个时钟周期,存储在每个存储器条302a-302t中的内容数据可被用于仅针对一个客户端的存储器控制器直接访问。因此,每个初始存储器条302a-302t具有单一访问带宽,并且通常被称为“MBx1”。

图4B示出了可扩展体系架构300的第二层级305a的实施例,第二层级相对于初始层级301所提供的存储器访问带宽支持双倍的存储器访问带宽(例如x2)。可扩展体系架构300的第二层级305a利用存储器条的群组,该群组包括一组单一存储器条302a-302t和对应的冗余存储器条310a。内容数据被存储在一组单一存储器条302a-302t中,并且冗余数据被存储在第二层级的冗余存储器条310a中。在实施例中,存储在冗余存储器条310a中的冗余数据包括基于存储在存储器条302a-302t中的内容数据的纠错码运算的结果。例如,纠错码运算是对存储在存储器条302a-302t中的内容数据的逐位XOR函数或运算。这样,当可扩展体系架构300被配置在第二层级305a处时,两个客户端能够同时获得存储在存储器条302a-302t中的内容数据。例如,存储器控制器代表第一客户端直接访问存储在目标存储器条302中的内容数据,并且存储器控制器代表第二客户端按照例如之前针对图2所讨论的方式来重新构建目标存储器条302的内容数据。应当注意,冗余存储器条310a在这里通常被称为“RMBx2”,因为第二层级的冗余存储器条310a允许共享存储器设备的2倍的存储器访问带宽。

图4C示出了可扩展体系架构300的第三层级310的实施例(例如比图4B中所示的第二层级305a高的下一个层级)。在实施例中,第三层级310支持高达初始层级301的存储器访问带宽的四倍的存储器访问带宽(例如x4)。在实施例中,第三层级310包括存储内容数据的多个第二层级群组的实例305a-305v。就这里所使用的符号惯例而言,第二层级群组的每个实例305a-305v被称为“MBx2”,因为每个第二层级群组被配置为支持x2的存储器访问带宽。在示例中,图4B的第二层级群组305a被包括在图4C的第三层级群组310中。

在实施例中,初始存储器条的每个第三层级群组310还包括相应的冗余存储器条312(在这里通常被称为“RMBx4”,因为第三层级的附加存储器条允许有存储器设备的x4的存储器访问带宽)。在第三层级310处的冗余存储器条312用于存储与第二层级群组305a-305v相对应的冗余数据。例如,在实施例中,第三层级的附加存储器条312包括基于存储在第二层级群组305a-305v中的纠错码计算的结果。在一个示例中,当可扩展体系架构300被包括在例如图1的网络设备100的分组处理系统中时,共享的内容表格被存储在第二层级群组305a的每个单一存储器条302a-302t上并且被存储在与其它第二层级群组305b-305v相对应的各个单一存储器条上,并且与对存储在群组305a-305v中的内容数据的逐位XOR运算的结果相对应的冗余数据被存储在冗余存储器条312中。

图4D示出了图3C的第三层级群组310的扩展视图。每个第二层级群组305a-305v被扩展以显示其相应的一组单一存储器条和相应的冗余存储器条。例如,第二层级群组305a包括单一存储器条302a-302t和用以存储基于存储在存储器条302a-302t中的内容数据的冗余数据的对应的冗余存储器条310a。第二层级群组305b包括单一存储器条315a-315t和用以存储基于存储在存储器条315a-315t中的内容数据的冗余数据的对应的冗余存储器条310b。第二层级群组305v包括单一存储器条318a-318t和用以存储基于存储在存储器条318a-318t中的内容数据的冗余数据的对应的冗余存储器条310n。这样,在其中图4D的x4可扩展布置310被包括在网络设备(例如图1的网络设备100)中的实施例中,被交换核用来处理分组的共享数据表格的内容被存储在单一存储器条IMBx1(例如存储器条302a-302t、315a-315t、...以及318a-318t)上,对存储在存储器条302a-302t中的内容数据的逐位XOR操作的结果作为冗余数据被存储在冗余存储器条310a中,对存储在存储器条318a-318t中的内容数据的逐位XOR操作的结果作为冗余数据被存储在冗余存储器条310n中,依此类推。

图4C的第三层级冗余存储器条312在图4D中也被扩展,以显示存储器条312包括一组冗余存储器条310m-310(t+1),每个冗余存储器条存储与存储内容数据的存储器条的对应子集的内容相对应的纠错码计算的相应结果。例如,冗余存储器条310m包括与MBx1存储器条302a,315a,...以及318a的内容相对应的纠错码计算的结果。冗余存储器条310t包括与MBx1存储器条302t,315t,...以及318t的内容相对应的纠错码计算的结果。冗余存储器条310(t+1)包括与RMBx1附加存储器条310a,310b,...以及310n相对应的纠错码计算的结果。在实施例中,与冗余存储器条310a-310n和310m-310(t+1)相对应的纠错码计算分别是奇偶校验计算,例如对相应的内容数据执行的逐位XOR函数或运算。

因而,通过扩展体系架构300以包括第三层级群组310,多达四个客户端能够同时请求访问存储在特定的单一存储器条(例如存储器条302a-302t,315a-315t或318a-318t中的一个存储器条)中的内容数据。在实施例中,为了实现对存储在目标存储器条中的内容数据的访问的第三客户端或第四客户端请求的请求,按照例如之前针对图2所讨论的方式的第一纠错码计算被应用于第三层级群组310,然后下一个纠错计算被递归地应用于合适的第二层级群组305a-305v。

注意可扩展体系架构300可以被扩展到高于x4的层级,以支持所需要的更大的存储器访问带宽。总地来说,所需要的体系架构300的扩展层级包括一组紧挨着的之前的较低层级的群组。在所需要的扩展层级处的冗余存储器区块与紧挨着的之前层级的每个群组相关联,并且存储对一组紧挨着的之前的较低层级的群组的纠错码计算的结果。在实施例中,存储器控制器(例如控制器308、控制器358或类似的控制器)可以在不直接目标单一初始存储器区块的情况下通过递归地执行纠错计算(例如诸如逐位XOR运算或函数之类的奇偶校验计算)来重新构建存储在目标单一存储器区块中的内容数据。

图5是根据实施例的、在具有存储内容数据的第一组存储器条和用以存储与内容数据相关联的冗余数据的第二组一个或多个存储器条的存储器设备中执行存储器操作的示例性方法450的流程图。方法450例如可以结合针对图2、3和图4A-4D中的一个或多个示图描述的实施例被使用。在实施例中,方法450结合例如图1的网络设备100中的分组处理系统被执行。为了便于说明,方法450针对图2、图3和图4A-4D被描述,但是在其它实施例中,方法450可以结合其它合适的设备被执行。

在框452处,在实施例中,在存储器设备或者包括存储器设备的系统的单个时钟周期期间,至少两个对在存储器条(例如“目标”存储器条)上执行相应的存储器操作的请求被接收到。在实施例中,目标存储器条是存储一个或多个客户端所感兴趣的内容数据的第一组存储器条中的一个存储器条。例如,在实施例中,内容数据包括被交换核用来处理分组的共享数据表格。在实施例中,至少两个请求在共享存储器设备的存储器控制器处被接收(框452),在实施例中,共享存储器设备例如存储器设备200、存储器设备250和/或存储器设备300。来自两个不同客户端的至少两个请求被接收(框452)。在实施例中,至少两个请求被接收自多核网络设备的至少第一分组处理核和第二分组处理核。在另一实施例中,至少两个请求被接收自分组处理器的第一流水线级和第二流水线级。在另一实施例中,至少两个请求被接收自第一电路和第二电路。

在框455处,在实施例中,对目标存储器条的直接访问针对至少两个请求中的第一请求被许可或允许。例如,诸如控制器208或控制器258之类的存储器控制器确定请求中的一个请求被允许(例如基于优先级信息、请求到达的顺序或者某种其它合适的标准)并且许可或允许所确定的请求。这样,在框458处,存储在目标存储器条中的内容数据响应于第一请求被直接访问。例如,存储器控制器代表被许可的第一请求直接访问目标存储器条。在框460处,与被许可的第一请求相对应的相应的存储器操作被执行。例如,在实施例中,存储器控制器利用在框458处得到的数据执行与被许可的第一请求相对应的存储器操作。

在框462处,在实施例中,针对在框452处接收到的其它请求,对目标存储器条的直接访问被拒绝或阻止。例如,诸如控制器208或控制器258之类的存储器控制器确定其它请求要被阻止或拒绝,因为目标存储器条被配置为每个时钟期间只接受一个直接访问存储器操作。这样,存储器控制器针对其它请求阻止对目标存储器条的直接访问。

在框465处,作为对确定了至少两个请求中的一个或多个请求被拒绝或阻止(框462)的响应,与目标存储器区块中的内容数据相对应的冗余数据被获得。例如,与目标存储器区块中的内容数据相对应的冗余数据从存储冗余数据的另外的存储器区块中被直接访问。在实施例中,存储在另外的存储器区块中的冗余数据不仅仅是存储在目标存储器区块中的内容数据的备份,而是不同于对应的内容数据并且适合于当访问被阻止时利用纠错技术重新构建目标存储器区块中的内容数据。例如,在实施例中,冗余数据对应于对至少目标存储器条中的内容数据执行的纠错码计算(例如奇偶校验计算)的结果。在特定实例中,冗余数据对应于被应用于存储在至少第一组存储器条的子集中的内容数据的逐位XOR运算,子集包括目标存储器条。

在一些实施例中,框465包括获得存储在第一组存储器条中除目标存储器条以外的一个或多个存储器条中的内容数据。例如,在实施例中,存储器控制器(例如控制器308或358)直接访问第一组存储器条中除目标存储器条以外的一个或多个存储器条以获得内容数据。

在框468处,存储在目标存储器条中的内容数据被重新构建,而不直接访问目标存储器条。例如,存储在目标存储器条中的内容数据利用在框465处获得的冗余数据被重新构建。在实施例中,存储在目标存储器条中的内容数据利用存储在第一组存储器条中除目标存储器条以外的存储器条中的内容数据被另外重新构建。在实施例中,框468包括对存储在除目标存储器条以外的一个或多个存储器条中的冗余数据和内容数据执行纠错码计算。这种重新构建的示例在之前针对图2和图3被讨论过,并且用于重新构建的其它合适的技术被用在其它实施例中。在框470处,与被拒绝的请求(框462)相对应的相应的存储器操作利用在框468处被重新构建的内容数据被执行。

图6是根据实施例的提供对存储器设备的共享访问的示例性方法500的流程图。方法500例如可以结合针对图3、图4A-4D和图5中的一个或多个图描述的实施例被使用。在实施例中,方法500结合例如图1的网络设备100中的分组处理系统被使用。为了便于说明,方法500针对图3、图4A-4D和图5被描述,但是在其它实施例中,方法500可以结合其它合适的设备和方法进行操作。

在框502处,对在特定的初始存储器条(例如“目标”存储器条)上执行存储器操作的请求被接收。例如,在实施例中,客户端向存储器控制器发送请求以读取存储在目标存储器条中的内容的至少一部分。在实施例中,目标存储器条是存储内容数据的第一组存储器条中的一个存储器条。

在框505处,确定对目标存储器条的访问是否被阻止。例如,在实施例中,如果目标存储器条当前正在被另一客户端访问,则访问被阻止。如果确定对目标存储器条的访问没有被阻止,则在框510处,与目标存储器条相对应的存储器操作被执行。

然而,如果在框505处确定目标存储器条被阻止访问,则流程进行到框515。在框515处,对与目标存储器条相对应的冗余数据的访问以及对一组存储器条中的其它存储器条的子集的访问被尝试。在框518处,确定对冗余数据和/或其它存储器条的子集中的任意存储器条的访问是否被阻止(例如,作为另一客户端的请求的结果)。如果在框518处,冗余数据和/或其它存储器条的子集中的任意存储器条中的任一个被确定为被阻止直接访问,则流程进行到框520。在框520处,确定是否还有冗余数据和一组初始存储器条中的存储器条的另一子集。如果确定还有冗余数据和存储器条的另一子集,则流程返回到框515。

另一方面,在框520处,如果确定没有更多的冗余数据可供访问以重新构建目标存储器条的内容,则在框522处,对目标存储器条的访问被延迟到后续的或将来的时钟周期。例如,在将来的时钟周期期间,在实施例中,对目标存储器条的访问被重新尝试,例如方法500返回到框505。

如果在框518处,冗余数据和存储器条的子集中的存储器条被确定为可访问的,则流程进行到框525。在框525处,冗余数据和存储器条的子集中的内容数据被访问。在框528处,存储在目标存储器条中的内容数据基于冗余数据和存储在存储器条的子集中的内容数据被重新构建。例如,纠错码计算针对冗余数据和从存储器条的子集中访问得到的内容数据被执行以确定存储在目标存储器条中的内容数据。在一个实施例中,纠错码计算是奇偶校验计算,例如逐位异或函数或运算。因而,存储在目标存储器条中的内容数据被重新构建,而不直接访问目标存储器条。

在框530处,在框502处接收到的请求所指示的存储器操作利用在框528处所重新构建的内容数据被执行。

仅作为涉及方法500的一个示例,参考图3,当目标存储器条(例如MB(1,1))被阻止访问时(如在框505处所确定的),基于列的重新构建被尝试(例如针对第1列中除了MB(1,1)以外的内容),如框515所示。如果被用在基于列的重新构建中的存储器条中的任意存储器条被阻止访问,则基于行的重新构建被尝试(例如针对第1行中除了MB(1,1)以外的内容)。如果被用在基于行的重新构建中的存储器条中的任意存储器条被阻止访问,则基于阵列的重新构建被尝试(例如针对图3的(n+1)×(m+1)阵列中除了第1行和第1列以外的内容)。如果被用在基于阵列的重新构建中的存储器条中的任意存储器条被阻止访问,则方法500进行到框522,以等待直到将来的时钟周期为止。否则,目标存储器条的内容基于在框525处的成功访问被重新构建(例如如框528所示)。

上述各种模块、操作和技术中的至少一些可以用硬件、执行固件和/或软件指令的处理器或计算机,或者它们的组合来实现。当利用执行软件或固件指令的处理器来实现时,可执行的软件或固件指令可以被存储在任何非暂时性的、有形的计算机可读或机器可读的存储器中,例如存储在磁盘、光盘或者其它有形的存储介质上、RAM或ROM或闪存、处理器、硬盘驱动、光盘驱动、磁带驱动等中。软件或固件指令可以包括被存储在另外一个或多个计算机可读或机器可读存储介质的非暂时性的有形存储器上的计算机可读或机器可读指令,这些指令在被处理器执行时使得处理器执行各种动作。当用硬件来实现时,硬件可以包括一个或多个分离的组件、集成电路、专用集成电路(ASIC),可编程逻辑器件(PLD)等。

虽然已参考具体示例对本发明进行了描述,但是具体示例只是说明性的并且不希望限制本发明,在不脱离本发明的范围的情况下,可以对所公开的实施例进行改变、补充和/或删减。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号