CN104821887A - 通过使用具有不同延迟的存储器来进行分组处理的设备和方法 - Google Patents
通过使用具有不同延迟的存储器来进行分组处理的设备和方法 Download PDFInfo
- Publication number
- CN104821887A CN104821887A CN201510047499.6A CN201510047499A CN104821887A CN 104821887 A CN104821887 A CN 104821887A CN 201510047499 A CN201510047499 A CN 201510047499A CN 104821887 A CN104821887 A CN 104821887A
- Authority
- CN
- China
- Prior art keywords
- memory
- queue
- data cell
- management device
- packet processing
- 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.)
- Granted
Links
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/9063—Intermediate storage in different physical parts of a node or terminal
-
- 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/521—Static queue service slot or fixed bandwidth allocation
-
- 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/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/40—Constructional details, e.g. power supply, mechanical construction or backplane
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的各个实施例涉及通过使用具有不同延迟的存储器来进行分组处理的设备和方法。提供了一种用于处理数据单元的方法和分组处理系统。分组处理系统包括处理器、具有第一延迟的第一存储器、以及具有高于第一延迟的第二延迟的第二存储器。用于将处理器利用的数据单元排队的队列的第一部分被布置在第一存储器中,并且该队列的第二部分被布置在第二存储器中。队列管理器被配置用于将新的数据单元推送至队列的第二部分,并且生成将新的数据单元链接至该队列中更早接收的数据单元的指示。该队列管理器被配置用于在从队列中弹出一个或多个排队的数据单元之前,将排队的数据单元从队列的第二部分转移到队列的第一部分,并且更新指示。
Description
相关申请的交叉引用
本申请要求2014年1月30日提交的、名称为“ManagingExtendable HW Queues”的美国临时专利申请No.61/933,709和2014年7月30日提交的、名称为“Managing Extendable HW Queues”的美国临时专利申请No.62/030,885的优先权,其整体内容通过引用并入于此。
技术领域
本文描述的技术总体上涉及数据通信,更具体地涉及用于管理分组处理系统的队列的系统和方法。
背景技术
在典型的分组处理系统中,经由一个或多个通信接口来接收源自各种来源位置的分组。每个分组包含路由信息,诸如目的地地址和其他信息。分组处理系统读取每个所接收分组的路由信息,并且将该分组转发至适当通信接口以进一步传输到其目的地。有时,例如由于分组数据流量模式和容量,分组处理系统可能需要将分组存储在存储器中直到分组可以被转发至其相应的输出(outgoing)通信接口。与分组处理系统的分组处理内核相对靠近设置的一些种类存储器空间,在大小方面受限、延迟相对更低、并且相对更贵。相反地,与分组处理内核相对远离设置的其他种类存储器空间,通常有可能比与分组处理系统靠近设置的存储器空间明显地更大。然而,虽然该其他种类存储器空间相对更便宜,但是表现出相对高的延迟。
上文所述被呈现为本领域相关技术的总览并且不应当解释为承认其包含的任何信息组成针对本专利申请的现有技术。
发明内容
本文提供了分组处理系统和用于处理数据单元的方法的示例。一个示例,分组处理系统包括处理器、具有第一延迟的第一存储器以及具有高于第一延迟的第二延迟的不同于第一存储器的第二存储器。用于将处理器利用的数据单元排队的队列的第一部分被布置在第一存储器中,并且该队列的第二部分被布置在第二存储器中。示例分组处理系统还包括队列管理器,被配置用于(i)向队列的第二部分选择性地推送新的数据单元,并且生成将新的数据单元链接至该队列中更早接收的数据单元的指示,以及(ii)在从队列中弹出一个或多个排队的数据单元之前,根据顺序将该排队的数据单元从布置在第二存储器中队列的第二部分转移到布置在第一存储器中队列的第一部分,并且更新指示。
作为另一示例,用于处理数据单元的方法包括,在具有第一延迟的第一存储器中限定用于将处理器利用的数据单元排队的队列的第一部分。该队列的第二部分在具有高于第一延迟的第二延迟的第二存储器中被限定。新的数据单元被选择性地推送到该队列的第二部分。生成在队列的数据单元之间的链接指示,其中链接指示中的一个或多个跨第一存储器和第二存储器。该方法还包括在从队列中一个或多个弹出排队的数据单元之前,根据顺序将该排队的数据单元从布置在第二存储器中队列的第二部分转移到布置在第一存储器中队列的第一部分。当数据单元从队列的第二部分被转移到队列的第一部分时,更新链接指示中的至少一个。
附图说明
图1是根据本公开的一个实施方式描绘分组处理系统的框图。
图2是根据本公开的一个实施方式描绘图1的分组处理系统的附加的元件的框图。
图3是根据本公开的一个实施方式图示了图1和图2中描绘的队列管理器的特征的简化框图。
图4是根据本公开的一个实施方式描绘图1至图3的分组处理系统的附加的组件的简化框图。
图5是根据本公开的一个实施方式描绘由队列管理器在生成为非排队(non-queued)数据单元分配存储空间的请求时采用的示例算法的步骤的流程图。
图6是描绘用于在图1至图4的分组处理系统中建立并管理队列的示例方法的步骤的流程图。
图7是根据本公开的一个实施方式描绘方法的各步骤的流程图。
具体实施方式
图1是根据本公开的一个实施方式描绘分组处理系统100的简化框图。在一个示例中,分组处理系统100包括用于在分组交换网络中将数据分组从来源转发到目的地的网络设备的至少一部分。分组处理系统100通常是连接两个或更多个计算机系统、网络分段、子网等的计算机组网设备。例如,在一个实施方式中,分组处理系统100是交换机。分组处理系统100并不限于特定协议层或特定组网技术(例如,因特网),并且分组处理系统100可以是桥、路由器或VPN集线器之类的其他设备。
分组处理系统100通常被配置用于,接收数据单元102诸如以太网分组,处理该数据单元102,继而将该数据单元102转发至最终目的地址或另一分组处理系统。在一个示例中,数据单元102是经由输入/输出(IO)接口在分组处理系统100处接收到的数据分组。分组处理系统100包括用于处理该数据分组102的一个或多个处理器。在图1的示例中,一个或多个处理器被实现为至少布置在第一芯片108上的一个或多个集成电路。注意,该一个或多个处理器不需要被布置在单个芯片上。在一些实施方式中,处理器的不同模块(例如,不同CPU、北桥部分、南桥部分、I/O、串行/解串器(SerDes)等)分布在若干不同芯片。因此,在一个示例中,分组处理系统100中的单个处理器(例如,单个分组处理器)被布置在多个不同芯片,其中所述芯片不限于处理器芯片和存储器芯片。针对包括中央处理单元(CPU)、北桥部分和南桥部分的处理器,在一个实施方式中,这些组件中的每个组件被布置在不同的相应芯片。
在图1的示例中,第一芯片108还包括允许一个或多个处理器在数据单元102和其他数据单元被处理时临时存储这些数据单元的第一存储器110。注意,第一存储器110不需要被布置在单个芯片上。在一些实施例中,第一存储器110被布置在多个芯片或裸片。在一个示例中,第一存储器110是具有相对低的延迟、高的带宽和相对小的存储容量的相对快速存储器。第一存储器110在一个实施方式中包括静态随机访问存储器(SRAM),或者包括其他适当的内部存储器配置。在一个示例中,第一存储器110是相对靠近分组处理系统100的一个或多个处理器的处理器部件的处理器组件。为了补偿第一存储器110的相对小的存储容量,分组处理系统100还包括第二存储器112。在一个示例中,第二存储器112是与第一存储器110相比具有相对慢的速度、更高的延迟和更低的带宽的相对便宜的存储器。第二存储器112在一个实施方式中包括动态随机访问存储器(DRAM),或者包括其他适当的外部存储器配置。第二存储器112的存储容量通常大于第一存储器110的存储容量。在一个示例中,与第一存储器110相比第二存储器112被布置在更远离分组处理系统100的一个或多个处理器的处理器部件。
在图1的示例中,第二存储器112被布置在与第一芯片108分离并且与第一芯片108耦合的第二集成电路上。在与图1所述相似的示例中(例如,其中第一存储器110被布置在至少第一芯片108上,而第二存储器112不被布置在第一芯片108上),第一存储器110被称为“片上存储器”或“内部存储器”,而第二存储器112被称为“片下存储器”或“外部存储器”。注意在一些实施方式中,第一存储器110和第二存储器112共同位于相同芯片、封装或设备。还应当注意在特定示例中,第二存储器112被布置在包括一个或多个处理器的处理器组件的一个或多个芯片上。在其他示例中,第二存储器112被布置在不包括一个或多个处理器的处理器组件的一个或多个芯片上。
在一些实例中,分组处理系统100无法将数据单元立即转发到相应的指定通信接口。在此类实例中,数据单元被存储在第一存储器110或第二存储器112中直到分组处理系统100能够执行转发。在一些实施方式中,当对表示分组的描述符执行处理时,该分组被缓冲。在一些实施方式中,在描述符被处理之后,描述符和/或分组被缓冲到输出队列中直到分组从分组处理系统100实际外出(egress)。注意,第一存储器110和第二存储器112被用于各种背景下,用于(i)在对数据单元的处理之前,(ii)在对数据单元的处理期间,和/或(iii)在对数据单元的处理之后,存储数据单元。
在一个示例中,第一存储器110和第二存储器112将数据单元存储在队列中。该队列用于对由一个或多个处理器利用的数据单元排队。新的数据单元被推送(即,附加)到队列的“尾部”,而数据单元从队列的“头部”弹出(即,移除)。在出口队列(egress queue)实施方式中,从队列的头部弹出的数据单元被转发至分组处理系统100的相应输出通信接口。在传输队列的一些备选示例中,其中分组在对描述符的处理期间被排队,从队列的头部弹出的经修改的数据单元与对应分组合并,或者来自数据单元的数据与缓冲的分组合并。
在图1的分组处理系统中,队列的第一部分被限定在第一存储器110中,而队列的第二部分被限定在第二存储器112中。单个队列因此跨第一存储器110和第二存储器112两者延伸。在一个实施方式中,低延迟第一存储器110和高延迟第二存储器112被布置在分离的物理设备上和/或使用不同微架构设计构建(例如,在一个实施方式中,低延迟第一存储器110包括SRAM而高延迟第二存储器112包括DRAM)。图1图示了队列跨第一存储器110和第二存储器112两者延伸,其示出了包括队列的存储数据单元Q1至Qm的第一部分的第一存储器110,以及队列的存储数据单元Qm+1至Qn的第二部分的第二存储器112。在一个实施方式中,在第一存储器110中限定的队列的第一部分包括队列的头部,而在第二存储器112中限定的队列的第二部分包括队列的尾部。如图1所示,其示出了在第一存储器110中的队列头部(即,数据单元Q1)以及在第二存储器112中的队列尾部(即,数据单元Qn)。在一个示例中,在第一存储器110中存储的队列的第一部分相对小(例如,在一个实施方式中具有用于存储1-4个存储单元的存储空间)。如上文所指出的,在一个实施方式中,数据单元从在第一存储器110中限定的队列头部弹出,并且保持队列的存储在第一存储器110中的部分相对小有助于防止队列中的各种服务质量问题(例如,行头部锁定)。在一个示例中,队列的存储在第二存储器112中的第二部分相对大并且为队列的许多数据单元提供存储空间。
分组处理系统100包括队列管理器106,该队列管理器106被配置用于管理分别限定在第一存储器110和第二存储器112中队列的第一部分和第二部分。在一个示例中,队列管理器106被配置为保持队列的状态。在一个示例中,保持队列的状态包括,保持追踪存储器110和112中队列的头部和尾部两者的位置、保持追踪在队列中存储的数据单元的总数的计数、以及保持追踪第一存储器110和第二存储器112中各自存储的数据单元的数目的计数、以及其他信息。当在分组处理系统100处接收到新的数据单元102时,队列管理器106被配置用于将新的数据单元102选择性地推送到在第二存储器112中限定的队列的第二部分。将新的数据单元推送到队列的第二部分被称为“入队”,并且包括将数据单元附加到队列的尾部。
在一些实施方式中,队列管理器106被描述为将新的数据单元102“选择性地”推送到第二存储器112,是因为如下文详细所述,队列随时间改变并且将完全限定在第一存储器110中。在这种实例中,其中队列的尾部被限定在第一存储器110中,新的数据单元102被推送到第一存储器110而不是第二存储器112。然而,通常如果队列的尾部被限定在第二存储器112中(如图1所示),则队列管理器106将新的数据单元102推送到在第二存储器112中限定的队列的第二部分。
队列管理器106还被配置用于,在从队列弹出一个或多个经排队的数据单元之前,根据顺序将该经排队的数据单元从第二存储器112转移到第一存储器110。因此,如上文所述,数据单元在被从队列弹出之前,最初被附加到第二存储器112中限定的队列的尾部,并且最终从第二存储器112并入到第一存储器110。经排队的数据单元的弹出(也被称为“解队列”)由队列管理器106实现。在其中队列是出口队列的实施方式中,响应于分组调度器(packet scheduler)的请求,由队列管理器106实现经排队的数据单元的弹出。在其他示例中,响应于并非源自分组调度器的其他请求或顺序,由队列管理器106实现经排队的数据单元的弹出。在一个示例中,数据单元从第二存储器112并入到第一存储器110,使得队列完全被限定在第一存储器110中。在一个示例中,虽然队列在某一时刻包括在第一存储器110和第二存储器112两者中限定的部分(如图1所示),但是当经排队的数据单元从第一存储器110中限定的队列的一部分弹出时,第二存储器112中存储的队列的数据单元被并入到第一存储器110。在一个实施方式中,这些数据单元的并入最终使得队列完全被限定在第一存储器110中。当附加的非排队的数据单元被添加至队列时,队列再次跨第一存储器110和第二存储器112两者延伸。
例如在高流量活动期间等,使用跨第一存储器110和第二存储器112两者延伸的队列是有用的。分组数据流量经常在高活动爆发之后暂息。因此,分组处理系统100的特征在于具有持续的数据率和爆发的数据率。队列从第一存储器110到第二存储器112延伸,有助于防止较小的第一存储器110过载,在一个示例中,这会在高活动爆发出现时发生。在一个示例中,在高活动爆发期间,如果第一存储器110变得过载,则数据单元被分组处理系统100丢失
(drop)。通过允许数据单元被布置在队列的限定在第二存储器112中的一部分上,分组处理系统100减少丢失的数据单元的数目并且能够应对更长时间的高流量。
使用跨第一存储器110和第二存储器112两者延伸的队列还允许,例如在便于大的队列的同时,使第一存储器110的存储容量保持相对小的大小。在一个示例中,在不包括形成在第一存储器和第二存储器中均具有部分的队列的能力的传统分组处理系统中,有必要在持续数据率下和爆发数据率下均增加第一存储器的大小用于缓冲数据。这是不期望的,因为第一存储器110是相对昂贵的存储器,以及其他原因(例如,更高容量的第一存储器110在第一芯片108上消耗更多功率,并且具有更大裸片面积)。在一些示例中,使队列从第一存储器110到第二存储器112扩展,避免了增加第一存储器110的存储容量的需要。因此,本文描述的二分叉的(bifurcated)队列架构还可能通过针对长队列而允许扩展地使用相对便宜的第二存储器112(例如,在一个实施方式中包括DRAM)而减少成本,而不负面地影响由第一存储器110(例如,在一个实施方式中包括SRAM)提供的性能。附加地,保持第一存储器110的存储容量相对小的大小,有助于保持第一芯片108中的低功耗并且保持第一芯片108上第一存储器110的裸片大小较低。
虽然图1的框图图示的队列管理器106被包括在至少第一芯片108上,但是在其他示例中,队列管理器106不被布置在第一芯片108上。此外,虽然图1的示例描绘的第一存储器110包括队列管理器106的一部分,但是在其他示例中,第一存储器110位于第一芯片108上但不是队列管理器106的一部分。在一个实施方式中,队列管理器106完全以硬件元件实现而不利用软件的介入。在其他示例中,队列管理器106经由硬件和软件的组合实现,或者完全以软件实现。
图2是根据本公开的一个实施方式描绘图1的分组处理系统100的附加元件的简化框图。如图2所示,分组处理系统100包括耦合至第一芯片108的多个网络端口222,并且每个网络端口222经由相应通信链路,耦合至通信网络和/或耦合至通信网络内的另一适当网络设备。数据单元202经由网络端口222由分组处理系统100接收。对由分组处理系统100接收的数据单元202的处理,由布置在第一芯片108上的一个或多个处理器(例如,一个或多个分组处理器、一个或多个分组处理元件(PPE)等)执行。该一个或多个处理器可以使用任意适当的架构实现,诸如专用集成电路(ASIC)流水线处理引擎架构、流水线式的可编程处理引擎的架构、多重运行到完成处理器(run-to-completion processor)的架构等。在一个示例中,分组处理系统100经由端口222的入口端口接收在网络中传输的数据单元202,并且该一个或多个处理器中的处理器对数据单元202进行处理。处理数据单元202的处理器确定例如端口222的出口端口,数据单元202将经由该出口端口被传输。
在操作中,分组处理系统100处理穿过分组处理系统100的一个或多个数据流(例如,一个或多个分组流)。在一个实施方式中,数据流对应于经由特定来源设备或网络由分组处理系统100接收的数据单元的序列。在图2中,这种来源设备或网络被描述为客户端0-N 204。客户端0-N 204是利用队列管理器106的队列服务的数据流的来源,并且可以包括例如以太网MAC、分组处理器、安全加速器、主机CPU、入口队列、和出口队列等网络、设备和组件。在一些实施方式中,数据流与一个或多个参数相关联,诸如相对于其他数据流的优先级水平(level)。在一个实施方式中,数据流的优先级水平基于对数据流的延迟、或数据流的带宽等因素的敏感度。通常,数据流中的数据单元的顺序由分组处理系统100维持,从而使得数据单元从分组处理系统100传输的顺序与数据单元被分组处理系统100接收的顺序相同,从而实现先进先出(FIFO)系统。
在一个实施方式中,为了维持相应数据流中的数据单元的顺序,分组处理系统100利用多个队列。在一个示例中,该多个队列中的每个队列与属于相同数据流的数据单元组相关联。因此,在一个示例中,该多个队列中的每个队列与客户端0-N 204中的该数据流源自的特定客户端相关联。在一个实施方式中,队列管理器106在对应于与数据单元202相关联的相应数据流的队列中,根据分组处理系统100接收数据单元202的顺序,将数据单元202排队。在一个实施方式中,该多个队列通过使用相应的链接的列表的实现。在此实施方式中,每个队列经由条目(entry)的序列来链接数据单元的组,其中每个条目包含,对队列中下一条目的,指针或其他适当的参考。在一个示例中,在数据单元的链接列表中,每个数据单元至少标识了,链接列表中的后续数据单元、以及该后续数据单元在第一存储器110或第二存储器112中的一个中的地址。在其他实施方式中,队列以不利用链接列表的其他适当方式实现。
虽然图2的示例描述了两个队列,但是注意分组处理系统100在其他示例中利用更小或更大数目的队列。如图2所示,每个队列的第一部分被限定在第一存储器110中,并且每个队列的第二部分被限定在第二存储器112中。第一存储器110中限定的队列的第一部分包括队列的相应头部,并且第二存储器112中限定的队列的第二部分包括队列的相应尾部。当在分组处理设备100处接收到新的数据单元202时,队列管理器106被配置为将该新的数据单元202选择性地推送到在第二存储器112中限定的相应队列的第二部分。
队列管理器106还被配置用于在从相应队列弹出一个或多个经排队的数据单元之前,根据顺序将该经排队的数据单元从第二存储器112转移到第一存储器110。在一个示例中,将一个或多个经排队的数据单元转移包括(i)将第二存储器112中存储的数据在物理上并入第一存储器110,以及(ii)更新指向并入的数据单元的一个或多个指针。例如,如上文所述,在一个示例中队列使用链接的列表来实现,其中队列中的每个条目包含对队列中下一条目的指针或其他适当参考。在队列使用链接的列表来实现的此类实例中,将经排队的数据单元从第二存储器112转移到第一存储器110包括更新指向并入数据单元的指针。
在一个示例中,针对每个队列,队列管理器106监视第一存储器110中存储的队列的数据单元的数目。基于确定数据单元的数目为小于阈值,队列管理器106将队列的一个或多个数据单元从第二存储器112转移到第一存储器110。因此,当第二存储器112中存储的经排队的数据单元传播通过队列并且接近队列的头部时,经排队的数据单元被并入到第一存储器110中限定的队列部分。在一个示例中,当第一存储器110中存储的队列的数据单元的数目等于阈值时,终止数据单元从第二存储器112到第一存储器110的转移。在一个示例中,数据单元从第二存储器112读取并且使用直接存储器访问(DMA)技术(例如,使用第一存储器110的DMA控制器)写入第一存储器110。
图3是根据本公开的一个实施方式图示了图1和图2中描绘的队列管理器106的特征的简化框图。在图3的示例中,队列管理器106被配置用于管理分组处理系统100的多个队列312、314、316、318和320。队列312、314、316、318和320中的每个队列包括一个或多个数据单元,其中被示为位置更靠近调度器308的数据单元更靠近相应队列的头部,并且其中被示为更远离调度器308的数据单元更靠近相应队列的尾部。
在图3中,标记为“1”的数据单元被存储在分组处理系统100的第一存储器110中,并且标记为“0”的数据单元被存储在分组处理系统100的第二存储器112中。如图所示,队列312、314、316、318和320可以被限定为(i)完全在第一存储器110内(即,如队列312、320中所示),(ii)完全在第二存储器112中(即,如队列314、318中所示),或者(iii)在第一存储器110和第二存储器112两者中(即,如队列316中所示)。虽然图3中没有描绘第一存储器110和第二存储器112,但是此附图图示了存储在第一存储器110和第二存储器112中的队列312、314、316、318和320的数据单元(即,标记“1”的数据单元被存储在第一存储器110中,而标记“0”的数据单元被存储在第二存储器112,如上文所述)。在一个示例中,队列312、314、316、318和320中的每个队列与源自客户端0-N 204中的特定客户端的数据流相关联。
下文论述了在管理队列312中由队列管理器106采用的不同方法。具体地,以下论述描述了在非排队数据单元202被添加到队列312、314、316、318和320之一时由队列管理器106使用的算法。注意,在下文所述的任何算法中,由由队列管理器106以执行的第一步骤都是,针对非排队的数据单元202被添加到的队列,确定队列的尾部被限定在第一存储器110还是第二存储器112中。如果队列的尾部被限定在第二存储器112中,则非排队的数据单元202自动附加到第二存储器112中的队列尾部。相反地,如果队列的尾部被限定在第一存储器110中,则队列管理器106采用下文所述算法,以确定将非排队的数据单元202添加到第一存储器110还是第二存储器112中的队列。因此,下文描述的算法与如下情况下有关:将非排队的数据单元202添加到具有限定在第一存储器110中的尾部的队列的何处。
在一个实施方式中,队列312、314、316、318和320中的一个或多个队列由队列管理器106基于队列大小阈值来进行管理。在一个示例中,队列大小阈值限定了针对相应队列的允许被存储在分组处理系统100的第一存储器110上的数据单元的最大数目。当非排队的数据单元202被添加到特定队列时,队列管理器106确定当前存储在第一存储器110中的特定队列的数据单元的数目。如果数据单元的数目大于或等于队列大小阈值(例如,在一个实施方式中,针对特定队列的允许存储在第一存储器110上的数据单元的最大数目),则队列管理器106将非排队的数据单元202添加到第二存储器112中的特定队列。如果数据单元的数目小于队列大小阈值,则队列管理器106将非排队的数据单元202添加到第一存储器110中的特定队列。
图3的队列312和316由队列管理器106基于队列大小阈值管理。在图3的示例中,队列大小阈值等于五个数据单元。因此,针对每个队列312、316,队列管理器106已经存储了五个数据单元在第一存储器110中,并且队列312、316的附加数据单元被存储在第二存储器112中。虽然图3的示例利用了与队列312、316相同的队列大小阈值,但是注意在其他示例中,每个队列与它自己的队列大小阈值相关联,并且队列大小阈值在不同队列之间变化。
在一个示例中,当第一存储器110中存储的队列的数据单元的数目小于队列大小阈值时,队列管理器106将经排队的数据单元从第二存储器112转移到第一存储器110,其中队列大小阈值限定针对相应队列允许在第一存储器110上存储的数据单元的最大数目。因此,例如,针对每个队列312、316,队列管理器106监视第一存储器110中存储的队列的数据单元的数目。基于对数据单元的数目小于队列大小阈值(例如,在上文示例中的五个数据单元)的确定,队列管理器106将队列的一个或多个数据单元从第二存储器112转移到第一存储器110。在一个实施方式中,当第一存储器110中存储的队列中的数据单元的数目等于队列大小阈值时,终止数据单元从第二存储器112到第一存储器110的转移。
在一个实施方式中,基于队列大小阈值被满足或超过来将队列从第一存储器110延伸到第二存储器112,有助于避免分组处理系统100中数据单元的丢失。例如,在不包括形成在第一存储器和第二存储器中均具有部分的队列的能力的传统分组处理系统中,如果特定队列具有满足或超过特定阈值的、在第一存储器中存储的数据单元的数目,则丢失针对该特定队列的数据单元。在此情况下,数据单元由于第一存储器中没有其空间而被丢失。相反,在这里描述的分组处理系统100中,队列可以选择延伸到第二存储器112,从而支持队列大小的几乎无限扩展。如上文所述,第二存储器112通常是具有大存储容量的相对便宜的存储器,并且在一个实施方式中利用第二存储器112的这些属性,以将队列延伸到几乎无限大小。
在一个实施方式中,尽管事实上超出了队列的队列大小阈值,但是非排队的数据单元202还是被添加到第一存储器110的队列中。在此实施方式中,非排队的数据单元202的空间基于可用性而被布置在第一存储器110中,同时考虑了第一存储器110的整体存储容量。
在一个示例中,针对特定队列的队列大小阈值基于该特定队列的优先级。在一个实施方式中,队列312、314、316、318和320中的每个队列与源自客户端0-N 204中的特定客户端的特定数据流相关联,并且该特定数据流与一个或多个参数相关联,诸如与其他数据流相关的优先级水平。在一个示例中,特定数据流的优先级水平基于对数据流的延迟和/或数据流的带宽等因素的敏感度。因此,在一个示例中,“高”优先级数据流具有对延迟的高敏感度和/或高带宽,而“低”优先级数据流具有对延迟的低敏感度和/或低带宽。在一个示例中,队列的优先级基于该队列与之相关联的特定数据流的优先级水平。在一个示例中,高优先级队列具有相对高的队列大小阈值,从而允许队列的更多数目的数据单元存储在第一存储器110中。相反,在一个示例中,低优先级队列具有相对低的队列大小阈值,从而允许队列的更少数目的数据单元存储在第一存储器110中。在其他示例中,在设置队列312、314、316、318和320的队列大小阈值时不考虑队列312、314、316、318和320的属性。
在另一示例中,队列312、314、316、318和320中的一个或多个队列由队列管理器106基于相应队列的属性进行管理。如上文所述,在一个实施方式中,队列的优先级基于与该队列相关联的特定数据流的优先级水平,其中特定数据流的优先级水平基于一个或多个因素(例如,对数据流的延迟和/或数据流的带宽的敏感度)。当非排队的数据单元202被添加到队列312、314、316、318和320中的一个队列时,队列管理器106确定该特定队列的优先级。如果该特定队列被确定具有低优先级,则队列管理器106将非排队的数据单元202添加到第二存储器112中的特定队列。在此实施方式中,非排队的数据单元202被添加到第二存储器112而不考虑队列大小阈值。
如果替代地特定队列被确定具有高优先级,则队列管理器106将非排队的数据单元202添加到第一存储器110中的特定队列。在此实施方式中,非排队的数据单元202被添加到第一存储器110而不考虑队列大小阈值。在一个示例中,被确定为具有低优先级的队列被完全限定在第二存储器112中,并且被确定为具有高优先级的队列被完全限定在第一存储器110中。附加地,在一个实施方式中,如果特定队列被确定为既不具有低优先级也不具有高优先级,则队列被确定为具有“正常”优先级,并且因此由队列管理器106基于队列大小阈值(如上文所述)或基于另一度量或算法进行管理。
队列314、318、320由队列管理器106基于队列的优先权管理。队列320由队列管理器106确定为高优先级队列,并且因此队列管理器106将队列320的所有数据单元放置在第一存储器110中。相反,队列314和318由队列管理器106确定为低优先级队列,并且因此队列管理器106将队列314和318的所有数据单元放置在第二存储器112中。为了从队列314和318弹出数据单元,属于这些队列314和318的数据单元从第二存储器112并入到第一存储器110。队列管理器106响应于分组调度器308的请求,实现经排队的数据单元从第一存储器110的弹出,并且经排队的数据单元不从第二存储器112弹出。因此,为了适合分组调度器308调度,队列314和318的数据单元必须从第二存储器112转移到第一存储器110。从队列312、314、316、318和320弹出的数据单元被转发到网络端口222的出口端口。
图4是根据本公开的一个实施方式描绘图1至图3的分组处理系统100的附加组件的简化框图。在图4中,分组处理系统100被图示为包括队列管理器106、第一存储器110和第二存储器112,上文参考图1至图3对其进行了描述。分组处理系统100还包括总线602、缓冲器管理器604和片上系统(SOC)互连612。当在分组处理系统100处接收到非排队的数据单元时,队列管理器106生成在第一存储器110或第二存储器112之一中为该非排队的数据单元分配存储空间的请求。
缓冲器管理器604被配置用于(i)从队列管理器106接收请求,并且(ii)基于该请求在第一存储器110或第二存储器112中分配所请求的存储空间。缓冲器管理器604中的缓冲器元件606是指向第一存储器110或第二存储器112中所分配存储空间的指针。队列管理器106将非排队的数据单元写入到缓冲器元件606指定的在第一存储器110或第二存储器112中的地址。在将非排队的数据单元写到第二存储器112时,队列管理器106利用分组处理系统100的总线602。具体地,队列管理器106经由总线602将非排队的数据单元传送到SOC互连612,并且SOC互连612将该非排队的数据单元传送到第二存储器112。在一个示例中,将数据单元从队列管理器106写入到第二存储器112,利用了DMA技术(例如,使用队列管理器106的DMA控制器)。队列管理器106稍后,在从队列弹出数据单元之前,从第一存储器110或第二存储器112提取数据单元。响应于在一个实施方式中由分组调度器308发起的调度操作来执行将数据单元从队列弹出,使用了数据单元中存储的信息,诸如分组长度和净荷指针。从第一存储器110或第二存储器112提取数据单元到队列管理器106使得能够在弹出过程中使用该信息。
队列管理器106基于一个或多个因素生成请求。这些因素包括例如第一存储器110中未使用的存储空间的量、第一存储器110中存储的用于非排队数据单元将被添加到的队列的数据单元的数目、和/或非排队数据单元将被添加到的队列的优先级。图5图示了在生成为非排队数据单元分配存储空间的请求时,队列管理器106采用的示例算法。此图是根据本公开的实施方式描绘了队列管理器106采用的示例算法的步骤的流程图500。在501,队列管理器106确定非排队数据单元将被附加到的队列的尾部的位置。在502,队列管理器106确定该尾部是否位于第二存储器112中。如果队列管理器106确定该尾部位于第二存储器112中,则在504,队列管理器106生成请求在第二存储器112中为非排队数据单元分配空间的请求。
如果队列管理器106确定该尾部不位于第二存储器112,则在506,队列管理器106确定该非排队数据单元待添加到的队列的优先级。如果队列的优先级在508被确定为高,则在510,队列管理器106生成请求在第一存储器110中为非排队数据单元分配空间的请求。如果队列的优先级在508被确定不为高,则在512确定队列的优先级是否为低。如果队列的优先级被确定为低,则在514,队列管理器106生成请求在第二存储器112中为非排队数据单元分配空间的请求。如果队列的优先级没有被确定为低,则在516,队列管理器106确定第一存储器110中存储的队列的数据单元的数目。
在518,队列管理器106确定第一存储器110中存储的数据单元的数目是否为大于或等于队列大小阈值。如上文参考图3所述,队列大小阈值是具体到每个队的参数,或者是应用至分组处理系统100的所有队列的参数。此外,在一些实施方式中,队列的队列大小阈值基于队列的优先级或一个或多个其他因素。如果数据单元的数目在518被确定不为大于或等于队列大小阈值,则在520,队列管理器106生成请求在第一存储器110中为非排队数据单元分配空间的请求。如果数据单元的数目在518被确定为大于或等于队列大小阈值,则在522,队列管理器106确定第一存储器110中未使用的存储空间的量。
在524,队列管理器106确定第一存储器110中未使用的存储空间的量是否为大于或等于阈值水平。在一个实施方式中,阈值水平等于存储非排队数据单元所需的存储空间的量。如果未使用的存储空间的量被确定为大于或等于阈值水平,则在526,队列管理器106生成请求在第一存储器110中为非排队数据单元分配空间的请求。如果未使用的存储空间的量被确定不为大于或等于阈值水平,则在528,队列管理器106生成请求在第二存储器112中为非排队数据单元分配空间的请求。
图5的算法在各实施方式中被修改。例如,虽然图5的算法在生成请求中考虑了多个因素(例如,队列的优先级、第一存储器110中存储的数据单元的数目、第一存储器110中未使用存储空间的量等),但在其他示例中,请求基于较少因素生成。因此,在一个示例中,请求基于非排队数据单元待添加到的队列的优先级生成,并且不考虑相对于队列大小阈值的第一存储器110中存储的数据单元的数目、以及第一存储器110中未使用存储空间的量。类似地,在另一示例中,请求基于相对于队列大小阈值的第一存储器110中存储的数据单元的数目而生成,并且不考虑队列的优先级以及第一存储器110中未使用存储空间的量。在另一示例中,请求基于第一存储器110中未使用存储空间的量生成,并且不考虑队列的优先级以及相对于队列大小阈值的第一存储器110中存储的数据单元的数目。在其他示例中,队列管理器106基于图5所示因素的一些组合生成请求。
图6是描绘用于在图1至图4的分组处理系统100中建立并管理队列的示例方法的步骤的流程图600。如下文详细所述,在一个实施方式中,当队列被最初建立时,用于队列的N个数据单元的空间被分配在第一存储器110中,该第一存储器110包括布置为相对靠近处理单元的低延迟存储器(例如,SRAM)。当队列需要附加空间时,附加空间被分配在第二存储器112中或者基于可用性被分配在第一存储器110中。在一个实施方式中,第二存储器112包括布置为相对远离处理单元的高延迟存储器(例如,DRAM)。
参考图6,当队列被最初建立时,在602,用于队列的N个数据单元的存储空间被分配在第一存储器110中。在一个示例中,响应于从队列管理器106接收到的请求,对N个数据单元的存储空间的分配由缓冲器管理器604执行。在一个示例中,数目“N”等于这里描述的队列大小阈值,通常限定相应队列的允许被存储在第一存储器110上的数据单元的最大数目。
在606,分组处理系统100接收到待添加到队列的非排队数据单元。在608,队列管理器106确定第一存储器110中N个数据单元的存储空间是否已经被消费(consume)。如果N个数据单元的存储空间还没有被消费,则在610,非排队数据单元被添加到第一存储器110中的队列。在一个实施方式中,将非排队数据单元添加到第一存储器110中队列由队列管理器106执行,该队列管理器106将非排队数据单元写入到存储空间的为N个数据单元分配的部分。
如果N个数据单元的存储空间已经被消费,则在616,队列管理器106确定第一存储器110中未使用存储空间的量。在618,队列管理器106确定未使用存储空间的量是否为大于或等于阈值。在一个实施方式中,该阈值等于存储非排队数据单元所需的存储空间的量。如果未使用存储空间的量在618确定不为大于或等于阈值,则在620用于非排队数据单元的存储空间被分配在第二存储器112中。响应于队列管理器106的请求,存储空间在第二存储器112中的分配由缓冲器管理器604执行。在622,队列管理器106通过将非排队数据单元写入到在第二存储器112中分配的存储空间,来向队列添加非排队数据单元。
如果未使用存储空间的量在618被确定为大于或等于阈值,则在628,用于非排队数据单元的存储空间被分配在第一存储器110中。响应于队列管理器106的请求,存储空间在第一存储器110中的分配由缓冲器管理器604执行。在630,队列管理器106通过将非排队数据单元写入到在第一存储器110中分配的存储空间,来向队列添加非排队数据单元。
图7是用于处理数据单元的方法的各步骤的流程图700。在702,用于将处理器利用的数据单元排队的队列的第一部分被限定在具有第一延迟的第一存储器中。在704,该队列的第二部分被限定在不同于第一存储器并且具有高于第一延迟的第二延迟的第二存储器中。在706,新的数据单元被选择性地推送到队列的第二部分。在708,在队列的各数据单元之间生成链接指示,其中链接指示中的一个或多个跨第一存储器和第二存储器。在710,在从队列弹出一个或多个排队的数据单元之前,该排队的数据单元根据顺序从队列的布置在第二存储器中的第二部分转移到队列的布置在第一存储器中第一部分。在712,当数据单元从队列的第二部分转移到队列的第一部分时,链接指示中的至少一个被更新。
本申请使用示例来说明本发明。本发明的可授权范围可以包括其他示例。
Claims (20)
1.一种分组处理系统,包括:
处理器;
第一存储器,具有第一延迟;
第二存储器,不同于所述第一存储器,具有高于所述第一延迟的第二延迟,其中用于将所述处理器利用的数据单元排队的队列的第一部分被布置在所述第一存储器中,并且所述队列的第二部分被布置在所述第二存储器中;以及
队列管理器,被配置用于(i)将新的数据单元选择性地推送到所述队列的所述第二部分,并且生成将新的数据单元链接到所述队列中的更早接收的数据单元的链接指示,以及(ii)在从所述队列弹出一个或多个排队的数据单元之前,根据顺序将所述排队的数据单元从所述队列的布置在所述第二存储器中的所述第二部分转移到所述队列的布置在所述第一存储器中的所述第一部分,并且更新所述链接指示。
2.根据权利要求1所述的分组处理系统,其中所述队列管理器被配置用于(i)生成所述队列的数据单元之间的链接指示,每个所述链接指示至少指示了所述队列中下一数据单元的地址,其中所述链接指示中的一个或多个跨所述第一存储器和所述第二存储器,以及(ii)当将数据单元从所述队列的布置在所述第二存储器中的所述第二部分转移到所述队列的布置在所述第一存储器中的所述第一部分时,更新所述链接指示中的至少一个,所述更新指示了在所述数据单元被转移之后所述数据单元的新地址。
3.根据权利要求1所述的分组处理系统,
其中所述第一存储器被布置为,与所述处理器的访问所述队列的一个或多个处理器组件相对靠近,以及
其中所述第二存储器被布置为远离所述一个或多个处理器组件。
4.根据权利要求1所述的分组处理系统,
其中所述第一存储器包括静态随机访问存储器(SRAM),以及
其中所述第二存储器包括动态随机访问存储器(DRAM)。
5.根据权利要求1所述的分组处理系统,
其中所述处理器被实现为布置在至少第一芯片上的集成电路;
其中所述第一存储器被布置在至少所述第一芯片上;以及
其中所述第二存储器被布置在与所述至少第一芯片分离并且耦合至所述至少第一芯片的第二集成电路上。
6.根据权利要求1所述的分组处理系统,其中所述队列的所述第一部分包括所述队列的头部,所述队列的所述第二部分包括所述队列的尾部,并且其中所述新的数据单元被推送到所述队列的所述尾部。
7.根据权利要求1所述的分组处理系统,包括:
缓冲器管理器,被配置用于(i)从所述队列管理器接收请求,所述请求用于在所述第一存储器或所述第二存储器之一中为非排队的数据单元分配存储空间,以及(ii)基于所述请求分配所述存储空间,其中所述队列管理器被配置用于确定所述第一存储器中未使用的存储空间的量,并且基于所述量生成所述请求。
8.根据权利要求7所述的分组处理系统,其中所述队列管理器被配置用于确定未使用的存储空间的所述量是否为大于或等于阈值水平,并且基于所述确定生成所述请求,所述请求基于所述量为大于或等于所述阈值水平而请求将所述存储空间分配在所述第一存储器中,并且所述请求基于所述量为小于所述阈值水平而请求将所述存储空间分配在所述第二存储器中,其中所述队列管理器进一步被配置用于将所述非排队的数据单元添加到在所述分配的存储空间中的所述队列。
9.根据权利要求8所述的分组处理系统,其中所述阈值水平等于存储所述非排队的数据单元所需的存储空间的量。
10.根据权利要求1所述的分组处理系统,包括:
缓冲器管理器,被配置用于(i)从所述队列管理器接收请求,所述请求用于在所述第一存储器或所述第二存储器之一中为非排队的数据单元分配存储空间,以及(ii)基于所述请求分配所述存储空间,其中所述队列管理器被配置用于确定所述队列的在所述第一存储器中存储的数据单元的数目,并且基于所述数目生成所述请求。
11.根据权利要求10所述的分组处理系统,其中所述队列管理器被配置用于确定所述数目是否为大于或等于队列大小阈值,并且基于所述确定生成所述请求,所述请求基于所述数目为大于或等于所述队列大小阈值而请求将所述存储空间分配在所述第二存储器中,并且所述请求基于所述数目为小于所述队列大小阈值而请求将所述存储空间分配在所述第一存储器中,并且其中所述队列管理器进一步被配置用于将所述非排队的数据单元添加至在所述分配的存储空间中的所述队列。
12.根据权利要求11所述的分组处理系统,其中所述队列大小阈值基于与所述队列相关联的数据流的优先级,所述数据流包括源自特定网络或设备的存储在所述队列中的多个数据单元,其中所述数据流的所述优先级基于对所述数据流的延迟或所述数据流的带宽的敏感度。
13.根据权利要求1所述的分组处理系统,包括:
缓冲器管理器,被配置用于(i)从所述队列管理器接收请求,所述请求用于在所述第一存储器或所述第二存储器之一中为非排队的数据单元分配存储空间,以及(ii)基于所述请求分配所述存储空间,其中所述队列管理器被配置用于确定所述队列的优先级并且基于所述优先级生成所述请求,其中所述请求基于所述优先级为高而请求将所述存储空间分配在所述第一存储器中,其中所述请求基于所述优先级为低而请求将所述存储空间分配在所述第二存储器中,并且其中所述队列管理器进一步被配置用于将所述非排队的数据单元添加到在所述分配的存储空间中的所述队列。
14.根据权利要求1所述的分组处理系统,其中所述队列管理器被配置用于确定所述队列的在所述第一存储器中存储的数据单元的数目,以及其中将所述一个或多个排队的数据单元从所述第二存储器转移到所述第一存储器基于确定所述数据单元的数目小于阈值而执行。
15.根据权利要求1所述的分组处理系统,包括:
分组调度器,被配置用于向所述队列管理器传输请求,其中所述队列管理器响应于所述请求而实现从所述队列弹出所述排队的数据单元,所述队列管理器在接收到所述请求之前,将所述排队的数据单元从所述第二存储器转移到所述第一存储器。
16.一种用于处理数据单元的方法,所述方法包括:
在具有第一延迟的第一存储器中,限定用于将处理器利用的数据单元排队的队列的第一部分;
在不同于所述第一存储器的第二存储器中,限定所述队列的第二部分,所述第二存储器具有高于所述第一延迟的第二延迟;
将新的数据单元选择性地推送至所述队列的所述第二部分;
生成所述队列的数据单元之间的链接指示,所述链接指示中的一个或多个跨所述第一存储器和所述第二存储器;
在从所述队列弹出一个或多个排队的数据单元之前,根据顺序将所述排队的数据单元从所述队列的布置在所述第二存储器中的所述第二部分转移到所述队列的布置在所述第一存储器中的所述第一部分;以及
当数据单元从所述队列的所述第二部分转移到所述队列的所述第一部分时,更新所述链接指示中的至少一个。
17.根据权利要求16所述的方法,其中每个所述链接指示至少指示了所述队列中的后续数据单元、以及所述后续数据单元在所述第一存储器或所述第二存储器之一中的地址,更新所述链接指示中的至少一个包括:
指示在所述数据单元从所述队列的布置在所述第二存储器中的所述第二部分转移到所述队列的布置在所述第一存储器中的所述第一部分之后所述数据单元的新地址。
18.根据权利要求16所述的方法,其中将所述新的数据单元选择性地推送至所述队列的所述第二部分包括:
确定所述第一存储器中未使用的存储空间的量;
基于确定所述未使用的存储空间的量为大于或等于阈值,而将新的数据单元推送至所述队列的布置在所述第一存储器中的所述第一部分;以及
基于确定所述未使用的存储空间的量为小于阈值,而将所述新的数据单元推送至所述队列的布置在所述第二存储器中的所述第二部分。
19.根据权利要求16所述的方法,其中将所述新的数据单元选择性地推送至所述队列的所述第二部分包括:
确定所述队列的在所述第一存储器中存储的数据单元的数目;
基于确定所述数据单元的数目为大于或等于队列大小阈值,而将新的数据单元推送至所述队列的布置在所述第二存储器中的所述第二部分;以及
基于确定所述数据单元的数目为小于队列大小阈值,而将所述新的数据单元推送至所述队列的布置在所述第一存储器中的所述第一部分。
20.根据权利要求16所述的方法,包括:
确定所述队列的在所述第一存储器中存储的数据单元的数目,其中将所述一个或多个排队的数据单元转移基于确定所述数据单元的所述数目为小于阈值而执行。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461933709P | 2014-01-30 | 2014-01-30 | |
US61/933,709 | 2014-01-30 | ||
US201462030885P | 2014-07-30 | 2014-07-30 | |
US62/030,885 | 2014-07-30 | ||
US14/603,565 US10193831B2 (en) | 2014-01-30 | 2015-01-23 | Device and method for packet processing with memories having different latencies |
US14/603,565 | 2015-01-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104821887A true CN104821887A (zh) | 2015-08-05 |
CN104821887B CN104821887B (zh) | 2019-08-09 |
Family
ID=53680174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510047499.6A Active CN104821887B (zh) | 2014-01-30 | 2015-01-29 | 通过具有不同延迟的存储器进行分组处理的设备和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10193831B2 (zh) |
CN (1) | CN104821887B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108363669A (zh) * | 2017-01-26 | 2018-08-03 | 佳能株式会社 | 存储器访问系统、其控制方法、存储介质及图像形成装置 |
CN109565455A (zh) * | 2016-06-02 | 2019-04-02 | 马维尔以色列(M.I.S.L.)有限公司 | 具有高速缓存的分组存储器中的分组描述符存储 |
CN110088724A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法 |
CN110650099A (zh) * | 2018-06-27 | 2020-01-03 | 丛林网络公司 | 预测计算设备中的包寿命的排队系统 |
WO2022001917A1 (zh) * | 2020-07-01 | 2022-01-06 | 阿里巴巴集团控股有限公司 | 一种数据流统计方法、设备及存储介质 |
US11635898B2 (en) | 2017-03-24 | 2023-04-25 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606928B2 (en) * | 2014-08-26 | 2017-03-28 | Kabushiki Kaisha Toshiba | Memory system |
US10419370B2 (en) * | 2015-07-04 | 2019-09-17 | Avago Technologies International Sales Pte. Limited | Hierarchical packet buffer system |
US11086801B1 (en) * | 2016-04-14 | 2021-08-10 | Amazon Technologies, Inc. | Dynamic resource management of network device |
CN107783721B (zh) * | 2016-08-25 | 2020-09-08 | 华为技术有限公司 | 一种数据的处理方法和物理机 |
WO2018178220A1 (en) * | 2017-03-30 | 2018-10-04 | Koninklijke Philips N.V. | Three-dimensional ultrasound imaging with slow acquisition data link and associated devices, systems, and methods |
US11159148B1 (en) | 2019-01-29 | 2021-10-26 | Marvell Israel (M.I.S.L) Ltd. | Hybrid FIFO buffer |
US10969996B1 (en) | 2019-02-06 | 2021-04-06 | Marvell Israel (M.I.S.L) Ltd. | Extendable hardware queue structure and method of operation thereof |
US11552907B2 (en) * | 2019-08-16 | 2023-01-10 | Fungible, Inc. | Efficient packet queueing for computer networks |
WO2021186399A1 (en) | 2020-03-18 | 2021-09-23 | Marvell Israel (M.I.S.L) Ltd. | Packet buffer spill-over in network devices |
US11637784B2 (en) * | 2021-03-31 | 2023-04-25 | Nxp Usa, Inc. | Method and system for effective use of internal and external memory for packet buffering within a network device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682513A (en) * | 1995-03-31 | 1997-10-28 | International Business Machines Corporation | Cache queue entry linking for DASD record updates |
CN1574785A (zh) * | 2003-05-28 | 2005-02-02 | 英特尔公司 | 使用缓存来维护分组顺序的方法和系统 |
CN101317219A (zh) * | 2005-09-26 | 2008-12-03 | 查尔斯·F·J·巴恩斯 | 数据存储和操作的改进 |
CN103119548A (zh) * | 2010-09-23 | 2013-05-22 | 马维尔以色列(M.I.S.L.)有限公司 | 低等待时间先进先出(fifo)缓存 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893162A (en) * | 1997-02-05 | 1999-04-06 | Transwitch Corp. | Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists |
US6427173B1 (en) * | 1997-10-14 | 2002-07-30 | Alacritech, Inc. | Intelligent network interfaced device and system for accelerated communication |
US7145869B1 (en) * | 1999-03-17 | 2006-12-05 | Broadcom Corporation | Method for avoiding out-of-ordering of frames in a network switch |
US6725241B1 (en) * | 1999-03-31 | 2004-04-20 | International Business Machines Corporation | Method and apparatus for freeing memory in a data processing system |
US20150186068A1 (en) * | 2013-12-27 | 2015-07-02 | Sandisk Technologies Inc. | Command queuing using linked list queues |
-
2015
- 2015-01-23 US US14/603,565 patent/US10193831B2/en active Active
- 2015-01-29 CN CN201510047499.6A patent/CN104821887B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682513A (en) * | 1995-03-31 | 1997-10-28 | International Business Machines Corporation | Cache queue entry linking for DASD record updates |
CN1574785A (zh) * | 2003-05-28 | 2005-02-02 | 英特尔公司 | 使用缓存来维护分组顺序的方法和系统 |
CN101317219A (zh) * | 2005-09-26 | 2008-12-03 | 查尔斯·F·J·巴恩斯 | 数据存储和操作的改进 |
CN103119548A (zh) * | 2010-09-23 | 2013-05-22 | 马维尔以色列(M.I.S.L.)有限公司 | 低等待时间先进先出(fifo)缓存 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109565455A (zh) * | 2016-06-02 | 2019-04-02 | 马维尔以色列(M.I.S.L.)有限公司 | 具有高速缓存的分组存储器中的分组描述符存储 |
CN109565455B (zh) * | 2016-06-02 | 2023-09-26 | 马维尔以色列(M.I.S.L.)有限公司 | 具有高速缓存的分组存储器中的分组描述符存储 |
CN108363669A (zh) * | 2017-01-26 | 2018-08-03 | 佳能株式会社 | 存储器访问系统、其控制方法、存储介质及图像形成装置 |
US11163711B2 (en) | 2017-01-26 | 2021-11-02 | Canon Kabushiki Kaisha | Memory access system, method for controlling the same, computer-readable storage medium, and image forming apparatus |
CN110088724A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法 |
CN110088724B (zh) * | 2017-03-24 | 2022-08-26 | 西部数据技术公司 | 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法 |
US11487434B2 (en) | 2017-03-24 | 2022-11-01 | Western Digital Technologies, Inc. | Data storage device and method for adaptive command completion posting |
US11635898B2 (en) | 2017-03-24 | 2023-04-25 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
CN110650099A (zh) * | 2018-06-27 | 2020-01-03 | 丛林网络公司 | 预测计算设备中的包寿命的排队系统 |
WO2022001917A1 (zh) * | 2020-07-01 | 2022-01-06 | 阿里巴巴集团控股有限公司 | 一种数据流统计方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150215226A1 (en) | 2015-07-30 |
US10193831B2 (en) | 2019-01-29 |
CN104821887B (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104821887A (zh) | 通过使用具有不同延迟的存储器来进行分组处理的设备和方法 | |
US11249779B2 (en) | Accelerator interconnect assignments for virtual environments | |
US11916800B2 (en) | Dynamic virtual cut-through and dynamic fabric bandwidth allocation between virtual cut-through and store-and-forward traffic | |
EP3748510A1 (en) | Network interface for data transport in heterogeneous computing environments | |
US10649924B2 (en) | Network overlay systems and methods using offload processors | |
US10635631B2 (en) | Hybrid programmable many-core device with on-chip interconnect | |
US8930593B2 (en) | Method for setting parameters and determining latency in a chained device system | |
US20080080548A1 (en) | Method and System for Managing Time Division Multiplexing (TDM) Timeslots in a Network Switch | |
US11700209B2 (en) | Multi-path packet descriptor delivery scheme | |
US20130173895A1 (en) | Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system | |
US20130304841A1 (en) | Server node interconnect devices and methods | |
US8825927B2 (en) | Systems and methods for managing queues | |
US10248315B2 (en) | Devices and methods for interconnecting server nodes | |
US20220078119A1 (en) | Network interface device with flow control capability | |
US9515963B2 (en) | Universal network interface controller | |
US11726928B2 (en) | Network interface device with bus segment width matching | |
WO2023123905A1 (zh) | 芯片系统中的数据传输处理方法及相关装置 | |
US11722438B2 (en) | Maintaining bandwidth utilization in the presence of packet drops | |
CN102375789A (zh) | 一种通用网卡非缓存的零拷贝方法及零拷贝系统 | |
US20150254191A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - Embedded Buffer for Internal Data Transactions | |
US20150253837A1 (en) | Software Enabled Network Storage Accelerator (SENSA) - Power Savings in Arrays of Multiple RISC Cores | |
CN110519180A (zh) | 网卡虚拟化队列调度方法及系统 | |
CN110351199A (zh) | 流量平滑方法、服务器及转发设备 | |
US9137167B2 (en) | Host ethernet adapter frame forwarding | |
CN106372013B (zh) | 远程内存访问方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |