一種報文處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種報文處理方法及裝置。
【背景技術(shù)】
[0002]隨著信息技術(shù)的不斷發(fā)展以及網(wǎng)絡(luò)通信帶寬的不斷膨脹,對通信設(shè)備處理性能的要求也越來越高,多核中央處理器(Central Processing Unit,簡稱CPU)以其性能高、通用性好和軟件可移植性好等特點,被廣泛應(yīng)用在通信設(shè)備中?,F(xiàn)有的多核CPU中,每個處理單元(核)為相互獨立的結(jié)構(gòu),各核之間在任務(wù)和資源的獲取、釋放等操作過程中存在核與核之間的競爭問題,影響多核CPU的處理性能。各個核之間處理任務(wù)的時序相互獨立,可能造成先分配給多核CPU處理的任務(wù)后處理完成,后分配給多核CPU處理的任務(wù)先處理完成的情況,從而造成同一或相關(guān)類型任務(wù)之間處理亂序的問題。
[0003]目前,通常采用軟件方式實現(xiàn)多核CPU待處理任務(wù)(如報文接收、發(fā)送、保序、流分類等)的分類和處理功能。具體的,多核CPU內(nèi)部的資源由軟件統(tǒng)一管理,采用資源互鎖的方式完成報文收發(fā)、分類和處理功能。
[0004]但是,軟件實現(xiàn)保序功能時存在的串行執(zhí)行以及內(nèi)存共享問題,將導(dǎo)致多核之間互鎖,影響多核CPU內(nèi)的并行處理能力;并且,對于實時性要求較高的功能(如收發(fā)報文、定時器等功能),采用軟件方式對多核CPU所需要處理的報文進(jìn)行調(diào)度分配及保序處理時,需要分配獨占式的處理器資源進(jìn)行處理,帶來了處理器資源浪費的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種報文處理方法及裝置,用以解決目前在對多核CPU所需要處理的報文進(jìn)行調(diào)度及保序處理時,存在CPU內(nèi)多核無法并行處理任務(wù)、任務(wù)處理速度慢以及處理器資源浪費的問題。
[0006]本發(fā)明實施例提供的具體技術(shù)方案如下:
[0007]第一方面,提供一種報文處理方法,包括:從物理端口接收待處理報文,根據(jù)所述待處理報文的報文信息生成待處理任務(wù),所述待處理任務(wù)中包括所述報文信息和序列碼;所述序列碼為根據(jù)所述物理端口的標(biāo)識以及接收所述待處理報文的順序,為所述待處理任務(wù)分配的唯一標(biāo)識;根據(jù)所述待處理任務(wù)中的報文信息以及序列碼,將所述待處理任務(wù)分配至相應(yīng)的待處理隊列中;將所述待處理隊列中的所述待處理任務(wù)調(diào)度至多核中心處理器CPU中與所述待處理隊列存在映射關(guān)系的處理單元,由所述處理單元對所述待處理任務(wù)進(jìn)行處理;接收所述多核CPU發(fā)送的已處理任務(wù),所述已處理任務(wù)中包括處理類型、已處理隊列標(biāo)識以及所述序列碼;根據(jù)所述序列碼對所述已處理任務(wù)進(jìn)行保序處理,并在保序處理后根據(jù)所述已處理任務(wù)中的處理類型,對所述已處理任務(wù)完成所述處理類型對應(yīng)的處理動作。
[0008]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,采用外部部件高速互連PCIE協(xié)議,通過直接存儲器存儲DMA方式,將所述待處理報文寫入多核CPU的內(nèi)存中,并獲取所述待處理報文在所述內(nèi)存中的存儲地址;所述待處理任務(wù)中還包括所述存儲地址;采用DMA方式,將所述待處理任務(wù)發(fā)送至多核CPU中與所述待處理隊列存在映射關(guān)系的處理單元;所述處理單元根據(jù)所述待處理任務(wù)中所述待處理報文的存儲地址獲取所述待處理報文,根據(jù)所述待處理任務(wù)中的報文信息對所述待處理報文進(jìn)行處理,得到已處理報文;將所述已處理報文存儲在所述待處理報文的存儲地址對應(yīng)的所述內(nèi)存中。
[0009]結(jié)合第一方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,當(dāng)所述已處理任務(wù)中的處理類型為發(fā)送時,根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中;若所述已處理任務(wù)的序列碼為所述已處理隊列中的最小序列碼,獲取所述已處理報文的存儲地址,并根據(jù)所述存儲地址獲取所述已處理報文,將所述已處理報文發(fā)送至所述物理端口。
[0010]結(jié)合第一方面第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,當(dāng)所述已處理任務(wù)中的處理類型為重新加入隊列時,根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中。
[0011]結(jié)合第一方面第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,當(dāng)所述已處理任務(wù)中的處理類型為刪除時,從待處理隊列中刪除所述待處理任務(wù),并指示所述多核CPU釋放所述已處理報文的存儲空間。
[0012]第二方面,提供一種報文處理裝置,包括:
[0013]接收單元,用于從物理端口接收待處理報文;生成單元,用于根據(jù)所述接收單元接收的待處理報文的報文信息生成待處理任務(wù),所述待處理任務(wù)中包括所述報文信息和序列碼;所述序列碼為根據(jù)所述物理端口的標(biāo)識以及接收所述待處理報文的順序,為所述待處理任務(wù)分配的唯一標(biāo)識;分配單元,用于根據(jù)所述生成單元生成的待處理任務(wù)中的報文信息以及序列碼,將所述待處理任務(wù)分配至相應(yīng)的待處理隊列中;調(diào)度單元,用于將所述分配單元分配完成的待處理隊列中的所述待處理任務(wù)調(diào)度至多核中心處理器CPU中與所述待處理隊列存在映射關(guān)系的處理單元,由所述處理單元對所述待處理任務(wù)進(jìn)行處理;所述接收單元,還用于接收所述多核CPU發(fā)送的已處理任務(wù),所述已處理任務(wù)中包括處理類型、已處理隊列標(biāo)識以及所述序列碼;任務(wù)處理單元,用于根據(jù)所述序列碼對所述接收單元接收到的已處理任務(wù)進(jìn)行保序處理,并在保序處理后根據(jù)所述已處理任務(wù)中的處理類型,對所述已處理任務(wù)完成所述處理類型對應(yīng)的處理動作。
[0014]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,還包括獲取單元,用于:采用外部部件高速互連PCIE協(xié)議,通過直接存儲器存儲DMA方式,將所述待處理報文寫入多核CPU的內(nèi)存中,并獲取所述待處理報文在所述內(nèi)存中的存儲地址;所述待處理任務(wù)中還包括所述存儲地址;所述任務(wù)處理單元在保序處理后根據(jù)所述已處理任務(wù)中的處理類型,對所述已處理任務(wù)完成所述處理類型對應(yīng)的處理動作時,具體包括:采用DMA方式,將所述待處理任務(wù)發(fā)送至多核CPU中與所述待處理隊列存在映射關(guān)系的處理單元;所述處理單元根據(jù)所述待處理任務(wù)中所述待處理報文的存儲地址獲取所述待處理報文,根據(jù)所述待處理任務(wù)中的報文信息對所述待處理報文進(jìn)行處理,得到已處理報文;將所述已處理報文存儲在所述待處理報文的存儲地址對應(yīng)的所述內(nèi)存中。
[0015]結(jié)合第二方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述任務(wù)處理單元,具體用于:當(dāng)所述已處理任務(wù)中的處理類型為發(fā)送時,根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中;若所述已處理任務(wù)的序列碼為所述已處理隊列中的最小序列碼,獲取所述已處理報文的存儲地址,并根據(jù)所述存儲地址獲取所述已處理報文,將所述已處理報文發(fā)送至所述物理端口。
[0016]結(jié)合第二方面第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述任務(wù)處理單元,具體用于:當(dāng)所述已處理任務(wù)中的處理類型為重新加入隊列時,根據(jù)所述已處理任務(wù)中的已處理隊列標(biāo)識以及所述序列碼,將所述已處理任務(wù)添加至所述已處理隊列標(biāo)識對應(yīng)的已處理隊列中。
[0017]結(jié)合第二方面第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述任務(wù)處理單元,具體用于:當(dāng)所述已處理任務(wù)中的處理類型為刪除時,從待處理隊列中刪除所述待處理任務(wù),并指示所述多核CPU釋放所述已處理報文的存儲空間。
[0018]本發(fā)明實施例中,根據(jù)接收到的待處理報文的報文信息生成待處理任務(wù),并根據(jù)待處理任務(wù)對應(yīng)的物理端口的標(biāo)識和接收順序為生成的待處理任務(wù)分配序列碼,以及根據(jù)待處理任務(wù)對應(yīng)的報文信息,為該待處理任務(wù)進(jìn)行分類;將分類后的待處理任務(wù)調(diào)度至多核CPU ;根據(jù)待處理任務(wù)的序列碼對多核CPU已處理任務(wù)進(jìn)行保序處理。采用本發(fā)明技術(shù)方案,由多核CPU以外的裝置實現(xiàn)報文的調(diào)度及保序功能,使多核CPU能夠亂序且并行執(zhí)行任務(wù),緩解了多核CPU內(nèi)多核之間的競爭和資源互鎖,有效提升了多核CPU的并行處理能力,此外,多核CPU并行執(zhí)行任務(wù)能夠有效提高任務(wù)處理速度,以及避免處理器資源浪費的問題。
【附圖說明】
[0019]圖1為本發(fā)明實施例中報文處理系統(tǒng)架構(gòu)示意圖;
[0020]圖2為本發(fā)明實施例中報文處理流程圖;
[0021]圖3為本發(fā)明實施例中任務(wù)結(jié)構(gòu)示意圖;
[0022]圖4為本發(fā)明實施例中為待處理任務(wù)分配序列碼示意圖;
[0023]圖5為本發(fā)明實施例中保序過程中入隊操作示意圖;
[0024]圖6為本發(fā)明實施例中保序過程中出隊操作示意圖;
[0025]圖7為本發(fā)明實施例中具體應(yīng)用場景下報文處理流程圖;
[0026]圖8為本發(fā)明實施例中報文處理裝置結(jié)構(gòu)示意圖;
[0027]圖9為本發(fā)明實施例中報文處理設(shè)備結(jié)構(gòu)示意圖。
【具體實施方式】
[0028]為了解決現(xiàn)有技術(shù)中對多核CPU所需要處理的任務(wù)進(jìn)行保序處理時,多核無法并行處理任務(wù)以及處理器資源浪費的問題。本發(fā)明實施例中,在多核CPU外部設(shè)置前置預(yù)處理器,由前置預(yù)處理器根據(jù)接收到的待處理報文的報文信息生成待處理任務(wù),根據(jù)該待處理任務(wù)對應(yīng)的物理端口的標(biāo)識和接收順序為該待處理任務(wù)分配序列碼,并根據(jù)該待處理任務(wù)對應(yīng)的報文信息,對該待處理任務(wù)進(jìn)行分類;前置預(yù)處理器將分類后的待處理任務(wù)調(diào)度至多核CPU并根據(jù)待處理任務(wù)的序列碼對多核CPU已處理任務(wù)進(jìn)行保序處理。采用本發(fā)明技術(shù)方案,由前置預(yù)處理器實現(xiàn)報文的調(diào)度及保序功能,多核CPU可以并行執(zhí)行任務(wù),各任務(wù)之間可以亂序而無需按序處理,緩