第四部分Intel网络处理器

上传人:汽*** 文档编号:568658677 上传时间:2024-07-25 格式:PPT 页数:122 大小:1.19MB
返回 下载 相关 举报
第四部分Intel网络处理器_第1页
第1页 / 共122页
第四部分Intel网络处理器_第2页
第2页 / 共122页
第四部分Intel网络处理器_第3页
第3页 / 共122页
第四部分Intel网络处理器_第4页
第4页 / 共122页
第四部分Intel网络处理器_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《第四部分Intel网络处理器》由会员分享,可在线阅读,更多相关《第四部分Intel网络处理器(122页珍藏版)》请在金锄头文库上搜索。

1、第四部分 Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计Internet eXchange Architecture (IXA)pIXA:泛指Intel网络处理器架构以及相关的支持芯片,包括网络处理器硬件及软件体系结构。pIXA包括控制面和数据面处理,定义了硬件抽象、应用编程接口和互连机制,但没有给出细节。pIXA的三个重要组成部分:n微引擎(Microengine,ME):Intel网络处理器的核心部件,在其它功能单元的支持下执行快路径上的操作。nXScale Core:Intel网络处理器的高层控制和管理单元,负责控制面及异

2、常包处理,运行嵌入式实时操作系统。nIXA可移植框架:为基于Intel网络处理器的软件开发提供应用编程接口和硬件抽象。IXA的特性p灵活性:n微引擎完全可编程,在低层硬件设备的支持下可实现许多复杂的网络处理功能,具有较好的功能灵活性。p高性能(高可扩放性):n使用多个可并行操作的微引擎,通过增加微引擎的数目、提高微引擎及XScale核的时钟频率、采用各种减小访存延迟的技术及增加专用的硬件功能单元,可支持高达OC-192的高端处理速度。p可移植性:nIXA可移植框架提供了应用编程接口和硬件抽象,使得基于该框架开发的软件与底层硬件实现松耦合,具有良好的可移植性和重用性。 Internet eXch

3、ange Processor (IXP)pIXP:指实现了IXA架构的网络处理器芯片。pIXP典型地包括:n一个XScale核n多个微引擎n片上存储单元n若干硬件功能单元n与各种外部连接的接口n内部总线第二代IXP网络处理器pIXP2400:8个微引擎,主要面向网络接入和边缘网应用,可用于WAN多服务交换、DSLAM、基站控制器和网关、47层交换、VoIP网关、多服务接入平台等。pIXP2800:16个微引擎,主要面向边缘网和核心网应用,可用于骨干网的路由与交换、无线设备、10Gbps的企业交换和路由等。pIXP2850:在IXP2800的基础上增加了加密单元,可达到10Gb/s的加解密速度,

4、用于IPSec、VPN、QoS Router等场合。 pIXP2xxx:泛指任何一种第二代IXP网络处理器芯片。 IXP2xxx的主要部件p一个IXP网络处理器是一块独立的芯片,包含一组复杂的可编程及不可编程的处理器和功能单元:n一个嵌入式RISC处理器(XScale Core)n8到16个可编程包处理器(微引擎)n多条独立的片上总线:提供芯片内部各功能单元之间的高速通道n处理器同步机制n共享和不共享的片上存储器n一个低速串行接口:连接到XScale Core,用于控制和管理n多个外部存储器接口:连接外部SRAM、DRAM及ROM等n多个外部I/O总线接口n计算哈希和加密的协处理器n其它功能单

5、元 IXP的外部连接p串行接口:连接到XScale Core,用于控制和管理。pPCI总线接口:连接I/O设备及传统CPU。pMSF接口:连接外部物理层设备及交换结构,是数据出入IXP的窗口。pDRAM总线接口:提供1条或多条DRAM总线。pSRAM总线接口:提供多条SRAM总线。p慢端口连接:访问ROM/FlashROM等外部硬件单元。IXP2400外部连接的速度IXP2xxx的内部组件数量数量组件组件目的目的1嵌入式RISC处理器控制、高层协议和例外处理8/16包处理引擎I/O、基本包处理和包转发1+SRAM访问单元协调对外部SRAM总线的访问1+DRAM访问单元协调对外部DRAM总线的访

6、问1MSF访问单元协调对外部I/O设备的访问1PCI总线访问单元协调对外部PCI总线的访问1SHaC单元存储中间结果、计算哈希值等1加密单元加/解密操作1系统底盘(chassis) 提供内部控制及数据传输通道 IXP2xxx的概念组织IXP2400硬件结构框图硬件体系结构:多主控 + 系统底盘 + 多目标IXP2400硬件结构特征p采用了多主控+系统底盘+多目标的分布式硬件体系结构,增强了IXP2400的并行处理能力。p具体而言,n采用分立的内部总线结构,将不同存储单元的数据总线、数据读/写总线分开,可以同时对不同存储单元进行双向读/写操作。n引入命令总线仲裁器对各主控单元发出的命令进行排队判

7、优,保证指令的优先级,避免指令的冲突和拥塞。n采用分布式的硬件结构(即多主控+多目标),不同的硬件功能单元各司其职,负责专门的数据处理,可以并行操作。n采用多微引擎并行的硬件结构,所有微引擎可同时工作;而且微引擎被进一步分成两个簇,每个簇使用独立的SRAM数据总线,有效地缓解了总线冲突。IXP2xxx的处理器体系 处理器类型处理器类型 是否在芯片上?是否在芯片上? 是否可编程?是否可编程?通用处理器否是嵌入式RISC处理器是是I/O处理器是是协处理器是否物理接口硬件 否否p通用处理器(GPP):不是IXP2xxx的一部分,用于执行整体控制和管理功能。p物理接口硬件:不是IXP2xxx的一部分,

8、Intel提供专门的芯片实现第一层和第二层的处理。IXP2xxx处理器体系(续)p嵌入式RISC处理器(XScale Core):不是快路径的一部分,用于管理微引擎、提供一个可以下载程序和配置芯片的接口、处理高层协议及例外的包,运行常规嵌入式操作系统。pI/O处理器(MicroEngine):只提供少量基本指令的低级设备,不运行操作系统,用于处理I/O设备与存储器之间的低层数据传输及基本包处理,是快路径处理的基础。p协处理器和功能单元:有一些构成了快路径的一部分,如SHaC单元、加/解密单元等。IXP2xxx使用的存储器存储器类型存储器类型最大容量最大容量是否在是否在典型用途典型用途芯片上?芯

