首页 / 专利库 / 电脑编程 / 算法 / 一种GPU多线程纹理映射SystemC建模结构

一种GPU多线程纹理映射SystemC建模结构

阅读:1050发布:2020-06-18

专利汇可以提供一种GPU多线程纹理映射SystemC建模结构专利检索,专利查询,专利分析的服务。并且本 发明 属于计算机图形领域,尤其涉及一种GPU多线程纹理映射SystemC建模结构,包括:纹理参数获取和Level计算单元(1)、纹素地址计算单元(2)、数据组装与任务分配单元单元(3)、纹素数据提取和格式转换单元(4)、纹素过滤、纹素数据归一化单元(5)和纹理映射状态与控制参数单元(6)。本发明可以避免繁琐的 电路 信号 设计、快速评估大规模 硬件 系统的架构,适用于电路早期的系统级设计开发,对同类产品、功能实现提供有效参考。,下面是一种GPU多线程纹理映射SystemC建模结构专利的具体信息内容。

1.一种GPU多线程纹理映射SystemC建模结构,其特征在于,包括:
纹理参数获取和Level计算单元(1)、纹素地址计算单元(2)、数据组装与任务分配单元单元(3)、纹素数据提取和格式转换单元(4)、纹素过滤、纹素数据归一化单元(5)和纹理映射状态与控制参数单元(6);
纹理参数获取和Level计算单元(1)输出接口与纹素地址计算单元(2)的输入接口相连接,纹理参数获取和Level计算单元(1)的根据统一染色体阵列(USA)输入的纹理Quad请求的纹理单元ID信息,从纹理映射状态与控制参数单元(6)读取纹理映射类型mapType和过滤模式filterMode、baselevel以及baseLevel层的纹理图像分辨率参数width、height、depth、lod_bias参数,并和统一染色体阵列输入的纹理Quad请求Quad_mask与坐标变量s,t,r一起代入Level计算流程中,得到常驻纹理的Level层的值,并从纹理映射状态与控制参数单元(6)读取Level层纹理图像分辨率参数的width、height、depth,将所述常驻纹理的Level层的值、Level层纹理图像分辨率参数的width、height、depth、纹理映射类型mapType、纹理过滤模式filterMode和统一染色体阵列输入的纹理Quad请求坐标变量s,t,r,输入给纹素地址计算单元(2);
纹素地址计算单元(2)根据纹理参数获取和Level计算单元(1)输入的统一染色体阵列输入的纹理Quad请求坐标变量s,t,r和Level层纹理图像分辨率参数的width、height、depth,首先计算指定Level层的纹理坐标,得到第Level层纹素坐标地址(i0,j0,k0),(i1,j1,k1);其次,纹素地址计算单元(2)将纹素坐标地址(i0,j0,k0),(i1,j1,k1)带入wrap模式对Level层的坐标调整算法中,得到每个小分量wrap调整处理后的纹理坐标地址(i0,j0,k0),(i1,j1,k1);再次,纹素地址计算单元(2)根据输入的纹理过滤模式filterMode和纹理映射类型mapType,对纹理坐标进行纹素采样处理,并产生1到n个纹素坐标;并根据wrap模式对Level层的坐标调整算法对多个纹素坐标进行处理,最后,并将最终的包含纹素采样坐标的纹素采样请求输出给数据组装与任务分配单元(3);
数据组装与任务分配单元(3),根据当前外部纹理存储器的ready状态,如果ready状态为1,总是允许本单元向纹理存储L1 TCache发送纹素采样请求;否则,将整个纹理流线停滞;同时,通过与外部纹理存储器的接口将纹素采样请求传送给外部纹理存储器进行请求寻址处理,并设置请求完成标识,数据组装与任务分配单元(3)通过内部进程不断检测外部纹理存储器返回的完成标识状态,如果返回数据有效,则将外部纹理存储器处理后的请求结果按照请求的先后顺序进行排序,输出给纹素数据提取和格式转换单元(4);
纹素数据提取和格式转换单元(4),先从纹理映射状态与控制参数单元(6)读取当前纹理请求在纹理Cache内部存储格式internalformat,根据外部纹理存储器返回的存储格式,从纹素数据提取和格式转换单元(4)获取的请求结果中提取出纹理格式中的R、G、B、A、Lum、Int和Depth,将不同内部格式转换为RGBA格式的颜色数据,并结果输出给纹素过滤操作、纹素数据归一化单元(5);
纹素过滤操作、纹素数据归一化单元(5),当纹理过滤模式为临近采样模式,意味着不需要执行过滤操作,这种类型的纹理请求在过滤模被“透传”;否则,需要根据纹理过滤模式filterMode,对多个纹理采样值通过线性、或双线性,或三线性插值计算,得到一个过滤后的纹素值,将结果进行纹素数据归一化,最后,将所述结果通过与统一染色阵列之间的接口函数输出给外部统一染色阵列。

