渲染三维图形的方法及装置与流程

文档序号:14405190阅读:325来源:国知局
渲染三维图形的方法及装置与流程

本发明涉及图形运算技术领域,尤其涉及一种渲染三维图形的方法及装置。



背景技术:

目前,三维图形渲染能力在现代桌面系统中已经逐渐成为基本要求,微软从windows7开始,linux从gnome3桌面管理器开始,都转向了以三维图形渲染为基础的桌面图形环境。

目前,现有技术中渲染三维图形的方法主要有两种:

一种是使用专门的图形处理器(graphicprocessingunit,gpu)渲染三维图形。gpu是专门为加速三维图形渲染设计的,其主体是流处理器,流处理器主要负责坐标数据和像素数据的矩阵运算。gpu运算所需的向量数据一般是较大的连续数据,需要连续的从内存中读取,因此对访存延迟不很敏感,访存行为有很强的规律性,数据相关程度很低,控制指令很简单,很少有分支,计算结果后面的运算一般不会使用,可直接写回内存,而不需将其重新填入寄存器,因此gpu需要较大的内存读取写入带宽。在进行三维图形渲染时,由中央处理器(centralprocessingunit,cpu)中的进程在内存中为gpu准备加速指令和数据,再拷贝到显存中,准备好后通知gpu开始执行,当执行完成后由gpu通知cpu。cpu如需在内存中使用处理后的数据,则将其从显存拷贝到内存。

另一种是直接使用cpu的向量部件渲染三维图形。现代cpu中一般配置有与gpu类似的向量运算单元,但只是其中的一部分,需要共用cpu的取值、译码和访存单元。cpu的译码、取值和访存较为复杂,考虑很多分支跳转和多进程切换的情况,cpu中的操作数一般存储在cpu的寄存器中,数据有较高的相关性,访存的密集度较低,但访存行为一般不规律,而且向量运算单元必须在进程处于执行态时才能被该进程占用,在进程挂起时,cpu的向量运算单元会被释放。在进行三维图形渲染时,用于三维运算的向量运算指令是cpu运行的进程的一部分。三维绘制在执行时,该绘制所在的进程必须在执行态。用于加速的向量指令的代码被放置在不同函数,根据调用来跳转。

在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:

直接使用cpu的向量部件渲染三维图形,占用了cpu的运行时间以及缓存等资源,而且由于三维绘制是大量的纯数学运算,需要较大的访存,但却极少有跳转等控制指令,cpu的大量功能部件受到限制,cpu占用率较高,渲染三维图形的效率较低;而使用专门的gpu渲染三维图形,在很多场合下gpu的负载很低,gpu利用率不高,增加了系统的成本负担。



技术实现要素:

本发明提供的渲染三维图形的方法及装置,能够在不需配置gpu的情况下,提升cpu在渲染三维图形时的效率,同时降低cpu的占用率。

第一方面,本发明提供一种渲染三维图形的方法,应用于cpu,所述cpu包括simd向量运算单元、与所述simd向量运算单元对应的专用取指模块、专用译码模块和专用访存模块,所述方法包括:

在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,以使cpu不会调用所述simd向量运算单元;

根据所述三维渲染任务构建当前帧的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域;

使能所述专用取指模块、所述专用访存模块,以使得所述simd向量运算单元、所述专用取指模块、所述专用译码模块和所述专用访存模块,根据所述内存的指定区域中的向量指令和向量数据执行相应的simd向量运算,完成当前帧的三维渲染任务。

第二方面,本发明提供一种渲染三维图形的装置,所述装置位于cpu,所述cpu包括simd向量运算单元、与所述simd向量运算单元对应的专用取指模块、专用译码模块和专用访存模块,所述装置包括:

屏蔽控制模块,用于在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,以使cpu不会调用所述simd向量运算单元;

构建模块,用于根据所述三维渲染任务构建当前帧的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域;

使能模块,用于使能所述专用取指模块、所述专用访存模块,以使得所述simd向量运算单元、所述专用取指模块、所述专用译码模块和所述专用访存模块,根据所述内存的指定区域中的向量指令和向量数据执行相应的simd向量运算,完成当前帧的三维渲染任务。

