專利名稱:用于高速緩存的磁盤裝置和控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于從硬盤向高速緩存有效地傳輸數(shù)據(jù)、提高高速緩存的命中率、縮短命令執(zhí)行時(shí)間和提高數(shù)據(jù)傳輸速率的高速緩存控制。
背景技術(shù):
在硬盤中,通過提供高速緩存,然后將數(shù)據(jù)從硬盤傳輸?shù)礁咚倬彺?,并且管理所述?shù)據(jù),使得數(shù)據(jù)能夠直接從高速緩存?zhèn)鬏數(shù)街鳈C(jī)中,從而提高數(shù)據(jù)傳輸?shù)街鳈C(jī)的效率。一個(gè)高速緩存區(qū)域進(jìn)一步分為幾個(gè)區(qū)域,并且要進(jìn)行不同類型處理的數(shù)據(jù)或者不同類型的數(shù)據(jù)能夠分類寫入每個(gè)區(qū)域。這提高了高速緩存的命中率,并增加了增強(qiáng)數(shù)據(jù)傳輸效率。
例如,存在幾種通過選取隨機(jī)、順序或其他存取模式,并為每個(gè)模式分配高速緩存區(qū)域來提高命中率的方案。在例如專利文獻(xiàn)1、2、3中描述了這些高速緩存控制方案。還存在將數(shù)據(jù)分配到兩個(gè)高速緩存區(qū)域的方案,這兩個(gè)區(qū)域通過根據(jù)與數(shù)據(jù)存取狀況相關(guān)的統(tǒng)計(jì)處理結(jié)果劃分而得到。在專利文獻(xiàn)4中描述了這種高速緩存控制方案。在其他方案中,為例如每個(gè)程序或線程設(shè)置和管理高速緩存區(qū)域,在例如專利文獻(xiàn)5、6中描述了這些高速緩存控制方案。
專利文獻(xiàn)1日本專利公報(bào),特開平7-105095;專利文獻(xiàn)2日本專利公報(bào),特開平10-301847;專利文獻(xiàn)3日本專利公報(bào),特開平10-254778;專利文獻(xiàn)4日本專利公報(bào),特開平5-189316;專利文獻(xiàn)5日本專利公報(bào),2001-101076;
專利文獻(xiàn)6日本專利公報(bào),2000-56993;發(fā)明內(nèi)容為了提高高速緩存的命中率,需要將最可能命中的數(shù)據(jù)有效地讀取到高速緩存中并優(yōu)先留在那。專利文獻(xiàn)1、2、3描述的技術(shù)存在這樣的問題盡管根據(jù)由控制程序選取的順序、隨機(jī)或其他存取模式分配并管理高速緩存區(qū)域,但在能夠有效地管理高速緩存數(shù)據(jù)之前,必須選取明確的存取模式。對于專利文獻(xiàn)4描述的技術(shù),存在的問題是,只能通過使用對特定數(shù)據(jù)集中存取的存取模式才能獲得效果。專利文獻(xiàn)5、6描述的技術(shù)存在這樣的問題盡管能為每個(gè)程序或線程管理高速緩存區(qū)域,并從而提高執(zhí)行多個(gè)應(yīng)用程序的整個(gè)系統(tǒng)的處理效率,但由于例如成本等原因,該系統(tǒng)的特殊規(guī)范不允許在磁盤之外提供新的高速緩存和/或其控制裝置。由于這些原因,即使在單獨(dú)的磁盤裝置中,也必須緊記進(jìn)程或線程的概念來實(shí)現(xiàn)更高效的控制。
鑒于以上問題,本發(fā)明的第一個(gè)目的是,對于在數(shù)據(jù)處理策略上各不相同的應(yīng)用程序的處理特性,通過為這些應(yīng)用程序中每一個(gè)程序的每種類型的命令提供獨(dú)立的高速緩存區(qū)域并管理數(shù)據(jù),實(shí)現(xiàn)最佳化的高速緩存控制。這里數(shù)據(jù)處理策略的不同是指在例如實(shí)時(shí)處理和非實(shí)時(shí)處理之間的類型的不同。
本發(fā)明的第二個(gè)目的是,為了適應(yīng)在命令發(fā)送狀況中時(shí)間不定的變化,通過釋放之前分配給特定命令類型的高速緩存區(qū)域,然后將該高速緩存區(qū)域與之前分配給另一種命令類型的高速緩存區(qū)域合并,從而保證更有效的使用高速緩存區(qū)域。
本發(fā)明的第三個(gè)目的是,利用對每種類型命令的可存取性,并且在分配給特定命令類型的高速緩存區(qū)域上進(jìn)行預(yù)讀取操作,從而提高高速緩存的命中率,并提高磁盤裝置的數(shù)據(jù)傳輸速率。
為了解決上述問題,本發(fā)明允許為在數(shù)據(jù)處理策略上各不相同的應(yīng)用程序的每種類型的命令設(shè)置一個(gè)高速緩存區(qū)域。更具體而言,根據(jù)本發(fā)明的磁盤裝置包括磁盤;用于暫時(shí)保存從磁盤讀取的數(shù)據(jù)和從主機(jī)傳輸?shù)臄?shù)據(jù)的高速緩沖存儲器;用于控制高速緩沖存儲器和主機(jī)之間以及高速緩沖存儲器和磁盤之間的數(shù)據(jù)傳輸?shù)目刂破?。在高速緩沖存儲器中,磁盤裝置為在數(shù)據(jù)處理策略上各不相同的應(yīng)用程序的每個(gè)命令類型設(shè)置一個(gè)獨(dú)立的高速緩存區(qū)域,并且包括一個(gè)高速緩存數(shù)據(jù)管理表,用于為每個(gè)高速緩存區(qū)域管理寫入高速緩存區(qū)域的數(shù)據(jù)。
而且根據(jù)每個(gè)命令類型的最近的命令接收時(shí)間經(jīng)過的時(shí)間或根據(jù)來自主機(jī)的指令,釋放之前分配給每個(gè)命令類型的高速緩存區(qū)域,然后將該高速緩存區(qū)域與分配給另一命令類型的高速緩存區(qū)域相合并。另外,可執(zhí)行對每個(gè)命令類型的獨(dú)立的預(yù)讀取方法的選擇,以實(shí)現(xiàn)利用對每個(gè)命令類型的可存取性的有效的預(yù)讀取。
根據(jù)本發(fā)明,通過為在數(shù)據(jù)處理策略上各不相同的應(yīng)用程序的每種類型的命令設(shè)置一個(gè)高速緩存區(qū)域,并進(jìn)一步控制對每個(gè)命令類型的預(yù)讀取的方式,可以提高高速緩存命中率,并提高數(shù)據(jù)傳輸速率。因而,例如,當(dāng)在個(gè)人計(jì)算機(jī)(PC)上同時(shí)執(zhí)行用于例如動態(tài)圖像再現(xiàn)目的的音頻/視頻(AV)應(yīng)用程序以及用于例如文件目的的PC應(yīng)用程序時(shí),能夠?qū)崿F(xiàn)高效的數(shù)據(jù)傳輸。
圖1是顯示根據(jù)本發(fā)明的磁盤裝置的結(jié)構(gòu)實(shí)例的示意圖;圖2是顯示從主機(jī)發(fā)出的命令的結(jié)構(gòu)實(shí)例的示意圖;圖3是顯示高速緩存數(shù)據(jù)管理表的結(jié)構(gòu)實(shí)例的示意圖;圖4是顯示分割高速緩存區(qū)域的例子的示意圖;圖5是顯示高速緩存區(qū)域管理表的結(jié)構(gòu)實(shí)例的示意圖;圖6a是用于根據(jù)命令的類型將高速緩存區(qū)域分成兩個(gè)區(qū)域的高速緩存控制方案的流程圖;圖6b是顯示上述用于根據(jù)命令的類型將高速緩存區(qū)域分成兩個(gè)區(qū)域的高速緩存控制方案的一部分的流程圖;圖6c是顯示上述用于根據(jù)命令的類型將高速緩存區(qū)域分成兩個(gè)區(qū)域的高速緩存控制方案的另一部分的流程圖;圖6d是顯示上述用于根據(jù)命令的類型將高速緩存區(qū)域分成兩個(gè)區(qū)域的高速緩存控制方案的再一部分的流程圖;圖7是顯示分割高速緩存區(qū)域的另一個(gè)例子的示意圖;圖8是顯示分割高速緩存區(qū)域的又一個(gè)例子的示意圖;圖9是顯示用于裝置操作設(shè)置的ATA命令的例子的示意圖;圖10是顯示命令發(fā)送間隔注冊表的結(jié)構(gòu)實(shí)例的示意圖;圖11是顯示高速緩存狀況管理表的結(jié)構(gòu)實(shí)例的示意圖;圖12是在接收到最近的命令之后的一定時(shí)間內(nèi),原始高速緩存區(qū)域分割成的兩個(gè)區(qū)域之一將被合并到另一個(gè)高速緩存區(qū)域的處理的流程圖;圖13是通過從主機(jī)發(fā)送指令將根據(jù)命令類型由原始高速緩存區(qū)域分割成的兩個(gè)區(qū)域合并成一個(gè)區(qū)域的處理的流程圖;圖14是用于對AV命令類型和PC命令類型選擇獨(dú)立的預(yù)讀取方案的控制流程圖。
具體實(shí)施例方式
下面參照附圖來描述本發(fā)明的實(shí)施例。使用作為典型的命令類型的AV命令和PC命令來描述這些實(shí)施例,AV命令主要用在音頻/視頻處理應(yīng)用程序中,PC命令用在文件處理應(yīng)用程序和程序開發(fā)應(yīng)用程序中。存取傾向在這兩種類型的命令之間是不同的對AV命令的存取主要傾向于順序存取,而對PC命令的存取傾向于非均勻存取。
圖1示出了采用本發(fā)明的磁盤裝置的一個(gè)例子。該磁盤裝置包括其中安裝有預(yù)讀取控制程序的程序ROM 101;用于存儲高速緩存內(nèi)部數(shù)據(jù)的管理表和高速緩存區(qū)域數(shù)據(jù)的管理表的RAM 102;用于管理和設(shè)置磁盤裝置的內(nèi)部日歷的定時(shí)器103;其中內(nèi)建有上述ROM101,RAM 102和定時(shí)器103并用于將存儲在ROM中的控制程序讀入和執(zhí)行的控制處理器(CPU)104;用于暫時(shí)寫入讀請求數(shù)據(jù)/寫請求數(shù)據(jù)的高速緩沖存儲器105;控制在主機(jī)和高速緩沖存儲器105之間以及在高速緩沖存儲器105和磁盤之間的數(shù)據(jù)傳輸?shù)挠脖P控制器(HDC)106;執(zhí)行用于在讀/寫數(shù)據(jù)時(shí)將裝置的讀/寫磁頭移至磁盤114上特定位置的控制的伺服控制器107;用于根據(jù)從伺服控制器發(fā)出的指令移動磁頭的音圈馬達(dá)(VCM)108;用于控制磁盤旋轉(zhuǎn)的馬達(dá)驅(qū)動器109;用于從磁頭讀入的磁信號中只選擇特定磁頭的信號的選擇器110;用于將從選擇器110發(fā)送的模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù)或?qū)腍DC 106發(fā)送的數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成模擬數(shù)據(jù)的信號處理器111;打開/關(guān)閉讀門并將從信號處理器111發(fā)送的讀數(shù)據(jù)傳輸?shù)礁咚倬彌_存儲器105,或者打開/關(guān)閉寫門并將從高速緩沖存儲器105傳輸?shù)膶憯?shù)據(jù)傳輸?shù)叫盘柼幚砥?11的磁盤格式器112;以及用于與主機(jī)交換命令和數(shù)據(jù)的接口控制器113。
圖2示出了從主機(jī)發(fā)出的命令的結(jié)構(gòu)實(shí)例。該命令包括表明命令類型的命令代碼21、讀/寫數(shù)據(jù)的邏輯塊地址(LBA)22、表明主機(jī)請求的數(shù)據(jù)大小的主機(jī)請求數(shù)據(jù)傳輸大小23。命令代碼21允許磁盤裝置區(qū)分AV命令與PC命令。例如,在ATA/ATAPI 7(草案)中,命令代碼對于“READ DMA EXT”PC命令是25h,或者對于“READSTREAM DMA EXT”AV命令是2Ah。
圖3示出了高速緩存數(shù)據(jù)管理表的結(jié)構(gòu)實(shí)例。高速緩存數(shù)據(jù)管理表包括寫入到高速緩沖存儲器105的數(shù)據(jù)的開始LBA 31、高速緩沖存儲器的寫入空間的開始地址32、數(shù)據(jù)大小33。由于獨(dú)立數(shù)據(jù)被寫入到多個(gè)分割的高速緩存區(qū)域的每一個(gè)中,所以高速緩存數(shù)據(jù)管理表也被設(shè)置用于每一個(gè)高速緩存區(qū)域。
圖4示出了將高速緩存區(qū)域分為用于AV命令的區(qū)域41和用于PC命令的區(qū)域42的例子。用箭頭指示數(shù)據(jù)寫入這些區(qū)域的方向。用于AV命令的區(qū)域的開始地址是0,結(jié)束地址是(最大地址+1)/2-1。用于PC命令的區(qū)域的開始地址是(最大地址+1)/2,結(jié)束地址是最大地址。在這兩個(gè)高速緩存區(qū)域中,在結(jié)束地址執(zhí)行返轉(zhuǎn)處理。返轉(zhuǎn)處理可以通過在HDC 106的寄存器中設(shè)置開始地址和結(jié)束地址來建立。
圖5示出了高速緩存區(qū)域管理表的結(jié)構(gòu)實(shí)例。高速緩存區(qū)域管理表包括區(qū)域類型51、區(qū)域的開始地址52、結(jié)束地址53、區(qū)域的大小54、以及指示是否需要檢查與除AT或PC之外的命令類型相關(guān)的區(qū)域的高速緩存數(shù)據(jù)管理表的第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記55。第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記55標(biāo)識在高速緩存區(qū)域剛分割之后,如果用于每個(gè)命令類型的數(shù)據(jù)沒有被正確地發(fā)送到分配給特定命令類型的高速緩存區(qū)域,那么是否需要更新與除AT或PC之外的命令類型相關(guān)的區(qū)域的高速緩存數(shù)據(jù)管理表。更具體而言,當(dāng)數(shù)據(jù)要寫入高速緩沖存儲器105時(shí),如果第三區(qū)域數(shù)據(jù)管理表需要更新,則設(shè)為1,如果第三區(qū)域數(shù)據(jù)管理表不需要更新,則設(shè)為0。換言之,在剛建立一個(gè)新的高速緩存區(qū)域之后,標(biāo)記被設(shè)為具有1值,當(dāng)在該新的高速緩存區(qū)域執(zhí)行返轉(zhuǎn)處理兩次時(shí),標(biāo)記被設(shè)為具有0值。
圖6a到圖6d示出了在高速緩沖存儲器105的區(qū)域要分成兩個(gè)區(qū)域(一個(gè)用于AV命令,一個(gè)用于PC命令)的方案中高速緩存控制的流程。
在步驟601接收命令之后,在步驟602本發(fā)明的磁盤裝置通過命令代碼21識別命令類型。在步驟603,該裝置檢查數(shù)據(jù)是否已經(jīng)寄存在高速緩存區(qū)域管理表中。如果沒有數(shù)據(jù)寄存,則在步驟604,裝置在高速緩存區(qū)域管理表中將特定命令類型登記為區(qū)域類型51,將地址0作為開始地址52,并將最大地址53作為結(jié)束地址。接下來,在步驟605,裝置在HDC的分段管理寄存器中將地址0設(shè)為開始地址,將最大地址設(shè)為結(jié)束地址,并將地址0設(shè)為當(dāng)前地址。此后,在步驟606,裝置將該高速緩存區(qū)域的第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記55設(shè)為0。
回到步驟603,如果數(shù)據(jù)已經(jīng)登記在高速緩存區(qū)域管理表中,那么在步驟607,裝置檢查在高速緩存區(qū)域管理表中是否存在分配給該命令類型的高速緩存區(qū)域。如果在高速緩存區(qū)域管理表中不存在分配給該命令類型的高速緩存區(qū)域,那么在步驟608,進(jìn)一步檢查現(xiàn)有高速緩存區(qū)域的當(dāng)前地址是否超過了最大地址/2。圖7示出了現(xiàn)有高速緩存區(qū)域的當(dāng)前地址超過最大地址/2的高速緩存分割狀態(tài)。下面參考圖7描述現(xiàn)有高速緩存區(qū)域的當(dāng)前地址超過最大地址/2的高速緩存分割處理。
如果現(xiàn)有高速緩存區(qū)域的當(dāng)前地址71超過最大地址/2,則在步驟609,在高速緩存區(qū)域管理表中將命令類型登記為區(qū)域類型51,將地址0(72)作為開始地址,將(最大地址+1)/2-1(73)作為結(jié)束地址53。接下來,在步驟610,在HDC的分段管理寄存器中,將地址0(72)設(shè)為開始地址,將(最大地址+1)/2-1設(shè)為結(jié)束地址,并將地址0(72)設(shè)為當(dāng)前地址。在步驟611,在該高速緩存管理表中將(最大地址+1)/2(74)重新登記為獨(dú)立于特定命令類型的命令類型的高速緩存區(qū)域的開始地址52。在步驟612,在HDC的分段管理寄存器中將上述開始地址52重新設(shè)為(最大地址+1)/2(74)。在分割之后,從地址0(72)到地址(最大地址+1)/2-1(73)的區(qū)域成為用于新設(shè)置的命令類型的高速緩存區(qū)域(75)。同樣,從(最大地址+1)/2(74)到最大地址(76)的區(qū)域成為用于在進(jìn)行分割之前已有的命令類型的高速緩存區(qū)域(77)。
接下來,在步驟613,檢查新設(shè)置的高速緩存區(qū)域的內(nèi)部寫入數(shù)據(jù)是否已經(jīng)寫在磁盤上。如果沒有這種數(shù)據(jù)寫在磁盤上,那么在步驟614,將高速緩存區(qū)域中的所有寫入數(shù)據(jù)都寫到磁盤上。在步驟615,從用于該命令類型的高速緩存區(qū)域的當(dāng)前地址輸入數(shù)據(jù)。在步驟616,輸入數(shù)據(jù)的管理信息被登記到用于該命令類型的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。在步驟617,在第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記中設(shè)置1。接下來,在步驟618,當(dāng)前數(shù)據(jù)更新狀況也被結(jié)合到新設(shè)置的高速緩存區(qū)域之外的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。
回到步驟613,如果新設(shè)置的高速緩存區(qū)域的內(nèi)部寫入數(shù)據(jù)已經(jīng)寫到磁盤上,那么在步驟615,從用于該命令類型的高速緩存區(qū)域的當(dāng)前地址輸入數(shù)據(jù)。在步驟616,輸入數(shù)據(jù)的管理信息被登記到用于該命令類型的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。在步驟617,在第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記中設(shè)置1。接下來,在步驟618,當(dāng)前數(shù)據(jù)更新狀況也被結(jié)合到新設(shè)置的高速緩存區(qū)域之外的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。
圖8示出了現(xiàn)有高速緩存區(qū)域的當(dāng)前地址未超過最大地址/2的高速緩存分割狀態(tài)。下面參考圖8描述現(xiàn)有高速緩存區(qū)域的當(dāng)前地址未超過最大地址/2的高速緩存分割處理。
回到步驟608,如果現(xiàn)有高速緩存區(qū)域的當(dāng)前地址(81)未超過最大地址/2,那么在步驟619,在高速緩存區(qū)域管理表中將命令類型登記為區(qū)域類型51,將(最大地址+1)/2(82)作為開始地址,將最大地址(83)作為結(jié)束地址53。接下來,在步驟620,在HDC的分段管理寄存器中,將(最大地址+1)/2(82)設(shè)為開始地址,將最大地址(83)設(shè)為結(jié)束地址,并將(最大地址+1)/2(82)設(shè)為當(dāng)前地址。在步驟621,在該高速緩存管理表中將(最大地址+1)/2-1(84)重新登記為獨(dú)立于特定命令類型的命令類型的高速緩存區(qū)域的結(jié)束地址53。在步驟622,在HDC的分段管理寄存器中將(最大地址+1)/2-1(84)重新設(shè)為上述結(jié)束地址53。在分割之后,從地址0(85)到地址(最大地址+1)/2-1(84)的區(qū)域成為用于在進(jìn)行分割之前已有的命令類型的高速緩存區(qū)域(86)。同樣,從(最大地址+1)/2(82)到最大地址(83)的區(qū)域成為用于新設(shè)置的命令類型的高速緩存區(qū)域(87)。
接下來,在步驟613,檢查新設(shè)置的高速緩存區(qū)域的內(nèi)部寫入數(shù)據(jù)是否已經(jīng)寫在磁盤上。如果沒有這種數(shù)據(jù)寫在磁盤上,那么在步驟614,將高速緩存區(qū)域中的所有寫入數(shù)據(jù)都寫到磁盤上。在步驟615,從用于該命令類型的高速緩存區(qū)域的當(dāng)前地址輸入數(shù)據(jù)。在步驟616,輸入數(shù)據(jù)的管理信息被登記到用于該命令類型的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。在步驟617,在第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記中設(shè)置1。接下來,在步驟618,當(dāng)前數(shù)據(jù)更新狀況也被結(jié)合到新設(shè)置的高速緩存區(qū)域之外的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。
回到步驟613,如果新設(shè)置的高速緩存區(qū)域的內(nèi)部寫入數(shù)據(jù)已經(jīng)寫到磁盤上,那么在步驟615,從用于該命令類型的高速緩存區(qū)域的當(dāng)前地址輸入數(shù)據(jù)。在步驟616,輸入數(shù)據(jù)的管理信息被登記到用于該命令類型的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。在步驟617,在第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記中設(shè)置1。接下來,在步驟618,當(dāng)前數(shù)據(jù)更新狀況也被結(jié)合到新設(shè)置的高速緩存區(qū)域之外的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。
回到步驟607,如果在高速緩存區(qū)域管理表中存在分配給該命令類型的高速緩存區(qū)域,那么在步驟623,從用于該命令類型的高速緩存區(qū)域的當(dāng)前地址輸入數(shù)據(jù)。在步驟624,輸入數(shù)據(jù)的管理信息被登記到用于該命令類型的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中。接下來,在步驟625,檢查在用于該高速緩存區(qū)域的第三區(qū)域數(shù)據(jù)管理表檢查標(biāo)記中是否設(shè)置為1。如果在該檢查標(biāo)記中設(shè)置為1,那么當(dāng)前數(shù)據(jù)更新狀況也被結(jié)合到該特定高速緩存區(qū)域之外的高速緩存區(qū)域的高速緩存數(shù)據(jù)管理表中(步驟626)?;氐讲襟E625,如果在檢查標(biāo)記中沒有設(shè)置1,那么終止處理。
圖9示出了用于該裝置的操作設(shè)置命令的例子。表示裝置設(shè)置命令類型的代碼被指定為“命令代碼”91?!疤卣鳌?2表示操作設(shè)置的細(xì)節(jié)。盡管在ATA命令的標(biāo)準(zhǔn)規(guī)范中不存在用于高速緩存區(qū)域分割的代碼,但可以新設(shè)置這樣的代碼??梢栽凇疤卣鳌敝兄付ǜ咚倬彺鎱^(qū)域分割代碼,并通過分別使用“扇區(qū)數(shù)”93的比特[7∶4]94及其比特[3∶0]95來設(shè)置PC命令區(qū)域和AV命令區(qū)域之間的比例。例如,如圖9所示,可以通過在兩個(gè)比特[7∶4]94和[3∶0]95中輸入0001而將這兩個(gè)命令區(qū)域之間的比例設(shè)置為1∶1。
圖9所示的這種命令的使用還使得在從主機(jī)指定AV命令區(qū)域和PC命令區(qū)域的比例的基礎(chǔ)上分割高速緩存區(qū)域成為可能。盡管圖6a、6b、6c示出了將高速緩存區(qū)域以1∶1的比例分割成PC命令區(qū)域和AV命令區(qū)域的處理流程,但該分割比例也可以是通過使用如圖9所示的命令來從主機(jī)指定的比例。
盡管如上所述,可以從主機(jī)指定用于每個(gè)命令類型的高速緩存區(qū)域之間的比例,但使用每個(gè)命令類型的命令發(fā)送間隔也允許由磁盤計(jì)算和設(shè)置適當(dāng)?shù)谋壤?。不過在這種情況下,高速緩存區(qū)域不是在接收到新命令類型之后立即分割。而是,在接收到新命令類型之后,暫時(shí)執(zhí)行常規(guī)的高速緩存控制。例如,測量新命令類型的命令發(fā)送間隔,然后在執(zhí)行分割處理之前在該數(shù)值基礎(chǔ)上確定適當(dāng)?shù)姆指畋壤?br>
圖10示出了命令發(fā)送間隔注冊表的結(jié)構(gòu)實(shí)例。命令發(fā)送間隔注冊表包括命令類型1001、最近五個(gè)命令的發(fā)送間隔1002、平均發(fā)送間隔1003。在命令發(fā)送間隔注冊表中,對每個(gè)命令類型注冊最近幾個(gè)命令的發(fā)送間隔。根據(jù)注冊的發(fā)送間隔,進(jìn)一步注冊與平均發(fā)送間隔相關(guān)的計(jì)算結(jié)果。例如在圖10中,如果得到PC命令的平均發(fā)送間隔和AV命令的平均發(fā)送間隔分別是40ms和200ms,那么PC命令區(qū)域和AV命令區(qū)域之間的比例可以設(shè)置為5∶1。根據(jù)該比例來執(zhí)行分割也是可能的。
下面描述如果原始高速緩存區(qū)域分割成的兩個(gè)區(qū)域之一在一定的時(shí)間內(nèi)沒有使用(如果在一定的時(shí)間內(nèi)沒有發(fā)送屬于被分配了高速緩存區(qū)域的命令類型的命令),則將該特定區(qū)域合并到另一個(gè)高速緩存區(qū)域的例子。
圖11示出了高速緩存狀況管理表的結(jié)構(gòu)實(shí)例。高速緩存狀況管理表包括用于每個(gè)命令類型的命令類型1101、用于每個(gè)區(qū)域類型的最近命令接收時(shí)間1102、寫數(shù)據(jù)傳輸完成檢查標(biāo)記1103、最近讀命令終止檢查標(biāo)記1104、用于每個(gè)高速緩存區(qū)域的高速緩存區(qū)域使用持續(xù)時(shí)間(ms)1105。對于每個(gè)區(qū)域類型(命令類型),將最近的命令的接收時(shí)間注冊為最近命令接收時(shí)間1102。該時(shí)間根據(jù)CPU的內(nèi)嵌定時(shí)器103來獲得。寫數(shù)據(jù)傳輸完成檢查標(biāo)記1103標(biāo)識設(shè)置用于每個(gè)命令類型的高速緩存區(qū)域內(nèi)的寫數(shù)據(jù)是否已經(jīng)傳輸?shù)酱疟P。如果數(shù)據(jù)已經(jīng)傳輸,則將1輸入到檢查標(biāo)記1103。如果數(shù)據(jù)還沒有傳輸,則將0輸入到該檢查標(biāo)記。如果最近的讀命令已經(jīng)被處理完成,則在最近讀命令終止檢查標(biāo)記1104中設(shè)置1。如果最近的讀命令還沒有處理完成,則在該檢查標(biāo)記中設(shè)置0。
圖12示出在接收到最近的命令之后,在一定的時(shí)間內(nèi),原始高速緩存區(qū)域分割成的兩個(gè)區(qū)域之一將被合并到另一個(gè)高速緩存區(qū)域的處理流程。圖12所示的處理由安裝在ROM 101中的固件以固定的時(shí)間間隔執(zhí)行。
在步驟1201,檢查是否多個(gè)區(qū)域注冊在高速緩存區(qū)域管理表中,如果沒有注冊多個(gè)區(qū)域,則處理終止。如果多個(gè)區(qū)域注冊在高速緩存區(qū)域管理表中,那么在步驟1202,檢查是否所有注冊的數(shù)據(jù)都已檢查過。如果并非所有注冊的數(shù)據(jù)都已檢查過,那么在步驟1203,選擇一個(gè)未檢查的注冊的高速緩存區(qū)域。接下來,在步驟1204,使用高速緩存狀況管理表來檢查是否在該高速緩存區(qū)域中的寫數(shù)據(jù)已傳輸?shù)酱疟P上。如果既未傳輸在高速緩存區(qū)域中的寫數(shù)據(jù)(在步驟1204中為“否”),也并非已檢查了所有注冊的數(shù)據(jù)(在步驟1202中為“否”),則在步驟1203,選擇另一個(gè)未檢查的注冊的高速緩存區(qū)域。如果在高速緩存區(qū)域中的寫數(shù)據(jù)已經(jīng)傳輸(在步驟1204中為“是”),則在步驟1205,使用高速緩存狀況管理表來檢查該高速緩存區(qū)域類型的最近讀命令是否已經(jīng)處理完畢。如果既未處理完畢該高速緩存區(qū)域類型的最近讀命令(在步驟1205中為“否”),也并非已檢查了所有注冊的數(shù)據(jù)(在步驟1202中為“否”),則在步驟1203,選擇另一個(gè)未檢查的注冊的高速緩存區(qū)域。
如果該高速緩存區(qū)域類型的最近讀命令已經(jīng)處理完畢(在步驟1205中為“是”),則在步驟1206,根據(jù)CPU 104的內(nèi)嵌定時(shí)器103來獲得當(dāng)前時(shí)間。接下來,在步驟1207,從高速緩存狀況管理表中的該區(qū)域類型的最近命令接收時(shí)間1102,以及從當(dāng)前時(shí)間,計(jì)算自接收最近的命令以來經(jīng)過的時(shí)間。接下來,在步驟1208,檢查經(jīng)過的時(shí)間是否超過了高速緩存狀況管理表中的高速緩存區(qū)域使用持續(xù)時(shí)間1105。如果經(jīng)過的時(shí)間沒有超過高速緩存區(qū)域使用持續(xù)時(shí)間1105,則返回步驟1202檢查是否所有注冊的數(shù)據(jù)都已檢查過。如果并非所有注冊的數(shù)據(jù)都已檢查過,那么在步驟1203,選擇另一個(gè)未檢查的注冊的高速緩存區(qū)域。
如果經(jīng)過的時(shí)間超過了高速緩存狀況管理表中的高速緩存區(qū)域使用持續(xù)時(shí)間1105,那么在步驟1209,在高速緩存區(qū)域管理表中檢查該高速緩存區(qū)域的開始地址52是否為0。如果該高速緩存區(qū)域的開始地址52是0,則在步驟1210,在高速緩存區(qū)域管理表中將另一個(gè)高速緩存區(qū)域(非預(yù)期的高速緩存區(qū)域)的開始地址52設(shè)置為0。如果該預(yù)期高速緩存區(qū)域的開始地址52不是0,則在步驟1211,在高速緩存區(qū)域管理表中將另一個(gè)高速緩存區(qū)域(非預(yù)期的高速緩存區(qū)域)的結(jié)束地址53設(shè)置為最大地址。接下來,在步驟1212,將分配給預(yù)期的高速緩存區(qū)域的HDC的開始地址寄存器、當(dāng)前地址寄存器和結(jié)束地址寄存器都清零。此后,在步驟1213,從高速緩存區(qū)域管理表中刪除與預(yù)期高速緩存區(qū)域相關(guān)的數(shù)據(jù),然后,在步驟1214,從高速緩存狀況管理表中刪除預(yù)期高速緩存區(qū)域的所有數(shù)據(jù)。
通過從主機(jī)發(fā)送指令,也可以釋放及合并之前分配給每個(gè)命令類型的高速緩存區(qū)域。更具體而言,可以使用如圖9所示的用于該裝置的這種操作設(shè)置命令來規(guī)定釋放與合并。例如,假定表示用于釋放及合并高速緩存區(qū)域的操作的類型的數(shù)據(jù)被設(shè)置在圖9的命令的“特征”92中,指示PC命令區(qū)域的比例的0001和指示AV命令區(qū)域的比例的0000分別被設(shè)置在比特[7∶4]94或比特[3∶0]95中。因而可以規(guī)定釋放之前分配給AV使用的區(qū)域并合并該區(qū)域僅供PC使用。
圖13示出通過從主機(jī)發(fā)送指令將根據(jù)命令類型而由原始高速緩存區(qū)域分割成的兩個(gè)區(qū)域合并成一個(gè)區(qū)域的處理流程。在步驟1301從主機(jī)接收到用于釋放/合并已分配的高速緩存區(qū)域的命令之后,在步驟1302,檢查要釋放的高速緩存區(qū)域中的寫數(shù)據(jù)是否已經(jīng)傳輸?shù)酱疟P。在確定寫數(shù)據(jù)從上述高速緩存區(qū)域傳輸?shù)酱疟P后,在步驟1303,使用高速緩存區(qū)域管理表檢查該高速緩存區(qū)域的開始地址52是否為0。如果該高速緩存區(qū)域的開始地址52為0,則在步驟1304,使用高速緩存區(qū)域管理表將另一個(gè)高速緩存區(qū)域(不被釋放的高速緩存區(qū)域)的開始地址52設(shè)置為0。如果該預(yù)期高速緩存區(qū)域的開始地址52不是0,則在步驟1305,通過使用高速緩存區(qū)域管理表將另一個(gè)高速緩存區(qū)域(不被釋放的高速緩存區(qū)域)的結(jié)束地址53設(shè)置為最大地址。接下來,在步驟1306,將分配給預(yù)期高速緩存區(qū)域的HDC的開始地址寄存器、當(dāng)前地址寄存器和結(jié)束地址寄存器都清零。此后,在步驟1307,從高速緩存區(qū)域管理表中刪除與預(yù)期高速緩存區(qū)域相關(guān)的數(shù)據(jù),然后,在步驟1308,從高速緩存狀況管理表中刪除預(yù)期高速緩存區(qū)域的所有數(shù)據(jù)。
以這種方式,本發(fā)明的磁盤裝置也允許通過從主機(jī)發(fā)出指令來分割與合并磁盤裝置內(nèi)的高速緩存區(qū)域。
圖14示出用于對AV命令類型和PC命令類型選擇獨(dú)立的預(yù)讀取方案的控制流程。在步驟1401識別讀取命令的類型,在步驟1402檢查主機(jī)請求的數(shù)據(jù)是否命中高速緩存。如果數(shù)據(jù)命中高速緩存,則處理終止。如果數(shù)據(jù)沒有命中高速緩存,則在步驟1403識別命令的類型。如果在步驟1404存在表示命令類型是AV的結(jié)果,則在步驟1405檢查是否存在AV高速緩存區(qū)域。如果不存在AV高速緩存區(qū)域,則在步驟1406設(shè)置AV高速緩存區(qū)域。接下來,在步驟1407預(yù)讀取在命令中主機(jī)請求的等于AV高速緩存區(qū)域的大小的數(shù)據(jù)。
回到步驟1405,如果存在AV高速緩存區(qū)域,那么在步驟1408檢查在AV高速緩存區(qū)域中的寫數(shù)據(jù)是否已經(jīng)寫到磁盤上。如果AV高速緩存區(qū)域中的寫數(shù)據(jù)已經(jīng)寫到磁盤上,則在步驟1409,使用高速緩存區(qū)域管理表檢查分配給AV的高速緩存區(qū)域的大小。接下來,在步驟1410,預(yù)讀取在命令中主機(jī)請求的等于AV高速緩存區(qū)域的大小的數(shù)據(jù)。
回到步驟1408,檢查在AV高速緩存區(qū)域中的寫數(shù)據(jù)是否已經(jīng)寫到磁盤上。如果寫數(shù)據(jù)還沒有寫,則在步驟1411,預(yù)讀取等于高速緩存區(qū)域大小的四分之一的數(shù)據(jù)或直到最接近當(dāng)前地址的未寫入的寫數(shù)據(jù)的開始地址的數(shù)據(jù)。
控制進(jìn)一步返回步驟1404,如果命令不是AV命令,則在步驟1412,如在常規(guī)技術(shù)中一樣,執(zhí)行使用最大空閑/可用時(shí)間的預(yù)讀取。
權(quán)利要求
1.一種磁盤裝置,包括磁盤;高速緩沖存儲器,用于暫時(shí)保存從所述磁盤讀取的數(shù)據(jù)和從主機(jī)傳輸?shù)臄?shù)據(jù);控制器,用于控制所述高速緩沖存儲器和所述主機(jī)之間以及所述高速緩沖存儲器和所述磁盤之間的數(shù)據(jù)傳輸;其中,所述磁盤裝置在所述高速緩沖存儲器中為在數(shù)據(jù)處理策略上各不相同的應(yīng)用程序的每個(gè)命令類型設(shè)置獨(dú)立的高速緩存區(qū)域,并且包括高速緩存數(shù)據(jù)管理表,用于為每一個(gè)高速緩存區(qū)域管理寫入高速緩存區(qū)域的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的磁盤裝置,其中,所述磁盤裝置為AV數(shù)據(jù)處理命令和PC應(yīng)用程序命令分別設(shè)置獨(dú)立的高速緩存區(qū)域。
3.根據(jù)權(quán)利要求1的磁盤裝置,其中,所述磁盤裝置從主機(jī)接收對用于各命令類型的高速緩存區(qū)域的比例的指令,并且根據(jù)所述比例,在所述高速緩沖存儲器中設(shè)置用于各種命令類型的高速緩存區(qū)域。
4.根據(jù)權(quán)利要求1的磁盤裝置,其中,所述磁盤裝置按照各種命令類型的命令發(fā)送頻率來確定要設(shè)置用于各命令類型的高速緩存區(qū)域的比例。
5.根據(jù)權(quán)利要求1的磁盤裝置,其中,所述磁盤裝置具有用于保存各種命令類型的最近命令接收時(shí)間和之前為各種命令類型設(shè)置的高速緩存使用持續(xù)時(shí)間的表,所述磁盤裝置釋放分配給自其最近命令接收時(shí)間以來經(jīng)過的時(shí)間已超過高速緩存區(qū)域使用持續(xù)時(shí)間的命令類型的高速緩存區(qū)域,并將該高速緩存區(qū)域合并到分配給其他命令類型中任一種的高速緩存區(qū)域。
6.根據(jù)權(quán)利要求1的磁盤裝置,其中,根據(jù)來自主機(jī)的指令,所述磁盤裝置釋放之前分配給特定命令類型的高速緩存區(qū)域,并將該高速緩存區(qū)域合并到分配給其他命令類型中任一種的高速緩存區(qū)域。
7.根據(jù)權(quán)利要求1的磁盤裝置,其中,預(yù)讀取方法根據(jù)命令類型而不同。
8.根據(jù)權(quán)利要求7的磁盤裝置,其中,預(yù)讀取方法在AV數(shù)據(jù)處理命令和PC應(yīng)用程序命令之間不同。
9.根據(jù)權(quán)利要求8的磁盤裝置,其中,所述磁盤裝置在使用AV數(shù)據(jù)處理命令的最大分配的全部高速緩存區(qū)域上進(jìn)行預(yù)讀取,并在使用PC應(yīng)用程序命令的最大可用的全部預(yù)讀取時(shí)間上進(jìn)行預(yù)讀取。
10.一種磁盤裝置中的高速緩存控制方法,所述磁盤裝置具有磁盤;高速緩沖存儲器,用于暫時(shí)保存從所述磁盤讀取的數(shù)據(jù)和從主機(jī)傳輸?shù)臄?shù)據(jù);控制器,用于控制所述高速緩沖存儲器和所述主機(jī)之間以及所述高速緩沖存儲器和所述磁盤之間的數(shù)據(jù)傳輸;所述控制器執(zhí)行以下步驟識別接收的命令的類型;檢查所述高速緩沖存儲器;作為所述檢查的結(jié)果,當(dāng)在所述高速緩沖存儲器中不存在分配給在所述識別步驟中識別的第一種類型的命令的高速緩存區(qū)域,并且在所述高速緩沖存儲器中存在分配給用于在數(shù)據(jù)處理策略方面不同于第一種類型命令的應(yīng)用程序的第二種類型命令的高速緩存區(qū)域時(shí),確定現(xiàn)有的高速緩存區(qū)域的當(dāng)前地址是否超過要求的地址;以及如果在所述確定步驟,當(dāng)前地址超過了要求的地址,則將從所述高速緩沖存儲器的地址0到要求的地址減1的區(qū)域設(shè)置為第一種類型命令的高速緩存區(qū)域,并將從所述要求的地址到最大地址的區(qū)域設(shè)置為第二種類型命令的高速緩存區(qū)域。
11.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,第一種類型的命令是用于AV數(shù)據(jù)處理的命令,第二種類型的命令是用于應(yīng)用程序的命令。
12.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,所述控制器從主機(jī)接收對高速緩存區(qū)域的分割比例的指令,并根據(jù)該指令確定所述要求的地址。
13.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,所述控制器收集第一種類型命令的發(fā)送間隔和第一種類型命令的發(fā)送間隔方面的信息,并根據(jù)該信息確定所述要求的地址。
14.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,所述控制器執(zhí)行以下步驟對所述命令類型中的每一種確定自最近命令接收時(shí)間以來經(jīng)過的時(shí)間是否已經(jīng)超過之前設(shè)置的高速緩存區(qū)域使用持續(xù)時(shí)間;以及當(dāng)存在自最近命令接收時(shí)間以來經(jīng)過的時(shí)間已經(jīng)超過所述高速緩存區(qū)域使用持續(xù)時(shí)間的命令類型時(shí),釋放分配給該命令類型的高速緩存區(qū)域,并將該高速緩存區(qū)域合并到分配給其他命令類型中任一種的高速緩存區(qū)域。
15.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,所述方法根據(jù)特定命令類型改變預(yù)讀取方法。
16.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,所述方法在AV數(shù)據(jù)處理命令和PC應(yīng)用程序命令之間改變預(yù)讀取方法。
17.根據(jù)權(quán)利要求10的高速緩存控制方法,其中,在使用AV數(shù)據(jù)處理命令的最大分配的全部高速緩存區(qū)域上執(zhí)行預(yù)讀取,并在使用PC應(yīng)用程序命令的最大可用的全部預(yù)讀取時(shí)間上執(zhí)行預(yù)讀取。
全文摘要
為了實(shí)現(xiàn)對應(yīng)用程序的處理特性最佳的高速緩存控制,從而提高數(shù)據(jù)傳輸效率,提供一種磁盤裝置,其具有磁盤;用于暫時(shí)保存從磁盤讀取的數(shù)據(jù)和從主機(jī)傳輸?shù)臄?shù)據(jù)的高速緩存;用于控制高速緩存和主機(jī)之間以及高速緩存和磁盤之間的數(shù)據(jù)傳輸?shù)目刂破鳎黄渲?,可以在高速緩存中為在?shù)據(jù)處理策略上各不相同的應(yīng)用程序的每個(gè)命令類型設(shè)置獨(dú)立的高速緩存區(qū)域,并且通過控制對每個(gè)命令類型的預(yù)讀取方式,可以實(shí)現(xiàn)利用在數(shù)據(jù)處理策略上各不相同的應(yīng)用程序的可存取性的有效的預(yù)讀取。
文檔編號G06F12/00GK1690985SQ200510067329
公開日2005年11月2日 申請日期2005年4月20日 優(yōu)先權(quán)日2004年4月20日
發(fā)明者平塚幸惠 申請人:日立環(huán)球儲存科技荷蘭有限公司