(微电子学与固体电子学专业论文)基于fpga平台的多核片上系统关键技术研究.pdf_第1页
(微电子学与固体电子学专业论文)基于fpga平台的多核片上系统关键技术研究.pdf_第2页
(微电子学与固体电子学专业论文)基于fpga平台的多核片上系统关键技术研究.pdf_第3页
(微电子学与固体电子学专业论文)基于fpga平台的多核片上系统关键技术研究.pdf_第4页
(微电子学与固体电子学专业论文)基于fpga平台的多核片上系统关键技术研究.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(微电子学与固体电子学专业论文)基于fpga平台的多核片上系统关键技术研究.pdf.pdf 免费下载

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

文档简介

摘要 摘要 随着互联网的高速发展和微电子技术的不断进步,相应网络设备的研制开发 也取得了巨大的进展,两者之间相互促进。为了实现对网络数据的快速处理,作 为现代网络系统核心设备的网络处理器广泛采用m p s o c ( 多核片上系统) 结构。 然而由于m p s o c 内部集成了众多的硬件模块、复杂的固件软件,给网络处理器的 功能验证提出了较大的挑战。为了缩短验证时间,基于f p g a 的快速原型验证 ( r a p i ds y s t e mp r o t o t y p e ) 成了设计流程的重要验证手段。 本文重点研究了x d n p 数据平面的软硬件系统集成,及其在x i l i n x v t r t e x 4 l x l 6 0f p g a 上具体的实现和优化技术:通过对a s i c 代码的替换,实现了 x d n p 在f p g a 上的成功移植;基于网络性能的提升和千兆口的验证需要,利用 p l a n a h e a d 工具对设计进行布局规划,优化了x d n p 时序,最终频率达到8 4 m i - i z , 提升了2 4 的性能,并且节省了约1 3 的实现时间。 本文最后在硬件平台上,对x d n p 的网络传输性能进行了功能验证。在验证 过程中,采用自底向上,由部分到整体的增量式验证策略:先从模块级的数据通 路出发,逐级验证,最终搭建整个系统,完成系统级的验证。同时使用软硬件协 同验证的方法:p c 的发包软件产生整个验证平台的激励;c h i p s c o p e 工具检测 f p g a 实时信号以定位错误,达到了良好的验证效果。最终在硬件平台上成功实现 x d n p 的网络传输功能,5 0 m h zf p g a 运行频率下,测试结果显示百兆口平均传 输速率为5 2 3 k b s 。 关键词:m p s o c 数据通路f p g a 原型布局规划软硬件协同验证 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to ft h ei n t e m e ta n dm i c r o e l e c t r o n i c st e c h n o l o g y , t h e r e s e a r c ho ni t sc o r r e s p o n d i n gn e t w o r ke q u i p m e n th a sa l s om a d eg r e a tp r o g r e s s a n dt h e t w op r o m o t ee a c ho t h e r t oa c h i e v eh i 曲n e t w o r kp r o c e s s i n gv e l o c i t y , m p s o c ( m u l t i p r o c e s s o rs y s t e mo i lc h i p ) a r c h i t e c t u r eh a sb e e nw i d e l ya d o p t e di nn e t w o r kp r o c e s s o r n o w a d a y s h o w e v e r , d u et ov a r i o u si n t e g r a t e dh a r d w a r em o d u l e ,c o m p l e xs o f t w a r eo r f i r m w a r ei ni t ,t h ef u n c t i o n a lv e r i f i c a t i o no ft h en e t w o r kp r o c e s s o rf a c e sg r e a t c h a l l e n g e s t os h o r t e nt h ev e r i f i c a t i o nt i m e ,f p g a - b a s e dr a p i ds y s t e mp r o t o t y p eh a s b e c o m ea l li m p o r t a n tv a l i d a t i o np r o c e s s n et h e s i sf o c u s e so nt h eh a r d w a r ea n ds o f t w a r es y s t e mi n t e g r a t i o no ft h en e t w o r k p r o c e s s o r , a n dt h ei m p l e m e n t a t i o na n do p t i m i z a t i o nt e c h n o l o g yo f t h ex d n pb a s e do n t h ex i l i n xv i r t e x 4 l x l 6 0d e v i c e :b ym o d i f y i n gt h ea s i cc o d e ,t h ex d n pd e s i g ni s s u c c e s s f u l l ym i g r a t e di nt h ef p g a ;f o rb o t ht h ep e r f o r m a n c ea n dt h eg i g a b i tp o r t s v e r i f i c a t i o n r e q u i r e m e n t , t h ep l a n a h e a d t o o li su s e dt o f l o o r p l a nt h ed e s i g n i m p l e m e n t a t i o n , w h i c hi m p r o v e st h et i m i n g u l t i m a t e l yt h ef r e q u e n c yi su p t o8 4 m h z , i n c r e a s i n gb y2 4 ,a n dt h ei m p l e m e n t a t i o n t i m es h o r t e n sb y1 3m e a n w h i l e a tl a s t , b a s e do nt h eh a r d w a r ep l a t f o r m ,t h ef u n c t i o nv e r i f i c a t i o n o ft h ex d n pi s c o m p l e t e di nt h et h e s i s d u r i n gt h ev e r i f i c a t i o np r o c e s s ,ab o t t o m - u pi n c r e m e n t a l v e r i f i c a t i o ns t r a t e g yi sa d o p t e d :b e g i n n i n gw i t ht h ed a t ap a t hv e r i f i c a t i o na st h e m o d u l e - l e v e l ,s t e pb ys t e p ,u l t i m a t e l yt h ee n t i r es y s t e m - l e v e lv e r i f i c a t i o ni sc o m p l e t e d i n t h e t h e s i s 1 1 1 eh a r d w a r ea n ds o f t w a r ec o v e r i f i c a t i o nm e t h o di sa l s ou s e d :p c s o f t w a r et og e n e r a t et h ep a c k e t sa st h ev e r i f i c a t i o np l a t f o r ms t i m u l u s ;c h i p s c o p et o o lt o t e s tt h ea c t u a li n t e r n a ld a t ai nt h eo p e r a t i n gf p g af o rd e b u g s u c hm e t h o da c h i e v e sa g o o dv a l i d a t i o nr e s u l t s u l t i m a t e l yt h en e t w o r kt r a n s p o r tf u n c t i o ni sa c h i e v e di nt h e h a r d w a r ep l a t f o r m a ta no p e r a t i n gf r e q u e n c yo f5 0 m h zi nf p g a ,t h er e s u l t ss h o wt h a t t h ea v e r a g et r a n s f e rr a t ea m o n gm e g a b i tp o r t si s5 2 3 k b s k e y w o r d s :s o c d a t a p a t h f p g ap r o t o t y p e f l o o r p l a n h a r d w a r ea n d s o f t w a r ec o - v e r i f i c a t i o n 第一章绪论 第一章绪论 1 1 课题研究背景 2 l 世纪的一个重要特征是数字化、网络化与信息化,基于网络技术的电子商 务、远程教育、远程医疗与信息安全技术正在以前所未有的速度发展。互联网正 改变着人们的工作方式、生活方式与思维方式,而支撑这一切的基础是全球的庞 大的计算机网络。网络技术的发展与应用已成为影响一个国家与地区政治、经济、 科学与文化发展的重要因素之一【l 】。社会对网络带宽和性能的更高要求同时也促使 网络解决方案的飞速发展。如今,一个为网络设计的a s i p ( a p p l i c a t i o ns p e c i f i c i n s t r u c t i o np r o c e s s o r ) ,即现在所称的网络处理器n p ( n e t w o r kp r o c e s s o r ) ,被证明 是一种在当前绝大多数网络系统应用中最好的解决办法【2 】。n p 既有a s i c ( a p p l i c a t i o ns p e c i f i ci n t e g r a t e dc i r c u i t ) 的高速处理能力,又有完全的可编程特性, 属于复杂的s o c ( s y s t e mo n c h i p ) 设计。s o c 硬件模块数目众多并内置软件,给 验证提出了巨大的挑战。为了缩短s o c 验证时间,快速系统原型( r a p i d s y s t e m p r o t o t y p e ) 验证已经成为s o c 设计流程前期的常用手段【5 】。 1 1 1 网络处理器的发展 一 过去的十几年内,不论是因特网还是电信通信网,其带宽都呈爆炸性增长, 其相应的网络设备的研制开发也取得了巨大的发展,两者之间相互促进。 传统的网络应用都是基于现场可编程门阵列f p g a ( f i e l dp r o g r a m m a b l eg a t e a r r a y s ) 或智能硬件来实现较低层的处理,通过通用处理器c p u 来实现高层的处理。 如第二代网络系统就将许多底层包处理任务移交给智能网卡,而使用通用处理器 完成某些特定包处理任务。但是随着网络规模和接口速度的增加,通用处理器对 某些网络处理任务尤其是数据接收、交换转发等方面的处理性能已经难以满足要 求。即使c p u 仅用于处理小部分包,传给c p u 的包的数量仍会随着聚合包速率 而线性增长。因此,如果系统具有很高的聚合包速率,c p u 就可能会成为系统的 瓶颈【4 1 。 为了进一步减轻c p u 的负担,工程师门设计了第三代网络处理系统。简单的 说就是开发出基于a s i c 实现的具有固定功能的接口设备处理底层协议,如第二层 以太网交换机。这种a s i c 设计有效提高了网络设备的处理性能和速度,但仍缺乏 灵活性。后来在a s i c 基础上又出现了交换套片构建方案,如第二层以太网“单片 交换”设备,这种方案优化了硬件问的连接,提高了指令执行效率,但仍没有克 服a s i c 缺乏灵活性的固有缺点。 2 基于f p g a 平台的多核片上系统关键技术研究 网络处理器n p ( n e t w o r kp r o c e s s o r ) 即是从a s i c 设计转向可编程应用系统设 计过程中出现的产物。随着当今网络规模和性能的迅速增长,在通信应用诸多领 域的发展趋势表明,通信系统设计再采用a s i c 存在很多困难,主要体现在: 深亚微米d s m ( d e e ps u b m i c r o n ) 效应加剧电路设计的困难性; 成本高,投放市场时间过长; 不同产品中重用率低; 升级困难; 正是以上因素的组合压力导致系统应用设计更多地朝可编程性解决方案方向 考虑。因此,网络处理器n p 是新一代被用来执行数据处理和转发的高速可编程处 理器,其既有a s i c 的高速处理能力,又有完全的灵活性。 关于n p 上述两个优点可以从其组成来理解。下图1 1 简要描述了n p 的硬件 结构。从图中可以看出,n p 主要包括两个功能模块:智能处理单元、网络处理单 元。其中智能处理单元是n p 的核心,它通过运行嵌入式操作系统上的路由协议软 件,完成路由信息的接收、处理和发送,生成并维护路由表等。而网络处理单元 通常采用多线程结构,可以完成高速、大容量的网络数据处理功能,如数据包的 收发、包头处理和路由查询等。另外从系统灵活性角度看,智能处理单元是可编 程的,网络处理单元则由多个r i s c 核组成,而r i s c 芯核也是可编程的,这就充 分保证了网络处理器的灵活性。 厂、 智能处理单元 个、 l 一 厂一 | 1 - i 鬻卜 网络处 l 网络接口f 一 fm a c 一 一l 单元 l 一 7 l 单元 理单元 1 一 lj 图1 1 网络处理器基本硬件结构 从以上介绍不难看出,n p 的高速处理能力主要是通过一个芯片内集成多个微 处理器以及一个微处理器包含多个硬件多线程实现的;而其灵活性则主要是通过 智能处理单元和网络处理单元的完全可编程性来实现的【4 】,即n p 是典型的m p s o c ( m u l t i p r o c e s s o rs y s t e mo nc h i p ) 设计。 由于n p 在网络数据处理方面的明显优势,它必将成为高速网络设备支持业务 管理、安全与网络监控、q o s 等网络功能必不可少的元件。因此,可以说网络处 理器代表了未来网络设备设计的发展方向。 第一章绪论 3 1 1 2 网络处理器的验证 验证是核对设计实现与设计规范是否一致的过程,验证通过与设计不同的路 径按相反的方向进行检查,以证明设计实现的结果和起点是否一致。设计和验证 的关系如图1 2 所示【6 】。 设计验证 图1 2 设计和验证关系 毒 在整个芯片设计过程中,从前端r t l 行为级描述开始,到后端版图实现,验 证方面的工作自始至终。验证包括许多方面,如功能验证、时序验证、物理验证 等,其中最重要的是功能验证,功能缺陷也是造成流片失败的最主要因素。 对于n p 这样的m p s o c 设计,其内部除大量硬件模块之外,还包含大量软件 如操作系统、接口驱动程序、微码及应用程序。众多的硬件模块和复杂的内嵌软 件给n p 的功能验证带来了巨大的挑战。 对于功能验证,软件仿真是最常用的方法之一,它通过使用e d a 工具( 如 m o d d s i m ) 配合外部激励信号达到验证设计功能的目的。从功能上讲,网络处理 器主要是完成数据处理和转发任务,这就要求在对网络处理器功能验证的过程中, 利用软件产生验证所需要的各种分组数据作为激励,这样一来,传统的基于逻辑 仿真的验证方式显得太过机械,软件仿真时间太长以致令人无法接收。 为了缩短验证时间,基于f p g a 的快速原型验证( r a p i ds y s t e mp r o t o t y p e ) 成 了设计流程的重要验证手段。随着f p g a 器件规模的不断扩大以及性能的不断提 升,f p g a 可以以接近实际运行速度的方式运行设计原型,因此可以在更短的时间 内运行更多的测试向量,仿真速度比软件仿真快得多。并且设计是在真实的硬件 上运行,能够与真实的物理硬件环境相连,验证人员可以通过软件自由的产生各 种激励,然后分析其结果,实现软硬件协同仿真验证。 当前芯片一次投片成功率只有3 5 左右,利用f p g a 的快速原型验证可以在 流片前发现软件仿真阶段所不能表现出来的系统设计缺陷,及时发现问题,更正 设计错误,因此越来越多的设计人员选择f p g a 作为a s i c 设计流片前的原型验证 围回固回回 4 基于f p g a 平台的多核片上系统关键技术研究 硬件平台旧。 1 2 课题研究来源及贡献 本课题来自于国家部委研究项目“高性能多核多线程网络处理器设计与研 究 。x d n p 项目( x i d i a nn e t w o r kp r o c e s s o r ) 以i n t e l l 2 0 0 网络处理器作为设计蓝 本,要求独立自主的完成整个x d n p 处理器的正向r t l 级设计和验证。 本论文是在整个x d n p 系统前端h d l 描述日趋完善的基础上,集成整个 x d n ps o c 软硬件系统,并将该多核s o c 移植到f p g a 上,对其时序进行优化, 然后在硬件平台上采取自底向上,由部分到整体的增量式验证策略对x d n p 进行 了全面的功能验证,本文的工作重点如下: 1 ) 本论文首先完成对多线程多处理器结构的片上系统x d n p 的系统级集成。 所设计的原型系统集成了7 个处理器核,能够处理8 - - 1 6 个百兆以太接口 数据和2 个千兆接口数据。 2 ) 在系统集成过程中,逐步添加各模块以建立整个x d n p 系统,然后将支 持8 个慢口传输的参考程序的二进制数据放入x d n p 的初始化模块内, 由a r m 负责完成对6 个包处理单元微码的写入和线程的启动。x d n p 软 硬件系统完备后,在m o d e l s i m6 5 上仿真7 4 b y t e sp i n g 包在8 个百兆1 :3 之 间的网络转发功能。 3 ) 针对所设计的多核片上系统的特点,利用f p g a 内部成熟的口核来取代 a s i c 设计中的某些组件,将x d n ps o c 系统移植到f p g a 上,其f p g a s l i c e 资源占用率为4 3 。同时针对x d n p 在x i l i n xv i r t e x 4f p g a 上的实 现特点,利用x i l i n xp l a n a h e a d 工具对x d n p 进行时序优化,最终x d n p 原型系统最高频率达8 4 m h z 。 4 ) 完成了对x d n p 系统f p g a 原型的功能调试与验证。利用软硬件协同调 试的方法在硬件平台上成功实现x d n p 对8 个百兆口的网络传输功能, 并对其网络传输性能作了相应的测试评估。 1 3 论文章节安排 基于本课题所涉工作内容,本论文章节安排如下。 第一章:绪论,叙述了网络处理器的发展历程,重点介绍了当前网络处理器 n p 相比传统网络设备的突出优点及其硬件结构和软件组成两方面的特殊性。然后 阐述s o c 功能验证的两种方式,引出本文着重研究的f p g a 快速原型验证的概念。 最后介绍了本文的项目来源、作者的主要贡献以及论文的大致章节安排。 第二章:m p s o c 系统结构与实现平台,简要叙述网路处理器系统的结构,接 第一章绪论 5 着介绍本项目f p g a 实现平台以及本文的设计目标。 第三章:m p s o c 的功能集成,由于数据平面是x d n p 处理分组数据的主要通 道,本章重点讲述了涉及网络处理单元( p e ) 的几条数据通路,同时介绍了数据 平面的软件程序对分组处理的详细过程。 第四章:基于f p g a 的m p s o c 的实现与优化,详细阐述了x d n p 基于f p g a 的实现过程,根据x d n p 的实现结果和v 4f p g a 的特点,利用x i l i n xp l a n a h e a d 工具对x d n p 进行时序优化,本章提出了性能优化的具体思路。 第五章:m p s o c 的f p g a 原型验证与性能分析,首先介绍软件仿真、硬件仿 真两种功能验证方式的特点,然后基于层次化验证的方法,全面叙述对x d n p 从 模块级到系统级的硬件验证过程,最后对x d n p 百兆口的网络传输进行了相应的 性能测试。 第六章:结束语,总结全文,对基于f p g a 平台的多核s o c 研究工作进行总 结,指出不足以及对后续工作的展望。 第二章m p s o c 系统结构与实现平台 第二章m p s o c 系统结构与实现平台 网络系统是一个对网络中的分组进行接收、处理和发送的系统。网络系统的 高性能取决于系统的软硬件构成【3 1 。网络系统硬件构成的目标是以较低的成本获得 最大的性能。为了获得高性能,硬件上通常使用并行性结构。x d n p 中就具有多 个接口,连接多条网络线路,这些接口之间并行操作,构成一个并行的系统。在 本文中,x d n p 的硬件系统基于f p g a 实现。 2 1 系统结构 x d n p 属于结构复杂的m p s o c 设计,该芯片包括1 个类a r m 单元、6 个可 编程包处理器p e 、总线模块、s r a m 控制器、s d r a m 控制器以及f b i 单元等功 能模块。6 个独立的3 2 位r i s c 数据转发高速引擎p e ,加上硬件的多线程支持, 为该网络处理器提供了高性能的并行处理能力,因而适用于各种网络系统【3 】。其中, 类a r m 处理器即作为图1 1 中的智能处理单元,主要用于建立和维护转发表、初 始化系统等;p e 对应网络处理单元,主要负责数据分组的分类、转发和排队等工 作。图2 1 是x d n p 构成的网络系统实例图,接下来将分别叙述其功能模块。 2 1 1 类a r m 图2 1x d n p 系统构成 由于各种限制,x d n p 的内核由类a r m 单元暂时代替实现,该类a r m 单元 完全按照a m b a 2 0 总线规范设计。在x d n p 中,类a r m 单元作为a h b 总线的 唯一主设备,拥有4 g b 的地址空间,通过4 个内部设备的片选信号控制对p e 、 s r a m 、s d r a m 以及f b i 单元的访问,表2 1 列出了x d n p 中该类a r m 的地址 空间映射。 8 基于f p g a 平台的多核片上系统关键技术研究 表2 。1 类a r m 地址映射 物理设备 功能 类a r m 地址空间 s r a m 访问s r a m 存储器 0 x1 0 0 00 0 0 0 - o x3 8 0 00 0 f f m a c配置m a c 内c s r0 x3 8 4 00 0 0 0 - - , 0 x3 8 5 ff f f f p e p e 微码空间 0 xb 0 0 00 0 0 0 - q ) xb 0 0 02 8 0 0 f b lf b i 内c s r 、s c r a t c h0 xb 0 0 44 0 0 0 - - 4 1 xb 0 0 44 f f f s d r a ms d r a m 内c s r0 xh 0 00 0 0 0 - 4 ) xf i 0 00 0 1 4 在x d n p 设计中,类a r m 主要用于对系统的初始化操作,如配置m a c 、初 始化s r a m 、s d r a m 存储单元以建立路由转发表,以及向p e 写入微码程序等操 作。但是由于类a r m 并非真正意义上的处理器,若要处理更加复杂的任务,如地 址学习、建立和维护转发表、网络管理等,就必须选用通用嵌入式软核处理器并 在其上面运行操作系统以实现。 2 1 2 包处理器p e x d n p 包含6 个3 2 比特可编程的r i s c 处理器,这些处理器与通常意义上的 微处理器在特性上有所不同,在这里称他们为微引擎p e 。微引擎支持3 2 比特r i s c 指令集,特别适合应用于网络通信。微引擎的工作频率与x d n p 系统频率相同, 每条指令的执行时间为一个时钟周期。 微引擎有下列特点【2 】: 每个微引擎支持4 个线程; 可编程的1 k 字的指令存储器; 3 2 比特的通用寄存器、传输寄存器各1 2 8 个; 功能强大的逻辑运算单元( a l u ) 和移位器( s h i f t e r ) 。 x d n p 系统中共有6 个完全同构的p e 。如表2 2 所示,p e 采用五级流水线结 构,每个都包括p 0 级、p 1 级、p 2 级、p 3 级和p 4 级,这五级构成了p e 的核心部 分。 表2 2p e 五级流水线结构 流水级功能描述 p 0取指级,从指令存储器中读取指令 p 1译码级,指令译码 p 2取操作数级,从源寄存器读取操作数 p 3执行级,主要是a l u 操作 p 4写回级,将结果写回寄存器堆 p e 需要对大量的数据包进行处理,片内存储器无法满足需求,因而需要大量 第二章m p s o c 系统结构与实现平台 9 使用外部存储器如s r a m 、s d r a m 等。但表2 2 所示的p e 流水线结构并没有通 用r i s c 处理器的存储器访问( m e m o r y a c c e s s ) 这一级,那么p e 对外设的访问是 如何实现的呢? 其实p e 去掉了通用r i s c 的l o a d x s t o r e 指令,换之于其内部 生成的r e f e r e n c e 指令用于存储器访问。为了实现对分组数据的快速并行处理,在 x d n p 中,每个p e 支持4 个线程,每个线程独立共享指令存储空间,当一个线程 发出访存请求时,为避免等待,这个线程主动把自己切换出去,使其他线程得到 运行【2 1 。根据所发出的访存请求,p e 内部的r e f e r e n c em a k e 模块会生成与其对应 的r e f e r e n c e 指令存入图2 2 中命令f i f o 内,这些r e f e r e n c e 指令经命令总线 ( c m db u s ) 送给所要访问的控制器后,由控制器负责解析具体的访存任务,并最 终通过数据总线( d a t ab u s ) 完成与p e 的数据交互,此时再切换到原访存线程。 图2 2 p e 的内部结构 通过高效的线程切换机制来隐藏访存延时,就必须要求线程切换时间最好是 零开销。那么,如何实现线程切换时线程状态的快速保持昵? 在x d n f 中,是通 过多窗口寄存器技术为每一个线程分配的专用寄存器组来实现的。p e 中拥有1 2 8 个3 2 位的通用寄存器( g p r ) 和1 2 8 个3 2 位的传输寄存器( x f e r ) 。g p r 用于 暂存中间数据,x f e r 用于在p e 与其他部件问传输数据。这两种寄存器都支持绝 对寻址和相对寻址方式:绝对寻址时,p e 的4 个线程共享寄存器;相对寻址时, 每个线程都拥有自己独立的数据区,在线程切换时无需保存寄存器内容,从而消 除线程切换引起的额外开销。 另外,图2 2 中l k 字的指令存储器是p e 微代码程序存储区。如之前所述, 系统初始化时,类a r m 将微码程序写入该存储区域。p e 的4 个线程共享这个存 储区,且每个线程拥有独立的程序指针。在x d n p 设计中,类a r m 初始化启动 p e 运行,p e 的0 线程开始工作,微码指令进入5 级流水线运行,当需要线程切换 时,即进入休眠状态,线程仲裁器( c o n t e x a r b i t e r ) 根据其他功能单元的信号或 l o 基于f p g a 平台的多核片上系统关键技术研究 时间判断哪个线程进入运行状态。 2 1 3s r a m 单元 s r a m 存储器存储了索引表、分组描述符、队列描述符等信息。在网络处理 器系统中,经常要实现数据的分组转发功能、信息交换以及更新功能,也需要频 繁进行分组队列的管理,所以p e 要不断的访问s r a m 单元以便实现分组队列管 理。 图2 3s r a m 控制器整体架构 处理器对s r a m 存储单元的访问通过s r a m 接口实现( 图2 3 ) ,s r a m 接口 提供对3 种设备的访问功能:s s r a m 、b o o t r o m 和s l o w p o r t 7 。s r a m 单元可以 接收来自类a r m 和p e 的访问命令,并将这些指令放入各自的指令队列中。前面 讲述过,类a r m 对s r a m 相关单元进行初始化,如配置m a c 内部c s r ( m a c 作为s l o w p o r t 设备) ,操作相对简单。而p e 访问s r a m 指令有以下8 种( 表2 3 ) , 考虑到指令的代表性,下面主要阐述p u s h p o p 、r e a dl o c k w r i t eu n l o c k 操作的详细 过程。 表2 3p e 中s r a n lr e f e r e n c e 指令 c m d d e s c r i p t i o n w r i t e 从s r a m 传输寄存器中写入s r a m 中 r e a d 从s r a m ,f l a s h 或s l o w p o r t 地址空间中读到s r a m 传输寄存器中 p u s h将地址指定的单元要素p u s h 到指定的堆栈 p o p从指定堆栈p o p 到地址指定的单元上 b i tw r设定清除s r a m 长字中的指定比特位 r e a d l o c k 锁住内存然后读取,如果内存已经锁住,需要等到解锁 w r i t e u n l o c k 执行写操作,并且解锁指定地址 u n c l o c k 不执行读或写操作就解锁指定地址 第二章m p s o c 系统结构与实现平台 1 p u s h p o p p u s h p o p 操作通过s r a m 单元内的p u s h p o p 寄存器( p p r ) 来实现,p p r 其实 就是l i f o ( l a s ti n f i r s t o u t ) 堆栈。p e 通过p u s h p o p 指令可以非常有效的实现缓 存分配和管理。如图2 4 所示,s r a m 芯片中的存储着一个数组,该数组内的元素 其实都是些s r a m 芯片的地址值,这些元素依次链接构成了一个链表。链表中的 每个s r a m 元素( s m 蝴地址值) 都按固定的地址映射关系对应着一个s d r a m 地址空间。当s r a m 内元素被分配时,对应的s d r a m 缓存空间也就建立了。分 组的信息存放在s r a m 中,而真正的分组数据则存放在s d r a m 中,这样p e 就 可以利用s r a m 来分配和释放缓存,充分发挥s r a m 快速高效和s d r a m 大容量 的优势。 s r a m 图2 4 缓存分配 如图2 5 所示,p u s h 其实是一个读写写的过程t 首先,读出p u s h p o p 寄存器, ( p p r ) 值5 a c ;然后以p e 寄存器( g p r ) 中的值5 c 0 作为地址,将5 a c 写入s r a m 存储器;最后更新p u s h p o p 寄存器的值为p e 寄存器值5 c 0 ,相当于p e 的压栈操 作。与之相反,p o p 操作则是读读写的步骤( 图2 6 ) :首先,读出p u s h p o p 寄存 器p p r 值5 b 0 :然后以5 b 0 为地址读s r a m 存储器,得到数据5 a c ;最后将p p r 中 原数据5 b 0 写入p e 的x f e r ,并将读出的值5 a c 更新到p p r 。 5 c 5 b s s r a m 图2 5p u s h 操作过程 o l 2 3 4 舢。彤3 4 , - , , 一 1 2 基于f p g a 平台的多核片上系统关键技术研究 s s 枷,f 删p 姐、 步 磐 图2 6 p o p 操作过程 总之,p u s h 是分配缓存,而p o p 是释放缓存,p u s h p o p 提供了一种非常有效 的缓存动态管理的硬件机制。 2 m a d l o c k w r i t e u n l o c k 多处理器共享存储器时,必须采用适当的控制机制来防止发生访问冲突。 r e a dl o c k 、w r i t eu n l o c k 组合起来便可以避免访问冲突。 t 捌l l o c k 命令的最终目的还是执行读操作,只不过该命令还提供对s r a m 地 址加锁这一额外功能,其执行过程如下:r e a c l l o c k 指令出队列后,s r a m 首先判断 c a m 是否为满,如果c 舢订已经锁存有8 个地址,那么这次读锁将失败,把这条 指令放入读锁失败队列。如果c a m 未满,那么将该地址与c a m 中锁存的地址依 次进行比较,若待锁存地址与c a m 中锁存的地址都不相同,则将该地址存入c a m 中,即锁住该地址,同时执行相应的读操作;若待锁存地址与c a m 中锁存的地址 中某一个相同,表明该地址己被锁住,此时该读锁指令不能执行,s r a m 仲裁器 便把这条指令放入读锁失败队列以期稍后执行。 w r i t eu n l o c k 、u n l o c k 命令即对s r a m 地址解锁,其实就是擦除c a m 中相应 的地址内容。如果某地址被一个线程加锁后,其它想锁定该地址的线程就被阻断, 即读锁失败,该读锁指令被放入读锁失败队列,直到该地址被解锁后才能继续执 行。 在n p 的微码程序中,r e a d l o c k 与w r i t eu n l o c k u n l o c k 成对出现,且r e a d l o c k 与线程跳转同步。当某线程成功对s r a m 某地址执行r e a dl o c k 指令后,便切换至 其他线程运行,由于此时原线程没有对该地址上的数据进行更新,即该地址s r a m 存储内容无效。加锁线程锁住该地址,使其他线程对同一地址尝试进行r e a dl o c k 失败,这样就避免了这些线程读到无效的数据。只有当原加锁线程对该地址进行 w r i t eu n l o c k ,即内容更新并解锁后,其他线程对该地址的r e a dl o c k 便会成功执行, 读出有效的数据。这样就实现了加锁线程对加锁地址读写操作的保护。 2 1 4s d r a m 单元 s d r a m 控制器单元是一个符合工业标准的6 4 位存储器接口,s d r a m 接口 第二章m p s o c 系统结构与实现平台 1 3 访存地址最大可达2 5 6 m b y t e ,通过存储体多体交叉技术提高带宽。s d r a m 通常 用于存储较大的数据结构,例如分组、信元、帧以及转发表信息。作为分组缓存 时,s d r a m 空间分成大小相对的区间( 如2 k b ) ,每个区间存储一个分组【3 】。 s d r a m 接口单元结构如图2 7 所示。与s r a m 单元类似,s d r a m 控制器也 可以分别接收执行来自类a r m 、p e 的指令。在x d n p 中,类a r m 单元用来对 s d r a m 单元及s d 黜蝴存储器进行初始化。类a r m 核通过配置s d r a mc s r 、 s d r a mp e m c t l o 、$ d r a mp e m c t l 0 和s d r a mp e m i n i t 等寄存器,使 s d r a m 单元可以支持多种s d r a m 存储设备。 图2 7s d r a m 控制器整体架构 p e 发出的s d r a m 访存指令有四种队列可选。为了减小访问延迟,s d r a m 单元需要安排交替地对奇偶数存储体的访问1 s l ,为此分别设置了奇队列和偶队列, 另外也设置了优先队列和顺序队列,使访存指令执行顺序更为灵活,p e 访问 s d r a m 指令见表2 4 。 表2 4p e 中s d r a mr e f e r e n c e 指令 c m d d e s c r i p t i o n w r i t e 从s d r a m 传输寄存器中写入s d r a m 中 r e a d 从s d r a m 相应地址空间中读到s d r a m 传输寄存器中 r f i f o r d ( r e f e r e n c e )d m a 操作,将f b i 内r f i f o 数据读到s d r a m 中 tf i f ow r ( r e f e r e n c e )d m a 操作,将s d r a m 的数据写入f b i 内t f i f o 由表2 4 可知,s d r a m 与p e 之间的数据传输有两种,分别是读指令和写指 令。另外f b i 和s d r a m 之间存在d m a ( d i r e c tm e m o r y a c c e s s ) 操作,即两者不 通过p e 而直接进行数据传输,s d r a m 这两条数据通路会在第三章详述。 2 1 5f b i 单元 f b i 单元提供总线接口,与m a c 芯片完成链路层数据的传输。另外,f b i 单元还提供片上s c r a t c h p a d 存储器,其整体结构如图2 8 所示。 1 4 基于f p g a 平台的多核片上系统关键技术研究 。 s d r a m 数据总线 t f i f o ;黜w 数据 t s m 总线 l ip a d i u u l 、 a r m 。 推拉引 i + h i x 总线 擎接口 o c i 。a 【c n 接口 1 0 2 4 3 2 p e l l j r s mi ld 口t d ,、 l 1 | “。 图2 8 f b i 结构框图 f b i 单元以微包( m p a c k e t ) 为单位传输数据,微包是6 4 b 固定大小,一个以 太网帧被分成若干个微包进行传输。f b i 单元中包含一个发送状态机( t s m ) 和一 个接收状态机( r s m ) ,用于微包的发送。这两个相互独立的状态机进行微包在i x 总线上的发送和接收。p e 只要向这两个状态机发送相应的命令就可以实现微包的 收发。这样p e 可以专注于分组的缓存和处理,而不用担心微包在总线上的接 收和发送【3 1 。p e 访问f b i 的指令有4 类( 表2 5 ) ,f b i 既与p e 内的s r a m 传输 寄存器进行数据传输,还与s d l l a m 单元进行d m a 传输,同样存在两条数据通路。 表2 5 p e 访问f b i 指令 c m d d e s c r i p t i o n t - f i f o - 从s r a m 传输寄存器中写入r f i f o 中 r f i f o - r d把t f i f o 数据写如s r a m 传输寄存器 f a s tw r将指定的立即数快速写入到指定的f b ic s r 中 c s r 对指定的状态寄存器进行读写操作 f b i 单元包含1 0 2 4x 3 2 位的便笺存储器s c r a t c h p a d ,s c r a t c h p a d 是一个片内 r a m ,可用于存储全局变量,实现p e 各线程间的数据通信和共享。在x j ) n p 中, s c r a t c h p a d 即作为线程间通信时的信箱。在路由器应用中,这种信箱可以用于使接 收线程将分组信息传递给发送线程,或者在接收线程之间进行同步操作。例如, 一个p e 接收线程从端口1 1 接收并处理完一个数据包,需通知另一个p e 的一个发 送线程去执行此包的发送。通知的方式就是向s c r a t c h p a d 中一个约定的单元发“邮 件 ,“邮件 内容是把约定单元的第n 位置成1 ,表明某一个发送端口有分组在排 队,等待发送。发送线程读取该此内容后就会执行相应的发送操作,将等待中的 分组发送出去。 第二章m p s o c 系统结构与实现平台 1 5 本项目实现平台是$ 2 c 公司的t a il ms i n g l e 板+ 浩通公司f i d s l 2 m c 2 底板, 整个硬件系统如图2 9 所示。 图2 9 硬件验证平台 硬件平台分上下两层,上层板是s 2 c 公司的t a il m s i n g l e 板,主要包括x i l i n x v t r t e x 4 l x l6 0f p g a ( 以下简称v 4 ) 以及8 个i oc o n n e c t o r 插槽( 每个o o n n g c t o r 带1 2 0 管脚) 。在本项目中,x d n p 硬件系统由t a il ms i n g l e 板上的v 4 实现,并 通过i o 插槽和下层浩通f i d s l 2 m c 2 板进行数

温馨提示

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

评论

0/150

提交评论