亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具有動態(tài)電壓調(diào)節(jié)超級電容的存儲控制器的制作方法

文檔序號:6567889閱讀:300來源:國知局
專利名稱:具有動態(tài)電壓調(diào)節(jié)超級電容的存儲控制器的制作方法
技術(shù)領(lǐng)域

本發(fā)明通常涉及使用電容器組作為在存儲控制器中的可再充電的備用能源供應(yīng)的領(lǐng)域,更具體地,本發(fā)明涉及對提供電容器組的保證壽命的可能性進行增加。

背景技術(shù)

廉價冗余磁盤陣列(Redundant Array of InexpensiveDisk/RAID)系統(tǒng)已成為現(xiàn)今市面上大多數(shù)電腦系統(tǒng)中大容量存儲系統(tǒng)的主流,其應(yīng)用在需要高性能、大容量存儲空間和/或高數(shù)據(jù)可用性上,例如金融交易處理、銀行事務(wù)、醫(yī)療應(yīng)用、數(shù)據(jù)庫服務(wù)器、網(wǎng)絡(luò)服務(wù)器、郵件服務(wù)器、科學運算以及許多其它應(yīng)用。RAID控制器控制了包括多個物理磁盤驅(qū)動器的群組,使該群組能以單一邏輯磁盤驅(qū)動器(或者多個邏輯磁盤驅(qū)動器)方式呈現(xiàn)在電腦操作系統(tǒng)之下。RAID控制器運用數(shù)據(jù)分割和數(shù)據(jù)冗余的技術(shù)以提升性能和數(shù)據(jù)可用性。

RAID控制器的主要特征尤其在于其運用在諸如金融交易處理或者從大量數(shù)據(jù)流的實時數(shù)據(jù)采集的特定應(yīng)用上時,可提供快速寫入的性能。尤其,當RAID控制器的寫入等待時間(write latency)較短時,該電腦系統(tǒng)的整體性能將大為提升。寫入等待時間是指RAID控制器需要完成從該電腦系統(tǒng)所發(fā)出的寫入請求時所需的時間。

大多數(shù)RAID控制器包括較大的高速緩沖存儲器以用于從這些磁盤驅(qū)動器緩存用戶數(shù)據(jù)。因為RAID控制器無須執(zhí)行從磁盤驅(qū)動器讀取數(shù)據(jù)的冗長操作,所以當所請求的數(shù)據(jù)在高速緩沖存儲器中時,對數(shù)據(jù)進行緩存使RAID控制器能夠?qū)?shù)據(jù)快速回傳到電腦系統(tǒng)。高速緩沖存儲器也可以經(jīng)所謂的后寫入操作(posted-writeoperation)以用于減少寫入請求等待時間。在后寫入操作中,RAID控制器從電腦系統(tǒng)將該電腦系統(tǒng)所指定的數(shù)據(jù)讀取到RAID控制器的高速緩沖存儲器中,然后立即告知該電腦系統(tǒng)該寫入請求已完成,即使該RAID控制器未將該數(shù)據(jù)寫入這些磁盤驅(qū)動器中。后寫入操作在RAID控制器中特別有用,因為在部分冗余的RAID級別中(RAIDlevel),在多個磁盤驅(qū)動器上必須執(zhí)行讀取-修改-寫入操作(read-modify-write operation)以完成該系統(tǒng)的寫入請求。換言之,除了所指定的系統(tǒng)數(shù)據(jù)必須寫入至這些磁盤驅(qū)動器外,這些磁盤驅(qū)動器的部分也必須在用戶數(shù)據(jù)和冗余數(shù)據(jù)可以被寫入到這些磁盤驅(qū)動器前先被讀取,此動作若不憑借后寫入操作的優(yōu)勢來執(zhí)行將會使RAID控制器的寫入等待時間拉長甚至超過未用RAID控制器。

然而,后寫入操作容易由于掉電而造成系統(tǒng)的數(shù)據(jù)丟失。這是因為高速緩沖存儲器是易失性存儲器,所以當?shù)綦姇r,暫存于該高速緩沖存儲器中的尚未寫入到磁盤驅(qū)動器的數(shù)據(jù)將丟失。

為解決此問題,有些RAID控制器包括電池以持續(xù)提供高速緩沖存儲器在主電源損耗時所需的電能。雖然電池降低用戶數(shù)據(jù)丟失的可能性,然而由于電池所存儲的電能是有限的,因此仍然存在當電池的電能耗盡時并且主電源仍無法恢復(fù)時,用戶數(shù)據(jù)將丟失的可能性。不同用戶的RAID系統(tǒng)所需電池供應(yīng)給其高速緩沖存儲器的電能的最短時間長度并不相同,但在一般情況下,大部分用戶需要至少72小時以備在一周中可能發(fā)生的斷電。

另外,使用電池在應(yīng)用上還有不少眾所周知的限制,如下所述。首先,電池對RAID控制器而言無疑是相對昂貴的部件。第二,目前電池相關(guān)技術(shù)也顯示電池所能維持的電能在2到3年后便開始減弱,并且此壽命也比RAID控制器的預(yù)期壽命短。因此,RAID控制器必須將電池納入設(shè)計中并且將其視為現(xiàn)場可替換單元(field-replaceable unit),并且通常情況下,其是可熱插拔的現(xiàn)場可替換單元。也因此提高了RAID控制器的成本。第三,在不影響電池壽命和性能降低情況下的操作溫度范圍相當窄。第四,當電池電能為彌補主電源短缺而耗盡時,RAID控制器將必須以低性能的直寫式(write-through)高速緩存模式下操作直到電池電能重新充足,而此電池充電時間較長。第五,當高速緩沖存儲器的容量增大時,同樣地,所需的電池電能以彌補主電源斷電也相對增加;若將其所需的電能視為電池電能密度,則當需求的電能增加時,電池的大小也將相對的增加并且甚至可能會超過RAID控制器上所提供的電池容納空間。

為解決上述問題,2005年9月14日提交的美國專利申請No.11/226,825公開了包括電容器組或者電池的存儲控制器,以及諸如閃速存儲器(flash memory)的非易失性存儲器。當主電源中斷時,該電容器組或者電池可以從存于其中的電能提供給該控制器以用于將寫緩存的數(shù)據(jù)備份或者刷寫到該非易失性存儲器。因而,即使該電容器組或者電池的電能耗盡時并且無法在主電源恢復(fù)前提供所需電能,將該寫緩存的數(shù)據(jù)保存在該非易失性存儲器中,以致當主電源恢復(fù)時并且該控制器重新啟動后,該寫緩存的數(shù)據(jù)可以恢復(fù)或者還原至該寫緩存中,然后再刷寫到磁盤驅(qū)動器。

無論是用電池或者電容器組作為充電式能源以供應(yīng)備用電源,監(jiān)測該能源以確保該能源持續(xù)具有可以提供足夠電能以執(zhí)行備份操作是非常重要,并且以此防止寫緩存的數(shù)據(jù)的丟失。當電源不再存有足夠電能以執(zhí)行其所需功能時,例如供應(yīng)執(zhí)行備份操作所需的電能,則可以認為該電源的壽命已耗盡。若該電源是電池,則監(jiān)測該電池的壽命較為單純,因為電池的壽命通常對于特定的電池技術(shù)是相對不變的。例如,常用于諸如寫緩存存儲控制器的應(yīng)用的鋰離子電池的壽命約為3年。因此,電池的所剩壽命可以單純直接地憑借記錄實際時間或者日歷時間來監(jiān)測,電池例如憑借實時時鐘電路(real-timeclock circuit)是現(xiàn)在。

不同于電池,電容器的壽命與其溫度、工作電壓、電極變化以及過強電流呈非線性函數(shù)關(guān)系,并且其壽命可以基于這些因素改變而有所不同。例如,在特定應(yīng)用中的特定工作電壓下,電容器的壽命在操作溫度為10攝氏度時為一百萬小時;而當同一電容器在操作溫度為80攝氏度時,該電容器的壽命可能僅只有一千個小時。同樣地,在特定溫度下,電容器在操作電壓為1.8V中可能會有比在2.5V的操作電壓中長近三倍的壽命。因此,單純地使用用于監(jiān)測電池壽命的實時時鐘技術(shù)對電容器而言在許多應(yīng)用上并不合適,因為電容器的不同壽命也會造成用于寫緩存存儲控制器的數(shù)據(jù)丟失的不可接受危險。

電容器制造商所建議的用于測量電容器的電容量(其是有效測量其壽命的方法,因其電容量決定了可存儲電能的多少)的方法是放電然后充電該電容器以測量充電時所需的時間和最大電流,并且憑借所測量的數(shù)值進而計算出其電容量。然而,此方法對寫緩存存儲控制器的相關(guān)應(yīng)用并不合適,由于此方法當該電容器在放電/充電過程中時,需要將該寫緩存設(shè)在直寫式模式中,以避免當主電源中斷而不能執(zhí)行備份操作時可能產(chǎn)生的寫緩存的數(shù)據(jù)的丟失。

因此,需要的是有別于監(jiān)測電容器組的實際存在時間或者憑借放電和充電來測量其電容量的方法,以確定電容器組的壽命。

除此之外,不同于電池,電容器組可以設(shè)計為非現(xiàn)場可替換的,并且該存儲控制器的制造商可以對消費者或用戶保證該存儲控制器的電容器組的壽命。因此,當電容器組的壽命可以大幅度改變時,需要的是如何提供方法以使該電容器組達到該存儲控制器制造商對用戶保證的壽命。


發(fā)明內(nèi)容

本發(fā)明當有必要時由存儲控制器調(diào)節(jié)電容器組的操作電壓,以便增加電容器組達到保證壽命的可能性。在一個實施例中,存儲控制器基于此電容器組的采樣操作溫度和電壓值的歷史記錄,以及用于各種溫度和電壓組合的憑經(jīng)驗確定出壽命,計算電容器組的預(yù)期壽命,然后比較預(yù)期壽命與保證壽命以確定何時需要調(diào)節(jié)該電壓。在另一實施例中,存儲控制器計算電容器組的累積標準化運行時間,并且比較電容器組的累積標準化運行時間與電容器組的累積日歷運行時間,以確定何時需要調(diào)節(jié)該電壓。在另一實施例中,存儲控制器計算電容器組的電容量下降百分率,并且比較電容器組的電容量下降百分率與壽命末端電容量下降百分率,以確定何時需要調(diào)節(jié)該電壓。在一個實施例中,存儲控制器響應(yīng)檢測該電容器組溫度已超過預(yù)設(shè)閾值,而檢測到此電壓需要調(diào)節(jié)。

本發(fā)明在一個方面提供了用于在存儲控制器中增加供應(yīng)電容器組的保證壽命的可能性的方法。此方法包括在操作在第一電壓值時檢測電容器組的溫度已超過預(yù)設(shè)閾值,以及確定電容器組的預(yù)期壽命是否小于保證壽命。此方法還包括若電容器組的預(yù)期壽命小于保證壽命,則將電容器組的操作電壓降低到第二值,以增加電容器組的預(yù)期壽命。

本發(fā)明在另一方面提供了用于在存儲控制器中提供電容器組的保證壽命的方法。此方法包括當操作在第一電壓值時檢測電容器組的溫度已超過預(yù)設(shè)閾值,以及確定電容器組的累積標準化運行時間是否大于電容器組的累積日歷運行時間。此方法還包括若該累積標準化運行時間大于累積日歷運行時間,則將電容器組的操作電壓降低至第二值,以便增加電容器組的預(yù)期壽命。

本發(fā)明在再一方面提供了在存儲控制器中提供電容器組的保證壽命的方法。此方法包括當操作電壓為第一電壓值時,檢測電容器組的溫度已超過預(yù)設(shè)閾值,以及確定電容器組的電容量下降百分率大于電容器組之日歷時間電容量下降百分率。此方法還包括若電容量下降百分率大于日歷時間電容量下降百分率,則將電容器組的操作電壓降低至第二值,以增加電容器組的預(yù)期壽命。

本發(fā)明在又一方面提供了一種存儲控制器。此控制器包括在供應(yīng)給存儲控制器的主電源斷電期間存儲電能以提供給存儲控制器的電容器組。此控制器還包括耦合到電容器組并且感測電容器組溫度的溫度傳感器,此控制器還包括耦合到溫度傳感器的CPU,此CPU當操作在第一電壓值時檢測電容器組的溫度已超過預(yù)設(shè)閾值,以及確定電容器組的預(yù)期壽命是否小于保證壽命。若電容器組的預(yù)期壽命小于保證壽命,則此CPU還將電容器組的操作電壓降低到第二值,以增加電容器組的預(yù)期壽命。

本發(fā)明在再一方面提供了一種存儲控制器。此控制器包括在供應(yīng)給存儲控制器的主電源斷電期間存儲電能以提供給存儲控制器的電容器組。此控制器還包括耦合到電容器組并且感測電容器組溫度的溫度傳感器,此控制器還包括耦合到溫度傳感器的CPU,此CPU當操作在第一電壓值時檢測電容器組的溫度已超過預(yù)設(shè)閾值,以及確定電容器組的累積標準化運行時間是否大于電容器組的累積日歷運行時間。若累積標準化運行時間大于累積日歷運行時間,則此CPU還將電容器組的操作電壓降低至第二值,以便增加電容器組的預(yù)期壽命。

本發(fā)明在又一方面提供了一種存儲控制器。此控制器包括在供應(yīng)給存儲控制器的主電源斷電期間存儲電能以提供給存儲控制器的電容器組。此控制器還包括耦合到電容器組并且感測電容器組溫度的溫度傳感器,此控制器還包括耦合到溫度傳感器的CPU,此CPU當操作在第一電壓值時檢測電容器組的溫度已超過預(yù)設(shè)閾值,并且確定電容器組的電容量下降百分率是否大于電容器組的日歷時間電容量下降百分率。若電容量下降百分率大于日歷時間電容量下降百分率,則此CPU還將電容器組的操作電壓降低至第二值,以便增加電容器組的預(yù)期壽命。




圖1是示出根據(jù)本發(fā)明的RAID控制器的方塊圖;
圖2是更詳細示出根據(jù)本發(fā)明的圖1的存儲器控制器的方塊圖;
圖3是示出根據(jù)本發(fā)明的圖2的CSRs的方塊圖;
圖4是示出根據(jù)本發(fā)明的圖1的RAID控制器執(zhí)行刷寫操作的流程圖;
圖5是示出根據(jù)本發(fā)明的圖1的RAID控制器在主電源中斷后恢復(fù)供電情況下的流程圖;
圖6是示出根據(jù)本發(fā)明替代實施例的RAID的的方塊圖;
圖7是示出根據(jù)本發(fā)明替代實施例的圖6的RAID控制器執(zhí)行刷寫操作的流程圖;
圖8是示出根據(jù)本發(fā)明的圖1的電容器組在不同溫度和電壓條件組合下的電容器組的壽命的表或數(shù)據(jù)庫的方框圖;
圖9是示出根據(jù)本發(fā)明的圖1的RAID控制器的操作流程圖;
圖10是示出根據(jù)本發(fā)明的圖1的RAID控制器的操作流程圖;
圖11是示出根據(jù)本發(fā)明的圖1的RAID控制器的操作流程圖;
圖12是示出根據(jù)本發(fā)明的圖1的RAID控制器的操作流程圖;
圖13是示出根據(jù)本發(fā)明替代實施例的RAID控制器的操作流程圖;
圖14是示出根據(jù)本發(fā)明替代實施例的RAID控制器的操作流程圖;
圖15是示出根據(jù)本發(fā)明替代實施例的RAID控制器的操作流程圖。

具體實施例方式
現(xiàn)在參照圖1,示出根據(jù)本發(fā)明的RAID控制器100的方塊圖。在一個實施例中,RAID控制器100可以是一對雙主動冗余容錯(active-active redundant fault-tolerant)RAID控制器之一,以提供高數(shù)據(jù)可用性。當一個RAID控制器100故障時,例如在此所述的將后寫入數(shù)據(jù)從易失性存儲器刷寫到非易失性存儲器時發(fā)生故障,此時該系統(tǒng)將故障轉(zhuǎn)移(failover)至其它RAID控制器100。RAID控制器100包括一個或多個電容器,以供應(yīng)當主電源中斷時該RAID100所選部分的電路所需的電源,因此使存儲器控制器可以快速并且有效率地將后寫入數(shù)據(jù)從高速緩沖存儲器刷寫到非易失性存儲器。有利地,RAID控制器100周期性地采樣電容器的溫度和電壓,并且使用用于標準化該電容器的操作間隔的壽命特性信息,適當?shù)赜嬎愠鲞@些電容器的有效年齡,其中該壽命信息是基于實驗并且以所采樣的溫度和電壓值的組合而獲得的信息。另外,RAID控制器100動態(tài)地調(diào)整電容器的操作電壓,例如響應(yīng)溫度上升而調(diào)整,基于電容器的有效年齡作為確認這些電容器達到對用戶保證的壽命的依據(jù)。最后,若控制器確定這些電容器的電容量已下降到不具存儲足夠電能以在新調(diào)整的電壓中執(zhí)行備份操作時,該控制器將動態(tài)地將寫緩存值的大小減少到使這些電容器具有可以存儲足夠電能執(zhí)行備份操作的電容量的合適大小。

