CN102195877A - 分组处理优化 - Google Patents
分组处理优化 Download PDFInfo
- Publication number
- CN102195877A CN102195877A CN2011100694536A CN201110069453A CN102195877A CN 102195877 A CN102195877 A CN 102195877A CN 2011100694536 A CN2011100694536 A CN 2011100694536A CN 201110069453 A CN201110069453 A CN 201110069453A CN 102195877 A CN102195877 A CN 102195877A
- Authority
- CN
- China
- Prior art keywords
- packet
- section
- classified information
- memory
- speed cache
- 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
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及分组处理优化。具体地,本发明的某些实施方式提供一种方法,该方法包括:接收通过网络传输的数据分组;生成用于该数据分组的分类信息;以及基于分类信息选择用于数据分组的存储器存储模式。还描述并要求保护其他实施方式。
Description
相关申请的交叉引用
本申请要求2010年3月18日提交的美国专利申请No.61/315,332的优先权,出于所有目的而将其全部说明书通过引用全文合并于此,除了与本说明书不一致的部分(如果有的话)。本申请涉及2011年3月1日提交的美国专利申请No.13/038,258(律师方案号MP3580)以及2011年3月1日提交的美国专利申请No.13/038,266(律师方案号MP3598),出于所有目的而将它们的全部说明书通过引用全文合并于此,除了与本说明书不一致的部分(如果有的话)。
技术领域
本公开的实施方式总体上涉及数据分组的处理,并且更具体地涉及数据分组处理的优化。
背景技术
除非在此另外指出,本部分中描述的方法不是本公开中权利要求的现有技术,并且也不因为包括在本部分中而承认其是现有技术。
在分组处理系统中,例如,网络控制器在存储器(例如,片上系统(SOC)外部的外部存储器)中存储多个数据分组(例如,从网络接收的数据分组),这通常具有相对高的读取延迟(例如,与从SOC中的高速缓存中读取时的延迟相比较)。当包括在SOC中的处理核将访问多个数据分组中的数据分组时,可以向高速缓存传输该数据分组,处理核从该高速缓存访问该数据分组(例如,为了处理该数据分组、向合适的位置路由该数据分组、执行与该数据分组相关联的安全性相关操作等)。然而,从外部存储器向高速缓存加载数据分组通常导致相对高的读取延迟。
在另一示例中,网络控制器直接将多个数据分组存储在高速缓存中,处理核从高速缓存访问数据分组。然而,这需要相对大的高速缓存,需要在高速缓存中频繁覆写,和/或可能由于高速缓存中的拥塞而导致从高速缓存向存储器冲刷(flush)一个或多个数据分组。
发明内容
在各种实施方式中,本公开提供了一种方法,该方法包括接收通过网络传输的数据分组;生成用于所述数据分组的分类信息;以及基于分类信息选择用于数据分组的存储器存储模式。在各种实施方式中,选择存储器模式还包括,基于分类信息选择用于数据分组的预提取模式,其中该方法还包括:响应于选择预提取模式,向存储器存储数据分组;以及至少部分地基于分类信息,从存储器向高速缓存提取数据分组的至少一段。在各种实施方式中,选择存储器模式还包括,基于分类信息选择用于数据分组的高速缓存寄存(deposit)模式,其中该方法还包括:响应于选择高速缓存寄存模式,向高速缓存存储数据分组的段。在各种实施方式中,选择存储器模式还包括,选择用于数据分组的窥探模式,其中该方法还包括:响应于选择窥探模式,向存储器传输数据分组;以及在向存储器传输数据分组时,窥探数据分组的段。
还提供一种片上系统(SOC),其包括处理核;高速缓存;解析和分类模块,被配置用于从网络控制器接收数据分组,其中网络控制器通过网络接收数据分组,并且生成用于数据分组的分类信息;以及存储器存储模式选择模块,被配置用于基于分类信息选择用于数据分组的存储器存储模式。
附图说明
在以下的详细描述中,参考形成该描述一部分的附图,其中在所有图中相同的标号指示相同的部分,并且其通过实施方式的方式示出本公开的原理。应该指出,可以利用其他实施方式,并且可以在不脱离本公开的范围的情况下做出结构性或逻辑性改变。因此,以下的详细描述不是限制意义的,并且根据本公开的实施方式的范围由所附权利要求书和其等同项限定。
图1示意性地示出了根据本公开实施方式的包括片上系统(SOC)100的分组通信系统10(此处也称作系统10),该片上系统(SOC)100包括解析和分类模块18和分组处理模块16。
图2示出了根据本公开实施方式用于操作图1的系统10的示例方法200。
具体实施方式
图1示意性地示出了根据本公开实施方式的包括片上系统(SOC)100的分组通信系统10(此处也称作系统10),该片上系统(SOC)100包括解析和分类模块18和分组处理模块16。SOC 100还包括处理核14和高速缓存30。高速缓存30例如是2级(L2)高速缓存。尽管在图1中仅示出了一个处理核14,但是在一个实施方式中,SOC 100包括多个处理核。尽管SOC 100包括若干其他组件(例如,通信总线、一个或多个外围设备、接口等),但是出于说明清楚的目的,在图1中未示出这些组件。
系统10包括存储器26。在一个实施方式中,存储器26在SOC 100的外部。在一个实施方式中,存储器26是动态随机访问存储器(DRAM)(例如,双数据速率三(DDR3)同步动态随机访问存储器(SDRAM))。
在一个实施方式中,系统10包括与多个设备耦合的网络控制器12,该多个设备例如设备12a、设备12b和/或设备12c。尽管示出了网络控制器12和设备12a、12b和12c在SOC 100的外部,但是在一个实施方式中,网络控制器12和/或设备12a、12b和12c中的一个或多个在SOC 100的内部。网络控制器12通过总线60耦合至存储器26。尽管示出了总线60在SOC 100的外部,但是在一个实施方式中,总线60在SOC 100的内部。在一个实施方式中,尽管在图1中未示出,总线60由SOC 100的各种其他组件共享。
网络控制器12例如与网络交换机、网络路由器、网络端口、以太网端口(例如,千兆字节以太网端口)或者具有网络连接性的任何其他合适的设备相关联。在一个实施方式中,SOC 100是网络设备的一部分,并且通过网络传输数据分组。网络控制器12从多个设备(例如,设备12a、设备12b和/或设备12c)接收数据分组(该数据分组例如从因特网之类的网络接收)。设备12a、12b和/或12c是网络设备,例如网络交换机、网络路由器、网络端口、以太网端口(例如,千兆字节以太网端口)、具有网络连接性的任何其他合适的设备等。
在一个实施方式中,解析和分类模块18从网络控制器12接收数据分组。尽管图1仅示出了一个网络控制器12,但是在一个实施方式中,解析和分类模块18从不止一个网络控制器接收数据分组。尽管在图1中未示出,但是在一个实施方式中,解析和分类模块18也从其他设备接收数据分组,例如,网络交换机、网络路由器、网络端口、以太网端口等。
解析和分类模块18解析和/或分类从网络控制器12接收的(和/或从任何其他合适的源接收的)数据分组。解析和分类模块18解析并分类接收的数据分组,以生成对应于接收的数据分组的分类信息34(也称作分类34)。例如,解析和分类模块18根据预定义的网络协议和规则的集合来解析数据分组,该预定义的网络协议和规则的集合共同定义了数据分组的封装结构。在一个示例中,数据分组的分类34包括与数据分组的类型、优先级、目的地地址、队列地址、业务流信息、其他分类信息(例如,会话号、协议等)等相关联的信息。在另一示例中,数据分组的分类34还包括具有流的数据分组的类或关联,其中以类似的方式对数据分组进行处理。如此后更详细地讨论的那样,分类34还指示数据分组的一个或多个段,该数据分组的一个或多个段将被存储在存储器26和/或高速缓存30中、选择性地向高速缓存30预提取和/或由分组处理模块16窥探(snoop)。
在共同未决申请美国12/947678(名称为“Iterative Parsing and Classification”,律师方案号No.MP3444)中描述了根据一个实施方式的解析和分类模块18,将其说明书通过引用全文合并于此,除了与本说明书不一致的部分(如果有的话)。在另一个实施方式中,任何其他合适的硬件和/或软件组件可以代替解析和分类模块18用于解析并分类数据分组。
分组处理模块16从解析和分类模块18接收数据分组的分类34。在一个实施方式中,分组处理模块16包括存储器存储模式选择模块20、预提取模块22、高速缓存寄存模块42和窥探模块62。在共同未决申请美国13/038,258(名称为“Pre-fetching of Data Packets”,律师方案号No.MP3580)中描述了根据一个实施方式的预提取模块22,将其说明书通过引用全文合并于此,除了与本说明书不一致的部分(如果有的话)。
针对由网络控制器12接收并由解析和分类模块18分类的每个数据分组,分组处理模块16基于分类34以多个存储器存储模式中的一个或多个存储器存储模式操作。例如,如此后更详细地讨论的那样,分组处理模块16以预提取模式、高速缓存寄存模式和窥探模式中的一个进行操作。在一个实施方式中,基于用于数据分组的接收的分类信息34,分组处理模块16(例如,存储器存储模式选择模块20)选择用于数据分组的合适的存储器存储模式。在一个实施方式中,基于对传入队列或流(例如,VOIP、流式传输视频、互联网浏览会话等)的数据分组的分类、包含在数据分组本身中的信息、系统资源的可用性(例如,如共同未决申请美国_____(名称为“Combined Hardware/Software Forwarding Mechanism and Method”,律师方案号No.MP3595)中描述的那样,将其说明书通过引用全文合并于此)等来做出对用于处理数据分组的合适存储器存储模式的选择。
预提取模式的操作
在一个实施方式中,当存储器存储模式选择模块20基于数据分组的分类34选择用于数据分组的预提取模式时,预提取模块22处理该数据分组。例如,在预提取模式期间,数据分组(由网络控制器12接收并由解析和分类模块18解析并分类的)存储在存储器26中。此外,预提取模块22从解析和分类模块18接收数据分组的分类34。至少部分地基于接收的分类34,预提取模块22从存储器26向高速缓存30预提取数据分组的合适部分。在一个实施方式中,预提取模块22通过预提取模块22从存储器26向高速缓存30预提取数据分组。预提取的数据分组由处理核14从高速缓存30访问。
在一个实施方式中,在处理核14请求数据分组以执行对该数据分组的处理操作之前,预提取模块从存储器26向高速缓存30预提取该数据分组。在一个实施方式中,数据分组的分类34包括数据分组是否需要由预提取模块22预提取、或是否对数据分组执行常规提取操作(例如,在需要时由处理核14提取数据分组)的指示。因此在不远的未来,在预期处理核14要使用数据分组时,预提取模块22基于分类34预提取该数据分组。共同未决申请美国13/038,258(名称为“Pre-Fetching of Data Packets”,律师方案号MP3580)中描述了适合于预提取模块的操作和结构。
在一个示例中,与多个数据分组相关联的分类34指示第一数据分组和第二数据分组属于处理核14的同一处理队列(或同一处理会话、或同一业务流),并且还指示对用于第一数据分组和第二数据分组的预提取模式的操作的选择。当处理核14正在处理属于第一处理队列的第一数据分组时,处理核14很可能随后将处理属于与第一数据分组相同的第一处理队列或者处理核14的相同业务流的第二数据分组。因而,当处理核14正在处理第一数据分组时,预提取模块22从存储器26向高速缓存30预提取第二数据分组,以使得处理核14能够在需要时(例如,在处理第一数据分组之后)从高速缓存30访问第二数据分组。因此,当处理核14准备就绪以处理第二数据分组时,可容易地在高速缓存30中获取第二数据分组。预提取模块22对第二数据分组的预提取减少了与处理第二数据分组相关联的延迟(这是相比于如下情况而言的:处理核14将处理第二数据分组时从存储器26读取第二数据分组)。在一个实施方式中,预提取模块22从处理核14接收关于处理核14当前正在处理哪个数据分组和/或关于处理核14未来可能处理哪个数据分组的信息。
数据分组通常包括在数据分组净荷段之前的报头段。报头段例如包括与数据分组的源起地址、目的地地址、优先级、队列、业务流、应用领域、相关联的协议等(例如,任何其他配置信息)相关联的信息。净荷段例如包括与数据分组相关联的用户数据(例如,旨在通过网络传输的数据,诸如因特网数据、流式传输媒体等)。
在某些应用中,处理核14在处理数据分组时仅需要访问数据分组的段。在一个实施方式中,数据分组的分类34指示将由处理核14访问的数据分组的段。在一个实施方式中,代替预提取整个数据分组,预提取模块22至少部分地基于接收的分类34,从存储器26向高速缓存30预提取数据分组的段。在一个实施方式中,与数据分组相关联的分类34指示数据分组的段,预提取模块22将从存储器26向高速缓存30预提取该数据分组的段。即,解析和分类模块18基于对数据分组的分类,从存储器26选择预提取模块22将预提取的数据分组的段。
在一个示例中,处理核14仅需要访问和处理与网络路由应用相关联的数据分组的报头段。另一方面,处理核14需要访问和处理与安全相关应用相关联的数据分组的报头段和净荷段两者。在一个实施方式中,解析和分类模块18识别网络控制器12接收的数据分组的类型。例如,如果解析和分类模块18识别了源自已经被识别为安全性风险的源的数据分组,则解析和分类模块18将该数据分组分类为与安全相关应用相关联。在一个实施方式中,解析和分类模块18识别数据分组的类型(例如,数据分组是否与网络路由应用、安全相关应用等相关联),并且相应地生成分类34。例如,基于分类34,预提取模块22仅预提取与网络路由应用相关联的数据分组的报头段(或报头段的一部分)。另一方面,预提取模块22预提取与安全相关应用相关联的另一数据分组的报头段和净荷段(或报头段的一部分和/或净荷段的一部分)两者。
在另一示例中,分类34至少部分地基于与数据分组相关联的优先级。预提取模块22从分类34接收数据分组的优先级信息。对于相对高优先级的数据分组(例如,与实时音频和/或视频应用(比如因特网协议语音(VOIP应用))相关联的数据分组)而言,例如,预提取模块22预提取报头段和净荷段两者(因为,处理核14可能需要在从高速缓存30访问数据分组的报头段之后来访问净荷段)。然而,对于相对低优先级的数据分组而言,预提取模块22仅预提取报头段(并且,例如,基于处理核14对净荷段的需要而提取净荷段)。在另一实施方式中,对于另一相对低优先级的数据分组而言,预提取模块22不预提取数据分组,并且仅当处理核14实际需要该数据分组时,才从存储器26向高速缓存30提取该数据分组。
在又一其他示例中,预提取模块22至少部分地基于任何其他合适的标准来预提取数据分组的段。例如,预提取模块22至少部分地基于分类34中的任何其他配置信息来预提取数据分组的段。
高速缓存寄存模式的操作
在一个实施方式中,当存储器存储模式选择模块20基于数据分组的分类34选择用于数据分组的高速缓存寄存模式时,高速缓存寄存模块42处理数据分组。例如,在高速缓存寄存模式期间,高速缓存寄存模块42接收分类34,并且选择性地指示网络控制器12在存储器26和/或高速缓存30中存储数据分组。在一个实施方式中,在高速缓存寄存模式期间,网络控制器12至少部分地基于来自于高速缓存寄存模块42的指令,在高速缓存30中存储数据分组的段,并且在存储器26中存储该数据分组的另一段(或整个数据分组)。例如,仅处理核在处理数据分组时访问的数据分组的段存储在高速缓存30中。
在一个实施方式中,与数据分组相关联的分类34指示网络控制器12将直接存储在高速缓存30(例如,通过旁路存储器26)中的数据分组的段。即,解析和分类模块18基于对数据分组的分类,选择网络控制器12将直接存储在高速缓存30中的数据分组的段(但是在另一实施方式中,不同的组件(在图1中未示出)接收分类34,并且决定将在高速缓存30中存储数据分组的哪个段)。
例如,数据分组包括多个字节,并且网络控制器向高速缓存30存储数据分组的N个字节(例如,数据分组的前N个字节),并且向存储器26存储数据分组的其余字节,其中N是整数,该N例如由解析和分类模块18(例如,分类34包括整数N的指示)和/或高速缓存寄存模块42(例如,基于分类34)选择。
在另一示例中,网络控制器向高速缓存30存储数据分组的N个字节,并且还向存储器26存储整个数据分组(从而,数据分组的N个字节存储在高速缓存30和存储器26两者中)。
如上所述,网络控制器12a仅将数据分组的段存储在高速缓存30中,处理核14在处理数据分组时需要访问该数据分组的段。在一个实施方式中,数据分组包括第一段和第二段,并且网络控制器12基于分类34向高速缓存30a直接传输数据分组的第一段(作为高速缓存寄存模式的一部分),但是制止向高速缓存30a传输数据分组的第二段(网络控制器12向存储器26传输数据分组的第二段,可能还有第一段)。
在一个示例中,如上所述,处理核14仅需要访问并处理与网络路由应用相关联的数据分组的报头段。因而,解析和分类模块18生成此类数据分组的分类34。在一个实施方式中(例如,如果分类34还指示高速缓存寄存模式的操作),(例如,除了或代替向存储器26存储这些数据分组的报头段),网络控制器12基于分类34向高速缓存30仅存储这些数据分组的报头段(或代替存储整个报头段的是,仅存储报头段的相关部分)。
在另一示例中,处理核14需要访问并处理与安全相关应用相关联的数据分组的报头段和净荷段两者。因而,解析和分类模块18生成此类数据分组的分类34。在一个实施方式中(例如,如果分类34还指示高速缓存寄存模式的操作),(例如,除了或代替向存储器26存储这些数据分组的报头段),网络控制器12基于分类34向高速缓存30仅存储这些数据分组的报头段和净荷段(或代替存储整个报头段的是,仅存储报头段的相关部分)。
在一个实施方式中,至少部分地基于与数据分组相关联的优先级生成分类34。例如,高速缓存寄存模块42从分类34接收数据分组的优先级信息。对于相对高优先级的数据分组而言,网络控制器12基于分类34在高速缓存30中存储报头段和净荷段两者(因为,处理核14可能需要在从高速缓存30访问数据分组的报头段之后来访问净荷段)。对于相对低优先级的数据分组(例如,对于属于相对低优先级流/队列的分类34中经分类的分组而言)而言,网络控制器12基于分类34仅向高速缓存30存储报头段。在另一实施方式中,对于另一相对低优先级的数据分组而言,网络控制器12不在高速缓存30中存储数据分组的任何段,并且代之以,选择另一合适的存储器存储模式(例如,选择预提取模式)。在其他示例中,网络控制器12至少部分地基于任何其他合适的标准(例如,分类34中的任何其他配置信息),来在高速缓存30中存储数据分组的段。
窥探模式
在一个实施方式中,当存储器存储模式选择模块20基于数据分组的分类34选择用于数据分组的窥探模式时,窥探模块62处理数据分组。在一个实施方式中,在窥探模式期间,至少部分地基于分类34,窥探模块62在数据分组通过总线60从网络接口12向存储器26传输时窥探数据分组。在一个示例中,基于分类34,窥探模块62仅窥探处理核14在处理数据分组时需要访问的数据分组的段。例如,分类34包括将由窥探模块62窥探的数据分组的段的指示。
在一个实施方式中,窥探模式独立于预提取模式和/或高速缓存寄存模式来操作。在一个实施方式中,窥探模块62基于相应的分类34窥探,从网络控制器12向存储器26传输的所有数据分组的段。
在(例如,支持硬件高速缓存一致性的)传统分组通信系统中,窥探或嗅探向存储器传输的所有数据分组以确保高速缓存一致性。通常,此类窥探动作(例如,检查以查看在高速缓存中是否存在数据的有效副本,并且如果向存储器中的相应段写入新数据,则使高速缓存中的数据的有效副本无效)可以使分组通信系统超载(例如,由于针对存储器的每个写事务完成窥探)。相反,窥探模块62选择性地仅窥探处理核14需要访问的数据分组的段(例如,代替整个数据分组),从而减少与窥探相关联的系统10的处理负载。
在一个实施方式中,窥探模式结合另一存储器存储模式进行操作。例如,基于分类34,在高速缓存寄存模式期间,向存储器26写入数据分组的第一部分,而直接向高速缓存30写入数据分组的第二部分。在一个实施方式中,在向存储器26写入数据分组的第一部分时,窥探模块62可以窥探数据分组的第一部分。因此,在该示例中,窥探模式结合高速缓存寄存模式执行。在一个实施方式中并且如上所述,解析和分类模块18生成用于数据分组的分类34,使得分类34指示分组处理模块16在处理数据分组时操作哪个或哪些模块。
在一个实施方式中,数据分组包括多个字节,并且窥探模块62仅窥探数据分组的M个字节(例如,数据分组的前M个字节)(例如,代替窥探整个数据分组),其中M是在例如与数据分组相关联的分类34中指示的整数。在一个实施方式中,窥探模块62不窥探数据分组的其余字节(例如,M字节之外的字节)。
在一个实施方式中,指示将被窥探的数据分组的段的分类34例如是基于数据分组的类型的。例如,处理核14仅需要访问和处理与网络路由应用相关联的数据分组的报头段。因而,在一个实施方式中,生成分类34,使得窥探模块62基于分类34例如仅窥探这些数据分组的报头段(或仅报头段的相关部分)。在另一示例中,处理核14访问和处理与安全相关应用相关联的数据分组的报头段和净荷段两者。因而,在一个实施方式中,生成分类34使得窥探模块62窥探与安全应用相关联的数据分组的报头段和净荷段(或仅报头段和/或净荷段的相关部分)。
在又一示例中,基于针对选择的队列或流的数据分组的分类34,窥探模块62至少部分地基于任何其他合适的标准(例如,分类34中的任何其他配置信息),来窥探数据分组的段。
图1中系统10的操作
如上所述,基于针对数据分组接收的分类信息34,分组处理模块16(例如,存储器存储模式选择模块20)选择用于数据分组的合适的存储器存储模式(例如,预提取模式、高速缓存寄存模式以及窥探模式中的一个或多个)。例如,网络控制器12可以将相对高优先级的数据分组(例如,整个高优先级的数据分组或仅高优先级的数据分组的相关部分)直接写入到高速缓存30。即,对于高优先级的数据分组而言,可以生成分类34,使得存储器存储模式选择模块20选择高速缓存寄存模式。在另一示例中,窥探模块62可以窥探整个高优先级的数据分组。另一方面,向存储器26写入中优先级的数据分组(例如,具有比高优先级的数据分组低、但是比低优先级的数据分组高的优先级的数据分组),并且继而可以在处理核14访问并处理数据分组之前,由预提取模块22预提取。即,针对中优先级的数据分组,可以生成分类34,使得存储器存储模式选择模块20选择预提取模式。低优先级的数据分组可以被存储在存储器26中,并且仅当处理核14将处理分组时提取至高速缓存30。此外,在另一示例中,窥探模块62可以基于相关联的分类34仅窥探中优先级和/或低优先级的数据分组的段。
如上所述,基于分类34(继而基于例如数据分组的优先级)以预提取模式、高速缓存寄存模式和/或窥探模式进行操作仅是示例。在另一示例中,还可以以任何不同的方式生成分类34。
如上所述,在一个实施方式中,在各种存储器存储模式中,例如,代替处理整个数据分组,仅处理数据分组的段(该处理例如,仅预提取、在高速缓存30中寄存和/或窥探数据分组的段)。例如,仅将处理核14在处理数据分组时需要访问的数据分组的段置于高速缓存30中(例如,以预提取模式或以高速缓存寄存模式)。因此,不论处理核14何时希望访问和/或处理数据分组,处理核14都可容易地在高速缓存30中获得数据分组的段,从而减少了与处理数据分组相关联的延迟。而且,由于仅数据分组的段(例如,代替整个数据分组)存储在高速缓存中,因而高速缓存不因为数据而超载(例如,不需要频繁覆写高速缓存)。这还导致大小较小的高速缓存,和/或减少从高速缓存中冲刷数据分组的机会。
在一个实施方式中,解析和分类模块18、预提取模块22、高速缓存寄存模块42和/或窥探模块62是完全可配置的。例如,解析和分类模块18可被配置用于至少部分地基于应用领域和相关联的SOC的关键性、数据分组的类型、可用带宽等,来动态地改变对段数据分组的选择(例如,将以预提取模式或以高速缓存寄存模式被存储在高速缓存中的、或将被窥探的段数据分组)。在另一示例中,预提取模块22、高速缓存寄存模块42和窥探模块62可被配置用于动态地改变例如向高速缓存置入数据分组的段的定时(例如,以预提取模式或以高速缓存寄存模式),和/或动态地改变与图1的系统10的操作相关联的任何其他合适标准。
图2示出了根据本公开的实施方式,用于操作图1的系统10的示例方法200。在204,网络控制器12(或系统10的任何其他合适组件)接收通过网络传输的数据分组。在208,解析和分类模块18生成用于数据分组的分类信息。在一个实施方式中,分类34包括用于数据分组的存储器存储模式的指示。在一个实施方式中,分类34包括例如将被存储在高速缓存30中(例如,以预提取模式或以高速缓存寄存模式)和/或由窥探模块62窥探的数据分组的段的指示。
在212,存储器存储模式选择模块20基于分类34选择存储器存储模式。在216,分组处理模块16使用选择的存储器存储模式来处理数据分组。例如,如果选择了预提取模式,则向存储器26存储数据分组,并且预提取模块22至少部分地基于分类34,从存储器26向高速缓存30预提取数据分组的段。在另一示例中,如果选择了高速缓存寄存模式,则至少部分地基于分类34,直接从网络控制器12向高速缓存30存储数据分组的段。在又一示例中,如果选择了窥探模式,则窥探模块62至少部分地基于分类34,在通过总线60向存储器26写入数据分组时窥探数据分组的段。在一个实施方式中,窥探模式独立于预提取模式和/或高速缓存寄存模式(例如,窥探模式针对写入存储器26的所有数据分组来执行,例如,与是否选择预提取模式和/或高速缓存寄存模式无关)。
尽管在此已经示出了并描述了具体实施方式,但是应该注意,在不脱离本公开的范围的情况下,各种备选和/或等同实现可以替代示出和描述的具体实施方式。本公开涵盖完全落入明示或暗示的所附权利要求书范围内的所有方法、装置和制品。本申请旨在涵盖此处所公开实施方式的任何修改或变形。因此,这表明并且目的在于本公开仅受到权利要求书和其等同物的限制。
Claims (20)
1.一种方法,包括:
接收通过网络传输的数据分组;
基于所述分组中包括的信息生成用于所述数据分组的分类信息;以及
基于所述分类信息选择用于所述数据分组的存储器存储模式。
2.根据权利要求1所述的方法,其中所述选择所述存储器模式还包括,基于所述分类信息选择用于所述数据分组的预提取模式,其中所述方法还包括:
响应于选择所述预提取模式,向存储器存储所述数据分组;以及
至少部分地基于所述分类信息,从所述存储器向高速缓存提取所述数据分组的至少一段。
3.根据权利要求2所述的方法,其中所述数据分组是第一数据分组,其中所述第一数据分组与第一业务流相关联,并且其中所述提取所述第一数据分组的所述至少一段还包括:
在处理与所述第一业务流相关联的第二数据分组时,至少部分地基于与相同业务流相关联的所述第一数据分组和所述第二数据分组,来从所述存储器向所述高速缓存提取所述第一数据分组的所述至少一段。
4.根据权利要求2所述的方法,其中所述提取所述数据分组的所述至少一段还包括:
在处理核请求所述数据分组的所述至少一段以执行对所述数据分组的所述至少一段的处理操作之前,向所述高速缓存提取所述数据分组的所述至少一段。
5.根据权利要求2所述的方法,其中所述生成所述分类信息还包括:
生成用于所述数据分组的所述分类信息,使得所述分类信息包括从所述存储器提取到所述高速缓存的所述数据分组的所述至少一段的指示。
6.根据权利要求1所述的方法,其中所述选择存储器模式还包括,基于所述分类信息选择用于所述数据分组的高速缓存寄存模式,其中所述方法还包括:
响应于选择所述高速缓存寄存模式,向高速缓存存储所述数据分组的段。
7.根据权利要求6所述的方法,其中向所述高速缓存存储所述数据分组的所述段还包括:
从网络控制器向所述高速缓存传输所述数据分组的所述段。
8.根据权利要求7所述的方法,其中所述数据分组的所述段包括所述数据分组的第一段,其中所述数据分组包括所述第一段和第二段,并且其中所述方法还包括:
从所述网络控制器向存储器传输所述数据分组的所述第二段;以及
制止从所述网络控制器向所述高速缓存传输所述数据分组的所述第二段。
9.根据权利要求1所述的方法,其中所述选择所述存储器模式还包括,选择用于所述数据分组的窥探模式,其中所述方法还包括:
响应于选择所述窥探模式,向存储器传输所述数据分组;以及
在向所述存储器传输所述数据分组时,窥探所述数据分组的段。
10.根据权利要求9所述的方法,其中所述生成所述分类信息还包括:
生成用于所述数据分组的所述分类信息,使得所述分类信息包括被窥探的所述数据分组的所述段的指示。
11.根据权利要求1所述的方法,其中所述生成用于所述数据分组的所述分类信息还包括:
确定所述数据分组的优先级;以及
如果所述数据分组具有相对高的优先级,则生成所述分类信息,使得所述分类信息指示用于所述数据分组的高速缓存寄存模式。
12.根据权利要求11所述的方法,其中所述生成用于所述数据分组的所述分类信息还包括:
如果所述数据分组具有相对高的优先级,则生成所述分类信息,使得所述分类信息指示将从网络控制器向高速缓存直接存储整个数据分组。
13.根据权利要求1所述的方法,其中所述生成用于所述数据分组的所述分类信息还包括:
确定所述数据分组的优先级;以及
如果所述分组具有相对低的优先级,则生成所述分类信息,使得所述分类信息指示用于在没有预提取的情况下在存储器中存储所述数据分组的存储模式;以及
如果所述数据分组具有比所述相对高的优先级低并且比所述相对低的优先级高的优先级,则生成所述分类信息,使得所述分类信息指示用于所述数据分组的预提取模式。
14.一种片上系统(SOC),包括:
处理核;
高速缓存;
解析和分类模块,被配置用于:
从网络控制器接收数据分组,其中所述网络控制器通过网络接收所述数据分组;
生成用于所述数据分组的分类信息;以及
存储器存储模式选择模块,被配置用于基于所述分类信息选择用于所述数据分组的存储器存储模式。
15.根据权利要求14所述的SOC,还包括预提取模块,被配置用于:
响应于所述存储器存储模式选择模块选择预提取模式,向存储器存储所述数据分组;以及
至少部分地基于所述分类信息从所述存储器向所述高速缓存预提取所述数据分组的段。
16.根据权利要求15所述的SOC,其中:
所述数据分组是与第一业务流相关联的第一数据分组;以及
在所述处理核处理与所述第一业务流相关联的第二数据分组时,所述预提取模块至少部分地基于与相同业务流相关联的所述第一数据分组和所述第二数据分组,来预提取所述第一数据分组的段。
17.根据权利要求15所述的SOC,其中所述存储器在所述SOC的外部。
18.根据权利要求14所述的SOC,还包括高速缓存寄存模块,被配置用于:
响应于所述存储器存储模式选择模块选择高速缓存寄存模式,至少部分地基于所述分类信息控制所述网络控制器,使得所述网络控制器向所述高速缓存传输所述数据分组的段。
19.根据权利要求14所述的SOC,还包括:
窥探模块,被配置用于在从所述网络控制器向所述存储器传输所述数据分组时,基于所述分类信息来窥探所述数据分组的段。
20.根据权利要求19所述的SOC,其中所述分类信息包括将由所述窥探模块窥探的所述数据分组的指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31533210P | 2010-03-18 | 2010-03-18 | |
US61/315,332 | 2010-03-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102195877A true CN102195877A (zh) | 2011-09-21 |
CN102195877B CN102195877B (zh) | 2016-12-14 |
Family
ID=
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050098A (zh) * | 2013-03-13 | 2014-09-17 | 国际商业机器公司 | 优化的数据去重复的动态高速缓存模块选择的方法和系统 |
US9690711B2 (en) | 2013-03-13 | 2017-06-27 | International Business Machines Corporation | Scheduler training for multi-module byte caching |
CN112787880A (zh) * | 2019-11-08 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 回放数据获取与流量回放方法、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226704A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 包括多层次分级存储器体系的数据处理系统的高速缓存相关性协议 |
CN1682502A (zh) * | 2002-07-15 | 2005-10-12 | 索马网络公司 | 用于传输具有不同QoS属性的数据的装置、系统和方法 |
US20050286513A1 (en) * | 2004-06-24 | 2005-12-29 | King Steven R | Software assisted RDMA |
US20060288134A1 (en) * | 1998-10-14 | 2006-12-21 | David Baker | Data streamer |
US20080112415A1 (en) * | 2006-11-09 | 2008-05-15 | Justin Mark Sobaje | Network Processors and Pipeline Optimization Methods |
US20080232374A1 (en) * | 2007-03-12 | 2008-09-25 | Yaniv Kopelman | Method and apparatus for determining locations of fields in a data unit |
US20080240111A1 (en) * | 2007-03-26 | 2008-10-02 | Gadelrab Serag | Method and apparatus for writing network packets into computer memory |
US7600131B1 (en) * | 1999-07-08 | 2009-10-06 | Broadcom Corporation | Distributed processing in a cryptography acceleration chip |
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1226704A (zh) * | 1998-02-17 | 1999-08-25 | 国际商业机器公司 | 包括多层次分级存储器体系的数据处理系统的高速缓存相关性协议 |
US20060288134A1 (en) * | 1998-10-14 | 2006-12-21 | David Baker | Data streamer |
US7600131B1 (en) * | 1999-07-08 | 2009-10-06 | Broadcom Corporation | Distributed processing in a cryptography acceleration chip |
CN1682502A (zh) * | 2002-07-15 | 2005-10-12 | 索马网络公司 | 用于传输具有不同QoS属性的数据的装置、系统和方法 |
US20050286513A1 (en) * | 2004-06-24 | 2005-12-29 | King Steven R | Software assisted RDMA |
US20080112415A1 (en) * | 2006-11-09 | 2008-05-15 | Justin Mark Sobaje | Network Processors and Pipeline Optimization Methods |
US20080232374A1 (en) * | 2007-03-12 | 2008-09-25 | Yaniv Kopelman | Method and apparatus for determining locations of fields in a data unit |
US20080240111A1 (en) * | 2007-03-26 | 2008-10-02 | Gadelrab Serag | Method and apparatus for writing network packets into computer memory |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050098A (zh) * | 2013-03-13 | 2014-09-17 | 国际商业机器公司 | 优化的数据去重复的动态高速缓存模块选择的方法和系统 |
US9690711B2 (en) | 2013-03-13 | 2017-06-27 | International Business Machines Corporation | Scheduler training for multi-module byte caching |
CN104050098B (zh) * | 2013-03-13 | 2017-08-01 | 国际商业机器公司 | 优化的数据去重复的动态高速缓存模块选择的方法和系统 |
US9733843B2 (en) | 2013-03-13 | 2017-08-15 | International Business Machines Corporation | Dynamic caching module selection for optimized data deduplication |
US10241682B2 (en) | 2013-03-13 | 2019-03-26 | International Business Machines Corporation | Dynamic caching module selection for optimized data deduplication |
CN112787880A (zh) * | 2019-11-08 | 2021-05-11 | 阿里巴巴集团控股有限公司 | 回放数据获取与流量回放方法、设备及存储介质 |
CN112787880B (zh) * | 2019-11-08 | 2024-05-31 | 阿里巴巴集团控股有限公司 | 回放数据获取与流量回放方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
IL211608B (en) | 2018-05-31 |
JP2011198360A (ja) | 2011-10-06 |
JP5733701B2 (ja) | 2015-06-10 |
US20110228674A1 (en) | 2011-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8255644B2 (en) | Network communications processor architecture with memory load balancing | |
US7606236B2 (en) | Forwarding information base lookup method | |
US9280297B1 (en) | Transactional memory that supports a put with low priority ring command | |
CN102195874A (zh) | 数据分组的预提取 | |
JP5733701B2 (ja) | パケット処理最適化 | |
US9678866B1 (en) | Transactional memory that supports put and get ring commands | |
US20140153575A1 (en) | Packet data processor in a communications processor architecture | |
WO2011078108A1 (ja) | マルチプロセッサ環境におけるパターンマッチング方法、及び装置 | |
JP2006313949A (ja) | パケット転送装置 | |
US11829323B2 (en) | Method of notifying a process or programmable atomic operation traps | |
US11693690B2 (en) | Method of completing a programmable atomic transaction by ensuring memory locks are cleared | |
US20060031628A1 (en) | Buffer management in a network device without SRAM | |
CN105610906A (zh) | 转发请求的方法、装置及系统 | |
US20150089165A1 (en) | Transactional memory that supports a get from one of a set of rings command | |
US10817177B1 (en) | Multi-stage counters | |
Orsák et al. | High-speed stateful packet classifier based on TSS algorithm optimized for off-chip memories | |
US9282051B2 (en) | Credit-based resource allocator circuit | |
US7340570B2 (en) | Engine for comparing a key with rules having high and low values defining a range | |
CN106302259B (zh) | 片上网络中处理报文的方法和路由器 | |
CN102195877B (zh) | 分组处理优化 | |
CN100533371C (zh) | 用于控制处理器与外设之间的通信的控制器和方法 | |
US9268600B2 (en) | Picoengine pool transactional memory architecture | |
US9164794B2 (en) | Hardware prefix reduction circuit | |
Wen et al. | Interest forwarding in CoLoR: A baseline implementation and performance evaluation | |
Ondero et al. | Optimization of GraphQL Queries in WSO2 Platform |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161214 |
|
CF01 | Termination of patent right due to non-payment of annual fee |