acm-header
登录

ACM通信

研究突出了

将Nand闪存设备集成到服务器上


图最大可容忍的闪存写/擦除周期

Flash是一种广泛应用于智能手机、数码相机、MP3等便携式移动设备的存储设备。它提供高密度和低功耗,这些特性对其他计算领域很有吸引力。在本文中,我们研究了它在服务器领域的应用。磨损有可能限制Flash在这个领域的使用。要认真考虑Flash在服务器领域的应用,必须有架构支持来解决可靠性的不足。本文首先对数据中心中当前和潜在的Flash使用模型进行了调查。然后,我们提倡使用Flash作为扩展的系统内存使用modelOS托管磁盘缓存,并描述必要的架构更改。具体来说,我们提出了两个关键的改变。第一种方法通过将基于闪存的磁盘缓存拆分为独立的读和写区域来提高性能和可靠性。第二种通过采用可编程的闪存控制器来提高可靠性。 It changes the error code strength (number of correctable bits) and the number of bits that a memory cell can store (cell density) in response to the demands of the application.

回到顶部

1.简介

数据中心是当今计算平台不可分割的一部分。由于云计算倡议提供了将软件作为服务的IT能力,它需要像谷歌和雅虎这样的互联网服务提供商建立大型数据中心,托管数百万台服务器。能源效率成为解决数据中心运营成本上升的一流公民。基于现成通用处理器的数据中心不必要地耗电,需要昂贵的冷却系统,并且占用很大的空间。事实上,电力和冷却这些数据中心的成本占运营成本的很大一部分。图1分解数据中心的年度运营成本。这清楚地表明,电力和冷却服务器的成本对数据中心的整体运营成本的贡献越来越大。

系统内存功率(DRAM功率)和磁盘功率对数据中心的总体功耗贡献高达50%。此外,目前的趋势表明,随着我们集成更多的内存模块(DRAM)和磁盘驱动器以提高吞吐量,这一百分比将继续快速增长。

幸运的是,有一些新兴的存储设备可以解决这个问题。这些设备通常显示高密度,消耗低空闲功率。例如闪存,相变存储器(PCRAM)和磁存储器(MRAM)。

特别是,Flash是一项吸引人的技术,已经大量应用于各种计算平台。今天,NAND Flash可以在智能手机、数码相机和MP3播放器等手持设备中找到。这之所以成为可能,是因为它的高密度和低功率特性。这是由于Flash单元的简单结构和它的不挥发性。它的流行意味着它是积极的工艺扩展和创新的焦点。

密度的快速提高已经成为Flash在其他使用模式中的主要驱动力。目前,工业界和学术界正在研究数据中心的几种Flash使用模式,以解决不断上升的电力和冷却成本等问题。两种常见的使用模式是磁盘缓存或存储设备。一些努力促成了产品开发,819而其他人已经影响了存储和存储设备标准。1618

本文概述了将Flash集成到服务器上的好处。具体而言,在本文中:

  1. 我们提供了当前和潜在的Flash服务器使用模型的分析。
  2. 我们认为扩展系统内存模型10是当系统内存功率的贡献超过磁盘功率的贡献时,降低数据中心能源的最佳使用模式。
  3. 我们将回顾两种改进基于nand的磁盘缓存的架构修改。11首先,我们展示了通过将基于闪存的磁盘缓存拆分为读和写区域,可以提高整体性能和可靠性。其次,我们展示了一个可编程的闪存控制器可以提高闪存单元的可靠性和延长存储器的寿命。第一个可编程参数是纠错码(ECC)强度。二是Flash细胞密度由多水平细胞(MLC)向单水平细胞(SLC)的变化。

回到顶部

2.背景

*2.1.NAND Flash设备属性

