用于在存储器中执行同时读取和写入操作的系统和方法与流程

文档序号:11288479阅读:791来源:国知局
用于在存储器中执行同时读取和写入操作的系统和方法与流程

相关申请的交叉引用

本申请要求对其整体公开内容通过在此引用而被结合于此、提交于2014年12月9日、名称为“writeroutineduringxoroperationswithoutbackpressuringnonwritinginterfaces”的第62/089,428号美国临时申请的权益。

本公开内容总体上涉及计算机存储器,并且更特别地涉及具有多个存储器组并且存储奇偶校验信息的存储器设备以支持多个同时存储器存取。



背景技术:

在此提供的背景描述用于总体上呈现公开内容的情境的目的。当前具名的发明人的工作在这一背景技术章节中描述该工作的范围内以及该描述的可能没有在提交申请时以其它方式限定为现有技术的方面既未明示地也未暗示地被承认为针对本公开内容而言的现有技术。

常规存储器设备通常被配置以使得在任何给定的时钟周期期间,在特定存储器块处仅单个存储器操作(比如读取操作)能够被执行。相似地,可能不可能在时钟周期期间在如下特定存储器块中执行各种读取操作,在该时钟周期中写入操作正在相同特定存储器块处被执行。另外,因为写入操作可能需要若干时钟周期来完成,所以读取操作的执行也可以在常规存储器中被延迟若干周期。在一些联网或者切换应用的情境中,用于分组处理的各种数据(例如,控制表、转发表等)在各种切换设备或者单个设备的切换核之中被共享。有时,这些多个设备和核需要在相同时钟周期期间在特定存储器块中执行读取和写入操作。

然而,常规存储器设备中的、对多个设备和核快速地读取在共享存储器中存储的数据或者向共享存储器写入数据的能力的限制可能例如造成切换能力的减少。虽然每个设备可以被提供有它自己的相应存储器,但是这样的解决方案在附加存储器的直接成本方面以及在为了保持不同存储器同步而需要的资源方面都是昂贵的。



技术实现要素:

在一个实施例中,一种存储器包括:内容存储器组集合,被配置为存储内容数据;与内容存储器组集合对应的奇偶校验存储器组,被配置为存储奇偶校验信息;与奇偶校验存储器组对应的寄存器;第一存储器接口,被配置为:响应于接收用于向内容存储器组集合写入的写入请求,在多个时钟周期内执行写入操作,包括在与写入请求对应的奇偶校验信息被写入到奇偶校验存储器组之前,在寄存器中暂时地存储奇偶校验信息;以及第二存储器接口,被配置为:响应于i)接收用于从内容存储器组集合中的存储器组读取数据的读取请求,以及ii)确定响应于读取请求的信息将使用奇偶校验信息而被重构,有选择地使用来自i)寄存器或者ii)奇偶校验存储器组的信息,以重构响应于读取请求的信息。

在另一实施例中,一种向存储器设备写入新数据的方法包括:利用存储器接口设备在初始时钟周期中向内容存储器组中的第一位置写入新内容数据,内容存储器组在存储器设备的多个内容存储器组的集合之中;利用存储器接口设备向与奇偶校验存储器组对应的寄存器写入新奇偶校验信息;与向寄存器写入新奇偶校验信息结合,为其它存储器接口设备设置指示符,该指示符是奇偶校验存储器组中的第二位置中的奇偶校验信息不应被使用;在初始时钟周期之后的后续时钟周期中从寄存器向奇偶校验存储器组中的该第二位置传送新奇偶校验信息;以及与从寄存器向奇偶校验存储器组中的该第二位置传送新奇偶校验信息结合,清除该指示符。

在又一实施例中,一种从包括内容存储器组集合和奇偶校验存储器组的存储器设备读取数据的方法包括:接收用于从在内容存储器组集合之中的第一内容存储器组中的位置读取数据的请求;确定第一内容存储器组是否在时钟周期期间可用于读取操作;响应于确定第一内容存储器组在该时钟周期期间可用于读取操作,取回在第一内容存储器组中的位置处存储的数据;以及响应于确定第一内容存储器组在该时钟周期期间不可用于读取操作,有选择地读取i)来自与奇偶校验存储器组对应的寄存器的奇偶校验数据或者ii)来自奇偶校验存储器组的奇偶校验数据;以及使用i)从与奇偶校验存储器组对应的寄存器读取的奇偶校验数据或者ii)从奇偶校验存储器组读取的奇偶校验数据来重构在第一内容存储器组中的该位置处存储的数据。

附图说明

图1是根据一个实施例的示例存储器设备的框图。

图2是根据一个实施例的向图1的存储器设备写入数据的示例方法的流程图。

图3是根据一个实施例的从图1的存储器设备读取数据的示例方法的流程图。

图4是根据一个实施例的另一示例存储器设备的框图。

图5是根据一个实施例的向图4的存储器设备写入数据的示例方法的流程图。

图6是根据一个实施例的从图5的存储器设备读取数据的示例方法的流程图。

图7是根据一个实施例的从图5的存储器设备读取数据的另一示例方法的流程图。

图8是根据一个实施例的包括共享存取存储器的示例网络设备的框图。

具体实施方式

以下描述了存储器设备的各种实施例。在一些实施例中,在此描述的存储器设备利用在通过在此完全引用而被结合于此、名称为“sharingaccesstoamemoryamongclients”的第8,514,651号美国专利中描述的技术。

图1是根据一个实施例的示例存储器设备100的框图。存储器设备100包括用于存储内容数据的存储器组104、108(在此有时被称为“内容存储器组”)的集合。存储器设备100也包括用于存储适合用于由纠错算法使用的冗余性信息的存储器组112(在此有时被称为“奇偶校验存储器组”)。在一个实施例中,存储器组104、108和112是单端口存储器。存储器设备100与更大单端口存储器比较的优点之一是吞吐量被增加,因为内容存储器组104、108中的任一内容存储器组中的多于一个位置中的数据可以在单个时钟周期中被读取——i)存储器104、108之一中的一个位置被直接地读取,ii)而存储器104、108之一中的不同位置处的内容信息使用从存储器104、108中的另一存储器读取的内容信息以及从奇偶校验存储器组112读取的冗余性信息而被重构。

在一些实施例中,每个存储器组104、108被构造为行的阵列。存储器组104、108、112的行具有相应地址,其中存储器组(mb1)104的相应行与存储器组(mb2)108的相应行和与存储器组(pb)112的相应行对应。例如,mb1的行1与mb2的行1和pb的行1对应;mb1的行2与mb2的行2和pb的行2对应;等等。

在一个实施例中,pb112的每行中的奇偶校验数据(在此有时被称为“冗余性数据”)利用mb1的对应行中和mb2的对应行中的内容数据而被计算。更一般而言,在一个实施例中,pb112的第i行中的奇偶校验数据利用mb1的第i行中和mb2中的第i行中的内容数据而被计算,其中i是整数索引。因此,例如,如果因为mb1正忙于执行某个其它存储器操作而在特定时钟周期中对mb1的读取访问被阻止,可以在该时钟周期期间通过代之以从mb2的第i行读取内容数据和从pb112的第i行读取奇偶校验数据并且然后使用来自mb2的第i行的内容数据和来自pb112的第i行的奇偶校验数据重构来自mb1的第i行的内容数据,来有效地读取来自mb1的第i行的内容数据。对照而言,利用常规单端口存储器,从第一行读取将阻止从相同存储器的任一行读取的并行读取操作。然而,利用存储器设备100,如果两个同时接收的读取请求(第一读取请求和第二读取请求)是用于mb1、mb2中的同一个,则批准第一读取请求访问mb1、mb2之一,并且通过使用来自mb1、mb2中的另一个的对应行的数据和来自pb112的对应行的奇偶校验数据重构请求的内容数据来服务于第二读取请求。

在一些实施例中,使用适当纠错码(ecc)来计算pb112中的奇偶校验数据,从而使得mb1104或者mp2108之一中的内容数据可以使用i)mb1104或者mp2108中的另一个中的内容数据和ii)pb112中的奇偶校验数据而被重构。例如,在一个实施例中,通过异或(xor)mb1的第i行中的内容数据与mb2的第i行中的内容数据来计算pb112的第i行中的奇偶校验数据。因此,在一个实施例中,mb1104或者mp2108之一的第i行中的内容数据可以通过异或i)mb1104或者mp2108中的另一个的第i行中的内容数据与ii)pb112的第i行中的奇偶校验数据而被重构。

在具有多个内容存储器组和奇偶校验存储器组的现有存储器设备中,写入操作将延迟服务于所有读取请求,因为直至i)向内容存储器组之一写入新内容数据和ii)向奇偶校验存储器组写入新奇偶校验数据(与新内容数据对应)才能认为存储器设备中的内容有效。另外,在现有存储器设备中,也将延迟服务于向正被写入的存储器组中的其它存储器位置的读取请求,直至完成写入操作。然而,在以下描述的各种实施例中,用于向存储器设备(比如存储器设备100)写入的技术允许甚至在完成写入操作之前服务于读取请求。

存储器设备100也包括与pb112关联的一个或者多个寄存器116。如以下将更具体描述的那样,利用一个或者多个寄存器116(在此有时被简称为“寄存器116”)以当在pb112中存储奇偶校验信息之前存储奇偶校验信息。在一些实施例中,用于向mb1和mb2之一写入新内容数据的写入操作在若干时钟周期内出现,并且包括暂时地向寄存器116存储新奇偶校验数据并且以后从寄存器116向pb112传送新奇偶校验信息以完成写入操作。如以下将被说明的那样,这样的写入操作更快地实现恢复服务于读取请求(如与现有设备相比较的那样),因为可以仅利用存储器设备100的多个读取/写入接口之一来执行写入操作,因此保持存储器设备100的其它读取/写入接口可用于服务于读取请求。

