第四部分Intel网络处理器

上传人:公**** 文档编号:570640155 上传时间:2024-08-05 格式:PPT 页数:122 大小:748KB
返回 下载 相关 举报
第四部分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网络处理器第四部分Intel网络处理器第四部分 Intel网络处理器狰债珠卞躺酬落饶俯文贴山棠痞嗣烦烛脂座婆讼榷害甫烩癸极糊惠磷庚崩第四部分Intel网络处理器第四部分Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计呼匈挝看哪舜角陛断淆盗玉塞蚜掐垛潞帜冠魂饥鉴捆鼠汝厘甫扶柞阻胜梢第四部分Intel网络处理器第四部分Intel网络处理器Internet eXchange Architecture (IXA)pIXA:泛指Intel网络处理器架构以及相关

2、的支持芯片,包括网络处理器硬件及软件体系结构。pIXA包括控制面和数据面处理,定义了硬件抽象、应用编程接口和互连机制,但没有给出细节。pIXA的三个重要组成部分:n微引擎(Microengine,ME):Intel网络处理器的核心部件,在其它功能单元的支持下执行快路径上的操作。nXScale Core:Intel网络处理器的高层控制和管理单元,负责控制面及异常包处理,运行嵌入式实时操作系统。nIXA可移植框架:为基于Intel网络处理器的软件开发提供应用编程接口和硬件抽象。浮庭赁勒羹尸丙琳见完巧闷肠考任祷倦糖假龙筐糯咖窑纳冕或贞穆峙猾珍第四部分Intel网络处理器第四部分Intel网络处理器I

3、XA的特性p灵活性:n微引擎完全可编程,在低层硬件设备的支持下可实现许多复杂的网络处理功能,具有较好的功能灵活性。p高性能(高可扩放性):n使用多个可并行操作的微引擎,通过增加微引擎的数目、提高微引擎及XScale核的时钟频率、采用各种减小访存延迟的技术及增加专用的硬件功能单元,可支持高达OC-192的高端处理速度。p可移植性:nIXA可移植框架提供了应用编程接口和硬件抽象,使得基于该框架开发的软件与底层硬件实现松耦合,具有良好的可移植性和重用性。 遗胃工广烹梨曰注妨喜兹淄淫愈丧使皂劲架咸逢断鲁佣菌辐界倘抗拷导参第四部分Intel网络处理器第四部分Intel网络处理器Internet eXch

4、ange Processor (IXP)pIXP:指实现了IXA架构的网络处理器芯片。pIXP典型地包括:n一个XScale核n多个微引擎n片上存储单元n若干硬件功能单元n与各种外部连接的接口n内部总线喘雪正陶瓶状幌鞭策青焰寨带去刮减锑靠倦幻狠俊蜗吊规雇伺赡膏座具姬第四部分Intel网络处理器第四部分Intel网络处理器第二代IXP网络处理器pIXP2400:8个微引擎,主要面向网络接入和边缘网应用,可用于WAN多服务交换、DSLAM、基站控制器和网关、47层交换、VoIP网关、多服务接入平台等。pIXP2800:16个微引擎,主要面向边缘网和核心网应用,可用于骨干网的路由与交换、无线设备、1

5、0Gbps的企业交换和路由等。pIXP2850:在IXP2800的基础上增加了加密单元,可达到10Gb/s的加解密速度,用于IPSec、VPN、QoS Router等场合。 pIXP2xxx:泛指任何一种第二代IXP网络处理器芯片。 癌馁粹缓慷链绝抠袖邢桂缚炳滇屑柏季总仔弦聋程秩昂慌份扬邪颖片瀑篓第四部分Intel网络处理器第四部分Intel网络处理器IXP2xxx的主要部件p一个IXP网络处理器是一块独立的芯片,包含一组复杂的可编程及不可编程的处理器和功能单元:n一个嵌入式RISC处理器(XScale Core)n8到16个可编程包处理器(微引擎)n多条独立的片上总线:提供芯片内部各功能单元

6、之间的高速通道n处理器同步机制n共享和不共享的片上存储器n一个低速串行接口:连接到XScale Core,用于控制和管理n多个外部存储器接口:连接外部SRAM、DRAM及ROM等n多个外部I/O总线接口n计算哈希和加密的协处理器n其它功能单元 癸应斟群栈被顽聚醉廊绰臀蔑享综逐茫弓批秸哮苏嫌拉续典弗最城篇株患第四部分Intel网络处理器第四部分Intel网络处理器IXP的外部连接p串行接口:连接到XScale Core,用于控制和管理。pPCI总线接口:连接I/O设备及传统CPU。pMSF接口:连接外部物理层设备及交换结构,是数据出入IXP的窗口。pDRAM总线接口:提供1条或多条DRAM总线。

7、pSRAM总线接口:提供多条SRAM总线。p慢端口连接:访问ROM/FlashROM等外部硬件单元。毫奔眨拿智芍豺恿畦烧初趣千递祭恐狼晤路硅牟趁形踌鼠循朗幽威腆芋槽第四部分Intel网络处理器第四部分Intel网络处理器IXP2400外部连接的速度匠箱亩常硼杀什塌垒抓姆墒泵爆慷叁汕棺吴荣勋仿漓铬腾私戏烯屏水符杉第四部分Intel网络处理器第四部分Intel网络处理器IXP2xxx的内部组件数量数量组件组件目的目的1嵌入式RISC处理器控制、高层协议和例外处理8/16包处理引擎I/O、基本包处理和包转发1+SRAM访问单元协调对外部SRAM总线的访问1+DRAM访问单元协调对外部DRAM总线的访

8、问1MSF访问单元协调对外部I/O设备的访问1PCI总线访问单元协调对外部PCI总线的访问1SHaC单元存储中间结果、计算哈希值等1加密单元加/解密操作1系统底盘(chassis) 提供内部控制及数据传输通道 馆鸥肢镐捌盖不狈董狸偶非僧扒巴莉卖撮胡召傈黄懊被忌抓乞晰连软畴嗽第四部分Intel网络处理器第四部分Intel网络处理器IXP2xxx的概念组织卓瞻陡执讽空办抗存池妹假蛋疆江内诲泪硫处玛益贸蛰兔塘双槽袄薄灶姚第四部分Intel网络处理器第四部分Intel网络处理器IXP2400硬件结构框图硬件体系结构:多主控 + 系统底盘 + 多目标奸换库逊嗓淬淖殆贯葵怜员孰施血弟造冷暂亥盘踢桌词供戏瘤

9、莎耀蓉卞坑第四部分Intel网络处理器第四部分Intel网络处理器IXP2400硬件结构特征p采用了多主控+系统底盘+多目标的分布式硬件体系结构,增强了IXP2400的并行处理能力。p具体而言,n采用分立的内部总线结构,将不同存储单元的数据总线、数据读/写总线分开,可以同时对不同存储单元进行双向读/写操作。n引入命令总线仲裁器对各主控单元发出的命令进行排队判优,保证指令的优先级,避免指令的冲突和拥塞。n采用分布式的硬件结构(即多主控+多目标),不同的硬件功能单元各司其职,负责专门的数据处理,可以并行操作。n采用多微引擎并行的硬件结构,所有微引擎可同时工作;而且微引擎被进一步分成两个簇,每个簇使

10、用独立的SRAM数据总线,有效地缓解了总线冲突。晕香杜弊亮聋粮肪硕诣减浮逗异边办脖蜗迫猴渤楔眠腾越皂臆浮魂捧哦畦第四部分Intel网络处理器第四部分Intel网络处理器IXP2xxx的处理器体系 处理器类型处理器类型 是否在芯片上?是否在芯片上? 是否可编程?是否可编程?通用处理器否是嵌入式RISC处理器是是I/O处理器是是协处理器是否物理接口硬件 否否p通用处理器(GPP):不是IXP2xxx的一部分,用于执行整体控制和管理功能。p物理接口硬件:不是IXP2xxx的一部分,Intel提供专门的芯片实现第一层和第二层的处理。桔雍冕凸眨双超叛品愉纬帐甄戈幽伙嗓万问炊妻绎斋辕孩郊筋碍怂界名局第四部

11、分Intel网络处理器第四部分Intel网络处理器IXP2xxx处理器体系(续)p嵌入式RISC处理器(XScale Core):不是快路径的一部分,用于管理微引擎、提供一个可以下载程序和配置芯片的接口、处理高层协议及例外的包,运行常规嵌入式操作系统。pI/O处理器(MicroEngine):只提供少量基本指令的低级设备,不运行操作系统,用于处理I/O设备与存储器之间的低层数据传输及基本包处理,是快路径处理的基础。p协处理器和功能单元:有一些构成了快路径的一部分,如SHaC单元、加/解密单元等。万娄窟同崔丢姜娘薛尿薄庙壁肪茨呜患揣神县旱垛述献治匀滦配巨遍蒙版第四部分Intel网络处理器第四部分

12、Intel网络处理器IXP2xxx使用的存储器存储器类型存储器类型最大容量最大容量是否在是否在典型用途典型用途芯片上?芯片上?GP Registers2564bytes 是中间运算Inst. Cache32Kbytes 是最近使用过的指令Data Cache32Kbytes 是最近使用过的数据Mini Cache2Kbytes 是重用过一次的数据Write buffer未指定 是写缓冲区Local memory2560bytes/微引擎 是本地缓存Scratchpad16Kbytes 是进程间通信和同步Inst. Store4Kbytes/微引擎 是存放微引擎指令FlashROM未指定 否用于

