首页> 中国专利> 存储系统和有别名的存储器

存储系统和有别名的存储器

摘要

本文描述的主题的各方面涉及存储系统和有别名的存储器。在各方面中,文件系统驱动程序或其它组件可以向存储器控制器发送在存储器的两个块之间创建别名的请求。存储器的这些块之一可以被用于主存储器,而存储器的这些块中的另一个可以被用于存储系统。作为响应,存储器控制器可以在存储器的块之间创建别名。直到别名被切断为止,当存储器控制器接收到针对来自于主存储器中的块的数据的请求时,存储器控制器可以用来自于用于存储系统的存储器块的数据进行响应。存储器控制器还可以实现如本文描述的其它动作。

著录项

  • 公开/公告号CN105339909A

    专利类型发明专利

  • 公开/公告日2016-02-17

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201480030762.4

  • 申请日2014-05-28

  • 分类号G06F12/0866;G06F3/06;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人刘鹏

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 14:21:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-24

    授权

    授权

  • 2016-03-16

    实质审查的生效 IPC(主分类):G06F12/0866 申请日:20140528

    实质审查的生效

  • 2016-02-17

    公开

    公开

说明书

背景技术

用于计算机系统的存储器传统地被分为易失性和非易失性存储器。易失性存储器需要电力来保持它上面存储的数据。非易失性存储器即使在不加电的时候也可以保留数据。先前,计算机已经使用了易失性和非易失性存储器二者,因为每个都具有某些优点。例如,易失性存储器通常比非易失性存储器快得多,而非易失性存储器经常每比特的成本少得多。非易失性存储器技术方面的进步正在缩小易失性和非易失性存储器之间在速度方面的差距,而非易失性存储器保持着在电力缺失期间保存数据的优点。

本文要求保护的主题并不局限于解决任何缺点的或仅在诸如前面描述的那些环境之类的环境中操作的实施例。相反,提供这一背景仅仅是为了说明其中可以实践本文描述的一些实施例的一个示范性技术领域。

发明内容

简要地,本文描述的主题的各方面涉及存储系统和有别名的存储器。在各方面中,文件系统驱动程序或其它组件可以向存储器控制器发送在存储器的两个块之间创建别名的请求。存储器的这些块之一可以被用于主存储器,而存储器的这些块中的另一个可以被用于存储系统。作为响应,存储器控制器可以在存储器的块之间创建别名。直到别名被切断为止,当存储器控制器接收到针对来自于主存储器中的块的数据的请求时,存储器控制器可以用来自于用于存储系统的存储器块的数据进行响应。存储器控制器还可以实现如本文描述的其它动作。

本发明内容被提供来简要地标识下面在具体实施方式中进一步描述的主题的一些方面。本发明内容并非打算用来标识所要求保护的主题的关键或必要特征,其也并非意图被用于限制所要求保护的主题的范围。

短语“本文描述的主题”指的是具体实施方式中描述的主题,除非上下文另有清楚指示。术语“各方面”应当被解读为“至少一个方面”。标识具体实施方式中描述的主题的各方面并非意图用来标识所要求保护的主题的关键或必要特征。

前面描述的各方面和本文描述的主题的其它方面是以举例的方式图示出的,并且并非限制在附图中,这些附图中相同的参考数字指示相同的元件并且其中:

附图说明

图1是表示可以将本文描述的主题的各方面合并到其中的示范性通用计算环境的框图;

图2和5是概括地表示按照本文描述的主题的各方面的非易失性存储器的框图;

图3是概括地表示按照本文描述的主题的各方面的图2的存储器块的子块之间的别名的各种不同状态的框图。

图4和6是概括地表示按照本文描述的主题的各方面配置的系统的示范性组件的框图;

图7是概括地表示按照本文描述的主题的各方面的可以结合从存储器控制器的角度创建别名而发生的示范性动作的流程图;

图8是概括地表示按照本文描述的主题的各方面的可以结合从存储器控制器的角度获得有别名的块的数据而发生的示范性动作的流程图;和

图9是示出按照本文描述的主题的各方面的可以在经由存储器控制器访问存储器的组件上发生的示范性动作的流程图。

具体实施方式

定义

如本文所使用的,术语“包括”及其变体应当被解读为开放性术语,其含义是“包括,但不局限于”。术语“或”应当被解读为“和/或”,除非上下文另有清楚规定。术语“基于”应当被解读为“至少部分地基于”。术语“一种实施例”和“实施例”应当被解读为“至少一个实施例”。术语“另一个实施例”应当被解读为“至少一个其它实施例”。

如本文所使用的,诸如“一”、“一个”和“该”这样的术语包含所指示的项目或动作中的一个或多个。特别地,在权利要求中,对一个项目的引用一般意味着存在至少一个这样的项目,并且对一个动作的引用意味着该动作的至少一个实例被执行。