存储器接口设备118包括处置来自多个客户端的同时读取和写入请求的多个读取/写入接口设备120。例如,读取/写入接口设备120-1处置来自第一客户端(客户端1)的读取和写入请求,并且读取/写入接口设备120-2处置来自第二客户端(客户端2)的读取和写入请求。每个读取/写入接口设备120被耦合到mb1104、mb2108、pb112和寄存器116,并且每个读取/写入接口设备120可以有选择地从mb1104、mb2108、pb112和寄存器116读取以及向mb1104、mb2108、pb112和寄存器116写入。在一个实施例中,读取/写入接口设备120、mb1104、mb2108、pb112和寄存器116利用时钟信号(在图1中未示出),而在一个实施例中,存储器设备100在时钟信号的单个周期期间支持两个同时读取操作。在一个实施例中,存储器设备100包括仲裁器电路(未示出),该仲裁器电路在读取/写入接口设备120-1或者读取/写入接口设备120-2正在尝试访问特定,存储器组(例如mb1104、mb2108)时判决读取/写入接口设备120-1或者读取/写入接口设备120-2中的哪个读取/写入接口设备在特定时钟周期期间得到对同一存储器组的直接访问。

如以上简洁地讨论的那样,在一些实施例中,当在pb112中存储奇偶校验信息之前在寄存器116中初始地存储与向内容存储器组新写入的内容对应的新奇偶校验信息。因而,每个读取/写入接口设备120包括电路124,该电路被配置为确定读取/写入接口设备120是否将从pb112读取奇偶校验数据或者读取/写入接口设备120是否应当代之以从寄存器116读取奇偶校验数据。

在读取/写入接口设备120-1接收与mb1104中的可寻址位置对应的读取请求时,并且如果读取/写入接口设备120-1能够得到对mb1104的访问,则读取/写入接口设备120-1通过从mb1104中的对应位置读取来服务于读取请求。相似地,在读取/写入接口设备120-1接收与mb2108中的可寻址位置对应的读取请求时,并且如果读取/写入接口设备120-1能够得到对mb2108的访问,则读取/写入接口设备120-1通过从mb2108中的对应位置读取来服务于读取请求。在一些实施例中,读取/写入接口设备120-2被配置为以相似方式操作。

在另一方面,在读取/写入接口设备120-1接收与mb1104中的可寻址位置对应的读取请求时,并且如果读取/写入接口设备120-1不能得到对mb1104的访问,则读取/写入接口设备120-1通过代之以从mb2108中的对应可寻址位置读取内容信息和从pb112中的对应可寻址位置读取奇偶校验信息来服务于读取请求,并且然后例如通过异或从mb2108中的对应位置取回的内容信息与从pb112中的对应可寻址位置取回的奇偶校验信息来重构mb1104中的特定存储器位置中的信息。相似地,在读取/写入接口设备120-1接收与mb2108中的可寻址位置对应的读取请求时,并且如果读取/写入接口设备120-1不能得到对mb2108的访问,则读取/写入接口设备120-1通过代之以从mb1104中的对应可寻址位置读取内容信息和从pb112中的对应可寻址位置读取奇偶校验信息来服务于读取请求,并且然后通过异或从mb1104中的对应位置取回的内容信息与从pb112中的对应位置取回的奇偶校验信息来重构mb2108中的特定存储器位置中的信息。在一些实施例中,读取/写入接口设备120-2被配置为例如使用与奇偶校验数据结合利用部分数据的其它适当纠错算法来以相似方式服务于读取请求。

在一些实施例中,读取/写入接口设备120-1被配置为用以下更具体描述的方式在若干时钟周期内执行写入操作(包括更新奇偶校验数据),从而使得没有阻止另一读取/写入接口设备120-2在读取/写入接口设备120-1的写入操作期间执行读取操作。相似地,在一些实施例中,读取/写入接口设备120-2被相似地配置为在若干时钟周期内执行写入操作(包括更新奇偶校验数据),从而使得没有阻止另一读取/写入接口设备120-1在读取/写入接口设备120-2的写入操作期间执行读取操作。这特别地明显,因为利用一些现有存储器设备,在各种实施例中,有效地阻止在执行写入操作之时处置所有读取请求(或者至少一些)。例如,利用一些现有存储器设备,在各种实施例中,写入操作利用多个读取/写入接口,因此有效地防止那些多个读取/写入接口处置任何读取请求,直至完成写入操作。

例如,在具有与图1的存储器设备100相似的结构的现有技术设备中,在各种实施例中,将在用于向内容存储器组mb1、mb2之一写入新内容以及用于更新pb112中的奇偶校验数据的写入操作期间征召(enlist)读取/写入接口120。例如,向存储器组mb1、mb2之一写入新内容在一个实施例中也需要更新pb112中的奇偶校验数据以反映新内容数据,而更新pb112中的奇偶校验数据在一个实施例中需要使用i)mb1、mb2之一中的旧内容数据以及ii)pb112中的旧奇偶校验数据以计算新奇偶校验数据。因此,具有与图1的存储器设备100相似的结构的现有技术设备例如使用读取/写入接口设备120-1以在第一时钟周期中从mb1读取旧内容数据,并且使用读取/写入接口设备120-2以也在第一时钟周期中从pb112读取旧奇偶校验数据(与旧内容数据对应)。新内容数据、来自mb1的旧内容数据和来自pb112的旧奇偶校验数据然后用来计算新奇偶校验数据。在第二时钟周期中,读取/写入接口设备120-1用来向mb1写入新内容数据,并且读取/写入接口设备120-2用来向pb112写入新奇偶校验数据。因此,在这样的现有技术设备中,不能在第一时钟周期或者第二时钟周期中的任一时钟周期中服务于读取请求,因为两个读取/写入接口设备120忙于执行任务作为用于向mb1写入新内容数据和用于更新pb112中的奇偶校验数据的写入操作的部分。

图2是根据一个实施例的、在多个时钟周期内与利用具有多个存储器组的存储器设备执行一个或者多个读取操作并行地利用存储器设备执行写入操作的示例方法200的流程图。在一个实施例中,在方法200中包括的写入操作可以由单个读取/写入接口设备实施,因此保持另一读取/写入接口可用于处置与执行写入操作并行的读取请求。根据一些实施例,每个读取/写入接口设备120被配置为在方法200中实施写入操作,并且出于说明目的而参照图1来描述方法200。然而,在其它实施例中,方法200由具有多个存储器组的另一适当存储器设备实施。相似地,在一些实施例中,每个读取/写入接口设备120被配置为实施用于利用具有多个存储器组的存储器设备执行写入操作的另一适当方法。在一个实施例中,存储器设备是分别地具有多个地址并且支持在任何给定的时钟周期中执行仅单个存储器操作(例如,读取或者写入操作)的单端口存储器。

仅出于说明目的而在读取/写入接口120-1执行写入操作以向mb1104中的特定位置(例如,mb1104的具有关联地址的特定行)写入内容数据的写入操作的情境中描述方法200。在其它场景中,利用相似技术以执行用于向mb2108中的特定位置写入内容数据的写入操作。相似地,在其它场景中,读取/写入接口120-2执行用于向mb1104或者mb2108中的特定位置写入内容数据的相似写入操作。

方法200包括写入新内容数据mb1104。然而,由于正在向mb1104写入新内容数据,所以在一个实施例中必须计算并且然后向pb112存储对应的新奇偶校验数据。在一个实施例中使用i)新内容数据、ii)mb1104中的在将被新内容数据改写的位置的旧内容数据和iii)pb112中的在将被新奇偶校验数据改写的位置的旧奇偶校验数据来计算新奇偶校验数据。

在操作204处,在一个实施例中,在第一时钟周期中从第一内容存储器组中的将在其写入新内容数据的位置读取旧内容数据。例如,在一个实施例中,读取/写入接口120-1在第一时钟周期中从mb1104中的将在其写入新内容数据的可寻址位置读取旧内容数据。

在操作208处,在第二时钟周期中从奇偶校验存储器组中的与第一存储器组中的将在其写入新内容数据的位置对应的位置读取旧奇偶校验数据。例如,在一个实施例中,读取/写入接口120-1在第二时钟周期中从pb112中的与mb1104中的将在其写入新内容数据的位置对应的位置读取旧奇偶校验数据。

在操作212处,使用i)新内容数据、ii)在操作204处读取的旧内容数据和iii)在操作208处读取的旧奇偶校验数据来生成新奇偶校验数据。例如,在一个实施例中,读取/写入接口120-1通过一起异或i)将向mb1104写入的新内容数据、ii)在操作204处从mb104读取的旧内容数据和iii)在操作208处从pb112读取的旧奇偶校验数据来生成新奇偶校验数据。

在操作216处,在第三时钟周期中向第一内容存储器组中的位置写入新内容数据。例如,在一个实施例中,读取/写入接口120-1在第三时钟周期中向mb1104中的位置写入新内容数据。

在操作220处,也在第三时钟周期期间,在一个实施例中向与奇偶校验存储器组关联的寄存器写入新奇偶校验数据。例如,读取/写入接口120-1在第三时钟周期中向寄存器116写入新奇偶校验数据。也设置向另一存储器接口的指示符,该指示符是不应访问奇偶校验存储器组中的对应位置。例如,在一个实施例中,读取/写入接口120-1设置指示符。在各种实施例中,指示符包括奇偶校验存储器组中的对应位置的地址、与奇偶校验存储器组中的位置对应的行号、奇偶校验存储器组的存储器阵列中的对应元素的标识符等。在一些实施例中,在寄存器116中包括指示符。例如,在一个实施例中,寄存器116的第一部分用来存储指示符,并且寄存器116的第二部分用来存储新奇偶校验数据。在另一实施例中,与奇偶校验存储器组关联的第一寄存器用来存储指示符,并且与奇偶校验存储器组关联的第二寄存器用来存储新奇偶校验数据。

在完成操作220之后,即使尚未完成整个写入过程(例如,因为尚未更新pb112中的奇偶校验数据),读取/写入接口120-2仍然可以重构mb1104中的新内容数据。例如,如果由于尚未完成写入过程而阻止读取/写入接口120-2访问mb1104,则寄存器116中的新奇偶校验数据可用于读取/写入接口120-2以供读取/写入接口120-2重构现在在mb1104中的新内容数据。

