CN105446894A - 一种写均衡的处理方法和装置 - Google Patents
一种写均衡的处理方法和装置 Download PDFInfo
- Publication number
- CN105446894A CN105446894A CN201410415097.2A CN201410415097A CN105446894A CN 105446894 A CN105446894 A CN 105446894A CN 201410415097 A CN201410415097 A CN 201410415097A CN 105446894 A CN105446894 A CN 105446894A
- Authority
- CN
- China
- Prior art keywords
- row
- write
- data
- storage unit
- memory cell
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种写均衡的处理方法和装置,用于实现存储器中的磨损均衡,以及消除查询物理区块写入次数时较大的开销。本发明提供的一种写均衡的处理方法可包括:接收处理器发送的写请求;根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加所述第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种写均衡的处理方法和装置。
背景技术
当前的非易失性存储器(Non-VolatileMemory,NVM)的存储介质比如相变存储器(PhaseChangeMemory,PCM)等都存在写寿命问题,即当这些介质的存储单元在进行一定次数的擦写操作后,会发生存储可靠性问题,导致存储失效。
为了延长存储介质的写寿命,现有技术中存在一种磨损均衡(WearLeveling)的方法,主要实现过程是:将存储介质划分成相同大小的物理区块,并对所有物理区块的写入次数进行计数跟踪,当需要写入数据时,首先要查询出哪个物理区块的写入次数比较小,然后通过映射表将新写入的数据从逻辑区块优先映射到写入次数小的物理区块,当某个物理区块写入次数过多时,还需要查询写入次数小的物理区块并进行替换。通过将写入的数据量平均分布到存储介质的所有存储单元上,能够让写请求均匀分布到所有物理区块上,达到磨损均衡,从而延长整个存储介质的使用寿命。
在实现本发明的过程中,本发明的发明人发现:现有技术中的写均衡方法在写入数据前,总是需要不断的查询各个物理区块的写入次数,才能确定将数据写入到哪个物理区块,每次查询物理区块的写入次数导致查询开销比较大。
发明内容
本发明实施例提供了一种写均衡的处理方法和装置,用于实现存储器中的磨损均衡,且可以消除查询物理区块写入次数时较大的开销。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种写均衡的处理方法,包括:
接收处理器发送的写请求;
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
增加所述第一存储单元阵列的写入计数;
确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
结合第一方面,在第一方面的第一种可能的实现方式中,所述对所述第一存储单元阵列中每个行内存储的数据进行行间偏移,包括:
从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
结合第一方面,在第一方面的第二种可能的实现方式中,所述根据所述写请求包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,所述方法还包括:
增加所述第一存储单元所在行的写入计数;
确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述对所述第一存储单元所在行中所有列内存储的数据进行行内偏移,包括:
将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中之后,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
结合第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括:
在对所述第一存储单元阵列中每个行内存储的数据进行行间偏移时,对所述第一存储单元阵列中正在进行偏移的行进行状态标记,标记为正在进行偏移;
在对所述第一存储单元阵列中每个行内存储的数据进行行间偏移时,对所述第一存储单元阵列中未开始进行偏移的行进行标记,标记为未开始偏移;
在对所述第一存储单元阵列中每个行内存储的数据进行行间偏移时,对所述第一存储单元阵列中已经完成偏移的行进行状态标记,标记为已经完成偏移。
第二方面,本发明实施例还提供一种写均衡的处理方法,包括:
接收处理器发送的写请求;
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元cell中,所述第一存储单元为存储器的第一存储单元阵列bank中的一个存储单元;
增加所述第一存储单元所在行的写入计数;
确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
结合第二方面,在第二方面的第一种可能的实现方式中,所述对所述第一存储单元所在行中所有列内存储的数据进行行内偏移,包括:
将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
结合第二方面,在第二方面的第二种可能的实现方式中,所述根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元cell中之后,所述方法还包括:
增加所述第一存储单元阵列的写入计数;
确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述对所述第一存储单元阵列中每个行内存储的数据进行行间偏移,包括:
从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
结合第二方面,在第二方面的第五种可能的实现方式中,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
结合第二方面的第三种可能的实现方式,在第二方面的第六种可能的实现方式中,所述当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中之后,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
第三方面,本发明实施例提供一种写均衡的处理装置,包括:
接收模块,用于接收处理器发送的写请求;
存储模块,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
计数模块,用于增加所述第一存储单元阵列的写入计数;
行间偏移模块,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
结合第三方面,在第三方面的第一种可能的实现方式中,所述行间偏移模块,包括:第一读入子模块和第一写入子模块,其中,
第一读入子模块,用于从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
第一写入子模块,用于从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
所述第一读入子模块,还用于根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
所述第一写入子模块,还用于从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
所述第一读入子模块和所述第一写入子模块,还用于按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
所述第一写入子模块,还用于当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
结合第三方面,在第三方面的第二种可能的实现方式中,所述写均衡的处理装置,还包括:行内偏移模块,其中,
所述计数模块,还用于所述存储模块根据所述写请求包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,增加所述第一存储单元所在行的写入计数;
所述行内偏移模块,用于确定所第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述行内偏移模块,包括:第二读入子模块和第二写入子模块,其中,
所述第二读入子模块,用于将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
所述第二写入子模块,用于根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
结合第三方面的第二种可能的实现方式,在第三方面的第四种可能的实现方式中,所述写均衡的处理装置,还包括:行间偏移计算模块和第一读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行间偏移计算模块,用于对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
所述第一读写模块,用于从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
结合第三方面的第二种可能或者第三种可能的实现方式,在第三方面的第五种可能的实现方式中,所述写均衡的处理装置,还包括:行内偏移计算模块和第二读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行内偏移计算模块,用于对所述读写请求中包含的地址信息进行偏移量的计算,得到行内偏移后的地址信息;
所述第二读写模块,用于从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
第四方面,本发明实施例还提供一种写均衡的处理装置,包括:
接收模块,用于接收处理器发送的写请求;
存储模块,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
计数模块,用于增加所述第一存储单元所在行的写入计数;
行内偏移模块,用于确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
结合第四方面,在第四方面的第一种可能的实现方式中,所述行内偏移模块,包括:第二读入子模块和第二写入子模块,其中,
所述第二读入子模块,用于将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
所述第二写入子模块,用于根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述写均衡的处理装置,还包括:行间偏移模块,其中,
所述计数模块,还用于增加所述第一存储单元阵列的写入计数;
所述行间偏移模块,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述行间偏移模块,包括:第一读入子模块和第一写入子模块,其中,
第一读入子模块,用于从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
第一写入子模块,用于从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
所述第一读入子模块,还用于根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
所述第一写入子模块,还用于从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
所述第一读入子模块和所述第一写入子模块,还用于按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
所述第一写入子模块,还用于当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
结合第四方面的第三种可能的实现方式,在第四方面的第五种可能的实现方式中,所述写均衡的处理装置,还包括:行间偏移计算模块和第一读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行间偏移计算模块,用于对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
所述第一读写模块,用于从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第六种可能的实现方式中,所述写均衡的处理装置,还包括:行内偏移计算模块和第二读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行内偏移计算模块,用于对所述读写请求中包含的地址信息进行偏移量的计算,得到行内偏移后的地址信息;
所述第二读写模块,用于从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
第五方面,本发明实施例还提供一种写均衡的处理装置,包括:存储器、处理器、存储控制器,所述存储控制器分别和所述存储器、所述处理器、所述处理器连接,其中,所述存储控制器用于执行第一方面或第一方面的第一至第五种可能中的任一项所述的方法。
第六方面,本发明实施例还提供一种写均衡的处理装置,包括:存储器、处理器、存储控制器,所述存储控制器分别和所述存储器、所述处理器、所述处理器连接,其中,所述存储控制器用于执行第二方面或第二方面的第一种可能至第六种可能中的任一项所述的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在的第一存储单元阵列会增加写入计数,确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间迁移,故可以实现第一存储单元阵列中行间的写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种写均衡的处理方法的流程方框示意图;
图2-a为本发明实施例提供的另一种写均衡的处理方法的流程方框示意图;
图2-b为本发明实施例提供的对第一存储单元阵列中每个行内存储的数据进行行间偏移的流程示意图;
图2-c为本发明实施例提供的对处理器发送的读写请求进行处理的一种流程示意图;
图2-d为本发明实施例提供的对第一存储单元所在行中所有列内存储的数据进行行内偏移的流程示意图;
图2-e为本发明实施例提供的对处理器发送的读写请求进行处理的另一种流程示意图;
图3为本发明实施例提供的另一种写均衡的处理方法的流程方框示意图;
图4为本发明实施例提供的另一种写均衡的处理方法的流程方框示意图;
图5为本发明实施例提供的PCM中存储单元的组成示意图;
图6为本发明实施例提供的写均衡的处理方法的一种实现框架示意图;
图7为本发明实施例提供的行间偏移的实现方式示意图;
图8-a为本发明实施例提供的一种写均衡的处理装置的组成结构示意图;
图8-b为本发明实施例提供的一种行间偏移模块的组成结构示意图;
图8-c为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图8-d为本发明实施例提供的一种行内偏移模块的组成结构示意图;
图8-e为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图8-f为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图9-a为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图9-b为本发明实施例提供的另一种行内偏移模块的组成结构示意图;
图9-c为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图9-d为本发明实施例提供的一种行间偏移模块的组成结构示意图;
图9-e为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图9-f为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图10为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
图11为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图。
具体实施方式
本发明实施例提供了一种写均衡的处理方法和装置,用于实现存储器中的磨损均衡,且可以消除查询物理区块写入次数时较大的开销。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
本发明的说明书和实施例中所采用的术语“存储器”可包含内存(DRAM)以及外存(磁盘),对此,本发明的实施例中不加以限定。
相应的,所采用的“存储控制器”可包含内存控制器,以及磁盘控制器,对此,本发明的实施例中不加以限定。
以下分别进行详细说明。
实施例一
本发明写均衡的处理方法的一个实施例,可应用于对存储器中的写均衡处理中,请参阅图1所示,本发明一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤101至步骤104,其中,
101、接收处理器发送的写请求。
在本发明实施例中,处理器中有数据需要写入到存储器中时,处理器向写均衡的处理装置发送写请求,以请求将待写入的数据写入到存储器中,处理器发送的写请求中包含有地址信息,该地址信息标识的存储单元为存储器中的第一存储单元。写均衡的处理装置从处理器接收到写请求,通过处理器在写请求中包含的地址信息确定出待写入的数据需要被写入的存储器地址。
102、根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中。
其中,上述第一存储单元(英文为cell)为存储器的第一存储单元阵列(英文为bank)中的一个存储单元。
本发明实施例中,写均衡的处理装置接收到写请求之后,按照写请求将需要写入的数据写入到存储器的第一cell中,其中,第一cell是存储器中的第一bank中的一个cell,本发明实施例中的存储器具体指的是可以存储数据的存储介质,该存储器具体可以为相变存储器(PhaseChangeMemory,PCM),存储器中通常包括有多个bank,每个bank可以是存储器中的一个区块,一个bank包含多个行(英文为row)和多个列(英文为column),上述多个行和多个列指向的多个存储单元组成一个存储单元阵列。
103、增加第一存储单元阵列的写入计数。
在本发明实施例中,写均衡的处理装置完成对第一cell的写入操作之后,增加第一cell所在的第一存储单元阵列的写入计数。其中,第一存储单元阵列的写入计数可以是该第一存储单元阵列被写入数据的写入次数,也可以是该第一存储单元阵列被写入数据的数据量总和,数据量总和指的是写入次数与每次写入数据的数量乘积。
需要说明的是,在本发明的一些实施例中,写均衡的处理装置在第一存储单元中写入数据之后,第一存储单元所在的第一存储单元阵列均被擦写一次,本发明实施例中为了获取到存储器中各个存储单元阵列被擦写的情况,需要对存储器中各个存储单元阵列的写入计数进行实时更新,故在存储器中每当存储单元中有新数据写入时,写均衡的处理装置就需要增加一次被写入新数据的存储单元所在的存储单元阵列的写入次数,本发明实施例中为了准确描述哪个存储单元被写入新数据,将被写入新数据的存储单元定义为“第一存储单元”,相应的,定义“第一存储单元阵列”用于表示被写入新数据的存储单元所在的存储单元阵列。
104、确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移。
在本发明实施例中,写均衡的处理装置在增加第一存储单元阵列的写入计数的写入计数之后,写均衡的处理装置对存储器中各个存储单元阵列的写入计数进行判断,判断存储器中各个存储单元阵列的写入计数是否达到预置的阵列阈值,其中,阵列阈值为存储单元阵列被擦写的次数门限,写均衡的处理装置对存储器中的存储单元阵列的写入计数进行阈值判断,可以获知在存储器中哪些存储单元阵列已经被擦写的次数超过阈值。当确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移。
在本发明实施例中,写均衡的处理装置确定第一存储单元阵列的写入计数达到阵列阈值后,写均衡的处理装置需要对第一存储单元阵列中每个行内存储的数据进行行间偏移,其中,存储器中第一存储单元阵列的写入计数达到阵列阈值说明该第一存储单元阵列被擦写的次数已经达到了触发执行行间偏移的条件,在存储器中出现了不均匀的擦写,达到阵列阈值的第一存储单元阵列被频繁擦写,可能导致很快达到不可靠状态,使得整个存储介质的使用寿命变短,为了解决这样的问题,写均衡的处理装置需要对第一存储单元阵列进行行间偏移,写均衡的处理装置对上述存储单元阵列中每个行内存储的数据都偏移一次,以此可以实现第一存储单元阵列中各个行之间的写均衡。
通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在的第一存储单元阵列会增加写入计数,确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间迁移,故可以实现第一存储单元阵列中行间的写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
实施例二
请参阅如图2-a所示,本发明另一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤201至步骤206,其中,
执行步骤201至步骤204与前述实施例中的步骤101至104相同,可参阅前述实施例的描述,此处不再赘述。
步骤202根据写请求包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中之后,
步骤205、增加第一存储单元所在行的写入计数;和,
步骤206、确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
其中,写均衡的处理装置完成对第一存储单元的写入操作之后,除了执行步骤203和步骤204之外,还可以增加第一存储单元所在行的写入计数。其中,第一存储单元所在行的写入计数可以是第一存储单元所在行被写入数据的写入次数,也可以是第一存储单元所在行被写入数据的数据量总和。
需要说明的是,在本发明的一些实施例中,写均衡的处理装置在第一存储单元中写入数据之后,第一存储单元所在行也被擦写一次,本发明实施例中为了获取到存储器中各个行被擦写的情况,需要对存储器中各个行的写入计数进行实时更新,故在存储器中每当存储单元中有新数据写入时,写均衡的处理装置就需要增加一次被写入新数据的第一存储单元所在行的写入次数。
在本发明实施例中,写均衡的处理装置在增加第一存储单元所在行的写入计数之后,写均衡的处理装置对存储器中各个行的写入计数进行判断,判断存储器中各个行的写入计数是否达到预置的行阈值。其中,行阈值为行被擦写的次数门限,写均衡的处理装置对存储器中行的写入计数进行阈值判断,可以获知在存储器中哪些行已经被擦写的次数超过行阈值。确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
需要说明的是,在本发明实施例中,步骤203增加针对第一存储单元阵列的写入计数和步骤205增加针对第一存储单元所在行的写入计数是分别执行的,两者之间可以没有先后顺序之分,写均衡的处理装置可以先执行针对第一存储单元阵列的写入计数,再执行针对第一存储单元所在行的写入计数,也可以先执行针对第一存储单元所在行的写入计数,再执行针对第一存储单元阵列的写入计数,还可以同时执行针对第一存储单元阵列的写入计数和针对第一行的写入计数,在针对第一存储单元阵列的写入计数达到阵列阈值时,触发执行步骤204,在针对第一存储单元所在行达到行阈值时,触发执行步骤206,其中,步骤204和步骤206之间也可以认为是没有关联的两个步骤或者可以是并列的两个步骤,这个步骤之间的关系类似于步骤203和步骤205。
在本发明实施例中,行间偏移是将存储单元阵列中每个行内存储的数据都偏移一次,这样可以实现在存储单元阵列中各个行之间的写均衡,行间偏移需要将存储单元阵列中各个行内存储的数据重新写入一次。请参阅如图2-b所示,为本发明实施例提供的对第一存储单元阵列中每个行内存储的数据进行行间偏移的流程示意图,步骤204确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移,具体可以包括如下步骤:
2041、从第一存储单元阵列中确定第一行,将第一行内存储的数据读入到行缓存(英文为rowbuffer)中;
2042、从行缓存中将第一行内存储的原数据写入到冗余行(英文为redundancyrow)中,冗余行为第一存储单元阵列中未存入数据的任意一行;
2043、根据第一行和预设的行间偏移量,从第一存储单元阵列中确定出第二行,将第二行内存储的数据读入到行缓存中;
2044、从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
2045、按照对第二行内存储的数据迁移到第一行的方式对第一存储单元阵列中除第一行和第二行以外的行内存储的数据进行迁移;
2046、当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中。
其中,对于步骤2041,写均衡的处理装置首先从第一存储单元阵列确定出第一行,具体的,从第一存储单元阵列中确定出的第一行可以是第一存储单元阵列中的任意一个行,然后将第一行内存储的数据读入到行缓存,则该第一行就被腾出了数据,可作为空的行被再写入数据,行缓存用于暂存从一个行内读出的数据,此时在行缓存中存储的就是第一行内存储的原数据,这里第一行内存储的原数据意思是该数据原先在第一行内存储,原数据被写入新的行后,就称为行内存储的新数据。
步骤2042中写均衡的处理装置从行缓存中可以将第一行内存储的原数据写入到冗余行中,其中,冗余行是相对于第一存储单元阵列中存储有数据的所有行而言的,冗余行为第一存储单元阵列中未存入数据的任意一行,冗余行为用于中间过渡的一个空行,从第一行内读出的原数据暂存于冗余行中。
步骤2043中从第一存储单元阵列中再确定出一个行进行行间偏移,具体的,可以根据第一行和预设的行间偏移量从第一存储单元阵列中确定出第二行,该第二行是除了前述的第一行以外的一个行,在第一行内迁移出数据之后并写入到冗余行之后,写均衡的处理装置将第二行中存储器储的数据读入到行缓存中,则第二行也会被腾空,此时在行缓存中存储的是第二行内存储的原数据,其中,根据第一行和预设的行间偏移量可以计算出第二行,例如通过第一行加上行间偏移量得到第二行,另外,也可以通过其它运算方式由第一行和行间偏移量从第一存储单元阵列中确定出第二行,例如,通过第一行加上行间偏移量再加上预设的固定值从第一存储单元阵列中确定出第二行。只要能够根据第一行和行间偏移量确定出在第一行进行行间偏移之后继续进行行间偏移的行即可。
需要说明的是,写均衡的处理装置记录下行间偏移量,其中,行间偏移量指的是第一存储单元阵列中各个行内存储的数据被迁移到哪个行时产生的偏移量,结合前述的实施例描述,对于步骤2041至2044描述的实现方式中,第二行内存储的原数据进行行间偏移,被重新写入到了第一行,则第二行和第一行之间相错的间隔就是对于第二行的行间偏移量,通过行间偏移量可以从第一行中读取到原来在第一行内存储的数据。在对第一存储单元阵列中每个行在进行行间偏移时都可以记录下每个行对应的行间偏移量,那么通过行间偏移量就可以还原出各个行内存储的原数据。在本发明的一些应用场景中,为了简化对行间偏移量的记录,每个行可以采用相同的行间偏移量,那么只需要记录一个行间偏移量即可,每个行都可以通过行间偏移量来还原出各个行内存储的原数据。
步骤2043完成之后接下来执行步骤2044,将行缓存中将第二行内存储的原数据写入到被腾空的第一行中,此时在第一行内存储的新数据就是在第二行内存储的原数据,从而可以完成第一存储单元阵列中第二行的行间迁移,即可以将第二行存储的数据迁移到第一行内。步骤2041至步骤2044描述了将第二行内存储的数据迁移到第一行的实现方式,这四个步骤完成之后触发执行步骤2045,在步骤2045中按照前述的步骤2041至步骤2044描述的方式,对第一存储单元阵列内除第一行和第二行以外的其它行也进行行间迁移,将其它行内存储的数据再迁移到被腾空的行中,经过依次轮询直至将第一存储单元阵列中最后一个行内存储的数据迁移完成,然后执行步骤2046,当第一存储单元阵列中最后一个行内存储的数据被迁移出去之后,第一存储单元阵列中最后一个行就被腾空了,接下来需要将步骤2042中写入到冗余行中第一行内存储的原数据写入到被腾空的最后一个行内。
在本发明的一些实施例中,为了便于第一存储单元阵列中各个行进行行间偏移,可以按照第一存储单元阵列中各个行之间的顺序大小依次进行偏移,即在前述的实施例中,进一步的,对于根据第一行和预设的行间偏移量确定出的第二行,第一行和第二行为第一存储单元阵列中相邻的两个行,即行间偏移量的取值为一个行的行值大小。举例说明,可以先对存储单元阵列中的第0行进行行间偏移,然后根据第0行和行间偏移量确定出第1行,接下来对第1行进行行间偏移,将第1行内的数据迁移至第0行,然后再将第2行内的数据迁移至第1行,依据行之间的大小顺序对第一存储单元阵列内的各个行依次进行偏移。
可以理解的是,在本发明实施例中,第一存储单元阵列中第一个被读出的数据一直保存在冗余行中,在该第一存储单元阵列中其它行依次进行行间偏移,则在该第一存储单元阵列中最后一个读出数据的行仍是被腾空的,可以将冗余行中存储的数据(即第一行内存储的原数据)写入到上述最后一个读出数据的行中,从而可以完成对第一存储单元阵列中所有行的行间偏移,实现对第一存储单元阵列中各个行的写均衡,可以避免第一存储单元阵列中某个行被擦写次数过于频繁导致整个存储介质的使用寿命变短的问题。
举例说明,以第一存储单元阵列为bank1为例,在bank1内共包括有4个行分别为row1、row2、row3和row4,其中,首先选择row2作为前述实施例中的第一行,将row2存储器储的数据读入到行缓存中,则row2被腾空,然后再将row2存储器储的原数据从行缓存写入到冗余行中,此时行缓存也被腾空,然后将row3(row3即为前述的第二行)存储器储的数据读入到行缓存中,此时row3也被腾空,然后再将row3存储器储的原数据从行缓存写入到row2内,row2存储器储的新数据就是row3存储器储的原数据,如此就可以完成对row3的行间偏移,即将row3偏移至row2;接下来将row4存储器储的数据读入到行缓存中,此时row4也被腾空,然后再将row4存储器储的原数据从行缓存写入到row3内,row3存储器储的新数据就是row4存储器储的原数据,如此就可以完成对row4的行间偏移,即将row4偏移至row3;接下来将row1存储器储的数据读入到行缓存中,此时row1也被腾空,然后再将row1存储器储的原数据从行缓存写入到row4内,row4存储器储的新数据就是row1存储器储的原数据,如此就可以完成对row1的行间偏移,即将row1偏移至row4,bank1内row3、row4、row1都完成了行间偏移,并且row1是被腾空的,由于row2存储器储的原数据还被存储在冗余行中,故可以从冗余行中将row2存储器储的原数据写入到row1中,row1是bank1中最后一个读出数据的行。通过前述的举例说明可知,本发明实施例中可以实现从row1→row4→row3→row2的循环,即row3进行行间偏移至row2,row4进行行间偏移至row3,row1进行行间偏移至row4,row2进行行间偏移至row1,如此就可以实现bank1内各个行之间的写均衡。
在本发明的一些实施例中,步骤2046当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将所述第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中之后,请参阅如图2-c所示,为本发明实施例提供的对处理器发送的读写请求进行处理的一种流程示意图,具体可以包括如下步骤:
207a、接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
208a、对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
209a、从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
其中,步骤207a至209a描述的是存储器中已经完成行间偏移之后如何从存储器中读写数据,首先执行步骤207a,写均衡的处理装置接收到处理器发送的读写请求,该读写请求具体可以指的是读请求或者写请求,其中,在读写请求中包含地址信息,地址信息可以直接标识需要执行读写处理的存储单元,地址信息也可以通过携带的行与列来标识对哪个存储单元执行读写处理。
写均衡的处理装置从读写请求中解析出地址信息,然后执行步骤208a,写均衡的处理装置对读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息,对地址信息进行行间偏移量的计算可以计算出对于读写请求中包含的地址信息应该偏移多少才能读取到正确的数据。
在本发明的一些实施例中,写均衡的处理装置会记录第一存储单元阵列中每个行内存储的数据进行行间偏移的行间偏移量,写均衡的处理装置可以根据已经记录的行间偏移量对读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息,可以理解的是,对地址信息进行行间偏移量的计算相当于对读写请求中包含的地址信息进行纠正,由于本发明实施例中已经对第一存储单元阵列中各个行内存储的数据进行了迁移,若按照读写请求包含的地址信息直接从存储器中读取数据,那么可能无法得到正确的数据,所以需要对读写请求包含的地址信息进行纠正,根据前述内容可知,对于第一存储单元阵列,写均衡的处理装置都会进行行间偏移,然后记录下行间偏移量,由于处理器并不知悉写均衡的处理装置进行了行间偏移,处理器会按照数据原来存储的位置或者需要写入数据的原来位置来下发读写请求,在读写请求包含需要读写处理的地址信息,写均衡的处理装置在获取到读写请求中包含的地址信息后,通过记录的行间偏移量对所请求的地址信息进行纠正,得到纠正后的地址信息(也可以称之为行间偏移后的地址信息),则纠正后的地址信息可以被正确访问。
最后执行步骤209a,若接收到读请求,写均衡的处理装置从存储器中由行间偏移后的地址信息标识的存储单元中读出数据,或,若接收到写请求,写均衡的处理装置将读写请求包括的写请求对应的数据写入存储器中由行间偏移后的地址信息标识的存储单元中。
在本发明实施例中,若在存储器中第一存储单元所在行的写入计数达到预置的行阈值时,写均衡的处理装置执行步骤206,需要对第一存储单元所在行中所有列内存储的数据进行行内偏移,其中,对于存储器中写入计数达到行阈值的第一存储单元所在行,由于该行被擦写的次数已经达到了触发执行行内偏移的条件,在存储器中出现了不均匀的擦写,达到行阈值的第一存储单元所在行被频繁擦写,可能导致很快达到不可靠状态,使得整个存储介质的使用寿命变短,为了解决这样的问题,写均衡的处理装置需要对第一存储单元所在行进行行内偏移,写均衡的处理装置对第一存储单元所在行中所有列内存储的数据都偏移一次,以此可以实现第一存储单元所在行中各个列之间的写均衡。
在本发明实施例中,行内偏移是将达到行阈值的第一存储单元所在行中所有列内存储的数据都偏移一次,这样可以实现在一个行中所有列之间的写均衡,行内偏移需要将行中所有列内存储的数据重新写入一次。请参阅如图2-d所示,为本发明实施例提供的对第一存储单元所在行中所有列内存储的数据进行行内偏移的流程示意图,步骤206确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移,具体可以包括如下步骤:
2061、将第一存储单元所在行中所有列内存储的数据读入到行缓存中;
2062、根据预设的行内偏移量,对行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到第一存储单元所在的行中。
其中,行内偏移量是重新写入第一存储单元所在的行中的新数据与第一存储单元所在行中所有列内存储的原数据之间相错的间隔。
对于步骤2061,写均衡的处理装置首先将第一存储单元所在行中所有列内存储的数据都读入到行缓存中,行缓存用于暂存从一个行内读出的数据,此时在行缓存中存储的就是第一存储单元所在行内存储的原数据,这里原数据意思是该数据原先在第一存储单元所在行内存储。
步骤2062中写均衡的处理装置获取到行内偏移量,其中行内偏移量用于指示在同一个行内将所有列的数据偏移多少,行内偏移量也可以解释为一个列偏移量,即同一个行内每个列都偏移多少,写均衡的处理装置获取到行内偏移量之后,按照行内偏移量从行缓存中将原数据重新写入到第一存储单元所在行中,此时可以得到第一存储单元所在行中所有列内存储的新数据,该新数据和原数据之间相错的间隔即为行内偏移量,通过行内偏移数据存储的行没有发生改变,只是存储的列按照行内偏移量进行了偏移,通过行内偏移可以使得第一存储单元所在行中所有列都完成行内迁移,从而使得一个行内的所有列能够达到写均衡。
对于前述的步骤2062,写均衡的处理装置记录下行内偏移量,其中,行内偏移量指的是第一存储单元所在行中所有列内存储的数据被迁移到新的列时产生的偏移量,结合前述的实施例描述,对于前述row1内包括4个列column1、column2、column3和column4的举例说明可知,row1存储器储的原数据(数据1、数据2、数据3、数据4)进行行内偏移,被重新写入到了row1中,得到新数据为数据4、数据1、数据2、数据3,则新旧数据之间相错的间隔就是行内偏移量,通过行内偏移量可以从row1中读取到原来在该行内存储的数据,例如行内偏移后的row1中,column1存储器储的是数据4,为了读取到在row1中原来column4存储器储的数据4,就不能从column4来读取,因为按照行内偏移量,原来column4存储器储的数据4已经迁移到了column1中,故通过行内偏移量进行纠正,就可以从column1中读取到原来column4中存储的数据4。在对第一存储单元所在行中所有列进行行内偏移时记录下的行内偏移量就可以还原出行中各个列内存储的原数据。
在本发明的一些实施例中,行内偏移可以在第一存储单元所在行内向前进行偏移,也可以在第一存储单元所在行内向后进行偏移,具体偏移多少由行内偏移量来决定,具体的,行内偏移量具体可以为N个字节(英文为byte)或者第一存储单元所在行中列的颗粒大小,其中,N为非零自然数。举例来说,若N的取值为1,则行内偏移量可以为1个字节,则第一存储单元所在行中所有列内存储的新数据和原数据之间相错的间隔就是8个比特(英文为bit),若行内偏移量为第一存储单元所在行中列的颗粒大小,则第一存储单元所在行中所有列内存储的新数据和原数据之间相错的间隔就由列的颗粒大小来决定,列的颗粒大小指的是在一个行中一个列占的字节数,通常情况下,列的颗粒大小可以为2个字节,即16个比特。需要注意的是,设置的行内偏移量要避免偏移后所有行内存储的新数据和原数据完全重叠,否则就会出现相当于没有进行行内偏移的情况。
举例说明,以达到行阈值的行为row1为例,在row1内共包括有4个列分别为column1、column2、column3和column4,其中,column1存储器储的是数据1,column2存储器储的是数据2,column3存储器储的是数据3,column4存储器储的是数据4,首先将row1中数据1、数据2、数据3、数据4依次读入到行缓存中,则row1被腾空,假设行内偏移量为列的颗粒大小,对数据1、数据2、数据3、数据4按照行内偏移量进行偏移,得到新数据为数据4、数据1、数据2、数据3,将数据4、数据1、数据2、数据3重新写入到row1中,则在行内偏移后的row1中,column1存储器储的是数据4,column2存储器储的是数据1,column3存储器储的是数据2,column4存储器储的是数据3。通过前述的举例说明可知,本发明实施例中可以实现从column4→column3→column2→column1的循环,即column4进行行内偏移至column1,column1进行行内偏移至column2,column2进行行内偏移至column3,column3进行行内偏移至column4,如此就可以实现row1内所有列之间的写均衡。
在本发明的一些实施例中,步骤206对第一存储单元所在行中所有列内存储的数据进行行内偏移之后,请参阅如图2-e所示,为本发明实施例提供的对处理器发送的读写请求进行处理的另一种流程示意图,具体可以包括如下步骤:
207b、接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
208b、对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
209b、从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
其中,步骤207b至209b描述的是存储器中已经完成行内偏移之后如何从存储器中读写数据,首先执行步骤207b,写均衡的处理装置接收到处理器发送的读写请求,该读写请求具体可以指的是读请求或者写请求,其中,在读写请求中包含地址信息,地址信息可以直接标识需要执行读写处理的存储单元,地址信息也可以通过携带的行与列来标识对哪个存储单元执行读写处理。
写均衡的处理装置从读写请求中解析出地址信息,然后执行步骤208b,写均衡的处理装置对读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息,对地址信息进行行内偏移量的计算可以计算出对于读写请求中包含的地址信息应该偏移多少才能读取到正确的数据。
在本发明的一些实施例中,写均衡的处理装置会记录第一存储单元阵列中每个行内存储的数据进行行内偏移的行内偏移量,写均衡的处理装置可以根据已经记录的行内偏移量对读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息,可以理解的是,对地址信息进行行内偏移量的计算相当于对读写请求中包含的地址信息进行纠正,由于本发明实施例中已经对第一存储单元阵列中各个行内存储的数据进行了迁移,若按照读写请求包含的地址信息直接从存储器中读取数据,那么可能无法得到正确的数据,所以需要对读写请求包含的地址信息进行纠正,根据前述内容可知,对于第一存储单元阵列,写均衡的处理装置都会进行行内偏移,然后记录下行内偏移量,由于处理器并不知悉写均衡的处理装置进行了行内偏移,处理器会按照数据原来存储的位置或者需要写入数据的原来位置来下发读写请求,在读写请求包含需要读写处理的地址信息,写均衡的处理装置在获取到读写请求中包含的地址信息后,通过记录的行内偏移量对所请求的地址信息进行纠正,得到纠正后的地址信息(也可以称之为行内偏移后的地址信息),则纠正后的地址信息可以被正确访问。
最后执行步骤209b,若接收到读请求,写均衡的处理装置从存储器中由行内偏移后的地址信息标识的存储单元中读出数据,或,若接收到写请求,写均衡的处理装置将读写请求包括的写请求对应的数据写入存储器中由行内偏移后的地址信息标识的存储单元中。
需要说明的是,在前述实施例中通过步骤207a至209a描述了以行间偏移量的计算对处理器发送的读写请求进行处理,通过步骤207b至209b描述了以行内偏移量的计算对处理器发送的读写请求进行处理,在本发明的一些实施例中,若对第一存储单元阵列进行了行间偏移以及对第一行进行了行内偏移,则在对处理器发送的读写请求进行处理时,可以对读写请求中包含的地址信息同时进行行间偏移量和行内偏移量的计算,从而得到行内偏移和行间偏移后的地址信息。从所述存储器中由行间偏移和行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由行间偏移和行内偏移后的地址信息标识的存储单元中。
在本发明的一些实施例中,步骤204在对第一存储单元阵列中每个行内存储的数据进行行间偏移时,本发明实施例提供的写均衡的处理方法,还可以包括如下步骤:
A1、在对第一存储单元阵列中每个行内存储的数据进行行间偏移时,对第一存储单元阵列中正在进行偏移的行进行状态标记,标记为正在进行偏移;
A2、在对第一存储单元阵列中每个行内存储的数据进行行间偏移时,对第一存储单元阵列中未开始进行偏移的行进行标记,标记为未开始偏移;
A3、在对第一存储单元阵列中每个行内存储的数据进行行间偏移时,对第一存储单元阵列中已经完成偏移的行进行状态标记,标记为已经完成偏移。
也就是说,在本发明的一些实施例中,可能还存在一种应用场景,就是在步骤104正在执行的过程中,即在第一存储单元阵列中某个行正在进行行间偏移,已经有一些行完成了行间偏移,也有一些行还未开始行间偏移,在这种应用场景中,处理器也可能会向写均衡的处理装置发起读写请求,为了实现行间偏移过程中不中断处理器发送的读写请求,本发明实施例中还需要执行状态标记,也就是执行前述的步骤A1、A2、A3,则第一存储单元阵列中所有行的状态可以被标记为三种:一种是正在进行偏移、一种是未开始偏移、一种是已经完成偏移,通过状态标记可以准确的记录第一存储单元阵列中每个行的行间偏移状态。
进一步的,为了能够更便捷的对存储单元阵列中每个行进行状态标记,写均衡的处理装置可以对第一存储单元阵列中各个行按照各个行的顺序位置依次进行偏移,即在进行行间偏移时可以按照存储单元阵列中各个行依次进行偏移,例如可以先对存储单元阵列中第0行进行行间偏移,然后对第1行进行行间偏移,接下来对第2行、第3行顺序进行行间偏移,那么前述步骤A2对第一存储单元阵列中未开始进行偏移的行进行标记,标记为未开始偏移,具体为:在步骤A1对第一存储单元阵列中正在进行偏移的行进行状态标记,标记为正在进行偏移之后,将第一存储单元阵列中标记为正在进行偏移之后的所有行,都标记为未开始偏移。
步骤A3对第一存储单元阵列中已经完成偏移的行进行状态标记,标记为已经完成偏移,具体为:在步骤A2对第一存储单元阵列中正在进行偏移的行进行状态标记,标记为正在进行偏移之后,将第一存储单元阵列中标记正在进行偏移之前的所有行,都标记为已经完成偏移。
也就是说,由于第一存储单元阵列中各个行是依照位置顺序依次进行行间偏移,在进行状态标记时,写均衡的处理装置先将第一存储单元阵列中正在偏移的行标记为正在进行偏移,以正在进行偏移的行作为基准,存储单元阵列中在正在偏移的行之后的所有行,都是未开始进行偏移的,可以标记为未开始偏移,第一存储单元阵列中在正在偏移的行之前的所有行,都是已经完成偏移的,可以标记为已经完成偏移。故只需要进行一次标记,就可以完成对存储单元阵列中所有行的状态标记。
基于前述的步骤A1至A3记载的实施例中,本发明实施例提供的写均衡的处理方法,还可以包括如下步骤:
B1、在对第一存储单元阵列中每个行内存储的数据进行行间偏移的过程中,接收处理器发送的读写请求,读写请求包括:读请求或写请求,读写请求包含地址信息;
B2、根据读写请求中包含的地址信息和被标记的状态判断存储器中该地址信息标识的存储单元正在进行偏移或者未开始偏移或者已经完成偏移;
B3、若存储器中读写请求中包含的地址信息标识的请求行正在进行偏移,从存储器中由上述地址信息标识的存储单元正在使用的行缓存或者冗余行中读出数据,或,将读写请求包括的写请求对应的数据写入存储器中由上述地址信息标识的存储单元正在使用的行缓存或者冗余行中;
B4、若存储器中读写请求中包含的地址信息标识的请求行未开始偏移,从存储器中由上述地址信息标识的存储单元中读出数据,或,将读写请求包括的写请求对应的数据写入存储器中由上述地址信息标识的存储单元中;
B5、若存储器中读写请求中包含的地址信息标识的请求行已经完成偏移,根据行间偏移量和行内偏移量对读写请求中包含的地址信息进行偏移量的计算,得到偏移后的地址信息;从存储器中由偏移后的地址信息标识的存储单元中读出数据,或,将读写请求包括的写请求对应的数据写入存储器中由偏移后的地址信息标识的存储单元中。
也就是说,在本发明的一些实施例中,可能还存在一种应用场景,就是在步骤204正在执行的过程中,即在达到阵列阈值的第一存储单元阵列中某个行正在进行行间偏移,已经有一些行完成了行间偏移,也有一些行还未开始行间偏移,在这种应用场景中,处理器也可能会向写均衡的处理装置发起读写请求,具体的,写均衡的处理装置需要执行前述的步骤B1、B2、B3、B4、B5,首先步骤B1中,步骤204正在执行的过程中,写均衡的处理装置接收到处理器发送的读写请求,写均衡的处理装置首先从读写请求中解析出读写请求中包含的地址信息,然后执行步骤B2,根据前述对存储单元进行的状态标记,判断出由读写请求中包含的地址信息标识的存储单元是正在进行偏移还是未开始偏移还是已经完成偏移,根据具体的状态情况分别触发执行步骤B3、B4、B5。
其中,步骤B3中,根据前述实施例记载的内容可知,若存储器中读写请求中包含的地址信息标识的请求行正在进行偏移,则写均衡的处理装置确定读写请求中包含的地址信息标识的存储单元正在使用的是行缓存或者冗余行,对于第一存储单元阵列中的第一个正在进行行间偏移的第一行会使用冗余行,对于第一存储单元阵列中的其它正在使用行间偏移的行会使用行缓存。若接收到读请求,写均衡的处理装置从存储器中由读写请求中包含的地址信息标识的存储单元正在使用的行缓存或者冗余行中读出数据,或,若接收到写请求,写均衡的处理装置将读写请求包括的写请求对应的数据写入存储器中由读写请求中包含的地址信息标识的存储单元正在使用的行缓存或者冗余行中。
对于步骤B4中存储器中读写请求中包含的地址信息标识的请求行未开始偏移,则可以直接从原来的位置读写数据,对于步骤B5中存储器中读写请求中包含的地址信息标识的请求行已经完成偏移,则可以直接从偏移后的位置读写数据。
通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在的第一存储单元阵列会增加写入计数,确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间迁移,故可以实现第一存储单元阵列中行间的写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
实施例三
本发明写均衡的处理方法的另一个实施例,可应用于对存储器中的写均衡处理中,请参阅图3所示,本发明一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤301至步骤304,其中,
301、接收处理器发送的写请求。
在本发明实施例中,处理器中有数据需要写入到存储器中时,处理器向写均衡的处理装置发送写请求,以请求将待写入的数据写入到存储器中,处理器发送的写请求中包含有地址信息,该地址信息标识的存储单元为存储器中的第一存储单元。写均衡的处理装置从处理器接收到写请求,通过处理器在写请求中包含的地址信息确定出待写入的数据需要被写入的存储器地址。
302、根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中。
其中,上述第一存储单元(英文为cell)为存储器的第一存储单元阵列(英文为bank)中的一个存储单元。
本发明实施例中,写均衡的处理装置接收到写请求之后,按照写请求将需要写入的数据写入到存储器的第一cell中,其中,第一cell是存储器中的第一bank中的一个cell,本发明实施例中的存储器具体指的是可以存储数据的存储介质,该存储器具体可以为PCM,存储器中通常包括有多个bank,每个bank可以是存储器中的一个区块,一个bank包含多个行(英文为row)和多个列(英文为column),上述多个行和多个列指向的多个存储单元组成一个存储单元阵列。
303、增加第一存储单元所在行的写入计数。
写均衡的处理装置完成对第一存储单元的写入操作之后,还可以增加第一存储单元所在行的写入计数。其中,第一存储单元所在行的写入计数可以是第一存储单元所在行被写入数据的写入次数,也可以是第一存储单元所在行被写入数据的数据量总和。
需要说明的是,在本发明的一些实施例中,写均衡的处理装置在第一存储单元中写入数据之后,第一存储单元所在行也被擦写一次,本发明实施例中为了获取到存储器中第一存储单元所在行的被擦写情况,需要对存储器中第一存储单元所在行的写入计数进行实时更新,故在存储器中每当存储单元中有新数据写入时,写均衡的处理装置就需要增加一次被写入新数据的第一存储单元所在行的写入次数。
在本发明实施例中,写均衡的处理装置在增加第一存储单元所在行的写入计数之后,写均衡的处理装置对存储器中各个行的写入计数进行判断,判断存储器中各个行的写入计数是否达到预置的行阈值。其中,行阈值为行被擦写的次数门限,写均衡的处理装置对存储器中行的写入计数进行阈值判断,可以获知在存储器中哪些行已经被擦写的次数超过行阈值。确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
304、确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
在本发明实施例中,行内偏移是将达到行阈值的第一存储单元所在行中所有列内存储的数据都偏移一次,这样可以实现在一个行中所有列之间的写均衡,行内偏移需要将行中所有列内存储的数据重新写入一次。在本发明的一些实施例中,确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元所在行的写入计数;确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在行会增加写入计数,确定第一存储单元所在行的写入计数达到预置的阵列阈值时,对第一存储单元所在行中所有列内存储的数据进行迁移,故可以实现第一存储单元的行内写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
实施例四
请参阅如图4所示,本发明另一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤401至步骤406,其中,
执行步骤401至步骤404与前述实施例中的步骤301至304相同,可参阅前述实施例的描述,此处不再赘述。
在本发明的一些实施例中,步骤404确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移,具体可以包括如下步骤:
4041、将第一存储单元所在行中所有列内存储的数据读入到行缓存中;
4042、根据预设的行内偏移量,对行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到第一存储单元所在的行中。
执行步骤4041至步骤4042与前述实施例中的步骤2061至2062相同,可参阅前述实施例的描述,此处不再赘述。
步骤402根据写请求包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中之后,
405、增加第一存储单元阵列的写入计数。
406、确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移。
其中,步骤405至步骤406的实现方式与前述实施例中步骤103至步骤104的实现方式相同,可参阅前述实施例的描述,此处不再赘述。
需要说明的是,在本发明实施例中,步骤405增加针对第一存储单元阵列的写入计数和步骤403增加针对第一存储单元所在行的写入计数是分别执行的,两者之间可以没有先后顺序之分,写均衡的处理装置可以先执行针对第一存储单元阵列的写入计数,再执行针对第一存储单元所在行的写入计数,也可以先执行针对第一存储单元所在行的写入计数,再执行针对第一存储单元阵列的写入计数,还可以同时执行针对第一存储单元阵列的写入计数和针对第一行的写入计数,在针对第一存储单元阵列的写入计数达到阵列阈值时,触发执行步骤406,在针对第一存储单元所在行达到行阈值时,触发执行步骤404,其中,步骤404和步骤406之间也可以认为是没有关联的两个步骤或者可以是并列的两个步骤,这个步骤之间的关系类似于步骤403和步骤405。
在本发明的一些实施例中,步骤404对第一存储单元所在行中所有列内存储的数据进行行内偏移之后,具体可以包括如下步骤:
407a、接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
408a、对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
409a、从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
执行步骤407a至步骤409a与前述实施例中的步骤207b至步骤209b相同,可参阅前述实施例的描述,此处不再赘述。
在本发明的一些实施例中,步骤406确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移,具体可以包括如下步骤:
4061、从第一存储单元阵列中确定第一行,将第一行内存储的数据读入到行缓存(英文为rowbuffer)中;
4062、从行缓存中将第一行内存储的原数据写入到冗余行(英文为redundancyrow)中,冗余行为第一存储单元阵列中未存入数据的任意一行;
4063、根据第一行和预设的行间偏移量,从第一存储单元阵列中确定出第二行,将第二行内存储的数据读入到行缓存中;
4064、从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
4065、按照对第二行内存储的数据迁移到第一行的方式对第一存储单元阵列中除第一行和第二行以外的行内存储的数据进行迁移;
4066、当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中。
执行步骤4061至步骤4066与前述实施例中的步骤2041至步骤2046相同,可参阅前述实施例的描述,此处不再赘述。
在本发明的一些实施例中,步骤4066当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将所述第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中之后,具体可以包括如下步骤:
407b、接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
408b、对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
409b、从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
执行步骤407b至步骤409b与前述实施例中的步骤207a至步骤209a相同,可参阅前述实施例的描述,此处不再赘述。
需要说明的是,在前述实施例中通过步骤407b至409b描述了以行间偏移量的计算对处理器发送的读写请求进行处理,通过步骤407a至409a描述了以行内偏移量的计算对处理器发送的读写请求进行处理,在本发明的一些实施例中,若对第一存储单元阵列进行了行间偏移以及对第一行进行了行内偏移,则在对处理器发送的读写请求进行处理时,可以对读写请求中包含的地址信息同时进行行间偏移量和行内偏移量的计算,从而得到行内偏移和行间偏移后的地址信息。从所述存储器中由行间偏移和行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由行间偏移和行内偏移后的地址信息标识的存储单元中。
通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元所在行的写入计数;确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在行会增加写入计数,确定第一存储单元所在行的写入计数达到预置的阵列阈值时,对第一存储单元所在行中所有列内存储的数据进行迁移,故可以实现第一存储单元的行内写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
以本发明实施例中存储器具体为PCM为例进行说明,结合PCM存储介质本身的组织结构,分别描述基于行内偏移和行间偏移的两级偏移方法,以实现行内和行间的写均衡,可以解决PCM的写均衡问题,同时消除映射表及其查询等相关开销。
请参阅如图5所示,为本发明实施例提供的PCM中存储单元的组成示意图,PCM包括有多个存储单元阵列,其中,每个存储单元阵列中包括有多个存储单元,每个存储单元是一个二维的矩阵结构,按照row和column划分,图5中以PCM共有(n+1)个行和(m+1)个列,分别为0、1、2、…、n个行,0、1、2、…、m个列,其中,每个column又包含多个存储单元。具体的,每个存储单元可以存储1bit的数据,另外,存储单元也可以具体为多级存储单元,每个多级存储单元中可以存储多个bit的数据。
请参阅如图6所示,为本发明实施例提供的写均衡的处理方法的一种实现框架示意图,本发明实施例中通过针对每个row进行写入计数,当存在row写入计数达到行阈值之后,在row内按照字节或column大小粒度往后顺移1个byte,同时记录行内偏移量。当行内偏移发生后,读写数据要通过行内偏移量来进行纠正,从而读写到正确的位置。通过针对每个bank进行写入计数,当存在bank写入计数达到阵列阈值之后,在bank内对每个row都进行行间偏移,同时记录行间偏移量。当行间偏移发生后,读写数据要通过行间偏移量来进行纠正,从而读写到正确的位置。
接下来对图6中所示的各个模块的功能进行说明:
行解码模块(英文为rowdecoder)和列解码模块(英文为columndecoder)负责对处理器发送的读请求和写请求进行解码,解析出请求访问的行和列。
阵列计数模块(英文为bankcounter)和行计数模块(英文为rowcounter)负责对写请求的发起次数进行计数;
行偏移控制模块(英文为rowshiftingcontrolcircuit)负责对row数据进行偏移(英文为shifting)控制以及对行间偏移进行纠正;
列偏移控制模块(英文为columnshiftercontrolcircuit)负责对row内数据shifting以及数据读写的行内偏移纠正;
行间偏移量存储模块(英文为rowoffset)和行内偏移量存储模块(columnoffset)分别记录行间偏移量和行内偏移量;
偏移进展模块(英文为shiftamount)记录row间shifting的进度;
列读写驱动模块负责对列解码模块解码出的列进行读写驱动。
基于上述的实现框架,本发明实施例提供的写均衡的处理方法,主要包括如下过程:
row和bank的写入计数过程,主要可以包括如下步骤:
1)、PCM收到处理器发送的写请求,对地址进行解码,对应到bank和row上;
2)、对bank和row增加写入计数;
3)、判断PCM中各个bank是否达到bank阈值,各个row是否达到row阈值,当某个row计数达到设定的阈值后,触发该row内偏移,当bank计数超过设定的阈值后,触发row间偏移。
在本发明的一个应用场景中,row内偏移过程主要包括如下步骤:
1)、columnshifter控制模块根据rowcounter计数值进行判断,当达到行阈值后,触发该row内迁移;
2)、columnshifter控制模块将该row内所有列的数据都读入到rowbuffer;
3)、columnshifter控制模块更新columnshift值,即行内偏移值累加,若达到最大偏移值后回归0,以此循环;
4)、columnshifter控制模块启动将rowbuffer中的数据写回对应的row,由于已经更新了columnoffset,刷回的数据则写到新的偏移位置。
在本发明的一个应用场景中,请参阅如图7所示,为本发明实施例提供的行间偏移的实现方式示意图,row间偏移过程主要包括如下步骤:
1)、rowshifter第0row存储器储的数据读入到rowbuffer,然后通过rowbuffer写入冗余row;
2)、rowshifter将第1row存储器储的数据读入rowbuffer,然后写入第0row;
3)、以此类推到将nrow存储器储的数据写入n-1row;
4)、rowshifter将冗余row中存储的数据写入到第nrow;
5)、rowShifter更新rowoffset并记录该值。
在本发明的另一个应用场景中,在完成行间偏移和行内偏移之后,若处理器发起读写请求,则本发明实施例可以执行如下流程:
1)、接收读、写请求,进行row/columndecoder;
2)、将解码的row和column进入到rowshifter和columnshifter;
3)、rowshifter和columnshifter根据全局的rowoffset和该row的columnoffset进行纠正,激活正确的row和column;
4)、从正确的row和column中读出数据或写入数据。
在本发明的另一个应用场景中,在正在执行行间偏移的过程中,若处理器发起读写请求,则行间偏移过程中不中断外面读写请求的实现方式包括如下流程:
首先,在轮转过程中,要不间断外面的读写请求,通过引入偏移row计数来解决,偏移每次都从原0row开始,并进行shiftingcount,该偏移完成后shiftingcount+1,位于shiftingcount之前的row都是已经完成偏移的,需要根据完成后的rowoffset+1来访问;shiftingcount之后的row是未偏移的,按照rowoffset偏移访问,其中,对于正在shifting状态的row,移过程存在3种状态,偏移未开始,此时可以直接读取,偏移读入到rowbuffer,可以直接命中,或偏移完成,访问偏移后的row。此外,该设计的第0row在整个row偏移过程中是放在冗余row的,最后才将该row数据偏移到对应位置,所以偏移过程中需要针对该row的访问特殊处理。整个偏移完成后,更新rowoffset+1,当完成了n次偏移后,第0row的数据又回到了原来的位置,rowoffset归零。
在本发明的另一个应用场景中,在完成行间偏移和行内偏移之后,若处理器发起读写请求,则本发明实施例可以执行如下流程:
当row内偏移按照column粒度进行的时候,row和column偏移计算则可以结合rowdecoder和columndecoder来实现,具体即是通过rowdecoder和columndecoder计算读写请求的row和column时,将rowoffset和columnoffset计算进来,直接计算出对应的row和column来即可,这样可以去掉columnshifter和rowshifter。同时,row内的column进行shifting可以通过将row直接读到rowbuffer,然后进行循环位移一个column的bit位数,然后回写到row即可。
通过前述的举例说明可知,在本发明实施例中,在rowdecoder与PCM阵列之间增加的rowshifter,以及column读写驱动模块与PCM之间增加的columnshifter负责偏移校正的功能单元,row间偏移通过冗余row作为迁移数据临时跳板及迁移过程中通过记录迁移进度不影响正常读写,对于row内基于column粒度的偏移,可以直接通过算法在columndecoder上进行偏移纠正。通过row内偏移,实现了row/区块内部的写均衡,同时降低资源消耗;通过row间偏移,实现了row/区块之间的写均衡,同时消除了基于交换的映射表,只需要记录一个偏移值即可。通过row内偏移和row间偏移,达到了全局的细粒度的写均衡。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图8-a所示,本发明实施例提供的一种写均衡的处理装置800,可以包括:接收模块801、存储模块802、计数模块803、行间偏移模块804,其中,
接收模块801,用于接收处理器发送的写请求;
存储模块802,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
计数模块803,用于增加所述第一存储单元阵列的写入计数;
行间偏移模块804,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
在本发明的一些实施例中,请参阅如图8-b所示,所述行间偏移模块804,包括:第一读入子模块8041和第一写入子模块8042,其中,
第一读入子模块8041,用于从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
第一写入子模块8042,用于从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
所述第一读入子模块8041,还用于根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
所述第一写入子模块8042,还用于从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
所述第一读入子模块8041和所述第一写入子模块8042,还用于按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
所述第一写入子模块8042,还用于当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
在本发明的一些实施例中,所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
在本发明的一些实施例中,请参阅如图8-c所示,写均衡的处理装置800,相对于如图8-a所示的写均衡的处理装置,写均衡的处理装置800还包括:行内偏移模块805,其中,
所述计数模块803,还用于存储模块802根据所述写请求包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,增加所述第一存储单元所在行的写入计数;
所述行内偏移模块805,用于确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
进一步的,请参阅如图8-d所示,所述行内偏移模块805,包括:第二读入子模块8051和第二写入子模块8052,其中,
所述第二读入子模块8051,用于将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
所述第二写入子模块8052,用于根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
在本发明的一些实施例中,请参阅如图8-e所示,相对于如图8-a所示的写均衡的处理装置,所述写均衡的处理装置800,还包括:行间偏移计算模块806和第一读写模块807,其中,
所述接收模块801,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行间偏移计算模块806,用于对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
所述第一读写模块807,用于从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
在本发明的一些实施例中,请参阅如图8-f所示,相对于如图8-a所示的写均衡的处理装置,所述写均衡的处理装置800,还包括:行内偏移计算模块808和第二读写模块809,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行内偏移计算模块808,用于对所述读写请求中包含的地址信息进行偏移量的计算,得到行内偏移后的地址信息;
所述第二读写模块809,用于从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
通过以上实施例对本发明的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在的第一存储单元阵列会增加写入计数,确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间迁移,故可以实现第一存储单元阵列中行间的写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
请参阅图9-a所示,本发明实施例提供的一种写均衡的处理装置900,可以包括:接收模块901、存储模块902、计数模块903、行内偏移模块904,其中,
接收模块901,用于接收处理器发送的写请求;
存储模块902,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
计数模块903,用于增加所述第一存储单元所在行的写入计数;
行内偏移模块904,用于确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
在本发明的一些实施例中,请参阅如图9-b所示,行内偏移模块904,包括:第二读入子模块9041和第二写入子模块9042,其中,
所述第二读入子模块9041,用于将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
所述第二写入子模块9042,用于根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
在本发明的一些实施例中,请参阅如图9-c所示,写均衡的处理装置900,相对于如图9-a所示的写均衡的处理装置,写均衡的处理装置900还包括:行间偏移模块905,其中,
所述计数模块903,还用于增加所述第一存储单元阵列的写入计数;
所述行间偏移模块905,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
进一步的,请参阅如图9-d所示,所述行间偏移模块905,包括:第一读入子模块9051和第一写入子模块9052,其中,
第一读入子模块9051,用于从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
第一写入子模块9052,用于从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
所述第一读入子模块9051,还用于根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
所述第一写入子模块9052,还用于从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
所述第一读入子模块9051和所述第一写入子模块9052,还用于按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
所述第一写入子模块9052,还用于当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
在本发明的一些实施例中,所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
在本发明的一些实施例中,请参阅如图9-e所示,相对于如图9-a所示的写均衡的处理装置,所述写均衡的处理装置900,还包括:行间偏移计算模块906和第一读写模块907,其中,
所述接收模块901,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行间偏移计算模块906,用于对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
所述第一读写模块907,用于从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
在本发明的一些实施例中,请参阅如图9-f所示,相对于如图9-c所示的写均衡的处理装置,所述写均衡的处理装置900,还包括:还包括:行内偏移计算模块906和第二读写模块907,其中,
所述接收模块901,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行内偏移计算模块906,用于对所述读写请求中包含的地址信息进行偏移量的计算,得到行内偏移后的地址信息;
所述第二读写模块907,用于从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元所在行的写入计数;确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在行会增加写入计数,确定第一存储单元所在行的写入计数达到预置的阵列阈值时,对第一存储单元所在行中所有列内存储的数据进行迁移,故可以实现第一存储单元的行内写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部步骤。
接下来介绍本发明实施例提供的另一种写均衡的处理装置,请参阅图10所示,写均衡的处理装置1000包括:存储器1001、处理器1002、存储控制器1003(其中写均衡的处理装置1000中的存储器控制器1003的数量可以一个或多个,图10中以一个存储控制器为例)。在本发明的一些实施例中,存储器1001、处理器1002、存储控制器1003连接,具体的,可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
其中,在存储器中可包括存储单元阵列以及存储控制器,存储控制器用于实现读、写和刷新等操作的控制,存储单元阵列同样是由多个存储单元按行和列的形式排列组成,每个存储单元被设置于相应耦合的位线和字线之间的交叉处。具体地,存储单元通常包括一个存取晶体管T(具有选通作用)和用于存储电荷的电容C。存储控制器依据外部命令、通过对所选中的位线和字线偏置相应电信号,以实现对其中某一地址的存储单元的操作。
例如,存储控制器可包括译码器(例如行译码器和列译码器、位线驱动模块、位线驱动模块、逻辑控制模块以及读出放大器(例如灵敏放大器),读出放大器耦合至存储单元阵列上,其用于执行从向被选择的存储单元读出/写入操作,读出放大器的输出同时还耦合至存储器的I/O缓冲器中。在读操作过程中,读出放大器是否开始工作,由其使能控制信号来控制;读出放大器何时将其输出耦合至存储器的I/O缓冲器中,则由对应的列选择信号YL来控制。所以存储控制器能够用来控制对存储器的存储单元阵列进行读、写、磨损均衡的电路。
具体的,存储控制器1003用于执行如下步骤:
接收处理器发送的写请求;
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
增加所述第一存储单元阵列的写入计数;
确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
在本发明的一些实施例中,存储控制器1003,具体用于执行步骤:
从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
在本发明的一些实施例中,存储控制器1003,还用于执行步骤:
根据所述写请求包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,
增加所述第一存储单元所在行的写入计数;
确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
在本发明的一些实施例中,存储控制器1003,具体用于执行步骤:
将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
在本发明的一些实施例中,存储控制器1003,具体用于执行步骤:
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中之后,
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
在本发明的一些实施例中,存储控制器1003,具体用还于执行步骤:
对所述第一存储单元所在行中所有列内存储的数据进行行内偏移之后,
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
通过以上实施例对本发明的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在的第一存储单元阵列会增加写入计数,确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间迁移,故可以实现第一存储单元阵列中行间的写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销,并且避免使用映射表即可完成新数据的写入,简化映射操作过程。
接下来介绍本发明实施例提供的另一种写均衡的处理装置,接下来介绍本发明实施例提供的另一种写均衡的处理装置,请参阅图11所示,写均衡的处理装置1100包括:存储器1101、处理器1102、存储控制器1103(其中写均衡的处理装置1100中的存储控制器1103的数量可以一个或多个,图11中以一个存储控制器为例)。在本发明的一些实施例中,存储器1101、处理器1102、存储控制器1103连接,具体的,可通过总线或其它方式连接,其中,图11中以通过总线连接为例。
其中,在存储器中可包括存储单元阵列以及存储控制器,存储控制器用于实现读、写和刷新等操作的控制,存储单元阵列同样是由多个存储单元按行和列的形式排列组成,每个存储单元被设置于相应耦合的位线和字线之间的交叉处。具体地,存储单元通常包括一个存取晶体管T(具有选通作用)和用于存储电荷的电容C。存储控制器依据外部命令、通过对所选中的位线和字线偏置相应电信号,以实现对其中某一地址的存储单元的操作。
例如,存储控制器可包括译码器(例如行译码器和列译码器、位线驱动模块、位线驱动模块、逻辑控制模块以及读出放大器(例如灵敏放大器),读出放大器耦合至存储单元阵列上,其用于执行从向被选择的存储单元读出/写入操作,读出放大器的输出同时还耦合至存储器的I/O缓冲器中。在读操作过程中,读出放大器是否开始工作,由其使能控制信号来控制;读出放大器何时将其输出耦合至存储器的I/O缓冲器中,则由对应的列选择信号YL来控制。所以存储控制器能够用来控制对存储器的存储单元阵列进行读、写、磨损均衡的电路。
具体的,存储控制器1103用于执行步骤:
接收处理器发送的写请求;
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
增加所述第一存储单元所在行的写入计数;
确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
在本发明的一些实施例中,存储控制器1103,具体用于执行步骤:
将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
在本发明的一些实施例中,存储控制器1103,还用于执行步骤:
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,
增加所述第一存储单元阵列的写入计数;
确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
在本发明的一些实施例中,存储控制器1103,具体用于执行步骤:
从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
在本发明的一些实施例中,存储控制器1103处理器的所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
在本发明的一些实施例中,存储控制器1103,还用于执行步骤:
对所述第一存储单元所在行中所有列内存储的数据进行行内偏移之后,
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
在本发明的一些实施例中,存储控制器1103,还用于执行步骤:
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中之后,
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元所在行的写入计数;确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在行会增加写入计数,确定第一存储单元所在行的写入计数达到预置的阵列阈值时,对第一存储单元所在行中所有列内存储的数据进行迁移,故可以实现第一存储单元的行内写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销,并且避免使用映射表即可完成新数据的写入,简化映射操作过程。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (28)
1.一种写均衡的处理方法,其特征在于,包括:
接收处理器发送的写请求;
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
增加所述第一存储单元阵列的写入计数;
确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一存储单元阵列中每个行内存储的数据进行行间偏移,包括:
从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述写请求包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,所述方法还包括:
增加所述第一存储单元所在行的写入计数;
确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
4.根据权利要求3所述的方法,其特征在于,所述对所述第一存储单元所在行中所有列内存储的数据进行行内偏移,包括:
将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
5.根据权利要求2所述的方法,其特征在于,所述当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中之后,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
6.根据权利要求4所述的方法,其特征在于,所述对所述第一存储单元所在行中所有列内存储的数据进行行内偏移之后,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
7.一种写均衡的处理方法,其特征在于,包括:
接收处理器发送的写请求;
根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
增加所述第一存储单元所在行的写入计数;
确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
8.根据权利要求7所述的方法,其特征在于,所述对所述第一存储单元所在行中所有列内存储的数据进行行内偏移,包括:
将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
9.根据权利要求7所述的方法,其特征在于,所述根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,所述方法还包括:
增加所述第一存储单元阵列的写入计数;
确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
10.根据权利要求9所述的方法,其特征在于,所述对所述第一存储单元阵列中每个行内存储的数据进行行间偏移,包括:
从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
11.根据权利要求10所述的方法,其特征在于,所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
12.根据权利要求7所述的方法,其特征在于,所述对所述第一存储单元所在行中所有列内存储的数据进行行内偏移之后,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
13.根据权利要求10所述的方法,其特征在于,所述当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中之后,所述方法还包括:
接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
14.一种写均衡的处理装置,其特征在于,包括:
接收模块,用于接收处理器发送的写请求;
存储模块,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
计数模块,用于增加所述第一存储单元阵列的写入计数;
行间偏移模块,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
15.根据权利要求14所述的装置,其特征在于,所述行间偏移模块,包括:第一读入子模块和第一写入子模块,其中,
第一读入子模块,用于从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
第一写入子模块,用于从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
所述第一读入子模块,还用于根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
所述第一写入子模块,还用于从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
所述第一读入子模块和所述第一写入子模块,还用于按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
所述第一写入子模块,还用于当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
16.根据权利要求14所述的装置,其特征在于,所述写均衡的处理装置,还包括:行内偏移模块,其中,
所述计数模块,还用于所述存储模块根据所述写请求包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中之后,增加所述第一存储单元所在行的写入计数;
所述行内偏移模块,用于确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
17.根据权利要求16所述的装置,其特征在于,所述行内偏移模块,包括:第二读入子模块和第二写入子模块,其中,
所述第二读入子模块,用于将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
所述第二写入子模块,用于根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
18.根据权利要求15所述的装置,其特征在于,所述写均衡的处理装置,还包括:行间偏移计算模块和第一读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行间偏移计算模块,用于对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
所述第一读写模块,用于从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
19.根据权利要求17所述的装置,其特征在于,所述写均衡的处理装置,还包括:行内偏移计算模块和第二读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行内偏移计算模块,用于对所述读写请求中包含的地址信息进行偏移量的计算,得到行内偏移后的地址信息;
所述第二读写模块,用于从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
20.一种写均衡的处理装置,其特征在于,包括:
接收模块,用于接收处理器发送的写请求;
存储模块,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
计数模块,用于增加所述第一存储单元所在行的写入计数;
行内偏移模块,用于确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。
21.根据权利要求20所述的装置,其特征在于,所述行内偏移模块,包括:第二读入子模块和第二写入子模块,其中,
所述第二读入子模块,用于将所述第一存储单元所在行中所有列内存储的数据读入到行缓存中;
所述第二写入子模块,用于根据预设的行内偏移量,对所述行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到所述第一存储单元所在的行中。
22.根据权利要求20所述的装置,其特征在于,所述写均衡的处理装置,还包括:行间偏移模块,其中,
所述计数模块,还用于增加所述第一存储单元阵列的写入计数;
所述行间偏移模块,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
23.根据权利要求22所述的装置,其特征在于,所述行间偏移模块,包括:第一读入子模块和第一写入子模块,其中,
第一读入子模块,用于从所述第一存储单元阵列中确定第一行,将所述第一行内存储的数据读入到行缓存中;
第一写入子模块,用于从所述行缓存中将所述第一行内存储的原数据写入到冗余行中,所述冗余行为所述第一存储单元阵列中未存入数据的任意一行;
所述第一读入子模块,还用于根据所述第一行和预设的行间偏移量,从所述第一存储单元阵列中确定出第二行,将所述第二行内存储的数据读入到所述行缓存中;
所述第一写入子模块,还用于从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
所述第一读入子模块和所述第一写入子模块,还用于按照对所述第二行内存储的数据迁移到所述第一行的方式对所述第一存储单元阵列中除所述第一行和所述第二行以外的行内存储的数据进行迁移;
所述第一写入子模块,还用于当所述第一存储单元阵列中最后一个行内存储的数据迁移完成后,从所述冗余行中将所述第一行内存储的原数据写入到所述第一存储单元阵列中最后一个读出数据的行中。
24.根据权利要23所述的装置,其特征在于,所述第一行和所述第二行为所述第一存储单元阵列中相邻的两个行。
25.根据权利要求23所述的装置,其特征在于,所述写均衡的处理装置,还包括:行间偏移计算模块和第一读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行间偏移计算模块,用于对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
所述第一读写模块,用于从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
26.根据权利要求20或21所述的装置,其特征在于,所述写均衡的处理装置,还包括:行内偏移计算模块和第二读写模块,其中,
所述接收模块,还用于接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
所述行内偏移计算模块,用于对所述读写请求中包含的地址信息进行偏移量的计算,得到行内偏移后的地址信息;
所述第二读写模块,用于从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
27.一种写均衡的处理装置,其特征在于,所述写均衡的处理装置,包括:存储器、处理器、存储控制器,所述存储控制器分别和所述存储器、所述处理器连接,其中,所述存储控制器用于执行权利要求1至6中任一项所述的方法。
28.一种写均衡的处理装置,其特征在于,所述写均衡的处理装置,包括:存储器、处理器、存储控制器,所述存储控制器分别和所述存储器、所述处理器连接,其中,所述存储控制器用于执行权利要求7至13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410415097.2A CN105446894B (zh) | 2014-08-20 | 2014-08-20 | 一种写均衡的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410415097.2A CN105446894B (zh) | 2014-08-20 | 2014-08-20 | 一种写均衡的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446894A true CN105446894A (zh) | 2016-03-30 |
CN105446894B CN105446894B (zh) | 2019-02-05 |
Family
ID=55557120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410415097.2A Active CN105446894B (zh) | 2014-08-20 | 2014-08-20 | 一种写均衡的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105446894B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479834A (zh) * | 2017-08-28 | 2017-12-15 | 北京智芯微电子科技有限公司 | 一种基于cos的文件存储方法及装置 |
CN111258925A (zh) * | 2020-01-20 | 2020-06-09 | 中国科学院微电子研究所 | 非易失内存的访问方法、装置、内存控制器、设备及介质 |
WO2021128874A1 (zh) * | 2019-12-25 | 2021-07-01 | 晶晨半导体(上海)股份有限公司 | 内存接口写入均衡的控制方法及装置 |
US11556462B2 (en) | 2016-08-24 | 2023-01-17 | Futurewei Technologies, Inc. | Wear-leveling method for cross-point memory for multiple data temperature zones |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040173234A1 (en) * | 2003-03-03 | 2004-09-09 | Byun Young Kwang | Cosmetics container |
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
-
2014
- 2014-08-20 CN CN201410415097.2A patent/CN105446894B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040173234A1 (en) * | 2003-03-03 | 2004-09-09 | Byun Young Kwang | Cosmetics container |
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
Non-Patent Citations (1)
Title |
---|
谢雅旋: "一种相变存储器的写均衡算法", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11556462B2 (en) | 2016-08-24 | 2023-01-17 | Futurewei Technologies, Inc. | Wear-leveling method for cross-point memory for multiple data temperature zones |
CN107479834A (zh) * | 2017-08-28 | 2017-12-15 | 北京智芯微电子科技有限公司 | 一种基于cos的文件存储方法及装置 |
WO2021128874A1 (zh) * | 2019-12-25 | 2021-07-01 | 晶晨半导体(上海)股份有限公司 | 内存接口写入均衡的控制方法及装置 |
CN111258925A (zh) * | 2020-01-20 | 2020-06-09 | 中国科学院微电子研究所 | 非易失内存的访问方法、装置、内存控制器、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105446894B (zh) | 2019-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7809994B2 (en) | Error correction coding for multiple-sector pages in flash memory devices | |
US7526599B2 (en) | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system | |
US9275740B2 (en) | Method and apparatus for improving data integrity using threshold voltage recalibration | |
US20070300130A1 (en) | Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices | |
EP3133604B1 (en) | Method and device for fail-safe erase of flash memory | |
US10540118B2 (en) | Data storage device and methods for processing data in the data storage device | |
US8417879B2 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
CN108268337B (zh) | 于记忆装置中进行数据管理的方法、记忆装置及其控制器 | |
US20210232508A1 (en) | Last written page searching | |
US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
TWI668700B (zh) | 資料儲存裝置與記憶體裝置之資料處理方法 | |
TW201442032A (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US11301393B2 (en) | Data storage device, operation method thereof, and storage system including the same | |
CN112289360A (zh) | 读取重试阈值电压选择 | |
JP6994136B1 (ja) | メモリにおける単調カウンタ | |
US20200409554A1 (en) | Systems and methods for managing physical-to-logical address information | |
CN105446894A (zh) | 一种写均衡的处理方法和装置 | |
US11922065B2 (en) | Memory system and operating method thereof | |
US11126368B2 (en) | Systems and methods for finding a last good page in NAND open block | |
KR20200095903A (ko) | 메모리 시스템 및 그것의 동작방법 | |
WO2007137013A2 (en) | Error correction coding for multiple-sector pages in flash memory devices | |
US20200226064A1 (en) | Method of reverse mapping and data consolidation to enhance random performance | |
CN109273037B (zh) | 数据读取方法以及存储控制器 | |
US10922021B2 (en) | Data storage method based on data type identification, memory storage apparatus and memory control circuit unit | |
US11861225B2 (en) | Management unit based media management operations in memory devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |