1. 基本架构
网络协处理器(NETCP)有四个主要的模块,分别是PKTDMA控制器、包加速器(PA)、安全加速器(SA)、GbE交换子系统。这些模块通过包数据流交换部件连接。如图 1.1所示:
图 1.1 网络协处理器功能块图
1.1 时钟控制
网络协处理器有三个主时钟域,分别是PA、SA、GbE交换子系统。这三个时钟域都共享一个公共的时钟源,通常为350MHz。在使用PA、SA或GbE交换模块之前,必须启用各自的时钟域。在某些设备中,这个时钟可以由锁相环产生。
NETCP也有辅助时钟,专门用于GbE交换机子系统的时间同步、MDIO和SGMII SerDes接口。
1.2 包数据流交换部件的结构(Packet Streaming Switch)
包数据流交换部件,主要是为NETCP的各模块间的数据传输提供了一个方式。
通常,SA、PA、GbE模块只能通过QMSS进行通信。因为系统中的缓冲大小有限,所以这些模块不可以直接通信,否则会造成性能下降。
1.3 包DMA接口(PKTDMA)
NETCP的PKTDMA主要负责NETCP与主机之间的数据传输。NETCP中的各模块,可以经由包数据流交换部件,通过PKTDMA,与主机进行数据通信。
1.4 分布式中断控制器结构
NETCP中的分布式中断控制器能够聚合来自多个源的中断,并将这些中断合并为一个中断后发送给主机。
2. NETCP初始化
NETCP依赖于队列管理器子系统(QMSS)和PKTDMA与主机通信,这需要在配置网络协处理器之前配置这两个系统。用户应该对包数据流交换部件的CPSW配置寄存器进行编程,以便将来自千兆以太网(GbE)交换机子系统的数据包发往所需的模块。如果同时使用包加速器(PA)和安全加速器(SA),那么必须在初始化SA之前初始化PA。否则,PA、SA和GbE交换机子系统可以按任何顺序初始化。NETCP初始化过程如下:
(1)打开NETCP电源域;
(2)打开所有使用到的模块的电源门阀;
(3)配置队列管理器;
(4)配置PKTDMA;
a、配置连接RAM
b、初始化描述符
c、配置接收流
d、使能发送通道
e、使能接收通道
(5)配置包数据流交换部件;
(6)配置GbE交换子系统
(7)配置PA
(8)配置SA
3. GbE交换子系统
NETCP的网络交换子系统的主要目的是提供一个在主设备和其他连接设备间进行数据传输的接口。对于KeyStone I,网络交换子系统的结构如图 3.1所示:
图 3.1 KeyStoneI 网络交换子系统框图
网络交换子系统主要包括网络交换机、MDIO、以及SGMII模块。具体原理参考《TN0236_DSP网络子系统之交换子系统》
4. PA子系统
包加速器(PA)是网络协处理器(NETCP)的主要部件之一,主要有如下硬件模块:
(1) 2层分类引擎
(2) 3层分类引擎
(3) 4层分类引擎
(4) 修改/多路由引擎
(5) 包ID管理
(6) PA统计模块
如图 4.1所示:
图 4.1 PA功能块图
PA主要是执行数据包处理操作,如包头分类、产生校验和、以及多队列路由。具体原理参考《TN0237_DSP网络子系统之包加速器(PA)》。
5. SA子系统
安全加速器(SA)的作用是协助主机执行与安全相关的事务。SA为通常支持的协议(包括IPsec ESP和AH、SRTP和Air Cipher)对数据包执行加密、解密和身份验证操作提供硬件引擎。SA还提供硬件模块来帮助主机生成公钥和随机数。具体原理参考《TN0238_DSP网络子系统之安全加速器(SA)》。