在操作224处,在第四时钟周期期间从与奇偶校验存储器组关联的寄存器向奇偶校验存储器组中的对应位置传送新奇偶校验数据。例如,在一个实施例中,读取/写入接口120-1在第四时钟周期中从寄存器116向pb112中的对应位置传送新奇偶校验数据。也清除在块220处设置的指示符。例如,在一个实施例中,读取/写入接口120-1清除指示符。在其中指示符包括奇偶校验存储器组中的对应位置的地址、与奇偶校验存储器组中的位置对应的行号、奇偶校验存储器组的存储器阵列中的对应元素的标识符等的实施例中,块224包括将地址、行号、元素标识符等设置成预定值(比如零或者某个其它适当值)以向另一存储器接口设备通知未设置指示符。

在一个实施例中,在读取/写入接口120-1执行方法200之时(例如,在第一时钟周期至第四时钟周期期间),读取/写入接口120-1不可用于处置其它读取/写入请求。然而,读取/写入接口120-2保持可用于处置读取/写入请求而读取/写入接口120-1被阻碍执行方法200。因此,在一个实施例中,方法200允许一个读取/写入接口120保持可用于处置读取/写入请求而另一读取/写入接口120被阻碍处置写入操作。

因此,方法200包括操作228,该操作包括与读取/写入接口120-1执行操作204、208、212、216、220、224中的一个或者多个操作并行地利用读取/写入接口120-2执行一个或者多个读取操作。例如,在一个实施例中,读取/写入接口120-2可以在第一时钟周期期间服务于读取请求(操作204)。如果读取请求用于从mb1104读取内容,则在第一时钟周期期间阻止mb1104(因为读取/写入接口120-1正从mb1104读取),但是读取/写入接口120-2可以通过使用mb2108中的内容数据和pb112中的奇偶校验数据重构mb1104中的请求的内容数据来服务于读取请求。

作为另一示例,在一个实施例中,在第二时钟周期(操作208)期间,mb1104和mb2108均未被阻止,并且因此读取/写入接口120-2可以服务于用于mb1104或者mb2108的读取请求。

作为又一示例,在一个实施例中,读取/写入接口120-2可以在第三时钟周期(操作216)期间服务于读取请求。如果读取请求用于从mb1104读取内容,则在第三时钟周期期间阻止mb1104(因为读取/写入接口12001正在向mb1104写入新内容数据),但是读取/写入接口120-2可以通过使用mb2108中的内容数据和pb112中的奇偶校验数据重构mb1104中的请求的内容数据来服务于读取请求。

作为再一示例,在一个实施例中,读取/写入接口120-2可以在第四时钟周期(操作224)期间服务于读取请求。如果读取请求用于从mb1104中的在操作216处在其写入新内容数据的位置读取内容,则在第四时钟周期期间阻止mb1104(例如,由于读取/写入接口120-1仍然正在完成写入操作),但是读取/写入接口120-2可以通过使用mb2108中的内容数据和在寄存器116中存储的奇偶校验数据重构mb1104中的请求的内容数据来服务于读取请求。读取/写入接口120-2由于在操作220期间设置的指示符而知道使用116中的奇偶校验数据而不是pb112本身中的奇偶校验数据。

利用被配置为执行参照图2描述的写入操作的存储器设备,例如,在一些实施例中,有时在寄存器116中而不是在pb112中存储当前奇偶校验信息。因此,在执行要求使用奇偶校验数据来重构内容数据的读取操作时(例如,由于不能直接地访问存储器组,因为处置同时存储器操作),在一些实施例中应当首先确定将从何处(例如,从pb112或者寄存器116)获得奇偶校验信息。

图3是根据一个实施例的、利用存储器设备执行读取操作的示例方法300的流程图,该存储器设备具有多个存储器组和用于暂时地存储用于重构内容数据的奇偶校验数据的寄存器。每个读取/写入接口设备120被配置为根据一些实施例来实施方法300,并且出于说明目的而参照图1描述方法300。然而,在其它实施例中,方法300由具有多个存储器组的另一适当存储器设备实施。相似地,在一些实施例中,每个读取/写入接口120被配置为实施用于利用具有多个存储器组的存储器设备执行读取操作的另一适当方法。

仅出于说明目的而在读取/写入接口120-2执行用于从mb1104中的特定位置读取内容数据的读取操作的情境中描述方法300。在其它场景中,利用相似技术以执行用于从mb2108中的特定位置读取内容数据的读取操作。相似地,在其它场景中,读取/写入接口120-1执行用于从mb1104或者mb2108中的特定位置读取内容数据的相似读取操作。

在一个实施例中,对读取/写入接口120-1是否正在并行地执行写入操作而言透明地,方法300可以由读取/写入接口120-2实施。因此,在一个实施例中,方法300可以与读取/写入接口120-1执行操作204、208、212、216、220、224中的一个或者多个操作并行地由读取/写入接口120-2执行。

在块304处,接收用于读取在第一内容存储器组中的位置处的内容数据的请求。例如,在一个实施例中,读取/写入接口120-1接收用于读取在mb1104中的位置处的内容数据的请求。

在块308处,确定是否阻止第一内容存储器,例如,由于另一读取/写入接口(例如,读取/写入接口120-1)正在读取其中的地址或者向其中的地址写入。例如,在一个实施例中,可以在读取/写入接口120-1正在执行写入操作之时(例如,在参照图2讨论的第一时钟周期、第二时钟周期、第三时钟周期和/或第四时钟周期中的一个或者多个时钟周期期间)阻止读取/写入接口设备120-2访问mb1104。在一个实施例中,设置标志以指示阻止读取/写入接口120-1访问第一内容存储器。如以上讨论的那样,在一个实施例中,存储器设备100包括仲裁器电路,并且仲裁器电路被配置为在仲裁器电路向另一读取/写入接口120(例如,读取/写入接口120-2)授权访问mb1104时设置标志。

如果在块308处确定没有阻止第一内容存储器,则流程前进到块312,在该块处读取在第一内容存储器组中的该位置处的内容数据。例如,在一个实施例中,读取/写入接口120-1从mb1104中的位置读取内容数据。

在另一方面,如果在块308处确定阻止了第一内容存储器,例如,由于正在读取其中的地址或者向其中的地址写入,则流程前进到块316,在该块处读取在第二存储器组中的对应位置处的内容数据。例如,在一个实施例中,读取/写入接口120-1从mb2108中的对应位置读取内容数据。

在块320处,确定如下指示符是否被设置,该指示符是不应访问奇偶存储器组中的对应位置(例如,由于在该位置处的奇偶校验信息过期)。例如,在比如以上参照图2描述的一个实施例中,另一存储器接口设备(例如,读取/写入接口120-1)可以在另一存储器接口设备已经在寄存器(例如,寄存器116)中存储了新奇偶校验信息但是尚未向奇偶校验存储器组中的该位置传送新奇偶校验信息时设置指示符。在一个实施例中,读取/写入接口设备120-2的电路124-2确定指示符是否被设置。在一个实施例中,在寄存器116的第一部分中存储指示符,并且电路124-2分析寄存器116的第一部分以确定指示符是否被设置。在另一实施例中,指示符被存储在与寄存器116分离的另一寄存器中,并且电路124-2分析该另一寄存器以确定指示符是否被设置。在一个实施例中,指示符包括奇偶校验存储器组中的不应当被访问的对应单元(例如,由于该位置具有过期信息)的地址,并且电路124-2比较指示符的地址与读取/写入接口设备120-2正在尝试访问的、奇偶校验存储器组112中的位置的对应地址。

现在参照图1,在一些实施例中,每个电路124包括相应比较器电路,该比较器电路被配置为比较i)与pb112中的将被访问的单元(例如,行)对应的地址、行号、存储器单元标识符等与ii)pb112中的位置不应当被访问(例如,由于在该位置的奇偶校验信息过期)这样的指示符中或者与该指示符关联的地址、行号、存储器单元标识符等。

再次参照图3,如果在块320处确定没有设置指示符,则流程前进到块324,在该块处读取在奇偶校验存储器组中的对应位置处的奇偶校验数据。例如,在一个实施例中,读取/写入接口120-2从pb112中的对应位置读取奇偶校验数据。

在另一方面,如果在块320处确定指示符被设置,则流程前进到块328,在该块处读取来自与奇偶校验存储器组关联的寄存器的奇偶校验数据。例如,在一个实施例中,读取/写入接口120-2从寄存器116读取奇偶校验数据。

在块332处,使用在块316处从第二内容存储器组取回的内容数据和在块324处从奇偶校验存储器组取回的奇偶校验数据或者在块328处从寄存器取回的奇偶校验数据来重构请求的内容数据。例如,在一个实施例中,读取/写入接口120-2通过异或从mb2108取回的内容数据与从pb112取回的奇偶校验数据或者从寄存器116取回的奇偶校验数据来重构mb1104中的请求的内容数据。

在块336处,利用来自第一内容存储器的、从第一内容存储器取回或者使用奇偶校验数据而被重构的请求的内容存储器数据对在块304处接收的请求做出响应。在一个实施例中,读取/写入接口120-2利用在块312处从mb1104取回或者在块332处使用奇偶校验数据而被重构的内容数据对读取请求做出响应。

在一些实施例中,利用如以上讨论的读取/写入过程的存储器设备包括多于两个内容存储器组。在一些实施例中,利用比如以上讨论的读取/写入过程的存储器设备包括多于一个奇偶校验存储器组。在一些实施例中,利用比如以上讨论的读取/写入过程的存储器设备被配置为处置多于两个并行存储器操作。

图4是根据一个实施例的、倍配置为存储器组的二维阵列的另一示例存储器设备400的框图。为了易于说明,阵列的第一维度在以下描述中被称为“列”,并且阵列的第二维度被称为“行”。使用术语“行”和“列”并不意味着表示存储器设备400的特定空间定向而是仅为了易于在以下描述中在第一维度与第二维度之间区分。

