- GeForce包含四个像素着色器内核和四个顶点着色和内核,专用于高速顶点和像素处理。GPU管线在像素管线中使用FP20数据精度的80位RBGA像素格式,在顶点管线中则使用FP32 精度的80位RBGA像素格式。它还实现了一种独一无二和专有的各向异性过滤 (AF) 算法,该算法优于许多台式机GPU所使用的AF技术。该架构支持各种高级特性,例如高动态范围 (HDR) 照明、多重渲染目标 (MRT),并且两种纹理支持均不会带来功耗。该架构同时支持 DXT 和 ETC 纹理格式。
- 虽然GeForce架构是一种类似于OpenGL ES 2.0标准定义的管线架构,但它还包含一些特殊特性和自定义功能,可显著降低功耗并提供更高的性能和图形质量。Tegra 2移动处理器中实现的一些独特特性包括:
- Early‐Z 支持,专用于过滤掉不可见的像素。
- 集成像素着色器 (Pixel Shader) 和混合单元 (Blend Unit),可实现编程灵活性和更高的性能。
- 像素缓存、纹理缓存、顶点和属性缓存,可减少内存操作。
- 独特的 5 倍覆盖采样抗锯齿 (CSAA) 技术,可在更低的内存带宽下实现更高的图像质量。
- 高级各向异性过滤 (AF),可实现高细节纹理。
- 内部开发的自定义内存控制器,可提高 GPU 性能和降低功耗。
- 实现超低功耗的众多电源管理功能。
- 现代GPU使用Z缓冲(也称作深度缓冲)来跟踪该场景中的可见但由于被其他像素遮挡而不需要显示的像素。每个像素在Z缓冲中都有相应的Z信息。单一3D帧会经过处理并转换为2D图像,以便在显示器上显示。该帧由从主机发送至GPU的顶点顺序流构成。多边形将由顶点流组配而成,并且会生成和呈现2D屏幕空间像素。
- 在指定时间单元(如1/60秒)内构建单一2D帧的过程中,多个多边形及其相应像素可能会覆盖相同的基于2D屏幕的像素位置。这经常被称作深度复杂性,并且现代游戏的深度复杂性可能达到 3、4 或者更高,即在覆盖相同 2D 屏幕位置的帧中呈现 3 个、4 个或更多像素。
- 想象首次在顶点流中处理构成某块墙的多边形(和由此产生的像素),以构建场景。接下来,处理位于墙前面的一把椅子的多边形和像素。对于特定的2D屏幕像素位置,观众最终只能看到一个像素,即椅子的像素或墙的像素。椅子离观众更近,因此会显示它的像素。(请注意,某些对象可能是透明的,并且透明对象的像素可以与背景中已有的不透明或透明像素相混合,或者与之前帧的帧缓冲区中的已有像素相混合)。
- OpenGL ES2.0 逻辑管线定义的针对各像素数据的 Z 比较会在像素经过像素着色器处理之后执行。在像素着色处理之后评估像素的问题在于,像素必须遍历几乎整个管线才能最终确定堵塞且需要丢弃的像素。对于拥有数百或数千处理步骤的复杂着色器程序,所有处理都浪费在永远不会显示的像素上! 更重要的是,在移动设备中,处理这些像素涉及 GPU 和共享系统内存之间大量事务。由于系统内存位于片外,因此内存操作会显著消耗电源并且会迅速耗尽电池电量。
- GeForce中的Early‐Z实现是高端台式GeForce中所使用的实现的优化版本。Early‐Z操作会测试所有像素的Z深度并仅将可见像素传递给像素着色器块。通过执行Early‐Z操作,GeForce架构会仅获取通过Z测试的可用像素的Z值、颜色和纹理数据。Early‐Z效率极高,可准确检测出和丢弃隐藏像素。
- Early‐Z处理的主要优势在于它不仅可通过减少GPU与片外系统内存之间的内存流量来显著降低功耗,而且速度也要快于其他 Z 比较算法。大多数情况下,高效的Early‐Z都可以识别和丢弃隐藏像素。但在极少数情况下,对于一些特殊场景程序员可能需要在像素着色完成之后隐藏像素。对于这些极少数的情况,GeForce管线实现了一种后期阶段深度计算,并混合于集成像素着色器和混合单元中。
- 传统的OpenGL GPU管线指定纹理、深度、颜色等像素信息存储在系统内存(或帧缓冲存储器)中。在像素处理阶段,像素信息会在内存之间来回移动。这就需要在片外系统执行大量内存操作,从而消耗大量电能。GeForce架构实现了片上像素、纹理和属性缓存,以及独特的缓存管理算法,不仅可减少系统内存操作,而且还可以最大限度地利用这些缓存。
- 像素缓存用于存储像素的片上Z值和颜色值,并且适应于所有重复访问的像素,比如用户界面组件。此外,由于像素颜色和深度数据在许多其他图形场景图像中的良好空间及时间局部性,像素缓存可提供非常理想的缓存命中率,并且可降低访问系统内存的需要。
- 纹理数据具有良好的空间和时间局部性。 特定像素通常会在双线性过滤等纹理过滤操作过程中使用许多相同的纹理元素(像素)作为相邻像素,并且纹理经常在图像的至少一些帧中保持相同。因此,在片上缓存纹理数据有助于重用纹理数据以及显著减少通过访问系统内存来获取纹理数据。
- 锯齿是出现在图像上的锯齿状边缘,而这些区域本应显示为流畅的线条或边缘;抗锯齿 (AA)技术在计算机图形中用于让这些锯齿线条更加平滑。当高清晰度图像在较低分辨率的显示器上显示时,或者当较高分辨率的图像转换为较低分辨率的图像时便会出现锯齿效果。
- 通常,GPU使用多重采样抗锯齿(MSAA)和超级采样抗锯齿(SSAA)技术减少锯齿效果。在之前的抗锯齿技术中,覆盖面始终与“实际”采样类型相关联,而覆盖面采样与此不同。在SSAA中,每个实际采样都有其独特的颜色和Z值,并且在4xAA的情况下,着色器程序会运行四次,并获取四个纹理 ‐ 每个样本一个纹理(或者在多纹理的情况会更多)。采用4xAA时,帧缓冲区要比未使用抗锯齿时大四倍,并且会经过向下过滤,以创建最终像素颜色。
- CSAA可以将简单的覆盖面采样从颜色/z/模板/覆盖面采样中解耦出来,进一步优化抗锯齿流程,从而较 MSAA和SSAA减少带宽和存储成本。CSAA 使用更多覆盖面样本来计算指定像素区域中的多边形的覆盖面水平,从而实现更高质量的抗锯齿效果,而不会由于处理额外的实际颜色和Z样本而产生内存和功耗成本。
- 各向异性过滤是一种用于提高表面上处于斜视角的纹理的图像质量的技术。 通常,屏幕上的每个像素都需要从内存的纹理贴图中获取多个纹理元素,经过过滤并应用于像素以改变其颜色。从正面看表面时(垂直于镜头或观众),通常会使用方形采样模式为每个像素采样同等数量的纹理元素。但是,在极端视角下(即屏幕上的图像从一个轴延伸至另一轴),从纹理贴图中为每个轴提取相同数量的样本会导致纹理沿延伸至水平方向的轴出现模糊。
- 可以看到接近地平线处的跑道部分的纹理细节出现了模糊。 各向异性过滤技术可以智能地沿该延伸轴采集更多的纹理样本,并保留沿该轴的纹理细节。GeForce支持高达16倍各向异性过滤。它采用自适应过滤算法和高效纹理缓存管理技术来提供高纹理质量,同时不会显著增加内存操作。
- Tegra 2)处理器包括经过全新设计的GPU和内存控制器(MC)内核,GPU内核的性能极度依赖于MC交付带宽的效率以及图形处理延迟要求。由于GPU和MC均采用了内部开发,因此MC针对GeForce的特定需求进行了高度调优,同时还增强了GPU性能和降低了功耗。
- MC控制器设计的一些关键优化包括:
- 动态时钟速度控制(DCSC):DCSC支持内存控制器迅速提高工作频率以响应来自GPU内核的高级指标便于系统内存访问,以及在 GPU 完成其内存访问后将工作频率迅速降低至节能水平。由于采用了严密的内部设计流程,因此MC可以直接接入GPU内核硬件,主动预测GPU需求和管理其工作水平,以满足GPU需求。
- 以GPU为中心的内存仲裁:系统内存是移动处理器中最宝贵的资源之一。CPU、GPU、视频和音频等各种内核都需要能够以高带宽、高度响应性的形式访问系统内存。MC实现了高级仲裁机制,可有效确保多个客户端访问系统内存。
- MC内核具有关于来自GPU客户端的内存访问请求的类型和紧急性的深入信息,并且实现了一种高度优化的仲裁机制,可满足呈现器和几何请求对带宽的苛刻要求,以及满足对服务高优级级延迟敏感的显示和CPU请求在低延迟方面的苛刻要求。MC还掌握GPU内核生成的各请求的优先级的信息,并且可进一步优化其性能以满足这些请求的需求。
- GPU请求分组:片外系统内存设备在任何特定时间都只能打开特定数量的内存条。当内存的请求访问区不包含在当前打开的内存条中时,MC需要关闭当前打开的内存条,然后激活包含所需内存单元或区域的新内存条。这一过程不仅会影响延迟和带宽,同时对功耗的需要也较高。
- GeForce掌握当前的系统配置,并且会对访问模式进行优化,而不会发起多个不同的访问内存子系统的不同部分中的随机内存条的内存请求。GPU可以将访问相同内存条的内存请求组合在一起。MC控制器还可以根据内存条访问模式对独立内存请求进行重新排序。这些功能可以提供更加高效的内存访问,并通过限制频繁的内存条切换来降低功耗。
GeForce内核实现了一些可降低功耗的高级电源管理技术,包括:
- 多层频率门控:GPU实现了多层频率门控,可在空闲状态下关闭频率。它使用一种系统级功率控制算法来控制Tegra 2处理器中的所有8个内核的功率和频率。当功率控制逻辑检测到空闲状态的GPU内核时,它会通过频率门来控制送入GPU的主干线频率,从而将GPU的动态功耗有效限制至接近零毫瓦特的水平。当功率控制器检测到系统处于待机模式时,它会通过功耗门来控制GPU内核,从而将其功耗降低至接近零的水平。
- 本地电源管理功能:GPU内核具有一些电源管理功能,可进一步降低功耗。它实现了一些功能级频率门控机制,可通过频率门来控制GPU内核中的各种不同的空闲块。例如,当管线未执行任何顶点着色任务时,顶点着色器会采用频率门控并处于低功耗状态,直到接收到下一个顶点着色命令为止。同样,当像素着色器正在处理数学计算等不需要获取纹理的任务时,纹理单元可采用频率门控。此外,如果 GPU 仅仅刷新设备显示而非积极呈现,内存控制器可以借机将系统内存置于低功耗状态。
- 显示请求分组:GPU会对多个显示请求进行分组,并按批次向系统内存发出这些要求。然后,GPU 向内存控制器(通过计时器)通知下一个请求的时间。在发送GPU显示请求之间的空闲期,内存控制器会积极寻找机会将系统内存置于低功耗状态。
- 功耗优化的晶体管设计:GeForce内核还在晶体管级针对超低功耗进行了优化。非计时敏感的块使用了低漏晶体管,而需要高速运作的关键路径则采用了速度更高的晶体管。因此GeForce内核可以在不影响性能同时实现低功耗。
- 动态电压和频率缩放(DVFS):Tegra 2处理器还实现了一个先进的芯片级DVFS技术,该技术在任何时候都可以控制六个主要系统时钟的时钟频率,以及最多两个电压轨的电压水平。可以使用软件控制的设置来选择在DVFS控制下的时钟及电压轨。
- DVFS的基本原理是为各种处理单元采用不同的内核频率和电压,从而控制功耗。半导体芯片的功耗与工作频率成正比关系,同时也与工作电压的平方成正比关系。当处理器未处理任何任务时,频率和电压可降至较低水平,从而大大降低空闲功耗。当Tegra 2中的8个内核中的任何一个检测到传入任务时,该事件将被报告给全局DVFS控制块,并且频率和电压会立即提高至合适的水平,以确保更高的性能。
- DVFS 软件会智能地将电压和频率提高至最适合的水平,以满足应用程序的性能需求。DVFS算法可以非常精细地控制频率水平,并且可以按1MHz的增量来增加或降低频率。
- 2007年的时候NVIDIA花费3亿多美元收购了为苹果提供音频处理器的PortalPlayer公司,有了PortalPlayer公司强大的技术支持,NVIDIA为Tegra 2提供了更优秀的音频解码器,这一点从微软采用Tegra平台来打造Zune播放器也能看出来。