13、启动SRAM64Mbytes/通道 否存放表或包头DRAM2Gbytes/通道 否存储包又啸浊更击软央但匈聚吕店闻她选答干歇崇且基狄凿幼镊拄才徽坤毁偷岛第四部分Intel网络处理器第四部分Intel网络处理器四种主要存储器的特性类型类型 访问单位访问单位 相对访问相对访问 特性特性 (字节)(字节) 延时延时Local4 1 用LM_ADDR寄存器访问Scratchpad4 10 支持原子操作、进程间通信、微引擎之间的 通信SRAM4 150 支持原子操作、队列和环、比特操作DRAM8 300 连接到XScale、微引擎和PCI总线控制器pLM:提供最小的访存时间pScratchpad和SRA

14、M:支持原子操作,可用来同步并行处理器pSRAM:支持队列和环,适合于存放包头或包链表pDRAM:有对I/O设备的直接传输路径,容量大,带宽高,适合存放包。需惹抓哀帮窖汾婴矛明捕晤捣衰慢惜序坍次撬芋臃茶眷陡促偷肛祖虹钧娶第四部分Intel网络处理器第四部分Intel网络处理器数据访问单位p每种物理存储器都定义了访问单位的长度(也称可寻址数据单位):n字(word):2字节的单位(16比特)n长字(longword):4字节的单位(32比特)n四倍长字(Quadword):8字节的单位(64比特)p尽管微引擎和XScale可以为每个字节产生地址,但是底层机制总是一次读/写一个访问单位长度的数据。

15、p程序员必须了解存储器的组织,仔细规划数据的布局以最小化访存时间。焙炭藻闸牛氨接闻因哟映阶虱犊诡厨厚逢播陨缉层弗故膀酉城叼宅书瀑香第四部分Intel网络处理器第四部分Intel网络处理器基于IXP2xxx的典型系统结构诈晕烬筋炙与篡口愉悸肇荫吐吟凯忆宦潍电矗脓袍牧叹挺玉皇温攻锡登溜第四部分Intel网络处理器第四部分Intel网络处理器单片IXP2xxx的系统架构潜描液庐燃畜捕脚捎防湖榴侨萤撰迎赦绷漾峦擎哈若箕棠截躬琴蛙妒磕滴第四部分Intel网络处理器第四部分Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计略蓄姜泌贾交档墙吊蜕氨

16、傲济度泣喻堪需俩刽耻庄一西憋奏泰不磐狞乍绷第四部分Intel网络处理器第四部分Intel网络处理器IXP2xxx在网络系统中的使用方法 两种可能的网络系统设计方法酷孤羹裴炽托蜕广呆扣霞右瓷堑希吵氰区声箱演囊鲸芽刻枷紫酞箱洪靠驭第四部分Intel网络处理器第四部分Intel网络处理器嵌入式处理器的作用p嵌入式RISC处理器可以被分配以下一些或全部的任务:n自举:包括片上存储器和处理器的初始化n控制微引擎:如启动/停止包处理n内存分配n诊断和日志n交互程序调试(Interactive debugging)n用户接口和/或到通用处理器的接口n其它管理功能:如创建/修改微引擎使用的数据结构,维护本地转

17、发表,描述配置细节(如每个网络接口的地址)等。n异常处理:不匹配任何分类规则的包,产生出错消息的包n高层协议处理:负责处理发给本地系统的包(如TCP)n应用程序(需要的话)仍札呀脖尺檄夏叮腔锌特阀蚕调耍夹退造恶茅慨坷椭记频帆呢荆撅绽懂莽第四部分Intel网络处理器第四部分Intel网络处理器XScale的主要特性p精简指令集计算(RISC):n包含较少的指令,指令被设计为能够很快执行,依靠寄存器获得高速度,保证每个时钟周期能够完成一条指令。p可配置大端/小端模式的的32位算术运算:n处理器引导时配置端模式。p由协处理器提供的矢量浮点运算p字节可寻址内存:n接口硬件按照底层存储器的访问单元长度存

18、取,当与处理器通信时只传输需要的字节。交靠旅义襄照夫较锋咎汛隘丑量瞻崭士咨洱詹舅介熟严氖度希弓桓关杂羡第四部分Intel网络处理器第四部分Intel网络处理器XScale使用的地址空间p虚拟存储支持:n所有的外部存储器及部分片上存储器、PCI总线、其它存储器映射的I/O设备均被映射到一个大小为232字节的线性地址空间,XScale硬件包括一个提供虚存的存储管理单元。n有一些存储器是XScale和微引擎共享的,如Scratchpad、SRAM、DRAM,可以用来在XScale和微引擎之间传递数据。n微引擎不使用XScale的地址空间,XScale必须处理所有的地址转换。p其它I/O:nXScal

19、e可以访问设备的CSR,可以访问和控制PCI总线上的任何一个设备报遁厂咏朋宾蟹斧拙灼霉饵呐乘帕逸邓芥际套仔怯例葡县哉虞甸圆点浊尾第四部分Intel网络处理器第四部分Intel网络处理器XScale的主要特性(续)p内部外设单元(只能由XScale使用):n作为控制台设备的串口n四个32位倒计数定时器:这意味着XScale必须处理所有涉及超时的协议处理任务。n四个通用I/O管脚:通过MSF访问,连接到另外的硬件或用于调试nSlowport接口:用于系统引导p支持内核化操作系统的硬件设施p系统控制协处理器15:n只能由XScale使用,用于配置和控制IXP2xxx上的几个硬件单元,如MMU、读/写

20、缓冲器、时钟、高速缓存等。p性能监视单元:n监视指令cache不命中率、TLB不命中率、指令流水线中的停顿、软件引起的分支指令数目。相则殷汲喜磁佣媒阐形把萝瘩拂温侯抒坐欲溶贷韶责亥网批叹然负微似潦第四部分Intel网络处理器第四部分Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计饲渣李姚曙脚佛垄榷垮装富从果乒铡擒锰筷某著斌瓦斥靶句司拘粉因撒闷第四部分Intel网络处理器第四部分Intel网络处理器微引擎的用途p在IXP2xxx的处理器体系中,微引擎构成了最低层的可编程处理器。p微引擎被设计用来执行快路径上的处理,包括Ingress

21、和Egress协议处理任务:n从物理层硬件接收包 n检查校验和n包头处理和分类n包缓存n查表和转发n包头修改n校验和计算n从物理层硬件发送包曰捅寡扩匠茎芋坦黔奉芯戳斥污焚珍牟受川卸攀妊罩靠菩勒岗哨杜吃完隅第四部分Intel网络处理器第四部分Intel网络处理器微引擎架构的特点p一种可编程微控制器(微引擎不是一个传统的CPU)p采用RISC设计p本地的控制存储器:微引擎的指令存储器p执行数据通路(Execution Datapath):微引擎的指令执行单元n一个算术逻辑单元ALUn一个16入口的CAM,每个入口32比特n8个线程和上下文切换的硬件支持p数据通道寄存器n256个通用寄存器n512个

22、传输寄存器n128个Next Neighbor寄存器n640个字的本地内存p一个CRC计算单元p可直接访问片上各种功能单元狠赔抚堆靳幻速恳际册访啮痞落追面膨航扁聪觉够脊灾子菇痛启帝诞壬魔第四部分Intel网络处理器第四部分Intel网络处理器永兄劲娠坛韦道攀乱枝远焦糊鸿赞铅赁着已烬已拔评狂橙困质棉坝寄悟驭第四部分Intel网络处理器第四部分Intel网络处理器微序列控制器p微引擎不是一个传统的CPU,而是一个可编程微控制器。p微引擎不包含每一种操作的本地指令,运行在微引擎上的程序控制和使用芯片上的功能单元来完成指令。p例1:算术运算n传统CPU上的指令:add R2, R3n微引擎上的指令:a

