本申請涉及數(shù)據(jù)處理及數(shù)據(jù)存儲領(lǐng)域,尤其涉及一種數(shù)據(jù)實時處理及存儲裝置。
背景技術(shù):
近年來,隨著大數(shù)據(jù)、虛擬現(xiàn)實(virtualreality,vr)、增強現(xiàn)實(augmentedreality,ar)、無人駕駛、移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)(internetofthings,iot)等新業(yè)務(wù)的迅速發(fā)展,100/400ge(gigabitethernet,千兆以太網(wǎng))等網(wǎng)絡(luò)之間互連協(xié)議(internetprotocol,ip)接口向以100400ge為代表的超高帶寬(ultra-high-bandwith,uhb)以太網(wǎng)接口方向發(fā)展,在uhb技術(shù)快速演進過程中,流處理器對海量數(shù)據(jù)流進行處理的強實時性要求不斷提高,同時,在如此高速過程中,對數(shù)據(jù)存儲的及時可靠性要求也較高。
在現(xiàn)有數(shù)據(jù)流處理技術(shù)中,流處理器的數(shù)據(jù)流處理為對外部存儲器進行訪問,并對流處理器中的存儲數(shù)據(jù)執(zhí)行讀-修改-寫操作(即首先讀取出外部存儲器的數(shù)據(jù),其次,流處理器對該數(shù)據(jù)進行修改,最后,流處理器將修改后的數(shù)據(jù)寫入外部存儲器中存儲),流處理器的流處理周期實質(zhì)上是訪問外部存儲器的讀-修改-寫延遲時長(即流處理器的數(shù)據(jù)讀取時長,數(shù)據(jù)修改時長,和數(shù)據(jù)寫入時長之和)。
在上述現(xiàn)有數(shù)據(jù)流處理技術(shù)中,流處理器的流處理周期為對外部存儲器執(zhí)行讀-修改-寫操作過程中的總時長,對流處理器延遲時長要求小于上述讀-修改-寫延遲時長的強實時性操作或業(yè)務(wù)而言,此類處理器的流處理周期較長,無法滿足該類強實時性操作或業(yè)務(wù)的數(shù)據(jù)流處理要求。
技術(shù)實現(xiàn)要素:
本申請實施例提供了一種流處理器,用于縮短流處理器的流處理周期,提升流處理器對強實時性業(yè)務(wù)的處理能力。
第一方面,本申請實施例提供了一種流處理器,包括:先入先出存儲器(firstinputfirstoutput,fifo),運算單元,高速緩沖存儲器cache;其中,首先,fifo接收當(dāng)前流信息,其中,該當(dāng)前流信息中攜帶有目標流號和目標數(shù)據(jù);其次,當(dāng)fifo接收到讀有效信號時,fifo將目標流號和目標數(shù)據(jù)發(fā)送給運算單元,同時,將目標流號發(fā)送至cache;再次,cache根據(jù)其接收到的目標流號獲取到該目標流號對應(yīng)的舊數(shù)據(jù),并將該舊數(shù)據(jù)發(fā)送至運算單元;最后,在運算單元獲知目標流號對應(yīng)的舊數(shù)據(jù)和目標數(shù)據(jù)之后,運算單元根據(jù)該目標數(shù)據(jù)對該目標流號對應(yīng)的舊數(shù)據(jù)進行運算得到新數(shù)據(jù),并且,運算單元將該新數(shù)據(jù)發(fā)送至該cache中進行緩存,這樣,流處理器就完成了對當(dāng)前流信息的流處理操作。
從以上技術(shù)方案可以看出,本申請實施例具有以下優(yōu)點:由于流處理器中包括fifo和cache,一方面,由于fifo具有先進先出的特性,并且可以存儲一定數(shù)量的流信息,這樣,當(dāng)流處理器獲取目標流號對應(yīng)的舊數(shù)據(jù)時,其他流信息依然可以進入到fifo中進行存儲,各流信息不用排隊等待,縮短流處理周期;另一方面,cache既可以緩存舊數(shù)據(jù),因此,在某種情況下可以直接為運算單元直接提供舊數(shù)據(jù)支持,加快流處理速度;此外,cache也可以緩存新數(shù)據(jù),在流處理過程中便可以不必將新數(shù)據(jù)寫入外部存儲器中,可以理解緩存速度遠高于外部存儲器的數(shù)據(jù)寫入速度,也從一定程度上縮短了流處理器的流處理周期。基于以上兩方面,本申請中流處理器可以將流處理器的流處理周期從對數(shù)據(jù)的讀-修改-寫延遲時長減小約至數(shù)據(jù)的修改延遲時長(即運算單元由舊數(shù)據(jù)計算得到新數(shù)據(jù)所需的時長),因此,本申請可以有效地縮短流處理器的流處理周期,提高流處理速度,從而提升流處理器對強實時性業(yè)務(wù)的處理能力,處理對實時性要求更高的業(yè)務(wù)。
在一種可能的設(shè)計中,第一方面的第一種可能的實現(xiàn)方式,cache包括地址處理模塊,其中,該地址處理模塊用于將cache接收到的報文流號進行存儲,并且只存儲預(yù)設(shè)時長,超過該預(yù)設(shè)時長的報文流號將被刪除,并且按照報文流號大小依次順序映射外部存儲器中相應(yīng)的偏移地址,當(dāng)前,報文流號包括目標流號。
其次,該第一方面的第一種可能的實現(xiàn)方式中,cache中包括地址處理模塊中報文流號直接映射外部存儲器中的地址,這樣,一旦收到報文流號,便能快速地確定報文流號對應(yīng)的數(shù)據(jù)存儲在外部存儲器的地址,方便快捷。
在一種可能的設(shè)計中,第一方面的第二種可能的實現(xiàn)方式,cache還包括時間處理模塊,該時間處理模塊用于對上述預(yù)設(shè)時長進行管理,每一個報文流號對應(yīng)一個預(yù)設(shè)時長,各預(yù)設(shè)時長可以相等,也可以不相等。
其次,在該第一方面的第二種可能的實現(xiàn)方式中,設(shè)有時間處理模塊來管理預(yù)設(shè)時長,這樣可以使得每個報文流號對應(yīng)的預(yù)設(shè)時長具有多樣性,能使得每個報文流號對應(yīng)的預(yù)設(shè)時長可以各不相同,并且還可以根據(jù)不同的流信息適當(dāng)調(diào)整預(yù)設(shè)時長。
在一種可能的設(shè)計中,第一方面的第三種可能的實現(xiàn)方式,cache還包括數(shù)據(jù)處理模塊,該數(shù)據(jù)處理模塊用于存儲并管理報文流號對應(yīng)的舊數(shù)據(jù),并且與上述地址處理模塊之間存在一定的映射關(guān)系,報文流號對應(yīng)的舊數(shù)據(jù)為運算單元對上一條報文流號相同的流信息進行計算后得到的數(shù)據(jù)。
其次,在該第一方面的第三種可能的實現(xiàn)方式中,使用數(shù)據(jù)處理模塊存儲并管理舊數(shù)據(jù),更加便于數(shù)據(jù)讀取操作,可減少存儲器尋址時間。
在一種可能的設(shè)計中,第一方面的第四種可能的實現(xiàn)方式,cache還包括選擇器,該選擇器用于選擇將cache中緩存的報文流號對應(yīng)的舊數(shù)據(jù)發(fā)送至運算單元,或選擇將存儲控制器中的報文流號對應(yīng)的舊數(shù)據(jù)發(fā)送至運算單元,可以理解的是,存儲控制器中的舊數(shù)據(jù)是存儲控制器從外部存儲器中讀取到的。
其次,在該第一方面的第四種可能的實現(xiàn)方式中,根據(jù)不同實際應(yīng)用場景,由于選擇器的選擇功能可以避免輸入錯誤的舊數(shù)據(jù)進行運算,從而提高檢測誤檢率。
在一種可能的設(shè)計中,第一方面的第五種可能的實現(xiàn)方式,cache還用于:當(dāng)cache接收到兩個相同的報文流號的時間間隔小于等于預(yù)設(shè)時長時,cache將緩存于該cache中的舊數(shù)據(jù)發(fā)送至運算單元;或,
當(dāng)cache接收到不同的報文流號,或接收到兩個相同的報文流號的時間間隔大于預(yù)設(shè)時長時,cache將由存儲控制器發(fā)送至cache中的舊數(shù)據(jù)發(fā)送至運算單元。
其次,在該第一方面的第五種可能的實現(xiàn)方式中,該cache可以有效地避免相同報文流號之間的競爭冒險現(xiàn)象。
在一種可能的設(shè)計中,第一方面的第六種可能的實現(xiàn)方式,運算單元具體用于:根據(jù)旁路轉(zhuǎn)發(fā)流水線機制,并使用目標數(shù)據(jù)對目標流號對應(yīng)的舊數(shù)據(jù)進行計算得到新數(shù)據(jù),其中,可以包括強實時性操作對應(yīng)的計算,也可以是弱實時性操作對應(yīng)的計算,對此本申請實施例不做任何限制。
其次,在該第一方面的第六種可能的實現(xiàn)方式中,使用旁路轉(zhuǎn)發(fā)流水線機制可以有效地提高對流信息的處理速度。
在一種可能的實現(xiàn)方式中,第一方面的第七種可能的實現(xiàn)方式,fifo還包括解析模塊;其中,當(dāng)fifo接收到當(dāng)前流信息時,解析模塊對當(dāng)前流信息進行解析,并在解析之后得到當(dāng)前流信息中攜帶的報文流號(即作為目標流號)和目標數(shù)據(jù)。
其次,在第一方面的第七種可能的實現(xiàn)方式中,fifo不但對目標流號和目標數(shù)據(jù)進行分發(fā),還通過解析模塊解析當(dāng)前流信息得到對目標流號和目標數(shù)據(jù)。
在一種可能的實現(xiàn)方式中,第一方面的第八種可能的實現(xiàn)方式,流處理器還包括:存儲控制器,其中,該存儲控制器用于將上述新數(shù)據(jù)寫入到外部存儲器的目標地址中,上述新數(shù)據(jù)和上述目標地址均與上述目標流號對應(yīng),由cache發(fā)送至存儲控制器,可以理解,外部存儲器是指位于流處理器之外的存儲器,通常流處理器通過芯片實現(xiàn),也可以理解為外部存儲器是不在該芯片上的存儲器。
其次,在第一方面的第八種可能的實現(xiàn)方式中,將新數(shù)據(jù)寫入到外部存儲器中可以進行長期保存,以彌補使用cache進行緩存的不足之處。
在一種可能的設(shè)計中,第一方面的第九種可能的實現(xiàn)方式,存儲控制器還用于:將目標流號對應(yīng)的舊數(shù)據(jù)發(fā)送至cache,并且,向fifo發(fā)送讀有效信號,以使得該fifo將當(dāng)前流信息寫入到運算單元中。
其次,在該第一方面的第九種可能的實現(xiàn)方式中,一方面,cache可以獲得外部存儲器中的舊數(shù)據(jù),另一方面,向fifo發(fā)送讀有效信號,可以同步運算單元和外部存儲器之間讀取數(shù)據(jù)的延時時長。
在一種可能的設(shè)計中,第一方面的第十種可能的實現(xiàn)方式,上述外部存儲器包括片外隨機尋址存儲器。
其次,在第一方面的第十種可能的實現(xiàn)方式中,使用片外隨機尋址存儲器作為外部存儲器具有可以隨時訪問,速度快的優(yōu)點,進一步提高流處理器的流處理速度。
在一種可能的設(shè)計中,第一方面的第十一種可能的實現(xiàn)方式,流處理器還包括:流分析模塊,其中,該流分析模塊用于對網(wǎng)絡(luò)流量進行分析,并將解析后得到的當(dāng)前流信息發(fā)送至fifo,同時,在解析完成后,向存儲控制器發(fā)送數(shù)據(jù)讀取命令,以使得存儲控制器從外部存儲器中讀取目標報文對應(yīng)的舊數(shù)據(jù)。
其次,在該第一方面的第十一種可能的實現(xiàn)方式中,流處理器可以實現(xiàn)對網(wǎng)絡(luò)流量的分析,使得流處理器的功能更加全面,拓寬了該流處理器的應(yīng)用范圍。
在一種可能的設(shè)計中,第一方面的第十二中可能的實現(xiàn)方式,流處理器還包括:數(shù)據(jù)上傳模塊,其中,該數(shù)據(jù)上傳模塊用于根據(jù)預(yù)設(shè)規(guī)則通過存儲控制器讀取外部存儲器中所存儲的數(shù)據(jù),以為企業(yè)業(yè)務(wù)應(yīng)用提供數(shù)據(jù)支持。
其次,在該第一方面的第十二種可能的實現(xiàn)方式中,可以充分利用外部存儲器,不僅可以為流處理器提供數(shù)據(jù)支持,還能為其他業(yè)務(wù)提供數(shù)據(jù)支持。
附圖說明
圖1為本申請實施例中流處理器的一個應(yīng)用場景示意圖;
圖2為本申請實施例中流處理器的另一個應(yīng)用場景示意圖;
圖3為本申請實施例中流處理器的另一個應(yīng)用場景示意圖;
圖4(a)為本申請實施例中流處理器的一個結(jié)構(gòu)示意圖;
圖4(b)為本申請實施例中流處理器的一個時序示意圖;
圖5為本申請實施例中caches6的一個結(jié)構(gòu)示意圖;
圖6為本申請實施例中地址處理模塊s61,時間處理模塊s62和數(shù)據(jù)處理模塊s63之間的映射關(guān)系圖;
圖7為本申請實施例中地址處理模塊s61與外部隨機尋址存儲器s4之間的映射關(guān)系圖;
圖8(a)為本申請實施例中時間滑動窗口機制下的一個時序示意圖;
圖8(b)為未使用旁路流水線轉(zhuǎn)發(fā)機制時,數(shù)據(jù)raw競爭冒險的流水線時空圖;
圖9為使用旁路流水線轉(zhuǎn)發(fā)機制時的一個流水線時空圖;
圖10為使用旁路流水線轉(zhuǎn)發(fā)機制時的另一個流水線時空圖;
圖11為使用旁路流水線轉(zhuǎn)發(fā)機制時的又一個流水線時空圖。
具體實施方式
本申請實施例提供了一種流處理器,用于實現(xiàn)隨機流的滿線速處理和存儲,從而可以對隨機流進行強實時性操作。
本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的實施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
如圖1所示為本申請實施例中流處理器的一個應(yīng)用場景示意圖,包括:機頂盒交換機(topofrack,tor)網(wǎng)絡(luò)開關(guān)、中央處理器、流處理器和主存儲器,其中,中央處理器、流處理器和主存儲器等構(gòu)成服務(wù)器。tor網(wǎng)絡(luò)開關(guān)通過將網(wǎng)絡(luò)流量注入至中央處理器,從而將網(wǎng)絡(luò)流量傳輸至服務(wù)器中,由中央處理器對網(wǎng)絡(luò)流量進行分析,在分析完成后將得到的流報文發(fā)送給流處理器,流處理器通過讀取主存儲器中的相關(guān)數(shù)據(jù)對流報文進行處理之后,流處理器將處理后的信息寫入主存儲器中存儲,也可以根據(jù)需要將處理后的信息發(fā)送至中央處理器為其他應(yīng)用提供數(shù)據(jù)支持。此外,主存儲器可以是片外隨機尋址存儲器,用于存儲強實時性操作對應(yīng)的隨機流信息。
該應(yīng)用場景對應(yīng)的硬件架構(gòu)可以是一個服務(wù)器機框,該機框里面包括塊服務(wù)器單板作為接收主機,用于接收來自tor網(wǎng)絡(luò)開關(guān)的網(wǎng)絡(luò)流量,其次,該服務(wù)器單板上安裝有中央處理器、流處理器和主存儲器等芯片,用于uhb\流式計算等,實現(xiàn)在線海量隨機流硬件加速的功能;流處理器也可以是一個芯片如現(xiàn)場可編程門陣列(field-programmablegatearray,fpga)和特定用途集成電路(applicationspecificintegratedcircuit,asic)等,通過對該流處理器芯片進行編程來完成中央處理器的讀寫請求,并對其控制的存儲芯片如主存儲器進行各種訪問及控制;中央處理器、流處理器和主存儲器等芯片可以設(shè)置在一個印制電路板(printedcircuitboard,pcb)上,通過pcb走線相連,最后呈現(xiàn)的形狀是一個服務(wù)器單板。
需要說明的是,上述服務(wù)器單板上也可以包括內(nèi)存芯片等其他功能的芯片,對此本申請不做任何限制。
如圖2所示為流處理器的另一個應(yīng)用場景示意圖,與圖1所示的應(yīng)用場景不同在于,流處理器可以完成網(wǎng)絡(luò)流量分析功能,tor網(wǎng)絡(luò)開關(guān)直接將網(wǎng)絡(luò)流量注入流處理器中進行分析,因此流處理器和中央處理器之間為單向通信,其余操作與圖1對應(yīng)的應(yīng)用場景類似,對此此處不再贅述。
如圖3所示為本申請實施例中又一個應(yīng)用場景圖,與圖1所示的應(yīng)用場景不同在于,圖2中包括兩個主存儲器(主存儲器1和主存儲器2),其中,一個用于存儲強實時性操作(如流報文的抖動統(tǒng)計)對應(yīng)的隨機流信息,另一個用于存儲弱實時性操作(如接收報文流統(tǒng)計)的隨機流信息,其余部分的描述與上述兩個應(yīng)用場景類似,對此此處不再贅述。
還需要說明的是,本申請實施例中流處理器旨在解決海量隨機流基于讀-修改-寫模式的實時處理和存儲問題,該流處理器不僅僅可以用于ip網(wǎng)絡(luò)uhb產(chǎn)品、網(wǎng)絡(luò)性能測試儀、流式硬件加速處理平臺等,還可以應(yīng)用于其他高新能流式處理產(chǎn)品中,如無人駕駛、5g通信、大數(shù)據(jù)流式硬件加速等領(lǐng)域的產(chǎn)品中為各類強實時性應(yīng)用提供了基礎(chǔ)緩存處理技術(shù);此外,當(dāng)所需用戶流量進一步提升時,可結(jié)合雙倍速率同步動態(tài)隨機存儲器(doubledataratestaticrandom-accessmemory,ddrsdram)擴容,滿足業(yè)務(wù)平滑演進。本申請對業(yè)務(wù)類型不做限制,如高級測序等強實時性操作,以及接收報文流統(tǒng)計等弱實時性操作。
為了更便于理解本申請實施例中流處理器,下面將結(jié)合流處理器的具體結(jié)構(gòu)對本申請實施例中流處理器進行說明,其中需要說明的是,以下實施例中,外部存儲器以片外隨機尋址存儲器為例進行說明,同時,報文流號為識別不同類型或業(yè)務(wù)流信息的標識,可以是流id,也可以是其他標識,對此本申請不做任何限制。
如圖4(a)所示為流處理器的一個結(jié)構(gòu)示意圖,流處理器包括:流分析模塊s1,先入先出(firstinputfirstoutput,fifo)存儲器s2,存儲控制器s3,運算單元s5,高速緩沖存儲器caches6,數(shù)據(jù)上傳模塊s7;此外,圖4(a)中還包括了一個片外隨機尋址存儲器s4作為主存儲器用于存儲數(shù)據(jù)。
該流處理器的工作原理及過程如下,包括:
步驟1:可選地,流分析模塊s1對網(wǎng)絡(luò)隨機流量進行解析,并將解析得到的當(dāng)前流信息(如當(dāng)前流報文)發(fā)送給fifos2,并且根據(jù)解析得到的該當(dāng)前流信息對應(yīng)的存儲地址,向存儲控制器s3發(fā)起數(shù)據(jù)讀取命令,該數(shù)據(jù)讀取命令用于指示存儲控制器s3從片外隨機尋址存儲器s4中讀取上述存儲地址中存儲的舊數(shù)據(jù);
需要說明的是,如上述應(yīng)用場景一樣,對于網(wǎng)絡(luò)隨機流量的流量分析可以由流分析模塊s1完成,也可以由流處理器之外的芯片如中央處理器等完成網(wǎng)絡(luò)隨機流量的流量分析,對此本申請不做任何限制。
步驟2:fifos2接收到流分析模塊s1發(fā)送的當(dāng)前流信息(如當(dāng)前流報文),其中,當(dāng)前流信息中攜帶有目標流號和目標數(shù)據(jù),先對當(dāng)前流信息進行存儲,并等待存儲控制器返回讀有效信號,該讀有效信號用于指示fifos2將當(dāng)前流信息(包括目標流號和目標數(shù)據(jù))發(fā)送給運算單元s5,并將上述目標流號發(fā)送至caches6,其中目標流號為當(dāng)前流信息對應(yīng)的報文流號;
可選地,當(dāng)fifos2接收到流分析模塊s1發(fā)送的當(dāng)前流信息時,fifos2中的解析模塊對所述當(dāng)前流信息即當(dāng)前報文進行解析,并得到上述目標流號和目標數(shù)據(jù)。
從流分析模塊s1向存儲控制器s3發(fā)起數(shù)據(jù)讀取命令之后,存儲控制器s3根據(jù)該數(shù)據(jù)讀取命令的指示向片外隨機尋址存儲器s4中對應(yīng)的存儲地址讀取舊數(shù)據(jù),其次,在存儲控制器s3讀取到上述舊數(shù)據(jù)之后,存儲控制器s3便向fifos2發(fā)送讀有效信號,并在同一時刻,存儲控制器s3將讀取到的舊數(shù)據(jù)發(fā)送至caches6,可以理解的是,假設(shè)流分析模塊s1向存儲控制器s3發(fā)起數(shù)據(jù)讀取命令的時刻為t1,片外隨機尋址存儲器s4將讀取出的舊數(shù)據(jù)發(fā)送至存儲控制器s3的時刻為t2,存儲控制器s3向fifos2發(fā)送讀有效信號的時刻為t3,那么外部隨機尋址存儲器s4的讀時長為t2-t1,流處理器的讀時長是t3-t1。
通過上述操作,可以實現(xiàn)流處理器內(nèi),與流處理器外片外隨機尋址存儲器s4之間的信息同步,從而解決片外隨機尋址存儲器s4和流處理器內(nèi)存儲控制器s3讀時延過大的問題。
根據(jù)fifo深度等于rl/tclk可以知道,此時rl/tclk很小,因此該方案中fifos2的深度很小,可以有效地降低每端口資源消耗(例如,fifos2的位寬為512bit,深度為64的話,那么fifos2占用的端口資源只有32kbit,遠低于其他常見方案)。其中,rl為流處理器的讀時長(或讀延時);tclk為流處理器芯片(如fpga芯片)運行的時鐘周期。
步驟3:運算單元s5接收到fifos2發(fā)送的目標流號和目標數(shù)據(jù)之后,運算單元s5從caches6中讀取出該目標流號對應(yīng)的舊數(shù)據(jù),并根據(jù)目標數(shù)據(jù)對上述舊數(shù)據(jù)進行計算得到新數(shù)據(jù)。
可選地,運算單元s5從caches6中讀取出該隨機流信息對應(yīng)的舊數(shù)據(jù),其中,caches6具有選擇功能,因此,該舊數(shù)據(jù)可以是來自caches6自身緩存的,也可以是存儲控制器s3發(fā)送給caches6。具體選擇方式包括:
當(dāng)caches6接收到兩個相同的報文流號的時間間隔小于等于預(yù)設(shè)時長時,caches6選擇將緩存在caches6中的舊數(shù)據(jù)發(fā)送至運算單元s5;或,
當(dāng)caches6接收到不同的報文流號,或接收到兩個相同報文流號的時間間隔大于預(yù)設(shè)時長時,caches6選擇將存儲控制器s3發(fā)送至caches6中的舊數(shù)據(jù)發(fā)送至運算單元s5。
應(yīng)理解,由于caches6會將運算單元s5每次運算后得到的新數(shù)據(jù)進行緩存預(yù)設(shè)時長,并將該新數(shù)據(jù)寫入存儲控制器s3,以使得存儲控制器s3將該新數(shù)據(jù)寫回片外隨機尋址存儲器s4中進行存儲,以作為下一次相同報文流號的隨機流到來時的舊數(shù)據(jù)使用。由于處理的是隨機流,在該預(yù)設(shè)時長內(nèi)相同報文流號的隨機流還可能到來,因此,caches6要對舊數(shù)據(jù)進行篩選以確保每次計算時使用的是最近更新過的舊數(shù)據(jù)進行計算,從而避免出現(xiàn)錯誤檢測。
此外,如圖4(b)所示為流處理和外部隨機尋址存儲器s3的時序示意圖,時序1、時序2和時序3為流處理器對隨機流的處理時序;時序4和時序5為對外部隨機尋址存儲器s3的數(shù)據(jù)讀寫時序。
其中,時序1表示流分析模塊s1向存儲控制器s3發(fā)送數(shù)據(jù)讀取命令對應(yīng)的時序,存儲控制器s3從時序1中第一個下降沿開始讀取存儲控制器s3中存儲的舊數(shù)據(jù);時序2表示存儲控制器s3向fifos2發(fā)起讀有效信號的時序,其中,運算單元s5在時序2中的下降沿處開始對舊數(shù)據(jù)進行修改;時序3表示caches6將修改后的新數(shù)據(jù)寫入片外隨機尋址尋址存儲器s4中的時序,caches6在時序3中的下降沿開始通過存儲控制器s3將新數(shù)據(jù)寫入片外隨機尋址存儲器s4中。
再次,時序4表示片外隨機尋址存儲器s4將舊數(shù)據(jù)寫入到存儲控制器s3中的時序,時序4中的下降沿為寫入操作的開始時刻;時序5表示存儲控制器s3將新數(shù)據(jù)寫入片外隨機尋址存儲器s4中的時序,時序5中下降沿為開始時刻。
可以理解的是,時序1中第一個下降沿至?xí)r序2中下降沿之間的時長為流處理器對當(dāng)前隨機流對應(yīng)的舊數(shù)據(jù)的讀取周期,用rl表示;時序2中下降沿至?xí)r序3中下降沿之間的時長為對當(dāng)前隨機流對應(yīng)的舊數(shù)據(jù)的修改周期,用ml表示;時序3中下降沿至?xí)r序5中下降沿之間的時長為在片外隨機尋址存儲器s4不出現(xiàn)讀寫沖突情況下的新數(shù)據(jù)寫入周期,用wl表示,此外,對于片外隨機尋址存儲器s4不出現(xiàn)讀寫沖突情況包括:片外隨機尋址存儲器支持相同地址重復(fù)尋址,以及片外隨機尋址存儲器不支持相同地址重復(fù)尋址并且出現(xiàn)對相同地址重復(fù)尋址兩種情況,當(dāng)然,對于其他可能出現(xiàn)讀寫沖突的情況此處不做任何限制。
還需要說明的是,從時序1中第一個下降沿至?xí)r序4中下降沿為存儲控制器s3對片外隨機尋址存儲器s4的數(shù)據(jù)讀取周期,用rl’表示,應(yīng)理解,一方面,在時序1中第二個下降沿之后流處理器開始處理下一條隨機流即流分析模塊s1將再次發(fā)起數(shù)據(jù)讀取命令,也就是說,將對片外隨機尋址存儲器s4執(zhí)行下一次數(shù)據(jù)讀取,另一方面,由于讀取需要一定時長,應(yīng)理解,時序3中下降沿至?xí)r序1中第二個下降沿為caches6對存儲控制器s3的寫入時長,在時序1中第二個下降沿至?xí)r序5中下降沿之間的時長為存儲控制器s3對片外隨機尋址存儲器s4的寫入時長,此時長等于rl’,因此,在時序1中第二個下降沿之后的rl’時長內(nèi),可能會存在對相同地址的重復(fù)尋址,從而出現(xiàn)讀寫沖突打破讀寫平衡而出現(xiàn)讀寫錯誤。
因此,trd表示不出現(xiàn)讀寫沖突情況下流處理器的最小流處理周期,trmw為流處理器的讀-修改-寫周期。其中,trmw=rl+ml+wl,trd=rl+ml+wl-rl’;不難看出:trd=trmw-rl’。
此外,可以通過設(shè)置時間滑動窗口解決上述讀寫沖突情況,對于讀寫沖突及時間滑動窗口的進一步描述可參閱對圖8(a)、圖8(b)、圖9、圖10和圖11的相關(guān)描述部分,對此此處不再贅述。
caches6一種可能的結(jié)構(gòu)如圖5所示,caches6包括:地址處理模塊s61,時間處理模塊s62,數(shù)據(jù)處理模塊s63和選擇器s64,其中,地址處理模塊s61包括地址存儲器和地址存儲控制單元,地址存儲控制單元控制地址存儲器,讀取該地址存儲器中的地址數(shù)據(jù)或?qū)⒌刂窋?shù)據(jù)寫入至該地址存儲器中;時間處理模塊s62包括時間存儲器和時間管理單元,時間管理單元對時間存儲器中存儲的預(yù)設(shè)時長進行管理;數(shù)據(jù)處理模塊s63包括數(shù)據(jù)存儲器和數(shù)據(jù)存儲控制單元,數(shù)據(jù)存儲控制單元的功能上述地址存儲控制單元,數(shù)據(jù)存儲控制單元控制數(shù)據(jù)存儲器,并對數(shù)據(jù)存儲器執(zhí)行數(shù)據(jù)讀取和寫入操作;此外,選擇器s64,用于選擇從數(shù)據(jù)存儲器中或通過存儲控制器s3獲取報文流號對應(yīng)的舊數(shù)據(jù)并寫入運算單元s5,可以理解,通過存儲控制器s3獲取的舊數(shù)據(jù)實際上是來自片外隨機尋址存儲器s4中的。
如圖5所示,caches6的工作過程為:
當(dāng)?shù)刂诽幚砟Ks61接收到fifos2發(fā)送的報文流號時,地址存儲控制單元判斷地址存儲器中是否存在已經(jīng)存儲了相同的報文流號,若地址存儲器中沒有存儲有相同的報文流號,地址存儲控制單元向時間處理模塊s62發(fā)送一個置位set信號,向選擇器s64發(fā)送一個命中hit信號,同時向數(shù)據(jù)處理模塊s63發(fā)送一個槽位號,其中,槽位號為根據(jù)地址存儲控制單元將地址存儲器中的存儲單元按照一定大小劃分而成的不同存儲空間的標號,同時,槽位號也可以標識出地址存儲器中不同存儲地址在數(shù)據(jù)存儲器中對應(yīng)的數(shù)據(jù)存儲空間;此外,當(dāng)?shù)刂诽幚砟Ks61接收到時間處理模塊s62發(fā)送的槽位號標識時,地址存儲控制單元控制存儲控制器將該槽位號標識對應(yīng)的槽位清零(即將地址存儲器中與槽位號標識對應(yīng)的地址刪除);
當(dāng)時間處理模塊s62接收到地址處理模塊s61發(fā)送的置位set信號時,對應(yīng)報文流號地址的計數(shù)器置位到最大數(shù)值并開始減計數(shù),當(dāng)計數(shù)器計數(shù)到0時,數(shù)據(jù)處理模塊s63將報文流號地址對應(yīng)的數(shù)據(jù)存儲空間內(nèi)的數(shù)據(jù)信息;當(dāng)計數(shù)器溢出時,時間管理單元將溢出計數(shù)器對應(yīng)的槽位號標識發(fā)送給地址處理模塊;
當(dāng)數(shù)據(jù)處理模塊s63收到地址處理模塊s61發(fā)送的槽位號后,數(shù)據(jù)存儲控制單元控制數(shù)據(jù)存儲器將報文流號對應(yīng)的數(shù)據(jù)信息寫入到該槽位號對應(yīng)的存儲地址中進行存儲;此外,當(dāng)存在數(shù)據(jù)存儲器中存儲時間超過預(yù)設(shè)時長的數(shù)據(jù)信息時,數(shù)據(jù)存儲控制單元控制數(shù)據(jù)存儲器將存儲時間超過預(yù)設(shè)時長(即上述計數(shù)器從最大值減計時到0的這段時長)的數(shù)據(jù)信息通過存儲控制器s3寫入到片外隨機尋址存儲器s4中,其中,對于預(yù)設(shè)時長,數(shù)據(jù)存儲控制器可以預(yù)選設(shè)置并獲知,對此本申請不做任何限制;例外,數(shù)據(jù)存儲控制單元還控制數(shù)據(jù)存儲器將運算單元s5發(fā)送的數(shù)據(jù)信息存儲到相應(yīng)的存儲地址中;
當(dāng)選擇器s64接收到地址存儲器發(fā)送的命中hit信號時,選擇器s64根據(jù)該命中hit信號確定當(dāng)前命中的報文流號,若選擇器s64接收到上述命中hit信號與上一次接收到的命中hit信號之間的時間間隔大于上述預(yù)設(shè)時長,或在上述預(yù)設(shè)時長內(nèi)(小于等于上述預(yù)設(shè)時長),選擇器s64接收到命中不同報文流號的命中hit信號,則選擇器s64選擇通過存儲控制器s3從外部隨機尋址存儲器s4讀取的報文流號的數(shù)據(jù)信息(即舊數(shù)據(jù)),并發(fā)送至運算單元s5;若在上述預(yù)設(shè)時長內(nèi)(小于等于上述預(yù)設(shè)時長),選擇器s64接收到命中相同報文流號的命中hit信號,則選擇器s64選擇數(shù)據(jù)處理模塊s63中數(shù)據(jù)存儲器存儲的報文流號的數(shù)據(jù)信息(即舊數(shù)據(jù)),并發(fā)送至運算單元s5中。
此外,當(dāng)運算單元s5每完成一條流信息的計算時,運算單元都會將計算后得到的數(shù)據(jù)信息(即新數(shù)據(jù))寫入到數(shù)據(jù)處理模塊s63中的數(shù)據(jù)存儲器中進行緩存。
首先,需要說明的是,舊數(shù)據(jù)和新數(shù)據(jù)是一種相對的說法,實質(zhì)上均是運算單元s5根據(jù)當(dāng)前流中的數(shù)據(jù)信息進行計算后得到的數(shù)據(jù)信息,數(shù)據(jù)的新或舊是相對于每一次運算單元s5的計算而言的,在當(dāng)前流信息到來之前數(shù)據(jù)處理模塊s63中數(shù)據(jù)存儲器緩存的,或片外隨機尋址存儲器s4中存儲的各報文流號對應(yīng)的數(shù)據(jù)信息均可以理解為舊數(shù)據(jù),當(dāng)當(dāng)前流信息到來之后,經(jīng)運算單元s5根據(jù)其中攜帶的數(shù)據(jù)信息進行計算后得到的數(shù)據(jù)信息,可以理解為新數(shù)據(jù)。應(yīng)理解,當(dāng)報文流號對應(yīng)的流信息第一次到來時,可以認為沒有舊數(shù)據(jù),或者將未計算需要而預(yù)先設(shè)置的初始化數(shù)據(jù)作為舊數(shù)據(jù)。
其次,還需要說明的是,由于caches6具有緩存作用,因此,對于片外隨機尋址存儲器s4同一地址而言,在該地址沒有被讀取的空閑時間內(nèi),caches6可以通過存儲控制器s3將數(shù)據(jù)信息寫入片外隨機尋址存儲器s4中,可以理解的是,這樣,就可以實現(xiàn)在同一時刻對片外隨機尋址存儲器s4所有存儲空間進行訪問(讀取或?qū)懭?,即實現(xiàn)對片外隨機尋址存儲器s4的滿帶寬隨機尋址訪問;同時,還可以理解的是,由于caches6的緩存作用,對于片外隨機尋址存儲器s4同一地址而言,可以使得讀取操作和寫入操作不會在同一時刻進行,從而避免了讀寫沖突,保持讀寫平衡,從而也就解決讀并寫(readandwrite,raw)競爭冒險問題。
再次,地址處理模塊s61,時間處理模塊s62和數(shù)據(jù)處理模塊s63既可以采用隨機訪問存儲器(random-accessmemory,ram)實現(xiàn),也可以使用寄存器實現(xiàn)如內(nèi)容尋址寄存器(contentaddressablememory,cam)
可選地,在一種可能的設(shè)計中,以addrcam代指地址處理模塊s61,以timermem代指時間處理模塊s62,以datamem代指數(shù)據(jù)處理模塊s63,caches6中三種處理模塊中存儲器(地址存儲器,時間存儲器和數(shù)據(jù)存儲器)的深度相同,記為n,則上述三種寄存器之間的映射關(guān)系如圖6所示,地址處理模塊s61(即addrcam)中地址存儲器與外部隨機尋址存儲器s4之間的映射關(guān)系如圖7所示,其中,圖中片外隨機尋址存儲器s4以本地存儲器localmemory表示。
其中,如圖6所示,addrcams61存儲的是預(yù)設(shè)時長內(nèi)進入caches6的報文流號對應(yīng)在片外隨機尋址存儲器s4地址中的地址,相當(dāng)于一種cache注冊機制,addrcams61中存儲的是報文流號,按照流號大小依次順序映射為片外隨機尋址存儲器s4中相應(yīng)的偏移地址,而addrcams61本身地址則對應(yīng)cache中其他存儲器地址;
timermems62存儲的是caches6每個報文流號對應(yīng)的流表項的生命周期即預(yù)設(shè)時長,timermems62每個槽位(即地址存儲器中的存儲單元)生命周期采用獨立的減計數(shù)器實現(xiàn),流表項每占用一次timermems62槽位,則該槽位計數(shù)器復(fù)位一次到設(shè)定最大值,直到計數(shù)值減到設(shè)定的最小值,則清除該槽位流表項;
datamems63存儲的是caches6每個流表項具體數(shù)據(jù)信息內(nèi)容,為片外隨機尋址存儲器s4中內(nèi)容的鏡像,其中,未占用的槽位存儲內(nèi)容為空(即null)。
可以理解的是,該caches6采用一種cache淘汰算法:時間滑動窗口機制(slidingtime-basedexpiration,stbe)。該機制給cache中每個槽位提供一個生命時鐘,槽位命中或更新或生命時鐘本身溢出時,該槽位生命周期復(fù)位。因此該生命時鐘相當(dāng)于一個根據(jù)報文命中情況的時間滑動窗口。若時間滑動窗口內(nèi)有相同流號的報文請求讀-修改-寫片外隨機可讀存儲器s4,則該條隨機流只有第一個報文讀片外隨機可讀存儲器s4,而后續(xù)報文則依次讀該條隨機流前一次生成的緩存結(jié)果,每個報文結(jié)果依次寫入片外隨機可讀存儲器s4。
如圖8(a)為caches6時間滑動窗口機制下的時序圖,new/hit、getdata和modify三個信號均為運算單元s5中對舊數(shù)據(jù)進行修改得到新數(shù)據(jù)的時序,其中,slidewindowmin為最小時間滑動窗口對應(yīng)的時長,slidewindowmax為最大時間滑動窗口對應(yīng)的時長;rd_emd信號、rd_vld信號、wr_emd信號、rd_cmd’信號和wr_cmd’信號分別與上述圖4(b)中時序1、時序2、時序3、時序4和時序5相類似,其相關(guān)描述可以參閱圖4(b)對應(yīng)的相關(guān)描述,對此此處不再贅述。此外,圖8(a)中mem和cache分別與圖4(a)中的片外隨機尋址存儲器s4和caches6相對應(yīng),strm0表示一個任務(wù)的隨機流,與后文描述中task類似,invld表示rd_vld信號輸入至fifos2中對應(yīng)的時刻。最后,對于圖8(a)中的其他相關(guān)描述還可以參閱上述圖4(a)和圖5的相關(guān)描述,對此此處也不再贅述。
需要說明的是,使用該時間滑動窗口機制后,該系統(tǒng)能解決(ml-tclk)~trd時間內(nèi)片外隨機尋址存儲器s4的raw競爭冒險問題,也即時間滑動窗口檢測范圍為(ml-tclk)~trd
極限情況下,每個時鐘周期都會有報文到達,而存儲器控制器s3端到端操作時延相對時鐘周期可能非常大,如無特殊處理,就會導(dǎo)致下一個同流號報文從片外隨機尋址存儲器s4讀取的結(jié)果并非上次更新過的結(jié)果,導(dǎo)致ram競爭冒險。而引入該時間滑動窗口機制后,則可保證當(dāng)前報文到達后的trd時間內(nèi)同流號報文在不讀片外隨機尋址存儲器s4的情況下能正確運算并寫回片外隨機尋址存儲器s4。
在圖8(a)的示例中,在caches6尚空的情況下,兩條尋址地址相同的流相隔ml-tclk時間到來,第一條流沒有命中caches6,因此占用一個cache槽位,讀取的舊數(shù)據(jù)為片外隨機尋址存儲器s4中數(shù)據(jù);而第二條流到來時,第一條流則處在第二條流往前(ml-tclk)~trd的時間窗口內(nèi),因此會被命中,讀取的舊數(shù)據(jù)為第一條流生成并緩存至caches6中的數(shù)據(jù)。
在運算單元s5一種可能的計算方式為:運算單元s5根據(jù)旁路轉(zhuǎn)發(fā)流水線機制對目標流號對應(yīng)的舊數(shù)據(jù)進行運算得到新數(shù)據(jù)。如圖8(b)所示為,未采用旁路轉(zhuǎn)發(fā)流水線機制時,數(shù)據(jù)raw競爭冒險時的流水線時空圖,圖9、圖10和圖11分別為采用旁路轉(zhuǎn)發(fā)流水線機制時的流水線時空圖。
如圖8(b)所示,未使用旁路轉(zhuǎn)發(fā)流水線機制時,task0為當(dāng)前周期正在處理的任務(wù),task1為剛到來的下一周期任務(wù),當(dāng)task1在task0的讀-修改-寫周期中任一個周期(讀周期rd0,修改周期mf0,寫周期wr0)到來時,運算單元s5不能同時處理task0和task1,便會出現(xiàn)擁堵,如圖8所示,當(dāng)task1在task0在task0的mf0周期內(nèi)到達時,將會出現(xiàn)兩個周期(mf0和wr0)的擁堵。
如圖9所示,使用旁路轉(zhuǎn)發(fā)流水線機制之后的一種工作狀態(tài),圖9表示相鄰任務(wù)數(shù)據(jù)raw冒險,task1到來時,task0處在task1往前1周期的最小時間滑動窗口內(nèi),task1的運算輸入級直接從task0的運算輸出級獲取數(shù)據(jù),也可以理解為,在最小時間窗口內(nèi)(如預(yù)設(shè)時長內(nèi))有兩個相鄰且報文流號相同的隨機流相繼進入運算單元s5,此時,直接將先來隨機流的緩存于caches6中新數(shù)據(jù)直接作為后來隨機流的舊數(shù)據(jù)進行再次計算,類似選擇器s64的選擇功能,此處不再贅述。
如圖10所示,使用旁路轉(zhuǎn)發(fā)流水線機制之后的另一種工作狀態(tài),圖10表示間隔任務(wù)書數(shù)據(jù)raw競爭冒險,task1到來時,其時間滑動窗口內(nèi)無片外隨機尋址存儲器s4的重復(fù)尋址,而當(dāng)task2到來時,task0處在task2往前2周期的最大時間滑動窗口內(nèi),此時,直接將task2的運算輸入級直接從task0的運算輸出級獲取數(shù)據(jù),另一種理解看參閱圖9中相應(yīng)的描述,此處不再贅述。
如圖11所示,使用旁路轉(zhuǎn)發(fā)流水線機制之后的又一種工作狀態(tài),圖11表示時間滑動窗口內(nèi)任務(wù)之間無數(shù)據(jù)raw冒險,task1和task2相繼到來時,各任務(wù)往前的時間滑動窗口內(nèi)均無對片外隨機尋址存儲器s4的重復(fù)尋址,因此,各任務(wù)均從外部隨機尋址存儲器中獲取數(shù)據(jù)。
可選地,在一種可能的實現(xiàn)方式中,在使用旁路流水線轉(zhuǎn)發(fā)機制時,還可以結(jié)合多副本運算技術(shù)進一步降低實現(xiàn)旁路流水線轉(zhuǎn)發(fā)機制的難度,當(dāng)然,此方法不是唯一的降低實現(xiàn)難度的方式,對于其他可以達到相似技術(shù)效果的方案本申請也不做任何限制。
可以理解的是,從fifos2接收到讀有效信號開始至運算單元s5對舊數(shù)據(jù)進行運算得到新數(shù)據(jù)的這段時長,為對舊數(shù)據(jù)的修改時長,在此過程中,實現(xiàn)了對舊數(shù)據(jù)的修改。
步驟4:運算單元s5將計算得到的新數(shù)據(jù)寫入caches6中進行緩存,其次,caches6將該新數(shù)據(jù)寫入存儲控制器s3中,以使得存儲控制器s3將該新數(shù)據(jù)寫回片外隨機尋址存儲器s4中進行存儲,以作為下一次相同報文流號的隨機流到來時的舊數(shù)據(jù)使用。
可選地,在一種可能的實現(xiàn)方式中,運算單元s5將計算得到的新數(shù)據(jù)寫入caches6中的數(shù)據(jù)存儲器s63中,caches6根據(jù)圖7所示的映射關(guān)系確定目標地址(片外隨機尋址存儲器中的地址),并將新數(shù)據(jù)和目標地址寫入存儲控制器s3中,最終,由存儲控制器s3將新數(shù)據(jù)寫入片外隨機尋址存儲器中的目標地址中進行存儲。
可以理解的是,步驟4為新數(shù)據(jù)的寫入過程,因此,實現(xiàn)了對新數(shù)據(jù)的寫入功能。
步驟5:可選地,數(shù)據(jù)上傳模塊s7根據(jù)預(yù)設(shè)規(guī)則通過存儲控制器讀取片外隨機尋址存儲器s4中存儲的數(shù)據(jù),以為其他應(yīng)用提供數(shù)據(jù)支持。
還需要說明的是,本申請實施例中運算單元s5對舊數(shù)據(jù)的運算可以是強實時性業(yè)務(wù)的計算操作,也可以是弱實時性業(yè)務(wù)的計算操作,本申請實施例對此不做任何限制。
最后,需要說明的是,本申請流處理器中的各模塊可以是基于asic和/或fpga基礎(chǔ)之上實現(xiàn)各模塊功能的電路,對此本申請不做任何限制。
本申請實施例中,由于流處理器中包括fifo和cache,一方面,由于fifo具有先進先出的特性,并且可以存儲一定數(shù)量的流信息,這樣,當(dāng)流處理器獲取目標流號對應(yīng)的舊數(shù)據(jù)時,其他流信息依然可以進入到fifo中進行存儲,各流信息不用排隊等待,縮短流處理周期;另一方面,cache既可以緩存舊數(shù)據(jù),因此,在某種情況下可以直接為運算單元直接提供舊數(shù)據(jù)支持,加快流處理速度,也可以緩存新數(shù)據(jù),在流處理過程中便可以不必將新數(shù)據(jù)寫入外部存儲器中,可以理解緩存速度遠高于外部存儲器的數(shù)據(jù)寫入速度,也從一定程度上縮短了流處理器的流處理周期?;谝陨蟽煞矫?,本申請中流處理器可以將流處理器的流處理周期從對數(shù)據(jù)的讀-修改-寫延遲時長減小約至數(shù)據(jù)的修改延遲時長(即運算單元由舊數(shù)據(jù)計算得到新數(shù)據(jù)所需的時長),因此,本申請可以有效地縮短流處理器的流處理周期,提高流處理速度,從而提升流處理器對強實時性業(yè)務(wù)的處理能力,處理對實時性要求更高的業(yè)務(wù)。
進一步地,通過以上步驟可以實現(xiàn)線速隨機流100%命中、報文處理無遺漏,顯著提升在100ge/400ge超寬帶ip、流式計算硬件加速等領(lǐng)域的強實時性處理和存儲能力。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,以上實施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡管參照前述實施例對本申請進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請各實施例技術(shù)方案的范圍。