每个前 Ice Lake 英特尔 GPU 只能驱动三个显示器。我想知道是什么资源短缺导致了这种情况,以及是否有可能在软件中解决这个问题。这里有一些不是解释的事情:
- 连接器数量。使用 nVidia 或 AMD GPU 运行四个 1920 x 1080 @ 60 Hz 显示器的同一个四端口 MST 集线器不会在 Intel 上运行四个。这仅需要主机上的一个 DP 1.2 连接器。
- 像素数/显示带宽。即使笔记本电脑有 4K 显示器,仍然可以添加两个外接显示器。(巧合的是,4K 的像素数量与四个 FHD 显示器完全相同。)
所以为什么?
所有 GPU 都有一个硬件,它本质上是一堆计数器(水平和垂直位置),用于读取帧缓冲区,确定此时的颜色并将其发送以进行进一步处理。
您可以从古老的摩托罗拉 6845到 CGA、Hercules、EGA 追溯其祖先;然后是更早的英特尔 GPU,如 i9xx 系列,等等。
一些制造商 (NVidia) 仍然称其为 CRTC(阴极射线管控制器),因为它们原本就是这样。有人称之为“头”。
英特尔称它们为“管道”。您可以在早期英特尔 GPU 的数据表中找到有关用于控制它们的寄存器的详细信息。
因此,这些数量决定了您可以从帧缓冲区生成多少不同的图像。(还有其他限制,例如时间)。
尽管有可能(至少对于大多数英特尔 GPU 而言)使用单个管道来驱动具有相同图像(“镜像”)的多个显示器。这也称为“Zaphod-Mode”(多头)。
参考:
可以在此处找到英特尔图形硬件规格列表。特别是,i965 程序员手册的第 3 卷在第 2.7 节中解释了显示管道(“管道”)寄存器。在 2.5 节中,描述了负责时序的 PLL(锁相环)寄存器;如果您了解细节,您就会知道为什么会有一些时序约束。
这是我所知道的最早描述这种架构的公共手册。
Linux 内核英特尔图形驱动程序的源代码可以在这里找到。您可以看到与管道相关的函数如何被该管道索引。
因为多个流每个都需要一个管道。不可能使用单个管道来生成多个流,因为流不仅包含像素,而且管道逻辑用于插入额外的标记。
这个问题增加了使用单根电缆传输多个流的额外复杂性。
您可以在VESA 显示端口规范 1.2的第 2.6 节中阅读所有详细信息。图 2-61 显示了需要多路复用的多个流;“数据采集”部分将连接到一个数字端口,而数字端口又将连接到一个管道。
所以不可能只取一个流并将其声明为多个流。
但是对于不同的物理输出,您已经有了这个限制(管道数量决定了不同“视图”的最大数量),无论它们是模拟 VGA、DVI、HDMI、USB-C alt 模式还是其他。
原因比您列出的要简单得多:三个内置显示单元而不是两个。Ice Lake 还受益于 DisplayPort 1.4a提供的高带宽和 支持 5K@120Hz的 VESA显示流压缩 (DSC) 提供的“视觉无损”压缩 。
来自第 10 代智能英特尔® 酷睿™ 处理器系列数据表,卷。1 来自第 92 页的此图:
冰湖建筑
将其与第 8 代和第 9 代英特尔® 酷睿™ 处理器系列数据表进行比较:
前冰湖建筑
可以看到 Ice Lake 有三个显示管道,而上一代有两个编码和两个解码单元。Ice Lake 确实是英特尔的创新架构。
要实现这种能力,需要在单元数量和时钟速度方面增加计算能力。
在 Wikipedia Intel Graphics Technology 中比较以下特性:
Kaby Lake Refresh / Amber Lake / Coffee Lake / Whiskey Lake / Comet Lake
冰湖
另请参阅:
英特尔“Ice Lake”第 11 代 iGPU 将支持 DisplayPort 1.4a 和 5K@120Hz 的显示流压缩。
每个 GPU 都会有一个独特的实现,但我认为您所说的资源称为RAMDAC。看起来大多数“传统”显示适配器在其显示控制器中都有两个 RAMDAC,并且可以支持两个显示器。从那时起,出现了不需要数模转换器的更新。我要举的例子是 AMD Eyefinity。它仅适用于 DisplayPort,因为 DisplayPort 不支持模拟信号(全数字)。这使他们能够摆脱传统的 RAMDAC 并使用一种新的显示控制器,该控制器可以用一个芯片处理六个显示器。
出于兼容性原因,英特尔“显示管道”可能是一种包含传统 RAMDAC 的显示控制器。与其开发自己的“现代”全数字显示控制器,当他们需要更多显示器时,他们通常只包括一个独立的 NVIDIA\AMD GPU 来为他们的系统添加额外的显示器。