數(shù)據(jù)鏈路層高性能容錯的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法。
【背景技術(shù)】
[0002]PCIE是用于互連諸如計算和通信平臺應(yīng)用中外圍設(shè)備的第三代高性能I/O總線。數(shù)據(jù)鏈路層位于PCIE主控核的中間層,主要功能是鏈路管理和保證數(shù)據(jù)的傳輸?shù)目煽啃院屯暾?。?shù)據(jù)鏈路層使用容錯和重傳機制保證數(shù)據(jù)傳送的完整性和一致性。目前PCIE數(shù)據(jù)鏈路層的容錯性很低,只能檢錯,不能糾錯。根據(jù)目前PCIE的研究現(xiàn)狀得知,為了降低數(shù)據(jù)在數(shù)據(jù)鏈路中傳輸?shù)恼`碼率,PCIE運用循環(huán)冗余校驗CRC進(jìn)行檢錯,CRC是一種在數(shù)據(jù)通信中應(yīng)用很廣泛的差錯控制編碼,具有較強的檢錯能力。下面詳細(xì)介紹CRC在數(shù)據(jù)鏈路層的檢錯過程。
[0003]數(shù)據(jù)鏈路層的發(fā)送端接收來自事務(wù)層的數(shù)據(jù)TLP,在發(fā)送TLP之前,先將TLP進(jìn)行封裝,加上序列號前綴和CRC后綴,CRC后綴是根據(jù)TLP數(shù)據(jù)包的內(nèi)容,運用CRC算法生成的校驗碼。將封裝好的TLP副本存放在重發(fā)緩沖區(qū)中,同時將該TLP發(fā)送出去。數(shù)據(jù)鏈路層的接收端從物理層接收TLP,此時該TLP中含有序列號前綴和CRC后綴,接收到TLP后,根據(jù)TLP數(shù)據(jù)包中除CRC字段以外的數(shù)據(jù),用跟發(fā)送端同樣的CRC算法,計算得到期望CRC值,將期望CRC值跟TLP攜帶的CRC進(jìn)行比較,若匹配,則說明CRC校驗正確,繼續(xù)進(jìn)行其他的檢查。若不匹配,CRC校驗錯誤,說明數(shù)據(jù)傳輸過程中發(fā)生鏈路錯誤,則向發(fā)送端回復(fù)NAK數(shù)據(jù)鏈路層數(shù)據(jù)包(DLLP),發(fā)送端對收到的NAKDLLP所對應(yīng)的全部TLP,都會進(jìn)行重發(fā)操作,以保證每個TLP數(shù)據(jù)包能夠傳輸正確。
[0004]PCIE數(shù)據(jù)鏈路層的現(xiàn)有容錯技術(shù)僅能夠檢查數(shù)據(jù)在鏈路傳輸過程中發(fā)生的錯誤,但不能對其糾正。同時,由于不能糾錯,所有發(fā)生鏈路傳輸錯誤的數(shù)據(jù)包都要重發(fā),不僅增加了鏈路傳輸?shù)呢?fù)擔(dān),也降低了數(shù)據(jù)傳輸?shù)男剩斐蓭捄蜁r間的浪費。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服上述不足,提供一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法,能夠增加鏈路的容錯性,同時可以節(jié)省帶寬和時間,提高鏈路傳輸?shù)男省?br>[0006]本發(fā)明的目的是這樣實現(xiàn)的:一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法,在PCIE原有的CRC檢錯基礎(chǔ)上,加入ECC實時糾錯和自修復(fù)功能,在檢出錯誤的同時能夠?qū)ζ溥M(jìn)行糾正,并且計算速度很快。
【具體實施方式】
[0007]其進(jìn)一步的技術(shù)方案為:具體步驟如下:
[0008]I)在數(shù)據(jù)鏈路層發(fā)送端加上ECC編碼電路,編碼電路負(fù)責(zé)編碼,生成TLP數(shù)據(jù)包的初始的ECC校驗碼;
[0009]2)在接收端電路結(jié)構(gòu)中加入ECC解碼電路,解碼電路負(fù)責(zé)生成新的ECC校驗碼,并將新的ECC校驗碼與數(shù)據(jù)所攜帶的初始的ECC校驗碼進(jìn)行異或檢錯和糾錯;
[0010]3)當(dāng)解碼電路檢測到錯誤但是不能對其糾正(超過編碼算法的糾錯范圍)時,會生成
[0011]—個錯誤發(fā)生標(biāo)識信號,以表明有不可糾正的錯誤產(chǎn)生,則根據(jù)ACK/NAK協(xié)議對不可糾正的錯包進(jìn)行重發(fā);
[0012]4)在數(shù)據(jù)鏈路層發(fā)送端接收來自事務(wù)層的TLP數(shù)據(jù)包后,根據(jù)協(xié)議內(nèi)容進(jìn)行封裝,在現(xiàn)有容錯技術(shù)(加入CRC冗余循環(huán)校驗碼)的基礎(chǔ)上,本發(fā)明由ECC編碼電路生成ECC校驗碼,等完整的TLP接收完畢后將ECC校驗碼加在數(shù)據(jù)包的包尾;
[0013]5)在數(shù)據(jù)鏈路層的接收端,接收來自物理層的TLP數(shù)據(jù),對收到的TLP數(shù)據(jù)包進(jìn)行檢錯,先進(jìn)行CRC校驗,若CRC校驗無誤,則說明無鏈路傳輸錯誤,則不需要進(jìn)行ECC糾錯。若CRC校驗錯誤,則進(jìn)行ECC糾錯。目前常用的ECC編碼是漢明碼,可以糾錯一位,檢錯2位,若有多位錯誤為,不可糾正的,則給出錯誤標(biāo)識信號,以便通知發(fā)送端對出錯的TLP進(jìn)行重發(fā)。
[0014]所述ECC校驗糾錯是基于漢明編解碼方法,每512字節(jié)的數(shù)據(jù)塊將生成3個字節(jié)長度的ECC校驗碼。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
[0016]本發(fā)明提高了 PCIE數(shù)據(jù)鏈路的容錯性能,能夠?qū)崿F(xiàn)糾錯功能,通過在現(xiàn)有的數(shù)據(jù)鏈路的容錯技術(shù)基礎(chǔ)上,加入ECC實時糾錯和自修復(fù)功能,使得原來只能檢錯,不能糾錯的容錯系統(tǒng),能夠?qū)崿F(xiàn)糾錯功能,從而增強鏈路的容錯性。
【主權(quán)項】
1.一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法,其特征在于:在PCIE原有的CRC檢錯基礎(chǔ)上,加入ECC實時糾錯和自修復(fù)功能,在檢出錯誤的同時能夠?qū)ζ溥M(jìn)行糾正,并且提高計算速度。2.根據(jù)權(quán)利要求1所述一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法,其特征在于具體步驟如下: 1)在數(shù)據(jù)鏈路層的發(fā)送端加上ECC編碼電路,ECC編碼電路負(fù)責(zé)編碼,生成TLP數(shù)據(jù)包的初始ECC校驗碼; 2)在上述數(shù)據(jù)鏈路層的接收端電路結(jié)構(gòu)中加入ECC解碼電路,ECC解碼電路負(fù)責(zé)生成新的ECC校驗碼,并將新的ECC校驗碼與數(shù)據(jù)所攜帶的初始ECC校驗碼進(jìn)行異或檢錯和糾錯; 3)當(dāng)ECC解碼電路檢測到錯誤但是不能對其糾正時,會生成一個錯誤發(fā)生標(biāo)識信號,以表明有不可糾正的錯誤產(chǎn)生,則根據(jù)ACK/NAK協(xié)議對不可糾正的錯包進(jìn)行重發(fā); 4)在數(shù)據(jù)鏈路層的發(fā)送端接收來自事務(wù)層的TLP數(shù)據(jù)包后,根據(jù)協(xié)議內(nèi)容進(jìn)行封裝,在現(xiàn)有容錯技術(shù)的基礎(chǔ)上,由ECC編碼電路生成ECC校驗碼,等完整的TLP接收完畢后將ECC校驗碼加在數(shù)據(jù)包的包尾; 5)在數(shù)據(jù)鏈路層的接收端接收來自物理層的TLP數(shù)據(jù)包,對收到的TLP數(shù)據(jù)包進(jìn)行檢錯,先進(jìn)行CRC校驗,若CRC校驗無誤,則說明無鏈路傳輸錯誤,則不需要進(jìn)行ECC糾錯,若CRC校驗錯誤,則進(jìn)行ECC糾錯。3.根據(jù)權(quán)利要求2所述一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法,其特征在于:所述ECC校驗糾錯是基于漢明編解碼方法,每512字節(jié)的數(shù)據(jù)塊將生成3個字節(jié)長度的ECC校驗碼。
【專利摘要】本發(fā)明涉及一種用于PCIE數(shù)據(jù)鏈路層高性能容錯的方法,在PCIE原有的CRC檢錯基礎(chǔ)上,加入錯誤檢測和糾正(ECC,Error?Checking?and?Correcting)碼實時糾錯和自修復(fù)功能,在檢出錯誤的同時能夠?qū)ζ溥M(jìn)行糾正,并且計算速度很快。
【IPC分類】H04L1/00
【公開號】CN105634652
【申請?zhí)枴緾N201410582963
【發(fā)明人】李 東
【申請人】青島金訊網(wǎng)絡(luò)工程有限公司
【公開日】2016年6月1日
【申請日】2014年10月27日