闪存是一种非易失性存储设备,可以用电读、写和擦除。NAND闪存中的闪存单元是串联的,以最大限度地提高单元密度。此外,为了提高闪存密度,每个闪存单元可以使用多个阈值电压水平来存储每个单元的一个以上位。支持MLC的NAND Flash称为MLC NAND Flash。使用单一阈值电压电平(技术上是两个电平)的NAND Flash被称为SLC NAND Flash。尖端MLC NAND闪存支持每个单元4位。这两种类型的访问时间和生存期有显著差异。虽然与SLC相比,MLC Flash成本更低,位密度更高,但MLC读写速度更慢,寿命更短,是SLC的10倍或更多。对于SLC,读、写和擦除的典型延迟为25秒、250秒和0.5毫秒,对于2位MLC,则为50秒、900秒和3.5毫秒。随着每个Flash单元的比特数的增加,性能和生存期之间的差距越来越大。 This may be perfectly acceptable for some applications; for example, a tune in an MP3 player may only be replaced every few days. A disk cache, however, may have all of its locations rewritten several times a day depending on the amount of disk traffic and size of the cache.

NAND Flash的组织单位为页面而且.一个典型的闪页面是2KB大小和一个Flash是由64个Flash页面(128 kb)。随机的Flash读和写是在一个页面基础和Flash擦除执行每个.Flash必须对A执行擦除操作才可以写入到页面属于,.每次附加写操作之前必须有一个擦除操作。因此环境格格不入写入通常用于减轻损耗。这些写操作将新数据附加到日志末尾,而旧数据页将失效。

NAND Flash还可以动态配置,为每个页面或块支持多种Flash内存单元类型。事实上,这样的设备现在已经可以在市场上买到,比如三星的Flex-OneNAND。6图2 (a)说明了SLC/MLC双模器件的组织。SLC模式下的页面由2048字节的数据区和64字节的ECC位“备用”数据组成。在MLC模式下,一个SLC页面可以被分割成两个2048字节的MLC页面。以64个SLC页面或128个MLC页面为块一起擦除。

当每个块的故障比特数超过ECC的处理能力时,会关闭块,导致内存容量减少。这是一个随时间推移影响系统性能的损耗实例,对于文件缓存应用程序尤其如此。

MLC Flash的老化速度比SLC Flash快。MLC Flash可以支持更少的可靠的写/擦除(W/E)周期,因为比特值之间的阈值电压间隙更小。新的Flash架构6可以通过从高密度MLC切换到低密度甚至单电平模式来解决这个问题。目前不存在执行模式选择的策略,因此我们提出了一种针对磁盘缓存应用程序修改模式的机制。

因为Flash块在出现故障位之前有有限的擦除次数,所以a平均读写算法试图均衡每个块上执行的擦除次数。3.这必须在不执行不必要的擦除操作的情况下实现。最简单的磨平方法是将设备视为循环日志。新数据被写入下一个可用的页面,而旧的页面将失效。然而,消耗均衡会导致碎片问题。碎片通过垃圾收集来解决。垃圾收集过程从包含无效页的擦除块中读取有效页,然后将它们写入之前擦除的块中。4垃圾收集释放准备写入新数据的页。这个过程需要时间,并增加了磨损量的Flash块。

随着Flash上可用的空闲空间越来越少,垃圾收集中的开销也随之增加。这就成了一个严重的问题,因为垃圾收集会在Flash中产生额外的写和擦除操作,随着Flash占用的增加,性能和持久性会降低。图2 (b)显示了随着使用更多的Flash空间,垃圾收集所花费的时间如何增加。它的常规开销为10%,用于2GB闪存。可以看到,在使用所有内存之前,垃圾收集就变得难以承受。

*2.2.服务器使用NAND Flash的模型

工业界和学术界的研究人员正在努力将Flash集成到数据中心上。工业界最近发布了一些基于Flash的产品和针对服务器的Flash标准,而学术界的研究人员最近发表了几篇论文,提出了集成新兴存储技术(包括Flash)的技术。

业界和学术界所追求的NAND Flash使用模式可分为以下几种:

  1. 扩展的系统内存使用模式:NAND Flash模块连接到当前的系统内存接口或专用的Flash接口。
  2. 存储加速器使用模式:NAND Flash PCI express卡与PCI express接口相连。
  3. 替代存储设备使用模式:SSD (Solid State Drive)是对硬盘驱动器的替代或扩充。连接到硬盘接口。一个例子就是SATA SSD。

