存储器设备及方法与流程

文档序号:11590225阅读:252来源:国知局

本说明书总体涉及存储器系统。



背景技术:

可以使用各种各样的存储器设备来为各种计算机和类似系统维持和存储数据和指令。在传统计算系统中,已经典型地采用动态随机存取存储器(dram)技术来操作计算机的动态存储器以便用于用以高速操作的应用。然而,计算机系统中作为主存储器使用的dram已经不再像过去那样迅速扩展了。因此,dram存储器已经成为计算环境中受限的资源。

为了解决受限的dram,可以使用盘驱动器作为交换空间来将不频繁使用的存储器数据从dram复制出到盘驱动器。所述数据可以在下一次使用的时候被复制回dram。然而,通常,这个过程具有严重的性能后果。因此,在现代服务器中很少使用这个过程。为了解决这些性能后果,可以使用基于nand闪存的固态驱动器(ssd)作为交换空间。然而,即使使用基于nand闪存的ssd也可能对性能具有不被期望的影响。例如,基于闪存的存储器具有某些的限制,包括更慢的数据写时间以及与不得不更新整个扇区(而不是如在针对主存储器整个采用dram的传统系统中更新独立地址)相关联的延迟。



技术实现要素:

在本说明书中描述的本公开主题的一个创新方面被具体体现在一种存储器设备,所述存储器设备包括多个nand闪存芯片、与所述nand闪存芯片数据通信的动态随机存取存储器(dram)部和控制器。所述多个nand闪存芯片中的每个nand闪存芯片包括存储器区段,使得每个存储器区段包括多个页,并且每个nand闪存芯片具有第一存储容量。所述dram部具有第二存储容量,所述第二存储容量至少与所述多个nand闪存芯片中的每个nand闪存芯片的所述第一存储容量一样大。所述控制器被配置为选择所述nand闪存芯片中的一个nand闪存芯片作为当前选择的nand闪存芯片以用于写数据,且将在所述当前选择的nand闪存芯片中的所有有效页复制到所述dram部中。所述控制器也被配置为用于:响应于对逻辑存储器位置的写请求,所述逻辑存储器位置被映射到所述nand闪存芯片中的一个nand闪存芯片中的特定物理位置,分配所述当前选择的nand闪存芯片以用于写到包括所述特定物理位置的特定页。

在某些实施方式中,所述控制器被配置为选择所述多个nand闪存芯片中的另一个nand闪存芯片作为排队的nand闪存芯片以用于在所述当前选择的nand闪存芯片被识别为满之后写数据,以及将在所述排队的nand闪存芯片中的所有有效页复制到所述dram部中。在某些实施方式中,所述控制器被配置为响应于对于访问存储在所述多个nand闪存芯片中的特定页的请求,而将所述特定页从所述多个nand闪存芯片读入到包括dram的主存储器。

在本说明书中描述的本公开主题的一个创新方面被具体体现在一种方法中,所述方法包括以下动作:选择所述nand闪存芯片中的一个nand闪存芯片作为当前选择的nand闪存芯片以用于写数据,每个nand闪存芯片具有第一存储容量且包括存储器区段,且每个存储器区段包括多个页;以及将在所述当前选择的nand闪存芯片中的所有有效页复制到与所述nand闪存芯片数据通信的动态随机存取存储器(dram)部,所述dram部具有第二存储容量,所述第二存储容量至少与所述多个nand闪存芯片的每个nand闪存芯片的所述第一存储容量一样大;以及响应于对映射到逻辑存储器位置的写请求,所述逻辑存储器位置被映射到所述nand闪存芯片中的一个nand闪存芯片中的特定物理位置,分配所述当前选择的nand闪存芯片以用于写到包括所述特定物理位置的特定页。

通常地,在本说明书描述的本公开主题的另一方面可以被具体体现在一种方法中,所述方法包括以下动作:选择所述多个nand闪存芯片中的另一个nand闪存芯片作为排队的nand闪存芯片以用于在所述当前选择的nand闪存芯片被识别为满之后写数据;以及将在所述排队的nand闪存芯片中的所有有效页复制到所述dram部。

