2R1W存储器的数据处理方法及数据处理系统转让专利

申请号 : CN201610606967.3

文献号 : CN106250321B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许俊

申请人 : 盛科网络(苏州)有限公司

摘要 :

本发明提供的一种2R1W存储器的数据处理方法及处理系统,所述方法包括:根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;当数据写入2R1W存储器和/或从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。本发明只需要额外1/2n的存储器面积就可以基于现有的SRAM单元构建2R1W存储器;同时,不需要复杂的控制逻辑,只需要简单的异或运算就可实现多个端口的操作;另外,也不需要额外的存储器块映射表和控制逻辑。

权利要求 :

1.一种2R1W存储器的数据处理方法,其特征在于,

所述方法包括:

根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,n为正整数;

每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;

当数据写入2R1W存储器和/或从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出;

其中,“当数据写入2R1W存储器时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出”具体包括:获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P存储器的排列位置,0≤x<2n,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中;

“当数据从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出”具体包括:若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2n,0≤x2<2n,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出;

若当前两个读出数据的读出地址处于不同的SRAM2P存储器中,则直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。

2.根据权利要求1所述的2R1W存储器的数据处理方法,其特征在于,

每块SRAM2P存储器的深度与宽度的乘积=(2R1W存储器的深度与宽度乘积)/2n。

3.一种2R1W存储器的数据处理系统,其特征在于,

所述系统包括:数据构建模块,数据处理模块;

所述数据构建模块具体用于:根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,n为正整数;

每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;

当数据写入2R1W存储器和/或从所述2R1W存储器读出时,所述数据处理模块用于:根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出;

其中,当数据写入2R1W存储器时,所述数据处理模块具体用于:

获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P存储器的排列位置,0≤x<2n,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中;

当数据从所述2R1W存储器读出时,所述数据处理模块具体用于:

若当前读出数据的两个读出地址处于相同的SRAM2P存储器中,则分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2n,0≤x2<2n,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出;

若当前两个读出数据的读出地址处于不同的SRAM2P存储器中,则直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。

4.根据权利要求3所述的2R1W存储器的数据处理系统,其特征在于,每块SRAM2P存储器的深度与宽度的乘积=(2R1W存储器的深度与宽度乘积)/2n。

说明书 :

2R1W存储器的数据处理方法及数据处理系统

技术领域

[0001] 本发明涉及网络通信技术领域,尤其涉及一种2R1W存储器的数据处理方法及数据处理系统。

背景技术

