AHCI 和 SATA 之间有什么关系?为什么没有 AHCI 驱动程序,操作系统就无法操作 SATA 控制器,而 BIOS 却知道如何启动 SATA 硬盘?
SATA 控制器之间有什么区别,因此它们需要特定的 AHCI 驱动程序?
BIOS 内部是否有“驱动程序”来操作和从 SATA(AHCI 模式)HDD 启动?
答案1
首先,BIOS 包含板载 AHCI 控制器的驱动程序。如果控制器不是板载的,而是在 PCI 卡上,则卡将提供一个 PCI Option ROM,其中包含控制器的 BIOS 驱动程序。
如果您的固件支持 UEFI,它(或 Option ROM)还将包含控制器的 UEFI 驱动程序。
您的 PC 可以启动的所有其他组件也是如此(通常是 USB、CD-ROM、有线网络)。其他组件通常根本没有 BIOS/UEFI 驱动程序。
操作系统能使用 BIOS 或 UEFI 驱动程序(例如 DOS 或 Windows 95 都这样做)但大多数现代操作系统都试图避免麻烦并解决 BIOS 驱动程序的限制,而是使用自己的驱动程序格式。
BIOS 驱动程序的常见限制:
- 读取性能通常较差,写入性能甚至更差
- 仅在激活第一个处理器/核心时才受支持
- 仅在 16 位模式下工作(这意味着单任务和 640KB 可寻址内存)
- 仅当 A20 门被清除时才工作(这意味着 1MB 可寻址内存)
这意味着在启动期间,现代操作系统必须在 16 位和 32 位/64 位单任务模式之间反复切换,并反复切换 A20 门,直到它们将操作系统内核和至少磁盘驱动程序读入高内存(640K 在今天通常是不够的);然后它们将切换到多任务模式并继续使用现已加载的内核和磁盘驱动程序加载操作系统的其余部分。
UEFI 的限制没那么糟糕(UEFI 驱动程序在 64 位模式下运行,但仍然需要单任务模式并且只激活一个核心),但仍然很糟糕,所以我不知道有任何操作系统在启动后尝试使用 UEFI 驱动程序 - 这可能也是没有人为纯 UEFI 编写网络浏览器的原因(网络浏览器本质上是多线程的,编写性能良好的单线程网络浏览器很困难)。