本发明实施例提供的渲染三维图形的方法及装置,在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,根据所述三维渲染任务构建相应的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域,所述simd向量运算单元及其对应的专用取指模块、专用译码模块和专用访存模块根据所述内存的指定区域中的向量指令和向量数据执行相应的simd向量运算,完成当前帧的三维渲染任务。与现有技术相比,在运行包含三维渲染任务的进程时,cpu不使用simd向量运算单元,simd向量运算单元与其对应的专用取指模块、专用译码模块和专用访存模块专门用于完成执行三维渲染任务所需的simd向量运算,从而能够在不需配置gpu的情况下,提升cpu在渲染三维图形时的效率;而且在执行simd向量运算时,cpu的其他部分不进行复用,从而可以降低cpu的占用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明渲染三维图形的方法实施例一的流程图;

图2为本发明渲染三维图形的方法实施例二的流程图;

图3为本发明渲染三维图形的装置实施例一的结构示意图;

图4为本发明渲染三维图形的装置实施例二的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种渲染三维图形的方法,应用于cpu,所述cpu包括单指令流多数据流(singleinstructionmultipledata,simd)向量运算单元、与所述simd向量运算单元对应的专用取指模块、专用译码模块和专用访存模块,图1为本发明渲染三维图形的方法实施例一的流程图,如图1所示,本实施例的方法包括:

s11、在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,以使cpu不会调用所述simd向量运算单元。

具体地,可以通过在cpu原有的状态寄存器进行设置,使得在运行包含三维渲染任务的进程之前,cpu不会调用simd向量运算单元。

其中,在cpu内部增加一个simd向量运算单元专用的带有使能端的顺序发射和无需分支预测的专用取指模块和专用译码模块,这些模块只支持simd指令的取值和译码;另外,在cpu内部还增加一个专用的支持顺序预取的专用访存模块,用于从内存向simd向量运算单元搬运顶点和纹理数据,并将simd向量运算结果写回内存。所述simd向量运算单元与所述专用取指模块、专用译码模块和专用访存模块一起构成一个可屏蔽和关断的独立的数据和指令通路。

进一步地,可以在cpu内部增加专用配置寄存器,通过专用配置寄存器对所述专用取指模块、所述专用访存模块进行使能或关断。

具体地,在所述专用配置寄存器中设置有用于控制所述专用取指模块使能与关断的第一使能位、用于控制所述专用访存模块使能与关断的第二使能位,当所述第一使能位、第二使能位有效时,所述专用取指模块、所述专用访存模块使能;当所述第一使能位、第二使能位位无效时,所述专用取指模块、所述专用访存模块关断。

s12、根据所述三维渲染任务构建当前帧的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域。

具体地,在内存中专门开辟有指定区域,cpu根据三维渲染任务构建的向量指令和向量数据存储在该指定区域。其中,所述向量数据包括顶点和纹理数据。

s13、使能所述专用取指模块、所述专用访存模块,以使得所述simd向量运算单元、所述专用取指模块、所述专用译码模块和所述专用访存模块,根据所述内存的指定区域中的向量指令和向量数据执行相应的simd向量运算,完成当前帧的三维渲染任务。

具体地,所述simd向量运算单元以及所述专用取指模块、专用译码模块和专用访存模块,根据所述内存的指定区域中的向量指令和向量数据,使用cpu执行其他运算时所采用的tlb(translationlookasidebuffer,旁路转换缓冲)执行相应的simd向量运算。也即,simd向量运算单元以及所述专用取指模块、专用译码模块和专用访存模块所建立的数据指令通路与cpu原有的数据指令通路共享tlb,使用统一的虚拟地址空间,进行虚拟地址到物理地址的转换。

在simd向量运算单元进行simd向量运算的过程中,cpu进行下一帧向量指令和向量数据的准备,在准备完毕后挂起包含三维渲染任务的进程,执行其他进程,该其他进程必须满足不会调用所述simd向量运算单元。

进一步地,在执行步骤s13的过程中,cpu控制所述包含三维渲染任务的进程执行除当前帧的三维渲染任务以外的其他任务,或者,如果没有其他任务,则将所述包含三维渲染任务的进程挂起,从而可以提高进程的执行效率。

