网络分组的SIMD处理的制造方法与工艺

文档序号:11412407阅读:213来源:国知局
网络分组的SIMD处理的制造方法与工艺
网络分组的SIMD处理

背景技术:
网络使得计算机和其他设备能够通信。例如,网络可承载代表视频、音频、电子邮件等的数据。典型地,跨网络发送的数据被划分为较小的被称为分组的消息。打个比方,分组非常像你丢在信箱中的信封。分组典型地包括“有效载荷”和“报头”。分组的“有效载荷”类似于信封中的信件。分组的“报头”非常像写在信封本身上的信息。报头可包括帮助网络设备适当地处理该分组的信息。例如,该报头可包括识别该分组的目的地的地址。在到达其目的地之前,给定的分组可以“跳”过很多不同的中间网络转发设备(例如“路由器”、“网桥”和/或“交换机”)。这些中间设备通常执行各种分组处理操作。例如,中间设备通常执行分组分类,以确定如何向其目的地进一步地转发分组或确定要提供的服务的质量。处理分组生成了各种计算负担。例如,在中间节点上,需要为每个分组制定转发或过滤决策。大量的网络业务使得对于分组的快速处理极其重要。同样地,分组处理在分组的目的地处消耗处理资源,其中分组的有效载荷被“卸载”并被重新组装成用于应用的数据流。随着速度增加,处理网络业务的负担可抢夺处理器资源的应用。附图说明图1是示出了使用SIMD(单指令/多数据)指令处理分组的图示。图2是示出了一组分组向量的图示。图3是示出了由变换后的分组数据形成的向量的图示。图4是示出了使用SIMD指令的传输操作的图示。具体实施方式很多处理器提供单指令/多数据(SIMD)指令。例如,英特尔的IA(英特尔架构)处理器提供了被称为“单指令多数据流扩展”(SSE)的指令集。SIMD指令在元素向量中的每个元素上同时执行相同操作。例如,单个SIMDADD指令可对向量中的一组不同数字的每一个加上某个数字。SIMD指令典型地包括基本布尔、算术和比较操作。由于绝大多数分组经历相同的操作,SIMD指令可被用于加速网络分组的处理。例如,在终端节点处,每个封装着传输控制协议(TCP)片段的网际协议(IP)数据报都经历验证(例如,校验和的验证)和重新组装以将有效载荷重新排序为原始传输的数据流。类似地,在跨越网络的途中,查找过程可为每个接收到的以太网帧或IP数据报确定转发信息。图1描述了样本系统,其使用SIMD指令处理多个网络分组的向量。通过并行地在每个网络分组上操作,当与依次对每个分组进行串行处理相比时,该SIMD指令可提供吞吐量的可观增加。更详细地,图1描绘了一种系统,其包括网络接口控制器100(NIC),所述网络接口控制器100代表主机平台102接收分组。典型地,NIC100包括接口(例如,xMII[媒体独立接口或XAUI[附件单元接口]),其连接PHY(例如,无线,光学或有线物理层设备)至介质访问控制器(MAC)。NIC典型地包括DMA(直接存储器访问)引擎以将数据传输至主机平台102存储器/从主机平台102存储器传输数据。NIC可为分立部件,集成在主板上,和/或在也集成了处理器或处理器核的管芯上。此外,某个NIC的功能可被实施为由处理器核执行的程序指令。NIC架构变化很大,例如,一些特征卸载引擎,可编程处理器,和/或分组处理硬件辅助电路。主机平台102可包括典型的部件,例如存储器,芯片组等,不过计算架构变化很大。如图所示,该主机平台包括逻辑106,以执行SIMD处理。例如,该逻辑106可为已编程的CPU(中央处理单元)或核。例如,该SIMD106逻辑可为协议栈、操作系统或设备驱动器的程序指令。在SIMD106处理后,分组数据可被应用例如通过套接字使用。在示出的例子中,NIC100将接收到的分组布置为向量104a-104d用于SIMD106处理。例如,如图所示,分组“a”“b”和“c”被插入向量104d中。在一些实施方式中,NIC100可连续地将分组加入向量,直到该向量满为止。然而,NIC100还可具有用以选择性地将分组分配给向量104的逻辑。例如,NIC100可具有用于数据路径和连接管理分组的不同向量,因为此类分组典型地经历不同的操作。同样地,NIC100可执行分类以确保来自于同一流的分组不被放在相同的向量104中。例如,NIC100可确定分组TCP/IP元组(例如,IP源和目的地地址和TCP源和目的地端口)以防止来自于相同连接的TCP/IP分组被分配至相同的向量。这可减少来自于多个对相同流状态数据(例如,TCP控制块[TCB])的尝试更新的竞争问题。在其他环境下,NIC100可填充向量,其中该向量中的每个分组都来自于相同的流。这种操作通过将流状态信息保持在本地存储器中,可提升一些操作的速度。如图所示,NIC100将分组向量(例如向量104a)传输至主机平台102用于处理。各种机制可控制该传输的开始。例如,一旦位于向量队列头部的向量已满,一旦计时器已期满或通过其他中断放缓(interruptmoderation)技术,传输可发生。NIC100可通过DMA(直接存储器寻址)执行该传输至主机平台102可访问存储器中和/或通过DCA(直接缓存访问)推送执行该传输至主机平台102处理器的缓存中。NIC100然后可产生中断,该中断触发主机平台102处理分组。虽然图1描绘了在NIC100中组装的向量104a-104d,但是该NIC100可改为通过使用DMA将分组数据重新布置在主机平台102中的邻接的向量存储器位置中而初始组装104a中的向量。SIMD106逻辑可实施多种分组处理操作。例如,这些操作的非完全列举包括:检验IP协议版本(例如IPv4或IPv6)以选择要使用的分组处理实施方式;检验IP报头长度以确定被分段的数据报的下一报头的偏移;检验服务的IP类型是否需要特殊处理;检验数据报的长度是否有效;检验分组是否被分段;检验已分段的分组的偏移以实现正确组装;检验是否已过存活时间;检验校验和是否有效;检验源和目的地地址是否有效;检验下一级协议(例如TCP或UDP);例如使用哈希函数计算表查找以识别分组目的地从而检验该分组是否应被本地递送、被转发或被丢弃;识别核心或特定处理元素,在其上要递送用于接收分组的目的地应用(例如,接收侧缩放[RSS]);识别外出I/O接口(例如特定NIC),在其上发送传输数据缓冲;计算和记录用于传输的校验和;分配用于外出分组的字段,协议版本,服务类型,长度,分段,存活时间,协议,当前时间戳,地址,端口号,以及序列号;检验源和目的地端口是否对应于开放连接;检验序列号是否正确并对应于按序数据,无序数据或重复数据;更新拥塞窗口的开始,结束和大小;基于分组的时间戳更新往返行程时间;确定在其上放置分组数据缓冲的传输或接收队列;和/或将分组数据缓冲插入传输或接收队列。虽然上述许多示例与TCP/IP相关,但位于协议栈较高或较低的不同层的其他协议可类似地被实施以使用SIMD106逻辑处理分组向量。例如,异步传输模式(ATM)单元,以太网帧,ARP(地址解析协议)消息,和/或用户数据报协议(UDP)数据报(仅提到了几个例子)可经历SIMD操作。使用不同协议的分组可被导向至不同向量组(例如,TCP/IP分组分配给一组向量,ATM分配给另一组,以此类推)并可穿过不同代码路径。基于分组速率或流数量,NIC100或主机平台102软件可动态地改变使用的分组和元数据向量的大小并可选择在特定向量大小上操作的SIMD指令。此外,虽然上面描述了样本实施方式,其他的实施方式可将操作不同地分布在系统部件中。例如,描述...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1