NVMe 相关知识

(NVMe)协议。这些新协议利用了多队列SSD (MQ-SSD)的概念,其中多个主机端I/O请求队列(在软件中)直接暴露给SSD控制器。直接将请求队列暴露给SSD控制器有两个好处:(1)不再需要操作系统软件堆栈来管理I/O请求;而且(2)SSD可以比OS做出更有效的I/O请求调度决策,因为SSD确切地知道它的内部资源中哪些是可用的,哪些正在忙于处理其他请求。因此,协议消除了操作系统软件栈,使mq - ssd能够提供比传统ssd更高的性能。
不幸的是,虽然OS软件栈的消除带来了显著的性能改进,但我们在本文中指出,它引入了一个新问题:不公平。这是因为操作系统软件栈的消除消除了在老式ssd中用于在应用程序之间提供公平性的机制。
在这里插入图片描述
图1显示了MQ-SSD的内部组织。SSD内的组件被分成两组:(1)后端,它由数据存储单元组成;以及(2)前端,包括控制单元和通信单元。前端和后端一起工作,为构成I/O请求的多个页面大小的I/O事务提供服务。
后端包含多个通道(即请求总线),其中通道可以并行地为I/O事务服务。每个通道连接到底层内存(例如,NAND闪存)的一个或多个芯片。每个芯片由一个或多个die组成,每个die包含一个或多个plane。每个plane可以与其他plane并发地服务一个I/O事务。总之,这为I/O事务提供了四个级别的并行性(通道、chip、die和plane)。
前端管理后端资源,并向后端通道发出I/O事务。在前端有三个主要组件:(1)主机接口逻辑(HIL),它实现了用于与主机通信的协议,并以循环方式从主机端请求队列中获取I/O请求;(2) flash翻译层(FTL),使用嵌入式处理器和DRAM管理SSD资源和处理I/O请求;和(3)flash信道控制器(FCCs),用于其他前端模块与后端芯片之间的通信。
处理I/O请求有七个主要步骤。(1)主机生成请求并将请求插入到主机端的专用in-DRAM I/O队列中,其中每个队列对应一个I/O流。MQ-SSD中的HIL从主机端队列获取请求,并将其插入到SSD中的设备级队列中。(3) HIL解析请求并将其分解为多个事务。FTL中的地址转换模块为每个事务执行逻辑到物理地址转换。FTL中的事务调度单元(TSU)为服务调度每个事务,并将该事务放入芯片级软件队列中。(6) TSU从芯片级队列中选择一个事务,并将其分发给相应的FCC。(7) FCC向目标后端芯片发出命令执行事务。

TSU负责调度I/O事务和GC事务。对于I/O事务,它为每个后端芯片在DRAM中维护一个读队列(图1中的RDQ)和一个写队列(WRQ)。GC事务保存在DRAM中独立的读(GC- rdq)队列和写(GC- wrq)队列中。TSU通常采用先到先得的事务调度策略,并且通常将I/O事务优先级置于GC事务之上。为了更好地利用后端可用的并行性,一些最先进的TSUs部分地重新排序队列中的事务。先进的MQ-SSD I/O调度器倾向于优先考虑读而不是写来提高整体性能。为了实现读优先级,TSUs主要采用两种方法:(1)读队列中的事务优先级始终高于写队列中的事务;(2)读事务可以抢占正在进行的写事务。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值