存储器设备400包括用于存储内容数据的存储器组的二维阵列402(在此有时被称为“内容存储器组”)。存储器设备400也包括用于存储奇偶校验信息的多个存储器组403(在此有时被称为“奇偶校验存储器组”)。第一列内容存储器组404(有时被称为“mb(i,1)”,对于i=1、2、3或者4)与对应奇偶校验存储器组408(有时被称为“pb_col1”)关联。一个或者多个寄存器412(为了简洁而有时被称为“reg_col1”或者“寄存器412”)与奇偶校验存储器组408关联。第二列内容存储器组416(有时被称为“mb(i,2)”,对于i=1、2、3或者4)与对应奇偶校验存储器组420(有时被称为“pb_col2”)关联。一个或者多个寄存器424(为了简洁而有时被称为“reg_col2”或者“寄存器424”)与奇偶校验存储器组420关联。第三列内容存储器组428(有时被称为“mb(i,3)”,对于i=1、2、3或者4)与对应奇偶校验存储器组432(有时被称为“pb_col3”)关联。一个或者多个寄存器436(为了简洁而有时被称为“reg_col3”或者“寄存器436”)与奇偶校验存储器组432关联。第四列内容存储器组440(有时被称为“mb(i,1)”,对于i=1、2、3或者4)与对应奇偶校验存储器组444(有时被称为“pb_col4”)关联。一个或者多个寄存器448(为了简洁而有时被称为“reg_col4”或者“寄存器448”)与奇偶校验存储器组444关联。在一个实施例中,存储器组402各自被配置为单端口存储器组,该单端口存储器组在给定的时钟周期中支持仅单个存储器存取操作,但是具有多个分离地可寻址的存储器位置。在其它实施例中,存储器组是被配置为在单个时钟周期中支持两个或者更多个存储器操作的多端口存储器。在这样的多端口存储器实施例中,以与以上关于单端口存储器描述的方式相似的方式来重构内容,这些单端口存储器当将在给定的时钟周期中执行比存储器组的端口数目更多的存储器操作时使用来自其它存储器组和奇偶校验存储器组的数据。

奇偶校验存储器组452(有时被称为“pb_row1”)与包括mb(1,1)、mb(1,2)、mb(1,3)和mb(1,4)的第一行内容存储器关联。一个或者多个寄存器454(为了简洁而有时被称为“reg_row1”或者“寄存器454”)与奇偶校验存储器组452关联。奇偶校验存储器组458(有时被称为“pb_row2”)与包括mb(2,1)、mb(2,2)、mb(2,3)和mb(2,4)的第二行内容存储器组关联。一个或者多个寄存器460(为了简洁而有时被称为“reg_row2”或者“寄存器460”)与奇偶校验存储器组458关联。奇偶校验存储器组464(有时被称为“pb_row3”)与包括mb(3,1)、mb(3,2)、mb(3,3)和mb(3,4)的第三行内容存储器组关联。一个或者多个寄存器466(为了简洁而有时被称为“reg_row3”或者“寄存器466”)与奇偶校验存储器组464关联。奇偶校验存储器组470(有时被称为“pb_row4”)与包括mb(4,1)、mb(4,2)、mb(4,3)和mb(4,4)的第四行内容存储器组关联。一个或者多个寄存器474(为了简洁而有时被称为“reg_row4”或者“寄存器472”)与奇偶校验存储器组470关联。

奇偶校验存储器组476(有时被称为“pb_crn”或者“拐角奇偶校验存储器组476”)与包括pb_row1、pb_row2、pb_row3和pb_row4的一列奇偶校验存储器组关联。一个或者多个寄存器478(为了简洁而有时被称为“reg_crn”或者“寄存器478”)与奇偶校验存储器组476关联。

在一些实施例中,在一个实施例中,图4中所图示的每个存储器组(mb)被构造为单端口存储器阵列,其中存储器阵列的相应单元与i)相同列中的其它存储器阵列的相应单元、ii)与相同列对应的奇偶校验存储器阵列的相应单元、iii)相同行中的其它存储器阵列的相应单元和iv)与相同行对应的奇偶校验存储器阵列的相应单元对应。例如,相应单元mb(1,1)与i)相同列中的其它存储器阵列的相应单元(例如,mb(2,1)、mb(3,1)和mb(4,1))、ii)奇偶校验存储器组pb_col1的相应单元、iii)相同行中的其它存储器阵列的相应单元(例如,mb(1,2)、mb(1,3)和mb(1,4))和iv)奇偶校验存储器组pb_row1的相应单元对应。

在一个实施例中,利用mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)的对应阵列单元中的内容数据来计算pb_col1的每个阵列单元中的奇偶校验数据。换而言之,在一个实施例中,利用mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)的第i阵列单元中的内容数据来计算pb_col1的第i阵列单元中的奇偶校验数据,其中i是整数索引。

在一些实施例中,使用适当ecc来计算pb_col1中的奇偶校验数据,从而使得mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)之一中的内容数据可以使用i)mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的其它单元中的内容数据以及ii)pb_col1中的奇偶校验数据而被重构。例如,在一个实施例中,通过一起异或mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)的第i阵列单元中的内容数据来计算pb_col1的第i阵列单元中的奇偶校验数据。因此,在一个实施例中,mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)之一的第i单元中的内容数据可以通过异或i)mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的其它单元的第i单元中的内容数据与ii)pb_col1的第i单元中的奇偶校验数据而被重构。

在其它实施例中,利用其它适当ecc(如比如reed-solomon)。

在一些实施例中,以相似方式,使用适当ecc来计算pb_col2中的奇偶校验数据,从而使得mb(1,2)、mb(2,2)、mb(3,2)和mb(4,2)之一中的内容数据可以使用i)mb(1,2)、mb(2,2)、mb(3,2)和mb(4,2)中的其它单元中的内容数据以及ii)pb_col2中的奇偶校验数据而被重构。在一些实施例中,使用适当ecc来计算pb_col3中的奇偶校验数据,从而使得mb(1,3)、mb(2,3)、mb(3,3)和mb(4,3)之一中的内容数据可以使用i)mb(1,3)、mb(2,3)、mb(3,3)和mb(4,3)中的其它单元中的内容数据以及ii)pb_col3中的奇偶校验数据而被重构。在一些实施例中,使用适当ecc来计算pb_col4中的奇偶校验数据,从而使得mb(1,4)、mb(2,4)、mb(3,4)和mb(4,4)之一中的内容数据可以使用i)mb(1,4)、mb(2,4)、mb(3,4)和mb(4,4)中的其它单元中的内容数据以及ii)pb_col4中的奇偶校验数据而被重构。

在一些实施例中,以相似方式,使用适当ecc来计算pb_row1中的奇偶校验数据,从而使得mb(1,2)、mb(1,2)、mb(1,3)和mb(1,4)之一中的内容数据可以使用i)mb(1,2)、mb(1,2)、mb(1,3)和mb(1,4)中的其它单元中的内容数据以及ii)pb_row1中的奇偶校验数据而被重构。在一些实施例中,使用适当ecc来计算pb_row2中的奇偶校验数据,从而使得mb(1,2)、mb(2,2)、mb(2,3)和mb(2,4)之一中的内容数据可以使用i)mb(1,2)、mb(2,2)、mb(2,3)和mb(2,4)中的其它单元中的内容数据以及ii)pb_row2中的奇偶校验数据而被重构。在一些实施例中,使用适当ecc来计算pb_row3中的奇偶校验数据,从而使得mb(3,1)、mb(3,2)、mb(3,3)和mb(3,4)之一中的内容数据可以使用i)mb(3,1)、mb(3,2)、mb(3,3)和mb(3,4)中的其它单元中的内容数据以及ii)pb_row3中的奇偶校验数据而被重构。在一些实施例中,使用适当ecc来计算pb_row4中的奇偶校验数据,从而使得mb(4,1)、mb(4,2)、mb(4,3)和mb(4,4)之一中的内容数据可以使用i)mb(4,1)、mb(4,2)、mb(4,3)和mb(4,4)中的其它单元中的内容数据以及ii)pb_row4中的奇偶校验数据而被重构。

在一些实施例中,以相似方式,使用适当ecc来计算pb_crn中的奇偶校验数据,从而使得pb_row1、pb_row2、pb_row3和pb_row4之一中的数据可以使用pb_row1、pb_row2、pb_row3和pb_row4中的其它存储器组中的数据以及ii)pb_crn中的奇偶校验数据而被重构。

使用比如以上描述的技术,例如,可以同时服务于用于存取来自mb(1,1)的内容数据的四个请求。作为说明性示例,在用于从mb(1,1)读取内容数据的第一请求由对mb(1,1)的物理存取来服务之时,用于从mb(1,1)读取内容数据的第二请求通过从mb(2,1)、mb(3,1)、mb(4,1)和pb_col1存取对应数据并且然后利用ecc解码过程以及来自mb(2,1)、mb(3,1)、mb(4,1)和pb_col1的对应数据重构来自mb(1,1)的请求的内容数据而被同时服务。附加地,用于从mb(1,1)读取内容数据的第三请求通过从mb(1,2)、mb(1,3)、mb(1,4)和pb_row1存取对应数据并且然后利用ecc解码过程以及来自mb(1,2)、mb(1,3)、mb(1,4)和pb_row1的对应数据重构来自mb(1,1)的请求的内容数据而被同时服务。另外,用于从mb(1,1)读取内容数据的第四请求通过从mb(1,2)、mb(1,3)、mb(1,4)和pb_row1存取对应数据并且然后利用ecc解码过程以及来自mb(1,2)、mb(1,3)、mb(1,4)和pb_row1的对应数据重构来自mb(1,1)的请求的内容数据而被同时服务。通过从mb(2,2)、mb(3,2)、mb(4,2)和pb_col2存取对应数据并且然后利用ecc解码过程以及来自mb(2,2)、mb(3,2)、mb(4,2)和pb_col2的对应数据重构来自mb(1,2)的内容数据来重构来自mb(1,2)的对应数据。通过从mb(2,3)、mb(3,3)、mb(4,3)和pb_col3存取对应数据并且然后利用ecc解码过程以及来自mb(2,3)、mb(3,3)、mb(4,3)和pb_col3的对应数据重构来自mb(1,3)的内容数据来重构来自mb(1,3)的对应数据。通过从mb(2,4)、mb(3,4)、mb(4,4)和pb_col4存取对应数据并且然后利用ecc解码过程以及来自mb(2,4)、mb(3,4)、mb(4,4)和pb_col4的对应数据重构来自mb(1,4)的内容数据来重构来自mb(1,4)的对应数据。通过从pb_row2、pb_row3、pb_row4和pb_crn存取对应数据并且然后利用ecc解码过程以及来自pb_row2、pb_row3、pb_row4和pb_crn的对应数据重构来自pb_row1的数据来重构来自pb_row1的对应数据。