9、片上?GP Registers2564bytes 是中间运算Inst. Cache32Kbytes 是最近使用过的指令Data Cache32Kbytes 是最近使用过的数据Mini Cache2Kbytes 是重用过一次的数据Write buffer未指定 是写缓冲区Local memory2560bytes/微引擎 是本地缓存Scratchpad16Kbytes 是进程间通信和同步Inst. Store4Kbytes/微引擎 是存放微引擎指令FlashROM未指定 否用于启动SRAM64Mbytes/通道 否存放表或包头DRAM2Gbytes/通道 否存储包四种主要存储器的特性类型类型 访

10、问单位访问单位 相对访问相对访问 特性特性 (字节)(字节) 延时延时Local4 1 用LM_ADDR寄存器访问Scratchpad4 10 支持原子操作、进程间通信、微引擎之间的 通信SRAM4 150 支持原子操作、队列和环、比特操作DRAM8 300 连接到XScale、微引擎和PCI总线控制器pLM:提供最小的访存时间pScratchpad和SRAM:支持原子操作,可用来同步并行处理器pSRAM:支持队列和环,适合于存放包头或包链表pDRAM:有对I/O设备的直接传输路径,容量大,带宽高,适合存放包。数据访问单位p每种物理存储器都定义了访问单位的长度(也称可寻址数据单位):n字(wo

11、rd):2字节的单位(16比特)n长字(longword):4字节的单位(32比特)n四倍长字(Quadword):8字节的单位(64比特)p尽管微引擎和XScale可以为每个字节产生地址,但是底层机制总是一次读/写一个访问单位长度的数据。p程序员必须了解存储器的组织,仔细规划数据的布局以最小化访存时间。基于IXP2xxx的典型系统结构单片IXP2xxx的系统架构主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计IXP2xxx在网络系统中的使用方法 两种可能的网络系统设计方法嵌入式处理器的作用p嵌入式RISC处理器可以被分配以下一些或全部的任务:n自举

12、:包括片上存储器和处理器的初始化n控制微引擎:如启动/停止包处理n内存分配n诊断和日志n交互程序调试(Interactive debugging)n用户接口和/或到通用处理器的接口n其它管理功能:如创建/修改微引擎使用的数据结构,维护本地转发表,描述配置细节(如每个网络接口的地址)等。n异常处理:不匹配任何分类规则的包,产生出错消息的包n高层协议处理:负责处理发给本地系统的包(如TCP)n应用程序(需要的话)XScale的主要特性p精简指令集计算(RISC):n包含较少的指令,指令被设计为能够很快执行,依靠寄存器获得高速度,保证每个时钟周期能够完成一条指令。p可配置大端/小端模式的的32位算术

13、运算:n处理器引导时配置端模式。p由协处理器提供的矢量浮点运算p字节可寻址内存:n接口硬件按照底层存储器的访问单元长度存取,当与处理器通信时只传输需要的字节。XScale使用的地址空间p虚拟存储支持:n所有的外部存储器及部分片上存储器、PCI总线、其它存储器映射的I/O设备均被映射到一个大小为232字节的线性地址空间,XScale硬件包括一个提供虚存的存储管理单元。n有一些存储器是XScale和微引擎共享的,如Scratchpad、SRAM、DRAM,可以用来在XScale和微引擎之间传递数据。n微引擎不使用XScale的地址空间,XScale必须处理所有的地址转换。p其它I/O:nXScal

14、e可以访问设备的CSR,可以访问和控制PCI总线上的任何一个设备XScale的主要特性(续)p内部外设单元(只能由XScale使用):n作为控制台设备的串口n四个32位倒计数定时器:这意味着XScale必须处理所有涉及超时的协议处理任务。n四个通用I/O管脚:通过MSF访问,连接到另外的硬件或用于调试nSlowport接口:用于系统引导p支持内核化操作系统的硬件设施p系统控制协处理器15:n只能由XScale使用,用于配置和控制IXP2xxx上的几个硬件单元,如MMU、读/写缓冲器、时钟、高速缓存等。p性能监视单元:n监视指令cache不命中率、TLB不命中率、指令流水线中的停顿、软件引起的分

15、支指令数目。主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计微引擎的用途p在IXP2xxx的处理器体系中,微引擎构成了最低层的可编程处理器。p微引擎被设计用来执行快路径上的处理,包括Ingress和Egress协议处理任务:n从物理层硬件接收包 n检查校验和n包头处理和分类n包缓存n查表和转发n包头修改n校验和计算n从物理层硬件发送包微引擎架构的特点p一种可编程微控制器(微引擎不是一个传统的CPU)p采用RISC设计p本地的控制存储器:微引擎的指令存储器p执行数据通路(Execution Datapath):微引擎的指令执行单元n一个算术逻辑单元AL

16、Un一个16入口的CAM,每个入口32比特n8个线程和上下文切换的硬件支持p数据通道寄存器n256个通用寄存器n512个传输寄存器n128个Next Neighbor寄存器n640个字的本地内存p一个CRC计算单元p可直接访问片上各种功能单元微序列控制器p微引擎不是一个传统的CPU,而是一个可编程微控制器。p微引擎不包含每一种操作的本地指令,运行在微引擎上的程序控制和使用芯片上的功能单元来完成指令。p例1:算术运算n传统CPU上的指令:add R2, R3n微引擎上的指令:alu dest, A_op, alu_op, B_op nalu_op包括12种运算符(+、+16、+8、+carry、

17、B-A、B、B、AND、AND、AND、OR、XOR) p例2:内存引用n传统CPU上的指令:load R3, Xn微引擎上的指令: sram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tok 微引擎指令集p微引擎指令集的操作码不到64个,分为以下四类:n通用指令:算术,循环,移位n分支和跳转指令:某一位置位/清零跳转,字节相等/不等跳转,根据事件状态跳转, nCAM指令:查找,清除入口,读标签/状态,写标签/状态 nI/O和线程交换指令:读/写DRAM,读/写SRAM,读/写队列描述符(SRAM),入队/出队,存储器环操作,访问Scratchpad,

18、 分离的存储器地址空间p微引擎硬件不将存储器或I/O设备映射到一个线性地址空间,程序必须说明数据传输所涉及的存储器,因此每一类存储器和每一类I/O设备都有专门的指令。p例如:nsram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tokndram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2nscratch cmd, xfer, src_op1, src_op2, ref_cnt, opt_tokp程序员必须为每个数据项选择将要放入的存储器。执行流水线pRISC架构:RISC处理器将一个指令的执行分成若

