具有动态电压调节超级电容的存储控制器的制作方法

文档序号:6567889阅读:249来源:国知局
专利名称:具有动态电压调节超级电容的存储控制器的制作方法
技术领域

本发明通常涉及使用电容器组作为在存储控制器中的可再充电的备用能源供应的领域,更具体地,本发明涉及对提供电容器组的保证寿命的可能性进行增加。

背景技术

廉价冗余磁盘阵列(Redundant Array of InexpensiveDisk/RAID)系统已成为现今市面上大多数电脑系统中大容量存储系统的主流,其应用在需要高性能、大容量存储空间和/或高数据可用性上,例如金融交易处理、银行事务、医疗应用、数据库服务器、网络服务器、邮件服务器、科学运算以及许多其它应用。RAID控制器控制了包括多个物理磁盘驱动器的群组,使该群组能以单一逻辑磁盘驱动器(或者多个逻辑磁盘驱动器)方式呈现在电脑操作系统之下。RAID控制器运用数据分割和数据冗余的技术以提升性能和数据可用性。

RAID控制器的主要特征尤其在于其运用在诸如金融交易处理或者从大量数据流的实时数据采集的特定应用上时,可提供快速写入的性能。尤其,当RAID控制器的写入等待时间(write latency)较短时,该电脑系统的整体性能将大为提升。写入等待时间是指RAID控制器需要完成从该电脑系统所发出的写入请求时所需的时间。

大多数RAID控制器包括较大的高速缓冲存储器以用于从这些磁盘驱动器缓存用户数据。因为RAID控制器无须执行从磁盘驱动器读取数据的冗长操作,所以当所请求的数据在高速缓冲存储器中时,对数据进行缓存使RAID控制器能够将数据快速回传到电脑系统。高速缓冲存储器也可以经所谓的后写入操作(posted-writeoperation)以用于减少写入请求等待时间。在后写入操作中,RAID控制器从电脑系统将该电脑系统所指定的数据读取到RAID控制器的高速缓冲存储器中,然后立即告知该电脑系统该写入请求已完成,即使该RAID控制器未将该数据写入这些磁盘驱动器中。后写入操作在RAID控制器中特别有用,因为在部分冗余的RAID级别中(RAIDlevel),在多个磁盘驱动器上必须执行读取-修改-写入操作(read-modify-write operation)以完成该系统的写入请求。换言之,除了所指定的系统数据必须写入至这些磁盘驱动器外,这些磁盘驱动器的部分也必须在用户数据和冗余数据可以被写入到这些磁盘驱动器前先被读取,此动作若不凭借后写入操作的优势来执行将会使RAID控制器的写入等待时间拉长甚至超过未用RAID控制器。

然而,后写入操作容易由于掉电而造成系统的数据丢失。这是因为高速缓冲存储器是易失性存储器,所以当掉电时,暂存于该高速缓冲存储器中的尚未写入到磁盘驱动器的数据将丢失。

为解决此问题,有些RAID控制器包括电池以持续提供高速缓冲存储器在主电源损耗时所需的电能。虽然电池降低用户数据丢失的可能性,然而由于电池所存储的电能是有限的,因此仍然存在当电池的电能耗尽时并且主电源仍无法恢复时,用户数据将丢失的可能性。不同用户的RAID系统所需电池供应给其高速缓冲存储器的电能的最短时间长度并不相同,但在一般情况下,大部分用户需要至少72小时以备在一周中可能发生的断电。

另外,使用电池在应用上还有不少众所周知的限制,如下所述。首先,电池对RAID控制器而言无疑是相对昂贵的部件。第二,目前电池相关技术也显示电池所能维持的电能在2到3年后便开始减弱,并且此寿命也比RAID控制器的预期寿命短。因此,RAID控制器必须将电池纳入设计中并且将其视为现场可替换单元(field-replaceable unit),并且通常情况下,其是可热插拔的现场可替换单元。也因此提高了RAID控制器的成本。第三,在不影响电池寿命和性能降低情况下的操作温度范围相当窄。第四,当电池电能为弥补主电源短缺而耗尽时,RAID控制器将必须以低性能的直写式(write-through)高速缓存模式下操作直到电池电能重新充足,而此电池充电时间较长。第五,当高速缓冲存储器的容量增大时,同样地,所需的电池电能以弥补主电源断电也相对增加;若将其所需的电能视为电池电能密度,则当需求的电能增加时,电池的大小也将相对的增加并且甚至可能会超过RAID控制器上所提供的电池容纳空间。

为解决上述问题,2005年9月14日提交的美国专利申请No.11/226,825公开了包括电容器组或者电池的存储控制器,以及诸如闪速存储器(flash memory)的非易失性存储器。当主电源中断时,该电容器组或者电池可以从存于其中的电能提供给该控制器以用于将写缓存的数据备份或者刷写到该非易失性存储器。因而,即使该电容器组或者电池的电能耗尽时并且无法在主电源恢复前提供所需电能,将该写缓存的数据保存在该非易失性存储器中,以致当主电源恢复时并且该控制器重新启动后,该写缓存的数据可以恢复或者还原至该写缓存中,然后再刷写到磁盘驱动器。

无论是用电池或者电容器组作为充电式能源以供应备用电源,监测该能源以确保该能源持续具有可以提供足够电能以执行备份操作是非常重要,并且以此防止写缓存的数据的丢失。当电源不再存有足够电能以执行其所需功能时,例如供应执行备份操作所需的电能,则可以认为该电源的寿命已耗尽。若该电源是电池,则监测该电池的寿命较为单纯,因为电池的寿命通常对于特定的电池技术是相对不变的。例如,常用于诸如写缓存存储控制器的应用的锂离子电池的寿命约为3年。因此,电池的所剩寿命可以单纯直接地凭借记录实际时间或者日历时间来监测,电池例如凭借实时时钟电路(real-timeclock circuit)是现在。

不同于电池,电容器的寿命与其温度、工作电压、电极变化以及过强电流呈非线性函数关系,并且其寿命可以基于这些因素改变而有所不同。例如,在特定应用中的特定工作电压下,电容器的寿命在操作温度为10摄氏度时为一百万小时;而当同一电容器在操作温度为80摄氏度时,该电容器的寿命可能仅只有一千个小时。同样地,在特定温度下,电容器在操作电压为1.8V中可能会有比在2.5V的操作电压中长近三倍的寿命。因此,单纯地使用用于监测电池寿命的实时时钟技术对电容器而言在许多应用上并不合适,因为电容器的不同寿命也会造成用于写缓存存储控制器的数据丢失的不可接受危险。

电容器制造商所建议的用于测量电容器的电容量(其是有效测量其寿命的方法,因其电容量决定了可存储电能的多少)的方法是放电然后充电该电容器以测量充电时所需的时间和最大电流,并且凭借所测量的数值进而计算出其电容量。然而,此方法对写缓存存储控制器的相关应用并不合适,由于此方法当该电容器在放电/充电过程中时,需要将该写缓存设在直写式模式中,以避免当主电源中断而不能执行备份操作时可能产生的写缓存的数据的丢失。

因此,需要的是有别于监测电容器组的实际存在时间或者凭借放电和充电来测量其电容量的方法,以确定电容器组的寿命。

除此之外,不同于电池,电容器组可以设计为非现场可替换的,并且该存储控制器的制造商可以对消费者或用户保证该存储控制器的电容器组的寿命。因此,当电容器组的寿命可以大幅度改变时,需要的是如何提供方法以使该电容器组达到该存储控制器制造商对用户保证的寿命。


发明内容

本发明当有必要时由存储控制器调节电容器组的操作电压,以便增加电容器组达到保证寿命的可能性。在一个实施例中,存储控制器基于此电容器组的采样操作温度和电压值的历史记录,以及用于各种温度和电压组合的凭经验确定出寿命,计算电容器组的预期寿命,然后比较预期寿命与保证寿命以确定何时需要调节该电压。在另一实施例中,存储控制器计算电容器组的累积标准化运行时间,并且比较电容器组的累积标准化运行时间与电容器组的累积日历运行时间,以确定何时需要调节该电压。在另一实施例中,存储控制器计算电容器组的电容量下降百分率,并且比较电容器组的电容量下降百分率与寿命末端电容量下降百分率,以确定何时需要调节该电压。在一个实施例中,存储控制器响应检测该电容器组温度已超过预设阈值,而检测到此电压需要调节。

本发明在一个方面提供了用于在存储控制器中增加供应电容器组的保证寿命的可能性的方法。此方法包括在操作在第一电压值时检测电容器组的温度已超过预设阈值,以及确定电容器组的预期寿命是否小于保证寿命。此方法还包括若电容器组的预期寿命小于保证寿命,则将电容器组的操作电压降低到第二值,以增加电容器组的预期寿命。

本发明在另一方面提供了用于在存储控制器中提供电容器组的保证寿命的方法。此方法包括当操作在第一电压值时检测电容器组的温度已超过预设阈值,以及确定电容器组的累积标准化运行时间是否大于电容器组的累积日历运行时间。此方法还包括若该累积标准化运行时间大于累积日历运行时间,则将电容器组的操作电压降低至第二值,以便增加电容器组的预期寿命。

本发明在再一方面提供了在存储控制器中提供电容器组的保证寿命的方法。此方法包括当操作电压为第一电压值时,检测电容器组的温度已超过预设阈值,以及确定电容器组的电容量下降百分率大于电容器组之日历时间电容量下降百分率。此方法还包括若电容量下降百分率大于日历时间电容量下降百分率,则将电容器组的操作电压降低至第二值,以增加电容器组的预期寿命。

本发明在又一方面提供了一种存储控制器。此控制器包括在供应给存储控制器的主电源断电期间存储电能以提供给存储控制器的电容器组。此控制器还包括耦合到电容器组并且感测电容器组温度的温度传感器,此控制器还包括耦合到温度传感器的CPU,此CPU当操作在第一电压值时检测电容器组的温度已超过预设阈值,以及确定电容器组的预期寿命是否小于保证寿命。若电容器组的预期寿命小于保证寿命,则此CPU还将电容器组的操作电压降低到第二值,以增加电容器组的预期寿命。

本发明在再一方面提供了一种存储控制器。此控制器包括在供应给存储控制器的主电源断电期间存储电能以提供给存储控制器的电容器组。此控制器还包括耦合到电容器组并且感测电容器组温度的温度传感器,此控制器还包括耦合到温度传感器的CPU,此CPU当操作在第一电压值时检测电容器组的温度已超过预设阈值,以及确定电容器组的累积标准化运行时间是否大于电容器组的累积日历运行时间。若累积标准化运行时间大于累积日历运行时间,则此CPU还将电容器组的操作电压降低至第二值,以便增加电容器组的预期寿命。

本发明在又一方面提供了一种存储控制器。此控制器包括在供应给存储控制器的主电源断电期间存储电能以提供给存储控制器的电容器组。此控制器还包括耦合到电容器组并且感测电容器组温度的温度传感器,此控制器还包括耦合到温度传感器的CPU,此CPU当操作在第一电压值时检测电容器组的温度已超过预设阈值,并且确定电容器组的电容量下降百分率是否大于电容器组的日历时间电容量下降百分率。若电容量下降百分率大于日历时间电容量下降百分率,则此CPU还将电容器组的操作电压降低至第二值,以便增加电容器组的预期寿命。




图1是示出根据本发明的RAID控制器的方块图;
图2是更详细示出根据本发明的图1的存储器控制器的方块图;
图3是示出根据本发明的图2的CSRs的方块图;
图4是示出根据本发明的图1的RAID控制器执行刷写操作的流程图;
图5是示出根据本发明的图1的RAID控制器在主电源中断后恢复供电情况下的流程图;
图6是示出根据本发明替代实施例的RAID的的方块图;
图7是示出根据本发明替代实施例的图6的RAID控制器执行刷写操作的流程图;
图8是示出根据本发明的图1的电容器组在不同温度和电压条件组合下的电容器组的寿命的表或数据库的方框图;
图9是示出根据本发明的图1的RAID控制器的操作流程图;
图10是示出根据本发明的图1的RAID控制器的操作流程图;
图11是示出根据本发明的图1的RAID控制器的操作流程图;
图12是示出根据本发明的图1的RAID控制器的操作流程图;
图13是示出根据本发明替代实施例的RAID控制器的操作流程图;
图14是示出根据本发明替代实施例的RAID控制器的操作流程图;
图15是示出根据本发明替代实施例的RAID控制器的操作流程图。

