CN103413569A - 一读且一写静态随机存储器 - Google Patents
一读且一写静态随机存储器 Download PDFInfo
- Publication number
- CN103413569A CN103413569A CN2013103093395A CN201310309339A CN103413569A CN 103413569 A CN103413569 A CN 103413569A CN 2013103093395 A CN2013103093395 A CN 2013103093395A CN 201310309339 A CN201310309339 A CN 201310309339A CN 103413569 A CN103413569 A CN 103413569A
- Authority
- CN
- China
- Prior art keywords
- data
- sign
- write
- read
- data group
- 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
Landscapes
- Static Random-Access Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供一种一读且一写静态随机存储器,通过设置有N个PT、一个SBT和分别与PT和SBT连接的一个RMWC,在执行读操作时,可以对读目的PT和SBT均执行读操作读取数据,根据优先级确定待读取数据,从而使得每次读取的数据为最新的数据;在执行写操作时,若读目的PT与写目的PT相同时,则将待写入数据写入SBT中,若读目的PT与写目的PT不相同时,则直接将待写入数据存储在写入PT中,从而可以实现专用于RMW的1R1W SRAM,并且还可以降低面积,提高存储密度。
Description
技术领域
本发明实施例涉及存储技术,尤其涉及一种一读且一写静态随机存储器。
背景技术
在芯片设计过程中,静态随机存储器(Static Random Access Memory,简称:SRAM)会被集成在专用集成电路(Application Specific IntegratedCircuit,简称为ASIC)芯片中,用于高速缓存和表项存储,由于一读或一写(1Read or 1 Write,简称为1RW)的SRAM的密度最高,为了节省芯片面积,应尽可能选用1RW的SRAM,但是在芯片设计过程中,需要SRAM可以实现1R1W。
现有技术中通过在芯片中集成2份1RW的SRAM并进行乒乓操作来实现1份一读且一写(1Read and 1 Write,简称:1R1W)的SRAM,也就是当读操作和写操作同时发生时,读操作根据链表优先访问待读取数据所在的那份SRAM,写操作则将待写入数据写入另外一份SRAM,同时更新链表,从而可以使SRAM同时实现1R1W。
然而,现有技术中需要2份SRAM,并且链表较大,从而造成芯片的存储密度较低。
发明内容
本发明实施例提供一种一读且一写静态随机存储器,通过设置有N个PT、一个SBT和分别与PT和SBT连接的一个RMWC,用于实现1R1W,并且提高存储密度。
一方面,本发明实施例提供一种1R1W SRAM,包括:N个主存储器PT、一个选择备份存储器SBT和分别与所述PT和所述SBT连接的一个读改写缓存RMWC,所述N为大于等于2的整数,所述PT为一读或一写1RW的SRAM,所述SBT为1R1W的SRAM,所述RMWC包括M组寄存器,所述M为同一数据被执行读改写操作所经过的节拍数,所述M组寄存器根据先入先出的队列形式组织;在根据读操作命令读取数据时,所述SBT的优先级大于所述PT的优先级;
当接收到读操作命令时,所述读操作命令携带读目的PT标识和读目的偏移地址,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述读目的PT中存储的数据;根据所述读操作命令中的读目的偏移地址,获取所述SBT中存储的第一数据组,所述第一数据组包括数据的标识位、数据所属的PT标识和数据,所述标识位为有效标识或无效标识,并将所述第一数据流组和所述读目的偏移地址以第二数据组存储在所述RMWC的一组队列尾部寄存器中;若所述获取的第一数据组中的数据的标识位为有效标识并且数据所属的标识为读目的PT标识,根据所述SBT的优先级大于所述PT的优先级,确定所述获取出的第一数据组中的数据为待读取数据;若所述获取的第一数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则确定所述获取的读目的PT中存储的数据为待读取数据;
当接收到写操作命令时,所述写操作命令携带写目的PT标识、写目的偏移地址和待写入数据,若所述写目的PT标识与所述读目的PT标识不相同,则根据所述写操作命令中的写目的PT标识和写目的偏移地址,将所述待写入数据写入至所述写目的PT中,根据所述写目的偏移地址,将所述SBT中存储的第一数据组中的标识位由有效标识置为无效标识;若所述RMWC中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将所述第二数据组中的标识位由有效标识置为无效标识;
若所述写目的PT标识与所述读目的PT标识相同,则根据所述写操作命令中的写目的偏移地址,将所述写目的PT和待写入数据以第一数据组存储在所述SBT中;若所述RMWC中存储的第二数据组中偏移地址与所述写目的偏移地址相同,则将所述RMWC中所述存储的第二数据组中数据所属的PT标识和数据分别修改为所述写目的PT标识和待写入数据。
在第一方面的第一种可能实现的方式中,所述根据所述读写目的偏移地址,将所述SBT中存储的第一数据组中的标识位由有效标识置为无效标识之前,还包括:
确定所述RMWC中一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址与所述写目的PT标识和写目的偏移地址相同。
结合第一方面或第一方面的第一种可能实现的方式,在第一方面的第二种可能实现的方式中,若所述写目的PT标识与所述读目的PT标识相同,并且所述RMWC中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与所述写目的PT标识和写目的偏移地址不同,则将所述RMWC中一组队列头部寄存器中第二数据组中的数据转移存储至所述数据所属的PT。
结合第一方面或第一方面的第一种可能实现的方式或第一方面的第二种可能实现的方式,在第一方面的第三种可能实现的方式中,还包括分别与所述PT和所述RMWC连接的搬移缓存MC;所述MC包括至少一组寄存器,在根据读操作命令读取数据时,所述MC的优先级大于所述PT的优先级并且小于所述SBT的优先级;
当接收到所述读操作命令时,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述MC中存储的第二数据组;若所述获取的SBT中存储的第一数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则根据所述MC的优先级小于所述SBT的优先级并且大于所述PT的优先级,确定所述获取的MC中存储的第二数据组中的数据为待读取数据;
当接收到所述写操作命令时,若所述写目的PT标识与所述读目的PT标识不相同,并且所述MC中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同时,将所述MC中存储的第二数据组中的标识位由有效标识置为无效标识;
若所述写目的PT标识与所述读目的PT标识相同,并且所述RMWC中一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址不同,则将所述RMWC中一组队列头部寄存器中存储的第二数据组转移存储至所述MC;
若所述MC中存储的第二数据组中的数据所属的PT标识与所述读目的PT标识不同并且与所述写目的PT标识不同,则将所述MC中存储的第二数据组中的数据转移存储于所述数据所属的PT。
结合第一方面的第三种可能实现的方式,在第一方面的第四种可能实现的方式,所述MC具体包括两组寄存器。
结合第一方面或第一方面的第一种可能实现的方式或第一方面的第二种可能实现的方式或第一方面的第三种可能实现的方式或第一方面的第四可能实现的方式,在第一方面的第五种可能实现的方式中,还包括:分别与所述PT、所述SBT和所述RMWC连接的写数据缓存WC;所述M为同一数据被执行读改写操作所经过的节拍数加1,在根据读操作命令读取数据时,所述WC的优先级大于所述SBT的优先级;所述WC包括至少一组寄存器;
当接收到所述读操作命令时,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述WC中存储的第二数据组,若所述获取的WC中存储的第二数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则根据所述WC的优先级大于所述SBT的优先级,确定所述获取的WC中存储的第二数据组中的数据为待读取数据;
当接收到所述写操作命令时,根据写目的PT标识、写目的偏移地址和待写入数据,生成存储在所述WC中的第二数据组,并将所述生成的第二数据组存储在所述WC中,以便在下一节拍时将所述待写入数据存储至所述写目的PT或者所述SBT。
本发明实施例提供的一读且一写静态随机存储器,通过设置有N个PT、一个SBT和分别与PT和SBT连接的一个RMWC,在执行读操作时,可以对读目的PT和SBT均执行读操作读取数据,根据优先级确定待读取数据,从而使得每次读取的数据为最新的数据;在执行写操作时,若读目的PT与写目的PT相同时,则将待写入数据写入SBT中,若读目的PT与写目的PT不相同时,则直接将待写入数据存储在写入PT中,从而可以实现专用于RMW的1R1W SRAM,并且还可以降低面积,提高存储密度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一读且一写静态随机存储器实施例一的结构示意图;
图2为基于图1所示的一读且一写静态随机存储器的读操作方法的流程图;
图3为基于图1所示的一读且一写静态随机存储器的写操作方法的流程图;
图4为本发明一读且一写静态随机存储器实施例二的结构示意图;
图5为基于图4所示的一读且一写静态随机存储器的读操作方法的流程图;
图6为基于图4所示的一读且一写静态随机存储器的写操作方法的流程图;
图7为本发明一读且一写静态随机存储器实施例三的结构示意图;
图8为基于图7所示的一读且一写静态随机存储器的读操作方法的流程图;
图9为基于图7所示的一读且一写静态随机存储器的写操作方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一读且一写静态随机存储器实施例一的结构示意图,如图1所述,本实施例的SRAM可以设置在芯片中,应用于芯片执行读改写操作的场景中,即芯片将存储在该SRAM中数据进行读取,然后对读取的数据进行修改,最后将修改后的数据存储在芯片的该SRAM中。
本实施例的SRAM包括N个主存储器(Primay Table,简称:PT)11、一个选择备份存储器(Select Backup Table,简称:SBT)12以及分别与PT11和SBT12连接的一个读改写缓存(Read Modify Write Cache,简称:RMWC)13,所述N为大于等于2的整数,PT11为1RW的SRAM,SBT12为1R1W的SRAM,RMWC13包括M组寄存器,M为同一数据被执行读改写操作所经过的节拍数,M组寄存器根据先入先出的队列形式组织;在根据读操作命令读取数据时,SBT12的优先级大于PT11的优先级。
需要说明的是,1RW的SRAM是指在同一时刻只能根据读操作命令执行读操作或根据写操作命令执行写操作的SRAM。可选地,每个PT11的深度和宽度均相等。1R1W的SRAM是指在同一时刻即可以根据读操作命令执行读操作也可以根据写操作命令执行写操作的SRAM。可选地,SBT12与PT11具有相同的深度,SBT12的宽度大于PT11的宽度。
当接收到读操作命令时,所述读操作命令携带读目的PT标识和读目的偏移地址,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述读目的PT中存储的数据;根据所述读操作命令中的读目的偏移地址,获取SBT12中存储的第一数据组,所述第一数据组包括数据的标识位、数据所属的PT标识和数据,所述标识位为有效标识或无效标识,并将所述第一数据流组和所述读目的偏移地址以第二数据组存储在RMWC13的一组队列尾部寄存器中;若所述获取的第一数据组中的数据的标识位为有效标识并且数据所属的标识为读目的PT标识,则根据SBT12的优先级大于PT11的优先级,确定所述获取出的第一数据组中的数据为待读取数据;若所述获取的第一数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则确定所述获取的读目的PT中存储的数据为待读取数据;
当接收到写操作命令时,所述写操作命令携带写目的PT标识、写目的偏移地址和待写入数据,若所述写目的PT标识与所述读目的PT标识不相同,则根据所述写操作命令中的写目的PT标识和写目的偏移地址,将所述待写入数据写入至所述写目的PT中,根据所述读写目的偏移地址,将SBT12中存储的第一数据组中的标识位由有效标识置为无效标识;若RMWC13中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将所述第二数据组中的标识位由有效标识置为无效标识;
若所述写目的PT标识与所述读目的PT标识相同,则根据所述写操作命令中的写目的偏移地址,将所述写目的PT和待写入数据以第一数据组存储在SBT12中;若RMWC13中存储的第二数据组中偏移地址与所述写目的偏移地址相同,将RMWC13中所述存储的第二数据组中的数据所属的PT标识和数据分别修改为所述写目的PT标识和待写入数据。
本实施例中,每个PT11的深度和宽度相等表示每个PT11的存储大小均相同,即每个PT11具有相同的偏移地址,每个偏移地址所对应的存储区域存储的数据格式相同,同时每个PT11均具有区别其它PT11的PT标识。
基于图1所示的1R1W SRAM,下面对数据的读操作和写操作进行详细介绍。
图2为基于图1所示的一读且一写静态随机存储器的读操作方法的流程图,如图2所示,本实施例的方法可以包括:
步骤101、接收读操作命令。
本实施例中,首先接收到读操作命令,获取读操作命令携带的读目的PT标识和读目的偏移地址,具体地,对接收读操作命令的接口进行地址解码,将解码后地址中的高位地址作为读目的PT标识,该读目的PT标识可以用于指示读目的PT,将解码后地址中的低位地址作为读目的偏移地址,该读目的偏移地址可以用于指示在读目的PT中的偏移地址。
步骤102、根据读操作命令从PT中读取数据。
本实施例中,根据读操作命令获取读目的PT标识和读目的偏移地址后,对读目的PT执行读操作,即根据读目的PT标识确定读目的PT,根据读目的偏移地址从确定的读目的PT中该读目的偏移地址所对应的存储区域中读取数据,本步骤的实现如图1所示的EX_rd_PT和PT_data。
步骤103、根据读操作命令从SBT中读取第一数据组。
本实施例中,根据读操作命令获取读目的PT标识和读目的偏移地址后,对SBT执行读操作,即根据读目的偏移地址从SBT中该读目的偏移地址所对应的存储区域中获取第一数据组,第一数据组包括数据的标识位、数据所属的PT标识和数据,该标识位可以为有效标识也可以为无效标识;本实施例中,SBT12与PT11具有相同的深度但宽度大于PT11的宽度表示SBT12的存储大小略大于PT11,即SBT12与PT11具有相同的偏移地址,不同的是,SBT12的偏移地址所对应的存储区域存储的是第一数据组,如图1所示,SBT12中存储的第一数据组包括数据的标识位(V)、数据所属的PT标识(PTX)和数据(data),第一数据组与PT11所存储的数据相比增加了数据的标识位和数据所属的PT标识。本步骤的实现如图1所示的EX_rd_SBT和SBT_data来实现。
需要说明的是,步骤102可以在步骤103之后执行,也可以与步骤103同时执行。
步骤104、将从SBT中读取的第一数据组存储在RMWC中。
本实施例中,将从SBT12中读取的第一数据组和读目的偏移地址以第二数据组存储在RMWC13的一组队列尾部寄存器中,以便与本次读操作读取的数据经过修改之后再执行写操作时使用,具体如何使用详见下面所述的图3所示的实施例中的相关记载,其中,第二数据组包括数据的标识位、数据所属的PT标识、偏移地址和数据,如图1所示,RMWC13中每个寄存器存储的第二数据组包括数据的标识位(V)、数据所属的PT标识(PTX)、偏移地址(addr)和数据(data)。本实施例中RMWC根据先入先出队列设置有读指针和写指针,写指针指向的一组寄存器称为一组队列尾部寄存器,在从SBT12中读取的第一数据组存储在RMWC13的一组队列尾部寄存器之后,写指针指向队列的下一组寄存器。本步骤的实现如图1所示的SBT_mv_RMWC。
步骤105、根据SBT的优先级大于PT的优先级,确定待读取的数据。
本实施例中,根据SBT12的优先级大于PT11的优先级,确定待读取的数据,由于SBT12的优先级大于PT11的优先级,先确定从SBT12中读取的第一数据组中的标识位为有效标识还是无效标识,当确定第一数据组中的标识位为有效标识时,即说明第一数据组中的数据为有效数据,然后再判断第一数据组中的数据所属的PT标识是否为读目的PT标识,若是,则将第一数据组中的数据作为待读取数据,因为第一数据组中的数据优于从读目的PT中读取的数据,若否,则将从读目的PT中读取的数据作为待读取数据,因为此时第一数据组中的数据不属于读目的PT;当确定第一数据组的标识位为无效标识时,即说明第一数据组中的数据为无效数据,则可以将从读目的PT中读取的数据作为待读取数据;最后将确定的待读取数据读取出去。需要说明的是,接收读操作命令的同时也接收写操作命令,但是读操作的优先级高于写操作,所以根据读操作命令直接执行读操作不受写操作的干扰。
需要说明的是,步骤104可以在步骤105之后执行,也可以与步骤105同时执行。
图3为基于图1所示的一读且一写静态随机存储器的写操作方法的流程图,如图3所示,本实施例的方法可以包括:
步骤201、接收写操作命令。
本实施例中,首先接收到写操作命令,获取写操作命令携带写目的PT标识、写目的偏移地址和待写入数据,假设当前节拍接收到写操作命令,则待写入数据为根据前M个节拍接收的读操作命令所读取的数据经过修改之后的数据,具体地,对接收写操作命令的接口进行地址解码,将解码后地址中的高位地址作为写目的PT标识,该写目的PT标识可以用于指示写目的PT,将解码后地址中的低位地址作为写目的偏移地址,该写目的偏移地址可以用于指示在写目的PT中的偏移地址。需要说明的是,接收写操作命令的同时也接收读操作命令,但是读操作的优先级高于写操作,所以根据写操作命令执行写操作时受读操作的影响,因此需要执行步骤202。
步骤202、判断读操作和写操作的PT是否存在冲突。
本实施例中,根据写操作命令获取到写目的PT标识和写目的偏移地址之后,判断写目的PT是否被执行读操作,即判断此时读操作命令中携带的读目的PT标识是否与写操作命令中携带的写目的PT标识相同,若相同,则说明读操作和写操作的PT存在冲突,因为PT11为1RW SRAM,此时写操作不能将待写入数据直接写入至写目的PT中,所以可以执行步骤203,若不相同,则说明读操作和写操作的PT不存在冲突,此时写目的PT没有被执行读操作,因此可以直接对写目的PT执行写操作,即可以执行步骤205。
步骤203、将待写入数据写入SBT中。
本实施例中,在判断出读操作和写操作的PT存在冲突时,不能将待写入数据直接写入至写目的PT中,所以需要将待写入数据写入至SBT12,由于SBT12中每个偏移地址所对应的存储区域是以第一数据组的形式存储数据的,所以可以根据写操作命令中的写目的PT标识和待写入数据生成第一数据组,所生成的第一数据组包括当数据的有效标识、写目的PT标识和待写入数据,然后根据写操作命令中的写目的偏移地址,将上述所生成的第一数据组存储在SBT12中,也即,将包括上述生成的第一数据组存储在SBT中写目的偏移地址所对应的存储区域中,本步骤的实现如图1所示的EX_wr_SBT。
步骤204、若RMWC中第二数据组中偏移地址与写目的偏移地址相同,则将该第二数据组中的数据所属的PT标识和数据分别修改为写目的PT标识和待写入数据。
本实施例中,由于RMWC13中存储的第二数据组均与SBT12中存储的第一数据组对应,即根据第二数据组中的偏移地址,RMWC13中存储的第二数据组应该包括SBT12中第二数据组中的偏移地址对应的第一数据组。由于SBT12中写目的偏移地址所对应的第一数据组中的数据更新为待写入数据,第一数据组中的数据所属的PT标识更新为写目的PT标识,所以还需要根据写目的偏移地址,将RMWC13中存储的第二数据组(除了偏移地址)更新为与第一数据组相同。因此,若RMWC13中存储的第二数据组的偏移地址与写目的偏移地址相同,确定出写目的偏移地址对应的第二数据组,然后将第二数据组中的数据所属的PT标识修改为写目的PT标识,并且将第二数据组中的数据修改为待写入数据,保证RWMC13中存储的第二数据组为SBT12中存储的第一数据组的映射,以使RWMC13中存储的数据与SBT12中存储的数据一致,本步骤的实现如图1所示的EX_wr_RMWC。
进一步地,本实施例在步骤204之前还可以执行如下步骤:判断RMWC13中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址是否相同,若相同,则执行步骤204,若不相同,则将RMWC13中一组队列头部寄存器中第二数据组中的数据写入至该数据所属的PT中,即可以通过图1所示的RMWC_wr_PT来实现,同时还执行步骤204。
本实施例中,为了防止执行步骤203和步骤204之后RMWC13中第二数据组中的数据所属的PT不是写目的PT时根据先入先出队列组织时将该第二数据组中的数据置空,而无法将该第二数据组中的数据写入至所属的PT中,还需要对RMWC13的一组队列头部寄存器中的第二数据组中的数据所属的PT标识是否为写目的PT标识进行判断,若是,则执行步骤204,若否,则需要将该第二数据组中的数据写入至该数据所属的PT中并且还执行步骤204。这是因为本实施例中设置的RMWC13中含有M组寄存器,M为同一数据被执行读改写操作所经过的节拍数,因此在接收到写操作命令的这一节拍时,RMWC13根据先入先出的队列形式对M组寄存器进行组织,读指针指向的一组寄存器称为一组队列头部寄存器,此时RMWC的一组队部头部寄存器所存储的第二数据组为在执行与该写操作命令M节拍前的读操作命令时从SBT12中读取出的第一数据组所生成的,需要说明的是,该写操作命令与M节拍前读操作命令均为相对于对同一数据执行操作的命令。
步骤205、将待写入数据写入至写目的PT中。
本实施例中,在判断出读操作和写操作的PT不存在冲突时,即读目的PT与写目的PT不是同一个PT,说明没有对写目的PT执行读操作,此时可以直接对PT执行写操作,即将待写入数据直接写入至写目的PT的写目的偏移地址所对应的存储区域,本步骤的实现如图1所示的EX_wr_PT。
步骤206、将SBT中写目的偏移地址所对应的第一数据组中数据的标识位由有效标识置为无效标识。
本实施例中,由于已经将最新的待写入数据写入至写目的PT中了,由于根据读操作命令读取数据时,SBT12的优先级大于PT11,所以为了保证在后续读操作命令中包括该写目的PT和该写目的偏移地址时,读取是的最新的数据,所以可以根据写目的偏移地址,将SBT12中存储的第一数据组中的标识位由有效标识置为无效标识,也即,将SBT12中写目的偏移地址所对应的第一数据组的标识位由有效标识置为无效标识,以说明第一数据组中的数据为无效数据,即该第一数据组的数据不能根据读操作命令作为待读取数据进行读取,从而说明有效数据存储在PT11中。例如标识位为1时可以表示的是有效标识,标识位为0时可以表示的是无效标识。
步骤207、若RMWC中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将该第二数据组中数据的标识位由有效标识置为无效标识。
本实施例中,由于RMWC13中存储的第二数据组均与SBT12中存储的数据对应,即根据第二数据组中的偏移地址,RMWC13中存储的第二数据组应该包括SBT12中第二数据组中的偏移地址对应的第一数据组。由于SBT12中写目的偏移地址所对应的第一数据组中数据的标识位由有效标识被置为无效标识,所以还需要根据写目的偏移地址,将RMWC13中存储的第二数据组(除了偏移地址)更新为与第一数据组相同。因此,若RMWC13中存储的第二数据组的偏移地址与写目的偏移地址相同,确定出写目的偏移地址对应的第二数据组,然后将第二数据组中数据的标识位由有效标识置为无效标识,保证RWMC13中存储的第二数据组为SBT12中存储的第一数据组的映射,以使RWMC13中存储的数据与SBT12中存储的数据一致。
需要说明的是,步骤206还可以与步骤207同时执行,也还可以在步骤207之后执行。
进一步地,为了保证将数据的标识位由有效标识置为无效标识的第一数据组中的数据所属的PT标识为写目的PT标识,在执行步骤206之前还可以执行如下步骤:
判断RMWC13中一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址是否为写目的PT标识和写目的偏移地址,若是,则执行步骤206和步骤207,否则结束。
本实施例中,为了防止将偏移地址为写目的偏移地址,但数据所属的PT标识不为写目的PT标识的第一数据组中数据的标识位由有效标识置为无效标识,即防止将SBT12中第一数据组中其它PT的有效数据置为无效,还需要对SBT12中写目的偏移地址对应的第一数据组中的数据所属的PT标识是否为写目的PT标识进行判断,由于读写操作是同时执行的,此时SBT12正在被执行读操作,为了避免在写操作时也对SBT12进行读取数据,可以从RMWC13中去确定SBT12中写目的偏移地址所对应的第一数据组,这是因为RMWC13中存储的数据与SBT12中存储的数据一致,可以避免在写操作时去SBT12中读取数据。由于本实施例中设置的RMWC13中含有M组寄存器,M为同一数据被执行读改写操作所经过的节拍数,因此在接收到写操作命令的这一节拍时,RMWC13根据先入先出的队列形式对M组寄存器进行组织,此时位于RMWC13队列头部的一组寄存器所存储的第二数据组为在执行与该写操作命令M节拍前的读操作命令时从SBT12中读取出的第一数据组所生成的,需要说明的是,该写操作命令与M节拍前读操作命令均为相对于对同一数据执行操作的命令。
因此,本实施例中可以直接判断RMWC13中的一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址是否与写目的PT标识和写目的偏移地址相同,若相同,则说明SBT12中写目的偏移地址所对应的第一数据组中的数据所属的PT为写目的PT,则执行步骤206和步骤207。若不相同,则说明SBT12中写目的偏移地址所对应的第一数据组中的数据所属的PT不是写目的PT,然后结束。
值得注意的是,由于每一个读操作都需要对SBT12执行读操作来读取读目的偏移地址所对应的第一数据组,而每一个写操作也都需要确定SBT12中写目的偏移地址所对应的第一数据组中的数据所属的PT标识是否为写目的PT标识,以确定是否需要将SBT12中写目的偏移地址所对应的第一数据组进行更新或是否需要将SBT12中写目的偏移地址所对应的第一数据组中的数据写入至PT11中,在这种情况下如果没有RMWC13,则同时进行读写操作时会同时对SBT12执行读操作,这样则需要再多引入一个SBT12,即一共需要两个SBT12来实现,从而造成整个SRAM的面积增加。根据读-改-写的规律,对数据进行改写之前的若干个节拍,必然有对该数据对应的读操作,因此利用这一特性,在读操作时,可以将SBT12中读取出来的第一数据组备份在RMWC13中,供后续与该读操作对应的写操作使用,当写操作时,直接对RMWC13中的第二数据组进行判断,以确定是否需要对SBT12中的数据进行更新或搬移,从而使得面积资源代价较小。
需要说明的是,本实施例利用N个1RW SRAM、1个2RW或1R1W SRAM用于1R1W SRAM,在相同存储能力下,本实施例的1R1W SRAM所用的面积为1+3/N(假设N个1RW SRAM的面积为1,并且2RW或1R1W SRAM的面积为1RW SRAM面积的1/3),再加上少许寄存器和连接的面积,可以有效地降低面积,提高存储密度,并且本实施例的1R1W SRAM的读延时并不增加。优选地,N可以取值为8或16。
本发明实施例提供的1R1W SRAM,通过设置有N个PT、一个SBT和分别与PT和SBT连接的一个RMWC,在执行读操作时,可以对读目的PT和SBT均执行读操作读取数据,根据PT的优先级和SBT的优先级确定待读取数据,从而使得每次读取的数据为最新的数据;在执行写操作时,若读目的PT与写目的PT相同时,则将待写入数据写入SBT中,若读目的PT与写目的PT不相同时,则直接将待写入数据存储在写入PT中,从而可以实现专用于RMW的1R1W SRAM,并且还可以降低面积,提高存储密度。
图4为本发明一读且一写静态随机存储器实施例二的结构示意图,如图4所示,本实施例的1R1W SRAM在图1所示1R1W SRAM结构的基础上,进一步地,还可以包括:分别与PT11和RMWC13连接的搬移缓存(MoveCache,简称为MC)14,在根据读操作命令读取数据时,MC14的优先级大于PT11的优先级并且小于SBT12的优先级;MC14包括至少一组寄存器,用于存储RMWC13中第二数据组。
当接收到所述读操作命令时,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取MC14中存储的第二数据组,若所述获取的SBT12中存储的第一数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则根据MC14的优先级小于SBT12的优先级并且大于PT11的优先级,确定所述获取的MC14中存储的第二数据组中的数据为待读取数据。
当接收到所述写操作命令时,若所述写目的PT标识与所述读目的PT标识不相同,并且MC14中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同时,将MC14中存储的第二数据组中的标识位由有效标识置为无效标识;
若所述写目的PT标识与所述读目的PT标识相同,并且RMWC13中一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址不同,则将RMWC13中一组队列头部寄存器中存储的第二数据组转移存储至MC14;
若MC14中存储的第二数据组中的数据所属的PT标识与所述读目的PT标识不同并且与所述写目的PT标识不同,则将MC14中存储的第二数据组中的数据转移存储于所述数据所属的PT。
优选地,MC14具体包括两组寄存器。
基于图4所示的1R1W SRAM,下面对数据的读操作和写操作进行详细介绍。
图5为基于图4所示的一读且一写静态随机存储器的读操作方法的流程图,如图5所示,本实施例的方法可以包括:
步骤301、接收读操作命令。
步骤302、根据读操作命令从PT中读取数据。
步骤303、根据读操作命令从SBT中读取第一数据组。
步骤304、将从SBT中读取的第一数据组存储在RMWC中。
本实施例中,步骤301-304的具体实现过程与图2所示读操作方法实施例中步骤101-步骤104的具体实现过程类似,详细过程可以参照步骤101-步骤104中的记载,本实施例在此不再赘述。
步骤305、根据读操作命令从MC中获取第二数据组。
本实施例中,根据读操作命令中的读目的PT标识和读目的偏移地址,获取MC14中存储的第二数据组,也即从MC14中获取所存储的第二数据组(如图3所示),如图3所示的EX_rd_MC和MC_data。
需要说明的是,步骤305可以在步骤302或步骤303之后执行,也可以与步骤302或步骤303同时执行。
步骤306、根据MC的优先级大于PT的优先级并且小于SBT的优先级,确定待读取的数据。
本实施例中,根据MC14的优先级大于PT11的优先级,并且MC14的优先级小于SBT12的优先级可以确定优先级的顺序为:SBT12大于MC14大于PT11,由于SBT12的优先级最大,先确定SBT12中读取的第一数据组中数据的标识位为有效标识还是无效标识,当确定第一数据组中数据的标识位为有效标识时,即说明第一数据组中的数据为有效数据,然后再判断第一数据组中的数据所属的PT标识是否为读目的PT标识,若是,则将第一数据组中的数据作为待读取数据,因为第一数据组中的数据优于从MC14中获取的第二数据组中的数据和读目的PT中读取的数据,若否,则判断MC14中获取的第二数据组中数据的标识位为有效标识还是无效标识;或者当确定SBT12中读取的第一数据组中的标识位为无效标识时,即说明第一数据组中的数据为无效数据,则需要判断MC14中获取的第二数据组中数据的标识位为有效标识还是无效标识。
当确定MC14中获取的第二数据组中数据的标识位为有效标识时,即说明第二数据组中的数据为有效数据,然后再判断第二数据组中的数据所属的PT标识是否为读目的PT标识,若是,则将第二数据组中的数据作为待读取数据,因为第二数据组中的数据优于从读目的PT中读取的数据,若否,则将从读目的PT中读取的数据作为待读取数据,因为此时第二数据组中的数据不属于读目的PT;当确定第二数据组中数据的标识位为无效标识时,即说明第二数据组中的数据为无效数据,则可以将从读目的PT中读取的数据作为待读取数据;最后将确定的待读取数据读取出去。需要说明的是,接收读操作命令的同时也接收写操作命令,但是读操作的优先级高于写操作,所以根据读操作命令直接执行读操作不受写操作的干扰。
图6为基于图4所示的一读且一写静态随机存储器的写操作方法的流程图,如图6所示,本实施例的方法可以包括:
步骤401、接收写操作命令。
步骤402、判断读操作和写操作的PT是否存在冲突。
本实施例中,若存在冲突,则执行步骤403,若不存在冲突则执行步骤408。
步骤403、将待写入数据写入SBT中。
本实施例中,步骤401-403的具体实现过程与图3所示写操作方法实施例中步骤201-步骤203的具体实现过程类似,详细过程可以参照步骤201-步骤203中的记载,本实施例在此不再赘述。
步骤404、判断RMWC中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址是否相同。若不相同,则执行步骤405-步骤407,若相同则执行步骤407。
本实施例中,为了防止执行步骤405和步骤406之后RMWC13中第二数据组中的数据所属的PT不是写目的PT时根据先入先出队列组织时将该第二数据组中的数据置空,而无法将该第二数据组中的数据写入至所属的PT中,还需要对RMWC13的一组队列头部寄存器中的第二数据组中的数据所属的PT标识是否为写目的PT标识进行判断,若是,则直接执行步骤407,若否,则需要将该第二数据组中的数据写入至MC14中,即执行步骤405-407。
步骤405、将RMWC中一组队列头部寄存器中第二数据组中的数据写入至MC中。
本实施例中,RMWC13中寄存器是以第二数据组的形式存储数据,MC14中的寄存器也是以第二数据组的形式存储数据,因此可以直接将RMWC13中一组队列头部寄存器中第二数据组中的数据写入至MC14中,此步骤的实现如图3所示的RMWC_mv_MC。
步骤406、将MC中的第二数据组中的数据写入至该数据所属的PT中。
本实施例中,在将RMWC13的一组队列头部寄存器中的第二数据组写入至MC14中之后,再判断MC14中该第二数据组中的数据所属的PT是否正在被执行读操作或写操作,即是否正根据读操作命令对该二数据组中的数据所属的PT执行读操作或者是否根据写操作命令将待写入数据写入至该第二数据组中的数据所属的PT,若判断出MC14中该第二数据组中的数据所属的PT正在被执行读操作或写操作,则等到下一节拍(即根据下一节拍的读操作命令和写操作命令)将MC14中的第二数据组中的数据写入至该数据所属的PT,所以MC14中至少包括一个寄存器用于存储第二数据组;若判断出MC14中该第二数据组中的数据所属的PT没有被执行读操作或写操作,则在此节拍时将该第二数据组中的数据写入至该数据所属的PT中。优选地,在同一节拍时,读操作和写操作可以分别执行不同的PT11,因此,MC14中设置有两组寄存器就可以满足使用要求,此步骤的实现可以如图3所示的MC_wr_PT。
步骤407、若RMWC中第二数据组中偏移地址与写目的偏移地址相同,则将该第二数据组中的数据所属的PT标识和数据分别修改为写目的PT标识和待写入数据。
本实施例中,步骤407的具体实现过程与图2所示读操作方法实施例中步骤204的具体实现过程类似,详细过程可以参照步骤204中的记载,本实施例在此不再赘述。
需要说明的是,步骤407还可以与步骤406同时执行,还可以在步骤406之后执行。
步骤408、将待写入数据写入至写目的PT中。
本实施例中,步骤408的具体实现过程与图2所示读操作方法实施例中步骤205的具体实现过程类似,详细过程可以参照步骤205中的记载,本实施例在此不再赘述。
409、判断RMWC中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址是否相同。若是,则执行步骤410-412,若不是则执行步骤412。
本实施例中,为了防止将偏移地址为写目的偏移地址,但数据所属的PT标识不为写目的PT标识的第一数据组中数据的标识位由有效标识置为无效标识,即防止将SBT12中第一数据组其它PT的有效数据置为无效,还可以对SBT12中写目的偏移地址对应的第一数据组中的数据所属的PT标识是否为写目的PT标识进行判断,由于读写操作是同时执行的,此时SBT12正在被执行读操作,为了避免在写操作时也对SBT12进行读取数据,可以从RMWC13中去确定SBT12中写目的偏移地址所对应的第一数据组,这是因为RMWC13中存储的数据与SBT12中存储的数据一致,可以避免在写操作时去SBT12中读取数据。
因此,本实施例中直接判断RMWC13中的一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址是否与写目的PT标识和写目的偏移地址相同,若相同,则说明SBT12中写目的偏移地址所对应的第一数据组中的数据所属的PT为写目的PT,则执行步骤410-412。若不相同,则说明SBT12中写目的偏移地址所对应的第一数据组中的数据所属的PT不是写目的PT,则执行步骤412。
步骤410、将SBT中写目的偏移地址所对应的第一数据组中数据的标识位由有效标识置为无效标识。
步骤411、若RMWC中第二数据组的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将该第二数据组中的标识位由有效标识置为无效标识。
本实施例中,步骤410和步骤411的具体实现过程与图2所示读操作方法实施例中步骤206和步骤207的具体实现过程类似,详细过程可以参照步骤206和步骤207中的记载,本实施例在此不再赘述。
步骤412、若MC中第二数据组的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将该第二数据组中数据的标识位由有效标识置为无效标识。
本实施例中,将SBT12中写目的偏移地址所对应的第一数据组中数据的标识位由有效标识置为无效标识,以及根据RMWC13中第二数据组的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,将RMWC13中该第二数据组中数据的标识位由有效标识置为无效标识之后,根据MC14中第二数据组的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,将该第二数据组中数据的标识位由有效标识置为无效标识,以表示有效数据存储在PT11中。
本发明实施例提供的1R1W SRAM,通过设置有N个PT、一个SBT、分别与PT和SBT连接的一个RMWC、以及分别与PT、RMWC连接的MC,在执行读操作时,可以对读目的PT、SBT和MC均执行读操作读取数据,根据优先级确定待读取数据,从而使得每次读取的数据为最新的数据;在执行写操作时,若读目的PT与写目的PT相同时,则将待写入数据写入SBT中,再经由MC最后写入至PT中,若读目的PT与写目的PT不相同时,则直接将待写入数据存储在写入PT中,从而可以实现专用于RMW的1R1W SRAM,并且还可以降低面积,提高存储密度,由于设置有MC从而使芯片的时序更好,可以让SRAM运行在更高的读写时钟频率下。
图7为本发明一读且一写静态随机存储器实施例三的结构示意图,如图7所示,本实施例的1R1W SRAM在图1或图4所示1R1W SRAM结构的基础上,进一步地,还可以包括:分别与PT11、SBT12和RMWC13连接的写数据缓存(Write Cache,简称为WC)15,所述M为同一数据被执行读改写操作所经过的节拍数加1,在根据读操作命令读取数据时,WC15的优先级大于SBT12的优先级;WC15包括至少一组寄存器。
当接收到所述读操作命令时,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取WC15中存储的第二数据组,若所述获取的WC15中存储的第二数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则根据WC15的优先级大于SBT12的优先级,确定所述获取的WC15中存储的第二数据组中的数据为待读取数据;
当接收到所述写操作命令时,根据写目的PT标识、写目的偏移地址和待写入数据,生成存储在WC15中的第二数据组,并将所述生成的第二数据组存储在WC15中,以便在下一节拍时将所述待写入数据存储至所述写目的PT或者SBT12。
基于图7所示的1R1W SRAM,下面对数据的读操作和写操作进行详细介绍。
图8为基于图7所示的一读且一写静态随机存储器的读操作方法的流程图,如图8所示,本实施例的方法可以包括:
步骤501、接收读操作命令。
步骤502、根据读操作命令从PT中读取数据。
步骤503、根据读操作命令从SBT中读取第一数据组。
步骤504、将从SBT中读取的第一数据组存储在RMWC中。
步骤505、根据读操作命令从MC中获取第二数据组。
本实施例中,步骤501-步骤505的具体实现过程与图5所示读操作方法实施例中步骤301-步骤305的具体实现过程类似,详细过程可以参照步骤301-步骤305中的记载,本实施例在此不再赘述。
步骤506、根据读操作命令从WC中获取第二数据组。
本实施例中,根据读操作命令从WC15中获取所存储的第二数据组(如图4所示),如图4所示的EX_rd_WC和WC_data。
需要说明的是,步骤506可以在步骤502或步骤503或步骤505之后执行,也可以与步骤502或步骤503或步骤505同时执行。
步骤507、根据WC的优先级大于SBT的优先级,确定待读取的数据。
本实施例中,根据WC15的优先级大于SBT12的优先级,可以确定优先级的顺序为:WC15的优先级大于SBT12的优先级,SBT12的优先级大于MC14的优先级,以及MC14的优先级大于PT11的优先级,由于WC15的优先级最大,先确定WC15中读取的第二数据组中数据的标识位为有效标识还是无效标识,当确定WC15中读取的第二数据组中数据的标识位为有效标识时,即说明该第二数据组中的数据为有效数据,然后再判断该第二数据组中的数据所属的PT标识是否为读目的PT标识,若是,则将第二数据组中的数据作为待读取数据,因为第二数据组中的数据优于从SBT12中读取的数据、MC14中获取的第二数据组中的数据和读目的PT中读取的数据;若否,则判断SBT12中获取的第一数据组中的数据的标识位为有效标识还是无效标识;或者当确定WC15中读取的第二数据组中数据的标识位为无效标识时,即说明第一数据组中的数据为无效数据,则需要判断SBT12中读取的第一数据组中数据的标识位为有效标识还是无效标识。
当确定从SBT12中读取的第一数据组中数据的标识位为有效标识时,即说明第一数据组中的数据为有效数据,然后再判断第一数据组中的数据所属的PT标识是否为读目的PT标识,若是,则将第一数据组中的数据作为待读取数据,因为第一数据组中的数据优于从MC14中获取的第二数据组中的数据和读目的PT中读取的数据,若否,则判断MC14中获取的第二数据组中数据的标识位为有效标识还是无效标识;或者当确定SBT12中读取的第一数据组中数据的标识位为无效标识时,即说明第一数据组中的数据为无效数据,则可以判断MC14中获取的第二数据组中数据的标识位为有效标识还是无效标识。
当确定MC14中获取的第二数据组中数据的标识位为有效标识时,即说明第二数据组中的数据为有效数据,然后再判断第二数据组中的数据所属的PT标识是否为读目的PT标识,若是,则将第二数据组中的数据作为待读取数据,因为第二数据组中的数据优于从读目的PT中读取的数据,若否,则将从读目的PT中读取的数据作为待读取数据,因为此时第二数据组中的数据不属于读目的PT;当确定第二数据组中数据的标识位为无效标识时,即说明第二数据组中的数据为无效数据,则可以将从读目的PT中读取的数据作为待读取数据;最后将确定的待读取数据读取出去。需要说明的是,接收读操作命令的同时也接收写操作命令,但是读操作的优先级高于写操作,所以根据读操作命令直接执行读操作不受写操作的干扰。
图9为基于图7所示的一读且一写静态随机存储器的写操作方法的流程图,如图9所示,本实施例的方法可以包括:
步骤601、接收写操作命令。
本实施例中,步骤601的具体实现过程与图6所示写操作方法实施例中步骤401的具体实现过程类似,详细过程可以参照步骤401中的记载,本实施例在此不再赘述。
步骤602、将待写入数据以第二数据组的形式写入至WC中。
本实施例中,在接收到写操作命令后,根据写操作命令将待写入数据以第二数据组的格写入至WC15中,并打拍缓存,打拍缓存即表示如果当前节拍时接收到写操作命令,则在下一节拍的时候(即接收到下一个写操作命令时)再执行步骤603,然后将第二数据组中的待写入数据写入至写目的PT或SBT中。
步骤603、判断读操作和写操作的PT是否有存在冲突。
本实施例中,若存在冲突,则执行步骤604,若不存在冲突则执行步骤608。需要说明的是,假设以步骤601中接收到的写操作命令的时间为第一节拍,第一节拍的下一个节拍为第二节拍,由于将第一节拍接收到的写操作命令中携带的待写入数据打拍缓存至WC15中,在第二节拍时才执行步骤603,因此,在判断读操作和写操作PT是否存在冲突时,是以第二节拍的读操作命令所对应的读操作和第一节拍的写操作命令所对应写操作来进行判断。
步骤604、将待写入数据写入SBT中。
本步骤的实现如图7所示的WC_wr_SBT。
步骤605、判断RMWC中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址是否相同。若不相同,则执行步骤606-步骤608,若相同则执行步骤608。
需要说明的是,假设以步骤601中接收到的写操作命令的时间为第一节拍,第一节拍的下一个节拍为第二节拍,由于将第一节拍接收到的写操作命令中携带的待写入数据打拍缓存至WC15中,在第二节拍时才执行步骤605,因此,为了保证第二节拍时RMWC13中一组队列头部寄存器中的数据与待写入数据对应,则在RMWC13中设置有M个寄存器,本实施例中的M为同一数据被执行读改写操作所经过的节拍数加1。
步骤606、将RMWC中一组队列头部寄存器中第二数据组中的数据写入至MC中。
步骤607、将MC中的第二数据组中的数据写入至该数据所属的PT中。
步骤608、若RMWC中第二数据组中偏移地址与写目的偏移地址相同,则将该第二数据组中的数据所属的PT标识和数据分别修改为写目的PT标识和待写入数据。
本步骤的实现如图7所示的WC_wr_RMWC。
步骤609、将待写入数据写入至写目的PT中。
本步骤的实现如图7所示的WC_wr_PT。
步骤610、判断RMWC中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址是否相同。若是,则执行步骤611-613,若不是则执行步骤613。
步骤611、将SBT中写目的偏移地址所对应的第一数据组中数据的标识位由有效标识置为无效标识。
步骤612、若RMWC中第二数据组的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将该第二数据组中数据的标识位由有效标识置为无效标识。
步骤613、若MC中第二数据组的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将该第二数据组中数据的标识位由有效标识置为无效标识。
本实施例中,步骤603-步骤613的具体实现过程与图6所示写操作方法实施例中步骤402-步骤412的具体实现过程类似,详细过程可以参照步骤402-步骤412中的记载,本实施例在此不再赘述。
本发明实施例提供的1R1W SRAM,通过设置有N个PT、一个SBT、分别与PT和SBT连接的一个RMWC、分别与PT、RMWC连接的MC、以及分别与PT、SBT、RMWC、MC分别连接的WC,在执行读操作时,可以对读目的PT、SBT和MC均执行读操作读取数据,根据优先级确定待读取数据,从而使得每次读取的数据为最新的数据;在执行写操作时,先将待写入数据拍缓存至WC中,然后若读目的PT与写目的PT相同时,则将待写入数据写入SBT中,再经由MC最后写入至PT中,若读目的PT与写目的PT不相同时,则直接将待写入数据存储在写入PT中,从而可以实现专用于RMW的1R1W SRAM,并且还可以降低面积,提高存储密度,由于设置有MC和WC从而使芯片的时序更好,可以让SRAM运行在更高的读写时钟频率下。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (6)
1.一种一读且一写1R1W静态随机存储器SRAM,其特征在于,包括:N个主存储器PT、一个选择备份存储器SBT和分别与所述PT和所述SBT连接的一个读改写缓存RMWC,所述N为大于等于2的整数,所述PT为一读或一写1RW的SRAM,所述SBT为1R1W的SRAM,所述RMWC包括M组寄存器,所述M为同一数据被执行读改写操作所经过的节拍数,所述M组寄存器根据先入先出的队列形式组织;在根据读操作命令读取数据时,所述SBT的优先级大于所述PT的优先级;
当接收到读操作命令时,所述读操作命令携带读目的PT标识和读目的偏移地址,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述读目的PT中存储的数据;根据所述读操作命令中的读目的偏移地址,获取所述SBT中存储的第一数据组,所述第一数据组包括数据的标识位、数据所属的PT标识和数据,所述标识位为有效标识或无效标识,并将所述第一数据流组和所述读目的偏移地址以第二数据组存储在所述RMWC的一组队列尾部寄存器中;若所述获取的第一数据组中的数据的标识位为有效标识并且数据所属的标识为读目的PT标识,则根据所述SBT的优先级大于所述PT的优先级,确定所述获取出的第一数据组中的数据为待读取数据;若所述获取的第一数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则确定所述获取的读目的PT中存储的数据为待读取数据;
当接收到写操作命令时,所述写操作命令携带写目的PT标识、写目的偏移地址和待写入数据,若所述写目的PT标识与所述读目的PT标识不相同,则根据所述写操作命令中的写目的PT标识和写目的偏移地址,将所述待写入数据写入至所述写目的PT中,根据所述写目的偏移地址,将所述SBT中存储的第一数据组中的标识位由有效标识置为无效标识;若所述RMWC中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将所述第二数据组中的标识位由有效标识置为无效标识;
若所述写目的PT标识与所述读目的PT标识相同,则根据所述写操作命令中的写目的偏移地址,将所述写目的PT和待写入数据以第一数据组存储在所述SBT中;若所述RMWC中存储的第二数据组中偏移地址与所述写目的偏移地址相同,则将所述RMWC中所述存储的第二数据组中数据所属的PT标识和数据分别修改为所述写目的PT标识和待写入数据。
2.根据权利要求1所述的SRAM,其特征在于,所述根据所述读写目的偏移地址,将所述SBT中存储的第一数据组中的标识位由有效标识置为无效标识之前,还包括:
确定所述RMWC中一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址与所述写目的PT标识和写目的偏移地址相同。
3.根据权利要求1或2所述的SRAM,其特征在于,若所述写目的PT标识与所述读目的PT标识相同,并且所述RMWC中一组队列头部寄存器中第二数据组中的数据所属的PT标识和偏移地址与所述写目的PT标识和写目的偏移地址不同,则将所述RMWC中一组队列头部寄存器中第二数据组中的数据转移存储至所述数据所属的PT。
4.根据权利要求1-3任意一项所述的SRAM,其特征在于,还包括:分别与所述PT和所述RMWC连接的搬移缓存MC;所述MC包括至少一组寄存器,在根据读操作命令读取数据时,所述MC的优先级大于所述PT的优先级并且小于所述SBT的优先级;
当接收到所述读操作命令时,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述MC中存储的第二数据组;若所述获取的SBT中存储的第一数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则根据所述MC的优先级小于所述SBT的优先级并且大于所述PT的优先级,确定所述获取的MC中存储的第二数据组中的数据为待读取数据;
当接收到所述写操作命令时,若所述写目的PT标识与所述读目的PT标识不相同,并且所述MC中存储的第二数据组中数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址相同,则将所述MC中存储的第二数据组中的标识位由有效标识置为无效标识;
若所述写目的PT标识与所述读目的PT标识相同,并且所述RMWC中一组队列头部寄存器中存储的第二数据组中的数据所属的PT标识和偏移地址与写目的PT标识和写目的偏移地址不同,则将所述RMWC中一组队列头部寄存器中存储的第二数据组转移存储至所述MC;
若所述MC中存储的第二数据组中的数据所属的PT标识与所述读目的PT标识不同并且与所述写目的PT标识不同,则将所述MC中存储的第二数据组中的数据转移存储于所述数据所属的PT。
5.根据权利要求4所述的SRAM,其特征在于,所述MC具体包括两组寄存器。
6.根据权利要求1-5任意一项所述的SRAM,其特征在于,还包括:分别与所述PT、所述SBT和所述RMWC连接的写数据缓存WC;所述M为同一数据被执行读改写操作所经过的节拍数加1,在根据读操作命令读取数据时,所述WC的优先级大于所述SBT的优先级;所述WC包括至少一组寄存器;
当接收到所述读操作命令时,根据所述读操作命令中的读目的PT标识和读目的偏移地址,获取所述WC中存储的第二数据组,若所述获取的WC中存储的第二数据组中的数据的标识位不为有效标识或者数据所属的标识不为读目的PT标识,则根据所述WC的优先级大于所述SBT的优先级,确定所述获取的WC中存储的第二数据组中的数据为待读取数据;
当接收到所述写操作命令时,根据写目的PT标识、写目的偏移地址和待写入数据,生成存储在所述WC中的第二数据组,并将所述生成的第二数据组存储在所述WC中,以便在下一节拍时将所述待写入数据存储至所述写目的PT或者所述SBT。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310309339.5A CN103413569B (zh) | 2013-07-22 | 2013-07-22 | 一读且一写静态随机存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310309339.5A CN103413569B (zh) | 2013-07-22 | 2013-07-22 | 一读且一写静态随机存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103413569A true CN103413569A (zh) | 2013-11-27 |
CN103413569B CN103413569B (zh) | 2016-03-09 |
Family
ID=49606572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310309339.5A Expired - Fee Related CN103413569B (zh) | 2013-07-22 | 2013-07-22 | 一读且一写静态随机存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103413569B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598548A (zh) * | 2016-11-16 | 2017-04-26 | 盛科网络(苏州)有限公司 | 存储单元读写冲突的解决方法及装置 |
CN109144409A (zh) * | 2018-07-11 | 2019-01-04 | 华为技术有限公司 | 数据处理方法及装置、存储介质、数据*** |
CN109617838A (zh) * | 2019-02-22 | 2019-04-12 | 盛科网络(苏州)有限公司 | 多通道报文汇聚共享内存管理方法及*** |
WO2019183849A1 (zh) * | 2018-03-28 | 2019-10-03 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
CN112491986A (zh) * | 2016-02-29 | 2021-03-12 | 华为技术有限公司 | 一种分布式***中命令分发方法、装置及*** |
CN112820343A (zh) * | 2021-02-25 | 2021-05-18 | 记忆科技(深圳)有限公司 | 数据保护方法、装置、计算机设备及存储介质 |
CN113227984A (zh) * | 2018-12-22 | 2021-08-06 | 华为技术有限公司 | 一种处理芯片、方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的***、设备及方法 |
US20110149661A1 (en) * | 2009-12-18 | 2011-06-23 | Rajwani Iqbal R | Memory array having extended write operation |
JP2012118784A (ja) * | 2010-12-01 | 2012-06-21 | Toshiba Corp | データ記憶装置、メモリ制御装置及びメモリ制御方法 |
-
2013
- 2013-07-22 CN CN201310309339.5A patent/CN103413569B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的***、设备及方法 |
US20110149661A1 (en) * | 2009-12-18 | 2011-06-23 | Rajwani Iqbal R | Memory array having extended write operation |
JP2012118784A (ja) * | 2010-12-01 | 2012-06-21 | Toshiba Corp | データ記憶装置、メモリ制御装置及びメモリ制御方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491986A (zh) * | 2016-02-29 | 2021-03-12 | 华为技术有限公司 | 一种分布式***中命令分发方法、装置及*** |
CN112491986B (zh) * | 2016-02-29 | 2022-07-29 | 华为技术有限公司 | 一种分布式***中命令分发方法、装置及*** |
CN106598548A (zh) * | 2016-11-16 | 2017-04-26 | 盛科网络(苏州)有限公司 | 存储单元读写冲突的解决方法及装置 |
WO2019183849A1 (zh) * | 2018-03-28 | 2019-10-03 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
CN110337637A (zh) * | 2018-03-28 | 2019-10-15 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
CN110337637B (zh) * | 2018-03-28 | 2021-07-30 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
CN109144409A (zh) * | 2018-07-11 | 2019-01-04 | 华为技术有限公司 | 数据处理方法及装置、存储介质、数据*** |
CN113227984A (zh) * | 2018-12-22 | 2021-08-06 | 华为技术有限公司 | 一种处理芯片、方法及相关设备 |
CN113227984B (zh) * | 2018-12-22 | 2023-12-15 | 华为技术有限公司 | 一种处理芯片、方法及相关设备 |
CN109617838A (zh) * | 2019-02-22 | 2019-04-12 | 盛科网络(苏州)有限公司 | 多通道报文汇聚共享内存管理方法及*** |
CN112820343A (zh) * | 2021-02-25 | 2021-05-18 | 记忆科技(深圳)有限公司 | 数据保护方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103413569B (zh) | 2016-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103413569B (zh) | 一读且一写静态随机存储器 | |
USRE49875E1 (en) | Memory system having high data transfer efficiency and host controller | |
CN103914393B (zh) | 一种基于mcu的flash不丢失更新存储方法 | |
US7903120B2 (en) | Method and system for synchronizing parallel engines in a graphics processing unit | |
US20100180145A1 (en) | Data accessing method for flash memory, and storage system and controller system thereof | |
US8510502B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US20060195650A1 (en) | Method to detect NAND-flash parameters by hardware automatically | |
CN109669888A (zh) | 一种可配置且高效的嵌入式Nor-Flash控制器及控制方法 | |
CN106445398A (zh) | 一种基于新型存储器的嵌入式文件***及其实现方法 | |
US20070011416A1 (en) | Data storage device and medium and related method of storing backup data | |
US20130159604A1 (en) | Memory storage device and memory controller and data writing method thereof | |
CN116149554B (zh) | 一种基于risc-v及其扩展指令的数据存储处理***及其方法 | |
US20030084232A1 (en) | Device and method capable of changing codes of micro-controller | |
US11157330B2 (en) | Barrier-free atomic transfer of multiword data | |
CN110007853A (zh) | 一种Nandflash命令处理方法、装置、终端及存储介质 | |
US7861114B2 (en) | System and method for recovery of memory transactions | |
KR100861896B1 (ko) | 데이터 프로세싱 장치 및 데이터 프로세싱 방법 | |
CN105404591A (zh) | 处理器***及其存储器控制方法 | |
US7508397B1 (en) | Rendering of disjoint and overlapping blits | |
CN115437799A (zh) | 高效同步多个程序线程的技术 | |
US10366049B2 (en) | Processor and method of controlling the same | |
US20160140034A1 (en) | Devices and methods for linked list array hardware implementation | |
CN103678204B (zh) | 处理器及数据处理方法 | |
CN117407148B (zh) | 数据写入方法、读取方法、装置、电子设备以及存储介质 | |
CN105577986A (zh) | 基于膨胀腐蚀的图像处理***及图像处理方法 |
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: 20160309 Termination date: 20180722 |
|
CF01 | Termination of patent right due to non-payment of annual fee |