本文有时使用术语“第一”、“第二”、“第三”等等。在没有附加的上下文的情况下,在权利要求中使用这些术语并非意图隐含次序,而是相反用于标识的目的。例如,短语“第一版本”和“第二版本”并非必然意味着第一版就是第一个版本或是在第二版本之前创建的,或者甚至第一版本是在第二版本之前被请求的或者被操作的。相反,这些短语被用于标识不同的版本。

标题仅仅是为了方便;关于给定话题的信息可以在其标题指示该话题的部分之外找到。

下面可以包括其它明确的或隐含的定义。

示范性操作环境

图1图示了可以在其上实现本文描述的主题的各方面的适当计算系统环境100的示例。计算系统环境100仅仅是适当计算环境的一个示例,并且并非意图用来暗示任何关于本文描述的主题的各方面的用途或功能的范围的限制。也不应当将计算环境100解释为具有任何与示范性操作环境100中图示的组件中的任一个或组合有关的依赖性或要求。

本文描述的主题的各方面可与众多其它的通用或专用计算系统环境或配置一起操作。可以适合于与本文描述的主题的各方面一起使用的众所周知的计算系统、环境或配置的示例包括个人计算机、服务器计算机(不管是在裸机上还是作为虚拟机)、手持式或膝上型设备、多处理器系统、基于微控制器的系统、机顶盒、可编程和不可编程消费者电子产品、网络PC、微型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶部分、媒体中心或其它器材的器材、嵌入汽车或汽车附接的计算设备、其它移动设备、包括蜂窝电话、无线电话和有线电话的电话设备、包括任何上述系统或设备的分布式计算环境,等等。虽然各种不同的实施例可以局限于上述设备中的一个或多个,但是术语计算机意图用来覆盖上述这些设备,除非另有指示。

本文描述的主题的各方面可以在正由计算机执行的计算机可执行指令,比如程序模块,的一般上下文中加以描述。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本文描述的主题的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储媒介两者中。

可替换地或此外,本文描述的功能可以至少部分地由一个或多个硬件逻辑组件执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、程序特定集成电路(ASIC)、程序特定标准产品(ASSP)、片上系统系统(SOC)、复杂可编程逻辑器件(CPLD)等等。

参照图1,用于实现本文描述的主题的各方面的示范性系统包括计算机110形式的通用计算设备。计算机可以包括能够执行指令的任何电子设备。计算机110的组件可以包括处理单元120、系统存储器130和将包括系统存储器在内的各种不同的系统组件耦合到处理单元120的一个或多个系统总线(由系统总线121表示)。系统总线121可以是若干类型的总线结构中的任何一种,所述总线结构包括存储器总线或存储器控制器、外围总线和使用多种总线架构中的任何一种的本地总线。以示例的方式而非限制,这些架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线、外围组件互连(PCI)总线(也称为Mezzanine总线)、外围组件互连扩展(PCI-X)总线、高级图形端口(AGP)和PCIexpress(PCIe)。

处理单元120可以与硬件安全设备122连接。该安全设备122可以存储并且能够生成可以用于保护计算机110的各种不同方面安全的加密密钥。在一个实施例中,安全装置122可以包括受信任平台模块(TPM)芯片、TPM安全设备等等。

计算机110通常包括多种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质并且包括易失性和非易失性两者的介质以及可移动和不可移动介质。以示例的方式而非限制,计算机可读介质可以包括计算机存储介质和通信介质。

计算机存储介质包括用任何用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的方法或技术实现的易失性和非易失性两者、可移动和不可移动的介质。计算机存储介质包括RAM、ROM、EEPROM、固态存储装置、闪速存储器或其它存储器技术、CD-ROM、数字多用盘(DVD)、蓝光盘(BD)或其它光盘存储装置、盒式磁带、磁带、磁盘存储装置或其它磁存储设备,或者可以用于存储想要的信息的并且可以由计算机110访问的任何其它介质。计算机存储介质不包括通信介质。

通信介质通常将计算机可读指令、数据结构、程序模块或其它数据体现在诸如载波或其它输运机制之类的已调制数据信号中并且包括任何信息递送介质。术语“已调制数据信号”意味着这样的信号:使其特性中的一个或多个以这样的方式被设定或改变以将信息编码到该信号中。以示例的方式而非限制,通信介质包括诸如有线网络或直接有线连接这样的有线介质和诸如声学、RF、红外线及其它无线介质之类的无线介质。上述中任一个的组合也应当被包括在计算机可读介质的范围之内。

系统存储器130可以包括易失性和/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。非易失性存储器可以代替ROM131和/或RAM132的部分或全部。例如,可以代替ROM131和/或RAM132或者除了ROM131和/或RAM132之外而使用忆阻器存储器、相变存储器(PCM)或某种其它类型的非易失性存储器。

包含诸如在启动期间帮助在计算机110内的元件之间传输信息的基本例程的基本输入/输出系统133(BIOS)通常存储在ROM131中。RAM132通常包含可由处理单元120立即访问的和/或目前正在由处理单元120操作的数据和/或程序模块。以示例的方式而非限制,图1图示了操作系统134、应用程序135、其它程序模块136和程序数据137。