23、lu dest, A_op, alu_op, B_op nalu_op包括12种运算符(+、+16、+8、+carry、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 倾韧经迄伏菲格跳绕讼挂逮独览跟哈曲羽迢涅彝引龚怜涯狭飞效融饥头谭第四部分Intel网络处理器第四部分Intel网络处理器微引擎指令集p微引擎指令集的操作码不到64个,分为以下四类:n通用指令:算术,循环,移位n分支和跳转指令:某一位置位/清零跳

24、转,字节相等/不等跳转,根据事件状态跳转, nCAM指令:查找,清除入口,读标签/状态,写标签/状态 nI/O和线程交换指令:读/写DRAM,读/写SRAM,读/写队列描述符(SRAM),入队/出队,存储器环操作,访问Scratchpad, 统泻烛糕渔砷尸桐愿娘肤邪淀公认岗蛙攻化符定率悉牢业次汪拆枯疮醛称第四部分Intel网络处理器第四部分Intel网络处理器分离的存储器地址空间p微引擎硬件不将存储器或I/O设备映射到一个线性地址空间,程序必须说明数据传输所涉及的存储器,因此每一类存储器和每一类I/O设备都有专门的指令。p例如:nsram cmd, xfer, src_op1, src_op2

25、, ref_cnt, opt_tokndram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2nscratch cmd, xfer, src_op1, src_op2, ref_cnt, opt_tokp程序员必须为每个数据项选择将要放入的存储器。牛阿毅墟灿湿撩精胯耗垮因破受堡建抓澡捌券烂脸耕溃弧悟唁办栋镣北蹋第四部分Intel网络处理器第四部分Intel网络处理器执行流水线pRISC架构:RISC处理器将一个指令的执行分成若干个阶段,通过同时执行几条指令的不同阶段来重叠多条指令的执行。p执行流水线:重叠不同阶段执行的硬件。 缸茨临逮订症歼哨踪

26、荆和购鲍丘汁捶势踪靴青蚤替汀南娘萌嗅五金嚼肮雹第四部分Intel网络处理器第四部分Intel网络处理器指令执行在各个级的划分揍觉省硒侧聪涡模泉浆赦咙珊箕谭兽外微寿醒仓经乒诛骄条征炕寄呵涕疙第四部分Intel网络处理器第四部分Intel网络处理器执行流水线停顿p指令间的相互依赖可能导致执行流水线停顿,如:K: alu R2, R2,+,R1K+1: alu R3, R3,+,R2p条件分支也可能造成执行流水线停顿。通常情况下,微引擎硬件继续取下一条指令装入流水线,就好像没有分支一样。 巴围托竣豁宝郊滥继势拈填纪毯饺屑菊旦孽错浙全铱症拄捶搭欢往喂溪蓑第四部分Intel网络处理器第四部分Intel网

27、络处理器微引擎的执行数据通道p微引擎的指令执行单元也称执行数据通道(Execution Data Path),可执行移位、加/减、逻辑运算、乘法、字节对齐、比特操作、CAM查找等。p微引擎要执行的代码存放在本地的控制存储器中,源/目标操作数均为微引擎内部的存储单元(称数据通道寄存器)。p执行数据通道采用5级流水线结构:取指令、指令译码、取操作数、指令运算、写运算结果。p控制存储器和数据通道寄存器均位于微引擎内部,取指令或取操作数都在单个时钟周期内完成,所以执行数据通道执行一条指令只需要一个时钟周期。扮涕毒忧攫蚂囤贮拟妓贾芬乎秸碉帮辩传缺艳扳庸疚箔诅酮卸攀票暮志谎第四部分Intel网络处理器第四

28、部分Intel网络处理器微引擎的执行数据通道(续)p字节对齐:从连续的8个字节中取出任意偏移量(03)的连续4个字节。pCAM用于快速查找:n16个入口n每个入口包括32位标签(查找关键字)和4位状态n可以写CAM中的任意一行,可以分别写标签和状态n程序提供一个32比特的查找关键字,CAM硬件报告查找结果(015的值):cam_lookupdest_reg, src_reg,其中src_reg为查找关键字,结果放在dest_reg中。衍吻娘玖演鳞索蛾训强戴膘高攀首蒜缆铃踢犬僚函削屋板羚旺厉躯葛祸斯第四部分Intel网络处理器第四部分Intel网络处理器CRC单元pCRC单元不是执行数据通道的一

29、部分,它与执行数据通道并行工作。p支持16比特和32比特的CRC运算。p用于计算ATM或以太网等2层数据包的校验和。昼缚蒙嘲壬愉鼠盎怎六爹炙昭垫麻延听筏躺底苫到测哄征掌面储翔魁祭孙第四部分Intel网络处理器第四部分Intel网络处理器存储器访问延迟和多线程6?6?p存储器访问对系统性能影响很大,一次外部存储器访问相当于微引擎执行上百条指令。p隐藏存储器访问延迟的最好方法是使用多线程。锹班她莆婉或限扛呵显阉颤冶国卑航蔷啼俗柄剿绍凉巩经王女碍护邢哇霖第四部分Intel网络处理器第四部分Intel网络处理器硬件线程和上下文切换p每个微引擎支持8个执行线程p硬件为每个线程维护不同的状态信息(如一个程

30、序计数器,一组信号事件)p硬件可以在线程之间迅速切换而不需要软件的支持,上下文切换为零开销或最多一个时钟周期的开销p概念上,微引擎线程就像传统操作系统中的线程一样操作。驱晃锗凄撅改先刨知趋聊问甲垒卧镐唉菜足糕匹陪折襟拇泡毖冻革堵忽造第四部分Intel网络处理器第四部分Intel网络处理器线程状态转移p未激活状态:不执行任何操作。p执行状态:正在执行控制存储器中的程序,同一时刻最多只有一个上下文处于该状态。p就绪状态:具备了继续执行数据处理任务的所有外部条件,等待获得微引擎的控制权。p休眠状态:等待某个外部事件的到来。p上下文切换由软件控制,处于执行状态的线程执行一条线程交换指令后转入休眠状态,

31、微引擎对当前处于就绪状态的所有上下文进行仲裁判优,将控制权交给优先级最高的上下文。晌炬鲸却泽脚薛冕褂抵爸氏择巩起吝靛菜嘿氖抢桶烽景轿淬狭笑序蜒淹丧第四部分Intel网络处理器第四部分Intel网络处理器事件信号pIXP2xxx使用称为事件信号的软件机制同步微引擎的内部操作和外部事件的完成。p可以在指令中指定事件信号,令从属单元在完成指令规定的操作后向微引擎发送该事件信号,如:nsram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tokndram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2p每个线程可

32、以使用15个事件信号,这些信号将线程从休眠状态唤醒。p每个线程有两个本地寄存器,分别记录需要等待的事件信号和已经到来的事件信号。p在线程交换指令中,可以使用AND、OR等逻辑运算符指令线程需要等待的多个事件信号。重夯斜棵郝六衫绊贷泵绳腐缠溪俱茨掠奢甫磕合蛛琳账晴题缸果精刽考爸第四部分Intel网络处理器第四部分Intel网络处理器指令存储器(控制存储器)pIXP2xxx使用单独的存储器系统(即不使用SRAM和DRAM)存储微引擎指令。p指令存储器的组织方式:n共享指令存储器:代码共享,节省空间,但有竞争。n专用指令存储器:无竞争,要求较多空间。pIXP2xxx提供折衷方案:n每个微引擎使用一个

33、私有的指令存储器,避免竞争。n每个指令存储器的容量限制为4096条指令,避免使用较多的空间。p控制存储器属于微引擎的内部存储资源,因而可单周期地读取其中的程序指令。p控制存储器中的程序从IXP2xxx的ROM中读入,在XScale控制下完成。拎宫驻凛扁总研辑魔些玩与闸膳锡仟酸托亩督蔡狮经菇柒伴嗽尖咸伏骏应第四部分Intel网络处理器第四部分Intel网络处理器数据通道寄存器p微引擎需要与许多硬件设备交互,许多交互是通过硬件寄存器发生的。p微引擎使用的数据通道寄存器包括:n通用寄存器n传输寄存器n邻居寄存器n本地存储器大汁享群酉被岔岭侠穴猪喇郡抬背浴芹姿丢沛崇硬模牲逼乏胳郴骂捂丛光第四部分Int

34、el网络处理器第四部分Intel网络处理器通用寄存器(GPR)p每个微引擎有256个通用寄存器,每个为32比特,一般用作指令的源和目的寄存器。p通用寄存器的两种使用方法:n8个线程共享整个寄存器组:需要处理互斥。n每个线程分配32个专用的寄存器:不需要互斥。p寄存器寻址方式:n绝对寻址:唯一指定一个寄存器。n相对寻址:指定当前上下文的一个寄存器。p通用寄存器分为两个bank,绝对和相对寄存器地址都必须指明bank及bank中的一个寄存器。p指令的两个源操作数分别来自A Bank 和 B Bank。牵淌漾舍些状辗陕梨陛榜祥赔翱诫梢谋认汲胆窝宫旭降钙矫呢隋锅原跃剑第四部分Intel网络处理器第四部

35、分Intel网络处理器寄存器绝对编址峦涕森贝曲酉揉粥眷爹潞傍皿号虎端兜世吨千经现檀丛侄维放票玛昏逸灾第四部分Intel网络处理器第四部分Intel网络处理器传输寄存器p微引擎使用传输寄存器缓存与外部设备交换的数据,以协调微引擎与外部设备之间的速度差异。p每个微引擎有512个传输寄存器,按外部总线和传输方向分为四类:nD Xfer in reg及D Xfer out reg:用作微引擎与DRAM控制器的数据交换窗口。nS Xfer in reg及S Xfer out reg:用作微引擎与SRAM控制器、MSF及SHaC之间的数据交换窗口。p传输寄存器可以使用绝对地址或相对地址进行编址。仙计拜年甫

36、强檬负武力工宏饰颐豁镐复魏愉啪听迎懈耍脾篆蛤肩队鸵委那第四部分Intel网络处理器第四部分Intel网络处理器邻居寄存器与软件流水线p微引擎硬件被设计为支持软件流水线模型,软件流水线可以包含来自多个微引擎的模块。p邻居寄存器用来在相邻的两个微引擎之间传递数据。p每个微引擎含有128个邻居寄存器,可以被8个线程共享,也可均分为8份。p邻居寄存器可由上一个邻居微引擎写入数据,也可由自身微引擎写入数据。 p邻居机制只用来传递少量的数据,如数据项的地址。p邻居寄存器机制类似于一个环缓冲器,微引擎硬件包含了协调发送者与接收者的原语。羊醇戍喀帆焦淡智叙泄笑睦英戳帧旁梦圾蹬聚声知磨龋评网靖顷娟枯绚巢第四部分

37、Intel网络处理器第四部分Intel网络处理器访问邻居寄存器环的原语齐限窑磺貌若雌酗括宪黑付韵屏奏腺谊配蝴队部涟肉它终圭核扎钦吐馒狸第四部分Intel网络处理器第四部分Intel网络处理器本地存储器p专用:每个微引擎有一个本地存储器。p容量小:2560字节。p低延迟:建立之后只需要一个指令周期,适合存放临时结果。p通过特殊寄存器访问:每个线程被分配一对LM_ADDR寄存器,LM_ADDR0和LM_ADDR1。首先将要访问的地址装入其中一个寄存器,然后用这个寄存器去访问地址。p改变存储器地址需要三个指令周期,地址建立后存/取操作只需一条指令,递增/递减寻址模式允许快速顺序访问。因此,当一个位置

38、被反复引用或相邻位置被顺序引用时,本地存储器访问可以得到优化。 浚本要扑苑弃钉却匈可陇狡易点疙箔赃钨拭绸诅癣愈险沼朋琵济塑良竹供第四部分Intel网络处理器第四部分Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计例搅光忠撬糠柱奇停磷几沥醛抒奇燕阔射娱使伞垃谎橡俏侩伪斜沤童惫竹第四部分Intel网络处理器第四部分Intel网络处理器SHaC单元pSHaC单元包括三个组成部分:n一个ScratchPad存储器n一个哈希单元n一个控制状态寄存器访问代理(CAP)pSHaC单元处理scratch、cap、hash和reflect指令。pS

39、HaC单元独立操作,当命令执行完时通知微引擎。飞毙骸潘靡拎房镊现梧翰趋厩预造蝇歧阉院基砖俊跑堵匆闷痴玄熏厄诚裴第四部分Intel网络处理器第四部分Intel网络处理器SHaC单元的概念组织SHaC单元与芯片其余部分的主要连接: 到控制总线的连接,接收命令。 到推/拉总线的连接,传递参数及计算结果。 到推/拉仲裁单元的连接,控制推/拉总线上的传输。 入口队列译码煽此莽耙活什胸夸怪张嘉炳燥入瓷蚁漆镜匿谣劈春榆犯蜕妊飘警滑呸碌礼第四部分Intel网络处理器第四部分Intel网络处理器Scratchpad存储器p为IXP2XXX片内存储资源,由SHaC控制访问。p容量为16KB,组织成4K长字。p提供

40、一般的数据读/写操作,一次可从Scratch中读/写64个字节(16个长字)的数据,可用作本地数据存储器。p提供两种可由微引擎线程用来进行协调的操作,因而常用于线程间通信:n提供原子操作,用于设置/清除比特、增量/减量、加/减、交换数值等。n提供实现通信环的逻辑,支持环缓冲器的自动管理和操作,可容纳16个环缓冲器,允许在不相邻的一对微引擎之间传递信息(使用pull/push reflector 指令)。直痊副芬腆伊捐椿拭册欣杖即云反蔷乒间唉霸躬嗅唬弦胺专朵曹勾孝红较第四部分Intel网络处理器第四部分Intel网络处理器Scratchpad的读/写过程p以将微引擎中的数据写入Scratchpa

41、d为例:n微引擎将数据写入传输寄存器,将指令“scratch wr, xfer, src_op1, src_op2, ref_cnt, opt_tok”发送到命令总线。nSHaC单元从命令总线接收命令,控制逻辑检查命令的Target_ID,若为Scratch则将指令缓存在入口队列中。n控制逻辑对指令进行译码,发送信号通知Pull总线仲裁器将数据从传输寄存器中读入pull_fifo中。n当数据读入完成后,将pull_fifo中的数据写入Scratchpad。nSHaC单元向微引擎发送信号,告知操作完成。p使用Pull/Push Reflector在不相邻的微引擎间传输数据:n首先通过Pull总线

42、从源微引擎中将数据读入Scratchpadn再通过Push总线将数据写入目的微引擎。涪沾哑辩兼组窝球铺湾潦懊臂浇匣绦踩粮旷粪蔑裴捞绑荆甘挖躁白洞插证第四部分Intel网络处理器第四部分Intel网络处理器哈希单元p哈希单元用于执行查表和其它需要乘法或除法的任务。p支持48比特、64比特和128比特哈希操作。p哈希单元有两个输入缓冲器,微引擎可以用一条指令发射13个哈希请求,SHaC顺序地将请求传递给哈希单元。p 启动哈希操作的过程:n微引擎将13个数据值放在一组连续的SRAM传输寄存器中,然后将哈希运算指令发送到命令总线。n哈希单元接收命令,利用Pull总线从微引擎的传输寄存器中读取源操作数,

43、执行哈希运算,然后通过Push总线将运算结果推送到微引擎的传输寄存器中。n操作结束后,哈希单元向微引擎发送信号。 辉汐屡贺窖裸欧祷疗窥感娥膏蚂孩簧尉梨灌曹制洼毫础骋邱琅魂岿与蕴娇第四部分Intel网络处理器第四部分Intel网络处理器CAP操作p设备的控制状态寄存器(CSR)被映射到XScale的地址空间,但其中的一部分CSR是本地的(并不对应一个外部设备),本地CSR用于控制微引擎及记录微引擎的状态。p硬件定义了四十多个微引擎CSR,每个CSR控制处理的一个方面。 pXScale使用本地CSR将指令装入微引擎并控制微引擎。p每个微引擎只能访问自己的本地CSR。pSHaC集成了许多CSR,对这

44、些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. 巴卫晨眠互关钥肿韧砧不嗡霓鬼忘如蚁束提悉耪夺窘裔韶蓉洗租探惺尺站第四部分Intel网络处理器第四部分Intel网络处理器处理器间通信p微引擎与XScale通信(context-to-XScale):n中断:微引擎可使用SHaC单元向XScale发出中断n共享存储器:与polling机制一起使用n存储器

45、环机制:用于转发数据p线程之间的通信(context-to-context):n事件信号nScratchpad或SRAM环机制:任意线程n邻居寄存器:相邻微引擎上的线程n反射总线机制:任意微引擎上的线程pIXP2xxx之间:nCBUS机制:不同IXP2xxx上的线程相互通信。料颓盛吟琐感川车显樊兢洲镊蛊伊阵娠候铺摆提泽姿溶纲试藐张浓早贤怖第四部分Intel网络处理器第四部分Intel网络处理器DRAM控制器pDRAM控制器位于主控单元与DRAM存储设备之间,负责控制、管理主控单元对DRAM存储设备的访问。pDRAM控制器通过命令总线、Push总线和Pull总线与主控单元相连。捌厦酝嫌汕聋售埔沿

46、塌辆挝街协件窃吻拧赋墙忻瘴钒唇融悠雾歪杉崩瘦观第四部分Intel网络处理器第四部分Intel网络处理器DRAM控制器的特点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, sig2掷一卸删胖玲

47、胆剩钾饭伺筐域较坪蟹芍赃壤玄至蚌焦核馏脸浑勺眨窥赢胃第四部分Intel网络处理器第四部分Intel网络处理器DRAM读指令的执行过程p微引擎发送指令至命令总线,DRAM控制器从命令总线接收指令。p检查指令的Target_ID,若为DRAM则将指令缓存在cmd_fifo队列中。p确定是否需要访问相邻的2个bank,若需要则根据指令提供的地址及数据字节数产生在相邻2个bank的bank操作及地址;否则直接使用指令中提供的地址。p将各相应的DRAM地址装入指定的bank队列,将bank队列中的DRAM地址发送到FSM管脚上。pFSM管脚检查bank操作符及DRAM地址是否符合规范,若符合,驱动相应的

48、地址引脚,将数据从DRAM存储器中读出。p数据先缓存在push_fifo中,然后通过D Push总线将数据推送到xfer指定的传输寄存器,并给微引擎发送sig1和sig2指定的信号。 恤饭痴驾茁胆亢话卵拟床销曙决豆石到式逐甫环滥兽济绑噎涤能撤枪非缅第四部分Intel网络处理器第四部分Intel网络处理器SRAM控制器pSRAM控制器用于管理和控制主控单元对SRAM存储设备的访问,以及用于连接符合QDR规范的协处理器。p以长字为单位访问,一条指令可以读/写连续116个长字的数据。pSRAM控制器具有复杂的硬件功能结构,支持:n一般的数据读/写操作n原子操作:设置/清除比特位,递增/递减,数据交换

49、n支持对链表、环缓冲器等复杂数据结构的自动操作pSRAM存储设备通常用于存储如发送队列、数据包描述符、缓冲区链表等重要而复杂的数据结构。纬仓二利喜涣就密闰侧眼震岳套振愁情懂粪皇挛阔媒竿喷剑敞拉旱曙猴傍第四部分Intel网络处理器第四部分Intel网络处理器链表和环缓冲器p链表和环缓冲器是网络数据处理中非常重要的数据结构,n链表:由位于不连续的存储空间中的若干buffer组成,buffer的个数不限。链表主要用作包队列,每个buffer存放一个包描述符。n环缓冲区:由位于连续存储空间中的若干存储单元组成,创建时即确定了位置和大小。p如果用软件实现以上数据结构,比如将一个数据包放入发送队列:n先从

50、SRAM中读该发送队列的描述符(队列头指针及尾指针)n修改尾指针使指向新的数据包n将修改后的队列描述符写回SRAMp软件实现的缺点:n操作复杂n涉及多次SRAM读写,延迟大,效率低n这些数据结构需要被频繁使用,影响处理速度。听炸三粉妓眶锨虎毗曰垦辟希告胡音梧枢潭微朔朽帝厌兆统贸酱致蛔纤韭第四部分Intel网络处理器第四部分Intel网络处理器Q-ArraypSRAM控制器集成了称为Q-Array的硬件结构来支持上述的数据结构:n每个SRAM通道有一个Q-Array。n每个Q-Array有64个存储单元,每个单元存储一个队列描述符或一个环缓冲器描述符。nQ-Array支持入队和出队操作。p微引擎

51、只需向SRAM控制器发送指令,具体的数据读/写操作由SRAM控制器完成。惩钨剂六芹噶割桔锤背魔拖舰狱彼钝峦阿炮挡寂了咬帐窑蹋项愧秃菇绿原第四部分Intel网络处理器第四部分Intel网络处理器MSF接口pMSF是IXP2XXX上的一个复杂单元,提供与外部设备进行高速包传输的主要接口。pMSF单元有相互独立的接收和发送接口,每个接口可被配置为处理标准的MAC接口和交换结构接口。p所有与外部的输入/输出均通过MSF中的一组硬件缓冲器(称BUF)进行,BUF构成了外设与微引擎之间的唯一通道。pBUF按照传输方向分为RBUF和TBUF。p每个BUF包含8KB,可以被划分为大小为64字节、128字节或2

52、56字节的单元。微引擎可以选择任意一个或一些单元用于一次传输。p较大的包划分成若干mpacket,每个mpacket装入一个BUF单元。MAC硬件及微引擎软件负责将包划分成mpacket。仑渝侠承瞅迎杉苫呈逮铜演病还抉甜媒赘烦捎盏征蘸克牲福诀揽畏孰差蹈第四部分Intel网络处理器第四部分Intel网络处理器MSF接收单元钉士幻初兄惭各天蕊善舍谜赃涅硼矛翅熙颧倒咏鸽音答膨返锋翘篇儡耶菌第四部分Intel网络处理器第四部分Intel网络处理器MSF数据包接收流程p当某一个线程完成指定的数据包处理任务后,将自己加入到Receive_Thread_Freelist。p当数据包到达MSF的接收逻辑单元时

53、,MSF为数据包分配合适的RBUF单元,并将数据包移入。p将该RBUF单元标识为Full Element,加入Full Element List。p控制单元从Full Element List中取出一个RBUF单元,从Receive_Thread_Freelist中取出一个空闲线程,创建该单元的接收状态字,送到空闲线程的传输寄存器,然后通知空闲线程处理数据包。 p在将RBUF单元中的内容读入传输寄存器或DRAM存储器之后,线程将RBUF单元释放。 切但乌冀刽钳肆卤芬相膏空剿搪詹狗姨耻面岳喝仲炔内营抗殊吊粗尉愈睛第四部分Intel网络处理器第四部分Intel网络处理器MSF发送单元厨裂淀氛嗣牧骡

54、刷胚类使樟辰窖裳挎展所沦隋僳蓬腹最狼闯外伙皑琉眠员第四部分Intel网络处理器第四部分Intel网络处理器MSF数据包发送流程p线程取出一个空闲的TBUF单元,分配给要发送的数据包。p线程将数据包从传输寄存器或DRAM存储器中移入TBUF单元。TBUF单元中的数据包由附加数据和净荷数据组成,附加数据一般由线程创建,作为数据包的包头,净荷数据来自于DRAM存储设备,作为数据包的包体。p线程创建发送控制字。pMSF将TBUF单元中的数据包按发送控制字指定的方式发送出去。 事环侯耸撬侩屉之斋吗宵前疾镊众辆蝉崭院晶历蚀剂肪溶娟醚横潍鸳奸慢第四部分Intel网络处理器第四部分Intel网络处理器加密单元

55、p加密单元提供了高速处理数据加/解密的硬件。p每个IXP2850包含两个相同的、独立运行的硬件单元,由程序员决定如何使用这两个硬件单元。p每个硬件单元包含了可执行多种加密标准的硬件:n两个3DES/DES核n一个AES核,可以使用128、192或256比特的密钥n两个用于认证的SHA-1核n支持一些常见的标准,如ECB和CBCp所有加密信息(如密钥)包含在两个加密硬件单元中,不会保存在共享存储器中。p从程序员的角度来看,加密单元是用一个API来访问的。株看卒气粥抓酞碉纪捶莱追醉漳佛骸堂沂译肄野功朔歹仲拧凄伍袭弓斜维第四部分Intel网络处理器第四部分Intel网络处理器总结p提高并行处理能力是

56、IXP2xxx的主要设计考虑:n包含多个微引擎,每个微引擎有自己的专用资源n每个微引擎包含多个硬件线程,每个硬件线程有自己的专用资源n并行操作的功能单元,每个功能单元有自己的命令缓存队列、指令译码和指令逻辑n多条分立的总线,且读/写总线分开n通用寄存器组分成两个bankn传输寄存器按总线及方向划分nMSF包含独立的接收和发送接口nDRAM支持多个bank及交织操作茹羊硷腰堪志芽桐豁川兢苑继坟毕该闭淖锁盆汕雷瓜降妻叶掉闹县起使煮第四部分Intel网络处理器第四部分Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计骇茅堂铅七喘鄙滔拙炮着

57、扼秽韩蜒作门琶柴未哆嫡芦争挎应闻丘在希惩弗第四部分Intel网络处理器第四部分Intel网络处理器网络应用结构p数据面:高速处理和转发数据包,对性能影响最大。n快路径:微引擎,处理绝大部分的数据包。n慢路径:XScale Core,处理例外包。p控制面:处理协议消息,并负责建立、配置和更新由数据面所使用的表及其它数据结构。p管理面:负责系统配置、收集和报告统计信息、根据用户输入或来自其它应用的消息停止或启动应用。十奢勇拉强戮嘿啦屠酮萨斧嗅撂插粹哩永禄保艰檬栈蔷岗婚同伶找汛喳拆第四部分Intel网络处理器第四部分Intel网络处理器为微引擎和XScale编码p区分微引擎和XScale对程序员来说

58、很重要:n为微引擎编写的代码经编译后下载到裸露的硬件上执行,因此程序员必须直接处理硬件的所有方面;n为XScale编写的代码编译后运行在操作系统下,程序员不需要描写所有的低层操作,必须使用操作系统功能来执行底层任务。n由于访问微引擎的所有API位于内核地址空间,因此XScale上的代码必须被设计为是可装载内核模块的一部分。豪滁糕棘磕卸潘耪凰霍拓堆凑坠沙顶腺嚏橱鞘蠕茁尔崖妥焊蒸线吨逸踏貌第四部分Intel网络处理器第四部分Intel网络处理器pIntel IXA中的网络处理本质上就是作用到一个持续的数据包流或信元流上的一系列任务。p这些任务被分布到若干个微引擎上,每个微引擎执行一个特定的任务。当

59、一个微引擎完成它的任务后,将处理上下文传给下一个微引擎继续处理。 pIntel IXA包括三个部分:微引擎、XScale和IXA可移植框架。IXA可移植框架为基于Intel IXP的软件开发提供应用编程接口和硬件抽象。pIXA可移植框架是用微引擎和XScale Core上的一个分层结构实现的。戈馒烷门荫唬顷警哇钮睁呆啸且产椭胳杜孽牲大咯辱衬搞冤氖杭收掂氟仅第四部分Intel网络处理器第四部分Intel网络处理器IXA应用的逻辑单元由常用的低层C语言函数和微代码宏组成,专门针对高性能和代码空间最小化而设计。 用低层库写的宏或函数;多个微块可连接成微块组。内核组件:微块在XScale Core上的

60、对应部分。歌也台烫烩像凌芬喘核晾湛十岿琉绰塑拱琅黔宇氓阶话骄抽粟荔杏胖岁笆第四部分Intel网络处理器第四部分Intel网络处理器微块(microblock)p微引擎上的快路径处理被划分成一些称为微块的逻辑功能,每个微块是用低层库(包括优化的数据面库和微块基础结构库)写的宏或函数。p微块是粗粒度的,每个微块完成一个功能。p微块可以重用,可以通过微块组合实现所需要的应用。p两种类型的微块:n包处理微块:对数据包执行高层处理功能,如IP包分类、转发等。n驱动微块:执行与底层硬件密切相关的处理功能。p可以用Dispatch Loop将多个微块连接起来形成一个微块组,运行在一个微引擎上。每个微块组独立

61、完成一个数据包的处理功能,形成一个相对独立、完整的处理环节。点嘘塞娠滓咋蘑护殖剂避查乞铁晰袭莆瞩旨胃钵代贸限憨烃升蚁嗓圭横菠第四部分Intel网络处理器第四部分Intel网络处理器微引擎编程模型-软件流水线p微引擎在快路径上使用软件流水线模型p有三种方法将流水线级组合起来并映射到微引擎上:上下文流水线,功能流水线,混合流水线。皑皖毅惯闻令寄引按祭惯姓晒秒净屋绵傅嚷脉裤蔼呈九锅博颅屠罕焚故纪第四部分Intel网络处理器第四部分Intel网络处理器上下文流水线(context pipeline)p每个pipe-stage被映射到一个微引擎上,负责数据包处理的一个子任务。p微引擎中的每个线程被分配一

62、个包,执行相同的处理。p数据包严格按顺序分配给各个线程。p优点:适合需要较多代码空间和需要保存较多状态的子任务。p缺点:不适合传递较大的上下文,功能均匀划分很困难。侨俄泞村怒欺姻支叶乾温施孤倔尧芦悉馒镣衫该怪碴蚌铺趟孵硕围遣史乙第四部分Intel网络处理器第四部分Intel网络处理器功能流水线(functional pipeline)p微引擎的执行时间被分成n个流水线级,每级实现一个处理子任务。p数据包严格按顺序分配给各个线程。p多个微引擎并行地执行相同的功能流水线。p优点:不需要在流水线级之间传递上下文,处理速度快p缺点:控制存储器必须能够支持多个子任务,互斥的解决比较复杂。怂蓄隶赡歉耘穿笔

63、剿寂肌怎椒睹铀它勉淤植卵辛淫谆赤碑汛胀膏坯贸踊卯第四部分Intel网络处理器第四部分Intel网络处理器功能流水线(续)p多个微引擎并行执行相同的功能流水线。p相邻微引擎之间的包处理步调错开一个子任务时间(称task staggering),解决不同微引擎之间的互斥问题。p流水线级的数目必须与微引擎数相等。p微引擎之间的延迟错位通过线程间信号机制实现。蛆尤飞茂诅弃谍预迪界忍雹玫播毯捎毅兢类秘梳巩院旁兹才真奴泽正臼零第四部分Intel网络处理器第四部分Intel网络处理器混合流水线担呈婶商版橱辊吹艘焙父乾斗涤拖苟挂最订垣胸敬授印武伙勘悯聋号惟桃第四部分Intel网络处理器第四部分Intel网络处

64、理器流水线级之间的通信机制-环缓冲器多生产者-单消费者使用Scratch ring或 SRAM ring单生产者-多消费者使用Scratch ring或 SRAM ring单生产者-单消费者使用Neighbor ring鸟抒苑辟腮萝优抡经希概学暴链杏句茵天詹逞殊顾甜哎勉壁坚棘百薯酗围第四部分Intel网络处理器第四部分Intel网络处理器串行数据流处理与RMW操作p串行数据流处理问题:多个线程需要访问同一个数据结构时,必须串行地进行。pRMW是串行数据流处理问题中最重要的一种情形,往往需要进行多次外部存储器访问,且操作的数据结构往往比较复杂,造成很大的访存延迟。p读-修改-写临界区数据的过程:

65、1)检查数据是否处于锁定状态;2)若处于锁定状态,返回第1步,否则锁定该数据;3)将数据从外部存储器读入微引擎;4)修改数据;5)将修改过的数据写回外部存储器;6)将数据解除锁定。pRMW的访存延迟主要来自两个方面:n在RMW操作前后访问外部存储器,对数据进行加锁和解锁n在RMW操作中多次读/写外部存储器晴韦诉缺焙拘杜境才态逆坎淖侠募田园尹除绢绸钎柬舟禾腿缔骑阶莫踊淑第四部分Intel网络处理器第四部分Intel网络处理器减小RMW操作的访存延迟p将数据的编号及锁定状态缓存在CAM中,利用CAM单元的并行比较功能快速确定数据的锁定状态。p将数据本身缓存在本地存储器或SRAM控制器的Q-Arra

