基于分块渲染的GPU中块存储策略的实现转让专利

申请号 : CN201110065165.3

文献号 : CN102096897B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 焦勇饶先宏陈怒兴

申请人 : 长沙景嘉微电子有限公司

摘要 :

本发明公开了一种基于分块渲染的GPU中块存储策略的实现,它包括写入块和读出块两个部分,写入块时,根据图元分块的结果将块号作为索引,将块写入对应本块的存储空间(具体地址计算得到),同时维持一个本地计数器,将写入块的计数器加1;读出块时,根据每一块计数器的值按顺序将块内存储的图元信息取出来送入绘制模块。

权利要求 :

1.一种基于分块渲染的GPU中块存储的方法,其输入为图元分块后得到的块号及块内图元的绘制信息,所述图元包括线段和三角形;所述方法中维持两个计数器,使用两块DDR存储空间,当奇数帧在块收集的过程中,偶数帧在进行绘制,偶数帧在块收集时,奇数帧在进行绘制;其中每一帧的处理过程包括以下步骤:步骤(1):根据当前绘图区的大小确定每一块最多包含的图元数目;

块的存储空间设置为一固定大小的区域,称之为存储区域;同时设置块的大小为一固定值,那么绘图区不同,则所述存储区域能够存储的块的数目就不同,每一块能够存储的图元数目也不同;

假设用来存储块的空间为M字节,采用乒乓操作,需要存储两帧的图元分块信息,所以每帧占用的空间为M/2;当前绘图区的大小为W×H像素,块的大小为T×T像素,每个图元占用的存储空间为C字节,那么,总共的块数目为:

每一块的存储空间为:

每一块最多包含的图元数目: ;

步骤(2):根据所述块号,从本地RAM中取出当前块中已经存储的图元的数目,若为第一次处理该块,那么图元的数目为0。

步骤(3):计算当前图元写入DDR存储体的地址;

假设当前绘图区块的数目为N,每一块占用的存储空间为CN,当前待写入的块号为Tn,从步骤(2)中读出的块的数目为n,那么当前待写入图元的存储地址为:Addr = Tn * CN + n * C;

步骤(4):将图元的绘制信息写入DDR存储体中,同时将对应块的计数器加1;

步骤(5):重复步骤(1)-(4),直到将所有的图元信息都写入DDR存储体中,写入过程结束。

说明书 :

基于分块渲染的GPU中块存储策略的实现

技术领域

[0001] 本发明主要涉及到GPU芯片设计中的分块渲染实现领域,特指基于分块渲染的GPU中块存储策略的实现。

背景技术

[0002] 计算机图形绘制技术很早以前就是信息技术研究的一个重要方向,尤其是近十几年以来,随着计算机性能的不断提升,计算机图形应用也从2D延伸到3D,相应的应用范围也更加广泛,在商业、工业、娱乐、艺术、教育、医疗、军事等各个方面都发挥着重要的作用,图形芯片的实现架构也在不断的创新和发展。
[0003] 早期的GPU设计领域,一般都采取固定流水线(Fixed Pipeline)的设计方式。其固定流程包括:几何变换、光照、裁剪、光栅化、Z测试、纹理贴图等,在设计中除了考虑要提供足够的整数和浮点运算之外,另一个重要的考虑因素就是存储体的带宽,根据研究表明,在渲染阶段,影响GPU运行速度的主要因素就是存储体的带宽,因为在这一过程中,需要频繁的读取纹理、深度、帧存等外存数据,往往一个像素需要读取多次外存才能够最终写入帧存,为了减小存储体带宽的影响,在这种架构中往往采取加大片上存储(Cache)的方法来减少外存的访问量,但是这种方式增大了芯片的功耗,对性能的提高程度也有限。
[0004] 实际上在固定流水线架构中,造成存储带宽不够的原因是大量相互遮盖的图元在绘制,最终显示的像素需要多次重复渲染,为了解决这一问题,将绘图流程进行改进,比较常见的就是延迟渲染(Deferred Rendering),延迟渲染是利用额外的缓冲区来缓存绘图过程中间的信息,在确定像素最终颜色之前,尽量延后像素实际写入输出图像缓冲区的时间,来避免处理多余不必要的像素以及缓冲区读写,因为最终能够显示在屏幕上的三角形占原始输入图元的20%~83%,所以这种延迟渲染的方式可以在一定程度上减少运算量和访存次数,提高性能。
[0005] 另一种GPU的实现架构为分块渲染技术。这项技术是将绘图区划分为若干个相同大小的块,然后将所有的待绘制图元收集完毕写入外存后,再从外存将每一块的图元读出,以块为单位进行渲染。这种技术可以大大减少访问外存的次数,大大提高GPU的绘制效率,在分块渲染技术中,块的存储是一个重要的问题,以前的做法是将图元分块之后顺序存放在外存,片上维持一个链接表,读取的时候按照链接表将当前块的图元读出进行绘制。

发明内容

[0006] 本发明要解决的问题就在于:针对现有技术存在的技术难点,本发明提供了一种基于分块渲染的GPU中块的高效存储策略,该发明可以减小片上存储的信息,同时可以将块的收集和绘制时间重合,加快GPU的绘制效率。
[0007] 与现有的技术相比,本发明的优点就在于:1、逻辑简单:本发明提出的块存储策略在实现结构上将写入和读出分开,两者之间通过一个计数器建立关系;2、片上存储资源少:本发明提出的块存储策略只需要在片上维持两个RAM(作为奇数帧和偶数帧的计数器),而其余的信息全部写入外存DDR中,大大减少片上存储资源;3、性能优良:本发明提出的奇偶两帧缓存的技术,可以将图元绘制时间和图元收集时间重合,绘制一帧的时间平均可以节约30%~50%。

附图说明

[0008] 图1是本发明实现的块存储策略结构图。

具体实施方式

[0009] 以下将结合附图和具体实施例对本发明做进一步详细说明。
[0010] 如图1所示,本发明的基于分块渲染的GPU中块存储策略的实现,它包括每一块最多包含的块数目确定,本实现中,块的存储空间设置为一固定大小的区域,同时设置块的大小为一固定值,那么绘图区域大小不同,该存储区域能够存储的块的数目就不同,每一块能够存储的图元数目就不同。根据图元分块送入的块号,从本地RAM(内部维持每个块的计数器)中取出当前块中已经存储的块的数目,若为第一次处理该块,那么块的数目为0。根据当前绘图区块的数目、每一块占用的存储空间、当前待写入的块号、当前块已写入的图元数目、每一块占用的存储空间计算当前图元写入DDR存储体的地址。得到存储地址之后,将图元的绘制信息写入DDR存储体中。同时将对应块的计数器加1。由于存储空间有限,若当前块存储的块的数目超过最大数目,前面的分块算法需要停顿,然后优先读取该块绘制,直到小于最大存储数目,前面分块算法再继续执行。当所有的块都写入完毕之后,开始读取块,首先按块的顺序轮询保持的计数器的值,直到找到第一个图元数目不为0的块。将该计数器的值读出,根据当前块号、每一块占用的存储空间、每一个图元所占用的存储空间计算读取块的地址。所有图元读取完毕,当前帧绘制完毕。为了提高绘图效率,本实现策略将维持两个计数器,奇数帧和偶数帧分别用一个计数器,这样可以再奇数帧收集图元时,偶数帧进行绘制,反之亦然。