自适应高速缓存的制作方法

文档序号:6503855阅读:133来源:国知局
专利名称:自适应高速缓存的制作方法
背景技术领域
本公开涉及用于自适应高速缓存的技术。
2、相关领域描述网络附属存储(NAS)设备具有由几种原因造成的延迟。这些延迟包括网络路由器和子网。这些延迟与传统的延迟相耦合,所述传统延迟与任何存储系统中的不同访问模式分配和定位相关联。
常规的存储平台使用先来先服务(FCFS)技术以用于处理网络请求。有时,I/O处理器基于盘头位置使用电梯调度来处理I/O请求。也就是说,对同一盘头位置处的数据块的I/O请求被同时处理。
常规的I/O处理器通常忽略接收I/O请求所跨越的几何距离。代替地,常规的I/O处理器仅对于吞吐量(每秒的I/O数)被最优化。
因此,在本领域中需要改进高速缓存和I/O请求处理技术。
附图简述现在参考附图,其中相同的附图标记始终表示相应的部分。


图1A示出了实现特定实施例的计算环境;图1B示出了可以实现特定实施例的计算环境的进一步的细节;图2A示出了根据特定实施例的存储机架;图2B示出了根据特定实施例的存储子系统的进一步的细节;图2C示出了根据特定实施例的I/O处理器的进一步的细节;图2D示出了根据特定实施例的I/O处理器的地址空间使用的进一步的细节;图3示出了贝叶斯定理的一般形式;图4示出了根据实施例的概率计算;图5A、5B、5C、5D和5E示出了根据特定实施例的高速缓存的操作;
图6A和6B示出了根据特定实施例的非易失性写高速缓冲存储器和易失性读高速缓冲存储器;图7示出了根据特定实施例在高速缓存中为数据块腾出空间所执行的操作;以及图8示出了计算机系统的一种实施例。
实施例的详细描述在下面的描述中,参考构成下文的一部分并且示出了几种实施例的附图。应当理解,可以采用其他实施例,并且在不脱离本发明的精神和范围的情况下可以对结构和操作进行改变。
在特定实施例中,提供了硬件、固件和/或软件来支持自适应高速缓存技术以便对网络附属计算设备(例如客户机)所经历的等待时间进行标准化,并且学习对应于更为高效的预取的访问模式。特定实施例提供了一种用于执行自适应高速缓存的I/O处理器(IOP)。
图1A示出了实现特定实施例的计算环境。各种计算设备102a、102b、102c、102d和102e经由网络176连接到存储子系统140。例如,所述计算设备可以是位于阿拉斯加州安克雷奇的服务器102a、手持式个人计算机102b、位于伊利诺斯州芝加哥的服务器102c、位于数据中心的服务器102d以及位于德克萨斯州休斯顿的客户机102e。例如,网络176可以是局域网(LAN)、因特网、广域网(WAN)、存储区域网络(SAN)、WiFi(电气和电子工程师协会(IEEE)802.11b,于1999年9月16日公布)、无线LAN(IEEE 802.11b,于1999年9月16日公布)等等。也就是说,存储子系统140连接到发出I/O请求的网络附属客户机和服务器计算设备102a、102b、102c、102d和102e。
图1B示出了可以实现特定实施例的计算环境的进一步的细节。主机计算机103包括一个或多个中央处理单元(CPU)104、易失性存储器106、非易失性存储装置108(例如磁盘驱动器、光盘驱动器、磁带驱动器等等)、操作系统110以及一个或多个网络适配器128。操作系统110可以包括操作系统驱动器,例如操作系统功率管理(OSPM)驱动器111。此外,一个或多个存储驱动器120以及一个或多个应用程序124在存储器106中执行,并且能够经由网络176发送和接收来自远程存储子系统140的分组。
主机计算机102e可以包括本领域中已知的任何计算设备,例如大型机、服务器、个人计算机、工作站、膝上型电脑、手持式计算机、电话设备、网络器件、虚拟设备,存储控制器等等。计算设备102a、102b、102c、102d和/或102e可以实现主机计算机104的体系结构。可以使用本领域中已知的任何CPU104和操作系统110。作为存储器管理操作的一部分,存储器106中的程序和数据可以被交换到存储装置108中。
存储子系统140包括连接到存储通道240的存储服务器200(即一种计算设备),该存储通道240连接到一个或多个存储设备230(例如作为独立盘冗余阵列(RAID)系统的一部分的盘驱动器)。存储设备230也可以被称作I/O子系统230。
每个网络适配器128包括在网络适配器112的硬件中实现的各种组件。每个网络适配器112能够经由网络176发送和接收数据分组。
每个存储驱动器120在存储器106中执行并且包括特定于网络适配器112的命令,以便与每个网络适配器112进行通信以及在操作系统110和每个网络适配器112之间进行接口。每个网络适配器112或存储驱动器120实现用来处理分组的逻辑,例如用于处理包括在被包裹在传输层内的分组中的消息内容的传输协议层,比如传输控制协议(TCP)(Internet工程任务组(IETF)请求注释(RFC)793,1981年9月公布)和/或因特网协议(IP)(IETF RFC 791,1981年9月公布)、因特网小型计算机系统接口(iSCSI)(IETF RFC 3347,2003年2月公布)、光纤通道(IETF RFC 3643,2003年12月公布)或者本领域中已知的任何其他传输层协议。所述传输协议层对来自所接收的传输控制协议/因特网协议(TCP/IP)分组的有效载荷进行解包,并且把数据传送到存储驱动器120以便返回到应用程序124。此外,发送数据的应用程序124把该数据发送到存储驱动器120,然后该存储驱动器120在经由网络176发送之前把该数据发送到传输协议层以便打包在TCP/IP分组中。
总线控制器134允许每个网络适配器112在计算机总线160上进行通信,该计算机总线160包括本领域已知的任何总线接口,比如周边组件互连(PCI)总线(PCI专业兴趣小组,PCI局域总线规格,Rev 2.3,2002年3月公布)、小型计算机系统接口(SCSI)(美国国家标准化组织(ANSI)SCSI控制器命令-2(SCC-2)NCITS.3181998)、串行ATA(SATA 1.0a规格,2003年2月4日公布)等等。网络适配器112包括用于实现物理通信层132的网络协议,以便经由网络176发送网络分组到远程数据存储装置以及接收来自远程数据存储装置的网络分组。在特定实施例中,网络适配器112可以实施以太网协议(IEEE标准802.3,2002年3月8日公布)、光纤通道(IETF RFC 3643,2003年12月公布)或者本领域中已知的任何其他网络通信协议。
网络适配器112包括输入/输出(I/O)控制器130。在特定实施例中,该I/O控制器130可以包括因特网小型计算机系统接口(iSCSI控制器),可以理解,还可以使用其他类型的网络控制器,比如以太网介质访问控制器(MAC)或者网络接口控制器(NIC)或卡。
存储器108可以包括内部存储设备或者附属的或可网络可访问的存储装置。存储装置108中的程序被下载到存储器106中并由CPU 104执行。使用输入设备150来提供用户输入给CPU 104,该输入设备150可以包括键盘、鼠标、指示笔、麦克风、触敏显示屏或者本领域已知的任何其他激活或输入机制。输出设备152能够呈现从CPU 104或者诸如显示监控器、打印机、存储装置等其他组件传送来的信息。
在特定实施例中,除了一个或多个存储驱动器120以外,主机计算机103还可以包括其他驱动器,例如执行传输协议层的功能的传输协议驱动器(未示出)。
网络适配器112可以包括额外的硬件逻辑来执行额外操作,以便处理从计算机103或网络176接收的分组。此外,网络适配器112可以实现传输层卸载引擎(TOE),以便在网络适配器中实现与计算机存储驱动器120相反的传输协议层,从而进一步减轻主机计算机的处理负担。或者,所述传输层可以在存储驱动器120中实现。
在特定实施例中,各种结构和/或缓冲器(未示出)可以存在于存储器106中或者位于与存储器106分开的存储单元中。
图2A示出了根据特定实施例的存储机架242。该存储机架242包括一个高可用性的高速底板(backplane),该底板用于与存储区域网络(SAN)上的服务器的外部网络连接。其中一个服务器是具有I/O处理器的存储服务器200,该I/O处理器连接到存储总线(即一种存储连接240),该存储总线连接到存储设备230。图2A提供了具有网络附属存储的企业存储拓扑的例子,以便解释如何可以将特定实施例扩展到跨越存储区域网络(SAN)和具有I/O处理器的存储服务器的企业域中。
图2B示出了根据特定实施例的存储子系统140的进一步的细节。存储子系统140包括存储服务器200、小型计算机系统接口(SCSI)或者光纤通道接口(即各种类型的通信路径240)以及存储设备230。存储服务器200包括一个I/O处理器210。特定的实施例被实现在可以从因特尔公司获得的IntelXScaleTMI/O处理器中。在特定实施例中,I/O子系统230由I/O处理器210控器。在特定实施例中,存储设备230可以被描述为NAS单元。在特定实施例中,I/O处理器210可以存在于存储服务器200的主板上或者是芯片组的一部分。I/O处理器210是具有专用于存储的操作环境的智能处理器(例如,I/O处理器210包括用于诸如RAID和iSCSI系统的应用的固件/软件)。I/O处理器210管理从存储设备130到主机计算机103CPU 140的数据传送,反之亦然。在特定实施例中,I/O处理器210附属于广域网(WAN)(例如因特网),并且经由iSCSI协议与客户机进行通信。
存储服务器200还包括由I/O处理器210使用的同步动态随机存取存储器(SDRAM)212和闪存214。由I/O处理器210管理的存储器段(高速缓冲存储器216)是由电池支持的,因此允许用作后写(post-write)高速缓冲存储器(即用于存储写事务并且起到缓冲区高速缓存的作用)。例如,高速缓冲存储器216可以是动态随机存取存储器(DRAM)或者静态随机存取存储器(SRAM)。SCSI或光纤通道控制器218用于连接到SCSI或光纤通道接口240。在特定实施例中,集成驱动电子装置(IDE)可以被使用,以作为对通道控制器218的替换或补充。此外,网络到PCI-X的桥接220经由次级PCI-X总线222(例如133MHz)连接到I/O处理器210和通道控制器218,并且经由通信路径224连接到PCI总线、网络、主机计算机103等等。
图2C示出了根据特定实施例的I/O处理器210的进一步的细节。I/O处理器210包括地址空间250和高速缓存管理代理256,以便帮助管理高速缓冲存储器216。在特定实施例中,高速缓存管理代理256在固件中实现。在特定的可选实施例中,高速缓存管理代理256可以在软件、硬件或者软件、固件和/或硬件的组合中实现。例如,计算设备学习和高速缓存管理代理256的计算可以在硅状态机中实现。
图2D示出了根据特定实施例的I/O处理器210的地址空间250使用的进一步的细节。地址空间250包括由通道控制器218使用的控制存储器映射I/O、由I/O处理器210使用的I/O处理器操作系统存储器、由高速缓冲存储器216使用的后写缓冲区高速缓存、用于预取的缓冲区高速缓存(即用于先读(readahead))以及高速缓冲存储器散列表。
图3示出了贝叶斯定理的一般形式。贝叶斯定理是一种用于计算条件概率的数学公式。特定实施例提供了在I/O处理器210中的高级贝叶斯网络技术。特定实施例通过使用贝叶斯网络来了解访问模式并且进行优先级排队来优先选择具有最远网络距离的客户机,从而减少了存储子系统中的变化的延迟。在特定实施例中,对于贝叶斯网络的学习是通过监控特定访问模式的频率来完成的,其中把所测量的请求频率用作事前统计量。对应于客户机网路距离的数据可以包括跟踪因特网协议(IP)报头中的跳跃计数、对用户机进行分组网际探测(Ping)并且测量客户机响应以及其他技术。跳跃计数与数据分组相关,并且随着数据分组通过每个路由器而递增。
图4示出了根据特定实施例的概率计算。例如,P(Bn+1|Bn)表示如果DataBlockn400被访问(Bn)那么Data Blockn+1410被访问的概率。为了便于参考,这里使用带有下标的术语“Data Block”来表示数据块。特定实施例使用这种概率分析来确定如果Data Blockn400被读取或写入那么是否执行取回DataBlockn+1410。例如,如果Data Blockn400已被访问,那么Data Blockn+1410很可能被访问,那么取回Data Blockn+1410从而避免随后取回Data Blockn+1410的I/O活动是有用的。
图5A、5B、5C、5D和5E示出了根据特定实施例的用于高速缓存的操作。控制在块500开始,其中重启代理并且初始化平台。在特定实施例中,该代理与其上执行存储设备(例如RAID)固件的实时操作系统相关。平台可以被描述成I/O处理器210和相关的固件。在块502中,高速缓存管理代理256确定这是否是第一次启动(boot)。如果是的话,处理进行到块504,否则,处理进行到块506。在块504中,缓冲管理代理256从闪存214(例如,只读存储器类型(ROM))把初始网络概率和一个或多个高速缓存表加载到SDRAM 212中。在块506中,高速缓存管理代理256加载最后一次使用的网络概率和一个或多个高速缓存表(例如从ROM)。所述高速缓存表可以包括写高速缓存和读高速缓存。
图6A和6B示出了根据特定实施例的非易失性写高速缓存表600和易失性读高速缓存表610。在起动时,读高速缓存表610一般是空的,写高速缓存表600可以包括未被冲刷(flush)到存储设备的内容。写高速缓存表600可以是用于多盘(例如4个盘)配置的一系列N元组,其中每个元组包括写盘标识符、高速缓存块偏移量、块数量、最后一次访问的日期和时间、发起方距离以及数据。读高速缓存表610可以是用于多盘(例如4个盘)配置的一系列N元组,其中每个元组包括读盘标识符、高速缓存块偏移量、块数量,最后一次访问的日期和时间、发起方距离、命中数量以及数据。在特定实施例中,术语“块”可以用来表示扇区或者512字节单元。发起方距离可以被描述成一个归一化的单位,例如跳跃计数和/或对发起方计算机的分组网际探测的结果值。写高速缓存表600可以被存储在高速缓冲存储器216中,而读高速缓存表610可以被存储在SDRAM212中。
在块508中,高速缓存管理代理256确定是否有输入请求。如果是的话,处理进行到块512,否则处理进行到块510。在块510中执行空闲处理、高速缓存反写(即把来自高速缓冲存储器216的数据写入存储设备230)、自测试、断电以及其他处理。
在块512中,高速缓存管理代理256确定该输入请求是否是写请求。如果是的话,处理进行到块514(图5B),否则处理进行到块534。在块534中,高速缓存管理代理256确定该输入请求是否是读请求。如果是的话,处理进行到块536(图5C),否则处理进行到块566(图5E)。
在图5B中处理写请求。在块514中,高速缓存管理代理256更新P(Bn)的值(即可以从所有可用块中访问Data Blockn的概率)。例如,在任何块被访问之前,如果有1,000,000个块,那么Data Blockn可能被访问的概率是1/1,000,000。然而,如果Data Blockn已经被访问1,000次,则Data Blockn可能被访问的概率是1/1000。
在块516中,由于Data Blockn已被访问,高速缓存管理代理256确定DataBlockn+1可能被访问的概率(即P(Bn+1|Bn))是否大于先读阈值。先读阈值被用来确定是否应当执行先读。如果是的话,处理进行到块518,否则处理进行到块528。
在块518中,如果需要的话(见图6),高速缓存管理代理256在高速缓冲存储器216中为Data Blockn腾出空间。在块520中,如果需要的话(见图6),高速缓存管理代理256在高速缓冲存储器216中为Data Blockn+1腾出空间。在块522中,高速缓存管理代理256预取Data Blockn+1。在块524中,高速缓存管理代理256递增预取计数器。在块526中,高速缓存管理代理256把Data Blockn后写到高速缓冲存储器。术语“后写”表示将块写入到高速缓冲存储器216,把该写入提交(commit)给存储设备230,随后将该块从高速缓冲存储器216写入到存储设备230。然而,客户机认为在提交时该写入就完成,而不知道把所述块从高速缓冲存储器216写入到存储设备230的等待时间。处理从块526进行到块530。
在块528中,如果由于Data Blockn被访问而Data Blockn+1可能被访问的概率(即P(Bn+1|Bn))不大于先读阈值,则高速缓存管理代理256发出针对Data Blockn的写请求给存储设备230。
在块530中,高速缓存管理代理256返回一个确认。在块532中,高速缓存管理代理256更新执行计数器,比如读次数、写次数、预取次数(即对应于预取计数器)和命中高速缓冲存储器的次数(即对应于预取成功计数器)。该执行计数器可以被描述成通信量的一般统计量。
在图5C和5D中处理读请求。在块536中,高速缓存管理代理256更新P(Bn)的值。在块538中,高速缓存管理代理256确定请求方跳跃计数是否大于跳跃计数阈值。如果是的话,处理进行到块540,否则处理进行到块542。请求方指的是所接收的读请求来自哪一个计算设备或应用。跳跃计数阈值标识距离,并且当请求方的跳跃计数大于跳跃计数阈值时,来自请求方的请求在存储请求的请求数据结构(例如队列)中被提升以便进行处理(块540)。
由于I/O处理器210的串行性质使得如果一个请求处于请求数据结构中的较前位置(例如在队列的开头或者接近队列的开头)则该请求可能更早导致对存储设备的I/O操作,因此在该请求数据结构中提升该请求。这种服务质量差别反映出I/O处理器210示出为最远的发起方给出最好服务。
在块542中,高速缓存管理代理256确定Data Blockn是否在高速缓冲存储器216中。如果是的话,处理进行到块544,否则处理进行到块550。在块544中,高速缓存管理代理256用来自高速缓冲存储器216的Data Blockn来答复请求方。在块546中,高速缓存管理代理256确定Data Blockn是否先前被预取到高速缓冲存储器216中。如果是的话,处理进行到块548,否则处理进行到块554(图5D)。在块548中,高速缓存管理代理256递增预取成功计数器,以便表明先前被预取的数据块已被访问。
在块550中,由于Data Blockn不在高速缓冲存储器216中,如果需要的话,高速缓存管理代理256在高速缓冲存储器216中为Data Blockn腾出空间。在块552中,高速缓存管理代理256发出针对Data Blockn的读请求到存储设备230。处理从块552进行到块554(图5E)。
在图5E中,在块554中,由于Data Blockn已被访问,高速缓存管理代理256确定Data Blockn+1可能被访问的概率(即P(Bn+1|Bn))是否大于先读阈值。如果是的话,处理进行到块556,否则处理进行到块562。
在块556中,如果需要的话(见图6),高速缓存管理代理256在高速缓冲存储器216中为Data Blockn+1腾出空间。在块558中,高速缓存管理代理256预取Data Blockn+1。在块560中,高速缓存管理代理256递增预取计数器。
在块562中,高速缓存管理代理256返回数据和/或确认。在块564中,高速缓存管理代理256更新执行计数器。
在图5E中,在块566中处理管理命令。在块568中,高速缓存管理代理256确定预取成功计数器除以预取计数器之后是否大于成功阈值。也就是说,高速缓存管理代理256确定所预取的数据块被访问的次数百分比是否超出成功阈值。如果是的话,处理进行到块570,否则处理进行到块572。在块572中,高速缓存管理代理256更新所述先读阈值,并且处理进行到块570。在块570中,例如高速缓存管理代理256基于访问统计量(例如,在特定时间周期期间接收的写请求相对读请求的数量)更新跳跃计数阈值。处理从块570进行到块508(图5A)。例如,成功阈值可以设置在60%(也就是说,如果60%的读命令能够访问所预取的数据块,则预取策略被认为是成功的)。每当读命令访问所预取的数据块时,预取成功计数器就递增。每当数据块被预取到高速缓冲存储器216中时,预取计数器就递增。于是,如果预取成功计数器/预取计数器大于该成功阈值,则当前预取策略被确定是成功的。另一方面,如果预取成功计数器/预取计数器不大于该成功阈值,则先读阈值被调整,以使得较少的数据块被预取。
因此,I/O处理器210保持跳跃计数阈值、先读阈值和成功阈值。基于先前的高速缓冲策略在成功阈值方面的成功程度,跳跃计数阈值以及可能的话还有先读阈值可以被动态更新。跳跃计数阈值可以基于所观测的访问模式而被动态更新。在特定实施例中,缺省的一组已设定阈值可以在制造环境中被编程到设备中。
图7示出了根据特定实施例为了在高速缓冲存储器216中为数据块腾出空间而执行的操作。在块700中,高速缓存管理代理256接收在高速缓冲存储器216中腾出空间的请求。在块702中,高速缓存管理代理256确定高速缓冲存储器216是否已满。如果高速缓冲存储器216已满,则处理进行到块704,否则处理结束。在块704中,高速缓存管理代理256确定高速缓冲存储器216中的所有数据块是否已经在预定时间间隔内(例如在最近的70秒内)被访问。如果是的话,处理进行到块706,否则处理进行到块708。在块706中,高速缓存管理代理256逐出为最近的计算设备(例如客户机)保存的数据块并且处理结束。在块708中,高速缓存管理代理256逐出被访问时间最早的数据块。
特定实施例使用基于频率的先有信息以及网络向量距离来为跨越不可预知的网络的客户机提供服务。此外,特定实施例依靠具有强大的计算和存储能力的I/O处理器210来实施原地(in-situ)学习技术,例如贝叶斯网络和通信量建模。该信息例如被用来更新跳跃阈值。
因此,在特定实施例中,高速缓存管理代理256能够学习访问模式。所述访问模式可以用概率来表示(也就是说,给定的I/O请求在所有I/O请求中所占的百分比)。先验概率(即在给定在前I/O请求Y的情况下,I/O请求X的概率,例如P(X|Y))也被保持。这种学习被用于指导预取行为。
另外,特定实施例跟踪不同请求方的身份,所述请求方具有最远的距离(例如,由往返时间(RTT)测量,并用跳跃计数或起动校准/分组网际探测来表示)。然后,高速缓存管理代理256在请求数据结构中把来自最远请求方的请求提升到较前的位置(例如提升到开头或接近开头)。
特定实施例集成网络动态、对于访问模式的计算设备学习以及其他统计技术来形成能够适应于工作负载和异类客户机网络延迟的动态高速缓冲策略。也就是说,特定实施例提供一种自我调谐并且自适应的高速缓冲策略。
特定实施例使存储设备230能够变成以符合自主计算的方式自修复、自适应的系统。此外,为了提供最优请求动态,特定实施例支持网络延迟度量和访问模式学习。
特定实施例还允许通过有效地利用I/O处理器210带宽以使得I/O处理器210具有高效的性能,这是通过持续测量所观测的通信量模式并采取相应动作。
Intel、XScale和Xeon是因特尔公司在美国和/或国外的注册商标和/或一般的法律标记。Windows是微软公司在美国和/或国外的注册商标和/或一般的法律标记。
其他实施例细节所描述的用于自适应高速缓冲的技术可以被实现为使用标准编程和/或工程技术来产生软件、固件、硬件或其任意组合的方法、设备和制造产品。这里使用的术语“制造产品”指的是在硬件逻辑(例如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)或诸如磁存储介质(例如硬盘驱动器、软盘、磁带等等)、光学存储(CD-ROM、光盘等等)、易失性和非易失性存储器设备(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等等)的计算机可读介质中实现的代码或逻辑。计算机可读介质中的代码由处理器访问和执行。其中实现优选实施例的代码可以进一步通过传输介质来访问,或者通过网络从文件服务器上访问。在这种情况下,其中实施代码的制造产品可以包括传输介质,例如网络传输线路、无线传输介质、通过空间的信号传播、无线电波、红外信号等等。因此,“制造产品”可以包括其中实现代码的介质。另外,”制造产品”可以包括其中实现、处理和执行代码的硬件和软件组件的组合。当然,本领域技术人员应当认识到,在不脱离实施例的范围的情况下可以对这种配置进行各种修改,所述制造产品可以包括本领域已知的任何信息承载介质。
图5A、5B、5C、5D、5E和7示出了以特定顺序发生的特定事件。在替换实施例中,特定操作可以以不同顺序来执行、修改或移除。此外,可以在上述逻辑中添加操作并且仍然符合上述实施例。此外,这里描述的操作可以顺序地发生或者可以并行处理特定操作。此外,可以由单个处理单元或者分布式处理单元来执行操作。
图8示出了计算系统800的一个实施例,例如有计算设备102a、102b、102c、102d、102e、103和/或200。系统800可以包括处理器802(例如微处理器)、存储器804(例如易失性存储器设备)和存储装置806(例如非易失性处理装置,比如磁盘驱动器、光盘驱动器、磁带驱动器等等)。存储装置806可以包括内部存储设备或者附属的或网络可访问的存储装置。存储装置806中的程序被载入到存储器804中,并且由处理器802以本领域已知的方式执行。该系统进一步包括允许与网络进行通信的网卡808,所述网络例如是以太网、光纤通道仲裁环等等。此外,在特定实施例中,所述系统可以包括存储控制器809。如上所述,特定网络设备可以具有多个网卡。输入设备810用于提供用户输入给处理器802,并且可以包括键盘、鼠标、指示笔、麦克风、触敏显示屏或者本领域已知的任何其他激活或输入机制。输出设备812能够呈现从处理器802或者诸如显示监控器、打印机、存储装置等其他组件传送来的信息。
前面已经提出了多种实施例以用于说明和描述的目的,但是并不意图穷尽实施例或者把实施例限制到所公开的精确形式。根据上述教导,各种修改和变化是可行的。实施例的范围不由上面的具体描述限定,而是由所附权利要求书来限定。上面的说明书、例子和数据提供了对于实施例组合的制造和使用的完整说明。由于在不脱离上述实施例的精神和范围的情况下能够设想许多实施例,因此所述实施例落在所附权利要求书的范围内。
权利要求
1.一种用于高速缓存管理的方法,包括接收针对访问第一数据块的输入请求;基于对第一数据块的访问确定第二数据块可能被访问的概率;确定该概率是否超出先读阈值;以及响应于确定该概率超出该先读阈值,预取第二数据块。
2.权利要求1的方法,进一步包括确定与第一数据块相关的跳跃计数是否大于跳跃计数阈值;以及响应于确定该跳跃计数大于该跳跃计数阈值,在请求数据结构中把所述读请求提升到不同的位置。
3.权利要求1的方法,进一步包括更新第一数据块可能被访问的概率。
4.权利要求1的方法,进一步包括当预取第二数据块时更新预取计数器。
5.权利要求1的方法,其中,所述输入请求是写请求,并且该方法进一步包括高速缓存第一数据块;提交该写请求给存储设备;以及发送表明该写请求已经被提交的确认。
6.权利要求5的方法,进一步包括在提交所述写请求之后将第一数据块写入到所述存储设备。
7.权利要求1的方法,进一步包括确定将要从高速缓冲存储器中逐出数据块;确定当前在该高速缓冲存储器中的各数据块是否已经在预定时间间隔内被访问;响应于确定各数据块已经在该预定时间间隔内被访问,逐出该高速缓冲存储器中的为最近的计算设备保存的数据块;以及响应于确定至少一个数据块尚未在该预定时间间隔内被访问,逐出高速缓冲存储器中的被访问时间最早的数据块。
8.权利要求7的方法,其中,确定哪一个计算设备是最近的计算设备是基于与来自该计算设备的请求相关的跳跃计数。
9.权利要求1的方法,其中,所述输入请求是读请求,并且该方法进一步包括确定第一数据块是否在高速缓冲存储器中;响应于确定第一数据块在高速缓冲存储器中,确定第一数据块是否先前被预取;以及响应于确定第一数据块先前被预取,递增预取成功计数器。
10.权利要求1的方法,进一步包括确定所预取的数据块被访问的次数百分比是否超出成功阈值;响应于确定所述百分比不超出该成功阈值,更新所述先读阈值。
11.权利要求1的方法,进一步包括基于访问统计量更新跳跃计数阈值。
12.权利要求1的方法,其中,使用贝叶斯网络技术来确定所述概率。
13.一种与数据存储装置通信的系统,包括具有输入/输出(I/O)处理器的计算设备;能够管理对该数据存储装置的输入/输出(I/O)访问的存储控制器,其中该数据存储控制器耦合到该计算设备;以及位于该计算设备处的高速缓存管理代理,其中该高速缓存管理代理能够执行以下操作接收针对访问第一数据块的输入请求;基于对第一数据块的访问确定第二数据块可能被访问的概率;确定该概率是否超出先读阈值;以及响应于确定该概率超出该先读阈值,预取第二数据块。
14.权利要求13的系统,其中,所述高速缓存管理代理能够执行以下操作确定与第一数据块相关的跳跃计数是否大于跳跃计数阈值;以及响应于确定该跳跃计数大于该跳跃计数阈值,在请求数据结构中把所述读请求提升到不同的位置。
15.权利要求13的系统,其中,所述高速缓存管理代理能够更新第一数据块可能被访问的概率。
16.权利要求13的系统,其中,所述高速缓存管理代理能够在预取第二数据块时更新预取计数器。
17.权利要求13的系统,其中,所述输入请求是写请求,并且所述高速缓存管理代理能够执行以下操作高速缓存第一数据块;提交该写请求给存储设备;以及发送表明该写请求已经被提交的确认。
18.权利要求17的系统,其中,所述高速缓存管理代理能够在提交所述写请求之后将第一数据块写入到所述存储设备。
19.权利要求13的系统,其中,所述高速缓存管理代理能够执行以下操作确定将要从高速缓冲存储器中逐出数据块;确定当前在该高速缓冲存储器中的各数据块是否已经在预定时间间隔内被访问;响应于确定各数据块已经在该预定时间间隔内被访问,逐出该高速缓冲存储器中的为最近的计算设备保存的数据块;以及响应于确定至少一个数据块尚未在该预定时间间隔内被访问,逐出高速缓冲存储器中的被访问时间最早的数据块。
20.权利要求19的系统,其中,确定哪一个计算设备是最近的计算设备是基于与来自该计算设备的请求相关的跳跃计数。
21.权利要求13的系统,其中,所述输入请求是读请求,并且所述高速缓存管理代理能够执行以下操作确定第一数据块是否在高速缓冲存储器中;响应于确定第一数据块在高速缓冲存储器中,确定第一数据块是否先前被预取;以及响应于确定第一数据块先前被预取,递增预取成功计数器。
22.权利要求13的系统,其中,所述高速缓存管理代理能够执行以下操作确定所预取的数据块被访问的次数百分比是否超出成功阈值;以及响应于确定所述百分比不超出该成功阈值,更新所述先读阈值。
23.权利要求13的系统,其中,所述高速缓存管理代理能够基于访问统计量更新跳跃计数阈值。
24.权利要求13的系统,其中,使用贝叶斯网络技术来确定所述概率。
25.一种制造产品,其包括其中存储有指令的存储介质,当计算设备执行所述指令时会导致以下操作接收针对访问第一数据块的输入请求;基于对第一数据块的访问确定第二数据块可能被访问的概率;确定该概率是否超出先读阈值;以及响应于确定该概率超出该先读阈值,预取第二数据块。
26.权利要求25的制造产品,其中,当执行所述指令时会进一步导致以下操作确定与第一数据块相关的跳跃计数是否大于跳跃计数阈值;以及响应于确定该跳跃计数大于该跳跃计数阈值,在请求数据结构中把所述读请求提升到不同的位置。
27.权利要求25的制造产品,其中,当执行所述指令时会进一步导致以下操作更新第一数据块可能被访问的概率。
28.权利要求25的制造产品,其中,当执行所述指令时会进一步导致以下操作当预取第二数据块时更新预取计数器。
29.权利要求25的制造产品,其中,所述输入请求是写请求,并且当执行所述指令时会进一步导致以下操作高速缓存第一数据块;提交该写请求给存储设备;以及发送表明该写请求已经被提交的确认。
30.权利要求29的制造产品,其中,当执行所述指令时会进一步导致以下操作在提交所述写请求之后将第一数据块写入到该存储设备。
31.权利要求25的制造产品,其中,当执行所述指令时会进一步导致以下操作确定将要从高速缓冲存储器中逐出数据块;确定当前在该高速缓冲存储器中的各数据块是否已经在预定时间间隔内被访问;响应于确定各数据块已经在该预定时间间隔内被访问,逐出该高速缓冲存储器中的为最近的计算设备保存的数据块;以及响应于确定至少一个数据块尚未在该预定时间间隔内被访问,逐出高速缓冲存储器中的被访问时间最早的数据块。
32.权利要求31的制造产品,其中,确定哪一个计算设备是最近的计算设备是基于与来自该计算设备的请求相关的跳跃计数。
33.权利要求25的制造产品,其中,所述输入请求是读请求,并且当执行所述指令时会进一步导致以下操作确定第一数据块是否在高速缓冲存储器中;响应于确定第一数据块在高速缓冲存储器中,确定第一数据块是否先前被预取;以及响应于确定第一数据块先前被预取,递增预取成功计数器。
34.权利要求25的制造产品,其中,当执行所述指令时会进一步导致以下操作确定所预取的数据块被访问的次数百分比是否超出成功阈值;响应于确定所述百分比不超出该成功阈值,更新所述先读阈值。
35.权利要求25的制造产品,其中,当执行所述指令时会进一步导致以下操作基于访问统计量更新跳跃计数阈值。
36.权利要求25的制造产品,其中,使用贝叶斯网络技术来确定所述概率。
全文摘要
提供了用于高速缓存管理的技术。接收针对访问第一数据块的输入请求。基于对第一数据块的访问确定第二数据块可能被访问的概率。确定该概率是否超出先读阈值。响应于确定该概率超出该先读阈值,预取第二数据块。
文档编号G06F12/08GK1961286SQ200480038646
公开日2007年5月9日 申请日期2004年12月17日 优先权日2003年12月24日
发明者E·科马拉, V·齐默 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1