SSD简介。 第2部分。界面



在“ SSD简介”系列的最后一部分中,我们讨论了磁盘外观的历史。 第二部分将介绍与驱动器交互的界面。

处理器和外围设备之间的通信根据称为接口的预定义约定进行。 这些协议控制交互的物理和软件级别。

接口-系统元素之间交互的一组工具,方法和规则。

接口的物理实现会影响以下参数:

  • 通信信道带宽;
  • 同时连接设备的最大数量;
  • 发生的错误数。

磁盘接口建立在I / O端口上 ,这与内存I / O相反,并且不占用处理器地址空间。

并行和串行端口


根据数据交换的方式,输入输出端口分为两种:

  • 平行
  • 连续的。

顾名思义,并行端口一次发送一个由几个位组成的机器字。 并行端口是交换数据的最简单方法,因为它不需要复杂的电路解决方案。 在最简单的情况下,沿其自身的信号线发送机器字的每个位,并使用两条服务信号线进行反馈: 数据就绪数据已接收


乍看之下,并行端口可以完美缩放:更多的信号线-一次传输更多的比特,因此吞吐量更高。 然而,由于信号线数量的增加,它们之间会发生干扰相互作用,从而导致发送消息的失真。

串行端口与并行端口相反。 数据一次发送一次,这减少了信号线的总数,但使I / O控制器复杂化。 发送器控制器一次接收机器字,并且必须一次发送一位,而接收器控制器又必须接收位并以相同顺序存储。


少量的信号线可以增加消息传输的频率,而不会产生干扰。

SCSI



小型计算机系统接口(SCSI)早在1978年就出现了,最初旨在将各种配置文件的设备集成到单个系统中。 SCSI-1规范提供了最多8个设备(以及控制器)的连接,例如:

  • 扫描仪
  • 磁带机(拖缆);
  • 光盘驱动器;
  • 磁盘驱动器和其他设备。

SCSI最初称为Shugart Associates系统接口(SASI),但是标准化委员会将不会批准该公司的名称,而经过一天的头脑风暴,出现了小型计算机系统接口(SCSI)这个名称。 SCSI的“父亲”拉里·鲍彻(Larry Boucher)暗示该缩写的发音为“性感”,但Dal Allan读为“ ssuzzy”。 随后,“ tales”的发音牢固地确立在该标准中。

在SCSI术语中,连接的设备分为两种类型:

  • 发起人
  • 目标设备。

启动器向目标设备发送命令,然后目标设备向启动器发送响应。 启动器和目标设备连接到公共SCSI总线,在SCSI-1标准中其吞吐量为5 MB / s。

所使用的公共总线拓扑结构具有许多限制:

  • 在总线的末端需要特殊设备-终结器;
  • 总线带宽在所有设备之间共享;
  • 同时连接设备的最大数量受到限制。



总线上的设备由称为SCSI目标ID的唯一数字标识 。 系统中的每个SCSI单元均由至少一个逻辑设备表示,其寻址根据物理设备内的唯一逻辑单元号(LUN)进行。


SCSI中的命令作为命令描述符 (CDB)发送,包括操作代码和命令参数。 该标准描述了200多个团队,分为四类:

  • 强制性 -必须由设备支持;
  • 可选 -可以实施;
  • 特定于供应商的 -由特定制造商使用;
  • 过时的 -过时的命令。

在许多团队中,只有三个是设备必需的:

  • 测试单元准备就绪 -设备准备就绪检查;
  • REQUEST SENSE-请求上一个命令的错误代码;
  • 查询 -要求设备的主要特性。

在接收和处理命令之后,目标设备向启动器发送描述执行结果的状态码。

SCSI的进一步改进(SCSI-2和Ultra SCSI规范)扩展了使用的命令列表,并将连接的设备数增加到16个,总线上的数据交换速度高达640 MB / s。 由于SCSI是并行接口,因此数据交换频率的增加与最大电缆长度的减少相关,并导致使用不便。

从Ultra-3 SCSI标准开始,已经出现了对“热插拔”的支持-在打开电源时连接设备。

第一个已知的SCSI SSD是1995年发布的M-Systems FFD-350。 磁盘成本高昂,并且不普及。

并行SCSI当前不是流行的磁盘安装接口,但是该命令集仍在USB和SAS接口中大量使用。

ATA / PATA



ATA (高级技术附件)接口,也称为PATA (并行ATA),由Western Digital于1986年开发。 IDE标准的市场名称(集成驱动器电子产品-“集成在驱动器中的电子产品”)强调了一项重要的创新:驱动器控制器内置在驱动器中,而不是在单独的扩展卡上。

将控制器放置在驱动器内部的决定立即解决了多个问题。 首先,从驱动器到控制器的距离减小了,这对驱动器的特性产生了积极的影响。 其次,内置控制器仅针对特定类型的驱动器“锐化”,因此更便宜。


