CN102763381B - 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法 - Google Patents
在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法 Download PDFInfo
- Publication number
- CN102763381B CN102763381B CN201080063131.4A CN201080063131A CN102763381B CN 102763381 B CN102763381 B CN 102763381B CN 201080063131 A CN201080063131 A CN 201080063131A CN 102763381 B CN102763381 B CN 102763381B
- Authority
- CN
- China
- Prior art keywords
- address
- queue
- data
- memory
- team
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 75
- 230000008569 process Effects 0.000 claims description 60
- 230000009471 action Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 description 16
- 230000001360 synchronised effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/528—Minimum bandwidth guarantee
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了组件,包括:一定数目的接收机,用于接收在存储器中的队列中存储的分组;以及用于使数据从存储器中出队的装置。控制器确定所述存储器的地址,至少基于所述队列的填充程度来确定所述地址,其中,仅在填充程度超过限制时,才读出与使该地址出队相关的信息,以在需要该信息之前,不将带宽花费在该信息上。
Description
技术领域
本发明涉及一种接收/访问数据分组并在考虑到存储器的填充程度的地址上在存储器中存储这些数据分组的方式。具体地,本发明涉及一种以充分低速率来更新描述了存储器中占用的地址的信息,以不占用转发要存储的数据所遵循的数据路径上的过多带宽的方式。
背景技术
发明内容
在第一方面中,本发明涉及一种用于接收和转发数据分组的组件,所述组件包括:
-存储器,包括可以存储数据的多个地址,
-数据接收和存储设备,包括:
○用于接收或访问数据分组的装置,
○用于确定地址的装置,以及
○用于辅助完成在所述存储器中在所确定的地址处存储所述数据分组的至少一部分的装置,以及
-用于从所述存储器中读取数据读取或使数据从所述存储器中出队的装置,所述读取/出队装置包括:用于输出第一信息的装置,所述第一信息与数据已被读取/出队的所述存储装置的一个或多个地址相关,
其中,所述确定装置适于:
-基于所确定的地址,导出与所述存储器的一组或多组地址的填充程度相关的信息,
-如果填充程度超过预定程度,指示所述读取/出队装置输出所述第一信息,并基于所述第一信息重新导出填充程度信息。
在本上下文中,所述组件和/或所述读取/出队装置和/或所述接收/存储装置可以是单一外壳内的单个硬件,或者可以由一定数目的分离单元来形成,比如,所述存储单元和/或所述控制单元与所述接收/存储单元分离,但是它们可拆卸式互联以能够交换数据。在后一种情况下,由于可以添加更多或更少的接收/存储单元以适应需要或要求,所述组件可以是非常灵活的。该交换可以在任何数据传输协议(比如TCP、以太网、蓝牙等)下进行,且使用任何类型的数据传输(有线或无线)。
数据分组可以是要在网络、数据线缆、数据总线、干线等上发送的或要由网络、数据线缆、数据总线、干线等传输的任何类型的数据单元。一般而言,数据单元符合一个或多个数据标准(比如以太网标准),在以太网标准这一统称下,存在一定数目的不同标准或数据分组类型,比如UDP和TCP数据分组。数据分组通常具有一定数目的不同信息项或类型,比如地址数据、有效载荷等等,它们各自位于数据分组中已经定义的或已知的位置上。这种位置和类型对于不同的数据分组类型通常将不同,但是在分析中可以导出、改变和/或使用各个数据项(比如地址数据和/或有效载荷)之后,通常可以根据实际数据分组来确定数据分组类型,且从而确定其各个内容的位置。可以根据数据分组直接导出类型或标准,比如当分组的特定数据项标识类型/标准时,或可以根据从数据分组导出的数据来导出类型或标准,比如基于对数据分组的数据项的类型和位置进行识别以及后续对可以在这样的位置上发现这样的数据的数据分组的类型或标准进行确定。
可以存储数据分组的任何部分。如果不再需要输出数据分组,则可以例如删除其中的寻址信息,以不占用空间。
可以对数据分组排序,且如果这样做,可以按多种方式并出于多种理由对数据分组排序。通常,在计算机之间的数据交换是文件传输、TCP传输、VoIP等,其中,各个分组的顺序是重要的。通常,这种传输被称为流。
数据分组的流一般是从单一发射机向一个或多个接收机发送的数据分组序列。这些数据分组涉及例如以较小部分发送的作为分组的有效载荷的单一文件等。此时,发射机和接收机、或任何中间网络单元通常将具有也在分组中表示的地址。此外,取决于各个数据分组标准,其他流识别信息可以存在于数据分组中。
从而,可以基于例如地址和/或流识别信息来识别流,由此如果使用一致,可以导出相同的信息,且任何后续过程可以仅根据该信息来识别流。在另一情况下,数据分组中可以具有确定其顺序的信息,比如序列号或时间戳。从而,该信息可以用于对分组排序,比如在存储于存储器中时。
所述存储器优选地包括一定数目的队列,每个队列包括一定数目的地址和/或一定数目的存储单元,各自由地址来定义。通常,存储器具有分离的可寻址的元件,且一定数目的这种元件可以形成队列。
数据分组可以具有不同的大小,然后可以占用变化数目的地址。
自然地,所述存储器可以是任何形式的存储单元,比如单片存储单元或由在空间上分离的一定数目的存储单元构成的一个存储单元。常用的存储技术基于硬盘、软盘、RAM、ROM、PROM、EPROM、EEPROM、闪存、存储卡、CD-ROM、DVD、存储卡等。
如果提供分离的存储单元,所述地址将描述实际存储单元的标识及其中的“本地地址”。
所述填充程度可以是存储器的总的填充程度,或者是可以确定已定义的队列组的填充程度,或者是各个地址组的填充程度。自然地,不同的组/队列可以具有不同的填充程度。填充程度可以是任何百分比,如5%、10%、15%、20%或更多,或者是地址或可寻址元件的总数,比如1000、10000或更多个,能够存储一定数目巨分组(jumbopacket)的可寻址元件的数目,或数据的总量,如1kB、1MB等。
访问/接收装置可以实际接收和/或存储数据或数据分组。备选地,可以在另一位置处或在与该接收/存储设备通信的设备中接收或存储数据分组,从而通过读取存储同时在另一设备中的数据来远程访问数据分组的数据。由于远程访问数据分组,后者通常将提供较慢的处理。
即使没那么优选,接收的地址也可以不是要存储数据分组的存储单元中的实际地址。备选地,可以接收根据其可以导出该地址的信息。
优选地,通过DMA来执行在所述存储器中对数据分组的存储,这是在存储单元中存储数据的最快方式。
所述辅助完成装置可以直接在存储器中存储数据分组的至少一部分,比如通过数据连接,或者如果存储在另一位置,其可以辅助完成存储数据分组。然后,可以向该另一位置传输该地址,然后该另一位置处理对数据分组的存储。
自然地,所述接收装置、所述转发装置和所述辅助完成装置可以包括:用于根据需要来处理该操作并传输数据所需的驱动器、连接器等等。
可以按照任何所需方式来执行对地址的确定,比如基于从数据分组导出的信息。如上所述,可以将数据分组确定为流的一部分,或确定为给定类型的一部分,并且可能希望对数据分组的存储根据该信息。可能希望按特定顺序存储数据,或在特定组或队列中存储数据,比如为了容易或快速读取特定类型的数据或流。
根据本发明,所述组件包括用于从存储器中读取数据或使数据出队的装置。这些装置可以是一个或多个处理器或过程。
在该上下文中,处理器或过程可以是适于辅助完成使数据出队并可能对其进行处理的任何类型的电路或单元。该处理可以是任何类型的处理,比如,对数据业务的监控、将数据分组分给不同的收信人等等。此外,该处理可以是从组件输出数据分组并向后续联网单元(比如服务器等)转发。
所述读取/出队装置可以仅在得到相应指示时,和/或例如当从上一次输出起经过最大时间周期时,才输出所述第一信息。所述第一信息可以包括与自上一次输出所述第一信息起已经出队或将要出队的所有地址相关的信息。
在该方面,与大量地址相比,所述第一信息可以更为简单。具体地,这是所述存储器包括一定数目的具有连续地址的队列的情况。下面将进一步对此进行详细描述。
当在所述存储器中存储数据分组而未接收所述第一信息时,所述存储器将看起来填满数据。确定地址,并向存储器添加数据,而数据看起来未被读取/出队。
从而,当所述填充程度超过预定限制时,更新所述填充程度,以考虑所述第一信息并从而考虑读取/出队的地址。
仅在需要时输出所述第一信息的优点是:不因所述第一信息的传输过度使用去往和来自所述读取/出队装置和/或所述存储器的数据传输的带宽。从而,可以将该带宽用于将数据存储到所述存储器和/或从所述存储器中读取数据/使数据出队。
如果由达到该限制所引起的更新在给定最大时间周期中并未发生,则可能发生超时,命令更新第一信息。
在优选实施例中,所述确定装置适于输出与所确定的地址相关的第二信息,所述读取/出队装置适于基于所述第二信息对数据进行读取/出队。然后,所述第二信息向所述读取/出队装置通知已新添加了数据的地址。确保使用与占用了哪些地址相关的信息来经常或常常更新所述读取/出队装置,可以确保所述读取/出队装置不变得空闲。如果保持不向所述读取/出队装置通知已占用的地址,所述读取/出队装置可能错误地认为所述存储器或地址组是空的。从而,所述确定装置可以向所述读取/出队装置输出与所确定的地址相关的第二信息。
在一个实施例中,一组或多组地址中的每一个定义了在所述存储器中定义的一定数目的队列之一,每个队列由多个顺序(sequential)/连续(consecutive)地址来定义,队列的所有地址是非重叠的,以及所述确定装置适于导出队列(通常,每个队列)的填充程度。
在该情况下,特别优选地,当所述确定装置适于针对每个队列,保持写指针和读指针时,所述写指针标识要添加数据的下一个地址或添加了数据的上一个地址,所述读指针标识要从队列中读取/出队的下一个地址或已读取/出队的上一个地址,所述确定装置适于:当确定了地址时,更新(比如在第二信息中)与所确定的地址相关的队列的写指针,所述确定装置适于:基于所述第一信息,更新数据已出队的队列的读指针,其中,所述确定装置适于:基于队列的读指针和写指针,确定队列的填充程度。
当作为连续地址实现队列时,所述第一信息输出可以简单地是指针或地址。从而,该新的指针或地址将与其他端点指针一起,提供与占用了队列的哪些地址和未占用队列的哪些地址相关的所有所需信息。两个指针之间的地址可以是由数据占用的那些地址。自然地,可以将队列的地址用作循环列表,使得当到达地址组的末尾时,指针可以环回。
可以通过将一个指针减去另一个指针而简单地得到占用的地址数目,例如填充程度的指示。
由于不同大小的数据可以占用不同数量的空间,且从而占用不同数目的地址,因此对写指针的更新可能需要知道要存储的数据分组或其一部分的大小。
对读指针的更新可以基于数据已读取/出队的所有地址的列表,或简单地仍包含数据的最后地址或第一个空闲的地址。
然而,提供大量连续地址在现实系统中可能是成问题的。在标准的存储系统中,分配最大大小例如4MB的块或段。在段/块中,地址是连续的,但是由于段/块可以在存储器中随机分配,因此全部地址可以不是连续的。
在这种情况下,将所述存储器的队列的地址分为具有预定数目个物理地址的组,这些组位于非连续的位置。在该方面,“非连续”意味着在存储器空间中,这些组不是相邻位置的(具有跨组边界的连续地址)。此时,实现队列的地址优选地是被定义为连续地址的虚拟地址,所述控制单元还包括用于在虚拟地址和物理地址之间进行转换的装置。
从而,可以分配任何数目的连续虚拟地址,然后将虚拟地址转换为实际的物理地址。
获得此目的的一种方式如下:所述存储单元具有一定数目的可分配段/块,每个物理地址组定义了可分配块/段之一中的地址,可用第一数目个比特的地址来识别每个块/段,可使用第二数目个比特来寻址块/段中的所有地址,物理地址具有与第一数目个比特和第二数目个比特之和相对应的数目个比特,虚拟地址均包括第一部分和第二部分,所述第一部分至少具有所述第一数目个比特,所述第二部分至少具有所述第二数目个比特,其中,所述转换装置适于将所述虚拟地址的第一部分转换为第三部分,所述第三部分具有所述第一数目个比特,并标识已分配的块/段,以及产生物理地址,作为具有所述第三部分和所述第一部分的地址。
在优选实施例中,所述数据接收和存储装置包括:
-多个数据接收和存储单元,每个数据接收和存储单元包括接收/访问装置和存储装置,以及
-控制单元,包括:用于确定要存储所述数据分组的至少一部分的地址的装置,
其中:
-每个数据接收和存储单元还包括:用于向控制单元转发与接收到的数据分组相关的信息的装置,
-所述控制单元的确定装置适于:还基于已转发的信息来确定所述地址,以及
-所述确定装置包括:用于向相关接收/存储单元返回所述地址的装置。
自然地,可以将所述接收/存储单元提供为分离的多块硬件,比如用分离的PCB、处理器、FPGA等来实现各块。备选地,相同的PCB/处理器/FPGA可以形成多个接收/存储单元。控制单元可以与接收/存储单元分离,或者可以形成一个或多个接收/存储单元的一部分。
自然地,可以将接收/存储单元的各个装置获得或成形为单独的单元,比如(软件控制的或硬连线的)处理器、FPGA、专用电路、ASICS等。备选地,可以将多个这种装置组合为单个这种处理器等等。
此外,可以使用任意数目的接收/存储单元。当使用多个接收/存储单元时,可以执行并行接收和存储。可以使用任何数目的接收/存储单元,比如2、3、4、5、6、7、8、10、15、20或更多个。如下面进一步描述的,所有这些接收/存储单元可以是相同或接近相同的,或者可以将它们具体实现或创建为具有不同操作的不同电路。每个接收/存储单元可以具有控制单元,但是仅需要一个。在另一情况下,仅一个接收/存储单元包括控制单元,但是其其它方面与其余的接收/存储单元相同。
控制单元可以由任何类型的(硬连线或软件控制的)处理器来形成,或可以是专用电路。所述控制单元的操作是确定用于各个数据分组的地址。这样,如果需要,则可以获得数据分组的排序。
所述控制单元能够确定队列的填充程度。在本上下文中,填充程度可以涉及在队列中存在的数据分组的数目或由队列占用的可寻址单元的数目。当将该数目/量与最大数目/量相比时,可以将该填充程度表示为数据/分组/地址的量/数目或表示为百分比。
可以使用在接收存储单元和控制之间的任何类型(比如以太网、蓝牙等)的通信,可以使用并行或串行通信(有线或无线通信)。
如上所述,所述读取/出队装置可以包括多个处理器或过程。在该情况下,由于不同的过程/处理器可以具有不同的能力或不同的工作负载,可能需要负载平衡。
在该情况下,优选地每个处理器或过程适于使数据从第一组队列中出队,各个第一组中的队列是非重叠的,以及所述确定装置适于通过以下动作来选择地址:
-针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的一个队列,所述第二组队列中的队列是非重叠的,
-如果所确定的第二组中的当前选择的第一队列的填充程度超过预定程度,则识别并选择所确定的第二组中的第二队列,
-将所述地址选择为所识别的第二队列的地址,
所述组件还包括:指示装置,用于指示与所识别和选择的第二队列相关的所述过程/处理器,直到超过预定程度的所述第一队列为空才处理该队列。
在该实施例中,可以获得在过程/处理器之间的负载平衡,同时维持任何第二组中的分组的处理/出队的排序。
特别在出队和/或分析/处理数据分组时所存储的数据分组(或至少其一部分)的排序很重要时,一旦读取/出队装置已开始使数据分组出队/处理数据分组,难以向另一读取/出队装置分配这种数据分组。使用本实施例,将每个这样的数据分组的组(通常是流)分配给第二组队列,每个第二组队列具有由分离的所述读取/出队装置来出队/处理的分离队列。从而,如果当前存储数据分组的且由第一读取/出队装置出队的队列变得过长,即,第一读取/出队装置过于忙碌,则判定从相同的第二组中识别由第二读取/出队装置出队的另一队列,但是在第一读取/出队装置将所有数据分组从相关第二组中的其队列中出队之前,不允许第二读取/出队装置使数据分组出队。这样,在读取/出队装置之间维持了数据分组的出队排序。
在第二方面中,本发明涉及一种在根据本发明的第一方面中的组件中使用的数据接收和存储设备。所述设备具有上述装置和能力。
本发明的第三方面涉及一种操作根据第一方面的组件的方法,所述方法包括:
-在存储器中的多个地址存储数据,
-所述数据接收和存储装置:
○接收或访问数据分组,
○确定地址,以及
○辅助完成在所述存储器中在所确定的地址处存储(优选地直接存储)所述数据分组的至少一部分,以及
-从所述存储器中读取数据或使数据从所述存储器中出队,所述读取/出队步骤包括:输出与数据已被读取/出队或将被读取/出队的一个或多个地址相关的第一信息,
确定步骤,包括:
-基于所确定的地址,导出与所述存储器的一组或多组地址的填充程度相关的信息,
-如果所述填充程度超过预定程度,指示所述读取/出队步骤输出所述第一信息,并还基于所述第一信息来重新导出填充程度信息。
优选地,如果未指示输出第一信息则不输出第一信息。此时,仅在填充程度超过程度时,发送所述第一信息。
在一个实施例中,所述确定步骤包括:输出与所确定的地址相关的第二信息,所述读取/出队步骤包括:基于所述第二信息对数据进行读取/出队。与第一信息相反,优选地经常或几乎总是(比如每次确定地址时)发送第二信息,以保持向读取/出队装置通知所确定的地址。
在一个情况下,一组或多组地址中的每一组定义了在所述存储装置中定义的一定数目的队列之一,每个队列由多个顺序地址来定义,队列的所有地址是非重叠的,以及所述确定步骤包括:导出队列(通常,每个队列)的填充程度。
在该情况下,特别优选地,当所述确定步骤包括:针对每个队列,确定写指针和读指针,所述写指针标识要添加数据的下一个地址或添加了数据的上一个地址,所述读指针标识要从队列中读取/出队的下一个地址或已读取/出队的上一个地址,所述确定步骤包括:当确定了地址时,更新与所确定的地址相关的队列的写指针,所述确定步骤包括:基于所述第一信息,更新数据已出队的队列的读指针,其中,所述确定包括:基于队列的读指针和写指针,确定队列的填充程度。
当指针标识每个队列的所占用的地址的外限(outer limit)时,对填充程度的该确定可以是简单的。
此外,所述数据接收和存储设备可以包括:
-多个数据接收和存储单元,每个数据接收和存储单元包括接收/访问装置和存储装置,以及
-控制单元,包括:用于确定要存储所述数据分组的至少一部分的地址的装置,
其中,所述确定步骤包括:
-每个数据接收和存储单元向控制单元转发与接收到的数据分组相关的信息,
-所述控制单元的确定装置还基于已转发的信息来确定所述地址,以及
-所述确定装置向相关接收/存储单元返回所述地址。
在优选实施例中,所述读取/出队步骤包括多个处理器或过程,每个处理器/过程从第一组队列中读取数据/使数据从第一组队列中出队,各个第一组中的队列是非重叠的,以及所述确定步骤包括通过以下步骤来确定地址:
-针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的一个队列,所述第二组队列中的队列是非重叠的,
-如果所确定的第二组中的当前选择的第一队列的填充程度超过预定程度,则识别并选择所确定的第二组中的第二队列,
-将所述地址选择为所识别的第二队列的地址,
所述方法还包括以下步骤:指示与所识别和选择的第二队列相关的所述过程/处理器,直到超过预定程度的所述第一队列为空才处理该队列。
附图说明
下面,将参照附图来描述本发明的优选实施例,在附图中:
-图1示出了根据本发明的第一实施例,
-图2示出了从虚拟地址到物理地址的转换,
-图3示出了在图1的分配器和适配器之间的时钟同步,
-图4示出了按时间顺序对随机接收的分组进行排序的方式,
-图5示出了在维持数据分组之间的顺序的同时在处理器之间的负载平衡,以及
-图6示出了适配器中的负载平衡。
具体实施方式
在图1中,示出了用于分析和转发数据帧的装置的实施例10,其具有若干适配器12,适配器12均连接到网络(比如WWW)并从网络接收数据。
一般而言,该类型的系统可以用于接收大量的数据分组,且辅助完成以合适的方式对其进行存储和/或转发。通常在由本系统监测的数据连接上,在计算机或网络的对之间发送这些数据分组。从而,数据分组一般不寻址到本系统或来自本系统。
当存储时,该数据可以由一个或多个后续过程或处理器(未示出)来处理。为了能够处理非常大量的数据,期望结构化的存储,以实现对数据快速但是结构化的检索。此外,当单一处理器不够用时,提供多个处理器,从而期望针对每个处理器对数据分离存储。
处理器可以用于分析数据业务,以取决于处理器中的处理的结果,存储数据和/或向其他网络单元、计算机等发送数据。
备选地或附加地,可能期望后续再次输出数据,从而还可以或备选地期望以输出所需的方式或顺序来存储数据。
一般而言,数据分组是数据分组流的一部分。当两个处理器或计算机交互时,交换数据分组的流。该流可以是文件传输或音频/视频的交换,比如基于IP的语音。流是相似的数据分组的序列,且可确定数据分组属于流,并且期望将流的所有数据分组按照期望顺序存储在一起,由相同后续过程或处理器来按该顺序处理和/或按该顺序输出。
根据对帧的分析来确定接收到的数据帧属于流。下面更详细地描述该分析。
本实施例的目的是提供一种结构,其中,多个适配器12将分析帧/包和/或存储这些帧/包的任务加以划分。
更具体地,适配器12从网络14(比如WWW、干线或任何合适类型的网络)接收数据帧。每个适配器12与其他适配器12无关地接收若干帧。
优选地,所有适配器(可能除了一个适配器之外)是相同的,且均包括所谓的PHY 20和所谓的MAC电路22,PHY 20是适于从网络或数据线缆接收数据帧的单元,MAC电路22将接收到的帧转换为通常在例如计算机上的数据总线上使用的标准。
在已接收到数据帧的情况下,在电路24中向其提供时间戳,其中,在向分析电路26馈送了该帧之后,分析电路26导出与数据帧相关的数据,比如与该帧符合的标准相关的数据,比如其是否具有VLAN和/或MPLS标签,以及可能地数据帧来自的地址数据。已知多个不同类型的标准,每个标准定义了在帧中存在哪些类型的数据(地址、封装、有效载荷、纠错等等)以及这种数据出现在哪里。取决于分组的具体类型,可以导出不同类型的数据。
电路26输出标识数据帧的数据,比如其属于数据分组流,或中央存储中的队列。然后,在请求电路28中,向中央服务器存储器分配器或控制器16发送数据帧的长度、数据帧的ID/队列标识和时间戳,中央服务器存储器分配器或控制器16返回存储器18中要存储数据帧的地址。向传输电路30返回该地址,传输电路30也接收数据帧,且随后经由公共数据总线32(比如运行PCI Express(PCIe)协议)向所标识的地址发送数据帧。该存储可以使用直接存储器寻址,直接存储器寻址意味着在期望地址处直接存储该帧,且不要求其他分析。这是在数据存储器中存储数据的最快速的方式,但是其要求物理地址已知。
自然地,电路28可以备选地输出或不输出分组的时间戳和长度,以及输出标识该帧的其他信息(类型、地址等),从而分配器本身将确定要添加该帧的队列,且从而导出要存储该帧的地址。
在分配器16和适配器12之间的“带外”通信可以是低带宽点对点通信、菊花链拓扑结构、或环状拓扑结构。如下面进一步描述的,该通信还用于同步时间戳电路24的时钟。用于该通信的合适协议可以是标准的64b/66b编解码器,每10Gbps以太网前端口(PHY)带宽,其要求大约1Gbps全双工带宽。
注意到,上述实施例10可以在存储器18中任意数目的队列中存储数据帧。向哪个队列转发数据分组可以取决于帧的未来命运。如果一个或多个处理器要分析帧,可以针对每个处理器提供一个队列,且向队列转发帧可以取决于在添加分组之前队列有多长。如果队列很长,且处理器从而很忙,则可以在较不忙碌的处理器的较短队列中提供该分组。
注意到,如果大多数数据帧涉及流,可能不希望向不同的队列发送与相同流相关的帧,以由不同处理器来分析。这样,优选地通过将来自新启动的流的所有将来帧分配给“饥饿”的处理器,来实现处理器之间的任何负载平衡。如该负载平衡一样,下面进一步描述该方式的备选。
此外,如果要在稍晚的时间点从存储器18输出帧,可以在特定队列中、按照要输出帧的顺序来提供要输出的帧。下面进一步描述这种输出。
如果期望给定的服务质量,可以将任何队列划分为具有不同优先级的若干队列,使得较高优先级的帧可以超过较低优先级的帧,然后被更快速的应对(处理、输出、分析等)。
适配器12中的负载平衡
在图6中,看到一部分单元(比如适配器12的PHY 20、MAC 22和时间戳分配24)可能以比其他单元(比如,分析器26、请求器28和传输电路30)更高的速度工作。在该情况下,可以形成这些较慢单元的多个“实例”,以将从单元20至24接收到的并加上时间戳的数据分组流分为多个并行流。在图6中,将在单一PHY 20上接收到的数据分组分为4个并行流。未直接示出单元20至30,但是直接示出了它们在流中的位置。
自然地,如果需要,可以实现在各个流之间的负载平衡。
图6中较低的线示出了备选,其中,高速PHY 20接收在适配器12中单一流中处理的数据分组。
使用多个队列的外部过程或处理器的负载平衡
可以用多种方式来执行从存储器18的队列中读取数据的处理器或过程(未示出)的负载平衡。如果流等中的数据分组的排序(接收顺序或由各个数据分组中的数据定义的顺序)不相关,可以为每个处理器提供单一队列。如果一个处理器的队列满了(下面进一步描述如何可以确定这点),则分配器16可以简单地实现将更多的数据分组发送至其他队列。
如果需要服务质量,则不同的队列可以用于不同的优先级。
如果需要维持例如流的数据分组的排序,在图5中示出了方案,其中,示出了2个适配器12接收总共4个数据流(flow)/流(stream)。
适配器12向在存储器18中存储的总共8个队列(编号#0至#7)发送数据分组,以由2个处理器(编号#0至#1)使用以下方案来执行出队操作:由处理器#0来处理队列#0至#3,且由处理器#1来处理队列#4至#7。此外,队列#0和#4一般用于流#0,队列#1和#5用于流#1等等。
初始时,向队列#0发送流#0的数据分组,但是随着该队列变满,分配器16开始向队列#4发送来自流#0的数据分组。然而,不允许处理器#1对这种分组进行出队操作和分析,直到处理器#0已将队列#0清空。为了对此进行控制,分配4个比特,每个流一个比特,其值确定了哪个处理器可以处理来自各个队列的分组。在图5中,最上面的比特控制对流#0的访问,且在其值为“0”时,这意味着处理器#0可以处理该队列,且从而使分组从队列#0出队。
看到:2个最下面的比特是“1”,指示允许处理器#1处理流#2和#3,且从而从队列#6和#7出队。当允许处理器处理多于一个队列时,其可以用任何合适的方式(比如循环、优先级、队列长度等等)来选择要处理的下一个队列。
由处理器控制这4个比特并存储在存储器18中。当使用多于2个处理器时,判定其排序或顺序,使得当处理器#1已清空队列时,要么其将修改对应的比特,要么处理器#2将注意到处理器#1的队列是空的,改变对应的比特,然后开始对其对应队列进行出队操作。由控制器使用相同的顺序来确定:如果队列满了,向哪个队列添加下一个数据。
然后,为了维持队列中的数据的排序,如果改变了队列,分配器16将始终选择空的新队列。
自然地,如果多于2个处理器能够处理单一队列,针对每个流使用更多比特,以指示当前允许哪个处理器来处理流。
虚拟地址-物理地址
为了使该结构更容易地适于不同系统,优选地让请求电路28、传输电路30、分配器16以及存储器18中的或连接到存储器18的任何出队电路工作在虚拟地址空间中。
由于针对DMA仅可以分配给定最大块大小这一标准要求,以及如此分配的块在不同系统中或有时操作相同设备时可以位于存储器中不同或随机的位置这一事实,使用物理地址的直接操作变得麻烦。因此,优选虚拟地址。
当前,将具有总长度32比特的地址(参见图2)分为2个部分,其中一个部分具有适于对最大大小可分配块中的所有地址进行寻址的若干比特。在本示例中,最大大小块或段具有4MB大小,要求22个比特用于寻址。该部分的虚拟和物理地址是相同的,且用于在单一块/段中寻址。
为了避免物理块/段可能位于存储器18中不同地址处这一事实,将虚拟地址全部(至少针对每个队列)定义为连续地址,而不管它们可能位于不同块/段中这一事实。从而,将32个比特解释为若干连续地址。可以将其细分为若干4M字节块/段,但是虚拟地连续布置。从而,可以将该虚拟地址视为指示连续虚拟块/段之一的初始10比特部分和作为在该块/段内内部寻址的后22个比特。
在存储器18中的物理现实中,可以维护在段/块中寻址的后22个比特,但是将虚拟地址的头10比特部分简单地转换为对物理分配的块/段之一的寻址或标识。
对于该用途,提供查找表,以将虚拟地址的头10个比特转换为实际分配的块/段的实际标识-即10比特地址。可以在实施例的初始化时,建立该查找表(LUT)。在图2中对此进行了示意。
还注意到:可以在虚拟地址空间中使用如下描述的读/写指针,当将虚拟地址定义为连续地址时,其同样使得例如对队列长度的确定更容易。
自然地,如下面将进一步看到的,如果过程/处理器使数据项从存储器18中出队,可以向分配器16返回其地址和大小(或占用的可寻址单元的数目),作为物理地址或虚拟地址。在任一情况下,分配器16能够相应地确定虚拟地址并相应更新指针。
定时-在分配器16和适配器12之间的时钟同步
为了让接收到的帧具有可靠和可比较的时间戳,期望在适配器12和分配器16中具有同步的时钟。
与本领域通常做法一样,当前通过与从分配器16向传输电路30传输的数据一起,转发在传输的数据中编码的但是可恢复的时钟信号,来获得时钟相位同步。适配器12适于导出该时钟信号,并将其既用在传输电路30中,也用在请求电路28中,如图3所示。
在已将相位同步的情况下,分两个步骤来同步实际的时钟时间。在步骤1中,分配器16向每个适配器12发送指令,以向分配器16发送消息,然后分配器16在接收到该消息时确定总的往返时间。在步骤2中,分配器16指示适配器12将其时间适配为分配器16的时钟时间。
更具体地,步骤1包括:分配器16在记录本地分配器发送时间的同时,向各个适配器12发送指令。适配器12在接收到该指令时,立刻向分配器16发送消息,分配器16记录接收时间。指令和消息的内容并不重要。分配器16此时将接收时间减去发送时间,并导出往返时间。假定该时间的一半是在分配器16和相关适配器12之间的数据传输的时间延迟。自然地,分配器16和不同的适配器12之间可以存在不同的时间延迟。
步骤2是从分配器16向适配器12发送指令,以将本地适配器时间设为分配器16的当前本地时间加上所确定的时间延迟的值。从而,当适配器12接收到该指令时,其将其本地时间设为分配器16处的本地时间同时已推进到的时间。然后,将分配器16和适配器12的时钟时间同步为在时钟信号的时钟周期内。由于相位或时钟脉冲也同步,时钟将保持同步。
然后,还将该恢复的时钟用于对接收到的数据分组加时间戳。从而,将所有时间戳同步在时钟周期内。
由于在分配器16和任何适配器12之间可以存在未决的若干指令,在每个指令/请求中提供标识符。当前,标识符是在0和7之间的时间戳(3个比特),其与时钟同步移位并环回。从而,分配器16在发送指令时,将添加时间戳,且适配器12在应答该指令时,将该时间戳复制到应答中,使得分配器16能够确定该应答涉及哪个指令。
自然地,可以针对任何数目的适配器12来执行适配器12与分配器16的该同步。适配器12可以用星型配置、环形拓扑结构或菊花链配置连接到分配器16,在星型配置中,所有适配器12直接与分配器16通信,菊花链配置让分配器16在适配器12的串的末尾,然后适配器12与分配器通过一个或多个其他适配器12通信。
分配器16的操作
对于存储器18的每个队列,分配器16具有2个队列(参见图4):RIFO(随机入先出)和FIRO(先入随机出)队列。
FIRO队列保持来自所有适配器12的与存储器18的有关队列相关的未决请求。写指针指向FIRO队列的下一个空闲位置。在该位置中接收并提供从适配器12接收的请求。
RIFO队列保持与何时要输出存储器队列的帧及其顺序相关的信息。RIFO队列中的每一项涉及时钟的时间点,且读指针指向RIFO队列的当前时间点。
当接收到请求时,导出其时间戳,且在RIFO队列中,在对应位置或时间点上提供标识符。注意到:由于来自某些适配器12的信息或这些适配器12中的处理可能比来自其他适配器的信息或其他适配器中的处理占用更长时间这一事实,该位置或时间点可以早于相同存储队列中的其他帧。
在图4中,看到FIRO队列中的第一帧具有比下一帧更晚的发送时间。
RIFO队列的读指针每个时钟周期前进一次,且如果在读指针的新位置上看到标识符,则寻址FIRO队列的对应位置,并向相关适配器12发送传输指令。然后,移除FIRO队列的对应项(或使结束指针前进至该位置)。
自然地,可以将FIRO和RIFO队列实现为循环队列。
为了考虑到由例如在适配器12和分配器16之间的数据传输以及在适配器12中的处理时间所引起的任何时间延迟,读指针优选地与相对于实际时间点而延迟的时间点相关,所述实际时间点由同步时钟定义,且用于提供帧的时间戳(其也在FIRO中存储的请求中被转发)。就此而言,当在RIFO队列中的正确位置上提供项时,不再需要相关请求的时间戳,且丢弃该时间戳以不占用表中的空间。
从而,读指针的时间可以落后于实际时钟多个时钟周期,比如3、4、5、6、7、8、9、10或更多个时钟周期。然后,可以将在例如时间120处加时间戳的帧转发到FIRO队列,并将其在时间120处输入RIFO队列,在时间130处对其进行寻址(读指针前进至该位置)。
在所有时间且针对存储器18中的每个队列,分配器16具有写指针和读指针2个指针:所述写指针标识要存储的来自适配器12的下一个帧的下一个地址,所述读指针标识要出队用于进一步分析、转发等的该队列的下一存储帧的地址。当要存储新的帧时,向相关传输电路30转发写地址,即,将下一个虚拟地址转换为被转发的其物理地址,然后传输电路30辅助完成帧的存储。同时,分配器16将相关写指针增加与帧的大小相对应的值。
在一个或多个队列保持帧以供例如处理器进一步分析的情况下,在这种队列中的帧的数目或队列的填充程度将说明该处理器有多忙碌。当使用虚拟地址时,这是由队列的写指针和读指针之间的地址差来简单确定的。
可以由任何设备或过程/处理器(比如连接到存储器的一个设备或过程/处理器)辅助完成使帧从存储器18出队。使帧从存储器18中出队使该设备/过程/处理器相应地改变该队列的读指针。
一般而言,向存储器18添加帧使得分配器16改变写指针,且使帧出队使得过程/处理器改变读指针。自然地,需要交换该信息。存在若干种方法和方案。
在一个情况下,期望不过分频繁地交换该数据,以保留DMA总线上的带宽用于数据分组交换。在该情况下,由分配器16来发起镜像或同步。每次在存储器18中写入数据分组时,分配器16可以更新写指针,从而由于不更新读指针,各个队列(的数据帧的数目或填充程度)对于分配器16看起来增长了。
自然地,可以偶尔交换已更新的写指针,但是优选地直到队列的大小超过预定限制才更新这些写指针。此时,分配器16将更新来自存储器18或过程/处理器的读指针,以获得与队列的实际大小相关的更新数据,且从而获得过程/处理器有多忙碌的更新数据。
在一个情况下,过程/处理器可以同时接收更新的写指针。这样,如果过程/处理器在已存储了附加分组且附加分组准备好用于分析/出队的信息之前清空了所有队列,则过程/处理器可能饥饿。当在分配器18中更新写指针时,可以通过在过程/处理器或存储器18中更新写指针来避免这点。然后,过程/处理器更新了队列信息,且只要数据分组存在,就保持工作。
备选地,读指针的更新也可以是更频繁的,以保持分配器16和过程/处理器更好的“得到通知”。可以在总线32不忙碌时,或例如在从上一次同步起已经过最大延迟时,执行对写/读指针的该同步。
自然地,队列或存储器18可以是循环的,且如果需要,可以将特定空间分配给队列。
自然地,如果适配器12背靠背地接收到与相同流相关的多个数据帧,请求电路28将发送若干请求,然后分配器16将在RIFO队列中相关位置上提供该若干请求。如果在RIFO队列中的每个项中识别出相关适配器12,分配器16可以识别出RIFO中与相同适配器12相关的多个相邻项,且从而仅向该适配器12回复具有一个传输的传输电路30,该一个传输基于该简单的请求不仅识别队列(地址数据),还识别要转发的分组的数目。
从存储器18经由适配器12的数据传输
自然地,可以使存储器18中一个或多个队列中存储的数据分组出队,通过总线32发送,并经由适配器12输出。如存储在存储器18中存储的数据分组的情况一样,这可以经由DMA来执行,从而,适配器12直接读取存储器18中的数据分组,在存储器18处没有例如来自处理器的干扰。
使分组出队的方案如同上述用于在存储器18中存储分组的方案:
可以经由相同适配器12输出来自存储器18中的若干队列的数据分组。这可以使用任意期望方案(比如循环、优先级或任何其他优先排序)来实现。在适配器12中,可以针对不同的流、队列、优先级等提供任意数目的Tx端口或FIFO,且可以经由单一PHY或经由不同PHY来输出来自这些Tx端口或FIFO的分组。
在一个情况下,如在存储器18中存储数据的情况相同,在存储器18中存储队列的读/写指针。以相同的方式,适配器12可以对读/写指针进行镜像处理,且只要数据看起来存在,就保持使数据从队列中出队。如上所述,镜像处理可以固定的最大时间间隔发生,在队列看起来过满或过空时发生,等等。
过程/处理器可以跟踪读和写指针,且如上所述,确定适配器12是否过于忙碌,以至于应当向另一队列和另一适配器12转发相关队列的数据分组。
在另一情况下,处理器或过程可以定义应当经由适配器12输出哪些数据分组或地址,以及可以向适配器12转发对这些地址的指示。
一种方式是让过程或处理器将这种分组复制到特定队列中,该特定队列由适配器使用过程/处理器所更新的读/写指针的特定集合来进行出队,且该特定队列被镜像到适配器12上。
另一方式关注于不复制数据分组。在该情况下,在原始队列中维护数据分组,但是可以提供另一组读/写指针,已用于使数据分组出队。事实上,如果维护队列的原始读/写指针,需要单一附加指针。附加指针指示:在队列中,过程/处理器分析到了哪里,且从而指示可以使读和写指针之间的地址中的哪个地址出队。由处理器/过程来维护该附加指针,并通过使用例如DMA来转发至适配器或由适配器读取,且相关适配器向处理器/过程或控制电路16通知何时已使地址出队。
Claims (13)
1.一种用于接收和转发数据分组的组件,包括:
-存储器,包括能够存储数据的多个地址,
-数据接收和存储设备,包括:
○用于接收或访问数据分组的装置,
○用于确定地址的装置,以及
○用于辅助完成在所述存储器中在所确定的地址处存储所述数据分组的至少一部分的装置,以及
-用于从所述存储器中读取数据或使数据从所述存储器中出队的装置,包括:用于输出第一信息的装置,所述第一信息与数据已被读取/出队的所述存储器的一个或多个地址相关,
其中,所述用于确定地址的装置适于:
基于所确定的地址,导出与所述存储器的一组或多组地址的填充程度相关的信息,
如果填充程度超过预定程度,指示所述用于从所述存储器中读取数据或使数据从所述存储器中出队的装置输出所述第一信息,并基于所述第一信息重新导出填充程度信息。
2.根据权利要求1所述的组件,其中,所述用于确定地址的装置适于:输出与所确定的地址相关的第二信息,所述用于从所述存储器中读取数据或使数据从所述存储器中出队的装置适于基于所述第二信息对数据进行读取/出队。
3.根据权利要求1或2所述的组件,其中,一组或多组地址中的每一组定义了在所述存储器中定义的一定数目的队列之一,每个队列由多个顺序地址来定义,队列的所有地址是非重叠的,以及所述用于确定地址的装置适于:导出队列的填充程度。
4.根据权利要求3所述的组件,其中,所述用于确定地址的装置适于:针对每个队列,保持写指针和读指针,所述写指针标识要添加数据的下一个地址,所述读指针标识要从队列中读取/出队的下一个地址,
所述用于确定地址的装置适于:当确定了地址时,更新与所确定的地址相关的队列的写指针,
所述用于确定地址的装置适于:基于所述第一信息,更新数据已出队的队列的读指针,
其中,所述用于确定地址的装置适于:基于队列的读指针和写指针,确定队列的填充程度。
5.根据权利要求1或2所述的组件,其中,所述数据接收和存储设备包括:
-多个数据接收和存储单元,每个数据接收和存储单元包括接收/访问装置和存储装置,以及
-控制单元,包括:用于确定要存储所述数据分组的至少一部分的地址的装置,
其中:
-每个数据接收和存储单元还包括:用于向控制单元转发与接收到的数据分组相关的信息的装置,
-所述用于确定要存储所述数据分组的至少一部分的地址的装置适于:还基于已转发的信息来确定地址,以及
-所述用于确定要存储所述数据分组的至少一部分的地址的装置包括:用于向相关接收/存储单元返回所确定的地址的装置。
6.根据权利要求3所述的组件,其中,所述用于从所述存储器中读取数据或使数据从所述存储器中出队的装置包括多个处理器,每个处理器适于使数据从第一组队列中出队,各个第一组中的队列是非重叠的,以及所述用于确定地址的装置适于通过以下动作来选择地址:
-针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的一个队列,所述第二组队列中的队列是非重叠的,
-如果所确定的第二组中的当前选择的第一队列的填充程度超过预定程度,则识别并选择所确定的第二组中的第二队列,
-选择所识别的第二队列的地址,
所述组件还包括:指示装置,用于指示与所识别和选择的第二队列相关的所述进程/处理器,直到超过预定程度的所述第一队列为空才处理第二队列。
7.一种数据接收和存储设备,包括:
○用于接收或访问数据分组的装置,
○用于确定地址的装置,以及
○用于辅助完成在存储器中在所确定的地址处存储所述数据分组的至少一部分的装置,所述存储器包括能够存储数据的多个地址;以及
其中,所述用于确定地址的装置适于:
基于所确定的地址,导出与所述存储器的一组或多组地址的填充程度相关的信息,
如果填充程度超过预定程度,指示用于从所述存储器中读取数据或使数据从所述存储器中出队的装置输出第一信息,并基于所述第一信息重新导出填充程度信息,所述用于从所述存储器中读取数据或使数据从所述存储器中出队的装置包括:用于输出第一信息的装置,所述第一信息与数据已被读取/出队的所述存储器的一个或多个地址相关。
8.一种操作根据权利要求1所述的组件的方法,包括:
-在存储器中的多个地址存储数据,
-所述数据接收和存储设备:
○接收或访问数据分组,
○确定地址,以及
○辅助完成在所述存储器中在所确定的地址处存储所述数据分组的至少一部分,以及
-从所述存储器中读取数据或使数据从所述存储器中出队,包括:输出与数据已被读取/出队的一个或多个地址相关的第一信息,
确定步骤,包括:
基于所确定的地址,导出与所述存储器的一组或多组地址的填充程度相关的信息,
如果所述填充程度超过预定程度,指示所述从所述存储器中读取数据或使数据从所述存储器中出队的步骤输出所述第一信息,并还基于所述第一信息来重新导出填充程度信息。
9.根据权利要求8所述的方法,其中,所述确定步骤包括:输出与所确定的地址相关的第二信息,所述从所述存储器中读取数据或使数据从所述存储器中出队的步骤包括:基于所述第二信息对数据进行读取/出队。
10.根据权利要求8或9所述的方法,其中,一组或多组地址中的每一组定义了在所述存储器中定义的一定数目的队列之一,每个队列由多个顺序地址来定义,队列的所有地址是非重叠的,以及所述确定步骤包括:导出队列的填充程度。
11.根据权利要求10所述的方法,其中,所述确定步骤包括:针对每个队列,确定写指针和读指针,所述写指针标识要添加数据的下一个地址,所述读指针标识要从队列中读取/出队的下一个地址,所述确定步骤包括:当确定了地址时,更新与所确定的地址相关的队列的写指针,
所述确定步骤包括:基于所述第一信息,更新数据已出队的队列的读指针,
其中,所述确定步骤包括:基于队列的读指针和写指针,确定队列的填充程度。
12.根据权利要求8或9所述的方法,其中,所述数据接收和存储设备包括:
-多个数据接收和存储单元,每个数据接收和存储单元包括接收/访问装置和存储装置,以及
-控制单元,包括:用于确定要存储所述数据分组的至少一部分的地址的装置,
其中,所述确定步骤包括:
-每个数据接收和存储单元向控制单元转发与接收到的数据分组相关的信息,
-所述用于确定要存储所述数据分组的至少一部分的地址的装置还基于已转发的信息来确定地址,以及
-所述用于确定要存储所述数据分组的至少一部分的地址的装置向相关接收/存储单元返回所确定的地址。
13.根据权利要求10所述的方法,其中,所述从所述存储器中读取数据或使数据从所述存储器中出队的步骤包括:多个处理器或进程中的每一个从第一组队列中读取数据/使数据从第一组队列中出队,各个第一组中的队列是非重叠的,以及所述确定步骤包括通过以下步骤来确定地址:
-针对接收/访问的数据分组,确定第二组队列,每个第二组队列包括来自每个第一组队列的一个队列,所述第二组队列中的队列是非重叠的,
-如果所确定的第二组中的当前选择的第一队列的填充程度超过预定程度,则识别并选择所确定的第二组中的第二队列,
-选择所识别的第二队列的地址,
所述方法还包括以下步骤:指示与所识别和选择的第二队列相关的所述进程/处理器,直到超过预定程度的所述第一队列为空才处理第二队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26681109P | 2009-12-04 | 2009-12-04 | |
US61/266,811 | 2009-12-04 | ||
PCT/EP2010/068967 WO2011067409A1 (en) | 2009-12-04 | 2010-12-06 | An assembly and a method of receiving and storing data while saving bandwidth by controlling updating of fill levels of queues |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102763381A CN102763381A (zh) | 2012-10-31 |
CN102763381B true CN102763381B (zh) | 2015-04-22 |
Family
ID=43974335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080063131.4A Active CN102763381B (zh) | 2009-12-04 | 2010-12-06 | 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8874809B2 (zh) |
EP (1) | EP2507952B1 (zh) |
JP (1) | JP5749732B2 (zh) |
KR (1) | KR101716832B1 (zh) |
CN (1) | CN102763381B (zh) |
BR (1) | BR112012013357A2 (zh) |
DK (1) | DK2507952T3 (zh) |
WO (1) | WO2011067409A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3351247A1 (en) * | 2010-06-01 | 2018-07-25 | Auspex Pharmaceutical, Inc. | Benzoquinolone inhibitors of vmat2 |
JP5816301B2 (ja) * | 2011-01-28 | 2015-11-18 | ナパテック アクティーゼルスカブ | データパケットを受信及び転送する装置及び方法 |
US8934332B2 (en) * | 2012-02-29 | 2015-01-13 | International Business Machines Corporation | Multi-threaded packet processing |
US10102577B2 (en) * | 2013-09-09 | 2018-10-16 | Nex Services North America Llc | Method and apparatus for order entry in an electronic trading system |
EP3417376A4 (en) * | 2016-02-16 | 2019-03-20 | Technion Research & Development Foundation Limited | OPTIMIZED DATA DISTRIBUTION SYSTEM |
US10929308B2 (en) * | 2017-11-22 | 2021-02-23 | Arm Limited | Performing maintenance operations |
US10983725B2 (en) | 2018-03-01 | 2021-04-20 | Synopsys, Inc. | Memory array architectures for memory queues |
US11513924B2 (en) | 2018-08-22 | 2022-11-29 | Intel Corporation | Flexible memory mapped input/output (I/O) space definition for a virtual device in a scalable I/O virtualization (S-IOV) architecture |
CN117112581A (zh) * | 2018-10-26 | 2023-11-24 | 创新先进技术有限公司 | 一种数据状态更新方法、装置、设备及介质 |
CN111865831B (zh) * | 2019-04-30 | 2022-05-13 | 华为技术有限公司 | 数据处理的方法、网络设备、计算节点和系统 |
US20220043588A1 (en) * | 2020-08-06 | 2022-02-10 | Micron Technology, Inc. | Localized memory traffic control for high-speed memory devices |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141323A (en) * | 1996-06-03 | 2000-10-31 | Whittaker Corporation | Closed loop congestion control using a queue measurement system |
CN1656754A (zh) * | 2002-05-30 | 2005-08-17 | 松下电器产业株式会社 | 分组传送电路和分组传送方法 |
CN1742467A (zh) * | 2003-03-04 | 2006-03-01 | 富士通株式会社 | 链接信息管理系统和消息传送控制系统 |
CN1777145A (zh) * | 2004-11-16 | 2006-05-24 | 三星电子株式会社 | 路由器及使用其管理分组队列的方法 |
CN1797380A (zh) * | 2004-12-28 | 2006-07-05 | 株式会社东芝 | 接收装置、收发装置、接收方法和收发方法 |
CN101262432A (zh) * | 2007-03-07 | 2008-09-10 | 日本电气株式会社 | 通信设备 |
WO2009093299A1 (ja) * | 2008-01-21 | 2009-07-30 | Fujitsu Limited | パケット処理装置およびパケット処理プログラム |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4025903A (en) * | 1973-09-10 | 1977-05-24 | Computer Automation, Inc. | Automatic modular memory address allocation system |
FR2443735A1 (fr) * | 1978-12-06 | 1980-07-04 | Cii Honeywell Bull | Dispositif de controle automatique de la capacite memoire mise en oeuvre dans les systemes de traitements de l'information |
US5548740A (en) * | 1992-02-10 | 1996-08-20 | Sharp Kabushiki Kaisha | Information processor efficiently using a plurality of storage devices having different access speeds and a method of operation thereof |
US6430191B1 (en) | 1997-06-30 | 2002-08-06 | Cisco Technology, Inc. | Multi-stage queuing discipline |
JP3666258B2 (ja) * | 1997-08-28 | 2005-06-29 | セイコーエプソン株式会社 | プリンタ |
US6735679B1 (en) * | 1998-07-08 | 2004-05-11 | Broadcom Corporation | Apparatus and method for optimizing access to memory |
US6671747B1 (en) | 2000-08-03 | 2003-12-30 | Apple Computer, Inc. | System, apparatus, method, and computer program for execution-order preserving uncached write combine operation |
US6990598B2 (en) | 2001-03-21 | 2006-01-24 | Gallitzin Allegheny Llc | Low power reconfigurable systems and methods |
US6594234B1 (en) | 2001-05-31 | 2003-07-15 | Fujitsu Network Communications, Inc. | System and method for scheduling traffic for different classes of service |
US7787370B1 (en) | 2001-09-06 | 2010-08-31 | Nortel Networks Limited | Technique for adaptively load balancing connections in multi-link trunks |
US20030056073A1 (en) | 2001-09-18 | 2003-03-20 | Terachip, Inc. | Queue management method and system for a shared memory switch |
US6967951B2 (en) | 2002-01-11 | 2005-11-22 | Internet Machines Corp. | System for reordering sequenced based packets in a switching network |
CN1620782A (zh) | 2002-02-22 | 2005-05-25 | 连宇通信有限公司 | 一种在无线分组数据通信中的优先级控制方法 |
US7463585B2 (en) | 2002-05-16 | 2008-12-09 | Broadcom Corporation | System, method, and apparatus for load-balancing to a plurality of ports |
US7289442B1 (en) | 2002-07-03 | 2007-10-30 | Netlogic Microsystems, Inc | Method and apparatus for terminating selected traffic flows |
EP1654819B1 (en) | 2003-08-15 | 2013-05-15 | Napatech A/S | A data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network |
US7213094B2 (en) * | 2004-02-17 | 2007-05-01 | Intel Corporation | Method and apparatus for managing buffers in PCI bridges |
US7680139B1 (en) | 2004-03-25 | 2010-03-16 | Verizon Patent And Licensing Inc. | Systems and methods for queue management in packet-switched networks |
US7359383B2 (en) | 2004-03-29 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Load balancing with mesh tagging |
US7623455B2 (en) | 2005-04-02 | 2009-11-24 | Cisco Technology, Inc. | Method and apparatus for dynamic load balancing over a network link bundle |
EP1804159B1 (en) | 2005-12-30 | 2009-12-09 | STMicroelectronics Belgium N.V. | Serial in random out memory |
JP4878185B2 (ja) * | 2006-03-17 | 2012-02-15 | 株式会社リコー | データ通信回路および調停方法 |
US20080120480A1 (en) | 2006-11-22 | 2008-05-22 | International Business Machines Corporation | Method and System For Preserving Critical Storage Contents Across A System Restart |
KR100887417B1 (ko) * | 2007-04-11 | 2009-03-06 | 삼성전자주식회사 | 멀티 프로세서 시스템에서 불휘발성 메모리의 공유적사용을 제공하기 위한 멀티패쓰 억세스블 반도체 메모리장치 |
JP2008287600A (ja) * | 2007-05-18 | 2008-11-27 | Seiko Epson Corp | ホスト装置、情報処理装置、電子機器、プログラム及びリード制御方法 |
US8799620B2 (en) | 2007-06-01 | 2014-08-05 | Intel Corporation | Linear to physical address translation with support for page attributes |
US8078928B2 (en) | 2007-10-12 | 2011-12-13 | Oracle America, Inc. | System and method for verifying the transmit path of an input/output component |
JP5088145B2 (ja) * | 2008-01-10 | 2012-12-05 | 富士通株式会社 | パケット中継装置、制御方法およびパケット中継プログラム |
US8356125B1 (en) * | 2008-05-15 | 2013-01-15 | Xilinx, Inc. | Method and apparatus for providing a channelized buffer |
WO2010076649A2 (en) | 2008-12-31 | 2010-07-08 | Transwitch India Pvt. Ltd. | Packet processing system on chip device |
-
2010
- 2010-12-06 US US13/513,526 patent/US8874809B2/en active Active
- 2010-12-06 WO PCT/EP2010/068967 patent/WO2011067409A1/en active Application Filing
- 2010-12-06 JP JP2012541531A patent/JP5749732B2/ja active Active
- 2010-12-06 EP EP10795979.3A patent/EP2507952B1/en active Active
- 2010-12-06 DK DK10795979.3T patent/DK2507952T3/da active
- 2010-12-06 CN CN201080063131.4A patent/CN102763381B/zh active Active
- 2010-12-06 BR BR112012013357A patent/BR112012013357A2/pt not_active IP Right Cessation
- 2010-12-06 KR KR1020127016757A patent/KR101716832B1/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141323A (en) * | 1996-06-03 | 2000-10-31 | Whittaker Corporation | Closed loop congestion control using a queue measurement system |
CN1656754A (zh) * | 2002-05-30 | 2005-08-17 | 松下电器产业株式会社 | 分组传送电路和分组传送方法 |
CN1742467A (zh) * | 2003-03-04 | 2006-03-01 | 富士通株式会社 | 链接信息管理系统和消息传送控制系统 |
CN1777145A (zh) * | 2004-11-16 | 2006-05-24 | 三星电子株式会社 | 路由器及使用其管理分组队列的方法 |
CN1797380A (zh) * | 2004-12-28 | 2006-07-05 | 株式会社东芝 | 接收装置、收发装置、接收方法和收发方法 |
CN101262432A (zh) * | 2007-03-07 | 2008-09-10 | 日本电气株式会社 | 通信设备 |
WO2009093299A1 (ja) * | 2008-01-21 | 2009-07-30 | Fujitsu Limited | パケット処理装置およびパケット処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2011067409A1 (en) | 2011-06-09 |
EP2507952B1 (en) | 2013-09-18 |
EP2507952A1 (en) | 2012-10-10 |
KR101716832B1 (ko) | 2017-03-27 |
JP5749732B2 (ja) | 2015-07-15 |
CN102763381A (zh) | 2012-10-31 |
US20120278517A1 (en) | 2012-11-01 |
DK2507952T3 (da) | 2014-01-13 |
JP2013513273A (ja) | 2013-04-18 |
US8874809B2 (en) | 2014-10-28 |
BR112012013357A2 (pt) | 2016-03-01 |
KR20120101092A (ko) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102754395B (zh) | 由中央控制器控制的接收和存储数据分组的设备和方法 | |
CN102763381B (zh) | 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法 | |
CN102742220B (zh) | 使用加时间戳和中央控制器由多个适配器对数据帧进行的分布式处理 | |
EP2668753B1 (en) | An apparatus and a method for receiving and forwarding data packets | |
CN108282415A (zh) | 一种调度方法及设备 | |
US20030133465A1 (en) | System for reordering sequenced based packets in a switching network | |
JP5793690B2 (ja) | インタフェース装置、およびメモリバスシステム | |
JP2000503828A (ja) | データネットワーク上でデータパケットをスイッチングする方法および装置 | |
WO2012163395A1 (en) | An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks | |
CN102696201B (zh) | 对读取和排序数据分组的多个分析装置进行操作的设备、组件和方法 | |
US6628669B1 (en) | LAN relaying/switching apparatus | |
WO2011067404A1 (en) | An apparatus and a method of parallel receipt, forwarding and time stamping data packets using synchronized clocks | |
JPH0951351A (ja) | ネットワーク間接続装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |