串行
ATA (SATA-Serial
ATA)是Intel代表的存储设备开发商开发的
ATA-7串行版本SATA 1.0。目的是把基于
ATA的存储能够更普遍应用于桌面、移动存储设备、低端服务器和网络存储领域
[1]。2004年4月,IDF再次对标准1.0版本的带宽和物理层连接器进行较大改进,并发布了增强的标准SATA I,以兼容SAS物理层,满足数据中心存储需要
[1]。使基于
ATA的存储设备性能与中、低端企业级SCSI存储设备性能重叠,适应数据生命周期和企业存储分层等应用模式的开展。与
ATA物理接口结构改变对应,SATA硬盘在机械系统、传输模式、信号方式、伺服系统、磁介质等都有一定的改变或改进,并大量借鉴SCSI技术,其基本带宽达到1.5GMps,是一种典型的“后PC”技术
[2]。
1 SATA技术要点
1.1 简化的模型
SATA串行链路接口协议借鉴了ISO/OSI和TCP/IP模型的组织方式和对象、服务、层次封装等概念,沿用层次化的描述方法,从低向上分别为物理层、链路层、传输层和应用层四层。由于通信是在主机和存储设备非对等的双方进行的,所以传统的peer-to-peer实体指代发生了变化。
1.2 协议状态机机制 SATA协议操作主要通过通信实体协议栈的传输控制状态机(Transport State Machine)和链路状态机(Link State Machine)两大核心子模块完成,其中链路状态机完成与串行线路相关的操作,传输控制状态机通过把上层操作分解成可与链路状态交换的一系列动作,使用接口中的子模块资源,完成与主机平台相关的操作。两状态机在传输数据过程中相互协调工作行为,最优化应用资源。
1.3 精简高效的核心技术
SATA是高速串行总线技术,为了在区区4条数据线上得到比并行16条数据线还要高的数据传输率,结构上减少协议层次,精简协议内容和算法复杂性;技术上各层大量采用支持高速或有利于传输的技术。这些技术主要有:
帧技术 SATA采用帧作为基本传输单元,支持七种类型、最大长度达8192字节的帧传输。在帧结构中,HOLD、HOLDA(32位)原语用于流量控制,FIS Content是有效载荷。
本地命令队列 NCQ
[3](NCQ-Native Command Queuing)是在SATA I中引入的一个强大的磁盘接口技术,目的在于减少主机和设备的握手次数、聚合数据中断,减少接口事务数量。达到减少驱动器的寻道和旋转的机械位置延迟,提高队列负载性能的目的。NCQ是对SATA 1.0所做的诸多功能扩展中唯一与性能密切相关的技术。NCQ采用RPO磁盘旋转位置命令调度算法,支持线程和最大达32级深度的命令队列管理,增加Race-free状态返回机制、中断聚合和First Parity DMA三个新的能力。
· 点到点的连接 SATA存储设备与主机的连接采用点对点连接和星型拓扑,连接带宽专用,降低了共享仲裁和配置的复杂性,避免了单点故障,改善了可扩展性和并发操作能力。
· 全层次错误检测支持 在SATA协议栈中,错误的检测从低层一直延伸到顶层
[4]。层之间的错误通过接口状态寄存器和接口错误寄存器进行传递,每层都有错误发现、错误控制和错误报告恢复能力。根据错误性质和可恢复程度,有Freeze、Abort、Retry和Track/Ignore四种处理策略。
·改进的线缆连接器和热插
[5] SATA的信号线和电源线独立配置,各信号线或电源线之间使用地线分隔。盲匹配设计,头部有额外的用于插拔定位和保护的凸出;支持带外硬盘检测,实现了完整的热插拔支持。
·其他技术 SATA使用字母标记来描述数据位和控制变量,使用8B/10B编码方案把SATA未编码的数据和控制字节翻译成字符串。传输的信号采用与现有SCSI电路兼容的(偏移值为250mv)的低电压差动(LVD)技术。电源管理细粒度化,它不仅能对存储设备的电源进行管理,还具有自我管理功能,能把不运行的部分置于低功耗模式。
2 SATA应用方案
2.1 桥 串行存储设备定位于桌面和中低端网络存储,为了能够在这些并行接口主导的领域开展应用,业界沿用了传统的“并串兼容共存、逐渐过渡到纯串行”的策略。目前实现这种策略的主流方案是桥。SATA/PATA桥是基于现有系统总线,通过附加SATA/PATA转换卡,实现串行/并行转换,把先进的串行设备集成到并行结构环境中。
桥是目前解决SATA和PATA在系统中共存的一个理想、便捷的方案,具有不影响原有的系统、开发周期短等优势,不足在于桥芯片没有提高性能,却增加了成本、板空间和功耗,同时还增加驱动器印刷电路板设计和生产的复杂性,所以只能作为一个过渡的解决方案。
2.2 本地设备
该策略是直接把SATA硬盘连入系统结构中,省缺了桥方式中大量的转换和策略延迟,最大限度发挥SATA功能特性。AHCI
[6](Advanced Host Controller Interface)是一种理想的实现本地设备策略的方案,它通过PCI BAR(Base Address Register)实现原生的SATA功能。
AHCI本质是一种PCI类设备,在系统内存总线和串行
ATA设备内部逻辑之间扮演一种通用接口的角色。这个类设备描述了一个含控制和状态区域、命令序列入口表的通用系统内存结构;每个命令表入口包含SATA设备编程信息,和一个指向(用于在设备和主机传输数据的)描述表的指针。
本地设备方案通过集成SATA到芯片组实现,它可以充分利用SATA减少信号数量的优点,表现SATA的高速度,节省了板空间,增加了可靠性,减少了功耗,实施更简单容易。不足是由于SATA接口是高速信号,给读取信道带来干扰,所以在设计芯片和主板时必须考虑采取适当的信号完整性保护措施。由于AHCI统一接口的研发成功,使得支持串行
ATA产品的开发工作大为简化,操作系统和设备制造商省去了单独开发接口的工作,取而代之的是直接在统一接口上进行操作,就能实现包括NCQ在内的诸多功能。
2.3 桥与本地设备方案的比较 桥和本地设备方案除了具有上述的技术实质差别外,还有如表1给出的多个不同之处。从比较中也可以看出桥对SATA支持的局限性,从一个侧面表现了技术对现状的妥协,也注定了桥属于技术发展过渡阶段的产物。
3 SATA设备编程
3.1 SATA的数据流 在SATA系统中,数据操作对象按粒度大小分为Primitive、FIS和Command三种。数据在(主机)适配器和存储设备之间交换,参与交换的对象和数据结构关系
[7]如图1所示。在图中,箭头从父对象指向子对象,数字1和n代表父对象拥有子对象的数目。适配器对象代表控制板或HBA,它有一个与适配器相关的适配器信息数据结构。适配器可以拥有多个控制器,每个控制器有自己独立的控制器信息,内含控制器公共寄存器数据结构和其他控制信息。而每个控制器又有多个供连接目标设备的端口。每个端口连接一个存储设备,每个设备有一个深度为1或更大的命令队列,而每条命令由与数据结构和DMA对象相关的命令对象代表。另外,对于一些含有多口的存储设备,允许它连到其他控制器的端口上,以提高设备的可用性和可靠性。
3.2 SATA的编程结构
SATA的编程结构如图2(其中右部是各层次API关系),特定操作系统模块(图2中①)完成把不同操作系统对低层驱动器件的请求翻译成低层器件能够识别的格式。SATA库模块(图2中②)包括通用SATA逻辑和SATA控制逻辑两个组件,为不同操作系统的驱动器模块提供独立于操作系统的标准API。其中,通用SATA逻辑模块是独立于控制器、操作系统和结构的,主要实现所有的算法和例程。SATA控制逻辑描述的是所有专用控制器代码,具体内容依赖于控制器的主控制芯片。操作系统服务层(图2中③)提供一个独立于操作系统的与SATA库层的接口。它与具体的操作系统相关,能把上层操作系统类的请求翻译成目标操作系统能够识别的请求格式。
3.3 操作系统对SATA应用支持
3.3.1 Windows平台
Windows平台中,桥是通过仿真Windows支持的PATA模式控制器,加载和使用PATA控制器实现。为了提供对SATA两种模式的支持,微软开发了支持最新ATA/ATAPI命令集的Ataport,该命令集支持PATA、SATA混合应用环境。应用Ataport开发的SATA控制器,一般提供两个微口(Miniport),其中一个是支持现PATA控制器的默认微口驱动器,替换现有的PATA和SATA仿真PATA的驱动栈功能实体;另一个是支持AHCI SATA的微口驱动器,在未来的Windows系统中实现本地设备模式。在Ataport中,每个设备的工作模式通过PCI规范中基类01(块存储器)的子类代码设置,当SATA设备运行在仿真并行模式时,子类代码设置为01h;运行在本地SATA模式时,应设置为06h。要说明的是,Windows 2003 Server及以前的所有版本都不提供对本地设备的支持。
3.3.2 Linux平台
Linux平台对SATA设备的支持是通过借鉴成熟的PATA,并对PATA与SATA相异部分加以改进,扩充一些SATA支持的新功能实现。
IDE设备驱动器模块(ide.c)含有一些特定的设备子驱动器如ide-pci.c、ide-probe.c、ide-pnp.c、ide-dma.c、ide-proc等。根据SATA的新特性,对SATA设备的物理发现和传输进行完善和改进,即对原有的PATA的ide-probe.c、ide-dma.c子驱动器等进行修订,其他子驱动器可以直接借鉴PATA。用户只需通过驱动器层的可选择配置,即实现对桥和本地两种模式的支持。
4 发展趋势
SATA是一种新兴的总线技术,是PATA的理想的替代技术,对它的研究和应用已成为一种趋势。这种趋势表现在:
(1) 标准化工作将进一步加快 主导SATA标准化工作的SATA工作组、Intel、Seagate、Maxtor、IBM等在不断完善SATA标准,现已有SATA1.0(a,b,c,d,等多个版本)、SATA I (Extensions to Serial ATA 1.0a, revision 1.1)等多个版本。2004年5月6日,Serial ATA工作组把原本在第二代推出的物理层带宽3Gbps编入Serial ATA Ⅱ标准中。与新标准迅速地进展相对比,工业化步伐也急需快速跟上。关键工作急需统一驱动器、主板和PC供应商,特别是芯片厂商等对SATA通信和功能的理解,创造一个真正的即插即用和相互共存环境。
(2) 协议硬件化 硬件化是减少协议的复杂性和运行效率的有效途径,为了高效实现SATA功能,第二和第三层的部分或全部协议功能硬件化(集成到芯片组)将是SATA功能实现的主要途径。
(3) SATA的应用将逐步过渡到本地模式 桥应用模式是PATA向SATA迁移过程存在的一种廉价、全兼容PATA环境的方案。但随着SATA、AHCI标准化和工业化的发展,现在PATA和SATA共存的现状将逐步过渡到以SATA主导。
(4) SATA将应用于网络存储领域 SATA具有高带宽、拓扑易扩展、数据完整性、可靠性、盘体MTBF与SCSI相当、支持热插拔网络存储等特点,具备组成低廉的RAID进入网络存储领域的条件。加之SAS(Serial Attached SCSI)支持SATA,提供STP(SATA Tunnel Protocol)最大限度地兼容SATA等等内容,都为SATA进入网络存储领域提供了技术条件。
随着ATA-100/133的引入,PATA的发展已经到了尽头,引入SATA代替PATA是技术发展的必然趋势。SATA引入了大量的新技术,并保持与PATA兼容。Windows和Linux操作系统都提供应用支持,开展应用简单快捷。以相对较低的成本获得比PATA高得多的性能,并为中、低端企业级存储和其他外存应用拓展空间,将是未来存储技术发展的主流技术之一。
参考文献
1 Wong, William, A year of transition: Machines get faster,smaller, smarter[J],Electronic Design, v 51, n 13, Jun 16, 2003, p34~36
2 Bob Norman, Frank Lee. Implementing serial ATA in next-generation computer systems.Computer Technology Review[J].Feb 2002
3 Amber Huffman, Joni Clark. Serial ATA Native Command Queuing[S].www.intel.com. Jul 2003.
4 APT Technologies Inc, Dell Computer Corporation, Intel Cor-poration, etc. Serial ATA: High Speed Serialized AT Attach-ment(Revision 1.0a) [S] , www.serialata.org , Jan 2003.
5 Dell Computer Corporation. Intel Corporation, Maxtor Corpo-ration, etc. SerialⅡ: Cable and Connector volume 1("Final Specification") [S], www.serialata.org, Feb 2003.
6 Intel Corporation. Serial ATA: Advanced Host Controller In-terface (Revision 1.0) [S], www.intel.com, May 2004
7 Intel Corporation, Serial ATAⅡ Native Command Queuing Overview[R], www.intel.com, Apr. 2003