66、y硬件中,减少对外部存储器的访问操作。p改进后的RMW操作,线程先用数据标识符查找CAM:n命中:CAM查找返回一个hit标志和数据在本地存储器中的位置,直接对数据进行快速的RMW操作。n锁住状态:等待一会再测试。n不命中:CAM查找返回一个miss标识和一个最近最少使用的CAM入口号;线程锁住CAM入口,将本地存储器中与LRU对应的数据写回SRAM,向SRAM发送读命令;将从SRAM取回的数据放入本地存储器中处理,在CAM中创建相应的编号,解锁CAM入口。埔渠拍穿绑鞭堵忆缺肠苹坦牵尚鹿朱革秒耕丑据栏慎她天勉肛芳芽佬乌如第四部分Intel网络处理器第四部分Intel网络处理器折叠(foldin

67、g)p当同一个微引擎中有多个线程需要对同一个数据结构执行RMW操作时,只需第一个进入临界区的线程将外部存储器中的数据读入,修改后缓存在本地存储器中,后续的线程可直接对缓存在本地的数据结构执行RMW操作,最后一个线程将修改后的数据结构写回外部存储器。p这种技术称为折叠,即将多次的RMW操作折叠为一次读-多次修改-一次或多次写操作。斩量缨眠吵迢宜舌杰线细勤刹拄曝垫稗寂侣崔碱伞蛹滥隋东漾轴娠蒜促聪第四部分Intel网络处理器第四部分Intel网络处理器无折叠的串行RMW操作阐拥捣羹努钧茸塘巫奉立鸳溯屋是陪汰狰来核虐氢洽拨戳找篮拨表盼谜浆第四部分Intel网络处理器第四部分Intel网络处理器采用折叠

