几个硬盘接口协议IDE, PATA, ATA, SATA, SAS, SCSI,PCIe, FC的总结

2023-11-09

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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

几个硬盘接口协议IDE, PATA, ATA, SATA, SAS, SCSI,PCIe, FC的总结 的相关文章

  • mysql 外连接总结

    原文 http blog sina com cn s blog 3d48dbb70100hyz4 html 了点时间总结了一下mysql中的内 外连接 转载注明 首先my sql 不支持oracle的 内连接 只连接匹配的行 左外连接 包含
  • 关于智能合约开发的真相

    就像 区块链 AI 和 云 这样的词语一样 智能合约 也是那些得到大量炒作的短语之一 毕竟 没有什么比不通过司法系统而让人们能够相信发生了什么更有意思的了 智能合约的承诺包括 自动 无须信任和公正地执行合约 在合约构建 合约执行和合约执行环
  • 狂神说 Docker笔记

    Docker概述 Docker为什么出现 Docker的思想来自于集装箱 JRE 多个应用 端口冲突 原来都是交叉的 隔离 Docker核心思想 打包装箱 每个箱子是互相隔离的 Docker通过隔离机制 可以将服务器利用到极致 Docker
  • ShardingSphere分库分表2-ShardingJDBC实战

    文章目录 一 ShardingSphere 二 ShardingJDBC实战 1 核心概念 2 测试项目介绍 3 快速实战 4 ShardingJDBC的分片算法 5 ShardingSphere的SQL使用限制 6 分库分表带来的问题 7
  • JAVA四大特征(抽象,封装,继承,多态)

    1 私有属性必须通过一个成员方法去控制和访问私有属性 2 访问控制修饰符 访问级别 访问控制修饰符 同类 同包 子类 不同包 公开 public 受保护 protected 默认 无 私有 private 3 继承 当多个类具有相同的属性