每种使用模式都有其独特的优点和挑战。表1定性捕获它们。“扩展系统内存”使用模型将Flash作为系统内存的一部分。除了限制集成更多系统内存的电气约束外,它还解决了DRAM所消耗的不断上升的功率贡献。例如,增加存储容量而不需要降低内存通道MetaRAM的工作频率14在每个内存模块上安装更多的DRAM。使用密度较大的存储器(如Flash)也可以达到类似的目的。但是,这种使用模型需要修改操作系统内核。具体来说,当前内核内存管理器中支持非统一内存架构的实现需要了解Flash的独特组织和行为。在Flash控制器的辅助下,内核内存管理器可以进行Flash可靠性管理。

“存储加速器”的使用模式将Flash呈现为一种可以由用户应用程序直接管理的PCI express设备。这种使用模型允许服务器应用程序将Flash直接管理为存储频繁访问的代码和数据的缓存。它减少了对硬盘驱动器的访问次数,从而降低了总体磁盘功率。此外,它还可以作为一种实现“扩展系统内存”使用模型的方法,但也有一些缺点,比如延迟更高,吞吐量更低,管理Flash时增加了复杂性。Flash管理分布在用户应用程序、设备驱动程序堆栈和Flash PCI快速卡固件。要真正地利用Flash作为“存储加速器”,用户应用程序应该了解Flash。为了支持PCI express设备,需要实现一个设备驱动程序栈。设备驱动程序堆栈需要实现设备共享机制,以便其他并发用户应用程序和内核组件可以同时使用它。在Fusion-io的固态存储中7他们还展示了“存储加速器”使用模型可以通过在设备驱动程序堆栈中提供磁盘仿真功能,将Flash PCI express设备暴露为SSD。

“替代存储设备”使用模型将Flash呈现为SSD,取代硬盘驱动器。15这种使用模型提高了磁盘的延迟和吞吐量,并降低了数据中心的总体磁盘功耗。使用合适的文件系统,如ZFS,19提高数据中心存储设备的可扩展性。业界已经大量采用了这种使用模式,并且最近发布了几款产品。89这些固态硬盘用于在数据中心中实现存储区域网络(SAN)或网络附属存储(NAS)。它们采用类似的可靠性特性,例如RAID,通常在基于SAN或NAS的硬盘驱动器中发现。Flash可靠性管理由SAN或NAS中的Flash设备控制器进行。然而,这种使用模式还需要在内核中进行修改,并需要一个复杂的Flash设备控制器,能够执行智能Flash可靠性管理。需要实现一个定制的文件系统来充分利用Flash的优势。1219此外,这种使用模型将自己与硬盘驱动器接口协议(如SATA)中发现的非flash感知特性绑定在一起。例如,设备驱动程序只能使用没有在Flash中定义的SATA命令与磁盘通信。另一方面,“扩展主存”模型中的操作系统具有内存页面分类和活动统计的完全可见性,可以用于更智能地将数据映射到Flash中。

服务器显然从这三种使用模式中受益,它们本质上集成了Flash作为更快的硬盘或磁盘缓存。所有使用模式都有助于(1)减少硬盘驱动器的不必要备用电源,(2)通过从硬盘缓存而不是硬盘驱动器进行读写,提高整体吞吐量。

在本文的其余部分中,我们将研究基于闪存的磁盘缓存架构,这些架构在扩展的系统内存使用模型中提高了闪存的可管理性和可靠性。我们相信这种使用模式对于解决系统内存中不断增加的功耗是有效的。我们对服务器的研究表明,系统内存架构是在数据中心中交付高吞吐量的关键组件。10

回到顶部

3.建议的体系结构

*3.1.基于闪存的磁盘缓存架构

右侧图3展示了扩展系统内存使用模型的基于闪存的磁盘缓存架构。与左侧所示的传统的仅供dram的架构相比图3,我们提出的架构使用了一个两级磁盘缓存,由一个相对较小的DRAM组成,放在一个密集的闪存前面。更低的存取时间允许它作为闪存的缓存,而不显著增加功耗。可靠性管理还需要Flash memory控制器。

我们的设计使用了一个存储每个单元2比特(MLC)的NAND Flash,并能够使用Flex-OneNAND中提出的技术从MLC切换到SLC模式6和赵。5最后,我们的设计使用可变强度的ECC来提高可靠性,同时添加最小的可能的延迟。