19、干个阶段,通过同时执行几条指令的不同阶段来重叠多条指令的执行。p执行流水线:重叠不同阶段执行的硬件。 指令执行在各个级的划分执行流水线停顿p指令间的相互依赖可能导致执行流水线停顿,如:K: alu R2, R2,+,R1K+1: alu R3, R3,+,R2p条件分支也可能造成执行流水线停顿。通常情况下,微引擎硬件继续取下一条指令装入流水线,就好像没有分支一样。 微引擎的执行数据通道p微引擎的指令执行单元也称执行数据通道(Execution Data Path),可执行移位、加/减、逻辑运算、乘法、字节对齐、比特操作、CAM查找等。p微引擎要执行的代码存放在本地的控制存储器中,源/目标操作数

20、均为微引擎内部的存储单元(称数据通道寄存器)。p执行数据通道采用5级流水线结构:取指令、指令译码、取操作数、指令运算、写运算结果。p控制存储器和数据通道寄存器均位于微引擎内部,取指令或取操作数都在单个时钟周期内完成,所以执行数据通道执行一条指令只需要一个时钟周期。微引擎的执行数据通道(续)p字节对齐:从连续的8个字节中取出任意偏移量(03)的连续4个字节。pCAM用于快速查找:n16个入口n每个入口包括32位标签(查找关键字)和4位状态n可以写CAM中的任意一行,可以分别写标签和状态n程序提供一个32比特的查找关键字,CAM硬件报告查找结果(015的值):cam_lookupdest_reg,

21、 src_reg,其中src_reg为查找关键字,结果放在dest_reg中。CRC单元pCRC单元不是执行数据通道的一部分,它与执行数据通道并行工作。p支持16比特和32比特的CRC运算。p用于计算ATM或以太网等2层数据包的校验和。存储器访问延迟和多线程6?6?p存储器访问对系统性能影响很大,一次外部存储器访问相当于微引擎执行上百条指令。p隐藏存储器访问延迟的最好方法是使用多线程。硬件线程和上下文切换p每个微引擎支持8个执行线程p硬件为每个线程维护不同的状态信息(如一个程序计数器,一组信号事件)p硬件可以在线程之间迅速切换而不需要软件的支持,上下文切换为零开销或最多一个时钟周期的开销p概念

22、上,微引擎线程就像传统操作系统中的线程一样操作。线程状态转移p未激活状态:不执行任何操作。p执行状态:正在执行控制存储器中的程序,同一时刻最多只有一个上下文处于该状态。p就绪状态:具备了继续执行数据处理任务的所有外部条件,等待获得微引擎的控制权。p休眠状态:等待某个外部事件的到来。p上下文切换由软件控制,处于执行状态的线程执行一条线程交换指令后转入休眠状态,微引擎对当前处于就绪状态的所有上下文进行仲裁判优,将控制权交给优先级最高的上下文。事件信号pIXP2xxx使用称为事件信号的软件机制同步微引擎的内部操作和外部事件的完成。p可以在指令中指定事件信号,令从属单元在完成指令规定的操作后向微引擎发

23、送该事件信号,如:nsram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tokndram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2p每个线程可以使用15个事件信号,这些信号将线程从休眠状态唤醒。p每个线程有两个本地寄存器,分别记录需要等待的事件信号和已经到来的事件信号。p在线程交换指令中,可以使用AND、OR等逻辑运算符指令线程需要等待的多个事件信号。指令存储器(控制存储器)pIXP2xxx使用单独的存储器系统(即不使用SRAM和DRAM)存储微引擎指令。p指令存储器的组织方式:n共享指令存储器:

24、代码共享,节省空间,但有竞争。n专用指令存储器:无竞争,要求较多空间。pIXP2xxx提供折衷方案:n每个微引擎使用一个私有的指令存储器,避免竞争。n每个指令存储器的容量限制为4096条指令,避免使用较多的空间。p控制存储器属于微引擎的内部存储资源,因而可单周期地读取其中的程序指令。p控制存储器中的程序从IXP2xxx的ROM中读入,在XScale控制下完成。数据通道寄存器p微引擎需要与许多硬件设备交互,许多交互是通过硬件寄存器发生的。p微引擎使用的数据通道寄存器包括:n通用寄存器n传输寄存器n邻居寄存器n本地存储器通用寄存器(GPR)p每个微引擎有256个通用寄存器,每个为32比特,一般用作

25、指令的源和目的寄存器。p通用寄存器的两种使用方法:n8个线程共享整个寄存器组:需要处理互斥。n每个线程分配32个专用的寄存器:不需要互斥。p寄存器寻址方式:n绝对寻址:唯一指定一个寄存器。n相对寻址:指定当前上下文的一个寄存器。p通用寄存器分为两个bank,绝对和相对寄存器地址都必须指明bank及bank中的一个寄存器。p指令的两个源操作数分别来自A Bank 和 B Bank。寄存器绝对编址传输寄存器p微引擎使用传输寄存器缓存与外部设备交换的数据,以协调微引擎与外部设备之间的速度差异。p每个微引擎有512个传输寄存器,按外部总线和传输方向分为四类:nD Xfer in reg及D Xfer

26、out reg:用作微引擎与DRAM控制器的数据交换窗口。nS Xfer in reg及S Xfer out reg:用作微引擎与SRAM控制器、MSF及SHaC之间的数据交换窗口。p传输寄存器可以使用绝对地址或相对地址进行编址。邻居寄存器与软件流水线p微引擎硬件被设计为支持软件流水线模型,软件流水线可以包含来自多个微引擎的模块。p邻居寄存器用来在相邻的两个微引擎之间传递数据。p每个微引擎含有128个邻居寄存器,可以被8个线程共享,也可均分为8份。p邻居寄存器可由上一个邻居微引擎写入数据,也可由自身微引擎写入数据。 p邻居机制只用来传递少量的数据,如数据项的地址。p邻居寄存器机制类似于一个环缓

27、冲器,微引擎硬件包含了协调发送者与接收者的原语。访问邻居寄存器环的原语本地存储器p专用:每个微引擎有一个本地存储器。p容量小:2560字节。p低延迟:建立之后只需要一个指令周期,适合存放临时结果。p通过特殊寄存器访问:每个线程被分配一对LM_ADDR寄存器,LM_ADDR0和LM_ADDR1。首先将要访问的地址装入其中一个寄存器,然后用这个寄存器去访问地址。p改变存储器地址需要三个指令周期,地址建立后存/取操作只需一条指令,递增/递减寻址模式允许快速顺序访问。因此,当一个位置被反复引用或相邻位置被顺序引用时,本地存储器访问可以得到优化。 主要内容pIntel网络处理器概述pXScale核p微引

