GPU架构演化史2: 1980-1993 SGI时代
概述
谈到计算机图形学,就不可避免的谈到SGI(Silicon Graphics),它成立于1982年,是业界高性能计算系统、复杂数据管理及可视化产品的重要提供商。Kurt Akeley研究生毕业后就进入SGI和创始人James Clark博士一起工作,在1993年发布RealityEngines的论文中对这段历史做过一个总结,有很多基于历史背景和成本的取舍以及在后续过程中如何利用商业芯片构建几何引擎和在光栅引擎中添加一定的数值计算能力构建近存访问的插值算法,都是值得我们思考的。
1984年诞生的第一代实现了基本的基于线的变换和光栅处理,1988年第二代实现了更加高效的多边形光栅处理、支持了Z-buffer隐藏表面和光照以及平滑着色。直到1993年第三代才实现了抗锯齿和纹理映射。然后基本上把光栅化的整个过程硬件实现了。而售价,高达250,000一台,离进入民间还有很长一段距离。而IRIS的 API则在这个过程中逐渐完成了抽象,最终脱离硬件实现,构成了OpenGL,光栅化算法的流水线也算是定型了。
然后它们又开始构建数千美元的IrisVision试图进入一些PC市场,最终还是失败了,而正是其中几个人嗅到了商机以及当时EDO内存价格的下降,3Dfx Voodoo腾空出世,把3D第一次带入了PC市场。
1982 GeometryEngine1
而如果要算第一块处理图形的ASIC,当属创始人James Clark博士发明的Geometry Engine,由此慢慢的展开了整个计算机图形工业的巨幕。
还记得我们上一章讲到在做图形处理的时候,通常是大量的四维矩阵运算么?
而GeometryEngine便是用来加速这些运算的,论文中也讲到了,它是一个四维向量的浮点计算单元,主要用于矩阵变换、裁剪和到输出设备坐标系的映射。它的上方是一个40K bits的控制存储,用于包含实现特殊指令的微码,下面是四组浮点计算单元,浮点计算能力能够到5Mops, 中间还有一些I/O寄存器。同时它也是完全可配置的,可以通过寄存器将其调整为12种不同的处理模式。
GeometryEngine提供了一系列的指令集,包括操作寄存器的LoadMM、MultMM、PushMM、PopMM、SotreMM来处理4×4矩阵运算,以及LoadVP(viewPort)指令。然后它也包含了一系列绘图指令,例如MOVE、DRAW、POINT、CURVE、MovePOLY、DrawPOLY、ClosePOLY. 它可以通过将12块芯片级联构成整个流水线,前面四级为矩阵浮点计算引擎,作为2D、3D浮点的坐标转换使用。中间可以采用6级作为裁剪引擎,最后两级为缩放和投射引擎。
而文章开头也讲到这是一个很快的工程实现,因此将整个IC的做的非常简单,而最终可以将12个处理单元完全整合封装到单个Chip中。回顾当时的背景,这一段在1993年的论文中讲到了,当时浮点计算硬件还是很贵,接近达到一个合理的价格,而帧缓存的内存还是很贵,因此一开始就选择流片这样一个小规模的计算引擎。在1985年发布的IRIS3000上GE2板如下:
正是由于这些原因,第一代的SGI主机主要用于变换和渲染点、线和多边形,而针对特别是平滑着色和深度缓冲那些需要大量的帧缓冲硬件和内存的功能并没有被支持。而这些功能加上光照和隐藏面消除的功能也只是在第一代产品的末期Silicon Graphics 4DG (1986) is才支持,并且性能相对较差。
1986 Clover 2
在Clover 2上几何计算子系统(GeometrySubsytem)单芯片集成了5个浮点处理器(Weitek 3332 processors )当作Geometry Engine构成pipeline,
每一级pipeline负责如下的一个功能:
- Matrix and normal transformation.
- Lighting calculations.
- Clip testing.
- Perspective division. Clipping.
- Viewport transformation. Depthcue calculations.
同时得益于市场上存储器价格下降, 可以增加更深的帧缓存来实现Z-buffer和避免不不要的表面渲染, 因此整个系统增加了Raster Subsystem用于1280×1024分辨率下的帧缓存的处理,而这些不光是帧缓存,它同时也提供了一系列的数值计算能力,光栅化过程中的像素插值等运算在这个板上实现了,所以那些搞所谓的存算一体化的,来拜拜祖宗~
1993 RealityEngine
而真正成熟的实现光照、平滑着色、深度缓冲、像素填充和抗锯齿这一系列渲染功能的平台则需要等到1993年,也就是SGI发布的RealityEngine,而售价也高达250,000美元.B站上有一个介绍它的视频[1].
几何计算引擎迭代到了GE10,并采用了Intel i860处理器
光栅引擎则还是自己做的,布满了大量的内存,而这张图似乎让我觉得在做NetDAM的时候,无非就是给网络接口做了一个新的光栅系统罢了,天底下没有太多新鲜的事情。
整个RealityEngine的架构如下, 而OpenGL的管线也是抽象于这套硬件实现。
IrisVision
为了进入PC市场,SGI将其GeometryEngine和Raster Memory板裁剪,然后做成了一个占用两个Slot的卡插在PC机上:
可以看到WEITEK3132 FPu和旁边黑色的光栅引擎放在了一起,下方的那张卡,如下
而上方的那张卡则是扩展内存,并且注意到那个棕色的插槽还可以再扩展一张z-buffer子卡
在这张卡上似乎还有一个处理器用作控制,更详细的内容可以参考SGI IrisVision add-in 3D accelerator for PC (1990)[2]
裁剪简单粗暴的组合构成的产品线,赘肉还是很多,差不多需要4000美元,自然销售额也很差。
而在销售irisVision的过程中,Scott Sellers和来自Mediavision的Gary Tarolli和Ross Smith三个技术工程师敏锐的捕捉到了EDO内存快速降价的机会, 靠550万美元的风险投资于1994年3月共同创立的3dfx。他们做了什么?而voodoo在体系架构上又是如何聪明的实现的呢?Voodoo SST-1的架构如何聪明的把成本降到300美金,使得3D游戏第一次进入了寻常百姓的家里,而它又如惊鸿一瞥,几年之后又因为高价的Voodoo 4、5而轰然倒塌的呢?
Reference
[1]
Silicon Graphics Onyx RealityEngine²: https://www.bilibili.com/video/av30950014
[2]
SGI IrisVision add-in 3D accelerator for PC (1990): https://retro.swarm.cz/sgi-irisvision-add-in-3d-accelerator-for-pc-1990/
《GPU架构演化史2: 1980-1993 SGI时代》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.bookhoes.com/680.html