Skip to main content

M.2

M.2,前身为Next Generation Form Factor (NGFF),是一种计算机内部扩展卡及相关连接器规范。它采用了全新的物理布局和连接器,将取代PCI Express Mini及与PCI Express Mini 兼容的mSATA标准。M.2具有灵活的物理规范,允许更多种类的模块宽度与长度,并与更高级的接口相配,使M.2比mSATA更适合日常应用的,尤其是用于超级本平板电脑等小型设备的固态存储[1][2][3]
计算机总线将M.2连接器转化为PCI Express 3.0(最多4个通道)、Serial ATA 3.0USB 3.0接口,后两者则配备单个逻辑端口。取决于对主机和设备类型支持的级别,接口的支持取决于M.2主机或设备制造商的选择。M.2连接器有几种不同的固定槽,代表着M.2主机和模块不同的目的和功能,避免用户将M.2模块插入到功能不兼容的主机连接器中。[1][2][4]
除了在逻辑接口的层面支持传统的AHCI,M.2标准还支持NVM Express(NVMe)作为M.2 PCI Express SSD的逻辑设备接口。支持AHCI能确保软件层面对传统SATA设备和传统操作系统的向下兼容性,而采用NVM Express的设计则能充分利用PCI Express存储设备的高性能,同时执行大量I/O操作。[1]:14[5]

特性

SATA Express软件体系结构的一个高层次概览,这也适用于M.2。[1]:14它支持传统SATA和PCI Express存储设备,包括AHCI和NVMe作为逻辑设备接口。[5]:4
总线分拆M.2连接器为PCI Express 3.0、Serial ATA (SATA) 3.0和USB 3.0(对USB 2.0向下兼容)。也因如此,M.2模块可以集结多种功能,包括Wi-Fi蓝牙卫星导航近场通信(NFC)、数字广播、无线千兆联盟(WiGig)、无线广域网英语Wireless WAN(WWAN)和固态硬盘(SSD)。[6]2013年8月SATA 3.2的版本规范中,正式将M.2设为新的存储设备格式,并对其硬件格式作出定义。[1]:12[7]
M.2规范提供最多四个PCI Express通道和一个逻辑性SATA 3.0(6 Gbit/s)端口,且全部都是通过同一个连接器分拆而成,因此一个M.2模块可能同时存在PCI Express和SATA存储设备。被分拆的PCI Express通道对主机与存储设备提供一个纯PCI Express连接,且没有额外的总线抽象层[8]在2013年10月的PCI-SIG推出的M.2规范1.0版本中,则提供了详细的M.2规范。[1]:12[9]
有三种逻辑设备接口和M.2存储设备接口命令集的选项可用,这可根据M.2存储设备的类型和操作系统的支持性选用:[1]:14[5][8]
传统SATA
用于SATA SSD,以及通过M.2连接器分拆出的AHCI驱动程序和旧式SATA 3.0 (6 Gbit/s)端口。
使用AHCI的PCI Express
用于PCI Express SSD和通过AHCI驱动程序和PCI Express通道提供的接口,使用AHCI访问PCI Express SSD,利用广泛的SATA支持在操作系统层面以提供非最佳性能的向下兼容。开发AHCI的时候, 系统的主机总线适配器 (HBA)的用途是将CPU/内存子系统通过一个相比慢得多的基于旋转磁介质的存储子系统相连,正因如此,AHCI在用于SSD设备时有一些固有的低性能问题,因为其行为更类似DRAM而非旋转介质。
使用NVMe的PCI Express
用于PCI Express SSD和通过NVMe驱动程序和PCI Express通道提供的接口,作为一个高性能并可扩展的主机连接器接口设计,尤其是专门为PCI Express SSD的接口而优化。NVMe已全新设计,为PCI Express SSD提供低延迟和并行性,助益现代CPU、平台和应用程序的并行性。在高层次水平,NVMe相比AHCI的主要优势是NVMe能充分、并行地利用主机的硬件和软件,它的设计优势包括更少的数据传输层级,更大的命令队列,以及更有效的中断处理。

插座外形和卡口

