ssd控制器厂家 SSD市场



文章插图
ssd控制器厂家 SSD市场

文章插图
基本1. 闪存单元类型
固态硬盘 (SSD) 是一种基于闪存的数据存储设备 。位存储在单元中,分为三种类型:每单元 1 位(单级单元,SLC)、每单元 2 位(多级单元,MLC)、每单元 3 位(三级单元,TLC) 。
2. 寿命有限
每个单元都有最大次数的 P/E 循环(编程/擦除),在此之后该单元被视为有缺陷 。这意味着 NAND 闪存会磨损并且使用寿命有限 。
3. 基准测试很难
测试人员是人,因此并非所有基准测试都不会出错 。阅读制造商或第三方的基准时要小心,并在相信任何数字之前使用多个来源 。在可能的情况下,使用您系统的特定工作负载以及您想要使用的特定 SSD 型号运行您自己的内部基准测试 。最后,确保您查看对手头系统最重要的性能指标 。
页和块4. NAND 闪存页面和块
单元格被分组到一个网格中,称为块,块被分组到平面中 。可以读取或写入块的最小单位是页 。页不能单独擦除,只能擦除整个块 。NAND 闪存页面大小可能会有所不同,大多数驱动器的页面大小为 2 KB、4 KB、8 KB 或 16 KB 。大多数 SSD 具有 128 或 256 页的块,这意味着块的大小范围在 256 KB到 4 MB 范围内变化 。例如,三星 SSD 840 EVO 的块大小为 2048 KB,每个块包含 256 个页面,每个页面为 8 KB 。
5. 读取在页面大小上对齐
一次阅读不到一页是不可能的 。一个人当然只能从操作系统请求一个字节,但是将在 SSD 中检索一整页,迫使读取比需要更多的数据 。
6. 写入在页面大小上对齐
写入 SSD 时,写入是按页面大小的增量进行的 。所以即使一次写操作只影响一个字节,无论如何都会写一整页 。写入比所需更多的数据称为写入放大 。写入页面也称为“编程”页面 。
7.页面不能被覆盖
NAND 闪存页面只有在处于“空闲”状态时才能被写入 。当数据改变时,页面的内容被复制到内部寄存器中,数据被更新,新版本存储在“空闲”页面中,这个操作称为“读-修改-写” 。数据不会就地更新,因为“空闲”页面与最初包含数据的页面不同 。一旦数据被持久化到驱动器,原始页面被标记为“过时”,并将保持原样直到被擦除 。
8.擦除在块大小上对齐
页面不能被覆盖,一旦它们变得陈旧,让它们再次自由可用的唯一方法就是擦除它们 。但是,无法擦除单个页面,只能一次擦除整个块 。
SSD 控制器和内部结构9. Flash 翻译层
闪存转换层 (FTL) 是 SSD 控制器的一个组件,它将逻辑块地址 (LBA) 从主机映射到驱动器上的物理块地址 (PBA) 。最近的驱动器实现了一种称为“混合日志块映射”的方法或其派生方法,其工作方式类似于日志结构文件系统 。这允许像顺序写入一样处理随机写入 。
10. 内部并行性
在内部,多个并行级别允许一次将多个块写入不同的 NAND 闪存芯片,即所谓的“集群块” 。
11. 磨损均衡
由于 NAND 闪存单元不可避免磨损,因此 FTL 的主要目标之一是在单元之间尽可能均匀地分配工作,以便块将达到其 P/E 周期限制并同时磨损 。
12.垃圾收集
SSD 控制器中的垃圾收集过程确保“陈旧”页面被擦除并恢复到“空闲”状态,以便可以处理传入的写入命令 。
13.后台操作会影响前台操作
垃圾收集等后台操作会对来自主机的前台操作产生负面影响,尤其是在小随机写入的持续工作负载的情况下 。
访问模式14.永远不要写不到一页
避免写入小于 NAND 闪存页面大小的数据块,以最大限度地减少写入放大并防止读取-修改-写入操作 。当前页面的最大大小为 16 KB,因此默认情况下应使用该值 。此大小取决于 SSD 型号,将来随着 SSD 的改进,您可能需要增加它 。
15. 对齐写入
在页面大小上对齐写入,并写入页面大小的倍数的数据块 。、
16.缓冲小数据量写
为了最大限度地提高吞吐量,尽可能将小数据量写入 RAM 中的缓冲区,当缓冲区已满时,执行单次大数据量写以批处理所有小写 。
17.为了提高读取性能,将相关数据一起写入
读取性能是写入模式的结果 。当一次写入大量数据时,它会分布在单独的 NAND 闪存芯片上 。因此,您应该在同一页、块或集群块中写入相关数据,以便稍后通过利用内部并行性通过单个 I/O 请求更快地读取这些数据 。
18. 分离读写请求
由小型交错读取和写入混合构成的工作负载将阻止内部缓存和预读机制正常工作,并导致吞吐量下降 。最好避免同时读取和写入,并在大块中依次执行它们,最好是集群块的大小 。例如,如果必须更新 1000 个文件,您可以迭代这些文件,对文件进行读写,然后移动到下一个文件,但这会很慢 。最好一次读取所有 1000 个文件,然后一次写回这 1000 个文件 。
19.批量失效数据
当某些数据不再需要或需要删除时,最好在单个操作中大批量等待并使其失效 。这将允许垃圾收集器进程一次处理更大的区域,并有助于最大限度地减少内部碎片 。
20. 随机写入并不总是比顺序写入慢
如果写入很小(即低于集群块的大小),则随机写入比顺序写入慢 。如果写入既是集群块大小的倍数又与集群块大小对齐,则随机写入将使用所有可用的内部并行级别,并且将执行与顺序写入一样好 。对于大多数驱动器,群集块的大小为 16 MB 或 32 MB,因此使用 32 MB 是安全的 。
21.一个大的单线程读比很多小的并发读好
并发随机读取无法充分利用预读机制 。此外,多个逻辑块地址可能会出现在同一个芯片上,而不是利用或利用内部并行性 。大型读操作将访问顺序地址,因此将能够使用预读缓冲区(如果存在)并使用内部并行性 。因此,如果例允许,最好发出大型读取请求 。
22.一个大的单线程写比很多小的并发写好
大型单线程写入请求提供与许多小型并发写入相同的吞吐量,但在延迟方面,大型单线程写入比并发写入具有更好的响应时间 。因此,只要有可能,最好执行单线程大写 。
23.当写量较小且不能分组或缓冲时,多线程是有益的
许多并发的小的写请求将提供比单个小的写请求更好的吞吐量 。所以如果I/O很小,不能批量处理,最好使用多线程 。
24.冷热数据分离
热数据是变化频繁的数据,冷数据是变化不频繁的数据 。如果一些热数据和一些冷数据存储在同一个页面中,那么每次在读-修改-写操作中更新热数据时,冷数据都会被一起复制,并且会在垃圾收集期间一起移动以进行磨损均衡 。尽可能将冷热数据拆分成单独的页面将使垃圾收集器的工作更轻松 。
25. 缓存热点数据
应尽可能多地缓冲极热数据和其他高变化的元数据,并尽可能不频繁地将其写入驱动器 。
系统优化26. PCI Express 和 SAS 比 SATA 快
制造商提供的两个主要主机接口是 SATA 3.0(550 MB/s)和 PCI Express 3.0(每通道 1 GB/s,使用多个通道) 。串行连接 SCSI (SAS) 也可用于企业 SSD 。在它们的最新版本中,PCI Express 和 SAS 比 SATA 更?快,但它们也更贵 。
27. 过度配置对于磨损平衡和性能很有用
只需将驱动器格式化为小于最大物理容量的逻辑分区容量,即可过度配置驱动器 。对用户不可见的剩余空间仍将可见并由 SSD 控制器使用 。过度配置有助于磨损平衡机制应对 NAND 闪存单元固有的有限寿命 。对于写入不那么重的工作负载,10% 到 15% 的过度空间配置就足够了 。对于持续随机写入的工作负载,保持高达 25% 的过度空间配置将提高性能 。超额配置将充当 NAND 闪存块的缓冲区,帮助垃圾收集过程吸收写入峰值 。
28.启用TRIM命令
确保您的内核和文件系统支持 TRIM 命令 。当一个块被删除时,TRIM 命令会通知 SSD 控制器 。然后,垃圾收集过程可以在空闲时间在后台擦除块,使驱动器准备好应对大型写入工作负载 。
29.对齐分区
为确保逻辑写入真正与物理内存对齐,您必须将分区与驱动器的 NAND 闪存页面大小对齐 。
结论
【ssd控制器厂家 SSD市场】如果您在阅读本文章后想更深入地了解 SSD 。一个重要资源是 FAST 会议(文件和存储技术的 USENIX 会议) 。每年都有许多优秀的研究在那里发表 。强烈推荐FAST 2013的视频和出版物 。https://www.usenix.org/conference/fast13