SATA

使用SATA(Serial Advanced Technology Attachment)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。2001年,由Intel、APT、Dell、IBM、希捷、迈拓这几大厂商组成的Serial ATA委员会正式确立了Serial ATA 1.0规范。2002年,虽然串行ATA的相关设备还未正式上市,但Serial ATA委员会已抢先确立了Serial ATA 2.0规范。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。
串口硬盘是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而知名。相对于并行ATA来说,就具有非常多的优势。首先,Serial ATA以连续串行的方式传送数据,一次只会传送1位数据。这样能减少SATA接口的针脚数目,使连接电缆数目变少,效率也会更高。实际上,Serial ATA 仅用四支针脚就能完成所有的工作,分别用于连接电缆、连接地线、发送数据和接收数据,同时这样的架构还能降低系统能耗和减小系统复杂性。其次,Serial ATA的起点更高、发展潜力更大,Serial ATA 1.0定义的数据传输率可达150MB/s,这比最快的并行ATA(即ATA/133)所能达到133MB/s的最高数据传输率还高,而在Serial ATA 2.0的数据传输率达到300MB/s,最终SATA将实现600MB/s的最高数据传输率。
SATA的物理设计,可说是以Fibre Channel(光纤通道)作为蓝本,所以采用四芯接线;需求的电压则大幅度减低至250mV(最高500mV),较传统并行ATA接口的5V少上20倍!因此,厂商可以给Serial ATA硬盘附加上高级的硬盘功能,如热插拔(Hot Swapping)等。更重要的是,在连接形式上,除了传统的点对点(Point-to-Point)形式外,SATA还支持“星形”连接,这样就可以给RAID这样的高级应用提供设计上的便利;在实际的使用中,SATA的主机总线适配器(HBA,Host Bus Adapter)就好像网络上的交换机一样,可以实现以通道的形式和单独的每个硬盘通讯,即每个SATA硬盘都独占一个传输通道,所以不存在象并行ATA那样的主/从控制的问题。
Serial ATA规范不仅立足于未来,而且还保留了多种向后兼容方式,在使用上不存在兼容性的问题。在硬件方面,Serial ATA标准中允许使用转换器提供同并行ATA设备的兼容性,转换器能把来自主板的并行ATA信号转换成Serial ATA硬盘能够使用的串行信号,目前已经有多种此类转接卡/转接头上市,这在某种程度上保护了我们的原有投资,减小了升级成本;在软件方面,Serial ATA和并行ATA保持了软件兼容性,这意味着厂商丝毫也不必为使用Serial ATA而重写任何驱动程序和操作系统代码。
另外,Serial ATA接线较传统的并行ATA(Paralle ATA)接线要简单得多,而且容易收放,对机箱内的气流及散热有明显改善。而且,SATA硬盘与始终被困在机箱之内的并行ATA不同,扩充性很强,即可以外置,外置式的机柜(JBOD)不单可提供更好的散热及插拔功能,而且更可以多重连接来防止单点故障;由于SATA和光纤通道的设计如出一辙,所以传输速度可用不同的通道来做保证,这在服务器和网络存储上具有重要意义。
Serial ATA相较并行ATA可谓优点多多,将成为并行ATA的廉价替代方案。并且从并行ATA过渡到Serial ATA也是大势所趋,应该只是时间问题。相关厂商也在大力推广SATA接口,例如Intel的ICH6系列南桥芯片相较于ICH5系列南桥芯片,所支持的SATA接口从2个增加到了4个,而并行ATA接口则从2个减少到了1个;nVidia的nForce4系列芯片组已经支持SATA II即Serial ATA 2.0,而且三星已经采用Marvell 88i6525 SOC芯片开发新一代的SATA II接口硬盘,并将在2005年初推出。

SATA、AHCI、ATA等相关知识概述

