一种能够进行业务硬件加速的装置及其方法 技术领域 本发明一般涉及移动通信系统, 具体地, 涉及能够对移动通信系统中的高速上行 业务和高速下行业务进行硬件加速的装置及其方法。
背景技术 随着移动宽带业务的发展, 全球信息及通信市场正在面临一个显著转变。可以预 见, 在未来数年后, 移动带宽将会产生巨大的增长。无线业务量的巨增给业务处理单板 (例 如, WCDMA 业务处理单板) 的性能带来了很大的挑战, 这要求处理能力实现几倍甚至十几倍 的规格提升。通用处理器在信息技术与通信技术的融合过程中逐渐占据优势, 但是通用处 理器在通信领域的速度还赶不上专用处理器, 因此, 在一段时间内需要协处理器的加速。 为 了满足带宽需求, 业务硬件加速是可以考虑的方案之一。
例如, 为了适应更高的分组数据业务数据速率, 3GPP/WCDMA 标准组织提出了高 速分组接入 (HSPA : High Speed Packet Access) 、 HSPA+ 等标准, 进一步增强了性能, 从而 支持更高的每用户峰值速率。高速下行分组接入 (HSDPA : High Speed Downlink Packet Access) 在下行链路上能够达到高达 168Mbit/s 的速率, 高速上行分组接入 (HSUPA : High Speed Uplink Packet Access) 在上行链路上能够达到高达 24Mbit/s 的速率。无线网络控 制器 (RNC : Radio Network Controller) 管理着很多基站和用户, 根据话务模型统计, HSPA 的分组交换 (PS : Packet-Switched) 业务流量达到了 RNC 处理的整个 WCDMA 业务的 90%。因 此, 高速、 大流量 PS 数据在业务处理单板的硬件加速成为首先考虑的问题。
在一种现有技术方案中, 采用一片通用的多核处理器完成 WCDMA 业务的处理, 其 中内嵌 Kasumi/Snow 3g 硬件加速单元。多核处理器可以是例如 Rmi、 Cavium、 FreeScale 等 多核处理器产品, 这一类处理器通常带有 16/32 个 MIPS 核以及 2 个万兆以太网 (10GE) 的接 口。 每个处理器核运行一个业务进程, 业务报文的处理在虚拟中央处理单元 (VCPU : Virtual Central Processing Unit) 中由软件完成。当需要加解密运算的时候, 可以通过内部总线 使用内嵌的硬件加速单元, 同时, VCPU 软件同步等待加解密的结果返回后继续往下运行。
上述现有技术方案存在如下缺点。 通用的多核处理器中的每个单独核的处理能力 不强, 主频通常仅在 1GHz 左右。对于 I/O 密集型的 WCDMA 业务, 采用 VCPU 软件处理业务报 文的这种方式获得的性能不佳。虽然这类处理器通常带有各种硬件加速单元, 但是这些硬 件加速单元在 WCDMA 业务处理上都不能发挥作用。通常, 这些硬件加速单元可以较好地用 于报文转发处理, 但是却不能支持对于业务报文的分片、 重组等处理。虽然内嵌的 Kasumi/ Snow 3g 硬件加速单元性能较高, 但是其仅能用于加解密处理, 而不能用于整个 WCDMA 业 务的处理流程中除了加解密之外的很多其它消耗 CPU 处理能力的运算。例如, 这些硬件加 速单元无法用于报文大块内存比特移位搬移、 负载循环冗余校验 (CRC : Cyclic Redundancy Check) 运算、 报文校验和计算、 协议数据单元 (PDU : Protocol Data Unit) 分段和级联、 PDU 分片重组等处理。 如果采用纯软件执行这些处理, 则单个进程所能处理的用户数就比较少, 更重要的是处理延时不确定。当 VCPU 负载比较低时, 处理延时较小。但是, 一旦 VCPU 负载
很高, 则处理延时就比较大。 延时波动的巨烈将体现在用户下载速率的波动上, 导致用户体 验差。
在另一种现有技术方案中, 采用一片带有网络处理器 (NP : Network Processor) 功 能的多核处理器芯片来完成 WCDMA 业务的处理, 例如, LSI 公司的 Axxia 通信处理器 (ACP : Axxia Communication Processor) 产品。这一类处理器通常带有 4/8 个 PPC 核和 2 个 10GE 的接口, 并且内嵌有 Kasumi/Snow 3g 加密引擎和 NP 加速单元。通用的 NP 加速单元具有可 编程特点, 可以用来实现 WCDMA 业务中的无线链路控制 (RLC : Radio Link Control) 分段级 联、 重组、 比特移位、 C/T 封装、 CRC 计算等功能。每个处理器核运行一个业务进程, 业务报文 的处理大部分由 VCPU 软件完成, 加速部分由 NP 加速单元完成。报文的处理采用 Pipeline 流水方式, 由一个 NP 加速单元转发到另一个 NP 加速单元, 每个可编程 NP 加速单元执行加 速特定部分的功能。
上述现有技术方案存在如下缺点。该技术采用带有 NP 功能的芯片, 但是其自带的 多核处理器的每个单独核处理能力不强, 主频通常在 1.6GHz。 虽然由 NP 加速单元卸载了一 部分处理, 但是业务处理的其它部分也需要很强的 VCPU 处理能力。此外, 该方案的核心仍 是利用 NP 加速单元的可编程特点, 即, 实质上仍然是利用软件来实现加速功能。虽然 NP 加 速单元的可编程性具有一定的灵活性, 但是 NP 加速单元仅主要面向网络报文转发处理, 其 处理复杂业务的效率低下, 因此只能进行一些简单重复的处理。可见, 这类 NP 处理单元的 功能大都受到了限制, 其灵活性不够, 处理能力也不足, 整个芯片业务处理能力不够。
因此, 本领域需要能够适应业务需求的业务硬件加速方案。发明内容
本发明针对现有技术中存在的问题, 提出了能够进行业务硬件加速的装置及其方法。 根据一个方面, 本发明提供了一种能够进行业务硬件加速的装置, 包括 : 逻辑硬件 加速模块, 配置为接收来自核心网的下行数据报文, 并且将所述下行数据报文存储到中央 处理单元 (CPU) 的内存区中 ; 以及 CPU, 配置为从所述内存区获取所述下行数据报文, 并且 对所述下行数据报文执行 GPRS 隧道协议用户面部分 (GTPU) 协议处理以及报文数据汇聚协 议 (PDCP) 处理。所述逻辑硬件加速模块进一步配置为对经过所述 PDCP 处理的数据报文执 行无线链路控制 (RLC) 处理以生成 RLC 协议数据单元 (PDU) , 对所述 RLC PDU 执行帧协议 (FP) 组帧处理和封装处理以生成下行以太网报文, 并且发送所述下行以太网报文。
此外, 在本发明提供的能够进行业务硬件加速的装置中, 所述逻辑硬件加速模块 还配置为接收来自基站的上行数据报文, 对所述上行数据报文执行解封装处理以生成经 过解封装处理的 PDU, 对所述经过解封装处理的 PDU 执行 RLC 处理以生成业务数据单元 (SDU) , 并且将所述 SDU 存储到所述 CPU 的内存区中。所述 CPU 还配置为从所述内存区获取 所述 SDU, 并且对所述 SDU 执行封装处理以生成上行以太网报文。 所述逻辑硬件加速模块还 配置为发送所述上行以太网报文。
根据另一个方面, 本发明提供了一种用于业务硬件加速的方法, 该方法应用于能 够进行业务硬件加速的装置, 该装置包括逻辑硬件加速模块和 CPU, 所述方法包括 : 逻辑硬 件加速模块接收来自核心网的下行数据报文, 并且将所述下行数据报文存储到所述 CPU 的
内存区中 ; 所述 CPU 从所述内存区获取所述下行数据报文, 并且对所述下行数据报文执行 GTPU 协议处理以及 PDCP 处理 ; 所述逻辑硬件加速模块对经过 PDCP 处理的数据报文执行 RLC 处理以生成 RLC PDU ; 所述逻辑硬件加速模块对所述 RLC PDU 执行 FP 组帧处理和封装 处理以生成下行以太网报文 ; 以及所述逻辑硬件加速模块发送所述下行以太网报文。
此外, 本发明提供的用于业务硬件加速的方法还包括 : 所述逻辑硬件加速模块接 收来自基站的上行数据报文 ; 所述逻辑硬件加速模块对所述上行数据报文执行解封装处理 以生成经过解封装处理的 PDU ; 所述逻辑硬件加速模块对所述经过解封装处理的 PDU 执行 RLC 处理以生成 SDU ; 所述逻辑硬件加速模块将所述 SDU 存储到所述 CPU 的内存区中 ; 所述 CPU 从所述内存区获取所述 SDU, 并且对所述 SDU 执行封装处理以生成上行以太网报文 ; 以 及所述逻辑硬件加速模块发送所述上行以太网报文。
根据另一个方面, 本发明提供了一种能够进行业务硬件加速的装置, 其采用系统 级芯片 (SOC) 来实现, 该装置包括 : 内部高级微控制器总线架构 (AMBA) Fabric 交换总线 ; 高 速协处理器总线, 其连接到所述 AMBAFabric 交换总线, 用于在连接到该高速协处理器总线 的各个单元之间交换数据以及与所述 AMBA Fabric 交换总线交换数据 ; XGE 接口, 其连接到 所述高速协处理器总线, 配置为接收来自核心网的下行数据报文 ; 多核处理器阵列, 其连接 到所述 AMBA Fabric 交换总线, 配置为对所述下行数据报文执行 GTPU 协议处理以及 PDCP 处理 ; RLC 切片硬加速单元, 其连接到所述高速协处理器总线, 配置为对经过所述 PDCP 处理 的数据报文执行重传、 分段、 级联以及添加轮询查询标志处理, 其中, 所述多核处理器阵列 进一步配置为根据所述 RLC 切片硬加速单元的处理来提取 PDU 数据 ; 加解密硬加速单元, 其连接到所述高速协处理器总线, 配置为经由所述高速协处理器总线和所述 AMBA Fabric 交换总线从所述多核处理器阵列获取所述 PDU 数据, 并且对所述 PDU 数据执行加密处理以 便生成 RLC PDU ; 以及 FP 组帧硬加速单元, 其连接到所述高速协处理器总线, 配置为对所述 RLCPDU 执行 MAC-d C/T 封装和比特移位处理, 执行 FP 帧生成处理以便生成 FP 帧, 并且对所 述 FP 帧执行封装处理以生成下行以太网报文。所述 XGE 接口还配置为发送所述下行以太 网报文。
此外, 在本发明提供的能够进行业务硬件加速的装置中, 所述 XGE 接口还配置为 接收来自基站的上行数据报文。所述装置还包括 : FP 解帧硬加速单元, 其连接到所述高速 协处理器总线, 配置为对所述上行数据报文执行 FP 帧处理和 MAC-es/is 处理 ; 增强专用信 道 (EDCH) 排序硬加速单元, 其连接到所述高速协处理器总线, 配置为对经过所述 FP 解帧硬 加速单元处理的数据报文执行 MAC-d 排序处理, 其中, 所述加解密硬加速单元还配置为对 经过所述 EDCH 排序硬加速单元处理的数据执行解密处理 ; 以及 RLC 重组硬加速单元, 其连 接到所述高速协处理器总线, 配置为对经过所述加解密硬加速单元处理的数据执行重组以 生成 SDU。 所述多核处理器阵列还配置为对所述 SDU 执行封装处理以生成上行以太网报文。 所述 XGE 接口还配置为发送所述上行以太网报文。
通过根据本发明的业务硬件加速方案, 可以极大地减轻 CPU 的负载, 减少用户面 报文处理延时, 提高整体业务的处理性能以及处理容量。 附图说明
图 1 示出了根据本发明实施例的能够进行业务硬件加速的装置的结构示意图 ;图 2 示出了根据本发明实施例的控制消息的示意图 ; 图 3 示出了根据本发明实施例的实现业务硬件加速的 FPGA 结构示意图 ; 图 4 示出了根据本发明实施例的 HSDPA 数据传输的处理流程图 ; 图 5 示出了根据本发明实施例的 HSUPA 数据传输的处理流程图 ; 以及 图 6 示出了根据本发明另一个实施例的能够进行业务硬件加速的装置的结构示意图。 具体实施方式
本发明提出了 CPU 与逻辑硬件加速模块相配合的业务硬件加速处理方案。在本发 明的实施例中, CPU 可以采用例如高性能的 X86 SandyBridge 或 IvBridge CPU 芯片, 其主 频达到 2.1GHz, 处理能力相当于 MIPS 处理器核的 10 倍。此外, 在其它实施例中, CPU 也可 以采用 MIPS 处理器、 ARM 处理器等。逻辑硬件加速模块可以执行业务硬件加速处理, 其可 以采用现场可编程门阵列 (FPGA : Field Programmable Gate Array) 或者系统级芯片 (SOC : System on Chip) 来实现。 例如, 对于处理时延要求比较高、 流量比较大的快速路径业务, 可 以采用逻辑硬件加速模块进行硬件加速, 而对于处理时延要求比较低、 流量比较小的慢速 路径业务, 可以由 CPU 来进行处理。 本发明考虑到了 HSDPA 和 HSUPA 业务的大流量、 高速率的特点。 本发明可以将原来 由 CPU 负责的 HSDPA 下行业务中的 RLC 分段级联、 Kasumi/Snow3g 加密、 媒体访问控制 (MAC) C/T 封装、 比特移位、 帧协议 (FP : Frame Protocol) 类型 1/2 组帧、 CRC 计算和 IP/UIP 传输 处理等处理交由逻辑硬件加速模块执行。本发明还可以将原来由 CPU 负责的 HSUPA 上行业 务中的上行增强专用信道 (EDCH : Enhanced Dedicated Channel) FP 类型 1/2 解帧、 CRC 校 验、 MAC-es/is 重排序、 Kasumi/Snow3g 解密、 RLC 数据报文重组等处理交由逻辑硬件加速模 块执行。本发明通过将以上描述的不经常变化的 WCDMA 业务层二协议部分进行逻辑硬化, 可以极大地减轻 CPU 的负载, 减少用户面报文处理延时, 提高整体业务的处理性能以及处 理容量。
图 1 示出了根据本发明实施例的能够进行业务硬件加速的装置的结构示意图。
如图 1 所示, 所述能够进行业务硬件加速的装置可以包括 CPU 芯片 115 (例如, X86 CPU、 MIPS 处理器、 ARM 处理器等) 、 FPGA 芯片 111 以及 2 个 10GE 的 PHY 芯片 120。CPU 芯 片 115 可以外带 DDR3 DIMM 内存 116, FPGA 芯片 111 可以外带 DDR3 颗粒内存 113 以及 QDR SRAM 存储芯片 112。FPGA 芯片 111 可以提供 2 个 XAUI 接口 119, 以便用于与 10GE PHY 芯 片 120 相连接。CPU 芯片 115 可以通过 2 个 PCIE×4 Gen2 接口 114 和 118 来与 FPGA 芯片 111 相连接。FPGA 芯片 111 可以提供双 PCIE 核以用于与 CPU 芯片 115 进行通信。PCIE 114 可以用于小流量控制消息交互, PCIE118 可以用于大流量数据块交互。CPU 芯片 115 内部的 多核处理器 117 可以负责业务和底层软件处理。
图 1 所示的能够进行业务硬件加速的装置可以针对 HSDPA 业务和 HSUPA 业务进行 硬件加速。在对 HSDPA 业务的硬件加速中, 来自核心网的下行数据报文被 10GE PHY 芯片 120 接收, 在由 FPGA 芯片 111 匹配识别后交给 CPU 芯片 115 进行业务处理, 再交给 FPGA 芯 片 111 进行 HSDPA 业务硬件加速, 然后从 10GE PHY 芯片 120 发送给基站。在对 HSUPA 业务 的硬件加速中, 来自基站的上行数据报文被 10GE PHY 芯片 120 接收, 在由 FPGA 芯片 111 匹
配识别后进行 HSUPA 业务硬件加速, 然后交给 CPU 芯片 115 进行业务处理, 处理完成后再交 给 FPGA 芯片 111 经由 10GE PHY 芯片 120 发送到核心网。
根据本发明的实施例, 在图 1 所示的 CPU 芯片 115 与 FPGA 芯片 111 之间可以采用 控制消息来实现命令的交互。图 2 示出了根据本发明实施例的控制消息的示意图。
根据本发明的实施例, 在从 CPU 到 FPGA 的下行方向, 可以为每个业务进程分配一 个发送控制消息缓冲区, 而在从 FPGA 到 CPU 的上行方向, 可以为每个业务进程分配一个接 收控制消息缓冲区。业务进程的数目可以根据 CPU 超线程数目来确定。发送控制消息缓冲 区和接收控制消息缓冲区可以位于 CPU 的 DDR3 内存中, 二者在空间上独立划分且互不干 涉。发送控制消息缓冲区的 CPU 写指针和接收控制消息缓冲区的 CPU 读指针是由业务进程 独立维护的, 发送控制消息缓冲区的 FPGA 读指针和接收控制消息缓冲区的 FPGA 写指针是 由 FPGA 逻辑维护的。上述四个指针可以位于 CPU 的 DDR3 内存中, 并且可以被 CPU 读取访 问。
存储在发送控制消息缓冲区的控制消息可以被称为下行控制消息, 而存储在接收 控制消息缓冲区的控制消息可以被称为上行控制消息。
下行控制消息可以具有可变长度, 在这种情况下, 下行控制消息可以包括下行控 制消息固定部分和下行控制消息可变部分。 然而, 根据另一个实施例, 下行控制消息也可以 具有固定长度, 在这种情况下, 下行控制消息可以仅包括下行控制消息固定部分, 而不包括 与上述的下行控制消息可变部分相关的字段等。 以下以具有可变长度的下行控制消息为例 来说明下行控制消息的结构, 本领域技术人员应当理解, 可以通过移除与实现可变长度相 关的部分和字段来得到具有固定长度的下行控制消息的结构。
下行控制消息中的下行控制消息固定部分可以包括 : CommParaTAG 字段, 用于标 识该消息为下行控制消息或上行控制消息, 并且可以作为定界符以表示消息的开始 ; 控制 消息类型字段, 用于表示该下行控制消息的类型 ; 控制消息数量字段, 用于表示子可变控制 消息的数量 ; 以及 VCPU 号字段, 用于标识业务进程编号。 此外, 下行控制消息固定部分还可 以包括 : 下行公共头部分字段 ; ReturnMsgPtr 字段, 用于指示 CPU 要求 FPGA 按原样返回的 字段 ; 以及下行控制消息类型相关内容字段, 用于承载与该下行控制消息相关的消息内容, 例如报文地址、 调度信息等。下行控制消息中的下行控制消息可变部分可以由多个子可变 控制消息组成, 子可变控制消息在仅执行加解密处理时使用, 其可以包括 PrivParaTAG 字 段、 加密五元参数等字段。 由于下行控制消息采用了可变长度, 这会导致在发送控制消息缓 冲区中进行存储时, 可能将下行控制消息的一部分保存在该缓冲区的底部, 而下行控制消 息的另一部分保存在该缓冲区的顶部, 这个特殊处理由 FPGA 在逻辑搬移下行控制消息时 判读。
上行控制消息仅包括上行控制消息固定部分, 其包括 CommParaTAG 字段、 控制消 息类型字段、 VCPU 号字段、 上行公共头部分字段、 ReturnMsgPtr 字段以及上行控制消息类 型相关内容字段等。这些字段具有与下行控制消息中的相应字段的相同或相应的作用。
应当指出, 根据本发明的下行控制消息和上行控制消息的结构并不局限于图 2 所 示以及以上描述, 其可以选择性地包括上述结构中的一个或多个字段, 或者根据实际需要 包括任何其它字段。
当 CPU 的业务进程需要发送下行控制消息到 FPGA 时, 其可以判断发送控制消息缓冲区的 CPU 写指针和 FPGA 读指针之间的剩余控制消息空间是否足够写入该下行控制消 息。如果足够, 则写入该下行控制消息, 最后更新 CPU 写指针。当 CPU 的业务进程需要读取 来自 FPGA 的上行控制消息时, 其可以轮询接收控制消息缓冲区的 CPU 读指针和 FPGA 写指 针。如果发现这两个指针不一致, 则将上行控制消息搬移出来进行后续处理, 最后更新 CPU 读指针。
当 FPGA 需要读取来自 CPU 的下行控制消息时, 其可以定时扫描发送控制消息缓冲 区的 CPU 写指针和 FPGA 读指针。如果发现这两个指针不一致, 则将下行控制消息内容搬移 出来进行后续处理, 最后更新 FPGA 读指针。当 FPGA 需要发送上行控制消息到 CPU 时, 其可 以判断接收控制消息缓冲区的 CPU 读指针和 FPGA 写指针之间的剩余控制消息空间是否足 够写入该上行控制消息。如果足够, 则写入该上行控制消息, 最后更新 FPGA 写指针。
图 3 示出了根据本发明实施例的实现业务硬件加速的 FPGA 结构示意图。
如图 3 所示, 根据本发明实施例的 FPGA 可以包括 PCIE 接口调度模块 301、 背板接 口部分、 硬件加速处理部分以及存储和配置接口部分。
PCIE 接口调度模块 301 可以提供 2 个 PCIE×4Gen2 接口, 以便与 CPU 连接。根据 本发明的实施例, FPGA 与 CPU 的各种通信需要经由该 PCIE 接口调度模块 301。PCIE 接口 调度模块 301 可以包括指令缓存 F1、 数据缓存 F2 以及上行调度缓存 F3。 背板接口部分可以包括背板接口模块 312, 其提供 2 个 XAUI 接口以便与 10GE PHY 器件连接。背板接口部分还可以包括发送调度模块 313、 发送接口模块 314、 端口 QoS 整形 模块 317、 内存管理模块 316 以及接收匹配模块 310。
存储和配置接口部分可以包括 DDR 指令调度模块 303、 QDR 指令调度模块 306、 时 钟和复位模块 308 以及 MPI 配置模块 311。
硬件加速处理部分可以包括 : 控制消息分析调度模块 321、 RLC 下行处理模块 302、 RLC 上行处理模块 307、 RLC 控制 / 状态处理模块 305、 加解密处理模块 304、 RLC PDU 调度模 块 320、 FP 组帧模块 319、 MAC 封装模块 318 以及 EDCH 上行处理模块 309。
RLC 下行处理模块 302 可以包括业务数据单元 (SDU) 缓存模块 326、 发送 PDU 消息 单元 (PMUI) 管理模块 324、 发送 PMUI 缓存 322、 PDU 成帧模块 323 以及下行重传和切片模块 325。
RLC 上行处理模块 307 可以包括上行 PDU 预处理模块 331、 上行扫描和解复用模块 329、 SDU 重组递交模块 327、 接收 PMUI 分配和管理模块 330 以及接收 PMUI 缓存 328。
此外, 用于执行 EDCH 上行处理的部分除了可以包括 EDCH 上行处理模块 309 外, 还 可以包括 MAC-d 缓存 315。
应当理解, 根据本发明实施例的 FPGA 的具体结构是可以根据实际应用的需要而 变化的。 也就是说, 图 3 所示的各个模块并非必须都包括在根据本发明实施例的 FPGA 中, 而 是可以根据需要选择性地包括其中的一个或多个模块。此外, 图 3 中所标注的表示信号处 理路径的线段和箭头仅仅是在特定应用场景下的示例性表示, 在不同的应用场景下, 箭头 的方向可以改变, 并且可以根据需要在图 3 所示的任意模块之间建立信号交互的路径。此 外, 图 3 中在信号处理路径上标注的消息或处理并不具有限制作用, 根据实际应用, 也可以 在同一信号处理路径上传递其它消息或者执行其它处理。
以下将结合图 4 和图 5 所示的处理流程来详细说明图 3 中示出的相关模块的具体
操作。 图 4 示出了根据本发明实施例的 HSDPA 数据传输的处理流程图。在图 4 流程图的 右侧示意性地示出了与流程图对应的数据报文的处理过程。
根据本发明的实施例, CPU 可以首先向 FPGA 发送配置消息, 以便配置以太网地址。 具体地, 例如, FPGA 可以利用该配置消息来配置源和目标 MAC 地址、 源和目标 IP 地址、 源和 目标端口、 协议类型等信息中的一项或多项。可选地, 配置消息可以采用图 2 所示的下行控 制消息的结构, 从而该配置消息可以被 CPU 写入到位于 CPU 内存中的发送控制消息缓冲区 中, 并且 FPGA 可以从该发送控制消息缓冲区中获得该配置消息。
根据本发明的实施例, FPGA 可以接收来自核心网的下行数据报文, 并且将下行数 据报文存储到 CPU 的内存区中。上述处理过程例如可以通过以下操作来实现。
FPGA 的背板接口模块 312 所提供的 XAUI 接口可以用于从 10GE PHY 器件接收来自 核心网的下行数据报文。
FPGA 的接收匹配模块 310 可以执行 MAC 地址 / 内容可寻址存储器 (CAM : Content Addressable Memory) 表匹配。具体地, 接收匹配模块 310 可以提取 XAUI 接口所接收的数 据报文的 MAC 地址、 IP/UIP 协议类型等信息, 将所提取的信息与如前所述根据配置消息所 预先配置的信息进行匹配识别, 从而确定该数据报文是否是发给该 FPGA 的以及确定是否 需要处理该数据报文。例如, 接收匹配模块 310 可以根据地址来分析所接收到的数据报文, 如果该数据报文并非是 EDCH FP 帧, 则接收匹配模块 310 可以确定该数据报文需要首先上 送到 CPU 处理。在这种情况下, 接收匹配模块 310 可以将该数据报文存储到 CPU 的内存区 中。可选地, 该 CPU 的内存区的分配和释放可以由 FPGA 来管理。
FPGA 的内存管理模块 316 可以分配 CPU 的内存地址并将该内存地址告知接收匹配 模块 310 以供存储下行数据报文使用。此外, 内存管理模块 316 可以用于管理 FPGA 自带的 内存, 例如, 执行请求空闲内存或者释放内存的操作等。
接收匹配模块 310 在接收到内存管理模块 316 发来的 CPU 的内存地址之后, 可以 基于该内存地址将下行数据报文存储到 CPU 的内存区中。 可选地, 接收匹配模块 310 还可以 生成接收消息并将该接收消息发送给 CPU, 其中该接收消息可以包括下行数据报文在 CPU 的内存区中的存储地址。可选地, 接收消息可以采用图 2 所示的上行控制消息的结构, 从而 该接收消息可以被 FPGA 写入到位于 CPU 内存中的接收控制消息缓冲区中, 并且 CPU 可以从 该接收控制消息缓冲区中获得该接收消息。在这种情况下, 接收匹配模块 310 可以将下行 数据报文的存储地址设置在上行控制消息的上行控制消息类型相关内容字段中。
根据本发明的实施例, CPU 可以从内存区获取下行数据报文, 并且对下行数据报文 执行 GPRS 隧道协议用户面部分 (GTPU) 协议处理以及报文数据汇聚协议 (PDCP) 处理等。此 外, CPU 可以将经过 PDCP 处理的数据报文存储在 CPU 的内存区中。上述处理过程例如可以 通过图 4 所示的步骤 S400 至步骤 S404 来实现。
在图 4 所示的步骤 S400 处, CPU 可以从内存区获取下行数据报文。可选地, CPU 可 以从接收控制消息缓冲区中获得接收消息, 并进而根据接收消息中包括的下行数据报文的 存储地址来获取下行数据报文。
在步骤 S402, CPU 可以对数据报文执行 GTPU 协议处理。例如, CPU 可以执行 GTPU 头分析、 隧道信息转换、 排序处理、 剥离报文中的 GTPU 头等处理。
在步骤 S404, CPU 可以执行 PDCP 协议处理。例如, CPU 可以执行 IPHC/ROHC 头压 缩、 封装 PDCP 头等处理。 在 PDCP 协议处理完成后, CPU 可以将处理后的数据报文存储到 CPU 的内存区中。可选地, CPU 此时可以生成插入消息并将该插入消息发送给 FPGA, 其中该插入 消息可以包括 PDCP 处理后的数据报文在内存区中的存储地址。可选地, 插入消息可以采用 图 2 所示的下行控制消息的结构, 从而该插入消息可以被 CPU 写入到发送控制消息缓冲区 中, 并且 FPGA 可以从该发送控制消息缓冲区中获得该插入消息。在这种情况下, CPU 可以 将 PDCP 处理后的数据报文的存储地址设置在下行控制消息的下行控制消息类型相关内容 字段中。
根据本发明的实施例, FPGA 可以对经过 PDCP 处理的数据报文执行 RLC 处理以生 成 RLC PDU, 对 RLC PDU 执行帧协议 (FP) 组帧处理和封装处理以生成下行以太网报文, 并且 发送下行以太网报文。上述处理过程例如可以通过图 4 所示的步骤 S406 至步骤 S418 来实 现。
在步骤 S406, FPGA 的命令分析调度模块 321 可以从插入消息中获得 PDCP 处理后 的数据报文的存储地址, 然后, FPGA 的 RLC 下行处理模块 302 中的 SDU 缓存模块 326 可以相 应地获得 SDU 描述信息, 例如地址指针、 数据长度等, 并且执行 MUI 缓存, 例如, 将 SDU 描述 信息存储到 FPGA 的 SDU 缓冲区队列中。例如, 该 SDU 缓冲区队列可以位于连接到 FPGA 的 DDR 中。 在步骤 S408, CPU 可以在根据 MAC-d 协议调度要求而预先设定的传输时间间隔 (TTI : Transmission Time Interval) 定时器超时后, 执行 MAC-d 调度, 该 MAC-d 调度可以 用于启动 FPGA 以处理数据报文。CPU 可以计算允许发送的 RLC 数据字节数并确定发送方 式, 然后基于允许发送的 RLC 数据字节数以及发送方式来生成调度消息并将该调度消息发 送给 FPGA。可选地, 调度消息可以采用图 2 所示的下行控制消息的结构, 从而该调度消息 可以被 CPU 写入到发送控制消息缓冲区中, 并且 FPGA 可以从该发送控制消息缓冲区中获得 该调度消息。在这种情况下, CPU 可以将允许发送的 RLC 数据字节数以及发送方式设置在 下行控制消息的下行控制消息类型相关内容字段中。FPGA 中的控制消息分析调度模块 321 可以从 CPU 接收到该调度消息。本领域技术人员应当理解, 步骤 S408 的处理可以作为一个 可选步骤而仅包括在优选实施例中。
在步骤 S410, FPGA 可以执行 RLC 协议处理。此处的 RLC 协议处理例如可以包括 以下操作中的一个或多个。RLC 控制 / 状态处理模块 305 可以产生控制状态 PDU, 例如, 该 控制状态 PDU 可以被提供给 PDU 成帧模块 323。下行重传和切片模块 325 可以对经过 PDCP 处理的数据报文执行重传、 分段、 级联以及添加轮询查询标志等处理。 此处, 优选地, 可以将 下行重传和切片模块 325 所产生的重传信息存储到发送 PMUI 管理模块 324, 从而, 根据实 际需要, 该发送 PMUI 管理模块 324 可以与发送 PMUI 缓存 322 相配合以执行 PDU 重传。PDU 成帧模块 323 可以基于控制状态信息、 切片信息、 重传信息等来生成关于 RLC PDU 的描述信 息, 例如, PDU 成帧模块 323 可以基于 RLC 控制 / 状态处理模块以及下行重传和切片模块的 处理情况来生成关于 RLC PDU 的描述信息, 此处, 描述信息可以包括 PDU 地址信息、 头部信 息等。此外, 可选地, PDU 成帧模块 323 可以计算加密参数, 并将该加密参数与描述信息一 起发给 RLC PDU 调度模块 320, 其中该加密参数可以用于由加解密处理模块 304 执行的加密 处理。RLC PDU 调度模块 320 可以从 PDU 成帧模块 323 处获得描述信息, 并且根据描述信息
从 CPU 的内存区中读取数据报文 (PDU 数据) , 此外, RLC PDU 调度模块 320 还具有向 CPU 的 内存区回写数据报文 (PDU 数据) 的功能。加解密处理模块 304 从 RLC PDU 调度模块 320 处 获得 PDU 数据并且执行加密处理, 例如, 执行 Kasumi/Snow3g 加密处理, 以便得到 RLC PDU。 RLC PDU 可以被发送到 FP 组帧模块 319。
此外, 响应于步骤 S408, PDU 成帧模块 323 还可以计算缓冲区占用率 (BO : Buffer Overflow) , 然后基于 BO 生成调度响应并将该调度响应发送给 CPU。可选地, 调度响应也可 以包括本次调度的字节数、 本次发送的 PDU 数目等信息。可选地, 调度响应可以采用图 2 所 示的上行控制消息的结构, 从而该调度响应可以被 FPGA 写入到接收控制消息缓冲区中, 并 且 CPU 可以从该接收控制消息缓冲区中获得该调度响应。在这种情况下, FPGA 可以将 BO、 本次调度的字节数或本次发送的 PDU 数目等设置在上行控制消息的上行控制消息类型相 关内容字段中。本领域技术人员应当理解, 步骤 S408 的处理可以作为一个可选步骤而仅包 括在优选实施例中。
在步骤 S412, FP 组帧模块 319 可以对加解密处理模块 304 生成的 RLCPDU 执行 MAC-d C/T 封装和比特移位处理。
在步骤 S414, FP 组帧模块 319 可以执行 FP 帧生成处理。例如, FP 组帧模块 319 可以执行高速下行链路共享信道 (HSDSCH : High Speed Downlink Shared Channel) / 专用 信道 (DCH : Dedicated Channel) 帧封装, 如, FP 组帧模块 319 可以构造 HSDSCH FP 帧类型 1 或类型 2。此外, 例如, FP 组帧模块 319 可以计算并添加 FP 帧头和负载 CRC。
在步骤 S416, MAC 封装模块 318 可以对 FP 帧执行传输层处理。例如, MAC 封装模 块 318 可以封装 IP/UIP 报文格式。MAC 封装模块 318 可以将内容复制到消息块, 以便封 装以太网报文。此外, 例如, MAC 封装模块 318 可以对于超过最大传输单元 (MTU : Maximum Transmission Unit) 的报文执行 IP 分片处理等。
在步骤 S418, MAC 封装模块 318 可以封装 MAC 头和虚拟局域网 (VLAN) 标签以生成 下行以太网报文。发送调度模块 313 可以对下行以太网报文的发送进行调度, 例如, 发送调 度模块 313 可以通知发送接口模块 314 发送数据。发送接口模块 314 可以在发送调度模块 313 的调度下, 经由背板接口模块 312 而发送下行以太网报文。可选地, 端口 QoS 整形模块 317 可以对数据流速执行控制。可选地, 在发送完成后, 内存管理模块 316 可以回收指针并 释放内存。
图 5 示出了根据本发明实施例的 HSUPA 数据传输的处理流程图。在图 5 流程图的 右侧示意性地示出了与流程图对应的数据报文的处理过程。
根据本发明的实施例, FPGA 可以接收来自基站的上行数据报文, 对上行数据报文 执行解封装处理以生成经过解封装处理的 PDU。上述处理过程例如可以通过图 5 所示的步 骤 S500 至步骤 S506 来实现。
在步骤 S500, FPGA 的背板接口模块 312 所提供的 XAUI 接口可以从 10GE PHY 器件 接收来自基站的上行数据报文。接收匹配模块 310 可以执行 MAC 地址 /CAM 表匹配。具体 地, 接收匹配模块 310 可以提取 XAUI 接口所接收的数据报文的 MAC 地址、 IP/UIP 协议类型 等信息, 将所提取的信息与预先配置的信息 (例如, 以上结合图 4 所描述的根据配置消息所 预先配置的信息) 进行匹配识别, 从而确定该数据报文是否是发给该 FPGA 的以及确定是否 需要处理该数据报文。例如, 接收匹配模块 310 可以根据地址来分析所接收到的数据报文(即, IP/UIP 报文) , 如果该数据报文是 EDCH 数据报文, 则接收匹配模块 310 可以确定需要执 行硬件加速处理, 否则, 将该数据报文直接上送到 CPU 处理。
在步骤 S502, 在接收匹配模块 310 确定了接收的上行数据报文是 EDCH 数据报文 时, EDCH 上行处理模块 309 可以执行 EDCH FP 帧处理, 例如 FP 解帧、 校验、 排序等。具体地, 例如, EDCH 上行处理模块 309 可以执行 FP 帧头和负载 CRC 校验、 解封装 EDCH FP 帧类型 1 或类型 2、 子帧信息提取等处理。
在步骤 S504, EDCH 上行处理模块 309 可以执行 HSUPA 的 MAC-es/is 处理, 如, 提取 MAC-es/is 数据 PDU 等。
在步骤 S506, EDCH 上行处理模块 309 可以执行 MAC-d 排序处理。例如, EDCH 上行 处理模块 309 可以根据连接帧号 (CFN : Connection Frame Number) 执行重排序处理。对于 非连续的 CFN 需要进行缓存处理以等待排序, 而对于连续的 CFN 则可以向 RLC 指示接收到 数据 PDU。此处, MAC-d 缓存 315 可以作为排序缓冲区。在经过 MAC-d 排序处理之后, 可以 最终获得经过解封装处理的 PDU。
根据本发明的实施例, FPGA 可以对经过解封装处理的 PDU 执行 RLC 处理以生成 SDU, 并且将 SDU 存储到 CPU 的内存区中。上述处理过程例如可以通过图 5 所示的步骤 S508 至步骤 S510 来实现。
在步骤 S508, 上行 PDU 预处理模块 331 可以分析经过解封装处理的 PDU 中的控制 / 状态报文, 以分离控制状态 PDU 和数据 PDU, 将控制状态 PDU 发送到 RLC 控制 / 状态处理 模块 305 并将数据 PDU 发送到加解密处理模块 304。加解密处理模块 304 可以对数据 PDU 执行解密处理, 例如, 执行 Kasumi/Snow3g 解密处理。
在步骤 S510, 上行扫描和解复用模块 329 可以控制对经过解密处理的数据 PDU 执 行扫描, 以确定是否可以进行重组。如果能够进行重组, 则 SDU 重组递交模块 327 继续对数 据 PDU 执行处理, 如果不能重组, 则接收 PMUI 分配和管理模块 330 和接收 PMUI 缓存 328 可 以控制对不能重组的数据 PDU 进行缓存以等待下次收到数据报文时再进行判断。
SDU 重组递交模块 327 可以控制对经过解密处理的数据 PDU 执行重组以生成 SDU。 SDU 重组递交模块 327 可以按照序号对数据 PDU 进行重组, 例如, 可以控制根据按序 / 非按 序递交的配置来使可重组的数据 PDU 形成 SDU, 然后控制将 SDU 直接存储到 CPU 的内存区 中。可选地, SDU 重组递交模块 327 此时可以生成重组成功消息并将该重组成功消息发送 给 CPU, 其中, 该重组成功消息可以包括 SDU 在 CPU 的内存区中的存储地址。 可选地, 重组成 功消息可以采用图 2 所示的上行控制消息的结构, 从而该重组成功消息可以被 FPGA 写入到 接收控制消息缓冲区中, 并且 CPU 可以从该接收控制消息缓冲区中获得该重组成功消息。
根据本发明的实施例, CPU 可以从内存区获取 SDU, 并且对 SDU 执行封装处理以生 成上行以太网报文, 并且 FPGA 可以发送上行以太网报文。上述处理过程例如可以通过图 5 所示的步骤 S512 至步骤 S518 来实现。
在步骤 S512, CPU 可以对 SDU 执行 PDCP 协议处理。可选地, CPU 可以基于重组成 功消息中包括的存储地址来从内存区获取 SDU。此外, 例如, 在 PDCP 协议处理中, CPU 可以 执行删除 PDCP 头、 进行 IPHC/ROHC 头解压缩等处理。
在步骤 S514, CPU 可以执行 GTPU 协议处理。例如, CPU 可以执行 GTPU 头封装、 隧 道信息转换等处理。在步骤 S516, CPU 可以执行传输层处理。例如, CPU 可以封装 IP/UIP 报文格式、 将 内容复制到消息块中、 对于超过 MTU 的报文进行 IP 分片等处理。
在步骤 S518, CPU 可以封装 MAC 头和 VLAN 标签以便生成上行以太网报文。可选 地, CPU 此时可以生成发送通知消息并将该发送通知消息发送给 FPGA, 以通知 FPGA 发送上 行以太网报文。可选地, 发送通知消息可以采用图 2 所示的下行控制消息的结构, 从而该发 送通知消息可以被 CPU 写入到发送控制消息缓冲区中, 并且 FPGA 可以从该发送控制消息缓 冲区中获得该发送通知消息。
FPGA 可以基于所接收到的发送通知消息来发送上行以太网报文。例如, FPGA 可以 对上行以太网报文进行透传。例如, 控制消息分析调度模块 321 可以对发送通知消息进行 分析, 并且相应地通知发送调度模块 313。 发送调度模块 313 可以对上行以太网报文的发送 进行调度。在发送调度模块 313 的调度下, 发送接口模块 314 可以直接经由 PCIE 接口调度 模块获取上行以太网报文, 并且经由背板接口模块 312 发送上行以太网报文。
图 6 示出了根据本发明实施例的能够进行业务硬件加速的装置的结构示意图。
图 6 所示的装置可以采用 SOC 来实现。该 SOC 装置可以集成有多核处理器阵列 603、 内部高级微控制器总线架构 (AMBA : Advanced Microcontroller Bus Architecture) Fabric 交换总线 604、 高速协处理器总线 605、 2 个 XGE 高速接口 606、 PCIE×8Gen2 接口 607、 DDR3 控制器接口 601 以及 L3 缓存 602。 在图 6 所示的 SOC 装置中, 可以由多核处理器阵列对整个处理流程进行控制, 其控 制可以采用总线命令的方式来实现, 而不需要如图 3 所示采用控制消息来在 FPGA 与 CPU 之 间传递控制信息。
高速协处理器总线 605 连接到 AMBA Fabric 交换总线 604, 用于在连接到高速协处 理器总线的各个单元之间交换数据以及与 AMBA Fabric 交换总线交换数据。在高速协处理 器总线 605 上挂有根据本发明实施例的多个硬件加速单元。例如, 这些硬件加速单元可以 包括 : FP 组帧硬加速单元 608、 FP 解帧硬加速单元 609、 RLC 切片硬加速单元 610、 RLC 重组 硬加速单元 611、 EDCH 排序硬加速单元 612、 加解密硬加速单元 613。这些硬加速单元均提 供了标准的总线接口和配置寄存器。
此外, 上述硬加速单元在功能上可以至少部分地对应于图 3 中所示出的相应模 块。例如, FP 组帧硬加速单元 608 可以实现类似 FP 组帧模块 319 的功能, FP 解帧硬加速 单元 609 可以实现类似 EDCH 上行处理模块 309 所执行的解帧的功能, RLC 切片硬加速单元 610 可以实现类似下行重传和切片模块 325 的功能, RLC 重组硬加速单元 611 可以实现类似 SDU 重组递交模块 327 的功能, EDCH 排序硬加速单元 612 可以实现类似 EDCH 上行处理模块 309 所执行的排序的功能, 以及加解密硬加速单元 613 可以实现类似加解密处理模块 304 的 功能。
在采用图 6 所示的 SOC 装置执行 HSDPA 业务加速处理时, 处理路径可以依次经由 XGE 接口 606、 多核处理器阵列 603、 RLC 切片硬加速单元 610、 加解密硬加速单元 613、 FP 组 帧硬加速单元 608 以及 XGE 接口 606。
XGE 接口 606 可以接收来自核心网的下行数据报文。多核处理器阵列 603 可以对 下行数据报文执行 GTPU 协议处理以及 PDCP 处理。RLC 切片硬加速单元 610 可以对经过 PDCP 处理的数据报文执行重传、 分段、 级联以及添加轮询查询标志等处理, 此处, 多核处理
器阵列 603 可以根据 RLC 切片硬加速单元 610 的处理来提取 PDU 数据。加解密硬加速单元 613 可以从多核处理器阵列 603 获取 PDU 数据, 并且对 PDU 数据执行加密处理以便生成 RLC PDU。FP 组帧硬加速单元 608 可以对 RLC PDU 执行 MAC-d C/T 封装和比特移位处理, 执行 FP 帧生成处理以便生成 FP 帧, 并且对 FP 帧执行封装处理以生成下行以太网报文。XGE 接 口 606 可以发送下行以太网报文。
在采用图 6 所示的 SOC 装置执行 HSUPA 业务加速处理时, 处理路径可以依次经由 XGE 接口 606、 FP 解帧硬加速单元 609、 EDCH 排序硬加速单元 612、 加解密硬加速单元 613、 RLC 重组硬加速单元 611、 多核处理器阵列 603 以及 XGE 接口 606。
例如, XGE 接口 606 可以接收来自基站的上行数据报文, 例如, EDCHFP 帧。FP 解帧 硬加速单元 609 可以对上行数据报文执行 FP 帧处理和 MAC-es/is 处理。EDCH 排序硬加速 单元 612 可以对经过 FP 解帧硬加速单元处理的数据报文执行 MAC-d 排序处理。加解密硬 加速单元 613 可以对经过 EDCH 排序硬加速单元处理的数据执行解密处理。 RLC 重组硬加速 单元 611 可以对经过加解密硬加速单元处理的数据执行重组以生成 SDU。多核处理器阵列 603 可以对 SDU 执行封装处理以生成上行以太网报文。XGE 接口可以发送上行以太网报文。
以上分别描述了采用 FPGA 和 SOC 来实现逻辑硬件加速模块, 并进而实现能够进行 业务硬件加速的装置的示例性实施例。 根据本发明, 对于 HSPA 高速业务而言, 通过采用 FPGA 进行业务硬件加速, 可以实 现处理时延短、 环回时延抖动小等效果。由于 FPGA 硬件处理能力强, 因此 CPU 的处理负载 得以进一步降低。利用 FPGA 实现业务硬件加速还具有算法部署灵活的优点, 例如, 可以在 同一单板加载不同逻辑以实现不同算法的兼容。此外, FPGA 的可编程特性可以实现算法升 级、 补丁升级以及缺陷修复。FPGA 对新算法的支持比较快, 可以与软件实现相关, 最大限度 地提升软硬件协调处理效果。
根据本发明, 通过采用高性能 CPU, 如 X86CPU, 作为主处理器, 其处理性能可以随 着 X86 处理器工艺的提升而不断增强。
根据本发明, 在 CPU 和 FPGA 之间可以利用控制消息来进行交互。可选地, FPGA 可 以采用双 PCIE 核进行处理, 从而控制消息和数据处理可以在不同的 PCIE 核上分开处理, 并 且可选地将控制消息的优先级设置为比数据的优先级更高。
此外, 由于本发明提出的逻辑硬件加速模块是从业务处理模型中提炼出来的, 因 此还可以用于 SOC 芯片中进行 ASCI 固化, 甚至可以被参考作为多核处理器设计的通用加速 单元。
以上提供的对所公开实施例的描述用于使本领域技术人员能够实现或者运用本 发明。对这些实施例的各种修改对于本领域技术人员而言将是容易理解的, 并且这里限定 的一般原理可以在不脱离本发明的精神或者范围的情况下适用于其它实施例。因此, 本发 明并非旨在局限于本文示出的实施例, 而应被给予与本文公开的原理和新颖特征一致的最 广范围。