[0002] 在设计以太网交换芯片时,通常需要使用大容量的多端口存储器,例如2读1写(同时支持2个读端口和1个写端口)存储器、1读2写存储器、2读2写存储器或者更多端口的存储器。
[0003] 通常情况下,供应商一般只提供1个读或者写存储器、1读1写存储器和2个读或者写存储器,如此,设计者仅能基于上述基本存储器单元构建多个端口的存储器。
[0004] 如图1所示,为典型的6T SRAM的数字电路结构示意图;通过图示可知:6T SRAM由6个MOS管组成。
[0005] 结合图2所示,为了描述方便,将图1进行简化,其中间的4个MOS管简化成2个反相器首尾相连,其左边存放的这个存储单元的真值,而右边存放的是这个存储单元的反值;左边的MOS管连接位线X,右边的MOS管连接位线Y。
[0006] 其中,读出数据过程中,位线X和位线Y预先充电到一定的电压值,然后字线加上一定的电压,左边和右边的2个MOS管导通,左边的MOS管把存储的真值,例如“0”值输出到位线X上,右边的MOS管把反值,例如:“1”输出到位线Y上,位线X和位线Y通过连接的差分感应放大器,最终输出这个存储单元的值真值“0”。
[0007] 写入数据过程中,例如:将数据“1”写入到这个存储单元,位线X输入“1”,位线Y输入“0”,形成互补输入,然后字线打开,左右2个MOS管同时导通,这样就把真值强制修改成“1”,反值强制修改成“0”;如上所知:这种6T SRAM的读和写操作不可以同时进行,相应的,供应商会提供双端口的SRAM存储器。
[0008] 结合图3所述,为双端口的SRAM存储器的数字电路结构示意图。其在上述6T SRAM的基础上多增加了2个MOS管,不仅如此,为了防止在读数据的时候引起SRAM存储器的真值的翻转,中间的4个MOS管尺寸要比相应的6T SRAM的4个MOS管尺寸要大;以某厂家提供的14nm下的数据显示,6T SRAM的尺寸是0.064平方微米,而8T SRAM的尺寸是0.201平方微米,是前者的3.14倍大。
[0009] 结合图4所示,为了避免同时具有读写功能的SRAM存储器面积过大,同时又要增加存储器的存储密度,尽量避免使用8T SRAM;如此在6T SRAM的基础通过线路更改避免上述问题的出现。相应的,在6T SRAM的基础,把一根字线分割成左右两个,这样可以做成2个读端口同时操作或者1个写端口,这样从左边MOS管读出的数据和右边MOS管读出的数据可以同时进行,需要注意的是,右边MOS管读出的数据需要反相之后才可以用,同时为了不影响数据读取的速度,读出的感应放大器需要用伪差分放大器。这样,6T SRAM面积不变,唯一的代价是增加一倍的字线,从而保证总体的存储密度基本不变。
[0010] 如此,在SRAM的端口类型为1个读或者写,2个读或者写,以及1写或者2读的基础上,通过定制设计,例如:修改存储单元的办法,以及算法设计来增加SRAM的端口数量。
[0011] 如图5所示,为现有技术中采用另一实施方式的通过定制设计形成的2R1W存储器读写操作流程示意图;
[0012] 通过定制设计可以增加SRAM的端口,上述图4示例中,把一个字线切割成2个字线,将读端口增加到2个;现有技术中,还可以通过分时操作的技术,即读操作在时钟的上升沿进行,而写操作在时钟的下降沿完成,这样也可以把一个基本的1读或者1写的SRAM扩展成1读和1写的SRAM类型,即1个读和1个写操作可以同时进行,存储密度基本不变。
[0013] 现有技术中的采用定制设计,其定制设计的周期一般比较长,需要做spice仿真,还要提供存储器编译器,以生成不同大小和类型的SRAM,对于供应商来说,一般需要6 9个~月的时间,才能提供一个新型的SRAM的类型,而且这样的定制设计是与具体的工艺(例如GlobalFoundries 14nm, 28nm还是TSMC的28nm,16nm)强相关的,工艺一旦改变,定制设计的SRAM库需要重新设计。
[0014] 如图6所示,为现有技术一实施方式中采用算法设计形成的2R1W存储器读写操作流程示意图;
[0015] 算法设计是基于厂家提供的现成的SRAM类型,通过算法来实现2R1W存储器,最大的好处是避免定制设计,缩短时间,同时设计与厂家库无关,可以很容易的在不同的厂家库之间移植。
[0016] 本实施方式中,以SRAM2P为基础构建2R1W的SRAM为例,所述SRAM2P是一种能够支持1读和1读/写的SRAM类型,即可以对SRAM2P同时进行2个读操作,或者1个读和1个写操作。
[0017] 本实施方式中,通过复制一份SRAM以SRAM2P为基础构建2R1W的SRAM;该示例中,右边的SRAM2P_1是左边SRAM2P_0的拷贝,具体操作的时候,把两块SRAM2P作为1读和1写存储器来使用;其中,写入数据时,同时往左右两个SRAM2P写入数据,读出数据时,A固定从SRAM2P_0读取,数据B固定从SRAM2P_1读取,这样就可以实现1个写操作和2个读操作并发进行。
[0018] 该种算法设计过程中,需要额外一份SRAM2P存储器的拷贝,存储器的面积需要加倍,开销很大。
[0019] 如图7a、7b所示,为现有技术另一实施方式中采用算法设计形成的2R1W存储器读写操作流程示意图;
[0020] 该实施方式中,把逻辑上一整块的16384深度的SRAM分割成逻辑上4块4096深度的SRAM2P,编号依次为为0、1、2、3,再额外增加一块4096深度的SRAM,编号为4,作为解决读写冲突用,对于读数据A和读数据B,永远保证这2个读操作可以并发进行,当2个读操作的地址是处于不同的SRAM2P中时,因为任何一个SRAM2P都可以配置成1R1W类型,所以读写不会有冲突;当2个读操作的地址处于同一块SRAM2P中时,例如:均处于SRAM2P_0中,由于同一个SRAM2P最多只能提供2个端口同时操作,此时,其端口被2个读操作占用,如果恰好有一个写操作要写入SRAM2P_0,那么这时就把这个数据写入存储器第4块SRAM2P_4中。
[0021] 该种实施方式中,需要有一个存储器块映射表记录哪一个存储器块存放有效数据,如图7b所示,存储器块映射表的深度和一个存储器块的深度相同,即都是4096个深度,每一个条目中在初始化后依次存放每个存储器块的编号,从0到4,图7a示例中,由于
SRAM2P_0在写入数据的时候发生读写冲突,数据实际上是写入到SRAM2P_4中,此时,读操作同时会读取存储器映射表中对应的内容,原始内容为{0, 1, 2, 3, 4},修改之后变成{4, 
1, 2, 3, 0},第一个块编号和第4个块编号对调,表示数据实际写入到SRAM2P_4中,同时SRAM2P_0变成了备份条目。
[0022] 当读取数据的时候,需要首先读对应地址的存储器块编号映射表,查看有效数据存放在哪一个存储器块中,例如当要读取地址5123的数据,那么首先读取存储块编号映射表地址1027(5123-4096=1027)存放的内容,根据第二列的数字编号去读取对应存储块的地址1027的内容。
[0023] 对于写数据操作,需要存储器块编号映射表提供1读和1写端口,对于2个读数据操作,需要存储器块编号映射表提供2个读端口,这样总共需要存储器块编号映射表提供3个读端口和1个写端口,而且这4个访问操作必须是同时进行。
[0024] 如此,该算法设计相对于第一种算法设计节约了3/4的SRAM大小,但是需要额外的存储器块编号映射表,每次的读或者写操作,都需要先读这个映射表,增加了访问延迟;同时,存储器块编号映射表需要4个访问端口,包含3个读端口和1个写端口,需要特别的SRAM设计或者直接采用寄存器阵列才能满足这样的要求。

