CPU与GPU维护数据结构来保证环形缓冲区的正确工作

drm 给 gpu 发送硬件命令时,会将命令放置在一个环形缓冲区,显卡将会从这个环形缓冲区取命令执行。它的工作原理基于一个循环队列,数据存放在一个环装区域。cpu 会将命令从队列尾插入,gpu 会从队头取数据,队头和队尾在不断地更新中。这个环形缓冲区存放在 gtt 内存中,以便显卡可以访问到。
cpu 和 gpu 将各自维护一些数据结构来保证环形缓冲区的正确工作。这些 数据结构有缓冲区的基地址,缓冲区大小,写指针和读指针。其中写指针和读指针分别指向 cpu 将要写入命令的地址和 gpu 将要读取命令的地址。当这一次的读取命令或者写入命令结束之后,这两个指针都会往前移动。当指针到达队列的末尾时,将会移到队列的头部继续执行。如果我们不加处理的话,就可能会发生读指针读取了没有写入新命令的地址, 或者是写指针把命令写到了命令还没有被 处理的区域。
因而当 cpu 写入命令时,它应该通知 gpu。而 gpu 在读取命令之后,应该通知 cpu。通知操作借由写 cpu 中的读指针副本和 gpu 中的写指针副本完成。环形缓冲区示意图如下图。
初始阶段,读指针和写指针指向同一区域,随着程序的运行,读指针和写指针可能会再次相遇,这时有可能是队列空,也有可能是队列满,为了避免二义性,我们避免发生队列满的情况,总在队列将满时,将命令流装入新的缓冲区。那么驱动要时时监控着缓冲区的操作,当队列空时停止读取,当队列将满时,将读操作挂起。

智能电话手表扬声器防水透音膜介绍
苹果M1芯片代工订单占台积电5nm工艺25%产能
用MPI调优提高集群MPI应用性能(编译4第1部分)
地平线机器人的完全自动驾驶功能完全可以和特斯拉媲美
BGA封装技术的焊接和检验方法
CPU与GPU维护数据结构来保证环形缓冲区的正确工作
中国LED芯片产量上升 产业链渐趋完善
自动驾驶汽车激光雷达的未来
船舶电动化进程再翻崭新一页
苹果iPhone16 Pro系列将使用石墨烯散热技术
赛峰飞机发动机公司选择Orange Business Services研发的物联网智能追踪方案以加速自身工业制造流程的数字化转型
如何递归更改文件和目录的权限
迅准科技致力于提供IoT WiFi智能照明解决方案
基于云计算的高端LED吸顶灯的照明控制系统
印制电路板基板材料介绍
诺安智能光离子挥发性有机物探测器入选第一批深圳市制造业单项冠军产品名单
数字电视的发展及其标准
日内瓦车展预告看点:大众汽车取消了方向盘
韩国成功研发出硅基阳极材料 利用新阳极的电池可在5分钟内充电80%
虽然美国严格管制无人机 但2020年无人机送货终将成为现实