GPU/CPU 如何与标准显示输出通信?(HDMI/DVI/等)

电器工程 中央处理器 显卡
2022-01-09 12:25:45

我对 cpu/gpu 在处理后如何呈现(向它所做的任何设备)视频数据感兴趣。

有人告诉我,视频由 CPU/GPU 处理,然后通过高速串行发送到集成电路,将串行信号转换为适当的显示输出,但我无法通过在线搜索来确认这一点。

我对信号感兴趣,无法搜索协议/等,因为我不知道我在寻找什么。那么 CPU/GPU 是否直接与视频输出交互(我可以很容易地找到这些协议)还是有一个“中间人”可以这么说,如果有,它是什么,芯片类型/等等?

2个回答

显示器上显示的图像以称为帧缓冲区的结构存储在图形卡上计算机的视频 RAM 中。帧缓冲区中的数据通常是 24 位 RGB 颜色,因此显示器上的每个像素将有一个红色字节、一个绿色字节和一个蓝色字节,可能还有一些额外的填充字节。视频 RAM 中的数据可以由 GPU 或 CPU 生成。视频 RAM 由视频卡上的专用 DMA 组件连续读取并发送到监视器。输出到显示器的信号可以是模拟信号 (VGA),其中颜色分量在离开卡之前通过数模转换器发送,或者在 DVI、HDMI 或 DisplayPort 的情况下是数字信号。负责此操作的硬件还生成水平和垂直同步信号以及所有适当的延迟,因此图像数据仅在准备好时才发送到监视器。在 DVI 和 HDMI 中,像素颜色信息流经过编码和序列化,并通过 TMDS(最小化传输差分信号)发送到监视器。DisplayPort 使用 8b/10b 编码。编码有多种用途。首先,TMDS 最大限度地减少信号转换以减少 EMI 辐射。其次,TMDS 和 8b/10b 都是直流平衡协议,因此可以使用隔直电容器来消除接地回路的问题。第三,8b/10b 确保足够高的转换密度以在接收器处实现时钟恢复,因为 DisplayPort 不分配单独的时钟。像素颜色信息流被编码和序列化,并通过 TMDS(最小化转换差分信号)发送到监视器。DisplayPort 使用 8b/10b 编码。编码有多种用途。首先,TMDS 最大限度地减少信号转换以减少 EMI 辐射。其次,TMDS 和 8b/10b 都是直流平衡协议,因此可以使用隔直电容器来消除接地回路的问题。第三,8b/10b 确保足够高的转换密度以在接收器处实现时钟恢复,因为 DisplayPort 不分配单独的时钟。像素颜色信息流被编码和序列化,并通过 TMDS(最小化转换差分信号)发送到监视器。DisplayPort 使用 8b/10b 编码。编码有多种用途。首先,TMDS 最大限度地减少信号转换以减少 EMI 辐射。其次,TMDS 和 8b/10b 都是直流平衡协议,因此可以使用隔直电容器来消除接地回路的问题。第三,8b/10b 确保足够高的转换密度以在接收器处实现时钟恢复,因为 DisplayPort 不分配单独的时钟。

此外,对于 HDMI 和 DisplayPort,音频数据也会发送到显卡以传输到显示器。该数据被插入到视频帧之间的数据流中的暂停中。在这种情况下,视频卡将作为音频接收器呈现给操作系统,并且音频数据将通过 DMA 传输到卡以包含在视频数据中。

现在,您可能意识到,对于每像素 4 字节的 1920x1080 显示器,您只需要大约 8 MB 来存储图像,但您计算机中的视频 RAM 可能是该大小的许多倍。这是因为视频 RAM 不仅用于存储帧缓冲区。视频 RAM 直接连接到 GPU,这是一种专为高效 3D 渲染和视频解码而设计的专用处理器。GPU 使用其对视频 RAM 的直接访问来加快渲染过程。事实上,将数据从主存导入显存是一个瓶颈,因为将显卡连接到 CPU 和主存的 PCI 总线比 GPU 和显存之间的连接要慢得多。

各种现代显示输出本质上是串行比特流。比特率对于处理器来说太高了(或者如果它可以跟上它就会占用太多的处理时间)。留出一块内存来包含图像的位。一块专用硬件读取内存内容并将其输出。这块类似于 DMA 控制器,实际上非常简单。它只是现代 GPU 的一小部分,它主要关注的是从更高级别的 GPU 命令在内存中创建该图像。

包含视频图像的内存可以是主内存的一部分(廉价)或专用内存,可以同时由“DMA”和 CPU 和/或 GPU 访问。'DMA' 必须配置各种参数,例如像素宽度和高度、颜色深度、内存中的起始位置等。

在现代计算机上,GPU 是一种(非常专业的)处理器,可以与主 CPU 的速度相媲美(并且在自己的地盘上超过它)。它可以从一堆具有纹理和光源的 3D 对象中生成伪 3D 图像。这一切都可以在视频内存中由 GPU 完成。CPU 只提供对象、纹理和光源。

从内存中读取视频数据并将其移出是一个相当简单的过程,但它必须非常快速地完成,并且始终如此。因此,此任务非常适合专用硬件,而不适合 CPU。AFAIK 最后一台 CPU 参与生成视频信号的计算机是 ZX80/81 和 Spectrum。在那些上,CPU 只能在(垂直?)回溯时间内完成自己的工作。