CN105637470B - 用于脏数据管理的方法和计算设备 - Google Patents
用于脏数据管理的方法和计算设备 Download PDFInfo
- Publication number
- CN105637470B CN105637470B CN201380075906.3A CN201380075906A CN105637470B CN 105637470 B CN105637470 B CN 105637470B CN 201380075906 A CN201380075906 A CN 201380075906A CN 105637470 B CN105637470 B CN 105637470B
- Authority
- CN
- China
- Prior art keywords
- dirty data
- data
- hybrid drive
- computing device
- indication
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F2003/0697—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
-
- 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/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Power Sources (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
混合驱动器包括多个部分:性能部分(例如闪存设备)和基础部分(例如硬盘驱动器)。一般是计算设备的操作***的部分的驱动器访问***向混合驱动器发出输入/输出(I/O)命令以将数据存储到混合驱动器并从混合驱动器取回数据。一些数据可存储在一个部分而不是另一部分中,且这个数据可在不同的时间与另一部分同步(例如复制到另一部分)。驱动器访问***向混合驱动器提供何时使一个部分中的数据与另一部分同步的指示。做出这些指示,使得由于同步而引起的对由用户对设备的使用和/或设备的功率节省模式的潜在干扰减小。
Description
背景技术
计算机传统上具有存储设备,其上可存储数据例如程序指令和用户数据。当技术进步时,这些存储设备包括磁性软盘、磁性硬盘、固态驱动器(例如闪存驱动器)等。也发展了包括更大容量(但更不昂贵)的硬盘驱动器和更小容量(但更昂贵的)闪存驱动器的一些混合驱动器。虽然这样的混合驱动器可能是有益的,它们并不是没有它们的问题。一个这样的问题是,更小容量驱动器可累积以后被复制到更大容量驱动器的数据,且混合驱动器确定何时复制这样的数据依然很难。关于何时将数据复制到更大容量驱动器的差的确定可干扰由用户对设备的使用,导致用户受挫和设备的差性能。
发明内容
这个发明内容被提供来以简化的形式介绍一系列概念,其在下面在具体实施方式中被进一步描述。这个发明内容并不打算识别所主张的主题的关键特征或必要特征,也不打算用于限制所主张的主题的范围。
根据一个或多个方面,在计算设备处,得到在混合驱动器的一部分中的一个或多个优先级水平处的脏数据的量的指示。混合驱动器具有包括性能部分和基础部分的其中可存储数据的两个部分,且脏数据指存储在这两个部分的一个中但不在这两个部分的另一个中的数据。何时使在这两个部分的一个中的脏数据与这两个部分的另一个同步的指示被提供到混合驱动器,所述指示被确定以致减小对由用户对计算设备的使用的干扰和/或以致减小对计算设备的功率节省模式的干扰。
附图说明
相同的数字在全部附图中用于参考相似的特征。
图1图示根据一个或多个实施例的实施混合驱动器的脏数据管理的示例***。
图2图示根据一个或多个实施例的示例驱动器访问***。
图3图示根据一个或多个实施例的脏数据阈值的例子。
图4是图示根据一个或多个实施例的用于实施混合驱动器的脏数据管理的示例过程的流程图。
图5是图示根据一个或多个实施例的用于实施混合驱动器的脏数据管理的另一示例过程的流程图。
图6图示通常包括示例计算设备的示例***,示例计算设备代表可实施本文所述的各种技术的一个或多个***和/或设备。
具体实施方式
在本文公开了混合驱动器的脏数据管理。混合驱动器包括多个部分:性能部分(例如闪存设备)和基础部分(例如硬盘驱动器)。一般是计算设备的操作***的部分的驱动器访问***向混合驱动器发出输入/输出(I/O)命令以将数据存储到混合驱动器并从混合驱动器取回数据。一些数据存储在性能部分中,且这个数据可在不同的时间与基础部分同步(例如复制到基础部分)。驱动器访问***向混合驱动器提供何时使性能部分中的数据与基础部分同步的指示。做出这些指示,使得由于同步而引起的对由用户对设备的使用和/或设备的功率节省模式的潜在干扰减小,如下面更详细讨论的那样。类似地,存储在基础部分中的一些数据可在不同的时间与性能部分同步(例如复制到性能部分)。驱动器访问***向混合驱动器提供何时使基础部分中的数据与性能部分同步的指示。做出这些指示,使得由于同步而引起的对由用户对设备的使用和/或设备的功率节省模式的潜在干扰减小,如下面更详细讨论的那样。
图1图示根据一个或多个实施例的实施混合驱动器的脏数据管理的示例***100。***100包括混合驱动器102、操作***104和一个或多个应用106。混合驱动器102可以用不同的方式实施,例如在计算设备中的固定驱动器、耦合到计算设备的可移除设备(例如经由通用串行总线(USB)连接)等。
在一个或多个实施例中,***100在单个计算设备上实施。***100可在各种不同类型的设备例如桌上型计算机、服务器计算机、膝上型或上网本计算机、平板或笔记本计算机、移动台、娱乐器具、通信地耦合到显示设备、电视机或其它显示设备的机顶盒、蜂窝或其它无线电话、游戏控制台、汽车计算机等上实施。因此,***100可在范围从具有大量存储器和处理资源的全资源设备(例如个人计算机、游戏控制台等)到具有有限的存储器和/或处理资源的低资源设备(例如传统机顶盒、手持游戏控制台等)的计算设备上实施。
替代地,***100可在多个不同的设备上实施。例如,操作***104和应用106可在一个设备(例如如上讨论的各种不同类型的计算设备中的任一个)上实施,且混合驱动器102可被实施为单独的设备。当被单独地实施时,实施操作***104的设备可以用不同的方式例如经由有线和/或无线连接(例如经由USB连接、无线USB连接等)、经由网络(例如经由局域网(LAN)、个人区域网络(PAN)等)等与混合驱动器102通信。
混合驱动器102包括两个部分:性能部分112和基础部分114。性能部分112是比基础部分114高的性能部分。部分112和114的性能可以指部分112和114的各种不同的特性,例如该部分的速度(例如信息可从部分被读取和/或写到部分的速率)和/或该部分的功率消耗(例如由当是活动的且能够被读取和/或写入时的部分消耗的功率的量)。性能部分112比基础部分114更快和/或具有更小的功率消耗,且因此被称为比基础部分114更高的性能部分。然而,性能部分112一般比基础部分114每存储单元(例如每千兆字节)花费更多。因此,基础部分114一般具有比性能部分112更多的存储容量,也被称为基础部分114比性能部分112大或基础部分114的大小大于性能部分112的大小。
可以用不同的方式实施性能部分112和基础部分114。在一个或多个实施例中,性能部分112是固态设备(例如闪存设备),而基础部分114是旋转存储设备(例如磁性硬盘驱动器)。替代地,可以用其它方式实施部分112和114。例如,性能部分112可以是一种类型的固态设备(例如单层单元(SLC)闪存),而基础部分114可以是另一种类型的固态设备(例如多层单元(SLC)闪存)。作为另一例子,可使用各种其它类型的存储设备和技术(例如忆阻器存储器技术、相变存储器技术等)来实施部分112和114中的一个或两个。
虽然混合驱动器102包括多个部分,从操作***104的观点看,混合驱动器102作为单个存储驱动器操作。混合驱动器102的大小(存储容量)是性能部分112和基础部分114中的较大者的大小,由于基础部分114的每存储单元的更低成本,较大者一般是基础部分114。混合驱动器102作为单个存储设备被呈现到操作***104,操作***104从混合驱动器102读取数据并将数据写到混合驱动器102,好像驱动器102是单个存储设备一样。然而,操作***104知道混合驱动器102包括多个部分,且因此操作***104向混合驱动器102提供关于各种数据的重要性的指示或暗示以帮助混合驱动器102确定哪个部分存储数据,如下面更详细讨论的那样。混合驱动器102可以用各种方式被呈现到操作***104作为单个存储设备。例如,混合驱动器102可将自己呈现到操作***104作为单个存储设备,混合驱动器102可以是硬件控制器呈现到操作***104作为单个存储设备的不同设备,混合驱动器102可以是在操作***104上运行的软件驱动器呈现到操作***104作为单个存储设备的多个设备,等等。
操作***104包括发出访问混合驱动器102的I/O命令——包括从混合驱动器102读取数据的命令和将数据写到混合驱动器102的命令——的I/O模块116。读和写数据的命令可来自操作***104的其它模块以及应用106。如在本文使用的,从混合驱动器102读取和写到混合驱动器102的数据包括从混合驱动器102读取和/或写到混合驱动器102的任何位,该数据可包括用户数据或程序数据、程序指令、二进制代码等。
操作***104将优先级水平分配到逻辑块地址(LBA)的组。LBA是存储有数据的在混合驱动器102上的位置的地址,且存储在那个位置处的数据也被称为LBA数据。存储在特定LBA处的数据的量可基于混合驱动器102被实施的方式而改变。被分配到特定LBA的优先级水平也被称为被分配到存储在那个特定LBA处的数据。因为优先级水平被分配到LBA的组,优先级水平也可被称为被分配到数据的组(其由LBA识别)。
操作***104在多个LAB的组的粒度下将优先级分配到LBA(虽然操作***104可以替代地在LBA的粒度下分配优先级)。使用多个LBA的组的粒度,LBA的组的大小可改变,例如是16千字节的数据被存储于的LBA的集合或64千字节的数据被存储于的LBA的集合。在一个或多个实施例中,每组LBA是地址的连续范围。替代地,一组可以用其它方式包括LBA,在这种情况下,在一组中的LBA可以不是地址的连续范围。基于操作***104可得到的各种信息例如关于在这组中的LBA被访问的频率的信息、关于在对LBA的访问期间或之前出现的事件的信息等,来分配LBA的组的优先级水平。给LBA分配被分配到包括该LBA的组的优先级,且在该组中的所有LBA被分配相同的优先级。
对于发出到混合驱动器102的每个I/O命令,I/O模块116可包括与I/O命令一起的,被分配到由该I/O命令访问的LBA的优先级水平的指示。虽然I/O模块116可包括被分配到由I/O命令访问的LBA的优先级水平的指示,I/O模块116并不被强制包括优先级水平且在一些情况下可以不包括优先级水平。
被分配到LBA的优先级水平可由混合驱动器102维持以便于在混合驱动器102中的LBA的管理。优先级水平是存储在LBA处的数据的对于操作***104的感知重要性的指示(也被称为LBA的感知重要性)。通常,数据的感知重要性指对数据的访问被期望的速度和/或数据被期望的频率。期望快速访问的数据(例如以提高计算设备启动或发起应用的速度)可被认为比不如此期望快速访问的数据具有更大的重要性。此外,被频繁访问的数据可被认为比不被频繁访问的数据具有更大的重要性。操作***104预期混合驱动器102基于它们的优先级水平将LBA的数据存储在部分112和114中(也被称为存储LBA),使得在具有较高优先级水平的LBA处的数据存储在性能部分112中(除了或不是在基础部分114中)。然而,混合驱动器102并不是一定或被强制将在任何特定的优先级水平的LBA处的数据存储在性能部分112中,且操作***104不需要且一般不知道在特定LBA处的数据被存储在部分112和114的哪个中。在特定LBA处的数据被存储在哪个部分中由混合驱动器102本身而不是操作***104确定,虽然这个确定一般由混合驱动器102基于由I/O模块116指示的优先级水平来做出。
应注意,虽然混合驱动器102基于来自操作***104的指示确定特定LBA数据被存储在部分112和114的哪个中,混合驱动器102可包括额外的一个或多个模块以确定特定LBA数据被存储在部分112和114的哪个中。例如,混合驱动器102本身可监控I/O访问并至少部分地基于这个监控来确定特定LBA数据被存储在部分112和114的哪个中。操作***104不需要且一般不知道这样的额外模块或通过混合驱动器102进行监控,并继续如在本文讨论的那样向混合驱动器102提供优先级水平的指示,而不考虑任何这样的额外模块或混合驱动器102的监控。
也应注意,虽然混合驱动器102被示为具有两个部分112和114,这些部分中的每个可由多个组件构成。例如,性能部分112可由多个闪存芯片或单个闪存芯片构成。作为另一例子,基础部分114可由单个硬盘驱动器或多个硬盘驱动器构成。这些不同的组件都可在同一设备(例如同一设备外壳)中实施或替代地散布在耦合到彼此(例如经由USB连接、无线USB连接、网络等)的多个设备(例如多个不同的外壳)当中。
此外,应注意,虽然混合驱动器102被本文被讨论为包括两个部分,混合驱动器102可以替代地包括三个或更多个部分。可以用不同的方式(例如,如上面关于性能部分112和基础部分114讨论的)使用各种非易失性存储器实施这些额外的部分,每个提供比下一更低的层更高的性能部分,而不是提供易失性高速缓存存储器(其可包括在混合驱动器102中以临时存储混合驱动器102的两个或多个部分的任一个的数据)。例如,混合驱动器102可包括中间性能部分,其是比基础部分114高的性能部分但比性能部分112低的性能部分。在这样的情况下,除了基础部分114以外的部分也可被称为性能部分。不考虑部分的数量,LBA的优先级水平的指示由操作***104提供到混合驱动器102,且混合驱动器102基于这些优先级水平指示来确定在哪个或哪些部分上存储LBA。
图2图示根据一个或多个实施例的示例驱动器访问***200。驱动器访问***200可被实施为操作***(例如图1的操作***104)的部分。替代地,驱动器访问***200可被实施为访问混合驱动器102的另一程序或应用(例如Web浏览器程序)、数据访问或存储程序等的部分。
驱动器访问***200包括优先级识别模块202、脏数据管理模块204和I/O模块206。图1的I/O模块206和I/O模块116可以是相同的模块。驱动器访问***200可作为单个设备的部分(例如,计算设备的操作***的部分)或在多个设备当中被实施。例如,脏数据管理模块204和I/O模块206可由一个计算设备实施,且优先级识别模块202的至少部分由另一设备(例如经由网络耦合到计算设备的服务器)实施。
通常,优先级识别模块202得到被分配到特定LBA的优先级水平。优先级识别模块202可以用不同的方式得到优先级水平,例如基于关于对混合驱动器102的I/O访问的信息确定LBA的优先级水平,从远程服务或***得到LBA的优先级水平,被预先配置有LBA的优先级水平,其组合,等等。因为I/O模块206向混合驱动器102发出I/O命令,I/O模块206向混合驱动器102提供被分配到与那些I/O命令相关的特定LBA的优先级水平的指示。例如,在图2中图示被分配了优先级水平212的LBA210。额外的数据(例如将被写到混合驱动器102)也可连同LBA210和优先级水平212一起被发送到混合驱动器102。
脏数据管理模块204确定使在性能部分112中的脏数据与基础部分114同步何时是合乎需要的。脏数据指存储在混合驱动器102的一个部分中但不是在另一部分中的数据(例如存储在性能部分112中但不在基础部分114中的数据、存储在基础部分114中但不在性能部分112中的数据)。例如,由I/O模块206发出的I/O命令可导致被写到性能部分112但不是基础部分114的数据。模块204可向混合驱动器102提供指示以使脏数据与基础部分114同步(例如将脏数据复制到基础部分114)或不使脏数据与基础部分114同步,如下面更详细讨论的那样。
通常,基于是否将数据放置在性能部分112中来给数据分配特定的优先级水平,这被预期增加设备的用户能察觉的速度(例如计算设备启动或发起应用的速度)和/或减少计算设备的功率消耗。例如,当启动计算设备、从休眠恢复计算设备、将存储器的页面从易失性存储器转移或交换到混合驱动器102、在计算设备上发起应用等时读取的数据可以被分配比其它一般使用数据(例如由应用在运行时访问的数据)更高的优先级水平以由于这样的数据更可能存储在性能部分112中而增加设备的用户能察觉的速度。此外,可以给数据分配特定的优先级水平,使得在性能部分112中有在最低优先级水平处的足够数量的数据(l千兆字节或4千兆字节的数据),使得被分配了最低优先级水平的LBA数据可从性能部分112移除并如所期望的那样存储在基础部分114中(因而将具有较高优先级水平的LBA数据保持在性能部分112中)。
将在最低优先级水平处的足够数量的数据维持在性能部分112中允许混合驱动器102搅动在性能部分112中的最低优先级水平处的数据而没有不利地影响在性能部分112中的较高优先级水平处的数据。在性能部分112中有不足的空间来存储用于混合驱动器112的所有I/O访问的LBA数据的情况下,混合驱动器102以在最低优先级处的数据开始(且对于在那个最低优先级处的数据,根据某个策略例如首先转移最近最少使用的(LRU)数据)将数据从性能部分112转移到基础部分114(其可包括在删除数据之前将数据从性能部分112复制到基础部分114,或从性能部分112删除已经被复制到基础部分114的数据)。当与在较高优先级处的数据比较时保持在最低优先级处的数据的数量相对大确保了当在性能部分112中的空间变得缺乏时,有低优先级数据首先转移到基础部分114,且因此较高优先级数据较不可能被转移。此外,通过保持在最低优先级处的数据的数量相对大,在最低优先级处的被添加到性能部分112的数据被允许保留在性能部分112中一段合理地长的时间量,即使性能部分112可能相对满。例如,通过在确定哪个数据首先从性能部分112转移出时实施LRU策略,在最新添加的数据从性能部分112被转移出之前存在将从性能部分112转移出的足够数量的数据(例如1千兆字节的数据、4千兆字节的数据等)。
多个不同的优先级水平可由驱动器访问***200支持,且优先级水平可以用不同的方式被标记。在一个或多个实施例中,有被标记为优先级水平4、优先级水平3、优先级水平2和优先级水平1的四个优先级水平。然而,可以替代地有任何数量的优先级水平。也可以用不同的方式例如使用字母、不同的字符或符号等来标记优先级水平。除了优先级水平以外,驱动器访问***200可以不支持某些LBA的优先级水平。没有被分配优先级水平的LBA数据存储在基础部分114而不是性能部分112中,混合驱动器102不需要做出关于LBA数据存储在哪个部分中的确定。可以用不同的方式例如基于数据的数量或数据访问的模式来确定哪些LBA没有被分配优先级水平。例如,顺序地访问大量(例如大于阈值数量)数据可导致这样的数据的LBA没有被分配优先级水平,使得数据被存储在基础部分114中且没有不利地影响性能部分112的寿命(例如在固态盘的每个单元停止正确地运行且可能不再被写入之前该单元可被写入的次数)。也应注意,在一个或多个实施例中,混合驱动器102可实施一个或多个额外的隐藏或私有优先级水平。这些额外的隐藏或私有优先级水平不被驱动器访问***200使用且是驱动器访问***20不可见的,但可由混合驱动器102使用来根据混合驱动器102的内部策略管理LBA数据被存储在哪里。
驱动器访问***200从混合驱动器102接收关于在各种优先级水平的每个处在性能部分112中多少LBA被存储(或多少存储空间被使用)以及在各种优先级水平的每个处(或至少在一个或多个低优先级水平处)多少脏数据被存储在性能部分112中的指示。当由I/O模块206发出的I/O命令将数据写到混合驱动器102时,根据与被写入的LBA相关的优先级水平,数据可存储在性能部分112而不是基础部分114中。存储在性能部分112而不是基础部分114中的这个数据被称为脏数据,直到数据与基础部分114同步为止。混合驱动器102维护在性能部分112中的哪个数据是脏数据以及在性能部分112中的哪个数据不是脏数据的记录。不是脏的数据也被称为干净数据。
在性能部分112中的脏数据可与基础部分114同步,这指将脏数据复制或移动到基础部分114。在一个或多个实施例中,脏数据从性能部分112被复制到基础部分114,且由混合驱动器102维护的记录被更新以反映数据是干净数据。在性能部分112中的干净数据可然后如混合驱动器102所期望的被重写(例如LRU干净数据可由最近接收的数据重写)。替代地,脏数据可从性能部分112移动到基础部分114,且不再存储在性能部分112中。
在一个或多个实施例中,优先级水平被分配到LBA,使得足够数量的数据(例如1千兆字节的数据、4千兆字节的数据等)在低优先级水平处。这个低优先级水平是由驱动器访问***200支持的最低优先级水平,虽然混合驱动器102可支持不为驱动器访问***200所知的更低优先级水平。有在低优先级水平处的这个数量的数据允许在低优先级水平处的数据被写到性能部分112,随着时间的过去与基础部分114同步,并接着被在低优先级水平处的最近接收的数据重写,都当在较高优先级水平处的数据保持在性能部分112中的同时。因此,在低优先级水平处的数据可由最近接收的数据代替,但在高优先级水平处的数据不需要由最近接收的数据代替。
驱动器访问***200可监控关于实施设备200的设备的状态的各种信息、由I/O模块206发出的I/O命令的类型等。驱动器访问***200利用这个信息以及多少脏数据在低优先级水平处存储在性能部分112中的指示,以确定何时向混合驱动器102提供使脏数据同步的指示。这个所监控的信息包括混合驱动器102常常不可得到的信息,允许驱动器访问***200做出比混合驱动器102可做出的关于脏数据何时被同步的更智能的决定。
在一个或多个实施例中,何时使性能部分112中的脏数据同步的最终确定由混合驱动器102做出。驱动器访问***200向混合驱动器102提供何时使脏数据同步的指示,且混合驱动器102被期望根据由驱动器访问***200提供的指示来使脏数据同步。然而,混合驱动器102并不被强制根据由驱动器访问***200提供的指示来使脏数据同步,何时使脏数据同步的决定属于混合驱动器102。
脏数据管理模块204确定何时向混合驱动器102提供使脏数据同步的指示。可基于设备的当前状态来做出该确定,当前状态可包括用户是否在设备上是活动的(例如在用户与设备交互或使用在设备上运行的程序的情况下、在数据被写到混合驱动器102的情况下等,用户在设备上是活动的)。在一个或多个实施例中,在用户在设备上是活动的时间期间,做出何时向混合驱动器102提供使脏数据同步的指示的确定以便减少对由用户对设备的使用的干扰。被提供到混合驱动器102的指示可以是例如在同步数据可能干扰用户对设备的使用的情况下使同步数据延迟和在同步数据将不干扰用户对设备的使用的情况下加速同步数据的指示。
当用户在设备上是活动的时对由用户对设备的使用的干扰可出现,其在设备上是活动的导致数据通过程序从混合驱动器102被读取和/或被写到混合驱动器102。读或写这样的数据的I/O命令被称为用户I/O命令,且如果由I/O模块206发出到混合驱动器102的用户I/O命令由于混合驱动器102使脏数据同步而被干扰(例如延迟),则由用户对设备的使用可被干扰(例如当读和/或写数据时用户能察觉的延迟可出现)。通过减少用户I/O命令被使脏数据同步的混合驱动器102干扰,可减少对由用户对设备的使用的干扰。
也可以用其它方式减少对由用户对设备的使用的干扰。在一个或多个实施例中,从混合驱动器102读取和/或写到混合驱动器102的数据可具有不同的I/O优先级,指被执行的I/O的重要性。一些I/O优先级可以高,例如读或写由用户使用的程序的数据,读或写管理与另一设备的通信的操作***的组件的数据,等等。其它I/O优先级可以低,例如读或写在混合器驱动器102上执行维护(例如对混合驱动器102进行碎片整理)的操作***的组件的数据。通过减少高优先级I/O的I/O命令被使脏数据同步的混合驱动器102干扰的情况,可减少对由用户对设备的使用的干扰。然而,低优先级I/O的I/O命令可被使脏数据同步的混合驱动器102干扰,而不干扰用户对设备的使用,因为对这样的低优先级I/O的干扰不影响用户(例如不导致用户能察觉的对设备的使用的干扰)。
设备的当前状态可此外或替代地包括设备的当前功率模式,包括设备是否在功率节省模式中操作和/或设备在多个功率节省模式的哪个中操作的指示。在一个或多个实施例中,做出何时向混合驱动器102提供使脏数据同步的指示的确定,以便减少对设备的功率节省模式的干扰。当设备在功率节省模式中操作时由I/O模块206发出到混合驱动器102的I/O命令可干扰功率节省模式,例如当驱动器102(或驱动器102的部分)在功率节省模式中时否则将不被访问时通过花费功率以访问混合驱动器102(或混合驱动器102的部分)。例如,如果基础部分114是硬盘驱动器且设备在功率节省模式(其中硬盘驱动器不旋转)中操作,则使脏数据同步可干扰设备的功率节省模式,因为当驱动器否则将由于功率节省模式而不旋转时,功率将在使硬盘驱动器自旋以及旋转硬盘驱动器以将数据写到驱动器时被消耗。被提供到混合驱动器102的指示可以是例如在同步数据可能干扰设备的功率节省模式的情况下使同步数据延迟和在同步数据不干扰设备的功率节省模式的情况下加速同步数据的指示。
设备的当前状态可此外或替代地包括设备的剩余电池寿命,其指示在设备的电池中留下的电荷的量。在一个或多个实施例中,做出何时向混合驱动器102提供使脏数据同步的指示的确定,以便减少对设备的剩余电池寿命的干扰(并从而减少对计算设备的功率节省模式的干扰)。可响应于设备的剩余电池寿命满足阈值量(例如在阈值量处或之下)而确定设备在功率节省模式中操作。
当设备具有低剩余电池寿命(例如小于剩余电荷的阈值量)时由I/O模块206发出到混合驱动器102的I/O命令可干扰设备的剩余电池寿命,例如当设备具有低剩余电池寿命时通过花费功率以访问混合驱动器102(或混合驱动器102的部分)。被提供到混合驱动器102的指示可以是例如在同步数据可能干扰设备的剩余电池寿命的情况下使同步数据延迟和在同步数据不干扰设备的剩余电池寿命(且因此设备被确定为不在功率节省模式中操作(例如在标准高功率或非功率节省模式中操作))的情况下加速同步数据的指示。
被提供到混合驱动器102以使脏数据同步的指示可采取各种形式。在一个或多个实施例中,混合驱动器102支持脏数据低阈值和脏数据高阈值,且被提供到混合驱动器102以使脏数据同步的指示是在这些脏数据阈值中的一个或两个的设置中的变化。
图3图示根据一个或多个实施例的脏数据阈值的例子。脏数据300的量的指示被维持。脏数据的量可例如范围从0千兆字节(GB)的数据改变到多(X)千兆字节的数据。X的值可改变,例如范围高达可被包括在性能部分112中的在低优先级水平处的数据的数量(例如1千兆字节的数据、4千兆字节的数据等)。
混合驱动器102在决定何时使脏数据同步时使用脏数据低阈值302和脏数据高阈值304。混合驱动器102响应于脏数据300的数量满足(例如等于和/或大于)脏数据高阈值304而开始使脏数据同步。一旦使脏数据同步开始,混合驱动器102就继续使脏数据同步,直到脏数据300的数量满足(例如等于和/或小于)脏数据低阈值302为止,此时,混合驱动器102停止使脏数据同步。
阈值302和304可具有不同的设置,且脏数据高阈值304的设置大于或等于脏数据低阈值302的设置。驱动器访问***200的脏数据管理模块204向混合驱动器102发出命令以改变脏数据低阈值302的设置和/或脏数据高阈值304的设置。脏数据管理模块204可因此通过改变阈值320和/或304的设置来向混合驱动器102提供使脏数据同步的指示。在图3中由显示阈值302和304可向上(指示更多的脏数据)和向下(指示更少的脏数据)移动的箭头图示改变设置的这个能力。
脏数据管理模块204可通过以不同的方式改变阈值320和/或304的设置来向混合驱动器102提供使脏数据同步的指示。模块204可增加或升高脏数据高阈值304以使混合驱动器102延迟使脏数据同步,并可减小或降低脏数据高阈值304以使混合驱动器102更快地使脏数据同步。例如,模块204可将脏数据高阈值304减小到在当前时间在性能部分112中的低优先级脏数据的当前量,以便使混合驱动器102在当前时间使脏数据同步。模块204可增加或升高脏数据低阈值302以减小混合驱动器102同步的脏数据的数据数量,并可减小或降低脏数据低阈值302以增加混合驱动器102同步的脏数据的数量。
在本文的讨论中,参考脏数据的数量、干净数据的数量、脏数据高阈值设置、脏数据低阈值设置等的示例值。应注意,这些例子仅仅是例子,以及可利用本文讨论的技术使用各种其它值。
在一个或多个实施例中,脏数据管理模块204向混合驱动器102提供使脏数据同步的指示以试图在任何给定时间保持在一个或多个优先级水平处的至少特定数量(例如N千兆字节)的干净数据(例如低优先级干净数据)。在一个或多个实施例中,N的值是下列项中的最大者:4千兆字节、实施驱动器访问***200的设备中的RAM的量和性能部分112的大小的25%。
对于脏数据低阈值302和/或脏数据高阈值304,默认或初始设置值可由脏数据管理模块204使用。例如,脏数据高阈值304的默认或初始值可以是固定量(例如512兆字节)或相对量(例如在一个或多个优先级水平例如低优先级水平处的干净数据的数量的10%)。作为另一例子,脏数据低阈值302的默认或初始值可以是固定数量(例如128兆字节)或相对数量(例如在一个或多个优先级水平例如低优先级水平处的干净数据的数量的3%)。
在一个或多个实施例中,基于实施驱动器访问***200的设备的当前状态来确定脏数据高阈值304的设置和脏数据低阈值302的设置中的一个或两个。设备的当前状态可包括如上面讨论的例如用户是否在设备上是活动的、设备的当前功率模式、设备的剩余电池寿命等。
脏数据管理模块204可以用各种不同的方式例如通过访问设备的当前功率模式被记录于的存储区域、从设备的操作***接收设备的当前功率模式的通知等确定设备的当前功率模式。脏数据管理模块204将设备的一个或多个功率模式分类为节省模式。可以用各种方式例如基于特定的预定义功率模式(例如设备可具有一组多个预定义功率模式,且模块204预先配置有这些多个预定义功率模式中的哪一个或多个是功率节省模式的指示)、基于从其它服务或***得到的信息、基于特定的设备设置(例如屏幕亮度、设备的处理器的功率模式、设备的剩余电池寿命等)等来确定哪些功率模式被分类为节省模式。
脏数据高阈值304的设置可基于设备的当前功率模式而改变。如果设备在功率节省模式中,则脏数据管理模块204增加脏数据高阈值304以增加在使脏数据同步开始之前累积的脏数据300的数量,且因而延迟使脏数据同步。延迟使脏数据同步允许在访问基础部分114时花费能量被延迟,并且如果在增加的脏数据高阈值304被满足之前设备停止在功率节省模式中则被避免。脏数据高阈值304增加的量可改变,且可以是固定量(例如1千兆字节)或相对量(例如当前设置的50%、在一个或多个优先级水平(例如低优先级水平)处的干净数据的量的40%等)。如果设备的功率模式改变使得设备不再在功率节省模式中,则驱动器访问***200减小脏数据高阈值304(例如到阈值304的默认或初始设置值)。
此外或替代地,脏数据低阈值302的设置可基于设备的当前功率模式而改变。如果设备在功率节省模式中,则脏数据管理模块204减小脏数据低阈值302以增加被同步的脏数据300的数量(并减小能量被花费在访问基础部分114中的频率)。脏数据低阈值302减小的数量可改变,且可以是固定量(例如64兆字节)或相对量(例如当前设置的50%、在一个或多个优先级水平(例如低优先级水平)处的干净数据的数量的1%等)。替代地,脏数据管理模块204可在适当时(基于脏数据高阈值304)增加或减小脏数据低阈值302,使得特定数量的脏数据被同步。脏数据低阈值302增加或减小的量可以是固定量(例如小于脏数据高阈值304的256兆字节)或相对量(例如脏数据高阈值304的50%)。如果设备的功率模式改变,使得设备不再在功率节省模式中,则脏数据管理模块204增加脏数据低阈值302(例如到阈值302的默认或初始设置值)。
脏数据管理模块204可以用各种不同的方式例如通过访问活动性被记录于的存储区域、从设备的操作***接收设备的活动性的通知、监控由I/O模块206发出的I/O命令(例如所访问的存储器的区域、I/O命令的类型等)等确定用户是否在设备上是活动的。例如,如果经由用户输入设备(例如麦克风、键盘、鼠标等)接收到输入,则可确定用户与设备交互且因此在设备上是活动的。作为另一例子,如果通过程序流式传送数据(例如电影被重放,音乐被重放,等等),则可确定用户正使用在设备上运行的程序且因此在设备上是活动的。
在用户在设备上不是活动的时的时间期间,脏数据管理模块204可减小脏数据高阈值304。可以用不同的方式确定用户在设备上不是活动的,例如在用户不与设备交互(例如在阈值量的时间例如10秒期间没有用户输入被接收到)的情况、用户不使用在设备上的程序(例如在阈值量的时间例如10秒期间没有由驱动器访问***200从程序接收到对数据的请求)的情况、在阈值量的时间(例如10秒)期间没有I/O命令由I/O模块206发出的情况等下。脏数据高阈值304可被减小以减小在使脏数据同步开始之前的脏数据的数量,导致在用户在设备上不是活动的时较少的脏数据被允许累积在性能部分112中。脏数据高阈值304减小的量可改变,且可以是固定量(例如512兆字节)或相对量(例如当前设置的50%、在一个或多个优先级水平(例如低优先级水平)处的干净数据的量的5%等)。如果设备的当前状态改变且用户在设备上是活动的,则脏数据管理模块204增加脏数据高阈值304(例如到阈值304的默认或初始设置值)。
此外或替代地,在用户在设备上不是活动的时的时间期间,脏数据管理模块204可减小脏数据低阈值302。脏数据低阈值302可被减小以增加在使脏数据同步开始之后被同步的脏数据的数量,导致在用户在设备上不是活动的时的时间期间较少的脏数据被允许累积在性能部分112中。脏数据低阈值304减小的量可改变,且可以是固定量(例如64兆字节)或相对量(例如当前设置的50%、在一个或多个优先级水平(例如低优先级水平)处的干净数据的数量的1%等)。如果设备的当前状态改变且用户在设备上是活动的或正使用在设备上的程序,则脏数据管理模块204增加脏数据低阈值302(例如到阈值302的默认或初始设置值)。
应注意,在确定用户是否在设备上是活动的时使用的时间的阈值量可基于在性能部分112中的脏数据的数量而改变。例如,如果在性能部分112中有相当大数量(例如至少阈值数量例如1千兆字节或在一个或多个优先级水平(例如低优先级水平)处的干净数据的数量的25%)的低优先级脏数据,则可使用时间的低阈值量(例如7秒、3秒等),且如果在性能部分112中没有相当大数量(例如至少没有阈值数量)的低优先级脏数据,则可使用时间的较大阈值量(例如10秒).因此,脏数据管理模块204在减小脏数据高阈值304(和/或增加脏数据低阈值302)之前等待的时间的量可随着在性能部分112中的脏数据的量增加而减小。
在用户在设备上是活动的时的时间期间,脏数据管理模块204可增加脏数据高阈值304。脏数据高阈值304可被增加以增加在使脏数据同步开始之前累积的脏数据300的数量,并因此延迟使脏数据同步。延迟使脏数据同步允许从使脏数据同步产生的对用户的潜在干扰被延迟,并且如果在增加的脏数据高阈值304被满足之前用户停止在设备上是活动的则被避免。脏数据高阈值304增加的量可改变,且可以是固定量(例如1千兆字节)或相对量(例如当前设置的50%、在一个或多个优先级水平(例如低优先级水平)处的干净数据的数量的40%等)。如果设备的当前状态改变且用户在设备上是活动的,则脏数据管理模块204减小脏数据高阈值304(例如到阈值304的默认或初始设置值)。
在用户在设备上是活动的时的时间期间,是否增加脏数据高阈值304和/或增加脏数据高阈值304的量可基于被执行的I/O的类型而改变。被执行的I/O的类型可以指被读和/或写的数据的LBA的优先级水平,被读取的数据是否被流式传送,等等。流式传送数据指数据在它正由程序消费(例如重放)时从混合驱动器102取回而不是在消费数据之前取回将由程序消费的所有数据(例如整个电影或歌曲的数据)。可以用各种方式,例如通过I/O模块206监控I/O命令以识别被执行的I/O的类型、通过通知驱动器访问***200被程序执行的I/O的类型(或在其它地方得到被执行的I/O的类型的指示)等来确定被执行的I/O的类型。
在一个或多个实施例中,在用户在设备上是活动的时的时间期间,如果与由I/O模块206发出的I/O命令相关的LBA(例如在阈值量的时间内至少阈值数量的命令)被分配低优先级,则脏数据高阈值304增加了一个量,而如果与由I/O模块206发出的I/O命令相关的LBA被分配较高优先级,则脏数据高阈值304增加了另一个(更大的)量。替代地,如果与由I/O模块206发出的I/O命令相关的LBA被分配低优先级,则脏数据高阈值304可保持不变(不增加),且如果与由I/O模块206发出的I/O命令相关的LBA被分配较高优先级,则脏数据高阈值304可增加。通过如果与由I/O模块206发出的I/O命令相关的LBA被分配较高优先级则增加脏数据高阈值304,则比起如果与由I/O模块206发出的I/O命令相关的LBA被分配低优先级,如果与由I/O模块206发出的I/O命令相关的LBA被分配较高优先级,使脏数据同步被延迟得更多。
在一个或多个实施例中,在用户在设备上是活动的时的时间期间,脏数据高阈值304可如上面讨论的那样增加,但基于被执行的I/O的类型以规则或不规则的间隔减小(例如减小固定或相对量,到阈值304的默认或初始设置值等)。例如,如果数据从混合驱动器102被流式传送,则由于脏数据管理模块204假设数据可偶尔在数据的流式传送期间被同步而不干扰由用户对设备的使用,脏数据高阈值304可按规则或不规则的间隔减小。脏数据低阈值302也可以可选地增加,允许脏数据管理模块204规定多少数据被同步(例如脏数据低阈值302可被设置为比脏数据高阈值304少64兆字节)。
上面关于脏数据的数量讨论了脏数据低阈值和脏数据高阈值。这个脏数据可以是在多个(例如所有)优先级水平当中在混合驱动器102的部分(例如性能部分112)中的脏数据。替代地,脏数据可被跟踪,且可为多个不同的优先级水平中的每个实施不同的脏数据低阈值和脏数据高阈值。这些脏数据低和脏数据高阈值可对不同的优先级水平独立地减小和/或增加,允许在不同的优先级水平处的不同数量的脏数据触发开始和停止使脏数据同步。
的讨论中,参考是存储在性能部分112中而不是在基础部分114中的数据的脏数据,以及在性能部分112中的这个脏数据可与基础部分114同步。应注意,脏数据也可包括存储在基础部分114中而不是性能部分112中的数据,以及在基础部分114中的这个脏数据可与性能部分112同步(例如复制到或移动到性能部分112)。可产生下列情况:由于各种原因,例如架构和/或固件限制、性能部分112的连续写入速度比基础部分114慢、混合驱动器102被相当大数量的I/O命令压倒等,注定到或目标是性能部分(例如由于被分配到数据的LBA的优先级水平)的数据首先被写到基础部分114。驱动器访问***200可监控关于实施***200的设备的状态的各种信息,类似于上面的讨论那样。驱动器访问***200也可监控关于在基础部分114中的脏数据的各种信息,例如在基础部分114中在一个或多个优先级水平处的干净和/或脏数据的数量,计数器记录以性能部分112为目标但被写在基础部分114中的数据的数量(例如响应于以性能部分112为目标的数据被写在基础部分114而不是性能部分112中而增加计数器值,以及响应于脏数据与性能部分112同步而减小计数器值)。脏数据管理模块204确定何时向混合驱动器102提供使在基础部分114中的脏数据与性能部分112同步的指示。可做出这个确定以便减小对由用户对设备的使用的干扰,减小对设备的功率节省模式的干扰,减小对设备的剩余电池寿命的干扰,等等,与上面的讨论类似。
被提供到混合驱动器102的使在基础部分114中的脏数据与性能部分112同步的指示可采取各种形式,与上面的讨论类似。例如,指示可以是脏数据低和脏数据高阈值,混合驱动器102响应于在基础部分中的脏数据的数量满足(例如等于和/或大于)脏数据高阈值而开始使脏数据同步,且一旦使脏数据同步开始,混合驱动器102就继续使脏数据同步,直到脏数据的数量满足(例如等于和/或小于)脏数据低阈值为止,此时混合驱动器102停止使脏数据同步。
图4是图示根据一个或多个实施例的用于实施混合驱动器的脏数据管理的示例过程400的流程图。过程400由驱动器访问***例如图2的驱动器访问***200执行,并可在软件、固件、硬件或其组合中实施。过程400被示为一组行为,且不限于针对执行各种行为的操作所示的顺序。过程400是用于实施混合驱动器的脏数据管理的示例过程;参考不同的附图在本文包括混合驱动器的脏数据管理的额外讨论。
在过程400中,得到在混合驱动器的部分中在一个或多个优先级水平处的脏数据的数量的指示(行为402)。混合驱动器具有包括性能部分和基础部分的两个部分,且脏数据可以是如上面讨论的在性能数据或基础数据中的数据。这些一个或多个优先级水平可以是低优先级水平,如上面讨论的。
做出关于何时使在这些部分的一个中的脏数据与这些部分的另一个同步的确定(行为404)。做出这个确定,以便如上面讨论的那样减小对由用户对计算设备的使用的干扰和/或减小对设备的功率节省模式的干扰。
向混合驱动器提供何时使在一个部分中的脏数据与这些部分的另一个同步的指示(行为406)。这些指示可以是提供如上面讨论的混合驱动器的脏数据高阈值和脏数据低阈值的设置值。
图5是图示根据一个或多个实施例的用于实施混合驱动器的脏数据管理的示例过程500的流程图。过程500由设备的驱动器访问***例如图2的驱动器访问***200执行,并可在软件、固件、硬件或其组合中实施。过程500被示为一组行为,且不限于针对执行各种行为的操作所示的顺序。过程500是用于实施混合驱动器的脏数据管理的示例过程;参考不同的附图在本文包括混合驱动器的脏数据管理的额外讨论。
在过程500中,得到在混合驱动器的一个部分中在一个或多个优先级水平处的脏数据的数量的指示(行为502)。混合驱动器具有包括性能部分和基础部分的两个部分,且脏数据可以是如上面讨论的在性能部分或基础部分中的数据。这些一个或多个优先级水平可以是低优先级水平,如上面讨论的。
做出关于设备是否在功率节省模式中的确定,且响应于设备被确定在功率节省模式中(行为504),做出一个或多个变化。设备指包括实施过程500的驱动器访问***的设备。一个或多个阈值可改变,以便延迟使脏数据同步(行为506)。在行为506中的这些一个或多个阈值可以是如上面讨论的脏数据高阈值。此外或替代地,一个或多个阈值可改变,以便减小在访问混合驱动器的另一部分(例如基础部分)时能量被花费的频率(行为508)。在行为508中的这些一个或多个阈值可以是如上面讨论的脏数据高阈值和/或脏数据低阈值。
此外或替代地,可做出关于用户是否在设备上是活动的确定(行为510)。设备指包括实施过程500的驱动器访问***的设备。响应于用户在设备上不是活动的确定,一个或多个阈值可改变,以便减小在一个部分中累积的脏数据的数量(行为512)。在行为512中的这些一个或多个阈值可以是如上面讨论的脏数据高阈值和/或脏数据低阈值。响应于用户在设备上是活动的确定,一个或多个阈值可改变,以便延迟使脏数据同步(行为514)。这个确定可至少部分地基于被执行的输入/输出的类型,如上面讨论的。在行为514中的这些一个或多个阈值可以是如上面讨论的脏数据高阈值和/或脏数据低阈值。
在本文讨论了由各种模块执行的各种行为。在本文被讨论为执行行为的特定模块包括执行行为的那个特定模块本身,或替代地,调用或以其它方式访问执行行为(或结合那个特定模块来执行行为)的另一组件或模块的那个特定模块。因此,执行行为的特定模块包括执行行为的那个特定模块本身和/或由执行行为的那个特定模块调用或以其它方式访问的另一模块。
虽然在本文关于特定的模块讨论了特定的功能,应注意,在本文讨论的单独模块的功能可分成多个模块,和/或多个模块的至少一些功能可组合成单个模块。
图6图示包括示例计算设备602的通常在600处的示例***,示例计算设备602代表可实施本文所述的各种技术的一个或多个***和/或设备。计算设备602可以是例如服务提供者的服务器、与客户端相关的设备(例如客户端设备)、片上***和/或任何其它适当的计算设备或计算***。
如所示的示例计算设备602包括相互通信地耦合的处理***604、一个或多个计算机可读介质606和一个或多个I/O接口608。虽然未示出,计算设备602还可包括将各种组件相互耦合的***总线或其它数据和命令传送***。***总线可包括不同总线结构的任一个或组合,例如存储器总线或存储器控制器、***总线、通用串行总线和/或利用各种总线架构中的任一个的处理器或本地总线。也设想各种其它例子,例如控制和数据线。
处理***604代表使用硬件执行一个或多个操作的功能。相应地,处理***604被图示为包括可被配置为处理器、功能块等的硬件元件610。这可包括在硬件中作为专用集成电路或使用一个或多个半导体形成的其它逻辑设备的实施方式。硬件元件610不被形成它们的材料或在其中采用的处理机制所限制。例如,处理器可由(多个)半导体和/或晶体管(例如电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质606被示为包括存储器/存储装置612。存储器/存储装置612代表与一个或多个计算机可读介质相关的存储器/存储装置容量。存储器/存储装置612可包括易失性介质(例如随机存取存储器(RAM))和/或非易失性介质(例如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置612可包括固定介质(例如RAM、ROM、固定硬盘驱动器等)以及可移除介质(例如闪存、可移除硬盘驱动器、光盘等)。可以用下面进一步描述的各种其它方式配置计算机可读介质606。
(多个)输入/输出接口608代表允许用户向计算设备602输入命令和信息并且也允许信息使用各种输入/输出设备被显现给用户和/或其它组件或设备的功能。输入设备的例子包括键盘、光标控制设备(例如鼠标)、麦克风(例如用于语音输入)、扫描仪、触摸功能(例如配置成检测物理触摸的电容或其它传感器)、摄像机(例如其可采用可见光或不可见波长例如红外频率来检测不包含触摸作为手势的运动)等。输出设备的例子包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡、触觉反应设备等。因此,可以用如下面进一步描述的各种方式配置计算设备602以支持用户交互。
计算设备602还包括驱动器访问***614。驱动器访问***614提供各种功能,包括确定如上面讨论的LBA的优先级水平。驱动器访问***614可例如实施图2的驱动器访问***200。
通常在软件、硬件元件或程序模块的一般上下文中描述了各种技术。通常,这样的模块包括执行特定的任务或实施特定的抽象数据类型的例程、程序、对象、元件、组件、数据结构等。如在本文使用的术语“模块”、“功能”和“组件”通常代表软件、固件、硬件或其组合。本文所述的技术的特征是独立于平台的,意味着技术可在具有各种处理器的各种计算平台上实施。
所述模块和技术的实施可存储在某种形式的计算机可读介质上或在某种形式的计算机可读介质当中被传输。计算机可读介质可包括可由计算设备602访问的各种介质。作为例子而不是限制,计算机可读介质可包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”指使能信息的永久存储和/或有形的存储的介质和/或设备,与仅仅信号传输、载波或信号本身相反。因此,计算机可读存储介质指非信号承载介质。计算机可读存储介质包括在适合于信息(例如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其它数据)的存储的方法或技术中实施的硬件,例如易失性和非易失性、可移除和不可移除介质和/或存储设备。计算机可读存储介质的例子可包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光学存储器、硬盘、磁带盒、磁带、磁盘存储器或其它磁性存储设备或其它存储设备、有形介质或适合于存储期望信息并可由计算机访问的制品。
“计算机可读信号介质”指配置成例如经由网络将指令传输到计算设备602的硬件的信号承载介质。信号介质一般可体现计算机可读指令、数据结构、程序模块或在经调制的数据信号(例如载波、数据信号或其它传输机制)中的其它数据。信号介质还包括任何信息分发介质。术语“经调制的数据信号”意指使它的一个或多个特性被设置或改变以便将信息编码在信号中的信号。作为例子而不是限制,通信介质包括有线介质例如有线网络或直接有线连接,和无线介质例如声、RF、红外和其它无线介质。
如前面描述的,硬件元件610和计算机可读介质606代表在一些实施例中可被采用以实施本文所述的技术的至少一些方面的硬件形式中实施的指令、模块、可编程器件逻辑和/或固定器件逻辑。硬件元件可包括集成电路或片上***的组件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)和在硅或其它硬件设备中的其它实施方式。在这个上下文中,硬件元件可操作作为处理设备,其执行由该硬件元件以及用于存储指令用于执行的硬件设备(例如前面描述的计算机可读存储介质)体现的指令、模块和/或逻辑所定义的程序任务。
前述内容的组合也可用于实施本文所述的各种技术和模块。相应地,软件、硬件或程序模块和其它程序模块可被实施为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件610体现的一个或多个指令和/或逻辑。计算设备602可配置成实施对应于软件和/或硬件模块的特定指令和/或功能。相应地,模块被实施为作为软件由计算设备602可执行的模块可至少部分地在硬件中,例如通过计算机可读存储介质和/或处理***的硬件元件610的使用来实现。指令和/或功能可以由一个或多个制品(例如一个或多个计算设备602和/或处理***604)可执行/可操作以实施本文所述的技术、模块和例子。
如在图6中进一步图示的,当在个人计算机(PC)、电视设备和/或移动设备上运行应用时,示例***600使能无缝用户体验的无处不在的环境。当在利用应用、播放视频游戏、观看视频等时从一个设备过渡到下一设备时,服务和应用在共有用户体验的所有三个环境中实质上类似地运行。
在示例***600中,通过中央计算设备来互连多个设备。中央计算设备对多个设备可以是本地的或可位于远离多个设备处。在一个或多个实施例中,中央计算设备可以是通过网络、互联网或其它数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个或多个实施例中,这个互连架构使能在多个设备当中被分发以向多个设备的用户提供共有和无缝体验的功能。多个设备中的每个可具有不同的物理要求和能力,且中央计算设备使用平台来使体验能够分发到设备,体验是针对设备定制的且也是所有设备共有的。在一个或多个实施例中,目标设备的类被创建且体验针对一般类的设备被定制。设备的类可由设备的物理特征、使用的类型或其它共有特性定义。
在各种实施方式中,计算设备602可假设各种不同的配置,例如用于计算机616、移动设备618和电视机620用途。这些配置中的每个包括可具有通常不同的构造和能力的设备,且因此计算设备602可根据一个或多个不同的设备类来配置。例如,计算设备602可被实施为计算机616类的设备,其包括个人计算机、桌上型计算机、多屏计算机、膝上型计算机、上网本等。
计算设备602也可被实施为移动设备618类的设备,其包括移动设备例如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏计算机等。计算设备602还可被实施为电视机620类的设备,其包括具有或连接到在非正式的观看环境中的通常较大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。
本文所述的技术可由计算设备602的这些各种配置支持且不限于本文所述的技术的特定例子。也可通过分布式***的使用,例如通过“云”622经由如下所述的平台624来全部或部分地实施这个功能。
云622包括和/或代表资源626的平台624。平台624抽象化硬件(例如服务器)的基本功能和云622的软件资源。资源626可包括可被利用的应用和/或数据,同时计算机处理在远离计算设备602的服务器上执行。资源626也可包括通过互联网和/或通过订户网络例如蜂窝或Wi-Fi网络提供的服务。
平台624可抽象化资源和功能以连接计算设备602与其它计算设备。平台624也可用于抽象化资源的定标以提供对经由平台624实施的资源626的遇到的需求的对应水平的标度。相应地,在互连的设备实施例中,本文所述的功能的实施可分布在整个***600中。例如,可部分地在计算设备602上以及经由抽象化云622的功能的平台624来实施功能。
虽然以结构特征和/或方法行为特有的语言描述了主题,应理解,在所附权利要求中定义的主题并不一定限于上面描述的具体的特征或行为。更确切地,上面描述的具体的特征和行为被公开为用于实施权利要求的示例形式。
Claims (8)
1.一种用于脏数据管理的方法,包括:
在计算设备处,得到在混合驱动器的性能部分中的、根据一个或多个优先级水平存储的脏数据的数量的脏数据指示,所述混合驱动器具有包括所述性能部分和基础部分的其中能够存储数据的两个部分,所述脏数据包括仅存储在所述性能部分或者所述基础部分的一个中的数据;以及
在所述计算设备处,基于所述计算设备的当前状态和存储在所述两个部分的一个中的所述脏数据的所述数量的所述脏数据指示,确定何时向所述混合驱动器提供指示,以同步所述脏数据;以及
向所述混合驱动器提供何时在所述性能部分和所述基础部分之间同步所述脏数据的所述指示,所述指示被提供以减小对所述计算设备的使用的干扰,并且所述指示包括脏数据高阈值和脏数据低阈值的设置值,所述混合驱动器响应于所述脏数据的所述数量满足所述脏数据高阈值而同步所述脏数据,并继续同步所述脏数据,直到所述脏数据的所述数量满足所述脏数据低阈值为止。
2.如权利要求1所述的方法,所述确定何时提供所述指示进一步被确定,以通过减小在当用户在所述计算设备上不是活动的时的时间期间在所述性能部分中累积的脏数据的数量,来减小对所述计算设备的使用的干扰。
3.如权利要求1所述的方法,所述确定何时提供所述指示进一步被确定,以致当用户在所述计算设备上是活动的时通过延迟所述脏数据的所述同步来减小对所述计算设备的使用的干扰。
4.如权利要求1所述的方法,还包括至少以下之一:
减少所述脏数据低阈值的所述设置值以增加被同步的所述脏数据的数量;以及
增加所述脏数据高阈值的所述设置值以延迟使所述脏数据同步。
5.一种计算设备,包括:
一个或多个处理器;以及
一个或多个计算机可读介质,其具有存储在其上的多个指令,所述指令当被所述一个或多个处理器执行时使所述一个或多个处理器:
在所述计算设备处,得到在混合驱动器的性能部分中的、根据一个或多个优先级水平存储的脏数据的数量的脏数据指示,所述混合驱动器具有包括所述性能部分和基础部分的其中能够存储数据的两个部分,所述脏数据仅包括存储在所述性能部分中的数据;以及
在所述计算设备处,基于所述计算设备的当前状态和存储在所述性能部分中的所述脏数据的所述数量的脏数据指示,确定何时向所述混合驱动器提供指示,以同步所述脏数据;以及
向所述混合驱动器提供何时在所述性能部分和所述基础部分之间同步所述脏数据的所述指示,所述指示被提供以减小对所述计算设备的使用的干扰,并且所述指示包括针对脏数据高阈值设置的值和针对脏数据低阈值设置的值,所述混合驱动器响应于所述脏数据的所述数量满足所述脏数据高阈值而同步所述脏数据,并继续同步所述脏数据,直到所述脏数据的所述数量满足所述脏数据低阈值为止。
6.如权利要求5所述的计算设备,所述指示进一步被提供,以致当所述计算设备在功率节省模式中时通过延迟所述脏数据的所述同步来减小对所述功率节省模式的干扰。
7.如权利要求5所述的计算设备,所述确定何时提供所述指示进一步被确定,以减小在访问所述基础部分时花费能量的频率。
8.如权利要求5所述的计算设备,还包括至少以下之一:
减小针对所述脏数据低阈值的所述值以增加被同步的脏数据的数量;以及
增加针对所述脏数据高阈值的所述值以延迟所述脏数据的同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010909861.7A CN112051970A (zh) | 2013-04-25 | 2013-09-10 | 混合驱动器的脏数据管理 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/870670 | 2013-04-25 | ||
US13/870,670 US9946495B2 (en) | 2013-04-25 | 2013-04-25 | Dirty data management for hybrid drives |
PCT/US2013/058841 WO2014175912A2 (en) | 2013-04-25 | 2013-09-10 | Dirty data management for hybrid drives |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010909861.7A Division CN112051970A (zh) | 2013-04-25 | 2013-09-10 | 混合驱动器的脏数据管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105637470A CN105637470A (zh) | 2016-06-01 |
CN105637470B true CN105637470B (zh) | 2020-09-29 |
Family
ID=51790318
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380075906.3A Active CN105637470B (zh) | 2013-04-25 | 2013-09-10 | 用于脏数据管理的方法和计算设备 |
CN202010909861.7A Pending CN112051970A (zh) | 2013-04-25 | 2013-09-10 | 混合驱动器的脏数据管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010909861.7A Pending CN112051970A (zh) | 2013-04-25 | 2013-09-10 | 混合驱动器的脏数据管理 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9946495B2 (zh) |
EP (1) | EP3000042B1 (zh) |
CN (2) | CN105637470B (zh) |
BR (1) | BR112015026451A2 (zh) |
WO (1) | WO2014175912A2 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
US9201799B2 (en) * | 2013-06-03 | 2015-12-01 | Samsung Electronics Co., Ltd. | Method for disk defrag handling in solid state drive caching environment |
CN106933494B (zh) * | 2015-12-31 | 2019-10-18 | 伊姆西公司 | 混合存储设备的操作方法和装置 |
US10257312B2 (en) * | 2016-10-27 | 2019-04-09 | Entit Software Llc | Performance monitor based on user engagement |
CN107193497A (zh) * | 2017-05-22 | 2017-09-22 | 电子科技大学 | 一种基于ram和nvm混合内存的汽车ecu数据动态管理方法 |
US10809942B2 (en) * | 2018-03-21 | 2020-10-20 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US10705963B2 (en) | 2018-03-21 | 2020-07-07 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US10705747B2 (en) * | 2018-03-21 | 2020-07-07 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US20220374233A1 (en) * | 2021-05-24 | 2022-11-24 | International Business Machines Corporation | Data access performance in a memory |
US12045474B2 (en) * | 2021-08-02 | 2024-07-23 | Red Hat, Inc. | Efficient dirty page expiration |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102301345A (zh) * | 2008-12-30 | 2011-12-28 | 英特尔公司 | 混合存储设备 |
CN102591593A (zh) * | 2011-12-28 | 2012-07-18 | 华为技术有限公司 | 一种混合存储模式的切换方法、装置及*** |
CN102831088A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据迁移方法和装置 |
Family Cites Families (195)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0682336B2 (ja) | 1986-04-28 | 1994-10-19 | 日本電気株式会社 | ブロック閉塞を用いたロールバックリカバリシステム |
US5123104A (en) | 1988-04-08 | 1992-06-16 | International Business Machines Corporation | Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations |
US4995004A (en) | 1989-05-15 | 1991-02-19 | Dallas Semiconductor Corporation | RAM/ROM hybrid memory architecture |
WO1991016775A1 (en) | 1990-04-25 | 1991-10-31 | Telxon Corporation | Communication system with adaptive media access control |
US5276344A (en) | 1990-04-27 | 1994-01-04 | Mitsubishi Denki Kabushiki Kaisha | Field effect transistor having impurity regions of different depths and manufacturing method thereof |
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 |
GB2251323B (en) | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
EP0506236A1 (en) | 1991-03-13 | 1992-09-30 | International Business Machines Corporation | Address translation mechanism |
US5663901A (en) | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
US6347051B2 (en) | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
US6256642B1 (en) | 1992-01-29 | 2001-07-03 | Microsoft Corporation | Method and system for file system management using a flash-erasable, programmable, read-only memory |
JPH05233426A (ja) | 1992-02-20 | 1993-09-10 | Fujitsu Ltd | フラッシュ・メモリ使用方法 |
JP3087429B2 (ja) | 1992-04-03 | 2000-09-11 | 株式会社日立製作所 | 記憶装置システム |
US5420998A (en) | 1992-04-10 | 1995-05-30 | Fujitsu Limited | Dual memory disk drive |
JPH05299616A (ja) | 1992-04-16 | 1993-11-12 | Hitachi Ltd | 半導体記憶装置 |
JP3328321B2 (ja) | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
JPH06195258A (ja) | 1992-07-08 | 1994-07-15 | Nec Corp | 半導体記憶装置 |
US5822781A (en) | 1992-10-30 | 1998-10-13 | Intel Corporation | Sector-based storage device emulator having variable-sized sector |
JP2856621B2 (ja) | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
JP3078946B2 (ja) | 1993-03-11 | 2000-08-21 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置 |
US5519843A (en) | 1993-03-15 | 1996-05-21 | M-Systems | Flash memory system providing both BIOS and user storage capability |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5636355A (en) | 1993-06-30 | 1997-06-03 | Digital Equipment Corporation | Disk cache management techniques using non-volatile storage |
US5682497A (en) | 1993-09-28 | 1997-10-28 | Intel Corporation | Managing file structures for a flash memory file system in a computer |
US6026027A (en) | 1994-01-31 | 2000-02-15 | Norand Corporation | Flash memory system having memory cache |
CN1147866C (zh) | 1994-06-02 | 2004-04-28 | 英特尔公司 | 含多级单元的快擦存储器的读出电路 |
US5696917A (en) | 1994-06-03 | 1997-12-09 | Intel Corporation | Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory |
US5627533A (en) | 1994-08-05 | 1997-05-06 | Hayes Microcomputer Products, Inc. | Adjusting encoding table size and memory allocation for data compression in response to input data |
US5701433A (en) | 1994-10-14 | 1997-12-23 | Compaq Computer Corporation | Computer system having a memory controller which performs readahead operations which can be aborted prior to completion |
US5634112A (en) | 1994-10-14 | 1997-05-27 | Compaq Computer Corporation | Memory controller having precharge prediction based on processor and PCI bus cycles |
WO1996012277A1 (en) | 1994-10-18 | 1996-04-25 | Iomega Corporation | Disk cartridge detection methods and apparatus |
JP3332619B2 (ja) | 1994-11-29 | 2002-10-07 | キヤノン株式会社 | 復号装置およびその方法 |
US6741494B2 (en) | 1995-04-21 | 2004-05-25 | Mark B. Johnson | Magnetoelectronic memory element with inductively coupled write wires |
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 |
GB2291991A (en) | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Disk drive emulation with a block-erasable memory |
US6018806A (en) | 1995-10-16 | 2000-01-25 | Packard Bell Nec | Method and system for rebooting a computer having corrupted memory using an external jumper |
US6014724A (en) | 1995-10-27 | 2000-01-11 | Scm Microsystems (U.S.) Inc. | Flash translation layer block indication map revision system and method |
US5867641A (en) | 1995-10-27 | 1999-02-02 | Scm Microsystems (U.S.) Inc. | Flash translation layer cleanup system and method |
US5799305A (en) | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
US5799168A (en) | 1996-01-05 | 1998-08-25 | M-Systems Flash Disk Pioneers Ltd. | Standardized flash controller |
GB9606928D0 (en) | 1996-04-02 | 1996-06-05 | Memory Corp Plc | Memory devices |
US5864671A (en) | 1996-07-01 | 1999-01-26 | Sun Microsystems, Inc. | Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used |
KR100260028B1 (ko) | 1996-08-13 | 2000-06-15 | 윤종용 | 화일시스템의 정보 복구방법 |
US6321234B1 (en) | 1996-09-18 | 2001-11-20 | Sybase, Inc. | Database server system with improved methods for logging transactions |
GB2317721B (en) | 1996-09-30 | 2001-09-12 | Nokia Mobile Phones Ltd | Memory device |
US5956473A (en) | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
US5745418A (en) | 1996-11-25 | 1998-04-28 | Macronix International Co., Ltd. | Flash memory mass storage system |
JPH10154101A (ja) | 1996-11-26 | 1998-06-09 | Toshiba Corp | データ記憶システム及び同システムに適用するキャッシュ制御方法 |
US6279069B1 (en) | 1996-12-26 | 2001-08-21 | Intel Corporation | Interface for flash EEPROM memory arrays |
US6418506B1 (en) | 1996-12-31 | 2002-07-09 | Intel Corporation | Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array |
US6035379A (en) | 1997-01-09 | 2000-03-07 | Microsoft Corporation | Transaction processing for user data employing both logging and shadow copying |
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 |
US5887198A (en) | 1997-04-07 | 1999-03-23 | The United States Of America As Represented By The Secretary Of The Navy | Programmable stand-alone drive apparatus for interfacing a host computer with PCMCIA memory cards having multiple formats |
US5974546A (en) | 1997-05-08 | 1999-10-26 | Micron Electronics, Inc. | Apparatus and method to determine cause of failed boot sequence to improve likelihood of successful subsequent boot attempt |
JPH117505A (ja) | 1997-06-17 | 1999-01-12 | Fujitsu Ltd | カード型記憶媒体 |
GB9713094D0 (en) | 1997-06-21 | 1997-08-27 | Philips Electronics Nv | Optical disc drive |
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 |
US5960434A (en) | 1997-09-26 | 1999-09-28 | Silicon Graphics, Inc. | System method and computer program product for dynamically sizing hash tables |
US5991778A (en) | 1997-09-30 | 1999-11-23 | Stratfor Systems, Inc. | Method and apparatus for real-time secure file deletion |
US6070174A (en) | 1997-09-30 | 2000-05-30 | Infraworks Corporation | Method and apparatus for real-time secure file deletion |
US6061788A (en) | 1997-10-02 | 2000-05-09 | Siemens Information And Communication Networks, Inc. | System and method for intelligent and reliable booting |
US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
US6148349A (en) | 1998-02-06 | 2000-11-14 | Ncr Corporation | Dynamic and consistent naming of fabric attached storage by a file system on a compute node storing information mapping API system I/O calls for data objects with a globally unique identification |
US6101601A (en) | 1998-04-20 | 2000-08-08 | International Business Machines Corporation | Method and apparatus for hibernation within a distributed data processing system |
US6226728B1 (en) | 1998-04-21 | 2001-05-01 | Intel Corporation | Dynamic allocation for efficient management of variable sized data within a nonvolatile memory |
US6223284B1 (en) | 1998-04-30 | 2001-04-24 | Compaq Computer Corporation | Method and apparatus for remote ROM flashing and security management for a computer system |
KR100283243B1 (ko) | 1998-05-11 | 2001-03-02 | 구자홍 | 운영체제의 부팅방법 |
US6192488B1 (en) | 1998-07-13 | 2001-02-20 | Chung-Ping Li | Restoring method for hard disk |
JP3519954B2 (ja) | 1998-07-30 | 2004-04-19 | 富士通株式会社 | チップイネーブル信号生成回路及びメモリ装置 |
KR100308479B1 (ko) | 1998-08-11 | 2001-11-01 | 윤종용 | 컴퓨터 시스템 내에서 부트-업 메모리로 사용되는 플래시 메모리 장치 및 그것의 데이터 읽기 방법 |
US6230285B1 (en) | 1998-09-08 | 2001-05-08 | Symantec Corporation | Boot failure recovery |
US6209088B1 (en) | 1998-09-21 | 2001-03-27 | Microsoft Corporation | Computer hibernation implemented by a computer operating system |
US6308265B1 (en) | 1998-09-30 | 2001-10-23 | Phoenix Technologies Ltd. | Protection of boot block code while allowing write accesses to the boot block |
US6336158B1 (en) | 1998-10-30 | 2002-01-01 | Intel Corporation | Memory based I/O decode arrangement, and system and method using the same |
JP3311305B2 (ja) | 1998-11-19 | 2002-08-05 | 沖電気工業株式会社 | 同期式バースト不揮発性半導体記憶装置 |
US6122745A (en) | 1998-12-31 | 2000-09-19 | Sun Microsystems Incorporated | Method and apparatus for managing power consumption in data processing systems |
US6850995B1 (en) | 1999-01-25 | 2005-02-01 | Canon Kabushiki Kaisha | Control unit selectively connected with a first bus and a second bus for controlling a displaying process in parallel with a scanning process |
GB9903490D0 (en) | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US6380581B1 (en) | 1999-02-26 | 2002-04-30 | Micron Technology, Inc. | DRAM technology compatible non volatile memory cells with capacitors connected to the gates of the transistors |
US20030070065A1 (en) | 1999-03-31 | 2003-04-10 | Fleming Bruce L. | Suspending to nonvolatile storage |
JP3389186B2 (ja) | 1999-04-27 | 2003-03-24 | 松下電器産業株式会社 | 半導体メモリカード及び読み出し装置 |
KR100313514B1 (ko) | 1999-05-11 | 2001-11-17 | 김영환 | 하이브리드 메모리 장치 |
DE69930605D1 (de) | 1999-05-31 | 2006-05-18 | St Microelectronics Srl | Synchroner nichtflüchtiger mehrwertiger Speicher und Leseverfahren dafür |
US6438750B1 (en) | 1999-06-18 | 2002-08-20 | Phoenix Technologies Ltd. | Determining loading time of an operating system |
JP3204251B2 (ja) | 1999-06-30 | 2001-09-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ハイバネーション装置及び方法、それを格納した記録媒体並びにそれを適用したコンピュータ |
US6493807B1 (en) | 1999-07-01 | 2002-12-10 | Intel Corporation | Updating flash blocks |
TW484064B (en) | 1999-07-12 | 2002-04-21 | Feiya Technology Corp | Flash memory management, data linking architecture and algorithm |
US6539456B2 (en) | 1999-10-13 | 2003-03-25 | Intel Corporation | Hardware acceleration of boot-up utilizing a non-volatile disk cache |
JP2001142774A (ja) | 1999-11-11 | 2001-05-25 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
US6377500B1 (en) | 1999-11-11 | 2002-04-23 | Kabushiki Kaisha Toshiba | Memory system with a non-volatile memory, having address translating function |
US6609182B1 (en) | 2000-01-20 | 2003-08-19 | Microsoft Corporation | Smart hibernation on an operating system with page translation |
KR100383774B1 (ko) | 2000-01-26 | 2003-05-12 | 삼성전자주식회사 | 공통 인터페이스 방식의 메모리 장치들을 구비한 시스템 |
US7073014B1 (en) | 2000-07-28 | 2006-07-04 | Micron Technology, Inc. | Synchronous non-volatile memory system |
JP2001297316A (ja) | 2000-04-14 | 2001-10-26 | Mitsubishi Electric Corp | メモリカード及びその制御方法 |
JP3871853B2 (ja) | 2000-05-26 | 2007-01-24 | 株式会社ルネサステクノロジ | 半導体装置及びその動作方法 |
JP2001338468A (ja) | 2000-05-26 | 2001-12-07 | Hitachi Ltd | 記憶装置の制御方法および記憶装置 |
US6785767B2 (en) | 2000-12-26 | 2004-08-31 | Intel Corporation | Hybrid mass storage system and method with two different types of storage medium |
US6510488B2 (en) | 2001-02-05 | 2003-01-21 | M-Systems Flash Disk Pioneers Ltd. | Method for fast wake-up of a flash memory system |
JP2002259443A (ja) | 2001-02-28 | 2002-09-13 | Ricoh Co Ltd | 文書管理システム、文書検索方法および文書検索プログラム |
AU2002250356A1 (en) | 2001-03-14 | 2002-09-24 | Mercury Computer Systems, Inc. | Wireless communications methods and systems for long-code and other spread spectrum waveform processing |
US6327207B1 (en) | 2001-04-09 | 2001-12-04 | Lsi Logic Corporation | Synchronizing data operations across a synchronization boundary between different clock domains using two-hot encoding |
JP4059002B2 (ja) | 2001-06-13 | 2008-03-12 | 株式会社日立製作所 | メモリ装置 |
TWI240864B (en) | 2001-06-13 | 2005-10-01 | Hitachi Ltd | Memory device |
JP2003006041A (ja) | 2001-06-20 | 2003-01-10 | Hitachi Ltd | 半導体装置 |
US6670234B2 (en) | 2001-06-22 | 2003-12-30 | International Business Machines Corporation | Method of integrating volatile and non-volatile memory cells on the same substrate and a semiconductor memory device thereof |
JP4042359B2 (ja) | 2001-07-10 | 2008-02-06 | 日本電気株式会社 | キャッシュ制御方法及びキャッシュ装置 |
JP2003036204A (ja) | 2001-07-23 | 2003-02-07 | Matsushita Electric Ind Co Ltd | フラッシュ型メモリの更新方法 |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US7162549B2 (en) | 2001-10-29 | 2007-01-09 | Onspec Electronics, Inc. | Multimode controller for intelligent and “dumb” flash cards |
US7010662B2 (en) | 2002-02-27 | 2006-03-07 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
US6621746B1 (en) | 2002-02-27 | 2003-09-16 | Microsoft Corporation | Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations |
US7085879B2 (en) | 2002-02-27 | 2006-08-01 | Microsoft Corporation | Dynamic data structures for tracking data stored in a flash memory device |
US6901499B2 (en) | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
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 |
CN1447242A (zh) | 2002-03-25 | 2003-10-08 | 太和科技股份有限公司 | 可适用于快闪存储卡的控制装置及其建构方法 |
EP1351146A1 (en) | 2002-04-04 | 2003-10-08 | Hewlett-Packard Company | Power management system and method with recovery after power failure |
US20050036387A1 (en) | 2002-04-24 | 2005-02-17 | Seal Brian K. | Method of using flash memory for storing metering data |
US6966006B2 (en) | 2002-05-09 | 2005-11-15 | International Business Machines Corporation | Adaptive startup policy for accelerating multi-disk array spin-up |
JP4186509B2 (ja) * | 2002-05-10 | 2008-11-26 | 株式会社日立製作所 | ディスクシステムとそのキャッシュ制御方法 |
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 |
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 |
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 |
US6814873B2 (en) * | 2002-07-22 | 2004-11-09 | Cytec Technology Corp. | Method of preventing or reducing aluminosilicate scale in a bayer process |
US7313684B2 (en) | 2002-08-14 | 2007-12-25 | T1 Technologies Limited | Method and apparatus for booting a computer system |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US6799231B2 (en) | 2002-10-22 | 2004-09-28 | Asix Electronics Corp. | Virtual I/O device coupled to memory controller |
US7181611B2 (en) | 2002-10-28 | 2007-02-20 | Sandisk Corporation | Power management block for use in a non-volatile memory system |
US7035974B2 (en) | 2002-11-06 | 2006-04-25 | Synology Inc. | RAID-5 disk having cache memory implemented using non-volatile RAM |
US7093101B2 (en) | 2002-11-21 | 2006-08-15 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
WO2004049168A1 (ja) | 2002-11-28 | 2004-06-10 | Renesas Technology Corp. | メモリモジュール、メモリシステム、及び情報機器 |
US6922754B2 (en) * | 2002-12-09 | 2005-07-26 | Infabric Technologies, Inc. | Data-aware data flow manager |
KR100526186B1 (ko) | 2003-04-04 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리의 오류블록 관리방법 및 장치 |
US7752380B2 (en) | 2003-07-31 | 2010-07-06 | Sandisk Il Ltd | SDRAM memory device with an embedded NAND flash controller |
US6859068B1 (en) | 2003-08-08 | 2005-02-22 | Sun Microsystems, Inc. | Self-correcting I/O interface driver scheme for memory interface |
US6854984B1 (en) | 2003-09-11 | 2005-02-15 | Super Talent Electronics, Inc. | Slim USB connector with spring-engaging depressions, stabilizing dividers and wider end rails for flash-memory drive |
US7171526B2 (en) | 2003-11-07 | 2007-01-30 | Freescale Semiconductor, Inc. | Memory controller useable in a data processing system |
US7480760B2 (en) | 2003-12-17 | 2009-01-20 | Wegener Communications, Inc. | Rotational use of memory to minimize write cycles |
US6862206B1 (en) | 2003-12-19 | 2005-03-01 | Hewlett-Packard Development Company, L.P. | Memory module hybridizing an atomic resolution storage (ARS) memory and a magnetic memory |
KR101085406B1 (ko) | 2004-02-16 | 2011-11-21 | 삼성전자주식회사 | 불 휘발성 메모리를 제어하기 위한 컨트롤러 |
US20080082736A1 (en) | 2004-03-11 | 2008-04-03 | Chow David Q | Managing bad blocks in various flash memory cells for electronic data flash card |
US20050204091A1 (en) | 2004-03-11 | 2005-09-15 | Kilbuck Kevin M. | Non-volatile memory with synchronous DRAM interface |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
KR100568115B1 (ko) | 2004-06-30 | 2006-04-05 | 삼성전자주식회사 | 점진적 머지 방법 및 그것을 이용한 메모리 시스템 |
KR100858756B1 (ko) | 2004-07-12 | 2008-09-16 | 가부시끼가이샤 도시바 | 저장 디바이스 및 호스트 장치 |
KR100622349B1 (ko) | 2004-08-04 | 2006-09-14 | 삼성전자주식회사 | 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법. |
US7698698B2 (en) | 2004-09-30 | 2010-04-13 | Smith Micro Software, Inc. | Method for over-the-air firmware update of NAND flash memory based mobile devices |
US7698517B2 (en) | 2004-12-02 | 2010-04-13 | Storagedna, Inc. | Managing disk storage media |
CN100511145C (zh) | 2004-12-30 | 2009-07-08 | 英业达股份有限公司 | 更新***管理基本输入输出***数据的方法 |
US20060184710A1 (en) | 2005-02-17 | 2006-08-17 | Nokia Inc. | Bridge between a single channel high speed bus and a multiple channel low speed bus |
US7366825B2 (en) | 2005-04-26 | 2008-04-29 | Microsoft Corporation | NAND flash memory management |
US7352621B2 (en) | 2005-06-23 | 2008-04-01 | Intel Corporation | Method for enhanced block management |
US20060294295A1 (en) | 2005-06-24 | 2006-12-28 | Yukio Fukuzo | DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device |
US7853749B2 (en) | 2005-09-01 | 2010-12-14 | Cypress Semiconductor Corporation | Flash drive fast wear leveling |
CN100520734C (zh) | 2005-11-18 | 2009-07-29 | 凌阳科技股份有限公司 | 闪存的控制装置与方法 |
US7360022B2 (en) | 2005-12-29 | 2008-04-15 | Intel Corporation | Synchronizing an instruction cache and a data cache on demand |
JP4863749B2 (ja) | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
US7716411B2 (en) | 2006-06-07 | 2010-05-11 | Microsoft Corporation | Hybrid memory device with single interface |
WO2007146845A2 (en) | 2006-06-08 | 2007-12-21 | Bitmicro Networks, Inc. | Configurable and scalable hybrid multi-tiered caching storage system |
US8307148B2 (en) | 2006-06-23 | 2012-11-06 | Microsoft Corporation | Flash management techniques |
US8296521B2 (en) | 2006-06-30 | 2012-10-23 | Mosaid Technologies Incorporated | Method of configuring non-volatile memory for a hybrid disk drive |
US7411757B2 (en) | 2006-07-27 | 2008-08-12 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with nonvolatile memory having multiple modes of operation |
KR100801015B1 (ko) | 2006-08-30 | 2008-02-04 | 삼성전자주식회사 | 하이브리드 하드 디스크 드라이브와 데이터 저장 방법 |
WO2008131058A2 (en) | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
US7792882B2 (en) | 2007-09-27 | 2010-09-07 | Oracle America, Inc. | Method and system for block allocation for hybrid drives |
US7970983B2 (en) | 2007-10-14 | 2011-06-28 | Sandisk Il Ltd. | Identity-based flash management |
TWI358068B (en) | 2007-10-19 | 2012-02-11 | Phison Electronics Corp | Writing method for non-volatile memory and control |
US8082384B2 (en) | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
US20100138677A1 (en) | 2008-12-01 | 2010-06-03 | International Business Machines Corporation | Optimization of data distribution and power consumption in a data center |
US8195878B2 (en) | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
US8195891B2 (en) | 2009-03-30 | 2012-06-05 | Intel Corporation | Techniques to perform power fail-safe caching without atomic metadata |
US9165021B2 (en) | 2009-04-14 | 2015-10-20 | International Business Machines Corporation | Managing database object placement on multiple storage devices |
US8225035B2 (en) | 2009-04-21 | 2012-07-17 | Apple Inc. | Systems and methods for operating a disk drive |
US8161251B2 (en) | 2009-05-27 | 2012-04-17 | Microsoft Corporation | Heterogeneous storage array optimization through eviction |
EP2461826A2 (en) * | 2009-08-07 | 2012-06-13 | Transgene SA | Composition for treating hbv infection |
US20110219215A1 (en) | 2010-01-15 | 2011-09-08 | International Business Machines Corporation | Atomicity: a multi-pronged approach |
US8407403B2 (en) | 2009-12-07 | 2013-03-26 | Microsoft Corporation | Extending SSD lifetime using hybrid storage |
CN101833989A (zh) | 2010-05-27 | 2010-09-15 | 华为技术有限公司 | 多接口固态硬盘及其处理方法和*** |
US8307014B2 (en) | 2010-08-25 | 2012-11-06 | International Business Machines Corporation | Database rebalancing in hybrid storage environment |
US8862845B2 (en) | 2010-12-06 | 2014-10-14 | Xiotech Corporation | Application profiling in a data storage array |
US20120284544A1 (en) * | 2011-05-06 | 2012-11-08 | Microsoft Corporation | Storage Device Power Management |
US20120317337A1 (en) | 2011-06-09 | 2012-12-13 | Microsoft Corporation | Managing data placement on flash-based storage by use |
CN102388358B (zh) | 2011-09-30 | 2014-07-09 | 华为技术有限公司 | 在混合存储环境下配置存储设备的方法和*** |
US9244848B2 (en) | 2011-10-10 | 2016-01-26 | Intel Corporation | Host controlled hybrid storage device |
KR101889298B1 (ko) * | 2011-11-08 | 2018-08-20 | 삼성전자주식회사 | 불휘발성 메모리를 포함하는 메모리 장치 및 불휘발성 메모리의 제어 방법 |
US9286162B2 (en) | 2012-02-02 | 2016-03-15 | Netapp, Inc. | System and method for guaranteeing consistent data synchronization from a volatile data source |
US20130285911A1 (en) | 2012-04-30 | 2013-10-31 | Oluf Nissen | Controlling a computer using a wireless mouse |
FR2992851B1 (fr) * | 2012-07-06 | 2015-06-19 | France Chirurgie Instr | Sonde a chanfrein |
US10068420B2 (en) * | 2012-07-13 | 2018-09-04 | Video Gaming Technologies, Inc. | System and method for enabling a player proxy to execute a gaming event |
US9639466B2 (en) * | 2012-10-30 | 2017-05-02 | Nvidia Corporation | Control mechanism for fine-tuned cache to backing-store synchronization |
US9417820B2 (en) * | 2012-12-06 | 2016-08-16 | Kabushiki Kaisha Toshiba | Low-overhead storage of a hibernation file in a hybrid disk drive |
US9430376B2 (en) * | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
-
2013
- 2013-04-25 US US13/870,670 patent/US9946495B2/en active Active
- 2013-09-10 BR BR112015026451A patent/BR112015026451A2/pt not_active Application Discontinuation
- 2013-09-10 EP EP13883186.2A patent/EP3000042B1/en active Active
- 2013-09-10 WO PCT/US2013/058841 patent/WO2014175912A2/en active Search and Examination
- 2013-09-10 CN CN201380075906.3A patent/CN105637470B/zh active Active
- 2013-09-10 CN CN202010909861.7A patent/CN112051970A/zh active Pending
-
2018
- 2018-04-16 US US15/954,344 patent/US10416932B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102301345A (zh) * | 2008-12-30 | 2011-12-28 | 英特尔公司 | 混合存储设备 |
CN102591593A (zh) * | 2011-12-28 | 2012-07-18 | 华为技术有限公司 | 一种混合存储模式的切换方法、装置及*** |
CN102831088A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据迁移方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
BR112015026451A2 (pt) | 2017-07-25 |
US9946495B2 (en) | 2018-04-17 |
WO2014175912A2 (en) | 2014-10-30 |
EP3000042A2 (en) | 2016-03-30 |
US20140325169A1 (en) | 2014-10-30 |
EP3000042B1 (en) | 2021-07-28 |
CN112051970A (zh) | 2020-12-08 |
WO2014175912A3 (en) | 2016-03-24 |
US20180321857A1 (en) | 2018-11-08 |
CN105637470A (zh) | 2016-06-01 |
US10416932B2 (en) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105637470B (zh) | 用于脏数据管理的方法和计算设备 | |
US9626126B2 (en) | Power saving mode hybrid drive access management | |
CN102782683B (zh) | 用于数据库服务器的缓冲池扩展 | |
US9323460B2 (en) | Assigning priorities to data for hybrid drives | |
US9792227B2 (en) | Heterogeneous unified memory | |
US9058212B2 (en) | Combining memory pages having identical content | |
WO2017176534A1 (en) | Managing container pause and resume | |
US9684625B2 (en) | Asynchronously prefetching sharable memory pages | |
JP2013509658A (ja) | 将来の使用推量に基づく記憶メモリの割り当て | |
US20190004841A1 (en) | Memory Sharing For Virtual Machines | |
US8458402B1 (en) | Decision-making system and method for improving operating system level 2 cache performance | |
CN107408073B (zh) | 使用存储器压缩来减少存储器提交开销 | |
CN116034366A (zh) | 通过选择性数据移动防止ram访问模式攻击 | |
CN112988387A (zh) | 一种内存页管理方法及计算设备 | |
US10073851B2 (en) | Fast new file creation cache | |
US9146876B2 (en) | Caching method and caching system using dual disks | |
US10719243B2 (en) | Techniques for preserving an expected lifespan of a non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |