第四部分Intel网络处理器教学课件.ppt
《第四部分Intel网络处理器教学课件.ppt》由会员分享,可在线阅读,更多相关《第四部分Intel网络处理器教学课件.ppt(122页珍藏版)》请在三一文库上搜索。
1、第四部分 Intel网络处理器,主要内容,Intel网络处理器概述 XScale核 微引擎 其它功能单元 编程模型 参考设计,Internet eXchange Architecture (IXA),IXA:泛指Intel网络处理器架构以及相关的支持芯片,包括网络处理器硬件及软件体系结构。 IXA包括控制面和数据面处理,定义了硬件抽象、应用编程接口和互连机制,但没有给出细节。 IXA的三个重要组成部分: 微引擎(Microengine,ME):Intel网络处理器的核心部件,在其它功能单元的支持下执行快路径上的操作。 XScale Core:Intel网络处理器的高层控制和管理单元,负责控制面
2、及异常包处理,运行嵌入式实时操作系统。 IXA可移植框架:为基于Intel网络处理器的软件开发提供应用编程接口和硬件抽象。,IXA的特性,灵活性: 微引擎完全可编程,在低层硬件设备的支持下可实现许多复杂的网络处理功能,具有较好的功能灵活性。 高性能(高可扩放性): 使用多个可并行操作的微引擎,通过增加微引擎的数目、提高微引擎及XScale核的时钟频率、采用各种减小访存延迟的技术及增加专用的硬件功能单元,可支持高达OC-192的高端处理速度。 可移植性: IXA可移植框架提供了应用编程接口和硬件抽象,使得基于该框架开发的软件与底层硬件实现松耦合,具有良好的可移植性和重用性。,Internet e
3、Xchange Processor (IXP),IXP:指实现了IXA架构的网络处理器芯片。 IXP典型地包括: 一个XScale核 多个微引擎 片上存储单元 若干硬件功能单元 与各种外部连接的接口 内部总线,第二代IXP网络处理器,IXP2400:8个微引擎,主要面向网络接入和边缘网应用,可用于WAN多服务交换、DSLAM、基站控制器和网关、47层交换、VoIP网关、多服务接入平台等。 IXP2800:16个微引擎,主要面向边缘网和核心网应用,可用于骨干网的路由与交换、无线设备、10Gbps的企业交换和路由等。 IXP2850:在IXP2800的基础上增加了加密单元,可达到10Gb/s的加解
4、密速度,用于IPSec、VPN、QoS Router等场合。 IXP2xxx:泛指任何一种第二代IXP网络处理器芯片。,IXP2xxx的主要部件,一个IXP网络处理器是一块独立的芯片,包含一组复杂的可编程及不可编程的处理器和功能单元: 一个嵌入式RISC处理器(XScale Core) 8到16个可编程包处理器(微引擎) 多条独立的片上总线:提供芯片内部各功能单元之间的高速通道 处理器同步机制 共享和不共享的片上存储器 一个低速串行接口:连接到XScale Core,用于控制和管理 多个外部存储器接口:连接外部SRAM、DRAM及ROM等 多个外部I/O总线接口 计算哈希和加密的协处理器 其它
5、功能单元,IXP的外部连接,串行接口:连接到XScale Core,用于控制和管理。 PCI总线接口:连接I/O设备及传统CPU。 MSF接口:连接外部物理层设备及交换结构,是数据出入IXP的窗口。 DRAM总线接口:提供1条或多条DRAM总线。 SRAM总线接口:提供多条SRAM总线。 慢端口连接:访问ROM/FlashROM等外部硬件单元。,IXP2400外部连接的速度,IXP2xxx的内部组件,数量 组件 目的 1 嵌入式RISC处理器 控制、高层协议和例外处理 8/16 包处理引擎 I/O、基本包处理和包转发 1+ SRAM访问单元 协调对外部SRAM总线的访问 1+ DRAM访问单元
6、 协调对外部DRAM总线的访问 1 MSF访问单元 协调对外部I/O设备的访问 1 PCI总线访问单元 协调对外部PCI总线的访问 1 SHaC单元 存储中间结果、计算哈希值等 1 加密单元 加/解密操作 1 系统底盘(chassis) 提供内部控制及数据传输通道,IXP2xxx的概念组织,IXP2400硬件结构框图,硬件体系结构:多主控 + 系统底盘 + 多目标,IXP2400硬件结构特征,采用了多主控+系统底盘+多目标的分布式硬件体系结构,增强了IXP2400的并行处理能力。 具体而言, 采用分立的内部总线结构,将不同存储单元的数据总线、数据读/写总线分开,可以同时对不同存储单元进行双向读
7、/写操作。 引入命令总线仲裁器对各主控单元发出的命令进行排队判优,保证指令的优先级,避免指令的冲突和拥塞。 采用分布式的硬件结构(即多主控+多目标),不同的硬件功能单元各司其职,负责专门的数据处理,可以并行操作。 采用多微引擎并行的硬件结构,所有微引擎可同时工作;而且微引擎被进一步分成两个簇,每个簇使用独立的SRAM数据总线,有效地缓解了总线冲突。,IXP2xxx的处理器体系,处理器类型 是否在芯片上? 是否可编程? 通用处理器 否 是 嵌入式RISC处理器 是 是 I/O处理器 是 是 协处理器 是 否 物理接口硬件 否 否,通用处理器(GPP):不是IXP2xxx的一部分,用于执行整体控制
8、和管理功能。 物理接口硬件:不是IXP2xxx的一部分,Intel提供专门的芯片实现第一层和第二层的处理。,IXP2xxx处理器体系(续),嵌入式RISC处理器(XScale Core):不是快路径的一部分,用于管理微引擎、提供一个可以下载程序和配置芯片的接口、处理高层协议及例外的包,运行常规嵌入式操作系统。 I/O处理器(MicroEngine):只提供少量基本指令的低级设备,不运行操作系统,用于处理I/O设备与存储器之间的低层数据传输及基本包处理,是快路径处理的基础。 协处理器和功能单元:有一些构成了快路径的一部分,如SHaC单元、加/解密单元等。,IXP2xxx使用的存储器,存储器类型
9、最大容量 是否在 典型用途 芯片上? GP Registers 2564bytes 是 中间运算 Inst. Cache 32Kbytes 是 最近使用过的指令 Data Cache 32Kbytes 是 最近使用过的数据 Mini Cache 2Kbytes 是 重用过一次的数据 Write buffer 未指定 是 写缓冲区 Local memory 2560bytes/微引擎 是 本地缓存 Scratchpad 16Kbytes 是 进程间通信和同步 Inst. Store 4Kbytes/微引擎 是 存放微引擎指令 FlashROM 未指定 否 用于启动 SRAM 64Mbytes/通
10、道 否 存放表或包头 DRAM 2Gbytes/通道 否 存储包,四种主要存储器的特性,类型 访问单位 相对访问 特性 (字节) 延时 Local 4 1 用LM_ADDR寄存器访问 Scratchpad 4 10 支持原子操作、进程间通信、微引擎之间的 通信 SRAM 4 150 支持原子操作、队列和环、比特操作 DRAM 8 300 连接到XScale、微引擎和PCI总线控制器,LM:提供最小的访存时间 Scratchpad和SRAM:支持原子操作,可用来同步并行处理器 SRAM:支持队列和环,适合于存放包头或包链表 DRAM:有对I/O设备的直接传输路径,容量大,带宽高,适合存放包。,数
11、据访问单位,每种物理存储器都定义了访问单位的长度(也称可寻址数据单位): 字(word):2字节的单位(16比特) 长字(longword):4字节的单位(32比特) 四倍长字(Quadword):8字节的单位(64比特) 尽管微引擎和XScale可以为每个字节产生地址,但是底层机制总是一次读/写一个访问单位长度的数据。 程序员必须了解存储器的组织,仔细规划数据的布局以最小化访存时间。,基于IXP2xxx的典型系统结构,单片IXP2xxx的系统架构,主要内容,Intel网络处理器概述 XScale核 微引擎 其它功能单元 编程模型 参考设计,IXP2xxx在网络系统中的使用方法,两种可能的网络
12、系统设计方法,嵌入式处理器的作用,嵌入式RISC处理器可以被分配以下一些或全部的任务: 自举:包括片上存储器和处理器的初始化 控制微引擎:如启动/停止包处理 内存分配 诊断和日志 交互程序调试(Interactive debugging) 用户接口和/或到通用处理器的接口 其它管理功能:如创建/修改微引擎使用的数据结构,维护本地转发表,描述配置细节(如每个网络接口的地址)等。 异常处理:不匹配任何分类规则的包,产生出错消息的包 高层协议处理:负责处理发给本地系统的包(如TCP) 应用程序(需要的话),XScale的主要特性,精简指令集计算(RISC): 包含较少的指令,指令被设计为能够很快执行
13、,依靠寄存器获得高速度,保证每个时钟周期能够完成一条指令。 可配置大端/小端模式的的32位算术运算: 处理器引导时配置端模式。 由协处理器提供的矢量浮点运算 字节可寻址内存: 接口硬件按照底层存储器的访问单元长度存取,当与处理器通信时只传输需要的字节。,XScale使用的地址空间,虚拟存储支持: 所有的外部存储器及部分片上存储器、PCI总线、其它存储器映射的I/O设备均被映射到一个大小为232字节的线性地址空间,XScale硬件包括一个提供虚存的存储管理单元。 有一些存储器是XScale和微引擎共享的,如Scratchpad、SRAM、DRAM,可以用来在XScale和微引擎之间传递数据。 微
14、引擎不使用XScale的地址空间,XScale必须处理所有的地址转换。 其它I/O: XScale可以访问设备的CSR,可以访问和控制PCI总线上的任何一个设备,XScale的主要特性(续),内部外设单元(只能由XScale使用): 作为控制台设备的串口 四个32位倒计数定时器:这意味着XScale必须处理所有涉及超时的协议处理任务。 四个通用I/O管脚:通过MSF访问,连接到另外的硬件或用于调试 Slowport接口:用于系统引导 支持内核化操作系统的硬件设施 系统控制协处理器15: 只能由XScale使用,用于配置和控制IXP2xxx上的几个硬件单元,如MMU、读/写缓冲器、时钟、高速缓存
15、等。 性能监视单元: 监视指令cache不命中率、TLB不命中率、指令流水线中的停顿、软件引起的分支指令数目。,主要内容,Intel网络处理器概述 XScale核 微引擎 其它功能单元 编程模型 参考设计,微引擎的用途,在IXP2xxx的处理器体系中,微引擎构成了最低层的可编程处理器。 微引擎被设计用来执行快路径上的处理,包括Ingress和Egress协议处理任务: 从物理层硬件接收包 检查校验和 包头处理和分类 包缓存 查表和转发 包头修改 校验和计算 从物理层硬件发送包,微引擎架构的特点,一种可编程微控制器(微引擎不是一个传统的CPU) 采用RISC设计 本地的控制存储器:微引擎的指令存
16、储器 执行数据通路(Execution Datapath):微引擎的指令执行单元 一个算术逻辑单元ALU 一个16入口的CAM,每个入口32比特 8个线程和上下文切换的硬件支持 数据通道寄存器 256个通用寄存器 512个传输寄存器 128个Next Neighbor寄存器 640个字的本地内存 一个CRC计算单元 可直接访问片上各种功能单元,微序列控制器,微引擎不是一个传统的CPU,而是一个可编程微控制器。 微引擎不包含每一种操作的本地指令,运行在微引擎上的程序控制和使用芯片上的功能单元来完成指令。 例1:算术运算 传统CPU上的指令:add R2, R3 微引擎上的指令:alu dest,
17、 A_op, alu_op, B_op alu_op包括12种运算符(+、+16、+8、+carry、B-A、B、B、AND、AND、AND、OR、XOR) 例2:内存引用 传统CPU上的指令:load R3, X 微引擎上的指令: sram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tok,微引擎指令集,微引擎指令集的操作码不到64个,分为以下四类: 通用指令:算术,循环,移位 分支和跳转指令:某一位置位/清零跳转,字节相等/不等跳转,根据事件状态跳转, CAM指令:查找,清除入口,读标签/状态,写标签/状态 I/O和线程交换指令:读/写DRAM,读
18、/写SRAM,读/写队列描述符(SRAM),入队/出队,存储器环操作,访问Scratchpad,,分离的存储器地址空间,微引擎硬件不将存储器或I/O设备映射到一个线性地址空间,程序必须说明数据传输所涉及的存储器,因此每一类存储器和每一类I/O设备都有专门的指令。 例如: sram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tok dram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2 scratch cmd, xfer, src_op1, src_op2, ref_cnt, opt_tok 程序员必须
19、为每个数据项选择将要放入的存储器。,执行流水线,RISC架构:RISC处理器将一个指令的执行分成若干个阶段,通过同时执行几条指令的不同阶段来重叠多条指令的执行。 执行流水线:重叠不同阶段执行的硬件。,指令执行在各个级的划分,执行流水线停顿,指令间的相互依赖可能导致执行流水线停顿,如: K: alu R2, R2,+,R1 K+1: alu R3, R3,+,R2 条件分支也可能造成执行流水线停顿。通常情况下,微引擎硬件继续取下一条指令装入流水线,就好像没有分支一样。,微引擎的执行数据通道,微引擎的指令执行单元也称执行数据通道(Execution Data Path),可执行移位、加/减、逻辑运
20、算、乘法、字节对齐、比特操作、CAM查找等。 微引擎要执行的代码存放在本地的控制存储器中,源/目标操作数均为微引擎内部的存储单元(称数据通道寄存器)。 执行数据通道采用5级流水线结构:取指令、指令译码、取操作数、指令运算、写运算结果。 控制存储器和数据通道寄存器均位于微引擎内部,取指令或取操作数都在单个时钟周期内完成,所以执行数据通道执行一条指令只需要一个时钟周期。,微引擎的执行数据通道(续),字节对齐:从连续的8个字节中取出任意偏移量(03)的连续4个字节。 CAM用于快速查找: 16个入口 每个入口包括32位标签(查找关键字)和4位状态 可以写CAM中的任意一行,可以分别写标签和状态 程序
21、提供一个32比特的查找关键字,CAM硬件报告查找结果(015的值):cam_lookupdest_reg, src_reg,其中src_reg为查找关键字,结果放在dest_reg中。,CRC单元,CRC单元不是执行数据通道的一部分,它与执行数据通道并行工作。 支持16比特和32比特的CRC运算。 用于计算ATM或以太网等2层数据包的校验和。,存储器访问延迟和多线程,6?,6?,存储器访问对系统性能影响很大,一次外部存储器访问相当于微引擎执行上百条指令。 隐藏存储器访问延迟的最好方法是使用多线程。,硬件线程和上下文切换,每个微引擎支持8个执行线程 硬件为每个线程维护不同的状态信息(如一个程序计
22、数器,一组信号事件) 硬件可以在线程之间迅速切换而不需要软件的支持,上下文切换为零开销或最多一个时钟周期的开销 概念上,微引擎线程就像传统操作系统中的线程一样操作。,线程状态转移,未激活状态:不执行任何操作。 执行状态:正在执行控制存储器中的程序,同一时刻最多只有一个上下文处于该状态。 就绪状态:具备了继续执行数据处理任务的所有外部条件,等待获得微引擎的控制权。 休眠状态:等待某个外部事件的到来。 上下文切换由软件控制,处于执行状态的线程执行一条线程交换指令后转入休眠状态,微引擎对当前处于就绪状态的所有上下文进行仲裁判优,将控制权交给优先级最高的上下文。,事件信号,IXP2xxx使用称为事件信
23、号的软件机制同步微引擎的内部操作和外部事件的完成。 可以在指令中指定事件信号,令从属单元在完成指令规定的操作后向微引擎发送该事件信号,如: sram cmd, xfer, src_op1, src_op2, ref_cnt, opt_tok dram cmd, xfer, src_op1, src_op2, ref_cnt, sig1, sig2 每个线程可以使用15个事件信号,这些信号将线程从休眠状态唤醒。 每个线程有两个本地寄存器,分别记录需要等待的事件信号和已经到来的事件信号。 在线程交换指令中,可以使用AND、OR等逻辑运算符指令线程需要等待的多个事件信号。,指令存储器(控制存储器),
24、IXP2xxx使用单独的存储器系统(即不使用SRAM和DRAM)存储微引擎指令。 指令存储器的组织方式: 共享指令存储器:代码共享,节省空间,但有竞争。 专用指令存储器:无竞争,要求较多空间。 IXP2xxx提供折衷方案: 每个微引擎使用一个私有的指令存储器,避免竞争。 每个指令存储器的容量限制为4096条指令,避免使用较多的空间。 控制存储器属于微引擎的内部存储资源,因而可单周期地读取其中的程序指令。 控制存储器中的程序从IXP2xxx的ROM中读入,在XScale控制下完成。,数据通道寄存器,微引擎需要与许多硬件设备交互,许多交互是通过硬件寄存器发生的。 微引擎使用的数据通道寄存器包括:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 部分 Intel 网络 处理器 教学 课件
链接地址:https://www.31doc.com/p-3135744.html