CN1609824A - 高速缓存器管理 - Google Patents
高速缓存器管理 Download PDFInfo
- Publication number
- CN1609824A CN1609824A CNA2003101196995A CN200310119699A CN1609824A CN 1609824 A CN1609824 A CN 1609824A CN A2003101196995 A CNA2003101196995 A CN A2003101196995A CN 200310119699 A CN200310119699 A CN 200310119699A CN 1609824 A CN1609824 A CN 1609824A
- Authority
- CN
- China
- Prior art keywords
- data
- access
- data segment
- request
- nearest
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中提供了一种方法。这个实施例中的方法可以包含:确定请求的数据是否被存储在存储器中。如果所请求的数据没有被存储在所述存储器中,则所述方法可以包含:确定在所述预定数目的最近数据存取期间是否已经发生了用于存取所请求数据的多个请求。如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则所述方法还可以包含将所请求的数据存储到所述存储器中。当然,在没有背离这个实施例的情况下,许多变动、修改、以及替换都是可能的。
Description
技术领域
本公开涉及高速缓存器管理领域。
背景技术
对存储在高速缓冲存储器中的数据的存取速度可以显著地大于对存储在磁盘存储器中的数据的存取速度。然而,就每一存储单元来说,高速缓冲存储器可能比磁盘存储器要更加昂贵。因此,在包含高速缓冲存储器和磁盘存储器的数据存储系统中,高速缓冲存储器的存储容量可能小于磁盘存储器的存储容量。当数据存储系统接收了一个用于存取在所述系统中存储的数据的请求时,系统可以确定是否能够使用在高速缓冲存储器中存储的数据来满足所述请求。如果能够用在高速缓冲存储器中存储的数据满足所述请求,则系统可以尝试使用在高速缓冲存储器中存储的数据来满足所述请求。相反地,如果使用在高速缓冲存储器中的数据不能满足所述请求,则系统可以使用在磁盘存储器中存储的数据来满足所述请求。可以使用一种高速缓存器管理技术来管理将数据加载到高速缓冲存储器,以及降级(destage)来自高速缓冲存储器的数据。使用的高速缓存器管理技术可以对系统的I/O请求处理速度具有重要的影响。
附图说明
随着以下详细说明的继续进行,并且参考附图,要求保护的主题的实施例的特征和优点将会变得明显,其中相同的数字描述了相同的部件,而且其中:
图1是一个说明了一个系统实施例的图。
图2是依据一个实施例的如下图,所述图说明可以被存储在高速缓冲存储器中的高速缓存器管理信息和用户数据。
图3是依据一个实施例的如下图,所述图说明可以被存储在海量存储器中的数据卷和数据段。
图4是依据一个实施例的如下流程图,所述流程图说明可以在图1的系统中被执行的操作。
图5是依据一个实施例的如下图,所述图说明可以被包括在高速缓冲存储器中的链表中的节点中的数据结构。
图6是依据一个实施例的如下,所述图说明可以被包括在高速缓冲存储器中的链表。
具体实施方式
尽管将参考说明性的实施例继续进行下列详细说明,但是对于本领域技术人员来说它的许多替换、修改、和变化将会是显而易见的。因此,目的在于所要求保护的主题应该被广泛地理解,并且仅仅由附加权利要求中所阐述的加以定义。
图1说明了要求保护的主题的一个系统实施例100。系统100可以包含被耦合到一个芯片组14的主处理器12。主处理器12可以包含例如在市场上可从本主题申请的受让人那里买得到的IntelPentiumIII或者IV微处理器。当然,可选地,主处理器12可以包含其它类型的微处理器,诸如像从除本主题申请的受让人以外的来源中制造和/或在市场上买得到的微处理器,而没有背离这个实施例。
芯片组14可以包含如下主机桥接器/集线器系统,所述主机桥接器/集线器系统可以将主处理器12、系统存储器21、和用户接口系统16相互耦合起来,并且可以耦合到总线系统22。芯片组14还可以包含如下I/O桥接器/集线器系统(未显示),所述I/O桥接器/集线器系统可以把主机桥接器/总线系统耦合到总线22。芯片组14可以包含集成电路芯片,诸如在市场上可从本主题申请的受让人那里买得到的集成电路芯片组中选择出来的那些(例如,图形存储器和I/O控制器集线器芯片组),但是也可以或可选地使用其它集成电路芯片,而没有背离这个实施例。另外,芯片组14可以包含如下中断控制器(未显示),所述中断控制器可以经由一条或多条中断信号线(未显示)耦合到其它组件,诸如像I/O控制器电路卡20,此时电路卡20被插入到电路卡总线扩充槽30中。这个中断控制器可以处理如下中断,所述中断可以由所述中断控制器从系统100中的其它组件经由这些中断信号线加以接收。
在此描述的、在卡20内中所包含的操作电路42未必要被包括在卡20内,但是相反,在没有背离这个实施例的情况下,它可以被包含在其它结构、系统、和/或设备中,所述其他结构、系统、和/或设备例如可以被包含在母板32中,耦合到总线22,并且与在系统100中的其它组件交换数据和/或命令。用户接口系统16可以包含例如键盘、指示设备、和显示系统,它们可允许人类用户向系统100输入命令,并且监控系统100的操作。
总线22可以包含如下总线(以下被称为“PCI总线”),所述总线遵循可从美国俄勒冈州(Oregon)波特兰(Portland)的PCI Special Interest Group中获得的1998年12月18日的Peripheral Component Interconnect(PCI)LocalBus Specification 2.2修订版。可选地,总线22可以改为包含如下总线(以下称为“PCI-X总线”),所述总线遵循可从上述的美国俄勒冈州波特兰的PCISpecial Interest Group中获得的2000年7月24日的PCI-X Specification 1.0a修订版。此外,可选地,总线22可以包含其它类型和配置的总线系统,而没有背离这个实施例。
I/O控制器卡20可以被耦合到一组一个或多个磁盘、光盘、固态、和/或半导体海量存储器设备(在下文中统称为或单称为“海量存储器28”),并且控制它们的操作。在这个实施例中,海量存储器28可以包含例如一个或多个廉价磁盘冗余阵列(RAID)海量存储器设备29。
处理器12、系统存储器21、芯片组14、PCI总线22、和电路卡插槽30可以被包含在单个电路板,诸如系统母板32中。海量存储器28可以被包含在一个或多个相应的如下外壳中,所述外壳可以与其中封装了母板32和包含在母板32中的组件的外壳相独立。可选地,卡20可以被包含在一个可以包含海量存储器28的外壳中。
根据海量存储器28的特定配置和操作特性,I/O控制器卡20可以经由一个或多个网络通信链路或介质44耦合到海量存储器28。卡20可以使用各种不同通信协议中的任何一种通信协议,经由链路44与海量存储器28交换数据和/或命令,所述不同的通信协议例如是小型计算机系统接口(Small Computer SystemsInterface,SCSI)、光纤信道(Fibre Channel,FC)、以太网(Ethernet)、串行先进技术附件(Serial Advanced Technology Attachment,S-ATA)、或传输控制协议/网际协议(TCP/IP)。当然,可选地,I/O控制器卡20可以使用其它通信协议与海量存储器28交换数据和/或命令,而没有背离要求保护的主题的这个实施例。
依据这个实施例,可由控制器卡20使用来与海量存储器28交换数据和/或命令的SCSI协议可以遵循或是兼容如下接口/协议,所述接口/协议描述在American National Standards Institute(美国国家标准学会,ANSI)SmallComputer Systems Interface-2(小型计算机系统接口-2,SCSI-2)ANSIX3.131-1994 Specification中。如果FC协议被控制器卡20使用来与海量存储器28交换数据和/或命令,则它可以遵循或是兼容于如下接口/协议,所述接口/协议描述在ANSI Standard Fibre Channel(FC)Physical and SignalingInterface-3 X3.303:1998 Specification中。可选地,如果Ethernet协议被控制器卡20使用来与海量存储器28交换数据和/或命令,则它可以遵循或是兼容于如下协议,所述协议描述在2000年10月20日公布的Institute ofElectrical and Electronics Engineers公司(IEEE)Std.802.3 2000版中。此外,可选地,如果S-ATA协议被控制器卡20使用来与海量存储器28交换数据和/或命令,则它可以遵循或是兼容于如下协议,所述协议描述在由Serial ATAWorking Group于2001年8月29日公布的“Serial ATA:High Speed SerializedAT Attachment”1.0修订版中。此外,可选地,如果TCP/IP被控制器卡20使用来与海量存储器28交换数据和/或命令,则它可以遵循或是兼容于如下协议,所述协议描述在1981年9月公布的Internet Engineering Task Force(IETF)Request For Comments(RFC)791和793中。
电路卡插槽30可以包含如下PCI扩展槽,所述PCI扩展槽包含一个PCI总线连接器36。连接器36可以电气地和机械地与在电路卡20中所包括的PCI总线连接器34紧密配合。电路卡20还可以包含操作电路42。电路42可以包含一个处理器(例如,IntelPentiumIII或IV微处理器)和相关联的计算机可读存储器(在下文中统称为和/或单称为“处理器40”)。这个相关联的计算机可读存储器可以包含下列类型存储器中的一个或多个:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、快闪存储器、磁盘存储器、和/或光盘存储器。另外地或是可选地,这个计算机可读存储器可以包含其它和/或以后开发的类型的计算机可读存储器。此外,另外地或者可选地,处理器40可以包含其它类型的微处理器,诸如,从除本主题申请的受让人以外的来源中制造和/或在市场上买得到的微处理器,而没有背离这个实施例。
机器可读程序指令可以被存储在与处理器40相关联的计算机可读存储器中。这些指令可以被处理器40存取和执行。当这些指令被处理器40执行时,这些指令可以导致处理器40执行在此被描述为应由处理器40执行的那些操作。
电路42还可以包含一个高速缓冲存储器38。在这个实施例中,高速缓冲存储器38可以包含一个或多个半导体存储器设备。可选地或是附加地,高速缓冲存储器38可以包含磁盘和/或光盘存储器。处理器40能够与高速缓冲存储器38交换数据和/或命令,其可以导致高速缓冲存储器38以如下所述的方式在高速缓冲存储器38中存储数据和/或从高速缓冲存储器38中检索数据。
插槽30和卡20被构造为允许将卡20插入到插槽30中。当卡20正确地插入到插槽30中时,连接器34和36变成彼此电气地和机械地相耦合了。当连接器34和36这样相互耦合时,卡20变成电连接总线22。
如图3所示,RAID 29可以包含多个用户数据卷200和202。当然,如图3所示的用户数据卷的数目仅仅是示范性的,并且RAID 29可以包含任意数目的用户数据卷,而没有背离这个实施例。每一个数据卷200和202可以包含一个相应的逻辑数据卷,所述逻辑数据卷可以跨越海量存储器28中的相应的一组物理磁盘设备(未显示)。例如,数据卷200可以包含多个逻辑用户数据段300A、300B、……、300N,而数据卷202可以包含多个逻辑数据段400A、400B、……、400N。根据在RAID 29中实现的特定RAID技术,在卷200中的每个相应的逻辑数据段300A、300B、……、300N、以及在卷202中的每个相应的逻辑数据段400A、400B、……、400N可以包含相应的多个逻辑上相关的物理数据段(未显示),其中所述物理数据段被分布在多个物理海量存储器设备(未显示)中,并且可以从其中计算和/或获得相应的逻辑数据段。例如,如果在RAID 29中实现了RAID级1(即,镜像),则在卷200中的每个逻辑数据段300A、300B、……、300N、以及在卷202中的每个逻辑数据段400A、400B、……、400N可以包含相应的一对物理数据段(未显示),所述对物理数据段是彼此的拷贝,并且被分布在两个相应的物理海量存储器设备(未显示)中。可选地,可以在RAID 29中实现其它RAID技术,包含例如奇偶校验RAID技术,而没有背离这个实施例。在RAID 29中的每一个逻辑数据段可以具有预定的大小,诸如16或者32千字节(KB)。在RAID 29B中的每一个逻辑数据段可以具有预定的大小,诸如16或者32千字节(KB)。可选地或是附加地,在RAID 29B中的每一个逻辑数据段可以具有预定的大小,所述预订的大小对应于一个预定数目的磁盘带条(disk stripe)。当然,在没有背离这个实施例的情况下,在RAID 29B中的逻辑数据段的数目和大小可以不同。
可以实现在RAID 29中所使用的RAID技术的那些操作可以由如下RAID电路(未显示)实施,所述RAID电路可以被包括在例如主板32、海量存储器28和/或RAID 29内。可选地,卡20可以包含这种RAID电路。依据由RAID 29实现的RAID技术,处理器40可以与这种RAID电路交换数据和/或命令,其可以导致数据段被写入到RAID 29中或是从RAID 29中读取数据。可选地,处理器40可以被编程来仿真这种RAID电路的操作,并且可以与海量存储器28交换数据和/或命令,其可以导致RAID 29在海量存储器28中加以实现。此外,可选地,主处理器12可以被编程来仿真这种RAID电路的操作,并且可以与海量存储器28和/或处理器40交换数据和/或命令,其可以导致在海量存储器28中实现RAID 29。
下面参见图2,依据这个实施例,处理器40可以向高速缓冲存储器38发信号以在高速缓冲存储器38中存储高速缓存器管理数据信息108和用户数据110。由于以下说明的理由,依据一个实施例,高速缓存器管理信息108可以包含多个如下数据结构,所述数据结构包含可以被用来实现一种高速缓存器管理技术的信息。包含在高速缓存器管理信息108中的数据结构可以包含例如双向链表102、位映像数组104、和散列表106。用户数据110可以包含一个或多个(而且在这个实施例中为多个)数据段110A、110B、……、110N。
双向链表102可以包含多个链表节点102A、102B、……、102N。在链表102中,这些节点中的一个(例如节点102A)可以是一个头节点,而这些节点中的另一个节点(例如,节点102N)可以是尾节点。在链表102中的每个相应节点,除尾节点102N以外,都可以包含一个指向在链表102中的、相对于那个相应条目的、朝着尾节点102N方向的下一个后继节点的指针。例如,头节点102A可以包含一个指向相对于头节点102A朝着尾节点102N方向的下一个后继节点102B的指针120A。节点102B可以包含一个指向相对于节点102B朝着尾节点102N方向的下一个后继节点(未显示)的指针120B,等等诸如此类。尾节点102N可以包含一个空指针120N。另外,在链表102中的每个相应节点,除头节点102A以外,都可以包含一个指向在链表102中的上一个前驱节点的指针(未显示)。由于以下描述的理由,每个节点102A、102B、……、102N还可以包含在RAID 29中的一个相应逻辑数据段的一个相应起始地址和/或块标识号122A、122B、……、122N。在一个实施例中,包含在链表102中的节点的最大数目可以等于大约30,000,但是在没有背离这个实施例情况下也可以改变。
位映像数组104包含多个条目104A、104B、……、104N。条目104A、104B、……、104N的数目可以等于包含在RAID 29中的逻辑数据段300A、300B、……、300N和400A、400B、……、400N的的数目。在数组104中的每个条目104A、104B、……、104N可以与包含在RAID 29中的逻辑数据段300A、300B、……、300N和400A、400B、……、400N中的相应的一个相关联。在数组104中的每个条目104A、104B、……、104N可以包含单个相应的比特值,所述比特值可以被设置或者清除。如在此使用的那样,一个比特值在它等于表示第一布尔逻辑条件(例如,真)的值时,被认为是被设置了,反之,一个比特值在它等于表示了与第一布尔逻辑条件相反的第二布尔逻辑条件(例如,假)的值时被认为是被清除了。
散列表106包含如下双向链表散列表,所述双向链表散列表可以包含如下信息,所述信息尤其用于标识在高速缓冲存储器38中的用户数据段110A、110B、……、110N、以及数据段110A、110B、……、110N已经被存取的次序。散列表106还可以包含如下信息,所述信息为在高速缓冲存储器38中的每个数据段110A、110B、……、110N指定所述数据段被认为是“脏的”还是“干净的”。如在此使用的那样,如果当在高速缓冲存储器38中的一个数据段将从高速缓冲存储器38中被降级时,RAID 29没有包含与正从高速缓冲存储器38中被降级的所述数据段完全相同的对应数据段,则所述数据段被认为是“脏的”。相反地,如在此使用的那样,如果当在高速缓冲存储器38中的一个数据段将从高速缓冲存储器38中被降级时,RAID 29已经存储了与正从高速缓冲存储器38中被降级的所述数据段完全相同的对应数据段,则所述数据段被认为是“干净的”。
更具体地说,双向链表散列表106可以包含一个指针数组106A、106B、……、106N,所述指针数组指向相应的双向链表130A、130B、……、130N中的相应的头节点132A、132B、……、132N。在双向链表130A、130B、……、130N中的每个节点可以表示在高速缓存38中存储的相应的数据段。根据和/或按照如下传统的散列函数,每个这样的节点可以与链表130A、130B、……、130N中给定的一个相关联,并且可以被包含在所述给定的一个链表中,其中所述传统的散列函数可以把存储在高速缓冲存储器38中的数据段在RAID 29中的起始地址或数据块标识号映射为到指针数组中的索引。
图5是可以被包含在一个链表130A中的一个示范性节点132A的框图。在链表130A、130B、……、130N中包含的节点中的每一个节点可以具有与节点132A完全相同的结构。如图5所示,节点132A可以包含指针700,指针700指向可以包含节点132A的、在链表130A中的下一个后继节点(未显示)。当然,如果节点132A是链表130A中的尾节点,则指针700可以是空指针。另外,尽管在图中未显示,但是包含在链表130A、130B、……、130N中的每个相应节点,除非所述相应节点是头节点,否则都可以包含如下指针(未显示),所述指针指向包含那个相应节点的、在链表中的上一个前驱节点。节点132A还可以包含一个或多个数据值702,数据值702可以指定和/或表示在高速缓冲存储器38中存储的、正由节点132A表示的数据段的开始地址,以及在卷200和1202中的如下逻辑数据段的起始地址和/或数据块标识号,所述逻辑数据段对应于在高速缓冲存储器38中的数据段。节点132A还可以包含一个比特值704,比特值704指示这个数据段是干净的还是脏的。另外,节点132A可以包含一个指向另一个双向链表600中的下一个节点602B的指针706,如图6所示。也就是说,在链表130A、130B、……、130N中的所有节点也可以被包括在双向链表600中。在链表600中包含的节点的从头节点602A到尾节点602N的相应次序可以指示由在链表600中的这些节点表示的数据段的存取次序。因此,例如,头节点602A可以表示在高速缓冲存储器38中的最近使用的(most recently used,MRU)数据段,而尾节点602N可以表示在高速缓冲存储器38中的最近最少使用的(least reeently used,LRU)数据段。
依据将在系统100中实现的一个实施例,由处理器40执行的固件程序指令尤其可以导致卡20向高速缓冲存储器38发出适当的如下控制信号,所述控制信号可以允许将各操作包括到高速缓存器管理技术中。图4是依据一个实施例的如下流程图,所述流程图说明了可以在系统100中执行的这些及其它操作500。
响应于例如从主处理器12中接收一个用于存取在RAID 29中存储的数据的请求,诸如在图4中的操作502,在卡20中的处理器40可以执行一个或多个固件子程序和/或过程。如在此使用的那样,“用于存取数据的请求”可以包含写或读数据的请求。例如,主处理器12可以向处理器40发出用于存取一个包含在卷200和202中的数据段(例如数据段300A)的请求。当这些一个或多个固件子程序和/或过程由处理器40执行时,它们可以导致处理器40确定所请求的数据段300A当前是否被存储在高速缓冲存储器38中,如在图4中的操作504所说明的。处理器40可以至少部分地根据散列表106中的内容确定上述。更具体地说,使用与散列表106相关联的散列函数,处理器40可以至少部分地根据所请求的数据段300A的起始地址或数据块标识号,生成一个散列表关键字。处理器40可以使用这个散列表关键字作为到指针数组106A、106B、……、106N中的索引。如果在指针数组106A、106B、……、106N中的指针(例如指针106A)按照所述散列表关键字被索引,则处理器40可以查找包含在链表(例如,链表130A)中的如下的一个或多个节点,以试图在那个链表130A中找到一个可以表示所请求的数据段300A的节点,所述一个或多个节点的头节点(例如,头节点132A)被那个选择的指针106A指向。如果在链表130A中存在这样的一个节点,则处理器40可以确定所请求的数据段300A被存储在高速缓冲存储器38中(即,一个数据段,诸如像数据段110A,对应于所请求的数据段300A,可以被存储在高速缓冲存储器38中)。
如果处理器40确定所请求的数据段300A被存储在高速缓冲存储器38中(例如,与数据段110A相对应),则处理器40可以向高速缓冲存储器38发信号。这可以导致数据段110A(以及它的对应数据段300A)被指定为在高速缓冲存储器38中的MRU数据段,如在图4中的操作508所说明的。处理器40可以通过检查在链表600中的节点的次序来实现上述,并且如果表示数据段110A的节点132A不是链表600中的头节点602A,则处理器40可以修改在节点132A、132B、……、132N中的一个或多个指针706,以便使节点132A变为头节点602A。处理器40然后可以使用在高速缓冲存储器38中的数据段110A来满足从主处理器12接收的数据存取请求,如在图4中的操作510所说明的。也就是说,根据从主处理器12接收的数据存取请求是请求读操作还是写操作,处理器40可以向高速缓冲存储器38发信号以执行数据段110A的读取,并且可以把从段110A中读取的数据转发到处理器12,或是处理器40可以向高速缓冲存储器38发信号以执行向数据段110A的写入。
相反地,如果作为操作504的结果,处理器40确定请求的数据段300A没有被存储在高速缓冲存储器38中,则处理器40可以确定在由主处理器12请求的数据的预定数目的最近在前存取期间,是否发生了存取所请求数据段300A的预定的多个请求,如在图4中的操作506所说明的。处理器40可以至少部分地根据位映像数组104的检查来进行由操作506所说明的确定。更具体地说,如先前陈述的那样,高速缓冲存储器38可以存储包含条目104A、104B、……、104N的位映像数组104。每个条目104A、104B、……、104N可以与包含在RAID 29中的相应数据段300A、300B、……、300N、400A、400B、……、400N相关联。如果设置了一个给定条目(例如条目104A)的值,则这表示处理器40已经将在RAID 29中的、与给定条目104A相关联的数据段(例如,数据段300A)指定为要存储在高速缓冲存储器38的用户数据部分110中的一个可能的候选者(candidate)。如果在由主处理器12请求的数据的预定数目M的最近在前存取期间,与给定条目104A相关联的数据段300A被存取了预定数目N次,那么处理器40可以向高速缓冲存储器38发信号以设置给定条目104A的值。根据由选择的N和M的值产生的系统100的性能,可以凭经验选择N和M的值,以便允许系统100呈现出期望的性能级。在这个实施例中,N可以大于或等于1,而M可以等于大约30,000。在下面的说明中,N和M的值分别是1和30,000。也就是说,如果在由主处理器12发出的最近在前的30,000个数据存取请求期间,与条目104A相关联的数据段300A已经被存取了1次,则可以设置条目104A的值。可选地,N和M的值可以改变,而没有背离这个实施例。例如,N可以大于或等于2或3,而没有背离这个实施例。
在这个实施例中,如果在由主处理器12请求的数据的最后M+1次在前存取期间,已经发生了存取所请求数据段300A的N+1个请求,则作为操作506的结果,处理器40可以确定在由主处理器12请求的数据的预定数目的最近在前存取期间,已经发生了存取所请求数据段300A的预定多个请求。相反地,如果在由主处理器12请求的数据的最后M+1次在前存取期间,没有发生存取所请求数据段300A的N+1个请求,则作为操作506的结果,处理器40可以确定在由主处理器12请求的数据的预定数目的最近在前存取期间,没有发生存取所请求数据段300A的预定多个请求。因此,在作为操作502的结果从主处理器12中接收了存取数据段300A的最近请求之后,当处理器40检查条目104A时,如果设置了条目104A的值,则作为操作506的结果,处理器40可以确定在由主处理器12请求的数据的预定数目的最近在前存取期间,已经发生了存取所请求数据段300A的预定多个请求。相反地,在作为操作502的结果从主处理器12中接收了存取数据段300A的最近请求之后,当处理器40检查条目104A时,如果没有设置条目104A的值,则作为操作506的结果,处理器40可以确定在由主处理器12请求的数据的预定数目的最近在前存取期间,没有发生存取所请求数据段300A的预定多个请求。
如果作为操作506的结果,处理器40确定在由主处理器12请求的数据的预定数目的最近在前存取期间,已经发生了存取所请求数据段300A的预定多个请求,则处理器40可以排除所请求数据段300A作为要存储在高速缓冲存储器38中的候选者,如由图4中的操作512所说明的。处理器40可以通过向高速缓冲存储器38发信号来实现上述。这可以导致高速缓冲存储器38清除在条目104A中的值。在作为操作512的结果已经清除了在条目104A中的值之后,如果目前存储在高速缓冲存储器38中的LRU用户数据段必须被重写,以便能够在高速缓冲存储器38中存储请求的数据段300A,则处理器40可以降级目前存储在高速缓冲存储器38中的LRU用户数据段并且使其无效。例如,如果数据段110N是目前存储在高速缓冲存储器38中的LRU用户数据段,则数据段110N可以由在链表600中的尾节点602N表示。处理器40可以定位尾节点602N,并且可以检查尾节点602N以确定数据段110N是由尾节点602N表示。尔后,处理器40可以向高速缓冲存储器38和海量存储器28发信号。这可以导致把数据段110N降级到RAID 29,并且还可以导致重写在尾节点602N中的一个或多个值(未显示),以指示数据段110N现在可以被重写。可选地,如果在高速缓冲存储器38值存在足够的存储空间用于在高速缓冲存储器38中存储请求的数据段300A,而不用重写LRU数据段110N,则在系统100中可以不执行操作516。不论发生哪种情况,处理器40可以向高速缓冲存储器38发信号以将所请求的数据段300A指定为在高速缓冲存储器38中的MRU数据段,并且将数据段300A存储到高速缓冲存储器38中(例如,作为是数据段300A的拷贝的一个相应数据段110N),分别如由图4中的操作518和520所说明的。更具体地说,处理器40可以向高速缓冲存储器38发信号,以在散列表106中包含一个表示所请求数据段300A的新节点(和它在高速缓冲存储器38中的相应数据段110N)。这可以导致高速缓冲存储器38在散列表106中在链表600的开始处(作为新的头节点602A)插入如下新节点,所述新节点表示所请求数据段300A(和它的相应数据段110N),并且还可以导致修改在节点132A、132B、……、132N中的、先前存在于链表600中的一个或多个指针706,以便使这个新的节点变为头节点602A。这可以导致把数据段300A(和它的相应数据段110N)指定为在高速缓冲存储器38中的MRU数据段。
在作为操作520的结果把所请求的数据段300A已经存储在高速缓冲存储器38中之后,处理器40然后可以使用在高速缓冲存储器38中的、包含所请求数据段300A的拷贝的数据段110N,来满足从主处理器12中接收的数据存取请求,如由图4中的操作522所说明的。也就是说,根据从主处理器12接收的数据存取请求是请求读操作还是写操作,处理器40可以向高速缓冲存储器38发信号,以执行数据段110N的读取并且可以把从段110N中读取的数据转发到处理器12,或是处理器40可以向高速缓冲存储器38发信号以执行向数据段110N的写入。
相反地,如果作为操作506的结果,处理器40确定在由主处理器12请求的数据的预定数目的最近在前存取期间,没有发生存取所请求数据段300A的预定多个请求,则处理器40可以排除作为要存储在高速缓冲存储器38中的候选者的如下LRU数据段,所述LRU数据段目前被指定为要存储在高速缓冲存储器38中的候选者,如由图4中的操作514所说明的。更具体地说,如先前陈述的那样,链表102可以包含多个链表节点102A、102B、……、102N,其中,节点102A是头节点,而节点102N是尾节点。在这个实施例中,可以被包含在链表102中的节点的最大数目可以是预先确定的,并且可以等于M。可以被包含在链表102中的每个节点102A、102B、……、102N可以表示在RAID 29中的相应逻辑数据段,所述相应逻辑数据段目前被指定为要存储在高速缓冲存储器38中的候选者。也就是说,在链表102中的每个相应节点102A、102B、……、102N可以包含一个或多个相应的值,诸如,可以表示和/或指定在RAID 29中的、正由那个相应节点表示的相应逻辑数据段的起始地址和/或块标识号122A、122B、……、122N。包含在链表102中的节点的从头节点102A到尾节点102N的相应次序可以表示由在链表102中的这些节点表示的数据段的存取次序。因此,例如,头节点102A可以表示是要存储在高速缓冲存储器38中的候选者的MRU数据段,而尾节点102N可以表示是要存储在高速缓冲存储器38中的候选者的LRU数据段。在操作514中,如果在链表102中的节点的数目等于预定的最大数目,则处理器40可以向高速缓冲存储器38发信号以从链表102中除去尾节点102N。这可以导致排除由尾节点102N表示的、作为要存储在高速缓冲存储器38中的候选者的LRU数据段。尔后,处理器40可以向高速缓冲存储器38发信号,以改变在数组104中的条目104A的值,从而将所请求的数据段300A指定为要存储在高速缓冲存储器38中的候选者,如由图4中的操作524所说明的。处理器40可以插入一个新节点,所述新节点作为链表102中的新的头节点,所述新节点可以表示所请求数据段300A,并且处理器40还可以修改指针120A、120B、……、120N,以便使这个新节点变为头节点102A。这可以导致把数据段300A指定为要存储在高速缓冲存储器38中的候选者的MRU数据段,如由图4中的操作526所说明的。处理器40然后可以使用存储在RAID29中的数据段300A来满足来自主处理器12的数据存取请求,如在图4中的操作528所说明的。
尽管在所述图中未显示,但是除了操作500之外,在系统100中也可以执行其它操作。例如,这种附加操作可以采用例如如下方式检测一个或多个存取连续数据段的请求,所述方式描述在于2001年12月21日提出的、名为“SequentialData Transfer Detection”的共同待审的美国专利申请10/028,065(代理人文档号P13316)中。这个共同待审的美国专利申请被转让给本主题申请的受让人。在系统100中,由这种存取请求所请求的连续数据段可以被存储在高速缓冲存储器38中,而不考虑它们先前是否已经被指定为要存储在高速缓冲存储器38中的候选者。在由这种存取请求所请求的所有数据段已经被存储在高速缓冲存储器38中之后,它们可以被降级到海量存储器28中,并且在散列表106中被指定为在高速缓冲存储器38中的LRU数据段。
另外,高速缓冲存储器38中的一个部分(未显示)可以被指定为供涉及一个或多个数据段的写缓冲操作使用。在这种写缓冲操作中,正被写入到海量存储器28中的一个或多个数据段可以首先被写入到高速缓冲存储器38中。在数据段已经被写入到高速缓冲存储器38中之后,即使实际上它们还没有被写入到海量存储器28中,处理器40也可以向主处理器12指示它们已经被写入到海量存储器28中了。尔后,处理器40可以向高速缓冲存储器38发信号以把这些数据段降级到海量存储器28中。
此外,在此被描述为在高速缓存器管理信息108中包括的数据结构仅仅是示范性的,并且在高速缓存器管理信息108中可以包含其它和/或另外的数据结构,而没有背离这个实施例。例如,为了在高速缓冲存储器38中消耗更少的存储空间,高速缓存器管理信息108不使用位映像数组104来指定在RAID 29中的、可以作为要存储在高速缓冲存储器38中的候选者的数据段,而替换地可以使用具有如下节点的散列表,所述节点可以被用来表示这种数据段。
同时,可选地,在位映像104中的每个条目104A、104B、……、104N中的相应位数可以大于1。在这个替换的方案中,在每个相应条目104A、104B、……、104N中包含的相应值可以被初始化(例如,在系统100复位之后)成等于一个预定值。尔后,每当存取在RAID 29中的一个相应数据段时,在位映像104中的、对应于那个相应数据段的相应条目中包含的相应值可以被递减(或者递增)。尔后,如果包含在位映像104的相应条目中的相应值变为等于在RAID 29中的数据段的最近存取的预定数目内的另一个预定值,则这可以导致将在RAID 29中的、对应于那个相应条目的相应数据段拷贝到高速缓冲存储器38中。
另外,电路42、母板32、和/或海量存储器28可以包含一个或多个备用的和/或辅助的电源系统(未显示),所述备用的和/或辅助的电源系统可以在给电路42、母板32、和/或海量存储器28供电的主要启动电源受损和/或故障的情况下,向电路42、母板32、和/或海量存储器28提供启动的电源。这些一个或多个备用的和/或辅助的电源系统可以包含一个或多个电池,可以在这种受损和/或故障的情况下从其中向电路42、母板32、和/或海量存储器28提供启动电源,以便允许电路42、母板32、和/或海量存储器28至少暂时地继续工作,并且由此防止在系统100中的数据的受损和/或破坏。
此外,在没有背离这个实施例的情况下,高速缓存器管理信息108和/或数据段110的至少一部分可以被存储在一个或多个其它(未显示)高速缓冲存储器中,除高速缓冲存储器38以外。这些一个或多个其它高速缓冲存储器可以位于例如卡20、母板32、海量存储器28、和/或RAID 29中。这些一个或多个高速缓冲存储器的操作可以由主处理器12、处理器40、和/或位于例如卡20、海量存储器28和/或RAID 29中的一个或多个其它处理器(未显示)控制。此外,高速缓存器管理信息108的至少一部分可以被存储在如下高速缓冲存储器中,所述高速缓冲存储器不同于数据段110的至少一部分被存储在其中的高速缓冲存储器。
因此,概括地说,在一个系统实施例中,提供了一个能够耦合到一个或多个海量存储器设备的电路卡。所述电路卡可以包含高速缓冲存储器和电路。所述电路能够确定请求的数据是否被存储在高速缓冲存储器中。如果所请求的数据没有被存储在高速缓冲存储器中,则所述电路还能够确定在预定数目的最近数据存取期间,是否已经发生了用于存取所请求数据的多个请求。另外,如果在所述预定数目的最近数据存取期间,已经发生了用于存取所请求数据的多个请求,则所述电路能够将所请求的数据存储到所述高速缓冲存储器中。有益地,这个系统实施例可以实现一种高效的高速缓存器管理技术,它可以改善所述系统实施例可以处理存取数据的请求的速度。更具体地说,在这个系统实施例中,只有在预定数目的最近发生的数据存取请求之内,已经有了用于存取所述数据段的预定的多个先前请求之后,所请求的数据段才可以被存储在高速缓冲存储器中。如果在所述预定数目的最近发生的数据存取请求之内,已经发生了这种预定的多个先前请求,则可以指示很可能不久将进行对所请求数据段的存取。因此,由于在这个系统实施例中,只有当很可能不久将再次发生对那个数据段的存取时,才可以把请求的数据段存储在高速缓冲存储器中,所以通过实现这种高速缓冲存储器管理技术,可以改善处理数据存取请求的效率和速度。
在此已经使用的术语和表述是用于描述而不是限制性的,而且在使用这种术语和表述时没有意图排除所显示和描述(或其中部分)的特征的任一等效表述,并且认识到在权利要求的范围内可能进行各种修改。因此,权利要求是用来涵盖所有这种等效表述。
Claims (25)
1.一种方法,包含:
确定请求的数据是否被存储在存储器中;
如果所请求的数据没有被存储在所述存储器中,则确定在预定数目的最近数据存取期间是否已经发生了用于存取所请求数据的多个请求;以及
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则将所请求的数据存储到所述存储器中。
2.如权利要求1所述的方法,还包括:
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则从所述存储器中降级最近最少使用的数据。
3.如权利要求1所述的方法,还包括:
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则将所请求的数据指定为在所述存储器中的最近使用的数据。
4.如权利要求1所述的方法,还包括:
如果在所述预定数目的最近数据存取期间已经发生了比所述用于存取所请求数据的多个请求更少的请求,则:
将所请求的数据指定为要存储在所述存储器中的一个可能的候选者;以及
通过存取在海量存储器中的至少一个数据段,至少部分地满足用于存取所请求数据的最近请求。
5.如权利要求4所述的方法,还包括:
将所述至少一个数据段指定为在所述海量存储器中最近使用的数据段;以及
取消在所述海量存储器中的另一个数据段作为要存储在所述存储器中的一个可能候选者的先前指定,所述另一个数据段是在所述海量存储器中先前存取的数据段。
6.如权利要求1所述的方法,其中:
所述预定数目的最近数据存取包含两个或更多的最近数据存取。
7.如权利要求1所述的方法,其中:
所请求的数据包含至少一个数据段;以及
用于存取所请求数据的请求中的每一个请求读取所请求的数据和向所请求数据中写入中的一个。
8.一种装置,包含:
电路,用于确定请求的数据是否被存储在存储器中,并且用于确定在所请求的数据没有被存储在所述存储器的情况下,在预定数目的最近数据存取期间是否已经发生了用于存取所请求数据的多个请求,并且所述电路还能够在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求的情况下,将所请求的数据存储到所述存储器中。
9.如权利要求8所述的装置,其中:
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则所述电路还能够从所述存储器中降级最近最少使用的数据。
10.如权利要求8所述的装置,其中:
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则所述电路还能够将所请求的数据指定为在所述存储器中的最近使用的数据。
11.如权利要求8所述的装置,其中:
如果在所述预定数目的最近数据存取期间已经发生了比用于存取所请求数据的多个请求更少的请求,则所述电路还能够:
将所请求的数据指定为要存储在所述存储器中的一个可能的候选者;以及
通过存取在海量存储器中的至少一个数据段,至少部分地满足用于存取所请求数据的最近请求。
12.如权利要求11所述的装置,其中:所述电路还能够:
将所述至少一个数据段指定为在所述海量存储器中最近使用的数据段;以及
取消在所述海量存储器中的另一个数据段作为要存储在所述存储器中的一个可能候选者的先前指定,所述另一个数据段是在所述海量存储器中先前存取的数据段。
13.如权利要求8所述的装置,其中:
用于存取所请求数据的多个请求包含3个或更多的最近数据存取。
14.如权利要求8所述的装置,其特征在于:
所请求的数据包含至少一个数据段;以及
用于存取所请求数据的请求中的每一个请求读取所请求的数据和向所请求数据中写入中的一个。
15.一种物品,包含:
已经在上面存储了如下指令的存储介质,当所述指令被机器执行时导致下列操作:
确定请求的数据是否被存储在存储器中;
如果所请求的数据没有被存储在所述存储器中,则确定在预定数目的最近数据存取期间是否已经发生了用于存取所请求数据的多个请求;以及
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则将所请求的数据存储到所述存储器中。
16.如权利要求15所述的物品,其特征在于:
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则当所述指令被机器执行时还导致如下操作:从所述存储器中降级最近最少使用的数据。
17.如权利要求15所述的物品,其中:
如果在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求,则当所述指令被机器执行时还导致如下操作:将所请求的数据指定为在所述存储器中的最近使用的数据。
18.如权利要求15所述的物品,其中:
如果在所述预定数目的最近数据存取期间已经发生了比用于存取所请求数据的多个请求更少的请求,则当所述指令被机器执行时还导致如下操作:
将所请求的数据指定为要存储在所述存储器中的一个可能的候选者;以及
通过存取在海量存储器中的至少一个数据段,至少部分地满足用于存取所请求数据的最近请求。
19.如权利要求18所述的物品,其中:
当所述指令被机器执行时还导致如下操作:
将所述至少一个数据段指定为在所述海量存储器中最近使用的数据段;以及
取消在所述海量存储器中的另一个数据段作为要存储在所述存储器中的一个可能候选者的先前指定,其中所述另一个数据段是在所述海量存储器中先前存取的数据段。
20.如权利要求15所述的物品,其中:
所述预定数目的最近数据存取包含两个或更多的最近数据存取。
21.如权利要求15的物品,其中:
所请求的数据包含至少一个数据段;以及
用于存取所请求数据的请求中的每一个请求读取所请求的数据和向所请求数据中写入中的一个。
22.一种系统,包含:
一个或多个海量存储器设备;
能够耦合到所述一个或多个海量存储器设备的电路卡,所述电路卡包含高速缓冲存储器和如下电路,所述电路能够:
确定所请求的数据是否被存储在所述高速缓冲存储器中;
确定在所请求的数据没有被存储在所述高速缓冲存储器中的情况下,在所述预定数目的最近数据存取期间是否已经发生了用于存取所请求数据的多个请求;以及
在所述预定数目的最近数据存取期间已经发生了用于存取所请求数据的多个请求的情况下,将所请求的数据存储到所述高速缓冲存储器中。
23.如权利要求22所述的系统,其中:
所述一个或多个海量存储器设备包含一个廉价磁盘冗余阵列;以及
所述电路包含一处理器。
24.如权利要求22所述的系统,其中:
所述一个或多个海量存储器能够存储多个数据卷;
所述数据卷中的每一个都包括一个或多个数据段;
所请求的数据包含至少一个数据段;以及
所述电路能够从所述一个或多个海量存储器设备中检索所述至少一个数据段,并将所述至少一个数据段存储到所述高速缓冲存储器中。
25.如权利要求22所述的系统,还包括:
一个或多个网络通信链路,用于把所述一个或多个海量存储器设备耦合到所述电路卡;以及
包含一条总线的电路板,所述电路卡能够被耦合到所述总线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101196995A CN1311367C (zh) | 2003-10-23 | 2003-10-23 | 用于提高存取数据请求的处理速度的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101196995A CN1311367C (zh) | 2003-10-23 | 2003-10-23 | 用于提高存取数据请求的处理速度的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1609824A true CN1609824A (zh) | 2005-04-27 |
CN1311367C CN1311367C (zh) | 2007-04-18 |
Family
ID=34761406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101196995A Expired - Fee Related CN1311367C (zh) | 2003-10-23 | 2003-10-23 | 用于提高存取数据请求的处理速度的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1311367C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161952A (zh) * | 2016-08-08 | 2016-11-23 | 广东欧珀移动通信有限公司 | 一种对焦方法、装置及移动终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829029A (en) * | 1996-12-18 | 1998-10-27 | Bull Hn Information Systems Inc. | Private cache miss and access management in a multiprocessor system with shared memory |
US6141733A (en) * | 1998-02-17 | 2000-10-31 | International Business Machines Corporation | Cache coherency protocol with independent implementation of optimized cache operations |
US6393525B1 (en) * | 1999-05-18 | 2002-05-21 | Intel Corporation | Least recently used replacement method with protection |
-
2003
- 2003-10-23 CN CNB2003101196995A patent/CN1311367C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106161952A (zh) * | 2016-08-08 | 2016-11-23 | 广东欧珀移动通信有限公司 | 一种对焦方法、装置及移动终端 |
CN106161952B (zh) * | 2016-08-08 | 2019-06-11 | Oppo广东移动通信有限公司 | 一种对焦方法、装置及移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN1311367C (zh) | 2007-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6243795B1 (en) | Redundant, asymmetrically parallel disk cache for a data storage system | |
US7882304B2 (en) | System and method for efficient updates of sequential block storage | |
EP0077452B1 (en) | Data promotion in storage subsystems | |
US7213110B2 (en) | Destaging method for storage apparatus system, and disk control apparatus, storage apparatus system and program | |
CN104025059B (zh) | 用于数据存储存储器的空间收回的方法和系统 | |
US8112679B2 (en) | Data reliability bit storage qualifier and logical unit metadata | |
US7321955B2 (en) | Control device, control method and storage medium recording a control program for controlling write-back schedule of data from cache memory to a plurality of storage devices | |
EP1876519A2 (en) | Storage system and write distribution method | |
US8219749B2 (en) | System and method for efficient updates of sequential block storage | |
CN1527973A (zh) | 非易失性高速缓存 | |
US8549220B2 (en) | Management of write cache using stride objects | |
JPS5845611A (ja) | 周辺メモリ・システム | |
US6782444B1 (en) | Digital data storage subsystem including directory for efficiently providing formatting information for stored records | |
US6918020B2 (en) | Cache management | |
US7234021B1 (en) | Methods and apparatus for accessing data elements using improved hashing techniques | |
JPS6326417B2 (zh) | ||
CN1311367C (zh) | 用于提高存取数据请求的处理速度的方法、装置和系统 | |
US6842843B1 (en) | Digital data storage subsystem including arrangement for increasing cache memory addressability | |
US20080059706A1 (en) | Storage apparatus, storage system and control method for storage apparatus | |
US8140800B2 (en) | Storage apparatus | |
US11182307B2 (en) | Demoting data elements from cache using ghost cache statistics | |
US6397295B1 (en) | Cache mechanism for shared resources in a multibus data processing system | |
EP0665499A2 (en) | Hierarchic data storage system | |
JP3303011B2 (ja) | 半導体メモリ装置 | |
US6594726B1 (en) | Digital data storage subsystem including arrangement for efficiently controlling fast write storage operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070418 Termination date: 20121023 |