非易失性高速缓存的制作方法

文档序号:6471446阅读:350来源:国知局
专利名称:非易失性高速缓存的制作方法
技术领域
本发明的实施例涉及非易失性高速缓存。特别是,本发明涉及为磁盘存储设备缓存数据的非易失性存储器。
背景技术
计算机系统通常将数据存储在易失性存储器和大容量非易失性存储器中。这些数据通常包括操作系统、应用程序的计算机指令和通过上述指令访问的数据。磁盘驱动器,作为大容量存储器的一个例子,可以是现代计算机系统的一部分。通常,当计算机关机或者切断电源后,非易失性大容量存储器,比如磁盘驱动器中的数据是不会丢失的。因而,非易失性大容量存储器,比如磁盘驱动器,可以用来存储计算机中需要长期保留的数据。
在众多计算机系统中,计算机微处理器当前使用的一组数据可以从磁盘驱动器中拷贝到易失性随机存储器中(RAM),因为RAM中数据的存取速度要比磁盘驱动器快得多。然而,单位容量的RAM存储器(例如1M字节)一般要比相同容量的磁盘驱动器贵的多,因而,在典型的计算机系统中,RAM的容量要比磁盘驱动器的容量小得多。当所需要的数据尚未存放到RAM存储器之时,微处理器可以读取一组信息,包括所需要的、从磁盘存入RAM的数据。如果RAM存储器中没有足够的空间,则微处理器可以通过把RAM中的某块写回磁盘驱动器来释放RAM的空间。
由于磁盘驱动器的存取时间通常要比RAM的存取时间慢,因此磁盘驱动器就经常成为提高性能的瓶颈。此外,从磁盘驱动器中读取数据一般要比从RAM中读取数据花费更大的功率,这是因为从磁盘驱动器读取数据时必须进行机械运转。现有的磁盘驱动器包括一个易失性高速缓存(例如,动态随机存取存储器高速缓存DRAM cache,静态存储器高速缓存SRAM cache),但是这些易失性高速缓存通常是微处理器的主存储器地址空间的一部分并且是字节寻址的。
附图描述

