锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

TC 2010 A Hybrid Approach to NAND-Flash-Based Solid-State Disks

时间:2023-02-12 21:30:00 mlc连接器

A Hybrid Approach to NAND-Flash-Based Solid-State Disks

SLC与MLC混合SSD

TC 2010 原文链接

1、背景:SLC与MLC对比

SLC与MLC的简介

![[混合架构SSD 14.png]]

SLC 比 MLC 写入快,耗电少,使用寿命长,GC容易
MLC容量大,便宜

为了补充两者的优势,需要混合架构

思想来源

  • HDD混合存储——DCD(Disk Cache Disk) 通过日志记录随机写提高性能

这种新的结构也带来了新的挑战

  • 数据放哪里
  • 冷热数据如何识别?
  • 使用什么样的迁移策略
  • 如何实现磨损平衡

2、具体设计

2.1 总体架构

物理结构

内部架构

2.2 热数据过滤器

如何区分数据冷热?

–> 据观察,热数据多为小写入,冷数据多为大写入

  • 从图a可以看出,数据写入呈双峰分布,要么是大量小写,要么是大量连续大块写入,中等大小写入较少
  • 从图b可以看出,小写(4KB)更新率高,大写更新率低

更新率指的是一个请求中每个块平均被更新的次数,更新率高表示对某些块更新频繁

  • 图c图d显示大量块写入次数不超过4096,只有少数块写入频繁

现有方法:LRU、LRU-k、哈希表等 (复杂,需要RAM)

–> 使用简单的分类,认为小写请求大多是热数据,大写是冷数据

具体方式:K-Means方法进行二分类聚类

  1. 通过一个C[i]数组记录每一个请求访问的区块数

其中, i表示2^i如果访问次数不是2的幂次,则记录在附近C[i]

比如 请求访问 333个区块,在2^8(256) 与2^9(512)之间的记录更接近256C里面,即C[8]

文中规定C[]数组为11位,即最大访问区块不超过2^10=1024

  1. 通过不断迭代,找出两个聚类中心:i,j
    细节不会展开

这样,哪些请求就可以通过i值来确定,即写入热数据

  1. 算法会定期更新阈值i,例如,在重新运行前写入1000次

思考:
二分类用Kmeans? 没必要吧
而且这种分类方法用的2的幂次太粗略了

  • 贝叶斯可以用其他方法进行二分类?
  • 而且可以用更精细的数组记录,比如100次请求?

实验中i值通常为3,即4KB的小写请求

2.3 SLC的数据管理

环形缓冲区

数据分为有效和无效的数据

所谓无效数据,是指后来的新数据更新

它有k块,指针不断向前移动

一旦头指针和尾指针之间的K块以上,尾指针开始回收数据块

无效块直接回收,有效块复制至MLC

这样做的哲学:如果一个有效块在k次数据写入后没有更新,说明它的数据不够热,应该放入MLC了

这样子对于SLC垃圾回收和磨损均衡是友好的,毕竟是顺序、轮流写入和回收

SLC地址映射:哈希表

因为SLC存储的数据很少,没有必要记录每个块的地址
这里不详细说明如何选择。.详细介绍了4节

2.4写入节流

由于两者的寿命不同,为了实现磨损平衡,需要控制写入

公式没有解释,只需要知道rws是SLC相对MLC的磨损即可

  • 也就是说,要使两者磨损均衡,rws应该等于rwm

  • 当SLC相对MLC磨损过多,即rws更大的时候,开始写节流

  1. SLC不再接受新数据(不在哈希表中的数据),因为根据之前的推论,热数据将永远存在SLC不然就没那么热了。
  2. 一段时间后rws仍大于rwm当代表热数据太多时,必须清除一些,因此减少以前环形缓冲区的K值
  • 当rws不再大于rwm时,写入节流机制停止,K价值继续缓慢增加

下面是细节中的细节

  • 写节流机制可能会导致SLC数据不被替换,哈希表添加了虚拟项机制
    也就是说,第一次写作只是空指针,写作MLC,如果第二次还在的话,如果还在的话SLC如果哈希表中没有回收(热),将被真实地写入SLC

2.5 MLC管理

在之前的论文中,一种通用的方法 FTL一般采用(10年)

数据块和更新记录块的概念

如上图:

  • 一开始写的块是数据块
  • 因为SSD旧数据的写入不能直接更新原块,需要找新块写入,然后将旧块标记为无效,称为更新记录块

双层映射:L2P表与LB(log block)表

举个例子

假如要获得逻辑地址LBA 需要1的最新数据

  1. 通过查L2P获取其物理地址PBA,即4
  2. 查找LB表,4对应的指针不空,得到3
  3. 继续搜索3,得到相应的块 6
  4. 6对应指针为空,块链找齐,最终数据为6

对应的描述如图左侧所示,块通过指针连接成块链

当垃圾回收时,检查块链上的有效数据,并将其写入新的空闲块中
将块链变成数据块称为块链折叠

写回策略

不要马上写MLC,会看MLC里面有数据吗?如果没有,续写入SLC,也没啥特别的


文中第4节

  1. 提出了一种计算写入开销的方式,在文中作者自己的实验中得到了有效地认证,这里不再细述

  2. 计算了存放SLC、MLC的L2P表等数据结构需要的RAM大小


3、性能分析

  • 工作负载:一台便携PC的日常使用(很老的配置了,CPU都是赛扬),时间为一个月
  • 操作系统以及文件系统: XP和NTFS 以及 Linux和ext3

三种不同的混合SSD配置

3.1 响应时间快了

是普通SSD速度的1.8倍

RS 比:SLC响应时间相对MLC快多少

测试结果显示,SLC大小要超过128MB才能达到比较好的效果

3.2 GC操作减少了

通过记录对SSD的各类请求,可以看出,加入SLC后的混合SSD相比MLC SSD,大量减少了GC操作,从而提升了性能(上图RS比最高可达1.84)

3.3 写入的随机性大大减少

这是对MLC访问区块随时间变化的记录

3.4 寿命

由图(a)可看出,SLC与MLC各自的磨损均衡做的很不错,基本每个块磨损程度差别不大

这里因为SLC小,数据完全看不见

由图b可看出,SLC与MLC之间的磨损均衡也没有超过各自寿命的比值BW比
当SLC增大时,BW率还会低于各自寿命比值,这意味着MLC会比SLC磨损稍快
写入节流机制还是很有效的

另外,混合SSD的能耗更低,对比结果显示,以256MB SLC为例,仅需多花%4倍的钱,能耗可以低46%

总结

本文提出了一种MLC与SLC混合SSD的设计方案,通过冷热数据分流、写入节流机制,有效地利用好了SLC的优势,相对纯MLC SSD以更低的价格达到了更好的性能

但是文章比较老旧(10年),其中很多方法可能过时,并且针对于其自身配置的设计不可能完全适用于目前的设备

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章