具体实施例方式
现在参照图1,示出根据本发明的RAID控制器100的方块图。在一个实施例中,RAID控制器100可以是一对双主动冗余容错(active-active redundant fault-tolerant)RAID控制器之一,以提供高数据可用性。当一个RAID控制器100故障时,例如在此所述的将后写入数据从易失性存储器刷写到非易失性存储器时发生故障,此时该系统将故障转移(failover)至其它RAID控制器100。RAID控制器100包括一个或多个电容器,以供应当主电源中断时该RAID100所选部分的电路所需的电源,因此使存储器控制器可以快速并且有效率地将后写入数据从高速缓冲存储器刷写到非易失性存储器。有利地,RAID控制器100周期性地采样电容器的温度和电压,并且使用用于标准化该电容器的操作间隔的寿命特性信息,适当地计算出这些电容器的有效年龄,其中该寿命信息是基于实验并且以所采样的温度和电压值的组合而获得的信息。另外,RAID控制器100动态地调整电容器的操作电压,例如响应温度上升而调整,基于电容器的有效年龄作为确认这些电容器达到对用户保证的寿命的依据。最后,若控制器确定这些电容器的电容量已下降到不具存储足够电能以在新调整的电压中执行备份操作时,该控制器将动态地将写缓存值的大小减少到使这些电容器具有可以存储足够电能执行备份操作的电容量的合适大小。

RAID控制器100包括主机接口118,以与主电脑进行接口。在一个实施例中,该RAID控制器100是基于局部总线的控制器,例如插入或集成到主电脑系统的诸如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发出I/O请求的主电脑分隔的外壳中。例如,该RAID控制器100可以是部分的存储区域网络(storage area network/SAN)。在该类型的实施例中,该主机接口118可以包括不同的接口,例如光纤通道、Ethernet、InfiniBand、SCSI、HIPPI、Token Ring、Arcnet、FDDI、LocalTalk、ESCON、FICON、ATM、SAS、SATA、iSCSI以及其它类似接口。

RAID控制器100还包括磁盘接口116,以与磁盘驱动器或其它大容量存储装置进行接口,其中磁盘驱动器或大容量存储装置包括但不仅限于磁带机、固态磁盘(solid-state disk/SSD)以及诸如CDROM或DVD驱动器的光学存储装置。这些磁盘驱动器存储用户数据。该磁盘接口116可以包括但不仅限于以下接口光纤通道、小型电脑系统接口(SCSI)、高级技术附件(Advanced TechnologyAttachment/ATA)、串行连接的SCSI(Serial Attached SCSI/SAS)、串行高级技术附件(Serial Advanced Technology Attachment/SATA)、Ethernet、Infiniband、HIPPI、ESCON、iSCSI或FICON。RAID控制器100响应从主电脑所收到的I/O请求以从这些磁盘驱动器读取数据或将数据写入到这些磁盘驱动器。

RAID控制器100还包括易失性高速缓冲存储器104,或高速缓冲存储器104或易失性存储器104。该易失性高速缓冲存储器104包括写缓存156和读高速缓冲存储器158。当该易失性高速缓冲存储器104是易失性时,存储于其中的数据将因掉电而消失。在一个实施例中,该易失性高速缓冲存储器104包括双倍数据传输速率同步动态随机存取存储器(double-data-rate synchronous dynamic random accessmemory/DDR SDRAM),其包括自我刷新模式。当SDRAM设于自我刷新模式中时,该SDRAM消耗较少于不在自我刷新模式下操作时的电源。在其它实施例中,该易失性高速缓冲存储器104可以包括其它形式的易失性存储器,包括但不仅限于静态随机存取存储器(SRAM)。易失性高速缓冲存储器104的容量或大小也是相当重要的。易失性高速缓冲存储器104包括512MB、1GB以及2GB大小的实施例;然而,其他较大或较小的易失性高速缓冲存储器104也可运用或包括于RAID控制器100上。

RAID控制器100使用易失性高速缓冲存储器104以缓冲传输在主机与磁盘之间的数据。当主机要求将数据写入磁盘时,RAID控制器100经由主机接口118将数据从主机传送到易失性高速缓冲存储器104的写缓存156中,然后再将该数据从该写缓存156经由磁盘接口116传送到这些磁盘中。相反地,当主机要求数据从磁盘读取时,RAID控制器100经由磁盘接口116将数据从这些磁盘传送到易失性高速缓冲存储器104的读高速缓冲存储器158中,然后再将该数据从该读高速缓冲存储器158经主机接口118传送到主机。

如上所述,当主机要求将数据写入到磁盘时,RAID控制器100经由主机接口118将数据从主机传送到易失性高速缓冲存储器104中,然后再将该数据从该易失性高速缓冲存储器104经由磁盘接口116传送到这些磁盘中。通常,RAID控制器100在数据已实际写入磁盘前,并无需告知主机该写入请求已完成。然而,RAID控制器100经配置而可以将数据缓存在易失性高速缓冲存储器104中,并且可在数据实际写入磁盘前,告知主机该写入请求已完成,然后再将数据写入或刷写到磁盘中。此操作称为写缓存(write-caching),也可称为后写入操作。与后写入操作相关的数据称为后写入数据,或者写缓存数据。即,后写入数据是存储于易失性高速缓冲存储器104中而未被写入到磁盘驱动器中的数据,但就RAID控制器100而言,该RAID控制器100已告知主机该写入操作已完成。另外,在此所指的后写入数据可以包括元数据(metadata),其用于指代将数据写入磁盘时所需的控制信息,包括但不仅限于写入数据的逻辑块地址和磁盘驱动器单元号、以及指定该数据是否为具有RAID级别的RAID阵列的部分的信息以基于必须被写入磁盘的后写入数据进而产生所需的冗余数据。

RAID控制器100还可以用易失性高速缓冲存储器104以执行数据的读缓存;即,若因先前对相同数据的读取请求,故所请求的数据已存在于该易失性高速缓冲存储器104中时,将所请求的数据从该易失性高速缓冲存储器104提供到主机,而不是从磁盘提供。最后,RAID控制器100可以使用易失性高速缓冲存储器104以缓冲为写入磁盘而产生的冗余RAID数据。

RAID控制器100还包括中央处理器(CPU)子系统112,用于提取和执行程序指令进而控制在磁盘驱动器与主机之间数据的传输,如上所述。该CPU子系统112可以包括任何处理器,该处理器可执行所存储的程序,包括但不仅限于例如,处理器和芯片组,例如x86体系结构的处理器以及公知的北桥或存储器控制集线器(Memory Control Hub/MCH)和南桥或I/O控制集线器(I/O ControlHub/ICH),其包括I/O总线接口,例如连接至ISA总线或PCI系列的总线的接口。在一个实施例中,该CPU子系统112包括TransmetaTM8800处理器,其包括集成的北桥和Ali M1563S南桥。在另一实施例中,该CPU子系统112包括英特尔赛扬M(Intel Celeron M)处理器和北桥(MCH)和南桥(ICH)。在另一实施例中,该CPU子系统112还包括随机存取存储器(RAM)以存储程序指令,使这些请求可由微处理器所提取和执行,以及耦合到该CPU子系统112的闪速存储器106用于将程序指令以非易失性方式存储并且将这些指令解压缩和写入到程序RAM中以使其可由微处理器执行。在一个实施例中,闪速存储器106还存储诸如签名的信息,用于比较写入到非易失性存储器108(如下所述)的签名以指示由该高速缓冲存储器104刷写到该非易失性存储器108的操作是成功的,如下所述。

该CPU子系统112从主机接口118接收主电脑的I/O请求并且处理这些请求。处理这些请求包括了不同的功能。例如,主机I/O请求可指定逻辑块号和数据块的数目以用于传输到冗余阵列或从该冗余阵列传出;然而这些逻辑块号和块数目通常并不相应于合适的物理块号和包括该冗余阵列的物理磁盘的块数目。因此,在该主机I/O请求中所指定的逻辑块号必须转换为合适的物理块号,块数目和磁盘以用于执行一个或多个在RAID控制器100与这些包括冗余阵列的磁盘之间数据的转换。此转换功能由该CPU子系统112所执行。在一个实施例中,该CPU子系统112根据公知的RAID技术以执行所述转换。在执行该转换后,CPU子系统112编程该磁盘接口116以执行在这些磁盘与易失性高速缓冲存储器104之间数据的转换。除此之外,CPU子系统112还编程该主机接口118以执行在该主电脑和该易失性高速缓冲存储器104之间数据的转换。因而,当处理主机I/O请求以从主电脑写入数据到冗余阵列时,该CPU子系统112将编程该主机接口118以从该主电脑传送数据到该易失性高速缓冲存储器104中;在数据接收进入该易失性高速缓冲存储器104后,该CPU子系统112将编程磁盘接口116以从该易失性高速缓冲存储器104传送数据到包括有冗余阵列的磁盘的已转换的合适物理块号中。相反地,当处理主机I/O请求以从冗余阵列读取数据到主电脑时,该CPU子系统112编程该磁盘接口116以从包括有冗余阵列的磁盘的已转换的合适物理块号传送数据到该易失性高速缓冲存储器104中;在该数据接收进入该易失性高速缓冲存储器104后,该CPU子系统112将编程该主机接口118以从该易失性高速缓冲存储器104传送数据到主电脑。该CPU子系统112也执行该易失性高速缓冲存储器104的部分的分配管理的功能,尤指高速缓存管理;即,将该易失性高速缓冲存储器104作为可高速缓存在易失性高速缓冲存储器104中缓冲的部分数据的高速缓冲存储器而管理,以便根据公知的高速缓存技术改善在该冗余阵列与主电脑之间的I/O性能。在一个实施例中,该CPU子系统112在特定RAID级别中所需的数据执行异或(exclusive-OR)操作,这些特定RAID级别将奇偶数据(parity data)作为冗余数据,如RAID级别5。在一个实施例中,该CPU子系统112编程专用的异或电路,该异或电路设于存储器控制器102中以对用户数据执行异或操作以产生冗余奇偶数据。

RAID控制器100还包括非易失性存储器108。该非易失性存储器108因其在掉电时仍持续存储内含的所有数据,所以是非易失性的存储器。在一个实施例中,非易失性存储器108包括紧凑型闪速(Compact FLASH)存储器装置,该紧凑型闪速存储器装置包括NAND闪存装置和与ATA接口连接到存储器控制器102(如下所述)的控制器。非易失性存储器108的容量的实施例包括有256MB、512MB以及1GB;然而,设于RAID控制器100上的非易失性存储器108的其他实施例也可为其他较大或较小容量。在一个实施例中,该非易失性存储器108包括微型磁盘驱动器(micro-disk drive)。RAID控制器100使用非易失性存储器108以备份或刷写易失性高速缓冲存储器104中的内容,尤指后写入数据,故当主电源中断并且恢复时,该后写入数据可由该非易失性存储器108恢复回至该易失性高速缓冲存储器104中。在一个实施例中,该非易失性存储器108包括NAND闪速存储器阵列以供存储器控制器102直接写入。优选地,在该阵列中的每一NAND闪速存储器装置包括8位宽的数据装置,并且该装置布置成使存储器控制器102可执行16位或32位宽的写存取至非易失性存储器108中以提升写入速率,因而进一步减少刷写操作的时间。在CPU 112上执行的软件程序存储有在该非易失性存储器108中的累积标准化运行时间152和累积日历运行时间154。在替代实施例中,在CPU 112上执行的软件程序存储有在该编码闪速存储器106中的该累积标准化运行时间152和累积日历运行时间154。该累积标准化运行时间152和该累积日历运行时间154的使用将在下面作详细说明。

RAID控制器100还包括存储器控制器102,其耦合到磁盘接口116、主机接口118、高速缓冲存储器104以及非易失性存储器108。该存储器控制器102控制磁盘接口116、主机接口118、以及CPU子系统112到高速缓冲存储器104和非易失性存储器108的存取。在一个实施例中,存储器控制器102还具有如总线桥(bus bridge)的功能,用于桥接在易失性高速缓冲存储器104总线、非易失性存储器108总线、CPU子系统112总线、主机接口118和磁盘接口116总线之间的通信。在一个实施例中,存储器控制器102是定制的大规模集成电路。在一个实施例中,存储器控制器102包括定制的可编程逻辑装置。在此所述的存储器控制器102可参照图2进行更加详细的描述。

在正常操作中,RAID控制器100接收由分设于该RAID控制器100之外的主电源所供应的电源,包括但不仅限于商业上惯用的A/C电源,其是电源供应领域的公知常识。然而,RAID控制器100还包括一个或多个电容器136或者电容器组136,以用于供应该RAID控制器100在主电源中断时所需的电源,如下详述。若在这些电容器136上的部分或全部电荷或电能存储因主电源中断而耗尽时,这些电容器136可在主电源恢复时重新从该主电源充电。在一个实施例中,电容器136运用气凝胶碳(aerogel carbon)技术作为活性物质并且配置为单一包装中的并联电容器阵列。在一个实施例中,电容器136包括四个由Florida州Boynton Beach的隶属库柏工业旗下的库柏博士曼公司(Cooper Bussman of Boynton Beach,a division of CooperIndustries)所制造的型号为B1860-2R5107 PowerStor B系列的气凝胶超级电容器。然而,其他电容器的实施例也可采用,并且本发明并不局限于任一特定的电容器型号或技术上。

