(微电子学与固体电子学专业论文)网络处理器微引擎中寄存器文件设计研究.pdf_第1页
(微电子学与固体电子学专业论文)网络处理器微引擎中寄存器文件设计研究.pdf_第2页
(微电子学与固体电子学专业论文)网络处理器微引擎中寄存器文件设计研究.pdf_第3页
(微电子学与固体电子学专业论文)网络处理器微引擎中寄存器文件设计研究.pdf_第4页
(微电子学与固体电子学专业论文)网络处理器微引擎中寄存器文件设计研究.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

摘要 摘要 因特网网络规模已经按“超摩尔”定律在发展,数据处理量急剧增加,这无 疑对现有网络技术的承载能力是一个极大的挑战,网络处理器以其灵活性和高性 能,为网络发展问题提供了解决方案。 本文以网络处理器相关研究为背景,对网络处理器的核心单元微引擎进行了 研究。阐述了微引擎的结构特点和工作机制等关键技术,尤其重点对微引擎中的 寄存器文件( 包括传输寄存器、通用寄存器和指令存储寄存器) 进行了分析和研 究,给出了相关寄存器文件的设计和验证方案。 论文完成了微引擎中1 2 8 个3 2 b i t 的传输寄存器、1 2 8 个3 2 b i t 的g p r 和 1 0 2 4 * 3 2 b i t 指令存储寄存器的结构分析和各模块的硬件语言描述,并完成了模块 级和系统级的功能仿真,并在d e s i g nc o m p i l e r 中进行综合,给出面积和时序报告, 微引擎总面积为0 3 5 m m 2 ,约占整个微引擎面积的四分之三。最高工作频率可达 到2 5 0 m h z 。最后采用f p g a 验证方案,对设计结果进行了验证。 关键词:网络处理器微引擎传输寄存器通用寄存器f p g a a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fi n t e m e ts c a l e ,i n t e r n e tt e c h n o l o g yi sd e v e l o p i n gb y “s u p e rm o o r e sl a w a n dd a t ap r o c e s s i n gh a sb e e ng r e a t l yi n c r e a s i n g i ti sac h a l l e n g e t ot h ec a p a c i t yo fp r e s e n tn e t w o r k n e t w o r kp r o c e s s o rp r o v i d e se f f e c t i v em e t h o dt ot h e d e v e l o p m e n to ft h en e t w o r k 埘mf l e x i b i l i t ya n dh i 曲e f f i c i e n c y i nt h i st h e s i s ,a n a l y z i n gm i c r o e n g i n ei sb a s e do nt h es t r u c t u r eo fn e t w o r k p r o c e s s o r 砀ef e a t u r e so fs t r u c t u r ea n dk e yt e c h n o l o g i e so fw o r kd i s c i p l i n e sw e r e i n v e s t i g a t e di nt h e o r y , e s p e c i a l l yi na n a l y z i n gt h er e g i s t e r s ,i n c l u d e dt h e t r a n s f e r r e g i s t e r s ,g e n e r a lp r o p o s er e g i s t e r sa n dp r o g r a mi n s t r u c t i o nm e m o r y , i nt h e m i c r o e n g i n e f u r t h e r m o r e ,t h ed e s i g na n dv e r i f i c a t i o nt ot h er e g i s t e r sw e r ep u tf o r w a r d , a l s o i nt h et h e s i s ,t h ew h o l es t r u c t u r a ld e s i g na n dh a r d w a r el a n g u a g ed e s c r i p t i o no f 1 2 8 奎3 2 b i t st r a n s f e rr e g i s t e r s ,1 2 8 幸3 2 b i t sg e n e r a lp r o p o s er e g i s t e r sa n d1 0 2 4 3 2 b i t s p r o g r a mi n s t r u c t i o nm e m o r yw e r ed o n e t h ed e s i g nw a ss y n t h e s i z e di nd e s i g n c o m p i l e rf o ra r e ar e p o r ta n dt i m i n gr e p o r t 1 1 1 ea r e ao fm i c r o e n g i n ei s0 3 51 1 1 1 1 1 2 , w h i c hi st h r e eq u a r t e r s t h ek 曲e s tf r e q u e n c yo fm i r c o e n g i n ei s2 5 0 m h z mf p g a v e r i f i c a t i o nw a sf o r t h ed e s i g nf r o ms o m ev e r i f i c a t i o nt h e o r i e s k e y w o r d : n e t w o r kp r o c e s s o r m i c r o e n g i n e t r a n s f e rr e g i s t e r s g e n e r a lp u r p o s e r e g i s t e r s f p g a 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处, 本人签名:触 本人承担一切的法律责任。 日期迹! :竺 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再攥写的文章一律署名单位为西安电子科技大学。 ( 保密的论文在解密后遵守此规定) 日期生垒! 兰:丝 日期望 ! ! 至! ! ! 第一章绪论 第一章绪论弟一早殖了匕 呈爆炸性增长的因特网给我们的生活带来了越来越多的便捷,因特网已经逐 渐成为生活的必需品,但挑战也同时出现,随着硬件成本和网络服务费用的降低, 以及人们对带宽和服务复杂性要求的提高,因特网网络规模呈指数级增长,这种 按“超摩尔 定律发展的规模对现有网络技术的承载能力来说是一场浩劫。因此, 现场可编程门阵列f p g a ( f i e l dp r o g r a m m a b l eg a t ea r r a y s ) 来实现较低层处理, 通过通用处理器g p p ( g e n e r a lp u r p o s ep r o c e s s o r s ) 来实现高层处理的传统网络应 用,都已经无法满足网络处理的各种要求【l 】。在这种情况下,网络处理器( n e t w o r k p r o c e s s o r ) 应运而生,为下一代网络产品的设计提供了灵活和高性能的解决方案。 1 1 网络处理器结构及特点 网络处理器( n e t w o r kp r o c e s s o r ,n p ) 是为网络应用领域设计的专用指令处 理器a s i p ( a p p l i c a t i o ns p e c i f i ci n s t r u c t i o np r o c e s s o r ) ,a s i p 具有自己的结构特征 和专门的电路设计以适于网络分组处理,同时它又是一块软件可编程的芯片。具 体定义为:n p 是具有软件可编程能力,对分组处理流程优化以满足线速处理要 求,并且可以接管很多原来主c p u 完成的控制与管理功能的i c l 2 i 。 通常,网络处理器包括如下功能模块,如图1 1 所示: 1 s t r o n g a r m 核。s t r o n g a r m 核都是3 2 b i t 的r i s c 处理器,兼容当前应用 于网络设备、p d a 、掌上电脑和移动电话的s t r o n g a r m 处理器,具有高性能、低 功耗和紧凑设计,可与其他专用的可执行单元集成在同一个芯片中。 2 微引擎( m i c r o e n g i n e s ,m e ) 。每一个微引擎可以独立地实现数据的处理 和转发,每一个微引擎又拥有4 个独立程序计数器( p r o g r a mc o u n t e r ) ,零开销的 上下文切换和硬件信号量机制确保了每一个微引擎都能得到充分利用。 3 f b i 单元和总线。f b i 单元主要为总线的快速外设,如m a c 层设 备提供服务。包括发送和接受f i f o 单元、本地寄存器、s c r a t c h p a dr a m 和哈希 单元。总线向外提供一个简单、高效的接口,可以配置成6 4 b i t 的单向模式或 者3 2 b i t 的双向模式。 4 s d r a m 和s r a m 单元。s d r m a 单元主要用于提供慢速的存储功能,主 要用于高带宽、批量数据的存储。s r a m 单元提供快速存储功能,为存储查找表 提供高带宽以及存储微引擎处理数据包时所用到的数据。 5 p c i 单元。p c i 单元提供一个标准的p c i 总线接口。 网络处理器微引荤中寄存器文件醅汁研究 幽il 网络处理器功能网 通过网络处理器的定义和结构体系中包含的功能模块,现代网络处理器有以 下儿个主要特点例: 1 可编程性:执行一个任务处理程序时,并行处理、多线程之间调度、延时 隐藏都很重要。这是程序要解决的问厢,也是决定n p 系统性能的关键。删络处 理器的本质在于其可编程性,从而增强其灵活性。 2 并行处理:网络处理器能够实现不同级别的并行处理通过硬件线程实现 线程级的并行通过流水线实现指令级的并行,通过片内处理器结构实现处理器 级的并行。 3 可扩展性:网络处理器的可扩展性同样包括硬件可扩展性和服务可扩展性。 前者指网络处理器除了可以用来研制小型设备,还可以通过交换机构的连接研制 大型设备。后者是指可以在对原有软件结构做很小改动的基础上加入新的服务和 功能, 4 操作系统:主要采用嵌入式操作系统,如l i n u x 等。很多n p 在数据平面 处理单元里甚至不运行o s 。操作系统对控制平面单元是必需的如存储器管理 和有限的i o 管理就要用o s 完成忆 5 模块化设计:网络处理器体系结构的模块化也包含不同的层次,硬件层面 和软件层面的模块化。通过摸块化设计力图在保持高性能的基础上获得很好的可 扩展性和灵活性,并能使设备厂商容易研发不同性能和不同特性的设备。 6 高速数据处理:网络处理器需要具有线速处理能力,它的硬件结构为此提 供了保证。 第一章绪论 在以上网络处理器的主要性能中可以看到网络处理器的应用是十分灵活和广 泛的。它可以用于开发从第二层到第七层的各种网络服务和应用。例如:在l a n 企业网中,网络处理器主要应用在入侵监测、数据加密、i n t r a n e t 防火墙等安全控 制和网络服务上的各种管理策略。而在广域边缘接入网络中,网络处理器主要支 持多种新型业务和多种网络接入,并进行质量控制。 1 2 网络处理器的发展及面临问题 网络设备的核心处理部件随着应用需求的变化大致经历了2 次飞跃式发展: 第一次飞跃:从c p u 到a s i c 。在网络传输速率较低的网络发展初期,网络 研究集中在完善网络协议和构建服务体系结构上。这个时代的设备主要是基于在 c p u 上运行相关软件来实现各种功能。这种网络设备灵活性高,具有可通过更新 软件方便完善原有功能或加入新功能的优点。但是却存在处理速度慢,吞吐率低 的缺点。所以,在各种传输技术的进步导致网络带宽的增长超过了c p u 的处理能 力时,基于软件的节点设备则逐渐成为了网络的瓶颈。在这种情况下,a s i c 技 术成为网络设备的核心技术。它通过把指令或计算逻辑固化到硬件中,从而获得 了较高的处理速度,满足网络设备对性能的要求。但与此同时,指令一旦固化到 硬件中就很难修改或增加新的功能【2 】。另外,a s i c 设计和制造需要时间长,成本 高,很难把握市场。基于灵活性不够,a s i c 技术也很难满足网络发展的需求。 第二次飞跃:从a s i c 到n p 。在对网络设备高性能,高灵活性的需求,c p u 和a s i c 技术都无法满足的情况下n p 应运而生。n p 具有专门的指令集和配套的 软件开发系统,通过良好的体系结构和专门针对网络处理优化的部件,为上层提 供了一个可编程的环境,因此,其研制周期短,成本低,市场存活时间长,很好 的解决硬件加速和软件扩展的折衷问题。这正是n p 被认为是影响未来网络发展 的三大关键技术之一( n p 、a s i c 、c o m p a c tp c i ) 的主要原因。 目前,对与网络处理器设计中面临如下需要解决的问题 2 1 : 1 网络处理器应提供基本的数据转发功能。基本的数据转发功能粗略的归并 为两类:分类与执行。分类是网络处理器检查数据并确定如何进行处理和转发的 过程。执行是网络处理器按分类结果完成转发的过程。在这一点上,要求真正的 可编程分类,网络处理器应具备几种数据通信功能。 2 网络处理器应保持线速度。由于网络处理器在快速通路中工作,让它们较 少地引入时延以保持线速度是十分重要的。线速度定义为数据流过快速通路的速 率。 3 网络处理器应既能简单的编程,又能深层次地编程。某些网络处理器编程 能力有限,很难与可配置器件区分开来。另一些网络处理器编程能力较强,但实 4 网络处理器微引擎中寄存器文件设计研究 现和微调新应用的工作既复杂又费时,致使器件经常用于调度偏差和维护。为了 提供可行的解决方案,网络处理器应既能简单的编程,又能深层次编程。 4 网络处理器应能随时间扩容。网络处理器的初期投入在于软件,包括快速 通路代码和管理代码。每当达到一个新的速度等级,就会加重设计人员的负担, 即在不断研发新版本的同时,保持原有的软件版本。这就要求网络处理器具有新 的体系结构和编程方式。为了避免这种情况,网络处理器应能随时间扩容。更具 体的说,一种系列网络处理器的吞吐量应随时间扩容一个或更多数量级,同时, 最大限度的保持原有的编程界面,支持原有的高速通路软件。 1 3 国内外发展现状及课题来源 随着网络应用的数据码率呈指数性增长,主干路的处理线速已经达到2 5 g b p s 到1 0 g b p s ,并且很快将到4 0 g b p s 。当今网络正在向n g n ( n e x tg e n e r a t i o n n e t w o r k ) 的方向发展。围绕着网络处理器应用的展开,相关研究得到了飞速发展, 各国的企业和学校都给予了足够的重视。 国外情况,思科核心网络处理器c i s c os i l i c o np a c k e tp r o c e s s o r ( s s p ) ,集成 的晶体管数达到1 8 5 亿只,由1 8 8 个3 2 位r i s c 核心整合至一个1 0 0 可编程的 芯片,支持每端1 2 14 0 g b p s 的流量速度。英国电信和中国电信都应用其实现m 网 络转型。2 0 0 8 年3 月,思科发布了c i s c oq u a n t u m f l o w 网络处理器,单芯片整合 4 0 核心,晶体管达到8 亿只,最多可同时处理1 6 0 个程序,远超过上一代s s p p j 。 2 0 0 8 年5 月,德州仪器i 仪表( t i ) 宣布推出最新z a c c e l 系列2 4 g h zz i g b e e 认证网络处理器中的首款产品一c 2 4 8 0 。该网络处理器提供了完整的z i g b e e 功能,无需全面了解繁琐的全功能z i g b e e 协议栈,从而尽可能减少了开发工作量, 并简化了z i g b e e 功能与各种应用的集成工作,如家庭与楼宇自动化,以及工业监 控等。此外,该器件还为客户提供了可与各种主机m c u 协同工作的高灵活性【5 j 。 2 0 0 9 年6 月,n e t r o n o m e 公司宣布推出n f p 3 2 x x 系列网络流( n e t w o r kf l o w ) 处理器。n f p 系列网络流处理器由4 0 个运行在1 4 g h z 、处理速度达5 6 0 亿指令 秒的多线程可编程网络内核和3 2 0 个硬件线程组成,使l 2 1 7 深度包处理速度达 2 0 g b p s ,可实现数百万路同步网络流的线速安全和i o 虚拟化。 该器件功率为 1 5 3 5 w ,较其性能非常接近的同类产品功率效率提高了4 倍以上。可以后向兼容 英特尔i x p 2 8 x x 网络处理器,目前,n f p 正在制样中,预期将在今年第三季度 全面上市 6 1 。 而在2 0 0 9 年7 月,n e t l o g i cm i c r o s y s t e m s 成功将多样生产线移植至台积电公 司( t s m c ) 先进4 0 纳米工艺生产,推出n e t l o g i cm i c r o s y s t e m s 下一代先进的 k n o w l e d g e b a s e d 网络处理器及1 0 4 0 1 0 0g i g a b i t 实体层解决方案,具备高效、低 第一章绪论 功耗的功能,促成下一代网络、无线通讯、资料中心、资料安全及储存应用的发 剧6 1 。 i n t e l 公司专门投资支持全球1 0 0 所大学进行相关研究,i n t e li x p 2 8 5 0 中第二 代微引擎的时钟频率已达到1 4 g h z 。 国内众多高校、企业及一些研究所都对网络处理器进行了研究开发,国产芯 片接连问世。2 0 0 5 年4 月发布的龙芯2 号处理器,与m i p s 兼容,最高频率达到 了5 0 0 m h z ,其s p e cc p u 2 0 0 0 测试程序的实测性能是1 3 g h z 的威盛处理器的 2 3 倍,已达到p e n t i u mi i 的水平,能够运行完整的6 4 位l i n u x 操作系统和 x w i n d o w 视窗系统。北大众志采用的也是自主定义的u n i c o r e 指令系统体系结 构,主频最高达到3 0 0 m h z l 7 1 。国内目前技术水平与国际最先进的技术还有一定 差距,赶超世界先进水平,正是我们研究此课题的目的和意义所在。 本课题来自国家重点科研项目:西安电子科技大学微电子学院集成电路人才 培养基地研究的一款具有自主知识产权的网络处理器的子课题。本文主要是对网 络处理器微引擎中寄存器文件完成设计,验证和研究。 1 4 论文结构安排 本论文的主要工作是:研究网络处理器中核心处理单元微引擎中寄存器文件 的设计和验证。本论文结构和章节安排如下: 第一章为绪论,在对网络处理器的概念和特点进行阐述的基础上,介绍了网 络处理器的发展过程和国内外发展情况。 第二章为微引擎结构特性的研究,着重研究了微引擎各个模块的结构特点和 功能特性,如微码存储区,数据通道寄存器,硬件多线程和微引擎的工作机制。 第三章对微引擎中的寄存器文件( 包括传输寄存器,通用寄存器和指令存储 单元) 进行代码设计,仿真,并且分析了经典电路结构。在d e s i g nc o m p i l e r 对微 引擎设计进行综合,给出时序报告和面积报告。 第四章为微引擎中寄存器文件的验证。通过验证优选,阐述本文采用的f p g a 验证方案。将所设计的模块进行f p g a 固有单元替换,并给出在f p g a 中的资源 利用率报告和性能报告。 第五章为结束语,总结全文研究成果。 第二章 网络处理器微引擎的研究 7 第二章网络处理器微引擎的研究 2 1 网络处理器中微引擎分析 在网络数据处理系统中,通常采用多个处理器通过共享总线访问其他电路单 元的体系结构。这样可以把复杂的任务分解为多个子任务来处理,使得整个系统 的吞吐率和实时性大为提高。本文研究的网络处理器包含6 个结构相同且并行工 作的微引擎,分布式的数据存储结构可以保证6 个微引擎之间高效快速的处理数 捌8 1 。 该微引擎均为3 2 位可编程r i s c 处理器,微引擎可以独立地实现数据处理和 转发,且每一个微引擎拥有4 个独立的程序计数器,零开销的上下文切换和硬件 信号量机制确保了每一个微引擎都能得到充分利用。每个微引擎都有各自独立的 控制存储器和局部存储器,访问外部资源( s p , j u m ,s d 洲,d ( b u s 等) 的机 会均等,提供大于两倍的外部带宽的内部总线带宽。如图2 1 所示。 微引擎 微引擎 徽引擎 微引擎 微引擎 徽引擎 6 4 位6 6 m h z i x 总线接口 s d r a m 控制鬻)(s r a m 控制裔 4 g b p s p a c k e t i x 总线 6 4 0 m b p 。广j 广- s r a m 搬8 3 m h z l 1l 3 2 位 s 嗽腿线悟馑叫6 4 位1墼堡j 图2 1 同构多核的微引擎框架卧9 】 尾音擎是网络处理器中用于处理入口和出口协议的可编程包处理器,是n p 的底层设备1 0 1 。它不提供任何算术运算的本机硬件指令,也没有直接内存访问的 寻址模式。相反,运行在微引擎上的程序控制和使用芯片上的功能部件访问存储 器和执行操作。 8 网络处理器微引擎中寄存器文件设计研究 2 2 微引擎处理器模块单元 微引擎与通常意义上的微处理器特性不同,特别适合应用于网络通信。其工 作频率与网络处理器的频率相同,每条指令的执行时间为一个时钟周期。每个微 引擎支持4 个线程,拥有1 k 字节可编程的指令存储区,并且分别拥有1 2 8 个3 2 b i t 的通用寄存器和传输寄存器和功能强大的逻辑运算单元和( a l u ) 和移位器 ( s h i f t e r ) 。微引擎总体结构如图2 2 所示。 到s r a m ,f b i 单元 璺翌竺尘! 业! ! 塑 s d r a m _ p u l l 3 1 :o l s d r a m _ p u s h 3 1 :0 1 v o i u n t a r y s 叫1 _ e v e n tl s e q # le v e n ti p c ie v e n t i s t a r tr ce v e n t a u t o p u s he v e n t i n t e rt h de v e n tl f “e v e n t r _ 一 s d r a me v e m l jsr亟一虱event 来自各个 徽引擎 总线 请求 输入 s r 单元 - - - + 命令 d r 啊单元 队列 - - - + 全部总线 p c i 单元 - - - - - - - 状态授权 f 目单元 输入输出 2 2 1 微代码存储区 到各 个徽 引擎 命令f i f o 徽引覃控制器 其他本地i 璺璺垦il 单元事件 信号事件fl 竺塾墨j 彩- - i 夕 器( 每单口h 兀ji b i t 设置 逻辑 6 4 a 边带l1 6 4 b - 均 g p rg p r 控制部分 1 0 2 4 3 2 指令 徽引擎( s - l 中的1 个) 图2 2 微引擎的框图结构 1 微代码存储( r a 胍) 微引擎是完全可编程的,每个微引擎有独立的微代码程序存储区,4 个线程 的代码共享这个存储区。存储区的空间为1 0 2 4 * 3 2 b i t ,最多支持1 k 条微码指令, 用于存放四个线程执行的程序代码。在系统初始化时由s t r o n ga r m 核将微码程 序写入微代码程序存储区 ( c o n t r o ls t o r e ) 。由于微代码程序存储区属于微引擎 第二章网络处理器微引擎的研究 9 内部存储资源,所以可以单周期对其中的程序指令进行存取,提高微引擎的指令 执行速度,进而提高微引擎的处理性能。 c o n t r o ls t o r e 中的程序在被写入前,s t r o n ga r m 核先在u s t o r ea d d r e s s 寄存器中写入程序在c o n t r o ls t o r e 中的存储地址,写完地址后将一段程序读入 u s t o r ed a t a 寄存器中,最后再将u s t o r ed a t a 中的程序载入c o n t r o ls t o r e 指定的地址处,并将u s t o r ea d d r e s s 中的地址递增。如此循环往复,直到程 序装载完毕为止。 2 数据通路寄存器 数据通道寄存器是微引擎中数据流通的存储区,可以用作微引擎执行数据通 道的源地址寄存器( s o u r c er e g ) 和目标地址寄存器( d e s tr e g ) 。数据通道寄存 器主要包括以下部分: 1 ) 通用寄存器( g e n e r a lp u r p o s er e g i s t e r s ,g p r ) 每个网络数据处理器支持1 2 8 个3 2 b i t 的g p r 。g p r 可以用相对寻址和绝对 寻址方式访问。相对寻址在网络数据处理器的4 个线程间分配g p r ,每个线程拥 有自己专用的一组g p r ( 最多3 2 个) ,线程不能访问其他线程相对寻址方式的 g p r ;绝对寻址使一个g p r 在网络数据处理器的4 个线程问共享,线程间可以通 过绝对寻址方式用g p r 传递信息。 2 ) 传输寄存器 微引擎与其他单元交换数据要通过传输寄存器完成。每个网络数据处理器支 持1 2 8 个3 2 b i t 的传输寄存器。传输寄存器分为3 2 个s r a m 读,3 2 个s r a m 写, 3 2 个s d r a m 读和3 2 个s d r a m 写传输寄存器,每种传输寄存器通过专用的3 2 b i t 数据总线连接网络处理器中其他的功能单元。s d r a m 传输寄存器在s d r a m 和 微引擎之间传递数据,s r a m 传输寄存器在s r a m 单元或f b i 单元和微引擎之间 传递数据。 传输寄存器的寻址也有相对寻址和绝对寻址两种方式。相对寻址方式在网络 数据处理器的4 个线程问分配传输寄存器,每个线程拥有自己专用的传输寄存器 ( 8 个s r a m 读,8 个s r a m 写,8 个s d r a m 读,8 个s d r a m 写) ;绝对寻址 方式使传输寄存器在网络数据处理器的线程间共享。 2 2 2 逻辑单元和移位器 1 逻辑单元( a l u ) 微引擎的逻辑运算单元( a l u ) 和移位器( s h i f t e r ) 功能强大,可以在一个 时钟周期内完成a l u 和移位的操作。a l u 单元有两个输入( a 和b ) ,输入的数 据来自s r a m f b i 读传输寄存器,s d r a m 读传输寄存器,g p r 或者指令中的立 1 0 网络处理器微引擎中寄存器文件设计研究 即数。a l u 可以实现加减法操作和逻辑操作,并根据操作结果产生符号( s i g n ) , 零指示( z e r o ) ,进位( c a r r yo u t ) 等条件码。表2 1 列出了a l u 支持的操作【2 l : 表2 1a l u 的操作列表 a l u 操作描述 b b 操作数( a 操作数被忽略) b b 操作数取反( a 操作数被忽略) + a 操作数+ b 操作数 + c a r r ya 操作数+ b 操作数+ 前一次的进位( 进位= 前一次的借位) + 4 a 操作数+ b 操作数截短,剩下意义最小的4 位( 前7 个n i d d l e 置0 ) + 8 a 操作数卜b 操作数截短,剩下意义最小的8 位( 前3 个b y t e 置0 ) + 1 6 a 操作数+ b 操作数截短,剩下意义最小的1 6 位( 前2 个b y t e 置0 ) a b a 操作数b 操作数 b a b 操作数_ a 操作数 a n d a 操作数和b 操作数相与 - a n d a 操作数取反后和b 操作数相与 a n d a 操作数和取反后的b 操作数相与 o r a 操作数和b 操作数相或 x o r a 操作数和b 操作数异或 如果s i g n 状态码被设置,a 操作数+ b 操作数 i f s i g n 【状态码未被设置,结果即为b 操作数 在a l u 或a l u j h f 指令中使用i f s i g n 时,状态码是在紧跟着当前指令中 被设置。 与之相反在分支指令中状态码是在当前指令的前一条指令中被设置。 2 移位器( s h i f t e r ) a l u 的b 输入支持6 4 b i t 的大移位器。该移位器是桶形移位器,桶形移位器 的最大优点是信号最多只需通过一个传输门。也就是说,传播延时在理论上与移 位器的位数或移位器的规模无关。它将3 2 b i t 的输入右移3 2 位,对a l u 产生3 2 b i t 的输出。右移操作是将移位操作数放置到6 4 b i t 移位器的低3 2 b i t ,在高3 2 b i t 填充 o ,然后对6 4 b i t 移位指令中指示的位数,移位结果取6 4 位中的低3 2 b i t 。右循环 移位操作基本和右移操作相同,只是移位操作数同时放置在6 4 为的高3 2 b i t 和低 3 2 b i t 。 左移操作是将0 放置在6 4 位中的低3 2 b i t ,移位操作数放置在高3 2 b i t ,然后 做右移操作,向右移位的位数是3 2 减去指令中给出移位的数目,移位操作的结果 第二章网络处理器微引擎的研究 取6 4 位中的低3 2 b i t 。如图2 3 所示: 运 6 3 3 23 1 0 右移位= 置零位 右移位:移位操作数值 循环右移= 循环操作数值循环右移:循环操作数值 左移位= 移位操作数值左移位= 置零位 图2 3 微引擎移位和循环移位操作 5 命令总线仲裁 微引擎通过命令总线向其他功能单元( s r a m ,s d r a m ,f b i ,p c i ) 发出命 令,6 个微引擎共享命令总线。在任一时刻,挂接在命令总线上的6 个微引擎都 有可能访问总线,总线上的一个微引擎欲通过总线访问外部接口,先要发出请求 信号,总线仲裁器对该微引擎输出,使其总线占用成立。当微引擎的线程执行一 条命令指令时,命令存放于微引擎中占两个条目的命令f i f o 中,仲裁器仲裁在6 个微引擎,以确定哪个命令f i f o 中的指令可以送到共享命令总线上。 当有多个微引擎访问总线占用同一个外部接口时,总线仲裁器根据微引擎的 轮询规则逐一授权占用总线,每个授权信号只占用一个时钟周期,且相邻授权信 号没有时钟间隔;当有多个设备访问总线占用不同外部接口时,仲裁器会根据预 先设置的设备优先级顺序来授权,且授权信号也是占用一个时钟周期的时间【1 l 】。 2 3 微引擎处理器工作机制 2 3 1 执行状态 微引擎有四个执行状态,图2 4 显示了微引擎的执行状态和状态间的转移。 1 2 网络处理器微引擎中寄存器文件设计研究 图2 4 微引擎执行状态间的转移 1 复位状态 当系统复位时,所有的微引擎都自动的处于复位状态,s t r o n g a r m 核和p c i 模块可以通过修改寄存器n p r e s e t 单独复位任意一个微引擎。当微引擎处于复 位状态时,具有下列特征t 1 ) 微引擎不执行微码指令; 2 ) 命令f i f o 被清空; 3 ) 本地c s r 的某些比特置于复位状态,某些比特的值不确定; 4 ) 微码存储区,g p r ,传输寄存器的值不确定。 2 停止状态 微引擎离开复位状态后,就进入停止状态。微引擎的状态与复位时相同,但 是s t r o n g a r m 可以对本地c s r 和微码存储区编程,也可以读写g p r 和传输寄存 器。由于复位状态禁止了4 个进程的运行( 通过c t x e n a b l e s 寄存器清零) , 因此在停止状态微引擎也不执行任何微码指令。 3 运行状态 当微引擎不处于复位状态,并且它的一个或者多个进程被使能时( 通过使能 c t x e n a b l e s 寄存器) ,微引擎就进入运行状态。s t r o n g a r m 核可以使微引擎 从停止状态或者暂停状态进入运行状态1 2 1 。 在s t r o n g a r m 核使微引擎从停止状态进入运行状态之前,必须先初始化本地 c s r ,并对微码存储区编程【1 1 。下面列出了微引擎从复位状态进入运行状态的基 本操作: 1 ) 对微码存储区编程; 2 ) 置位a c t i v e c t x s t s 寄存器中相应的线程号,激活初始运行的线程 ( 通常是线程0 ) ; 3 ) 置位c t x a r b c n t l 寄存器中下一个线程号,允许下一个线程运行( 通 常是线程1 ) ; 第二章网络处理器微引擎的研究 4 ) 置位c t x e n a b l e s 寄存器,允许需要线程开始运行 当s t r o n g a r m 核使微引擎从暂停状态进入运行状态时,微引擎的本地c s r 、 微码存储区、g p r 和传输寄存器都应处于确定的状态,通过设置c t x e n a b l e 寄存器使能相应的线程,即可使微引擎进入运行状态。 4 暂停状态 当微引擎处于运行状态时,通过c t x e n a b l e 寄存器禁止所有线程运行, 微引擎就进入暂停状态【4 】。微引擎中正在执行的线程还会继续运行,直到执行一 条线程切换的指令为止。由于禁止了所有的线程,微引擎停止运行,所有本地 c s r 、微码存储区、g p r 和传输寄存器的状态都保留下来。当s t r o n g a r m 核禁 止所有线程后,通过查询a c t i v e c t x s t s 寄存器,可以确定微引擎何时进行 线程切换并且进入暂停状态。 s t r o n g a r m 核或微引擎自己都可以将微引擎置于暂停状态,但是微引擎不能 将其他微引擎置于暂停状态。微引擎利用l o c a l c s r - w r 指令来设置c t x e n a b l e s 寄存器,可以使微引擎自身进入暂停状态。s t r o n g a r m 核通过使能 c t x e n a b l e s 寄存器使微引擎离开暂停状态。 当微引擎处于暂停状态时,本地c s r 记录了上一个线程、当前线程和下一个 线程。当前激活线程处于暂停状态,上一个线程是指在激活线程前运行的线程, 下一个线程是指激活线程后将运行的线程。a c t i v e a r b c n t l 寄存器和 a c t i v e c t x s t s 寄存器指示了这些线程。 2 3 2 流水线 所谓流水线设计实际上是把规模较大、层次较多的组合逻辑电路分成几个级, 在每一级插入寄存器组并暂存中间数据。k 级的流水线就是从组合逻辑的输入到 输出恰好有k 个寄存器组,上一级的输出是下一级的输入而又无反馈的电路。流 水线设计的优势就是它可以提高吞吐型1 3 】。 在传统的控制器中,指令的执行方式为串行执行,控制器执行指令速度慢, 功能部件利用率低。为了提高指令的执行速度和控制器各部件的利用率,指令的 执行过程可以采用流水线装配形式。本文研究的微引擎执行数据通道就采用了指 令流水线技术,将指令执行过程分为5 级流水线:取指令、指令译码、取操作数、 指令运算、写运算结果【l 引。流水线操作指令在若干个执行子部件中实现,而每个 执行子部件执行的只是整条指令中的某一部分操作。流水线的若干个执行子部件 按照指令执行的先后各自完成自己的操作,整条指令的流水线操作也就完成了, 表2 2 列出了微码流水线的5 个操作步骤。 1 4 网络处理器微引擎中寄存器文件设计研究 表2 2 微码流水线操作步骤 流水线阶段描述 p 0 读取指令 p 1 指令译码,源寄存器地址格式 p 2 从源寄存器读取操作数 p 3 执行a l u ,移位比较操作,产生条件码 p 4 将结果写入目的寄存器 只要流水线有指令执行,每条微码指令都会在一个时钟周期内完成。当某些 指令,例如分支、跳转和进程切换引起程序转移时,流水线上某写指令会被丢弃, 从而降低了微引擎的执行效率,为此微引擎的指令流水线设计中提供一条专用通 路,使得p 2 的操作数能够被p 3 中指令修改,从而避免某些流水线的停顿现象。 同时,为了减少或者消除丢弃指令而浪费的指令周期,微引擎提供了3 种机制, 分别是:延迟分支( d e f e r r e db r a n c h e s ) 、提前设置条件码( s e t t i n gc o n d i t i o nc o d e s e a r l i e r ) 和分支预测( b r a n c hg u e s s i n g ) ,从而提高微引擎的执行效率。 2 3 3 线程切换和信号事件 微引擎采用多线程运行方式,每个微引擎运行4 个独立的线程。在任一时刻, 微引擎上只能运行其中一个线程,4 个线程之间通过线程切换( s w i t c hc o n t e x t ) 来分配微引擎的运行时间。当其中某个线程不运行时,它的运行状态可以通过独 立的程序指针,信号事件状态及相关的寄存器,包括g p r 和传输寄存器,在硬件 中保留下来。 为了达到微引擎的最优性能,应在程序适当的位置进行线程切换。微引擎中 的每个线程都有其自己的线程标识。当一个微引擎线程发出了申请命令之后,接 收的功能单元识别到哪个线程发出了这个命令,以后就可以反过来送一个完成的 信号给该线程。这样,微引擎中的多个线程都可以发出命令申请,返回的信号可 以分别送给相应的线程。所有这些都是由硬件来完成的。也就是说,当一个微引 擎线程等待数据时,或者一些操作即将完成时,另一个将线程允许执行和完成一 些有用的工作。这样就提高了微引擎的工作效率。如图2 5 所示: 第二章网络处理器微引擎的研究 1 5 :- - - 搠n o - _ - il i 二攀一j 二二贼二二二: :留i 。程g j l - 嘴黔1 _ 一百霾蔬磊运j !令,然后切换! “1 2 。5 8 1 盛程! 二i i i i i i 一 ! 毫隐d 潲蕊丽罨_ 一i 艘婴 二鎏麴:二二:兰二二二竺竺竺二二二_ j 【三甄: 图2 5 线程切换 线程在接收到信号之后并不是立即被唤醒。信号机制与中断机制不同,信号 不会抢占一个正在执行状态下的线程。线程的切换只发生在当一个线程启动线程 切换主动放弃控制时。线程在接收到信号之后只是使得这个线程能够被唤醒。 微引擎的结构不要求微引擎线程必选等待外围设备完成指令的指示。在发出 对外设的命令之后,微引擎可以通过线程切换进入休眠状态,也可以继续执行。 当某个线程进入休眠状态时,线程切换使另一个线程开始运行,线程切换依靠仲 裁逻辑判断允许哪个线程进入运行状态,线程切换的时间最多为一个时钟周期。 仲裁器根据其他功能单元的信号或事件( e v e n t ) 做出判断。这样可以执行独立于 命令执行结果的指令以提高微引擎的处理吞吐量。 微引擎的c o n t e x t 切换指令有两种形式:1 :c t xa r b ( s i g n a le v e n t ) 程切 换指令;2 :加c t xs w a p 参数的s d r a m 指令。c t xa r b 使用所有的信号事 件,外加两个参数:v o l u n t a r y 和k i l l 。v o l u n t a r y 参数就是当其他三个c t x 准备 好,则可以自愿的让其他三个线程执行程序,而不必等待信号事件;k i l l 参数指 出应该发生环境切换,并且这个线程不应该被唤醒,且不允许被运行。这一参数 将清除c t xe n a b l e 寄存器【2 j 中的使能位。如果要从k i l l 状态转换出来,需要 s t r o n g a r m 对该寄存器中的使能位置位。信号事件可以分成两种类型:显式请求 和非自愿提供。当信号事件被处理完成后,信号位会被自动清除。 为了通过多线程方式提高性能,微引擎采用引用( r e f e r e n c e ) 的方式进行存 储器寻址。在访问外部存储器的数据时,微引擎执行一条引用命令,但不必等待 数据的返回,而是通过微引擎上的其他线程运行来利用这段时间。所以必须提供 一种机制使得微引擎获知引用命令完成的时间。这种机制就是信号机制。信号是 使得微引擎线程获得事件信息的方法。它不仅用于表示访存命令的完成,还可以 1 6 网络处理器微引擎中寄存器文件设计研究 用于处理微引擎间以及线程间的通信。信号不是抢占性的,它只是告诉线程有一 个事件的发生,或者使等待信号的线程能够

温馨提示

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

评论

0/150

提交评论