计算机110还可以包括其它的可移动/不可移动、易失性/非易失性计算机存储介质。仅仅以示例的方式,图1图示了从不可移动、非易失性磁介质读取或向其写入的硬盘驱动器141、从可移动、非易失性磁盘152读取或向其写入的磁盘驱动器151和从诸如CDROM、DVD、BD或其它光学介质之类的可移动、非易失性光盘156读取或向其写入的光盘驱动器155。

在一种实现方式中,可以代替硬驱动器141或除了硬驱动器141之外而使用忆阻器存储器、相变存储器或某种其它类型的非易失性存储器。

可用于示范性操作环境中的其它可移动/不可移动、易失性/非易失性计算机存储介质包括盒式磁带、闪速存储器卡和其它固态存储设备、数字多用盘、其它光盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141可以通过接口140与系统总线121连接,并且磁盘驱动器151和光盘驱动器155可以通过诸如接口150之类的用于可移动非易失性存储器的接口与系统总线121相连接。

前面讨论且在图1中图示的这些驱动器以及它们的关联计算机存储介质提供对计算机可读指令、数据结构、程序模块以及用于计算机110的其它数据的存储。在图1中,例如,硬盘驱动器141被图示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或者不同。本文给予操作系统144、应用程序145、其它程序模块146和程序数据147不同的数字以图示出它们可以是不同的副本。

用户可以通过诸如键盘162和指向设备161(常称为鼠标、轨迹球或触摸板)之类的输入设备将命令和信息录入到计算机110中。其它的输入设备(未示出)可以包括麦克风(例如,用于输入语音或其它声音)、游戏杆、游戏板、卫星碟式天线、扫描仪、触敏屏、书写平板、相机(例如,用于输入手势或其它视觉输入)等等。这些和其它输入设备经常通过与系统总线耦合的用户输入接口160连接到处理单元120,但是也可以通过其它接口和总线结构(诸如并行端口、游戏端口或通用串行总线(USB))连接。

通过使用前面标识的输入设备中的一个或多个,可以建立自然用户接口(NUI)。NUI可以依赖于话音识别、触摸和触笔识别、屏幕上的以及邻近屏幕两者的手势识别、空中手势、头部和眼睛跟踪、语音和话音、视力、触摸、手势、机器智能等等。可以用来与用户交互的一些示范性NUI技术包括触敏显示器、语音和话音识别、意图和目标理解、使用深度相机(诸如立体相机系统、红外相机系统、RGB相机系统及其组合)的运动手势检测、使用加速度计/陀螺仪的运动手势检测、脸部识别、3D显示器、头部、眼睛和凝视跟踪、沉浸式增强现实和虚拟现实系统以及用于使用电场感测电极感测大脑活动的技术(EEG和相关方法)。

监视器191或其它类型的显示设备也经由诸如视频接口190之类的接口连接到系统总线121。除了监视器之外,计算机还可以包括其它的外围输出设备,诸如扬声器197和打印机196,它们可以通过输出外围接口195连接。

计算机110可以在使用到一个或多个远程计算机(诸如远程计算机180)的逻辑连接的联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,并且通常包括前面相对于计算机110描述的元件中的很多或全部,虽然在图1中仅仅示出了存储器存储设备181。图1中描绘出的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括电话网络、近场网络和其它网络。这样的联网环境在办公室、企业范围计算机网络、内部网和因特网中是很平常的。

当被用于LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN171。当被用于WAN联网环境中时,计算机110可以包括用来通过WAN173(诸如因特网)建立通信的调制解调器172或其它手段。调制解调器172(其可以是内部的或外部的)可以经由用户输入接口160或其它适当的机制连接到系统总线121。在联网环境中,相对于计算机110描绘的程序模块或者其部分可以被存储在远程存储器存储设备中。以示例的方式而非限制,图1将远程应用程序185图示为驻留在存储器设备181上。将意识到,所示的网络连接是示范性的并且可以使用在计算机之间建立通信链路的其它手段。

非易失性存储器

如先前所提到的,非易失性存储器正在不断进步。按照本文描述的主题的各方面,操作系统可以被构建成利用这些进步。图2和5是概括地表示按照本文描述的主题的各方面的非易失性存储器的框图。非易失性存储器205可以包括可以按照地址访问的存储器存储元件的阵列。在一种实现方式中,包括非易失性存储器205的存储器设备可以使用存储器原语(primitive)来寻址。访问非易失性存储器205所使用的存储器原语可以与访问诸如RAM之类的易失性存储器所使用的那些存储器原语类似或相同。

快速非易失性存储器可以被附接到存储器总线。例如,目前,一些类型的非易失性存储器表现为是RAM的四分之一到二分之一慢,并且比闪速存储器或硬盘存储装置快好几个数量级。这些类型的非易失性存储器可以具有低的时延以及高的数据传输速率,所述非易失性存储器可以通过附接到存储器总线而不是附接到存储总线而受益更多。

