PC与Mobile硬件架构对比

PC硬件架构

PC与Mobile硬件架构对比

CPU Cache

L1为CPU的一级缓存、L2为二级缓存,L1离CPU更近,访问速度高于L2,但容量比L2小

内存类型

VM (Video Memory,Video DRAM )
居于显卡上的显存, GPU直接访问,CPU无法访问

SM (SYSTEM MEMORY,System DRAM )
居于系统内存中,CPU能访问, GPU无法访问

AM (AGP momery Accelerated Graphic Ports,AGP DRAM) 
为了使系统和图形加速卡之间的数据传输获得比PCI总线更高的带宽,从SM上分配出来。
GPU能访问,CPU能访问。CPU读取AGP内存速度很慢,写的速度比读取稍微快,GPU读和写的速度比VM慢一些

资源类型

程序员在用DX创建不同类型的资源时,要根据资源的特点,来决定是放在VM、SM还是AM上

D3DPOOL_MANAGED (dx11对应D3D11_USAGE_DYNAMIC)
① 该类型的资源创建在SM上,在需要渲染时,pci到VM上,存在两份
DX会使用最近最少使用算法(LRU)来对VM进行释放,如果再次请求会在SM->(pci)->VM
② 设备失效后,VM那份丢失,将会自动从SM->(pci)->VM
③ 适用于静态物件(所有静态物件的veterx、index、GPU Skin等,凡是一次创建,终身使用,中途不再更改的)

D3DPOOL_DEFAULT (dx11对应D3D11_USAGE_DEFAULT)
① 有专属的分配优先级,分配原则:优先VM,次之AM,最后SM,等同于告诉DX抽象层:我要放在你认为最快访问的地方
② DX抽象层不负责该类型资源释放,用户自己进行release管理
③ 设备失效时,需要手动恢复
④ 适用于render targets、depth/stencil buffers等,gpu能快速访问

D3DPOOL_SYSTEMMEM (dx11对应D3D11_USAGE_STAGING)
① 放在SM中,不能用于图形管线,但格式仍然受到图形硬件、驱动限制(如:最大尺寸)。可通过pci随时对POOL_DEFAULT类型资源进行update
② 设备失效对该类型无影响

D3DPOOL_SCRATCH
① 放在SM中,不能用于图形管线,且不受图形硬件、驱动限制,资源之间可互相赋值。gpu无法访问
② 设备失效对该类型无影响

不同地组合情况见下图所示:

PC与Mobile硬件架构对比

 

Mobile硬件架构

PC与Mobile硬件架构对比

Mobile上使用统一的内存架构,CPU和GPU都通过总线来访问SM (SYSTEM MEMORY,System DRAM )

Geometry Data、Texture Data及Frame Buffer在SM中,GPU频繁地访问这些数据,会导致带宽消耗大,成为性能瓶颈

 

IMR(Immediate Mode Rendering)的管线

Mobile如果使用IMR(Immediate Mode Rendering)模式(直接在SM上读写Depth Buffer/Frame Buffer)的话

带宽消耗很大,另外与读写On-Chip Depth Buffer(SRAM) / On-Chip Color Buffer(SRAM)相比,耗电量很高(高出2个数量级)

Mobile设备通过DVFS(Dynamic Voltage and Frequency),动态控制手机功率,当耗电量大发热大时,就会引发降频,导致设备性能下降,游戏帧率低。

因此,Mobile上gpu的设计原则就是要尽量省电。

 

IMR模式流程图如下:

PC与Mobile硬件架构对比

TBR(Tile-based rendering)的管线

基于上面原因,现代Mobile gpu都采用TBR(Tile-based rendering基于图块的渲染)的管线

注:On-Chip Depth Buffer(SRAM) / On-Chip Color Buffer(SRAM)统称为Local Tile Memory

PC与Mobile硬件架构对比

① 分块大小一般为16x16或32x32像素

② 在几何阶段之后,会执行分块(Tiling),然后将各个Tile逐个执行光栅化,并最后写入到Frame Buffer中

③ 按Tile为单位处理,会大大减少对Primitive List/Vertex Data、Texture Data和Frame Buffer的读写,从而大幅度减低对带宽的占用

④ 引入On-Chip Depth Buffer和On-Chip Colour Buffer等片上Cache,gpu读写这些Cache速度极快,且不怎么耗电

 

TBDR(Tile-based deferred rendering)的管线

PC与Mobile硬件架构对比

第一部分处理所有vertex shader,输出结果到主内存

第二部分为HSR(Hidden Surface Removal),在tile上执行。会先处理所有三角形的可见性,保存在一个专用的buffer里面。

这个buffer里,会保存tile里每个像素位置目前可见的三角形,应该执行哪个shader等信息

第三部分真正开始执行fragment shader,在tile上执行。因为第二部分里有像素级别精度的可见性信息,所以这步只会计算实际可见的像素,不可见的像素不会浪费GPU计算力。

避免Overdraw时的无用计算

 

Mobile上消耗带宽的常见原因

① 切换rendertarget    如:后处理、渲染shadowmap

② 大量采样贴图   如:在ps里面采样大的物体(地形、天空、大的建筑)的贴图 

③ 顶点、面数过多

 

参考

Understanding PowerVR Series5XT: PowerVR, TBDR and architecture efficiency

A look at the PowerVR graphics architecture: Tile-based rendering

A look at the PowerVR graphics architecture: Deferred rendering

How low can you go? Building low-power, low-bandwidth ARM Mali GPUs

 

 

上一篇:MySql分表设计,Java分表设计


下一篇:JQuery Mobile