CN103533045B - 一种用于pcie数据链路层高性能容错的方法 - Google Patents
一种用于pcie数据链路层高性能容错的方法 Download PDFInfo
- Publication number
- CN103533045B CN103533045B CN201310473374.0A CN201310473374A CN103533045B CN 103533045 B CN103533045 B CN 103533045B CN 201310473374 A CN201310473374 A CN 201310473374A CN 103533045 B CN103533045 B CN 103533045B
- Authority
- CN
- China
- Prior art keywords
- ecc
- link layer
- data link
- mistake
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Detection And Prevention Of Errors In Transmission (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及一种用于PCIE数据链路层高性能容错的方法,在PCIE原有的CRC检错基础上,加入错误检测和纠正(ECC,Error Checking and Correcting)码实时纠错和自修复功能,在检出错误的同时能够对其进行纠正,并且计算速度很快。本发明能够纠正的错包就不需要重发,增加链路的容错性,同时可以节省带宽和时间,提高链路传输的效率。
Description
技术领域
本发明涉及一种用于PCIE数据链路层高性能容错的方法。
背景技术
PCIE是用于互连诸如计算和通信平台应用中***设备的第三代高性能I/O总线。数据链路层位于PCIE主控核的中间层,主要功能是链路管理和保证数据的传输的可靠性和完整性。数据链路层使用容错和重传机制保证数据传送的完整性和一致性。目前PCIE数据链路层的容错性很低,只能检错,不能纠错。根据目前PCIE的研究现状得知,为了降低数据在数据链路中传输的误码率,PCIE运用循环冗余校验CRC进行检错,CRC是一种在数据通信中应用很广泛的差错控制编码,具有较强的检错能力。下面详细介绍CRC在数据链路层的检错过程。
数据链路层的发送端接收来自事务层的数据TLP,在发送TLP之前,先将TLP进行封装,加上序列号前缀和CRC后缀,CRC后缀是根据TLP数据包的内容,运用CRC算法生成的校验码。将封装好的TLP副本存放在重发缓冲区中,同时将该TLP发送出去。数据链路层的接收端从物理层接收TLP,此时该TLP中含有序列号前缀和CRC后缀,接收到TLP后,根据TLP数据包中除CRC字段以外的数据,用跟发送端同样的CRC算法,计算得到期望CRC值,将期望CRC值跟TLP携带的CRC进行比较,若匹配,则说明CRC校验正确,继续进行其他的检查。若不匹配,CRC校验错误,说明数据传输过程中发生链路错误,则向发送端回复NAK 数据链路层数据包(DLLP),发送端对收到的NAK DLLP所对应的全部TLP,都会进行重发操作,以保证每个TLP数据包能够传输正确。
PCIE数据链路层的现有容错技术仅能够检查数据在链路传输过程中发生的错误,但不能对其纠正。同时,由于不能纠错,所有发生链路传输错误的数据包都要重发,不仅增加了链路传输的负担,也降低了数据传输的效率,造成带宽和时间的浪费。
发明内容
本发明的目的在于克服上述不足,提供一种用于PCIE数据链路层高性能容错的方法,能够增加链路的容错性,同时可以节省带宽和时间,提高链路传输的效率。
本发明的目的是这样实现的:一种用于PCIE数据链路层高性能容错的方法,在PCIE原有的CRC检错基础上,加入ECC实时纠错和自修复功能,在检出错误的同时能够对其进行纠正,并且计算速度很快。
其进一步的技术方案为:具体步骤如下:
1)在数据链路层发送端加上ECC编码电路,编码电路负责编码,生成 TLP数据包的初始的ECC校验码;
2)在接收端电路结构中加入ECC解码电路,解码电路负责生成新的ECC校验码,并将新的ECC校验码与数据所携带的初始的ECC校验码进行异或检错和纠错;
3)当解码电路检测到错误但是不能对其纠正(超过编码算法的纠错范围)时,会生成一个错误发生标识信号,以表明有不可纠正的错误产生,则根据ACK/NAK协议对不可纠正的错包进行重发;
4)在数据链路层发送端接收来自事务层的TLP数据包后,根据协议内容进行封装,在现有容错技术(加入CRC冗余循环校验码)的基础上,本发明由ECC编码电路生成ECC校验码,等完整的TLP接收完毕后将ECC校验码加在数据包的包尾;
5)在数据链路层的接收端,接收来自物理层的TLP数据,对收到的TLP数据包进行检错,先进行CRC校验,若CRC校验无误,则说明无链路传输错误,则不需要进行ECC纠错。若CRC校验错误,则进行ECC纠错。目前常用的ECC编码是汉明码,可以纠错一位,检错2位,若有多位错误为,不可纠正的,则给出错误标识信号,以便通知发送端对出错的TLP进行重发。
所述ECC校验纠错是基于汉明编解码方法,每512字节的数据块将生成3个字节长度的ECC校验码。
与现有技术相比,本发明的有益效果是:
本发明提高了PCIE数据链路的容错性能,能够实现纠错功能,通过在现有的数据链路的容错技术基础上,加入ECC实时纠错和自修复功能,使得原来只能检错,不能纠错的容错***,能够实现纠错功能,从而增强链路的容错性。
附图说明
图1是本发明数据链路层ECC容错技术框架图。
图2是本发明数据链路层发送端的ECC编码电路。
图3是本发明ECC奇偶校验信息生成表。
图4是本发明数据链路层接收端的ECC解码电路。
图5是本发明ECC校验流程图。
具体实施方式
本发明一种用于PCIE数据链路层高性能容错的方法,所述方法包括以下步骤:
1)在数据链路层发送端加上ECC编码电路,编码电路负责编码,生成 TLP数据包的初始的ECC校验码。在接收端电路结构中加入ECC解码电路,解码电路负责生成新的ECC校验码,并将新的ECC校验码与数据所携带的初始的ECC校验码进行异或检错和纠错。当解码电路检测到错误但是不能对其纠正(超过编码算法的纠错范围)时,会生成一个错误发生标识信号,以表明有不可纠正的错误产生,则根据ACK/NAK协议对不可纠正的错包进行重发。方案总体框架图见附图1;
2)在发送端加入ECC编码电路,生成ECC校验码。输入数据的ECC编码电路模块的主要作用是在数据发送到物理层之前对数据进行 ECC 编码,将生成的 ECC 纠错码加到TLP数据包中。来自事务层的TLP数据包长度不定,以双字为单位,最小长度是4个双字。从事务层接收到的TLP缓存到FIFO中,等到一个完整的TLP数据包接收完毕后,不仅要根据协议中规定的在TLP中加序列号和CRC校验码,还要对TLP进一步封装,在TLP的包尾加入ECC校验码,ECC校验码是ECC编码电路会根据固定算法生成。将封装好的TLP副本存入重发缓冲区中以备需要时重发。在将封装好的TLP发送之前首先判断,有没有收到来自对端的对应上一个TLP数据包的重发标志信号,如果没有,则可以将封装好的TLP发送至下层,如果需要重发,则阻止继续接收来自事务层的TLP,并优先重发。具体流程见如附图2:
本发明中ECC编码采用汉明检纠错技术。下面以对512 字节数据为例进行汉明编码,生成 3 字节的检纠错码。
2a) ECC 校验码的生成:本方案所采用的ECC校验算法是基于汉明编解码方法,每512字节的数据块将生成3个字节长度的ECC校验码。512字节的原始数据组成一个大小为512x8的矩阵。对原始数据按行以字节为单位进行计算产生行校验码,按列以位为单位进行计算产生列校验码。其组成成分为6位的列奇偶校验码和18位的行奇偶校验码。ECC校验码的生成如附图3所示:其中P1~P4是列奇偶校验码,P8~P2048为行奇偶校验码。
P1 = Bit7⊕Bit5⊕Bit3⊕Bit1
P1’ = Bit6⊕Bit4⊕Bit2⊕Bit0
P2 = Bit7⊕Bit6⊕Bit3⊕Bit2
P2’ = Bit5⊕Bit4⊕Bit1⊕Bit0
P4 = Bit7⊕Bit6⊕Bit5⊕Bit4
P4’ = Bit3⊕Bit2⊕Bit1⊕Bit0
P8 = 512th byte⊕510th byte…4th byte⊕2nd byte
P8’ = 511th byte⊕509th byte…3rd byte⊕1st byte
………………
P2048 = 512th byte⊕511th byte…258th byte⊕257th byte
P2048’ = 256th byte⊕255th byte…2nd byte⊕1st byte
其中,Bit0~Bit7是该列所有数据的异或值,1st byte~512th byte是该行所有数据的异或值。
2b)ECC码的分配:ECC校验码的分配如表1所示,其中p1~p4为列校验码,p8~p1024为行校验码。
表1:ECC校验码的分配表
错误比特位置确定:Error Offset= {P1024,P512,P256,P128,P64,P32,P16,P8,P4,P2,P1}。其中{P1024,P512,P256,P128,P64,P32,P16,P8}用于确定错误的字节位置,{P4,P2,P1}用于确定错误的比特位置。
3)当数据链路层接收端从物理层接收TLP后,根据包开始和结束标志,对TLP数据包进行解析,解析出TLP包所携带的初始ECC校验码,同时ECC解码模块,运用跟发送端同样的ECC编码算法,生成新的ECC校验码。然后将初始ECC校验码跟新生成的ECC校验码进行异或,根据异或的结果判断是否有错误,以及是否可以纠正。如果无错误或是可以纠正的错误,则将该TLP数据包作为正确的数据包处理,向对端回复ACK DLLP数据包;如果是不可纠正的错误,则会产生错误标志信号,向对端回复NACK DLLP数据包,告知发送端重发与该NACK DLLP对应的TLP数据包。具体过程见附图4。
4)ECC校验码检错纠错是将初始ECC校验码和新生成的ECC校验码进行比较,判断数据在传输过程中是否出错。将两次生成的ECC校验码进行按位异或运算,由此确定出出错位的字节偏移量和位偏移量,进行出错位的定义后通知纠错模块进行取反纠错。
5) ECC校验码检错纠错流程是将发送端数据通过ECC编码电路生成初始ECC校验码,跟数据一起通过链路发送到数据链路层接收端,接收端的解码电路用相同的编码算法生成新的ECC校验码,然后将初始ECC校验码和新生成的ECC校验码进行异或,根据异或的结果是否为0,判断是否有错误。如果异或结果全部数据位为0,则说明没有错误;如果异或结果中有一般的数据位是1,说明只有一位数据错误,可以纠正;如果不是以上两种情况,则说明数据有错误且超出了ECC纠错范围,会产生错包产生标识,通知发送端对该数据包进行重发。ECC校验码检错纠错流程图如附图5所示。
以512字节为例对ECC检错纠错过程进行说明。
ECC校验是利用存储在冗余存储空间的ECC校验码和读取数据块时新生成的ECC校验码按位异或,根据异或运算的结果来判断数据块是否出错并进行纠错的。若异或结果为:
a) 24 位数据全为 0 则表示该数据块没有出错。
b) 有12位数据为1则表示该数据块有1位数据发生错误,并且可以利用异或结果纠正该错误。
c) 仅一位数据为 1 则表示该数据块的 ECC 校验码有错。
d) 除去以上三种情况,则表示该数据块有错误发生,并且发生错误的数据位数大于1,无法利用异或结果纠正该处错误。
本发明是在现有的数据链路的容错技术(通过CRC循环冗余校验容错,只能检错,不能纠错)基础上,加入ECC实时纠错和自修复功能,以提高数据链路层的容错性,同时提高数据传输效率。
以上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
Claims (2)
1.一种用于PCIE数据链路层高性能容错的方法,其特征在于:在PCIE原有的CRC检错基础上,加入ECC实时纠错和自修复功能,在检出错误的同时能够对其进行纠正,并且提高计算速度,具体步骤如下:
1)在数据链路层的发送端加上ECC编码电路,ECC编码电路负责编码,生成 TLP数据包的初始ECC校验码;
2)在上述数据链路层的接收端电路结构中加入ECC解码电路,ECC解码电路负责生成新的ECC校验码,并将新的ECC校验码与数据所携带的初始ECC校验码进行异或检错和纠错;
3)当ECC解码电路检测到错误但是不能对其纠正时,会生成一个错误发生标识信号,以表明有不可纠正的错误产生,则根据ACK/NAK协议对不可纠正的错包进行重发;
4)在数据链路层的发送端接收来自事务层的TLP数据包后,根据协议内容进行封装,在现有容错技术的基础上,由ECC编码电路生成ECC校验码,等完整的TLP接收完毕后将ECC校验码加在数据包的包尾;
5)在数据链路层的接收端接收来自物理层的TLP数据包,对收到的TLP数据包进行检错,先进行CRC校验,若CRC校验无误,则说明无链路传输错误,则不需要进行ECC纠错, 若CRC校验错误,则进行ECC纠错。
2.根据权利要求1所述一种用于PCIE数据链路层高性能容错的方法,其特征在于:所述ECC校验纠错是基于汉明编解码方法,每512字节的数据块将生成3个字节长度的ECC校验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310473374.0A CN103533045B (zh) | 2013-10-12 | 2013-10-12 | 一种用于pcie数据链路层高性能容错的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310473374.0A CN103533045B (zh) | 2013-10-12 | 2013-10-12 | 一种用于pcie数据链路层高性能容错的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103533045A CN103533045A (zh) | 2014-01-22 |
CN103533045B true CN103533045B (zh) | 2017-12-29 |
Family
ID=49934710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310473374.0A Active CN103533045B (zh) | 2013-10-12 | 2013-10-12 | 一种用于pcie数据链路层高性能容错的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103533045B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763067B (zh) * | 2014-01-28 | 2017-11-10 | 天地融科技股份有限公司 | 一种通信数据包纠错校验方法与装置 |
CN105045526A (zh) * | 2015-05-08 | 2015-11-11 | 湖南国科微电子有限公司 | 一种提高PCIe固态硬盘传输可靠性的方法 |
CN105205021B (zh) * | 2015-09-11 | 2018-02-13 | 华为技术有限公司 | 断开PCIe设备与主机之间的链接的方法和装置 |
CN105280239B (zh) * | 2015-10-22 | 2016-09-07 | 湖南国科微电子股份有限公司 | 一种动态实现固态硬盘ecc校验码的方法和装置 |
US9965352B2 (en) * | 2015-11-20 | 2018-05-08 | Qualcomm Incorporated | Separate link and array error correction in a memory system |
CN108108264A (zh) * | 2017-12-25 | 2018-06-01 | 郑州朗睿科技有限公司 | 一种串口通讯的校验纠错方法 |
CN108988990A (zh) * | 2018-07-05 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种处理链路层数据错误的方法 |
CN109376028B (zh) * | 2018-09-27 | 2021-11-09 | 郑州云海信息技术有限公司 | 一种pcie设备纠错方法与装置 |
CN110995392B (zh) * | 2019-11-28 | 2022-08-02 | 上海集成电路研发中心有限公司 | 一种数据传输方法及装置 |
CN111541519B (zh) * | 2020-04-17 | 2023-01-17 | 展讯通信(上海)有限公司 | 一种通信装置 |
CN112511276B (zh) * | 2020-11-24 | 2021-11-30 | 广州技象科技有限公司 | 数据处理方法及装置 |
CN114598418A (zh) * | 2020-12-07 | 2022-06-07 | 山东新松工业软件研究院股份有限公司 | 一种应用于编码器数据传输的方法、装置及*** |
CN113489570B (zh) * | 2021-06-30 | 2023-05-09 | 郑州云海信息技术有限公司 | 一种PCIe链路的数据传输方法、装置及设备 |
CN117573455B (zh) * | 2024-01-16 | 2024-04-05 | 苏州元脑智能科技有限公司 | 一种pcie设备检测***、方法、装置及产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770416A (zh) * | 2009-01-05 | 2010-07-07 | 英业达集团(天津)电子技术有限公司 | 新一代周边连接接口的总线测试方法 |
CN102317919A (zh) * | 2009-02-18 | 2012-01-11 | 美光科技公司 | 在存储器控制器中的数据完整性及方法 |
CN102821082A (zh) * | 2011-06-10 | 2012-12-12 | 成都市华为赛门铁克科技有限公司 | 一种数据传输方法、装置和*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037224B2 (en) * | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US8139575B2 (en) * | 2007-06-29 | 2012-03-20 | International Business Machines Corporation | Device, system and method of modification of PCI express packet digest |
-
2013
- 2013-10-12 CN CN201310473374.0A patent/CN103533045B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770416A (zh) * | 2009-01-05 | 2010-07-07 | 英业达集团(天津)电子技术有限公司 | 新一代周边连接接口的总线测试方法 |
CN102317919A (zh) * | 2009-02-18 | 2012-01-11 | 美光科技公司 | 在存储器控制器中的数据完整性及方法 |
CN102821082A (zh) * | 2011-06-10 | 2012-12-12 | 成都市华为赛门铁克科技有限公司 | 一种数据传输方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
CN103533045A (zh) | 2014-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103533045B (zh) | 一种用于pcie数据链路层高性能容错的方法 | |
CN101800757B (zh) | 一种基于单光纤结构的无反馈单向数据传输方法 | |
US7809870B2 (en) | Method and system for interlocking data integrity for network adapters | |
CN101621471B (zh) | 用于发送和接收分组的*** | |
WO2006096879A1 (en) | System and method for tolerating communication lane failures | |
CN101325468B (zh) | 一种基于双向奇偶校验的混合纠错方法 | |
CN101621367B (zh) | 一种基于包校验信息的harq译码方法 | |
TW202015371A (zh) | 在無線網路中進行資料重傳的方法以及系統 | |
US7137057B2 (en) | Method and apparatus for performing error correction code (ECC) conversion | |
JPS6346615B2 (zh) | ||
CN102136887A (zh) | 传输块循环冗余校验方法及装置 | |
CN107947902A (zh) | 一种高速接口芯片的数据差错处理***及方法 | |
CN109302395A (zh) | 一种用于提高高误码率环境下数据纠错效率的纠错方法 | |
KR20140101408A (ko) | 정상 데이터 송신과 재시도 데이터 송신 사이에서의 차동 포매팅 | |
CN106487673A (zh) | 一种基于三模冗余的检错重传容错路由单元 | |
CN106788878A (zh) | 一种具有单比特纠错功能的并行crc纠错方法 | |
CN108988990A (zh) | 一种处理链路层数据错误的方法 | |
US9571231B2 (en) | In-band status encoding and decoding using error correction symbols | |
JP4079940B2 (ja) | データ伝送方式及び方法 | |
CN101777963A (zh) | 一种基于反馈模式的帧级别编码与译码方法 | |
US6601217B1 (en) | System and method for error correction in an electronic communication | |
US11323298B2 (en) | DBI protection for data link | |
Fu et al. | Burst error detection hybrid ARQ with crosstalk-delay reduction for reliable on-chip interconnects | |
CN106452660A (zh) | 数据传送***及方法 | |
CN108616324A (zh) | 数据链路层高性能容错的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20171116 Address after: 214400 Wuxi City, Jiangyin, Shoushan Road, No. 117 sunshine golden home, room 2, building 401, room Applicant after: Ding Xiangen Address before: 214433 Jiangyin, Wuxi, Chengjiang street, new road, No., No. 9 Applicant before: Jiangsu Huali Network Engineering Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |