基于NVMe接口的三维闪存固态盘固件研究
发布时间:2020-10-11 05:55
NAND Flash的高密度、大容量、非易失等特性,使其在存储领域得到广泛应用。NVMe(Non-Volatile Memory express)接口具有带宽高、读写速度快、支持多队列等特点,需要硬件、固件和软件层相互协作配合,提升NAND Flash并行性及其性能。三维闪存堆叠技术的出现,进一步提升了NAND Flash的存储密度与存储容量,却带来更严重相邻页编程干扰问题。现有工作在MTD(Memory Technology Device)驱动层提出交错编程算法,减少编程干扰对数据的影响,但空间利用率较低,且在空闲空间低时,算法效果不佳。针对三维闪存相邻页编程干扰严重的问题,在设备固件层设计实现了顺序交错混合闪存转换层算法(Sequence and Interlace Hybrid FTL,SIH-FTL)。提出细拆物理块和干扰检测策略,提高空间利用率并进一步降低编程干扰;提出多级队列冷热数据处理策略,将不同热度数据分配到合适的队列编程,冷数据采用顺序编程方式,进一步提升块利用率;提出高页优先迁移策略,降低高页受到的编程干扰。设计实现了NVMe固件,使设备支持NVMe接口。在固态盘模拟器上对不同负载进行测试,与现有的算法相比,SIH-FTL算法平均能够减少10%的读干扰错误和25%的写干扰错误。测试结果表明多级队列冷热数据处理策略对降低写干扰效果显著,约减少30%的写干扰错误;高页优先迁移策略对降低读干扰效果显著,约减少17%的读干扰错误。通过在实验室自主开发的固态盘硬件平台上实测,NVMe固件程序能够和通用NVMe驱动通讯并使设备正常工作。
【学位单位】:华中科技大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP333
【部分图文】:
华 中 科 技 大 学 硕 士 学 位 论 文NVMe 固件实现4.3.1 硬件配置硬件配置主要是指在建硬件工程时配置 PCIe。主机和 NVMe 固件通过设备上的PCIe 进行通讯。为了让主机能够识别 NVMe 设备,需要先和设备的 PCIe 对接。和NVMe 相关的 PCIe 配置信息如下:(1) PCIe BAR0。主机和 NVMe 控制器构建初步通讯主要通过 PCIe BAR0 实现,NVMe 协议定义了 NVMe 控制器寄存器结构,该结构的起址是 PCIe BAR0 的起址PCIe BAR0 的存储空间主要在设备上。在搭建硬件工程的时候,设备会分配一段地址给 PCIe BAR0。具体配置如图 4-3 所示,PCIe BAR0 的起址位置设置为 0x2000000空间大小为 2 的 14 次方,共 16KB。
图 4-5 设备信息配置图(2) MSI 中断。由于 DSAL SSD 2.0 硬件原型平台采用的是 PCIe2.0 接口,还持 MSI-X,所以在配置的时候仅配置 MSI 中断。如图 4-4 所示。将 Number of M置为 5,意指有 2 的 5 次方共 32 个中断。(3) 设备信息。设备信息设置如图 4-5 所示。NVMe 协议定义了 NVMe 设备CIe Class Code 必须是 0x010802。在配置 PCIe 时,主要把 PCIe Class Code 设置x010802。其他设备信息如 PCIe Vendor ID(PCIe 厂商号)可以自行定义。.3.2 固件实现NVMe 固件模块具体实现如下:(1) 初始化模块。初始化模块包括 NVMe 控制器管理结构和 NVMe 控制器寄存器结构初始化。NVMe 控制器寄存器结构用于管理一组用于主机与 NVMe 控制器交互的寄存
NVMe 固件的功能性测试将在 DSALSSD 2.0 硬件原型平台上完成。该平lash 芯片,配备了基础的 FTL 算法,主要查看 NVMe 固件下的平台设备识别、进行正常读写。由于 DSALSSD 3.0 硬件原型平台还不够完善,DSA件原型平台仅支持 2D Flash;同时在硬件平台下,无法测试真实负载环境性,SIH-FTL 算法将在模拟器上实现并验证。在固态盘模拟器中实现另外转换层算法作为对照,并加入了一些对照实验,测试各个模块的具体效果NVMe 固件功能性测试 测试平台硬件平台:实验室自主开发的 DSAL SSD 2.0 硬件原型平台(如图 5-1 所ung 的 K9WAG08U1A 闪存芯片。软件平台:CentOS6.7、Linux 4.4.0 内核、Xilinx 开发套件 SDK14.4、XP
【参考文献】
本文编号:2836172
【学位单位】:华中科技大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP333
【部分图文】:
华 中 科 技 大 学 硕 士 学 位 论 文NVMe 固件实现4.3.1 硬件配置硬件配置主要是指在建硬件工程时配置 PCIe。主机和 NVMe 固件通过设备上的PCIe 进行通讯。为了让主机能够识别 NVMe 设备,需要先和设备的 PCIe 对接。和NVMe 相关的 PCIe 配置信息如下:(1) PCIe BAR0。主机和 NVMe 控制器构建初步通讯主要通过 PCIe BAR0 实现,NVMe 协议定义了 NVMe 控制器寄存器结构,该结构的起址是 PCIe BAR0 的起址PCIe BAR0 的存储空间主要在设备上。在搭建硬件工程的时候,设备会分配一段地址给 PCIe BAR0。具体配置如图 4-3 所示,PCIe BAR0 的起址位置设置为 0x2000000空间大小为 2 的 14 次方,共 16KB。
图 4-5 设备信息配置图(2) MSI 中断。由于 DSAL SSD 2.0 硬件原型平台采用的是 PCIe2.0 接口,还持 MSI-X,所以在配置的时候仅配置 MSI 中断。如图 4-4 所示。将 Number of M置为 5,意指有 2 的 5 次方共 32 个中断。(3) 设备信息。设备信息设置如图 4-5 所示。NVMe 协议定义了 NVMe 设备CIe Class Code 必须是 0x010802。在配置 PCIe 时,主要把 PCIe Class Code 设置x010802。其他设备信息如 PCIe Vendor ID(PCIe 厂商号)可以自行定义。.3.2 固件实现NVMe 固件模块具体实现如下:(1) 初始化模块。初始化模块包括 NVMe 控制器管理结构和 NVMe 控制器寄存器结构初始化。NVMe 控制器寄存器结构用于管理一组用于主机与 NVMe 控制器交互的寄存
NVMe 固件的功能性测试将在 DSALSSD 2.0 硬件原型平台上完成。该平lash 芯片,配备了基础的 FTL 算法,主要查看 NVMe 固件下的平台设备识别、进行正常读写。由于 DSALSSD 3.0 硬件原型平台还不够完善,DSA件原型平台仅支持 2D Flash;同时在硬件平台下,无法测试真实负载环境性,SIH-FTL 算法将在模拟器上实现并验证。在固态盘模拟器中实现另外转换层算法作为对照,并加入了一些对照实验,测试各个模块的具体效果NVMe 固件功能性测试 测试平台硬件平台:实验室自主开发的 DSAL SSD 2.0 硬件原型平台(如图 5-1 所ung 的 K9WAG08U1A 闪存芯片。软件平台:CentOS6.7、Linux 4.4.0 内核、Xilinx 开发套件 SDK14.4、XP
【参考文献】
相关博士学位论文 前1条
1 胡洋;高性能固态盘的多级并行性及算法研究[D];华中科技大学;2012年
相关硕士学位论文 前1条
1 余晨晔;基于重复写入特性的大容量闪存页读写优化[D];华中科技大学;2016年
本文编号:2836172
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2836172.html