CN101159765B - 网络接口方法、装置和*** - Google Patents
网络接口方法、装置和*** Download PDFInfo
- Publication number
- CN101159765B CN101159765B CN200610172499XA CN200610172499A CN101159765B CN 101159765 B CN101159765 B CN 101159765B CN 200610172499X A CN200610172499X A CN 200610172499XA CN 200610172499 A CN200610172499 A CN 200610172499A CN 101159765 B CN101159765 B CN 101159765B
- Authority
- CN
- China
- Prior art keywords
- network
- target core
- descriptor
- network protocol
- network interface
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/325—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
描述了用来实现网络接口的技术。网络接口可通信耦合到通用核或硬件线程。可分配由通用核执行的各种操作,由此来至少提供网络接口的灵活操作。通用核能够向其它核心或硬件线程发出处理器间中断以请求处理。其它核心或硬件线程通过执行一个或多个中断服务例程来响应该处理器间中断。其它核心或硬件线程能够处理由网络接口接收的网络协议单元。
Description
技术领域
这里公开的主题涉及实现网络接口的技术。
背景技术
在通信***中使用的协议在不断发展。网络接口具有传送信号到网络并从网络接收信号的能力。所期望的是,提供具有灵活性的网络接口,其至少被修改来支持发展的协议。
发明内容
本发明涉及一种网络协议单元处理装置,包括:
至少一个网络接口;
至少一个目标核;
通信耦合到至少一个网络接口的中心核,其中中心核响应于来自网络接口的中断,选择性地向一个或多个目标核发出处理器间中断(IPI);和
通信耦合到中心核和至少一个网络接口的存储设备。
其中至少一个目标核使用逻辑是要响应于接收IPI而选择性地执行中断服务例程。
其中至少一个网络接口能够执行从包括下列操作的组中选择的至少一个操作:从物理链路接收网络协议单元,将所接收的网络协议单元的部分复制到存储设备中,和向中心核唤起中断。
其中中心核能够执行从包括下列操作的组中选择的至少一个操作:响应于从至少一个网络接口接收中断而执行中断服务例程,从初级描述符环读取描述符,执行任何用户提供的代码来修改输入的网络协议单元,执行任何用户提供的代码来分类输入的网络协议单元,基于用户指定的分类来向其次级描述符环分配目标核和描述符,将描述符从初级描述符环复制到适当的次级描述符环,和从初级描述符环移除描述符。
上述网络协议单元处理装置还包括:
与至少一个网络接口关联的初级描述符环;和
与至少一个目标核关联的次级描述符环。
上述网络协议单元处理装置,还包括:
用于提供初级描述符环中的描述符以指示一个或多个网络协议单元进行处理的逻辑,其中在存储设备中存储一个或多个网络协议单元的部分;
用于分配目标核以便处理一个或多个网络协议单元的逻辑;和
用于提供将描述符从初级描述符环复制到与所分配的至少一个目标核关联的次级描述符环的逻辑。
其中存储设备用于存储所接收的网络协议单元的有效负载;和
所分配的至少一个目标核用于响应于与所分配的至少一个目标核关联的次级描述符环中的描述符请求处理所接收的网络协议单元,而将有效负载从存储设备复制到与所分配的至少一个目标核关联的存储器。
其中用于分配的逻辑用来提供接收方扩展。
其中至少一个目标核能够执行从包括下列操作的组中选择的至少一个操作:数据链路协议处理;网络层协议处理;传输层协议处理;安排等待来自网络的数据的应用的操作;将网络协议单元路由到另一位置;过滤不想要的网络协议单元;和为其它使用释放存储网络协议单元的存储器。
本发明涉及一种用于实现网络协议单元处理***的方法,包括:
从网络接口接收网络协议单元;
向中心核发出设备中断以通知所述核接收了网络协议单元;
选择目标核来处理所接收的网络协议单元;和
向所选择的目标核选择性地发出处理器间中断以请求处理网络协议单元。
其中选择目标核包括使用接收方扩展技术。
所述方法还包括:
将网络协议单元存储在与中心核关联的主存储器中;
提供在初级描述符环中识别所接收的网络协议单元的描述符;
将该描述符提供给与所选目标核关联的次级描述符环。
所述方法还包括:
所选目标核处理描述符;和
所选目标核请求将网络协议单元的部分复制到与所选目标核关联的存储器中。
其中中心核能够执行从包括下列操作的组中选择的至少一个操作:响应于从至少一个网络接口接收中断而执行中断服务例程;从初级描述符环读取描述符;执行任何用户提供的代码来修改输入的网络协议单元;执行任何用户提供的代码来分类输入的网络协议单元;基于用户指定的分类来向其次级描述符环分配目标核和描述符;将描述符从初级描述符环复制到适当的次级描述符环;和从初级描述符环移除描述符。
其中目标核能够执行从包括下列操作的组中选择的至少一个操作:数据链路协议处理;网络层协议处理;传输层协议处理;安排等待来自网络的数据的应用的操作;将网络协议单元路由到另一位置;过滤不想要的网络协议单元;和为其它使用释放存储网络协议单元的存储器。
其中通信耦合到至少一个网络接口的中心核对于一个或多个目标核呈现为单个逻辑设备。
本发明涉及一种网络协议单元处理***,包括:
网络介质;
通信耦合到网络介质的网络接口;
主机***,包括:
至少一个网络接口;
至少一个目标核;
通信耦合到至少一个网络接口的中心核,其中中心核响应于来自网络接口的中断,选择性地向一个或多个目标核发出处理器间中断(IPI);和
通信耦合到中心核和至少一个网络接口的存储设备。
上述***还包括:
与至少一个网络接口关联的初级描述符环;
与至少一个目标核关联的次级描述符环;
用于提供初级描述符环中的描述符以指示一个或多个网络协议单元进行处理的逻辑,其中在存储设备中存储一个或多个网络协议单元的部分;
用于分配至少一个目标核以便处理一个或多个网络协议单元的逻辑;和
用于提供将描述符从初级描述符环复制到与所分配的至少一个目标核关联的次级描述符环的逻辑。
其中存储设备用于存储所接收的网络协议单元的有效负载;和
所分配的至少一个目标核用于响应于与所分配的至少一个目标核关联的次级描述符环中的描述符请求处理所接收的网络协议单元,而将有效负载从存储设备复制到与所分配的至少一个目标核关联的存储器。
其中存储设备包括与至少一个目标核关联的缓冲器,并且其中每个缓冲器用于存储要由关联的目标核处理的网络协议单元的部分。
附图说明
在附图中通过举例而不是通过限制来说明本发明的实施例,其中相似的参考标记指代近似的元件。
图1描述了根据本发明的一些实施例的示例***实施例。
图2和图3描述了可在本发明的一些实施例中至少用来提供网络接口与一个或多个目标核之间的通信的示例元件。
图4描述了可在本发明的一些实施例中使用的示例元件。
图5描述了可在本发明的一些实施例中用来支持通过多个目标核来处理网络协议单元的示例元件。
图6描述了可在本发明的一些实施例中使用的示例过程。
具体实施方式
说明书中对“一个实施例”或“一实施例”的引用意味着按照该实施例的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在说明书中各种场合出现短语“在一个实施例中”或“一实施例”不是必然都指代相同的实施例。此外,特定特征、结构或特性可组合在一个或多个实施例中。
网络接口设备的发展需求可要求网络接口设备的可编程性或者用另一满足该需求的设备来代替该设备。新的能力可用软件来实现,但在特定的情况下优选的是,比如用传统驱动程序或虚拟化来使设备驱动程序的变化最小。当前的竞争压力包括将协议特定的优化
添加到高速网络接口,比如传输控制协议(TCP)首部/有效负载分开以及TCP分段卸载。优化通常使网络接口理解分组首部格式和大小。多数典型协议首部的知识通常硬布线在网络接口中,并且在任何一个产品上只支持有限数量的协议。对于网络接口所期望的是,至少要足够的灵活以至于能够被修改用来支持发展的协议,同时最小化设备驱动程序的变化。
图1描述在计算机***100,其是可使用本发明的一些实施例的合适***。计算机***100可包括主机***102、总线116、和网络部件118。
主机***102可包括芯片组105、处理器110-0到110-N、主机存储器112、和存储装置114。芯片组105可在处理器110-0到110-N、主机存储器112、存储装置114、总线116以及图形适配器之间提供互连,图形适配器可用于传输图形和信息以便在显示设备(未示出)上显示。例如,芯片组105可包括存储适配器(未示出),其能够提供与存储装置114的相互通信。例如,存储设配器能够遵从至少下面任何的协议来与存储装置114通信:小型计算机***接口(SCSI)、光纤信道(FC)、和/或串行高级技术配件(S-ATA)。
在一些实施例中,芯片组105可包括数据搬运器逻辑(未示出),其能够执行在主机***102内或在主机***102和网络部件108之间的信息传输。如这里所使用的,“数据搬运器”是指用于将数据从源移动到目的的模块,而不使用比如处理器110-0到110-N的主机处理器的核心处理模块,否则就不使用处理器的循环来执行数据复制或移动操作。通过使用用于数据传输的数据搬运器,处理器从执行数据移动的开销中解放出来,所述开销可能导致主机处理器以慢很多的速度运行。数据搬运器可例如包括直接存储器访问(DMA)引擎。在一些实施例中,数据搬运器可被实现为任何处理器110-0到110-N的一部分,尽管计算机***100的其它部件可包括数据搬运器。在一些实施例中,数据搬运器可实现为芯片组105的一部分。
任何处理器110-0到110-N可被实现为复杂指令集计算机(CISC)或简化指令集计算机(RISC)处理器、硬件线程、或任何其它微处理器或中央处理单元。主存储器112可实现为易失性存储装置,比如但不限于随机访问存储器(RAM)、动态随机访问存储器(DRAM)、或静态RAM(SRAM)。存储装置114可实现为非易失性存储设备,比如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、所附的存储设备、闪速存储器、电池备份的同步DRAM(SDRAM)、和/或可访问网络的存储设备。
总线116可提供至少主机***102和网络部件118以及其它***设备(未示出)之间的互连。总线116可支持串行或并行通信。总线116可支持点到点或点到多点的通信。总线116可至少与以下内容兼容:例如于2004年2月2日在从美国,俄勒冈,波特兰***部件互连(PCI)专门兴趣小组可得到的***部件互连(PCI)本地总线规范,修订本3.0(及其修订)中描述的***部件互连(PCI);在PCI兴趣小组的PCIExpress基础规范,修订本1.0a(及其修订)中描述的PCI Express;从前述的美国,俄勒冈,波特兰PCI专门兴趣小组可得到的PCI-X规范Rev.1.1,2005年3月28日中描述的PCI-x;和/或通用串行总线(USB)(和有关标准)以及其它互连标准。
网络部件118能够遵从至少任何应用协议来提供主机***102和网络120之间的相互通信。网络部件108可利用总线116与主机***102相互通信。在一个实施例中,网络部件118可集成到芯片组105中。“网络部件”可包括在I/O(输入/输出)子***上可处理一个或多个要经过网络发送和/或接收的分组的数字和/或模拟硬件和/或软件的任何组合。在一个实施例中I/O子***可例如包括网络部件卡(NIC),并且网络部件可例如包括用于网络协议的开放***互连(OSI)模型中定义的数据链路层的MAC(多媒体访问控制)。OSI模型由位于1 rue deVarembé,Case postale 56 CH-1211 Geneva 20,Switzerland的国际标准化组织(ISO)定义。
网络120可以是任何网络,比如互联网、内联网、局域网(LAN)、存储区域网(SAN)、广域网(WAN)或无线网络。网络120可利用以太网系标准(在IEEE 802.3和有关的标准中描述)或任何通信标准与网络部件118交换网络协议单元。如这里所使用的,“网络协议单元”可包括具有根据任何协议规范所形成的首部和有效负载部分的分组或帧或其它形式的信息。
一些实施例提供技术利用与网络接口通信耦合的通用核或硬件线程来实现网络接口。网络接口和通用核或硬件线程的组合对于其它核或硬件线程呈现为单个网络接口。与网络接口关联的通用核或硬件线程可向一个或多个其它目标核或目标硬件线程发出处理器间中断(IPI)。当IPI是设备中断时,目标核或目标硬件线程可处理IPI。
图2描述了在本发明的一些实施例中使用的示例元件。中心核204可以是通用核,其足够灵活以至于执行输入/输出流上的多种任务。在一些实施例中,中心核204可以是通用核和/或硬件线程。通用核可以是包含单组物理执行单元的单个处理分组。比如在双核或多核环境中,核可与更多的核共享印模。利用通用核可允许网络接口206能够至少利用软件被修改。在一些实施例中,多个网络接口可以通信耦合到一个或多个中心核。多个网络接口对于其它逻辑呈现为单个逻辑网络接口。硬件线程(也称为逻辑核)可以是物理核的执行单元组的逻辑实例。操作***将硬件线程看作为物理核。每个硬件线程可一次处理单个执行的线程(软件线程)。多个硬件线程因此允许多个软件线程以重叠方式共享(物理)核。为了允许这种共享,核可能复制每个线程的独立状态,包括寄存器组、程序计数器、和页表。
在一些实施例中,尽管不需要任何实施例的特征,但是利用通用核或硬件线程可扩展网络接口的功能以便形成新的逻辑设备。在一些实施例中,尽管不需要任何实施例的特征,但是目标核可将该逻辑设备考虑为硬件,因为目标核不能辨别IPI和设备中断。
在一些实施例中,中心核204可利用PCI、PIC-X或PCI Express兼容总线与网络接口206通信耦合,尽管可使用其它的技术。网络接口206可至少利用中断、消息信令中断、或轮询来与中心核204通信。
在一些实施例中,中心核204可执行任务,诸如但不限于:响应于从网络接口206接收中断而执行中断服务例程;从初级描述符环读取描述符;执行任何用户提供的代码,所述代码可修改或分类输入的网络协议单元;执行任何用户指定的与网络有关的操作;基于用户指定的分类来分配目标核及其次级描述符环;从初级描述符环复制描述符到适当的次级描述符环;和/或从初级描述符环移除描述符。初级和次级描述符环可用来管理由一个或多个目标核接收的网络协议单元的处理。
在一些实施例中,网络接口206可执行任务,诸如但不限于:从物理链路接收网络协议单元;经由数据搬运器的传输将所接收的网络协议单元的部分复制到主存储器中;和/或向中心核204唤起中断。
响应于网络接口206接收网络协议单元,网络接口206将向中心核204提供中断。但是,可由于其它原因提供从网络接口206到中心核204的中断。在一些实施例中,响应于中断,中心核204可利用处理器间中断(IPI)提供中断给目标核(或硬件线程),以请求处理所接收的网络协议单元的部分。由中心核204执行的操作***(OS)部分可编程用于利用一个或多个IPI来中断多个核或硬件线程的组合。接收IPI的核或线程可诸如通过调用中断句柄将IPI作为设备中断来对待。目标核(或线程)可基于其对I/O通信量的判断来选择丢弃、重定向、或合并中断。
一个或多个目标核可执行通常由中心核执行的协议处理任务,包括但不限于:(1)数据链路、网络和传输层协议处理、包括但不限于:(a)确定哪些协议由网络协议单元使用,(b)确定网络协议单元是否遵守协议规范,(c)跟踪网络传送(例如更新TCP序列号)的状态,(d)将响应传送给网络协议单元的发射器(例如发送TCP确认),和/或(e)排列包含在网络协议单元中的数据(例如重组TCP分组中的数据);(2)安排等待来自网络的数据的应用的操作;(3)将网络协议单元路由到另一位置;(4)过滤不想要的网络协议单元,和/或(5)一旦处理完成,就为其它使用释放存储网络协议单元的存储器。
在一些实施例中,利用IPI作为设备中断会使中心核子204自由地为网络接口206实现新的功能,同时降低目标核的设备驱动程序的中断服务例程的变化。因为设备驱动程序通常被装备用来使用ISR,所以可以使用IPI来模拟ISR会更方便。至少可降低设备驱动程序的中断服务例程的变化(例如,重新编码的努力),因为其已经被无缝地修改来服务IPI以及设备中断。
在一些实施例中,中心核204和网络接口206的组合允许网络接口资源对于***资源可用,反之亦然。例如,目标核可通过访问组合所使用的主存储器来完全访问网络接口资源。中心核204和网络接口206的组合不仅可允许完全访问网络接口资源,而且还允许可扩展性(达到由***和平台所定的限制,而不受网络接口206任何实现的限制)。可扩展性可以是将新的特征添加到现有程序同时使现有代码的损坏或变化最小的能力。例如,通过仅将描述符复制到目标核而不复制有效负载到目标核,就可实现可扩展性。网络接口206的现用实现对于其它部件呈现为完全可编程的、资源丰富的网络接口。
图3描述了可在本发明的一些实施例中至少用来提供网络接口与目标核(或硬件线程)之间的通信的示例元件。一个或多个网络接口可生成对底层驱动程序接口(I/F)的中断。底层驱动程序接口接收来自以一个或多个网络接口的中断并提供至少描述所接收网络协议单元在主存储器中的存储位置的描述符。用户添加的功能(UAF)级302从底层驱动程序接口接收描述符。UAF302可确定哪个目标核(或目标硬件线程)将接收IPI并且哪个次级描述符环将接收与所接收的网络协议单元关联的描述符。UAF302可将输入的网络流定向到适当的核或硬件线程以便处理。IPI逻辑304可基于来自UAF302的判断为适当的硬件线程或目标核生成IPI。例如,UAF302可判断哪个次级环和关联的目标核接收每个描述符,并且IPI逻辑304可请求将每个描述符复制到适当次级环。在一些实施例,使用UAF302允许较高层中的功能可更好地被优化。由此,可达到IPI到正确目标核的智能定向。通信耦合到网络接口的通用核(比如但不限于中心核204)可执行任何的底层驱动程序接口、UAF302和IPI逻辑304。
目标核或硬件线程可执行模拟的网络接口ISR306。模拟的网络接口ISR306可响应于从与一个或多个网络接口关联的中心核或线程接收到IPI而操作。例如,模拟的网络接口ISR306可将来自中心核的IPI看待为中断请求。例如,模拟的网络接口ISR306可将IPI看待为中断请求。所有设备的中断请求可映射到中断矢量。每个矢量可被分配给调用中断服务例程(ISR)的函数以处理该中断请求。
在一些实施例中,为了允许设备驱动程序的ISR处理来自另一个核的IPI,设备中断请求可被分配以识别逻辑设备,并且设备驱动程序为这个中断请求动态地分配ISR。因此,至少两种中断及其相应的ISR可在功能上等同于原始设备中断及其ISR,但是IPI现在可作为代理来触发数据处理以代替原始设备中断。
例如,模拟的网络接口ISR306可响应于从与一个或多个网络接口关联的中心核或线程接收IPI,来执行中断服务例程以处理描述符。IPI逻辑304可请求将描述符复制到次级环中。但是,可响应于接收IPI来执行其它操作。模拟的网络接口ISR306可处理描述符,就如同其来自网络接口一样。模拟的网络接口ISR306可提供描述符和数据给上层驱动程序接口(I/F)。上层驱动程序接口可以相同的方式处理描述,就如同其直接来自网络接口一样。上层驱动程序接口可以是到虚拟机迁移(VMM)逻辑或操作***(OS)或其它逻辑的接口。目标核和线程可执行一个或多个应用(如“Apps”所示)。例如,应用可利用在一个或多个网络协议单元中接收的数据。
图4描述了可在本发明的一些实施例中使用的示例元件,用于管理所接收的网络协议单元的处理。每个目标核(或硬件线程)可使用次级描述符环,所述每个目标核能够从与网络接口关联的中心核(或硬件线程)接收IPI。由与网络接口关联的中心核(或硬件线程)执行的逻辑可为次级描述符环提供对于初级描述符环公共的一个或多个描述符。次级描述符环可存储要由关联的目标核处理的描述符。
与每个目标核(或硬件线程)关联的存储器可存储关联的次级描述符环。与网络接口关联的中心核(或硬件线程)可管理将描述符存储在每个次级描述符环中。来自所接收的网络协议单元的数据可存储在网络接口可访问的主存储器中。目标核可从与网络接口关联的中心核接收IPI,并作为响应,从关联的次级描述符环读取指定的描述符。基于在关联的次级描述符环中的描述符,目标核可将数据复制到与目标核关联的存储器中并访问该数据。
图5描述了可在本发明的一些实施例中用来支持通过多个目标核或硬件线程来处理所接收的网络协议单元的示例元件。由网络接口接收的流可被分配以便由一个或多个目标核或硬件线程来处理。为了分配所接收的网络协议单元以便由目标核来处理,一部分所接收的网络协议单元可存储在与目标核关联的存储器队列(或区域)中。与网络接口关联的中心核(或硬件线程)可判断在存储器队列之间如何分配所接收的网络协议单元,以便在目标核之间分配所接收的网络协议单元的处理。例如,接收方扩展技术可用来在目标核之间分配网络协议单元以便处理。接收方扩展例如参考来自微软的网络驱动程序接口规范(NDIS)6.0(2005)来描述。
图6描述了可在本发明的一些实施例中使用的示例过程。在框610中,网络接口可接收网络协议单元。
在框620中,网络接口可向通用核发出设备中断以通知所述核接收了至少一个网络协议单元
在框630中,通用核判断哪个目标核将处理所接收的网络协议单元。例如,利用接收方扩展技术来部分地作出判断,尽管可使用其它的技术。为了将所接收的网络协议单元分配给目标核,与所接收的网络协议单元关联的描述符被分配给与目标核关联的次级描述符环。网络协议单元要由目标核处理的部分可存储在与通用核关联的存储区域中。
在框640中,通用核向目标核发出处理器间中断以指示所接收的网络协议单元的可用性。由目标核执行的或对其可用的逻辑可响应于处理器间中断来调用中断句柄。
在框650中,目标核可请求将网络协议单元的部分从与通用核关联的存储区域复制到与目标核关联的存储器。次级描述符环中与目标核关联的描述符可识别网络协议单元的部分的存储位置。
本发明的实施例可实现为下面的任意项或其组合:一个或多个利用母板互连的微芯片或集成电路,由存储设备存储并由微处理器、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)执行的软件。术语“逻辑”可例如包括软件或硬件和/或软件和硬件的组合。
本发明的实施例例如可作为计算机程序产品提供,其可包括一个或多个机器可读的媒体,在其上存储了机器可执行指令,该指令在由一个或多个诸如计算机、计算机网络或其它电子设备执行时可导致一个或多个机器根据本发明的实施例来操作。机器可读介质可包括但不限于软盘、光盘、CD-ROM(压缩只读盘存储器)和磁光盘、ROM(只读存储器)、RAM(随机访问存储器)、EPROM(可擦可编程只读存储器)、EEPROM(电可擦可编程只读存储器)、磁或光卡、闪速存储器、或其它类型适于存储机器可执行指令的媒体/机器可读介质。
进而,本发明的实施例还可作为计算机程序产品加载,其中程序可借助一个或多个由载波或其它传播介质实现和/或调制的数据信号经由通信链路(比如调制解调器和/或网络连接)从远程计算机(例如服务器)传输到请求计算机(例如客户端)。由此,如这里所使用的,机器可读介质可以而不要求包括这样的载波。
附图和前面的描述给出了本发明的例子。虽然描述了多个不同的功能项,但是本领域的技术人员将理解一个或多个这样的元件可组合为单个功能元件。可替换地,特定元件可被分成多个功能元件。来自一个实施例的元件可添加到另一个实施例。例如,这里所描述的过程的顺序可变化且不限于这里所描述的方式。而且,任何流程图的动作不需要按所示的顺序来实现;也不是必须执行所有的动作。并且,不取决于其它动作的动作可与其它的动作并行执行。但是,本发明的范围决不由这些特定例子来限定。多种变化,比如结构、尺寸、材料使用的变化无论是否明显在说明书中给出,都是可能的。本发明的范围至少与随后的权利要求给出的一样宽。
Claims (19)
1.一种网络协议单元处理装置,包括:
至少一个网络接口;
至少一个目标核;
通信耦合到至少一个网络接口的中心核,其中中心核响应于来自网络接口的中断,选择性地向一个或多个目标核发出处理器间中断IPI;和
通信耦合到中心核和至少一个网络接口的存储设备,其中所述至少一个目标核执行模拟的网络接口中断服务例程ISR,所述模拟的网络接口中断服务例程ISR将来自所述中心核的IPI看待为中断请求。
2.权利要求1的装置,其中使用至少一个目标核的逻辑单元是要响应于接收IPI而选择性地执行中断服务例程。
3.权利要求1的装置,其中至少一个网络接口能够执行从包括下列操作的组中选择的至少一个操作:从物理链路接收网络协议单元,将所接收的网络协议单元的部分复制到存储设备中,和向中心核唤起中断。
4.权利要求1的装置,其中中心核能够执行从包括下列操作的组中选择的至少一个操作:响应于从至少一个网络接口接收中断而执行中断服务例程,从初级描述符环读取描述符,执行任何用户提供的代码来修改输入的网络协议单元,执行任何用户提供的代码来分类输入的网络协议单元,基于用户指定的分类来向其次级描述符环分配目标核和描述符,将描述符从初级描述符环复制到适当的次级描述符环,和从初级描述符环移除描述符。
5.权利要求1的装置,还包括:
用于提供与至少一个网络接口关联的初级描述符环的逻辑单元,所述初级描述符环包含初级描述符以指示一个或多个网络协议单元进行处理,其中在存储设备中存储一个或多个网络协议单元的部分;
用于分配目标核以便处理一个或多个网络协议单元的逻辑单元;和
用于提供将描述符从初级描述符环复制到与所分配的至少一个目标核关联的次级描述符环的逻辑单元。
6.权利要求5的装置,其中:
存储设备用于存储所接收的网络协议单元的有效负载;和
所分配的至少一个目标核用于响应于与所分配的至少一个目标核关联的次级描述符环中的描述符请求处理所接收的网络协议单元,而将有效负载从存储设备复制到与所分配的至少一个目标核关联的存储器。
7.权利要求5的装置,其中用于分配的逻辑单元用来提供接收方扩展。
8.权利要求1的装置,其中至少一个目标核能够执行从包括下列操作的组中选择的至少一个操作:数据链路协议处理;网络层协议处理;传输层协议处理;安排等待来自网络的数据的应用的操作;将网络协议单元路由到另一位置;过滤不想要的网络协议单元;和为其它使用释放存储网络协议单元的存储器。
9.权利要求1的装置,其中通信耦合到至少一个网络接口的中心核对于一个或多个目标核呈现为单个逻辑设备。
10.一种用于实现网络协议单元处理***的方法,包括:
网络接口接收网络协议单元;
所述网络接口向中心核发出设备中断以通知所述中心核接收了网络协议单元;
所述中心核选择目标核来处理所接收的网络协议单元;
所述中心核向所选择的目标核选择性地发出处理器间中断IPI以请求处理网络协议单元;和
所选择的目标核响应于从所述中心核接收到所述IPI而执行模拟的网络接口中断服务例程ISR,所述模拟的网络接口中断服务例程ISR将来自所述中心核的IPI看待为中断请求。
11.权利要求10的方法,其中选择目标核包括使用接收方扩展技术。
12.权利要求10的方法,还包括:
所述网络接口在接收所述网络协议单元之后且在发出所述设备中断之前将网络协议单元存储在与中心核关联的主存储器中;
所述中心核在接收所述设备中断之后且在选择所述目标核之前提供在初级描述符环中识别所接收的网络协议单元的描述符;
所述中心核将该描述符提供给与所选目标核关联的次级描述符环。
13.权利要求12的方法,还包括:
所选目标核处理描述符;和
所选目标核请求将网络协议单元的部分复制到与所选目标核关联的存储器中。
14.权利要求10的方法,其中中心核能够执行从包括下列操作的组中选择的至少一个操作:响应于从至少一个网络接口接收中断而执行中断服务例程;从初级描述符环读取描述符;执行任何用户提供的代码来修改输入的网络协议单元;执行任何用户提供的代码来分类输入的网络协议单元;基于用户指定的分类来向其次级描述符环分配目标核和描述符;将描述符从初级描述符环复制到适当的次级描述符环;和从初级描述符环移除描述符。
15.权利要求10的方法,其中目标核能够执行从包括下列操作的组中选择的至少一个操作:数据链路协议处理;网络层协议处理;传输层协议处理;安排等待来自网络的数据的应用的操作;将网络协议单元路由到另一位置;过滤不想要的网络协议单元;和为其它使用释放存储网络协议单元的存储器。
16.一种网络协议单元处理***,包括:
网络介质;
通信耦合到网络介质的网络接口;
主机***,包括:
至少一个网络接口;
至少一个目标核;
通信耦合到至少一个网络接口的中心核,其中中心核响应于来自网络接口的中断,选择性地向一个或多个目标核发出处理器间中断IPI;和
通信耦合到中心核和至少一个网络接口的存储设备,
其中所述至少一个目标核执行模拟的网络接口中断服务例程ISR,所述模拟的网络接口中断服务例程ISR将来自所述中心核的IPI看待为中断请求。
17.权利要求16的***,还包括:
用于提供与至少一个网络接口关联的初级描述符环的逻辑单元,所述初级描述符环包含初级描述符以指示一个或多个网络协议单元进行处理,其中在存储设备中存储一个或多个网络协议单元的部分;
用于分配至少一个目标核以便处理一个或多个网络协议单元的逻辑单元;和
用于提供将描述符从初级描述符环复制到与所分配的至少一个目标核关联的次级描述符环的逻辑单元。
18.权利要求17的***,其中:
存储设备用于存储所接收的网络协议单元的有效负载;和
所分配的至少一个目标核用于响应于与所分配的至少一个目标核关联的次级描述符环中的描述符请求处理所接收的网络协议单元,而将有效负载从存储设备复制到与所分配的至少一个目标核关联的存储器。
19.权利要求18的***,其中存储设备包括与至少一个目标核关联的缓冲器,并且其中所述缓冲器用于存储要由关联的目标核处理的网络协议单元的部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/539510 | 2006-10-06 | ||
US11/539,510 US20080086575A1 (en) | 2006-10-06 | 2006-10-06 | Network interface techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101159765A CN101159765A (zh) | 2008-04-09 |
CN101159765B true CN101159765B (zh) | 2013-12-25 |
Family
ID=39275836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610172499XA Expired - Fee Related CN101159765B (zh) | 2006-10-06 | 2006-12-30 | 网络接口方法、装置和*** |
Country Status (5)
Country | Link |
---|---|
US (1) | US20080086575A1 (zh) |
EP (1) | EP2080102A4 (zh) |
CN (1) | CN101159765B (zh) |
TW (1) | TWI408934B (zh) |
WO (1) | WO2008045809A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296490B2 (en) * | 2007-06-29 | 2012-10-23 | Intel Corporation | Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system |
US20100146112A1 (en) * | 2008-12-04 | 2010-06-10 | Real Dice Inc. | Efficient communication techniques |
US7996548B2 (en) | 2008-12-30 | 2011-08-09 | Intel Corporation | Message communication techniques |
US8645596B2 (en) | 2008-12-30 | 2014-02-04 | Intel Corporation | Interrupt techniques |
US8493979B2 (en) * | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
US8239699B2 (en) * | 2009-06-26 | 2012-08-07 | Intel Corporation | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
CN102055737B (zh) * | 2009-11-04 | 2013-09-11 | 中兴通讯股份有限公司 | 一种远程登陆多核***硬件线程的方法、装置及*** |
US8321615B2 (en) | 2009-12-18 | 2012-11-27 | Intel Corporation | Source core interrupt steering |
US8868894B2 (en) * | 2011-05-06 | 2014-10-21 | Xcelemor, Inc. | Computing system with hardware scheduled reconfiguration mechanism and method of operation thereof |
CN102209042B (zh) * | 2011-07-21 | 2014-04-16 | 迈普通信技术股份有限公司 | 一种避免先入先出队列溢出的方法及设备 |
US8842562B2 (en) * | 2011-10-25 | 2014-09-23 | Dell Products, Lp | Method of handling network traffic through optimization of receive side scaling |
WO2019169582A1 (zh) * | 2018-03-07 | 2019-09-12 | 华为技术有限公司 | 处理中断的方法和装置 |
KR102456176B1 (ko) | 2020-05-21 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11573891B2 (en) * | 2019-11-25 | 2023-02-07 | SK Hynix Inc. | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device |
CN114003363B (zh) * | 2021-11-01 | 2022-07-22 | 支付宝(杭州)信息技术有限公司 | 线程间中断信号发送方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195698A1 (en) * | 2005-02-25 | 2006-08-31 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4365294A (en) * | 1980-04-10 | 1982-12-21 | Nizdorf Computer Corporation | Modular terminal system using a common bus |
US5613128A (en) * | 1990-12-21 | 1997-03-18 | Intel Corporation | Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller |
GB2308779B (en) * | 1995-12-28 | 1998-06-10 | Nokia Telecommunications Oy | Telecommunications network management system |
US6148361A (en) * | 1998-12-17 | 2000-11-14 | International Business Machines Corporation | Interrupt architecture for a non-uniform memory access (NUMA) data processing system |
US6467007B1 (en) * | 1999-05-19 | 2002-10-15 | International Business Machines Corporation | Processor reset generated via memory access interrupt |
US7620955B1 (en) * | 2001-06-08 | 2009-11-17 | Vmware, Inc. | High-performance virtual machine networking |
US7219121B2 (en) * | 2002-03-29 | 2007-05-15 | Microsoft Corporation | Symmetrical multiprocessing in multiprocessor systems |
US7784044B2 (en) * | 2002-12-02 | 2010-08-24 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
US7162666B2 (en) * | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US7783769B2 (en) * | 2004-03-31 | 2010-08-24 | Intel Corporation | Accelerated TCP (Transport Control Protocol) stack processing |
US7764709B2 (en) * | 2004-07-07 | 2010-07-27 | Tran Hieu T | Prioritization of network traffic |
US7564847B2 (en) * | 2004-12-13 | 2009-07-21 | Intel Corporation | Flow assignment |
US7548513B2 (en) * | 2005-02-17 | 2009-06-16 | Intel Corporation | Techniques to provide recovery receive queues for flooded queues |
US20060227788A1 (en) * | 2005-03-29 | 2006-10-12 | Avigdor Eldar | Managing queues of packets |
US20060236011A1 (en) * | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
US7584286B2 (en) * | 2006-06-28 | 2009-09-01 | Intel Corporation | Flexible and extensible receive side scaling |
US20080002724A1 (en) * | 2006-06-30 | 2008-01-03 | Karanvir Grewal | Method and apparatus for multiple generic exclusion offsets for security protocols |
US20090006521A1 (en) * | 2007-06-29 | 2009-01-01 | Veal Bryan E | Adaptive receive side scaling |
US20090086736A1 (en) * | 2007-09-28 | 2009-04-02 | Annie Foong | Notification of out of order packets |
US7836195B2 (en) * | 2008-02-27 | 2010-11-16 | Intel Corporation | Preserving packet order when migrating network flows between cores |
US20100017583A1 (en) * | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US8151027B2 (en) * | 2009-04-08 | 2012-04-03 | Intel Corporation | System management mode inter-processor interrupt redirection |
-
2006
- 2006-10-06 US US11/539,510 patent/US20080086575A1/en not_active Abandoned
- 2006-12-30 CN CN200610172499XA patent/CN101159765B/zh not_active Expired - Fee Related
-
2007
- 2007-10-05 EP EP07853826.1A patent/EP2080102A4/en not_active Withdrawn
- 2007-10-05 WO PCT/US2007/080633 patent/WO2008045809A2/en active Application Filing
- 2007-10-05 TW TW096137538A patent/TWI408934B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195698A1 (en) * | 2005-02-25 | 2006-08-31 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
Also Published As
Publication number | Publication date |
---|---|
TW200826594A (en) | 2008-06-16 |
WO2008045809A3 (en) | 2008-06-05 |
EP2080102A2 (en) | 2009-07-22 |
WO2008045809A2 (en) | 2008-04-17 |
TWI408934B (zh) | 2013-09-11 |
US20080086575A1 (en) | 2008-04-10 |
EP2080102A4 (en) | 2015-01-21 |
CN101159765A (zh) | 2008-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101159765B (zh) | 网络接口方法、装置和*** | |
US9336168B2 (en) | Enhanced I/O performance in a multi-processor system via interrupt affinity schemes | |
US8806511B2 (en) | Executing a kernel device driver as a user space process | |
US20120147021A1 (en) | Graphics compute process scheduling | |
US9176795B2 (en) | Graphics processing dispatch from user mode | |
US8032681B2 (en) | Processor selection for an interrupt based on willingness to accept the interrupt and on priority | |
US10459773B2 (en) | PLD management method and PLD management system | |
WO2002031672A2 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
CN102906726A (zh) | 协处理加速方法、装置及*** | |
US8886862B2 (en) | Virtualization of interrupts | |
JP7310924B2 (ja) | サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム | |
KR20160051883A (ko) | 가상 재시도 큐 | |
WO2011146414A1 (en) | Managing interrupts in a virtualized input/output device | |
US9122522B2 (en) | Software mechanisms for managing task scheduling on an accelerated processing device (APD) | |
CN115298656A (zh) | 用于调度可共享pcie端点设备的***和方法 | |
WO2012023151A2 (en) | I/o virtualization and switching system | |
CN114579285A (zh) | 一种任务运行***、方法及计算设备 | |
US10853284B1 (en) | Supporting PCI-e message-signaled interrupts in computer system with shared peripheral interrupts | |
US20140149528A1 (en) | Mpi communication of gpu buffers | |
US9331869B2 (en) | Input/output request packet handling techniques by a device specific kernel mode driver | |
CN106911739B (zh) | 一种信息分发方法及装置 | |
US20130141446A1 (en) | Method and Apparatus for Servicing Page Fault Exceptions | |
CN110837482B (zh) | 分布式块存储低延迟控制方法、***及设备 | |
US10467156B1 (en) | System and method of improving efficiency in parallel data processing of a RAID array | |
WO2013085794A1 (en) | Method and apparatus for servicing page fault exceptions |
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: 20131225 Termination date: 20191230 |
|
CF01 | Termination of patent right due to non-payment of annual fee |