zoukankan      html  css  js  c++  java
  • 硬件接口协议IDE, PATA, ATA, SATA, SAS, SCSI,PCIe, FC

    ATA: AT attachment 是IDE(Integrated Drive Electronics)硬盘的接口标准。包括PIO(Programming I/O)和DMA(Direct Memory Access) 两种传输模式。ATA本身可以支持串行或并行。

    PATA: Paralle ATA。并行协议,基于ATA,也就是IDE接口。

    SATA: Serial ATA。 串行协议,基于ATA。

    SCSI: Small Computer System Interface。 是一种专门为小型计算机系统设计的存储单元接口模式,主要用于中,高端服务器和高档工作站。
    SCSI和ATA是现流行的两大主机与外设通信的协议规范,各自有自己的物理接口定义。对于ATA协议对应的有IDE接口(并行)和SATA接口(串行),对于SCSI协议对应的就是SCSI接口。
    SCSI接口跟ATA/IDE不兼容,相对于ATA硬盘的接口支持数量更多。

    SCSI接口是并行还是串行呢?跟ATA一样两个都有。并行SCSI是基于总线技术,速度很慢,只有 320 MB/sec (Ultra320 SCSI),已经不能满足现代企业的需要。串行SCSI就是Serial Attached SCSI (SAS)。

    SAS: Serial Attached SCSI。串行协议,基于SCSI,又可以向下兼容SATA。SAS drive多用于企业级硬盘,SATA drive多用于消费级硬盘。
    SAS 协议可分为3块:
    SSP是串行SCSI协议,用于传输SCSI协议。
    SMP是SCSI管理协议,用于对连接设备的维护和管理。
    STP是SATA tunnel协议,用于SAS和SATA之间数据的传输。即把SATA Frame当做SAS协议的数据来传输,跟隧道一样。

    SAS跟SATA的比较:
    我发现很多网上的比较都是泛泛而谈,下面这个链接讲的比较好, https://kb.sandisk.com/app/answers/detail/a_id/10510/~/differences-between-sas-and-sata

    SAS is designed for mission-critical enterprise applications whereas SATA is a general-purpose interface common in the consumer market.
    SAS supports multiple initiators, while SATA has no such provision.
    SAS is dual ported where as SATA is single ported. SAS is therefore capable of multi path I/O without additional hardware. Moreover, SAS can make use of both ports to scale performance.
    SAS是双端口,而SATA单端口。所以SAS支持多路I/O而无需额外硬件。SAS还可以用双端口来提高性能。
    SATA transfers data at half duplex while SAS can transfer data at full duplex. Thus, for SAS, each port can read and write data at the same time whereas SATA cannot.
    最主要的区别: SATA是半双工**(任何时候只能有一侧传输数据)。而SAS是全双工(可以两侧同时传输数据)。SAS任意一个端口可以同时读写。**打个比方,SAS类似手机,双方可同时讲话。SATA类似对讲机,一个人在说话,另一个人就只能听,不能说。
    SAS uses SCSI commands for error recovery and error reporting, which have more functionality than the ATA command set used by SATA.
    SAS can support cables up to 8m long, while maximum cable length for SATA is 1m.
    另外,
    SATA有而SAS没有的feature有:BIST Activavte
    SAS有而SATA没有的feature有:TX Training。
    等等。下次补充。
    顺便提一下为什么SAS有Tx Training,这是当SAS的interface到了12Gbps才有的。当SAS的interface是1.5Gbps, 3Gbps, 6Gbps的时候可以用一般的Speed Negotiation的方法对齐(align),但到了SAS-3(12Gbps)的时候,速率太高,必须用Tx Training的步骤才能对齐。

    另外还有mSATA(用于消费级笔记本领域),但已被M.2淘汰。M.2原名是(NGFF, Next Generation Form Factor),是为Ultrabook定制的接口标准。M.2本身只规范了一种引脚接线形式,它上面走什么协议和总线要看具体产品。

    PCI: Peripheral Component Interconnect。是在CPU和原来系统总线内部插入的一级总线。主要用于电脑内部主板的扩展插槽,连接显卡,声卡,网卡和Modem等设备。PCI总线只有133MB/s 的带宽。注意它不是硬盘接口。
    PCI采用的是总线型拓扑结构,一条PCI总线上挂着若干PCI终端设备或桥设备(比如说北桥南桥)。这些设备共享该PCI总线,如果那个设备想说话必须获得总线使用权。

    PCIe: PCI Express。向下兼容PCI,串行协议(PICe比PCI快就是因为它是串行)。PCIe 2.0为例,每秒5GT(Gigatransfer)原始数据传输率,编码方式为8b/10b(每10个位元只有8个有效数据),即有效频宽为4Gb/s = 500MByte/s。PCIe可以用于SSD的接口,但不用于机械硬盘的接口,因为机械硬盘的读写速度达不到这么高,没有必要用PCIe。
    PCIe采用树形拓扑结构。Root Complex(RC)是树的根,相当与CPU的agent。CPU必须通过RC来访问内存和其他PCIe设备(如PCIe SSD, PCIe网卡)。PCIe设备可以直接连到RC上,也可以通过switch来连到RC上。Switch上也可以连switch。PCIe bridge可以将PCIe总线换成PCI总线(或反过来),实现PCIe和PCI设备的互联。
    PCIe采用点到点(endpoint to endpoint)的通信方式,每个设备独享通道带宽,速度和效率都比PCI好。理论上任何两个PCIe endpoint(PCIe设备)都可以互相通信,但实际上endpoint一般要通过RC与另一个endpoint通信,因为两个设备的数据格式可能不一样。

    PCI Express 1X和PCI Express 32X 意思就是1个通道到32个通道。
    注意:PCIe也是Dual-Simplex模式,可以理解为全双工模式。
    PCIe定义了下三层:
    事务层(Transaction Layer): 发送或接收TLP(Transaction Layer Packet), 流量控制, QoS, 事务排序等。
    数据链路层(Data Link Layer): 发送或接收DLLP(Data Link Layer Packet), Ack/Nak协议,流量控制,电源管理等。
    物理层(Physical Layer,包括逻辑子模块和电气子模块):处理所有的packet的物理传输。

    注意:
    SATA的主机接口协议是AHCI(Advanced Host Controller Interface),SAS的interface是
    SAS没有等同与SATA的AHCI的通用主机接口协议。
    PCIe的主机接口协议是NVMe(Non-Volatile Memory Express),专门为SSD服务。

    U.2 Form Factor (SFF-8639)最开始是PCIe SSD 2.5寸盘的接口标准,后来统一了SATA, SAS和PCIe 三种物理接口,是一种新型连接器Form Factor。

    FC: Fiber Channel。是基于Fabric Channel环路协议基础上的串行技术,通过给后端磁盘提供带宽2.0Gbit/s或者4.0Gbit/s的FC环路来进行磁盘的连接。本来FC是给网络系统开发的,FC线缆的连接距离远,比较容易扩展。因为存储系统对速度要求高,所以也用在多硬盘系统的通信中。

    另外, ATA, SCSI和NVMe都针对SSD加了一些新的命令,比如说ATA里面的Trim。当用户删除一个文件时,操作系统会发Trim告诉SSD该文件对应数据无效,这样SSD在做垃圾回收的时候就可以把这些数据删除掉,不用再做数据迁移。SCSI里面的同等命令叫UNMAP, NVMe里面脚Deallocate。

    ,
  • 相关阅读:
    Orika对象复制教程(完美笔记)
    JAVA-开发构建Gradle项目安装使用教程
    Java中传入一个时间范围,取出该时间范围内所有日期的集合
    线程安全之原子操作
    Java内存模型以及线程安全的可见性问题
    Java线程池的应用
    Java中实现线程的方式
    线程通信
    线程状态
    CPU缓存和内存屏障
  • 原文地址:https://www.cnblogs.com/fpcbk/p/15390026.html
Copyright © 2011-2022 走看看