專利名稱:高速緩存器管理的制作方法
技術(shù)領(lǐng)域:
本公開涉及高速緩存器管理領(lǐng)域。
背景技術(shù):
對(duì)存儲(chǔ)在高速緩沖存儲(chǔ)器中的數(shù)據(jù)的存取速度可以顯著地大于對(duì)存儲(chǔ)在磁盤存儲(chǔ)器中的數(shù)據(jù)的存取速度。然而,就每一存儲(chǔ)單元來(lái)說(shuō),高速緩沖存儲(chǔ)器可能比磁盤存儲(chǔ)器要更加昂貴。因此,在包含高速緩沖存儲(chǔ)器和磁盤存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)系統(tǒng)中,高速緩沖存儲(chǔ)器的存儲(chǔ)容量可能小于磁盤存儲(chǔ)器的存儲(chǔ)容量。當(dāng)數(shù)據(jù)存儲(chǔ)系統(tǒng)接收了一個(gè)用于存取在所述系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的請(qǐng)求時(shí),系統(tǒng)可以確定是否能夠使用在高速緩沖存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)來(lái)滿足所述請(qǐng)求。如果能夠用在高速緩沖存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)滿足所述請(qǐng)求,則系統(tǒng)可以嘗試使用在高速緩沖存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)來(lái)滿足所述請(qǐng)求。相反地,如果使用在高速緩沖存儲(chǔ)器中的數(shù)據(jù)不能滿足所述請(qǐng)求,則系統(tǒng)可以使用在磁盤存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)來(lái)滿足所述請(qǐng)求。可以使用一種高速緩存器管理技術(shù)來(lái)管理將數(shù)據(jù)加載到高速緩沖存儲(chǔ)器,以及降級(jí)(destage)來(lái)自高速緩沖存儲(chǔ)器的數(shù)據(jù)。使用的高速緩存器管理技術(shù)可以對(duì)系統(tǒng)的I/O請(qǐng)求處理速度具有重要的影響。
隨著以下詳細(xì)說(shuō)明的繼續(xù)進(jìn)行,并且參考附圖,要求保護(hù)的主題的實(shí)施例的特征和優(yōu)點(diǎn)將會(huì)變得明顯,其中相同的數(shù)字描述了相同的部件,而且其中圖1是一個(gè)說(shuō)明了一個(gè)系統(tǒng)實(shí)施例的圖。
圖2是依據(jù)一個(gè)實(shí)施例的如下圖,所述圖說(shuō)明可以被存儲(chǔ)在高速緩沖存儲(chǔ)器中的高速緩存器管理信息和用戶數(shù)據(jù)。
圖3是依據(jù)一個(gè)實(shí)施例的如下圖,所述圖說(shuō)明可以被存儲(chǔ)在海量存儲(chǔ)器中的數(shù)據(jù)卷和數(shù)據(jù)段。
圖4是依據(jù)一個(gè)實(shí)施例的如下流程圖,所述流程圖說(shuō)明可以在圖1的系統(tǒng)中被執(zhí)行的操作。
圖5是依據(jù)一個(gè)實(shí)施例的如下圖,所述圖說(shuō)明可以被包括在高速緩沖存儲(chǔ)器中的鏈表中的節(jié)點(diǎn)中的數(shù)據(jù)結(jié)構(gòu)。
圖6是依據(jù)一個(gè)實(shí)施例的如下,所述圖說(shuō)明可以被包括在高速緩沖存儲(chǔ)器中的鏈表。
具體實(shí)施例方式
盡管將參考說(shuō)明性的實(shí)施例繼續(xù)進(jìn)行下列詳細(xì)說(shuō)明,但是對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)它的許多替換、修改、和變化將會(huì)是顯而易見(jiàn)的。因此,目的在于所要求保護(hù)的主題應(yīng)該被廣泛地理解,并且僅僅由附加權(quán)利要求中所闡述的加以定義。
圖1說(shuō)明了要求保護(hù)的主題的一個(gè)系統(tǒng)實(shí)施例100。系統(tǒng)100可以包含被耦合到一個(gè)芯片組14的主處理器12。主處理器12可以包含例如在市場(chǎng)上可從本主題申請(qǐng)的受讓人那里買得到的IntelPentiumIII或者IV微處理器。當(dāng)然,可選地,主處理器12可以包含其它類型的微處理器,諸如像從除本主題申請(qǐng)的受讓人以外的來(lái)源中制造和/或在市場(chǎng)上買得到的微處理器,而沒(méi)有背離這個(gè)實(shí)施例。
芯片組14可以包含如下主機(jī)橋接器/集線器系統(tǒng),所述主機(jī)橋接器/集線器系統(tǒng)可以將主處理器12、系統(tǒng)存儲(chǔ)器21、和用戶接口系統(tǒng)16相互耦合起來(lái),并且可以耦合到總線系統(tǒng)22。芯片組14還可以包含如下I/O橋接器/集線器系統(tǒng)(未顯示),所述I/O橋接器/集線器系統(tǒng)可以把主機(jī)橋接器/總線系統(tǒng)耦合到總線22。芯片組14可以包含集成電路芯片,諸如在市場(chǎng)上可從本主題申請(qǐng)的受讓人那里買得到的集成電路芯片組中選擇出來(lái)的那些(例如,圖形存儲(chǔ)器和I/O控制器集線器芯片組),但是也可以或可選地使用其它集成電路芯片,而沒(méi)有背離這個(gè)實(shí)施例。另外,芯片組14可以包含如下中斷控制器(未顯示),所述中斷控制器可以經(jīng)由一條或多條中斷信號(hào)線(未顯示)耦合到其它組件,諸如像I/O控制器電路卡20,此時(shí)電路卡20被插入到電路卡總線擴(kuò)充槽30中。這個(gè)中斷控制器可以處理如下中斷,所述中斷可以由所述中斷控制器從系統(tǒng)100中的其它組件經(jīng)由這些中斷信號(hào)線加以接收。
在此描述的、在卡20內(nèi)中所包含的操作電路42未必要被包括在卡20內(nèi),但是相反,在沒(méi)有背離這個(gè)實(shí)施例的情況下,它可以被包含在其它結(jié)構(gòu)、系統(tǒng)、和/或設(shè)備中,所述其他結(jié)構(gòu)、系統(tǒng)、和/或設(shè)備例如可以被包含在母板32中,耦合到總線22,并且與在系統(tǒng)100中的其它組件交換數(shù)據(jù)和/或命令。用戶接口系統(tǒng)16可以包含例如鍵盤、指示設(shè)備、和顯示系統(tǒng),它們可允許人類用戶向系統(tǒng)100輸入命令,并且監(jiān)控系統(tǒng)100的操作。
總線22可以包含如下總線(以下被稱為“PCI總線”),所述總線遵循可從美國(guó)俄勒岡州(Oregon)波特蘭(Portland)的PCI Special Interest Group中獲得的1998年12月18日的Peripheral Component Interconnect(PCI)LocalBus Specification 2.2修訂版??蛇x地,總線22可以改為包含如下總線(以下稱為“PCI-X總線”),所述總線遵循可從上述的美國(guó)俄勒岡州波特蘭的PCISpecial Interest Group中獲得的2000年7月24日的PCI-X Specification 1.0a修訂版。此外,可選地,總線22可以包含其它類型和配置的總線系統(tǒng),而沒(méi)有背離這個(gè)實(shí)施例。
I/O控制器卡20可以被耦合到一組一個(gè)或多個(gè)磁盤、光盤、固態(tài)、和/或半導(dǎo)體海量存儲(chǔ)器設(shè)備(在下文中統(tǒng)稱為或單稱為“海量存儲(chǔ)器28”),并且控制它們的操作。在這個(gè)實(shí)施例中,海量存儲(chǔ)器28可以包含例如一個(gè)或多個(gè)廉價(jià)磁盤冗余陣列(RAID)海量存儲(chǔ)器設(shè)備29。
處理器12、系統(tǒng)存儲(chǔ)器21、芯片組14、PCI總線22、和電路卡插槽30可以被包含在單個(gè)電路板,諸如系統(tǒng)母板32中。海量存儲(chǔ)器28可以被包含在一個(gè)或多個(gè)相應(yīng)的如下外殼中,所述外殼可以與其中封裝了母板32和包含在母板32中的組件的外殼相獨(dú)立??蛇x地,卡20可以被包含在一個(gè)可以包含海量存儲(chǔ)器28的外殼中。
根據(jù)海量存儲(chǔ)器28的特定配置和操作特性,I/O控制器卡20可以經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)通信鏈路或介質(zhì)44耦合到海量存儲(chǔ)器28???0可以使用各種不同通信協(xié)議中的任何一種通信協(xié)議,經(jīng)由鏈路44與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,所述不同的通信協(xié)議例如是小型計(jì)算機(jī)系統(tǒng)接口(Small Computer SystemsInterface,SCSI)、光纖信道(Fibre Channel,F(xiàn)C)、以太網(wǎng)(Ethernet)、串行先進(jìn)技術(shù)附件(Serial Advanced Technology Attachment,S-ATA)、或傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)。當(dāng)然,可選地,I/O控制器卡20可以使用其它通信協(xié)議與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,而沒(méi)有背離要求保護(hù)的主題的這個(gè)實(shí)施例。
依據(jù)這個(gè)實(shí)施例,可由控制器卡20使用來(lái)與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令的SCSI協(xié)議可以遵循或是兼容如下接口/協(xié)議,所述接口/協(xié)議描述在American National Standards Institute(美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì),ANSI)SmallComputer Systems Interface-2(小型計(jì)算機(jī)系統(tǒng)接口-2,SCSI-2)ANSIX3.131-1994 Specification中。如果FC協(xié)議被控制器卡20使用來(lái)與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,則它可以遵循或是兼容于如下接口/協(xié)議,所述接口/協(xié)議描述在ANSI Standard Fibre Channel(FC)Physical and SignalingInterface-3 X3.3031998 Specification中??蛇x地,如果Ethernet協(xié)議被控制器卡20使用來(lái)與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,則它可以遵循或是兼容于如下協(xié)議,所述協(xié)議描述在2000年10月20日公布的Institute ofElectrical and Electronics Engineers公司(IEEE)Std.802.3 2000版中。此外,可選地,如果S-ATA協(xié)議被控制器卡20使用來(lái)與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,則它可以遵循或是兼容于如下協(xié)議,所述協(xié)議描述在由Serial ATAWorking Group于2001年8月29日公布的“Serial ATAHigh Speed SerializedAT Attachment”1.0修訂版中。此外,可選地,如果TCP/IP被控制器卡20使用來(lái)與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,則它可以遵循或是兼容于如下協(xié)議,所述協(xié)議描述在1981年9月公布的Internet Engineering Task Force(IETF)Request For Comments(RFC)791和793中。
電路卡插槽30可以包含如下PCI擴(kuò)展槽,所述PCI擴(kuò)展槽包含一個(gè)PCI總線連接器36。連接器36可以電氣地和機(jī)械地與在電路卡20中所包括的PCI總線連接器34緊密配合。電路卡20還可以包含操作電路42。電路42可以包含一個(gè)處理器(例如,IntelPentiumIII或IV微處理器)和相關(guān)聯(lián)的計(jì)算機(jī)可讀存儲(chǔ)器(在下文中統(tǒng)稱為和/或單稱為“處理器40”)。這個(gè)相關(guān)聯(lián)的計(jì)算機(jī)可讀存儲(chǔ)器可以包含下列類型存儲(chǔ)器中的一個(gè)或多個(gè)半導(dǎo)體固件存儲(chǔ)器、可編程存儲(chǔ)器、非易失性存儲(chǔ)器、只讀存儲(chǔ)器、電可編程存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器、快閃存儲(chǔ)器、磁盤存儲(chǔ)器、和/或光盤存儲(chǔ)器。另外地或是可選地,這個(gè)計(jì)算機(jī)可讀存儲(chǔ)器可以包含其它和/或以后開發(fā)的類型的計(jì)算機(jī)可讀存儲(chǔ)器。此外,另外地或者可選地,處理器40可以包含其它類型的微處理器,諸如,從除本主題申請(qǐng)的受讓人以外的來(lái)源中制造和/或在市場(chǎng)上買得到的微處理器,而沒(méi)有背離這個(gè)實(shí)施例。
機(jī)器可讀程序指令可以被存儲(chǔ)在與處理器40相關(guān)聯(lián)的計(jì)算機(jī)可讀存儲(chǔ)器中。這些指令可以被處理器40存取和執(zhí)行。當(dāng)這些指令被處理器40執(zhí)行時(shí),這些指令可以導(dǎo)致處理器40執(zhí)行在此被描述為應(yīng)由處理器40執(zhí)行的那些操作。
電路42還可以包含一個(gè)高速緩沖存儲(chǔ)器38。在這個(gè)實(shí)施例中,高速緩沖存儲(chǔ)器38可以包含一個(gè)或多個(gè)半導(dǎo)體存儲(chǔ)器設(shè)備??蛇x地或是附加地,高速緩沖存儲(chǔ)器38可以包含磁盤和/或光盤存儲(chǔ)器。處理器40能夠與高速緩沖存儲(chǔ)器38交換數(shù)據(jù)和/或命令,其可以導(dǎo)致高速緩沖存儲(chǔ)器38以如下所述的方式在高速緩沖存儲(chǔ)器38中存儲(chǔ)數(shù)據(jù)和/或從高速緩沖存儲(chǔ)器38中檢索數(shù)據(jù)。
插槽30和卡20被構(gòu)造為允許將卡20插入到插槽30中。當(dāng)卡20正確地插入到插槽30中時(shí),連接器34和36變成彼此電氣地和機(jī)械地相耦合了。當(dāng)連接器34和36這樣相互耦合時(shí),卡20變成電連接總線22。
如圖3所示,RAID 29可以包含多個(gè)用戶數(shù)據(jù)卷200和202。當(dāng)然,如圖3所示的用戶數(shù)據(jù)卷的數(shù)目?jī)H僅是示范性的,并且RAID 29可以包含任意數(shù)目的用戶數(shù)據(jù)卷,而沒(méi)有背離這個(gè)實(shí)施例。每一個(gè)數(shù)據(jù)卷200和202可以包含一個(gè)相應(yīng)的邏輯數(shù)據(jù)卷,所述邏輯數(shù)據(jù)卷可以跨越海量存儲(chǔ)器28中的相應(yīng)的一組物理磁盤設(shè)備(未顯示)。例如,數(shù)據(jù)卷200可以包含多個(gè)邏輯用戶數(shù)據(jù)段300A、300B、……、300N,而數(shù)據(jù)卷202可以包含多個(gè)邏輯數(shù)據(jù)段400A、400B、……、400N。根據(jù)在RAID 29中實(shí)現(xiàn)的特定RAID技術(shù),在卷200中的每個(gè)相應(yīng)的邏輯數(shù)據(jù)段300A、300B、……、300N、以及在卷202中的每個(gè)相應(yīng)的邏輯數(shù)據(jù)段400A、400B、……、400N可以包含相應(yīng)的多個(gè)邏輯上相關(guān)的物理數(shù)據(jù)段(未顯示),其中所述物理數(shù)據(jù)段被分布在多個(gè)物理海量存儲(chǔ)器設(shè)備(未顯示)中,并且可以從其中計(jì)算和/或獲得相應(yīng)的邏輯數(shù)據(jù)段。例如,如果在RAID 29中實(shí)現(xiàn)了RAID級(jí)1(即,鏡像),則在卷200中的每個(gè)邏輯數(shù)據(jù)段300A、300B、……、300N、以及在卷202中的每個(gè)邏輯數(shù)據(jù)段400A、400B、……、400N可以包含相應(yīng)的一對(duì)物理數(shù)據(jù)段(未顯示),所述對(duì)物理數(shù)據(jù)段是彼此的拷貝,并且被分布在兩個(gè)相應(yīng)的物理海量存儲(chǔ)器設(shè)備(未顯示)中??蛇x地,可以在RAID 29中實(shí)現(xiàn)其它RAID技術(shù),包含例如奇偶校驗(yàn)RAID技術(shù),而沒(méi)有背離這個(gè)實(shí)施例。在RAID 29中的每一個(gè)邏輯數(shù)據(jù)段可以具有預(yù)定的大小,諸如16或者32千字節(jié)(KB)。在RAID 29B中的每一個(gè)邏輯數(shù)據(jù)段可以具有預(yù)定的大小,諸如16或者32千字節(jié)(KB)??蛇x地或是附加地,在RAID 29B中的每一個(gè)邏輯數(shù)據(jù)段可以具有預(yù)定的大小,所述預(yù)訂的大小對(duì)應(yīng)于一個(gè)預(yù)定數(shù)目的磁盤帶條(disk stripe)。當(dāng)然,在沒(méi)有背離這個(gè)實(shí)施例的情況下,在RAID 29B中的邏輯數(shù)據(jù)段的數(shù)目和大小可以不同。
可以實(shí)現(xiàn)在RAID 29中所使用的RAID技術(shù)的那些操作可以由如下RAID電路(未顯示)實(shí)施,所述RAID電路可以被包括在例如主板32、海量存儲(chǔ)器28和/或RAID 29內(nèi)??蛇x地,卡20可以包含這種RAID電路。依據(jù)由RAID 29實(shí)現(xiàn)的RAID技術(shù),處理器40可以與這種RAID電路交換數(shù)據(jù)和/或命令,其可以導(dǎo)致數(shù)據(jù)段被寫入到RAID 29中或是從RAID 29中讀取數(shù)據(jù)??蛇x地,處理器40可以被編程來(lái)仿真這種RAID電路的操作,并且可以與海量存儲(chǔ)器28交換數(shù)據(jù)和/或命令,其可以導(dǎo)致RAID 29在海量存儲(chǔ)器28中加以實(shí)現(xiàn)。此外,可選地,主處理器12可以被編程來(lái)仿真這種RAID電路的操作,并且可以與海量存儲(chǔ)器28和/或處理器40交換數(shù)據(jù)和/或命令,其可以導(dǎo)致在海量存儲(chǔ)器28中實(shí)現(xiàn)RAID 29。
下面參見(jiàn)圖2,依據(jù)這個(gè)實(shí)施例,處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以在高速緩沖存儲(chǔ)器38中存儲(chǔ)高速緩存器管理數(shù)據(jù)信息108和用戶數(shù)據(jù)110。由于以下說(shuō)明的理由,依據(jù)一個(gè)實(shí)施例,高速緩存器管理信息108可以包含多個(gè)如下數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包含可以被用來(lái)實(shí)現(xiàn)一種高速緩存器管理技術(shù)的信息。包含在高速緩存器管理信息108中的數(shù)據(jù)結(jié)構(gòu)可以包含例如雙向鏈表102、位映像數(shù)組104、和散列表106。用戶數(shù)據(jù)110可以包含一個(gè)或多個(gè)(而且在這個(gè)實(shí)施例中為多個(gè))數(shù)據(jù)段110A、110B、……、110N。
雙向鏈表102可以包含多個(gè)鏈表節(jié)點(diǎn)102A、102B、……、102N。在鏈表102中,這些節(jié)點(diǎn)中的一個(gè)(例如節(jié)點(diǎn)102A)可以是一個(gè)頭節(jié)點(diǎn),而這些節(jié)點(diǎn)中的另一個(gè)節(jié)點(diǎn)(例如,節(jié)點(diǎn)102N)可以是尾節(jié)點(diǎn)。在鏈表102中的每個(gè)相應(yīng)節(jié)點(diǎn),除尾節(jié)點(diǎn)102N以外,都可以包含一個(gè)指向在鏈表102中的、相對(duì)于那個(gè)相應(yīng)條目的、朝著尾節(jié)點(diǎn)102N方向的下一個(gè)后繼節(jié)點(diǎn)的指針。例如,頭節(jié)點(diǎn)102A可以包含一個(gè)指向相對(duì)于頭節(jié)點(diǎn)102A朝著尾節(jié)點(diǎn)102N方向的下一個(gè)后繼節(jié)點(diǎn)102B的指針120A。節(jié)點(diǎn)102B可以包含一個(gè)指向相對(duì)于節(jié)點(diǎn)102B朝著尾節(jié)點(diǎn)102N方向的下一個(gè)后繼節(jié)點(diǎn)(未顯示)的指針120B,等等諸如此類。尾節(jié)點(diǎn)102N可以包含一個(gè)空指針120N。另外,在鏈表102中的每個(gè)相應(yīng)節(jié)點(diǎn),除頭節(jié)點(diǎn)102A以外,都可以包含一個(gè)指向在鏈表102中的上一個(gè)前驅(qū)節(jié)點(diǎn)的指針(未顯示)。由于以下描述的理由,每個(gè)節(jié)點(diǎn)102A、102B、……、102N還可以包含在RAID 29中的一個(gè)相應(yīng)邏輯數(shù)據(jù)段的一個(gè)相應(yīng)起始地址和/或塊標(biāo)識(shí)號(hào)122A、122B、……、122N。在一個(gè)實(shí)施例中,包含在鏈表102中的節(jié)點(diǎn)的最大數(shù)目可以等于大約30,000,但是在沒(méi)有背離這個(gè)實(shí)施例情況下也可以改變。
位映像數(shù)組104包含多個(gè)條目104A、104B、……、104N。條目104A、104B、……、104N的數(shù)目可以等于包含在RAID 29中的邏輯數(shù)據(jù)段300A、300B、……、300N和400A、400B、……、400N的的數(shù)目。在數(shù)組104中的每個(gè)條目104A、104B、……、104N可以與包含在RAID 29中的邏輯數(shù)據(jù)段300A、300B、……、300N和400A、400B、……、400N中的相應(yīng)的一個(gè)相關(guān)聯(lián)。在數(shù)組104中的每個(gè)條目104A、104B、……、104N可以包含單個(gè)相應(yīng)的比特值,所述比特值可以被設(shè)置或者清除。如在此使用的那樣,一個(gè)比特值在它等于表示第一布爾邏輯條件(例如,真)的值時(shí),被認(rèn)為是被設(shè)置了,反之,一個(gè)比特值在它等于表示了與第一布爾邏輯條件相反的第二布爾邏輯條件(例如,假)的值時(shí)被認(rèn)為是被清除了。
散列表106包含如下雙向鏈表散列表,所述雙向鏈表散列表可以包含如下信息,所述信息尤其用于標(biāo)識(shí)在高速緩沖存儲(chǔ)器38中的用戶數(shù)據(jù)段110A、110B、……、110N、以及數(shù)據(jù)段110A、110B、……、110N已經(jīng)被存取的次序。散列表106還可以包含如下信息,所述信息為在高速緩沖存儲(chǔ)器38中的每個(gè)數(shù)據(jù)段110A、110B、……、110N指定所述數(shù)據(jù)段被認(rèn)為是“臟的”還是“干凈的”。如在此使用的那樣,如果當(dāng)在高速緩沖存儲(chǔ)器38中的一個(gè)數(shù)據(jù)段將從高速緩沖存儲(chǔ)器38中被降級(jí)時(shí),RAID 29沒(méi)有包含與正從高速緩沖存儲(chǔ)器38中被降級(jí)的所述數(shù)據(jù)段完全相同的對(duì)應(yīng)數(shù)據(jù)段,則所述數(shù)據(jù)段被認(rèn)為是“臟的”。相反地,如在此使用的那樣,如果當(dāng)在高速緩沖存儲(chǔ)器38中的一個(gè)數(shù)據(jù)段將從高速緩沖存儲(chǔ)器38中被降級(jí)時(shí),RAID 29已經(jīng)存儲(chǔ)了與正從高速緩沖存儲(chǔ)器38中被降級(jí)的所述數(shù)據(jù)段完全相同的對(duì)應(yīng)數(shù)據(jù)段,則所述數(shù)據(jù)段被認(rèn)為是“干凈的”。
更具體地說(shuō),雙向鏈表散列表106可以包含一個(gè)指針數(shù)組106A、106B、……、106N,所述指針數(shù)組指向相應(yīng)的雙向鏈表130A、130B、……、130N中的相應(yīng)的頭節(jié)點(diǎn)132A、132B、……、132N。在雙向鏈表130A、130B、……、130N中的每個(gè)節(jié)點(diǎn)可以表示在高速緩存38中存儲(chǔ)的相應(yīng)的數(shù)據(jù)段。根據(jù)和/或按照如下傳統(tǒng)的散列函數(shù),每個(gè)這樣的節(jié)點(diǎn)可以與鏈表130A、130B、……、130N中給定的一個(gè)相關(guān)聯(lián),并且可以被包含在所述給定的一個(gè)鏈表中,其中所述傳統(tǒng)的散列函數(shù)可以把存儲(chǔ)在高速緩沖存儲(chǔ)器38中的數(shù)據(jù)段在RAID 29中的起始地址或數(shù)據(jù)塊標(biāo)識(shí)號(hào)映射為到指針數(shù)組中的索引。
圖5是可以被包含在一個(gè)鏈表130A中的一個(gè)示范性節(jié)點(diǎn)132A的框圖。在鏈表130A、130B、……、130N中包含的節(jié)點(diǎn)中的每一個(gè)節(jié)點(diǎn)可以具有與節(jié)點(diǎn)132A完全相同的結(jié)構(gòu)。如圖5所示,節(jié)點(diǎn)132A可以包含指針700,指針700指向可以包含節(jié)點(diǎn)132A的、在鏈表130A中的下一個(gè)后繼節(jié)點(diǎn)(未顯示)。當(dāng)然,如果節(jié)點(diǎn)132A是鏈表130A中的尾節(jié)點(diǎn),則指針700可以是空指針。另外,盡管在圖中未顯示,但是包含在鏈表130A、130B、……、130N中的每個(gè)相應(yīng)節(jié)點(diǎn),除非所述相應(yīng)節(jié)點(diǎn)是頭節(jié)點(diǎn),否則都可以包含如下指針(未顯示),所述指針指向包含那個(gè)相應(yīng)節(jié)點(diǎn)的、在鏈表中的上一個(gè)前驅(qū)節(jié)點(diǎn)。節(jié)點(diǎn)132A還可以包含一個(gè)或多個(gè)數(shù)據(jù)值702,數(shù)據(jù)值702可以指定和/或表示在高速緩沖存儲(chǔ)器38中存儲(chǔ)的、正由節(jié)點(diǎn)132A表示的數(shù)據(jù)段的開始地址,以及在卷200和1202中的如下邏輯數(shù)據(jù)段的起始地址和/或數(shù)據(jù)塊標(biāo)識(shí)號(hào),所述邏輯數(shù)據(jù)段對(duì)應(yīng)于在高速緩沖存儲(chǔ)器38中的數(shù)據(jù)段。節(jié)點(diǎn)132A還可以包含一個(gè)比特值704,比特值704指示這個(gè)數(shù)據(jù)段是干凈的還是臟的。另外,節(jié)點(diǎn)132A可以包含一個(gè)指向另一個(gè)雙向鏈表600中的下一個(gè)節(jié)點(diǎn)602B的指針706,如圖6所示。也就是說(shuō),在鏈表130A、130B、……、130N中的所有節(jié)點(diǎn)也可以被包括在雙向鏈表600中。在鏈表600中包含的節(jié)點(diǎn)的從頭節(jié)點(diǎn)602A到尾節(jié)點(diǎn)602N的相應(yīng)次序可以指示由在鏈表600中的這些節(jié)點(diǎn)表示的數(shù)據(jù)段的存取次序。因此,例如,頭節(jié)點(diǎn)602A可以表示在高速緩沖存儲(chǔ)器38中的最近使用的(most recently used,MRU)數(shù)據(jù)段,而尾節(jié)點(diǎn)602N可以表示在高速緩沖存儲(chǔ)器38中的最近最少使用的(least reeently used,LRU)數(shù)據(jù)段。
依據(jù)將在系統(tǒng)100中實(shí)現(xiàn)的一個(gè)實(shí)施例,由處理器40執(zhí)行的固件程序指令尤其可以導(dǎo)致卡20向高速緩沖存儲(chǔ)器38發(fā)出適當(dāng)?shù)娜缦驴刂菩盘?hào),所述控制信號(hào)可以允許將各操作包括到高速緩存器管理技術(shù)中。圖4是依據(jù)一個(gè)實(shí)施例的如下流程圖,所述流程圖說(shuō)明了可以在系統(tǒng)100中執(zhí)行的這些及其它操作500。
響應(yīng)于例如從主處理器12中接收一個(gè)用于存取在RAID 29中存儲(chǔ)的數(shù)據(jù)的請(qǐng)求,諸如在圖4中的操作502,在卡20中的處理器40可以執(zhí)行一個(gè)或多個(gè)固件子程序和/或過(guò)程。如在此使用的那樣,“用于存取數(shù)據(jù)的請(qǐng)求”可以包含寫或讀數(shù)據(jù)的請(qǐng)求。例如,主處理器12可以向處理器40發(fā)出用于存取一個(gè)包含在卷200和202中的數(shù)據(jù)段(例如數(shù)據(jù)段300A)的請(qǐng)求。當(dāng)這些一個(gè)或多個(gè)固件子程序和/或過(guò)程由處理器40執(zhí)行時(shí),它們可以導(dǎo)致處理器40確定所請(qǐng)求的數(shù)據(jù)段300A當(dāng)前是否被存儲(chǔ)在高速緩沖存儲(chǔ)器38中,如在圖4中的操作504所說(shuō)明的。處理器40可以至少部分地根據(jù)散列表106中的內(nèi)容確定上述。更具體地說(shuō),使用與散列表106相關(guān)聯(lián)的散列函數(shù),處理器40可以至少部分地根據(jù)所請(qǐng)求的數(shù)據(jù)段300A的起始地址或數(shù)據(jù)塊標(biāo)識(shí)號(hào),生成一個(gè)散列表關(guān)鍵字。處理器40可以使用這個(gè)散列表關(guān)鍵字作為到指針數(shù)組106A、106B、……、106N中的索引。如果在指針數(shù)組106A、106B、……、106N中的指針(例如指針106A)按照所述散列表關(guān)鍵字被索引,則處理器40可以查找包含在鏈表(例如,鏈表130A)中的如下的一個(gè)或多個(gè)節(jié)點(diǎn),以試圖在那個(gè)鏈表130A中找到一個(gè)可以表示所請(qǐng)求的數(shù)據(jù)段300A的節(jié)點(diǎn),所述一個(gè)或多個(gè)節(jié)點(diǎn)的頭節(jié)點(diǎn)(例如,頭節(jié)點(diǎn)132A)被那個(gè)選擇的指針106A指向。如果在鏈表130A中存在這樣的一個(gè)節(jié)點(diǎn),則處理器40可以確定所請(qǐng)求的數(shù)據(jù)段300A被存儲(chǔ)在高速緩沖存儲(chǔ)器38中(即,一個(gè)數(shù)據(jù)段,諸如像數(shù)據(jù)段110A,對(duì)應(yīng)于所請(qǐng)求的數(shù)據(jù)段300A,可以被存儲(chǔ)在高速緩沖存儲(chǔ)器38中)。
如果處理器40確定所請(qǐng)求的數(shù)據(jù)段300A被存儲(chǔ)在高速緩沖存儲(chǔ)器38中(例如,與數(shù)據(jù)段110A相對(duì)應(yīng)),則處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)。這可以導(dǎo)致數(shù)據(jù)段110A(以及它的對(duì)應(yīng)數(shù)據(jù)段300A)被指定為在高速緩沖存儲(chǔ)器38中的MRU數(shù)據(jù)段,如在圖4中的操作508所說(shuō)明的。處理器40可以通過(guò)檢查在鏈表600中的節(jié)點(diǎn)的次序來(lái)實(shí)現(xiàn)上述,并且如果表示數(shù)據(jù)段110A的節(jié)點(diǎn)132A不是鏈表600中的頭節(jié)點(diǎn)602A,則處理器40可以修改在節(jié)點(diǎn)132A、132B、……、132N中的一個(gè)或多個(gè)指針706,以便使節(jié)點(diǎn)132A變?yōu)轭^節(jié)點(diǎn)602A。處理器40然后可以使用在高速緩沖存儲(chǔ)器38中的數(shù)據(jù)段110A來(lái)滿足從主處理器12接收的數(shù)據(jù)存取請(qǐng)求,如在圖4中的操作510所說(shuō)明的。也就是說(shuō),根據(jù)從主處理器12接收的數(shù)據(jù)存取請(qǐng)求是請(qǐng)求讀操作還是寫操作,處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以執(zhí)行數(shù)據(jù)段110A的讀取,并且可以把從段110A中讀取的數(shù)據(jù)轉(zhuǎn)發(fā)到處理器12,或是處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以執(zhí)行向數(shù)據(jù)段110A的寫入。
相反地,如果作為操作504的結(jié)果,處理器40確定請(qǐng)求的數(shù)據(jù)段300A沒(méi)有被存儲(chǔ)在高速緩沖存儲(chǔ)器38中,則處理器40可以確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,是否發(fā)生了存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定的多個(gè)請(qǐng)求,如在圖4中的操作506所說(shuō)明的。處理器40可以至少部分地根據(jù)位映像數(shù)組104的檢查來(lái)進(jìn)行由操作506所說(shuō)明的確定。更具體地說(shuō),如先前陳述的那樣,高速緩沖存儲(chǔ)器38可以存儲(chǔ)包含條目104A、104B、……、104N的位映像數(shù)組104。每個(gè)條目104A、104B、……、104N可以與包含在RAID 29中的相應(yīng)數(shù)據(jù)段300A、300B、……、300N、400A、400B、……、400N相關(guān)聯(lián)。如果設(shè)置了一個(gè)給定條目(例如條目104A)的值,則這表示處理器40已經(jīng)將在RAID 29中的、與給定條目104A相關(guān)聯(lián)的數(shù)據(jù)段(例如,數(shù)據(jù)段300A)指定為要存儲(chǔ)在高速緩沖存儲(chǔ)器38的用戶數(shù)據(jù)部分110中的一個(gè)可能的候選者(candidate)。如果在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目M的最近在前存取期間,與給定條目104A相關(guān)聯(lián)的數(shù)據(jù)段300A被存取了預(yù)定數(shù)目N次,那么處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以設(shè)置給定條目104A的值。根據(jù)由選擇的N和M的值產(chǎn)生的系統(tǒng)100的性能,可以憑經(jīng)驗(yàn)選擇N和M的值,以便允許系統(tǒng)100呈現(xiàn)出期望的性能級(jí)。在這個(gè)實(shí)施例中,N可以大于或等于1,而M可以等于大約30,000。在下面的說(shuō)明中,N和M的值分別是1和30,000。也就是說(shuō),如果在由主處理器12發(fā)出的最近在前的30,000個(gè)數(shù)據(jù)存取請(qǐng)求期間,與條目104A相關(guān)聯(lián)的數(shù)據(jù)段300A已經(jīng)被存取了1次,則可以設(shè)置條目104A的值??蛇x地,N和M的值可以改變,而沒(méi)有背離這個(gè)實(shí)施例。例如,N可以大于或等于2或3,而沒(méi)有背離這個(gè)實(shí)施例。
在這個(gè)實(shí)施例中,如果在由主處理器12請(qǐng)求的數(shù)據(jù)的最后M+1次在前存取期間,已經(jīng)發(fā)生了存取所請(qǐng)求數(shù)據(jù)段300A的N+1個(gè)請(qǐng)求,則作為操作506的結(jié)果,處理器40可以確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,已經(jīng)發(fā)生了存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定多個(gè)請(qǐng)求。相反地,如果在由主處理器12請(qǐng)求的數(shù)據(jù)的最后M+1次在前存取期間,沒(méi)有發(fā)生存取所請(qǐng)求數(shù)據(jù)段300A的N+1個(gè)請(qǐng)求,則作為操作506的結(jié)果,處理器40可以確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,沒(méi)有發(fā)生存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定多個(gè)請(qǐng)求。因此,在作為操作502的結(jié)果從主處理器12中接收了存取數(shù)據(jù)段300A的最近請(qǐng)求之后,當(dāng)處理器40檢查條目104A時(shí),如果設(shè)置了條目104A的值,則作為操作506的結(jié)果,處理器40可以確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,已經(jīng)發(fā)生了存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定多個(gè)請(qǐng)求。相反地,在作為操作502的結(jié)果從主處理器12中接收了存取數(shù)據(jù)段300A的最近請(qǐng)求之后,當(dāng)處理器40檢查條目104A時(shí),如果沒(méi)有設(shè)置條目104A的值,則作為操作506的結(jié)果,處理器40可以確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,沒(méi)有發(fā)生存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定多個(gè)請(qǐng)求。
如果作為操作506的結(jié)果,處理器40確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,已經(jīng)發(fā)生了存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定多個(gè)請(qǐng)求,則處理器40可以排除所請(qǐng)求數(shù)據(jù)段300A作為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者,如由圖4中的操作512所說(shuō)明的。處理器40可以通過(guò)向高速緩沖存儲(chǔ)器38發(fā)信號(hào)來(lái)實(shí)現(xiàn)上述。這可以導(dǎo)致高速緩沖存儲(chǔ)器38清除在條目104A中的值。在作為操作512的結(jié)果已經(jīng)清除了在條目104A中的值之后,如果目前存儲(chǔ)在高速緩沖存儲(chǔ)器38中的LRU用戶數(shù)據(jù)段必須被重寫,以便能夠在高速緩沖存儲(chǔ)器38中存儲(chǔ)請(qǐng)求的數(shù)據(jù)段300A,則處理器40可以降級(jí)目前存儲(chǔ)在高速緩沖存儲(chǔ)器38中的LRU用戶數(shù)據(jù)段并且使其無(wú)效。例如,如果數(shù)據(jù)段110N是目前存儲(chǔ)在高速緩沖存儲(chǔ)器38中的LRU用戶數(shù)據(jù)段,則數(shù)據(jù)段110N可以由在鏈表600中的尾節(jié)點(diǎn)602N表示。處理器40可以定位尾節(jié)點(diǎn)602N,并且可以檢查尾節(jié)點(diǎn)602N以確定數(shù)據(jù)段110N是由尾節(jié)點(diǎn)602N表示。爾后,處理器40可以向高速緩沖存儲(chǔ)器38和海量存儲(chǔ)器28發(fā)信號(hào)。這可以導(dǎo)致把數(shù)據(jù)段110N降級(jí)到RAID 29,并且還可以導(dǎo)致重寫在尾節(jié)點(diǎn)602N中的一個(gè)或多個(gè)值(未顯示),以指示數(shù)據(jù)段110N現(xiàn)在可以被重寫??蛇x地,如果在高速緩沖存儲(chǔ)器38值存在足夠的存儲(chǔ)空間用于在高速緩沖存儲(chǔ)器38中存儲(chǔ)請(qǐng)求的數(shù)據(jù)段300A,而不用重寫LRU數(shù)據(jù)段110N,則在系統(tǒng)100中可以不執(zhí)行操作516。不論發(fā)生哪種情況,處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以將所請(qǐng)求的數(shù)據(jù)段300A指定為在高速緩沖存儲(chǔ)器38中的MRU數(shù)據(jù)段,并且將數(shù)據(jù)段300A存儲(chǔ)到高速緩沖存儲(chǔ)器38中(例如,作為是數(shù)據(jù)段300A的拷貝的一個(gè)相應(yīng)數(shù)據(jù)段110N),分別如由圖4中的操作518和520所說(shuō)明的。更具體地說(shuō),處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào),以在散列表106中包含一個(gè)表示所請(qǐng)求數(shù)據(jù)段300A的新節(jié)點(diǎn)(和它在高速緩沖存儲(chǔ)器38中的相應(yīng)數(shù)據(jù)段110N)。這可以導(dǎo)致高速緩沖存儲(chǔ)器38在散列表106中在鏈表600的開始處(作為新的頭節(jié)點(diǎn)602A)插入如下新節(jié)點(diǎn),所述新節(jié)點(diǎn)表示所請(qǐng)求數(shù)據(jù)段300A(和它的相應(yīng)數(shù)據(jù)段110N),并且還可以導(dǎo)致修改在節(jié)點(diǎn)132A、132B、……、132N中的、先前存在于鏈表600中的一個(gè)或多個(gè)指針706,以便使這個(gè)新的節(jié)點(diǎn)變?yōu)轭^節(jié)點(diǎn)602A。這可以導(dǎo)致把數(shù)據(jù)段300A(和它的相應(yīng)數(shù)據(jù)段110N)指定為在高速緩沖存儲(chǔ)器38中的MRU數(shù)據(jù)段。
在作為操作520的結(jié)果把所請(qǐng)求的數(shù)據(jù)段300A已經(jīng)存儲(chǔ)在高速緩沖存儲(chǔ)器38中之后,處理器40然后可以使用在高速緩沖存儲(chǔ)器38中的、包含所請(qǐng)求數(shù)據(jù)段300A的拷貝的數(shù)據(jù)段110N,來(lái)滿足從主處理器12中接收的數(shù)據(jù)存取請(qǐng)求,如由圖4中的操作522所說(shuō)明的。也就是說(shuō),根據(jù)從主處理器12接收的數(shù)據(jù)存取請(qǐng)求是請(qǐng)求讀操作還是寫操作,處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào),以執(zhí)行數(shù)據(jù)段110N的讀取并且可以把從段110N中讀取的數(shù)據(jù)轉(zhuǎn)發(fā)到處理器12,或是處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以執(zhí)行向數(shù)據(jù)段110N的寫入。
相反地,如果作為操作506的結(jié)果,處理器40確定在由主處理器12請(qǐng)求的數(shù)據(jù)的預(yù)定數(shù)目的最近在前存取期間,沒(méi)有發(fā)生存取所請(qǐng)求數(shù)據(jù)段300A的預(yù)定多個(gè)請(qǐng)求,則處理器40可以排除作為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者的如下LRU數(shù)據(jù)段,所述LRU數(shù)據(jù)段目前被指定為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者,如由圖4中的操作514所說(shuō)明的。更具體地說(shuō),如先前陳述的那樣,鏈表102可以包含多個(gè)鏈表節(jié)點(diǎn)102A、102B、……、102N,其中,節(jié)點(diǎn)102A是頭節(jié)點(diǎn),而節(jié)點(diǎn)102N是尾節(jié)點(diǎn)。在這個(gè)實(shí)施例中,可以被包含在鏈表102中的節(jié)點(diǎn)的最大數(shù)目可以是預(yù)先確定的,并且可以等于M??梢员话阪湵?02中的每個(gè)節(jié)點(diǎn)102A、102B、……、102N可以表示在RAID 29中的相應(yīng)邏輯數(shù)據(jù)段,所述相應(yīng)邏輯數(shù)據(jù)段目前被指定為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者。也就是說(shuō),在鏈表102中的每個(gè)相應(yīng)節(jié)點(diǎn)102A、102B、……、102N可以包含一個(gè)或多個(gè)相應(yīng)的值,諸如,可以表示和/或指定在RAID 29中的、正由那個(gè)相應(yīng)節(jié)點(diǎn)表示的相應(yīng)邏輯數(shù)據(jù)段的起始地址和/或塊標(biāo)識(shí)號(hào)122A、122B、……、122N。包含在鏈表102中的節(jié)點(diǎn)的從頭節(jié)點(diǎn)102A到尾節(jié)點(diǎn)102N的相應(yīng)次序可以表示由在鏈表102中的這些節(jié)點(diǎn)表示的數(shù)據(jù)段的存取次序。因此,例如,頭節(jié)點(diǎn)102A可以表示是要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者的MRU數(shù)據(jù)段,而尾節(jié)點(diǎn)102N可以表示是要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者的LRU數(shù)據(jù)段。在操作514中,如果在鏈表102中的節(jié)點(diǎn)的數(shù)目等于預(yù)定的最大數(shù)目,則處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以從鏈表102中除去尾節(jié)點(diǎn)102N。這可以導(dǎo)致排除由尾節(jié)點(diǎn)102N表示的、作為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者的LRU數(shù)據(jù)段。爾后,處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào),以改變?cè)跀?shù)組104中的條目104A的值,從而將所請(qǐng)求的數(shù)據(jù)段300A指定為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者,如由圖4中的操作524所說(shuō)明的。處理器40可以插入一個(gè)新節(jié)點(diǎn),所述新節(jié)點(diǎn)作為鏈表102中的新的頭節(jié)點(diǎn),所述新節(jié)點(diǎn)可以表示所請(qǐng)求數(shù)據(jù)段300A,并且處理器40還可以修改指針120A、120B、……、120N,以便使這個(gè)新節(jié)點(diǎn)變?yōu)轭^節(jié)點(diǎn)102A。這可以導(dǎo)致把數(shù)據(jù)段300A指定為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者的MRU數(shù)據(jù)段,如由圖4中的操作526所說(shuō)明的。處理器40然后可以使用存儲(chǔ)在RAID29中的數(shù)據(jù)段300A來(lái)滿足來(lái)自主處理器12的數(shù)據(jù)存取請(qǐng)求,如在圖4中的操作528所說(shuō)明的。
盡管在所述圖中未顯示,但是除了操作500之外,在系統(tǒng)100中也可以執(zhí)行其它操作。例如,這種附加操作可以采用例如如下方式檢測(cè)一個(gè)或多個(gè)存取連續(xù)數(shù)據(jù)段的請(qǐng)求,所述方式描述在于2001年12月21日提出的、名為“SequentialData Transfer Detection”的共同待審的美國(guó)專利申請(qǐng)10/028,065(代理人文檔號(hào)P13316)中。這個(gè)共同待審的美國(guó)專利申請(qǐng)被轉(zhuǎn)讓給本主題申請(qǐng)的受讓人。在系統(tǒng)100中,由這種存取請(qǐng)求所請(qǐng)求的連續(xù)數(shù)據(jù)段可以被存儲(chǔ)在高速緩沖存儲(chǔ)器38中,而不考慮它們先前是否已經(jīng)被指定為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者。在由這種存取請(qǐng)求所請(qǐng)求的所有數(shù)據(jù)段已經(jīng)被存儲(chǔ)在高速緩沖存儲(chǔ)器38中之后,它們可以被降級(jí)到海量存儲(chǔ)器28中,并且在散列表106中被指定為在高速緩沖存儲(chǔ)器38中的LRU數(shù)據(jù)段。
另外,高速緩沖存儲(chǔ)器38中的一個(gè)部分(未顯示)可以被指定為供涉及一個(gè)或多個(gè)數(shù)據(jù)段的寫緩沖操作使用。在這種寫緩沖操作中,正被寫入到海量存儲(chǔ)器28中的一個(gè)或多個(gè)數(shù)據(jù)段可以首先被寫入到高速緩沖存儲(chǔ)器38中。在數(shù)據(jù)段已經(jīng)被寫入到高速緩沖存儲(chǔ)器38中之后,即使實(shí)際上它們還沒(méi)有被寫入到海量存儲(chǔ)器28中,處理器40也可以向主處理器12指示它們已經(jīng)被寫入到海量存儲(chǔ)器28中了。爾后,處理器40可以向高速緩沖存儲(chǔ)器38發(fā)信號(hào)以把這些數(shù)據(jù)段降級(jí)到海量存儲(chǔ)器28中。
此外,在此被描述為在高速緩存器管理信息108中包括的數(shù)據(jù)結(jié)構(gòu)僅僅是示范性的,并且在高速緩存器管理信息108中可以包含其它和/或另外的數(shù)據(jù)結(jié)構(gòu),而沒(méi)有背離這個(gè)實(shí)施例。例如,為了在高速緩沖存儲(chǔ)器38中消耗更少的存儲(chǔ)空間,高速緩存器管理信息108不使用位映像數(shù)組104來(lái)指定在RAID 29中的、可以作為要存儲(chǔ)在高速緩沖存儲(chǔ)器38中的候選者的數(shù)據(jù)段,而替換地可以使用具有如下節(jié)點(diǎn)的散列表,所述節(jié)點(diǎn)可以被用來(lái)表示這種數(shù)據(jù)段。
同時(shí),可選地,在位映像104中的每個(gè)條目104A、104B、……、104N中的相應(yīng)位數(shù)可以大于1。在這個(gè)替換的方案中,在每個(gè)相應(yīng)條目104A、104B、……、104N中包含的相應(yīng)值可以被初始化(例如,在系統(tǒng)100復(fù)位之后)成等于一個(gè)預(yù)定值。爾后,每當(dāng)存取在RAID 29中的一個(gè)相應(yīng)數(shù)據(jù)段時(shí),在位映像104中的、對(duì)應(yīng)于那個(gè)相應(yīng)數(shù)據(jù)段的相應(yīng)條目中包含的相應(yīng)值可以被遞減(或者遞增)。爾后,如果包含在位映像104的相應(yīng)條目中的相應(yīng)值變?yōu)榈扔谠赗AID 29中的數(shù)據(jù)段的最近存取的預(yù)定數(shù)目?jī)?nèi)的另一個(gè)預(yù)定值,則這可以導(dǎo)致將在RAID 29中的、對(duì)應(yīng)于那個(gè)相應(yīng)條目的相應(yīng)數(shù)據(jù)段拷貝到高速緩沖存儲(chǔ)器38中。
另外,電路42、母板32、和/或海量存儲(chǔ)器28可以包含一個(gè)或多個(gè)備用的和/或輔助的電源系統(tǒng)(未顯示),所述備用的和/或輔助的電源系統(tǒng)可以在給電路42、母板32、和/或海量存儲(chǔ)器28供電的主要啟動(dòng)電源受損和/或故障的情況下,向電路42、母板32、和/或海量存儲(chǔ)器28提供啟動(dòng)的電源。這些一個(gè)或多個(gè)備用的和/或輔助的電源系統(tǒng)可以包含一個(gè)或多個(gè)電池,可以在這種受損和/或故障的情況下從其中向電路42、母板32、和/或海量存儲(chǔ)器28提供啟動(dòng)電源,以便允許電路42、母板32、和/或海量存儲(chǔ)器28至少暫時(shí)地繼續(xù)工作,并且由此防止在系統(tǒng)100中的數(shù)據(jù)的受損和/或破壞。
此外,在沒(méi)有背離這個(gè)實(shí)施例的情況下,高速緩存器管理信息108和/或數(shù)據(jù)段110的至少一部分可以被存儲(chǔ)在一個(gè)或多個(gè)其它(未顯示)高速緩沖存儲(chǔ)器中,除高速緩沖存儲(chǔ)器38以外。這些一個(gè)或多個(gè)其它高速緩沖存儲(chǔ)器可以位于例如卡20、母板32、海量存儲(chǔ)器28、和/或RAID 29中。這些一個(gè)或多個(gè)高速緩沖存儲(chǔ)器的操作可以由主處理器12、處理器40、和/或位于例如卡20、海量存儲(chǔ)器28和/或RAID 29中的一個(gè)或多個(gè)其它處理器(未顯示)控制。此外,高速緩存器管理信息108的至少一部分可以被存儲(chǔ)在如下高速緩沖存儲(chǔ)器中,所述高速緩沖存儲(chǔ)器不同于數(shù)據(jù)段110的至少一部分被存儲(chǔ)在其中的高速緩沖存儲(chǔ)器。
因此,概括地說(shuō),在一個(gè)系統(tǒng)實(shí)施例中,提供了一個(gè)能夠耦合到一個(gè)或多個(gè)海量存儲(chǔ)器設(shè)備的電路卡。所述電路卡可以包含高速緩沖存儲(chǔ)器和電路。所述電路能夠確定請(qǐng)求的數(shù)據(jù)是否被存儲(chǔ)在高速緩沖存儲(chǔ)器中。如果所請(qǐng)求的數(shù)據(jù)沒(méi)有被存儲(chǔ)在高速緩沖存儲(chǔ)器中,則所述電路還能夠確定在預(yù)定數(shù)目的最近數(shù)據(jù)存取期間,是否已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求。另外,如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間,已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則所述電路能夠?qū)⑺?qǐng)求的數(shù)據(jù)存儲(chǔ)到所述高速緩沖存儲(chǔ)器中。有益地,這個(gè)系統(tǒng)實(shí)施例可以實(shí)現(xiàn)一種高效的高速緩存器管理技術(shù),它可以改善所述系統(tǒng)實(shí)施例可以處理存取數(shù)據(jù)的請(qǐng)求的速度。更具體地說(shuō),在這個(gè)系統(tǒng)實(shí)施例中,只有在預(yù)定數(shù)目的最近發(fā)生的數(shù)據(jù)存取請(qǐng)求之內(nèi),已經(jīng)有了用于存取所述數(shù)據(jù)段的預(yù)定的多個(gè)先前請(qǐng)求之后,所請(qǐng)求的數(shù)據(jù)段才可以被存儲(chǔ)在高速緩沖存儲(chǔ)器中。如果在所述預(yù)定數(shù)目的最近發(fā)生的數(shù)據(jù)存取請(qǐng)求之內(nèi),已經(jīng)發(fā)生了這種預(yù)定的多個(gè)先前請(qǐng)求,則可以指示很可能不久將進(jìn)行對(duì)所請(qǐng)求數(shù)據(jù)段的存取。因此,由于在這個(gè)系統(tǒng)實(shí)施例中,只有當(dāng)很可能不久將再次發(fā)生對(duì)那個(gè)數(shù)據(jù)段的存取時(shí),才可以把請(qǐng)求的數(shù)據(jù)段存儲(chǔ)在高速緩沖存儲(chǔ)器中,所以通過(guò)實(shí)現(xiàn)這種高速緩沖存儲(chǔ)器管理技術(shù),可以改善處理數(shù)據(jù)存取請(qǐng)求的效率和速度。
在此已經(jīng)使用的術(shù)語(yǔ)和表述是用于描述而不是限制性的,而且在使用這種術(shù)語(yǔ)和表述時(shí)沒(méi)有意圖排除所顯示和描述(或其中部分)的特征的任一等效表述,并且認(rèn)識(shí)到在權(quán)利要求的范圍內(nèi)可能進(jìn)行各種修改。因此,權(quán)利要求是用來(lái)涵蓋所有這種等效表述。
權(quán)利要求
1.一種方法,包含確定請(qǐng)求的數(shù)據(jù)是否被存儲(chǔ)在存儲(chǔ)器中;如果所請(qǐng)求的數(shù)據(jù)沒(méi)有被存儲(chǔ)在所述存儲(chǔ)器中,則確定在預(yù)定數(shù)目的最近數(shù)據(jù)存取期間是否已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求;以及如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則將所請(qǐng)求的數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)器中。
2.如權(quán)利要求1所述的方法,還包括如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則從所述存儲(chǔ)器中降級(jí)最近最少使用的數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,還包括如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則將所請(qǐng)求的數(shù)據(jù)指定為在所述存儲(chǔ)器中的最近使用的數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,還包括如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了比所述用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求更少的請(qǐng)求,則將所請(qǐng)求的數(shù)據(jù)指定為要存儲(chǔ)在所述存儲(chǔ)器中的一個(gè)可能的候選者;以及通過(guò)存取在海量存儲(chǔ)器中的至少一個(gè)數(shù)據(jù)段,至少部分地滿足用于存取所請(qǐng)求數(shù)據(jù)的最近請(qǐng)求。
5.如權(quán)利要求4所述的方法,還包括將所述至少一個(gè)數(shù)據(jù)段指定為在所述海量存儲(chǔ)器中最近使用的數(shù)據(jù)段;以及取消在所述海量存儲(chǔ)器中的另一個(gè)數(shù)據(jù)段作為要存儲(chǔ)在所述存儲(chǔ)器中的一個(gè)可能候選者的先前指定,所述另一個(gè)數(shù)據(jù)段是在所述海量存儲(chǔ)器中先前存取的數(shù)據(jù)段。
6.如權(quán)利要求1所述的方法,其中所述預(yù)定數(shù)目的最近數(shù)據(jù)存取包含兩個(gè)或更多的最近數(shù)據(jù)存取。
7.如權(quán)利要求1所述的方法,其中所請(qǐng)求的數(shù)據(jù)包含至少一個(gè)數(shù)據(jù)段;以及用于存取所請(qǐng)求數(shù)據(jù)的請(qǐng)求中的每一個(gè)請(qǐng)求讀取所請(qǐng)求的數(shù)據(jù)和向所請(qǐng)求數(shù)據(jù)中寫入中的一個(gè)。
8.一種裝置,包含電路,用于確定請(qǐng)求的數(shù)據(jù)是否被存儲(chǔ)在存儲(chǔ)器中,并且用于確定在所請(qǐng)求的數(shù)據(jù)沒(méi)有被存儲(chǔ)在所述存儲(chǔ)器的情況下,在預(yù)定數(shù)目的最近數(shù)據(jù)存取期間是否已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,并且所述電路還能夠在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求的情況下,將所請(qǐng)求的數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)器中。
9.如權(quán)利要求8所述的裝置,其中如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則所述電路還能夠從所述存儲(chǔ)器中降級(jí)最近最少使用的數(shù)據(jù)。
10.如權(quán)利要求8所述的裝置,其中如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則所述電路還能夠?qū)⑺?qǐng)求的數(shù)據(jù)指定為在所述存儲(chǔ)器中的最近使用的數(shù)據(jù)。
11.如權(quán)利要求8所述的裝置,其中如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了比用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求更少的請(qǐng)求,則所述電路還能夠?qū)⑺?qǐng)求的數(shù)據(jù)指定為要存儲(chǔ)在所述存儲(chǔ)器中的一個(gè)可能的候選者;以及通過(guò)存取在海量存儲(chǔ)器中的至少一個(gè)數(shù)據(jù)段,至少部分地滿足用于存取所請(qǐng)求數(shù)據(jù)的最近請(qǐng)求。
12.如權(quán)利要求11所述的裝置,其中所述電路還能夠?qū)⑺鲋辽僖粋€(gè)數(shù)據(jù)段指定為在所述海量存儲(chǔ)器中最近使用的數(shù)據(jù)段;以及取消在所述海量存儲(chǔ)器中的另一個(gè)數(shù)據(jù)段作為要存儲(chǔ)在所述存儲(chǔ)器中的一個(gè)可能候選者的先前指定,所述另一個(gè)數(shù)據(jù)段是在所述海量存儲(chǔ)器中先前存取的數(shù)據(jù)段。
13.如權(quán)利要求8所述的裝置,其中用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求包含3個(gè)或更多的最近數(shù)據(jù)存取。
14.如權(quán)利要求8所述的裝置,其特征在于所請(qǐng)求的數(shù)據(jù)包含至少一個(gè)數(shù)據(jù)段;以及用于存取所請(qǐng)求數(shù)據(jù)的請(qǐng)求中的每一個(gè)請(qǐng)求讀取所請(qǐng)求的數(shù)據(jù)和向所請(qǐng)求數(shù)據(jù)中寫入中的一個(gè)。
15.一種物品,包含已經(jīng)在上面存儲(chǔ)了如下指令的存儲(chǔ)介質(zhì),當(dāng)所述指令被機(jī)器執(zhí)行時(shí)導(dǎo)致下列操作確定請(qǐng)求的數(shù)據(jù)是否被存儲(chǔ)在存儲(chǔ)器中;如果所請(qǐng)求的數(shù)據(jù)沒(méi)有被存儲(chǔ)在所述存儲(chǔ)器中,則確定在預(yù)定數(shù)目的最近數(shù)據(jù)存取期間是否已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求;以及如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則將所請(qǐng)求的數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)器中。
16.如權(quán)利要求15所述的物品,其特征在于如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則當(dāng)所述指令被機(jī)器執(zhí)行時(shí)還導(dǎo)致如下操作從所述存儲(chǔ)器中降級(jí)最近最少使用的數(shù)據(jù)。
17.如權(quán)利要求15所述的物品,其中如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則當(dāng)所述指令被機(jī)器執(zhí)行時(shí)還導(dǎo)致如下操作將所請(qǐng)求的數(shù)據(jù)指定為在所述存儲(chǔ)器中的最近使用的數(shù)據(jù)。
18.如權(quán)利要求15所述的物品,其中如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了比用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求更少的請(qǐng)求,則當(dāng)所述指令被機(jī)器執(zhí)行時(shí)還導(dǎo)致如下操作將所請(qǐng)求的數(shù)據(jù)指定為要存儲(chǔ)在所述存儲(chǔ)器中的一個(gè)可能的候選者;以及通過(guò)存取在海量存儲(chǔ)器中的至少一個(gè)數(shù)據(jù)段,至少部分地滿足用于存取所請(qǐng)求數(shù)據(jù)的最近請(qǐng)求。
19.如權(quán)利要求18所述的物品,其中當(dāng)所述指令被機(jī)器執(zhí)行時(shí)還導(dǎo)致如下操作將所述至少一個(gè)數(shù)據(jù)段指定為在所述海量存儲(chǔ)器中最近使用的數(shù)據(jù)段;以及取消在所述海量存儲(chǔ)器中的另一個(gè)數(shù)據(jù)段作為要存儲(chǔ)在所述存儲(chǔ)器中的一個(gè)可能候選者的先前指定,其中所述另一個(gè)數(shù)據(jù)段是在所述海量存儲(chǔ)器中先前存取的數(shù)據(jù)段。
20.如權(quán)利要求15所述的物品,其中所述預(yù)定數(shù)目的最近數(shù)據(jù)存取包含兩個(gè)或更多的最近數(shù)據(jù)存取。
21.如權(quán)利要求15的物品,其中所請(qǐng)求的數(shù)據(jù)包含至少一個(gè)數(shù)據(jù)段;以及用于存取所請(qǐng)求數(shù)據(jù)的請(qǐng)求中的每一個(gè)請(qǐng)求讀取所請(qǐng)求的數(shù)據(jù)和向所請(qǐng)求數(shù)據(jù)中寫入中的一個(gè)。
22.一種系統(tǒng),包含一個(gè)或多個(gè)海量存儲(chǔ)器設(shè)備;能夠耦合到所述一個(gè)或多個(gè)海量存儲(chǔ)器設(shè)備的電路卡,所述電路卡包含高速緩沖存儲(chǔ)器和如下電路,所述電路能夠確定所請(qǐng)求的數(shù)據(jù)是否被存儲(chǔ)在所述高速緩沖存儲(chǔ)器中;確定在所請(qǐng)求的數(shù)據(jù)沒(méi)有被存儲(chǔ)在所述高速緩沖存儲(chǔ)器中的情況下,在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間是否已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求;以及在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求的情況下,將所請(qǐng)求的數(shù)據(jù)存儲(chǔ)到所述高速緩沖存儲(chǔ)器中。
23.如權(quán)利要求22所述的系統(tǒng),其中所述一個(gè)或多個(gè)海量存儲(chǔ)器設(shè)備包含一個(gè)廉價(jià)磁盤冗余陣列;以及所述電路包含一處理器。
24.如權(quán)利要求22所述的系統(tǒng),其中所述一個(gè)或多個(gè)海量存儲(chǔ)器能夠存儲(chǔ)多個(gè)數(shù)據(jù)卷;所述數(shù)據(jù)卷中的每一個(gè)都包括一個(gè)或多個(gè)數(shù)據(jù)段;所請(qǐng)求的數(shù)據(jù)包含至少一個(gè)數(shù)據(jù)段;以及所述電路能夠從所述一個(gè)或多個(gè)海量存儲(chǔ)器設(shè)備中檢索所述至少一個(gè)數(shù)據(jù)段,并將所述至少一個(gè)數(shù)據(jù)段存儲(chǔ)到所述高速緩沖存儲(chǔ)器中。
25.如權(quán)利要求22所述的系統(tǒng),還包括一個(gè)或多個(gè)網(wǎng)絡(luò)通信鏈路,用于把所述一個(gè)或多個(gè)海量存儲(chǔ)器設(shè)備耦合到所述電路卡;以及包含一條總線的電路板,所述電路卡能夠被耦合到所述總線。
全文摘要
在一個(gè)實(shí)施例中提供了一種方法。這個(gè)實(shí)施例中的方法可以包含確定請(qǐng)求的數(shù)據(jù)是否被存儲(chǔ)在存儲(chǔ)器中。如果所請(qǐng)求的數(shù)據(jù)沒(méi)有被存儲(chǔ)在所述存儲(chǔ)器中,則所述方法可以包含確定在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間是否已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求。如果在所述預(yù)定數(shù)目的最近數(shù)據(jù)存取期間已經(jīng)發(fā)生了用于存取所請(qǐng)求數(shù)據(jù)的多個(gè)請(qǐng)求,則所述方法還可以包含將所請(qǐng)求的數(shù)據(jù)存儲(chǔ)到所述存儲(chǔ)器中。當(dāng)然,在沒(méi)有背離這個(gè)實(shí)施例的情況下,許多變動(dòng)、修改、以及替換都是可能的。
文檔編號(hào)G06F12/12GK1609824SQ200310119699
公開日2005年4月27日 申請(qǐng)日期2003年10月23日 優(yōu)先權(quán)日2003年10月23日
發(fā)明者J·S·卡瓦羅, S·J·伊波利托 申請(qǐng)人:英特爾公司