一种写均衡的处理方法和装置的制造方法_2

文档序号:9687356阅读:来源:国知局
提供的一种写均衡的处理方法的流程方框示意图;
[0119]图2_a为本发明实施例提供的另一种写均衡的处理方法的流程方框示意图;
[0120]图2_b为本发明实施例提供的对第一存储单元阵列中每个行内存储的数据进行行间偏移的流程示意图;
[0121]图2-c为本发明实施例提供的对处理器发送的读写请求进行处理的一种流程示意图;
[0122]图2-d为本发明实施例提供的对第一存储单元所在行中所有列内存储的数据进行行内偏移的流程示意图;
[0123]图2_e为本发明实施例提供的对处理器发送的读写请求进行处理的另一种流程不意图;
[0124]图3为本发明实施例提供的另一种写均衡的处理方法的流程方框示意图;
[0125]图4为本发明实施例提供的另一种写均衡的处理方法的流程方框示意图;
[0126]图5为本发明实施例提供的PCM中存储单元的组成示意图;
[0127]图6为本发明实施例提供的写均衡的处理方法的一种实现框架示意图;
[0128]图7为本发明实施例提供的行间偏移的实现方式示意图;
[0129]图8_a为本发明实施例提供的一种写均衡的处理装置的组成结构示意图;
[0130]图8_b为本发明实施例提供的一种行间偏移模块的组成结构示意图;
[0131]图8-c为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0132]图8-d为本发明实施例提供的一种行内偏移模块的组成结构示意图;
[0133]图8_e为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0134]图8_f为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0135]图9_a为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0136]图9_b为本发明实施例提供的另一种行内偏移模块的组成结构示意图;
[0137]图9-c为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0138]图9-d为本发明实施例提供的一种行间偏移模块的组成结构示意图;
[0139]图9_e为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0140]图9_f为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0141]图10为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图;
[0142]图11为本发明实施例提供的另一种写均衡的处理装置的组成结构示意图。
【具体实施方式】
[0143]本发明实施例提供了一种写均衡的处理方法和装置,用于实现存储器中的磨损均衡,且可以消除查询物理区块写入次数时较大的开销。
[0144]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0145]本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
[0146]本发明的说明书和实施例中所采用的术语“存储器”可包含内存(DRAM)以及外存(磁盘),对此,本发明的实施例中不加以限定。
[0147]相应的,所采用的“存储控制器”可包含内存控制器,以及磁盘控制器,对此,本发明的实施例中不加以限定。
[0148]以下分别进行详细说明。
[0149]实施例一
[0150]本发明写均衡的处理方法的一个实施例,可应用于对存储器中的写均衡处理中,请参阅图1所示,本发明一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤101至步骤104,其中,
[0151]101、接收处理器发送的写请求。
[0152]在本发明实施例中,处理器中有数据需要写入到存储器中时,处理器向写均衡的处理装置发送写请求,以请求将待写入的数据写入到存储器中,处理器发送的写请求中包含有地址信息,该地址信息标识的存储单元为存储器中的第一存储单元。写均衡的处理装置从处理器接收到写请求,通过处理器在写请求中包含的地址信息确定出待写入的数据需要被写入的存储器地址。
[0153]102、根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中。
[0154]其中,上述第一存储单元(英文为cell)为存储器的第一存储单元阵列(英文为bank)中的一个存储单元。
[0155]本发明实施例中,写均衡的处理装置接收到写请求之后,按照写请求将需要写入的数据写入到存储器的第一 cell中,其中,第一 cell是存储器中的第一 bank中的一个cell,本发明实施例中的存储器具体指的是可以存储数据的存储介质,该存储器具体可以为相变存储器(Phase Change Memory, PCM),存储器中通常包括有多个bank,每个bank可以是存储器中的一个区块,一个bank包含多个行(英文为row)和多个列(英文为column),上述多个行和多个列指向的多个存储单元组成一个存储单元阵列。
[0156]103、增加第一存储单元阵列的写入计数。
[0157]在本发明实施例中,写均衡的处理装置完成对第一 cell的写入操作之后,增加第一 cell所在的第一存储单元阵列的写入计数。其中,第一存储单元阵列的写入计数可以是该第一存储单元阵列被写入数据的写入次数,也可以是该第一存储单元阵列被写入数据的数据量总和,数据量总和指的是写入次数与每次写入数据的数量乘积。
[0158]需要说明的是,在本发明的一些实施例中,写均衡的处理装置在第一存储单元中写入数据之后,第一存储单元所在的第一存储单元阵列均被擦写一次,本发明实施例中为了获取到存储器中各个存储单元阵列被擦写的情况,需要对存储器中各个存储单元阵列的写入计数进行实时更新,故在存储器中每当存储单元中有新数据写入时,写均衡的处理装置就需要增加一次被写入新数据的存储单元所在的存储单元阵列的写入次数,本发明实施例中为了准确描述哪个存储单元被写入新数据,将被写入新数据的存储单元定义为“第一存储单元”,相应的,定义“第一存储单元阵列”用于表示被写入新数据的存储单元所在的存储单元阵列。
[0159]104、确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移。
[0160]在本发明实施例中,写均衡的处理装置在增加第一存储单元阵列的写入计数的写入计数之后,写均衡的处理装置对存储器中各个存储单元阵列的写入计数进行判断,判断存储器中各个存储单元阵列的写入计数是否达到预置的阵列阈值,其中,阵列阈值为存储单元阵列被擦写的次数门限,写均衡的处理装置对存储器中的存储单元阵列的写入计数进行阈值判断,可以获知在存储器中哪些存储单元阵列已经被擦写的次数超过阈值。当确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移。
[0161]在本发明实施例中,写均衡的处理装置确定第一存储单元阵列的写入计数达到阵列阈值后,写均衡的处理装置需要对第一存储单元阵列中每个行内存储的数据进行行间偏移,其中,存储器中第一存储单元阵列的写入计数达到阵列阈值说明该第一存储单元阵列被擦写的次数已经达到了触发执行行间偏移的条件,在存储器中出现了不均匀的擦写,达到阵列阈值的第一存储单元阵列被频繁擦写,可能导致很快达到不可靠状态,使得整个存储介质的使用寿命变短,为了解决这样的问题,写均衡的处理装置需要对第一存储单元阵列进行行间偏移,写均衡的处理装置对上述存储单元阵列中每个行内存储的数据都偏移一次,以此可以实现第一存储单元阵列中各个行之间的写均衡。
[0162]通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元阵列的写入计数;确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在的第一存储单元阵列会增加写入计数,确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间迁移,故可以实现第一存储单元阵列中行间的写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
[0163]实施例二
[0164]请参阅如图2_a所示,本发明另一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤201至步骤206,其中,
[0165]执行步骤201至步骤204与前述实施例中的步骤101至104相同,可参阅前述实施例的描述,此处不再赘述。
[0166]步骤202根据写请求包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中之后,
[0167]步骤205、增加第一存储单元所在行的写入计数;和,
[0168]步骤206、确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
[0169]其中,写均衡的处理装置完成对第一存储单元的写入操作之后,除了执行步骤203和步骤204之外,还可以增加第一存储单元所在行的写入计数。其中,第一存储单元所在行的写入计数可以是第一存储单元所在行被写入数据的写入次数,也可以是第一存储单元所在行被写入数据的数据量总和。
[0170]需要说明的是,在本发明的一些实施例中,写均衡的处理装置在第一存储单元中写入数据之后,第一存储单元所在行也被擦写一次,本发明实施例中为了获取到存储器中各个行被擦写的情况,需要对存储器中各个行的写入计数进行实时更新,故在存储器中每当存储单元中有新数据写入时,写均衡的处理装置就需要增加一次被写入新数据的第一存储单元所在行的写入次数。[0171 ] 在本发明实施例中,写均衡的处理装置在增加第一存储单元所在行的写入计数之后,写均衡的处理装置对存储器中各个行的写入计数进行判断,判断存储器中各个行的写入计数是否达到预置的行阈值。其中,行阈值为行被擦写的次数门限,写均衡的处理装置对存储器中行的写入计数进行阈值判断,可以获知在存储器中哪些行已经被擦写的次数超过行阈值。确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
[0172]需要说明的是,在本发明实施例中,步骤203增加针对第一存储单元阵列的写入计数和步骤205增加针对第一存储单元所在行的写入计数是分别执行的,两者之间可以没有先后顺序之分,写均衡的处理装置可以先执行针对第一存储单元阵列的写入计数,再执行针对第一存储单元所在行的写入计数,也可以先执行针对第一存储单元所在行的写入计数,再执行针对第一存储单元阵列的写入计数,还可以同时执行针对第一存储单元阵列的写入计数和针对第一行的写入计数,在针对第一存储单元阵列的写入计数达到阵列阈值时,触发执行步骤204,在针对第一存储单元所在行达到行阈值时,触发执行步骤206,其中,步骤204和步骤206之间也可以认为是没有关联的两个步骤或者可以是并列的两个步骤,这个步骤之间的关系类似于步骤203和步骤205。
[0173]在本发明实施例中,行间偏移是将存储单元阵列中每个行内存储的数据都偏移一次,这样可以实现在存储单元阵列中各个行之间的写均衡,行间偏移需要将存储单元阵列中各个行内存储的数据重新写入一次。请参阅如图2-b所示,为本发明实施例提供的对第一存储单元阵列中每个行内存储的数据进行行间偏移的流程示意图,步骤204确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移,具体可以包括如下步骤:
[0174]2041、从第一存储单元阵列中确定第一行,将第一行内存储的数据读入到行缓存(英文为row buffer)中;
[0175]2042、从行缓存中将第一行内存储的原数据写入到冗余行(英文为redundancyrow)中,冗余行为第一存储单元阵列中未存入数据的任意一行;
[0176]2043、根据第一行和预设的行间偏移量,从第一存储单元阵列中确定出第二行,将第二行内存储的数据读入到行缓存中;
[0177]2044、从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
[0178]2045、按照对第二行内存储的数据迁移到第一行的方式对第一存储单元阵列中除第一行和第二行以外的行内存储的数据进行迁移;
[0179]2046、当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中。
[0180]其中,对于步骤2041,写均衡的处理装置首先从第一存储单元阵列确定出第一行,具体的,从第一存储单元阵列中确定出的第一行可以是第一存储单元阵列中的任意一个行,然后将第一行内存储的数据读入到行缓存,则该第一行就被腾出了数据,可作为空的行被再写入数据,行缓存用于暂存从一个行内读出的数据,此时在行缓存中存储的就是第一行内存储的原数据,这里第一行内存储的原数据意思是该数据原先在第一行内存储,原数据被写入新的行后,就称为行内存储的新数据。
[0181]步骤2042中写均衡的处理装置从行缓存中可以将第一行内存储的原数据写入到冗余行中,其中,冗余行是相对于第一存储单元阵列中存储有数据的所有行而言的,冗余行为第一存储单元阵列中未存入数据的任意一行,冗余行为用于中间过渡的一个空行,从第一行内读出的原数据暂存于冗余行中。
[0182]步骤2043中从第一存储单元阵列中再确定出一个行进行行间偏移,具体的,可以根据第一行和预设的行间偏移量从第一存储单元阵列中确定出第二行,该第二行是除了前述的第一行以外的一个行,在第一行内迁移出数据之后并写入到冗余行之后,写均衡的处理装置将第二行中存储器储的数据读入到行缓存中,则第二行也会被腾空,此时在行缓存中存储的是第二行内存储的原数据,其中,根据第一行和预设的行间偏移量可以计算出第二行,例如通过第一行加上行间偏移量得到第二行,另外,也可以通过其它运算方式由第一行和行间偏移量从第一存储单元阵列中确定出第二行,例如,通过第一行加上行间偏移量再加上预设的固定值从第一存储单元阵列中确定出第二行。只要能够根据第一行和行间偏移量确定出在第一行进行行间偏移之后继续进行行间偏移的行即可。
[0183]需要说明的是,写均衡的处理装置记录下行间偏移量,其中,行间偏移量指的是第一存储单元阵列中各个行内存储的数据被迁移到哪个行时产生的偏移量,结合前述的实施例描述,对于步骤2041至2044描述的实现方式中,第二行内存储的原数据进行行间偏移,被重新写入到了第一行,则第二行和第一行之间相错的间隔就是对于第二行的行间偏移量,通过行间偏移量可以从第一行中读取到原来在第一行内存储的数据。在对第一存储单元阵列中每个行在进行行间偏移时都可以记录下每个行对应的行间偏移量,那么通过行间偏移量就可以还原出各个行内存储的原数据。在本发明的一些应用场景中,为了简化对行间偏移量的记录,每个行可以采用相同的行间偏移量,那么只需要记录一个行间偏移量即可,每个行都可以通过行间偏移量来还原出各个行内存储的原数据。
[0184]步骤2043完成之后接下来执行步骤2044,将行缓存中将第二行内存储的原数据写入到被腾空的第一行中,此时在第一行内存储的新数据就是在第二行内存储的原数据,从而可以完成第一存储单元阵列中第二行的行间迁移,即可以将第二行存储的数据迁移到第一行内。步骤2041至步骤2044描述了将第二行内存储的数据迁移到第一行的实现方式,这四个步骤完成之后触发执行步骤2045,在步骤2045中按照前述的步骤2041至步骤2044描述的方式,对第一存储单元阵列内除第一行和第二行以外的其它行也进行行间迁移,将其它行内存储的数据再迁移到被腾空的行中,经过依次轮询直至将第一存储单元阵列中最后一个行内存储的数据迁移完成,然后执行步骤2046,当第一存储单元阵列中最后一个行内存储的数据被迁移出去之后,第一存储单元阵列中最后一个行就被腾空了,接下来需要将步骤2042中写入到冗余行中第一行内存储的原数据写入到被腾空的最后一个行内。
[0185]在本发明的一些实施例中,为了便于第一存储单元阵列中各个行进行行间偏移,可以按照第一存储单元阵列中各个行之间的顺序大小依次进行偏移,即在前述的实施例中,进一步的,对于根据第一行和预设的行间偏移量确定出的第二行,第一行和第二行为第一存储单元阵列中相邻的两个行,即行间偏移量的取值为一个行的行值大小。举例说明,可以先对存储单元阵列中的第O行进行行间偏移,然后根据第O行和行间偏移量确定出第I行,接下来对第I行进行行间偏移,将第I行内的数据迁移至第O行,然后再将第2行内的数据迁移至第I行,依据行之间的大小顺序对第一存储单元阵列内的各个行依次进行偏移。
[0186]可以理解的是,在本发明实施例中,第一存储单元阵列中第一个被读出的数据一直保存在冗余行中,在该第一存储单元阵列中其它行依次进行行间偏移,则在该第一存储单元阵列中最后一个读出数据的行仍是被腾空的,可以将冗余行中存储的数据(即第一行内存储的原数据)写入到上述最后一个读出数据的行中,从而可以完成对第一存储单元阵列中所有行的行间偏移,实现对第一存储单元阵列中各个行的写均衡,可以避免第一存储单元阵列中某个行被擦写次数过于频繁导致整个存储介质的使用寿命变短的问题。
[0187]举例说明,以第一存储单元阵列为bankl为例,在bankl内共包括有4个行分别为rowl、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 ;接下来将rowl存储器储的数据读入到行缓存中,此时rowl也被腾空,然后再将rowl存储器储的原数据从行缓存写入到row4内,row4存储器储的新数据就是rowl存储器储的原数据,如此就可以完成对rowl的行间偏移,即将rowl偏移至row4, bankl内row3、row4、rowl都完成了行间偏移,并且rowl是被腾空的,由于row2存储器储的原数据还被存储在冗余行中,故可以从冗余行中将row2存储器储的原数据写入到rowl中,rowl是bankl中最后一个读出数据的行。通过前述的举例说明可知,本发明实施例中可以实现从rowl — row4 — row3 — row2的循环,即row3进行行间偏移至row2,row4进行行间偏移至row3, rowl进行行间偏移至row4, row2进行行间偏移至rowl,如此就可以实现bankl内各个行之间的写均衡。
[0188]在本发明的一些实施例中,步骤2046当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将所述第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中之后,请参阅如图2-c所示,为本发明实施例提供的对处理器发送的读写请求进行处理的一种流程示意图,具体可以包括如下步骤:
[0189]207a、接收处理
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1