固态盘模拟器现状分析

2020-02-08 04:12冯志华安东博鄢军霞李文佳
计算机工程与设计 2020年1期
关键词:模拟器固态磨损

冯志华,安东博+,鄢军霞,李文佳,万 星

(1.中国航天科工集团第二研究院706所,北京 100854;2.武汉软件工程职业学院 信息学院,湖北 武汉 430205)

0 引 言

随着大数据与云计算的发展以及存储性能和计算性能之间的差距在不断扩大,存储系统的性能逐渐成为制约信息系统发展的瓶颈。而固态盘具有随机访问性能好、体积小、功耗低等突出优点,且容量逐步上升,单盘容量可达TB级,正逐渐取代传统磁盘成为应用于存储系统的主要存储器件。

固态盘主要由控制器和存储芯片构成,控制器算法的好坏,对固态盘性能影响很大。在对固态盘进行架构与控制算法的研究与优化时,直接在固态盘上实现设计构想需要花费大量的时间成本和人力物力成本。而选择在固态盘模拟器上对设计进行验证,不但能够快速得到功能、性能等方面的估测数据,加快设计迭代周期,还有助于设计者更好的评估设计改动对固态盘各部分影响,并基于验证结果进一步改进设计方案。

文献[1-4]分别提出了4种开源固态盘模拟器,都对固态盘的一些重要组成部分(如闪存、内存等)与功能模型(如延迟模型等)进行了模拟,但在架构组成和模型设计等方面存在差异,这也导致其对固态盘功能与性能的模拟精度不尽相同。为评估各固态盘模拟器的功能与性能,选用合适的固态盘模拟器对固态盘的设计进行评估与验证,本文对几种典型固态盘模拟器的架构组成与功能进行分析,并选取实际固态盘与各固态盘模拟器在同等测试环境下进行性能比对实验。

1 固态盘模拟器基本组成

固态盘是一个包括硬件与软件的嵌入式系统。在开发设计固态盘产品时,使用固态盘模拟器,能够提前验证设计的硬件结构与软件算法,降低开发成本,缩短研发周期。

固态盘模拟器需要对固态盘的硬件行为(包括固态盘内部通道、闪存颗粒等)、软件算法(包括地址映射、磨损均衡及垃圾回收等)进行模拟。而软件算法与真实的固态盘系统中的软件类似,所以固态盘模拟器的重点在于对固态盘硬件行为的模拟。其中作为固态盘硬件的关键部分,闪存是固态盘模拟器需要模拟的核心点。模拟器通过对固态盘设计的硬件结构和固件算法的模拟,可以对固态盘设计的性能(包括顺序/随机读写速率及延迟等)与能耗指标进行模拟测试,从而对固态盘设计工作做出指导与验证。

固态盘模拟器主要由主机接口、数据缓存、闪存转换层(flash translation layer,FTL)、闪存等部分组成,本文从模拟器的基本组成以及延迟模型等部分对固态盘模拟器进行分析。

1.1 主机接口

主机接口实现与主机通信的协议逻辑,如SATA、NVMe等。目前大多数固态盘使用SATA协议接口,其中原生命令队列(native command queuing,NCQ)使固态盘能够优化工作负载执行顺序,通过对内部队列中的命令进行重新排序来提高执行效率[5]。NVMe协议突破SATA协议瓶颈,精简了指令调用方式,减少对寄存器的访问次数,且最大支持64 K队列深度,充分利用PCIe通道性能,具有低延迟、高性能等特点。

1.2 数据缓存

数据缓存对固态盘整体性能的提升有着较大的影响。数据缓存负责服务来自上层的请求,即首先在数据缓存区搜索新收到请求的目标数据。若收到读请求,则先在缓存区搜索目标数据,然后读出该数据并响应读请求。若收到写请求,在缓存区搜索到该请求数据,则直接将本次请求数据写入缓存区替换之前的旧数据。若在缓存区未搜索到请求的数据,则需要进一步去访问闪存。

1.3 闪存转换层

闪存转换层负责模拟固态盘闪存转换层中包括地址映射、垃圾回收及磨损均衡等在内的各种算法。地址映射完成逻辑地址空间到物理地址空间的映射,包括块映射、页映射和混合映射等。垃圾回收完成对某些闪存块中的有效数据的重写与无效数据的擦除,从而得到新的可用的闪存块。磨损均衡负责使固态盘中每个闪存块的磨损(擦除)次数保持平衡,包括动态磨损均衡和静态磨损均衡两种算法。