RAID控制器100包括主機接口118,以與主電腦進行接口。在一個實施例中,該RAID控制器100是基于局部總線的控制器,例如插入或集成到主電腦系統(tǒng)的諸如PCI、PCI-X、CompactPCI、PCI-Express、PCI-X2、EISA、VESA、VME、RapidIO、AGP、ISA、3GIO、HyperTransport、Futurebus、MultiBus或任何其它局部總線的局部I/O總線的控制器。在該類型的實施例中,主機接口118包括局部總線類型的局部總線接口。在另一實施例中,RAID控制器100是獨立式(standalone)控制器,其與向RAID控制器100發(fā)出I/O請求的主電腦分隔的外殼中。例如,該RAID控制器100可以是部分的存儲區(qū)域網(wǎng)絡(luò)(storage area network/SAN)。在該類型的實施例中,該主機接口118可以包括不同的接口,例如光纖通道、Ethernet、InfiniBand、SCSI、HIPPI、Token Ring、Arcnet、FDDI、LocalTalk、ESCON、FICON、ATM、SAS、SATA、iSCSI以及其它類似接口。

RAID控制器100還包括磁盤接口116,以與磁盤驅(qū)動器或其它大容量存儲裝置進行接口,其中磁盤驅(qū)動器或大容量存儲裝置包括但不僅限于磁帶機、固態(tài)磁盤(solid-state disk/SSD)以及諸如CDROM或DVD驅(qū)動器的光學存儲裝置。這些磁盤驅(qū)動器存儲用戶數(shù)據(jù)。該磁盤接口116可以包括但不僅限于以下接口光纖通道、小型電腦系統(tǒng)接口(SCSI)、高級技術(shù)附件(Advanced TechnologyAttachment/ATA)、串行連接的SCSI(Serial Attached SCSI/SAS)、串行高級技術(shù)附件(Serial Advanced Technology Attachment/SATA)、Ethernet、Infiniband、HIPPI、ESCON、iSCSI或FICON。RAID控制器100響應(yīng)從主電腦所收到的I/O請求以從這些磁盤驅(qū)動器讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入到這些磁盤驅(qū)動器。

RAID控制器100還包括易失性高速緩沖存儲器104,或高速緩沖存儲器104或易失性存儲器104。該易失性高速緩沖存儲器104包括寫緩存156和讀高速緩沖存儲器158。當該易失性高速緩沖存儲器104是易失性時,存儲于其中的數(shù)據(jù)將因掉電而消失。在一個實施例中,該易失性高速緩沖存儲器104包括雙倍數(shù)據(jù)傳輸速率同步動態(tài)隨機存取存儲器(double-data-rate synchronous dynamic random accessmemory/DDR SDRAM),其包括自我刷新模式。當SDRAM設(shè)于自我刷新模式中時,該SDRAM消耗較少于不在自我刷新模式下操作時的電源。在其它實施例中,該易失性高速緩沖存儲器104可以包括其它形式的易失性存儲器,包括但不僅限于靜態(tài)隨機存取存儲器(SRAM)。易失性高速緩沖存儲器104的容量或大小也是相當重要的。易失性高速緩沖存儲器104包括512MB、1GB以及2GB大小的實施例;然而,其他較大或較小的易失性高速緩沖存儲器104也可運用或包括于RAID控制器100上。

RAID控制器100使用易失性高速緩沖存儲器104以緩沖傳輸在主機與磁盤之間的數(shù)據(jù)。當主機要求將數(shù)據(jù)寫入磁盤時,RAID控制器100經(jīng)由主機接口118將數(shù)據(jù)從主機傳送到易失性高速緩沖存儲器104的寫緩存156中,然后再將該數(shù)據(jù)從該寫緩存156經(jīng)由磁盤接口116傳送到這些磁盤中。相反地,當主機要求數(shù)據(jù)從磁盤讀取時,RAID控制器100經(jīng)由磁盤接口116將數(shù)據(jù)從這些磁盤傳送到易失性高速緩沖存儲器104的讀高速緩沖存儲器158中,然后再將該數(shù)據(jù)從該讀高速緩沖存儲器158經(jīng)主機接口118傳送到主機。

如上所述,當主機要求將數(shù)據(jù)寫入到磁盤時,RAID控制器100經(jīng)由主機接口118將數(shù)據(jù)從主機傳送到易失性高速緩沖存儲器104中,然后再將該數(shù)據(jù)從該易失性高速緩沖存儲器104經(jīng)由磁盤接口116傳送到這些磁盤中。通常,RAID控制器100在數(shù)據(jù)已實際寫入磁盤前,并無需告知主機該寫入請求已完成。然而,RAID控制器100經(jīng)配置而可以將數(shù)據(jù)緩存在易失性高速緩沖存儲器104中,并且可在數(shù)據(jù)實際寫入磁盤前,告知主機該寫入請求已完成,然后再將數(shù)據(jù)寫入或刷寫到磁盤中。此操作稱為寫緩存(write-caching),也可稱為后寫入操作。與后寫入操作相關(guān)的數(shù)據(jù)稱為后寫入數(shù)據(jù),或者寫緩存數(shù)據(jù)。即,后寫入數(shù)據(jù)是存儲于易失性高速緩沖存儲器104中而未被寫入到磁盤驅(qū)動器中的數(shù)據(jù),但就RAID控制器100而言,該RAID控制器100已告知主機該寫入操作已完成。另外,在此所指的后寫入數(shù)據(jù)可以包括元數(shù)據(jù)(metadata),其用于指代將數(shù)據(jù)寫入磁盤時所需的控制信息,包括但不僅限于寫入數(shù)據(jù)的邏輯塊地址和磁盤驅(qū)動器單元號、以及指定該數(shù)據(jù)是否為具有RAID級別的RAID陣列的部分的信息以基于必須被寫入磁盤的后寫入數(shù)據(jù)進而產(chǎn)生所需的冗余數(shù)據(jù)。

RAID控制器100還可以用易失性高速緩沖存儲器104以執(zhí)行數(shù)據(jù)的讀緩存;即,若因先前對相同數(shù)據(jù)的讀取請求,故所請求的數(shù)據(jù)已存在于該易失性高速緩沖存儲器104中時,將所請求的數(shù)據(jù)從該易失性高速緩沖存儲器104提供到主機,而不是從磁盤提供。最后,RAID控制器100可以使用易失性高速緩沖存儲器104以緩沖為寫入磁盤而產(chǎn)生的冗余RAID數(shù)據(jù)。

RAID控制器100還包括中央處理器(CPU)子系統(tǒng)112,用于提取和執(zhí)行程序指令進而控制在磁盤驅(qū)動器與主機之間數(shù)據(jù)的傳輸,如上所述。該CPU子系統(tǒng)112可以包括任何處理器,該處理器可執(zhí)行所存儲的程序,包括但不僅限于例如,處理器和芯片組,例如x86體系結(jié)構(gòu)的處理器以及公知的北橋或存儲器控制集線器(Memory Control Hub/MCH)和南橋或I/O控制集線器(I/O ControlHub/ICH),其包括I/O總線接口,例如連接至ISA總線或PCI系列的總線的接口。在一個實施例中,該CPU子系統(tǒng)112包括TransmetaTM8800處理器,其包括集成的北橋和Ali M1563S南橋。在另一實施例中,該CPU子系統(tǒng)112包括英特爾賽揚M(Intel Celeron M)處理器和北橋(MCH)和南橋(ICH)。在另一實施例中,該CPU子系統(tǒng)112還包括隨機存取存儲器(RAM)以存儲程序指令,使這些請求可由微處理器所提取和執(zhí)行,以及耦合到該CPU子系統(tǒng)112的閃速存儲器106用于將程序指令以非易失性方式存儲并且將這些指令解壓縮和寫入到程序RAM中以使其可由微處理器執(zhí)行。在一個實施例中,閃速存儲器106還存儲諸如簽名的信息,用于比較寫入到非易失性存儲器108(如下所述)的簽名以指示由該高速緩沖存儲器104刷寫到該非易失性存儲器108的操作是成功的,如下所述。

該CPU子系統(tǒng)112從主機接口118接收主電腦的I/O請求并且處理這些請求。處理這些請求包括了不同的功能。例如,主機I/O請求可指定邏輯塊號和數(shù)據(jù)塊的數(shù)目以用于傳輸?shù)饺哂嚓嚵谢驈脑撊哂嚓嚵袀鞒觯蝗欢@些邏輯塊號和塊數(shù)目通常并不相應(yīng)于合適的物理塊號和包括該冗余陣列的物理磁盤的塊數(shù)目。因此,在該主機I/O請求中所指定的邏輯塊號必須轉(zhuǎn)換為合適的物理塊號,塊數(shù)目和磁盤以用于執(zhí)行一個或多個在RAID控制器100與這些包括冗余陣列的磁盤之間數(shù)據(jù)的轉(zhuǎn)換。此轉(zhuǎn)換功能由該CPU子系統(tǒng)112所執(zhí)行。在一個實施例中,該CPU子系統(tǒng)112根據(jù)公知的RAID技術(shù)以執(zhí)行所述轉(zhuǎn)換。在執(zhí)行該轉(zhuǎn)換后,CPU子系統(tǒng)112編程該磁盤接口116以執(zhí)行在這些磁盤與易失性高速緩沖存儲器104之間數(shù)據(jù)的轉(zhuǎn)換。除此之外,CPU子系統(tǒng)112還編程該主機接口118以執(zhí)行在該主電腦和該易失性高速緩沖存儲器104之間數(shù)據(jù)的轉(zhuǎn)換。因而,當處理主機I/O請求以從主電腦寫入數(shù)據(jù)到冗余陣列時,該CPU子系統(tǒng)112將編程該主機接口118以從該主電腦傳送數(shù)據(jù)到該易失性高速緩沖存儲器104中;在數(shù)據(jù)接收進入該易失性高速緩沖存儲器104后,該CPU子系統(tǒng)112將編程磁盤接口116以從該易失性高速緩沖存儲器104傳送數(shù)據(jù)到包括有冗余陣列的磁盤的已轉(zhuǎn)換的合適物理塊號中。相反地,當處理主機I/O請求以從冗余陣列讀取數(shù)據(jù)到主電腦時,該CPU子系統(tǒng)112編程該磁盤接口116以從包括有冗余陣列的磁盤的已轉(zhuǎn)換的合適物理塊號傳送數(shù)據(jù)到該易失性高速緩沖存儲器104中;在該數(shù)據(jù)接收進入該易失性高速緩沖存儲器104后,該CPU子系統(tǒng)112將編程該主機接口118以從該易失性高速緩沖存儲器104傳送數(shù)據(jù)到主電腦。該CPU子系統(tǒng)112也執(zhí)行該易失性高速緩沖存儲器104的部分的分配管理的功能,尤指高速緩存管理;即,將該易失性高速緩沖存儲器104作為可高速緩存在易失性高速緩沖存儲器104中緩沖的部分數(shù)據(jù)的高速緩沖存儲器而管理,以便根據(jù)公知的高速緩存技術(shù)改善在該冗余陣列與主電腦之間的I/O性能。在一個實施例中,該CPU子系統(tǒng)112在特定RAID級別中所需的數(shù)據(jù)執(zhí)行異或(exclusive-OR)操作,這些特定RAID級別將奇偶數(shù)據(jù)(parity data)作為冗余數(shù)據(jù),如RAID級別5。在一個實施例中,該CPU子系統(tǒng)112編程專用的異或電路,該異或電路設(shè)于存儲器控制器102中以對用戶數(shù)據(jù)執(zhí)行異或操作以產(chǎn)生冗余奇偶數(shù)據(jù)。

RAID控制器100還包括非易失性存儲器108。該非易失性存儲器108因其在掉電時仍持續(xù)存儲內(nèi)含的所有數(shù)據(jù),所以是非易失性的存儲器。在一個實施例中,非易失性存儲器108包括緊湊型閃速(Compact FLASH)存儲器裝置,該緊湊型閃速存儲器裝置包括NAND閃存裝置和與ATA接口連接到存儲器控制器102(如下所述)的控制器。非易失性存儲器108的容量的實施例包括有256MB、512MB以及1GB;然而,設(shè)于RAID控制器100上的非易失性存儲器108的其他實施例也可為其他較大或較小容量。在一個實施例中,該非易失性存儲器108包括微型磁盤驅(qū)動器(micro-disk drive)。RAID控制器100使用非易失性存儲器108以備份或刷寫易失性高速緩沖存儲器104中的內(nèi)容,尤指后寫入數(shù)據(jù),故當主電源中斷并且恢復(fù)時,該后寫入數(shù)據(jù)可由該非易失性存儲器108恢復(fù)回至該易失性高速緩沖存儲器104中。在一個實施例中,該非易失性存儲器108包括NAND閃速存儲器陣列以供存儲器控制器102直接寫入。優(yōu)選地,在該陣列中的每一NAND閃速存儲器裝置包括8位寬的數(shù)據(jù)裝置,并且該裝置布置成使存儲器控制器102可執(zhí)行16位或32位寬的寫存取至非易失性存儲器108中以提升寫入速率,因而進一步減少刷寫操作的時間。在CPU 112上執(zhí)行的軟件程序存儲有在該非易失性存儲器108中的累積標準化運行時間152和累積日歷運行時間154。在替代實施例中,在CPU 112上執(zhí)行的軟件程序存儲有在該編碼閃速存儲器106中的該累積標準化運行時間152和累積日歷運行時間154。該累積標準化運行時間152和該累積日歷運行時間154的使用將在下面作詳細說明。

RAID控制器100還包括存儲器控制器102,其耦合到磁盤接口116、主機接口118、高速緩沖存儲器104以及非易失性存儲器108。該存儲器控制器102控制磁盤接口116、主機接口118、以及CPU子系統(tǒng)112到高速緩沖存儲器104和非易失性存儲器108的存取。在一個實施例中,存儲器控制器102還具有如總線橋(bus bridge)的功能,用于橋接在易失性高速緩沖存儲器104總線、非易失性存儲器108總線、CPU子系統(tǒng)112總線、主機接口118和磁盤接口116總線之間的通信。在一個實施例中,存儲器控制器102是定制的大規(guī)模集成電路。在一個實施例中,存儲器控制器102包括定制的可編程邏輯裝置。在此所述的存儲器控制器102可參照圖2進行更加詳細的描述。

在正常操作中,RAID控制器100接收由分設(shè)于該RAID控制器100之外的主電源所供應(yīng)的電源,包括但不僅限于商業(yè)上慣用的A/C電源,其是電源供應(yīng)領(lǐng)域的公知常識。然而,RAID控制器100還包括一個或多個電容器136或者電容器組136,以用于供應(yīng)該RAID控制器100在主電源中斷時所需的電源,如下詳述。若在這些電容器136上的部分或全部電荷或電能存儲因主電源中斷而耗盡時,這些電容器136可在主電源恢復(fù)時重新從該主電源充電。在一個實施例中,電容器136運用氣凝膠碳(aerogel carbon)技術(shù)作為活性物質(zhì)并且配置為單一包裝中的并聯(lián)電容器陣列。在一個實施例中,電容器136包括四個由Florida州Boynton Beach的隸屬庫柏工業(yè)旗下的庫柏博士曼公司(Cooper Bussman of Boynton Beach,a division of CooperIndustries)所制造的型號為B1860-2R5107 PowerStor B系列的氣凝膠超級電容器。然而,其他電容器的實施例也可采用,并且本發(fā)明并不局限于任一特定的電容器型號或技術(shù)上。

RAID控制器100還包括電源調(diào)節(jié)器134,其耦合到該控制器上以用于從電容器136和主電源兩者接收電源。該電源調(diào)節(jié)器134可感測主電源是否供應(yīng)電源;若是,則調(diào)節(jié)該主電源以將電源提供給不同的RAID控制器100電路。若該主電源未供應(yīng)足夠的電源,則該電源調(diào)節(jié)器134將調(diào)節(jié)該電容器136以將電源供應(yīng)給RAID控制器100電路的子集(subset),如下所述。

