CN107787485A - 多读取和写入端口存储器 - Google Patents
多读取和写入端口存储器 Download PDFInfo
- Publication number
- CN107787485A CN107787485A CN201680037020.3A CN201680037020A CN107787485A CN 107787485 A CN107787485 A CN 107787485A CN 201680037020 A CN201680037020 A CN 201680037020A CN 107787485 A CN107787485 A CN 107787485A
- Authority
- CN
- China
- Prior art keywords
- memory
- content
- data
- memory bank
- new
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储器在任何给定时钟周期内支持写入操作或多个读取操作。在第一时钟周期内,新内容数据被写入到内容存储体集合之中的特定内容存储体。此外,在第一时钟周期内,从内容存储体集合之中的一个或多个其他内容存储体中的对应位置读取当前内容数据。基于写入到特定内容存储体的新内容数据以及从一个或多个其他内容存储体读取的当前内容数据,生成新奇偶校验数据。新奇偶校验数据被写入到与一个或多个奇偶校验体相关联的高速缓冲存储器。在第一时钟周期之后的第二时钟周期内,新奇偶校验数据从高速缓冲存储器被传送到一个或多个奇偶校验存储体中的一个奇偶校验存储体。
Description
相关申请的交叉引用
本申请要求以下美国临时专利申请的权益:
于2015年4月30日提交的申请号为No.62/154,793、题为“Multi-Bank Access forTwo Read Ports or One Read Port Memory”的美国临时专利申请;
于2015年4月30日提交的申请号为No.62/154,797、题为“Multi-Bank Access forTwo Read Ports or One Read Port and One Write Port Memory”的美国临时专利申请;
于2015年5月1日提交的申请号为No.62/155,683、题为“Multi-Bank Access forTwo Read Ports and Two Write Ports Dynamic Memory”的美国临时专利申请;
于2015年5月4日提交的申请号为No.62/156,693、题为“Bank Multi Access forFour Read Ports or Four Write Ports Memory”的美国临时专利申请;
于2015年5月6日提交的申请号为No.62/157,707、题为“Bank Multi Access for4Read Ports or Four Write Ports Dynamic Memory”的美国临时专利申请;
于2015年5月6日提交的申请号为No.62/157,716、题为“Bank Multi Access forFour Read Ports or Four Read and One Write Ports Memory”的美国临时专利申请;
于2015年5月8日提交的申请号为No.62/158,703、题为“Bank Multi Access forFour Read Ports And Four Write Ports Dynamic Memory”的美国临时专利申请;
于2015年5月8日提交的申请号为No.62/158,708、题为“Bank Multi Access forMultiple Read Ports and Multiple Write Ports”的美国临时专利申请;以及
于2015年5月11日提交的申请号为No.62/159,482、题为“Bank Multi Access forFour Read or One Write Memory”的美国临时专利申请;
所有上文所引用的专利申请的公开内容在此通过引用整体并入本文。
技术领域
本公开一般涉及计算机存储器,并且更具体地涉及具有多个存储体并且存储奇偶校验信息以支持多个同时存储器访问的存储器设备。
背景技术
本文中所提供的背景技术描述是出于一般地呈现本公开的上下文的目的。目前提及的发明人在本背景技术部分中所描述的范围内的工作以及在提交时可能不适合作为现有技术的描述的各方面既不明确地也不隐含地被承认为针对本公开的现有技术。
常规存储器单端口设备通常被配置成使得在任何给定的时钟周期期间,仅单个存储器操作(诸如读取操作或写入操作)可以在特定存储器块处被执行。而且,因为写入操作可能需要几个时钟周期来完成,所以在常规存储器中,各种读取操作的执行也可能延迟数个时钟周期。在一些联网或交换应用的上下文中,被用于分组处理的各种数据(例如,控制表、转发表等)在单个设备的各种交换设备或交换内核之间共享。有时,这些多个设备和内核需要在相同的时钟周期期间在特定存储器块中执行读取和写入操作。
在一些系统中,各种设备具有它们自己的相应存储器,然而,就附加存储器的直接成本以及保持不同存储器同步所需的资源这两方面而言,这样的解决方案是昂贵的。
被转让给本受让人并且通过引用将其全部内容并入本文的、题为“SharingAccess to a Memory Among Clients”的美国专利US 8514651描述了一种系统和方法,其中从由两个或更多个客户端共享的目标存储体(memory bank)读取数据的两个或更多个读取请求在单个时钟周期期间被服务。通过在时钟周期期间准许直接访问目标存储体来服务读取请求中的第一读取请求。在该时钟周期内,还通过使用冗余数据来重构目标存储体中的数据来服务附加读取请求,而不直接访问目标存储体。
发明内容
在实施例中,一种用于在网络设备中使用的存储器,包括内容存储体集合,其被配置成存储与处理网络分组相关联的内容数据。该存储器还包括一个或多个奇偶校验存储体,其与被配置成存储奇偶校验数据的内容存储体集合相对应;以及高速缓冲存储器,其与该一个或多个奇偶校验存储体相对应。该存储器附加地包括存储器控制器设备,其被配置成在第一时钟周期内,响应于接收到将新内容数据写入到内容存储体集合之中的特定内容存储体中的位置的写入请求,(a)将新内容数据写入到特定内容存储体的位置;以及(b)从存储体集合之中的一个或多个其他内容存储体中的对应位置读取当前数据。该存储器控制器设备进一步被配置成基于以下各项来生成新奇偶校验数据:(i)被写入特定内容存储体中的位置的新内容数据;以及(ii)从一个或多个其他内容存储体中的对应位置读取的当前内容数据。存储器控制器设备还被配置成将新奇偶校验数据写入高速缓冲存储器。存储器控制器设备附加地被配置成在第一时钟周期之后的第二时钟周期内,将新奇偶校验数据从高速缓冲存储器传送到一个或多个奇偶校验存储体。
在另一实施例中,一种将新数据写入到具有内容存储体集合和一个或多个奇偶校验存储体的存储器设备的方法,包括:在第一时钟周期内,用存储器控制器设备将新内容数据写入到内容存储体集合之中的特定内容存储体中的位置。该方法还包括:在第一时钟周期内,用存储器控制器设备从内容存储体集合之中的一个或多个其他内容存储体中的对应位置读取当前内容数据。该方法还包括:用存储器控制器设备基于以下各项来生成新奇偶校验数据:(i)被写入特定内容存储体中的位置的新内容数据;以及(ii)从一个或多个其他内容存储体中的对应位置读取的当前内容数据。该方法还包括:用存储器控制器设备将新奇偶校验数据写入高速缓冲存储器。该方法还包括:在第一时钟周期之后的第二时钟周期内,用存储器控制器设备将新奇偶校验数据从高速缓冲存储器传送到一个或多个奇偶校验存储体。
附图说明
图1是根据实施例的示例存储器设备的框图。
图2是根据实施例的将数据写入到图1的存储器设备的示例方法的流程图。
图3是根据实施例的另一示例存储器设备的框图。
图4是根据实施例的将数据写入到图3的存储器设备的示例方法的流程图。
图5是根据实施例的包括共享访问存储器的示例网络设备的框图。
图6是根据实施例的用于在存储器设备中执行写入操作的示例方法的流程图。
具体实施方式
下文对存储器设备的各种实施例进行了描述。在一些实施例中,本文中所描述的存储器设备利用题为“Sharing Access to a Memory Among Clients”的美国专利No.8,514,651中所描述的技术,其通过引用整体并入本文。在一些实施例中,本文中所描述的存储器设备利用在题为“System and Method for Performing Simultaneous Read andWrite Operations in a Memory”的美国专利申请第No.14/964,219号中所描述的技术,其通过引用整体并入本文。
图1是根据实施例的示例存储器设备100的框图。存储器设备100包括用于存储内容数据的存储体104、108的集合(在本文中有时被称为“内容存储体”)。存储器设备100还包括存储体112(在本文中有时被称为“奇偶校验存储体”),其用于存储适合于由纠错算法使用的冗余信息。在实施例中,存储体104、108和112是单端口存储器。在实施例中,存储器设备100被配置成通过使得能够在单个时钟周期内读取内容存储体104、108中的任一个内容存储体中的多于一个的位置中的数据,来促进吞吐量的增加。因此,例如,在实施例中,在给定时钟周期内,存储器104、108中的一个存储器中的一个位置被直接读取,而存储器104、108中的一个存储器中的不同位置处的内容信息使用从存储器104、108中的另一存储器中读取的内容信息以及从奇偶校验存储体112读取的冗余信息进行重构。
在一些实施例中,每个存储体104、108、112被构造为行的阵列。存储体104、108、112的行具有相应的地址,其中存储体(MB1)104的相应的行与存储体(MB2)108的相应的行相对应,并且与存储体(PB)112的相应的行相对应。例如,MB1的第1行与MB2的第1行和PB的第1行相对应;MB1的第2行与MB2的第2行和PB的第2行相对应等。
在实施例中,PB 112的每一行中的奇偶校验数据(在本文中有时被称为“冗余数据”)用MB1的对应行中和MB2的对应行中的内容数据来计算。更一般地,在实施例中,PB 112的第i行中的奇偶校验数据用MB1的第i行和MB2的第i行中的内容数据来计算,其中i是整数索引。因此,例如,如果因为MB1正忙于执行一些其他存储器操作,在特定时钟周期内对MB1的读取访问被阻塞,则可以替代地通过读取来自MB2的第i行的内容数据和来自PB112的第i行的奇偶校验数据,然后使用来自MB2的第i行的内容数据和来自PB 112的第i行的奇偶校验数据来重构来自MB1的第i行的内容数据,来在该时钟周期期间有效地读取来自MB1的第i行的内容数据。相比之下,通过常规单端口存储器,从第一行读取将阻塞并行读取操作读取同一存储器的任何行。然而,通过存储器设备100,如果两个同时接收的读取请求(第一读取请求和第二读取请求)针对MB1、MB2中的同一个,则第一读取请求被允许访问MB1、MB2中的一个,并且第二读取请求通过使用来自MB1、MB2中的另一个的对应行的数据以及来自PB112的对应行的奇偶校验数据来重构所请求的内容数据来服务。
在一些实施例中,使用合适的纠错码(ECC)来计算PB 112中的奇偶校验数据,使得MB1 104或MP2 108中的一个中的内容数据可以使用以下各项来重构:i)MB1 104或MP2 108中的另一个中的内容数据;以及ii)PB 112中的奇偶校验数据。比如,在实施例中,PB112的第i行中的奇偶校验数据通过对MB1的第i行中的内容数据与MB2的第i行中的内容数据进行异或运算(异或运算)来计算。因此,在实施例中,MB1 104或MP2 108中的一个的第i行中的内容数据可以通过对i)MB1 104或MP2 108中的另一个的第i行中的内容数据与ii)PB 112的第i行中的奇偶校验数据进行异或运算来重构。
在实施例中,存储器设备100还包括与PB 112相关联的一个或多个高速缓冲存储器(例如,寄存器)116。在实施例中,一个或多个高速缓冲存储器116(为了简洁,在本文中有时被称为“高速缓冲存储器116”)被用于在奇偶校验数据被存储在PB 112之前,存储奇偶校验数据。在一些实施例中,将新内容数据写入到MB1和MB2中的一个的写入操作包括:将新奇偶校验数据临时存储到高速缓冲存储器116,之后(例如,在后续时钟周期内),将新奇偶校验数据从高速缓冲存储器116传送到PB 112来完成写入操作。在实施例中,在写入操作期间临时被存储在高速缓冲存储器116中的新奇偶校验数据,在后续新内容数据正在被写入到存储体MB1 104、MB2 108中的一个存储体的后续写入操作期间,被传送到PB 112。如下文将更详细解释的,当后续新内容数据正在被写入到存储体MB1 104、MB2 108中的一个存储体时,将新奇偶校验数据临时存储在高速缓冲存储器116中、以及将新奇偶校验数据从高速缓冲存储器116传送到PB 112,确保在该写入操作的仅一个时钟周期之后,存储体MB1 104、MB2 108、PB112将已经可用于代表另一操作(诸如一个或多个读取操作的另一写入操作)的访问。因此,例如,即使两个同时读取操作被指向存储体MB1 104、MB2 108中的同一个存储体,存储器设备100也准许在写入操作的仅一个时钟周期之后执行两个同时读取操作。因此,在实施例中,存储器设备100确保在任何给定时钟周期内可以执行单个写入操作或两个读取操作(不提供并发写入操作)。
存储器控制器设备118耦合到MB1 104、MB2 108、PB 112和高速缓冲存储器116,并且被配置成将数据写入到MB1 104、MB2 108、PB 112以及高速缓冲存储器存储器116,以及从其中读取数据。在实施例中,存储器控制器设备118、MB1 104、MB2 108、PB 112和高速缓冲存储器116利用时钟信号(图1中未示出),并且在实施例中,存储器设备100支持在时钟信号的每个周期期间的一个写入操作或两个同时读取操作。在实施例中,存储器设备100包括仲裁电路(图1中未示出),该仲裁电路在特定时钟周期期间当存储器控制器设备118正在代表两个同时读取操作来尝试访问相同的存储体时,决定哪个读取操作获得对特定存储体(例如,MB1 104、MB2 108)的直接访问。未接收到对该特定存储体的直接访问的读取操作然后基于另一存储体中的对应位置中的内容数据、和被存储在PB 112或高速缓冲存储器116中的对应的奇偶校验数据,来重构特定存储体中的所请求的数据。在实施例中,存储器设备100还包括电路(图1中未示出),其决定当存储器控制器设备118需要基于用于未能获得对特定存储体的访问的读取操作的奇偶校验数据来重构内容数据时,存储器控制器设备118是应当访问被存储在PB 112中的奇偶校验数据,还是应当访问被存储在高速缓冲存储器116中的奇偶校验数据。
当存储器控制器设备118接收到与MB1 104中的可寻址位置相对应的读取请求时,并且如果存储器控制器设备118能够获得对MB1104的访问,则存储器控制器设备118通过从MB1 104中的对应位置读取来服务该读取请求。类似地,当存储器控制器设备118接收到与MB2 108中的可寻址位置相对应的读取请求时,并且如果存储器控制器设备118能够访问MB2 108,则存储器控制器设备118通过从MB2108中的对应位置读取来服务该读取请求。另一方面,当存储器控制器设备118接收到与MB1 104中的可寻址位置相对应的读取请求时,并且如果存储器控制器设备118不能获得对MB1 104的访问,则存储器控制器设备118通过替代地读取来自MB2 108中的对应可寻址位置的内容信息以及来自PB 112中的对应可寻址位置的奇偶校验数据来服务读取请求,然后例如通过对从MB2 108中的对应位置取回的内容信息与从MB2 108中的对应可寻址位置取回的奇偶校验数据进行异或运算,来重构MB1104中的特定位置中的信息。类似地,当存储器控制器设备118接收到与MB2 108中的可寻址位置相对应的读取请求时,并且如果存储器控制器设备118不能获得对MB2 108的访问,则存储器控制器设备118通过替代地读取来自MB1104中的对应可寻址位置的内容信息以及来自PB 112中的对应可寻址位置的奇偶校验数据来服务读取请求,然后通过对从MB1104中取回的内容信息以及从PB 112中的对应位置取回的奇偶校验数据进行异或运算来重构MB2108中的特定位置中的信息。
图2是根据实施例的、利用具有多个存储体的存储器设备以准许在紧接着写入操作的初始时钟周期之后的下一时钟周期内执行诸如另一写入操作或多个同时读取操作之类的其他操作的方式来执行写入操作的示例方法200的流程图。在一些实施例中,方法200由图1的存储器设备100实现。例如,在一个这样的实施例中,存储器设备100的存储器控制器设备118被配置成实现方法200。在另一实施例中,方法200至少部分由存储器设备100的另一合适部件实现,或者由不同于存储器设备100的合适的存储器设备来实现。类似地,在实施例中,存储器设备100(例如,存储器控制器设备118)被配置成实现与用于执行写入操作的方法200不同的合适方法。为了便于解释,参考图1的存储器设备100对方法200进行描述。
仅为了解释目的,在执行写入操作以将新内容数据写入到MB1 104中的特定位置(例如,具有相关联的地址的MB1 104的特定行)的上下文中,对方法200进行描述。在其他场景中,类似技术被用来将新内容数据写入到MB2 108中的特定位置。
方法200包括:将新内容写入到MB1 104。然而,在实施例中,因为新内容数据正在被写入到MB1 104,所以还必须计算对应的新奇偶校验数据并且随后将其存储到PB 112中,以使对存储体MB1 104、MB2 108的多个同时读取访问可以在单个时钟周期内被合适地服务。在具有如存储器设备100的结构的现有存储器设备中,在写入操作的第一时钟周期内,从MB1 104中要由新内容数据覆盖的位置读取旧内容数据,并且从PB 112中的对应位置中读取旧奇偶校验数据。然后,新奇偶校验数据基于以下各项来生成:i)新内容数据;ii)从MP1 014读取的旧内容数据;以及iii)从PB 112读取的旧奇偶校验数据。然后,在第二时钟周期内,新内容数据被写入到MB1 104,并且新奇偶校验数据被写入到PB 112。因此,在这种现有的存储器设备中,新内容数据在MB1 104中不可用,直到写操作的第二时钟周期之后为止。而且,在这样的现有存储器设备中,在写入操作的第二时钟周期期间,存储器设备所支持的操作中的至少一些操作不能被执行。例如,在写入操作的第二时钟周期期间,从MB1104读取内容数据的读取操作或从存储体MB1 104、MB2 108中的特定存储体读取内容数据的多个同时读取操作不能被执行,因为在写入操作的第二时钟周期期间,MB1 104和PB 112都正在被代表写入操作访问。作为另一示例,在写入操作的第二时钟周期期间,新内容数据不能被写入到MB1 104或MB2 108。另一方面,在实施例中,根据方法200执行的写入操作准许在当前写入操作的仅一个时钟周期之后执行后续写入操作或者多达两个同时读取操作。因此,在实施例中,实现方法200的网络设备确保写入请求或两个同时读取请求可以在任何给定时钟周期内被服务。
在框202处,新内容数据被写入到第一存储体中的可寻址位置。例如,在实施例中,存储器控制器设备118将新内容数据写入MB1 104中的可寻址位置。在实施例中,存储器控制器设备118响应于从客户端设备接收到写入请求而将新内容数据写入到MB1 104。在实施例中,写入请求包括新内容数据,并且指示新内容数据要被写入到MB1 104中的可寻址位置(例如,包括MB1 104中的可寻址位置的指示)。在实施例中,新内容数据在写入操作的第一(例如,初始)时钟周期期间被写入到第一存储体中的可寻址位置。因此,在实施例中,在写入操作的初始时钟周期之后,新内容数据在MB1 104中可用。
在框204处,从与在框202处向其写入新内容数据的第一存储体中的位置相对应的第二存储体中的位置,读取当前内容数据。例如,在实施例中,存储器控制器设备118从与在框202处向其写入新内容数据的MB1 104中的可寻址位置相对应的MB2 108中的可寻址位置,读取当前内容数据。在实施例中,框204与框202同时执行(例如,在相同的时钟周期内)。例如,在实施例中,存储器控制器118将新内容数据写入到第一内容存储体MB1 104中的位置,并且在写入操作的初始时钟周期期间,从第二内容存储体MB2 108中的对应位置读取当前内容数据。
在框206处,新奇偶校验数据基于以下各项来生成:(i)在框202处写入到第一存储体的新内容数据;以及(ii)在框204处从第二存储体中的对应位置读取的当前内容数据。在实施例中,存储器控制器设备118生成新奇偶校验数据。在另一实施例中,存储器设备100的另一合适部件(例如,处理器设备)生成新奇偶校验数据。在实施例中,新奇偶校验数据通过对:(i)在框202处写入到第一内容存储体的新内容数据以及(ii)在框204处从第二内容存储体中的对应位置读取的当前内容数据一起进行异或运算来计算。
在框208处,在框206处生成的新奇偶校验数据被写入到与奇偶校验存储体相关联的高速缓冲存储器。例如,在实施例中,存储器控制器设备118将新奇偶校验数据写入到高速缓冲存储器116。在实施例中,框208还包括:设置奇偶校验体中的对应位置不应当被访问的指示符。例如,在实施例中,存储器控制器设备118设置指示符。在各种实施例中,指示符包括奇偶校验存储体中的对应位置的地址、与奇偶校验存储体中的位置相对应的行号、奇偶校验存储体的存储器阵列中的对应元素的标识符等。在一些实施例中,指示符被包括在高速缓冲存储器116中。例如,在实施例中,高速缓冲存储器116中的第一位置被用于存储指示符,并且高速缓冲存储器116中的第二位置被用于存储新奇偶校验数据。在另一实施例中,指示符被存储在与高速缓冲存储器116分离的合适存储器设备(例如,寄存器)中。
在实施例中,在框208被执行之后,即使整个写入过程尚未完成(例如,因为PB 112中的奇偶校验数据尚未被更新),存储器控制器设备118也可以重构新内容数据。例如,如果因为另一并发读取操作被允许访问MB1 104致使存储器控制器设备118被阻塞访问MB1104,则新奇偶校验数据可由存储器控制器设备118使用以重构当前在MB1 104中的新内容数据。
在框210处,奇偶校验数据从与奇偶校验存储体相关联的高速缓冲存储器被传送。例如,在实施例中,存储器控制器设备118将新奇偶校验数据从高速缓冲存储器116传送到PB 112中的可寻址位置,该可寻址位置对应于在框202处向其写入新内容数据的MB1 104中的可寻址位置。在实施例中,在新内容数据正在被写入到内容存储体MB1 104和MB2 108中的一个存储体的后续时钟周期内,奇偶校验数据被从高速缓冲存储器传送到奇偶校验存储体。例如,在实施例中,存储器控制器设备118将奇偶校验数据从高速缓冲存储器116传送到PB 112中的对应位置,同时(例如,在同一时钟周期内)将后续新内容数据写入到MB1 104或MB2 108。
如上文所讨论的,在实施例中,将新内容数据写入到MB1 104、MB2 108通常牵涉到将新内容数据写入到MB1 104、MB2 108,并且在同一时钟周期内,从MB1 104、MB2 108中的另一存储体读取当前内容数据,使得可以计算新奇偶校验数据并且随后将其写入到奇偶校验存储体PB 112。因此,在实施例中,在将新内容数据写入到MB1 104、MB2 108中的一个存储体的写入操作的初始时钟周期期间,不需要访问奇偶校验存储体PB 112本身。另一方面,在实施例中,在多个读取请求正由存储器设备100服务的时钟周期期间,奇偶校验存储体PB112在一些情形中需要用于服务多个读取请求中的一个读取请求,例如,当多个读取请求指向内容存储体MB1 104、MB2 108中的同一个存储体。因此,在实施例中,仅当后续新内容数据正在被写入到内容存储体MB1 014、MB2 108中的一个存储体时(即,在后续写入操作的初始时钟周期期间)才将在先前的写入操作期间生成的奇偶校验数据从高速缓冲存储器116传送到奇偶校验存储体PB 112,确保了奇偶校验存储体PB 112将在新内容数据未被写入内容存储体期间的任何时钟周期内可用于代表读取操作访问。因此,例如,在奇偶校验数据从高速缓冲存储器116传送到奇偶校验存储体PB 112被限于其中新内容数据正在被写入到内容存储体MB1 104、MB2 108的时钟周期的实施例中,如果访问需要用于重构所请求的、针对读取操作的内容数据,则奇偶校验存储体PB 112将可用于代表读取操作访问。
在实施例中,在写入操作的初始时钟周期期间执行框202和204之后,MB1 104、MB2108和PB 112在紧接着写入操作的初始时钟周期的下一时钟周期内变得可用于代表其他操作访问。因此,例如,因为MB1 104和MB2 104两者都可用于代表其他操作访问,所以后续写入操作可以在紧接着当前写入操作的初始时钟周期之后的下一时钟周期内发起。例如,在实施例中,通过在紧接着写入操作的初始时钟周期之后的下一时钟周期内将新内容数据写入到MB1 104、MB2 108中的一个存储体来发起后续写入操作。
作为另一示例,因为MB1 104、MB2 108和PB 112在紧接着写入操作的第一时钟周期之后的下一个时钟周期内可用于由其他操作访问,所以可以在紧接着写入操作的初始时钟周期之后的下一时钟周期内执行两个同时读取操作。因此,在实施例中,方法200包括框212,其包括:在紧接着第一时钟周期之后的第二周期期间,执行针对内容存储体中的特定一个存储体的两个同时读取操作。在实施例中,例如,针对内容存储体中的特定一个内容存储体的两个同时读取操作通过以下各项来执行:对于读取操作中的第一读取操作,直接从特定内容存储体读取所请求的内容数据;以及对于读取操作中的第二读取操作,使用以下各项重构所请求的内容数据:(i)从另一内容存储体读取的内容数据;以及(ii)如上文所描述的、从奇偶校验存储体或与该奇偶校验存储体相关联的高速缓冲存储器中选择性地读取的奇偶校验数据。仅作为示例,在实施例中,在框212处,存储器控制器设备118在紧接着第一时钟周期之后的第二时钟周期内服务指向MB1 104中的第一位置的第一读取请求以及指向MB1 104中的第二位置的第二读取请求。在各种实施例中,第二位置是与第一位置相同的位置或者是与第一位置不同的位置。存储器控制器设备118通过在第二时钟周期内从MB1104中的第一位置读取所请求的内容数据来服务第一读取请求,并且通过以下各项来服务第二读取请求:同样第二时钟周期内,读取(i)来自与MB1 104中的第二位置相对应的MB2108中的位置的数据以及(ii)来自与MB 1 104中的第二位置相对应的PB 112中的位置的奇偶校验数据或来自高速缓冲存储器116的奇偶校验数据;以及使用从MB2 108读取的内容数据和从PB 112或高速缓冲存储器116读取的奇偶校验数据,来重构MB1 104中的第二位置处的所请求的内容数据。
应当指出,在一些实施例中,尽管图1中所图示的存储器设备100允许在给定时钟周期内使用一个奇偶校验存储体中的奇偶校验数据来服务两个同时读取请求,但是存储器设备100允许在给定时钟周期内服务多于两个的同时读取请求。例如,在一些实施例中,存储器设备100包括多于一个的奇偶校验存储体并且在给定时钟周期内支持多于两个的同时读取请求。在一些这样的实施例中,类似于由存储器设备100实现的方法200的方法确保可以在任何给定时钟周期内执行对一个写入请求或多于两个的同时读取请求的服务。
图3是根据实施例的被配置为存储体的二维阵列的另一示例存储器设备300的框图。为了便于解释,阵列的第一维在下文的描述中被称为“列”,而阵列的第二维被称为“行”。使用术语“行”、“多行”、“列”和“多列”并不意味着暗示存储器设备300的特定空间取向,而仅仅是为了在下文的描述中便于区分第一维和第二维。
存储器设备300包括用以存储内容数据的存储体302的二维阵列(在本文中有时被称为“内容存储体”)。存储器设备300还包括用以存储奇偶校验数据的多个存储体303(在本文中有时被称为“奇偶校验存储体”)。第一列内容存储体304(有时被称为“MB(i,1)”,其中i=1、2、3或4)与对应的奇偶校验存储体308(有时被称为“PB_Col1”)相关联。一个或多个高速缓冲存储器(例如,寄存器)312(为了简洁,有时被称为“Cache_col1”或“高速缓冲存储器312”)与奇偶校验存储体308相关联。第二列内容存储体316(有时被称为作为“MB(i,2)”,其中i=1、2、3或4)与对应的奇偶校验存储体320(有时被称为“PB_Col2”)相关联。一个或多个高速缓冲存储器(例如,寄存器)324(为了简洁起见,有时被称为“Cache_col2”或“高速缓冲存储器324”)与奇偶校验存储体320相关联。第三列内容存储体328(有时被称为“MB(i,3)”,其中i=1、2、3或4)与对应的奇偶校验存储体332(有时被称为“PB_Col3”)相关联。一个或多个高速缓冲存储器(例如,寄存器)336(为了简洁,有时被称为“Cache_col3”或“高速缓冲存储器336”)与奇偶校验存储体332相关联。第四列内容存储体340(有时被称为“MB(i,4)”,其中i=1,2,3或4)与对应的奇偶校验存储体344(有时被称为“PB_Col4”)相关联。一个或多个高速缓冲存储器(例如,寄存器)348(为了简洁起见,有时被称为“Cache_col4”或“高速缓冲存储器348”)与奇偶校验存储体344相关联。在实施例中,存储体302各自被配置为单端口存储体,其在给定时钟周期内仅支持单个存储器访问操作,但具有多个可单独寻址的存储器位置。在其他实施例中,存储体是多端口存储器,其被配置成在单个时钟周期内支持两个或更多个存储器操作。在这样的多端口存储器实施例中,当在给定时钟周期内要执行比存储体的端口的数目更多的存储器操作时,内容以与上文关于使用来自其他存储体和奇偶校验存储体的数据的单端口存储器相似的方式来重构。
奇偶校验存储体352(有时被称为“PB_Row1”)与第一行内容存储体相关联,该第一行内容存储体包括MB(1,1)、MB(1,2)、MB(1,3)和MB(1,4)。一个或多个高速缓冲存储器(例如,寄存器)354(为了简洁起见,有时被称为“Cache_row1”或“高速缓冲存储器354”)与奇偶校验存储体352相关联。奇偶校验存储体358(有时被称为“PB_Row2”)与第二行内容存储体相关联,该第二行内容存储体包括MB(2,1)、MB(2,2)、MB(2,3)和MB(2,4)。一个或多个高速缓冲存储器(例如,寄存器)360(为了简洁起见,有时被称为“Cache_row2”或“高速缓冲存储器360”)与奇偶校验存储体358相关联。奇偶校验存储体364(有时被称为“PB_Row3”)与第三行内容存储体相关联,该第三行内容存储体包括MB(3,1)、MB(3,2)、MB(3,3)和MB(3,4)。一个或多个高速缓冲存储器(例如,寄存器)366(为了简洁起见,有时被称为“Cache_row3”或“高速缓冲存储器366”)与奇偶校验存储体364相关联。奇偶校验存储体370(有时被称为“PB_Row4”)与第四行内容存储体相关联,该第四行内容存储体包括MB(4,1)、MB(4,2)、MB(4,3)和MB(4,4)。一个或多个高速缓冲存储器(例如,寄存器)372(为了简洁起见,有时被称为“Cache_row4”或“高速缓冲存储器372”)与奇偶校验存储体370相关联。
奇偶校验存储体376(有时被称为“PB_Crn”或“拐角奇偶校验存储体376”)与一列奇偶校验存储体相关联,该列奇偶校验存储体包括PB_Row1,PB_Row2,PB_Row3和PB_Row4。一个或多个高速缓冲存储器(例如,寄存器)378(为了简洁起见,有时被称为“Cache_crn”或“高速缓冲存储器378”)与奇偶校验存储体376相关联。
在一些实施例中,图3中所图示的每个存储体(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)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的其他MB中的内容数据、以及ii)PB_Col1中的奇偶校验数据。比如,在实施例中,PB_Col1的第i个阵列元素中的奇偶校验数据通过对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)中的一个MB的第i个元素中的内容数据可以通过对i)MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的其他MB的第i个元素中的内容数据和ii)PB_Col1的第i个元素的奇偶校验数据进行异或运算来重构。
在其他实施例中,利用其他合适的ECC(诸如例如,Reed-Solomon)。
以类似方式,在一些实施例中,使用合适的ECC来计算PB_Col2中的奇偶校验数据,使得MB(1,2)、MB(2,2)、MB(3,2)和MB(4,2)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(1,2)、MB(2,2)、MB(3,2)和MB(4,2)中的其他MB中的内容数据、以及ii)PB_Col2中的奇偶校验数据。在一些实施例中,使用合适的ECC来计算PB_Col3中的奇偶校验数据,使得MB(1,3)、MB(2,3)、MB(3,3)和MB(4,3)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(1,3)、MB(2,3)、MB(3,3)和MB(4,3)中的其他MB中的内容数据;以及ii)PB_Col3中的奇偶校验数据。在一些实施例中,使用合适的ECC来计算PB_Col4中的奇偶校验数据,使得MB(1,4)、MB(2,4)、MB(3,4)和MB(4,4)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(1,4)、MB(2,4)、MB(3,4)和MB(4,4)中的其他MB中的内容数据、以及ii)PB_Col4中的奇偶校验数据。
以类似方式,在一些实施例中,使用合适的ECC来计算PB_Row1中的奇偶校验数据,使得MB(1,1)、MB(1,2)、MB(1,3)和MB(1,4)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(1,1)、MB(1,2)、MB(1,3)和MB(1,4)中的其他MB中的内容数据、以及ii)PB_Row1中的奇偶校验数据。在一些实施例中,使用合适的ECC计算PB_Row2中的奇偶校验数据,使得MB(2,1)、MB(2,2)、MB(2,3)和MB(2,4)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(2,1)、MB(2,2)、MB(2,3)和MB(2,4)中的其他MB中的内容数据、以及ii)PB_Row2中的奇偶校验数据。在一些实施例中,使用合适的ECC计算PB_Row3中的奇偶校验数据,使得MB(3,1)、MB(3,2)、MB(3,3)和MB(3,4)中的一个MB中的内容数据可以使用以下各项来重构:i)在MB(3,1)、MB(3,2)、MB(3,3)和MB(3,4)中的其他MB中的内容数据、以及ii)PB_Row3中的奇偶校验数据。在一些实施例中,使用合适的ECC计算PB_Row4中的奇偶校验数据,使得MB(4,1)、MB(4,2)、MB(4,3)和MB(4,4)中的一个MB中的内容数据可以使用以下各项来重构:i)MB(4,1)、MB(4,2)、MB(4,3)和MB(4,4)中的其他MB中的内容数据、以及ii)PB_Row4中的奇偶校验数据。
以类似方式,在一些实施例中,使用合适的ECC计算PB_Crn中的奇偶校验数据,使得PB_Row1,PB_Row2,PB_Row3和PB_Row4中的一个PB_Row中的数据可以使用以下各项来重构:i)PB_Row1、PB_Row2、PB_Row3和PB_Row4中的其他PB_Row中的数据、以及ii)PB_Crn中的奇偶校验数据。在实施例中,PB_Crn中的奇偶校验数据也可以用于重构PB_Col1、PB_Col2、PB_Col3和PB_Col4中的PB_Col中的数据。在一些实施例中,PB_Col1、PB_Col2、PB_Col3和PB_Col4中的PB_Col中的数据可以使用以下各项来重构:i)PB_Col1,PB_Col2,PB_Col3和PB_Col4中的其他PB_Col中的数据、以及ii)PB_Crn中的奇偶校验数据。
在实施例中,图4中所图示的内容存储体和奇偶校验存储体的二维布置允许例如同时服务对来自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(1,2)的对应数据通过以下方式来重构:访问来自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,3)的对应数据通过以下方式来重构:访问来自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,4)的对应数据通过以下方式来重构:访问来自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)的内容数据。来自PB_Row1的对应数据通过以下方式来重构:访问来自PB_Row2、PB_Row3、PB_Row4和PB_Crn中的对应数据,然后用ECC解码过程以及来自PB_Row2、PB_Row3、PB_Row4和PB_Crn的对应数据重构来自PB_Row1的数据。
存储器控制器设备392处理来自图3中未示出的多个客户端(例如,客户端1,客户端2,客户端3和客户端4)的读取请求和写入请求。在实施例中,存储器控制器设备392耦合到内容存储体302中的每个内容存储体、奇偶校验存储体303中的每个奇偶校验存储体以及与奇偶校验存储体303相关联的高速缓冲存储器中的每个高速缓冲存储器。
如上文所简要讨论的,在奇偶校验数据分别被存储在PB_Col1、PB_Col2、PB_Col3、PB_Col4、PB_Row1、PB_Row2、PB_Row3、PB_Row4和PB_Crn之前,奇偶校验数据有时被存储在高速缓冲存储器312、324、336、348、354、360、366、372和378中。因而,存储器控制器设备392包括电路(在图3中未示出),其被配置成确定当存储器控制器设备392要从奇偶校验存储体PB_Col1、PB_Col2、PB_Col3、PB_Col4、PB_Row1、PB_Row2、PB_Row3、PB_Row4和PB_Crn中的一个奇偶校验存储体读取时,存储器控制器设备392是否应当替代地从关联的高速缓冲存储器312、324,、336、348、354、360、366、372和378读取。
现在将参照包括MB(1,1)304-1、MB(2,1)304-2、MB(3,1)304-3、MB(4,1)304-4的第一列存储体来对存储器控制器设备392的操作进行描述。在实施例中,存储器控制器设备392被配置成以类似方式操作以将数据写入到存储体302的第二列,第三列和第四列中的存储体并且从其中读取数据。
当存储器控制器设备392接收到与MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的不同MB相对应的两个读取请求时,则存储器控制器设备392通过从MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的不同MB中读取来服务两个读取请求。另一方面,当存储器控制器设备392接收到与MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的相同MB相对应的两个读取请求时,则存储器控制器设备392通过从MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的一个MB读取来服务第一读取请求。存储器控制器设备392通过读取来自MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的其他MB中的对应位置的内容信息以及来自PB_Col1中的对应位置的奇偶校验数据来服务第二读取请求。然后,在实施例中,存储器控制器设备392通过对从MB(1,1)、MB(2,1)、MB(3,1)和MB(4,1)中的其他MB中的对应位置取回的内容信息与来自PB_Col1中的对应位置的奇偶校验数据进行XOR运算来重构信息。
存储器控制器设备392被配置成以确保以下各项的方式来执行写入操作:针对内容存储体302中的任一个的(i)另一写入操作或(ii)多达四个同时读取操作可以在紧接着写入操作的第一时钟周期之后的时钟周期内执行。在具有类似于图3的存储器设备300的结构的现有技术设备中,在各种实施例中,四个同时读取请求中的至少一些读取请求将在多个时钟周期被阻塞,这些时钟周期用于将新内容写入到内容存储体MB中的一个内容存储体,并且更新列奇偶校验存储体308、320、332、344中的一个列奇偶校验存储体、行奇偶校验存储体352、358、364、370中的一个行奇偶校验存储体以及拐角奇偶校验体376中的奇偶校验数据。比如,在实施例中,将新内容写入到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类似的结构的现有技术设备例如在第一时钟周期内读取来自MB(3,1)的旧内容数据,并且还在第一时钟周期内读取来自PB_Row3的旧奇偶校验数据(与旧内容数据相对应)。此外,具有与图1的存储器设备100类似的结构的现有技术设备例如在第二时钟周期内读取来自PB_Col1的旧奇偶校验数据,并且还在第二时钟周期内使用列接口384-5来读取来自PB_Crn的旧奇偶校验数据(与旧内容数据相对应)。然后,新内容数据、来自MB(3,1)的旧内容数据以及来自PB_Col1、PB_Row3和PB_Crn的旧奇偶校验数据被用来计算新奇偶校验数据。在第二时钟周期内,存储器控制器设备392将(i)新内容数据写入到MB(3,1),并且(ii)将新奇偶校验数据写入到PB_Col1,PB_Row3中和PB_Crn。因此,在这种现有设备中,写入到MB(3,1)的新内容数据在MB(3,1)中直到写入操作的第二时钟周期才可用。而且,在这种现有设备中,因为存储体302中的一个或多个存储体在写入操作的第二时钟周期期间代表写入操作被访问,所以读取来自存储体302的内容数据的四个并行读取操作直到第二时钟周期之后才能被保证。因此,例如,在写入操作的第一时钟周期或第二时钟周期期间,不能执行指向相同存储体302的四个并发读取操作。可替代地,在具有类似于图3的存储器设备300的结构的其他现有存储器设备中,在各种实施例中,写入操作可能以确保在写入操作的多个时钟周期中的每个时钟周期期间可以执行一些并发读取操作(但少于最多为四个的读取操作)的方式在多个时钟周期内分部分的执行。另一方面,如下文更详细解释的,在至少一些实施例中,根据本文中所描述的技术操作的存储器设备300确保在紧接着写入操作的初始时钟周期之后的下一时钟周期内执行多达四个读取操作。
图4是根据实施例的执行写入操作的示例方法400的流程图,该写入操作确保在写入操作的初始时钟周期之后可以执行多达四个并发读取操作。在一些实施例中,方法400由图3的存储器设备300实现。例如,在一个这样的实施例中,存储器设备300的存储器控制器设备392被配置成实现方法300。在另一实施例中,方法300至少部分地由存储器设备300的另一合适部件来实现,或者由不同于存储器设备300的合适存储器设备来实现。类似地,在实施例中,存储器设备300(例如,存储器控制器设备392)被配置成实现与用于将新内容数据写入到存储体的方法400不同的合适方法。为了便于解释,参考存储器设备300的存储器控制器设备392来对方法400进行描述。
仅仅为了解释的目的,在存储器控制器设备392执行写入操作以将内容数据写入到存储体302的第一列中的MB(2,1)中的特定可寻址位置(例如,具有相关联的地址的MB(2,1)的特定行)的上下文中对方法400进行描述。在其他场景中,利用类似技术来执行写入操作以将内容数据写入到诸如MB(1,1)、MB(3,1)或MB(4,1)之类的存储体302的第一列中的其他存储体中的存储体中的特定可寻址位置,或写入到存储体302的非第一列的列(例如,第二列、第三列或第四列)中的存储体302中的特定可寻址位置。
该方法400包括:将新内容数据写入到MB(2,1)中的位置。在实施例中,因为新内容数据正在被写入MB(2,1),所以还必须计算对应的新奇偶校验数据,然后存储到PB_Col1、PB_Row2和PB_Crn。在实施例中,要存储在PB_Col1中的新奇偶校验数据使用以下各项来计算:(i)写入到MB(2,1)中的位置的新内容数据以及(ii)MB(2,1)是其一部分的列中的其他内容存储体302(即,MB(1,1)、MB(3,1)和MB(4,1)中的对应位置中的当前内容数据。在实施例中,要被存储在PB_Row2中的新奇偶校验数据使用以下各项来计算:(i)写入到MB(2,1)中的新内容数据;以及(ii)MB(2,1)是其一部分(即,MB(2,2),MB(2,3)和MB(2,4))的行中其他内容存储体302中的对应位置中的当前内容数据。在实施例中,要存储在PB_Crn中的新奇偶校验数据使用以下各项来计算:(i)要存储在PB_Row2中的新奇偶校验数据以及(ii)行奇偶校验体中的其他行奇偶校验体中的对应位置(即,PB_Row1,PB_Row3,PB_Row4)的当前奇偶校验数据。在另一实施例中,要存储在PB_Crn中的新奇偶校验数据使用以下各项来计算:(i)要存储在PB_Col1中的新奇偶校验数据以及(ii)列奇偶校验存储体中的其他列奇偶校验存储体中的对应位置(即,PB_Col2,PB_Col3,PB_Col4)中的当前奇偶校验数据。
再次参照图1和图2,存储器设备100包括一个奇偶校验存储器,因此方法200需要当新内容数据被写入时更新该奇偶校验存储器。然而,通过图3的存储器设备300的二维结构,每个内容存储体与具有相关联的列奇偶校验存储体的列、具有相关联的行奇偶校验存储体的行以及拐角存储体相对应。因此,与图2的方法200不同,方法400每次将新内容存储器写入到内容存储体时需要更新三个奇偶校验存储体。
在框402处,新内容数据被写入到第一内容存储体中的可寻址位置。例如,在实施例中,存储器控制器设备392将新数据写入到MB(2,1)中的可寻址位置。在实施例中,存储器控制器设备392响应于接收到来自客户端设备的写入请求而将新内容数据写入到MB(2,1),其中写入请求包括新内容数据并且指示新内容数据被写入到MB(2,1)中的可寻址位置。
在框404处,与框402处新内容数据正在被写入到第一内容存储体的同时(例如,在相同的时钟周期内),从第一内容存储体是其一部分的内容存储体的行中的其他内容存储体中的位置,读取第一当前内容数据,该位置与在框402处向其写入新内容数据的第一内容存储体中的位置相对应。例如,在实施例中,存储器控制器设备392从与在框402处向其写入新内容数据的MB(2,1)中的位置相对应的MB(2,2)、MB(2,3)、MB(2,4)中的位置处,读取当前内容数据。
在框406处,与框402处新内容数据正在被写入到第一内容存储体的同时(例如,在相同的时钟周期内),从第一内容存储体是其一部分的内容存储体的列中的其他内容存储体中的位置,读取第二当前内容数据,该位置与在框402处向其写入新内容数据的第一内容存储体中的位置相对应。例如,在实施例中,存储器控制器设备392从与在框402处向其写入新内容数据的MB(2,1)中的位置相对应的MB(1,1)、MB(3,1)、MB(4,1)中的位置读取当前内容数据。
在框408处,与框402处新内容数据正在被写入到第一内容存储体的同时(例如,在相同的时钟周期内),从第一奇偶校验存储体集合中的位置读取当前奇偶校验数据,这些位置与在框402处向其正在写入新内容数据的第一内容存储体中的位置相对应。在实施例中,从行奇偶校验存储体读取当前奇偶校验数据。例如,在实施例中,存储器控制器设备392从PB_Row1、PB_Row3和PB_Row4中的位置读取当前奇偶校验数据,这些位置与在框402处向其写入新内容数据的MB(1,2)中的位置相对应。应当指出,在实施例中,因为要存储在PB_Row2中的新奇偶校验数据将被用于更新PB_Crn中的奇偶校验数据,所以与MB(1,2)是其一部分的行相对应的PB_Row2中的当前奇偶校验数据不需要用于更新PB_Crn中的奇偶校验数据。因而,在实施例中,框408不包括从PB_Row2读取当前奇偶校验数据。
在另一实施例中,以类似方式从列奇偶校验存储体而非行奇偶校验存储体读取当前奇偶校验数据。
在框412处,生成要被写入到第一奇偶校验存储体的第一新奇偶校验数据。在实施例中,第一新奇偶校验数据要被写入到与第一内容存储体是其一部分的行相对应的行奇偶校验存储体。在实施例中,第一新奇偶校验数据使用以下各项来生成:(i)在框402处写入到第一内容存储体的新内容数据以及(ii)在框404读取的第一当前内容数据。例如,在实施例中,存储器控制器设备392通过对(i)在框402处写入到第一内容存储体的新内容数据以及(ii)在框404处读取的第一当前内容数据一起进行异或运算来生成第一新奇偶校验数据。
在框414处,生成要写入到第二奇偶校验存储体的第二新奇偶校验数据。在实施例中,第二新奇偶校验数据要被写入到与第一内容存储体是其一部分的列相对应的列奇偶校验存储体。在实施例中,第二新奇偶校验数据使用以下各项来生成:(i)在框402处写入到第一内容存储体的新内容数据以及(ii)在框406处读取的第二当前内容数据。例如,在实施例中,存储器控制器设备392通过对(i)在框402处写入到第一内容存储体的新内容数据以及(ii)在框406处读取的第二当前内容数据一起进行异或运算来生成第二新奇偶校验数据。
在框416处,生成要被写入到第三奇偶校验存储体的第三新奇偶校验数据。在实施例中,第三新奇偶校验数据要被写入拐角奇偶校验存储体。在实施例中,第三新奇偶校验数据使用以下各项来生成:(i)在框408处读取的当前奇偶校验数据以及(ii)在框412处生成的第一新奇偶校验数据。例如,在实施例中,存储器控制器设备392通过对(i)在框408处读取的当前奇偶校验数据以及(ii)在框412处读取的第一新奇偶校验数据一起进行异或运算来生成第三新奇偶校验数据。
在框418处,在框412处生成的第一新奇偶校验数据、在框414处生成的第二新奇偶校验数据以及在框416处生成的第三新奇偶校验数据分别被写入到第一高速缓冲存储器,第二高速缓冲存储器和第三高速缓冲存储器,其分别与第一奇偶校验存储体,第二奇偶校验存储体和第三奇偶校验存储体相对应。例如,在实施例中,存储器控制器设备392将在框412处生成的第一新奇偶校验数据写入到Cache_Row2,将在框414处生成的第二新奇偶校验数据写入到Cache_Col1,以及将在框416处生成的第三新奇偶校验数据写入到Cache_Crn。
在框420处,第一新奇偶校验数据从第一高速缓冲存储器被传送到与在框402处向其写入新内容数据的位置相对应的第一奇偶校验存储体中的位置。在实施例中,存储器控制器设备392将第一新奇偶校验数据从Cache_Row2传送到与在框402处向其写入新内容数据的MB(2,1)中的位置相对应的PB_Row2中的位置。在实施例中,在后续的新内容数据被写入到PB_Row2所对应的行(即,MB(2,1)是其一部分的行)中的内容存储体中的一个内容存储体的时钟周期期间,第一新奇偶校验数据被传送。
在框422处,第二新奇偶校验数据从第二高速缓冲存储器被传送到与在框402处向其写入新内容数据的位置相对应的第二奇偶校验存储体中的位置。在实施例中,存储器控制器设备392将第二新奇偶校验数据从Cache_Col1传送到与在框402处向其写入新内容数据的MB(2,1)中的位置相对应的PB_Col1中的位置。在实施例中,在后续的新内容数据被写入到PB_Col1所对应的行(即,MB(2,1)是其一部分的列)中的内容存储体中的一个内容存储体的时钟周期期间,第二新奇偶校验数据被传送。
在框424处,第三新奇偶校验数据从第三高速缓冲存储器被传送到与在框402处向其写入新内容数据的位置相对应的第三奇偶校验存储体中的位置。在实施例中,存储器控制器设备392将第三新奇偶校验数据从Cache_Crn传送到与在框402处向其写入新内容数据的MB(2,1)中的位置相对应的PB_Crn中的位置。在实施例中,在后续的新内容数据被写入到内容存储体中的任一个内容存储体(例如,在任何行和任何列中的内容存储体)的时钟周期期间,新奇偶校验数据被传送。
在实施例中,在写入操作的第一时钟周期期间,执行框402至408。在实施例中,写入操作的第一时钟周期是写入操作的初始时钟周期。在写入操作的第一时钟周期期间执行框402至408之后,所有内容存储体和所有奇偶校验存储体在紧接着写入操作的第一时钟周期之后的下一时钟周期期间变得可用于其他操作,诸如另一写入操作或一个或多个读取操作。在实施例中,因为所有的内容存储体和所有的奇偶校验存储体在紧接着第一时钟周期之后的下一时钟周期期间可用于其他操作,所以在紧接着写入操作的第一时钟周期之后的下一时钟周期内可以执行针对内容存储体中的任一内容存储体的一个写入操作或最多四个同时读取操作。例如,在实施例中,即使四个同时读取操作针对相同的内容存储体,也可以在紧接着第一时钟周期之后的下一时钟周期内执行着四个同时读取操作。因此,在实施例中,方法400包括框426,其包括在紧接着第一时钟周期之后的第二周期期间执行针对特定内容存储体的四个同时读取操作。在实施例中,针对特定内容存储体的四个同时读取操作通过以下方式来执行:对于读取操作中的第一读取操作,直接从特定内容存储体读取所请求的内容数据;以及对于读取操作中的第二读取操作,第三读取操作和第四读取操作,使用例如如上文所描述的其他内容存储体中的对应位置中的内容数据和奇偶校验存储体中的对应位置中的奇偶校验数据来重构所请求的内容数据。
如上文所描述的,在实施例中,奇偶校验存储体(诸如图1的奇偶校验存储体PB112)或(i)列奇偶校验存储体308、320、322、344、(ii)行奇偶校验存储体352、358、364、370以及(iii)图3的存储器设备300中的拐角奇偶校验体376,是单端口存储器。在另一实施例中,奇偶校验存储体(诸如图1的奇偶校验存储体PB 112)或者(i)列奇偶校验存储体308、320、322、344、(ii)行奇偶校验存储体352、358、364、370以及(iii)图3的存储器设备300中的拐角奇偶校验体376用双端口存储器替代。这样的双端口奇偶校验存储体允许当新奇偶校验数据被写入到奇偶校验存储体时,在奇偶校验存储体中并发地(例如,在相同的时钟周期内)执行读取操作。在实施例中,因为当新奇偶校验数据被写入到奇偶校验存储体时,在奇偶校验存储体中可以并发地(例如,在相同的时钟周期内)执行读取操作,所以不需要用于临时存储新奇偶校验数据的高速缓冲存储器。相反,新奇偶校验数据可以被直接写入到奇偶校验存储体,而不会阻塞同一个时钟周期内奇偶校验存储体的读取操作。因此,在其中使用双端口奇偶校验存储体的至少一些实施例中,省略了高速缓冲存储器,并且在至少一些这样的实施例中,当将要被写入到奇偶校验存储体的新奇偶校验数据被生成时,新奇偶校验数据被直接写入到奇偶校验存储体。例如,参照图1,在奇偶校验存储体PB 112是双端口存储器的实施例中,存储器设备100省略了高速缓冲存储器116。在该实施例中,当存储器控制器设备118生成要被写入到PB 112中的新奇偶校验数据时,存储器控制器设备118将新奇偶校验数据直接写入到PB 112。在实施例中,因为PB 112中的读取操作可以与新奇偶校验数据正在被写入到PB 112并发地执行,因此即使由写入操作产生的新奇偶校验数据正在被并发地写入到PB 112,在紧接着写入操作的初始时钟周期之后的下一时钟周期内,也可以服务两个同时读取请求。类似地,参考图3,在实施例中,存储器设备300中的列奇偶校验存储体308、320、322、344、行奇偶校验存储体352、358、364、370和拐角奇偶校验体376是双端口存储器,并且存储器设备300中省略了高速缓冲存储器312、324、336、348、354、360、366、372、378。
图5是根据实施例的示例多内核网络设备500(诸如层2和/或层3交换机)的框图。如在下文中还将更详细地描述的,网络设备500包括存储器设备504,其耦合到多个分组处理内核508(在本文中还被称为交换机内核或交换内核)并且由其使用。网络设备500还包括多个端口512,并且每个端口512耦合到与一个或多个通信网络相关联的相应通信链路。在实施例中,分组处理内核508被配置成处理经由端口512接收到的分组,并且确定分组随后应当经由其传送的相应端口512。
在实施例中,分组处理内核508利用被存储在存储器设备504中并且由处理内核508共享的一个或多个控制表(诸如转发数据库表)。因为分组处理内核508并行地操作,所以内核508中的两个或更多个内核可能需要同时在存储器设备504的相同部分上执行存储器操作,例如,执行同时读取操作以获得用于来自相同地址或者目的地是相同地址的分组的转发信息。
在实施例中,存储器设备504包括存储体520的第一集合,其用于存储内容数据(诸如一个或多个控制表)。存储器设备504还包括一个或多个存储体524的第二集合,其用于存储与存储在存储体520的集合中的内容数据相关联的冗余信息。当存储器设备504同时(例如,在存储器设备504的同一时钟周期期间)接收到在存储体520中的一个存储体中执行存储器操作的多个请求时,存储器设备504被配置成确定多个请求中的一个或多个请求被阻塞访问一个存储体520。响应于确定多个请求中的一个或多个请求被阻塞访问一个存储体520,存储器设备504被配置成从存储体524访问冗余数据,并且使用冗余数据而不使用被存储在该一个存储体520中的数据来重构被存储在该一个存储体520中的数据。所请求的存储器操作中的一个存储器操作使用被存储在一个存储体520中的数据来执行。另一方面,在实施例中,在不访问一个存储体520的情况下以及基于使用来自存储体524的冗余数据重构的数据,执行所请求的存储器操作中的另一存储器操作。
在网络设备500中,每个分组处理内核508通常充当客户端,其生成在存储器设备504的一个或多个存储体520中执行存储器操作的请求。本文中所使用的术语“客户端”是指设备,其被配置成生成在存储器设备的一个或多个存储体中执行存储器操作的请求。在其中分组处理内核508包括每个设备被配置成生成在存储器设备504的一个或多个存储体520中执行存储器操作的请求的多个设备(例如,电路)的实施例中,分组处理内核508包括或充当多个客户端。例如,在其中分组处理器包括具有多个流水线级的流水线并且多个流水线级被配置成生成在存储器设备的一个或多个存储体中执行存储器操作的请求的实施例中,分组处理器包括或者充当多个客户。作为另一示例,单个处理器或单个流水线级被配置成同时生成多个存储器访问请求,并且因此单个处理器或单个流水线级包括或充当多个客户端。
在实施例中,存储器设备504是固态设备。例如,存储器设备504被包括在集成电路(IC)或其他固态设备上。在实施例中,存储器设备504和分组处理内核508被包括在单个IC上。
在各种实施例中,存储器设备504包括一个或多个高速缓冲存储器528,其与奇偶校验存储体524相关联,用于在奇偶校验数据被传送到奇偶校验存储体524之前临时存储奇偶校验数据。在各种实施例中,存储器设备504被配置成在存储器设备504的第一时钟周期内以确保后续写入请求或多个读取请求可以在紧接着第一时钟周期之后的下一时钟周期内被服务的方式来服务写入请求。在实施例中,存储器设备504包括图1的存储器设备100。在另一实施例中,存储器设备504包括图3的存储器设备300。
尽管存储器设备504在上文中被讨论为被包括在网络设备500中,但是类似存储器设备可以用于其他类型的计算系统,诸如个人计算机、服务器、大型机、智能电话、游戏系统、机顶盒、通信设备等。例如,计算系统可以包括多个设备(例如,处理器(例如,中央处理单元、协处理器、专用处理单元等)、电路、流水线级等),每个设备充当关于诸如存储器设备504之类的存储器设备的客户端。
图6是根据实施例的用于在包括内容存储体集合和一个或多个奇偶校验存储体的存储器设备中执行写入操作的方法的流程图。在各种实施例中,方法600在图1的存储器设备100、图3的存储器设备300和图5的存储器设备504中的一个存储器设备中实现。在其他实施例中,方法500在与图1的存储器设备100、图3的存储器设备300和图5的存储器设备504不同的合适的存储器设备中实现。类似地,在其他实施例中,图1的存储器设备100、图3的存储器设备300以及图5的存储器设备504实现用于执行写入操作的其他合适方法。
在框602处,在写入操作的第一时钟周期内,新内容数据被写入到存储器设备中所包括的存储体集合中的第一存储体中的位置。
在框604处,也在写入操作的第一时钟周期内,从内容存储体集合之中的一个或多个其他内容存储体和/或一个或多个奇偶校验存储体中的对应位置读取生成新奇偶校验数据所需的当前数据。例如,在其中存储器设备(诸如图1的存储器设备100)在实施例中包括内容存储体集合和与内容存储体集合相对应的奇偶校验存储体的实施例中,除了在框602处向其写入新内容数据的第一内容存储体之外的内容存储体中的每个内容存储体读取当前数据。作为另一示例,在其中存储器设备(诸如图3的存储器设备300)包括内容存储体和奇偶校验存储体的二维阵列的实施例中,从以下各项读取当前数据:(i)第一内容存储体是其一部分的内容存储体的行中的其他内容存储体中的每个内容存储体以及(ii)第一内容存储体是其一部分的内容存储体的列中的其他内容存储体中的每个内容存储体、以及(iii)除了第一存储体是其一部分的行相对应的行奇偶校验体之外的行奇偶校验体中的每个行奇偶校验体。可替代地,在其中存储器设备(诸如图3的存储器设备300)包括内容存储体和奇偶校验存储体的二维阵列的另一实施例中,当前数据从以下各项读取:(i)第一内容存储体是其一部分的内容存储体的行中的其他内容存储体中的每个内容存储体以及(ii)第一内容存储体是其一部分的内容存储体的列中的其他内容存储体中的每个内容存储体、以及(iii)除了与第一存储体是其一部分的列相对应的列奇偶校验体之外的列奇偶校验体中的每个列奇偶校验体。
在框606处,生成新奇偶校验数据。在实施例中,至少基于在框602处写入到第一存储体的新内容数据和在框604处读取的当前数据来生成新奇偶校验。在实施例中,新奇偶校验数据被生成以替代奇偶校验存储体的一个或多个位置中的当前奇偶校验数据,这些位置与在框602处向其写入新内容数据的第一内容存储体中的位置相对应。例如,在其中存储器设备包括存储体集合和与内容存储体集合相对应的奇偶校验存储体(诸如图1的存储器设备100)的实施例中,生成新奇偶校验数据以替代奇偶校验存储体中的位置中的当前奇偶校验数据,该位置与在框602处向其写入新内容数据的第一内容存储体中的位置相对应。作为另一示例,在其中存储器设备包括内容存储体和奇偶校验存储体的二维阵列(诸如图3的存储器设备300)的实施例中,生成第一新奇偶校验数据以替代行奇偶校验存储体中的对应位置中的当前奇偶校验数据,该位置与第一内容存储体是其一部分的行相对应,生成第二新奇偶校验数据以替代列奇偶校验存储体中的对应位置中的当前奇偶校验数据,该对应位置与第一内容存储体是其一部分的列相对应;以及生成第三新奇偶校验数据以替代拐角奇偶校验存储体中的对应位置中的当前奇偶校验数据。在任何情况下,在实施例中,因为在第一时钟周期内在框604处从存储体读取生成新奇偶校验数据所需的当前数据,在该时钟周期中在框602处新内容数据被写入到第一内容存储体,所以所有内容存储体和该一个或多个其他内容存储体将可用于在紧接着第一时钟周期之后的下一时钟周期内执行诸如另一写入操作或一个或多个同时读取操作之类的其他操作。
在框608处,在框606处生成的新奇偶校验数据被写入到高速缓冲存储器。例如,在其中存储器设备包括存储体集合和与内容存储体集合相对应的奇偶校验存储体(诸如图1的存储器设备100)的实施例中,框608包括:将新奇偶数据写入到与奇偶校验存储体相对应的高速缓冲存储器。作为另一示例,在其中存储器设备包括内容存储体和奇偶校验存储体的二维阵列(诸如图3的存储器设备300)的实施例中,将新奇偶校验数据写入到高速缓冲存储器包括:将第一新奇偶校验数据写入到与第一行存储体相对应的高速缓冲存储器,将第二新奇偶校验数据写入到第一列存储体,以及将第三新奇偶校验数据写入到拐角存储体。
在框610处,新奇偶校验数据从高速缓冲存储器被传送到对应的奇偶校验存储体。例如,在其中存储器设备包括存储体集合和与该内容存储体集合相对应的奇偶校验存储体(诸如图1的存储器设备100)的实施例中,框608包括:将新奇偶校验数据从高速缓冲存储器传送到奇偶校验存储体中的位置,该位置与在框602处向其写入新内容数据的第一内容存储体中的位置相对应。作为另一示例,在其中存储器设备包括内容存储体和奇偶校验存储体的二维阵列(诸如图3的存储器设备300)的实施例中,第一新奇偶校验数据从第一高速缓冲存储器被传送到行奇偶校验体中的位置,该位置与在框602处向其写入新内容数据的第一内容存储体中的位置相对应;第二新奇偶校验数据从第二高速缓冲存储器被传送到列存储体中的位置,该位置与在框602处向其写入新内容数据的第一内容存储体中的位置相对应;以及第三新奇偶校验数据从第三高速缓冲存储器被传送到拐角存储体中的位置,该位置与在框602处向其写入新内容数据的第一内容存储体中的位置相对应。在实施例中,新奇偶校验数据在后续时钟周期内从高速缓冲存储器被传送到对应的奇偶校验存储体,在该时钟周期期间,代表后续写入操作,后续的新数据正在被写入到内容存储体集合之中的内容存储体。在实施例中,暂时将新奇偶校验体存储在高速缓冲存储器中并在后续写入操作期间的后续时钟周期内将新奇偶校验数据从高速缓冲存储器传送到奇偶校验存储体,确保在写入操作的第一时钟周期之后,奇偶校验存储体代表其他操作可供访问。
上文所描述的各种块、操作和技术可以以硬件来实现。当以硬件实现时,硬件可以包括以下一项或多项:i)分立部件、ii)一个或多个集成电路、iii)一个或多个专用集成电路(ASIC)、一个或多个可编程逻辑器件(PLD)等。
虽然已经参照旨在仅仅是说明性的而不是对本发明的限制具体示例对本发明进行了描述,但是在不背离本发明的范围的情况下,可以对所公开的实施例进行改变、添加和/或删除。
Claims (20)
1.一种用于网络设备的存储器,包括:
内容存储体集合,所述内容存储体集合被配置成存储与处理网络分组相关联的内容数据;
一个或多个奇偶校验存储体,所述一个或多个奇偶校验存储体与所述内容存储体集合相对应,被配置成存储奇偶校验数据;
高速缓冲存储器,所述高速缓冲存储器与所述一个或多个奇偶校验存储体相对应;以及
存储器控制器设备,所述存储器控制器设备被配置成:
在第一时钟周期内,响应于接收到将新内容数据写入到所述内容存储体集合之中的特定内容存储体中的位置的写入请求,(a)将所述新内容数据写入到所述特定内容存储体中的所述位置;以及(b)从所述存储体集合之中的一个或多个其他内容存储体中的对应位置读取当前数据;
基于以下各项来生成新奇偶校验数据:(i)被写入到所述特定内容存储体中的所述位置的所述新内容数据;以及(ii)从所述一个或多个其他内容存储体中的所述对应位置被读取的对应的当前内容数据;
将所述新奇偶校验数据写入到所述高速缓冲存储器;以及
在所述第一时钟周期之后的第二时钟周期内,将所述新奇偶校验数据从所述高速缓冲存储器传送到所述一个或多个奇偶校验存储体。
2.根据权利要求1所述的存储器,其中所述存储器控制器设备进一步被配置成在紧接着所述第一时钟周期之后的下一时钟周期内,服务多个同时读取请求以从所述内容存储体集合中读取内容数据,其中所述存储器控制器设备被配置成:
通过直接从所述内容存储体集合之中的内容存储体读取内容数据来服务所述多个读取请求中的一个读取请求;
通过基于以下各项而在所述内容存储体中重构内容数据来服务所述多个读取请求中的另一读取请求:(i)所述内容存储体集合之中的一个或多个其他内容存储体中的对应内容数据;以及(ii)(a)所述高速缓冲存储器和(b)所述一个或多个奇偶校验存储体中的一个中的对应的奇偶校验数据。
3.根据权利要求2所述的存储器,其中
所述内容存储体集合至少包括第一内容存储体和第二内容存储体;
所述多个读取请求包括用以从所述第一内容存储体中的第一位置读取第一内容数据的第一读取请求、以及用以从所述第一内容存储体中的第二位置读取第二内容数据的第二读取请求;以及
所述存储器控制器设备被配置成在紧接着所述第一时钟周期之后的下一时钟周期内,
通过从所述第一内容存储体中的所述第一位置读取所述第一内容数据来服务所述第一读取请求;
通过基于与所述第一内容存储体中的所述第二位置相对应的奇偶校验数据而在所述第一内容存储体中的所述第二位置处重构所述第二内容数据,来服务所述第二读取请求。
4.根据权利要求3所述的存储器,其中所述存储器控制器被配置成通过以下方式在所述第一内容存储体中的所述第二位置处重构所述第二内容数据:
从所述第二内容存储体中的、与所述第一内容存储体中的所述第二位置相对应的位置读取内容数据;
读取与所述第一奇偶校验体中的所述第二位置相对应的所述奇偶校验数据,包括:从以下一项中选择性地读取所述奇偶校验数据:(i)与所述第一存储体中的所述第二位置相对应的所述奇偶校验存储体中的位置;以及(ii)所述高速缓冲存储器;以及
基于从所述第二存储体被读取的所述内容数据以及从以下一项中读取的所述奇偶校验数据,来在所述第一存储器数据中的第二位置处重构所述第二内容数据:(i)与所述第一存储体中的所述第二位置相对应的所述奇偶校验存储体中的位置;以及(ii)所述高速缓冲存储器。
5.根据权利要求1所述的存储器,其中
所述内容存储体集合包括内容存储体的二维阵列,所述内容存储体的二维阵列被布置在内容存储体的行和内容存储体的列中;
所述一个或多个奇偶校验存储体包括:(i)第一行奇偶校验存储体,所述第一行奇偶校验存储体与所述特定内容存储体是其一部分的行相对应;(ii)第一列奇偶校验存储体,所述第一列奇偶校验存储体与所述特定内容存储体是其一部分的列相对应;以及(ii)拐角奇偶校验存储体;以及
所述存储器控制器被配置成通过生成以下各项来生成所述新奇偶校验数据:(i)第一新奇偶校验数据,以替换所述第一行奇偶校验体中的对应的当前奇偶校验数据;(ii)第二新奇偶校验数据,以替换所述第一列奇偶校验存储体中的对应的当前奇偶校验数据;以及(iii)第三新奇偶校验数据,以替换所述拐角存储体中的对应的当前奇偶校验数据。
6.根据权利要求5所述的存储器,其中
所述高速缓冲存储器包括第一高速缓冲存储器,所述第一高速缓冲存储器与所述第一行奇偶校验存储体相对应;第二高速缓冲存储器,所述第二高速缓冲存储器与所述第一列奇偶校验存储体相对应;以及第三高速缓冲存储器,所述第三高速缓冲存储器与所述拐角存储体相对应;以及
所述存储器控制器设备被配置成:
(i)将所述第一新奇偶校验数据写入到所述第一高速缓冲存储器、(ii)将所述第二新奇偶校验数据写入到所述第二高速缓冲存储器;以及(iii)将所述第三新奇偶校验数据写入到所述第三高速缓冲存储器;以及
在所述第一时钟周期之后的所述第二时钟周期内,(i)将所述第一新奇偶校验数据从所述第一高速缓冲存储器传送到所述第一行奇偶校验存储体、(ii)将所述第二新奇偶校验数据从所述第二高速缓冲存储器传送到所述第一列奇偶校验体、以及(iii)将所述第三新奇偶校验从所述第三高速缓冲存储器传送到所述拐角存储体。
7.根据权利要求1所述的存储器,其中所述存储器控制器被配置成将在所述第一时钟周期期间基于被写入到所述内容存储体的所述新内容数据而生成的所述新奇偶校验数据从所述高速缓冲存储器传送到所述奇偶校验存储体,同时服务将后续新内容数据写入到所述内容存储体集合的后续写入请求。
8.根据权利要求1所述的存储器,其中所述存储器控制器设备进一步被配置成在紧接着所述第一时钟周期之后的下一时钟周期内,服务将后续新内容数据写入到所述内容存储体集合的后续写入请求。
9.根据权利要求1所述的存储器,其中内容存储体集合包括单端口存储器。
10.根据权利要求1所述的存储器,其中所述一个或多个奇偶校验存储体包括单端口存储器。
11.一种将新数据写入到存储器设备的方法,所述存储器设备具有内容存储体集合以及一个或多个奇偶校验存储体,所述方法包括:
在第一时钟周期内,用存储器控制器设备将新内容数据写入到所述内容存储体集合之中的特定内容存储体中的位置;
在所述第一时钟周期内,用所述存储器控制器设备从所述内容存储体集合中的一个或多个其他内容存储体中的对应位置读取当前内容数据;
用所述存储器控制器设备基于以下各项来生成新奇偶校验数据:(i)被写入到所述特定内容存储体中的所述位置的所述新内容数据;以及(ii)从所述一个或多个其他内容存储体中的所述对应位置被读取的所述当前内容数据;
用所述存储器控制器设备将所述新奇偶校验数据写入到高速缓冲存储器;
在所述第一时钟周期之后的第二时钟周期内,用所述存储器控制器设备将所述新奇偶校验数据从所述高速缓冲存储器传送到所述一个或多个奇偶校验存储体。
12.根据权利要求11所述的方法,还包括:在紧接着所述第一时钟周期之后的下一时钟周期内,服务从所述内容存储体集合中读取内容数据的多个同时读取请求,包括:
通过直接从所述内容存储体集合中的内容存储体中读取内容数据来服务所述多个读取请求中的一个读取请求;
通过基于以下各项而在所述内容存储体中重构内容数据来服务所述多个读取请求中的另一读取请求:(i)所述内容存储体集合之中的一个或多个其他内容存储体中的对应内容数据;以及(ii)(a)所述高速缓冲存储器和(b)所述一个或多个奇偶校验存储体中的一个中的对应的奇偶校验数据。
13.根据权利要求12所述的方法,其中
所述内容存储体集合至少包括第一内容存储体和第二内容存储体;
所述多个读取请求包括用以从所述第一内容存储体中的第一位置读取第一内容数据的第一读取请求、以及用以从所述第一内容存储体中的第二位置读取第二内容数据的第二读取请求;以及
所述方法还包括:在紧接着所述第一时钟周期之后的下一时钟周期内,
通过从所述第一内容存储体中的所述第一位置读取所述第一内容数据,来服务所述第一读取请求;
通过基于与所述第一内容存储体中的所述第二位置相对应的奇偶校验数据而在所述第一内容存储体中的所述第二位置处重构所述第二内容数据,来服务所述第二读取请求。
14.根据权利要求13所述的方法,其中在所述第一存储体中的所述第二位置处重构所述第二内容数据包括:
从所述第二内容存储体中的、与所述第一内容存储体中的所述第二位置相对应的位置读取内容数据;
读取与所述第一奇偶校验体中的所述第二位置相对应的所述奇偶校验数据,包括:从以下一项中选择性地读取所述奇偶校验数据:(i)与所述第一存储体中的所述第二位置相对应的所述奇偶校验存储体中的位置;以及(ii)所述高速缓冲存储器;以及
基于从所述第二存储体读取的所述内容数据、以及从以下一项中读取的所述奇偶校验数据来在所述第一存储器数据中的所述第二位置处重构所述第二内容数据:(i)与所述第一存储体中的所述第二位置相对应的所述奇偶校验存储体中的位置;以及(ii)所述高速缓冲存储器。
15.根据权利要求11所述的方法,其中
所述内容存储体集合包括内容存储体的二维阵列,所述内容存储体的二维阵列被布置在内容存储体的行和内容存储体的列中;
所述一个或多个奇偶校验存储体包括:(i)第一行奇偶校验存储体,所述第一行奇偶校验存储体与所述特定内容存储体是其一部分的行相对应;(ii)第一列奇偶校验存储体,所述第一列奇偶校验存储体与所述特定内容存储体是其一部分的列相对应;以及(ii)拐角奇偶校验存储体;以及
生成所述新奇偶校验数据包括:(i)生成第一新奇偶校验数据以替换所述第一行奇偶校验体中的对应的当前奇偶校验数据;(ii)生成第二新奇偶校验数据以替换所述第一列奇偶校验存储体中的对应的当前奇偶校验数据;以及(iii)生成第三新奇偶校验数据以替换所述拐角存储体中的对应的当前奇偶校验数据。
16.根据权利要求15所述的方法,其中
所述高速缓冲存储器包括第一高速缓冲存储器,所述第一高速缓冲存储器与所述第一行奇偶校验存储体相对应;第二高速缓冲存储器,所述第二高速缓冲存储器与所述第一列奇偶校验存储体相对应;以及第三高速缓冲存储器,所述第三高速缓冲存储器与所述拐角存储体相对应;以及
将所述新奇偶校验数据写入到所述一个或多个奇偶校验存储体包括:(i)将所述第一新奇偶校验数据写入到所述第一高速缓冲存储器;(ii)将所述第二新奇偶校验数据写入到所述第二高速缓冲存储器;以及(iii)将所述第三新奇偶校验数据写入到所述第三高速缓冲存储器;以及
在所述第一时钟周期之后的所述第二时钟周期内,将所述新奇偶校验数据从所述高速缓冲存储器传送到与所述内容存储体集合相对应的一个或多个奇偶校验存储体包括:(i)将所述第一新奇偶校验数据从所述第一高速缓冲存储器传送到所述第一行奇偶校验存储体,(ii)将所述第二新奇偶校验数据从所述第二高速缓冲存储器传送到所述第一列奇偶校验体,以及(iii)将所述第三新奇偶校验从所述第三高速缓冲存储器传送到所述拐角存储体。
17.根据权利要求11所述的方法,其中将基于在所述第一时钟周期期间被写入到所述内容存储体的所述新内容数据生成的所述新奇偶校验数据从所述高速缓冲存储器传送到所述一个或多个奇偶校验存储体,与服务用以将后续新内容数据写入到所述内容存储体集合的后续写入请求并发地被执行。
18.根据权利要求11所述的方法,还包括:在紧接着所述第一时钟周期之后的下一时钟周期内,用所述存储器控制器设备服务后续写入请求,以将后续新内容数据写入到所述内容存储体集合。
19.根据权利要求11所述的方法,其中所述内容存储体集合包括单端口存储器。
20.根据权利要求11所述的方法,其中所述一个或多个奇偶校验存储体包括单端口存储器。
Applications Claiming Priority (19)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/159,482 | 2009-03-12 | ||
US201562154797P | 2015-04-30 | 2015-04-30 | |
US201562154793P | 2015-04-30 | 2015-04-30 | |
US62/154,793 | 2015-04-30 | ||
US62/154,797 | 2015-04-30 | ||
US201562155683P | 2015-05-01 | 2015-05-01 | |
US62/155,683 | 2015-05-01 | ||
US201562156693P | 2015-05-04 | 2015-05-04 | |
US62/156,693 | 2015-05-04 | ||
US201562157707P | 2015-05-06 | 2015-05-06 | |
US201562157716P | 2015-05-06 | 2015-05-06 | |
US62/157,707 | 2015-05-06 | ||
US62/157,716 | 2015-05-06 | ||
US201562158708P | 2015-05-08 | 2015-05-08 | |
US201562158703P | 2015-05-08 | 2015-05-08 | |
US62/158,708 | 2015-05-08 | ||
US62/158,703 | 2015-05-08 | ||
US201562159482P | 2015-05-11 | 2015-05-11 | |
PCT/IB2016/000673 WO2016174521A1 (en) | 2015-04-30 | 2016-04-29 | Multiple read and write port memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107787485A true CN107787485A (zh) | 2018-03-09 |
CN107787485B CN107787485B (zh) | 2021-04-09 |
Family
ID=56116471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680037020.3A Active CN107787485B (zh) | 2015-04-30 | 2016-04-29 | 多读取和写入端口存储器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10387322B2 (zh) |
EP (1) | EP3289462B1 (zh) |
CN (1) | CN107787485B (zh) |
WO (1) | WO2016174521A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403173B2 (en) | 2015-04-30 | 2022-08-02 | Marvell Israel (M.I.S.L) Ltd. | Multiple read and write port memory |
US10229047B2 (en) * | 2016-08-06 | 2019-03-12 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using cache filtering |
US11036403B2 (en) | 2018-07-30 | 2021-06-15 | Marvell Asia Pte, Ltd. | Shared memory block configuration |
TWI703438B (zh) * | 2018-09-11 | 2020-09-01 | 慧榮科技股份有限公司 | 映射表更新方法 |
US11657889B2 (en) | 2020-03-23 | 2023-05-23 | Intel Corporation | Error correction for dynamic data in a memory that is row addressable and column addressable |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120127818A1 (en) * | 2010-11-22 | 2012-05-24 | Gil Levy | Sharing access to a memory among clients |
US8514654B2 (en) * | 2009-09-08 | 2013-08-20 | Seiko Epson Corporation | Storage apparatus, substrate, liquid container, system, and control method of the storage apparatus |
CN103314363A (zh) * | 2010-08-17 | 2013-09-18 | 回忆系统公司 | 用于设计分级存储器系统的高速存储器系统和方法 |
CN103729260A (zh) * | 2012-10-12 | 2014-04-16 | 联发科技股份有限公司 | 数据管理/检查方法及相关内容寻址存储器系统 |
CN103827833A (zh) * | 2011-07-22 | 2014-05-28 | 桑迪士克科技股份有限公司 | 存储数据的系统和方法 |
US20140258775A1 (en) * | 2009-05-18 | 2014-09-11 | Fusion-Io, Inc. | Apparatus, system, and method for reconfiguring an array of storage elements |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4870643A (en) | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
JP3176157B2 (ja) | 1992-12-28 | 2001-06-11 | 株式会社日立製作所 | ディスクアレイ装置及びそのデータ更新方法 |
US5508732A (en) | 1993-03-22 | 1996-04-16 | International Business Machines Corporation | Data server, control server and gateway architecture system and method for broadcasting digital video on demand |
US5414455A (en) | 1993-07-07 | 1995-05-09 | Digital Equipment Corporation | Segmented video on demand system |
US5581479A (en) | 1993-10-15 | 1996-12-03 | Image Telecommunications Corp. | Information service control point, which uses different types of storage devices, which retrieves information as blocks of data, and which uses a trunk processor for transmitting information |
US5893919A (en) * | 1996-09-27 | 1999-04-13 | Storage Computer Corporation | Apparatus and method for storing data with selectable data protection using mirroring and selectable parity inhibition |
US6397324B1 (en) | 1999-06-18 | 2002-05-28 | Bops, Inc. | Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file |
US6748480B2 (en) | 1999-12-27 | 2004-06-08 | Gregory V. Chudnovsky | Multi-bank, fault-tolerant, high-performance memory addressing system and method |
EP1342364A2 (en) | 2000-11-28 | 2003-09-10 | SeaChange International, Inc. | Content/service handling and delivery |
US6523087B2 (en) | 2001-03-06 | 2003-02-18 | Chaparral Network Storage, Inc. | Utilizing parity caching and parity logging while closing the RAID5 write hole |
US6789155B2 (en) | 2001-08-29 | 2004-09-07 | Micron Technology, Inc. | System and method for controlling multi-bank embedded DRAM |
US7437472B2 (en) | 2001-11-28 | 2008-10-14 | Interactive Content Engines, Llc. | Interactive broadband server system |
US6839797B2 (en) | 2001-12-21 | 2005-01-04 | Agere Systems, Inc. | Multi-bank scheduling to improve performance on tree accesses in a DRAM based random access memory subsystem |
KR100482380B1 (ko) | 2002-11-11 | 2005-04-14 | (주)실리콘세븐 | 메모리 뱅크별 기입 동작의 수행이 가능한 에스램 호환 메모리 및 그 구동방법 |
US6886088B2 (en) | 2002-12-03 | 2005-04-26 | Lsi Logic Corporation | Memory that allows simultaneous read requests |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US20060282588A1 (en) | 2005-06-09 | 2006-12-14 | Jonah Proujansky-Bell | Processor system that allows for simultaneous access by multiple requestors to a target with multiple ports |
US7934120B2 (en) * | 2006-09-11 | 2011-04-26 | International Business Machines Corporation | Storing data redundantly |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
EP2359248A4 (en) | 2008-12-19 | 2012-06-13 | Hewlett Packard Development Co | REDUNDANT MEMORIZATION OF DATA FOR A UNIFORM READING LATENCY |
US8327249B2 (en) | 2009-08-20 | 2012-12-04 | Broadcom Corporation | Soft error rate protection for memories |
US8402217B2 (en) * | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
US8358651B1 (en) | 2009-09-21 | 2013-01-22 | Marvell International Ltd. | Switch device having a plurality of processing cores |
US8316175B2 (en) * | 2009-11-03 | 2012-11-20 | Inphi Corporation | High throughput flash memory system |
US8631190B2 (en) | 2011-07-22 | 2014-01-14 | International Business Machines Corporation | Prefetching data tracks and parity data to use for destaging updated tracks |
US8724423B1 (en) | 2012-12-12 | 2014-05-13 | Lsi Corporation | Synchronous two-port read, two-port write memory emulator |
WO2016092364A1 (en) | 2014-12-09 | 2016-06-16 | Marvell Israel (M.I.S.L.) Ltd. | System and method for performing simultaneous read and write operations in memory |
-
2016
- 2016-04-29 CN CN201680037020.3A patent/CN107787485B/zh active Active
- 2016-04-29 US US15/143,200 patent/US10387322B2/en active Active
- 2016-04-29 EP EP16728092.4A patent/EP3289462B1/en active Active
- 2016-04-29 WO PCT/IB2016/000673 patent/WO2016174521A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140258775A1 (en) * | 2009-05-18 | 2014-09-11 | Fusion-Io, Inc. | Apparatus, system, and method for reconfiguring an array of storage elements |
US8514654B2 (en) * | 2009-09-08 | 2013-08-20 | Seiko Epson Corporation | Storage apparatus, substrate, liquid container, system, and control method of the storage apparatus |
CN103314363A (zh) * | 2010-08-17 | 2013-09-18 | 回忆系统公司 | 用于设计分级存储器系统的高速存储器系统和方法 |
US20120127818A1 (en) * | 2010-11-22 | 2012-05-24 | Gil Levy | Sharing access to a memory among clients |
CN103827833A (zh) * | 2011-07-22 | 2014-05-28 | 桑迪士克科技股份有限公司 | 存储数据的系统和方法 |
CN103729260A (zh) * | 2012-10-12 | 2014-04-16 | 联发科技股份有限公司 | 数据管理/检查方法及相关内容寻址存储器系统 |
Non-Patent Citations (2)
Title |
---|
K. PANDIARAJ,L. NISHA: "A low power parity CAM for asynchronous transfer mode(ATM) switch application", 《2014 INTERNATIONAL CONFERENCE ON COMPUTER COMMUNICATION AND INFORMATICS》 * |
刘志贵,刘亮,王雪静: "一种低密度奇偶校验码矩阵的设计方法", 《计算机工程》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2016174521A8 (en) | 2018-01-18 |
EP3289462A1 (en) | 2018-03-07 |
US10387322B2 (en) | 2019-08-20 |
CN107787485B (zh) | 2021-04-09 |
EP3289462B1 (en) | 2019-04-24 |
WO2016174521A1 (en) | 2016-11-03 |
US20160321184A1 (en) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126112B (zh) | 每个周期具有多个读取端口和多个写入端口的多条存储器 | |
CN107209702B (zh) | 用于在存储器中执行同时读取和写入操作的系统和方法 | |
CN107787485A (zh) | 多读取和写入端口存储器 | |
CN103534693B (zh) | 在客户端之间共享对存储器的访问的方法和设备 | |
US10896089B2 (en) | System level data-loss protection using storage device local buffers | |
JP3620473B2 (ja) | 共有キャッシュメモリのリプレイスメント制御方法及びその装置 | |
US11403173B2 (en) | Multiple read and write port memory | |
CN103927270B (zh) | 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法 | |
CN110389851A (zh) | 具有错误校正功能的存储器设备及其操作方法 | |
US8359438B2 (en) | Memory banking system and method to increase memory bandwidth via parallel read and write operations | |
EP3089045A1 (en) | Multi-bank memory with one read port and one or more write ports per cycle | |
CN106471460A (zh) | 用于在存储器系统中分割数据结构的系统及方法 | |
CN105830040A (zh) | 用于访问存储器的存储器装置 | |
CN104052824B (zh) | 分布式缓存方法及系统 | |
CN110018971A (zh) | 缓存替换技术 | |
CN106878370A (zh) | 一种本地缓存的更新方法和设备 | |
CN102640116B (zh) | 对外部dram的错误检测和纠正 | |
US20080209129A1 (en) | Cache with High Access Store Bandwidth | |
CN108139989A (zh) | 配备有存储器中的处理和窄访问端口的计算机设备 | |
JPS63201851A (ja) | バッファ記憶アクセス方法 | |
US9195622B1 (en) | Multi-port memory that supports multiple simultaneous write operations | |
US9496009B2 (en) | Memory with bank-conflict-resolution (BCR) module including cache | |
CN108920097B (zh) | 一种基于交织存储的三维数据处理方法 | |
JPS59177782A (ja) | バツフアメモリ制御方式 | |
JPS60251435A (ja) | 並列ソ−ティング機構を備えた記憶装置 |
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 |