在本说明书描述的本公开主题的另一方面可以被具体体现在一种方法中,所述方法包括以下动作:响应于对于访问存储在所述多个nand闪存芯片中的特定页的请求,而将所述特定页从所述多个nand闪存芯片读入到包括dram的主存储器中。

这些方面的其它实施例包括被配置为执行所述方法的动作的对应的系统、装置和被编码在计算机存储设备上的计算机程序。

这些和其他实施方式可以每个可选择地包括下述特性的一个或多个。例如,基于在所述多个nand闪存芯片中具有所述最少数目的有效页,所述多个nand闪存芯片中的所述另一个nand闪存芯片选择为排队的nand闪存芯片。在某些实施方式中,用于向所述当前选择的and闪存芯片写数据的特定物理位置是基于以下中的至少一条来确定的:(i)最少访问页和(ii)近期最少使用页。

在某些实施方式中,所述存储器区段包括相应nand闪存芯片的分区,且分区允许在所述相应nand闪存芯片的第一分区中的写操作期间在相同的所述相应nand闪存芯片的另一分区中的所述读操作。在某些实施方式中,所述存储器区段包括所述相应构成nand闪存芯片。

在某些实施方式中,每个nand闪存芯片包括多个分区,每个分区具有特定的存储容量,且所述dram部的所述第二存储容量与每个分区的所述特定存储容量至少一样大。在某些实施方式中,每个nand闪存芯片包括多个分区,每个分区具有特定存储容量,且所述dram部的所述第二存储容量或者与每个分区的所述特定存储容量的大小大致相等,或者是每个分区的所述特定存储容量的大小的大约两倍。

在某些实施方式中,所述多个nand闪存芯片是耦合到输入/输出(i/o)总线的模块的部分,且所述模块进一步包括dram部,其中,所述dram部的所述第二存储容量大约是每个nand闪存芯片的所述第一存储容量的大小的两倍。在某些实施方式中,所述多个nand闪存芯片被耦合到输入/输出(i/o)总线,且其中,所述dram部是包括dram的主存储器的部分。在某些实施方式中,所述多个nand闪存芯片和所述dram部是模块的部分,且所述dram的所述第二存储容量至少与每个nand闪存芯片的所述第一存储容量的两倍一样大。

在下文的附图描述和实施方式中阐述本发明的一个或多个实施例的细节。本发明的其他特性和优点将从描述、附图、和权利要求中显而易见。

附图说明

图1描述包括根据本公开的实施方式的存储器设备的系统的示例。

图2a描述包括根据本公开的实施方式的存储器设备的系统的示例。

图2b描述包括根据本公开的实施方式的存储器设备的系统的示例。

图2c描述包括根据本公开的实施方式的存储器设备的系统的示例。

图3描述根据本公开的实施方式的nand闪存模块的示例。

图4描述根据本公开的实施方式的方法的示例流程图。

在各种附图中,相似的附图标记和标号指示相似的元件。

具体实施方式

下文描述的存储器系统包括与dram部数据通信的nand闪存芯片。每个nand闪存芯片定义具有多个页的存储器区段,且每个nand闪存芯片具有第一存储容量。dram部与nand闪存芯片数据通信。dram部具有第二存储容量,所述第二存储容量至少与每个所述nand闪存芯片的第一存储容量一样大。

所述存储器系统也包括控制器,所述控制器被配置为选择nand闪存芯片中的一个nand闪存芯片作为当前选择的nand闪存芯片以用于写数据,且随后将在当前选择的nand闪存芯片中的所有有效页复制到所述dram部中。

响应于对映射到在nand闪存芯片中的一个nand闪存芯片中的特定物理位置的逻辑存储器位置的写请求,控制器分配当前选择的nand闪存芯片以用于写到包括所述特定物理位置的特定页。

在某些实施方式中,可以基于某些度量选择将从主存储器(例如,dram)移除且被写到nand闪存芯片的页,所述度量诸如最少访问页、近期最少使用页等、或其的任意组合。

这些存储器系统可以被包括在单个封装的设备中,或可以在计算机设备中分布。图1-图2c是可以如何以不同的变体实现所述存储器系统的示例图示。