如图2中所图示的,非易失性存储器205已经被分为文件系统区210和存储器区211。这些区的图示大小仅仅是示范性的。在其它实现方式中,例如,这些大小可以大大不同于图2中所示的大小。

此外,非易失性存储器205可以是使用一个或多个子系统来实现的。例如,在多个类型的非易失性存储器被托管在系统上的情况下或者在多个同一或不同类型的非易失性存储器的存储器单元被托管在该系统上的情况下,该系统可以包括多个子系统来访问非易失性存储器。

虽然本文有时使用术语“文件系统”,但是应当理解的是这个术语仅仅是示范性的并且本文的教导也可以应用于其它类型的存储系统。存储系统可以包括一个或多个组织持久数据的硬件和/或软件组件。

文件系统区210的大小和存储器区211的大小可以例如在配置操作期间进行设定或重新设定。配置操作可以在安装操作系统之前或之后进行,以根据需要调整或重新调整存储器区的大小。操作系统可以被配置为查找非易失性存储器205的预先定义的位置上的配置数据。该配置数据可以指示如何在文件系统数据和可用于其它用途的存储器之间划分该非易失性存储器。

存储器区211是非易失性存储器205的留出来为计算机提供附加的主存储器的一部分。可以代替或除了计算机的任何RAM或其它易失性存储器之外而使用这个存储器。

文件系统区210是非易失性存储器205的为文件系统数据留出的一部分。虽然在物理上,虽然这个区中的存储器元件可以以与访问存储器区211中的存储器元件相同的方式来访问,但是与存储器硬件相结合而动作的文件系统组件可以实行某些与这些访问有关的规则,如下面更加详细地描述的。

在传统的文件系统中,来自硬盘的一个数据块可以被复制到主存储器中。一旦在主存储器中,就可以更改该数据。在某一时刻,如所更改的数据块被从主存储器写入到硬盘。

按照本文描述的主题的各方面,文件系统可以被构造成避免传统文件系统中发生的某些复制。例如,参照图2,应用可以设法获得块215中的数据。代替将块215中的数据复制到块216中的存储器中,文件系统可以请求存储器硬件在块216与块215之间的创建别名。当创建了别名时,试图读取块216的操作除了在满足某些条件时从块215获得数据。

在创建了别名之后,对块216的写入促使数据被写入到块216。在一种实现方式中,存储器硬件可以等待直到数据写入到块216之后的一定时刻为止才将写入到块216的数据复制到块215。在另一种实现方式中,存储器硬件可以在将写入到块216的数据复制到块215之前等待来自文件系统的明确命令。这允许文件系统能够在发生对非易失性存储器205的写入时更多地牵涉其中。

一旦发生了对块216的写入,从块216到块215的一个或多个别名可以被中断。例如,块215可以是由多个子块实现的。在一种实现方式中,子块可以是可以在使用非易失性存储器205的存储器架构上进行访问的小的、固定大小的存储器。在一种实现方式中,一个块可以对应于存储器的一页,而子块可以对应于缓存行。

在一种实现方式中,当在块216与块215之间设立了别名时,可以在物理上在块216的每个子块与块215的其对应子块之间设立别名。这导致块216与215的存储器元件之间的多个别名。

在一种实现方式中,当块216的一部分被写入时,可以确定包括该部分的子块,并且可以将与那些子块相关联的别名切断。这一切断可以发生在对块216的后续读取之前的任何时刻。当接收到对块216的后续读取时,要读取的数据在别名还没有被切断的情况下从块215中取回并且在别名已经被切断的情况下从块216中取回。

在另一种实现方式中,当块215的一部分被写入时,可以确定包括该部分的子块,并且可以将与那些子块相关联的别名切断。这一切断可以发生在对块216的后续读取之前的任何时刻。当接收到对块216的后续读取时,要读取的数据在别名还没有被切断的情况下从块215中取回并且在别名已经被切断的情况下经由块216取回。

结合切断块216的子块与块215的子块之间的别名并且在将数据重新写入块215的子块中之前,块215的子块中的数据可以得以保存,使得在访问块216的对应子块(或者被取别名到块215的子块的任何其它子块)时可以获得这一数据。保存数据可以包括,例如,将数据复制到分配给块216的位置、将数据复制到新的位置并且更新块216的别名以指向该新的位置、将数据保持在其当前位置并且更新与块215相关联的映射结构以使得对块215的读取获得改变后的数据,等等。这一行为甚至在块215的数据发生改变时也保持可经由块216获得的数据不变。

在一种实现方式中,当块215的一部分被写入时或者当块216的一部分被写入时,别名如前面概述的那样被中断。在另一种实现方式中,别名响应于对块216的写入但不响应于对块215的写入而被中断。在另一种实现方式中,别名响应于对块215的写入但不响应于对块216的尝试写入而被中断。特定系统中所遵循的实现方式可以是可经由硬件或软件配置的、可以是硬接线的或硬编码的等等。

