图形处理单元

3D引擎的关键模块

图形处理单元是指3D引擎的关键模块。本模块处理的命令可分为配置信息命令、堆栈操作命令、清除缓冲区命令、累积缓冲区命令、片段数据和非本单元使用的命令6 种。所以将本模块划分成6个部分来实现,如 “CAC 模块”所示。命令解析部分负责命令的初步解析和分派,配置信息部分负责配置信息命令的解析和保存,堆栈操作部分负责堆栈操作命令的解析和参数的存取,清除部分负责清除缓冲区命令的解析和清除处理,累积部分负责累积缓冲区命令的解析和累积操作,读数据部分负责本模块和后续模块所需目标信息的读取,发送部分负责发送处理好的数据和非本单元处理的命令。

简介
在多元化应用需求的推动下,半导体制造工艺水平飞速发展,计算机系统的功能和性能极大地丰富和提高。图形处理器( Graphic Processing Unit,GPU) 作为计算机显示系统的核心,具有强大的数据计算能力,以硬件加速器的形式实现了二维/三维( Two Dimension /Three Dimension,2D/3D) 图形处理、图像处理和显示控制等功能,将通用CPU从复杂的图形算法和绘制中解放出来,已经成为几乎所有类型计算机系统的标准配置。
片段处理单元( Fragment Operation Unit,FOU) 是GPU 3D 引擎的关键模块,处于3D图形流水线的末端,承担着合并和输出图形的任务。更为重要的是,FOU决定了实现3D图形特殊显示效果的能力,例如,图形的透明效果、抗锯齿处理、布告板技术、景深效果、运动模糊等技术均需要FOU的支持。在高端GPU中,集成FOU的数量越来越多,并以阵列方式加速对海量图元片段的处理。可见,FOU是GPU中不可或缺的关键模块,具有重要的研究价值和实用意义。
清除和累积操作单元
本模块处理的命令可分为配置信息命令、堆栈操作命令、清除缓冲区命令、累积缓冲区命令、片段数据和非本单元使用的命令6 种。所以将本模块划分成6个部分来实现,如 “CAC 模块”所示。命令解析部分负责命令的初步解析和分派,配置信息部分负责配置信息命令的解析和保存,堆栈操作部分负责堆栈操作命令的解析和参数的存取,清除部分负责清除缓冲区命令的解析和清除处理,累积部分负责累积缓冲区命令的解析和累积操作,读数据部分负责本模块和后续模块所需目标信息的读取,发送部分负责发送处理好的数据和非本单元处理的命令。
配置信息命令由命令解析电路发送到配置信息部分,配置信息电路对相应的参数解析并将信息保存到配置寄存器中供其他操作使用; 堆栈操作命令由命令解析电路发送到堆栈操作部分,堆栈操作电路接收到堆栈操作命令后,会进行配置信息的保存( 压栈) 或读取( 出栈);清除操作命令由命令解析电路发送到清除部分,由清除操作电路产生写缓冲区的坐标地址和数据,并将数据发送出去;累积操作命令由命令解析电路发送到累积操作部分,由累积操作电路产生新的坐标地址和数据,并将数据发送出去;当命令解析部分接收到片段数据时,若后续模块的处理需要目标片段值,则发送到读数据部分读取目标片段,否则将命令直接发送;不是本单元所需的命令将其直接发送出去。以上所有的数据和命令最终都由发送部分传送到下一级流水线单元。
片段测试单元
本单元将接收到的命令分流成两部分,一部分进行配置信息相关的操作,另一部分进行测试处理。这两部分数据最终都将会以命令的形式发送出去。另外,在参数配置的过程中会出现对配置信息的堆栈操作。将片段测试的处理划分为输入选择、配置参数、片上存储、测试处理和输出控制5个功能模块。
输入选择模块负责对收到命令的初步译码,把命令分流成两路,一路进行片段测试处理,另一路进行参数配置。同时,为了确保命令的顺序执行,当且仅当后续各模块都空闲时本模块才会接收新的命令。
配置参数模块会对接收到的命令进行进一步的解析,进行两方面的处理。一方面提取命令中携带的配置信息保存到配置参数寄存器中; 另一方面当接收到压栈命令时,将相应配置参数寄存器中的配置信息存储到片上存储中,当接收到出栈命令时,读取片上存储中的数据,更新配置参数寄存器。
测试处理模块会根据配置参数设置的处理环境对输入的图形片段进行测试,并将测试结果与输入信息同时发送到输出控制模块。本模块会对片段进行裁剪测试、alpha 测试、深度测试和模板测试,另外在使用模板测试时,会根据模板测试和深度测试的结果更新模板缓冲区中对应位置的模板值。
经过分流处理的两路命令在输出控制模块选择输出。配置参数模块的输出数据是后级流水线需要的配置信息时会直接输出;测试处理模块的输出将根据测试结果选择性地输出:若图形片段的所有测试均通过,则将输入图形片段的命令输出;若模板测试开启,除深度/模板测试外的其他测试均通过,则不管是否通过深度/模板测试,结果都将输入数据输出,并标记为只写模板值,此时的深度和颜色数据不会写入帧缓存中;若模板测试没有开启,则只要有一项测试失败,输入数据都不会发送到下一级流水线单元。
混合和逻辑操作单元
本模块中的混合操作是对源片段的颜色和目标片段的颜色进行算数运算得到最终颜色。首先需要运用乘法运算采用混合因子对颜色成分进行缩放,然后再将源成分和目标成分进行混合。为了提高电路的处理速度,将乘法运算和混合分步处理,采用流水的方式实现,首先进行乘法运算(混合1) ,然后进行混合运算(混合2) 。由于逻辑操作和屏蔽缓冲区的实现均是一些逻辑运算,可以采用组合电路实现,在数据输出控制部分完成。据此,将BDLM单元的设计划分为5个单独的模块,分别是命令解析模块、RAM模块、混合1模块、混合2模块和输出控制模块。其中混合1模块和混合2模块分步实现混合操作的功能。各模块之间的连接关系和本单元总体结构“BDLM模块”。
命令解析模块提取并保存命令中的配置信息,并在接收到堆栈操作命令时对配置信息进行保存和更新。当接收到需要处理的片段信息时,将配置信息和片段信息同时发送到相应的处理电路。
图形片段数据依次经过混合1和混合2电路的处理完成混合操作。首先完成混合操作中的乘法运算,根据混合方式将源片段和目标像素分别乘以对应的混合因子,得出新的颜色值。然后根据混合方式将新的源片段和目标像素的颜色值进行加、减、取最大值或最小值,得到新的源片段值。混合操作后新生成的片段值在输出控制模块完成逻辑操作和屏蔽处理。
至此,所有的数据处理完毕,生成的像素、深度和模板值即为最终要写入帧缓存的数据。片段处理单元写入帧缓存的数据宽度是128b,而处理产生的数据宽度是32b,所以对帧缓存的一次写操作能够装载4个数据。为了减少帧缓存的访问次数,增大带宽利用率,在片段处理单元缓存4个数据后再写入帧缓存,由“输出控制”模块根据坐标连续的原则,将属于同一地址的数据以4个为一组进行数据的合并输出。
虚拟仿真与原型验证
一方面,构建了虚拟仿真平台,并采用Cadence NCVerilog仿真工具进行功能验证,将输出结果保存成图片。另一方面,基于Xilinx Vertex6 XC6VLX760 FPGA 构件原型系统,并对FOU 进行原型验证。采用Xilinx ISE 工具对设计进行综合,FOU的工作频率达到180 MHz。另外,为了评估ASIC 实现时的性能,基于SMIC65nm CMOS工艺下,采用Synopsys Design-Compiler 对设计进行综合,电路工作频率达到300 MHz,大于GPU 芯片工作频率270 MHz 的设计要求,能够满足应用需求。
为了能全面地对FOU 的功能进行验证,将FPGA原型验证结果与虚拟仿真平台输出的结果和在Windows 下用MicrosoftVisual Studio 2008 软件运行OpenGL 函数编写的C ++ 程序所得的图形进行对比。
在清除缓冲区的测试中将颜色缓冲区的清除值设置为灰色(0.5,0.5,0.5,0.5) ,则整个屏幕显示为灰色。累积操作首先采用GL_ACCUM 累积模式,value 值设置为3.5,对图形进行操作,然后采用GL_RETURN 操作模式,value 值设置为1.0,将累积操作的结果返回到颜色缓冲区进行显示。不同像素颜色成分经过累积操作之后使图形显示不同的层次,这就是图形景深效果的基本原理。将裁剪框设置为图中白色部分,绘制三角形和矩形框,使三角形全部落在裁剪框之中,矩形框全部落在裁剪框之外。经过裁剪测试后只有三角形显示出来。alpha 测试所用原始图形,分别绘制一个颜色渐变的三角形和矩形,它们的alpha 值分别由0.1、0.4、0.8 和0.1、0.4、0.7、0.8 经过插值运算得来,所以两个图形的alpha 值范围均为0.1 ~ 0.8。将alpha 测试的比较函数设置为GL_GREATER,参考值设置为0.4,则只有alpha 值大于0.4 的部分图形能够显示出来。模板测试用图,图中白色以及两条白色边框内的部分为模板,蓝色矩形为绘制图形,将模板测试函数设置为GL_NOTEQUAL,则只有在模板之外的图形能够显示出来。混合操作的一个重要作用是实现图形的抗锯齿功能,第一行的图形是没有使用混合功能时绘制的点,边缘比较明显,呈现出小矩形的形状。第二行的图形是使用混合功能将每个像素的alpha 值作为混合因子采用GL_FUNC_ADD 方式进行混合之后的图形,边缘被锐化了,呈现出边缘平滑的原点。逻辑操作测试输入为黄色三角形,将逻辑操作码设置为GL _NOR,黄色三角形与黑色的背景经过逻辑操作后变成蓝色( 0,0,1)。使用屏蔽操作绘制的三角形,将屏蔽码设置为( 0,1,1) ,屏蔽红色成分。则经过平滑着色产生的带有红绿蓝成分的三角形经过屏蔽操作后只有绿色和蓝色成分被显示。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市