




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录网络处理器中微引擎的设计与实现毕业论文目 录摘 要IAbstratII目 录IV图表清单VI第1章绪论11.1研究背景和意义11.2国内外研究和发展现状21.3论文的研究内容和结构安排3第2章网络处理器微引擎研究52.1网络处理器及微引擎分析52.1.1P1600网络处理器介绍62.1.2解析微引擎72.1.3搜索微引擎82.1.4转发微引擎92.1.5修改微引擎102.2网络处理器微引擎设计技术研究112.2.1微引擎处理单元架构112.2.2微引擎指令集架构122.2.3微引擎并行技术122.3本章小结13第3章转发微引擎设计与实现153.1指令集设计153.1.1专用指令集153.1.2寻址方式183.1.3寄存器模型193.2微引擎结构设计193.2.1微引擎结构描述193.2.2微引擎功能模块设计203.3微引擎流水线设计263.3.1流水线结构设计263.3.2流水线相关部件设计273.4微引擎设计实现方法333.5本章小结33第4章微引擎设计验证和性能分析354.1微引擎功能验证354.1.1验证策略和方法354.1.2验证环境384.1.3验证过程和结果424.2微引擎性能评估454.2.1评估策略和方法454.2.2硬件开销评估454.2.3应用性能分析514.3本章小结53第5章总结与展望545.1工作总结545.2工作展望54参考文献56在学期间发表的学术论文及取得的研究成果58致 谢59附 录60绪论图表清单 图2.1微引擎单元组织结构图5图2.2系统结构框图6图2.3 P1600网络处理器结构框图.7图2.4解析微引擎组织结构8图2.5 Search1微引擎组织结构9图2.6 Search2微引擎组织结构9图2.7转发微引擎组织结构10图2.8修改微引擎组织结构11图2.9五级经典流水线13图3.1转发微引擎总体结构框图. 21图3.2微引擎内部模块示意图21图3.3 ALU执行单元原理图22图3.4 Minterm运算示意图23图3.5 MAX运算单元24图3.6 PRI_ENC运算单元25图3.7流水线时序26图3.8四级流水线27图3.9 P0级接口信号图28图3.10 P1级接口信号图28图3.11 P1级取指令原理图29图3.12 P2级A操作数译码原理图30图3.13 P2级取A操作数原理图31图3.14 P2级分支执行原理图32图4.1验证平台和待测设计的基本结构36图4.2 UVM与数字电路设计37图4.3 UVC解决方案38图4.4验证平台的总体结构39图4.5生成MOV指令激励的部分约束40图4.6 MOV指令功能覆盖率统计42图4.7微引擎验证流程42图4.8第一阶段各模块代码覆盖率统计结果43图4.9第一阶段各模块代码覆盖率统计结果45图4.10 JMP指令功能仿真结果44图4.11 SetMaxMin指令功能仿真结果44图4.12 FPGA Performance Summary46图4.12 FPGA关键路径报告46图4.14 Design Compiler综合流程49图4.15 ASIC综合关键路径报告51图4.15 FPGA硬件平台照片52表3.1微引擎指令集列表15表3.2全局Host寄存器19表4.1两种方式的测试激励数量关系43表4.2 FPGA各模块资源占用情况47表4.3吞吐量测试结果52表4.4丢包率测试结果52 绪 论1.1 研究背景和意义当计算机网络发展到高速网络技术阶段,有了光纤媒介的广泛使用和传输技术的巨大进步,人们对网络带宽的需求也越来越大,中间网络处理设备逐渐成为了网络系统的瓶颈,因此人们需要处理速度更快的网络设备。此外,新的网络业务不断涌现和应用范围的不断扩大,中间网络设备需要处理更加复杂的协议,因此必须具有很好的灵活性和适应性,并针对不同客户提供差异化的服务质量(QoS)保障。所有这些都需要能够高速并且智能化的完成网络数据处理的中间网络设备,基于这种情况,网络处理器(Network Processor,简称NP)应运而生。网络处理器作为一种应用于网络系统的专用指令处理器,通常采用多核多线程结构,集合了高速度、低功耗和可编程的优点,同时通过使用专用协处理单元可为设计人员提供更大的自由。利用网络处理器开发人员可以实现快速编程,可为客户灵活提供所需功能,使网络系统具有高性能和高灵活性。网络处理器的出现建立了网络系统的硬件平台,它通过软件升级来满足日益增长的功能需求,给网络处理技术的发展提供了一个开放舞台,因而具有非常重要的意义。通常网络处理器都集成了多个RISC(Reduced Instruct Set Computer,精简指令集计算机)处理器来满足高性能线速度的处理要求,这些处理器专门针对网络协议处理(如包分类、路由查找等)而设计,通常被称之为微引擎。微引擎的指令集是专为网络协议处理而优化的RISC指令集。在网络处理器中,微引擎对数据包的处理速度决定着网络处理器的整体性能,如何有效降低微引擎中关键路径的延时是提高NP性能的关键。微引擎一般采用流水线技术和并行执行的多处理单元组织机制,利用专用硬件与专用指令处理特定协议操作,降低延迟提高处理速度。此外,对于网络处理器微引擎这样具有复杂功能的芯片设计的验证,务必采用高效的验证方法,以缩短验证周期,提高设计质量。网络处理器作为高端路由器、交换机、防火墙等数据通信产品的核心部件,是关系到政府和军队等国家机构信息安全的重要基础设施。然而长久以来在计算机和网络安全技术方面,我国的集成电路芯片设计技术落后于欧美国家,所以导致国家大量的信息安全产业无法得到核心自主研发芯片的支持,并且使得信息安全隐患变得越来越严重。尤其是最近的“棱镜门”事件充分暴露了国家信息安全的重要性和紧迫性,因此关于这方面的研究与应用工作必须及早开始。研制出“自主可控”的网络处理器设备,对建立我国“自主可控”的网络信息安全保障体系具有重要意义。1.2 国内外研究和发展现状从二十世纪末到现在,网络处理技术发生了巨大的变化,网络设备的架构以处理核心的更新作为标志,大致经历了以下3个阶段:1)基于GPP(General Purpose Processor,通用处理器)的网络设备。网络发展初期主要研究构建服务框架和实现网络协议,其传输速率低服务类型少。网络设备是以GPP为硬件基础,并在通用操作系统上运行相关软件,所以功能较为灵活,但由于性能较低已无法适应日益增长的网络数据处理要求。2)基于ASIC(Application Specific Integrated Circuit,专用集成电路)的网络设备。到了九十年代中期,基于GPP核心的网络设备的处理能力逐渐成为网络发展的瓶颈。而针对网络协议进行硬件优化设计的基于ASIC的网络设备取得很大的发展。通常ASIC网络设备需要结合RISC处理器来获取高性能。3)基于NP的网络设备。随着因特网发展到繁荣时期,高带宽和服务多样化对网络设备提出了更高的要求。基于ASIC的网络设备的固有缺点是缺乏可编程性,且开发周期较长成本较大,因此限制了其进一步发展。而网络处理器由于具有高性能、高度灵活性和高性价比以及上市时间短等优点,成为了当今以及未来的主流发展方向 。国外方面,从上世纪九十年代末,许多大学和研究机构对NP的体系结构以及NP性能评价进行了研究。Intel公司是最早投入大量资金和人才进行NP研发的公司之一,并且在全世界投资了近百所大学进行NP及其相关应用的研究。2001年成立了网络处理器论坛(NPF),致力于推动网络处理器标准的兼容和发展。目前市场份额较大的网络处理器开发商有 AMCC、IBM、Intel 、Broadcom等,推出的典型产品有Marvell(Intel)公司的IXP24xx系列网络处理器、Hifn(IBM)的NP3G4S网络处理器和Cisco公司的ToasterZ网络处理器等。2012年博通公司推出了业界首款100Gbps的全双工网络处理器BCM88030系列芯片,可为网络厂商提供100GbE交换和路由平台的核心硬件,是目前吞吐量最高的商用网络处理器芯片。国内方面,我国在网络处理器芯片研究和开发方面跟国外研究发展有较大的差距。值得一提的是,华为公司作为中国和全球领先的通信设备厂商,最早将网络处理器应用于商用领域。2000年华为就率先在推出的NE40系列和NE80系列核心路由器产品上使用网络处理器,并取得不错的市场份额。另外,2005年清华大学历经5年研发出的清华天行网络处理器芯片原型在整体技术上达到了国际先进水平,其中基于硬件链表的聚合流保序与流量分发技术、集成化硬件查找协处理器和内置业务量管理引擎中的快速通道技术具有创新性,这不仅缩小了与国外的差距,而且对建设我国自主可控的网络信息安全系统具有重要意义。1.3 论文的研究内容和结构安排本文的主要研究工作都是围绕一款自主研发的万兆网络处理器P1600中微引擎的设计和验证展开的。本文的主要工作和后面各章节的内容安排如下:第一章,首先对网络处理器课题的研究背景和意义进行了阐述,交代了网络处理器及微引擎的概念。然后分析了国内外的研究和发展现状,并简单介绍了本文的研究内容和论文的主要章节安排。第二章,分析了网络处理器微引擎的拓扑组织结构,并重点分析了P1600网络处理器课题的四类微引擎。然后对微引擎的设计技术:处理单元架构、指令集架构、并行技术等进行了研究。第三章,对P1600网络处理器转发微引擎进行的详细的设计,包括专用指令集设计,微引擎结构设计以及四级流水线的详细设计,最后对设计进行了实现。第四章,针对第三章设计的微引擎,设计了UVM验证平台进行了验证和分析。然后从FPGA硬件开销、ASIC硬件开销以及实际应用性能三方面对微引擎的性能进行了评估。第五章,对本文的研究工作进行了总结,并展望了未来工作。网络处理器微引擎研究第1章 网络处理器微引擎研究第2章 2.1 网络处理器及微引擎分析网络处理器中通常集成了多个微引擎处理单元,它们不是硬件资源的简单堆叠,而必须按照一定逻辑结构组织才能获得高性能。如图2.1,其拓扑结构可以分成如下三种:1) 串行流水处理模式。这种模式将处理任务划分为流水段,并和微引擎单元进行一一映射,其中的每一级处理单元只负责部分处理任务。其优点是可简化处理单元并针对特殊的网络处理需求进行定制,同时化解了共享资源的访问冲突问题。缺点是必须注意流水线间的负载均衡。2) 并行多处理模式。该模式下每个处理单元完全同构,能独立完成全部网络数据包处理任务。缺点是处理单元之间关键资源的竞争(如指令存贮、共享总线等)。其优点是扩展性较好,增加新的处理资源容易;编程较为简易,因为开发人员只需面对一个处理单元,无需进行任务划分。3) 混合模式。基于以上两种模式优缺点,提出的混合模式在串行模式的硬件有效性和并行模式的编程有效性之间进行折衷,但是关于具体采用多少条流水线以及每条流水线使用多少个处理单元较好仍然没有明确的解决。图2.1 微引擎单元组织结构图本课题中P1600网络处理器芯片中的微引擎采用流水处理模式,组整合多个高速处理器,每个都被优化执行一个特殊的任务。4种类型的微引擎Parse、Search、Resolve和Modify被用于执行数据包处理的主要任务,即分类、转发和修改。可编程的微引擎和这些任务一一对应,相当快速地执行各自的任务。每个微引擎处理器的类型采用一种独特的体系结构,带一个定制的、特殊功能的数据通路和指令集。这减少了复杂数据包操作需要的时钟周期数目,提供相当快速的数据包处理。微引擎性能受益于类超标量结构,微引擎的多个核在每个流水段并行运行。该网络处理器硬件系统的结构见图2.2。图2.2 系统结构框图122.12.1.1 P1600网络处理器介绍网络处理器芯片主要特性包括:1) 单芯片、可编程、20Gbps吞吐量网络处理器;2) Line card、service card和pizza box应用;3) 处理灵活,带可编程的数据包分析、分类、修改和转发;4) Ingress流量管理和egress流量管理,带等级化调度(流量管理);5) 嵌入式搜索引擎,减少外部搜索协处理器的需要;6) 2个10Gbps以太网端口分别连接Link和Fabric,带集成的MAC。网络处理器芯片使用一个简单的单镜像编程模型,没有并行编程或多线程。为数据包分配微引擎,在微引擎之间传递消息,还有维护帧的顺序,这些对编程者完全透明且用硬件实现。大容量的代码存储器可用于支持多个复杂的应用,同时为增加新性能提供扩展空间。网络处理器芯片的数据和控制通路见图2.3,功能模块主要分为3个部分:1) 深色部分为接口和内存管理模块,负责数据包的XGMII接口、帧存储和描述符管理、PCIE的CPU接口和统计计数模块;2) 中间浅色斜纹部分为Parse、Resolve和Modify内核,依据帧描述符信息进行数据包的解析、决策和修改;3) 其余浅色部分为搜索内核,该部分依据关键字实现表的硬件搜索,管理内部的搜索存储器和外部的搜索存储器。图2.3 P1600网络处理器结构框图微引擎构成的功能流水线以一种类超标量结构运行,能把数据包的消息和指针从一个处理阶段传到下一个阶段。每个微引擎执行特定的任务,把它的结果(如messages、keys、headers和pointers)传到下一个微引擎阶段,用于后续处理。在相同流水段的多个微引擎能完成多个数据包并行处理。所有相同类型的微引擎执行相同的代码,但为了性能最大化,每个微引擎有自己的程序存储,和其他微引擎独立运行。微引擎处理器采用共享的资源,而没有连到一个物理端口。一个集成的硬件调度器在每个流水段自动调度下一个可用的微引擎给下一个要处理的数据包。数据包的顺序由每个端口自动维护。2.1.2 解析微引擎解析(Parse)微引擎完成数据包的解析和分类,识别并提取各种数据包的头、标签、各种域和关键字,能分析任何深度和任何格式、封装方法、专有标签等的数据包。将该部分解析的内容以消息(massages)的方式发送给Resolve和以关键字(keys)的方式写入HREG供Searehl查表使用,每次最多可以发送16条消息/关键字,Parse也可以实现简单的查表和统计功能。解析微引擎采用72位专用指令集,最多能支持6K行微码指令,其内部组织结构如图2.4:图2.4 解析微引擎组织结构2.1.3 搜索微引擎搜索(Search)微引擎(包括Search1和Search2)完成数据包的查找和分类,使用被分析域的组合,如关键字(keys),在相关路由表(routing tables)、分类表(classification tables)和策略表(policy tables)中执行并行/流水查找。主要支持的表结构是FastIP表、Hash表、直接访问表、Tree表及其组合,其中当采用组合方式查表需要微码支持,即在Searchl上需要编写微码指令。其内部组织结构如图2.5和图2.6:图2.5 Search1微引擎组织结构图2.6 Search2微引擎组织结构2.1.4 转发微引擎转发(Resolve)微引擎负责帧的转发决策处理。它决定了帧的目的、优先级、格式以及内容的改变。基于Search1的结果和来自Parse的消息,Resolve 模块决定帧的输出端口和队列。Resolve还能更新数据流条目的状态,向搜索结构(只支持hash)中学习新的条目。动态资源,如Resolve的统计计数器和流号,通过使用一个通用的索引队列来分配。Resolve的决定和修改指令,被编译到一个消息中,传到Modify。Resolve还能生成Search 2微引擎使用的搜索关键字。Resolve是一个可编程的处理器,每个周期执行1个微码指令。采用73位专用指令集,下载到Resolve的微码决定了各种帧和应用所需要的解决方法,指令存储器支持1.5K行微码指令。其内部组织结构如图2.7:图2.7 转发微引擎组织结构2.1.5 修改微引擎修改(Modify)微引擎修改数据包的内容,在数据包中的任何地方执行改写、加或插入操作。能在任何微引擎阶段为多播应用复制数据包。它采用40位专用指令集,支持6K行微码指令。其内部组织结构如图2.8:图2.8 修改微引擎组织结构2.2 网络处理器微引擎设计技术研究2.22.2.1 微引擎处理单元架构网络处理器是利用多个微引擎处理单元并行工作来提供强大的处理能力,因此作为NP核心的微引擎的必须具备处理高效、设计简单以及编程容易等特点。一方面需要尽量的降低每个微引擎的面积和功耗,从而才能使集成多个微引擎的NP整体仍然满足约束;另一方面微引擎还要根据网络业务特点,提供丰富操作和较高频率,才能使NP达到较好的处理能力。微引擎的架构有以下三种实现方式。1) 基于 RISC 核心。由于RISC处理器不仅设计难度相对较小,而且精简 指令集有益于CPU跑到更高的时钟频率,目前已经得到广泛使用,包括 IBM 的PowerNP系列、Intel 的IXP12xx/24xx系列等等。其中的 RISC 核心既有简单的单标量流水线结构,也有复杂的超标量流水线结构。2) 基于 VLIW (Very Long InstructionWord,超长指令字)核心。VLIW 结构的目的是通过把多条指令连接在一起来发掘出更多的指令级并行性,但需要相应的编译器进行辅助开发。这种架构的优点是低功耗、低设计复杂度与高性能。目前采用VLIW架构的NP不多,如Cisco PXF等,一般应用于网络边缘的高性能路由器中。3) 基于数据流处理单元核心。这种架构和传统的顺序编程模型差别很大,它不需要显式的控制流,只要处理单元的功能部件接收到所需数据就马上进行处理。采用这种架构的NP产品也并不多,例如Xelerated的 X11/X10q网络处理器。2.2.2 微引擎指令集架构微引擎的一个重要功能是执行程序的每条指令,完成程序所要实现的功能。所以,指令系统的设计是微引擎设计的一大重点。目前处理器的两种指令集架构分别是复杂指令集计算机(CISC)和精简指令集计算机(RISC)。早期的计算机都采用CISC 架构,设计CISC的目的是希望花费尽量少的指令开销完成所需处理任务。每条指令可执行多个操作,如乘法和写数据等操作。但由于指令格式复杂,寻址模式多种多样,不仅增加了硬件设计的复杂度而且执行工作效率较差。正因为CISC的这些缺点,产生了RISC技术。RISC 注重简化指令系统,优先选择使用频率最高的且不复杂的指令;减少指令格式种类和寻址方式种类;采用等长指令,指令内部各字段的划分比较一致且各字段的功能较为规整;控制大部分指令在单周期内完成;采用专用指令(Load/Store)访问存储器,而安排其余指令在寄存器之间进行操作;增加通用寄存器数量,可用于算术逻辑运算指令的操作数存取;采用高级语言编程并进行编译优化,以减少程序执行时间。RISC的这些努力使计算机的结构更简单合理,运算效率更高。网络处理器中的微引擎一般负责数据平面的处理(如包分类、查找、转发等),虽然此类操作较为简单但必须保证操作延迟较低;而一般由片上的通用处理器来完成控制平面的处理(如系统信息维护、协议处理等),这类操作较为复杂,但是通常每个分组并不是必须进行。随着网络应用的发展,数据平面和控制平面的界限已经逐渐模糊,因此现在微引擎指令集必须同时考虑两方面的处理。2.2.3 微引擎并行技术并行技术可以有效地提高微引擎的处理能力,按照并行性等级从高到低可分为:线程级并行、数据级并行、指令级并行以及指令内部的微操作并行。针对本文的设计,本节只介绍指令级并行。指令级并行需要采用流水线技术和超标量技术。(1)流水线技术如今已广泛使用的流水线技术通过将任务划分为多个流水段执行而提高系统的吞吐率。其中组合逻辑构成的流水段负责进行运算和处理,而由相邻流水级之间的寄存器来暂存中间运行结果。在理想状况下各流水段处理时间相等,从而使吞吐率提高到n倍(n为流水线的深度),但在实际中,处理时间最长的流水段将成为流水线的瓶颈。以传统的五级流水线为例,指令的执行过程细分为取指(IF)、译码(ID)、执行(EX)、访问存储器(MEM)和写回寄存器堆(WB) 5 个子过程,如图2.9所示。图2.9 五级经典流水线此外实际中的流水线中的加速比,会由于流水级间逻辑增加新的开销,以及由于存在着多种多样的冲突导致流水线的停顿而大幅降低。流水线的冲突一般有以下三种类型:1)结构冲突。因为硬件资源(如功能单元、寄存器和存储器等)满足不了指令重叠执行的要求而发生流水线冲突。通常采用相应的指令调度策略或增加硬件资源来减小冲突的影响。2)数据冲突。当指令在流水线重叠执行时,因需要用到前面指令执行的结果而发生的冲突。大部分数据冲突可以通过修改相关寄存器别名来消除。3)控制冲突。流水线在遇到分支跳转指令或其它会改变PC(程序指针)值的指令所造成的冲突。流水线暂停是解决控制冲突最简单有效的方法。(2)超标量技术超标量(Superscaler)架构是指在处理器中有两条及两条以上的流水线,且每个时钟周期可完成多条指令,其实质是以空间换取时间。超标量处理器是指为提高标量指令的执行性能而设计的一种计算机。采用超标量技术处理器的在每个时钟周期能够发送多条指令,并相互独立地执行。因此大大提高指令流水线的指令流出率,从而提高了处理器的性能。2.3 本章小结首先分析了网络处理器的微引擎处理单元之间的组织结构,即串行、并行以及混合模式。并引出了本课题的研究内容P1600网络处理器,接着对P1600的四类微引擎解析、搜索、转发、修改进行了详细分析。其次,研究了微引擎设计技术。微引擎的架构实现方式一般可以分成基于 RISC 核、VLIW核以及数据流处理等三种类型;微引擎的指令集架构可分为CISC和RISC,微引擎处理单元的指令集必须同时适合于数据平面和控制平面。最后分析了微引擎的并行技术流水线和超标量。转发微引擎的设计与实现第2章 转发微引擎设计与实现第3章 3.1 指令集设计不同于通用处理器的指令集设计,网络处理器中微引擎处理单元的指令集设计必须符合网络处理的特点。通常微引擎的指令集是基于RISC处理器指令集的定点操作部分,然后通过适当裁减并增加一些特殊的控制和运算指令来实现的。一方面,因为网络的分组数据的处理很少使用浮点操作,且浮点操作指令的实现较为复杂,所以微引擎的指令集设计不包含浮点的操作。另一方面,网络协议处理中存在着大量的查找比较操作,它并不是按字节或是字对齐的方式而是按位进行处理,因此微引擎的指令集设计必须对位操作有很好的支持。对于位操作的实现,与实现字或字节操作一样,首先要解决位访问的问题,然后才能实行位操作,而如何找到指令操作数就涉及到微引擎指令集设计中的一个关键点指令寻址方式的设计。通用处理器的指令寻址的最小单位一般都是字节,但可以采用掩码结合逻辑与或的方式实现位操作。该方式需要付出较大的代码开销与较高的位操作延迟的代价,尽管这可以被通用处理场合接受,但是已经无法满足网络处理场合的性能要求。因此微引擎指令集中的寻址方式必须包括位寻址的机制。33.13.1.1 专用指令集定制合适的专用指令集是满足新的应用和简洁的微引擎结构实现的关键。P1600网络处理器转发微引擎采用73位专用指令集设计,并根据转发微引擎的功能要求做出了相应的优化设计。总共35条指令每条指令均在一个时钟周期内完成,分为以下几类:移动指令、分支跳转指令、ALU指令、特殊指令,指令集的具体描述见表3.1。表3.1 微引擎指令集列表指令指令描述移动指令Mov按字节将立即数或寄存器数据移到目的寄存器MovBits按位将立即数或寄存器数据移到目的寄存器Mov4Bits移动任意四位数据到目的寄存器MovMul根据优先级编码寄存器的值,移动八个 源寄存器 中的一个到目的寄存器Get按字节把存储器数据移到目的寄存器指令指令描述PutKey按字节把立即数或寄存器数据移到目的存储器Copy按字节把存储器数据移到目的存储器PutHdr按字节把立即数或寄存器数据移到Header寄存器PutHdrBits按位把立即数或寄存器数据移到Header寄存器PutHdr4Bits移动任意四位数据到Header寄存器GetRndBits移动任意八位Result Control寄存器数据到目的寄存器GetFixBits移动有限制的八位Result Control寄存器数据到目的寄存器GetRnd4Bits移动任意四位Result Control寄存器数据到目的寄存器分支跳转指令Jmp无条件跳转Jstack间接跳转,地址来自PC_STACK寄存器Return间接跳转,地址来自PC_STACK寄存器,类同JstackJmul根据优先级编码寄存器的值,地址八选一进行跳转Loop跳转然后Loop Counter寄存器递减Call跳转并保存当前PC值到PC_STACK寄存器CallstackJstack并保存当前PC值到PC_STACK寄存器ALU指令And逻辑与Xor逻辑异或Or逻辑或Not取反Add不带进位加法操作Sub不带进位减法操作AddcDST=SRC1+SRC2+CarrySubbDST=SRC1-SRC2-CarryDecode将源操作数对应位置1后赋给DSTEncode取源操作数最高位数值NumOnes计算源操作数中1的个数特殊指令Minterm预定义12种运算,根据参数选择SetMaxMin从输入的序列中选出最大值或最小值及该最值的序列号Halt挂起,四种模式分别用于单播、多播、丢弃帧、调试Nop空指令微引擎指令的最高位(72位)是偶校验位(Even),当需要复杂操作时,可以直接由编译器解析指令完成。紧接着是六位表示的操作码(Opcode),指令的最低位一般是表示IF条件。不同指令还包含一些需要配置的模式(Mode),比如比较最大值或者最小值以及选择不同的Minterm运算等等。指令一般包含一个源操作数(Src)和一个目的操作数(Dst),但设计了多条专用指令包含多个源操作数。指令格式按操作数划分可以归结为以下几类。1)无源操作数:都是分支跳转指令,只有跳转的label地址。2)一个源操作数:主要是移动指令。特殊地,SetMaxMin指令也只有一个源操作数,但是目的寄存器固定为大小比较输出寄存器MAX_O。3)两个操作数:此类指令是ALU运算指令。4)四个源操作数:GetRnd4Bits指令。5)八个源操作数:分为两种,一种是目的寄存器不确定的GetRndBits和GetFixBits指令。一种是优先级编码跳转(或移动)指令Jmul和MovMul,目的寄存器确定为优先级编码寄存器。转发微引擎没有设计专门的Load/Store指令来完成网络处理器微引擎与存储器之间的数据传送,而是分别设计Get完成存储器到微引擎寄存器的移动,Mov指令完成微引擎寄存器之间移动,Put指令完成微引擎寄存器到输出存储器的移动,Copy指令完成输入存储器到输出存储器之间的移动。特别地,专门设计GetRndBits、GetFixBits、GetRnd4Bits三条位处理指令,来处理查找微引擎的查找结果。网络处理器的转发微引擎对数据帧的作出转发决定需要涉及到大量的复杂的逻辑与和或运算。Minterm指令预定义了12种逻辑运算,一个时钟周期内可对两个32位数据进行不同的与和或操作并且控制输出不同位宽的运算结果。另外微引擎决定了帧的目的、优先级等,设计SetMaxMin指令可以最多从16个元素的序列中选出最大值或者最小值,并且指出它的序列号。优先级编码模块处理指令Movmul和Jmul。根据输入寄存器的状态,选择8个源操作数中的某一个操作数输出。总之,增加的这些指令对于网络处理中的微引擎对外部数据数据的访问以及数据运算要求非常适用。指令集不仅提供了位操作的专用指令,其指令系统中的运算类指令操作数的长度也是可调的,这样处理起来非常灵活,不必要处理的字节或者位可以不必参与运算,提高了处理的效率和速度(最大可支持64位的操作数移动)。3.1.2 寻址方式寻址方式指的是如何得到指令的操作数地址,RISC指令集有寻址方式少而简单的优点。根据操作数来源的不同,微引擎支持的寻址方式有:1)立即数寻址:操作数在指令中以最多32位立即数形式出现,因此可以直接从指令中获得操作数,主要用于移动指令、ALU指令和一些特殊指令。2)寄存器直接寻址:操作数部分直接给出操作数所在寄存器,又可细分为寄存器指定、字节指定、位指定等,在移动指令、ALU指令指令中经常用到。3)寄存器间接寻址:操作数所在寄存器的序列号来自专门的间接寻址寄存器。4) 基址加偏移量寻址:操作数在存储器中,且存储器地址是某寄存器内容与指令中表示偏移量值的常量之和。在存储器访问指令中计算存储器访问地址时用到。5) PC 相对寻址:地址是 PC 与指令中常量的和值。通常在条件分支指令中计算分支目标地址时用到。3.1.3 寄存器模型转发微引擎的寄存器可分为两类,一类是指令可访问的内部寄存器,包括以下几种类型:1) UREG:用户自定义的16个32位通用寄存器。2) ALU32:1个32位寄存器专用于ALU运算,保存运算结果。3) MAX:2个用于SexMaxMin指令运算。4) MINTERM:2个用于Minterm指令运算。5) ENC_PR:2个用于优先级编码运算。6) SREG:16个不同长度的寄存器用于特殊用途,如间接寻址。7) OUT_IF:16个输出接口寄存器,实现与统计、帧描述等相关的接口功能。8) HREG:8个帧头寄存器用于保存微引擎处理之后的数据帧帧头数据。另一类是指令不可访问的Host寄存器,全部由主机来初始化和配置,见下表3.2。初始值也可以由P1600微码插入然后在加载期间执行。其中MREG初始化命令由host执行,这是在执行指令存储器中的程序之前进行。表3.2 全局Host寄存器地址寄存器名描述读/写0x00INT_REG中断寄存器写0x01-0x04WIDE_LOAD3:0指令装载寄存器写0x08BR_ADDR子程序地址写0x09-0x18MREG15:0ALU掩码寄存器写0x19HOST_CONF学习、排序和信道支持寄存器写0x20-0x27HOST_REG7:0host调试寄存器读0x2CMCODE_BR_INT微码执行或断点命令读0x2DSTATUS_REG状态寄存器读地址寄存器名描述读/写0x2E-0x35PC-REG7:0host PC调试寄存器读0x36MCODE_ERR_REG微码偶校验错误寄存器读3.2 微引擎结构设计3.23.2.1 微引擎结构描述在本文设计的P1600网络处理器转发微引擎为可编程处理器,采用类超标量结构,共有4个RISC核,一个周期可以同时处理多条指令。转发微引擎总体结构如下图3.1。图3.1 转发微引擎总体结构框图微引擎顶层接口描述如下:1) Host主机访问配置Resolve微引擎的Host寄存器。2) Resolve微引擎接收Search1微引擎传送的帧搜索结果(Results)。3) Resolve微引擎向Search1微引擎传送的高级学习(High Learn)信息。4) Resolve微引擎向Search2微引擎传送帧的关键字(Keys)和消息 (Messages)。5) Resolve微引擎向Search2微引擎传送帧流量控制参数。6) Resolve微引擎向Modify微引擎传送帧的信息:控制寄存器、帧的指 针。7) Resolve微引擎访问统计计数(Statistics)模块。8) Resolve微引擎通知网络模块(NETS)中的接收帧描述符模块(RFD)丢弃帧。3.2.2 微引擎功能模块设计微引擎内部主要由指令执行部件和与之相配合的数据寄存器、指令存储器构成。在执行过程中,取指、取操作数、写回运算结果都是在微引擎内部进行,无需访问外部存储设备,因此能够在单周期内以极高的速度执行操作。如图3.2,转发微引擎可分为以下功能模块:指令存储器、输入出入存储器(寄存器)、内部寄存器堆、功能执行单元。图3.2 微引擎内部模块示意图(1) 指令存储器指令存储器使用SRAM,可以存放1536条指令。具有73位的数据读/写总线,11位的地址总线。初始化时Host主机通过配置WIDE_LOAD寄存器,将程序装载到指令存储器中。首先Host写指令数据到WDATA1WDATA3寄存器和写指令地址到WDATA_CMD寄存器,然后信息被写到指令存储器。Host通过PCI接口能够一次性下载超过32位的数据。流水线运行时,每个时钟周期从指令存储器中取出一条指令。(2) 输入输出存储器输入存储器存放搜索微引擎的查找结果,其中RMEM保存由搜索微引擎写入的结果/消息(每帧最多16个),大小为384字节;RMEM对应搜索微引擎的128位数据总线。结果/消息的前16位是控制位,同时将它们写入结果控制(Result control)模块。Get、Copy、GetRndBits、GetFixBits、GetRnd4Bits指令可以从输入存储器中取出源操作数。输出存储器存放转发微引擎作出的一系列决定,供搜索微引擎下一步的查找。192字节的OMEM,每帧可以最多保存8个关键字/消息。Pukey、Copy指令把源操作数写入输出存储器中。输入输出存储器均通过基址加偏移量寻址访问。另外,8个24位寄存器HREG专门用于存放转发微引擎处理之后的关键字/消息的头部信息, PutHdr等指令可以通过字节、位寻址访问HREG。(3) 内部寄存器堆16个32位的通用寄存器UREG可由微码程序员任意的访问使用。可以作为Mov、MovBits、Mov4Bits、Get、ALU 指令、Mintern、SetMaxMin指令的源操作数或目的操作数寄存器。16个不同长度的特殊寄存器SREG主要为微引擎提供存储器和寄存器间接寻址、保存分支跳转地址、工作状态标记、流水线状态标记等功能。可以作为移动指令、ALU指令、Mintern、SetMaxMin等指令的源操作数或目的操作数寄存器。(4)功能执行单元功能执行单元包括逻辑算术运算单元ALU、小项运算单元MINT、序列大小比较单元MAX、优先级编码单元PRI_ENC、移动执行单元MOVE。1)逻辑算术运算单元ALU如图3.3,该执行单元实现指令的And、Xor、Add、Sub、Addc、Subb、Decode、Encode、NumOnes运算。两个源操作数Alu_a31:0与Alu_b31:0由前一级取操作数级产生,ALU执行单元根据4位控制信号Alu_ctrl3:0判断所执行的具体操作;Alu_maskreg15:0提供mask操作所需的值,Alu_mode1:0表明了mask如何控制,0无需mask,1与A操作数进行mask操作,2与B操作数进行mask操作,3与A、B操作数都进行mask操作。最终产生32为计算结果Alu_out31:0和相关标志位信号。同时根据Alu_size2:0产生写回时所需的屏蔽位Alu_mask31:0。图3.3 ALU执行单元原理图2)小项运算单元MINT该模块执行Mintern运算,它包含多个参数且精确到位,用户可选择至多12个预定义的运算。预定义的运算举例如图3.4:图3.4 Minterm运算示意图首先,根据输入Mint_i_p231:0和Mint_invmask_p231:0,每两位相比较:相同输出1,不相同输出0,故可分别得到M0M15。然后,输出依据运算的操作码类型Mint_oper_p23:0不同,一共有十二种预定义的运算,输出结果可为1-16位。其中每一个结果位OUTi都由Mi和MASKi进行与和或运算得到。最后16位结果全部输出到Mint_o_p315:0,同时也输出到DST目的寄存器中,输出到DST的内容受Mint_ctr_p2和SIZE_p2控制。Mint_ctrl=0:SIZE=1时,输出MINT_O.BYTE0到DST;SIZE=2时,输出MINT_O.BYTE0和MINT_O.BYTE1到DST;Mint_ctrl=1:输出MINT_O.BYTE1到DST。3)序列大小比较单元MAX该模块的功能是从一系列任意长度的数中找出最大值或最小值。微码指令的实现形式如下:SetMaxMin SRC,MODE;Mov MAX_I,SRC1,1;Mov MAX_I,SRC2,1;图3.5 MAX运算单元如图3.5,首先,将P2级输入SetMaxMin指令的源操作数A_operand _p231:0写入目的寄存器MAX_I 7:0和MAX_O 7:0。根据Max_index_rst_p2决定是否复位MAX_O_INDEX寄存器的值。若复位,MAX_O_INDEX3:0初始化为0,从0开始计数;不复位,从当前index的值开始计数。根据Max_cmp_sel_p2决定比较最大值还是最小值。其次,每当MAX_I7:0寄存器写入新的值时,发出信号Max_rd_p2通知MAX模块读取,MAX_I7:0和MAX_O7:0进行大小比较。当比较最大值时,若MAX_I不大于MAX_O,不更新MAX_O和MAX_O_INDEX。若MAX_I大于MAX_O,更新MAX_O和MAX_O_INDEX。当比较最小值时,若MAX_I不小于MAX_O,不更新MAX_O和MAX_O_INDEX。若MAX_I小于MAX_O,更新MAX_O和MAX_O_INDEX。 最后,内部寄存器MAX_CNT3:0记录比较数的序列号,每当读取新的MAX_I7:0,计数器加1。每当需要更新MAX_O7:0值,同步输出计数器值到MAX_O_INDEX3:0的值(初始值为0)。4)优先级编码单元PRI_ENC图3.6 PRI_ENC运算单元如图3.6,PRI_ENC优先级编码模块处理指令Movmul和Jmul。根据输入寄存器ENC_PRI7:0的状态,选择8个源操作数中的某一个操作数输出。若ENC_PRI7:0的bit7为1,则选中从左到右的第一个操作数输出;若ENC_PRI7:0的bit7为0而bit6为1,则选中从左到右的第二个操作数,依次类推,即从最高位开始,选第一个1:beginif (ENC_PRO7) Jmul_addr10:0= label7; else if(ENC_PRO6) Jmul_addr10:0= label6; else if(ENC_PRO5) Jmul_addr10:0= label5; else if(ENC_PRO4) Jmul_addr10:0= label4; else if(ENC_PRO3) Jmul_addr10:0= label3; else if(ENC_PRO2) Jmul_addr10:0= label2; else if(ENC_PRO1) Jmul_addr10:0= label1; else if(ENC_PRO0) Jmul_addr10:0= label0;end指令确认信号Mul_valid_p25:0决定PRI_ENC模块执行;Movmul将选中的操作数送到唯一的目的寄存器ENC_PRO7:0;Jmul根据选中的操作数值即跳转地址Jmul_addr_p210:0输出。由信号 Mul_out_sel决定,若为1输出Jmul地址,若为0输出Movmul结果。每当输出后由信号Mul_reset_p2决定是否复位寄存器ENC_PRI7:0相应的判决位,若为1,输出后置相应1为0。5)移动执行单元MOVE实现对Mov、Nop、Get、PutHdr、MovBits、PutHdrBits、GetRnd4Bits、GetFixBits、GetRndBits指令的执行处理。根据源操作数和控制信息进行移动操作,并产生mask位,用于写回时按位写回。3.3 微引擎流水线设计3.33.3.1 流水线结构设计转发微引擎采用4级指令流水线来实现微引擎功能(每一级信号的详细说明见附录中的列表)。如图3.8分别为:1) P0:指令PC值产生;2) P1:取指;3) P2:指令译码、取操作数;4) P3:指令执行、写回;流水线时序如图3.7所示:图3.7 流水线时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行郴州市汝城县2025秋招笔试性格测试题专练及答案
- 农发行荆门市京山市2025秋招笔试英语题专练及答案
- 农发行开封市兰考县2025秋招笔试英语题专练及答案
- 农发行邯郸市馆陶县2025秋招笔试综合模拟题库及答案
- 郴州安仁县中储粮2025秋招笔试题库含答案
- 国家能源杭州市余杭区2025秋招笔试数学运算题专练及答案
- 国家能源北京市西城区2025秋招笔试综合知识题专练及答案
- 国家能源葫芦岛市连山区2025秋招笔试思维策略题专练及答案
- 关于婚礼嘉宾代表的讲话稿
- 中国联通黔东南自治州2025秋招行业解决方案岗位专业追问清单及参考回答
- DG-TJ08-2120-2025 集体土地所有权调查技术标准
- 脑梗死健康宣教及指导
- 遵守安全生产法 当好第一责任人
- 创伤性气胸护理查房
- DB42T 750-2011 家用燃气燃烧器具安装维修服务质量评价规范
- 氧化蜡行业深度研究分析报告(2024-2030版)
- 2025-2030年中国备件制造行业市场现状供需分析及投资评估规划分析研究报告
- 2025至2030中国智能功率模块(IPM)行业项目调研及市场前景预测评估报告
- 社工职工考试题及答案
- 装修装饰-设计方案投标文件(技术方案)
- 网络安全现状
评论
0/150
提交评论