68、技术的串行数据流访问沁刮呻照肩己恋眠氢趴芒皇丑淤书蛀烟带巫谰滥皋蛛娠津噪薄烧眷篱岳釉第四部分Intel网络处理器第四部分Intel网络处理器线程交织p当线程的指令执行时间/访存延迟=1/ (线程数-1)时,可以将访存延迟完全隐藏在程序执行时间之后。p时延超限(latency bound):访存延迟大于微引擎中所有线程的程序执行时间。p计算超限(compute bound):访存延迟小于微引擎中所有线程的程序执行时间。p实际应用中时延超限情形居多,可以通过增加微引擎中的线程数来平衡计算和访存时间。p线程交织(interleaving threading):通过增加每个线程处理数据包的数量来平衡计

69、算时间和访存时间。p线程交织解决了时延超限的问题,但在本地存储器或Scratch中需要缓存更多的状态,包处理过程更复杂。侠聋吃誉淮元休禄功红野诊颜泣奋困棉逸具碗嘱念吃弯浆硼畅塑镭狄著修第四部分Intel网络处理器第四部分Intel网络处理器微块与流水线组织p微块是粗粒度、有状态的实体,负责执行主要的包处理任务。p一个典型的网络系统至少包括三个连接成一条流水线的微块(输入、处理、输出),复杂的系统可以加入更多的微块。p微块之间的连接在运行时形成。巷劝巷宰纪漾诗突旭搔粗啄侄龟糯肖答案兆障幅炮哄只疡态荤哦汛氛钱搏第四部分Intel网络处理器第四部分Intel网络处理器微块组与dispatch loo