图1描述包括根据本公开的实施方式的存储器设备的系统100的示例。系统100可以包括处理器(诸如中央处理单元(cpu)110)、dram部120、输入/输出(i/o)总线130、盘驱动器140(诸如硬盘驱动器(hdd))、nand闪速存储器部150。i/o总线130可以是用于输入和输出设备与cpu100通信的路径。i/o总线可以是例如高速外围组件互连(pcie)。盘驱动器140可以被用于数据的长期存储。

系统100可以在电子设备(诸如,计算设备)中实现。dram部120可以是主存储器,且可以被cpu100直接访问。主存储器可以是使用例如承载期望位置的存储器地址的地址总线和用于读或写数据的数据总线而连接到处理器(例如,cpu100)的主要存储。

当使用闪存存储器作为交换空间设备时,写到闪存存储器要求擦除操作后跟随程序操作。典型地,这些操作比读操作慢很多,且当这些操作发生时,读操作被阻塞。这样,读的平均和尾延迟可能不利地增加。

为了解决在上述段落中的问题,在任意给定的时间,可以选择一个nand闪存芯片用于写入。在所选择的nand闪存芯片中的所有有效页可以被读入dram部中,使得没有必要从该nand闪存芯片中读出。而是,读可以从dram部发生,所选择的nand闪存芯片中的有效页已经被读入该dram部。可以对所选择的nand闪存芯片进行所有新的写。

另外,在一些实施方式中,可以排队用于下一个写的另一个nand闪存芯片。在其中选择第二nand闪存芯片作为排队的nand闪存芯片的情况中,可以将在所选择的nand闪存芯片和排队的nand闪存芯片两者中的所有有效页读入dram部中,使得没有必要从这两个nand闪存芯片中读取。所有新的写应对第一所选择的nand闪存芯片进行。当第一nand闪存芯片满时,后续的写可以对排队的nand闪存芯片进行,所述排队的nand闪存芯片随后可以成为用于写的当前nand闪存芯片。可以选择新的nand闪存芯片作为下一个排队的芯片,且在该下一个排队的nand闪存芯片中的所有有效页可以被读入dram部中。

如有必要,可以将来自不再被写入的、第一选择的nand闪存芯片的页从dram中逐出。例如,每个页可以或者被丢弃(如果其不是脏的),或被回写到闪存存储器。

当nand闪存芯片被选择用于排队为成为下一个、排队的nand闪存芯片时,该选择可以基于在有资格被选择的多个nand闪存芯片中具有最少数目的有效页的nand闪存芯片。有时,由于损耗均衡的原因,可以基于损耗均衡策略或流程作出不同的选择。用于损耗均衡的这样的技术在本领域已知,且包括例如动态损耗均衡和静态损耗均衡的技术。

如前述,系统可以具有与nand闪存存储器分离的主存储器(例如,dram),其中nand闪存存储器连接到i/o总线,且dram未直接连接到i/o总线,而nand闪存存储器与dram数据通信。然而,在某些实施方式中,nand闪存存储器和充当高速缓存的dram部两者均可以通过与主存储器dram分离的i/o总线连接。例如,在图2a中,与连接到i/o总线的nand闪存存储器一起描述了dram高速缓存。

图2a描述包括根据本公开的实施方式的存储器设备的系统示例。如图2a中所描述的,本公开的存储器设备可以是与标准dram双列直插式存储器模块(dimm)可以被使用的方式类似地插入服务器的dimm。然而,本公开的dimm可以包括第一量的dram255和第二、更大量的nand闪存存储器250。示例系统可以具有32gb的dram和128gb的可用nand闪存存储器。

与关于图1的上述描述相似,在图2a中描述的系统200也可以包括处理器(诸如中央处理单元(cpu)210)、dram220、输入/输出(i/o)总线230、盘驱动器240(诸如硬盘驱动器(hdd))。存储器设备可以包括nand闪存存储器250和dram部255。

dimm也可以具有被配置为控制dram部255和nand闪存存储器250两者的控制器。如此处描述,dimm和控制器可以被配置为使用nand闪存存储器250作为交换空间。dram部255可以具有与高速缓存当前被写的nand闪存芯片所需要的量大体相等的存储容量。替选地,dram部255可以具有与高速缓存当前被写入的nand闪存芯片和下一个被写的排队的nand闪存芯片所需要的量大体相等的存储容量。可以使用dram220来在例如当页被请求时,存储从nand闪存存储器250读入的页。典型的页大小可以是例如4kb。