操作系统支持:我们提出的架构需要额外的数据结构来管理Flash块和页面。这些表从硬盘驱动器中读取,并在运行时存储在DRAM中,以减少访问延迟并减轻损耗。它们一起描述页面是存在于DRAM中还是Flash中,并指定各种Flash内存配置选项以提高可靠性。例如,FlashCache哈希表允许操作系统快速查找文件页面的位置。Flash页面状态表跟踪ECC强度,MLC/SLC模式和每个页面的访问频率。每个Erase块在块状态表中都有一个条目来确定它的磨损程度。最后,全局状态表记录基于闪存的磁盘缓存满足请求的速度,以及系统运行时我们试图最大化的数量。

这四个表的存储开销小于Flash大小的2%。FlashCache哈希表和Flash页面状态表是主要的贡献者,因为每个Flash页面都需要一个条目。我们的基于闪存的磁盘缓存是使用上述表在软件(操作系统代码)中管理的。我们发现执行这段代码的性能开销很小。

将Flash分为读区和写区:我们把Flash分为读磁盘缓存和写磁盘缓存。读缓存不太容易受到影响环境格格不入写,这会降低读缓存容量,增加垃圾收集的风险。一个环境格格不入write发生在现有数据被修改时,因为Flash必须在第二次写入之前被擦除。很容易使旧数据页失效(使用页面状态表和修改哈希表),然后将新数据写入之前擦除的页面。但是,无效页面会累积为浪费的空间,以后必须对其进行垃圾收集。通过将Flash分割为读和写区域,我们能够减少垃圾收集的时间消耗。

图4展示了一个示例,该示例突出了将基于闪存的磁盘缓存分割为读写缓存的好处。左边展示了统一的基于flash的磁盘缓存的行为,右边展示了将基于flash的磁盘缓存拆分为读写缓存的行为。图4假设每个块有5个页面,基于闪存的磁盘缓存中总共有5个块。垃圾收集从包含无效页的块中读取所有有效数据,擦除这些块,然后依次重写有效数据。在本例中,当基于闪存的磁盘缓存被分割为读写缓存时,只有两个块是垃圾收集的候选块。与考虑所有5个Flash块的统一闪存磁盘缓存相比,这大大减少了Flash的读、写和擦除操作。我们的研究还表明,通过分割Flash,在线事务处理(OLTP)应用程序的总体磁盘缓存失误率大大降低。

*3.2.Flash memory控制器结构

当用作缓存时,Flash需要架构支持来提高可靠性和生命周期。图6展示了解决这一需求的可编程闪存控制器的高级框图。来自操作系统的请求提供了要访问的地址和任何要写入的数据。另外,OS还会指定ECC的强度,以及页面是MLC模式还是SLC模式。控制器返回任何读取的数据,以及有关ECC逻辑当前正在纠正的错误数量的信息。

我们的体系结构使用BCH编码器和解码器进行错误纠正,并使用CRC检查器进行错误检测。BCH代码保证许多错误的位可以被纠正。然而,由于错误位的数量增加,需要更长的时间来执行纠正。将可校正比特数翻倍,则解码数据和提取正确值所需的时间大约翻倍。我们的系统将ECC强度调整到每个页面中适当数量的故障位,以实现优雅的Flash损耗。可纠正位数和擦除计数之间的关系显示在图5.结果表明,更强的ECC可以有效地提高页面生存期。图上的不同线条显示了不同程度的可变性对比特出错可能性的影响。随着标准偏差的增加,对于任何特定的错误纠正强度,容忍擦除的数量减少。这表明,工艺可变性对生命周期有负面影响,需要在相同的生命周期内校正更多的比特。随着工艺技术的进步和细胞变得更小,可变性的影响将变得更加明显。

我们的可编程闪存控制器还可以动态地控制Flash页面的密度。密度控制有利于Flash的性能和持久性,因为我们能够减少频繁访问页面的访问延迟,并可能通过根据需要将MLC页面更改为SLC页面来提高老化Flash页面的持久性。为了展示通过控制密度对闪存性能的潜在改善,我们提出了一项使用真实磁盘轨迹的研究。

