SATA补充说明

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来控制
————————————————
版权声明:本文为CSDN博主「乌托邦BB」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_42759524/article/details/104063178

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值