说明书全文

一种GPU多线程纹理映射SystemC建模结构

技术领域

[0001] 本发明属于计算机图形领域,尤其涉及一种GPU多线程纹理映射SystemC建模结构。

背景技术

[0002] 纹理映射是给计算机产生的3D图形表面贴上各种纹理图像,以提高图形的真实感。纹理映射属于像素处理阶段,用于加速计算密集性和存储访问密集性的纹理操作,一个主要的运算就是找出屏幕空间像素(x,y,z)在纹理空间所对应的纹理元素所在存储空间的地址(即纹素地址),然后将所选中的纹理元素颜色进行滤波,并用这个值替换屏幕空间的像素颜色,从而完成纹理映射。也就是说,先将屏幕空间的像素坐标转换到参数空间(u,v),再由参数空间转换到纹理图像空间,其特点就是计算量大,且有实时性要求。
[0003] 对于系统的软/硬件协调设计和协同验证(Co-verification),模拟速度非常重要。为了提高效率,必须在设计过程的早期阶段启用有效的硬件/软件系统模拟。为了克服在传统RTL级建模速度慢的的局限性,又鉴于SystemC支持硬件/软件协同设计,能够描述由硬件和软件组成的复杂系统的结构,支持在C++环境下对硬件、软件和接口的描述。本文使用SystemC2.0的事务级模型(Transaction Level Models,TLM)进行不同抽象级别建模。SystemC最基本的结构单元是模(module),模块可以包含其他模块或过程(process)和方法(method),通过在其中加入时序细节,可以实现功能模块、通信模块、软件模块和硬件模块在各种系统级层次上的抽象,其引进的端口和信号的数据类型描述、时钟和延时的概念,可以评估系统的性能、探索系统的结构。

发明内容