RAID控制器100還包括電源管理器132,其耦合到該電源調(diào)節(jié)器134和存儲器控制器102。該電源管理器132也可感測主電源是否供應(yīng)電源。若該電源管理器132感測到主電源中斷時,電源管理器將選擇性地指導存儲器控制器102從高速緩沖存儲器104中刷寫后將數(shù)據(jù)寫入非易失性存儲器108中,如下詳述。在一個實施例中,該電源管理器132包括微型復(fù)雜可編程邏輯裝置(CPLD),其消耗的電源相當少。另外,也可運用其他電路以達到上述由電源管理器132的功能,如定制的集成電路或分立元件。

如圖1所示的實施例,當主電源中斷時,電容器136將僅將電源供應(yīng)給高速緩沖存儲器104、非易失性存儲器108、存儲器控制器102、以及電源管理器132,還有其它需用于維持這些電路運行的電路,例如將存儲器控制器102耦合到高速緩沖存儲器104的高速存儲器總線的總線端連接器。優(yōu)選地,電容器136并不需要將電源供應(yīng)給無需執(zhí)行刷寫操作的電路,例如CPU子系統(tǒng)112、磁盤接口116、主機接口118以及存儲器控制器102的非必要部分,例如在該CPU子系統(tǒng)112、磁盤接口116、主機接口118之間的接口部分。

根據(jù)本發(fā)明所公開的技術(shù)內(nèi)容,刷寫(flush)操作泛指當主電源中斷時,將數(shù)據(jù)從高速緩沖存儲器104復(fù)制到非易失性存儲器108中;而恢復(fù)(restore)操作泛指當電源恢復(fù)后,將數(shù)據(jù)從非易失性存儲器108復(fù)制到高速緩沖存儲器104中。當電源恢復(fù)后,RAID控制器100可選擇性地執(zhí)行恢復(fù)操作,如下詳述。

RAID控制器100還包括溫度傳感器142,以感測電容器組136的環(huán)境溫度,并且將采樣的溫度提供到CPU 112。另外,RAID控制器100還包括電壓傳感器144,以感測電容器組136的電壓,并且將采樣的電壓提供到CPU 112。除此之外,RAID控制器100還包括電流傳感器146,以感測電容器組136在充電時所用的電流,并且將采樣的電流提供到CPU 112。在一個實施例中,該CPU 112經(jīng)由存儲器控制器102和/或電源管理器器132讀取這些采樣的溫度、電壓以及電流。在一個實施例中,該溫度傳感器142、電壓傳感器144以及電流傳感器146包括有I2C從裝置,其包括模數(shù)轉(zhuǎn)換器。該CPU 112使用這些采樣的溫度、電壓以及電流值以監(jiān)測并且維持電容器組136的壽命,如下詳述。

參照圖2,其更加詳細示出根據(jù)本發(fā)明的圖1的存儲器控制器102的方塊圖。該存儲器控制器102包括控制邏輯214以用于控制該存儲器控制器102的不同部分。在一個實施例中,該控制邏輯214包括直接存儲器存取控制器(DMAC),其可在刷寫操作中將數(shù)據(jù)從易失性高速緩沖存儲器104復(fù)制到非易失性存儲器108。

該控制邏輯214可接收來自圖1的電源管理器132的重置信號226。當電源管理器132斷言該重置信號226時,該存儲器控制器102將重置。電源管理器132配置為選擇性地重置高速緩沖存儲器104,故當RAID控制器100重置或當主電源恢復(fù)時,若該高速緩沖存儲器104中的內(nèi)容仍為有效時,該存儲器控制器102將不會使該高速緩沖存儲器104中的內(nèi)容成為無效。例如,若高速緩沖存儲器器104處于執(zhí)行刷寫操作的過程中時,電源管理器132不會重置存儲器控制器102,因此可允許CPU子系統(tǒng)112順利地中斷該刷寫操作,如下所述。

控制邏輯214也從電源管理器132接收pwr_state信號222。該電源管理器132經(jīng)由如下表1所示的pwr_state信號222指示存儲器控制器102執(zhí)行相關(guān)動作。尤其,電源管理器132可指示存儲器控制器102用該pwr_state信號222的一個值,將高速緩沖存儲器104的內(nèi)容刷寫到非易失性存儲器108中,并且指示存儲器控制器102用該pwr_state信號222的另一個值,將高速緩沖存儲器104放置于自我刷新模式,以應(yīng)對不同的情況,例如主電源中斷或刷寫操作完成,如下所述。
表1-PWR_STATE信號
控制邏輯214還將flush_status信號224提供給電源管理器132。存儲器控制器102以現(xiàn)有的高速緩沖存儲器104經(jīng)由該flush_status信號224將電源管理器132提供給非易失性存儲器108刷寫狀態(tài),如下表2所示。尤其,存儲器控制器102可經(jīng)由該flush_status信號224告知電源控制器132刷寫操作是否進行中,以及告知刷寫操作是否完成無誤或有誤。
表2-FLUSH_STATUS信號
存儲器控制器102還可包括局部總線接口216(例如PCI-X接口)以作為存儲器控制器102連接至磁盤接口116的接口;另一局部總線接口218(例如PCI-X接口)以作為存儲器控制器102連接到主機接口118的接口;存儲器總線接口204(如DDR SDRAM接口)以作為存儲器控制器102連接至高速緩沖存儲器104的接口;以及ATA接口208以作為存儲器控制器102連接至非易失性存儲器108的接口。這些局部總線接口216和218、存儲器總線接口204和ATA接口208都耦合到控制邏輯214并且都耦合到緩沖器206(例如先進先出型/first-in-first-out/FIFO的緩沖器),其用于緩沖在多個接口間傳輸?shù)臄?shù)據(jù)并且在彼此之間提供并聯(lián)高速數(shù)據(jù)傳輸通路。在一個實施例中,ATA接口208支持ATA PIO Mode-4和數(shù)據(jù)傳輸速率可高達每秒16.7MB的速率。

存儲器控制器102還包括諸如PCI接口的局部總線接口212,其耦合到控制邏輯214,以作為存儲器控制器102連接到CPU子系統(tǒng)212的接口。CPU子系統(tǒng)112可經(jīng)由該PCI接口212對高速緩沖存儲器104、非易失性存儲器108、磁盤接口116以及主機接口118作存取。

存儲器控制器102還包括控制和狀態(tài)寄存器(CSRs)202,其耦合到局部總線接口212和控制邏輯214。這些CSRs 202都由圖1的CPU子系統(tǒng)112所編程以控制存儲器控制器102,并且可被CPU子系統(tǒng)112讀取以使存儲器控制器102將狀態(tài)提供給CPU子系統(tǒng)112。在這些CSRs 202之間的是可使CPU子系統(tǒng)112指定一個或多個在高速緩沖存儲器104中的數(shù)據(jù)區(qū)的位置和大小的控制寄存器,其中這些數(shù)據(jù)區(qū)的數(shù)據(jù)可為例如后寫入數(shù)據(jù),并且當主電源中斷時,存儲器控制器102將該高速緩沖存儲器104刷寫到非易失性存儲器108中。以下將進一步說明這些CSRs 202并請參照圖3。

參照圖3,其示出了根據(jù)本發(fā)明的圖2的CSRs 202的方塊圖。各種CSRs 202及其內(nèi)容將在下面的文字和圖表中闡述。

NVB_FLUSH_CRL寄存器302提供CPU子系統(tǒng)112類似于電源管理器132經(jīng)由pwr_state信號222啟動刷寫操作的啟動刷寫操作能力,并且提供CPU子系統(tǒng)112類似于電源管理器132經(jīng)由flush_state信號224讀取刷寫操作狀態(tài)的讀取刷寫操作狀態(tài)能力。當主電源恢復(fù)并且CPU子系統(tǒng)112程序開始時,刷寫操作可能仍處于進行中,并且高速緩沖存儲器104的內(nèi)容可能仍為有效的。因此,在一個實施例中,CPU子系統(tǒng)112可通過將0值寫入在如下表3所示的NVB_FLUSH_CTRL寄存器302中的FLUSH_START位,以指示存儲器控制器102中止尚在進行中的刷寫操作(如前述,因該高速緩沖存儲器104的內(nèi)容仍可能為有效的)。
表3-NVB_FLUSH_CTRL寄存器/Register
NVB_RESTORE_CTRL寄存器302使CPU子系統(tǒng)112可啟動恢復(fù)操作以從非易失性存儲器108恢復(fù)到高速緩沖存儲器104,并且使CPU子系統(tǒng)112可讀取恢復(fù)操作的狀態(tài)。
表4-NVB_RESTORE_CTRL寄存器
NVB_RAM_START_ADDR1寄存器306指定在數(shù)據(jù)的第一區(qū)的高速緩沖存儲器104中的開始地址,該數(shù)據(jù)分別是刷寫或恢復(fù)操作的發(fā)信方或收信方。
表5-NVB_RAM_START_ADDR1寄存器
NVB_ATA_START_ADDR1寄存器308指定在數(shù)據(jù)的第一區(qū)的非易失性存儲器108中的開始地址,該數(shù)據(jù)分別是刷寫或恢復(fù)操作的發(fā)信方或收信方。在一個實施例中,存儲器控制器102將在該NVB_ATA_START_ADDR1寄存器308中所指定的非易失性存儲器108的地址轉(zhuǎn)換為扇區(qū)(sector)號,即若所述非易失性存儲器108是已分段的ATA裝置時的前提下。
表6-NVB_ATA_START_ADDR1寄存器
NVB_SIZE1寄存器312指定數(shù)據(jù)的第一區(qū)的整體大小或長度,該數(shù)據(jù)可通過刷寫或恢復(fù)操作而被復(fù)制。
表7-NVB_SIZE1寄存器
NVB_RAM_START_ADDR2寄存器314指定在數(shù)據(jù)的第二區(qū)的高速緩沖存儲器104中的開始地址,該數(shù)據(jù)分別是刷寫或恢復(fù)操作的發(fā)信方或收信方。
表8-NVB_RAM_START_ADDR2寄存器
NVB_ATA_START_ADDR2寄存器316指定在數(shù)據(jù)的第二區(qū)的非易失性存儲器108中的開始地址,該數(shù)據(jù)分別是刷寫或恢復(fù)操作的發(fā)信方或收信方。在一個實施例中,存儲器控制器102將在該NVB_ATA_START_ADDR2寄存器316中所指定的非易失性存儲器108的地址轉(zhuǎn)換為扇區(qū)號,即若所述非易失性存儲器108是已分段的ATA裝置時或前提下。
表9-NVB_ATA_START_ADDR2寄存器
NVB_SIZE2寄存器318指定數(shù)據(jù)的第二區(qū)的整體大小或長度,該數(shù)據(jù)可通過刷寫或恢復(fù)操作而被復(fù)制。
表10-NVB_SIZE2寄存器
NVB_SECTOR_COUNT寄存器322指定扇區(qū)數(shù)目以用于存儲器控制器102發(fā)出給非易失性存儲器108ATA裝置的每一寫入/讀取命令。NVB_SECTOR_COUNT寄存器322可用于最優(yōu)化非易失性存儲器108ATA裝置的刷寫操作和自非易失性存儲器108的恢復(fù)操作的速度。NVB_SECTOR_COUNT寄存器322與NVB_SIZE寄存器312/318共同使用。例如,CPU子系統(tǒng)112可以以256KB值編程該NVB_SIZE寄存器312/318和以32值編程NVB_SECTOR_COUNT寄存器322,故可使256KB的數(shù)據(jù)以每32扇區(qū)(16KB)的16個寫入命令寫入。NVB_SIZE寄存器312/318必須以該NVB_SECTOR_COUNT寄存器322的值的乘積而編程。
表11-NVB_SECTOR_COUNT寄存器
NVB_PROGRESS寄存器324指定目前在高速緩沖存儲器104中分別被刷寫操作讀取或恢復(fù)操作寫入的地址。該NVB_PROGRESS寄存器324只有在進行刷寫或恢復(fù)操作時有效。該NVB_PROGRESS寄存器324使CPU子系統(tǒng)112能夠評價刷寫或恢復(fù)操作的進行過程。若刷寫或恢復(fù)操作產(chǎn)生錯誤,則該NVB_PROGRESS寄存器324的值將指定錯誤發(fā)生的大約地址。若刷寫或恢復(fù)操作中止,則NVB_PROGRESS寄存器324將在該中止發(fā)生后,增量(increment)到下一扇區(qū)。
表12-NVB_PROGRESS寄存器
ATA_INT_STATUS寄存器326可以由CPU子系統(tǒng)112所讀取,以確定非易失性存儲器108ATA裝置是否已產(chǎn)生中斷(interrupt),如在刷寫或恢復(fù)操作中成功讀取或?qū)懭霐?shù)據(jù)的一個或多個扇區(qū)時,確定刷寫或恢復(fù)操作是否已完成。該ATA_INT_STATUS寄存器326也可使CPU子系統(tǒng)112清除該中斷源。
表13-ATA_INT_STATUS寄存器
ATA_INT_ENABLE寄存器328使CPU子系統(tǒng)112可開啟或停止由ATA_INT_STATUS寄存器326所指定的中斷源。
表14-ATA_INT ENABLE寄存器
NVB_ERROR_CODE寄存器322可在NVB_FLUSH_CRTL寄存器302或NVB_RESTORE_CTRL寄存器304告知故障或失敗發(fā)生時,指定當刷寫或恢復(fù)操作完成時的錯誤類型。當檢測到ECC錯誤時,該操作將會終止于下一個扇區(qū)邊界處。因此,仍可在該錯誤發(fā)生后傳輸至多512字節(jié)(bytes)。在一個實施例中,CPU子系統(tǒng)112可有忽視ECC錯誤的能力。硬件檢測ATA裝置的錯誤是通過檢查ATA裝置狀態(tài)寄存器(ATA Device Status Register)的內(nèi)容而達成,其是在ATA直接存取寄存器342(ATA Direst Access Register)中的任務(wù)文件寄存器(Task File Register),如下所述。存儲器控制器102可在發(fā)出ATA請求并且每一扇區(qū)的傳輸完成后,讀取該ATA裝置狀態(tài)寄存器。因此,ATA裝置的錯誤可在該錯誤發(fā)生的扇區(qū)邊界處被檢測到并且回報,即,在ATA錯誤實際發(fā)生后仍可傳輸至多512字節(jié)。同樣地,ATA操作僅終止在扇區(qū)邊界上。
表15-NVB_ERROR_CODE寄存器
NVB_COFIG寄存器334使CPU子系統(tǒng)112可配置為刷寫操作的多種型態(tài)。尤其,CPU子系統(tǒng)112可使存儲器控制器102自動執(zhí)行刷寫操作或可停止存儲器控制器102使其不會自動執(zhí)行刷寫操作。另外,CPU子系統(tǒng)112還可經(jīng)由NVB_CONFIG寄存器334選擇性地指導存儲器控制器102將指定當刷寫操作終止時的刷寫操作結(jié)果的信息寫入非易失性存儲器108中,該信息可為該刷寫是否成功完成或中止或有錯誤發(fā)生,如下所敘述。存儲器控制器102將刷寫結(jié)果的信息寫入非易失性存儲器108ATA裝置的預(yù)設(shè)刷寫結(jié)果扇區(qū)中。在一個實施例中,刷寫結(jié)果扇區(qū)是該非易失性存儲器108的第一扇區(qū)。
表16-NVB_CONFIG寄存器
ATA_RESET寄存器336使CPU子系統(tǒng)112可重置該非易失性存儲器108ATA裝置。
表17-ATA_RESET寄存器
ATA_CRC寄存器338包括32位CRC供數(shù)據(jù)在刷寫或恢復(fù)操作完成時使用。若此方式已被允許,CRC數(shù)據(jù)可自動地寫入寫結(jié)果扇區(qū)中。在一個實施例中,刷寫操作將該CRC值寫入該寫結(jié)果扇區(qū)中,并且當執(zhí)行恢復(fù)操作時,該CRC值與ATA_CRC寄存器338值比較以確定在刷寫或恢復(fù)操作中是否有任何數(shù)據(jù)破壞的發(fā)生,即該比較是不匹配的結(jié)果。
表18-ATA_CRC寄存器
寫入非易失性存儲器108ATA裝置的刷寫結(jié)果扇區(qū)的刷寫結(jié)果信息的格式揭示在如下的表19。
表19-刷寫結(jié)果扇區(qū)形式
完成簽名(Completion Signature)的值還存儲在閃存106的編碼中,因此CPU子系統(tǒng)112可將該值與于非易失性存儲器108刷寫結(jié)果扇區(qū)中的完成簽名作比較,以確定刷寫操作是否成功。除此之外,在一個實施例中,存儲器控制器102可計算被刷寫至非易失性存儲器108的數(shù)據(jù)的運行的循環(huán)冗余碼/cyclic redundancy code(CRC),并且將最后的CRC值寫入在表19所示的偏置中的刷寫結(jié)果扇區(qū)。如此將可使CPU子系統(tǒng)112在恢復(fù)操作中讀取數(shù)據(jù)時產(chǎn)生CRC以通過將其與ATA_CRC寄存器338值作比較以確定該數(shù)據(jù)是否有效,即,經(jīng)由刷寫操作該數(shù)據(jù)正確地寫入非易失性存儲器108中。

