AMD的杀手锏——3Dnow!
现在,三维图像已在全球PC消费市场上占有一定的地位。根据Jon Peddie Associates (JPA)的数据显示,三维图像在PC市场中成长最快,预计未来两年将会倍增。支持这个发展的先进技术包括更强劲的个人电脑处理器、更高性能的三维图像加速卡、更快但价格更合理的内存以及适用于三维图像处理的应用程序接口(API)如DirectX和OpenGL,这些应用程序接口为软件开发供应商提供了一个开放的开发环境。
预计在1998年底前后,需要进行大量浮点运算的三维图像处理功能将成为PC的主要卖点。三维图像处理技术亦是推动下一代逼真运算平台发展的原动力,这个平台将为PC用户提供前所未有的逼真的立体效果及卓越的运算性能。
#1 一、三维图像处理过程
要讲叙3DNow!技术,首先得从三维图像的处理通道讲起。
图像处理通道常常被喻为“拿着水桶救火的消防队”,它是主处理器(CPU)与描绘装置(即图像加速器)之间的一段通道,涉及多个步骤的指令及其它工作均在这里执行(见^233901a^)。
从图中可以看到,图像处理通道分为四个不同步骤:物理实体、几何转换、三角形设定以及像素渲染。
1.物理实体——电脑利用数学模型描绘物体的方式,用来模拟真实世界中各种物体的物理特征及事件发生过程。电脑创造的虚拟世界是一个全360度的立体景观或物体坐标世界,全部模拟过程均通过数学运算完成。换言之,个人电脑在同一时间内采用全部视点观看所有物体以及物体间的相互作用。这正是PC电脑游戏所采用的方式,但同样的原则也可用来提高其他应用程序的三维图像处理性能。物理运算无可避免是一个浮点运算密集的过程,因此这类运算交由CPU内含的软件处理。
2.几何运算——三维几何运算主要也由CPU执行,这类运算包括多种浮点密集的运算(转换、光效及剪切)。数学坐标可以用来创造构成虚拟世界影像的多边形或三角形,例如,以数学式表达的球体可转化为一组看似球体的三角形。转变过程中会添加动作(变焦、旋转等)。光效是在指定地点将光源照向物体,会影响我们观看物体的视点以及阴影投射。通过剪切功能,受前面物体遮挡的后面部分物体可以被删掉。
3.三角形设定——浮点及整数运算必须在这个阶段内进行,所涉及的运算非常复杂。基本上,CPU先将要处理的工作在描绘前交给三维加速器。在进行设定时由某一视点或角度观看景物。
4.像素渲染——这个步骤亦称光栅化过程,整个过程需要进行大量整数运算,以便产生由一点点像素构成的形象,并对数学物体加以真实性的纹理处理。渲染工序将有关不同颜色、阴影与位置的数据按照每一像素为基准计算,使观看者可以在平面的屏幕上看到立体的影像。大部分渲染工作由三维图像加速器执行。此外,CPU的MMX指令亦可加快光栅化的过程。
虽然高性能CPU可以应付图像处理通道各阶段的工作,但最后阶段(渲染)的工作大部分现已交由善于处理这类工作的三维图形加速器。这些性能越来越强劲的三维图像加速器亦可用来执行部分或全部的三角形设定工作。CPU和三维图像加速器可以发挥相辅相成的作用。带有3DNow!技术的高性能CPU可以执行浮点运算,而图像卡与MMX技术可执行整数运算,两者的运算能力在一般的多媒体个人电脑中可以互相配合。
如果中央处理器因为通道中的物理及几何阶段堆积太多复杂的浮点运算工作,以至应付不了,图像处理通道便会形成瓶颈,就不能尽快为正在进行设定及 /或渲染的图像加速器提供数据。前几年,图像加速还是一项新开发的技术,较明显的瓶颈会出现在渲染阶段。但由于中央处理器的x87(浮点)性能未能与图像加速技术同步前进,因此速度瓶颈已移至通道的较前阶段。事实上,现在三维图形加速器的性能每9个月加快一倍,比CPU的发展还要快!
消除速度瓶颈最理想的解决办法是,将CPU的浮点运算能力提高至足以应付通道早期阶段的浮点运算需求,事实上,大部分浮点运算均集中在这一阶段。3DNow!技术足以胜任这项工作。这种三维技术备有一组全新的单精度浮点指令,可加速物理及几何的运算,疏通瓶颈的问题,使CPU可以在速度上赶上三维图像加速卡,大幅提高三维图像的运算性能及逼真度。
#1 二、3DNow!技术详解
3DNow!指令集包括21个指令,支持“单指令多数据”(SIMD)的浮点运算。有关指令集可以执行SIMD整数运算、数据预取以及更快的MMX至浮点交换等功能。为了提高MPEG解码能力,3DNow!指令还包括一个特定的SIMD整数指令,方便为“像素动作”提供补偿。若采用称为“预取”的3DNow!新指令,便无需另外耗费时间读取有关数据,这个指令可确保有关数据在有需要时已存放在一级高速缓存中。为了缩短MMX与x87编码之间交换时间,3DNow!指令亦包括快入/ 快出多媒体状态(FEMMS)指令,省却这两个功能单元之间进行交换时所需的大部分工作。3DNow!技术是一个开放式的标准,可支持IEEE 754单精度类型的数据。
AMD-K6-2处理器的微架构可以支持在通道内全面执行两种指令。其压缩格式可支持每64位暂存器储存两个32位元浮点数值,指令在每一32位内各自执行,而且浮点数目可无限量储存。
由于3DNow!技术采用了SIMD技术,因此可以提高三维图像处理的性能。每一指令可执行两个单精度浮点运算,而且AMD-K6-2处理器的微架构可在两个暂存器的执行通道内以每一时钟周期执行高达两个3Dow!指令的速度进行作业。换言之,每一时钟周期可执行四个浮点运算(加、减、乘)。由于3DNow!指令采用与MMX同样的浮点堆叠,因此3DNow!可以无需与MMX交换工作。
AMD-K6-2处理器内置齐备的多媒体单元,可将现时的MMX指令与新的3DNow!指令结合,以便x86程序可以内含MMX(整数)与3DNow!浮点图像指令,使MMX与3DNow!(浮点)单元之间的交换不会影响其性能。
虽然3DNow!技术采用MMX暂存器,其编码与MMX指令类似,而且可同步执行MMX指令,但这毕竟是一种截然不同的技术。MMX技术的主要功能在于改善进行光栅化所需的整数运算密集的工作。当MMX技术推出市场后,图像加速卡技术的发展已超过系统的其他部分。虽然MMX技术可以提高整数运算的性能,尤其是整数运算密集的工作如影视剪接及回放,但事实证明,现在先进的三维图像加速已可为三维应用程序提供最高的性能。而3DNow!技术则可提高通道的运作性能,尤其是初期运算通道浮点运算密集的阶段。
例如,若要将三角形的某一点转换,便需进行25次乘法及18次加法的运算。以800×600像素的显示计,图像处理通道必须可以每秒处理数以百万计的三角形转换。
#1 三、如何在三维应用程序中使用3DNow!技术
软件开发商在开发三维应用程序时可在两个层次方面应用3DNow!技术:既可利用合适的设计工具通过“硬编码”直接应用;亦可采取间接的方法,确保代码可支持特别设计的应用程序接口。
只要根据3DNow!技术修订程序代码,就可充分发挥其优势,大幅提高三维运算性能。硬编码应用程序的最佳例子是DreamWorks Interactive即将推出的Trespasser电脑游戏,这套程序直接应用3DNow!技术,以提供游戏者像亲身经历的逼真感受。
AMD为了方便厂商采用3DNow!技术开发应用程序,特为经营软件供应商提供一套软件开发组件,其中包括全套功能齐备的开发工具以及公用程序(Microsoft及AMD的组合程序、Windows仿真器、C++指令组等)、技术数据汇编(代码适应化应用注解与技术手册)以及软件程序库(内有全套源代码)。此外,独立经营软件供应商还可获得多套全面支持3DNow!指令集与数据种类的第三方开发工具。
开发商亦可采用另一方法充分利用3DNow!技术的优点,办法是确保未来一代的应用程序可支持专为3DNow!指令设计的最新版应用程序接口。应用程序接口是一组例行程序,以便应用程序可用来要求安排及进行原先由电脑操作系统执行的低层次服务。开发商可为应用程序接口编写自己的代码一次,以便他们的程序可在任何用户的硬件中运行。
支持3DNow!技术的经全面优化的应用程序接口及软件工具程序库已定于1998年推出。对于Microsoft即将推出的DirectX 6.0应用程序接口及新版OpenGL应用程序库来说,部分未来一代应用程序可充分发挥它们的优势,因为这些应用程序接口是专为3DNow!技术设计。
DirectX是一组Windows应用程序接口,适用于各种不同芯片,DirectX亦包括Direct3D在内,后者是一套专为实时三维图像处理而设计的高性能应用程序接口,适用于电脑游戏及其它三维应用程序,其中包括一套高性能的软件描绘程序,而且可以不受芯片类别的影响而获得三维硬件加速的支持。
OpenGL是另一类开放式的多平台三维图像应用程序接口,由Silicon Graphics首先成功开发。专为支持3DNow!技术而设计的OpenGL已成为高档三维工作站业内标准,越来越受到PC电脑游戏开发商的欢迎。Microsoft将OpenGL程序库与Windows 95及Windows NT操作系统装在一起,免费赠送用户。
#1 四、3DNow!已获业内广泛支持
AMD在开发3DNow!技术时,获得各大开发商的鼎力支持,其中包括Microsoft以及多家独立经营的软件及硬件供应商,这项技术的成功推出可促进整个PC业的发展。在制定3DNow!技术的标准时,各大软件供应商均提供了宝贵的意见,这样可确保他们采用自己曾协助制定及加以完善的高性能三维指令。AMD分别在全球三大洲举行多次3DNow!技术开发商会议,迄今已有数以百计的独立软件供应商参加,而越来越多的独立软件供应商正在为3DNow!技术编写代码。此外,AMD亦正与各大三维硬件加速器开发商合作,确保他们的软件驱动程序及其它产品可充分利用3DNow!技术。
AMD已成立一个专门的顾问小组,为有关的开发商提供专业意见,其它的支持包括提供全套开发计划、各种软件开发工具及资源,以便开发商可以更快及更容易地为3DNow!技术编写代码。自1997年10月开始,AMD一直为参与合作计划的开发商提供可以正常运行的AMD-K6-2的样品,并乐意通过授权协议为各业务伙伴及竞争对手提供3DNow!