RAID控制器100还包括电源调节器134,其耦合到该控制器上以用于从电容器136和主电源两者接收电源。该电源调节器134可感测主电源是否供应电源;若是,则调节该主电源以将电源提供给不同的RAID控制器100电路。若该主电源未供应足够的电源,则该电源调节器134将调节该电容器136以将电源供应给RAID控制器100电路的子集(subset),如下所述。

RAID控制器100还包括电源管理器132,其耦合到该电源调节器134和存储器控制器102。该电源管理器132也可感测主电源是否供应电源。若该电源管理器132感测到主电源中断时,电源管理器将选择性地指导存储器控制器102从高速缓冲存储器104中刷写后将数据写入非易失性存储器108中,如下详述。在一个实施例中,该电源管理器132包括微型复杂可编程逻辑装置(CPLD),其消耗的电源相当少。另外,也可运用其他电路以达到上述由电源管理器132的功能,如定制的集成电路或分立元件。

如图1所示的实施例,当主电源中断时,电容器136将仅将电源供应给高速缓冲存储器104、非易失性存储器108、存储器控制器102、以及电源管理器132,还有其它需用于维持这些电路运行的电路,例如将存储器控制器102耦合到高速缓冲存储器104的高速存储器总线的总线端连接器。优选地,电容器136并不需要将电源供应给无需执行刷写操作的电路,例如CPU子系统112、磁盘接口116、主机接口118以及存储器控制器102的非必要部分,例如在该CPU子系统112、磁盘接口116、主机接口118之间的接口部分。

根据本发明所公开的技术内容,刷写(flush)操作泛指当主电源中断时,将数据从高速缓冲存储器104复制到非易失性存储器108中;而恢复(restore)操作泛指当电源恢复后,将数据从非易失性存储器108复制到高速缓冲存储器104中。当电源恢复后,RAID控制器100可选择性地执行恢复操作,如下详述。

RAID控制器100还包括温度传感器142,以感测电容器组136的环境温度,并且将采样的温度提供到CPU 112。另外,RAID控制器100还包括电压传感器144,以感测电容器组136的电压,并且将采样的电压提供到CPU 112。除此之外,RAID控制器100还包括电流传感器146,以感测电容器组136在充电时所用的电流,并且将采样的电流提供到CPU 112。在一个实施例中,该CPU 112经由存储器控制器102和/或电源管理器器132读取这些采样的温度、电压以及电流。在一个实施例中,该温度传感器142、电压传感器144以及电流传感器146包括有I2C从装置,其包括模数转换器。该CPU 112使用这些采样的温度、电压以及电流值以监测并且维持电容器组136的寿命,如下详述。

参照图2,其更加详细示出根据本发明的图1的存储器控制器102的方块图。该存储器控制器102包括控制逻辑214以用于控制该存储器控制器102的不同部分。在一个实施例中,该控制逻辑214包括直接存储器存取控制器(DMAC),其可在刷写操作中将数据从易失性高速缓冲存储器104复制到非易失性存储器108。

该控制逻辑214可接收来自图1的电源管理器132的重置信号226。当电源管理器132断言该重置信号226时,该存储器控制器102将重置。电源管理器132配置为选择性地重置高速缓冲存储器104,故当RAID控制器100重置或当主电源恢复时,若该高速缓冲存储器104中的内容仍为有效时,该存储器控制器102将不会使该高速缓冲存储器104中的内容成为无效。例如,若高速缓冲存储器器104处于执行刷写操作的过程中时,电源管理器132不会重置存储器控制器102,因此可允许CPU子系统112顺利地中断该刷写操作,如下所述。

控制逻辑214也从电源管理器132接收pwr_state信号222。该电源管理器132经由如下表1所示的pwr_state信号222指示存储器控制器102执行相关动作。尤其,电源管理器132可指示存储器控制器102用该pwr_state信号222的一个值,将高速缓冲存储器104的内容刷写到非易失性存储器108中,并且指示存储器控制器102用该pwr_state信号222的另一个值,将高速缓冲存储器104放置于自我刷新模式,以应对不同的情况,例如主电源中断或刷写操作完成,如下所述。
表1-PWR_STATE信号
控制逻辑214还将flush_status信号224提供给电源管理器132。存储器控制器102以现有的高速缓冲存储器104经由该flush_status信号224将电源管理器132提供给非易失性存储器108刷写状态,如下表2所示。尤其,存储器控制器102可经由该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的缓冲器),其用于缓冲在多个接口间传输的数据并且在彼此之间提供并联高速数据传输通路。在一个实施例中,ATA接口208支持ATA PIO Mode-4和数据传输速率可高达每秒16.7MB的速率。

存储器控制器102还包括诸如PCI接口的局部总线接口212,其耦合到控制逻辑214,以作为存储器控制器102连接到CPU子系统212的接口。CPU子系统112可经由该PCI接口212对高速缓冲存储器104、非易失性存储器108、磁盘接口116以及主机接口118作存取。

存储器控制器102还包括控制和状态寄存器(CSRs)202,其耦合到局部总线接口212和控制逻辑214。这些CSRs 202都由图1的CPU子系统112所编程以控制存储器控制器102,并且可被CPU子系统112读取以使存储器控制器102将状态提供给CPU子系统112。在这些CSRs 202之间的是可使CPU子系统112指定一个或多个在高速缓冲存储器104中的数据区的位置和大小的控制寄存器,其中这些数据区的数据可为例如后写入数据,并且当主电源中断时,存储器控制器102将该高速缓冲存储器104刷写到非易失性存储器108中。以下将进一步说明这些CSRs 202并请参照图3。

参照图3,其示出了根据本发明的图2的CSRs 202的方块图。各种CSRs 202及其内容将在下面的文字和图表中阐述。

NVB_FLUSH_CRL寄存器302提供CPU子系统112类似于电源管理器132经由pwr_state信号222启动刷写操作的启动刷写操作能力,并且提供CPU子系统112类似于电源管理器132经由flush_state信号224读取刷写操作状态的读取刷写操作状态能力。当主电源恢复并且CPU子系统112程序开始时,刷写操作可能仍处于进行中,并且高速缓冲存储器104的内容可能仍为有效的。因此,在一个实施例中,CPU子系统112可通过将0值写入在如下表3所示的NVB_FLUSH_CTRL寄存器302中的FLUSH_START位,以指示存储器控制器102中止尚在进行中的刷写操作(如前述,因该高速缓冲存储器104的内容仍可能为有效的)。
表3-NVB_FLUSH_CTRL寄存器/Register
NVB_RESTORE_CTRL寄存器302使CPU子系统112可启动恢复操作以从非易失性存储器108恢复到高速缓冲存储器104,并且使CPU子系统112可读取恢复操作的状态。
表4-NVB_RESTORE_CTRL寄存器
NVB_RAM_START_ADDR1寄存器306指定在数据的第一区的高速缓冲存储器104中的开始地址,该数据分别是刷写或恢复操作的发信方或收信方。
表5-NVB_RAM_START_ADDR1寄存器
NVB_ATA_START_ADDR1寄存器308指定在数据的第一区的非易失性存储器108中的开始地址,该数据分别是刷写或恢复操作的发信方或收信方。在一个实施例中,存储器控制器102将在该NVB_ATA_START_ADDR1寄存器308中所指定的非易失性存储器108的地址转换为扇区(sector)号,即若所述非易失性存储器108是已分段的ATA装置时的前提下。
表6-NVB_ATA_START_ADDR1寄存器
NVB_SIZE1寄存器312指定数据的第一区的整体大小或长度,该数据可通过刷写或恢复操作而被复制。
表7-NVB_SIZE1寄存器
NVB_RAM_START_ADDR2寄存器314指定在数据的第二区的高速缓冲存储器104中的开始地址,该数据分别是刷写或恢复操作的发信方或收信方。
表8-NVB_RAM_START_ADDR2寄存器
NVB_ATA_START_ADDR2寄存器316指定在数据的第二区的非易失性存储器108中的开始地址,该数据分别是刷写或恢复操作的发信方或收信方。在一个实施例中,存储器控制器102将在该NVB_ATA_START_ADDR2寄存器316中所指定的非易失性存储器108的地址转换为扇区号,即若所述非易失性存储器108是已分段的ATA装置时或前提下。
表9-NVB_ATA_START_ADDR2寄存器
NVB_SIZE2寄存器318指定数据的第二区的整体大小或长度,该数据可通过刷写或恢复操作而被复制。
表10-NVB_SIZE2寄存器
NVB_SECTOR_COUNT寄存器322指定扇区数目以用于存储器控制器102发出给非易失性存储器108ATA装置的每一写入/读取命令。NVB_SECTOR_COUNT寄存器322可用于最优化非易失性存储器108ATA装置的刷写操作和自非易失性存储器108的恢复操作的速度。NVB_SECTOR_COUNT寄存器322与NVB_SIZE寄存器312/318共同使用。例如,CPU子系统112可以以256KB值编程该NVB_SIZE寄存器312/318和以32值编程NVB_SECTOR_COUNT寄存器322,故可使256KB的数据以每32扇区(16KB)的16个写入命令写入。NVB_SIZE寄存器312/318必须以该NVB_SECTOR_COUNT寄存器322的值的乘积而编程。
表11-NVB_SECTOR_COUNT寄存器
NVB_PROGRESS寄存器324指定目前在高速缓冲存储器104中分别被刷写操作读取或恢复操作写入的地址。该NVB_PROGRESS寄存器324只有在进行刷写或恢复操作时有效。该NVB_PROGRESS寄存器324使CPU子系统112能够评价刷写或恢复操作的进行过程。若刷写或恢复操作产生错误,则该NVB_PROGRESS寄存器324的值将指定错误发生的大约地址。若刷写或恢复操作中止,则NVB_PROGRESS寄存器324将在该中止发生后,增量(increment)到下一扇区。
表12-NVB_PROGRESS寄存器
ATA_INT_STATUS寄存器326可以由CPU子系统112所读取,以确定非易失性存储器108ATA装置是否已产生中断(interrupt),如在刷写或恢复操作中成功读取或写入数据的一个或多个扇区时,确定刷写或恢复操作是否已完成。该ATA_INT_STATUS寄存器326也可使CPU子系统112清除该中断源。
表13-ATA_INT_STATUS寄存器
ATA_INT_ENABLE寄存器328使CPU子系统112可开启或停止由ATA_INT_STATUS寄存器326所指定的中断源。
表14-ATA_INT ENABLE寄存器
NVB_ERROR_CODE寄存器322可在NVB_FLUSH_CRTL寄存器302或NVB_RESTORE_CTRL寄存器304告知故障或失败发生时,指定当刷写或恢复操作完成时的错误类型。当检测到ECC错误时,该操作将会终止于下一个扇区边界处。因此,仍可在该错误发生后传输至多512字节(bytes)。在一个实施例中,CPU子系统112可有忽视ECC错误的能力。硬件检测ATA装置的错误是通过检查ATA装置状态寄存器(ATA Device Status Register)的内容而达成,其是在ATA直接存取寄存器342(ATA Direst Access Register)中的任务文件寄存器(Task File Register),如下所述。存储器控制器102可在发出ATA请求并且每一扇区的传输完成后,读取该ATA装置状态寄存器。因此,ATA装置的错误可在该错误发生的扇区边界处被检测到并且回报,即,在ATA错误实际发生后仍可传输至多512字节。同样地,ATA操作仅终止在扇区边界上。
表15-NVB_ERROR_CODE寄存器
NVB_COFIG寄存器334使CPU子系统112可配置为刷写操作的多种型态。尤其,CPU子系统112可使存储器控制器102自动执行刷写操作或可停止存储器控制器102使其不会自动执行刷写操作。另外,CPU子系统112还可经由NVB_CONFIG寄存器334选择性地指导存储器控制器102将指定当刷写操作终止时的刷写操作结果的信息写入非易失性存储器108中,该信息可为该刷写是否成功完成或中止或有错误发生,如下所叙述。存储器控制器102将刷写结果的信息写入非易失性存储器108ATA装置的预设刷写结果扇区中。在一个实施例中,刷写结果扇区是该非易失性存储器108的第一扇区。
表16-NVB_CONFIG寄存器
ATA_RESET寄存器336使CPU子系统112可重置该非易失性存储器108ATA装置。
表17-ATA_RESET寄存器
ATA_CRC寄存器338包括32位CRC供数据在刷写或恢复操作完成时使用。若此方式已被允许,CRC数据可自动地写入写结果扇区中。在一个实施例中,刷写操作将该CRC值写入该写结果扇区中,并且当执行恢复操作时,该CRC值与ATA_CRC寄存器338值比较以确定在刷写或恢复操作中是否有任何数据破坏的发生,即该比较是不匹配的结果。
表18-ATA_CRC寄存器
写入非易失性存储器108ATA装置的刷写结果扇区的刷写结果信息的格式揭示在如下的表19。
表19-刷写结果扇区形式
完成签名(Completion Signature)的值还存储在闪存106的编码中,因此CPU子系统112可将该值与于非易失性存储器108刷写结果扇区中的完成签名作比较,以确定刷写操作是否成功。除此之外,在一个实施例中,存储器控制器102可计算被刷写至非易失性存储器108的数据的运行的循环冗余码/cyclic redundancy code(CRC),并且将最后的CRC值写入在表19所示的偏置中的刷写结果扇区。如此将可使CPU子系统112在恢复操作中读取数据时产生CRC以通过将其与ATA_CRC寄存器338值作比较以确定该数据是否有效,即,经由刷写操作该数据正确地写入非易失性存储器108中。