发明内容

[0025] 为解决上述技术问题,本发明的目的在于提供一种2R1W存储器的数据处理方法及处理系统。
[0026] 为实现上述发明目的之一,本发明一实施方式提供的2R1W存储器的数据处理方法,
[0027] 所述方法包括:
[0028] 根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,n为正整数;
[0029] 每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
[0030] 当数据写入2R1W存储器和/或从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
[0031] 作为本发明一实施方式的进一步改进,每块SRAM2P存储器的深度与宽度的乘积=(2R1W存储器的深度与宽度乘积)/2n。
[0032] 作为本发明一实施方式的进一步改进,“当数据写入2R1W存储器时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出”具体包括:
[0033] 获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P存储器的排列位置,0≤x<2n,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;
[0034] 获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中。
[0035] 作为本发明一实施方式的进一步改进,“当数据从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出”具体包括:
[0036] 若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则
[0037] 分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2n,0≤x2<2n,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;
[0038] 任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;
[0039] 获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出。
[0040] 作为本发明一实施方式的进一步改进,“当数据从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出”具体包括:
[0041] 若当前两个读出数据的读出地址处于不同的SRAM2P存储器中,
[0042] 则直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。
[0043] 为了实现上述发明目的之一,本发明一实施方式提供一种2R1W存储器的数据处理系统,所述系统包括:数据构建模块,数据处理模块;
[0044] 所述数据构建模块具体用于:根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,n为正整数;
[0045] 每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
[0046] 当数据写入2R1W存储器和/或从所述2R1W存储器读出时,所述数据处理模块用于:根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
[0047] 作为本发明一实施方式的进一步改进,每块SRAM2P存储器的深度与宽度的乘积=(2R1W存储器的深度与宽度乘积)/2n。
[0048] 作为本发明一实施方式的进一步改进,所述数据处理模块具体用于:
[0049] 获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P存储器的排列位置,0≤x<2n,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;
[0050] 获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中。
[0051] 作为本发明一实施方式的进一步改进,若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则
[0052] 所述数据处理模块具体用于:
[0053] 分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2n,0≤x2<2n,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;
[0054] 任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;
[0055] 获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出。
[0056] 作为本发明一实施方式的进一步改进,若当前两个读出数据的读出地址处于不同的SRAM2P存储器中,则
[0057] 所述数据处理模块具体用于:直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。
[0058] 与现有技术相比,本发明的2R1W存储器的数据处理方法及处理系统,只需要额外1/2n的存储器面积就可以基于现有的SRAM单元构建2R1W存储器;同时,不需要复杂的控制逻辑,只需要简单的异或运算就可实现多个端口的操作;另外,也不需要额外的存储器块映射表和控制逻辑,具有更低的功耗,更快的处理速度,以及节省更多的资源或面积,实现简单,节约人力及物质成本。