在上述具有32gb的dram和128gb的可用nand闪存存储器的系统示例中,该系统可以按照与具有128gb的dram的系统相似的方式执行,即使实际dram只有32gb。通过以此处描述的方式使用128gb的闪存存储器来创造这种性能。

虚拟存储器(vm)系统或管理者可以控制程序存储器怎样被根据操作系统执行的一个或多个程序利用。通常,当从主存储器提取数据时,关于是否检测到读或者写访问作出确定。这样的确定可以被页故障机制或其他事件触发。当页被第一次访问时,可以将该页从闪速存储器复制到dram。当这个发生时,vm系统可以采取页故障。可以随后从该dram副本提供对该页的读和写。当需要将不同的页移入dram时,可以简单地丢弃当前页(如果不脏),或将当前页回写到闪存存储器。例如,当主存储器满且需要引入来自闪速存储器的新的页时,可以基于替代算法选择页并且丢弃页或如果页脏(也即,在主存储器期间被修改)则将页推回闪存。

当需要分配任何新的存储器时,应从闪速存储器中分派。根据高速缓存策略,其可以或可以不在dram中被高速缓存。可以使用各种这样的高速缓存策略,诸如最少访问页、近期最少使用的页等、或其任意组合。可以由vm系统管理高速缓存,vm系统可以在页单元中操作。

使用闪速存储器可能需要“写时拷贝(copyonwrite)”,也即,逻辑地址每次被写时,数据将位于新的物理地址。这需要已知的映射表。然而,本公开的实施方式可以依赖虚拟存储器页表来完成这个映射。

如上文关于图2a而描述的,系统可以具有与nand闪存芯片集成在相同封装中的dram高速缓存。然而,所有的存储器组件被包括在同一个封装中并不必要。例如,在图2b中,dram高速缓存被描述为与nand闪存芯片分离,但依然与nand闪存芯片数据通信。

具体地,图2b描述包括根据本公开的实施方式的存储器设备的系统示例。在图2b中描述的系统200可以包括处理器(诸如中央处理单元(cpu)210)、dram220、dram部225、输入/输出(i/o)总线230、盘驱动器240(诸如硬盘驱动器(hdd))、和nand闪速存储器250。

如图2b中所描述的,nand闪速存储器250在i/o总线230上,而dram部225可以从主存储器dram220被分派以作为针对当前正被写的nand闪存芯片的高速缓存被利用。在某些实施方式中,dram部225可以被按需动态分派。进一步,dram部225可以从主存储器dram220被分派,以作为针对当前正被写的nand闪存芯片和下一个被写的排队的nand闪存芯片的高速缓存被利用。可以使用dram220以在例如所述页被请求时,存储从nand闪速存储器250读入的页。

如前文关于图2b描述的,系统可以使dram高速缓存从主存储器dram被分派,nand闪速存储器分离地连接到i/o总线。然而,在某些实施方式中,可以与主存储器dram分离地使用包括nand闪速存储器和dram两者的混合dimm。例如,在图2c中,将dimm描述为具有nand闪速存储器和dram,其中dram的一部分可以被分派作为dram部以作为高速缓存来利用。

图2c描述包括根据本公开的实施方式的存储器设备的系统示例。在图2c中描述的系统200可以包括处理器(诸如中央处理单元(cpu)210)、dram220、输入/输出(i/o)总线230、盘驱动器240(诸如硬盘驱动器(hhd))。可以与包括dram220的主存储器dimm一起,在存储器总线上安装包括nand闪速存储器250和dram部270两者的dimm280。

dimm280可以包括控制器260,控制器260被配置为控制dram部270和nand闪速存储器250两者。dram部270可以使其存储容量的仅仅部分被用作针对当前被写的nand闪存芯片的高速缓存。这样,未被用作针对当前正被写的nand闪存芯片的高速缓存的dram部270的部分可以被用作标准dram。例如,未被用作高速缓存的dram部270的该部分可以存储已从nand闪速存储器250交换空间读入的页。