28、擎p其它功能单元p编程模型p参考设计SHaC单元pSHaC单元包括三个组成部分:n一个ScratchPad存储器n一个哈希单元n一个控制状态寄存器访问代理(CAP)pSHaC单元处理scratch、cap、hash和reflect指令。pSHaC单元独立操作,当命令执行完时通知微引擎。SHaC单元的概念组织SHaC单元与芯片其余部分的主要连接: 到控制总线的连接,接收命令。 到推/拉总线的连接,传递参数及计算结果。 到推/拉仲裁单元的连接,控制推/拉总线上的传输。 入口队列译码Scratchpad存储器p为IXP2XXX片内存储资源,由SHaC控制访问。p容量为16KB,组织成4K长字。p提供

29、一般的数据读/写操作,一次可从Scratch中读/写64个字节(16个长字)的数据,可用作本地数据存储器。p提供两种可由微引擎线程用来进行协调的操作,因而常用于线程间通信:n提供原子操作,用于设置/清除比特、增量/减量、加/减、交换数值等。n提供实现通信环的逻辑,支持环缓冲器的自动管理和操作,可容纳16个环缓冲器,允许在不相邻的一对微引擎之间传递信息(使用pull/push reflector 指令)。Scratchpad的读/写过程p以将微引擎中的数据写入Scratchpad为例:n微引擎将数据写入传输寄存器,将指令“scratch wr, xfer, src_op1, src_op2, r

30、ef_cnt, opt_tok”发送到命令总线。nSHaC单元从命令总线接收命令,控制逻辑检查命令的Target_ID,若为Scratch则将指令缓存在入口队列中。n控制逻辑对指令进行译码,发送信号通知Pull总线仲裁器将数据从传输寄存器中读入pull_fifo中。n当数据读入完成后,将pull_fifo中的数据写入Scratchpad。nSHaC单元向微引擎发送信号,告知操作完成。p使用Pull/Push Reflector在不相邻的微引擎间传输数据:n首先通过Pull总线从源微引擎中将数据读入Scratchpadn再通过Push总线将数据写入目的微引擎。哈希单元p哈希单元用于执行查表和其它

31、需要乘法或除法的任务。p支持48比特、64比特和128比特哈希操作。p哈希单元有两个输入缓冲器,微引擎可以用一条指令发射13个哈希请求,SHaC顺序地将请求传递给哈希单元。p 启动哈希操作的过程:n微引擎将13个数据值放在一组连续的SRAM传输寄存器中,然后将哈希运算指令发送到命令总线。n哈希单元接收命令,利用Pull总线从微引擎的传输寄存器中读取源操作数,执行哈希运算,然后通过Push总线将运算结果推送到微引擎的传输寄存器中。n操作结束后,哈希单元向微引擎发送信号。 CAP操作p设备的控制状态寄存器(CSR)被映射到XScale的地址空间,但其中的一部分CSR是本地的(并不对应一个外部设备)

32、,本地CSR用于控制微引擎及记录微引擎的状态。p硬件定义了四十多个微引擎CSR,每个CSR控制处理的一个方面。 pXScale使用本地CSR将指令装入微引擎并控制微引擎。p每个微引擎只能访问自己的本地CSR。pSHaC集成了许多CSR,对这些CSR的访问是通过SHaC中的CAP进行的。pCap指令用于读/写CSR,如:nCap read, xfer, csr_addr, opt_tok nCap write, xfer, csr_addr, opt_toknCap fast_wr, xfer, csr_addr, opt_tok. 处理器间通信p微引擎与XScale通信(context-to-

33、XScale):n中断:微引擎可使用SHaC单元向XScale发出中断n共享存储器:与polling机制一起使用n存储器环机制:用于转发数据p线程之间的通信(context-to-context):n事件信号nScratchpad或SRAM环机制:任意线程n邻居寄存器:相邻微引擎上的线程n反射总线机制:任意微引擎上的线程pIXP2xxx之间:nCBUS机制:不同IXP2xxx上的线程相互通信。DRAM控制器pDRAM控制器位于主控单元与DRAM存储设备之间,负责控制、管理主控单元对DRAM存储设备的访问。pDRAM控制器通过命令总线、Push总线和Pull总线与主控单元相连。DRAM控制器的特

34、点p支持1个DRAM通道,64比特数据宽度,2GB存储空间。p以8字节为单位进行读/写,一条指令可以读/写连续的8128个字节,特别适合大数据量传输。p支持4个DRAM bank及交织操作:n交织:通过地址映射将连续的存储地址分布到4个bank上,一次操作可读/写相邻的两个bank中的数据。n地址映射完全由硬件完成,对软件是透明的。p访问DRAM的指令格式:ndram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2DRAM读指令的执行过程p微引擎发送指令至命令总线,DRAM控制器从命令总线接收指令。p检查指令的Target_ID,若为DRAM则

35、将指令缓存在cmd_fifo队列中。p确定是否需要访问相邻的2个bank,若需要则根据指令提供的地址及数据字节数产生在相邻2个bank的bank操作及地址;否则直接使用指令中提供的地址。p将各相应的DRAM地址装入指定的bank队列,将bank队列中的DRAM地址发送到FSM管脚上。pFSM管脚检查bank操作符及DRAM地址是否符合规范,若符合,驱动相应的地址引脚,将数据从DRAM存储器中读出。p数据先缓存在push_fifo中,然后通过D Push总线将数据推送到xfer指定的传输寄存器,并给微引擎发送sig1和sig2指定的信号。 SRAM控制器pSRAM控制器用于管理和控制主控单元对S

36、RAM存储设备的访问,以及用于连接符合QDR规范的协处理器。p以长字为单位访问,一条指令可以读/写连续116个长字的数据。pSRAM控制器具有复杂的硬件功能结构,支持:n一般的数据读/写操作n原子操作:设置/清除比特位,递增/递减,数据交换n支持对链表、环缓冲器等复杂数据结构的自动操作pSRAM存储设备通常用于存储如发送队列、数据包描述符、缓冲区链表等重要而复杂的数据结构。链表和环缓冲器p链表和环缓冲器是网络数据处理中非常重要的数据结构,n链表:由位于不连续的存储空间中的若干buffer组成,buffer的个数不限。链表主要用作包队列,每个buffer存放一个包描述符。n环缓冲区:由位于连续存