ATA与SCSI一样,使用并行I / O方法,这会影响所使用的电缆。 要使用IDE接口连接磁盘,需要40芯电缆,也称为回路。 以后的规范使用80芯环路:其中一半以上接地以减少高频干扰。

ATA电缆上有2至4个连接器,其中一个连接到主板,其余连接到驱动器。 当用一个环路连接两个设备时,其中一个必须配置为Master ,第二个必须配置为Slave 。 第三台设备只能以只读模式连接。


跳线位置定义了特定设备的角色。 关于设备的术语“主机”和“从机”并不完全正确,因为就控制器而言,所有连接的设备都是从机。

ATA-3的一项特殊创新是引入了自我监控分析和报告技术(SMART) 。 五家公司(IBM,Seagate,Quantum,Conner和Western Digital)联手标准化了驱动器健康评估技术。

1998年发布的第四版标准支持固态硬盘。 该版本的标准提供了高达33.3 MB / s的数据交换速率。

该标准对ATA循环提出了严格的要求:

  • 环路必须平坦;
  • 最大回圈长度18英寸(45.7厘米)。

短而宽的回路不舒服,并且干扰了冷却。 在每个下一版本的标准中,增加传输频率变得越来越困难,而ATA-7从根本上解决了这个问题:并行接口被串行接口取代。 此后,ATA收购了Parallel一词,并被称为PATA,该标准的第七版获得了另一个名称-串行ATA。 SATA版本始于一个。

SATA硬盘



串行ATA(SATA)标准于2003年1月7日引入,通过以下更改解决了其前身的问题:

  • 并行端口由串行端口代替;
  • 80核宽循环由7核替代;
  • 通用总线拓扑已被点对点连接取代。

尽管SATA 1.0标准(SATA / 150,150 MB / s)稍快于ATA-6(UltraDMA / 130,130 MB / s),但向顺序数据交换方法的过渡是“为增加数据交换做准备”速度。

ATA中的16条用于数据传输的信号线已被两对双绞线所代替:一对用于传输,一对用于接收。 SATA连接器的设计使其对于多次重新连接具有更大的弹性,并且SATA 1.0规范使热插拔成为可能。

驱动器上的某些引脚比所有其他引脚短。 这样做是为了支持热插拔。 在替换过程中,设备以预定顺序“丢失”和“找到”线路。

一年多之后的2004年4月,发布了SATA规范的第二版。 SATA 2.0除了可加快3 Gb / s的速度外,还引入了本机命令队列 (NCQ)技术。 具有NCQ支持的设备能够独立组织接收到的命令的执行顺序,以实现最佳性能。


在接下来的三年中,SATA工作组致力于改善现有规范,Slimline和微型SATA(uSATA)紧凑型连接器出现在2.6版中。 这些连接器是原始SATA连接器的一个小副本,设计用于笔记本电脑中的光盘驱动器和小型磁盘。

尽管第二代SATA的带宽足以容纳硬盘驱动器,但SSD却需要更多。 2009年5月,发布了SATA规范的第三个版本,带宽增加到6 Gb / s。


SATA 3.1版本特别注意了SSD。 添加了Mini-SATA(mSATA)连接器,用于将固态驱动器连接到笔记本电脑。 与Slimline和uSATA不同,新连接器看上去与PCIe Mini相似,尽管它与PCIe不兼容。 除了新的连接器之外,SATA 3.1还具有将TRIM命令与读写命令排队的功能。

TRIM命令将没有负载的数据块通知SSD。 在SATA 3.1之前,执行此命令导致刷新缓存和暂停I / O操作,然后执行TRIM命令。 这种方法会在删除操作期间降低磁盘性能。

SATA规范无法跟上对固态驱动器访问速度的快速提高的步伐,这导致2013年出现了SATA 3.2标准中称为SATA Express的折衷方案。 开发人员没有使用SATA带宽再加倍的方法,而是使用速度超过6 Gb / s的广泛PCIe总线。 启用S​​ATA Express的驱动器已经获得了自己的规格,称为M.2。

SAS



与ATA竞争的SCSI标准也没有停滞不前,在2004年串行ATA出现仅一年之后,它就退化为串行接口。 新接口的名称是串行连接的SCSI (SAS)。

尽管SAS继承了SCSI指令集,但所做的更改非常重要:

  • 串行接口
  • 29芯电源线;
  • 点对点连接

SCSI术语也已被继承。 控制器仍称为启动器,连接的设备为目标。 所有目标设备和启动器均形成SAS域。 在SAS中,连接带宽不取决于域中的设备数量,因为每个设备使用自己的专用通道。

