重定向表的配置转让专利

申请号 : CN200580006718.0

文献号 : CN1926827B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : L·康奈特

申请人 : 英特尔公司

摘要 :

在某些实施例中,确定具有第一组条目的第一重定向表中的冲突条目的数量,其中所述第一组条目能被映射到第二重定向表的第二组条目。基于第一重定向表中冲突条目的数量将第一组条目映射到第二组条目。

权利要求 :

1.一种重定向方法,包括:

确定具有第一组条目的软件重定向表中的冲突条目的数量,其中所述第一组条目能被映射到硬件重定向表的第二组条目;以及基于所述软件重定向表中冲突条目的数量将所述第一组条目映射到所述第二组条目,其中如果能被映射到所述硬件重定向表的一个条目的软件重定向表中的至少两个条目指示不同的接收队列,则引起冲突条目,所述方法还包括:(a)确定所述软件重定向表中的第一组条目的成员项是否多于所述硬件重定向表中的第二组条目,其中响应于确定所述软件重定向表中的第一组条目具有多于所述硬件重定向表中的第二组条目的成员项,确定所述冲突条目的数量;以及(b)响应于确定所述冲突条目的数量少于阈值,指示与冲突条目相关联的分组将被引导到一个接收队列。

2.如权利要求1所述的方法,其特征在于,还包括:

在所有处理器之中分配所述一个接收队列中的分组以用于处理;以及在不同的处理器中处理其它接收队列中的分组。

3.如权利要求1所述的方法,其特征在于,还包括:

响应于确定冲突条目的数量不少于所述阈值,指示所有分组将被引导到单个接收队列。

4.如权利要求3所述的方法,其特征在于,还包括:

以软件处理接收方缩放,其中处理接收方缩放还包括创建虚拟队列并经由设备驱动器将延期的过程调用排队到相应的处理器。

5.如权利要求1所述的方法,其特征在于,还包括:

响应于确定所述软件重定向表中的第一组条目的成员项不多于所述硬件重定向表中的第二组条目,根据所述软件重定向表编程所述硬件重定向表。

6.如权利要求1所述的方法,其特征在于,确定和映射由具有多个处理器的计算平台中的设备驱动器执行。

7.如权利要求1所述的方法,其特征在于,使所述软件重定向表与支持接收方缩放的操作系统相关联,其中所述硬件重定向表在与具有多个处理器的计算平台相耦合的硬件设备中实现,且其中所述硬件重定向表是固定尺寸的。

8.一种重定向设备,包括:

用于确定具有第一组条目的软件重定向表中的冲突条目的数量的装置,其中所述第一组条目能被映射到硬件重定向表的第二组条目;以及用于基于所述软件重定向表中冲突条目的数量将所述第一组条目映射到所述第二组条目的装置,其中如果能被映射到所述硬件重定向表的一个条目的软件重定向表中的至少两个条目指示不同的接收队列,则引起冲突条目,其中所述设备还包括:用于确定所述软件重定向表中的第一组条目的成员项是否多于所述硬件重定向表中的第二组条目的装置,其中响应于确定所述软件重定向表中的第一组条目具有多于所述硬件重定向表中的第二组条目的成员项,确定所述冲突条目的数量;以及响应于确定所述冲突条目的数量少于阈值,用于指示与冲突条目相关联的分组将被引导到一个接收队列的装置。

9.如权利要求8所述的设备,其特征在于,还包括:

用于在所有处理器之中分配所述一个接收队列中的分组以用于处理的装置;以及用于在不同的处理器中处理其它接收队列中的分组的装置。

10.如权利要求8所述的设备,其特征在于,还包括:

响应于确定冲突条目的数量不少于所述阈值,用于指示所有分组将被引导到单个接收队列的装置。

11.如权利要求10所述的设备,其特征在于,还包括:用于通过创建虚拟队列处理接收方缩放的装置,其中设备驱动器能将与所述虚拟队列相关联的延期的过程调用排队到相应的处理器。