[0004] 本发明的目的是:
[0005] 提供一种GPU多线程纹理映射SystemC建模结构,用于加速计算密集性和存储访问密集性的纹理操作,实现了“4个fragment的纹理操作”以及每个fragment内部“多个分量”的操作并行执行,可以避免繁琐的电路信号设计、快速评估大规模硬件系统的架构。
[0006] 本发明的解决方案是:
[0007] 一种GPU多线程纹理映射SystemC建模结构,包括:
[0008] 纹理参数获取和Level计算单元(1)、纹素地址计算单元(2)、数据组装与任务分配单元单元(3)、纹素数据提取和格式转换单元(4)、纹素过滤、纹素数据归一化单元(5)和纹理映射状态与控制参数单元(6);
[0009] 纹理参数获取和Level计算单元(1)输出接口与纹素地址计算单元(2)的输入接口相连接,纹理参数获取和Level计算单元(1)的根据统一染色体阵列(USA)输入的纹理Quad请求的纹理单元ID信息,从纹理映射状态与控制参数单元(6)读取纹理映射类型mapType和过滤模式filterMode、baselevel以及baseLevel层的纹理图像分辨率参数width、height、depth、lod_bias参数,并和统一染色体阵列输入的纹理Quad请求Quad_mask与坐标变量s,t,r一起代入Level计算流程中,得到常驻纹理的Level层的值,并从纹理映射状态与控制参数单元(6)读取Level层纹理图像分辨率参数的width、height、depth,将所述常驻纹理的Level层的值、Level层纹理图像分辨率参数的width、height、depth、纹理映射类型mapType、纹理过滤模式filterMode和统一染色体阵列输入的纹理Quad请求坐标变量s,t,r,输入给纹素地址计算单元(2);
[0010] 纹素地址计算单元(2)根据纹理参数获取和Level计算单元(1)输入的统一染色体阵列输入的纹理Quad请求坐标变量s,t,r和Level层纹理图像分辨率参数的width、height、depth,首先计算指定Level层的纹理坐标,得到第Level层纹素坐标地址(i0,j0,k0),(i1,j1,k1);其次,纹素地址计算单元(2)将纹素坐标地址(i0,j0,k0),(i1,j1,k1)带入wrap模式对Level层的坐标调整算法中,得到每个小分量wrap调整处理后的纹理坐标地址(i0,j0,k0),(i1,j1,k1);再次,纹素地址计算单元(2)根据输入的纹理过滤模式filterMode和纹理映射类型mapType,对纹理坐标进行纹素采样处理,并产生1到n个纹素坐标;并根据wrap模式对Level层的坐标调整算法对多个纹素坐标进行处理,最后,并将最终的包含纹素采样坐标的纹素采样请求输出给数据组装与任务分配单元(3);
[0011] 数据组装与任务分配单元(3),根据当前外部纹理存储器的ready状态,如果ready状态为1,总是允许本单元向纹理存储L1 TCache发送纹素采样请求;否则,将整个纹理流线停滞;同时,通过与外部纹理存储器的接口将纹素采样请求传送给外部纹理存储器进行请求寻址处理,并设置请求完成标识,数据组装与任务分配单元(3)通过内部进程不断检测外部纹理存储器返回的完成标识状态,如果返回数据有效,则将外部纹理存储器处理后的请求结果按照请求的先后顺序进行排序,输出给纹素数据提取和格式转换单元(4);
[0012] 纹素数据提取和格式转换单元(4),先从纹理映射状态与控制参数单元(6)读取当前纹理请求在纹理Cache内部存储格式internalformat,根据外部纹理存储器返回的存储格式,从纹素数据提取和格式转换单元(4)获取的请求结果中提取出纹理格式中的R、G、B、A、Lum、Int和Depth,将不同内部格式转换为RGBA格式的颜色数据,并结果输出给纹素过滤操作、纹素数据归一化单元(5);
[0013] 纹素过滤操作、纹素数据归一化单元(5),当纹理过滤模式为临近采样模式,意味着不需要执行过滤操作,这种类型的纹理请求在过滤模块被“透传”;否则,需要根据纹理过滤模式filterMode,对多个纹理采样值通过线性、或双线性,或三线性插值计算,得到一个过滤后的纹素值,将结果进行纹素数据归一化,最后,将所述结果通过与统一染色阵列之间的接口函数输出给外部统一染色阵列。
[0014] 本发明的优点是:
[0015] 本发明使用SystemC进行事务级周期精确建模,同时用C++语言来描述软件,可以使得系统设计的硬件和软件建模统一采用C++语言来实现;基于SystemC的设计方法支持设计者在不同层次上建模,减小了代码量和工作量,提供了更高的工作效率;实现了“4个fragment的纹理操作”以及每个fragment内部“多个分量”的操作并行执行,可以避免繁琐的电路信号设计、快速评估大规模硬件系统的架构,适用于电路早期的系统级设计开发,对同类产品、功能实现提供有效参考。附图说明
[0016] 图1是本发明中一种GPU多线程纹理映射SystemC建模结构的原理框图
[0017] 图2是本发明纹理映射单元的事务级建模实现框图;
[0018] 图3是对图2和图3的图标识说明示意图;
[0019] 图4是level计算流程示意图;
[0020] 注释:
[0021] 1、Quad不完整:指quad包含了不足4个的fragment,可以通过quad_mask的有效位数得知;
[0022] 2、启用mipmap:缩小过滤器被设置为使用mipmap,其对应相应的过滤模式有:nearest_mipmap_nearest,linear_mipmap_nearest,nearest_mipmap_linear,和linear_mipmap_linear;
[0023] 图5是纹理Nearest模式下Level纹素坐标计算示意图;
[0024] 图6是纹理Linear模式下Level纹素坐标计算示意图;
[0025] 图7是wrap模式对Level层纹素坐标I的调整示意图。
[0026] 图8是纹素过滤流程图