本发明实施例提供的渲染三维图形的方法,在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,根据所述三维渲染任务构建相应的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域,所述simd向量运算单元及其对应的专用取指模块、专用译码模块和专用访存模块根据所述内存的指定区域中的向量指令和向量数据执行相应的simd向量运算,完成当前帧的三维渲染任务。与现有技术相比,在运行包含三维渲染任务的进程时,cpu不使用simd向量运算单元,simd向量运算单元与其对应的专用取指模块、专用译码模块和专用访存模块专门用于完成执行三维渲染任务所需的simd向量运算,从而能够在不需配置gpu的情况下,提升cpu在渲染三维图形时的效率;而且在执行simd向量运算时,cpu的其他部分不进行复用,从而可以降低cpu的占用率。

本发明实施例还提供一种渲染三维图形的方法,应用于cpu,所述cpu包括simd向量运算单元、与所述simd向量运算单元对应的专用取指模块、专用译码模块和专用访存模块,图2为本发明渲染三维图形的方法实施例二的流程图,如图2所示,本实施例的方法包括:

s21、在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,以使cpu不会调用所述simd向量运算单元。

s22、根据所述三维渲染任务构建当前帧的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域。

具体地,在内存中专门开辟有指定区域,cpu根据三维渲染任务构建的向量指令和向量数据存储在该指定区域。其中,所述向量数据包括顶点和纹理数据。

s23、通过专用配置寄存器对所述专用取指模块和所述专用访存模块进行使能。

具体地,在所述专用取指模块对应的配置寄存器中存入待取指地址的首地址以及长度;在所述专用访存模块对应的配置寄存器中存入待读取向量数据的首地址以及长度,待存入向量数据的首地址以及长度;通过专用配置寄存器中设置的使能位对所述专用取指模块、所述专用访存模块进行使能。

s24、所述专用取指模块从所述内存的指定区域读取所述向量指令。

s25、所述专用译码模块对所述向量指令进行译码,并将译码后的向量指令发送至所述simd向量运算单元。

s26、所述专用访存模块从所述内存的指定区域读取所述向量数据,并发送给所述simd向量运算单元。

s27、所述simd向量运算单元根据所述译码后的向量指令以及所述向量数据进行simd向量运算,并将simd向量运算结果返回至所述专用访存模块。

具体地,所述simd向量运算单元以及所述专用取指模块、专用译码模块和专用访存模块,根据所述内存的指定区域中的向量指令和向量数据,使用cpu执行其他运算时所采用的tlb执行相应的simd向量运算。也即,simd向量运算单元以及所述专用取指模块、专用译码模块和专用访存模块所建立的数据指令通路与cpu原有的数据指令通路共享tlb,使用统一的虚拟地址空间。

其中,在执行步骤s24至s27的过程中,cpu控制所述包含三维渲染任务的进程执行除当前帧的三维渲染任务以外的其他任务,例如:进行下一帧向量数据、向量指令的构建。

或者,如果没有其他任务,则将所述包含三维渲染任务的进程挂起,转而执行其他进程,从而可以提高进程的执行效率。

s28、在内存的指定区域接收所述专用访存模块写回的所述simd向量运算结果写回所述内存的指定区域。

进一步地,在步骤s28完成之后,所述simd向量运算单元采用中断的方式通知cpu,cpu恢复所述包含三维渲染任务的进程,以指针的方式从所述内存的指定区域读取所述simd向量运算结果。

s29、解除所述simd向量运算单元对cpu的屏蔽。

此时,cpu恢复对所述simd向量运算单元的使用权,可以调用所述simd向量运算单元。

本发明实施例提供的渲染三维图形的方法,在运行包含三维渲染任务的进程时,cpu不使用simd向量运算单元,simd向量运算单元与其对应的专用取指模块、专用译码模块和专用访存模块专门用于完成执行三维渲染任务所需的simd向量运算,从而能够在不需配置gpu的情况下,提升cpu在渲染三维图形时的效率;而且在执行simd向量运算时,cpu的其他部分不进行复用,从而可以降低cpu的占用率;此外,simd向量运算单元以及所述专用取指模块、专用译码模块和专用访存模块所建立的数据指令通路与cpu原有的数据指令通路共享tlb,使用统一的虚拟地址空间,从而可以降低cpu的占用率。