闪存转换层算法的优劣与否,直接决定了固态盘在性能、可靠性、耐用性等方面的优劣,是固态盘固件的核心部分。

1.4 闪 存

闪存将信息存储在由浮栅晶体管制成的存储单元中,出于成本考虑,数据存储应用主要采用NAND闪存。固态盘的工作原理基于闪存特性,如闪存写操作前必须先擦除,需要有垃圾回收(garbage collection,GC)操作;闪存擦写次数超过一定阈值后,内部存储的数据变得不可靠,需要有磨损均衡(wear leveling,WL)操作等。闪存由大量的存储单元按照一定的组织结构组成的:每个闪存芯片(package)由若干个共享同一通道的裸片(Die)组成,每个裸片有若干个分组(Plane),每个分组中有若干个块(Block),同时也有独立的寄存器用以缓存数据。每个块包括若干个页(Page),是擦除操作的最小操作单位,一个块的擦除次数有限,且擦除操作会带来延迟。页是写操作的最小操作单位,可在模拟器中用来计算读写操作延迟。

在ONFI(open NAND flash interface)/Toggle协议下,闪存支持基本的读、写以及擦除命令,同时提供了数据迁移、多分组操作等高级命令,优化闪存的访问速度。

1.5 延迟模型

请求延迟是评估固态盘性能好坏的一个重要指标。从主机端发起请求到设备端响应为止,一个请求的延迟可分为以下几部分(以NVMe接口固态盘读请求为例):①主机将命令写到提交队列;②PCIe总线传输延迟;③闪存转换层的地址转换以及任务调度;④命令及地址发送给闪存芯片;⑤闪存读数据;⑥数据通过ONFI传输至固态盘固件;⑦数据通过PCIe总线传输至主机。

其中各部分延迟不尽相同,由于相对于其它部分来说,某些部分延迟很小(如处理器的时间开销),所以许多模拟器可能这些部分的延迟忽略不计,不同的延迟模型也是影响固态盘模拟器准确度的一个重要原因。

2 典型开源固态盘模拟器分析

本文选取了Flashsim、SSDsim、Amber和MQSim这4个典型开源固态盘模拟器,根据固态盘模拟器基本组成,从主机接口、数据缓存、闪存转换层、闪存以及延迟模型等方面对各个固态盘模拟器分别进行分析。

2.1 Flashsim模拟器

Flashsim[1]是事件驱动的基于C++的固态盘模拟器,其架构如图1所示。硬件部分由SSD模块、控制器、内存、闪存芯片等部分组成。SSD模块用于例化模拟器并对外提供调用接口;控制器负责对接软件与硬件,对事件做出处理并计算所需时间;内存主要用于数据缓存,计算读写RAM的延迟;闪存芯片则模拟真实的闪存结构,包括分组、裸片、块、页等结构。软件部分即闪存转换层,实现了地址映射、垃圾回收、磨损均衡以及RAID算法,同时定义了Event和Address两个类,用于在各层之间传输操作信息和记录状态。

图1 Flashsim模拟器架构

Flashsim中的事件处理流程如下:SSD模块接收到事件,将其传递给控制器后,FTL将该多页请求转换为一个事件列表,并把列表中的事件发送到对应的总线通道,总线通道处理分发各个请求。

(1)主机接口

Flashsim中并没有提供SATA、NVMe等主机接口,只通过SSD模块来例化整个模拟器,并提供对外的调用接口,用于建立事件,获取统计信息等操作。

(2)数据缓存

控制器在将数据传输到总线之前会将其在内存中缓存,RAM模块负责计算数据在内存中的读写延迟。

(3)闪存转换层

Flashsim的闪存转换层提供地址映射、垃圾回收以及磨损均衡算法,支持固态盘RAID模拟操作,同时定义了Event和Address两个类,用于在各层之间传输操作信息和记录状态。Flashsim的FTL算法支持DFTL、FAST、BAST以及Page-level等。

(4)闪存

