CN102436427A - 一种数据读写方法和存储设备 - Google Patents
一种数据读写方法和存储设备 Download PDFInfo
- Publication number
- CN102436427A CN102436427A CN2011103482816A CN201110348281A CN102436427A CN 102436427 A CN102436427 A CN 102436427A CN 2011103482816 A CN2011103482816 A CN 2011103482816A CN 201110348281 A CN201110348281 A CN 201110348281A CN 102436427 A CN102436427 A CN 102436427A
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- look
- write
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Static Random-Access Memory (AREA)
Abstract
本发明公开了一种数据读写方法和存储设备,属于存储器领域。包括:根据欲实现的伪双口/双口存储器的容量规格M×W以及单口存储器的数量N+1,确定单口存储器的容量规格、以及主存储器查找表和备用存储器查找表,以M/N个存储单元为单位,将主存储器和备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器;当同时有读操作和写操作,并且读和写地址在主存储器查找表中对应的值相等时,从主存储器查找表的读地址指示的有效的单口存储器读取数据,往备用存储器查找表的写地址指示的备用的单口存储器写入数据,标识写地址的有效数据和空闲数据所在的单口存储器。本发明通过上述方案,大幅度地减少了存储器的面积。
Description
技术领域
本发明涉及存储器领域,特别涉及一种数据读写方法和存储设备。
背景技术
在ASIC(Application Specific Integrated Circuit,专用集成电路)设计过程中常常会用到存储器,如SRAM(Static RandomAccess Memory,静态随机存储器)、eDRAM(EnhancedDynamic Random Access Memory,增强动态随机存取存储器)等。根据访问带宽的需求,存储器又可以分为单口/伪双口/双口/四口存储器。在相同容量规格下,伪双口/双口存储器的访问带宽是单口存储器的访问带宽的2倍,但是,伪双口/双口存储器的面积却是单口存储器面积的2倍多。
为了减少存储器的面积,现在常常采用2个与伪双口/双口存储器规格相同的单口存储器,通过乒乓(ping-pang)操作达到相同容量规格的伪双口/双口存储器的访问带宽。具体来说,当只有读操作或写操作时,可以分别从2个单口存储器读取数据或往2个单口存储器写入数据,当同时有读操作和写操作时,可以从一个单口存储器读取数据,同时往另一个单口存储器写入数据,从而达到相同容量规格的伪双口/双口存储器的访问带宽。
发明人发现,在相同的访问带宽下,2个单口存储器与相同容量规格的伪双口/双口存储器相比面积减小的有限,而如何更大幅度的减少存储器的面积,现有技术还没有相应的解决方案。
发明内容
为了在相同的访问带宽下更大幅度地减少存储器的面积,本发明实施例提供了一种数据读写方法和存储设备。所述技术方案如下:
一种数据读写方法,所述方法包括:
根据欲实现的伪双口/双口存储器的容量规格M×W以及单口存储器的数量(N+1),确定单口存储器的容量规格(M/N)×W、以及用于指示有效的单口存储器的主存储器查找表和用于指示备用的单口存储器的备用存储器查找表其中,M是伪双口/双口存储器的深度,表示伪双口/双口存储器中存储单元的总数,W是伪双口/双口存储器的宽度,表示每个存储单元的容量,单位是比特,N为正整数,表示向上取整;
以M/N个存储单元为单位,将主存储器查找表和备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器;
当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值相等时,从所述主存储器查找表的所述读地址指示的有效的单口存储器读取数据,往所述备用存储器查找表的所述写地址指示的备用的单口存储器写入数据,并标识所述写地址的有效数据和空闲数据所在的单口存储器。
一种数据读写方法,所述方法包括:
接收写请求,获取所述写请求中的外部地址;
根据所述外部地址,在主存储器查找表中查找与所述外部地址相对应的内部地址,其中,所述内部地址包括所述写请求的写入数据将要写入的主存储器,以及所述写入数据在所述主存储器中的第一存储地址;
确认是否有读请求在访问所述主存储器,如果有读请求正在访问所述主存储器的第二存储地址,则在备用存储器查找表中查找备用存储器中的与所述第一存储地址相对应的第一备用地址;
将所述写请求的写入数据写入到所述第一备用地址中;
修改所述主存储器查找表,使得所述第一备用地址与所述外部地址相对应;
修改所述主存储器查找表和备用存储器查找表,以使得所述第二存储地址成为所述第一存储地址的备用地址。
一种存储设备,包括:请求获取模块,存储地址获取模块,读写处理模块,以及查找表更新模块,其中,
所述请求获取模块用于接收写请求,并获取所述写请求中的外部地址;
所述存储地址获取模块用于根据所述外部地址,在主存储器查找表中查找与所述外部地址相对应的内部地址,其中,所述内部地址包括所述写请求的写入数据将要写入的主存储器,以及所述写入数据在所述主存储器中的第一存储地址;
所述存储地址获取模块还用于确认是否有读请求在访问所述主存储器,如果有读请求正在访问所述主存储器的第二存储地址,则在备用存储器查找表中查找备用存储器中的与所述第一存储地址相对应的第一备用地址;
所述读写处理模块用于将所述写请求的写入数据写入到所述第一备用地址中;
所述查找表更新模块用于改所述主存储器查找表,使得所述第一备用地址与所述外部地址相对应,以及,用于修改所述主存储器查找表和备用存储器查找表,以使得所述第二存储地址成为所述第一存储地址的备用地址。
一种存储设备,包括:
(N+1)个用于存储数据的单口存储器,一个用于指示有效的单口存储器的主存储器查找表,以及一个用于指示备用的单口存储器的备用存储器查找表,
本发明实施例提供的技术方案的有益效果是:通过单口存储器的N+1冗余设计,根据主存储器查找表的指示从主存储器读取数据,并根据备用存储器查找表的指示将数据写入到备用存储器,以解决读写冲突,通过N+1片容量规格较小的单口存储器达到相同容量规格的伪双口/双口存储器的访问带宽,同时大幅度地减少了存储器的面积。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一方面提供的数据读写方法流程图;
图1-a是本发明实施例一方面提供的读方法流程图;
图1-b是本发明实施例一方面提供的写方法流程图;
图1-c是本发明实施例一方面提供的存储器不冲突时的数据读写方法流程图;
图1-d是本发明实施例一方面提供的存储器冲突时的数据读写方法流程图;
图2是本发明实施例一方面提供的三个单口SRAM拼接的逻辑图;
图3是本发明实施例另一方面提供的存储设备结构示意图;
图4是本发明实施例另一方面提供的数据读写方法流程图;
图5是本发明实施例另一方面提供的存储设备结构示意图;
图6是本发明实施例另一方面提供的存储设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例采用M×W方式表示存储器的容量,其中,M是存储器的深度,表示存储器中存储单元的总数,W是存储器的宽度,表示每个存储单元的容量,也称位宽,单位是比特(bit)。以M×W方式表示的存储器的容量的单位为bit。
参见图1,本发明实施例的一方面提供了一种数据读写方法,该方法采用多片容量较小的单口存储器,并配合查找表实现容量较大的伪双口/双口存储器的访问带宽,该方法包括:
101:根据欲实现的伪双口/双口存储器的容量规格M×W以及单口存储器的数量(N+1),确定单口存储器的容量规格(M/N)×W、以及用于指示有效的单口存储器的主存储器查找表和用于指示备用的单口存储器的备用存储器查找表其中,M是伪双口/双口存储器的深度,表示伪双口/双口存储器中存储单元的总数,W是伪双口/双口存储器的宽度,表示每个存储单元的容量,单位是比特,N为正整数,表示向上取整。
在本发明实施例中,主存储器查找表设为ERT表,备用存储器查找表设为FRT表,其中,ERT和FRT仅是查找表的一种符号表示,不具有任何物理意义。
例如,欲实现一个32K×96bit的伪双口SRAM的访问带宽,方案1:可以用2+1个16K×96bit的单口SRAM加上一个32K×2bit的ERT表和一个16K×2bit的FRT表来实现,或者,方案2:可以用4+1个8K×96bit的单口SRAM加上一个32K×3bit的ERT表和一个8K×3bit的FRT表来实现。以此类推,N还可以取其他正整数,从而得到不同的方案。
102:以M/N个存储单元为单位,将主存储器查找表和备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器;
例如,主存储器查找表和备用存储器查找表中共有N+1个M/N连续存储单元,将每一个M/N连续存储单元依次初始化为0、1、2、…、N,分别指示单口存储器0、单口存储器1、单口存储器2、…、单口存储器N。其中,如果主存储器查找表的N个M/N连续存储单元依次初始化为0、1、2、…、N-1,则说明初始化后有效的单口存储器是0、1、2、…、N-1;如果备用存储器查找表的1个M/N连续存储单元初始化为N,则说明初始化后备用的单口存储器是N。
103:根据主存储器查找表和/或备用存储器查找表进行读写操作,具体包括:
103a:参见图1-a,当只有读操作时,从主存储器查找表(ERT)的读地址(RADDR)指示的有效的单口存储器(ERT[RADDR])读取数据,函数表示如下:
read_addr={ERT[RADDR],RADDR[(log2M/N)-1:0]};其中,[(log2M/N)-1:0]表示一个深度为M/N的单口存储器对应的地址线,{,}表示将,之前和,之后的两部分拼接起来。
103b:参见图1-b,当只有写操作时,往主存储器查找表(ERT)的写地址(WADDR)指示的有效的单口存储器(ERT[WADDR])写入数据,函数表示如下:
write_addr={ERT[WADDR],WADDR[(log2M/N)-1:0]};
103c:参见图1-c,当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值不相等时,说明读写有效在不同的单口存储器,即没有产生读写冲突,则
从主存储器查找表(ERT)的读地址(RADDR)指示的有效的单口存储器(ERT[RADDR])读取数据,往主存储器查找表(ERT)的写地址(WADDR)指示的有效的单口存储器(ERT[WADDR])写入数据。函数表示如下:
if(ERT[RADDR]≠ERT[WADDR])
read_addr={ERT[RADDR],RADDR[(log2M/N)-1:0]};
write_addr={ERT[WADDR],WADDR[(log2M/N)-1:0]};
103d:参见图1-d,当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值相等时,说明读写有效在相同的单口存储器,即产生读写冲突,则
从主存储器查找表(ERT)的读地址(RADDR)指示的有效的单口存储器(ERT[RADDR])读取数据,往备用存储器查找表(FRT)的写地址(WADDR)指示的备用的单口存储器(FRT[WADDR])写入数据,并标识写地址的有效数据和空闲数据所在的单口存储器。
其中,标识写地址的有效数据和空闲数据所在的单口存储器,具体包括:
将写地址(WADDR)在备用存储器查找表(FRT)中的值赋给写地址(WADDR)在主存储器查找表(ERT)中的值,以标识写地址(WADDR)的有效数据所在的单口存储器,将读地址(RADDR)在主存储器查找表(ERT)中的值赋给写地址(WADDR)在备用存储器查找表(FRT)中的值,以标识写地址(WADDR)的空闲数据所在的单口存储器。
函数表示如下:
if(ERT[RADDR]==ERT[WADDR])
read_addr={ERT[RADDR],RADDR[(log2M/N)-1:0]};
write_addr={FRT[WADDR[(log2M/N)-1:0]],WADDR[(log2M/N)-1:0]};
ERT[WADDR]=FRT[WADDR[(log2M/N)-1:0]];
FRT[WADDR[(log2M/N)-1:0]]=ERT[RADDR];
下面以实现一个32K×96bit的伪双口SRAM的访问带宽为例,可以用2+1个16K×96bit的单口SRAM加上一个32K×2bit的ERT表和一个16K×2bit的FRT表来实现,三个单口SRAM(SRAM0、SRAM1、SRAM2)拼接的逻辑图参见图2所示,
1,初始化ERT表和FRT表:
ERT[0~16K-1]=0
ERT[16K~32K-1]=1
FRT[0~16K-1]=2
2,读地址1、写地址2,因为ERT[1]==ERT[2],读写冲突,按照103d的算法:
read_addr={ERT[1],1}={0,1}=1;//从有效的SRAM0读数据
write_addr={FRT[2],2}={2,2}=32K+2;//往备用的SRAM2写数据
ERT[2]=FRT[2]=2;//标识地址2的有效数据在SRAM2
FRT[2]=ERT[1]=0;//标识地址低14位为2的空闲数据在SRAM0
3,读地址16K+1、写地址16K+2,因为ERT[16K+1]==ERT[16K+2],读写冲突,按照103d的算法:
read_addr={ERT[16K+1],1}={1,1}=16K+1;//从有效的SRAM1读数据
write_addr={FRT[2],2}={0,2}=2;//往备用的SRAM0写数据
ERT[16K+2]=FRT[2]=0;//标识地址16K+2的有效数据在SRAM0
FRT[2]=ERT[16K+1]=1;//标识地址低14位为2的空闲数据在SRAM1
4,读地址1、写地址16K+2,因为ERT[1]==ERT[16K+2],读写冲突,按照103d的算法:
read_addr={ERT[1],1}={0,1}=1;//从有效的SRAM0读数据
write_addr={FRT[2],2}={1,2}=16K+2;//往备用的SRAM1写数据
ERT[16K+2]=FRT[2]=1;//标识地址16K+2的有效数据在SRAM1
FRT[2]=ERT[1]=0;//标识地址低14位为2的空闲数据在SRAM0
通过上述实例,算法保证了对于每连续16K地址中的一个地址,都有3个地址与之对应,其中有2个是有效数据,1个空闲数据,当冲突的时候就写空闲数据所在的地址。
对于同样的规格,选择不同的N节约的面积不一样,选择合适的N,可以使得面积的节约达到最大化。在IBM 45nm工艺下,各种实现面积比较如表1所示:
表1
第1列表示用1个双口32K×96bit SRAM实现的面积。
第2列表示用2个单口32K×96bit SRAM ping-pong操作实现的面积。
第3列表示用3个单口16K×96bit SRAM做2+1冗余实现的面积。
第4列表示用5个单口8K×96bit SRAM做4+1冗余实现的面积。
第5列表示用9个单口4K×96bit SRAM做8+1冗余实现的面积。
第6列表示用17个单口2K×96bit SRAM做16+1冗余实现的面积。
综合可以看出,当作8+1冗余实现时,可以节约最多的面积。
本发明实施例通过单口存储器的N+1冗余设计,根据主存储器查找表的指示从主存储器读取数据,并根据备用存储器查找表的指示将数据写入到备用存储器,以解决读写冲突,通过N+1片容量规格较小的单口存储器达到相同容量规格的伪双口/双口存储器的访问带宽,同时大幅度地减少了存储器的面积。
参见图3,本发明实施例的另一方面提供了一种存储设备,该存储设备采用多片容量较小的单口存储器,并配合查找表实现容量较大的伪双口/双口存储器的访问带宽,该装置包括:确定模块301、初始化模块302、和读写操作模块303。
确定模块301,用于根据欲实现的伪双口/双口存储器的容量规格M×W以及单口存储器的数量(N+1),确定单口存储器的容量规格(M/N)×W、以及用于指示有效的单口存储器的主存储器查找表和用于指示备用的单口存储器的备用存储器查找表 其中,M是伪双口/双口存储器的深度,表示伪双口/双口存储器中存储单元的总数,W是伪双口/双口存储器的宽度,表示每个存储单元的容量,单位是比特,N为正整数,表示向上取整;
初始化模块302,用于以M/N个存储单元为单位,将主存储器查找表和备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器;
读写操作模块303,用于当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值相等时,从主存储器查找表的读地址指示的有效的单口存储器读取数据,往备用存储器查找表的写地址指示的备用的单口存储器写入数据,并标识写地址的有效数据和空闲数据所在的单口存储器。
其中,读写操作模块303在标识写地址的有效数据和空闲数据所在的单口存储器时,具体用于:
将写地址在备用存储器查找表中的值赋给写地址在主存储器查找表中的值,以标识写地址的有效数据所在的单口存储器,将读地址在主存储器查找表中的值赋给写地址在备用存储器查找表中的值,以标识写地址的空闲数据所在的单口存储器。
读写操作模块303,还用于当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值不相等时,从主存储器查找表的读地址指示的有效的单口存储器读取数据,往主存储器查找表的写地址指示的有效的单口存储器写入数据。
读写操作模块303,还用于当只有读操作时,从主存储器查找表的读地址指示的有效的单口存储器读取数据。
读写操作模块303,还用于当只有写操作时,往主存储器查找表的写地址指示的有效的单口存储器写入数据。
本发明实施例通过单口存储器的N+1冗余设计,根据主存储器查找表的指示从主存储器读取数据,并根据备用存储器查找表的指示将数据写入到备用存储器,以解决读写冲突,通过N+1片容量规格较小的单口存储器达到相同容量规格的伪双口/双口存储器的访问带宽,同时大幅度地减少了存储器的面积。
参见图4,本发明实施例的另一方面提供了一种数据读写方法,包括:
401:接收写请求,获取写请求中的外部地址;
402:根据外部地址,在主存储器查找表中查找与外部地址相对应的内部地址,其中,内部地址包括写请求的写入数据将要写入的主存储器,以及写入数据在主存储器中的第一存储地址;
403:确认是否有读请求在访问主存储器,如果有读请求正在访问主存储器的第二存储地址,则在备用存储器查找表中查找备用存储器中的与第一存储地址相对应的第一备用地址;
404:将写请求的写入数据写入到第一备用地址中;
405:修改主存储器查找表,使得第一备用地址与外部地址相对应;
406:修改主存储器查找表和备用存储器查找表,以使得第二存储地址成为第一存储地址的备用地址。
进一步,该方法还包括:如果读请求正在访问除主存储器之外的其他主存储器的第三存储地址,将写请求的写入数据写入到第一存储地址,并从第三存储地址读取数据。
本发明实施例在同时有读写操作且操作同一存储器时,通过存储器的冗余设计,将写请求的写入数据写入到备用地址中,从而解决了读写冲突问题。
参见图5,本发明实施例的另一方面提供了一种存储设备,包括:请求获取模块501,存储地址获取模块502,读写处理模块503,以及查找表更新模块504,其中,
请求获取模块501用于接收写请求,并获取写请求中的外部地址;
存储地址获取模块502用于根据外部地址,在主存储器查找表中查找与外部地址相对应的内部地址,其中,内部地址包括写请求的写入数据将要写入的主存储器,以及写入数据在主存储器中的第一存储地址;
存储地址获取模块502还用于确认是否有读请求在访问主存储器,如果有读请求正在访问主存储器的第二存储地址,则在备用存储器查找表中查找备用存储器中的与第一存储地址相对应的第一备用地址;
读写处理模块503用于将写请求的写入数据写入到第一备用地址中;
查找表更新模块504用于改主存储器查找表,使得第一备用地址与外部地址相对应,以及,用于修改主存储器查找表和备用存储器查找表,以使得第二存储地址成为第一存储地址的备用地址。
进一步,读写处理模块503,还用于如果读请求正在访问除主存储器之外的其他主存储器的第三存储地址,将写请求的写入数据写入到第一存储地址,并从第三存储地址读取数据。
本发明实施例在同时有读写操作且操作同一存储器时,通过存储器的冗余设计,将写请求的写入数据写入到备用地址中,从而解决了读写冲突问题。
参见图6,本发明实施例的另一方面提供了一种存储设备,包括:
(N+1)个用于存储数据的单口存储器601,一个用于指示有效的单口存储器的主存储器查找表602,以及一个用于指示备用的单口存储器的备用存储器查找表603,
进一步,以M/N个存储单元为单位,主存储器查找表和备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器。
本发明实施例通过单口存储器的N+1冗余设计,根据主存储器查找表的指示从主存储器读取数据,并根据备用存储器查找表的指示将数据写入到备用存储器,以解决读写冲突,通过N+1片容量规格较小的单口存储器达到相同容量规格的伪双口/双口存储器的访问带宽,同时大幅度地减少了存储器的面积。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据读写方法,其特征在于,所述方法包括:
根据欲实现的伪双口/双口存储器的容量规格M×W以及单口存储器的数量(N+1),确定单口存储器的容量规格(M/N)×W、以及用于指示有效的单口存储器的主存储器查找表和用于指示备用的单口存储器的备用存储器查找表
以M/N个存储单元为单位,将主存储器查找表和备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器;
当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值相等时,从所述主存储器查找表的所述读地址指示的有效的单口存储器读取数据,往所述备用存储器查找表的所述写地址指示的备用的单口存储器写入数据,并标识所述写地址的有效数据和空闲数据所在的单口存储器。
2.根据权利要求1所述的方法,其特征在于,所述标识所述写地址的有效数据和空闲数据所在的单口存储器,包括:
将所述写地址在所述备用存储器查找表中的值赋给所述写地址在所述主存储器查找表中的值,以标识所述写地址的有效数据所在的单口存储器,将所述读地址在所述主存储器查找表中的值赋给所述写地址在所述备用存储器查找表中的值,以标识所述写地址的空闲数据所在的单口存储器。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当同时有读操作和写操作,并且读地址和写地址在主存储器查找表中对应的值不相等时,从所述主存储器查找表的所述读地址指示的有效的单口存储器读取数据,往所述主存储器查找表的所述写地址指示的有效的单口存储器写入数据。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当只有读操作时,从主存储器查找表的读地址指示的有效的单口存储器读取数据。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当只有写操作时,往主存储器查找表的写地址指示的有效的单口存储器写入数据。
6.一种数据读写方法,其特征在于,所述方法包括:
接收写请求,获取所述写请求中的外部地址;
根据所述外部地址,在主存储器查找表中查找与所述外部地址相对应的内部地址,其中,所述内部地址包括所述写请求的写入数据将要写入的主存储器,以及所述写入数据在所述主存储器中的第一存储地址;
确认是否有读请求在访问所述主存储器,如果有读请求正在访问所述主存储器的第二存储地址,则在备用存储器查找表中查找备用存储器中的与所述第一存储地址相对应的第一备用地址;
将所述写请求的写入数据写入到所述第一备用地址中;
修改所述主存储器查找表,使得所述第一备用地址与所述外部地址相对应;
修改所述主存储器查找表和备用存储器查找表,以使得所述第二存储地址成为所述第一存储地址的备用地址。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果所述读请求正在访问除所述主存储器之外的其他主存储器的第三存储地址,将所述写请求的写入数据写入到所述第一存储地址,并从所述第三存储地址读取数据。
8.一种存储设备,其特征在于,包括:请求获取模块,存储地址获取模块,读写处理模块,以及查找表更新模块,其中,
所述请求获取模块用于接收写请求,并获取所述写请求中的外部地址;
所述存储地址获取模块用于根据所述外部地址,在主存储器查找表中查找与所述外部地址相对应的内部地址,其中,所述内部地址包括所述写请求的写入数据将要写入的主存储器,以及所述写入数据在所述主存储器中的第一存储地址;
所述存储地址获取模块还用于确认是否有读请求在访问所述主存储器,如果有读请求正在访问所述主存储器的第二存储地址,则在备用存储器查找表中查找备用存储器中的与所述第一存储地址相对应的第一备用地址;
所述读写处理模块用于将所述写请求的写入数据写入到所述第一备用地址中;
所述查找表更新模块用于改所述主存储器查找表,使得所述第一备用地址与所述外部地址相对应,以及,用于修改所述主存储器查找表和备用存储器查找表,以使得所述第二存储地址成为所述第一存储地址的备用地址。
9.根据权利要求8所述的存储设备,其特征在于,所述读写处理模块,还用于如果所述读请求正在访问除所述主存储器之外的其他主存储器的第三存储地址,将所述写请求的写入数据写入到所述第一存储地址,并从所述第三存储地址读取数据。
11.根据权利要求10所述的存储设备,其特征在于,以M/N个存储单元为单位,所述主存储器查找表和所述备用存储器查找表中每一个单位对应的存储单元初始化为不同的值,分别用于指示不同的单口存储器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110348281.6A CN102436427B (zh) | 2011-11-07 | 2011-11-07 | 一种数据读写方法和存储设备 |
US13/671,174 US20130346706A1 (en) | 2011-11-07 | 2012-11-07 | Data reading/writing method and memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110348281.6A CN102436427B (zh) | 2011-11-07 | 2011-11-07 | 一种数据读写方法和存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102436427A true CN102436427A (zh) | 2012-05-02 |
CN102436427B CN102436427B (zh) | 2014-10-08 |
Family
ID=45984498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110348281.6A Expired - Fee Related CN102436427B (zh) | 2011-11-07 | 2011-11-07 | 一种数据读写方法和存储设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130346706A1 (zh) |
CN (1) | CN102436427B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309626A (zh) * | 2013-07-03 | 2013-09-18 | 盛科网络(苏州)有限公司 | 实现网络芯片多读写端口存储器的方法及相应存储器 |
CN103455281A (zh) * | 2012-05-30 | 2013-12-18 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
CN103594110A (zh) * | 2012-08-15 | 2014-02-19 | 上海华虹集成电路有限责任公司 | 替代双端口静态存储器的存储器结构 |
EP2767980A1 (en) * | 2012-05-28 | 2014-08-20 | Brocade Communications Systems, Inc. | Two-port memory implemented with single-port memory blocks |
CN104484128A (zh) * | 2014-11-27 | 2015-04-01 | 盛科网络(苏州)有限公司 | 基于一读一写存储器的多读多写存储器及其实现方法 |
CN104484129A (zh) * | 2014-12-05 | 2015-04-01 | 盛科网络(苏州)有限公司 | 一读一写存储器、多读多写存储器及其读写方法 |
CN105373348A (zh) * | 2015-10-23 | 2016-03-02 | 上海新储集成电路有限公司 | 一种混合内存的硬件实现系统及方法 |
CN103401812B (zh) * | 2013-08-12 | 2017-03-15 | 盛科网络(苏州)有限公司 | 基于2组报文处理引擎的报文处理方法及装置 |
CN107357551A (zh) * | 2016-05-10 | 2017-11-17 | 成都海存艾匹科技有限公司 | 用于实现至少两类函数的处理器 |
CN108984148A (zh) * | 2018-06-13 | 2018-12-11 | 浙江大华技术股份有限公司 | 一种基于同步fifo存储器的数据存储的方法及存储器 |
US10754584B2 (en) | 2016-07-28 | 2020-08-25 | Centec Networks (Su Zhou) Co., Ltd. | Data processing method and system for 2R1W memory |
CN113254373A (zh) * | 2021-06-16 | 2021-08-13 | 上海矽久微电子有限公司 | 支持同时读写的类双口存储器实现方法、类存储器及芯片结构 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8923089B2 (en) * | 2012-12-21 | 2014-12-30 | Lsi Corporation | Single-port read multiple-port write storage device using single-port memory cells |
KR102543177B1 (ko) | 2018-03-12 | 2023-06-14 | 삼성전자주식회사 | 고 대역폭 메모리 장치 및 이 장치를 포함하는 시스템 장치 |
US10996885B2 (en) | 2018-03-12 | 2021-05-04 | Samsung Electronics Co., Ltd. | High bandwidth memory device and system device having the same |
TWI780696B (zh) * | 2021-05-10 | 2022-10-11 | 創鑫智慧股份有限公司 | 查找表壓縮方法與查找表讀取方法及其計算設備、主機與裝置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559450A (en) * | 1995-07-27 | 1996-09-24 | Lucent Technologies Inc. | Field programmable gate array with multi-port RAM |
CN1193783A (zh) * | 1997-03-17 | 1998-09-23 | 三菱电机株式会社 | 存储器卡 |
CN1708809A (zh) * | 2002-08-29 | 2005-12-14 | 皇家飞利浦电子股份有限公司 | 具有互连的数据存储设备的可重配置电子设备 |
CN101162441A (zh) * | 2007-11-09 | 2008-04-16 | 华为技术有限公司 | 数据的存取装置和方法 |
CN101751980A (zh) * | 2008-12-17 | 2010-06-23 | 中国科学院电子学研究所 | 基于存储器知识产权核的嵌入式可编程存储器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781480A (en) * | 1997-07-29 | 1998-07-14 | Motorola, Inc. | Pipelined dual port integrated circuit memory |
US6396302B2 (en) * | 1999-02-25 | 2002-05-28 | Xilinx, Inc. | Configurable logic element with expander structures |
US20080024165A1 (en) * | 2006-07-28 | 2008-01-31 | Raminda Udaya Madurawe | Configurable embedded multi-port memory |
-
2011
- 2011-11-07 CN CN201110348281.6A patent/CN102436427B/zh not_active Expired - Fee Related
-
2012
- 2012-11-07 US US13/671,174 patent/US20130346706A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559450A (en) * | 1995-07-27 | 1996-09-24 | Lucent Technologies Inc. | Field programmable gate array with multi-port RAM |
CN1193783A (zh) * | 1997-03-17 | 1998-09-23 | 三菱电机株式会社 | 存储器卡 |
CN1708809A (zh) * | 2002-08-29 | 2005-12-14 | 皇家飞利浦电子股份有限公司 | 具有互连的数据存储设备的可重配置电子设备 |
CN101162441A (zh) * | 2007-11-09 | 2008-04-16 | 华为技术有限公司 | 数据的存取装置和方法 |
CN101751980A (zh) * | 2008-12-17 | 2010-06-23 | 中国科学院电子学研究所 | 基于存储器知识产权核的嵌入式可编程存储器 |
Non-Patent Citations (1)
Title |
---|
范庆辉 等: "嵌入式系统双口存储器应用研究", 《计算机工程与设计》, vol. 29, no. 12, 30 June 2008 (2008-06-30), pages 3085 - 3087 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2767980A1 (en) * | 2012-05-28 | 2014-08-20 | Brocade Communications Systems, Inc. | Two-port memory implemented with single-port memory blocks |
CN103455281A (zh) * | 2012-05-30 | 2013-12-18 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
CN103455281B (zh) * | 2012-05-30 | 2018-01-09 | 博科通讯系统有限公司 | 由单端口存储器块实现的两端口存储器 |
CN103594110A (zh) * | 2012-08-15 | 2014-02-19 | 上海华虹集成电路有限责任公司 | 替代双端口静态存储器的存储器结构 |
CN103594110B (zh) * | 2012-08-15 | 2017-09-15 | 上海华虹集成电路有限责任公司 | 替代双端口静态存储器的存储器结构 |
CN103309626A (zh) * | 2013-07-03 | 2013-09-18 | 盛科网络(苏州)有限公司 | 实现网络芯片多读写端口存储器的方法及相应存储器 |
CN103401812B (zh) * | 2013-08-12 | 2017-03-15 | 盛科网络(苏州)有限公司 | 基于2组报文处理引擎的报文处理方法及装置 |
CN104484128A (zh) * | 2014-11-27 | 2015-04-01 | 盛科网络(苏州)有限公司 | 基于一读一写存储器的多读多写存储器及其实现方法 |
CN104484129A (zh) * | 2014-12-05 | 2015-04-01 | 盛科网络(苏州)有限公司 | 一读一写存储器、多读多写存储器及其读写方法 |
CN105373348A (zh) * | 2015-10-23 | 2016-03-02 | 上海新储集成电路有限公司 | 一种混合内存的硬件实现系统及方法 |
CN105373348B (zh) * | 2015-10-23 | 2018-06-29 | 上海新储集成电路有限公司 | 一种混合内存的硬件实现系统及方法 |
CN107357551A (zh) * | 2016-05-10 | 2017-11-17 | 成都海存艾匹科技有限公司 | 用于实现至少两类函数的处理器 |
CN107357551B (zh) * | 2016-05-10 | 2021-01-26 | 成都海存艾匹科技有限公司 | 用于实现至少两类函数的处理器 |
US10754584B2 (en) | 2016-07-28 | 2020-08-25 | Centec Networks (Su Zhou) Co., Ltd. | Data processing method and system for 2R1W memory |
CN108984148A (zh) * | 2018-06-13 | 2018-12-11 | 浙江大华技术股份有限公司 | 一种基于同步fifo存储器的数据存储的方法及存储器 |
CN108984148B (zh) * | 2018-06-13 | 2020-11-06 | 浙江芯昇电子技术有限公司 | 一种基于同步fifo存储器的数据存储的方法及存储器 |
CN113254373A (zh) * | 2021-06-16 | 2021-08-13 | 上海矽久微电子有限公司 | 支持同时读写的类双口存储器实现方法、类存储器及芯片结构 |
Also Published As
Publication number | Publication date |
---|---|
CN102436427B (zh) | 2014-10-08 |
US20130346706A1 (en) | 2013-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102436427B (zh) | 一种数据读写方法和存储设备 | |
US8954648B2 (en) | Memory device and operating method thereof | |
CN102331974B (zh) | 用于处理器主存储器的持久存储器 | |
US8923089B2 (en) | Single-port read multiple-port write storage device using single-port memory cells | |
US20100070688A1 (en) | Flash memory device and method for writing data thereto | |
US20220101896A1 (en) | Data structures with multiple read ports | |
CN105808455B (zh) | 访问内存的方法、存储级内存及计算机系统 | |
US8639891B2 (en) | Method of operating data storage device and device thereof | |
US20100217918A1 (en) | Data storage device and method for accessing flash memory | |
CN103309626A (zh) | 实现网络芯片多读写端口存储器的方法及相应存储器 | |
US7310698B2 (en) | Method and apparatus for extending memory addressing | |
CN103019974A (zh) | 存储器访问处理方法及控制器 | |
EP3038109B1 (en) | Pseudo dual port memory using a dual port cell and a single port cell with associated valid data bits and related methods | |
CN102043729A (zh) | 动态随机访问存储器的内存管理方法及系统 | |
KR20230032052A (ko) | 메모리 컨트롤러 및 메모리 시스템 | |
TWI517170B (zh) | 將在非揮發儲存系統中的資料區及保留區某些損壞位元之位址替換成具有正常位元之位址的方法 | |
US10811074B2 (en) | Storage device and method for operating storage device | |
CN104484129A (zh) | 一读一写存储器、多读多写存储器及其读写方法 | |
CN102024492B (zh) | 伪静态存储器及其写操作与刷新操作的控制方法 | |
CN102024490B (zh) | 伪静态存储器及其读操作与刷新操作的控制方法 | |
CN101178933B (zh) | 一种闪存阵列装置 | |
TWI635391B (zh) | 快閃記憶體以及其管理方法 | |
US6999372B2 (en) | Multi-ported memory cell | |
US8209478B2 (en) | Single-port SRAM and method of accessing the same | |
EP2767980B1 (en) | Two-port memory implemented with single-port memory blocks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141008 Termination date: 20181107 |
|
CF01 | Termination of patent right due to non-payment of annual fee |