CN102576350B - 高速缓存信息的***及方法 - Google Patents
高速缓存信息的***及方法 Download PDFInfo
- Publication number
- CN102576350B CN102576350B CN201080047230.3A CN201080047230A CN102576350B CN 102576350 B CN102576350 B CN 102576350B CN 201080047230 A CN201080047230 A CN 201080047230A CN 102576350 B CN102576350 B CN 102576350B
- Authority
- CN
- China
- Prior art keywords
- project
- requested
- speed cache
- request
- stored
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5683—Storage of data provided by user terminals, i.e. reverse caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/264—Remote server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供一种***(100)和方法(图5-6),其中,一方面,基于当前请求的信息项目(143)是否已被之前请求过而在高速缓存(140)中存储当前请求的信息项目(143),如果是,则基于之前请求的时间而在高速缓存(140)中存储当前请求的信息项目(143)。如果否,则它可能不被存储在高速缓存中。如果对象项目已被之前请求过,则基于持续时间的比较结果而将它存储或不存储在高速缓存中,即(1)对对象项目的当前请求和之前请求之间的持续时间和(2)对于高速缓存中的其他项目,对其他项目的当前请求和之前请求之间的持续时间。如果与对象项目相关的持续时间短于高速缓存中另一项目的时间,可将对象项目存储在高速缓存中。
Description
相关申请的交叉引用
本申请要求了2009年8月21日提交的、申请号为12/545,225、发明名称为“高速缓存信息的***和方法”的权益,其全部公开内容通过参考包括于此。
背景技术
通常,在具有处理器的***中提供高速缓存来存储信息项目,从而相比于不存在高速缓存以较低的“代价”通过处理器访问信息项目。例如,***可构造为相比于其他存储器,处理器可以更快地从一个存储器中获取数据或程序指令。这个存储器可以用作高速缓存以便保存在其他存储器中的经常被访问的信息可以复制到高速缓存中从而从高速缓存中访问。另外,高速缓存的使用可以帮助减少当信息项目是本地可用时的处理器和内部***元件如存储器或输入-输出接口之间的内部数据流量,以及减少当信息不是本地可用时的***和远程***之间的外部数据流量。
高速缓存经常太小而不能存储处理器可能需要的所有信息。因此,当要确定将哪些信息存储在高速缓存中时,基于高速缓存的***典型地需要有选择能力。例如,处理器可能反复地和经常地访问十个不同的信息项目,但是高速缓存可能只能存储五个。
已经存在各种不同的算法来确定何时需将项目存储在高速缓存中。例如,一些现有的***自动地将最近使用的信息存储在高速缓存中。如果处理器最近处理过十个项目而高速缓存可以存储五个,那么将最后五个离散项目存储在高速缓存中,而不管这些项目的使用频率如何。
发明内容
一方面,提供一种方法,包括:在处理器处接收对信息项目进行处理的请求,其中所述处理器具有相关的高速缓存;当所述项目存储在所述高速缓存中时,从所述高速缓存中检索被请求的项目;当所述项目不存储在所述高速缓存中时,从其他存储器中检索被请求的项目;当所述项目在预定期间内未被之前请求过时,处理所述项目而不将所述项目存储在所述高速缓存中;当所述项目在预定期间内已被之前请求过且所述预先请求的时间比对存储在所述高速缓存中的一组项目的每个项目的最近请求都早时,处理所述项目而不将所述项目存储在所述高速缓存中;以及当所述项目在预定期间内已被之前请求过且所述之前请求的时间比对存储在所述高速缓存中的一组项目的至少一个项目的最近请求晚时,处理所述项目且将所述项目存储在所述高速缓存中。
另一方面,提供一种方法,包括:接收对电子存储的信息的第一项目的当前请求,所述第一项目存储在第一存储器中;当所述第一项目也存储在第二存储器中时,从所述第二存储器中提供所述第一项目;当所述第一项目不存储在所述第二存储器中时,从所述第一存储器中提供所述第一项目;使用处理器确定所述第一项目是否已在预定时间段内被之前请求过;当确定所述第一项目已被之前请求过时,使用处理器确定与所述第一项目相关的第一持续时间,其中所述第一持续时间为对所述第一项目的当前请求和对所述第一项目的之前请求之间的持续时间;使用处理器确定存储在所述第二存储器中的一组之前请求过的第二项目的每个项目的第二持续时间,其中第二值为对所述第一项目的当前请求和对所述第二项目的最后请求之间的持续时间;以及当所述第一项目已被之前请求过且所述第一持续时间短于所述第二持续时间的至少一个时,将所述第一项目存储在所述第二存储器中。
又另一种方法,涉及:接收对电子存储的信息的第一项目的请求;当所述第一项目在预定时间段内未被之前请求过时,从第一存储器中提供所述第一项目并不将所述第一项目存储在第二存储器中;当所述第一项目存储在所述第二存储器中时,从所述第二存储器中提供所述第一项目,所述第二存储器还存储多个其他项目,所述多个其他项目的每个至少被之前请求过两次;当所述第一项目在预定时间段内未被之前请求过时,从所述第一存储器中提供所述第一项目而不将所述第一项目存储在所述第二存储器中;当已经确定所述第一项目被之前请求过时,使用处理器确定与所述第一项目相关的第一值,其中所述第一值基于对所述第一项目的之前请求之间的持续时间;使用处理器确定与存储在所述第二存储器中的一组之前请求过的第二项目中的各个项目相关的第二值,其中所述第二值基于对所述第一项目的当前请求和对所述第二项目的最后请求之间的持续时间;以及当所述第一项目在预定时间段内已被之前请求过时,基于所述第一值和所述第二值的比较结果,从所述第一存储器中提供所述第一项目并将所述第一项目存储在所述第二存储器中。
另一个方面提供一种***,包括:高速缓存,所述高速缓存被配置为用于存储信息项目;其他存储器,所述其他存储器被配置为用于存储信息项目;以及处理器,所述处理器被配置为用于根据指令在所述高速缓存中检索和存储项目并将所述项目提供至请求装置。响应于来自所述请求装置的对被请求项目的请求,所述指令包括:当所述被请求的项目存储在所述高速缓存中时,从所述高速缓存中检索所述被请求的项目;当所述被请求的项目不存储在所述高速缓存中,从所述其他存储器中检索所述被请求的项目;当所述项目在预定期间内未被之前请求过时,将所述被请求的项目提供至所述请求装置,并在下一个请求之前不将所述被请求的项目存储在所述高速缓存中;当所述项目在预定期间内已被之前请求过且所述之前请求的时间比存储在所述高速缓存中的一组项目的每个项目的最后请求实际都早时,将所述被请求的项目提供至所述请求装置,并在下一个请求之前不将所述被请求的项目存储在所述高速缓存中;以及当所述项目在预定期间内已被之前请求过且所述之前请求的时间比存储在所述高速缓存中的一组项目的至少一个项目的最后请求时间晚时,将所述被请求的项目提供至所述请求装置且将在下一个请求之间将所述被请求的项目存储在所述高速缓存中。
另一种***可包括:处理器,所述处理器被配置为用于根据指令在缓存器中检索和存储项目。它还可包括:第一存储器,所述第一存储器具有第一容量和第一访问时间(其中,访问时间表示所述处理器从存储器中获取信息所花费的平均时间);第二存储器,所述第二存储器具有比所述第一存储器更大的容量和更慢的访问时间;以及第三存储器,所述第三存储器具有比所述第二存储器更大的容量和更慢的访问时间。响应于与通过所述处理器接收到的对所述项目的请求,所述指令可包括:当被请求的项目存储在所述第一存储器中时,从所述第一存储器中检索所述被请求的项目;当所述被请求的项目存储在所述第二存储器中时,从所述第二存储器中检索所述被请求的项目;当所述被请求的项目存储在所述第三存储器中时,从所述第三存储器中检索所述被请求的项目;根据所述项目在所述请求的时间点是否存储在所述第二存储器中以及从所述项目被请求的最后时间开始所逝去的时间是否小于最后逐出持续时间,将所述被请求的项目存储在所述第一存储器中,其中所述最后逐出持续时间包括从对最近被逐出的项目在仍然存储在所述第一存储器中时的最后请求开始到最近被逐出的项目从第一存储器中逐出为止的持续时间;根据所述项目在所述请求的时间点是否存储在所述第二存储器中以及所述项目是否为从所述第三存储器中检索,将所述被请求的项目存储在所述第二存储器中。
附图说明
图1为根据本发明一方面的服务器和客户端装置的***的功能框图;
图2为根据本发明一方面的计算机芯片和指令存储的功能框图;
图3为根据本发明一方面的服务器和客户端装置的多级***的功能框图;
图4为根据本发明一方面的计算机的功能框图;
图5为根据本发明一方面的流程图;以及
图6为根据本发明一方面的流程图。
具体实施方式
根据本发明的一方面,基于当前请求的信息项目是否已被之前请求过,以及如果当前请求的信息项目已被之前请求过则基于之前请求的时间,确定当前请求的信息项目是否存储在高速缓存中。特别地,如果项目从未被之前请求过,则项目不存储在高速缓存中(其中“从未”可表示预定时间段,例如“在24小时内从未”或者在一段时间内从未,其中一段时间基于随时间变化的数据而动态地确定)。如果对象项目已被之前请求过,则基于持续期间的确定和比较来高速缓存对象项目,也就是(1)对对象项目的当前请求和之前请求之间的持续期间,以及(2)对于高速缓存中的每个其他项目,对其他项目的当前请求和之前请求之间的持续期间。如果与对象项目相关的持续期间短于高速缓存中的另一个项目的持续期间,将对象项目存储在高速缓存中。
如图1中所示,根据本发明一方面的***100包括计算机110,计算机110包含处理器120、存储器130、时钟115和其他在通用计算机中典型存在的组件。存储器130存储可被处理器120访问的信息,包括可被处理器120执行的指令131。它还包括可被处理器检索(retrieve)、操作或存储的数据。存储器可为任何可以存储可被处理器访问的信息的类型,包括计算机可读介质,如硬盘驱动、存储卡、ROM、RAM、DVD或其他光盘,以及其他可写和只读存储器。处理器120可为任何熟知的处理器,如英特尔公司或AMD的处理器。可替换地,处理器可为专用控制器,如ASIC。
指令131可为任何一组由处理器直接执行的指令(如机器代码)或间接执行的指令(如脚本)。例如,指令可存储在计算机可读介质上作为计算机代码。在这方面,术语“指令”和“程序”可相互替换使用。指令可以以目标代码形式存储以被处理器直接处理,或者以任何其他计算机语言形式存储,包括脚本或者即时编译的或预先汇编的独立源代码模块的集合。下面详细描述指令的功能、方法和程序。
数据135可被处理器120根据指令131进行检索、存储或改进。例如,尽管本***和方法不被任何特定的数据结构限制,但是数据可作为具有多个不同的域和记录的表格、XML文档或平面文件而存储在计算机寄存器的关联式数据库中。数据还可被格式化为任何计算机可读形式,例如但不限于,二进制变量、ASCII或万国码。图像数据可存储为由像素组成的位图、以及用于绘制图形的计算机指令,其中像素基于压缩或解压缩的格式、无损的(例如,BMP)或有损的(例如,JPEG)、以及基于位图或矢量(例如,SVG)进行存储。视频数据可以以不同的格式存储,包括MPEG、GIF、AVI、M-JPEG、Flash、QuickTime和其他格式。数据可包括任何足以识别相关信息的信息,如数字、说明文本、自定义码、指针、存储在其他存储器(包括其他网络存储单元)中的数据的参考、或被函数使用来计算相关数据的信息。
尽管图1在相同的块中功能性地示出处理器和存储器,本领域的普通技术人员应理解,处理器和存储器实际上可包括多个可以或可以不存储在相同的物理壳体中的处理器和存储器。例如,一些指令和数据可存储在可移除的CD-ROM上,而其他指令和数据可存储在只读计算机芯片中。一些或所有的指令和数据可存储在物理上远离处理器但仍可被处理器访问的存储单元中。因此,应理解,计算机、处理器和存储器的参考包括计算机集合、可以或可以不并行操作的处理器或计算机的参考。
计算机110可设置在网络195的一个或多个节点处,并能够直接地和间接地与网络的其他节点通信。例如,计算机110可包括能够通过网络195与客户端装置150-52通信、传送网页至客户端装置150-52、并接收响应的信息和请求的网络服务器。服务器110可使用网络195来传送和显示信息给客户端装置150的监控器160上的用户。
网络195以及服务器110和客户端装置之间的中间节点可包括不同的配置并使用不同的协议,包括互联网、万维网、局域网、虚拟专用网络、广域网、本地网络、使用专属于一个或多个公司的通信协议的专用网络、蜂窝网和其他无线网络、互联网中继聊天声道(IRC)、即时消息、简单邮件传输协议(SMTP)、以太网、无线局域网和超文本传送协议、以及上述协议的各种组合。尽管图1中仅示出少量的计算机,应理解,典型的***可包括大量的相互连接的计算机。
每个客户端装置可配置为与服务器110相类似,具有处理器、存储器和指令。每个客户端装置150-52可以为供人员190-191使用的个人计算机,具有在个人计算机中通常出现的所有内部组件,如中央处理单元(CPU)、显示装置160(例如,具有屏幕的监控器、投影仪、触摸屏、小型LCD屏、电视机或者其他装置如可操作用于显示被处理器处理的信息的电子装置),DVD驱动、硬盘驱动、用户输入装置163(例如,鼠标、键盘、触摸屏或麦克风)、扬声器、调制解调器或网络接口装置(电话、电缆、无线或其他)、以及用于连接这些元件至另一个元件的所有组件。
尽管客户端装置150-52可包括完整的个人计算机,但是本***和方法还可与能够通过网络如互联网与服务器无线地交换数据的移动装置相结合使用。例如,客户端装置可为无线使能的PDA,如黑莓电话或支持互联网的蜂窝电话。用户可使用小型键盘(在黑莓电话的情况下)、按键(在典型的蜂窝电话的情况下)、触摸屏(在PDA的情况下)或任何其他用户输入装置输入信息。实际上,根据本文描述的***和方法的计算机可包括任何能够处理指令并给和从用户传送数据的装置以及其他计算机包括通用计算机、缺少本地存储能力的网络计算机和用于电视机的机顶盒。
除了服务器110外,***100还可包括其他服务器。例如,服务器115-16可存储可被传送至网络的其他节点的信息,如通过谷歌的YouTube服务器提供的音频/视觉视频文件。内容的其他非限制性例子包括音乐、静态图像、包括计算机游戏的程序以及上述的组合。视频内容可通过客户端装置的电子显示160提供给用户,而音频内容可通过与客户端装置相关的扬声器进行提供。内容可免费或计费提供,而且可以被限制或受制于数字内容版权加密保护技术(DRM)。
服务器110可通过网络196与内容服务器115-16通信。网络196可配置为与网络195类似。实际上,至少在一个方面,网络195和网络196分享相同的节点;例如,网络195和网络196都可包括互联网。
服务器110可包括高速缓存140来存储可被服务器请求以用于进一步使用的信息。例如,高速缓存可存储从服务器115-16原始接收并提供给客户端装置150-52的内容文件。如下面将详细说明的,这仅为根据本发明的***和方法的一个可能的方面。
一方面且在很多情况下,相比于从内容服务器115-16获取信息,服务器110典型地能够更快地将来自高速缓存140的信息传送至客户端装置150-52。例如,服务器110比内容服务器在地理上更接近于客户端装置。服务器100也可在拓扑上更接近于客户端装置,例如,如果互联网同时作为网络195和网络196,那么内容服务器115和客户端装置150之间比服务器110和客户端装置150之间存在更多的中间节点。更进一步,高速缓存140可与处理器120存储在相同的壳体中,如物理地设置在服务器中的大型硬盘驱动;这样的配置典型地为处理器提供非常快速的信息访问速度。但是,高速缓存140也可在另外的位置,导致比硬盘驱动更长的等待时间,但是比从内容服务器115-16获取信息需要更短的等待时间。
本***和方法可以存储、检索和处理不同格式、配置和大小的信息。在这方面,存储在高速缓存中的信息项目可以是不同的大小或者具有相同的大小。在一些方面,每个项目是代表用户需要的所有信息的单个文件(例如,文件为整首歌曲的音乐视频)。在其他方面,每个项目是信息的固定大小包,其不能被用户有意义地使用直至用户的客户端装置接收和将多个包集合在一起。上述的组合也是可能的,例如,高速缓存中的每个单独的项目可以是固定大小的音乐视频的部分,服务器110通过从高速缓存检索和传送单独的包来将音乐视频流动至用户的客户端装置。
本***和方法还可处理指示项目的请求之间的时间长度的数据。例如,数据135可存储请求记录145,其中每个记录标识存储在高速缓存140中的内容文件143和文件被客户端装置最后请求的日期和时间。一方面,请求记录145可存储为哈希表,其中关键字是文件的标识(例如,分配给每个不同的音频文件的唯一数字)以及表明客户端装置最后请求文件的日期和时间的关键点。
请求记录还可标识项目是否存储在高速缓存中,因为不是所有被请求的项目都可以被高速缓存并且之前请求过的项目可以被高速缓存然后从高速缓存中逐出。
如下文所述,一些方面还可存储额外的信息。
除了图5中示出的操作外,现在将描述根据本发明的不同方面的不同操作。应理解,以下的操作不必按下面描述的特定顺序执行。而且,各个步骤可以按相反的顺序操作或同时操作。
一方面,本***和方法包括使用高速缓存来存储可被客户端装置请求的信息的服务器。例如,服务器110可为与网址如www.youtube.com相关的很多服务器的一个边服务器(edge server)。在这方面,用户可使用客户端装置150来与操作音频文件搜索引擎的网络服务器交互。引擎服务器可为用户提供一个相匹配的视频的清单,并允许用户选择和前往针对所需要的视频的网页。尽管它由引擎服务器提供服务,但是这种视频特有的网页可包括直接指向服务器110的URL和文件的唯一ID。因此,当用户请求视频副本时,例如通过点击“播放”按钮,请求被直接发送至服务器110而不是引擎服务器。
在接收到对信息的请求后,本***和方法可使得被请求的信息被检索到并提供给请求实体。例如,服务器110可首先确定高速缓存140是否包含被请求的内容文件。如果文件包含在高速缓存中,处理器120可通过网络195将文件从高速缓存140传送至客户端装置150。如果文件不包含在高速缓存中,处理器可从内容服务器115-16的一个中请求文件并将其转发至客户端装置150,如通过代理。可替换地,服务器110可为内容服务器或客户端装置提供足够的信息以便客户端装置可以从内容服务器获取文件而不通过服务器110传递文件,例如通过HTTP302的重定向提供位置的参考。
当处理器接收到对信息的请求时,它确定信息是否已被之前请求过。例如,服务器110可查询请求记录145并确定内容文件是否已被客户端装置150-52的任一个之前请求过。如果记录存储在哈希表中,处理器120可检查哈希表以确定具有与文件的UID相匹配的关键字的记录。如果这样的关键字不存在,那么处理器120确定文件未被之前请求过。如果这样的关键字存在,那么处理器120确定文件已被之前请求过。
如果被请求的项目未被之前请求过,那么本***和方法不高速缓存信息但存储与请求的时间相关的数据。例如,它可增加识别被请求的文件的UID和请求的日期和时间的关键字/值对到哈希表145中。它也可在记录中包括值,如指示文件当前不存储在高速缓存中的标记。
如果所需要的信息已被之前请求过,处理器确定它被之前请求过的最后时间并将它与识别高速缓存中的其他信息的请求时间的信息相比较。是否高速缓存的决定可基于这个确定结果。
在本***和方法的一方面中,如果除当前请求的时间外,某个项目比高速缓存中的其他项目被更近地请求过,那么高速缓存该项目。例如,假设服务器110在下午7:00接收到对“文件#3”的请求,且请求记录145识别以下的信息:
UID | 项目被最后请求的日期和时间 | 项目当前是否存储在高速缓存中? |
1 | 下午1:00 | 是 |
2 | 下午2:00 | 否 |
3 | 下午3:00 | 否 |
4 | 下午4:00 | 是 |
5 | 下午5:00 | 否 |
6 | 下午6:00 | 是 |
基于上述信息,除了当前请求的时间外,文件#3的请求时间(下午3:00)比文件#1的请求时间(下午1:00)更晚。因此,文件#3将被存储到高速缓存。
如果高速缓存缺少存储当前请求的项目的容量,本***和方法可移除自被最后请求起在高速缓存中搁置不用的时间最长的项目。使用上述的例子,自从文件#1被之前请求过起,已有六个小时(下午7:00减去下午1:00)。因此,不管下个对文件#1的请求何时到达,最后请求和下个请求之间的持续时间不可能小于六个小时。这个持续时间比对任何其他文件的任何另一持续时间都长。因此,如果没有足够的空间给文件#1和文件#3,那么可从高速缓存140中移除文件#1,可将文件#3增加到高速缓存,并且可将请求记录145更新如下(以黑体示出与上一图表的变化)。
UID | 项目被最后请求的日期和时间 | 项目当前是否存储在高速缓存中? |
1 | 下午1:00 | 否 |
2 | 下午2:00 | 否 |
3 | 下午7:00 | 是 |
4 | 下午4:00 | 是 |
5 | 下午5:00 | 否 |
6 | 下午6:00 | 是 |
如果在移除另一项目后仍然没有足够的空间来存储当前请求的项目,那么本***和方法可继续逐出项目直至提供足够的空间。
一方面,本***和方法使用与最近被逐出的项目相关的数据来确定当前请求的项目是否应被高速缓存。例如,当文件#1被移除时,服务器110可在数据135中存储指向文件#1的请求记录的指针,如下面通过“-X->”所指示的。
UID | 项目被最后请求的日期和时间 | 项目当前是否存储在高速缓存中? |
-X->1 | 下午1:00 | 否 |
2 | 下午2:00 | 否 |
3 | 下午7:00 | 是 |
4 | 下午4:00 | 是 |
5 | 下午5:00 | 否 |
6 | 下午6:00 | 是 |
假设服务器110接下来在下午8:00接收到对文件#5的请求。处理器可将最近被请求的项目的最后请求时间与最近被移除的项目相比,而不是与高速缓存中的每个项目相比。在这方面,已经确定对文件#5的请求时间(下午5:00)比刚刚被逐出的文件被请求的时间(文件#1在下午1:00)更晚,因此可将文件#5增加到高速缓存中。如果文件#4必须被移除从而为文件#5提供空间,那么生成的请求记录145可如下所示。
UID | 项目被最后请求的日期和时间 | 项目当前是否存储在高速缓存中? |
1 | 下午1:00 | 否 |
2 | 下午2:00 | 否 |
3 | 下午7:00 | 是 |
-X->4 | 下午4:00 | 否 |
5 | 下午8:00 | 是 |
6 | 下午6:00 | 是 |
另一方面,本***和方法可将当前项目与最后被逐出的项目的自它的最后请求起在高速缓存中存活的时间值相比。回到上述例子,当本***和方法必须在下午7:00挑选项目来逐出时,它逐出文件#1,因为没有其他文件在高速缓存中搁置而不被请求的时间更长。由此,如果定义“最坏操作者”为最近被逐出的项目,以及如果定义“被浪费的时间”为在它被定罪之前搁置在高速缓存中未被请求的时间长度,那么文件#1为最坏操作者且它浪费六个小时(7:00被逐出减去1:00被最后请求)。
在这方面,如果预计新项目比“最坏操作者”“浪费”更多的时间,本发明和方法的一方面可确定根本不需对新项目进行高速缓存。在这方面,当文件#5被请求时它将被高速缓存,因为它的最后请求(下午5:00)和它的当前请求(下午8:00)之间的间隔是三个小时,比最坏操作者浪费的时间(六个小时)短。但是,假设文件#11与文件#5在相同的时间(下午8:00)被请求,但是文件#11在九个小时以前(上午11:00)被之前请求过。如果文件#11放置在高速缓存中且它在另外的九个小时没有被请求过,这意味着它在高速缓存中比当前最坏的操作者文件#1的六个小时浪费更多的时间。因此,本***和方法可确定文件#11根本不需被高速缓存。
如果当前请求的项目的最后被请求的时间比高速缓存中的其他项目早,处理器可决定不对项目进行高速缓存。即使如此,仍可更新请求记录来反映当前请求的时间。例如,假设在下午9:00接收到对文件#1的请求,那么请求记录如下所示。
UID | 项目被最后请求的日期和时间 | 项目当前是否存储在高速缓存中? |
1 | 下午1:00 | 否 |
2 | 下午2:00 | 否 |
3 | 下午7:00 | 是 |
-X->4 | 下午4:00 | 否 |
5 | 下午8:00 | 是 |
6 | 下午6:00 | 是 |
本***和方法可将当前请求的项目的先前请求(文件#1在下午1:00)与对最近被逐出的项目的最后请求(文件#4在4:00)进行比较。即使文件#4因在高速缓存中太长时间未被请求而被逐出,它也比文件#1被请求的时间更晚(将***正在对文件#1的当前请求进行评估的事实放在一边)。因此,文件#1将不被放置在高速缓存中,但是它的记录将被更新如下。
UID | 项目被最后请求的日期和时间 | 项目当前是否存储在高速缓存中? |
1 | 下午9:00 | 否 |
2 | 下午2:00 | 否 |
3 | 下午7:00 | 是 |
-X->4 | 下午4:00 | 否 |
5 | 下午8:00 | 是 |
6 | 下午6:00 | 是 |
在这方面,如果文件#1在一个小时后的下午10:00再次被请求,它将被增加到高速缓存中,因为它比刚刚被逐出的项目被请求的时间(文件#4在下午4:00)更晚(下午9:00)。
如上所述,本***和方法的一方面使用当前请求的时间和最后请求的时间(除了别的以外)来确定项目是否应被高速缓存。
另一方面,本***和方法使用当前请求的时间、最后请求的时间以及更早请求的时间来做出决策。而且,当做出决策时,本***和方法可应用不同的权重。例如,当确定项目是否应被高速缓存时,最后请求的时间可认为比更早请求的时间更重要。
一种这样的***和方法使用指数衰减。仅仅作为示例,每个项目可被分配一个优先级值,以便如果必要,将较低优先级的项目从高速缓存中移除从而为较高优先级的项目提供空间。仅仅一个可能的方法包括为每个项目分配优先级值“E”,其中:
En=-1*(ALPHA*LSn+(1-ALPHA)*En-1);
“n”表示第n个发生的请求,例如,E10表示项目被请求10次后的优先级值;
“LSn”表示第n个发生的请求与之前的请求之间逝去的时间值,例如,LS10表示在对项目的第9次请求和第10次请求之间逝去的时间值;以及
“ALPHA”表示0和1之间的值且包括0和1。
在这方面,处理器可在项目每次被请求时计算它的优先级值。如果结果指示项目的优先级比高速缓存中的其他项目高,项目被高速缓存。如果高速缓存中没有足够的空间给项目,较低优先级的项目可被移除。(应理解,上述公式中的乘数-1可省略,在这种情况下,可认为较高的En值比较低的En值更不需要高速缓存。)
如上所述,可计算优先级值以便相比于较早的请求给予最近的请求更大的权重。在这方面,如果使用上述对于En的公式,可以选择ALPHA从而为最晚的请求提供更大或更小的权重。例如,如果选择ALPHA为0.9,优先级值的90%依赖于当前请求和最后请求之间的持续时间。但是,如果选择ALPHA为0.2,优先级值仅20%依赖于当前请求和最后请求之间的持续时间;其余将依赖于先前请求之间的持续时间。在这方面,可基于***的需求选择ALPHA。也可基于***的周期性统计分析自动地和动态地调整ALPHA。
随着随后接收到更多的请求,先前请求对项目的高速缓存优先级的影响可指数地减小。例如,假设对项目有10个请求。即使En的ALPHA值设置为0.2(使得优先级值仅20%依赖于两个最近请求之间的持续时间),第一和第二请求之间的持续时间对优先级值的影响将远远小于第九和第十请求之间的持续时间对优先级值的影响。实际上,如果ALPHA为0.2且存在约10个请求,那么最后的持续时间的影响相比于最早的持续时间可约为10:1。另一方面,ALPHA可设置为1,在这种情况下,优先级值完全依赖于最后的请求之间的持续时间。
如果第一次接收到对项目的请求并使用上述用于En的公式,可为E0选取默认值。因为较小的E值典型地指示较高优先级的项目,因此如果优选给予以前从未见过的项目高优先级,那么可为E0选取小的默认值,反之亦然。
可替换地,请求记录145可为每个项目存储单一的“E”值,也就是,它不为每个项目的每次请求存储一个分离的E值。在这方面,当项目被第一次请求时,可存储特定的E值以指示项目的最后请求也是它的第一次请求。当接收到对项目的下一个请求时,本***和方法可检查当前E值是否与特定值相同。如果相同,可假设ALPHA=1来计算E值,其中将公式中的所有权重放置在第一和第二请求之间的时间间隔上。如果本***和方法确定当前E值不是特定值,那么将根据ALPHA的通常值计算公式。无论如何,***和方法然后可使用新计算出的E值替换先前的E值。
本***和方法的一个优点是它的灵活性,例如它能够在与上述方面不同的配置中实施,或者可以与上述方面协同合作。
例如,上述***和方法可与其他***和方法相结合用于确定信息项目是否应被高速缓存。在这方面,可存在这样的情况:对项目进行高速缓存,而不管它从未被之前请求过的事实。处理器可在每当高速缓存存在空间时自动地将项目存储在高速缓存中,也就是,项目的大小小于高速缓存的总容量减去存储在高速缓存中的所有其他项目(如果有的话)的组合大小。可替换地,可存在与项目相关的其他可指示项目是否应被高速缓存的特征。例如,可为处理器提供指示文件非常受欢迎的信息,且上面描述的En公式可包括文件的受欢迎度作为权重因子。
本***和方法还可基于请求的时间做出高速缓存的决策而不存储请求的准确日期和时间。如上面结合优先级值的描述,本***和方法可存储从具有很多参数的公式计算出的值,其中很多参数中仅仅一个为请求时间。
还如上所述,本***和方法不受项目的任何特定大小的限制。仅仅作为示例,单个项目可包括大小可变化的文件、数据的固定大小的部分或者两者均包括。可考虑以固定大小的区块进行存储和流动的大小可变化的音频文件的例子,例如包括4个每个2MB的区块和一个0.5MB的区块的8.5MB的文件。用户经常在观看完开头后停止视频,因此服务器很可能将仅发送第一个区块或前两个区块。一方面,本***和方法可考虑每个区块为一个分离项目,在这种情况下,前两个区块可能被高速缓存而其余区块可能不被高速缓存。
另一方面,本***和方法可考虑整个文件为单独的项目,在这种情况下,对应于对文件的反复请求,即使仅仅第一个或前两个区块被传送至终端用户,也对所有的区块进行高速缓存。当服务器110根据HTTP协议通过代理主机从其他服务器供应文件时,这个方面可以是特别有用的;对于服务器110,可能不可能从它的高速缓存流出被请求文件的前两个区块而将其余区块重定向至其他服务器。
又另一方面,本***和方法可根据***和方法高速缓存整个项目再根据不同的标准逐出部分的项目。例如,服务器可基于对文件的请求记录高速缓存8.5MB文件的所有四个区块。但是,服务器还可使用熟知的高速缓存算法(例如,最近最少使用(LRU)算法)来偶尔逐出不受欢迎的区块,例如如果8.5MB文件的最后两个区块很少被发送给用户则将它们逐出。如上所述,本***和方法可通过将最新被请求的文件的请求时间与最近被逐出的项目的存活间隔相比较来确定是否高速缓存最新被请求的项目。在本说明书中描述的方面中,本***和方法可将最新被请求的文件的请求时间与最近被逐出的区块的存活时间进行比较。
而且,尽管当本***和方法与大型客户端/服务器内容-分发网络结合使用时可涌出特定优点,但是某些方面也可在如计算机芯片一样小的闭合***中实施。仅仅作为示例且如图2中所示,微处理器210可从指令源220预提取微代码指令序列,并且如果***预计指令将在不久的将来被使用,将它们存储在位于单个半导体芯片240上的相对较小的高速缓存230中。在这方面,信息的单独的项目可组成被微处理器检索和处理的微代码指令序列。当微处理器210需要指令时,从高速缓存控制250中请求它。如果指令是分支指令的一部分且指令的分支存储在高速缓存230中,控制250从高速缓存中提供指令。否则,控制250从指令存储220中获取可应用的分支。如果分支被第一次从存储220中检索,那么它将不被高速缓存。但是,如果分支已被之前检索过,那么控制250可基于分支被处理的最后时间与存储在高速缓存中的其他分支的关系决定对分支进行高速缓存。
相反地,本***和方法可在比上面描述的网络更大的基于***的网络中实施。例如,如图3所示,边服务器310可从第二级服务器315-16中请求数据,第二级服务器315-16可具有它们各自的高速缓存325-26和请求记录组335-36,且仅包含可从其他服务器得到的文件的一部分,其中其他服务器由操作如图3中示出的服务器的公司来操作。在很多情况下,第二级服务器将具有比边服务器更大的存储容量,如更大的高速缓存大小。由此,第二级服务器315-16可从其他服务器如第三级服务器340-41请求文件,反过来,第三级服务器可存储(或者能够获取)可经由服务器310得到的所有信息。由此,来自任何的客户端装置150-53的对文件的请求可导致对文件的请求和它的高速缓存将整个***300的多级级联起来。在这方面,可使用本***和方法来确定将哪个文件高速缓存在边服务器310以及哪个文件应被重新定向到具有更大容量的大型高速缓存。
当本***和方法与地域性分布的边服务器结合使用时,可能会特别地有利。例如,如果本***和方法在位于广泛分布地理区域中的边服务器上实施,由边服务器服务的请求可很大程度上根据位置而变化。例如,使用日语的搞笑视频剪辑可能在由东京的边高速缓存服务的用户中更受欢迎。但是,剪辑可能在由伦敦的边高速缓存服务的用户中不受欢迎,因此将不存储剪辑。
单个服务器也可具有多级高速缓存并无需借助网络而访问这些高速缓存。例如,如图4中所示,计算机400可首先通过查询与高速缓存411相关的请求记录410检查项目。如果项目不在高速缓存中,可查询与第二独立高速缓存421相关的第二独立组的请求记录420。如果第二高速缓存不含有该项目,则计算机可检查与其他组的请求记录相关的其他高速缓存。
在这方面,本***和方法可与具有多个不同类型的存储器的装置相结合使用。例如,服务器可在本地访问单个的固态硬盘(例如,随身碟)和多个本地磁盘驱动。闪存可比硬盘驱动具有更小的容量,但是平均而言,它也可能够比硬盘驱动更快地提供信息。更进一步,服务器可包含少于全部的可被请求的信息;由此,它可访问存储在产生信息的服务器上的信息。这个信息可以以区块的形式存储,区块共同地组成视频文件。
图6仅仅示出可在***中实施的一种方法,其中***中以不同级的检索速度和容量存储信息的区块,例如,闪存、磁盘驱动和位于其他节点的存储器(如从原始服务器)。可从存储区块的最快存储器中检索区块,例如,如果在闪存中则从闪存中检索,如果不在则从磁盘驱动中检索,以及如果既不存储在闪存中也不存储在磁盘驱动中则从原始服务器中检索。而且,每当从原始服务器中撷取区块时,可在本地磁盘上存储副本(并在必要时从本地磁盘逐出最不活跃的区块)。
但是,尽管在从服务器中检索区块后,可自动地将区块存储在磁盘存储器中,但是在从磁盘中检索区块后,可不自动地将它放置在闪存中。而且,可不将区块从原始服务器直接送至闪存。更确切地,在本发明***和方法的一个方面,如标号610-13所示,当从区块的最后请求起逝去的时间比闪存中的最近被逐出的区块的存活时间短时,区块仅从磁盘存储器被送至闪存。
又另一方面,如果闪存中存在空间,图6的***和方法将自动地将区块存储在闪存中。可替换地,它可在从高速缓存的空白状态开始至高速缓存的区块的第一个逐出为止的时间间隔内自动地将从原始服务器接收到的任何区块直接存储到闪存中(例如,不通过磁盘)。
除了依赖客户端装置请求项目的日期和时间外,高速缓存还可使用其他基于时间的事件作为高速缓存决定的基础。例如,如果信息项目是可执行文件并且***和方法在个人计算机上实施,那么可认为请求的有关时间为文件从磁盘下载到专用的磁盘高速缓存的时间(也就是,在计算机的组件中生成的请求,形成下载文件至磁盘高速缓存的需求的请求,请求的时间为文件开始下载的时间)。可替换地,请求的时间可以认为是将文件下载到RAM后处理器开始执行文件的时间。更进一步地,请求的时间可以认为是接收到请求的时间、发送请求的时间、或者完成请求的时间。
本***和方法可以进一步包括不同的保护数据的措施。例如,尽管请求记录145可以存储为RAM中的元数据以快速访问,但是记录也可经常存储到磁盘,以便如果相关程序死机或者其他程序重启,可从磁盘读取到状态而不需重建。
上述可替换实施例的大部分是不相互排斥的,相反可以以不同的组合来实施以实现独特的优点。由于可在不脱离由权利要求所定义的本发明的范围内使用上面讨论的特征的这些和其他变化和组合,因此上述实施例的描述应被理解为说明而不是如权利要求所定义的对本发明的限制。还应理解,本发明的例子的提供(以及用“例如”、“包括”等等表达的短语)不应解释为将本发明限制为特定例子;更确切地,这些例子仅是用于说明很多可行的实施例的一个。
工业应用性
本发明具有广泛的工业应用性,包括但不限于计算机数据处理***。
Claims (14)
1.一种高速缓存信息的方法,包括:
在处理器处接收对信息项目进行处理的请求,其中所述处理器具有相关的高速缓存;
当被请求的项目存储在所述高速缓存中时,从所述高速缓存中检索所述被请求的项目;
当所述被请求的项目不存储在所述高速缓存中时,从其他存储器中检索所述被请求的项目;
当所述被请求的项目在预定期间内未被之前请求过时,处理所述被请求的项目而不将所述被请求的项目存储在所述高速缓存中;
当所述被请求的项目在预定期间内已被之前请求过且所述之前请求的时间比对存储在所述高速缓存中的一组项目的每个项目的最近请求都早时,处理所述被请求的项目而不将所述被请求的项目存储在所述高速缓存中;
当所述被请求的项目在预定期间内已被之前请求过且所述之前请求的时间比对存储在所述高速缓存中的所述一组项目的至少一个项目的最近请求晚时,处理所述被请求的项目且将所述被请求的项目存储在所述高速缓存中;以及
当对某个项目的最后请求比对存储在所述高速缓存中的所述一组项目中的任何其他项目的最后请求都早时,从存储在所述高速缓存中的所述一组项目中移除所述某个项目。
2.根据权利要求1所述的高速缓存信息的方法,其中由服务器通过网络从客户端装置接收所述请求,且处理所述被请求的项目的请求包括将所述被请求的项目发送至所述客户端装置。
3.根据权利要求2所述的高速缓存信息的方法,其中所述被请求的项目包括将在所述客户端装置提供的音频或视频数据。
4.根据权利要求3所述的高速缓存信息的方法,其中所述被请求的项目包括文件。
5.根据权利要求4所述的高速缓存信息的方法,其中所述被请求的项目包括部分的文件。
6.根据权利要求1所述的高速缓存信息的方法,其中在将所述被请求的项目存储到所述高速缓存中之前移除所述某个项目。
7.根据权利要求6所述的高速缓存信息的方法,其中当所述被请求的项目的大小超过所述高速缓存的大小减去存储在所述高速缓存中的所述一组项目的组合大小时,移除所述某个项目。
8.根据权利要求1所述的高速缓存信息的方法,其中所述被请求的项目包括内容文件,处理所述被请求的项目的请求包括将内容提供给用户。
9.根据权利要求1所述的高速缓存信息的方法,其中存储在所述高速缓存中的所述一组项目包括存储在所述高速缓存中的所有项目。
10.一种高速缓存信息的***,包括:
高速缓存,所述高速缓存被配置为用于存储信息项目;
其他存储器,所述其他存储器被配置为用于存储其他信息项目;和
处理器,所述处理器被配置为响应于来自请求装置的对被请求项目的请求在所述高速缓存中检索和存储项目并将所述被请求的项目提供至所述请求装置;
当所述被请求的项目存储在所述高速缓存中时,所述处理器从所述高速缓存中检索所述被请求的项目;
当所述被请求的项目不存储在所述高速缓存中,所述处理器从所述其他存储器中检索所述被请求的项目;
当所述被请求的项目在预定期间内未被之前请求过时,所述处理器将所述被请求的项目提供至所述请求装置,并在下一个请求之前不将所述被请求的项目存储在所述高速缓存中;
当所述被请求的项目在预定期间内已被之前请求过且所述之前请求的时间比存储在所述高速缓存中的一组项目的每个项目的最后请求时间都早时,所述处理器将所述被请求的项目提供至所述请求装置,并在下一个请求之前不将所述被请求的项目存储在所述高速缓存中;以及
当所述被请求的项目在预定期间内已被之前请求过且所述之前请求的时间比存储在所述高速缓存中的所述一组项目的至少一个项目的最后请求时间晚时,所述处理器将所述被请求的项目提供至所述请求装置且在下一个请求之前将所述被请求的项目存储在所述高速缓存中,
所述处理器还用于当对某个项目的最后请求比对存储在所述高速缓存中的所述一组项目中的任何其他项目的最后请求都早时,从存储在所述高速缓存中的所述一组项目中移除所述某个项目。
11.根据权利要求10所述的高速缓存信息的***,其中所述处理器在网络的节点处,且所述请求装置包括在与所述处理器的节点不同的网络节点处的装置。
12.根据权利要求10所述的高速缓存信息的***,其中所述处理器在网络的节点处,且所述请求装置包括在与所述处理器的节点不同的多个网络节点处的多个装置。
13.根据权利要求12所述的高速缓存信息的***,其中所述信息项目包括视频信息,所述网络包括互联网,且所述请求装置包括用户计算机。
14.根据权利要求10所述的高速缓存信息的***,其中所述处理器处理从所述高速缓存和其他存储器中检索的项目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510204702.6A CN104915319B (zh) | 2009-08-21 | 2010-08-20 | 高速缓存信息的***及方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/545,225 US8566531B2 (en) | 2009-08-21 | 2009-08-21 | System and method of selectively caching information based on the interarrival time of requests for the same information |
US12/545,225 | 2009-08-21 | ||
PCT/US2010/002317 WO2011022079A2 (en) | 2009-08-21 | 2010-08-20 | System and method of caching information |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510204702.6A Division CN104915319B (zh) | 2009-08-21 | 2010-08-20 | 高速缓存信息的***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102576350A CN102576350A (zh) | 2012-07-11 |
CN102576350B true CN102576350B (zh) | 2015-05-27 |
Family
ID=43606203
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510204702.6A Active CN104915319B (zh) | 2009-08-21 | 2010-08-20 | 高速缓存信息的***及方法 |
CN201080047230.3A Active CN102576350B (zh) | 2009-08-21 | 2010-08-20 | 高速缓存信息的***及方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510204702.6A Active CN104915319B (zh) | 2009-08-21 | 2010-08-20 | 高速缓存信息的***及方法 |
Country Status (9)
Country | Link |
---|---|
US (7) | US8566531B2 (zh) |
EP (3) | EP2467784B1 (zh) |
JP (2) | JP5592489B2 (zh) |
CN (2) | CN104915319B (zh) |
AU (1) | AU2010284682B2 (zh) |
CA (3) | CA2771599C (zh) |
DE (1) | DE202010018478U1 (zh) |
DK (2) | DK3125131T3 (zh) |
WO (1) | WO2011022079A2 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341207B2 (en) * | 2010-04-07 | 2012-12-25 | Apple Inc. | Apparatus and method for matching users for online sessions |
WO2011153478A2 (en) * | 2010-06-04 | 2011-12-08 | Flashsoft Corporation | Cache management and acceleration of storage media |
US8732569B2 (en) * | 2011-05-04 | 2014-05-20 | Google Inc. | Predicting user navigation events |
US8527467B2 (en) * | 2011-06-30 | 2013-09-03 | International Business Machines Corporation | Compression-aware data storage tiering |
JP5304853B2 (ja) * | 2011-07-27 | 2013-10-02 | 株式会社デンソー | 連携システム、ナビゲーションシステム、車載装置、及び、携帯端末 |
EP2742428B1 (en) | 2011-08-12 | 2016-01-06 | Sandisk Enterprise IP LLC | Cache management including solid state device virtualization |
US9164904B2 (en) * | 2012-08-28 | 2015-10-20 | Hewlett-Packard Development Company, L.P. | Accessing remote memory on a memory blade |
WO2014138411A1 (en) * | 2013-03-06 | 2014-09-12 | Condusiv Technologies Corporation | System and method for tiered caching and storage allocation |
EP2819367A1 (en) * | 2013-06-28 | 2014-12-31 | Thomson Licensing | Method for retrieving, by a client terminal, a content part of a multimedia content |
JP6027504B2 (ja) * | 2013-08-02 | 2016-11-16 | 日本電信電話株式会社 | アプリケーションサーバ、およびキャッシュ制御方法 |
US20160062916A1 (en) * | 2014-08-27 | 2016-03-03 | The Board Trustees Of The Leland Stanford Junior University | Circuit-based apparatuses and methods with probabilistic cache eviction or replacement |
US9866647B2 (en) * | 2015-03-26 | 2018-01-09 | Alcatel Lucent | Hierarchical cost based caching for online media |
EP3281363A4 (en) * | 2015-06-12 | 2018-02-21 | Hewlett-Packard Enterprise Development LP | Application identification cache |
US9904874B2 (en) * | 2015-11-05 | 2018-02-27 | Microsoft Technology Licensing, Llc | Hardware-efficient deep convolutional neural networks |
CN109947665B (zh) * | 2017-12-20 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种缓存方法及装置 |
US10860498B2 (en) * | 2018-11-21 | 2020-12-08 | SK Hynix Inc. | Data processing system |
US10963381B2 (en) * | 2018-11-26 | 2021-03-30 | Verizon Digital Media Services Inc. | Dynamic caching and eviction |
CN110046175B (zh) * | 2019-03-18 | 2023-02-28 | 创新先进技术有限公司 | 一种缓存更新、数据返回方法及装置 |
US11036594B1 (en) | 2019-07-25 | 2021-06-15 | Jetstream Software Inc. | Disaster recovery systems and methods with low recovery point objectives |
US11393548B2 (en) * | 2020-12-18 | 2022-07-19 | Micron Technology, Inc. | Workload adaptive scans for memory sub-systems |
CN113971144B (zh) * | 2021-10-27 | 2024-04-16 | 合肥学院 | 一种用于多处理器优先级仲裁的动态混合彩票方法 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297270A (en) * | 1989-11-13 | 1994-03-22 | Zenith Data Systems Corporation | Programmable cache memory which associates each section of main memory to be cached with a status bit which enables/disables the caching accessibility of the particular section, and with the capability of functioning with memory areas of varying size |
JP2502844B2 (ja) * | 1991-07-11 | 1996-05-29 | 松下電送株式会社 | 電子ファイル装置 |
US5611049A (en) * | 1992-06-03 | 1997-03-11 | Pitts; William M. | System for accessing distributed data cache channel at each network node to pass requests and data |
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
CA2130395C (en) | 1993-12-09 | 1999-01-19 | David G. Greenwood | Multimedia distribution over wide area networks |
US5813031A (en) * | 1994-09-21 | 1998-09-22 | Industrial Technology Research Institute | Caching tag for a large scale cache computer memory system |
US6266742B1 (en) * | 1997-10-27 | 2001-07-24 | International Business Machines Corporation | Algorithm for cache replacement |
KR19990049284A (ko) * | 1997-12-12 | 1999-07-05 | 구본준 | 데이터 프로그램 장치 |
JP2001318902A (ja) * | 2000-05-09 | 2001-11-16 | Matsushita Electric Ind Co Ltd | キャッシュ装置 |
JP3612271B2 (ja) * | 2000-09-12 | 2005-01-19 | 株式会社東芝 | ファイルシステム |
US6970939B2 (en) * | 2000-10-26 | 2005-11-29 | Intel Corporation | Method and apparatus for large payload distribution in a network |
US20020103974A1 (en) * | 2000-11-29 | 2002-08-01 | Giacomini Peter Joseph | Method and apparatus for economical cache population |
US6745295B2 (en) * | 2001-04-19 | 2004-06-01 | International Business Machines Corporation | Designing a cache with adaptive reconfiguration |
US7444662B2 (en) * | 2001-06-28 | 2008-10-28 | Emc Corporation | Video file server cache management using movie ratings for reservation of memory and bandwidth resources |
JP4042359B2 (ja) * | 2001-07-10 | 2008-02-06 | 日本電気株式会社 | キャッシュ制御方法及びキャッシュ装置 |
US6687792B2 (en) * | 2001-09-27 | 2004-02-03 | Siemens Information & Communication Networks, Inc. | Method and system for selectively caching web elements |
US6687793B1 (en) * | 2001-12-28 | 2004-02-03 | Vignette Corporation | Method and system for optimizing resources for cache management |
KR100496159B1 (ko) | 2002-06-29 | 2005-06-20 | 주식회사 케이티 | 유용성 기반의 질의 결과 캐쉬 관리 방법 |
US7093072B2 (en) * | 2003-02-21 | 2006-08-15 | Enterasys Networks, Inc. | Methods for improved data caching |
US7073027B2 (en) * | 2003-07-11 | 2006-07-04 | International Business Machines Corporation | Methods, systems and computer program products for controlling caching of distributed data |
US7496715B1 (en) * | 2003-07-16 | 2009-02-24 | Unisys Corporation | Programmable cache management system and method |
US7349968B2 (en) * | 2003-07-31 | 2008-03-25 | International Business Machines Corporation | Method, system and program product for asynchronously processing requests |
US7085894B2 (en) * | 2003-09-11 | 2006-08-01 | International Business Machines Corporation | Selectively accepting cache content |
BRPI0419075A (pt) * | 2004-10-06 | 2007-12-11 | Thomson Licensing | método e sistema para armazenar dados em cache |
US7228388B2 (en) * | 2004-11-19 | 2007-06-05 | International Business Machines Corporation | Enabling and disabling cache bypass using predicted cache line usage |
WO2007001518A1 (en) * | 2005-06-14 | 2007-01-04 | Broadband Royalty Corporation | Media stream distribution system |
TWI265414B (en) * | 2005-07-25 | 2006-11-01 | Ind Tech Res Inst | Data caching method and computer program product therefor |
US20070094450A1 (en) * | 2005-10-26 | 2007-04-26 | International Business Machines Corporation | Multi-level cache architecture having a selective victim cache |
US7577793B2 (en) * | 2006-01-19 | 2009-08-18 | International Business Machines Corporation | Patrol snooping for higher level cache eviction candidate identification |
JP2007241612A (ja) * | 2006-03-08 | 2007-09-20 | Matsushita Electric Ind Co Ltd | マルチマスタシステム |
US8166248B2 (en) * | 2006-06-12 | 2012-04-24 | Arris Group, Inc. | Caching of information according to popularity |
US7502890B2 (en) * | 2006-07-07 | 2009-03-10 | International Business Machines Corporation | Method and apparatus for dynamic priority-based cache replacement |
US7826944B2 (en) * | 2006-12-14 | 2010-11-02 | General Motors Llc | Configurable vehicle bus storage cache mechanism |
US7644230B1 (en) * | 2007-03-15 | 2010-01-05 | Silver Peak Systems, Inc. | Dynamic load management of network memory |
US20090144388A1 (en) * | 2007-11-08 | 2009-06-04 | Rna Networks, Inc. | Network with distributed shared memory |
US8612698B2 (en) * | 2008-10-31 | 2013-12-17 | Intel Corporation | Replacement policy for hot code detection |
US8103822B2 (en) * | 2009-04-26 | 2012-01-24 | Sandisk Il Ltd. | Method and apparatus for implementing a caching policy for non-volatile memory |
-
2009
- 2009-08-21 US US12/545,225 patent/US8566531B2/en active Active
-
2010
- 2010-08-20 EP EP10810295.5A patent/EP2467784B1/en active Active
- 2010-08-20 CN CN201510204702.6A patent/CN104915319B/zh active Active
- 2010-08-20 EP EP20178341.2A patent/EP3722962A1/en active Pending
- 2010-08-20 DK DK16188263.4T patent/DK3125131T3/da active
- 2010-08-20 CA CA2771599A patent/CA2771599C/en active Active
- 2010-08-20 WO PCT/US2010/002317 patent/WO2011022079A2/en active Application Filing
- 2010-08-20 JP JP2012525535A patent/JP5592489B2/ja active Active
- 2010-08-20 AU AU2010284682A patent/AU2010284682B2/en active Active
- 2010-08-20 CN CN201080047230.3A patent/CN102576350B/zh active Active
- 2010-08-20 DK DK10810295.5T patent/DK2467784T3/en active
- 2010-08-20 CA CA3026715A patent/CA3026715C/en active Active
- 2010-08-20 CA CA2942418A patent/CA2942418C/en active Active
- 2010-08-20 EP EP16188263.4A patent/EP3125131B1/en active Active
- 2010-08-20 DE DE202010018478.9U patent/DE202010018478U1/de not_active Expired - Lifetime
-
2011
- 2011-08-19 US US13/213,779 patent/US8572327B2/en active Active
-
2013
- 2013-10-08 US US14/048,869 patent/US8812791B2/en active Active
- 2013-10-16 US US14/055,210 patent/US8825960B2/en active Active
- 2013-10-16 US US14/055,357 patent/US8825961B2/en active Active
-
2014
- 2014-04-01 US US14/242,266 patent/US8904116B2/en active Active
- 2014-07-24 JP JP2014150555A patent/JP5814436B2/ja active Active
- 2014-07-28 US US14/444,057 patent/US9104605B1/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102576350B (zh) | 高速缓存信息的***及方法 | |
US8516114B2 (en) | Method and apparatus for content pre-fetching and preparation | |
KR101228230B1 (ko) | 컨텐츠 전달 네트워크 내의 노드에서 하나 이상의 컨텐츠 아이템을 캐싱하는 방법, 장치 및 제품 | |
CN108055302B (zh) | 一种图片缓存处理方法、***和服务器 | |
JP2007510224A (ja) | プロキシキャッシュにおいてマルチメディアコンテンツのセグメントの優先順位を決める方法 | |
CN102307234A (zh) | 基于移动终端的资源检索方法 | |
AU2015201273B2 (en) | System and method of caching information | |
JP5272428B2 (ja) | アクセス頻度の高い情報を事前にキャッシュする予測型キャッシュ方法、そのシステム及びそのプログラム | |
EP4085594A1 (en) | Systems and methods for storing content items in secondary storage | |
CN116069529B (zh) | 一种动态缓存方法、装置、电子设备及计算机可读介质 |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: Google limited liability company Address before: American California Patentee before: Google Inc. |