我已经今天读关于新的 AMD Ryzen 处理器不受 Windows 7 驱动程序支持等等。
为什么处理器需要驱动程序才能运行,或者它可以决定运行哪个操作系统?
我认为处理器的设计符合指令标准(例如 x86),并且任何按照该指令编译的操作系统都可以在其上运行。
现在处理器怎么会选择运行什么,不运行什么呢?Linux 发行版中是否存在类似情况?比如处理器可以运行 Ubunut,但不能运行 Fedora?我觉得这太疯狂了。
答案1
我认为处理器的设计符合指令标准(例如 x86),并且任何按照该指令编译的操作系统都可以在其上运行。
有一类硬件/功能属于“芯片组”设备的范畴。
在 80 年代,CPU 是主板上许多独立芯片的一个组件,还有许多其他组件(独立芯片),虽然从技术上讲,它们不是 CPU 本身运行所必需的,但它们构成了系统的“基础硬件” - 例如可编程中断控制器、可编程间隔定时器和 DMA 控制器。这些设备构成了系统“物理基础设施”的一部分,使 CPU 能够更轻松地与外界交互 - 如果这些硬件标准化,您就拥有了一个平台。
从技术上讲,这种类型的硬件属于“外围设备”,因为它们不是内置在 CPU 中的,但您无法将其移除。它们几乎总是存在 - 因此它们按照惯例成为“标准 PC 平台”的一部分。它们最终被各个供应商整合到一个芯片中,但仍被称为“芯片组” - 并且其他传统上独立的硬件(如 IDE 控制器、VGA 控制器)也将开始包含在内。
如今,在现代,大多数“芯片组”类型的硬件都是传统 PC 平台硬件(APIC、HPET、PCI-E 总线控制器、内存控制器、USB 和 SATA 控制器等)的高级版本,此外还有电源管理、电源控制、与“管理引擎”类型平台集成等新功能。现在,大多数硬件都内置在 CPU 中;我们可能很快就会达到这样的水平:典型的主板将具有 CPU 插槽、PCI-E 插槽,而没有太多其他东西(现在有这样的实际系统)。由于英特尔和 AMD 都将图形集成到其 CPU 中,因此图形显然现在可能是芯片组的重要组成部分。
但是,就芯片组硬件的可配置/可编程程度而言,它仍然像传统的外部设备一样出现在 CPU 的“外部”,或者通过一种称为“模型特定寄存器”的地址机制出现,尽管物理上该硬件现在是 CPU 的一部分。
因此,仍然需要驱动程序,就像任何外部设备一样。AMD 选择不为 Windows 7 制作/发布驱动程序。
Windows 仍可在其上启动,只是各种芯片组设备可能会在设备管理器中显示为缺失设备。这些设备可能包括热传感器、与图形硬件通信的 PCI 设备等。英特尔芯片组驱动程序通常会覆盖并实现比 BIOS 更好的电源/热管理(我听说),AMD 芯片组驱动程序也可能这样做。
有些评论提到了 3d-Now、MMX、SSE、SSE2 等。这些都是扩展到 x86 指令集,并非所有 CPU 都具有所有扩展。无需驱动程序即可访问它们。想要使用它们的程序需要检查 CPU 是否支持它们,这可以通过指令轻松完成CPUID
。
答案2
除了前面的答案之外,我想补充一点,虽然驱动程序对于操作系统的运行可能不是必需的,但如果操作系统知道 CPU 如何设计才能最佳运行,那肯定是有益的。
例如,在 Ryzen 的情况下,CPU 由不同数量的 ccx 模块构建,最多有 4 个内核/8 个线程和 8 MB L3 缓存,每个内核都有自己专用的 L1 和 L2 缓存。每个 ccx 中内核之间的通信相对较快,而不同 ccx 中内核之间的通信较慢。由此我们可以看出,以最小化 ccx 之间的通信并首先使用每个内核 1 个线程的方式调度进程/线程是最佳选择。这比将线程从一个 ccx 跳转到另一个 ccx 或将两个资源密集型线程放在同一个内核上提供更好的性能。