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

文档序号:9687356阅读:来源:国知局
到写请求之后,按照写请求将需要写入的数据写入到存储器的第一 cell中,其中,第一 cell是存储器中的第一 bank中的一个cell,本发明实施例中的存储器具体指的是可以存储数据的存储介质,该存储器具体可以为PCM,存储器中通常包括有多个bank,每个bank可以是存储器中的一个区块,一个bank包含多个行(英文为row)和多个列(英文为column),上述多个行和多个列指向的多个存储单元组成一个存储单元阵列。
[0240]303、增加第一存储单元所在行的写入计数。
[0241]写均衡的处理装置完成对第一存储单元的写入操作之后,还可以增加第一存储单元所在行的写入计数。其中,第一存储单元所在行的写入计数可以是第一存储单元所在行被写入数据的写入次数,也可以是第一存储单元所在行被写入数据的数据量总和。
[0242]需要说明的是,在本发明的一些实施例中,写均衡的处理装置在第一存储单元中写入数据之后,第一存储单元所在行也被擦写一次,本发明实施例中为了获取到存储器中第一存储单元所在行的被擦写情况,需要对存储器中第一存储单元所在行的写入计数进行实时更新,故在存储器中每当存储单元中有新数据写入时,写均衡的处理装置就需要增加一次被写入新数据的第一存储单元所在行的写入次数。
[0243]在本发明实施例中,写均衡的处理装置在增加第一存储单元所在行的写入计数之后,写均衡的处理装置对存储器中各个行的写入计数进行判断,判断存储器中各个行的写入计数是否达到预置的行阈值。其中,行阈值为行被擦写的次数门限,写均衡的处理装置对存储器中行的写入计数进行阈值判断,可以获知在存储器中哪些行已经被擦写的次数超过行阈值。确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
[0244]304、确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
[0245]在本发明实施例中,行内偏移是将达到行阈值的第一存储单元所在行中所有列内存储的数据都偏移一次,这样可以实现在一个行中所有列之间的写均衡,行内偏移需要将行中所有列内存储的数据重新写入一次。在本发明的一些实施例中,确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移。
[0246]通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元所在行的写入计数;确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在行会增加写入计数,确定第一存储单元所在行的写入计数达到预置的阵列阈值时,对第一存储单元所在行中所有列内存储的数据进行迁移,故可以实现第一存储单元的行内写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
[0247]实施例四
[0248]请参阅如图4所示,本发明另一个实施例提供的写均衡的处理方法,具体可以包括如下步骤:步骤401至步骤406,其中,
[0249]执行步骤401至步骤404与前述实施例中的步骤301至304相同,可参阅前述实施例的描述,此处不再赘述。
[0250]在本发明的一些实施例中,步骤404确定第一存储单元所在行的写入计数达到预置的行阈值时,对第一存储单元所在行中所有列内存储的数据进行行内偏移,具体可以包括如下步骤:
[0251]4041、将第一存储单元所在行中所有列内存储的数据读入到行缓存中;
[0252]4042、根据预设的行内偏移量,对行缓存中所缓存的数据进行偏移处理,将经过偏移处理后的数据重新写入到第一存储单元所在的行中。
[0253]执行步骤4041至步骤4042与前述实施例中的步骤2061至2062相同,可参阅前述实施例的描述,此处不再赘述。
[0254]步骤402根据写请求包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中之后,
[0255]405、增加第一存储单元阵列的写入计数。
[0256]406、确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移。
[0257]其中,步骤405至步骤406的实现方式与前述实施例中步骤103至步骤104的实现方式相同,可参阅前述实施例的描述,此处不再赘述。
[0258]需要说明的是,在本发明实施例中,步骤405增加针对第一存储单元阵列的写入计数和步骤403增加针对第一存储单元所在行的写入计数是分别执行的,两者之间可以没有先后顺序之分,写均衡的处理装置可以先执行针对第一存储单元阵列的写入计数,再执行针对第一存储单元所在行的写入计数,也可以先执行针对第一存储单元所在行的写入计数,再执行针对第一存储单元阵列的写入计数,还可以同时执行针对第一存储单元阵列的写入计数和针对第一行的写入计数,在针对第一存储单元阵列的写入计数达到阵列阈值时,触发执行步骤406,在针对第一存储单元所在行达到行阈值时,触发执行步骤404,其中,步骤404和步骤406之间也可以认为是没有关联的两个步骤或者可以是并列的两个步骤,这个步骤之间的关系类似于步骤403和步骤405。
[0259]在本发明的一些实施例中,步骤404对第一存储单元所在行中所有列内存储的数据进行行内偏移之后,具体可以包括如下步骤:
[0260]407a、接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
[0261]408a、对所述读写请求中包含的地址信息进行行内偏移量的计算,得到行内偏移后的地址信息;
[0262]409a、从所述存储器中由所述行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行内偏移后的地址信息标识的存储单元中。
[0263]执行步骤407a至步骤409a与前述实施例中的步骤207b至步骤209b相同,可参阅前述实施例的描述,此处不再赘述。
[0264]在本发明的一些实施例中,步骤406确定第一存储单元阵列的写入计数达到预置的阵列阈值时,对第一存储单元阵列中每个行内存储的数据进行行间偏移,具体可以包括如下步骤:
[0265]4061、从第一存储单元阵列中确定第一行,将第一行内存储的数据读入到行缓存(英文为row buffer)中;
[0266]4062、从行缓存中将第一行内存储的原数据写入到冗余行(英文为redundancyrow)中,冗余行为第一存储单元阵列中未存入数据的任意一行;
[0267]4063、根据第一行和预设的行间偏移量,从第一存储单元阵列中确定出第二行,将第二行内存储的数据读入到行缓存中;
[0268]4064、从所述行缓存中将所述第二行内存储的原数据写入到所述第一行中;
[0269]4065、按照对第二行内存储的数据迁移到第一行的方式对第一存储单元阵列中除第一行和第二行以外的行内存储的数据进行迁移;
[0270]4066、当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中。
[0271]执行步骤4061至步骤4066与前述实施例中的步骤2041至步骤2046相同,可参阅前述实施例的描述,此处不再赘述。
[0272]在本发明的一些实施例中,步骤4066当第一存储单元阵列中最后一个行内存储的数据迁移完成后,从冗余行中将所述第一行内存储的原数据写入到第一存储单元阵列中最后一个读出数据的行中之后,具体可以包括如下步骤:
[0273]407b、接收处理器发送的读写请求,所述读写请求包括:读请求或写请求;
[0274]408b、对所述读写请求中包含的地址信息进行行间偏移量的计算,得到行间偏移后的地址信息;
[0275]409b、从所述存储器中由所述行间偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由所述行间偏移后的地址信息标识的存储单元中。
[0276]执行步骤407b至步骤409b与前述实施例中的步骤207a至步骤209a相同,可参阅前述实施例的描述,此处不再赘述。
[0277]需要说明的是,在前述实施例中通过步骤407b至409b描述了以行间偏移量的计算对处理器发送的读写请求进行处理,通过步骤407a至409a描述了以行内偏移量的计算对处理器发送的读写请求进行处理,在本发明的一些实施例中,若对第一存储单元阵列进行了行间偏移以及对第一行进行了行内偏移,则在对处理器发送的读写请求进行处理时,可以对读写请求中包含的地址信息同时进行行间偏移量和行内偏移量的计算,从而得到行内偏移和行间偏移后的地址信息。从所述存储器中由行间偏移和行内偏移后的地址信息标识的存储单元中读出数据,或,将所述读写请求包括的写请求对应的数据写入所述存储器中由行间偏移和行内偏移后的地址信息标识的存储单元中。
[0278]通过以上对本发明实施例的描述可知,首先接收处理器发送的写请求,根据写请求中包含的地址信息,将待写入的数据写入到地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;增加第一存储单元所在行的写入计数;确定所述第一存储单元所在行的写入计数达到预置的行阈值时,对所述第一存储单元所在行中所有列内存储的数据进行行内偏移。本发明实施例中由于在存储器中写入数据后,被写入数据的第一存储单元所在行会增加写入计数,确定第一存储单元所在行的写入计数达到预置的阵列阈值时,对第一存储单元所在行中所有列内存储的数据进行迁移,故可以实现第一存储单元的行内写均衡,避免少数存储单元擦写次数过多导致的存储可靠性问题。本发明实施例中在接收到写请求之后,可以直接将待写入的数据按照写请求包含的地址信息写入到第一存储单元,而无需对物理区块的写入次数进行查询后再写数据,故可以消除查询物理区块写入次数时较大的开销。
[0279]为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。
[0280]以本发明实施例中存储器具体为PCM为例进行说明,结合PCM存储介质本身的组织结构,分别描述基于行内偏移和行间偏移的两级偏移方法,以实现行内和行间的写均衡,可以解决PCM的写均衡问题,同时消除映射表及其查询等相关开销。
[0281]请参阅如图5所示,为本发明实施例提供的PCM中存储单元的组成示意图,PCM包括有多个存储单元阵列,其中,每个存储单元阵列中包括有多个存储单元,每个存储单元是一个二维的矩阵结构,按照row和column划分,图5中以PCM共有(n+1)个行和(m+1)个列,分别为0、1、2、…、η个行,0、1、2、…、m个列,其中,每个column又包含多个存储单元。具体的,每个存储单元可以存储lbit的数据,另外,存储单元也可以具体为多级存储单元,每个多级存储单元中可以存储多个bit的数据。
[0282]请参阅如图6所示,为本发明实施例提供的写均衡的处理方法的一种实现框架示意图,本发明实施例中通过针对每个row进行写入计数,当存在row写入计数达到行阈值之后,在row内按照字节或column大小粒度往后顺移1个byte,同时记录行内偏移量。当行内偏移发生后,读写数据要通过行内偏移量来进行纠正,从而读写到正确的位置。通过针对每个bank进行写入计数,当存在bank写入计数达到阵列阈值之后,在bank内对每个row都进行行间偏移,同时记录行间偏移量。当行间偏移发生后,读写数据要通过行间偏移量来进行纠正,从而读写到正确的位置。
[0283]接下来对图6中所示的各个模块的功能进行说明:
[0284]行解码模块(英文为row decoder)和列解码模块(英文为column decoder)负责对处理器发送的读请求和写请求进行解码,解析出请求访问的行和列。
[0285]阵列计数模块(英文为bank counter)和行计数模块(英文为row counter)负责对写请求的发起次数进行计数;
[0286]行偏移控制模块(英文为:row shifting control circuit)负责对row数据进行偏移(英文为shifting)控制以及对行间偏移进行纠正;
[0287]列偏移控制模块(英文为column shifter control circuit)负责对row内数据shifting以及数据读写的行内偏移纠正;
[0288]行间偏移量存储模块(英文为row offset)和行内偏移量存储模块(columnoffset)分别记录行间偏移量和行内偏移量;
[0289]偏移进展模块(英文为shift amount)记录row间shifting的进度;
[0290]列读写驱动模块负责对列解码模块解码出的列进行读写驱动。
[0291]基于上述的实现框架,本发明实施例提供的写均衡的处理方法,主要包括如下过程:
[0292]row和bank的写入计数过程,主要可以包括如下步骤:
[0293]1)、PCM收到处理器发送的写请求,对地址进行解码,对应到bank和row上;
[0294]2)、对bank和row增加写入计数;
[0295]3)、判断PCM中各个bank是否达到bank阈值,各个row是否达到row阈值,当某个row计数达到设定的阈值后,触发该row内偏移,当bank计数超过设定的阈值后,触发row间偏移。
[0296]在本发明的一个应用场景中,row内偏移过程主要包括如下步骤:
[0297]1)、column shifter控制模块根据row counter计数值进行判断,当达到行阈值后,触发该row内迁移;
[0298]2)、column shifter控制模块将该row内所有列的数据都读入到row buffer ;
[0299]3)、column shifter控制模块更新column shift值,即行内偏移值累加,若达到最大偏移值后回归0,以此循环;
[0300]4)、column shifter控制模块启动将row buffer中的数据写回对应的row,由于已经更新了 column offset,刷回的数据则写到新的偏移位置。
[0301]在本发明的一个应用场景中,请参阅如图7所示,为本发明实施例提供的行间偏移的实现方式示意图,row间偏移过程主要包括如下步骤:
[0302]1)、row shifter第0 row存储器储的数据读入到row buffer,然后通过rowbuffer写入冗余row ;
[0303]2)、row shifter将第1 row存储器储的数据读入row buffer,然后写入第0 row;
[0304]3)、以此类推到将n row存储器储的数据写入n-1 row ;
[0305]4)、row shifter将冗余row中存储的数据写入到第n row ;
[0306]5)、row Shifter 更新 row offset 并记录该值。
[0307]在本发明的另一个应用场景中,在完成行间偏移和行内偏移之后,若处理器发起读写请求,则本发明实施例可以执行如下流程:
[0308]1)、接收读、写请求,进行 row/column decoder ;
[0309]2)、将解码的 row 和 column 进入到 row shifter 和 column shifter ;
[0310]3)、row shifter 和 column shifter 根据全局的 row offset 和该 row 的 columnoffset进行纠正,激活正确的row和column ;
[0311]4)、从正确的row和column中读出数据或写入数据。
[0312]在本发明的另一个应用场景中,在正在执行行间偏移的过程中,若处理器发起读写请求,则行间偏移过程中不中断外面读写请求的实现方式包括如下流程:
[0313]首先,在轮转过程中,要不间断外面的读写请求,通过引入偏移row计数来解决,偏移每次都从原0 row开始,并进行shifting count,该偏移完成后shifting count+1,位于shifting count之前的row都是已经完成偏移的,需要根据完成后的row offset+1来访问;shifting count之后的row是未偏移的,按照row offset偏移访问,其中,对于正在shifting状态的row,移过程存在3种状态,偏移未开始,此时可以直接读取,偏移读入到row buffer,可以直接命中,或偏移完成,访问偏移后的row。此外,该设计的第0 row在整个row偏移过程中是放在冗余row的,最后才将该row数据偏移到对应位置,所以偏移过程中需要针对该row的访问特殊处理。整个偏移完成后,更新row offset+1,当完成了 η次偏移后,第0 row的数据又回到了原来的位置,row offset归零。
[0314]在本发明的另一个应用场景中,在完成行间偏移和行内偏移之后,若处理器发起读写请求,则本发明实施例可以执行如下流程:
[0315]当row内偏移按照column粒度进行的时候,row和column偏移计算则可以结合row decoder 和 column decoder 来实现,具体即是通过 row decoder 和 column decoder计算读写请求的row和column时,将row offset和column offset计算进来,直接计算出对应的row和column来即可,这样可以去掉column shifter和row shifter。同时,row内的column进行shifting可以通过将row直接读到row buffer,然后进行循环位移一个column的bit位数,然后回写到row即可。
[0316]通过前述的举例说明可知,在本发明实施例中,在row decoder与PCM阵列之间增加的row shifter,以及column读写驱动模块与PCM之间增加的column shifter负责偏移校正的功能单元,row间偏移通过冗余row作为迁移数据临时跳板及迁移过程中通过记录迁移进度不影响正常读写,对于row内基于column粒度的偏移,可以直接通过算法在column decoder上进行偏移纠正。通过row内偏移,实现了 row/区块内部的写均衡,同时降低资源消耗;通过row间偏移,实现了 row/区块之间的写均衡,同时消除了基于交换的映射表,只需要记录一个偏移值即可。通过row内偏移和row间偏移,达到了全局的细粒度的写均衡。
[0317]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0318]为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
[0319]请参阅图8-a所示,本发明实施例提供的一种写均衡的处理装置800,可以包括:接收模块801、存储模块802、计数模块803、行间偏移模块804,其中,
[0320]接收模块801,用于接收处理器发送的写请求;
[0321]存储模块802,用于根据所述写请求中包含的地址信息,将待写入的数据写入到所述地址信息标识的第一存储单元中,所述第一存储单元为存储器的第一存储单元阵列中的一个存储单元;
[0322]计数模块803,用于增加所述第一存储单元阵列的写入计数;
[0323]行间偏移模块804,用于确定所述第一存储单元阵列的写入计数达到预置的阵列阈值时,对所述第一存储单元阵列中每个行内存储的数据进行行间偏移。
[0324]在本发明的一些实施例中,请参阅如图8-b所示,所述行间偏移模块804
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1