欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)包的并發(fā)處理方法及設(shè)備的制作方法

文檔序號(hào):6358998閱讀:134來(lái)源:國(guó)知局
專利名稱:一種數(shù)據(jù)包的并發(fā)處理方法及設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體的說(shuō),涉及一種數(shù)據(jù)包的并發(fā)處理方法及設(shè)備。
背景技術(shù)
目前,在ASIC(Application Specific Integrated Circuit,特殊應(yīng)用集成電路) 或者FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)的設(shè)計(jì)中,經(jīng)常需要處理各種各樣協(xié)議規(guī)定的數(shù)據(jù)包,這些數(shù)據(jù)包通常具有兩個(gè)共性一是數(shù)據(jù)包長(zhǎng)度不同;二是不同數(shù)據(jù)包可以不按照一定順序來(lái)處理。在硬件設(shè)計(jì)中,能否對(duì)這些協(xié)議數(shù)據(jù)包進(jìn)行快速高效的處理,對(duì)系統(tǒng)的性能有很大影響。目前所有不同類型的數(shù)據(jù)包共享一個(gè)大的存儲(chǔ)器,并針對(duì)不同的數(shù)據(jù)包建立各自對(duì)應(yīng)的單向鏈表,將各自的消息類按按順序串起來(lái);同時(shí)建立一個(gè)地址池,所述地址池用于對(duì)共享存儲(chǔ)器的地址進(jìn)行維護(hù),其中,用一個(gè)空閑鏈表將共享存儲(chǔ)器中所有的空閑地址串起來(lái),用于指示共享存儲(chǔ)器中的空閑位置;其中,基于地址池對(duì)所有鏈表進(jìn)行維護(hù)操作。當(dāng)有消息要寫入共享存儲(chǔ)器時(shí),首先從地址池中的空閑鏈表頭取出一個(gè)空閑地址作為寫入共享存儲(chǔ)器的地址,并將此空閑地址寫入到地址池中對(duì)應(yīng)消息類的鏈表尾;當(dāng)有消息要讀出共享存儲(chǔ)器時(shí),首先從地址池中對(duì)應(yīng)消息類的鏈表頭取出一個(gè)消息地址作為讀出共享緩沖器的地址,并將此地址寫入到地址池中的空閑鏈表尾。在實(shí)現(xiàn)本發(fā)明過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題由于現(xiàn)有技術(shù)中所有鏈表的操作均是基于一個(gè)地址池作出的,由于地址池的端口有限,能夠支持同時(shí)對(duì)地址池的雙讀雙寫,也就是說(shuō)只能支持同時(shí)進(jìn)行讀取一個(gè)消息和寫入一個(gè)消息的操作。當(dāng)一個(gè)消息要寫入共享存儲(chǔ)器時(shí),對(duì)地址池分別做一次讀操作和寫操作;當(dāng)一個(gè)消息要讀出共享存儲(chǔ)器時(shí),也會(huì)分別對(duì)地址池做一次讀操作和寫操作,因此,現(xiàn)有方案無(wú)法實(shí)現(xiàn)共享存儲(chǔ)器中同時(shí)讀取兩個(gè)消息和寫入兩個(gè)消息,消息的讀寫速度受到極大的限制,從而影響系統(tǒng)的性能。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)據(jù)包的并發(fā)處理方法及設(shè)備,通過(guò)提高數(shù)據(jù)包的讀寫速度來(lái)提升系統(tǒng)性能。本發(fā)明實(shí)施例一方面提供了一種數(shù)據(jù)包的并發(fā)處理方法,包括在地址池中采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址,所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO;在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的地址FIFO中。本發(fā)明實(shí)施例另一方面提供了一種數(shù)據(jù)包的并發(fā)處理設(shè)備,包括配置處理模塊,用于采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址,所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;消息控制模塊,用于在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述配置處理模塊配置的所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的所述配置處理模塊建立的所述地址FIFO中。由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,通過(guò)在地址池中采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址;并針對(duì)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),兩個(gè)單向空閑鏈表可以分別向兩個(gè)消息提供寫入共享存儲(chǔ)器的地址,并將每個(gè)消息的寫入地址更新到對(duì)應(yīng)的地址FIFO中,解決了現(xiàn)有方案中只能支持同時(shí)讀取和寫入一個(gè)消息的技術(shù)問(wèn)題,實(shí)現(xiàn)了共享存儲(chǔ)器中對(duì)兩個(gè)消息的同時(shí)讀取和寫入,能夠提高消息的讀寫速度,從而有利于進(jìn)一步提高系統(tǒng)的性能。