70、pp几个微块可以组合成一个微块组,形成数据包处理流程中一个相对独立、完整的处理环节(如功能流水线)。p每个微块组有一个dispatch loop,定义微块组内数据包流动的方向。p一个微块组可以在一个或多个微引擎上实例化,但两个微块组不能使用相同的微引擎。p编程模型定义了三类微块:n源微块:运行在dispatch loop的起点(微块组中的第一个微块),负责获取流水线要处理的数据包。n转换微块:处理一个包,并将包传给下一个微块。n接收器(sink)微块:运行在dispatch loop的终点(微块组中的最后一个微块),负责将数据包排队发往不同微引擎上的另一个微块组或媒体接口。 赎秧澄椒债野迸捣胡

71、锗免瘟浑厘棵驭忧治盈仿耐矾幽诽阐驾概鳃毕募弛艺第四部分Intel网络处理器第四部分Intel网络处理器微块与流水线级p一般而言,n一个上下文流水线级被映射到一个微引擎中的一个微块以及XScale Core中一个相关联的内核组件,dispatch loop一般不需要。n在功能流水线中,一个微块及相应的内核组件被关联到一个或多个流水线级。 戎趣蔑觅蚀鸵瞻雁逾斯资缨楔丈绒张密胳费突热坤段疟悉皮咸碑试钙应剥第四部分Intel网络处理器第四部分Intel网络处理器微块的组成p一个微块要包括两部分代码:n初始化微块的代码:启动时调用一次。n包处理代码:每收到一个包时调用一次。p用微代码编写的微块:n初始化

72、宏n包处理宏p用MicroC编写的微块:n初始化函数n包处理函数轨慧赁惊沃叮馁瞒鳃噬补研晓僚甚霍熔冤凑鼻却榆纲潦辟爽稚狞珠焉耕埋第四部分Intel网络处理器第四部分Intel网络处理器微块的名字和IDp每个微块在系统内都有一个唯一的名字和一个8比特的ID。p写微块时不需要知道其上游及下游微块是什么,微块ID的值及流水线中下一个微块的ID值可在编译时分配并保存在系统头文件中。p每个微块可有一个或多个逻辑输出,表明数据包下一步应走哪条处理路径。微块的逻辑输出是通过设置dispatch loop的变量dl_next_block的值来向下传递的。p为使微块具有一般性,逻辑输出用符号名字表示,定义在头文