使用来自马萨诸塞大学跟踪库的磁盘活动跟踪20.对于金融和web搜索应用程序,我们分析了不同SLC/MLC分区、不同Flash大小的平均访问延迟。

SLC和MLC Flash的混合分配提供了最小的访问延迟,因为有时将大量使用的数据存储在更快的SLC页面中并损失一页存储空间更有效。图7显示平均延迟(左y-axis)实现的最优分区(右y-轴)在SLC和MLC之间。的x-axis显示Flash内存区域,并扩展到足以包含整个工作集。正如预期的那样,当缓存的大小接近整个工作负载时,仅使用SLC单元将延迟降到最低。通过将MLC和SLC与更快的SLC单元中访问最频繁的数据相结合,中间Flash大小提供了最小的延迟。SLC和MLC之间的最佳划分取决于数据页的访问频率。例如,如果有比其他页面更活跃的热页面,则偏向于SLC。这种类型的行为表现在Financial2跟踪(图7 (a)),其中SLC分配随Flash容量快速增长。如果访问频率更加统一(例如,Websearch1在图7 (b))最好有一个更大的(MLC)缓存来增加访问Flash的次数,因为到磁盘的速度要慢得多。

*3.3.操作和动态重新配置

我们使用一个典型的软件设备驱动程序接口来访问Flash存储器控制器。驱动程序指定要访问的Flash地址以及读或写模式。对于写操作,驱动程序也向控制器发送新数据。使用存储在DRAM中的配置表,驱动程序告诉Flash控制器在每次访问中使用什么纠错强度和单元密度。在本节中,我们将提供关于缓存如何操作以及如何动态地重新配置其设置的更多细节。

理论的操作:在本节中,我们总结了操作系统和控制器是如何交互的(参见Kgil11获取完整描述)。它的概念与普通磁盘缓存类似,只是现在是两级缓存。第一级缓存驻留在DRAM中,第二级缓存由闪存组成。此外,缓存的Flash部分必须动态地重新配置,以最大限度地提高性能和可靠性。DRAM具有快速、均匀的读写延迟、无损耗和无密度模式,更容易处理。

当执行文件读取时,操作系统将在位于DRAM中的主磁盘缓存中搜索该文件。如果在DRAM中找到该页面,则直接从主磁盘缓存访问文件内容,需要访问Flash相关的数据结构。否则,操作系统将判断请求的文件当前是否位于次要(Flash)磁盘缓存中。如果找到请求的文件,则执行Flash读取,并将Flash内容传输到DRAM。

如果数据没有在Flash中找到,我们首先在读缓存中寻找一个空的Flash页面。如果没有空的Flash页面可用,我们首先选择一个块将其逐出到磁盘,释放Flash页面用于新读取的数据。被替换的数据通常是“最近最少使用”(LRU)块,因此不太可能再次需要它。这样的访问必须一直到磁盘,增加了程序的执行时间,所以LRU算法减少了这种情况发生的可能性。同时,使用设备驱动程序接口调度硬盘驱动器访问。将硬盘驱动器内容复制到DRAM中的主磁盘缓存以及Flash中的读缓存。

如果我们写入一个文件,我们通常会在主磁盘缓存中更新/访问该页面,并且定期计划将该页面写回辅助磁盘缓存,然后定期将其写回磁盘驱动器。当写回Flash时,我们首先确定它是否已经在Flash上存在。如果在写区域中找到它,则通过执行环境格格不入写入到写入缓存。如果在读缓存中找到了它,我们就把它移到写缓存中。如果在Flash中没有找到,我们就在写缓存中分配一个页。

在后台,当基于闪存的磁盘缓存开始耗尽空间时,就会触发垃圾收集。如果缓存的数据被修改,还会定期刷新到磁盘。在正常的缓存操作的同时,可靠性管理算法不断地尝试适应Flash的配置,以提供最大的效益。我们已经看到配置随着应用软件的变化而变化。下一节将描述为实现此目的而实施的配置策略。

重新配置Flash Memory控制器:Flash页面状态表FPST (Flash Page Status Table)规定了Flash每一页的可靠性控制设置。当操作系统读写Flash控制器时,它还发送配置位,指定Flash页面的各种模式。应用配置策略来选择这些模式,当应用程序要求更改和Flash最终开发出故障位时,将性能最大化。