圖1為本發(fā)明實(shí)施例一種數(shù)據(jù)包的并發(fā)處理方法流程圖;圖2為本發(fā)明實(shí)施例的一種應(yīng)用場(chǎng)景圖;圖3為本發(fā)明實(shí)施例的另一種應(yīng)用場(chǎng)景圖;圖4為本發(fā)明實(shí)施例一種數(shù)據(jù)包的并發(fā)處理設(shè)備結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提出了基于鏈表和FIF0(Fisrt In First Out,先進(jìn)先出隊(duì)列)管理地址的一種數(shù)據(jù)包的并發(fā)處理方法及設(shè)備,具體是采用一個(gè)共享存儲(chǔ)器緩存不同類型、不同長(zhǎng)度的數(shù)據(jù)包,采用地址池中至少兩個(gè)單向空閑鏈表和多個(gè)地址FIFO,對(duì)共享存儲(chǔ)器中消息的讀出和寫入過(guò)程進(jìn)行精確控制,實(shí)現(xiàn)了共享存儲(chǔ)器中對(duì)至少兩個(gè)消息的同時(shí)讀出和寫入。為了便于理解本發(fā)明的技術(shù)方案,下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)一步說(shuō)明。如圖1所示,本發(fā)明實(shí)施例提出了一種數(shù)據(jù)包的并發(fā)處理方法,技術(shù)方案包括101、在地址池中采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址,所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;102、獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;103、在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的地址FIFO中。在本發(fā)明的一個(gè)可選實(shí)施例中,所述方法還可以包括在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址,并分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址更新到所述至少兩個(gè)單向空閑鏈表中。具體的說(shuō),如圖2所示為本發(fā)明實(shí)施例所述方法的應(yīng)用場(chǎng)景圖如圖所示,共享存儲(chǔ)器是一個(gè)大的雙端口緩沖存儲(chǔ)器(buffer),用來(lái)存儲(chǔ)不同類型、不同長(zhǎng)度的數(shù)據(jù)包;其中,two free^hains為本發(fā)明實(shí)施例所述的兩個(gè)單向空閑鏈表; MsgO Addr FIFO. . . MsgN Addr FIFO為本發(fā)明實(shí)施例所述的分別針對(duì)不同消息類型建立的地址先進(jìn)先出隊(duì)列FIFO,用于分別存儲(chǔ)該類型在共享存儲(chǔ)器中的消息地址。Addr Pool為地址池,本發(fā)明實(shí)施例所述地址池與背景技術(shù)部分所述地址池不同,本發(fā)明實(shí)施例中所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址,并采用兩個(gè)單向空閑鏈表(twofree^hains)來(lái)存儲(chǔ)所述空閑地址;地址池是一個(gè)雙端口緩沖存儲(chǔ)器 (buffer);在上述步驟101之前,所述方法還可以包括建立至少兩個(gè)單向空閑鏈表,其中,每個(gè)鏈表都具有頭指針(HeadPtr)和尾指針 (TailPtr);所述單向空閑鏈表包括兩部分內(nèi)容,一部分是共享存儲(chǔ)器的空閑地址,如圖 twofree_chains中右部分;另一部分是用于指向下一個(gè)可用空閑地址的指針部分,如圖 twofree_chains中左部分;將頭指針和尾指針?lè)謩e指向所述單向空閑鏈表的頭和尾。通過(guò)上述這種單向空閑鏈表的形式,可以把共享存儲(chǔ)器中所有的空閑地址鏈接起來(lái)。需要說(shuō)明的是,本發(fā)明實(shí)施例中兩個(gè)單向空閑鏈表,通常采用將共享存儲(chǔ)器中的所有空閑地址均分的方式存儲(chǔ)所述空閑地址。在本發(fā)明的一個(gè)可選實(shí)施例中,在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),步驟103的具體過(guò)程包括分別從所述至少兩個(gè)單向空閑鏈表的表頭中取出空閑地址,作為所述至少兩個(gè)消息寫入共享存儲(chǔ)器的空閑地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址,寫入到與所述消息對(duì)應(yīng)的地址FIFO 的表尾。具體的說(shuō),圖2所示,在接收到要同時(shí)寫入共享存儲(chǔ)器中的兩種不同類型的消息 (Msg inO和Msg inl)時(shí),分別從兩個(gè)單向空閑鏈表的表頭中取出一個(gè)空閑地址,作為寫入共享存儲(chǔ)器的空閑地址(WrAddr_a和WrAddr_b);并將所述寫入共享存儲(chǔ)器的空閑地址,分別寫入到與所述消息對(duì)應(yīng)的地址 FIFO (MsgO Addr FIFO 和 Msgl Addr FIFO)的表尾。通過(guò)上述實(shí)現(xiàn)方式,不僅實(shí)現(xiàn)了兩個(gè)消息同時(shí)寫入共享存儲(chǔ)器中的發(fā)明目的,同時(shí)也實(shí)現(xiàn)了共享存儲(chǔ)器中對(duì)于兩種不同類型消息的同時(shí)寫入。在本發(fā)明的一個(gè)可選實(shí)施例中,在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),所述步驟包括分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO的表頭中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址,分別更新到兩個(gè)空閑鏈表的表尾。具體的說(shuō),圖2所示,在接收到要同時(shí)讀出共享存儲(chǔ)器的至少兩種不同類型的消息(Msg OutO 禾口 Msg Outl)時(shí),從兩個(gè)消息對(duì)應(yīng)的地址 FIFO (MsgOAddr FIFO 禾口 Msgl Addr FIFO)的表頭中,分別取出所述消息的地址(RdAddr_a和RdAddr_b),作為該消息讀出共享存儲(chǔ)器的地址;并將所述消息讀出共享存儲(chǔ)器的地址(RdAddr_a和RdAddr_b),分別更新到地址池中兩個(gè)空閑鏈表尾部??蛇x的,所述方法還包括所述至少兩個(gè)單向空閑鏈表之間可動(dòng)態(tài)平衡長(zhǎng)度,進(jìn)一步包括在接收到要寫入共享存儲(chǔ)器中的一個(gè)消息時(shí),根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較長(zhǎng)的單向空閑鏈表提供所述消息寫入共享存儲(chǔ)器的空閑地址;在接收到要讀出共享存儲(chǔ)器中的一個(gè)消息時(shí),從所述消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,并根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較短的單向空閑鏈表,將所述讀出共享存儲(chǔ)器的地址更新到所述單向空閑鏈表中。本發(fā)明實(shí)施例解決了現(xiàn)有技術(shù)中,由于建立的所有鏈表都是基于一個(gè)地址池做讀出和寫入操作,地址池的端口為雙端口,只可以支持同時(shí)雙讀雙寫;因此當(dāng)一個(gè)消息寫入共享存儲(chǔ)器時(shí),會(huì)對(duì)地址池分別做一次讀操作(從一個(gè)空閑鏈表中讀取一個(gè)空閑地址作為寫入共享存儲(chǔ)器的地址)和寫操作(將該寫入共享存儲(chǔ)器的地址寫入到地址池中對(duì)應(yīng)消息類的鏈表尾);當(dāng)一個(gè)消息讀出時(shí),也會(huì)對(duì)地址池做一次讀操作(從地址池中對(duì)應(yīng)消息類的鏈表中取出該消息的地址作為讀出共享存儲(chǔ)器的地址)和寫操作(將讀出共享存儲(chǔ)器的地址寫入到地址池中的空閑鏈表中);這樣當(dāng)有一個(gè)消息寫入,一個(gè)消息讀出時(shí),已經(jīng)對(duì)地址池做出了兩次讀操作和寫操作,因此也就不能滿足同時(shí)讀取兩個(gè)消息和同時(shí)寫入兩個(gè)消息的需求了。本發(fā)明實(shí)施例中由于針對(duì)不同消息類型建立了對(duì)應(yīng)的地址FIFO,并在地址池中配置了兩個(gè)單向空閑鏈表,當(dāng)接收到有兩條消息要寫入共享存儲(chǔ)器的指令時(shí),從地址池中兩個(gè)空閑鏈表中分別讀出一個(gè)空閑地址,并將讀出的空閑地址分別寫入與該消息對(duì)應(yīng)的地址 FIFO中,在兩條消息要同時(shí)寫入共享存儲(chǔ)器的場(chǎng)景下,對(duì)地址池只做出了兩次讀操作,因此,在兩條消息同時(shí)寫入共享存儲(chǔ)器的場(chǎng)景下,還可以提供兩條消息同時(shí)讀出共享存儲(chǔ)器的功能,從而解決現(xiàn)有技術(shù)存在不能實(shí)現(xiàn)同時(shí)讀取兩個(gè)消息和同時(shí)寫入兩個(gè)消息的的技術(shù)問(wèn)題。如圖3所示,以htel QPI 1. 1協(xié)議為例,對(duì)本發(fā)明實(shí)施例的技術(shù)方案的實(shí)現(xiàn)過(guò)程進(jìn)行說(shuō)明Intel QPI 1. 1協(xié)議中定義有6種消息類型,分別是SNP (snoop,監(jiān)聽(tīng)),HOM(home, 本地),DRS (data response,數(shù)據(jù)返回),NDR (none data response,無(wú)數(shù)據(jù)返回),NCB (none coherence bypass,非一致性旁路)禾口 NCS (none coherence standard,非一致性標(biāo)準(zhǔn));其
7中,SNP,H0M禾口 NDR的長(zhǎng)度為1個(gè)flit (一個(gè)flit是80bit) ;DRS和NCB的長(zhǎng)度為9 11 個(gè)flit ;NCS的長(zhǎng)度為1 3個(gè)flit ;共享緩沖器的位寬為80bit的雙端口 RAM ;系統(tǒng)初始化時(shí),在地址池中建立至少兩個(gè)單向空閑鏈表(twofree_chains) 來(lái)存儲(chǔ)共享存儲(chǔ)器中的空閑地址;其中,每個(gè)鏈表都具有頭指針(HeadPtr)和尾指針 (TailPtr);所述單向空閑鏈表包括共享存儲(chǔ)器的空閑地址以及用于指向下一個(gè)可用空閑地址的指針部分;并將頭指針和尾指針?lè)謩e指向所述單向空閑鏈表的頭和尾;具體如圖3 所示;針對(duì)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;具體的, 建立與消息類型SNP,HOM, DRS, NDR, NCB和NCS對(duì)應(yīng)的地址FIFO,具體如圖3所示;當(dāng)接收到要同時(shí)寫入共享存儲(chǔ)器的SNP和DRS兩種不同類型的消息時(shí),SNP的消息從channel_in_a通道寫入,DRS的消息從channel_in_b通道寫入;地址池中兩個(gè)空閑鏈表分別提供一個(gè)空閑地址作為SNP和DRS消息的寫入共享存儲(chǔ)器的地址,并將該地址分別寫入到與SNP和DRS對(duì)應(yīng)的地址FIFO中;其中,因?yàn)镾NP消息的長(zhǎng)度為1個(gè)flit,則空閑鏈表只需提供一個(gè)空閑地址即可滿足寫入要求,而DRS消息的長(zhǎng)度為9 11個(gè)flit,空閑鏈表需要連續(xù)給出空閑地址直到 DRS消息全部寫入共享存儲(chǔ)器中;在SNP消息寫入完成時(shí),而DRS消息還在寫入的過(guò)程中, 這時(shí)Channel_in_a通道空閑,可以應(yīng)用此通道繼續(xù)寫入其他類型的消息;當(dāng)接收到要同時(shí)讀出共享存儲(chǔ)器的NDR和HOM兩種不同類型的消息時(shí),NDR的消息從channel_out_a通道讀出,HOM的消息從channel_out_b通道讀出; NDR消息和HOM消息對(duì)應(yīng)的地址FIFO分別給出該消息的地址作為讀出共享存儲(chǔ)器的地址,因?yàn)镹DR消息和HOM消息的長(zhǎng)度都為1個(gè)flit,則NDR消息和HOM消息對(duì)應(yīng)的地址 FIFO只需要給出一個(gè)消息地址即可滿足讀取要求,并將該消息地址寫入到地址池中的兩個(gè)空閑鏈表的尾部,從而完成N DR和HOM兩種不同類型消息在共享存儲(chǔ)器中的同時(shí)讀出。如圖4所示,本發(fā)明實(shí)施例還提出了一種數(shù)據(jù)包的并發(fā)處理設(shè)備,通過(guò)如下模塊實(shí)現(xiàn)配置處理模塊41,用于采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址, 所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;消息控制模塊42,用于在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí), 由所述配置處理模塊配置的所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的所述配置處理模塊建立的所述地址FIFO中。在本發(fā)明的一個(gè)可選實(shí)施例中,所述消息控制模42塊還用于在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址, 并分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址更新到所述至少兩個(gè)單向空閑鏈表中。在本發(fā)明的一個(gè)可選實(shí)施例中,所述配置處理模塊41具體用于建立至少兩個(gè)單向空閑鏈表;所述單向空閑鏈表包括共享存儲(chǔ)器的空閑地址以及指向下一個(gè)可用空閑地址的指針部分;將頭指針和尾指針?lè)謩e指向所述單向空閑鏈表的頭和尾。在本發(fā)明的一個(gè)可選實(shí)施例中,所述消息控制模塊42具體用于在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從所述至少兩個(gè)單向空閑鏈表的表頭中取出空閑地址,作為所述至少兩個(gè)消息寫入共享存儲(chǔ)器的空閑地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址,寫入到與所述消息對(duì)應(yīng)的地址FIFO 的表尾;在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO的表頭中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址,分別更新到兩個(gè)空閑鏈表的表尾。在本發(fā)明的一個(gè)可選實(shí)施例中,所述消息控制模塊還用于在接收到要寫入共享存儲(chǔ)器中的一個(gè)消息時(shí),根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較長(zhǎng)的單向空閑鏈表提供所述消息寫入共享存儲(chǔ)器的空閑地址;在接收到要讀出共享存儲(chǔ)器中的一個(gè)消息時(shí),從所述消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,并根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較短的單向空閑鏈表,將所述讀出共享存儲(chǔ)器的地址更新到所述單向空閑鏈表中。在本發(fā)明的一個(gè)可選實(shí)施例中,所述設(shè)備適用于不同消息類型下,對(duì)兩個(gè)消息的同時(shí)讀取和寫入,還適用于相同消息類型下,一個(gè)消息的同時(shí)讀取和寫入共享存儲(chǔ)器的應(yīng)用場(chǎng)景。需要說(shuō)明的是,本發(fā)明實(shí)施例一種數(shù)據(jù)包的并發(fā)處理設(shè)備是根據(jù)圖1所示的方法實(shí)施例直接獲得的,包含與所述圖1方法實(shí)施例相同的技術(shù)特征,其中,本發(fā)明實(shí)施例中各功能模塊實(shí)現(xiàn)的方案與圖1方法實(shí)施例中各步驟記載的技術(shù)方案對(duì)應(yīng),具體請(qǐng)參見(jiàn)圖1實(shí)施例中的描述,在此不做贅述。綜上所述,本發(fā)明實(shí)施例實(shí)現(xiàn)了共享存儲(chǔ)器中兩個(gè)消息的同時(shí)讀出與寫入,不僅適用于,也適用于兩個(gè)不同類型消息的應(yīng)用場(chǎng)景,還適用于一個(gè)消息的同時(shí)讀取和寫入共享存儲(chǔ)器的應(yīng)用場(chǎng)景。本發(fā)明實(shí)施例可應(yīng)用在各種不同類型、不同長(zhǎng)度數(shù)據(jù)包的存儲(chǔ)設(shè)計(jì)中,不僅可以對(duì)數(shù)據(jù)包實(shí)現(xiàn)亂序并發(fā)的讀寫,也可按順序讀寫;不僅僅可在ASIC或FPGA實(shí)現(xiàn)時(shí)使用,在其他資源比較緊張的情況下也比較實(shí)用,可提高資源利用率和系統(tǒng)性能,尤其是在數(shù)據(jù)包長(zhǎng)度相差較大的情況下。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory, RAM)等。
權(quán)利要求
1.一種數(shù)據(jù)包的并發(fā)處理方法,其特征在于,包括在地址池中采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址,所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的地址FIFO中。
2.根據(jù)權(quán)利要求1所述的處理方法,其特征在于,所述方法還包括在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址,并分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址更新到所述至少兩個(gè)單向空閑鏈表中。
3.根據(jù)權(quán)利要求2所述的處理方法,其特征在于,所述方法還包括建立至少兩個(gè)單向空閑鏈表;所述單向空閑鏈表包括共享存儲(chǔ)器中的空閑地址以及指向下一個(gè)可用空閑地址的指針部分;將頭指針和尾指針?lè)謩e指向所述單向空閑鏈表的頭和尾。
4.根據(jù)權(quán)利要求3所述的處理方法,其特征在于,在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述至少兩個(gè)單向空閑鏈表分別為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的地址FIFO中,包括分別從所述至少兩個(gè)單向空閑鏈表的表頭中取出空閑地址,作為所述至少兩個(gè)消息寫入共享存儲(chǔ)器的空閑地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址,寫入到與所述消息對(duì)應(yīng)的地址FIFO的表尾。
5.根據(jù)權(quán)利要求3所述的處理方法,其特征在于,在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址,并分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址更新到所述至少兩個(gè)單向空閑鏈表中,包括分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO的表頭中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址,分別更新到兩個(gè)空閑鏈表的表尾。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括 所述至少兩個(gè)單向空閑鏈表之間動(dòng)態(tài)平衡長(zhǎng)度;進(jìn)一步包括在接收到要寫入共享存儲(chǔ)器中的一個(gè)消息時(shí),根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較長(zhǎng)的單向空閑鏈表提供所述消息寫入共享存儲(chǔ)器的空閑地址;在接收到要讀出共享存儲(chǔ)器中的一個(gè)消息時(shí),從所述消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,并根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較短的單向空閑鏈表,將所述讀出共享存儲(chǔ)器的地址更新到所述單向空閑鏈表中。
7.根據(jù)權(quán)利要求1-6中任一所述的處理方法,其特征在于,所述方法適用于不同消息類型下,對(duì)兩個(gè)消息的同時(shí)讀取和寫入;以及,相同消息類型下,一個(gè)消息的同時(shí)讀取和寫入。
8.一種數(shù)據(jù)包的并發(fā)處理設(shè)備,其特征在于,包括配置處理模塊,用于采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址,所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO ;消息控制模塊,用于在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述配置處理模塊配置的所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的所述配置處理模塊建立的所述地址FIFO中。
9.根據(jù)權(quán)利要求8所述的處理設(shè)備,其特征在于,所述消息控制模塊還用于在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址,并分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址更新到所述至少兩個(gè)單向空閑鏈表中。
10.根據(jù)權(quán)利要求9所述的處理設(shè)備,其特征在于,所述配置處理模塊具體用于建立至少兩個(gè)單向空閑鏈表;所述單向空閑鏈表包括共享存儲(chǔ)器的空閑地址以及指向下一個(gè)可用空閑地址的指針部分;將頭指針和尾指針?lè)謩e指向所述單向空閑鏈表的頭和尾。
11.根據(jù)權(quán)利要求10所述的處理設(shè)備,其特征在于,所述消息控制模塊具體用于在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從所述至少兩個(gè)單向空閑鏈表的表頭中取出空閑地址,作為所述至少兩個(gè)消息寫入共享存儲(chǔ)器的空閑地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址,寫入到與所述消息對(duì)應(yīng)的地址FIFO的表尾;在接收到要同時(shí)讀出所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),分別從與所述至少兩個(gè)消息對(duì)應(yīng)的地址FIFO的表頭中取出所述消息的地址,作為所述消息讀出所述共享存儲(chǔ)器的地址;分別將與所述至少兩個(gè)消息對(duì)應(yīng)的讀出所述共享存儲(chǔ)器的地址,分別更新到兩個(gè)空閑鏈表的表尾。
12.根據(jù)權(quán)利要求9所述的處理設(shè)備,其特征在于,所述消息控制模塊還用于在接收到要寫入共享存儲(chǔ)器中的一個(gè)消息時(shí),根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較長(zhǎng)的單向空閑鏈表提供所述消息寫入共享存儲(chǔ)器的空閑地址;在接收到要讀出共享存儲(chǔ)器中的一個(gè)消息時(shí),從所述消息對(duì)應(yīng)的地址FIFO中取出所述消息的地址,并根據(jù)所述單向空閑鏈表的長(zhǎng)度選擇較短的單向空閑鏈表,將所述讀出共享存儲(chǔ)器的地址更新到所述單向空閑鏈表中。
13.根據(jù)權(quán)利要求8-12中任一所述的處理設(shè)備,其特征在于,所述設(shè)備適用于不同消息類型下,對(duì)兩個(gè)消息的同時(shí)讀取和寫入;以及,相同消息類型下,一個(gè)消息的同時(shí)讀取和寫入。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)包的并發(fā)處理方法及設(shè)備,該方法包括在地址池中采用至少兩個(gè)單向空閑鏈表存儲(chǔ)共享存儲(chǔ)器的空閑地址,所述地址池用于存儲(chǔ)共享存儲(chǔ)器中所有的空閑地址;獲取所述共享存儲(chǔ)器的消息類型,并根據(jù)所述共享存儲(chǔ)器中的消息類型建立對(duì)應(yīng)的地址先進(jìn)先出隊(duì)列FIFO;在接收到要同時(shí)寫入所述共享存儲(chǔ)器的至少兩個(gè)消息時(shí),由所述至少兩個(gè)單向空閑鏈表為所述至少兩個(gè)消息分別提供寫入共享存儲(chǔ)器的空閑地址,并將分別與所述至少兩個(gè)消息對(duì)應(yīng)的所述地址更新到所述消息對(duì)應(yīng)的地址FIFO中。本發(fā)明技術(shù)方案的實(shí)現(xiàn),能夠解決現(xiàn)有技術(shù)中無(wú)法實(shí)現(xiàn)共享存儲(chǔ)器中對(duì)兩個(gè)消息的同時(shí)讀取和寫入。
文檔編號(hào)G06F5/06GK102395958SQ201180001485
公開(kāi)日2012年3月28日 申請(qǐng)日期2011年8月26日 優(yōu)先權(quán)日2011年8月26日
發(fā)明者侯新宇, 常勝, 楊寶川, 王工藝 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
罗平县| 四平市| 大悟县| 阿鲁科尔沁旗| 石家庄市| 柳林县| 通州市| 锡林浩特市| 临邑县| 酉阳| 连江县| 江阴市| 兰坪| 泗阳县| 凤庆县| 维西| 永靖县| 枣强县| 屯门区| 门头沟区| 土默特左旗| 金溪县| 平陆县| 江油市| 德钦县| 临海市| 额济纳旗| 神木县| 锡林浩特市| 武清区| 南汇区| 江永县| 清原| 灵璧县| 安吉县| 秭归县| 鸡西市| 吐鲁番市| 楚雄市| 成安县| 登封市|