转:SATA协议简介
SATA协议简介
1、概述
本文档主要介绍SATA的发展历程以及SATA相关协议,为后续SATA驱动框架分析做基础知识准备。
2、SATA简介
2.1 SATA发展历程
2.1.1 PATA硬盘
PATA硬盘叫做并行ATA硬盘(Parellel ATA)。为了限制其信号放大系统产生的高噪声,常采用高达5V的电压来传输正常信号,但是采用大电压导致生产成本上升,同时也不利于高速传输系统的设计和制造。由于数据是并列传输所以它的传输速率受到并行限制,故总体传输率最快能达到133MB/s。
2.1.2 SATA硬盘
SATA硬盘,即SATA(Serial ATA)又被称为串口硬盘。SATA采用差分信号系统,该系统能有效将噪声滤除,因此SATA就不需要使用高电压传输去抑制噪声,只需要使用低电压操作即可。
在数据传输这一方面,SATA的速度比PATA更加快捷,并支持热插拔。另一方面,SATA总线使用了嵌入式时钟频率信号,具备了比以往更强的纠错能力,能对传输指令(不仅是数据)进行检查,如果发现错误会自动矫正,提高了数据传输的可靠性。不过,SATA和PATA最明显的分别,是用上了较细的排线,有利机箱内部的空气流通,某程度上增加了整个平台的稳定性。
目前SATA接口主要有SATA1.0、SATA2.0、SATA3.0这三个版本,三种主流规范的带宽与传输速度的对比如图 2.1所示。
图 2.1 SATA传输速度对比
2.1.3 拓扑结构
SATA是用来取代大容量存储设备并行ATA链接方式的高速串行链接方式。
对于并行ATA设备,多个设备通过主/从(master/slave)通信技术链接到并行ATA总线上,其链接方式如图 2.2所示。
图 2.2 PATA拓扑结构
而SATA的拓扑结构是点对点式的,主机可以通过多个链接支持多个设备,每个设备百分百占用总线带宽,并且一个设备的链接出错不会影响其他设备的链接,其链接方式如图 2.3所示。
图 2.3 SATA拓扑结构
2.2 SATA协议
2.2.1 SATA接口结构
SATA接口使用4根电缆传输数据,其结构图如图 2.4所示。Tx+、Tx-表示输出差分数据线,对应的,Rx+、Rx-表示输入差分数据线。
图 2.4 SATA接口结构图
2.2.2 协议模型
SATA接口协议借鉴TCP/IP模型,将SATA接口划分为四个层次来实现,包括物理层、链路层、传输层、应用层,其体系结构如图 2.5所示。
图 2.5 SATA体系结构
2.2.3 物理层分析
物理层采用全双工串行传输方式,主要功能是进行信号的串并及并串转化。物理层接收来自链路层的数据信息,将接收到的并行的数字逻辑信号转换为串行的差分物理信号,发送到主机端。相应的物理层能将来自主机端的串行差分物理信号转化为并行的逻辑信号传送到链路层。
为了提高 SATA 接口的扩展能力和响应能力, SATA 协议还引进了带外信号(Out Of Band,OOB)来协助物理层进行上电初始化以及复位操作。
2.2.4 链路层分析
链路层的主要功能是通过控制原语的传递来控制信息帧的整个传输过程,保证帧信息能够正确的发送与接收并能进行流量的控制,防止数据发送过快或接受过多。
1)接收来自物理层的信息,对信息帧进行编码、解码、校验和扰码,然后给传输层发送 SOF 原语,通知传输层接收数据,当数据发送完成后,给传输层发送EOF原语,通知传输层该帧传输完成。
2)接收来自传输层的信息,给接收的信息头封装上SOF原语和EOF原语,然后对信息帧进行编码、解码、校验、扰码,传送给物理层。
链路层的控制原语是用来控制和维持串行链路数据传输状态。它们是以32位数据为单位的信息包,控制原语一共有18种,它们都有各自的功能,如:ALIGN原语用来做物理层中数据对齐;SOF、EOF原语用来做数据传输时信息帧的边界定义等。
2.2.5 传输层分析
传输层主要负责FIS帧信息结构的封装与解封。
1)传输层接收到来自应用层的数据传输操作请求后,将相关寄存器中信息按SATA协议规定的标准格式封装为FIS传递给链路层。当链路层正确接收完成后,能给传输层反馈成功完成本次传输的信号。
2)传输层接收到来自链路层的SOF信号后,能接收FIS信息帧,并能判断该FIS的类型,根据FIS类型,判断该FIS是否是有效的FIS。如果是则将该FIS中的命令和数据等按照SATA协议规定进行解析,映射到各个寄存器中,然后能通知应用层接收相应寄存器的值。如果该FIS无效,则丢弃。
2.2.6 应用层分析
应用层能够进行接受来自主机端的命令,根据命令的要求将自身的信息发送给主机端,或是接收来自主机端的以PIO或DMA方式传输的数据,同时写入闪存中,也能从闪存中以PIO或DMA的方式读出数据,传送给主机端。
在应用层采用两个FIFO对数据进行缓冲,一个为读FIFO,一个为写FIFO。应用层能接收来自传输层的数据帧送入写FIFO中或将来自总线的数据保存在读FIFO中,然后通知传输层构造数据帧。
3、参考资料
1、《Serial ATA Revision 3.0
转:SATA协议简介的更多相关文章
- Fiddler--一、HTTP协议简介
在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- JavaWeb:Web与HTTP协议简介
JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- HTTP 协议简介
HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...
- OAUTH协议简介
OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...
- GRE 协议简介
1. 协议简介 gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- Tsung MQTT协议简介及MQTT xml文档配置介绍
MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...
随机推荐
- 江南乐(bzoj 3576)
Description 小A是一个名副其实的狂热的回合制游戏玩家.在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏. 游戏的规则是这样的,首先给定一 ...
- 最近发的一些csdn下载资源
原文发布时间为:2009-11-02 -- 来源于本人的百度文章 [由搬家工具导入] http://wjwu1988.download.csdn.net/treeview的datasource类 ...
- 【XPButton类】美化MFC button (转)
从网上找到别人写的一个XPButton类,利用XPButton类实现XP风格的按钮.百度一下即可找到这个类,接下来具体的步骤如下: 1.创建基于对话框的MFC工程假设命名为:XPButtonTest, ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---46
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- Linux设备模型(热插拔、mdev 与 firmware)【转】
转自:http://www.cnblogs.com/hnrainll/archive/2011/06/10/2077469.html 转自:http://blog.chinaunix.net/spac ...
- Spring Boot学习——AOP编程的简单实现
首先应该明白一点,AOP是一种编程范式,是一种程序设计思想,与具体的计算机编程语言无关,所以不止是Java,像.Net等其他编程语言也有AOP的实现方式.AOP的思想理念就是将通用逻辑从业务逻辑中分离 ...
- HDU5006 Resistance(高斯消元)
给你一个复杂的网路图,然后告诉你s,t,求s,t的等效电阻.方法是设s的电势为1,t的电势为0.然后对于其它的每个点x,满足的是sigma(ux-uy)/R(x,y)(即对每个与x相连的节点y,电势差 ...
- LeetCode OJ--N-Queens II
https://oj.leetcode.com/problems/n-queens-ii/ N皇后问题,计算解的个数 class Solution { public: int totalNQueens ...
- interview ms1 N_Dorm
判断是否为n回文,比如 a b a 是1 回文, abcdab是2回文. 输入: abcabc|3 这种格式,输出true or false #include <iostream> #in ...
- RadioGroup动态添加RadioButton,并且获得事件
由于有许多的RadioButton是动态的,不是固定的一些,所以需要在代码中,动态的添加到RadioGroup中,下面是我的实现方法. 1.添加RadioButton到RadioGroup中 Radi ...