由单端口存储器块实现的两端口存储器的制造方法
【专利摘要】一种两端口存储器,具有一个读端口、一个写端口以及多个相同的单端口RAM组。单端口RAM组中的一个的容量被用来解决同时对同一个单端口RAM组的读和写访问之间的冲突。一个读映射存储器存储为了读访问将多个逻辑组和一个空闲组映射到单端口RAM组的实例信息。类似地,一个写映射存储器存储为了写访问将多个逻辑组和一个空闲组映射到单端口RAM组的写实例信息。如果同时的读和写访问没有被映射到同一个单端口RAM组,则同时执行读和写。然而,如果存在冲突,该写访问被重映射到由该写实例信息指定的空闲组,来允许同时的读和写。读和写映射存储器两者被更新来反映任何的重映射。
【专利说明】由单端口存储器块实现的两端口存储器
相关申请
[0001]本申请要求2010年12月6日申请的,标题为“两端口 eDRAM”的美国临时专利申请号61/420,176的优先权。上述申请通过引用结合于此。
发明领域
[0002]本发明涉及利用多个单端口存储器组(memory bank)实现的两端口随机存取请储器(RAM)。
相关技术
[0003]在网络交换ASIC中,要求高的存储器吞吐量来保持一个可接受的包处理速率。此夕卜,要求大的存储器空间保持大量的包来提供高质量的服务。
[0004]为了获得高的存储器吞吐量,典型地使用两端口静态随机存取存储器(SRAM)。如此处定义的,两端口存储器(2-port memory)包括一个读端口和一个写端口,其中从读端口执行读操作,而同时从写端口执行写操作。注意的是,在两端口存储器的读端口只有读操作是被允许的,并且在两端口存储器的写端口只有写操作是被允许的。两端口存储器与双端口存储器(dual-port memory)是不同的,在双端口存储器的两个端口上读和写操作都是被允许的。
[0005]两端口 SRAM的设计区(layout area)与相同容量的一端口 SRAM设计区相比相对较大。更具体的,两端口 SRAM的设计区典型的是相同容量的一端口 SRAM设计区的两倍。此夕卜,两端口 SRAM的设计区可能是相同容量的增强的动态随机存取存储器(DRAM)的设计区的3到4倍。两端口 SRAM具有如网络交换ASIC更求的存储大量包的能力,因此将不受欢迎地在这个ASIC上消耗大的设计区。作为结果,ASIC管芯可能需要被制造的更大来容纳两端口 SRAM。可选的,不太可能将所需容量的两端口 SRAM安装到特定尺寸的ASIC管芯上。
[0006]因此,想要有一种改进的两端口存储器,其不表现出两端口 SRAM的相对大的设计区需求。
【发明内容】
[0007]因此,本发明使用多个相同的单端口随机存取存储器(RAM)组实现了两端口存储器,其中,这些单端口 RAM组中的一个初始化指定为一个空闲存储器组。该两端口存储器包括一个读端口和一个写端口。当写访问(在写端口上)指定多个单端口 RAM组中的第一个而同时读访问(在读端口上)指定多个单端口 RAM组中的第二个(不同的)时,在写访问和读访问之间不存在冲突。在这种情况下,写访问和读访问同时被执行,其中该写访问对单端口 RAM组中的第一个执行,该读访问对单端口 RAM组中的第二个执行。
[0008]当写访问和同时的读访问指定了相同的单端口 RAM组(例如,“第一”单端口 RAM组),对指定的“第一”单端口 RAM组执行读访问(即,读访问比写访问有更高的优先级),在由写访问的写地址确定的条目处对指定的空闲存储器组执行写访问。此外,为了随后的对相同条目的写访问,该“第一”单端口 RAM组被重指定(映射)为空闲存储器组。此外,为了随后的对相同条目的读访问,最初被指定的空闲存储器组被重指定(映射)为“第一”单端口 RAM组。单端口 RAM组的映射通过两个相对小的两端口存储器实现,该两个相对小的两端口存储器与读端口和写端口相联系。
[0009]通过这种方式控制读访问和写访问,同时的读访问和写访问无限定地在读和写端口执行。通过本发明的两端口存储器实现充分的区域节约,因为区域优化的单端口 RAM存储器被用作主存储器。在特定实施例中,单端口 RAM组是DRAM组。
[0010]本发明将基于下面的说明和附图被更充分的理解。
【专利附图】
【附图说明】
[0011]图1是根据本发明的一个实施例的使用多个单端口 RAM组实现的两端口存储器的框图。
[0012]图2是根据本发明的一个实施例,描述图1中的两端口存储器中使用的逻辑到物理(L2P)存储器映射SRAM的条目的框图。
[0013]图3是根据本发明的一个实施例,描述图1中的两端口存储器的L2P存储器映射SRAM和单端口 RAM组紧接着在初始化之后的内容的框图。
[0014]图4是描述了图1中的两端口存储器的L2P存储器映射SRAM和单端口 RAM组在一时数据值DATAl和DATA2被写入到单端口 RAM组后的内容的框图。
[0015]图5是描述了图1中的两端口存储器的L2P存储器映射SRAM和单端口 RAM组在非冲突读写访问被执行后的内容的框图。
[0016]图6A,6B和6C是描述了图1中的两端口存储器的L2P存储器映射SRAM和单端口RAM组在对第一读写访问冲突对进行处理期间的内容的框图。
[0017]图7A,7B和7C是描述了图1中的两端口存储器的L2P存储器映射SRAM和单端口RAM组在对第二读写访问冲突对进行处理期间的内容的框图。
[0018]图8A,8B和8C是描述了图1中的两端口存储器的L2P存储器映射SRAM和单端口RAM组在对第三读写访问冲突对进行处理期间的内容的框图。
[0019]图9A,9B和9C是描述了图1中的两端口存储器的L2P存储器映射SRAM和单端口RAM组在对第四读写访问冲突对进行处理期间的内容的框图。
【具体实施方式】
[0020]图1是根据本发明的一个实施例的两端口存储器系统100的框图。存储器系统100包括读端口 101,写端口 102,读访问逻辑111,写访问逻辑112,两端口逻辑到物理(L2P)存储器映射SRAM121-122,比较逻辑130以及主存储器140。主存储器140包括单端口 RAM组P0-P4。在一个实施例中,单端口 RAM组P0-P4是实现DRAM存储单元的DRAM组。在一个可选实施例中,单端口 RAM组P0-P4由高密度SRAM存储单元实现。注意使用DRAM单元实现单端口 RAM组P0-P4有利地提供高密度给主存储器140。对主存储器140的读访问在读端口 101开始,对主存储器140的写访问在写端口 102开始。根据一个实施例,两端口存储器系统100响应于时钟信号(CLK)工作,其中同时的读和写访问在相同的时钟周期期间在端口 101和102上开始。每个读访问通过激活读使能信号RD而开始,并在读端口 101提供逻辑读地址RA[15:0]。相似的,每个写访问通过激活写使能信号WR而开始,并在写端口 102提供逻辑写地址WA [15:0]以及相应的写数据值W_DATA。
[0021]主存储器140包括M个相同的单端口 RAM组,其中在图示的例子中,M等于5。在这个例子中,为了对五个单端口 RAM组P0-P4寻址,需要三个地址比特。在其他实施例中M可以具有其他值,其中M大于或等于2。在另一个实施例中,M大于或等于3。在另一个实施例中,单端口 RAM组的数量M等于2P+1,其中P是正整数。单端口 RAM组P0-P4的每一个包括N个条目,其中在图示的例子中N等于16K。在这个例子中,在单端口 RAM组P0-P4的任一个中的一个条目可通过14比特的条目地址值(例如,RA[13:0]或WA[13:0])来访问。注意的是,在其他实施例中,为了给主存储器140提供要求的存储容量,N可以具有其他值。单端口 RAM组P0-P4中的每一个的N个条目中的每一个存储相应的数据值。在图示的例子中,每个条目能够存储256比特的数据值(尽管在其他实施例中其他的数据宽度是可能的)。基于下面的描述将会很显然的是,主存储器140的实际存储容量(按照条目数量)等于N * (M-1),因为在主存储器140中的多个单端口 RAM组之一的容量使得冲突的读访问和写访问被同时在主存储器140中处理。主存储器140的总深度因此是16K乘以4,或者64K。因此,在图示的例子中,存储器系统100模拟一个64KX256的两端口存储器。
[0022]逻辑到物理(L2P)存储器映射SRAM121-122是两端口存储器,每一个两端口存储器包括N个条目(在图示的例子中N等于16K)。如下文详细描述的,写访问逻辑112在L2P存储器映射SRAM121和122中维持相同的条目。L2P存储器映射SRAM121和122的每一个条目标识逻辑组地址和物理组地址之间的对应关系。在图示的例子中,有四个逻辑组地址,其通过两个读地址比特RA[15:14]或两个写地址比特WA[15:14]指定。与四个逻辑组地址相关联的四个逻辑存储器组在此后被称为逻辑存储器组L0-L3。在此处描述的例子中,逻辑存储器组LO,LI,L2和L3分别被分配了逻辑组地址“ 00 ”,“ OI ”,“ 10 ”和“ 11 ”。
[0023]五个单端口 RAM组P0-P4中的每一个被分配了物理组地址。如上文描述的,每个物理组地址由一个三比特值表示。在比处描述的例子中,单个端口 RAM组P0,P1,P2,P3和P4 分别被分配了 物理组地址 “ 000 ”,“ 001 ”,“ 010,,,“ 011,,和 “ 100 ”。
[0024]图2是描述了根据本发明的一个实施例的L2P存储器映射SRAM121-122的16K个条目Etl到E16ih的框图。每个条目包括5个字节Btl, B1, B2, B3和B4,其中第一字节Btl存储映射到第一逻辑存储器组LO的单端口 RAM组的物理组地址;第二字节B1存储映射到第二逻辑存储器组LI的单端口 RAM组的物理组地址;第三字节B2存储映射到第三逻辑存储器组L2的单端口 RAM组的物理组地址;第四字节B3存储映射到第四逻辑存储器组L3的单端口RAM组的物理组地址;第五字节B4存储指定为特定条目的空闲存储器组(SP)的单端口 RAM组的物理组地址。
[0025]如图2所示,L2P存储器映射SRAM121-122被初始化编程使得对于N个条目的每一个,逻辑存储器组L0,LI,L2和L3被初始化为分别映射到单端口 RAM组PO,Pl,P2和P3。此外,对于N个条目的每一个,单端口 RAM组P4被初始指定为空闲存储器组。L2P存储器映射SRAM121-122的每个条目的内容在下文被称为“实例信息”,由于每个条目指出单端口RAM组P0-P4的哪个实例映射到逻辑存储器组L0-L3。
[0026]根据本发明的一个实施例,存储器系统100如下操作。响应于在读端口 101接收到一个读访问请求,读访问逻辑111从L2P存储器映射SRAM121取回实例信息(R_INST)。更具体地,读访问逻辑111激活读使能信号REl (响应于已激活的RD信号)并传输逻辑读地址(S卩,RA [13:0])的条目地址部分到L2P存储器映射SRAM121的读端口(R_PORT)。作为响应,L2P存储器映射SRAM121提供由读条目地址RA[13:0]指定的条目作为读实例信息(R_INST)。
[0027]读访问逻辑111解码取回的读实例信息(R_INST)来识别单端口 RAM组P0-P4中的哪一个映射到由逻辑读地址RA[15:14]指定的逻辑存储器组。例如,如果逻辑读地址比特RA[15:14]指定逻辑存储器组LO (即,RA[15:14] = “00”),然后读访问逻辑111将从取回的实例信息的第一字节Btl取回物理组地址。因此,在初始化(图2)之后,读访问逻辑111立即将取回分配给单端口 RAM组PO的物理组地址(例如,“000”)。
[0028]读访问逻辑111使用从读实例信息R_INST取回的物理组地址来将逻辑读地址RA[15:0]翻译为物理读地址PRA[16:0]。该物理读地址PRA[16:0]包括从读实例信息R_INST取回的物理细地址作为比特PRA[16:14],以及读地址比特RA[13:0]作为比特PRA[13:0]。
[0029]读访问逻辑111提供物理读组地址比特PRA[16:14]给比较逻辑130。如下文详细描述的,比较逻辑130比较物理读组地址PRA[16:14]和物理写组地址(下文描述)来确定读访问和同时的写访问之间是否存在冲突。
[0030]读访问逻辑111同样提供物理读地址PRA[16:0]给主存储器140,并激活读使能信号RE3。在这种情况下,在由物理读组地址PRA[16:14]指定的单端口 RAM组中,从由读条目地址PRA[13:0]指定的条目执行读访问。相应的读数据值R_DATA从访问的单端口 RAM组路由到读访问逻辑111。读访问逻辑111发送读数据值R_DATA到读端口 101,由此完成读访问。
[0031]在描述的例子中,读访问具有比写访问更高的优先级,使得读访问总是对由物理读组地址PRA[16:14]指定的单端口 RAM组执行,没有延迟或重映射。如下文中详细描述的,指定相同的单端口 RAM组的同时的读和写访问之间的冲突通过对写访问的重映射来解决。
[0032]对存储器系统100的写访问如下执行。响应于在写端口 102接收到一个写访问请求,写访问逻辑112从L2P存储器映射SRAM122取回实例信息(W_INST)。更具体地,写访问逻辑112激活读使能信号RE2(响应于已激活的WR信号)并传输逻辑写地址(即,WA[13:0])的条目地址部分到L2P存储器映射SRAM122的读端口(R_P0RT)。作为响应,L2P存储器映射SRAM122提供由写地址WA[13:0]指定的条目作为写实例信息(W_INST)。
[0033]写访问逻辑112解码取回的写实例信息(W_INST)来识别单端口 RAM组P0-P4中的哪一个映射到由逻辑写地址WA[15:14]指定的逻辑存储器组。例如,如果逻辑写地址比特WA[15:14]指定逻辑存储器组L2(即,WA[15:14] = “ 10”),然后写访问逻辑112将从取回的写实例信息的第三字节B2取回物理组地址。因此,在初始化(图2)之后,写访问逻辑112将立即取回分配给单端口 RAM组P2的物理组地址(例如,“010”)。这一取回的物理写组地址,在图1中标识为PWA[16:14],被提供给比较逻辑130。
[0034]在每个访问周期期间,比较逻辑130比较从写访问逻辑112接收的物理写组地址PWA[16:14]和从读访问逻辑接收的物理读组地址PRA[16:14]。如果检测到匹配,表明读访问和写访问试图访问主存储器140中相同的物理存储器组,然后比较逻辑130激活一个匹配(MATCH)控制信号。如果没有检测到匹配,比较逻辑130使该匹配控制信号无效。
[0035]该匹配控制信号被提供给写访问逻辑112。如果该匹配控制信号具有无效状态(表明没有冲突),则写访问逻辑112使用之前从写实例信息W_INST取回的物理组地址PWA[16:14]来执行对主存储器140的写访问。更具体地,写访问逻辑112提供翻译后的物理写地址TWA[16:0]给主存储器140,其中TWA[16:14]等于之前取回的物理组地址PWA[16:14], TWA[13:0]等于写条目地址比特WA[13:0]。写访问逻辑112同样激活一个写使能信号WE1,其被提供给主存储器140,同样提供写数据值W_DATA给主存储器140。在这种情况下,主存储器140将写数据值W_DATA写入到由物理写地址PWA[16:14]指定的单端口 RAM组中(例如,组P2),写在由写条目地址WA[13:0]指定的条目处。注意这一写访问可与相关联的读访问并行执行,因为这些访问发生在单端口 RAM组P0-P4的不同组中。
[0036]如果该匹配控制信号被冲突逻辑130激活(表明在写访问和同时的读访问之间的冲突),则写访问逻辑112使用之前取回的写实例信息W_INST来为写访问产生一个翻译后的物理写地址TWA[16:0],从而消除冲突。更具体地,写访问逻辑访问取回的写实例信息W_INST的第五字节B4,来确定单端口 RAM组P0-P4中的哪一个目前被指定为用于要被写入的条目的空闲存储器组。例如,紧接在初始化(图2)之后,每个条目的写实例信息W_INST表明单端口 RAM组P4被指定为空闲存储器组(S卩,字节B4 =“100”)。写访问逻辑112生成翻译后的物理写地址TWA[16:0],使得TWA[16:14]等于空闲存储器组的地址,TWA[13:0]等于写条目地址WA[13:0]。写访问逻辑112提供翻译后的物理写地址TWA[16:0],以及写数据值W_DATA和被激活的写使能信号WEl给主存储器140。作为响应,主存储器140将写数据值W_DATA写入到由翻译后的物理写地址比特TWA[16:14]指定的空闲存储器组中(例如,组P4),写在由翻译后的物理写地址比特TWA[13:0]指定的条目中。该写访问可与相关联的读访问并行执行,因为在单端口 RAM组P0-P4的不同组中执行这些访问。
[0037]如果该匹配控制信号被冲突逻辑130激活(表明冲突),则写访问逻辑112同样更新由写访问指定的条目(即,由写地址比特WA[13:0]指定的条目)的读和写实例信息。也就是,读和写实例信息被更新以反映由写访问指定的条目的新的空闲组。更具体地,写访问逻辑112如下修改写实例信息W_INST。写实例信息W_INST的与逻辑写组地址WA[15:14]相关联的字节和写实例信息W_INST的与空闲存储器组相关联的字节B4交换,由此创建修改后的实例信息M0D_INST。例如,假定读访问和同时的写访问冲突,写访问指定逻辑组地址LO (即,写实例信息的字节Btl)。进一步假定字节Btl识别单端口存储器组PO ( S卩,Btl =“000”)。如上描述的,写实例信息W_INST的字节B4指定空闲存储器组。假定字节B4识别单端口存储器组P4(即,B4 =“100”)。在这种情况下,写访问逻辑112交换写实例信息W_INST的字节Btl和B4来创建修改后的实例信息M0D_INST。结果是,修改后的实例信息M0D_INST的字节B4等于“000”,由此表明单端口 RAM组PO已变成相关联的条目的空闲存储器组。类似的,修改后的实例信息M0D_INST的字节B。等于“ 100”,由此表明单端口 RAM组P4已变成这一条目的逻辑存储器组LO。
[0038]写访问逻辑112将修改后的实例信息M0D_INST写入到L2P存储器映射SRAM121和122,写在由写条目地址WA[13:0]指定的条目中。更具体地,写访问逻辑112提供修改后的实例信息M0D_INST和写条目地址WA [13:0]给L2P存储器映射SRAM121-122的写端口(W.PORT),并激活对应的写使能信号WE2来开始这些写操作。在描述的例子中,写访问逻辑112将修改后的实例信息M0D_INST写入到L2P存储器映射SRAM121_122,同时写数据值W_DATA被写入到主存储器140,读数据值R_DATA从主存储器140中读出。由于L2P存储器映射SRAM121和122的相同条目使用相同的修改后的实例信息MOD_INST更新,这些SRAM121和122的内容在存储器系统100正常工作期间是相目同的。
[0039]现在要详细描述一个示例性的读和写访问序列,由此来进一步阐明存储器系统100的操作。图3,4,5,6八-6(:,74-7(:,84-8(:和94-9(:例示了具体的写和读操作序列,其根据本发明的一个实施例执行。
[0040]图3是例示了根据本发明的一个实施例的紧接在初始化之后的L2P存储器映射SRAM121-122的内容和主存储器140的单端口 RAM组P0-P4的内容的框图。如图3所示,L2P存储器映射SRAM121-122存储与图2相联系的如上描述的相同的值。注意的是,图2的3比特二进制物理组地址值在图3中由对应的整数替代(为了清楚)。因此,逻辑存储器组L0-L3被分别映射到单端口 RAM组P0-P3,空闲存储器组被映射到单端口 RAM组P4。单端口RAM组P0-P4的所有条目初始为空(或无效的)。
[0041 ] 图4是描述了在数据值DATAl被写入到单端口 RAM组PO中的条目E。,数据值DATA2被写入到单端口 RAM组P2中的条目Etl之后,L2P存储器映射SRAM121-122和单端口 RAM组P0-P4的内容的框图。这些写访问在与读访问没有任何冲突的情况下被执行,使得L2P存储器映射SRAM121-122的内容与图3保持不变。注意的是,如果在读访问和对应的写访问之间不存在冲突,由L2P存储器映射SRAM121-122保存的实例信息不会被修改。
[0042]图5是描述了在对逻辑读地址0x0000的读访问和同时的对逻辑写地址0x4000的写访问之后,L2P存储器映射SRAM121-122和单端口 RAM组P0-P4的内容的框图。读访问逻辑111按照上面描述的方式,响应于逻辑读条目地址RA[13:0],从L2P存储器映射SRAM121的条目Etl取回读实例信息。读访问逻辑111解码这个取回的条目Etl来确定读访问指定单端口 RAM组PO ( S卩,逻辑读地址RA[15:14] = “00” =逻辑存储器组LO =字节Btl =物理组PO)。
[0043]类似的,写访问逻辑112按照上面描述的方式,响应于逻辑写条目地址WA[13:0],从L2P存储器映射SRAM122的条目Etl取回写实例信息。写访问逻辑112解码这个取回的条目Etl来确定写访问指定单端口 RAM组Pl (B卩,逻辑写地址WA [15:14] =“01”=逻辑存储器组L2 =字节B1 =物理组Pl)。冲突逻辑130确定在读访问和写访问之间不存在冲突。结果是,对单端口 RAM组PO执行读访问,同时对单端口 RAM组Pl执行写访问。更具体地,读访问逻辑111从单端口 RAM组PO的条目Etl读取数据值DATAl,同时写访问逻辑112向单端口RAM组Pl的条目Etl写入数据值DATA3。由于没有冲突被测到,L2P存储器映射SRAM121-122的内容没有被修改。
[0044]图6A-6C是例示了对逻辑读地址0x0000的读访问和同时的对逻辑写地址0x0001的写访问时,L2P存储器映射SRAM121-122和单端口 RAM组P0-P4的框图。如图6A所示,读访问逻辑111按照上面描述的方式,响应于逻辑读条目地址RA[13:0],从L2P存储器映射SRAM121的条目Etl取回读实例信息。读访问逻辑111解码这个取回的条目Etl来确定该读访问指定单端口 RAM组PO (即,逻辑读地址RA[15:14] = “00” =逻辑存储器组LO =字节B。=物理组PO)。
[0045]类似的,写访问逻辑112按照上面描述的方式,响应于逻辑写条目地址WA[13:0],从L2P存储器映射SRAM122的条目E1取回写实例信息。写访问逻辑112解码这个取回的条目E1来确定写访问指定单端口 RAM组PO ( S卩,逻辑写地址WA[15:14] = “00” =逻辑存储器组LO =字节Btl =物理组PO)。冲突逻辑130确定在读访问和写访问之间存在冲突。
[0046]如图6B所示,当存在冲突时读访问具有更高的优先级,所以读访问逻辑111被允许从单端口 RAM组PO的条目Etl读取数据值DATAl。写访问逻辑112从取回的写实例信息中确定单端口 RAM组P4作为空闲存储器组(即,字节B4 =物理组P4)。然后写访问逻辑112将写访问的数据值DATA4写入到这一“空闲”单端口 RAM组P4的条目E1中。从单端口 RAM组PO的读访问可与对单端口 RAM组P4的写访问并行执行,因为这些访问之间不存在冲突。
[0047]如图6C所示,L2P存储器映射SRAM121-122的内容被更新来正确地反映冲突的解决方案。更具体地,L2P存储器映射SRAM121和122的条目E1被更新使得这些条目中的字节Btl存储值“4”,这些条目中的字节B4存储值“O”。这一更新正确地反映了如下的事实:后续的对逻辑存储器组LO的条目E1的读访问应当被映射到单端口 RAM组P4(注意数据值DATA4被存储在组P4的条目E1中)。这一更新同样正确地反映了如下的事实:单端口 RAM组PO现在已经变成了条目E1的空闲存储器组。注意的是,尽管单端口 SRAM组P4开始作为条目E1的空闲存储器组,可以理解的是RAM组P0-P4中的任意一个都可以在任何时候变成条目E1 (或任意条目)的空闲存储器组。
[0048]图7A-7C是例示了对逻辑读地址0x4000的读访问和同时的对逻辑写地址0x4000的写访问时,L2P存储器映射SRAM121-122和单端口 RAM组P0-P4的框图。如图7A所示,读访问逻辑111响应于逻辑读条目地址RA [13:0],从L2P存储器映射SRAM121的条目Etl取回读实例信息。读访问逻辑111解码这个取回的条目Etl来确定该读访问指定单端口 RAM组Pl (即,逻辑读地址RA[15:14] =“01”与逻辑存储器组LI =字节B1 =物理组P1)。
[0049]类似的,写访问逻辑112响应于逻辑写条目地址WA[13:0],从L2P存储器映射SRAM122的条目Etl取回写实例信息。写访问逻辑112解码这个取回的条目Etl来确定写访问指定单端口 RAM组Pl( S卩,逻辑写地址WA[15:14] = “01” =逻辑存储器组LI =字节B1=物理组Pl)。冲突逻辑130确定在读访问和写访问之间存在冲突。
[0050]如图7B所示,当存在冲突时读访问具有更高的优先级,所以读访问逻辑111被允许从单端口 RAM组Pl的条目Etl读取数据值DATA3。写访问逻辑112从取回的写实例信息中识别单端口 RAM组P4作为空闲存储器组(B卩,字节B4标识物理组P4)。然后写访问逻辑112将写访问的数据值DATA5写入到这一“空闲”单端口 RAM组P4的条目Etl中。从单端口RAM组Pl的读访问可与对单端口 RAM组P4的写访问并行执行,因为这些访问之间不存在冲关。
[0051]如图7C所示,L2P存储器映射SRAM121-122的内容被更新来正确地反映冲突的解决方案。更具体地,L2P存储器映射SRAM121和122的条目Etl被更新使得这些条目中的字节B1存储值“4”,这些条目中的字节B4存储值“I”。这一更新正确地反映了如下的事实:后续的对逻辑存储器组LI的条目Etl的读访问应当被映射到单端口 RAM组P4(注意数据值DATA5被存储在组P4的条目Etl中)。这一更新同样正确地反映了如下的事实:单端口 RAM组Pl现在已经变成了条目Etl的空闲存储器组。注意的是,单端口 SRAM组P0-P4中的不同的组可以同时是不同条目的空闲存储器组。在图7C的例子中,单端口 SRAM组Pl是条目Etl的空闲组,同时单端口 SRAM组PO是条目E1的空闲存储器组。
[0052]图8A-8C是例示了对逻辑读地址0x8000的读访问和同时的对逻辑写地址0x8001的写访问时,L2P存储器映射SRAM121-122和单端口 RAM组P0-P4的框图。如图8A所示,读访问逻辑111响应于逻辑读条目地址RA [13:0],从L2P存储器映射SRAM121的条目Etl取回读实例信息。读访问逻辑111解码这个取回的条目Etl来确定该读访问指定单端口 RAM组P2(即,逻辑读地址RA[15:14] = “10” =逻辑存储器组L2 =字节B2 =物理组P2)。
[0053]类似的,写访问逻辑112响应于逻辑写条目地址WA[13:0],从L2P存储器映射SRAM122的条目E1取回写实例信息。写访问逻辑112解码这个取回的条目E1来确定写访问指定单端口 RAM组P2( S卩,逻辑写地址WA[15:14] = “ 10” =逻辑存储器组L2 =字节B2=物理组P2)。冲突逻辑130确定在读访问和写访问之间存在冲突。
[0054]如图8B所示,当存在冲突时读访问具有更高的优先级,所以读访问逻辑111被允许从单端口 RAM组P2的条目Etl读取数据值DATA2。写访问逻辑112从取回的写实例信息中识别单端口 RAM组PO作为空闲存储器组(B卩,字节B4标识物理组PO)。注意的是,由于上面联系图6A-6C描述的冲突,单端口 RAM组P4不再是条目E1的空闲存储器组。写访问逻辑112将写访问的数据值DATA6写入到所识别的空闲单端口 RAM组PO的条目E1中。从单端口 RAM组P2的读访问可与对单端口 RAM组PO的写访问并行执行,因为这些访问之间不存在冲突。
[0055]如图8C所示,L2P存储器映射SRAM121-122的内容被更新来正确地反映冲突的解决方案。更具体地,L2P存储器映射SRAM121和122的条目E1被更新使得这些条目中的字节B2存储值“0”,这些条目中的字节B4存储值“2”。这一更新正确地反映了如下的事实:后续的对逻辑存储器组L2的条目E1的读访问应当被映射到单端口 RAM组PO (注意数据值DATA6被存储在组PO的条目E1中)。这一更新同样正确地反映了如下的事实:单端口 RAM组P2现在已经变成了条目E1的空闲存储器组。
[0056]图9A-9C是例示了对逻辑读地址0x4000的读访问和同时的对逻辑写地址0x0001的写访问时,L2P存储器映射SRAM121-122和单端口 RAM组P0-P4的框图。如图9A所示,读访问逻辑111响应于逻辑读条目地址RA [13:0],从L2P存储器映射SRAM121的条目Etl取回读实例信息。读访问逻辑111解码这个取回的条目Etl来确定该读访问指定单端口 RAM组P4(即,逻辑读地址RA[15:14] = “01” =逻辑存储器组LI =字节B1 =物理组P4)。
[0057]类似的,写访问逻辑112响应于逻辑写条目地址WA[13:0],从L2P存储器映射SRAM122的条目E1取回写实例信息。写访问逻辑112解码这个取回的条目E1来确定写访问指定单端口 RAM组P4( S卩,逻辑写地址WA[15:14] = “00” =逻辑存储器组LO =字节B。=物理组P4)。冲突逻辑130确定在读访问和写访问之间存在冲突。注意的是,这特定的一时读访问和写访问在存储器系统100被初始化之后并不立即导致冲突。然而,空闲存储器组的动态重映射导致了目前的冲突。
[0058]如图9B所示,当存在冲突时读访问具有更高的优先级,所以读访问逻辑111被允许从单端口 RAM组P4的条目Etl读取数据值DATA5。写访问逻辑112从取回的写实例信息中识别单端口 RAM组P2作为空闲存储器组(B卩,字节B4指示物理组P2)。然后写访问逻辑112将写访问的数据值DATA7写入到这一空闲单端口 RAM组P2的条目E1中。从单端口 RAM组P4的读访问可与对单端口 RAM组P2的写访问并行执行,因为这些访问之间不存在冲突。
[0059]如图9C所示,L2P存储器映射SRAM121-122的内容被更新来正确地反映冲突的解决方案。更具体地,L2P存储器映射SRAM121和122的条目E1被更新使得这些条目中的字节Btl存储值“2”,这些条目中的字节B4存储值“4”。这一更新正确地反映了如下的事实:后续的对逻辑存储器组LO的条目E1的读访问应当被映射到单端口 RAM组P2(注意数据值DATA7被存储在组P2的条目E1中)。这一更新同样正确地反映了如下的事实:单端口 RAM组P4现在已经变成了条目E1的空闲存储器组。
[0060]根据上面描述的方法,任何在端口 101和102上指定的同时的读访问和写访问序列可由两端口存储器系统100实现。
[0061]两端口存储器系统100相对于完全由两端口存储器实现的两端口存储器系统的一个优点是减少的设计区。然而,两端口 L2P存储器映射SRAM121-122在存储器系统100中要求显著的设计区。在上面描述的实施例的一个变形中,通过对L2P存储器映射SRAMl21和122中存储的实例信息进行编码来减少该实例信息的宽度。如上描述的,在SRAM121-122中存储的每个条目存储5个物理存储器地址,其范围从“O”到“4”。任一逻辑存储器组L0-L3可被映射到任意的物理存储器 组P0-P4。这一映射通常是唯一的(即,每个逻辑存储器组被映射到唯一的物理存储器组)。因此,五个物理存储器组的组合的总数等于5X4X3X2X1 120。这120种组合可仅仅使用7个比特的实例信息进行表示(即,7个比特可表示高达128种组合)。在一个实施例中,在读访问逻辑111和写访问逻辑112中提供逻辑来解码该7比特实例信息。以这种方式减少两端口 L2P存储器映射SRAM121和122的宽度会有利地进一步减少需要的存储器系统100的设计区。
[0062]根据本发明的另一个变形,L2P存储器映射SRAM121-122的每个条目使用相应的纠错码(ECC)进行保护。例如,ECC方案提供纠正单比特错误和检测双比特错误的能力。在一个实施例中,SRAM121-122的多个条目被组合,为组合的条目生成ECC比特,由此来减少需要被SRAM121-122存储的ECC比特的数量。例如,四个条目(4个条目X7比特/条目=28比特)被组合,这四个条目由7比特的ECC保护。多个条目共享的ECC比特进一步减少了所需要的两端口 L2P存储器映射SRAM121和122的容量,由此有利地进一步减少需要的存储器系统100的设计区。
[0063]与相同容量的两端口 SRAM存储器系统相比,由存储器系统100实现的面积节约可被概括如口下。假设每个一端口 RAM组P0-P4(各自具有容量16KX256)的面积等于Y,两个两端口 L2P存储器映射SRAM121和122 (其各自实现如上描述的实例信息编码和ECC共享)的面积为Y。在这一情况下,存储器系统100的面积大约为6Y( 即,5Y+Y)。进一步假设具有容量16ΚΧ 256的两端口 SRAM的面积是4Υ。在这一情况下,仅仅使用两端口 SRAM实现的两端口 64ΚX256存储器系统的面积大约为16Υ(即,4Χ4Υ)。因此,通过存储器系统100实现的面积节约大约是IOY ( 即,16Υ-6Υ),或大约62.5% (即,10Υ/16Υ = 62.5 % )。因此与传统的两端口存储器系统相比,存储器系统100实现了显著的面积节约。
尽管已经联系多个实施例描述了本发明,可以理解的是对这些实施例的变形对本领域技术人员来说是显而易见的。因此,本发明仅通过以下的权利要求所限定。
【权利要求】
1.一种两端口存储器,包括: N个单端口存储器组,每个单端口存储器组具有M个条目,其中N是大于或等于2的整数; 与该两端口存储器的读端口相关联的读映射存储器,其中该读映射存储器包括M个条目,每个条目存储了将N-1个逻辑存储器组和一个空闲存储器组映射到N个单端口存储器组的读实例信息;以及 与该两端口存储器的写端口相关联的写映射存储器,其中该写映射存储器包括M个条目,每个条目存储了将N-1个逻辑存储器组和所述空闲存储器组映射到N个单端口存储器组的写实例信息。
2.如权利要求1所述的两端口存储器,其中读映射存储器的M个条目中的每一个与N个单端口存储器组中的每一个的M个条目中的相应的一个条目相关联。
3.如权利要求2所述的两端口存储器,其中写映射存储器的M个条目的每一个与N个单端口存储器组中的每一个中的M个条目中的相应的一个条目相关联。
4.如权利要求1所述的两端口存储器,其中存储在读映射存储器中的读实例信息与存储在写映射存储器中的写实例信息相同。
5.如权利要求1所述的两端口存储器,其中读映射存储器是具有读端口和写端口的两端口存储器,以及其中写映射存储器是具省读端口和写端口的两端口存储器。
6.如权利要求5所述的两端口存储器,进一步包括写访问逻辑,所述写访问逻辑耦合到两端口存储器的写端口、写映射存储器的读端口、写映射存储器的写端口以及写映射存储器的读端口。
7.如权利要求6所述的两端口存储器,进一步包括读访问逻辑,所述读访问逻辑耦合到两端口存储器的读端口以及读映射存储器的读端口。
8.如权利要求1所述的两端口存储器,其中所述N个单端口存储器组是相同的。
9.如权利要求1所述的两端口存储器,其中所述N个单端口存储器组是动态随机存取存储器(DRAM)组。
10.如权利要求1所述的两端口存储器,进一步包括: 读访问逻辑,所述读访问逻辑接收读访问请求,所述读访问请求包括标识N-1个逻辑组之一的逻辑读组地址以及标识读映射存储器的多个条目之一的读条目地址,其中所述读访问逻辑从读映射存储器的由读条目地址标识的条目取回读实例信息,并且作为响应,将逻辑读组地址映射到指定N个单端口存储器组之一的物理读组地址;以及 写访问逻辑,所述写访问逻辑接收写访问请求,该写访问请求包括标识N-1个逻辑组之一的逻辑写组地址以及标识写映射存储器的多个条目之一的写条目地址,其中该写访问逻辑从写映射存储器的由写条目地址标识的条目取回写实例信息,并且作为响应,将逻辑写组地址映射到指定N个单端口存储器组之一的物理写组地址。
11.如权利要求10所述的两端口存储器,进一步包括比较逻辑,所述比较逻辑比较物理读组地址和物理写组地址以确定是否存在匹配。
12.如权利要求11所述的两端口存储器,其中所述写访问逻辑耦合到所述比较逻辑,其中如果所述比较逻辑确定存在匹配,则所述写访问逻辑使用所取回的写实例信息来将物理写组地址翻译为空闲组地址。
13.如权利要求12所述的两端口存储器,其中所述写访问逻辑耦合到所述读映射存储器和所述写映射存储器,其中如果所述比较逻辑确定存在匹配,则所述写访问逻辑更新在所述写映射存储器中的写实例信息以及在所述读映射存储器中的读实例信息。
14.一种两端口存储器,包括: N个单端口存储器组,每个单端口存储器组具有多个条目,其中N是大于或等于2的整数,其中所述N个单端口存储器组实现N-1个逻辑存储器组和一个空闲存储器组; 读映射存储器,所述读映射存储器具有多个条目,每个条目存储了读实例信息,所述读实例信息针对所述N个单端口存储器组中的N个相应条目将所述N-1个逻辑存储器组和所述空闲存储器组映射到所述N个单端口存储器组;以及 写映射存储器,所述写映射存储器具有多个条目,每个条目存储了写实例信息,所述写实例信息针对所述N个单端口存储器组中的N个相应条目将所述N-1个逻辑存储器组和所述空闲存储器组映射到 所述N个单端口存储器组。
15.如权利要求14所述的两端口存储器,其中存储在所述读映射存储器中的读实例信息与存储在所述写映射存储器中的写实例信息相同。
16.如权利要求14所述的两端口存储器,进一步包括: 读访问逻辑,所述读访问逻辑接收读访问请求,所述读访问请求包括标识N-1个逻辑组之一的逻辑读组地址以及标识读映射存储器的多个条目之一的读条目地址,其中所述读访问逻辑从读映射存储器的由读条目地址标识的条目取回读实例信息,并且作为响应,将逻辑读组地址映射到指定N个单端口存储器组之一的物理读组地址;以及 写访问逻辑,所述写访问逻辑接收写访问请求,所述写访问请求包括标识N-1个逻辑组之一的逻辑写组地址以及标识写映射存储器的多个条目之一的写条目地址,其中所述写访问逻辑从写映射存储器的由写条目地址标识的条目取回写实例信息,并且作为响应,将逻辑写组地址映射到指定N个单端口存储器组之一的物理写组地址。
17.如权利要求16所述的两端口存储器,进一步包括比较逻辑,所述比较逻辑把物理读组地址和物理写组地址进行比较来确定是否存在匹配。
18.如权利要求17所述的两端口存储器,其中所述写访问逻辑耦合到所述比较逻辑,其中如果所述比较逻辑确定存在匹配,则所述写访问逻辑使用所取回的写实例信息来将物理写组地址翻译为空闲组地址。
19.如权利要求18所述的两端口存储器,其中所述写访问逻辑耦合到所述读映射存储器和所述写映射存储器,其中如果所述比较逻辑确定存在匹配,则所述写访问逻辑更新所述写映射存储器中的写实例信息和所述读映射存储器中的读实例信息。
20.一种实现两端口存储器的方法,包括: 使用N个单端口存储器组实现两端口存储器的物理存储器,每个单端口存储器组具有M个条目,其中N是大于或等于2的整数; 维持与所述两端口存储器的读端口相关联的读映射存储器,其中所述读映射存储器包括M个条目,每个条目存储了将N-1个逻辑存储器组和一个空闲存储器组映射到所述N个单端口存储器组的读实例信息;以及 维持与所述两端口存储器的写端口相关联的写映射存储器,其中所述写映射存储器包括M个条目,每个条目存储了将N-1个逻辑存储器组和一个空闲存储器组映射到N个单端口存储器组的写实例信息。
21.如权利要求20所述的方法,进一步包括: 在读端口接收读访问请求,所述读访问请求包括逻辑读组地址以及读条目地址; 使用所述读条目地址寻址所述读映射存储器,从读映射存储器取回读实例信息;以及使用取回的读实例信息来将逻辑读组地址映射为指定N个单端口存储器组之一的物理读组地址。
22.如权利要求21所述的方法,进一步包括: 在写端口接收写访问请求,所述写访问请求包括逻辑写组地址以及写条目地址; 使用所述写条目地址寻址所述写映射存储器,从写映射存储器取回写实例信息;以及使用取回的写实例信息来将逻辑写组地址映射为指定N个单端口存储器组之一的物理写组地址。
23.如权利要求22所述的方法,进一步包括确定所述物理读组地址是否与所述物理写组地址相匹配。
24.如权利要求23所述的方法,进一步包括如果所述物理读组地址与所述物理写组地址相匹配则执行下面的步 骤: 使用所取回的写实例信息来把所述物理写组地址重映射到指定所述N个单端口存储器组之一的空闲组地址;以及 对由所述空闲组地址指定的所述N个单端口存储器组之一,在由写条目地址指定的条目处执行写访问,以及并行地,对由所述物理读组地址指定的所述N个单端口存储器组之一,在由读条目地址指定的条目处执行读访问。
25.如权利要求23所述的方法,进一步包括如果所述物理读组地址与所述物理写组地址相匹配则执行下面的步骤: 修改所取回的写实例信息,由此创建修改后的实例信息; 将修改后的实例信息写入到所述写映射存储器中由写条目地址指定的地址处;以及 将该修改后的实例信息写入到所述读映射存储器中由写条目地址指定的地址处。
26.如权利要求23所述的方法,进一步包括如果所述物理读组地址与所述物理写组地址不相匹配则执行下面的步骤: 对由所述物理写组地址指定的所述N个单端口存储器组之一,在由写条目地址指定的条目处执行写访问;以及并行地, 对由所述物理读组地址指定的所述N个单端口存储器组之一,在由读条目地址指定的条目处执行读访问。
27.一种实现两端口存储器的方法,包括: 在读端口接收读访问请求,该读访问请求包括逻辑读组地址以及读条目地址; 响应于所述读条目地址,将所述逻辑读组地址映射到物理读组地址; 在写端口接收写访问请求,所述写访问请求包括逻辑写组地址以及写条目地址; 响应于所述写条目地址,将所述逻辑写组地址映射到物理写组地址; 比较所述物理读组地址与所述物理写细地址来确定是否存在匹配;以及 如果存在匹配,则 响应于所述写条目地址,将所述物理写组地址翻译为空闲组地址;以及对由所述读条目地址和所述物理读组地址指定的第一单端口存储器组的条目执行读访问,并且并行地,对由所述写条目地址和所述空闲组地址指定的第二单端口存储器组的条目执行写访问。
28.如权利要求27所述的方法,其中如果不存在匹配,则对由所述读条目地址和所述物理读组地址指定的第一单端口存储器组的条目执行读访问,并且并行地,对由所述写条目地址和所述物理写组地址指定的第三单端口存储器组的条目执行写访问。
29.如权利要求27所述的方法,其中如果存在匹配,则更新与所述写条目地址相关联的映射信息。
30.如权利要求27所述的方法,其中所述将所述逻辑读组地址映射到物理读组地址的步骤包括从读映射存储器取回读实例信息,其中所述读映射存储器的条目由所述读条目地址指定,以及其中所述读实例信息将所述逻辑读组地址映射到所述物理读组地址。
31.如权利要求30所述的方法,其中所述将所述逻辑写组地址映射到物理写组地址的步骤包括从写映射存储器取回写实例信息,其中所述写映射存储器的条目由所述写条目地址指定,以及其中所述写实例信息将所述逻辑写组地址映射到所述物理写组地址。
32.如权利要求31所述的方法,进一步包括在所述读映射存储器和写映射存储器中维持相同的实例信息。
33.如权利要求31所述的方法,其中所述读实例信息定义了从多个逻辑读组地址和空闲组地址到多个物理读组地址的映射。
34.如权利要求33所述的方法,其中所述写实例信息定义了从多个逻辑写组地址和空闲组地址到多个物理写组地址的映射。
35.如权利要求34所述的方法,进一步包括使用所述写实例信息来将所述物理写组地址翻译为空闲组地址。
【文档编号】G06F12/02GK103455281SQ201210278830
【公开日】2013年12月18日 申请日期:2012年5月30日 优先权日:2012年5月30日
【发明者】孔昆玲, T·S·恩古延, J·J-E·程, T·V·夸奇 申请人:博科通讯系统有限公司