Flashsim闪存芯片模型模拟真实的闪存结构,包括分组、裸片、块、页等结构。支持对闪存芯片的读、写、擦除操作所需的时间进行设置,以模拟实际闪存芯片的读、写、擦除操作延迟。同时支持对闪存芯片在不同状态之间转换时的电流、电压的模拟,用以估算闪存每次读、写、擦除操作的能耗。

(5)延迟模型

Flashsim中延迟模型考虑了内存读写延迟、总线传输延迟和闪存读、写、擦除等操作延迟,忽略了处理器的时间开销。

2.2 SSDsim模拟器

SSDsim的架构如图2所示,结构分为数据缓存层、闪存转换层和硬件行为模拟层,能够对固态盘的高级命令、时间延迟和能耗进行模拟。

图2 SSDsim模拟器架构

SSDsim的基本操作流程如下:在执行初始化函数,完成从参数文件中读入固态盘的参数设置等初始化操作后,开始接收外部请求。外部请求来临,在数据缓存区寻找目标数据或进一步访问闪存。访问闪存时,外部请求被分为独立的子请求,挂载到相应的子请求队列中进行处理。所有请求完成后输出此外部请求模拟结果。

(1)主机接口

SSDsim不提供SATA、NVMe等主机接口,通过调用get_request函数,根据SSDsim的系统时间、当前请求队列长度以及外部请求到达时间做出判断,将外部请求读入到SSDsim中。

(2)数据缓存

在SSDsim架构中,设置了数据缓存层来模拟固态盘中缓存区域对请求的服务过程。并且使用一个结构体表示数据缓存区的最小单位,并根据缓存管理算法(如最近最少使用算法、最不经常使用算法等)进行排序。

(3)闪存转换层

SSDsim的闪存转换层模拟固态盘地址映射、垃圾回收、磨损均衡等算法。其中地址映射包括页映射、块映射、混合映射、DFTL等,垃圾回收算法采用贪婪算法等,磨损均衡算法包括静态磨损均衡与动态磨损均衡。

(4)闪存

SSDsim遵循ONFI2.2协议,支持基本的读、写、擦除命令与数据迁移、多分组操作、交错操作等命令。除正常闪存的读、写、擦除延迟和不同状态转换下电气参数外,定义了模拟固态盘的使用程度的老化参数(age),用于真实模拟实际固态盘使用场景。

(5)延迟模型

SSDsim的延迟模型包括闪存的读、写、擦除操作延迟和内存的平均读写延迟,忽略了处理器的时间开销。

2.3 Amber模拟器

Amber[2]是SimpleSSD[3]的第二代改进版本,相对于1.x版本来说,增加了SATA、UFS(universal flash sto-rage)、OCSSD(open-channel SSD)主机接口模型,支持FTL页级映射,建立了处理器以及内存的能耗模型,能够动态地更为精确地模拟固态盘能耗性能。同时Amber中模拟了多个ARM8指令集架构的嵌入式CPU,用于实现固态盘固件的不同功能。Amber的架构框架如图3所示。

图3 Amber模拟器架构

(1)主机接口

Amber提供SATA、NVMe主机接口以及UFS、OCSSD模型,支持SATA原生命令队列、NVMe命名空间(Namespace)等功能,实现了DMA以仿真数据与主机内存间的传输。

(2)数据缓存

Amber在提供DRAM作为缓存外,实现了“预读”的缓存管理算法,即根据DRAM中多个请求的地址与长度做出判断,预先将flash中的数据读到缓存中,提高固态盘的读性能。

(3)闪存转换层

Amber在SimpleSSD1.x版本支持混合映射的基础上增加了页级映射,并提供可用的垃圾回收、磨损均衡和任务调度算法。

(4)闪存

Amber的闪存模型也采用了目前实际固态盘中使用的多通道、多路径架构,即总线上挂载多通道负责任务调度。外部请求被分为多个子请求,通过多通道、多路径架构完成后,向主机返回完成信息。

(5)延迟模型

Amber可以在用户级执行FIO测试,实现了包括主机接口协议处理、处理器延迟、FTL算法以及闪存等在内的延迟模型。

2.4 MQSim模拟器

