som*_*ega 22 pci-express ssd nvme m2-connector
SATA M.2 SSD 在物理层使用 SATA,并使用 ATA 作为数据传输的软件协议。
NVMe M.2 SSD在物理层使用PCIe,并使用NVMe作为数据传输的软件协议。
在这个问题中我被告知。
当然,PCIe 比 SATA 更快,因此 NVMe SSD 的速度更高。
但为什么需要新的软件协议呢?为什么我们不能让 PCIe M.2 SSD 与 ATA 通信?(*)
我认为更高的速度来自 PCIe,而不是来自 NVMe 协议。为什么我们需要 NVMe?
(*) 我认为 AHCI 不是必需的,因为 SSD 可以通过其 PCI 地址来寻址。ATA 还可以传输元数据,例如磁盘大小。
use*_*686 32
虽然我找不到参考资料,但我记得的一个具体区别是 NVMe 被设计为高度并行。我可能记错了,但是:
\n通过旧版 IDE 的 ATA 根本不支持并行命令。
\nATA 通过 AHCI 支持 NCQ,最多允许发出 32 个命令(可以按任何顺序返回数据),但并非所有命令都是“可排队的”。SCSI 还支持“标记队列”,最多允许发出 16 个命令。
\n如果我理解正确的话,这意味着对于固态磁盘(没有“寻道时间”),这些数字足够低,甚至可以立即处理最大大小的队列,并且磁盘返回到不执行任何操作,直到主机注意到并且发出更多请求。
\n另一方面,NVMe 的设计允许最多 64,000 个排队命令,允许 SSD 在需要时保持持续忙碌。
\n类似的比较可以在Phison(SSD控制器制造商)的博客中找到,具体是这个表,其中写道:
\n也可以看看:
\n\n\n为什么我们不能让 PCIe M.2 SSD 与 ATA 通信?(*)
\n(*) 我认为 AHCI 不是必需的,因为 SSD 可以通过其 PCI 地址来寻址。
\n
即使 SSD 自带控制器(一些早期的 NVMe 之前的 SSD 实际上就是这么做的!),您仍然需要 AHCI 之类的东西,因为它定义了如何通过 PCI 地址等来访问磁盘。AHCI 已经与获取磁盘特定信息 \xe2\x80\x93 无关,而这些信息始终通过 ATA“IDENTIFY DEVICE”和类似命令来完成。但是需要就如何将这些命令提交到磁盘以及如何接收响应(特别是 DMA 和队列等)\xe2\x80\x93 达成一致,这就是 AHCI 的目的。
\n当然,SSD 可以将 ATA 与 AHCI 以外的其他设备一起使用,只要操作系统有相应的驱动程序(就像AHCI 存在之前的许多驱动程序一样),但最终此类“非标准”设备将趋向于新的标准协议,无论是被命名为 NVMe 或其他名称。
\n(虽然 ATA 已经可以在没有 AHCI 的情况下通过传统的 PCI IDE 接口或通过 AoE(以太网上的 ATA)等网络使用,但对于此类用途,它不像 SCSI 那样流行 \xe2\x80\x93也可以在 SAS、FireWire、Infiniband 和 iSCSI 等不同传输上使用;最后,NVMe 可以使用 NVMe-oF 在网络上使用。)
\n 归档时间: |
|
查看次数: |
5470 次 |
最近记录: |