ATA直接存取寄存器342包括控制和状态寄存器以供CPU子系统112使用于与非易失性存储器108ATA装置通信。在一个实施例中,ATA直接存取寄存器342包括标准ATA寄存器文件,通称为任务文件(Task File),其是磁盘驱动器领域所公知的。存储器控制器102读取和写入该ATA直接存取寄存器342以对非易失性存储器108ATA装置执行ATA命令,例如在刷写操作中的后写入数据的写入和恢复操作中的数据读取。CPU子系统112也可直接对ATA直接存取寄存器342作存取。

参照图4,其示出根据本发明的图1的RAID控制器100执行刷写操作的流程图。该流程开始于方块402。

在于方块402中,CPU子系统112根据存储器控制器102所需用于执行自动刷写操作的信息而编程图3的存储器控制器102CSRs 202。优选地,CPU子系统112软件程序执行此功能并视其为启动中的初始化序列。然而,对于如在此一并提及的动态写缓存大小的实施例而言,在RAID控制器100的正常操作下,CPU 112仍可在启动时间后以更新的信息编程存储器控制器102CSRs 202以响应写缓存的大小调整。尤其,CPU子系统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执行刷写操作时所需的信息。在一个实施例中,CPU子系统112编程存储器控制器102以刷写所有高速缓存的数据,即后写入数据和读缓存数据;然而,在另一实施例中,CPU子系统112编程存储器控制器102以仅包括后写入数据,藉此而减少执行刷写操作所需的电能和时间。另外,CPU子系统112可初始化刷写结果扇区为预设值,以使CPU子系统112可确定存储器控制器102是否在刷写操作后,成功地将刷写操作结果的信息写入刷写结果扇区。例如,在一个实施例中,CPU子系统112以用在该扇区中的每一字节的0xFF值进而写入或擦除该刷写结果扇区。当主电源将电源供应给RAID控制器100时,CPU子系统112将随后开始正常运行。正常操作包括执行后写入操作,其可使后写入数据存入易失性高速缓冲存储器104中。流程进行到方块404。

在方块404中,主电源无法将电源供应给RAID控制器100。因此,电容器136开始将电源供应给RAID控制器100的预设部分,即高速缓冲存储器104、非易失性存储器108、存储器控制器102、电源管理器132、和电源调节器134以及其他相关电路。尤其,电容器136并不将电源提供给CPU子系统112、磁盘接口116、或者主机接口118。另外,PCI-X接口216和218以及FIFOs 206由于这些接口仅用作与磁盘接口116和主机接口118的接口,因此电容器136可不将电源供应给这些接口。因此优选地,CPU子系统112、磁盘接口116、主机接口118以及存储器控制器102的非必要部分,都将不在刷写操作时消耗电源,藉此RAID控制器100可使电容器136存储较少的电能,其隐含这些电容器136是较不昂贵和/或仅需较小空间的电容器。另外,由于CPU子系统112、磁盘接口116以及主机接口118并不消耗存于电容器136中的电能,因此电容器136在刷写操作完成后仍可保留较多的电能,也因此增加了电容器136可在刷写完成时仍持续供应电源给高速缓冲存储器104的可能性,故可完整保留后写入数据以备当主电源恢复时恢复操作的需求,如下详述。流程进行到方块406。

在方块406中,电源管理器132检测主电源的中断并且经由pwr_state信号指示存储器控制器102可开始将数据从高速缓冲存储器104刷写到非易失性存储器108的刷写操作。流程进行到方块408。

在方块408中,若在NVB_CONFIG寄存器334中的AUTO_FLUSH_EN位被设定时,则存储器控制器102将基于先前已编程到在方块402处的CSRs 202中的信息执行刷写操作。尤其,存储器控制器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所指定的两个区域中的数据复制到非易失性存储器108中分别由NVB_ATA_START_ADDR1寄存器308和NVB_ATA_START_ADDR2寄存器316所指定的两个位置。在一个实施例中,第一区域包括后写入数据中含有实际用户数据部分的数据,而第二区域包括后写入数据中是元数据部分的数据。在另一实施例中,该第一区域包括后写入用户数据和与其相关的元数据,而该第二区域包括读缓存(read-cached)用户数据和与其相关的元数据。然而,这两个区域的使用不仅限于这些实施例。而且,这些实施例也可不仅限于两个数据区域,CSRs 202可包括指定较多或较少于两个数据区域的寄存器。流程进行到方块412。

在方块412中,若在NVB_CONFIG寄存器334中的WR_FLUSHR_ESULTS_EN位被设定时,则存储器控制器102可在刷写操作后,将如表19所指定的刷写结果信息写入非易失性存储器108的刷写结果扇区,该数据可为刷写操作是否已成功、已中止或因错误而终止。若CPU子系统112中止刷写(或恢复)操作,或若存储器控制器102在该刷写(或恢复)操作中检测到ECC或ATA错误,则存储器控制器102将终止该刷写(或恢复)操作于下一扇区边界处。若在NVB_CONFIG寄存器334中的WR_FLUSH_RESULTS_EN位被设定时,存储器控制器102将存写刷写结果扇区并且放置布尔(Boolean)值10到flush_status信号224上以及到NVB_FLUSH_CTRL寄存器302的FLUSH_STATUS位中。当存储器控制器102将刷写操作结果写入刷写结果扇区自身中时,若CPU子系统112指示中止或存储器控制器102检测到错误,则该刷写操作结果将不一定可成功地被写入至刷写结果扇区中,并且若这些结果可被写入,该刷写结果的信息仍是不可靠的。流程进行到方块414。

在方块414中,电源管理器132命令存储器控制器102初始化刷写操作之后时,电源管理器132经由flush_status信号224监控该刷写操作的过程。当该刷写操作完成时,电源管理器132经由pwr_state信号222命令存储器控制器102将高速缓冲存储器104设于自我刷新模式中,以减少可供高速缓冲存储器104消耗的存于电容器136中的电能。流程进行到方块416。

在方块416中,存储器控制器102将高速缓冲存储器104设于自我刷新模式中以响应于方块414中的电源管理器132所执行的命令。流程进行到方块418。

在方块418中,电源管理器132使电容器136仅将电源供应给高速缓冲存储器104。即,电源管理器132使电容器136不再将电源供应给非易失性存储器108和存储器控制器102,以减少等待直到主电源恢复前所消耗的存于电容器136中的电源。流程终止在方块418。

参照图5,其示出根据本发明的图1的RAID控制器100在主电源从主电源故障恢复后的操作流程图。流程开始在方块502。

在方块502中,主电源恢复将电源供应给RAID控制器100。因此,CPU子系统112的程序将启动,并且开始其初始化序列。流程进行到判定方块504。

在判定方块504中,CPU子系统112确定高速缓冲存储器104的内容是否仍为有效的。在一个实施例中,CPU子系统112通过检测在电源管理器132中的数据完好指示器以确定高速缓冲存储器104的内容,其可由该存储器控制器102写入。电源管理器132配置为可使其在电源提升时,该数据完好指示器可重置为预设值,诸如零的布尔值。此外,电源管理器132的电源关闭阈值(power-off threshold)至少与高速缓冲存储器104开始丢失其数据的电源阈值同高。当主电源中断时,存储器控制器102将不同于该加电重置值的值写入该数据完好指示器中。因此,若电容器136无法将电源供应给高速缓冲存储器104(并且因此也无法将电源供应给数据完好指示器),则当主电源恢复时,CPU子系统112将会从该数据完好指示器读取该电源升高重置值,而非写入存储器控制器102的值。因此,若刷写操作成功时,CPU子系统112将确定高速缓冲存储器104必需从非易失性存储器108被恢复。然而,若CPU子系统从该数据完好指示器读取由存储器控制器102写入的值,则CPU子系统112将确定其可先行恢复高速缓冲存储器104,因此可使用户数据较早提供主电脑使用。若高速缓冲存储器104的内容有效时,流程将进行到判定方块516;否则,则流程将进行到判定方块506。

在判定方块506中,CPU子系统112通过检查NVB_FLUSH_CTRL寄存器302的FLUSH_STATUS位以确定根据图4所执行的刷写操作是否成功完成。在一个实施例中,CPU子系统112进一步通过检查在刷写结果扇区中的完成状态(Completion Status)以确定该刷写操作是否成功完成。在一个实施例中,CPU子系统112还通过比较在刷写结果扇区中的完成签名(Completion Signature)与在编码闪存106中的完成签名,以确定该刷写操作是否成功完成。在一个实施例中,CPU子系统112还通过比较在刷写结果扇区中的CRC与从非易失性存储器108中读取数据而计算出的CRC,以确定该刷写操作是否成功完成。若刷写操作成功完成,流程将进行到方块512;否则,流程将进行到方块508。

在方块508中,因后写入数据已丢失,RAID控制器100可故障转移到其分担者(partner),即在该系统中的冗余RAID控制器。在一个实施例中,在正常操作下当主机发出写I/O请求到RAID控制器100时,后写入数据也将被写入到所述的分担RAID控制器100中。因此,若这些RAID控制器100的一个故障时,尤其若刷写操作在RAID控制器100上故障时,将可大为提高刷写操作在其分担RAID控制器上成功执行的可能性。因此,该分担RAID控制器100可执行后写入数据从非易失性存储器108到高速缓冲存储器104的恢复,并且因此使该后写入数据可刷写到磁盘中。流程结束于方块508。

在方块512中,CPU子系统112命令存储器控制器112执行恢复操作,以在如图4所示的回到高速缓冲存储器104的刷写操作期间,将从高速缓冲存储器104所刷写的数据恢复到非易失性存储器108。在命令存储器控制器102执行恢复操作之前,CPU子系统112将合适的值编程到需执行恢复操作的存储器控制器102中各个CSRs202。在一个实施例中,CPU子系统112执行恢复操作,而非命令存储器控制器102执行该恢复操作,并且仅通过从易失性存储器108读取数据和写入数据到高速缓冲存储器104以执行该操作。因为恢复操作在当主电源供应电源时执行,所以存储器控制器102并非绝对必要以较低的电源消耗级别进而执行该恢复操作。然而,该实施例的缺点在于,CPU子系统112将需较存储器控制器102的时间为长以完成恢复操作。流程进行到方块514。

在方块514中,CPU子系统112从高速缓冲存储器104将后写入数据刷写到磁盘。流程结束于方块514。

在判定方块516中,CPU子系统112通过读取NVB_FLUSH_CTRL寄存器302的FLUSH_STATUS位以确定刷写操作是否处于进行中。若刷写操作在进行中,流程将进行到判定方块518;否则,流程进行到方块514。

在判定方块518中,CPU子系统112检查电容器136的电压等级以确定该电压级是否高于最低阈值。在一个实施例中,该最低电压阈值编程入CPU子系统112程序中。在另一实施例中,最低电压阈值是用户可编程的(user-programmable),其可经由用户配置程序而编程。若电容器136的电压等级高于该最低阈值,流程将返回判定方块516以等待刷写操作完成或者电容器136的电压达到该最低阈值;否则,流程进行到方块522。

在方块522中,CPU子系统112通过将布尔值0写入在NVB_FLUSH_CTRL寄存器302中的FLUSH_START位中以中止刷写操作。流程进行到方块514。

若高速缓冲存储器104仍为有效并且刷写操作仍处于进行中直至刷写操作完成或者电容器136电压等级达到最低阈值时,等待启动RAID控制器100并且恢复正常操作的过程将可解决在没有使用在判定方块518中的额外测试的情况下可能发生的问题,如下所举实例。假设电源管理器132感测到主电源中断并且命令存储器控制器102执行刷写操作。电容器136所存储的大部分电能被该刷写操作所消耗。在该刷写操作完成前,主电源恢复了;因此,CPU子系统112中止该刷写操作。CPU子系统112启动并且使另一主电源中断时允许另一刷写操作。紧接在此之后,并且重要地,当电容器136处于低于其完全充电的状态时,电源管理器132将因此感测到另一主电源中断,并且命令存储器控制器102执行另一刷写操作。该第二次刷写操作将再次消耗相当大小的存储于电容器136中的电能,并且其以低于完全充电的状态而开始操作。若该序列持续下去,最后这些电容器136将不具有足够的电能以成功完成刷写操作,而造成用户数据丢失的可能。以上所述的情况可能因主电源的周期性的掉电(brown-out)或有噪声的电源供应而造成电源管理器132感测到某程度的周期性的主电源中断,而这些周期在刷写操作的时间上。然而优选的是,在判定方块518中的额外测试可减少此问题的发生。在可选实施例中,由于电容器组136并不完全充电,因此避免不良的情况,写缓存156置于直写模式中。在另一实施例,在方块518中,CPU112确定刷写操作是否完成;若是,则流程进行到方块514;若否,则流程进行到方块516。

