硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法及裝置的制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法,該方法包括:第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成;當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令;觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。本發(fā)明還公開(kāi)了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)裝置。采用本發(fā)明能夠進(jìn)一步提高報(bào)文轉(zhuǎn)發(fā)性能。
【專(zhuān)利說(shuō)明】
硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),特別涉及一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法及裝置。
【背景技術(shù)】
[0002]硬線(xiàn)程多核中央處理器(CPU)是廣泛用于嵌入式系統(tǒng)的CPU。多核CPU上VXWorks或Iinux下基于軟件協(xié)議棧的IP報(bào)文轉(zhuǎn)發(fā),其性能很低:在一款硬線(xiàn)程多核CPU上的轉(zhuǎn)發(fā)速度只有10Mbps左右。而在同樣硬線(xiàn)程多核CPU上基于硬轉(zhuǎn)發(fā)的速度可達(dá)到十多倍的性能提升。其中,硬轉(zhuǎn)發(fā)指的是CPU收到報(bào)文后不經(jīng)過(guò)協(xié)議棧軟件而是直接處理并轉(zhuǎn)發(fā)。因此,這種高速硬轉(zhuǎn)發(fā)技術(shù)需要進(jìn)一步改進(jìn)以滿(mǎn)足更高性能需求。下面所講的報(bào)文轉(zhuǎn)發(fā)都是基于硬轉(zhuǎn)發(fā)進(jìn)行的。
[0003]現(xiàn)有技術(shù)中,硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法包括以下步驟:
[0004]步驟S1、第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,觸發(fā)發(fā)送當(dāng)前報(bào)文的指令,進(jìn)行當(dāng)前報(bào)文的發(fā)送;
[0005]步驟S2、觸發(fā)發(fā)送當(dāng)前報(bào)文的指令后,即在當(dāng)前報(bào)文發(fā)送過(guò)程中周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定當(dāng)前報(bào)文是否發(fā)送完成。
[0006]步驟S3、當(dāng)確定當(dāng)前報(bào)文發(fā)送完成后,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0007]根據(jù)上述描述,現(xiàn)有技術(shù)中的報(bào)文硬轉(zhuǎn)發(fā)方法,需要等待當(dāng)前報(bào)文在第一線(xiàn)程上發(fā)送完成,才可以接收下一個(gè)報(bào)文,如果沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。實(shí)際測(cè)得等待時(shí)間長(zhǎng)短不一,長(zhǎng)的有8?10us,短的不到lus,也就是說(shuō),從觸發(fā)發(fā)送報(bào)文的指令到報(bào)文發(fā)送完成之間的時(shí)間就是等待時(shí)間。
[0008]如何進(jìn)一步提高報(bào)文轉(zhuǎn)發(fā)性能是現(xiàn)階段有待解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0009]有鑒于此,本發(fā)明提供了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法及裝置,能夠進(jìn)一步提高報(bào)文轉(zhuǎn)發(fā)性能。
[0010]為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的:
[0011]本發(fā)明公開(kāi)了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法,該方法包括:
[0012]第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成;
[0013]當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令;
[0014]觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0015]所述檢查上一個(gè)報(bào)文是否發(fā)送完成的方法包括:周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定上一個(gè)報(bào)文是否發(fā)送完成。
[0016]所述硬線(xiàn)程多核處理器包括多個(gè)硬線(xiàn)程,每個(gè)硬線(xiàn)程執(zhí)行相應(yīng)的任務(wù),具有相應(yīng)獨(dú)立的狀態(tài)寄存器。
[0017]本發(fā)明還公開(kāi)了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)裝置,應(yīng)用于執(zhí)行轉(zhuǎn)發(fā)的硬線(xiàn)程,該裝置包括:
[0018]查詢(xún)單元,用于接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成;
[0019]觸發(fā)單元,用于當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令;
[0020]指示單元,用于在觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0021]所述查詢(xún)單元,具體用于周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定是否發(fā)送完成。
[0022]由上述的技術(shù)方案可見(jiàn),本發(fā)明提供了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法,該方法包括:第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成;當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令;觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,無(wú)需等待發(fā)送完成,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。而不像現(xiàn)有技術(shù)那樣,第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,進(jìn)行當(dāng)前報(bào)文的發(fā)送,但是要等待當(dāng)前報(bào)文發(fā)送完成,才能指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。如此,這種節(jié)省CPU處理時(shí)間的方法在報(bào)文轉(zhuǎn)發(fā)中大幅提升了性能,從而實(shí)現(xiàn)本發(fā)明的目的。
【附圖說(shuō)明】
[0023]圖1為本發(fā)明一實(shí)施例提供了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法流程示意圖。
[0024]圖2為本發(fā)明一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025]為使本發(fā)明的目的、技術(shù)方案、及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
[0026]硬線(xiàn)程多核中央處理器包括多個(gè)硬線(xiàn)程,每個(gè)硬線(xiàn)程有各自獨(dú)立的轉(zhuǎn)發(fā)報(bào)文機(jī)制。每個(gè)硬線(xiàn)程執(zhí)行相應(yīng)的任務(wù),具有相應(yīng)獨(dú)立的收發(fā)單元。其中收發(fā)單元是一種狀態(tài)寄存器,用于硬線(xiàn)程根據(jù)狀態(tài)寄存器的指示確認(rèn)該硬線(xiàn)程上的報(bào)文是否發(fā)送完成。以4硬線(xiàn)程2核CPU來(lái)說(shuō),就是每4個(gè)硬線(xiàn)程綁定I個(gè)核,共2個(gè)核綁定I個(gè)CPU。
[0027]本發(fā)明的核心思想是,第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,且觸發(fā)發(fā)送當(dāng)前報(bào)文之前,檢查上一個(gè)報(bào)文是否發(fā)送完成;觸發(fā)發(fā)送當(dāng)前報(bào)文之后,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。如此,第一硬線(xiàn)程觸發(fā)發(fā)送當(dāng)前報(bào)文的指令后,不需要周期性查詢(xún)狀態(tài)寄存器,等待當(dāng)前報(bào)文在第一線(xiàn)程上發(fā)送完成,就直接指示第一硬線(xiàn)程可以接收下一個(gè)報(bào)文,如果沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。從而將這個(gè)等待時(shí)間節(jié)省下來(lái),接收第一硬線(xiàn)程上的下一個(gè)報(bào)文,或者給其他硬線(xiàn)程處理報(bào)文。并且,不需要像現(xiàn)有技術(shù)那樣,觸發(fā)發(fā)送當(dāng)前報(bào)文的指令后,即在當(dāng)前報(bào)文發(fā)送過(guò)程中周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定當(dāng)前報(bào)文是否發(fā)送完成。而是將檢查提前到了發(fā)送當(dāng)前報(bào)文之前,檢查上一個(gè)報(bào)文是否發(fā)送完成。但實(shí)際上,在發(fā)送當(dāng)前報(bào)文之前,上一個(gè)報(bào)文大多數(shù)已經(jīng)發(fā)送完成,所以這樣的提前檢查,基本沒(méi)有引入額外的等待時(shí)間,和現(xiàn)有技術(shù)觸發(fā)發(fā)送當(dāng)前報(bào)文的指令后,檢查當(dāng)前報(bào)文是否發(fā)送完成所耗費(fèi)的等待時(shí)間相比,差別很大,前者所用時(shí)間很短。
[0028]如圖1所示,本發(fā)明一實(shí)施例提供了一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法,該方法包括以下步驟:
[0029]步驟11、第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成;
[0030]其中,檢查上一個(gè)報(bào)文是否發(fā)送完成的方法具體包括:周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定上一個(gè)報(bào)文是否發(fā)送完成。實(shí)際上,在發(fā)送當(dāng)前報(bào)文之前,上一個(gè)報(bào)文大多數(shù)已經(jīng)發(fā)送完成,所以本發(fā)明中雖然也需要周期性查詢(xún)狀態(tài)寄存器,但是基本上絕大多數(shù)情況I次查詢(xún),就可以確定上一個(gè)報(bào)文已經(jīng)發(fā)送完成。所以,本步驟基本沒(méi)有引入額外的等待時(shí)間,和現(xiàn)有技術(shù)觸發(fā)發(fā)送當(dāng)前報(bào)文的指令后,檢查當(dāng)前報(bào)文是否發(fā)送完成所耗費(fèi)的I?Sus的等待時(shí)間相比,差別很大,前者所用時(shí)間很短。
[0031]步驟12、當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令;
[0032]步驟13、觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0033]這里,硬線(xiàn)程多核中央處理器包括多個(gè)硬線(xiàn)程,本發(fā)明為方便清楚地說(shuō)明本發(fā)明的方法,定義第一硬線(xiàn)程和其他硬線(xiàn)程,對(duì)于第一硬線(xiàn)程沒(méi)有任何特定含義,接收當(dāng)前報(bào)文的任何一個(gè)硬線(xiàn)程都可以稱(chēng)作第一硬線(xiàn)程。
[0034]為清楚說(shuō)明本發(fā)明,下面列舉具體場(chǎng)景,以4個(gè)硬線(xiàn)程為例進(jìn)行說(shuō)明。
[0035]首先,硬線(xiàn)程I接收并處理完報(bào)文I后,在觸發(fā)發(fā)送報(bào)文I之前,檢查硬線(xiàn)程I上是否有上一個(gè)報(bào)文未發(fā)送完成,本實(shí)施例中假設(shè)報(bào)文I是硬線(xiàn)程I上接收的第一個(gè)報(bào)文,所以不存在上一個(gè)報(bào)文,因此直接觸發(fā)發(fā)送報(bào)文1,同時(shí)指示硬線(xiàn)程I可以繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0036]—種情況是,假設(shè),硬線(xiàn)程I在接收到可以繼續(xù)接收下一個(gè)報(bào)文的指示后,接收到報(bào)文2,在處理完報(bào)文2,且觸發(fā)發(fā)送報(bào)文2之前,檢查硬線(xiàn)程I上是否有上一個(gè)報(bào)文,即報(bào)文I未發(fā)送完成,如果報(bào)文I沒(méi)有發(fā)送完成,需要等待報(bào)文I發(fā)送完成。這個(gè)等待時(shí)間相當(dāng)短。如果報(bào)文I發(fā)送完成,則觸發(fā)發(fā)送當(dāng)前報(bào)文2,同時(shí)指示硬線(xiàn)程I可以繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0037]在這種情況下,硬線(xiàn)程I在觸發(fā)發(fā)送報(bào)文I之后,直接指示硬線(xiàn)程I可以繼續(xù)接收下一個(gè)報(bào)文,不需要等待報(bào)文I發(fā)送完成,縮短了接收?qǐng)?bào)文I和報(bào)文2之間的時(shí)間,因此節(jié)省了發(fā)包時(shí)間。
[0038]另一種情況是,假設(shè),硬線(xiàn)程I在接收到可以繼續(xù)接收下一個(gè)報(bào)文的指示后,沒(méi)有接收到下一個(gè)報(bào)文,那么就可以將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0039]如果,此時(shí)硬線(xiàn)程2上正在處理報(bào)文3,由于硬線(xiàn)程I觸發(fā)發(fā)送報(bào)文I之后,不需要周期性查詢(xún)狀態(tài)寄存器,來(lái)確定報(bào)文I是否發(fā)送完成,所以將這個(gè)等待時(shí)間讓給硬線(xiàn)程2用于處理報(bào)文3,從而大大提高了報(bào)文處理性能。硬線(xiàn)程2的工作原理與硬線(xiàn)程I相同,在此不再贅述。
[0040]綜上所述,本發(fā)明對(duì)硬線(xiàn)程多核CPU發(fā)包時(shí)序進(jìn)行了改進(jìn),實(shí)現(xiàn)硬件發(fā)包和CPU運(yùn)行處理時(shí)間片高度并發(fā),大幅提升IP報(bào)文處理能力。通過(guò)測(cè)試表明,采用現(xiàn)有技術(shù)的方法,1.SGbps報(bào)文處理會(huì)有少量丟包,而采用本發(fā)明的方法后,2.7Gbps轉(zhuǎn)發(fā)流量可以長(zhǎng)時(shí)間穩(wěn)定運(yùn)行不丟包。從而可以看出,通過(guò)本發(fā)明的方法,轉(zhuǎn)發(fā)報(bào)文的性能大幅提高后,丟包現(xiàn)象就可以避免。本發(fā)明節(jié)省CPU處理時(shí)間的方法不但可以用于硬線(xiàn)程間,核間,網(wǎng)絡(luò)包發(fā)送,進(jìn)一步地,還可以用于其他異步硬件處理,例如硬件加解密等。
[0041]基于同樣的發(fā)明構(gòu)思,本發(fā)明還提出一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)裝置,應(yīng)用于執(zhí)行轉(zhuǎn)發(fā)的硬線(xiàn)程,參見(jiàn)圖2,該裝置包括:
[0042]查詢(xún)單元201,用于接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成;
[0043]觸發(fā)單元202,用于當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令;
[0044]指示單元203,用于在觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。
[0045]所述查詢(xún)單元201,具體用于周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定是否發(fā)送完成。
[0046]以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)方法,該方法包括: 第一硬線(xiàn)程接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成; 當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令; 觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示第一硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。2.如權(quán)利要求1所述的方法,其特征在于,所述檢查上一個(gè)報(bào)文是否發(fā)送完成的方法包括:周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定上一個(gè)報(bào)文是否發(fā)送完成。3.如權(quán)利要求2所述的方法,其特征在于,所述硬線(xiàn)程多核處理器包括多個(gè)硬線(xiàn)程,每個(gè)硬線(xiàn)程執(zhí)行相應(yīng)的任務(wù),具有相應(yīng)獨(dú)立的狀態(tài)寄存器。4.一種硬線(xiàn)程多核中央處理器的報(bào)文轉(zhuǎn)發(fā)裝置,應(yīng)用于執(zhí)行轉(zhuǎn)發(fā)的硬線(xiàn)程,該裝置包括: 查詢(xún)單元,用于接收并處理完當(dāng)前報(bào)文后,檢查上一個(gè)報(bào)文是否發(fā)送完成; 觸發(fā)單元,用于當(dāng)上一個(gè)報(bào)文發(fā)送完成時(shí),觸發(fā)發(fā)送當(dāng)前報(bào)文的指令; 指示單元,用于在觸發(fā)發(fā)送當(dāng)前報(bào)文的指令之后,指示硬線(xiàn)程繼續(xù)接收下一個(gè)報(bào)文,或者在沒(méi)有接收到下一個(gè)報(bào)文時(shí),將時(shí)間讓給其他硬線(xiàn)程處理報(bào)文。5.如權(quán)利要求4所述的裝置,其特征在于,所述查詢(xún)單元,具體用于周期性查詢(xún)狀態(tài)寄存器,根據(jù)狀態(tài)寄存器的指示確定是否發(fā)送完成。
【文檔編號(hào)】H04L12/775GK105827535SQ201510003842
【公開(kāi)日】2016年8月3日
【申請(qǐng)日】2015年1月6日
【發(fā)明人】陳曉科, 李偉
【申請(qǐng)人】普天信息技術(shù)有限公司