37、储空间中的若干存储单元组成,创建时即确定了位置和大小。p如果用软件实现以上数据结构,比如将一个数据包放入发送队列:n先从SRAM中读该发送队列的描述符(队列头指针及尾指针)n修改尾指针使指向新的数据包n将修改后的队列描述符写回SRAMp软件实现的缺点:n操作复杂n涉及多次SRAM读写,延迟大,效率低n这些数据结构需要被频繁使用,影响处理速度。Q-ArraypSRAM控制器集成了称为Q-Array的硬件结构来支持上述的数据结构:n每个SRAM通道有一个Q-Array。n每个Q-Array有64个存储单元,每个单元存储一个队列描述符或一个环缓冲器描述符。nQ-Array支持入队和出队操作。p微引擎

38、只需向SRAM控制器发送指令,具体的数据读/写操作由SRAM控制器完成。MSF接口pMSF是IXP2XXX上的一个复杂单元,提供与外部设备进行高速包传输的主要接口。pMSF单元有相互独立的接收和发送接口,每个接口可被配置为处理标准的MAC接口和交换结构接口。p所有与外部的输入/输出均通过MSF中的一组硬件缓冲器(称BUF)进行,BUF构成了外设与微引擎之间的唯一通道。pBUF按照传输方向分为RBUF和TBUF。p每个BUF包含8KB,可以被划分为大小为64字节、128字节或256字节的单元。微引擎可以选择任意一个或一些单元用于一次传输。p较大的包划分成若干mpacket,每个mpacket装入

39、一个BUF单元。MAC硬件及微引擎软件负责将包划分成mpacket。MSF接收单元MSF数据包接收流程p当某一个线程完成指定的数据包处理任务后,将自己加入到Receive_Thread_Freelist。p当数据包到达MSF的接收逻辑单元时,MSF为数据包分配合适的RBUF单元,并将数据包移入。p将该RBUF单元标识为Full Element,加入Full Element List。p控制单元从Full Element List中取出一个RBUF单元,从Receive_Thread_Freelist中取出一个空闲线程,创建该单元的接收状态字,送到空闲线程的传输寄存器,然后通知空闲线程处理数据包

40、。 p在将RBUF单元中的内容读入传输寄存器或DRAM存储器之后,线程将RBUF单元释放。 MSF发送单元MSF数据包发送流程p线程取出一个空闲的TBUF单元,分配给要发送的数据包。p线程将数据包从传输寄存器或DRAM存储器中移入TBUF单元。TBUF单元中的数据包由附加数据和净荷数据组成,附加数据一般由线程创建,作为数据包的包头,净荷数据来自于DRAM存储设备,作为数据包的包体。p线程创建发送控制字。pMSF将TBUF单元中的数据包按发送控制字指定的方式发送出去。 加密单元p加密单元提供了高速处理数据加/解密的硬件。p每个IXP2850包含两个相同的、独立运行的硬件单元,由程序员决定如何使用

41、这两个硬件单元。p每个硬件单元包含了可执行多种加密标准的硬件:n两个3DES/DES核n一个AES核,可以使用128、192或256比特的密钥n两个用于认证的SHA-1核n支持一些常见的标准,如ECB和CBCp所有加密信息(如密钥)包含在两个加密硬件单元中,不会保存在共享存储器中。p从程序员的角度来看,加密单元是用一个API来访问的。总结p提高并行处理能力是IXP2xxx的主要设计考虑:n包含多个微引擎,每个微引擎有自己的专用资源n每个微引擎包含多个硬件线程,每个硬件线程有自己的专用资源n并行操作的功能单元,每个功能单元有自己的命令缓存队列、指令译码和指令逻辑n多条分立的总线,且读/写总线分开

42、n通用寄存器组分成两个bankn传输寄存器按总线及方向划分nMSF包含独立的接收和发送接口nDRAM支持多个bank及交织操作主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计网络应用结构p数据面:高速处理和转发数据包,对性能影响最大。n快路径:微引擎,处理绝大部分的数据包。n慢路径:XScale Core,处理例外包。p控制面:处理协议消息,并负责建立、配置和更新由数据面所使用的表及其它数据结构。p管理面:负责系统配置、收集和报告统计信息、根据用户输入或来自其它应用的消息停止或启动应用。为微引擎和XScale编码p区分微引擎和XScale对程序员来说

43、很重要:n为微引擎编写的代码经编译后下载到裸露的硬件上执行,因此程序员必须直接处理硬件的所有方面;n为XScale编写的代码编译后运行在操作系统下,程序员不需要描写所有的低层操作,必须使用操作系统功能来执行底层任务。n由于访问微引擎的所有API位于内核地址空间,因此XScale上的代码必须被设计为是可装载内核模块的一部分。pIntel IXA中的网络处理本质上就是作用到一个持续的数据包流或信元流上的一系列任务。p这些任务被分布到若干个微引擎上,每个微引擎执行一个特定的任务。当一个微引擎完成它的任务后,将处理上下文传给下一个微引擎继续处理。 pIntel IXA包括三个部分:微引擎、XScale

44、和IXA可移植框架。IXA可移植框架为基于Intel IXP的软件开发提供应用编程接口和硬件抽象。pIXA可移植框架是用微引擎和XScale Core上的一个分层结构实现的。IXA应用的逻辑单元由常用的低层C语言函数和微代码宏组成,专门针对高性能和代码空间最小化而设计。 用低层库写的宏或函数;多个微块可连接成微块组。内核组件:微块在XScale Core上的对应部分。微块(microblock)p微引擎上的快路径处理被划分成一些称为微块的逻辑功能,每个微块是用低层库(包括优化的数据面库和微块基础结构库)写的宏或函数。p微块是粗粒度的,每个微块完成一个功能。p微块可以重用,可以通过微块组合实现所

45、需要的应用。p两种类型的微块:n包处理微块:对数据包执行高层处理功能,如IP包分类、转发等。n驱动微块:执行与底层硬件密切相关的处理功能。p可以用Dispatch Loop将多个微块连接起来形成一个微块组,运行在一个微引擎上。每个微块组独立完成一个数据包的处理功能,形成一个相对独立、完整的处理环节。微引擎编程模型-软件流水线p微引擎在快路径上使用软件流水线模型p有三种方法将流水线级组合起来并映射到微引擎上:上下文流水线,功能流水线,混合流水线。上下文流水线(context pipeline)p每个pipe-stage被映射到一个微引擎上,负责数据包处理的一个子任务。p微引擎中的每个线程被分配一