虽然在此所述这些实施例中的存储器控制器用于执行从易失性存储器将后写入数据刷写到非易失性存储器中,这些实施例也涵盖CPU执行从易失性存储器到非易失性存储器的刷写操作,如图6和7所示。如图6和7所示的实施例,其用CPU子系统112以执行刷写操作为可成立的实施例若以下一个或多个情况是肯定时电容器136的电能密度高至足够存储RAID控制器100所需的电能,其包括CPU子系统,以执行刷写操作;RAID控制器100上用于容纳电容器136的可用空间大至容纳足够的电容器136以存储RAID控制器100所需的电能,其包括CPU子系统,以执行刷写操作;CPU子系统112消耗够小的电源而使电容器136可存储足够的电源提供该RAID100,包括CPU子系统,以执行刷写操作。虽然此实施例可能消耗较多于如图1至5所示这些实施例所消耗的电能,但若电容器136可提供所需的电能,则RAID控制器100将可享有利用电容器的技术所带来的优于如前述的电池技术的优点,例如较低的成本、较高的可靠性、较少的维护以及较短的充电时间等优点。

参照图6,其示出根据本发明替代实施例的RAID控制器600的方块图。如图6所示的RAID控制器600类似于如图1所示的RAID控制器100;然而,就刷写操作而言,电源管理器132耦合以与CPU子系统112通信,而不是与存储器控制器102通信,如下所述并且参照图7。

参照图7,其示出根据本发明替代实施例的图6的RAID控制器600的执行刷写操作的操作流程图。流程开始于方块704。

在方块704中,主电源无法将电源供应给RAID控制器600。为响应此情况,电容器136开始将电源供应给RAID控制器600的预设部分,即高速缓冲存储器104、非易失性存储器108、存储器控制器102、电源管理器132、电源调节器134、CPU子系统及其相关的电路。尤其,电容器136并不将电源供应给磁盘接口116或主机接口118。另外,PCI-X接口216和218以及FIFOs 206由于这些接口仅用作与磁盘接口116和主机接口118的接口,因此电容器136可不将电源供应给这些接口。因此有利地,磁盘接口116、主机接口118以及存储器控制器102的非必要部分,都将不在刷写操作时消耗电源,藉此RAID控制器100可使电容器136可存储较少的电能,故也暗含这些电容器136是较不昂贵和/或仅需较小空间的电容器。另外,由于磁盘接口116和主机接口118并不消耗存于电容器136中的电能,因此电容器136在刷写操作完成后仍可保留较多的电能,也因此增加了电容器136可在刷写完成时仍持续将电源供应给高速缓冲存储器104的可能性,因此可完整保留后写入数据以备当主电源恢复时减轻恢复操作的需求,如下详述。流程进行到方块706。

在方块706中,电源管理器132检测主电源的中断并且告知CPU子系统112有将数据从高速缓冲存储器104刷写到非易失性存储器108的刷写操作的必要。流程进行到方块708。

在方块708中,CPU子系统112通过将数据从高速缓冲存储器104复制到非易失性存储器108以执行刷写操作。流程进行到方块712。

在方块712中,CPU子系统112在刷写操作完成时,不论刷写操作是否成功、中止或因错误而终止,将如表19所指定的刷写结果信息写入非易失性存储器108的刷写结果扇区中。流程进行到方块716。

在方块716中,CPU子系统112将高速缓冲存储器104设于自我刷新的模式中。流程进行到方块718。

在方块718中,CPU子系统112命令电源管理器132使电容器136仅将电源供应给高速缓冲存储器104。即,电源管理器132使电容器136不再将电源供应给CPU子系统112、非易失性存储器108以及存储器控制器102,以便以减少等待直到主电源恢复前所消耗的存于电容器136中的电源。流程终止于方块718。

参照图8示出表800或数据库800,其是根据本发明的图1的电容器组136在不同的温度和电压组合下的存储寿命。如图8所示的数值是参考用的假设值,而不是特定电容器产品的真实数值,其真实数值可通过该特定电容器的制造商而获得。另外,所示的温度范围也是假设的范围仅提供作为参考用。

如前所述,电容器组136的目的在于存储电能,因此当主电源中断时,可以提供在将写缓存数据从写缓存156备份或刷写到非易失性存储器108时所需的电源。当电容器组136不再具有存储足够电能的容量以将写缓存156备份到非易失性存储器108时,该电容器组136已达到其寿命的末端,即其寿命已过期。当电容器组136用于RAID控制器100的操作中时,该电容器组136的电容量随时间而下降。多种不同的因素都有可能影响电容器组136电容量的下降,因素包括温度、操作电压、过强电流、以及电容器组136的极性改变。在一个实施例中,电容器组136的电流也受到监测,并且若电流超过预设的大小时,电容器组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布置成串联的四个电容器,其中每一电容器是相同的电容器类型。因此,该电容器组136所存储的电能总和是在该电容器组136中的这四个电容器的每一电容器所存储的电能的总和,或者大致同等于在该电容器组中单一电容器的电能的四倍。此外,该电容器组136的操作电压是在该电容器组136中的四个电容器的操作电压的总和,或者大致同等于在该电容器组中单一电容器的操作电压的四倍。RAID控制器100包括有源均衡电路(activebalance equalizer circuit),其用四运算放大器电路(quad operationalamplifier circuit)以将该电容器组136中每一电容器的电压平衡到大约为该电容器组136电压的四分之一。在一个实施例中,在该电容器组136中的每一单一电容器所受的环境温度和操作电压假设是大致相同的;因此,每一这些电容器的寿命是大致相同的。在另一实施例中,该电容器组136中的每一这些电容器的寿命是基于温度和分别的电压读数而计算出,并且以所计算得到的最低电容器的寿命数值作为该电容器组136整体的寿命限制。

在一个实施例中,电容器组136的寿命末端是指当该电容器组136中的这些电容器已受到相较于原电容量值的30%电容量下降。在一个实施例中,当达到30%电容量下降时,该电容器组136将无法存储足够电能以在正常电压下执行备份操作。在另一实施例中,30%电容量下降的寿命末端的值可提供某程度的误差容限(errormargin);即,在电容器组136中的电容器可实际上具有多于30%下降的电容量,以便不具有存储足够电能以在正常操作电压下执行备份的能力。30%电容量下降的值在此用于说明本发明。然而,应当理解的是,本发明并不局限于特定的电容量下降值;反之,本发明可在其它不同的电容量下降值上实施,取决于所需执行备份的电能和所用的特定电容器的特征。图8的表800所指定的寿命数值,指示电容器组136的单一电容器在到达其寿命末端的从原电容量值的电容量下降百分率前,可在指定的温度和电压下操作的小时数量。因此,每一存于该表800中的寿命可理解为若该电容器组136在所索引的寿命期间的温度和电压下操作时,该电容器组将可具有存储至少预设量的电能的情况下的寿命。在一个实施例中,该预设量的电能是计算的所需电能的量以提供足够电能执行将写缓存156的完整大小备份到非易失性存储器108。

在一个实施例中,图8的表800以两维阵列存储于编码闪存106中,并且当RAID控制器100开启时复制CPU子系统的程序RAM,使得该CPU112可使用采样的温度和电压值进而查询在表800中的寿命。在图8的实施例中,RAID控制器100支持在两种不同电压(8.2V和7.2V)下操作的电容器组136,如表800所示。在表800中,该8.2V操作电压占据了所述阵列的指数(index)0,而该7.2V操作电压则占有该阵列的指数1。有利地,在此所述为一种用于根据需要动态降低或调节控制(throttling)电容器组136的操作电压到较低电压等级以便增加该电容器组136寿命的方法。虽然图8的实施例仅说明两种可能的操作电压,但是本发明并不局限于两种操作电压;反之,所有实施例都可具有较大的操作电压。而且,也可包括其它未述的操作电压值的实施例。在一个示意性实例中,四个电容器136串联布置,并且每一电容器136在大约2.05V或1.8V之下操作,这取决于CPU112所控制的该电容器组136的操作电压。该阵列800包括相对于所述两种电压值的两列。该阵列800的行则标示为温度值。每一行相对于不同整数摄氏温度值。图8的表800的实施例包括从10摄氏度到40摄氏度的环境温度值。例如,如图8所示,在40摄氏度和8.2V(或每一电容器2.05V)时的寿命是800小时,以及在7.2V(或每一电容器1.8V)时的寿命则是820小时。在一个实施例中,假设在固定的操作电压值下,在电容器组136中的电容器的特征是这些寿命大约是温度的对数函数(logarithmic function)。CPU 112使用采样的温度和电压值以标示该表800,以获得所指定的寿命进而用于计算累积标准化运行时间152及其相关数值,下面结合相关附图进行描述。

如前所述,在一个实施例中,保证寿命是5年。然而,为与如表800所提供的假设值更为相符,在此假设保证寿命是1000小时。如表800所示,若电容器组136持续在8.2V和25摄氏度下操作,则该电容器组的保证寿命是1000小时,即该电容器组将在1000小时后到达其寿命末端的电容量下降百分率(如30%)。相比之下,若该电容器组136持续在7.2V和28摄氏度下操作,则该电容器组的保证寿命是1000小时,即该电容器组将在1000小时后到达其寿命末端的电容量下降百分率。因此,电容器组136在8.2V下操作的“标准(normal)”温度是25摄氏度,而在7.2V下操作的“标准”温度是28摄氏度。即,对特定的操作电压而言,所述的标准温度是电容器组136的寿命到达保证寿命时的温度,或者超过设有容限的保证寿命。然而,鉴于表800的数值可从实验环境中将电容器组的温度和电压维持于定值而取得,当电容器组136在电脑系统中的RAID控制器100中操作时,所述温度将会与标准温度有所差别。相似地,有利地电容器组136的操作电压可在必要时有目的地动态调整,以便使该电容器组136的寿命增加以提供其保证寿命,如下详述。因此有利地,本发明说明了RAID控制器100如何使用相对于在特定操作电压等级的标准温度中标准化从表800所得的寿命值,下面结合图9进行描述。

在一个实施例中,电容器组136包括串联的四个50法拉(Farad)电容器,其当完全充电并且在其满电容量时存储约为356焦耳的可用电能,假设每一电容器具有2.05V的操作电压和0.8V的截止(cut-off)电压,其指定用于可靠FET门阈值的最低工作电压和低压差线性稳压器(low drop out regulation);相对地,在30%电容量下降时,电容器组136仅存储有250焦耳。假设每一电容器是1.8V操作电压,该电容器组136可存储260焦耳的可用电能;相对地,在30%电容量下降时,该电容器组仅存有182焦耳。在一个实施例中,高速缓冲存储器104、非易失性存储器108、存储器控制器102、电源管理器132、DDR-SDRAM总线接口终端电路、时钟电路及其他多种需要在刷写操作时消耗电源的电路的电源消耗约为4瓦(Watts)。非易失性存储器108可以以约为10MB/秒的持续速率被写入。在一个实施例中,高速缓冲存储器104的大小是1GB,其包括约512MB的写缓存156的整体大小,以及该非易失性存储器108的大小为512MB。因此,刷写操作约需50秒完成并且消耗约200焦耳的电能。因而可以得知,当电容器组136在较低的7.2V值操作时,虽然电容器组136尚未到达其30%电容量下降及其寿命末端,但该电容器组136可能已无法存储足够电能以备份完整的写缓存156。有利地,在此所述一种用于动态式地将写缓存156降低到可使电容器组136提供足够电能以执行备份的大小的方法。

虽然在此所述的实施例中的保证寿命乃是基于可执行由写缓存156备份到非易失性存储器108时所需的预设量的电能,然而在此所述的电容器组136的寿命监测和动态电压调节控制方法并不仅限于这一应用。这些实施例包括保证寿命基于可执行其他功能时所需的预设量电能的应用。例如,实施例可以是RAID控制器100并不包括非易失性存储器108以用于备份写缓存156,以及预设量电能是用于将电源供应给易失性存储器104预设量时间(如3天)的所需电能量,故在主电源中断时可保持在写缓存156中数据的完整性直到主电源恢复为止。

参照图9,其示出根据本发明的图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分别经由温度传感器142和电压传感器144周期性地在图1的电容器组136的大时间间隔上采样电容器组的温度和电压并且平均所采样的温度和电压。在一个实施例中,采样的周期是15秒以及平均间隔是一小时。平均化在较大的间隔上所采样的值并且在每一该较大间隔上将累积标准化运行时间152和累积日历运行时间154写入非易失性存储器108,而非在每一次采样这些值时,所有的优点在于其可减少CPU 112带宽(bandwidth)的消耗并且可避免超过非易失性存储器108的写入周期的最大值。流程进行到方块906。

