專利名稱:執(zhí)行實(shí)時(shí)性能改進(jìn)方法的磁盤驅(qū)動(dòng)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及磁盤驅(qū)動(dòng)器,其中,對(duì)于并行執(zhí)行實(shí)時(shí)處理和非實(shí)時(shí)處理實(shí)施預(yù)讀取控制,從而提高實(shí)時(shí)處理性能,同時(shí)提高非實(shí)時(shí)處理的數(shù)據(jù)傳輸速度。
背景技術(shù):
對(duì)于例如AV數(shù)據(jù)處理的實(shí)時(shí)處理,磁盤驅(qū)動(dòng)器必須精確地遵循規(guī)定的時(shí)間準(zhǔn)則來執(zhí)行數(shù)據(jù)傳輸。因此,為了確保實(shí)時(shí)性能,正在考慮在ATA/ATAPI-7(在根據(jù)ANSI準(zhǔn)則的標(biāo)準(zhǔn)下)中引入一個(gè)命令集,該命令集允許為AV數(shù)據(jù)處理設(shè)置特定流或特定命令的時(shí)限。另外,通過在執(zhí)行的命令之間使用自由周期(主要是循環(huán)等待周期),在磁盤驅(qū)動(dòng)器中執(zhí)行預(yù)讀取,以便提高至主機(jī)的數(shù)據(jù)傳輸速度。在專利文獻(xiàn)1中描述了一種用于這種預(yù)讀取的控制方法。
專利文獻(xiàn)1日本專利公開No.6-95810。
發(fā)明內(nèi)容
在用于AV數(shù)據(jù)處理的ATA/ATAPI-7命令集的情況中,提供了如果在時(shí)限內(nèi)沒有完成處理則停止命令處理的機(jī)制,從而確保實(shí)時(shí)性能的AV數(shù)據(jù)處理。然而,如果AV數(shù)據(jù)處理與文件處理及其他非實(shí)時(shí)PC數(shù)據(jù)處理并行執(zhí)行,那么即使這種機(jī)制也不能確保實(shí)時(shí)性能的AV數(shù)據(jù)處理,因?yàn)闆]有時(shí)限能夠設(shè)置給PC數(shù)據(jù)處理。
為了減少在上述情況中的PC數(shù)據(jù)處理的影響,必須相對(duì)增加從沒有訪問的高速緩存到磁盤的AV數(shù)據(jù)的傳輸。這能夠使由PC數(shù)據(jù)處理造成的AV數(shù)據(jù)處理的周期性干擾最小化。
通常,AV數(shù)據(jù)處理涉及順序存取。因此,預(yù)讀取處理是非常有效的。在順序存取的情況中,如果高速緩存區(qū)域充足,增加要傳輸至高速緩存用于預(yù)讀取的數(shù)據(jù)量就提高了數(shù)據(jù)傳輸效率。
在專利文獻(xiàn)1描述的預(yù)讀取控制方法中,不能指定預(yù)讀取的量,因?yàn)轭A(yù)讀取是通過使用各個(gè)命令之間的自由時(shí)間周期來進(jìn)行的。因此,就數(shù)據(jù)傳輸效率而言,在要求預(yù)先讀取固定量數(shù)據(jù)的順序存取AV數(shù)據(jù)處理中有時(shí)不能進(jìn)行充分的預(yù)讀取。
關(guān)于并行執(zhí)行實(shí)時(shí)性能關(guān)鍵型處理與數(shù)據(jù)完整性關(guān)鍵型處理,本發(fā)明的一個(gè)目標(biāo)是,通過提高對(duì)于順序存取為主的實(shí)時(shí)處理的數(shù)據(jù)傳輸效率來改進(jìn)實(shí)時(shí)性能。
為了解決上述問題,這樣配置本發(fā)明的磁盤驅(qū)動(dòng)器使得如果接收到非實(shí)時(shí)處理命令而正在進(jìn)行對(duì)于實(shí)時(shí)處理命令的預(yù)讀取,則直到快速緩存了特定量的數(shù)據(jù)才開始對(duì)非實(shí)時(shí)處理命令的處理。另外,當(dāng)延遲處理非實(shí)時(shí)處理命令時(shí),最大程度地繼續(xù)進(jìn)行預(yù)讀取,直到預(yù)期發(fā)出下一個(gè)實(shí)時(shí)處理命令的時(shí)間戳。這就防止了打亂實(shí)時(shí)處理的周期性。
當(dāng)與數(shù)據(jù)完整性關(guān)鍵型處理并行執(zhí)行實(shí)時(shí)性能關(guān)鍵型處理時(shí),本發(fā)明的磁盤驅(qū)動(dòng)器能夠通過提高順序存取為主的實(shí)時(shí)處理的數(shù)據(jù)傳輸效率來改善實(shí)時(shí)和非實(shí)時(shí)性能。
圖1示出根據(jù)本發(fā)明配置的磁盤驅(qū)動(dòng)器的例子;圖2示出預(yù)讀取控制的流程,其中,如果在用于AV數(shù)據(jù)處理命令的預(yù)讀取期間接收到PC數(shù)據(jù)處理命令,則延遲對(duì)該P(yáng)C數(shù)據(jù)處理命令的處理,以繼續(xù)用于AV數(shù)據(jù)處理命令的預(yù)讀取,直到高速緩存了固定量的數(shù)據(jù);
圖3是按照由主機(jī)指定的數(shù)據(jù)傳輸大小發(fā)出的讀命令的頻率分布的例子;圖4是按照由主機(jī)指定的數(shù)據(jù)傳輸大小發(fā)出的讀命令的頻率分布的例子;圖5示出預(yù)讀取控制的流程,其中當(dāng)對(duì)于AV數(shù)據(jù)處理執(zhí)行預(yù)讀取時(shí),在專用于AV數(shù)據(jù)的高速緩存區(qū)域中保護(hù)AV數(shù)據(jù)段;圖6示出配置用于AV數(shù)據(jù)處理的主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表的例子;圖7示出分割成分別用于AV數(shù)據(jù)處理和PC數(shù)據(jù)處理的專用段的高速緩存區(qū)域的情況;圖8示出控制過程的流程,其中,如果在用于處理AV讀命令的預(yù)讀取期間接收到PC讀命令,則可以開始處理該P(yáng)C命令而不用延遲;圖9示出禁止另一處理延遲PC讀命令處理的PC數(shù)據(jù)處理讀命令的例子;圖10示出控制處理的流程,其中,延遲PC數(shù)據(jù)讀處理,以最大程度地繼續(xù)進(jìn)行用于AV數(shù)據(jù)讀處理的預(yù)讀取,直到預(yù)期發(fā)出下一個(gè)AV讀命令的預(yù)測(cè)時(shí)間戳;圖11示出主機(jī)將每個(gè)流的命令發(fā)出間隔通知磁盤驅(qū)動(dòng)器的處理流程;圖12示出用于將特定流的命令發(fā)出間隔通知磁盤驅(qū)動(dòng)器的命令的例子;圖13示出配置用于預(yù)測(cè)何時(shí)將發(fā)出AV數(shù)據(jù)處理命令(讀)的命令發(fā)出時(shí)間管理表的例子。
具體實(shí)施例方式
圖1示出了應(yīng)用本發(fā)明的磁盤驅(qū)動(dòng)器的配置的例子。應(yīng)用本發(fā)明的磁盤驅(qū)動(dòng)器包括用于安裝控制程序的程序ROM 101;用于存儲(chǔ)管理高速緩存數(shù)據(jù)和主要與高速緩存區(qū)域有關(guān)的其他數(shù)據(jù)的表的RAM102;管理和設(shè)置磁盤驅(qū)動(dòng)器的內(nèi)部時(shí)間的計(jì)時(shí)器103;其內(nèi)具有上述ROM 101、RAM 102和計(jì)時(shí)器103,從所述ROM讀入控制程序并執(zhí)行該控制程序的控制處理器104;在其中暫時(shí)寫入讀/寫請(qǐng)求數(shù)據(jù)的高速緩存105;控制在主機(jī)與高速緩存105之間和高速緩存105與磁盤114之間的數(shù)據(jù)傳輸?shù)挠脖P控制器(HDC)106;用于移動(dòng)磁頭至指定位置以便讀/寫數(shù)據(jù)的伺服控制單元107;在由伺服控制單元命令時(shí)移動(dòng)磁頭的音圈馬達(dá)(VCM)108;控制磁盤114旋轉(zhuǎn)的馬達(dá)驅(qū)動(dòng)器109;從通過這些磁頭讀取的磁信號(hào)中選擇通過指定磁頭讀取的磁信號(hào)的選擇器110;將從選擇器110發(fā)送的模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù)或?qū)腍DC106發(fā)送的數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成模擬數(shù)據(jù)的信號(hào)處理單元111;打開/關(guān)閉讀出門以將讀數(shù)據(jù)從信號(hào)處理單元111傳送到高速緩存105以及打開/關(guān)閉寫入門以將寫數(shù)據(jù)從高速緩存105傳送到信號(hào)處理單元111的磁盤格式器112;以及與主機(jī)交換命令和數(shù)據(jù)的接口單元113。
在并行執(zhí)行實(shí)時(shí)處理和非實(shí)時(shí)處理時(shí),如果在實(shí)時(shí)處理命令的預(yù)讀取期間接收到非實(shí)時(shí)處理命令,則延遲非實(shí)時(shí)處理命令的處理,以繼續(xù)預(yù)讀取實(shí)時(shí)處理命令,直到高速緩存了固定量的數(shù)據(jù)。圖2示出了這種預(yù)讀取控制的流程。
注意,在以下的描述中,假設(shè)實(shí)時(shí)處理是AV數(shù)據(jù)處理,非實(shí)時(shí)處理是PC數(shù)據(jù)處理,例如文字處理或電子表格處理。同樣,假設(shè)用于實(shí)時(shí)處理的命令是AV命令,用于非實(shí)時(shí)處理的命令是PC命令。然而,這些表述并不限制本發(fā)明的可應(yīng)用范圍。還要注意,圖2的過程只處理讀命令。
在ATA/ATAPI-7標(biāo)準(zhǔn)(草案)中,考慮到用于AV數(shù)據(jù)處理的命令,規(guī)定了對(duì)AV數(shù)據(jù)處理命令的詳細(xì)規(guī)范。根據(jù)該規(guī)范,通過命令代碼將AV命令與PC命令清楚地區(qū)別開,所述命令代碼是命令結(jié)構(gòu)元素。因此,當(dāng)接收到命令時(shí),磁盤驅(qū)動(dòng)器能夠正確地識(shí)別該命令是PC命令還是AV命令。同樣,根據(jù)命令類型能夠清楚地確定在接收到命令后要執(zhí)行的預(yù)讀取控制。
如果接收到讀命令,本發(fā)明的磁盤驅(qū)動(dòng)器判斷該命令是否命中了高速緩存(步驟201)。如果命中了高速緩存,則從高速緩存105傳輸主機(jī)請(qǐng)求數(shù)據(jù)(步驟202)。如果沒有命中高速緩存,則檢查是否正在進(jìn)行預(yù)讀取(步驟203)。如果沒在進(jìn)行預(yù)讀取,則磁盤驅(qū)動(dòng)器訪問磁盤114上的主機(jī)請(qǐng)求地址,讀出主機(jī)請(qǐng)求數(shù)據(jù)并傳輸該數(shù)據(jù)(步驟204)。然后,開始預(yù)讀取(步驟205)。
回到步驟203,如果正在進(jìn)行預(yù)讀取,則檢查接收到的命令是否是PC命令(步驟206)。如果接收到的命令不是PC命令,則繼續(xù)進(jìn)行預(yù)讀取,直到最小訪問時(shí)間到來(步驟207)。然后,開始處理接收到的命令(步驟211)。如果接收到的命令是PC命令,則檢查在接收到命令時(shí)所進(jìn)行的預(yù)讀取是否用于AV數(shù)據(jù)處理(步驟208)。如果結(jié)果顯示正在進(jìn)行的預(yù)讀取不是用于AV數(shù)據(jù)處理的,則繼續(xù)進(jìn)行預(yù)讀取,直到最小訪問時(shí)間到來(步驟207)。然后,開始處理接收到的命令(步驟211)。如果正在進(jìn)行的預(yù)讀取是用于AV數(shù)據(jù)處理的(步驟208),則本發(fā)明的磁盤驅(qū)動(dòng)器檢查至今預(yù)先讀取的數(shù)據(jù)量是否等于或大于用于AV數(shù)據(jù)處理的預(yù)讀取大小的基本單元(以下稱基本數(shù)據(jù)傳輸大小)的倍數(shù)(步驟209)。這里,基本數(shù)據(jù)傳輸大小的倍數(shù)意味著基本數(shù)據(jù)傳輸大小的兩倍、三倍、……。實(shí)際上,根據(jù)磁盤驅(qū)動(dòng)器規(guī)范和要再現(xiàn)的流的比特率,在必要時(shí),可以按基本數(shù)據(jù)傳輸大小的單元來改變要預(yù)先讀取的數(shù)據(jù)量。
下面描述如何設(shè)置基本數(shù)據(jù)傳輸大小。圖3是按照由主機(jī)指定的數(shù)據(jù)傳輸大小發(fā)出的讀命令的頻率分布的例子。對(duì)于AV數(shù)據(jù)處理,主機(jī)往往傾向于指定幾個(gè)特定的數(shù)據(jù)傳輸大小。在圖3的例子中,指定的扇區(qū)大小多數(shù)為124扇區(qū)(301)、126扇區(qū)(302)或128扇區(qū)(303)。以25%以上的頻率給出這些大小中的任一種。
其中,最常用的大小是126扇區(qū)(302)。本發(fā)明的磁盤驅(qū)動(dòng)器可以設(shè)置126扇區(qū)(302)為基本數(shù)據(jù)傳輸大小。
作為替換,本發(fā)明的磁盤驅(qū)動(dòng)器還可以從以高于特定水平的頻率給出的數(shù)據(jù)傳輸大小中選擇最大尺寸作為基本數(shù)據(jù)傳輸大小。在圖3所示的分布情況下,如果特定的頻率水平為25%,則從124扇區(qū)(301)、126扇區(qū)(302)和128扇區(qū)(303)中選擇基本數(shù)據(jù)傳輸大小,它們中每一個(gè)都表現(xiàn)為25%以上的頻率。其中,將最大傳輸尺寸,即128扇區(qū)(303),設(shè)置為基本數(shù)據(jù)傳輸大小。
與圖3類似,圖4示出了按照由主機(jī)指定的數(shù)據(jù)傳輸大小的讀命令的頻率分布的另一個(gè)例子。在圖4的例子中,由于頻率分布相對(duì)均勻,任何數(shù)據(jù)傳輸大小的頻率可能都不高于預(yù)定的水平。在這種情況下,本發(fā)明的磁盤驅(qū)動(dòng)器可以設(shè)置最大數(shù)據(jù)傳輸大小(401)作為基本數(shù)據(jù)傳輸大小。
在本發(fā)明的磁盤驅(qū)動(dòng)器中,還可以從最常用的數(shù)據(jù)傳輸大小中選擇最大數(shù)據(jù)傳輸大小作為基本數(shù)據(jù)傳輸大小。例如,可以從那三個(gè)最常用的數(shù)據(jù)傳輸大小中選擇基本數(shù)據(jù)傳輸大小。如果發(fā)出的命令如圖3所分布,則從三個(gè)最常用的數(shù)據(jù)傳輸大小124扇區(qū)(301)、126扇區(qū)(302)、128扇區(qū)(303)中,選擇最大的數(shù)據(jù)傳輸大小,即128扇區(qū)(303),來作為基本數(shù)據(jù)傳輸大小。
回到步驟209,如果至今預(yù)先讀取的數(shù)據(jù)量小于基本數(shù)據(jù)傳輸大小的倍數(shù),則繼續(xù)進(jìn)行預(yù)讀取,直到數(shù)據(jù)量達(dá)到基本數(shù)據(jù)傳輸大小的倍數(shù)(步驟210)。然后,開始處理接收到的命令(步驟211)。如果至今預(yù)先讀取的數(shù)據(jù)量等于或大于基本數(shù)據(jù)傳輸大小的倍數(shù),則立即停止預(yù)讀取,以開始處理接收到的命令(步驟211)。
在圖5所示的預(yù)讀取控制處理的流程中,當(dāng)對(duì)于AV數(shù)據(jù)處理執(zhí)行預(yù)讀取時(shí),在專用于AV數(shù)據(jù)的高速緩存區(qū)域中保護(hù)(secure)AV數(shù)據(jù)段。對(duì)于預(yù)讀取,將大小等于上述基本數(shù)據(jù)傳輸大小的倍數(shù)的AV數(shù)據(jù)讀取到該AV數(shù)據(jù)段。在AV數(shù)據(jù)處理期間,調(diào)用圖5的流程以開始PC數(shù)據(jù)處理。還要注意,圖5的流程只處理讀命令。
如果本發(fā)明的磁盤驅(qū)動(dòng)器接收到讀命令,它識(shí)別該命令的類型(步驟501)。如果該命令是AV命令,則判斷從第一次接收到AV數(shù)據(jù)命令起已經(jīng)接收到AV命令的次數(shù)是否等于特定數(shù)目,例如,十次(步驟502)。本發(fā)明的磁盤驅(qū)動(dòng)器計(jì)算在調(diào)用圖5的過程之后發(fā)出的AV命令的次數(shù)。當(dāng)完成AV數(shù)據(jù)處理時(shí),將命令計(jì)數(shù)重置為0。在本發(fā)明的磁盤驅(qū)動(dòng)器中,如果已經(jīng)發(fā)出AV命令的次數(shù)小于10,則檢查接收到的AV命令的主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小是否登記在主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表中(步驟503)。
圖6示出了配置用于AV數(shù)據(jù)處理的主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表的例子。在該主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表中,用于AV數(shù)據(jù)處理的每個(gè)主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小隨主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小的頻率一起記錄。在該主機(jī)請(qǐng)求數(shù)據(jù)管理表中,本發(fā)明的磁盤驅(qū)動(dòng)器記錄自AV數(shù)據(jù)處理期間接收到PC數(shù)據(jù)處理命令起從第一個(gè)AV數(shù)據(jù)處理命令開始的每個(gè)主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小及其發(fā)出頻率。當(dāng)完成AV數(shù)據(jù)處理時(shí),將登記的數(shù)據(jù)都清為0。
回到步驟503,如果接收到的AV命令的主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小已經(jīng)登記在主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表中,則該傳輸大小的調(diào)用頻率遞增1(步驟504)。如果接收到的AV命令的主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小還沒有登記,則磁盤驅(qū)動(dòng)器將該傳輸大小登記在主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表中,并將該登記數(shù)據(jù)傳輸大小遞增1(步驟505)。在登記了接收到的命令的主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小的發(fā)出頻率后,磁盤驅(qū)動(dòng)器傳送主機(jī)請(qǐng)求數(shù)據(jù)并繼續(xù)進(jìn)行預(yù)讀取,直到最小等待時(shí)間到來(步驟506)。此后,磁盤驅(qū)動(dòng)器等待下一個(gè)命令。
回到步驟502,如果自第一次接收AV讀命令起已經(jīng)接收的AV讀命令的次數(shù)為10,則如前面所述基于主機(jī)請(qǐng)求數(shù)據(jù)傳輸大小管理表中的數(shù)據(jù)來設(shè)置用于預(yù)讀取的基本數(shù)據(jù)傳輸大小,然后保護(hù)大小為基本數(shù)據(jù)傳輸大小的倍數(shù)的專用段用于AV數(shù)據(jù)處理(步驟507)。然后,判斷保護(hù)的AV數(shù)據(jù)段是否包含寫數(shù)據(jù)(步驟508)。如果保護(hù)的段包含寫數(shù)據(jù),則能夠執(zhí)行預(yù)讀取到該段中,直到遇到待寫入的數(shù)據(jù)(步驟509)。如果保護(hù)的AV數(shù)據(jù)段中不包含寫數(shù)據(jù),則可以執(zhí)行預(yù)讀取到該AV數(shù)據(jù)段中,直到該AV數(shù)據(jù)段的剩余大小等于基本數(shù)據(jù)傳輸大小(對(duì)于一個(gè)命令)(步驟510)。保護(hù)的AV數(shù)據(jù)段并不全用于預(yù)讀取,因?yàn)槿绻麑懨钭鳛殡S后的命令被接收的話,那么全部使用該段可能導(dǎo)致高速緩存的數(shù)據(jù)被寫數(shù)據(jù)沖掉改寫。
圖7示出了其中具有保護(hù)用于AV數(shù)據(jù)處理的專用段的高速緩存區(qū)域的情況。在分割高速緩存之后,AV數(shù)據(jù)寫入到用于AV數(shù)據(jù)處理的專用段701,而PC數(shù)據(jù)寫入到用于PC數(shù)據(jù)處理的專用段702。保護(hù)用于AV數(shù)據(jù)處理的專用段的大小等于前面所述的基本數(shù)據(jù)傳輸大小的倍數(shù)。在兩個(gè)段之間的邊界703進(jìn)行回繞(wraparound)。
在AV數(shù)據(jù)處理期間接收到PC命令時(shí),調(diào)用圖5的過程來執(zhí)行所述的處理,以在終止之前對(duì)高速緩存區(qū)域進(jìn)行分割。注意,分割的高速緩存是不固定的。而是在必要時(shí)可以重新配置。然而,沒有詳細(xì)描述如何配置高速緩存,因?yàn)楸景l(fā)明所關(guān)注的并不是分割高速緩存的方法。
在圖5的流程中,當(dāng)開始PC數(shù)據(jù)處理時(shí),開始選擇數(shù)據(jù)傳輸大小作為預(yù)讀取的基本單元大小的處理。作為替換,還可以基于圖3和圖4所示的在AV數(shù)據(jù)處理期間(在PC數(shù)據(jù)處理開始前)在磁盤驅(qū)動(dòng)器側(cè)預(yù)先獲得的每個(gè)數(shù)據(jù)傳輸大小的發(fā)出頻率來確定預(yù)讀取的基本單元大小。在該情況下,當(dāng)接收到PC命令時(shí),立即可以基于從傳輸大小的頻率分布得到的基本數(shù)據(jù)傳輸大小來分割高速緩存區(qū)域。
回到步驟501,如果接收到的命令不是AV讀命令,則磁盤驅(qū)動(dòng)器等待下一個(gè)要接收的命令。
在圖8的控制流程中,如果在用于AV讀命令處理的預(yù)讀取期間接收到PC讀命令,則開始PC讀命令的處理而不延遲。注意,圖8的過程只處理讀命令。
當(dāng)接收到讀命令時(shí),本發(fā)明的磁盤驅(qū)動(dòng)器判斷該命令是否命中了高速緩存(步驟801)。如果命中了高速緩存,則從高速緩存105傳輸主機(jī)請(qǐng)求數(shù)據(jù)(步驟802)。如果沒有命中高速緩存,則檢查是否正在進(jìn)行預(yù)讀取(步驟803)。如果沒在進(jìn)行預(yù)讀取,則磁盤驅(qū)動(dòng)器訪問磁盤114上的主機(jī)請(qǐng)求地址,讀出主機(jī)請(qǐng)求數(shù)據(jù)并傳輸該數(shù)據(jù)(步驟804)。然后,開始預(yù)讀取(步驟805)。
回到步驟803,如果正在進(jìn)行預(yù)讀取,則檢查接收到的命令是否是PC命令(步驟806)。如果接收到的命令不是PC命令,則繼續(xù)進(jìn)行預(yù)讀取,直到最小訪問時(shí)間到來(步驟807)。然后,開始處理接收到的命令(步驟811)。如果接收到的命令是PC命令,則檢查在接收到命令時(shí)所進(jìn)行的預(yù)讀取是否用于AV數(shù)據(jù)處理(步驟808)。如果結(jié)果顯示正在進(jìn)行的預(yù)讀取不是用于AV數(shù)據(jù)處理的,則繼續(xù)進(jìn)行預(yù)讀取,直到最小訪問時(shí)間到來(步驟807)。然后,開始處理接收到的命令(步驟811)。如果正在進(jìn)行的預(yù)讀取是用于AV數(shù)據(jù)處理的(步驟808),則磁盤驅(qū)動(dòng)器檢查所接收的PC讀命令是否是禁止延遲的讀命令(步驟809)。
圖9示出了禁止另一處理延遲PC讀命令處理的PC數(shù)據(jù)處理命令的例子。該P(yáng)C數(shù)據(jù)處理命令包括特征寄存器、扇區(qū)計(jì)數(shù)寄存器、LBA低寄存器、LBA中寄存器、LBA高寄存器和命令寄存器。盡管根據(jù)ATA/ATAPI-6標(biāo)準(zhǔn)沒有數(shù)值設(shè)置給特征寄存器,但本發(fā)明的磁盤驅(qū)動(dòng)器的接口在必要時(shí)將1設(shè)置給特征寄存器,以防止由另一個(gè)命令延遲該命令的處理。同樣,要傳輸?shù)臄?shù)據(jù)的數(shù)量以扇區(qū)的形式設(shè)置給扇區(qū)計(jì)數(shù)器;LBA地址的0到7位設(shè)置給LBA低;LBA地址的8到15位設(shè)置給LBA中;LBA地址的16到23位設(shè)置給LBA高;24到27位給裝置寄存器的0到3位;選擇的裝置的編號(hào)(主為0,從為1)設(shè)置給裝置寄存器的第4位(901);表示LBA尋址系統(tǒng)的1設(shè)置給裝置寄存器的第6位(902);0設(shè)置給裝置寄存器的第5和7位,因?yàn)樗鼈儽蝗∠?;該命令的命令代碼設(shè)置給命令寄存器。
回到步驟809,判斷接收到的PC讀命令是否是禁止延遲的命令,也就是說,特征寄存器中的值是否為1。如果特征寄存器中的值是1,則繼續(xù)對(duì)AV數(shù)據(jù)讀處理的預(yù)讀取,直到接收的PC命令的最小訪問時(shí)間到來(步驟807)。然后,開始處理接收到的讀命令(步驟811)。
再次回到步驟809,如果該命令不是禁止延遲的命令,也就是說,如果特征寄存器中的值不是1,則繼續(xù)進(jìn)行預(yù)讀取,直到數(shù)據(jù)量達(dá)到基本數(shù)據(jù)傳輸大小的倍數(shù)(810)。然后,開始處理接收到的讀命令(步驟811)。
在圖10中,延遲PC數(shù)據(jù)讀處理,以最大程度地繼續(xù)進(jìn)行用于AV數(shù)據(jù)讀處理的預(yù)讀取,直到預(yù)期發(fā)出下一個(gè)AV讀命令的預(yù)測(cè)時(shí)間戳。圖10示出了該控制處理的流程。注意,圖10的流程只處理讀命令。
如果接收到讀命令,則本發(fā)明的磁盤驅(qū)動(dòng)器判斷該命令是否命中了高速緩存(步驟1001)。如果命中了高速緩存,則從高速緩存105傳輸主機(jī)請(qǐng)求數(shù)據(jù)(步驟1002)。如果沒有命中高速緩存,則檢查是否正在進(jìn)行預(yù)讀取(步驟1003)。如果沒在進(jìn)行預(yù)讀取,則磁盤驅(qū)動(dòng)器訪問磁盤114上的主機(jī)請(qǐng)求地址,讀出主機(jī)請(qǐng)求數(shù)據(jù)并傳輸該數(shù)據(jù)(步驟1004)。然后,開始預(yù)讀取(步驟1005)。
回到步驟1003,如果正在進(jìn)行預(yù)讀取,則檢查接收到的命令是否是PC命令(步驟1006)。如果接收到的命令不是PC命令,則繼續(xù)進(jìn)行預(yù)讀取,直到最小訪問時(shí)間到來(步驟1007)。然后,開始處理接收到的命令(步驟1013)。如果接收到的讀命令是PC命令,則檢查在接收到命令時(shí)所進(jìn)行的預(yù)讀取是否用于AV數(shù)據(jù)處理(步驟1008)。如果結(jié)果顯示正在進(jìn)行的預(yù)讀取不是用于AV數(shù)據(jù)處理的,則繼續(xù)進(jìn)行預(yù)讀取,直到最小訪問時(shí)間到來(步驟1007)。然后,開始處理接收到的命令(步驟1013)。
如果正在進(jìn)行的預(yù)讀取是用于AV數(shù)據(jù)處理的(步驟1008),則磁盤驅(qū)動(dòng)器將基本數(shù)據(jù)傳輸大小的倍數(shù),例如,基本數(shù)據(jù)傳輸大小的五倍設(shè)置為最大預(yù)讀取量(步驟1009)。當(dāng)正在進(jìn)行預(yù)讀取時(shí),檢查時(shí)間是否到達(dá)了在當(dāng)前AV讀命令之后預(yù)期發(fā)出下一個(gè)AV讀命令的預(yù)測(cè)時(shí)間戳(步驟1010)。如果到達(dá)了該時(shí)間戳,則停止用于AV數(shù)據(jù)讀處理的預(yù)讀取處理(步驟1011),以開始處理接收到的讀命令(步驟1013)。
作為檢查時(shí)間是否到達(dá)了在當(dāng)前AV讀命令之后預(yù)期發(fā)出下一個(gè)AV讀命令的預(yù)測(cè)時(shí)間戳(步驟1010)的結(jié)果,如果判斷沒有到達(dá)該時(shí)間戳,則檢查是否達(dá)到了最大預(yù)讀取量(步驟1012)。如果達(dá)到了最大預(yù)讀取量,則立即開始處理接收到的讀命令(步驟1013)。如果沒有達(dá)到最大預(yù)讀取量,則檢查是否到達(dá)了下一個(gè)AV數(shù)據(jù)讀命令的預(yù)測(cè)時(shí)間戳(步驟1010)。也就是說,當(dāng)達(dá)到下面兩個(gè)限度中的任一個(gè)時(shí),開始處理接收到的命令,這兩個(gè)限度為最大預(yù)讀取量或預(yù)期發(fā)出下一個(gè)AV讀命令的預(yù)測(cè)時(shí)間戳。
接下來,本發(fā)明提出兩種方法,用于計(jì)算預(yù)期發(fā)出下一個(gè)數(shù)據(jù)讀命令的預(yù)測(cè)時(shí)間戳。
在一種方法中,主機(jī)將要發(fā)出每下一個(gè)AV數(shù)據(jù)讀命令的間隔通知磁盤驅(qū)動(dòng)器側(cè)。從該給定的間隔和發(fā)出當(dāng)前AV讀命令的時(shí)間,磁盤驅(qū)動(dòng)器預(yù)測(cè)將發(fā)出下一個(gè)讀命令的時(shí)間戳。
在圖11的流程中,主機(jī)將每個(gè)流的命令發(fā)出間隔通知磁盤驅(qū)動(dòng)器。以每個(gè)流為基礎(chǔ),主機(jī)將要保持該流的數(shù)據(jù)傳輸速率所必須滿足的命令發(fā)出間隔通知磁盤驅(qū)動(dòng)器(步驟1101)。為通知該命令發(fā)出間隔,使用例如在ATA/ATAPI-6中所述的設(shè)置特征命令。從主機(jī)接收到特定流的命令發(fā)出間隔時(shí),本發(fā)明的磁盤驅(qū)動(dòng)器將特定流的命令發(fā)出間隔存儲(chǔ)到RAM 102(步驟1102)。
圖12示出了將什么值設(shè)置給設(shè)置特征命令的各個(gè)寄存器,所述設(shè)置特征命令用于通知特定流的命令發(fā)出間隔。表示設(shè)置特征命令的代碼EFh(1201)設(shè)置給命令寄存器;表示命令發(fā)出間隔特征的子命令代碼34h(1202)設(shè)置給特征寄存器;流ID(1203)設(shè)置給扇區(qū)計(jì)數(shù)寄存器;特定流的命令發(fā)出間隔時(shí)間(1204)設(shè)置給LBA低寄存器;0設(shè)置給LBA中和LBA高寄存器,因?yàn)椴槐卦O(shè)置有效的值;選擇的裝置的編號(hào)(主為0,從為1)設(shè)置給裝置寄存器的第4位;沒有任何值設(shè)置給裝置寄存器的0到3位和第6位;0設(shè)置給裝置寄存器的第5和第7位。
在另一種方法中,磁盤驅(qū)動(dòng)器記錄并獲悉發(fā)出AV數(shù)據(jù)處理(讀)命令的間隔。從獲悉的命令發(fā)出間隔和發(fā)出當(dāng)前AV讀命令的時(shí)間,可以預(yù)測(cè)將發(fā)出和接收下一個(gè)AV讀命令的時(shí)間戳。
圖13示出了配置命令發(fā)出時(shí)間管理表以預(yù)測(cè)將發(fā)出AV數(shù)據(jù)處理命令(讀)的時(shí)間的例子。這個(gè)表包括最近命令發(fā)出時(shí)間(ms)、最近十個(gè)命令發(fā)出間隔(ms)和平均命令發(fā)出間隔(ms)。發(fā)出最近的命令的時(shí)間登記為最近命令發(fā)出時(shí)間。對(duì)于最近十個(gè)命令分別測(cè)得的間隔登記為最近十個(gè)命令發(fā)出間隔。最近十個(gè)命令發(fā)出間隔的平均值登記為平均命令發(fā)出間隔。通過將平均命令發(fā)出間隔與最近命令發(fā)出時(shí)間相加來得到預(yù)期發(fā)出下一個(gè)AV讀命令的預(yù)測(cè)時(shí)間戳。
權(quán)利要求
1.一種磁盤驅(qū)動(dòng)器,其包括磁盤,其中記錄了用于實(shí)時(shí)處理的數(shù)據(jù);計(jì)時(shí)器,用于時(shí)間管理;高速緩存,用于暫時(shí)存儲(chǔ)從所述磁盤讀取的數(shù)據(jù)和從主機(jī)傳輸?shù)臄?shù)據(jù);以及控制部分,用于控制在所述高速緩存和主機(jī)之間的數(shù)據(jù)傳輸以及在所述高速緩存和磁盤之間的數(shù)據(jù)傳輸;其中,當(dāng)正在從磁盤對(duì)用于實(shí)時(shí)處理的數(shù)據(jù)進(jìn)行預(yù)讀取時(shí)如果接收到用于非實(shí)時(shí)處理的命令,所述控制部分延遲開始對(duì)所述用于非實(shí)時(shí)處理的命令的處理,繼續(xù)進(jìn)行所述預(yù)讀取,并且在特定量的數(shù)據(jù)高速緩存到所述高速緩存之后,開始處理所述用于非實(shí)時(shí)處理的命令。
2.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,當(dāng)繼續(xù)進(jìn)行所述預(yù)讀取時(shí),要高速緩存的數(shù)據(jù)量等于由主機(jī)最常指定用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小的倍數(shù)。
3.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,當(dāng)繼續(xù)進(jìn)行所述預(yù)讀取時(shí),要高速緩存的數(shù)據(jù)量等于在特定頻率以上的頻率由主機(jī)指定用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小中最大的數(shù)據(jù)傳輸大小的倍數(shù)。
4.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,繼續(xù)進(jìn)行所述預(yù)讀取,如果不存在在特定頻率以上的頻率由主機(jī)指定用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小,則要高速緩存的數(shù)據(jù)量等于由主機(jī)指定用于實(shí)時(shí)處理的所有數(shù)據(jù)傳輸大小中最大的數(shù)據(jù)傳輸大小的倍數(shù)。
5.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,繼續(xù)進(jìn)行所述預(yù)讀取,要高速緩存的數(shù)據(jù)量等于由主機(jī)指定的最常用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小中最大的數(shù)據(jù)傳輸大小的倍數(shù)。
6.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,根據(jù)命令的類型來判斷每個(gè)命令是用于實(shí)時(shí)處理的命令還是用于非實(shí)時(shí)處理的命令。
7.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,在高速緩存中設(shè)置容量等于由主機(jī)指定的最常用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小的倍數(shù)的區(qū)域用于實(shí)時(shí)處理,并且所述區(qū)域能夠完全用于最大限度地執(zhí)行預(yù)讀取。
8.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,在高速緩存中設(shè)置容量等于在特定頻率以上的頻率由主機(jī)指定用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小中最大的數(shù)據(jù)傳輸大小的倍數(shù)的區(qū)域用于實(shí)時(shí)處理,并且所述區(qū)域能夠完全用于最大限度地執(zhí)行預(yù)讀取。
9.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,如果不存在在特定頻率以上的頻率由主機(jī)指定用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小,則在高速緩存中設(shè)置容量等于由主機(jī)指定用于實(shí)時(shí)處理的所有數(shù)據(jù)傳輸大小中最大的數(shù)據(jù)傳輸大小的倍數(shù)的區(qū)域用于實(shí)時(shí)處理,并且所述區(qū)域能夠完全用于最大限度地執(zhí)行預(yù)讀取。
10.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,在高速緩存中設(shè)置容量等于由主機(jī)指定的最常用于實(shí)時(shí)處理的數(shù)據(jù)傳輸大小中最大的數(shù)據(jù)傳輸大小的倍數(shù)的區(qū)域用于實(shí)時(shí)處理,并且所述區(qū)域能夠完全用于最大限度地執(zhí)行預(yù)讀取。
11.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,如果不希望由于預(yù)讀取用于實(shí)時(shí)處理的數(shù)據(jù)而延遲處理所述用于非實(shí)時(shí)處理的命令,則可以設(shè)置所述命令以便禁止延遲處理所述命令。
12.如權(quán)利要求1所述的磁盤驅(qū)動(dòng)器,其中,當(dāng)延遲處理所述用于非實(shí)時(shí)處理的命令以繼續(xù)進(jìn)行用于實(shí)時(shí)處理的數(shù)據(jù)的預(yù)讀取時(shí),最大程度地繼續(xù)進(jìn)行所述預(yù)讀取,直到預(yù)期發(fā)出下一個(gè)用于實(shí)時(shí)處理的命令的時(shí)間戳。
13.如權(quán)利要求12所述的磁盤驅(qū)動(dòng)器,其中,準(zhǔn)備運(yùn)行記錄來記錄用于實(shí)時(shí)處理的命令的發(fā)出,并且基于所述運(yùn)行記錄來確定預(yù)期發(fā)出下一個(gè)用于實(shí)時(shí)處理的命令的時(shí)間戳。
14.如權(quán)利要求12所述的磁盤驅(qū)動(dòng)器,其中,從主機(jī)接收與用于實(shí)時(shí)處理的命令的發(fā)出間隔有關(guān)的信息,并且基于接收到的信息來確定預(yù)期發(fā)出下一個(gè)用于實(shí)時(shí)處理的命令的時(shí)間戳。
全文摘要
當(dāng)實(shí)時(shí)性能關(guān)鍵型處理與數(shù)據(jù)完整性關(guān)鍵型處理并行執(zhí)行時(shí),通過提高順序存取為主的實(shí)時(shí)處理的數(shù)據(jù)傳輸效率來改善實(shí)時(shí)性能。在進(jìn)行用于實(shí)時(shí)處理命令的預(yù)讀取時(shí)如果接收到非實(shí)時(shí)處理命令,則直到高速緩存了特定量的數(shù)據(jù)時(shí)才可始對(duì)非實(shí)時(shí)處理命令的處理。另外,為了防止實(shí)時(shí)處理的周期性干擾,當(dāng)延遲處理非實(shí)時(shí)處理命令時(shí),最大程度地繼續(xù)進(jìn)行預(yù)讀取,直到預(yù)期發(fā)出下一個(gè)實(shí)時(shí)處理命令的時(shí)間戳。
文檔編號(hào)G11B20/10GK1722076SQ200510081998
公開日2006年1月18日 申請(qǐng)日期2005年7月15日 優(yōu)先權(quán)日2004年7月15日
發(fā)明者平塚幸惠, 西川學(xué) 申請(qǐng)人:日立環(huán)球儲(chǔ)存科技荷蘭有限公司