本發(fā)明屬于固態(tài)盤存儲(chǔ)技術(shù)領(lǐng)域,更具體地,涉及一種閃存錯(cuò)誤模式的測(cè)試方法和系統(tǒng)。
背景技術(shù):
基于閃存的固態(tài)盤(Solid State Disk,簡(jiǎn)稱SSD)具有存取速度快、抗震防摔、高性能、低功耗等被廣泛應(yīng)用于存儲(chǔ)解決方案中。隨著人們對(duì)存儲(chǔ)需求的不斷增大,SSD逐漸成為計(jì)算機(jī)存儲(chǔ)系統(tǒng)的重要組成部分。
隨著SSD閃存中每個(gè)單元存儲(chǔ)的比特?cái)?shù)越來(lái)越多,SSD的存儲(chǔ)容量得以提升,然而與此同時(shí),SSD的可靠性卻急劇下降,這使得當(dāng)前的糾錯(cuò)碼(例如BCH糾錯(cuò)碼)不能滿足保證SSD可靠性的需求。為了提供有效的糾錯(cuò)碼算法,以保證SSD的可靠性和使用壽命,需要對(duì)SSD的失效模式進(jìn)行深入的研究,然而,目前對(duì)閃存失效模式測(cè)試方法的研究存在以下兩個(gè)不足之處:(1)現(xiàn)有的閃存失效模式測(cè)試方法不能研究特定的數(shù)據(jù)模式對(duì)閃存失效模式的影響;(2)現(xiàn)有的閃存失效模式測(cè)試方法不能研究固態(tài)盤閃存頁(yè)面中特定位置的失效模式。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種閃存錯(cuò)誤模式的測(cè)試方法和系統(tǒng),其目的在于,通過(guò)對(duì)SSD的失效模式進(jìn)行分析,其分析結(jié)果可供糾錯(cuò)碼算法使用,從而保證SSD的可靠性和使用壽命。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種閃存錯(cuò)誤模式的測(cè)試方法,包括以下步驟:
(1)根據(jù)主機(jī)發(fā)出的寫入數(shù)據(jù)請(qǐng)求,根據(jù)該寫入數(shù)據(jù)請(qǐng)求為不同類型的數(shù)據(jù)分配對(duì)應(yīng)的緩存,所有的緩存組成數(shù)據(jù)池;
(2)接收來(lái)自用戶的順序?qū)懭胝?qǐng)求,并根據(jù)該順序?qū)懭胝?qǐng)求為緩存中的所有數(shù)據(jù)分配頁(yè)面地址;
(3)根據(jù)步驟(2)中分配的頁(yè)面地址將緩存中的所有數(shù)據(jù)寫入到閃存頁(yè)面中;
(4)根據(jù)步驟(2)中分配的第一個(gè)頁(yè)面地址將存儲(chǔ)在閃存頁(yè)面中的對(duì)應(yīng)數(shù)據(jù)讀出,并將讀出的數(shù)據(jù)與緩存中的對(duì)應(yīng)數(shù)據(jù)進(jìn)行比較,以統(tǒng)計(jì)第一個(gè)數(shù)據(jù)的比特位的錯(cuò)誤數(shù)量和錯(cuò)誤位置;
(5)將統(tǒng)計(jì)出的第一個(gè)數(shù)據(jù)的比特位的錯(cuò)誤數(shù)量和錯(cuò)誤位置和對(duì)應(yīng)的頁(yè)面地址作為一個(gè)信息條目存儲(chǔ)在錯(cuò)誤信息列表中;
(6)重復(fù)步驟(4)和(5),直到對(duì)緩存中所有數(shù)據(jù)執(zhí)行完對(duì)應(yīng)操作為止;
(7)將錯(cuò)誤信息列表中比特位的錯(cuò)誤信息包括比特位錯(cuò)誤數(shù)量和錯(cuò)誤位置、以及對(duì)應(yīng)的頁(yè)面地址通過(guò)統(tǒng)計(jì)信息操作存儲(chǔ)在日志文件中。
優(yōu)選地,步驟(1)中緩存的大小等于閃存的頁(yè)面大小,數(shù)據(jù)類型包括有隨機(jī)生成的數(shù)據(jù),以及人為指定的數(shù)據(jù)。
按照本發(fā)明的另一方面,提供了一種閃存錯(cuò)誤模式的測(cè)試系統(tǒng),包括:
第一模塊,用于根據(jù)主機(jī)發(fā)出的寫入數(shù)據(jù)請(qǐng)求,根據(jù)該寫入數(shù)據(jù)請(qǐng)求為不同類型的數(shù)據(jù)分配對(duì)應(yīng)的緩存,所有的緩存組成數(shù)據(jù)池;
第二模塊,用于接收來(lái)自用戶的順序?qū)懭胝?qǐng)求,并根據(jù)該順序?qū)懭胝?qǐng)求為緩存中的所有數(shù)據(jù)分配頁(yè)面地址;
第三模塊,用于根據(jù)第二模塊中分配的頁(yè)面地址將緩存中的所有數(shù)據(jù)寫入到閃存頁(yè)面中;
第四模塊,用于根據(jù)第二模塊中分配的第一個(gè)頁(yè)面地址將存儲(chǔ)在閃存頁(yè)面中的對(duì)應(yīng)數(shù)據(jù)讀出,并將讀出的數(shù)據(jù)與緩存中的對(duì)應(yīng)數(shù)據(jù)進(jìn)行比較,以統(tǒng)計(jì)第一個(gè)數(shù)據(jù)的比特位的錯(cuò)誤數(shù)量和錯(cuò)誤位置;
第五模塊,用于將統(tǒng)計(jì)出的第一個(gè)數(shù)據(jù)的比特位的錯(cuò)誤數(shù)量和錯(cuò)誤位置和對(duì)應(yīng)的頁(yè)面地址作為一個(gè)信息條目存儲(chǔ)在錯(cuò)誤信息列表中;
第六模塊,用于重復(fù)第四模塊和第五模塊,直到對(duì)緩存中所有數(shù)據(jù)執(zhí)行完對(duì)應(yīng)操作為止;
第七模塊,用于將錯(cuò)誤信息列表中比特位的錯(cuò)誤信息包括比特位錯(cuò)誤數(shù)量和錯(cuò)誤位置、以及對(duì)應(yīng)的頁(yè)面地址通過(guò)統(tǒng)計(jì)信息操作存儲(chǔ)在日志文件中。
總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
(1)本發(fā)明提供了SSD的失效模式的分析結(jié)果,其能夠供糾錯(cuò)碼算法使用,從而保證SSD的可靠性和使用壽命;
(2)本發(fā)明方法能夠?qū)﹂W存中各種失效模式特征進(jìn)行研究和分析;
(3)本發(fā)明通過(guò)使用特殊的數(shù)據(jù)結(jié)構(gòu)和操作能夠獲得存儲(chǔ)在閃存單元中的具體比特錯(cuò)誤行為特征,深刻的理解比特錯(cuò)誤特征,有利于設(shè)計(jì)相應(yīng)的糾錯(cuò)技術(shù)以保證數(shù)據(jù)可靠性。
附圖說(shuō)明
圖1為本發(fā)明閃存錯(cuò)誤模式的測(cè)試方法的設(shè)計(jì)結(jié)構(gòu)圖。
圖2為本發(fā)明閃存錯(cuò)誤模式的測(cè)試方法的基本流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
本發(fā)明的結(jié)構(gòu)設(shè)計(jì)圖如附圖1所示,在對(duì)閃存的錯(cuò)誤模式進(jìn)行測(cè)試時(shí),訪問(wèn)閃存的頁(yè)地址序列,一般稱為IO模式;訪問(wèn)閃存時(shí)傳輸?shù)綌?shù)據(jù)塊中的“0”,“1”比特序列,一般稱為數(shù)據(jù)模式。為了有效地統(tǒng)計(jì)出在訪問(wèn)閃存的過(guò)程中,閃存介質(zhì)中出現(xiàn)的比特錯(cuò)誤,我們讀取閃存頁(yè)中的數(shù)據(jù)時(shí)會(huì)繞過(guò)糾錯(cuò)碼操作,獲得存儲(chǔ)在單元中的原始數(shù)據(jù),因?yàn)樵陂W存測(cè)試系統(tǒng)中,如果有糾錯(cuò)碼模塊的存在,那么返回的數(shù)據(jù)是經(jīng)過(guò)糾錯(cuò)碼糾正以后的數(shù)據(jù),如果這樣我們就不能獲得存儲(chǔ)在底層單元中的最初的比特?cái)?shù)據(jù),也就不能獲得相關(guān)的比特錯(cuò)誤特征信息。測(cè)試主要分為兩個(gè)階段進(jìn)行,第一階段:數(shù)據(jù)的寫入,第二階段:數(shù)據(jù)的讀出檢驗(yàn)。在數(shù)據(jù)寫入階段,在內(nèi)存中初始化一個(gè)大的數(shù)據(jù)池,用于提供被寫入到閃存物理頁(yè)中的數(shù)據(jù),數(shù)據(jù)池中的數(shù)據(jù)被存儲(chǔ)在相應(yīng)的緩存中,每一個(gè)緩存的大小與一個(gè)頁(yè)的大小相同。當(dāng)數(shù)據(jù)寫入閃存介質(zhì)時(shí),會(huì)根據(jù)一定的規(guī)則計(jì)算出一個(gè)緩存索引,根據(jù)該索引,從緩存中提取對(duì)應(yīng)的數(shù)據(jù),將其中的數(shù)據(jù)寫入物理頁(yè)中。在數(shù)據(jù)檢驗(yàn)階段,先對(duì)該頁(yè)執(zhí)行繞過(guò)糾錯(cuò)碼操作,目的是提取出存儲(chǔ)在閃存單元中的原始數(shù)據(jù),根據(jù)同樣的規(guī)則計(jì)算緩存索引,將緩存中的數(shù)據(jù)與從閃存物理頁(yè)中讀出的原始數(shù)據(jù)進(jìn)行比對(duì),統(tǒng)計(jì)介質(zhì)中產(chǎn)生的比特錯(cuò)誤數(shù)量和位置。在測(cè)試系統(tǒng)中,我們?cè)O(shè)計(jì)了兩個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu):用于存儲(chǔ)訪問(wèn)閃存地址序列的地址列表和用于存儲(chǔ)每一個(gè)頁(yè)對(duì)應(yīng)的比特錯(cuò)誤信息(比特錯(cuò)誤位置和數(shù)量)的錯(cuò)誤信息列表。在地址列表中,每一個(gè)條目對(duì)應(yīng)一個(gè)物理頁(yè)地址,地址結(jié)構(gòu)為(通道D、晶元C、塊B、頁(yè)P(yáng)),根據(jù)訪問(wèn)方式的不同,列表中的地址序列不同。在數(shù)據(jù)寫入階段,物理頁(yè)的寫入順序以及數(shù)據(jù)檢驗(yàn)階段物理頁(yè)的讀取順序都由地址列表中的地址指定。在錯(cuò)誤信息列表中,每一個(gè)條目存儲(chǔ)的信息包括兩個(gè)部分,物理頁(yè)的地址和對(duì)應(yīng)的比特錯(cuò)誤信息,錯(cuò)誤信息列表中的頁(yè)地址序列與地址列表中的地址保持一致。
本發(fā)明的測(cè)試方法主要包括數(shù)據(jù)寫入到閃存中和數(shù)據(jù)從閃存中讀出檢驗(yàn)錯(cuò)誤兩個(gè)階段,結(jié)合圖1來(lái)說(shuō)明該測(cè)試方法在具體實(shí)施時(shí),主要的步驟如下:
(1)根據(jù)主機(jī)發(fā)出的寫入數(shù)據(jù)請(qǐng)求,根據(jù)該寫入數(shù)據(jù)請(qǐng)求為不同類型的數(shù)據(jù)分配對(duì)應(yīng)的緩存,所有的緩存組成數(shù)據(jù)池;具體而言,該緩存的大小等于閃存的頁(yè)面大小,數(shù)據(jù)類型包括有隨機(jī)生成的數(shù)據(jù),以及人為指定的數(shù)據(jù)(比如全0數(shù)據(jù),以及全1數(shù)據(jù)等);
如圖1所示,該不同類型的數(shù)據(jù)根據(jù)主機(jī)發(fā)出的寫入數(shù)據(jù)請(qǐng)求由數(shù)據(jù)模式生成器提供;
本步驟的優(yōu)點(diǎn)在于,能夠根據(jù)主機(jī)發(fā)出的寫入數(shù)據(jù)請(qǐng)求,生成各種類型的數(shù)據(jù),這為研究各種數(shù)據(jù)寫入閃存時(shí)的失效模式研究提供保證;
(2)接收來(lái)自用戶的順序?qū)懭胝?qǐng)求,并根據(jù)該順序?qū)懭胝?qǐng)求為緩存中的所有數(shù)據(jù)分配頁(yè)面地址;
如圖3所示,該地址根據(jù)用戶發(fā)出的順序?qū)懭胝?qǐng)求由IO模式生成器分配,其中Ci,Di,Bi,Pi,代表SSD中的地址結(jié)構(gòu),意思是SSD中第i個(gè)通道、第i個(gè)通道中的第i閃存芯片的第i個(gè)晶元、閃存第i個(gè)晶元的第i個(gè)塊,閃存第i個(gè)塊中第i個(gè)頁(yè);
本步驟的優(yōu)點(diǎn)在于,能夠?yàn)榫彺嬷械臄?shù)據(jù)指定一個(gè)對(duì)應(yīng)的寫入閃存中的地址,清楚的指定寫入的數(shù)據(jù)的類型;
(3)根據(jù)步驟(2)中分配的頁(yè)面地址將緩存中的所有數(shù)據(jù)寫入到閃存頁(yè)面中;
如圖1所示,通過(guò)數(shù)據(jù)寫入閃存操作和對(duì)應(yīng)的閃存頁(yè)地址能夠?qū)⒕彺嬷械臄?shù)據(jù)寫到閃存中;
本步驟的優(yōu)點(diǎn)在于:能夠地址將數(shù)據(jù)寫到閃存中的特定位置,從而研究該特定位置的失效模式;
(4)根據(jù)步驟(2)中分配的第一個(gè)頁(yè)面地址將存儲(chǔ)在閃存頁(yè)面中的對(duì)應(yīng)數(shù)據(jù)讀出,并將讀出的數(shù)據(jù)與緩存中的對(duì)應(yīng)數(shù)據(jù)進(jìn)行比較,以統(tǒng)計(jì)第一個(gè)數(shù)據(jù)的比特位的錯(cuò)誤數(shù)量和錯(cuò)誤位置;
如圖1所示,通過(guò)繞過(guò)糾錯(cuò)碼操作能夠讀取閃存中的原始數(shù)據(jù),從而將從緩存中讀出的原始數(shù)據(jù)和數(shù)據(jù)緩存中的數(shù)據(jù)進(jìn)行比較;
本步驟的優(yōu)點(diǎn)在于:能夠準(zhǔn)確無(wú)誤地統(tǒng)計(jì)出比特錯(cuò)誤數(shù)量和位置,高效地研究閃存的失效模式;
(5)將統(tǒng)計(jì)出的第一個(gè)數(shù)據(jù)的比特位的錯(cuò)誤數(shù)量和錯(cuò)誤位置和對(duì)應(yīng)的頁(yè)面地址作為一個(gè)信息條目存儲(chǔ)在錯(cuò)誤信息列表中;
本步驟的優(yōu)點(diǎn)在于:能夠統(tǒng)計(jì)出閃存頁(yè)中對(duì)應(yīng)的比特錯(cuò)誤信息(包括比特錯(cuò)誤的數(shù)量和位置),能夠重點(diǎn)的對(duì)閃存中某一個(gè)頁(yè)中的失效模式進(jìn)行研究和分析;
(6)重復(fù)步驟(4)和(5),直到對(duì)緩存中所有數(shù)據(jù)執(zhí)行完對(duì)應(yīng)操作為止;
(7)將錯(cuò)誤信息列表中比特位的錯(cuò)誤信息包括比特位錯(cuò)誤數(shù)量和錯(cuò)誤位置、以及對(duì)應(yīng)的頁(yè)面地址通過(guò)統(tǒng)計(jì)信息操作存儲(chǔ)在日志文件中(如圖1所示)以供對(duì)閃存的失效模式進(jìn)行研究和分析;
本步驟的優(yōu)點(diǎn)在于:能夠?qū)Λ@得的比特錯(cuò)誤信息進(jìn)行管理以備對(duì)閃存的失效模式進(jìn)行分析,為制定有效的糾錯(cuò)碼算法提供依據(jù)。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。