ATA直接存取寄存器342包括控制和狀態(tài)寄存器以供CPU子系統(tǒng)112使用于與非易失性存儲器108ATA裝置通信。在一個實施例中,ATA直接存取寄存器342包括標準ATA寄存器文件,通稱為任務(wù)文件(Task File),其是磁盤驅(qū)動器領(lǐng)域所公知的。存儲器控制器102讀取和寫入該ATA直接存取寄存器342以對非易失性存儲器108ATA裝置執(zhí)行ATA命令,例如在刷寫操作中的后寫入數(shù)據(jù)的寫入和恢復(fù)操作中的數(shù)據(jù)讀取。CPU子系統(tǒng)112也可直接對ATA直接存取寄存器342作存取。

參照圖4,其示出根據(jù)本發(fā)明的圖1的RAID控制器100執(zhí)行刷寫操作的流程圖。該流程開始于方塊402。

在于方塊402中,CPU子系統(tǒng)112根據(jù)存儲器控制器102所需用于執(zhí)行自動刷寫操作的信息而編程圖3的存儲器控制器102CSRs 202。優(yōu)選地,CPU子系統(tǒng)112軟件程序執(zhí)行此功能并視其為啟動中的初始化序列。然而,對于如在此一并提及的動態(tài)寫緩存大小的實施例而言,在RAID控制器100的正常操作下,CPU 112仍可在啟動時間后以更新的信息編程存儲器控制器102CSRs 202以響應(yīng)寫緩存的大小調(diào)整。尤其,CPU子系統(tǒng)112可以以所需的值進而編程NVB_FLUSH_CTRL寄存器302、NVB_RAM_START_ADDR1寄存器306、NVB_ATA_START_PDDR1寄存器308、NVB_SIZE1寄存器312、NVB_RAM_START_ADDR2寄存器314、NVB_ATA_START_ADDR2寄存器316、NVB_SIZE2寄存器318、NVB_SECTOR_COUNT寄存器322、ATA_INT_ENABLE寄存器328以及NVB_CONFIG寄存器334,以提供存儲器控制器102執(zhí)行刷寫操作時所需的信息。在一個實施例中,CPU子系統(tǒng)112編程存儲器控制器102以刷寫所有高速緩存的數(shù)據(jù),即后寫入數(shù)據(jù)和讀緩存數(shù)據(jù);然而,在另一實施例中,CPU子系統(tǒng)112編程存儲器控制器102以僅包括后寫入數(shù)據(jù),藉此而減少執(zhí)行刷寫操作所需的電能和時間。另外,CPU子系統(tǒng)112可初始化刷寫結(jié)果扇區(qū)為預(yù)設(shè)值,以使CPU子系統(tǒng)112可確定存儲器控制器102是否在刷寫操作后,成功地將刷寫操作結(jié)果的信息寫入刷寫結(jié)果扇區(qū)。例如,在一個實施例中,CPU子系統(tǒng)112以用在該扇區(qū)中的每一字節(jié)的0xFF值進而寫入或擦除該刷寫結(jié)果扇區(qū)。當主電源將電源供應(yīng)給RAID控制器100時,CPU子系統(tǒng)112將隨后開始正常運行。正常操作包括執(zhí)行后寫入操作,其可使后寫入數(shù)據(jù)存入易失性高速緩沖存儲器104中。流程進行到方塊404。

在方塊404中,主電源無法將電源供應(yīng)給RAID控制器100。因此,電容器136開始將電源供應(yīng)給RAID控制器100的預(yù)設(shè)部分,即高速緩沖存儲器104、非易失性存儲器108、存儲器控制器102、電源管理器132、和電源調(diào)節(jié)器134以及其他相關(guān)電路。尤其,電容器136并不將電源提供給CPU子系統(tǒng)112、磁盤接口116、或者主機接口118。另外,PCI-X接口216和218以及FIFOs 206由于這些接口僅用作與磁盤接口116和主機接口118的接口,因此電容器136可不將電源供應(yīng)給這些接口。因此優(yōu)選地,CPU子系統(tǒng)112、磁盤接口116、主機接口118以及存儲器控制器102的非必要部分,都將不在刷寫操作時消耗電源,藉此RAID控制器100可使電容器136存儲較少的電能,其隱含這些電容器136是較不昂貴和/或僅需較小空間的電容器。另外,由于CPU子系統(tǒng)112、磁盤接口116以及主機接口118并不消耗存于電容器136中的電能,因此電容器136在刷寫操作完成后仍可保留較多的電能,也因此增加了電容器136可在刷寫完成時仍持續(xù)供應(yīng)電源給高速緩沖存儲器104的可能性,故可完整保留后寫入數(shù)據(jù)以備當主電源恢復(fù)時恢復(fù)操作的需求,如下詳述。流程進行到方塊406。

在方塊406中,電源管理器132檢測主電源的中斷并且經(jīng)由pwr_state信號指示存儲器控制器102可開始將數(shù)據(jù)從高速緩沖存儲器104刷寫到非易失性存儲器108的刷寫操作。流程進行到方塊408。

在方塊408中,若在NVB_CONFIG寄存器334中的AUTO_FLUSH_EN位被設(shè)定時,則存儲器控制器102將基于先前已編程到在方塊402處的CSRs 202中的信息執(zhí)行刷寫操作。尤其,存儲器控制器102,以NVB_SECTOR_COUNT寄存器322和ATA_INT_ENABLE寄存器328所指定的方式,將由NVB_RAM_START_ADDR1寄存器306/NVB_SIZE1寄存器312和NVB_RAM_START_ADDR2寄存器314/NVB_SIZE2寄存器318所指定的兩個區(qū)域中的數(shù)據(jù)復(fù)制到非易失性存儲器108中分別由NVB_ATA_START_ADDR1寄存器308和NVB_ATA_START_ADDR2寄存器316所指定的兩個位置。在一個實施例中,第一區(qū)域包括后寫入數(shù)據(jù)中含有實際用戶數(shù)據(jù)部分的數(shù)據(jù),而第二區(qū)域包括后寫入數(shù)據(jù)中是元數(shù)據(jù)部分的數(shù)據(jù)。在另一實施例中,該第一區(qū)域包括后寫入用戶數(shù)據(jù)和與其相關(guān)的元數(shù)據(jù),而該第二區(qū)域包括讀緩存(read-cached)用戶數(shù)據(jù)和與其相關(guān)的元數(shù)據(jù)。然而,這兩個區(qū)域的使用不僅限于這些實施例。而且,這些實施例也可不僅限于兩個數(shù)據(jù)區(qū)域,CSRs 202可包括指定較多或較少于兩個數(shù)據(jù)區(qū)域的寄存器。流程進行到方塊412。

在方塊412中,若在NVB_CONFIG寄存器334中的WR_FLUSHR_ESULTS_EN位被設(shè)定時,則存儲器控制器102可在刷寫操作后,將如表19所指定的刷寫結(jié)果信息寫入非易失性存儲器108的刷寫結(jié)果扇區(qū),該數(shù)據(jù)可為刷寫操作是否已成功、已中止或因錯誤而終止。若CPU子系統(tǒng)112中止刷寫(或恢復(fù))操作,或若存儲器控制器102在該刷寫(或恢復(fù))操作中檢測到ECC或ATA錯誤,則存儲器控制器102將終止該刷寫(或恢復(fù))操作于下一扇區(qū)邊界處。若在NVB_CONFIG寄存器334中的WR_FLUSH_RESULTS_EN位被設(shè)定時,存儲器控制器102將存寫刷寫結(jié)果扇區(qū)并且放置布爾(Boolean)值10到flush_status信號224上以及到NVB_FLUSH_CTRL寄存器302的FLUSH_STATUS位中。當存儲器控制器102將刷寫操作結(jié)果寫入刷寫結(jié)果扇區(qū)自身中時,若CPU子系統(tǒng)112指示中止或存儲器控制器102檢測到錯誤,則該刷寫操作結(jié)果將不一定可成功地被寫入至刷寫結(jié)果扇區(qū)中,并且若這些結(jié)果可被寫入,該刷寫結(jié)果的信息仍是不可靠的。流程進行到方塊414。

在方塊414中,電源管理器132命令存儲器控制器102初始化刷寫操作之后時,電源管理器132經(jīng)由flush_status信號224監(jiān)控該刷寫操作的過程。當該刷寫操作完成時,電源管理器132經(jīng)由pwr_state信號222命令存儲器控制器102將高速緩沖存儲器104設(shè)于自我刷新模式中,以減少可供高速緩沖存儲器104消耗的存于電容器136中的電能。流程進行到方塊416。

在方塊416中,存儲器控制器102將高速緩沖存儲器104設(shè)于自我刷新模式中以響應(yīng)于方塊414中的電源管理器132所執(zhí)行的命令。流程進行到方塊418。

在方塊418中,電源管理器132使電容器136僅將電源供應(yīng)給高速緩沖存儲器104。即,電源管理器132使電容器136不再將電源供應(yīng)給非易失性存儲器108和存儲器控制器102,以減少等待直到主電源恢復(fù)前所消耗的存于電容器136中的電源。流程終止在方塊418。

參照圖5,其示出根據(jù)本發(fā)明的圖1的RAID控制器100在主電源從主電源故障恢復(fù)后的操作流程圖。流程開始在方塊502。

在方塊502中,主電源恢復(fù)將電源供應(yīng)給RAID控制器100。因此,CPU子系統(tǒng)112的程序?qū)?,并且開始其初始化序列。流程進行到判定方塊504。

在判定方塊504中,CPU子系統(tǒng)112確定高速緩沖存儲器104的內(nèi)容是否仍為有效的。在一個實施例中,CPU子系統(tǒng)112通過檢測在電源管理器132中的數(shù)據(jù)完好指示器以確定高速緩沖存儲器104的內(nèi)容,其可由該存儲器控制器102寫入。電源管理器132配置為可使其在電源提升時,該數(shù)據(jù)完好指示器可重置為預(yù)設(shè)值,諸如零的布爾值。此外,電源管理器132的電源關(guān)閉閾值(power-off threshold)至少與高速緩沖存儲器104開始丟失其數(shù)據(jù)的電源閾值同高。當主電源中斷時,存儲器控制器102將不同于該加電重置值的值寫入該數(shù)據(jù)完好指示器中。因此,若電容器136無法將電源供應(yīng)給高速緩沖存儲器104(并且因此也無法將電源供應(yīng)給數(shù)據(jù)完好指示器),則當主電源恢復(fù)時,CPU子系統(tǒng)112將會從該數(shù)據(jù)完好指示器讀取該電源升高重置值,而非寫入存儲器控制器102的值。因此,若刷寫操作成功時,CPU子系統(tǒng)112將確定高速緩沖存儲器104必需從非易失性存儲器108被恢復(fù)。然而,若CPU子系統(tǒng)從該數(shù)據(jù)完好指示器讀取由存儲器控制器102寫入的值,則CPU子系統(tǒng)112將確定其可先行恢復(fù)高速緩沖存儲器104,因此可使用戶數(shù)據(jù)較早提供主電腦使用。若高速緩沖存儲器104的內(nèi)容有效時,流程將進行到判定方塊516;否則,則流程將進行到判定方塊506。

在判定方塊506中,CPU子系統(tǒng)112通過檢查NVB_FLUSH_CTRL寄存器302的FLUSH_STATUS位以確定根據(jù)圖4所執(zhí)行的刷寫操作是否成功完成。在一個實施例中,CPU子系統(tǒng)112進一步通過檢查在刷寫結(jié)果扇區(qū)中的完成狀態(tài)(Completion Status)以確定該刷寫操作是否成功完成。在一個實施例中,CPU子系統(tǒng)112還通過比較在刷寫結(jié)果扇區(qū)中的完成簽名(Completion Signature)與在編碼閃存106中的完成簽名,以確定該刷寫操作是否成功完成。在一個實施例中,CPU子系統(tǒng)112還通過比較在刷寫結(jié)果扇區(qū)中的CRC與從非易失性存儲器108中讀取數(shù)據(jù)而計算出的CRC,以確定該刷寫操作是否成功完成。若刷寫操作成功完成,流程將進行到方塊512;否則,流程將進行到方塊508。

在方塊508中,因后寫入數(shù)據(jù)已丟失,RAID控制器100可故障轉(zhuǎn)移到其分擔者(partner),即在該系統(tǒng)中的冗余RAID控制器。在一個實施例中,在正常操作下當主機發(fā)出寫I/O請求到RAID控制器100時,后寫入數(shù)據(jù)也將被寫入到所述的分擔RAID控制器100中。因此,若這些RAID控制器100的一個故障時,尤其若刷寫操作在RAID控制器100上故障時,將可大為提高刷寫操作在其分擔RAID控制器上成功執(zhí)行的可能性。因此,該分擔RAID控制器100可執(zhí)行后寫入數(shù)據(jù)從非易失性存儲器108到高速緩沖存儲器104的恢復(fù),并且因此使該后寫入數(shù)據(jù)可刷寫到磁盤中。流程結(jié)束于方塊508。

在方塊512中,CPU子系統(tǒng)112命令存儲器控制器112執(zhí)行恢復(fù)操作,以在如圖4所示的回到高速緩沖存儲器104的刷寫操作期間,將從高速緩沖存儲器104所刷寫的數(shù)據(jù)恢復(fù)到非易失性存儲器108。在命令存儲器控制器102執(zhí)行恢復(fù)操作之前,CPU子系統(tǒng)112將合適的值編程到需執(zhí)行恢復(fù)操作的存儲器控制器102中各個CSRs202。在一個實施例中,CPU子系統(tǒng)112執(zhí)行恢復(fù)操作,而非命令存儲器控制器102執(zhí)行該恢復(fù)操作,并且僅通過從易失性存儲器108讀取數(shù)據(jù)和寫入數(shù)據(jù)到高速緩沖存儲器104以執(zhí)行該操作。因為恢復(fù)操作在當主電源供應(yīng)電源時執(zhí)行,所以存儲器控制器102并非絕對必要以較低的電源消耗級別進而執(zhí)行該恢復(fù)操作。然而,該實施例的缺點在于,CPU子系統(tǒng)112將需較存儲器控制器102的時間為長以完成恢復(fù)操作。流程進行到方塊514。

在方塊514中,CPU子系統(tǒng)112從高速緩沖存儲器104將后寫入數(shù)據(jù)刷寫到磁盤。流程結(jié)束于方塊514。

在判定方塊516中,CPU子系統(tǒng)112通過讀取NVB_FLUSH_CTRL寄存器302的FLUSH_STATUS位以確定刷寫操作是否處于進行中。若刷寫操作在進行中,流程將進行到判定方塊518;否則,流程進行到方塊514。

在判定方塊518中,CPU子系統(tǒng)112檢查電容器136的電壓等級以確定該電壓級是否高于最低閾值。在一個實施例中,該最低電壓閾值編程入CPU子系統(tǒng)112程序中。在另一實施例中,最低電壓閾值是用戶可編程的(user-programmable),其可經(jīng)由用戶配置程序而編程。若電容器136的電壓等級高于該最低閾值,流程將返回判定方塊516以等待刷寫操作完成或者電容器136的電壓達到該最低閾值;否則,流程進行到方塊522。

在方塊522中,CPU子系統(tǒng)112通過將布爾值0寫入在NVB_FLUSH_CTRL寄存器302中的FLUSH_START位中以中止刷寫操作。流程進行到方塊514。

