NVMe固态硬盘性能的救星 究竟有何本领? (nvme固态硬盘性能)
整理分享NVMe固态硬盘性能的救星 究竟有何本领? (nvme固态硬盘性能),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:nvme的固态算最好的还是最差的,nvme固态硬盘和普通固态硬盘区别,nvme固态硬盘性能,nvme固态缺点,nvme固态硬盘性能,nvme固态硬盘性价比,nvm 固态硬盘,nvme固态硬盘性能,内容如对您有帮助,希望把内容链接给更多的朋友!
那这两种主机*接口AHCI与NVMe之间到底差在哪里呢?先看一个表格:AHCINVMeLatency6us2.8usMaximumqueue&queuedepth1commandqueuecommandsperqueueKqueuesKcommandsperqueueUncacheableregisteraccess(eachconsumes2Kcycles)6pernon-queuedcommand9perqueuedcommand2percommandMSI-XandinterruptsteeringSingleInterrupt2KMSI-XInterruptsParalleli*andmulti-threadsupportRequiressynchronizationlocktoissuecommandNolocking,doorbellregisterperqueue4KBcommandefficiency(4KBcriticalinclientPCs)TwoserializedhostDRAMfetchesrequiredOneBfetch 我们根据上面表格的内容,在六个方面比较一下AHCI与NVMe的分别: 1.延迟:AHCI有6us延迟,但是NVMe的延迟只有2.8us. 2.命令队列:AHCI只有一个命令队列与所有core共享,并且每个队列最大只能放置个命令,当需要执行的命令很多时,这时就会因为命令执行的等待浪费大量的时间;而NVMe最多可以支持K个命令队列,每个队列最大包含K个命令。与NVMe相比,AHCI真的弱爆了。 3.寄存器:AHCI配备了很多个寄存器,如果是NCQ本征命令队列,AHCI需要9个读写寄存器,如果命令*作是非NCQ*作,则需要6个读写寄存器。相比之下,NVMe只需要2个寄存器即可完成命令的读写周期。AHCI过多寄存器的访问开销会造成大量的延迟,这也是为什么SATA硬盘执行命令较慢的原因。但是,随着具有低延迟特点的PCIe固态硬盘的出现,搭配NVMe可以完美搞定这个问题。 4.中断:AHCI支持一个中断向量,而NVMe最大可以支持2KMSI-X中断向量,提升了响应的速度。 5.平行性:AHCI要求有同步时钟触发命令,而NVMe只需要触发每个队列的寄存器即可。 6.4KB命令效率:AHCI需要两块串行内存读取,而NVMe一次可以取出个字节。 不过,AHCI和NVMe虽然都支持并行性,但是由于不一样的规划目标造成了他们提供的方式的不一样。其中,NVMe通过采用*多个IO路径的内核实现PCIe固态硬盘的并行性。NVMe驱动程序会在主机和设备之间配对SubmissionQueue和CompletionQueue,主控的每个core都会被分配对应的SubmissionQueue和CompletionQueue,主机和设备之间也是基于队列内容进行数据交互。 NVMe协议中的队列主要分为两种:SubmissionQueue(SQ)和CompletionQueue(CQ)。如下图,多个SQ对应一个CQ,也就是说多个*IO队列中的命令执行后,执行状态在同一个CQ队列中反馈。在这里,终端用户*上的常见使用程序可以基于每个core建立并行*作,这样做的好处是可以减少中断次数。