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