專利名稱:存儲的高速緩存內(nèi)的軌道清除的高速緩存管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于在存儲裝置的高速緩存內(nèi)進行軌道清除的高速緩存管理的計算機程序產(chǎn)品、系統(tǒng)和方法。
背景技術(shù):
高速緩存管理系統(tǒng)由于在(與存儲所請求的軌道的存儲裝置相比)較快速存取的存儲裝置(例如,存儲器)內(nèi)的讀操作和寫操作而緩沖最近訪問的存儲裝置內(nèi)的軌道。與較慢速存取的存儲裝置中返回所請求的軌道相比,對在較快速存取的高速緩存存儲器內(nèi)的軌道的后續(xù)讀請求以更快的速度返回,從而減小了讀延遲。當指向存儲裝置的所修改的軌道被寫入高速緩存存儲器時并且在所修改的軌道向外寫到存儲裝置(例如,硬盤驅(qū)動器)之前,高速緩存管理系統(tǒng)也可以完全返回寫請求。存儲裝置的寫延遲通常比寫入高速緩存存儲器的延遲明顯要長。因而,使用高速緩存也會減小寫延遲。高速緩存管理系統(tǒng)可以使對于每個軌道都具有一個條目的鏈接表保持存儲于高速緩存內(nèi),該鏈接表可以包括在寫入存儲裝置之前緩存于高速緩存內(nèi)的寫入數(shù)據(jù)或讀出數(shù)據(jù)。在通常使用的最近最少使用的(LRU)高速緩存技術(shù)中,如果在高速緩存內(nèi)的軌道被訪問,即,高速緩存“命中”,則所訪問軌道在LRU列表內(nèi)的條目被高速緩存管理器移動到列表的最近最多使用(MRU)端。如果所請求的軌道不在高速緩存內(nèi),即,高速緩存未命中,則可以去除其條目于列表的LRU端的在高速緩存內(nèi)的軌道。一種清除操作,通常稱為軌道降級(demote),從高速緩存中簡單地刪除軌道。例如,含有讀出數(shù)據(jù)的軌道可以被高速緩存管理器降級。另一種軌道清除操作使軌道從高速緩存內(nèi)離臺(destage),以便將軌道發(fā)送到存儲裝置。例如,含有寫入數(shù)據(jù)的軌道可以被高速緩存管理器使其從高速緩存內(nèi)離臺,以便存儲于存儲裝置內(nèi)。在典型的LRU高速緩存技術(shù)中,從存儲裝置登臺(stage)到高速緩存內(nèi)的軌道數(shù)據(jù)的條目通常被添加至LRU列表的MRU端。因此,訪問更頻繁的軌道很有可能保留于高速緩存內(nèi),然而訪問較不頻繁的數(shù)據(jù)將會更可能被從列表的LRU端去除,以便為新訪問的軌道在高速緩存內(nèi)騰出空間。高速緩存管理器掃描軌道列表,以識別出能夠被降級或者離臺的軌道。高速緩存管理器典型地使用通常稱為“LRU鎖”的“鎖”來鎖定列表,以防止列表在掃描正在進行時被其他處理器修改。在許多LRU高速緩存技術(shù)中,高速緩存管理器在整個掃描期間保持住LRU鎖。另外,如果軌道被識別為將從高速緩存內(nèi)清除出,則高速緩存管理器典型地繼續(xù)保持住LRU鎖,以進行通常被當作掃描進程來進行的降級或離臺過程。高速緩存管理器可以為其他高速緩存管理操作保持住該鎖。例如,在高速緩存內(nèi)的軌道已經(jīng)于讀操作或?qū)懖僮鲀?nèi)被訪問之后,高速緩存管理器典型地在該軌道于列表中的條目位置被高速緩存管理器移至列表MRU端時保持住該鎖。對于列表掃描和軌道清除操作,高速緩存管理器為了防止其他處理器訪問該列表保持住該鎖的持續(xù)時間傾向于是相對長的。高速緩存管理器為典型的MRU操作保持住該鎖的持續(xù)時間傾向于是相對短的,但是它們在數(shù)量上能夠是相對頻繁的。其他技術(shù)同樣可以用來管理高速緩存的軌道清除。例如,已經(jīng)訪問過的軌道可以使用新近位(recency bit)標記為“已訪問”。
發(fā)明內(nèi)容
在本說明書的一個方面,描述了用于在數(shù)據(jù)存儲系統(tǒng)內(nèi)管理高速緩存的操作。在一個實施例中,操作包括:將在存儲裝置內(nèi)的受到輸入/輸出(I/o)請求的軌道保存于高速緩存內(nèi);在高速緩存內(nèi)掃描軌道列表以識別出待進行高速緩存清除處理的候選者,該高速緩存清除處理包括使所識別的軌道降級離開高速緩存和使所識別的軌道離臺至存儲裝置之一;鎖定列表以在軌道列表被掃描時防止其他處理器訪問列表;識別軌道列表中待進行高速緩存清除處理的軌道;中斷對軌道列表的掃描;存儲指向根據(jù)掃描被中斷的列表內(nèi)的位置的軌道列表內(nèi)的位置的指針;釋放列表的鎖定以允許其他處理器在所識別的軌道正在進行高速緩存清除處理時訪問列表;以及通過使所識別的軌道降級離開高速緩存和使所識別的軌道離臺至存儲裝置之一對所識別的軌道進行高速緩存清除處理。在另一個方面,描述了更多的操作,包括:恢復對列表的鎖定以防止其他處理器在軌道列表正被掃描時訪問列表,已經(jīng)在列表內(nèi)的根據(jù)所存指針的位置處恢復對軌道列表掃描。在又一個方面,上述列表具有最近最少使用(LRU)端和最近最多使用(MRU)端,并且上述掃描是LRU掃描,該LRU掃描包括識別最近最少使用的(LRU)軌道以及對列表進行LRU更新,并且上述LRU更新包括將所識別的LRU軌道在列表上的位置移向列表的LRU端。在另外一個方面,描述了更多的操作,包括:對在高速緩存內(nèi)的列表上的軌道進行I/O處理,其中I/O處理包括對被I/O處理的軌道的讀和寫之一,鎖定列表以防止其他處理器在軌道列表正在更新時訪問列表,對列表進行MRU更新,其中所述MRU更新包括將I/O處理的軌道識別為MRU軌道以及將所識別的MRU軌道在列表上的位置移向列表的MRU端,以及釋放對列表的鎖定以允許其他處理器訪問列表。在又一個方面,上述MRU更新包括確定指針是否指向列表上由所識別的MRU軌道占用的位置,該所識別的列表位置將要被移向列表的MRU端,并且如果是,則更新指針以指向列表上的前一位置。在另外一個方面,描述了更多的操作,包括:在掃描啟動時啟動定時器,對預定的時間段進行計時,在列表內(nèi)的根據(jù)所存儲的指針的位置處啟動對軌道列表的掃描,以及在該預定的時間段到期時:中斷對軌道列表的掃描,存儲指向根據(jù)列表內(nèi)的掃描被中斷的位置的軌道列表內(nèi)的位置的指針,并且釋放對列表的鎖定以允許其他處理器訪問列表。在另外一個方面,描述了更多的操作,包括:設(shè)置軌道的定額,用于高速緩存清除處理,在啟動掃描時啟動被進行高速緩存清除處理的軌道計數(shù),啟動在列表內(nèi)的根據(jù)所存儲的指針的位置處對軌道列表的掃描,并且每當軌道由高速緩存清除處理來處理時就使計數(shù)遞增,將該計數(shù)與定額比較,并且在達到定額時,中斷對軌道列表的掃描,存儲指向根據(jù)列表內(nèi)掃描被中斷的位置的在軌道列表內(nèi)的位置的指針,并且釋放對列表的鎖定以允許其他處理器訪問列表。也可以實現(xiàn)其他特征和方面,取決于特定的應用。
圖1示出了計算環(huán)境的一個實施例。圖2示出了高速緩存管理信息的一個實施例。圖2a不出了 LRU列表的一個實施例。圖3示出了高速緩存控制塊的一個實施例。圖4示出了空間索引條目的一個實施例。圖5示出了用于從高速緩存中去除軌道的操作的一個實施例。圖6示出了用于在高速緩存內(nèi)更新軌道列表的操作的一個實施例。
具體實施例方式如同下面將要更詳細地描述的,在一個實施例中,例如,當軌道已經(jīng)被識別為用于高速緩存清除處理(例如,降級軌道)的軌道時,高速緩存管理器在掃描期間釋放列表鎖。通過釋放列表鎖,高速緩存管理器允許其他處理器在所識別的軌道進行高速緩存清除處理時訪問列表。在一個方面,在列表鎖釋放之前,前一條目在列表中的位置可以存儲于游標或指針內(nèi),使得指針值指向列表中的前一條目。一旦列表鎖釋放了,被識別為用于高速緩存清除處理的軌道可以被處理,以從高速緩存內(nèi)去除軌道。對于使軌道降級的高速緩存清除處理,軌道編號被從列表中去除,并且軌道自身被從高速緩存中刪除。對于使軌道離臺的高速緩存清除處理,軌道編號被從列表中去除,并且軌道自身被寫回到存儲裝置以及被從高速緩存中刪除。
一旦對所識別軌道的高速緩存清除處理完成了,就可以重獲列表鎖并且可以在指針所識別的列表條目處恢復掃描。如果另一處理器去除或者(否則的話)修改由列表中的指針識別的列表條目,則可以在掃描恢復時重調(diào)指針以使其指向前一軌道或者另一個適合的條目。圖1示出了計算環(huán)境的一個實施例。多個主機2a、2b" 2n可以通過網(wǎng)絡(luò)6向存儲控制器4提交輸入/輸出(I/O)請求,以訪問在存儲裝置10內(nèi)的卷8 (例如,邏輯單元號、邏輯裝置、邏輯子系統(tǒng)等)的數(shù)據(jù)。存儲控制器4包括:包含一個或多個具有單核或多核的處理器的處理器復合體12、一個或多個高速緩存14、用于備份高速緩存14內(nèi)的軌道的一個或多個高速緩存?zhèn)浞菅b置16。高速緩存14緩存在主機2a、2b…2n和存儲裝置10之間傳輸?shù)母咚倬彺鏀?shù)據(jù)。以這種方式,高速緩存14保存在存儲裝置內(nèi)受到輸入/輸出(I/O)請求的軌道。高速緩存?zhèn)浞菅b置16可以在高速緩存14內(nèi)提供對軌道的非易失性存儲。在另一個實施例中,高速緩存?zhèn)浞菅b置16可以位于與高速緩存14的供電界限(power boundary)不同的供電界限上的集群或硬件內(nèi)。存儲控制器4具有存儲器20,該存儲器20包括:用于管理在主機2a、2b" 2n和存儲裝置10之間傳輸?shù)能壍赖膫鬏數(shù)拇鎯芾砥?2,以及用于在高速緩存14和高速緩存?zhèn)浞菅b置16內(nèi)管理在主機2a、2b-2n和存儲裝置10之間傳輸?shù)臄?shù)據(jù)的高速緩存管理器24。軌道可以包括配置于存儲裝置10內(nèi)的任意單位的數(shù)據(jù),例如,軌道、邏輯塊地址(LBA)等,該邏輯塊是較大的軌道分組的一部分,例如,卷、邏輯裝置等。高速緩存管理器24保存高速緩存管理信息26,以管理在高速緩存14內(nèi)的讀軌道(未修改的)和寫軌道(修改的)。高速緩存?zhèn)浞菅b置索引30提供指向高速緩存?zhèn)浞菅b置16內(nèi)的位置的軌道標識符的索引。存儲管理器22和高速緩存管理器24在圖1中被示為裝載到存儲器20之內(nèi)的并且由處理器復合體12執(zhí)行的程序代碼。作為選擇,部分或全部功能可以用硬件裝置,例如用專用集成電路(ASIC)實現(xiàn)于存儲控制器4內(nèi)。在某些實施例中,高速緩存14可以將軌道存儲于結(jié)構(gòu)化日志陣列(LSA)內(nèi),在該結(jié)構(gòu)化日志陣列內(nèi),軌道按照接收的先后順序?qū)懭?,從而提供寫入高速緩?4的軌道的時間排序。在LSA中,已經(jīng)存在于LSA內(nèi)的新近版本的軌道被寫入LSA的末端。在可替換的實施例中,高速緩存14可以按照與在LSA中的格式不同的格式存儲數(shù)據(jù)。在一個實施例中,高速緩存14可以包括隨機存取存儲器(RAM)(例如,動態(tài)隨機存取存儲器(DRAM)),或者可以包括閃存(例如,固態(tài)裝置),或者兩者,并且存儲裝置10包括一個或多個順序訪問的存儲裝置,例如,硬盤驅(qū)動器和磁帶。存儲裝置10可以包括單個順序訪問的存儲裝置或者可以包括存儲裝置陣列,例如,簡單磁盤捆綁(JB0D)、直接存取存儲裝置(DASD)、獨立磁盤冗余陣列(RAID)、虛擬裝置等。在一個實施例中,高速緩存14是比存儲裝置10更快的存取裝置。此外,高速緩存14可以具有比存儲裝置10內(nèi)的存儲裝置更大的單位存儲成本。高速緩存14可以是存儲器20的一部分或者被實現(xiàn)于單獨的存儲器裝置(例如,DRAM)內(nèi)。在一個實施例中,高速緩存?zhèn)浞菅b置16可以包括諸如非易失性存儲器之類的非易失性備份存儲裝置(NVS),例如,有備用電池的隨機存取存儲器(RAM)、靜態(tài)RAM (SRAM)
坐寸o網(wǎng)絡(luò)6可以包括存儲區(qū)域網(wǎng)絡(luò)(SAN)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)和內(nèi)聯(lián)網(wǎng)等。圖2示出了高速緩存管理信息26的一個實施例,包括:用于為了控制在控制塊目錄52中的塊而提供對高速緩存14內(nèi)的軌道的索引的軌道索引50 ;用于提供高速緩存14內(nèi)的未修改的順序軌道的時間排序的未修改的順序LRU列表54 ;用于提供高速緩存14內(nèi)的已修改的順序及非順序軌道的時間排序的已修改的LRU列表56 ;以及用于提供高速緩存14內(nèi)的未修改的非順序軌道的時間排序的未修改的非順序LRU列表58。應當理解,高速緩存可以具有按照多種格式組織的列表,取決于特定的應用。在某些實施例中,在確定高速緩存?zhèn)浞菅b置16為滿時,所修改的LRU列表56被用來使所修改的軌道從高速緩存14中離臺,使得在高速緩存?zhèn)浞菅b置16內(nèi)的那些軌道的副本可以被丟棄,以便在高速緩存?zhèn)浞菅b置16內(nèi)為新修改的軌道騰出空間。在某些實施例中,高速緩存管理信息26還可以包括空間索引76,用于基于所修改的軌道存儲于存儲裝置10內(nèi)的物理位置來提供所修改軌道的空間排序。所有LRU列表54、56和58都可以包括軌道在高速緩存14內(nèi)的軌道ID,并且根據(jù)所識別的軌道上次被訪問的時間來排序。LRU列表54、56和58具有用于指示最近訪問最多的軌道的最近最多使用(MRU)端以及用于指示最近使用或訪問最少的軌道的LRU端。例如,圖2a示出了 LRU列表54的LRU端60和MRU端62。添加至高速緩存14的軌道的軌道ID被添加至LRU列表的MRU端,并且被降級離開高速緩存14的軌道從LRU端訪問。軌道索引50和空間索引76可以包括分散索引表(SIT)。類型可替換的數(shù)據(jù)結(jié)構(gòu)可以被用來提供軌道在高速緩存14內(nèi)的時間排序、軌道在高速緩存內(nèi)的空間排序。非順序的軌道可以包括在線事務處理(OLTP)軌道,該軌道通常包括不完全隨機的且具有某些位置上的關(guān)聯(lián)(S卩,具有被重復訪問的可能性)的小塊寫入。根據(jù)本說明書的一個方面,例如,當軌道已經(jīng)被識別為用于高速緩存清除處理(例如,使軌道降級)的軌道時,每個列表54、56和58分別具有允許高速緩存管理器(例如,高速緩存管理器24)在關(guān)聯(lián)列表54、56和58的掃描期間釋放列表鎖的關(guān)聯(lián)的指針54a、56a和58a。例如,圖2a示出了指向在LRU列表54的LRU端60處的條目的指針54a。通過釋放列表,高速緩存管理器允許其他處理器在所識別的軌道進行高速緩存清除處理時訪問列表。在一個實施例中,在列表鎖被釋放之前,在列表內(nèi)的前一條目的位置可以存儲于關(guān)聯(lián)的游標或指針內(nèi),使得指針值指向在列表中的前一條目。一旦列表鎖被釋放了,被識別用于高速緩存清除處理的軌道就可以被處理,以便從高速緩存中去除該軌道。一旦對所識別軌道的高速緩存清除處理完成了,就可以重獲列表鎖并且可以在指針所識別的列表條目處恢復掃描。圖3示出了在控制塊目錄52中的高速緩存控制塊100條目的一個實施例,包括控制塊標識符(ID)102、軌道在高速緩存14內(nèi)的物理位置的高速緩存位置104、指示軌道為已修改還是未修改的信息106以及指示軌道為順序訪問還是非順序訪問的信息108。在某些實施例中,控制塊條目也可以被提供用于識別出軌道在LSA內(nèi)所處的位置的LSA位置。圖4示出了空間索引條目140,包括:軌道在高速緩存14內(nèi)的軌道標識符142以及軌道在存儲裝置10內(nèi)存儲的物理位置144,例如,柱面、盤片、塊地址和存儲裝置標識符。圖5示出了由高速緩存管理器24執(zhí)行的用于從高速緩存14中去除軌道的操作的一個實施例。在所示的實施例中,圖5的高速緩存清除過程使未修改的軌道降級離開高速緩存14。但是,應當理解,在某些實施例中,也可以執(zhí)行其他高速緩存操作,例如,軌道離臺。導致軌道被從高速緩存中清除的操作可以在確定例如將要在高速緩存14內(nèi)騰出可用的空間以便給高速緩存添加新的軌道時啟動。在一個實施例中,在啟動(在塊200處)用于識別出為了在高速緩存14內(nèi)釋放空間而進行高速緩存清除處理的軌道的操作時,高速緩存管理器24可以啟動設(shè)置了預定時間段的定時器(在塊202處),該預定時間段設(shè)置了對已經(jīng)啟動的過程的限制??梢赃x擇適當?shù)某掷m(xù)時間,取決于特定的應用。在某些實施例中,持續(xù)時間可以是可變的,取決于不同的條件。其他實施例可以不具有對包括高速緩存軌道清除的過程的時間限制。此外,在一個實施例中,高速緩存管理器24還可以設(shè)置為預定數(shù)量的軌道的定額(在塊204處),該定額對將要在已經(jīng)啟動的過程中去除的軌道的數(shù)量設(shè)置了限制??梢赃x擇適當?shù)能壍罃?shù)量限制,取決于特定的應用。在某些實施例中,待去除的軌道的數(shù)量可以是可變的,取決于不同的條件,并且可以更大或更小,取決于條件。其他實施例可以不具有對高速緩存清除過程的軌道限制。要防止其他處理器訪問和修改從中選出待去除的軌道的列表,高速緩存管理器保護列表鎖(例如,LRU鎖)(±夾206),用于圖5的過程。因而,例如,諸如未修改的順序LRU列表54或未修改的非順序列表58 (圖2)之類的列表可以由用于執(zhí)行圖5的過程的處理器鎖定,從而防止其他處理器在列表被掃描以識別出待從高速緩存中清除的軌道時訪問和修改所鎖定的列表。應當相信,在許多現(xiàn)有的LRU高速緩存技術(shù)中,高速緩存管理器在掃描的整個持續(xù)時間內(nèi)保持住LRU鎖。另外,如果軌道被識別為待從高速緩存中清除的,則在許多現(xiàn)有的LRU高速緩存技術(shù)中的高速緩存管理器典型地繼續(xù)保持住LRU鎖,用于通常被當作掃描進程的降級或離臺過程。因而,在許多現(xiàn)有的LRU高速緩存技術(shù)中,高速緩存管理器為了防止其他處理器訪問列表而保持住該鎖的持續(xù)時間傾向于是相對長的,用于列表掃描和軌道清除操作。根據(jù)本說明書的一個方面,以及如同下面將要更詳細地描述的,例如,當軌道已經(jīng)被識別為用于高速緩存清除處理的軌道(例如,使軌道降級)時,高速緩存管理器(例如,高速緩存管理器24)能夠在掃描期間釋放列表鎖。通過釋放列表鎖,高速緩存管理器允許其他處理器在所識別的軌道進行高速緩存清除處理時訪問列表。在一個實施例中,在列表鎖被釋放之前,在列表內(nèi)的前一條目的位置可以存儲于游標或指針內(nèi),使得指針值指向列表中的前一條目。一旦列表鎖被釋放,被識別用于高速緩存清除處理的軌道可以被處理,以從高速緩存中去除該軌道。對于使軌道降級的高速緩存清除處理,軌道編號被從列表中去除并且軌道自身被從高速緩存中刪除。對于使軌道離臺的高速緩存清除處理,軌道編號被從列表中去除并且軌道自身被寫回到存儲裝置并且從高速緩存中刪除。一旦對所識別軌道的高速緩存清除處理完成了,就可以重獲列表鎖并且可以在指針所識別的列表條目處恢復掃描。如果另一處理器從列表中去除或者(否則的話)修改由指針識別的列表條目,就可以在掃描恢復時重調(diào)指針以使其指向前一軌道或者另一個適當?shù)臈l目。因而,在圖5的實施例中,高速緩存管理器讀出(塊208)讀掃描開始指針并且將掃描的當前位置設(shè)置到由掃描開始指針識別的列表條目。掃描開始指針的值可以在掃描初始化時根據(jù)待掃描的列表的特定位置或條目來初始化為適當?shù)闹?塊200)。例如,掃描開始指針可以在掃描初始化時初始化(塊200),以指向例如在列表最近最少使用(LRU)端的第一條目。可以選擇其他初始化值,取決于特定的應用。以這種方式,可以將列表的掃描啟動于列表內(nèi)根據(jù)所存儲的指針的位置。在掃描的當前位置的列表條目被檢查(塊210),并且作出在掃描的當前位置的列表條目的軌道是否應當被處理以從高速緩存中清除的確定(塊212)。如果在掃描的當前位置的列表條目的軌道未被識別用于高速緩存清除處理,則掃描開始指針被設(shè)置(塊214),使得掃描的當前位置被移至待掃描的軌道列表的下一條目。例如,如果列表正被按順序掃描,則掃描開始指針可以遞增(或遞減,視情況而定),以指向列表的下一相鄰條目。其他方法可以被用來設(shè)置掃描開始指針,以使其指向待掃描的下一條目,視情況而定。在操作202中初始化的定時器同樣可以被檢查,以確定掃描期限是否已經(jīng)到期(塊215)。如果是,則可以釋放列表鎖(塊216),并且掃描過程終止(塊217)。以這種方式,指針存儲(塊214)指向根據(jù)列表內(nèi)掃描終止的位置的在軌道列表內(nèi)的位置的值。如果掃描期限尚未到期(塊214),則對列表的掃描繼續(xù)進行并且在掃描的下一當前位置的列表條目被檢查(塊210),并且作出在掃描的當前位置的列表條目的軌道是否應當被處理以從高速緩存中清除的確定(塊212)。如果在掃描的當前位置列表條目的軌道被識別用于高速緩存清除處理,則對列表的掃描被中斷(塊218)并且掃描開始指針被設(shè)置(塊218),使得掃描的當前位置往回移至待掃描的軌道列表的前一條目。例如,如果列表正被按順序掃描,則掃描開始指針可以遞減(或遞增,視情況而定),以指向列表的前一相鄰條目。其他方法可以被用來設(shè)置掃描開始指針以指向前一掃描條目,視情況而定。列表的其他位置同樣可以存儲,取決于特定的應用。以這種方式,指針存儲(塊218)指向根據(jù)列表內(nèi)掃描被中斷用于所識別軌道的高速緩存清除處理的位置的在軌道列表內(nèi)的位置的值。在復位掃描開始指針使得掃描開始指針指向待掃描的軌道列表的前一條目時,被掃描的軌道列表的列表鎖被釋放(塊220),以允許其他處理器在被識別(塊212)用于高速緩存清除處理的軌道被處理(塊222)時訪問列表。在所示的實施例中,圖5的高速緩存清除過程(塊222)使未修改的軌道降級離開高速緩存14,并且從被掃描的列表中去除該軌道的識別。但是,應當理解,在某些實施例中,可以執(zhí)行其他高速緩存操作,例如,軌道離臺。在對所識別軌道的高速緩存清除處理完成時,自從掃描啟動之后由高速緩存清除處理處理的軌道數(shù)量的計數(shù)可以遞增。另外,還可以作出是否已經(jīng)達到用于設(shè)置對于在高速緩存軌道清除過程中待去除的軌道數(shù)量的限制的軌道定額的確定(塊224)。因而,可以將自從掃描啟動之后由高速緩存清除處理處理的軌道數(shù)量的計數(shù)與定額比較。如果已經(jīng)達到定額,則可以終止掃描(塊226)。以這種方式,指針存儲(塊218)指向根據(jù)列表內(nèi)掃描被中斷(塊218)和被終止(塊226)的位置的在軌道列表內(nèi)的位置的值。如果尚未達到定額,在操作202中初始化的定時器也可以被檢查,以確定掃描期限是否已經(jīng)到期(塊228)。如果是,則可以終止掃描(塊217)。以這種方式,指針存儲(塊218)指向根據(jù)列表內(nèi)掃描被中斷(塊218)和被終止(塊217)的位置的在軌道列表內(nèi)的位置的值。否則,高速緩存管理器能夠重獲(塊206)列表鎖,用于圖5的過程,以便恢復鎖定列表,從而再次防止其他處理器在對列表的掃描恢復(塊208-228)時訪問和修改列表。因而,在圖5的實施例中,高速緩存管理器再次讀出(塊208)讀掃描開始指針并且將掃描的當前位置設(shè)置到由掃描開始指針識別的列表條目。以這種方式,在列表內(nèi)根據(jù)所存儲指針的位置恢復對列表的掃描。在圖5的實施例中,如同以上所說明的,掃描開始指針已經(jīng)被復位(塊218),使得掃描的當前位置往回移至待掃描的軌道列表的前一條目,因為前一當前條目已經(jīng)被識別用于高速緩存清除處理。掃描恢復并且在掃描的當前位置的列表條目被檢查(塊210),作出在掃描的當前位置的列表條目的軌道是否應當被處理以從高速緩存中清除的確定(塊212)等。圖6示出了由高速緩存管理器24執(zhí)行的操作的一個實施例,該操作用于響應于為了從被I/O處理的軌道中讀出數(shù)據(jù)或者將數(shù)據(jù)寫入其中的軌道的I/O處理(塊300)而更新在高速緩存內(nèi)的軌道列表。因而,響應于軌道的I/O處理(塊300),高速緩存管理器24保護列表鎖(塊302),用于圖6的過程,以便防止其他處理器訪問和修改將要響應于對列表上的軌道的I/O處理而更新的列表。根據(jù)本說明書的另一個方面,作出掃描開始指針是否指向進行I/O處理的軌道的列表位置的確定(塊304)。如果掃描開始指針的值指向于已經(jīng)進行I/O處理的軌道的列表條目不同的列表條目,則可以直接進行更新(塊308)。另一方面,如果掃描開始指針的值指向已經(jīng)進行I/O處理的軌道的列表條目,則掃描開始指針被復位(塊306),使得在LRU掃描恢復時,LRU的當前位置掃描(圖5)將往回移至待掃描的軌道列表的前一條目。例如,如果對列表的LRU掃描按順序進行,并且列表位置按順序編號,則掃描開始指針可以遞減(或遞增,視情況而定),以指向列表的前一相鄰條目。其他方法可以被用來設(shè)置掃描開始指針,以使其指向前一掃描條目,視情況而定。列表的其他位置同樣可以被存儲,取決于特定的應用。以這種方式,指針存儲(塊306)指向列表內(nèi)根據(jù)作為IO操作的對象的軌道的列表條目的位置的在軌道列表內(nèi)的位置的值。在所示的實施例中,已經(jīng)進行I/O處理的軌道的列表條目通過最近最多使用(MRU)更新過程來更新(塊308),該更新過程將列表條目移至列表的MRU端。在列表的MRU更新或其他更新完成時,用于被更新的軌道列表的列表鎖可以被釋放(塊310)以允許其他處理器訪問列表,并且更新過程可以被終止(塊312)。所描述的實施例提供了一種高速緩存管理器,例如,高速緩存管理器24,例如當軌道已經(jīng)被識別為用于高速緩存清除處理(例如,使軌道降級)的軌道時,該高速緩存管理器能夠在掃描期間釋放列表鎖。通過釋放列表鎖,高速緩存管理器允許其他處理器在所識別的軌道進行高速緩存清除處理時訪問列表。在一個實施例中,在列表鎖被釋放之前,在列表內(nèi)的前一條目的位置可以存儲于游標或指針內(nèi),使得指針值指向列表中的前一條目。一旦列表鎖被釋放,被識別用于高速緩存清除處理的軌道可以被處理,以從高速緩存中去除該軌道。對于使軌道降級的高速緩存清除處理,軌道編號被從列表中去除,并且軌道自身被從高速緩存中刪除。對于使軌道離臺的高速緩存清除處理,軌道編號被從列表中去除,并且軌道自身被寫回到存儲裝置并且被從高速緩存中刪除。一旦對所識別軌道的高速緩存清除處理完成了,就可以重獲列表鎖并且可以在指針所識別的列表條目處恢復掃描。如果另一處理器從列表中去除或者(否則的話)修改由指針識別的列表條目,則可以在掃描恢復時重調(diào)指針以使其指向前一軌道或另一個適當?shù)臈l目。所描述的操作可以使用標準的編程和/或工程技術(shù)實現(xiàn)為方法、裝置或計算機程序產(chǎn)品,從而生產(chǎn)出軟件、固件、硬件或者它們的任意組合。作為選擇,實施例的各個方面可以采用以下形式:完全硬件實施例、完全軟件實施例(包括固件、常駐軟件、微代碼等)或者結(jié)合了軟件和硬件方面的實施例,這些實施例通??梢匀糠Q為“電路”、“模塊”或“系統(tǒng)”。而且,實施例的各個方面可以采用實現(xiàn)于以計算機可讀的程序代碼實現(xiàn)于其上的一個或多個計算機可讀的介質(zhì)內(nèi)的計算機程序產(chǎn)品的形式??梢圆捎靡粋€或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、設(shè)備或裝置,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲裝置、磁存儲裝置、或者上述的任意合適的組合。在本文件的上下文中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者裝置使用或者與其結(jié)合使用。計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者裝置使用或者與其結(jié)合使用的程序。
計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言一諸如“C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。以上參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。術(shù)語“ 一個實施例”、“實施例”、“多個實施例”、“該實施例”、“該多個實施例”、“ 一種或多個實施例”、“一些實施例”和“某一實施例”意指“本發(fā)明的一種或多種(但不是全部)實施例”,除非另有明確規(guī)定。術(shù)語“包括”、“包含”、“具有”以及它們的變型意指“包括但不限于”,除非另有明確規(guī)定。所枚舉例示的項并不暗示著這些項中的任意或所有項都是互斥的,除非另有明確規(guī)定。術(shù)語“一”、“一個”和“該”意指“一個或多個”,除非另有明確規(guī)定。彼此通信的裝置不需要是彼此連續(xù)通信的,除非另有明確規(guī)定。另外,彼此通信的裝置可以通過一個或多個中間物來直接或間接通信。關(guān)于具有幾個彼此通信的構(gòu)件的實施例的描述并沒有暗示著所有此類構(gòu)件都是必需的。相反,本文描述了多種可選構(gòu)件,以說明本發(fā)明的各種可能的實施例。此外,盡管過程步驟、方法步驟、算法等可以按照某種先后順序來描述,但是此類過程、方法和算法可以被配置,以便按照可替換的順序來工作。換言之,所描述的任何次序或順序的步驟并不一定表示這些步驟必須按照該順序來執(zhí)行。實際上,本文所描述的過程的步驟可以按照任何順序來執(zhí)行。此外,某些步驟可以同時執(zhí)行。當在此對單個裝置或物品進行描述時,應當很清楚,有多個裝置/物品(不管它們是否相互合作)可以用來代替單個裝置/物品。類似地,在本文對多個裝置或物品進行描述的情形中(不管它們是否相互合作),應當清楚的是,可以使用單個裝置/物品來代替該多個裝置或物品,或者可以使用不同數(shù)量的裝置/物品來代替所示出的數(shù)量的裝置或程序。作為選擇,裝置的功能和/或特征可以通過未明確描述為具有此類功能/特征的一個或多個其他裝置來實現(xiàn)。因而,本發(fā)明的其他實施例不需要包括裝置自身。圖5-6所示的操作示出了按特定順序發(fā)生的某些事件。在可替換的實施例中,某些操作可以按照不同的順序執(zhí)行,被修改或被去除。而且,步驟可以被添加至上述邏輯中,并且仍然符合所描述的實施例。此外,本文所描述的操作可以按順序發(fā)生,或者某些操作可以并行處理。然后,操作還可以由單個處理單元或者由分布式處理單元來執(zhí)行。為了說明和描述的目的,前面已經(jīng)給出了關(guān)于本發(fā)明的各個實施例的描述。該描述并非是窮盡性的或者是將本發(fā)明限定于所公開的精確形式。根據(jù)上述教導的許多修改和變更都是可能的。應當指出,本發(fā)明的范圍并沒有受上述詳細描述所限定,而是有本文所附的權(quán)利要求所限定。上述說明書、實例和數(shù)據(jù)提供了對本發(fā)明的組成的制造和使用的全面描述。由于能夠在不脫離本發(fā)明的精神和范圍的情況下實現(xiàn)本發(fā)明的許多實施例,因而本發(fā)明處于后面所附的權(quán)利要求書的范圍之內(nèi)。
權(quán)利要求
1.一種方法,包括: 將存儲裝置內(nèi)的受到輸入/輸出(I/o)請求的軌道保存于高速緩存內(nèi); 掃描高速緩存內(nèi)的軌道列表以識別出用于高速緩存清除處理的候選者,所述高速緩存清除處理包括以下處理之一:使所識別的軌道降級離開所述高速緩存和使所識別的軌道離臺至存儲裝置; 鎖定所述列表以防止其他處理器在所述軌道列表正被掃描時訪問所述列表; 識別所述軌道列表中待進行高速緩存清除處理的軌道; 中斷對所述軌道列表的掃描; 存儲指向根據(jù)掃描被中斷的所述列表內(nèi)的位置的所述軌道列表內(nèi)的位置的指針;釋放對所述列表的鎖定以允許其他處理器在所識別的軌道正在進行高速緩存清除處理時訪問所述列表;以及 通過使所識別的軌道降級離開所述高速緩存和使所識別的軌道離臺至存儲裝置之一對所識別的軌道進行高速緩存清除處理。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 恢復對所述列表的鎖定以防止其他處理器在所述軌道列表正被掃描時訪問所述列表;以及 在所述列表內(nèi)的根據(jù)所存儲的指針的位置處恢復對所述軌道列表的掃描。
3.根據(jù)權(quán)利要求1所述的方法,其中所述列表具有最近最少使用(LRU)端和最近最多使用(MRU)端,并且其中所述掃描是包括識別最近最少使用的(LRU)軌道以及對所述列表進行LRU更新的LRU掃描,其中所述LRU更新包括將所識別的LRU軌道在所述列表上的位置移向所述列表的LRU端。
4.根據(jù)權(quán)利要求3所述的方法,還包括: 對在高速緩存內(nèi)的所述列表上的軌道進行I/O處理,其中所述I/O處理包括對進行I/O處理的軌道進行讀出和寫入之一; 鎖定所述列表以防止其他處理器在所述軌道列表正在更新時訪問所述列表; 對所述列表進行MRU更新,其中所述MRU更新包括將I/O處理的軌道識別為MRU軌道以及將所識別的MRU軌道在所述列表上的位置移向所述列表的MRU端;以及釋放對所述列表的鎖定以允許其他處理器訪問所述列表。
5.根據(jù)權(quán)利要求4所述的方法,還包括:其中所述MRU更新包括確定所述指針是否指向在所述列表上由所識別的MRU軌道占用的位置,該所識別的MRU軌道的列表位置將會被移向所述列表的MRU端;以及如果是,則更新所述指針以指向所述列表上的前一位置。
6.根據(jù)權(quán)利要求2所述的方法,還包括: 在掃描啟動時啟動定時器以對預定的時間段進行計時; 在所述列表內(nèi)的根據(jù)所存儲的指針的位置處啟動對所述軌道列表的掃描;以及 在所述預定時間段到期時: 中斷對所述軌道列表的掃描; 存儲指向根據(jù)所述掃描被中斷的列表內(nèi)的位置的所述軌道列表內(nèi)的位置的指針;并且 釋放對所述列表的鎖定以允許其他處理器訪問所述列表。
7.根據(jù)權(quán)利要求2所述的方法,還包括:為高速緩存清除處理設(shè)置軌道的定額; 在掃描啟動時啟動進行高速緩存清除處理的軌道的計數(shù); 在根據(jù)所存儲的指針的所述列表內(nèi)的位置處啟動對所述軌道列表的掃描;以及 每當軌道通過高速緩存清除處理來處理時就使所述計數(shù)遞增; 將所述計數(shù)與所述定額比較;以及 在達到所述定額時: 中斷對所述軌道列表的掃描; 存儲指向根據(jù)所述掃描被中斷的所述列表內(nèi)的位置的所述軌道列表內(nèi)的位置的指針;并且 釋放對所述列表的 鎖定以允許其他處理器訪問所述列表。
8.一種計算系統(tǒng),包括: 用于存儲數(shù)據(jù)軌道的存儲裝置;以及 存儲控制器,包括多個處理器、用于存儲數(shù)據(jù)軌道的高速緩存以及包含具有實現(xiàn)于其內(nèi)的計算機可讀的程序代碼的計算機可讀存儲介質(zhì)的高速緩存管理器,所述程序代碼由處理器執(zhí)行以進行管理操作,所述管理操作包括: 將受到輸入/輸出(I/O)請求的軌道保存于所述高速緩存內(nèi); 掃描高速緩存內(nèi)的軌道列表以識別出用于高速緩存清除處理的候選者,所述高速緩存清除處理包括以下處理之一:使所識別的軌道降級離開所述高速緩存和使所識別的軌道離臺至存儲裝置; 鎖定所述列表以防止其他處理器在所述軌道列表正被掃描時訪問所述列表; 識別所述軌道列表中待進行高速緩存清除處理的軌道; 中斷對所述軌道列表的掃描; 存儲指向根據(jù)所述掃描被中斷的所述列表內(nèi)的位置的所述軌道列表內(nèi)的位置的指針; 釋放對所述列表的鎖定以允許其他處理器在所識別的軌道正在進行高速緩存清除處理時訪問所述列表;以及 通過使所識別的軌道降級離開所述高速緩存和使所識別的軌道離臺至存儲裝置之一對所識別的軌道進行高速緩存清除處理。
9.根據(jù)權(quán)利要求8所述的計算系統(tǒng),其中所述管理操作還包括: 恢復對所述列表的鎖定以防止其他處理器在所述軌道列表正被掃描時訪問所述列表;以及 在所述列表內(nèi)的根據(jù)所存儲的指針的位置處恢復對所述軌道列表的掃描。
10.根據(jù)權(quán)利要求8所述的計算系統(tǒng),其中所述列表具有最近最少使用(LRU)端和最近最多使用(MRU)端,并且其中所述掃描是包括識別最近最少使用的(LRU)軌道以及對所述列表進行LRU更新的LRU掃描,其中所述LRU更新包括將所識別的LRU軌道在所述列表上的位置移向所述列表的LRU端。
11.根據(jù)權(quán)利要求10所述的計算系統(tǒng),其中所述管理操作還包括: 對在高速緩存內(nèi)的所述列表上的軌道進行I/O處理,其中所述I/O處理包括對進行I/O處理的軌道進行讀出和寫入之一;鎖定所述列表以防止其他處理器在所述軌道列表正在更新時訪問所述列表; 對所述列表進行MRU更新,其中所述MRU更新包括將I/O處理的軌道識別為MRU軌道以及將所識別的MRU軌道在所述列表上的位置移向所述列表的MRU端;以及釋放對所述列表的鎖定以允許其他處理器訪問所述列表。
12.根據(jù)權(quán)利要求11所述的計算系統(tǒng),其中所述管理操作還包括:其中所述MRU更新包括確定所述指針是否指向在所述列表上由所識別的MRU軌道占用的位置,該所識別的MRU軌道的列表位置將會被移向所述列表的MRU端;以及如果是,則更新所述指針以指向所述列表上的前一位置。
13.根據(jù)權(quán)利要求9所述的計算系統(tǒng),其中所述管理操作還包括: 在掃描啟動時啟動定時器以對預定的時間段進行計時; 在所述列表內(nèi)的根據(jù)所存儲的指針的位置處啟動對所述軌道列表的掃描;以及 在所述預定時間段到期時: 中斷對所述軌道列表的掃描; 存儲指向根據(jù)所述掃描被中斷的列表內(nèi)的位置的所述軌道列表內(nèi)的位置的指針;并且 釋放對所述列表的鎖定以允許其他處理器訪問所述列表。
14.根據(jù)權(quán)利要求9所述的計算系統(tǒng),其中所述管理操作還包括: 為高速緩存清除處理設(shè)置軌道的定額; 在掃描啟動時啟動進行高速緩存清 除處理的軌道的計數(shù); 在根據(jù)所存儲的指針的所述列表內(nèi)的位置處啟動對所述軌道列表的掃描;以及 每當軌道通過高速緩存清除處理來處理時就使所述計數(shù)遞增; 將所述計數(shù)與所述定額比較;以及 在達到所述定額時: 中斷對所述軌道列表的掃描; 存儲指向根據(jù)所述掃描被中斷的所述列表內(nèi)的位置的所述軌道列表內(nèi)的位置的指針;并且 釋放對所述列表的鎖定以允許其他處理器訪問所述列表。
全文摘要
本公開設(shè)涉及存儲的高速緩存內(nèi)的軌道清除的高速緩存管理方法和系統(tǒng)。在一個實施例中,例如,高速緩存管理器在軌道已經(jīng)被識別為待進行高速緩存清除處理(例如,使軌道降級)的軌道時的掃描期間釋放列表鎖。通過釋放列表鎖,其他處理器在所識別的軌道進行高速緩存清除的處理時訪問該列表。在一個方面,前一條目在列表內(nèi)的位置可以存儲于游標或指針內(nèi),使得指針值指向列表內(nèi)的前一條目。一旦完成了對所識別軌道的高速緩存清除處理,就可以重獲列表鎖,并且可以在由指針識別的列表條目處恢復掃描。還可以實現(xiàn)其他特征和方面,取決于特定的應用。
文檔編號G06F12/08GK103207839SQ20131001632
公開日2013年7月17日 申請日期2013年1月17日 優(yōu)先權(quán)日2012年1月17日
發(fā)明者M·T·本哈斯, L·M·伽普他 申請人:國際商業(yè)機器公司