在某些实施方式中,dram部270可以仅使其存储容量的一部分被用作针对当前正在被写的nand闪存芯片和针对下一个要被写的排队的nand闪存芯片的高速缓存。这样,如前述,未被用作针对当前正被写的nand闪存芯片和针对下一个要被写的排队的nand闪存芯片的高速缓存的dram部270的部分可以被用作标准dram。

上述关于图1-图2c引用的nand闪速存储器可以包括若干nand闪存芯片。例如,在图3中,nand闪速存储器被描述为包括若干nand闪存芯片的存储器模块,其中该模块被连接到i/o总线。

图3描述根据本公开的实施方式的nand闪速模块的示例。nand闪速存储器部150/250可以包括控制器160和nand闪存芯片170a-170n集合。nand闪速存储器部150/250可以与dram部120数据通信。可以使用任意数目n的任意大小的nand闪存芯片以实现nand闪速存储器部150/250的期望存储容量。为该nand闪速存储器部150/250创建期望的存储空间,可能需要一些过度配置。例如,在特定的nand闪速存储器部150/250中,每个nand闪存芯片可以是4gb。这样,如果对nand闪速存储器部150/250而言128gb的存储空间是所期望的,则对128gb而言将需要三十二个这样的4gbnand闪存芯片。假设例如百分之二十五过度配置,则可以提供总共四十个nand闪存芯片。这确保例如当使用所有的128gb存储器时,每个nand闪存芯片平均将被80%占用,以其他方式则更少。

n个nand闪存芯片170a-170n中的每个可以包括一个或多个存储区区段。换言之,存储器区段可以是相应构成nand闪存芯片或每个nand闪存芯片可以包括一个或多个分区作为存储器区段。在nand闪存芯片包括分区的情况中,如果在一个分区中写操作正在进行,该写操作不阻止对相同nand闪存芯片的其他分区上的读操作。换言之,分区在相应的nand闪存芯片的第一分区中的写操作期间,允许所述相应的nand闪存芯片的另一分区中的读操作。

在某些实施方式中,每个nand闪存芯片包括多个分区,每个分区具有特定的存储容量。在这样的实施方式中,dram部的存储容量(例如,第二存储容量)可以至少与每个分区的特定存储容量一样大,但是小于该构成nand闪存芯片的存储容量。具体地,在某些实施方式中,dram部的第二存储容量或者与每个分区的特定存储容量的大小大体相等,或者是每个分区的特定存储容量的大小的大约两倍。

在nand闪存芯片包括分区的情况中,与nand闪存芯片不包括分区相比,对于作为高速缓存的dram部可能需要较小量的dram。例如,如果每个nand闪存芯片是16gb,且被分割成每个4gb的四个分区,作为用于nand闪速存储器的高速缓存的dram部可以具有与一个分区的大小大体相等的4gb的存储容量,或与两个分区的大小大体相等的8gb的存储容量。相反地,在没有分区的情况下,dram部可以具有与一个nand闪存芯片的大小大体相等的16gb,或与两个nand闪存芯片的大小大体相等的32gb。

图4描述用于根据本公开的实施方式的方法400的示例流程图。为了将闪速存储器实现为交换空间,可以按照下述过程400发生以裸片级写到闪速存储器。在410,可以选择组成该nand闪速存储器的nand闪存芯片中的一个作为用于写数据的当前选择的nand闪存芯片。如前述,每个nand闪存芯片可以具有特定的存储容量,且可以具有包括一个或多个页的存储器区段。例如,页大小可以是4kb。替选地,页大小可以超过4kb,例如4kb的任意倍数,例如8kb、256kb、2mb。

在某些实施方式中,在420,可以选择组成nand闪速存储器的nand闪存芯片的另一个作为用于在当前选择的nand闪存芯片被识别为满之后写数据的排队的nand闪存芯片。在某些实施方式中,可以不使用排队的nand闪存芯片,且该过程可以不包括420。在选择排队的nand闪存芯片的情况中,在430,在当前选择的nand闪存芯片和排队的nand闪存芯片中的所有有效页被复制到与nand闪存芯片数据通信的dram部中。在不使用排队的nand闪存芯片的情况中,在430,当前选择的nand闪存芯片中所有的有效页被复制到与nand闪存芯片数据通信的dram部中。如前述,dram部可以具有至少与每个nand闪存芯片的存储容量一样大的存储容量。