46、个包,执行相同的处理。p数据包严格按顺序分配给各个线程。p优点:适合需要较多代码空间和需要保存较多状态的子任务。p缺点:不适合传递较大的上下文,功能均匀划分很困难。功能流水线(functional pipeline)p微引擎的执行时间被分成n个流水线级,每级实现一个处理子任务。p数据包严格按顺序分配给各个线程。p多个微引擎并行地执行相同的功能流水线。p优点:不需要在流水线级之间传递上下文,处理速度快p缺点:控制存储器必须能够支持多个子任务,互斥的解决比较复杂。功能流水线(续)p多个微引擎并行执行相同的功能流水线。p相邻微引擎之间的包处理步调错开一个子任务时间(称task staggering)

47、,解决不同微引擎之间的互斥问题。p流水线级的数目必须与微引擎数相等。p微引擎之间的延迟错位通过线程间信号机制实现。混合流水线流水线级之间的通信机制-环缓冲器多生产者-单消费者使用Scratch ring或 SRAM ring单生产者-多消费者使用Scratch ring或 SRAM ring单生产者-单消费者使用Neighbor ring串行数据流处理与RMW操作p串行数据流处理问题:多个线程需要访问同一个数据结构时,必须串行地进行。pRMW是串行数据流处理问题中最重要的一种情形,往往需要进行多次外部存储器访问,且操作的数据结构往往比较复杂,造成很大的访存延迟。p读-修改-写临界区数据的过程:

48、1)检查数据是否处于锁定状态;2)若处于锁定状态,返回第1步,否则锁定该数据;3)将数据从外部存储器读入微引擎;4)修改数据;5)将修改过的数据写回外部存储器;6)将数据解除锁定。pRMW的访存延迟主要来自两个方面:n在RMW操作前后访问外部存储器,对数据进行加锁和解锁n在RMW操作中多次读/写外部存储器减小RMW操作的访存延迟p将数据的编号及锁定状态缓存在CAM中,利用CAM单元的并行比较功能快速确定数据的锁定状态。p将数据本身缓存在本地存储器或SRAM控制器的Q-Array硬件中,减少对外部存储器的访问操作。p改进后的RMW操作,线程先用数据标识符查找CAM:n命中:CAM查找返回一个hi

49、t标志和数据在本地存储器中的位置,直接对数据进行快速的RMW操作。n锁住状态:等待一会再测试。n不命中:CAM查找返回一个miss标识和一个最近最少使用的CAM入口号;线程锁住CAM入口,将本地存储器中与LRU对应的数据写回SRAM,向SRAM发送读命令;将从SRAM取回的数据放入本地存储器中处理,在CAM中创建相应的编号,解锁CAM入口。折叠(folding)p当同一个微引擎中有多个线程需要对同一个数据结构执行RMW操作时,只需第一个进入临界区的线程将外部存储器中的数据读入,修改后缓存在本地存储器中,后续的线程可直接对缓存在本地的数据结构执行RMW操作,最后一个线程将修改后的数据结构写回外部

50、存储器。p这种技术称为折叠,即将多次的RMW操作折叠为一次读-多次修改-一次或多次写操作。无折叠的串行RMW操作采用折叠技术的串行数据流访问线程交织p当线程的指令执行时间/访存延迟=1/ (线程数-1)时,可以将访存延迟完全隐藏在程序执行时间之后。p时延超限(latency bound):访存延迟大于微引擎中所有线程的程序执行时间。p计算超限(compute bound):访存延迟小于微引擎中所有线程的程序执行时间。p实际应用中时延超限情形居多,可以通过增加微引擎中的线程数来平衡计算和访存时间。p线程交织(interleaving threading):通过增加每个线程处理数据包的数量来平衡计

51、算时间和访存时间。p线程交织解决了时延超限的问题,但在本地存储器或Scratch中需要缓存更多的状态,包处理过程更复杂。微块与流水线组织p微块是粗粒度、有状态的实体,负责执行主要的包处理任务。p一个典型的网络系统至少包括三个连接成一条流水线的微块(输入、处理、输出),复杂的系统可以加入更多的微块。p微块之间的连接在运行时形成。微块组与dispatch loopp几个微块可以组合成一个微块组,形成数据包处理流程中一个相对独立、完整的处理环节(如功能流水线)。p每个微块组有一个dispatch loop,定义微块组内数据包流动的方向。p一个微块组可以在一个或多个微引擎上实例化,但两个微块组不能使用

52、相同的微引擎。p编程模型定义了三类微块:n源微块:运行在dispatch loop的起点(微块组中的第一个微块),负责获取流水线要处理的数据包。n转换微块:处理一个包,并将包传给下一个微块。n接收器(sink)微块:运行在dispatch loop的终点(微块组中的最后一个微块),负责将数据包排队发往不同微引擎上的另一个微块组或媒体接口。 微块与流水线级p一般而言,n一个上下文流水线级被映射到一个微引擎中的一个微块以及XScale Core中一个相关联的内核组件,dispatch loop一般不需要。n在功能流水线中,一个微块及相应的内核组件被关联到一个或多个流水线级。 微块的组成p一个微块要

53、包括两部分代码:n初始化微块的代码:启动时调用一次。n包处理代码:每收到一个包时调用一次。p用微代码编写的微块:n初始化宏n包处理宏p用MicroC编写的微块:n初始化函数n包处理函数微块的名字和IDp每个微块在系统内都有一个唯一的名字和一个8比特的ID。p写微块时不需要知道其上游及下游微块是什么,微块ID的值及流水线中下一个微块的ID值可在编译时分配并保存在系统头文件中。p每个微块可有一个或多个逻辑输出,表明数据包下一步应走哪条处理路径。微块的逻辑输出是通过设置dispatch loop的变量dl_next_block的值来向下传递的。p为使微块具有一般性,逻辑输出用符号名字表示,定义在头文

54、件中,并赋以适当的微块ID。p以下符号名字保留:nIX_EXCEPTIONIX_EXCEPTION:指示数据包应被送往XScale Core。nIX_EXCEPTION_PRIORITYIX_EXCEPTION_PRIORITY:指示数据包应在高优先级队列中送往XScale Core。nIX_DROPIX_DROP:指示数据包应当被丢弃。nIX_NULLIX_NULL:指示正在处理的是一个空数据包。Dispatch loop:作用一p作用一:将一个微引擎中的几个微块组织起来,实现这些微块之间的数据流动。 p从概念上说,微块以及微块之间的逻辑调用构成一张图。p事实上,由于临界区的互斥访问以及折叠

