本發(fā)明涉及存儲(chǔ)領(lǐng)域,具體是一種加速訪問u盤的方法、裝置及介質(zhì)。
背景技術(shù):
1、隨著國產(chǎn)化的不斷推進(jìn)及全面普及,各行各業(yè)開始大范圍應(yīng)用國產(chǎn)主機(jī)及系統(tǒng),為了兼容windows主機(jī)系統(tǒng),業(yè)內(nèi)推出了單向?qū)雞盤的單導(dǎo)設(shè)備平臺(tái),通過該單導(dǎo)設(shè)備平臺(tái),可以實(shí)現(xiàn)任意文件系統(tǒng)類型的u盤數(shù)據(jù)跨平臺(tái)的數(shù)據(jù)傳輸,大大提高了便捷性和安全性。目前通用的單導(dǎo)設(shè)備平臺(tái),在解析u盤的文件系統(tǒng)時(shí),每次訪問數(shù)據(jù)所在的block,需要單獨(dú)查詢一次block所在的物理地址,并且受文件系統(tǒng)限制,一次只能讀一個(gè)block(4k)的數(shù)據(jù)量,存在傳輸性能低效等問題。
2、如圖1所示,為現(xiàn)有單導(dǎo)設(shè)備平臺(tái)的工作示意圖,單導(dǎo)設(shè)備平臺(tái)將u盤中的數(shù)據(jù)傳輸至pc端,單導(dǎo)設(shè)備平臺(tái)具有識(shí)別、處理目標(biāo)u盤文件系統(tǒng)的功能。u盤插入單導(dǎo)模塊后,單導(dǎo)模塊通過驅(qū)動(dòng)層識(shí)別u盤設(shè)備,并通過文件系統(tǒng)模塊解析u盤中的數(shù)據(jù)內(nèi)容,將u盤數(shù)據(jù)傳輸至pc主機(jī),實(shí)現(xiàn)了不同文件系統(tǒng)跨平臺(tái)數(shù)據(jù)傳輸。在訪問文件系統(tǒng)時(shí),由于存放文件索引的block(簡稱索引block),在每一次讀取block時(shí),需要先讀取索引block,查詢到目標(biāo)block后,再根據(jù)block物理地址,訪問對(duì)應(yīng)的數(shù)據(jù)塊。在單導(dǎo)芯片中,cpu訪問u盤的文件系統(tǒng)結(jié)構(gòu)時(shí),查詢block索引塊,會(huì)多次訪問指定的索引block獲取數(shù)據(jù)block的bmap,造成i/o請(qǐng)求次數(shù)太多的影響。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種加速訪問u盤的方法、裝置及介質(zhì),減少了單導(dǎo)芯片cpu訪問u盤的i/o請(qǐng)求次數(shù),提高了一次傳輸?shù)臄?shù)據(jù)量,從而大大提高了數(shù)據(jù)傳輸效率。
2、為了解決所述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:一種加速訪問u盤的方法,本方法包括:
3、在單導(dǎo)設(shè)備平臺(tái)的cpu和文件系統(tǒng)模塊中間增加cache模塊,cache模塊用于存儲(chǔ)訪問頻率大于設(shè)定要求的block,當(dāng)單導(dǎo)設(shè)備平臺(tái)的cpu要從u盤讀取數(shù)據(jù)時(shí),先去cache列表中查詢,如果查詢到對(duì)應(yīng)的block,則直接從cache中取走數(shù)據(jù),減少了cpu的i/o訪問次數(shù);
4、同時(shí)當(dāng)單導(dǎo)設(shè)備平臺(tái)的cpu啟動(dòng)讀數(shù)據(jù)時(shí),先查詢要讀取的block地址是否連續(xù),如果連續(xù),一次讀取多個(gè)連續(xù)的block。
5、進(jìn)一步的,cache模塊設(shè)置多個(gè)分區(qū),每個(gè)分區(qū)用于存放1個(gè)block的緩存數(shù)據(jù)和信息,信息包括物理block地址、訪問次數(shù)、棄用標(biāo)識(shí)、使用標(biāo)識(shí),cpu啟動(dòng)i/o請(qǐng)求后,從u盤中讀取物理block地址后,將物理block地址和其存儲(chǔ)的數(shù)據(jù)記錄到cache分區(qū)中,當(dāng)所有分區(qū)都被用完后,根據(jù)訪問次數(shù)、棄用標(biāo)識(shí)、使用標(biāo)識(shí)判斷可用cache分區(qū),并更新可用cache分區(qū)的信息;當(dāng)cpu讀取物理block地址時(shí),先從cache模塊中檢索,要訪問的物理block如果存在于cache模塊中,直接從對(duì)應(yīng)的cache模塊中獲取數(shù)據(jù)。
6、進(jìn)一步的,索引block一直存儲(chǔ)在cache模塊。
7、進(jìn)一步的,從cache模塊中查詢block緩存數(shù)據(jù)的過程為:cpu啟動(dòng)讀數(shù)據(jù)請(qǐng)求,根據(jù)目標(biāo)block地址匹配cache分區(qū)中的物理block地址,遍歷cache分區(qū)中物理block地址對(duì)應(yīng)的緩存數(shù)據(jù),如果匹配到物理block地址,則直接讀取對(duì)應(yīng)的緩存數(shù)據(jù),并對(duì)該緩存分區(qū)中的訪問次數(shù)進(jìn)行遞增操作,表示該物理block地址被訪問到。
8、進(jìn)一步的,將block數(shù)據(jù)存放至cache模塊的過程為:cpu啟動(dòng)i/o請(qǐng)求后,將每一次獲取到的物理block地址及block數(shù)據(jù)放入cache鏈表中,存放邏輯為:先查找是否存在沒有被使用的cache分區(qū),如果有,則返回當(dāng)前cache分區(qū)的地址,并將block的數(shù)據(jù)及地址信息存放到該cache分區(qū)中,如果沒有,說明cache模塊已被寫滿,則遍歷cache列表,對(duì)比訪問次數(shù),訪問次數(shù)最少的cache分區(qū)地址被返回,用于寫入最新的block數(shù)據(jù)及地址信息,如果仍未遍歷到可用cache分區(qū),則將cache列表中的最后一個(gè)cache分區(qū)地址返回。
9、進(jìn)一步的,通過使用標(biāo)識(shí)查找是否存在沒有被使用的cache分區(qū),如果使用標(biāo)識(shí)為0,則表示存在沒有被使用的cache分區(qū)。
10、進(jìn)一步的,通過一個(gè)字節(jié)flag表示連續(xù)的block塊個(gè)數(shù),cpu在讀文件系統(tǒng)數(shù)據(jù)時(shí),首先獲取索引block的bmap內(nèi)容,根據(jù)邏輯地址查找物理block地址,連續(xù)讀取解析多個(gè)物理block地址并進(jìn)行判斷是否連續(xù),如果物理block地址是連續(xù)的,則判斷連續(xù)的block塊個(gè)數(shù),并對(duì)flag進(jìn)行賦值,然后根據(jù)返回的flag值進(jìn)行判斷,根據(jù)flag的值選擇一次讀取物理block的數(shù)量。
11、進(jìn)一步的,本方法適用于嵌入式cpu的單導(dǎo)設(shè)備平臺(tái)。
12、本發(fā)明還公開一種加速訪問u盤的裝置,包括處理器和存儲(chǔ)有程序指令的存儲(chǔ)器,所述處理器被配置為在運(yùn)行所述程序指令時(shí),執(zhí)行如上所述的加速訪問u盤的方法。
13、本發(fā)明還公開一種存儲(chǔ)介質(zhì),存儲(chǔ)有程序指令,所述程序指令在運(yùn)行時(shí),執(zhí)行如上所述的加速訪問u盤的方法。
14、本發(fā)明的有益效果:本發(fā)明提出的加速訪問u盤的裝置及方法,通過引入高速cache及cache管理方法,大大降低了訪問u盤的次數(shù),提高了單導(dǎo)芯片cpu的i/o效率。通過設(shè)計(jì)多個(gè)block數(shù)據(jù)塊傳輸機(jī)制,大大提高了單導(dǎo)系統(tǒng)訪問u盤的傳輸性能,尤其是對(duì)大文件傳輸?shù)男省1景l(fā)明不需要改變?cè)形募到y(tǒng)的結(jié)構(gòu),降低開發(fā)難度,同時(shí)大大提升了單導(dǎo)設(shè)備平臺(tái)訪問u盤的效率,原有的傳輸效率為6m/s,通過本發(fā)明將數(shù)據(jù)傳輸效率提升至22m/s。
1.一種加速訪問u盤的方法,其特征在于:本方法包括:
2.根據(jù)權(quán)利要求1所述的加速訪問u盤的方法,其特征在于:cache模塊設(shè)置多個(gè)分區(qū),每個(gè)分區(qū)用于存放1個(gè)block的緩存數(shù)據(jù)和信息,信息包括物理block地址、訪問次數(shù)、棄用標(biāo)識(shí)、使用標(biāo)識(shí),cpu啟動(dòng)i/o請(qǐng)求后,從u盤中讀取物理block地址后,將物理block地址和其存儲(chǔ)的數(shù)據(jù)記錄到cache分區(qū)中,當(dāng)所有分區(qū)都被用完后,根據(jù)訪問次數(shù)、棄用標(biāo)識(shí)、使用標(biāo)識(shí)判斷可用cache分區(qū),并更新可用cache分區(qū)的信息;當(dāng)cpu讀取物理block地址時(shí),先從cache模塊中檢索,要訪問的物理block如果存在于cache模塊中,直接從對(duì)應(yīng)的cache模塊中獲取數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或2所述的加速訪問u盤的方法,其特征在于:索引block一直存儲(chǔ)在cache模塊。
4.根據(jù)權(quán)利要求2所述的加速訪問u盤的方法,其特征在于:從cache模塊中查詢block緩存數(shù)據(jù)的過程為:cpu啟動(dòng)讀數(shù)據(jù)請(qǐng)求,根據(jù)目標(biāo)block地址匹配cache分區(qū)中的物理block地址,遍歷cache分區(qū)中物理block地址對(duì)應(yīng)的緩存數(shù)據(jù),如果匹配到物理block地址,則直接讀取對(duì)應(yīng)的緩存數(shù)據(jù),并對(duì)該緩存分區(qū)中的訪問次數(shù)進(jìn)行遞增操作,表示該物理block地址被訪問到。
5.根據(jù)權(quán)利要求2所述的加速訪問u盤的方法,其特征在于:將block數(shù)據(jù)存放至cache模塊的過程為:cpu啟動(dòng)i/o請(qǐng)求后,將每一次獲取到的物理block地址及block數(shù)據(jù)放入cache鏈表中,存放邏輯為:先查找是否存在沒有被使用的cache分區(qū),如果有,則返回當(dāng)前cache分區(qū)的地址,并將block的數(shù)據(jù)及地址信息存放到該cache分區(qū)中,如果沒有,說明cache模塊已被寫滿,則遍歷cache列表,對(duì)比訪問次數(shù),訪問次數(shù)最少的cache分區(qū)地址被返回,用于寫入最新的block數(shù)據(jù)及地址信息,如果仍未遍歷到可用cache分區(qū),則將cache列表中的最后一個(gè)cache分區(qū)地址返回。
6.根據(jù)權(quán)利要求5所述的加速訪問u盤的方法,其特征在于:通過使用標(biāo)識(shí)查找是否存在沒有被使用的cache分區(qū),如果使用標(biāo)識(shí)為0,則表示存在沒有被使用的cache分區(qū)。
7.根據(jù)權(quán)利要求1所述的加速訪問u盤的方法,其特征在于:通過一個(gè)字節(jié)flag表示連續(xù)的block塊個(gè)數(shù),cpu在讀文件系統(tǒng)數(shù)據(jù)時(shí),首先獲取索引block的bmap內(nèi)容,根據(jù)邏輯地址查找物理block地址,連續(xù)讀取解析多個(gè)物理block地址并進(jìn)行判斷是否連續(xù),如果物理block地址是連續(xù)的,則判斷連續(xù)的block塊個(gè)數(shù),并對(duì)flag進(jìn)行賦值,然后根據(jù)返回的flag值進(jìn)行判斷,根據(jù)flag的值選擇一次讀取物理block的數(shù)量。
8.根據(jù)權(quán)利要求1所述的加速訪問u盤的方法,其特征在于:本方法適用于嵌入式cpu的單導(dǎo)設(shè)備平臺(tái)。
9.一種加速訪問u盤的裝置,包括處理器和存儲(chǔ)有程序指令的存儲(chǔ)器,其特征在于,所述處理器被配置為在運(yùn)行所述程序指令時(shí),執(zhí)行如權(quán)利要求1至8任一項(xiàng)所述的加速訪問u盤的方法。
10.一種存儲(chǔ)介質(zhì),存儲(chǔ)有程序指令,其特征在于,所述程序指令在運(yùn)行時(shí),執(zhí)行如權(quán)利要求1至8任一項(xiàng)所述的加速訪問u盤的方法。