根据该规范,SAS域中同时连接的设备的最大数量超过1.6万,并且使用全球名称 (WWN)标识符代替SCSI ID进行寻址。

WWN是唯一的标识符,其长度为16个字节,类似于SAS设备的MAC地址。


尽管SAS和SATA连接器之间存在相似之处,但这些标准并不完全兼容。 但是,可以将SATA驱动器连接到SAS连接器,反之则不能。 SATA磁盘和SAS域之间的兼容性是使用SATA隧道协议(STP)提供的。

SAS-1标准的第一个版本具有3 Gb / s的带宽,最先进的SAS-4将这一数字提高了7倍:22.5 Gb / s。

PCIe



外围组件互连Express(PCI Express,PCIe)-用于数据传输的串行接口,于2002年问世。 该开发工作由英特尔(Intel)开始,然后转移到一个特殊组织-PCI Special Interest Group。

串行PCIe接口也不例外,它成为并行PCI的逻辑延续,并行PCI旨在连接扩展卡。

PCI Express与SATA和SAS显着不同。 PCIe接口的线路数可变。 行数等于2的幂,范围是1到16。

PCIe中的“线路”一词并不意味着特定的信号线,而是一个单独的全双工通信通道,由以下信号线组成:

  • 接待+和接待-;
  • 传输+和传输-;
  • 四个接地导体。

PCIe线路的数量直接影响连接的最大带宽。 现代的PCI Express 4.0标准允许您在单条线上达到1.9 GB / s,而在使用16条线时达到31.5 GB / s。


SSD的“胃口”正在迅速增长。 SATA和SAS都没有时间增加带宽以跟上SSD的步伐,这导致出现了具有PCIe连接的SSD。

尽管已拧紧PCIe附加卡,但PCIe支持热插拔。 短的PRSNT引脚(存在-存在)使您可以确保将卡完全插入插槽中。

通过PCIe连接的SSD受单独的《非易失性存储器主机控制器接口接口规范》标准规范,并以多种形式体现,但我们将在下一部分中讨论它们。

远程驱动器


创建大型数据仓库时,需要使用协议来连接服务器外部的驱动器。 该领域的第一个解决方案是由IBM和Cisco于1998年开发的Internet SCSI (iSCSI)。

iSCSI的概念很简单:SCSI命令包装在TCP / IP数据包中并发送到网络。 尽管建立了远程连接,但仍为客户端造成了错觉,即驱动器在本地连接。 可以在现有网络基础架构上构建基于iSCSI的存储区域网络(SAN)。 使用iSCSI可以大大降低组织SAN的成本。

ISCSI具有“高级”选项- 光纤通道协议 (FCP)。 使用FCP的SAN建立在专用的光纤链路上。 这种方法需要附加的光网络设备,但是在稳定性和高吞吐量方面有所不同。

有许多协议可以通过计算机网络发送SCSI命令。 但是,只有一种标准可以解决相反的问题,并允许您在SCSI总线上发送IP数据包-IP-over-SCSI

大多数SAN协议使用SCSI命令集来管理驱动器,但是也有例外,例如简单的以太网ATA (AoE)。 AoE协议在以太网数据包中发送ATA命令,但驱动器在系统中显示为SCSI。

随着NVM Express驱动器的出现,iSCSI和FCP不再能够满足SSD迅速增长的需求。 出现了两种解决方案:

  • 卸下服务器外部的PCI Express总线;
  • 通过Fabrics协议创建NVMe。

移除PCIe总线与创建复杂的交换设备相关联,但不会更改协议。

NVMe over Fabric已成为iSCSI和FCP的不错替代品。 NVMe-oF使用光纤链路和NVM Express命令集。

DDR-T



iSCSI和NVMe-oF标准解决了将远程驱动器作为本地连接的问题,而英特尔则采用了另一种方法,使本地驱动器尽可能靠近处理器。 选择权在于连接RAM的DIMM插槽上。 DDR4通道的最大带宽为25 GB / s,大大超过了PCIe总线的速度。 这就是英特尔®傲腾™DC永久内存SSD诞生的方式。

为了将驱动器连接到DIMM插槽,发明了DDR-T协议,它与DDR4物理上和电气上都兼容,但是需要一个特殊的控制器才能看到内存条和驱动器之间的差异。 驱动器的访问速度小于RAM,但大于NVMe。

DDR-T仅适用于Intel®Cascade Lake或更高版本的处理器。

结论


从串行到并行数据传输,几乎所有接口都有很长的路要走。 SSD的速度正在迅速增长,昨天,SSD是一种新颖事物,但如今NVMe不再是令人惊讶的事情。

在我们的Selectel实验室中,您可以自己测试SSD和NVMe驱动器。

Source: https://habr.com/ru/post/zh-CN478684/


All Articles