55、技术的使用,线程必须严格按顺序执行,因此所有线程必须通过微引擎中的全部微块,即dispatch loop中的数据流是一个串行的流水线。 微块的逻辑调用图 拉平的微块调用图Dispatch loop(续)pDispatch loop提供两个系统微块:nDL_Source:该微块是一个源微块,从scratch ring中取一个包。nDL_Sink:该微块是一个接收器微块,根据dispatch loop的状态,可能:p将数据包放入一个scratch ring,发送给另一个微引擎p丢弃数据包p将数据包放入一个scratch/SRAM ring,发送给XScale Core pDispatch loop

56、是微块的串行流水线,第一个微块是DL_Source,最后一个微块是DL_Sink,每个微块设置dl_next_block变量指出下一个处理数据包的微块。 pDispatch loop开始时调用每个微块的初始化函数(或宏)来初始化每个微块,然后在一个无限循环中依次调用每个微块的处理函数(或宏)。Dispatch loop:作用二p作用二:n在寄存器或本地存储器中维护全局状态n提供本微块组与XScale Core以及本微块组与其它微块组之间的数据包交换。 p例如,微块要将数据包发送给XScale Core时,n调用dl_set_exception,给出微块ID、异常代码和dl_next_block

57、等参数。n其它微块检查dl_next_block的值并只向下传递数据包,直到到达DL_Sink。nDL_Sink将数据包放入通往XScale Core的一个scratch/SRAM ring。n目前的框架提供两个通往XScale Core的环,一个用于高优先级的包,一个用于低优先级的包,这两个环由所有的微引擎共享。 Mpacketp输入和输出微块与MSF连接,需要处理到内存的实际传输。p从IXP2xxx的角度来看,数据包是以固定大小的块(mpacket)进行存储和传输的:n硬件将输入分组划分成若干个mpacket,依次传输给IXP2xxx;n输出机制将一个个mpacket发送给硬件,硬件将它们

58、组装成一个包。pMpacket的长度可以被配置为64字节、128字节或256字节,但一经配置就不能改变。pMpacket大小的选择通常是在内存空间利用率和计算开销之间的权衡。芯片制造商建议的mpacket大小为128字节。Mpacket(续)p输入微块(RX)负责组装mpacket:n每当一个mpacket到达,RX将其从MSF的RBUF中拷贝到DRAM缓冲器。n如果是一个新的数据包的第一个mpacket,RX为该数据包分配一个DRAM缓冲器。n当一个完整的数据包被放入缓冲器后,RX将缓冲器的地址传递给流水线中的下一个微块。 p输出微块(TX)负责将分组从内存发送到物理输出端口,并回收相应的D

59、RAM缓冲器:nTX将分组划分成一系列mpacket,将每个mpacket从内存拷贝到MSF的TBUF中。n释放DRAM缓冲器。p一个RX或TX微块可以处理多个物理接口,这时RX或TX必须从分组流中区分出对应各个物理接口的包,可以将RX或TX所在微引擎的8个线程在分组流之间划分。包缓冲器机制pIntel SDK软件提供了一种包缓冲器机制,一般情况下可获得较好的性能。p包缓冲器机制从DRAM的一个较大的连续地址空间中分配一组固定大小(典型值为2048字节)的缓冲器,每个缓冲器用来存放一个包。p包并不总是从缓冲器的开头放起,而是在包的前面随机加上一段长度为0、128字节、256字节或384字节的填

60、充字节,以提高整体的吞吐量。p随机填充的原因:nDRAM被组织成4个bank,每个bank的宽度为128字节;DRAM控制器提供4条并行的数据通路,当每个处理器访问一个不同的bank时,访存可以并行执行。n随机填充可将包头分布到4个bank中。缓冲器队列与缓冲器分配p如何管理空闲的包缓冲器:n空闲包缓冲器的信息存放在什么地方?n如何最小化包缓冲器分配和回收的开销?pIXP2xxx依靠硬件支持实现高速处理:n在SRAM中使用一个单链表(FIFO队列)管理空闲包缓冲器,链表中的一个元素对应DRAM中的一个空闲缓冲器。n利用SRAM控制器硬件(Q-Array)实现FIFO操作。缓冲器队列与缓冲器分配

61、(续)p举例:n欲从DRAM的地址B开始分配32个连续的包缓冲器;n软件在SRAM中分配一个具有32个连续元素的队列(空闲缓冲器链表),链表的起始位置为F;n若出队操作返回一个链表元素的地址为A,那么DRAM中对应的缓冲器地址为: 预先计算以下两个值:DL_DS_RATIO = buffer size / free list element sizeDL_REL_BASE = B FDL_DS_RATIO缓冲器地址为:buffer address = ADL_DS_RATIO + DL_REL_BASE 若DL_DS_RATIO为2的幂次,则乘法可以用移位代替。缓冲器句柄 p由于空闲链表单元地

62、址与DRAM中的缓冲器地址一一对应,因此空闲链表单元地址就被用来标识缓冲器。p软件总是使用空闲链表单元地址来标识缓冲器,并只在需要时转换成对应的DRAM地址。pIntel使用缓冲器句柄来表示对应了一个空闲链表单元的SRAM地址。为传输一个包,微块将包的缓冲器句柄传递给另一个微块。p缓冲器句柄由4个字节组成,3个字节的SRAM地址以及1个字节的附加信息(缓冲器中是否包含了包的开头或结尾,一个包使用的缓冲器个数)。p将一个缓冲器句柄插入空闲链表意味着相应的包缓冲器被释放,因而丢弃数据包是一个开销很小的操作。包转发和存储器环pIXP2xxx使用存储器环支持处理器之间的通信:n存储器环提供一种基本的生

63、产者-消费者机制。n存储器控制器实现对环的互斥操作(插入和删除)原语。p使用存储器环的优点:n插入和删除操作很快,开销不比常规的存储器操作大很多n免去了程序员解决互斥访问的责任pScratchpad和SRAM中都存在环,但Scratch ring的操作更快。因此,建议使用Scratch ring作为处理器之间传递数据包的机制,SRAM ring用于对操作速度要求不高的通信场合或别的用途。p典型地,在流水线的每一对相邻级之间以及微引擎和XScale Core之间都存在一个Scratch ring。Scratch ring 用Scratch ring连接流水线级以及微引擎和XScale Core