12.如权利要求8所述的设备,其特征在于,还包括:

响应于确定所述软件重定向表中的第一组条目的成员项不多于所述硬件重定向表中的第二组条目,用于根据所述软件重定向表编程所述硬件重定向表的装置。

13.如权利要求8所述的设备,其特征在于,冲突条目数量的确定和映射第一组条目由具有多个处理器的计算平台中的设备驱动器执行。

14.如权利要求8所述的设备,其特征在于,使所述软件重定向表与支持接收方缩放的操作系统相关联,其中所述硬件重定向表在所述网络接口中实现,且其中所述硬件重定向表是固定尺寸的。

说明书 :

重定向表的配置

背景技术

[0001] 接收方缩放(RSS)是操作系统中的一项特点,它允许支持RSS的网络适配器引导某些传输控制协议/网际协议(TCP/IP)流的分组在指定的中央处理单元(CPU)上进行处理从而提升具有多个处理器的计算平台上的网络处理能力。TCP/IP协议的进一步细节在为Defense Advanced Projects Research Agency(RFC793,1981年9月出版)准备的标题为“Transmission Control Protocol:DARPAInternet Program Protocol Specification”的出版物中描述。RSS特点缩放跨多个处理器的接收通信量,以避免将接收带宽限制于单个处理器的处理性能。
[0002] 为将分组引导到合适的CPU,定义散列函数,它将流中包含的首部信息作为输入,并输出用于表示其上应通过设备驱动器和TCP/IP堆栈处理流的CPU的散列值。散列函数在每个输入分组首部中的特定连接信息上运行。基于该散列值,将每一分组分配给重定向表中的某一桶。重定向表中具有固定数量的桶,且每个桶可指向特定的处理器。重定向表的内容从主堆栈下推。响应于被分类到某一桶的输入分组,可将该输入分组引导到与该桶相关联的处理器。

附图说明

[0003] 现在参考附图,其中相同的标号贯穿始终表示相应的部分:
[0004] 图1示出了根据某些实施例的计算环境。
[0005] 图2示出了根据某些实施例的显示分组如何在多个处理器之间分配的框图。
[0006] 图3示出了根据某些实施例的显示设备驱动器如何将软件重定向表映射到硬件重定向表的框图。
[0007] 图4示出了根据某些实施例的能在计算环境中执行的设备驱动器中实现的第一操作。
[0008] 图5示出了根据某些实施例的能在计算环境中执行的设备驱动器中实现的第二操作。
[0009] 图6示出了根据某些实施例的将分组的示例性映射提供给处理器的框图。
[0010] 图7示出了根据某些实施例的计算环境的某些元件的计算机架构的框图。

具体实施方式