在方块906中,CPU 112通过索引图8的表800以查询在方块904的平均的温度和电压处的寿命以获得在该平均的温度和电压的寿命。在一个实施例中,平均温度和电压值根据需要上舍入(round-up)到下一最高值。例如,若平均温度是30.8度时,则该值可上舍入到31度以用作图8的表800中的索引。相似地,若平均采样的电压为7.8V,则该值上舍入到8.2V而入该表800的电压索引为0。值得注意的是,在另一实施例中,若寿命值易受表达为温度和电压的函数的影响时,则该寿命值可根据该公式计算出而无需从表800查询出。然而此实施例有潜在的缺点,其可能需要较宽于利用表查询方法的CPU 112运算带宽,尤其在执行浮点数运算时。然而,此实施例也可有其潜在优点,其可以允许间隔较小于该表查询方法的温度和电压值。流程进行到方块908。

在方块908中,CPU 112通过将时间间隔乘以保证寿命对在方块906所得的寿命值的比值,以标准化该时间间隔。例如,假设该时间间隔是一小时,保证寿命是1000小时,以及在方块906所得的寿命是2000小时(因为所测的温度和/或电压低于正常温度和电压),则标准化的时间间隔是1小时*(1000/2000)=0.5小时;因此,该标准化时间间隔小于该时间间隔的日历时间,藉此说明了在一小时的日历操作时间间隔中,电容器组136的寿命有效地减少了一小时。相对地,假设于方块906所得的寿命仅为500小时(因为所测的温度和/或电压大于正常温度和电压),则该标准化时间间隔将为1小时*(1000/500)=2小时;因此,该标准化时间间隔大于该时间间隔的日历时间,藉此说明了在一小时的日历操作时间间隔中,电容器组136的寿命有效地增加了一小时。流程进行到912。

在方块912中,CPU 112将在方块908计算的标准化时间间隔加入到累积标准化运行时间152值而产生更新的累积标准化运行时间154,以反映电容器组136在方块904所得的平均温度和电压对在方块904所得的时间间隔中操作的影响。另外,CPU 112还将平均的时间间隔(即非标准化的时间间隔,如一小时)加入到累积日历运行时间154,以产生更新的累积日历运行时间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所算的标准化保证寿命的使用百分率与寿命末端的电容量下降百分率的乘积数值。例如,若寿命末端电容量下降百分率为30%,而在方块916所算的标准化保证寿命的使用百分率为20%时,则电容器组136的电容量下降百分率为6%。流程进行到方块922。

在方块922中,CPU 112将在方块918所计算的电容器组136的电容量下降百分率报告给用户。另外,用户也可得知该电容量下降百分率是否处于优良、警告或错误的范围内。在一个实施例中,当该电容量下降百分率在寿命末端电容量下降百分率的1%之内时,则用户将被警告已接近该寿命末端。在一个实施例中,用户可输入将被告知的寿命末端已接近的范围。在一个实施例中,用户也可得知寿命末端电容量下降百分率以用于比较电容量下降百分率。在一个实施例中,CPU 108也报告用户所剩的标准化寿命小时数,其由保证寿命减掉累积标准化运行时间152计算而得。在一个实施例中,将电容器组136的温度和电压,以及在电容器组136中每一电容器的电压报告给用户。在一个实施例中,该信息经由串行接口提供给用户。在一个实施例中,该信息经由网页浏览器接口提供给用户,如经由TCP/IP连接到Ethernet接口。流程返回方块904以监测在另一时间间隔的电容器组136的寿命。

如图9所示,RAID控制器100有利地可计算累积标准化运行时间152,其可有效地是电容器组136的相对于其保证寿命的年龄测量或寿命。相对于累积日历运行时间154,其是电容器组136操作的日历时间间隔的总和,累积标准化运行时间152是相应于构成累积日历运行时间154的日历时间间隔的标准化运行时间的总和。该标准化运行时间通过标准化由表800所示的寿命读数而得,而该表所示的是在该时间间隔上在相对于平均采样操作电压下的正常温度中的平均采样温度所得值。因此,该累积标准化运行时间152提供较电容器组136的日历年龄更有意义并且较为正确的该电容器组136的有效年龄测量值,并且这可在不受因放电/充电方法测量电容器组136的电容量可能产生的不利影响下完成。

值得注意的是在如图9所示的实施例中,累积标准化运行时间152和累积日历运行时间154仅在RAID控制器100的操作中被更新,并且尤指在CPU 112的操作中时。尤其,当RAID控制器100完全关机并且当CPU 112在将写缓存156备份到非易失性存储器108操作中是关机时,这些值未被更新,所述操作符合如图1所示的实施例(虽然不相符如图5所示的实施例)。然而,应注意的是当RAID控制器100是关机时,在电容器组136上的电荷一般将快速地流失,因此而减少电压;并且在低电压时,电容器组136的寿命将较慢老化。因而,关机时间相对于诸如5年的保证寿命的实施例而言并不是非常重要;然而,对具有较短的保证寿命的实施例而言,该关机时间则需要考虑。此与采用电池情况相反,电池在未使用状态时所存的电能将严重下降。此外,执行备份所需的时间以分钟计算。因此,即使在高温度下标准化,备份时间相对于诸如5年的保证寿命的实施例而言并不是非常重要;然而,对具有较短的保证寿命的实施例而言,该备份时间则需要考虑。

参照图10,其示出根据本发明的图1的RAID控制器100的操作流程图。尤其,图10显示RAID控制器100如何调节电容器组136的操作电压,以在必要时延伸电容器组136的累积标准化运行时间152。图10也显示RAID控制器100在必要时如何动态减少写缓存156的大小。流程开始于方块1002。

在方块1002中,CPU 112检测到电容器组136的温度已超过第一预设阈值。在一个实施例中,该第一预设阈值是51摄氏度。虽然图10公开了实施例,当检测到电容器组136温度已超过阈值时,电容器组136的操作电压将被调节以及写缓存156的大小将被调整,在此所述的该电压的调节以及写缓存156大小的调整方法并不局限于此实施例;而且,其他实施例可以是RAID控制器100基于其它原因而调节操作电压并且调整写缓存156的大小。例如,在一个实施例中,在图9的每一时间间隔的末端,当CPU 112计算累积标准化运行时间152和累积日历运行时间154时,CPU 112进行到方块1004以确定电压调节和/或写缓存156的大小调整是否为必要的。例如,在另一实施例中,虽然电容器组136的温度可能未超过该第一阈值,但是RAID控制器100仍可确定该电容器组136以到达其寿命末端并且提供用户可以选择继续操作或是更换该RAID控制器100,虽然可能是在较小的写缓存156大小中。流程进行到方块1004。

在方块1004中,CPU 112基于累积标准化运行时间152合累积日历运行时间154计算电容器组136的预期寿命。尤其,该预期寿命计算是保证寿命乘以累积日历运行时间154相对于累积标准化运行时间152的比值。例如,若保证寿命是1000小时,累积日历运行时间154是300小时,以及累积标准化运行时间152是200小时,则该预测寿命是1000小时*(300/200)=1500小时。流程进行到判定方块1006。

在判定方块1006中,CPU 112将在方块1004所算出的电容器组136的预测寿命与保证寿命作比较以确定该预测寿命是否少于该保证寿命。若是,流程则进行到判定方块1008;若否,流程则进行到判定方块1024。

在判定方块1008中,CPU 112确定电容器组136是否目前已在最低的电压等级下操作。在一个实例中,当仅提供两种电压等级(如8.2V和7.2V)时,则最低的电压级是7.2V。然而,在其他实施例中可提供多于两种电压等级。提供较多电压等级的优点在于较小间隔的电压等级可允许写缓存156的较小间隔调整;然而此缺点在于其可能需要较为复杂的电压调整电路和软件程序以用于电压调整和写缓存156的大小调整。若电容器组136目前已在最低的电压级操作,则流程进行到方块1022;若否,流程进行到方块1012。

在方块1012中,CPU 112已确定出电容器组136操作电压必须减少,故CPU 112可基于其累积标准化运行时间152而计算通过电容器组136在下一较低操作电压中存储电能而进行写缓存156备份的大小。例如,假设写缓存156的完整大小是512MB,以及8.2V(每一电容器2.05V)和7.2V(每一电容器1.8V)的两种电压等级。虽然在电容器组136中的个别电容器数量可为不同,对单一电容器而言的电容量下降百分率计算相同于电容器组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;因此,无需调整写缓存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上执行的软件程序维持有写缓存156大小值的表,该表包括有在零值和寿命末端电容量下降百分率值之间在每一可能操作电压值上的每一电容量下降百分率值。该表由电容量下降百分率作为其索引,如图9的方块918中所计算的值。在一个实施例中,电容量下降百分率在方块918中计算后,还被写入非易失性存储器108。流程进行到判定方块1014。

在判定方块1014中,CPU 112确定写缓存156在方块1012中所计算出的大小是否小于目前写缓存156的大小。若是,流程进行到方块1016;若否,流程进行到方块1018。

在方块1016中,CPU 112减少写缓存156的大小到如方块1012所计算出的大小。在一个实施例中,CPU 112通过暂停主机I/O请求的处理、刷写写缓存156、减少写缓存到所需大小(以及可选择性地增加读取高速缓冲存储器大小),以及恢复主机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可将该操作电压设定为该新的操作电压值。在一个实施例中,电源管理器132包括控制寄存器,CPU 112可写入该控制寄存器以调整电容器组136的操作电压。流程进行到方块1026。

在方块1022中,虽然需减少电容器组136的电压以增加该电容器组136的寿命,CPU 112确定该电容器组136已经在最低电压等级中操作,故将无法减少该电压。因此,CPU 112发出用户警告消息以警告此情况。流程进行到判定方块1026。

在判定方块1024中,CPU 112确定电容器组136的温度是否已超过第二预设阈值。在一个实施例中,该第二预设阈值是55摄氏度。若温度已超过该第二预设阈值,则流程进行到判定方块1008以减少电容器组136的操作电压以及如有需要则减少写缓存156的大小-尽管在方块1004所计算出的该电容器组136的预测寿命至少与保证寿命等长。若温度并未超过该第二预设阈值,则流程终止。

在判定方块1026中,CPU 112确定电容器组136的温度是否已超过第三预设阈值。在一个实施例中,该第三预设阈值是59摄氏度。若温度超过该第三预设阈值,则流程进行到方块1028;若否,则流程终止。

在方块1028中,CPU 112停止电容器组136的充电以避免过早降低该电容器组136的寿命超过其保证寿命。造成温度急剧上升的可能原因是电容器组136的过度充电以及系统中冷却风扇的故障。另外,若电容器组136并非完全充电并且将可能无法存有足够电源以将写缓存156备份到非易失性存储器108中时,CPU 112将该写缓存设为直写模式。流程终止于方块1028。在一个实施例中,CPU 112延迟预设时间后并且尝试恢复电容器组136的充电。

如图10所示,RAID控制器100有利地减少电容器组136的操作电压以增加其寿命,而这是基于若累积标准化运行时间152,该电容器组136的保证寿命将无法被达到时。此外,若RAID控制器100确定电容器组136的电容量已下降至某一程度大小使该电容器组136无法在新的操作电压中存储足够的电能以支持写缓存156的备份时,则有利地,该RAID控制器100将可减少该写缓存156的大小到使该电容器组136可支持该备份的大小。

参照图11,其示出根据本发明的图1的RAID控制器100的操作流程图。尤其,该流程公开了RAID控制器100在适当之时,将增加操作电压和写缓存156的大小。流程开始于方块1102。

在方块1102中,CPU 112检测到RAID控制器100目前是以小于写缓存156的正常或完整大小的写缓存156大小进行操作,并且检测到因该写缓存156的大小已减小的缘故,时间已消逝。在一个实施例中,所述消逝的时间约为2小时,以防止过于频繁地调整该写缓存156的大小造成无效率。流程进行到方块1104。

在方块1104中,CPU 112基于累积标准化运行时间152和累积日历运行时间154计算出电容器组136的预期寿命,类似于图10的方块1004所执行的步骤。流程进行到判定方块1106。

在判定方块1106,CPU 112将在方块1104中所计算出的电容器组136的预期寿命与保证寿命作比较以确定该预期寿命是否小于该保证寿命。若否,流程将终止;若是,则流程进行到判定方块1108。在一个实施例中,CPU 112通过预设百分率确定该预期寿命是否小于该保证寿命,而不是仅确定是否小于该保证寿命,以避免调整该写缓存156的大小所造成的抖动(thrashing)。

在判定方块1108中,CPU 112确定电容器组136目前是否已在最高电压等级中操作。若是,则流程终止;若否,则流程进行到方块1112。

在方块1112中,CPU 112将电容器组136的操作电压增加到下一电压等级。流程进行到方块1114。

