原文:http://www.azillionmonkeys.com/qed/accelerator.html

作者:Paul Hsieh

-潘宏 译

-2013年1月

-email: popyy@netease.com

-weibo.com/panhong101

(译注:本文写于2000年左右,很多内容稍显过时。但作为理解GPU发展的历史性、技术性材料,本文真是不可多得)

介绍

本文主要讨论实时图形渲染方面的东西,比如绘制桌面GUI,游戏或者实时模拟、动画。而像射线追踪、图像处理这样的主题我们不会讨论。

图形硬件就是你电脑中用来绘制图形的协处理器。像Windows这样的GUI,如果安装了“显卡驱动程序”,它就可以操纵图形硬件进行渲染,这可比纯软件渲染快得多。如果你这两年购买过Intel芯片的PC,估计里面就有图形加速卡。

图形加速卡通过图元进行渲染,它和x86的CPU同时工作,但性能比后者要高很多。加速卡比CPU快的一个原因在于:它离显存很近,不用非得通过缓慢(相对于显存的速度)的系统总线和芯片组来传递原始像素到显存中。但最主要原因在于,它能和CPU同时工作。也就是说,当CPU正在为接下来的图形命令算坐标的时候,加速卡可能正在为当前图形命令填充多边形。这种分开计算经常被称为负载均衡(Load Balancing)。

操作系统

苹果Macintosh中比较老的内建图形API并不提供这种并发图形操作。其原因在于帧缓冲并没有以某种方式抽象出来。一些流行的软件比如Adobe的Illustractor以及Type Manager会直接存取帧缓冲,也没什么存取仲裁。而使用32位QuickDraw API的Mac应用程序可以使用硬件加速,但效果如何还不能确定。

然而,为了应付Wintel(Windows和Intel)这种双重垄断的机器,苹果最近采取了出人意料的举动——他们已经决定支持OpenGL标准!具体细节我就不得而知了(我觉得只会在Rhapsody/OS X中支持),但造成的影响就是这篇文章也适用于下一代苹果的操作系统,只要系统支持OpenGL。

我最新了解到Linux和BeOS也有支持硬件加速的OpenGL实现(但只是部分显卡)。

但目前对图形加速方案支持最多的,并且积累最多的,还是Windows平台(有时这有点讽刺SGI的管理层)。因此,尽管我们讨论的是通用高性能图形架构,但我们还是基于Windows的图形架构。

下图展示了现代图形架构:

当前图形加速卡质量通过以下这些指标来衡量,包括:屏幕分辨率、刷新能力、TV输出兼容性、视频回放、图像质量、2D GUI图元绘制。但当前都是看它们的3D能力,只支持2D的显卡已不再被重视。关于2D和MPEG视频方面,虽然有趣,但我不会谈得太多。

性能瓶颈

对于要关注图形性能的应用程序,下面是其主要瓶颈:

  • 显存带宽
  • 主机(Host)和显卡的通信
  • 硬件特性和主机模拟
  • 显示器刷新

有意思的是,众所周知,内存上传性能(指从主机到显存方向的数据传输)是很严重的性能瓶颈。Intel已经通过AGP技术“解决”了该问题。然而,经验表明,支持AGP的图形卡并没有因此而表现的更好。

显存带宽

图形性能的最大瓶颈就是显卡输出其结果到显存的速度。然而,传统内存技术虽容易实现并理解,但仍处于SDRAM或者RDRAM的性能水平。过去,像ATI这样的显卡厂商推出过VRAM,这种RAM技术允许每周期多次存取(视频刷新一次,显卡输出一次)。它昂贵、时钟率受限,且实际上并没比DRAM快多少。类似情况是,RDRAM性价比也不高。(MPACT多媒体处理器,Cirrus的Laguna,和几个SGI系统包括Nintendo 64都采用了RAMBUS内存)。

