存儲單元132將屬性和動作以彼此關(guān)聯(lián)的方式進(jìn)行存儲。例如,該屬性被設(shè)定為與緩存信息存儲單元131中的屬性相同。也就是說,當(dāng)針對NAND存儲器104執(zhí)行數(shù)據(jù)讀取時,CPU 122使用緩存信息存儲單元131中相關(guān)聯(lián)的數(shù)據(jù)和屬性作為搜索關(guān)鍵字來搜索緩存屬性存儲單元132。在搜索之后,CPU 122執(zhí)行與緩存屬性存儲單元132中的屬性相關(guān)聯(lián)的動作。
[0036]S0C 112 包括 HDC 121、CPU 122 和 SRAM 123。
[0037]HDC 121包括NAND控制器142,并且根據(jù)來自CPU 122的命令,通過主機(jī)I/F 101控制HDC 121與主機(jī)之間的數(shù)據(jù)傳輸。此外,HDC 121根據(jù)來自CPU 122的命令,使用讀寫通道108控制針對磁記錄介質(zhì)107的數(shù)據(jù)寫入或讀取。另外,HDC 121使用第二信號處理單元105執(zhí)行緩沖器102的控制、數(shù)據(jù)的錯誤校正處理等。
[0038]閃存113存儲要被CPU 122執(zhí)行的程序等。閃存113例如存儲控制程序151。
[0039]SRAM 123包括命令歷史存儲單元141。根據(jù)實施例,命令歷史存儲單元141被存儲在SRAM 123中;但是,命令歷史存儲單元141可以不位于SRAM 123中,而是例如可以位于DRAM等中。
[0040]命令歷史存儲單元141存儲主機(jī)I/F 101所接收到的命令(例如,讀取請求或?qū)懭胝埱?的歷史、以及每個命令的訪問目標(biāo)位置(數(shù)據(jù)的起始位置)。根據(jù)實施例的命令歷史存儲單元141將從主機(jī)接收到的命令(例如,讀取請求或?qū)懭胝埱?、待訪問數(shù)據(jù)的起始位置(LBA)、被讀取或?qū)懭氲膲K數(shù)、以及接收命令的時間以彼此關(guān)聯(lián)的方式進(jìn)行存儲。
[0041]根據(jù)實施例,每當(dāng)主機(jī)I/F 101從主機(jī)接收到命令時,CPU 122都會針對命令歷史存儲單元141而登記與所接收到的命令相關(guān)的信息。由于命令歷史存儲單元141與接收到命令時的時點等相關(guān)聯(lián),因此,對于每個命令,可以判定命令是否為用于順序地讀取數(shù)據(jù)的請求。也就是說,在命令歷史存儲單元141中,存儲針對其做出讀取請求的數(shù)據(jù)的起始位置、以及指定讀取請求是否為順序讀取的信息。
[0042]CPU 122對存儲裝置100執(zhí)行整體控φ?」。例如,CPU 122通過驅(qū)動器1C 111執(zhí)行使主軸電動機(jī)110旋轉(zhuǎn)的控制。作為另一實例,CPU執(zhí)行存儲在閃存113中的控制程序151。
[0043]圖4例示出CPU 122執(zhí)行控制程序151時所產(chǎn)生的單元。如圖4所示,產(chǎn)生判定單元401、指定單元402、NAND存儲器指示單元403和磁盤指示單元404。
[0044]判定單元401基于存儲在命令歷史存儲單元141中的信息,判定是否在NAND存儲器104中存儲(緩存)在磁記錄介質(zhì)107中存儲的數(shù)據(jù)。用于判定是否存儲(緩存)數(shù)據(jù)的標(biāo)準(zhǔn)可以是任何標(biāo)準(zhǔn),而不管它是否為公知的標(biāo)準(zhǔn)。例如,此標(biāo)準(zhǔn)可以是針對同一數(shù)據(jù)是否存在預(yù)定數(shù)量或更多的讀取請求。
[0045]指定單元402針對待緩存的數(shù)據(jù)指定起始位置和塊。例如,當(dāng)緩存已經(jīng)在NAND存儲器104中受到順序讀取的數(shù)據(jù)時,指定單元402基于頭106為開始從磁記錄介質(zhì)107讀取做準(zhǔn)備期間的時間(例如,尋道和旋轉(zhuǎn)延遲所需的時間),在要被順序讀取的數(shù)據(jù)項當(dāng)中指定要從NAND存儲器104讀取的數(shù)據(jù)塊。另外,指定單元402指定要被執(zhí)行順序讀取的數(shù)據(jù)的起始位置作為待緩存數(shù)據(jù)的起始位置。
[0046]磁盤指示單元404指示HDC 121讀寫數(shù)據(jù)。例如,磁盤指示單元404指示HDC 121,以便讀取從指定單元402所指定的數(shù)據(jù)的起始位置開始的多個數(shù)據(jù)塊。
[0047]NAND存儲器指示單元403指示NAND控制器142讀寫數(shù)據(jù)。例如,NAND存儲器指示單元403指示NAND控制器142,以便將已根據(jù)來自磁盤指示單元404的指令使用HDC 121而讀取的數(shù)據(jù)寫入NAND存儲器104。此時,NAND存儲器指示單元403指示NAND控制器142,以便將與被寫入NAND存儲器104中的數(shù)據(jù)相關(guān)的信息登記在緩存信息存儲單元131中。
[0048]也就是說,根據(jù)實施例的CPU 122基于存儲在命令歷史存儲單元141中的信息,將存儲在磁記錄介質(zhì)107中的數(shù)據(jù)寫入NAND存儲器104中。此時,CPU 122將數(shù)據(jù)的讀取位置和指示是否為順序讀取的屬性以彼此關(guān)聯(lián)的方式登記在緩存信息存儲單元131中。
[0049]在此方式中,根據(jù)實施例,當(dāng)被執(zhí)行順序讀取的數(shù)據(jù)在NAND存儲器104中緩存時,可以僅緩存作為數(shù)據(jù)起始部分的一部分?jǐn)?shù)據(jù)項。另外,當(dāng)主機(jī)I/F 101從主機(jī)接收到讀取請求時,執(zhí)行下面的處理。
[0050]判定單元401根據(jù)主機(jī)I/F 101所接收到的讀取請求,判定是否將待讀取數(shù)據(jù)存儲在NAND存儲器104中。根據(jù)實施例的判定單元401通過參考緩存信息存儲單元131來判定是否將待讀取數(shù)據(jù)存儲在NAND存儲器104中。另外,判定單元401參考緩存信息存儲單元131來判定是否存在讀取請求可為順序讀取的高可能性。根據(jù)實施例,當(dāng)待讀取數(shù)據(jù)對應(yīng)于緩存信息存儲單元131中的“順序讀取”屬性時,判定存在順序讀取的高可能性。
[0051]當(dāng)判定存在順序讀取的高可能性時,指定單元402在磁記錄介質(zhì)107上指定數(shù)據(jù)起始位置(LBA),其中存儲在從NAND存儲器104讀取的數(shù)據(jù)之后的數(shù)據(jù)。
[0052]當(dāng)判定根據(jù)讀取請求而讀取的數(shù)據(jù)被存儲在NAND存儲器104中時,NAND存儲器指示單元403指示NAND控制器142,以便從NAND存儲器104讀取數(shù)據(jù)。
[0053]當(dāng)判定根據(jù)讀取請求而讀取的數(shù)據(jù)未被存儲在NAND存儲器104中時,磁盤指示單元404指示HDC 121,以便從磁記錄介質(zhì)107讀取數(shù)據(jù)。
[0054]此外,當(dāng)判定根據(jù)讀取請求而讀取的數(shù)據(jù)被存儲在NAND存儲器104中,并且存在順序讀取的高可能性時,磁盤指示單元404控制HDC 121和驅(qū)動器1C 111,以便從磁記錄介質(zhì)107讀取在從NAND存儲器104讀取的數(shù)據(jù)之后的數(shù)據(jù)。
[0055]相應(yīng)地,CPU 122執(zhí)行移動控制,以便頭106通過驅(qū)動器1C 111移到磁盤中這樣的位置:其中存儲在從NAND存儲器104讀取的數(shù)據(jù)之后的數(shù)據(jù),同時從NAND存儲器104讀取數(shù)據(jù)。在執(zhí)行移動控制之后,CPU 122通過HDC 121執(zhí)行從磁記錄介質(zhì)107讀取數(shù)據(jù)的讀取控制。根據(jù)實施例,針對其做出讀取請求的數(shù)據(jù)的讀取位置被存儲在緩存信息存儲單元131中,并且當(dāng)該讀取位置與緩存信息存儲單元131中的“順序讀取”相關(guān)聯(lián)時,執(zhí)行移動控制和讀取控制。
[0056]接下來,將描述在根據(jù)實施例的存儲裝置100的NAND存儲器104中緩存數(shù)據(jù)的處理。圖5是由根據(jù)實施例的存儲裝置100執(zhí)行的上述處理的流程圖。
[0057]首先,CPU 122的判定單元401分析存儲在命令歷史存儲單元141中的過去讀取請求(處理S501)。接著,判定單元401判定對應(yīng)于讀取請求的數(shù)據(jù)是否要被緩存在NAND存儲器104中(處理S502)。當(dāng)判定數(shù)據(jù)不要被緩存時(處理S502的結(jié)果為否),處理繼續(xù)到處理S508。
[0058]另一方面,當(dāng)判定數(shù)據(jù)要被緩存時(處理S502的結(jié)果為是),CPU 122的指定單元402獲取尋道和旋轉(zhuǎn)延遲所需的時間(處理S503)。在此,根據(jù)實施例,使用在從磁記錄介質(zhì)107讀取數(shù)據(jù)時的平均尋道時間和平均旋轉(zhuǎn)延遲時間的總和來獲取尋道和旋轉(zhuǎn)延遲所需的時間。但是,尋道和旋轉(zhuǎn)延遲所需的時間不限于平均尋道時間和平均旋轉(zhuǎn)延遲時間的總和,而例如可以是最大尋道時間和最大旋轉(zhuǎn)延遲時間的總和。
[0059]此外,指定單元402指定在所獲取的時間(尋道和旋轉(zhuǎn)延遲所需的時間)內(nèi)可從NAND存儲器104讀取的數(shù)據(jù)的塊數(shù)(處理S504)。
[0060]接著,CPU 122的磁盤指示單元404指示HDC 121從磁記錄介質(zhì)107中,從讀取請求的起始位置開始,讀取具有指定塊數(shù)的數(shù)據(jù)(處理S505)。
[0061]另外,CPU 122的NAND存儲器指示單元403指示NAND控制器142將讀取的數(shù)據(jù)存儲在NAND存儲器104中(處理S506)。
[0062]CPU 122的NAND存儲器指示單元403