專利名稱:減少硬盤磁頭尋道次數(shù)來提高讀硬盤速度的控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及磁記錄技術(shù)領(lǐng)域,特別是一種減少硬盤磁頭尋道次數(shù)來提高讀硬盤速度的控制方法。
背景技術(shù):
硬盤等存儲設(shè)備數(shù)據(jù)吞吐的速度一般都比較低,其根源在于一方面,硬盤數(shù)據(jù)尋道是依賴于機(jī)械控制,每次尋道的時間較長;另一方面,數(shù)據(jù)文件大多情況下都是非連續(xù)存儲在硬盤上,是由一組數(shù)據(jù)塊組成,讀取一個數(shù)據(jù)文件時需要多次硬盤尋道。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種減少硬盤磁頭尋道次數(shù)來提高讀硬盤速度的控制方法。
本發(fā)明的讀硬盤等存儲設(shè)備的控制方法,是通過減少磁頭尋道次數(shù)來提高讀硬盤等存儲設(shè)備的速度。
本發(fā)明設(shè)計了一種用DMA(Direct Memory Access,直接存儲器訪問)方式讀硬盤等存儲設(shè)備的新型控制技術(shù),通過這種技術(shù),可以用一次硬盤尋道讀取多個非連續(xù)的數(shù)據(jù)塊。它的實(shí)現(xiàn)方法是,用一個硬盤DMA數(shù)據(jù)讀命令,連續(xù)地讀出一個包含多個所需數(shù)據(jù)塊的大數(shù)據(jù)塊,然后把數(shù)據(jù)塊之間不需要的數(shù)據(jù)碎片丟掉。當(dāng)相鄰數(shù)據(jù)塊間隔較近時,讀冗余數(shù)據(jù)碎片的數(shù)據(jù)傳輸時間大大地小于硬盤尋道時間,從而極大地提高數(shù)據(jù)傳輸?shù)乃俣取?br>
圖1是本發(fā)明的DMA數(shù)據(jù)讀控制示意圖。
圖2是本發(fā)明的DMA數(shù)據(jù)讀控制流程圖。
圖3是本發(fā)明的SG(Scatter-Gather,散集)表的結(jié)構(gòu)圖。
圖1中,在讀硬盤數(shù)據(jù)塊N和N+1時,可以只給硬盤發(fā)一次DMA讀命令,讀的數(shù)據(jù)長度是從扇區(qū)n1~n4。當(dāng)數(shù)據(jù)通過硬盤控制器時,自動把扇區(qū)n2~n3的數(shù)據(jù)丟掉,傳給主機(jī)的數(shù)據(jù)正是所需的數(shù)據(jù)塊N和N+1。
圖2中,步驟S1,S2和S3分別說明如下(1)步驟S1操作系統(tǒng)根據(jù)其本身的文件系統(tǒng)讀取硬盤文件分配表,確定文件在硬盤上的物理位置,同時給出主機(jī)側(cè)數(shù)據(jù)緩沖區(qū)位置;(2)步驟S2硬盤設(shè)備驅(qū)動程序根據(jù)操作系統(tǒng)給出的文件位置和數(shù)據(jù)緩沖區(qū),產(chǎn)生硬盤操作命令隊列和用于DMA數(shù)據(jù)傳輸?shù)腟G(Scatter-Gather,散集)表。在這過程中,如果發(fā)現(xiàn)有數(shù)據(jù)碎片,如圖1中扇區(qū)n2~n3的數(shù)據(jù),則把前后兩塊數(shù)據(jù)看成一個連續(xù)的數(shù)據(jù)塊,用一個硬盤讀命令操作來完成;同時在SG表中產(chǎn)生一個虛假項對應(yīng)于數(shù)據(jù)碎片。SG表的虛假項設(shè)一個數(shù)據(jù)丟棄標(biāo)記,如圖3中的Bit30;(3)步驟S3硬盤控制器逐項讀取SG表并進(jìn)行數(shù)據(jù)傳輸,當(dāng)SG表的數(shù)據(jù)丟棄標(biāo)記為1時,該項SG表所對應(yīng)的數(shù)據(jù)不進(jìn)行傳輸,在硬盤控制器內(nèi)部就被丟棄。
圖3中,SG表一般包含多項,每項占兩個32位,前32位是主機(jī)內(nèi)存的起始地址;后32位的bit31是結(jié)束標(biāo)志位,bit15~0是數(shù)據(jù)長度。本發(fā)明把后32位的bit30用作數(shù)據(jù)丟棄標(biāo)記。
具體實(shí)施例方式
一般來說,主機(jī)和硬盤之間做DMA數(shù)據(jù)傳輸時,硬盤控制器工作在Bus Master(主動控制計算機(jī)總線)狀態(tài),數(shù)據(jù)的傳輸是根據(jù)主機(jī)側(cè)設(shè)備驅(qū)動程序產(chǎn)生的Scatter-Gather表把數(shù)據(jù)寫入主機(jī)內(nèi)存。Scatter-Gather表的結(jié)構(gòu)如圖3所示。表中每一項有兩個32位的內(nèi)容,分別是地址、數(shù)據(jù)長度和標(biāo)記。當(dāng)標(biāo)記位bit31為1時,表示是Scatter-Gather表的最后一項。
在使用這種新型硬盤控制器時,主機(jī)側(cè)設(shè)備驅(qū)動程序產(chǎn)生的Scatter-Gather散集,把每一項中第二個32位內(nèi)容的第31位(Bit30)當(dāng)作一個數(shù)據(jù)丟棄標(biāo)記,即當(dāng)它為1時,硬盤控制器并不把此時的數(shù)據(jù)傳送給主機(jī),而是把它丟棄。在做數(shù)據(jù)丟棄時,完全用硬件在硬盤控制器內(nèi)部實(shí)現(xiàn),可以做到實(shí)時處理且不占用計算機(jī)總線資源。
根據(jù)附圖1所說明的數(shù)據(jù)讀流程中,可以把要丟掉的數(shù)據(jù)碎片用Scatter-Gather表的單獨(dú)一項來表示,且該項的數(shù)據(jù)丟棄標(biāo)記為1。
權(quán)利要求
1.一種讀硬盤等存儲設(shè)備的控制方法,其特征是,通過減少磁頭尋道次數(shù)來提高讀硬盤等存儲設(shè)備的速度。
2.一種減少磁頭尋道次數(shù)來提高讀硬盤存儲設(shè)備的速度,其特征在于,用一個DMA數(shù)據(jù)讀命令,連續(xù)地讀出一個包含多個所需數(shù)據(jù)塊的大數(shù)據(jù)塊,然后把數(shù)據(jù)塊之間不需要的數(shù)據(jù)碎片丟掉。
3.根據(jù)權(quán)利要求2的減少硬盤磁頭尋道次數(shù)來提高讀硬盤速度的控制方法,其具體步驟如下(1)步驟S1操作系統(tǒng)根據(jù)其本身的文件系統(tǒng)讀取硬盤文件分配表,確定文件在硬盤上的物理位置,同時給出主機(jī)側(cè)數(shù)據(jù)緩沖區(qū)位置;(2)步驟S2硬盤設(shè)備驅(qū)動程序根據(jù)操作系統(tǒng)給出的文件位置和數(shù)據(jù)緩沖區(qū),產(chǎn)生硬盤操作命令隊列和用于DMA數(shù)據(jù)傳輸?shù)腟G表,在這過程中,如果發(fā)現(xiàn)有數(shù)據(jù)碎片,則把前后兩塊數(shù)據(jù)看成一個連續(xù)的數(shù)據(jù)塊,用一個硬盤讀命令操作來完成;同時在SG表中產(chǎn)生一個虛假項對應(yīng)于數(shù)據(jù)碎片;(3)步驟S3硬盤控制器逐項讀取SG表并進(jìn)行數(shù)據(jù)傳輸,當(dāng)SG表的數(shù)據(jù)丟棄標(biāo)記為1時,該項SG表所對應(yīng)的數(shù)據(jù)不進(jìn)行傳輸,在硬盤控制器內(nèi)部就被丟棄。
4.根據(jù)權(quán)利要求2的減少硬盤磁頭尋道次數(shù)來提高讀硬盤速度的控制方法,其特征在于,在數(shù)據(jù)讀流程中,可以把要丟掉的數(shù)據(jù)碎片用Scatter-Gather表的單獨(dú)一項來表示,且該項的數(shù)據(jù)丟棄標(biāo)記為1。
全文摘要
本發(fā)明涉及磁記錄技術(shù)領(lǐng)域的一種減少硬盤磁頭尋道次數(shù)來提高讀硬盤速度的控制方法。用一次硬盤尋道讀取多個非連續(xù)的數(shù)據(jù)塊。用一個硬盤DMA數(shù)據(jù)讀命令,連續(xù)地讀出一個包含多個所需數(shù)據(jù)塊的大數(shù)據(jù)塊,然后把數(shù)據(jù)塊之間不需要的數(shù)據(jù)碎片丟掉。當(dāng)相鄰數(shù)據(jù)塊間隔較近時,讀冗余數(shù)據(jù)碎片的數(shù)據(jù)傳輸時間大大地小于硬盤尋道時間,極大地提高數(shù)據(jù)傳輸?shù)乃俣?。步驟如下(1)確定文件在硬盤上的物理位置,同時給出主機(jī)側(cè)數(shù)據(jù)緩沖區(qū)位置;(2)產(chǎn)生硬盤操作命令隊列和用于DMA數(shù)據(jù)傳輸?shù)腟G表;(3)硬盤控制器逐項讀取SG表并進(jìn)行數(shù)據(jù)傳輸,當(dāng)SG表的數(shù)據(jù)丟棄標(biāo)記為1時,該項SG表所對應(yīng)的數(shù)據(jù)不進(jìn)行傳輸,在硬盤控制器內(nèi)部就被丟棄。
文檔編號G11B5/09GK1556523SQ20041000135
公開日2004年12月22日 申請日期2004年1月6日 優(yōu)先權(quán)日2004年1月6日
發(fā)明者張亮, 韓承德, 張 亮 申請人:中國科學(xué)院計算技術(shù)研究所