[0011] 在以下描述中,参考附图,它构成说明书的一部分并示出了若干实施例。应理解,可使用其它实施例并可进行结构和操作变化。
[0012] 图1示出了根据某些实施例的计算环境100。计算平台102经由网络接口硬件106耦合到网络104。计算平台102可通过网络104从其它设备(未示出)发送和接收分组。
[0013] 计算平台102可以是个人计算机、工作站、服务器、大型机、手持计算机、掌上计算机、膝上计算机、电话设备、网络计算机、刀片计算机或任何其它计算平台。网络104可包括因特网、内联网、局域网(LAN)、存储区域网(SAN)、广域网(WAN)、无线网络等。网络104可以是一个或多个较大网络的一部分或者可以是独立网络或者可以由多个互连网络构成。网络接口硬件106可在网络106上发送和接收分组。在某些实施例中,网络接口硬件106可包括网络适配器,诸如TCP/IP卸载引擎(TOE)适配器。
[0014] 在某些实施例中,计算平台102可包括多个处理器108a...108n、操作系统110、设备驱动器112、软件重定向表114和多个接收队列116a...116m。
[0015] 多个处理器108a...108n可包括复杂指令集计算机(CISC)或精简指令集计算机* *(RISC)处理器或任何其它处理器。操作系统110可包括MICROSOFT WINDOW 操作系统、UNIX操作系统或其它操作系统。设备驱动器112可以是用于网络接口硬件104的设备驱动器。
例如,在某些实施例中,如果网络接口硬件104是网络适配器,则设备驱动器112可以是用于该网络适配器的设备驱动器。
[0016] 软件重定向表114是包括多个条目的数据结构,其中每一条目都可用于指向多个处理器108a...108n之一,其中可以处理接收到的分组。在某些实施例中,软件重定向表114可以是操作系统110的一部分或者可以与操作系统110相关联。
[0017] 接收队列116a...116m是设备驱动器112所管理的数据结构。接收队列116a...116m可包括网络接口硬件106接收到的分组,它们被排队用于由处理器
108a...108n处理。
[0018] 网络接口硬件106可包括硬件重定向表118和硬件散列计算器120。在某些实施例中,硬件重定向表118可在网络接口硬件106内的硬件中实现,且硬件重定向表中的每一条目可用于指向其中可处理接收到的分组的多个处理器108a...108n之一。
[0019] 硬件散列计算器120可基于接收到的分组的首部计算散列函数,其中散列函数映射到硬件重定向表118的条目。在某些实施例中,接收到的分组可由对应于通过散列函数映射到的条目的处理器处理。
[0020] 在某些实施例中,软件重定向表114可具有数量不同于硬件重定向表118的条目。设备驱动器112将软件重定向表114映射到硬件重定向表118并根据该映射将接收到的分组引导到处理器108a...108n。
[0021] 图2示出了根据计算环境100中实现的某些示例性实施例的显示分组如何在多个处理器之中分配的框图。
[0022] 网络接口硬件106从网络104接收分组“i”200。在某些实施例中,硬件散列计算器120将散列函数应用于分组“i”200的特定首部以计算散列202。散列202可用于进入重定向表206的条目的索引204。重定向表206基于散列202索引204入重定向表206中的条目号208将一分组映射到接收队列210。例如,在某些实施例中,散列202可索引204入条目号0000001(标号212),它指向接收队列“1”。在这种情况中,分组“i”214(它与分组“i”200相同)被排队到接收队列“1”216b。
[0023] 在图2所示的示例性实施例中,有四个接收队列216a...216d、四个延期过程调用(DPC)218a...218d以及四个处理器220a...220m。当网络接口硬件106生成一中断时,设备驱动器112的中断服务例程可由操作系统110调用。设备驱动器112的中断服务例程可声明中断,并调度一DPC。当开始时,DPC可处理网络接口硬件106接收到的分组,诸如分组“i”200。在某些实施例中,DPC用于处理与一个处理器相对应的分组,而接收队列可具有与接收队列相关联的多个DPC。在图2所示的示例性实施例中,具有每接收队列一个DPC。例如,使接收队列“1”216b与在处理器220b中处理分组“i”214的DPC218b相关联。
[0024] 在图2所示的示例性实施例中,分组“i”200、214被映射到接收队列“1”(标号216b)。与接收队列“1”(标号216b)相关联的DPC218b处理处理器220b中的分组200、
214。
[0025] 图3示出了根据某些实施例的显示设备驱动器112如何将软件重定向表114映射到硬件重定向表118的框图。
[0026] 在某些实施例中,操作系统110可不对软件重定向表114中的条目数设置任何特定限制。与软件重定向表114不同,硬件重定向表118中的条目数可进行限制并可以是固定大小。因此,在某些实施例中,可以有与每个硬件表条目相对应的多个软件表条目。结果,引起将被映射到硬件表条目的软件表条目之中的冲突。
[0027] 例如,如果软件重定向表114具有两倍于硬件重定向表118的条目数量,则对于一条目号x存在冲突,其中对应于条目号x的接收队列和与条目号x+N相对应的接收队列不同,其中N是硬件重定向表118中的条目数。当多个软件表条目之中有冲突时,设备驱动器112需要确定在相应的硬件表条目中使用哪个处理器。在一种方法中,启发可用于猜测在冲突情况下要使用的处理器。在最差情况中,使用启发可使得每个接收队列潜在地包含前往每个处理器的分组。因此,每一接收队列需要具有与处理器数量相对应的DPC。如果有四个处理器和四个接收队列,则在这种基于启发的实施例中十六个DPC会是必要的。由于大量DPC的创建和使用生成的开销会降低系统性能。
[0028] 在某些实施例中,设备驱动器112具备阈值300。阈值300可以是可编程变量或常数。在某些实施例中,设备驱动器112确定软件重定向表114中的冲突数量并基于冲突数量将软件重定向表114的条目映射到硬件重定向表118的条目。
[0029] 图4示出了根据某些实施例的能在计算环境100中执行的设备驱动器112中实现的第一操作。设备驱动器112基于软件重定向表条目中的冲突数量将软件重定向表114的条目映射到硬件重定向表118。
[0030] 控制开始于框400,其中设备驱动器112确定具有第一组条目的第一重定向表114中冲突条目的数量,其中第一组条目能映射到第二重定向表118的第二组条目。例如,在某些示例性实施例中,第一重定向表114可以是软件重定向表114且第二重定向表118可以是硬件重定向表118。此外,在某些示例性实施例中,第一重定向表114中的条目数可超过第二重定向表118中的条目数。因此,在某些示例性实施例中,当第一重定向表114的一个以上的条目能被映射到第二重定向表118的单个条目时,可以存在冲突条目。
[0031] 设备驱动器基于第一重定向表114中冲突条目的数量将第,一组条目映射到第二组条目(框402处)。在某些示例性实施例中,如果冲突条目数量超过阈值300,则与冲突条目的数量不超过阈值的情况相比不同地执行映射。
[0032] 在某些示例性实施例中,设备驱动器112可基于软件重定向表114中冲突条目的数量将较多数量的软件重定向表114的条目映射到较少数量的硬件重定向表118的条目。
[0033] 图5示出了根据某些实施例的能在计算环境100中执行的设备驱动器112中实现的第二操作。在某些示例性实施例中,能除了图4所示的第一操作之外执行图5所示的第二操作,其中第一重定向表114是软件重定向表114且第二重定向表118是硬件重定向表118。图5示出了其中设备驱动器112基于软件重定向表条目中的冲突数量将软件重定向表114的条目映射到硬件重定向表118的操作。
[0034] 控制开始于框500处,其中设备驱动器112确定软件重定向表114是否具有比硬件重定向表118更多的条目,即软件重定向表114中的第一组条目是否具有超过硬件重定向表118中的第二组条目的成员项。对于接收方缩放,每一条目被预计对应于其中设备驱动器112被预计处理一分组的一接收队列。例如,图2中,条目号0000001所标注的条目(标号212)对应于接收队列“1”。设备驱动器112被预计将软件重定向表114的条目映射到硬件重定向表118的条目。在某些实施例中,操作系统110可以将软件重定向表114提供到用于包括硬件重定向表118的网络接口硬件106的设备驱动器112。
[0035] 响应于确定软件重定向表114的条目多于硬件重定向表118,设备驱动器114确定(框502处)软件重定向表114中的冲突条目数,其中如果能被映射到硬件重定向表的一个条目的软件重定向表的至少两个条目指示不同的接收队列,则引起冲突。
[0036] 设备驱动器112确定(框504处)冲突数量是否小于阈值300。如果是,则设备驱动器112指示(框506处)与冲突条目相关联的分组将被引导到一个接收队列。设备驱
动器112在所有处理器之中分配(框508处)一个接收队列中的分组以用于处理并在不同
的处理器中处理其它接收队列中的分组。例如,在某些实施例中,如果有标号为“0”、“1”、“2”、“3”的四个处理器以及标号为“0”、“1”、“2”、“3”的四个接收队列,则与冲突条目相关联的所有分组被引导到接收队列“0”。在此情况中,队列“1”、“2”、“3”可指示要在处理器“1”、“2”、“3”上分别处理的分组,而接收队列“0”可指示要在处理器“0”、“1”、“2”、“3”之中分配用于处理的分组。因此,在某些实施例中,可能需要总共七个DPC,其中接收队列“0”需要四个DPC且其它接收队列中的每一个都需要一个DPC。因此,当与前述基于启发的实施例相比,DPC的总数从十六个减少到七个。
[0037] 如果确定(框504处)冲突条目的数量不小于阈值300,则设备驱动器112指示(框510处)所有分组将被引导到单个接收队列。当冲突条目的数量不小于阈值时,可能存在较高数量的冲突条目。在这种情况中,如果设备驱动器112指示与冲突条目相关联的分组将被引导到一个接收队列,则设备驱动器112仍会需要处理其它接收队列。在较高数量的冲突条目的情况下,多数分组可被引导到一个接收队列。因此,通过仅具有单个接收队列并将所有分组引导到该单个接收队列,可以减小处理开销。在这种情况中,在某些示例性实施例中,四个处理器和单个接收队列可仅需要四个DPC。
[0038] 设备驱动器112处理(框512处)软件中的接收方缩放,其中处理接收方缩放还包括创建虚拟队列和经由设备驱动器112将DPC排队到相应的处理器。
[0039] 如果设备驱动器确定(框500处)软件重定向表114的条目不超过硬件重定向表118,则设备驱动器112根据软件重定向表114编程硬件重定向表118。对于硬件重定向表
118的每个条目,使用软件重定向表114中的相应值。这种情况中,如果有四个处理器,则四个DPC是必要的。
[0040] 因此,图5描述了一个实施例,其中设备驱动器112根据冲突数量不同地映射软件重定向表114的条目以生成硬件重定向表118的条目。在某些实施例中,确定软件重定向表114是否具有更多条目、确定冲突数量和指示由具有多个处理器108a...108n的计算平台102中的设备驱动器112执行。在某些实施例中,硬件重定向表118在与具有多个处理器108a...108n的计算平台102相耦合的硬件设备中实现,其中硬件重定向表118是固定大小的,且其中与操作系统110相关联的软件重定向表114在计算平台102中实现。
[0041] 在可选实施例中,可将阈值300与同图5所述的那些不同的情况进行比较且可以不同地计算冲突条目的数量。
[0042] 图6示出了根据某些实施例的将分组的示例性映射提供到可在计算环境100中实现的处理器的框图。
[0043] 图6中,示出了四个接收队列600a...600d。接收到的分组可在四个处理器604a...604d之中进行分配。如果软件重定向表114的条目超过硬件重定向表118,且冲突数量少于阈值300,则在图6所示的示例性实施例中,设备驱动器112指示与冲突条目相关联的分组将被引导到一个接收队列600a。因此,具有与接收队列600a相关联的四个DPC
602a...602d,而对于其它接收队列600b...600d的每一个,有相应的DPC 602e...602g。被发送到接收队列600b的所有分组在处理器604b中进行处理,被发送到接收队列600c的所有分组在处理器604c中进行处理,被发送到接收队列600d的所有分组在处理器604d中进行处理,且被发送到接收队列600a的所有分组在四个处理器604a...604d之中进行分配。
[0044] 某些实施例分析软件和硬件重定向表的特征并基于这些特征将软件重定向表114映射到硬件重定向表118。在某些实施例中,控制所需的DPC的数量,同时在处理器之中分配分组的处理。在冲突数量超过或等于阈值的某些其它实施例中,通过设备驱动器112并通过将所有分组引导到单个接收队列而在软件中执行接收方缩放。在这种情况中,DPC的数量可等于处理器的数量。在某些实施例中控制与DPC的创建相关联的开销。
[0045] 所述的技术被实现为方法、装置或涉及软件、固件、微码、硬件和/或其任何组合的制品。这里使用的术语“制品”表示电路(例如,集成电路芯片、可编程门阵列(PGA)、ASIC等)中实现的程序指令、代码和/或逻辑和/或计算机可读介质(例如,诸如硬盘驱动器、软盘、磁带的磁性存储介质)、光学存储(例如CD-ROM、DVD-ROM、光盘等)、易失性和非易失性存储器设备(例如,电可擦可编程只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、固件、可编程逻辑等)。计算机可读介质中的代码可由诸如处理器的机器访问并执行。在某些实施例中,其中构成实施例的代码可进一步通过传输介质或经由网络从文件服务器进行访问。在这种情况中,其中实现代码的制品可包括传输介质,诸如网络传输线、无线传输媒体、通过空间传播的信号、无线电波、红外线信号等。当然,本领域的熟练技术人员将理解,可进行许多修改而不背离实施例的范围,且制品可包括本领域已知的任何信息承载介质。例如,制品包括其中存储指令的存储介质,这些指令在由机器执行时引起操作的执行。此外,包括代码的程序逻辑可按硬件、软件、固件或其许多组合实现。
[0046] 图7示出了其中可实现某些实施例的计算机架构的框图。图7示出了计算平台102和网络接口硬件106的一个实施例。计算平台102和网络接口硬件106可实现具有一
个或多个处理器702、存储器704(例如,易失性存储器设备)和存储设备706的计算机架构
700。在计算平台102和网络接口硬件106中可以找到并非所有计算机架构700的元件。存储设备706可包括非易失性存储器装置(例如,EEPROM,ROM,PROM,RAM,DRAM,SRAM,闪存、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带驱动器等。存储设备706可包括内部存储设备、附着式存储设备和/或网络可访问存储设备。存储设备706中的程序可载入存储器704并由一个或多个处理器702按本领域已知的方式执行。该架构还可包括诸如网络接口硬件106的网卡708,以获得与网络的通信。该架构还可包括诸如键盘、触摸屏、笔、声音激活输入等的至少一个输入设备710以及诸如显示设备、扬声器、打印机等的至少一个输出设备712。
[0047] 某些实施例可在包括视频控制器以呈现信息在与包括网络接口硬件106的计算机系统相耦合的监视器上进行显示的计算机系统中实现,其中该计算机系统可包括台式计算机、工作站、服务器、大型机、膝上计算机、手持计算机等。操作系统能由计算机系统执行,且视频控制器可通过与操作系统的交互呈现图形输出。或者,一些实施例可在不包括视频控制器的计算机系统中实现,诸如交换机、路由器等。此外,在某些实施例中,设备可包含在与计算机系统相耦合的卡中或者在计算机系统的主板上。
[0048] 图4和5的至少某些操作可并行和顺序地执行。在可选实施例中,某些操作可按不同的顺序执行、修改或去除。在可选实施例中,图4和5的操作可在网络接口硬件106中实现。此外,出于说明目的,在分开模块中描述了许多软件和硬件组件。这些组件可集成入更少数量的组件或者分成更多数量的组件。此外,所述的特定组件执行的某些操作可由其它组件执行。
[0049] 图1-7中所示或引用的数据结构和组件被描述为具有特定类型的信息。在可选实施例中,数据结构和组件可不同地组成结构并具有与附图中所示或所引用相比更少、更多或不同领域或不同功能。
[0050] 因此,已为说明和描述的目的呈现了实施例的以上描述。它不被认为是穷尽的或者将实施例限制于所公开的精确形式。根据以上教示,许多修改和变型都是可能的。
[0051] *MICROSOFT WINDOWS是微软公司的商标。
[0052] *UNIX是Open Group的商标。