在这种情况下,显卡厂商又怎么敢声称能够提高带宽呢?很简单,RAM将根据多条总线进行分区。在Chromatic MPACT 2架构下,RDRAM被加工为两个插槽,同一个内存指令通过两根总线被发送到两个独立的RDRAM中(你可以看看你的显卡母板)。接着RAM仲裁器把它们的结果合并到一个两倍大小的数据中,这通过将物理内存字节交错排列完成。而内部的数据路径也无需增加,因为仲裁器能够简单地将存取操作进行缓冲。图形处理器本身的时钟频率也随着显存而翻倍,这样它就能以两倍的速度处理内存请求。(当然,实际执行时的内存等待(Latency)时间没变)但这个方法因增加了芯片引脚数而提高了成本,而RDRAM则是一种低引脚数解决方案。

S3、3DFX等公司使用了另外一个策略,就是把显存划分成几个大的、顺序排列的内存库(Bank)。 给定一个图形操作,只要相关的内存对象(Memory Object)分散于这些分区的bank中,该系统在理论上就应该和前面的显存开槽策略具有相同的性能级别。但是,在很多情况下,对于没有针对显存带宽优化过的内存对象,这种任意的分区导致了总显存的使用限制。也导致了图形软件为了使用多bank结构,所增加的额外工作。

上面的那些公司当然不是此技术的先行者。Matrox早就在它们的Millenium 2D显卡中使用了该技术(我不知道Matrox是否用了banking或者开槽技术,但我倾向于认为它肯定用了banking,因为在某些部分,它们似乎有线宽的粒度限制)。实际上,任何声称自己能够超越物理RAM带宽限制的显卡都会使用这两种技术之一。而今可能每个显卡公司都会这么做。

这个技术产生的副作用就是对显卡母板设计的影响,比如显存会被分成多个芯片,你看看你的显卡板子就清楚了。不过这虽增加了母板的复杂度(测试复杂度也增加了),但性能上去了。

BitBoys公司(架构了Pyramid 3D并提出了Glaze3D显卡)提出了一个另类的想法以提高显存带宽。他们简单地内嵌了一个eDRAM并且将芯片内(这种便宜很多)总线加工到512位。他们声称该带宽为9.6GB每秒,这是传统的128位200Mhz方案的3倍。有这种技术,BitBoys似乎应该可以说是稳居行业榜首了。可是,他们的设计后来却并没有实体化,更没有在市场上赢得先机。一些了解他们的硬件设计师建议说,Infineon公司所采用的eDRAM制造过程,完全不适合用于显卡内核制造中的逻辑门电路。

而3D图形的特定领域,纹理缓存,纹理压缩,以及mipmap也都促进了显存带宽的发展。

另一个增加显存带宽的重要技术,就是通过基于块(Tile)的寻址来增加内存访问效率。这种情况下,寻址时,屏幕被分成多个矩形块,而非简单递增地址分量而得到的(y,x)坐标。这种方式的优势在于,访问的内存地址靠得越近,效率就越高(就算是基于banking寻址技术的内存芯片,也利用了“访问内存时倾向于顺序性的”这个事实优势)。被渲染的图元倾向于在笛卡儿坐标尺度上具有局部性,而非在(y,x)坐标对尺度上具有局部性(译注:局部性(Locality)是cache系统术语,是cache有用的理论根据,而tile寻址技术正是利用了这一点)。

这种分块技术对软件来说是透明的。显存仲裁器中的硬件会将块地址实时进行转换,这相当于一个虚拟线性寻址机制。(MPACT使用该技术用于2D渲染,PowerVR也用它,Glaze3D应该也使用了它进行3D渲染)

纹理和像素缓存(Cache)在典型情况下也具有矩形结构,这是因为纹理缓存的访问冗余性不是单向的。(我不知道各种显卡具体是如何实现纹理缓存的,但可以想象出,理想情况下,它们和CPU缓存应该有类似的级别结构)

