前言
本文已发表于《计算机世界》报2003年8月4日产品技术版,谢绝纸媒体转载
2002年的7月29日,《计算机世界》报第28期B1~B11版发表了笔者的《ATA串起SCSI——存 储接口世纪联姻》专题,这也是国内媒体上第一组介绍串行连接SCSI(Serial Attached SCSI,SAS)的原创文章。由于当时SAS尚处于规格制订的早期阶段,很多工作都还没有“浮出水面”,因此该专题以ATA和SCSI的渊源入手,引出 Serial ATA(SATA)的串行诱惑与并行SCSI的总线危机,最后1/3的篇幅才是讨论SAS问世背景、简要规格及市场定位的内容。
随后SAS进入产品设计阶段,标准制订工作取得了长足的进展。2003年1月20日,SCSI商业协会 (SCSI Trade Association,STA)在Server I/O 2003上宣布与Serial ATA Ⅱ工作组达成合作,共同致力于SAS与SATA硬盘的系统级兼容。SAS的物理接口设计已经确定,各相关厂商陆续走上前台。
在追踪SAS技术动态的同时,笔者也一直关注着Serial ATA Ⅱ。作为Serial ATA针对入门级服务器和网络存储设备需要进行的功能扩展,Serial ATA Ⅱ将进入企业级市场作为Serial Attached SCSI在低端的补充,ATA和SCSI交汇之处不再泾渭分明。笔者受一位台湾同行网名“疑似奉子成婚”的启发,用“奉子成婚”来形容Serial Attached SCSI与Serial ATA Ⅱ之间的关系,出发点固然是Serial Attached SCSI在事实上兼容Serial ATA后才宣布达成官方合作,真正的用意却指向双方在企业级存储市场高低搭配的互补关系。通过对各种相关技术规范的发掘,笔者整理出底层接口、设备性能和 子系统三条主线,希望这种剖析方式能够让大家对Serial Attached SCSI和Serial ATA Ⅱ有更为深入的了解。
特别提示 |
Marty Czekalski SCSI商业协会董事会成员/副总裁 Serial Attached SCSI工作组创立者之一,执委会成员 Maxtor公司接口架构主管 T10委员会的网站一直在更新Serial Attached SCSI的技术规范,通过其他途径也可以搜集到不少相关资料,但在一些关键技术细节的理解上笔者还不是很有把握。通过与Marty Czekalski先生的多次E-mail交流,笔者得到了足够详尽的解释,特在此表示感谢。 |
光大祖业 奉子成婚——SAS与SATA-Ⅱ
这是一个串行的时代
串行革命的先行者USB和IEEE 1394已经先后取得了成功,PCI Express也正如推广者所愿高速向黎明挺进。如果说接口互连技术从并行向串行的过渡要遵循自外而内的顺序,那么介于内外之间的存储设备接口应该恰处在“串行进行时”。
事实的确如此。低端的ATA“笨鸟先飞”,三年前就开始行动的Serial ATA已于去年“修成正果”,正在准备迎接收获季节;Serial Attached SCSI虽起步较晚,但对Serial ATA的“收编”显著加快了标准制订的进度,有望在2004年成为堪与PCI Express比肩的热点。
祖宗之法终须改
经过20年的发展(截止到2001年,ATA的历史还没有这么长,详情参见《ATA串起SCSI——存储接 口世纪联姻》专题),SCSI和ATA在硬盘接口领域已占据了绝对的统治地位:个人存储市场(桌面型和移动型硬盘)完全是ATA的天下,企业级硬盘采用 SCSI的比例也超过80%。
SCSI和ATA的成功书写了并行接口的辉煌,然而后者的总线结构频率提升困难、效率低下,动辄数十根的连 线也不利于设备小型化和高密度存储,已经不能适应21世纪的要求。相比之下,大幅度减少连线的串行接口不仅有便于设计、利于机内空气流通的优点,更可以在 点对点连接的基础上演变出高效且易于扩展的交换架构,是(至少)未来十年的发展方向。
基于上述共识,Ultra ATA/100和Ultra320 SCSI先后被定位成并行接口的收山之作。既然要转向串行,包括连接器和线缆在内的物理层必然会随之改变,但一定要与原来的并行接口保持软件兼容,这样现有的操作系统和软件都无需改变,保护了开发商和用户的投资。
当然,软件兼容只是帮助新一代ATA和SCSI接口完成从并行向串行平滑迁移,顺利继承“祖业”的手段,若 要充分发挥串行接口的优势、扩大各自原先的适用范围,可以再陆续增加新的功能、改善性能(成为并行ATA和SCSI命令的所谓“超集”),并随着时间的推 移逐渐淘汰原有标准中过时的部分,即尽可能以渐近的方式完成变革——完全推倒重来不是开放市场的风格。
成婚妙举获利多
虽说同为并行,SCSI和ATA的高下之分还是很明显的。这也难怪,ATA接口的“始作俑者”初衷是以尽可 能低的成本提供可以接受的性能,本就没有什么长远打算。经过不断的规格扩充后,ATA标准不经意中已在市场上活跃了十多年,然而最初的“因陋就简”限制了 其进一步发展的空间:不要说连接距离(46厘米)和设备数目(双通道,主/从配置)难以满足下一个十年的要求,就连带宽的提升也变得步履维艰——如果没有 增加40根地线这一招,真不知Ultra ATA/66该怎样实现。
穷则思变。在Ultra ATA/66的热潮尚未褪去的2000年春季,串行ATA(Serial ATA,SATA)被提上了议事日程。Serial ATA 1.0参考了ATA/ATAPI-5标准,与Ultra ATA的软件兼容相对比较容易,难的是硬件接口要重新设计,因此最终规范直到2001年秋季才正式发布,前后历时18个月。在此期间,并行ATA经过 Ultra ATA/100的过渡才勉强实现了接口带宽的倍增(象征意义大于实用价值的Ultra ATA/133)。
与ATA相比,SCSI改走串行“未雨绸缪”的成份更大一些。在Ultra320 SCSI还未产品化、Ultra640 SCSI尚处制订中的2001年冬季,Compaq、IBM、LSI Logic、Maxtor和Seagate主动出击,宣布要开发Serial Attached SCSI。Serial Attached SCSI支持SCSI主要命令(SCSI Primary Commands-3,SPC-3),硬件接口则独出心裁地“先斩后奏,偷食禁果”——采用增强的Serial ATA物理层(添加第二端口支持),这样做的好处至少有二:
首先,开发时间得到了有效的控制。如果说Serial ATA是ATA的一场革命,那么Serial Attached SCSI就是SCSI“翻天覆地”的大革命——双端口、多路物理连接和从单一总线转至分级交换架构,复杂程度变化之大远非Serial ATA所能比拟,如果物理层还要白手起家,就难保不会像Serial ATA一样遭遇进度延期(大约一年)的困扰。正是凭借对Serial ATA物理层的“拿来主义”,一年多来Serial Attached SCSI的前进步调基本上与拟定好的时间表(见下图)相吻合,曾经有可能为其充当“救火队员”的Ultra640 SCSI也不再有人提起。反观ATA一方,业内本已达成从Ultra ATA/100直升Serial ATA的共识,难耐寂寞的Maxtor还是请出Ultra ATA/133“秀”了一把。
其次,SATA外围设备(特别是硬盘)将能够用于SAS环境中。长期以来,ATA只是在功能上被视为 SCSI的子集,两者之间并不兼容。如今SAS在软硬件层面上都涵盖了SATA,企业级用户可以在同一环境中混用SAS(提高性能)和SATA(降低成 本)驱动器,既提高了灵活性又可避免重复投资,无疑是一项创新之举。
两相比较,SAS对SATA的兼容显然更为重要。正因如此,SAS在标准制订过程中一直紧跟ATA方面的变 化,SAS规范所参考的ATA规范从00a修订本中的ATA/ATAPI-6和ATA/ATAPI-7前进至05修订本中的ATA/ATAPI-7 V1、ATA/ATAPI-7 V3(Serial ATA)及Serial ATA Ⅱ: Extensions to Serial ATA 1.0就是一例,而SCSI商业协会与Serial ATA Ⅱ工作组共同致力于SAS与SATA硬盘系统级兼容合作的意义更超越了简单的“名份”范畴。
魔高一尺 道高一丈——ATA与SCSI再战串行
从应用的层面讲,ATA与SCSI的关系是互补远大于竞争,存在的价值不应有高下之分;然而若深入挖掘技术细节,孰强孰弱、谁先谁后的讨论却并非全无意义。
历史:基础制胜
SCSI的问世时间早于ATA,规格也更为完善,但并不意味着在新技术的应用上总是SCSI走在前面。这方 面比较典型的例子是双沿传输(DT,原理相当于DDR)和CRC校验,1996年出台的Ultra ATA/33(又称Ultra DMA/33)就已经具备,比SCSI早了整整两年(Ultra3 SCSI)。
某些功能则是难分伯仲。仍以CRC校验为例,最初只有数据相(Data Phase)能够享受这个待遇,后来ATA和SCSI不约而同地将其增强为对包括命令和状态在内的全部传输内容提供保护(下图)——从标准制订到产品 化,Serial ATA 1.0和Ultra320 SCSI在时间上都相差无几。
CRC范围的变迁
然而在最基本的底层架构上,先天不足的ATA怎么努力也无法缩小与SCSI的差距。LVD(Low Voltage Differential,低电压差分),一项不算复杂但却需要双倍数据线(分别传输正、负电压信号)的技术,成为了决定SCSI和并行 ATA(Parallel ATA,PATA)发展空间的重要因素。LVD增强了信号的抗干扰、抗衰减能力,有助于延长连接距离,保证高频传输的可靠性。站在LVD的角度来考虑问 题,就容易理解为何SCSI不急于采用双沿传输和CRC校验了。
如果不采用双沿传输,PATA要实现33MB/s的带宽,运行频率就会达到16.6MHz,可是PATA的 40根数据线在运行频率逼近11.1MHz的时候就已无法保证传输质量,而双沿传输使Ultra ATA/33无需提高运行频率(8.3MHz)即可达到同样的目的,CRC校验的引入则有利于维护数据完整性。不过,随着带宽的再次翻倍(66MB /s),11.1MHz终被突破,因此Ultra ATA/66不得已搬出了增加40根地线的设计,效果虽不能与LVD相提并论,但总算能够将寿命延长至Ultra ATA/133(运行频率33.3MHz)。
反观Ultra2 Wide(U2W)SCSI,80MB/s的带宽都不需要双沿传输,因为LVD线缆足以应付40MHz的运行频率,没有CRC校验数据质量也不差。 Ultra160 SCSI采用了双沿传输和CRC校验,所以运行频率保持不变,线缆也不用更换;Ultra320 SCSI的运行频率提高到了80MHz,理论上要求用专门的线缆,但由于线缆的结构并没有实质性改变,因此质量较好的LVD线缆仍然可以使用(只是连接距 离可能会受到一些影响)。
从连接距离、设备数目到多任务操作能力,SCSI建筑在底层架构上的优势是PATA无法追赶的,LVD不过是其中一例。
变法:强者愈强
PC处理能力的增强带来了其应用范围的扩大,对存储设备接口的要求也水涨船高——至少,仅靠廉价是不行了。
Serial ATA(SATA)的串行点对点连接在保持廉价特色的同时突破了PATA的局限:简直是串行接口必备的LVDS(低电压差分信号)技术将连接距离提高了一 倍,1米的长度完全能够满足PC机内存储的要求;每个端口可连接的设备数目虽然从2个减少为1个,但小巧的连接器却让同样面积所能容纳的端口数量成倍增 加,结局不言自明;点对点连接构成相对先进的星形拓扑,可以显著改善并发操作能力。在发展空间上,令PATA难以逾越的150MB/s(1.5Gb /s,8b/10b编码)只是SATA的起步带宽,后续将会提高到300MB/s和600MB/s(下图)。
SAS和SATA的发展路线图
尽管SATA与(并行)SCSI相比仍存在全方位的差距,但已不像PATA那么明显,SCSI阵营对此焉能 视而不见?何况并行SCSI继续发展的潜力也很有限,步ATA的后尘转向串行是迟早的事。Serial Attached SCSI(SAS)吸纳SATA的物理层设计是一大妙招,然而怎样运用同样的串行点对点连接营造出比SATA更为复杂的拓扑结构,从而满足企业级存储系统 对性能、可靠性和可用性的要求,难度也是显而易见的。
SAS不仅是在SATA的物理层上执行SCSI命令集那么简单,它还具备FC(Fibre Channel)的某些特性,这使其超越了SATA和(并行)SCSI的范畴(表1)。
表1:SATA、SAS和FC-AL主要特性对比
双端口 SAS的数据帧基于FCP(FC Protocol),还对SATA的物理层进行了增强——(在外围设备端)添加第二端口支持,形成符合高可用性要求的双端口(dual port)。
全双工 并行ATA和SCSI都是发送和接收共用一组数据线,因此发送和接收不能同时进行,即所谓的半双工(half duplex);SATA数据线由两条传送方向相反的差分信号对(LVDS,共4根)组成,发送(Tx)和接收(Rx)各走一路,为全双工(full duplex)提供了物理上的可能。不过,SATA在一对信号线上传送数据的同时需要用另一对信号线返回流控(flow control)信息,所以仍然是半双工;SAS则将一路数据所需的流控信息与反向传送的数据混合在一起,从而能在同样的数据线上实现全双工(下图)。
SAS的全双工工作示意图
宽链接 物理链接(physical link)是SAS中的一个基础概念,一条物理链接包括两对差分信号线(Tx和Rx,即一条SATA 线缆),传输方向相反,在两个物理Phy之间形成通路。两个SAS端口之间可以建立起由多个物理链接构成的wide link(图4),相应的端口也被称做wide port,可以表示为N-wide link和N-wide port,N取值在1~4之间,代表物理链接的数量。1-wide link/port即narrow link/port,这方面的典型例子是硬盘,双端口意味着两个独立的narrow port(虽然规格中并没有将硬盘端口严格限定在1-wide,但单个物理链接所能提供的带宽已经明显超出硬盘的内部传输率,还可以降低成本和设计复杂 性),不能配置成一个2-wide port(2宽度端口)。
宽链接和宽端口
类似于PCI Express(×1~×32),SAS支持宽链接的主要出发点是获得成倍的带宽,这种并联的方便性显然要拜串行技术所赐。
带宽 或许是考虑到2004年第一批SAS产品问世时SATA很可能已推出3.0Gb/s的第二代规格,SAS 1.0/1.1采取了直接支持3.0Gb/s并向下兼容1.5Gb/s的策略。Marty Czekalski承认,包括7月8日T10会议上LSI Logic与Maxtor联合演示系统在内的某些初期原型产品的确运行在1.5Gb/s,但都是在FPGA和现货供应PHY(物理层)芯片基础上开发的, 预计2003年年底将会有采用完全集成3Gb/s PHY芯片和ASIC设计的设备出现,并逐渐被业内接受。
量产的SAS设备会具有每端口3Gb/s的数据速率,SAS协议还允许全双工操作,这意味着一台双端口驱动 器能够达到12Gb/s的峰值吞吐率(理论上限,持续时间取决于驱动器内部结构和缓存带宽),而4-wide port(4宽度端口)更可以获得24Gb/s(合2.4GB/s)的带宽——超过PCI-X 2.0。
连接距离 为了提高连接距离,SAS发送和接收信号的电压范围都比SATA大为提高(表2)。在具体的连接距离指标上,最初宣称是10米,新的资料则是大于6米(外 部线缆),似乎与信号速率从1.5Gb/s提高到3.0Gb/s有关。需要指出的是SAS规范里面并没有严格限定线缆长度,而是靠发送水平和接收敏感度来 考察,(制造商)通过检测线缆特性来判定其所能达到的距离——高质量线缆可以连接得更远,当然成本也更高。现在SAS线缆连接距离的要求已经提高到8米 (制造商仍可以花费更多,用更高质量的线缆求得更长的距离),通过3个扩展器(Expander)之后,SAS的连接距离能够超过32米,与 Ultra160/320 SCSI的12米(15个设备)或25米(点对点)相比虽没有明显优势,但也足以应付机内存储设备连接和近距离DAS的要求了。
表2:SAS和SATA物理层的兼容性
演变——SATA-Ⅱ和SAS 1.1
Serial ATA 1.0定义了Serial ATA接口的连接器、线缆、物理层和协议,桌面计算平台是其主要应用目标。在2002年春季IDF上,Serial ATA 1.0的发起者APT、Dell、Intel、Maxtor和Seagate又牵头成立了Serial ATA Ⅱ工作组,负责开发具备服务器和网络存储设备所需功能及下一代信号速率的Serial ATA Ⅱ规范,而紧随其后的Serial Attached SCSI也没有满足于1.0版。
Serial ATA Ⅱ两步走
Serial ATA Ⅱ规范分为两个阶段,第一阶段是在Serial ATA 1.0的基础上增加服务器和网络存储设备所需功能,即“Serial ATA Ⅱ: Extensions to Serial ATA 1.0”(简称Extensions to SATA 1.0),已经于2002年10月16日完成1.0修订本,是Serial ATA Ⅱ工作组开发的众多规范中第一个亮相的。Extensions to SATA 1.0的所有功能(下表)都是可选的(非强制性),只要具备任何一个功能都可以声明“Supports SATA Extensions”(支持SATA扩展),相应的产品则被称为“SATA 1.5 Gb/s product x supports SATA Extensions”或“SATA 1.5 Gb/s product x supports SATA Extensions a, b, &c”。根据Serial ATA命名规则,产品不能叫做“SATA 1.0”或“SATA Ⅱ”——“SATA 1.5 Gb/s”或“SATA 3.0 Gb/s”既表明了是哪一代SATA规范,还可以避免引起混淆。
第二阶段的主要目标是将信号速率翻倍为3.0Gb/s,按计划应该在2003年下半年定义,2004年下半 年进入产品研发。其他最初赋予第二阶段的任务,不是已经公布规范(“有效连接大量设备的能力”,包括Serial ATA Ⅱ: Port Multiplier和Ganged connector),就是与SAS关系密切(“拓扑支持双主机失效保护”),详细介绍参见后文。
Serial ATA Ⅱ: Extensions to Serial ATA 1.0的新增功能
×——需要改进以支持相应功能
Serial Attached SCSI内外皆修
2002年10月23日,Intel向T10委员会递交了让SAS支持Serial ATA Ⅱ: Extensions to Serial ATA 1.0的提议。11月7日,T10开始考虑自己的下一代——Serial Attached SCSI - 2(SAS-2),并计划于2004年12月对外公布草案。
然而,进入2003年后不久,“SAS-2”的字样就从T10网站的工作草案文档区消失了——被 Serial Attached SCSI-1.1(SAS-1.1)取而代之。对此STA(SCSI商业协会)常务董事Michael T. LoBue的解释是,那个“SAS-2”与SAS 1.0相比变化不是很大,用“SAS-1.1”表达更符合实际。
2003年7月10日,T10公布了SAS 1.1工作草案的第一个版本(00修订本),它的绝大部分内容与SAS 1.0的05修订本相同,只有少量改进,信号速率不变。改进之处包括:
1.增加4-wide内部连接器(对应SATA Ⅱ的Ganged connector);
2.简化的第一次突发(可选功能,不利用它对硬盘和磁带机等设备没有影响);
3.链路/传输层重试:在SAS 1.0中,如果传输数据到设备的过程中发生错误,将导致整个传输终止,传输重试,这种机制与硬盘的行为相匹配,很少甚至根本不会影响整个系统的性能。然 而,对流式磁带驱动器来说,重发数据却会因磁带回卷而造成性能显著下降。为了获得一个基本稳定的规范并加快SAS系统推向市场的速度,制订SAS 1.0时没有过多考虑这个问题。SAS 1.1增加了链路/传输层重试,可以改善使用磁带驱动器时的性能。
4.改正了在SAS 1.0中发现的所有错误。
预计SAS 1.1将在SAS 1.0之后9个月左右通过标准审查,SAS 2.0的时间表目前还不清楚,惟一确定的是其数据速率将达到6Gb/s。Marty Czekalski估计大约还要等上两年,不会早于SAS 1.1。
也许作为SAS象征的标志(logo)改变更为显著。最初的标志(上图) 是在工作组初期设计的,描绘了一个连接着多个设备的扩展器(Expander),当时工作组只有5个成员,主要精力都放在开发技术规范上,标志的挑选程序 没有过多考虑市场宣传的要求。在2002年5月规范草案转交T10开发之后,代替工作组推广SAS的STA认为,最初的标志在颜色和风格上不能与STA或 SATA的标志形成互补,有必要改用一种与所有标志同时在介绍材料中出现时仍清晰可见的风格。于是,经过更换颜色和部分变形之后,SAS标志就成了今天这 个样子(见下图)。
包容有道——SAS环境中的SATA设备
SAS兼容SATA的能力非常重要,系统集成商和用户可以根据实际需要在大容量/高性价比的SATA硬盘与高性能/高可用性的SAS硬盘之间自由选择。不过,串行互连技术促进存储接口融合说起来容易,但真正实现起来要解决的问题还是很多的。
SAS对SATA的支持可以从软件和硬件两个层面来讨论,其中双端口格外值得我们关注。
STP铺路 OOB识别
SAS定义了3个协议:串行SCSI协议(Serial SCSI Protocol,SSP),全双工,让SCSI运行在增强的SATA物理层上;串行ATA隧道协议(Serial ATA Tunneled Protocol,STP),为SATA增加多目标寻址和多发起者访问,以适应SAS环境的需要;串行管理协议(Serial Management Protocol,SMP),用于发现和管理扩展器(Expander)。
扩展器把SATA的点对点连接扩展至SAS的多发起者/多目标,然而SATA协议仅支持单发起者/单目 标,STP的任务就是让发起者能够通过扩展器访问SATA目标。STP在发起者与最远的、也就是连接SATA设备的扩展器端口(STP目标端口)之间建立 起一条通路(隧道),传输标准的SATA 1.0帧,因此在SATA设备看来,自己连接的就是SATA主机适配器。如果发起者端口识别出与其直接相连的是一台SATA设备,则只使用SATA协议通 信。
发起者端口怎么知道自己连接的是SATA设备或SAS设备呢?在连接初始化时,发起者送出OOB(Out of band)慢速脉冲信号,检测目标对COMSAS脉冲的响应情况——如果目标也返回COMSAS脉冲,就是SAS设备,反之即为SATA设备。需要注意的 是,由于在SAS协议中发起者和目标是对等的,外围设备(如硬盘)也可以作为发起者,主动送出COMSAS脉冲,向目标(主机适配器)表明自己的身份。以 硬盘为例,能否生成COMSAS脉冲即辨别SAS与SATA的依据。
STP发起者端口经过OOB协商确认与自己相连的是SATA设备后即进入SATA模式,严格遵循SATA主 机适配器的行为规范。STP并不关心SATA FIS(Frame Information Structure,帧信息结构)的内容,SATA命令排队可以在FIS中传输——前提当然是STP发起者端口和SATA设备必须支持命令排队功能。不 过,SATA Ⅱ中的其他扩展功能不是被STP排除在外,就是以另外的方式实现。
传输完成后由SAS主机适配器或扩展器决定是否用STP断开与SATA设备的连接,以后需要时再重新连接。 整个过程中该SATA设备始终以为自己通过正常的流控机制直接连在某个SATA主机适配器上,实际情况却是SAS主机适配器进行了SATA“翻译”工作。 在Windows操作系统中,这个SAS主机适配器将与使用Miniport驱动程序的SATA主机适配器一样被归类为SCSI控制器。
背侧添丁 双口防患
从时间上看,SAS连接器(包括设备端插头及背板和内部线缆插座)的设计方案要滞后于线缆——第二端口的安放位置似乎比并联数据线更费思量。
SAS与SATA连接器示意图
难者不会,会者不难。SFF-8482内部附属连接器规范将原本分离的SATA端口和电源插头相连,SAS 第二端口位于连接处的背侧(插座则是对侧,见上图)。第二端口比这块跨接区域略宽,但也只有SATA端口(也即SAS第一端口)的2/3,因此其7个接脚 及间距均明显变窄(下图)。与SAS插头的“铁板一块”相对应,SAS插座也“全线贯通”(SATA插座在SAS第二端口的位置有一突起),这样既可以保 证SATA设备插入SAS插座,又能避免误将SAS设备插入SATA插座。
SAS连接器就是SATA连接器背面加上第二端口
由于单端口的带宽(3.0Gb/s,甚至1.5Gb/s)已经能够满足硬盘的要求,SAS硬盘增加第二端口并不是为了支持宽链接(2-wide),而是通过给它们赋予不同的SAS地址(WWN),让双端口分属两个(冗余的)域以防系统出现单点故障,从而提高可用性。
在SAS环境中,SATA设备同样有高可用性需求,即允许两个主机适配器连接到一台SATA硬盘上,避免主 机适配器成为单点故障源(图3)。与SAS的双端口不同,在任何时刻都只能由一个主机适配器独享此SATA硬盘的控制权(由系统软件检测哪个主机适配器处 于“活动”状态)。这种通路切换机制由两端口到单端口的适配器——端口选择器(Port Selector,PS)——实现,SATA Ⅱ工作组负责开发规范,工作草案已经递交T10网站供参考。在任何时刻只有一个端口处于活动状态,在切换端口之前硬盘的所有行为都必须停止(队列中无请 求)。端口选择器的设计取决于子系统厂商,可以两边分别是SAS(双端口)和SATA连接器,也有可能把端口选择器放在背板上,或者干脆将其集成到硬盘上 配合统一的背板连接器使用。SATA Ⅱ工作组还有意将端口选择器用于静态负载均衡。不过,这样一来也对该SATA硬盘的工作周期(7×24)和平均无故障时间(MTBF)提出了更高的要求。
防止单点失效的典型SAS配置
为了更好地兼容SATA,SAS的物理层也提供了对时钟频谱扩展(Spread Spectrum Clocking)的支持。时钟频谱扩展通过将时钟发生器脉冲波的尖峰衰减为相对平滑的曲线来降低EMI(ElectroMagnetic Interference,电磁干扰),SATA加入这项功能是为了满足PC对电磁辐射的严格要求;SAS所面向的服务器和网络存储设备辐射标准没有那么 苛刻,SAS设备并不需要它,但SAS系统却必须能接收来自SATA设备的时钟频谱扩展信号。
发起者和目标
对SATA来说,发起者(initiator)必须是主机控制器,目标(target)只能是外围(存储)设备;SAS却灵活许多,外围设备同样能够成为发起者,主机控制器也可以当做目标。
造成这种差别的根源在于SAS继承了SCSI对等(peer-to-peer)的传统,即发起者和目标地位平等,在建立连接和传输数据时没有主从之分。对等是SAS很容易地就能在单个物理链接上实现全双工的主要原因,但它的优点并不限于此。
SAS硬盘执行SCSI扩展拷贝命令时,(SSP)协议允许一块硬盘直接与其他硬盘建立连接,在没有主机参与的情况下发送SCSI命令并传输数据。
另一个对等的例子是RAID卡。SAS允许两块(冗余的)RAID卡连接到同一SAS域中互相通信,这个通信路径将两块RAID卡联系在一起,如果其中一块RAID卡发生故障,另一块就会接替它的动作而不用担心数据损坏。
相比之下,SATA和PATA一样由主机起控制作用,外围设备只是被动地响应请求,即所谓“非对等”。也就是说,SATA协议没有允许两块主机适配器相互沟通或在两块硬盘间建立直接通信路径的机制。
SAS规范并没有限制SAS硬盘作为发起者与SATA硬盘通信的能力,然而实际设计中不会出现这种情况,因为SAS硬盘要为此提供对STP和SATA发起者协议的支持,从而提高复杂性和成本。
把排队落到实处——SATA-Ⅱ本机命令排队
在Serial ATA Ⅱ对Serial ATA 1.0所做的诸多功能扩展中,只有一项是与性能密切相关的,它就是本机命令排队(Native Command queuing,也称全速命令排队,简写为NCQ)。借助SATA 1.0改进的DMA机制,SATA Ⅱ本机命令排队结束了PATA命令排队可有可无的尴尬历史,能够更好地满足入门级服务器和网络存储设备的要求,也顺应了PC应用环境向多线程发展的趋势。
并行ATA(PATA)命令排队协议1997年就被加入ATA/ATAPI-4规范,可直到现在仍仅有一家硬盘厂商(HGST,原来的IBM)提供支持该协议的产品。难道是PATA命令排队实现起来太过复杂?答案当然是——非也。
PATA排队难有作为
在这个即将被抛弃的时刻,PATA的“罪恶”自然是罄竹难书。如此说来,再多拎出一条似乎也不能算落井下石。
组成PATA排队协议的命令包括Read DMA Queued(Ext)、Write DMA Queued(Ext)和Service,其中后者是出于PATA DMA的总线从属性需要。前面我们已经介绍过,PATA是非对等的协议,也即硬盘不能主动与主机通信,必须由主机定期交替轮询(同一通道内的)主盘和从 盘。这样一来,硬盘在接收到来自主机的命令后,要么立即执行,要么必须通过设置注意标志和Service位来通知主机何时准备就绪执行命令。主机发现 Service位后,会发出一条Service命令,以便从硬盘得到将执行哪一条待执行命令的信息。
由于队列的客观属性决定了其中至多有一条命令能够立即执行,因此在深度大于1的队列中Service命令不 可避免。由于Service位不包含任何对即将执行命令的识别信息,所必需的命令识别信息要以标记值的形式与数据请求一同传输,而且仅供主机用以设置 DMA引擎和接收数据缓冲区,主机不能预先掌握硬盘所设置的辅助位来自哪条命令,数据传输周期开始前也无法设置DMA引擎。本来最清楚数据存放在何处和怎 样访问的硬盘,现在反倒被置于完全被动的地位,有关数据传输的所有准备工作和决策都是由主机做出的,自己只剩下设置Service位,等待主机下一次查询 的份儿。最终的结果是,受PATA DMA的总线从属性限制,PATA命令排队带来的性能改善,很轻易地就被协议开销抹杀了。在队列深度较浅的时候,性能甚至还比不排队的情况有所下降——连 “聊胜于无”都算不上。
所以,尽管接收到来自主机的命令就执行(而不是排队)看起来很傻,可是PATA硬盘的设计者们基本上别无选择。没有命令排队(有也发挥不了多大作用)的后果就是,随着并发访问程度的提高,PATA硬盘与SCSI硬盘之间的性能差距被越拉越大(见图)。
PATA硬盘的IOPS性能随队列深度提高的幅度明显不及SCSI硬盘
在传统的PC单线程应用中,PATA硬盘可以按照主机软件安排的顺序执行命令,因此没有命令排队还不是很严重的问题。但是,随着超线程技术的出现,多线程应用将逐渐在PC领域普及,对硬盘端排队能力的需求渐趋迫切,SATA Ⅱ本机命令排队可谓生逢其时。
FPDMA反客为主
既然PATA DMA的总线从属性是命令排队有名无实的“元凶”,SATA Ⅱ本机命令排队就通过单方DMA(First Party DMA,FPDMA)的机制来解决这个问题。虽然继承了PATA的非对等“传统”,但SATA利用FPDMA促成主机控制器为排队命令的数据传输选择适当 的目标或源物理内存区域(允许硬盘经由Scatter/Gather列表直接寻址)并初始化DMA引擎,进而可以自己安排传输数据的时间和顺序。
为了实现硬盘与主机之间的数据和状态通信,SATA 1.0定义了三种类型的帧信息结构(FIS),分别是FPDMA Setup、DMA Active和Set Device Bits,SATA Ⅱ本机命令排队直接使用它们而无需修改现有SATA协议,不过增加了Read FPDMA Queued和Write FPDMA Queued这两条命令。
SATA Ⅱ本机命令排队允许支持和不支持该协议的硬盘连接在一个主机控制器上,当然更能够共存于同一磁盘子系统中。主机控制器驱动程序通过识别设备 (Identify Device)功能检测硬盘是否支持SATA Ⅱ本机命令排队,本身还要支持Read FPDMA Queued和Write FPDMA Queued,因此必须做出相应的改动。
5月7日,Intel在WinHEC 2003会议上发布了高级主机控制器接口0.95版规范(Advanced Host Controller Interface,AHCI),为驱动程序和系统软件提供了发现并实施命令队列、热插及电源管理等高级SATA功能的标准接口。AHCI最终规范预计在 2004年早期推出,而基于0.95版规范的AHCI SATA独立主机控制器则力争于2003年年底上市。
SATA在DMA方式上的改进,不仅避免了PATA命令排队的协议开销,还提高了无序数据传送的效率。由于 PATA DMA的总线从属性和轮询间隔造成的等待,PATA硬盘只有在收到Service命令后,才能将数据写入缓存,然后整块传输;在SATA中,硬盘决定何时 开始传输数据,也就是说,从盘片中读取数据后,不等主机完成读时序和置Service位启动DMA设置,立刻就可以利用非零偏移(no-zero offset)数据传输。以磁头错过起始LBA的32扇区数据传输为例,SATA硬盘不是以无序数据传送方式将数据写入高速缓存,然后再启动32扇区 DMA传输,而是建立一个部分DMA传输——譬如后16个扇区的DMA传输,等起始LBA旋转到磁头下方,硬盘立刻发出针对前16个扇区的新一条Read FPDMA Queued命令。
由于FPDMA可以充分利用无序数据传送,即使队列深度为1,SATA也可以提高性能。利用明显高于硬盘持 续传输率的接口带宽,SATA能通过非零偏移FPDMA Setup先传输第一批数据扇区的数据,然后断开与主机控制器的连接避免无谓地占用带宽,待起始LBA到达磁头下方再启动第二个FPDMA Setup传输其余数据。这实质上就是利用了命令排队的功能,而且在数据传输过程中主机控制器也的确可以插入其他命令。
小结:(硬盘内部)命令排队的本质是什么?就是让硬盘来决定何时及以怎 样的形式执行每一条命令以达到节省时间、提高效率的目的。可是在PATA中,硬盘只有排列命令顺序的能力,最关键的时间因素却掌握在主机(控制器)手里, 硬盘准备好的数据(往往)不能立即传输给主机,由此产生的无谓等待和命令开销很轻易地就将命令排队所能带来的优势化解为无形,接到命令立即执行成为了 PATA硬盘的主旋律。SATA的FPDMA方式帮助硬盘“夺回”对时间因素的控制权,真正可以自主决定何时传输数据,是本机命令排队得以发挥作用的必要 保障。
差距源于定位
虽说看起来SATA Ⅱ本机命令排队比PATA要简洁高效许多,但那主要应归功于DMA方式的改变,命令排队本身的功能仍然受到了PATA“遗传”的局限,譬如排队命令与非排 队命令不能混合使用、发生错误将导致硬盘放弃队列中的全部命令(主机必须管理恢复过程),不过与SCSI命令排队最大的区别还是队列类型及深度。
SCSI命令排队支持三种队列类型,分别是简单队列(Simple Queue)、有序队列(Ordered Queue)和队列头(Head of Queue)。ATA命令排队只是简单队列,即硬盘享有以任意顺序排列和优化命令的完全自主权。
队列头属性赋予某一命令以优先权,让它排在某个现有队列的前头,以优先响应紧急的I/O请求。如果出现了新 的更为紧急的I/O请求,只需发出相应的命令并赋予队列头属性即可,后进先出(LIFO)排序方案随后就会限定优先执行这一新的命令。不过,SATA Ⅱ本机命令排队虽然不能对队列排定优先级,但却可以发出一条虚拟的队列头命令来打乱现有队列,给新的命令让路——代价是队列中未完成的命令必须重新发送。
有序队列要求以命令的接收顺序执行命令,杜绝了在硬盘内部调整执行时间和进行优化的可能性。作为SCSI命 令排队中的特例,有序队列用于多启动程序(发起者)/多目标环境,启动程序突然将必须严格遵守的命令排序方案发送给硬盘,随后就释放总线,直到满足该I /O请求为止。通过发送一个由上述三种类型队列组成的混合队列,SCSI命令排队可以提供比SATA Ⅱ本机命令排队更为强大的功能。
至于队列深度的规定,ATA最大为32级,SCSI为256级,两种新兴的串行接口(SATA和SAS)也 不例外。对于PC和入门级服务器、网络存储设备,SATA的32级深度已经足够,而SCSI面向的多主机/多设备应用环境则要求更深的队列深度。不过,由 于队列越深(实现)成本也就越高,并且满深度利用队列时大量的待处理命令反倒可能成为性能瓶颈,因此并行SCSI硬盘通常“只能”达到64级深度。 Marty Czekalski认为,多数SAS硬盘将采用支持128级深度的设计,从而与FC-AL硬盘相当。
在单主机/单硬盘配置中,由于单主机产生不了足够的待处理请求,SCSI的队列深度得不到充分利用,只能靠 主轴转速的优势提高性能。随着作业的复杂程度不断提高,SCSI的优势才愈加明显。虽然SAS 1.0的命令排队功能与并行SCSI相比没有什么变化,但是它却具有无需经过共享总线仲裁的优点,并可以利用串行点对点连接赋予的全双工能力在突发数据传 输的同时反向接受命令,为命令排队功能提供了更为广阔的发展空间。
本页部分内容改编自希捷科技TP-342号技术论文《全速命令排队》(2003年2月)
为什么要排队?
所谓命令排队(Command Queuing),通常包括两个层次的含义:首先,硬盘(缓冲区)内部能够容纳来自主机控制器的多条命令,待处理命令的数目即队列深度;其次,硬盘控制器可以重新安排这些命令的执行顺序,从而获得最大的输出。
我们知道,硬盘是机、电、磁一体化的设备,其中动作最慢的机械部分是硬盘性能提升 的瓶颈所在。硬盘的磁道是以主轴为圆心的一个个同心圆,当磁头悬停在磁道上方拾取数据的时候,机械动作的影响降至最低点(总不能让主轴不转吧?),相应地 硬盘可以向外输出数据的流量也达到了最高的水平,即持续传输率(为简化问题起见,忽略磁道间切换的开销)。当然,由于外圈磁道长度占优,其传输率的数值也 更高。
高转速的硬盘通常在持续传输率上领先,譬如目前主流15000RPM SCSI能达到75MB/s~56MB/s(见表);7200RPM ATA由于盘片直径较大,外圈传输率也有61MB/s。这样的指标虽然比内存低两个数量级,但也还算说得过去。
然而在实际应用中持续传输很少出现,高端企业级计算更是如此。以数据库索引操作为例,对象在盘片上的分布位置并不连续,迫使磁头移动去读写一次只有几KB的小数据块,是典型的随机访问。磁头要先移动到数据所在磁道(寻道),然后再等待要读取的区块旋转过来(延迟),即使按照平均值(即平均访问时间,等于平均寻道时间与平均延迟时间之和)来计算,也要花费10ms左右的时间(以附表为例,SCSI读5.2ms,ATA读12.7ms),相比之下真正读取数据的时间几乎可以忽略不计(512字节只需几十μs)。如果是每次仅读取512字节的完全随机访问,硬盘输出数据的流量将骤降至0.1MB/s以下!
事实上,每秒(随机)I/O操作的次数,即IOPS(I/O per second),早已成为衡量企业级存储设备性能的标准,这也是最高转速总是来自于SCSI硬盘的主要原因。毫秒级对微秒级,千倍左右的差距,无疑使优化机械部件的移动次序(随机访问操作)比提高电磁器件的响应速率(单纯拾取数据)更为重要,所以一定要对命令进行排队。
典型ATA和SCSI硬盘的性能指标
寻道靠排队
命令排队主要解决的是寻道顺序,不妨以电梯为例帮助我们理解这个问题。设想一座电梯停在7层,进入的人按照 1、6、2、5层的顺序按下按钮,电梯是应当遵循这个7→1→6→2→5(走过16层、折返3次),还是将其调整为7→6→5→2→1(走过6层、减速4 次)呢?相信大家都会选择后一种方案,因为它不仅大大节省了时间,还避免了不必要的折返操作,非常有利于延长电梯的寿命。此外,我们还希望电梯在运行过程 中能够对新按下的按钮(假设为3)做出判断,决定是否重新排序:如果此时电梯在6或5层,就把3插在2的前面;但若电梯已到3层,就按原顺序走向2层—— 突然急停对乘客和电梯都会造成很大的伤害。
以上下的电梯来比喻在磁道间摇摆运动的磁头非常形象——取出队列中的命令(按下的楼层按钮),然后重新排序(见下图),缩减硬盘的机械开销,以便有 效地获取和发送主机请求的数据。当然,命令排队真正实现起来需要考虑的问题要复杂得多,譬如是否切换磁头、针对不同磁道的寻道时间、不同的运行模式(静音 寻道),涉及的参数更包括寻道长度、起始位置和方向、传动机构的加速分布、旋转定位(读写定位时间差)、读缓存命中率、写缓存的启用与禁用、处理相同LBA的I/O进程,以及算法的公正性(消灭命令“饿死”现象),甚至旋转等待时间。总之,一个好的命令排队算法可不那么简单。
等待有无序
仅仅把磁头移动到目标磁道上方是不够的,还必须把等待要访问的数据块旋转过来,这就是旋转等待时间(延迟)。最好的情况自然是起始LBA就在磁头下方,最糟糕的则是起始LBA刚好过去——意味着要损失旋转一整圈的时间(取旋转半圈的时间为平均延迟),也就是4ms(15000RPM)~8.3ms(7200RPM),简直与平均寻道时间不相上下,同样不能忽略。
提高主轴转速当然可以缩短旋转等待时间,但未必是最好的办法。无序数据传送(Out of order data delivery)不需要磁头从起始LBA开始读取,而是可以从目前LBA中的任何位置开始读取数据。也就是说,只要磁头定位在目标磁道上方,就立刻开始 读取所请求的数据块,错过的数据待盘片旋转回来后再补上即可。如果所请求的恰好是整条磁道的数据,那么就没有在旋转等待上损失任何时间(就这条磁道而言相 当于持续传输),此时无序数据传送显然比任何机械方法都更为有效;如果所请求的数据块非常小,无序数据传送的作用就大打折扣了,不像提高主轴转速那般始终 如一。从客观情况出发,无序数据传送更受在提高转速上受到诸多限制的ATA硬盘青睐。
除了提高硬盘本身的性能,命令排队功能还可以使主机在设备对命令进行排队的时候,断开与硬盘间的连接以释放总线,一旦硬盘准备就绪,就重新连接到主机,尽可能以最快的速率传输数据,从而消除占用总线的现象,改善整个系统的表现。
在模仿中超越——SATA-Ⅱ与SAS的子系统级技术
Serial ATA要用于服务器和网络存储设备,就必须支持背板、箱体服务、交错旋转预备等子系统(subsystem)级技术,这些Serial ATA Ⅱ都不能通过继承(自PATA)的手段获得,只好向老大哥SCSI学习;Serial Attached SCSI当然不用再为上述那些小儿科劳神,它的目标是满足高端服务器和存储设备的需求,因此从FC(Fibre Channel,光纤通道)“偷师”了双端口、多级交换、WWN等用于组建复杂拓扑架构的技术。与其说SATA Ⅱ追赶SCSI、SAS挑战FC,不如来欣赏两者如何实现超越自我的雄心。
SATA Ⅱ在SATA 1.0基础上进行的诸多扩展中,除本机命令队列和识别设备/设置功能外,都是专门为子系统服务的。由于类似的技术并行SCSI早已采用,所以本文只对它们 做一简单介绍,而把主要的关注点放在SATA Ⅱ与SAS对SATA 1.0简单点对点连接所做的扩充上。
SATA子系统:学习与完善
背板互连、箱体服务/管理、交错旋转预备、硬盘活动指示和热插/到位检测这五大功能在B9版都有简要的解释,以下将视具体情况做进一步的介绍。
背板互连 针对在19英寸标准机架(存储阵列)内部,最远端的硬盘与背板间的距离小于18英寸的情况。考虑到背板端接口往往不会直接与(SATA)主控芯片相连,主 控芯片PHY发送信号电压差底限从(SATA 1.0规定的)400mV提高到500mV,接收信号电压差底限从325mV降低至240mV。严格说来,背板互连属于物理层功能,其他四项才被 Serial ATA Ⅱ: Extensions to Serial ATA 1.0规范明确地划在Subsystem(子系统)一节中。
箱体服务/管理 提供对工业标准SAF-TE(SCSI Accessed Fault-Tolerant Enclosures,SCSI接口容错箱体)和SES(SCSI Enclosure Services,SCSI箱体服务)的支持以增强SATA存储子系统的功能,与背板互连一样无需硬盘做出改变。不用说,这是个向SCSI学习的成果。
交错旋转预备 听起来挺拗口,实际上就是让子系统控制器按顺序(以一定时间间隔)先后初始化硬盘、使其主轴加电旋转的方法。磁盘阵列等存储子系统中通常会有多块硬盘,如果它们一起加电启动主轴马达,所需要的瞬间电流很可能会让系统电源吃不消。
热插/到位检测 这里首先需要澄清“热插拔”这个概念。最初宣传SATA的时候,支持热插拔是其一大热点;等到第一批本机SATA硬盘上市,又有人说SATA 1.0并不支持热插拔,要SATA Ⅱ才行。真相是SATA 1.0提供了实现热插拔所需要的能力,但却没有为生成一个完整的方案加以必要的指导。SATA Ⅱ要求设备具有能够限制热插涌入电流的预先加电(precharge)功能,并支持在热插入之后使用OOB(out of band)序列信号检测硬盘是否到位,从而实现了完整的热插拔支持。
Port Multiplier:量比质优先
2003年4月29日,SATA Ⅱ工作组在WinHEC会议上公布了Serial ATA Ⅱ: Port Multiplier 1.0规范。Port Multiplier(端口增加器)的作用是把一个活动主机连接多路复用(multiplexed)至多个设备连接,相当于一个SATA的Hub。
Port Multiplier的链路层与物理层兼具SATA 1.0主机和(外围)设备的能力,连接到其上的SATA 1.0设备无需做出改变,也不用增加新的FIS类型。Port Multiplier采用4位(bit)宽度的PM端口字段,其控制端口占用一个地址,因此最多能输出15个设备连接——与并行SCSI相当。
Port Multiplier不允许级联,而且只能有一个活动的主机连接,这就限制了其上行带宽,主要用于为端口不足的系统增加可连接设备的数量。Port Multiplier 1.0规范列举了以下几种典型应用:
1.采用SATA外部接口的驱动器箱体(下图)。SATA外部线缆可以包括多路SATA链接,但它们不能合并为一个(宽)链接,每路SATA链接对应一个Port Multiplier(的上行端口)。
采用SATA外部接口的Port Multiplier示例
2.采用FC-AL、GbE、SAS等其他外部接口的驱动器箱体(下图)。箱体内部有一个将外部接口转为SATA接口的主机控制器,它的每个SATA端口连接一个Port Multiplier或其他SATA设备。
采用其他外部接口的Port Multiplier示例
3.笔记本电脑的移动坞站(docking station,见下图)。坞站中的Port Multiplier上行端口与主机相连,下行端口用来接外部硬盘、光驱或其他SATA外围设备。
用于坞站的Port Multiplier示例
Port Multiplier的上行和(所有)下行端口带宽均为150MB/s(信号速率1.5Gb/s),明显领先于任何SATA设备(包括硬盘)的实际速度, 因此在下行连接设备较少(或速度较慢,如光驱)的情况下上行接口未必会成为性能瓶颈——何况将来可以把上行端口的带宽先行提高到300MB/s(信号速率 3.0Gb/s)。但不管怎么说,现在的Port Multiplier仍只是一个功能受限(不能级联)的SATA Hub而已。
SAS:复杂奠定优势
如果把SATA的Port Multiplier比做Hub,那么将SAS的扩展器形容为交换机(Edge Expander,边沿扩展器)和路由器(Fanout Expander,扇出扩展器)就再合适不过了。
扩展器利用可多达128个的Phy(发送器和接收器各一、能够接受1个物理链接的最小单元,譬如1个4宽度 端口即由4个Phy组成)连接发起者/目标设备或其他扩展器,组成星形拓扑架构。扇出扩展器是SAS域的核心,一个SAS域只能有一个扇出扩展器,它可以 随意连接边沿扩展器(只要不超过Phy数目上限);一个边沿扩展器只能连接到一个扇出扩展器上,而在没有扇出扩展器的情况下最多仅允许两个边沿扩展器互 连;在不超过Phy数目上限的前提下,扩展器可以随意连接发起者/目标设备。也就是说,在一个SAS域中,任意两个设备(发起者或目标)之间最多可以有3 个扩展器(边沿-扇出-边沿,下图)。此外,一个具有多个端口的设备还能跨越不同的SAS域。
扩展器与设备的关系
SAS制订初期的目标是每个扩展器可连接64个设备,一个SAS域最多4096个(64×64)设备;后来 规范制订者们意识到没有必要把扩展器的端口数目限制在64个,于是便改为每个扩展器能够寻址128个Phy,整个SAS域形成一个物理连接数目可达 16k(128×128=16384)的点对点交换式拓扑架构。这种从基于路径向基于寻址的转变允许在不使用扇出扩展器的情况下获得更大规模的配置——通 过多个边沿扩展器组成“边沿扩展器集”的方法,将能够以Phy数目较少但却廉价的芯片构建起一个大型的逻辑扩展器。
SAS连接器类型对比表
扩展器强大的连接能力不仅是为设备数量服务的,它还可以用多达4个的物理链接(消耗的Phy数目也随之上 升)组成宽链接来获得成倍的带宽(见上表)。以4宽度内部串行附属连接器(下图)为例,SATA只能通过4根相互间没有逻辑联系的线缆获得4个独立的 SATA链接,SAS却可以得到一个4宽度链接(在一个扩展器上)、两个2宽度链接(在两个扩展器上)、四个1宽度链接(在四个独立的扩展器或设备上), 甚至还能够是一个3宽度链接和一个1宽度链接……性能与灵活度都远胜于SATA。
SAS 1.1和SATA Ⅱ共同增加的4宽度内部连接器
当然,扩展器引入的复杂度也不尽是优点,譬如它将原本直接相连的两个设备分隔开就隐藏着潜在的风险。假想有两个设备,支持的最高速率分别是1.5Gb/s 和3.0Gb/s,当它们直接相连的时候,会在经过协商后以1.5Gb/s的速率通信,没有什么不妥。若断开这个连接,在中间插入一个3.0Gb/s的扩 展器,情况会怎样呢?问题来了——两个设备分别与扩展器(上的相应端口)协商后以各自的最高速率连接,即3.0Gb/s对1.5Gb/s,(当各自处于接 收状态时)快的吃不饱,慢的吃不消。为此,SAS在链路层引入了速率匹配(rate matching)的概念,即在高速连接一侧(视需要)插入ALIGN,降低其实际数据速率,维持扩展器吞吐量的平衡。这一功能对SAS主机控制器 (3.0Gb/s)通过扩展器连接SATA外围设备(1.5Gb/s)的应用显得尤为重要(下图)。
速率匹配示意图
要让一个可能多达16k个Phy的域顺利地运作,必须有一个足够大的地址分配空间。通过为每个SAS端口分配一个8字节的WWN(World Wide Name,全局名)作为SAS地址,这个问题得到了解决。WWN包括24位的IEEE公司ID和36位制造商标识符,可以保证其惟一性。
在SAS环境中,SAS主机控制器使用自己和SAS硬盘的WWN来建立SSP通路,可是对于并不支持WWN 的SATA硬盘该怎么办呢?解决办法是用(与SATA硬盘直接相连的)STP目标端口的WWN来代替。STP目标端口不仅能够让多个STP发起者(主机控 制器)通过它访问同一SATA硬盘,还应具备追踪每一个STP发起者SAS地址的能力,否则访问该STP目标端口的STP发起者必须在命令完成之前保持连 接——因为SATA硬盘本身并不支持多主机,若STP发起者送出命令后即断开连接,而STP目标端口又不能追踪其地址的话,那么SATA硬盘准备好数据后 将不知道该传输给谁。虽说让STP发起者在命令执行过程中始终保持连接也不失为一种解决之道,但这无疑将导致SATA硬盘的命令排队能力得不到充分利用。
融合亦有界
毫无疑问,SAS的多级交换架构明显地优于并行SCSI、SATA和FC-AL,但另一方面,它的应用范围又被严格限定在机内(In-box)和短距离DAS。也就是说,SAS可以在机内(硬盘级)接口的较量中击败FC-AL,但在外部(子系统间)接口的层面上却只有给FC和iSCSI打下手的份儿。
在SAS面前,SATA的功能的确显得有些小儿科,可这并不妨碍它打入传统SCSI市场的低端。 Adaptec和LSI Logic这两家传统意义上的SCSI控制器供应商都相当关注SATA技术, Adaptec中国区业务发展经理吴刚先生就认为SATA将挤压Ultra160 SCSI的市场空间,迫使后者加快向Ultra320 SCSI升级的速度。此外,Adaptec还计划在一年之内推出4/8端口的SATA RoC(RAID on Chip)和8/12端口的SATA卡,进一步迫近并行SCSI。
不过,就主机控制器而言,SATA也只能在SAS无暇顾及的低端生存。为SATA主机控制器服务的Port Multiplier能力无法与SAS的扩展器相提并论固然是一个重要原因,SAS兼容SATA的单向性也不容忽视。换句话说,SAS主机控制器能够使用 SATA硬盘,SATA主机控制器却不能使用SAS硬盘,这意味着前者具有丰富的设备资源,简直是如虎添翼;而后者除了价格优势外,就仅剩下(相对)可怜 的扩展能力和平平的性能。
硬盘端的情况似乎不太一样。虽然总的趋势仍将是SAS硬盘以性能和功能领先,SATA硬盘的容量和性价比占 优,但后者可以在SAS主机控制器的帮助下进入一些以前不敢奢望的领域。事实上,高端应用环境中也未必处处都需要无与伦比的性能和极高的可用性,相对廉价 且大容量的硬盘同样会有用武之地(如盘基备份)。以前,由于并行SCSI主机控制器不兼容PATA硬盘,而PATA控制器的能力又实在不能令人满意,限制 了ATA硬盘的应用范围。现在有了SAS主机控制器对SATA硬盘的兼容,情况可望改观(下图)。
SAS与SATA在企业级市场共存示例
具有低端SCSI产品特征的SATA硬盘可能会成为一个例子。有些企业级应用并不一定在乎双端口或大容量, 但主流SATA硬盘的性能又满足不了需要,这时“采用SATA接口的中低端SCSI(或SAS)硬盘”也许倒很适合。本报2002年6月23日B10版介 绍过的WD Raptor硬盘(10000RPM,36.7GB,“ESATA”接口)算是这方面的先行者,2003年春季IDF上对比未来两年各类硬盘产品的规格 时,也专门列出了SATA-Enterprise(企业级SATA,10000RPM/100万小时MTBF),以与SATA-Desktop(桌面级 SATA,7200RPM/50万小时MTBF)相区别。
另一个机会来自于一些高端存储系统对参考数据应用的需求。所谓参考数据,是指重要但不频繁访问的归档/备份 等数据,这种应用强调每兆字节最低(购置)成本和可扩展性,性能不是最关键的因素,按说正适合ATA硬盘。然而多数高端存储系统都会对扇区添加用于数据完 整性检查的元数据,这就要求扇区尺寸大于512字节(通常会是520字节或528字节),可是PATA偏偏不支持非512字节的扇区尺寸……现在SATA 提供了对非512字节扇区尺寸的支持,配合SAS超强的扩展能力,在参考数据应用领域取得成功的把握大增。不过,SCSI/FC硬盘的扇区尺寸能够在格式 化时指定,非512字节扇区尺寸的SATA硬盘则很可能需要特别定制。
以上我们讨论了SAS与SATA在企业级应用领域可能的一些 动态,SATA在PC市场的优势不是本专题所关心的。有一点是肯定的,那就是对SAS(系统)兼容SATA(外围设备)的重大意义怎么强调都不算过分。身 为SATA始作俑者之一的Intel,从去年秋季IDF公开把SAS与SATA相提并论,到2003年春季IDF上将SAS作为串行存储接口讲座的核心, 也许就是机内存储设备接口在串行时代走向融合大势的一个缩影。
欢迎各位到《存储时代》论坛对相关问题做进一步讨论。
原文网址:http://stor-age.zdnet.com.cn/stor-age/2004/0423/400036.shtml