循環(huán)冗余校驗(yàn)實(shí)現(xiàn)方法、裝置和網(wǎng)絡(luò)設(shè)備的制造方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及循環(huán)冗余校驗(yàn)(cyclicredundancycheck,簡稱CRC)實(shí)現(xiàn)方法、裝置和網(wǎng)絡(luò)設(shè)備?!?br>背景技術(shù):
】[0002]在數(shù)據(jù)報(bào)文傳輸過程中,通常采用循環(huán)冗余校驗(yàn)(cyclicredundancycheck,簡稱CRC)算法計(jì)算得到巾貞校驗(yàn)序列(framechecksequence,簡稱FCS)字段的校驗(yàn)位,將該校驗(yàn)位添加在報(bào)文尾部以驗(yàn)證報(bào)文傳輸?shù)恼_性。[0003]隨著芯片處理性能的提高,負(fù)責(zé)CRC計(jì)算的處理器,一拍時(shí)序的數(shù)據(jù)位寬越來越大。例如,目前數(shù)據(jù)位寬可達(dá)到256比特(英文:bit)。但是,由于數(shù)據(jù)報(bào)文的長度不確定,導(dǎo)致最后一拍時(shí)序的t旲(modulus,符號(hào):M0D)指7K不確定,存在N種可能性(Ν=數(shù)據(jù)位覽/8bit)。為了保證處理效率,最后一拍通常采用并行計(jì)算所有可能性再通過選擇器根據(jù)MOD指示選擇的處理方式。這樣,占用的計(jì)算資源隨著數(shù)據(jù)位寬的增大會(huì)成幾何級(jí)數(shù)增長。例如,數(shù)據(jù)位寬為256bit的處理器,CRC計(jì)算所需的計(jì)算模塊數(shù)為:256bit/8bit,即32,而數(shù)據(jù)位寬為128bit的處理器,CRC計(jì)算所需的計(jì)算模塊數(shù)為:128bit/8bit,S卩16。數(shù)據(jù)位寬為256bit的處理器所需的計(jì)算模塊數(shù)是數(shù)據(jù)位寬為128bit的處理器的兩倍。同時(shí),數(shù)據(jù)位寬為256bit的處理器的每個(gè)計(jì)算模塊所占用的資源規(guī)模(256bit)又是數(shù)據(jù)位寬為128bit的處理器的每個(gè)計(jì)算模塊所占用的資源規(guī)模(128bit)的兩倍。再加上其他一些可能的邏輯擴(kuò)充,雖然位寬是兩倍的關(guān)系,但是整體資源占用是四倍以上,規(guī)模過于巨大甚至超出一些主要功能所需資源。[0004]以現(xiàn)場(chǎng)可編程門陣列(fie1d-programmab1egatearray,簡稱FPGA)作為負(fù)責(zé)CRC計(jì)算的處理器為例,圖1示出了現(xiàn)有技術(shù)中所需的四輸入(4-1nput)查找表(lookuptable,簡稱LUT)數(shù)量與數(shù)據(jù)位寬的關(guān)系,其中橫坐標(biāo)為數(shù)據(jù)位寬,縱坐標(biāo)為LUT數(shù)量。LUT數(shù)量反映了占用資源的大小,從圖1中可以看出,所需的LUT數(shù)量不是隨著數(shù)據(jù)位寬線性增力口,而是幾何級(jí)增長。【
發(fā)明內(nèi)容】[0005]本發(fā)明實(shí)施例提供了一種CRC實(shí)現(xiàn)方法和裝置,根據(jù)MOD修正待計(jì)算報(bào)文,節(jié)省計(jì)算CRC時(shí)所需計(jì)算模塊數(shù),從而節(jié)省CRC計(jì)算中所占用資源,提高計(jì)算效率和資源利用率。[0006]第一方面,提供了一種CRC實(shí)現(xiàn)方法,包括:[0007]CRC實(shí)現(xiàn)裝置根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬對(duì)輸入數(shù)據(jù)進(jìn)行修正,得到修正數(shù)據(jù),所述修正數(shù)據(jù)的長度為所述數(shù)據(jù)位寬的整數(shù)倍;[0008]所述CRC實(shí)現(xiàn)裝置將所述修正數(shù)據(jù)作為被除數(shù),CRC多項(xiàng)式作為除數(shù),進(jìn)行CRC計(jì)算得到中間CRC結(jié)果;[0009]所述CRC實(shí)現(xiàn)裝置對(duì)所述中間CRC結(jié)果進(jìn)行逆向修正,得到所述輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果。[0010]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述CRC實(shí)現(xiàn)裝置根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬對(duì)輸入數(shù)據(jù)進(jìn)行修正,得到修正數(shù)據(jù)包括:[0011]在所述輸入數(shù)據(jù)的長度不是所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬整數(shù)倍的情況下,根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬,在所述輸入數(shù)據(jù)的尾部填充0得到所述修正數(shù)據(jù)。[0012]根據(jù)第一方面或第一方面的第一種可能實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述對(duì)所述中間CRC結(jié)果進(jìn)行逆向修正,得到所述輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果包括:[0013]將所述中間CRC結(jié)果的高低位翻轉(zhuǎn)后作為被除數(shù),將所述CRC多項(xiàng)式的高低位翻轉(zhuǎn)后作為除數(shù),進(jìn)行CRC計(jì)算得到計(jì)算結(jié)果,再將所述計(jì)算結(jié)果的高低位翻轉(zhuǎn)后得到所述最終CRC結(jié)果。[0014]第二方面,提供了一種CRC實(shí)現(xiàn)裝置,包括數(shù)據(jù)修正模塊,CRC計(jì)算模塊和結(jié)果修正模塊;[0015]所述數(shù)據(jù)修正模塊,用于根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬對(duì)輸入數(shù)據(jù)進(jìn)行修正,得到修正數(shù)據(jù),所述修正數(shù)據(jù)的長度為所述數(shù)據(jù)位寬的整數(shù)倍;[0016]所述CRC計(jì)算模塊,用于將所述修正數(shù)據(jù)作為被除數(shù),CRC多項(xiàng)式作為除數(shù),進(jìn)行CRC計(jì)算得到中間CRC結(jié)果;[0017]所述結(jié)果修正模塊,用于對(duì)所述中間CRC結(jié)果進(jìn)行逆向修正,得到所述輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果。[0018]在第二方面的第一種可能實(shí)現(xiàn)方式中,所述數(shù)據(jù)修正模塊,具體用于在所述輸入數(shù)據(jù)的長度不是所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬整數(shù)倍的情況下,根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬,在所述輸入數(shù)據(jù)的尾部填充0得到所述修正數(shù)據(jù)。[0019]根據(jù)第二方面或第二方面的第一種可能實(shí)現(xiàn)方式,在第二方面的第二種可能實(shí)現(xiàn)方式中,所述結(jié)果修正模塊,具體用于將所述中間CRC結(jié)果的高低位翻轉(zhuǎn)后作為被除數(shù),將所述CRC多項(xiàng)式的高低位翻轉(zhuǎn)后作為除數(shù),進(jìn)行CRC計(jì)算得到計(jì)算結(jié)果,再將所述計(jì)算結(jié)果的高低位翻轉(zhuǎn)后得到所述最終CRC結(jié)果。[0020]第三方面,提供了一種網(wǎng)絡(luò)設(shè)備,包括轉(zhuǎn)發(fā)芯片和通信接口;所述轉(zhuǎn)發(fā)芯片包括上述第二方面所述的CRC實(shí)現(xiàn)裝置;[0021]所述轉(zhuǎn)發(fā)芯片,用于接收從所述通信接口收到的第一數(shù)據(jù)報(bào)文,從所述第一數(shù)據(jù)報(bào)文中獲取凈荷作為第一輸入數(shù)據(jù),從所述第一數(shù)據(jù)報(bào)文的前向校驗(yàn)序列FCS字段獲取第一校驗(yàn)值;將所述第一輸入數(shù)據(jù)提供給所述CRC實(shí)現(xiàn)裝置,并從所述CRC裝置獲取所述第一輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果;根據(jù)所述第一校驗(yàn)值和所述第一輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果對(duì)所述第一數(shù)據(jù)報(bào)文進(jìn)行校驗(yàn)。[0022]在第三方面的第一種可能實(shí)現(xiàn)方式中,所述轉(zhuǎn)發(fā)芯片,還用于從第二數(shù)據(jù)報(bào)文中獲取凈荷作為第二輸入數(shù)據(jù),將所述第二輸入數(shù)據(jù)提供給所述CRC實(shí)現(xiàn)裝置,并從所述CRC裝置獲取所述第二輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果;將所述第二輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果作為校驗(yàn)值插入所述第二數(shù)據(jù)報(bào)文的FCS字段中,并從所述通信接口發(fā)送所述插入了校驗(yàn)值的數(shù)據(jù)報(bào)文。[0023]本發(fā)明實(shí)施例提供的CRC實(shí)現(xiàn)方法、裝置及網(wǎng)絡(luò)設(shè)備,根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬對(duì)輸入數(shù)據(jù)進(jìn)行修正,得到修正數(shù)據(jù),所述修正數(shù)據(jù)的長度為所述數(shù)據(jù)位寬的整數(shù)倍;這樣,可以保證MOD指示是固定的而不存在多種可能性,計(jì)算模塊的數(shù)量不會(huì)隨著數(shù)據(jù)位寬增加而增加,可以減少計(jì)算CRC時(shí)所需計(jì)算模塊數(shù)。然后,將所述修正數(shù)據(jù)作為被除數(shù),CRC多項(xiàng)式作為除數(shù),進(jìn)行CRC計(jì)算得到中間CRC結(jié)果;再對(duì)所述中間CRC結(jié)果進(jìn)行逆向修正,得到所述輸入數(shù)據(jù)對(duì)應(yīng)的最終CRC結(jié)果;從而可以得到所述輸入數(shù)據(jù)對(duì)應(yīng)的正確的CRC計(jì)算結(jié)果。本發(fā)明提供的技術(shù)方案,CRC計(jì)算所需的計(jì)算資源基本上隨數(shù)據(jù)位寬線性增加,相比于現(xiàn)有技術(shù)中所需的計(jì)算資源隨著數(shù)據(jù)位寬成幾何級(jí)增長,可以顯著地減少CRC計(jì)算所占用的資源,提高計(jì)算效率和資源利用率,從而提高設(shè)備性能?!靖綀D說明】[0024]圖1是現(xiàn)有技術(shù)中CRC計(jì)算消耗資源的示意圖;[0025]圖2是本發(fā)明實(shí)施例提供的一種CRC實(shí)現(xiàn)方法流程圖;[0026]圖3是本發(fā)明實(shí)施例提供的對(duì)修正數(shù)據(jù)進(jìn)行CRC計(jì)算的過程示意圖;[0027]圖4是本發(fā)明實(shí)施例提供的對(duì)中間CRC結(jié)果進(jìn)行逆向修正的過程示意圖;[0028]圖5是本發(fā)明實(shí)施例提供的一種CRC實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖;[0029]圖6是本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)示意圖。【具體實(shí)施方式】[0030]為使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說明。[0031]本發(fā)明實(shí)施例提供了一種CRC實(shí)現(xiàn)方法,如圖2所示,包括:[0032]201、對(duì)輸入數(shù)據(jù)進(jìn)行修正,得到修正數(shù)據(jù);[0033]本發(fā)明實(shí)施例中,所述CRC實(shí)現(xiàn)方法可以由CRC實(shí)現(xiàn)裝置執(zhí)行。所述CRC實(shí)現(xiàn)裝置可以是處理器,包括網(wǎng)絡(luò)處理器(networkprocessor,簡稱NP),專用集成電路(applicat1n-specificintegratedcircuit,簡稱ASIC)芯片,或可編程邏輯器件,例如FPGA。[0034]CRC實(shí)現(xiàn)裝置根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬,對(duì)輸入數(shù)據(jù)進(jìn)行修正。在所述輸入數(shù)據(jù)的長度不是所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬整數(shù)倍的情況下,根據(jù)所述CRC實(shí)現(xiàn)裝置的數(shù)據(jù)位寬,在所述輸入數(shù)據(jù)的尾部填充0得到所述修正數(shù)據(jù);所述修正數(shù)據(jù)的長度為所述數(shù)據(jù)位寬的整數(shù)倍。這樣,進(jìn)行CRC計(jì)算的數(shù)據(jù)長度固定,可以保證MOD指示是固定的而不存在多種可能性,從而可以減少計(jì)算模塊的數(shù)量。[0035]舉例來說,所述數(shù)據(jù)位寬為256bit,若所述數(shù)據(jù)的長度為248bit,則在所述輸入數(shù)據(jù)的尾部填充8bit的0,所得到的修正數(shù)據(jù)的長度為256bit,為所述數(shù)據(jù)位寬的整數(shù)倍。若所述輸入數(shù)據(jù)的長度為376bit,則在所述輸入數(shù)據(jù)當(dāng)前第1頁1 2 3