图3是概括地表示按照本文描述的主题的各方面的图2的存储器块的子块之间的别名的各种不同状态的框图。当在块216与块215之间设立了别名时,这可以促使在块216的子块与块215的子块之间设立多个别名。当在这种状态下接收到针对寻址到块216的数据的读取请求时,该读取是由块215中数据来满足的。

块316表示在数据已经被写入到块216之后的块216。特别地,数据已经被写入到子块301-303。结合写入数据以创建块316,用于子块301-303的别名已经被切断。寻址到块316的读取在别名还没有被切断的情况下将从块215取回数据,并且在别名已经被切断(例如,用于子块301-303的别名)的情况下将从块316取得数据。存储器控制器(例如,图4的存储器控制器410)可以包括用于从考虑了存在的任何别名的适当位置取回数据的电路。

图4和6是概括地表示按照本文描述的主题的各方面配置的系统的示范性组件的框图。图4和6中图示的组件是示范性的并且并不意味着全部包括可能需要或包括的组件。此外,组件的数量在其它实施例中可能不同,而不偏离本文描述的主题的各方面的精神或范围。在一些实施例中,结合图4和6描述的组件可以包括在其它组件(示出的或未示出的)中或者被放置在子组件中,而不偏离本文描述的主题的各方面的精神或范围。在一些实施例中,结合图4和6描述的组件和/或功能可以跨多个装置分布。

高速缓存415可以包括高速缓存来自非易失性存储器205的数据的存储器元件。在一种实现方式中,高速缓存可以包括动态RAM(DRAM)、静态RAM(SRAM)或某种其它类型的易失性或非易失性存储器。在一些实现方式中,可以省略高速缓存415。在一些实现方式中,可以有超过一级的高速缓存。

存储器控制器410可以包括用于访问非易失性存储器205上的数据的电路。如本文所使用的访问可以包括读取数据、写入数据、删除数据、更新数据、包括前述两者或更多者的组合等等。在一种实现方式中,存储器控制器410可以仅仅使用高速缓存415来访问非易失性存储器205。换句话说,在这种实现方式中,每当存储器控制器410读或写时,它可以将该读或写发送到高速缓存415。对于读,如果高速缓存具有数据,则高速缓存415可以从该高速缓存415中提供该数据,或者,如果高速缓存没有该数据,则从非易失性存储器205中获得该数据并且然后提供该数据。对于写,高速缓存415可以将所写入的数据存储在高速缓存415上并且可以按照高速缓存策略将高速缓存内容冲刷到非易失性存储器205。

在另一种实现方式中,存储器控制器410还可以充当高速缓存415的控制器并且可以根据情况从高速缓存415或非易失性存储器205获得数据。在这种实现方式中,存储器控制器410还可以促使高速缓存415按照高速缓存策略将数据写入到非易失性存储器205。

存储器控制器410可以包括接口,文件系统驱动程序405通过该接口可以发送请求和接收数据。特别地,这个接口可以允许包括下列在内的通信:

1.创建针对非易失性存储器的别名的请求。在一种实现方式中,存储器控制器410可以被构造成接收对非易失性存储器205的存储器块取别名到非易失性存储器205的另一个存储器块的请求。在接收到该请求后,在一种实现方式中,如果有别名的块跨越两个或更多个子块,则存储器控制器410可以创建多个别名。

在另一种实现方式中,存储器控制器410可以为每个别名请求仅仅创建单个别名。在这种实现方式中,可以期望文件系统驱动程序405来确定对于给定的存储器块需要多少别名以及与存储器控制器410通信来建立别名中的每个。

2.读取存储器块的请求。在一种实现方式中,存储器控制器410可以被构造成接收读取非易失性存储器205的存储器块的请求。如果该块包括有别名的存储器,则存储器控制器410可以确保有别名的数据是从有别名的块(或者其高速缓存的表示)中获得的。如果该块包括未取别名的存储器,则存储器控制器410可以确保有别名的数据是未取别名的块(或者其高速缓存的表示)中获得的。如果被请求的块包括有别名的数据和未取别名的数据,则存储器控制器410可以结合对该请求进行响应而将有别名的数据和未取别名的数据进行组合。

3.对存储器块进行写入的请求。在一种实现方式中,存储器控制器410可以被构造成接收对非易失性存储器205的存储器块进行写入的请求。如果存储器块被取别名,则存储器控制器410可以确保至少在响应于对有别名的块的读取而提供数据之前根据情况中断别名。存储器控制器410可以促使被写入的数据被写入到高速缓存。存储器控制器410可以按照高速缓存策略或者响应于来自文件系统驱动程序405的明确命令而周期性地冲刷来自高速缓存的数据。

