缓冲来自多个输入流的数据的排队系统、系统和方法
技术领域
本发明涉及计算机和通信系统领域,特别是涉及一种可以接收多个输入流的系统,这些输入流被传送到一共用输出端口。
背景技术
多路输入、共用输出的系统在本领域中很普遍。例如多个主机可以与一个共用服务器进行数据通信;多个处理器可以访问一个共用存储设备;多个数据流可以被发送到一个共用传输介质中;等等。通常,多路输入系统的输入的特征在于一个或更多输入流的活动突发。在这些活动突发期间,输入数据的到达率通常超过了对下级接收系统可允许的数据发送率,因此必须提供缓冲器以防止数据丢失。
传统上,根据设计优先级是最大存储器使用效率还是最大性能,可以使用两种系统中的一种来管理多个输入流到一个共用输出的路由。
在存储效率实施例中,提供一个共用缓冲器来对多个输入流的数据进行排队,根据给定的控制协议,提供有一个输入流的各个处理可控制对该共用缓冲器的存取。从该共用缓冲器中将数据卸载(unload),以便提供共用输出。由于使用共用缓冲器来接收多个输入流提供的流量,因此缓冲器的大小必须根据特定的总计到达率进行最佳化。即,由于所有的输入流同时活动是几乎不可能的,因此该共用缓冲器的大小基本上小于同时容纳所有数据流的最大流量所需的大小。但是,该实施例的性能将取决于提供输入流的最坏执行处理,因为一个坏处理可能会在其它处理等待访问该共用缓冲器时占用该共用缓冲器。
为了保持提供多个输入的这些处理间的独立性,如图1中的系统100所示,传统的高性能多路输入系统通常使用多个输入缓冲器。每个缓冲器110提供一个队列,以便从它对应的输入流101接收数据。在图1的例子中,接收系统发出“卸载(n)”命令,从而从第n个队列选择下一个可用的数据项目,然后将该被选择的数据项目Qn传送到接收系统。通常根据优先级方案来进行特定输入数据流n的选择。虽然未示出,但系统100通常包括用于通知接收系统一个输入流的数据为可用的装置,该接收系统根据与该数据流相关联的优先级,在多个可用数据流中进行选择。通常还使用用于控制多个输入流的数据流量的协议,它包括例如系统100中的传输控制以及系统100和接收系统各自的传输和接收控制的组合。按照相似的方式,特定输入流的选择可包括多种方案中的任何一种,包括先入先出选择、循环(round-robbin)选择等等,以补充或替换前述优先级方案。
对多路输入系统的设计选择包括对输入队列的大小D的选择。根据估算的输入和输出数据流比率,可以确定队列大小D以便最小化队列溢出的可能性。为了方便理解,与系统100的各输入流101相关联的多个队列将具有相同的大小。如果已知特定的输入流具有与其他输入流完全不同的流率,则应当分配一个更小或更大的队列大小。如上所述,根据下级接收系统的预期处理速度,系统100应当能够允许来自任何输入流的数据项目D的最大突发性。队列理论技术在本领域中普遍用于对给定任何输入流中数据项目的预期分布和下级接收系统对数据项目删除的预期分布,来确定D的最佳值。
由于队列大小D取决于各输入流提供的数据项目的估算到达率,因此各队列的大小应当能够兼容对到达的最坏估算情况,即使特定输入流经常接近填满其对列,所有输入流同时填满它们队列的可能性通常也非常低。投个角度来看,在任何时刻所有队列中未使用的存储器位置的数目通常非常高,因此传统的多个队列多个输入系统100的存储器使用效率非常低。
发明内容
本发明的一个目的是提供一种可使存储器使用效率最大化的多路输入设备和方法,本发明的另一个目的是提供一种可以在保持高性能的同时最大化存储器使用效率的多路输入设备和方法。本发明的另一目的是提供一种可以使存储设备占用区域最小化的高性能多路输入设备。
这些目的以及其他目的都可以通过提供一种多路输入排队系统来实现,该系统使用一共用缓冲器,用于从多个输入端接收输入数据;一局部判优单元,用于在数据流提供它们的输入数据时,将共用缓冲器中的存储器单元分配给多个输入流。为了实现从多路输入共用缓冲器中独立控制地卸载各数据项目,系统应当保持分配给各输入流中的各数据项目的缓冲器的存储器位置映射。为了最小化存储器以及与保持各数据项目映射的相关开销,应当按照连续的、先入先出的队列形式来保持分配给各输入流的存储器位置。当下级接收设备确认已准备好从特定输入流中接收数据项目时,将从输入流的队列中删除所分配的存储器位置的标识,并将处于共用缓冲器中所分配的存储器处的数据项目提供给接收设备。
本发明的第一方面提供了一种多路输入排队系统,包括:
缓冲器,包括多个存储单元;
分配器,用于分配多个存储单元中的一个未使用的存储单元,不论缓冲器中未使用的存储单元所处位置,以便存储来自多个输入流中的一个选择输入流的数据项目;
映射器,用于:
接收一个对应于选择输入流的输出的请求,
根据对选择输入流的请求,确定与存储单元相关联的地址,
根据与存储单元相关联的地址,从存储单元提供该数据项目作为输出。
本发明的第二方面提供了一种用于从多个输入流接收数据的缓冲器系统,该缓冲器系统包括:
多个存储单元,
多个输入多路复用器,每个输入多路复用器都与多个存储单元的一个存储单元耦合;和
分配器,它与多个存储单元耦合,用于通过向多个输入多路复用器提供的分配命令,将多个输入流中的一个或多个输入流耦合到对应的一个或多个存储单元,其中对于一个或多个输入流中的每一个,分配多个存储单元中的一个未使用的存储单元,不论缓冲器系统中的未使用存储单元所处的位置,以便存储来自输入流的一个数据项目。
本发明的第三方面提供了一种用于在一个缓冲器中缓冲来自多个输入流的数据项目的方法,包括:
从多个输入流的一个或多个输入流接收输入通知;
分配多个存储单元中的一个选择的未使用的存储单元,不论缓冲器中未使用的存储单元所处的位置,以便选择一个或更多输入流的选择输入流;
将从选择输入流接收到的数据项目存储到选择存储单元中;
存储对应选择输入流的选择存储单元的标识;
接收卸载请求,该卸载请求标识选择输入流;和
根据对应该选择输入流的选择存储单元的标识,从选择存储单元提供接收到的数据项目。
附图说明
下面将参照附图通过举例的方式来详细说明本发明,其中:
图1示出现有技术多路输入排队系统的例子的方框图;
图2示出本发明的多路输入排队系统的例子的方框图;
图3示出根据本发明具有多个队列存储器分配映射的多路输入排队系统的例子的方框图。
在这些图中,相同的附图标记表示相同或对应的特征或功能。
具体实施方式
图2示出根据本发明的多路输入排队系统200的例子的方块图。该系统200包括双端口存储器220,其中利用分配器/判优器240(下称分配器240)来控制对存储器220的写入,利用映射器/队列发生器250(下称映射器250)来控制对存储器220的读出。对存储器220的写入和读取处理分别由开关210和开关260象征性的表示。
如图2所示,存储器220包括P可寻址的存储单元,每个存储单元都具有足够的宽度W来容纳任何输入流101提供的数据项目。参照上面对图1现有技术系统100的讨论,利用传统的排队理论技术,根据预期的输入和输出流率,可以确定为避免存储器220溢出的给定置信度级别所需的存储单元的数目P。最佳地,系统200中的参数P最少与系统100中的参数D一样大。但是,应当注意系统100包括总共N*D个宽度为W的存储单元,而存储器220包括总共P个宽度为W的存储单元。
分配器240用于提供存储器220内当前未使用的存储单元的位置,如开关210中的输出开关Sb所示,输入流101的下-数据项目将被引导到该位置。如输入流101和分配器240之间的虚线所示,分配器240用于在输入流101有新的数据项目需要发送时接收通知。在最佳实施例中,在两个或更多输入流101有数据需要同时发送的情况下,分配器240包括一判优逻辑电路,在简单实施例中,例如可以向开关210的多个输入端口指定顺序排序的优先级,第一端口具有最高优先级,第二端口具有次级优先级,以此类推。每个输入流M1、M2、...、MN都根据其优先级与这些端口物理连接。在这个例子中,分配器240通过输入开关Sa仅选择最小编号的端口,该端口有需要发送的数据项目。其他优先权方案与现有技术中一样,包括根据各数据项目的内容、或根据一个或更多输入流101的传输优先历史进行动态优先化。或者,可以使用简单的循环输入选择方法,其中分配器240对各输入流101顺序进行新数据的采样,并按照其采样的次序将该新数据传送到存储器220中的下一可用的未使用存储单元中,本领域普通技术人员应当认识到,解决不同输入流的潜在冲突的特定方法与本发明的原理无关。
下面将要讨论将分配器240用于标记从各存储单元中删除的数据项目。当各数据项目被删除时,包含该数据项目的存储单元将变得可用于接收新的数据项目,从而作为当前未使用的存储单元。仅当所有的P存储单元都被还未被删除的数据项目填满时,存储器220才会溢出,
由于任何输入流都可以对存储器220中任何当前未使用的存储单元进行存取,因此系统100表现出在本发明背景中描述的共用缓冲的存储器使用效率。但是,由于分配器240可以按照需要分配各可用存储单元,因此系统200并不依赖于利用一个或更多提供输入流的处理来对存储器220进行控制。
另外,由于分配器240的分配和判优功能,特别是分配器与开关210的交互作用基本上与提供输入流101的处理无关,因此对分配器240和开关210的修改将不会该影响提供输入流101的处理。例如,为了提高性能并降低输入流101之间发生冲突的可能性,开关210可以允许同时将多个数据项目传送到存储器220中的多个存储单元中。即,开关Sa在图2中作为N对1开关,开关Sb作为1对P开关。或者,为了支持k路同时传送,开关Sa和Sb可以分别为N对k和k对P开关。但是,这种变化对于输入流M1...MN来说是“透明的”,因为与N对k开关相比,不需要对提供数据项目的处理进行修改以便与N对1开关相适应。
映射器250用于确保按照适当的次序从存储器220中卸载/删除数据项目。如果输出数据项目的队列Qn希望对应于接收数据项目的相同队列,则映射器250仅需要利用用于控制开关210中的开关Sb的相同队列来操作。即,例如如果开关Sb操作以便顺序选择存储器220中的存储单元,则映射器250也应当顺序选择存储器220中的存储单元,以便与下级接收系统进行通信。但是,通常系统200可允许下级接收系统按照某种独立的方式来接收数据项目。
在典型的实施例中,如上面本发明背景中所述,接收系统按照一个顺序调用数据项目,该顺序可能与多路输入排队系统200接收数据项目的顺序不同。在最佳实施例中,系统200可以允许接收系统指定输入流n,从该输入流n发送下一数据项目。按照这种方式,例如对输入流n的处理可以初始化请求以便将m个数据项目发送到接收系统,接收系统然后向排序系统200发出m个“卸载(n)”命令以接收这m个数据项目,而不考虑从其他输入流101到达系统200的其他数据项目。即,相对于每个输入流,数据项目按顺序提供给接收系统,但是接收系统可以不按照来自其他输入流的数据项目到达次序而从所选择的输入流中调用数据项目。
为了使接收系统从所选择的输入流中请求数据项目队列,分配器240将各存储单元的位置p通知各输入流n,将其作为流单元对(n,p)提供给映射器250。该映射器250可以保持各存储单元位置指示器pn的列表,该位置指示器被顺序分配给来自各输入流n的各到达数据项目。当接收系统请求来自特定输入流n的“下一”数据项目时,映射器250从与该输入流n相关联的列表中提取出下一位置指示器pn,并使用该指示器pn通过开关260提供存储单元p的内容作为输出Qn。从与输入流n相关联的列表中删除指示器pn,分配器240从而包括作为当前未使用的存储器位置的存储单元p。
图3示出根据本发明具有多路队列存储器分配映射的多路输入排队系统300的例子的方框图,它可用作图2的系统200中的映射器250。本领域技术人员在看过本文后很容易实现映射器250的其他实施例。
在图3的实施例中,映射器250包括多个先入先出(FIFO)队列355,每个队列355与输入多路输入排队系统300的一个对应输入流101相关联。当分配器240将存储单元p分配给输入流n时,该存储单元的地址p被存储在对应该输入流n的队列中,索引n用于选择对应输入流n的队列355。当从输入流接收到每个新的数据项目时,该数据项目所存储的地址p将按照顺序被存储在对应该输入流的队列中。
图3的示例映射器250中的每个队列355的队列长度都为D,与图1所示的现有技术队列长度相同。但是应当注意图1中的队列110的宽度为W,因此每个队列110的总大小为D*W。由于图3的每个队列355都用于将地址存储在p个存储单元中,因此每个队列355的总大小为D*log2P。在典型实施例中,地址的宽度log2P通常基本上小于数据项目的宽度。例如,如果数据项目为32位宽,且缓冲器220可以保持1024个数据项目(log2(1024)=10),则图3的队列355将小于图1中缓冲器110的大小的三分之一(10/32)。
当接收系统通过“卸载(n)”命令从选择的输入流中请求下一数据项目时,多路复用器/选择器350将选择对应所选择数据流n的队列,并从所选择队列355中删除下一可用索引pn。该索引pn用于通过开关/多路复用器260来选择对应的存储单元p,以便提供对应于接收系统的卸载请求的输出Qn。在选择了存储单元p中的数据项目进行输出之后,分配器240包括作为当前未使用存储单元的存储单元p,从而可以按照需要将其分配给新到达的数据项目。
在图3中示出多路输入、多路输出、开关210的一个例子,它可以将数据项目从输入流101传送到存储器220中所选择的存储单元p。该示例开关210包括对应存储器220中各存储单元的多路复用器/选择器310,可以利用来自分配器240的选择(np)命令来启动该多路复用器/选择器310。在该实施例中,与各存储单元相关联的各多路复用器/选择器310都可以接收选择(np)命令,其中np标识已经被分配到存储单元的选择输入流。按照这种方式,可以将来自第n个输入流的数据项目传送到第p个存储单元。注意本实施例允许对来自多个同时(co-temporaneous)输入流的数据项目进行存储。即,例如,如果输入流1,3和7当前希望发送数据项目,且存储单元2,8和13(可能还有其他)当前未使用,则最佳实施例中的分配器240将分别向与存储单元2,8,13关联的多路复用器310发出选择(1)、选择(3)和选择(7)命令,从而同时将输入流1传送到存储单元2,将输入流3传送到存储单元8,将输入流传送到存储单元13。
在看过上述内容后,本领域技术人员应当很容易实现其他将数据项目从多个输入流传送到所分配的存储器位置的方法。例如,图3示出一个与缓冲器220的各存储单元相关联的N对1多路复用器310,用于从N个输入流中进行选择;在变形实施例中,可以使用与各输入流101相关联的1对P选择器,从而将各输入流传送到缓冲器220的所选择的存储单元。
前面仅仅示出了本发明的原理。虽然上面并未明确说明或示出不同方案,但本领域技术人员应当可以设计出多种符合本发明原理的方案,因此这些方案将落入权利要求的精神和范围内。