NVME-SQ、CQ & DoorBell
参考资料:《深入浅出SSD》 , NVME协议1.3
SQ和CQ
全称Submission/Completion Queue
1.主机往SQ中写入命令,SSD往CQ中写入命令执行的结果
2.SQ和CQ有两种,
一种是Admin,用来放Admin命令,用以主机管理控制SSD
一种是IO,用来放IO命令,用以主机与SSD之间传输数据
3.SQ和CQ可以是一对一的关系,也可以是多对一的关系,它们是成对的
4.系统中只有一对Admin SQ/CQ,它们是一 一对应关系,IO SQ/CQ却可以有很多(最多为65536,即64k-1)
5.IO SQ/CQ不是一生下来就有的,它们需要通过Admin命令创建
6.主机端每个CPU只有一个CQ(主机端只能有一对Admin SQ/CQ,为一 一对应关系;每个CPU最多可以有一个IO CQ,但是可以有多个SQ)
可以有一个或多个SQ(多个SQ可以用来赋予不同的优先级)
实际系统中需要多少SQ, 取决于系统配置和性能需求,可灵活设置IO SQ
7.SQ和CQ都有一定的深度,对Admin SQ/CQ来说,其深度可以是2 ~ 4096(4K)
对IO SQ/CQ来说,其深度可以是2 ~ 65536(64K),队列深度是可以配置的(SQ和CQ的个数也是可以配置的ÿ