若高速緩沖存儲器104仍為有效并且刷寫操作仍處于進行中直至刷寫操作完成或者電容器136電壓等級達到最低閾值時,等待啟動RAID控制器100并且恢復(fù)正常操作的過程將可解決在沒有使用在判定方塊518中的額外測試的情況下可能發(fā)生的問題,如下所舉實例。假設(shè)電源管理器132感測到主電源中斷并且命令存儲器控制器102執(zhí)行刷寫操作。電容器136所存儲的大部分電能被該刷寫操作所消耗。在該刷寫操作完成前,主電源恢復(fù)了;因此,CPU子系統(tǒng)112中止該刷寫操作。CPU子系統(tǒng)112啟動并且使另一主電源中斷時允許另一刷寫操作。緊接在此之后,并且重要地,當電容器136處于低于其完全充電的狀態(tài)時,電源管理器132將因此感測到另一主電源中斷,并且命令存儲器控制器102執(zhí)行另一刷寫操作。該第二次刷寫操作將再次消耗相當大小的存儲于電容器136中的電能,并且其以低于完全充電的狀態(tài)而開始操作。若該序列持續(xù)下去,最后這些電容器136將不具有足夠的電能以成功完成刷寫操作,而造成用戶數(shù)據(jù)丟失的可能。以上所述的情況可能因主電源的周期性的掉電(brown-out)或有噪聲的電源供應(yīng)而造成電源管理器132感測到某程度的周期性的主電源中斷,而這些周期在刷寫操作的時間上。然而優(yōu)選的是,在判定方塊518中的額外測試可減少此問題的發(fā)生。在可選實施例中,由于電容器組136并不完全充電,因此避免不良的情況,寫緩存156置于直寫模式中。在另一實施例,在方塊518中,CPU112確定刷寫操作是否完成;若是,則流程進行到方塊514;若否,則流程進行到方塊516。

雖然在此所述這些實施例中的存儲器控制器用于執(zhí)行從易失性存儲器將后寫入數(shù)據(jù)刷寫到非易失性存儲器中,這些實施例也涵蓋CPU執(zhí)行從易失性存儲器到非易失性存儲器的刷寫操作,如圖6和7所示。如圖6和7所示的實施例,其用CPU子系統(tǒng)112以執(zhí)行刷寫操作為可成立的實施例若以下一個或多個情況是肯定時電容器136的電能密度高至足夠存儲RAID控制器100所需的電能,其包括CPU子系統(tǒng),以執(zhí)行刷寫操作;RAID控制器100上用于容納電容器136的可用空間大至容納足夠的電容器136以存儲RAID控制器100所需的電能,其包括CPU子系統(tǒng),以執(zhí)行刷寫操作;CPU子系統(tǒng)112消耗夠小的電源而使電容器136可存儲足夠的電源提供該RAID100,包括CPU子系統(tǒng),以執(zhí)行刷寫操作。雖然此實施例可能消耗較多于如圖1至5所示這些實施例所消耗的電能,但若電容器136可提供所需的電能,則RAID控制器100將可享有利用電容器的技術(shù)所帶來的優(yōu)于如前述的電池技術(shù)的優(yōu)點,例如較低的成本、較高的可靠性、較少的維護以及較短的充電時間等優(yōu)點。

參照圖6,其示出根據(jù)本發(fā)明替代實施例的RAID控制器600的方塊圖。如圖6所示的RAID控制器600類似于如圖1所示的RAID控制器100;然而,就刷寫操作而言,電源管理器132耦合以與CPU子系統(tǒng)112通信,而不是與存儲器控制器102通信,如下所述并且參照圖7。

參照圖7,其示出根據(jù)本發(fā)明替代實施例的圖6的RAID控制器600的執(zhí)行刷寫操作的操作流程圖。流程開始于方塊704。

在方塊704中,主電源無法將電源供應(yīng)給RAID控制器600。為響應(yīng)此情況,電容器136開始將電源供應(yīng)給RAID控制器600的預(yù)設(shè)部分,即高速緩沖存儲器104、非易失性存儲器108、存儲器控制器102、電源管理器132、電源調(diào)節(jié)器134、CPU子系統(tǒng)及其相關(guān)的電路。尤其,電容器136并不將電源供應(yīng)給磁盤接口116或主機接口118。另外,PCI-X接口216和218以及FIFOs 206由于這些接口僅用作與磁盤接口116和主機接口118的接口,因此電容器136可不將電源供應(yīng)給這些接口。因此有利地,磁盤接口116、主機接口118以及存儲器控制器102的非必要部分,都將不在刷寫操作時消耗電源,藉此RAID控制器100可使電容器136可存儲較少的電能,故也暗含這些電容器136是較不昂貴和/或僅需較小空間的電容器。另外,由于磁盤接口116和主機接口118并不消耗存于電容器136中的電能,因此電容器136在刷寫操作完成后仍可保留較多的電能,也因此增加了電容器136可在刷寫完成時仍持續(xù)將電源供應(yīng)給高速緩沖存儲器104的可能性,因此可完整保留后寫入數(shù)據(jù)以備當主電源恢復(fù)時減輕恢復(fù)操作的需求,如下詳述。流程進行到方塊706。

在方塊706中,電源管理器132檢測主電源的中斷并且告知CPU子系統(tǒng)112有將數(shù)據(jù)從高速緩沖存儲器104刷寫到非易失性存儲器108的刷寫操作的必要。流程進行到方塊708。

在方塊708中,CPU子系統(tǒng)112通過將數(shù)據(jù)從高速緩沖存儲器104復(fù)制到非易失性存儲器108以執(zhí)行刷寫操作。流程進行到方塊712。

在方塊712中,CPU子系統(tǒng)112在刷寫操作完成時,不論刷寫操作是否成功、中止或因錯誤而終止,將如表19所指定的刷寫結(jié)果信息寫入非易失性存儲器108的刷寫結(jié)果扇區(qū)中。流程進行到方塊716。

在方塊716中,CPU子系統(tǒng)112將高速緩沖存儲器104設(shè)于自我刷新的模式中。流程進行到方塊718。

在方塊718中,CPU子系統(tǒng)112命令電源管理器132使電容器136僅將電源供應(yīng)給高速緩沖存儲器104。即,電源管理器132使電容器136不再將電源供應(yīng)給CPU子系統(tǒng)112、非易失性存儲器108以及存儲器控制器102,以便以減少等待直到主電源恢復(fù)前所消耗的存于電容器136中的電源。流程終止于方塊718。

參照圖8示出表800或數(shù)據(jù)庫800,其是根據(jù)本發(fā)明的圖1的電容器組136在不同的溫度和電壓組合下的存儲壽命。如圖8所示的數(shù)值是參考用的假設(shè)值,而不是特定電容器產(chǎn)品的真實數(shù)值,其真實數(shù)值可通過該特定電容器的制造商而獲得。另外,所示的溫度范圍也是假設(shè)的范圍僅提供作為參考用。

如前所述,電容器組136的目的在于存儲電能,因此當主電源中斷時,可以提供在將寫緩存數(shù)據(jù)從寫緩存156備份或刷寫到非易失性存儲器108時所需的電源。當電容器組136不再具有存儲足夠電能的容量以將寫緩存156備份到非易失性存儲器108時,該電容器組136已達到其壽命的末端,即其壽命已過期。當電容器組136用于RAID控制器100的操作中時,該電容器組136的電容量隨時間而下降。多種不同的因素都有可能影響電容器組136電容量的下降,因素包括溫度、操作電壓、過強電流、以及電容器組136的極性改變。在一個實施例中,電容器組136的電流也受到監(jiān)測,并且若電流超過預(yù)設(shè)的大小時,電容器組136的充電將暫時停止以防止提早降低該電容器組136的壽命,如下所述。在RAID控制器100的操作中時,電容器組136的極性保持相同,以防止提早降低該電容器組136的壽命。因此,溫度和操作電壓是影響電容器組136的電容量,進而影響其壽命的主要因素。

在RAID控制器100的一個實施例中,電容器組136的保證壽命為5年。即,該RAID控制器100的制造商保證該電容器組136會有至少可用5年以用于存儲足夠電源提供將寫緩存156備份到非易失性存儲器108的足夠電容量。電容器組136中的每一電容器可存儲的電能可由公式(1)得到,其中E是電容器所存的電能、C是電容器的電容量、Vop是電容器的操作電壓以及Vmin是電容器的截止(cut-off)電壓 E=1/2*C*(Vop2-Vmin 2)(1) 在一個實施例中,電容器組136布置成串聯(lián)的四個電容器,其中每一電容器是相同的電容器類型。因此,該電容器組136所存儲的電能總和是在該電容器組136中的這四個電容器的每一電容器所存儲的電能的總和,或者大致同等于在該電容器組中單一電容器的電能的四倍。此外,該電容器組136的操作電壓是在該電容器組136中的四個電容器的操作電壓的總和,或者大致同等于在該電容器組中單一電容器的操作電壓的四倍。RAID控制器100包括有源均衡電路(activebalance equalizer circuit),其用四運算放大器電路(quad operationalamplifier circuit)以將該電容器組136中每一電容器的電壓平衡到大約為該電容器組136電壓的四分之一。在一個實施例中,在該電容器組136中的每一單一電容器所受的環(huán)境溫度和操作電壓假設(shè)是大致相同的;因此,每一這些電容器的壽命是大致相同的。在另一實施例中,該電容器組136中的每一這些電容器的壽命是基于溫度和分別的電壓讀數(shù)而計算出,并且以所計算得到的最低電容器的壽命數(shù)值作為該電容器組136整體的壽命限制。

在一個實施例中,電容器組136的壽命末端是指當該電容器組136中的這些電容器已受到相較于原電容量值的30%電容量下降。在一個實施例中,當達到30%電容量下降時,該電容器組136將無法存儲足夠電能以在正常電壓下執(zhí)行備份操作。在另一實施例中,30%電容量下降的壽命末端的值可提供某程度的誤差容限(errormargin);即,在電容器組136中的電容器可實際上具有多于30%下降的電容量,以便不具有存儲足夠電能以在正常操作電壓下執(zhí)行備份的能力。30%電容量下降的值在此用于說明本發(fā)明。然而,應(yīng)當理解的是,本發(fā)明并不局限于特定的電容量下降值;反之,本發(fā)明可在其它不同的電容量下降值上實施,取決于所需執(zhí)行備份的電能和所用的特定電容器的特征。圖8的表800所指定的壽命數(shù)值,指示電容器組136的單一電容器在到達其壽命末端的從原電容量值的電容量下降百分率前,可在指定的溫度和電壓下操作的小時數(shù)量。因此,每一存于該表800中的壽命可理解為若該電容器組136在所索引的壽命期間的溫度和電壓下操作時,該電容器組將可具有存儲至少預(yù)設(shè)量的電能的情況下的壽命。在一個實施例中,該預(yù)設(shè)量的電能是計算的所需電能的量以提供足夠電能執(zhí)行將寫緩存156的完整大小備份到非易失性存儲器108。

在一個實施例中,圖8的表800以兩維陣列存儲于編碼閃存106中,并且當RAID控制器100開啟時復(fù)制CPU子系統(tǒng)的程序RAM,使得該CPU112可使用采樣的溫度和電壓值進而查詢在表800中的壽命。在圖8的實施例中,RAID控制器100支持在兩種不同電壓(8.2V和7.2V)下操作的電容器組136,如表800所示。在表800中,該8.2V操作電壓占據(jù)了所述陣列的指數(shù)(index)0,而該7.2V操作電壓則占有該陣列的指數(shù)1。有利地,在此所述為一種用于根據(jù)需要動態(tài)降低或調(diào)節(jié)控制(throttling)電容器組136的操作電壓到較低電壓等級以便增加該電容器組136壽命的方法。雖然圖8的實施例僅說明兩種可能的操作電壓,但是本發(fā)明并不局限于兩種操作電壓;反之,所有實施例都可具有較大的操作電壓。而且,也可包括其它未述的操作電壓值的實施例。在一個示意性實例中,四個電容器136串聯(lián)布置,并且每一電容器136在大約2.05V或1.8V之下操作,這取決于CPU112所控制的該電容器組136的操作電壓。該陣列800包括相對于所述兩種電壓值的兩列。該陣列800的行則標示為溫度值。每一行相對于不同整數(shù)攝氏溫度值。圖8的表800的實施例包括從10攝氏度到40攝氏度的環(huán)境溫度值。例如,如圖8所示,在40攝氏度和8.2V(或每一電容器2.05V)時的壽命是800小時,以及在7.2V(或每一電容器1.8V)時的壽命則是820小時。在一個實施例中,假設(shè)在固定的操作電壓值下,在電容器組136中的電容器的特征是這些壽命大約是溫度的對數(shù)函數(shù)(logarithmic function)。CPU 112使用采樣的溫度和電壓值以標示該表800,以獲得所指定的壽命進而用于計算累積標準化運行時間152及其相關(guān)數(shù)值,下面結(jié)合相關(guān)附圖進行描述。

如前所述,在一個實施例中,保證壽命是5年。然而,為與如表800所提供的假設(shè)值更為相符,在此假設(shè)保證壽命是1000小時。如表800所示,若電容器組136持續(xù)在8.2V和25攝氏度下操作,則該電容器組的保證壽命是1000小時,即該電容器組將在1000小時后到達其壽命末端的電容量下降百分率(如30%)。相比之下,若該電容器組136持續(xù)在7.2V和28攝氏度下操作,則該電容器組的保證壽命是1000小時,即該電容器組將在1000小時后到達其壽命末端的電容量下降百分率。因此,電容器組136在8.2V下操作的“標準(normal)”溫度是25攝氏度,而在7.2V下操作的“標準”溫度是28攝氏度。即,對特定的操作電壓而言,所述的標準溫度是電容器組136的壽命到達保證壽命時的溫度,或者超過設(shè)有容限的保證壽命。然而,鑒于表800的數(shù)值可從實驗環(huán)境中將電容器組的溫度和電壓維持于定值而取得,當電容器組136在電腦系統(tǒng)中的RAID控制器100中操作時,所述溫度將會與標準溫度有所差別。相似地,有利地電容器組136的操作電壓可在必要時有目的地動態(tài)調(diào)整,以便使該電容器組136的壽命增加以提供其保證壽命,如下詳述。因此有利地,本發(fā)明說明了RAID控制器100如何使用相對于在特定操作電壓等級的標準溫度中標準化從表800所得的壽命值,下面結(jié)合圖9進行描述。

在一個實施例中,電容器組136包括串聯(lián)的四個50法拉(Farad)電容器,其當完全充電并且在其滿電容量時存儲約為356焦耳的可用電能,假設(shè)每一電容器具有2.05V的操作電壓和0.8V的截止(cut-off)電壓,其指定用于可靠FET門閾值的最低工作電壓和低壓差線性穩(wěn)壓器(low drop out regulation);相對地,在30%電容量下降時,電容器組136僅存儲有250焦耳。假設(shè)每一電容器是1.8V操作電壓,該電容器組136可存儲260焦耳的可用電能;相對地,在30%電容量下降時,該電容器組僅存有182焦耳。在一個實施例中,高速緩沖存儲器104、非易失性存儲器108、存儲器控制器102、電源管理器132、DDR-SDRAM總線接口終端電路、時鐘電路及其他多種需要在刷寫操作時消耗電源的電路的電源消耗約為4瓦(Watts)。非易失性存儲器108可以以約為10MB/秒的持續(xù)速率被寫入。在一個實施例中,高速緩沖存儲器104的大小是1GB,其包括約512MB的寫緩存156的整體大小,以及該非易失性存儲器108的大小為512MB。因此,刷寫操作約需50秒完成并且消耗約200焦耳的電能。因而可以得知,當電容器組136在較低的7.2V值操作時,雖然電容器組136尚未到達其30%電容量下降及其壽命末端,但該電容器組136可能已無法存儲足夠電能以備份完整的寫緩存156。有利地,在此所述一種用于動態(tài)式地將寫緩存156降低到可使電容器組136提供足夠電能以執(zhí)行備份的大小的方法。

雖然在此所述的實施例中的保證壽命乃是基于可執(zhí)行由寫緩存156備份到非易失性存儲器108時所需的預(yù)設(shè)量的電能,然而在此所述的電容器組136的壽命監(jiān)測和動態(tài)電壓調(diào)節(jié)控制方法并不僅限于這一應(yīng)用。這些實施例包括保證壽命基于可執(zhí)行其他功能時所需的預(yù)設(shè)量電能的應(yīng)用。例如,實施例可以是RAID控制器100并不包括非易失性存儲器108以用于備份寫緩存156,以及預(yù)設(shè)量電能是用于將電源供應(yīng)給易失性存儲器104預(yù)設(shè)量時間(如3天)的所需電能量,故在主電源中斷時可保持在寫緩存156中數(shù)據(jù)的完整性直到主電源恢復(fù)為止。

參照圖9,其示出根據(jù)本發(fā)明的圖1的RAID控制器100的操作流程圖。尤其,圖9顯示RAID控制器100如何計算電容器組136的累積標準化運行時間152。流程開始于方塊902。

