專利名稱:冗余緩存數據的彈性緩存的制作方法
技術領域:
本發(fā)明總體上涉及存儲裝置緩存,更具體地,涉及用于實施冗余緩存數據的彈性緩存的方法和/或設備。
背景技術:
在常規(guī)存儲系統中,整個系統和應用程序的性能通過緩存經常存取的數據來提高。在許多應用中,若緩存使用回寫模式,則工作負荷受益于此且性能得到提高。保持在回寫模式中的緩存數據有時通過提供冗余來保護以防止數據丟失。冗余通常利用緩存控制器中的兩個閃存模塊來實施。兩個閃存模塊利用鏡像永久配對,有效減少了將緩存數據保持在單個閃存模塊中的有效空間。假定僅有某些主機數據受益于冗余,則使閃存模塊中有效空間被低效使用。將期望實施冗余緩存數據的彈性緩存
發(fā)明內容
本發(fā)明涉及用于冗余緩存數據的彈性緩存的設備。該裝置可具有多個緩沖器和電路。該電路可被配置為(i)從主機接收寫入請求以在存儲體中存儲寫入數據,(ii)基于與寫入請求相關聯的冗余組織,在緩沖器中分配多個區(qū)域(延伸區(qū),extent),以及(iii)在多個區(qū)域中存儲寫入數據,其中,Ca)多個區(qū)域中的每一個位于緩沖器中的不同一個內,以及(b)響應寫入請求,多個區(qū)域被動態(tài)鏈接在一起。本發(fā)明的目標、特征和優(yōu)勢包括提供了一種用于實施冗余緩存數據的彈性緩存的方法和/或設備,該冗余緩存數據可以(i)提供附加有效緩存空間,(ii)與常規(guī)技術相比,提供了對給定數量的緩存介質的更好緩存覆蓋,(iii)使用現有區(qū)域結構,(iv)使用現有管理基礎設施,(V)為緩存冗余實施各種RAID級,(vi)與常規(guī)技術相比,減少了對于給定數量的主機輸入/輸出活動的緩存寫入數量,(vii)增強了對于給定主機輸入/輸出活動的閃存緩沖器的壽命,和/或(viii)實施固態(tài)驅動器作為用于緩存數據的大緩沖器。
根據以下詳細描述和所附權利要求以及附圖,本發(fā)明的這些和其他目標、特征和優(yōu)勢將變得顯而易見,其中:圖1是系統的實例性實施的框圖;圖2是根據本發(fā)明優(yōu)選實施方式的系統中緩存電路的實例性實施的框圖;圖3是區(qū)域的實例性結構的示意圖;圖4是實例性緩存數據的示意圖;圖5是區(qū)域的幾個實例性組的示意圖;圖6是具有彈性鏡像緩存的實例性緩存組織的示意圖;圖7是用于服務寫入請求的實例性方法的流程圖8是用于服務讀取請求的實例性方法的流程圖;圖9是用于分配區(qū)域的實例性方法的流程圖;圖10是用于去分配區(qū)域的實例性方法的流程圖;以及圖11是示出在緩存電路中來自彈性鏡像臟寫(elastically mirroring dirtywrites)的空間益處的圖表示意圖。
具體實施例方式本發(fā)明的某些實施方式可彈性使用有效緩存空間,以提供寫入緩存空間的部分的冗余。彈性方式通常利用增加緩存空間整體有效部分來緩存讀取數據和/或未保護(例如,非冗余)寫入數據的智能管理技術來實施。此外,彈性方法可被模型化為示出其他益處,諸如聚集(例如,某些數據可以每個區(qū)域為基礎在單獨物理裝置上鏡像,使得若存儲和緩存通過多個節(jié)點(服務器)共享,則被鏡像區(qū)域的每個部分可駐留在單獨節(jié)點上)以及策略選擇(例如,某些存儲磁盤使用受保護的(或冗余的)緩存數據和基于選擇策略,某些不保護緩存數據)。 參照圖1,示出了系統90的實例性實施的框圖。該系統(或設備)90通常包括塊(或電路)92、塊(或電路)94、網絡(或總線)96、網絡(或總線)97和塊(或電路)100。電路94通常包括多個塊(或電路)98a-98n。電路100通常包括塊(或電路)102和塊(或電路)104。電路92-104可表示可被實施為硬件、軟件、硬件和軟件的結合或其他實施的模塊和/或塊。雙向信號(例如,DH)可經由網絡96在電路92與電路100之間交換。信號DH可被用于在電路92與電路100之間傳送數據(例如,讀取數據和/或寫入數據)、請求和狀態(tài)信息。雙向信號(例如,DB)可在電路102與電路104之間交換。信號DB可在電路102與電路104之間傳遞緩存數據和元數據。雙向信號(例如,DS)可經由網絡97在電路94與電路100之間交換。信號DS可在電路100與電路94之間傳送數據和關聯命令(例如,讀取命令,寫入命令和配置命令)。電路92可實施一個或多個主機電路(或服務器)和/或一個或多個軟件應用程序。電路92通常可操作以通過信號DH和DS經由電路100和網絡96從電路94讀取數據和/或向電路94寫入數據。電路92還可操作以通過信號DH沿相應地址信息(例如,邏輯塊地址(LBAs))向電路100提出請求(例如,讀取請求和寫入請求)。此外,電路92可操作以通過信號DH向電路100發(fā)出命令(例如,預取、刷新、配置)。信號DH還可由電路100控制以將來自電路100的狀態(tài)信息(例如,緩存命中(hit),緩存錯失)回傳到電路92。電路94可實施一個或多個存儲體(storage volume)。電路94響應寫入命令通??刹僮饕源鎯碾娐?00經由信號DS接收到的數據。電路94響應讀取命令還可操作以經由信號DS向電路100提供數據。存儲體可被實施為邏輯體、虛擬體和/或物理體。電路94可以是存儲區(qū)域網絡(SAN)、網絡附加存儲(NAS)和/或磁盤陣列子系統(DAS)架構的一部分。網絡96可實施一個或多個數字通信網絡和/或總線。網絡96通常可操作以提供電路92與電路100之間的通信。網絡96的實施可包括但不限于互聯網、以太網、光纖網絡、無線網絡、有線網絡、射頻通信網絡和/或底板總線中的一個或多個。網絡97可實施一個或多個數字通信網絡和/或總線。網絡97通常可操作以提供電路94與電路100之間的通信。網絡97的實施可包括但不限于互聯網、以太網、光纖網絡、無線網絡、有線網絡、射頻通信網絡和/或底板總線中的一個或多個。每個電路98a_98n可實施大容量存儲驅動器。在某些實施方式中,每個電路98a-98n可實施硬盤驅動器(例如,HDD)。電路98a_98n通常可操作以經由信號DS從電路100存儲數據和向電路100提供數據。電路98a-98n可被布置和操作為一個或多個存儲體。在某些實施方式中,電路98a-98n可被組織和操作為一個或多個冗余和獨立的磁盤(例如,RAID)配置。RAID 組織可包括但不限于 RAIDO、RAIDl、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID10、RAID53和/或RAID0+1的組織。可實施其他RAID組織級別以滿足特定應用程序的標準。此外,多個不同RAID組織可由電路98a-98n同時表示。電路100可實施緩存電路。電路100通??刹僮饕跃彺嬖陔娐?2與電路94之間被交換的數據。對于從電路92向 電路94移動的寫入數據,緩存可實施回寫(或后寫)策略。臟寫入數據可利用在多個介質之間傳播的冗余組織緩存到電路100,冗余組織和傳播可被配置為使得在單個介質失效導致失效介質中部分或全部的寫入數據變?yōu)椴豢稍L問和/或丟失之后,保持對臟寫入數據的訪問。電路100可實施位于電路92、電路94中或在中間點處的緩存。在某些實施方式中,電路100可被實施為一個或多個集成電路。電路102可實施多個緩沖器電路。電路102可操作以存儲在電路92與電路94之間傳送的緩存(或緩沖)數據。電路102還可操作以存儲與緩存數據相關聯的元數據。緩存數據可在區(qū)域中布置。每個區(qū)域可表示為特定數據文件或軟件程序保留的存儲空間的連續(xù)塊。元數據通常包括用于管理區(qū)域的信息。在某些實施方式中,電路102可整個被實施在電路100的內部(如圖所示)、整個在電路100的外部、部分在電路100的內部和外部、或跨多個節(jié)點(或服務器)而聚集。電路104可實施控制器裝置。電路104可操作以從電路92接收在電路94中存儲寫入數據的寫入請求,基于與寫入請求相關聯的冗余組織在電路102的多個緩沖器中分配多個區(qū)域,并在多個區(qū)域中存儲寫入數據。多個區(qū)域中的每個區(qū)域通常位于不同緩沖器中。響應寫入請求,多個區(qū)域可被動態(tài)鏈接在一起。響應從緩沖器向電路94復制寫入數據,電路104還可操作以解鏈多個區(qū)域中的至少一個。在某些實施方式中,電路104可被實施為一個或多個集成電路。參照圖2,示出了根據本發(fā)明優(yōu)選實施方式的電路100的實例性實施的框圖。電路102通常包括多個塊(或電路)106a-106n。電路104通常包括塊(或模塊)108、塊(或模塊)110和塊(或模塊)112。電路106a-106n可表示可被實施為硬件、軟件、硬件和軟件的結合或其他實施的模塊和/或塊。模塊108-112可被實施為可執(zhí)行控制電路104的固件(或軟件或程序指令或者代碼)。信號DH可通過接口 114由電路104發(fā)送和接收。信號DS可通過接口 116由電路104發(fā)送和接收。信號DB可被實施為多個信號(例如,DBa-DBn)0每個信號DBa-DBn通常建立電路104的接口 118a-118n與電路106a_106n的相應接口 120a_120n之間的通信。每個電路106a_106n可實施緩沖器電路。每個電路106a_106n可操作以存儲緩存數據和關聯元數據。在某些實施方式中,每個電路106a-106n可被實施為固態(tài)驅動器(例如,SSD)。固態(tài)驅動器的常見大小范圍可從I特字節(jié)(terabyte)到2特字節(jié)。在其他實施方式中,每個電路106a-106n可被實施為閃存驅動器。閃存的常見大小范圍可從I吉字節(jié)到32吉字節(jié)。在又一實施方式中,每個電路106a-106n可被實施為雙倍數據速率(例如,DDR)存儲器電路。DDR存儲器的常見大小范圍可從I吉字節(jié)到64吉字節(jié)??蓪嵤┢渌笮∫詽M足特定應用程序的標準。電路102中的電路106a-106n的數量可多于、等于或少于電路94中的電路98a-98n的數量。模塊108可實施區(qū)域控制器。模塊108可操作以在電路102中分配和去分配用于服務從電路92接收到的請求(例如,讀取請求和/或寫入請求)的一個或多個區(qū)域。模塊108還可操作以改變在與電路102中的每個區(qū)域相關聯的元數據中的參數來創(chuàng)建分組空間(例如,讀取空間和/或寫入空間)。分組可通過將區(qū)域鏈接在一起以形成可在冗余保護組織中容納緩存數據的更大存儲器空間(或超級區(qū)域)來實現。將區(qū)域分配(或鏈接)到分組空間通常包括改變關聯區(qū)域中的每個參數以指向分組中的下一區(qū)域。指針可在從一個或多個初始區(qū)域到一個或多個最終區(qū)域的鏈路中繼續(xù)。最終區(qū)域的參數可指回初始區(qū)域以閉合鏈接。模塊108還可改變元數據中的參數以將分組的空間向后分解成單獨區(qū)域和/或更小分組空間。在緩存數據被緩沖在非冗余組織中的情況下,模塊108可將一個或多個區(qū)域的參數改變?yōu)榉峙?空)值,以指示當前該區(qū)域被用于緩沖緩存數據。當區(qū)域不再用于緩沖緩存數據時,模塊108可將關聯參數改變 為未分配(或未使用)值。模塊110可實施緩存控制器。模塊110可操作以執(zhí)行標準緩存操作和標準緩存策略。緩存操作通常包括但不限于將數據寫入電路102,從電路102讀取緩存(或緩沖)數據,將元數據寫入電路102,從電路102讀取元數據,搜索緩存數據的標簽,當發(fā)現匹配標簽時指示緩存命中,當發(fā)現不匹配標簽時指示緩存錯失,跟蹤電路102中的臟寫入數據,將臟寫入數據刷新(例如,復制)到電路94,跟蹤有效和無效緩存行,跟蹤有效和無效緩存字等。模塊110還可操作以實施關于緩存數據的保留和去除的一個或多個緩存策略。緩存策略可包括但不限于用于臟寫入數據的回寫模式,用于某些寫入數據類型的連續(xù)寫入模式,某些寫入數據類型的冗余(或保護)緩沖,其他寫入數據類型的非冗余(或非保護)緩沖,用于臟寫入數據的一個或多個刷新策略,清除電路102內的空間的一個或多個去除策略等。模塊112可實施RAID控制器。模塊112通??刹僮饕曰诜峙浣o數據的RAID策略在各種RAID配置中組織(或布置或者格式化)緩沖在電路102和存儲在電路94中的數據。當應保護的寫入數據從電路92接收時,模塊112可將寫入數據重新安排到RAID組織間的給定組織中。重新安排的寫入數據可基于寫入數據的大小(例如,寫入數據跨過多少區(qū)域邊界)和對應于寫入請求的RAID組織(例如,RAID0、RAID3、RAID5等)隨后被存儲在兩個或更多個電路106a-106n中??蓪嵤┢渌麛祿Wo形式以滿足特定應用程序的標準。當受保護的緩存數據從電路102向電路92提供時,模塊112可操作以檢查數據錯誤以及如果可用則修正錯誤。若數據已被條形化(stripe),則模塊112還可在將被請求數據提供給電路92之前,將柄(stipe)收集回相應的塊。可在將數據保持在RAID組織中的同時執(zhí)行RAID保護的寫入數據從電路102向電路94的傳送。例如,若數據在被鏡像RAIDl組織中,則數據可經由信號DB和DS從兩個電路106a-106n (例如,106a和106b)被傳送到相應的兩個電路98a_98n (例如,98f和98g)。在另一實例中,若數據在利用帶有兩個條區(qū)域的奇偶區(qū)域的RAID3組織中,則數據可經由網絡97從三個電路106a-106n (例如,106a、106b和106c)被傳送到相應的三個電路98a_98n(例如,98d、98g 和 98k)。某些RAID保護存儲數據從電路94向電路102的傳送(例如,讀取數據)可在從電路94到模塊112的RAID組織和從模塊112到電路102的非冗余組織中執(zhí)行。例如,存儲在RAID3配置中的數據可從電路94被復制到模塊112作為三個并行傳送(例如,兩個區(qū)域和奇偶區(qū)域)。模塊112可與正常一樣執(zhí)行錯誤檢查和錯誤糾正,并將被存儲數據的單個非冗余副本傳送到電路102。參照圖3,示出了區(qū)域140的實例性結構的示意圖。在電路102中的緩存數據和在電路94中的存儲數據可以區(qū)域(或窗口)的形式組織。每個區(qū)域通常表示數據連續(xù)塊的集合,該數據連續(xù)塊作為用于分配、去分配、跟蹤和管理數據的單個單元來處理。實例性區(qū)域140通常包括多個數據線142a-142n。每個數據線142a_142n可包括多個數據塊144a-144n。每個數據塊144a_144n通常包括多個字節(jié)、字或其他數據單元。此外,每個數據塊144a-144n可具有相應邏輯塊地址(例如,LBAA至LBAN)??蓪嵤┢渌麉^(qū)域組織以滿足特定應用程序的標準。參照圖4,示出了實例性緩存數據的示意圖。該實例示出了用于冗余的RAIDl組織。為簡化起見,僅示出了電路106a-106n中的兩個電路(例如,106a-106b)。每個電路106a-106b可被組織為一個或多個區(qū)域和相應元數據。某些區(qū)域(例如,寫入區(qū)域)可承載未交給電路94的臟寫入數據。其他區(qū)域(例如,讀取區(qū)域)可基于某些基本緩存標準承載來自電路94的緩存數據。在電路106a或106b失效的情況下,承載臟寫入數據的寫入區(qū)域可利用冗余保護來緩沖。承載緩存讀取的所有其他區(qū)域可在沒有冗余保護的情況下緩沖,因為在電路106a或106b失效時丟失的 緩存數據可在失效發(fā)生后從電路94向工作電路106a和106b重新填充。參照圖5,示出了在電路102內的幾個實例性區(qū)域組的示意圖。在所示實例中,電路102可包括電路106a-106d。可實施更少或更多電路106a_106n以滿足特定應用程序的標準。如圖所示,多個區(qū)域組、多個組類型(例如,RAIDU RAID3、RAID4、RAID5、RAID10、RAID0+1等)和/或多個未分組區(qū)域(例如,讀取和寫入區(qū)域)可同時存在于電路102中。每個區(qū)域和相應元數據可利用現有方法(或技術)管理。具體地,每個區(qū)域可具有用于跟蹤和識別區(qū)域的唯一區(qū)域識別碼。對于每個主機輸入/輸出請求,LBA可被映射到區(qū)域以定位到正確區(qū)域,從而服務主機請求。參數(或字段)可被添加到每個區(qū)域的元數據以跟蹤用于冗余保護的另一區(qū)域識別碼。當在單個區(qū)域內的寫入數據由電路100從電路92接收時,兩個或更多個區(qū)域可被分配給一組。相應參數可被更新以在環(huán)路中指向(或鏈接)彼此。將區(qū)域分配給組可被配置為使得單個組中的每個區(qū)域被分配在不同電路106a-106n中。在寫入數據跨多個區(qū)域和/或橫跨區(qū)域邊界的某些實施方式中,兩個或更多個區(qū)域的集合可被處理為大區(qū)域。兩個或更多個大區(qū)域可被分配給一組,且相應參數可被更新以在環(huán)路中指向彼此。大區(qū)域中的每個集合可在不同電路106a-106n中分配。例如,RAIDl組150通常包括電路106b中兩個區(qū)域的集合和電路106c中兩個區(qū)域的另一集合。電路106b中的兩個區(qū)域的每個參數可指向電路106c中的相應區(qū)域。類似地,電路106c中的兩個區(qū)域的每個參數可指向電路106b中的相應區(qū)域。在寫入數據跨多個區(qū)域和/或橫跨區(qū)域邊界的其他實施方式中,鄰接區(qū)域可位于不同電路106a-106n中且被每個冗余組織鏈接。例如,在RAID3組152中的數據可具有緩沖在電路106b中的初始區(qū)域,緩沖在電路106c中的下一區(qū)域和緩沖在電路106d中的奇偶區(qū)域?;诰彺娌呗?,某些寫入數據可被緩沖在非冗余組織154內的電路102中。在由于電路102失效而導致數據丟失的情況下,這種未保護寫入數據可由電路92取代。未保護寫入數據還可具有適于潛在數據丟失的低重要性。對于由于讀取失誤而執(zhí)行的每個緩存填充操作,可根據要重新填充電路102中的數據的位置和數量,一個或多個區(qū)域的集合可被分配給一個或多個電路106a-106n。被分配集合中的每個參數可被改變(或程序化)為指示相應區(qū)域被分配到非冗余組織 中的值(例如,空值或分配值)。在區(qū)域組中的臟寫入數據被刷新到電路94之后,組中的區(qū)域可不被分配以獲得有效空間用于進一步分配??赏ㄟ^更新相鄰區(qū)域的參數而不分配區(qū)域,以將未分配區(qū)域從組中解鏈。未分配區(qū)域可由用于保護寫入數據的冗余組織來確定。例如,由于兩個被鏡像區(qū)域包括所有寫入數據,所以具有RAIDl組織的區(qū)域組可去分配被鏡像區(qū)域中的任一個。具有RAID3組織的區(qū)域組可解鏈被分配以緩沖奇偶數據的區(qū)域。緩沖實際數據的剩余區(qū)域可被保留在組中。當電路106a_106n失效時,標準恢復技術可被用于服務來自幸存區(qū)域的主機請求。例如,在失效電路106a-106n (例如,電路106a)中丟失塊的具有RAID5組織的區(qū)域組156可使用幸存塊和在幸存電路106a-106n (例如,106b和106d)中的奇偶塊來重構丟失的塊。重構的塊可隨后用于滿足讀取/寫入請求。參照圖6,示出了帶有彈性鏡像緩存的實例性緩存組織160的示意圖。該實例通常示出了利用兩個電路106a-106n (例如,106a和106b)的鏡像組織。區(qū)域I和區(qū)域10兩者可被分配給共用冗余寫入空間162。該分配可通過改變以下兩者來實現,即(i)與指向區(qū)域10的識別碼的區(qū)域I相關聯的參數,以及(ii)與指向區(qū)域I的識別碼的區(qū)域10相關聯的參數。緩沖在電路106a中的區(qū)域4可通過將關聯參數改變?yōu)榭罩?或分配值)而被分配給讀取空間164。緩沖在電路106b中的另一區(qū)域8可通過將關聯參數更新為空值(或分配值)而被分配給另一讀取空間166。其他區(qū)域(例如,帶有附圖標記168的區(qū)域12)可不駐留數據,且因此相應參數可被設置為未分配(或未使用)值。用于位于電路106a中的區(qū)域(例如,區(qū)域1-6)的元數據可被緩沖在元數據空間170中。用于位于電路106b中的區(qū)域(例如,區(qū)域7-12)的元數據可被緩沖在元數據空間172中。參照圖7,示出了用于服務寫入請求的實例性方法180的流程圖。方法(或過程)180可在電路100中實施。方法180通常包括步驟(或狀態(tài))182、步驟(或狀態(tài))184、步驟(或狀態(tài))186、步驟(或狀態(tài))188、步驟(或狀態(tài))190以及步驟(或狀態(tài))192。步驟182-192可表示可被實施為硬件、軟件、硬件和軟件的結合或其他實施的模塊和/或塊。在步驟182中,電路104可經由信號DH從電路92接收寫入請求。對緩沖在電路102中的緩存數據的搜索可在步驟184中由電路104 (例如,模塊110)執(zhí)行,以確定用于寫入數據的適當區(qū)域是否已存在于電路102中。若適當區(qū)域在電路102中不可用(例如,緩存錯失),則電路104 (例如,模塊108)可向電路106a-106n分配電路102中未使用的區(qū)域,以服務步驟186中的寫入請求。
一旦區(qū)域組可用于服務寫入請求,則模塊110可在步驟188中從電路94復制對應于寫入區(qū)域的存儲數據。若從電路94接收到的存儲數據已不在受保護組織(或格式)中,則電路104 (例如,模塊112)可將數據安排到受保護組織中,作為步驟188的一部分。在步驟188中,數據可由模塊110連續(xù)緩沖到合適的電路106a-106n。在步驟190中,模塊110和112可由受保護組織來組織從電路92接收到的寫入數據,并將該寫入數據存儲到電路102中。由于寫入數據尚未被復制回電路94中(例如,回寫策略),所以模塊110可更新相應元數據以標記新寫入的數據為臟寫入數據。若在電路102中發(fā)現寫入數據(例如,緩存命中),則模塊108可將附加區(qū)域分配和鏈接到導致緩存命中的現有一個或多個區(qū)域。此后,在步驟188中,區(qū)域組可以與已發(fā)生緩存錯失時的相同方式從電路94填充。在步驟190中,新寫入數據可由模塊110添加到電路106a_106n。參照圖8,示出了用于服務讀取請求的實例性方法200的流程圖。方法(或過程)200可在電路100中實施。方法200通常包括狀態(tài)(或步驟)202、狀態(tài)(或步驟)204、狀態(tài)(或步驟)206、狀態(tài)(或步驟)208和狀態(tài)(或步驟)210。步驟202-210可表示可被實施為硬件、軟件、硬件和軟件的結合或其 他實施的模塊和/或塊。在步驟202中,電路104可經由信號DH從電路92接收讀取請求。在步驟204中,對緩沖在電路102中的緩存數據的搜索可由電路104 (例如,模塊110)來執(zhí)行。該搜索可確定用于讀取數據的合適區(qū)域是否已存在于電路102中。若合適區(qū)域在電路102中不可用(例如,緩存錯失),則電路104 (例如,模塊108)可在電路106a-106n中分配一個或多個未使用區(qū)域,以服務步驟206中的讀取請求。—旦所分配區(qū)域可用于服務讀取請求,則模塊110可在步驟208中從電路94復制對應于讀取區(qū)域的存儲數據。在步驟208中,接收數據可由模塊110連續(xù)緩沖到合適電路106a-106n。在步驟210中,模塊110可將被請求讀取數據的副本從該區(qū)域傳送到電路92。在步驟204中,若在電路102中發(fā)現讀取數據(例如,緩存命中),則方法200可繼續(xù)步驟210,其中,電路104將被請求讀取數據傳送到電路92。參照圖9,示出了用于分配區(qū)域的實例性方法220的流程圖。方法(或過程)220可在電路100中實施。方法220通常包括步驟(或狀態(tài))222、步驟(或狀態(tài))224、步驟(或狀態(tài))226、步驟(或狀態(tài))228、步驟(或狀態(tài))230、步驟(或狀態(tài))232、步驟(或狀態(tài))234以及步驟(或狀態(tài))236。步驟222-236可表示可被實施為硬件、軟件、硬件和軟件的結合或其他實施的模塊和/或塊。在步驟222中,電路(例如,模塊108)可確定應被分配以服務請求的多個區(qū)域。區(qū)域的數量可基于被緩沖的數據量和用于數據的組織類型(例如,冗余保護或非冗余)。若在步驟224中確定組織類型為非冗余,則方法220可繼續(xù)步驟226。電路104(例如,模塊108)可基于與從電路92接收到的讀取請求相關聯的非冗余組織來分配一個或多個區(qū)域。在步驟226中,該分配通常包括改變從未分配值到分配值(或空值)的區(qū)域的相應參數。所產生的一個或多個區(qū)域(例如,圖6中區(qū)域164)通常準備填充來自電路94的數據。若在步驟224中確定組織類型為冗余,則方法220可繼續(xù)步驟228。在步驟228-236期間,多個區(qū)域可通過改變對應于多個區(qū)域中的每一個的相應參數以指向多個區(qū)域中的另一區(qū)域而動態(tài)鏈接在一起。在步驟228中,模塊108可初始化計數器(例如,N=l)。在步驟230中,初始分配區(qū)域的相應參數可被更新(或改變)以指向下一被分配區(qū)域。計數器在步驟232中可由模塊108更新。對更多區(qū)域的檢查可在步驟234中執(zhí)行。若更多區(qū)域應被鏈接到組中,則模塊108可更新下一區(qū)域的參數以在步驟230中指向其后區(qū)域??衫^續(xù)從步驟230到234的循環(huán),直到所有區(qū)域已被添加到組中。在步驟236中,模塊108可通過更新最后區(qū)域的參數以指回初始區(qū)域來閉合鏈接。所產生的區(qū)域組(例如,圖6中的組162)可準備填充數據。參照圖10,示出了用于去分配區(qū)域的實例性方法240的流程圖。方法(或過程)240可在電路100中實施。方法220通常包括步驟(或狀態(tài))242、步驟(或狀態(tài))244、步驟(或狀態(tài))246以及步驟(或狀態(tài))248。步驟242-248可表示可被實施為硬件、軟件、硬件和軟件的結合或其他實施的模塊和/或塊。在步驟242中,電路104 (例如,模塊110)可將臟寫入數據從電路102刷新到電路94中。在某些情況下,寫入數據可從電路102讀取到電路104、被糾錯、被恢復到原始形式、被布置到RAID配置中、以及從電路104被傳送到電路94。在其他情況下,臟寫入數據可被復制為類似從電路106a-106n中的每一個被復制到相應電路98a-98n。例如,當區(qū)域被組織為兩個或更多個數據塊和奇偶塊時,每個數據塊和奇偶塊可無變化地從適當電路106a-106n經由信號DB和DS復制到相應電路98a-98n。 在步驟244中,電路104 (例如,模塊108)可確定哪個區(qū)域可從剛刷新的區(qū)域組中被解鏈和不分配。例如,若寫入數據由鏡像(例如,RAIDl組織)保護,則由于兩個區(qū)域包括所有寫入數據,所以任一區(qū)域可被解鏈和不分配。在另一實例中,若寫入數據以RAID4格式被保護,則緩沖奇偶數據的區(qū)域可被解鏈和不分配。在步驟246中,模塊108可通過改變相鄰區(qū)域中的相應參數以旁路所選擇區(qū)域來解鏈所選擇區(qū)域。在步驟248中,模塊108可將所選擇區(qū)域的參數改變?yōu)槲捶峙渲?。參照圖11,示出了說明來自電路102中的彈性鏡像臟寫的空間益處的圖表260的示意圖。沿垂直軸的空間益處指示可用于緩沖非鏡像數據的總區(qū)域的百分比。如圖表260所示,空間益處可增加為使更少的區(qū)域表示數據的寫入部分。當所有區(qū)域被鏡像以保護臟寫入數據時(例如,100%),可實現0百分比空間節(jié)省。在區(qū)域的更低百分比被用于緩沖鏡像數據時,空間益處動態(tài)(或彈性)增加。當沒有區(qū)域被用于緩沖鏡像數據時(例如,0%),正常將被用于保持鏡像數據的電路106a-106n中的50%可被替換以用于保持非臟寫入數據和/或讀取數據。根據被緩沖到電路100中的數據的讀/寫混合,可通過區(qū)域的彈性分組和取消分組來釋放附加緩存空間。對于緩存介質(例如,電路106a-106n)中的給定投入,自由緩存空間中的動態(tài)變化通常提供了更好的緩存覆蓋。因此,具有擴展頻繁訪問數據的服務器(例如,電路92)可利用附加有效緩存空間。本發(fā)明的某些實施方式一般利用在緩存裝置中正常發(fā)現的大多數區(qū)域和元數據管理架構。用于彈性分配和不分配區(qū)域的附加參數可構建在現有架構的頂端。用于創(chuàng)建、修改和破壞區(qū)域組的技術可從鏡像保護(例如,RAIDl級別)擴展到其他RAID級別。此外,對于給定量的主機輸入/輸出數據,由于冗余可限制臟數據,所以該技術通常減少向電路102中的寫入的數量。在電路106a-106n實施有閃存時,對于給定主機輸入/輸出活動,寫入數量的減少可提聞閃存介質的壽命。
由圖1-圖11的示意圖執(zhí)行的功能可利用根據本說明書的教導程序化的常規(guī)通用處理器、數字計算機、微處理器、微控制器、RISC (精簡指令集計算機)處理器、CISC (復雜指令集計算機)處理器、SMD (單指令多數據)處理器、信號處理器、中央處理單元(CPU)、算術邏輯單元(ALU)、視頻數字信號處理器(VDSP)和/或類似計算機器中的一個或多個來實施,這對相關領域技術人員將是顯而易見的。熟練程序員可基于本公開的教導很容易地準備適當軟件、固件、代碼、例程、指令、操作碼、微代碼和/或程序模塊,這對相關領域技術人員也將是顯而易見的。來自一個或幾個介質中的軟件通常由機器實施的一個或多個處理器執(zhí)行。本發(fā)明還可通過ASIC (專用集成電路)、平臺ASIC、FPGA (現場可編程門陣列)、PLD(可編程邏輯器件)、CPLD (復雜可編程邏輯器件)、門海、RFIC(射頻集成電路)、ASSP (專用標準產品)、一個或多個單片集成電路、布置成倒裝芯片模塊和/或多芯片模塊的一個或多個芯片或管芯的制備來實施,或者通過互聯常規(guī)部件電路的適當網絡來實施,如本文所述,其修改對于本領域技術人員將是顯而易見的。因此,本發(fā)明還可包括計算機產品,其可以是存儲介質或介質和/或傳輸介質或包括指令的介質,該指令可被用于對機器編程以執(zhí)行根據本發(fā)明的一個或多個過程或方法。由機器執(zhí)行包括在計算機產品中的指令以及外圍線路的操作,可將輸入數據轉換成存儲介質上的一個或多個文件和/或表示 物理對象或物質的一個或多個輸出信號,諸如音頻和/或視頻描述。存儲介質可包括但不限于任何類型的盤,包括軟盤、硬盤驅動器、磁盤、光盤、CD-ROM、DVD和磁光盤以及諸如ROM (只讀存儲器)、RAM (隨機存取存儲器)、EPROM (可擦寫可編程ROM)、EEPROM (電可擦寫可編程ROM)、UVPROM (紫外可擦寫可編程ROM)、閃存、磁卡、光卡和/或適于存儲電子指令的任何介質類型的電路。本發(fā)明的元件可形成一個或多個裝置、單元、部件、系統、機器和/或設備的一部分或全部。裝置可包括但不限于服務器、工作站、存儲陣列控制器、存儲系統、個人計算機、膝上型計算機、筆記本電腦、掌上電腦、個人數字終端、便攜式電子裝置、電池供電裝置、機頂盒、編碼器、解碼器、代碼轉換器、壓縮器、解壓縮器、預處理器、后處理器、發(fā)送器、接收器、收發(fā)器、密碼電路、蜂窩電話、數碼相機、定位和/或導航系統、醫(yī)療設備、頭戴式顯示器、無線裝置、錄音、音頻存儲和/或音頻回放裝置、視頻記錄、視頻存儲和/或視頻回放裝置、游戲平臺、外設和/或多芯片模塊。相關領域技術人員將理解,本發(fā)明的元件可以其他器件類型來實施以滿足特定應用的標準。如本文所使用,術語“同時”是指描述共享某些共用時間段的事件,但該術語并非限于在相同時間點開始、在相同時間點結束的事件或具有相同時間段的事件。盡管已參照其優(yōu)選實施方式示出并描述了本發(fā)明,但本領域技術人員將理解,在不偏離本發(fā)明范圍的情況下,可做出形式和細節(jié)上的各種變更。
權利要求
1.一種用于冗余緩存數據的彈性緩存的設備,包括: 多個緩沖器;以及 電路,被配置為(i)從主機接收寫入請求以在存儲體中存儲寫入數據,(ii)基于與所述寫入請求相關聯的冗余組織,在所述緩沖器中分配多個區(qū)域,以及(iii)在所述多個區(qū)域中存儲所述寫入數據,其中,(a)所述多個區(qū)域中的每一個被分配在所述緩沖器中的不同一個緩沖器內,以及(b)響應所述寫入請求,所述多個區(qū)域被動態(tài)鏈接在一起。
2.根據權利要求1所述的設備,其中,所述電路還被配置為響應從所述緩沖器向所述存儲體復制所述寫入數據,解鏈所述多個區(qū)域中的至少一個。
3.根據權利要求1所述的設備,其中,所述多個區(qū)域通過改變與所述多個區(qū)域中的每一個相對應的相應參數來動態(tài)鏈接。
4.根據權利要求3所述的設備,其中,所述相應參數中的每一個被改變?yōu)橹赶蛩龆鄠€區(qū)域中的另一區(qū)域。
5.根據權利要求1所述的設備,其中,所述電路還被配置為基于與從所述主機接收到的另一請求相關聯的非冗余組織,分配一個或多個區(qū)域。
6.根據權利要求1所述的設備,其中,(i)所述電路還被配置為基于與從所述主機接收到的另一寫入請求相關聯的另一冗余組織,分配另一多個區(qū)域,以及(ii)所述另一冗余組織不同于所述冗余組織。
7.根據權利要求1所述的設備,其中,所述冗余組織包括以獨立盤的冗余陣列使用的組織。
8.根據權利要求1所述的設備,其中,所述設備被實施為一個或多個集成電路。
9.一種用于冗余緩存數據的彈性緩存的方法,包括以下步驟: (A)從主機接收對設備的寫入請求以在存儲體中存儲寫入數據, (B)基于與所述寫入請求相關聯的冗余組織,在多個緩沖器中分配多個區(qū)域;以及 (C)在所述多個區(qū)域中存儲所述寫入數據,其中,(i)所述多個區(qū)域中的每一個位于所述緩沖器中的不同一個緩沖器內,以及(ii)響應所述寫入請求,所述多個區(qū)域被動態(tài)鏈接在一起。
10.根據權利要求9所述的方法,還包括以下步驟: 響應從所述緩沖器向所述存儲體復制所述寫入數據,解鏈所述多個區(qū)域中的至少一個。
11.根據權利要求9所述的方法,其中,所述多個區(qū)域通過改變與所述多個區(qū)域中的每一個相對應的相應參數來動態(tài)鏈接。
12.根據權利要求11所述的方法,其中,所述相應參數中的每一個被改變?yōu)橹赶蛩龆鄠€區(qū)域中的另一區(qū)域。
13.根據權利要求9所述的方法,還包括以下步驟: 基于與從所述主機接收到的另一請求相關聯的非冗余組織,分配一個或多個區(qū)域。
14.根據權利要求9所述的方法,還包括以下步驟: 基于與從所述主機接收到的另一寫入請求相關聯的另一冗余組織,分配另一多個區(qū)域,其中,所述另一冗余組織不同于所述冗余組織。
15.根據權利要求9所述的方法,其中,所述冗余組織包括以獨立盤的冗余陣列使用的組織。
全文摘要
本發(fā)明涉及冗余緩存數據的彈性緩存,具體提供了一種用于冗余緩存數據的彈性緩存的設備。該設備可具有多個緩沖器和電路。該電路可被配置為(i)從主機接收寫入請求以在存儲體中存儲寫入數據,(ii)基于與寫入請求相關聯的冗余組織,在緩沖器中分配多個區(qū)域,以及(iii)在多個區(qū)域中存儲寫入數據,其中,(a)多個區(qū)域中的每一個位于緩沖器中的不同一個內,以及(b)響應寫入請求,多個區(qū)域被動態(tài)鏈接在一起。
文檔編號G06F12/08GK103226519SQ201310039200
公開日2013年7月31日 申請日期2013年1月31日 優(yōu)先權日2012年1月31日
發(fā)明者馬克·艾施, 阿南特·巴德丁尼, 加里·J·斯梅爾頓 申請人:Lsi公司