som*_*ega 6 ssd hard-drive sata nvme m2-connector
(我在这个问题中说的有些话是错误的。不要忘记阅读已接受的答案。)
首先我想说的是,SATA没有数据传输的软件协议。SATA CD 驱动器、SATA HDD 和 SATA SSD 使用 SCSI 作为软件协议。
很多人不知道这一点,我什至在 SE 上看到过公认的答案,但他们并不知道这一点。另外,在德语维基百科上,他们将 AHCI 与 NVMe 进行了比较。他们应该将 SCSI 与 NVMe 进行比较。AHCI是SATA用来传输数据的软件协议,这是一个很大的错误。
旧的 IDE 驱动器使用 ATAPI,即 ATA 上的 SCSI。所以即使那些也使用 SCSI。
AHCI 仅由 SATA 控制器用来枚举磁盘。不是通过磁盘来传输数据。
我有一个普通的 SATA SSD 和 SATA DVD 驱动器以及lshw都使用 SCSI 作为软件协议的校样输出。请参阅以“bus info:”开头的行。
*-cdrom
description: DVD-RAM writer
product: BD-RE BH16NS55
vendor: HL-DT-ST
physical id: 0
bus info: scsi@4:0.0.0
logical name: /dev/cdrom
logical name: /dev/cdrw
logical name: /dev/dvd
logical name: /dev/dvdrw
logical name: /dev/sr0
version: 1.01
capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram
configuration: ansiversion=5 status=nodisc
*-disk
description: ATA Disk
product: SanDisk SDSSDH3
physical id: 1
bus info: scsi@5:0.0.0
logical name: /dev/sda
version: 20RL
serial: 2140LR450907
size: 931GiB (1TB)
capabilities: partitioned partitioned:luks
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512
Run Code Online (Sandbox Code Playgroud)
现在有支持 PCIe、SATA 和 USB 卡的 M.2 连接器(参见维基百科)。这3种类型是物理层使用的类型。例如,他们定义了电压。他们没有提及软件协议。
use*_*686 39
\n\n首先我想说的是,SATA没有数据传输的软件协议。
\n
这是部分正确的,因为软件协议被命名为“ ATA ”而不是“SATA”(这只是一个特定的物理层)。
\n然而,ATA 确实作为一种完全不同于 SCSI 的协议而存在,并且其规范(例如ATA 命令集)可以在不同的地方找到,例如来自 T13 技术委员会。
\n\n\nSATA CD 驱动器、SATA HDD 和 SATA SSD 使用 SCSI 作为软件协议。
\n
他们不这样做。大多数使用ATA作为协议,但 CD/DVD 驱动器除外,它们使用 SCSI-over-ATA(又名 ATAPI)。
\n(SATA 设备可能连接到 SAS HBA,但它们不会切换到 SCSI 模式,即使 \xe2\x80\x93 是 HBA 与 SAS/SCSI 一起实现 SATA 物理层和 ATA 命令集。)
\n\n\n旧的 IDE 驱动器使用 ATAPI,即 ATA 上的 SCSI。所以即使那些也使用 SCSI。
\n
仅 CD/DVD 驱动器使用 ATAPI;其余的纯粹是 ATA。
\n\n\n我有一个普通的 SATA SSD 和 SATA DVD 驱动器以及 lshwproofes 的输出,它们都使用 SCSI 作为软件协议。请参阅以“bus info:”开头的行。
\n
不,它显示的是 Linux 使用libata驱动程序,该驱动程序将 ATA 设备呈现给内核,就好像它们是 SCSI 设备一样。Libata 被记录为“根据 T10 SAT 规范为 ATA 设备提供 SCSI<->ATA 转换”。
\n所讨论的规范是“ SCSI to ATA Command Translations ”,这是 T10 技术委员会的一份文档,描述了如何实现此类转换。USB 至 SATA 桥接器也使用相同类型的转换。(T10 还定义了针对 ATA 特定功能发送直通 ATA 命令的能力;这就是通过 USB 转 SATA 桥接器访问 ATA SMART 等功能的方式。)
\n这是一个“相对较新”的更改 \xe2\x80\x93 从 ~2000 启动 Linux 内核会显示与 IDE 设备“/dev/hda”相同的磁盘。同样,几乎所有非 Linux 操作系统仍会显示 IDE/ATA/SATA 设备,以区别于 SCSI。
\n(在很短的时间内,Linux 也有类似的 NVMe 到 SCSI 的转换,但很快就被删除,取而代之的是纯粹的 NVMe 接口。看起来 NVMe 和 SCSI 之间的差异比 ATA 和 SCSI 之间的差异要大得多。)
\n\n\n例如,SATA M.2 磁盘是否支持 AHCI,或者 SCSI 是否足以传输容量?
\n
SATA 磁盘通常根本不支持 AHCI;这只是操作系统和 SATA 主机控制器(“HBA”)之间使用的接口。它代表“高级主机控制器接口”。
\nM.2 规格的 SATA 磁盘可以包含其自己的 AHCI 主机控制器(然后通过 M.2 连接器使用 PCIe),但这种情况相当罕见。大多数时候,M.2 形式的 SATA 设备仅使用 M.2 提供的 SATA 通道连接到主板的现有 AHCI 主控制器。
\n\n\nSATA 使用 AHCI 进行枚举,使用 SCSI 进行数据。
\n
不,如果它是 SCSI 磁盘,则相同的 SCSI 将用于枚举(使用 SCSI“ INQUIRY ”命令或其 ATA 等效命令)和数据传输。SATA磁盘不是SCSI磁盘,但同样适用;ATA命令集还包括枚举。
\nAHCI也参与其中,但位置不同:它用于枚举主机控制器本身,并通过 PCI“总线”与主机控制器交换 ATA 命令和数据。
\n(换句话说,ATA 命令通过 AHCI 接口从主机发送到控制器,然后通过 SATA 协议从控制器发送到磁盘。)
\n\n\n另外,在德语维基百科上,他们将 AHCI 与 NVMe 进行了比较。他们应该将 SCSI 与 NVMe 进行比较
\n
AHCI 和 NVMe在某种程度上具有可比性,因为两者都在 PCI 总线上提供了特定的编程接口(就像 AHCI 可以与传统 I/O 端口 IDE 编程接口进行比较一样)。
\n换句话说,NVMe同时定义了命令层和主机接口,因此它类似于SATA + AHCI的组合,或者类似于SCSI +任何存在的SCSI HBA接口的组合。
\n\n\nPCIe NVMe 磁盘使用 NVMe 存储数据。它使用哪种协议进行枚举?它不能是 NVMe,因为 PCIe 显卡不支持 NVMe。必须有另一个协议。
\n
是的,有两层枚举。
\nPCI本身确实有自己的总线枚举协议,它向主机操作系统通知设备类别和产品ID(允许连接正确的驱动程序);该协议与设备类型无关。(据我所知,PCI Express 的高级机制与经典 PCI 基本相同,尽管低级细节非常不同。)
\n之后,每个更高级别的协议驱动程序都会执行自己特定于该协议 \xe2\x80\x93 的枚举,例如,如果设备被检测为 NVMe 控制器,则发出 NVMe 命令来查询其“磁盘特定”参数;如果检测到它是 AMD GPU,则 AMD GPU 驱动程序会执行自己的操作。
\n\n\n为什么没有M.2 USB 盘?(在物理层使用USB并连接到主板的M.2插槽的磁盘。我不是在谈论USB M.2情况。)
\n
很可能不需要它们,因为 SATA(甚至 NVMe 更是如此)已经可以在同一插槽上使用,并且往往提供比 USB 大容量存储更好的性能。
\n大多数“USB”磁盘(除了少数例外)本来就不是 USB/SCSI,而是实际上内部使用 SATA 至 USB 桥接器的 SATA 磁盘。对于要连接到 M.2 插槽的此类磁盘,如果同一磁盘只能直接使用 M.2 插槽的现有 SATA 通道,那么使用 SATA 转 USB 桥接器将毫无意义。
\n虽然原生 USB 海量存储磁盘确实存在(甚至可能通过 UASP 提供不错的性能),但只有当 USB 是唯一选择时它们才有意义 \xe2\x80\x93 原生 SATA 对于低性能磁盘仍然更有意义;适用于高性能的原生 NVMe。
\n\n\n为什么没有 M.2 SATA NVMe 磁盘?(SATA 位于物理层,NVMe 作为软件协议。)
\n
再说一次,因为有更好的选择。
\n请记住,M.2 插槽不是“SATA 或 NVMe”;它们是“SATA 或 PCIe”,允许任何类型的 PCIe 设备连接到它们\xe2\x80\xa6,包括 AHCI 主机控制器。
\n因此,即使该产品针对仅 PCIe 的 M.2 插槽(即没有任何 SATA 连接),包含标准的 \xe2\x80\x93 仍然会更简单且更便宜 \xe2\x80\x93 SATA AHCI 主机控制器比更昂贵且不太可靠的 SATA 到 NVMe 转换器(无论如何内部必须包含 SATA 主机控制器)。
\n(如果 M.2 插槽已经提供 SATA 通道,则这两种选择都比直接将同一磁盘连接到主板的 SATA AHCI 控制器更昂贵。)
\n