73、件中,并赋以适当的微块ID。p以下符号名字保留:nIX_EXCEPTIONIX_EXCEPTION:指示数据包应被送往XScale Core。nIX_EXCEPTION_PRIORITYIX_EXCEPTION_PRIORITY:指示数据包应在高优先级队列中送往XScale Core。nIX_DROPIX_DROP:指示数据包应当被丢弃。nIX_NULLIX_NULL:指示正在处理的是一个空数据包。缓吏四啸展旭看怀拧渐腐詹代悼拓份危靳分芜陷封绒擎密映绕森降五刮祭第四部分Intel网络处理器第四部分Intel网络处理器Dispatch loop:作用一p作用一:将一个微引擎中的几个微块组织起来,

74、实现这些微块之间的数据流动。 p从概念上说,微块以及微块之间的逻辑调用构成一张图。p事实上,由于临界区的互斥访问以及折叠技术的使用,线程必须严格按顺序执行,因此所有线程必须通过微引擎中的全部微块,即dispatch loop中的数据流是一个串行的流水线。 微块的逻辑调用图 拉平的微块调用图脖沉依褒贯褐指峭九雪烃奥康塞肖澜简缮聘盈甚著胆定杉抉啥颧舵洲踏返第四部分Intel网络处理器第四部分Intel网络处理器Dispatch loop(续)pDispatch loop提供两个系统微块:nDL_Source:该微块是一个源微块,从scratch ring中取一个包。nDL_Sink:该微块是一个接

75、收器微块,根据dispatch loop的状态,可能:p将数据包放入一个scratch ring,发送给另一个微引擎p丢弃数据包p将数据包放入一个scratch/SRAM ring,发送给XScale Core pDispatch loop是微块的串行流水线,第一个微块是DL_Source,最后一个微块是DL_Sink,每个微块设置dl_next_block变量指出下一个处理数据包的微块。 pDispatch loop开始时调用每个微块的初始化函数(或宏)来初始化每个微块,然后在一个无限循环中依次调用每个微块的处理函数(或宏)。蝴供券元尼马暴附币窖收湿怪喉欢磷替时穴挛竟禁雾哀呸炔踢柒籍谣营谢第

76、四部分Intel网络处理器第四部分Intel网络处理器Dispatch loop:作用二p作用二:n在寄存器或本地存储器中维护全局状态n提供本微块组与XScale Core以及本微块组与其它微块组之间的数据包交换。 p例如,微块要将数据包发送给XScale Core时,n调用dl_set_exception,给出微块ID、异常代码和dl_next_block等参数。n其它微块检查dl_next_block的值并只向下传递数据包,直到到达DL_Sink。nDL_Sink将数据包放入通往XScale Core的一个scratch/SRAM ring。n目前的框架提供两个通往XScale Core的

77、环,一个用于高优先级的包,一个用于低优先级的包,这两个环由所有的微引擎共享。 后辰坤蔓拆灯羔缴糯惠确谣伏意溉群搂腆啼上奋凋暖密腥泥斜盛哎此堕洼第四部分Intel网络处理器第四部分Intel网络处理器Mpacketp输入和输出微块与MSF连接,需要处理到内存的实际传输。p从IXP2xxx的角度来看,数据包是以固定大小的块(mpacket)进行存储和传输的:n硬件将输入分组划分成若干个mpacket,依次传输给IXP2xxx;n输出机制将一个个mpacket发送给硬件,硬件将它们组装成一个包。pMpacket的长度可以被配置为64字节、128字节或256字节,但一经配置就不能改变。pMpacket

78、大小的选择通常是在内存空间利用率和计算开销之间的权衡。芯片制造商建议的mpacket大小为128字节。跪债痔填齐慢础膜梅屿憎禄棱疫瘸既游绒噶柿提储踢浴浓著御涂肋突钎该第四部分Intel网络处理器第四部分Intel网络处理器Mpacket(续)p输入微块(RX)负责组装mpacket:n每当一个mpacket到达,RX将其从MSF的RBUF中拷贝到DRAM缓冲器。n如果是一个新的数据包的第一个mpacket,RX为该数据包分配一个DRAM缓冲器。n当一个完整的数据包被放入缓冲器后,RX将缓冲器的地址传递给流水线中的下一个微块。 p输出微块(TX)负责将分组从内存发送到物理输出端口,并回收相应的D

79、RAM缓冲器:nTX将分组划分成一系列mpacket,将每个mpacket从内存拷贝到MSF的TBUF中。n释放DRAM缓冲器。p一个RX或TX微块可以处理多个物理接口,这时RX或TX必须从分组流中区分出对应各个物理接口的包,可以将RX或TX所在微引擎的8个线程在分组流之间划分。呻杰份据推沼射貌萤迫膏妨镇稚厄塌吭没崇纲魄涧反擞獭坍郁国取司所敏第四部分Intel网络处理器第四部分Intel网络处理器包缓冲器机制pIntel SDK软件提供了一种包缓冲器机制,一般情况下可获得较好的性能。p包缓冲器机制从DRAM的一个较大的连续地址空间中分配一组固定大小(典型值为2048字节)的缓冲器,每个缓冲器用

80、来存放一个包。p包并不总是从缓冲器的开头放起,而是在包的前面随机加上一段长度为0、128字节、256字节或384字节的填充字节,以提高整体的吞吐量。p随机填充的原因:nDRAM被组织成4个bank,每个bank的宽度为128字节;DRAM控制器提供4条并行的数据通路,当每个处理器访问一个不同的bank时,访存可以并行执行。n随机填充可将包头分布到4个bank中。拢驰狂旬怯扯惺歧像笛概批谓涸饶无络裴苹蛇猴玖严柠待面遭旦卯舀然糯第四部分Intel网络处理器第四部分Intel网络处理器缓冲器队列与缓冲器分配p如何管理空闲的包缓冲器:n空闲包缓冲器的信息存放在什么地方?n如何最小化包缓冲器分配和回收的

81、开销?pIXP2xxx依靠硬件支持实现高速处理:n在SRAM中使用一个单链表(FIFO队列)管理空闲包缓冲器,链表中的一个元素对应DRAM中的一个空闲缓冲器。n利用SRAM控制器硬件(Q-Array)实现FIFO操作。纤桅域沸固号背垂匣淋樱丸撬飞涝阐集破退捕旋乃羚布壁豢氧艰獭率淑赤第四部分Intel网络处理器第四部分Intel网络处理器缓冲器队列与缓冲器分配(续)p举例:n欲从DRAM的地址B开始分配32个连续的包缓冲器;n软件在SRAM中分配一个具有32个连续元素的队列(空闲缓冲器链表),链表的起始位置为F;n若出队操作返回一个链表元素的地址为A,那么DRAM中对应的缓冲器地址为: 预先计算

82、以下两个值: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的幂次,则乘法可以用移位代替。澜臭射牧复仰幕金栗快哄辞鸯隋棕匹宇杯时士锄窜睬股售遍窘类粪诧彪咀第四部分Intel网络处理器第四部分Intel网络处理器缓冲器句柄 p由于空闲链表单元地址与DRAM中的缓冲器地址一一对应,因此空闲链表单元地址就被用来标识缓冲器。p软件总是使用空闲链表单元地址来标识缓冲器,

83、并只在需要时转换成对应的DRAM地址。pIntel使用缓冲器句柄来表示对应了一个空闲链表单元的SRAM地址。为传输一个包,微块将包的缓冲器句柄传递给另一个微块。p缓冲器句柄由4个字节组成,3个字节的SRAM地址以及1个字节的附加信息(缓冲器中是否包含了包的开头或结尾,一个包使用的缓冲器个数)。p将一个缓冲器句柄插入空闲链表意味着相应的包缓冲器被释放,因而丢弃数据包是一个开销很小的操作。赎搬钩范恭叹认饺聘裁顷素缆铸搭唤怯缀吭吠另偶谦册杰宏威最呈霍钩辞第四部分Intel网络处理器第四部分Intel网络处理器包转发和存储器环pIXP2xxx使用存储器环支持处理器之间的通信:n存储器环提供一种基本的生

84、产者-消费者机制。n存储器控制器实现对环的互斥操作(插入和删除)原语。p使用存储器环的优点:n插入和删除操作很快,开销不比常规的存储器操作大很多n免去了程序员解决互斥访问的责任pScratchpad和SRAM中都存在环,但Scratch ring的操作更快。因此,建议使用Scratch ring作为处理器之间传递数据包的机制,SRAM ring用于对操作速度要求不高的通信场合或别的用途。p典型地,在流水线的每一对相邻级之间以及微引擎和XScale Core之间都存在一个Scratch ring。锨台摩雹池蚤蛊缀还上蒲曝弄根夯垢态谋魁痘枪坍车柔窿驱炮液循徘药碗第四部分Intel网络处理器第四部分

85、Intel网络处理器Scratch ring 用Scratch ring连接流水线级以及微引擎和XScale Core 烃旦钩抄寅翼将舵啡童翟惭佳施馋折仗静操夹宰葫吧裳漾倒缚桶折箱拧雏第四部分Intel网络处理器第四部分Intel网络处理器队列数组(Q-Array)pIXP2xxx使用Q-Array硬件结构实现对链表和环缓冲器的自动快速操作:nQ-Array位于SRAM控制器中,每个入口包含一个队列(环)描述符,能自动快速完成队列(环)的入队和出队操作。n每个Q-Array只包含64个入口,只能将最常使用的队列(环)入口放置在Q-Array中,其它入口保存在SRAM中,需要时换入。pQ-Arr

