第十四章Intel网络处理器概述.docx
- 文档编号:9151349
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:80
- 大小:720.49KB
第十四章Intel网络处理器概述.docx
《第十四章Intel网络处理器概述.docx》由会员分享,可在线阅读,更多相关《第十四章Intel网络处理器概述.docx(80页珍藏版)》请在冰豆网上搜索。
第十四章Intel网络处理器概述
第十四章Intel网络处理器概述
前面我们讨论了网络处理器的一般问题,从本章开始我们将深入讨论一个特定的网络处理器--Intel网络处理器,以便对前面介绍的一般概念提供一个具体的说明。
(1)IXA
术语IXA(InterneteXchangeArchitecture)泛指Intel网络处理器体系结构以及相关的支持芯片。
尽管IXA主要集中在网络处理器硬件,它也包括软件体系结构,因为如果不预想使用硬件的软件,可编程硬件是无法定义的。
IXA包括控制面(慢路径)和数据面(快路径)处理,定义了硬件抽象、应用编程接口和互连机制,但是没有给出细节,IXA只是给出了概念组织。
IXA中有如下三个重要组成部分:
●微引擎(Microengine,ME):
微引擎是Intel网络处理器的核心部件,也是Intel处理器取得线速处理性能的关键,在其它功能单元的支持下执行快路径上的包处理。
●XScaleCore:
XScale核是Intel网络处理器的高层控制和管理单元,是与StrongARM兼容的一种微处理器,负责控制面的处理任务以及异常数据包的处理,上面运行VxWorks、嵌入式Linux等实时操作系统。
●IXA可移植框架(IXAPortabilityFramework):
为基于Intel网络处理器的软件开发提供应用编程接口和硬件抽象,使得运行在XScale核和微引擎上的软件具有良好的可移植性和可重用性。
开发者对新一代网络处理器的要求包括四个方面:
灵活性,高性能,可扩展性和可移植性。
IXA能够满足这四个方面的要求。
●灵活性:
在IXA架构的网络处理器中,微引擎完全可编程,在低层硬件设备的支持下可实现许多复杂的网络处理功能,具有较好的功能灵活性。
●高性能:
IXA架构的网络处理器使用多个可并行操作的微引擎,通过增加微引擎的数目、提高微引擎和XScale核的时钟频率、采用新技术减小存储器访问延时以及增加专用硬件功能单元,可使网络处理器线速处理高达OC-192的网络数据,具备了网络宽带化所要求的高性能。
●可扩展性:
通过增加微引擎的数目以及提高微引擎和XScale核的时钟频率,可使网络处理器达到OC-192的高端处理速率,具有良好的可扩展性。
●可移植性:
IXA可移植框架提供了应用编程接口和硬件抽象,使得基于该框架开发的软件与底层硬件实现松耦合,具有良好的可移植性和重用性。
(2)IXP
术语IXP(InterneteXchangeProcessor)指实现了IXA架构的网络处理器芯片。
尽管每一种IXP设计必须遵循IXA架构,但是不同的IXP可以定义自己的细节,比如片上功能单元的数量和种类、处理器的并行程度、存储器的大小以及内部数据带宽等。
IXP网络处理器典型地包括一个XScale核、多个微引擎、存储器、若干硬件功能单元、与各种外部连接的接口、内部总线等。
Intel提供了多种IXP网络处理器芯片,目前已是第二代产品。
第一代产品与第二代产品的区别包括并行程度(即片上处理器的数量)、物理接口、芯片封装、功率消耗、硬件功能特性(如用于加密的硬件加速器)等方面的差异。
图14-1列出了三款第二代IXP网络处理器。
IXP2400主要面向OC-12到OC-48/2.5Gbps的网络接入和边缘网应用,有8个微引擎,每秒可完成超过50亿次的操作,可应用于WAN多服务交换、DSLAM、基站控制器和网关、4~7层交换、VoIP网关、多服务接入平台、高端路由器和VPN等。
IXP2800主要面向OC-48么OC-192/10Gbps的边缘网和核心网应用,有16个微引擎,每秒可完成超过250亿次的操作,可应用于骨干网的路由与交换、无线设备、IPSec和VPN、10Gbps的企业交换和路由等。
IXP2850在IXP2800的基础上增加了加密单元,可达到10Gbit/s的加/解密速度,可用于IPSec、VPN、QoSRouter等场合。
通常用IXP2xxx泛指其中的任何一款网络处理器芯片。
图14-1Intel第二代IXP网络处理器
(3)IXP2xxx的主要部件
一个IXP网络处理器是一块独立的芯片,它包含了一组复杂的可编程及不可编程的处理器和功能单元。
以下是IXP2xxx芯片中的主要部件:
●一个嵌入式RISC处理器
●8到16个可编程包处理器
●多条独立的片上总线:
提供芯片内部各功能单元之间的高速通道,包括多组单向高速数据总线和命令总线;
●处理器同步机制
●共享和不共享的片上存储器:
每个微引擎内部有专用的本地存储器,芯片内部还有共享的Scratchpad存储器;
●一个低速串行接口:
连接到XScale核,主要用于控制和管理;
●多个外部存储器接口:
连接外部SRAM、DRAM及ROM(或FlashROM)等;
●多个外部I/O总线接口:
PCI总线接口及MSF接口;
●计算哈希和加密的协处理器
●其它功能单元
(4)外部连接
图14-2给出了IXP2xxx支持的主要外部连接。
IXP2xxx有四类外部连接:
一个串行接口,三个外部I/O总线接口,两个外部存储总线接口,一个低速设备接口。
图14-3列出了IXP2400主要连接的速度。
每个IXP2xxx芯片包含一个通用异步收发器(UART)硬件,提供到传统串行线路的接口,串行线连接到嵌入式RISC处理器。
由于串口主要用于控制和管理功能,因此它并不像其它I/O接口那样运行在高速度。
所以,尽管程序员可以选择通过它传输数据,串口并不适合用于快路径。
IXP2xxx芯片中的PCI(PeripheralComponentInterconnect)总线提供两个主要功能。
第一,允许一个IXP2xxx连接到I/O设备(如磁盘);第二,允许设计者使用传统的CPU作为通用控制处理器。
由于PCI技术非常流行,许多I/O设备遵循这个标准。
尽管PCI技术非常流行,但是其整体的吞吐量限制在大约2.2Gbps。
为处理更高的数据速率,IXP2xxx使用了一个媒体或交换结构(MediaorSwitchFabricInterface,MSF)接口。
MSF是IXP2xxx与外部物理层设备(PHY)及交换结构的接口单元,是数据出入IXP2xxx的窗口。
MSF通过Utopia、SPI协议与PHY接口,通过CSIX与交换结构接口。
Utopia、SPI和CSIX都是标准化协议,Utopia用于接收ATM格式的包,SPI用于接收POS格式的包,CSIX是IXP2xxx与交换结构进行数据接收/发送时使用的接口协议,其数据包格式为Cframe。
通过这些标准协议MSF能够方便地与其它厂家的产品进行接口。
图14-2IXP2xxx的主要外部连接
图14-3IXP2400外部连接的速度
MSF接口有两个主要目的。
第一,它构成了IXP2xxx与高速网络接口之间的快路径;第二,MSF接口提供了一种通信机制,允许两个或多个IXP2xxx芯片互连。
第二个目的非常重要,因为可以将两个芯片连接起来处理较高的吞吐量。
MSF接口的关键特性是可配置,可配置性使得MSF接口的灵活性足以连接几乎任何物理硬件。
像图14-2指示的那样,MSF接口有两个外部连接:
一个用于输入,另一个用于输出。
这两个外部连接使用不同的管脚,并且可以被独立配置,因此可以配置输入和输出使用不同的接口标准。
比如配置输入使用SPI协议,而输出使用CSIX协议。
DRAM总线的任务只有一个,提供对外部DRAM的访问。
IXP2400使用一条总线访问DRAM,而IXP28x0使用多条总线来获得较高的吞吐量。
在IXP中,DRAM提供低成本、高带宽的存储,主要用于存储块数据(如完整的包或帧)。
除了64位数据线,DRAM总线还包括传输地址、控制存/取操作、以及传输时钟信号的线路。
存储器使用时钟信号来使取或存操作与处理器时钟同步。
访问SRAM的接口与访问DRAM的接口是完全分开的。
尽管图14-2中只画出一条SRAM总线,事实上,IXP2xxx使用多条SRAM总线以获得较高的吞吐量。
SRAM总线除了提供对外部SRAM的访问以外,与协处理器的交互也是通过SRAM总线进行的。
除了存储器总线,IXP2xxx还有一个慢端口(Slowport)连接。
与存储器总线不同,慢端口连接是共享的,连接提供了对若干个外部硬件单元的访问。
比如,在启动过程中慢端口总线提供对ROM或FlashROM的访问。
正像名字指示的一样,慢端口总线不是为高速数据传输而设计的。
(5)内部组件
IXP2xxx的内部结构很复杂,因为芯片包含了总线、存储器、处理器、接口和其它功能单元。
下面列出了主要的功能单元。
数量组件目的
1嵌入式RISC处理器控制、高层协议和例外
8/16包处理引擎I/O、基本包处理和包转发
1+SRAM访问单元协调对外部SRAM总线的访问
1+DRAM访问单元协调对外部DRAM总线的访问
1MSF访问单元协调对外部I/O设备的访问
1PCI总线访问单元协调对外部PCI总线的访问
1SHaC单元存储中间结果、计算哈希值等
1加密单元加解密操作
1系统底盘(chassis)提供内部控制和数据传输的通道
嵌入式RISC处理器负责执行网络处理器中的控制面处理任务,如进行芯片初始化配置、芯片控制/管理、运行路由协议、更新路由表等,另外还负责对异常数据包的处理。
包处理引擎是IXP的核心部件,能够访问IXP中的所有共享资源,负责绝大部分的包处理任务,是IXP取得线速处理性能的关键。
IXP2400中包含8个32位包处理引擎,IXP28x0包含16个32位包处理引擎。
SRAM访问单元用于和外部SRAM接口,控制和管理IXP中其它功能单元对外部SRAM的访问。
SRAM访问单元还可用于和符合相应接口规范的协处理器接口,执行特定的包处理操作。
IXP2400中有两个SRAM访问单元,IXP28x0中有四个SRAM访问单元。
不同的SRAM访问单元相互独立,可并行工作。
DRAM访问单元用于和外部DRAM接口,控制和管理IXP中其它功能单元对DRAM的访问。
IXP2400有一个DRAM访问单元,而IXP28x0有三个DRAM访问单元。
PCI总线访问单元用于和主控CPU、其它IXP网络处理器以及PCI以太网卡等符合PCI规范的设备接口。
SHaC单元其实包括了三个部分:
用于存放中间结果的片上Scratchpad存储器,支持48比特、64比特及128比特哈希运算的哈希单元,以及用于对IXP中的控制和状态寄存器进行访问操作的单元(称为CAP)。
加密单元是IXP2850特有的,负责进行加解密操作。
系统底盘是IXP中各功能单元之间的内部高速通道,由多组单向高速数据总线、命令总线以及相应的总线仲裁单元组成。
正是由于系统底盘的分立式多总线结构和高带宽的数据总线,使得IXP的并行处理优势得以充分发挥,取得较高的性能指标。
图14-4是IXP2xxx的高层结构视图,给出了内部组件和外部单元之间的连接。
图14-4IntelIXP2xxx的概念组织
图14-5IXP2400硬件结构框图
图14-5是IXP2400的内部硬件结构图。
总体上来看,IXP采用了多主控+系统底盘+多目标的硬件体系结构。
多主控是指IXP的多个主控单元,包括XScale核、微引擎、PCI控制单元等硬件功能单元。
多目标是指IXP中的多个从属单元,包括存储访问单元、MSF、SHaC等。
主控单元发起和控制对多个目标的操作,目标执行主控单元规定的操作,而底盘提供了主控单元与目标之间的数据传输通道和命令传输通道。
具体而言,IXP的硬件体系结构具有如下主要特征:
1)采用分立的内部总线结构,将不同存储单元的数据总线、数据读/写总线分开,可以同时对不同存储单元进行读/写操作,大大提高了IXP的并行处理能力。
2)引入命令总线仲裁器对各主控单元发出的命令进行排队判优,保证了指令的优先级,避免了指令的冲突和拥塞。
3)采用分布式的硬件结构,即多主控+多目标结构。
不同的硬件功能单元在高速内部总线的支持下各司其职,负责专门的数据处理操作,大大增强了IXP的并行处理能力。
4)采用多微引擎并行的硬件结构,所有微引擎可同时工作,大大增强了IXP的并行处理能力。
IXP2400进一步将8个微引擎分为2组(Cluster0和Cluster1),并使用独立的SRAM数据总线,有效地缓解了总线冲突,进一步增强了IXP2400的并行处理能力。
(6)IXP2xxx处理器体系
IXP2xxx使用一个五层的处理器体系,其中三层在芯片中,另外两层由外部硬件提供。
以下是处理器类型及每种处理器的特性。
处理器类型是否在芯片上?
是否可编程?
通用处理器否是
嵌处式RISC处理器是是
I/O处理器是是
协处理器是否
物理接口否否
位于最高层的通用处理器(GPP)不是IXP2xxx芯片的一部分。
在许多系统中,需要一个外部通用处理器执行整体控制和管理功能。
GPP不是快路径的一部分。
比如,考虑一个在每个接口都使用一个网络处理器的系统。
在这种情况下,网络处理器不需要涉及全局路由决策,路由决策可被分配给一个与所有网络处理器有交互作用的通用处理器。
通用处理器收集路由信息,选择最佳路由,并通知每个网络处理器。
Intel用术语核心处理器指代嵌入式RISC处理器。
IXP2xxx上的RISC处理器是与ARM结构兼容的一种处理器,称为XScale。
运行在常规操作系统(如Linux)上的XScale核作为一个控制点管理微引擎并提供一个可以下载程序和配置芯片的接口。
另外,XScale处理高层协议以及例外的包。
因此,嵌入式处理器不是用于执行常规的快路径处理。
Intel使用术语微引擎(microengine)指代包处理器。
IXP2xxx包含多个微引擎(IXP2400包含8个,IXP28x0包含16个)。
与嵌入式RISC处理器不同,微引擎是一种只提供少量基本指令的低级设备,微引擎构成了快路径处理的基础,主要用来处理I/O设备与存储器之间的低层数据传输以及基本包处理任务。
与嵌入式处理器不同,微引擎不运行操作系统。
IXP2xxx包含几种协处理器和功能单元,其中一些构成了快路径的一部分。
比如,芯片包含一个哈希单元,可用来高速计算一个48比特、64比特或128比特的自适应多项式哈希函数。
IXP2xxx还包含4个与实时时钟一起工作的定时器。
IXP2850还包含了对几种加密算法(如三重DES、AES)、检查和累加以及安全哈希函数的硬件支持。
物理接口硬件不是IXP2xxx的一部分,因此需要另外的芯片来实现第一层和第二层的处理。
Intel提供处理POS-PHY以及传统以太网组帧的接口芯片。
由于MSF接口是可配置的,IXP2xxx上的每个高速物理接口可以遵循任何一种众所周知的标准(如SPI-3、SPI-4.2或Utopia)。
Utopia是IXP2xxx接收/发送ATM格式的数据包时采用的接口协议,IXP2400支持UtopiaL1/L2/L3三个速率等级,速率分别为OC-3、OC-12和OC-48。
POS-PHY是IXP2xxx接收/发送POS(PacketOverSONET)格式的数据包时采用的接口协议。
POS-PHYL3和POS-PHYL4规范分别被OpticalInternetworkingForum批准为SPI-3和SPI-4.2,速率分别为OC-48和OC-192。
POS是利用点对点协议(PPP)实现IP包到SONET帧有效载荷映射的系列协议,标准的POS映射为IP/PPP/HDLC/SONET。
IP包被封装到PPP分组中,PPP提供了多种协议封装、错误控制和链路初始化等功能。
然后,PPP分组利用HDLC协议成帧,以提供分组分界和错误控制。
(7)IXP2xxx的存储器
IXP2xxx使用多种存储器。
下面列出了各种存储器的大小和用途。
存储器类型最大容量是否在芯片上?
典型用途
GPRegisters256(2banks)是中间运算
Inst.Cache32Kbytes是最近使用过的指令
DataCache32Kbytes是最近使用过的数据
MiniCache2Kbytes是重用过一次的数据
Writebuffer未规定是写缓冲区
Localmemory2560bytes/微引擎是本地缓存
Scratchpad16Kbytes是进程间通信和同步
Inst.Store4Kbytes/微引擎是存放微引擎指令
FlashROM未规定否用于启动
SRAM64Mbytes否存放表或包头
DRAM2Gbytes否存储包
程序员需要关注存储器体系中的某些存储器,其余的可以忽略。
比如,尽管cache提供了性能改进,但是大多数cache对于程序员是透明的(即程序员不需要分配cache中的空间)。
程序员主要关注四种存储器:
SRAM、DRAM、本地存储器和Scratchpad,程序员必须明确决定如何使用它们。
也就是说,对于每一个数据项,程序员必须选择其中的一种存储器来存放。
上表列出了选择存储器的标准之一:
最大容量,下表列出了各种存储器的其它特性。
存储器类型访问单位相对访问延时特性
(字节)
Local41用LM_ADDR寄存器访问
Scratchpad410通过原子读-修改-写进行同步
支持进程间通信
push/pullreflectormode
SRAM414遵循QDR规范,原子操作
支持队列和环,比特操作
DRAM820连接到XScale、微引擎和PCI总线控制器
从上表可以看出,每种存储器都有一些特性,使其适合某些任务。
比如,尽管本地存储容量很小,但是它提供了最小的访存时间。
Scratch和SRAM都提供原子操作,如读-修改-写,因此Scratch和SRAM都可以用来同步并行处理器(如微引擎)。
SRAM的访存时间比Scratch长,但比DRAM小;此外,SRAM具有操作队列和环的机制。
因此,SRAM适合于存放包头或包链表。
最后,由于DRAM有到I/O设备的直接传输路径、容量大并有较高的带宽,DRAM适合于存放输出或输出的包。
程序员需要注意的是,存储访问时间可能比指令执行时间长很多。
比如,一次DRAM访存需要几十个时钟周期,其中每个时钟周期可以执行一条微引擎指令。
因此,在等待从DRAM读取一个数值的时候,微引擎可以执行许多条指令。
我们在后面将会讨论访存时间和指令执行时间之间的差异,以及程序员应采取的措施。
(8)字和长字访问
除了访存时间和存储器特性以外,程序员还必须了解底层物理存储系统是如何组织存储器访问的。
每种物理存储器都定义了访问单位的长度,有时称为可寻址数据单位。
一个两字节的单位(即16比特)称为一个字,一个四字节的单位(即32比特)称为一个长字(longword),而一个八字节的单位(64比特)称为一个四倍长字(quadword)。
为理解长度大于一个字节的可寻址数据单位带来的后果,考虑按长字组织的Scratch存储器。
尽管微引擎和XScale处理器可为每一个字节产生地址,但是底层机制并不提供对单个字节的访问。
事实上,每次存储器访问读或存四个字节。
因此,如果程序员要访问地址为2的字节,则底层存储器硬件会取地址0~地址3的存储单元(即第一个长字)。
将存储器组织为字或长字意味着程序员必须仔细规划数据的布局。
假设程序员定义了两个数据项,每个数据项长16比特,存放在存储器中相邻的位置。
如果每个数据项被分配在一个字中,则这两个数据项通过一次存储器访问就可全部读出。
如果存放时跨越了字边界,则底层存储器硬件需要访问存储器两次。
因此,为获得最佳的性能,程序员必须了解存储器组织,并且要合理安排数据布局以最小化访存时间。
某些网络处理器体系结构特征(如底层物理存储系统的组织)对于程序员编写高质量的代码是非常重要的。
程序员必须理解竞争、同步和时序这样的问题,因此程序员必须重点理解各功能部件之间的连接、共享的资源以及按照特定顺序发射指令带来的结果。
(9)基于IXP2xxx的典型系统结构
图14-6是一个基于IXP2xxx的典型的Ingress/Egress系统结构。
在该结构中使用了两个IXP2xxx进行包处理,其中IngressIXP2xxx通过MACs或Framers从以太网接收数据包,对所接收的包进行处理后通过交换结构接口芯片将包发送到交换结构;EgressIXP2xxx从交换结构接收包,对包进行处理后发送到以太网。
IngressIXP2xxx与外部网络之间的MSF接口配置为SPI或Utopia协议模式,与交换结构之间的MSF接口配置为CSIX协议模式。
同理,EgressIXP2xxx与交换结构之间的MSF接口配置为CSIX协议模式,与外部网络之间的MSF接口配置为SPI或Utopia协议模式。
Ingress/Egress模式是一种典型的基于IXP2xxx的系统架构模式。
在实际应用中,当处理功能较简单时,可以采用单片IXP2xxx的系统架构模式,见图14-7;当处理功能较复杂时,也可以采用多个IXP2xxx串连的系统架构模式。
图14-6基于IXP2400的典型系统架构方案
图14-7使用一个IXP2800的全双工架构方案
第十五章嵌入式RISC处理器(XScale核)
前一章概要介绍了IntelIXP2xxx网络处理器的体系结构,这一章讨论称为XScale核的嵌入式RISC处理器。
本章将不会给出所有的硬件细节,而是主要关注它的作用以及软件可以使用的设施。
(1)嵌入式处理器的用途
IntelIXP2xxx中包含一个嵌入式RISC处理器。
为理解嵌入式处理器的用途,我们需要考虑一个IXP2xxx是如何在一个网络系统中使用的。
在一个只有少量低速接口的网络系统中,一片IXP2xxx能够处理几个接口;而在一个具有高速网络接口的系统中,每个接口必须使用一个IXP2xxx。
整个网络系统的结构决定了嵌入式处理器的作用,因为包含多个IXP2xxx芯片的系统通常包括一个通用处理器,用于在多个IXP2xxx间进行控制和协调。
图15-1说明了这两种方法。
图15-1两种可能的网络系统设计方法
在使用一片IXP2xxx芯片处理所有网络接口的设计中,片上RISC处理器执行整个系统的管理任务。
在包括一个通用处理器的系统中,与整个系统相关的任务由通用处理器执行,芯片中的嵌入式处理器只处理与芯片相关的任务。
因此,嵌入式RISC处理器可以被分配以下一些或全部的任务:
●自举
●异常处理
●高层协议处理
●交互程序调试(Interactivedebugging)
●诊断和日志
●内存分配
●应用程序(需要的话)
●用户接口和/或到通用处理器的接口
●控制包处理器
●其它管理功能
以上大部分任务都不言自明。
管理和控制功能包括:
启动和停止包处理,创建或修改由包处理引擎使用的数据结构,描述配置细节(如每个网络接口的地址等)。
自举包括片上存储器和处理器的初始化。
比如,当系统启动时,嵌入式RISC处理器首先引导,然后将微引擎代码装入微引擎的指令存储区,启动微引擎。
如果系统包括多个IXP2xxx芯片,通用处理器必须执行整个系统的管理任务,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十四 Intel 网络 处理器 概述