附图说明

[0059] 图1是现有技术中,典型的6T SRAM的数字电路结构示意图;
[0060] 图2是现有技术中,图1的简化结构示意图;
[0061] 图3是现有技术中,双端口的SRAM存储器的数字电路结构示意图;
[0062] 图4是现有技术中,一实施方式中,通过定制设计形成的2R1W存储器的数字电路结构示意图;
[0063] 图5是现有技术中,另一实施方式的通过定制设计形成的2R1W存储器读写分时操作示意图;
[0064] 图6是现有技术中,一实施方式中采用算法设计形成的2R1W存储器的报文缓存逻辑单元示意图;
[0065] 图7a是现有技术中,另一实施方式中采用算法设计形成的2R1W存储器的报文缓存逻辑单元示意图;
[0066] 图7b是现有技术中,对应图7a存储器块编号映射表的结构示意图;
[0067] 图8是本发明一实施方式提供的2R1W存储器的数据处理方法的流程示意图;
[0068] 图9是本发明一实施方式提供的2R1W存储器的报文缓存逻辑单元示意图;
[0069] 图10是本发明一实施方式中提供的2R1W存储器的数据处理系统的模块示意图。

具体实施方式

[0070] 以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
[0071] 如图8所示,本发明一实施方式提供的2R1W存储器的数据处理方法,所述2R1W存储器,即同时支持两读一写的存储器。
[0072] 所述方法包括:根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,n为正整数;
[0073] 多个所述SRAM2P存储器按照排列顺序依次为SRAM2P(0)、SRAM2P(1)……、SRAM2P(2n),每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
[0074] 该发明的优选实施方式中,每块SRAM2P存储器的深度与宽度的乘积=(2R1W存储器的深度与宽度乘积)/2n。
[0075] 以下为了描述方便,对n取值为2、2R1W存储器为16384深度、128宽度的SRAM存储器进行详细描述。
[0076] 则在该具体示例中,多个所述SRAM2P存储器按照排列顺序依次为SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)、SRAM2P(4),其中,SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)为主存储器,SRAM2P(4)为辅助存储器,每个SRAM2P存储器的深度和宽度分别为
4096和128,相应的,每个SRAM2P存储器均具有4096个指针地址;如果对每个SRAM2P存储器的指针地址均独立标识,则每个SRAM2P存储器的指针地址均为0 4095,若将全部的主存储~
器的地址依次排列,则全部的指针地址范围为: 0   16383。该示例中,SRAM2P(4)用于解决~
端口冲突,且在该实施方式中,无需增加存储器块编号映射表即可以满足需求。
[0077] 进一步的,在上述硬件框架基础上,所述方法还包括:当数据写入2R1W存储器和/或从所述2R1W存储器读出时,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
[0078] 本发明优选实施方式中,其数据写入过程如下:
[0079] 获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P存储器的排列位置,0≤x<2n,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;
[0080] 获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中。
[0081] 结合图9所示,本发明一具体示例中,将数据128比特全“1”写入到SRAM2P(0)中的指针地址“5”,即当前数据的写入地址为W(0,5),在写入数据过程中,除了直接将数据128比特全“1”写入到指定位置SRAM2P(0)中的指针地址“5”外,同时,需要读取其余主存储器在相同指针地址的数据,假设从SRAM2P(1)中的指针地址“5”读出的数据为128比特全“1”,从SRAM2P(2)中的指针地址“5”读出的数据为128比特全“0”,从SRAM2P(3)中的指针地址“5”读出的数据为128比特全“1”,则将数据128比特全“1”、128比特全“0”、 128比特全“1”、 128比特全“1”做异或运算,并将其异或运算的结果“1”同时写入到SRAM2P(4)中的指针地址“5”。如此,以保证2R1W存储器的2个读端口和1个写端口同时操作。
[0082] 进一步的,本发明优选实施方式中,其数据读出过程如下:
[0083] 若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则
[0084] 分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2n,0≤x2<2n,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;
[0085] 任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;
[0086] 获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出。
[0087] 接续图9所示,本发明一具体示例中,读出的数据为2个,其指针地址分别为SRAM2P(0)中的指针地址“2”,以及SRAM2P(0)中的指针地址“5”,即当前数据的读出地址为R(0,2)和R(0,5);
[0088] 在从2R1W存储器读出数据过程中,由于每一个SRAM2P只能保证1个读端口和1个写端口同时操作,读端口直接从SRAM2P(0)中的指针地址“2”中读取数据,但是另一读端口的请求无法满足。相应的,本发明采用异或运算的方式解决两个读端口同时读出数据的问题。
[0089] 对于R(0,5)中的数据,分别读取其他三个主存储器以及辅助存储器的指针地址“5”的数据并对其做异或运算,接续上例,从SRAM2P(1)中的指针地址“5”读出的数据为“1”,从SRAM2P(2)中的指针地址“5”读出的数据为“0”,从SRAM2P(3)中的指针地址“5”读出的数据为128比特全“1”,从SRAM2P(4)中的指针地址“5”读出的数据为128比特全“1”,将数据128比特全“1”、128比特全“1”、 128比特全“0”、 128比特全“1”做异或运算,得到128比特“1”,并将其异或运算的结果128比特全“1”作为SRAM2P(0)中的指针地址“5”的存储数据进行输出,通过上述过程得到的数据,其结果与SRAM2P(0)中的指针地址“5”中存储的数据完全一致,如此,根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
[0090] 本发明一实施方式中,若当前两个读出数据的读出地址处于不同的SRAM2P存储器中,则直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。
[0091] 接续图9所示,本发明一具体示例中,读出的数据为2个,其指针地址分别为SRAM2P(0)中的指针地址“5”,以及SRAM2P(1)中的指针地址“10”,即当前数据的读出地址为R(0,5)和R(1,10);
[0092] 在从2R1W存储器读出数据过程中,由于每一个SRAM2P均能保证1个读端口和1个写端口同时操作,故,读出数据过程中,直接从SRAM2P(0)中的指针地址“5”读取数据,以及直接从SRAM2P(1)中的指针地址“10”读出数据,如此,以保证2R1W存储器的2个读端口和1个写端口同时操作,在此不做详细赘述。
[0093] 如上所述,只需要额外1/2n的存储器面积就可以基于现有的SRAM单元构建2R1W存储器。
[0094] 需要说明的是,如果逻辑上把每一个SRAM2P进一步切分,比如切分成4n个具有相同深度的SRAM2P,那么只需要增加额外1/4n的存储器面积就可以构建上述2R1W类型的SRAM;相应的,物理上SRAM的块数也增加了近2倍,在实际的布局布线中会占用不少的面积开销;当然,本发明并不以上述具体实施方式为限,其它采用异或运算以扩展存储器端口的方案也包括在本发明的保护范围内,在此不做详细赘述。
[0095] 结合图10所示,本发明一实施方式提供的2R1W存储器的数据处理系统,所述系统包括:数据构建模块100,数据处理模块200;
[0096] 所述2R1W存储器,即同时支持两读一写的存储器,所述数据构建模块100中包括若干块SRAM2P存储器。
[0097] 所述数据构建模块100具体用于:根据所述2R1W存储器的深度和宽度选择2n+1块具有相同深度及宽度的SRAM2P存储器构建2R1W存储器的硬件框架,n为正整数;
[0098] 多个所述SRAM2P存储器按照排列顺序依次为SRAM2P(0)、SRAM2P(1)……、SRAM2P(2n),每个SRAM2P存储器均具有M个指针地址,其中,多个所述SRAM2P存储器中的一个为辅助存储器,其余均为主存储器;
[0099] 该发明的优选实施方式中,每块SRAM2P存储器的深度与宽度的乘积=(2R1W存储器的深度与宽度乘积)/2n。
[0100] 以下为了描述方便,对n取值为2、2R1W存储器为16384深度、128宽度的SRAM存储器进行详细描述。
[0101] 则在该具体示例中,多个所述SRAM2P存储器按照排列顺序依次为SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)、SRAM2P(4),其中,SRAM2P(0)、SRAM2P(1)、SRAM2P(2)、SRAM2P(3)为主存储器,SRAM2P(4)为辅助存储器,每个SRAM2P存储器的深度和宽度分别为
4096和128,相应的,每个SRAM2P存储器均具有4096个指针地址;如果对每个SRAM2P存储器的指针地址均独立标识,则每个SRAM2P存储器的指针地址均为0 4095,若将全部的主存储~
器的地址依次排列,则全部的指针地址范围为: 0   16383。该示例中,SRAM2P(4)用于解决~
端口冲突,且在该实施方式中,无需增加存储器块编号映射表即可以满足需求。
[0102] 进一步的,在上述硬件框架基础上,当数据写入2R1W存储器和/或从所述2R1W存储器读出时,数据处理模块200用于:根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
[0103] 本发明优选实施方式中,数据处理模块200写入数据过程如下:
[0104] 数据处理模块200具体用于:获取当前数据的写入地址为W(x,y),x表示写入数据所处于的SRAM2P存储器的排列位置,0≤x<2n,y表示写入数据所处于的SRAM2P存储器中的具体的指针地址,0≤y≤M;
[0105] 数据处理模块200具体用于:获取与写入地址具有相同指针地址的其余主存储器中的数据,将其同时与当前写入数据做异或运算,并将异或运算结果写入到辅助存储器的相同指针地址中。
[0106] 结合图9所示,本发明一具体示例中,数据处理模块200具体用于:将数据128比特全“1”写入到SRAM2P(0)中的指针地址“5”,即当前数据的写入地址为W(0,5),在写入数据过程中,除了直接将数据128比特全“1”写入到指定位置SRAM2P(0)中的指针地址“5”外,同时,需要读取其余主存储器在相同指针地址的数据,假设从SRAM2P(1)中的指针地址“5”读出的数据为128比特全“1”,从SRAM2P(2)中的指针地址“5”读出的数据为128比特全“0”,从SRAM2P(3)中的指针地址“5”读出的数据为128比特全“1”,则将数据128比特全“1”、128比特全“0”、 128比特全“1”、 128比特全“1”做异或运算,并将其异或运算的结果128比特全“1”同时写入到SRAM2P(4)中的指针地址“5”。如此,以保证2R1W存储器的2个读端口和1个写端口同时操作。
[0107] 进一步的,本发明优选实施方式中,数据处理模块200读出数据过程如下:
[0108] 若当前两个读出数据的读出地址处于相同的SRAM2P存储器中,则
[0109] 数据处理模块200具体用于:分别获取两个读出数据的读出地址为R1(x1,y1),R2(x2,y2),x1、y1均表示读出数据所处于的SRAM2P存储器的排列位置,0≤x1<2n,0≤x2<2n,y1、y2均表示读出数据所处于的SRAM2P存储器中的具体的指针地址,0≤y1≤M,0≤y2≤M;
[0110] 数据处理模块200具体用于:任选其中一个读出地址R1(x1,y1)中存储的读出数据,从当前的指定读出地址中直接读出当前存储的数据;
[0111] 数据处理模块200具体用于:获取与另一个读出地址具有相同指针地址的其余主存储器、以及辅助存储器中存储的数据,并对其做异或运算,将异或运算结果作为另一个读出地址的存储数据进行输出。
[0112] 接续图9所示,本发明一具体示例中,读出的数据为2个,其指针地址分别为SRAM2P(0)中的指针地址“2”,以及SRAM2P(0)中的指针地址“5”,即当前数据的读出地址为R(0,2)和R(0,5);
[0113] 数据处理模块200在从2R1W存储器读出数据过程中,由于每一个SRAM2P只能保证1个读端口和1个写端口同时操作,读端口直接从SRAM2P(0)中的指针地址“2”中读取数据,但是另一读端口的请求无法满足。相应的,本发明采用异或运算的方式解决两个读端口同时读出数据的问题。
[0114] 对于R(0,5)中的数据,数据处理模块200分别读取其他三个主存储器以及辅助存储器的指针地址“5”的数据并对其做异或运算,接续上例,从SRAM2P(1)中的指针地址“5”读出的数据为128比特全“1”,从SRAM2P(2)中的指针地址“5”读出的数据为128比特全“0”,从SRAM2P(3)中的指针地址“5”读出的数据为128比特全“1”,从SRAM2P(4)中的指针地址“5”读出的数据为128比特全“1”,将数据128比特“1”、128比特“1”、 128比特“0”、 128比特“1”做异或运算,得到128比特“1”,并将其异或运算的结果128比特全“1”作为SRAM2P(0)中的指针地址“5”的存储数据进行输出,通过上述过程得到的数据,其结果与SRAM2P(0)中的指针地址“5”中存储的数据完全一致,如此,数据处理模块200根据数据的当前指针位置,关联主存储器以及辅助存储器中的数据,对其做异或运算,完成数据的写入和读出。
[0115] 本发明一实施方式中,若当前两个读出数据的读出地址处于不同的SRAM2P存储器中,则数据处理模块200直接获取不同SRAM2P存储器中对应指针地址的数据分别独立进行输出。
[0116] 接续图9所示,本发明一具体示例中,读出的数据为2个,其指针地址分别为SRAM2P(0)中的指针地址“5”,以及SRAM2P(1)中的指针地址“10”,即当前数据的读出地址为R(0,5)和R(1,10);
[0117] 数据处理模块200在从2R1W存储器读出数据过程中,由于每一个SRAM2P均能保证1个读端口和1个写端口同时操作,故,读出数据过程中,直接从SRAM2P(0)中的指针地址“5”读取数据,以及直接从SRAM2P(1)中的指针地址“10”读出数据,如此,以保证2R1W存储器的2个读端口和1个写端口同时操作,在此不做详细赘述。
[0118] 如上所述,只需要额外1/2n的存储器面积就可以基于现有的SRAM单元构建2R1W存储器。
[0119] 需要说明的是,如果逻辑上把每一个SRAM2P进一步切分,比如切分成4n个具有相同深度的SRAM2P,那么只需要增加额外1/4n的存储器面积就可以构建上述2R1W类型的SRAM;相应的,物理上SRAM的块数也增加了近2倍,在实际的布局布线中会占用不少的面积开销;当然,本发明并不以上述具体实施方式为限,其它采用异或运算以扩展存储器端口的方案也包括在本发明的保护范围内,在此不做详细赘述。
[0120] 综上所述,本发明的2R1W存储器的数据处理方法及处理系统,只需要额外1/2n的存储器面积就可以基于现有的SRAM单元构建2R1W存储器;同时,不需要复杂的控制逻辑,只需要简单的异或运算就可实现多个端口的操作;另外,也不需要额外的存储器块映射表和控制逻辑,具有更低的功耗,更快的处理速度,以及节省更多的资源或面积,实现简单,节约人力及物质成本。
[0121] 为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0122] 以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0123] 应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
[0124] 上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。