一種寫均衡的處理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種寫均衡的處理方法和裝置。
【背景技術(shù)】
[0002]當(dāng)前的非易失性存儲(chǔ)器(Non-Volatile Memory,NVM)的存儲(chǔ)介質(zhì)比如相變存儲(chǔ)器(Phase Change Memory, PCM)等都存在寫壽命問(wèn)題,即當(dāng)這些介質(zhì)的存儲(chǔ)單元在進(jìn)行一定次數(shù)的擦寫操作后,會(huì)發(fā)生存儲(chǔ)可靠性問(wèn)題,導(dǎo)致存儲(chǔ)失效。
[0003]為了延長(zhǎng)存儲(chǔ)介質(zhì)的寫壽命,現(xiàn)有技術(shù)中存在一種磨損均衡(Wear Leveling)的方法,主要實(shí)現(xiàn)過(guò)程是:將存儲(chǔ)介質(zhì)劃分成相同大小的物理區(qū)塊,并對(duì)所有物理區(qū)塊的寫入次數(shù)進(jìn)行計(jì)數(shù)跟蹤,當(dāng)需要寫入數(shù)據(jù)時(shí),首先要查詢出哪個(gè)物理區(qū)塊的寫入次數(shù)比較小,然后通過(guò)映射表將新寫入的數(shù)據(jù)從邏輯區(qū)塊優(yōu)先映射到寫入次數(shù)小的物理區(qū)塊,當(dāng)某個(gè)物理區(qū)塊寫入次數(shù)過(guò)多時(shí),還需要查詢寫入次數(shù)小的物理區(qū)塊并進(jìn)行替換。通過(guò)將寫入的數(shù)據(jù)量平均分布到存儲(chǔ)介質(zhì)的所有存儲(chǔ)單元上,能夠讓寫請(qǐng)求均勻分布到所有物理區(qū)塊上,達(dá)到磨損均衡,從而延長(zhǎng)整個(gè)存儲(chǔ)介質(zhì)的使用壽命。
[0004]在實(shí)現(xiàn)本發(fā)明的過(guò)程中,本發(fā)明的發(fā)明人發(fā)現(xiàn):現(xiàn)有技術(shù)中的寫均衡方法在寫入數(shù)據(jù)前,總是需要不斷的查詢各個(gè)物理區(qū)塊的寫入次數(shù),才能確定將數(shù)據(jù)寫入到哪個(gè)物理區(qū)塊,每次查詢物理區(qū)塊的寫入次數(shù)導(dǎo)致查詢開(kāi)銷比較大。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供了一種寫均衡的處理方法和裝置,用于實(shí)現(xiàn)存儲(chǔ)器中的磨損均衡,且可以消除查詢物理區(qū)塊寫入次數(shù)時(shí)較大的開(kāi)銷。
[0006]為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供以下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供一種寫均衡的處理方法,包括:
[0008]接收處理器發(fā)送的寫請(qǐng)求;
[0009]根據(jù)所述寫請(qǐng)求中包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元中,所述第一存儲(chǔ)單元為存儲(chǔ)器的第一存儲(chǔ)單元陣列中的一個(gè)存儲(chǔ)單元;
[0010]增加所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù);
[0011]確定所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù)達(dá)到預(yù)置的陣列閾值時(shí),對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移。
[0012]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移,包括:
[0013]從所述第一存儲(chǔ)單元陣列中確定第一行,將所述第一行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0014]從所述行緩存中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到冗余行中,所述冗余行為所述第一存儲(chǔ)單元陣列中未存入數(shù)據(jù)的任意一行;
[0015]根據(jù)所述第一行和預(yù)設(shè)的行間偏移量,從所述第一存儲(chǔ)單元陣列中確定出第二行,將所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到所述行緩存中;
[0016]從所述行緩存中將所述第二行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一行中;
[0017]按照對(duì)所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移到所述第一行的方式對(duì)所述第一存儲(chǔ)單元陣列中除所述第一行和所述第二行以外的行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行遷移;
[0018]當(dāng)所述第一存儲(chǔ)單元陣列中最后一個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移完成后,從所述冗余行中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一存儲(chǔ)單元陣列中最后一個(gè)讀出數(shù)據(jù)的行中。
[0019]結(jié)合第一方面,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述寫請(qǐng)求包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元中之后,所述方法還包括:
[0020]增加所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù);
[0021]確定所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù)達(dá)到預(yù)置的行閾值時(shí),對(duì)所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行內(nèi)偏移。
[0022]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述對(duì)所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行內(nèi)偏移,包括:
[0023]將所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0024]根據(jù)預(yù)設(shè)的行內(nèi)偏移量,對(duì)所述行緩存中所緩存的數(shù)據(jù)進(jìn)行偏移處理,將經(jīng)過(guò)偏移處理后的數(shù)據(jù)重新寫入到所述第一存儲(chǔ)單元所在的行中。
[0025]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述當(dāng)所述第一存儲(chǔ)單元陣列中最后一個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移完成后,從所述冗余行中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一存儲(chǔ)單元陣列中最后一個(gè)讀出數(shù)據(jù)的行中之后,所述方法還包括:
[0026]接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0027]對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行行間偏移量的計(jì)算,得到行間偏移后的地址信息;
[0028]從所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0029]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0030]在對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移時(shí),對(duì)所述第一存儲(chǔ)單元陣列中正在進(jìn)行偏移的行進(jìn)行狀態(tài)標(biāo)記,標(biāo)記為正在進(jìn)行偏移;
[0031]在對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移時(shí),對(duì)所述第一存儲(chǔ)單元陣列中未開(kāi)始進(jìn)行偏移的行進(jìn)行標(biāo)記,標(biāo)記為未開(kāi)始偏移;
[0032]在對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移時(shí),對(duì)所述第一存儲(chǔ)單元陣列中已經(jīng)完成偏移的行進(jìn)行狀態(tài)標(biāo)記,標(biāo)記為已經(jīng)完成偏移。
[0033]第二方面,本發(fā)明實(shí)施例還提供一種寫均衡的處理方法,包括:
[0034]接收處理器發(fā)送的寫請(qǐng)求;
[0035]根據(jù)所述寫請(qǐng)求中包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元cell中,所述第一存儲(chǔ)單元為存儲(chǔ)器的第一存儲(chǔ)單元陣列bank中的一個(gè)存儲(chǔ)單元;
[0036]增加所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù);
[0037]確定所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù)達(dá)到預(yù)置的行閾值時(shí),對(duì)所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行內(nèi)偏移。
[0038]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述對(duì)所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行內(nèi)偏移,包括:
[0039]將所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0040]根據(jù)預(yù)設(shè)的行內(nèi)偏移量,對(duì)所述行緩存中所緩存的數(shù)據(jù)進(jìn)行偏移處理,將經(jīng)過(guò)偏移處理后的數(shù)據(jù)重新寫入到所述第一存儲(chǔ)單元所在的行中。
[0041]結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述寫請(qǐng)求中包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元cell中之后,所述方法還包括:
[0042]增加所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù);
[0043]確定所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù)達(dá)到預(yù)置的陣列閾值時(shí),對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移。
[0044]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移,包括:
[0045]從所述第一存儲(chǔ)單元陣列中確定第一行,將所述第一行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0046]從所述行緩存中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到冗余行中,所述冗余行為所述第一存儲(chǔ)單元陣列中未存入數(shù)據(jù)的任意一行;
[0047]根據(jù)所述第一行和預(yù)設(shè)的行間偏移量,從所述第一存儲(chǔ)單元陣列中確定出第二行,將所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到所述行緩存中;
[0048]從所述行緩存中將所述第二行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一行中;
[0049]按照對(duì)所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移到所述第一行的方式對(duì)所述第一存儲(chǔ)單元陣列中除所述第一行和所述第二行以外的行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行遷移;
[0050]當(dāng)所述第一存儲(chǔ)單元陣列中最后一個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移完成后,從所述冗余行中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一存儲(chǔ)單元陣列中最后一個(gè)讀出數(shù)據(jù)的行中。
[0051]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述第一行和所述第二行為所述第一存儲(chǔ)單元陣列中相鄰的兩個(gè)行。
[0052]結(jié)合第二方面,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0053]接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0054]對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行行內(nèi)偏移量的計(jì)算,得到行內(nèi)偏移后的地址信息;
[0055]從所述存儲(chǔ)器中由所述行內(nèi)偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行內(nèi)偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0056]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第六種可能的實(shí)現(xiàn)方式中,所述當(dāng)所述第一存儲(chǔ)單元陣列中最后一個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移完成后,從所述冗余行中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一存儲(chǔ)單元陣列中最后一個(gè)讀出數(shù)據(jù)的行中之后,所述方法還包括:
[0057]接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0058]對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行行間偏移量的計(jì)算,得到行間偏移后的地址信息;
[0059]從所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0060]第三方面,本發(fā)明實(shí)施例提供一種寫均衡的處理裝置,包括:
[0061]接收模塊,用于接收處理器發(fā)送的寫請(qǐng)求;
[0062]存儲(chǔ)模塊,用于根據(jù)所述寫請(qǐng)求中包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元中,所述第一存儲(chǔ)單元為存儲(chǔ)器的第一存儲(chǔ)單元陣列中的一個(gè)存儲(chǔ)單元;
[0063]計(jì)數(shù)模塊,用于增加所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù);
[0064]行間偏移模塊,用于確定所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù)達(dá)到預(yù)置的陣列閾值時(shí),對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移。
[0065]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述行間偏移模塊,包括:第一讀入子模塊和第一寫入子模塊,其中,
[0066]第一讀入子模塊,用于從所述第一存儲(chǔ)單元陣列中確定第一行,將所述第一行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0067]第一寫入子模塊,用于從所述行緩存中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到冗余行中,所述冗余行為所述第一存儲(chǔ)單元陣列中未存入數(shù)據(jù)的任意一行;
[0068]所述第一讀入子模塊,還用于根據(jù)所述第一行和預(yù)設(shè)的行間偏移量,從所述第一存儲(chǔ)單元陣列中確定出第二行,將所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到所述行緩存中;
[0069]所述第一寫入子模塊,還用于從所述行緩存中將所述第二行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一行中;
[0070]所述第一讀入子模塊和所述第一寫入子模塊,還用于按照對(duì)所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移到所述第一行的方式對(duì)所述第一存儲(chǔ)單元陣列中除所述第一行和所述第二行以外的行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行遷移;
[0071]所述第一寫入子模塊,還用于當(dāng)所述第一存儲(chǔ)單元陣列中最后一個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移完成后,從所述冗余行中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一存儲(chǔ)單元陣列中最后一個(gè)讀出數(shù)據(jù)的行中。
[0072]結(jié)合第三方面,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述寫均衡的處理裝置,還包括:行內(nèi)偏移模塊,其中,
[0073]所述計(jì)數(shù)模塊,還用于所述存儲(chǔ)模塊根據(jù)所述寫請(qǐng)求包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元中之后,增加所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù);
[0074]所述行內(nèi)偏移模塊,用于確定所第一存儲(chǔ)單元所在行的寫入計(jì)數(shù)達(dá)到預(yù)置的行閾值時(shí),對(duì)所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行內(nèi)偏移。
[0075]結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能的實(shí)現(xiàn)方式中,所述行內(nèi)偏移模塊,包括:第二讀入子模塊和第二寫入子模塊,其中,
[0076]所述第二讀入子模塊,用于將所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0077]所述第二寫入子模塊,用于根據(jù)預(yù)設(shè)的行內(nèi)偏移量,對(duì)所述行緩存中所緩存的數(shù)據(jù)進(jìn)行偏移處理,將經(jīng)過(guò)偏移處理后的數(shù)據(jù)重新寫入到所述第一存儲(chǔ)單元所在的行中。
[0078]結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第四種可能的實(shí)現(xiàn)方式中,所述寫均衡的處理裝置,還包括:行間偏移計(jì)算模塊和第一讀寫模塊,其中,
[0079]所述接收模塊,還用于接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0080]所述行間偏移計(jì)算模塊,用于對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行行間偏移量的計(jì)算,得到行間偏移后的地址信息;
[0081]所述第一讀寫模塊,用于從所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0082]結(jié)合第三方面的第二種可能或者第三種可能的實(shí)現(xiàn)方式,在第三方面的第五種可能的實(shí)現(xiàn)方式中,所述寫均衡的處理裝置,還包括:行內(nèi)偏移計(jì)算模塊和第二讀寫模塊,其中,
[0083]所述接收模塊,還用于接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0084]所述行內(nèi)偏移計(jì)算模塊,用于對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行偏移量的計(jì)算,得到行內(nèi)偏移后的地址信息;
[0085]所述第二讀寫模塊,用于從所述存儲(chǔ)器中由所述行內(nèi)偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行內(nèi)偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0086]第四方面,本發(fā)明實(shí)施例還提供一種寫均衡的處理裝置,包括:
[0087]接收模塊,用于接收處理器發(fā)送的寫請(qǐng)求;
[0088]存儲(chǔ)模塊,用于根據(jù)所述寫請(qǐng)求中包含的地址信息,將待寫入的數(shù)據(jù)寫入到所述地址信息標(biāo)識(shí)的第一存儲(chǔ)單元中,所述第一存儲(chǔ)單元為存儲(chǔ)器的第一存儲(chǔ)單元陣列中的一個(gè)存儲(chǔ)單元;
[0089]計(jì)數(shù)模塊,用于增加所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù);
[0090]行內(nèi)偏移模塊,用于確定所述第一存儲(chǔ)單元所在行的寫入計(jì)數(shù)達(dá)到預(yù)置的行閾值時(shí),對(duì)所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行內(nèi)偏移。
[0091]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述行內(nèi)偏移模塊,包括:第二讀入子模塊和第二寫入子模塊,其中,
[0092]所述第二讀入子模塊,用于將所述第一存儲(chǔ)單元所在行中所有列內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0093]所述第二寫入子模塊,用于根據(jù)預(yù)設(shè)的行內(nèi)偏移量,對(duì)所述行緩存中所緩存的數(shù)據(jù)進(jìn)行偏移處理,將經(jīng)過(guò)偏移處理后的數(shù)據(jù)重新寫入到所述第一存儲(chǔ)單元所在的行中。
[0094]結(jié)合第四方面的第一種可能的實(shí)現(xiàn)方式,在第四方面的第二種可能的實(shí)現(xiàn)方式中,所述寫均衡的處理裝置,還包括:行間偏移模塊,其中,
[0095]所述計(jì)數(shù)模塊,還用于增加所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù);
[0096]所述行間偏移模塊,用于確定所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù)達(dá)到預(yù)置的陣列閾值時(shí),對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移。
[0097]結(jié)合第四方面的第二種可能的實(shí)現(xiàn)方式,在第四方面的第三種可能的實(shí)現(xiàn)方式中,所述行間偏移模塊,包括:第一讀入子模塊和第一寫入子模塊,其中,
[0098]第一讀入子模塊,用于從所述第一存儲(chǔ)單元陣列中確定第一行,將所述第一行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到行緩存中;
[0099]第一寫入子模塊,用于從所述行緩存中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到冗余行中,所述冗余行為所述第一存儲(chǔ)單元陣列中未存入數(shù)據(jù)的任意一行;
[0100]所述第一讀入子模塊,還用于根據(jù)所述第一行和預(yù)設(shè)的行間偏移量,從所述第一存儲(chǔ)單元陣列中確定出第二行,將所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)讀入到所述行緩存中;
[0101]所述第一寫入子模塊,還用于從所述行緩存中將所述第二行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一行中;
[0102]所述第一讀入子模塊和所述第一寫入子模塊,還用于按照對(duì)所述第二行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移到所述第一行的方式對(duì)所述第一存儲(chǔ)單元陣列中除所述第一行和所述第二行以外的行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行遷移;
[0103]所述第一寫入子模塊,還用于當(dāng)所述第一存儲(chǔ)單元陣列中最后一個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)遷移完成后,從所述冗余行中將所述第一行內(nèi)存儲(chǔ)的原數(shù)據(jù)寫入到所述第一存儲(chǔ)單元陣列中最后一個(gè)讀出數(shù)據(jù)的行中。
[0104]結(jié)合第四方面的第三種可能的實(shí)現(xiàn)方式,在第四方面的第四種可能的實(shí)現(xiàn)方式中,所述第一行和所述第二行為所述第一存儲(chǔ)單元陣列中相鄰的兩個(gè)行。
[0105]結(jié)合第四方面的第三種可能的實(shí)現(xiàn)方式,在第四方面的第五種可能的實(shí)現(xiàn)方式中,所述寫均衡的處理裝置,還包括:行間偏移計(jì)算模塊和第一讀寫模塊,其中,
[0106]所述接收模塊,還用于接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0107]所述行間偏移計(jì)算模塊,用于對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行行間偏移量的計(jì)算,得到行間偏移后的地址信息;
[0108]所述第一讀寫模塊,用于從所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行間偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0109]結(jié)合第四方面或第四方面的第一種可能的實(shí)現(xiàn)方式,在第四方面的第六種可能的實(shí)現(xiàn)方式中,所述寫均衡的處理裝置,還包括:行內(nèi)偏移計(jì)算模塊和第二讀寫模塊,其中,
[0110]所述接收模塊,還用于接收處理器發(fā)送的讀寫請(qǐng)求,所述讀寫請(qǐng)求包括:讀請(qǐng)求或?qū)懻?qǐng)求;
[0111]所述行內(nèi)偏移計(jì)算模塊,用于對(duì)所述讀寫請(qǐng)求中包含的地址信息進(jìn)行偏移量的計(jì)算,得到行內(nèi)偏移后的地址信息;
[0112]所述第二讀寫模塊,用于從所述存儲(chǔ)器中由所述行內(nèi)偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中讀出數(shù)據(jù),或,將所述讀寫請(qǐng)求包括的寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫入所述存儲(chǔ)器中由所述行內(nèi)偏移后的地址信息標(biāo)識(shí)的存儲(chǔ)單元中。
[0113]第五方面,本發(fā)明實(shí)施例還提供一種寫均衡的處理裝置,包括:存儲(chǔ)器、處理器、存儲(chǔ)控制器,所述存儲(chǔ)控制器分別和所述存儲(chǔ)器、所述處理器、所述處理器連接,其中,所述存儲(chǔ)控制器用于執(zhí)行第一方面或第一方面的第一至第五種可能中的任一項(xiàng)所述的方法。
[0114]第六方面,本發(fā)明實(shí)施例還提供一種寫均衡的處理裝置,包括:存儲(chǔ)器、處理器、存儲(chǔ)控制器,所述存儲(chǔ)控制器分別和所述存儲(chǔ)器、所述處理器、所述處理器連接,其中,所述存儲(chǔ)控制器用于執(zhí)行第二方面或第二方面的第一種可能至第六種可能中的任一項(xiàng)所述的方法。
[0115]從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
[0116]在本發(fā)明實(shí)施例中,首先接收處理器發(fā)送的寫請(qǐng)求,根據(jù)寫請(qǐng)求中包含的地址信息,將待寫入的數(shù)據(jù)寫入到地址信息標(biāo)識(shí)的第一存儲(chǔ)單元中,第一存儲(chǔ)單元為存儲(chǔ)器的第一存儲(chǔ)單元陣列中的一個(gè)存儲(chǔ)單元;增加第一存儲(chǔ)單元陣列的寫入計(jì)數(shù);確定所述第一存儲(chǔ)單元陣列的寫入計(jì)數(shù)達(dá)到預(yù)置的陣列閾值時(shí),對(duì)所述第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間偏移。本發(fā)明實(shí)施例中由于在存儲(chǔ)器中寫入數(shù)據(jù)后,被寫入數(shù)據(jù)的第一存儲(chǔ)單元所在的第一存儲(chǔ)單元陣列會(huì)增加寫入計(jì)數(shù),確定第一存儲(chǔ)單元陣列的寫入計(jì)數(shù)達(dá)到預(yù)置的陣列閾值時(shí),對(duì)第一存儲(chǔ)單元陣列中每個(gè)行內(nèi)存儲(chǔ)的數(shù)據(jù)進(jìn)行行間遷移,故可以實(shí)現(xiàn)第一存儲(chǔ)單元陣列中行間的寫均衡,避免少數(shù)存儲(chǔ)單元擦寫次數(shù)過(guò)多導(dǎo)致的存儲(chǔ)可靠性問(wèn)題。本發(fā)明實(shí)施例中在接收到寫請(qǐng)求之后,可以直接將待寫入的數(shù)據(jù)按照寫請(qǐng)求包含的地址信息寫入到第一存儲(chǔ)單元,而無(wú)需對(duì)物理區(qū)塊的寫入次數(shù)進(jìn)行查詢后再寫數(shù)據(jù),故可以消除查詢物理區(qū)塊寫入次數(shù)時(shí)較大的開(kāi)銷。
【附圖說(shuō)明】
[0117]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)講,還可以根據(jù)這些附圖獲得其他的附圖。
[0118]圖1為本發(fā)明實(shí)施例