SATA
SATA(Serial Advanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。现在主流为SATA3.0,速率可达到6.0Gbps.SATA Spec中定义了物理层、链路层、传输层的标准,以及传输协议、关键数据结构FIS等的定义,SATA下面有2中mode可以选择:AHCI和IDE

IDE
IDE的英文全称为“IntegratedDrive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。又称PATA接口,最大速率为133MB/s,现在已经完全被SATA所取代,但是为了兼容的原因,不管是BIOS还是OS下仍然保留IDE模式,该模式可以将SATA盘映射模拟成普通IDE硬盘,无需额外加载SATA驱动。但不支持任何SATA接口的新特性

AHCI
AHCI(Serial ATA AdvancedHost Controller Interface),又名串行ATA高级主控接口/高级主机控制器接口。AHCI通过包含一个PCI BAR(基址寄存器),来实现原生SATA功能,允许存储驱动程序启用高级串行 ATA 功能。
AHCI模式是专门为SATA接口而设计,支持SATA接口特性,诸如本机命令队列(NCQ)和热插拔。但是需要用户在BIOS中选择AHCI模式,方便操作系统自动加载AHCI驱动。AHCI 协议主要定义了Host端的寄存器、错误处理、电源管理等

ATA和ATAPI
ATA和ATAPI是广为使用的IDE和EIDE设备的相关标准,与SATA、AHCI有着密切的关系。
ATA是AT Attachment的缩写,意思是AT计算机上的附加设备。ATA可以使用户方便地在PC机上连接硬盘,但有时这样还不够。有些用户需要通过同样方便的手段连接CDROM、磁带机、MO驱动器等设备,所以就有了ATAPI
ATAPI标准就是为了解决在IDE/EIDE接口上连接多种设备而制定的。ATAPI是AT Attachment Packet Interface的缩写,意思是AT计算机上附加设备的包接口。支持ATAPI的IDE/EIDE接口可以像连接硬盘一样连接ATAPI设备。目前几乎所有的IDE/EIDE接口都支持ATAPI。

BIOS中初始化SATA HDD流程:
1 初始化南桥中相关的寄存器,根据BIOS设定选择使用AHCI模式还是IDE模式,现在默认为AHCI模式,以此为例
AHCI一般在南桥中对应于Device31 Function2 的PCI配置空间,其下有6个port,可以接出来6个SATA插槽, 连接6个SATA HDD设备
2 PCI扫描阶段,为AHCI Controller分配所需的MMIO空间等
3 枚举Slave device:
(1). 检测port上面是否接有device,通过检测寄存器来确定,如存在Device,其Link状态会有所改变
(2).存在device则发命令让其Spinup起来
(3). 获取device的相关信息。device(如HDD)中存在微处理器、Firmware、存储芯片等,当Host发送命令到Device之后,device会执行Protocol规定的动作,完成和Host之间的信息交互。

信息交互的过程涉及到Protocol、command、FIS等知识点,在此以获取identifydata为例来说明:
参考ATA-ACS Spec中 IDENTIFY DEVICE - ECh, PIO Data-In;
Host发送IDENTIFY DEVICE命令给Device,其command值为ECh,采用的是PIO Data-In command Protocol,其过程为
<1>Host发送H2D register FIS 给Device,该FIS中包含command=ECh
<2>device 接到H2D之后看到ECh的command,知道其采用的PIO Data-In Protocol,故传送一个D2H的PIO Setup FIS通知Host已经准备好了,可以开始传送Data FIS了
<3>Host接到D2H的PIO Setup FIS,开始从Device端接收Data FIS
<4>当Data传完或者在传输的过程中发现有Error发生,则device发送一个D2H register FIS通知Host状态

在上述过程中涉及到的command的定义参考ATA8-ACS Spec、FIS和command protocol的介绍参考SATA Spec;至于发送command命令和等待命令完成则是通过读取寄存器的值来进行,可以参考AHCI Spec

除了上述的PIO data-in protocol,SATA Spec中还定义了其他的一些Protocol:Nodata command Protocol、PIO Data-out command Protocol、DMA Data in\out command protocol等;

PIO和DMA的区别为
PIO的英文拼写是“Programming Input/Output Model”, PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其它的操作。PIO数据传输模式又分为PIO mode 0、PIO mode 1、PIO mode 2、PIO mode 3、PIO mode 4几种模式,数据传输速率从3.3MB/s到16.6MB/s不等。受限于传输速率低下和极高的CPU占有率,这种数据传输模式很快就被淘汰

DMA是一项1997初才开始广泛采用的新的ATA/IDE接口协议,所以又称Ultra ATA。Ultra DMA采用总线主控方式,在硬盘上有DMA直接内存访问控制器。由于在数据传输过程中不需CPU的干预,因而节约了宝贵的CPU资源,使得CPU可以腾出大量的时间处理其它的数据和程序要求。其次,Ultra DMA把IDE命令的时钟脉冲的上升沿和下降沿都用作内存读写选通信号,使得每半个时钟周期就可以传输一次数据,也就使最大外部数据传输率从每秒16.6MB倍增,现在使用的UltraDMA 6最大为133 MB/s

AHCI 每个Port都包含有2个主要的DMA engine,一个用来遍历commandlist,由PxCMD.ST来控制;另一个将接收到的FIS copy到memory,由PxCMD.FRE来控制

小知识------SATA相关推荐

  1. 计算机主板外频,电脑装机小知识,了解外频和倍频的前身今世,掌握超频进阶小技巧...

    进阶的超频小知识分享 喜欢超频的小伙伴一定对外频和倍频这两个概念并不陌生,CPU频率=外频X倍频.这些内容我在前面的超频小分享中已经基本谈到过. 但是你知道吗?在开始的时候,其实CPU频率和外频是一样 ...

  2. 电脑小白的装机必备小知识

    电脑小白的装机必备小知识 1.显卡天梯图 http://www.mydrivers.com/zhuanti/tianti/gpu/ 2.CPU天梯图 http://www.mydrivers.com/ ...

  3. 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...

    目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...

  4. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  5. GO小知识之实例演示 json 如何转化为 map 和 struct

    今天简单谈一些 JSON 数据处理的小知识.近期工作中,因为要把数据库数据实时更新到 elasticsearch,在实践过程中遇到了一些 JSON 数据处理的问题. 实时数据 实时数据获取是通过阿里开 ...

  6. 1 编码_TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)

    今天,跟大家分享一下28379D的CLB解码多摩川绝对值编码器的一些入手小知识. 首先,28379是属于TI的2837x系列,D是双核版本,S是单核版本,S和D都是带CLB模块的,都可以实现位置解码, ...

  7. sam格式的结构和意义_BAM/SAM文件格式的一些小知识

    BAM/SAM文件的一些小知识 前言 如果不是在陈老师这读博,然后开始折腾BAM/SAM文件,我估计这辈子都不会了解到这么多东西吧 SAM/BAM简介 Sequence Alignment Map ( ...

  8. 安卓开发小知识 - 3

    内容来源:Android Development Tidbits // No. 3 这是第三次分享安卓开发中的一些小知识点.我们很高兴有这么多人知道了这个有趣的系列,并且对你们通过评论和邮件表达的支持 ...

  9. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

最新文章

  1. 计算机学业水平测试题及答案初中,初中信息技术学业水平考试试题30号试题.doc...
  2. PowerDesigner 使用的一些技巧
  3. 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
  4. linux mint 19界面美化,安装完 LinuxMint 19.3 后必做的10件事
  5. Android图片的Base64编码与解码
  6. 由浅入深了解Thrift(一)——Thrift介绍与用法
  7. 两种方法求最大公约数和最小公倍数
  8. ECMAScript 学习笔记03
  9. [Jetty] jetty 内存调优
  10. python语言之父丹尼斯里奇_C语言之父-丹尼斯里奇
  11. ArcGIS Pro 中检查尖锐角步骤
  12. POJ 3253 Fence Repair(修篱笆)
  13. Teamviewer过期,获取免费版
  14. body软件 human_人体系统女性3D软件破下载|人体系统女性3d专业中文版下载v1.0(Human body female)-乐游网安卓下载...
  15. 在IE浏览器中实现网页自动翻译
  16. c语言在测绘工程中的作用,测绘程序C语言测绘工程专业.doc
  17. Vacuum使用心得
  18. 怎样用计算机排名,小红书排名软件教程,小红书关键词排名软件怎么用
  19. Netty框架实现TCP/IP通信
  20. 今天玩了玩PSP上的战神,不愧是大作

热门文章

  1. 电商api接口:淘宝以图搜图
  2. DbVisualizer 解决中文乱码问题
  3. 赠书 |“硅谷精神之父”凯文·凯利:5000 天后的 “AI” 世界
  4. 计算机图形学——区域填充算法
  5. R语言:填色等值线图及其色标(color bar)设置
  6. strtol,strtoul,strtod
  7. java excel 另存为_java 代码怎么实现另存为excel文件格式
  8. HLS(一)Vivado高层次综合概述
  9. IOS APP程序发布IPA以及发布上传到AppStore
  10. 什么是工业AGV导航读码器?用在什么地方?