ECC强度或密度模式变化有两个主要触发器。这包括(1)故障比特数的增加和(2)访问(读取)频率的改变。每个触发器解释如下:

当观察到新的比特错误并由于磨损而始终失败时,我们重新配置页面。这是通过加强一个更强的ECC或降低小区密度从MLC模式到SLC模式来实现的。我们使用一些简单的启发式方法来选择延迟增加最小的选项。它们考虑特定页面的活跃程度,以确定其对整个系统的影响。它还考虑页面的当前磨损程度。

一些频繁访问的页面将受益于SLC存储,因为它的延迟较低。如果一个页面处于MLC模式,并且FPST字段中记录对该页面的读访问次数的条目达到了限制,那么我们将该Flash页面以SLC模式迁移到一个新的空页面。如果没有空页可用,一个Flash块被驱逐和擦除使用我们的磨损级别感知更换政策。将频繁访问的页面从MLC模式重新分配到SLC模式可以提高命中延迟,从而提高性能。由于服务器平台中对文件的许多访问都具有热数据和冷数据的尾分布(Zipf),提高频繁访问(热)Flash页面的命中延迟可以提高整体性能,尽管Flash容量略有减少。

如果一个Flash页面达到ECC强度限制,并且已经设置为SLC模式,该块将被永久移除,并且在寻找页面分配到磁盘缓存时从不考虑。

回到顶部

4.方法

我们使用名为M5的全系统模拟器评估Flash内存控制器和Flash设备。2M5模拟基础设施用于生成访问配置文件,以估计系统内存和磁盘驱动器功耗以及发布的访问能量数据。我们开发了一个单独的闪存磁盘缓存模拟器,用于可靠性和磁盘缓存错过率实验,在非常长的跟踪是必要的,因为完整的系统模拟器是缓慢的。考虑到模拟基础设施中的限制,使用1001000 gb的大型工作集的服务器工作负载无法轻松评估。我们根据在模拟基础设施上运行的情况相应地调整基准、系统内存大小、Flash大小和磁盘驱动器大小。

我们还生成了微基准磁盘跟踪来模拟合成磁盘访问行为。它们代表典型的访问分布和近似真实的磁盘使用情况。为了对系统施加适当的压力,还生成了一些均匀随机分布和指数分布的微基准。

我们使用来自马萨诸塞大学跟踪库的磁盘跟踪20.对企业级应用程序(如web服务器、数据库服务器和web搜索)的磁盘行为进行建模。为了测量性能和功耗,我们使用dbt2 (OLTP)和SPECWeb99来生成具有代表性的磁盘/磁盘缓存流量。

回到顶部

5.结果

*5.1.系统内存和硬盘能效

图8显示了在系统内存和磁盘驱动器(左y设在)。图8还显示了测量的网络带宽(右y设在)。以网络带宽度量的吞吐量是总体系统性能的一个很好的指标,因为它代表了服务器在每个配置中可以处理的数据量。我们计算了仅使用DRAM的系统内存和异构(DRAM + Flash)系统内存的功耗,该系统内存使用Flash作为具有硬盘驱动器支持的辅助磁盘缓存。我们假设只使用DRAM的系统存储器和使用DRAM + Flash的系统存储器的死区面积相等。图8显示了采用Flash后磁盘驱动功率和系统内存功率的降低。我们为系统内存节省的主要能源来自于使用Flash而不是DRAM来处理大量的磁盘缓存。磁盘的节能来自于减少对磁盘的访问,因为采用Flash可以获得更大的整体磁盘缓存。我们还看到Flash的吞吐量有所提高,因为它比磁盘显示更低的访问延迟。

*5.2.BCH代码强度对系统性能的影响

我们已经提到过,BCH延迟会导致初始访问延迟之外的额外延迟。我们模拟了SPECWeb99和dbt2基准测试的性能,以观察随着Flash消耗而增加代码强度的影响。假设所有Flash块应用相同的ECC强度。我们还测量了代码强度(每页超过12位)的性能,这超出了我们的Flash内存控制器完全捕捉性能趋势的能力。