64、队列数组(Q-Array)pIXP2xxx使用Q-Array硬件结构实现对链表和环缓冲器的自动快速操作:nQ-Array位于SRAM控制器中,每个入口包含一个队列(环)描述符,能自动快速完成队列(环)的入队和出队操作。n每个Q-Array只包含64个入口,只能将最常使用的队列(环)入口放置在Q-Array中,其它入口保存在SRAM中,需要时换入。pQ-Array常用于缓存以下3种数据结构:n长期驻留的队列描述符:如空闲缓冲器链表、丢包队列等。n长期驻留的环缓冲器描述符:也是包处理过程中经常要用到的。n缓存的队列描述符:队列描述符本身缓存在Q-Array中,但它们在Q-Array中的位置及状态缓

65、存在CAM中。对缓存的队列描述符进行操作p当需要使用队列描述符时,微引擎先进行CAM查找。p若查找成功,微引擎利用返回的队列描述符位置,直接对缓存的队列描述符进行操作。p若查找失败,表明队列描述符尚示缓存在Q-Array中,微引擎利用返回的LRU,命令SRAM将该LRU写回外部存储器,然后读入所需的队列描述符,缓存在Q-Array中,对其进行操作,修改后的队列描述符仍缓存在Q-Array中。 主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计POS应用的硬件配置 POS:Packet over SONET/SDH或称PPP over SONET/SDH

66、,指使用PPP封 装将IP数据报映射到SONET/SDH帧上。POS IPv4转发的软件组件X1X4X1X1X1X1X1X1X1X?Packet RXp将从媒体接口收到的mpacket重组,将重组后的包传给流水线的下一级:n判断mpacket是否为包的第一个或最后一个mpacket,通过将属于同一个包的所有mpacket依次存放在DRAM缓冲器中得到完整的包;n将包缓冲器句柄及包的元数据(偏移量、大小等)通过微引擎-微引擎Scratch ring传递给下一级。p使用微引擎中的全部8个线程,每个线程一次处理一个mpacket。p为保持包的顺序,线程严格按顺序执行。p最多支持16个虚拟端口,所有这

67、些端口的重组上下文保存在本地存储器。p数据包从Packet RX被传递给一个应用特定的系统微块DL_Sink。PPP解封装和分类pDL_Source从scratch ring取出包缓冲器句柄,读入包元信息,从DRAM中将32个字节的包头读入到由传输寄存器维护的header cache中。p线程严格按顺序从scratch ring中读数据包,并发信号通知下一个线程接收。pPPP解封装/分类微块通过更新数据包元信息中的偏移量和大小从数据包中去掉PPP头。p根据PPP头将数据包分成IPv4、IPv6或PPP控制包(LCP、IPCP等)。p如果数据包是一个PPP控制包或IPv6包,该包被标记为IX_E

68、XCEPTION,否则沿流水线往下传。 IPv4转发p按照RFC 1812检查IP头的有效性,若IP头无效,将数据包标记为IX_DROP;否则p对目的IP地址执行最长前缀匹配查找,查找结果为一个下一跳ID、一个交换结构blade ID和一个输出端口,这三个域保存在包元数据中;若没有找到匹配项或其它情形,数据包被标记为IX_EXCEPTION。p系统微块DL_QM_Sink检查包是否要丢弃或发给XScale Core,如果不是,DL_QM_Sink通过一个scratch ring向队列管理器QM发送一个入队请求,并将缓存的包头写入DRAM,将包的元信息写入SRAM。 基于Cell的队列管理器(C

69、ell QM)p负责对发送队列执行入队和出队操作,发送队列用硬件SRAM链表实现。 p通过scratch ring接收功能流水线的入队请求(以包为单位),接收CSIX调度器的离队请求(以cell)为单位。p每当队列状态发生转移,QM通过邻居环向CSIX调度器发送一个消息。p在每一次离队操作后,QM通过一个scratch ring向CSIX TX微块发送一个传输请求(每次传输一个cell)。pQM上的线程利用本地线程间信令机制严格按顺序执行。 CSIX调度器p调度将要发送给CSIX交换结构的数据包,对交换结构端口采用round robin,对同一端口上的各队列采用加权round robin。p调

70、度和发送均以cframe为单位进行:n接收从交换结构来的流控消息(控制到每一个输出IXP2400的流量)n接收来自QM的队列状态转移消息n检查TX流水线中的cframe长度是否在门限内n确定一个要调度的队列(Round Robin)n向QM发送一个离队消息 CSIX TXp从QM接收发送请求消息,每接收一个发送请求就将一个cframe移入一个TBUF:n数据包的分片状态以及包的元数据被缓存在本地存储器中并用CAM进行查找;n在每个cframe前加上CSIX头和TM(流量管理)头;n数据包发送完毕后,释放相应的缓冲器。 p使用折叠技术严格按顺序执行。CSIX RXp从CSIX交换结构接收cfra

71、me,并将它们重组成IP包。p支持高达64K个VOQ(Virtual Output Queue),这意味着重组上下文存放在SRAM中,折叠技术用来优化上下文的读-修改-写。 p本地存储器中缓存了16个上下文,CAM被用来查找上下文。输入blade ID和QoS类被用来唯一地标识一个上下文,并用作查找CAM的关键字。 p包重组结束后,建立包的元信息,并将元信息传递给流水线的下一级。PPP封装p根据包的元数据中的下一跳ID,将一个PPP头加到数据包上,并将数据包传递到流水线的下一级。p如果一跳ID被设置为一个非法的值(-1),那么该微块假设PPP头已经加上了,只是将包传递到下一级。 基于包的队列管

72、理器p和基于cell的队列管理器基本相同,只是对包而不是对cframe进行操作。p对于调度器的每个离队请求,返回一个离队响应消息,消息中包含调度器实现DRR算法所需要的包长度。包调度器p调度将要从POS接口上发送的POS分组。p在不同端口间采用WRR算法,在同一端口的不同队列间采用DRR算法。p调度器利用Packet TX微块的反馈信息监视每个端口上已调度但尚未发送的包的数量。如果数量超过一个预定的值,调度器停止调度该端口。 Packet TXp通过媒体接口发送数据包:n将数据包分割成mpacket,并将mpacket移入TBUF。n最多支持16个虚拟端口,发送上下文保存在本地存储器。n监视MSF中对应每个端口的TBUF利用率是否超出了一个门限,若是则停止向那个端口发送,所有向该端口发送数据包的请求在本地存储器中排队。n定期向调度器反馈已发送了多少数据包。p支持SPHY 132(一个OC-48端口)、MPHY-4(四个OC-12端口)和MPHY-16(最多16个虚拟端口)三种配置。p对前两种配置,微块运行在一个微引擎上;对于MPHY-16模式,微块运行在两个微引擎上。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号