屏幕驱动程序如何处理这么多数据?


61

我只是做了一些快速计算:

在我的MacBook我的分辨率2560×1440乘以24位的颜色,我们得到11.05MB单个图片或663MB每秒60帧

我猜有一些压缩,但是例如,当我用三个手指在触摸板上移动时,那是相当随机的,接下来屏幕上会发生什么,几乎每个像素都会改变。与几乎所有其他互动相同。

请说明我的计算是否错误以及如何将这些数据从图形卡传输到屏幕?我的图形卡和屏幕之间的总线有多宽?也许简而言之解释了显示器如何存储像素?移位寄存器?缓存?


7
“也许简而言之解释了显示器如何存储像素?” 显示器实际上并不存储像素数据,这些数据全部由图形卡上的RAM(或集成图形的系统RAM)处理。RAM很容易具有几个GB / s的带宽。按照协议将帧发送到显示器,因此可以使用显示所需的数据。
ks0ze

3
您为什么认为存在压缩?您认为数据不可压缩时会发生什么?您认为显示器落后吗?
Mehrdad

3
@Aresloom:啊,我明白了。有损压缩将是一种方式,是的。:)我以为你在想无损!
Mehrdad'1

2
@ ks0ze一些较新的面板确实存储了它们发送的最后一个屏幕。与每秒将静态图像泵出60次的GPU相比,在此处进行缓存消耗的功率更少。 anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely

2
现代笔记本电脑显示器仍在使用LVDS吗?半个多世纪以前,GPU公司正计划与VGA同时淘汰它(这是从当前一代GPU的本机输出中淘汰的),以支持嵌入式显示端口。
丹·尼利

Answers:


70

您的计算本质上是正确的。对于1440p60Hz信号,如果还考虑了消隐时间(图像输出中的不可见像素边界),则数据速率为5.8Gbps。

对于HDMI / DVI,使用10 / 8b编码,这有效地表示,尽管您说每个像素有24位彩色数据,但实际上在数据编码和添加协议控制字时发送了30位。完全不执行任何压缩,发送原始数据,这意味着您需要7.25Gbps的数据带宽。

再次查看HDMI / DVI。它使用“ TDMS”信令标准进行数据传输。在HDMI标准V1.2任务的最大的4.9Gbps用于单链路(3条串行数据线+ 1条时钟线),或在双链路DVI的情况下的最大的9.8Gbps(6条串行数据线,我想)。因此,通过双链路DVI(而不是通过HDMI V1.2)有足够的带宽来完成1440p60。

在HDMI V1.3标准中(大多数设备实际上都跳到了与1.4相同的V1.4a带宽),该带宽增加了一倍,达到10Gbps,可以支持1440p60,并且对于30Hz(2160p30)的UHD也足够了。

作为另一个示例,DisplayPort具有4个串行数据流,每个流(在V1.1中)每个流(说明编码)的能力为2.16Gbps(因此,使用V1.1链接),您可以轻松地对所有4个流执行1440p60。他们还发布了更新的标准V1.2,该标准将其倍增至4.32Gbps /流,从而支持60Hz的UHD。他们仍然将其推向6.4Gbps / stream的更高版本。


最初,这些数字听起来很大,但考虑到USB 3.0,实际上并没有那么多。它是通过一根电缆以5Gbps的数据速率发布的(实际上是两根,一根用于TX,一根用于RX,但我离题了)。如今,您的图形卡内部使用的PCIe通过一个差分对以高达8Gbps的速度运行,因此外部数据接口的出现并不令人惊讶。


但是问题仍然存在,如何完成?当您考虑VGA时,它由用于模拟数据发送的R,G和B数据的单线组成。我们所知道的模拟非常容易受到噪声的影响,并且DAC / ADC的吞吐量也受到限制,因此极大地限制了您可以通过它们的信号(据说如果幸运的话,您几乎无法在VGA上实现1440p60Hz)。

但是,在现代标准中,我们使用的数字标准对噪声的抵抗力要强得多(您只需要区分高或低,而不是两者之间的每个值),而且您也无需在模拟和数字之间进行转换。

此外,在单端使用差分标准的出现非常有帮助,因为您现在正在比较两根导线之间的值(+ ve差= 1,-ve差= 0),而不是将一根阈值的导线进行比较。这意味着衰减不再是问题,因为它会同等地影响两条导线并衰减到中点电压-“眼图”(电压差)变小,但您仍然可以分辨出它是+ ve还是-ve甚至如果只有100mV或更低。一旦信号衰减,单端信号可能会跌至您的阈值以下,即使振幅仍为1V或更大,也无法区分。

通过在并行链路上使用串行链路,我们也可以提高数据速率,因为时滞不再是问题。在32位宽的并行总线中,您需要完全匹配32根电缆的长度和传播特性,以使信号不会彼此异相(偏斜)。在串行链路中,只有一根电缆,因此不会发生偏斜。


