專利名稱:使用加時間戳和中央控制器由多個適配器對數(shù)據(jù)幀進行的分布式處理的制作方法
技術領域:
本發(fā)明涉及輔助完成并行接收若干數(shù)據(jù)分組,同時確保其集中式地址產生的設備。
發(fā)明內容
在第一方面,本發(fā)明涉及一種用于接收和轉發(fā)數(shù)據(jù)分組的設備,所述設備包括控制單元和多個物理上分離的數(shù)據(jù)接收和轉發(fā)單元,每個數(shù)據(jù)接收和轉發(fā)單元包括-用于接收或訪問數(shù)據(jù)分組的裝置,
-用于確定接收/訪問所述數(shù)據(jù)分組的時間點的裝置,所述確定裝置包括時鐘裝置,所有確定裝置的時鐘裝置是同步的,-用于輸出包括所述時間點在內的第一信息的裝置,-用于接收地址的裝置,所述地址用于存儲所述數(shù)據(jù)分組的至少一部分;以及-用于輔助完成在所述地址處存儲所述數(shù)據(jù)分組的至少一部分的裝置,所述控制單元包括-用于接收所述第一信息并導出接收/訪問所述數(shù)據(jù)分組的時間點的裝置,-與所述確定裝置的時鐘裝置同步的時鐘,以及用于針對接收到的每一條第一信息,在所導出的時間點加上預定時間延遲所在的時間點或之后的時間點,確定地址,并將所述地址返回給相關的數(shù)據(jù)接收和轉發(fā)單元的接收裝置的裝置。在本上下文中,由若干分離單元來形成所述設備,比如,所述控制單元與所述接收/轉發(fā)單元分離,但是它們互聯(lián)以交換數(shù)據(jù)。該交換可以在任何數(shù)據(jù)傳輸協(xié)議(比如TCP、以太網、藍牙等)下進行,且使用任何類型的數(shù)據(jù)傳輸(有線或無線)。此外,將所述接收/轉發(fā)單元提供為物理上分離的多塊硬件,比如用分離的PCB、處理器、FPGA等來實現(xiàn)各塊。在這方面,物理上分離意味著單元是可互聯(lián),從而能夠通信(通過有線或無線),但是連接可被打斷,且可以替換或添加/移除接收/轉發(fā)單元,以改變裝置的能力。自然地,一個PCB/處理器/FPGA可以形成多個接收/轉發(fā)單元,其中,可以替換/移除/添加這樣的接收/轉發(fā)單元組??刂茊卧梢耘c接收/轉發(fā)單元分離,或者可以形成一個或多個接收/轉發(fā)單元的一部分。自然地,可以將接收/轉發(fā)單元的各個裝置獲得或成形為單獨的單元,比如(軟件控制的或硬連線的)處理器、FPGA、專用電路、ASICS等。備選地,可以將多個這種裝置組合為單個這種處理器等等。自然地,可以使用任意數(shù)目的接收/轉發(fā)單元。當使用多個接收/轉發(fā)單元時,可以執(zhí)行并行接收和存儲??梢允褂萌魏螖?shù)目的接收/轉發(fā)單元,比如2、3、4、5、6、7、8、10、
15、20或更多個。如下面進一步描述的,所有這些接收/轉發(fā)單元可以是相同或接近相同的,或者可以將它們具體實現(xiàn)或創(chuàng)建為具有不同操作的不同電路。每個接收/轉發(fā)單元可以具有控制單元,但是僅需要一個。在另一情況下,僅一個接收/轉發(fā)單元包括控制單元,但是其其它方面與其余的接收/轉發(fā)單元相同。訪問/接收裝置可以實際接收和/或存儲數(shù)據(jù)或數(shù)據(jù)分組。備選地,可以在另一位置處或在與該接收/轉發(fā)單元通信的設備中接收或存儲數(shù)據(jù)分組,從而通過讀取同時存儲在另一設備中的數(shù)據(jù)來遠程訪問數(shù)據(jù)分組的數(shù)據(jù)。由于遠程訪問數(shù)據(jù)分組,后者通常將提供較慢的處理。即使沒那么優(yōu)選,接收的地址也可以不是要存儲數(shù)據(jù)分組的存儲單元中的實際地址。備選地,可以接收根據(jù)其可以導出該地址的信息。所述接收和轉發(fā)單元的確定裝置均包括時鐘裝置,所有確定裝置的時鐘裝置是同步的。在該方面,“同步”將意味著所有時鐘裝置同時將在預定容限內輸出相同時間點。從而,不同時鐘裝置的時間點是可比的??梢酝ㄟ^在時鐘裝置和/或控制單元之間交換時鐘信號來確保該同步。在該方面,“容限”可以在1、2、3、5、10或更多時鐘周期內,或者可以在 由時鐘裝置定義的定時單位內。在一個實施例中,可以簡單地將全局時鐘輸出到所有確定裝置,然后時鐘裝置接收該時鐘。備選地,所述確定裝置均包括用于產生時鐘信號的裝置。從而,接著使用用于同步該時鐘信號的策略。一般而言,可以將時間點表示為時間和日期,或者可以表示為數(shù)字,比如以等距時間點遞增/遞減的數(shù)字。自然地,如果需要,該數(shù)目可以環(huán)回。所述輔助完成裝置可以直接在例如存儲單元中存儲數(shù)據(jù)分組的至少一部分,比如通過數(shù)據(jù)連接,或者如果存儲在另一位置,其可以輔助完成存儲數(shù)據(jù)分組。然后,可以向該另一位置傳輸該地址,然后該另一位置處理對數(shù)據(jù)分組的存儲。自然地,所述接收/訪問裝置、所述轉發(fā)裝置和所述輔助完成裝置可以包括用于根據(jù)需要來處理該操作并傳輸數(shù)據(jù)所需的驅動器、連接器等等??梢杂扇魏晤愋偷?硬連線或軟件控制的)處理器來形成所述控制單元,或者所述控制單元可以是專用電路。所述控制單元的操作是確定各個數(shù)據(jù)分組的地址。這樣,如果需要,則可以獲得數(shù)據(jù)分組的排序。至少根據(jù)時間點來確定地址,且其目的可以是按照接收順序來擁有數(shù)據(jù)分組或其一部分。在另一情況下,所述第一信息包括與數(shù)據(jù)分組相關的附加信息(下面將進一步描述),以確定數(shù)據(jù)分組的流/類型等。從而,不僅時間點可以用于確定地址,特定流或類型的數(shù)據(jù)分組也可以一起存儲。然而,直到在接收/訪問時間點之后經過預定時間延遲才執(zhí)行對地址的實際確定,以確保更晚接收到的第一信息不涉及實際比相關數(shù)據(jù)分組更早接收到的數(shù)據(jù)分組或至少提高其概率。從而,已收集了更多知識,從而提高了提供正確地址的概率。從而,所述控制單元還具有要么作為全局時鐘信號的接收機,要么作為本地時鐘信號提供器的時鐘裝置。自然地,一些控制器單元以及接收和轉發(fā)單元可以接收全局時鐘,且其他控制器單元以及接收和轉發(fā)單元可以具有接著與全局時鐘同步的本地時鐘信號提供器。與較早接收到的數(shù)據(jù)分組相關的第一信息不在較晚時間點到達控制單元的原因可以是處理延遲(忙碌的數(shù)據(jù)接收和轉發(fā)單元)或在該數(shù)據(jù)接收和轉發(fā)單元以及該控制單元之間的通信的延遲。該預定延遲可以是任意數(shù)目的時鐘周期,比如1、2、3、4、5、6、7、
8、19、15、29、39、40或更多的時鐘周期,或任意時間周期,比如100ns、200ns、300ns、500ns、750ns、lms、5ms、IOms 或更多??刂茊卧獙⑨槍γ織l第一信息且從而針對每個數(shù)據(jù)分組,返回地址。在該方面,數(shù)據(jù)分組可以是要在網絡、數(shù)據(jù)線纜、數(shù)據(jù)總線、干線等上發(fā)送的或要由網絡、數(shù)據(jù)線纜、數(shù)據(jù)總線、干線等傳輸?shù)娜魏晤愋偷臄?shù)據(jù)單元。一般而言,數(shù)據(jù)單元符合一個或多個數(shù)據(jù)標準(比如以太網標準),在以太網標準這一統(tǒng)稱下,存在若干不同標準或數(shù)據(jù)分組類型,比如UDP和TCP數(shù)據(jù)分組。數(shù)據(jù)分組通常具有若干不同信息項或類型,比如地址數(shù)據(jù)、有效載荷等等,它們各自位于數(shù)據(jù)分組中已經定義的或已知的位置上。這種位置和類型對于不同的數(shù)據(jù)分組類型通常將不同,但是在分析中可以導出、改變和/或使用各個數(shù)據(jù)項(比如地址數(shù)據(jù)和/或有效載荷)之后,通??梢愿鶕?jù)實際數(shù)據(jù)分組來確定數(shù)據(jù) 分組類型,且從而確定其各個內容的位置??梢愿鶕?jù)數(shù)據(jù)分組直接導出類型或標準,比如當分組的特定數(shù)據(jù)項標識類型/標準時,或者可以根據(jù)從數(shù)據(jù)分組導出的數(shù)據(jù)來導出類型或標準,比如基于對數(shù)據(jù)分組的數(shù)據(jù)項的類型和位置進行識別以及后續(xù)對可以在這樣的位置上發(fā)現(xiàn)這樣的數(shù)據(jù)的數(shù)據(jù)分組的類型或標準進行確定??梢源鎯?shù)據(jù)分組的任何部分。如果不再需要輸出數(shù)據(jù)分組,則可以例如刪除其中的尋址信息,以不占用空間??梢詫?shù)據(jù)分組排序,且如果這樣做,可以按多種方式并出于多種理由對數(shù)據(jù)分組排序。通常,在計算機之間的數(shù)據(jù)交換是文件傳輸、TCP傳輸、VoIP等,其中,各個分組的順序是重要的。通常,這種傳輸被稱為流。數(shù)據(jù)分組的流一般是從單一發(fā)射機向一個或多個接收機發(fā)送的數(shù)據(jù)分組序列。這些數(shù)據(jù)分組涉及例如以較小部分發(fā)送的作為分組的有效載荷的單一文件等。此時,發(fā)射機和接收機、或任何中間網絡單元通常將具有也在分組中表示的地址。此外,取決于各個數(shù)據(jù)分組標準,其他流識別信息可以存在于數(shù)據(jù)分組中。從而,可以基于例如地址和/或流識別信息來識別流,由此如果使用一致,可以導出相同的信息,且任何后續(xù)過程可以僅根據(jù)該信息來識別流。然后,可以在分別的隊列中存儲每個流的分組。在另一情況下,數(shù)據(jù)分組中可以具有確定其順序的信息,比如序列號。從而,該信息可以用于對分組排序。本發(fā)明的第二方面涉及一種組件(assembly),其包括根據(jù)第一方面的設備和存儲器,所述存儲器包括可以存儲數(shù)據(jù)的多個地址,所述輔助完成裝置適于在所述存儲器中接收到的地址處存儲所述數(shù)據(jù)分組的至少一部分。自然地,所述存儲單元可以是任何形式的存儲單元,比如單片存儲單元或由在空間上分離的若干存儲單元構成的一個存儲單元。常用的存儲技術基于硬盤、軟盤、RAM、R0M、PROM、EPROM、EEPR0M、閃存、存儲卡、CD-ROM、DVD、存儲卡等。如果提供分離的存儲單元,所述地址將描述實際存儲單元的標識及其中的“本地地址”。數(shù)據(jù)分組可以具有不同的大小,然后可以占用不同數(shù)目的地址。優(yōu)選地,在存儲器中將多個隊列定義為分離的或不重疊的地址組,所述控制單元的確定裝置適于根據(jù)所述第一信息來確定要將相關數(shù)據(jù)分組添加至的隊列,并從相關隊列的地址組中選擇地址。在該方面,當沒有地址是2個組或2個隊列的一部分時,地址組是不重疊的。優(yōu)選地,隊列包括多個連續(xù)地址,但這不是必要條件。優(yōu)選地,所述控制單元的確定裝置適于在所確定的隊列中確定地址,使得按照接收/訪問的順序在所述隊列中存儲數(shù)據(jù)分組。從而,預定的時間延遲用于確保與可能發(fā)生的任何延遲無關地按照接收/訪問順序來存儲數(shù)據(jù)分組或至少提高其概率。
特別讓人感興趣的實施例是還包括用于從存儲器中讀取數(shù)據(jù)或使數(shù)據(jù)從存儲器中出隊的裝置,所述讀取/出隊裝置包括用于輸出第二信息的裝置,所述第二信息與數(shù)據(jù)已被讀取/移出隊列或將被讀取/移出隊列的存儲裝置的一個或多個地址相關。從而,當確定了地址時,將數(shù)據(jù)添加到隊列發(fā)生,且在讀取/出隊時,移除數(shù)據(jù)?;谠撔畔ⅲ梢源_定并更新隊列的內容。在一個實施例中,控制單元適于針對每個隊列,保持寫指針和讀指針,所述寫指針標識要添加數(shù)據(jù)的下一個地址或添加了數(shù)據(jù)的上一個地址,所述讀指針標識要從隊列中讀取/出隊的下一個地址或已讀取/出隊的上一個地址。所述控制裝置適于-當確定了地址時,更新與所確定地址相關的隊列的寫指針,-基于所接收的第二信息(比如,根據(jù)上述第二信息),更新已從中移出數(shù)據(jù)的隊列的讀指針,以及-還基于所述隊列的讀指針和寫指針來確定所述地址。在一個情況下,還可以基于對隊列的填充級別的確定,來基于所述讀/寫指針確定所述地址。明顯地,可以根據(jù)隊列的讀和寫指針來確定隊列的數(shù)據(jù)量。在本上下文中,填充級別可以涉及在隊列中存在的數(shù)據(jù)分組的數(shù)目或由隊列占用的可尋址單元的數(shù)目。當將該數(shù)目/量與最大數(shù)目/量相比時,可以將該填充級別表示為數(shù)據(jù)/分組/地址的量/數(shù)目或表示為百分比??梢葬槍γ總€隊列、隊列組或針對所有隊列來確定該填充級別。在優(yōu)選實施例中,所述控制裝置適于當隊列的填充級別超過預定值時,指示所述讀取/出隊裝置的輸出裝置輸出第二信息,所述第二信息與已被讀取或將被讀取的地址相關。在該情況下,當確定了地址時,可能希望知道數(shù)據(jù)分組或至少其一部分的大小,因為該大小將確定其占用的可尋址單元的數(shù)目。從而下一個數(shù)據(jù)分組的地址將取決于此。當更新讀指針時,可能希望第二信息標識所有已釋放的可尋址單元的地址,或僅標識在要讀取的下一個數(shù)據(jù)分組或新釋放的地址之間的邊界處的地址。該地址可以是下一個數(shù)據(jù)分組的第一地址或已釋放的地址中的最后一個地址。在該情況下,不過于頻繁地輸出第二信息,從而不過于頻繁地輸出讀指針。該數(shù)據(jù)傳輸可以占用數(shù)據(jù)路徑上的帶寬,經由該數(shù)據(jù)路徑將數(shù)據(jù)存儲在存儲裝置中。在存儲期間,由控制單元來更新寫指針,且當不更新讀指針時,隊列從而看起來增長。自然地,可以經常向讀取/出隊裝置轉發(fā)寫指針,以確保這些寫指針不變?yōu)榭臻e,如果隊列的已更新的讀指針和未更新的寫指針一起指示隊列為空,則將是這種情況。從而,所述控制裝置可以當確定了地址時,向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。從而,可以完全更新所述讀取/出隊裝置。最優(yōu)選的是所述輔助完成裝置適于向所述控制單元通知何時存儲了所述數(shù)據(jù)分組的至少一部分,且所述控制單元適于當已被所述輔助完成裝置通知時,向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。從而,僅在已存儲了數(shù)據(jù)時,才更新所述寫指針。此時,避免了 所述讀取/出隊裝置對具有更新后的寫指針但尚未接收到數(shù)據(jù)的地址進行讀取/出隊。當一個或多個隊列或所有隊列或全部存儲器的填充級別超過限制時,更新所述讀指針,使得所述隊列的實際填充級別對于所述控制單元可用 。優(yōu)選地,每次存儲了數(shù)據(jù)分組(或其一部分)時,更新寫指針,且通知所述讀取/出隊裝置。然而,由于為了將數(shù)據(jù)存儲/讀取/出隊,優(yōu)選地保留了在所述存儲裝置和所述數(shù)據(jù)接收/轉發(fā)單元之間的帶寬,因此每次保存數(shù)據(jù)分組時可能不希望轉發(fā)更新后的寫指針,而希望(通過在更新讀取/出隊裝置之前,多次更新本地寫指針)將這種信息加以蓄積,且例如在去往/來自所述存儲裝置的帶寬要求允許發(fā)送時,發(fā)送該更新。然而,可以確定必須在從上一次更新起已經過最大時間限制之前發(fā)送更新。優(yōu)選地,將存儲隊列的地址分配為連續(xù)地址。這樣,通過簡單地將讀和寫指針彼此相減,來確定隊列中當前占用的地址數(shù)目,從而容易地確定填充級別等。然而,提供大量連續(xù)地址在現(xiàn)實系統(tǒng)中可能是成問題的。在標準的存儲系統(tǒng)中,分配最大大小例如4MB的塊或段。在段/塊中,地址是連續(xù)的,但是由于段/塊可以在存儲器中隨機分配,因此全部地址可以不是連續(xù)的。在這種情況下,將所述存儲單元的隊列的地址分為具有預定數(shù)目個物理地址的組,這些組位于非連續(xù)的位置。在該方面,“非連續(xù)”意味著在存儲器空間中,這些組不是相鄰位置的(具有跨組邊界的連續(xù)地址)。此時,實現(xiàn)隊列的地址優(yōu)選地是被定義為連續(xù)地址的虛擬地址,所述控制單元還包括用于在虛擬地址和物理地址之間進行轉換的裝置。從而,可以分配任何數(shù)目的連續(xù)虛擬地址,然后將虛擬地址轉換為實際的物理地址。獲得此目的的一種方式如下所述存儲單元具有若干可分配段/塊,每個物理地址組定義了可分配塊/段之一中的地址,可用第一數(shù)目個比特的地址來識別每個塊/段,可使用第二數(shù)目個比特來尋址塊/段中的所有地址,物理地址具有與第一數(shù)目個比特和第二數(shù)目個比特之和相對應的數(shù)目個比特,虛擬地址均包括第一部分和第二部分,所述第一部分至少具有所述第一數(shù)目個比特,所述第二部分至少具有所述第二數(shù)目個比特,其中,所述轉換裝置適于將所述虛擬地址的第一部分轉換為第三部分,所述第三部分具有所述第一數(shù)目個比特,并標識已分配的塊/段,以及產生所述物理地址,作為具有所述第三部分和所述第一部分的地址。在優(yōu)選實施例中,所述確定裝置適于通過以下步驟來選擇地址-針對接收/訪問的數(shù)據(jù)分組,比如根據(jù)第一信息,確定第二隊列組,每個第二隊列組包括來自每個第一隊列組的一個隊列,所述第二隊列組的隊列是不重疊的,-如果所確定的第二組的當前選擇的第一隊列的填充級別超過預定級別,識別并選擇所確定的第二組的第二隊列,-選擇所述地址,作為所識別的第二隊列的地址,
所述組件還包括用于指示與所識別并選擇的第二隊列相關的所述讀取/出隊裝置直到具有超過預定級別的第一隊列為空才處理該隊列的裝置。在該實施例中,可以獲得在過程/處理器之間的負載平衡,同時維持任何第二組中的分組的處理/出隊的排序。特別在出隊和/或分析/處理數(shù)據(jù)分組時所存儲的數(shù)據(jù)分組(或至少其一部分)的排序很重要時,一旦讀取/出隊裝置已開始使數(shù)據(jù)分組出隊/處理數(shù)據(jù)分組,難以向另一讀取/出隊裝置分配這種數(shù)據(jù)分組。使用本實施例,將每個這樣的數(shù)據(jù)分組的組(通常是流)分配給第二隊列組,每個第二隊列組具有由分離的讀取/出隊裝置來出隊/處理的分離隊列。從而,如果當前存儲數(shù)據(jù)分組的且由第一讀取/出隊裝置出隊的隊列變得過長,即,第一讀取/出隊裝置過于忙碌,則判定從相同的第二組中識別由第二讀取/出隊裝置出隊的另一隊列,但是在第一讀取/出隊裝置將所有數(shù)據(jù)分組從相關第二組中的其隊列中出隊之前,不允許第二讀取/出隊裝置使數(shù)據(jù)分組出隊。這樣,在讀取/出隊裝置之間維持了數(shù)據(jù)分組的出隊排序。
在第三方面中,本發(fā)明涉及根據(jù)第一方面來操作設備的方法,所述方法包括初始時,同步所有確定裝置的時鐘裝置,隨后每個數(shù)據(jù)接收和轉發(fā)單元-接收或訪問數(shù)據(jù)分組,-確定接收/訪問所述數(shù)據(jù)分組的時間點,所述確定步驟包括從所述數(shù)據(jù)接收和轉發(fā)單元的時鐘裝置接收接收時間,-輸出包括所述時間點的第一信息,-接收用于存儲所述數(shù)據(jù)分組的至少一部分的地址,以及-輔助完成在所述地址處存儲所述數(shù)據(jù)分組的至少一部分,以及所述控制單元-接收所述第一信息,并導出接收/訪問所述數(shù)據(jù)分組的時間,以及針對接收到的每條第一信息,在所述接收/訪問時間點加上預定時間延遲所在的時間點或之后的時間點,確定地址,并將所述地址返回給相關數(shù)據(jù)接收和轉發(fā)單元的接收
>J-U裝直。如上所述,對數(shù)據(jù)分組的訪問可以不要求在設備中對其接收,而可以是在與該設備通信的遠程單元處接收和/或存儲時訪問該數(shù)據(jù)分組。該同步步驟可以是任何所需同步。全局時鐘可以是分布式的,和/或讀取/轉發(fā)單元具有分離的時鐘,其中,同步可以是將所有其他時鐘與一個讀取/轉發(fā)單元的時鐘、控制單元的時鐘信號、或全局時鐘同步。在一個實施例中,所述輔助完成步驟包括在包括多個地址的存儲器中在接收到的地址處存儲所述數(shù)據(jù)分組的至少一部分,在所述多個地址處可以存儲數(shù)據(jù)。該存儲優(yōu)選地作為DMA通信來處理。然后,可以在存儲器中將多個隊列定義為分離或不重疊的地址組,所述確定步驟包括根據(jù)所述第一信息來確定要添加相關數(shù)據(jù)分組的隊列,并從相關隊列的地址組中選擇地址。
優(yōu)選地,確定所述地址的步驟包括確定地址,使得在一個或多個隊列中,按照對數(shù)據(jù)分組的接收/訪問順序來存儲所述數(shù)據(jù)分組的至少一部分。在一個情況下,所述方法還包括從所述存儲器中讀取數(shù)據(jù)或使數(shù)據(jù)從存儲器中出隊的步驟,所述讀取步驟包括輸出第二信息,所述第二信息與數(shù)據(jù)已被讀取/移出隊列或將被讀取/移出隊列的存儲裝置的一個或多個地址相關。在優(yōu)選實施例中,所述控制單元針對每個隊列保持寫指針和讀指針,所述寫指針標識要添加數(shù)據(jù)的下一個地址或添加了數(shù)據(jù)的上一個地址,以及所述讀指針標識要從隊列中讀取/出隊的下一個地址或已讀取/出隊的上一個地址。所述控制裝置-在確定了地址時,更新與所確定地址相關的隊列的寫指針,
-基于所接收的第二信息(比如,根據(jù)上述第二信息),更新已從中移出數(shù)據(jù)的隊列的讀指針,以及-還基于所述隊列的讀和寫指針,確定所述地址。如上所述,還可以基于所述隊列的填充級別來執(zhí)行該確定。在一個情況下,當隊列的填充級別超過預定值時,所述控制裝置指示讀取/出隊裝置輸出與數(shù)據(jù)已被讀取或將被讀取的地址相關的第二信息。然后,所述確定步驟可以包括向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。在一個情況下,確定步驟包括當確定了地址時,向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。然而優(yōu)選地,所述輔助完成步驟包括向所述控制單元通知何時存儲了所述數(shù)據(jù)分組的至少一部分,且其中,當已被所述方便裝置通知時,所述控制單元向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。從而,直到已在所確定的地址中存儲了數(shù)據(jù)才更新寫指針。在一個實施例中,將所述存儲器的隊列的地址分為具有預定數(shù)目個物理地址的組,這些組位于非連續(xù)的位置,并且其中,實現(xiàn)隊列的地址優(yōu)選地是被定義為連續(xù)地址的虛擬地址,所述確定步驟還包括在虛擬地址和物理地址之間進行轉換。
下面,將參照附圖來描述本發(fā)明的優(yōu)選實施例,在附圖中-圖I示出了根據(jù)本發(fā)明的設備和組件,-圖2示出了從虛擬地址到物理地址的轉換,-圖3示出了在圖I的分配器和適配器之間的時鐘同步,-圖4示出了按時間順序對隨機接收的分組進行排序的方式,-圖5示出了在維持數(shù)據(jù)分組之間的順序的同時在處理器之間的負載平衡,以及-圖6示出了適配器中的負載平衡。
具體實施例方式在圖I中,示出了用于分析和轉發(fā)數(shù)據(jù)幀的裝置的實施例10,其具有若干適配器12,適配器12均連接到網絡(比如WWW)并從網絡接收數(shù)據(jù)。
一般而言,該類型的系統(tǒng)可以用于接收大量的數(shù)據(jù)分組,且輔助完成以合適的方式對其進行存儲和/或轉發(fā)。通常在由本系統(tǒng)監(jiān)測的數(shù)據(jù)連接上,在計算機或網絡的對之間發(fā)送這些數(shù)據(jù)分組。從而,數(shù)據(jù)分組一般不尋址到本系統(tǒng)或來自本系統(tǒng)。當存儲時,該數(shù)據(jù)可以由一個或多個后續(xù)過程或處理器(未示出)來處理。為了能夠處理非常大量的數(shù)據(jù),期望結構化的存儲,以實現(xiàn)對數(shù)據(jù)快速但是結構化的檢索。此外,當單一處理器不夠用時,提供多個處理器,從而期望針對每個處理器對數(shù)據(jù)分離存儲。處理器可以用于分析數(shù)據(jù)業(yè)務,以取決于處理器中的處理的結果,存儲數(shù)據(jù)和/或向其他網絡單元、計算機等發(fā)送數(shù)據(jù)。備選地或附加地,可能期望后續(xù)再次輸出數(shù)據(jù),從而還可以或備選地期望以輸出所需的方式或順序來存儲數(shù)據(jù)。一般而言,數(shù)據(jù)分組是數(shù)據(jù)分組流的一部分。當兩個處理器或計算機交互時,交換數(shù)據(jù)分組的流。該流可以是文件傳輸或音頻/視頻的交換,比如基于IP的語音。流是相似的數(shù)據(jù)分組的序列,且可確定數(shù)據(jù)分組屬于流,并且期望將流的所有數(shù)據(jù)分組按照期望順序存儲在一起,由相同后續(xù)過程或處理器來按該順序處理和/或按該順序輸出。根據(jù)對幀的分析來確定接收到的數(shù)據(jù)幀屬于流。下面更詳細地描述該分析。本實施例的目的是提供一種結構,其中,多個適配器12將分析幀/包和/或存儲這些幀/包的任務加以劃分。更具體地,適配器12從網絡14 (比如WWW、干線或任何合適類型的網絡)接收數(shù)據(jù)幀。每個適配器12與其他適配器12無關地接收若干幀。優(yōu)選地,所有適配器(可能除了一個適配器之外)是相同的,且均包括所謂的PHY20和所謂的MAC電路22,PHY 20是適于從網絡或數(shù)據(jù)線纜接收數(shù)據(jù)幀的單元,MAC電路22將接收到的幀轉換為通常在例如計算機上的數(shù)據(jù)總線上使用的標準。在已接收到數(shù)據(jù)幀的情況下,在電路24中向其提供時間戳,其中,在向分析電路26饋送了該幀之后,分析電路26導出與數(shù)據(jù)幀相關的數(shù)據(jù),比如與該幀符合的標準相關的數(shù)據(jù),比如其是否具有VLAN和/或MPLS標簽,以及可能地數(shù)據(jù)幀來自的地址數(shù)據(jù)。已知多 個不同類型的標準,每個標準定義了在幀中存在哪些類型的數(shù)據(jù)(地址、封裝、有效載荷、糾錯等等)以及這種數(shù)據(jù)出現(xiàn)在哪里。取決于分組的具體類型,可以導出不同類型的數(shù)據(jù)。電路26輸出標識數(shù)據(jù)幀的數(shù)據(jù),比如其屬于數(shù)據(jù)分組流,或中央存儲中的隊列。然后,在請求電路28中,向中央服務器存儲器分配器或控制器16發(fā)送數(shù)據(jù)幀的長度、數(shù)據(jù)幀的ID/隊列標識和時間戳,中央服務器存儲器分配器或控制器16返回存儲器18中要存儲數(shù)據(jù)幀的地址。向傳輸電路30返回該地址,傳輸電路30也接收數(shù)據(jù)幀,且隨后經由公共數(shù)據(jù)總線32 (比如運行PCI Express(PCIe)協(xié)議)向所標識的地址發(fā)送數(shù)據(jù)幀。該存儲可以使用直接存儲器尋址,直接存儲器尋址意味著在期望地址處直接存儲該幀,且不要求其他分析。這是在數(shù)據(jù)存儲器中存儲數(shù)據(jù)的最快速的方式,但是其要求物理地址已知。自然地,電路28可以備選地輸出分組的時間戳和長度,以及輸出標識該幀的其他信息(類型、地址等),從而分配器本身將確定要添加該幀的隊列,且從而導出要存儲該幀的地址。在分配器16和適配器12之間的“帶外”通信可以是低帶寬點對點通信、菊花鏈拓撲結構、或環(huán)狀拓撲結構。如下面進一步描述的,該通信還用于同步時間戳電路24的時鐘。用于該通信的合適協(xié)議可以是標準的64b/66b編解碼器,每IOGbps以太網前端口(PHY)帶寬,其要求大約IGbps全雙工帶寬。注意到,上述實施例10可以在存儲器18中任意數(shù)目的隊列中存儲數(shù)據(jù)幀。向哪個隊列轉發(fā)數(shù)據(jù)分組可以取決于幀的未來命運。如果一個或多個處理器要分析幀,可以針對每個處理器提供一個隊列,且向隊列轉發(fā)幀可以取決于在添加分組之前隊列有多長。如果隊列很長,且處理器從而很忙,則可以在較不忙碌的處理器的較短隊列中提供該分組。以該方式,確保了按照與接收/訪問數(shù)據(jù)分組的相同順序在隊列中存儲數(shù)據(jù)分組的至少一部分。如果在第二數(shù)據(jù)分組之后接收到第一數(shù)據(jù)分組,則由于控制單元的延遲處理,將恢復其排序,從而不處理這兩個數(shù)據(jù)分組,直到它們都被控制單元所知道且從而分配的地址具有正確的順序。注意到,如果大多數(shù)數(shù)據(jù)幀涉及流,可能不希望向不同的隊列發(fā)送與相同流相關的幀,以由不同處理器來分析。這樣,優(yōu)選地通過將來自新啟動的流的所有將來幀分配給“饑餓”的處理器,來實現(xiàn)處理器之間的任何負載平衡。如該負載平衡一樣,下面進一步描述 該方式的備選。此外,如果要在稍晚的時間點從存儲器18輸出幀,可以在特定隊列中、按照要輸出幀的順序來提供要輸出的幀。下面進一步描述這種輸出。如果期望給定的服務質量,可以將任何隊列劃分為具有不同優(yōu)先級的若干隊列,使得較高優(yōu)先級的幀可以超過較低優(yōu)先級的幀,然后被更快速的應對(處理、輸出、分析
坐')
寸/ o適配器12中的負載平衡在圖6中,看到一部分單元(比如適配器12的PHY 20、MAC 22和時間戳分配24)可能以比其他單元(比如,分析器26、請求器28和傳輸電路30)更高的速度工作。在該情況下,可以形成這些較慢單元的多個“實例”,以將從單元20至24接收到的并加上時間戳的數(shù)據(jù)分組流分為多個并行流。在圖6中,將在單一 PHY 20上接收到的數(shù)據(jù)分組分為4個并行流。未直接示出單元20至30,但是直接示出了它們在流中的位置。自然地,如果需要,可以實現(xiàn)在各個流之間的負載平衡。圖6中較低的線示出了備選,其中,高速PHY 20接收在適配器12中單一流中處理的數(shù)據(jù)分組。使用多個隊列的外部過程或處理器的負載平衡可以用多種方式來執(zhí)行從存儲器18的隊列中讀取數(shù)據(jù)的處理器或過程(未示出)的負載平衡。如果流中的數(shù)據(jù)分組的排序(接收順序或由各個數(shù)據(jù)分組中的數(shù)據(jù)定義的順序)不相關,可以為每個處理器提供單一隊列。如果一個處理器的隊列滿了(下面進一步描述如何可以確定這點),則分配器16可以簡單地實現(xiàn)將更多的數(shù)據(jù)分組發(fā)送至其他隊列。如果需要服務質量,則不同的隊列可以用于不同的優(yōu)先級。如果需要維持例如流的數(shù)據(jù)分組的排序,在圖5中示出了方案,其中,示出了 2個適配器12接收總共4個數(shù)據(jù)流(flow) /流(stream)。適配器12向在存儲器18中存儲的總共8個隊列(編號#0至#7)發(fā)送數(shù)據(jù)分組,以由2個處理器(編號#0至#1)使用以下方案來執(zhí)行出隊操作由處理器#0來處理隊列#0至#3,且由處理器#1來處理隊列#4至#7。此外,隊列#0和#4 一般用于流#0,隊列#1和#5用于流#1等等。初始時,向隊列#0發(fā)送流#0的數(shù)據(jù)分組,但是隨著該隊列變滿,分配器16開始向隊列M發(fā)送來自流#0的數(shù)據(jù)分組。然而,不允許處理器#1對這種分組進行出隊操作和分析,直到處理器#0已將隊列#0清空。為了對此進行控制,分配4個比特,每個流一個比特,其值確定了哪個處理器可以處理來自各個隊列的分組。在圖5中,最上面的比特控制對流#0的訪問,且在其值為“0”時,這意味著處理器#0可以處理該隊列,且從而使分組從隊列#0出隊。看到2個最下面的比特是“1”,指示允許處理器#1處理流#2和#3,且從而從隊列#6和#7出隊。當允許處理器處理多于一個隊列時,其可以用任何合適的方式(比如循環(huán)、優(yōu)先級、隊列長度等等)來選擇要處理的下一個隊列。由處理器控制這4個比特并存儲在存儲器18中。當使用多于2個處理器時,判定其排序或順序,使得當處理器#1已清空隊列時,要么其將修改對應的比特,要么處理器 #2將注意到處理器#1的隊列是空的,改變對應的比特,然后開始對其對應隊列進行出隊操作。由控制器使用相同的順序來確定如果隊列滿了,向哪個隊列添加下一個數(shù)據(jù)。然后,為了維持隊列中的數(shù)據(jù)的排序,如果改變了隊列,分配器16將始終選擇空的新隊列。自然地,如果多于2個處理器能夠處理單一隊列,針對每個流使用更多比特,以指示當前允許哪個處理器來處理流。虛擬地址-物理地址為了使該結構更容易地適于不同系統(tǒng),優(yōu)選地讓請求電路28、傳輸電路30、分配器16以及存儲器18中的或連接到存儲器18的任何出隊電路工作在虛擬地址空間中。由于針對DMA僅可以分配給定最大塊大小這一標準要求,以及如此分配的塊在不同系統(tǒng)中或有時操作相同設備時可以位于存儲器中不同或隨機的位置這一事實,使用物理地址的直接操作變得麻煩。因此,優(yōu)選虛擬地址。當前,將具有總長度32比特的地址(參見圖2)分為2個部分,其中一個部分具有適于對最大大小可分配塊中的所有地址進行尋址的若干比特。在本示例中,最大大小塊或段具有4MB大小,要求22個比特用于尋址。該部分的虛擬和物理地址是相同的,且用于在
單一塊/段中尋址。為了避免物理塊/段可能位于存儲器18中不同地址處這一事實,將虛擬地址全部(至少針對每個隊列)定義為連續(xù)地址,而不管它們可能位于不同塊/段中這一事實。從而,將32個比特解釋為若干連續(xù)地址??梢詫⑵浼毞譃槿舾?M字節(jié)塊/段,但是虛擬地連續(xù)布置。從而,可以將該虛擬地址視為指示連續(xù)虛擬塊/段之一的初始10比特部分和作為在該塊/段內內部尋址的后22個比特。在存儲器18中的物理現(xiàn)實中,可以維護在段/塊中尋址的后22個比特,但是將虛擬地址的頭10比特部分簡單地轉換為對物理分配的塊/段之一的尋址或標識。對于該用途,提供查找表,以將虛擬地址的頭10個比特轉換為實際分配的塊/段的實際標識-即10比特地址??梢栽趯嵤├某跏蓟瘯r,建立該查找表(LUT)。在圖2中對此進行了示意。還注意到可以在虛擬地址空間中使用如下描述的讀/寫指針,當將虛擬地址定義為連續(xù)地址時,其同樣使得例如對隊列長度的確定更容易。自然地,如下面將進一步看到的,如果過程/處理器使數(shù)據(jù)項從存儲器18中出隊,可以向分配器16返回其地址和大小(或占用的可尋址單元的數(shù)目),作為物理地址或虛擬地址。在任一情況下,分配器16能夠相應地確定虛擬地址并相應更新指針。定時-在分配器16和適配器12之間的時鐘同步為了讓接收到的幀具有可靠和可比較的時間戳,期望在適配器12和分配器16中具有同步的時鐘。
與本領域通常做法一樣,當前通過與從分配器16向傳輸電路30傳輸?shù)臄?shù)據(jù)一起,轉發(fā)在傳輸?shù)臄?shù)據(jù)中編碼的但是可恢復的時鐘信號,來獲得時鐘相位同步。適配器12適于導出該時鐘信號,并將其既用在傳輸電路30中,也用在請求電路28中,如圖3所示。在已將相位同步的情況下,分兩個步驟來同步實際的時鐘時間。在步驟I中,分配器16向每個適配器12發(fā)送指令,以向分配器16發(fā)送消息,然后分配器16在接收到該消息時確定總的往返時間。在步驟2中,分配器16指示適配器12將其時間適配為分配器16的時鐘時間。更具體地,步驟I包括分配器16在記錄本地分配器發(fā)送時間的同時,向各個適配器12發(fā)送指令。適配器12在接收到該指令時,立刻向分配器16發(fā)送消息,分配器16記錄接收時間。指令和消息的內容并不重要。分配器16此時將接收時間減去發(fā)送時間,并導出往返時間。假定該時間的一半是在分配器16和相關適配器12之間的數(shù)據(jù)傳輸?shù)臅r間延遲。自然地,分配器16和不同的適配器12之間可以存在不同的時間延遲。步驟2是從分配器16向適配器12發(fā)送指令,以將本地適配器時間設為分配器16的當前本地時間加上所確定的時間延遲的值。從而,當適配器12接收到該指令時,其將其本地時間設為分配器16處的本地時間同時已推進到的時間。然后,將分配器16和適配器12的時鐘時間同步為在時鐘信號的時鐘周期內。由于相位或時鐘脈沖也同步,時鐘將保持同步。然后,還將該恢復的時鐘用于對接收到的數(shù)據(jù)分組加時間戳。從而,將所有時間戳冋步在時鐘周期內。由于在分配器16和任何適配器12之間可以存在未決的若干指令,在每個指令/請求中提供標識符。當前,標識符是在0和7之間的時間戳(3個比特),其與時鐘同步移位并環(huán)回。從而,分配器16在發(fā)送指令時,將添加時間戳,且適配器12在應答該指令時,將該時間戳復制到應答中,使得分配器16能夠確定該應答涉及哪個指令。自然地,可以針對任何數(shù)目的適配器12來執(zhí)行適配器12與分配器16的該同步。適配器12可以用星型配置、環(huán)形拓撲結構或菊花鏈配置連接到分配器16,在星型配置中,所有適配器12直接與分配器16通信,菊花鏈配置讓分配器16在適配器12的串的末尾,然后適配器12與分配器通過一個或多個其他適配器12通信。分配器16的操作對于存儲器18的每個隊列,分配器16具有2個隊列(參見圖4) :RIF0(隨機入先出)和FIRO (先入隨機出)隊列。FIRO隊列保持來自所有適配器12的與存儲器18的有關隊列相關的未決請求。寫指針指向FIRO隊列的下一個空閑位置。在該位置中接收并提供從適配器12接收的請求。
RIFO隊列保持與何時要輸出存儲器隊列的幀及其順序相關的信息。RIFO隊列中的每一項涉及時鐘的時間點,且讀指針指向RIFO隊列的當前時間點。當接收到請求時,導出其時間戳,且在RIFO隊列中,在對應位置或時間點上提供標識符。注意到由于來自某些適配器12的信息或這些適配器12中的處理可能比來自其他適配器的信息或其他適配器中的處理占用更長時間這一事實,該位置或時間點可以早于相同存儲隊列中的其他幀。在圖4中,看到FIRO隊列中的第一幀具有比下一幀更晚的發(fā)送時間。RIFO隊列的讀指針每個時鐘周期前進一次,且如果在讀指針的新位置上看到標識符,則尋址FIRO隊列的對應位置,并向相關適配器12發(fā)送傳輸指令。然后,移除FIRO隊列的對應項(或使結束指針前進至該位置)。自然地,可以將FIRO和RIFO隊列實現(xiàn)為循環(huán)隊列。
為了考慮到由例如在適配器12和分配器16之間的數(shù)據(jù)傳輸以及在適配器12中的處理時間所引起的任何時間延遲,讀指針與相對于實際時間點而延遲的時間點相關,所述實際時間點由同步時鐘定義,且用于提供幀的時間戳(其也在FIRO中存儲的請求中被轉發(fā))。就此而言,當在RIFO隊列中的正確位置上提供項時,不再需要相關請求的時間戳,且丟棄該時間戳以不占用表中的空間。從而,讀指針的時間可以落后于實際時鐘多個時鐘周期,比如3、4、5、6、7、8、9、10或更多個時鐘周期。然后,可以將在例如時間120處加時間戳的幀轉發(fā)到FIRO隊列,并將其在時間120處輸入RIFO隊列,在時間130處對其進行尋址(讀指針前進至該位置)。在所有時間且針對存儲器18中的每個隊列,分配器16具有寫指針和讀指針2個指針所述寫指針標識要存儲的來自適配器12的下一個幀的下一個地址,所述讀指針標識要出隊用于進一步分析、轉發(fā)等的該隊列的下一存儲幀的地址。當要存儲新的幀時,向相關傳輸電路30轉發(fā)寫地址,即,將下一個虛擬地址轉換為被轉發(fā)的其物理地址,然后傳輸電路30輔助完成幀的存儲。同時,分配器16將相關寫指針增加與幀的大小相對應的值。由于分配器16向適配器12返回地址,然后適配器12以其自己的步調在其中存儲數(shù)據(jù)分組這一事實,即使存儲了數(shù)據(jù),也可以不總是更新寫指針。當適配器12已在存儲器18中存儲了數(shù)據(jù)分組時,其將相應通知分配器16。然而,如果要將分組X緊挨在分組Y之前(較低地址)存儲,但是更快速地存儲分組Y,則分配器18將意識到這點,且從而直到也存儲了數(shù)據(jù)分組X才更新寫指針,這是因為此時隊列中存在“洞”。當已存儲了數(shù)據(jù)分組X時,可以將該隊列的寫指針更新到數(shù)據(jù)分組Y之后的第一地址。在一個或多個隊列保持幀以供例如處理器進一步分析的情況下,在這種隊列中的幀的數(shù)目或隊列的填充級別將說明該處理器有多忙碌。當使用虛擬地址時,這是由隊列的寫指針和讀指針之間的地址差來簡單確定的??梢杂扇魏卧O備或過程/處理器(比如連接到存儲器的一個設備或過程/處理器)輔助完成使幀從存儲器18出隊。使幀從存儲器18中出隊使該設備/過程/處理器相應地改變該隊列的讀指針。一般而言,向存儲器18添加幀使得分配器16改變寫指針,且使幀出隊使得過程/處理器改變讀指針。自然地,需要交換該信息。存在若干種方法和方案。
在一個情況下,期望不過分頻繁地交換該數(shù)據(jù),以保留DMA總線上的帶寬用于數(shù)據(jù)分組交換。在該情況下,由分配器16來發(fā)起鏡像或同步。每次在存儲器18中寫入數(shù)據(jù)分組時,分配器16可以更新寫指針,從而由于不更新讀指針,各個隊列(的數(shù)據(jù)幀的數(shù)目或填充級別)對于分配器16看起來增長了。自然地,可以偶爾交換已更新的寫指針,但是優(yōu)選地直到隊列的大小超過預定限制才更新這些寫指針。此時,分配器16將更新來自存儲器18或過程/處理器的讀指針,以獲得與隊列的實際大小相關的更新數(shù)據(jù),且從而獲得過程/處理器有多忙碌的更新數(shù)據(jù)。在一個情況下,過程/處理器可以同時接收更新的寫指針。這樣,如果過程/處理器在已存儲了附加分組且附加分組準備好用于分析/出隊的信息之前清空了所有隊列,則過程/處理器可能饑餓。當在分配器18中更新寫指針時,可以通過在過程/處理器或存儲器18中更新寫指針來避免這點。然后,過程/處理器更新了隊列信息,且只要數(shù)據(jù)分組存在,就保持工作。
備選地,讀指針的更新也可以是更頻繁的,以保持分配器16和過程/處理器更好的“得到通知”??梢栽诳偩€32不忙碌時,或例如在從上一次同步起已經過最大延遲時,執(zhí)行對寫/讀指針的該同步。自然地,隊列或存儲器18可以是循環(huán)的,且如果需要,可以將特定空間分配給隊列。自然地,如果適配器12背靠背地接收到與相同流相關的多個數(shù)據(jù)幀,請求電路28將發(fā)送若干請求,然后分配器16將在RIFO隊列中相關位置上提供該若干請求。如果在RIFO隊列中的每個項中識別出相關適配器12,分配器16可以識別出RIFO中與相同適配器12相關的多個相鄰項,且從而僅向該適配器12回復具有一個傳輸?shù)膫鬏旊娐?0,該一個傳輸基于該簡單的請求不僅識別隊列(地址數(shù)據(jù)),還識別要轉發(fā)的分組的數(shù)目。從存儲器18經由適配器12的數(shù)據(jù)傳輸自然地,可以使存儲器18中一個或多個隊列中存儲的數(shù)據(jù)分組出隊,通過總線32發(fā)送,并經由適配器12輸出。如存儲在存儲器18中存儲的數(shù)據(jù)分組的情況一樣,這可以經由DMA來執(zhí)行,從而,適配器12直接讀取存儲器18中的數(shù)據(jù)分組,在存儲器18處沒有例如來自處理器的干擾。使分組出隊的方案如同上述用于在存儲器18中存儲分組的方案可以經由相同適配器12輸出來自存儲器18中的若干隊列的數(shù)據(jù)分組。這可以使用任意期望方案(比如循環(huán)、優(yōu)先級或任何其他優(yōu)先排序)來實現(xiàn)。在適配器12中,可以針對不同的流、隊列、優(yōu)先級等提供任意數(shù)目的Tx端口或FIFO,且可以經由單一PHY或經由不同PHY來輸出來自這些Tx端口或FIFO的分組。在一個情況下,如在存儲器18中存儲數(shù)據(jù)的情況相同,在存儲器18中存儲隊列的讀/寫指針。以相同的方式,適配器12可以對讀/寫指針進行鏡像處理,且只要數(shù)據(jù)看起來存在,就保持使數(shù)據(jù)從隊列中出隊。如上所述,鏡像處理可以固定的最大時間間隔發(fā)生,在隊列看起來過滿或過空時發(fā)生,等等。過程/處理器可以跟蹤讀和寫指針,且如上所述,確定適配器12是否過于忙碌,以至于應當向另一隊列和另一適配器12轉發(fā)相關隊列的數(shù)據(jù)分組。在另一情況下,處理器或過程可以定義應當經由適配器12輸出哪些數(shù)據(jù)分組或地址,以及可以向適配器12轉發(fā)對這些地址的指示。一種方式是讓過程或處理器將這種分組復制到特定隊列中,該特定隊列由適配器使用過程/處理器所更新的讀/寫指針的特定集合來進行出隊,且該特定隊列被鏡像到適配器12上。另一方式關注于不復制數(shù)據(jù)分組。在該情況下,在原始隊列中維護數(shù)據(jù)分組,但是可以提供另一組讀/寫指針,已用于使數(shù)據(jù)分組出隊。事實上,如果維護隊列的原始讀/寫指針,需要單一附加指針。附加指針指示在隊列中,過程/處理器分析到了哪里,且從而指示可以使讀和寫指針之間的地址中的哪個地址出隊。由處理器/過程來維護該附加指針,并通過使用例如DMA來轉發(fā)至適配器或由適配器讀取,且相關適配器向處理器/過程或控制電路16通知何時已使地址出隊。權利要求
1.一種用于接收和轉發(fā)數(shù)據(jù)分組的設備,所述設備包括控制單元和多個物理上分離的數(shù)據(jù)接收和轉發(fā)單元,每個數(shù)據(jù)接收和轉發(fā)單元包括 -用于接收或訪問數(shù)據(jù)分組的裝置, -用于確定接收/訪問所述數(shù)據(jù)分組的時間點的裝置,所述確定裝置包括時鐘裝置,所有確定裝置的時鐘裝置是同步的, -用于輸出包括所述時間點在內的第一信息的裝置, -用于接收地址的裝置,所述地址用于存儲所述數(shù)據(jù)分組的至少一部分;以及 -用于輔助完成在所述地址處存儲所述數(shù)據(jù)分組的至少一部分的裝置, 所述控制單元包括 -用于接收所述第一信息并導出接收/訪問所述數(shù)據(jù)分組的時間點的裝置, -與所述確定裝置的時鐘裝置同步的時鐘,以及 -用于針對接收到的每一條第一信息,在所導出的時間點加上預定時間延遲所在的時間點或之后的時間點,確定地址,并將所述地址返回給相關的數(shù)據(jù)接收和轉發(fā)單元的接收裝置的裝置。
2.一種組件,包括根據(jù)權利要求I所述的設備以及存儲器,所述存儲器包括能夠存儲數(shù)據(jù)的多個地址,所述輔助完成裝置適于在所述存儲器中在所接收到的地址處存儲所述數(shù)據(jù)分組的至少一部分。
3.根據(jù)權利要求2所述的組件,其中,作為分離的地址組,在存儲器中定義多個隊列,所述控制單元的確定裝置適于根據(jù)所述第一信息,確定要添加相關數(shù)據(jù)分組的隊列,并從相關隊列的地址組中選擇地址。
4.根據(jù)權利要求3所述的組件,其中,所述控制單元的確定裝置適于在所確定的隊列中確定地址,使得按照接收/訪問的順序在所述隊列中存儲數(shù)據(jù)分組。
5.根據(jù)權利要求3或4所述的組件,所述組件還包括用于從存儲器中讀取數(shù)據(jù)或使數(shù)據(jù)從存儲器中出隊的裝置,所述讀取/出隊裝置包括用于輸出第二信息的裝置,所述第二信息與數(shù)據(jù)已被讀取/出隊的存儲裝置的一個或多個地址相關。
6.根據(jù)權利要求4或5所述的組件,其中,所述控制單元適于針對每個隊列,保持寫指針和讀指針,所述寫指針標識要添加數(shù)據(jù)的下一個地址,所述讀指針標識要從隊列中讀取/出隊的下一個地址, 所述控制裝置適于 -當確定了地址時,更新與所確定的地址相關的隊列的寫指針, -基于所接收的第二信息,更新數(shù)據(jù)已出隊的隊列的讀指針, -還基于所述隊列的讀指針和寫指針,確定所述地址。
7.根據(jù)權利要求6所述的組件,其中,所述控制裝置適于當隊列的填充級別超過預定值時,指示所述讀取/出隊裝置的輸出裝置輸出與數(shù)據(jù)已被讀取的地址相關的第二信息。
8.根據(jù)權利要求5至7中任一項所述的組件,其中,所述控制裝置適于當確定了地址時,向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。
9.根據(jù)權利要求5至8中任一項所述的組件,其中,所述輔助完成裝置適于向所述控制單元通知何時存儲了所述數(shù)據(jù)分組的至少一部分,且所述控制單元適于當已被所述輔助完成裝置通知時,向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。
10.根據(jù)權利要求3至9中任一項所述的組件,其中,將所述存儲器的隊列的地址分為具有預定數(shù)目個物理地址的組,這些組位于非連續(xù)的位置,并且實現(xiàn)隊列的地址是被定義為連續(xù)地址的虛擬地址,所述控制裝置還包括用于在虛擬地址和物理地址之間進行轉換的裝置。
11.一種操作根據(jù)權利要求I所述的設備的方法,所述方法包括 初始時,同步所有確定裝置的時鐘裝置, 隨后 每個數(shù)據(jù)接收和轉發(fā)單元 -接收或訪問數(shù)據(jù)分組, -確定接收/訪問所述數(shù)據(jù)分組的時間點,所述確定步驟包括從所述數(shù)據(jù)接收和轉發(fā) 單元的時鐘裝置接收接收時間, -輸出包括所述時間點在內的第一信息, -接收用于存儲所述數(shù)據(jù)分組的至少一部分的地址,以及 -輔助完成在所述地址處存儲所述數(shù)據(jù)分組的至少一部分,以及 所述控制單元 -接收所述第一信息,并導出接收/訪問所述數(shù)據(jù)分組的時間,以及-針對接收到的每條第一信息,在所述接收/訪問時間點加上預定時間延遲所在的時間點或之后的時間點,確定地址,并將所述地址返回給相關數(shù)據(jù)接收和轉發(fā)單元的接收裝置。
12.根據(jù)權利要求11所述的方法,其中,所述輔助完成步驟包括在存儲器中在所接收到的地址處存儲所述數(shù)據(jù)分組的至少一部分,所述存儲器包括能夠存儲數(shù)據(jù)的多個地址。
13.根據(jù)權利要求12所述的方法,其中,作為分離的地址組,在存儲器中定義多個隊列,所述確定步驟包括根據(jù)所述第一信息,確定要添加相關數(shù)據(jù)分組的隊列,并從相關隊列的地址組中選擇地址。
14.根據(jù)權利要求13所述的方法,其中,確定所述地址的步驟包括確定地址,使得在一個或多個隊列中,按照對數(shù)據(jù)分組的至少一部分的接收/訪問順序來存儲所述數(shù)據(jù)分組的所述至少一部分。
15.根據(jù)權利要求12或13所述的方法,還包括從所述存儲器中讀取數(shù)據(jù)或使數(shù)據(jù)從存儲器中出隊的步驟,所述讀取步驟包括輸出第二信息,所述第二信息與數(shù)據(jù)已被讀取/出隊的存儲裝置的一個或多個地址相關。
16.根據(jù)權利要求13或15所述的方法,其中,所述控制單元針對每個隊列保持寫指針和讀指針,所述寫指針標識要添加數(shù)據(jù)的下一個地址,以及所述讀指針標識要從隊列中讀取/出隊的下一個地址, 所述控制裝置 -在確定了地址時,更新與所確定的地址相關的隊列的寫指針, -基于所接收的第二信息,更新數(shù)據(jù)已出隊的隊列的讀指針,以及 -還基于所述隊列的讀指針和寫指針,確定所述地址。
17.根據(jù)權利要求16所述的方法,其中,當隊列的填充級別超過預定值時,所述控制裝置指示讀取/出隊裝置輸出與數(shù)據(jù)已被讀取的地址相關的第二信息。
18.根據(jù)權利要求15至17中任一項所述的方法,其中,所述確定步驟包括向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。
19.根據(jù)權利要求15至18中任一項所述的方法,其中,所述輔助完成步驟包括向所述控制單元通知何時存儲了所述數(shù)據(jù)分組的至少一部分,且當已被所述輔助完成裝置通知時,所述控制單元向所述讀取/出隊裝置輸出與更新后的寫指針相關的信息。
20.根據(jù)權利要求12至19中任一項所述的方法,其中,將所述存儲器的隊列的地址分為具有預定數(shù)目個物理地址的組,這些組位于非連續(xù)的位置,并且實現(xiàn)隊列的地址是被定義為連續(xù)地址的虛擬地址,所述確定步驟還包括在虛擬地址和物理地址之間進行轉換。
全文摘要
本發(fā)明提供了設備和方法,其中,多個物理上分離的數(shù)據(jù)接收/分析單元接收數(shù)據(jù)分組并對其加時間戳??刂茊卧辽倩谠摃r間戳來確定每個數(shù)據(jù)分組的存儲地址,其中,該控制單元直到在接收時間之后經過預定時間延遲才執(zhí)行對地址的確定。
文檔編號H04L7/00GK102742220SQ201080062899
公開日2012年10月17日 申請日期2010年12月6日 優(yōu)先權日2009年12月4日
發(fā)明者彼得·克羅格, 彼得·??四螤?申請人:納派泰克股份公司