(微电子学与固体电子学专业论文)网络处理器的并行编程模型研究.pdf_第1页
(微电子学与固体电子学专业论文)网络处理器的并行编程模型研究.pdf_第2页
(微电子学与固体电子学专业论文)网络处理器的并行编程模型研究.pdf_第3页
(微电子学与固体电子学专业论文)网络处理器的并行编程模型研究.pdf_第4页
(微电子学与固体电子学专业论文)网络处理器的并行编程模型研究.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(微电子学与固体电子学专业论文)网络处理器的并行编程模型研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章绪论 第一章绪论 1 1 网络系统发展趋势 随着网络技术的飞速发展,如今的网络系统的体系结构早已经历了几个阶段 的演变与发展。上世纪9 0 年代早期,分类技术使当时网络系统体系结构的发展超 越了第一代基于软件的路由器。虽然常规的计算机系统可以满足较低速率的包处 理,但是基于软件的系统和多路分解技术无法满足新建网络的需求。 第二代网络系统使用专门的协议处理硬件,可以处理更多的网络连接。通过 使用分类技术获得比传统的多路分解更高的包处理速率1 1 。每个网络接口卡具有 分类和转发能力的分散型体系结构,使得接口可以并行地进行包的分类和转发。 同时,高速的内部互联机制为接口之间传输数据提供了快速数据通道。但是,由 于使用通用处理器完成某些协议处理任务,需要处理的数据量随着集合包速率而 线性增长。 第三代网络系统将协议的处理任务从通用处理器中分离出来,使用专用的硬 件分散完成协议的处理任务。第三代网络系统为每个网络接口卡配置了适用于各 种协议处理任务的硬件,来完成各种与包处理相关的任务。有些网络接口卡甚至 能够处理直至第四层的协议,但是这些任务只涉及较低速度的数据处理。对于可 以接受较低处理速度的网络应用,协议的复杂性突出了嵌入式软件在易实现和易 修改方面的优势。因此,第三代网络系统使用嵌入式处理器处理网络层以上的应 用功能以及无法通过快速通道转发的异常数据包。 到2 0 世纪9 0 年代中后期,当网络的数据速率从o c 一3 、0 c 1 2 增长至o c 4 8 时,嵌入式处理器的处理速度成为网络系统的性能瓶颈。作为网络设备的主流处 理核心技术,a s i c 技术使用专用集成电路给网络系统带来了更高的处理速度。 a s i c 技术利用固化到硬件中的指令和逻辑获得很高的数据处理速度,因而能够 很好地满足网络设备对性能的要求,适应了网络带宽不断增长的发展趋势。 如今,随着光纤技术( 如d w d m ) 的不断成熟,网络带宽成指数倍增长,核 心路由器的处理速度已经逐步从2 5 g b p s 过渡到4 0 g b p s 。如表1 1 所示【2 1 ,对于 典型的网络系统,数据分组以特定的线速度从网络链路层依次到达。例如,一个 4 0 字节大小的d 包以1 0 g b p s 的线速度到达的时间间隔为3 5 n s 。在线速度为 4 0 g b p s 的网络中,同样大小的口包到达设备端口的时间间隔只有8 n s 。在下一个 包到来之前,网络系统要在这短暂时间内完成对p 包( 从三层到七层) 的相关操 作,然后以特定的顺序和速度将其发送到网络上。在这种高速传输的网络中,从 2 网络处理器的并行编程模型研究 核心路由器到接入交换机,都面临着比以往更苛刻的时间要求。 表1 1 i p 包到达速率的发展变化 线速度4 0 字节的口包到达的时间间隔 2 5 g b p s 0 c _ 4 81 6 0 n s 1 0 g b p s o c 1 9 2 3 5 n s 4 0 g b p s o c 7 6 8 8 n s 通信技术的前景与价值与其在现代通信网络中所具有的潜在作用密切相关。 高速度、低成本和易于维护一直是网络系统设计面对的挑战。网络协议在不断发 展和完善,嵌入式处理器的软件解决方案能够在基本没有开销的情况下实现系统 的修改和升级,但是性能较低。a s i c 技术的指令和逻辑很难修改升级或增加新 的功能,使得资源重用率很低。此外,高昂的研发费用和漫长的研发周期,迫使 a s i c 的设计者们必须能够对未来很长时间内的市场需求和技术趋势做出准确的 预测。基于a s i c 技术的设计因其成本高昂、功能固定的缺点,无法满足新服务 功能的快速部署需求。 采用多核s o c 结构的网络处理器( n e t w o r kp r o c e s s o r ) 将高速度、低成本和 易于维护的优点相集合,利用多处理器硬件体系结构来保留a s i c 硬件高速数据 处理的速度优势,同时缩短系统设计、实现的时间,降低修改网络系统所需成本。 开发商可以利用网络处理器实现快速地编程、灵活提供客户所需的新业务,从而 使产品快速上市并且有效延长产品的使用寿命。 1 2目前网络处理器应用的问题 网络处理器的突出优势就是具有a s i c 的处理速度,同时在功能上具有高度 的灵活性。目前,利用网络处理器解决包处理应用的主要问题都与其灵活性有关。 在数据转发功能方面,网络处理器需要通过检查数据,确定如何处理包并且 实现包转发。网络处理器按照用户期望的规则实现接收数据的重组,然后根据用 户期望的算法校正数据。在转发过程中,网络处理器应能够根据不同的调度算法 调度数据的传输。 具有可编程特性的网络处理器应该在以线速度处理数据的同时,实现协议栈 深层分类与执行。为了确保数据的线速度处理,要求网络处理器尽可能少地引入 时延。针对实现数据的转发功能,网络处理器应使用尽可能少的指令,每条指令 的功能足够强,有效保障快速通道的性能。 网络处理器在软件方面的开发投入包括快速通道代码和管理代码的开发。之 后,每当网络达到一个新的速度等级,网络处理器的吞吐率都需要扩容到更高的 数量级,同时最大限度地保持原有的编程界面,支持原有的高速数据通道软件。 第一章绪论 网络处理器较低的整体成本同样来自于其灵活性。网络处理器应能快速适应 各种应用的技术要求,缩短产品的开发周期。实际应用过程中,网络处理器应该 不受限于具体的协议,而是可以工作在协议栈的任何层上,例如第二层网桥和第 三层路由器。 由于其硬件不易改变,并且不具备可以处理协议的固化指令集,网络处理器 需要由软件决定如何处理数据包。网络处理器实现其功能方面灵活性的手段就在 于可编程性。正是由于其可编程性,网络处理器对数据处理的灵活程度依赖于对 其软件的开发程度。目前各种商业网络处理器的应用中,可编程性的提高已经成 为加强其数据处理性能的关键因素之一。 1 3本论文主要工作和贡献 本论文针对i x p l 2 0 0 网络处理器,重点研究多处理器结构下并行p 包转发应 用的软件设计方法。主要工作贡献包括: 1 ) 基于i x p l 2 0 0 网络处理器硬件结构,深入分析该多核处理器所采用的r t c ( r u n t o c o m p l e t i o n ) 系统结构模型的特点; 2 ) 重点研究在多处理器共享存储器r t c 结构下的并行软件设计方法。针对高速 口包转发应用,本论文提出一种并行软件编程模型,并在软件开发环境下进行了 程序的仿真运行。统计结果表明基于该模型的软件设计能较好地支持多核网络处 理器的并行性,简化了编程过程,使得开发者能够在i x p l 2 0 0 网络处理器的多核 架构下,提高应用软件开发效率; 3 ) 利用针对i x p l 2 0 0 网络处理器的微码和c 语言开发环境和工具,基于上述编 程模型实现了支持8 个1 0 0 m 端口的以太网i p 包转发软件设计; 4 ) 使用i x p l 2 0 0 网络处理器的硬件验证平台,让整个系统运行于v x w o r k s 操作 系统环境下,验证了所开发的口包转发软件的实际性能,结果显示基于该编程模 型的软件设计能够达到系统吞吐率的性能要求。 1 4 本论文结构安排 本论文第一章介绍多核s o c 结构网络处理器( n e t w o r kp r o c e s s o r ,n p ) 的广 阔应用前景以及目前网络处理器应用的主要问题,探讨网络处理器软件编程模型 的重要性。 第二章对比网络处理器常用的两种系统模型:r t c 模型与流水线模型的特点, 分析了采用r t c 系统模型的p 1 2 0 0 网络处理器的硬件结构特点。通过对该网络 处理器中主要功能单元的分析,阐述在网络处理器实现高性能数据处理时,各个 4 网络处理器的并行编程模型研究 功能单元之间如何分工合作,为数据处理的各个环节提供必要的支持。深入研究 了i x p l 2 0 0 网络处理器中并行可编程部分:s t r o n g a r m 内核处理器和微引擎的组 成结构。通过对微引擎中主要功能单元的分析,探讨在微引擎的运行阶段,指令 执行与数据存储的情况。 第三章分析多核网络处理器在不同层次多个方面的并行性特点。阐述采用多 核并发执行的编程模型如何充分利用多级并行包处理机制,使得网络处理器获得 最佳处理性能。重点研究在多处理器共享存储器r t c 系统结构下的并行软件设计 方法。通过分析常用的网络处理器编程模型的优缺点,实现对口包处理的任务划 分及其线程分配策略,提出了适用于i x p l 2 0 0 网络处理器的并行软件编程模型, 帮助开发者快捷地实现口包转发应用软件开发。 第四章阐述姗1 2 0 0 网络处理器各可编程处理器中软件运行的情况及其通信 细节,以及微引擎中数据处理程序的指令操作与线程切换策略。基于本文提出的 编程模型,依照r f c l 8 1 2 对于口包路由器的设计要求,对口包接收、过滤验证 以及发送等关键环节进行详细设计。在软件设计过程中,将该编程模型与实际开 发情况相结合,针对细节做出适当优化,实现了以i x p l 2 0 0 网络处理器为应用环 境的8 端1 21 0 0 m b p s 以太网母包转发设计。 第五章介绍d ( p 1 2 0 0 网络处理器的开发、仿真环境与验证工具,以i n t e l 开发 工作平台为软件仿真环境,以f i d s l 2 m c 2 开发板为硬件验证平台,针对以太网 口包转发设计进行软件仿真与硬件验证。通过分析性能统计结果和吞吐率测量结 果,对提出的编程模型进行了设计验证与分析。 最后,对本论文所做工作进行了总结。 第二章基于r t c 结构的d ( p 1 2 0 0 网络处理器 5 第二章基于r t c 结构的i x p l 2 0 0 网络处理器 2 1网络处理器的系统结构模型 从系统结构的角度出发,网络处理器可以分为两种系统结构模型:r t c ( r u n t o c o m p l e t i o n ) 模型和流水线( p i p e l i n e ) 模型 3 1 。如图2 1 所示,r t c 模 型为开发者提供一种简单的编程方式,该方式允许一个线程访问系统全部的指令 存储器空间和所有的共享资源( 如各种表项、计时器等) 。该模型建立在对称的多 处理器体系结构基础上,所有处理器被当作一个处理器资源池,多个处理器共享 存储器资源。在采用r t c 模型的系统中,无论是处理数据还是因等待任务而处于 空闲状态,所有的执行动作都在同时进行。i x p l 2 0 0 网络处理器的体系结构就是 以r t c 模型为基础。 执行单元 i 存储器卜_ i 存储器卜 判l纠学叫 决 ; 嚣 指令存储器 存储器l 调度程序 悭 ,商 r t c 体系结构模型 流水线体系结构模型 图2 1网络处理器的两种系统结构模型 在流水线模型中,处于流水线上的每个处理器都经过专门优化,用来解决某 些特定的任务或者指令。整个应用程序被人为地划分为一条流水线上的若干步骤。 流水线模型的缺点源于对整个任务划分的均衡性要求。如果任务划分不均衡,例 如某个环节被分配了过多的任务,后续环节会因等待资源而停滞,使得整个工作 流程陷入低效、混乱的境地。即使任务划分非常合理,在各个环节之间传输待处 理数据的相关信息也会造成处理器资源的额外开销。代码的变更是流水线模型面 临的巨大挑战,即使只是对代码做出非常微小的改动,也可能导致开发者重新对 整个任务进行划分。r t c 系统结构模型允许个处理单元完成整个数据处理流 程,从而使其避免了基于流水线模型设计所带来的上述问题。 2 2i x p l 2 0 0 网络处理器的体系结构 网络系统硬件构成的目标是以较低的成本获得最大的性能。松耦合的混合并 6 网络处理器的并行编程模型研究 行处理器结构是i x p l 2 0 0 网络处理器在体系结构设计方面的特点之一。该特点有 利于减少访存延迟,提高处理器执行效率,保证了高速数据处理性能。 3 2 位 总线 6 4 位 总线 几丽 i g p l ol 微弓 擎1 网 i 一 微引 擎3 p c i 单元 s d r a m 单元 微引 擎3 微引 擎4 微引 擎5 微引 擎6 3 2 位 总线 6 4 位 总线 图2 2i x p l 2 0 0 网络处理器芯片结构 由图2 2 可以看到,i x p l 2 0 0 网络处理器芯片主要集成了1 个s g o n g a r m 内 核处理器、6 个数据处理器( 微引擎) 、1 个s r a m 单元、1 个s d r a m 单元、1 个p c i 单元和1 个f b i 单元( 包含总线接口) 以及若干板载总线。 s 仃o n g a r m 内核处理器是一款3 2 位r i s c 处理器,最高主频为2 3 2 m h z 。在 i x p l 2 0 0 网络处理器中,s t r o n g a r m 内核处理器是一个起核心作用的处理器单元。 它负责运行操作系统和网络协议软件,控制微引擎的运行,处理微引擎提交的异 常包和一些处理方式较复杂的口包。s 订o n g a r m 内核处理器可以访问系统的 s d 删单元、s 洲单元和p c i 单元。 微引擎( m i c r o c n g i n e ) 属于可编程的r i s c 结构数据处理器。6 个结构完全相 同的微引擎体现了i x p l 2 0 0 网络处理器对称的多处理器r t c 体系结构特点。微引 擎通过代码编程来实现期望的应用功能。它支持专为实现网络系统应用而精简的 3 2 位烈s c 微代码指令集,所有指令在单周期内执行。微引擎拥有大量的寄存器, 使得一条指令能够在内部功能单元之间传输多达6 4 字节的数据,从而有效提高微 引擎计算资源的利用率,同时减少代码量。 f b i 单元用来实现i x p l 2 0 0 网络处理器与连接总线的m a c 设备间的高速 数据传输,总线最高频率为1 0 4 m h z 。当m a c 帧到达支持总线的链路层器件 ( m a c 设备) 后,会被其总线接口分割成6 4 字节大小的传输单位( 即微包) , 然后通过总线进入i x p l 2 0 0 网络处理器。f b i 单元以微包为单位传输数据。接 收状态机和接收队列( i 玎i f o ) 用于口包的接收,发送状态机和发送队列( t f i f o ) 嚣 鬻蚕船 第二章基于r t c 结构的i x p i2 0 0 网络处理器 用于口包的发送。i ) ( 总线单元中还有一个硬件实现的散列单元( h a s hu n i t ) ,采 用硬件的多项式算法和一个可编程的散列乘法器生成4 8 位或6 4 位自适应多项式 散列索引。f b i 单元的便签存储器( s e r a t e h p a dm e m o r y ) 是一个1 0 2 4 x 3 2 位大小 的片内存储器,用来建立微引擎线程间以及微引擎线程与s t r o n g a r m 内核处理器 间通信的消息队列。 s d r a m 接口单元的数据总线为6 4 位,最大地址空间可达2 5 6 m 字节,在 2 3 3 m h z 时钟下可提供9 2 8 m b p s 带宽。s d r a m 单元是一个共享的s d r a m 内存 接口单元,可实现s d r a m 与s t r o n g a r m 内核处理器、微引擎和p c i 总线上的 外围设备之间数据的传输和转移功能,s t r o n g a r m 内核处理器对s d r a m 的读 写操作是以字节为单位,微引擎对s d r a m 的读写操作则是以四倍字( 8 个字节) 为单位。由于具有低成本和高带宽的特点,s d r a m 用于存储s t r o n g a r m 内核处 理器的指令代码以及口包、路由转发表等较大的数据。 s r a m 接口单元的数据总线为3 2 位,最大地址空间为8 m 字节。作为共享的 s r a m 内存接口单元,s r a m 单元可被s t r o n ga r m 内核处理器和微引擎访问, 主要用于完成s r a m 芯片与微引擎间的数据传输。s r a m 芯片可以存放口包处 理过程中所需的路由表、端口m a c 地址表、空闲缓存列表、有向广播地址表以 及数据缓存队列等要求快速访问的数据结构。s r a m 接口单元也可以连接f l a s h 存储器( 存放系统启动所需的引导程序) 和通用i o 接口( 连接c a m 或以太网 m a c 端口设备) 。与s r a m 单元连接的3 种外部设备分别映射到不同的地址空间。 p c i 接口单元符合p c i2 1 接口标准,工作频率为3 3 m h z ,在点对点配置模式 下可达到6 6 m h z 。当时钟频率位于3 3 m h z 和6 6 m h z 之间的时候,可以多支持一 些负载,但是这样会降低总线的速率。p c i 单元直接和s d r a m 单元、s t r o n g a r m 内核处理器相连接,在s d r a m 单元和p c i 单元之间有一条专用的数据总线。p c i 总线接口单元为p c i 总线上的外围设备和更高处理器结构层次上的通用处理器提 供标准接口,使得连接在p c i 总线上的通用处理器也能够访问到s d r a m 中的数 据和信息。 2 3i x p l 2 0 0 网络处理器的可编程处理器 i ) ( p 1 2 0 0 网络处理器之所以能够灵活地提供高性能并行处理能力,主要通过 基于r t c 系统结构模型的可编程并行多处理器结构来实现数据的线速度转发。其 并行多处理器结构由1 个s t r o n g , a r m 内核处理器和6 个微引擎构成,每个微引 擎同时支持4 个线程,从而可以实现每秒1 g 次指令操作的总体运行性能。 2 3 1 s t r o n g a r m 内核处理器 作为一款3 2 位嵌入式r i s c 处理器,s t r o n g a r m 内核处理器采用a r m v 4 的 第二章基于r t c 结构的p 1 2 0 0 网络处理器 9 问权限。其存储器管理部件为每个应用程序分配一个受保护的虚拟地址空间。 s 仃0 n g a r m 内核处理器拥有4 g b 物理地址空间,其存储器资源采用统一的地址空 间,通过不同的地址范围对不同的存储器进行映射,包括s ra m 单元、p c i 单元、 s d 洲单元、a m b a 传输单元等设备。表2 1 列出了p 1 2 0 0 网络处理器的外 部存储器和硬件设备在s 仃o n d 蝴内核处理器中的地址映射关系。 表2 1 s n 0 n l r m 内核地址映射关系 p 1 2 0 0 网络处理器存储器单元 s 仃o n 承m 内核地址范围 s 删单元o x o 0 0 00 0 0 0 a i x3 f f ff f f f p c i 单元0 x4 0 0 00 0 0 0 加l 】【7 f f ff f f f s 廿0 n g 删内核的系统寄存器 o x9 0 0 00 0 0 0 - o x9 f f ff f f f 山m a 传输单元o xb 0 0 00 0 0 0 一0 xb f f ff f f s d 删单元o xc o o o0 0 0 0 o xf f f f f f f f 其中,s d 洲单元部分的地址包括s d 洲芯片、便签存储器、f b i 单元控 制状态寄存器、微引擎的传输寄存器以及微引擎的控制状态寄存器的地址。a m b a 。 ( a d v a n c e dm i c r ob 1 l sa 础l i t e 魄辩) 是一种用于支持高速、有效的处理器间通信 和片内存储器访问的片内总线标准。在p 1 2 0 0 网络处理器中,蝴b a 总线用于 连接s 拍n g a 蹦内核处理器、微引擎以及p c i 单元。 s 仃o n 汛m 内核处理器可以实现对以下功能单元的访问与控制权限,包括: ( 1 ) p c i 单元:可以完全地访问p c i 总线,以及p c i 单元寄存器; ( 2 ) s d r a m 单元:可以完全地访问s d 洲; ( 3 ) s 洲单元:可以完全地访问s r a m ,包括f l a s h 存储器和连接在s r a m 总线上的其它设备: ( 4 ) f b i 单元:可以访问总线单元中的控制状态寄存器和便签存储器,无 法访问r f i f o 和t f i f 0 以及数据总线,因为微引擎需要占用它们所在 的快速通道进行包处理; ( 5 微引擎:可以访问微引擎的控制存储器实现对微引擎编程,可以访问其控 制状态寄存器以及程序计数器,但是无法访问微引擎的传输寄存器。 s 仃o n g a r m 内核处理器可以通过共享的寄存器或片内便签存储器与微引 擎通信。 通过运行实时操作系统,s 仃o n 删内核处理器不仅可以控制、管理微引擎, 同时还负责处理协议栈的更高层以及处理异常和管理任务。例如在路由器的应用 中,s 哟n 氓m 内核处理器可运行网络协议软件,维护路由表,实现异常包处理 和网络管理功能。s 仃0 n 汰m 内核处理器中的应用程序包括微引擎控制程序和网 络协议程序。内核处理器中的微引擎控制程序负责完成微引擎提交的口包处理任 第三章多核网络处理器软件编程模型设计 1 5 第三章多核网络处理器软件编程模型设计 软件编程模型的目的在于为开发者提供一种能够充分利用系统硬件资源、实 现快速软件开发的途径,在开发者与硬件之间搭建一个简洁、高效的桥梁。对多 核网络处理器应用软件的开发,因其硬件结构的特殊性,而不同于面向通用处理 器的软件开发过程。本章将针对p 包转发的网络应用,提出一种适合于i x p l 2 0 0 网络处理器的软件编程模型,帮助开发者快捷地实现p 包转发应用软件开发。 3 1常用的网络处理编程模型 目前常用的网络处理编程模型包括高吞吐率编程模型和流水线编程模型两 种。 在线速度达到0 c - 4 8 甚至更高的网络应用中,对网络处理器的吞吐率要求较 高。大量口包需要在有限的时间内完成接收和处理操作,完成处理操作占用的时 间较长,所以需要较多的处理器资源。高吞吐率编程模型分配更多的处理器资源 用于p 包的接收和处理操作,追求网络处理器能以线路速度实现i p 包的接收与 发送。 网络的q o s 应用要求网络系统能够区分不同的业务流,从而对不同业务流的 i p 包按q o s 要求进行不同的处理。网络处理器需要对口包进行分类,还包括口 包队列的管理和独立输出调度机制。针对防火墙应用中的d 包过滤技术,网络处 理器需要根据包的相关信息,包括源m 地址、目的口地址、源端口号、目的 端口号以及协议类型,来确定是否允许口包通过。对于q o s 或者防火墙的网络 应用开发,高吞吐率编程模型的处理器负荷过重,d 包首部的处理、队列缓存管 理和路由表的查找等需要花费的时间很长。当d 包的处理比较复杂时,高吞吐率 编程模型对口包的深入处理程度不够。 流水线编程模型将包处理过程按照流水线的方式分为接收模块、处理模块以 及发送模块。接收模块将口包通过队列传输给处理模块。口包处理操作部分完 成后,处理模块通过队列将m 包交给发送模块。相对于高吞吐率编程模型,流水 线编程模型支持对复杂数据m 包的处理。流水线编程模型将口包接收功能和处 理功能分开,简化了处理器的功能,可以更好地实现处理器间的负载平衡。但是, i p 包在模块间传输需要占用额外的处理器资源,而且各个模块之间需要进行同步 和通信,使得系统的吞吐率受到影响。流水线编程模型以降低网络系统的吞吐率 为代价,满足网络应用对q o $ 的高要求。 1 6 网络处理器的并行编程模型研究 在面向i x p l 2 0 0 网络处理器的软件开发过程中,开发者需要充分利用该多核 网络处理器的并行性特点,详细分析口包处理的过程,采用合理的软件编程模型 实现软件运行的最优化,进而编写出执行效率较高的代码。 3 2 多核网络处理器的并行性 从体系结构方面考虑,i x p l 2 0 0 网络处理器的多处理器体系结构设计和硬件 多线程的结构技术实现了处理器级、线程级和指令级的并行性。 处理器级并行:控制层面的s w o n g a r m 内核处理器和数据层面6 个微引擎并 行工作。i x p l 2 0 0 网络处理器上电后,首先启动s 仃0 n g a r m 内核处理器中的嵌入 式操作系统,由s 仃o n g a r m 内核处理器进行初始化程序载入及微引擎初始化等工 作。初始化任务完成后,s 仃0 n g a r m 内核处理器和微引擎并发执行任务, s g o n g a r m 内核处理器负责处理底层提交的复杂控制任务,底层的6 个微引擎完 成简单数据的常规处理任务。 线程级并行:每个微引擎可以载入不同指令代码。在系统初始化完成后,多 个微引擎间多线程可以利用分支跳转执行微码的不同部分。微引擎各个线程可独 立占用各自的处理器资源并发执行任务,负责执行不同的指令操作。根据任务处 理的复杂度对微引擎线程分工调度,使各个微引擎相对独立工作,从而实现多线 程并发执行。 指令级并行:在每个微引擎内部由于多个线程共享一个处理器内核,需要采 用指令级并行机制,即任务流水线设计思想。微引擎指令的五级流水执行结构, 通过隐藏存储访问等长延迟操作,保证处理器资源的使用效率。其内部线程的合 理有序调度主要通过编译优化和线程切换的信号机制实现。这种指令级并行技术 能够使处理器始终保持在运行状态,隐藏了因访存延迟产生的空闲周期,提高了 数据处理效率。 i x p l 2 0 0 网络处理器提供对上述多级并发执行技术的支持。在s 订o n g a g m 内 核处理器中,并发性由操作系统支持。在没有操作系统的微引擎中,并发性由硬 件提供支持。开发者创建1 4 个执行线程,并将它们各自的信息通知给硬件,然 后由硬件控制这些线程间的切换调度。 在跨越多个处理器的线程执行过程中,开发者需要考虑并发执行与并行硬件 之间的联系。i x p l 2 0 0 网络处理器采用局部线程执行的体系结构,各个线程只与 相应的处理器联系,处理器只能切换分配给它的执行线程。s g o n g a r m 内核处理 器采用支持抢占( p r e e m p t i o n ) 的体系结构,允许一个外部事件( 例如通知m a c 帧到来的事件) 迫使处理器在线程间切换。微引擎中的线程采用非抢占方式,允 许一个正在运行的线程决定何时放弃对处理器资源的占有而切换到另一个线程。 第三章多核网络处理器软件编程模型设计 1 7 从网络处理器口包处理过程的角度考虑,网络处理器的并行性体现在以下两 种实现: 多个口包并行:多数网络应用都是基于对i p 包的处理,d 包处理过程比较 类似,彼此相互独立。这样,不同的p 包可以由不同的处理器资源并行处理。当 属于同一个数据流的i p 包经过不同处理器并行处理后,需要考虑i p 包的重组保 序问题。例如,虽然上层的t c p 等协议允许i p 包乱序,但是为了减小m 包在终 端重组的时间,一般需要保证m 包的顺序。 同一个瑶包并行处理:在处理某个p 包的过程中,有些处理任务可以彼此 独立。例如,源m a c 地址的处理和目的m a c 地址的查找是完全独立的处理步 骤。对同一个p 包的相对独立的处理任务可以在多个处理器资源间实现并行处 理。 3 3 i p 包处理的任务划分 本节主要讨论i x p l 2 0 0 网络处理器实现以太网m 包转发的过程。在有必要单 独阐述时,本论文将以太网中的m a c 帧与i p 数据报( 即i p 包) 加以区别。在 不引起歧义的前提下,本论文将进入网络处理器的m a c 帧以及p 数据报统称为 口包。由于到达i x p l 2 0 0 网络处理器的以太网m a c 帧可能大小不一,当以太网 m a c 帧到达m a c 设备接口后,将被m a c 设备依次分割为若干最大为6 4 字节 的微包。因此,进入m a c 接口之后,p 包就以若干微包的形式依次在i x p l 2 0 0 网络处理器中进行处理。 f b i 单元在接收到m a c 帧的第一个微包时,将在接收端口对应的接收控制寄 存器r c vc n t l 中设置s o p ( s t a r t o f p a c k e t ) 标志位。当接收到该m a c 帧最后 一个微包时,将在r c v c n t l 中设置e o p ( e n do f p a c k e t ) 标志位。如表3 1 所 示,微引擎通过判断微包的类型和大小,针对4 类微包进行不同的处理: 表3 1 微引擎按微包的类型做不同处理 微包大小小于6 4 位等于“位 s o p 标志位置l置0置1置0 e o p 标志位置1置1置0置0 对口包头进行检查和处理需要 需要 将微包送入s d r a m 缓存需要需要需要 检查i p 包丢弃位( d i s c a r d ) 是否置位需要需要 将其所属口包送入口包发送队列需要 需要 i x p l 2 0 0 网络处理器对以太网m 包处理可以包括以下几方面任务: 接收m a c 帧 i x p l 2 0 0 网络处理器对m a c 帧的接收动作主要发生在m a c 设备端口与f b i 第三章多核网络处理器软件编程模型设计 1 9 微引擎通过确定其m a c 地址是否为各个网络接口的地址,保证d 包发往有 连接的m a c 接口。检查结果通过对s r a m 中的散列表进行匹配查找得到,如果 i p 包的目的m a c 地址与接收端口对应的散列表每一项都不匹配,则表明口包的 m a c 地址无效,该口包将被丢弃。 传输协议检查确定m a c 地址的类型是否为第二层广播地址或组播地址。当 m a c 地址中最高字节的最低位被置1 时,表示该地址是一个组播地址,以太网 广播地址( f f f f f f f f f f f f ) 可看作是以太网组播地址的特例。m a c 帧类型 字段的值为0 x 8 0 6 的球包,将作为a r p 包处理。微引擎将检查到的a r p 包、第 二层广播或组播提交给s t r o n g p , m 内核处理器处理。 2 1 对包的第三层验证 第三层验证对m 包的目的口地址、源p 地址进行检验,以及对特殊( m a r t i a n ) 地址和有向广播的验证。 源m 地址与目的口地址相同的d 包将被提交给s 仃0 n g a r m 内核处理器。对 于带有特殊地址的口包,例如p 地址为( 0 0 0 o ) 、回路地址( 1 2 7 x x x x x x x x x ) 或者d 类以后的地址( 第一个字节值大于2 4 0 ) 的口包将被微引擎丢弃。微引擎 通过查看广播信息散列表来判断口目的地址是否为有向广播地址,将有向广播口 包交给s t r o n g a r m 内核处理器。 第三层验证还负责对i p 包总长度、t t l 字段以及校验和字段等相关字段的检 查与修改,上述字段异常的坤包将被丢弃。微引擎根据口包首部协议类型字段 将u d p 包、t c p 包和i c m p 包等进行区别,将i c m p 包和s n m p 包提交s t r o n g a r m 内核处理器。第三层验证还出现在对p 包处理完成后,负责检查更新后的p 包 长度是否超过传输链路的m t u ,将过长的m 包提交给s t r o n g a r m 内核处理器。 i p 包丢弃 由于网络系统的存储资源有限,网络处理器不能接收任意多的口包。对于超 出接收能力或接收范围的口包,i x p l 2 0 0 网络处理器的s t r o n g a r m 内核处理器 和微引擎都有权将其丢弃。 在缓存排队的过程中,如果队列已满,新到达的d 包将被丢弃。在i p 包验 证过程中,接收状态寄存器r c vs t a t e 中包含丢弃位( d i s c a r d ) 字段。当整个 i p 包接收完成后,微引擎对丢弃位被置位的d 包执行丢弃操作,即通过将新分 配的分组描述符指向该口包的存储地址,让新到达的口包占用该存储区。 i p 路由查找 在i x p l 2 0 0 网络处理器中,邛路由表由s t r o n g a t h m 内核处理器在s r a m 中 建立与维护。口路由表查询工作由微引擎的线程完成。d 路由表中可以包含目的 网络地址、下一跳地址、标志、参考计数以及使用情况等信息。m 包被缓存到 s d r a m 后,微引擎提取i p 包的目的m 地址,读取口路由表的内容,进行目的 第四章 以太网口包转发软件的设计与实现 第四章以太网i p 包转发软件的设计与实现 本章将前文提出的任务一线程映射编程模型用于以太网d 包转发的实际应用。 以该软件编程模型为指导,按照网络处理器软件层次结构的分布特点,设计实现 适用于d ( p 1 2 0 0 网络处理器的以太网口包转发软件。通过实际软件的开发过程, 体现出采用该编程模型使得整个编程过程简明清晰的特点。使得开发者能够在 d ( p 1 2 0 0 网络处理器的多核架构下,提高应用功能的开发速度。 4 1网络处理器的软件结构层次分析 4 1 1p 1 2 0 0 网络处理器的软件层次结构 在网络处理器中运行的软件可以分为管理层面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论