读取/写入接口设备482处置来自图4中未示出的多个客户端(例如,客户端1、客户端2、客户端3和客户端4)的同时读取和写入请求。读取/写入接口设备482包括多个列接口设备484,每个列接口设备被配置为处置与对应列的存储器组关联的读取和写入操作。特别地,列接口设备484-1被配置为处置与mb(1,1)、mb(2,1)、mb(3,1)、mb(4,1)和pb_col1关联的读取和写入操作。列接口设备484-2被配置为处置与mb(1,2)、mb(2,2)、mb(3,2)、mb(4,2)和pb_col2关联的读取和写入操作。列接口设备484-3被配置为处置与mb(1,3)、mb(2,3)、mb(3,3)、mb(4,3)和pb_col3关联的读取和写入操作。列接口设备484-4被配置为处置与mb(1,4)、mb(2,4)、mb(3,4)、mb(4,4)和pb_col4关联的读取和写入操作。列接口设备484-5被配置为处置与pb_row1、pb_row2、pb_row3、pb_row4和pb_crn关联的读取和写入操作。每个列接口设备484被耦合到对应列、pb_row1、pb_row2、pb_row3、pb_row4、pb_crn的存储器组、以及列接口设备484被耦合到的奇偶校验存储器组的寄存器。

如以上简洁地讨论的那样,在分别在pb_col1、pb_col2、pb_col3、pb_col4、pb_row1、pb_row2、pb_row3、pb_row4和pb_crn中存储奇偶校验信息之前,有时在寄存器412、424、436、448、454、460、466、472和478中存储奇偶校验信息。因而,每个列接口设备484包括如下电路488,该电路488被配置为在列接口设备484将从奇偶校验存储器组pb_col1、pb_col2、pb_col3、pb_col4、pb_row1、pb_row2、pb_row3、pb_row4和pb_crn之一读取时接口设备484是否应当代之以从关联寄存器412、424、436、448、454、460、466、472和478读取。

读取/写入接口设备482也包括存储器接口控制设备492。存储器接口控制设备492被配置为:i)从客户端接收读取请求和写入请求、在列接口设备484之中分发读取请求和写入请求、处理由列接口设备484执行的读取操作的结果以及对读取请求做出响应。以下更具体描述存储器接口控制设备492的操作。

现在将描述列接口设备484-1的操作作为说明性示例。其它列接口设备484被配置为以相似方式操作。

在列接口设备484-1接收与mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的不同存储单元对应的两个读取请求时,则列接口设备484-1通过从mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的不同存储单元读取来服务于两个读取请求。

在另一方面,在列接口设备484-1接收与mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的相同存储单元对应的两个读取请求时,则列接口设备484-1通过从mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)之一读取来服务于第一读取请求。列接口设备484-1通过从mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的其它存储单元中的对应位置读取内容信息以及从pb_col1中的对应位置读取奇偶校验信息来服务于第二读取请求。然后,在一个实施例中,列接口设备484-1通过异或从mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)中的其它存储单元中的对应位置取回的内容数据与来自pb_col1中的对应位置的奇偶校验信息来重构信息。

在一些实施例中,列接口设备484-1被配置为以如下方式在若干时钟周期内执行写入操作,在该方式中,既没有在列接口设备484-1的写入操作期间阻止列接口设备484-1执行第二读取操作,也没有在列接口设备484-1的写入操作期间阻止其它列接口设备484执行读取操作。在一些实施例中,列接口设备484-1被配置为以如下方式在若干时钟周期内执行写入操作,在该方式中,阻止列接口设备484-1在列接口设备484-1的写入操作期间执行第二读取操作,但是没有阻止其它列接口设备484在列接口设备484-1的写入操作期间执行读取操作。这特别地明显,因为利用一些现有存储器设备,在各种实施例中,在正在执行写入操作之时有效地阻止处置所有读取请求(或者至少一些读取请求)。例如,利用一些现有存储器设备,在各种实施例中,写入操作利用多个读取/写入接口,因此有效地防止那些多个读取/写入接口处置任何读取请求,直至完成写入操作。

例如,在具有与图4的存储器设备400相似的结构的现有技术设备中,在各种实施例中,将在用于向内容存储器组mb之一写入新内容并且用于更新列奇偶校验存储器组408、420、432、444之一中、行奇偶校验存储器组452、458、464、470之一中以及拐角奇偶校验存储器组476中的奇偶校验数据的写入操作期间征召所有列接口484(或者其中的至少多个)。例如,向mb(3,1)写入新内容在一个实施例中也需要更新pb_col1中、pb_row3中和pb_crn中的奇偶校验数据以反映新内容数据。另外,更新pb_col1中、pb_row3中和pb_crn中的奇偶校验数据在一个实施例中需要使用i)mb(3,1)中的旧内容数据以及ii)pb_col1中、pb_row3中和pb_crn中的旧奇偶校验数据以计算新奇偶校验数据。因此,具有与图1的存储器设备100相似的结构的现有技术设备例如使用列接口484-1以在第一时钟周期中从mb(3,1)读取旧内容数据,并且使用列接口484-5以也在第一时钟周期中从pb_row3读取旧奇偶校验数据(对应于旧内容数据)。另外,具有与图1的存储器设备100相似的结构的现有技术设备例如使用列接口484-1以在第二时钟周期中从pb_col1读取旧奇偶校验数据,并且使用列接口484-5以也在第二时钟周期中从pb_crn读取旧奇偶校验数据(对应于旧内容数据)。新内容数据、来自mb(3,1)的旧内容数据以及来自pb_col1、在pb_row3中和pb_crn的旧奇偶校验数据然后用来计算新奇偶校验数据。在第三时钟周期中,列接口484-1用来向mb1写入新内容数据,并且列接口484-5用来向pb_row3写入新奇偶校验数据。在第四时钟周期中,列接口484-1用来向pb_col1写入新奇偶校验数据,并且列接口484-5用来向pb_crn写入新奇偶校验数据。因此,在这样的现有技术设备中,列接口484-1和列接口484-5在第一时钟周期、第二时钟周期、第三时钟周期和第四时钟周期中的任何时钟周期中不可以服务于读取请求,因为列接口484-1和列接口484-5忙于执行任务作为用于向mb(3,1)写入新内容数据并且更新pb_col1中、pb_row3中和pb_crn的奇偶校验数据的写入操作的部分。

图5是根据一个实施例的、在多个时钟周期内与利用具有多个存储器组的存储器设备执行一个或者多个读取操作并行地利用存储器设备执行写入操作的示例方法500的流程图。在一个实施例中,在方法500中包括的写入操作可以由单个列接口实施,因此保持其它列接口可用于与执行写入操作并行处置读取请求。每个列接口设备400根据一些实施例被配置为实施方法500中的写入操作,并且出于说明目的而参照图4来描述方法500。然而,在其它实施例中,方法500由具有多个存储器组的另一适当存储器设备实施。相似地,在一些实施例中,每个列接口设备500被配置为实施用于利用具有多个存储器组的存储器设备来执行写入操作的另一适当方法。

仅出于说明目的而在列接口484-1执行用于向mb(2,1)中的特定可寻址的位置(例如,具有关联地址的特定行的mb(2,1))写入内容数据的写入操作的情境中描述方法500。在其它场景中,利用相似技术以执行用于向mb(1,1)、mb(3,1)或者mb(4,1)的特定可寻址的位置写入内容数据的写入操作。

方法500包括写入新内容数据mb(2,1)。然而,由于正在向mb(2,1)写入新内容数据,所以在一个实施例中也必须计算并且然后向pb_col1、pb_row2和pb_crn存储对应新奇偶校验数据。使用i)新内容数据、ii)mb(2,1)中的在将被新内容数据改写的位置处的旧内容数据和iii)pb_col1、pb_row1和pb_crn中的在将被新奇偶校验数据改写的位置处的旧奇偶校验数据来计算新奇偶校验数据。再次参照图1和图2,存储器设备100包括一个奇偶校验存储器,并且因此方法200需要在写入新内容数据时更新一个奇偶校验存储器。然而,利用图4的存储器设备400的二维结构,每个内容存储器组与具有关联列奇偶校验存储器组的列、具有关联行奇偶校验存储器组的行和拐角存储器组对应。因此,不同于图2的方法200,方法500需要每当向内容存储器组写入新内容存储器时更新三个奇偶校验存储器组。

在块504处,在第一时钟周期中从第一内容存储器组中的将在其写入新内容数据的位置处读取旧内容数据。例如,在一个实施例中,列接口设备484-1在第一时钟周期中从mb(2,1)中的将在其写入新内容数据的位置处读取旧内容数据。

在块508处,在第二时钟周期中从第一奇偶校验存储器组中的与第一内容存储器组中的将在其写入新内容数据的位置对应的位置读取第一旧奇偶校验数据。例如,在一个实施例中,列接口设备484-1在第二时钟周期中从pb_col1中的与mb(2,1)中的将在其写入新内容数据的位置对应的位置读取第一旧奇偶校验数据。

在块512处,在第三时钟周期中从第二奇偶校验存储器组中的与第一内容存储器组中的将在其写入新内容数据的位置对应的位置读取第二旧奇偶校验数据。例如,在一个实施例中,列接口设备484-1在第三时钟周期中从pb_row2中的与mb(2,1)中的将在其写入新内容数据的位置对应的位置读取第二旧奇偶校验数据。

在块516处,在第四时钟周期中从第三奇偶校验存储器组中的与第一内容存储器组中的将在其写入新内容数据的位置对应的位置读取第三旧奇偶校验数据。例如,在一个实施例中,列接口设备484-1在第四时钟周期中从pb_crn中的与mb(2,1)中的将在写入新内容数据的位置对应的位置读取第三旧奇偶校验数据。

