CN101930418B - 用于分组信息的多种压缩技术 - Google Patents
用于分组信息的多种压缩技术 Download PDFInfo
- Publication number
- CN101930418B CN101930418B CN2010101712594A CN201010171259A CN101930418B CN 101930418 B CN101930418 B CN 101930418B CN 2010101712594 A CN2010101712594 A CN 2010101712594A CN 201010171259 A CN201010171259 A CN 201010171259A CN 101930418 B CN101930418 B CN 101930418B
- Authority
- CN
- China
- Prior art keywords
- grouping
- header
- packet header
- packet
- logic
- 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
Images
Classifications
-
- 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/04—Protocols for data compression, e.g. ROHC
-
- 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/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
在一个实施例中,本发明包括一种方法,用于将分组头部与存储的分组头部进行比较,基于所述比较生成比较矢量,并且如果所述分组头部和存储的分组头部相匹配,那么从发射机发送没有所述分组头部的分组。可以使用不同的压缩技术来压缩和发送分组的数据部分。描述并且声明了其它实施例。
Description
背景技术
在目前的计算机架构中,应用带宽的需求成指数地增长。对于存储器和输入/输出(IO)子系统来说都是如此。此外,近期发现,因为工程以及产业带来的挑战,在现有互连上支持这种带宽的指数增长变得日益困难。
在即将出现的几代已知的快速外围部件互连(PCIeTM)互连技术的可用速度中可以看到该趋势的例子。具体地说,对于将要出现的PCIeTM3.0代的发信号速度,期望带宽从目前的PCIeTM2.0代的级别(每秒5.0千兆传输(GT/s))翻倍,所述PCIeTM2.0代的级别是跟据PCI ExpressTM规范基础规范版本2.0(2007年1月17日公布)(下文称为PCIeTM规范)的。但是,由于工程上的挑战,产业上通过采用较慢(8.0GT/s vs.10.0GT/s)的速度并且不执行8b/10b编码来进行折衷,从而达到接近10.0GT/s的带宽。为了使得技术能够跟上行业带宽需求的步伐,需要各种技术。
一种技术是压缩。这些年来,压缩已经被成功地用于各种互连系统。但是,这些已知的压缩技术可能遇到复杂性和开销成本的问题,这减小了它们的效用。
发明内容
根据本发明的一个方面,提供了一种用于压缩分组的方法,包括:将输入到发射机的分组的分组头部与存储的分组头部进行比较,所述存储的分组头部对应于与从所述发射机发送的所述分组类型相同的在先分组;基于所述比较生成比较矢量;如果所述分组头部与所述存储的分组头部相匹配,那么从所述发射机发送不带有所述分组头部的所述分组;用不同的压缩技术来压缩所述分组的数据部分;以及用关于所发送的每一个分组的信息来更新所述不同的压缩技术的频率表,并且每发送预定数量的分组仅更新一次所述不同的压缩技术的树。
根据本发明的另一个方面,提供了一种用于压缩分组的装置,包括:头部缓冲器,用于存储从发射机发送的在先分组的在先分组头部,所述头部缓冲器包括多个条目,每一个条目用于存储一分组类型的在先分组头部;比较器,用于将待发送的分组的分组头部与所述头部缓冲器的、对应于所述待发送的分组的分组类型的条目中存储的在先分组头部进行比较;生成器,用于基于所述比较生成比特矢量,并且基于所述比较发送不带有所述分组头部的至少一部分的所述分组;以及事务层,所述事务层包括所述头部缓冲器、所述比较器和所述生成器,其中,所述事务层包括独立的头部压缩逻辑和数据压缩逻辑;所述头部压缩逻辑包括所述头部缓冲器、所述比较器和所述生成器,并且所述数据压缩逻辑用于使用不同的压缩技术来压缩所述分组的数据部分,用关于所发送的每一个分组的信息来更新所述不同的压缩技术的频率表,并且每发送预定数量的分组仅更新一次所述不同的压缩技术的树。
根据本发明的另一个方面,提供了一种用于压缩分组的系统,包括:耦合到互连的发射机,所述发射机包括第一压缩逻辑,所述第一压缩逻辑用于将分组的分组头部与存储的分组头部进行比较,所述存储的分组头部对应于与从所述发射机发送的所述分组类型相同的上一个分组,所述第一压缩逻辑还用于基于所述比较生成比较矢量,并且如果所述分组头部和所述存储的分组头部相匹配,那么从所述发射机发送不带有所述分组头部的所述分组,用不同的压缩技术来压缩所述分组的数据部分,以及用关于所发送的每一个分组的信息来更新所述不同的压缩技术的频率表,并且每发送预定数量的分组仅更新一次所述不同的压缩技术的树;耦合到所述互连的接收机,所述接收机包括第二压缩逻辑,所述第二压缩逻辑用于接收所述分组和所述比较矢量,并且从所述接收机的头部缓冲器中获得与所述分组的所述分组头部相对应的头部;以及耦合到所述接收机和所述发射机的动态随机存取存储器(DRAM)。
附图说明
图1是根据本发明的一个实施例的分组的框图。
图2提供了根据本发明的实施例的、在压缩之前和之后的示例性分组头部。
图3是根据本发明的实施例的半导体设备的一部分的框图。
图4是根据本发明的一个实施例的头部压缩引擎的框图。
图5是根据本发明的实施例的用于执行头部压缩的流程图。
图6是根据本发明的实施例的用于数据分组的压缩方法的流程图。
图7是根据本发明的实施例的系统的框图。
具体实施方式
在各种实施例中,可以通过提供压缩技术来改进穿过互连(例如,根据第二代或第三代PCIeTM或其它这种协议的PCIeTM互连)的数据传输。在许多实现中,不同的技术可以用于压缩分组的头部和数据部分。具体地说,可以利用头部和数据的不同特性以应用适当的压缩技术。对于典型的点对点(PtP)互连,分组的头部部分的各个组成部分保持不变。例如在PCIeTM头部中,时间代码(TC)、事务层分组(TLP)摘要(TD)、属性(Attr)、AT、长度、请求者ID、标签、BE和地址部分的高位比特对于来自PCIeTM终端上的代理的一系列请求保持不变。实施例可以利用比特的该共性。应当理解,虽然本文关于PCIeTM实现进行了描述,但是实施例可以应用到其它互连技术中。
可以在事务层(在接收端和发送端)提供存储装置以存储分组头部。在一个实施例中,对于可以接收的最常见的请求类型,事务层的每个发送机和接收机端可以维护一存储装置(例如,4个双字(DW),其中DW是4个字节或32比特)。经验数据表明,大多数(例如,>90%)的请求类型可以来自于少数的几种类型(例如,非邮递(non-posted,NP)读取请求、存储器读取(MRd)、邮递(posted)存储器写入(MWr)或数据结束(CPLD))。每个这种存储装置可以包括多个条目(例如,每个条目4个DW),以保持一请求类型的最近接收的分组的所有头部比特的副本。
此外,可以提供分组匹配逻辑。对于发送端事务层,该逻辑可以对将被发送的分组头部的每一个字节执行比较(可以将存储装置中所存储的字节初始化为全0),并且准备一比特矢量,其包括关于与(该类型的)先前分组的字节相匹配的字节的信息。因此,基于该比较,可以准备一比特矢量。该矢量(例如,16比特)跟踪哪些字节与先前发送的同一类型的分组上的相同位置处的字节成功地匹配。注意,比较可以在不同的粒度上执行,例如,在多于一个字节的级别上执行。例如,可以比较8对两个字节(2B)的头部部分,并且替代地发送8比特的矢量,从而提供更好的比较,其代价是找到匹配的概率更低。
在分组传输期间,该比特矢量随后被附加到分组上(例如,作为前缀)。在另一个变形中,在分组的物理层字段中的比特可以指示头部是否携带了该比较矢量。对于实现了少量压缩的情况,这有助于最小化比较矢量的开销,下文将进一步描述。作为一个示例,后面的变形有助于在同一类型的两个后续请求之间发现很少共性的情况下,最小化开销。
现在参照图1,示出了根据本发明的一个实施例的分组的框图。虽然本文结合第三代PCIeTM分组进行描述,但是应当理解,实施例可以应用于任何基于分组的通信方案。如图1所示,分组10包括多个部分,包括头部和数据部分。部分20和70可以对应于链路和物理层头部,并且可以包括各种信息,例如预定的编码、长度值、校验和值和序列值,所有这些都可以被并入到第一部分20中。此外,循环冗余校验和(CRC)部分可以出现在最末端部分70中。在这两个头部部分之间,如本文所描述的比较矢量30(并且在各个实施例中,所述矢量可以是2字节部分)可以为头部的压缩提供根据。类型部分40可以指示分组的类型,并且其可以由接收机用于确定从中可以获得所存储的分组头部的适当的存储缓冲器。在此之后,可以提供压缩的头部部分50。取决于到达的分组头部和对应的所存储的分组头部之间的共性的数量,在PCIeTM实现中,该头部可以在0到16字节之间。在该头部部分之后,可以提供数据有效负载部分60。如本文所讨论的,可以根据不同的压缩技术来压缩该有效负载部分。虽然在图1的实施例中显示了该特定实现,但是本发明的范围并不限于此。
不从发射机向接收机发送与比较矢量中的显示逻辑值“1”的位置相对应的头部字节,因此减少了要发送的头部的数量。取而代之的是,接收机端逻辑保持同一类型的先前请求的副本,并且使用比较矢量根据所存储的副本来恢复缺少的字节。因此对于分组重建,接收机端事务层接收压缩的头部,并且通过检查比较矢量以及根据其存储装置中所存储的最近发送的分组头部的副本来获取“缺少的/未发送的”字节,从而重建分组头部。
使用本发明的实施例,可以实现对分组的头部部分的可变数量的压缩。现在参照图2,示出了根据本发明的实施例的,在压缩前和压缩后的示例性的TLP头部。如图2所示,头部100(其可以是存储器读取(MemRd)分组类型)可以具有TLP头部部分104,它是三个双字(即,12字节)。此外,存在链路和物理层头部102,以及结尾的链路和物理层头部部分106。如图所示,压缩后头部分组100`包括比特矢量103,其识别所述分组的头部部分与所存储的同一类型的最近发送的分组(即,最近的MemRd分组)的头部之间的共性。之后是头部部分104,其包括这两个头部的非匹配部分。如图所示,实现了4个字节的缩减。
类似地,可以针对其它分组类型实现压缩节省。如图2所示,存储器写入头部(MemWr)包括TLP头部部分124,它是4个双字(即,16字节)宽。此外还包括链路和物理层头部122和126以及数据部分128。如在压缩的头部部分120`中所示,存在比特矢量123,其使得能够发送缩减的头部部分124。在所示的示例中,发送5个字节的头部部分,而不是分组120的16个字节的头部部分,从而节省了带宽。在分组的末端还显示了填充字节127。虽然示出了这些特定的例子,但是本发明的范围并不限于此。
实施例可以被结合到许多不同的互连类型中。现在参照图3,示出了根据本发明的实施例的半导体设备的一部分的框图,例如处理器、芯片组、外围设备等,其经由链路(例如,PCIeTM链路)进行通信。如图3所示,可以从设备的逻辑接收分组缓冲器205中的用于穿过链路275(例如,PtP链路)来传输的事务,在一些实现中,其可以是先入先出(FIFO)缓冲器。虽然为了便于说明显示为单个缓冲器,但是应当理解,在不同的实施例中,针对不同的头部类型以及不同的数据类型,可以提供多个这种缓冲器。到来的事务可以被提供到事务层210,并且更具体地说是提供给输入逻辑212,其可以执行各种功能,例如在多个这种事务之间进行仲裁以及在传输之前准备分组。输入逻辑212可以向一个或多个压缩引擎(例如,头部压缩逻辑214和数据压缩逻辑216)提供各种信息。这是由于在分组的头部和数据部分中存在不同类型的信息,所以可以使用不同的压缩技术。当已经执行了适当的压缩方法时(当允许时),压缩的信息可以被提供到分组生成逻辑218,其可以根据压缩的信息产生分组。然后,分组可以被输出到链路和物理层250,其可以包括输入逻辑252、压缩逻辑254,在各个实施例中,其可以是可选的、用于对分组的链路和物理层头部部分执行压缩的引擎。最后,在模拟前端(AFE)256(在一个实施例中,其可以连接到物理层)中调节之后,分组可以被沿着链路275发送。虽然为了便于说明示出了这些高级的视图,但是应当理解,在特定的实现中可以存在另外的逻辑和结构。类似的电路存在于从链路275起的接收方向中,以使得到来的分组在链路和物理层250中被处理并且被提供到事务层210以便进一步处理,其中包括解包逻辑224,以及使用解压缩逻辑226和228对头部和数据部分进行解压缩,所述解压缩逻辑226和228用于如上所述对头部和数据部分进行解压缩。
现在参照图4,示出了根据本发明的一个实施例的头部压缩引擎的更多细节。如图4所示,事务层300可以包括各种部件,其中包括压缩引擎340。到来的头部可以被存储在各个FIFO中,每一个FIFO与最常见类型的要发送的分组相关联。即,非邮递头部缓冲器305、邮递头部缓冲器310和结束(CPL)头部缓冲器315可以输出要被提供到仲裁器320的头部,所述仲裁器在这些不同的分组类型之间进行仲裁,并且向头部压缩逻辑350提供获胜的分组,在头部压缩逻辑350中,头部被提供到比较和压缩逻辑355,其可以是字节比较器以将到来的头部与对应的同一类型的所存储的头部进行比较。更具体地说,头部缓冲器360可以包括多个条目,每一个条目存储了给定分组类型的最近的头部。如图4所示,这种条目可以包括最近的存储器读取和写入头部、最近的结束头部、最近的配置读取和写入头部以及最近的IO读取和写入头部。注意,头部缓冲器360被不断地用刚刚接收到的分组头部来更新(即,所存储的分组头部被替换)。虽然在图4的实施例中示出了这些特定的示例,但是在其它实施例中,可以存储另外的或不同的头部。
比较和压缩逻辑355可以生成比较矢量,其可以是两个字节,以覆盖多达16字节的头部信息,其中每个比特对应于一个字节的比较,其中,逻辑1电平指示匹配并且逻辑0电平指示不匹配。基于该比较矢量和头部信息,分组形成逻辑350可以根据该信息和数据(如果有的话)来形成分组。因此,仅发送头部的那些不同的部分(即,对应于逻辑0的部分)。此外,压缩引擎逻辑340还可以输出类型指示符以指示与头部相对应的分组的类型。
此外,在一些情况下,控制器(例如,控制逻辑370)可以限制压缩的量以符合分组对齐要求,例如,对于PCIeTM来说,所有分组是4字节的倍数。在要求头部分组是4DW的实施例中,可以选择某些字节不被压缩。假设13个字节显示了匹配(字节0从不被压缩),那么得到的头部分组将具有1字节的分组类型加上2字节的头部,再加上2个字节,该2个字节没有发现匹配,从而总共是5个字节。作为替代,另外三个字节可以被未压缩地发送(任意三个),以使得得到的分组是8个字节(或2个双字)。注意,在各种实施例中,或者经由控制逻辑370作为压缩引擎340的一部分,或者与其相分离,一控制器可以确定是否应允许或禁止压缩。也就是说,如果基于多个比较,确定压缩没有提高性能(即,由于在分组之间相对较少的共性),那么可以禁止由压缩引擎340执行压缩。这可以基于根据现行状况的对正传输的数据的使用和压缩比监视。
注意,独立的数据路径可以从数据缓冲器320和325向数据压缩逻辑335提供数据,其中,如果允许的话可以对数据应用不同的压缩技术。然后,(可能的)压缩数据被发送到分组形成逻辑350,在该处,形成完整的分组并且输出到例如链路层。虽然在图4的实施例中示出了该特定的实现,但是在其它实施例中,其它电路和逻辑可以被用于执行压缩。
现在参照图5,示出了用于执行根据本发明的实施例的头部压缩的流程图。如图5所示,可以在发射机的事务层中执行方法400。方法400可以以接收第一分组类型作为开始(框410)。然后,确定是否允许分组压缩。如果不允许,那么分组头部可以被发送(框415)并且方法结束。
否则,控制转到框430,其中,将分组头部与同一分组类型的所存储的分组头部进行比较。如上所述,该存储的分组头部可以存在于事务层的头部缓冲器中。然后,可以基于比较来生成比较矢量。如上所述,在一个实现中,可以生成一比特矢量,其中,每个比特具有用于指示两个头部的对应字节之间的匹配的第一值,以及用于指示不匹配的第二值。接下来,可以确定所述比较矢量是否指示完全匹配(框450)。如果指示完全匹配,那么可以只发送比较矢量,而不发送任何分组头部(框460)。否则,控制转到菱形框470,其中,确定是否存在至少部分的匹配。如果存在部分的匹配,那么可以发送所述比较矢量和分组头部的不匹配部分(框480)。相反,如果头部的各个部分都不匹配,那么控制转到框490,其中,比较矢量和完整的分组头部都被发送。虽然在图5的实施例中示出了该特定实现,但是本发明的范围并不限于此。应当理解,解压缩可以以大致相反的方式发生,以使得比较矢量被用于获得给定类型的所存储的分组头部,并且对于头部的没有被发送的任何匹配的部分,所存储的头部缓冲器可以用于重建期望的头部部分。注意,在发射和接收的情况下,到来的分组都被存储在头部缓冲器中以便将来进行比较。
数据中的可变性远大于在头部分组中的可变性。对于这种表面上看来随机的数据,可以使用更高级的压缩技术。基于字典的压缩方法使用符号(通常为字节)的频率来产生信息的更有效的编码(在该情况下是数据比特)。一种压缩技术是霍夫曼(Huffman)算法,其用于无损的数据通信。Huffman算法假定数据集中的符号的频率已经被预先计算。该算法的一种变形(称为自适应Huffman算法)在发射机和接收机两端都连续地建立所传送和所发送的符号的频率表。
用已经被发送的每一个符号(例如,符号可以是字节)的频率来更新已经被发送的分组的频率表。可以存储一阵列,其基于频率为每一个符号定义了可变长度代码(对于更频繁使用的符号定义更短的代码),在每个分组传输之后进行重建。可以用硬件来实现基于Huffman算法的压缩逻辑。这种实现可以包括基于在频率表中所反映的符号的频率来建立编码阵列。
在各个实施例中,可以采用自适应Huffman算法的变形来压缩分组的数据部分。也就是说,可以较不频繁地建立Huffman树(每“N”个分组一次,其中N是通过软件设置的可编程的值)。在一些实施例中,N可以在100到1000之间,虽然本发明的范围并不限于此。通过这样做,能够建立高延时的流水线以计算Huffman树。
也可以使用替代的压缩技术。在一个实施例中,可以仅将16个最常用的符号编码。例如,仅用5个比特来编码00、01、03、04…0F,即,0之后跟随实际的二进制表示。剩余的240个符号可以被编码在9个比特中,“1”之后跟随8个比特的表示。还可能有其它实现。
如上所述,对于数据部分,可以使用与上述用于头部的基于比特矢量的压缩技术不同的压缩技术。现在参照图6,示出了根据本发明的实施例的、用于分组的数据部分的压缩方法的流程图。如图6所示,方法500可以在接收到分组的数据部分时开始(框510)。基于分组中的符号(例如,字节),可以更新压缩引擎(例如,图3的数据压缩逻辑)的频率表(框520)。在一些实施例中,头部压缩、数据压缩和链路层分组压缩(例如,PCIeTM中的信用(credit)和确认分组)可以使用类似的基于字典的压缩技术。在这种实施例中,每个分组类型的频率表是独立的。
然后,可以确定从压缩引擎的结构的最近更新起,所接收到的数据部分的数量是否已经达到阈值(菱形框530)。如果没有达到阈值,那么可以使用基于逻辑压缩的符号编码来对数据部分进行编码,并且发送所述数据部分(框540)。
相反,如果在菱形框530处确定数据部分的数量达到阈值,那么控制转移到框550,其中,可以基于频率表中的符号的频率来更新压缩引擎的编码。然后控制转移到框540,如上所述,在框540可以使用更新后的编码来压缩数据部分并且相应地发送。
因此,实施例提供了频率表的“缓慢更新”,其对压缩的效率只有很少影响。在使用PCIeTM数据通信的示例性实施例中,使用如本文所描述的缓慢更新技术,基本上不会导致压缩效率的任何损失。在一个实施例中,如果大约每100个分组建立一次阵列,那么可以实现良好的带宽减少。
虽然上述实施例是关于Huffman和修改的自适应Huffman算法的,但是其它实现可以使用另外的基于字典和频率的算法。因此,在各个实施例中,对结构和相对可重复的分组头部的先验知识使得能够经由头部的比特矢量来使用高度压缩,并且替代地可以对分组的数据部分使用基于字典加频率的算法。对数据压缩的选择算法可以基于实现的方便性。
关于分组的校验和部分,因为CRC比特的几乎随机的特性,所以对这种部分进行压缩可能会没有太多益处。事实上,自适应Huffman算法的性能会受到影响,因为它扭曲了数据有效负载的符号的分布,并且不能在易发生错误的互连上发送压缩的CRC。因此,在各个实施例中,校验和中的比特的频率分布不应当与数据有效负载的频率分布合并。由于校验和信息的开销小,一些实现可以选择不压缩校验和信息,或者可以为该信息提供单独的压缩引擎。类似地,信用分组可以具有独立的压缩引擎和频率表。在一些实施例中,可以基于针对头部压缩所描述的比特矢量技术来压缩信用分组。
通过将用于分组的头部和数据部分的单独的方案进行组合,可以实现高度的压缩。该方案减少了带宽,并且因此使得有机会在给定的频率获得带宽或者减少从一代互连到下一代互连在频率上的递增的改变。在一些实现中,在TLP带宽中的减少可以大约是50-60%。当对于客户端应用头部通信量占主导时,单个应用可以达到多达2倍的带宽减少。但是,数据部分的可变编码也提供了显著的优点,这在服务器应用中可能更为显著。由于通过互连通道来发送更少的数据,所以实施例还可以减少动态功率。因此,当产业标准保持在第二代或第三代速度(5.0GT/s或者8.0GT/s)时,使用本发明的实施例的平台能够以少量的额外逻辑提供更高的带宽。
实施例可以实现为许多不同的系统类型。现在参照图7,示出了根据本发明的实施例的系统的框图。如图7所示,多处理器系统600是点对点互连系统,并且包括经由点对点互连650耦合的第一处理器670和第二处理器680。如图7所示,处理器670和680中的每一个可以是多核处理器,它们包括第一和第二处理器核心(即,处理器核心674a和674b,以及处理器核心684a和684b)。
仍然参照图7,第一处理器670还包括存储器控制器中心(MCH)672和点对点(P-P)接口676和678。类似地,第二处理器680包括MCH682和P-P接口686和688。如图7所示,MCH672和682将处理器耦合到各自的存储器,即,存储器632和存储器634,它们可以是本地地连接到相应的处理器的主存储器(例如,动态随机存取存储器(DRAM))的多个部分。第一处理器670和第二处理器680可以分别经由P-P互连652和654耦合到芯片组690。如图7所示,芯片组690包括P-P接口694和698。注意,一个或多个部件可以包括根据本发明的一个实施例的压缩电路,从而执行如本文所描述的分组头部和有效负载压缩。
此外,芯片组690包括接口692,以将芯片组690与高性能图形引擎638耦合。继而,芯片组690可以经由接口696耦合到第一总线616。如图7所示,各种I/O设备614连同总线桥618可以耦合到第一总线616,所述总线桥618将第一总线616耦合到第二总线620。各种设备可以耦合到第二总线620,它们包括例如键盘/鼠标622、通信设备626和数据存储单元628,例如磁盘驱动器或其它大容量存储设备,其在一个实施例中可以包括代码630。此外,音频I/O624可以耦合到第二总线620。
实施例可以实现为代码,并且可以存储在其上存储有指令的存储介质中,所述指令可以用于对系统进行编程以执行所述指令。存储介质可以包括但并不限于任何类型的盘片,包括软盘、光盘、固态驱动器(SSD)、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘、半导体设备,例如只读存储器(ROM)、随机存取存储器(RAM),例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存存储器、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡,或者适合于存储电子指令的任何其它类型的介质。
虽然参照有限数量的实施例描述了本发明,但是本领域的技术人员将会想到它们的多种变型和改变。应由所附权利要求覆盖落入本发明的真实精神和范围内的所有这种变型和改变。
Claims (16)
1.一种用于压缩分组的方法,包括:
将输入到发射机的分组的分组头部与存储的分组头部进行比较,所述存储的分组头部对应于与从所述发射机发送的所述分组类型相同的在先分组;
基于所述比较生成比较矢量;
如果所述分组头部与所述存储的分组头部相匹配,那么从所述发射机发送不带有所述分组头部的所述分组;
用不同的压缩技术来压缩所述分组的数据部分;以及
用关于所发送的每一个分组的信息来更新所述不同的压缩技术的频率表,并且每发送预定数量的分组仅更新一次所述不同的压缩技术的树。
2.根据权利要求1所述的方法,还包括:与所述分组一起发送所述比较矢量。
3.根据权利要求2所述的方法,还包括:与所述分组一起发送所述分组头部的一部分,其中,所述部分不同于所述存储的分组头部的对应的部分。
4.根据权利要求2所述的方法,还包括:基于与多个比较相关联的阈值,禁止所述比较和生成,并且发送具有所述分组头部并且没有所述比较矢量的所述分组,其中,所述多个比较中的每一个对应于不同的分组头部。
5.根据权利要求1所述的方法,还包括:将所述分组的所述分组头部存储在事务层的头部缓冲器的第一部分中,以代替所述存储的分组头部。
6.根据权利要求1所述的方法,还包括:在耦合到所述发射机的接收机中接收所述分组和所述比较矢量,并且从所述接收机的头部缓冲器中获得与所述分组的所述分组头部相对应的头部。
7.根据权利要求6所述的方法,还包括:基于所述分组的类型和所述比较矢量的值来访问所述头部缓冲器。
8.根据权利要求1所述的方法,还包括:用与用于数据和头部分组的第一压缩技术不同的第三压缩技术来压缩链路层分组,其中,如果所述第一压缩技术使用频率表,那么维护用于所述链路层分组的独立的频率表。
9.一种用于压缩分组的装置,包括:
头部缓冲器,用于存储从发射机发送的在先分组的在先分组头部,所述头部缓冲器包括多个条目,每一个条目用于存储一分组类型的在先分组头部;
比较器,用于将待发送的分组的分组头部与所述头部缓冲器的、对应于所述待发送的分组的分组类型的条目中存储的在先分组头部进行比较;
生成器,用于基于所述比较生成比特矢量,并且基于所述比较发送不带有所述分组头部的至少一部分的所述分组;以及
事务层,所述事务层包括所述头部缓冲器、所述比较器和所述生成器,其中,所述事务层包括独立的头部压缩逻辑和数据压缩逻辑;所述头部压缩逻辑包括所述头部缓冲器、所述比较器和所述生成器,并且所述数据压缩逻辑用于使用不同的压缩技术来压缩所述分组的数据部分,用关于所发送的每一个分组的信息来更新所述不同的压缩技术的频率表,并且每发送预定数量的分组仅更新一次所述不同的压缩技术的树。
10.根据权利要求9所述的装置,其中,所述数据压缩逻辑基于在频率表中所维护的符号的频率,并且用于更新压缩技术,所述压缩技术每发送预定数量的分组仅生成一次符号的压缩编码。
11.根据权利要求9所述的装置,还包括耦合到所述比较器的控制逻辑,用于禁止所述比较和生成,其中,所述事务层用于基于与多个比较相关联的阈值来发送具有所述分组头部并且没有所述比特矢量的所述分组,所述多个比较中的每一个对应于不同的分组头部。
12.根据权利要求11所述的装置,其中,如果允许所述分组头部压缩,那么所述控制逻辑使得所述分组头部的压缩指示器处于第一状态,并且如果禁止所述分组头部压缩,那么使得所述分组头部的压缩指示器处于第二状态。
13.根据权利要求9所述的装置,还包括分组形成逻辑,用于生成所述分组头部并且将所述分组的所述分组头部存储在所述头部缓冲器的第一部分中,所述第一部分对应于所述分组的类型。
14.一种用于压缩分组的系统,包括:
耦合到互连的发射机,所述发射机包括第一压缩逻辑,所述第一压缩逻辑用于将分组的分组头部与存储的分组头部进行比较,所述存储的分组头部对应于与从所述发射机发送的所述分组类型相同的上一个分组,所述第一压缩逻辑还用于基于所述比较生成比较矢量,并且如果所述分组头部和所述存储的分组头部相匹配,那么从所述发射机发送不带有所述分组头部的所述分组,用不同的压缩技术来压缩所述分组的数据部分,以及用关于所发送的每一个分组的信息来更新所述不同的压缩技术的频率表,并且每发送预定数量的分组仅更新一次所述不同的压缩技术的树;
耦合到所述互连的接收机,所述接收机包括第二压缩逻辑,所述第二压缩逻辑用于接收所述分组和所述比较矢量,并且从所述接收机的头部缓冲器中获得与所述分组的所述分组头部相对应的头部;以及
耦合到所述接收机和所述发射机的动态随机存取存储器(DRAM)。
15.根据权利要求14所述的系统,其中,所述第一压缩逻辑包括头部缓冲器和比较器,所述头部缓冲器用于存储所述存储的分组头部,所述头部缓冲器包括多个条目,每一个条目用于存储一分组类型的分组头部,所述比较器用于生成所述比较矢量。
16.根据权利要求14所述的系统,其中,所述第二压缩逻辑基于所述分组的类型和所述比较矢量的值来访问所述接收机的所述头部缓冲器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/492,304 US8111704B2 (en) | 2009-06-26 | 2009-06-26 | Multiple compression techniques for packetized information |
US12/492,304 | 2009-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101930418A CN101930418A (zh) | 2010-12-29 |
CN101930418B true CN101930418B (zh) | 2013-12-18 |
Family
ID=43369602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101712594A Active CN101930418B (zh) | 2009-06-26 | 2010-04-28 | 用于分组信息的多种压缩技术 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8111704B2 (zh) |
CN (1) | CN101930418B (zh) |
DE (1) | DE112010002704B4 (zh) |
TW (1) | TWI440314B (zh) |
WO (1) | WO2010151351A1 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110113649A (ko) * | 2009-03-19 | 2011-10-17 | 후지쯔 가부시끼가이샤 | 수신 장치, 송신 장치, 수신 방법, 송신 방법, 통신 시스템 및 통신 방법 |
US9397785B1 (en) | 2010-04-12 | 2016-07-19 | Marvell International Ltd. | Error detection in a signal field of a WLAN frame header |
WO2012106635A1 (en) | 2011-02-04 | 2012-08-09 | Marvell World Trade Ltd. | Control mode phy for wlan |
CN102360381B (zh) * | 2011-09-29 | 2014-03-12 | 深圳众为兴技术股份有限公司 | 一种对嵌入式程序进行无损压制的装置和方法 |
US9131528B2 (en) | 2012-04-03 | 2015-09-08 | Marvell World Trade Ltd. | Physical layer frame format for WLAN |
US9390042B2 (en) * | 2012-07-03 | 2016-07-12 | Nvidia Corporation | System and method for sending arbitrary packet types across a data connector |
CN103873443B (zh) * | 2012-12-13 | 2018-04-27 | 联想(北京)有限公司 | 信息处理方法、本地代理服务器和网络代理服务器 |
US9485687B2 (en) * | 2013-02-15 | 2016-11-01 | Exalt Wireless, Inc. | Selective compression in a wireless communication system |
CN104038450B (zh) * | 2013-03-04 | 2017-09-19 | 华为技术有限公司 | 基于pcie总线的报文传输方法与装置 |
US9414432B2 (en) | 2013-04-03 | 2016-08-09 | Marvell World Trade Ltd. | Physical layer frame format for WLAN |
KR102339298B1 (ko) | 2013-09-10 | 2021-12-14 | 마벨 아시아 피티이 엘티디. | 옥외 wlan용 확장 보호 구간 |
US10218822B2 (en) | 2013-10-25 | 2019-02-26 | Marvell World Trade Ltd. | Physical layer frame format for WLAN |
US10194006B2 (en) | 2013-10-25 | 2019-01-29 | Marvell World Trade Ltd. | Physical layer frame format for WLAN |
KR102526618B1 (ko) | 2013-10-25 | 2023-04-27 | 마벨 아시아 피티이 엘티디. | 와이파이를 위한 레인지 확장 모드 |
US9825884B2 (en) | 2013-12-30 | 2017-11-21 | Cavium, Inc. | Protocol independent programmable switch (PIPS) software defined data center networks |
US11855818B1 (en) | 2014-04-30 | 2023-12-26 | Marvell Asia Pte Ltd | Adaptive orthogonal frequency division multiplexing (OFDM) numerology in a wireless communication network |
US9473601B2 (en) | 2014-06-19 | 2016-10-18 | Cavium, Inc. | Method of representing a generic format header using continuous bytes and an apparatus thereof |
US9497294B2 (en) | 2014-06-19 | 2016-11-15 | Cavium, Inc. | Method of using a unique packet identifier to identify structure of a packet and an apparatus thereof |
US9742694B2 (en) | 2014-06-19 | 2017-08-22 | Cavium, Inc. | Method of dynamically renumbering ports and an apparatus thereof |
US9516145B2 (en) | 2014-06-19 | 2016-12-06 | Cavium, Inc. | Method of extracting data from packets and an apparatus thereof |
US9531849B2 (en) | 2014-06-19 | 2016-12-27 | Cavium, Inc. | Method of splitting a packet into individual layers for modification and intelligently stitching layers back together after modification and an apparatus thereof |
US9961167B2 (en) | 2014-06-19 | 2018-05-01 | Cavium, Inc. | Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof |
US9635146B2 (en) | 2014-06-19 | 2017-04-25 | Cavium, Inc. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US10616380B2 (en) | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US9438703B2 (en) | 2014-06-19 | 2016-09-06 | Cavium, Inc. | Method of forming a hash input from packet contents and an apparatus thereof |
US9531848B2 (en) | 2014-06-19 | 2016-12-27 | Cavium, Inc. | Method of using generic modification instructions to enable flexible modifications of packets and an apparatus thereof |
US9628385B2 (en) | 2014-06-19 | 2017-04-18 | Cavium, Inc. | Method of identifying internal destinations of networks packets and an apparatus thereof |
US10050833B2 (en) | 2014-06-19 | 2018-08-14 | Cavium, Inc. | Method of reducing latency in a flexible parser and an apparatus thereof |
US9606781B2 (en) | 2014-11-14 | 2017-03-28 | Cavium, Inc. | Parser engine programming tool for programmable network devices |
US10887430B2 (en) | 2015-10-21 | 2021-01-05 | Dragonwave-X, Llc | Compression in communications |
US11593280B2 (en) * | 2019-06-25 | 2023-02-28 | Intel Corporation | Predictive packet header compression |
CN113439268B (zh) * | 2020-01-22 | 2023-01-06 | 华为技术有限公司 | 一种基于PCIe的数据传输方法、装置及系统 |
CN113485950A (zh) * | 2021-06-22 | 2021-10-08 | 上海天数智芯半导体有限公司 | 一种合并发送PCIe存储器写请求的系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760345B1 (en) * | 2002-01-16 | 2004-07-06 | Raytheon Company | Compressing cell headers for data communication |
CN1599358A (zh) * | 2003-06-05 | 2005-03-23 | 格鲁斯番维拉塔公司 | 使用散列表的atm首部压缩 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3651941B2 (ja) | 1994-11-28 | 2005-05-25 | キヤノン株式会社 | 画像再生装置 |
US6963570B1 (en) * | 1997-07-15 | 2005-11-08 | Comsat Corporation | Method and apparatus for adaptive loss-less compression of cell/packet headers |
US6009488A (en) | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US6804238B1 (en) * | 1998-12-29 | 2004-10-12 | International Business Machines Corporation | System and method for transmitting compressed frame headers in a multiprotocal data transmission network |
US6865164B1 (en) * | 1999-09-08 | 2005-03-08 | Motorola, Inc. | Packet transmission method |
US7170866B2 (en) * | 1999-12-08 | 2007-01-30 | Cello Partnership | Quality of service enhancements for wireless communications systems |
US6859897B2 (en) * | 2000-03-02 | 2005-02-22 | Texas Instruments Incorporated | Range based detection of memory access |
US7545755B2 (en) * | 2000-03-03 | 2009-06-09 | Adtran Inc. | Routing switch detecting change in session identifier before reconfiguring routing table |
KR100349649B1 (ko) | 2000-07-11 | 2002-08-24 | 주식회사 큐리텔 | 동영상압축 부호화장치의 가변 길이 부호화기 |
CA2461320C (en) * | 2001-10-05 | 2011-10-25 | Aware, Inc. | Systems and methods for multi-pair atm over dsl |
US6987761B2 (en) | 2002-02-13 | 2006-01-17 | International Business Machines Corporation | Inbound data stream controller with pre-recognition of frame sequence |
US7362780B2 (en) * | 2002-12-11 | 2008-04-22 | Nokia Corporation | Avoiding compression of encrypted payload |
US8296452B2 (en) | 2003-03-06 | 2012-10-23 | Cisco Technology, Inc. | Apparatus and method for detecting tiny fragment attacks |
US7602785B2 (en) * | 2004-02-09 | 2009-10-13 | Washington University | Method and system for performing longest prefix matching for network address lookup using bloom filters |
JP2006135871A (ja) * | 2004-11-09 | 2006-05-25 | Fujitsu Ltd | フレーム伝送装置およびフレーム受信装置 |
US7916750B2 (en) | 2005-12-28 | 2011-03-29 | Intel Corporation | Transaction layer packet compression |
KR100745782B1 (ko) | 2006-09-29 | 2007-08-03 | 한국전자통신연구원 | 동적 헤더 압축 장치 및 방법 |
US7949794B2 (en) | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
US7808995B2 (en) * | 2006-11-16 | 2010-10-05 | L-3 Communications Integrated Systems L.P. | Methods and systems for relaying data packets |
US20080117906A1 (en) * | 2006-11-20 | 2008-05-22 | Motorola, Inc. | Payload header compression in an rtp session |
US7848280B2 (en) * | 2007-06-15 | 2010-12-07 | Telefonaktiebolaget L M Ericsson (Publ) | Tunnel overhead reduction |
WO2009004631A1 (en) * | 2007-07-05 | 2009-01-08 | Ceragon Networks Ltd. | Data packet header compression |
US7793001B2 (en) * | 2008-05-09 | 2010-09-07 | Microsoft Corporation | Packet compression for network packet traffic analysis |
US7990973B2 (en) * | 2008-08-13 | 2011-08-02 | Alcatel-Lucent Usa Inc. | Hash functions for applications such as network address lookup |
-
2009
- 2009-06-26 US US12/492,304 patent/US8111704B2/en not_active Expired - Fee Related
-
2010
- 2010-03-12 WO PCT/US2010/027130 patent/WO2010151351A1/en active Application Filing
- 2010-03-12 DE DE112010002704.8T patent/DE112010002704B4/de active Active
- 2010-03-29 TW TW099109407A patent/TWI440314B/zh not_active IP Right Cessation
- 2010-04-28 CN CN2010101712594A patent/CN101930418B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760345B1 (en) * | 2002-01-16 | 2004-07-06 | Raytheon Company | Compressing cell headers for data communication |
CN1599358A (zh) * | 2003-06-05 | 2005-03-23 | 格鲁斯番维拉塔公司 | 使用散列表的atm首部压缩 |
Also Published As
Publication number | Publication date |
---|---|
US8111704B2 (en) | 2012-02-07 |
DE112010002704T5 (de) | 2013-01-17 |
CN101930418A (zh) | 2010-12-29 |
WO2010151351A1 (en) | 2010-12-29 |
TW201105049A (en) | 2011-02-01 |
US20100329255A1 (en) | 2010-12-30 |
DE112010002704B4 (de) | 2021-08-26 |
TWI440314B (zh) | 2014-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101930418B (zh) | 用于分组信息的多种压缩技术 | |
CN107590533B (zh) | 一种用于深度神经网络的压缩装置 | |
US10817460B2 (en) | RDMA data sending and receiving methods, electronic device, and readable storage medium | |
EP2192715A2 (en) | System including transmitter and receiver | |
CN107153587B (zh) | 利用数据缩减在高性能直接附接非易失性存储器上进行有效跨设备冗余实现 | |
US20080222500A1 (en) | Data relay apparatus, data relay method and data relay integrated circuit | |
CN116594948A (zh) | Usb数据传输方法、装置、计算机设备及存储介质 | |
CN115395961A (zh) | 基于联合中间件的数据无损压缩及加密传输方法 | |
CN1943202B (zh) | 数据存储系统中的数据编码和解码 | |
US20230152972A1 (en) | Storage system and data processing method in storage system | |
US9923669B2 (en) | Distributed Reed-Solomon codes for simple multiple access networks | |
CN111221792A (zh) | 一种基于ceph的rbd文件传输方法及其系统 | |
CN117897697A (zh) | 用于芯片到芯片接口的按需分组化 | |
US11768622B2 (en) | Differential snapshot without array support | |
CN115129509A (zh) | 一种数据传输方法、装置、介质 | |
WO2021036189A1 (zh) | Rdma数据发送及接收方法、电子设备及可读存储介质 | |
US20190124180A1 (en) | Packet compression and decompression | |
US8938019B2 (en) | Data transmitting device and data transmitting/receiving method | |
US7451240B2 (en) | Method and related circuit for increasing network transmission efficiency by increasing a data updating rate of a memory | |
TW202137014A (zh) | 通信系統、通信元件及通信方法 | |
CN106940684A (zh) | 一种按比特写数据的方法及装置 | |
CN117493248B (zh) | Usb数据传输方法、装置、系统、电子设备及存储介质 | |
US20190369896A1 (en) | Leveraging server resources for storage array performance enhancements | |
CN113552999A (zh) | 存储装置 | |
CN112445772A (zh) | 用于数据压缩和解压缩的装置和方法 |
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 |