资源描述
SATA存储技术并行ATA的演变本章关于如何实现PATA的背景知识对于理解串行ATA启用是很重要的。SATA的设计为PATA遗留 程序接口提供了兼容及为PATA定义的命令。该章节为并行ATA的实行提供了基础水平的知 识并试图做出该技术的复习或者入门资料。下一章下章介绍了实行串行ATA的诱因。许多公认的PATA的缺点在SATA的实施中被解决。本章明 确了这些确定并且阐述了 SATA提供的解决方案。ATA过度到串行交互像很多其他10交互一样,PATA拥有一个高速串行的堂兄简称为SATA., SATA是为ATA/ATAPI6 规格的软件的兼容性所设计的。将ATA迁移至串行接口的动机包含很多方面,其中包括: 通过减少引脚的数目来降低成本; 较低的硅尺寸意味着较低的电压。提高在驱动和主机适配器之间的传输速度增强可靠性改进电缆/接口服务器环境下对针对ATA的攻击进行定位下一章将讨论由实现SATA带来的提升和新功能ATA起源ATA的起源可以追溯到在20世纪80年代中期的康柏电脑。在那个时期,康柏主要以它的手 提电脑出名。康柏的第一个手提电脑是基于IBM的PC机和之后的PC-AATo PC机上的硬盘 胆动最初与直接插入电脑扩展总线的硬盘控制卡组合使用并与安装进硬盘插槽里的硬盘驱 动联合使用。图1-1描述了该硬盘驱动控制器及硬盘驱动的联合。康柏试图制造款比原始 手提电脑(有时叫luggables)更小更轻的手提电脑,而原始手提电脑在一些情况下重达40 磅。二代手提电脑设计全局尺寸时,在某些部分通过将许多10功能整合到主板上,从而减 小对扩充卡的需求并连接扩展槽“这些集成功能包括软盘驱动接口,串行接口及并行接口。 康柏同时将硬盘控制器缩小为一个插件适配器卡并将它安装在驱动顶部。这个实现的硬盘控 制器和驱动的联合就叫做康柏集成驱动。在此过程中,将PC-AT扩展总线延长到驱动插槽是 必要的。这一项通过一个带状电缆和一个称作主机总线适配器的小的接口电路实现。Figure 7-7: Controller/Disc Drive in Early PC ImplefnentationstPC-AT Hus创建一个兼容的FIS通知链路层FIS等待交付;在传输过程中通知链路层流控制要求。图4-2也展示了故意做小以减小SATA端口成木的传输缓冲区的存在Figure 4-2: Transport layerPCIe BusApplication LayerDMA EngineDMA EngineATA/SA7A RegisterI raBsport lycrI ink luiyerPhysical LayerCommand Sequence Sute Machine一 . Command l.acrUn-Somwe1 lonl to 1 ovic*c*27H1 c*vic* to 1 lK*1 A AcwtivitoFirat Party IM A Sc?tup41111为346hBIST A.Jtivate58ti在接到FIS传输请求时,链路层创建J一个“传输就绪原语并将其发送给物理层传输给驱动 器。驱动器检测X_RDY原语,若他准备接受一个FIS,它返回一个“接收就绪”(R_RDY)原 语给HBA。注意,这些原码信号不断,直到该发送一个不同的原码为止。5FIS类型和结构上一章通过SATA接口的传输主要由传输FIS构成。一个FIS可能交付影子寄存器或者ATA寄存器的 内容、数据、控制信息等等。上一章向读者介绍了 FIS传输协议的基础信息。后续章节进一 步细化了协议并讨论了由于控制需求,错误和相关问题而产生的多种情况。该章该章主要用于参考目的。包括每个FIS相关的细节。下一章链路传输协议是主要在发送端和接收端之间的链路层上执行。该章讨论了传输层和链路在在 传说FIS时采用的各个步骤。内容多种特征可以与各个FIS相关联,包括:每个FIS包含一个8位ID值用以识别其类型;FIS的大小总是4个字节的倍数给定的FIS的方向可能是HBA到驱动,驱动到HBA或兼有之;一些FIS拥有由FIS内位字段定义的标准定义变化的交替的格式。FIS最小的尺寸为4字节;FIS最大的尺寸为8196字节;表5-1总结了所有FIS类型,包括他们的ID,大小,导向和版本。Table !-1: FIS Typrs and CharacteristiiFIS TypeIDDirectionSizeGenerationRegister FIS27hHBA to Device5DWsOn 1Register FIS34hDevice to HBA5DWsGen 1Set Device Bits with Active field with Event Notification fieldAlhDevice to 1IBA2DWsGenl Gen2 Gen 2PIO Setup5EhDevice to HBA5DWsGen 1DMA Activate39hDevice to HBA1 DWsGenlFirst Party DMA Setup with Auto Activation41hBidirectional7DWsGen 1 Gen2Data46hBidirectional2049 DWsGen 1BIST Activate58hBidirectional3DWsGen 1寄存器FIS-土机到设备一个被发送到SATA设备的寄存器FIS总是包含HBA影子寄存器的内容。两个特定事件可触 发HBA发送一个寄存器FIS:1. - 个影子命令寄存器的写入命令;一个影子控制寄存器的写入命令;图5-1描述J影子寄存器的设置并高亮显示了命令和控制寄存器。寄存器FIS内容反映了最近由主机软件写入影子寄存器的值。Figure 5-1: Shadow Register Dtfinilion on Writes (Primary Interface)Cmd RegWritesNotesAddress7001FODaulbKKceues01F1FeatureTwobitKcetfes01F2Sector GxmtTwo accesses01F3LBA Low (3124 then 70)Two Mm accesses01F4LBA Middle (39:32 then 15S)Two8-btacce01F5LBA High (47:40 then 2116)TwoS-btacceues01F6Devke.8-bit access only01F7Command1Kcess onlyCtrl Reg103F6Device ControlMM access only图5-2描述了由写入影子命令或控制寄存器产生的寄存器FIS内容和格式。注意,规格用柱 形、表头和行业术语来定义包含影子寄存器在内的字段。表5-2描述了每个字段的内容并指 定了相应的LBA地址(若适用);Iiurc 5-2: Reisler IIS - Hout to Danct+37I6I5I4I3I2I1I0+27国 5I4I3I2I1I0+17I6I5I4I3I2I1I0+07I6I5I4I3I2I1I0DW0FeaturesCommandC R R ReservedFIS Type (27h)DW1Dev/HeadCyl HighCyl LowSector NumberDW2Features (exp)Cyl High (exp)Cyl Low (exp)Sec Num (exp)DW3ControlReserved (0)Sec Count (exp)Sector CountDW4Reserved (0)Reserved (0)Reserved (0)Reserved (0)Table 5-2: Register FIS - ffos/ to Fields and OrsirationsField NameDescriptionFIS lypcITiis field contains the ID (27h) of the Register Host to Device FIS.cThebit field (DW O, offset tl) specifies which eventcatiseci the Rggi&tw FIS delivery.O 二 write to Control register1 write to Commandovicoz and thobit to bo sot.FeaturesContents of the shadow Heat uro registerfeatures (expanded)Contents of the upper 8 bits of the shadow Feature rojistcr when using 48-bit addressing.liable 5-2: Register I IS - Host lo Device fields and Descriptions寄存器FIS-主机设备Field NameDescriptionSector NumberContents of the shadow Sector number, or LBA 7:0Sector Number (expanded)Contents of tlie upper 8-bits of the expanded Sector Number value (LBA 15:8) when using 48-bit addressing.Cylinder LowContents of the least significant 8 bits of the Cylinder number register, or LBA 23:16.Cylinder law (expanded)Contents of the most significant 8 bits of thp Cylinder ntim- ber, or LBA 31:24 when using 48 bit addressing.Cylinder HighContents of the least signifioint 8 bits of the Cylinder num- ber, or LBA 3032Cylinder High (expanded)Contents of die most significant 8 bits of the Cylinder High number, or I .BA 47:40 when using 48-bit addressing.Device/HeadThis field contains two values:-Bit 4 - the Device Number used to sdpet drive 0 or drive 1 -Bits 3:0 - Head number when software uses die legacy addressing (Cylinder, Head, Sector).Sector CountIhis byte field specifies the number of contiguous sectors to be accessed from the start address on disc using bits 70Sector Count ExpandedThis byte field contains the upper bit 15:8 of the sector count when using 48-bit addressing.ControlContents of the Control register that when written causo a Register FIS to be sent to the SAIA Device and result in 0k* C bit to be cleared.ResprvpdITip respfvpd fields all contain zeros.在SATA中,软件不能直接访问驱动器内的ATA寄存器。当驱动器执行命令和在ATA寄存器 内更新状态信息时,状态信息直到影子寄存器升级之前对于主机软件是不可见的。因此对于 驱动器而言有必要去读取ATA寄存器并通过一个。将他们的内容交付给HBA。6传输和链接协议上一章上一章主要提供参考。他包含了每个FIS相关细节,包括每个FIS所有字段的定义。该章链路传输协议主要是在发送者和接受者之间的链路层上执行。该章讨论了在传输一个FIS过 程中传输层和链路层的各个步骤下一章当一个FIS通过SATA链接传输时,传输错误通常被检测到并报告回传输设备。通过检测传 输错误,传输被通知错误。保留一个错误FIS的副本之后,传输层重新传输FISo下一章讨 论在FIS重试允许的情况下的机制和条件。概览FIS交付通常是由软件启用一个特定的命令来触发的。每个命令由一个在HBA和驱动器之间 交换的FIS序列构成。在些情况下FIS起源于应用层,在其他情况下FIS决定于命令层。正 如前所述,不管FIS来源于何,用于每个FIS交付的传输协议本质上是一样的。传输层和链接层一同工作以创建和控制每个FIS的交付。传输层创建和储存每个传输缓冲区 中的FIS并通知链路层FIS交付正在待命。链路层通过交付和接受原码来管理大部分传输协 议。图6-1细化描述了与每个FIS发送和接收相关的传输层和链路层执行步骤。Figure 6-1: Transport- and Link-Layer Elements Involved in FIS Transfers以下部分的描述假定r ns传输成功进行。后续章节细化r诸如fis传输重试和流控制的协 议变化。FIS传输图6-2描述了与为传输和管理协议而准备FIS相关的主要元素。链路层管理与每个FIS相关 的活动序列。这些活动序列包括生成和接受的基本内容,连同通过链路层为交付准备每个 FISo这个过程包含几个步骤:链接传输请求/仲裁;FIS传输(传输层到链路层);制定每个FIS的开始和结束帧原码;FIS混杂;原始抑制加扰;8到10位编码;初代-FIS传输原码起源在链路层提供FIS传输期间的控制和阶段信息及诸如连接电源管理的功能。图6-3 是一个描述了原码来源的总体框架。就像所有通过串口链接的信息交付一样,原码是由8 到10位编码器编码。原码包含一个10位的控制值及紧随的3位连续的数据值。其他结构使用术语“有序集合” 来表示这类序列。在SATA中,一旦一个SATA链接通过00B信号初始化,他时常是带有原 码,偶尔也有FIS。图6-4展示了 10位的编码值和同步原码的结构。反复发送的同步原码, 反映了在SATA接口上的空闲状态,在大多数执行中是最流行的原码。表6-1列出了 FIS传输发送的原码并描述了每个原码的目的。表6-2描述了接收FIS的设备传输的原码。Figure 6-2: Major Trans/xirt- and l.ink-l/n/er Elements Associated with FIS transmissionTransport LayerLink Layer8B to 106 EncodingLink Layer State MachinePnmrtrve Suppression Scrambtec8B to 106 EncodingTo Physiol LayerTo Physiol Layernure 6-3: Primitive Generation within the Link layernure 6-3: Primitive Generation within the Link layer8、u8、uFigure 6-4: Content and format of Sync PrimitiveSYNC Primitive C*oD21.4D21.4D21.5K28.37 FIS重试前一章链接传输协议主要在发射器和接收器之间的链路层执行。上一章讨论了在传输FIS时传输层 和链路层进行的各个步骤该章当一个FIS通过SATA链接传输时,传输错误通常被发现并报告给传输设备。在检测传输错 误时,传输层被通知失败。在保留-个失败FIS之后,传输层重新传输FISo该章讨论了在 FIS允许重试时的机制和条件。下一章当执行大数据传输时,传输层中的传输和接收缓存在没有流量控制机制的情况下可以溢出或 下溢。下一章描述了流量控制机制和协议。内容在很多情况下FIS传输错误在没有软件通知的情况下可以通过简单的FIS重发被覆盖。这个 重试机制是由传输层管理并需要可以在发送后保留FIS副本的缓冲区。注意,重试可以被HBA 或驱动器执行。那些FIS可以被重试一个FIS只有在他可以全部储存在重放缓存区时才有资格重试。表7-1列出了每个FIS类型 和他的大小。数据FIS是迄今为止最大的,最大大小为2049DWS (8196字节)。注意,总大 小仅包含前部和负载,因为CRC, SOF和EOF是被链路层添加的。其他FIS类型的大小均小 于7DWS (28字节)。出于成本考虑,传输层的传输缓存不需要存储整个数据FIS,从而从重 试协议中消除了数据FISo这允许一个28字节的传输缓存来支持除通常用于测试和诊断操作 的BIST类型外所有其他FIS类型的FIS重试。没有缓存足以储存最大大小的数据FIS,故不支持重试。数据FIS传输导致了主机总线适配 器内部状态的改变,无论通过DMA控制器改变其状态还是通过改变其余PIO重复计数,FIS 的数据传输都不能重试。Table 7-1: FIS Type, Size and Retry EligibilityFIS TypeSizeRetry?Data2049 DWsNoFirst Party DMA Setup7DWsYesRegister FIS5 DWsYesPIO Setup5 DWsYesBIST Activate3 DWsNoSet Device Bits2 DWsYesDMA Activate1 DWsYes重试协议概述重试协议是否执行是由一个接收设备返回的R.ERR握手原码来出发的。图7-1描述了无论是 HBA还是驱动接收一个R_ERR原码表明FIS是随同一下错误条件的类型被接收。在此例中FIS 的内容保留在传输层的传输缓存中因此可以重试。规则不限制可尝试的重试次数。若FIS重 新传输重复失败,主机软件将最终超时,这通常导致链接接口被重置。Figure 7-1: FIS Retry on Transmission ErrorFIS transmitting node detects R ERRPnmew Supprewon ScrambAm1ter UXCOKTaKTransport LyrLink LayerFIS Un-SaamWerPnmtrvw Suppcewon CONT DetectTo Physical 5fr88 to 10B EncodgTo Physical 5fr88 to 10B Encodg8B to 106 DecodngDisparty CheckFrom Physiol Layer什么错误导致了重试常识?SATA硬件可以很容易的设计为自动重发一个通过链路层传输失败或有其他问题的FIS。通常, 自然产生的瞬态错误是有资格并可以通过重试协议来I口I复的。例如,错误可能是由于例如噪 声或由于电源噪声等的传输问题。这样的错误通常在链路层中被检测到通过传输层来解决。 其他FIS错误可能由传输层自己检测到。无论是HBA还是驱动传输一个框架,传输错误都是 通过接收借点被检测出来并旦通常经由R_ERR原码回报到传输节点上。在任何情况下,这 些链接传输错误是在HBA中的SATA错误寄存器中报告的。图7-2描述了传输层和链路层及 FIS错误检测与报告功能。使用了多个错误检测机制及两个错误回报机制:1. R_ERR交付回传输借点(HBA及驱动器);通知上层在SATA错误寄存器中设置合适的位(当HBA从驱动器中接收R_ERR原码或在 接收帧时HBA检测到一个错误)在大多数帧传输错误的情况卜,一个R.ERR原码被发送以回报错误。但是,一些错误种类 不循序重试。各种情况将在接下来的章节中讨论。6B to 10B EncodingPrimltfvrtCO COM 姓Primitive Suppression SaamWerFigure 7-2: FIS Receiver Error Detection and ReportingReported toUpper LayersrType I FlS-speoflc InfoR ERRLoakalTo Physical LayernsBut!钉FIS ErrorDetection/ReportingTransport Layer4忡Link LayerCRC CheckFIS Un-ScramblerLink Layer State Machine88 to 10B Decoding Disparity CheckDtcod* PrimitivePrwnrtive Suppression CONT DetectTFrom Physical Layer传输错误一一出自链路层检测链路层检测两种类型的错误,这两种通常是由于链接传输错误:CRC错误不一致错误 这些错误将回报给传输层,其需要返同一个R.ERR原码到FIS传输节点。此外HBA传输层在 SATA错误寄存器中会引发适当的位来升级如图7-2所示。8数据流控制前一章前一章讨论了在FIs重试允许的情况下的机制和条件。当FIS通过SATA链路层传输时,传输 错误通常被识别并回报给传输设备。在传输错误的识别中,传输层会被通知错误。在保留错 误FIS的副本之后,传输层将重新传输FIs。该章当执行大数据传输时,传输层中的发送和接收缓存在没有流量控制机制的情况下可以溢出或 下溢。该章细化描述了两种情况下的流控制管理的机制定义。第一种情况是当借点传输一个 数据时FIS缺乏数据传输。第二种情况发生在当接收节点无法像填充节点那么快的清空他的 的缓存时。缓冲区满溢的状况触发来自接收端的流控制机制。下一章该书的这一部分聚焦于FIS协议,相应的这部分物理层的讨论聚焦于FIS传输和接收端相关 的功能。该书第5部分细化了物理层在重置,初始化,热插拔和电气细节中扮演的角色。 概览执行SATA主要的设计目标之一是保持驱动设计的低成本。为此,SATA接口中的缓存使用被 故意保持在低水平内。就像前一章所讨论的那样,SATA传输层内的发送和接收缓存的大小仅够支持传输最大的非数据FIS (28字节)的事件重试,这远比最大数据FIS的大小(8196 字节)要小。因此,流控制仅被数据FIS需要。图8-1描述了运输层传输和接收缓存,随着 基本链路层元素参与流控制。图8-1A描述了可在传输缓冲中发生的接近空状况条件下的缓 冲。8-1B描述了在接近满状态下的接收缓冲。l i(ure 8 1: Esseiuiai Iiow Control VkmenlsBuffer Near。F/在传输层缓冲之下的附加缓冲位于链路层。这些缓冲通常只有1DW或2DWS,用于处理链 接特定下的延迟例如在FIS中插入原语。SATA流控制机制制止了传输层缓冲满溢和下溢。该机制使用两个基本体来支持协议:HOLD表示需要暂停FIS支付;HOLDA持有FIS暂停的承认核实。流控制可以通过FIS发送机或接收器来实现。这两种情况在下一章会讨论。发射机的流控制当一个节点传输一个数据FIS,数据会以一个比从传输层交付到链接另一侧的节点更慢的速 度来提供给传输层。这种状况会产生-个潜在的缓冲区。例如,在DMA写命令操作个或 多个数据时,FIS用于将数据从HBA交付到驱动器。数据必须由HBA的DMA引擎从内存中 取出,这可能需要将数据从内从中的多个4KB页聚合起来。当DMA引擎将最初的4KB数据Figure 1-2: PC-AT Host Bus Interface (on motherboard) and Integrated Controller and DrivePC-ATBusInterfacePC-ATBusInterfacentegrated on thesystem board5.25 inchDisc Drive& Controller康柏集成驱动的下一代是完全整合的,此时控制器被包含在Imprimis公司制作的雷恩硬盘 驱动箱中。IDE (集成光盘电子)驱动的出现其他硬盘驱动厂商开始制造类似于康柏专有解决方案的整合驱动。这些磁盘驱动器被称为IDE驱动器。这些缩写的意义其实并不明确。一些可能性包括:集成光盘电子;集成设备电路;集成驱动原件;智能驱动器电子;“我个人最喜欢的是集成光盘电子,但IDE最初代表的意义可能归于:Who cares?双驱动器支持IDE驱动器的另一个特征是通过一个单独的主机适配器接口和公用带状电缆来附加和解决双 设备的能力。请注意每个驱动器上的跳跃或开关必须被设定指定哪些驱动将响应为驱动器 0,及哪些将响应为驱动器loFigure 1-3: Tux) Drives Can Share the Same IDE Interface35 inchIDE DriveDrive 03.5 inchIDE DriveDrive 1PC-ATBusInterface一个与ID相关的早期问题是没有标准来实施这些驱动器。因此有一系列的兼容性问题。或 许最通用的发生在当两个来自不同制造厂商的驱动器被连接到同一个IDE电缆。ATA标准最终一个在通用访问方法组内的工作组定义了一种在IBM PC-AT总线和IDE驱动器之间互相 通用的标准接口规范。该规范最终被称为ATAttachment或ATA。第套ATA规范最终出版为 ANSI X3.221-1994.如今依然存在称为T13的定义ATA方向的ATA工作委员会。块交付时HBA会开始数据FIS的传输,有效载荷为8KB,在获取内存时的延退会在DMA引 擎试图取出下一页时产生。这可能导致产生一个缓冲内的暗数据流,前提是不存在流控制机 制。流控制协议(发送器发起)该例子讨论了用于回避传输缓存暗流的协议。该例同时假定了发送节点使用了原码抑制加扰。 空白状况导致HOLD图8-2A描述了传输层传输缓存到达一个接近干涸的情况。数据FIS传输通常开始于接收节 点检测FIS并返回在progress (R_IP)原码上接收的值。当传输节点到达一个接近干涸的缓 冲状况时,一个HOLD原码将会发送以通知接收器数据暂时停止。HOLD原码连续交付直到 恢复数据传输时为止。虽然没有显示在图8-2A中,该例子假定了 HOLD原码被交付两次, 后面跟随一个continue (CONT)原码来避免原码重复交付到EMI接收器承认HOLD接收器连续接收数据直到它探测到HOLD原码。接收器通过返回一个HOLD确认(HOLDA) 原码给发送节点来响应HOLD,如图8-2所示。同时主导通过链接发送的跟随HOLD的信息 显示出XXXX,代表与原码抑制加扰相关的伪随机数据。当接收器交付连续的HOLDA原码时, 接收器也可以执行原码抑制。Figure 8-2: Data FIS Transmission Temporarily on Hold and AcknowledgedSOF9物理层功能前章当执行大吊:数据传输时,传输层内的发送器和接收器缓存在没有流控制机制的情况下可以溢出或下溢。上一章详细讲述了为管理流控制制定的机制和协议。该章该书的本部分聚焦于FIS协议上,相应的物理层的讨论聚焦于FIS发送和接收相关的功能上。第5部分细化描述了物理层在重置,初始化,热插拔和电气细节中所扮演的角色。下章到目前位为止的讨论都集中在FIS传输协议上并且大部分情况都假设传输不发生错误。下一 章讨论了错误检测机制,描述了这些错误的来源并指定了用于处理和报告这些错误的方法。 介绍在FIS发送和接收期间与物理层相关的功能列在了图9-L并包含卜.列活动。FIS传输装置并行到串行转换1.5Gb/she 3.0Gb/s下不同的传输装置联合原码插入时钟补偿可选的扩展时钟频谱不同的接收器数据取出串行到并行转换对齐原码解码弹性缓冲Figure 9-2: Functiotul Block Diagram Physical LayerData In不同的发送器/接收器图9-2提供了一个发射器,接收器和链路特征的示意图。注意,在很多驱动上使用可选的交 流耦合电容以允许在驱动器和HBA上使用不同的共模典雅。连接的查分阻抗名义上是100欧姆,终端提供阻抗匹配以减少反射。Figure 9-2: Link Electrical interfaceSATA may or may not have Caps on either end of the cable Typical dre impenen(abon$ frequent include the capacitorsThe DC common mode impedance s typcaiy 50 ohms diffe(exal impedance ts 100 ohms The couping capacitor is between 10 and 12 nF.发送端特征Genl驱动器和主机的传输电压峰-峰值指定为400-600mV,Gen2驱动器和主机为400-700mVo 然而,传输电压需要依赖信号环境,特别是:内部链接(i) 一一内部或黑箱的连接中等长度(m)长电缆及短底板的环境外部链接(x)非常长的外部电缆和长底板应用程序M和X应用程序的最小和最大的传输电压随着逐增的信号衰减而改变。图9-1列出了详细的 m和x电压。这些电压规格受主机端的需求,也可能需要主机和驱动之间的额外的接口电路, 但对于驱动器本身而言不需要改变。另外,不同的驱动器可能需要不同的信号程序。类似的, 接收机灵敏度被修改用以解释信号应用程序。Table 9-1: Minimum/Maximum Transmit VoltagesApplicationGenlCen2Internal 400 - 600mV400-700mVMedium (m)500-600mV500-700mVExternal (x)800-1600mV800-1600mV接收机规格表9-2指定的差动接收机拥有一个基于先前描述的不同信号应用程序的输入灵敏度。Thble 9-2: Minimum/Maximum Receive Voltages时钟管理ApplicationGenlGenlInternal (i)325 - 600mV275 - 750mVMedium (m)240 - 600mV240 - 750mVExternal (x)275 - 1600mV275 -1600mV物理层负责各种时钟相关的功能本地时钟的生成;本地时钟划分和分配;为数据提取接收时钟恢复; 时钟补偿管理:扩展频谱时钟(SSC) 可选的 本地时钟频率主机和目标上的本地时钟在物理层上生成。该时钟被当成传输数据和记录从弹性缓冲区中接 收数据的参考时钟。该例中,上层和物理层间的并行数据路径为40位宽,从而将时钟频率 降低了 40倍。前章该书的本部分聚焦于FIS协议上,相应的物理层的讨论聚焦于FIS发送和接收相关的功能上。 第5部分细化描述了物理层在重置,初始化,热插拔和电气细节中所扮演的角色。本章到目前位为止的讨论都集中在FIS传输协议上并且大部分情况都假设传输不发生错误。本章 讨论了错误检测机制,描述了这些错误的来源并指定了用于处理和报告这些错误的方法。 下章下章之前的大部分讨论都集中在单独的FIS的交付上。下一章,讨论转向各个类别的命令, 每一个都要求交换特定的FIS序列。管理这些序列是命令层的职责。SATA错误检查的范围SATA环境支持ATA错误检查以及特殊SATA错误检查。该能力可以被分成以下类别:命令无法正常完成一一在ATA完成状态和错误寄存器中报告;FIs传输协议错误一一在特殊SATA错误寄存器中报告;SATA链接传输错误一一在特殊SATA错误寄存器中报告;HBA错误一一在特殊SATA错误等级及/或在10特定总线寄存器中报告;图10-1列出了系统软件访问以检测错误时的状态位置和错误寄存器。特殊的寄存器包含错 误相关的信息包括ATA状态和位于影子寄存器I:的错误寄存器,连同S状态和S错误寄存器。 注意,在AHCI运行时,ATA寄存器的内容位于主内存中而不是HBAoFigure 10-1: Location of Shadow (ATA) and SATA-Specific Register BlocksFigure 10-1: Location of Shadow (ATA) and SATA-Specific Register Blocks错误报告HBA与SATA驱动SATA驱动的错误报告能力与HBA是非常不同的。所有的状态和错误寄存器都在HBA中,给 予软件支持以检测己经发生的错误和在某些情况下确定错误的类型及其严重程度。驱动器也 可以检测错误但必须将错误通知HBA来报告给软件。两个主要机制可用于使驱动器能将错 误传输给主机:1. 驱动器在命令执行期间升级ATA状态和错误寄存器并将结果经由寄存器FIS运送到HBA- 设备到主机驱动器经由FIS传输协议握手(R_ERR)报告FIS传输错误。在这种情况下,HBA无法看 见错误的性质。很多SATA错误只能在HBA的S状态和S错误寄存器中响应。这些相同的错误在驱动中是可 检测的但没有可用的机制像HBA 一样报告这些错误的确切性质。错误报告和处理机制在状态和错误寄存器可升级且错误处理方法确认时,SATA错误通常被检测并上传到上层。 图10-2描述有层次的错误检测和规则定义的处理方法。在左侧的图中通过两层间的信息 类型是高亮的,右侧列出了在每一层检查的错误类型。Figure 10-2: SX7X Hrmr Detection and Rtrjiorliti Me 在每一层采用的操作部分依据于错误的类型和严重性。规则标识出四种可使用的行为或相应: Freeze表明由于严重的不可恢复的错误状况而没有采取行动。在此情况下,软件将超时, 因为执行的命令无法完成。通常需要重置命令来清除错误。Types of Error Detectedat EacH Layer and Forwardod(Application LaiyerDats & StarveCommand LayerC ommanyorJPvifvwtiw* A FIS*(Link Layer&noaScl DataRNystical LayerJDffercnt8100 LayerATARegistersCommand LayerT5 5 卜Transport layer jLnk LyerLnk LyerLink LayerPhysical LayvrPhy9 Layer。PhEdIA Connecin命令类型12个不同类别的命令由规格定义。命令是按照类别分类因为在给定的类别内所有的命令通 常都有允许他们使用相同的命令协议的行为。艮P,FIS序列交换和在行动过程中采取的行为 和完成的命令是相同的。表11-1列出了 12个命令类别并确认了每个支持的命令编号。Table 11-1: Command Protocol TypesCommand CategoryNumber of CommandsCommand Not ImplementedNANon-Data34PIO Data-In13PIO Data-Out14DMA-In2DMA-Out2DMA-In Queued2DMA-Out Queued2Packet (ATAPI)1Service1Device Reset1Execute Device Diagnostics1命令交付每个命令序列开始于用于交付命令给驱动器的寄存器FISo 一旦命令被接收和识别,命令协 议便在驱动器中被确认。包含在该过程中的步骤在下面详述。命令传输到光盘驱动器图11-2中的状态图显示了设备FIS的寄存器主机到驱动之间的交付。最初主机传输层是闲置 的,因为他没有从应用层收到FIS传输请求。当命令值写入影子寄存器时,HBA转换到“Host Command FIS”状态,出发FIS交付到驱动器中,在传递期间跟随着FIS传输协议,FIS通常 被接受且不带错误,R_OK被返回到HBA.注意由HBA检测到的违反传输协议的行为可胁迫链 接返回到空闲状态如图11-2所示,一旦FIS被接收,驱动器执行各种检查来验证FIS有效。 错误通过R_ERR来报告,同时FIS重试。Figure 11-2: State Diagram for Register FIS delivery to the Disc Drive命令接收图11-3中显示的状态图描述了由硬盘驱动接收寄存器FIS相关所需的行动。当传入FIS被链 路层检测到时他会被传到传输层。被传输层接收的首字节是FIS类型字段,它将被检查并被 决定为一个寄存器FIS并将驱动过渡到“DevRegFIS”状态。当驱动器在此状态时有两种 转换是可行的:如果在接收期间一个违法传输错误发生了,设备发送SYNC原码给HBA,从而将他的传输转 变为逻辑闲置。一旦FIS被完全接收旦没有非法转换,驱动器转换到“设备转换状态”状态在Dev_TransStatus状态,已接收并检查错误的传输层返回R_OK或者R_ERR。假定状态是 0K并且他的类型是寄存器FIS,传输层知道FIS的内容必须通过应用层,在那里ATA寄存器 随同新命令和相关参数被装载。12控制协议上一章本书之前的部分集中于各个帧信息结构的交付。上一章讨论了命令的的各个类别,每个类别 需要特别的FIS序列的交换。管理这个序列是命令层的职责。本章本章讨论了与设备控制寄存器相关的功能。写入设备控制寄存器强迫HBA发送一个寄存器 FIS给设备。写入特别位迫使驱动器采取特殊行为。每个控制寄存器功能都被详细讨论。 下章卜章介绍了 SATAII规格添加的主要功能。写控制协议当软件写入影子控制寄存器时,控制寄存器的内容被复制到寄存器FIs的控制字段并且FIS 的C位被清理。上个写入命令块寄存器的内容同样被复制到FIS并且寄存器FIS被交付到驱 动器。图12-1描述,与写入影子控制寄存器相关的HBA协议。控制寄存器写操作之前,HBA 传输层在逻辑空闲状态。当影子控制寄存器由主机软件写入时,HBA转换到主机控制FIS状 态。在这个状态时寄存器FIS被交付到设备。有3种情况可能会发生:1. 如果寄存器FIS转换时没有错误,HBA转换到Host_TransStatus状态,此时HBA等待驱 动器报告转换结果。2. 如果在FIS转换期间检测到非法转换,HBA终止FIS转换并返回到逻辑闲置。3. 如果HBA从驱动器检测到接收FIS,它必须也返回限制并回应到传入FIS.一旦FIS传输完成,HBA转换到Host_TransStatus状态,此状态下他等待从驱动器来的传输 结果。在活动中一个传输错误被检测到,HBA将通过一个R.ERR原码被通知,同时寄存器 FIS将重试。在成功接受寄存器FIS的情况下,驱动器升级其控制寄存器到新的控制寄存器 值。Figure 12-1: Host Control Protocol设备控制寄存器功能控制寄存器支持多个功能定义如下所示。图12-2描述了控制寄存器位字段标识。nIEN (中断允许,负逻辑)当nIEN为clear (0),在设备中可通过形成中断请求,此时设置 位无法形成中断SRST (软重置)一一软件设置其位来重置驱动器。当SRST位设为1时重置成立,设为。时 重置清除。HOB(高阶字节)些寄存器地址支持背靠背字节尺寸的写入相同地址位置来装载额外值以支持诸如48位逻辑块地址的功能。设置HOB位允许软件从选择8位寄存器读取上个写 入位。Figure 12-2: Control Register Contents765432| HOB Resv Resv Resv | Resv SRST nIEN 0中断允许控制协议nlEN位用来提供遗留软件支持。重置之后nlEN位被清除,这导致了中断被许可。软件可以 通过设置nIEN位而不被中断。当软件设置或清楚nlEN位时,寄存器FIS被交付到SATA驱动 器中,从而在驱动器控制寄存器内设置或清楚nlEN位。注意,任何写入影子控制寄存器都 会清除HBA内的中断挂起状态。同时,不像PATA环境,nlEN位对SATA胆动器的行为没有 影响。在SATA环境中HBA实际上信号中
展开阅读全文