在一个实施例中,通过在分离的时钟周期中执行块504、508、512和516的读取操作,这允许列接口484-1处置块504、508、512和516的所有读取操作,有别于要求其它列接口484中的任何其它列接口484执行块504、508、512和516的读取操作中的一些读取操作。因此,在一个实施例中,通过列接口484-1在分离的时钟周期中执行块504、508、512和516的读取操作,这释放其它列接口484以用于在那些时钟周期期间处置其它存储器操作。

然而,在一些其它实施例中,在单个时钟周期中执行块504、508、512和516中的两个或者更多个块。

在块520处,使用i)新内容数据、ii)在块504处读取的旧内容数据和iii)在块508处读取的第一旧奇偶校验数据来生成第一新奇偶校验信息。例如,在一个实施例中,列接口设备484-1通过一起异或i)新内容数据、ii)在块504处读取的旧内容数据和iii)在块508处读取的第一旧奇偶校验数据来生成第一新奇偶校验数据。

在块524处,使用i)新内容数据、ii)在块504处读取的旧内容数据和iii)在块512处读取的第二旧奇偶校验数据来生成第二新奇偶校验信息。例如,在一个实施例中,列接口设备484-1通过一起异或i)新内容数据、ii)在块504处读取的旧内容数据和iii)在块512处读取的第二旧奇偶校验数据来生成第二新奇偶校验数据。

在块528处,使用i)新内容数据、ii)在块504处读取的旧内容数据和iii)在块516处读取的第三旧奇偶校验数据来生成第三新奇偶校验信息。例如,在一个实施例中,列接口设备484-1通过一起异或i)新内容数据、ii)在块504处读取的旧内容数据和iii)在块516处读取的第一旧奇偶校验数据来生成第三新奇偶校验数据。

在块532处,在第五时钟周期中向第一内容存储器组中的位置写入新内容数据。例如,在一个实施例中,列接口设备484-1在第五时钟周期中向mb(2,1)中的位置写入新内容数据。

在块536处,也在第五时钟周期期间,向与第一奇偶校验存储器组关联的第一寄存器写入第一新奇偶校验,向与第二奇偶校验存储器组关联的第二寄存器写入第二新奇偶校验数据,并且向与第三奇偶校验存储器组关联的第三寄存器写入第三新奇偶校验。例如,在一个实施例中,列接口设备484-1在第五时钟周期中向寄存器reg_col1写入第一新奇偶校验数据。也设置向另一存储器接口设备的指示符,该指示符是不当应存取第一奇偶校验存储器组中的对应位置。例如,在一个实施例中,列接口设备484-1设置指示符。在各种实施例中,指示符包括第一奇偶校验存储器组中的对应位置的地址、与第一奇偶校验存储器组中的位置对应的行号、第一奇偶校验存储器组的存储器阵列中的对应单元的标识符等。在一些实施例中,在寄存器reg_col1中包括指示符。例如,在一个实施例中,寄存器reg_col1的第一部分用来存储指示符,并且寄存器reg_col1的第二部分用来存储第一新奇偶校验数据。在另一实施例中,与reg_col1分离并且与第一奇偶校验存储器组关联的寄存器用来存储指示符。

相似地,在一个实施例中,列接口设备484-1在第五时钟周期中向与pb_row1关联的寄存器reg_row2写入第二新奇偶校验数据,并且设置与reg_row2关联的指示符,该指示符指示不应当存取pb_row2中的对应位置。相似地,在一个实施例中,列接口设备484-1在第五时钟周期中向与pb_crn关联的寄存器reg_crn写入第三新奇偶校验数据,并且设置与reg_crn关联的指示符,该指示符指示不应当存取pb_crn中的对应位置。

在完成操作536之后,mb(2,1)中的新内容数据可用于列接口484,即使尚未完成整个写入过程500;并且如果需要重构来自mb(2,1)的数据,则reg_col1、reg_row2和reg_crn中的新奇偶校验数据可用于列接口484以用于使用新奇偶校验数据来重构新内容数据,即使尚未完成整个写入过程500。

在块540处,在第六时钟周期期间从与第一奇偶校验存储器组关联的第一寄存器向第一奇偶校验存储器组中的对应位置传送第一新奇偶校验数据。例如,在一个实施例中,列接口设备484-1在第六时钟周期中从寄存器reg_col1向pb_col1中的对应位置传送第一新奇偶校验数据。也清除与reg_col1关联并且在块536处被设置的指示符。例如,在一个实施例中,列接口设备484-1清除指示符。在其中指示符包括第一奇偶校验存储器组中的对应位置的地址、与第一奇偶校验存储器组中的位置对应的行号、第一奇偶校验存储器组的存储器阵列中的对应单元的标识符等的实施例中,块540包括将地址、行号、单元标识符等设置成预定值(比如零或者某个其它适当值),以向另一存储器接口设备通知未设置指示符。

在块544处,在第七时钟周期期间从与第二奇偶校验存储器组关联的第二寄存器向第二奇偶校验存储器组中的对应位置传送第二新奇偶校验数据。例如,在一个实施例中,列接口设备484-1在第七时钟周期中从寄存器reg_row2向pb_row2中的对应位置传送第二新奇偶校验数据。也清除与reg_row2关联并且在块536处被设置的指示符。

在块548处,在第八时钟周期期间从与第三奇偶校验存储器组关联的第三寄存器向第三奇偶校验存储器组中的对应位置传送第三新奇偶校验数据。例如,在一个实施例中,列接口设备484-1在第八时钟周期中从寄存器reg_crn向pb_crn中的对应位置传送第三新奇偶校验数据。也清除与reg_crn关联并且在块536处被设置的指示符。

在一个实施例中,在分离的时钟周期中执行块540、544和548的写入操作允许列接口484-1处置块540、544和548的所有写入操作,有别于要求其它列接口484中的任何其它列接口执行块540、544和548的读取操作中的一些读取操作。因此,在一个实施例中,通过列接口484-1在分离的时钟周期中执行块540、544和548的写入操作,释放其它列接口484以用于在那些时钟周期期间处置其它存储器操作。

然而,在一些其它实施例中,在单个时钟周期中执行块540、544和548中的两个或者更多个块。

方法500包括操作552,该操作包括与列接口484-1执行操作504、508、512、516、520、524、528、532、536、540、544、548中的一个或者多个操作并行地利用列接口484-2、484-3、484-4和484-5中的一个或者多个列接口来执行一个或者多个读取操作。例如,在一个实施例中,列接口484-2、484-3、484-4和484-5中的任何列列接口可以在第一时钟周期(操作504)期间服务于读取请求。如果读取请求是用于从mb(2,1)读取内容,则在第一时钟周期期间阻止mb(2,1)(因为列接口484-1正在从mb(2,1)读取),但是列接口484-2、484-3、484-4和484-5从相同行中的其它存储器组(例如,mb(2,2)、mb(2,3)和mb(2,4))取回内容数据,并且从pb_row2取回奇偶校验数据,从而使得来自mb(2,1)的请求的数据可以使用从相同行中的其它存储器组(例如mb(2,2)、mb(2,3)和mb(2,4))取回的内容数据和来自pb_row2的奇偶校验数据而被重构。

作为另一示例,在一个实施例中,在第二时钟周期(操作508)期间,列接口484-1忙于从pb_col1读取,并且列接口484-1不可用于从相同列中的任何存储器组读取。然而,列接口484-2、484-3、484-4和484-5中的任何列接口可以在第一时钟周期(操作504)期间服务于读取请求。如果读取请求是用于从列1中的任何存储器组读取内容,则列接口484-2、484-3、484-4和484-5从相同行中的其它存储器组(例如,mb(2,2)、mb(2,3)和mb(2,4))取回内容数据,并且从pb_row1、pb_row2、pb_row3或者pb_row4中的对应行取回奇偶校验数据,从而使得来自第一列的请求的数据可以使用从相同行中的其它存储器组取回的内容数据和来自pb_row1、pb_row2、pb_row3或者pb_row4中的对应行的奇偶校验数据而被重构。

作为又一示例,在一个实施例中,列接口484-2、484-3、484-4和484-5中的任何列接口可以在第三时钟周期(操作512)期间服务于读取请求。如果读取请求涉及到从pb_row2读取内容,则在第三时钟周期期间阻止pb_row2(因为列接口484-1正在从pb_row2读取),但是列接口484-5从相同列中的其它存储器组(例如,pb_row1、pb_row3、pb_row4和pb_crn)取回奇偶校验数据,从而使得来自pb_row2的请求的数据可以使用从相同列中的其它存储器组(例如,pb_row1、pb_row3、pb_row4和pb_crn)取回的奇偶校验数据而被重构。

作为又一示例,在一个实施例中,列接口484-2、484-3、484-4和484-5中的任何列接口可以在第六时钟周期(操作540)期间服务于读取请求。如果读取请求是用于从mb(2,1)读取内容,则列接口484-1忙于从reg_col1向pb_col1传送新奇偶校验数据,并且列接口484-1不可用于从相同列中的任何存储器组读取。然而,列接口484-2、484-3、484-4和484-5中的任何列接口可以在第六时钟周期(操作540)期间服务于读取请求。如果读取请求是用于从mb(2,1)中的、正在向其写入新内容数据的位置读取内容,则列接口484-2、484-3、484-4和484-5从相同行中的其它存储器组(例如,mb(2,2)、mb(2,3)和mb(2,4))取回内容数据,并且从reg_row2取回奇偶校验数据,从而使得来自mb(2,1)的请求的数据可以使用从相同行中的其它存储器组取回的内容数据和来自reg_row2的奇偶校验数据而被重构。列接口484-5由于在操作536期间被设置的指示符而知道使用reg_row2中的奇偶校验数据,而不是pb_row2本身中的奇偶校验数据。