具体实施方式

[0027] 下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
[0028] 本发明提供一种GPU多线程纹理映射SystemC建模结构,如图1所示,包括:
[0029] 纹理参数获取和Level计算单元(1)、纹素地址计算单元(2)、数据组装与任务分配单元单元(3)、纹素数据提取和格式转换单元(4)、纹素过滤、纹素数据归一化单元(5)和纹理映射状态与控制参数单元(6);
[0030] 纹理参数获取和Level计算单元(1)输出接口与纹素地址计算单元(2)的输入接口相连接,纹理参数获取和Level计算单元(1)的根据统一染色体阵列(USA)输入的纹理Quad请求的纹理单元ID信息,从纹理映射状态与控制参数单元(6)读取纹理映射类型mapType和过滤模式filterMode、baselevel以及baseLevel层的纹理图像分辨率参数width、height、depth、lod_bias参数,并和统一染色体阵列输入的纹理Quad请求Quad_mask与坐标变量s,t,r一起代入如图4所示的Level计算流程中,主要包括:纹理坐标预处理、scalar计算、λ计算和mimap层level计算,得到常驻纹理的Level层的值,并从纹理映射状态与控制参数单元(6)读取Level层纹理图像分辨率参数的width、height、depth,将所述常驻纹理的Level层的值、Level层纹理图像分辨率参数的width、height、depth、纹理映射类型mapType、纹理过滤模式filterMode和统一染色体阵列输入的纹理Quad请求坐标变量s,t,r,输入给纹素地址计算单元(2);
[0031] 纹素地址计算单元(2)根据纹理参数获取和Level计算单元(1)输入的统一染色体阵列输入的纹理Quad请求坐标变量s,t,r和Level层纹理图像分辨率参数的width、height、depth,首先计算指定Level层的纹理坐标,具体算法过程如图5和图6所示,得到第Level层纹素坐标地址(i0,j0,k0),(i1,j1,k1);其次,纹素地址计算单元(2)将纹素坐标地址(i0,j0,k0),(i1,j1,k1)带入如图7所示的“wrap模式对Level层的坐标调整算法”中,得到每个小分量wrap调整处理后的纹理坐标地址(i0,j0,k0),(i1,j1,k1);再次,纹素地址计算单元(2)根据输入的纹理过滤模式filterMode和纹理映射类型mapType,对纹理坐标进行纹素采样处理(纹素采样规则参见表1的openGL2.0的纹素过滤模式),并产生1到n个纹素坐标;并根据上文提到的如图7所示的wrap模式对Level层的坐标调整算法对多个纹素坐标进行处理,最后,并将最终的包含纹素采样坐标的纹素采样请求输出给数据组装与任务分配单元(3);
[0032] 表1
[0033]
[0034]
[0035] 注:
[0036] 当放大过滤和缩小过滤器被设置为nearest模式,则纹理映射操作仅使用baselevel的图像;nearest_mipmap_nearest(临近采样)和linear_mipmap_nearest(线性采样)都使用d个mipmap层数据,d,k的值来自纹理映射状态与控制参数单元;nearest_mipmap_linear和linear_mipmap_linear需要获取2个临近mipmap层的纹理值,以2D为例,nearest_mipmap_linear需要从2个mipmap层各读取1个纹素值,2个层之间执行一次线性插值,linear_mipmap_linear需要从2个mipmap层各读取4个纹素值,执行双线性插值之后,2个层之间的结果再执行1次线性插值。
[0037] 数据组装与任务分配单元(3),根据当前外部纹理存储器(纹理L1Cache)的ready状态,如果ready状态为1,总是允许本单元向纹理存储L1 TCache发送纹素采样请求;否则,将整个纹理流水线停滞;同时,通过与外部纹理存储器(纹理L1Cache)的接口将纹素采样请求传送给外部纹理存储器进行请求寻址处理,并设置请求完成标识,数据组装与任务分配单元(3)通过内部进程不断检测外部纹理存储器返回的完成标识状态,如果返回数据有效,则将外部纹理存储器(纹理L1Cache)处理后的请求结果按照请求的先后顺序进行排序,输出给纹素数据提取和格式转换单元(4);
[0038] 纹素数据提取和格式转换单元(4),先从纹理映射状态与控制参数单元(6)读取当前纹理请求在纹理Cache内部存储格式internalformat(参照OpenGl2.0支持的内部纹理格式),根据外部纹理存储器(纹理L1Cache)返回的存储格式(如表2所示),从纹素数据提取和格式转换单元(4)获取的请求结果中提取出纹理格式中的R、G、B、A、Lum、Int和Depth,根据表3将不同内部格式转换为RGBA格式的颜色数据,并结果输出给纹素过滤操作、纹素数据归一化单元(5);
[0039] 表2 Cache输出的纹素数据格式
[0040]
[0041] 表3各种颜色到RGBA的转换规则
[0042]
[0043]
[0044] 纹素过滤操作、纹素数据归一化单元(5),当纹理过滤模式为临近采样模式,意味着不需要执行过滤操作,这种类型的纹理请求在过滤模块被“透传”;否则,需要根据纹理过滤模式filterMode,对多个纹理采样值通过线性、或双线性,或三线性插值计算,得到一个过滤后的纹素值,将结果进行纹素数据归一化,即,本模块输入为RGBA格式,每个分量为8bit的纹素数据,经过归一化操作后的纹素数据每个分量宽度为32bit,取值范围为[0,1]之间,最后,将所述结果通过与统一染色阵列之间的接口函数输出给外部统一染色阵列。
[0045] 实施例
[0046] 下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。
[0047] 如图1所示,一种GPU多线程纹理映射SystemC建模结构,采用SystemC语言和Transaction Level Modeling(TLM,事务级建模)方法,模型中各功能模块通过事务级接口的函数、而不是通过硬件信号的连接来实现通信的,各个模块内部都包含了各自独立、并行执行的进程,每个进程都只有一个共同的事件触发——时钟上升沿,对纹理映射单元进行周期精确的硬件建模;每个进程都可以调用各自模块的事务级接口中的函数,来相互传递信息。
[0048] 映射单元包括纹理参数获取和Level计算单元(1)、纹素地址计算单元(2)、纹理存储访问数据组装与任务分配单元单元(3)、纹素数据提取和格式转换单元(4)、纹素过滤操作、纹素数据归一化(5)和纹理映射状态与控制参数单元(6)。
[0049] 如图3所示,纹理参数获取和Level计算单元(1),用于根据USA纹理请求输入的QUAD的“纹理单元ID”从(6)纹理映射状态与控制参数单元获取相关纹理参数,确定纹理映射类型(maptype),然后计算Level层次的值,确定纹理的过滤模式(filtermode)等。如图2所示,模型设计时采用“Level计算进程”(level_compute_Thread)和流水pipeline_0实现,其中USA请求标识信息(usa_access_request)过调用usa_access_tau_export接口函数实现,当“Level计算进程”检测到usa_access_request有效时,将指针data_pointer_level_compute指向USA输入请求的数据首地址,为“Level计算进程”提供必要的数据信息,“Level计算进程”主要完成算法功能主要有:纹理坐标预处理(computer_texture_coordinate)、scalar计算(computer_scalar)、λ计算(computer_lambda)和mimap层level计算(compute_level_and_alpha)等,并将最后的运算结果输入到pipeline_0实现流水操作传递给下一级纹素地址计算单元(2);
[0050] 如图4所示,纹素地址计算单元(2),用于根据(1)纹理参数获取和Level计算单元输入的纹理映射类型(maptype)、过滤模式(filtermode)计算指定level的纹理坐标;根据wrap mode对超出[0,1]范围的归一化纹理坐标做进一步处理;在指定filter mode,产生1到n个纹素坐标;然后根据wrap mode对多个纹素坐标进行处理。如图2所示,建模设计时采用“纹素地址计算进程”(address_compute_Thread)和流水pipeline_1实现,其中当“纹素地址计算进程”检测到流水pipeline_0[n-1]非空时,将pipeline_0[n-1]的数据指针传递给纹素地址计算指针(data_pointer_address_compute),为“纹素地址计算进程”提供必要的数据信息,“纹素地址计算进程”主要完成算法功能主要有:坐标wrap mode处理(wrap_mode_adjust)、过滤系统计算(compute_whd_prameter)、纹素地址采样计算(compute_level_coordinate)等,并将最后的运算结果输入到pipeline_1实现流水操作传递给下一级纹理存储访问数据组装与任务分配单元单元(3);
[0051] 纹理存储访问数据组装与任务分配单元单元(3),如图2所示,用于当纹理存储器(L1纹理cache)的ready状态,如果ready状态为1,通过cache_read_port总是允许本单元向纹理存储器发送纹素采样请求(一个quad多个纹素坐标)。否则,将整个纹理流水线停滞;同时,通过与纹理存储器(L1纹理cache)的接口函数,通过进程不断检测cache_return_export接口函数返回结果有效情况,如果返回数据有效,则将结果按照请求的先后顺序进行排序,并将结果通过数据指针data_pointer赋值给下一级送给纹素数据提取和格式转换单元(4)的数据指针data_pointer_format_convert;
[0052] 纹素数据提取和格式转换单元(4),用于根据纹理的内部格式internalformat从cache获取的32bit纹素数据中提取纹素各分量的值,将不同内部格式转换为RGBA格式的颜色数据。如图2所示,建模设计时采用“纹素地址计算进程”(format_convert_Thread)和流水pipeline_2实现,其中当“纹素格式转换进程”检测到由cache_return_export接口函数返回的变量cache_return_request有效时,则读取数据指针data_pointer_format_convert的数据,为“纹素格式转换进程”提供必要的数据信息,“纹素格式转换进程”主要完成算法功能主要有:通过texture_parameter_read_port读取纹理寄存器状态参数数据、纹素格式RGBA转换(format_convert)计算等,并将最后的运算结果输入到pipeline_3实现流水操作传递给下一纹素过滤操作、纹素数据归一化(5);
[0053] 如图5所示,纹素过滤操作、纹素数据归一化单元(5),当纹理的过滤模式(filtermode)为临近采样模式(nearest),意味着不需要执行过滤操作,这种类型的纹理请求在过滤模块被“透传”。否则,需要根据过滤模式,对多个纹理采样值通过线性、或双线性,或三线性插值计算,得到一个过滤后的纹素值,将结果进行纹素数据归一化,即将输入RGBA格式,每个分量为8bit的纹素数据,经过归一化操作之后的纹素数据每个分量的宽度为32bit,取值范围:[0,1]之间。如图2所示,建模设计时采用“纹素过滤进程”(data_filtert_Thread)和流水pipeline_3实现,其中,如图8所示,当“纹素过滤进程”检测到流水pipeline_3[n-1]非空时,读取将pipeline_3[n-1]的数据指针,为“纹素过滤进程”提供必要的数据信息,“纹素过滤进程”主要完成算法功能主要有:根据不同的纹理映射类型(maptype)、过滤模式(filtermode)进行纹素值过滤和归一化计算等,并将最后的结果通过与统一染色阵列(USA)之间的接口函数输出给USA。
[0054] 最后应说明的是,以上事实例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