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


14

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

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

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


您可以购买视频RAMDAC作为不同的部分:ti.com.cn/cn/lit/ds/symlink/tvp3703.pdf,尽管这并不意味着它将在您的图形卡上分开。
pjc50 2014年

Answers:


18

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

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

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


7

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

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

在现代计算机上,GPU是(非常专业的)处理器,可以与主CPU的速度相媲美(并在其自身的地盘上超过了它)。它的作用类似于从一堆具有纹理和光源的3D对象生成psuido-3D图像。这一切都可以通过GPU在视频内存中完成。CPU仅提供对象,纹理和光源。

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


1
这是很棒的信息。那么DMA控制器(或类似硬件)直接访问视频存储器吗?在具有使用系统RAM的集成图形的系统上,它可以直接访问系统RAM吗?对不起,我的问题很简单。我是一个很大的DIY'er,所以我倾向于跳入具有较低层次知识的较高层次知识。:)
Craig Lafferty 2014年

并且要跟进,控制器如何知道RAM中的哪个地址从帧中“窃取”帧?帧/位图的替换速度非常快,并且可以随意移动。
Craig Lafferty 2014年

您的最后一条评论是正确的:它存储在帧缓冲区中,并且对于模拟视频,传递到RAMDAC。帧缓冲区地址可以是固定的,也可以在控制寄存器中指定。在帧之间或帧之间,或在某些系统(Amiga)上,在帧的中途更改视频模式时,有很多技巧涉及交换帧缓冲区。
pjc50 2014年

为什么处理器会变慢?为了使控制器能够使用它,它是否已经必须处理视频?我将在这里再作一个猜测,说控制器一次又一次地读取RAM,而CPU / GPU仅在发生某些变化时才用新的显示信息更新RAM,例如,GPU会将我的当前屏幕放入它的RAM,当我移动光标时,它会更新已更改的像素。同时,控制器每秒读取RAM 60次左右(我猜是那种标准FR)。
Craig Lafferty 2014年

1
视频RAM不仅用于存储显示图像,还被GPU内部使用,用于存储渲染到帧缓冲区的场景数据。这可能会占用大量空间,因为GPU需要访问对象的详细3D网格以及其表面的所有纹理数据。
alex.forencich 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.