NVMe控制器之完成信息解析模块
完成信息解析模块用于解析NVMe命令执行完成后返回的信息。该模块首先提取完成信息中的Status Field字段和ID号。通过检查Status Field字段,判断NVMe命令是否成功执行。若命令成功执行,则释放对应ID号的SQ中的缓存空间,以便新的NVMe提交命令使用。若命令执行失败,则将Error信号被拉高,并将该ID号反馈给队列管理模块,以便重新发送该命令。
为了提升系统传输效率,将2.1.4节中介绍的NVMe命令执行流程中的中断步骤取消,不通过中断的方式来通知Host检查完成信息,而是利用硬件电路的并行特点,实时对完成信息进行检测。并通过添加一级寄存器来提高效率,可以不间断的接收完成信息,其工作流程为:
(1)接收128bit的完成信息,并将Status Field字段、ID字段、SQ Head Pointer字段和CQ Tail Pointer字段提取出来;
(2)判断Status Field字段的值是否为000000000000000b,若是则将done信号拉高,同时将ID字段传输至队列管理模块,否则将Error信号拉高。