在方塊902處,CPU 112初始化累積標準化運行時間152和累積日歷運行時間154。在一個實施例中,該累積標準化運行時間152和該累積日歷運行時間154都在RAID控制器100制造時被初始化。在一個實施例中,累積標準化運行時間152和累積日歷運行時間154都初始化為零。在另一實施例中,累積標準化運行時間152和累積日歷運行時間154都基于電容器組的電容量值的容許因子而初始化為時間量,所述容許因子是例如由電容器組制造商所指定的。例如,若電容器組制造商指定10%的偏差,則累積標準化運行時間152和累積日歷運行時間154初始化到壽命末端值的10%,如5年的10%。在另一實施例,累積標準化運行時間152和累積日歷運行時間154初始化到日歷年齡,例如從該電容器組136制造后開始算起的時間量。其他實施例可以是累積標準化運行時間152和累積日歷運行時間154初始化到基于容忍值和日歷年齡的組合的值。其他實施例也可以是累積標準化運行時間152和累積日歷運行時間154初始化到基于想要的誤差容限的值。流程進行到方塊904。

在方塊904中,CPU 112分別經(jīng)由溫度傳感器142和電壓傳感器144周期性地在圖1的電容器組136的大時間間隔上采樣電容器組的溫度和電壓并且平均所采樣的溫度和電壓。在一個實施例中,采樣的周期是15秒以及平均間隔是一小時。平均化在較大的間隔上所采樣的值并且在每一該較大間隔上將累積標準化運行時間152和累積日歷運行時間154寫入非易失性存儲器108,而非在每一次采樣這些值時,所有的優(yōu)點在于其可減少CPU 112帶寬(bandwidth)的消耗并且可避免超過非易失性存儲器108的寫入周期的最大值。流程進行到方塊906。

在方塊906中,CPU 112通過索引圖8的表800以查詢在方塊904的平均的溫度和電壓處的壽命以獲得在該平均的溫度和電壓的壽命。在一個實施例中,平均溫度和電壓值根據(jù)需要上舍入(round-up)到下一最高值。例如,若平均溫度是30.8度時,則該值可上舍入到31度以用作圖8的表800中的索引。相似地,若平均采樣的電壓為7.8V,則該值上舍入到8.2V而入該表800的電壓索引為0。值得注意的是,在另一實施例中,若壽命值易受表達為溫度和電壓的函數(shù)的影響時,則該壽命值可根據(jù)該公式計算出而無需從表800查詢出。然而此實施例有潛在的缺點,其可能需要較寬于利用表查詢方法的CPU 112運算帶寬,尤其在執(zhí)行浮點數(shù)運算時。然而,此實施例也可有其潛在優(yōu)點,其可以允許間隔較小于該表查詢方法的溫度和電壓值。流程進行到方塊908。

在方塊908中,CPU 112通過將時間間隔乘以保證壽命對在方塊906所得的壽命值的比值,以標準化該時間間隔。例如,假設(shè)該時間間隔是一小時,保證壽命是1000小時,以及在方塊906所得的壽命是2000小時(因為所測的溫度和/或電壓低于正常溫度和電壓),則標準化的時間間隔是1小時*(1000/2000)=0.5小時;因此,該標準化時間間隔小于該時間間隔的日歷時間,藉此說明了在一小時的日歷操作時間間隔中,電容器組136的壽命有效地減少了一小時。相對地,假設(shè)于方塊906所得的壽命僅為500小時(因為所測的溫度和/或電壓大于正常溫度和電壓),則該標準化時間間隔將為1小時*(1000/500)=2小時;因此,該標準化時間間隔大于該時間間隔的日歷時間,藉此說明了在一小時的日歷操作時間間隔中,電容器組136的壽命有效地增加了一小時。流程進行到912。

在方塊912中,CPU 112將在方塊908計算的標準化時間間隔加入到累積標準化運行時間152值而產(chǎn)生更新的累積標準化運行時間154,以反映電容器組136在方塊904所得的平均溫度和電壓對在方塊904所得的時間間隔中操作的影響。另外,CPU 112還將平均的時間間隔(即非標準化的時間間隔,如一小時)加入到累積日歷運行時間154,以產(chǎn)生更新的累積日歷運行時間154值。流程進行到方塊914。

在方塊914中,CPU 112將該更新的累積標準化運行時間152和在方塊912所計算出的累積日歷運行時間154寫入非易失性存儲器108,故可在主電源中斷時維持這些值并且可在RAID控制器100重新開機時再次利用這些值。流程進行到方塊916。

在方塊916中,CPU 112計算所使用的標準化保證壽命的使用百分率,即累積標準化運行時間152與保證壽命的比值。例如,若累積標準化運行時間152為200小時和保證壽命為1000小時,則該電容器組136的標準化保證壽命的使用百分率為20%,即已用掉有效保證壽命的20%,而剩有效保證壽命的80%。流程進行到方塊918。

在方塊918中,CPU 112計算電容器組136的電容量下降百分率,即在方塊916所算的標準化保證壽命的使用百分率與壽命末端的電容量下降百分率的乘積數(shù)值。例如,若壽命末端電容量下降百分率為30%,而在方塊916所算的標準化保證壽命的使用百分率為20%時,則電容器組136的電容量下降百分率為6%。流程進行到方塊922。

在方塊922中,CPU 112將在方塊918所計算的電容器組136的電容量下降百分率報告給用戶。另外,用戶也可得知該電容量下降百分率是否處于優(yōu)良、警告或錯誤的范圍內(nèi)。在一個實施例中,當該電容量下降百分率在壽命末端電容量下降百分率的1%之內(nèi)時,則用戶將被警告已接近該壽命末端。在一個實施例中,用戶可輸入將被告知的壽命末端已接近的范圍。在一個實施例中,用戶也可得知壽命末端電容量下降百分率以用于比較電容量下降百分率。在一個實施例中,CPU 108也報告用戶所剩的標準化壽命小時數(shù),其由保證壽命減掉累積標準化運行時間152計算而得。在一個實施例中,將電容器組136的溫度和電壓,以及在電容器組136中每一電容器的電壓報告給用戶。在一個實施例中,該信息經(jīng)由串行接口提供給用戶。在一個實施例中,該信息經(jīng)由網(wǎng)頁瀏覽器接口提供給用戶,如經(jīng)由TCP/IP連接到Ethernet接口。流程返回方塊904以監(jiān)測在另一時間間隔的電容器組136的壽命。

如圖9所示,RAID控制器100有利地可計算累積標準化運行時間152,其可有效地是電容器組136的相對于其保證壽命的年齡測量或壽命。相對于累積日歷運行時間154,其是電容器組136操作的日歷時間間隔的總和,累積標準化運行時間152是相應(yīng)于構(gòu)成累積日歷運行時間154的日歷時間間隔的標準化運行時間的總和。該標準化運行時間通過標準化由表800所示的壽命讀數(shù)而得,而該表所示的是在該時間間隔上在相對于平均采樣操作電壓下的正常溫度中的平均采樣溫度所得值。因此,該累積標準化運行時間152提供較電容器組136的日歷年齡更有意義并且較為正確的該電容器組136的有效年齡測量值,并且這可在不受因放電/充電方法測量電容器組136的電容量可能產(chǎn)生的不利影響下完成。

值得注意的是在如圖9所示的實施例中,累積標準化運行時間152和累積日歷運行時間154僅在RAID控制器100的操作中被更新,并且尤指在CPU 112的操作中時。尤其,當RAID控制器100完全關(guān)機并且當CPU 112在將寫緩存156備份到非易失性存儲器108操作中是關(guān)機時,這些值未被更新,所述操作符合如圖1所示的實施例(雖然不相符如圖5所示的實施例)。然而,應(yīng)注意的是當RAID控制器100是關(guān)機時,在電容器組136上的電荷一般將快速地流失,因此而減少電壓;并且在低電壓時,電容器組136的壽命將較慢老化。因而,關(guān)機時間相對于諸如5年的保證壽命的實施例而言并不是非常重要;然而,對具有較短的保證壽命的實施例而言,該關(guān)機時間則需要考慮。此與采用電池情況相反,電池在未使用狀態(tài)時所存的電能將嚴重下降。此外,執(zhí)行備份所需的時間以分鐘計算。因此,即使在高溫度下標準化,備份時間相對于諸如5年的保證壽命的實施例而言并不是非常重要;然而,對具有較短的保證壽命的實施例而言,該備份時間則需要考慮。

參照圖10,其示出根據(jù)本發(fā)明的圖1的RAID控制器100的操作流程圖。尤其,圖10顯示RAID控制器100如何調(diào)節(jié)電容器組136的操作電壓,以在必要時延伸電容器組136的累積標準化運行時間152。圖10也顯示RAID控制器100在必要時如何動態(tài)減少寫緩存156的大小。流程開始于方塊1002。

在方塊1002中,CPU 112檢測到電容器組136的溫度已超過第一預(yù)設(shè)閾值。在一個實施例中,該第一預(yù)設(shè)閾值是51攝氏度。雖然圖10公開了實施例,當檢測到電容器組136溫度已超過閾值時,電容器組136的操作電壓將被調(diào)節(jié)以及寫緩存156的大小將被調(diào)整,在此所述的該電壓的調(diào)節(jié)以及寫緩存156大小的調(diào)整方法并不局限于此實施例;而且,其他實施例可以是RAID控制器100基于其它原因而調(diào)節(jié)操作電壓并且調(diào)整寫緩存156的大小。例如,在一個實施例中,在圖9的每一時間間隔的末端,當CPU 112計算累積標準化運行時間152和累積日歷運行時間154時,CPU 112進行到方塊1004以確定電壓調(diào)節(jié)和/或?qū)懢彺?56的大小調(diào)整是否為必要的。例如,在另一實施例中,雖然電容器組136的溫度可能未超過該第一閾值,但是RAID控制器100仍可確定該電容器組136以到達其壽命末端并且提供用戶可以選擇繼續(xù)操作或是更換該RAID控制器100,雖然可能是在較小的寫緩存156大小中。流程進行到方塊1004。

在方塊1004中,CPU 112基于累積標準化運行時間152合累積日歷運行時間154計算電容器組136的預(yù)期壽命。尤其,該預(yù)期壽命計算是保證壽命乘以累積日歷運行時間154相對于累積標準化運行時間152的比值。例如,若保證壽命是1000小時,累積日歷運行時間154是300小時,以及累積標準化運行時間152是200小時,則該預(yù)測壽命是1000小時*(300/200)=1500小時。流程進行到判定方塊1006。

在判定方塊1006中,CPU 112將在方塊1004所算出的電容器組136的預(yù)測壽命與保證壽命作比較以確定該預(yù)測壽命是否少于該保證壽命。若是,流程則進行到判定方塊1008;若否,流程則進行到判定方塊1024。

在判定方塊1008中,CPU 112確定電容器組136是否目前已在最低的電壓等級下操作。在一個實例中,當僅提供兩種電壓等級(如8.2V和7.2V)時,則最低的電壓級是7.2V。然而,在其他實施例中可提供多于兩種電壓等級。提供較多電壓等級的優(yōu)點在于較小間隔的電壓等級可允許寫緩存156的較小間隔調(diào)整;然而此缺點在于其可能需要較為復(fù)雜的電壓調(diào)整電路和軟件程序以用于電壓調(diào)整和寫緩存156的大小調(diào)整。若電容器組136目前已在最低的電壓級操作,則流程進行到方塊1022;若否,流程進行到方塊1012。

在方塊1012中,CPU 112已確定出電容器組136操作電壓必須減少,故CPU 112可基于其累積標準化運行時間152而計算通過電容器組136在下一較低操作電壓中存儲電能而進行寫緩存156備份的大小。例如,假設(shè)寫緩存156的完整大小是512MB,以及8.2V(每一電容器2.05V)和7.2V(每一電容器1.8V)的兩種電壓等級。雖然在電容器組136中的個別電容器數(shù)量可為不同,對單一電容器而言的電容量下降百分率計算相同于電容器組136整體的電容量下降百分率。若C0是電容器的原電容量,該電容器在正常2.05V的操作電壓中所存的電能在30%壽命末端電容量百分率下降后為E2.05.30%電容量下降=1/2*0.7C0*(2.052-0.82)=1/2*C0*2.494。當電容器在較低的1.8V操作電壓和電容量下降百分率為零時所存的電能為E1.8,無電容量下降=1/2*C0*(1.82-0.82)=1/2*C0*2.6。因為2.6大于2.494,所以電容器組136可存儲足夠電能以備份完整大小512MB的寫緩存156;因此,無需調(diào)整寫緩存156的大小,并且其將在方塊1014中確定。然而,若已有10%電容量下降,存儲之電能為E1.8,、10%電容量下降=1/2*C*2.34。因為2.34小于2.494,所以電容器組136僅存儲足夠的電能以備份(2.34/2.494)*512MB=480MB的寫緩存156。相似地,若已有20%的電容量下降,所存儲的電能為E1.8,、20%電容量下降=1/2*C*2.08。因而,電容器組136僅存儲足夠的電能以備份(2.08/2.494)*512MB=427MB的寫緩存156。在一個實施例中,在CPU 112上執(zhí)行的軟件程序維持有寫緩存156大小值的表,該表包括有在零值和壽命末端電容量下降百分率值之間在每一可能操作電壓值上的每一電容量下降百分率值。該表由電容量下降百分率作為其索引,如圖9的方塊918中所計算的值。在一個實施例中,電容量下降百分率在方塊918中計算后,還被寫入非易失性存儲器108。流程進行到判定方塊1014。

在判定方塊1014中,CPU 112確定寫緩存156在方塊1012中所計算出的大小是否小于目前寫緩存156的大小。若是,流程進行到方塊1016;若否,流程進行到方塊1018。

在方塊1016中,CPU 112減少寫緩存156的大小到如方塊1012所計算出的大小。在一個實施例中,CPU 112通過暫停主機I/O請求的處理、刷寫寫緩存156、減少寫緩存到所需大小(以及可選擇性地增加讀取高速緩沖存儲器大小),以及恢復(fù)主機I/O處理,以減少寫入式高速緩沖存儲器156的大小。在一個實施例中,為減少主機I/O請求處理的暫停時間,CPU 112僅刷寫寫緩存156中需從該寫緩存156移除的部分(以及可選擇性地加入讀取高速緩沖存儲器),通常該部分鄰近讀取高速緩沖存儲器。在一個實施例中,CPU 112也將寫緩存156和讀取高速緩沖存儲器158的新大小值寫入非易失性存儲器108,因此RAID控制器100重新啟動后,CPU 112可配置該寫緩存156和讀取高速緩沖存儲器158的大小為這些新大小值。流程進行到方塊1018。

在方塊1018中,CPU 112減少電容器組136的操作電壓到下一電壓等級,以增加該電容器組136的壽命。在一個實施例中,RAID控制器100也告知用戶操作電壓已減少。在一個實施例中,CPU112也將新的操作電壓值寫入非易失性存儲器108,因此在RAID控制器100重新啟動后,該CPU 112可將該操作電壓設(shè)定為該新的操作電壓值。在一個實施例中,電源管理器132包括控制寄存器,CPU 112可寫入該控制寄存器以調(diào)整電容器組136的操作電壓。流程進行到方塊1026。

在方塊1022中,雖然需減少電容器組136的電壓以增加該電容器組136的壽命,CPU 112確定該電容器組136已經(jīng)在最低電壓等級中操作,故將無法減少該電壓。因此,CPU 112發(fā)出用戶警告消息以警告此情況。流程進行到判定方塊1026。

在判定方塊1024中,CPU 112確定電容器組136的溫度是否已超過第二預(yù)設(shè)閾值。在一個實施例中,該第二預(yù)設(shè)閾值是55攝氏度。若溫度已超過該第二預(yù)設(shè)閾值,則流程進行到判定方塊1008以減少電容器組136的操作電壓以及如有需要則減少寫緩存156的大小-盡管在方塊1004所計算出的該電容器組136的預(yù)測壽命至少與保證壽命等長。若溫度并未超過該第二預(yù)設(shè)閾值,則流程終止。

在判定方塊1026中,CPU 112確定電容器組136的溫度是否已超過第三預(yù)設(shè)閾值。在一個實施例中,該第三預(yù)設(shè)閾值是59攝氏度。若溫度超過該第三預(yù)設(shè)閾值,則流程進行到方塊1028;若否,則流程終止。

在方塊1028中,CPU 112停止電容器組136的充電以避免過早降低該電容器組136的壽命超過其保證壽命。造成溫度急劇上升的可能原因是電容器組136的過度充電以及系統(tǒng)中冷卻風扇的故障。另外,若電容器組136并非完全充電并且將可能無法存有足夠電源以將寫緩存156備份到非易失性存儲器108中時,CPU 112將該寫緩存設(shè)為直寫模式。流程終止于方塊1028。在一個實施例中,CPU 112延遲預(yù)設(shè)時間后并且嘗試恢復(fù)電容器組136的充電。

