專利名稱:異構(gòu)平臺(tái)間數(shù)據(jù)聯(lián)動(dòng)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更為具體地,涉及一種異構(gòu)平臺(tái)間基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法和裝置。
背景技術(shù):
FPGA(Field-programmable gate array),即現(xiàn)場(chǎng)可編程門(mén)陣列,作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn),由于FPGA具備良好的性能指標(biāo)以及一定的可編程能力并且功耗和成本也相對(duì)較低,被廣泛應(yīng)用在通信、數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器、工業(yè)控制、軍事和航空等眾多領(lǐng)域。但FPGA在控制成本的前提下,通常不能實(shí)現(xiàn)過(guò)于復(fù)雜的運(yùn)算邏輯。在進(jìn)行數(shù)據(jù)處理時(shí),X86架構(gòu)平臺(tái)的優(yōu)勢(shì)在于具備很強(qiáng)的可擴(kuò)展性,也就是運(yùn)行在 X86架構(gòu)平臺(tái)上的軟件能支持很復(fù)雜的運(yùn)算邏輯,但X86架構(gòu)平臺(tái)的運(yùn)算能力通常不會(huì)很高,從而限制其向高端市場(chǎng)發(fā)展。鑒于上述兩種異構(gòu)平臺(tái)的各自特點(diǎn),現(xiàn)有技術(shù)中提出了一種兩種異構(gòu)平臺(tái)結(jié)合的架構(gòu)體系FPGA+X86結(jié)合的架構(gòu)體系。圖I示出了在現(xiàn)有的FPGA+X86結(jié)合的架構(gòu)體系中,兩種異構(gòu)平臺(tái)間數(shù)據(jù)交互的體系圖。如圖I所示,在該體系中,X86平臺(tái)的邏輯處理必須在獲得共享信息的基礎(chǔ)上,才能繼續(xù)進(jìn)行,由此兩種異構(gòu)平臺(tái)間的數(shù)據(jù)交互需要同步。這部分共享信息在大多數(shù)轉(zhuǎn)發(fā)下是FPGA使用,跨平臺(tái)查詢信息越少發(fā)生,對(duì)整體性能影響越小。為此,數(shù)據(jù)集通常存放在FPGA上。在這種情況下,X86系統(tǒng)何時(shí)需要該部分?jǐn)?shù)據(jù)FPGA并不知曉,因此大部分?jǐn)?shù)據(jù)的獲取都是由X86系統(tǒng)發(fā)起的?,F(xiàn)有的X86系統(tǒng)和FPGA之間的同步數(shù)據(jù)交互過(guò)程如下X86系統(tǒng)通過(guò)中斷異常發(fā)起操作指令,F(xiàn)PGA對(duì)該操作指令進(jìn)行響應(yīng),并且執(zhí)行該操作指令,最終FPGA將操作的執(zhí)行結(jié)果返回給X86系統(tǒng)。此后,X86系統(tǒng)才能繼續(xù)進(jìn)行后續(xù)復(fù)雜邏輯的處理。然而,由于這個(gè)邏輯路徑非常長(zhǎng),導(dǎo)致非常損耗整個(gè)系統(tǒng)的性能。因此,在FPGA+X86結(jié)合的架構(gòu)體系中,如何高效處理兩個(gè)異構(gòu)平臺(tái)間關(guān)聯(lián)數(shù)據(jù)的同步,以保證兩個(gè)體系中共享數(shù)據(jù)集的一致性,是FPGA+X86結(jié)合的架構(gòu)體系的關(guān)鍵技術(shù),也是當(dāng)前困擾該架構(gòu)體系的技術(shù)瓶頸。
發(fā)明內(nèi)容
鑒于上述,本發(fā)明的目的在于提供一種異構(gòu)平臺(tái)間的基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法及裝置,該方法及裝置能夠確保X86架構(gòu)下的第一平臺(tái)(即,X86架構(gòu)平臺(tái))同步獲取數(shù)據(jù)而無(wú)需等待FPGA架構(gòu)下的第二平臺(tái)(B卩,F(xiàn)PGA架構(gòu)平臺(tái))的反饋,從而縮短第一平臺(tái)的處理時(shí)間。根據(jù)本發(fā)明的一個(gè)方面,提供了一種基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法,用于X86架構(gòu)下的第一平臺(tái)、FPGA架構(gòu)下的第二平臺(tái)的數(shù)據(jù)交互,所述第二平臺(tái)存儲(chǔ)共享信息,該方法由所述第一平臺(tái)中的數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行,該數(shù)據(jù)聯(lián)動(dòng)模塊包括用于存儲(chǔ)共享信息副本的對(duì)應(yīng)緩存器,所述方法包括判斷所接收的事件的來(lái)源是第一平臺(tái)還是第二平臺(tái);在所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理;在所接收到的事件是來(lái)自第一平臺(tái)的至少包括對(duì)第一平臺(tái)的數(shù)據(jù)包進(jìn)行邏輯運(yùn)算處理后得到的共享信息操作指令的信息時(shí),向所述第一平臺(tái)返回共享信息操作指令完成消息,同時(shí)向所述第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在所述第二平臺(tái)完成該共享信息操作。在上述方面的一個(gè)或多個(gè)示例中,所述方法還可以包括在第二平臺(tái)完成該共享信息操作后,根據(jù)第二平臺(tái)返回的共享信息操作結(jié)果,對(duì)第一平臺(tái)的對(duì)應(yīng)緩存器中的共享信息副本進(jìn)行同步處理。在上述方面的一個(gè)或多個(gè)示例中,在所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理可以包括在所接收的事件是來(lái)自第二平臺(tái)時(shí),在所述共享信息副本的對(duì)應(yīng)緩存器中查找是否存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù) 包的共享信息副本;在存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),更新該共享信息副本的老化超時(shí)時(shí)間,并將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理,或者在不存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理。在上述方面的一個(gè)或多個(gè)示例中,在不存在共享信息副本時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理可以包括在不存在共享信息副本時(shí),查詢從第二平臺(tái)接收的事件中是否包含指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記;以及在所接收的事件中存在指示所述第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包括的共享信息的標(biāo)記時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理,同時(shí)從第二平臺(tái)獲取該共享信息并存儲(chǔ)到所述共享信息副本的對(duì)應(yīng)緩存器中,或者在所接收的事件中不存在指示所述第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包括的共享信息的標(biāo)記時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理。在上述方面的一個(gè)或多個(gè)示例中,所述共享信息操作指令包括共享信息創(chuàng)建、共享信息更新、共享信息刪除和/或該事件關(guān)聯(lián)的共享信息副本查找。在上述方面的一個(gè)或多個(gè)示例中,所述方法還可以包括遍歷所述第一平臺(tái)的對(duì)應(yīng)緩存器中的共享信息副本,對(duì)共享信息副本進(jìn)行老化超時(shí)處理,其中,在共享信息副本的老化超時(shí)時(shí)間已經(jīng)期滿時(shí),從所述對(duì)應(yīng)緩存器中刪除該共享信息副本。在上述方面的一個(gè)或多個(gè)不例中,所述共享信息是會(huì)話表、路由表,權(quán)限表或策略表。根據(jù)本發(fā)明的另一方面,提供了一種基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)裝置,用于X86架構(gòu)下的第一平臺(tái)、FPGA架構(gòu)下的第二平臺(tái)的數(shù)據(jù)交互,所述第二平臺(tái)存儲(chǔ)共享信息,該數(shù)據(jù)聯(lián)動(dòng)裝置包括緩存器,用于存儲(chǔ)共享信息副本;判斷單元,用于判斷所接收的事件的來(lái)源是第一平臺(tái)還是第二平臺(tái);事件處理單元,用于在所述判斷單元判斷為所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行運(yùn)算邏輯處理,或者在所接收到的信息是來(lái)自第一平臺(tái)的至少包括對(duì)所述第一平臺(tái)的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令的信息時(shí),向所述第一平臺(tái)返回共享信息操作指令完成消息,同時(shí)向所述第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在所述第二平臺(tái)完成該共享信息操作。在上述方面的一個(gè)或多個(gè)示例中,所述數(shù)據(jù)聯(lián)動(dòng)裝置還可以包括共享信息副本同步單元,用于在第二平臺(tái)完成該共享信息操作后,根據(jù)第二平臺(tái)返回的共享信息操作結(jié)果,對(duì)所述緩存器中的共享信息副本進(jìn)行同步處理。在上述方面的一個(gè)或多個(gè)示例中,所述事件處理單元可以包括共享信息副本查找模塊,用于在所接收的事件是來(lái)自所述第二平臺(tái)時(shí),在所述緩存器中查找是否存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本;以及更新模塊,用于在存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),更新該共享信息副本的老化超時(shí)時(shí)間。在上述方面的一個(gè)或多個(gè)示例中,所述事件處理單元可以包括標(biāo)記查詢模塊,用于在不存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),查詢從第二平臺(tái)接收的事件中是否包含指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記;共享信息獲取模塊,用于在從第二平臺(tái)接收的事件中存在指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記時(shí),從第二平臺(tái)獲取該共享信息;以及共享信息存儲(chǔ)模塊,用于 將所獲取的共享信息存儲(chǔ)到所述緩存器中。在這種情況下,所述事件處理單元還被配置為無(wú)論標(biāo)記查詢模塊是否查詢到所述標(biāo)記,都將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行運(yùn)算邏輯處理。在上述方面的一個(gè)或多個(gè)示例中,所述數(shù)據(jù)聯(lián)動(dòng)裝置還可以包括老化超時(shí)處理單元,用于遍歷所述緩存器中的共享信息副本,對(duì)共享信息副本進(jìn)行老化超時(shí)處理,其中,在共享信息副本的老化超時(shí)時(shí)間已經(jīng)期滿時(shí),從所述緩存器中刪除該共享信息副本。利用上述基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法及裝置,可以通過(guò)在X86架構(gòu)下的第一平臺(tái)中設(shè)置數(shù)據(jù)聯(lián)動(dòng)模塊,使得在從第一平臺(tái)中接收到包括對(duì)數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令(例如,會(huì)話表操作指令)時(shí),數(shù)據(jù)聯(lián)動(dòng)模塊向第一平臺(tái)返回共享信息操作指令完成消息,并且同時(shí)向FPGA架構(gòu)下的第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令來(lái)在第二平臺(tái)中完成對(duì)應(yīng)的共享信息操作,由此確保第一平臺(tái)同步獲取數(shù)據(jù)而無(wú)需等待第二平臺(tái)的反饋,從而縮短第一平臺(tái)的處理時(shí)間。為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個(gè)或多個(gè)方面包括后面將詳細(xì)說(shuō)明并在權(quán)利要求中特別指出的特征。下面的說(shuō)明以及附圖詳細(xì)說(shuō)明了本發(fā)明的某些示例性方面。然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明旨在包括所有這些方面以及它們的等同物。
根據(jù)下述參照附圖進(jìn)行的詳細(xì)描述,本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)將變得更加顯而易見(jiàn)。在附圖中圖I示出了在X86/FPGA架構(gòu)平臺(tái)結(jié)合的架構(gòu)體系中的數(shù)據(jù)交互的體系圖;圖2示出了根據(jù)本發(fā)明的X86/FPGA架構(gòu)平臺(tái)結(jié)合的架構(gòu)體系中的數(shù)據(jù)交互的體系圖;圖3示出了根據(jù)本發(fā)明的數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的方法的一個(gè)示例的流程圖;圖4示出了根據(jù)本發(fā)明的數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的方法的另一示例的流程圖,在該示例中,采用會(huì)話表作為共享信息;
圖5示出了根據(jù)本發(fā)明的老化超時(shí)處理的流程圖;圖6示出了根據(jù)本發(fā)明的數(shù)據(jù)聯(lián)動(dòng)裝置的配置的方框圖;圖7示出了圖6中的事件處理單元的一個(gè)示例的結(jié)構(gòu)的方框圖;和圖8示出了根據(jù)本發(fā)明的異構(gòu)平臺(tái)數(shù)據(jù)聯(lián)動(dòng)系統(tǒng)的方框圖。在所有附圖中相同的標(biāo)號(hào)指示相似或相應(yīng)的特征或功能。
具體實(shí)施方式
·
下面描述本公開(kāi)的各個(gè)方面。應(yīng)該明白的是,本文的教導(dǎo)可以以多種多樣形式具體體現(xiàn),并且在本文中公開(kāi)的任何具體結(jié)構(gòu)、功能或兩者僅僅是代表性的?;诒疚牡慕虒?dǎo),本領(lǐng)域技術(shù)人員應(yīng)該明白的是,本文所公開(kāi)的一個(gè)方面可以獨(dú)立于任何其它方面實(shí)現(xiàn),并且這些方面中的兩個(gè)或多個(gè)方面可以按照各種方式組合。例如,可以使用本文所闡述的任何數(shù)目的方面,實(shí)現(xiàn)裝置或?qū)嵺`方法。另外,可以使用其它結(jié)構(gòu)、功能、或除了本文所闡述的一個(gè)或多個(gè)方面之外或不是本文所闡述的一個(gè)或多個(gè)方面的結(jié)構(gòu)和功能,實(shí)現(xiàn)這種裝置或?qū)嵺`這種方法。此外,本文所描述的任何方面可以包括權(quán)利要求的至少一個(gè)元素。在對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述之前,首先對(duì)本發(fā)明中涉及的幾個(gè)概念進(jìn)行簡(jiǎn)要說(shuō)明。術(shù)語(yǔ)“共享信息”指的是根據(jù)數(shù)據(jù)包生成的被第一平臺(tái)(B卩,X86架構(gòu)平臺(tái))和第二平臺(tái)(S卩,F(xiàn)PGA架構(gòu)平臺(tái))共同關(guān)注的信息。在本實(shí)施例中,共享信息為會(huì)話表。在本發(fā)明的其它實(shí)施例中,共享信息還可以是路由表,權(quán)限表或策略表等。術(shù)語(yǔ)“事件”是指觸發(fā)共享數(shù)據(jù)聯(lián)動(dòng)的原因,在本實(shí)施例中為所述第二平臺(tái)將數(shù)據(jù)包發(fā)送到所述第一平臺(tái),以及所述第一平臺(tái)發(fā)出的針對(duì)共享信息進(jìn)行的操作指令。事件還可以是第二平臺(tái)不能訪問(wèn)共享信息,以及所述第一平臺(tái)發(fā)出的對(duì)共享信息進(jìn)行的操作指令。圖2示出了根據(jù)本發(fā)明的X86/FPGA架構(gòu)平臺(tái)結(jié)合的架構(gòu)體系中的基于事件觸發(fā)的數(shù)據(jù)交互的體系圖。如圖2所示,在根據(jù)本發(fā)明的X86/FPGA架構(gòu)平臺(tái)結(jié)合的架構(gòu)體系中,第一平臺(tái)為X86架構(gòu)平臺(tái)(B卩,X86系統(tǒng))。第二平臺(tái)為FPGA架構(gòu)平臺(tái)卿,F(xiàn)PGA),在FPGA中存儲(chǔ)有共享信息全集,該共享信息全集是根據(jù)數(shù)據(jù)包生成的被第一平臺(tái)和第二平臺(tái)共同關(guān)注的信息的集合,所述共享信息比如是會(huì)話表、路由表,權(quán)限表或策略表等。X86系統(tǒng)至少包括兩個(gè)模塊,一個(gè)模塊是數(shù)據(jù)聯(lián)動(dòng)模塊(在本文中也稱為BSP ),用于執(zhí)行基于事件驅(qū)動(dòng)的數(shù)據(jù)件聯(lián)動(dòng)機(jī)制;另一個(gè)模塊是軟件邏輯執(zhí)行模塊(在本文中也稱為N0S),用于對(duì)要處理的數(shù)據(jù)包執(zhí)行運(yùn)算邏輯分析。在圖2中示出的體系中,當(dāng)FPGA接收到數(shù)據(jù)包時(shí),在FPGA的共享信息全集(例如,會(huì)話表全集)中查找是否存在與所接收的數(shù)據(jù)包對(duì)應(yīng)的共享信息(例如,會(huì)話表)。當(dāng)在共享信息全集中查找到對(duì)應(yīng)的共享信息并且該數(shù)據(jù)包不需要提交給X86系統(tǒng)中的NOS模塊處理時(shí),經(jīng)由快速路徑,對(duì)數(shù)據(jù)包直接進(jìn)行快速處理。當(dāng)在共享信息全集中沒(méi)有查找到對(duì)應(yīng)的共享信息時(shí),經(jīng)由慢速路徑,通過(guò)與數(shù)據(jù)聯(lián)動(dòng)模塊以及軟件邏輯執(zhí)行模塊進(jìn)行交互,對(duì)所接收的數(shù)據(jù)包進(jìn)行處理。對(duì)于一些數(shù)據(jù)包,即使在共享信息全集中查找到對(duì)應(yīng)的共享信息,但是由于比如配置拓?fù)浒l(fā)生改變或者通過(guò)分析共享信息中的內(nèi)容(比如會(huì)話表中的表項(xiàng)信息)可知,該數(shù)據(jù)包仍然需要提交給X86系統(tǒng)中的NOS模塊處理。在這種情況下,仍然經(jīng)由慢速路徑,通過(guò)與數(shù)據(jù)聯(lián)動(dòng)模塊以及軟件邏輯執(zhí)行模塊進(jìn)行交互,對(duì)所接收的數(shù)據(jù)包進(jìn)行處理。圖3示出了根據(jù)本發(fā)明的由數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的方法的一個(gè)示例的流程圖,該流程是經(jīng)由慢速路徑處理時(shí)由數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的過(guò)程。在該流程圖中,第一平臺(tái)為X86架構(gòu)平臺(tái),第二平臺(tái)為FPGA架構(gòu)平臺(tái)。 如圖3所示,在數(shù)據(jù)聯(lián)動(dòng)模塊接收到事件后,在步驟S310,判斷所接收的事件的來(lái)源是FPGA架構(gòu)平臺(tái)還是X86架構(gòu)平臺(tái)。也就是說(shuō),判斷數(shù)據(jù)聯(lián)動(dòng)模塊所接收的事件是來(lái)自FPGA架構(gòu)平臺(tái),還是來(lái)自X86架構(gòu)平臺(tái)的至少包括對(duì)X86架構(gòu)平臺(tái)中的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令的信息,即,來(lái)自軟件邏輯執(zhí)行模塊的信息。在所接收的事件是來(lái)自FPGA架構(gòu)平臺(tái)時(shí),在步驟S320,將該數(shù)據(jù)包轉(zhuǎn)發(fā)到X86架構(gòu)平臺(tái)進(jìn)行運(yùn)算邏輯處理,例如,決定是否針對(duì)該數(shù)據(jù)包進(jìn)行共享信息操作。這里,所述共享信息操作可以包括共享信息創(chuàng)建、共享信息更新、共享信息刪除和/或關(guān)聯(lián)數(shù)據(jù)包的共享信息副本查找,并且在所述共享信息操作指令是共享信息創(chuàng)建、共享信息更新或共享信息刪除時(shí),從X86架構(gòu)平臺(tái)接收的事件還包括接收數(shù)據(jù)包。在這種情況下,數(shù)據(jù)聯(lián)動(dòng)模塊還向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該數(shù)據(jù)包。在本發(fā)明的一個(gè)示例中,共享信息可以包括會(huì)話表。在本發(fā)明的其它實(shí)施例中,共享信息還可以包括路由表,權(quán)限表或策略表等。在所接收到的信息是來(lái)自X86架構(gòu)平臺(tái)的至少包括對(duì)X86架構(gòu)平臺(tái)中的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令的信息時(shí),在步驟S330,向X86架構(gòu)平臺(tái)返回共享信息操作指令完成消息,同時(shí)向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在FPGA架構(gòu)平臺(tái)完成該共享信息操作。在這種情況下,當(dāng)X86架構(gòu)平臺(tái)(N0S模塊)接收到數(shù)據(jù)聯(lián)動(dòng)模塊返回的共享信息操作指令完成消息后,就認(rèn)為FPGA架構(gòu)平臺(tái)已經(jīng)完成對(duì)應(yīng)的共享信息操作,從而開(kāi)始執(zhí)行針對(duì)其他數(shù)據(jù)包的處理。同時(shí),當(dāng)FPGA架構(gòu)平臺(tái)接收到數(shù)據(jù)聯(lián)動(dòng)模塊異步轉(zhuǎn)發(fā)的共享信息操作指令后,可以在FPGA架構(gòu)平臺(tái)上異步執(zhí)行該共享信息操作。圖4示出了根據(jù)本發(fā)明的由數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的方法的另一更為優(yōu)選的示例的流程圖,在該示例中,采用會(huì)話表作為共享信息。如圖4所示,在數(shù)據(jù)聯(lián)動(dòng)模塊接收到事件后,在步驟S410,判斷所接收的事件的來(lái)源是FPGA架構(gòu)平臺(tái)還是X86架構(gòu)平臺(tái)。也就是說(shuō),判斷數(shù)據(jù)聯(lián)動(dòng)模塊所接收的事件是來(lái)自FPGA架構(gòu)平臺(tái),還是來(lái)自X86架構(gòu)平臺(tái)的至少包括對(duì)X86架構(gòu)平臺(tái)中的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的會(huì)話表操作指令的信息,即,來(lái)自軟件邏輯執(zhí)行模塊的信息。在所接收到的事件是來(lái)自FPGA架構(gòu)平臺(tái)時(shí),在步驟S420,判斷數(shù)據(jù)聯(lián)動(dòng)模塊的用于存儲(chǔ)會(huì)話表副本的對(duì)應(yīng)緩存器中是否存在該數(shù)據(jù)包的會(huì)話表副本。例如,當(dāng)數(shù)據(jù)聯(lián)動(dòng)模塊接收到FPGA架構(gòu)平臺(tái)發(fā)送的數(shù)據(jù)包時(shí),通過(guò)所接收的數(shù)據(jù)包的五元組信息,查找會(huì)話表副本的對(duì)應(yīng)緩存器中是否存在該數(shù)據(jù)包的會(huì)話表副本。所述五元組信息例如包括(源IP,源端口,目的IP,目的端口,協(xié)議)。如何根據(jù)五元組信息在會(huì)話表副本的對(duì)應(yīng)緩存器中是否存在該數(shù)據(jù)包的會(huì)話表副本在本領(lǐng)域中是公知的,在此不再贅述。在會(huì)話表副本的對(duì)應(yīng)緩存器中存在會(huì)話表副本時(shí),即步驟S420的判斷結(jié)果為是時(shí),在步驟S450,更新該會(huì)話表副本的老化超時(shí)時(shí)間。所述老化超時(shí)時(shí)間是指該會(huì)話表的老化時(shí)間(即,生效時(shí)間)。換言之,當(dāng)該會(huì)話表副本的老化時(shí)間期滿后,該會(huì)話表副本變?yōu)闊o(wú)效。老化超時(shí)時(shí)間可以用存在時(shí)間段表示,例如,判斷會(huì)話表副本的存在時(shí)間是否超過(guò)一個(gè)預(yù)定時(shí)間段。或者,老化超時(shí)時(shí)間也可以用即時(shí)時(shí)間表示,例如,會(huì)話表的老化超時(shí)時(shí)間可以用具體時(shí)刻表示,例如,2012年5月12日8:00,當(dāng)進(jìn)行查找操作時(shí)系統(tǒng)時(shí)間超過(guò)該具體時(shí)刻時(shí),即認(rèn)為會(huì)話表副本的老化時(shí)間期滿,從而該會(huì)話表副本變?yōu)闊o(wú)效。當(dāng)老化超時(shí)時(shí)間采用存在時(shí)間段表示時(shí),對(duì)老化超時(shí)時(shí)間的更新可以是將會(huì)話表副本的存在時(shí)間變?yōu)閺漠?dāng)前開(kāi)始計(jì)時(shí)。當(dāng)老化超時(shí)時(shí)間采用具體時(shí)刻表示時(shí),對(duì)老化超時(shí)時(shí)間的更新可以是基于當(dāng)前時(shí)刻重新計(jì)算老化超時(shí)的具體時(shí)刻。在如上對(duì)老化超時(shí)時(shí)間進(jìn)行更新后,在步驟S440,將所接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到X86架構(gòu)平臺(tái)進(jìn)行邏輯運(yùn)算分析,以確定是否需要對(duì)數(shù)據(jù)包執(zhí)行會(huì)話表操作。例如,在X86架構(gòu)平臺(tái)的軟件邏輯執(zhí)行模塊中對(duì)數(shù)據(jù)包進(jìn)行邏輯運(yùn)算分析,以確定是否需要對(duì)數(shù)據(jù)包執(zhí)行會(huì)話表更新操作、會(huì)話表刪除操作或者該數(shù)據(jù)包的關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表副本查找操作。在會(huì)話表副本的對(duì)應(yīng)緩存器中不存在會(huì)話表副本時(shí),即步驟S420的判斷結(jié)果為是時(shí),在步驟S430,查詢從FPGA架構(gòu)平臺(tái)(例如,F(xiàn)PGA)接收的事件中是否包含指示FPGA架 構(gòu)平臺(tái)的會(huì)話表全集中存在該數(shù)據(jù)包的會(huì)話表的標(biāo)記,例如,查詢從FPGA接收的事件中是否包含標(biāo)記 “session on FPGA flag”。當(dāng)所接收的事件中存在指示FPGA架構(gòu)平臺(tái)的會(huì)話表全集中存在該數(shù)據(jù)包的會(huì)話表的標(biāo)記時(shí),在步驟S460,將從FPGA架構(gòu)平臺(tái)接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到X86架構(gòu)平臺(tái)進(jìn)行邏輯運(yùn)算分析處理,以確定是否需要對(duì)數(shù)據(jù)包執(zhí)行會(huì)話表操作,同時(shí)從FPGA架構(gòu)平臺(tái)的會(huì)話表全集中獲取該會(huì)話表,并將所獲取的會(huì)話表存儲(chǔ)到數(shù)據(jù)聯(lián)動(dòng)模塊的會(huì)話表副本的對(duì)應(yīng)緩存器中,作為該數(shù)據(jù)包的會(huì)話表副本。在這種情況下,將從FPGA架構(gòu)平臺(tái)接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到X86架構(gòu)平臺(tái)進(jìn)行邏輯運(yùn)算分析處理的操作和從FPGA架構(gòu)平臺(tái)的會(huì)話表全集中獲取該會(huì)話表并存儲(chǔ)的操作之間沒(méi)有關(guān)聯(lián),兩個(gè)操作可以同步進(jìn)行,也可以異步進(jìn)行。當(dāng)從FPGA架構(gòu)平臺(tái)接收的事件中不存在指示FPGA架構(gòu)平臺(tái)的會(huì)話表全集中存在該數(shù)據(jù)包的會(huì)話表的標(biāo)記時(shí),進(jìn)行到步驟S440。在步驟S440,將所接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到X86架構(gòu)平臺(tái)進(jìn)行邏輯運(yùn)算分析處理,以確定是否需要對(duì)數(shù)據(jù)包執(zhí)行會(huì)話表操作。當(dāng)所接收到的事件是來(lái)自X86架構(gòu)平臺(tái)的至少包括對(duì)X86架構(gòu)平臺(tái)中的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的會(huì)話表操作指令的信息時(shí),在步驟S470,向X86架構(gòu)平臺(tái)返回會(huì)話表操作指令完成消息,同時(shí)向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該會(huì)話表操作指令,以在FPGA架構(gòu)平臺(tái)完成該會(huì)話表操作。這里,所述會(huì)話表操作指令可以包括會(huì)話表創(chuàng)建指令、會(huì)話表更新指令、會(huì)話表刪除指令和/或關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表副本查找指令,并且在所述會(huì)話表操作指令是會(huì)話表創(chuàng)建、會(huì)話表更新或會(huì)話表刪除時(shí),從X86架構(gòu)平臺(tái)接收的信息還包括數(shù)據(jù)包,并且數(shù)據(jù)聯(lián)動(dòng)模塊還向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該數(shù)據(jù)包。具體地,當(dāng)軟件邏輯執(zhí)行模塊(N0S模塊)通過(guò)對(duì)所接收的數(shù)據(jù)包進(jìn)行邏輯分析后,確定需要進(jìn)行會(huì)話表創(chuàng)建操作后,軟件邏輯執(zhí)行模塊向數(shù)據(jù)聯(lián)動(dòng)模塊發(fā)送會(huì)話表創(chuàng)建指令并且轉(zhuǎn)發(fā)所接收的數(shù)據(jù)包,由此,軟件邏輯執(zhí)行模塊調(diào)用數(shù)據(jù)聯(lián)動(dòng)模塊提供的創(chuàng)建會(huì)話表的API執(zhí)行創(chuàng)建動(dòng)作。當(dāng)數(shù)據(jù)聯(lián)動(dòng)模塊接收到來(lái)自X86架構(gòu)平臺(tái)的會(huì)話表創(chuàng)建指令和數(shù)據(jù)包后,數(shù)據(jù)聯(lián)動(dòng)模塊的API立即同步返回會(huì)話表創(chuàng)建完成消息(此時(shí)會(huì)話表并沒(méi)有實(shí)質(zhì)創(chuàng)建到FPGA架構(gòu)平臺(tái)中),同時(shí)向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該會(huì)話表創(chuàng)建指令和數(shù)據(jù)包。軟件邏輯執(zhí)行模塊獲得數(shù)據(jù)聯(lián)動(dòng)模塊返回的會(huì)話表創(chuàng)建完成消息后,將進(jìn)行其他數(shù)據(jù)流的處理。FPGA架構(gòu)平臺(tái)接收到數(shù)據(jù)聯(lián)動(dòng)模塊轉(zhuǎn)發(fā)的會(huì)話表創(chuàng)建指令和數(shù)據(jù)包后,異步執(zhí)行該數(shù)據(jù)包的會(huì)話表創(chuàng)建操作。當(dāng)軟件邏輯執(zhí)行模塊通過(guò)對(duì)所接收的數(shù)據(jù)包進(jìn)行邏輯分析后,確定需要進(jìn)行會(huì)話表更新或刪除操作后,軟件邏輯執(zhí)行模塊向數(shù)據(jù)聯(lián)動(dòng)模塊發(fā)送會(huì)話表更新或刪除指令并且轉(zhuǎn)發(fā)所接收的數(shù)據(jù)包,由此,軟件邏輯執(zhí)行模塊調(diào)用數(shù)據(jù)聯(lián)動(dòng)模塊提供的更新或刪除會(huì)話表的API執(zhí)行會(huì)話表更新或刪除動(dòng)作。當(dāng)數(shù)據(jù)聯(lián)動(dòng)模塊接收到來(lái)自X86架構(gòu)平臺(tái)的會(huì)話表更新或刪除指令和數(shù)據(jù)包后,數(shù)據(jù)聯(lián)動(dòng)模塊的API立即同步返回會(huì)話表更新或刪除完成消息(此時(shí)FPGA架構(gòu)平臺(tái)中并沒(méi)有實(shí)質(zhì)進(jìn)行會(huì)話表更新或刪除),同時(shí)向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該會(huì)話表更新或刪除指令和數(shù)據(jù)包。軟件邏輯執(zhí)行模塊獲得數(shù)據(jù)聯(lián)動(dòng)模塊返回的會(huì)話表更新或刪除完成消息后,將進(jìn)行針對(duì)其他數(shù)據(jù)包的處理。FPGA架構(gòu)平臺(tái)接收到數(shù)據(jù)聯(lián)動(dòng)模塊轉(zhuǎn)發(fā)的會(huì)話表更新或刪除指令和數(shù)據(jù)包后,異步執(zhí)行該數(shù)據(jù)包的會(huì)話表更新或刪除操作。當(dāng)軟件邏輯執(zhí)行模塊通過(guò)對(duì)所接收的數(shù)據(jù)包進(jìn)行邏輯分析后,確定需要進(jìn)行關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表副本查找操作后,軟件邏輯執(zhí)行模塊向數(shù)據(jù)聯(lián)動(dòng)模塊發(fā)送關(guān)聯(lián)數(shù)據(jù)包的會(huì) 話表副本查找操作指令,由此,軟件邏輯執(zhí)行模塊調(diào)用數(shù)據(jù)聯(lián)動(dòng)模塊提供的關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表查找操作的API執(zhí)行關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表查找操作。當(dāng)數(shù)據(jù)聯(lián)動(dòng)模塊接收到來(lái)自X86架構(gòu)平臺(tái)的關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表查找操作后,數(shù)據(jù)聯(lián)動(dòng)模塊的API在會(huì)話表副本緩存器中進(jìn)行會(huì)話表副本查找。當(dāng)查找到關(guān)聯(lián)數(shù)據(jù)包的會(huì)話表副本后,將所查找到的會(huì)話表副本返回給軟件邏輯執(zhí)行模塊。否則,向軟件邏輯執(zhí)行模塊返回沒(méi)有查找到會(huì)話表副本的查找結(jié)果。接著,在步驟S480,判斷FPGA架構(gòu)平臺(tái)的會(huì)話表操作是否成功?例如,判斷FPGA架構(gòu)平臺(tái)中的會(huì)話表創(chuàng)建、會(huì)話表更新或會(huì)話表刪除操作是否成功。當(dāng)FPGA架構(gòu)平臺(tái)的會(huì)話表操作成功后,F(xiàn)PGA架構(gòu)平臺(tái)將會(huì)話表操作結(jié)果返回給數(shù)據(jù)聯(lián)動(dòng)模塊。接著,在步驟S490,數(shù)據(jù)聯(lián)動(dòng)模塊利用從FPGA架構(gòu)平臺(tái)接收的會(huì)話表操作結(jié)果,對(duì)會(huì)話表副本的對(duì)應(yīng)緩存器進(jìn)行同步處理。這里,同步處理是指FPGA架構(gòu)平臺(tái)對(duì)會(huì)話表中進(jìn)行何種操作,數(shù)據(jù)聯(lián)動(dòng)模塊也會(huì)對(duì)會(huì)話表副本進(jìn)行相應(yīng)的操作。如果FPGA架構(gòu)平臺(tái)的操作失敗,則數(shù)據(jù)聯(lián)動(dòng)模塊的處理流程結(jié)束。例如,如果FPGA架構(gòu)平臺(tái)創(chuàng)建會(huì)話表失敗,那么數(shù)據(jù)包將被丟棄。在這種情況下,重傳該數(shù)據(jù)包,重復(fù)上述流程來(lái)進(jìn)行會(huì)話表創(chuàng)建。如果FPGA架構(gòu)平臺(tái)更新或刪除會(huì)話表失敗,則結(jié)束數(shù)據(jù)聯(lián)動(dòng)模塊的處理流程。如上參照?qǐng)D4描述了本發(fā)明的由數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的方法的另一更為優(yōu)選的示例的流程圖。這里要說(shuō)明的是,上述示例僅僅是本發(fā)明的一個(gè)優(yōu)選實(shí)施例。在本發(fā)明的其它示例中,可以對(duì)上述實(shí)施例進(jìn)行各種修改。例如,刪除上述實(shí)施例中的一部分步驟,比如同步操作步驟等?;蛘?,在上述實(shí)施例中增加一些新的步驟。在本發(fā)明的另一示例中,由數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行的方法還可以包括共享信息的老化超時(shí)處理。圖5示出了根據(jù)本發(fā)明的老化超時(shí)處理的流程圖。當(dāng)數(shù)據(jù)聯(lián)動(dòng)模塊的用于存儲(chǔ)共享信息的對(duì)應(yīng)緩存器中存在共享信息時(shí),數(shù)據(jù)聯(lián)動(dòng)模塊還可以對(duì)緩存器中的共享信息進(jìn)行老化超時(shí)處理。如圖5所示,在步驟S510,數(shù)據(jù)聯(lián)動(dòng)模塊查找緩存器中存儲(chǔ)的共享信息的老化時(shí)間。在查找到共享信息的老化時(shí)間后,在步驟S520,判斷該老化時(shí)間是否超時(shí),即,該老化時(shí)間是否期滿。如何判斷該老化時(shí)間是否期滿,可以參照上面的描述。在判斷出老化時(shí)間未超時(shí)時(shí),在步驟S530中,保持該共享信息不變。在判斷出老化時(shí)間超時(shí)時(shí),在步驟S540,刪除該共享信息。接著,在步驟S540,判斷是否遍歷完緩存器中的所有共享信息。如果未遍歷完,則返回到步驟S510,查找下一共享信息的老化超時(shí)時(shí)間,并且重復(fù)上述操作過(guò)程。如果已經(jīng)遍歷完,則流程結(jié)束。如上參照?qǐng)D2到圖5描述了根據(jù)本發(fā)明的異構(gòu)平臺(tái)間的基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法的流程圖。本發(fā)明的上述異構(gòu)平臺(tái)間的基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法,可以采用軟件實(shí)現(xiàn),也可以采用硬件實(shí)現(xiàn),或采用軟件和硬件組合的方式實(shí)現(xiàn)。圖6示出了根據(jù)本發(fā)明的數(shù)據(jù)聯(lián)動(dòng)裝置600的配置的方框圖。如圖6所示,數(shù)據(jù)聯(lián)動(dòng)裝置600包括判斷單元610、事件處理單元620、共享信息副本同步單元630和緩存器 640。緩存器640用于存儲(chǔ)根據(jù)數(shù)據(jù)包生成的共享信息的副本(下文中稱為共享信息副本)。判斷單元610用于判斷所接收的事件的來(lái)源是X86架構(gòu)下的第一平臺(tái)(B卩,X86架構(gòu)平臺(tái))還是FPGA架構(gòu)下的第二平臺(tái)(B卩,F(xiàn)PGA架構(gòu)平臺(tái))。事件處理單元620用于在所述判斷單元判斷為所接收的事件是來(lái)自第二平臺(tái)時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行運(yùn)算邏輯處理,或者在所接收到的事件是來(lái)自第一平臺(tái)的至少包括對(duì)第一平臺(tái)中的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令的信息時(shí),向第一平臺(tái)返回共享信息操作指令完成消息,同時(shí)向第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在第二平臺(tái)完成該共享信息操作。共享信息副本同步單元630用于在第二平臺(tái)完成該共享信息操作后,根據(jù)第二平臺(tái)返回的共享信息操作結(jié)果,對(duì)緩存器640中的共享信息副本進(jìn)行同步處理。在本發(fā)明的另一示例中,數(shù)據(jù)聯(lián)動(dòng)裝置600也可以不包括共享信息副本同步單元630。圖7示出了圖6中的事件處理單元620的一個(gè)示例的結(jié)構(gòu)的方框圖。如圖7所示,事件處理單元620包括共享信息副本查找模塊621和更新模塊623。共享信息副本查找模塊621用于在所接收的事件是來(lái)自第二平臺(tái)時(shí),在所述緩存器中查找是否存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本。更新模塊623用于在存在共享信息副本時(shí),更新該共享信息副本的老化超時(shí)時(shí)間。事件處理單元620還可以包括標(biāo)記查詢模塊625、共享信息獲取模塊627和共享信息存儲(chǔ)模塊629。標(biāo)記查詢模塊625用于在不存在共享信息副本時(shí),查詢從第二平臺(tái)接收的事件中是否包含指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記。共享信息獲取模塊627用于在從第二平臺(tái)接收的事件中存在指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記時(shí),從第二平臺(tái)獲取該共享信息。共享信息存儲(chǔ)模塊629用于將所獲取的共享信息存儲(chǔ)到所述緩存器中。在這種情況下,事件處理單元620還被配置為無(wú)論在從第二平臺(tái)接收的事件中是否查詢到指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記,都將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行運(yùn)算邏輯處理。
在本發(fā)明的另一示例中,事件處理單元620也可以不包括標(biāo)記查詢模塊625、共享信息獲取模塊627和共享信息存儲(chǔ)模塊629,而僅僅包括共享信息副本查找模塊621和更新模塊623。在本發(fā)明的另一示例中,數(shù)據(jù)聯(lián)動(dòng)裝置600還可以包括老化超時(shí)處理單元(未示出),用于遍歷所述緩存器中的共享信息副本,對(duì)共享信息副本進(jìn)行老化超時(shí)處理,其中,在共享信息副本的老化超時(shí)時(shí)間已經(jīng)期滿時(shí),從所述緩存器中刪除該共享信息副本。圖8示出了根據(jù)本發(fā)明的軟硬件數(shù)據(jù)聯(lián)動(dòng)系統(tǒng)10的方框圖。如圖8所示,該軟硬件數(shù)據(jù)聯(lián)動(dòng)系統(tǒng)10包括X86架構(gòu)平臺(tái)20和FPGA架構(gòu)平臺(tái)30。X86架構(gòu)平臺(tái)20包括軟件邏輯執(zhí)行模塊100和數(shù)據(jù)聯(lián)動(dòng)裝置600。利用上述異構(gòu)平臺(tái)間的基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法及裝置,可以通過(guò)在X86架構(gòu)平臺(tái)中設(shè)置數(shù)據(jù)聯(lián)動(dòng)模塊,使得在從X86架構(gòu)平臺(tái)中接收到包括對(duì)數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令(例如,會(huì)話表操作指令)時(shí),數(shù)據(jù)聯(lián)動(dòng)模塊向X86架構(gòu)平臺(tái) 返回共享信息操作指令完成消息,并且同時(shí)向FPGA架構(gòu)平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令來(lái)在FPGA架構(gòu)平臺(tái)中完成對(duì)應(yīng)的共享信息操作,由此確保X86架構(gòu)平臺(tái)同步獲取數(shù)據(jù)而無(wú)需等待FPGA架構(gòu)平臺(tái)的反饋,從而縮短X86架構(gòu)平臺(tái)的處理時(shí)間。盡管前面公開(kāi)的內(nèi)容示出了本發(fā)明的示例性實(shí)施例,但是應(yīng)當(dāng)注意,在不背離權(quán)利要求限定的本發(fā)明的范圍的前提下,可以進(jìn)行多種改變和修改。根據(jù)這里描述的發(fā)明實(shí)施例的方法權(quán)利要求的功能、步驟和/或動(dòng)作不需以任何特定順序執(zhí)行。此外,盡管本發(fā)明的元素可以以個(gè)體形式描述或要求,但是也可以設(shè)想多個(gè),除非明確限制為單數(shù)。雖然如上參照?qǐng)D描述了根據(jù)本發(fā)明的各個(gè)實(shí)施例進(jìn)行了描述,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對(duì)上述本發(fā)明所提出的各個(gè)實(shí)施例,還可以在不脫離本發(fā)明內(nèi)容的基礎(chǔ)上做出各種改進(jìn)。因此,本發(fā)明的保護(hù)范圍應(yīng)當(dāng)由所附的權(quán)利要求書(shū)的內(nèi)容確定。
權(quán)利要求
1.一種基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法,用于X86架構(gòu)下的第一平臺(tái)、FPGA架構(gòu)下的第二平臺(tái)的數(shù)據(jù)交互,所述第二平臺(tái)存儲(chǔ)共享信息,該方法由所述第一平臺(tái)中的數(shù)據(jù)聯(lián)動(dòng)模塊執(zhí)行,該數(shù)據(jù)聯(lián)動(dòng)模塊包括用于存儲(chǔ)共享信息副本的對(duì)應(yīng)緩存器,所述方法包括 判斷所接收的事件的來(lái)源是第一平臺(tái)還是第二平臺(tái); 在所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理; 在所接收到的事件是來(lái)自第一平臺(tái)的至少包括對(duì)第一平臺(tái)的數(shù)據(jù)包進(jìn)行邏輯運(yùn)算處理后得到的共享信息操作指令的信息時(shí),向所述第一平臺(tái)返回共享信息操作指令完成消息,同時(shí)向所述第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在所述第二平臺(tái)完成該共享信息操作。
2.如權(quán)利要求I所述的方法,還包括在第二平臺(tái)完成該共享信息操作后,根據(jù)第二平臺(tái)返回的共享信息操作結(jié)果,對(duì)第一平臺(tái)的對(duì)應(yīng)緩存器中的共享信息副本進(jìn)行同步處理。
3.如權(quán)利要求I所述的方法,其中,在所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理包括 在所接收的事件是來(lái)自第二平臺(tái)時(shí),在所述共享信息副本的對(duì)應(yīng)緩存器中查找是否存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本; 在存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),更新該共享信息副本的老化超時(shí)時(shí)間,并將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理,或者, 在不存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理。
4.如權(quán)利要求3所述的方法,其中,在不存在共享信息副本時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理包括 在不存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),查詢從第二平臺(tái)接收的事件中是否包含指示第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包的共享信息的標(biāo)記;以及 在所接收的事件中存在指示所述第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包括的共享信息的標(biāo)記時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理,同時(shí)從第二平臺(tái)獲取該共享信息并存儲(chǔ)到所述共享信息副本的對(duì)應(yīng)緩存器中,或者 在所接收的事件中不存在指示所述第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包括的共享信息的標(biāo)記時(shí),將該數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理。
5.如權(quán)利要求I所述的方法,其中,所述共享信息操作指令包括共享信息創(chuàng)建、共享信息更新、共享信息刪除和/或該事件關(guān)聯(lián)的共享信息副本查找。
6.如權(quán)利要求I所述的方法,還包括 遍歷所述第一平臺(tái)的對(duì)應(yīng)緩存器中的共享信息副本,對(duì)共享信息副本進(jìn)行老化超時(shí)處理, 其中,在共享信息副本的老化超時(shí)時(shí)間已經(jīng)期滿時(shí),從所述對(duì)應(yīng)緩存器中刪除該共享信息副本。
7.如權(quán)利要求I所述的方法,其中,所述共享信息是會(huì)話表、路由表,權(quán)限表或策略表。
8.一種基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)裝置,用于X86架構(gòu)下的第一平臺(tái)、FPGA架構(gòu)下的第二平臺(tái)的數(shù)據(jù)交互,所述第二平臺(tái)存儲(chǔ)共享信息,該數(shù)據(jù)聯(lián)動(dòng)裝置包括緩存器,用于存儲(chǔ)共享信息副本; 判斷單元,用于判斷所接收的事件的來(lái)源是第一平臺(tái)還是第二平臺(tái); 事件處理單元,用于在所述判斷單元判斷為所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行運(yùn)算邏輯處理,或者在所接收到的信息是來(lái)自第一平臺(tái)的至少包括對(duì)所述第一平臺(tái)的數(shù)據(jù)包進(jìn)行運(yùn)算邏輯處理后得到的共享信息操作指令的信息時(shí),向所述第一平臺(tái)返回共享信息操作指令完成消息,同時(shí)向所述第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在所述第二平臺(tái)完成該共享信息操作。
9.如權(quán)利要求8所述的數(shù)據(jù)聯(lián)動(dòng)裝置,還包括 共享信息副本同步單元,用于在第二平臺(tái)完成該共享信息操作后,根據(jù)第二平臺(tái)返回的共享信息操作結(jié)果,對(duì)所述緩存器中的共享信息副本進(jìn)行同步處理。
10.如權(quán)利要求8所述的數(shù)據(jù)聯(lián)動(dòng)裝置,其中,所述事件處理單元包括 共享信息副本查找模塊,用于在所接收的事件是來(lái)自所述第二平臺(tái)時(shí),在所述緩存器中查找是否存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本;以及 更新模塊,用于在存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),更新該共享信息副本的老化超時(shí)時(shí)間。
11.如權(quán)利要求10所述的數(shù)據(jù)聯(lián)動(dòng)裝置,其中,所述事件處理單元包括 標(biāo)記查詢模塊,用于在不存在針對(duì)來(lái)自第二平臺(tái)的數(shù)據(jù)包的共享信息副本時(shí),查詢從所述第二平臺(tái)接收的事件中是否存在指示所述第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包括的共享信息的標(biāo)記; 共享信息獲取模塊,用于在所接收的事件中存在指示所述第二平臺(tái)的共享信息全集中存在針對(duì)該數(shù)據(jù)包括的共享信息的標(biāo)記時(shí),從第二平臺(tái)獲取該共享信息;以及 共享信息存儲(chǔ)模塊,用于將所獲取的共享信息存儲(chǔ)到所述緩存器中, 其中,所述事件處理單元還被配置為無(wú)論標(biāo)記查詢模塊是否查詢到所述標(biāo)記,都將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行運(yùn)算邏輯處理。
12.如權(quán)利要求8所述的數(shù)據(jù)聯(lián)動(dòng)裝置,還包括 老化超時(shí)處理單元,用于遍歷所述緩存器中的共享信息副本,對(duì)共享信息副本進(jìn)行老化超時(shí)處理, 其中,在共享信息副本的老化超時(shí)時(shí)間已經(jīng)期滿時(shí),從所述緩存器中刪除該共享信息副本。
全文摘要
本發(fā)明提供了一種基于事件驅(qū)動(dòng)的數(shù)據(jù)聯(lián)動(dòng)方法,用于X86架構(gòu)下的第一平臺(tái)、FPGA架構(gòu)下的第二平臺(tái)的數(shù)據(jù)交互,所述第二平臺(tái)存儲(chǔ)共享信息,該方法包括判斷所接收的事件的來(lái)源是第一平臺(tái)還是第二平臺(tái);在所接收的事件是來(lái)自第二平臺(tái)時(shí),將來(lái)自第二平臺(tái)的數(shù)據(jù)包轉(zhuǎn)發(fā)到第一平臺(tái)進(jìn)行邏輯運(yùn)算處理;在所接收到的事件是來(lái)自第一平臺(tái)的至少包括對(duì)第一平臺(tái)的數(shù)據(jù)包進(jìn)行邏輯運(yùn)算處理后得到的共享信息操作指令的信息時(shí),向所述第一平臺(tái)返回共享信息操作指令完成消息,同時(shí)向所述第二平臺(tái)轉(zhuǎn)發(fā)該共享信息操作指令,以在所述第二平臺(tái)完成該共享信息操作。利用該方法,可確保第一平臺(tái)同步獲取數(shù)據(jù)而無(wú)需等待第二平臺(tái)的反饋,從而縮短第一平臺(tái)的處理時(shí)間。
文檔編號(hào)G06F15/163GK102902654SQ20121032243
公開(kāi)日2013年1月30日 申請(qǐng)日期2012年9月3日 優(yōu)先權(quán)日2012年9月3日
發(fā)明者陳靜相, 魯杰, 王書(shū)義 申請(qǐng)人:東軟集團(tuán)股份有限公司