SSD的核心设计全在这篇论文里啦
Design Tradeoffs for SSD Performance
这是一篇2008年发表在USENIX的会议论文,引用次数达到1227次
代表什么,不管是期刊还是会议论文,要记得引用哦
摘要
本文介绍了此类设计选择的分类,并使用跟踪驱动的模拟器和从实际系统中提取的工作负载跟踪分析各种配置的可能性能。我们发现SSD性能和生命周期对工作负载非常敏感,并且通常较高的复杂系统问题出现在存储堆栈中甚至在分布式系统中,与设备固件相关。
SSD性能研究点:
延长和带宽:
- 读写可以多快
- 随机写会慢
永久行: - 最快多久可以代替传统硬盘
- Flash块受磨损影响
Introduction
SSD设计中出现的许多问题似乎都模仿了以前在存储堆栈中出现的问题。在解决这些难题时,设计选择有相当大的自由度。我们表明以下系统问题与SSD性能有关:
- data placement: 在SSD的芯片上仔细放置数据不仅对负载平衡至关重要,而且对于实现耗损均衡至关重要
- parallelism: 任何给定闪存芯片的带宽和操作速率都不足以实现最佳性能。因此,存储器组件必须协调以便实行并行操作。
- write ordering:Nand闪存的属性给SSD设计者带来了难题。小的,随机排序的写入尤其棘手。
- workload management: 性能高度依赖于工作负载。例如,在顺序工作负载下产生良好性能的设计决策可能不会使非顺序工作负载受益,反之亦然。
随着SSD复杂性的增加,现有的磁盘模型将不足以预测性能。特别是,由于磁盘写入操作的位置,随机写入性能和磁盘寿命会有很大差异。我们引入了一种基于清除效率来表征这种行为的新模型,并提出了一种新的耗损均衡算法来延长SSD寿命。
2.Nand背景
Bandwidth and Interleaving
闪存包接收命令和传输数据的串行接口是SSD性能的主要瓶颈。三星部分需要大约100μs才能将4KB页面从片内寄存器传输到片外控制器。这使将数据从NAND单元移入寄存器所需的25μs相形见绌。当这两个操作串联时,闪存包每秒只能产生8000页读取(32 MB /秒)。如果在die内采用交织,则单个部分的最大读取带宽提高到每秒10000个读取(40 MB /秒)。另一方面,写入每页需要与读取相同的100μs串行传输时间,但编程时间为200μs。在没有交错的情况下,这给出了每秒3330页(13 MB /秒)的最大单部分写入速率。交错串行传输时间和程序操作使总带宽加倍。理论上,因为我们正在考虑的封装上有两个独立的die,我们可以将两个die上的三个操作交错放在一起。这将允许写入和读取以串行互连的速度进行。
当操作等待时间大于串行访问等待时间时,交错可以提供相当大的加速。例如,在某些情况下,昂贵的擦除命令可以与其他命令并行进行。作为另一个示例,尽管单个写入操作的成本为200μs,但是如图所示,两个封装之间的完全交错packages复制可以以接近100μs的每页 进行。这里,4个源平面和4个目标平面以高速复制pages而不在同一plane对上执行同时操作,同时最佳地利用连接到两个闪存die的串行总线引脚。加载pipe后,每隔一段时间(100μs)完成写入。
并行的研究:采用交织技术,外部串行,内部并行。
即使闪存架构支持交错,它们也会受到严格限制。因此,例如,同一闪存plane上的操作不能交错。这表明相同的package交错最适用于精心设计的一组相关操作,例如图2所示的多页读或写 。我们检查的三星部件支持快速内部复制操作,允许将数据复制到片上的另一个模块而不会穿过串行引脚。这种优化是有代价的:数据只能在同一个闪存plane(2048块)内复制。两个这样的副本本身可以在不同的plane上交错,结果产生与图2所示的完全交错的封装间复制相似的性能,但不要垄断串行引脚。
3 SSD基础
3.1 Logical Block Map
NAND闪存的性质决定了写入不能像在旋转磁盘上那样执行。此外,为了实现可接受的性能,必须尽可能顺序执行写入,如在log中。由于每个单个逻辑磁盘块地址(LBA)的写入对应于不同闪存页面的写入,因此即使最简单的SSD也必须在逻辑块地址和物理闪存位置之间保持某种形式的映射。我们假设逻辑块映射保存在易失性存储器中,并在启动时从易失性存储器重建。