TL; DR数据以您计算出的完整比特率(几个Gbps)发送,没有压缩。差分对上的串行数字链路的现代信令技术使这成为可能。


另外,我认为某些HDMI显示器使用2条HDMI 1.2v链接来获取图像,从而将屏幕有效地分成2个。这将产生实质上9.8Gbps的组合带宽。
伊斯梅尔·米格尔

5
@Aresloom 5GHz是几乎所有CPU开始熔化的时刻,这是由于大量晶体管同时切换并产生大量热量。这并不意味着5GHz是所有时钟的最高时钟,而是归结为热量(以及您使用的是哪种材料-硅并不总是最好的)。我能想到的最好的例子是Keysight Infinnium DSAX96204Q,其中四个前端中的每个前端都有一个磷化铟采样器,其采样频率为80GHz!但是该采样器中只有几十个晶体管,耗电几瓦(现代CPU 有数十亿瓦特)
Sam Sam

4
@Aresloom 340MHz是时钟速率,数据速率经过序列化,这样(例如,在TDMS中)每个时钟周期内通过电缆发送10位-因此340MHz时钟将产生3.4Gbps。只是视频IC外围的电缆和(反)串行化(SERDES)硬件以这些串行数据速率运行。在SERDES硬件之后,内部有一条并行总线以较低的时钟速率再次向下运行。SERDES块可以非常快地运行-PCIe每通道8Gbps,因此SERDES块以4GHz运行(将两个时钟沿都用作比特-DDR)。
汤姆·卡彭特

1
8b / 10b改进了错误排除功能,因为它比快速信号中的状态更容易检测到跃迁。这种编码保证了连续的1或0不会太长。
pjc50

1
@curiousdannii这是一个有趣的循环,不是吗。首先,我们从串行(例如UART)开始,它太慢了(比如说最大115kbps)。然后,我们进入了诸如IDE之类的并行总线,该并行总线在16bit时约为66MHz,约1Gbps时达到最高。然后我们回到串行,因为事实证明我们可以非常快地使用差分总线。但是现在串行速度又不够快,因此我们采用一种并行串行-单个串行总线的多个通道实际上可以完全分开地处理,然后用FIFO校正任何通道到通道的偏斜。
汤姆·卡彭特

19

现代计算机速度惊人。人们会愉快地加载全高清30fps视频,而没有意识到每秒涉及数十亿次算术运算。玩家往往对此有所了解。GTX 1060将为您提供4.4 TFLOPS(每秒万亿浮点运算)。

请说明我的计算是否错误以及如何将这些数据从图形卡传输到屏幕?

我的图形卡和屏幕之间的总线有多宽?

另一个答案已经解决了HDMI,DisplayLink等的千兆比特性质。

也许简而言之解释了显示器如何存储像素?移位寄存器?缓存?

显示器本身理论上不存储任何图像数据。

(某些显示器,尤其是电视,存储一两个帧以进行图像处理。这会增加延迟,并且不受到游戏玩家的欢迎。)

计算机的图形子系统将像素存储在普通DRAM中。它通常不会每帧从处理器中重新绘制整个内容,而是将某些功能交给专用子系统和合成器。合成器将允许例如将桌面上的每个窗口存储为一组不同的像素,然后可以通过专用硬件对其进行移动,滚动或缩放。在移动设备上滚动时,这一点变得非常明显-您可以走很短的路,直到用完“屏幕外”预先计算的像素,并且软件必须停止并将更多内容渲染到合成器的缓冲区。

游戏重新绘制每一帧,并且有大量的文献上的场景是如何建立起来的。它被内置在图形卡上的帧缓冲区中,然后在下一帧被绘制到另一个缓冲区时被传输出去。

视频解码通常也提供给专用硬件,尤其是H.264。


11

显示卡和LCD面板之间的链接通过使用TMDS信令的多个高速差分对传输,通常称为“通道”。通常使用四个通道,因此可以说该总线为4位宽。有关更多详细信息,请参见stackhexchange答案

每种LCD面板型号通常都带有多个接口,因此在尝试更换损坏的面板时,请务必小心并注意后缀。大多数现代数字链路(HDMI 1.4)具有10.2 Gbps,或每个通道只有2.5 Gbps。在您的计算中(663 MBps),每条通道总计为1.2 Gbps(假设有4条通道),这并不算多(例如SATA3具有6Gbps)。

LCD面板上的添加。有源矩阵LCD实际上试图将帧图像(像素数据)存储在与“扭曲向列单元”(控制薄膜极化的那个)相关的电容器中。问题在于,模拟存储电容的大小必须在存储时间和像素切换速度之间进行权衡。因此,它不能做大,不能很快失去存储的电位,因此需要定期刷新。每个像素单元都通过晶体管(“有源”元件)与数据线和地址线连接,请参见Tomshardware文章。LCD驱动器控制器以逐行方式对数据和地址线进行多路复用,从而保持显示的图像。图像本身存储在图形控制器内部的帧缓冲区(RAM)中。

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.