网络分组净荷压缩的制作方法

文档序号:7921821阅读:134来源:国知局
专利名称:网络分组净荷压缩的制作方法
技术领域
本公开一般涉及电子领域。更具体地,本发明实施例一般涉及网络分 组净荷压缩和/或解压縮。
背景技术
网络已经成为信息处理技术的一个组成部分。经过连续几代的发展, 网络已经能够传送大量的数据。然而,随着通过网络传送的数据规模不断
增加,对移动大量数据的计算设备组件的需求也不断增加。例如,在10G 比特的以太网络中,数据与网络往返移动的速率能够达到10Gb/s或 1.25GB/s (减去一些分组报头和以太网开销)。这些增加的负荷会导致延迟、 带宽需求、能耗和实现成本等的增加。


参照附图进行了详细描述。在附图中,参考标记最左侧的数字表示第 一次出现该参考标记的附图。在不同的附图中使用相同的附图标记指示相 同的项。
图1示出了网络环境实施例的各种组件,该网络环境可以用来实现在 此讨论的各个实施例。
图2和图5示出了计算系统实施例的方框图,该计算系统可以用来实 现在此讨论的一些实施例。
图3示出了根据一个实施例的描述符格式。
图4示出了根据一个实施例的方法的流程图。
具体实施例方式
在下面的描述中,阐明了大量的具体细节以提供对各个实施例的全面 理解。然而,在没有这些具体细节的情况下,本发明的各种实施例也可以实现。在其它实例中,没有具体描述公知方法、过程、组件和电路以避免 掩盖本发明的具体实施例。此外,本发明实施例的不同方面可以使用不同 的手段来执行,诸如集成半导体电路("硬件"),组织成一个或多个程序的 计算机可读指令("软件"),或硬件和软件的某种组合。本公开中提及"逻 辑"的目的是指硬件,软件,或其某种组合。
此处讨论的一些实施例可以压縮在网络接口控制器(NIC)和存储设备
(例如,包括主系统存储器和/或高速缓存)之间、以及在处理器(或处理 器核)和存储设备(例如,包括主系统存储器和/或高速缓存)之间传输的
数据的某些部分(比如"分组净荷")。例如,从处理器核和NIC的角度来 看,这些技术可以降低带宽使用、能耗、成本(例如,否则可能需要更加 复杂/昂贵的系统设计)和/或延迟,从而可以改善整个平台的性能和/或效率。 图1示出了网络环境100的实施例的各种组件,网络环境100可以用 来实现在此讨论的各个实施例。该环境100包括网络102,以支持在各种设 备之间进行通信,其中各种设备诸如服务器计算机104、台式计算机106 (例如,工作站或台式计算机)、膝上型(或笔记本)计算机108、再现设 备IIO (例如,网络打印机、复印机、传真机、扫描仪、多功能一体机等)、 无线接入点112、个人数字助理或智能电话114、机架式计算系统(未示出) 等。网络102可以是任意类型的计算机网络,包括内部网、互联网和/或其 组合。
设备104—114可以通过有线和/或无线连接耦合至网络102。因此,网 络102可以是有线和/或无线网络。例如,如图1所示,无线接入点112可 以耦合到网络102以使得其它无线功能设备(比如设备114)能够与网络 102进行通信。在一个实施例中,无线接入点112可以包括业务管理能力。 此外,在设备104—114之间通信的数据可以被加密(或受密码保护),例 如,用来限制非授权接入。
网络102可以使用任意类型的通信协议,例如,以太网、快速以太网、 千兆以太网、广域网(WAN)、光分布式数据接口 (FDDI)、令牌环网、专 用线、模拟调制解调、数字用户线(DSL和其变形如高比特率DSL(HDSL)、 集成服务数字网络DSL (IDSL)等)、异步传输模式(ATM)、光缆调制解 调和/或火线(FireWire)。通过网络102的无线通信可以基于以下网络或系统中的一个或多个
无线局域网(WLAN)、无线广域网(WWAN)、码分多址(CDMA)蜂窝 无线电话通信系统、全球移动通信系统(GSM)蜂窝无线电话系统、北美 数字蜂窝(NADC)蜂窝无线电话系统、时分多址(TDMA)系统、扩展 TDMA (E-TDMA)蜂窝无线电话系统、第三代合作伙伴计划(3G)系统 如宽带CDMA (WCDMA)等。此外,网络通信可以通过下列设备来建立 内部网络接口设备(比如,与计算系统出现在相同的物理封装内)或者外 部网络接口设备(比如,相对于其耦合到的计算系统该设备拥有独立的封 装和/或电源)如网络接口控制器(NIC)。
图2示出了根据本发明实施例的计算系统200的方框图。该计算系统 200包括一个或多个中央处理单元(CPU)或处理器202-1到202-P (可能 在此处称为"多个处理器202"或"处理器202")。多个处理器202可能经 由互连网络(或总线)204进行通信。多个处理器202可以包括通用处理器、 网络处理器(其处理在计算机网络102上通信的数据)或其它类型的处理 器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。 此外,多个处理器202可以具有单核或多核设计。具有多核设计的多个处 理器202可以在相同的集成电路(IC)管芯上集成不同类型的处理器核。 此外,具有多核设计的多个处理器202可以实施为对称或非对称的多处理 器。在实施例中,在此论述的各种操作可以由系统200的一个或多个组件 来执行。
芯片组206也可以与互连网络204进行通信。芯片组206可以包括图 形存储器控制集线器(GMCH) 208。 GMCH208可以包括与存储器212进 行通信的存储器控制器210。存储器212可以存储数据,包括由处理器202 或计算系统200中包括的任何其它设备来执行的指令序列。在本发明的一 个实施例中,存储器212可以包括一个或多个易失性存储(或存储器)设 备,诸如随机访问存储器(RAM)、动态RAM (DRAM)、同步DRAM (SDRAM)、静态RAM (SRAM)或其它类型的存储设备。非易失性存储 器也可以作为硬盘来使用。其它设备也可以经由互连网络204进行通信, 诸如多个CPU和/或多个系统存储器。
GMCH208也可以包括与图形加速器216进行通信的图形接口 214。在本发明的一个实施例中,图形接口 214可以经由加速图形端口 (AGP)与 图形加速器216进行通信。在本发明的一个实施例中,显示器(诸如平板 显示器、阴极射线管显示器(CRT)、投影屏等)可以通过例如信号转换器 与图形接口 214进行通信,该信号转换器可以将在存储设备如视频存储器 或系统存储器中存储的图像的数字表示转换为由显示器解释并显示的显示 信号。由显示设备产生的显示信号可以在由显示器解释并随后显示在显示 器上之前经过各种控制设备。
集线器接口 218可以允许GMCH 208和输入/输出控制集线器(ICH) 220进行通信。ICH 220可以为与计算系统200进行通信的I/O设备提供接 口。 ICH220可以通过外设桥(或控制器)224来与总线222进行通信,其 中外设桥(或控制器)224例如,外设组件互连(PCI)桥、通用串行总线 (USB)控制器或其它类型的外设桥或控制器。桥224可以在处理器202 与外围设备之间提供数据路径。可以采用其它类型的拓扑结构。此外,多 个总线可以与ICH 220进行通信,例如通过多个桥或控制器。此外,在本 发明的各个实施例中,与ICH 220进行通信的其它外设可以包括电子集 成驱动器(IDE)或小型计算机系统接口 (SCSI)硬盘驱动器、USB端口、 键盘、鼠标、并口、串口、软驱、数字输出支持(比如,数字视频接口 (DVI)) 或其它设备。
总线222可以与音频设备226、 一个或多个磁盘驱动器228以及一个或 多个网路接口设备230(其与计算机网络102进行通信并且可以遵循参照图 1所讨论的各种类型通信协议中的一个或多个通信协议)进行通信。在实施 例中,网络接口设备230可以是NIC。其它设备可以经由总线222进行通 信。此外在本发明的一些实施例中,各种组件(诸如网络接口设备230)可 以与GMCH208进行通信。另外,处理器202和GMCH208可以组合以形 成单个芯片。此外在本发明的其它实施例中,图形加速器216可以包括在 GMCH 208中。
此外,计算系统200可以包含易失性和/或非易失性存储器(或存储设
备)。例如,非易失性存储器可以包括下列介质中的一个或多个只读存储
器(ROM)、可编程ROM (PROM)、可擦除PROM (EPROM)、电EPROM (EEPROM)、磁盘驱动器(比如,228)、软盘、压縮盘ROM (CD-ROM)、数字多功能盘(DVD)、闪存、磁光盘或可以存储电子数据(例如,包括指 令)的其它类型的非易失性机器可读介质。在实施例中,系统200的组件 可以按点对点(PtP)结构进行布置。例如,处理器、存储器和/或输入/输 出设备可以通过如参照图5所论述的多个点对点接口来互连。
如图2所示,存储器212可以包括一个或多个操作系统(O/S) 232, 或应用程序234。存储器212也可以存储一个或多个设备驱动程序、分组缓 冲238、描述符236 (其在一些实施例中指向缓冲器238)、协议驱动等,以 便于通过网络102进行通信。存储器212中的程序和/或数据可以互换到磁 盘228中作为存储器管理操作的一部分。应用程序234可以(在处理器202 上)执行以利用耦合到网络102的一个或多个计算设备(例如图1中的设 备104-114)来传送一个或多个分组。在实施例中,分组可以是一个或多个 符号和/或数值的序列,该符号和/或数值可以通过从至少一个发送者发送到 至少一个接收者(例如,通过诸如网络102这样的网络)的一个或多个电 信号进行。例如,每个分组包括报头,该报头包括各种信息,这些信息可 以用于路由和/或处理该分组,比如源地址、目的地址、分组类型等。每个 分组也可以具有包括原始数据(或内容)的净荷,该分组通过计算机网络 (比如网络102)在不同计算设备(比如图1中的设备104-114)之间传输 该原始数据。
在实施例中,应用程序234可以利用O/S 232例如通过设备驱动(未示 出)来与系统200的各种元件进行通信。因此,设备驱动包括网络适配器 230专用命令来在O/S232和网络适配器230之间提供通信接口。此外,在 一些实施例中,网络适配器230可以包括(网络)协议层用于实现物理通 信层以便通过网络102向远程设备发送网络分组以及从远程设备接收网络 分组。网络102可以包括任意类型的计算机网络,例如参照图1所论述的 那些计算机网络。网络适配器230还可以包括DMA引擎,其可以将分组写 入到在存储器212中的分配给可用描述符236的缓冲器238。另外,网络适 配器230可以包括网络适配器控制器254,其可以包括硬件(例如,逻辑电 路)和/或可编程处理器(例如多个处理器202)来执行与适配器相关的操 作。在实施例中,适配器控制器254可以是MAC (媒体访问控制)组件。 网络适配器230还可以包括存储器256,例如任意类型的易失性/非易失性存储器,并且可以包括一个或多个高速缓存。
如图2所示,网络适配器230可以包括压縮/解压縮逻辑260 (其可以 实现为硬件、软件或其组合)来分别对从网络102接收的或发送到网络102 的分组净荷进行压縮和/或解压缩。在实施例中,逻辑260可以是可选的, 并且适配器控制器254对净荷执行压縮和/或解压縮。
另外, 一个或多个处理器202可以包括压縮/解压縮逻辑263,比如, 以便允许处理器202在将已压縮的净荷存储到存储设备之前对分组净荷进 行压縮和/或解压縮,其中的存储设备例如存储器212 (例如,在缓冲器238 内)和/或高速缓存264。例如在一个实施例中,在存储器212中(例如, 通过网络适配器230)存储的已压縮净荷可以由逻辑263解压缩随后存储到 一个高速缓存264中。此外,高速缓存264中存储的已解压缩的净荷(例 如,通过逻辑263解压縮)可以在将其存储到存储器212中(比如在缓冲 器238内)之前由逻辑263进行压縮,并且随后在通过网络102传输之前 由网络适配器230进行解压縮。可选地,多个处理器202而不是单个逻辑 263,可以根据指令(比如,存储在例如存储器212和/或高速缓存264的存 储设备中)来压縮/解压縮数据。
此外,高速缓存264可以是共享或专用高速缓存。高速缓存264可以 包括各种级别,例如一级(Ll)高速缓存、二级(L2)高速缓存、中级高 速缓存(MLC)或末级高速缓存(LLC)中的一个或多个。另外,可以在 除了或包括图2所示位置之外的位置中提供高速缓存264。例如在一些实施 例中,高速缓存264可以耦合至总线204。
图3示出了根据一个实施例的描述符格式300。在一些实施例中, 一个 或多个描述符236可以具有图3所示的格式。如图所示,描述符300可以 包括物理地址字段302 (比如,用于指示存储设备中存储的相应的净荷数 据的物理地址)、净荷原始长度字段304 (比如,用于指示例如在压縮之前 初始净荷的长度)、分组状态和杂项字段306 (比如,用于指示相应分组的 状态和其它信息)、压縮后净荷长度字段308 (比如,用于指示压縮后净荷 的长度)以及压縮类型字段310 (比如,用于指示所使用的压縮类型)。
通常,可以用任意压縮类型来压縮净荷。例如,存在多种压縮方法比 如Lempd-Ziv,如果净荷包含高重复模式则该压縮方法可以基于字典结构(dictionary construction)或平凡压縮(trivial compression)来将分组净荷 压縮至更小。压縮量取决于分组内模式的重复程度。在此描述的实施例不 排除实现任意形式的压縮或多个压縮方法,这些压縮方法可以应用在包含 不同类型数据的分组净荷。 一种实现可以使用两个或更多个不同的压縮方 法来压缩净荷,并且选取压縮结果更优的方法。在一个实施例中,可以使 用IBM⑧的MXT压缩方法。也可以使用专注于较小块(较小的多个高速缓 存行,比如128到512字节块)的方法。
图4示出了根据实施例用于压縮和/或解压縮分组净荷的方法400的流 程图。在一些实施例中,参照图1-3和/或图5所讨论的一个或多个组件可 以用来执行方法400的一个或多个操作。
参照图1-4,在操作402处,可以确定是否己经接收到分组净荷。例如, 一个处理器202和/或网络适配器230可以在操作402处接收分组净荷。在 操作404处,可以确定是否要更改所接收分组净荷的大小。例如,操作404 可以确定所接收的分组净荷是已压缩的(例如,通过参照描述符如描述符 300中的字段)并且解压縮该分组净荷。对于没有被压縮的分组净荷,操作 404可以确定是否要压縮所接收的分组净荷。
在一个实施例中,基于与阈值的比较,操作404可以确定是否要压縮 分组净荷。例如,小于阈值的分组净荷可以不进行压縮,而具有更大大小 的净荷可以进行压縮。此外,在操作404处可以考虑分组净荷内容的类型。 例如,时间敏感数据比如音频流或视频流可以不压縮。可选地,非时间敏 感数据比如图像和/或文本文件可以压缩。在实施例中,操作404可以由网 络适配器230和/或处理器202 (或由其中包含的逻辑)来执行。
在操作408处,可以确定是否如在此所讨论的,例如参照图2和图3 所讨论的,对净荷进行压縮或解压縮。在操作410处,执行压縮/解压縮(例 如,根据在参照图3所讨论的相应的描述符中所指示的压縮类型)。在操作 412处,存储已压縮/解压縮的净荷,例如在此如参照图2和图3所讨论的。
在实施例中,当分组来自网络102时,其与NIC (例如,网络适配器 230)中的(或由NIC访问的)描述符相关联。该描述符包含存储器地址(例 如,在存储器212或直接高速缓存访问(DCA)实现情况下的高速缓存264 中的位置地址),NIC将分组存储在该地址。另外,NIC在描述符(例如参照图3所讨论的)内准备(例如,写)状态信息, 一般向多个处理器202 通知关于分组的属性和状态。然后,该NIC应用直接存储器访问(DMA) 将分组和描述符传送至存储器212或者DCA至高速缓存264。
例如,在输出流程中(当将分组传送到网络102时),处理器202可以 从高速缓存264中读取未压縮数据并将其压縮,将数据写入到存储器212 内新的存储器位置。随后处理器可以创建描述符,该描述符指示净荷已压 縮并提供指向新的存储器位置的指针。在实施例中,在写入到与NIC (例 如,网络适配器230)相关的寄存器之后,该NIC执行描述符、报头和压 縮净荷的DMA传输。如果在高速缓存264中找到描述符和净荷,则该NIC 也可以从高速缓存264中获取数据(比如,使用DCA)。然后,NIC解压縮 净荷,并且创建最终的分组以在网络102上发送出去。
因此,在一些实施例中,至少一些关键数据路径可以通过减少在其上 传输的字节数目而变得更加高效,其中关键数据路径例如包括PCI Express、 系统互连和/或存储器互连。压縮能够为其它程序和非网络数据提供额外的 带宽空间。通过减少NIC访问主存储器的时间(通过访问更少的字节),则 对该资源的约束更少。这会由于需要支持更高网络带宽而进一步增强。此 外,使用更小的净荷大小(例如,由于压縮)可以使NIC与存储器的延迟 更短。此外,减少多个芯片之间或芯片内的交互数目可以降低系统200和/ 或500的组件的能耗,这些组件包括例如,NIC、芯片组、处理机和主存储 器。另外,由于压縮/解压縮可以由驱动程序来执行或由现有的存储器复制 例程来抽象,因此不会对系统软件架构产生影响。在一些实施例中,现有 的DMA和描述符机制可以用来指示分组净荷是否己被压縮。此外,网络协 议不需更改。此外, 一些实施例可以用于与安全有关的加密/解密方案。
图5示出了根据本发明实施例的计算系统500,该计算系统500以点对 点(PtP)结构进行布置。具体地,图5示出了一种系统,其中处理器、存 储器和输入/输出设备通过多个点对点接口进行互连。参照图l-4所讨论的 操作可以由系统500的一个或多个组件来执行。
如图5所示,系统500可以包括若干处理器,为了清楚起见仅示出了 其中的两个处理器502和504。处理器502和504可以分别包括一个或多个 高速缓存264和/或逻辑263。存储器510和/或512可以存储各种数据,如参照图4中的存储器212所讨论的数据。
在实施例中,处理器502和504可以是参照图4所讨论的处理器402 中的一个。处理器502和504可以分别使用点对点(PtP)接口电路516和 518经由PtP接口 514进行数据交换。此外,在本发明的一些实施例屮,处 理器502和504可以包括高速(例如通用)I/O总线通道以便于与各种组件 (例如I/O设备)进行通信。此外,处理器502和504可以分别使用点对点 接口电路526、 528、 530和532经由单独的PtP接口 522和524来与芯片组 520进行数据交换。芯片组520也可以经由图形接口 536来与图形电路534 进行数据交换,比如使用PtP接口电路537。
在处理器502和504中可以提供本发明的至少一个实施例。例如,在 处理器502禾IV或504上可以提供参照图2所讨论的一个或多个组件(比如 逻辑263)。然而本发明的其它实施例可以存在于图5的系统500中的其它 电路、逻辑单元或设备中。此外,本发明的其它实施例可以分布于图5所 示的若干电路、逻辑单元或设备中。
芯片组502可以利用PtP接口电路541与总线540进行通信。总线540 可以与一个或多个设备进行通信,这些设备比如总线桥542和1/0设备543。
总线桥542可以经由总线544与其它设备进行通信,其中其它设备例如键 盘/鼠标545、通信设备546 (比如调制解调器、网络接口设备或可以与网络 102通信的其它通信设备,包括例如图2的网络适配器230)、音频I/O设备 547和/或数据存储设备548。数据存储设备548可以存储代码549,该代码 可以由处理器502和/或504执行。
在本发明的各种实施例中,比如参照图1-5在此所讨论的操作可以作为 硬件(例如逻辑电路)、软件、固件或其组合来实现,这些硬件、软件、固 件或其组合可以作为计算机程序产品来提供,该计算机程序产品包括机器 可读或计算机可读介质,其上存储有可以用来对计算机(例如包括处理器) 进行编程以执行在此所讨论的过程的指令(或软件程序)。机器可读介质可 以包括如在此所讨论的存储设备。
另外,这种计算机可读介质可以如同计算机程序产品进行下载,其中 该程序可以经由通信链路(例如,总线、调制解调器或网络连接)通过包 含在载波或其它传播介质中的数据信号的方式来从远程计算机(例如服务器)传送到请求计算机(例如客户端)。
说明书中提及"一个实施例"或"实施例"表示结合该实施例所描述 的具体特征、结构、和/或特性包括在至少一个实现中。说明书中不同地方 出现的语句"在一个实施例"可以或可以不全部指相同的实施例。
此外,在说明书和权利要求中,可以使用术语"耦合"和"连接"及 其派生词。在本发明的一些实施例中,"连接"可以用来指示两个或更多元 件彼此直接物理或电性接触。"耦合"可以表示两个或更多元件直接物理或 电性接触。然而,"耦合"也可以表示两个或更多元件并不彼此直接接触, 但是仍然可以相互协作或相互作用。
因此,尽管使用具体针对结构特征和/或方法行为的语言描述了本发明 的实施例,但是可以理解,所要求保护的主题并不局限于所描述的具体特 征或行为。此外,这些具体特征和行为作为所要求保护的主题的实例形式 来公开。
权利要求
1、一种网络输入/输出(I/O)系统,包括第一逻辑,用来在存储设备中存储已压缩的分组净荷之前接收未压缩的分组净荷并且将所述未压缩的分组净荷进行压缩;以及第二逻辑,用来基于在与所述已压缩的分组净荷对应的描述符中存储的一个或多个比特来解压缩所存储的分组净荷,其中所述一个或多个所存储的比特指示所存储的分组净荷之前已被压缩。
2、 如权利要求1所述的系统,其中所述第一逻辑是网络适配器,并且 所述未压縮的分组净荷是从计算机网络接收的。
3、 如权利要求l所述的系统,其中所述第一逻辑基于所述分组净荷的 大小与阈值的比较来对所述未压縮的分组净荷进行压縮。
4、 如权利要求l所述的系统,其中所述第一逻辑基于所述分组净荷的 类型来对所述未压縮的分组净荷进行压縮。
5、 如权利要求4所述的系统,其中处理器从耦合到所述处理器的高速 缓存接收所述未压縮的分组净荷。
6、 如权利要求5所述的系统,其中所述高速缓存包括共享高速缓存或 专用高速缓存中的一个或多个。
7、 如权利要求5所述的系统,其中所述高速缓存包括一级(Ll)高速 缓存、二级(L2)高速缓存、中级高速缓存(MLC)或末级高速缓存(LLC) 中的一个或多个。
8、 如权利要求l所述的系统,其中所述描述符包括物理地址字段, 用来指示相应的分组净荷数据的物理地址;净荷原始长度字段,用来指示压縮前的原始净荷长度; 一个或多个分组状态和杂项字段,用来指示相应 的分组的状态和其它信息;压縮后净荷长度字段,用来指示压縮后的净荷 的长度;以及压縮类型字段,用来指示所使用的压縮类型。
9、 如权利要求1所述的系统,其中所述存储设备包括一个或多个主存 储器或高速缓存。
10、 如权利要求9所述的系统,其中所述高速缓存包括共享高速缓存 或专用高速缓存中的一个或多个。
11、 如权利要求9所述的系统,其中所述高速缓存包括一级(Ll)高 速缓存、二级(L2)高速缓存、中级高速缓存(MLC)或末级高速缓存(LLC) 中的一个或多个。
12、 一种方法,包括 接收分组净荷;基于在与所述分组净荷相关的所存储的描述符中的一个或多个比特, 确定是否对所述分组净荷进行压縮或解压縮;根据所述确定来压縮或解压縮所述分组净荷;以及 将所压縮或所解压縮的分组净荷存储在存储设备中。
13、 如权利要求12所述的方法,其中仅在确定所述分组净荷大于阈值 之后或者仅基于所述分组净荷的类型来执行所述压縮。
14、 如权利要求12所述的方法,还包括从网络接收所述分组净荷。
15、 如权利要求12所述的方法,还包括将已解压縮的分组发送到网络。
全文摘要
描述了涉及网络分组净荷压缩/解压缩的方法和装置。在实施例中,未压缩的分组净荷在计算系统的各个组件之间传输之前可以进行压缩。例如,分组净荷在在网络接口卡或控制器(NIC)与存储设备(例如,包括主系统存储器和/或高速缓存)之间以及在处理器(或处理器核)与存储设备(例如,包括主系统存储器和/或高速缓存)之间传输之前可以进行压缩。还公开了其它实施例。
文档编号H04L12/56GK101409675SQ20081017854
公开日2009年4月15日 申请日期2008年9月28日 优先权日2007年9月28日
发明者R·哈加德黑里, S·K·拉森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1