一个计算机主板上的M.2插座,位于图片的左上。该插座的类型为M key,提供两个螺栓固定点,允许2260和2280尺寸的M.2模块。
M.2标准的设计目的是为了修订和完善mSATA标准,较大的印刷电路板(PCB)可能是其主要诱因之一。随着mSATA带来PCI Express Mini Card的外形和连接器优势,M.2的设计旨在最大化利用PCB空间并最小化模块空间。作为其设计结果,M.2标准允许更长的模块和双面组件群,M.2 SSD设备可以提供更大的存储容量,与mSATA设备占用同样空间,但提供双倍的存储容量。[1]:20,22–23[3][10]
M.2模块的外形是长方形,在一侧有一个边缘连接器(有最多67针的75个点位,0.5毫米间距,各针分布在PCB的两侧),并在另一侧边的中心有一个半圆形安装固定孔。连接器上的各引脚额定最多50V和0.5A,而连接器本身要求耐受最多60次拔插。M.2标准允许模块宽度为12、16、22和30毫米,长度16、26、30、38、42、60、80和110毫米。市售的M.2扩展卡主要是22毫米宽,长度有30、42、60、80和110毫米等规格。[2][4][11][12]例如:2242表示22毫米宽, 42毫米长,2280表示22毫米宽, 80毫米长。
M.2模块是被安装到主机电路板提供的匹配的连接器,并且使用一个安装螺钉固定模块到指定位置。组件可能被安装在模块的任意侧面,实际的模块类型限定了可以安装的组件最大厚度;允许的组件最大厚度是每侧1.5毫米。有多种用于单侧或双侧的M.2模块主机端连接器,根据M.2扩展卡和主机PCB的情况提供不同的空间量。[3][4][11]主机上的电路板通常被设计为能接受多种长度的M.2模块,这也意味着接受较长M.2模块的插座通常也能接受较短的同类模块,只需要为较短的模块提供不同位置的安装螺钉。[13][14] M.2模块的PCB提供75位的边缘连接器;取决于模块类型,部分针位被去除以存在一个或多个缺口。主机上的M.2连接器(插座)可能填充一个或多个匹配的卡口,这取决于主机可接受的模块类型;截至2014年4月,主机侧的连接器可以只填充一个卡口(无论B或M型)。[4][11][15]此外,用于SATA或双通道PCI Express (PCIe ×2)的M.2插座卡口被称为"socket 2 configuration"或者"socket 2",用于四通道PCI Express (PCIe ×4)的插座卡口被称为"socket 3 configuration"或"socket 3"。[1]:15[16]
M.2模块卡口和提供的接口[4]:8[11]:3[17]
Key编号 卡口针数 提供接口
A 8 - 15 PCIe×2、USB 2.0、I2CDP×4
B 12 - 19 PCIe×2、SATA、USB 2.0、USB 3.0、音频、UIMHSICHSIC、I2C和SMBus
C 16 - 23 保留供未来使用
D 20 - 27
E 24 - 31 PCIe×2、USB 2.0、I2C、SDIOUARTPCM
F 28 - 35 未来存储器接口(FMI)
G 39 - 46 保留供自定义使用(在M.2规范中未使用)
H 43 - 50 保留供未来使用
J 47 - 54
K 51 - 58
L 55 - 62
M 59 - 66 PCIe×4、SATA和SMBus
M.2模块最大组件厚度[4]:8[11]:3
类型编号 正面 背面
S1 1.20 mm 不适用
S2 1.35 mm 不适用
S3 1.50 mm 不适用
D1 1.20 mm 1.35 mm
D2 1.35 mm 1.35 mm
D3 1.50 mm 1.35 mm
D4 1.50 mm 0.70 mm
D5 1.50 mm 1.50 mm
B与M位置的M.2锁定槽。各针在M.2的两侧排列。[15]
举例来说,有B和M型两个缺口的M.2模块,使用最多两个PCI Express通道并提供广泛的兼容性,而只有一个缺口的M型M.2使用最多四个PCI Express通道;以上两例也可能提供SATA存储设备。类似的卡口适用于提供USB 3.0连通性的M.2模块。[4][15][17]
各种类型的M.2设备使用“WWLL-HH-K-K”或“WWLL-HH-K”命名表示方案,其中“WW”(width,宽度)和“LL”(length,长度)分别表示以毫米为单位的模块宽度和长度。 “HH”部分是一个编码形式,表示模块是单侧或者双侧,以及已安装组件的最大厚度,可能的值已列在右上表中。模块卡口指定在“K-K”部分,使用左上表中的key ID表示;它也可能指定为仅“K”,如果该模块只有一个缺口。[4][11]
除了插入式模块,M.2标准也包括永久焊接单面模块的选项。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...