




已阅读5页,还剩65页未读, 继续免费阅读
(计算机系统结构专业论文)基于ixp2400网络处理器的发包机的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 摘摘 要要 随着互联网络技术和微电子技术的不断发展,传统的处理器已经不能满足日益增 长的网络应用和服务的需求。因此,一种专为处理网络应用和服务而设计的高性能网 络处理器应运而生。所以,有必要对网络处理器进行深入地研究和利用,来满足更加 丰富的网络应用需求。 利用 ixp2400 网络处理器的多微引擎并行处理能力, 硬件多线程和可移植软件框 架等优势,设计和实现了一个发包机系统。该系统主要用于测试和评估网络应用软件 和硬件处理大流量数据包的能力和性能。整个发包机软件设计可以分为:数据通道的 程序设计和控制通道的程序设计。 数据通道的程序是运行在微引擎里的程序。在数据通道的程序设计中,使用了一 种微码汇编语言来编写代码,以提高微引擎的执行效率,利用软件控制微引擎的硬件 多线程处理过程。 控制通道的程序则是运行在 xscale 核上的程序,主要针对发包机硬件设备构建 了 bsp 和用户控制接口,实现了包括 strap 模块、boot program 模块、内存管理模块、 系统初始化模块和控制模块在内的一系列用于控制和管理整个系统的模块。 最后使用两种配置不同的主机平台, 在 workbench 仿真环境下运行了发包机的微 引擎代码。结果表明,发包机系统能以 2.5gbps 的速率发送数据包,负责发送数据包 的微引擎每个线程的执行负荷最高为 9.98%,最低为 6.20%,平均负荷在 7%左右,说 明发包机的发送模块和线程仲裁机制效果非常出色。 关键词:网络处理器,发包机,嵌入式系统,微引擎,微码汇编 ii abstract along with the development of the network technology and the micro-electronics technology, the traditional processors are not competent for the need of growing network applications and services. network processor is designed for the network application especially. so, deep research and efficient use of the network processor are necessary to satisfy the network applications. using the parallel microprocessors, hardware multithread and portable software framework, a network packet transmitter system is designed and implemented. the transmitter system can be used to test the performance of capability of the software and hardware of the network applications. the design of the transmitter can be divided into two parts: the design of the data path and the design of control path. applications designed for data path run on the microengines. microengine assembly is used to improve the efficiency of the microengine. software applications are used to control the hardware level parallel processing. applications for control path are the software running on the xscale side. the hardware related bsp and user control api are implemented, including strap module, boot program module, memory management module, system initialization module and control module. these modules are used to manage the whole system. at last, the code of the microengine is executed in workbench simulator, using two host computers with different hardware platform. the packet transmitter system can send packets at the speed of 2.5gbps, the execution load of the threads in mircoengine is from 6.20% to 9.98%, and the average execution load is 7%. this percentage indicates that the transmission module and the threads arbitration mechanism work well. key words: network processor, packet transmitter, embedded system, microengine, microengine assembly 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集 体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中 以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保 留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本 人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密 ,在_ _年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 1 绪论绪论 1.1 网络处理器的应用背景网络处理器的应用背景 随着计算机科学尤其是网络技术和嵌入式系统的发展和成熟,人们对下一代网络 设备提出新的要求:具有优异性能,支持高速分组处理;具有高度灵活性,支持不断 变换的高层网络服务1;对多层次网络数据的处理2。 (1)高性能要求 自从计算机问世以来人们对性能的追求从未停止。摩尔定律指出处理器的速度每 18 个月增加一倍。 然而随着光纤放大器和高密集波分复用3 (dwdm)等高新技术在核 心网络中的运用, 光纤容量每 12 个月就增加一倍。 所以处理器速度的瓶颈4依然存在, 人们依然需要充分利用现有处理器的资源。 (2)灵活性要求 internet 的爆炸性增长和数据通信市场的瞬息万变,使得服务提供商和设备提供 商面临流量增加、用户增多、用户要求复杂多变和网络服务种类不断增加等等需求的 严峻挑战。面对这些挑战,只有采用灵活性好、开发成本低、周期短、可持续性的网 络开发技术5,才能在未来市场占据先机。 (3)数据细化处理的要求 网络应用范围不断扩大、新型业务不断涌现,导致新协议不断出现,人们对服务 质量和安全性的要求越来越高。这就要求设备能够在从数据链路层到应用层上对高速 数据流进行细化分组分类处理6。 分组处理涉及层次越多, 系统资源负荷开销就越大7。 传统的基于 gpp(general purpose processor)的网络设备只满足灵活性要求;基于 asic(application specific integrated circuit)的网络设备只满足高性能要求; 至于 fpga 也只是能在门级进行再配置的设备,也不能很好的满足上述要求。因此基于网络处理 器(network processor,简称 np)的应用也就逐步突现出其灵活性和高性能并存的优 势,逐步发展和壮大起来。 1.2 网络处理产品的现状和发展前景网络处理产品的现状和发展前景 网络处理器是面向网络应用领域的应用特定指令处理器(application specific 2 instruction processor,简称 asip) ,是面向数据分组处理的、具有体系结构特征和/或 特定电路的、软件可编程器件8。通过灵活的软件体系提供硬件级的处理性能是 np 的关键特性。目前主流的 np 的体系结构一般具有以下共同特点: (1)处理能力强 np 一般集成了多个经过优化的包处理专用单元9,每个单元都可以完成相同的 任务。采用多内核并行处理器结构,片内处理器按任务分为核心处理器和数据分组 协处理器。核心处理器通常负责非实时的管理任务;数据分组处理器进行实时,线 速数据分组处理10。 采用专用协处理器和硬件处理单元对特定协议操作进行协处理: 如 crc 效验、哈希查找等,来增强系统的性能。通常采用 risc 技术,结合多级流 水线技术,大部分指令在一个时钟周期完成。并针对网络协议处理特点,设置专用 硬件加速处理单元,提供专用指令,如压缩指令、哈希查找、状态判断、数据读写 指令11。此外,网络处理器还需要具有线速处理的能力,以避免节点设备成为瓶颈。 其硬件结构为此提供了保证网络处理器具有很强的处理能力,能够满足各种应用和 服务的要求。 (2)优化内存管理和分级存储器组 np 需要进行大量数据分组的接收、存储、复制、转发,这导致内存操作成为系 统性能的一大瓶颈12。为了解决这个问题,通常采用块数据运动技术和特殊的优化存 储接口。同时对数据进行分类存储:sram 用于存放需要快速查找的各种表结构; sdram 用于存放数据分组数据。有的网络处理器还在芯片内部嵌入了速度更快的内 存芯片,如 intel 的 ixp2400 网络处理器,它就在芯片内部加入了一种速度比 sram 还要快的 scratch 内存13,用于微引擎来存放经常用到的数据结构。 (3)硬件多线程 为了提高处理器资源利用率,网络处理器通常都支持硬件多线程技术。每个线程 都有一套专门的硬件,包括专门的寄存器和程序指针14。有了这些硬件设备,每个将 线程能由自己独立的上下文,线程之间的切换需要的开销就会非常的小。 (4)高速 i/o 接口 具有丰富的高速 i/o 接口,包括物理链路接口、交换接口15、存储器接口、pci 总线接口。 (5)可编程性和可扩展性 可编程网络处理器支持多协议,便于功能的扩展可缩短产品开发时间,延长产品 3 生命周期。多个 np 之间还可以互连,构成网络处理器簇16,以支持更为大型高速的 网络处理,因而能满足边缘设备的需要。 (6)模块化设计 网络处理器体系结构的模块化也包含不同的层次:硬件层面和软件层面的模块 化。通过模块化设计,力图在保持高性能的基础上获得很好的可扩展性和灵活性,并 能使设备厂商容易研发不同性能和不同特性的设备。 在对网络带宽巨大需求的刺激下,网络处理器的市场在接下来的几年中会有 较大幅度的增长。有资料预测,20042008 年中国网络安全产品市场将以 31.7% 的年均复合增长率增长, 市场规模将从 2003 年的 23.57 亿元增长到 2008 年的 93.2 亿元。 目前国内外已有超过 50 个网络处理器厂商在不断开发新的网络处理器产品,如: vitesse 公司的 iq2000 和 iq2200,motorola 公司的 c-5 dcp,intel 公司的 ixp2400, xstream logic 公司的动态多线程(dms)处理器核,ezchip 公司的 np-1,lexra 公司的 netvortex,bay microsystems 公司的 brecis msp5000。 2005 年 12 月, 清华天行“thnpu-1 网络处理器芯片原型”通过了由教育部主持的 技术鉴定,该款处理器可实现 ipv4/ipv6/mpls 等多种协议报文在全部最短包输入下 的全双工 oc-48(2.5gb/s)线速率转发17,集成了业务量管理引擎(traffic management engine) ,可实现优先级调度和主动队列管理等功能,支持 spi-3、csix、pci 2.2、 rl-dram 、qdr 、zbt sram、gm、la-1 等标准化接口。 hifn 公司于 2003 年底收购了 ibm 公司的 rainier 结构。此后,hifn 公司在原有 的技术基础上,研制出了自己的网络处理产品 5np4g。5np4g 中集成了 16 个网络处 理器单元、1 个 power pc 智能协处理单元以及多个硬件加速单元。在 5np4g 中,每 两个网络处理单元共享一个硬件加速单元, 可取得 2128mips 的计算性能, 提供 oc-48 的线速处理能力。5np4g 可以应用于核心路由器、边缘路由器、负载平衡设备、防火 墙等应用。 网络处理器厂家推出 np 产品时,通常会推出配套硬件调试目标机评估板、np 开发软件工具、操作系统。目前 np 主要采用嵌入式操作系统,如 vxworks、 montavista linux 等等,也有一些厂商提供专用操作系统,如 princeton 公司的 vera 采用 scout os 操作系统。大部分 np 有集成开发环境支持,能够用 c 语言、汇编 语言进行开发,如:intel 的 workbench 集成开发环境,支持 c 语言和微代码,具 4 有图形化界面,能够进行硬件平台软件模拟调试,同时提供丰富的 ip 协议 api、 子程序、应用范例。 公共交换接口协会 csix18和公共编程接口论坛 cpix 两个组织共同创建网络处 理器论坛(简称 npf),csix 制定 np 与交换组织之间的标准硬件接口,cpix 制定 np 开发标准软件接口。npf 的成立,进一步推动了 np 的发展。相信在不久的将来以网 络处理器为中心的产品将会越来越丰富。 1.3 本文研究的主要内容本文研究的主要内容 本文“从底到上”设计和实现了一个基于 ixp2400 网络处理器的发包机系统。所 谓“底”层,是指数据通道的微引擎编码;所谓“上”层,是指控制层面操作系统的 构建和上层应用程序。 本文主要内容包括以下几个方面: (1)分析和研究 intel ixp2400 网络处理器的整体构架及其重要组成部分。 (2)针对发包机的特定硬件环境为其量身订做了 vxworks 操作系统的 bsp,包 括 strap 模块的设计,boot program 模块的设计和 vxworks 应用程序映象的定制以及 内存管理模块的设计和实现。 (3)利用微码汇编语言设计和实现了发包机底层数据包发送和发送输入模块, 最大限度地利用了微引擎资源。充分利用了硬件平台中的分级内存模型,在各个不同 速度的内存中放置不同的数据结构,从而节约了整个系统的访存开销。 (4) 使用 c+编程语言实现了上层控制通道的发包机 api。 这些 api 在 vxworks 操作系统中作为模块载入,为用户提供了简单而直接的控制发包机运行的方法。 (5)利用 workbench 集成开发环境模拟了发包机的硬件环境,并在这个环境中 运行了微引擎发包代码,最后对仿真结果进行了分析。结果表明我们的发包机能以 2.5gbps 的速率发送数据包,并且负责发送数据包的那个微引擎中各个线程的执行负 荷非常的平均,在 7%左右,这说明我们设计的发送模块中线程仲裁机制效果非常的 明显。 (6)对整个发包机系统的设计和实现进行了总结,提出需要进一步研究和实现 的细节。包括,对数据通道的功能的增加以及上层用户接口界面的设计,都是我们下 一步需要完成的工作。 5 2 intel ixp2400 网络处理器网络处理器 本章简单介绍了 intel 的 ixa 系统结构,并分析了 intel ixp2400 网络处理器的整 体构架,主要包括微处理器构架和 xscale 核的构成和特点,以及 msf 等其它的关键 组成部分的功能和作用。 2.1 intel 网络处理器网络处理器 intel 公司的网络处理器主要有 ixp4xx 系列、ixp1xxx 系列和 ixp2xxx 系列。 其中 ixp1200 是 intel 公司推出的第一代网络处理器的代表, 主要面向 oc-3 到 oc-12 数据传输率的网络应用。可以用于多服务交换、宽带接入平台、协议转换、qos19,20、 防火墙、vpn 等应用。 随着网络技术的发展和应用需求的增长,以 ixp1200 为代表的第一代网络处理 器在功能上已经不能很好的满足复杂的网络处理功能的需求;在线速处理能力上 ixp1200 只能满足 oc-12 的网络线速处理。为了更好的适应当前和今后的网络宽带 化和业务综合化的趋势,intel 公司推出了以 ixp2400 为代表的第二代网络处理器,能 处理更高数率的数据。 ixp2400 主要是面向 oc-12 到 oc-48 的网络接入和边缘网的应 用21。 围绕 intel 网络处理器产品,intel 还开发了 intel ixa 构架,为基于 intel 网络处理 器的应用开发提供了完善的软硬件解决方案。 2.2 intel ixa 构架构架 为促进下一代 ip 网络应用的发展,intel 创建了一种以网络处理器为基础的数 据包处理结构,称为 intel ixa(internet exchange architecture)22。这种结构结合 了网络处理器的完全可编程性和强大的数据包处理功能两大优势, 还提供超流水线 功能。它可以低费用来扩展产品的生命周期,也可以使得网络服务快速地发展和推 广。它还提供了支持多平台的有效的开发环境、工具等。除此之外,intel 还正在与 第三方开发者一起致力于建立一个强大的网络, 以便为消费者提供一个完整的解决 方案。 ixa 构架的核心技术是微引擎技术和 intel xscale 核技术的结合,不但提供了强 6 大的可移植软件框架,还能进行低功耗、高密度的处理以及数据层面的高性能可编程 网络处理。intel ixa 模型如图 2.1 所示。 intel ixa 开发网络 intel xscale 微处理器构架 微引擎处理器技术 intel ixa 构架 的网络处理器 intel ixa 可移植框架 intel ixa 系统结构 图 2.1 intel ixa 总体结构 intel ixa 构架有三个基本组成部分。 1)微引擎技术 为了满足网络应用在数据层面大流量、高速度的处理要求,ixa 构架采用了一个 以软件流水线和低延时的队列管理硬件为基础的、可硬件多线程的子系统。该系统能 通过 intel 的超任务流水线技术实现高性能的数据包处理。随着 ixp 处理器系列的不 断发展,处理器中微引擎的个数也由 ixp1200 中的 6 个增加到 ixp2800 中的 16 个, 本文中发包机所用的 ixp2400 处理器则含有 8 个微引擎。 微引擎技术提供了软件控制的硬件多线程操作的支持。处理器为每个微引擎线程 给出了与外部存储器时间不一致的时钟周期,微引擎线程常会被阻塞以等待外部存储 器操作结束。但是在多个微引擎同时工作的时候一般至少有一个线程处于准备好的状 态,而其它的线程则处于阻塞状态。 intel 还针对高效快速的数据收发专门优化了微引擎的指令系统,就跟 risc 系统 所追求的一样,每条指令都在一个周期内完成。为了保证多个微引擎在硬件级并行, 每个微引擎都有自己独立的程序计数器。这样,多线程的程序在进行线程切换的时候 就能够最大限度的节省开销。微引擎中还有多种寄存器来满足数据处理和传输的需 要。 目前,大多数 ixa 构架的处理器如 ixp2350,ixp2400,ixp2800 等,使用的都 是第二代微引擎(mev2) 。 7 2)xscale 核技术 为了使 ixa 构架的处理器能够在底层数据处理和“上层控制”之间分工明确, 处理 器还使用了 xscale 核来完成各种复杂的任务,如管理共享数据结构,系统级任务管 理,以及处理异常包等。 xscale 核是一个兼容 armv5te23的 mw/mips 级的高性能低功耗微处理器。它 具备数据 cache;并且具有在外部存储器取数据的同时,指令仍然继续执行的能力; 它配有写缓存和写回缓存;它还可以针对不同的应用定制不同的数据缓存分配策略。 这些技术都提高了 xscale 核外内存总线的效率。intel xscale 核具备和 armv5 相同 的整型指令集, 但是不提供浮点运算功能。 它在用户模式应用中具备对 strangarm 的 向后兼容性。在移植操作系统的时候,多数情况下需要对这个 intel xscale 核的具体 硬件来进行配置来加强性能。 3)ixa 的可移植软件框架 ixa 可移植框架(ixa portability framework)是一个网络应用程序框架,它是编 写模块化和可移植的代码的基础。它提供了强健的底层软件和 api,提供了可以重定 义的编译模块, 能够使得应用程序在 ixa 系列的网络处理器构架之间移植, 还为第三 方开发者提供了一个理想的应用程序开发模型。 ixa 可移植软件框架由微引擎微框架和 xscale 框架组成24,25。微引擎框架包括 微引擎 c 编译器,优化数据层代码库和微模块编程模型;而 xscale 框架由资源管理 器、核心组件,ossl 和控制层 pdk 组成。 如图 2.2 所示, ixa 可移植框架在 mev2 微引擎和 xscale 核上实现了一个层次结 构。当开发一个 ixa 应用的时候,使用这样的层次构架,应用程序的代码就可以在所 有具有这样的框架的结构中使用,并且可以自由的修改。开发者还可以只使用框架中 某个特定的层面,如:可以选择在自己编写微引擎的微模块的同时,使用 xscale 核 中的资源管理26api。该框架主要组成部分的作用和特点如下: (1)微引擎微码编译器:该编译器编译是为微引擎编译目标码的,它不仅能编 译微引擎 c 语言代码,还能编译微引擎汇编语言代码使得程序更加高效。 (2)优化数据层代码库:该库提供了一般最常用的微码汇编和微码 c 语言 库。 (3)微模块编程模型:该模型定义了代码模块之间的数据流模型,数据结 构,程序员根据该模型的定义,就能够开发出模块化的代码,从而增强代码的可 8 重用性。 (4)资源管理器:该资源管理器编程实现了 xscale 应用和微码之间的接口,将 “上层”程序员的工作和微码硬件及微模块的联系分开。还提供了一些低层次的 api, 如硬件初始化和配置、内存管理、硬件队列和环,还有微引擎控制以及一些 pci 上的 输入输出通讯等应用程序接口。 (5)核心组件底层构架:定义了每个核心组件的要用到数据结构,指出数据包 如何在核心组件之间传送,核心组件的配置以及核心组件如何执行,还有它们的调度 策略。 (6)ossl:是 xscale 上针对操作系统的服务库(os services library) ,是一个 操作系统的抽象层。它增强了 xscale 代码在不同操作系统之间的可移植性。它支持 vxworks,windows,linux,qnx 等操作系统。 控制层协议栈外部处理器 控制层pdk 核心组件 核心组件底层库 资源管理库 微模块底层库 微模块微模块微模块 协议库应用库 硬件抽象层库 ossl xscale核 微引擎流水线 图 2.2 intel ixa 可移植软件框架 9 2.3 intel ixp2400 处理器构架处理器构架 2.3.1 intel ixp2400 处理器的整体构架处理器的整体构架 ixp2400 处理器作为 ixa 构架系列网络处理器中的一员,从功能的角度来划分 层次,可分为数据通道和控制通道两个部分。主要由微引擎和 xscale 核这两个部分 组成,当然还有其它一些诸如 sram 控制器,sdram 控制器、pci、shac、cap、 xpi 等一些组成部分27,28。ixp2400 处理器主要组成部分的模块之间的关系图 2.3 所 示。 msf scratchpad 内存 sram 控制器 0 sram 控制器 1 dram 控制器 hash 单元 cap pci 控制器 微引擎群 0微引擎群 1 me 0 x1 me 0 x0 me 0 x2 me 0 x3 me 0 x10 me 0 x11 me 0 x13 me 0 x12 xscale核 外部设备 intel xscale核 性能监视器 图 2.3 intel ixp2400 模块图 2.3.2 intel ixp2400 处理器中的微引擎处理器中的微引擎 ixp2400 处理器中一共有 8 个 32 位可编程微引擎(mev2) ,在逻辑上可分为两 组。这些处理器完成数据层面上每包处理。它们使用硬件多线程技术达到了上下文切 换的零开销。 相对“mev1”来说 mev2 做了如下改进: 可自由定义每个 mev2 使用 4 线程或者 8 线程模式; 将通用寄存器 (gpr) 由 128 个增加到 256 个; 传输寄存器 (transfer register) 由 128 个增加到 512 个;每个微引擎中含有 4k 条指令存储空间,值得注意的是指令 长度是按照 40 比特每条计算。 为了加快处理器的速度, 每个 mev2 还增加了一个 64032 比特的本地内存和 128 10 个用于微引擎之间通讯的下一个邻居寄存器29,30(next neighbor register)等等,它 们之间的逻辑关系见图 2.4。 lm alu gprsnn d_xfer in s_xfer in control store immed s_xfer out nn in s_xfer out d push s push d pulls pull 图 2.4 mev2 内部结构图 2.3.3 intel ixp2400 处理器中的处理器中的 xscale 核核 ixa 构架的 xscale 核是与 armv5 构架兼容的具有 4gb 地址空间的处理器31。 它除了实现 armv5 的整型指令集,还提供 thumb 指令集和 dsp 扩展。ixp2400 中 的 xscale 核还具有以下特点。 (1)mac(multiply/accumulate) mac 可以达到每个周期都可进行一次 mac 操作的吞吐量32。加入了 40 比特的 累加器和对 16 比特压缩值运算的支持等几个结构上的改进, 使得 mac 能支持音频解 码算法。 (2)mmu(memory management unit) intel xscale 核实现了 arm 结构中一样的内存管理机制。mmu 提供了保护模式 和虚地址到实地址之间的转换。mmu 还为指令缓存和数据内存指定了缓存策略,包 括页属性,写回数据缓存,写缓存等。 (3)指令 cache intel xscale 核实现了一个 32k 字节的,32 路组相联指令 cache。同时还提供了一 个在 cache 中对临界代码上锁的机制。 11 (4)分支目标缓存(btb) 预测分支指令的执行结果。能保存分支指令的目标地址,并且在当前指令也处于 一个分支之中的时候,预测当前指令 cache 中的下一地址。 (5)数据 cache intel xscale 核实现了一个 32k 字节、 32 路组相联的数据 cache 和一个 2k 字节的 二路组相联的小数据cache33。 这个小数据cache 的使用由协处理器15通过定义mmu 中的页属性来控制。 同时 xscale 核还允许应用程序使用数据 cache 中的一部分来作为 数据 ram,这个 ram 用来存放一些特殊的表或者经常用到的变量。 (6)中断控制器 intel xscale 核提供了两级中断,irq 和 fiq。它们通过协处理器 13 来控制。 2.3.4 intel ixp2400 处理器中的其它重要组件处理器中的其它重要组件 除了微引擎和 intel xscale 核外,ixp2400 处理器还有许多复杂的部件。在本文 所设计和实现的发包机系统中起到重要作用的部分有:msf,scratchpad 内存,qdr sram 内存控制器,ddr sdram 内存控制器。下面是这几个部分的作用和特点: (1)msf(media and switch fabric interface) 简单通俗的讲,就是各个不同速度、不同功能部件之间的接口34。它是 ixp2400 与外部物理设备(phy)和交换结构(sf)的接口单元35,是数据出入 ixp2400 的窗 口。它有着独立的 32 比特可配置接收和发送总线,还有一个可配置总线接口。使得 这个总线可以配置成单独一个 32 比特总线,或者两个 16 比特的总线(两通道) ,或 者 4 个 8 比特总线,或者一个 16 比特和两个 8 比特总线。每个通道都可以被定制为 utopia 模式或 pos-phy 模式,本文的发包机实现中就定义成为 pos-phy 模式。 (2)scratchpad 内存 scratchpad 和 sram 还有 sdram 一起组成系统的内存资源。scratchpad 内存由 4k 个 32 比特的字组成,可以被微引擎和 xscale 核访问。它位于 ixp2400 内部,能 以非常快的速度进行访问,常用于网络数据处理过程中某些重要的数据结构的缓存。 最重要的是它还提供了 16 个硬件相联的环(ring) ,用来完成线程之间的通信。此外, scratchpad 是这三个内存资源中“速度”最快的一个。 (3)qdr sram(quad-data rate sram) ixp2400处理器支持两个独立的sram控制器。 对sram的读写命令可以由me, xscale 核,pci 总线发出。它们通过 cpp(command buses and push and pull buses) 12 总线连接到 sram 控制器上。 sram 控制器在对每个来自于“命令总线”的命令进行排 队,然后这些命令出队列后一个接一个地在 sram 上得到执行。每个 sram 控制器 使用两条命令总线,但是其中一个可能并不工作。sram 控制器每个周期可以将一个 来自命令总线的命令放入队列中。 数据通过 s-push 总线和 s-pull 总线在 me 和 sram 控制器中传输的。一个 sram 控制器的总体结构如图 2.5 所示。 push arb pull arb sram 控制器 sram 控制器 push总线 pull总线 me 数据线 sram sram 图 2.5 sram 控制器 (4)ddr sdram sdram 控制器负责控制可以插拔的 sdram 内存。与 sram 一样的是:对 sdram 的读写操作也由微引擎,xscale 核或者 pci 总线发出。这些部件也是通过 cpp 总线核和控制器相连。sdram 控制器也是从这些器件中获得命令并对它们进行 排队,然后再依次执行队列中的命令。 2.4 本章小结本章小结 intel ixp2400 作为 intel 公司的第二代网络处理器的代表, 已经得到了比较广泛的 应用。本章详细分析了 intel ixa 可移植性软件框架的设计及其应用。分析了 ixp2400 网络处理器整体构架、微引擎和 xscale 核心的构架。最后还详细地讨论了对我们发 包机的性能起着重要作用的功能部件和系统内存, 包括 msf, scratch, sram, sdram 等。 13 3 发包机操作系统的定制发包机操作系统的定制 本章首先简单介绍了 vxworks 操作系统在嵌入式开发中的运用,在这个基础 上定制了针对发包机硬件环境所使用的 vxworks 操作系统的 bsp,设计和实现了 strap 程序,boot program 程序和 vxworks 应用程序映象以及发包机系统的内存管 理模块。 3.1 vxworks 操作系统操作系统 vxworks 操作系统是美国 windriver 公司于 1983 年设计开发的一种嵌入式实时 操作系统(rtos) 。vxworks 以其良好的持续发展能力、高性能的内核以及友好的 人机交互界面,在嵌入式实时操作系统领域占据一席之地。被应用于各种嵌入式领 域,包括过程控制、机器人、航空电子、军事、数据处理、通信、家电、计算机外围 设备36等。 vxworks 是嵌入式系统应用中的软件平台, 是包括各种硬件驱动和内核组件的集 合,提供了各种嵌入式系统和实时应用的特性,以及一些帮助系统开发和调试的辅助 机制。 vxworks 提供了定制硬件的板级支持包(bsp)和实现硬件抽象。硬件抽象层可 以提高应用代码的可移植性,使应用在各种目标板上的程序移植变得容易进行37。而 vxworks 本身和其应用程序都具有极好的可移植性。 vxworks 的发行版本直接对多种 cpu 提供支持,包括 powerpc、pentium、mips、sh、xscale、arm、68k 和 coldfire 等。 3.2 发包机发包机 bsp 的构建流程的构建流程 3.2.1 操作系统程序映象操作系统程序映象 vxworks 应用系统一般按照一定的顺序来启动系统, 但是在不同的应用环境和硬 件条件下,启动的顺序也有可能发生一些改变。 一般来说是 bootrom+vxworks 这样的启动顺序,也就是目标板加电之后先运行 flash 中的 bootrom,再由 bootrom 来加载 vxworks 应用程序映象。bootrom 映象 14 其实是一个最小化的、专用的 vxworks 映象,保存在固定位置,主要负责加载和运行 最终使用的 vxworks 映象。bootrom 还负责把自身的一部分代码拷贝到以 ram_high_adrs 为起始地址的一段地址空间。需要说明的是,如果使用的是压缩 的映象,则将其拷贝到 ram_low_adrs 为起始地址的内存空间,在拷贝的同时还 需要进行解压缩,然后在进行代码重定位的时候将代码再拷贝回 ram_high_adrs 地址。对于这两个地址的定义是在 bsp 的 makefile 文件和 config.h 两个文件中,显然 这两个文件中对这些地址的定义应该完全一样。而 user_reserved_mem 和 local_mem_local_adrs分别表示用户保留的内存区域大小和内存的起始地址。 bootrom 运行时的内存布局如图 3.1 所示38。 user_reserved_mem boot program + boot strap code 保 留 sysphysmemtop() sysmemtop() ram_high_adrs ram_low_adrs local_mem_local_addrs 图 3.1 bootrom 的内存布局 在 rootrom 之 后 , vxworks 运 行 时 的 内 存 布 局 又 发 生 改 变 , 多 出 了 wdb_pool_size 这块内存区域,该内存区域主要用于 vxworks 中调试代理任务和 进行模块的动态加载;还多出了 initial stack 一部分空间,它是由 stack_adrs 和 stack_save 这两个宏来标记其起始地址和大小的,这块内存空间用来为 kernelinit 函数提供内存空间。在基于 rom 的映象中它由 rominit 函数初始化,交给 romstart 函数使用,而在可加载的 vxworks 映象中,则是由 sysinit 初始化,由 usrinit 使用。 图 3.2 说明了 vxworks 运行时的内存布局。 整个发包机从加电启动到操作系统正常运行,需由三个模块协同工作完成,它们 是:boot strap 模块,boot program 模块和 vxworks 映象39。 15 图 3.2 vxworks 的内存布局 (1)boot strap 模块 该模块主要有两个函数工作,rominit 和 romstart。rominit 是为执行 romstart 而对 系统进行最小的初始化, 它初始化 cpu, 关闭终端, 设置内核时钟频率, 初始化 cache、 mmu、sram、sdram 还有复位 8 个微引擎。rominit 函数本身不使用堆栈,但是 要为下面即将使用的 c 语言程序建立堆栈结构。romstart 函数的主要工作则是清除内 存,将数据段和代码段从 flash 拷贝到 ram 和解压缩,检查数据段是否被正常初 始化40,然后再跳转到 boot program 模块的第一个函数 usrinit。 (2)boot program 模块 该模块主要由 usrinit,usrroot 等函数组成,完成对硬件的初始化工作,包括初始 化 pci、uart 和关闭 fiq 等。它还负责载入 vxworks 的应用程序映象以及配置网络 接口和产生网络任务队列等工作。 (3)vxworks 映象 按照功能、运行位置、是否压缩、文件格式41和是否带符号表等条件来划分 vxworks 的映象。主要有在 ram 运行的 vxworks,rom 启动但在 ram 中运行的映 象 vxworks_rom,rom 启动并且 rom 中运行的 vxworks_romresident 等等。在 vxworks 映象中用户可根据需要添加 usrroot 任务、网络任务、tffs 任务、ftp 任务 等等。 user_reserved_mem 系统内存池 wdb_pool_size vxworks and application (text, data,bss) initial stack sysphysmemtop() sysmemtop() free_ram_adrs ram_low_adrs local_mem_local_addrs 保 留 16 3.2.2 发包机发包机 boot strap 程序设计程序设计 strap模块涉及到的主要函数有rominit.s中的rominit函数, bootinit.c中的romstart 函数,以及硬件初始化相关函数。 1)rominit 函数的设计 rominit是系统加电后执行的第一个函数,是rom程序的起点,使用strong arm汇 编语言编写。程序做必要的最小的初始化,然后用保存在寄存器 r0(apcs r1)中的启 动类型参数调用 c 程序 romstart,冷启动参数为 boot_cold2,热启动参数由 systomonitor 传入。热启动的地址为 0 xc4008000,而冷启动的地址则是 0 x08040000。 rominit 函数的流程如图 3.3 所示。 复位启动 热启动? r0启动类型为 boot_cold 保存starttype到 r0寄存器 关中断,切换到svc32,检查 ixp2400设备版本号 写rom保护位,关闭内存管理 单元、cache、写缓存 读芯片id,配置cpu时钟 关debug,刷新mini-cache, 数据cache,指令cache 清空读缓冲,配置 sram控制器 复位8个微引擎 初始化dram控制单元 打开mmu 跳转到c程序入口 romstart,启动类型参 数由r0来提供 是否 图 3.3 rominit 的函数流程图 这段程序使能 mmu,后面的程序依据物理地址到虚拟地址(cpu 产生的地址)的 转换表来访问地址空间。sdram 的物理地址从 0 xc0000000 开始,低 240m 保留给微 引擎使用,所以从物理地址 0 xcf000000 开始映射到虚拟地址 0 x00000000。flash 的物理地址从 0 x00000000 开始,映射到虚拟地址 0 x08000000。 反过来,sdram 的虚拟地址有两块,一块是 cpu 产生的虚拟地址 0 x00000000 0 x00ffffff 映射到 sdram 物理地址 0 xcf000000 0 xcfffffff,另一块是 17 0 xc0000000 0 xcfffffff 映射到 sdram 物理地址 0 xc0000000 0 xcfffffff。两 块虚拟地址映射到相同的 sdram。区别在于,第一块是可缓冲可 cache 的,并从物 理地址 0 xcf000000 开始,低 240m 空间不使用,第二块虚拟地址与物理地址一致, 可以访问全部空间,是不可缓冲不可 cache 的。 2)romstart 函数设计 该函数是 boot strap 执行的第一个 c 函数。程序由 rominit 函数中的汇编启动代 码调用。 负责把“启动代码”拷贝到内存, 在“可装载” 的时候这个“启动代码”是个 boot program 代码;而在当映象在 rom 中执行的时候,“启动代码”代表的就为 os 本身。 程 序 中 会 遇 到 三 种 模 式 , 分 别 是 : rom_compress 、 rom_copy 、 rom_resident。 如果使用的是 rom_compress 模式,则需要先将数据段拷贝到内存,然后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合肥市肥东县第六中学教师招聘考试笔试试题(含答案)
- 社区预防考试题及答案
- 气管技能考试题及答案
- 民法中考试题及答案
- 2025年广州市天河区五一小学教师招聘考试笔试试题(含答案)
- 北京知识付费主播培训课件
- 医学综合考试题(附参考答案)
- 压力性损伤诊疗与护理规范理论考核试题及答案
- 医用Ⅲ类射线装置试题及答案
- 各种注射技术操作并发症预防及处理试题(有答案)
- 劳保用品验收标准
- 2024年北师大版八年级上册全册数学单元测试题含答案
- 军工PCB市场潜力
- 敏捷开发方法绩效评估
- 会议保障实施方案
- JGJ196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 100以内两位数进位加法退位减法计算题-(直接打印版)
- DL-T5501-2015冻土地区架空输电线路基础设计技术规程
- 2023-2024学年山东省济南市天桥区物理八下期末学业质量监测试题及答案解析
- DZ∕T 0173-2022 大地电磁测深法技术规程(正式版)
- 奇瑞汽车使用说明书
评论
0/150
提交评论