NVMe是一种主机(Host)与SSD之间的通信协议,在协议栈中隶属最高层
NVMe有三宝:Submission Queue(SQ)、Completion Queue(CQ)、Doorbell Register(DB)
有两种SQ和CQ:Admin SQ/CQ(一对,用于主机管理控制SSD),IO SQ/CQ(多对,用以主机与SSD之间传输数据)(队列均为环形队列,有头有尾)。
SQ用以主机发命令,CQ用以SSD回命令完成状态。
SQ/CQ一般在主机内存中
IO SQ/CQ的广度和深度可以灵活配置
DB是在SSD端的寄存器,用来记录SQ和CQ的头和尾的位置
NVMe处理命令需要8步:
1、主机写命令到SQ
2、主机写DB,通知SSD取指
3、SSD收到通知后,到SQ中取指
4、SSD执行指令
5、SSD指令执行完成,SSD往CQ中写结果
6、SSD发中断,通知主机指令完成
7、主机收到中断,处理CQ,查看完成结果
8、主机写DB,回复SSD处理完成
网友评论