如圖10所示,RAID控制器100有利地減少電容器組136的操作電壓以增加其壽命,而這是基于若累積標準化運行時間152,該電容器組136的保證壽命將無法被達到時。此外,若RAID控制器100確定電容器組136的電容量已下降至某一程度大小使該電容器組136無法在新的操作電壓中存儲足夠的電能以支持寫緩存156的備份時,則有利地,該RAID控制器100將可減少該寫緩存156的大小到使該電容器組136可支持該備份的大小。

參照圖11,其示出根據(jù)本發(fā)明的圖1的RAID控制器100的操作流程圖。尤其,該流程公開了RAID控制器100在適當之時,將增加操作電壓和寫緩存156的大小。流程開始于方塊1102。

在方塊1102中,CPU 112檢測到RAID控制器100目前是以小于寫緩存156的正?;蛲暾笮〉膶懢彺?56大小進行操作,并且檢測到因該寫緩存156的大小已減小的緣故,時間已消逝。在一個實施例中,所述消逝的時間約為2小時,以防止過于頻繁地調(diào)整該寫緩存156的大小造成無效率。流程進行到方塊1104。

在方塊1104中,CPU 112基于累積標準化運行時間152和累積日歷運行時間154計算出電容器組136的預(yù)期壽命,類似于圖10的方塊1004所執(zhí)行的步驟。流程進行到判定方塊1106。

在判定方塊1106,CPU 112將在方塊1104中所計算出的電容器組136的預(yù)期壽命與保證壽命作比較以確定該預(yù)期壽命是否小于該保證壽命。若否,流程將終止;若是,則流程進行到判定方塊1108。在一個實施例中,CPU 112通過預(yù)設(shè)百分率確定該預(yù)期壽命是否小于該保證壽命,而不是僅確定是否小于該保證壽命,以避免調(diào)整該寫緩存156的大小所造成的抖動(thrashing)。

在判定方塊1108中,CPU 112確定電容器組136目前是否已在最高電壓等級中操作。若是,則流程終止;若否,則流程進行到方塊1112。

在方塊1112中,CPU 112將電容器組136的操作電壓增加到下一電壓等級。流程進行到方塊1114。

在方塊1114中,CPU 112計算出可備份的寫緩存156的大小,而該大小是指電容器組136可通過方塊1112基于該電容器組136的累積標準化運行時間152而設(shè)定的新的操作電壓下可以存儲的電能進行備份操作的大小。流程進行到方塊1116。

在方塊1116中,CPU 112將寫緩存156的大小增加到在方塊1114中所計算出的大小值。在一個實施例中,CPU 112通過暫停主機I/O請求的處理而增加寫緩存156的大小到所需大小,以及恢復(fù)主機I/O的處理,以增加寫緩存156的大小。與圖10所示實施例中的方塊1016一并參考,其中當減少寫緩存156的大小時,讀取高速緩沖存儲器158的大小也隨之增加,而在方塊1116中,CPU 112在暫停主機I/O請求處理后還完成目前所有待完成的讀取請求,并且在增加該寫緩存的大小前減少該高速緩沖存儲器的大小,流程結(jié)束于方塊1116。

如圖11所示,當RAID控制器100在基于累積標準化運行時間152而確定增加操作電壓和增加寫緩存156的大小的步驟是安全時,其將進行該步驟。

參照圖12,其示出根據(jù)本發(fā)明的圖1的RAID控制器100的操作流程圖。尤其,圖12的流程圖說明在RAID控制器100開機過程中避免過早使電容器組136老化的RAID控制器100的操作。流程開始于方塊1202。

在方塊1202中,主電源供應(yīng)給RAID控制器100。這暗含了電容器組136至少部分充電,若不是完全充電。流程進行到方塊1204。

在方塊1204中,電源管理器132開始給該電容器組136充電。流程進行到方塊1206。

在方塊1206中,CPU 112將寫緩存156設(shè)于直寫模式中,因為電容器組136并非完全充電,所以其可能無法提供足夠電能以執(zhí)行將寫緩存156備份到非易失性存儲器108的操作。流程進行到方塊1208。

在方塊1208中,CPU 112分別經(jīng)由溫度傳感器142、電壓傳感器144以及電流傳感器146周期性地采樣圖1的電容器組136的溫度、電壓以及電流。在一個實施例中,在所有時間中當電容器組136在充電時所采樣的周期時間是3秒,這短于在非充電時的采樣周期時間,進而可較快速地檢測溫度或電流的增加,尤其因溫度或電流的增加可能提早老化電容器組136到超過其保證壽命。流程進行到判定方塊1212。

在判定方塊1212中,CPU 112確定電容器組136所使用的電流是否已超過預(yù)設(shè)閾值。在一個實施例中,該預(yù)設(shè)閾值是2安培(Amps)。若是,流程進行到方塊1214;若否,流程則進行到判定方塊1216。

在方塊1214中,CPU 112使電容器組136停止充電,以防止提早老化該電容器組136超過其保證之壽命。流程結(jié)束于1214。在一個實施例中,CPU 112延遲一段時間后嘗試恢復(fù)該電容器組136的充電并且返回方塊1208。

在判定方塊1216中,CPU 112確定溫度是否已超過該第三預(yù)設(shè)閾值,類似于圖10的判定方塊1026所執(zhí)行的步驟。若溫度已超過該第三預(yù)設(shè)閾值,流程將進行到方塊1214;若否,流程則進行到判定方塊1218。

在判定方塊1218中,CPU 112確定電容器組136的電壓是否已到達其所指定(designated)的操作電壓等級。在一個實施例中,目前的操作電壓等級存于非易失性存儲器108中,故當主電源中斷后并且重新啟動時,CPU 112可確定在主電源中斷前的操作電壓并將其恢復(fù)到該電壓等級。若電容器組136的電壓已到達其指定的電壓等級時,流程將進行到方塊1222;若否,則流程返回方塊1208。

在方塊1222中,因為電容器組136是完全充電的,所以CPU 112將寫緩存156設(shè)于寫回(write-back)模式。流程結(jié)束于方塊1222。

參照圖13,其示出根據(jù)本發(fā)明替代實施例的RAID控制器100的操作流程圖。圖13的流程圖顯示RAID控制器100如何調(diào)整控制該電容器組136的操作電壓,以在必要時延長電容器組136的累積標準化運行時間152,該流程圖也顯示RAID控制器100如何在必要時動態(tài)地減少寫緩存156的大小,類似于圖10所示;然而,圖13所示的實施例使用不同的比較以確定是否需調(diào)整控制該操作電壓。因此,圖13的流程圖類似于圖10的流程圖;但是,流程從方塊1002進行到方塊1304而不是到方塊1004。

在方塊1304中,CPU 112計算出電容器組136的日歷時間電容量下降百分率,此百分率是壽命末端電容量下降百分率乘以累積日歷運行時間154對保證壽命的比值。因而,例如,若壽命末端電容量下降百分率是30%、累積日歷運行時間154是400小時以及保證壽命是1000小時,則日歷時間電容量下降百分率是12%。流程進行到判定方塊1306。

在判定方塊1306中,CPU 112將在圖9的方塊918中所計算出的電容量下降百分率與在方塊1304中所計算的日歷時間電容量下降百分率作比較,以確定該電容量下降百分率是否大于該日歷時間電容量下降百分率。若是,流程進行到判定方塊1008;若否,流程進行到判定方塊1024,如圖10所示。

參照圖14,其示出根據(jù)本發(fā)明替代實施例的RAID控制器100的操作流程圖。圖14的流程圖顯示RAID控制器100如何調(diào)整控制該電容器組136的操作電壓,以在必要時延長電容器組136的累積標準化運行時間152,該流程圖也顯示RAID控制器100如何在必要時動態(tài)地減少寫緩存156的大小,類似于圖10所示;然而,圖10所示的實施例使用不同的比較以確定是否需調(diào)整控制該操作電壓。因此,圖14的流程圖類似于圖10的流程圖;然而,流程從方塊1002進行到方塊1406而不是到方塊1004。

在判定方塊1406中,CPU 112將在圖9的方塊912中所計算出的累積標準化運行時間152與在方塊914中所計算的累積日歷運行時間154作比較,以確定該累積標準化運行時間152是否大于該累積日歷運行時間154。若是,流程進行到判定方塊1008;若否,流程進行到判定方塊1024,如圖10所示。

參照圖15,其示出根據(jù)本發(fā)明替代實施例的RAID控制器100的操作流程圖。圖15的流程圖顯示RAID控制器100如何調(diào)整控制該電容器組136的操作電壓,以在必要時延長電容器組136的累積標準化運行時間152,該流程圖也顯示RAID控制器100如何在必要時動態(tài)地減少寫緩存156的大小,類似于圖10所示;然而,圖15所示的實施例使用不同的比較以確定是否需減少寫緩存156的大小。因此,圖15的流程圖類似于圖10的流程圖;但是,若電容器組136目前并不是在最低電壓等級中操作,流程將從判定方塊1008進行到方塊1512而不是到方塊1012。

在方塊1512中,CPU 112計算出電容器組136基于其累積標準化運行時間152可在下一較低操作電壓中所能存儲的電能。尤其,CPU 112基于上述公式(1)以計算該電能。電容器組136中的每一電容器的電容量值是電容器的原電容量值與數(shù)值1減掉圖9的方塊918所計算出的電容量下降百分率的值的乘積。流程進行到判定方塊1514。

在判定方塊1514中,CPU 112確定在方塊1512所計算出的電能是否足夠提供將寫緩存156備份到非易失性存儲器108所需的電源。若是,流程進行到方塊1516;若否,流程進行到方塊1018。

在判定方塊1516中,CPU 112計算可以下一較低操作電壓支持的寫緩存156大小,其類似于圖10的方塊1012執(zhí)行的步驟。其后CPU 112降低寫緩存156的大小到該計算后的大小,流程進行到方塊1018。

雖然本發(fā)明及其元件、特征以及優(yōu)點等已在此詳細說明,但是本發(fā)明包括了其他實施例。例如,雖然在此所述的實施例與RAID控制器相關(guān),然而所述的監(jiān)測電容器組壽命的方法、動態(tài)調(diào)整電容器組操作電壓以提供保證壽命、以及動態(tài)調(diào)整寫緩存大小也可運用于其他任何形式的存儲控制器上。另外,雖然在此所述的實施例中的電容器組主要用于供應(yīng)電源以使存儲控制器將易失性寫緩存?zhèn)浞莸椒且资源鎯ζ?,在此所述的方法也可運用于其它應(yīng)用電容器組為可充電式的電源的用途上。電容器組的另一應(yīng)用例包括保持給易失性寫緩存供電直到主電源恢復(fù),例如在未包括可供易失性寫緩存?zhèn)浞莸姆且资源鎯ζ鞯拇鎯刂破髦小?br>
雖然這些實施例說明電容器組的電容量整體性地受到監(jiān)測,但是實施例也包括在電容器組中的每一單一電容器的壽命基于該每一單一電容器的個別操作電壓和溫度而監(jiān)測,并且該電容器組的整體壽命基于這些電容器中最短的壽命而認定。

雖然物理原理可以主導在此所述的發(fā)明,例如不同的電能和電容量計算方法,但是應(yīng)當理解的是這些數(shù)值并無不直接或完全計算出的必要以使本發(fā)明得以具體實施。換言之,實施例也可使用其它物理原理。例如,實施例可以是電能、電容量、電容量下降、電容量下降百分率、寫緩存之大小及其它數(shù)值等基于一般電壓和溫度值預(yù)先計算出并且存于表中以可基于測量的電壓和溫度讀數(shù)進而獲得。其它實施例可以是這些數(shù)值完全依照公式而計算出,而不是從表查詢出。其它實施例也可為使用直接計算和預(yù)先計算出的值的組合。

雖然在此所述的實施例說明CPU 112執(zhí)行不同的計算,如累積標準化運行時間152的計算,其他實施例可以包括專用電路以執(zhí)行這些計算,例如設(shè)于電源管理器132內(nèi)的電路。最后,雖然實施例說明并且指定不同的閾值,但是應(yīng)當理解的是本發(fā)明也可使用其它閾值。

