混合驱动器的脏数据管理的制作方法_2

文档序号:9872409阅读:来源:国知局
硬盘驱动器或多个硬盘驱动器构成。这些不同的组件都可在同一设备(例如同一设备外壳)中实施或替代地散布在耦合到彼此(例如经由USB连接、无线USB连接、网络等)的多个设备(例如多个不同的外壳)当中。
[0025]此外,应注意,虽然混合驱动器102被本文被讨论为包括两个部分,混合驱动器102可以替代地包括三个或更多个部分。可以用不同的方式(例如,如上面关于性能部分112和基础部分114讨论的)使用各种非易失性存储器实施这些额外的部分,每个提供比下一更低的层更高的性能部分,而不是提供易失性高速缓存存储器(其可包括在混合驱动器102中以临时存储混合驱动器102的两个或多个部分的任一个的数据)ο例如,混合驱动器102可包括中间性能部分,其是比基础部分114高的性能部分但比性能部分112低的性能部分。在这样的情况下,除了基础部分114以外的部分也可被称为性能部分。不考虑部分的数量,LBA的优先级水平的指示由操作系统104提供到混合驱动器102,且混合驱动器102基于这些优先级水平指示来确定在哪个或哪些部分上存储LBA。
[0026]图2图示根据一个或多个实施例的示例驱动器访问系统200。驱动器访问系统200可被实施为操作系统(例如图1的操作系统104)的部分。替代地,驱动器访问系统200可被实施为访问混合驱动器102的另一程序或应用(例如Web浏览器程序)、数据访问或存储程序等的部分。
[0027]驱动器访问系统200包括优先级识别模块202、脏数据管理模块204和I/O模块206。图1的I/o模块206和I/O模块116可以是相同的模块。驱动器访问系统200可作为单个设备的部分(例如,计算设备的操作系统的部分)或在多个设备当中被实施。例如,脏数据管理模块204和I/O模块206可由一个计算设备实施,且优先级识别模块202的至少部分由另一设备(例如经由网络耦合到计算设备的服务器)实施。
[0028]通常,优先级识别模块202得到被分配到特定LBA的优先级水平。优先级识别模块202可以用不同的方式得到优先级水平,例如基于关于对混合驱动器102的I/O访问的信息确定LBA的优先级水平,从远程服务或系统得到LBA的优先级水平,被预先配置有LBA的优先级水平,其组合,等等。因为I/O模块206向混合驱动器102发出I/O命令,I/O模块206向混合驱动器102提供被分配到与那些I/O命令相关的特定LBA的优先级水平的指示。例如,在图2中图示被分配了优先级水平212的LBA 210。额外的数据(例如将被写到混合驱动器102)也可连同LBA 210和优先级水平212—起被发送到混合驱动器102。
[0029]脏数据管理模块204确定使在性能部分112中的脏数据与基础部分114同步何时是合乎需要的。脏数据指存储在混合驱动器102的一个部分中但不是在另一部分中的数据(例如存储在性能部分112中但不在基础部分114中的数据、存储在基础部分114中但不在性能部分112中的数据)。例如,由I/O模块206发出的I/O命令可导致被写到性能部分112但不是基础部分114的数据。模块204可向混合驱动器102提供指示以使脏数据与基础部分114同步(例如将脏数据复制到基础部分114)或不使脏数据与基础部分114同步,如下面更详细讨论的那样。
[0030]通常,基于是否将数据放置在性能部分112中来给数据分配特定的优先级水平,这被预期增加设备的用户能察觉的速度(例如计算设备启动或发起应用的速度)和/或减少计算设备的功率消耗。例如,当启动计算设备、从休眠恢复计算设备、将存储器的页面从易失性存储器转移或交换到混合驱动器102、在计算设备上发起应用等时读取的数据可以被分配比其它一般使用数据(例如由应用在运行时访问的数据)更高的优先级水平以由于这样的数据更可能存储在性能部分112中而增加设备的用户能察觉的速度。此外,可以给数据分配特定的优先级水平,使得在性能部分112中有在最低优先级水平处的足够数量的数据(I千兆字节或4千兆字节的数据),使得被分配了最低优先级水平的LBA数据可从性能部分112移除并如所期望的那样存储在基础部分114中(因而将具有较高优先级水平的LBA数据保持在性能部分112中)。
[0031]将在最低优先级水平处的足够数量的数据维持在性能部分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转移出的足够数量的数据(例如I千兆字节的数据、4千兆字节的数据等)。
[0032]多个不同的优先级水平可由驱动器访问系统200支持,且优先级水平可以用不同的方式被标记。在一个或多个实施例中,有被标记为优先级水平4、优先级水平3、优先级水平2和优先级水平I的四个优先级水平。然而,可以替代地有任何数量的优先级水平。也可以用不同的方式例如使用字母、不同的字符或符号等来标记优先级水平。除了优先级水平以夕卜,驱动器访问系统200可以不支持某些LBA的优先级水平。没有被分配优先级水平的LBA数据存储在基础部分114而不是性能部分112中,混合驱动器102不需要做出关于LBA数据存储在哪个部分中的确定。可以用不同的方式例如基于数据的数量或数据访问的模式来确定哪些LBA没有被分配优先级水平。例如,顺序地访问大量(例如大于阈值数量)数据可导致这样的数据的LBA没有被分配优先级水平,使得数据被存储在基础部分114中且没有不利地影响性能部分112的寿命(例如在固态盘的每个单元停止正确地运行且可能不再被写入之前该单元可被写入的次数)。也应注意,在一个或多个实施例中,混合驱动器102可实施一个或多个额外的隐藏或私有优先级水平。这些额外的隐藏或私有优先级水平不被驱动器访问系统200使用且是驱动器访问系统20不可见的,但可由混合驱动器102使用来根据混合驱动器102的内部策略管理LBA数据被存储在哪里。
[0033]驱动器访问系统200从混合驱动器102接收关于在各种优先级水平的每个处在性能部分112中多少LBA被存储(或多少存储空间被使用)以及在各种优先级水平的每个处(或至少在一个或多个低优先级水平处)多少脏数据被存储在性能部分112中的指示。当由I/O模块206发出的I/O命令将数据写到混合驱动器102时,根据与被写入的LBA相关的优先级水平,数据可存储在性能部分112而不是基础部分114中。存储在性能部分112而不是基础部分114中的这个数据被称为脏数据,直到数据与基础部分114同步为止。混合驱动器102维护在性能部分112中的哪个数据是脏数据以及在性能部分112中的哪个数据不是脏数据的记录。不是脏的数据也被称为干净数据。
[0034]在性能部分112中的脏数据可与基础部分114同步,这指将脏数据复制或移动到基础部分114。在一个或多个实施例中,脏数据从性能部分112被复制到基础部分114,且由混合驱动器102维护的记录被更新以反映数据是干净数据。在性能部分112中的干净数据可然后如混合驱动器102所期望的被重写(例如LRU干净数据可由最近接收的数据重写)。替代地,脏数据可从性能部分112移动到基础部分114,且不再存储在性能部分112中。
[0035]在一个或多个实施例中,优先级水平被分配到LBA,使得足够数量的数据(例如I千兆字节的数据、4千兆字节的数据等)在低优先级水平处。这个低优先级水平是由驱动器访问系统200支持的最低优先级水平,虽然混合驱动器102可支持不为驱动器访问系统200所知的更低优先级水平。有在低优先级水平处的这个数量的数据允许在低优先级水平处的数据被写到性能部分112,随着时间的过去与基础部分114同步,并接着被在低优先级水平处的最近接收的数据重写,都当在较高优先级水平处的数据保持在性能部分112中的同时。因此,在低优先级水平处的数据可由最近接收的数据代替,但在高优先级水平处的数据不需要由最近接收的数据代替。
[0036]驱动器访问系统200可监控关于实施设备200的设备的状态的各种信息、由I/O模块206发出的I/O命令的类型等。驱动器访问系统200利用这个信息以及多少脏数据在低优先级水平处存储在性能部分112中的指示,以确定何时向混合驱动器102提供使脏数据同步的指示。这个所监控的信息包括混合驱动器102常常不可得到的信息,允许驱动器访问系统200做出比混合驱动器102可做出的关于脏数据何时被同步的更智能的决定。
[0037]在一个或多个实施例中,何时使性能部分112中的脏数据同步的最终确定由混合驱动器102做出。驱动器访问系统200向混合驱动器102提供何时使脏数据同步的指示,且混合驱动器102被期望根据由驱动器访问系统200提供的指示来使脏数据同步。然而,混合驱动器102并不被强制根据由驱动器访问系统200提供的指示来使脏数据同步,何时使脏数据同步的决定属于混合驱动器102。
[0038]脏数据管理模块204确定何时向混合驱动器102提供使脏数据同步的指示。可基于设备的当前状态来做出该确定,当前状态可包括用户是否在设备上是活动的(例如在用户与设备交互或使用在设备上运行的程序的情况下、在数据被写到混合驱动器102的情况下等,用户在设备上是活动的)。在一个或多个实施例中,在用户在设备上是活动的时间期间,做出何时向混合驱动器102提供使脏数据同步的指示的确定以便减少对由用户对设备的使用的干扰。被提供到混合驱动器102的指示可以是例如在同步数据可能干扰用户对设备的使用的情况下使同步数据延迟和在同步数据将不干扰用户对设备的使用的情况下加速同步数据的指示。
[0039]当用户在设备上是活动的时对由用户对设备的使用的干扰可出现,其在设备上是活动的导致数据通过程序从混合驱动器102被读取和/或被写到混合驱动器102。读或写这样的数据的I/O命令被称为用户I/O命令,且如果由I/O模块206发出到混合驱动器102的用户I/O命令由于混合驱动器102使脏数据同步而被干扰(例如延迟),则由用户对设备的使用可被干扰(例如当读和/或写数据时用户能察觉的延迟可出现)。通过减少用户I/O命令被使脏数据同步的混合驱动器102干扰,可减少对由用户对设备的使用的干扰。
[0040]也可以用其它方式减少对由用户对设备的使用的干扰。在一个或多个实施例中,从混合驱动器102读取和/或写到混合驱动器102的数据可具有不同的I/O优先级,指被执行的I/O的重要性。一些I/O优先级可以高,例如读或写由用户使用的程序的数据,读或写管理与另一设备的通信的操作系统的组件的数据,等等。其它I/O优先级可以低,例如读或写在混合器驱动器102上执行维护
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1