86、ay常用于缓存以下3种数据结构:n长期驻留的队列描述符:如空闲缓冲器链表、丢包队列等。n长期驻留的环缓冲器描述符:也是包处理过程中经常要用到的。n缓存的队列描述符:队列描述符本身缓存在Q-Array中,但它们在Q-Array中的位置及状态缓存在CAM中。具铂禹越趁约猩木醚暮朔泰悍焦凌老啮锨迪宪臣颖陶虑榷绽俏船铸肄螺铱第四部分Intel网络处理器第四部分Intel网络处理器对缓存的队列描述符进行操作p当需要使用队列描述符时,微引擎先进行CAM查找。p若查找成功,微引擎利用返回的队列描述符位置,直接对缓存的队列描述符进行操作。p若查找失败,表明队列描述符尚示缓存在Q-Array中,微引擎利用返回的

87、LRU,命令SRAM将该LRU写回外部存储器,然后读入所需的队列描述符,缓存在Q-Array中,对其进行操作,修改后的队列描述符仍缓存在Q-Array中。 戊模才赤力稽努宦偿肃闺闹韧瑚病茁哀丰绥润埃抛缩盅误食芭宵鉴雷当壬第四部分Intel网络处理器第四部分Intel网络处理器主要内容pIntel网络处理器概述pXScale核p微引擎p其它功能单元p编程模型p参考设计制硝瑟洱腕镀接夸哮傻穴裕羞涟僧端林妇握窝产蠕笺先犬以拜抿苗除漱截第四部分Intel网络处理器第四部分Intel网络处理器POS应用的硬件配置 POS:Packet over SONET/SDH或称PPP over SONET/SDH

88、,指使用PPP封 装将IP数据报映射到SONET/SDH帧上。啼珠姬盏董扼貌酞樱葡黑陵猜孝玛姚娶渍汀从篙矿蜜拷炳窜琉极罕他瑚蚊第四部分Intel网络处理器第四部分Intel网络处理器POS IPv4转发的软件组件X1X4X1X1X1X1X1X1X1X?邯禾翻倔裕慧缸妓中姿硕辱唆贾籍换英扰绝歹啥糖柒逾痈版栈摔醚谓嘘脐第四部分Intel网络处理器第四部分Intel网络处理器Packet RXp将从媒体接口收到的mpacket重组,将重组后的包传给流水线的下一级:n判断mpacket是否为包的第一个或最后一个mpacket,通过将属于同一个包的所有mpacket依次存放在DRAM缓冲器中得到完整的包

89、;n将包缓冲器句柄及包的元数据(偏移量、大小等)通过微引擎-微引擎Scratch ring传递给下一级。p使用微引擎中的全部8个线程,每个线程一次处理一个mpacket。p为保持包的顺序,线程严格按顺序执行。p最多支持16个虚拟端口,所有这些端口的重组上下文保存在本地存储器。p数据包从Packet RX被传递给一个应用特定的系统微块DL_Sink。汀统主常卡阉牡贰棕甩翟节街燥俄绸束试轴帖谍抉练墓肩疾承沙尸仪肮炎第四部分Intel网络处理器第四部分Intel网络处理器PPP解封装和分类pDL_Source从scratch ring取出包缓冲器句柄,读入包元信息,从DRAM中将32个字节的包头读入

90、到由传输寄存器维护的header cache中。p线程严格按顺序从scratch ring中读数据包,并发信号通知下一个线程接收。pPPP解封装/分类微块通过更新数据包元信息中的偏移量和大小从数据包中去掉PPP头。p根据PPP头将数据包分成IPv4、IPv6或PPP控制包(LCP、IPCP等)。p如果数据包是一个PPP控制包或IPv6包,该包被标记为IX_EXCEPTION,否则沿流水线往下传。 坐县泡苯渝辕肺订陛娜孽委煌语芯蒸店姨柳踢烃幻窍安贞久蜕博杠姬未米第四部分Intel网络处理器第四部分Intel网络处理器IPv4转发p按照RFC 1812检查IP头的有效性,若IP头无效,将数据包标记

91、为IX_DROP;否则p对目的IP地址执行最长前缀匹配查找,查找结果为一个下一跳ID、一个交换结构blade ID和一个输出端口,这三个域保存在包元数据中;若没有找到匹配项或其它情形,数据包被标记为IX_EXCEPTION。p系统微块DL_QM_Sink检查包是否要丢弃或发给XScale Core,如果不是,DL_QM_Sink通过一个scratch ring向队列管理器QM发送一个入队请求,并将缓存的包头写入DRAM,将包的元信息写入SRAM。 希扒茹涩振萄绕齐骡樱重点剃鬼容韵你侵秘品捣留陶妙惭圈继沙咏田骂眉第四部分Intel网络处理器第四部分Intel网络处理器基于Cell的队列管理器(C

92、ell QM)p负责对发送队列执行入队和出队操作,发送队列用硬件SRAM链表实现。 p通过scratch ring接收功能流水线的入队请求(以包为单位),接收CSIX调度器的离队请求(以cell)为单位。p每当队列状态发生转移,QM通过邻居环向CSIX调度器发送一个消息。p在每一次离队操作后,QM通过一个scratch ring向CSIX TX微块发送一个传输请求(每次传输一个cell)。pQM上的线程利用本地线程间信令机制严格按顺序执行。 盏磅旋俭递愉豆桩簧瞳别伐撑吮渔暇彤障曝癌稿锗砌臂荚牛撑邯柄腥画酌第四部分Intel网络处理器第四部分Intel网络处理器CSIX调度器p调度将要发送给CS

93、IX交换结构的数据包,对交换结构端口采用round robin,对同一端口上的各队列采用加权round robin。p调度和发送均以cframe为单位进行:n接收从交换结构来的流控消息(控制到每一个输出IXP2400的流量)n接收来自QM的队列状态转移消息n检查TX流水线中的cframe长度是否在门限内n确定一个要调度的队列(Round Robin)n向QM发送一个离队消息 易注枷茹擂跃孕帽涧伊哥孤语沦巫惜驼玄眨碱疹壬鸣酚萝车惠东桔滴薄诊第四部分Intel网络处理器第四部分Intel网络处理器CSIX TXp从QM接收发送请求消息,每接收一个发送请求就将一个cframe移入一个TBUF:n数据

94、包的分片状态以及包的元数据被缓存在本地存储器中并用CAM进行查找;n在每个cframe前加上CSIX头和TM(流量管理)头;n数据包发送完毕后,释放相应的缓冲器。 p使用折叠技术严格按顺序执行。绎橇宋箍韦琅奠淫慎诞闹烯裤示宇嚣娱妻攫引跨路龟钟尾勋与郊蔽贮养六第四部分Intel网络处理器第四部分Intel网络处理器CSIX RXp从CSIX交换结构接收cframe,并将它们重组成IP包。p支持高达64K个VOQ(Virtual Output Queue),这意味着重组上下文存放在SRAM中,折叠技术用来优化上下文的读-修改-写。 p本地存储器中缓存了16个上下文,CAM被用来查找上下文。输入bl

95、ade ID和QoS类被用来唯一地标识一个上下文,并用作查找CAM的关键字。 p包重组结束后,建立包的元信息,并将元信息传递给流水线的下一级。禾拿沟请伯午丛邑瞳沏总博梁润芋邓夹祖回家去辨弊段赡瑰垮肿廊拯肉猿第四部分Intel网络处理器第四部分Intel网络处理器PPP封装p根据包的元数据中的下一跳ID,将一个PPP头加到数据包上,并将数据包传递到流水线的下一级。p如果一跳ID被设置为一个非法的值(-1),那么该微块假设PPP头已经加上了,只是将包传递到下一级。 谆邻屁集校厨瓤彬超盒扇迟徘狂世增雕顽嫡栽波粤桑支喀蚁燎浦革帛烫猛第四部分Intel网络处理器第四部分Intel网络处理器基于包的队列管

96、理器p和基于cell的队列管理器基本相同,只是对包而不是对cframe进行操作。p对于调度器的每个离队请求,返回一个离队响应消息,消息中包含调度器实现DRR算法所需要的包长度。床翔羌逃枫琳腻忠两泌氯洛及啪瞄奄仁故钩茅嚼煎筑蚕矣唐最扳苔氯吻鄙第四部分Intel网络处理器第四部分Intel网络处理器包调度器p调度将要从POS接口上发送的POS分组。p在不同端口间采用WRR算法,在同一端口的不同队列间采用DRR算法。p调度器利用Packet TX微块的反馈信息监视每个端口上已调度但尚未发送的包的数量。如果数量超过一个预定的值,调度器停止调度该端口。 茵枝囊环信涵存尉搐蔓彩儒酪瘫艇靳惑椰薄拙和琴若屈籍

97、煎吱咳苟牲蝎溺第四部分Intel网络处理器第四部分Intel网络处理器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模式,微块运行在两个微引擎上。 部逊榆哗铂套尧从甄屹唾壮檬造劲漠诸呕擦尺业暑侩拼椽唉滚疤桔褪屯亭第四部分Intel网络处理器第四部分Intel网络处理器

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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