CN102150131B - 管理高速缓存数据和元数据 - Google Patents
管理高速缓存数据和元数据 Download PDFInfo
- Publication number
- CN102150131B CN102150131B CN200980136912.9A CN200980136912A CN102150131B CN 102150131 B CN102150131 B CN 102150131B CN 200980136912 A CN200980136912 A CN 200980136912A CN 102150131 B CN102150131 B CN 102150131B
- Authority
- CN
- China
- Prior art keywords
- address
- cache
- cache device
- data item
- storage
- 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/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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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
-
- 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/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
- G06F2212/2146—Solid state disk being detachable, e.g.. USB memory
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明的各实施例提供用于确保可以依赖非易失性存储器设备的内容跨诸如重新引导等电源转换准确地反映存储在盘存储上的数据的技术。例如,本发明的一些实施例提供用于确定高速缓存内容和/或盘内容在电源转换期间是否被修改从而使得高速缓存内容不再准确地反映存储在盘存储中的数据的技术。此外,一些实施方式提供用于在正常操作(“稳定状态”)期间以及跨电源转换管理高速缓存元数据的技术,从而确保高速缓存元数据可跨电源转换被有效地访问并被可靠地保存和还原。
Description
发明领域
本发明涉及用于使用非易失性存储器设备的技术,如可移动和不可移动非易失性随机存取存储器(NVRAM)设备。
背景技术
一些常规操作系统提供采用非易失性存储器设备(即,可用于向计算机提供辅助存储和/或存储器的外围设备,如闪存USB驱动器)来作为较慢存储设备(例如,盘存储介质或可经由网络访问的一个或多个存储设备)的块或文件级高速缓存以提高操作系统和/或应用程序的性能的能力。在这一方面,因为对非易失性存储器设备(此后,为简明起见称为“高速缓存设备”)的读和写操作与对较慢存储设备的读和写操作相比可以执行得更快,所以使用高速缓存设备来对存储在这样的较慢设备上的数据进行高速缓存提供了显著地提高操作系统和/或应用程序的输入/输出(I/O)操作的速度的机会。为此,美国华盛顿州雷蒙德市的微软公司生产的微软Windows Vista操作系统包括被称为ReadyBoost(就绪推进)的特征,该特征允许用户使用高速缓存设备来对还驻留在较慢存储设备(此后为方便起见称为“盘存储”或“盘”,但应当理解,这些术语一般指I/O通常执行得比高速缓存设备慢的任何存储介质和/或设备,包括可经由网络访问的存储设备)中的数据进行高速缓存。
采用高速缓存设备来对存储在盘上的数据进行高速缓存可以使用高速缓存管理器组件来实现,在一些实现中,该组件是在操作系统的I/O栈中实现的驱动程序。图1A-1B描绘示例高级过程10A-10B,其中高速缓存管理器组件100对数据在高速缓存设备110中的高速缓存进行管理。可以使用有线和/或无线通信基础结构和协议来将高速缓存设备110耦合到高速缓存管理器110所处的计算机(未示出)上。例如,高速缓存设备110可以是可从计算机(例如,包括闪存USB驱动器)移除的、不可移除的和/或可由计算机经由一个或多个有线和/或无线网络来访问。
在过程10A(图1A)的开始,高速缓存管理器100接收指定数据应被写入盘存储(即,高速缓存的卷120)上的地址X的写请求。高速缓存管理器100通过在操作101使得该数据被写到高速缓存的卷120上的地址X并还在操作102使得该数据被写到高速缓存设备110上的地址Y来处理该请求。过程10B(图1B)包括在接收到指定应当读出存储在高速缓存的卷120上的地址X处的数据的读请求之后执行的操作。高速缓存管理器100确定该数据被高速缓存在高速缓存设备110上的地址Y处,并且在操作103使得在地址Y处的数据被读取。随后在操作104,从高速缓存设备来提供该数据以满足读请求。
高速缓存管理器在元数据中维护盘地址(例如,地址X)到对应的高速缓存地址(例如,地址Y)的映射,并且这一“高速缓存元数据”通常被用于从高速缓存设备读取或向其写入。通常,高速缓存元数据被维护在存储器中并且在接收到I/O请求时由高速缓存管理器来访问。如此,在高速缓存管理器接收到定向到盘偏移X的读请求时,高速缓存管理器使用该高速缓存元数据来确定该数据还被存储在高速缓存偏移Y处,并且通过使得从高速缓存偏移Y而非盘偏移X读取该数据来满足该请求。在高速缓存管理器接收到定向到盘偏移X的写请求时,高速缓存管理器采用该高速缓存元数据来确定该盘地址处的数据是否也被存储在高速缓存中。如果是(例如,如果该数据被存储在高速缓存地址Y处),高速缓存管理器可以使得该数据被写到高速缓存中的适当地址或驱逐在该地址处的高速缓存内容。如果否,则高速缓存管理器可以使得该数据被写到高速缓存,并可以更新高速缓存元数据以使得将来对盘偏移X的读取可以改为从存储在高速缓存中的数据来进行服务。
常规操作系统能够支持具有相对有限存储容量的高速缓存设备。例如,WindowsVista操作系统的ReadyBoost特征支持具有多达4GB存储容量的高速缓存设备。(在发行Windows Vista时,高速缓存设备的最大存储容量大约是2GB。)高速缓存设备的存储容量近年来增长迅速,其中一些高速缓存设备提供多达16GB的存储容量,在进行压缩的情况下这可存储相对于32GB数据。
发明内容
申请人明白,具有相对较大存储容量的高速缓存设备提供很大的机会来提高操作系统和应用程序所执行的I/O操作的速度。申请人还明白,常规操作系统只支持具有相对有限存储容量的高速缓存设备的一个原因是在发生某种类型的电源转换(例如,待机、休眠(或非微软Windows操作系统所使用的等效模式)、或重启)时高速缓存内容必须被重新填充。对于具有相对较大存储容量的高速缓存设备,重新填充高速缓存内容可花费相当长的时间并消费显著的处理资源。作为示例,在使用来自盘的大约10MB每秒的后台I/O的情况下,可保持多达16GB压缩数据的8GB闪存设备可能花费多达30分钟来重新填充。这不仅有效地否定了通过采用高速缓存设备所获得的任何性能好处,而且可显著地拖慢系统操作。
高速缓存内容必须在某些电源转换之间重新填充的一个原因是在计算机重启时没有方法来可靠地确保高速缓存内容准确地表示盘存储的内容,因为高速缓存设备和/或盘的内容可能在该电源转换期间被修改。例如,在第一计算机关机时,黑客可以将可移动高速缓存设备断开连接,将其连接到另一计算机,并修改高速缓存内容,以使得在该设备随后被重新连接到第一计算机的情况下,不正确的数据(此后称为“不可信”数据)可能从该高速缓存设备提供以满足I/O请求。除黑客的恶意动作之外,在电源转换期间,高速缓存内容也可能由于计算机或高速缓存设备的硬件故障而被毁坏。
在电源转换期间,高速缓存内容也可因盘上的数据在该转换期间被更新而变“旧”,使得在计算机重启时,高速缓存内容不再准确地表示盘内容。例如,在关机之后,用户可能将盘引导到不能识别该高速缓存设备的另一操作系统并且修改被高速缓存在该高速缓存设备上的存储在盘上的数据,使得在计算机重启时,高速缓存内容不再反映存储在盘上的内容。在另一示例中,在关机期间,计算机上的一些动作可在高速缓存设备被呈现为不可由操作系统访问之后发生,(例如,在高速缓存设备被关闭之后),使得操作系统在这一时间点之后所执行的对盘的任何写操作可能不能被高速缓存内容准确地反映。多个事件中的任一个可以使得高速缓存内容在电源转换之间变旧。
本发明的各实施方式提供用于管理这些和其他问题的技术,使得在电源转换之间就准确地反映存储在盘上的数据而言高速缓存内容是可以依赖的。例如,本发明的一些实施方式提供用于验证高速缓存内容在电源转换之间保持可信的技术。另外,一些实施方式提供用于可靠地确保高速缓存内容在电源转换之间不变旧的技术。此外,一些实施方式提供用于在电源转换之间以及在正常操作(“稳定状态”)期间管理高速缓存元数据的技术,从而确保在电源转换发生时高速缓存元数据可被有效地访问并被可靠地保存和还原。
通过提供确保在电源转换之间就准确地反映存储在盘上的数据而言高速缓存内容可被依赖的技术,本发明的一些实施方式可以允许采用具有大量存储容量的高速缓存设备来显著地加速操作系统和/或应用程序所执行的I/O操作。I/O操作的提高的速度可以不仅加速计算机的正常“稳定状态”操作,还可显著地加速在引导期间执行的操作,使得计算机更块地就绪。
在一些实施方式中,提供了一种用于操作耦合有存储介质和高速缓存设备的计算机的方法,该计算机包括操作系统。该方法包括以下动作:(A)响应于将数据项写入存储介质上的一地址的请求,使得该数据项被写入存储介质上的该地址并被写入高速缓存设备上的对应地址;(B)在操作系统的重新引导之后,确定存储在高速缓存设备上的该地址处的数据项是否可被可靠地用来满足从存储介质上的该地址读取数据项的请求;以及(C)如果在(B)确定存储在高速缓存设备上的该地址处的数据项可被可靠地用来满足从存储介质上的该地址读取数据项的请求,则从高速缓存设备的该地址读取该数据项。
其他实施方式提供其上存储有指令的至少一个计算机存储介质,当该指令由包括操作系统并且其上耦合有高速缓存设备的计算机执行时执行一种方法,该方法包括以下动作:(A)响应于将数据项写入计算机存储介质上的一地址的请求,使得该数据项被写入计算机存储介质上的该地址并被写入高速缓存设备上的对应地址;(B)在操作系统的重新引导之后并响应于从计算机存储介质上的该地址读取数据项的请求,确定存储在高速缓存设备上的该地址处的数据项在(A)之后是否被修改;以及(C)如果在(B)确定存储在高速缓存设备上的该地址处的数据项在(A)之后未被修改,则从高速缓存设备的该地址读取该数据项。
又一些实施方式提供一种计算机,包括:具有其中可以存储数据的至少一个地址的存储介质;具有其中可以存储数据的至少一个地址的高速缓存设备;经由操作系统编程的至少一个处理器,该处理器被编程为:响应于将数据项写入存储介质上的第一地址的请求,使得该数据项被写入存储介质使得第一地址并被写入高速缓存设备上的对应地址;标识对存储介质上的一地址的写操作的发生,该写操作未对高速缓存设备的一地址执行;并且在操作系统的重新引导之后,通过确定对存储介质上的第一地址是否执行了未对高速缓存设备上的对应地址执行的写操作来确定存储在高速缓存设备上的对应地址处的数据项是否可被可靠地用来满足从存储介质上的第一地址读取该数据项的请求。
附图说明
图1A-1B是描绘根据现有技术的用于对高速缓存设备进行读写的技术的框图;
图2A-2B描绘根据本发明的一些实施方式的用于对高速缓存设备进行读写的示例性技术;
图3是描绘根据本发明的一些实施方式的用于确保在电源转换之后高速缓存设备准确地反映存储在盘上的数据的示例性技术的框图;
图4是描绘根据本发明的一些实施方式的用于存储高速缓存元数据的示例性技术的框图;
图5是描绘根据本发明的一些实施方式的高速缓存元数据的示例性存储操作的框图;
图6是根据本发明的一些实施方式的描绘用于使用高速缓存设备来对读请求进行服务的示例性技术的流程图;
图7是描绘可被用来实现本发明的各方面的示例计算机的框图;以及
图8是描绘其上可以记录实现本发明的各方面的示例计算机存储器的框图。
具体实施方式
本发明的一些实施方式提供用于确保在电源转换之间高速缓存内容准确地反映盘存储的内容的技术。例如,一些实施方式提供用于确保在电源转换之间高速缓存内容保持可信和/或没有变旧的能力。此外,一些实施方式提供用于管理高速缓存元数据以确保该元数据在电源转换期间不被篡改的技术。另外,一些实施方式提供用于存储可提高电源转换和正常操作的执行效率的高速缓存元数据的能力。以下章节详细地描述这些实施方式。
I.验证高速缓存数据真实性
在计算机经历电源转换时(例如,进入待机或休眠模式,或被重新引导),高速缓存设备可以从该计算机断开连接,并且其内容可被更改(例如,被恶意黑客更改)。例如,在计算机被带入待机或休眠模式时,诸如闪存驱动器等可移动高速缓存设备可以从该计算机断开连接并且其内容被修改。在重新引导(即,重新加载,从而重启计算机)操作系统时,即使诸如内部NVRAM设备等不可移动设备也可以断开连接并且它们的内容被改变。结果,在高速缓存设备重新连接到计算机时,它可以存储与用户认为的信息所不同的信息(即,存储在高速缓存中的数据可能不是“可信的”)。如果从高速缓存提供不可信的数据来满足输入/输出(I/O)请求,则计算机的操作可能受到不利影响。
本发明的一些实施方式提供用于检测在电源转换期间发生的对高速缓存内容的修改的技术,以确保I/O请求不是使用来自高速缓存的不可信数据来满足的。在一些实施方式中,提供检测在电源转换期间发生的对高速缓存内容的任何“离线修改”的能力,这些离线修改致使高速缓存内容变得不可信。
一些实施方式使用该数据的至少一部分的表示来提供这一能力。例如,可以按预定方式从该数据的至少一部分和/或其他信息计算出或导出表示。该表示可以在该数据被首次写到高速缓存时生成并被存储在一个或多个位置处。例如,表示可以连同该数据一起被写到高速缓存或某一(些)其他位置。当被存储到高速缓存时,该表示可以按将该表示与该数据进行关联的方式来存储(例如,它可被写到与该数据被写到的地址相邻的高速缓存地址、写到与该数据相关联的高速缓存元数据、和/或以某一其他方式进行关联)。当随后从高速缓存读取该数据时,还可以取回该表示。该表示可以按预定的方式来重新生成,并且重新生成的表示可以与取回的表示进行比较。如果这些表示相匹配,则确定从高速缓存导出的数据是可信的,并且被提供来满足读请求。如果否,则发起请求来改为从盘存储读取该数据以满足该读请求,并且存储在高速缓存上的不可信数据可被驱逐(例如,删除)。
图2A-2B更详细地描绘这一过程。具体而言,图2A中的过程20A包括在数据被写到高速缓存时执行的操作,并且图2B中示出的过程20B包括在从高速缓存读取了数据之后执行的操作。过程20A-20B各自包括由高速缓存的卷120(在每一附图的左侧)、高速缓存管理器100(在中间)以及高速缓存设备110(在右侧)所执行的操作。
在过程20A的开始(图2A),在动作205中,高速缓存管理器100接收定向到盘存储上的地址X的写请求。在动作210,高速缓存管理器100采用高速缓存元数据(未示出)来确定该数据还应被写到的高速缓存设备110上的地址Y。高速缓存管理器还生成该数据的至少一部分的表示。
本发明的各实施方式可以使用任何合适的技术来生成这一表示。在一些实施方式中,可以使用一种或多种密码认证技术来生成该表示。例如,在一些实施方式中,该表示可包括从该数据和一组密钥和按数据项的序列号生成的消息认证码(MAC)。然而,本发明不限于这样的实现,因为可以使用用于生成该表示的任何合适技术。例如,不必使用密码认证技术。作为示例,强散列和/或循环冗余码(CRC)可以作为替换使用以表示数据,并且可以从存储到高速缓存的各单独数据项或一组或多组数据项中生成。在这一方面,申请人明白,如果验证数据真实性的目标仅仅是检测硬件故障的情况(即,对数据进行的黑客攻击不是关心的问题),则使用CRC可以是足够的,并且与为每一数据项生成MAC相比可以消费更少处理资源。然而,如果目标是阻止黑客或恶意行动者修改高速缓存内容,则密码解决方案可以是优选的,使得可以使用诸如MAC等表示。本发明不限于任何特定实现,因为可以使用任何合适的技术。
在动作215,高速缓存管理器100对高速缓存设备110发起将数据写到高速缓存地址Y的请求。高速缓存管理器还向高速缓存设备110发起写入表示的请求。例如,高速缓存管理器100可以指定该表示应被写到与高速缓存地址Y相邻的一个或多个位置,或可被存储在该数据的高速缓存元数据中,和/或使用任何其他技术。如上所述,本发明不限于将该表示写到任何特定位置(例如,它不必被写到高速缓存设备110)。如果被写到高速缓存,则该表示可以按任何所需方式来与该数据相关联。
在动作220,高速缓存设备110接收该请求并通过在动作225中写入该数据和该表示来处理该请求。
在动作230,高速缓存管理器100向高速缓存的卷120发起将该数据写到盘地址X的对应请求。在动作235,高速缓存的卷120接收这一请求并且在动作240通过将该数据写到地址X来处理这一请求。虽然在图2A中被示为在地址215-225中的到高速缓存的写操作之后执行,但动作230-240可以与动作215-225并行执行,或在任何其他合适的时间执行,因为本发明不限于任何特定实现。过程20A随后完成。
过程20B(图2B)包括被执行来读取存储到高速缓存的数据的操作。在动作245,高速缓存管理器100接收读取存储在高速缓存的卷120上的地址X处的数据的请求。在动作250,使用高速缓存元数据(未示出),高速缓存管理器100确定该数据存储在高速缓存设备110上的地址Y处。在动作255,高速缓存管理器100向高速缓存设备110发起读请求以取回存储在地址Y处的数据和相关联的表示。在动作260,该请求由高速缓存设备110接收并在动作265进行处理,随之高速缓存设备100将结果返回到高速缓存管理器100。
在动作270,高速缓存管理器100确定从高速缓存取回的数据是否可被验证。在一些实施方式中,这可以通过重新生成数据的表示并将重新生成的表示与最初在动作215生成的表示进行比较来完成。例如,动作270可包括重新生成该数据的MAC或CRC并将其与在动作265从高速缓存取回的表示进行比较。
如果在动作270确定表示可被验证,则该过程进行至动作275,其中提供从高速缓存设备110取回的数据来满足读请求,并且过程20B随后完成。如果在动作270确定该表示可被验证,则该过程进行至动作280,其中高速缓存管理器110向高速缓存设备110发起驱逐(例如擦除或以其他方式使其不可访问)存储在地址Y的数据的请求。在动作285,高速缓存管理器100随后向高速缓存的卷120发起从盘上的地址X读取该数据的请求。在动作290接收该请求并在动作295进行处理,随之将该数据返回到高速缓存管理器100。在动作299,随后提供从地址X读取的数据以满足读请求。过程20B随后完成。
如果使用用于验证数据真实性的密码解决方案,则在电源转换期间,用于生成表示的任何密钥可被写到与高速缓存设备不同的位置,以阻止黑客获得对密钥的访问来重新生成被更改数据项的表示。例如,在一些实施方式中,密钥可被存储在盘存储中(例如,在计算机关机时)以阻止未经授权的访问。然而,本发明不限于这样的实现,因为不必存储密钥,并且如果存储了密钥则该密钥可以驻留在任何合适的位置。例如,所存储的密钥可被置于操作系统所提供的在系统引导期间可用的任何配置存储(例如,Windows中的系统注册表),或基于某用户输入(例如,口令)来重新生成,使得密钥存储不是必需的。
应当明白,用于验证存储在高速缓存设备上的数据项的真实性的上述实施方式仅仅是示例,并且该真实性可以使用任何合适的技术来验证。例如,数据项真实性不一定通过在写入该数据项时生成该数据项的至少一部分的表示(在读取该数据项时该表示稍后被重新生成)来验证。可以使用可靠地确保从高速缓存读取的数据项是可信的并与先前写到高速缓存的数据项相匹配的任何合适的技术。本发明不限于任何特定实现。
II.阻止高速缓存数据变旧
如上所述,在致使高速缓存内容变旧的电源转换期间,常规操作系统不能检测何时对存储在盘上的数据项执行了写操作。本发明的一些实施方式提供用于检测这些“离线写”何时发生的机制,从而确保在电源转换发生之后高速缓存内容准确地反映存储在盘上的数据。
对于一些操作系统(例如,微软公司提供的Windows系列操作系统),一些电源转换(例如,待机和休眠模式)的语义是在电源转换期间不可移动存储设备(例如,盘存储)上的数据不能被修改。如此,与这样的不可移动介质上的数据相对应的高速缓存内容一般不变旧。然而,在计算机关机时,使盘上数据可能被修改的多件事情可能发生。例如,用户可将该盘引导到该计算机上的另一操作系统,或连接到另一计算机,并修改存储在盘上的数据。另外,如上所述,许多常规操作系统的关机机制是在关机期间的某一点处,高速缓存设备被关闭并且不再可由该操作系统访问,但该操作系统可继续访问盘。如此,操作系统可以更新盘上的被高速缓存在高速缓存设备上的数据项。因为高速缓存设备已被关闭,所以操作系统无法也更新这些高速缓存内容,使得它们变旧。
为了管理这些和其他情况,本发明的一些实施方式提供用于检测在启动关机之后对存储在盘上的数据的修改的技术,以使得被这样的修改变旧的高速缓存内容可被更新、从高速缓存中驱逐或以其他方式处理。
为了检测在高速缓存设备被切断之后发生的关机操作期间对盘存储执行的写,本发明的一些实施方式采用写记录器组件。写记录器组件可以例如被实现为操作系统的I/O路径中的驱动程序,但本发明不限于这样的实现。例如,写记录器组件可以是基于硬件的。作为示例,盘存储硬件可以提供一个或多个接口,这些接口提供标识在特定时间段期间发生的一组修改或在特定时间段期间是否发生了修改的能力。例如,盘存储硬件可以提供可被用来推断出至少一些所存储的数据项已被更新的加速自旋/上电/引导计数器,在这种情况下,可以驱逐与存储器盘上的数据相对应的高速缓存内容(这不应频繁地发生,所以采用高速缓存设备仍然具有很多优点)。本发明不限于任何特定实现。
在一些实施方式中,写记录器组件被配置成在启动关机时变得活动,并且保持对盘存储执行的所有写的跟踪,直至关机完成。结果,在稍后重启计算机时,这些写可被应用于高速缓存内容。例如,在重启计算机并且盘卷变得在线时,高速缓存管理器可随后启动并可开始跟踪对盘的写。高速缓存管理器可以查询写记录器组件来确定在高速缓存设备被切断之后发生的离线写,将这些写与高速缓存管理器在启动期间跟踪到的写相归并,并将写的经归并的集合应用于高速缓存内容。将写应用于高速缓存内容可包括例如更新与写被定向到的盘上的数据相对应的高速缓存内容(例如,对这些高速缓存内容执行相同的写操作)、驱逐这些高速缓存内容、这两者的组合(例如,将写操作应用于某些高速缓存内容并驱逐其他高速缓存内容)、或执行某一(些)其他操作。在将离线写应用于高速缓存内容之后,写记录器组件可被关闭,并且高速缓存设备可以开始对I/O请求进行服务。
图3描绘用于跟踪离线写并将这些写应用于高速缓存内容的示例过程30。具体而言,过程300包括由高速缓存管理器100、写记录器300、高速缓存设备110以及高速缓存的卷120在计算机的关机和后续重新引导期间执行的操作。
在动作305(这发生在计算机关机期间),高速缓存管理器100激活写记录器300并向其提供标识写记录器要跟踪的写操作的集合(即,生成)的“持久标识符”。(使用持久标识符的示例在下文详细描述。)在动作310,高速缓存管理器100将持久标识符以及存储在存储器中的高速缓存元数据写到高速缓存设备110中。在关机过程中的这一点处,高速缓存设备110被关闭并变得不可由高速缓存管理器100访问。
在动作315,写记录器300将在动作305传递给它的持久标识符写到高速缓存的卷120,并开始跟踪在关机期间对高速缓存的卷执行的任何写操作。例如,写记录器300可以在高速缓存的卷120上或在某一其他位置处创建日志文件或一个或多个其他数据结构,以指示对其执行写操作的盘上的地址和/或写到这些地址的数据。在动作315完成之后,计算机的关机操作结束。
此后,重启计算机。作为引导过程的一部分,使高速缓存的卷120上线,重启写记录器300和高速缓存管理器100。高速缓存管理器100随后可以开始跟踪对高速缓存的卷120执行的写操作。例如,高速缓存管理器100可以创建日志文件并将其存储在高速缓存设备110、高速缓存的卷120和/或计算机的存储器(未在图3中示出)上。在动作320,写记录器300读取在动作315中记录的卷改变,以及在动作315被写到高速缓存的卷120的持久标识符。随后在动作325,将卷改变和持久标识符传递到高速缓存管理器100。
应当明白,写记录器300可能不能够跟踪在高速缓存设备110被关闭之后对盘的所有写。例如,硬件数据毁坏、不合时宜的断电和/或在写日志文件时的问题可致使记录器300不能够跟踪对盘卷执行的所有离线写。在这种情况下,写记录器300可以在动作325向高速缓存管理器100指示它不能可靠地确定日志是所执行的所有离线写的完整且准确的记录。如果这种情况发生,则高速缓存管理器100因为可能不可靠而可以驱逐整个高速缓存内容或其一部分(例如,与写记录器不能跟踪其所有写操作的特定盘卷相对应)。图3的描述的其余部分设想写记录器300能够跟踪所有离线写。
在动作330,高速缓存管理器100从高速缓存设备110将高速缓存元数据和持久标识符读到存储器中。高速缓存管理器100确定持久标识符是否可被验证(这在下文进一步描述)。如果不能,则高速缓存管理器100可以驱逐高速缓存设备110的整个内容或其一部分(例如,与持久标识符不能被验证的特定盘卷相对应)。如果持久标识符可被验证,则高速缓存管理器100归并对盘存储执行的任何写操作,因为计算机是使用写记录器300跟踪到的任何写操作来重启的。例如,如果一个或多个日志指示被写到盘上的每一地址的数据,则高速缓存管理器100可以选择对每一地址执行的最近更新并将其写到存储器。
在一些实施例中,写记录器300可被配置成在重启计算机之后继续记录写,使得高速缓存管理器100不必记录在该点之后执行的写并将它们与写记录器300跟踪到的写相归并。相反,写记录器300可以简单地向高速缓存管理器100提供所有写的记录。
在动作335,使用在动作330中读取的高速缓存元数据,高速缓存管理器100随后将一组写应用于高速缓存设备110的内容。如上所述,应用写可包括驱逐高速缓存内容、更新高速缓存内容、进行这两个操作、或执行某一(些)其他操作。例如,可以通过驱逐对应的高速缓存内容来应用写记录器300在动作315跟踪到的离线写,而可通过更新对应的高速缓存内容来应用高速缓存管理器100跟踪到的自计算机重启以来的写以反映这些写。将写操作应用于高速缓存内容可以用任何合适的方式来执行,因为本发明不限于任何特定实现。
在动作335完成之后,图3的过程完成。
应当明白,本发明不限于使用被配置成在关机启动时变得活动的写记录器组件,因为还可以或替换地跟踪不在关机期间发生的写操作。例如,在一些实现中,高速缓存设备能在一段时间期间不可访问。例如,如果高速缓存设备是经由一个或多个网络访问的,则连接可能丢失,或者如果高速缓存设备可从计算机移除,则可发生意外(例如,非有意)移除。结果,一些实施例可以使用写记录器来跟踪对盘执行的所有(或一部分)写,而非只跟踪在关机期间发生的那些写,以及被配置成当在线时周期性地捕捉高速缓存“快照”的高速缓存设备。如此,如果高速缓存在某一时间段期间变得不可访问并且稍后重新连接,则最新高速缓存快照可以使用写记录器所跟踪的写操作来进行更新,而非必须被完全重建。
还应当明白,尽管图3的示例过程30可以检测操作系统在关机期间执行的离线写,但在关机之后可能需要其他测量来检测对盘执行的离线写。这样的写可以在例如以下情况下发生:用户在关机之后将盘引导到另一操作系统或在关机之后将盘从计算机移除并将其连接到另一计算机,并随后修改存储在盘上的数据。
认识到与尝试跟踪在关机之后发生的离线写(例如,由另一操作系统进行的)相关联的困难,本发明的一些实施例改为阻止它们发生。例如,一些实施例尝试使特定盘卷对在关机之后不提供写记录器组件的操作系统不可用。这能够以多种方式中的任一种来完成。
在一些实施例中,写记录器300可以用以下方式来标记盘卷:该盘卷不可由不提供用于跟踪离线写的写记录器组件的操作系统挂载。例如,写记录器300可以修改指示在该卷所使用的文件系统的类型的卷标识符。就此,本领域技术人员将认识到,卷标识符使操作系统能够标识被用来在该卷上存储数据的文件系统的类型,从而使操作系统能够理解存储在该卷上的数据的结构、在何处找到文件,等等。例如,如果卷标识符指示使用NT FileSystem(NTFS)文件系统来在该卷上存储数据,则尝试挂载该卷的另一操作系统会理解将需要解析NTFS文件系统并访问其上的数据。如果卷标识符没有提供被用来在卷上存储数据的文件系统的类型的指示,则大多数操作系统将不能挂载该卷,因为将没有可靠的方式来理解存储在其上的数据的结构。如此,本发明的一些实施例修改盘卷的卷标识符以使其不可访问,从而防止用户将该盘卷引导到另一操作系统以及防止用户对存储在该卷上的数据进行离线改变。
认识到即使该卷标识符被修改一些操作系统也能够标识用来在卷上存储数据的文件系统的类型,本发明的一些实施例提供一种用于检测操作系统何时挂载该卷的机制。就此,为了挂载盘卷,任何操作系统将需要更新卷标识符(例如,以指示使用了NTFS文件系统来在该卷上存储数据)以允许访问其上的数据。在重新引导时,任何这样的更新将是易于检测的。如果检测到这样的更新,则本发明的一些实施例可以设想自最后关机以来该卷的内容已被修改,并且驱逐与存储在该卷上的数据相对应的高速缓存内容。
本发明的一些实施例提供盘卷可由此被引导到也使用写记录器组件的另一操作系统的能力。例如,如果盘要从运行提供写记录器组件的操作系统的一个计算机移除,并且将该盘引导到提供写记录器组件的另一操作系统,则该另一操作系统可被配置成识别出经改变的卷标识符指示该卷被高速缓存。结果,该另一操作系统可以添加到第一操作系统所创建的离线写的日志(例如,存储在该卷上)。
被设计成使盘卷不可由某些操作系统挂载的上述实施例可能对依赖于卷标识符来执行特定功能(例如,备份应用)的某些应用造成问题。对于这些应用,如果卷标识符被改变,则该卷不可识别并且因而不可被备份。因此,本发明的一些实施例提供一种用于确定在关机之后文件系统是否被挂载的机制。如果是,则设想对文件系统中的数据进行了改变,并且驱逐与该文件系统中的数据相对应的所有高速缓存内容。
一些实施例可以通过在关机时将文件系统日志置于将需要尝试挂载文件系统的任何操作系统以某种方式修改(例如,改变其位置、添加新条目等)该日志的状态来检测关机之后对该文件系统的挂载。例如,写记录器300可以在文件系统被卸载时记录文件系统日志的位置和/或内容来作为记录离线写的任务的一部分(例如在日志本身中)。因为尝试挂载该文件系统的任何操作系统都将必须改变该日志(例如,如果该文件系统是NTFS系统,则尝试挂载该文件系统的操作系统将向该日志添加一条目),所以如果该日志在重新引导期间未被改变,则设想该文件系统在电源转换期间没有被另一操作系统挂载,使得对应于存储在该文件系统中的数据的高速缓存内容未被致使变旧。相反,如果该日志被以某种方式改变(例如,其位置已改变,并且添加了条目,等等),则设想该文件系统被另一操作系统挂载,并且存储在其中的数据已被改变,致使对应于存储在该文件系统中的数据的高速缓存内容变旧。如此,可以驱逐这些高速缓存内容。
除提供用于防止离线写的机制之外,本发明的一些实施例提供用于管理不一致的各代高速缓存内容的能力。可能出于多种原因中的任一种而产生了不一致的各代高速缓存内容。在其上连接有第一和第二高速缓存设备的第一和第二计算机采用本文描述的技术跨电源转换来持久存储高速缓存内容的情况下,一个示例可以发生。如果第二高速缓存设备连接到第一计算机(或第一高速缓存设备连接到第二计算机)并且第一计算机重启,则可从第二高速缓存设备提供不正确的数据来满足I/O请求。这是因为第一计算机的操作系统将认为第二高速缓存设备的内容是真实(因为重新生成的从高速缓存返回的数据的表示可与原始生成的表示相匹配)且不旧的(因为离线写可被应用于高速缓存内容)。另一示例可以在以下情况下发生:第一高速缓存设备连接到计算机,该计算机被关机(从而持久存储高速缓存内容),该计算机随后重启,连接第二高速缓存设备,并且该计算机被再次关机(从而再次持久存储高速缓存内容)。如果该计算机随后再次重启并且连接第一高速缓存设备,则可提供不正确的数据来满足I/O请求,因为没有可靠的方式来确定第一高速缓存设备没有存储最新一代的高速缓存内容。
一些实施例提供用于标识不一致的各代高速缓存内容的能力,使得在最后关机之前持久存储的高速缓存内容不会被错误地用来满足I/O请求。在一些实施例中,这一能力是经由唯一的持久标识符来提供的,这可以按多种方式中的任一种来在启动关机时生成(作为示例)。例如,可以将GUID和/或密码随机数生成器用于这一目的。如以上参考图3所述,在计算机启动时,持久标识符可以存储在高速缓存设备上(例如,存储在高速缓存元数据中或与其一起存储)以及计算机上(例如,在盘上和/或存储器上)并且被验证(例如,通过将两个版本进行比较)。如果验证成功,则高速缓存内容可因表示先前持久存储的高速缓存代而被驱逐。
如上述认证密钥一样,用来生成持久标识符的任何密钥可在电源转换期间被写到与高速缓存设备不同的位置。例如,在一些实施例中,写记录器组件可以将密钥以及持久标识符写到盘存储(例如,在关机时)。然而,本发明不限于这样的实现,因为本领域技术人员可以想到可保存密钥的多个替换位置。密钥可以例如被保持在操作系统所提供的在系统引导期间可用的任何配置存储中(例如,Windows中的注册表)。
III.高速缓存元数据
如上所述,高速缓存元数据可以提供存储了数据项的盘地址与高速缓存设备上的高速缓存了这些数据项的对应地址之间的映射。本发明的一些实施例提供用于存储高速缓存元数据的能力,这一能力显著地减少了在系统运行时操作期间存储高速缓存元数据所需的存储器容量。
另外,一些实施例提供在跨电源转换或使高速缓存设备离线的任何其他情况下(例如,从计算机移除高速缓存设备、使网络高速缓存设备不可访问的网络断线,等等)允许依赖高速缓存元数据的技术,使得在计算机重启和/或使高速缓存设备在线时高速缓存内容可被可靠地访问。就此,应当明白,对于特定类型的电源转换(例如,待机或休眠模式),简单地将高速缓存元数据存储在存储器(即,RAM)中是可接受的,因为在待机和休眠转换期间存储器的内容被保留。然而,在重新引导期间,系统存储器的内容不被保留。如此,本发明的一些实施例允许在关机期间将高速缓存元数据存储在某一个或多个非易失性介质中,并随后在重新引导时还原。例如,高速缓存元数据可以存储在高速缓存设备上,和/或存储在一个或多个分开的非易失性介质上。此外,一些实施例能够从高速缓存元数据的一部分中导出其他部分,使得不需要存储所有高速缓存元数据。
一些实施例可以使用在以上第I节中描述的用于验证高速缓存元数据的真实性的技术,以便检测并防止在高速缓存设备离线时(例如,在计算机关机期间,从计算机移除高速缓存设备,使网络高速缓存设备不可访问的网络断线,等等)对元数据的无意或恶意修改。例如,在高速缓存设备上线时,高速缓存管理器可以在使用参考图2A-2B描述的技术在将元数据加载到存储器时验证元数据的真实性。如果高速缓存元数据的真实性不能被验证,则如上所述,对应的高速缓存内容可基于存储在盘上的数据而被更新、驱逐、或以其他方式处理。
在一些实施例中,高速缓存元数据可被压缩以减少在关机期间保存并在重新引导时加载的元数据的量。因为元数据的压缩需要保存包含与该元数据有关的信息的单独一段信息(例如,高速缓存中的头),所以上述技术也可被用来在重新引导时验证这一信息的真实性。
本发明的一些实施例提供用于以极大地减少任何一次存储在存储器中的高速缓存元数据的量的方式来存储高速缓存元数据的技术,从而减少将高速缓存元数据加载到存储器或从存储器中卸载它(例如,在运行时和启动/关机操作期间)所需的时间量并极大地减少高速缓存元数据的存储器“脚印”。就此,应当明白,在高速缓存设备具有相对大的存储容量的情况下,需要相当大量的元数据来管理高速缓存内容。例如,具有16GB存储容量的高速缓存设备能够存储多达32GB的压缩数据。在一些实现中,盘地址在高速缓存元数据中以表示4KB盘存储的“数据单元”来反映。如此,为了跟踪32GB数据的位置,需要8百万个不同的数据单元。如果这8百万个数据单元中的每一个都使用16字节映射(即,从盘地址到高速缓存地址)来在高速缓存元数据中表示,则这些映射需要128MB存储。申请人明白,在许多计算机中,在存储器中存储128MB高速缓存元数据将占据不必要这么大的存储器部分。另外,在关机期间将128MB高速缓存元数据从存储器写到非易失性介质中或在重新引导时将128MB高速缓存元数据从非易失性介质还原到存储器中所需的时间,将是极其耗时的并且消耗过多量的处理资源。
认识到高速缓存元数据的量不能容易地减少,本发明的一些实施例提供被设计成减少存储高速缓存元数据所需的存储资源以及在关机和启动期间保存和还原高速缓存元数据所需的时间和处理资源的技术。
在一些实施例中,这是通过将高速缓存元数据存储在一个或多个分层数据结构中(例如,树、多级数组等)来实现的。使用分层数据结构可以允许该分层结构的较低层被存储在非易失性介质中(例如,高速缓存设备),而只有该分层结构的较高层被存储在存储器中。例如,在一些实施例中,只有分层结构的较高层被存储在存储器中,使得即使在支持具有大存储容量的高速缓存设备所需的高速缓存元数据的量被总体存储时,存储器在高速缓存元数据中占据的“脚印”也被极大地减少。当然,尽管只将分层结构的较高层存储在高速缓存元数据中,但一些实施例也可以允许将在该分层结构的较低层处保存的一些信息存储在存储器中,以便降低与对这一信息的重复访问相关联的I/O开销。本发明不限于用任何特定方式来实现。
在系统操作期间,在处理读请求时,为执行该读操作而从非易失性介质中(即,从分层结构的较低层)读出的高速缓存元数据可被“编页”到(即,从存储介质中读到)存储器中,以使得它可被针对同一盘/高速缓存地址的后续读请求更快地访问。在计算机稍后关机时和/或使高速缓存设备离线时,只有存储在分层结构的较高层处的高速缓存元数据和存储在分层结构的较低层处的被编页到存储器中的高速缓存元数据才需要被保存到非易失性介质中。如此,在关机时将高速缓存元数据从存储器移到非易失性存储以及在重新引导时将高速缓存元数据从非易失性存储还原到存储器所需的时间可被显著地减少。
本发明的一些实施例使用B+树来存储高速缓存元数据的至少一部分。如本领域技术人员将明白的,B+树可以使用大分支因子,并且因此减少所使用的分层结构中的层级的数量。使用以上给出的示例,如果要在高速缓存元数据中表示8百万个数据单元并且使用分支因子为200(使得分层结构中的每一节点具有200个“子”节点)的B+树,则只具有3层的数据结构将足以存储该元数据:最高层处单个“根”节点,第二层处200个节点,以及第三层处4万个节点,这4万个节点中的每一个包括指向200个数据单元的指针(即,总共8百万个数据单元)。
图4描绘包括根节点400、二层节点4101-200以及三层节点4201-200的这一示例B+树。每一节点包括200个元素,各元素由指向分层结构中的下一层处的节点的指针来分开。例如,根节点400中的元素402被指针401和403定界。可以通过沿着节点中的元素的左侧或右侧的指针来确定与给定键(例如,盘地址)相关联的值(例如,高速缓存地址),其中在该键小于该元素的情况下沿着该元素左侧的指针,并且在该键大于该元素的情况下沿着右侧的指针。例如,为了确定小于元素402的键的值,将沿着指针401到达二层节点4101,为了确定大于元素402而小于元素404的键的值,将沿着指针403到达二层节点4102(未示出),以此类推。类似地,在二层节点处,沿着元素左侧或右侧(取决于键大于还是小于节点中的元素)的指针到达三层节点。在第三层处,沿着最终指针(同样基于键小于还是大于节点中的元素)到达该值,其中第三层处的每一指针都引用高速缓存元数据中的8百万个数据单元之一。
应当明白,具有大分支因子的B+树提供相对“平坦”的分层结构,几乎所有节点都位于该分层结构的底层。即,在该树中的总共40,201个节点中,40,000个节点处于最低层。本发明的一些实施例通过以下方式来利用这一点:在启动时只还原该分层结构的头两层,同时该分层结构的最低层中的高速缓存元数据被存储在高速缓存设备中直至需要它为止(例如,它可在处理读请求时被按需加载到存储器中、懒散地加载,等等)。因为只有分层数据结构的一部分被存储在存储器中,所以与在存储器中维护全部高速缓存元数据或其更大部分所需的存储器相比,高速缓存元数据可占据小得多的存储器部分。另外,在计算机关机时,只有头两层的数据和在操作期间被加载到存储器中的数据需要存储在高速缓存设备上。结果,启动和关机操作可以快速且高效地执行。
因此,本发明的一些实施例提供分层结构的被存储在存储器中的至少一层(在以上示例中,分层结构的头两层)处的节点中的指针,这些指针引用该分层结构的存储在高速缓存设备上的另一层(在以上示例中,第三层)处的节点。例如,在接收到对高速缓存的数据项的读请求时,本发明的各实施例沿着指针穿过该分层结构的存储在存储器中的一层或多层并随后到达该分层结构的存储在高速缓存中的较低层处的元数据,以确定该数据项被存储在高速缓存中的地址。在一些实施例中,一旦确定了数据项的高速缓存地址,它就可被存储在存储器中,使得读取该项的后续请求可以在不必从高速缓存设备读取高速缓存元数据的情况下来执行。
图5描绘根据本发明的一些实施例的用于管理高速缓存元数据的示例系统50。图5描绘存储器500和高速缓存设备110,这两者都可由计算机(未示出)访问。在计算机启动时,在操作505,包括诸如B+树等分层数据结构的一层或多层的高速缓存元数据被加载到存储器500中。使用以上示例来说明,如果高速缓存元数据中表示了8百万个数据单元,使得可以使用三层分层数据结构来存储该高速缓存元数据,则分层结构的头两层可被加载到存储器500。当然,如果元数据中表示了多于或少于8百万个数据单元,并且使用了具有多于或少于三层的分层数据结构,则该分层结构的不同数量的层可被加载到存储器500中。
此后,在读请求被定向到在高速缓存中维护的数据项时,通过访问分层结构的被存储在高速缓存设备110中的(各)层中所存储的高速缓存元数据来确定存储该数据项的高速缓存地址。这一高速缓存元数据随后被存储在存储器510中,使得对该数据项的后续读或写可以在不必读取存储在高速缓存设备上的高速缓存元数据以确定存储该数据项的高速缓存地址的情况下来执行。相反,可以从存储器中读取该高速缓存地址,这可比对高速缓存的读更快地执行。
稍后,在计算机关机时,在动作515,将存储在存储器中的高速缓存元数据(即,分层结构的在操作505被加载到存储器中的各层中所存储的元数据,以及用于满足读请求的、在操作510写到存储器的任何元数据)加载到高速缓存设备500中。作为相对小量的高速缓存元数据被存储在存储器中的结果,可以快速地执行关机,而不需要大量的处理资源。
应当明白,B+树只是可被用来存储高速缓存元数据的多种类型的数据结构之一,并且可以使用其他类型的数据结构(例如分层结构,诸如AVL树、红黑树、二分搜索树、B树、和/或其他分层和非分层数据结构)。本发明不需要少于任何一种数据结构或数据结构的组合来存储高速缓存元数据。
一些实施例可以允许在任何一次都要在存储器中保持“目标量”的高速缓存元数据。该目标量可以用任何合适的方式来确定。例如,目标量可以是计算机可用的物理存储器的量的百分比。例如,如果计算机具有1GB存储器,则可在任何一次在存储器中存储2MB高速缓存元数据(作为示例)。因此,在计算机关机时,只需加载2MB高速缓存元数据到高速缓存设备中。
在一些实施例中,高速缓存元数据可以在存储器中进进出出地循环。例如,如果目标量的高速缓存元数据已经存储在存储器中,并且执行了需要从高速缓存设备中读取高速缓存元数据的读,则如该元数据可被“编页”到存储器中,并且可以擦除其他高速缓存元数据(例如,最不频繁访问的高速缓存元数据)。例如,高速缓存元数据可以在被写到高速缓存设备之后擦除。或者,该系统可以确定高速缓存元数据自它最后一次被写出之后是否已改变,并且如果否,则可简单地擦除它,从而消除了写入该高速缓存元数据所需的时间和处理资源。使用上述技术,可保持高速缓存元数据在存储器中占据小的“脚印”。
图6描绘一示例。具体而言,图6中示出的过程60包括可由高速缓存管理器110执行来使用上述技术读取高速缓存元数据的操作。
在过程600的开始处,在动作605接收请求以读取存储在盘地址X处的数据。在动作610,作出存储该数据的高速缓存地址是否可从存储在存储器中的高速缓存元数据中标识的判定。如果是,则过程进行至动作615,在这里确定所标识的高速缓存地址,并随后在动作620将其用来发起对高速缓存设备110的读请求。过程60随后完成。如果不能使用存储在存储器中的高速缓存元数据标识该高速缓存地址,则过程进行至动作625,在这里从高速缓存设备110读取高速缓存元数据以确定存储该数据的高速缓存地址。使用在动作625标识的高速缓存偏移,在动作620向所标识的高速缓存偏移发起读请求,并且过程60随后完成。
应当明白,将高速缓存元数据存储在高速缓存设备上不仅可以在启动和关机期间加快加载和还原高速缓存元数据的过程,还可以加快启动和关机期间执行的系统操作。就此,关机和启动通常涉及对特定数据项的多次访问,并且对高速缓存设备执行两次读操作通常比对盘存储执行一次读操作还快。结果,如果在关机和/或启动期间访问的数据项以及指定其位置的元数据两者都被存储在高速缓存中,则该数据项可比该数据项被存储在盘上的情况被更快地访问,因为对高速缓存的两次读(即,一次访问高速缓存元数据以确定该项的位置,并且第二次访问该项本身)通常可比对盘的单次读执行得更快。如此,在关机和启动期间执行的各单独操作可被加速。此外,如果在从高速缓存第一次读取高速缓存元数据期间存储该项的地址被编页到存储器中,则对该数据项的后续读可以更快速地执行,因为对存储器的读通常可以比对高速缓存的读更快地执行。
用于实施本发明的各特征的系统和方法的各方面可被实现在一个或多个计算机系统上,如图7中示出的示例性计算机系统700。计算机系统700包括输入设备702、输出设备701、处理器703、存储器系统704和存储706,这些设备全都经由可包括一个或多个总线、交换机、网络和/或任何其他合适互连的互连机制705来直接或间接耦合。输入设备702接收来自用户或机器(例如,人类操作者)的输入,并且输出设备701向用户或机器(例如,液晶显示器)显示或传送信息。处理器703通常执行被称为操作系统(例如,微软Windows系列操作系统或任何其他合适的操作系统)的计算机程序,操作系统控制其他计算机程序的执行并提供调度、输入/输出以及其他设备控制、会计、汇编、存储安排、数据管理、存储器管理、通信以及数据流控制。笼统而言,处理器和操作系统定义为其编写应用程序和其他计算机程序语言的计算机平台。
处理器703还可执行一个或多个计算机程序以实现各种功能。这些计算机程序语言可以用任何类型的计算机程序语言来编写,包括过程程序设计语言、面向对象的程序设计语言、宏语言、或它们的组合。这些计算机程序可以存储在存储系统706中。存储系统706可以将信息保持在易失性或非易失性介质上,并可以是固定或可移动的。在图8中更详细的示出了存储系统706。
存储系统706通常包括计算机可读和可写非易失性记录介质801,其上存储有定义计算机程序或要由该程序使用的信息的信号。介质可以是例如盘或闪存。通常,在操作中,处理器703使得数据从非易失性记录介质801读入易失性存储器802(例如,随机存取存储器,即RAM)中,易失性存储器802与介质801相比允许处理器703进行更快的信息访问。存储器802可以位于存储系统706中,如图8所示,或位于存储器系统704中,如图7所示。处理器703一般处理集成电路存储器704、802内的数据,然后在处理完成之后将这些数据复制到介质801中。已知有各种机制可用于管理介质801和集成电路存储元件704、802之间的数据移动,并且本发明不限于此。本发明也不限于特定的存储器系统704或存储系统706。
此外,本发明的各实施例也不限于使用被实现成操作系统的I/O栈中的驱动程序的高速缓存管理器组件。作为替换或补充,可以使用任何合适的组件或组件组合,这些组件中的每一个可由操作系统或一个或多个独立组件来实现。本发明不限于任何特定实现。
可以用多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现上述功能。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。就此,应当理解,执行在此描述的功能的任何组件或组件集合一般可被认为是控制上述功能的一个或多个控制器。一个或多个控制器可以用众多方式来实现,诸如用专用硬件、或通过采用使用执行上述功能的微码或软件来编程的一个或多个处理器。在控制器存储或提供数据以供系统操作的情况下,这些数据可以存储在中央储存库中、多个储存库中、或其组合。
此外,应当明白,(客户机或服务器)计算机可以用多种形式的任一种来具体化,如机架式计算机、台式计算机、膝上型计算机、平板计算机、或其他类型的计算机。另外,(客户机或服务器)计算机或终端可以嵌入在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他合适的便携式或固定电子设备。
同样,(客户机或服务器)计算机可以具有一个或多个输入和输出设备。这些设备主要可被用来呈现用户界面。可被用来提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可被用作用户接口的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化桌等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。
此外,软件可使用多种合适的程序设计语言和/或常规程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
就此,本发明可被具体化为用一个或多个程序编码的一个或多个存储介质(例如,计算机存储器、一个或多个软盘、紧致盘、光盘、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。这一个或多个存储介质可以是便携的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其他处理器上以便实现本发明上述的各个方面。
此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以用可由一个或多个计算机或其他设备执行的各种形式来提供,诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,在各实施例中,程序模块的功能可以视需要组合或分布。
本发明的各个方面可单独、组合或以未在前述实施例中具体讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各利要求元素。
同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对“包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。
至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。这样的更改、修改和改进旨在是本发明的一部分且旨在处于本发明的精神和范围内。因此,上述描述和附图仅用作示例。
Claims (15)
1.一种操作其上耦合有存储介质(706)和高速缓存设备(110)的计算机(700)的方法,所述计算机包括操作系统,所述方法包括以下动作:
(A)提供写记录器组件的动作,所述写记录器组件能用于标识对所述存储介质执行且未对所述高速缓存设备执行的写操作;
(B)响应于将数据项写入所述存储介质上的地址的请求,使所述数据项被写入所述存储介质上的地址(101)以及被写入所述高速缓存设备上的对应地址(102);
(C)在所述操作系统的重新引导之后,确定(270、330)存储在所述高速缓存设备上的地址处的数据项是否能被可靠地用来满足从所述存储介质上的地址读取所述数据项的请求,所述确定包括经由所述写记录器组件来确定存储在所述存储介质上的地址处的数据项在动作(B)完成之后是否被更改;以及
(D)如果在(C)确定存储在所述高速缓存设备上的地址处的数据项能被可靠地用来满足从所述存储介质上的地址读取所述数据项的请求,使所述数据项被从所述高速缓存设备上的地址读出(299)。
2.如权利要求1所述的方法,其特征在于,动作(A)-(D)是由所述操作系统执行的。
3.如权利要求1所述的方法,其特征在于,所述存储介质包括盘存储设备。
4.如权利要求1所述的方法,其特征在于,所述高速缓存设备能从所述计算机移除。
5.如权利要求1所述的方法,其特征在于,动作(C)是响应于从所述存储介质上的地址读取所述数据项的请求来执行的,并且还包括验证存储在所述高速缓存设备上的地址处的数据项在动作(B)完成之后未被修改。
6.如权利要求5所述的方法,其特征在于,(B)还包括生成至少所述数据项的表示并将所述表示写入到所述高速缓存设备,并且其中(C)中的验证动作包括:
(C1)获取被写入到所述高速缓存设备的表示;
(C2)重新生成所述表示;以及
(C3)将在(C1)中获取到的表示与在(C2)中重新生成的表示进行比较以确定存储在所述高速缓存设备上的地址处的数据项是否能被可靠地用来满足读取所述数据项的请求。
7.如权利要求1所述的方法,其特征在于,所述写记录器组件被所述操作系统启用,并且其中所述操作系统被配置成在确定所述操作系统被关机时激活所述写记录器组件。
8.如权利要求1所述的方法,其特征在于,动作(B)还包括生成至少所述数据项的表示并将所述表示写入到所述高速缓存设备,并且其中(C)中的确定动作包括:
(C1)获取被写入到所述高速缓存设备的表示;
(C2)重新生成所述表示;以及
(C3)将在(C1)中获取到的表示与在(C2)中重新生成的表示进行比较以确定存储在所述高速缓存设备上的地址处的数据项是否能被可靠地用来满足读取所述数据项的请求。
9.如权利要求1所述的方法,其特征在于,动作(B)还包括使用高速缓存元数据来确定所述数据项被写入到的所述高速缓存设备上的地址,并且其中动作(C)还包括确定所述高速缓存元数据在(B)之后是否被修改。
10.一种计算机(700),包括:
具有存储了数据的至少一个地址的存储介质(706);
具有存储了数据的至少一个地址的高速缓存设备(110);
至少一个处理器(703),其被经由操作系统编程为:
响应于将数据项写入所述存储介质上的第一地址的请求,使所述数据项被写入所述存储介质上的所述第一地址以及被写入所述高速缓存设备上的对应地址(102);
标识对所述存储介质上的地址执行并且未对所述高速缓存上的地址执行的写操作的发生(300);以及
在所述操作系统的重新引导之后,通过由所述操作系统的写记录器组件确定写操作是否对所述存储介质上的所述第一地址执行并且未对所述高速缓存设备上的所述对应地址执行,来确定存储在所述高速缓存设备上的所述对应地址处的数据项是否能被可靠地用来满足从所述存储介质上的所述第一地址读取所述数据项的请求,其中所述写记录器组件能用于标识对所述存储介质执行且未对所述高速缓存设备执行的写操作。
11.如权利要求10所述的计算机,其特征在于,所述至少一个处理器被编程为,使用被写入到所述存储介质中的并能在所述操作系统的重新引导时访问的日志来标识对所述存储介质上的地址执行并且未对所述高速缓存设备上的地址执行的写操作的发生。
12.如权利要求10所述的计算机,其特征在于,所述至少一个处理器被编程为如果确定存储在所述高速缓存设备上的所述对应地址处的数据项不能被可靠地用来满足从所述存储介质上的所述第一地址读取所述数据项的请求,则将所述数据项从所述高速缓存设备上的所述对应地址中驱逐,并且通过从所述存储介质上的第一地址读取所述数据项来满足所述请求。
13.如权利要求10所述的计算机,其特征在于,所述操作系统被配置成在确定该操作系统被关机时激活所述写记录器组件。
14.如权利要求10所述的计算机,其特征在于,所述至少一个处理器被编程为防止对所述存储介质上的地址执行并且未对所述高速缓存设备上的地址执行的写操作的发生。
15.如权利要求10所述的计算机,其特征在于,所述至少一个处理器被编程来标识的写操作是针对存储在所述存储介质上的文件系统中的数据的,并且其中所述至少一个处理器被编程为通过在所述操作系统的重新引导之前将所述文件系统所使用的日志置于特定状态并且确定在所述操作系统的重新引导之后所述日志是否处于所述特定状态来标识对所述存储介质上的地址的写操作的发生。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US9707908P | 2008-09-15 | 2008-09-15 | |
US61/097,079 | 2008-09-15 | ||
US12/271,472 | 2008-11-14 | ||
US12/271,472 US9032151B2 (en) | 2008-09-15 | 2008-11-14 | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
PCT/US2009/056419 WO2010030715A2 (en) | 2008-09-15 | 2009-09-09 | Managing cache data and metadata |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102150131A CN102150131A (zh) | 2011-08-10 |
CN102150131B true CN102150131B (zh) | 2017-07-04 |
Family
ID=42005728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980136912.9A Active CN102150131B (zh) | 2008-09-15 | 2009-09-09 | 管理高速缓存数据和元数据 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9032151B2 (zh) |
EP (1) | EP2329360B1 (zh) |
JP (1) | JP5715566B2 (zh) |
CN (1) | CN102150131B (zh) |
TW (1) | TWI494762B (zh) |
WO (1) | WO2010030715A2 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US8631203B2 (en) * | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8195891B2 (en) | 2009-03-30 | 2012-06-05 | Intel Corporation | Techniques to perform power fail-safe caching without atomic metadata |
US8671265B2 (en) | 2010-03-05 | 2014-03-11 | Solidfire, Inc. | Distributed data storage system providing de-duplication of data using block identifiers |
TWI534621B (zh) * | 2010-03-29 | 2016-05-21 | 威盛電子股份有限公司 | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US8996807B2 (en) | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
TWI465952B (zh) * | 2011-05-05 | 2014-12-21 | Univ Nat Taipei Technology | 智慧型手機應用巨集指令執行平台 |
US9054992B2 (en) | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9838269B2 (en) | 2011-12-27 | 2017-12-05 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
JP2013134690A (ja) * | 2011-12-27 | 2013-07-08 | Toshiba Corp | 情報処理装置およびキャッシュ制御方法 |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
CN102693198B (zh) * | 2012-05-12 | 2015-03-25 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN102789483B (zh) * | 2012-06-30 | 2014-12-10 | 华为技术有限公司 | 数据验证方法、装置和系统 |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9727278B2 (en) * | 2013-06-13 | 2017-08-08 | Netapp, Inc. | System and methods for mitigating write emulation on a disk device using cache memory |
JP5681783B2 (ja) * | 2013-12-26 | 2015-03-11 | 株式会社日立製作所 | 情報処理システムにおける障害復旧方法、及び情報処理システム |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US10133511B2 (en) | 2014-09-12 | 2018-11-20 | Netapp, Inc | Optimized segment cleaning technique |
US9645932B1 (en) * | 2014-12-19 | 2017-05-09 | EMC IP Holding Company LLC | Persistent metadata cache |
US9830081B2 (en) * | 2015-01-16 | 2017-11-28 | Netapp, Inc. | System and method for synchronizing caches after reboot |
US10698815B2 (en) * | 2015-06-30 | 2020-06-30 | Western Digital Technologies, Inc. | Non-blocking caching for data storage drives |
US9652405B1 (en) * | 2015-06-30 | 2017-05-16 | EMC IP Holding Company LLC | Persistence of page access heuristics in a memory centric architecture |
CN105117351B (zh) * | 2015-09-08 | 2018-07-03 | 华为技术有限公司 | 向缓存写入数据的方法及装置 |
WO2017091197A1 (en) * | 2015-11-23 | 2017-06-01 | Hewlett Packard Enterprise Development Lp | Cache manager-controlled memory array |
US10108547B2 (en) * | 2016-01-06 | 2018-10-23 | Netapp, Inc. | High performance and memory efficient metadata caching |
US10929022B2 (en) | 2016-04-25 | 2021-02-23 | Netapp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
US10318428B2 (en) | 2016-09-12 | 2019-06-11 | Microsoft Technology Licensing, Llc | Power aware hash function for cache memory mapping |
US10642763B2 (en) | 2016-09-20 | 2020-05-05 | Netapp, Inc. | Quality of service policy sets |
US10241561B2 (en) | 2017-06-13 | 2019-03-26 | Microsoft Technology Licensing, Llc | Adaptive power down of intra-chip interconnect |
US11068299B1 (en) | 2017-08-04 | 2021-07-20 | EMC IP Holding Company LLC | Managing file system metadata using persistent cache |
CN113227988A (zh) | 2019-07-03 | 2021-08-06 | 华为技术有限公司 | 保持缓存中的摘要一致性的设备和方法 |
US10992743B1 (en) * | 2019-09-23 | 2021-04-27 | Amazon Technologies, Inc. | Dynamic cache fleet management |
US11481143B2 (en) | 2020-11-10 | 2022-10-25 | Red Hat, Inc. | Metadata management for extent-based storage system |
Family Cites Families (401)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57161933A (en) | 1981-03-31 | 1982-10-05 | Fujitsu Ltd | Automatic program editing system |
US4476526A (en) | 1981-11-27 | 1984-10-09 | Storage Technology Corporation | Cache buffered memory subsystem |
US4612612A (en) | 1983-08-30 | 1986-09-16 | Amdahl Corporation | Virtually addressed cache |
CH655845A5 (de) | 1983-11-17 | 1986-05-30 | Straumann Inst Ag | Einrichtung mit einem schraubstift zum einschrauben in einen zahn und einer spannvorrichtung zum halten des schraubstiftes. |
JPS60126671A (ja) | 1983-12-14 | 1985-07-06 | Fuji Xerox Co Ltd | 電子複写機の現像方法 |
JPH06100981B2 (ja) | 1983-12-28 | 1994-12-12 | 株式会社日立製作所 | 記憶階層制御方式 |
JPS60140466A (ja) | 1983-12-28 | 1985-07-25 | Toshiba Corp | 画像検索装置 |
US4671111A (en) | 1984-10-12 | 1987-06-09 | Lemelson Jerome H | Vehicle performance monitor and method |
US4979108A (en) | 1985-12-20 | 1990-12-18 | Ag Communication Systems Corporation | Task synchronization arrangement and method for remote duplex processors |
US4972316A (en) | 1987-03-30 | 1990-11-20 | International Business Machines Corporation | Method of handling disk sector errors in DASD cache |
US4945474A (en) | 1988-04-08 | 1990-07-31 | Internatinal Business Machines Corporation | Method for restoring a database after I/O error employing write-ahead logging protocols |
JPH01303547A (ja) | 1988-05-31 | 1989-12-07 | Toshiba Corp | 情報記憶制御システム |
JPH0239256A (ja) | 1988-07-28 | 1990-02-08 | Toshiba Corp | メモリシステム |
SU1575192A1 (ru) | 1988-08-01 | 1990-06-30 | Войсковая часть 03080 | Устройство дл выделени области во внешней пам ти |
US5394531A (en) * | 1989-04-03 | 1995-02-28 | International Business Machines Corporation | Dynamic storage allocation system for a prioritized cache |
DE69034191T2 (de) | 1989-04-13 | 2005-11-24 | Sandisk Corp., Sunnyvale | EEPROM-System mit aus mehreren Chips bestehender Blocklöschung |
JPH02273843A (ja) | 1989-04-14 | 1990-11-08 | Nec Corp | スワッピング装置 |
US5900870A (en) | 1989-06-30 | 1999-05-04 | Massachusetts Institute Of Technology | Object-oriented computer user interface |
JPH03147157A (ja) | 1989-11-02 | 1991-06-24 | Nec Eng Ltd | 情報処理装置 |
JPH0683708B2 (ja) | 1989-11-17 | 1994-10-26 | 株式会社東芝 | X線撮影装置 |
JP2781238B2 (ja) | 1990-01-08 | 1998-07-30 | 株式会社リコー | ファクシミリ多段中継方法 |
DE4003675A1 (de) | 1990-02-07 | 1991-08-08 | Wankel Gmbh | Rotationskolbenbrennkraftmaschine |
US5088026A (en) * | 1990-02-09 | 1992-02-11 | International Business Machines Corporation | Method for managing a data cache using virtual external storage addresses as arguments |
JPH03294942A (ja) | 1990-04-12 | 1991-12-26 | Hitachi Ltd | ファイルバックアップ方式及び情報複写方式 |
US5307497A (en) * | 1990-06-25 | 1994-04-26 | International Business Machines Corp. | Disk operating system loadable from read only memory using installable file system interface |
RU2010317C1 (ru) | 1990-07-20 | 1994-03-30 | Институт точной механики и вычислительной техники им.С.А.Лебедева РАН | Устройство управления буферной памятью |
JPH04205634A (ja) | 1990-11-30 | 1992-07-27 | Matsushita Electric Ind Co Ltd | 記憶装置制御方法 |
JPH04246746A (ja) | 1991-02-01 | 1992-09-02 | Hitachi Ltd | 記憶装置システム |
US5263136A (en) | 1991-04-30 | 1993-11-16 | Optigraphics Corporation | System for managing tiled images using multiple resolutions |
US5764877A (en) | 1991-06-25 | 1998-06-09 | Digital Equipment Corporation | Media recovery with time-split B-trees |
JP2582487B2 (ja) | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JPH0562329A (ja) | 1991-08-29 | 1993-03-12 | Hitachi Ltd | データ処理装置 |
JP2995942B2 (ja) | 1991-09-10 | 1999-12-27 | セイコーエプソン株式会社 | 文書印刷システム及びその方法 |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
JPH0594353A (ja) | 1991-10-02 | 1993-04-16 | Hokkaido Nippon Denki Software Kk | データベース管理方式 |
US5297258A (en) * | 1991-11-21 | 1994-03-22 | Ast Research, Inc. | Data logging for hard disk data storage systems |
JP3451099B2 (ja) | 1991-12-06 | 2003-09-29 | 株式会社日立製作所 | 外部記憶サブシステム |
EP0547992A3 (en) | 1991-12-17 | 1993-12-01 | Ibm | Method and system for enhanced efficiency of data recovery in balanced tree memory structures |
JP2839060B2 (ja) | 1992-03-02 | 1998-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システムおよびデータ処理方法 |
WO1993018461A1 (en) | 1992-03-09 | 1993-09-16 | Auspex Systems, Inc. | High-performance non-volatile ram protected write cache accelerator system |
JP3485938B2 (ja) * | 1992-03-31 | 2004-01-13 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
US5420998A (en) | 1992-04-10 | 1995-05-30 | Fujitsu Limited | Dual memory disk drive |
US5398325A (en) * | 1992-05-07 | 1995-03-14 | Sun Microsystems, Inc. | Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems |
JPH0635802A (ja) | 1992-07-21 | 1994-02-10 | Hitachi Ltd | 複数キャッシュ付きディスク制御装置 |
US5574877A (en) | 1992-09-25 | 1996-11-12 | Silicon Graphics, Inc. | TLB with two physical pages per virtual tag |
US5454098A (en) | 1992-09-28 | 1995-09-26 | Conner Peripherals, Inc. | Method of emulating access to a sequential access data storage device while actually using a random access storage device |
US5561783A (en) * | 1992-11-16 | 1996-10-01 | Intel Corporation | Dynamic cache coherency method and apparatus using both write-back and write-through operations |
US5751932A (en) | 1992-12-17 | 1998-05-12 | Tandem Computers Incorporated | Fail-fast, fail-functional, fault-tolerant multiprocessor system |
US5463739A (en) | 1992-12-22 | 1995-10-31 | International Business Machines Corporation | Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold |
JPH06236351A (ja) | 1993-02-10 | 1994-08-23 | Hitachi Ltd | オンラインシステムのバックアップリストア装置 |
US5557770A (en) | 1993-03-24 | 1996-09-17 | International Business Machines Corporation | Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
JP3600257B2 (ja) | 1993-05-31 | 2004-12-15 | 富士通株式会社 | 情報処理装置及びキャッシュ制御装置 |
US5636355A (en) | 1993-06-30 | 1997-06-03 | Digital Equipment Corporation | Disk cache management techniques using non-volatile storage |
US5551002A (en) | 1993-07-01 | 1996-08-27 | Digital Equipment Corporation | System for controlling a write cache and merging adjacent data blocks for write operations |
US5572660A (en) | 1993-10-27 | 1996-11-05 | Dell Usa, L.P. | System and method for selective write-back caching within a disk array subsystem |
JPH086854A (ja) | 1993-12-23 | 1996-01-12 | Unisys Corp | アウトボードファイルキャッシュ外部処理コンプレックス |
US6026027A (en) * | 1994-01-31 | 2000-02-15 | Norand Corporation | Flash memory system having memory cache |
ATE220811T1 (de) | 1994-02-22 | 2002-08-15 | Advanced Micro Devices Inc | Virtuelle speicheranordnung |
US6185629B1 (en) * | 1994-03-08 | 2001-02-06 | Texas Instruments Incorporated | Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time |
JPH07253935A (ja) | 1994-03-15 | 1995-10-03 | Toshiba Corp | コンピュータのデータ保護装置 |
US5751990A (en) | 1994-04-26 | 1998-05-12 | International Business Machines Corporation | Abridged virtual address cache directory |
US5603001A (en) * | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
US5642501A (en) | 1994-07-26 | 1997-06-24 | Novell, Inc. | Computer method and apparatus for asynchronous ordered operations |
US5897640A (en) | 1994-08-08 | 1999-04-27 | Microsoft Corporation | Method and system of associating, synchronizing and reconciling computer files in an operating system |
JPH10507566A (ja) * | 1994-10-18 | 1998-07-21 | アイオメガ コーポレイション | ディスクカートリッジの検出方法および装置 |
JPH08137634A (ja) | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
JPH08195068A (ja) | 1995-01-20 | 1996-07-30 | Pioneer Electron Corp | オーディオ信号混合装置 |
JPH11500548A (ja) * | 1995-01-23 | 1999-01-12 | タンデム コンピューターズ インコーポレイテッド | データベース完全性の保守用システム |
JP3426385B2 (ja) | 1995-03-09 | 2003-07-14 | 富士通株式会社 | ディスク制御装置 |
JPH08263380A (ja) | 1995-03-22 | 1996-10-11 | Mitsubishi Electric Corp | ディスクキャッシュ制御方式 |
US5897660A (en) * | 1995-04-07 | 1999-04-27 | Intel Corporation | Method for managing free physical pages that reduces trashing to improve system performance |
US6078925A (en) * | 1995-05-01 | 2000-06-20 | International Business Machines Corporation | Computer program product for database relational extenders |
US5917723A (en) | 1995-05-22 | 1999-06-29 | Lsi Logic Corporation | Method and apparatus for transferring data between two devices with reduced microprocessor overhead |
US5758174A (en) | 1995-06-07 | 1998-05-26 | International Business Machines Corporation | Computer system having a plurality of stored system capability states from which to resume |
US5608892A (en) * | 1995-06-09 | 1997-03-04 | Alantec Corporation | Active cache for a microprocessor |
US5720029A (en) * | 1995-07-25 | 1998-02-17 | International Business Machines Corporation | Asynchronously shadowing record updates in a remote copy session using track arrays |
US5765151A (en) | 1995-08-17 | 1998-06-09 | Sun Microsystems, Inc. | System and method for file system fix-on-panic for a computer operating system |
US5717954A (en) * | 1995-10-13 | 1998-02-10 | Compaq Computer Corporation | Locked exchange FIFO |
US5809280A (en) | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive ahead FIFO with LRU replacement |
JP3704767B2 (ja) | 1995-11-16 | 2005-10-12 | ソニー株式会社 | 情報記録装置 |
US5754782A (en) | 1995-12-04 | 1998-05-19 | International Business Machines Corporation | System and method for backing up and restoring groupware documents |
US5860095A (en) | 1996-01-02 | 1999-01-12 | Hewlett-Packard Company | Conflict cache having cache miscounters for a computer memory system |
US5754888A (en) | 1996-01-18 | 1998-05-19 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment |
US5764505A (en) | 1996-01-23 | 1998-06-09 | Cymer, Inc. | Gas discharge laser control systems using multiple CPU's with shared memory on a common bus |
US5758056A (en) | 1996-02-08 | 1998-05-26 | Barr; Robert C. | Memory system having defective address identification and replacement |
US5806074A (en) | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
KR0174711B1 (ko) | 1996-04-24 | 1999-04-15 | 김광호 | 하드디스크 캐시의 제어방법 |
EP0897158B1 (en) | 1996-04-29 | 2004-06-30 | Scientific Research Institut of Different Branches "Integral" | Method for automatic processing of information materials for personified use |
US5778070A (en) * | 1996-06-28 | 1998-07-07 | Intel Corporation | Method and apparatus for protecting flash memory |
JPH1040170A (ja) | 1996-07-26 | 1998-02-13 | Toshiba Corp | ディスクキャッシュシステム |
US6026293A (en) * | 1996-09-05 | 2000-02-15 | Ericsson Inc. | System for preventing electronic memory tampering |
US5996054A (en) | 1996-09-12 | 1999-11-30 | Veritas Software Corp. | Efficient virtualized mapping space for log device data storage system |
US5832515A (en) | 1996-09-12 | 1998-11-03 | Veritas Software | Log device layered transparently within a filesystem paradigm |
JPH1091488A (ja) | 1996-09-12 | 1998-04-10 | Sony Corp | データ処理装置および方法 |
US6021408A (en) | 1996-09-12 | 2000-02-01 | Veritas Software Corp. | Methods for operating a log device |
US6321234B1 (en) | 1996-09-18 | 2001-11-20 | Sybase, Inc. | Database server system with improved methods for logging transactions |
GB2317722B (en) | 1996-09-30 | 2001-07-18 | Nokia Mobile Phones Ltd | Memory device |
GB2317720A (en) | 1996-09-30 | 1998-04-01 | Nokia Mobile Phones Ltd | Managing Flash memory |
US6112024A (en) | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
JPH10154101A (ja) | 1996-11-26 | 1998-06-09 | Toshiba Corp | データ記憶システム及び同システムに適用するキャッシュ制御方法 |
JPH10177563A (ja) | 1996-12-17 | 1998-06-30 | Mitsubishi Electric Corp | フラッシュメモリ内蔵マイクロコンピュータ |
US6073232A (en) | 1997-02-25 | 2000-06-06 | International Business Machines Corporation | Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage |
US5943687A (en) | 1997-03-14 | 1999-08-24 | Telefonakiebolaget Lm Ericsson | Penalty-based cache storage and replacement techniques |
US5940856A (en) | 1997-04-14 | 1999-08-17 | International Business Machines Corporation | Cache intervention from only one of many cache lines sharing an unmodified value |
US6345000B1 (en) * | 1997-04-16 | 2002-02-05 | Sandisk Corporation | Flash memory permitting simultaneous read/write and erase operations in a single memory array |
US5943692A (en) | 1997-04-30 | 1999-08-24 | International Business Machines Corporation | Mobile client computer system with flash memory management utilizing a virtual address map and variable length data |
US5991847A (en) | 1997-06-06 | 1999-11-23 | Acceleration Software International Corporation | Data pattern caching for speeding up write operations |
US5897638A (en) * | 1997-06-16 | 1999-04-27 | Ab Initio Software Corporation | Parallel virtual file system |
US6148368A (en) | 1997-07-31 | 2000-11-14 | Lsi Logic Corporation | Method for accelerating disk array write operations using segmented cache memory and data logging |
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US6000006A (en) | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
KR19990019377A (ko) | 1997-08-29 | 1999-03-15 | 윤종용 | 플래시 메모리 이용 보조기억장치 및 그 방법 |
US6240414B1 (en) | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6189071B1 (en) * | 1997-10-06 | 2001-02-13 | Emc Corporation | Method for maximizing sequential output in a disk array storage device |
US6108004A (en) | 1997-10-21 | 2000-08-22 | International Business Machines Corporation | GUI guide for data mining |
FR2770952B1 (fr) | 1997-11-12 | 2000-01-21 | Adl Systeme Sa | Dispositif de tele-ecriture |
US6560702B1 (en) | 1997-12-10 | 2003-05-06 | Phoenix Technologies Ltd. | Method and apparatus for execution of an application during computer pre-boot operation |
US6098075A (en) | 1997-12-16 | 2000-08-01 | International Business Machines Corporation | Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking |
US6567889B1 (en) | 1997-12-19 | 2003-05-20 | Lsi Logic Corporation | Apparatus and method to provide virtual solid state disk in cache memory in a storage controller |
US6018746A (en) * | 1997-12-23 | 2000-01-25 | Unisys Corporation | System and method for managing recovery information in a transaction processing system |
US6006291A (en) | 1997-12-31 | 1999-12-21 | Intel Corporation | High-throughput interface between a system memory controller and a peripheral device |
US6205527B1 (en) * | 1998-02-24 | 2001-03-20 | Adaptec, Inc. | Intelligent backup and restoring system and method for implementing the same |
US6272534B1 (en) | 1998-03-04 | 2001-08-07 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US7007072B1 (en) * | 1999-07-27 | 2006-02-28 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US6959318B1 (en) | 1998-03-06 | 2005-10-25 | Intel Corporation | Method of proxy-assisted predictive pre-fetching with transcoding |
JP2918531B1 (ja) | 1998-03-13 | 1999-07-12 | 三菱電機株式会社 | キャッシュメモリ制御装置 |
US6298428B1 (en) | 1998-03-30 | 2001-10-02 | International Business Machines Corporation | Method and apparatus for shared persistent virtual storage on existing operating systems |
US6360330B1 (en) * | 1998-03-31 | 2002-03-19 | Emc Corporation | System and method for backing up data stored in multiple mirrors on a mass storage subsystem under control of a backup server |
US6138125A (en) | 1998-03-31 | 2000-10-24 | Lsi Logic Corporation | Block coding method and system for failure recovery in disk arrays |
US6263342B1 (en) | 1998-04-01 | 2001-07-17 | International Business Machines Corp. | Federated searching of heterogeneous datastores using a federated datastore object |
US6212628B1 (en) | 1998-04-09 | 2001-04-03 | Teranex, Inc. | Mesh connected computer |
US6128627A (en) | 1998-04-15 | 2000-10-03 | Inktomi Corporation | Consistent data storage in an object cache |
US6101601A (en) | 1998-04-20 | 2000-08-08 | International Business Machines Corporation | Method and apparatus for hibernation within a distributed data processing system |
JPH11316699A (ja) | 1998-05-01 | 1999-11-16 | Hiroaki Horikoshi | データベース作成方法、データベース作成システムおよびデータベース作成プログラムを記録したプログラム記録媒体 |
US6122685A (en) | 1998-05-06 | 2000-09-19 | Emc Corporation | System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed |
KR100283243B1 (ko) | 1998-05-11 | 2001-03-02 | 구자홍 | 운영체제의 부팅방법 |
JP3404289B2 (ja) | 1998-05-22 | 2003-05-06 | 富士通株式会社 | ディスク制御装置及びその制御方法 |
US6314433B1 (en) | 1998-06-12 | 2001-11-06 | Hewlett-Packard Company | Frame-based heroic data recovery |
FR2780178B1 (fr) | 1998-06-18 | 2001-08-10 | Inst Nat Rech Inf Automat | Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine |
US6425057B1 (en) | 1998-08-27 | 2002-07-23 | Hewlett-Packard Company | Caching protocol method and system based on request frequency and relative storage duration |
US6209088B1 (en) * | 1998-09-21 | 2001-03-27 | Microsoft Corporation | Computer hibernation implemented by a computer operating system |
US6714935B1 (en) * | 1998-09-21 | 2004-03-30 | Microsoft Corporation | Management of non-persistent data in a persistent database |
US6519597B1 (en) * | 1998-10-08 | 2003-02-11 | International Business Machines Corporation | Method and apparatus for indexing structured documents with rich data types |
JP3175764B2 (ja) | 1998-11-06 | 2001-06-11 | 日本電気株式会社 | メモリスケジューリング方法及びメモリスケジューリングプログラムを格納する記憶媒体 |
US6249841B1 (en) | 1998-12-03 | 2001-06-19 | Ramtron International Corporation | Integrated circuit memory device and method incorporating flash and ferroelectric random access memory arrays |
US6338056B1 (en) * | 1998-12-14 | 2002-01-08 | International Business Machines Corporation | Relational database extender that supports user-defined index types and user-defined search |
KR20000039727A (ko) | 1998-12-15 | 2000-07-05 | 구자홍 | 플래시 메모리 접근 방법 |
US6279081B1 (en) | 1998-12-22 | 2001-08-21 | Hewlett-Packard Company | System and method for performing memory fetches for an ATM card |
JP2000194645A (ja) | 1998-12-28 | 2000-07-14 | Toshiba Corp | 電子機器制御方法および電子機器制御装置および電子機器 |
US6378043B1 (en) * | 1998-12-31 | 2002-04-23 | Oracle Corporation | Reward based cache management |
US6463509B1 (en) | 1999-01-26 | 2002-10-08 | Motive Power, Inc. | Preloading data in a cache memory according to user-specified preload criteria |
GB9903490D0 (en) | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
JP3543661B2 (ja) | 1999-03-05 | 2004-07-14 | 日本電気株式会社 | 交換機ファイルシステムにおけるバッファキャッシュ方法および装置 |
US6640278B1 (en) | 1999-03-25 | 2003-10-28 | Dell Products L.P. | Method for configuration and management of storage resources in a storage network |
US6401093B1 (en) | 1999-03-31 | 2002-06-04 | International Business Machines Corporation | Cross file system caching and synchronization |
US20030070065A1 (en) | 1999-03-31 | 2003-04-10 | Fleming Bruce L. | Suspending to nonvolatile storage |
US6295578B1 (en) | 1999-04-09 | 2001-09-25 | Compaq Computer Corporation | Cascaded removable media data storage system |
US6535949B1 (en) * | 1999-04-19 | 2003-03-18 | Research In Motion Limited | Portable electronic device having a log-structured file system in flash memory |
US6237065B1 (en) | 1999-05-14 | 2001-05-22 | Hewlett-Packard Company | Preemptive replacement strategy for a caching dynamic translator |
US6317806B1 (en) | 1999-05-20 | 2001-11-13 | International Business Machines Corporation | Static queue and index queue for storing values identifying static queue locations |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6370534B1 (en) * | 1999-06-01 | 2002-04-09 | Pliant Technologies, Inc. | Blocking techniques for data storage |
US6438750B1 (en) | 1999-06-18 | 2002-08-20 | Phoenix Technologies Ltd. | Determining loading time of an operating system |
TW479194B (en) | 1999-06-18 | 2002-03-11 | Phoenix Tech Ltd | Method and apparatus for execution of an application during computer pre-boot operation |
JP3204251B2 (ja) | 1999-06-30 | 2001-09-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ハイバネーション装置及び方法、それを格納した記録媒体並びにそれを適用したコンピュータ |
US6199195B1 (en) * | 1999-07-08 | 2001-03-06 | Science Application International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
JP3812928B2 (ja) | 1999-07-14 | 2006-08-23 | 株式会社日立製作所 | 外部記憶装置及び情報処理システム |
US6513051B1 (en) * | 1999-07-16 | 2003-01-28 | Microsoft Corporation | Method and system for backing up and restoring files stored in a single instance store |
US6311232B1 (en) | 1999-07-29 | 2001-10-30 | Compaq Computer Corporation | Method and apparatus for configuring storage devices |
US6542904B2 (en) * | 1999-07-30 | 2003-04-01 | International Business Machines Corporation | Method and system for efficiently providing maintenance activity on a relational database that is utilized within a processing system |
AU774090B2 (en) | 1999-08-05 | 2004-06-17 | Oracle International Corporation | Internet file system |
JP3239335B2 (ja) | 1999-08-18 | 2001-12-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 電気的接続用構造体の形成方法およびはんだ転写用基板 |
JP2001067258A (ja) | 1999-08-25 | 2001-03-16 | Mitsubishi Electric Corp | フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法 |
US6370541B1 (en) * | 1999-09-21 | 2002-04-09 | International Business Machines Corporation | Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores |
US6539456B2 (en) * | 1999-10-13 | 2003-03-25 | Intel Corporation | Hardware acceleration of boot-up utilizing a non-volatile disk cache |
US6751658B1 (en) | 1999-10-18 | 2004-06-15 | Apple Computer, Inc. | Providing a reliable operating system for clients of a net-booted environment |
US6625742B1 (en) | 1999-11-05 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Computer diagnostic having an LED to provide direct visual feedback as to the status of the standby power supply when power button is actuated |
US6338126B1 (en) * | 1999-12-06 | 2002-01-08 | Legato Systems, Inc. | Crash recovery without complete remirror |
JP2003517682A (ja) * | 1999-12-17 | 2003-05-27 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | キャッシュを有するデータプロセッサ |
JP3562419B2 (ja) | 2000-02-01 | 2004-09-08 | 日本電気株式会社 | 電子交換機 |
US6556983B1 (en) * | 2000-01-12 | 2003-04-29 | Microsoft Corporation | Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space |
US6609182B1 (en) | 2000-01-20 | 2003-08-19 | Microsoft Corporation | Smart hibernation on an operating system with page translation |
US6366996B1 (en) * | 2000-01-24 | 2002-04-02 | Pmc-Sierra, Inc. | Page memory management in non time critical data buffering applications |
US6694336B1 (en) | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6671757B1 (en) | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
AU2001233131A1 (en) | 2000-02-02 | 2001-08-14 | Sony Electronics Inc. | System and method for effectively utilizing a cache memory in an electronic device |
JP4131894B2 (ja) | 2000-02-29 | 2008-08-13 | 株式会社東芝 | ランダムディスクライトに好適なディスク制御機構 |
JP4078010B2 (ja) | 2000-03-03 | 2008-04-23 | 株式会社日立グローバルストレージテクノロジーズ | 磁気ディスク装置及び情報記録方法 |
US6633978B1 (en) * | 2000-03-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for restoring computer resources |
US6684294B1 (en) | 2000-03-31 | 2004-01-27 | Intel Corporation | Using an access log for disk drive transactions |
JP2001290836A (ja) | 2000-04-07 | 2001-10-19 | Nec Corp | 利用履歴登録装置及びデータベース検索式自動生成装置 |
US6718361B1 (en) * | 2000-04-07 | 2004-04-06 | Network Appliance Inc. | Method and apparatus for reliable and scalable distribution of data files in distributed networks |
US6820088B1 (en) * | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
US7421541B2 (en) | 2000-05-12 | 2008-09-02 | Oracle International Corporation | Version management of cached permissions metadata |
US6629201B2 (en) | 2000-05-15 | 2003-09-30 | Superspeed Software, Inc. | System and method for high-speed substitute cache |
KR100694043B1 (ko) | 2000-05-18 | 2007-03-12 | 삼성전자주식회사 | Av 시스템 및 그 기능 확장 모듈 |
US6671699B1 (en) | 2000-05-20 | 2003-12-30 | Equipe Communications Corporation | Shared database usage in network devices |
US6715016B1 (en) | 2000-06-01 | 2004-03-30 | Hitachi, Ltd. | Multiple operating system control method |
JP3705731B2 (ja) | 2000-06-05 | 2005-10-12 | 富士通株式会社 | 入出力制御装置 |
US7412369B1 (en) | 2000-06-09 | 2008-08-12 | Stmicroelectronics, Inc. | System and method for designing and optimizing the memory of an embedded processing system |
JP4394806B2 (ja) | 2000-06-22 | 2010-01-06 | 独立行政法人科学技術振興機構 | バックアップ装置 |
TW576966B (en) | 2000-06-23 | 2004-02-21 | Intel Corp | Non-volatile cache integrated with mass storage device |
WO2002001365A2 (en) | 2000-06-23 | 2002-01-03 | Intel Corporation | Non-volatile cache |
US6557077B1 (en) * | 2000-07-07 | 2003-04-29 | Lsi Logic Corporation | Transportable memory apparatus and associated methods of initializing a computer system having the same |
US6928521B1 (en) | 2000-08-01 | 2005-08-09 | International Business Machines Corporation | Method, system, and data structures for using metadata in updating data in a storage device |
US6418510B1 (en) | 2000-09-14 | 2002-07-09 | International Business Machines Corporation | Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD) |
US6725342B1 (en) * | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
US6434682B1 (en) | 2000-09-28 | 2002-08-13 | International Business Machines Corporation | Data management system with shortcut migration via efficient automatic reconnection to previously migrated copy |
RU2189073C2 (ru) | 2000-10-13 | 2002-09-10 | Курский государственный технический университет | Система распределения ресурсов |
US7043524B2 (en) * | 2000-11-06 | 2006-05-09 | Omnishift Technologies, Inc. | Network caching system for streamed applications |
US6999956B2 (en) | 2000-11-16 | 2006-02-14 | Ward Mullins | Dynamic object-driven database manipulation and mapping system |
US6629198B2 (en) | 2000-12-08 | 2003-09-30 | Sun Microsystems, Inc. | Data storage system and method employing a write-ahead hash log |
US7178100B2 (en) | 2000-12-15 | 2007-02-13 | Call Charles G | Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers |
US6871271B2 (en) * | 2000-12-21 | 2005-03-22 | Emc Corporation | Incrementally restoring a mass storage device to a prior state |
JP2002197073A (ja) | 2000-12-25 | 2002-07-12 | Hitachi Ltd | キャッシュ一致制御装置 |
US6651141B2 (en) | 2000-12-29 | 2003-11-18 | Intel Corporation | System and method for populating cache servers with popular media contents |
US6546472B2 (en) * | 2000-12-29 | 2003-04-08 | Hewlett-Packard Development Company, L.P. | Fast suspend to disk |
WO2002057917A2 (en) | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US6516380B2 (en) * | 2001-02-05 | 2003-02-04 | International Business Machines Corporation | System and method for a log-based non-volatile write cache in a storage controller |
US6877081B2 (en) * | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6918022B2 (en) | 2001-02-28 | 2005-07-12 | Intel Corporation | Memory space organization |
JP2002259186A (ja) | 2001-03-06 | 2002-09-13 | Hitachi Ltd | Tree構造型インデクスの整合性チェック処理方法およびプログラムおよび装置 |
US6877111B2 (en) | 2001-03-26 | 2005-04-05 | Sun Microsystems, Inc. | Method and apparatus for managing replicated and migration capable session state for a Java platform |
US6996660B1 (en) * | 2001-04-09 | 2006-02-07 | Matrix Semiconductor, Inc. | Memory device and method for storing and reading data in a write-once memory array |
US6584034B1 (en) | 2001-04-23 | 2003-06-24 | Aplus Flash Technology Inc. | Flash memory array structure suitable for multiple simultaneous operations |
US6961723B2 (en) | 2001-05-04 | 2005-11-01 | Sun Microsystems, Inc. | System and method for determining relevancy of query responses in a distributed network search mechanism |
US6717763B2 (en) | 2001-05-16 | 2004-04-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Power savings method and apparatus for disk drives |
JP2002342037A (ja) | 2001-05-22 | 2002-11-29 | Fujitsu Ltd | ディスク装置 |
KR100389867B1 (ko) | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US6697818B2 (en) | 2001-06-14 | 2004-02-24 | International Business Machines Corporation | Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database |
US6922765B2 (en) | 2001-06-21 | 2005-07-26 | International Business Machines Corporation | Method of allocating physical memory space having pinned and non-pinned regions |
US6920533B2 (en) | 2001-06-27 | 2005-07-19 | Intel Corporation | System boot time reduction method |
US6772178B2 (en) | 2001-07-27 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for managing remote data replication in a distributed computer system |
US6742097B2 (en) | 2001-07-30 | 2004-05-25 | Rambus Inc. | Consolidation of allocated memory to reduce power consumption |
US20030041213A1 (en) | 2001-08-24 | 2003-02-27 | Yakov Tokar | Method and apparatus for using a cache memory |
JP2003076498A (ja) | 2001-09-05 | 2003-03-14 | Hitachi Ltd | ディスク記憶装置 |
US6769050B1 (en) | 2001-09-10 | 2004-07-27 | Rambus Inc. | Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules |
JP2003085041A (ja) | 2001-09-10 | 2003-03-20 | Ricoh Co Ltd | ディスクキャッシュシステム |
US7472230B2 (en) | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
JP3822081B2 (ja) | 2001-09-28 | 2006-09-13 | 東京エレクトロンデバイス株式会社 | データ書込装置、データ書込制御方法及びプログラム |
JP4093741B2 (ja) | 2001-10-03 | 2008-06-04 | シャープ株式会社 | 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置 |
US6636942B2 (en) | 2001-10-05 | 2003-10-21 | International Business Machines Corporation | Storage structure for storing formatted data on a random access medium |
US20030074524A1 (en) * | 2001-10-16 | 2003-04-17 | Intel Corporation | Mass storage caching processes for power reduction |
US6944757B2 (en) * | 2001-10-16 | 2005-09-13 | Dell Products L.P. | Method for allowing CD removal when booting embedded OS from a CD-ROM device |
EP1304620A1 (en) | 2001-10-17 | 2003-04-23 | Texas Instruments Incorporated | Cache with selective write allocation |
US20030110357A1 (en) | 2001-11-14 | 2003-06-12 | Nguyen Phillip V. | Weight based disk cache replacement method |
US6687158B2 (en) * | 2001-12-21 | 2004-02-03 | Fujitsu Limited | Gapless programming for a NAND type flash memory |
JP2003196032A (ja) | 2001-12-26 | 2003-07-11 | Nec Corp | ストレージ装置のライトキャッシュ制御方法及びストレージ装置 |
WO2003067787A2 (en) | 2002-02-08 | 2003-08-14 | I/O Integrity, Inc. | Redirecting local disk traffic to network attached storage |
US6782453B2 (en) | 2002-02-12 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Storing data in memory |
US6901499B2 (en) | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
US6771536B2 (en) | 2002-02-27 | 2004-08-03 | Sandisk Corporation | Operating techniques for reducing program and read disturbs of a non-volatile memory |
JP4299555B2 (ja) | 2002-03-15 | 2009-07-22 | 富士通株式会社 | キャッシュ制御プログラム |
US7136966B2 (en) | 2002-03-18 | 2006-11-14 | Lsi Logic Corporation | Method and apparatus for using a solid state disk device as a storage controller cache |
US6801459B2 (en) | 2002-03-22 | 2004-10-05 | Intel Corporation | Obtaining data mask mapping information |
US20040044776A1 (en) * | 2002-03-22 | 2004-03-04 | International Business Machines Corporation | Peer to peer file sharing system using common protocols |
US7065627B2 (en) | 2002-03-25 | 2006-06-20 | International Business Machines Corporation | Method and system for providing an event driven image for a boot record |
JP4229626B2 (ja) | 2002-03-26 | 2009-02-25 | 富士通株式会社 | ファイル管理システム |
US6820180B2 (en) | 2002-04-04 | 2004-11-16 | International Business Machines Corporation | Apparatus and method of cascading backup logical volume mirrors |
EP1351146A1 (en) | 2002-04-04 | 2003-10-08 | Hewlett-Packard Company | Power management system and method with recovery after power failure |
JP3901002B2 (ja) | 2002-04-23 | 2007-04-04 | 日本電気株式会社 | ページングシステム、ページング方法、および、ページングプログラム |
US6891543B2 (en) | 2002-05-08 | 2005-05-10 | Intel Corporation | Method and system for optimally sharing memory between a host processor and graphics processor |
US6966006B2 (en) | 2002-05-09 | 2005-11-15 | International Business Machines Corporation | Adaptive startup policy for accelerating multi-disk array spin-up |
US6898609B2 (en) | 2002-05-10 | 2005-05-24 | Douglas W. Kerwin | Database scattering system |
US6968450B1 (en) | 2002-06-01 | 2005-11-22 | Western Digital Technologies, Inc. | Disk drive caching initial host requested data in non-volatile semiconductor memory to reduce start-up time of a host computer |
JP2004021370A (ja) | 2002-06-13 | 2004-01-22 | Hitachi Ltd | ディスクアレイ制御装置 |
US7062675B1 (en) | 2002-06-25 | 2006-06-13 | Emc Corporation | Data storage cache system shutdown scheme |
US7065527B2 (en) * | 2002-06-26 | 2006-06-20 | Microsoft Corporation | Systems and methods of optimizing metadata publishing system updates by alternating databases |
US7017037B2 (en) * | 2002-06-27 | 2006-03-21 | Microsoft Corporation | Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time |
US7082495B2 (en) | 2002-06-27 | 2006-07-25 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
US6941310B2 (en) * | 2002-07-17 | 2005-09-06 | Oracle International Corp. | System and method for caching data for a mobile application |
US7123512B2 (en) | 2002-07-19 | 2006-10-17 | Micron Technology, Inc. | Contiguous block addressing scheme |
AU2003250670A1 (en) | 2002-07-23 | 2004-02-09 | Research In Motion Limited | Data store management system and method for wireless devices |
JP2004054845A (ja) | 2002-07-24 | 2004-02-19 | Sony Corp | データ管理装置 |
JP4026753B2 (ja) * | 2002-07-25 | 2007-12-26 | 株式会社日立製作所 | 半導体集積回路 |
NZ520786A (en) * | 2002-08-14 | 2005-06-24 | Daniel James Oaeconnell | Method of booting a computer system using a memory image of the post boot content of the system RAM memory |
US7043610B2 (en) | 2002-08-19 | 2006-05-09 | Aristos Logic Corporation | System and method for maintaining cache coherency without external controller intervention |
US7096378B2 (en) | 2002-08-29 | 2006-08-22 | Freescale Semiconductor, Inc. | Data storage system having a non-volatile IC based memory for storing user data |
FI20021620A (fi) | 2002-09-10 | 2004-03-11 | Nokia Corp | Muistirakenne, järjestelmä ja elektroniikkalaite sekä menetelmä muistipiirin yhteydessä |
US20040078508A1 (en) * | 2002-10-02 | 2004-04-22 | Rivard William G. | System and method for high performance data storage and retrieval |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US7284149B1 (en) | 2002-10-16 | 2007-10-16 | Ken Scott Fisher | Intermittent connection protection for external computer devices |
US20040088481A1 (en) | 2002-11-04 | 2004-05-06 | Garney John I. | Using non-volatile memories for disk caching |
US7035974B2 (en) | 2002-11-06 | 2006-04-25 | Synology Inc. | RAID-5 disk having cache memory implemented using non-volatile RAM |
US7502791B2 (en) | 2002-11-26 | 2009-03-10 | Norsync Technology A/S | Database constraint enforcer |
US7003620B2 (en) | 2002-11-26 | 2006-02-21 | M-Systems Flash Disk Pioneers Ltd. | Appliance, including a flash memory, that is robust under power failure |
US7036040B2 (en) * | 2002-11-26 | 2006-04-25 | Microsoft Corporation | Reliability of diskless network-bootable computers using non-volatile memory cache |
US7003532B2 (en) | 2002-11-27 | 2006-02-21 | Microsoft Corporation | System and method for scaleable multiplexed transactional log recovery |
JP4304974B2 (ja) | 2002-12-12 | 2009-07-29 | 富士ゼロックス株式会社 | キャッシュメモリのデータ管理方法、及び情報処理装置 |
US7039765B1 (en) | 2002-12-19 | 2006-05-02 | Hewlett-Packard Development Company, L.P. | Techniques for cache memory management using read and write operations |
US7010645B2 (en) * | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US7437440B2 (en) | 2003-01-27 | 2008-10-14 | Microsoft Corporation | Peer-to-peer networking framework application programming interfaces |
KR100504696B1 (ko) | 2003-02-26 | 2005-08-03 | 삼성전자주식회사 | 블록 소거/프로그램 정보를 저장하기 위한 상태 셀들의어레이를 포함한 낸드 플래시 메모리 장치 |
JP2004272324A (ja) | 2003-03-05 | 2004-09-30 | Nec Corp | ディスクアレイ装置 |
JP2004272764A (ja) | 2003-03-11 | 2004-09-30 | Toyo Commun Equip Co Ltd | コンピュータシステムの機能拡張方法 |
US7505958B2 (en) * | 2004-09-30 | 2009-03-17 | International Business Machines Corporation | Metadata management for a data abstraction model |
WO2004097650A1 (ja) | 2003-04-25 | 2004-11-11 | Matsushita Electric Industrial Co., Ltd. | データ記録装置 |
CA2426606A1 (en) | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Using buffer to facilitate log catchup for online operations |
US7296043B2 (en) | 2003-05-30 | 2007-11-13 | Microsoft Corporation | Memory file size adjustment |
US7139933B2 (en) * | 2003-06-20 | 2006-11-21 | International Business Machines Corporation | Preserving cache data against cluster reboot |
CA2433254A1 (en) * | 2003-06-25 | 2004-12-25 | Ibm Canada Limited - Ibm Canada Limitee | System and method for warm shutdown and restart of a buffer pool |
US7299379B2 (en) * | 2003-06-27 | 2007-11-20 | Intel Corporation | Maintaining cache integrity by recording write addresses in a log |
JP4090400B2 (ja) * | 2003-07-24 | 2008-05-28 | 株式会社日立製作所 | ストレージシステム |
US7068575B2 (en) | 2003-07-30 | 2006-06-27 | Microsoft Corporation | High speed optical disc recording |
US6977842B2 (en) | 2003-09-16 | 2005-12-20 | Micron Technology, Inc. | Boosted substrate/tub programming for flash memories |
EP1678708A1 (en) | 2003-10-17 | 2006-07-12 | Koninklijke Philips Electronics N.V. | Signal encoding |
US7366866B2 (en) * | 2003-10-30 | 2008-04-29 | Hewlett-Packard Development Company, L.P. | Block size allocation in copy operations |
EP1538525A1 (en) | 2003-12-04 | 2005-06-08 | Texas Instruments Incorporated | ECC computation simultaneously performed while reading or programming a flash memory |
US7774508B2 (en) | 2003-12-09 | 2010-08-10 | Panasonic Corporation | Electronic apparatus, control method thereof, host device, and control method thereof |
US7130962B2 (en) * | 2003-12-18 | 2006-10-31 | Intel Corporation | Writing cache lines on a disk drive |
US7558911B2 (en) * | 2003-12-18 | 2009-07-07 | Intel Corporation | Maintaining disk cache coherency in multiple operating system environment |
JP2005191413A (ja) | 2003-12-26 | 2005-07-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
US20050251617A1 (en) | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US8458488B2 (en) | 2003-12-31 | 2013-06-04 | International Business Machines Corporation | Method and system for diagnosing operation of tamper-resistant software |
US20050145923A1 (en) | 2004-01-06 | 2005-07-07 | Chiou-Feng Chen | NAND flash memory with enhanced program and erase performance, and fabrication process |
US6993618B2 (en) | 2004-01-15 | 2006-01-31 | Super Talent Electronics, Inc. | Dual-mode flash storage exchanger that transfers flash-card data to a removable USB flash key-drive with or without a PC host |
US7769959B2 (en) | 2004-01-20 | 2010-08-03 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration to memory |
US7127549B2 (en) | 2004-02-04 | 2006-10-24 | Sandisk Corporation | Disk acceleration using first and second storage devices |
JP4494031B2 (ja) | 2004-02-06 | 2010-06-30 | 株式会社日立製作所 | ストレージ制御装置、及びストレージ制御装置の制御方法 |
KR100564613B1 (ko) | 2004-02-25 | 2006-03-29 | 삼성전자주식회사 | 플래시 메모리 및 광 드라이브의 펌웨어 모듈 동적 로딩동작 방법 |
US7421562B2 (en) | 2004-03-01 | 2008-09-02 | Sybase, Inc. | Database system providing methodology for extended memory support |
US20050204091A1 (en) | 2004-03-11 | 2005-09-15 | Kilbuck Kevin M. | Non-volatile memory with synchronous DRAM interface |
US7620983B1 (en) | 2004-03-16 | 2009-11-17 | Symantec Corporation | Behavior profiling |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7143120B2 (en) | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
US7366740B2 (en) * | 2004-05-03 | 2008-04-29 | Microsoft Corporation | Systems and methods for automatic maintenance and repair of enitites in a data model |
JP4392601B2 (ja) | 2004-05-07 | 2010-01-06 | パナソニック株式会社 | データアクセス装置および記録媒体 |
JP4205634B2 (ja) | 2004-05-27 | 2009-01-07 | Necディスプレイソリューションズ株式会社 | 画像送信装置で使用される方法、およびプログラム |
US7526608B2 (en) | 2004-05-28 | 2009-04-28 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a software implemented cache memory |
US7231497B2 (en) * | 2004-06-15 | 2007-06-12 | Intel Corporation | Merging write-back and write-through cache policies |
US20060010293A1 (en) * | 2004-07-09 | 2006-01-12 | Schnapp Michael G | Cache for file system used in storage system |
CN1266229C (zh) | 2004-08-10 | 2006-07-26 | 汕头市龙华珠光颜料有限公司 | 一种随角异色的多层变色颜料及其生产方法 |
US7171532B2 (en) * | 2004-08-30 | 2007-01-30 | Hitachi, Ltd. | Method and system for data lifecycle management in an external storage linkage environment |
WO2006024323A1 (en) | 2004-08-31 | 2006-03-09 | Freescale Semiconductor Inc. | A virtual address cache and method for sharing data using a unique task identifier |
EP1807767A1 (en) | 2004-09-07 | 2007-07-18 | Freescale Semiconductors, Inc. | A virtual address cache and method for sharing data stored in a virtual address cache |
JP4192129B2 (ja) | 2004-09-13 | 2008-12-03 | 株式会社東芝 | メモリ管理装置 |
US20060075185A1 (en) * | 2004-10-06 | 2006-04-06 | Dell Products L.P. | Method for caching data and power conservation in an information handling system |
US7657756B2 (en) * | 2004-10-08 | 2010-02-02 | International Business Machines Corporaiton | Secure memory caching structures for data, integrity and version values |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
JP4956922B2 (ja) * | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
US7873782B2 (en) | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
US20060106889A1 (en) | 2004-11-12 | 2006-05-18 | Mannby Claes-Fredrik U | Method, system, and program for managing revisions to a file |
JP4689247B2 (ja) | 2004-11-19 | 2011-05-25 | キヤノン株式会社 | カメラ及びその制御方法 |
KR100643287B1 (ko) | 2004-11-19 | 2006-11-10 | 삼성전자주식회사 | 플래시 메모리의 데이터 처리 장치 및 방법 |
US20060136664A1 (en) * | 2004-12-16 | 2006-06-22 | Trika Sanjeev N | Method, apparatus and system for disk caching in a dual boot environment |
US7480654B2 (en) | 2004-12-20 | 2009-01-20 | International Business Machines Corporation | Achieving cache consistency while allowing concurrent changes to metadata |
US7480761B2 (en) | 2005-01-10 | 2009-01-20 | Microsoft Corporation | System and methods for an overlay disk and cache using portable flash memory |
KR100670010B1 (ko) | 2005-02-03 | 2007-01-19 | 삼성전자주식회사 | 하이브리드 브로드캐스트 암호화 방법 |
US20060212644A1 (en) | 2005-03-21 | 2006-09-21 | Acton John D | Non-volatile backup for data cache |
US7620773B2 (en) | 2005-04-15 | 2009-11-17 | Microsoft Corporation | In-line non volatile memory disk read cache and write buffer |
US8812781B2 (en) | 2005-04-19 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | External state cache for computer processor |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7516277B2 (en) | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
US20060277359A1 (en) | 2005-06-06 | 2006-12-07 | Faber Robert W | Blank memory location detection mechanism |
US7523256B2 (en) * | 2005-06-15 | 2009-04-21 | Bea Systems, Inc. | System and method for scheduling disk writes in an application server of transactional environment |
US7640398B2 (en) * | 2005-07-11 | 2009-12-29 | Atmel Corporation | High-speed interface for high-density flash with two levels of pipelined cache |
US20070033356A1 (en) | 2005-08-03 | 2007-02-08 | Boris Erlikhman | System for Enabling Secure and Automatic Data Backup and Instant Recovery |
US7984084B2 (en) | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
US7634516B2 (en) * | 2005-08-17 | 2009-12-15 | International Business Machines Corporation | Maintaining an aggregate including active files in a storage pool in a random access medium |
US7409524B2 (en) * | 2005-08-17 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | System and method for responding to TLB misses |
US7533215B2 (en) * | 2005-09-15 | 2009-05-12 | Intel Corporation | Distributed and packed metadata structure for disk cache |
US7395401B2 (en) | 2005-09-30 | 2008-07-01 | Sigmatel, Inc. | System and methods for accessing solid-state memory devices |
US7409537B2 (en) | 2005-10-06 | 2008-08-05 | Microsoft Corporation | Fast booting an operating system from an off state |
GB2433396B (en) | 2005-12-15 | 2010-06-23 | Bridgeworks Ltd | A bridge |
US8914557B2 (en) * | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US20070150966A1 (en) | 2005-12-22 | 2007-06-28 | Kirschner Wesley A | Method and apparatus for maintaining a secure software boundary |
US7451353B2 (en) * | 2005-12-23 | 2008-11-11 | Intel Corporation | Cache disassociation detection |
US7627713B2 (en) | 2005-12-29 | 2009-12-01 | Intel Corporation | Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility |
US20070207800A1 (en) | 2006-02-17 | 2007-09-06 | Daley Robert C | Diagnostics And Monitoring Services In A Mobile Network For A Mobile Device |
JP2007233896A (ja) | 2006-03-03 | 2007-09-13 | Hitachi Ltd | ストレージ装置及びその制御方法 |
DE602007010439D1 (de) | 2006-03-31 | 2010-12-23 | Mosaid Technologies Inc | Flash-speichersystem-steuerverfahren |
US7849502B1 (en) | 2006-04-29 | 2010-12-07 | Ironport Systems, Inc. | Apparatus for monitoring network traffic |
US7558913B2 (en) * | 2006-06-20 | 2009-07-07 | Microsoft Corporation | Atomic commit of cache transfer with staging area |
US7512739B2 (en) * | 2006-07-05 | 2009-03-31 | International Business Machines Corporation | Updating a node-based cache LRU tree |
JP2008052321A (ja) | 2006-08-22 | 2008-03-06 | Murata Mach Ltd | ネットワークデジタル複合機 |
US8121977B2 (en) | 2006-08-30 | 2012-02-21 | Iwmage Systems, Inc. | Ensuring data persistence and consistency in enterprise storage backup systems |
US7870336B2 (en) | 2006-11-03 | 2011-01-11 | Microsoft Corporation | Operating system protection against side-channel attacks on secrecy |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US7818701B1 (en) | 2006-12-22 | 2010-10-19 | Cypress Semiconductor Corporation | Memory controller with variable zone size |
US20080172518A1 (en) | 2007-01-11 | 2008-07-17 | Sandisk Il Ltd. | Systems For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device |
TWI417722B (zh) | 2007-01-26 | 2013-12-01 | Hicamp Systems Inc | 階層式不可改變的內容可定址的記憶體處理器 |
US7698506B1 (en) * | 2007-04-26 | 2010-04-13 | Network Appliance, Inc. | Partial tag offloading for storage server victim cache |
US7945734B2 (en) * | 2007-08-10 | 2011-05-17 | Eastman Kodak Company | Removable storage device with code to allow change detection |
US7895242B2 (en) * | 2007-10-31 | 2011-02-22 | Microsoft Corporation | Compressed storage management |
US8190652B2 (en) | 2007-12-06 | 2012-05-29 | Intel Corporation | Achieving coherence between dynamically optimized code and original code |
US8631203B2 (en) * | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
CN101236530B (zh) | 2008-01-30 | 2010-09-01 | 清华大学 | 高速缓存替换策略的动态选择方法 |
US8082384B2 (en) * | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US8074014B2 (en) | 2008-03-31 | 2011-12-06 | Microsoft Corporation | Storage systems using write off-loading |
US8275970B2 (en) | 2008-05-15 | 2012-09-25 | Microsoft Corp. | Optimizing write traffic to a disk |
US8597563B2 (en) | 2008-07-11 | 2013-12-03 | Rohm And Haas Company | Recycled thermoplastic composition comprising waste thermoset material and methods of making |
US8140739B2 (en) | 2008-08-08 | 2012-03-20 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table |
TWI347515B (en) | 2008-09-04 | 2011-08-21 | Asustek Comp Inc | Electronic device |
US9722813B2 (en) | 2008-09-08 | 2017-08-01 | Tendril Networks, Inc. | Consumer directed energy management systems and methods |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US8032707B2 (en) * | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US7953774B2 (en) * | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8352464B2 (en) | 2009-07-24 | 2013-01-08 | Peer Belt Inc. | System and method for ranking documents through human assistance |
-
2008
- 2008-11-14 US US12/271,472 patent/US9032151B2/en active Active
-
2009
- 2009-09-04 TW TW098129955A patent/TWI494762B/zh not_active IP Right Cessation
- 2009-09-09 JP JP2011526951A patent/JP5715566B2/ja active Active
- 2009-09-09 EP EP09813565.0A patent/EP2329360B1/en active Active
- 2009-09-09 CN CN200980136912.9A patent/CN102150131B/zh active Active
- 2009-09-09 WO PCT/US2009/056419 patent/WO2010030715A2/en active Application Filing
-
2015
- 2015-05-11 US US14/708,525 patent/US10387313B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201011538A (en) | 2010-03-16 |
WO2010030715A2 (en) | 2010-03-18 |
EP2329360A2 (en) | 2011-06-08 |
EP2329360B1 (en) | 2019-11-27 |
WO2010030715A3 (en) | 2010-05-06 |
JP2012503232A (ja) | 2012-02-02 |
TWI494762B (zh) | 2015-08-01 |
US20100070701A1 (en) | 2010-03-18 |
EP2329360A4 (en) | 2012-05-02 |
US9032151B2 (en) | 2015-05-12 |
US10387313B2 (en) | 2019-08-20 |
US20150242321A1 (en) | 2015-08-27 |
JP5715566B2 (ja) | 2015-05-07 |
CN102150131A (zh) | 2011-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102150131B (zh) | 管理高速缓存数据和元数据 | |
CN102216899B (zh) | 管理高速缓存数据和元数据 | |
CN103995578B (zh) | 一种具有数据持续模式的器件驱动器 | |
JP6759459B2 (ja) | 物理メディアアウェア空間的結合ジャーナル処理及びリプレイ | |
US7721040B2 (en) | Method and system for facilitating fast wake-up of a flash memory system | |
US20150039837A1 (en) | System and method for tiered caching and storage allocation | |
CN107632939A (zh) | 用于存储装置的映射表 | |
CN103890724A (zh) | 信息处理设备、用于控制信息处理设备的方法、存储控制工具的非临时记录介质、主机装置、存储性能评估工具的非临时记录介质、以及用于外部存储装置的性能评估方法 | |
CN110175001A (zh) | 一种nor-flash数据存储方法、计算机设备及存储介质 | |
CN102165418A (zh) | 涡轮引导系统和方法 | |
CN102999430A (zh) | 处理具有非易失性存储器的系统的未完全关闭 | |
CN102467522B (zh) | 一种基于nand闪存的文件系统的自编程方法及装置 | |
WO2008087634A1 (en) | A method and system for facilitating fast wake-up of a flash memory system | |
CN100435118C (zh) | 高速缓存数据回存方法 | |
US11513742B2 (en) | Distributed hot space in a data storage server | |
US10613973B1 (en) | Garbage collection in solid state drives | |
CN115421762A (zh) | 一种bmc固件升级方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150727 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |