CN103368853B - 网络分组的simd处理 - Google Patents
网络分组的simd处理 Download PDFInfo
- Publication number
- CN103368853B CN103368853B CN201310302452.0A CN201310302452A CN103368853B CN 103368853 B CN103368853 B CN 103368853B CN 201310302452 A CN201310302452 A CN 201310302452A CN 103368853 B CN103368853 B CN 103368853B
- Authority
- CN
- China
- Prior art keywords
- network packet
- data
- packet
- array element
- vector
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 31
- 230000005540 biological transmission Effects 0.000 claims description 12
- 239000012634 fragment Substances 0.000 claims description 3
- 230000005611 electricity Effects 0.000 claims 1
- 239000013598 vector Substances 0.000 abstract description 75
- 238000012795 verification Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 101100283411 Arabidopsis thaliana GMII gene Proteins 0.000 description 1
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的名称为“网络分组的SIMD处理”。执行程序的单指令/多数据(SIMD)指令以处理数据向量,其中分组向量的每个元素对应于不同的已接收分组。
Description
背景技术
网络使得计算机和其他设备能够通信。例如,网络可承载代表视频、音频、电子邮件等的数据。典型地,跨网络发送的数据被划分为较小的被称为分组的消息。打个比方,分组非常像你丢在信箱中的信封。分组典型地包括“有效载荷”和“报头”。分组的“有效载荷”类似于信封中的信件。分组的“报头”非常像写在信封本身上的信息。报头可包括帮助网络设备适当地处理该分组的信息。例如,该报头可包括识别该分组的目的地的地址。
在到达其目的地之前,给定的分组可以“跳”过很多不同的中间网络转发设备(例如“路由器”、“网桥”和/或“交换机”)。这些中间设备通常执行各种分组处理操作。例如,中间设备通常执行分组分类,以确定如何向其目的地进一步地转发分组或确定要提供的服务的质量。
处理分组生成了各种计算负担。例如,在中间节点上,需要为每个分组制定转发或过滤决策。大量的网络业务使得对于分组的快速处理极其重要。同样地,分组处理在分组的目的地处消耗处理资源,其中分组的有效载荷被“卸载”并被重新组装成用于应用的数据流。随着速度增加,处理网络业务的负担可抢夺处理器资源的应用。
附图说明
图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用于处理。各种机制可控制该传输的开始。例如,一旦位于向量队列头部的向量已满,一旦计时器已期满或通过其他中断放缓(interrupt moderation)技术,传输可发生。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指令。
此外,虽然上面描述了样本实施方式,其他的实施方式可将操作不同地分布在系统部件中。例如,描述为由NIC100执行的操作可由主机平台102执行,使得SIMD方案能与传统的NIC100架构一同工作。也就是说,NIC100可便利地将分组传输给主机平台102,主机平台将分组分配给向量用于处理。此外,NIC100本身可具有SIMD处理器,例如,以端接TCP或执行接收侧卸载(RSO),其将多个接收到的分组组装成较大的单个分组。
除了常规的SIMD指令外,特定于网络或I/O任务的SIMD指令可被使用。例如,可使用单个SIMD CRC(循环冗余检验)指令为分组向量计算CRC。其他指令可计算哈希值,执行加密/解密,字符串匹配,以及其他操作。例如,在TCP分组向量上执行部分TCP校验和的指令可被定义为:
vpartchecksum v1{k1},v2
其中该指令为v2中分组数据向量中的每个元素的前8个字节计算部分TCP校验和并将部分校验和结果添加至v1中找到的运行校验和。得到的反码和(ones complementsum)被可选向量掩码k1掩蔽,并且相应的结果存储在v1中。例如,一组分组的TCP校验和可基于以下伪代码确定,其中,向量v1存储运行校验和,向量v2存储剩余要被计算校验和的分组长度,并且向量v3在整个分组数据中进行索引:
loop_start:
vcmp v2,k1,16,gt
//将v2中的分组长度与16相比,对于每个具有剩余长度的分组,设置k1中的相应比特
vpartchecksum v1,k1,v2
//对于还有剩余数据的分组,对接下来的16字节数据计算部分校验和vsubv2,k1,16
//从剩余要为每个分组计算校验和的数据量向量减去16
vaddv3,k1,16
//递增迭代器以指向要被计算校验和的下一数据块
bnz k1,loop_start
//循环,直到在向量中的所有分组上已经完成校验和
当然,本指令和其他指令可具有非常不同的句法并执行其他操作。
图1描绘了存储整个分组报头的向量104,然而,其他的实施方式可不同。例如,典型地,向量104可仅仅存储与分组有效载荷分离的分组报头。该有效载荷可被存储(例如,DMA)至主机平台102存储器。
虽然图1仅描绘了分组向量,也可使用其他向量。例如,如上文所述,给定的分组向量可不被完全填充,例如,当在将分组分配给每个向量元素之前中断放缓时间段期满时。为了区分空的向量元素与那些已经填充的向量元素,图2描绘了分组向量108b和占用掩码08a。占用掩码108a元素与分组向量108b元素具有一对一的关系。每个占用掩码108a元素识别网络分组是否被插入相应的分组向量108b元素。在示出的示例中,分组向量108b包括分组p1,p2和p4,其中第三元素空缺(画有阴影)。该空缺在占用掩码108a中由相应的“0”表示。如果在分组向量中不存在分组,那么可替代地可以存在仿真分组,从而SIMD操作仍可在向量108b上执行。当处理完成时仿真分组可被丢弃。
在向量中,对一些分组的处理可能不同于对其他分组的处理。例如,设置有“紧急”标志的TCP片段可被单独处理或可基于分组类型将分组移动至不同的向量(例如,在IP处理后,封装后的UDP分组可在与TCP片段不同的向量中处理)。这些分组可被短暂或永久地从SIMD处理中移除以被顺序处理(例如,之后完全由MIMD(多指令/多数据)指令处理)或传输至其他的向量。仿真分组可被替代进其中分歧的分组(divergent packet)被移除的分组向量中。如果以及当分歧完成时,分组可被重新插入分组向量中并且从占用掩码中移除指示。
图2此外描绘了另一向量108c,其为向量108b中的相应分组存储流状态信息(例如TCB)。该流状态可被从其原始存储器拷贝至流状态向量108c中。当处理完成时,该流状态数据的改变可被写回至原始存储器。额外的向量(未示出)也可被使用。例如,分组元数据向量可被用于存储信息,例如有效载荷地址,报头元组的哈希值,以及其他与分组相关或从分组导出的数据。除了上文所讨论的向量外,分组处理操作可按需使用额外的向量和/或按需要重新布置向量信息。
图1描绘了其中每个向量元素均对应于分组的向量。然而,如果向量存储从一组分组和/或分组元数据中的每个提取的特定字段,SIMD处理可获益。例如,图3描绘了分组P1-P4,每个都具有报头字段A,B和C。如图所示,向量104a可以由每个分组的字段B构造。例如,每个向量104a元素可为分组的TCP序列号。实施方式可具有很多这种向量以反映操作的不同字段。换句话说,来自单个分组的数据可被分布于很多这种向量中。一些实施方式可在由组合的字段而不是单独字段形成的向量上例如基于SIMD指令期望的字段大小操作。例如,可能优选的是将所有单比特TCP标志组合为单个组合字段。虽然图3被描绘为在报头字段上操作,但是有效载荷内的其他字段可被使用,例如,以支持深层分组检查。
通常,NIC将从PHY接收作为跨越整个分组的比特序列的分组数据。将分组比特从单个分组比特集合变换为一个或多个字段向量可由NIC100上的硬接线或可编程电路执行。然而,另一实施方式可使用DMA/DCA来将分组字段布置为向量。例如,第一分组报头字段可被传输至存储器地址A(向量的元素1)而第二分组报头字段可被传输至存储器地址A+[字段宽度](向量的元素2)。换句话说,取代NIC电路物理地构建该向量,通过使用PHY中的不同地址逻辑和DMA/DCA引擎以读取/写入分组数据,分组变换为字段向量自动地发生。
虽然上文描述了接收分组的进入处理,SIMD操作可被同样地用于要传输的分组的外出处理。例如,如图4所示,应用可传递数据以传输至使用SIMD指令实施的协议栈。该栈为数据创建分组和元数据向量。再者,潜在地,该表示可具有分组向量和/或分组字段向量。当在队列头部的向量已满,当计时器期满,或者其他事件发生时,该向量被使用SIMD操作处理并且然后被与传输的数据一起传输(例如通过DMA)至NIC。该SIMD操作可包括为数据生成分组报头,执行分段,等等。该NIC然后可组装分组比特序列用于由PHY传输。再者,代替将向量传输至NIC,主机平台102可传输离散的分组以与传统的NIC操作交互。潜在地,NIC驱动器或操作系统可具有指令以确定NIC是否可支持和/或配置NIC以处理基于向量的通信。该驱动器还可识别哪些感兴趣的分组字段应被向量化,如何将数据传输至主机平台102存储器,等等。
实施方式的变化可以很大。分组向量的处理可被分布于多个硬件线程、核、管芯、虚拟机、分区、相干域(coherent domain)和/或任何其他这种执行单元中。分组向量的处理可被分布从而相同网络流的每个分组在相同执行单元上被处理。微引擎,卸载引擎,复制引擎或其他逻辑可存在于NIC,主机系统或CPU上,所述微引擎,卸载引擎,复制引擎或其他逻辑在整个分组向量上执行同时操作。此外,虽然关于网络分组描述了分组的SIMD处理,但是该技术可广泛地应用于外围I/O设备通信控制字段,该主机平台对于所述通信控制字段可执行可并行化的计算或逻辑操作。该技术可被例如用于处理存储命令,响应和/或数据的SCSI(小型计算机系统接口),iSCSI(因特网SCSI),和/或SATA(串行高级技术附件)分组(例如,帧或其他协议数据单元)。
本文中使用的术语电路包括硬件电路,数字电路,模拟电路,可编程电路等等。该可编程电路可依靠存储在计算机可读存储介质上的计算机程序来操作。
其他实施例也在下述权利要求的范围内。
Claims (14)
1.一种处理网络分组的系统,包括:
访问网络分组数据的阵列的装置,单独的阵列元素包括网络分组报头的字段的严格子集,相应的阵列元素对应于不同的相应的网络分组;以及
导致与所述不同的相应的网络分组对应的所述相应的阵列元素的单指令、并行处理的装置。
2.如权利要求1所述的系统,其中所述相应的阵列元素的所述单指令、并行处理包括向前查找。
3.如权利要求1所述的系统,其中所述相应的阵列元素的所述单指令、并行处理包括基于包括在所述相应的网络分组报头的字段的严格子集中的数据的哈希。
4.如权利要求1所述的系统,其中所述网络分组报头包括传输控制协议(TCP)片段报头。
5.如权利要求1所述的系统,其中所述网络分组报头包括网际协议(IP)数据报报头。
6.如权利要求1所述的系统,其中字段的严格子集包括来自传输控制协议(TCP)片段报头的至少一个字段和来自网际协议(IP)数据报报头的至少一个字段。
7.如权利要求1所述的系统,其中网络分组数据的阵列包括通过网络接口控制器的电路布置的数据,所述网络接口控制器至少包括到PHY的接口。
8.如权利要求1所述的系统,其中网络分组数据的阵列包括通过直接存储器访问(DMA)从网络接口控制器先前传输到存储器的数据。
9.如权利要求1所述的系统,其中所述相应的阵列元素的所述单指令、并行处理包括更新与所述相应的网络分组相关联的流状态数据。
10.如权利要求9所述的系统,其中所述流状态数据包括流状态数据的阵列,其中所述流状态数据的阵列的相应的元素对应于网络分组数据的阵列的相应的网络分组。
11.一种处理网络分组的系统,包括:
至少一个处理器,能够进行阵列元素的单指令、并行处理;
逻辑单元,在操作时执行:
访问网络分组数据的阵列,单独的阵列元素包括网络分组报头的字段的严格子集,相应的阵列元素对应于不同的相应的网络分组;以及
导致通过所述至少一个处理器的、与所述不同的相应的网络分组相对应的所述相应的阵列元素的单指令、并行处理。
12.如权利要求11所述的系统,其中所述相应的阵列元素的所述单指令、并行处理包括向前查找。
13.如权利要求11所述的系统,其中所述相应的阵列元素的所述单指令、并行处理包括基于包括在字段的严格子集中的数据的哈希。
14.如权利要求11所述的系统,其中所述至少一个网络分组报头包括传输控制协议(TCP)片段报头。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/317844 | 2008-12-30 | ||
US12/317,844 US8493979B2 (en) | 2008-12-30 | 2008-12-30 | Single instruction processing of network packets |
CN200980153569.9A CN102272716B (zh) | 2008-12-30 | 2009-12-16 | 网络分组的simd处理 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980153569.9A Division CN102272716B (zh) | 2008-12-30 | 2009-12-16 | 网络分组的simd处理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103368853A CN103368853A (zh) | 2013-10-23 |
CN103368853B true CN103368853B (zh) | 2017-09-01 |
Family
ID=42284903
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980153569.9A Active CN102272716B (zh) | 2008-12-30 | 2009-12-16 | 网络分组的simd处理 |
CN201310302452.0A Active CN103368853B (zh) | 2008-12-30 | 2009-12-16 | 网络分组的simd处理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980153569.9A Active CN102272716B (zh) | 2008-12-30 | 2009-12-16 | 网络分组的simd处理 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8493979B2 (zh) |
EP (1) | EP2382537B1 (zh) |
CN (2) | CN102272716B (zh) |
WO (1) | WO2010077953A2 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004524617A (ja) * | 2001-02-14 | 2004-08-12 | クリアスピード・テクノロジー・リミテッド | クロック分配システム |
US8493979B2 (en) | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
US9069672B2 (en) * | 2009-06-12 | 2015-06-30 | Intel Corporation | Extended fast memory access in a multiprocessor computer system |
US9779057B2 (en) | 2009-09-11 | 2017-10-03 | Micron Technology, Inc. | Autonomous memory architecture |
US8345568B2 (en) * | 2009-10-28 | 2013-01-01 | Verizon Patent And Licensing Inc. | Low loss layer two ethernet network |
US8826366B2 (en) * | 2010-07-15 | 2014-09-02 | Tt Government Solutions, Inc. | Verifying access-control policies with arithmetic quantifier-free form constraints |
US9465657B2 (en) | 2011-07-19 | 2016-10-11 | Elwha Llc | Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority |
US9471373B2 (en) | 2011-09-24 | 2016-10-18 | Elwha Llc | Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority |
US8955111B2 (en) | 2011-09-24 | 2015-02-10 | Elwha Llc | Instruction set adapted for security risk monitoring |
US9443085B2 (en) | 2011-07-19 | 2016-09-13 | Elwha Llc | Intrusion detection using taint accumulation |
US9298918B2 (en) | 2011-11-30 | 2016-03-29 | Elwha Llc | Taint injection and tracking |
US9098608B2 (en) | 2011-10-28 | 2015-08-04 | Elwha Llc | Processor configured to allocate resources using an entitlement vector |
US8943313B2 (en) | 2011-07-19 | 2015-01-27 | Elwha Llc | Fine-grained security in federated data sets |
US9798873B2 (en) | 2011-08-04 | 2017-10-24 | Elwha Llc | Processor operable to ensure code integrity |
US9460290B2 (en) * | 2011-07-19 | 2016-10-04 | Elwha Llc | Conditional security response using taint vector monitoring |
US9558034B2 (en) | 2011-07-19 | 2017-01-31 | Elwha Llc | Entitlement vector for managing resource allocation |
US9170843B2 (en) | 2011-09-24 | 2015-10-27 | Elwha Llc | Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement |
US9575903B2 (en) | 2011-08-04 | 2017-02-21 | Elwha Llc | Security perimeter |
US10203934B2 (en) * | 2012-07-11 | 2019-02-12 | Intel Corporation | Parallell processing of a single data buffer |
US9577875B2 (en) * | 2012-10-15 | 2017-02-21 | International Business Machines Corporation | Performing value and context aware communications networking |
US9513906B2 (en) * | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
CN104956322B (zh) * | 2013-03-05 | 2019-03-01 | 英特尔公司 | 分析向量化的潜在效益 |
US9779138B2 (en) | 2013-08-13 | 2017-10-03 | Micron Technology, Inc. | Methods and systems for autonomous memory searching |
US10003675B2 (en) | 2013-12-02 | 2018-06-19 | Micron Technology, Inc. | Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data |
FR3028372B1 (fr) * | 2014-11-07 | 2018-01-12 | Kalray | Procede de distribution de trames reseau vers des ressources de traitement |
CN106844533B (zh) * | 2016-12-29 | 2020-02-14 | 北京师范大学 | 一种数据分组聚集方法及装置 |
US11050682B2 (en) * | 2017-09-28 | 2021-06-29 | Intel Corporation | Reordering of data for parallel processing |
EP3707864A4 (en) | 2017-11-06 | 2021-08-18 | Pensando Systems Inc. | NETWORK SYSTEM WITH MATCH PROCESSING UNIT FOR TABLE-BASED ACTIONS |
US11263158B2 (en) * | 2018-02-22 | 2022-03-01 | Pensando Systems Inc. | Programmable computer IO device interface |
US10887231B2 (en) | 2018-05-18 | 2021-01-05 | Juniper Networks, Inc. | Packet fragment forwarding without reassembly |
CN109150584B (zh) * | 2018-07-04 | 2022-02-25 | 北京中创腾锐技术有限公司 | 一种基于simd指令的为网络分组分类提供加速支持的方法 |
US11451585B2 (en) | 2019-11-13 | 2022-09-20 | Juniper Networks, Inc. | Anti-spoof check of IPv4-in-IPv6 fragments without reassembly |
US11165701B1 (en) | 2020-03-31 | 2021-11-02 | Juniper Networks, Inc. | IPV6 flow label for stateless handling of IPV4-fragments-in-IPV6 |
US11570283B1 (en) | 2020-07-20 | 2023-01-31 | Juniper Networks, Inc. | IPv6 extension header for stateless handling of fragments in IPv6 |
KR20220098586A (ko) * | 2021-01-04 | 2022-07-12 | 삼성전자주식회사 | 사용자 평면 기능에서의 벡터 기반 패킷 처리 방법 및 장치 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
CN1406423A (zh) * | 2000-02-29 | 2003-03-26 | 睦塞德技术公司 | 链路聚合 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210705A (en) * | 1990-02-28 | 1993-05-11 | Texas Instruments Incorporated | Digital filtering with single-instruction, multiple-data processor |
US5887183A (en) * | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
US7003593B2 (en) * | 1997-12-17 | 2006-02-21 | Src Computers, Inc. | Computer system architecture and memory controller for close-coupling within a hybrid processing system utilizing an adaptive processor interface port |
US6631422B1 (en) | 1999-08-26 | 2003-10-07 | International Business Machines Corporation | Network adapter utilizing a hashing function for distributing packets to multiple processors for parallel processing |
GB2367650B (en) | 2000-10-04 | 2004-10-27 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
JP2004524617A (ja) * | 2001-02-14 | 2004-08-12 | クリアスピード・テクノロジー・リミテッド | クロック分配システム |
US6922716B2 (en) * | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
US7310348B2 (en) * | 2001-09-19 | 2007-12-18 | Bay Microsystems, Inc. | Network processor architecture |
US6941446B2 (en) | 2002-01-21 | 2005-09-06 | Analog Devices, Inc. | Single instruction multiple data array cell |
US20110087859A1 (en) * | 2002-02-04 | 2011-04-14 | Mimar Tibet | System cycle loading and storing of misaligned vector elements in a simd processor |
US7506135B1 (en) * | 2002-06-03 | 2009-03-17 | Mimar Tibet | Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements |
US7225301B2 (en) * | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
US9047094B2 (en) * | 2004-03-31 | 2015-06-02 | Icera Inc. | Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor |
CN100448293C (zh) * | 2005-02-03 | 2008-12-31 | 联想(北京)有限公司 | 一种二维离散余弦变换装置及方法 |
JP4453915B2 (ja) * | 2005-03-18 | 2010-04-21 | 富士通株式会社 | クロスバー装置、制御方法及びプログラム |
US7814297B2 (en) | 2005-07-26 | 2010-10-12 | Arm Limited | Algebraic single instruction multiple data processing |
US20080086575A1 (en) | 2006-10-06 | 2008-04-10 | Annie Foong | Network interface techniques |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
US8667250B2 (en) * | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
US8525826B2 (en) * | 2008-08-08 | 2013-09-03 | International Business Machines Corporation | System for iterative interactive ray tracing in a multiprocessor environment |
US8493979B2 (en) | 2008-12-30 | 2013-07-23 | Intel Corporation | Single instruction processing of network packets |
-
2008
- 2008-12-30 US US12/317,844 patent/US8493979B2/en active Active
-
2009
- 2009-12-16 EP EP09836893.9A patent/EP2382537B1/en active Active
- 2009-12-16 CN CN200980153569.9A patent/CN102272716B/zh active Active
- 2009-12-16 CN CN201310302452.0A patent/CN103368853B/zh active Active
- 2009-12-16 WO PCT/US2009/068270 patent/WO2010077953A2/en active Application Filing
-
2013
- 2013-06-25 US US13/926,085 patent/US9054987B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
CN1406423A (zh) * | 2000-02-29 | 2003-03-26 | 睦塞德技术公司 | 链路聚合 |
Also Published As
Publication number | Publication date |
---|---|
EP2382537A2 (en) | 2011-11-02 |
CN102272716B (zh) | 2016-05-18 |
US20140036909A1 (en) | 2014-02-06 |
US9054987B2 (en) | 2015-06-09 |
CN102272716A (zh) | 2011-12-07 |
US8493979B2 (en) | 2013-07-23 |
US20100165991A1 (en) | 2010-07-01 |
CN103368853A (zh) | 2013-10-23 |
WO2010077953A3 (en) | 2010-09-30 |
WO2010077953A2 (en) | 2010-07-08 |
EP2382537A4 (en) | 2016-02-17 |
EP2382537B1 (en) | 2018-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103368853B (zh) | 网络分组的simd处理 | |
US11038993B2 (en) | Flexible processing of network packets | |
CN108809854B (zh) | 一种用于大流量网络处理的可重构芯片架构 | |
US10015090B2 (en) | Packet steering | |
Allen et al. | IBM PowerNP network processor: Hardware, software, and applications | |
US7715419B2 (en) | Pipelined packet switching and queuing architecture | |
CN1875585B (zh) | 利用mac限制来控制动态未知l2泛滥的方法和系统 | |
CN108833299B (zh) | 一种基于可重构交换芯片架构的大规模网络数据处理方法 | |
CN107925677A (zh) | 用于卸载数据对象复制以及服务功能链管理的技术 | |
CN110383777A (zh) | 端口扩展器设备的灵活处理器 | |
US20030097481A1 (en) | Method and system for performing packet integrity operations using a data movement engine | |
US11258726B2 (en) | Low latency packet switch architecture | |
US9391893B2 (en) | Lookup engine for an information handling system | |
US20050021558A1 (en) | Network protocol off-load engine memory management | |
Jeyakumar et al. | Tiny packet programs for low-latency network control and monitoring | |
US8365045B2 (en) | Flow based data packet processing | |
US11375006B1 (en) | Methods and systems for rating workloads based on network interface device resources and for optimal scheduling | |
US11995004B2 (en) | Methods and systems for using a packet processing pipeline to accelerate InfiniBand administrative operations | |
US12088465B2 (en) | Methods and systems for upgrading a control plane and a data plane of a network appliance | |
US12021963B2 (en) | Methods and systems for distributed high speed state synchronization | |
AT&T | Bridging the Software/Hardware Forwarding Divide | |
JP6304493B2 (ja) | 仮想マシンのマイグレーション方法、マイグレーション装置及びプログラム | |
US20240121226A1 (en) | Systems and methods for nvme pdu data digest optimization | |
Shahbaz | Enabling Programmable Infrastructure for Multi-tenant Data Centers | |
Boivie et al. | IBM PowerNP network processor: Hardware, software, and applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |