来自论文:MQSim A Framework for Enabling Realistic Studies of Modern Multi-Queue SSD Devices
这是一个使现代多队列SSD设备称为现实研究的框架。
Abstract
首先指出了那个时候比较好的一些SSD 模拟器(simulator)的三个缺点:
- 没有模拟新协议(如:NVMe)的关键特性,比如它们对请求的多个应用程序级队列的使用,以及消除操作系统对I/O请求处理的干预。
- 通常不能准确地捕捉高级SSD维护算法的影响(如,垃圾回收),因为它们不能正确或快速地模拟稳态条件(steady-state condition),而稳态条件会显著改变这些算法在实际SSD中的行为。
- 没有捕获I/O请求的全部端到端延迟(end-to-end latency),这可能会错误地歪曲SSD报告的结果,这些SSD使用了新兴的非易失性内存技术。
由于这三点没有正确建模,现有的模拟器报告结果与现实SSD性能存在明显的偏离。于是我们的工作是推出一款新的模拟器:MQSim,能够精准地模拟现代SSD和传统的基于SATA-based SSD的性能。(SATA, Serial Advanced Technology Attachment (SATA) protocol [67], which was originally designed for HDDs )
我们验证了MQSim,它报告的性能结果与四个真正的先进SSD的实际性能相比,结果只有6%-18%的性能。我们已经发布了MQSim作为一个开源工具,我们希望它能够帮助研究者在新的和不同的领域探索方向。
1,Introduction
SATA协议(Serial Advanced Technology Attachment (SATA) protocol [67], which was originally designed for HDDs ) 已经被证明对SSD是低效的,因为它不能支持当前SSD能够提供的快速I/O访问和IOPS(millions of I/O operations per second)。最新的协议(如,NVMe[63])克服了这些困难,它是专门位SSD中的高吞吐量设计的。NVMe 通过使用多队列SSD(multi-queue SSD)概念,为I/O请求提供高吞吐量和低延迟。而SATA仅为操作系统公开了一个请求端口。
Goal: develop a new SSD simulator that can faith-fully model the features and performance of both modern multi-queue SSDs and conventional SATA-based SSDs
MQSim解决了上面提到的三个问题,by:
(1)提供传统(如SATA)和现代(如NVMe)模型的主机接口
(2)准确和快速地模拟了稳态SSD的行为(steady-state SSD behavior)
(3)度量请求的完整端到端延迟(从应用程序将请求排队到请求响应到达主机的时间)
我们为MQSim提供了两种执行模式:<1>独立执行(standalone execution); <2>与gem5全系统模拟器[8]集成执行。我们发现MQSim报告的响应时间结果非常接近实际ssd的响应时间,实际存储工作负载跟踪的平均(最大)错误仅为11% (18%)
通过忠实地建模现代ssd中的主要特性,MQSim可以发现现有模拟器无法演示的几个问题。其中一个问题是现代MQ-SSD中的流间干扰(inter-flow interference)对性能的影响。用于两个或多个并发流 (例如,来自多个应用程序的I/O请求流),有三个主要的干扰来源:(1)写缓存,(2)映射表,和(3)I/O调度器。
使用MQSim,我们发现在现代ssd中,流间干扰会导致显著的不公平(即,干扰会不平等地降低每个流的速度)。不公平降低了每个流的I/O延迟和吞吐量的可预测性,并允许恶意流拒绝或延迟I/O服务到其他良性流。
2,Background
这部分简要介绍MQ-SSD(multi-queue SSD)的背景:
- internal organization of an MQ-SSD(section 2.1)
- host-interface protocols commonly used by SSDs(section 2.2)
- how the SSD flash translation layer(FTL)handles requests and performs maintenance tasks(section 2.3)
2.1 SSD Internals
现代MQ-SSDs通常由NAND-flash memory chip构建。NAND闪存[11,12]支持在page(通常是4 kB)粒度上的读写操作。在NAND闪存芯片内部,多个page被分组到一个闪存block中,这是擦除操作发生的粒度。闪存写入只能发生在被擦除的页面(例如,free)。为了最小化写入延迟,MQ-SSD执行out-of-place update(异地更新,即在更新逻辑页时,将其数据写到不同的空闲物理页,并更新逻辑到物理的映射)。这避免了在写操作期间擦除旧物理页的需要与时间。同时,旧的页面被标记为无效,垃圾收集过程[11 - 13,23]将在后台回收无效的物理页面。
下图展示了MQ-SSD的内部构造。MQ-SSD内部构建被分为两组:
- back end: include memory devices.
- front end: include control and management units.

后端(back end)中的存储设备(例如,NAND-flash memory[11,12], phase-change memory[42], STT-MRAM[40], 3D XPoint[9])以高度分层的方式组织,以最大化I/O并发性 (concurrency)。
后端还包括许多独立的bus channels, 它们将memory devices和front end连接。每一个channel连接一个或更多memory chip。 对于NAND-flash memory based SSD, 每一个NAND-flash chip被分为多个dies,每个die能够独立执行存储指令。一个chip中的所有dies共享一个常见的通信接口。每个die由一个或多个plane构成,plane就是flash cells阵列。每一个plane包括多个block。只有当每个平面在平面内的相同地址偏移上执行相同命令时,单个die中的多个平面才能并行执行内存操作。
前端包括三个部分:
- The host-interface logic(HIL),implements the protocol used to communicate with the host (section 2.2)
- The flash translation layer(FTL),manages flash resources and processes I/O requests (section 2.3)
- The flash chip controllers(FCC),send commands to and transfer data to/from the memory chips in the back end.
前端还包含板载(on-board)DRAM,三个组件使用它来缓存应用程序数据和存储数据结构,以供flash管理。
2.2 Host-Interface Logic
HIL在利用NAND-flash memory的内部并行性为主机提供更高的I/O性能方面发挥着关键作用。
SATA协议[67]通常用于传统的SSD,因为SATA在企业和客户系统上得到了广泛的支持。SATA使用本机命令排队(NCQ, Native Command Queuing),它允许SSD并发地执行I/O请求。NCQ允许SSD基于后端资源当前空闲的情况调度多个I/O请求[29,50]
NVM Express (NVMe) 协议为减轻SATA的瓶颈而设计,在PCIe总线上支持可伸缩的、高带宽和低延迟的通信。当应用程序在VNMe中发出I/O请求时,它会绕过OS中的I/O stack 和 block layer queue,而直接将请求插入应用程序专用的提交队列(上图中的SQ)。然后SSD从SQ中选择一个请求,执行请求,并将请求作业的完成信息(例如ack, read data)插入到相应应用程序的请求完成队列(上图中的CQ)中。
NVMe现已广泛应用于现代SSD产品中。
2.3 Flash Translation Layer ⭐️
FTL在SSD内的微处理器上执行I/O请求和闪存管理程序[11,12]。
对于使用NVMe的SSD,在FTL中处理I/O请求需要4个步骤:
- 当H

最低0.47元/天 解锁文章
752