响应于在440对映射到nand闪存芯片的一个nand闪存芯片中的特定物理位置的逻辑存储器位置的写请求,在450,分配当前选中的nand闪存芯片以用于写到包括该特定物理位置的特定页。这样,对在当前选择的nand闪存芯片和排队的nand闪存芯片中存储的页的读和写可以从dram副本中被提供,使得不需发生从当前选择的nand闪存芯片和排队的nand闪存芯片中读取。而是,所有的新写需要去往当前选择的nand闪存芯片,例如直到其满。后续的写可以去往排队的nand闪存芯片,排队的nand闪存芯片变成所述用于写的nand闪存芯片,且可以选择新的nand闪存芯片作为排队的nand闪存芯片。过程重复,在新的排队的nand闪存芯片中的所有有效页被读入dram。进一步,如果必要,来自第一当前选择的nand闪存芯片的、已经不再被写入的页可以从dram中逐出。

尽管本公开的实施方式的描述已包括单个控制器和单个装配,某些实施方式可以包括两个分离的控制器和装配。例如,具有一个控制器的一个装配可以包括闪速存储器,且具有控制器的另一个装配可以包括dram。进一步,某些实施方式可以针对dram高速缓存部分使用现有系统dram。

根据本公开的实施方式,可以被设计为具有更快访问时间的nand闪存芯片可以提供甚至更好的性能。例如,通过改变nand闪存芯片本身的电路设计,访问时间可以被提升到10毫秒或更少。进一步,nand闪存芯片可以被设计为具有更宽和更快的接口,这允许根据本公开的实施方式的页转移更快地被完成。

已描述一些实施方式。然而,将理解在不背离本公开的精神和范围的情况下可以做出各种修改。例如,可以使用上文示出的流程的各种形式,其中步骤被重新排序、添加、或移除。

可以在数字电子电路、或在计算机软件、固件、或硬件、包括在本说明书中公开的结构及其结构等价物、或其一个或多个的组合中实现本说明书中描述的本发明的实施方式和所有的功能操作。本发明的实施方式可以被实现为一个或多个计算机程序产品,也即,在计算机可读介质上编码的一个或多个计算机程序指令的模块,以由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、影响机器可读传播信号的物体组合、或它们的一个或多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,通过示例的方式包括可编程处理器、计算机、或多个处理器或计算机。所述装置除硬件之外可以包括为在讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或它们的一个或多个的组合的代码。传播信号是人为生成的信号,例如机器生成的电、光或电磁信号,其为了编码用于传输到合适的接收器装置的信息而被生成。

尽管本公开包括很多特性,这些不应被解释为对本发明或权利要求的范围的限制,而应被解释为对本发明的特定实施方式特有的特性的描述。在本说明书中,在分离的实施方式的场境下描述的某些特性也可以被实现在单个实施方式的组合中。相反地,在单个实施方式的场境下被描述的各种特性也可以分离地被实现在多个实施方式中,或以任意合适的子组合被实现。另外,尽管前文可以将特性描述为在某些组合中行动且甚至初始地被这样要求,来自要求保护的组合的一个或多个特性在一些情况中可以从这些组合中被切除,且要求保护的组合可以被指向子组合或子组合的变体。

相似地,尽管在附图中以特定次序描述操作,这不应被理解为以达到期望的结果,要求这样的操作以示出的特定次序或以顺序次序执行,或应执行所有示出的操作。在某些情况中,多任务和并行处理可能有利。另外,在上述实施方式中各种系统组件的分离不应被理解为在所有实施方式中需要这样的分离,且应理解描述的程序组件和系统通常可以在单个软件产品中被集成在一起或被封装进多个软件产品。

这样,已描述本公开的特定实施方式。其他实施方式在下述权利要求的范围内。例如,在权利要求中记载的动作可以以不同的次序执行,且依然实现期望的结果。已经描述若干实施方式。然而,将理解在不背离本公开的精神和范围的情况下,可以做出各种修改。例如,使用上文示出的流程的各种形式,其中步骤被重新排序、添加、或移除。因此,其他实施方式在下述权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1