MQSim[4]提供了“稳定状态”的固态盘性能模拟与端到端延迟模型。所谓“稳定状态”是相对于理想状态而言的(如,某些模拟器在进行固态盘模拟测试时,不能覆盖固态盘存储容量将要写满的情况,此时所测固态盘性能是在理想情况下的,不能代表固态盘整个生命周期的性能)。MQSim对固态盘读写操作的过程进行了详细分析,结合目前固态盘技术现状(如新型闪存3D Xpoint技术等),更新了模拟器的延迟模型。MQSim模拟器架构框架如图4所示。

图4 MQSim模拟器架构

(1)主机接口

MQSim支持SATA、NVMe主机接口。在主机接口部分设置了获取请求单元(request fetch unit)以获取和调度来自不同队列的不同I/O请求。同时向用户提供QueueFetchSize参数,该参数定义了固态盘模拟器所能同时服务的来自每个提交队列(submission queue)的最大请求数。

(2)数据缓存

MQSim实现了DRAM作为缓存,并模拟了最近最少使用(least-recently-used)算法。DRAM可被配置为最近写数据(默认情况下)、最近读数据和最近读写数据3种模式。同时实现了考虑到并发访问和命令延迟的DRAM访问模型。

(3)闪存转换层

MQSim结合当前学术界较为前沿的算法与策略,实现了地址映射、垃圾回收、磨损均衡以及任务调度等功能。闪存转换层支持多队列请求处理,提高服务质量(quality of service,QoS)与性能表现。

同时,为真实模拟固态盘实际使用情况下的性能,MQSim模拟器在进行实际的模拟之前会执行“预热”操作,以使模拟器达到固态盘真实的“稳定”状态。

(4)闪存

MQSim支持裸片级和分组级的并行I/O调度算法,能够模拟SLC、MLC和TLC这3种类型的闪存颗粒。

(5)延迟模型

MQSim在考虑闪存操作和闪存内部数据传输延迟之外,分固定延迟和可变延迟两部分模拟了固态盘端到端的延迟。固定延迟包括请求命令、用户数据和请求完成信息在PCIe总线上传输时间与控制器中的微处理器执行FTL操作的时间。可变延迟主要指由于对缓存映射表和DRAM写缓存的竞争所导致的FTL处理时间开销,包括从数据缓存中读/写数据的时间和从flash中取映射表的时间。

2.5 功能对比

综合以上对各个模拟器的分析与总结,本文从主机接口、关键组件、闪存转换层、延迟模型和能耗模型等方面对各模拟器进行功能对比。

Flashsim是由来自宾夕法尼亚大学的团队使用单线程的C++编写的。该模拟器支持包括页级映射在内的多种映射算法,并在最新版本中增加了RAID功能,但其硬件模型较为简单,未能实现闪存高级命令与能耗的模拟。

SSDsim是由华中科技大学的团队开发,详细描述了闪存内部通道级、分组级以及裸片级并行访问机制,提供主流的缓存管理算法与FTL算法等,支持闪存数据迁移、多分组操作、交错操作等高级命令模拟,建立了闪存能耗模型。其不足之处在于模拟器并未提供主机端接口,仅用外部请求调用函数模拟固态盘请求过程。

Amber是SimpleSSD的第二代版本,支持SATA、UFS、NVMe、OCSSD主机接口模型,建立了处理器以及内存的能耗模型,能够更精确地动态模拟固态盘能耗性能。同时Amber中模拟了多个ARM8指令集架构的嵌入式CPU,用于实现固态盘固件的不同功能。但模拟器中FTL算法功能并不完善,与实际固态盘仍有差距。

MQSim是由卡内基梅隆大学的团队开发,分别根据读写命令处理过程对固态盘的延迟模型进行了详细分析与研究。指出在新型闪存(如3D XPoint[6,7])中,固态盘延迟模型较之以往发生变化,对固态盘的端到端延迟模型做出了完善与优化。类似SSDsim中老化参数(age)的设置,MQSim实现了“稳定状态”下对固态盘的模拟工作。但MQSim中并未使用真实数据来模拟固态盘数据的传输过程。

现从模拟器的结构与功能角度出发,选取主机接口、闪存转换层、延迟模型以及能耗模型等方面对上文提到的4个模拟器进行了综合分析与对比,具体结果见表1。

表1 模拟器结构功能对比

3 固态盘模拟器性能测试实验

3.1 实验环境与方案

本文选取SATA固态盘作为实际比对盘,按照该固态盘的实际参数对各模拟器进行配置。对固态盘中关键的参数进行了配置,其余参数皆为固定,且各模拟器保持一致。实际固态盘的关键配置参数见表2。