再次参照图4,在一个实施例中,存储器设备400被配置为处置上至四个同时读取操作,但是每个列接口484被配置为处置至多两个同时读取操作。在这样的实施例中,存储器接口控制设备492被配置为在列接口484之中分发读取请求,从而使得在单个时钟周期中没有向列接口484提供多于两个读取请求。例如,在一个实施例中,如果三个读取请求对应于单个列中的存储器组,则存储器接口控制设备492向对应列接口484发送读取请求中的两个读取请求、但是指令其它列接口设备484从其它列取回其它内容数据并且取回行奇偶校验数据,从而使得存储器接口控制设备492可以重构与第三读取请求对应的数据。

图6是根据一个实施例的、与存储器设备400执行写入操作并行地处置由存储器接口控制设备492执行的同时读取操作的示例方法600的流程图。将参照图7描述根据一个实施例的每个列接口484的示例操作。

在块604处,存储器接口控制设备492接收用于读取内容数据的多个请求。例如,在一个实施例中,存储器接口控制设备492被配置为在正在执行写入操作之时从上至三个客户端设备并行地接收上至三个读取请求。

在块608处,存储器接口控制设备492确定在块604处接收的读取请求中的任何读取请求是否与从对应列接口484正在其中执行写入操作的列读取对应。例如,在一个实施例中,如果列接口484-1正在执行比如参照图5描述的写入操作,并且存储器接口控制设备492确定在块604处接收的读取请求中的任何读取请求是否是用于第一列中的内容。如果在块608处确定在块604处接收的读取请求都没有与列接口正在其中执行写入操作的列对应,则流程前进到块612。

在块612处,存储器接口控制设备492指令对应列接口设备484执行与在块604处接收的读取请求对应的读取操作。在一个实施例中,块612包括存储器接口控制设备492向对应列接口设备484分发在块604处接收的读取请求,以用于进一步处置读取请求。在另一实施例中,块612包括存储器接口控制设备492向对应列接口设备484发送用于读取在与在块604处接收的读取请求对应的位置处的数据的指令。作为说明性示例,如果第一读取请求对应于mb(2,2),第二读取请求对应于mb(3,2),并且第三读取请求对应于mb(2,3),则存储器接口控制设备492使得列接口设备484-2执行与第一读取请求(mb(2,2))和第二读取请求(mb(3,2))对应的读取操作。继续这一示例,存储器接口控制设备492使得列接口设备484-3执行与第三读取请求(mb(2,3))对应的读取操作。

在块616处,存储器接口控制设备492响应于由列接口设备484响应于块612而执行的读取操作,从列接口设备484接收内容数据。在块620处,存储器接口控制设备492利用在块616处从列接口设备484接收的内容数据,对在块604处接收的读取请求做出响应。

在另一方面,如果在块608处确定在块604处接收的读取请求中的任何读取请求对应于从对应列接口正在其中执行写入操作的列读取,则流程前进到块624。

在块624处,对于与和写入操作相同的列对应的读取请求,存储器接口控制设备492指令与其它列对应的列接口设备在对应位置处在存储器组中执行读取操作,从而使得可以重构内容数据。例如,如果请求之一将在位置m处从mb(2,1)读取,则存储器接口控制设备492使得列接口设备484-2在位置m处从mb(2,2)读取、接口设备484-3在位置m处从mb(2,3)读取、接口设备484-4在位置m处从mb(2,4)读取,并且接口设备484-5在位置m处从pb_row2读取,从而使得可以重构在mb(2,1)的位置m处的内容数据。

在块628处,存储器接口控制设备492响应于块624而从列接口设备484接收数据。在块628处接收的数据包括将用来重构内容数据的数据,该内容数据响应于用于正在其中执行写入操作的相同列的读取请求。继续以上描述的示例,如果请求之一是在位置m处从mb(2,1)读取,则在位置m处来自mb(2,2)的内容数据、在位置m处来自mb(2,3)的内容数据、在位置m处来自mb(2,4)的内容数据和在位置m处来自pb_row2的奇偶校验数据将用来重构在mb(2,1)的位置m处的内容数据。如以下将描述的那样,在一些场景中,列接口484-5将有时从reg_row1、reg_row2、reg_row3、reg_row4或者reg_crn之一取回数据,而不是分别从pb_row1、pb_row2、pb_row3、pb_row4或者pb_crn取回数据。

在块632处,存储器接口控制设备492使用在块628处接收的奇偶校验数据来重构内容数据。例如,在一个实施例中,存储器接口控制设备492使用从一个或者多个列接口设备484接收的奇偶校验数据来重构内容数据。继续以上描述的示例,使用在位置m处来自mb(2,2)的内容数据、在位置m处来自mb(2,3)的内容数据、在位置m处来自mb(2,4)的内容数据和在位置m处来自pb_row2的奇偶校验数据来重构在位置m处来自mb(2,1)的内容数据。例如,在一个实施例中,通过一起异或在位置m处来自mb(2,2)的内容数据、在位置m处来自mb(2,3)的内容数据、在位置m处来自mb(2,4)的内容数据和在位置m处来自pb_row4的奇偶校验数据,来重构在位置m处来自mb(2,1)的内容数据。

在块628处,向没有正在处置并行写入操作的列接口设备提供在块604处接收的其它读取请求。在块644处,存储器接口控制设备492响应于在块604处接收的读取请求来返回内容数据。例如,在一个实施例中,存储器接口控制设备492响应于在块604处接收的读取请求,来返回i)从一个或者多个列接口设备484接收的内容数据和ii)重构的内容数据二者。

图7是根据一个实施例的、在正在执行并行写入操作之时利用具有多个存储器组的存储器设备处置同时读取操作的示例方法700的流程图。图4的每个列接口设备484根据一些实施例被配置为在另一列接口484正在并行地执行写入操作之时实施方法700。出于说明目的而参照图4描述方法700。然而,在其它实施例中,方法700由具有多个存储器组的另一适当存储器设备实施。相似地,在一些实施例中,列接口设备484被配置为实施用于与另一列接口484在具有多个存储器组的存储器设备中执行并行写入操作并行地执行读取操作的另一适当方法。

仅出于说明目的,在以下情境中描述方法700:列接口设备484-5执行用于从pb_row1、pb_row2、pb_row3和pb_row4中的一行或者多行取回数据的读取操作、而列接口设备484-1正在并行地向mb(2,1)写入新内容数据并且更新pb_col1、pb_row2和pb_crn中的奇偶校验数据。在其它场景中,利用相似技术以执行从一组存储器组的读取操作。例如,列接口设备484-1使用相似技术以从mb(1,1)、mb(2,1)、mb(3,1)和mb(4,1)取回数据;列接口设备484-2使用相似技术以从mb(1,2)、mb(2,2)、mb(3,2)和mb(4,2)取回数据;列接口设备484-3使用相似技术以从mb(1,3)、mb(2,3)、mb(3,3)和mb(4,3)取回数据;并且列接口设备484-4使用相似技术以从mb(1,4)、mb(2,4)、mb(3,4)和mb(4,4)取回数据。

在块704处,在列接口设备484-1正在并行地向mb(2,1)写入新内容数据、并且更新pb_col1、pb_row2和pb_crn中的奇偶校验数据之时,并行地接收用于在一组存储器组之中的一个或者多个存储器组中的、一个或者多个位置处读取数据的多个请求(例如,第一读取请求和第二读取请求)。例如,在一个实施例中,列接口设备484-5接收用于从pb_row1、pb_row2、pb_row3和pb_row4中的一行或者多行中的一个或者多个位置取回内容数据的第一读取请求和第二读取请求。

在块708处,响应于第一读取请求而从第一存储器组或者关联寄存器读取第一数据。作为一个说明性实施例,第一读取请求是用于从pb_row2中的位置a读取数据。在一个实施例中,列接口设备484-5响应地检查指示符是否被设置,以指示pb_row2中的位置a过期。如果没有设置指示符,则列接口设备484-5响应地从pb_row2中的位置a读取数据。在另一方面,如果指示符被设置,则列接口设备484-5响应地从reg_row2读取数据。

在一些实施例中,块708包括确定将在块708处处置在块704处接收的存储器请求中的哪个存储器请求。例如,在一个实施例中,每个列接口设备484包括相应的仲裁器电路(在图4中未示出),并且列接口设备484-2的仲裁器电路确定在块708处处置在块704接收的读取请求中的哪个读取请求。然而,在其它实施例中,预先确定在块708处处置在块704处接收的读取请求中的哪个读取请求。例如,在一个实施例中,每个列接口设备484包括用于接收读取请求的相应的第一端口和相应的第二端口,并且总是在块708处处置在第一端口处接收的读取请求。

在块712处,确定第一读取请求和第二读取请求是否对应于相同存储器组。在一个实施例中,块712包括确定第二读取请求对应于的存储器组是否被阻止。例如,在一个实施例中,设置对应标志以指示由于处置第一读取请求(例如,在块708)而阻止特定存储器组。在另一实施例中,每个读取请求包括待存取的相应的存储器组的相应的指示符,并且块712包括比较读取请求中的存储器组的指示符,以确定它们是否对应于相同存储器组。

如果在块712处确定第一读取请求和第二读取请求没有对应于相同存储器组,则流程前进到块716。在块716处,响应于第二读取请求来从第二存储器组读取第二数据。作为一个说明性实施例,第二读取请求是用于从pb_row4中的位置b读取数据。在一个实施例中,列接口设备484-5响应地检查指示符是否被设置,以指示pb_row4中的位置b过期。如果指示符未被设置,则列接口设备484-5响应地从pb_row4中的位置b读取数据。在另一方面,如果指示符被设置,则列接口设备484-5响应地从reg_row4读取数据。

在另一方面,如果在块712处确定第一读取请求和第二读取请求对应于相同存储器组,则流程前进到块720。在块720处,读取在对应位置处来自一个或者多个其它存储器组的数据。继续其中第一读取请求对应于pb_row2中的位置a的以上示例,在一个实施例中,列接口设备484-5从pb_row1中的位置a、pb_row3中的位置a和pb_row4中的位置a读取数据。在一个实施例中,块720包括对于将在块7820处被读取的每个奇偶校验存储器组,检查相应的指示符是否被设置,以指示在将被读取的位置处的数据过期。如果指示符未被设置,则列接口设备484-5响应地从奇偶校验组读取数据。在另一方面,如果指示符被设置,则列接口设备484-5响应地从关联寄存器读取数据。

