具体实施方式
以下,将参照附图来详细描述各种实施例。应注意,这些实施例仅用作例示性例子而不应被视为限制本应用的范围。
例如,尽管实施例可被描述为包括多个特征或元件,然而在其它实施例中,可省略这些特征或元件中的某些特征或元件,抑或可使用替代的特征或元件来替代。换句话讲,针对实施例所述的特征或元件不应被视为对于实施而言所必需的或必不可少的。在其它实施例中,可存在其它特征或元件。
除非另外特别注明,否则来自不同实施例的特征可彼此相结合。实施例可实施为硬件、固件(firmware)、软件或其任一组合。各种元件之间的任何耦接或连接可被实施为直接连接或耦接(即,不需要中间元件的连接或耦接),抑或被实施为间接连接或耦接(即,以一个或多个中间元件来连接或耦接),只要不显著改变连接或耦接的一般功能(例如用于转发特定种类的数据或特定信息)即可。
连接或耦接可被实施为基于线材的耦接或无线耦接。
在某些实施例中,可提供一种包括主处理器件及辅助处理器件的装置。辅助处理器件可接收数据、对所述数据执行某些处理,并可将如此处理过的数据(以下也被称为经过预处理的数据)中的至少一部分转发至主处理器件。主处理器件可将所述主处理器件的负荷(例如,关于主处理器件的处理从辅助处理器件接收的数据的能力)通知辅助处理器件。在高负荷情况下,可舍弃某些数据而非转发至主处理器件。在某些实施例中,可例如根据数据的优先权而直接由辅助处理器件来执行这些舍弃。
现在转向附图,在图1中,显示例示根据一实施例的装置的方框图。图1所示实施例的装置包括辅助处理器件及主处理器件。在本申请的上下文中,处理器件涉及任何种类的能够处理数据并输出经处理数据的器件。处理器件可以是经过相应编程的可编程器件(如微处理器或微控制器),可包括现场可编程门阵列(field programmably gate array;FPGA)、抑或可以是硬接线器件,仅举几个例子而言,例如为应用专用集成电路(application specific integrated circuit;ASIC)或算数逻辑单元(arithmeticlogical unit;ALU)。
辅助处理器件10接收输入数据di并将输入数据di处理成经部分处理的数据dpp。辅助处理器件10可用以快速地执行为处理输入数据di所需的特定任务,即,可包括有限的数据处理功能集合。例如,辅助处理器件10可被硬接线成执行某一处理。然而,在某些实施例中,辅助处理器件10可被限制于这种特定任务,而主处理器件可例如是可编程的以执行不同种类的所需处理。在某些实施例中,主处理器件11可将经部分处理的数据dpp处理成经完全处理的数据dfp。例如,辅助处理器件10所执行的任务可包括可在硬接线时快速执行的特定计算。对于某些数据,在由辅助处理器件10处理后可能不需要由主处理器件11进一步处理,且这类数据可由辅助处理器件10作为经处理的数据dap输出。
应注意,除了处理从辅助处理器件10接收的数据之外,主处理器件11也可服务于装置中的其它任务,例如可处理除从辅助处理器件10接收的经预处理数据dpp之外的数据、控制其它组件等。
在实施例中,所述辅助处理器件10可用以非常快速地执行辅助处理器件10被指派的任务。另一方面,所述主处理器件11用途可更为广泛、但处理数据的速度较慢、及/或可被除处理经过预处理的数据dpp以外的其它任务所占用。因此,当输入数据di的速率高且被辅助处理器件10快速处理时,经过预处理的数据dpp量可使主处理器件11超负荷,从而例如可导致高的延迟。
在图1所示实施例中,主处理器件11通过反馈路径以负荷通知ln将主处理器件11的负荷通知辅助处理器件10。例如,负荷通知ln可在主处理器件11中存在低负荷、中等负荷或高负荷时通知辅助处理器件10,抑或可例如以某一百分比来表示主处理器件11的负荷。也可使用任何其他负荷量度来建立负荷通知ln。
在实施例中,根据负荷通知ln而定,辅助处理器件10可决定舍弃某些数据di并且仅将某些数据作为经过预处理的数据dpp而转发至主处理器件11。例如,在负荷通知ln指示主处理器件11具有低负荷的情况下,在某些实施例中可将基于所有输入数据di的所有经过预处理的数据dpp转发至主处理器件11。在负荷通知ln指示高负荷的情况下,只有具有高优先权的数据(例如,实时数据)可由辅助处理器件10进行处理,并且作为经部分处理的数据dpp而被转发至主处理器件11。在中等负荷的情况下,可转发具有高优先权及具有中等优先权的数据,具有低优先权的数据则可被舍弃。也可使用其它方案。
在某些实施例中,可在辅助处理器件10中对数据指派优先权。在其它实施例中,输入数据di自身可包含关于其优先权的指示。
因此,根据图1所示方案,可确保即使在某些实施例中主处理器件11的负荷高时仍能处理高优先权数据,而其它数据则可被舍弃以免进一步增加主处理器件11的负荷。
尽管图1所示装置并非限制于任何特定种类的数据,然而在某些实施例中,数据di可以是通过通信连接(例如,无线通信连接或基于线材的通信连接)所接收的数据。在某些实施例中,输入数据di可包括各种通信标准中所使用的帧、封包、信元或任何其它种类的数据单元。
例如,在图2中,显示用以处理封包的装置的实施例。图2所示装置被实施为单芯片系统(system-on-chip;SoC)20,即,以下所述组件21-23集成在单个芯片上。在其它实施例中,组件21-23可设置在单独芯片上。在某些实施例中,也可将其它组件(图2中未示出)设置在SoC 20上。SoC20包括用于接收输入封包pi的封包处理引擎21。封包处理引擎21是辅助处理器件的一个例子,并可被配置成(例如被硬接线成)对输入封包pi执行有限的处理。这种有限的处理可例如包括欲对封包执行的信头提取(header extraction)、循环冗余校验及/或其它处理。输入封包pi可以是根据如下标准的封包:无线通信标准(如WLAN标准或蜂窝网络标准(GPRS、UMTS、LTE、…))或基于线材的通信标准(电力线标准、xDSL标准(ADSL、ADSL2、VDSL、VDSL2、SHDSL、…)、家庭网络标准或类似标准)。在其它实施例中,封包可以是非标准封包。封包处理引擎可例如被实施为硬件、固件或硬件与固件的组合,但也可至少部分地使用软件来实施。
在由封包处理引擎21处理之后,封包处理引擎21将封包中的至少一些封包作为经部分处理的封包ppp而转发至CPU队列22,从而在此处等待由中央处理器(central processing unit;CPU)进行处理。
CPU队列22可例如包括具有容量的存储器以用于存储一定数量的封包。
CPU 23是可编程主处理器件的一个例子,并可被编程为对经过预处理的封包PPP执行所需处理。应注意,尽管图2中未明确地显示,然而与针对图1所作出的说明类似,某些封包可能不需要由CPU 23来处理,而是可直接由封包处理引擎21输出。其它封包可直接转发至CPU队列22而无需由封包处理引擎21处理。除了处理经过预处理的封包PPP之外,CPU 23也可服务于其他任务,例如控制功能、用户接口功能或类似功能。
封包处理引擎21可被设计成执行其可非常快地执行的有限的任务。在CPU 23具有高的负荷,例如由于输入封包的高速率及/或由于CPU 23必须执行的大量其它任务而造成高的负荷的情况下,这可导致CPU队列22及/或CPU 23超负荷。
CPU 23可利用负荷通知ln将CPU 23的负荷通知封包处理引擎21。例如,CPU负荷可分类为三个区,其中一个是具有低负荷或最小负荷的第一区(为便于解释,可被可视化为“绿色”),所述第一区指示CPU仅具有轻的负荷。第二区可指示中等CPU负荷(为便于解释,可被称为“黄色”负荷)。第三区指示CPU的高负荷(例如超过80%的负荷或超过90%的负荷)且为便于例示,可被称为“红色”负荷。CPU 23可定期地、不定期地、在一定数量的封包之后、在每一个封包之后或根据任何其他通知方案而将CPU 23的负荷通知封包处理引擎21。
应注意,分类成三个不同的负荷区仅用作一个例子,且可使用任何数量的负荷区,例如仅有两个负荷区或多于三个负荷区。在某些实施例中,例如也可使用CPU负荷的百分比来通知所述负荷。
根据负荷通知而定,封包处理引擎21可根据所接收封包的优先权而丢弃某些所接收的封包。例如,封包可分类为三个不同的优先权(低、中、及高),然而在其它实施例中,也可使用任何其它数量的不同优先权。利用以上给出的例子,例如在其中CPU负荷是“绿色”的实施例中,所有优先权的封包均可由封包处理引擎21来处理并作为经过预处理的封包而转发至CPU队列22。在CPU负荷是“黄色”的情况下,封包处理引擎21可例如舍弃具有低优先权的封包而仅处理具有中等优先权及高优先权的封包,并且将这些封包作为经过预处理的封包PPP而转发至CPU队列22。在CPU负荷是“红色”的情况下,封包处理引擎21可舍弃具有低优先权及中等优先权的封包而仅处理具有高优先权的封包,并且将具有高优先权的封包作为经过预处理的封包而转发至CPU队列22。
在某些实施例中,封包处理引擎21可包括分类引擎24以对输入封包di指派优先权。在其它实施例中,可在输入封包pi自身中(例如,在其信头中)标记优先权。可例如根据封包的类型指派优先权。
例如,可对能实现电话服务的实时封包(如网络电话(voice over IP;VoIP)封包)指派高优先权。可对其它实时封包(如视频流封包)指派高优先权或中等优先权。可对不是实时封包的封包(例如,只是与下载文件有关的封包)指派低优先权。这种封包可被舍弃或稍后重新发送,此可能会延长下载的持续时间,但不会干扰例如使用网络电话进行的电话会话。此外或作为另外一种选择,也可例如根据对封包发送方或接收方所指派的服务品质(quality of service;QoS)类别来指派优先权。例如,某些通信服务的用户可具有价格更高的服务合同,且可对由此种用户发送或发送到此种用户的封包指派高于由服务合同价格较低的用户发送或发送到服务合同价格较低的用户的封包的优先权。也可使用其它分类准则。
在某些实施例中,封包处理引擎21可在封包被舍弃时通知封包的发送方。在其它实施例中,此外或作为另外一种选择,封包处理引擎或SoC 20的任何其它组件可向发送方发出对封包处理的确认。
尽管在图2中使用封包作为例子,然而在其它实施例中,也可使用其它类型的数据单元(如信元、符号或帧)。
接着,参见图3及图4,将描述根据某些实施例的例示性方法。尽管所述方法将被描述为一系列动作或事件,然而这些动作或事件的顺序不应被视为限制性的。相反,在其它实施例中,所述顺序可不同于所示及/或所述顺序,可重复(例如,周期性地或非周期性地)执行各种动作或事件,可与其它动作或事件(包括未明确描述的动作或事件)并行地执行某些动作或事件,可省略某些动作或事件,及/或可提供额外的动作或事件。
所述方法可使用图1或图2的装置来实施,但也可使用其它装置或器件来实施。
现在转向图3,在图3所示实施例中,在30处,所述方法包括在辅助处理器件处接收数据。所述数据可以是欲处理的任何种类的数据,例如,通信系统中所使用的封包化数据。
此外,在31处,所述方法包括在辅助处理器件处接收关于主处理器件的负荷的信息。在某些实施例中,辅助处理器件及主处理器件可参照图1所述来实施。
在32处,根据关于负荷的信息而定,辅助处理器件舍弃所接收的数据或预处理所接收数据。例如,当所述信息指示主处理器件具有低负荷时,可由辅助处理器件对所有数据进行预处理。在所述信息指示主处理器件具有高负荷的情况下,可仅对具有高优先权的数据进行预处理,其它数据则可舍弃。在其它实施例中,可使用其它准则。
在33处,将在32处预处理的数据转发至主处理器件以进一步处理。其它数据可能不需要进一步处理而是直接输出。应注意,在其它实施例中,可在辅助处理器件处对所有数据至少部分地进行预处理,例如以确定数据的优先权。在33处进行转发之前,可接着作出是否要舍弃数据的决定。例如,当信息指示主处理器件具有低负荷时,可将所有数据转发至主处理器件。在所述信息指示主处理器件具有高负荷的情况下,可仅转发具有高优先权的数据,其它数据则可舍弃。在其它实施例中,可使用其它准则。
参见图4,现在将描述根据另一实施例的方法。对于图4所示方法,为例示起见,将假设封包作为数据的例子进行处理。在其它实施例中,可处理其它种类的数据,例如,信元或帧。
在图4所示实施例中,在40处,封包处理引擎(例如图2所示封包处理引擎21或任何其它封包处理引擎)接收封包。在41处,封包处理引擎还接收关于中央处理器(CPU)的负荷的信息。在某些实施例中,可针对在40处所接收的每一个封包,在41处执行接收CPU负荷的步骤。在其它实施例中,可定期地或不定期地执行接收CPU负荷的步骤。例如,在某些实施例中,CPU可仅在负荷改变时发送关于CPU负荷的信息。
在42处,可由封包处理引擎对封包进行预处理。封包的预处理可包括封包预处理引擎被设计用于执行的任何任务,例如对封包进行循环冗余校验、信头提取或与处理有关的任何其它动作(例如封包的路由或转发)。可选地,在43处还确定封包的优先权。例如,封包处理引擎可根据封包中数据的类型(实时数据、非实时数据、语音数据、视频数据等)或封包发送方及/或接收方所要求的服务品质(QoS)来确定封包的优先权。在其它实施例中,封包自身可包括对其优先权的指示符,所述指示符可例如在封包发送方处添加。在这种情况下,可能不需要在封包处理引擎处对优先权进行另外确定。
在44处,封包处理引擎将检查在41处所接收的CPU负荷情况下,封包的优先权是否足以使CPU处理所述封包。例如,当CPU负荷低时,可处理所有封包而不管其优先权如何,并在45处将封包转发至CPU队列。当例如CPU负荷高时,封包处理引擎在45处可仅将具有高优先权的封包转发至CPU,具有低优先权的封包则可在46处被舍弃。在中等CPU负荷情况下,例如可在46处舍弃具有低优先权的封包,且封包处理引擎可将具有高优先权或中等优先权的封包在45处转发至CPU队列。
尽管在图4所示实施例中,可在42处对每一个封包进行预处理,然而在其它实施例中,所述预处理可全部或部分地在44与45之间进行,即在某些实施例中封包处理引擎可仅对那些根据其优先权及CPU负荷,接着将被转发至CPU队列的封包进行预处理。否则,这些封包可被舍弃而无需进行预处理。
可使用其它方法,例如使用只有两个优先等级的方法。在其它实施例中,可对封包使用多于三个负荷等级(例如,以百分比形式给出的负荷)及/或多于两个优先等级。在其它实施例中,可使用除封包之外的其它数据单元,例如信元。
上述实施例仅用作例示性例子而不应被视为限制性的。