4.将非易失性存储器的块复制到非易失性存储器的另一个位置的请求。在一种实现方式中,存储器控制器410可以被构造成接收来自文件系统驱动程序405的复制命令。响应于该复制命令,存储器控制器410可以在逻辑上或物理上将该块复制到非易失性存储器205的另一个位置。在物理上将块复制到另一位置可以牵涉读取该块的数据和将所读取的数据复制到另一位置。在逻辑上复制块可以包括,例如,使数据留在其所在之处,但是改变映射元件以使得在从新的位置请求时该数据被返回。

如果要复制的存储器部分仍然在高速缓存415中并且还没有被冲刷到非易失性存储器205,则这可以用各种不同的方式加以处置。例如,在一种实现方式中,存储器控制器410可以确保在将该数据冲刷或没有冲刷到源块的情况下将高速缓存415中的数据复制到目的地块。

在另一种实现方式中,文件系统驱动程序405可以请求在发出复制命令之前冲刷复制中牵涉的任何脏的高速缓存。

5.在重启时将非易失性存储器205的部分或全部清零的请求。操作系统可以除了使用RAM之外或者代替使用RAM而使用非易失性存储器205的一部分作为主存储器。例如,操作系统可以将代码和数据结构加载到图2的存储器区211中。由于非易失性存储器205在电力缺失时不会丢失数据,因此该代码和数据可以一直保留,即使在重启托管该非易失性存储器205的计算机之后。在重启时存储器区211中有数据可以造成各种问题。

在一种实现方式中,存储器控制器410可以被构造成接收重启时清零的请求。作为响应,存储器控制器410可以存储指示这一请求的数据,并且在重启时,在逻辑上或物理上将所请求的非易失性存储器205部分(例如,存储器区211)清零掉。在逻辑上将所请求的部分清零掉可以牵涉例如标记出所请求的部分已清零并且然后等待在物理上对块清零,直到接收到针对该块的读取或写入请求为止。当文件系统驱动程序405请求了被标记用于清零的块时,只要在重启之后,文件系统驱动程序405就接收到用于清零块的零,可以使用提供这一清零功能的任何实现方式而不偏离本文描述的主题的各方面的精神或范围。

在一种实现方式中,存储器控制器410可以使用硬件并行性来并行地对块的各部分清零。这一硬件并行性可以包括能够同时对多个存储器元件进行清零的一个或多个电路元件。

6.对当前已取别名的块重新取别名的请求。操作系统或使用非易失性存储器205的其它进程有时可能想要将非易失性存储器205中的块移动到非易失性存储器205中的另一个位置。这在被移动的存储器牵涉别名的情况下可能造成问题。例如,参照图5,进程可以请求将存储器块215中的数据移动到块505。存储器块216可以被取别名到指向存储器块215。

如果别名没有被改变到新的块505,则当存储器块215中的数据被改变时,读取存储器块216中的数据可以返回被改变了的数据。这在例如程序期望块216仍然被取别名到未被改变的数据(例如,块505中的数据)的情况下可能造成问题。

为了解决这个和其它问题,存储器控制器410可以被构造成接收对当前已取别名的块重新取别名的请求。例如,在一种实现方式中,存储器控制器410可以被构造成接收将特定范围内的存储器取别名到另一特定范围内的存储器的请求。在这一实现方式中,存储器控制器410可以确定指向第一特定范围的所有别名并且将这些别名重新取别名到指向第二特定范围。

在另一种实现方式中,存储器控制器410可以被构造成接收将特定的别名重新取别名到新的位置的请求。例如,参照图3和4,存储器控制器410可以被构造成接收对针对块215的子块的别名之一重新取别名的请求。在这一实现方式中,当文件系统设法对用于存储器的一部分的一组别名重新取别名时,文件系统驱动程序405可以包括这样的逻辑:结合向存储器控制器410发送对每个别名重新取别名的命令而确定用于该存储器部分的所有别名。

返回图5,当接收并处理了重新取别名请求时,可以用从块216指向块505的别名替换之前从块216指向块215的别名。存储器控制器可以被构造成以“安全”的方式执行重新取别名操作。安全在该上下文中意味着在逻辑上重新取别名操作是在执行在重新取别名请求之后接收到的其它操作之前执行的。在一种实现方式中,只要文件系统驱动程序405不能使用任何一组操作来检测到重新取别名操作不是相对于接收到它时乱序执行的,存储器控制器就可以在物理上执行其它操作。

存储器控制器可以以其它方式实现重新取别名,而不偏离本文描述的主题的各方面的精神或范围。例如,在一种实现方式中,存储器控制器可以被构造成接收移动块命令并且可以在移动块时自动对指向该块的别名重新取别名。

在另一种实现方式中,存储器控制器可以被构造成接收移动块命令并且可以更改内部映射元件以在逻辑上移动该块,而不在物理上将该块复制到另一个位置。在一些实现方式中,以这种方式移动块可以消除执行重新取别名的需要。例如,如果别名指向该块而不管映射信息,则当改变映射信息以移动该块时,别名仍然指向该块。

