專利名稱:數(shù)據(jù)傳輸控制方法和存儲裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸控制方法和存儲裝置,特別是涉及對命令完成通知的定時控制。
背景技術(shù):
已經(jīng)知道,利用包括光盤和磁帶的各種介質(zhì)的裝置作為信息記錄和再現(xiàn)裝置。尤其是,硬盤驅(qū)動器在計算機(jī)中作為存儲裝置廣泛流行,以至于在今天的計算機(jī)中它們是必不可少的存儲裝置之一。而且,它們的應(yīng)用不限于計算機(jī),隨著運(yùn)動圖像記錄/再現(xiàn)設(shè)備、汽車導(dǎo)航系統(tǒng)、數(shù)字?jǐn)z像機(jī)的可拆裝的存儲器等的出現(xiàn),由于優(yōu)良的特性其應(yīng)用越來越廣泛。
用于硬盤驅(qū)動器的每個磁盤具有同心地形成的多個磁道,并且每個磁道劃分成多個扇區(qū)。在每個扇區(qū),存儲有扇區(qū)地址信息和用戶數(shù)據(jù)。無論是數(shù)據(jù)寫入扇區(qū)還是從扇區(qū)讀取數(shù)據(jù)都能根據(jù)扇區(qū)地址信息由訪問所希望扇區(qū)的磁頭進(jìn)行。通過數(shù)據(jù)讀取操作從磁盤讀出的信號在傳輸?shù)街鳈C(jī)之前由信號處理電路進(jìn)行波形整形、解碼處理和其他規(guī)定的信號處理。同樣,從主機(jī)傳輸來的數(shù)據(jù)由信號處理電路進(jìn)行規(guī)定的信號處理并且然后寫入磁盤。
對于在主機(jī)和硬盤驅(qū)動器之間的數(shù)據(jù)傳輸,通常使用諸如SCSI接口或ATA接口這樣的接口協(xié)議。具體說,由于接口能力的改進(jìn)和成本低,許多計算機(jī)使用ATA接口。ATA接口也被存儲裝置廣泛地使用,包括諸如光盤存儲裝置的其他類型的存儲裝置。但是,由于記錄介質(zhì)在記錄密度方面的不斷發(fā)展,已經(jīng)出現(xiàn)對更高性能的需求。為了提高數(shù)據(jù)傳輸速率,對ATA接口的需求增強(qiáng)。因此,已經(jīng)提出用串行傳送ATA接口代替現(xiàn)有的并行傳輸協(xié)議。
“串行ATA工作組”已經(jīng)研發(fā)出串行ATA規(guī)約。在已經(jīng)發(fā)布的“串行ATA II串行ATA 1.0規(guī)約的擴(kuò)展”中,已經(jīng)采用現(xiàn)行的并行ATA未包括的一些技術(shù)。其中之一是稱之為NCQ(本機(jī)命令隊列)的命令隊列的技術(shù)。NCQ使硬盤驅(qū)動器自身能夠在內(nèi)部確定要被執(zhí)行的排隊命令的次序。這能夠有效地減少由于硬盤驅(qū)動器的內(nèi)部機(jī)械運(yùn)行引起的等待時間。
一種以NCQ為特征的技術(shù)涉及命令完成通知的發(fā)布。每個排隊命令的狀態(tài)由主機(jī)的SActive寄存器管理。排隊命令的狀態(tài)可以通過清除SActive寄存器的相應(yīng)的位從“未完成”改變?yōu)椤巴瓿伞?。清除SActive寄存器的位由來自硬盤驅(qū)動器的數(shù)據(jù)幀實現(xiàn)。這種數(shù)據(jù)幀稱之為“設(shè)置裝置位FIS”。每個命令完成通知可以在任何定時傳輸。例如,硬盤驅(qū)動器可以或者相應(yīng)于多個命令而連續(xù)地傳輸“設(shè)置裝置位FIS”給主機(jī),或者用單個的“設(shè)置裝置位FIS”通知主機(jī)兩個命令已經(jīng)完成。
除NCQ之外,與命令完成通知的控制相關(guān)的技術(shù)的例子在日本專利公開第2001-312373號中進(jìn)行了公開。在這種技術(shù)中,控制發(fā)布命令完成信號的定時以便防止扇區(qū)緩沖器中的數(shù)據(jù)被新接收的命令蓋寫。當(dāng)存在較早接收的未完成的寫命令時,如果新接收一個寫命令,那么檢查表明未完成命令的LBAs的位置關(guān)系的命中(hit)狀態(tài),以重新排列數(shù)據(jù)寫入該記錄介質(zhì)的次序,并且然后根據(jù)該重新排列的次序,寫入數(shù)據(jù)被記錄在該介質(zhì)中。這時,如果在扇區(qū)緩沖器中的空閑空間不大于預(yù)定大小,并且命中狀態(tài)是NOHIT,則新接收的命令具有優(yōu)先權(quán)開始在介質(zhì)上進(jìn)行記錄而不發(fā)布命令完成信號。
發(fā)明內(nèi)容
但是在日本專利公開第2001-312373號中,是從防止數(shù)據(jù)在扇區(qū)緩沖器中被蓋寫的角度來控制傳輸命令完成通知的定時候,因此不能獲得合適的性能改善,這是因為它沒有考慮包括查找時間和旋轉(zhuǎn)等待時間的介質(zhì)訪問以及命令的重新安排。本發(fā)明的目的是通過控制命令完成通知的發(fā)布提高存儲裝置的性能。
根據(jù)本發(fā)明的一方面,提供一種用于控制主機(jī)和存儲裝置之間的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸控制方法,包括如下步驟獲得排隊的第一命令;獲得用于所述第一命令的第一數(shù)據(jù)的地址信息;在所述主機(jī)和所述存儲裝置之間傳輸所述第一數(shù)據(jù);獲得排隊的第二命令;獲得用于所述第二命令的第二數(shù)據(jù)的地址信息;根據(jù)所述第一數(shù)據(jù)和第二數(shù)據(jù)的地址信息,確定是否在將關(guān)于所述第一命令的完成通知從所述存儲裝置傳輸?shù)剿鲋鳈C(jī)之前,在所述主機(jī)和所述存儲裝置之間傳輸所述第二數(shù)據(jù);根據(jù)在所述確定步驟中作出的決定,在所述主機(jī)和所述存儲裝置之間傳輸所述第二數(shù)據(jù);以及在所述第一命令的處理完成之后,在傳輸了所述第二數(shù)據(jù)之后,向主機(jī)傳輸關(guān)于所述第一命令的所述完成通知。由于,根據(jù)關(guān)于所述第一和第二數(shù)據(jù)的地址信息來確定是否在傳輸所述第二數(shù)據(jù)之前或之后傳輸關(guān)于所述第一命令的完成通知,因此能夠提高存儲裝置的性能。
優(yōu)選,如果用于所述第一數(shù)據(jù)的地址和用于所述第二數(shù)據(jù)的地址之間的差小于預(yù)定值,則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
優(yōu)選,所述第一命令和所述第二命令分別對旋轉(zhuǎn)的介質(zhì)進(jìn)行介質(zhì)訪問;并且根據(jù)關(guān)于所述第一數(shù)據(jù)和第二數(shù)據(jù)的所述地址信息,如果在對所述第一數(shù)據(jù)的介質(zhì)訪問之后無需旋轉(zhuǎn)等待就能夠進(jìn)行對所述第二數(shù)據(jù)的介質(zhì)訪問,則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
如果所述第一和第二命令分別是對介質(zhì)寫入數(shù)據(jù)的寫命令,則本發(fā)明特別有用。還優(yōu)選,所述第一命令和所述第二命令分別是對旋轉(zhuǎn)的介質(zhì)寫入數(shù)據(jù)的命令;所述第二命令排隊在所述第一命令之后;并且根據(jù)關(guān)于所述第一數(shù)據(jù)和第二數(shù)據(jù)的所述地址信息,如果在將所述第一數(shù)據(jù)寫入介質(zhì)之后,無需旋轉(zhuǎn)等待就能夠?qū)⑺龅诙?shù)據(jù)寫入介質(zhì),則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
優(yōu)選,所述第一命令和所述第二命令分別是對旋轉(zhuǎn)的介質(zhì)寫入數(shù)據(jù)的命令;所述第二命令排隊在所述第一命令之后;并且如果用于所述第二數(shù)據(jù)的地址鄰近用于所述第一數(shù)據(jù)的地址,則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
根據(jù)第二方面,提供一種用于控制主機(jī)和存儲裝置之間的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸控制方法,包括如下步驟獲得排隊的第一命令;執(zhí)行所述第一命令;獲得有關(guān)排隊命令的信息;以及根據(jù)用于執(zhí)行所述第一命令的時間和用于重新安排所述排隊命令的時間,確定傳輸關(guān)于所述第一命令的命令完成通知的定時。
優(yōu)選,用于執(zhí)行所述第一命令的所述時間根據(jù)用于所述第一命令的數(shù)據(jù)的扇區(qū)長度來估算。還優(yōu)選,用于執(zhí)行所述第一命令的所述時間根據(jù)用于所述第一命令的數(shù)據(jù)的介質(zhì)訪問時間來估算。還優(yōu)選,用于重新安排所述排隊命令的所述時間根據(jù)所述排隊命令的總數(shù)來估算。還優(yōu)選,如果用于所述第一命令的數(shù)據(jù)的所述扇區(qū)長度不大于預(yù)定值,并且所述排隊命令的所述數(shù)目不小于預(yù)定值,則關(guān)于所述第一命令的所述命令完成通知被延遲。
優(yōu)選,如果用于所述第一命令的數(shù)據(jù)的所述介質(zhì)訪問時間不大于預(yù)定值,并且所述排隊命令的所述數(shù)目不小于預(yù)定值,則關(guān)于所述第一命令的所述命令完成通知被延遲。關(guān)于所述第一命令的所述命令完成通知在對所述排隊命令的重新安排完成之后被傳輸。
根據(jù)本發(fā)明的第三方面,提供一種用于控制主機(jī)和存儲裝置之間的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸控制方法,包括如下步驟從命令隊列中獲得要對介質(zhì)進(jìn)行訪問的命令;執(zhí)行所述所述命令;以及如果用于執(zhí)行所述命令的時間不小于預(yù)定值,則將待傳輸?shù)拿钔瓿赏ㄖ獋鬏斀o主機(jī)。這能夠減少待傳輸命令完成通知的數(shù)目并發(fā)布新接收的命令。
根據(jù)本發(fā)明的第四方面,提供一種存儲裝置,包括命令隊列,其中存儲了從主機(jī)傳輸?shù)亩鄠€命令;命令次序確定部分,其確定按順序執(zhí)行存儲在所述命令隊列中的第一命令和第二命令;數(shù)據(jù)傳輸控制部分,其根據(jù)關(guān)于所述第一命令的第一數(shù)據(jù)的地址信息和關(guān)于所述第二命令的第二數(shù)據(jù)的地址信息,確定是否延遲傳輸關(guān)于所述第一命令的完成通知給主機(jī)的定時,直到所述第二數(shù)據(jù)被傳輸給主機(jī)或從主機(jī)傳輸;以及數(shù)據(jù)傳輸部分,其在所述數(shù)據(jù)傳輸控制部分的控制下,將所述第一數(shù)據(jù)傳輸給主機(jī)或從所述主機(jī)傳輸,并且在所述第一命令的處理被完成和所述第二數(shù)據(jù)被傳輸之后,傳輸關(guān)于所述第一命令的所述完成通知。由于根據(jù)關(guān)于所述第一和第二數(shù)據(jù)的地址信息來確定是否在傳輸所述第二數(shù)據(jù)之前或之后傳輸關(guān)于所述第一命令的完成通知,因此能夠提高存儲裝置的性能。
優(yōu)選,該存儲裝置還包括存儲數(shù)據(jù)的旋轉(zhuǎn)介質(zhì),其中所述第一和第二命令分別是將數(shù)據(jù)寫入所述介質(zhì)的命令;以及如果用于所述第一數(shù)據(jù)的地址和用于所述第二數(shù)據(jù)的地址之間的差小于預(yù)定值,則所述數(shù)據(jù)傳輸控制部分確定延遲傳輸關(guān)于所述第一命令的所述完成通知給主機(jī)的定時,直到所述第二數(shù)據(jù)從所述主機(jī)傳輸。
還優(yōu)選,該存儲裝置還包括存儲數(shù)據(jù)的旋轉(zhuǎn)介質(zhì),其中所述第一和第二命令分別是對所述介質(zhì)寫入數(shù)據(jù)的命令;以及如果用于所述第二數(shù)據(jù)的地址鄰近用于所述第一數(shù)據(jù)地址,則所述數(shù)據(jù)傳輸控制部分確定延遲傳輸關(guān)于所述第一命令的所述完成通知給主機(jī)的定時,直到所述第二數(shù)據(jù)從所述主機(jī)傳輸。
根據(jù)本發(fā)明的第五方面,提供一種存儲裝置,包括旋轉(zhuǎn)介質(zhì),其上存儲數(shù)據(jù);命令隊列,其存儲從主機(jī)傳輸?shù)亩鄠€命令;命令次序確定部分,其確定存儲在所述命令隊列中的要執(zhí)行的命令的次序;數(shù)據(jù)傳輸控制部分,其根據(jù)由所述命令次序確定部分所確定的用于訪問介質(zhì)的執(zhí)行命令的數(shù)據(jù)長度并且根據(jù)存儲在所述命令隊列中的命令的數(shù)目,確定將關(guān)于所述執(zhí)行命令的命令完成通知傳輸給主機(jī)的定時;以及數(shù)據(jù)傳輸部分,其響應(yīng)來自所述數(shù)據(jù)傳輸控制部分的請求將所述命令完成通知傳輸給主機(jī)。由于傳輸關(guān)于所述執(zhí)行命令的命令完成通知的定時是根據(jù)用于所述執(zhí)行命令的數(shù)據(jù)長度和存儲在命令隊列中的命令數(shù)目確定的,因此命令的重新安排能夠適當(dāng)?shù)倪M(jìn)行。
根據(jù)本發(fā)明的第六方面,提供一種存儲裝置,包括旋轉(zhuǎn)介質(zhì),其上存儲數(shù)據(jù);命令隊列,其存儲從主機(jī)傳輸?shù)亩鄠€命令;命令次序確定部分,其確定存儲在所述命令隊列中的要執(zhí)行的命令的次序;數(shù)據(jù)傳輸控制部分,其根據(jù)由所述命令次序確定部分所確定的用于訪問介質(zhì)的執(zhí)行命令的數(shù)據(jù)長度,并根據(jù)存儲在所述命令隊列中的命令數(shù)目,確定將關(guān)于所述執(zhí)行命令的命令完成通知傳輸給主機(jī)的定時;以及數(shù)據(jù)傳輸部分,其響應(yīng)來自所述數(shù)據(jù)傳輸控制部分的請求將所述命令完成通知傳輸給主機(jī)。由于傳輸關(guān)于所述執(zhí)行命令的命令完成通知的定時是根據(jù)用于所述執(zhí)行命令的訪問時間和存儲在命令隊列中的命令數(shù)目確定的,因此命令的重新安排能夠適當(dāng)?shù)倪M(jìn)行。
根據(jù)本發(fā)明通過控制命令完成通知的發(fā)布能夠提高存儲裝置的性能。
圖1是根據(jù)實施例示出硬盤驅(qū)動器總體結(jié)構(gòu)的框圖;圖2是作為優(yōu)選實施例示出控制主機(jī)—裝置數(shù)據(jù)傳輸?shù)闹鳈C(jī)—裝置接口的邏輯結(jié)構(gòu)的框圖;
圖3示出該實施例的命令數(shù)據(jù)格式的例子;圖4示出該實施例的設(shè)置的幀數(shù)據(jù)格式的例子;圖5示出該實施例的命令完成通知數(shù)據(jù)格式的例子;圖6是流程圖,示出在該實施例中數(shù)據(jù)傳輸如何被控制以處理寫命令;圖7是流程圖,示出在該實施例中數(shù)據(jù)傳輸如何被控制以處理讀命令;圖8是順序示意圖,示出在該實施例中當(dāng)兩個排隊的命令連續(xù)被處理時如何進(jìn)行主機(jī)—裝置數(shù)據(jù)傳輸;圖9是流程圖,示出在該實施例中當(dāng)兩個排隊的命令被連續(xù)處理時如何進(jìn)行主機(jī)—裝置數(shù)據(jù)傳輸;圖10是流程圖,示出如果命令的數(shù)據(jù)扇區(qū)長度小并且排隊的命令總數(shù)較大時,在該實施例中如何控制定時以發(fā)布命令完成通知;圖11是流程圖,示出如果命令的介質(zhì)訪問時間較小并且排隊的命令總數(shù)較大時,在該實施例中如何控制定時以發(fā)布命令完成通知。
具體實施例方式
下面將描述本發(fā)明的實施例。下面描述本發(fā)明如何應(yīng)用并且本發(fā)明不限于下面引用的實施例。為了簡單起見,在下面的說明書和附圖中的適當(dāng)?shù)胤竭M(jìn)行省略和簡化。本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)很容易對實施例的要素進(jìn)行修改、添加和選擇。還應(yīng)當(dāng)注意,同樣的附圖標(biāo)記用于所有的附圖中共有的相同要素,并且為了簡單起見,重復(fù)的描述在適當(dāng)?shù)牡胤奖皇∪ァ?br>
圖1是示出在本實施例中的數(shù)據(jù)處理系統(tǒng)100的總體結(jié)構(gòu)的框圖。該數(shù)據(jù)處理系統(tǒng)100包括主機(jī)110和硬盤驅(qū)動器120。主機(jī)110可以是進(jìn)行數(shù)據(jù)傳輸?shù)挠嬎銠C(jī)、數(shù)字?jǐn)z像機(jī)等;硬盤驅(qū)動器120是存儲從該主機(jī)110傳輸?shù)臄?shù)據(jù)的存儲裝置。該硬盤驅(qū)動器120包括在其支架中作為介質(zhì)例子的一個或多個磁盤121;具有分別與磁盤的記錄表面相關(guān)的磁頭的磁頭組組件123;和控制這些部件以便對磁盤121寫入數(shù)據(jù)并從該磁盤讀出數(shù)據(jù)的控制器124。
從主機(jī)110傳輸?shù)闹鳈C(jī)用戶數(shù)據(jù)被進(jìn)行必要的處理并且在發(fā)送到磁頭組組件123之前由控制器124轉(zhuǎn)換成寫信號。根據(jù)所獲得的寫信號,磁頭122將數(shù)據(jù)寫入該磁盤的記錄表面。另一方面,由磁頭122從磁盤121取出的讀信號被轉(zhuǎn)換成數(shù)字信號并在傳輸給主機(jī)之前由控制器124進(jìn)行必要的處理。
磁盤121是非易失性記錄介質(zhì),具有磁化的磁層以記錄數(shù)據(jù)。當(dāng)硬盤驅(qū)動器120運(yùn)行時,磁盤121以規(guī)定的恒速被驅(qū)動繞主軸電機(jī)125的主軸旋轉(zhuǎn)。當(dāng)硬盤驅(qū)動器120不運(yùn)行時,磁盤121保持靜止。多個磁道作為數(shù)據(jù)存儲分區(qū)同心地形成在磁盤121的表面上,并且每個磁道環(huán)形地劃分成多個環(huán)形扇區(qū)。
伺服數(shù)據(jù)記錄區(qū)形成在磁盤121的表面上。通常,磁盤121具有多個徑向形成的伺服數(shù)據(jù)記錄區(qū)。在每個扇區(qū)中形成伺服數(shù)據(jù)記錄區(qū)和用戶數(shù)據(jù)記錄區(qū)。伺服數(shù)據(jù)由磁頭122取出,使得能夠獲得關(guān)于磁頭122位置的信息。伺服數(shù)據(jù)包括提供磁道號信息的磁道數(shù)據(jù);提供扇區(qū)號信息的扇區(qū)數(shù)據(jù);和脈沖模式(burst pattern)。
磁頭組組件123安裝在支架中以便能夠沿著磁盤121的表面可樞轉(zhuǎn)地移動,磁頭組組件123由音圈電機(jī)(VCM)126驅(qū)動。具有浮動塊和磁性薄膜元件的每個磁頭122設(shè)置在磁頭組組件123的末端。當(dāng)磁頭組組件123樞轉(zhuǎn)地移動時,磁頭122在磁盤121的表面之上沿徑向移動,這使得磁頭122能夠訪問所希望的磁道。
磁頭組組件123對于每個磁盤121具有兩個磁頭122,并且兩個磁頭121分別與磁盤121的頂面和底面相關(guān)。當(dāng)不進(jìn)行數(shù)據(jù)的寫/讀操作時,磁頭122通常是或者保存于位于磁盤121外面的斜坡結(jié)構(gòu)(圖中未示出),或者保存在CSS(接觸起停)系統(tǒng)內(nèi)部的CSS區(qū)。磁頭122對磁盤121寫入數(shù)據(jù)或從該磁盤121讀取伺服數(shù)據(jù)和用戶數(shù)據(jù)。
如圖1所示,控制器124具有讀/寫通道127、硬盤控制器(HDC)128、微處理器單元(MPU)129、存儲器130、伺服控制器133和電機(jī)驅(qū)動單元134。電機(jī)驅(qū)動單元134包括音圈電機(jī)驅(qū)動器(VCM驅(qū)動器)135和主軸電機(jī)驅(qū)動器(SPM驅(qū)動器)136。
讀/寫通道127對從主機(jī)110獲得的數(shù)據(jù)進(jìn)行寫操作。在寫操作中,從硬盤控制器128供給的寫數(shù)據(jù)由讀/寫通道127進(jìn)行代碼-調(diào)制。如此被代碼-調(diào)制的寫數(shù)據(jù)然后轉(zhuǎn)換成寫信號(電流信號)以便該寫信號供給到磁頭122。磁頭122根據(jù)所獲得的信號通過使電流流過線圈將數(shù)據(jù)寫入磁盤121。此外,當(dāng)數(shù)據(jù)提供給主機(jī)110時,進(jìn)行讀操作。在讀操作中,數(shù)據(jù)從磁頭122供給的讀信號中拾取并由讀/寫通道127進(jìn)行解碼處理,進(jìn)行解碼處理后取出的數(shù)據(jù)供給到硬盤控制器128。
根據(jù)加載到存儲器130的微代碼的操作,MPU129不僅執(zhí)行對硬盤驅(qū)動器120的包括磁頭122的定位控制、接口控制和缺陷管理的總體控制,還執(zhí)行與數(shù)據(jù)處理相關(guān)的必要的處理。當(dāng)起動硬盤驅(qū)動器120時,在MPU129上操作的微代碼以及為了控制和數(shù)據(jù)處理所需要的數(shù)據(jù)從磁盤121或ROM(圖中未示出)載入到存儲器130。
由讀/寫通道127讀出的數(shù)字?jǐn)?shù)據(jù)除了來自主機(jī)的用戶數(shù)據(jù)之外還包括伺服數(shù)據(jù)。伺服控制器133從讀/寫通道127獲得的讀出數(shù)據(jù)中取出伺服數(shù)據(jù)。該伺服數(shù)據(jù)具有磁道數(shù)據(jù)、扇區(qū)數(shù)據(jù)和脈沖模式。該取出的伺服數(shù)據(jù)從伺服控制器133傳輸給MPU129。
根據(jù)微代碼,MPU129利用伺服數(shù)據(jù)進(jìn)行磁頭122定位控制處理。來自MPU129的控制數(shù)據(jù)輸出給VCM驅(qū)動器135。VCM驅(qū)動器135根據(jù)控制信號向VCM126提供驅(qū)動電流。此外,MPU129根據(jù)微代碼對電機(jī)驅(qū)動單元134中的寄存器設(shè)置SPM控制數(shù)據(jù),以便控制主軸電機(jī)125的旋轉(zhuǎn)。SPM驅(qū)動器136根據(jù)設(shè)置的SPM控制數(shù)據(jù)執(zhí)行主軸電機(jī)125的旋轉(zhuǎn)控制。
HDC 128具有與主機(jī)110接口的能力。硬盤控制器128接收來自主機(jī)110的用戶數(shù)據(jù)和讀、寫以及其他命令。接收的用戶數(shù)據(jù)傳輸給讀/寫通道127。此外,從讀/寫通道127所獲得的來自磁盤的讀出數(shù)據(jù),或用于數(shù)據(jù)傳輸?shù)目刂茢?shù)據(jù)由HDC 128傳輸給主機(jī)110。還有,HDC128執(zhí)行包括代碼生成處理的其他處理以用于對用戶數(shù)據(jù)進(jìn)行錯誤校驗和錯誤修正。
控制數(shù)據(jù)和用戶數(shù)據(jù)在HDC 128和主機(jī)110之間的傳輸由硬盤控制器128和運(yùn)行在MPU129上的微代碼控制。具體說,在這個實施例中硬盤驅(qū)動器120具有用于來自主機(jī)的某些命令的命令排隊裝置。在硬盤控制器128中用于執(zhí)行的命令的排序以及用于主機(jī)—裝置傳輸?shù)目刂茢?shù)據(jù)和用戶數(shù)據(jù)的排序是被控制和管理的,其目的是提高硬盤驅(qū)動器120的性能。
下面描述命令排隊和在硬盤驅(qū)動器120主機(jī)110之間的主機(jī)—裝置數(shù)據(jù)傳輸?shù)目刂?。這個實施例的主機(jī)—裝置接口使硬盤驅(qū)動器120能夠內(nèi)部控制某些操作的執(zhí)行次序,以便提高硬盤驅(qū)動器120的性能。具體說,在這個實施例的主機(jī)—裝置數(shù)據(jù)通信中,從硬盤驅(qū)動器120向主機(jī)110傳輸命令完成通知的定時被有效地控制,以便提高性能。本實施例的數(shù)據(jù)傳輸控制如果使用于支持NCQ(本機(jī)命令排隊)的SATII規(guī)約,則能夠提高驅(qū)動器的性能。雖然在這個實施例的下面的說明中參考NCQ,但是本發(fā)明的范圍不限于NCQ。
圖2是框圖,示出在這個實施例的主機(jī)—裝置接口中控制主機(jī)—裝置數(shù)據(jù)傳輸?shù)倪壿嫿Y(jié)構(gòu)。HDC 128包括主機(jī)接口211、驅(qū)動器接口212和存儲器管理器213。在MPU上運(yùn)行的微代碼使MPU129能夠起主機(jī)接口管理器221、命令執(zhí)行管理器222、隊列管理器223和驅(qū)動器管理器224的作用。存儲器130可以臨時存儲命令和數(shù)據(jù),以便起命令隊列231和數(shù)據(jù)緩沖器232的作用。
主機(jī)接口211通過執(zhí)行與主機(jī)110的實際數(shù)據(jù)傳輸處理,起數(shù)據(jù)傳輸部分的作用。驅(qū)動器接口212進(jìn)行與磁盤121(介質(zhì)的一個例子)(或讀寫通道127)的實際數(shù)據(jù)輸入輸出處理。存儲器管理器213通過控制存儲器130的數(shù)據(jù)存儲,對硬盤控制器128中的其他功能塊和存儲器130之間的命令和用戶數(shù)據(jù)進(jìn)行中間處理。
主機(jī)接口管理器221起到管理主機(jī)接口211的數(shù)據(jù)傳輸控制部分的功能,主機(jī)接口管理器221與主機(jī)接口211交換某些通知和指令。此外,主機(jī)接口管理器221還起到硬盤控制器128和運(yùn)行于MPU129中的其他功能塊之間的接口的作用。主機(jī)接口管理器221,根據(jù)從其他功能塊獲得的通知、請求和其他數(shù)據(jù),控制在主機(jī)接口211和主機(jī)110之間待被傳輸?shù)臄?shù)據(jù)的次序。具體說,主機(jī)接口管理器221控制向主機(jī)110發(fā)布命令完成通知的定時,以有助于提高性能。
隊列管理器223執(zhí)行在命令序列231中排隊的命令的重新安排。該隊列管理器223起命令次序確定部分的作用,以適當(dāng)?shù)卮_定命令執(zhí)行次序,其目的是使性能最佳化。根據(jù)隊列管理器223確定的次序,命令執(zhí)行管理器222控制命令執(zhí)行。驅(qū)動器管理器224控制驅(qū)動器接口212以便控制驅(qū)動器接口212和磁盤121之間的數(shù)據(jù)寫和數(shù)據(jù)讀。驅(qū)動器管理器224按照來自命令執(zhí)行管理器222的請求控制驅(qū)動器接口212。
下面提供在這個實施例中如何進(jìn)行命令排隊操作的基本描述。應(yīng)當(dāng)注意,從主機(jī)110傳輸?shù)拿畛税▽⒁抨牭拿钪膺€可以包括那些將不排隊的命令。例如,對于SATII規(guī)約,不僅NCQ協(xié)議,還有DMA(直接存儲器訪問)協(xié)議、PIO(程控I/O)協(xié)議和其他協(xié)議能夠同時被支持。通過參考,例如附在命令上的標(biāo)識符,能夠確定該命令是否將排隊。下面描述將排隊的命令和其所涉及的數(shù)據(jù)傳輸。在下面的描述中,讀命令和寫命令作為將排隊的命令出現(xiàn)。
圖3示出該實施例中的命令數(shù)據(jù)格式的例子。圖中的數(shù)據(jù)格式可以應(yīng)用于讀或?qū)懨?。在這個實施例中,將要排隊的命令包括標(biāo)記字段。將要排隊的每個命令通過與該命令相關(guān)的標(biāo)記而被識別??梢杂脴?biāo)記識別的未完成的命令數(shù)目由排隊深度確定。對于NCQ,32個命令由用0到31表示的標(biāo)記分別識別。
在圖3中,“起始扇區(qū)”表示被要求傳輸?shù)臄?shù)據(jù)的開始扇區(qū)?!吧葏^(qū)號”從起始扇區(qū)數(shù)起。扇區(qū)標(biāo)識通過,例如LBA(邏輯塊尋址)成為可能。也給命令以“命令I(lǐng)D”以識別該命令,這里為讀命令或?qū)懨?。除此之外,命令還可以包括其他控制數(shù)據(jù),例如用于超高速緩沖器控制的數(shù)據(jù)。對于NCQ,“排隊的讀FPDMA(第一組DMA)”或“排隊的寫FPDMA”對應(yīng)于這里被引用作為例子的命令。
從主機(jī)110傳輸?shù)淖x或?qū)懨畋恢鳈C(jī)接口211接收并通過存儲器管理器213存儲在命令隊列231中,主機(jī)接口211通知主機(jī)接口管理器221該命令已經(jīng)進(jìn)入。一旦從主機(jī)接口211收到該通知,主機(jī)接口管理器221請求主機(jī)接口211清除“忙”。在接收命令之后,如果主機(jī)接口211準(zhǔn)備接收新命令,在傳輸用戶數(shù)據(jù)之前清除“忙”。
進(jìn)一步,主機(jī)接口管理器221請求隊列管理器223重新安排命令執(zhí)行次序。在命令序列231中,多個未完成的命令可以排隊。隊列管理器223通過確定在命令序列231中的待完成的命令的執(zhí)行次序而重新安排命令序列,以便這些命令從性能的觀點(diǎn)看以最佳次序執(zhí)行。具體說,確定命令執(zhí)行次序,以便使包括尋道等待時間和旋轉(zhuǎn)等待時間的磁頭的介質(zhì)訪問時間最少。
當(dāng)進(jìn)行重新安排時,隊列管理器223根據(jù)考慮了各種參數(shù)的規(guī)定的算法確定執(zhí)行次序。例如,參考了很多參數(shù),例如尋道長度、訪問起始位置和超高速緩存狀態(tài)。這列沒有詳細(xì)描述用于確定命令執(zhí)行次序的重新安排算法,因為這些算法是廣為人知的。
命令執(zhí)行管理器222根據(jù)隊列管理器223確定的次序管理命令的執(zhí)行。如上所述,在這個實施例中主機(jī)—裝置用戶數(shù)據(jù)傳輸可以由硬盤驅(qū)動器120內(nèi)部控制,傳向主機(jī)110的數(shù)據(jù)和來自主機(jī)110的數(shù)據(jù)可以由硬盤驅(qū)動器120以定時進(jìn)行優(yōu)化,以便減少內(nèi)部運(yùn)行等待時間。
與單個的命令分別相關(guān)的數(shù)據(jù)可以以任意次序傳輸。除了這個能力之外,優(yōu)選地,根據(jù)處理效率將與命令相關(guān)的數(shù)據(jù)劃分為數(shù)據(jù)部分并以任意次序傳輸這些數(shù)據(jù)部分。進(jìn)一步更優(yōu)選地,命令的部分?jǐn)?shù)據(jù)傳輸可以插入另一個命令的部分?jǐn)?shù)據(jù)之間。對于NCQ,該傳輸協(xié)議是被支持的。在NCQ中,如果能夠進(jìn)行“非零緩沖區(qū)位移”,也就是,可以設(shè)置位移以表示數(shù)據(jù)部分,并且“保證的按次序發(fā)送”是被禁止的,即不連續(xù)的傳輸是允許的,數(shù)據(jù)部分可以以前面提到的方式傳輸。假定,在下面的描述中該條件被滿足。
為了使硬盤驅(qū)動器120能夠控制用戶數(shù)據(jù)傳輸,用于數(shù)據(jù)傳輸?shù)脑O(shè)置幀(setup frame)由硬盤驅(qū)動器120發(fā)布給主機(jī)110。圖4示出該實施例中的設(shè)置幀數(shù)據(jù)格式的例子。用于NCQ的“DMA設(shè)置FIS(幀信息結(jié)構(gòu))”是設(shè)置幀的一個例子。該設(shè)置幀包括規(guī)定讀或?qū)懙淖侄巍⒈粋鬏數(shù)臄?shù)據(jù)所沿的傳輸方向。標(biāo)記字段表示數(shù)據(jù)將被傳輸?shù)呐抨牰赐瓿傻拿睢H缟纤觯?2個命令分別用由0到31表示的標(biāo)記來識別。
為了能夠進(jìn)行命令的部分?jǐn)?shù)據(jù)傳輸,偏移字段表示用于該部分?jǐn)?shù)據(jù)傳輸?shù)钠?。用于NCQ的“非零緩沖偏移”是這種偏移字段的例子。傳輸數(shù)據(jù)字節(jié)字段表示將被傳輸?shù)臄?shù)據(jù)字節(jié)的數(shù)目。與該偏移相結(jié)合,這種字段使命令的部分?jǐn)?shù)據(jù)傳輸成為可能。除了它們之外,設(shè)置幀可以包括控制數(shù)據(jù)字段,它帶有幀類型型信息、控制數(shù)據(jù)傳輸信息等。
當(dāng)用戶數(shù)據(jù)傳輸完成之后,命令完成通知從硬盤驅(qū)動器120傳輸給主機(jī)110。在這個實施例中,命令完成通知是在主機(jī)接口管理器221的控制之下傳輸?shù)?。命令的命令完成通知并不總是在該命令完成之后立即傳輸?shù)?,硬盤驅(qū)動器120可以在適當(dāng)?shù)亩〞r輸出命令完成通知,以便提高性能。例如,用于多個命令的命令完成通知可以在所有的這些命令完成之后順序地傳輸。優(yōu)選地,一個命令完成通知可以通知多個命令已經(jīng)被成功完成。這能夠減少主機(jī)110被中斷的次數(shù)。
圖5示出用于命令完成通知的數(shù)據(jù)格式。除了帶有幀類型信息等的控制數(shù)據(jù)字段之外,每個命令完成通知還包括命令狀態(tài)字段。命令狀態(tài)字段表示由其標(biāo)志識別的每個命令的狀態(tài)。優(yōu)選地,命令狀態(tài)字段由與能夠排隊的命令一樣多的位組成,也就是說,如果32個命令能夠排隊,那么命令狀態(tài)字段具有32位數(shù)據(jù)。每個位表示與相應(yīng)的標(biāo)志相關(guān)的命令的狀態(tài)。
例如,如果某個位被設(shè)置,這表示與對應(yīng)于該位的標(biāo)志相關(guān)的命令被成功地完成。如上所述也可以由一個命令完成通知通知主機(jī)110多個命令已被成功完成。通過設(shè)置命令狀態(tài)字段的多個位,可以在分別完成多個命令時通知主機(jī)110。另一方面,通過清除位,可以通知與相應(yīng)的標(biāo)記相關(guān)的命令尚未完成。對于NCQ,“設(shè)置設(shè)備位FIN”是命令完成通知的例子,而“SActive”是命令狀態(tài)字段的例子。
首先,參考圖6,下面對如何進(jìn)行寫命令處理進(jìn)行基本的描述。在下面的描述中假定寫超高速緩沖存儲器是被禁止的。如果從隊列管理器223獲得寫命令(S601),命令執(zhí)行管理器222請求主機(jī)接口管理器221從主機(jī)110開始數(shù)據(jù)傳輸。按照預(yù)定的算法,主機(jī)接口管理器221確定將要進(jìn)行的相關(guān)于主機(jī)110的數(shù)據(jù)(包括諸如命令完成通知控制數(shù)據(jù)和用戶數(shù)據(jù))傳輸?shù)拇涡?S602)。在這個例子中,響應(yīng)該請求,主機(jī)接口管理器221請求主機(jī)接口211開始寫數(shù)據(jù)傳輸。響應(yīng)該請求,主機(jī)接口211發(fā)布設(shè)置幀(S603)。
響應(yīng)于請求,主機(jī)110傳輸寫數(shù)據(jù)(S604)。該傳輸?shù)膶憯?shù)據(jù)通過主機(jī)接口211和存儲器管理器213存儲在存儲器130中。當(dāng)從主機(jī)接口211接收到數(shù)據(jù)傳輸完成通知時,主機(jī)接口管理器221通知命令執(zhí)行管理器222該傳輸完成。命令執(zhí)行管理器222請求驅(qū)動器管理器224寫數(shù)據(jù)。在驅(qū)動器管理器224的管理下,驅(qū)動器接口212將經(jīng)存儲器管理器213從存儲器130獲得的寫數(shù)據(jù)輸出給磁盤121(S605)。
如果寫高速緩沖存儲器如所假定的被禁止,那么命令完成通知在數(shù)據(jù)寫入磁盤121完成時被發(fā)布。由HDC 128經(jīng)命令執(zhí)行管理器222通知寫數(shù)據(jù)已經(jīng)寫入磁盤121,主機(jī)接口管理器221確定是否傳輸命令完成通知(S606)。傳輸命令完成通知的定時從內(nèi)部運(yùn)行的效率的觀點(diǎn)由考慮到其它命令或命令完成通知來確定。如果主機(jī)接口管理器221確定傳輸該命令完成通知,那么它請求主機(jī)接口211傳輸表示該完成的命令的標(biāo)志的命令完成通知。主機(jī)接口211將帶有狀態(tài)字段中設(shè)置的相應(yīng)位的命令完成通知傳輸給主機(jī)110(S607)。
同時,下面將參考圖7對如何進(jìn)行讀處理進(jìn)行基本描述。命令執(zhí)行管理器222請求驅(qū)動器管理器224從磁盤121讀取數(shù)據(jù)。在驅(qū)動器管理器224的控制下,從磁盤121讀取的數(shù)據(jù)通過驅(qū)動器接口212和存儲器管理器213存儲在存儲器130中(S701)。還有,驅(qū)動器管理器224將讀取數(shù)據(jù)傳輸請求傳給主機(jī)接口管理器221。
響應(yīng)來自命令執(zhí)行管理器222的請求,主機(jī)接口管理器221請求主機(jī)接口211開始向主機(jī)110傳輸數(shù)據(jù)。響應(yīng)該請求,主機(jī)接口211發(fā)布設(shè)置幀(S702)。主機(jī)接口211經(jīng)存儲器管理器213獲得存儲在存儲器130中的讀取數(shù)據(jù)并將該讀取數(shù)據(jù)傳輸給主機(jī)110(S703)。當(dāng)傳輸處理完成時,主機(jī)接口211通知主機(jī)接口管理器221讀取數(shù)據(jù)已經(jīng)傳輸。
主機(jī)接口管理器221通過考慮其它命令或命令完成通知來確定傳輸命令完成通知的定時(S704)。例如,根據(jù)性能,通知或者可以在完成讀取處理時,或者可以在稍后的定時傳送。為了傳輸通知,主機(jī)接口管理器221請求主機(jī)接口211傳輸命令完成通知。主機(jī)接口211將帶有狀態(tài)字段中設(shè)置的相應(yīng)位的命令完成通知傳輸給主機(jī)110(S705)。
下面描述控制發(fā)布命令完成通知的定時的一些優(yōu)選方式。如上所述,向主機(jī)傳輸命令完成通知由主機(jī)接口管理器221管理。一種優(yōu)選方式是當(dāng)命令隊列231中的兩個排隊的寫命令被連續(xù)處理時,控制發(fā)布命令完成通知的定時。如果用于該兩個命令的相應(yīng)數(shù)據(jù)之間的地址差不大于預(yù)定值,則主機(jī)接口管理器221延遲第一個寫命令的命令完成通知的傳輸。換句話說,如果相應(yīng)的地址相互鄰近或靠近,那么進(jìn)行對磁盤的相應(yīng)訪問而無需相應(yīng)訪問之間的轉(zhuǎn)動延誤。在這種情況下,主機(jī)接口管理器221延遲第一個寫命令的命令完成通知的傳輸。
在用于一個寫命令的寫數(shù)據(jù)從主機(jī)110傳輸之后,另一個寫命令的寫數(shù)據(jù)被傳輸而沒有任何命令完成通知的傳輸。通過較早傳輸下一個寫數(shù)據(jù)以便連續(xù)地傳輸這兩個寫數(shù)據(jù),能夠避免由于旋轉(zhuǎn)延遲而引起性能變差。應(yīng)當(dāng)注意,雖然在下面的描述中假定是兩個寫命令,但是同樣的過程也適用于三個或更多個寫命令并且可以減少等待時間。
下面參考圖8和圖9對該過程進(jìn)行具體描述。圖8是在主機(jī)110和硬盤驅(qū)動器120之間的數(shù)據(jù)傳輸?shù)捻樞蚴疽鈭D。圖9是其流程圖。在命令隊列231中,由標(biāo)志X識別的寫命令(X)和由標(biāo)志Y識別的寫命令(Y)排隊。此外,如上面所假定的,寫高速緩沖存儲器被禁止。響應(yīng)來自隊列管理器223的請求,命令執(zhí)行管理器222請求主機(jī)接口管理器221傳輸寫命令(X)的寫數(shù)據(jù)(S901)。
在主機(jī)接口管理器221的控制下,主機(jī)接口211將用于寫數(shù)據(jù)傳輸?shù)脑O(shè)置幀(X)傳輸給主機(jī)110(S902)。響應(yīng)該設(shè)置幀(X),主機(jī)110將寫數(shù)據(jù)(X)傳輸給硬盤驅(qū)動器120(S903)。該寫數(shù)據(jù)(X)經(jīng)HDC 128被存儲在數(shù)據(jù)緩沖器232中。該寫數(shù)據(jù)(X)開始傳輸之后或前面的對磁盤的訪問完成時,開始對磁盤尋道并將該寫數(shù)據(jù)(X)寫入磁盤(S904)。如上面所提到的,用于寫數(shù)據(jù)(X)的寫操作在驅(qū)動器管理器224的管理下由驅(qū)動器接口212執(zhí)行,該驅(qū)動器管理器224已經(jīng)收到來自命令執(zhí)行管理器222的請求。
在寫數(shù)據(jù)(X)被傳輸或?qū)懭霑r,命令執(zhí)行管理器222請求主機(jī)接口管理器221傳輸用于寫命令(Y)的寫數(shù)據(jù)(S905)。主機(jī)接口管理器221參考所獲得的關(guān)于寫數(shù)據(jù)(X)和寫數(shù)據(jù)(Y)的地址信息,并根據(jù)該地址信息,確定要執(zhí)行的寫數(shù)據(jù)(Y)的傳輸以及寫數(shù)據(jù)(X)的命令完成通知(X)的傳輸?shù)拇涡?S906)。如果寫數(shù)據(jù)(Y)的地址鄰近或靠近寫數(shù)據(jù)(X)的地址,就有可能通過延遲命令完成通知(X)來提高性能。在這種情況下,優(yōu)選地,確定寫數(shù)據(jù)(Y)的傳輸在命令完成通知(X)傳輸之前執(zhí)行。具體說,如果不需要等待旋轉(zhuǎn)就能夠?qū)Υ疟P進(jìn)行寫入,則寫數(shù)據(jù)(Y)的傳輸將提早執(zhí)行。如果滿足這個條件,則命令完成通知(X)將較早傳輸。
如果較早執(zhí)行寫數(shù)據(jù)(Y)的傳輸,則在主機(jī)接口管理器221的控制下,主機(jī)接口211傳輸設(shè)置幀(Y)給主機(jī)110以便傳輸寫數(shù)據(jù)(Y)(S907)。響應(yīng)設(shè)置幀(Y),主機(jī)110將寫數(shù)據(jù)(Y)傳輸給硬盤驅(qū)動器120(S908)。寫數(shù)據(jù)(Y)經(jīng)HDC 128被存儲在數(shù)據(jù)緩沖器232中。
在寫數(shù)據(jù)(Y)被完全寫入之后,其完成通知經(jīng)命令執(zhí)行管理器222從HDC 128發(fā)送給主機(jī)接口管理器221。主機(jī)接口管理器221確定傳輸關(guān)于寫數(shù)據(jù)(X)和寫數(shù)據(jù)(Y)的命令完成通知。通過傳輸其中設(shè)置了命令狀態(tài)字段中的相應(yīng)位的單個命令完成通知,主機(jī)接口211在寫數(shù)據(jù)(X)和寫數(shù)據(jù)(Y)被完全寫入時通知主機(jī)110(S909)。作為選擇,也可以連續(xù)地或者以分隔開的的定時將兩個命令完成通知(X)和(Y)傳輸給主機(jī)110。應(yīng)當(dāng)注意,迄今為止所描述的命令完成通知控制并不僅限于數(shù)據(jù)寫入處理。
下面描述對命令完成通知的發(fā)布定時進(jìn)行控制的另一種優(yōu)選方式。在這種方式中,命令完成通知的發(fā)布定時被延遲,例如,為了保證重新安排排隊命令所需的時間。具體說,可以根據(jù)命令執(zhí)行時間和重新安排時間之間的關(guān)系通過延遲命令完成通知來保證合適的用于重新安排的時間。延遲發(fā)布命令完成通知的定時這種方式使得能夠合適地重新安排命令執(zhí)行次序。
如果用于一個命令的讀或?qū)憯?shù)據(jù)的扇區(qū)長度小,那么會出現(xiàn)不能保證重新安排所需時間的可能性。如果扇區(qū)長度(數(shù)據(jù)長度)小,那么可用于重新安排命令執(zhí)行次序的時間短。由于這個原因,如果排隊命令的數(shù)目大于一定數(shù),則用于執(zhí)行合適的安排的時間得不到保證。以這種方式,主機(jī)接口管理器221根據(jù)存儲在隊列中的命令的總數(shù)和用于執(zhí)行命令的數(shù)據(jù)長度控制發(fā)布命令完成通知的定時。
當(dāng)對磁盤完成了用于一個讀取命令的讀取數(shù)據(jù)傳輸操作或當(dāng)完成了用于一個寫入命令的數(shù)據(jù)寫入操作時,主機(jī)接口管理器221能夠?qū)⒚钔瓿赏ㄖ獋鬏斀o主機(jī)110。在請求主機(jī)接口211傳輸命令完成通知之前,主機(jī)接口管理器221根據(jù)執(zhí)行命令的扇區(qū)長度和在命令隊列231中排隊的命令的總數(shù)判斷是否傳輸已完成命令的命令完成通知。
如果不需要重新安排操作(S1001),則主機(jī)接口管理器221確定傳輸命令完成通知并請求將其傳輸至主機(jī)接口211(S1002)。優(yōu)選地,如果多個命令完成通知待傳輸,則發(fā)布覆蓋所有該多個命令的一個命令完成通知。在下面的描述中也一樣。如果需要重新安排操作(S1001),則主機(jī)接口管理器221從隊列管理器223獲得關(guān)于排隊命令的總數(shù)的信息。此外,主機(jī)接口管理器221從隊列管理器223獲得關(guān)于用于執(zhí)行命令的數(shù)據(jù)的扇區(qū)長度的信息。關(guān)于它們的信息在適當(dāng)?shù)亩〞r獲得。主機(jī)接口管理器221將命令總數(shù)與扇區(qū)長度進(jìn)行比較。
主機(jī)接口管理器221判斷重新安排排隊命令總數(shù)所需要的時間是否能夠由用來處理執(zhí)行命令數(shù)據(jù)的時間來保證。優(yōu)選地,如果用于執(zhí)行命令的數(shù)據(jù)長度不大于預(yù)定長度,并且排隊的命令總數(shù)不大于預(yù)定的數(shù)目,則主機(jī)接口管理器221確定延遲命令完成通知的傳輸(S1003)。這種臨界長度和總數(shù)根據(jù)每個命令/處理類型預(yù)先確定。
如果不滿足上述條件,即,扇區(qū)長度大于預(yù)定長度或命令的總數(shù)小于預(yù)定的數(shù)目,則主機(jī)接口管理器221判斷,重新安排排隊命令的時間能夠被保證并且確定傳輸命令完成通知給主機(jī)而不延遲(S1004)。如果滿足上述條件,并且主機(jī)接口管理器221判斷重新安排所需的時間不能被保證,則主機(jī)接口管理器221確定在稍晚的定時傳輸命令完成通知而不立即傳輸它(S1005)。
當(dāng)重新安排完成時,隊列管理器223通知主機(jī)接口管理器221重新安排已經(jīng)完成(S1006)。響應(yīng)該通知,主機(jī)接口管理器221確定發(fā)布該被延遲的命令完成通知并請求主機(jī)接口211傳輸該命令完成通知(S1007)。應(yīng)當(dāng)注意,在重新安排完成之后主機(jī)接口管理器221也能夠再一次延遲命令完成通知的發(fā)布。
換句話說,如果命令執(zhí)行時間由于扇區(qū)長度大而足夠長,優(yōu)選地,待傳輸?shù)拿钔瓿赏ㄖ?,如果有的話,一定要在此定時被返回到主機(jī)110。如果命令執(zhí)行時間比重新安排時間長,則就要傳輸待傳輸?shù)拿钔瓿赏ㄖ?。例如,如果扇區(qū)長度不小于預(yù)定長度,并且排隊的命令總數(shù)不大于預(yù)定數(shù)目,就可以確定傳輸待傳輸?shù)拿钔瓿赏ㄖ?。由于同時可用的標(biāo)記數(shù)字的數(shù)目受限,將命令完成通知返回到主機(jī)110使得主機(jī)110能夠發(fā)布新的命令。增加排隊的命令的數(shù)目使硬盤驅(qū)動器120能夠進(jìn)行更合適的命令重新安排。
在迄今描述的方式中,是否延遲命令完成通知要根據(jù)扇區(qū)長度和排隊命令的總數(shù)之間的關(guān)系來確定。在另一優(yōu)選方式中,是否延遲命令完成通知要根據(jù)用于執(zhí)行命令的介質(zhì)訪問時間和排隊命令的總數(shù)之間的關(guān)系來確定。如果一個命令的讀取或?qū)懭霐?shù)據(jù)所需的包括尋道時間和旋轉(zhuǎn)等待時間的介質(zhì)訪問時間較短,則可用于重新安排命令的時間也較短。在這種情況下,如果排隊命令的總數(shù)不是太小,則用于進(jìn)行適當(dāng)重新安排的時間可能得不到保證。因此,主機(jī)接口管理器221根據(jù)存儲在隊列中的命令的信息和用于執(zhí)行命令的介質(zhì)訪問時間控制發(fā)布命令完成通知的定時。
類似于上述方式,命令完成通知變得很容易被傳輸?shù)街鳈C(jī)。然后,在請求主機(jī)接口211傳輸命令完成通知之前,主機(jī)接口管理器221根據(jù)用于執(zhí)行命令的介質(zhì)訪問時間和在命令隊列231中排隊的命令總數(shù)判斷是否傳輸命令完成通知。
如果對于排隊的命令不需要重新安排操作(S1101),則主機(jī)接口管理器221確定傳輸命令完成通知并請求將其傳輸?shù)街鳈C(jī)接口211(S1102)。如果需要重新安排操作(S1101),則主機(jī)接口管理器221從隊列管理器223獲得關(guān)于排隊命令總數(shù)的信息。此外,主機(jī)接口管理器221還從隊列管理器223獲得關(guān)于用于執(zhí)行命令的介質(zhì)訪問時間的信息。關(guān)于它們的信息在適當(dāng)?shù)亩〞r獲得。主機(jī)接口管理器221將命令的總數(shù)與介質(zhì)訪問時間進(jìn)行比較。
主機(jī)接口管理器221判斷重新安排排隊命令總數(shù)所花的時間是否能由用于執(zhí)行命令的介質(zhì)訪問時間所保證。優(yōu)選地,如果用于執(zhí)行命令的介質(zhì)訪問時間不大于預(yù)定時間并且排隊命令的總數(shù)不小于預(yù)定的數(shù)目,則主機(jī)接口管理器221確定延遲命令完成通知的傳輸,這種臨界時間和總數(shù)根據(jù)每個命令/處理類型來預(yù)先確定。
如果不滿足上述條件,即,介質(zhì)訪問時間大于預(yù)定時間長度或命令的總數(shù)小于預(yù)定的數(shù)目,則主機(jī)接口管理器221判斷,重新安排排隊命令的所花的時間能夠被保證并且確定傳輸命令完成通知給主機(jī)101而不延遲(S1104)。如果滿足上述條件,并且主機(jī)接口管理器221判斷用于重新安排所需的時間不能被保證,則主機(jī)接口管理器221確定在稍晚的定時傳輸命令完成通知而不是立即傳輸它(S1105)。當(dāng)重新安排完成時,隊列管理器223通知主機(jī)接口管理器221已經(jīng)完成。
隨后的處理與前面提到的方式相同。還是在這種方式中,優(yōu)選地,如果命令執(zhí)行時間由于介質(zhì)訪問時間長而足夠長,那么待傳輸?shù)拿钔瓿赏ㄖ?,如果有的話,一定要在此定時被返回到主機(jī)110。如果命令執(zhí)行時間比重新安排時間長,則就要傳輸待傳輸?shù)拿钔瓿赏ㄖ?。例如,如果介質(zhì)訪問時間不小于預(yù)定時間,并且排隊的命令總數(shù)不大于預(yù)定數(shù)目,就可以確定傳輸該待傳輸?shù)拿钔瓿赏ㄖ?br>
應(yīng)當(dāng)注意,本發(fā)明不限于串行傳輸或串行ATA協(xié)議。此外,用于每種處理的邏輯結(jié)構(gòu)不限于迄今所所描述的存儲裝置實施例中相應(yīng)的一種。存儲裝置實施例的功能結(jié)構(gòu)或邏輯結(jié)構(gòu)可以由本領(lǐng)域的普通技術(shù)人員有效地改進(jìn)。還應(yīng)當(dāng)注意,雖然在這個實施例中磁頭122是能夠進(jìn)行讀寫操作的讀寫磁頭,本發(fā)明也可以應(yīng)用于僅僅重現(xiàn)的裝置。此外,雖然本發(fā)明特別適用于磁盤驅(qū)動裝置,但是,它也可以用于其他類型的驅(qū)動記錄介質(zhì)的存儲裝置,例如光盤存儲裝置。
權(quán)利要求
1.一種用于控制主機(jī)和存儲裝置之間的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸控制方法,包括如下步驟獲得排隊的第一命令;獲得用于所述第一命令的第一數(shù)據(jù)的地址信息;在所述主機(jī)和所述存儲裝置之間傳輸所述第一數(shù)據(jù);獲得排隊的第二命令;獲得用于所述第二命令的第二數(shù)據(jù)的地址信息;根據(jù)所述第一數(shù)據(jù)和第二數(shù)據(jù)的地址信息,確定是否在將關(guān)于所述第一命令的完成通知從所述存儲裝置傳輸?shù)剿鲋鳈C(jī)之前,在所述主機(jī)和所述存儲裝置之間傳輸所述第二數(shù)據(jù);根據(jù)在所述確定步驟中作出的決定,在所述主機(jī)和所述存儲裝置之間傳輸所述第二數(shù)據(jù);以及在所述第一命令的處理完成之后,在傳輸了所述第二數(shù)據(jù)之后,向主機(jī)傳輸關(guān)于所述第一命令的所述完成通知。
2.根據(jù)權(quán)利要求1的數(shù)據(jù)傳輸控制方法,其中如果用于所述第一數(shù)據(jù)的地址和用于所述第二數(shù)據(jù)的地址之間的差小于預(yù)定值,則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
3.根據(jù)權(quán)利要求1的數(shù)據(jù)傳輸控制方法,其中所述第一命令和所述第二命令分別對旋轉(zhuǎn)的介質(zhì)進(jìn)行介質(zhì)訪問;并且根據(jù)關(guān)于所述第一數(shù)據(jù)和第二數(shù)據(jù)的所述地址信息,如果在對所述第一數(shù)據(jù)的介質(zhì)訪問之后無需旋轉(zhuǎn)等待就能夠進(jìn)行對所述第二數(shù)據(jù)的介質(zhì)訪問,則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
4.根據(jù)權(quán)利要求1的數(shù)據(jù)傳輸控制方法,其中,所述第一命令和所述第二命令分別是對介質(zhì)寫入數(shù)據(jù)的寫命令。
5.根據(jù)權(quán)利要求1的數(shù)據(jù)傳輸控制方法,其中所述第一命令和所述第二命令分別是對旋轉(zhuǎn)的介質(zhì)寫入數(shù)據(jù)的命令;所述第二命令排隊在所述第一命令之后;并且根據(jù)關(guān)于所述第一數(shù)據(jù)和第二數(shù)據(jù)的所述地址信息,如果在將所述第一數(shù)據(jù)寫入介質(zhì)之后,無需旋轉(zhuǎn)等待就能夠?qū)⑺龅诙?shù)據(jù)寫入介質(zhì),則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
6.根據(jù)權(quán)利要求1的數(shù)據(jù)傳輸控制方法,其中所述第一命令和所述第二命令分別是對旋轉(zhuǎn)的介質(zhì)寫入數(shù)據(jù)的命令;所述第二命令排隊在所述第一命令之后;并且如果用于所述第二數(shù)據(jù)的地址鄰近用于所述第一數(shù)據(jù)的地址,則所述確定步驟確定在傳輸關(guān)于所述第一命令的所述完成通知之前傳輸所述第二數(shù)據(jù)。
7.一種用于控制主機(jī)和存儲裝置之間的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸控制方法,包括如下步驟獲得排隊的第一命令;執(zhí)行所述第一命令;獲得有關(guān)排隊命令的信息;以及根據(jù)用于執(zhí)行所述第一命令的時間和用于重新安排所述排隊命令的時間,確定傳輸關(guān)于所述第一命令的命令完成通知的定時。
8.根據(jù)權(quán)利要求7的數(shù)據(jù)傳輸控制方法,其中用于執(zhí)行所述第一命令的所述時間根據(jù)用于所述第一命令的數(shù)據(jù)的扇區(qū)長度來估算。
9.根據(jù)權(quán)利要求7的數(shù)據(jù)傳輸控制方法,其中用于執(zhí)行所述第一命令的所述時間根據(jù)用于所述第一命令的數(shù)據(jù)的介質(zhì)訪問時間來估算。
10.根據(jù)權(quán)利要求7的數(shù)據(jù)傳輸控制方法,其中用于重新安排所述排隊命令的所述時間根據(jù)所述排隊命令的總數(shù)來估算。
11.根據(jù)權(quán)利要求7的數(shù)據(jù)傳輸控制方法,其中如果用于所述第一命令的數(shù)據(jù)的所述扇區(qū)長度不大于預(yù)定值,并且所述排隊命令的所述數(shù)目不小于預(yù)定值,則關(guān)于所述第一命令的所述命令完成通知被延遲。
12.根據(jù)權(quán)利要求7的數(shù)據(jù)傳輸控制方法,其中如果用于所述第一命令的數(shù)據(jù)的所述介質(zhì)訪問時間不大于預(yù)定值,并且所述排隊命令的所述數(shù)目不小于預(yù)定值,則關(guān)于所述第一命令的所述命令完成通知被延遲。
13.根據(jù)權(quán)利要求7的數(shù)據(jù)傳輸控制方法,其中關(guān)于所述第一命令的所述命令完成通知在對所述排隊命令的重新安排完成之后被傳輸。
14.一種用于控制主機(jī)和存儲裝置之間的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)傳輸控制方法,包括如下步驟從命令隊列中獲得要對介質(zhì)進(jìn)行訪問的命令;執(zhí)行所述所述命令;以及如果用于執(zhí)行所述命令的時間不小于預(yù)定值,則將待傳輸?shù)拿钔瓿赏ㄖ獋鬏斀o主機(jī)。
15.一種存儲裝置,包括命令隊列,其中存儲了從主機(jī)傳輸?shù)亩鄠€命令;命令次序確定部分,其確定按順序執(zhí)行存儲在所述命令隊列中的第一命令和第二命令;數(shù)據(jù)傳輸控制部分,其根據(jù)關(guān)于所述第一命令的第一數(shù)據(jù)的地址信息和關(guān)于所述第二命令的第二數(shù)據(jù)的地址信息,確定是否延遲傳輸關(guān)于所述第一命令的完成通知給主機(jī)的定時,直到所述第二數(shù)據(jù)被傳輸給主機(jī)或從主機(jī)傳輸;以及數(shù)據(jù)傳輸部分,其在所述數(shù)據(jù)傳輸控制部分的控制下,將所述第一數(shù)據(jù)傳輸給主機(jī)或從所述主機(jī)傳輸,并且在所述第一命令的處理被完成和所述第二數(shù)據(jù)被傳輸之后,傳輸關(guān)于所述第一命令的所述完成通知。
16.根據(jù)權(quán)利要求15的存儲裝置,還包括存儲數(shù)據(jù)的旋轉(zhuǎn)介質(zhì),其中所述第一和第二命令分別是將數(shù)據(jù)寫入所述介質(zhì)的命令;以及如果用于所述第一數(shù)據(jù)的地址和用于所述第二數(shù)據(jù)的地址之間的差小于預(yù)定值,則所述數(shù)據(jù)傳輸控制部分確定延遲傳輸關(guān)于所述第一命令的所述完成通知給主機(jī)的定時,直到所述第二數(shù)據(jù)從所述主機(jī)傳輸。
17.根據(jù)權(quán)利要求15的存儲裝置,還包括存儲數(shù)據(jù)的旋轉(zhuǎn)介質(zhì),其中所述第一和第二命令分別是對所述介質(zhì)寫入數(shù)據(jù)的命令;以及如果用于所述第二數(shù)據(jù)的地址鄰近用于所述第一數(shù)據(jù)地址,則所述數(shù)據(jù)傳輸控制部分確定延遲傳輸關(guān)于所述第一命令的所述完成通知給主機(jī)的定時,直到所述第二數(shù)據(jù)從所述主機(jī)傳輸。
18.一種存儲裝置,包括旋轉(zhuǎn)介質(zhì),其上存儲數(shù)據(jù);命令隊列,其存儲從主機(jī)傳輸?shù)亩鄠€命令;命令次序確定部分,其確定存儲在所述命令隊列中的要執(zhí)行的命令的次序;數(shù)據(jù)傳輸控制部分,其根據(jù)由所述命令次序確定部分所確定的用于訪問介質(zhì)的執(zhí)行命令的數(shù)據(jù)長度并且根據(jù)存儲在所述命令隊列中的命令的數(shù)目,確定將關(guān)于所述執(zhí)行命令的命令完成通知傳輸給主機(jī)的定時;以及數(shù)據(jù)傳輸部分,其響應(yīng)來自所述數(shù)據(jù)傳輸控制部分的請求將所述命令完成通知傳輸給主機(jī)。
19.根據(jù)權(quán)利要求18的存儲裝置,其中在執(zhí)行了對存儲在所述命令隊列中的命令的重新安排之后,所述數(shù)據(jù)傳輸部分傳輸所述命令完成通知給主機(jī)。
20.一種存儲裝置,包括旋轉(zhuǎn)介質(zhì),其上存儲數(shù)據(jù);命令隊列,其存儲從主機(jī)傳輸?shù)亩鄠€命令;命令次序確定部分,其確定存儲在所述命令隊列中的要執(zhí)行的命令的次序;數(shù)據(jù)傳輸控制部分,其根據(jù)由所述命令次序確定部分所確定的用于訪問介質(zhì)的執(zhí)行命令的數(shù)據(jù)長度,并根據(jù)存儲在所述命令隊列中的命令數(shù)目,確定將關(guān)于所述執(zhí)行命令的命令完成通知傳輸給主機(jī)的定時;以及數(shù)據(jù)傳輸部分,其響應(yīng)來自所述數(shù)據(jù)傳輸控制部分的請求將所述命令完成通知傳輸給主機(jī)。
全文摘要
通過控制通知命令完成的定時來提高HDD的性能。向主機(jī)(110)傳輸命令完成通知由主機(jī)接口管理器(211)管理。如果分別用于兩個排隊命令的兩個數(shù)據(jù)寫入地址相互接近或鄰近,即,可以訪問磁盤上的這兩個地址而無需旋轉(zhuǎn)等待時間,則主機(jī)接口管理器(211)延遲關(guān)于第一寫命令(X)的命令完成通知(X)的傳輸。兩個命令完成通知(X)和(Y)在用于下一個命令的寫數(shù)據(jù)(Y)被傳輸并且其對介質(zhì)的寫入完成之后進(jìn)行。
文檔編號G06F3/06GK1648843SQ20051000588
公開日2005年8月3日 申請日期2005年1月27日 優(yōu)先權(quán)日2004年1月27日
發(fā)明者小林寬美, 金丸淳, 齋藤高裕 申請人:日立環(huán)球儲存科技荷蘭有限公司