什么是图形加速卡(一)相关推荐

  1. 图形加速卡技术(大众扫盲篇)

    图形加速卡技术论坛:1.入门篇--图形加速之 图形 (发表于GZeasy.com: Jul 20 2003, 04:14 PM) 来了这么久,也对这里的朋友有了一个大概的了解. 恕我罗索一两句,这里的 ...

  2. [资料] [转载] 图形加速卡技术 [专业的基础技术文章]

    图形加速卡技术论坛:1.入门篇--图形加速之 图形 (发表于GZeasy.com: Jul 20 2003, 04:14 PM) 来了这么久,也对这里的朋友有了一个大概的了解. 恕我罗索一两句,这里的 ...

  3. 图形加速卡技术 [专业的基础技术文章]

    最后,感谢下本文的作者,HeavenPR,原文发表在GZ论坛. --------------------------- 图形加速卡技术论坛:1.入门篇--图形加速之 图形 (发表于GZeasy.com ...

  4. invalidate(true) 图形不显示_2D图像界面-ATI 图形界面卡

    .ATI Technologies, Inc. · 公司创立时间:1985 年 · 市场活跃期间:1986 年至 2006 年 · 退出显示市场:2006 年,被 AMD 收购. · 公司现况:201 ...

  5. 计算机类产品评价技术指标体系研究之图形(像)篇

        (一)显卡 对于核心的显卡来说,显存工作频率越高性能越好,而显存的ns数值越小的显存能跑更高的频率,所以显存的ns被认为是显卡选购的关键之一,另外就是显存的品牌.显卡和主板上都有"内 ...

  6. OpenGL三维图形编程技术(转)

    人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics Library)三维图形库表现尤为突出,它易于使用且功能强大.随着计算机技 ...

  7. 图形世界分裂的两派——理清Direct3D和OpenGL的脉络

    计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术,API(Application Programming Interface)即"应用程序接口" ...

  8. 图形世界分裂的两派 理清Direct3D和OpenGL的脉络

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 计算机三 ...

  9. DirectX 图形接口指南

    这些指南是我在阅读 DirectX9.0 SDK 中逐步翻译出来的.对于初次接触 DirectX Graphics 的编程者而言,这应该是很好的上手资料.其实,本人就是从这些指南开始深入 Direct ...

最新文章

  1. Java自学笔记(13):【面向对象】方法覆盖,final关键字,对象转型
  2. LAMP环境下动态网站许愿墙的搭建
  3. 消息队列(2):常见的消息队列协议
  4. 最通俗易懂的YOLOv3原理及代码解析
  5. 01背包问题(信息学奥赛一本通-T1267)
  6. Windows Phone 7三触控程序开发
  7. Windows域控普通用户授权加域有数量限制修改方法
  8. clover写入efi_MAC 10.14 安装教程10-基于黑果小兵大神EFI文件的修改过程
  9. smith圆图重要性_数学之美:浅谈Smith圆图
  10. H5制作哪家强?四大H5页面制作工具大比拼
  11. 【Mark】转正述职答辩
  12. 电感式传感器的原理大白话
  13. BZOJ 4565 字符合并 (区间 DP 状压 DP)
  14. 使用HTML+CSS仿写小米官网首页
  15. 如何让latex中插入没有标号的footnote
  16. 视觉单目标跟踪任务概述
  17. 2018个人面试记录
  18. npm install报错 npm ERR 的四种解决办法
  19. 输入框输入手机号并匹配历史记录
  20. 国产最强负载均衡器LVS(理论+实战)

热门文章

  1. ownCloud/Nextcloud OCC命令行工具详解
  2. 一文看懂咪头的工作原理及结构(驻极体话筒)
  3. Git在同一机器下配置多个github账号
  4. lv创建与挂载+oracle冷备恢复
  5. NRF905 无线模块实验
  6. CRFPP 语言处理
  7. 下载spotify音乐_完成播放列表或专辑后如何停止Spotify停止自动播放音乐
  8. 初二物理模型有哪些_初中物理8种分类研究方法+适用知识点大汇总
  9. python 易盛行情_易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码...
  10. 数说CS|国防科技大学计算机学院是怎样的存在?