行业新闻 (News) 芯片封装主页/ 行业新闻 / 管理闪存芯片,Open Channel SSD靠的是什么?
< 返回列表

管理闪存芯片,Open Channel SSD靠的是什么?

可可读OpenChannelSSD之四

Pblk: Physical Block Device

物理块设备(pblk)是LightNVM target,实现了完全关联的基于主机的FTL,该FTL公开了传统的块I/O接口。本质上,pblk的主要职责是:

处理控制器和特定介质之间的约束 (例如,缓存必要的数据量来对Flash页进行编程)
将逻辑地址映射到物理地址(4KB粒度),并确保完整性,最终在面对关联映射表(L2P)崩溃时进行恢复
处理错误
实现垃圾回收
处理flush操作:因为典型的闪存页面大于4KB,flush会强制pblk的运行中数据在完成之前存储在设备上,文件系统或应用程序可能需要它

Write Buffering

写缓冲由host进行管理,写缓冲区作为圆环缓冲区进行管理。它在内部分解为两个缓冲区:一个数据缓冲区,用于存储4KB用户数据入口(4KB对应于一个扇区的大小),以及上下文缓冲区,用于存储Perentry元数据。缓冲区的大小是闪存页大小(FPSZ),要写入的闪存页数(下/上页)和PU数(N)的乘积。例如,如果FPSZ = 64KB,PP = 8,N = 128,则写缓冲区为64MB。写缓冲区由多个产生者和单个使用者访问。

产生者:pblk用户和pblk自己的垃圾收集器都会将I/O作为entry插入写缓冲区。写入新条目时,将使用条目行更新L2P表,并确认写入。如果缓冲区已满,则重新安排写入。如果传递进来的逻辑地址的映射已经存在,则旧条目将无效。

使用者:当有足够的数据填充闪存页面或发出刷新命令时,单个线程将使用缓冲的entries。如果使用multi-plane编程,则还必须考虑plane的数量(例如,具有四个plane编程的16KB页面一次写入需要64KB chunks)。此时,逻辑地址已映射到物理地址(逻辑的chunk->Pus的映射)。默认情况下,pblk的映射策略针对吞吐量和跨channel和PUs的条带化数据,采用page-mapping。可以使用其他data placement策略。映射发生后,将形成vector写命令并将其发送到设备上, 需要注意,在刷新的情况下,如果没有足够的数据填充闪存页面,则pblk在发送到设备之前会在写入命令中添加padding(即未映射的数据)。

为了遵守下/上页面对,在映射页面时不修改L2P表。这样,读取将定向到写入缓冲区,直到所有页对都已保留。发生这种情况时,将使用物理地址更新L2P表。

用于映射传入的I/O的channel和PUs的数量可以在运行时调整,将它们称为active PUs。

例如,考虑具有4个channel 和8 PUs/Channel的open-channel SSD上有4个active PUs。首先,PU0,PU8,PU16和PU24处于active状态,page以循环方式(round-robin)写在这些PU上。当PU0上的一个block填满时,该PU变为inactive状态,PU1接管为active PU。在任何时间点,只有4个PU处于active状态,但是数据仍以page granularity在所有可用PU上进行条带化。

当应用程序或文件系统发出刷新命令时,pblk确保将所有未完成的数据写入介质。使用者线程清空写缓冲区,并在必要时使用padding来填充最后一个闪存page。随着数据的保留,最后的写命令将保留一个额外的注释,该注释指示必须在刷新成功之前完成它。

Pblk: Data Placement

完全关联的L2P表
映射粒度4KB(1GB per 1TB)
预填充的bitmap encoding map
bitmap编码不良块和元数据
在快速路径上节省昂贵的计算(division/modulus)
L2P映射与I/O scheduling分离
跨channels和LUNs进行条带化以优化吞吐量
元数据在每个line的开头和结尾
轻松添加新的映射策略
简化错误的处理
不一定会影响磁盘格式
默认:

Pblk: I/O Scheduling

目标
例如:1 core (E5-2620, 2.4GHz) can move ~3.7GB/s
充分利用介质带宽
最小化达到稳态的影响
根据设备的容量对用户和GC I/O进行速率限制
单个写线程
与用户数据保持一致,以最大程度地减少干扰
在所有lines上分配擦除价格
与用户数据保持一致,以最大程度地减少干扰
在映射缓冲区entries时提交用户写的I/O
提交前一line元数据的写入I/O
提交擦除I/O用于下一line

Pblk: Mapping Table Recovery
Pblk: Error Handling

Pblk: Garbage Collection

基于有效sector数的基于成本的回收模式
在一line中将X LUNs专用于GC
速率限制用户I/O是设备容量的函数
GC专用写缓冲区(共享缓冲区容量的百分比)
在line上分开热/冷数据
两种可用的GC模式
几个GC读取线程
将数据复制到GC缓冲区
在写线程中提交GC I/O
使用host的CPU来搬移数据
可选:使用vector复制命令

任何log-structured的FTL,pblk必须实现垃圾收集。通过垃圾回收任何有效页并返回块以进行新写入来重新利用块。假定在设备上或在LightNVM内核中发生了Wear-leveling。因此,pblk只需为每个块维护一个有效页数,然后选择有效扇区数最少的块进行回收。

逻辑到物理映射表的逆序未存储在host内存中。为了找到反向映射,利用了一个事实,即块在完全写入后首先被回收。因此,可以使用存储的部分L2P表在块的最后一页上进行恢复。如果该块中的页面仍然有效,则将其排队等待重写。安全地重写了所有页面后,原始块将被回收。

为了防止用户I/Os干扰垃圾回收,pblk实现了PID控制的速率限制器,其反馈循环基于可用空闲块的总数。当可用块的数量低于可配置的阈值时,GC将启动。注意也可以从sysfs管理GC。刚开始,GC和用户I/O都在争夺写缓冲区。

但是,随着可用块数量的减少,GC会被优先排序,以确保已经持久保存的数据的一致性。反馈循环可确保传入的I/O和GC I/O趋于稳定状态,在此状态下,给定用户I/O工作负载,将应用足够的垃圾回收。速率限制器使用写缓冲区entry作为控制传入I/O的方法。根据反馈回路保留条目。如果设备达到其容量,则用户I/O将被完全禁用,直到有足够的可用块可用。

· 2020-01-19 10:12  本新闻来源自:,版权归原创方所有

阅读:995
  • 联系长芯

    重庆总部:重庆市长寿区新市街道新富大道5号佳禾工业园8栋2层
    电话:023 40819981 (前台)

    深圳办事处:深圳市南山区留仙大道 1213 号众冠红花岭工业南区 2 区 1 栋 1 楼
    电话:0755-26975877 (前台)

    电子邮件:sales@longcore.com

    网址:http://www.longcore.com