一种原语处理方法、装置和系统的制作方法

文档序号:6480101阅读:261来源:国知局

专利名称::一种原语处理方法、装置和系统的制作方法
技术领域
:本发明涉及串行硬盘接口技术,尤其涉及串行硬盘接口技术中的原语处理方法、装置和系统。
背景技术
:串行硬盘接口(SerialAdvancedTechnologyAttachment,SATA)技术,是以Intel为代表的存储设备开发商开发的一种高速串行总线技术,目的在于把基于ATA的存储技术更普遍地应用于桌面、移动存储设备、低端服务器和网络存储领域。2004年SATA的国际组织SATA-IO成立后,SATA技术标准与应用都得到了迅猛的发展。SATA技术釆用了层次化的描述方法,从下到上分别为物理层(PhysicalLayer,PHY)、链路层(LinkLayer)、传输层(TransportLayer)和应用层(ApplicationLayer)。利用SATA技术,在SATA主控制器和存储设备之间进行数据通信。如图1所示,是SATA控制器和SATAPHY之间接口的简单示意图。从图1中可看出,对端来的数据通过差分输入链路输入到SATAPHY,由SATAPHY进行串并变换,输出并行数据RXDATA到SATA链路(SATA一LINK)模块,进行相关处理后,再将数据或者握手信息通过TXDATA数据送到SATAPHY,由SATAPHY进行并串变换,再通过差分输出链路到对端,从而完成数据的交互和各种握手。在按照SATA协议,进行帧信息结构(FrameInformationStructure,FIS)数据传输的过程中,主控制器(Host)和存储设备(Device)之间存在频率差异,尤其在进行长连续数据传输的时候,这种频率会导致数据的丢失。为了解决这个问题,如图2所示,SATA协i义关见定每进行254个双字(DWord)数据的传输后,插入一组由两个连续的数据对齐ALIGNp或者多组两个连续的ALIGNp原语(即偶数个ALIGNp原语),以消除频差。接收方根据接收到的FIS数据,计算出其中的循环冗余码校验码(CRC),然后将计算的结果和该FIS中携带的期望CRC进行比较,以保证FIS数据传输的完整性。发送方和接收方进行数据传输的过程中,利用原语进行信息交互以控制数据的传输,例如,发送方准备发送数据时,向接收方发送X—RDYp原语;接收方若暂时无法接收数据,会连续向发送方发送HOLDp原语。由于长时间重复发送同一个数据,会导致某个频率点的干扰,增加电磁干扰(EMI)的影响。为了解决这个问题,SATA协议规定发送方可以在发送原语的时候,只要连续发送同一个原语两次,就可以发送一个数据重复CONTp原语,而在CONTp之后发送随机的数据(这些数据对接收方来说都是无效的),避免了长时间发送同一个原语导致串行总线上的EMI干扰问题。然而,现有技术中也存在不少问题。例如,为了确定出期望的CRC,接收方需要借助FIS中的帧结束标志EOFp,如图3A所示,正常的帧结构中EOFp的前一个DWord为CRC,然而由于ALIGNp原语插入的随机性,如图3B所示,ALIGNp原语会刚好插入在CRC和EOFp之间。现有技术为了确定出期望CRC,通常会利用额外的寄存器将数据进行延时,直到出现EOFp,再根据该EOFp确定出期望CRC。然而,由于插入的ALIGNp原语数量是不确定的,需要延时的周期数也是不确定的,导致获取错误的期望CRC,且消耗了存储空间。进一步的,现有技术对连续发送的不同原语,都采用CONTp替代,不同的原语有不同的含义,而作为替代的CONTp无法表示这种不同的含义,导致原语信息丟失,数据传输无法正常进行。
发明内容为了解决现有技术中存在的问题,本发明的实施例提供了一种原语处理方法、装置和系统,用于在无需大量额外寄存器的情况下,稳定且有效地获取期望CRC,保障数据校验的正确性。为达到上述目的,本发明的实施例采用如下技术方案一种原语处理方法,该方法包括数据接收方判断当前接收到的数据是否为数据对齐ALIGNp原语,若是,丟弃该ALIGNp原语,若否,存储该数据;数据接收方读取当前已存储的数据,确定期望循环冗余码校验码CRC。一种原语处理装置,该装置包括判断处理单元,用于判断当前接收到的数据是否为数据对齐ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;读取确定单元,用于读取所述判断处理单元当前已存储的数据,确定期望循环冗余码校验码CRC。一种原语处理系统,该系统包括数据发送方和数据接收方,所述数据接收方,用于判断当前接收到的来自所述数据发送方的数据是否为数据对齐ALIGNp原语,若是,丟弃该ALIGNp原语,若否,存储该数据;读取当前已存储的数据,确定期望循环冗余码校验码CRC。本发明实施例提供的技术方案,通过剔除数据中随机插入的ALIGNp原语,利用不含ALIGNp原语的数据确定期望CRC,解决了现有技术中因随机插入ALIGNp原语,在确定期望CRC时带来的问题,能够在无需大量额外寄存器的情况下,稳定且有效地获取期望CRC,以保障数据校验的正确性。图1为SATA主控制器和SATA物理层之间接口的简单示意图;图2为SATA协议中插入ALIGNp原语时帧信息结构示意图;图3A为正常帧结构示意图3B为随机插入ALIGNp原语时的一种帧结构示意图;图4为数据发送方和数据接收方之间的数据传输示意图;图5为本发明实施例一提供的原语处理方法流程示意图一;图6为本发明实施例一提供的原语处理方法流程示意图二;图7为本发明实施例一提供的帧数据传输的应用场景示意图;图8为本发明实施例二提供的原语处理装置结构示意图;图9为本发明实施例三提供的原语处理系统示意图。具体实施方式为了更清楚地说明本发明实施例的技术方案,下面将结合附图对本发明的实施例进行详细的介绍,下面的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些实施例获得本发明的其他的实施方式。为了便于理解本发明实施例的技术方案,如图4所示,首先以一帧数据的传输为例,对本发明实施例中提供的数据发送方和数据接收方之间的数据传输过程进行介绍,主要包括如下步骤步骤A:发送方准备好发送FIS数据,向接收方发送X一RDYp,在发送两次以后,采用CONTp来替代,后面带无效数据。X一RDYp和CONTp都为原语,下述表1对常用的原语进行了描述表1<table>tableseeoriginaldocumentpage7</column></row><table>步骤B:接收方表明自己准备好,向发送方发送I^RDYp,在发送两次以后,采用CONTp来替代,后面带无效数据;图4中的XXXX表示发送方或接收方当前未发送数据。步骤C:发送方收到R—RDYp以后,向接收方发出帧头SOFp、以及帧数据DATA,接收方向发送方发送R一IPp,表明接收正在进行;步骤D:发送方暂时无法进行数据发送,同时帧没有结束,就向接收方发出H0LDp,在发送两次以后,釆用CONTp来替代,后面带无效数据,表明希望开始流控;步骤E:接收方收到流控请求,发送HOLDAp来确认应答,在发送两次以后,采用CONTp来替代,后面带无效数据,表明应答发送方的流控请求;当发送方能重新开始数据传输的时候,首先发送一个非ALIGNp原语(如,HOLDp)来唤醒先前的CONTp,然后把余下的数据发送完成;步骤F:发送方发送CRC和帧结束标志EOFp;随后发出WTRMp,表明发送完成,在发送两次WTRMp以后,釆用CONTp来替代,后面带无效数据,等待接收方对该帧的接收确认;接收方确认帧无误后发送R一OKp表明本次帧传输正常;步骤G:发送方收到R—OKp以后,发送SYNCp来和接收方进行同步,进入总线空闲,直到接收方回应SYNCp。本发明实施例一提供的原语处理方法,如图5所示,该方法包括步骤51:数据接收方判断当前接收到的数据是否为ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;数据接收方可事先存储匹配项,该匹配项包含了ALIGNp原语的专有信息,例如,可以是ALIGNp原语的代码,当接收到数据后,数据接收方比较接收到的数据与该匹配项是否相同,若相同,说明接收到的数据为ALIGNp原语,贝'J丢弃该ALIGNp原语;若不同,说明接收到的数据不是ALIGNp原语,是进行CRC校验时必需的数据,存储该数据。但不限于此,包括任何相似或相关判断数据为ALIGNp原语的方法。在SATA系统中,数据接收方每收到一个DWord数据,判读该DWord数据是否为ALIGNp原语,例如,当接收到DWord数据为帧数据DATA时,数据接收方判断出该帧数据DATA不是ALIGNp原语,存储该帧数据DATA。步骤52:数据接收方读取当前已存储的数据,确定期望循环冗余码校验码CRC。由于已存储的数据中,已经剔除了随机插入的ALIGNp原语,确保了帧结束标志EOFp之前的数据一定是CRC,从而能够根据EOFp准确确定期望CRC。由于数据接收方对接收到的数据的存储和读取是同时且连续进行的,进一步的,为了保证能够正常读取数据,在读取数据之前,如图6所示,还包括步骤53:数据接收方确定已存储的数据不小于两个DWord或者数据接收方确定已存储的数据为一个DWord且为帧结束标志EOFp时,执行数据读取。即只有满足了该项条件数据接收方才有效读使能信号,进行数据读取。由于在SATA系统中,数据接收方对存储的每个DWord数据,按照数据读取周期依次顺序读取,为了保证数据读取的正常进行,当存储的数据只剩一个时不进行数据读取,但若存储的数据只剩一个却为EOFp时,即表示一个FIS数据传输完毕,读取该EOFp。为了能够确定出存储的数据为EOFp,数据接收方需要设置帧尾标识,以指示存储的数据为EOFp,即当存储的数据只剩一个,且根据该帧尾标识判断出该数据为EOFp,读取EOFp。由于在步骤51中当接收到ALIGNp原语时,丢弃了该ALIGNp原语,按照SATA协议,丢弃ALIGNp对LINK是没有影响的,接收通道及LINK状态机都可保持在当前状态,不进行任何其他操作。但丟弃该ALIGNp原语,会导致接收通道出现一个工作周期(cycle)的空闲,即这段时间中没有进行数据存储,由于数据的存储和读取都是连续进行的,从而数据接收方无法读取数据。进一步的,当数据接收方判断当前接收到的数据为ALIGNp原语,丢弃该ALIGNp原语时,还包括步骤54:数据接收方暂停数据读取,延时一个数据读取周期后,重新执行数据读取。若数据接收方当前接收到了ALIGNp原语,并进行了剔除,数据接收方无效读使能信号,即暂停数据读取,等到下一个数据读取周期到来时,再进行数据读取。进一步的,当数据接收方确定期望循环冗余码校验码CRC,数据接收方将所述期望CRC与根据已存储的数据计算出的CRC进行比较,对接收到的数据进行校验。由于在SATA系统中数据发送方和数据接收方进行数据传输时,会使用多种标志原语以控制数据的传输,CONTp跟在不同的原语后面就有不同的含义,如上述表1中的HOLDp、R—Okp、R—ERRp、R—RDYp、SYNCp、WTRMp、X—RDYp等原语,在进行状态处理的时候需要明确CONTp代表的不同含义,进一步的,本发明实施例一还包括数据接收方或数据发送方根据接收到的原语,调整相应的原语标识位的状态,以指示数据传输状态;其中,数据接收方或数据发送方分别设置有原语标识位。可为每一个需要进行状态标识的原语都设置原语标识位,下面以任一原语,即第一原语为例,说明本发明实施例一提供的调整原语标识位的具体方法数据接收方或数据发送方接收到第一原语时,将第一原语的原语标识位调整为有效;或者,数据接收方或数据发送方接收到第二原语时,将第一原语的原语标识位调整为无效,其中,所述第一原语为数据接收方或数据发送方上次所接收到的原语,所述第二原语为与所述第一原语不同的原语,且所述第二原语不包括CONTp原语和ALIGNp原语;或者,数据接收方或数据发送方接收到CONTp时,保持所述原语标识位当前的状态。数据接收方或数据发送方可以根据接收到的原语的情况具体选择上述的一个或多个调整方式,其中,可通过将原语标识位置为高电平(如,置l)的方式有效原语标识位,可通过将原语标识位置为低电平(如,置0)的方式无效原语标识位0上述调整方法的具体实现方式有多种,以调整数据接收方为HOLDp设置的原语标识位(hold—rx一flag)为例,说明本发明实施例一提供的具体处理方式。首先,对相关的控制信号进行说明,如表2所示。表2<table>tableseeoriginaldocumentpage11</column></row><table>根据表2中的控制信号可获知接收到原语和数据的类型,例如,当数据接收方的读使能信号link_df—fifo_rinc_ffl有效,并且此时读到的数据的低4位为4,b0001的时候,表明收到原语;当link_df_fifo_rinc_ffl有效,并且读取到的数据是CONTp原语(32,h999^aa7c)的时候,表明收到了CONTp原语;当data_scr_dis有效但pri—rx—en无效,表明此时收到的都是CONTp之后带的无效数据。下面对通过一个具体的场景,以调整HOLDp原语的原语标识位为例进行具体描述。数据发送方请求流控,首先向数据接收方连续发送两个HOLDp原语、CONTp原语,随后发送无效数据,当数据接收方接收到第一个HOLDp原语后,将HOLDp原语的原语标识位调整为有效;当数据接收方接收到第二个HOLDp原语后,保持HOLDp原语的原语标识位有效;当数据接收方接收到CONTp原语后,保持HOLDp原语的原语标识位有效;其中,当考虑到频差,在发送的帧数据中随机插入ALIGNp原语,数据接收方接收到ALIGNp原语,剔除ALIGNp原语后,将数据接收方的读使能信号link—df—fifo_rinc_ffl无效,暂停数据读取,这时,数据接收方保持HOLDp原语的原语标识位有效。只有当收到一个与HOLDp不同的原语,且该原语不为ALIGNp或CONTp原语时,即表明先前CONTp所重复的原语HOLDp已经净皮取消,开始的是新的有效数据时,将HOLDp原语的原语标识位调整为无效。下面以一个具体的应用场景说明本发明实施例一提供的通过原语标识位,解决CONTp原语多样性的方法,如图7所示。步骤A:发送方准备发送数据,首先向接收方发出X_RDYp,请求链路建立;步骤B:接收方收到X-RDYp以后,如果此时能够进行数据接收,就发出R_RDYp,告诉接收方可以开始数据传输;步骤C:发送方收到I^RDYp以后,开始发送帧头SOFp以及帧数据;步骤D:在发送过程中,发送方出现暂时无法获取数据的情况,发送HOLDp来向接收方请求开始流控;步骤E:凑巧的是,此时接收方也刚好不能进行数据接收,也就是说在发送方发送HOLDp的时候,接收方也发出了HOLDp来请求发送方流控。由于在SATA链路上有一定的时间延迟,此时出现的情况就是,当发送方发送HOLDp等待接收方HOLDAp应答的时候,收到的是接收方发送的HOLDp;当接收方发送HOLDp等待发送方HOLDAp应答的时候,收到的是发送方发送的HOLDp。步骤F:发送方收到来自接收方的HOLDp后,会将其HOLDp的原语标识位调整为有效;接收方收到来自发送方的HOLDp,也会将其HOLDp的原语标识位调整为有效。当发送方有数据可以发送,开始解除流控的时候,判断接收方的HOLDp标志位还一直有效,那么就开始以HOLDAp应答。步骤G:当接收方可以开始接收数据的时候,判断发送方的HOLDp标志位还一直有效,就解除流控,开始发送R一IPp,表明可以接收数据;步骤H:当发送方收到RJPp的时候,知道接收方解除流控,就重新发起数据传输,并一直发送直到帧尾EOFp发送完成;随后发出WTRMp,表明发送完成,等待接收方对该帧的接收确认;步骤I:接收方确认帧无误后发送R_OKp表明本次帧传输正常;步骤J:发送方发送SYNCp来进行两边同步。上述只对为HOLDp原语设置原语标识位的情况进行了描述,相关内容同样适用于其它原语,如R—Okp、R一ERRp、R一RDYp或SYNCp等,不再赘述。本发明实施例二提供了一种原语处理装置,如图8所示,该装置包括判断处理单元81,用于判断当前接收到的数据是否为ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;读取确定单元82,用于读取所述判断处理单元81当前已存储的数据,确定期望循环冗余码校验码CRC。所述读取确定单元82包括确定模块,用于确定已存储的数据不小于两个双字DWord或者确定已存储的数据为一个DWord且为帧结束标志EOFp时,执行数据读取。进一步的,该装置还包括延时单元,用于当判断出当前接收到的数据为ALIGNp原语,丢弃该ALIGNp原语时,暂停数据读取,延时一个数据读取周期后,重新执行数据读取。进一步的,该装置还包括原语标识位调整单元,用于根据接收到原语,调整相应的原语标识位的状态,以指示数据传输状态;其中,数据接收方或数据发送方分别设置有原语标识位。本发明装置实施例中各功能模块的具体工作方法参见本发明的方法实施例。本发明实施例提供的技术方案,通过剔除数据中随机插入的ALIGNp原语,利用不含ALIGNp原语的数据确定期望CRC,解决了现有技术中因随机插入ALIGNp原语,在确定期望CRC时带来的问题,能够在无需大量额外寄存器的情况下,稳定且有效地获取期望CRC,以保障数据校l^的正确性。本发明实施例三提供了一种原语处理系统,如图9所示,该系统包括数据发送方91和数据接收方92,所述数据接收方92,用于判断当前接收到的来自所述数据发送方91的数据是否为ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;读取当前已存储的数据,确定期望循环冗余码校验码CRC。进一步的,所述系统还包括数据接收方92或数据发送方91根据接收到的原语,调整相应的原语标识位的状态,以指示数据传输状态;其中,数据接收方92或数据发送方91分别设置有原语标识位。本发明系统实施例中各功能模块的具体工作方法参见本发明的方法实施例。本发明实施例提供的技术方案,通过剔除数据中随机插入的ALIGNp原语,利用不含ALIGNp原语的数据确定期望CRC,解决了现有技术中因随机插入ALIGNp原语,在确定期望CRC时带来的问题,能够在无需大量额外寄存器的情况下,稳定且有效地获取期望CRC,以保障数据校验的正确性。通过程序指令相关硬件完成。所述实施例对应的软件可以存储在一个计算机可存储读取的介质中。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。权利要求1、一种原语处理方法,其特征在于,该方法包括数据接收方判断当前接收到的数据是否为数据对齐ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;数据接收方读取当前已存储的数据,确定期望循环冗余码校验码CRC。2、根据权利要求1所述的方法,其特征在于,所述数据接收方读取当前已存储的数据包括数据接收方确定已存储的数据不小于两个双字DWord或者数据接收方确定已存储的数据为一个DWord且为帧结束标志EOFp时,执行数据读取。3、根据权利要求2所述的方法,其特征在于,还包括数据接收方设置帧尾标识,以指示存储的数据为EOFp。4、根据权利要求1或2所述的方法,其特征在于,当数据接收方判断当前接收到的数据为ALIGNp原语,丢弃该ALIGNp原语时,在数据接收方读取当前已存储的数据之前还包括数据接收方暂停数据读取,延时一个数据读取周期后,重新执行数据读取。5、根据权利要求4所述的方法,其特征在于,在数据接收方读取已存储的数据,确定期望循环冗余码校验码CRC之后还包括数据接收方将所述期望CRC与根据已存储的数据计算出的CRC进行比较,对接收到的数据进行校验。6、根据权利要求1所述的方法,其特征在于,还包括数据接收方或数据发送方根据接收到的原语,调整相应的原语标识位的状态,以指示数据传输状态;其中,数据接收方或数据发送方分别设置有原语标识位。7、根据权利要求6所述的方法,其特征在于,所述数据接收方或数据发送方根据接收到的原语,调整相应的原语标识位的状态包括数据接收方或数据发送方接收到第一原语时,将第一原语的原语标识位调整为有效;或者,数据接收方或数据发送方接收到第二原语时,将第一原语的原语标识位调整为无效,其中,所述第一原语为数据接收方或数据发送方上次所接收到的原语,所述第二原语为与所述第一原语不同的原语,且所述第二原语不包括CONTp原语和ALIGNp原语;或者,数据接收方或数据发送方接收到数据重复CONTp和ALIGNp原语时,保持当前所述原语标识位的状态。8、一种原语处理装置,其特征在于,该装置包括判断处理单元,用于判断当前接收到的数据是否为lt据对齐ALIGNp原语,若是,丟弃该ALIGNp原语,若否,存储该数据;读取确定单元,用于读取所述判断处理单元当前已存储的数据,确定期望循环冗余码校-险码CRC。9、根据权利要求8所述的装置,其特征在于,所述读取确定单元包括确定模块,用于确定已存储的数据不小于两个双字DWord或者确定已存储的数据为一个DWord且为帧结束标志EOFp时,执行数据读取。10、根据权利要求8或9所述的装置,其特征在于,该装置还包括延时单元,用于当判断出当前接收到的数据为ALIGNp原语,丢弃该ALIGNp原语时,暂停数据读取,延时一个数据读取周期后,重新执行数据读取。11、根据权利要求8或9所述的装置,其特征在于,该装置还包括原语标识位调整单元,用于根据接收到原语,调整相应的原语标识位的状态,以指示数据传输状态;其中,数据接收方或数据发送方分别设置有原语标识位。12、一种原语处理系统,其特征在于,该系统包括数据发送方和数据接收方,所述数据接收方,用于判断当前接收到的来自所述数据发送方的数据是否为数据对齐ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;读取当前已存储的数据,确定期望循环冗余码校验码CRC。13、根据权利要求12所述的系统,其特征在于,还包括数据接收方或数据发送方才艮据接收到的原语,调整相应的原语标识位的状态,以指示数据传输状态;其中,数据接收方或数据发送方分别设置有原语标识位。全文摘要本发明公开了一种原语处理方法、装置和系统,涉及串行硬盘接口技术,能够在无需大量额外寄存器的情况下,稳定且有效地获取期望CRC,以保障数据校验的正确性。本发明实施例提供的原语处理方法包括数据接收方判断当前接收到的数据是否为数据对齐ALIGNp原语,若是,丢弃该ALIGNp原语,若否,存储该数据;数据接收方读取当前已存储的数据,确定期望循环冗余码校验码CRC。文档编号G06F3/06GK101446887SQ20091000062公开日2009年6月3日申请日期2009年1月9日优先权日2009年1月9日发明者宁佐林,俊胡申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1