在另一种实现方式中,存储器控制器可以被构造成接收不是由移动块命令自动触发的重新取别名命令。在这一实现方式中,文件系统驱动程序405除了请求移动块之外,可以根据情况明确地请求重新取别名。

上述示例并非意图全部包括或穷尽可以将存储器控制器构造成实现重新取别名命令的方式。基于本文的教导,本领域技术人员可以认识到可以使用的其它实现方式而不偏离本文描述的主题的各方面的精神或范围。

文件系统驱动程序405可以是给出命令和从存储器控制器410接收响应的软件和/或硬件组件。文件系统驱动程序405可以是文件系统的存储堆栈的一部分并且405可以通过系统总线或其它通信链路与存储器控制器410通信。文件系统驱动程序405可以提供到文件系统的存储堆栈的接口,该接口使得非易失性存储器205看起来像是对于存储堆栈可用的其它存储装置(例如,硬盘、闪速存储器、其它非易失性或易失性存储器等等)一样。

虽然本文的示例中的一些描述了别名以及关于非易失性存储器的其它动作,但是本文的教导也可以应用于其中文件系统区和存储器区是使用其它存储器配置来实现的实现方式中。例如,文件系统区和/或存储器区可以用易失性、非易失性或易失性和非易失性存储器的组合来实现。此外,文件系统区可以被实现在不同于存储器区的存储器类型上。

在这些实现方式中,本发明的教导可以被应用于例如从易失性存储器到易失性存储器的别名、从易失性存储器到非易失性存储器的别名、从非易失性到易失性存储器的别名、具有两种或更多种不同类型的别名(例如,非易失性到非易失性、易失性到非易失性等)的系统等等。此外,诸如图4的存储器控制器410之类的存储器控制器可以提供允许别名被使用、创建、重新取别名等等并且执行本文描述的其它动作而不偏离本文描述的主题的各方面的精神或范围的接口。

转到图6,存储器控制器605被示出为具有接口610和示范性的电路615-618。在一个实施例中,电路可以仅仅包括物理组件,诸如电阻器、晶体管、电容器、电压源、电流源、开关、电感器等等。物理组件中一个或多个可以被集成到一个或多个芯片中。在另一个实施例中,电路可以包括物理组件以及指令,所述指令指示物理组件如何操作。这些指令可以被编码在易失性或非易失性存储器中。

存储器控制器605的电路是示范性的并且并非意味着全部包括可能需要或包括的电路。此外,电路的数量在其它实施例中可能不同,而不偏离本文描述的主题的各方面的精神或范围。在一些实施例中,结合图6描述的电路可以被包括在其它电路中或者被放置在子电路中,而不偏离本文描述的主题的各方面的精神或范围。

接口610可以包括这样的结构:文件系统驱动程序405通过该结构可以与存储器控制器605进行通信。例如,接口610可以允许文件系统驱动程序经由对请求以及对于那些请求的响应进行编码的电子的、光学的或者其它信号来与存储器控制器605进行通信。接口610还可以被构造成允许如结合图4所指示的通信。

例如,接口610可以被构造成接收在存储器的存储系统块与存储器的主存储器块之间创建别名的请求。存储器的存储系统块可以被用于例如保持存储系统数据并且可以对应于例如图2的文件系统区210。主存储器块可以被用于计算机的主存储器并且可以对应于图2的存储器区211。

别名电路615可以被构造成按照文件系统驱动程序的请求而在存储器的存储系统块与存储器的主存储器块之间创建别名。如先前所指示的,在这些存储器块之间创建别名可以包括在这些块的子块之间创建多个别名。别名电路615可以进一步被构造成响应于对子块写入的请求而切断到该子块的别名。在一种实现方式中,别名电路615可以等待直到就在向从子块中读取的请求提供服务之前为止才切断别名。别名电路615还可以被构造成响应于例如移动有别名的块的请求而对有别名的块重新取别名。

复制电路616可以被构造成对将主存储器块复制到新位置的请求作出响应。在一种实现方式中,复制电路616可以通过在物理上将主存储器块中的数据复制到新的位置来作出响应。在另一种实现方式中,复制电路616可以如先前描述的那样通过使数据留在主存储器块中并且更新映射元件来在逻辑上将主存储器块中的数据复制到新的位置。

清零电路618被构造成对将所请求的存储器范围进行清零的请求作出响应。所请求的存储器范围可以包括用于主存储器的存储器的部分或全部。在一种实现方式中,清零电路618可以通过标记所请求的范围被清零来对所请求的存储器范围清零。在一个实施例中,清零电路618可以等待直到存储器控制器605接收到针对所请求范围的部分的读取或写入请求时才在物理上对该部分进行清零。在另一个实施例中,清零电路618可以响应于针对已经被标记为被清零的存储器的读取而在读取高速缓存中置零。在这一实施例中,清零电路618可以不实际将被标记范围在物理上清零,但是针对存储器的读取可以在从读取高速缓存向它提供服务时返回零。在一种实现方式中,清零电路可以等待直到接收到托管主存储器的计算机重启的指示之后才对存储器进行清零(例如,在物理上或逻辑上)。

