QEMU/KVM源码解析与应用
上QQ阅读APP看书,第一时间看更新

第3章 主板与固件模拟

3.1 Intel 440FX主板简介

3.1.1 i440fx与piix3介绍

Intel 440FX(i440fx)是Intel在1996年发布的用来支持Pentium II的主板芯片,距今已有20多年的历史,是一代比较经典的架构。虽然QEMU已经能够支持更先进的q35架构的模拟,但是目前QEMU依然默认使用i440fx架构。本节对物理芯片和实际的QEMU模拟架构进行总体介绍,后面的章节会对QEMU整个芯片进行介绍。

以i440fx为北桥、piix3为南桥的芯片组结构如图3-1所示。

图3-1 Intel 440FX架构

其中,i440fx北桥包括PMC(PCI Bridge and Memory Controller)以及DBX(Data Bus Accelerator),北桥的作用向上连接多个处理器,向下连接内存以及PCI根总线,该PCI总线可以衍生出一个PCI的设备树。

piix3南桥主要用来连接低速设备,包括IDE控制器、USB控制器等,各种慢速设备可以通过控制器连接到系统,如硬盘、USB设备等。南桥还会连接ISA总线,传统的ISA设备可以借此连接到系统。

这里面还有一个需要注意的地方,即中断控制器I/O APIC是直接连接到处理器,设备的中断可以通过I/O APIC路由到处理器。

3.1.2 QEMU模拟主板架构

从QEMU官网可以看到图3-2所示的QEMU主板模拟图,对比图3-1,可以发现基本架构是一致的。

图3-2 QEMU模拟的Intel 440FX架构

在monitor中输入“info qtree”,可以看到QEMU虚拟机的设备结构,下面是经过简化的版本。

设备的起点是main-system-bus系统总线,上面挂了hpet和kvm-ioapic等设备,当然,最重要是的北桥I440FX-pcihost,北桥通过系统总线连接到CPU。

北桥的下面连了一条PCI根总线pci.0,大量的设备都挂在了pci.0总线上面。如PIIX4_PM设备用于电源管理,piix3-ide设备是IDE设备的控制器,下面可以挂IDE总线,IDE总线下面可以挂IDE设备,如硬盘等。PCI根总线当然也可以直接挂PCI设备,如e1000、VGA等。PIIX3是PCI转ISA桥,下面挂了ISA总线,总线下面挂了很多ISA设备。i440FX则表示北桥自身在PCI总线这一侧的抽象。

从上面的结构可以看到,总线和设备是交替的,设备只能挂在总线下面,而总线本身也属于一个设备。

上面介绍的整个PC的系统结构,包括CPU、内存、设备、中断等,后续都会一一介绍。