图1是一个具有依照本发明实施例的非易失性高速缓存的计算机系统的局部结构图。
图2是依照本发明实施例的磁盘驱动器的局部结构图。
图3是依照本发明实施例的芯片组和非易失性高速缓存的局部结构图。
图4是一个依照本发明实施例的非易失性磁盘高速缓存的更为详细的局部结构图。
图5依照本发明实施例的非易失性磁盘高速缓存入口的局部结构图。
图6是与依照本发明实施例的磁盘驱动器中分区有关的数据获取的方法的一个流程图。
图7是一个具有依照本发明实施例的非易失性磁盘高速缓存扩展卡的计算机系统的局部结构图。
图8是一个具有依照本发明实施例的非易失性磁盘高速缓存的磁盘驱动器的局部结构图。
图9图示了在依照本发明实施例的非易失性存储器中存储数据的方法。
详细说明本文中所描述的方法和装置涉及用在大容量存储器中的高速缓存,该高速缓存能够在非易失性存储器中实现。特别地,本发明的实施例涉及非易失性高速缓存,该非易失性高速缓存通过将数据缓存到非易失性存储器中,能够提高存储器存贮和检索的效率。
图1图示了一个具有依照本发明实施例的,非易失性高速缓存的计算机系统(“计算机”)的局部结构图。特别地,图1图示了一个计算机系统100,计算机系统100包括一个中央处理器(CPU)102,或处理器,和一个安装在主板106上的存储器元件104。处理器102可以是,如Santa Clara,California因特尔公司制造的奔腾3处理器,专用集成电路(ASIC),微控制器等等。可用在计算机系统100的存储器104的一个例子是128M动态随机存取存储器(DRAM)。存储器104也可以是如ROM。换句话说,处理器102和存储器104可以驻留于耦合在主板106上的各自的印刷电路中。术语“耦合”揽括了直接连接,间接连接和间接通信,等等。
芯片组110耦合在处理器102和其它系统元件,比如存储器104,大容量存储器130和连接在扩展总线116上的外围元件之间,并对双方的交互进行管理。在本专利申请中,术语芯片组指的是象集线器一样工作的、处理器和计算机系统元件之间数据交换的一个或多个集成电路芯片的组。如图1所示,芯片组可以耦合在计算机系统的主板上。芯片组110可以集成(如,焊上)在主板106中。芯片组110可以是类似于,如Santa Clara,California因特尔公司制造的820和810E芯片组。芯片组110可以是一个单一的集成电路或者可以包含两个或更多个集成电路芯片。如图3所示,芯片组110可以包含一个存储器控制集线器(MCH)311,该存储器控制集线器实现所熟知的“北桥功能”,以及包含一个输入/输出控制集线器(ICH)312,该输入/输出控制集线器实现所熟知的“南桥功能”。
大容量存储器130可以是磁盘驱动器,同时可以通过电缆连接器170与芯片组110相耦合。大容量存储器130也可以是3.5英寸软磁盘,5.25英寸软盘,ZIP磁盘(例如,由Iomega Corporation of RoyUtah生产的ZIP磁盘),jaz磁盘(例如,由Iomega Corporation ofRoy Utah生产的jaz磁盘),LS-120 Superdisk(例如由ImationCorporation of Oakdale,Minnesota生产的),可擦写数字化多功能光盘(DVD-RAM),读/写光盘(CD-RW),光存储器,磁-光存储器,磁存储器,全息等等。为方便起见,本申请所公开的实施例中,大容量存储器是指磁盘驱动器。可用于本发明的磁盘驱动器的一个实施例图示在图2中。
扩展总线116可以是外设部件接口(PCI)总线,扩展总线116是数据总线类型,在计算机系统100中很常见,而且遵从PCI局部总线规格。一个或多个PCI相适应的外围设备,例如网络接口卡(NIC)126,可以连接到扩展总线116。网络接口卡126可以将计算机系统100连接到局域网或者广域网。
本发明的一个实施例是一个非易失性高速缓存,它包含一个可以对存储在大容量存储器上的数据进行缓存的非易失性存储器。例如在图1所示的实施例中,非易失性高速缓存150与芯片组110相连。在另一个实施例中,芯片组和非易失性存储器对大容量存储器130的数据进行缓存。而在进一步的一个实施例中,大容量存储器是一个磁盘驱动器,而非易失性高速缓存150对该磁盘驱动器中的数据进行缓存,这种情况下高速缓存可以被称为磁盘高速缓存。
图2图示了依照本发明实施例的磁盘驱动器230的局部结构图。磁盘驱动器230可以是与图1中的大容量存储器130相同,并且为了下文中论述的需要,把它当作大容量存储器130。磁盘驱动器230可以是一个外部磁盘驱动器或者内部磁盘驱动器。磁盘驱动器230可以存储,如超过100G字节的数据。在一个实施例中,磁盘驱动器230是硬盘。在一个进一步的实施例中,磁盘驱动器230是一个由Seagate Inc.of Scotts Valley,California制造的Cheetah 18XL磁盘驱动器。磁盘驱动器130可以包含一个磁盘控制器210和一个大容量存储器220。磁盘控制器210可以是专用集成电路,并且它可以包含一个与缓冲器和程序存储器215以及ECC逻辑电路218相耦合的微处理器元件(MPU)211。缓冲器和程序存储器218可以存储由MPU211执行的磁盘驱动器操作程序219,并且也可以充当存储从大容量存储器220中写入或读取的数据的缓存器。MPU211可以处理通过向大容量存储器220写入或读取数据来处理来自CPU的请求。比如,MPU211可以判定何时已发出一个请求,并且可以将逻辑扇区地址转换成物理扇区地址。缓冲器和程序存储器215可以耦合在磁盘主轴界面逻辑电路213上,该逻辑电路可以与主机系统(例如,计算机系统100)对接。磁盘控制器210也可以包含磁盘格式化逻辑电路来格式化待写入大容量存储器的块(例如,插入一个前同步码和多个特定的字符)。本专利申请中,“逻辑”包括硬件逻辑,比如被连接执行操作的电路,或者程序逻辑电路比如执行操作的微程序语言。
大容量存储器220可以存储其他内容,计算机操作系统(OS)代码231,这些操作系统代码一旦引导,可以被载入计算机存储器104中供处理器102执行。大容量处理器220也可以存储磁盘驱动器存储设备驱动程序235,该驱动程序也可以载入计算机的存储器104供处理器103执行,从而实现与磁盘驱动器230之间的数据转换和通信。大容量存储器220也可以存储其他的数据,如应用程序以及可以由这些程序访问的数据。大容量存储器220可以包含能分成磁道的盘面,这些磁道能依次分成不同的扇区。比如,经格式化的磁盘,每个盘面可以具有1000个磁道。在其中一个实施例中,当磁盘控制器210从磁盘驱动器外界接收到读或写的请求后,可以按照逻辑磁盘扇区来发出请求,磁盘控制器可以采用映象算法将这些请求转换成物理磁盘扇区。一些物理扇区可以为备用而留出,映象可以是硬件协助的。
在操作过程中,当操作系统231(由处理器102执行)从程序或操作系统的其他部分接收到一个数据请求时,可以利用一个文件系统通过检测文件分配表(FAT)来判定当前数据是否在存储器104中,如果不是,则判定在大容量存储器220上(例如,磁盘扇区地址)的何处该数据可以被发现。如果操作系统231判定所需要的数据不在存储器104中,而是存储在磁盘230中,操作系统231可以通过芯片组110向磁盘驱动器230发送一个获取数据的请求。更精确地,操作系统231可以请求磁盘驱动器230发送含有操作系统231所需数据的磁盘扇区的一个拷贝。磁盘控制器210之后可以接收用于磁盘扇区的请求,从大容量存储器220中检索磁盘扇区,并且通过芯片组110把用于磁盘扇区的数据发送到存储器104。在另一个时间点,操作系统231可以引发磁盘扇区将存储器104中的数据写入到磁盘驱动器230中,这种情况下,磁盘控制器210将接收数据并将其存入大容量存储器220的磁盘扇区上。
在一个实施例中,尽管诸如寻址信息和有效性数据之类的管理信息可以以更小的单元来被存取,但是扇区是磁盘驱动器230使用的最小的可寻址物理存储单元。在一个进一步的实施例中,每个磁盘扇区的大小是512字节。在一个实施例中,一个块是指包含有标识代码、错误检测代码和/或块的错误纠正代码(ECC)的一个或多个磁盘扇区的一个组。在另一个实施例中,操作系统依据一个磁盘扇区或者扇区块(即,不请求一个字节或一个字)向磁盘请求获取数据,在这种情况下,磁盘驱动器被称作块引导的(即,块可寻址的)。在另一个块引导的磁盘驱动器实施例中,管理信息可以以更小的单元来被存取。ECC是一个高级的错误检测和纠正协议,它可以检测出单个位和多个位错误并且可以纠正某些运行中的错误。在一个实施例中,块中的磁盘扇区在磁盘的一个面上呈一个挨一个的物理定位。在一个进一步的实施例中,块由磁盘驱动器230,非易失性高速缓存150和相关元件按照一个单元来操作。在一个实施例中,一个块包含100个磁盘扇区。
在本发明的一个实施例中,存储在磁盘驱动器230中的数据可以缓存到非易失性高速缓存150中。在该实施例中,非易失性高速缓存150充当一特定的存储器子系统的作用,它存储有磁盘驱动器使用频率很高的扇区数据的备份供快速存取。根据该实施例,当一个磁盘扇区的数据从磁盘驱动器230拷入到存储器104时,就可以将磁盘扇区的备份存入到非易失性高速缓存150中。根据该实施例,当操作系统判定所需要的数据不在存储器104,而请求的数据放在非易失性高速缓存150时,就可以将数据从非易失性高速缓存150(代替从磁盘驱动器230)读入到存储器104中。在该实施例中,逻辑磁盘驱动器存储器包括物理磁盘驱动器230和非易失性高速缓存150。如果操作系统判定它需要将数据存储到磁盘上,比如当字处理程序的用户发出程序指令将当前文档“存盘”之时,那么数据就可以存入物理磁盘驱动器230或者非易失性高速缓存150。同样,当操作系统判定它需要将存储在存储器104中的数据释放出来,就可以将数据写回非易失性高速缓存150。由于非易失性高速缓存150是非易失的,所以当计算机系统切断电源关机后存储在其上的数据不会丢失。
当非易失性高速缓存150的数据存取速度比磁盘驱动器230快时,使用非易失性磁盘高速缓存150可以从总体上提高处理器102的程序执行速度。比如,当磁盘驱动器230的平均存取速度大大高于非易失性磁盘高速缓存150的存取速度时,那么非易失性磁盘高速缓存150的使用可以从整体上大大提高存取速度。由于典型的计算机系统中磁盘驱动器的存取时间占到用户等待系统响应时间的80%,非易失性高速缓存150的使用将让用户感到更满意。此外,当非易失性高速缓存150每一次存取所用的功率比磁盘驱动器230更小时,那么非易失性高速缓存150的使用将节省系统用电。此外,非易失性高速缓存150比磁盘驱动器更加可靠,从而使计算机系统崩溃或死机的次数最小化。
在其中一个实施例中,磁盘驱动器设备程序235包含用于非易失性高速缓存150的高速缓存管理指令237。这些高速缓存管理指令237可以决定那些数据需要进行高速缓存,那些数据需要替换,以及那些数据需要写回到磁盘中。此外,高速缓存管理指令237也可以决定命中高速缓存何时发生,以及那些数据预取进入高速缓存。例如,高速缓存管理指令237可以决定是否应该将一个所希望的磁盘扇区的数据从非易失性高速缓存150(例如,如果数据在非易失性高速缓存150中)或从磁盘驱动器230读入到存储器230。决定是否高速缓存管理,比如是否应该将数据缓存到非易失性高速缓存150中,可以通过使用所熟知的高速缓存算法来进行。例如,如果算法决定若在紧随其后的时间里数据被再次使用的可能性较低(例如,数据用于MP3音频文件),那么就不把这些数据进行高速缓存。此外,当需要把非易失性高速缓存150中的数据写回到磁盘驱动器230时,高速缓存管理指令就可以决定,比如采用所熟知的最近最少使用(LRU)算法或者随机替换算法将哪些数据写回。
在其中一个实施例中,出现在操作系统231中的磁盘驱动器设备驱动程序235,即便它具有高速缓存管理指令237,看起来似乎是一个正常的设备驱动程序(例如,WIN98环境下的ATAPLSYS)。在该实施例中,非易失性高速缓存150的存在对于操作系统231来说是显而易见的。在一个进一步的实施例中,高速缓存管理指令是操作系统231的一部分。在另一个实施例中,高速缓存管理由芯片组110中的逻辑来实现。在一个更进一步的实施例中,高速缓存管理由操作系统231,磁盘驱动器的设备驱动程序235和/或芯片组110上的高速缓存管理逻辑相结合来实现。
图3是根据本发明实施例的芯片组310和非易失性磁盘高速缓存350的一个局部结构图。芯片组310和非易失性磁盘高速缓存350可以与图1中的芯片组110以及非易失性高速缓存150相同。在该实施例中,非易失性磁盘高速缓存350是指磁盘高速缓存,因为它向磁盘驱动器提供数据缓冲。非易失性磁盘高速缓存350可以是能够读取和写入的、以及在所有的与其相连的外部电源被切断后仍能保留数据的任何类型存储器。非易失性磁盘高速缓存350可以是,比如闪存,电池支持的动态随机存取存储器,磁性随机存贮器,全息存储器,铁-电随机存贮器等等。在其中一个实施例中,非易失性磁盘高速缓存350可以存储500M字节的数据。在一个进一步的实施例中,非易失性磁盘高速缓存350属于面向块的,每个块包含一个或多个逻辑磁盘扇区,这些扇区对应磁盘驱动器的逻辑磁盘扇区。在该实施例中,非易失性高速缓存350的每个磁盘扇区和块与磁盘驱动器中的磁盘扇区和块的大小是相同的。如果磁盘高速缓存350属于面向块的,数据(而非高速缓存管理信息)可以按照磁盘扇区或扇区块来读取或存储。
在其中一个实施例中,非易失性高速缓存350与芯片组310相耦合。在一个进一步的实施例中,非易失性高速缓存350可以直接连接到(即,不是用线连接)到芯片组310或成为芯片组310的一部分。在其中一个实施例中,如图3所示,非易失性高速缓存150堆积在芯片组310的集成电路上。在该实施例中,ICH312包括磁盘高速缓存接口逻辑315,该逻辑控制对非易失性磁盘高速缓存350的存取。
如上所述,芯片组310可以是单个集成电路或者集成电路组,以控制处理器和相关设备之间的通信。在其中一个实施例中,芯片组310包含多个集成电路,这些集成电路可以被称为第一芯片组集成电路和第二芯片组集成电路,而非易失性高速缓存可以与芯片组内的其中一个集成电路相耦合。芯片组310可以包含一个存储器控制集线器(MCH)311,该集线器用于实现所熟知的“北桥功能”;和一个输入/输出控制集线器(ICH)312,该集线器用于实现所熟知的“南桥功能”。如图3所示,存储器控制集线器311和输入/输出控制集线器312可以是独立的芯片。在其中一个实施例中,高速缓存逻辑电路315和缓冲器318构成了芯片组上的存储器控制集线器311的一部分。非易失性存储器可以以任何形式与芯片组相耦合,而本发明则可以采用任何类型的芯片组。在图3中,非易失性存储器以堆积在输入/输出控制集线器312之上来示出。该堆栈式非易失性存储器可以覆盖它所堆积的整个芯片或者该芯片的一部分。
在另一个实施例中,非易失性高速缓存可以是完全相关的高速缓存。在另一个实施例中,非易失性高速缓存可以是设定相关的高速缓存。
图4是根据本发明实施例的非易失性磁盘高速缓存350的一个更为详细的局部结构图。非易失性磁盘高速缓存可以存储多个磁盘高速缓存入口400和管理信息。在其中一个实施例中,存储在非易失性磁盘高速缓存350中的每个磁盘高速缓存入口的大小是大容量存储器220的磁盘扇区大小。在一个进一步的实施例中,每个磁盘高速缓存入口对应一个或多个磁盘扇区(例如,100个磁盘扇区)的一个块。
非易失性磁盘高速缓存350也可以包含一个高速缓存目录表410,目录表具有每个磁盘高速缓存入口的一个表格入口。高速缓存目录表410可以用于决定特定的磁盘扇区或块是否当前在非易失性磁盘高速缓存350中。在其中一个实施例中,高速缓存目录表可以指示磁盘驱动器扇区所对应的数据是否存储在磁盘高速缓存中。高速缓存目录表410中为每个例如包含一个逻辑磁盘扇区数据的有效磁盘高速缓存入口设有一个表格入口。高速缓存目录表410中的每个表格入口可以包含一个存储在非易失性磁盘高速缓存350的逻辑磁盘扇区中的扇区地址。为了决定磁盘扇区是否在非易失性磁盘高速缓存350中,例如可以利用所熟知的搜索算法对高速缓存目录表410进行搜索。换句话说,高速缓存目录表410中的表格入口可以采用散列算法进行排序。在其中一个实施例中,磁盘扇区是否在非易失性磁盘高速缓存350之中可以通过将所希望的扇区地址与存储在高速缓存目录表入口中的扇区地址进行比较来得到确认。由于高速缓存目录表410存储在非易失性存储器中,即使计算机系统切断电源或者关机,高速缓存的状态(例如,高速缓存中有什么)仍可得到保留。在一个非易失性磁盘高速缓存350中具有2,000,000磁盘高速缓存入口的实施例中,高速缓存目录表410中具有2,000,000个表格入口。在该实施例中,每个表格入口可以是四个字节,而高速缓存目录表可以使用8M字节的非易失性存储器。在其中一个实施例中,因为在每个磁盘高速缓存入口包含了多个磁盘扇区的一个块而减小了高速缓存目录表的大小。
非易失性高速缓存350也可以包含多个控制寄存器如一个命令寄存器401,一个地址寄存器402和一个目标指针寄存器403。命令寄存器401可以存储从其他设备接收的命令,比如来自处理器102的、用以检索存储在非易失性磁盘高速缓存350上的磁盘扇区的命令。地址寄存器402可以存储磁盘扇区的扇区地址,这些磁盘扇区从非易失性高速缓存350中读取或写入到非易失性高速缓存350中。目标指针寄存器403可以存储位置,比如用来写入磁盘扇区的、象RAM等等的设备的位置。
图5是根据本发明实施例的非易失性磁盘高速缓存入口500的一个结构图。非易失性磁盘高速缓存入口500可以是图4中的多个磁盘高速缓存入口400中的一个,并且也可以包含磁盘扇区数据或磁盘扇区块数据。非易失性磁盘高速缓存入口500可以具有一个有效字段501,一个修改字段502,一个扇区地址505,一个地址字段510和一个ECC字段520。当高速缓存入口500包含有效数据时,有效字段502可以被设置为“有效”,而当高速缓存入口500不包含有效数据时,则将有效字段502设置为“无效”。比如,当高速缓存入口500中的数据写回到磁盘驱动器230时,有效字段501可以从“有效”转变成“无效”以表明高速缓存入口不再存储有逻辑磁盘扇区。如果高速缓存入口500中的数据与磁盘驱动器230上相对应的磁盘扇区中的数据不相同的话,修改字段502可以设置成“经修改”。例如,如果一个磁盘扇区的数据从存储器104写回到非易失性高速缓存150,而该磁盘扇区含有在存储器104中经修改过的数据,那么该数据所对应的磁盘高速缓存入口的修改字段将被设置为“经修改”。修改字段502可以被称为“页面重写标记位”(“dirty bit”)。扇区地址505可以包含那些存储在高速缓存入口的、可称为“扇区标识符”的数据的逻辑磁盘扇区地址(或者多个地址,如果入口具有多个扇区的话)。在其中一个实施例中,扇区地址505包含块的起始地址,每个块都有已知固定的长度。数据字段510存储该高速缓存入口的数据。在其中一个实施例中,数据字段510可以包含一个磁盘扇区的数据(比如,512字节)。ECC字段520存储有用于高速缓存入口的错误纠正代码。在其中一个实施例中,每个块与一个错误纠正代码相关联。
在操作过程中,处理器102可以判定某个块数据不在存储器104中,并且可以向芯片组110发信号来判定数据是否在非易失性磁盘缓存中。磁盘高速缓存接口逻辑电路315可以根据高速缓存目录表410判定该块数据在非易失性磁盘高速缓存中。为了从非易失性磁盘高速缓存350中读取该块数据,处理器102可以向命令寄存器401发送一个“读”命令,将块磁盘扇区地址发送给地址寄存器402,以及将存储器104中的一个目标地址发送给目标指针寄存器403。根据该指令,磁盘高速缓存接口逻辑315可以把在所对应的高速缓存入口中找到的数据(比如,高速缓存入口500的数据字段510中的数据)写入到缓冲器318中。然后,缓冲器中的数据就可以被传送到目标指针寄存器403所指定的存储器104中的某个位置。在另一个实施例中,由于存储器速度的原因,缓冲器318也许不可用。在其中一个实施例中,磁盘高速缓存接口逻辑315可以检测与存储在非易失性存储器中的数据有关的错误纠正代码(例如,ECC代码520),以便对从非易失性磁盘高速存储器读入到缓冲器318过程中可能发生的错误进行纠正。在其中一个实施例中,非易失性存储器是面向块的,并且对从非易失性存储器读取的每一块数据进行错误纠正代码检测。
在其中一个实施例中,来自非易失性磁盘高速缓存的读取可能是破坏性的读取,这是因为读取过程引起存储在该入口的数据丢失或不可预期地改变。这种情况可能在如下情况发生,即如果在非易失性磁盘高速缓存是在核心逻辑中实现的时候。在该实施例中,磁盘高速缓存接口逻辑电路315可以支持对破坏性读取进行写回。也就是说,磁盘高速缓存接口逻辑315可以将已读取的数据写回,从而将入口中的数据恢复原状。
换句话说,如果处理器102所希望的数据不在非易失性磁盘高速缓存中,则可以向磁盘驱动器230发送一个获取合适块的数据的请求。磁盘驱动器130可以将该块数据写入到存储器104中。此外,可以通过将块写入缓冲器318以及将合适的命令写入命令寄存器401,来把相同块的数据写入到非易失性磁盘高速缓存中。之后,高速缓存接口逻辑315可以创建一个新的磁盘高速缓存入口500以及将该块拷贝到新的磁盘高速缓存入口中。此外,高速缓存接口逻辑315可以在对应新的磁盘高速缓存入口的高速缓存目录表410中创建一个新的入口。新磁盘高速缓存入口的有效域501可以被设置成“有效”而修改域将被设成“未经修改”。在其中一个实施例中,非易失性磁盘高速缓存中的块与磁盘驱动器中的块具有相同的大小和结构,以便块可以不经修改或者只经最小的改动就可以拷贝到磁盘高速缓存中。一旦该块数据存入非易失性磁盘高速缓存,处理器102就可以从非易失性磁盘高速缓存中而不是从磁盘驱动器中读取该块数据。
图6是一个获取与根据本发明实施例的磁盘驱动器中扇区有关的数据的方法的流程图。为清楚起见,所示出的方法与上述的优选实施例相结合来描述。处理器102可能需要一个数据项以及可以判定数据是否存储于或者相关于在磁盘驱动器(601)的某个位置。与磁盘驱动器位置相关的、最当前的数据可以存储在RAM或者磁盘高速缓存中。如果数据没有存储在RAM中,那么处理器可以通过检测高速缓存目录表来判定与磁盘驱动器位置相关的数据是否存储在非易失性磁盘高速缓存(602)中。如果数据存储在非易失性磁盘高速缓存(603)中,那么就可以从非易失性磁盘高速缓存(604)中读取该数据。在从非易失性磁盘高速缓存读取该数据时可以对错误纠正代码进行检查,从而纠正错误(605)。然后就可以将该数据写入到RAM(606)。如果数据没有存储在非易失性磁盘高速缓存(603)中,那么可以从磁盘驱动器(607)中读取所请求的数据。然后,就可以将该数据写入到RAM和非易失性磁盘高速缓存中,从而在非易失性高速缓存(608)中创建了一个新的入口。接下来,可以在高速缓存目录表中创建与非易失性磁盘高速缓存(609)中的新的入口相对应的新的入口。
图7是一个具有依照本发明另一个实施例的非易失性高速缓存扩展卡的计算机系统的局部结构图。在该实施例中,非易失性磁盘高速缓存包含在PCI总线扩展卡中。图7所图示的计算机系统700可以与图1所示的计算机系统100相似。图7图示了一个主板706,该主板包含一个CPU702,RAM704,芯片组710和磁盘驱动器连接头电缆770,以上元件可以分别同图1中的CPU102,存储器104,芯片组110和连接头电缆170相同。计算机系统700也包含一个磁盘驱动器730,该驱动器730可以与图1中的大容量存储设备130相同。然而,与图1不同的是,图7的实施例中,非易失性高速缓存并不与芯片组710相连。
在本发明的该实施例中,计算机系统700包含一块非易失性高速缓存扩展卡750,该扩展卡与PCI总线716相连。网络接口卡726也与PCI总线716相连。PCI总线716和网络接口卡726可以与图1中的扩展总线116及网络接口卡126相同。在其它实施例中,非易失性高速缓存扩展卡750可以与计算机系统700的另一个扩展总线相连。非易失性高速缓存扩展卡750可以插入计算机700的总线也可以从中移走。非易失性高速缓存扩展卡750包含非易失性存储器,该存储器可以与非易失性磁盘高速缓存350中的非易失性存储器相似。扩展卡750也可以包含磁盘高速缓存接口逻辑。计算机700可以为磁盘驱动器730缓冲数据,其方式如与上述计算机系统100相类似。当计算机700的操作系统需要获取可能存储在磁盘驱动器730中的数据时,可以作出缓存该数据在非易失性高速缓存扩展卡750中决定。如果如此,那么可以将数据从非易失性扩展卡750而不是磁盘驱动器730中写入到RAM704。因而,从为磁盘驱动器缓存数据角度考虑,该实施例与图1的实施例是相似的,尽管在该实施例中,高速缓存是扩展卡的一部分而不象图1中的高速缓存是与芯片组相连的。
图8是具有一个根据本发明实施例的、非易失性磁盘高速缓存的磁盘驱动器的局部结构图。图8图示了一个磁盘驱动器830,该驱动器与图2所示的磁盘驱动器230相似。如磁盘驱动器230一样,磁盘驱动器830具有一个磁盘控制器810和磁盘轴820。磁盘驱动器830也具有一个非易失性高速缓存850。大容量存储器220可以存储操作系统831和一个磁盘驱动器设备驱动程序835。然而,磁盘轴820并不存储高速缓存管理指令。磁盘控制器810具有一个MPU811,缓冲器和程序存储器815,接口逻辑813以及ECC逻辑818,这些元件可以分别类似于图2中的MPU211,缓冲器和程序存储器215,磁盘轴接口逻辑213以及ECC逻辑电路218。此外,磁盘控制器810具有高速缓存接口逻辑815并且与非易失性高速缓存850相耦合。非易失性磁盘高速缓存850可以与图3中的非易失性高速缓存350相似,而高速缓存接口逻辑815则可以与图3所示的磁盘高速缓存接口逻辑315相似。
磁盘驱动器830可以用于如图1和7所示的计算机系统中,除了非易失性高速缓存850是在该计算机系统中仅有的非易失性磁盘高速缓存器。图8所示的实施例与图1和图7在操作上相似,这是因为它把磁盘驱动器的数据缓冲到非易失性存储器中。然而,在该实施例中,磁盘高速缓存可以是磁盘驱动器的一部分。在一个进一步的实施例中,磁盘高速缓存管理功能可以由程序819来实现。在该实施例中,磁盘高速缓存可以由磁盘控制器810来管理,并且对于计算机系统的其他部分来说是透明的。
图9图示了在依照本发明实施例的非易失性存储器中存储数据的方法。接收一个在非易失性存储器中存储数据的命令(901)。例如,在word处理程序中编辑文档的用户,可以向该程序发送一个“存储”该文档的命令。在另一个例子中,程序可以自我决定,比如根据定时器作出决定,应把正编辑的文档的备份进行存储。在另一个例子中,操作系统的一部分可以产生将数据存入磁盘驱动器或其它非易失性存储器,比如存入到RAM的剩余空间的一条命令。对是否将数据存入非易失性高速缓存(902)作出决定。可以采用所熟知的缓冲算法来作出上述决定。如果数据在随后的时间里不可能被使用的话,可以不对数据进行缓存。此外,如果非易失性高速缓存扩展卡与扩展总线不相耦合的话,可以作出不把数据存储到非易失性高速缓存的决定。当作出将数据存储到非易失性高速缓存的决定,就把该数据写入到非易失性高速缓存903。在其中一个实施例中,把数据写入非易失性高速缓存的过程包括将非易失性高速缓存(904)上的、非易失性存储器中的高速缓存目录表进行更新的过程。当作出不把数据存入非易失性高速缓存的决定,就把该数据写入到磁盘驱动器(905)。
本发明的实施例涉及将数据缓存到磁盘存储设备的非易失性磁盘高速缓存。本文中对若干实施例进行了具体的叙述。然而,将体会到,本申请中的技术以及所附的权力要求覆盖了本发明的各种修改版,而不会背离本发明的范围和宗旨。例如,尽管论述了可用作高速缓存的几种非易失性存储器,但是可以使用任何类型的非易失性存储器。而另一个例子中,尽管本发明公开了用于非易失性磁盘高速缓存和磁盘高速缓存入口的一种数据结构,但是高速缓存和高速缓存入口可以采用任何数据结构配置来实现。而且,磁盘高速缓存可以用芯片组的一部分,一个扩展卡,磁盘驱动器的一部分来实现,或者可在计算机系统另一部分,比如在磁盘驱动器连接头电缆中实现。此外,尽管上述的实施例叙述了采用非易失性高速缓存来为磁盘驱动器缓存数据,非易失性高速缓存还可以用来为其它大容量存储器缓存数据。因而,尽管如图3,4和5所示的实施例为便于论述高速缓存,参考了磁盘驱动器高速缓存(即磁盘高速缓存),所公开的装置和方法还可以用来为其它类型的大容量存储器缓存数据。
权利要求
1.一个非易失性高速缓存,包括一个非易失性存储器,对保存在大容量存储器上的数据进行缓存。
2.权利要求1的非易失性高速缓存,其中大容量存储器是一个磁盘驱动器。
3.权利要求1的非易失性高速缓存,其中非易失性存储器是面向块的。
4.权利要求1的非易失性高速缓存,其中非易失性存储器与芯片组相连。
5.一个磁盘高速缓存,包括一个面向块的存储器;和与面向块的存储器相连的高速缓存接口逻辑电路。
6.权利要求5的磁盘高速缓存,其中存储器是一个非易失性存储器。
7.权利要求6的磁盘高速缓存,其中存储器用来保存高速缓存目录表,高速缓存目录表可以显示磁盘驱动器分区所对应的数据是否保存在磁盘高速缓存中。
8.权利要求7的磁盘高速缓存,其中磁盘高速缓存接口逻辑电路可以为从非易失性存储器中读取的数据的错误纠正代码进行检测。
9.一个缓存数据的设备,该设备包括一个连接非易失性高速缓存存储器的芯片组。
10.权利要求9的设备,其中芯片组包含控制处理器和相关设备之间的通信的逻辑电路。
11.权利要求9的设备,其中非易失性高速存储器是一个磁盘高速缓存存储器。
14.权利要求11的设备,其中非易失性高速缓存存储器直接连接在芯片组上。
15.权利要求12的设备,其中非易失性高速缓存存储器是面向块的。
16.权利要求11的设备,其中非易失性高速缓存存储器是芯片组的一部分。
17.权利要求14的设备,其中非易失性高速缓存存储器是堆积在芯片组上。
18.权利要求11的设备,其中芯片组包括控制非易失性高速缓存存储器的存取的高速 缓存接口逻辑电路。
19.权利要求16的设备,其中高速缓存接口逻辑电路是芯片组上的内存控制集线器的一部分。
20.权利要求16的设备,其中芯片组进一步包括对与保存在非易失性高速缓存存储器中的数据有关的错误纠正代码进行检测的逻辑电路。
21.权利要求18的设备,其中非易失性存储器是面向块的,并且其中设备包含对每个从非易失性存储器中读取的数据块的错误纠正代码进行检测的逻辑电路。
22.一台计算机,包括一个处理器;一个连接处理器的芯片组;一个连接芯片组的磁盘存储器;和一个连接芯片组的非易失性磁盘高速缓存存储器。
23.权利要求20的计算机,进一步包括将数据保存到磁盘存储设备以及从磁盘存储设备读取数据的设备驱动器指令,所述设备驱动器指令包括将数据缓存到非易失性磁盘高速缓存存储器的高速缓存管理指令。
24.权利要求21的计算机,其中磁盘存储器驱动指令包括通过检测保存在非易失性磁盘高速缓存存储器中的高速缓存目录表来判断数据当前是否在非易失性磁盘高速缓存中的指令。
25.权利要求22的计算机,其中非易失性磁盘高速缓存是面向块的。
26.权利要求23的计算机,其中芯片组包括控制非易失性磁盘高速缓存的存取的磁盘接口逻辑电路;以及对磁盘高速缓存接口逻辑电路,该逻辑电路用来检测与非易失性磁盘高速缓存中读取的数据块有关的错误纠正代码。
27.获取与磁盘存储器中的位置有关的数据的方法,该方法包括判断与磁盘存储器位置有关的数据是否保存在非易失性高速缓存存储器中;以及当所述数据保存在非易失性高速缓存存储器后,从非易失性高速缓存存储器中读取与位置有关的数据。
28.权利要求25的方法,进一步包括当所述数据不保存在非易失性高速缓存存储器中时,从磁盘存储器中读取位置有关的数据。
29.权利要求26的方法,其中所述判断包括对保存在非易失性能够存储器中的高速缓存目录表进行检测。
30.权利要求27的方法,其中非易失性能够高速缓存存储器与芯片组相连,并且其中所述从非易失性高速缓存存储器中读取数据包括向位于芯片组内的高速缓存接口逻辑电路发送一个指令,发送指令直接从非易失性高速缓存存储器中把数据读入到RAM。
31.权利要求28的方法,其中非易失性高速缓存存储器是面向块的,并且其中从非易失性高速缓存存储器中读取的数据进一步包括对非易失性高速缓存存储器中读取的数据有关的错误纠正代码进行检测。
32.权利要求29的方法,其中所述从磁盘存储器中读取的与位置有关的数据进一步包括将所述数据保存到RAM以及将所述数据保存到非易失性高速缓存存储器中。
全文摘要
一个非易失性高速缓存包括一个非易失性存储器,非易失性存储器用来缓存存储在大容量存储设备上的数据。
文档编号G06F12/08GK1527973SQ01814365
公开日2004年9月8日 申请日期2001年6月1日 优先权日2000年6月23日
发明者R·库尔森, R 库尔森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1