在方块1114中,CPU 112计算出可备份的写缓存156的大小,而该大小是指电容器组136可通过方块1112基于该电容器组136的累积标准化运行时间152而设定的新的操作电压下可以存储的电能进行备份操作的大小。流程进行到方块1116。

在方块1116中,CPU 112将写缓存156的大小增加到在方块1114中所计算出的大小值。在一个实施例中,CPU 112通过暂停主机I/O请求的处理而增加写缓存156的大小到所需大小,以及恢复主机I/O的处理,以增加写缓存156的大小。与图10所示实施例中的方块1016一并参考,其中当减少写缓存156的大小时,读取高速缓冲存储器158的大小也随之增加,而在方块1116中,CPU 112在暂停主机I/O请求处理后还完成目前所有待完成的读取请求,并且在增加该写缓存的大小前减少该高速缓冲存储器的大小,流程结束于方块1116。

如图11所示,当RAID控制器100在基于累积标准化运行时间152而确定增加操作电压和增加写缓存156的大小的步骤是安全时,其将进行该步骤。

参照图12,其示出根据本发明的图1的RAID控制器100的操作流程图。尤其,图12的流程图说明在RAID控制器100开机过程中避免过早使电容器组136老化的RAID控制器100的操作。流程开始于方块1202。

在方块1202中,主电源供应给RAID控制器100。这暗含了电容器组136至少部分充电,若不是完全充电。流程进行到方块1204。

在方块1204中,电源管理器132开始给该电容器组136充电。流程进行到方块1206。

在方块1206中,CPU 112将写缓存156设于直写模式中,因为电容器组136并非完全充电,所以其可能无法提供足够电能以执行将写缓存156备份到非易失性存储器108的操作。流程进行到方块1208。

在方块1208中,CPU 112分别经由温度传感器142、电压传感器144以及电流传感器146周期性地采样图1的电容器组136的温度、电压以及电流。在一个实施例中,在所有时间中当电容器组136在充电时所采样的周期时间是3秒,这短于在非充电时的采样周期时间,进而可较快速地检测温度或电流的增加,尤其因温度或电流的增加可能提早老化电容器组136到超过其保证寿命。流程进行到判定方块1212。

在判定方块1212中,CPU 112确定电容器组136所使用的电流是否已超过预设阈值。在一个实施例中,该预设阈值是2安培(Amps)。若是,流程进行到方块1214;若否,流程则进行到判定方块1216。

在方块1214中,CPU 112使电容器组136停止充电,以防止提早老化该电容器组136超过其保证之寿命。流程结束于1214。在一个实施例中,CPU 112延迟一段时间后尝试恢复该电容器组136的充电并且返回方块1208。

在判定方块1216中,CPU 112确定温度是否已超过该第三预设阈值,类似于图10的判定方块1026所执行的步骤。若温度已超过该第三预设阈值,流程将进行到方块1214;若否,流程则进行到判定方块1218。

在判定方块1218中,CPU 112确定电容器组136的电压是否已到达其所指定(designated)的操作电压等级。在一个实施例中,目前的操作电压等级存于非易失性存储器108中,故当主电源中断后并且重新启动时,CPU 112可确定在主电源中断前的操作电压并将其恢复到该电压等级。若电容器组136的电压已到达其指定的电压等级时,流程将进行到方块1222;若否,则流程返回方块1208。

在方块1222中,因为电容器组136是完全充电的,所以CPU 112将写缓存156设于写回(write-back)模式。流程结束于方块1222。

参照图13,其示出根据本发明替代实施例的RAID控制器100的操作流程图。图13的流程图显示RAID控制器100如何调整控制该电容器组136的操作电压,以在必要时延长电容器组136的累积标准化运行时间152,该流程图也显示RAID控制器100如何在必要时动态地减少写缓存156的大小,类似于图10所示;然而,图13所示的实施例使用不同的比较以确定是否需调整控制该操作电压。因此,图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,其示出根据本发明替代实施例的RAID控制器100的操作流程图。图14的流程图显示RAID控制器100如何调整控制该电容器组136的操作电压,以在必要时延长电容器组136的累积标准化运行时间152,该流程图也显示RAID控制器100如何在必要时动态地减少写缓存156的大小,类似于图10所示;然而,图10所示的实施例使用不同的比较以确定是否需调整控制该操作电压。因此,图14的流程图类似于图10的流程图;然而,流程从方块1002进行到方块1406而不是到方块1004。

在判定方块1406中,CPU 112将在图9的方块912中所计算出的累积标准化运行时间152与在方块914中所计算的累积日历运行时间154作比较,以确定该累积标准化运行时间152是否大于该累积日历运行时间154。若是,流程进行到判定方块1008;若否,流程进行到判定方块1024,如图10所示。

参照图15,其示出根据本发明替代实施例的RAID控制器100的操作流程图。图15的流程图显示RAID控制器100如何调整控制该电容器组136的操作电压,以在必要时延长电容器组136的累积标准化运行时间152,该流程图也显示RAID控制器100如何在必要时动态地减少写缓存156的大小,类似于图10所示;然而,图15所示的实施例使用不同的比较以确定是否需减少写缓存156的大小。因此,图15的流程图类似于图10的流程图;但是,若电容器组136目前并不是在最低电压等级中操作,流程将从判定方块1008进行到方块1512而不是到方块1012。

在方块1512中,CPU 112计算出电容器组136基于其累积标准化运行时间152可在下一较低操作电压中所能存储的电能。尤其,CPU 112基于上述公式(1)以计算该电能。电容器组136中的每一电容器的电容量值是电容器的原电容量值与数值1减掉图9的方块918所计算出的电容量下降百分率的值的乘积。流程进行到判定方块1514。

在判定方块1514中,CPU 112确定在方块1512所计算出的电能是否足够提供将写缓存156备份到非易失性存储器108所需的电源。若是,流程进行到方块1516;若否,流程进行到方块1018。

在判定方块1516中,CPU 112计算可以下一较低操作电压支持的写缓存156大小,其类似于图10的方块1012执行的步骤。其后CPU 112降低写缓存156的大小到该计算后的大小,流程进行到方块1018。

虽然本发明及其元件、特征以及优点等已在此详细说明,但是本发明包括了其他实施例。例如,虽然在此所述的实施例与RAID控制器相关,然而所述的监测电容器组寿命的方法、动态调整电容器组操作电压以提供保证寿命、以及动态调整写缓存大小也可运用于其他任何形式的存储控制器上。另外,虽然在此所述的实施例中的电容器组主要用于供应电源以使存储控制器将易失性写缓存备份到非易失性存储器,在此所述的方法也可运用于其它应用电容器组为可充电式的电源的用途上。电容器组的另一应用例包括保持给易失性写缓存供电直到主电源恢复,例如在未包括可供易失性写缓存备份的非易失性存储器的存储控制器中。

虽然这些实施例说明电容器组的电容量整体性地受到监测,但是实施例也包括在电容器组中的每一单一电容器的寿命基于该每一单一电容器的个别操作电压和温度而监测,并且该电容器组的整体寿命基于这些电容器中最短的寿命而认定。

虽然物理原理可以主导在此所述的发明,例如不同的电能和电容量计算方法,但是应当理解的是这些数值并无不直接或完全计算出的必要以使本发明得以具体实施。换言之,实施例也可使用其它物理原理。例如,实施例可以是电能、电容量、电容量下降、电容量下降百分率、写缓存之大小及其它数值等基于一般电压和温度值预先计算出并且存于表中以可基于测量的电压和温度读数进而获得。其它实施例可以是这些数值完全依照公式而计算出,而不是从表查询出。其它实施例也可为使用直接计算和预先计算出的值的组合。

虽然在此所述的实施例说明CPU 112执行不同的计算,如累积标准化运行时间152的计算,其他实施例可以包括专用电路以执行这些计算,例如设于电源管理器132内的电路。最后,虽然实施例说明并且指定不同的阈值,但是应当理解的是本发明也可使用其它阈值。