取回电路617可以被构造成对文件系统驱动程序的读取请求作出响应。在某些别名已经被切断的情况下,取回电路617可以通过这样响应请求:在还未切断别名的情况下从存储系统块的子块中获得第一数据并且在已经切断了别名的情况下从主存储器块的子块中获得第二数据并且然后将第一数据和第二数据进行组合以响应读取请求。

在一个示例中,存储器的主存储器块可以包括存储器页,该存储器页可以被分为子块,其中每个子块对应于高速缓存行。

图7-9是概括地表示按照本文描述的主题的各方面可以发生的示范性动作的流程图。为了解释的简单性,结合图7-9描述的方法被描绘和描述为一系列的动作。应当理解并意识到,本文描述的主题的各方面并不受所图示的动作和/或动作的次序限制。在一个实施例中,这些动作按照下文描述的次序发生。不过,在其它实施例中,动作中的两个或更多个可以是并行地发生或者以另外的次序发生。在其它实施例中,动作中的一个或多个可以与本文未呈现且未描述的其它动作一起发生。此外,可能并不需要所有图示的动作来实现按照本文描述的主题的各方面的方法。此外,本领域技术人员将会理解和意识到,该方法可以可替换地经由状态图被表现为一系列相互关联的状态或者被表示为事件。

图7是概括地表示按照本文描述的主题的各方面的可以结合从存储器控制器的角度创建别名而发生的示范性动作的流程图。在块705处,动作开始。

在块710处,接收到创建别名的请求。例如,参照图6,存储器控制器605可以经由接口610接收对存储器的块取别名的请求。这个请求可以来自于文件系统驱动程序405。该请求可以请求在存储器的存储系统块与存储器的主存储器块之间创建别名。

在块715处,可以创建一个或多个别名。例如,参照图6,别名电路615可以在存储器的两个块之间创建别名和/或可以在存储器的两个块的对应子块之间创建别名。

在块720处,如果有的话,可以执行其它动作。其它动作包括,例如,本文关于存储器控制器描述的动作中的任一个。

图8是概括地表示按照本文描述的主题的各方面的可以结合从存储器控制器的角度获得有别名的块的数据而发生的示范性动作的流程图。在块805处,动作开始。

在块810处,接收到针对有别名的块的读取请求。例如,参照图2和6,存储器控制器605可以接收读取块216中的数据的请求。该请求可以来自于文件系统驱动程序405并且可以经由接口610传送。

响应于该请求,可以从适当的块或子块获得数据。例如,参照图3和6,如果块216和215的子块之间别名没有一个被切断的,那么取回电路617可以从块215获得数据。如果别名已经如图3中所示那样被切断了,那么取回电路617可以在别名还未被切断的情况下从块215的子块中获得数据,并且在别名已经被切断的情况下从子块301、302和303中获得数据。

在块820处,如果需要的话,对数据进行组合。如果子块的别名中的一些但并非全部已经被切断,则可以响应于请求而将来自于包含在不同块中的子块的数据进行组合。例如,参照图3和6,如果块216和215的子块之间的别名没有一个被切断,那么取回电路617可以不必对来自不同的存储器块的子块进行组合;否则,取回电路617可以将来自子块301、302和303的数据与来自别名还没有被切断的情况下块215的子块的数据相组合。

在块825处,响应于请求提供数据。例如,参照图6,存储器控制器605可以经由接口610向文件系统驱动程序405提供数据。

在块830处,如果有的话,可以执行其它动作。

图9是示出按照本文描述的主题的各方面的可以在经由存储器控制器访问存储器的组件上发生的示范性动作的流程图。在块905处,动作开始。

在块910处,发送创建别名的请求。例如,参照图6,文件系统驱动程序405可以发送在存储器的两个块之间创建别名的请求。这个请求可以经由接口610被发送到存储器控制器605。

在块915处,在发送了创建别名的请求之后,可以发送针对有别名数据的请求。例如,参照图2和6,文件系统驱动程序405可以发送寻址到块216的请求。这个请求也可以经由接口610被发送到存储器控制器605。

在块920处,响应于该请求,可以接收数据。例如,参照图2和6,响应于先前发送的请求,文件系统驱动程序405可以接收已经从块215中获得的数据。

在块925处,如果有的话,可以执行其它动作。

如可以从前述具体实施方式看出的,已经描述了与存储系统和别名有关的各方面。虽然本文描述的主题的各方面容易受到各种不同的更改和可替换构造的影响,但是其某些图示的实施例在图中被示出并且前面已经进行了详细描述。不过,应当理解,没有意图将要求保护的主题的各方面限制到所公开的特定形式,而是相反,意图是覆盖落在本文描述的主题的各种不同方面的精神和范围之内的所有更改、可替换构造和等同物。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号