09. CPU, GPU, 内存, 显存, 硬盘传递数据

1.硬盘, 内存, CPU, GPU, 显存简介

2.硬盘 → 内存 → CPU

3.CPU → 内存 → GPU

4.GPU → 内存 → CPU


1.硬盘, 内存, CPU, GPU, 显存简介

csharp 复制代码
a.硬盘: 永久保存游戏字体(模型, 纹理, Shader, 场景), 相当于公司仓库

b.内存: 缓存硬盘加载的资源, 供CPU/GPU快速访问, 相当于办公桌(放当前工作文件)

c.CPU: 调度任务, 准备数据, 逻辑计算, 相当于办公人员

d.GPU: 渲染画面, 并行计算, 相当于专业工作室(配专属工作台)

e.显存: 存储GPU正在使用的定点数据, 纹理, Shader代码, 相当于工作室专属工作台

2.硬盘 → 内存 → CPU

csharp 复制代码
这是"从仓库拿文件到办公桌"的过程, 核心是"DMA 异步加载,不阻塞 CPU"

底层流程(分步骤)

a.CPU发起请求

比如:Unity中调用Resources.Load或AssetBundle.LoadAssetAsync, CPU会向操作系统(OS)发送"加载资源"指令,比如加载

一个模型文件.fbx

b.OS调度硬盘读取: OS接收指令后, 通过SATA总线(HDD/普通SSD)或NVMe总线(高速M.2 SSD)通知硬盘, 让硬盘读取目标文件

c.DMA技术卸载CPU: 关键是DMA(直接内存访问) ------ 相当于仓库管理员直接把文件送到办公桌,不用办公人员(CPU)亲自跑,硬

盘通过DMA控制器, 直接将文件数据写入内存的指定地址, CPU此时可以继续处理其他任务(比如游戏UI更新、AI逻辑),不会被

等待加载阻塞

d.CPU访问内存数据: 加载完成后, OS向CPU发送"完成信号", CPU直接从内存中读取该模型的顶点数据、材质信息, 进行后续

处理(比如坐标转换、骨骼动画计算)
csharp 复制代码
游戏开发关键点

a.Unity中的异步加载(AsyncOperation)本质就是利用DMA实现的 ------ 让加载在后台线程执行, 主线程不卡顿

b.内存不足时, OS会触发"页面置换"(把内存中暂时不用的数据写回硬盘), 导致加载卡顿

3.CPU → 内存 → GPU

csharp 复制代码
这是"办公人员准备好资料, 交给专业工作室"的过程, 核心是"PCIe总线拷贝, 显存常驻资源"

底层流程(分步骤)

a.CPU准备渲染数据: CPU处理完模型的逻辑(比如位置更新、动画帧计算)后, 会将"待渲染数据"整理成GPU能识别的格式

- 顶点数据(坐标、法线、UV)、索引缓冲区

- 材质参数(颜色、纹理采样器)、Shader代码

- 渲染指令(比如用这个Shader绘制这个模型)

b.CPU发起显存拷贝: CPU通过PCIe总线将内存中的渲染数据拷贝到GPU的显存(VRAM)中, 这里要注意:

- 纹理、Shader等"复用性高"的资源, 会被一次性拷贝到显存后常驻(比如Unity中的Texture2D.uploadedToGPU 标记)避免

重复拷贝

- 顶点数据、动态参数(比如每帧变化的颜色)会每帧更新, 从内存拷贝到显存的"动态区域"

c.GPU读取显存并渲染: GPU的渲染核心直接从显存中读取数据, 执行Shader运算(顶点着色、像素着色),最终将渲染结果写入

显存的帧缓冲区
csharp 复制代码
底层细节(游戏优化关键)

a.PCIe总线带宽影响帧率: 如果每帧需要拷贝大量动态数据(比如粒子系统的顶点数据), PCIe带宽不足会导致CPU-GPU数据

瓶颈(比如: Unity Profiler中看到Gfx.WaitForPresent 耗时过长)

b.显存容量限制资源加载: 如果显存不足, GPU 会把暂时不用的纹理/模型换出到内存, 下次需要时再拷贝回来, 导致卡顿
csharp 复制代码
Unity中的优化技巧

a.开启Texture Compression(比如ETC2、ASTC), 减少纹理在内存/显存中的占用, 降低拷贝压力

b.避免每帧创建新的Mesh或Material(会触发频繁的内存 - 显存拷贝)

4.GPU → 内存 → CPU

csharp 复制代码
这是"专业工作室完成工作, 把结果反馈给办公人员"的过程, 核心是"帧缓冲读取 + 同步等待"

底层流程(分步骤)

a.GPU写入结果到显存: GPU完成渲染后, 帧缓冲区(存储最终画面像素)会保存在显存中

b.CPU发起读取请求: CPU需要获取这些结果时(比如: 把帧缓冲区的画面显示到屏幕, Unity中用RenderTexture.GetPixels

获取纹理像素), 会通过 PCIe 总线从显存拷贝数据到内存

c.同步等待: GPU是并行工作的, 当CPU要读取显存数据时, 可能GPU还没完成写入 ------ 此时CPU会进入等待状态, 导致主线程

阻塞
相关推荐
计算机编程指导师5 小时前
计算机毕设选题推荐:基于Spark+Django的黄金价格历史数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·python·计算机·spark·django·课程设计·黄金价格
计算机编程指导师6 小时前
计算机大数据项目推荐:基于Hadoop+Django的人工智能社交媒体情绪数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·社交媒体
计算机编程指导师7 小时前
【计算机毕设选题】基于Spark的零售交易者行为特征与生存状况数据分析系统源码 毕业设计 选题推荐 数据分析 机器学习
大数据·计算机·数据分析·spark·毕业设计·课程设计·零售
计算机编程指导师9 小时前
【大数据毕设】基于Hadoop+Django乳腺癌数据分析与可视化系统选题推荐 源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·毕业设计·课程设计·乳腺癌
计算机编程指导师9 小时前
【Python毕设推荐】基于Hadoop+Spark的商场商铺运行数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·课程设计·商场商铺
计算机毕业编程指导师20 小时前
【计算机大数据毕业设计选题】基于Hadoop+Spark的人工智能社交媒体情绪数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·人工智能·hadoop·计算机·毕业设计·课程设计·社交媒体
计算机毕业编程指导师21 小时前
【计算机毕设】基于Hadoop的人口统计特征与肥胖风险关联分析的数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·课程设计·肥胖风险
计算机毕业编程指导师2 天前
大数据毕设选题推荐:基于Hadoop+Spark全球碳排放减排策略分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·碳排放减排
白猫不黑4 天前
网络安全专业:从入门到进阶的完整学习路线
学习·安全·web安全·计算机·网络安全·信息安全·编程
计算机毕业编程指导师4 天前
计算机毕设怎么做?Python+Hadoop的跨平台消费者评论情感分析与数据可视化系统实战 源码 毕业设计 选题推荐 毕设选题 数据分析
大数据·hadoop·python·计算机·spark·课程设计·消费者评论