本發(fā)明涉及固態(tài)硬盤,尤其涉及一種數(shù)據(jù)傳輸方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、固態(tài)硬盤(solid?state?drive,ssd)是一種采用閃存技術(shù)作為存儲(chǔ)介質(zhì)的計(jì)算機(jī)存儲(chǔ)設(shè)備。在向ssd寫入數(shù)據(jù)或者從ssd中讀取數(shù)據(jù)的過程中經(jīng)常遭遇數(shù)據(jù)出錯(cuò)的問題。例如,在寫數(shù)據(jù)過程中,若數(shù)據(jù)在某個(gè)模塊中出錯(cuò)并且后續(xù)模塊不感知、不解析前級模塊的數(shù)據(jù)物理意義,則前級模塊的含錯(cuò)數(shù)據(jù)輸出給到后級模塊,對后級模塊而言,前級含錯(cuò)數(shù)據(jù)依然是合法輸入。因而,后級模塊基于含錯(cuò)數(shù)據(jù)進(jìn)行既定的后續(xù)動(dòng)作,最終導(dǎo)致含錯(cuò)數(shù)據(jù)被一路帶到存儲(chǔ)介質(zhì)上,進(jìn)而直到讀過程中觸及該數(shù)據(jù)才可以發(fā)現(xiàn)數(shù)據(jù)不正確。
2、為解決ssd數(shù)據(jù)傳輸過程中存在數(shù)據(jù)錯(cuò)誤的問題,現(xiàn)有技術(shù)通常需要讀取通路管理模塊(data?path?management,dm)中的殘留數(shù)據(jù)進(jìn)行分析,但在實(shí)際應(yīng)用中,考慮到io的并發(fā)、讀寫的混合以及多種數(shù)據(jù)格式混合,因此現(xiàn)有技術(shù)很難快速識(shí)別出殘留數(shù)據(jù)的出錯(cuò)原因,進(jìn)而無法確保數(shù)據(jù)讀寫過程中數(shù)據(jù)傳輸準(zhǔn)確性。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的主要目的在于提供一種數(shù)據(jù)傳輸方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),旨在解決如何提升數(shù)據(jù)讀寫過程中數(shù)據(jù)傳輸準(zhǔn)確性的技術(shù)問題。
2、本發(fā)明第一方面提供了一種數(shù)據(jù)傳輸方法,應(yīng)用于固態(tài)硬盤的數(shù)據(jù)通路,所述數(shù)據(jù)通路存在多個(gè)具有相對上下級關(guān)系的模塊,所述數(shù)據(jù)傳輸方法包括:
3、獲取任意本級模塊的第一輸入數(shù)據(jù),所述第一輸入數(shù)據(jù)為原始待傳輸數(shù)據(jù)或上級模塊的第一輸出數(shù)據(jù),所述第一輸出數(shù)據(jù)包括所述原始待傳輸數(shù)據(jù)以及若干第一附加數(shù)據(jù);
4、若所述第一輸入數(shù)據(jù)為所述第一輸出數(shù)據(jù),則基于各所述第一附加數(shù)據(jù)中的第一數(shù)據(jù),判斷是否在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn);
5、若進(jìn)行完整性校驗(yàn),則基于對應(yīng)所述第一附加數(shù)據(jù)中的第二數(shù)據(jù),在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)并刪除對應(yīng)所述第一附加數(shù)據(jù);
6、若完整性校驗(yàn)完成或不進(jìn)行完整性校驗(yàn),則判斷本級模塊是否為所述數(shù)據(jù)通路的最后一個(gè)模塊;
7、若本級模塊不為所述數(shù)據(jù)通路的最后一個(gè)模塊,則生成本級模塊對應(yīng)的第二附加數(shù)據(jù),并與所述第一輸入數(shù)據(jù)一起作為本級模塊的第二輸出數(shù)據(jù),所述第二輸出數(shù)據(jù)為下級模塊的第二輸入數(shù)據(jù)。
8、可選的,在本發(fā)明第一方面的第一種實(shí)現(xiàn)方式中,所述第一附加數(shù)據(jù)與所述第二附加數(shù)據(jù)采用相同的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括:源模塊標(biāo)識(shí)、目的模塊標(biāo)識(shí)、源模塊生成的冗余數(shù)據(jù)和完整性校驗(yàn)的目的模塊標(biāo)識(shí);
9、其中,所述源模塊標(biāo)識(shí)和所述目的模塊標(biāo)識(shí)用于標(biāo)識(shí)所述數(shù)據(jù)通路中的數(shù)據(jù)傳輸路徑,所述源模塊生成的冗余數(shù)據(jù)用于保護(hù)所述數(shù)據(jù)傳輸路徑中的待傳輸數(shù)據(jù),所述完整性校驗(yàn)的目的模塊標(biāo)識(shí)用于標(biāo)識(shí)對所述待傳輸數(shù)據(jù)進(jìn)行完整性校驗(yàn)的模塊。
10、可選的,在本發(fā)明第一方面的第二種實(shí)現(xiàn)方式中,所述若所述第一輸入數(shù)據(jù)為所述第一輸出數(shù)據(jù),則基于各所述第一附加數(shù)據(jù)中的第一數(shù)據(jù),判斷是否在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)包括:
11、若所述第一輸入數(shù)據(jù)為所述第一輸出數(shù)據(jù),則判斷各所述第一附加數(shù)據(jù)中完整性校驗(yàn)的目的模塊標(biāo)識(shí)是否與本級模塊的模塊標(biāo)識(shí)匹配;
12、若匹配,則確定在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)。
13、可選的,在本發(fā)明第一方面的第三種實(shí)現(xiàn)方式中,所述若進(jìn)行完整性校驗(yàn),則基于對應(yīng)所述第一附加數(shù)據(jù)中的第二數(shù)據(jù),在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)并刪除對應(yīng)所述第一附加數(shù)據(jù)包括:
14、若進(jìn)行完整性校驗(yàn),則基于對應(yīng)所述第一附加數(shù)據(jù)中的源模塊生成的冗余數(shù)據(jù),確定完整性校驗(yàn)采用的若干校驗(yàn)方法;
15、依次調(diào)用各所述校驗(yàn)方法在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn),直至完整性校驗(yàn)完成,其中,當(dāng)每完成一次完整性校驗(yàn)且所述第一附加數(shù)據(jù)中不存在未進(jìn)行完整性校驗(yàn)的目的模塊標(biāo)識(shí)時(shí),刪除對應(yīng)所述第一附加數(shù)據(jù)。
16、可選的,在本發(fā)明第一方面的第四種實(shí)現(xiàn)方式中,所述數(shù)據(jù)傳輸方法還包括:
17、當(dāng)存在未通過的完整性校驗(yàn)時(shí),生成校驗(yàn)失敗信息并存入狀態(tài)寄存器或內(nèi)存中,以供實(shí)時(shí)上報(bào)當(dāng)前數(shù)據(jù)傳輸狀態(tài);
18、其中,所述校驗(yàn)失敗信息包括傳輸所述第一輸入數(shù)據(jù)的源模塊標(biāo)識(shí)、目的模塊標(biāo)識(shí)、源模塊生成的冗余數(shù)據(jù)以及當(dāng)前生成的實(shí)際冗余數(shù)據(jù)。
19、可選的,在本發(fā)明第一方面的第五種實(shí)現(xiàn)方式中,所述數(shù)據(jù)通路包括讀數(shù)據(jù)通路與寫數(shù)據(jù)通路;
20、當(dāng)所述數(shù)據(jù)通路為讀數(shù)據(jù)通路時(shí),所述原始待傳輸數(shù)據(jù)為從存儲(chǔ)介質(zhì)中讀取的第一傳輸數(shù)據(jù);當(dāng)所述數(shù)據(jù)通路為寫數(shù)據(jù)通路時(shí),所述原始待傳輸數(shù)據(jù)為從主機(jī)獲取的第二傳輸數(shù)據(jù)。
21、可選的,在本發(fā)明第一方面的第六種實(shí)現(xiàn)方式中,所述數(shù)據(jù)通路中任意模塊m的輸出定義為:
22、om=im+sm+dn+pm+vn;
23、其中,om表示模塊m的輸出數(shù)據(jù),om為數(shù)據(jù)通路中需要傳輸至下級模塊的待傳輸數(shù)據(jù),im表示模塊m的輸入數(shù)據(jù),im為上級模塊的輸出數(shù)據(jù);sm、dn分別表示待傳輸數(shù)據(jù)對應(yīng)的源模塊m與目的模塊n;pm表示源模塊m生成的冗余數(shù)據(jù);vn表示在目的模塊n進(jìn)行完整性校驗(yàn)。
24、本發(fā)明還提供一種數(shù)據(jù)傳輸裝置,應(yīng)用于固態(tài)硬盤的數(shù)據(jù)通路,所述數(shù)據(jù)通路存在多個(gè)具有相對上下級關(guān)系的模塊,所述數(shù)據(jù)傳輸裝置包括:
25、獲取模塊,用于獲取任意本級模塊的第一輸入數(shù)據(jù),所述第一輸入數(shù)據(jù)為原始待傳輸數(shù)據(jù)或上級模塊的第一輸出數(shù)據(jù),所述第一輸出數(shù)據(jù)包括所述原始待傳輸數(shù)據(jù)以及若干第一附加數(shù)據(jù);
26、第一判斷模塊,用于若所述第一輸入數(shù)據(jù)為所述第一輸出數(shù)據(jù),則基于各所述第一附加數(shù)據(jù)中的第一數(shù)據(jù),判斷是否在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn);
27、校驗(yàn)?zāi)K,用于若進(jìn)行完整性校驗(yàn),則基于對應(yīng)所述第一附加數(shù)據(jù)中的第二數(shù)據(jù),在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)并刪除對應(yīng)所述第一附加數(shù)據(jù);
28、第二判斷模塊,用于若完整性校驗(yàn)完成或不進(jìn)行完整性校驗(yàn),則判斷本級模塊是否為所述數(shù)據(jù)通路的最后一個(gè)模塊;
29、生成模塊,用于若本級模塊不為所述數(shù)據(jù)通路的最后一個(gè)模塊,則生成本級模塊對應(yīng)的第二附加數(shù)據(jù),并與所述第一輸入數(shù)據(jù)一起作為本級模塊的第二輸出數(shù)據(jù),所述第二輸出數(shù)據(jù)為下級模塊的第二輸入數(shù)據(jù)。
30、可選的,在本發(fā)明第三方面的第一種實(shí)現(xiàn)方式中,所述第一附加數(shù)據(jù)與所述第二附加數(shù)據(jù)采用相同的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括:源模塊標(biāo)識(shí)、目的模塊標(biāo)識(shí)、源模塊生成的冗余數(shù)據(jù)和完整性校驗(yàn)的目的模塊標(biāo)識(shí);
31、其中,所述源模塊標(biāo)識(shí)和所述目的模塊標(biāo)識(shí)用于標(biāo)識(shí)所述數(shù)據(jù)通路中的數(shù)據(jù)傳輸路徑,所述源模塊生成的冗余數(shù)據(jù)用于保護(hù)所述數(shù)據(jù)傳輸路徑中的待傳輸數(shù)據(jù),所述完整性校驗(yàn)的目的模塊標(biāo)識(shí)用于標(biāo)識(shí)對所述待傳輸數(shù)據(jù)進(jìn)行完整性校驗(yàn)的模塊。
32、可選的,在本發(fā)明第三方面的第二種實(shí)現(xiàn)方式中,所述第一判斷模塊具體用于:
33、若所述第一輸入數(shù)據(jù)為所述第一輸出數(shù)據(jù),則判斷各所述第一附加數(shù)據(jù)中完整性校驗(yàn)的目的模塊標(biāo)識(shí)是否與本級模塊的模塊標(biāo)識(shí)匹配;若匹配,則確定在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)。
34、可選的,在本發(fā)明第三方面的第三種實(shí)現(xiàn)方式中,所述校驗(yàn)?zāi)K具體用于:
35、若進(jìn)行完整性校驗(yàn),則基于對應(yīng)所述第一附加數(shù)據(jù)中的源模塊生成的冗余數(shù)據(jù),確定完整性校驗(yàn)采用的若干校驗(yàn)方法;依次調(diào)用各所述校驗(yàn)方法在本級模塊對所述第一輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn),直至完整性校驗(yàn)完成,其中,當(dāng)每完成一次完整性校驗(yàn)且所述第一附加數(shù)據(jù)中不存在未進(jìn)行完整性校驗(yàn)的目的模塊標(biāo)識(shí)時(shí),刪除對應(yīng)所述第一附加數(shù)據(jù)。
36、可選的,在本發(fā)明第三方面的第四種實(shí)現(xiàn)方式中,所述數(shù)據(jù)傳輸裝置還包括:
37、狀態(tài)上報(bào)模塊,用于當(dāng)存在未通過的完整性校驗(yàn)時(shí),生成校驗(yàn)失敗信息并存入狀態(tài)寄存器或內(nèi)存中,以供實(shí)時(shí)上報(bào)當(dāng)前數(shù)據(jù)傳輸狀態(tài);其中,所述校驗(yàn)失敗信息包括傳輸所述第一輸入數(shù)據(jù)的源模塊標(biāo)識(shí)、目的模塊標(biāo)識(shí)、源模塊生成的冗余數(shù)據(jù)以及當(dāng)前生成的實(shí)際冗余數(shù)據(jù)。
38、可選的,在本發(fā)明第二方面的第五種實(shí)現(xiàn)方式中,所述數(shù)據(jù)通路包括讀數(shù)據(jù)通路與寫數(shù)據(jù)通路;
39、當(dāng)所述數(shù)據(jù)通路為讀數(shù)據(jù)通路時(shí),所述原始待傳輸數(shù)據(jù)為從存儲(chǔ)介質(zhì)中讀取的第一傳輸數(shù)據(jù);當(dāng)所述數(shù)據(jù)通路為寫數(shù)據(jù)通路時(shí),所述原始待傳輸數(shù)據(jù)為從主機(jī)獲取的第二傳輸數(shù)據(jù)。
40、可選的,在本發(fā)明第二方面的第六種實(shí)現(xiàn)方式中,所述數(shù)據(jù)通路中任意模塊m的輸出定義為:
41、om=im+sm+dn+pm+vn;
42、其中,om表示模塊m的輸出數(shù)據(jù),om為數(shù)據(jù)通路中需要傳輸至下級模塊的待傳輸數(shù)據(jù),im表示模塊m的輸入數(shù)據(jù),im為上級模塊的輸出數(shù)據(jù);sm、dn分別表示待傳輸數(shù)據(jù)對應(yīng)的源模塊m與目的模塊n;pm表示源模塊m生成的冗余數(shù)據(jù);vn表示在目的模塊n進(jìn)行完整性校驗(yàn)。
43、本發(fā)明第五方面提供了一種計(jì)算機(jī)設(shè)備,包括:存儲(chǔ)器和至少一個(gè)處理器,所述存儲(chǔ)器中存儲(chǔ)有指令;所述至少一個(gè)處理器調(diào)用所述存儲(chǔ)器中的所述指令,以使得所述計(jì)算機(jī)設(shè)備執(zhí)行上述的數(shù)據(jù)傳輸方法。
44、本發(fā)明的第六方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述的數(shù)據(jù)傳輸方法。
45、本發(fā)明提供一種應(yīng)用于固態(tài)硬盤數(shù)據(jù)通路的數(shù)據(jù)傳輸方法,在數(shù)據(jù)通路中傳輸?shù)臄?shù)據(jù)不僅包括讀取或?qū)懭氲脑即齻鬏敂?shù)據(jù),而且還包括模塊生成的附加數(shù)據(jù)?;跀?shù)據(jù)傳輸?shù)姆较?,各模塊之間相應(yīng)形成相對上下級關(guān)系,也即傳輸數(shù)據(jù)經(jīng)過的模塊既有可能是其他模塊的上級模塊,也有可能是另外模塊的下級模塊,而上級模塊的輸出數(shù)據(jù)將作為下級模塊的輸入數(shù)據(jù)。當(dāng)傳輸?shù)臄?shù)據(jù)經(jīng)過任意模塊時(shí),先獲取任意本級模塊的輸入數(shù)據(jù),該輸入數(shù)據(jù)包括有待傳輸?shù)脑紨?shù)據(jù)以及若干上級模塊對應(yīng)生成的若干附加數(shù)據(jù)。通過附加數(shù)據(jù)即可判斷是否在本級模塊對輸入數(shù)據(jù)進(jìn)行完整性校驗(yàn)以及采用的校驗(yàn)方式,同時(shí)在完整性校驗(yàn)完成后或不進(jìn)行完整性校驗(yàn)時(shí),都會(huì)生成本級模塊對應(yīng)的附加數(shù)據(jù),并與輸入數(shù)據(jù)一起作為本級模塊的輸出數(shù)據(jù),本級模塊的輸出數(shù)據(jù)將作為下級模塊的輸入數(shù)據(jù),進(jìn)而實(shí)現(xiàn)對固態(tài)硬盤數(shù)據(jù)具有完整性保護(hù)的數(shù)據(jù)傳輸方法。通過本發(fā)明的數(shù)據(jù)傳輸方法,確保數(shù)據(jù)讀過程或?qū)戇^程中進(jìn)行數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,同時(shí)也降低了傳輸數(shù)據(jù)錯(cuò)誤的分析難度。