本发明实施例提供一种渲染三维图形的装置,所述装置位于cpu,所述cpu包括simd向量运算单元11、与所述simd向量运算单元11对应的专用取指模块12、专用译码模块13和专用访存模块14,图3为本发明渲染三维图形的装置实施例一的结构示意图,如图3所示,本实施例的装置包括:

屏蔽控制模块15,用于在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元11对cpu进行屏蔽,以使cpu不会调用所述simd向量运算单元11;

构建模块16,用于根据所述三维渲染任务构建当前帧的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域;

使能模块17,用于使能所述专用取指模块12、所述专用访存模块14,以使得所述simd向量运算单元11、所述专用取指模块12、所述专用译码模块13和所述专用访存模块14,根据所述内存的指定区域中的向量指令和向量数据执行相应的simd向量运算,完成当前帧的三维渲染任务。

本发明实施例提供的渲染三维图形的装置,在运行包含三维渲染任务的进程之前,将cpu中的simd向量运算单元对cpu进行屏蔽,根据所述三维渲染任务构建相应的向量指令和向量数据,并将所述向量指令和向量数据存储在内存的指定区域,所述simd向量运算单元及其对应的专用取指模块、专用译码模块和专用访存模块根据所述内存的指定区域中的向量指令和向量数据完成相应的simd向量运算,完成当前帧的三维渲染任务。与现有技术相比,在运行包含三维渲染任务的进程时,cpu不使用simd向量运算单元,simd向量运算单元与其对应的专用取指模块、专用译码模块和专用访存模块专门用于完成执行三维渲染任务所需的simd向量运算,从而能够在不需配置gpu的情况下,提升cpu在渲染三维图形时的效率;而且在执行simd向量运算时,cpu的其他部分不进行复用,从而可以降低cpu的占用率。

可选地,所述专用取指模块12,用于从所述内存的指定区域读取所述向量指令;

所述专用译码模块13,用于对所述向量指令进行译码,并将译码后的向量指令发送至所述simd向量运算单元11;

所述专用访存模块14,用于从所述内存的指定区域读取所述向量数据,并发送给所述simd向量运算单元11;

所述simd向量运算单元11,用于根据所述译码后的向量指令以及所述向量数据对所述向量数据进行simd向量运算,并将simd向量运算结果返回至所述专用访存模块14。

图4为本发明渲染三维图形的装置实施例二的结构示意图,如图4所示,进一步地,所述装置还包括:

接收模块18,用于在所述使能模块17使能所述专用取指模块12、所述专用访存模块14之后,在内存的指定区域接收所述专用访存模块14写回的所述simd向量运算结果。

进一步地,如图4所示,所述装置还包括:

进程控制模块19,用于在完成当前帧的三维渲染任务过程中,控制所述包含三维渲染任务的进程执行除当前帧的三维渲染任务以外的其他任务,或者将所述包含三维渲染任务的进程挂起。

进一步地,如图4所示,所述装置还包括:

恢复模块20,用于在所述接收模块18在内存的指定区域接收所述专用访存模块14写回的所述simd向量运算结果之后,恢复所述包含三维渲染任务的进程,从所述内存的指定区域读取所述simd向量运算结果。

可选地,所述使能模块17,用于在所述专用取指模块12对应的配置寄存器中存入待取指地址的首地址以及长度,在所述专用访存模块14对应的配置寄存器中存入待读取向量数据的首地址以及长度,待存入向量数据的首地址以及长度,通过专用配置寄存器中设置的使能位对所述专用取指模块12、所述专用访存模块14进行使能。

本发明实施例提供的渲染三维图形的装置,在运行包含三维渲染任务的进程时,cpu不使用simd向量运算单元,simd向量运算单元与其对应的专用取指模块、专用译码模块和专用访存模块专门用于完成执行三维渲染任务所需的simd向量运算,从而能够在不需配置gpu的情况下,提升cpu在渲染三维图形时的效率;而且在执行simd向量运算时,cpu的其他部分不进行复用,从而可以降低cpu的占用率;此外,simd向量运算单元以及所述专用取指模块、专用译码模块和专用访存模块所建立的数据指令通路与cpu原有的数据指令通路共享tlb,使用统一的虚拟地址空间,从而可以降低cpu的占用率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1