




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要c e l l 处理器是一种高性能单片多处理器,它的出现使得处理器性能产生了革命性的进步,针对它的应用研究也越来越广泛,将会在更多的领域得到推广应用。基于像素的多分辨率纹理合成是根据输入的小块纹理产生大块纹理的过程,它在图像处理和动画领域都有着重要意义,但由于其查询匹配过程的复杂性,使得它的性能很低,这可通过c e l l 处理器来加以改善。本文主要研究了利用c e l l 处理器的高性能特点来实现多分辨率纹理合成的方法,这也是c e l l 处理器在图像处理领域的一次新的尝试。首先,本文根据算法基本结构实现了p p e 串行程序,并利用c 语言扩展命令对代码进行了向量化。然后,根据p p e 和s p e 的功能特点将p p e 串行程序中的部分代码移植到s p e 上,并对代码进行了优化;同时,为了解决s p e 存储器不足的问题,还对算法结构作出了根本性调整并向s p e 程序中加入d m a 传输。最后,利用数据划分模型对s p e 程序进行划分,并利用邮箱通信来保持各s p e 问的同步;同时,还利用容差图像修补算法对纹理分界进行了修补。这个过程充分利用了c e l l 处理器的结构特点,如多处理器并行、向量化、d m a 传输和邮箱通信等,大大提高了纹理合成速度。本文的研究拓展了c e l l 处理器的应用领域,有助于c e l l 技术的完善和推广,同时,对并行纹理合成技术的发展也有着重要的意义。关键词:c e l l 处理器多分辨率纹理合成p p es p ed m a 传输邮箱通信a b s t r a c tc e l lb r o a d b a n de n g i n e ( c b e ) i sas i n g l e c h i pm u l t i p r o c e s s o rw i t hh i 曲p e r f o r m a n c e ,a n di t si m p l e m e n t a t i o nh a se n a b l e df u n d a m e n t a la d v a n c ei np r o c e s s o rp e r f o r m a n c e ,f o rw h i c hi t sa p p l i c a t i o nh a sb e e nb e i n gd e v e l o p e di nm o r ea n dm o r ea r e a s p i x e l - b a s e dm u l t i r e s o l u t i o nt e x t u r es y n t h e s i s ,w h i c hi si m p o r t a n tf o rr e n d e r i n gs y n t h e t i ci m a g e sa n da n i m a t i o n s ,i sap r o c e s so fm a k i n gal a r g e rt e x t u r ef r o mat e x t u r es a m p l e b e c a u s eo ft h ec o m p l e x i t yo ff i n d i n gb e s tm a t c h ,t h es y n t h e s i sp r o g r a mh a sam u c hl o w e rp e r f o r m a n c e ,w h i c hc a nb ei m p r o v e db yt h eh i g hp e r f o r m a n c eo fc b e t h i st h e s i sm a i n l ys t u d i e st h em e t h o do fi m p l e m e n t i n gm u l t i r e s o l u t i o nt e x t u r es y n t h e s i so nc b e ,a n di ti sa l s oan e wa t t e m p ti nt h ea r e ao fi m a g ep r o c e s s i n g f i r s t ,p p es e r i a lp r o g r a mw a si m p l e m e n t e da c c o r d i n gt ot h ea l g o r i t h mf r a m ea n ds i m d i z e di ncl a n g u a g ee x t e n s i o n s s e c o n d ,s o m ep a r t so fp p ec o d e sw a st r a n s p l a n t e di n t os p e ,a n dt h ec o n s e q u e n ts p ec o d e sw a so p t i m i z e d ;m e a n w h i l e ,t h ea l g o r i t h ms t r u c t u r ew a sa d j u s t e df u n d a m e n t a l l ya n dd m at r a n s f e r sw a si n t r o d u c e di n t ot h es p ep r o g r a mt oc o m p l e m e n tt h el i m i t e dl o c a ls t o r a g eo fs p e a tt h el a s t ,t h es p ep r o g r a mw a sp a r t i t i o n e da c c o r d i n gt ot h ed a t ap a r t i t i o nm o d e la n dt h em a i l b o xc o m m u n i c a t i o nw a su s e dt ok e e pa l lt h es p ep r o g r a m si ns y n c h r o n i z a t i o nw i t he a c ho t h e r ;b e s i d e st h a t ,t h eb o u n d a r i e sw e r ep a t c h e dt h r o u g hm i n i m u mc o s tp a t ha l g o r i t h m t h i sp r o c e s sm a k e sf u l lu s eo ft h ef e a t u r e so fc b e ,s u c ha sm u l t i p r o c e s s o rp a r a l l i z a t i o n ,s i m d i z a t i o n ,m a i l b o xc o m m u n i c a t i o na n ds oo i l t h i st h e s i se x p a n d st h ea p p l i c a t i o na r e a so fc b e ,a n di sh e l p f u lt oi m p r o v ea n dp r o m o t ec e l lt e c h n o l o g y a tt h es a m et i m e ,i ti sa l s oo fg r e a ts i g n i f i c a n c et op a r a l l e lt e x t u r es y n t h e s i s k e yw o r d s :c b e ,m u l t i r e s o l u t i o nt e x t u r es y n t h e s i s ,p p e ,s p e ,d m at r a n s f e r , m a i l b o xc o m m u n i c a t i o n独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得苤鲞盘堂或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。学位论文作者签名:卵:q签字同期:岬年百月纾同学位论文版权使用授权书本学位论文作者完全了解鑫洼盘鲎有关保留、使用学位论文的规定。特授权墨壅盘堂可以将学位论文的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国家有关部门或机构送交论文的复印件和磁盘。( 保密的学位论文在解密后适用本授权说明)学位论文作者签名:留尹彳c 喜导师签名:签字日期:勺唧年钿尸日解嗍:7 引附日第章绪论第一章绪论c e l lb r o a d b a n de n g i n e ( p g t 简称c e l l 或c b e ) 是于2 0 0 1 年由i b m 、索尼集团、东芝共同开发的高性能非对称多处理器系统,它继承了6 4 位p o w e r p c 结构,具有超强的浮点运算能力,主要运用于索尼的下一代p s 3 游戏主机上,还将会运用在3 d 绘图、影音多媒体与科学运算等方面。目前,c e l l 技术正在向全世界推广,它的应用研究也将越来越广泛,基于c e l l 的图像处理研究便是其中之一。本文通过基于像素的多分辨率纹理合成算法的c e l l 实现来探讨c e l l 应用程序的开发。1 1c e l l 处理器概述c e l l 处理器是具有9 个处理器元素的单片多处理器,这9 个处理器元素共享主存储空间,都支持s i m d 功能,但它们在功能上是有区别的,可被划分成两类,即1 个p o w e r p c 处理器元素( p o w e r p cp r o c e s s o re l e m e n t ,简称p p e ) 和8 个协处理器元素( s y n e r g i s t i cp r o c e s s o re l e m e n t ,简称s p 日【l j 。这种划分从根本上来说是硬件结构设计上的不同,这也决定了在软件应用层次上的区别。p p e 是一个6 4 位p o w e r p c 结构内核,适合运行3 2 位和6 4 位操作系统和控制性应用程序,s p e 适合运行计算密集型程序。8 个s p e 是完全相同的,独立的,都依赖于p p e 运行的操作系统或主控程序,而p p e 又依赖s p e 提高应用程序性能。c e l l 处理器克服了当代处理器性能的三个重要限制,即功率效率、存储器延迟、处理器频率【1 j 。c e l l 处理器元素的划分使得每个处理器元素都处理自己擅长处理的任务,这种擅长是由c e l l 的硬件结构决定的,这种上层和底层的一致性改善了功率效率。p p e 和s p e 访问存储器的方式是不同的,p p e 通过加载存储指令来实现数据在主存储空间和私有寄存器文件之间的交换;s p e 通过d m a 传输来实现数据和指令在主存储空间和局部存储空间问的交换,通过指令获取和加载存储指令实现数据和指令在局部存储器和私有寄存器文件之间的交换。d m a 传输是对传统结构和编程模型的一个根本性突破,它实现了计算和数据传输之间的并行。正是由于s p e 的三层存储器组织( 主存储、局部存储器、寄存器文件) 和d m a传输,存储访问延迟大大降低了。c e l l 本身就是为了实现高频率无额外损耗而设计的,其中p p e 通过在硬件上并发执行两个线程而实现了高效率,s p e 通过提供大的寄存器文件和d m a 传输而实现了高效率。第一章绪论c e l l 处理器的性能大约是传统处理器峰值性能的1 0 倍,当然根据程序的不同,性能也是有变化的i 。有些程序对s p e 特点的利用较少,性能提高不到l o 倍而有些程序性能提高了1 0 倍以上。通常,计算密集型程序更适合c e l l 处理器。2 纹理合成本文所述的纹理合成算法是基于样图及像素匹配的多分辨率纹理合成算法,下面对其中的几个基本概念作以介绍。自然界中存在大量的纹理,这些纹理往往具有自相似性即一小块纹理就能反映整体纹理的特点。这就促使人们着手研究基于样图的纹理合成方法,它基于给定的小区域纹理样本,按照表面的几何形状,拼合牛成整个曲面的纹理,它在视觉上是相似而连续的,即给定- d , 块纹理,生成大块相似的纹理吼该技术是近几年迅速发展起来的一种新的纹理拼接技术,它可以克服传统纹殚映射阱删方法的缺点,又避免了过程纹理合成调整参数的繁瑚,因而受到越来越多研究人员的关注,成为计算机图形学、计算机视觉、图像处理和动画领域的研究热点之一3 1 4 多分辨率台成算法是利用多分辨率金字塔( g a u s s 金宇塔) f 9 越】进行纹理合成的在查找匹配时,考虑已合成的父层的点,从符合条件的待选点中选一个填写。其中查找匹配分为两类,即基于像素的和基于块的t s 划,它们都是根据邻域的匹配情况来寻找最佳匹配像素和块的。本文所述多分辨率合成算法采用基于像素的查找匹配,算法的效果如图i 1 所示。! r二- i 二i曲j 一1 苎丁像雨帕多丹拼率古成算珐“烈粜通常基于像素的纹理合成算法是很耗时问的,其中查找虽佳匹配约占整个运行时问的9 0 以上爿前有各种加速算法在提高其运行速度方面进行研究,而本文则通过在c e l l 处理器上实现该算法的并行化来提高其运行速度。第一章绪论1 3 本文工作及组织结构1 3 1 本文工作本文主要阐述了在搭建的c e l l 软件模拟器上实现基于像素的多分辨率纹理合成算法的过程,c e l l 程序的实现流程如图1 2 所示,详细实现将在第三章、第四章中介绍。本文的工作是搭建c e l l 软件模拟器并完成了如图1 2 所示的整个算法实现流程,具体如下:1 l i n u x 程序实现:程序中,利用文件读操作将b m p 文件数据读到已分配的存储空间中,然后根据纹理合成算法结构进行合成,最后利用文件写操作将纹理数据存入b m p 文件。2 c e l l 程序实现:首先根据p p e 结构特点将l i n u x 串行程序改造成p p e串行程序,然后利用c 语言扩展命令进行代码向量化,最后利用d m a传输、邮箱通信等s p e 结构特点以及s p u 向量命令将程序中纹理合成代码改造成s p e 程序。3 程序划分:首先将输出金字塔每层的数据按行平均划分8 份,并将之分配到8 个s p e 程序中,然后添加每层纹理合成过程问的同步,最后对纹理分界处进行修补。1 3 2 本文结构圜i 嚣图1 2 纹理合成算法的实现流程习f上的映射i根据工作完成的顺序,本文的章节安排如下:第一章绪论,主要介绍c e l l 处理器和纹理合成的概况,以及实现基于像素的多分辨率纹理合成c e l l 程序的基本流程。第一章绪论第二章c e l l 体系结构,主要介绍p p e 和s p e 的基本结构特点,以及p p e 和s p e 间的通信机制。笫三章基于像素的多分辨率纹理合成算法的c e l l 实现,主要介绍合成算结构、算法的l i n u x 程序实现、p p e 程序实现、代码到s p e 上的映射和程序划分。第四章代码优化及性能分析,主要介绍c e l l 程序的运行环境、代码优化以及性能分析。第五章总结,主要是总结程序实现过程中所体现的c e l l 结构特点,以及程序实现中的问题。4第二章c e l l 体系结构第二章c e l l 体系结构c e l l 程序同c e l l 结构是紧密相关的,犹如汇编程序同硬件结构的关系。为了开发出高性能的c e l l 程序,应该对c e l l 结构有充分了解,以便充分利用c e l l的性能优势。本章将以p p e 和s p e 的基本结构及p p e 和s p e 间的通信为主来介绍c e l l 体系结构。2 1c e l l 结构概述c e l l 在同一块芯片上包含了9 个处理器,并通过高带宽存储器一致总线互连和连到外部设备上,结构如图2 1 所示f l 】。图2 1c e l l 结构图x - o通道开翱吐。通道p p e 是主处理器,包含一个6 4 位p o w e r p c 结构精简指令集( r j s c ) 内核,具有虚拟存储子系统,在硬件上是双线程的。它运行实时或非实时操作系统,管理系统资源,并且主要用来处理控制性任务,包括分配和管理s p e 线程。它可以运行传统的p o w e r p c 结构的软件,并执行系统控制代码。八个完全相同的s p e 是向量处理器,适合执行由p p e 分配来的计算密集型操作,都各自包含一个r i s c 内核、用于存储指令和数据并由软件控制的2 5 6 k b 的局部存储器和统一的大寄存器文件( 1 2 8 位x 1 2 8 入口) 。它们支持一个特殊的s i m d指令集,并利用d m a 传输在主存储空间和局部存储空间之间进行指令和数据的移动,d m a 传输是利用p o w e r p c 有效地址来访问主存储空间的。同p p e 一样,s p e第二章c e l l 体系结构上的地址翻译也是i 扫p o w e r p c 段页表来控制的,不过s p e 不运行操作系统。p p e 与s p e 之间的通信,以及它们与主存储空间和i o 间的通信,都是通过e i b( c b e 接口) 来实现的。外部接e i m i c ( 存储器接口控制器) 提供e i b 和主存储器之问的接口,外部接c ib e i ( c e l lb r o a d b a n de n g i n e 接口) 管3 塑e i b 和i o 设备之间的数据传输1 1 1 。2 2p p e 结构在2 1 节中已经介绍了p p e 的基本功能,这一节将简要介绍p p e 的结构、p p e 寄存器以及存储域。p p e 是一个通用目的、双线程的6 4 位r i s c 处理器,它遵循p o w e r p c 结构,包括两个主要单元,即p o w e r p c 处理器单元( p o w e rp r o c e s s o ru n i t ,简称p p u ) 和p o w e r p c 处理器存储子系统( p o w e rp r o c e s s o rs t o r a g es u b s y s t e m ,简称p p s s ) ,如图2 2 所示【l l 。p o w e r p c 处理器元素( p p e )图2 2p p e 模块图p p u 处理指令控制和执行,它包括完整的6 4 位p o w e r p c 寄存器集合、3 2 个1 2 8位向量寄存器、一个3 2 k b 指令高速缓存( c a c h e ) 、一个3 2 k b 数据高速缓存、一个指令控制单元、一个加载存储单元、一个固定点整数单元、一个浮点单元、一个向量单元、一个分支单元、以及一个虚拟存储管理单元。p p u 还支持两个并发的硬件线程,这对软件来说,就是两个独立的处理单元。p p s s 处理来自p p e 的请求和从其它处理器或i o 设备发送至u p p e 上来的外部请求。它提供了一个5 1 2 k b 的统一的指令和数据高速缓存、各种队列、以及一个处理e i b 总线冲突和仲裁的总线接口单元。存储器被p p s s 看成是索引号从0 n 2 “一1 的线性数组,每个字节的索引号也就是地址。存储器访问一次只能发生一个,6第二章c e l l 体系结构并且所有访问表面看来是按照程序顺序发生的。p p e 寄存器是p p e 结构的重要组成部分所有计算处理指令只能对寄存器操作,若要处理存储器数据,需先将数据加载到寄存器。p p e 寄存器主要有两类,一类是与p o w e r p c 指令集相关的“位p o w e r p c 寄存器,可用于标量数据操作,一类是与向量多媒体指令集相关的1 2 8 位向量寄存器,可用于向量数据操作。c e l l 处理罂定义了三种类型的存储域:一个主存储域、八个s p e 局部存储域、八个s p e 通道域,如图2 - 3 所示。主存储域是整个的有效地址空间,通过p p e 操作系统的设置,可由系统中的所有处理器和存储映射设备共享,然而,局部存储域和通道问题状态域则属于每个s p e 的s p u 和m f c 所私有。每个s p e 只能从它自己的局部存储( l s ) 中获取指令和数据,并且它的加载存储指令也只能访问l s 。p p e 和s p e 通过d m a 传输进行主存储和局部存储之间的数据传输,d m a 传输由m f c 的d m a 控制器控制。s p u 上的软件通过通道与m f c 交互,通道可以将d m a 命令放入队列并提供其他功能,如邮箱、信号通知和存取辅助资源。s p e 程序使用局部存储地址来访问自己的l s ,每个s p e 的l s 在存储器映射中也被赋予了一个有效地址范围,高优先级软件可以将局部地址映射成有效地址,以便p p e 、其他s p e 和其他设备访问它。i 嚣夸)。月雾驻,( i i l 图2 3 存储域第二章c e l l 体系结构2 3s p e 结构s p e 适合处理计算密集型应用程序,如3 d 图形、多媒体、宽带通信等,不适合处理多分支的应用程序,如操作系统,它也是c e l l 应用程序性能提高的关键。它不仅没有会带来损耗的加载存储地址翻译、硬件管理高速缓存和无序指令发布,而且它还有一个大的寄存器文件、双指令发布和高d m a 带宽,因而s p e能实现很高的性能。这一节将简要讨论这些高性能结构,首先是介绍s p e 的基本结构,然后再分别介绍s p u 和m f c 的结构特点。2 3 1s p e 的基本结构s p e 主要有协处理器单元( s p u ) 和存储器流控制器( m f c ) 构成,如图2 - 4 所示【l 】。s p u 处理指令控制和执行,它从l s 中获取指令并执行,通过通道向m f c发布命令。m f c 通过e i b 进行l s 和主存储空间的d m a 传输,提供了s p u 和主存储空问的接口,它并通过邮箱和信号通知进行s p e 与p p e 或其他设备间的消息传递,提供了s p e 和p p e 或其他设备之间的通信接口。日b图2 4s p e 的结构2 3 2 协处理器单元( s p u )s p u 包含一个有1 2 8 个寄存器的寄存器文件、一个统的2 5 6 k b 的局部存储器、一个指令控制单元、一个加载存储单元、两个固定点单元、一个浮点单元和一个通道d m a 接口,它有一个新的s i m d 指令集,即s p u 指令集结构。s p u 有1 2 8 个1 2 8 位的通用功能寄存器( g p r ) ,构成了一个大的寄存器文第二章c e l l 体系结构件,并且每个寄存器可容纳任何数据类型,也正是由于这个大寄存器文件,s p e才没有使用无序处理和深度思索等代价昂贵的硬件技术,从而极大的提高了性能。另外,它还有一个1 2 8 位的浮点状态控制寄存器( f p s c r ) ,用来记录每次浮点操作后的结果和相关异常信息。s p e 同p p e 一样,所有的计算指令也只能对寄存器操作,而不能修改存储器。浮点操作包括单精度和双精度浮点操作,两种浮点操作都遵守i e e e 7 5 4 标准,但是单精度浮点操作的结果不完全遵守i e e e 7 5 4 标准。对于单精度浮点操作而言,非零数的范围是从x m i n = 2 1 2 6 到x m a x = ( 2 2 2 3 ) 2 1 2 8 ,若计算结果上溢,则将结果置成带有合适符号的x m a x ,若下溢,则将结果置0 。双精度浮点操作不支持i e e e 精度异常模式,如果结果不遵守i e e e 7 5 4 标准,那么结果的偏差就会纪录在f p s c r 寄存器的一个固定位中。此外,s p u 在一个周期中只能执行一个双精度操作,并且它不与其他任何指令双发布【3 1 。局部存储( l s ) 可以被看成是一个软件控制的高速缓存,它是由d m a 传输来填充和清空的,它的主要特征有:存储指令和数据、每周期1 6 字节的加载存储带宽并且只能4 字对齐、每周期1 2 8 字节的d m a 传输带宽、每周期1 2 8 字节指令预取。为避免各种操作冲突,l s 的访问具有优先级:d m a 读写( 高) 、加载存储( 中) 、指令预取( 低) 。l s 加载存储操作仅支持1 6 字节对齐,若不对齐,则使用读一修改一写操作,当然这通常是由编译器来完成的。s p u 有两个指令流水线,被命名为流水线0 ( 偶线e v e n ) 和流水线1 ( 奇线o d d ) ,一个周期中可发布并完成两条指令,每个流水线一个。一条指令进入哪个流水线要根据指令类型,而指令类型又与执行这项功能的执行单元有关,每个执行单元都被赋予了两个流水线中的一个。指令类型与流水线的大致关系是:加载存储指令、分支指令、混洗指令、通道指令以及特殊功能寄存器指令属于o d d 流水线,浮点指令、字节指令、简单的固定点指令以及字节操作指令属于e v e n 流水线。因此,编程时指令的安排对程序性能也有着很大影响。s p u 取指令操作也是仅支持1 6 字节对齐的,它每次取两条指令( 称为获取组) 每条指令8 字节。在一个获取组中,第一个指令必须是偶数字地址,第二个指令必须是奇数字地址。s p u 按获取组处理指令,当前获取组空了以后,再取下一个获取组。一条指令只有当它的寄存器依赖被满足并且没有资源冲突时才能被发布,若获取组中的两条指令都是可发布的,并且第一条指令可在偶流水线中执行,第二条指令可在奇流水线中执行,则这时的发布就称为双发布( d u a li s s u e ) 【l 】。若获取组不能被双发布,则第一条指令先发布,第二条指令直到第一条发布完后再发布。获取组中的两条指令都发布完后,才能再加载下一个获取组。显然,双发布9第二章c e l l 体系结构的速率更快,在编程时应合理安排代码顺序,减少数据依赖,尽可能做到双发布。2 3 3 存储器流控制器( m f c )如图2 4 所示,m f c 的主要功能是把s p u 连接到e i b 上,并支持d m a 传输、邮箱和信号通知。m f c 维持并处理d m a 命令队列,m f c 的d m a 控制器执行d m a 命令,这就使得s p u 与m f c 的d m a 传输并行执行。为了进行d m a传输、s p u 事件监视、处理器问的邮箱和信号通信,m f c 支持通道和相关的m m i o 寄存器技术,此外,它还支持定时器访问、总线带宽预留、以及s p u 与其他处理单元之间的同步操作。通道是支持3 2 位信息的单向寄存器或队列,s p u 就是通过通道向m f c 发送m f c 命令和消息的,在s p e 指令集中定义了三条通道操作指令:写通道指令( w r c h ) 、读通道指令( r d c h ) 和读通道计数指令( r c h c n t ) ,s p u 就是通过这三条指令来完成对通道的读些和控制操作的。每个通道也都有相关的m m i o 寄存器,这些寄存器可由p p e 或其他s p e 和设备通过加载存储指令访问。每个通道也都有一个计数,来指示通道的剩余容量,当针对某一通道的通道指令发布时,通道计数减一,当针对某一通道的操作完成时通道计数加一。每个通道都是单向的,只能或读或写,而不能即读又写。每个通道或者是阻塞的或者是非阻塞的,s p e 读写一个计数为零的阻塞通道会引起s p e 的停滞,直到计数大于零为止。p p e 对通道寄存器的读或写是非阻塞的,但是它可以读通道状态寄存器,从中获取通道计数,进行测试以免读取无效数据或覆盖数据,如p p e 可读邮箱状态寄存器s p um b o xs t a t ,并从这个寄存器中获取邮箱通道计数。编程时经常使用的s p u 信号通知通道、s p u 邮箱通道和m f c 标签状态通道将在下面几小节详细介绍。m f c 中有两个命令队列,即s p u 命令队列和辅助命令队列,s p u 利用通道指令向m f c 通道发布的命令存于s p u 命令队列中,p p e 或其他设备利用加载存储指令向m f c 的m m i o 寄存器发布的命令存于辅助命令队列中。p p e 上的高优先级软件为l s 和m m i o 寄存器等资源提供了有效地址,使得p p e 上的软件或其他s p e 和设备可以访问这些资源并控制s p u 。2 4p p e 和s p e 间的通信p p e 和s p e 问的通信是通过m f c 所支持的通道以及相关的m m i o 寄存器进行的,s p e 通过通道机制来收发数据,p p e 通过m m i o 寄存器收发数据。p p e和s p e 问的通信机制主要有三种:d m a 、邮箱和信号通知,本节将分别讨论这1 0第二章c e l l 体系结构三种机制。2 4 i 邮箱邮箱是支持s p e 与p p e 或其他设备之间进行3 2 位消息交换的队列,它是单向的,用于s p e 发送消息的邮箱称为o u t b o u n d 邮箱,用于s p e 接受消息的邮箱称为i n b o u n d 邮箱,这里的i n 和o u t 都是针对s p e 来说的。s p e 有两个单入口的o u t b o u n d 邮箱,即s p u 写出邮箱( s p uw r i t eo u t b o u n dm a i l b o x ) 和s p u 写出中断邮箱( s p uw r i t eo u t b o u n di n t e r r u p tm a i l b o x ) ,还有个四入口的i n b o u n d 邮箱,即s p u 读入邮箱( s p ur e a di n b o u n dm a i l b o x ) 。每个邮箱都有一个s p e 通道和相关m m i o 寄存器( 如表2 1 所示) ,邮箱通道的计数指示邮箱可用入口的数目。s p e 程序可以通过写通道指令发送消息到o u t b o u n d邮箱,每写一次相应通道计数减一,p p e 可以使用加载指令从o u t b o u n d 邮箱寄存器中取出邮箱内容,每取一次通道计数加一。同样,s p e 程序可以通过读通道指令获取i n b o u n d 邮箱中的消息,每读一次相应通道计数减一,p p e 可以使用存储指令发送消息到i n b o u n d 邮箱寄存器,每发一次通道计数加一。p p e 对o u t b o u n d邮箱的读或对i n b o u n d 邮箱的写可以通过编程来设置事件,当事件发生时会产生s p e 中断,s p e 对s p u 写出中断邮箱的写也可以通过编程引发p p e 或其他设备的中断。表2 1 邮箱通道和m m i o 寄存器通道m m i o 寄存器名字最大读宽度最大读宽度记法记法计数写( 位)计数写( 位)s p u 写出s p u 二w r o u t m b o x1写3 2s p u o u t m b o xl读3 2邮箱s p u 读入s p u _ r d l n m b o x4读3 2s p u - i n m b o x4写3 2邮箱s p u 写出s p u w r o u t i n t r m bs p u o u t i n t r m bl写3 21读3 2中断邮箱0 x0 x四入口的s p u 读入邮箱是一个先进先出的队列,s p e 程序读出来的是最早进入的数据。如果p p e 程序在s p e 程序读数据之前向邮箱写入了四次以上的数据,那么通道计数会保持4 ,邮箱的第四个位置保存的是最后一次写入的数据。比如,如果在s p e 程序读之前写入了5 次数据,那么邮箱中保存的将是第一次、第_ - 章c e l l 体系结构第二次、第三次和第五次写入的数据,第四个位置的数据是要被覆盖的 1 】。若p p e 程序在s p e 程序向o u t b o u n d 邮箱写数据前读数据,则会读到无效数据。为了避免数据覆盖和读取无效数据,可以利用通道计数进行测试。s p e 可以利用通道操作指令来处理邮箱信息,邮箱通道操作是阻塞的。若s p e 企图向已经满了的o u t b o u n d 邮箱写数据,s p e 会阻塞,直到p p e 读走数据后才继续运行并写入数据;同样,若s p e 企图从空i n b o u n d 邮箱读数据,s p e 会阻塞,直到p p e 写入数据后才继续运行并读取数据。若不希望s p e 阻塞,可以通过测试通道计数来决定是否读写邮箱。此外,s p e 还可以利用邮箱事件进行阻塞或测试。2 4 2 信号通知信号通知通道是i n b o u n d 寄存器,只能接受从p p e 或其他s p e 和设备传来的信息,而不能发送信息。每个s p e 都有两个信号通知通道,分别对应着一个3 2 位的m m i o 寄存器( 如表2 2 所示) ,p p e 或其他s p e 和设备就是通过m m i o寄存器发送消息或读消息的,并且信号也不必再使用存储指令发送,它有特殊的信号发送指令,即s n d s i g 、s n d s i g fs n d s i g b 【3 】,这给s p e 间的通信带来了方便。表2 - 2 信号通道及相关寄存器通道m m i o 寄存器名字最大读|宽宽最大读记法度记法度计数写计数写( 位)( 位)通道s p u r d s i g n o t i f ys p u _ s i g _ n o t i f y 读l读3 2l3 2111写通道s p u r d s i g n o t i f ys p u s i gn o t i f y _读l写3 213 222一,写二s p e 对自己的信号通道的读操作会自动清空通道,但是p p e 或其他s p e 对m m i o 寄存器的读操作不会清空。信号通道是阻塞的,当信号通道内没有悬挂信号时,读操作会导致s p e 停滞。信号通道写操作有覆盖写和逻辑或写两种模式,这由软件来设置。在覆盖写模式下,写入的信号覆盖先前的信号,这又称为一对一信号模式。在逻辑或写模式下,写入信号与先前信号进行或操作,这种模式又称为多对一信号模式。在一对一信号模式下,使用信号通知和邮箱在性能上没有本质差别。1 2第二章c e l l 体系结构2 4 3d m a 传输d m a 传输用于实现主存储器和s p e 局部存储器之间的批量数据传输,这也是解决s p e 上局部存储空间不足的主要手段。在d m a 传输中,主存储器是以有效地址( e a ) 编址的,局部存储器是以局部地址( l s a ) 编址的,m f c 所支持的传输大小可以是1 字节、2 字节、4 字节、8 字节以及1 6 字节的整数倍,最大传输大小1 6 k b 。d m a 传输是通过m f c 执行d m a 命令来实现的,d m a 命令是用于数据传输的m f c 命令,它的传输方向是从s p e 的角度来说的,从主存储器到s p e 局部存储器的传输称为g e t ,从s p e 局部存储器到主存储器的传输称为p u t ,它既可由s p u 来发布,也可以由p p e 来发布。s p u 利用基本通道指令访问m f c 命令参数通道来发布d m a 命令,p p e 则是利用加载存储指令访问相关m m i o 寄存器( 如表2 3 所示) 来发布d m a 命令。表2 3m f c 命令参数通道及寄存器最大宽度读通道通道寄存器功能入口( 位)写阻塞m f cl s am f cl s a存储局部存储地址l3 2写否m 【f ce a hm f ce a h存储有效地址高半字13 2写否存储有效地址低半字或列表1m f ce a lm f ce a l3 2写否地址m f c s i z em f c _ s i z e存储传输大小或列表大小13 2写否m f c _ t a g i dm f c _ t a g i d存储命令标签标示m 限cc m dm f c c l a s s 皿c m d存储命令操作码或类标示83 2写是m f c c m d s t a t u s返同命令状态l3 2读除g e t l l a r 、p u t l l c 和p u t l l u c 3 】外,所有d m a 命令都有一个5 位的标签,标签相同的d m a 命令组成一个标签组。标签可用于检查同一个命令队列( s p u 命令队列或辅助命令队列) 中整个标签组的状态,测试或等待一个或几个标签组内所有队列命令的完成。标签是可选的,但它在使用路障( b a r r i e r ) 或围墙( f e n c e )的情况下是非常有用的。路障和围墙是用于控制同一命令队列中m f c 命令的执行顺序的,它们可以同步同一标签组中的d m a 命令。路障命令要等到在它之前发布的所有同标签的命令执行完后才能执行,并且在它之后发布的同标签命令都要等到路障命令执行第二章c e l l 体系结构完后才能执行;围墙命令与路障命令的不同之处在于在它之后发布的命令可以在它之前执行,如图2 6 所示。路障7t 777 ,r一71;目# 工 二 工 二 】二【 二 工 二 工在d m a 传输中,还可以使用d m a 列表传输把主存储器中多个分散数据区域集中到局部存储器中一个连续的数据区域上来。d m a 传输列表是一个由d m a传输元素构成的序列,每个传输元素都代表着一个d m a 传输,都包含传输大小、有效地址低半字和停止通知位。列表必须存放在s p e 局部存储器中,并且是1 6字节对齐的,列表命令只能由s p e 发布,而不能由p p e 或其他s p e 发布。传输列表中的元素个数可选到2 k ,每个传输都与一般d m a 传输一样,最多可传输1 6 k b 的数据。若一个传输元素的停止通知位置1 。则该传输元素执行完后,列表传输会挂起,直到s p e 程序清空了停止通知事件才继续执行,这为修改后序传输元素提供了机会。第三章多分辨率纹理台成在c e l l 上的实现第三章多分辨率纹理合成在c e l l 上的实现本章主要介绍使用c 语言在c e l l 上实现多分辨率纹理合成算法的过程,包括l i n u x 串行程序、p p e 串行程序、向量化、p p e 程序到s p e 上的分配和程序划分。31 多分辨率纹理合成算法在该算法中由输入纹理构造高斯金字塔,然后蛮力搜索输入金字塔的每一层,查找最佳匹配像索,来产生输出金字塔同层的一个像素。这里的高斯金字培中的每层自下而上分辨率降低高分辨率层包含了低分辨率层的所有信息。输出金字塔的每一层是按照光栅扫描的方式通过蛮力搜索最佳邻域匹配来牛成纹理的,每个邻域不仅包吉了当前分辨率信息还包含了低分辨率的所有信息,像素的相似度是通过邻域的欧几里得距离来评估的。这样,每层分辨率生成时,低于该层分辨率的纹理都被加入到了计算过程中最底层分辨率的纹理作为最终结果返回,如图3 - 1 所示的是四层分辨率的纹理合成6 1 。图3 1多分辨毕纹理台成 | ! c 秆第三章多分辨率纹理合成在c e l l 上的实现算法基本结构如下:初始化输入样图z :初始化输出纹理图x :g z = c r e a t e l m a g e p y r a m i d ( z ) ;g x = c r e a t e l m a g e p y r a m i d ( x ) ;l = 0 :w h i l e ( l 不是最后一层)f o r e a c hp i x e lpeg x ( l )g x ( l ,p ) = f i n d b e s t m a t c h ( g x ,g z ,l ,p ) ;l + + :)r e t u r l lx :该算法大致有三个相对独立的模块:图片初始化、多分辨率图像金字塔构造和纹理合成模块,下面分别介绍这三个模块。图片初始化过程较简单,输入样图初始化过程是在内存中分配样图空间并将样图文件中的像素数据载入内存,输出图像初始化过程是在内存中分配空间并用随机数初始化像素,以免初始输出图片的结构性影响纹理合成的结果。图像金字塔的构造可有多种方案,如高斯金字塔【2 2 】、拉普拉斯金字剖9 ,2 l 】、可控金字塔【2 3 】等,本算法使用的是高斯金字塔。高斯金字塔中,最底层是初始图片,其他每层都是由其下层经过连续的滤镜操作和缩减操作而得到的初始图像的模糊版本,如图3 2 所示。因此,金字塔由底向上分辨率降低。1 6第三章多分辨牢纹理合成在c e l l 上的实现f ,0 0l 门0。础盯= l ,2 0l ,3 0u 4 0f 0 1,1 1,2 1,3 1,4 1f 0 2 ,0 3 0 4 、1 2 1 3 1 4 l2 2 2 3 2 4l ,印x d =3 2 3 3 ,3 4 lf 4 2 4 3j 蚺1”日”“2 暑矗。珊( 6 拙”水p “) j田珀厂_瞄划lp j x e l h o o d图3 - 2 图像金宇塔的构遣纹理合成模块中的主要操作是匹配查询操作基车过程如图3 - 3 所示。这里的匹配查询操作是基于像素的,也就是在纹理台成过程中每次选代只产牛一个像素,并且像素的匹配是通过计算像素邻域问的欧几里得距离川( 如图3 _ 4 所示)来评价的。像素的邻域并不一定是正方形,可以是满足照旋转逼近原则的任意不规则的形状口7 l ,并且邻域尺寸对于纹理合成的效果也有影响,我们这里选用l ”型邻域删,这可避免把未牛成的像素考虑到当前计算中,其尺寸为9 ,如图3 - 5所示。匹配查询操作是蛮力搜索,占用整个程序运行时间的9 0 以上。图3 - 3 查询匹配操作她出嘲嘲心邶出邸邸邮啦雎衅坤坤汕埘砣肿m善枷蛐椭蛐第三章多分辨率纹理合成在c e l i 上的实现c j f = l g 0 z z e d - p j r e d ) 2 + ( p z g r e e n - p j s r e e n ) 2 + f , p i h l u e - p j h l u e ) 2 p 把舰p j e _ a t i 图3 - 4 邻域n 1 和n 2 的欧几里的距离图3 5 “l ”型邻域匹配查询操作( f i n d b e s t m a t c h ( g x ,g z ,l ,p ) ) 的基本框架如下:n x = b u i l d n e i g h b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家电公司会计核算管理办法
- 高速养护考试题及答案
- 未来摄影师:全球视角与多元影像-2
- 保密考试题多选及答案
- 合肥二建考试题及答案
- 急救药品考试题及答案
- 新疆维吾尔自治区普通高中2026届化学高一上期中监测试题含解析
- 2026届黑龙江省哈尔滨兆麟中学、阿城一中、尚志中学等六校化学高一上期中监测试题含解析
- 知识题库-电厂灰硫主检修工岗位考试题目及答案
- 一年级上册英语试题-Unit7Letscount练习(含答案)沪教牛津版(深圳用)
- 多学科会诊MDT胃恶性肿瘤
- (33)-钠钾泵细胞生物学
- 抗反转录病毒药物的毒副作用
- 项目档案归档目录一览表(档案室用)
- GB/T 242-2007金属管扩口试验方法
- 路基压实度汇总表
- 【食品生产加工技术】香肠的加工技术
- 小学数学三年级下轴对称、平移和旋转强化练习
- 助产士咨询门诊课件
- 数学基础模块上册课件
- 垂体瘤精品课件
评论
0/150
提交评论