图9,我们可以看到吞吐量随着ECC强度缓慢下降。dbt2在每页15位后的性能损失比SPECWeb99更大。dbt2的磁盘绑定特性使其对ECC强度更敏感。

*5.3.闪存控制器的可靠性支持提高了闪存寿命

图10显示了达到Flash全部故障点所需的规范化访问数的比较,在该故障点上没有一个Flash页面可以恢复。我们比较了我们的可编程闪存控制器与BCH 1位纠错控制器。我们的研究表明,对于典型的工作负载,我们的可编程闪存控制器的寿命平均延长了20倍。对于以前将Flash寿命限制为6个月的工作负载,我们表明它现在可以使用我们的可编程Flash内存控制器运行10年以上。伴随而来的是,随着Flash的使用,整体访问延迟也有了明显的提高。

回到顶部

6.结论和未来工作

本文提出了将Flash集成到服务器平台的挑战和机遇。闪存是集成的一个有吸引力的候选者,因为它减少了系统内存和磁盘驱动器的功耗,同时提高了整体吞吐量。这反过来又可以降低服务器平台的运营成本,这是数据中心日益关注的问题。我们介绍了Flash的三个关键使用模型,并研究了“扩展系统内存”使用模型的架构。我们提出的架构仔细地管理Flash,并将其作为一个二级磁盘缓存,分成单独的读缓存和写缓存。我们观察到在功耗和性能方面有了显著的改进。在我们的模拟研究中,基于闪存的磁盘缓存将DBT2数据库基准性能提高了25%以上,同时减少了44%的内存和磁盘功耗。对于web服务器基准测试,性能提高了11%,功耗降低了73%。这还没有考虑到加速系统响应和增加空闲时间可能带来的更大的系统范围的能源节省。假设服务器可以在空闲时进入低功耗模式,13所有组件都节省能源,而不仅仅是内存和磁盘。

我们还表明,具有可靠性支持的闪存控制器大大提高了Flash的使用寿命。我们发现,闪存控制器的最佳配置在很大程度上取决于应用程序产生的访问模式。例如,我们发现对于具有Zipf访问行为的典型工作负载,最好使用配置为将大量访问的内容放在由可靠的低延迟SLC组成的区域中的Flash。总的来说,我们发现可变的ECC强度可以优雅地延长Flash的寿命,并且在可配置密度下ECC的开销最小。结合我们所有的技术,我们发现相对于只使用单个ECC的系统,寿命平均提高了20倍。我们相信我们的发现不仅适用于Flash,而且也适用于新兴的存储技术设备,如PCRAM。1

新的存储技术为提高数据中心的性能和效率创造了机会。这些颠覆性的技术迫使架构师重新思考服务器中当前的系统内存和存储层次结构。与服务器虚拟化一起,我们相信这些内存设备将有助于实现构建绿色数据中心的目标。

回到顶部

参考文献

1.Bedeschi, F.等。一种多级单元双极性选择相变存储器。在国际固态电路会议论文集(2008年2月),428625年。

2.宾克特,N.,德雷斯林斯基,R.徐,L.,林,K.,赛迪,A.,莱因哈特,S. M5模拟器:建模网络系统。IEEE微264(7月/ 8月。2006), 5260。

3.Chang L.-P。关于大规模闪存存储系统的有效损耗均衡。在第22届美国计算机学会应用计算研讨会(2007)。

4.Chang L.-P。,Kuo, T.-W. Real-time garbage collection for flash-memory storage system in embedded systems.ACM反式。嵌入式计算系统34(2004)。

5.Cho T.等人。双模NAND闪存:1gb多电平和高性能512mb单电平模式。32 .固体电路, 11(2001年11月)。

6.Flex-OneNAND。http://www.samsung.com/global/business/semiconductor/products/fusionmemory/Products_FlexOneNAND.html。

7.Fusion-io固态存储企业级可靠性新标准。http://www.fusionio.com/PDFs/Whitepaper_Solidstatestorage2.pdf。

8.husell, W, Bowen, J., Ekker, N.闪存固态硬盘可靠性。http://www.texmemsys.com/files/f000252.pdf。

