为什么这个内存范围位于 PCI 总线上?

为什么这个内存范围位于 PCI 总线上?

为什么 PCI 总线上有以下内存地址范围?

在此处输入图片描述

该图像来自我的上网本,它使用共享视频内存,没有专用视频内存,因此我不确定为什么 VGA 内存范围会在 PCI 总线上。这个范围是否需要转到系统内存,然后 PCI 设备从中读取?

这不是一个问题,而只是好奇为什么会这样。

任何帮助,将不胜感激。

谢谢。

答案1

您的图形适配器实际上根本没有专用内存。如果有,它怎么知道它正在做什么?例如,如果它正在从主内存的特定区域进行操作,它怎么知道那是主内存的哪个区域或它正在使用它做什么?这是 GPU 和 CPU 之间交换控制信息的非常小的映射。它被实现为 GPU 上非常少量的特殊功能内存,通过 PCI 内存映射对 CPU 可见。

如果 GPU 确实有专用内存,则基本采用相同的方法,只是映射通常会更大。不过,一般来说,它不包括所有视频内存——没有必要。视频内存中的小窗口就足够了。

答案2

VGA 内存范围是旧版软件(以及 BIOS 之类的东西)与 GPU 交互的方式。因此,必须将该特定范围映射到 GPU,以便使用该固定范围的软件可以更新显示屏上的内容。这是否在系统 RAM 中实现,然后由 GPU 读出,还是直接映射到 GPU,主要是一个实现细节。但是,如果它被映射到 GPU,那么 GPU 就可以在发生内存访问时处理它们,而不是连续扫描系统内存中的某个区域,因此以这种方式做事具有显着的优势。此外,此范围可能仅在早期启动期间用于显示来自 BIOS 的消息。一旦操作系统运行,它就不会被使用。

相关内容