最后,本發(fā)明雖然參照上述具體實施例得以描述,但是應(yīng)當理解的是本申請實施方式的公開是闡明本發(fā)明原則的具體實施例,本發(fā)明應(yīng)不局限于所公開的實施例。因此不同的修改、改進或其他實施例都是可能的實施例,并且所有的這些修改、改進或組合都可能,并且不脫離本發(fā)明的精神及其所申請的權(quán)利要求范圍。
權(quán)利要求
1.一種用于對提供存儲控制器中的電容器組的保證壽命的可能性進行增加的方法,所述方法包括
當所述電容器組在第一電壓值操作時,檢測所述電容器組的溫度是否已超過預(yù)設(shè)閾值;
確定所述電容器組的預(yù)期壽命是否小于所述保證壽命;以及
若所述電容器組的所述預(yù)期壽命小于所述保證壽命,則將所述電容器組的操作電壓降低到第二值,以便增加所述電容器組的所述預(yù)期壽命。
2.如權(quán)利要求1所述的方法,還包括
確定將所述電容器組的所述操作電壓降低到所述第二值,是否會導致所述電容器組存儲比用以將所述存儲控制器的易失性寫緩存?zhèn)浞莸剿龃鎯刂破鞯姆且资源鎯ζ魉璧碾娔苌俚碾娔埽灰约?br> 若將所述電容器組的所述操作電壓降低到所述第二值會導致所述電容器組存儲比用以將所述易失性寫緩存?zhèn)浞莸剿龇且资源鎯ζ魉璧碾娔苌俚碾娔?,則在所述將所述操作電壓降低之前,先減小所述易失性寫緩存的大小。
3.如權(quán)利要求2所述的方法,還包括
計算新大小,在所述新大小上,操作在所述第二操作電壓值的所述電容器組具有容量以存儲用以將所述易失性寫緩存?zhèn)浞莸剿龇且资源鎯ζ鞯淖銐螂娔埽?br> 其中,所述減小所述易失性寫緩存的所述大小包括將所述易失性寫緩存的所述大小減小到所述新大小。
4.如權(quán)利要求1所述的方法,還包括
確定所述第一操作電壓值是否已經(jīng)是所述電容器組的預(yù)設(shè)最小操作電壓;以及
若所述第一操作電壓值已經(jīng)是所述預(yù)設(shè)最小操作電壓,則警告用戶,而不是所述將所述電容器組的所述操作電壓降低到所述第二值。
5.如權(quán)利要求1所述的方法,還包括
基于在所述存儲控制器的操作期間所述電容器組的溫度和操作電壓讀數(shù)的歷史記錄,計算所述電容器組的所述預(yù)期壽命。
6.如權(quán)利要求5所述的方法,還包括
(1)初始化所述電容器組的累積標準化運行時間;
(2)在所述初始化之后,感測所述電容器組在所述電容器組操作的時間間隔內(nèi)的所述溫度和所述操作電壓;
(3)若所述電容器組在壽命期間是在所述溫度和所述操作電壓下操作時,確定所述電容器組具有用于存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5);
其中,所述計算所述預(yù)期壽命包括用所述保證壽命乘以所述累積日歷運行時間與所述電容器組的所述累積標準化運行時間的比值。
7.如權(quán)利要求6所述的方法,還包括
(7)在所述步驟(2)之前,初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括當所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
8.如權(quán)利要求1所述的方法,還包括
基于在所述存儲控制器的操作期間所述電容器組的溫度讀數(shù)的歷史記錄,計算所述電容器組的所述預(yù)期壽命。
9.如權(quán)利要求8所述的方法,還包括
(1)初始化所述電容器組的累積標準化運行時間;
(2)在所述初始化之后,感測所述電容器組在所述電容器組操作的時間間隔內(nèi)的所述溫度;
(3)若所述電容器組在壽命期間內(nèi)在所述溫度下操作時,確定所述電容器組具有用于存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5);
其中,所述計算所述預(yù)期壽命包括用所述保證壽命乘以所述累積日歷運行時間與所述電容器組的所述累積標準化運行時間的比值。
10.如權(quán)利要求9所述的方法,還包括
(7)在所述步驟(2)之前,初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
11.如權(quán)利要求1所述的方法,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組在供應(yīng)給所述存儲控制器的主電源中斷期間,具有用以存儲足夠電能的電容量,以使所述存儲控制器將所述存儲控制器的易失性寫緩存?zhèn)浞葜了龃鎯刂破鞯姆且资源鎯ζ鳌?br> 12.如權(quán)利要求1所述的方法,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組具有用以存儲足夠電能的電容量,以在預(yù)設(shè)時間內(nèi)將電能提供給所述存儲控制器的易失性寫緩存,以在供應(yīng)給所述存儲控制器的主電源中斷期間內(nèi),保持其中存儲的寫緩存數(shù)據(jù)。
13.如權(quán)利要求1所述的方法,還包括
在所述將所述電容器組的所述操作電壓降低到所述第二值后,確定所述電容器組的所述預(yù)期壽命大于所述保證壽命;以及
增加所述電容器組的所述操作電壓,以增加存儲在所述電容器組內(nèi)的電能的量。
14.如權(quán)利要求1所述的方法,還包括
若在所述將所述電容器組的所述操作電壓降低至所述第二值后,所述電容器組的所述預(yù)期壽命仍小于所述保證壽命,則將所述電容器組的所述操作電壓降低到第三值,以增加所述電容器組的所述預(yù)期壽命。
15.如權(quán)利要求1所述的方法,還包括
檢測所述電容器組的所述溫度是否已超過第二預(yù)設(shè)閾值,其中,所述第二預(yù)設(shè)閾值大于所述第一預(yù)設(shè)閾值;
若所述溫度已超過所述第二預(yù)設(shè)閾值,則停止所述電容器組的充電。
16.如權(quán)利要求1所述的方法,還包括
檢測所述電容器組所汲取的電流是否已超過預(yù)設(shè)電流閾值;
若所述電容器組的所述所汲取的電流已超過所述預(yù)設(shè)電流閾值,則停止所述電容器組的充電。
17.一種用于在存儲控制器中提供電容器組的保證壽命的方法,所述方法包括
當操作在第一電壓值時,檢測所述電容器組的溫度是否超過預(yù)設(shè)閾值;
確定所述電容器組的累積標準化運行時間是否大于所述電容器組的累積日歷運行時間;以及
若所述累積標準化運行時間大于所述累積日歷運行時間,則將所述電容器組的所述操作電壓降低到第二值,以增加所述電容器組的預(yù)期壽命。
18.如權(quán)利要求17所述的方法,還包括
確定所述將所述電容器組的所述操作電壓降低到所述第二值是會否導致所述電容器組存儲比用以將所述存儲控制器的易失性寫緩存?zhèn)浞莸剿龃鎯刂破鞯姆且资源鎯ζ魉璧碾娔苌俚碾娔?;以?br> 若所述將所述電容器組的所述操作電壓降低到所述第二值將導致所述電容器組存儲比用以將所述易失性寫緩存?zhèn)浞莸剿龇且资源鎯ζ魉璧碾娔苌俚碾娔?,則在所述將所述操作電壓降低之前,先減小所述易失性寫緩存的大小。
19.如權(quán)利要求17所述的方法,其中,根據(jù)如下步驟計算所述累積標準化運行時間,所述這些步驟包括
(1)初始化所述累積標準化運行時間;
(2)在所述初始化之后,感測所述電容器組在所述電容器組操作的時間間隔內(nèi)的所述溫度和所述操作電壓;
(3)若所述電容器組在壽命期間是在所述溫度和所述操作電壓下操作時,確定所述電容器組具有用于存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)。
20.如權(quán)利要求19所述的方法,還包括
(7)在所述步驟(2)之前,初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
21.如權(quán)利要求17所述的方法,其中,根據(jù)如下步驟計算所述累積標準化運行時間,所述這些步驟包括
(1)初始化所述累積標準化運行時間;
(2)在所述初始化之后,在所述電容器組操作的時間間隔內(nèi)感測所述電容器組的所述溫度;
(3)若所述電容器組在壽命期間是在所述溫度下操作時,確定所述電容器組具有用于存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)。
22.如權(quán)利要求21所述的方法,還包括
(7)在所述步驟(2)之前,初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
23.如權(quán)利要求17所述的方法,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組在供應(yīng)給所述存儲控制器的主電源中斷期間,具有用以存儲足夠電能的電容量,以使所述存儲控制器將所述存儲控制器的易失性寫緩存?zhèn)浞葜了龃鎯刂破鞯姆且资源鎯ζ鳌?br> 24.如權(quán)利要求17所述的方法,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組具有用以存儲足夠電能的電容量,以在預(yù)設(shè)時間內(nèi)將電能提供到所述存儲控制器的易失性寫緩存,以在供應(yīng)給所述存儲控制器的主電源中斷期間內(nèi),保持其中存儲的寫緩存數(shù)據(jù)。
25.一種用于在存儲控制器中提供電容器組的保證壽命的方法,所述方法包括
當操作電壓為第一值時,檢測所述電容器組的溫度是否超過預(yù)設(shè)閾值;
確定所述電容器組的電容量下降百分率是否大于所述電容器組的日歷時間電容量下降百分率;以及
若所述電容量下降百分率大于所述日歷時間電容量下降百分率,則將所述電容器組的所述操作電壓降低到第二值,以增加所述電容器組的預(yù)期壽命。
26.如權(quán)利要求25所述的方法,還包括
確定所述將所述電容器組的所述操作電壓降低到所述第二值是否會導致所述電容器組存儲比用以將所述存儲控制器的易失性寫緩存?zhèn)浞莸剿龃鎯刂破鞯姆且资源鎯ζ魉璧碾娔苌俚碾娔?;以?br> 若所述將所述電容器組的所述操作電壓降低到所述第二值將導致所述電容器組存儲比用以將所述易失性寫緩存?zhèn)浞莸剿龇且资源鎯ζ魉璧碾娔苌俚碾娔埽瑒t在所述將所述操作電壓降低之前,先降低所述易失性寫緩存的大小。
27.如權(quán)利要求25所述的方法,還包括
計算所述電容器組的所述電容量下降百分率,其為所述電容器組的壽命末端電容量下降百分率與累積標準化運行時間相對于所述保證壽命的比值的乘積。
28.如權(quán)利要求27所述的方法,其中,所述壽命末端電容量下降百分率是預(yù)設(shè)值,所述預(yù)設(shè)值確定為所述電容器組不再具有用于存儲足夠的電能以將所述存儲控制器的易失性寫緩存?zhèn)浞莸剿龃鎯刂破鞯姆且资源鎯ζ鞯碾娙萘繒r的電容量下降百分率。
29.如權(quán)利要求27所述的方法,其中,根據(jù)如下步驟計算所述累積標準化運行時間,所述這些步驟包括
(1)初始化所述累積標準化運行時間;
(2)在所述初始化之后,感測所述電容器組在所述電容器組操作的時間間隔內(nèi)所述溫度和所述操作電壓;
(3)若所述電容器組在壽命期間是在所述溫度和所述操作電壓下操作時,確定所述電容器組具有存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)。
30.如權(quán)利要求29所述的方法,還包括
計算所述電容器組的日歷時間電容量下降百分率,其為所述電容器組的壽命末端電容量下降百分率與累積日歷運行時間相對于所述保證壽命的比值的乘積。
31.如權(quán)利要求30所述的方法,還包括
(7)在所述步驟(2)之前,先初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
32.如權(quán)利要求25所述的方法,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組在供應(yīng)至所述存儲控制器的主電源中斷期間,具有用以存儲足夠電能的電容量,以使所述存儲控制器將所述存儲控制器的易失性寫緩存?zhèn)浞葜了龃鎯刂破鞯姆且资源鎯ζ鳌?br> 33.如權(quán)利要求25所述的方法,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組具有用以存儲足夠電能的電容量,以在預(yù)設(shè)時間內(nèi)將電能提供到所述存儲控制器的易失性寫緩存存儲器,以在供應(yīng)給所述存儲控制器的主電源中斷期間內(nèi),保持其中存儲的寫緩存數(shù)據(jù)。
34.一種存儲控制器,包括
電容器組,用以存儲電能以在所述存儲控制器的主電源中斷期間將電能供應(yīng)給所述存儲控制器;
溫度傳感器,耦合到所述電容器組,以感測所述電容器組的溫度;以及
CPU,耦合到所述溫度傳感器,其中,所述CPU配置為
當操作在第一電壓值時,檢測所述電容器組的所述溫度是否超過預(yù)設(shè)閾值;
確定所述電容器組的預(yù)期壽命是否少于所述保證壽命;
若所述電容器組的所述預(yù)期壽命小于所述保證壽命,將所述電容器組的所述操作電壓降低到第二值,以增加所述電容器組的所述預(yù)期壽命。
35.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
確定將所述電容器組的所述操作電壓降低到所述第二值是否會會導致所述電容器組存儲比用以將所述存儲控制器的易失性寫緩存?zhèn)浞莸剿龃鎯刂破鞯姆且资源鎯ζ魉璧碾娔苌俚碾娔?;以?br> 若所述將所述電容器組的所述操作電壓降低到所述第二值將導致所述電容器組存儲比用以將所述易失性寫緩存?zhèn)浞莸剿龇且资源鎯ζ魉璧碾娔苌俚碾娔埽瑒t在所述將所述操作電壓降低之前,先降低所述易失性寫緩存的大小。
36.如權(quán)利要求35所述的控制器,其中,所述CPU配置為
計算操作在所述第二操作電壓值的所述電容器組,具有用以存儲用于將所述易失性寫緩存?zhèn)浞莸剿龇且资源鎯ζ鞯淖銐螂娔艿碾娙萘繒r的新大??;
其中,所述CPU通過將所述易失性寫緩存的所述大小降低到所述新大小來減小所述易失性寫緩存的所述大小。
37.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
確定所述第二操作電壓值是否已經(jīng)是所述電容器組的預(yù)設(shè)最小操作電壓;以及
若所述第二操作電壓值已經(jīng)是所述預(yù)設(shè)最小操作電壓,則警告用戶,而不是將所述電容器組的所述操作電壓降低到所述第二值。
38.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
根據(jù)在所述存儲控制器的操作期間所述電容器組的溫度和操作電壓讀數(shù)的歷史記錄,計算所述電容器組的所述預(yù)期壽命。
39.如權(quán)利要求38所述的控制器,其中,所述CPU配置為
(1)初始化所述電容器組的累積標準化運行時間;
(2)在所述初始化之后,感測所述電容器組在所述電容器組操作的時間間隔內(nèi)的所述溫度和所述操作電壓;
(3)若所述電容器組在壽命期間是在所述溫度和所述操作電壓下操作時,確定所述電容器組具有存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)步驟(2)至(5);
其中,所述CPU通過用所述保證壽命乘以累積日歷運行時間與所述電容器組的所述累積標準化運行時間的比值來計算所述預(yù)期壽命。
40.如權(quán)利要求39所述的控制器,其中,所述CPU配置為
(7)在所述步驟(2)之前,初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
41.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
基于在所述存儲控制器的操作期間所述電容器組的溫度讀數(shù)的歷史記錄,計算所述電容器組的所述預(yù)期壽命。
42.如權(quán)利要求41所述的控制器,其中,所述CPU配置為
(1)初始化所述電容器組的累積標準化運行時間;
(2)在所述初始化之后,感測所述電容器組在所述電容器組操作的時間間隔內(nèi)的所述溫度;
(3)若所述電容器組在壽命期間是在所述溫度上操作的,則確定所述電容器組具有存儲至少預(yù)設(shè)量的電能的電容量時的所述壽命;
(4)利用所述保證壽命相對于所述壽命的比值而標準化所述時間間隔;
(5)將所述標準化時間間隔加到所述累積標準化運行時間上;以及
(6)在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5);
其中,所述CPU通過用所述保證壽命乘以所述累積日歷運行時間與所述電容器組的所述累積標準化運行時間的比值來計算所述預(yù)期壽命。
43.如權(quán)利要求42所述的控制器,其中,所述CPU配置為
(7)在所述步驟(2)之前,先初始化所述電容器組的所述累積日歷運行時間;以及
(8)將所述時間間隔加到所述累積日歷運行時間上;
其中,所述步驟(6)包括在所述存儲控制器操作時,重復(fù)所述步驟(2)至(5)以及(8)。
44.如權(quán)利要求34所述的控制器,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組在供應(yīng)給所述存儲控制器的主電源中斷期間,具有用以存儲足夠電能的電容量,以使所述存儲控制器將所述存儲控制器的易失性寫緩存?zhèn)浞莸剿龃鎯刂破鞯姆且资源鎯ζ鳌?br> 45.如權(quán)利要求34所述的控制器,其中,所述保證壽命指定一段時間,在該時間上保證所述電容器組具有用以存儲足夠電能的電容量,以在預(yù)設(shè)時間內(nèi)將電能提供給所述存儲控制器的易失性寫緩存存儲器,以在供應(yīng)給所述存儲控制器的主電源中斷期間內(nèi),保持其中存儲的寫緩存數(shù)據(jù)。
46.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
確定在所述CPU將所述電容器組的所述操作電壓降低到所述第二值后,所述電容器組的所述預(yù)期壽命是否大于所述保證壽命;以及
增加所述電容器組的所述操作電壓,以增加存儲在所述電容器組內(nèi)的電能的量。
47.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
若在所述CPU將所述電容器組的所述操作電壓降低到所述第二值后,所述電容器組的所述預(yù)期壽命仍小于所述保證壽命,則將所述電容器組的所述操作電壓降低到第三值,以增加所述電容器組的所述預(yù)期壽命。
48.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
檢測所述電容器組的所述溫度是否超過第二預(yù)設(shè)閾值,其中,所述第二預(yù)設(shè)閾值大于所述第一預(yù)設(shè)閾值;
若所述溫度已超過所述第二預(yù)設(shè)閾值,則停止所述電容器組的充電。
49.如權(quán)利要求34所述的控制器,其中,所述CPU配置為
檢測所述電容器組所汲取的電流是否已超過預(yù)設(shè)電流閾值;
若所述電容器組所汲取的所述電流已超過所述預(yù)設(shè)電流閾值,則停止所述電容器組的充電。
50.如權(quán)利要求34所述的控制器,其中,所述電容器組包括多個串聯(lián)的電容器,其中,所述控制器還包括
電壓均衡電路,其耦合到所述電容器組,以使得所述操作電壓平均地分布在所述多個電容器之間。
51.一種存儲控制器,包括
電容器組,用以存儲電能以在所述存儲控制器的主電源中斷期間將電能供應(yīng)給所述存儲控制器;
溫度傳感器,其耦合到所述電容器組,以感測所述電容器組的溫度;以及
CPU,其耦合到所述溫度傳感器,其中,所述CPU配置為
當操作在第一電壓值時,檢測所述電容器組的所述溫度是否已超過預(yù)設(shè)閾值;
確定所述電容器組的累積標準化運行時間是否大于在所述電容器組的累積日歷運行時間;
若所述累積標準化運行時間大于所述累積日歷運行時間,則將所述電容器組的所述操作電壓降低到第二值,以增加所述電容器組的預(yù)期壽命。
52.一種存儲控制器,包括
電容器組,用以存儲電能以在所述存儲控制器的主電源中斷期間將電能供應(yīng)給所述存儲控制器;
溫度傳感器,其耦合到所述電容器組,以感測所述電容器組的溫度;以及
CPU,其耦合到所述溫度傳感器,其中,所述CPU配置為
當操作在第一電壓值時,檢測所述電容器組的溫度是否已超過預(yù)設(shè)閾值;
確定所述電容器組的電容量下降百分率是否大于所述電容器組的日歷時間電容量下降百分率;
若所述電容量下降百分率大于所述日歷時間電容量下降百分率,則將所述電容器組的所述操作電壓降低到第二值,以增加所述電容器組的預(yù)期壽命。
全文摘要
一種存儲控制器具有用于存儲電能以在主電源中斷時供應(yīng)電能的電容器組、可感測該電容器組溫度的溫度傳感器、以及CPU,所述存儲控制器當操作在第一電壓值時檢測電容器組的溫度是否已超過預(yù)設(shè)閾值,并且確定電容器組的預(yù)期壽命是否小于保證壽命。若預(yù)期壽命小于保證壽命,則CPU將電容器組的操作電壓降低到第二值,以便增加電容器組壽命。在一個實施例中,若電容器組的累積標準化運行時間大于累積日歷運行時間,則CPU降低電壓。在另一實施例中,若電容器組的電容量下降百分率大于日歷電容量下降百分率,則CPU降低電壓。
文檔編號G06F1/30GK101203825SQ200680022534
公開日2008年6月18日 申請日期2006年6月23日 優(yōu)先權(quán)日2005年8月4日
發(fā)明者V·K·佩科尼, Y·F·王 申請人:達西系統(tǒng)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1