随机推荐

  • Oracle常见错误总结

    最近多次用到Oracle 主要就是导入dmp文件 然后将文件读出来并写进csv文件 在这过程中出现了一系列的问题 每次都几乎让我崩溃 一方面觉得Oracle用起来真麻烦 但是回过头想想 另一方面说明Oracle机制做的好 各种错误都能考虑到
  • MySQL学习笔记--菜鸟开始上路了!

    开篇话 用MySQL有一段时间了 但是发现自己没有系统的对SQL进行过深入学习 从这篇笔记开始对SQL进行系统学习 也希望和我情况一样的伙伴能够一起进步 学习前症状 状态适用 虽然顺利的把数据从库表中取出 但并不清楚它具体是怎样执行的 也不
  • LLVM系列第七章:函数参数Function Arguments

    系列文章目录 LLVM系列第一章 编译LLVM源码 LLVM系列第二章 模块Module LLVM系列第三章 函数Function LLVM系列第四章 逻辑代码块Block LLVM系列第五章 全局变量Global Variable LLV
  • Java 递归方法

    Java 递归方法 1 说明 定义 一个方法体内调用它自己 方法递归是一种隐式的循环 它会重复的执行某段代码 但这种重复执行无须循环控制 递归一定要向着已知的方向递归 否则这种递归就变成了无穷递归 类似于死循环 2 code 举例 publ
  • Redis7之哨兵(九)

    9 1介绍 哨兵巡查监控后台master主机是否故障 如果故障了根据投票数自动将某一个从库转换为新主库 继续对外服务 俗称无人值守运维 作用 监控redis运行状态 包括master和slave 当master down机 能自动将slav
  • VS2019 + Qt5.13 配置

    在安装完VS2019后 再安装Qt5 13选择安装msvc2017模块 再安装qt vsaddin插件 我选的是2 4版本 反正安装最新的也不会错 安装成功后 新建项目 发现问题 Entry Point Not Found 这是因为编译的版
  • python线程池 ThreadPoolExecutor

    python 线程池 ThreadPoolExecutor 实现步骤 代码实现 实现步骤 创建一个最大容纳数量为3的线程池 通过submit提交执行的函数到线程池中 通过done来判断线程是否完成 通过result来获取返回值 代码实现 c
  • VS code “密钥externalConsole已弃用,请改用console“的解决方法

    VS code 密钥 externalConsole 已弃用 请改用 console 的解决方法 原因 externalConsole 是旧版vscode cpp的密钥 决定输出和调试是在内部还是外部 新版vscode密钥已经改为 cons
  • 阿里巴巴Java开发规约插件

    代码规范的重要性 前不久很多公众号都在说因为代码规范性引起的血案 这事吧 我也没有太在意 好像后来证实根本不属实 但是 也说明了一个事情 代码规范真的很重要 附带一下查询的结果 搜索关键字 码农因代码规范 代码规范 真的很重要 很重要 很重
  • 《快速阅读术》优秀读后感范文4000字

    读书是一种很好的学习 学习是为了 学以致用 在寻求 学以致用 的实操的方法时 发现一个关于学习的金字塔模型 这是美国国家训练实验室的一个结论 听讲 阅读 视听和演示为被动学习 内容留存率比较低 不到30 这是为什么读了很多书 99 的内容都
  • pip安装python包时遇到的问题

    在windows 10种使用pip安装greenlet时 遇到下面这样一个错误 通过搜索发现有很多类似的情况发生在安装scrapy twisted等库的时候 看起来时需要一个c 编译器 安装vstudio实在太大了 网上也给出了不少解决方案
  • 什么是软件性能测试

    说到性能测试 想必大家都会有种种困惑 对于性能测试的概念也模糊得很 那么今天就和大家聊一聊什么是性能测试 性能测试其实是通过模拟生产运行的业务压力量和使用场景组合 测试系统的性能是否满足生产性能要求 通俗地说 性能测试就是要在特定的运行条件
  • 中科院分区和JCR分区查询

    本文将讨论中科院分区和JCR分区查询的三种方法 包括可以同时查询的LetPub查询方法 中科院分区的官方查询方法和JCR分区的查询方法 具体内容见正文 附 本所述方法为本人研究总结 在这里以开放交流的心态与大家分享 欢迎留言讨论 通过Let
  • python自动化[poco篇]

    Poco Poco是一款跨平台的自动化测试框架 基于UI控件搜索原理 与基于图像识别的Airtest不同的是 Poco可以使用类似 poco OK click 的方式来获取并操作节点 Poco能帮助我们获取控件的属性信息 操作控件 设置控件
  • 美国研究生院计算机数据科学排名,美国研究生数据科学专业排名

    美国数据科学专业列表 1 哈佛大学 计算科学与工程理学硕士 M S in Computational Science and Engineering 专业排名 1 1 哈佛大学 数据科学理学硕士 Master of Science in D
  • antv g2plot可视化图表在vue中的使用之四:为图表添加事件

    文章目录 图表事件event g2plot升级 仪表盘Gauge添加点击事件 仪表盘类型 仪表盘组成 仪表盘事件 其他 参考资料 图表事件event 我们经常会遇到为图表添加事件的需求 无论是对整个图表还是对图表中的某些元素添加事件 包括点
  • 大数据-本地yum

    1创建挂载目录 root sizhan mkdir mnt cdrom 挂载 root sizhan mount t iso9660 o ro dev cdrom mnt cdrom root sizhan ll mnt cdrom 总用量
  • 【OpenCV学习笔记】【异常处理】一(The Matrix is not continuous, thus its number of rows can not be changed)

    在调试 Mastering OpenCV with Practical Computer Vision Projects 书中的代码 trainSVM cpp文件 对数码管的正负样本进行训练时 出现以下错误 OpenCV Error Ima
  • 3周攻克数据结构(入门)——53.最大子数组和

    力扣53 最大子数组和 题目描述 解法 动态规划 就像是喝汤的时候我们喜欢用勺子一样 这道题它从头到脚都透露着快用DP 动态规划 来解决我的气息 为什么这么说呢 题目 最大子数组 题干 请你找出一个具有最大和的连续子数组 当然 最关键的是子
  • 几个硬盘接口协议IDE, PATA, ATA, SATA, SAS, SCSI,PCIe, FC的总结

    ATA AT attachment 是IDE Integrated Drive Electronics 硬盘的接口标准 包括PIO Programming I O 和DMA Direct Memory Access 两种传输模式 ATA本身