4.6 显存和缓存

1.显存和缓存简介

2.显存和缓存的关系

3.显存和缓存为什么会影响性能

4.显存和缓存优化思路


1.显存和缓存简介

csharp 复制代码
1).显存

a.显存是gpu外部的专用大容量存储, 主要用于存放顶点, 纹理, 渲染目标(RT), 阴影贴图

后处理缓冲

b.特点

- 容量大, 以GB为单位, 带宽高, 但是延迟大

- GPU工作时几乎会不停地从显存中读写内容

csharp 复制代码
2).缓存

a.缓存是GPU内部的小容量高速存储, 主要用于存放从显存取出的热点数据, 方便我们重复使用

b.所谓热点数据一般在CPU和GPU的优化领域中指的是在短时间内被高频访问的数据, 因为它被

用的多, 所以放在更快的存储空间中(比如寄存器、缓存)能极大的提升性能

比如在GPU中的常见热点数据为

- 顶点缓存, 渲染一个网格时, 某些顶点会被多个三角形复用, GPU会把最近变换过的顶点存在

缓存里, 避免重复计算

- 纹理缓存, 当片元连续访问相邻的UV时, 缓存会把周边像素块一起取进来

- 常量缓存, 灯光参数、矩阵等, 几乎每个片元都要用

b.特点

- 容量小, 以KB ~ MB计, 速度快

- 中(缓存中找得到对应数据)时快, 不命中(找不到)时必须回显存
csharp 复制代码
缓存缓存不会一字节一字节存, 而是一次性把一大块连续的数据搬进来, 原因: 利用空间局部

性, 取了一个地址, 附近的数据很可能也会用

2.显存和缓存的关系

csharp 复制代码
1).取数据时, 当GPU或CPU访问某个地址

a.缓存中命中(在缓存中找到了): 直接从缓存中读取, 速度快

b.缓存未命中(在缓存中没找到): 去显存中去, 同时把这块数据搬进缓存

2).往缓存里放数据时, 缓存不是一字节一字节放, 而是一次性搬一整块(通常32B/ 

64B/128B), 这样就能利用空间局部性, 如果你要用的数据附近的数据也很可能会用, 就顺便

搬进来

3).替换缓存数据时
       
a.如果缓存还有空: 直接放进去

b.如果缓存满了: 根据数据替换规则直接覆盖之前的数据(GPU一般采用Random随机替换、CPU

一般采用LRU最近最少使用的替换)

3.显存和缓存为什么会影响性能

csharp 复制代码
1).显存性能瓶颈主要来自于

a.内存带宽不足

b.容量不足

"显存决定能装多少,能传多快"

csharp 复制代码
2).缓存性能瓶颈主要来自于

a.未命中: 比如在Shader中进行随机采样纹理、UV跨度过大, 就会导致缓存命中率低; 当未命

中就睡频繁的去显存中取数据, 导致获取数据缓慢, 延迟变高

b.OverDraw、重复访问, 一个像素被多次覆盖, 导致反复的读取纹理等信息, 不停替换缓存中

内容, 缓存中内容还没有重复使用就被替换了, 让缓存命中率下降,缓存的加速作用大幅削弱

4.显存和缓存优化思路

csharp 复制代码
相关推荐
weixin_424294673 天前
Unity 调用Steamworks API 的 SteamUserStats.RequestCurrentStats()报错
unity·游戏引擎·steamwork
HoFunGames3 天前
Unity小地图,Easy Minimap System MT-GPS插件
unity·游戏引擎
wy3258643644 天前
Unity 新输入系统InputSystem(基本操作)
unity·c#·游戏引擎
WarPigs4 天前
着色器multi_compile笔记
unity·着色器
ECHO飞跃 0124 天前
Unity2019 本地推理 通义千问0.5-1.5B微调导入
人工智能·深度学习·unity·llama
Unity游戏资源学习屋4 天前
【Unity UI资源包】GUI Pro - Casual Game 专为休闲手游打造的专业级UI资源包
ui·unity
冰凌糕4 天前
Unity3D Shader 顶点法线外扩实现描边效果
unity
小菱形_4 天前
【Unity】TimeLine
unity·游戏引擎
小贺儿开发4 天前
Unity3D 自动化物流分拣模拟
运维·科技·unity·自动化·人机交互·传送带·物流分拣
EQ-雪梨蛋花汤4 天前
【3D可视化】基于 Unity 的智慧体育馆三维信息可视化大屏实践
3d·unity·信息可视化