




已阅读5页,还剩59页未读, 继续免费阅读
(计算机系统结构专业论文)高级着色语言及其优化编译.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学硼:i 二学位论文 摘要 图形硬件技术已经进入了可编程的时代。可编程图形处理器允许用户编写运 行在其上的顶点着色程序与片断着色程序,取代内置的固定功能渲染流水线,实 现定制的渲染算法。随着硬件能力的不断加强,可编程图形处理器的应用领域在 不断扩大。除了可以用于实时渲染,可编程图形处理器在非实时渲染与科学计算 领域电在获得了广泛的应用。 可编程图形处理器支持两种开发语言,即低级着色语言( l l s l ) 与高级着 色语言( t t l s l ) 。低级着色语言类似于汇编语言,可以充分利用硬件能力以编写 出高性能的着色程序,但是过于依赖硬件平台,而且难学难用。高级着色语言则 具有平台独立、易于使用、开发资源丰富等优点,正在快速成为图形开发者的首 选。目前高级着色语言主要有三种,即c g 、d i r e c t xh l s l 与o p e n g lg l s l a n g 。 其中g l s l a n g 山于o p e n g l 的广泛应用性与开放性而具有重要的实践与理论价值。 本文的研究对象是o p e n g lg l s l a n g 及其优化编译技术。我们实现了一个可以 将g l s l a n g 着色程序编译为o p e n g ll l s l 着色程序的优化编译器g c x ( g r a p h i c s c o m p i l e r x ) 。 本文分为两部分。第部分在介绍可编程处理器及低级着色语言的基础上, 重点研究了o p e n g l 平台上的高级着色语言g l s l a n g 。第二部分研究了实现g l s l a n g 编译器的相关技术,重点是后端优化编译技术。g e x 支持两类后端,一类不支持 转移指令,另一类支持转移指令,但两者都缺乏一般微处理所具有的例如逻辑指 令、存储器间接访问等特性。为此,g c x 使用了诸如合并分支执行结果、循环展 开、过程集成等方法来克服这些困难。 可编程图形处理器与高级着色语言仍然处于快速发展之中。方面可编程图 形处理器在向着通用流处理器方向发展,另一方面高级着色语言也在向着通用流 编程语言方向发展。对作为高级着色语言重要一员的g l s l a n g 及其优化编译技术 的研究也因此具有重要的意义。 关键词: 可编程图形处理器,流处理器,编译器,优化编译,实时渲染,着色程序, 低级着色语言,高级着色语言 塑竖查兰堡:! _ ! 兰堡笙苎 a b s t r a c t w ea r en o wi nt h ee r ao fp r o g r a m m a b l eg p u s t h ep r o g r a m m a b l eg p u t l e r m i t sd e v e l o p e r st ow r i t ev e r t e xs h a d e r sa n df r a g m e n t s h a d e r sr u n n i n go ni t , t o r e p l a c e t h ef i x e d f u n c t i o n p i p e l i n e ,a n d t o e m p l o y c u s t o m r e n d e r i n g a i g o r i t h m s w i t h i t s c o n t i n u a l l y e n h a n c e dh a r d w a r e c a p a b i l i t i e s ,t h e p r o g r a m m a b l eg p u e x t e n d si t sa p p l i c a b l ef i e l d sw i t h o u tab r e a k a s i d ef r o m r e a l t i m er e n d e r i n g ,t h ep r o g r a m m a b l eg p u i sa l s ou s e di nt h ef i e l d so fo f f - l i n e r e n d e r i n g a n ds c i e n t i f i cc o m p u t a t i o n p r o g r a m m a b l eg p u ss u p p o r tt w ok i n d so fd e v e l o p i n gl a n g u a g e s ,n a m e l y , l o w l e v e l s h a d i n gl a n g u a g e a n d h i g h - l e v e ls h a d i n gl a n g u a g e l i k ea s s e m b l y l a n g u a g e ,l l s lc a nb eu s e dt ow r i t eh i g hp e r f o r m a n c e s h a d e r s b u tt h eh e a v y d e p e n d e n c eo ns p e c i f i ch a r d w a r ea n d t h ed i 伍c u h yt oi e a r na n du s eh a m p e ri t f r o mb e i n ge f f e c t i v e l yu s e d o nt h eo t h e rh a n d ,h l s li sh a r d w a r ei n d e p e n d e n t , e a s yt ou s ea n dr i c hi nr e u s a b l es h a d e rr e s o u r c e sa n d t h u sq u i c k l yb e c o m e st h e f i r s tc h o i c ef o rg r a p h i c sd e v e l o p e r s t h e r ea r et h r e em a j o rh l s l s ,n a m e l y , c g , d i r e c t xh l s la n do p e n g lg l s l a n g t h eb r o a da p p l i c a t i o na n do p e n n e s so f o p e n g l m a k e g l s l a n g av a l u a b l es n b j e c tf o rr e s e a r c h t h i s p a p e r t h e r e f o r ef o c u s e so n g l s a n g a n di t s o p t i m i z i n gc o m p i l i n g t e c h n o l o g i e s w eh a v ei m p l e m e n t e d a no p t i m i z i n gc o m p i l e rc a l l e dg c xw h i c hc a n t r a n s l a t eg l s l a n gs h a d e r st oc o r r e s p o n d i n go p e n g ll l s ls h a d e r s t h i s p a p e r c o u l db ed i v i d e di n t ot w o p a r t s i n t h ef i r s t p a r t ,a f t e r i n t r o d u c i n gt h ep r o g r a m m a b l eg p ua n dl l s l ,w es t u d yo p e n g lg l s l a n g c o m p r e h e n s i v e l y i nt h es e c o n dp a r t ,w es t u d yo p t i m i z i n gc o m p i l i n gt e c h n o l o g i e s r e l a t e dt o g l s l a n g g e xs u p p o r t st w ok i n d so fb a c k e n d s 。o n es u p p o r t sb r a n c h i n s t r u c t i o n s t h eo t h e rd o e s n t a n dt h e yb o t hl a c kf e a t u r e sc o m m o nt og e n e r a l p u r p o s em i c r o p r o c e s s o r ss u c h a sl o g i ci n s t r u c t i o n sa n di n d i r e c tm e m o r yr e c e s s t ot a c k l et h e s ep r o b l e m s ,g c xe m p l o y sb r a n c hr e s u l tc o m b i n i n g ,l o o pu n r o l l i n g , p r o c e d u r ei n t e g r a t i o na n do t h e rt e c h n i q u e sv a s t l y p r o g r a m m a b l eg p u sa n di i l s l a r es t i l l d e v e l o p i n gr a p i d l y o nt h eo n e h a n d ,p r o g r a m m a b l eg p u sa r ee n v o l v i n gt o w a r d sg e n e r a ls t r e a mp r o c e s s o r s o nt h eo t h e rh a n d ,t l l s li sa l s o e n v o l v i n g t o w a r d sa g e n e r a l s t r e a m p r o g r a m m i n gl a n g u a g e c o n s e q u e n t l y ,t h es t u d y o fh l s la n di t s o p t i m i z i n g c o m p i l a t i o n i so f g r e a ts i g n i f i c a n c e t oc a t c ht h i st r e n d k e y w o r d s : p r o g r a m m a b l eg p u ,s t r e a mp r o c e s s o r , c o m p i l e r , o p t i m i z i n gc o m p i l a t i o n , r e a l t i m er e n d e r i n g ,s h a d e r , l l s l ,h l s l 4 浙汀大学硕l 学位论文 第一章引言 实叫渲染方面的研究是计算机图形学中极为活跃的一个领域。科学研究、军 事仿真、工业设计与电子娱乐等行业对实时图形应用的强烈需求:以摩尔定律主 宰下飞速发展的半导体工业为基础的图形硬件技术的发展;以及大量实时与非实 时渲染理论、算法和经验的积累,使得实时图形渲染研究成为图形学研究的焦点, 在较短的时间内从简单应用走向成熟而广泛的应用,产生出逼近电影质量的渲染 效果。目前实时渲染研究的一个重要课题是如何尽可能的利用建立在流处理器 ( s t r e a mp r o c e s s o r ) 模型之上的的现代图形硬件一图形处理器( g p u ) 一的 硬件可编程能力,以满足实时图形应用的各种渲染要求。例如更大的场景、更高 得动态性与更好的渲染质量等;和各种非图形的科学计算要求,例如线性方程求 解、微分方程数值求解等。 现代图形处理器基于流处理器模型 k a p a s i 0 2 】,它们内部包括两种类型的流 处理器:顶点处理器( v e r t e xp r o c e s s o r ) 和片断处理器( f r a g m e n tp r o c e s s o r ) ,分 别对应渲染流水线中的每顶点操作与每片断操作两个流水级,如图1 1 所示: ( 图- 1 1 ,可编程渲染流水线) 每顶点操作由运行于顶点处理器之上的顶点着色程序( v e r t e xs h a d e r ) 进行,每 片断操作l “运行于片断处理器之上的片断着色程序( f r a g m e n ts h a d e r ) 进行,这 两部分处理因此也称为可编程的。其它处理则是不可编程的。流处理器的输入称 为输入流,输入流由大量同构的数掘元素组成,运行在流处理器上的程序称为流 核( s t r e a mk e r n e l ) ,流核每运行一次处理输入流中的一个数据元素,并将其放入 输出流。流核对不同数据元素的处理是相互独立的,因此流核的多个拷贝可以同 时运行在流处理器内部的多个微引擎之上,同时并行处理多个数据元素。例如, 图1 1 中的顶点着色程序即是顶点处理器的流核,它的输入是顶点属性流,输出 是处理后的顶点属性流:片断着色程序则是片断处理器的流核,它的输入是片断 属性流,输出是处理后的片断属性流。 顶点着色程序取代了固定功能渲染流水线图形硬件的几何变换与光照计算 模块,它主要用于进行顶点坐标变换、顶点法向量变换、纹理坐标生成与变换等 操作。片断着色程序取代了固定功能渲染流水线图形硬件的每片断处理模块,它 主要进行纹理混合等效果。虽然实时图形应用可以只使用顶点着色程序或者片断 着色程序中的一种,甚至都不使用而依旧使用固定功能渲染流水线,但是要获得 各种逼真的图像效果,例如基于片断的光照计算,则往往需要两种着色程序协同 工作。 现代图形处理器同时还是基于寄存器的向量处理器,它们的寄存器都是四分 量浮点寄存器,指令集也直接支持向量运算。早一些的的图形处理器不支持转移 指令,只能线性执行流核,现在的主流高端图形处理器,例如n v i d i an v 3 x n v 0 3 ,a t ir 3 x x 【a t l 0 3 】已经可以支持静态或者动态、无条件或者条件转移指 令了。 浙江大学碳:l j 学位论文 现代图形处理器通过通用3 d a p i ( o p e n g l 【o p e n g l 或者d i r e c t x 【d i r e c t x ) 将可编程性暴露给用户。蓿色程序可以使用类似于汇编语言的低级着色语言 ( l l s l ) 编写, 歹4 如d i r e c t x 的p s _ l 一0 、p s 一2 _ o 和v s 1 0 、v s 一2 0 ,o p e n g l 的a r b v p l 0 和a r b f p l 0 ,也可以使用高级着色语言( h l s l ) 编写,例如n v i d i a 的 c gf m a r k 0 3 1 ,d i r e c t x 的h l s l 和o p e n g l 的g l s l a n g 【3 d l a b s 0 3 】。高级着色语言 一般都是在r e n d e r r n a n 着色语言和c 语言的基础上发展而成。图一1 2 与图1 1 3 分别描述了三种高级着色语苦与及其使用环境。 ( 图一1 2 ,d i r e c t xi t l s l 与g l s l a n g ) 对于d i r e c t xh l s l ,应用程序调用d i r e c t x 运行库将h l s ls h a d e r 编译为 l l s ls h a d e r ( 二进制格式的p - c o d e 序列) ,然后传递给d 3 d 驱动进一步优化编 译成图形硬件可以直接执行的微码并且上载到图形硬件。而对于o p e n g l g l s l a n g ,应用程序调用o p e n g l 运行库直接将h l s ls h a d e r 传递给o p e n g l 驱动, 然后由驱动将其编译为图形硬件可以直接运行的微码并上载到图形硬件。这两种 策略的根本区别就在于d 3 d 驱动只需要实现一个后端编译器,o p e n g l 驱动则 需要实现一个完整的编译器。 ( 图一1 3 ,c g ) n v i d i a 公司的c g 则是一种跨平台的解决方案。c g 语言不但可以跨图形硬件 平台( 支持o p e n g l 与d i r e c t 3 d ) ,也可以跨操作系统( 支持w i n d o w s 、l i n u x 与m a c ) 。c g 运行库封装了3 da p i 与s h a d e r 相关的部分。它可以根据对象平台 塑坚查堂型型:堂垡鲨奎 的类型将c gs h a d e r 编译为相应的l l s ls h a d e r ,然后调用被封装的3 da p i 将 l l s ls h a d e r 传递给图形硬件。 研究高级着色语言及其优化编译具有较高的理论意义与现实意义: 1 ) 使用高级着色语言是实现商质量实时渲染应用的必然选择。要充分利用 图形硬件的可编程能力,摆脱低级着色语言对具体图形硬件的依赖性,提高工作 效率,降低开发成本,利用已经存在的大量优秀r e n d e r m a ns h a d e r ,以实现电影 质量实时图形渲染,就必然要使用高级着色语言。 2 ) 现代图形处理器的硬件能力越来越强,正在由专用图形处理器向着通用 流处理器的方向发展。在图形处理器上进行通用计算具有很好的应用前景,并且 现在已经取得令人满意的成绩。例如斯坦福大学的b r o o k 项目 b u c k 0 3 1 。高级 着色语苦的功能也会相应的发展,添加越来越多的高级语言特性。这点从各种高 级着色语言保留的关键字就可以看出来。 3 ) t i - 能对于实时图形渲染具有举足轻重的意义。丌发者只有在确信h l s l 编译器产生的代码在性能上可以和手写l l s l 代码相比时才会选择使用h l s l 。 因此,必须对h l s l 的优化编译进行深入研究。 本文选择g l s l a n g 及其优化编译技术作为研究对象。但是我们要实现的目标 并不是g l s l a n g 规范所规定的内嵌在o p e n g l 驱动中以硬件可以直接执行的微码 为编译目标指令的编泽器。我们的目标是一个命令行编泽器,它的输入是g l s l a n g s h a d e r ,输出为用户指定的o p e n g l l l s ls h a d e r 。之后用户就可以在o p e n g l 应 用中使用这些l l s ls h a d e r 。做出这个选择的原因如下: 1 ) c g 和d i r e c t xh l s l 都已经有了成熟的商业编译器。而且这两种语言规 范也不要求图形处理器厂商开发全功能的优化编译器。 2 ) g l s l a n g 规范要求图形处理器厂商必须在自己的o p e n g l 驱动晕面实现全 功能的g l s l a n g 优化编译器,这样图形处理器厂商可以针对自己的硬件,结合高 级优化编译技术,高效灵活的提供g l s l a n g 支持。 3 ) o p e n o l 是一个开放的标准,大量的学术研究基于o p e n g l 进行。研究 o p e n g l 上的图形编译器既可以充分利用前人的研究成果,又可以为后人的研究 工作提供基础。 4 ) 目前图形硬件厂商对g l s l a n g 的支持还处于试验阶段,还没有完善的 g l s l a n g 优化编译器出现,因此这项工作具有一定的前瞻性。 5 ) 另一方丽,g l s l a n g 是o p e n g l 2 0 o p e n g l 2 规范的一部分,丙目前用户 还无法接触到完整的o p e n g l2 0 实现,因此也无法使用g l s l a n g 。这样,一个以 o p e n g l l l s l 为后端的的g l s l a n g 优化编译器允许用户在现有的图形硬件上提前 进行g l s l a n g 的学习和开发工作。即使未来支持g l s l a n g 的图形硬件大量出现,这 样的一个g l s l a n g 优化编译器仍然允许用户在老的图形硬件上运行g l s l a n g 应用。 我们的g l s l a n g 优化编译器g c x ( g r a p h i c sc o m p i l e r x ) 的输入为g l s t a n gv e r t e x s h a d e r 或者g l s l a n gf r a g m e n ts h a d e r 。输出根据用户指定的e l 标平台,可以分为两 类。第一类面向较早的图形处理器,这类图形处理器不支持转移指令,相应的输 出为a r b v p l 0s h a d e r 或者a r b f p 】0s h a d e r 。第二类面向现在的主流图形处理器,这 类图形处理器支持转移指令,相应的输出为a r b v p 2 0s h a d e r 或者a r b f d 2 0s h a d e r 。 与开发而向通用微处理器的优化编译器相比,刀:发面向图形处理器的优化编 译器具有更大的挑饯性。虽然_ 舌者由于都是基于寄存器的,没有内存的概念,指 令集i g 较简单,因此寄存器分配和指令选择都较容易实现。但由于图形处理器缺 乏转移指令( 对于a r b v p l 0 和a r b f p t 0 平台) 或者对转移指令的支持较弱( 对于 浙江大学颐j 擘位论文 a r b v d 2 0 和a r b f p 2 0 平台) ,如何将h l s l 的控制结构翻译为线性指令序列或者弱 转移指令序列是一个不小的难题。另一方面,图形应用的特性又要求充分利用图 形处理器的向量处理能力,尽可能生成最优化的代码,同时尽可能的减少资源利 用,这再一次增加了后者的开发难度。 本文共八章。第一章简单介绍本文的工作背景与研究对象。第二章介绍了当 前图形处理器的体系机构与町编程能力。第三章介绍了低级着色语言,重点是 o p e n g l 的a r b v p l 0 、a r b f p l 0 、a r b v p 2 0 和a r b f p 2 0 语言。第四章介绍了高级若色 语言,重点是g l s l a n g 。第五章介绍了g l s l a n g 优化编译器g c x 的总体结构以及用 到的的优化算法。第六章描述了g c x 优化编译器的前端设计。第七章分别针对 a r b v p t 0 与a r b v p 2 0 研究了g c x 优化编译器的后端设计。第八章是小结和展望。 塑婆查兰堡! 兰垡堡茎一 第二章可编程图形处理器 现代图形流水线如图- 2 1 所示。 c x c o n j u c 笛 o e o 翟 k 口 卜$ k 驾 帕 苗 巾 彤 e n c o n j u u 3o j 定 = n ( 图2 1 ,图形流水线) 应用程序级( a p p l i c a t i o n ) 实现物理模拟,处理用户输入,修改数据结构,数据 库访问,几何基元生成等功能。命令级( c o m m a n d ) 提供命令缓冲区,解释执 行命令和管理图形系统的状念。几何级( g e o m e t r y ) 对多项式表达的弯曲曲面求 值,进行几何变换、光照计算、纹理坐标生成,实现剪切、拣选与几何基元组装 等功能。光栅化级( r a s t e r i z a t i o n ) 进行三角形设置,对三角形进行抽样以生成 片断,并且对颜色和纹理坐标进行插值。纹理级( t e x t u r e ) 对纹理坐标进行变换, 进行纹理访问与过滤。片断级( f r a g m e n t ) 混合片断颜色与纹理,进行雾化操作, 执行深度、透明以及模版测试,最终生成要写入帧缓冲区的象素。显示级 ( d i s p l a y ) 对象素颜色进行嘎玛校正后写入帧缓冲区。命令与几何级属于对象 空间的操作,其上的操作是每顶点的,主要是进行几何变换和光照计算,它的特 点是进行大量( = 1 0 0 0 万个顶点) 复杂的浮点操作。纹理与片断级输入图像空 间的操作,其上的操作是每片断的,主要是进行纹理混合,它的特点是进行海量 ( = 1 0 亿个片断) 但是较简单的定点运算。 图形硬件的发展是一个逐渐对图一2 1 巾的流水级增加硬件加速功能的过程。 最早的图形硬件只是一个简单的帧缓冲区,没有任何硬件加速功能。之后逐渐添 加硬件光栅化、硬件纹理映射、硬件几何变换与光照计算、硬件反走样等功能。 按照图形硬件所支持的硬件加速功能的多少与性质,可以把图形硬件分为四代。 1 9 8 4 年,s g i 公司发布了i r i s1 4 0 0 图形系统,其中集成的图形硬件可以实时光 栅化平坦着色( f l a t - s h a d e d ) 的多边形,这是第一代图形加速硬件。第二代图形 加速硬件以h p 的s p x 和s g i 的g t 为代表。它们提供p h o n g 光照计算、g o u r a u d 着色和z b u f f e r 功能,光栅化性能也有了很大提高。1 9 9 2 年,s g i 推出了 r e a l i t y e n g i n e 【a k e l e y 9 3 1 ,之后又于1 9 9 6 年推出了i n f i n i t e r e a l i t yf m o n t r y m 9 7 1 , 标志着图形加速硬件进入第三代。r e a l i t y e n g i n e 在第二代图形加速硬件的基础 上,增加了纹理映射与全场景反走样功能,大大提高了实时渲染的真实感。上述 的图形加速硬件价格昂贵,只有高档图形工作站才能够配罨,但是1 9 9 6 年3 d f x 公司推出的面向p c 平台的v o o d o o 系列3 d 加速卡改变了这一局面。v o o d o o 卡 介于第二与第三代图形加速硬件之间,它提供g o u m u d 着色、硬件光栅化、硬件 纹理映射、z 缓冲区等功能,将p c 带入了实时3 d 的时代。随后,p c 图形硬件 蓬勃发展,更高的三角形生成速率、更高的填充速率、多纹理功能、硬件几何变 换与光照计算、碰撞与环境映射以及全屏反走样将其带入了第三代图形加速硬件 的时代。现在,随着p c 游戏以及p c 工作站的发展,可以说,p c 图形硬件的发 9 浙江人学硕卜学位论文 展代表了图形硬件技术发展的主流方向。 无论是传统工作站图形硬件,还是p c 图形硬件,从第一代到第三代,它们 的个共同特征就是都只实现了固定功能的渲染流水线,而不具备可编程能力。 与这些图形硬件相匹配,主要的3 da p l 例如o p e n g l 和d i r e c t 3 d 作为一个状 态机实现。用户通过3 da p i 提供的函数设置好相应的状态,例如变换矩阵、材 质参数、光源参数、纹理混合模式等,然后传入顶点流。图形硬件则利用内置的 固定渲染流水线和渲染算法对这些顶点进行几何变换、光照计算、光栅化、纹理 混合、雾化操作,最终将处理结果写入- f j 贞缓冲区。这种渲染体系限制用户只能使 用图形硬件中固化的各种渲染算法。这虽然可以很好的满足对渲染质量要求不高 的应用,但难以满足那些需要更高的灵活性和更真实的渲染质量的实时图形应 用。用户已经不再满足于基于顶点的近似p h o n g 模型光照计算( 这是o d e n g l 和d i r e c t 3 d 采用的光照讨算模型,这两种a p i 上的光照计算或者在支持硬件光 照讨一算的的图形硬件之上进行,或者在c p u 之上进行。) 和简单的多纹理混合。 用户需要硬件加速的角色动厕支持,需要使用定制的光照模型( 基于片断的光照 模型、各向异性光照模型、基于b r d f 的光照模型) ,需要非真实渲染( 卡通演 染、素描渲染) ,需要每片断f r e s n e l 效果,需要各种体积效果,需要过程纹理, 以及各种以往只有在r e n d e r m a n u p s t i l l 8 9 】之上才能看到的3 d 效果。对于这些 需求,传统图形硬件是无能为力的。满足这些需求的答案就是硬件可编程性。 2 0 0 1 年3 月,n v i d i a 公司推出了具有可编程能力的g e f o r c e3 【l i n d h o l m 0 1 1 , 从而将图形加速硬件带入了可编程的时代,即可编程图形处理器,我们不妨将它 们视为第四代图形处理器。现代图形处理器的可编程引擎如图一2 2 所示。 ( 图一2 2 ,现代图形处理器的可编程引擎) 啪聪靳脚 蚴腓黼= 基鞘蛐悼坨 擎乞照拍爱黧 尉腋吣 _ 苎肝觚m 一粕凇一 m 一 娣可刮为 。j,r 鞭眦l i | 妻玛静妇耐贴心妇蝴巍菱 的程0 理竹赫事艘刚秘靴之是色片訇珑蕾r 塑坚查堂塑兰竺堡兰 一一 行纹理混合等操作。顶点着色程序的输入是顶点流,输出是处理后的顶点流。后 者经固定的光栅化模块进行三角形组装和光栅化处理后用于生成片断流送入片 断着色程序。片断着色程序访问纹理,进行纹理混合并最终计算出片断的颜色与 深度信息送入后续流水级以进行透明、深度、模板与雾化等操作。一个图形处理 器中一般包含多个顶点处理器和多个片断处理器。如图,2 2 所示的图形处理器包 含2 个顶点处理器,4 个片断处理器。同类型的处理器上运行的总是同一个着色 程序的一个拷贝,这些着色程序并行运行,处理输入流中的不同数据元素。输入 流中的数据元素类型相同,并且相互之问独立。s h a d e r 在一个处理器上的每一次 运行只能处理输入流中的一个元素。因此,顶点处理器或者片断处理器可以看作 是使用同一指令对不同数据元素进行处理的单指令多数据处理器( s i m d p r o c e s s o r ) 。 图一2 3 是顶点处理器的体系结构。图2 4 是片断处理器的体系结构 m i c h a e l 0 2 】。 | “m p r e g ,i 。8 ( 图一2 3 ,顶点处理器体系结构) ( 图一2 4 ,片断处理器体系结构) 浙江人学碳i :学位论文 这两种处理器者i i 没有内存的概念,所有的运算都在寄存器之上进行。它们的每一 个寄存器都是四分量浮点寄存器,指令集中的指令可以同时刑四个分量进行运 算,因此可以把顶点处理器看作是一个基于寄存器的向量处理器。图一2 3 中的顶 点数据寄存器用于只读访问当前被处理的顶点的属性,例如顶点位置、法向量、 颜色和纹理坐标。常量寄存器用于用于为顶点程序提供只读常量参数或者程序参 数。只写的地址寄存器用于间接访问常量寄存器。临时寄存器用于保存中间运算 结果。只写的输出寄存器则用于输出处理后的顶点属性。图- 2 4 中的颜色寄存器 用于只读访问片断的颜色。只读的纹理坐标寄存器用于访问纹理坐标和对纹理进 行抽样。常量寄存器用于为片断程序提供只读常量参数或者程序参数。临时寄存 器用于保存中间运算结构,i 临时寄存器r o 也是输出寄存器。图- 2 3 和图2 4 是 d i r e c t x 所定义的顶点,片断处理器体系结构,但是它们也恰当的孝卣象了例如 o p e n g l 等其它类型的顶点,片断处理器。 更洋细的寄存器与指令集说明将放在下一章进行介绍。这里重点讨论下顶 点片断处理器区别于微处理器的些特殊之处。微处理器的特点是标量运算、 无内在向量并行性、算术运算单元少、有完善控制流指令、延迟低、带宽小。而 图形应用的特点确是大运算量、大规模并行性、允许较长的延迟与深度前向流水。 这就决定了图形处理器和微处理器在体系结构上存在着很大的差别。首先图形处 理器要尽可能的实现高度并行性。这种并行性分为两种:数据并行性与流水线并 行性。为了充分利用数据并行性,图形处理器在两个层次上进行并行处理。第一 层利用输入数据流中数据元素之间的无关性,多个顶点( 或片断) 处理器运行 个顶点( 或者片断) 着色程序的多个拷贝,同时作用于输入数据流中的多个数据 元素之上。从这个意义上说,图形处理器是一个流处理器。第二层是利用图形运 算包含大量向量运算的特点,实现指令级并行性。具体地说就是把多个同类型的 标量运算合并到一个向量运算之中。因此,图形处理器又是一个向量处理器。其 次流水并行性允许顶点着色程序与片断着色程序同时运行,前者的输出恰为后者 的输入,构成一种生产者消费者的关系。再次为了保证大规模并行运算,图形处 理器基本上不支持转移指令或者只提供有限的支持,着色程序的静态长度和动态 可执行长度也非常短。最后图形处理器有着比微处理器多的多的算术逻辑运算单 元。图形处理器的所有指令都具有相同的延迟,不存在各类流水竞争。 现在图形处理器正向着通用流处理器的方向发展,虽然它的重点应用仍然是 图形应用,通用性也远不是微处理器概念上的通用性。可以预测,未来的图形处 理器将支持功能更丰富的算术指令,提供更高程度的指令正交性和更强的转移指 令功能a 而它的应用范围除了实时图形应用外,也会扩展到全局光照计算、多体 问题、分子动力学、弹性形变、流体模拟等科学计算领域 b o l t z 0 3 1 。 堑望查兰丝:! :兰堡堡壅 笫三章低级着色语言 3 1 概述 要利用现代图形处理器的可编程性,图形程序员需要编写在图形处理器上运 行的程序,这种程序称为着色程序( s h a d e r ) 。着色程序可以分为两类,一类是 顶点着色程序( v e a e xs h a d e r ) ,另一类是片断着色程序( f r a g m e n ts h a d e r ) 。顶点 着色程序运行于顶点处理器之上,每次激活处理一个顶点:片断着色程序运行于 片断处理器之上,每次激活处理一个片断。目前绝大多数着色程序都由低级着色 语言写成。图形处理器通过通用的3 da p i ( d i r e c t x 或肴o p e n g l ) 向图形程序 员提供可编程能力。 作为桌面p c 上最主要的3 d 硬件接口,d i r e c t x 从8 0 开始就提供了对低级 着色语言的支持,并在9 0 中进一步完善和发展。d i r e c t x 运行库分别定义了执 行v e r t e xs h a d e r 和f r a g m e n ts h a d e r 的两个虚拟机,图形程序员针对这两个虚拟机 编写s h a d e r ,g p u 厂商则在显卡驱动中实现这两个虚拟机。随着图形处理器硬 件能力和d i r e c t x 的飞速发展,s h a d e r 虚拟机的规范也在不断发展,目前d i r e c t x 9 o 支持多个版本的s h a d e r 虚拟机。v e f l e xs h a d e r 虚拟机有四个版本,分别是: v s1i 、v s20 、v s2x 和v s30o f r a g m e n ts h a d e r ( d i r e c t x 上称为p i x e ls h a d e r ) 虚拟机有六个版本,分别是:p s11 、p sl2 、p s14 、p s20 、p s2x 和p s30 。 上述不同版本基本上可以分为三代。第代是1 x 版本,这一代的s h a d e r 虚拟机 对应于早期可编程图形处理器。这些图形处理器提供的可编程资源( 寄存器、指 令集) 都很有限而且它们不提供转移指令。第二代是2 x 版本,这一代虚拟机 对应于目前的主流中档图形处理器。它们提供更多的寄存器和更大的指令集,而 且提供基于常数的静态转移指令和有限的动态转移指令。第三代是3 , x 版本,这 一代虚拟机刘+ 应于目前的主流高档和未来的图形处理器。它们提供更多的寄存 器、包括静态与动念转移指令的更强大的指令集和一个更一般的编程模型。 桌丽p c 的另一个主要3 d 硬件接口o p e n g l 接口也在不断的加强对低级着 色语言的支持。这种支持最初是硬件厂商通过添加私有的扩展( o p e n g l e x t e n s i o n ) s g i e x t 来实现的。例如n v i d i a 公司通过添加n vv e r t e xp r o g r a m 与n vf r a g m e n tp r o g r a m 扩展来提供对v e r t e xs h a d e r 和f r a g m e n ts h a d e t 的支持; a t i公司通过添加e x tv e r t e xs h a d e r 与 a t if r a g m e n ts h a d e r 来提供对v e r t e xs h a d e r 和f r a g m e n t ss h a d e r 的支持。 这种做法的一个巨大缺点是不同厂商提供的编程接口不同,图形程序员要想保证 自己的应用能够在不同的图形处理器上都能顺利运行,必须针对每一个厂商的扩 展编写不同的渲染代码。为了解决这个问题,o p e n g l 体系管理委员会于2 0 0 2 年6 月和2 0 0 2 年9 月分别通过了两个官方扩展:a r bv e r t e xp r o g r a m 与 a r b f r a g m e n tp r o g r a m 来统一对低级着色语言的支持。这两个扩展同样 定义了运行v e r t e xs h a d e r 与f r a g m e n ts h a d e r 的两个s h a d e r 虚拟机,图形程序员和 显卡厂商分别针对这两个虚拟机编写应用程序和驱动程序。目前这两个扩展的版 本是1 0 ( a r b v p l 0 和a r b f p l 0 ) ,相当于d i r e c t x 中的v slx 和p slx 。这两个 扩展的2 0 版( a r b v p 2 0 和a r b f p 2 0 ,相当于d i r e e t x 中的v s2x 和p s2x ) 现在 也在制定之中。 本文的研究对象是o p e n g l2 0 中提出的高级着色语言g l s l a n g 及其优化编译 技术。凶此,本章的后续几节将重点介绍做为g l s l a n g 编译器目标机器的a r b v p l 0 塑堑查堂堡:! ! 兰篁丝苎一 虚拟机 a r b v p l o 与a r b r p m 虚拟机 a r b f p l o 和a r b v p 2 0 虚拟机与a r b f p 2 0 虚拟 机。但由于目前a r b v p 2 0 a r b l p 2 0 的规范还未公布,我们只能在现有虚拟机的基 础上预测这两种虚拟机的硬tt :能力。 3 2 a r b v p l o 着色语言 3 2 。1 概述 v e r t e xs h a d e r 在o p e n g l 渲染流水线中的位置和作用如图3 1 所示。 ( 图一3 1 ,o p e n g l 中的顶点着色程序) 用户编写的l l s lv e r t e xs h a d e r ( 在o p e n g l 中称为v e r t e xp r o g r a m ) 可以在 用户的控制下取代o p e n g l 的固定几何变换与光照处理模块。当用户允许v e r t e x p m g r a m 模式时,v e r t e xp r o g r a m 在每指定一个顶点坐标或者顶点属性0 时执行。 v e r t e x p r o g r a m 每次处理一个顶点,对不同顶点的处理互不影响。它的输入是顶 点的属性,包括坐标、法向量、颜色、纹理坐标等;输出是处理后的顶点属性, 包括齐次剪切空间顶点坐标、颜色、纹理坐标等。v e r t e xp m g m m 一般来说需要 完成顶点世界一观察坐标变换与投影坐标变换、基于顶点的光照计算和纹理坐标 e 成等任务。 3 2 2a r b v p l o 虚拟机 a r b v p l 0 虚拟机的框图如图一3 2 所示。 塑垩叁兰塑! ! :堂丝垒苎 ( 图一3 2 ,a r b v p l o 虚拟机) 如前所述,a r b v p l 0 虚拟机可以看作是一个基于寄存器的向量处理器。a r b v p l 0 虚拟机中没有内存的概念,所有的数据都傈存在寄存器中。除地址寄存器外,所 有的寄存器都是四分量浮点寄存器,也就是说,每一个寄存器可以保存四个浮点 数。a r b v p l 0 虚拟机包含五种寄存器:顶点属性寄存器、顶点结果寄存器、临时 寄存器、地址寄存器与程序参数寄存器。 a r b v p l 0 虚拟机支持至少1 6 个顶点属性寄存器。这些寄存器可以通过表一3 1 中的寄存的器名直接访问。 l 顶点属性传统寄存分鼙顶点属性一般说明 器名寄存器名 v e f f e x p o s i t i o n( x ,mz ,w )v e r l e x ,a t t r i b 【0 1 对象坐标 v e a e x w e i g h t f 燃w 州w , v e r t e x a t t r i b 【1 顶点权重0 3 v e a e x w i g h t 【n 】 ( w w ,w ,w ) v e r t e x a t t r i b 【1 】 顶点权重n n 十3 v e r t e xn o r m a l ( x ,y z ,1 )v e r t e x a t t r i b 【2 顶点法向量 v e r t “c o l o r ( r ,g ,b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中小学美术教师基本功比赛试题及答案
- 药用植物学考试练习题及答案3
- 九年级道德与法治下册 第一单元 我们共同的世界 第二课 构建人类命运共同体说课稿设计(pdf) 新人教版
- 公务员面试题库及答案
- 高速测速设备采购合同模板(3篇)
- 高粮收割合同模板(3篇)
- 高空装修合同模板(3篇)
- 电力线宽带接入项目进度管理与监督合同
- 2025恒丰银行笔试题及答案
- 娱乐产业公司股份收购与内容制作协议
- 2025广西公需科目真题续集(附答案)
- 医古文课件 2华佗传
- 大数据与会计专业人才需求与专业调研报告
- 高中日语宣讲 试听课件
- 小学信息技术新课程标准测试模拟试题及答案
- 质量风险和机会识别、评价及控制措施表
- 幼儿园大班科学教案《神奇的小麦》【幼儿教案】
- 2022年医疗卫生系统事业编制(护理学专业)考试题库及答案
- FZ/T 62033-2016超细纤维毛巾
- 设计思维教案
- 储罐施工方案(电动葫芦)
评论
0/150
提交评论