在块724处,确定不应当存取奇偶校验存储器组中的对应位置(例如,因为在该位置处的奇偶校验信息过期)这样的指示符是否被设置。例如,在比如以上参照图4描述的一个实施例中,在其它存储器接口设备已经在寄存器(例如,寄存器reg_crn)中存储了新奇偶校验信息、但是尚未向奇偶校验存储器组中的该位置传送新奇偶校验信息时,另一存储器接口设备(例如,列接口设备484-1)可以设置指示符。在一个实施例中,列接口设备484-5的电路488-5确定指示符是否被设置。在一个实施例中,在寄存器reg_crn的第一部分中存储指示符,并且电路488-5分析寄存器reg_crn的第一部分以确定指示符是否被设置。在另一实施例中,在与寄存器reg_crn分离的另一寄存器中存储指示符,并且电路488-5分析其它寄存器以确定指示符是否被设置。在一个实施例中,指示符包括奇偶校验存储器组中的不应当被访问的对应单元(例如,因为该位置具有过期信息)的地址、行号、阵列单元标识符等,并且电路488-5比较指示符的地址、行号、标识符等与列接口设备484-5正在尝试存取的奇偶校验存储器组pb_crn中的位置的对应地址、行号、标识符等。

现在参照图4,在一些实施例中,每个电路488包括相应的比较器电路,该比较器电路被配置为对以下进行比较:i)与奇偶校验存储器组中的将被存取的单元对应的地址、行号、单元标识符等,以及ii)在不应当被存取奇偶校验存储器组中的对应位置(例如,因为在该位置的奇偶校验信息过期)这样的指示符中包括或者与该指示符关联的地址、行号、单元标识符等。

再次参照图7,如果在块724处确定指示符未被设置,则流程前进到块728,在该块处读取在奇偶校验存储器组中的对应位置处的奇偶校验数据。继续其中第一读取请求对应于pb_row2中的位置a的以上示例,在一个实施例中,列接口设备484-5从pb_crn中的位置a读取奇偶校验数据。

在另一方面,如果在块724处确定指示符被设置,则流程前进到块732,在该块处读取来自与奇偶校验存储器组关联的寄存器的奇偶校验数据。例如,在一个实施例中,列接口设备484-5从寄存器reg_crn读取奇偶校验数据。

在块736处,使用在块720处从一个或者多个存储器组取回的数据、以及在块728处从奇偶校验存储器组取回的奇偶校验数据或者在块732处从寄存器取回的奇偶校验数据,来重构请求的数据。例如,在一个实施例中,列接口设备484-5通过一起异或i)从pb_row1取回的数据、ii)从pb_row3取回的数据、iii)从pb_row4取回的数据和iii)从pb_crn取回的奇偶校验数据或者从寄存器reg_crn取回的奇偶校验数据,来重构pb_row2中的请求的内容数据。

在块740处,利用i)在块708处取回的数据、以及ii)a)在块716处取回的数据或者b)在块736处使用奇偶校验数据而被重构的数据,来对在块704处接收的请求做出响应。在一个实施例中,列接口设备484-5利用在块708处取回的数据、以及i)在块728处取回或者在块736处使用奇偶校验数据而被重构的数据,来对在块704处接收的读取请求做出响应。

虽然在图4的存储器设备400的情境中讨论了方法700,但是在其它实施例中,方法700由其它适当设备实施。例如,在一个实施例中,图1的读取/写入接口设备120被配置为实施方法700。

相似地,虽然在图1的存储器设备100的情境中讨论了方法200,但是在其它实施例中,方法200由其它适当设备实施。例如,在一个实施例中,图4的每个列接口设备484被配置为实施方法200。

相似地,虽然在图1的存储器设备100的情境中讨论了方法300,但是在其它实施例中,方法300由其它适当设备实施。例如,在一个实施例中,图4的每个列接口设备484被配置为实施方法300。

在其它实施例中,在具有如下存储器组的存储器设备中,利用用于向多组存储器设备写入和从多组存储器设备读取的相同和/或相似技术,这些存储器组被配置为具有三个或者更多个维度的阵列。

在各种实施例中,比如这里描述的方法和装置无论若干客户端设备(比如处理器、处理器核、电路、流水线级等)何时需要同时对共享的存储器执行存储器操作(比如读取操作或者另一适当操作)都是适合的。仅作为说明性示例,比如以上描述的存储器装置和方法适合用于在通信网络设备中使用。

虽然以上描述的方法和装置在使用xor来生成奇偶校验数据的情境中,但是在其它实施例中,利用其它适当ecc。例如,参照图1,在一个实施例中,通过将reed-solomon代码应用于mb1的第i行中的内容数据以及mb2的第i行中的内容数据,来计算pb112的第i行中的奇偶校验数据。因此,在一个实施例中,mb1104或者mb2108之一的第i行中的内容数据可以通过将reed-solomon解码操作应用于i)mb1104或者mb2108中的另一个的第i行中的内容数据和ii)pb112的第i行中的奇偶校验数据而被重构。

图8是根据一个实施例的示例多核网络设备800(比如层2和/或层3交换机)的框图。如以下将更具体描述的,网络设备800包括被耦合到在此也被称为交换机核或者切换核的多个分组处理核808、并且由这些分组处理核808利用的存储器设备804。网络设备800也包括多个端口812,并且每个端口812被耦合到与一个或者多个通信网络关联的相应的通信链路。在一个实施例中,分组处理核808被配置为处理经由端口812而被接收的分组,并且确定应当随后经由其传输分组的相应的端口812。

在一个实施例中,分组处理核808利用在存储器设备804中存储的一个或者多个控制表,比如转发数据库表。由于分组处理核808并行操作,所以核808中的两个或者更多个核需要同时对存储器设备804的相同部分执行存储器操作,例如,执行同时读取操作以获得用于来自或者去往相同地址的分组的转发信息。

如以上将描述的那样,在一个实施例中,存储器设备804包括用于存储内容数据(比如一个或者多个控制表)的存储器组820的第一集合。存储器设备804也包括一个或者多个存储器组824的第二集合,用于存储与在存储器组820的第一集合中存储的内容数据关联的冗余性信息。在一个实施例中,在存储器设备804同时接收(例如,在存储器设备804的相同时钟周期期间)用于在存储器组820之一中执行存储器操作的多个请求时,存储器设备804被配置为确定阻止多个请求中的一个或者多个请求存取该一个存储器组820。响应于确定阻止多个请求中的一个或者多个请求存取该一个存储器组820,存储器设备804被配置为存取来自存储器组824的冗余性数据,并且使用冗余性数据、而未使用在该一个存储器组820中存储的数据来重构在该一个存储器组820中存储的数据。使用在该一个存储器组820中存储的数据来执行请求的存储器操作之一。在另一方面,在一个实施例中,在没有存取该一个存储器组820的基础上、并且基于使用来自存储器组824的冗余性数据而被重构的数据,来执行请求的存储器操作中的另一请求的存储器操作。

在网络设备800中,每个分组处理核808总体上充当客户端,该客户端生成用于在存储器设备804的一个或者多个存储器组820中执行存储器操作的请求。在此所用的术语“客户端”是指被配置为生成用于在存储器设备的一个或者多个存储器组中执行存储器操作的请求的设备。在其中分组处理核808包括多个设备(例如,电路)、并且每个设备被配置为生成用于在存储器设备804的一个或者多个存储器组820中执行存储器操作的请求的一个实施例中,分组处理核808包括或者充当多个客户端。例如,在其中分组处理器包括具有多个流水线级的流水线、并且多个流水线级被配置为生成用于在存储器设备的一个或者多个存储器组中执行存储器操作的请求的一个实施例中,分组处理器包括或者充当多个客户。作为另一示例,单个处理器或者单个流水线级被配置为同时生成多个存储器存取请求,并且因此单个处理器或者单个流水线级包括或者充当多个客户端。

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

在各种实施例中,存储器设备804包括与奇偶校验存储器组824关联的用于在向奇偶校验存储器组824传送奇偶校验信息之前暂时地存储奇偶校验信息的一个或者多个寄存器828。在各种实施例中,存储器设备804包括被配置为确定是否应当从寄存器828而不是奇偶校验存储器组824读取奇偶校验信息的电路832。在一个实施例中,存储器设备804包括图1的存储器设备100。在另一实施例中,存储器设备804包括图4的存储器设备400。

虽然存储器设备804以上被讨论为为被包括在网络设备800中,但是可以在其它类型的计算系统(比如个人计算机、服务器、大型机、智能电话、游戏系统、机顶盒、通信设备等)中利用相似存储器设备。例如,计算系统可以包括各自相对于存储器设备(比如存储器设备804)充当客户端的多个设备(例如,处理器(例如,中央处理单元、协同处理器、专用处理单元等)、电路、流水线级等)。

可以在硬件中实施以上描述的各种块、操作和技术。当在硬件中被实施时,硬件可以包括i)分立部件、ii)一个或者多个集成电路、iii)一个或者多个专用集成电路(asic)、一个或者多个可编程逻辑器件(pld)等。

可以在执行固件和/或软件指令或者它们的任何组合的处理器中实施以上描述的各种块、操作和技术中的一些块、操作和技术。在至少部分地通过利用执行软件或者固件指令的处理器而被实施时,可以在任何一个或者多个非瞬态、有形、计算机可读或者机器可读介质上(比如在磁盘、光盘、ram、rom、闪存、磁带等)上存储可执行软件或者固件指令。软件或者固件指令可以包括在由一个或者多个处理器执行时使得一个或者多个处理器执行各种动作的计算机可读或者机器可读指令。当在硬件中被实施时,硬件可以包括i)分立部件、ii)一个或者多个集成电路、专用集成电路(asic)、可编程逻辑器件(pld)等中的一项或者多项。

尽管已经参照具体示例描述了本发明并且这些示例旨在于仅为说明性而不是限制本发明,但是可以对公开的实施例做出改变、添加和/或删除而没有脱离本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1