9.Intel X18-M/X25-M SATA固态硬盘。http://download.intel.com/design/flash/nand/mainstream/mainstream-sata-ssd-datasheet.pdf。

10.Flashcache:一种用于低功耗网络服务器的NAND闪存文件缓存。在嵌入式系统编译器、体系结构与综合国际会议(2006)。

11.Kgil, T., Roberts, D., Mudge, T.改进基于NAND闪存的磁盘缓存。在计算机体系结构国际研讨会(ISCA)论文集(2008)。

12.Leventhal, A.今天的闪存。ACM队列(2008年8月)。

13.Meisner, D., Gold, b.t., Wenisch, T.F. Powernap:消除服务器闲置电源。ASPLOS(2009年3月)。

14.MetaRAMs DDR3 MetaSDRAM双内存容量和增加未来英特尔系统的频率。http://www.metaram.com/pdf/press/MetaRAM_DDR3_08_19_08.pdf。

15.M. Moshayedi, P. Wilkison, P. Enterprise ssd。ACM队列(2008年8月)。

16.ONFI:打开NAND Flash接口。http://www.onfi.org/index.html。

17.Scaramella, J.电力和冷却的使能技术。http://h71028.www7.hp.com/enterprise/downloads/Thermal_Logic.pdf。

18.串行ATA 2.6规格。http://www.sata-io.org。

19.Solaris ZFS管理指南。2008.

20.马萨诸塞大学跟踪库。http://traces.cs.umass.edu/index.php/Storage/Storage。

回到顶部

作者

大卫·罗伯茨(daverobe@umich.edu),高级计算机结构实验室,CSE系,密歇根大学。

太昊Kgil(taeho.kgil@intel.com),英特尔公司。

特雷福玛吉(tnm@eecs.umich.edu),高级计算机结构实验室,CSE系,密歇根大学。

回到顶部

脚注

这篇论文的前一个版本,题为“改进基于NAND闪存的磁盘缓存”发表在计算机体系结构国际研讨会论文集(2008年ISCA)。

DOI: http://doi.acm.org/10.1145/1498765.1498791

回到顶部

数据

F1图1。IDC估计了每年用于服务器供电、冷却以及购买新服务器的成本。

F2图2。(a)示例双模式SLC/MLC Flash银行组织和(b)垃圾收集花费的时间作为使用中的Flash空间的函数。

F3图3。将1GB DRAM替换为256mb DRAM和1GB nand闪存。添加了额外的组件来控制Flash。

F4图4。这个例子展示了将基于闪存的磁盘缓存分割为读和写缓存的好处。在5个擦除块中,已从缓存中删除且无效的数据页将显示为灰色。在左侧,统一缓存允许将需要大量读取和写入的页面放在任何擦除块中。这将导致无效页面分散。我们的拆分读/写缓存将读和写为主的数据强制分为两组单独的擦除块。因此,无效页被聚集在一起,需要擦除的块更少,从而为下一次写入准备无效页。

F5图5。可变代码强度的最大可容忍的Flash写/擦除周期。

F6图6。闪存控制器架构。闪存磁盘缓存设备驱动程序向硬件接口发送请求。这些请求还指定了访问页面的ECC强度和密度模式。控制器依次对写操作进行ECC编码或对读操作进行解码后访问Flash芯片。设备驱动软件接收任何被请求的数据以及失败Flash位数的指示。

F7图7。各种多模式MLC Flash大小的最佳访问延迟和SLC/MLC分区。

F8图8。对于带有/不带有基于闪存的磁盘缓存的架构,系统内存、磁盘电源和网络带宽会崩溃。

F9图9。平均吞吐量作为ECC强度的函数。该系统使用256MB的DRAM和1GB的Flash。

F10图10。对于给定的访问速率和Flash总故障点,规范化的预期生存期。

回到顶部

T1表1。服务器内Flash使用模式的比较。

回到顶部


©2009 acm 0001-0782/09/0400 $5.00

允许制作本作品的全部或部分的数字或硬拷贝用于个人或课堂使用,但前提是该拷贝不是为了盈利或商业利益而制作或分发,并且该拷贝在第一页上带有本通知和完整引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2009 ACM有限公司


没有发现记录

Baidu
map