最后,本发明虽然参照上述具体实施例得以描述,但是应当理解的是本申请实施方式的公开是阐明本发明原则的具体实施例,本发明应不局限于所公开的实施例。因此不同的修改、改进或其他实施例都是可能的实施例,并且所有的这些修改、改进或组合都可能,并且不脱离本发明的精神及其所申请的权利要求范围。
权利要求
1.一种用于对提供存储控制器中的电容器组的保证寿命的可能性进行增加的方法,所述方法包括
当所述电容器组在第一电压值操作时,检测所述电容器组的温度是否已超过预设阈值;
确定所述电容器组的预期寿命是否小于所述保证寿命;以及
若所述电容器组的所述预期寿命小于所述保证寿命,则将所述电容器组的操作电压降低到第二值,以便增加所述电容器组的所述预期寿命。
2.如权利要求1所述的方法,还包括
确定将所述电容器组的所述操作电压降低到所述第二值,是否会导致所述电容器组存储比用以将所述存储控制器的易失性写缓存备份到所述存储控制器的非易失性存储器所需的电能少的电能;以及
若将所述电容器组的所述操作电压降低到所述第二值会导致所述电容器组存储比用以将所述易失性写缓存备份到所述非易失性存储器所需的电能少的电能,则在所述将所述操作电压降低之前,先减小所述易失性写缓存的大小。
3.如权利要求2所述的方法,还包括
计算新大小,在所述新大小上,操作在所述第二操作电压值的所述电容器组具有容量以存储用以将所述易失性写缓存备份到所述非易失性存储器的足够电能;
其中,所述减小所述易失性写缓存的所述大小包括将所述易失性写缓存的所述大小减小到所述新大小。
4.如权利要求1所述的方法,还包括
确定所述第一操作电压值是否已经是所述电容器组的预设最小操作电压;以及
若所述第一操作电压值已经是所述预设最小操作电压,则警告用户,而不是所述将所述电容器组的所述操作电压降低到所述第二值。
5.如权利要求1所述的方法,还包括
基于在所述存储控制器的操作期间所述电容器组的温度和操作电压读数的历史记录,计算所述电容器组的所述预期寿命。
6.如权利要求5所述的方法,还包括
(1)初始化所述电容器组的累积标准化运行时间;
(2)在所述初始化之后,感测所述电容器组在所述电容器组操作的时间间隔内的所述温度和所述操作电压;
(3)若所述电容器组在寿命期间是在所述温度和所述操作电压下操作时,确定所述电容器组具有用于存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复所述步骤(2)至(5);
其中,所述计算所述预期寿命包括用所述保证寿命乘以所述累积日历运行时间与所述电容器组的所述累积标准化运行时间的比值。
7.如权利要求6所述的方法,还包括
(7)在所述步骤(2)之前,初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括当所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
8.如权利要求1所述的方法,还包括
基于在所述存储控制器的操作期间所述电容器组的温度读数的历史记录,计算所述电容器组的所述预期寿命。
9.如权利要求8所述的方法,还包括
(1)初始化所述电容器组的累积标准化运行时间;
(2)在所述初始化之后,感测所述电容器组在所述电容器组操作的时间间隔内的所述温度;
(3)若所述电容器组在寿命期间内在所述温度下操作时,确定所述电容器组具有用于存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复所述步骤(2)至(5);
其中,所述计算所述预期寿命包括用所述保证寿命乘以所述累积日历运行时间与所述电容器组的所述累积标准化运行时间的比值。
10.如权利要求9所述的方法,还包括
(7)在所述步骤(2)之前,初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括在所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
11.如权利要求1所述的方法,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组在供应给所述存储控制器的主电源中断期间,具有用以存储足够电能的电容量,以使所述存储控制器将所述存储控制器的易失性写缓存备份至所述存储控制器的非易失性存储器。
12.如权利要求1所述的方法,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组具有用以存储足够电能的电容量,以在预设时间内将电能提供给所述存储控制器的易失性写缓存,以在供应给所述存储控制器的主电源中断期间内,保持其中存储的写缓存数据。
13.如权利要求1所述的方法,还包括
在所述将所述电容器组的所述操作电压降低到所述第二值后,确定所述电容器组的所述预期寿命大于所述保证寿命;以及
增加所述电容器组的所述操作电压,以增加存储在所述电容器组内的电能的量。
14.如权利要求1所述的方法,还包括
若在所述将所述电容器组的所述操作电压降低至所述第二值后,所述电容器组的所述预期寿命仍小于所述保证寿命,则将所述电容器组的所述操作电压降低到第三值,以增加所述电容器组的所述预期寿命。
15.如权利要求1所述的方法,还包括
检测所述电容器组的所述温度是否已超过第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
若所述温度已超过所述第二预设阈值,则停止所述电容器组的充电。
16.如权利要求1所述的方法,还包括
检测所述电容器组所汲取的电流是否已超过预设电流阈值;
若所述电容器组的所述所汲取的电流已超过所述预设电流阈值,则停止所述电容器组的充电。
17.一种用于在存储控制器中提供电容器组的保证寿命的方法,所述方法包括
当操作在第一电压值时,检测所述电容器组的温度是否超过预设阈值;
确定所述电容器组的累积标准化运行时间是否大于所述电容器组的累积日历运行时间;以及
若所述累积标准化运行时间大于所述累积日历运行时间,则将所述电容器组的所述操作电压降低到第二值,以增加所述电容器组的预期寿命。
18.如权利要求17所述的方法,还包括
确定所述将所述电容器组的所述操作电压降低到所述第二值是会否导致所述电容器组存储比用以将所述存储控制器的易失性写缓存备份到所述存储控制器的非易失性存储器所需的电能少的电能;以及
若所述将所述电容器组的所述操作电压降低到所述第二值将导致所述电容器组存储比用以将所述易失性写缓存备份到所述非易失性存储器所需的电能少的电能,则在所述将所述操作电压降低之前,先减小所述易失性写缓存的大小。
19.如权利要求17所述的方法,其中,根据如下步骤计算所述累积标准化运行时间,所述这些步骤包括
(1)初始化所述累积标准化运行时间;
(2)在所述初始化之后,感测所述电容器组在所述电容器组操作的时间间隔内的所述温度和所述操作电压;
(3)若所述电容器组在寿命期间是在所述温度和所述操作电压下操作时,确定所述电容器组具有用于存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复所述步骤(2)至(5)。
20.如权利要求19所述的方法,还包括
(7)在所述步骤(2)之前,初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括在所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
21.如权利要求17所述的方法,其中,根据如下步骤计算所述累积标准化运行时间,所述这些步骤包括
(1)初始化所述累积标准化运行时间;
(2)在所述初始化之后,在所述电容器组操作的时间间隔内感测所述电容器组的所述温度;
(3)若所述电容器组在寿命期间是在所述温度下操作时,确定所述电容器组具有用于存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复所述步骤(2)至(5)。
22.如权利要求21所述的方法,还包括
(7)在所述步骤(2)之前,初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括在所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
23.如权利要求17所述的方法,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组在供应给所述存储控制器的主电源中断期间,具有用以存储足够电能的电容量,以使所述存储控制器将所述存储控制器的易失性写缓存备份至所述存储控制器的非易失性存储器。
24.如权利要求17所述的方法,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组具有用以存储足够电能的电容量,以在预设时间内将电能提供到所述存储控制器的易失性写缓存,以在供应给所述存储控制器的主电源中断期间内,保持其中存储的写缓存数据。
25.一种用于在存储控制器中提供电容器组的保证寿命的方法,所述方法包括
当操作电压为第一值时,检测所述电容器组的温度是否超过预设阈值;
确定所述电容器组的电容量下降百分率是否大于所述电容器组的日历时间电容量下降百分率;以及
若所述电容量下降百分率大于所述日历时间电容量下降百分率,则将所述电容器组的所述操作电压降低到第二值,以增加所述电容器组的预期寿命。
26.如权利要求25所述的方法,还包括
确定所述将所述电容器组的所述操作电压降低到所述第二值是否会导致所述电容器组存储比用以将所述存储控制器的易失性写缓存备份到所述存储控制器的非易失性存储器所需的电能少的电能;以及
若所述将所述电容器组的所述操作电压降低到所述第二值将导致所述电容器组存储比用以将所述易失性写缓存备份到所述非易失性存储器所需的电能少的电能,则在所述将所述操作电压降低之前,先降低所述易失性写缓存的大小。
27.如权利要求25所述的方法,还包括
计算所述电容器组的所述电容量下降百分率,其为所述电容器组的寿命末端电容量下降百分率与累积标准化运行时间相对于所述保证寿命的比值的乘积。
28.如权利要求27所述的方法,其中,所述寿命末端电容量下降百分率是预设值,所述预设值确定为所述电容器组不再具有用于存储足够的电能以将所述存储控制器的易失性写缓存备份到所述存储控制器的非易失性存储器的电容量时的电容量下降百分率。
29.如权利要求27所述的方法,其中,根据如下步骤计算所述累积标准化运行时间,所述这些步骤包括
(1)初始化所述累积标准化运行时间;
(2)在所述初始化之后,感测所述电容器组在所述电容器组操作的时间间隔内所述温度和所述操作电压;
(3)若所述电容器组在寿命期间是在所述温度和所述操作电压下操作时,确定所述电容器组具有存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复所述步骤(2)至(5)。
30.如权利要求29所述的方法,还包括
计算所述电容器组的日历时间电容量下降百分率,其为所述电容器组的寿命末端电容量下降百分率与累积日历运行时间相对于所述保证寿命的比值的乘积。
31.如权利要求30所述的方法,还包括
(7)在所述步骤(2)之前,先初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括在所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
32.如权利要求25所述的方法,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组在供应至所述存储控制器的主电源中断期间,具有用以存储足够电能的电容量,以使所述存储控制器将所述存储控制器的易失性写缓存备份至所述存储控制器的非易失性存储器。
33.如权利要求25所述的方法,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组具有用以存储足够电能的电容量,以在预设时间内将电能提供到所述存储控制器的易失性写缓存存储器,以在供应给所述存储控制器的主电源中断期间内,保持其中存储的写缓存数据。
34.一种存储控制器,包括
电容器组,用以存储电能以在所述存储控制器的主电源中断期间将电能供应给所述存储控制器;
温度传感器,耦合到所述电容器组,以感测所述电容器组的温度;以及
CPU,耦合到所述温度传感器,其中,所述CPU配置为
当操作在第一电压值时,检测所述电容器组的所述温度是否超过预设阈值;
确定所述电容器组的预期寿命是否少于所述保证寿命;
若所述电容器组的所述预期寿命小于所述保证寿命,将所述电容器组的所述操作电压降低到第二值,以增加所述电容器组的所述预期寿命。
35.如权利要求34所述的控制器,其中,所述CPU配置为
确定将所述电容器组的所述操作电压降低到所述第二值是否会会导致所述电容器组存储比用以将所述存储控制器的易失性写缓存备份到所述存储控制器的非易失性存储器所需的电能少的电能;以及
若所述将所述电容器组的所述操作电压降低到所述第二值将导致所述电容器组存储比用以将所述易失性写缓存备份到所述非易失性存储器所需的电能少的电能,则在所述将所述操作电压降低之前,先降低所述易失性写缓存的大小。
36.如权利要求35所述的控制器,其中,所述CPU配置为
计算操作在所述第二操作电压值的所述电容器组,具有用以存储用于将所述易失性写缓存备份到所述非易失性存储器的足够电能的电容量时的新大小;
其中,所述CPU通过将所述易失性写缓存的所述大小降低到所述新大小来减小所述易失性写缓存的所述大小。
37.如权利要求34所述的控制器,其中,所述CPU配置为
确定所述第二操作电压值是否已经是所述电容器组的预设最小操作电压;以及
若所述第二操作电压值已经是所述预设最小操作电压,则警告用户,而不是将所述电容器组的所述操作电压降低到所述第二值。
38.如权利要求34所述的控制器,其中,所述CPU配置为
根据在所述存储控制器的操作期间所述电容器组的温度和操作电压读数的历史记录,计算所述电容器组的所述预期寿命。
39.如权利要求38所述的控制器,其中,所述CPU配置为
(1)初始化所述电容器组的累积标准化运行时间;
(2)在所述初始化之后,感测所述电容器组在所述电容器组操作的时间间隔内的所述温度和所述操作电压;
(3)若所述电容器组在寿命期间是在所述温度和所述操作电压下操作时,确定所述电容器组具有存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复步骤(2)至(5);
其中,所述CPU通过用所述保证寿命乘以累积日历运行时间与所述电容器组的所述累积标准化运行时间的比值来计算所述预期寿命。
40.如权利要求39所述的控制器,其中,所述CPU配置为
(7)在所述步骤(2)之前,初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括在所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
41.如权利要求34所述的控制器,其中,所述CPU配置为
基于在所述存储控制器的操作期间所述电容器组的温度读数的历史记录,计算所述电容器组的所述预期寿命。
42.如权利要求41所述的控制器,其中,所述CPU配置为
(1)初始化所述电容器组的累积标准化运行时间;
(2)在所述初始化之后,感测所述电容器组在所述电容器组操作的时间间隔内的所述温度;
(3)若所述电容器组在寿命期间是在所述温度上操作的,则确定所述电容器组具有存储至少预设量的电能的电容量时的所述寿命;
(4)利用所述保证寿命相对于所述寿命的比值而标准化所述时间间隔;
(5)将所述标准化时间间隔加到所述累积标准化运行时间上;以及
(6)在所述存储控制器操作时,重复所述步骤(2)至(5);
其中,所述CPU通过用所述保证寿命乘以所述累积日历运行时间与所述电容器组的所述累积标准化运行时间的比值来计算所述预期寿命。
43.如权利要求42所述的控制器,其中,所述CPU配置为
(7)在所述步骤(2)之前,先初始化所述电容器组的所述累积日历运行时间;以及
(8)将所述时间间隔加到所述累积日历运行时间上;
其中,所述步骤(6)包括在所述存储控制器操作时,重复所述步骤(2)至(5)以及(8)。
44.如权利要求34所述的控制器,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组在供应给所述存储控制器的主电源中断期间,具有用以存储足够电能的电容量,以使所述存储控制器将所述存储控制器的易失性写缓存备份到所述存储控制器的非易失性存储器。
45.如权利要求34所述的控制器,其中,所述保证寿命指定一段时间,在该时间上保证所述电容器组具有用以存储足够电能的电容量,以在预设时间内将电能提供给所述存储控制器的易失性写缓存存储器,以在供应给所述存储控制器的主电源中断期间内,保持其中存储的写缓存数据。
46.如权利要求34所述的控制器,其中,所述CPU配置为
确定在所述CPU将所述电容器组的所述操作电压降低到所述第二值后,所述电容器组的所述预期寿命是否大于所述保证寿命;以及
增加所述电容器组的所述操作电压,以增加存储在所述电容器组内的电能的量。
47.如权利要求34所述的控制器,其中,所述CPU配置为
若在所述CPU将所述电容器组的所述操作电压降低到所述第二值后,所述电容器组的所述预期寿命仍小于所述保证寿命,则将所述电容器组的所述操作电压降低到第三值,以增加所述电容器组的所述预期寿命。
48.如权利要求34所述的控制器,其中,所述CPU配置为
检测所述电容器组的所述温度是否超过第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
若所述温度已超过所述第二预设阈值,则停止所述电容器组的充电。
49.如权利要求34所述的控制器,其中,所述CPU配置为
检测所述电容器组所汲取的电流是否已超过预设电流阈值;
若所述电容器组所汲取的所述电流已超过所述预设电流阈值,则停止所述电容器组的充电。
50.如权利要求34所述的控制器,其中,所述电容器组包括多个串联的电容器,其中,所述控制器还包括
电压均衡电路,其耦合到所述电容器组,以使得所述操作电压平均地分布在所述多个电容器之间。
51.一种存储控制器,包括
电容器组,用以存储电能以在所述存储控制器的主电源中断期间将电能供应给所述存储控制器;
温度传感器,其耦合到所述电容器组,以感测所述电容器组的温度;以及
CPU,其耦合到所述温度传感器,其中,所述CPU配置为
当操作在第一电压值时,检测所述电容器组的所述温度是否已超过预设阈值;
确定所述电容器组的累积标准化运行时间是否大于在所述电容器组的累积日历运行时间;
若所述累积标准化运行时间大于所述累积日历运行时间,则将所述电容器组的所述操作电压降低到第二值,以增加所述电容器组的预期寿命。
52.一种存储控制器,包括
电容器组,用以存储电能以在所述存储控制器的主电源中断期间将电能供应给所述存储控制器;
温度传感器,其耦合到所述电容器组,以感测所述电容器组的温度;以及
CPU,其耦合到所述温度传感器,其中,所述CPU配置为
当操作在第一电压值时,检测所述电容器组的温度是否已超过预设阈值;
确定所述电容器组的电容量下降百分率是否大于所述电容器组的日历时间电容量下降百分率;
若所述电容量下降百分率大于所述日历时间电容量下降百分率,则将所述电容器组的所述操作电压降低到第二值,以增加所述电容器组的预期寿命。
全文摘要
一种存储控制器具有用于存储电能以在主电源中断时供应电能的电容器组、可感测该电容器组温度的温度传感器、以及CPU,所述存储控制器当操作在第一电压值时检测电容器组的温度是否已超过预设阈值,并且确定电容器组的预期寿命是否小于保证寿命。若预期寿命小于保证寿命,则CPU将电容器组的操作电压降低到第二值,以便增加电容器组寿命。在一个实施例中,若电容器组的累积标准化运行时间大于累积日历运行时间,则CPU降低电压。在另一实施例中,若电容器组的电容量下降百分率大于日历电容量下降百分率,则CPU降低电压。
文档编号G06F1/30GK101203825SQ200680022534
公开日2008年6月18日 申请日期2006年6月23日 优先权日2005年8月4日
发明者V·K·佩科尼, Y·F·王 申请人:达西系统股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1