关于M.2接口协议及相关存储设备通信机制的技术问询
关于M.2接口协议及相关存储设备通信机制的技术问询
注意:我在这个问题里说的有些内容是错误的,别忘了看已采纳的答案。
先跟大家分享我梳理的一些存储协议相关的认知,可能有些地方不对,欢迎指正:
- 其实不存在专门用于数据传输的SATA软件协议,SATA光驱、硬盘、SSD都是用SCSI作为软件协议的。很多人不知道这点,我甚至见过SE上的采纳答案都没意识到,就连德语维基百科都把AHCI和NVMe对比,其实应该是SCSI和NVMe对比才对——认为AHCI是SATA用来传输数据的软件协议,这是个很大的误区。
- 老IDE硬盘用的ATAPI其实是ATA之上的SCSI协议,所以这类设备本质上也用SCSI。
- AHCI只被SATA控制器用来枚举磁盘,磁盘本身传输数据并不用它。我有一块普通SATA SSD和SATA光驱,
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
接下来是我关于M.2接口的几个疑问,希望懂行的朋友解答:
- M.2接口支持PCIe、SATA、USB三种物理层类型(主要定义电压这类物理参数),但这些和软件协议无关。那采用SATA物理层的M.2磁盘,是需要用AHCI,还是只靠SCSI就能传输容量这类设备信息?
- SATA用AHCI做设备枚举、SCSI传数据;PCIe NVMe磁盘用NVMe传数据,那它用什么协议做枚举?总不可能是NVMe吧,毕竟PCIe显卡就不用NVMe做枚举,肯定有另一种专门的协议。
- 维基提到M.2也支持USB,那这类基于USB物理层的M.2设备,枚举和数据传输分别用什么软件协议?
- 为什么市面上没有M.2 USB磁盘?(这里指的是物理层原生用USB、直接插主板M.2插槽的设备,不是那种把M.2硬盘装在USB转接外壳里的产品)
- 为什么没有M.2 SATA NVMe磁盘?(也就是物理层用SATA、软件协议用NVMe的存储设备)
备注:内容来源于stack exchange,提问作者zomega
相关产品推荐
相关产品推荐