按照以上参数完成模拟器配置后,对实际固态盘与各模拟器进行测试。测试内容为固定大小的随机读写请求,记录各请求的响应延迟时间。测试环境参数见表3。

3.2 实验结果分析

根据3.1节内容完成实际固态盘和各模拟器的性能测试,其随机读/写延迟性能测试结果如图5、图6所示。

图5 随机读延迟

可以看出各模拟器与实际固态盘的延迟时间曲线表现出相似的变化趋势,说明各模拟器能够有效模拟固态盘的读/写延迟性能,但精度不尽相同。

其中Amber与MQSim所测数据与实际固态盘性能比较吻合,而Flashsim较真实固态盘延迟数据偏高,SSDsim则相反。分析其原因可能是因为Flashsim受限于简化的硬件模型,未对闪存内部并行模型作充分模拟,且缺少任务调度处理,导致读写延迟提高。而SSDsim在进行时间模型建立时,忽略了包括处理器在内的部分延迟,对内存的读写延迟取平均值,这导致了SSDsim的模拟延迟低于实际固态盘数据。

表2 SATA固态盘参数配置

表3 测试环境参数

3.3 未来展望

通过以上对固态盘模拟器的分析与总结,综合目前固态盘模拟器发展现状,未来模拟器可能需要在以下几方面做出改进:

(1)闪存并行性模拟

为充分利用并行性[8,9]以提高性能,当前固态盘在Flash芯片级搭建RAID。针对此问题,固态盘模拟器可以对通道级的并发访问策略,裸片级的乱序访问策略,分组级的并行I/O调度算法等闪存中各级并行性进行模拟,以更精确地模拟真实闪存性能。

(2)纠错算法模型

由于擦写磨损、读写干扰和数据保持等情况下,会导致闪存发生比特翻转[10]。固态盘采用纠错码的方法来修正错误数据,纠错算法的纠错能力大小是衡量固态盘质量可靠性的一个重要指标。在目前模拟器中没有涉及纠错码功能,不能真实模拟固态盘发生数据错误时的场景。针对此问题,固态盘模拟器可以建立闪存中数据错误模型,如读/写干扰、驻留错误和存储单元间耦合影响等;并设计纠错算法模型,如BCH算法、LDPC算法等,综合评估对固态盘性能的影响。

(3)存储安全机制模拟

安全是数据存储的一个本质需求。在固态盘设计过程中,需要将安全因素考虑在内,并进行安全性设计。针对此问题,固态盘模拟器可以考虑安全性设计模型,包括对称/非对称加密算法、散列值算法以及安全协议等,评估固态盘安全性能以及预测安全设计对性能的影响。

(4)支持新型Flash颗粒与先进固件算法

随着固件算法的不断改进和新型Flash技术(如3D XPoint等)出现,传统固态盘模拟器在延迟模型、能耗模型等方面与实际固态盘存在差异。针对此问题,固态盘模拟器可以根据现有被广泛接受认可的固态盘技术(如3D XPoint等)来完整模拟固态盘各部分,精确延迟与能耗模型。

4 结束语

综上,本文首先叙述了固态盘模拟器的基本原理与架构。然后从主机接口、数据缓存、闪存转换层、闪存以及延迟模型五方面,对Flashsim、SSDsim、Amber以及MQSim这4种应用较为广泛的固态盘模拟器分别进行了研究与介绍。对各模拟器的结构及功能进行了对比分析,并通过模拟实际固态盘的参数,对各模拟器进行了性能测试与比较。其中各模拟器测试结果存在差异的原因主要由于各模拟器对固态盘内部延迟模型的建立上存在差异。最后指出了当前模拟器在闪存并行性、纠错算法、安全机制以及新型颗粒的模拟方面的不足以及未来的发展方向。

猜你喜欢
模拟器固态磨损
基于CFD模拟和正交试验设计的弯头磨损研究
了不起的安检模拟器
固态Marx发生器均流技术研究
盲盒模拟器
Sn掺杂石榴石型Li7La3Zr2O12固态电解质的制备
透明陶瓷在固态照明中的应用进展
划船模拟器
基于ADAMS的行星轮磨损故障仿真研究
套管磨损机理研究
套管磨损机理研究